Quand on m'a dit "y'a un Sonisphere en France cette année et le Big Four y vient et c'est dans le nord" j'ai du pousser un cri de l'ordre de "WHOUPUTAINONYVAONYVAONYVA" et, avec trois vikings de mes amis, j'y vais.
Nous étions quelques centaines à ne pas avoir été mis au courant assez tôt de la nécessité de réserver le camping, du coup on se retrouve devant le parc Walygator, à quelques kilomètres du site du festival, dans une plaine dure et sans la moindre ombre mais dotée quand même de douches et toilettes. Des navettes sont organisées pour nous mener au site et nous en ramener ; si l'attente est longue à l'aller, au retour c'est peine perdue et presque tous se tapent le trajet à pied dans la nuit noire Lorraine.
Le site est étonnant, c'est... un parking ? En tout cas c'est en trois niveaux et couvert de béton, de bitume, et de gravier bitumé qui laisse des chouettes traces noires sur le pantalon à force de s'y asseoir. Le niveau supérieur accueille les deux scènes du festival, l'une face à l'autre, ça surprend mais comme les concerts se font en alternance c'est cohérent. Au niveau intermédiaire une grande surface de restauration est couverte de bancs entourés par des stands à bouffe et un bar à Guinness et Grimbergen qui est le bienvenu (sérieusement amis Français, faut faire quelque chose parce que votre Kronenbourg là ça ne peut pas durer). Au niveau inférieur se trouve l'entrée du site, une petite scène pour les concerts off, un shop, et une autre série de bancs mais couverts donc ombragé. Profitez-en, c'est la seule zone d'ombre de tout le site ; entre le soleil de plomb et le sol en goudron, faites le calcul.
Les concerts s'enchaînent bien, un peu trop bien même, on n'a pas le temps de bien se placer d'un concert à un autre, surtout quand c'est un set court. L'avantage c'est que comme les deux scènes sont proches l'une de l'autre on a quand même un peu de vue et du son dès le départ.
Le son. Parlons-en. Je ne sais pas qui est ingénieur son pour ce festival, mais il devrait sérieusement songer à changer de métier. Les façades sont peu fournies mais distribuent des basses à ne plus savoir qu'en faire, ce qui fait que dès que ça devient enthousiaste sur la double pédale ou sur la basse (autant dire "tout le temps sauf pendant les solos") on se fait violer les oreilles par une grosse pâte de laquelle les guitares ont bien du mal à se dégager. Moi qui porte des earplugs qui atténuent moins les basses que le reste, vous imaginez ma joie de découvrir cette particularité de l'acoustique locale.
Malgré cela les groupes nous offrent des superbes shows. Une mention toute particulière à Bukowski qui est pour moi la belle découverte du festival, surprise pour Bring Me The Horizon dont les fans ont du adorer la prestation puisque je suisscotché par leur présence de scène sans aimer leur musique. Ma grosse claque du samedi est sans hésiter Gojira, les basses abusives collent quand même bien à leur musique, ou alors c'est qu'ils ont un putain de talent, je ne sais pas trop. Slipknot dans une formation amputée et en couleurs des débuts nous sert un set qui tire vers ses origines et doit avoir un effet "madeleine de Proust" sur bien d'autres que moi, puissant mais teinté d'émotion.
Les Big Four, fidèles à leur réputation, savent faire honneur à leur rang : Slayer sert une belle déferlante de puissance pure sans la moindre pause, la foule vibre au groove d'Anthrax, Megadeth est d'une perfection virtuose presque froide mais impressionnante de précision ; quant à Metallica... METALLICA quoi, deux heures de thrash bien trempé dans les gencives, old-school puissant et rapide devant une foule nombreuse qui apprécie à sa juste valeur l'écran géant (tout le fond de scène en fait) et la juste dose de pyrotechnie.
Des bons souvenirs, des pieds douloureux, un fameux coup de soleil, mais l'envie certaine qu'il y ait un Sonisphere France en 2012, voilà ce que j'en ramène. Il faut souffrir pour avoir des beaux concerts, semble-t-il.
(cet article a été rédigé pour Le Plus, blog du Nouvel Observateur ; ceci est la version que je leur ai soumis, sans édition de leur part)
...la suite par ici...
11/07/11
PHP : for() mieux que foreach(), un mythe ?
Dans mon boulot je dois fournir pas mal de PHP, qui sera parfois mis à mal et donc doit être un peu performant. Un jour au détour d'un backlog IRC je vois passer un argument du type "il faut remplacer les foreach() par des for() sinon ça consomme trop de mémoire".
Ah bon ?
Deux coups de googlage et voilà d'autres commentaires du même ordre, mais aucun n'est soutenu par des mesures, du coup faut que j'essaie.
Pour tester, j'ai le petit script suivant :
C'est d'une simplicité criminelle : d'abord on se remplit un array bidimensionnel avec des valeurs aléatoires, ensuite on va boucler dessus et bêtement copier chaque sous-tableau dans une variable qui ne sert à rien. Avant de boucler on obtient l'usage mémoire, pour mieux distinguer ce que génère le parcours.
Seulement voilà, moi on me parlait de "deux fois moins de mémoire" et j'obtiens ceci à l'exécution (valeurs en octets) :
Quelqu'un a pu observer un grand écart de consommation mémoire entre un for() et un foreach() sur les mêmes données ?
...la suite par ici...
Ah bon ?
Deux coups de googlage et voilà d'autres commentaires du même ordre, mais aucun n'est soutenu par des mesures, du coup faut que j'essaie.
Pour tester, j'ai le petit script suivant :
<?php
$largearray = array();
for ($i = 0, $max = 1000; $i < $max; $i++) {
for ($j = 0, $max = 100; $j < $max; $j++) {
$largearray[$i][$j] = rand(0, 100000);
}
}
$base = memory_get_usage();
foreach ($largearray as $value) {
$foo = $value; // oui, ca ne sert a rien
}
print "foreach : ".(memory_get_peak_usage() - $base)."\n";
$base = memory_get_usage();
for ($i = 0, $max = count($largearray); $i < $max; $i++) {
$foo = $largearray[$i];
}
print "for : ".(memory_get_peak_usage() - $base)."\n";
?>
C'est d'une simplicité criminelle : d'abord on se remplit un array bidimensionnel avec des valeurs aléatoires, ensuite on va boucler dessus et bêtement copier chaque sous-tableau dans une variable qui ne sert à rien. Avant de boucler on obtient l'usage mémoire, pour mieux distinguer ce que génère le parcours.
Seulement voilà, moi on me parlait de "deux fois moins de mémoire" et j'obtiens ceci à l'exécution (valeurs en octets) :
foreach : 1540
for : 1496
Quelqu'un a pu observer un grand écart de consommation mémoire entre un for() et un foreach() sur les mêmes données ?
...la suite par ici...
03/07/11
Du pouvoir de la ponctuation
Parce que j'aime enfoncer le clou :
(The Call of Cthulhu, Howard Philips Lovercraft)
(L'appel de Cthulhu, traduction française de Jacques Papy et Simone Lamblin)
Selon la transcription, il y a une virgule ou pas avant "dead Cthulhu", mais dans les deux cas l'outrage est le même, "dead" se rapporte évidemment à "Cthulhu", pas à "R'lyeh".
...la suite par ici...
In his house at R'lyeh, dead Cthulhu waits dreaming.
(The Call of Cthulhu, Howard Philips Lovercraft)
Dans sa demeure de R'lyeh la morte, Cthulhu attend en rêvant.
(L'appel de Cthulhu, traduction française de Jacques Papy et Simone Lamblin)
Selon la transcription, il y a une virgule ou pas avant "dead Cthulhu", mais dans les deux cas l'outrage est le même, "dead" se rapporte évidemment à "Cthulhu", pas à "R'lyeh".
...la suite par ici...
12/05/11
De la déchéance de l'enseignement
Avant-hier, ce cher Mallox twittait une question piège :
C'est fourbe, hein ?
Ce qui est un peu amer, c'est les réponses qu'il a reçu. Pour une raison qui m'échappe, des francophones qui admettent le sens de lecture de gauche à droite l'oublient quand il s'agit d'évaluer des opérations de même niveau. Chouette.
Si vous voulez vous faire encore plus mal, il y a un fil Yahoo!Answers sur le sujet, où certaines justifications deviennent hilarantes tellement elles partent dans le "ça dépend" teinté de mysticisme. Sérieusement, WTF ?
Ça remonte à si loin que ça "PEMDAS" ? C'est si incompréhensible ? Loin de moi l'envie de cracher sur les joyeux hippies qui voudraient que nos têtes blondes ne travaillent plus, n'apprennent plus rien par coeur, ne soient jamais évalués... enfin si, en fait j'ai envie de leur cracher dessus avec force et véhémence. Tu vois ce qui arrive, quand on cesse de driller sur des choses élémentaires ? Hein ? HEIN ? HEIN LARRY, TU VOIS CE QUI ARRIVE ? Z'êtes mignons tout plein, mais là on se retrouve cernés de bras cassés qui doivent sortir une calculatrice pour diviser par 10, elle est belle la civilisation.
Putain de branquignolles.
...la suite par ici...
6÷2(1+2)= ?
C'est fourbe, hein ?
Ce qui est un peu amer, c'est les réponses qu'il a reçu. Pour une raison qui m'échappe, des francophones qui admettent le sens de lecture de gauche à droite l'oublient quand il s'agit d'évaluer des opérations de même niveau. Chouette.
Si vous voulez vous faire encore plus mal, il y a un fil Yahoo!Answers sur le sujet, où certaines justifications deviennent hilarantes tellement elles partent dans le "ça dépend" teinté de mysticisme. Sérieusement, WTF ?
Ça remonte à si loin que ça "PEMDAS" ? C'est si incompréhensible ? Loin de moi l'envie de cracher sur les joyeux hippies qui voudraient que nos têtes blondes ne travaillent plus, n'apprennent plus rien par coeur, ne soient jamais évalués... enfin si, en fait j'ai envie de leur cracher dessus avec force et véhémence. Tu vois ce qui arrive, quand on cesse de driller sur des choses élémentaires ? Hein ? HEIN ? HEIN LARRY, TU VOIS CE QUI ARRIVE ? Z'êtes mignons tout plein, mais là on se retrouve cernés de bras cassés qui doivent sortir une calculatrice pour diviser par 10, elle est belle la civilisation.
Putain de branquignolles.
...la suite par ici...
07/05/11
Afficher les albums par ordre chronologique sur un iPod
J'utilise iTunes pour la gestion de ma librairie musicale, et Ecoute pour la lecture. Ecoute a une interface légère, disponible de partout, et a la chouette possibilité d'afficher les albums d'un même artiste par ordre chronologique. Par contre, sur mon iPod, les albums d'un même artiste sont affichés dans l'ordre alphabétique, ce qui franchement n'a aucun sens.
Aucune option de présentation sur l'iPod ne permet de changer cela, par contre en sachant que l'iPod trie ses morceaux comme iTunes, je peux utiliser les champs "sort machin" pour forcer un critère de tri qui soit différent du champs affiché. Si dans le champs "sort album" je mets l'année de sortie suivie du nom de l'album, j'arrive à un tri d'abord par année de sortie, ensuite par ordre alphabétique au sein d'une même année. Exactement ce qu'il me faut.
Par contre c'est fastidieux, donc j'ai écrit un petit AppleScript, à placer dans ~/Library/iTunes/Scripts pour pouvoir l'appeler depuis le menu Script d'iTunes quand on a sélectionné les morceaux d'un même album :
Hope this helps :-)
...la suite par ici...
Aucune option de présentation sur l'iPod ne permet de changer cela, par contre en sachant que l'iPod trie ses morceaux comme iTunes, je peux utiliser les champs "sort machin" pour forcer un critère de tri qui soit différent du champs affiché. Si dans le champs "sort album" je mets l'année de sortie suivie du nom de l'album, j'arrive à un tri d'abord par année de sortie, ensuite par ordre alphabétique au sein d'une même année. Exactement ce qu'il me faut.
Par contre c'est fastidieux, donc j'ai écrit un petit AppleScript, à placer dans ~/Library/iTunes/Scripts pour pouvoir l'appeler depuis le menu Script d'iTunes quand on a sélectionné les morceaux d'un même album :
-- Fix albums display order
-- Changes the "sort album" field, to ensure that albums get displayed in chronological order on iPods.
-- CC-BY-NC 2011, Jean-Karim Bockstael,
tell application "iTunes"
-- input checking
if selection is {} then
display dialog "You must select at least a track"
return
else
set selected_tracks to selection
repeat with a_track in selected_tracks
if a_track's album = "" then
display dialog "All tracks must have their Album field filled"
return
end if
if a_track's year = "" then
display dialog "All tracks must have their Year field filled"
return
end if
end repeat
if length of selected_tracks > 1 then
set cur_album to album of item 1 of selected_tracks
set cur_year to year of item 1 of selected_tracks
repeat with a_track in selected_tracks
if a_track's album is not equal to cur_album then
display dialog "All tracks must share the same album name"
return
end if
if a_track's year is not equal to cur_year then
display dialog "All tracks must share the same release year"
return
end if
set cur_album to a_track's album
set cur_year to a_track's year
end repeat
end if
-- actual work
repeat with a_track in selected_tracks
set a_track's sort album to (a_track's year as string) & " " & (a_track's album as string)
end repeat
end if
end tell
Hope this helps :-)
...la suite par ici...
17/04/11
PHP : Déterminer la langue d'un visiteur
C'est dimanche, il fait beau, et je me dis que je publierais bien un truc que j'avais codé pour le boulot vendredi : la détermination, parmi des possibilités de langue, de la langue la plus appropriée au visiteur. Ça casse rien, mais c'est un problème courant donc une solution peut faire gagner du temps à pas mal de monde ;-)
Niveau implémentation, on se base sur le header HTTP
...la suite par ici...
Niveau implémentation, on se base sur le header HTTP
Accept-Language et une liste de langues possibles fournies par l'appelant :
<?php
// get_prefered_language : renvoie la langue que le visiteur prefere
// en fonction de ce qu'il renseigne via sa requete HTTP
// et de ce qu'on indique comme disponible, ou null si rien ne va
// $available_langs est un array, par exemple array('it','fr', 'en')
function get_preferred_language($available_langs) {
// Parse du header HTTP Accept-Language
$langs = array();
// Cet en-tete HTTP est de la forme en-US,en;q=0.8,fr;q=0.6
foreach (explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']) as $httplang) {
$rawlang = explode(';q=', $httplang);
if (strpos($rawlang[0], '-') !== FALSE) {
// On ne garde que la partie "langue" de la locale, si jamais
$rawlang[0] = substr($rawlang[0], 0, strpos($rawlang[0], '-'));
}
if (count($rawlang) == 1) {
$rawlang[1] = 1.0; // Si aucun poids n'est precise, c'est que le poids vaut 1
}
$langs[$rawlang[1]] = $rawlang[0]; // Z'avez qu'a mettre des poids distincts :p
}
krsort($langs, SORT_NUMERIC);
// Choix de la meilleure langue disponible
foreach($langs as $weight => $code) {
if (in_array($code, $available_langs)) {
return $code;
}
}
// Ah ben zut alors, pas de bol
return null;
}
?>
...la suite par ici...
14/04/11
"Comment devenir un hacker" en version 1.03
Il y a de cela déjà "un certain temps", j'avais traduit le "How to become a Hacker" d'Eric Raymond en français, déçu par la piètre qualité ou l'obsolescence des traductions existantes (en passant ça m'a valu une menace de poursuite judiciaire, mais ça m'a permis de découvrir Jean-Marc Manach donc j'y gagne au change). L'original a évolué, la traduction évolue aussi.
En fait j'avais loupé deux versions de l'original, la 1.42 et la 1.43, donc il y a eu un peu plus de boulot que simplement retirer la mention selon laquelle Perl est plus populaire que Python. Voilà ce qui arrive quand on n'est pas assez attentif à ce qui est publié. Enfin bon, c'est en ligne, et ça constitue donc la version française du hacker-howto la plus à jour qui soit, même si ESR doit avoir quelque chose contre le français, ça fait trois ans qu'il ignore mes mails et refuse de mentionner l'existence de la moindre traductions française dans l'original. Ah, les égos enflés...
Voilà, "Comment devenir un Hacker" est plus à jour que jamais. Enjoy :)
...la suite par ici...
En fait j'avais loupé deux versions de l'original, la 1.42 et la 1.43, donc il y a eu un peu plus de boulot que simplement retirer la mention selon laquelle Perl est plus populaire que Python. Voilà ce qui arrive quand on n'est pas assez attentif à ce qui est publié. Enfin bon, c'est en ligne, et ça constitue donc la version française du hacker-howto la plus à jour qui soit, même si ESR doit avoir quelque chose contre le français, ça fait trois ans qu'il ignore mes mails et refuse de mentionner l'existence de la moindre traductions française dans l'original. Ah, les égos enflés...
Voilà, "Comment devenir un Hacker" est plus à jour que jamais. Enjoy :)
...la suite par ici...
17/03/11
Pentes glissantes
Chez nous aut' en Belgique, on aime bien créer des organismes publics, ça nous évite de devoir effectivement agir. Parmi ces belles inventions se trouve le Centre pour l'égalité des chances et la lutte contre le racisme dont le titre explicite ne cache pas la mission, qui est de lutter contre les discriminations en général et le racisme en particulier. En fait il ne fait qu'appliquer un contexte légal qui interdit les propos racistes, antisémites, xénophobes. Nos amis Français ont le même genre de loi, la loi Gayssot par exemple.
Je vous épargne le texte de loi, mais en gros ça dit qu'on ne peut pas parler ou agir en raciste, antisémite, xénophobe, et même négationniste. La volonté derrrière étant clairement d'éviter des dérives extrêmes en empêchant les extrémistes d'haranguer la foule. C'est sûr que clamer "si on avait laisser Hitler finir le travail, on n'en serait pas là" ce n'est pas exactement le genre de discours qui donne envie de se métamorphoser en bisounours mignon.
Du coup, les propos nazis, ça incite à la haine, c'est mal, on ne peut pas. Tout le monde approuve, ça applaudit dans les chaumières. Encore une belle victoire face à la haine humaine.
Dans la lignée évidemment, tous les propos racistes sont haineux aussi. J'ai jamais eu envie de faire des bisous en entendant "je suis au chômage mais c'est à cause de tous ces étrangers hein ! Ces marloufs qui débarquent ici nous piquer nos jobs et qui engrossent leurs Fatmas pour choper des allocs en masse avec cette marmaille qu'ils ne sauront pas tenir après et qui vont agresse des gens dans le métro au point qu'on doive envisager d'y envoyer l'armée...". OK, le racisme c'est la haine, du coup c'est interdit, normal.
Bon tant qu'à faire, les homophobes on ferait pas pareil ? "Ouais moi ces grandes zazas qui se roulent des patins devant nos enfants avant d'aller se faire emmancher par de parfaits inconnus dans des backrooms sordides ça me dégoûte ! Les enverrai bien sucer des pissenlits par la racine, au lieu de pomper des joncs !" Houlà c'est de l'incitation au meurtre ça ! Interdisons les propos homophobe, ils incitent à la haine !
D'ailleurs, entre racisme et homophobie, on arrive doucement à l'archétype du fan de foot non ? Gueuler "enculé" à tout bout de champs par exemple, c'est un peu de l'homophobie ça ? D'ailleurs remarquez qu'on assiste fréquemment à des altercations violentes entre fanatiques d'une couleur et fanatiques de l'autre. Le foot en soi c'est bien, les fans de foot haineux c'est mal. On peut laisser le foot, mais il faut interdire les stades et les rassemblements dans les bistrots pendant les matches. Pas de direct à la TV, juste les résultats dans la presse le lendemain.
Mouais, moi je remarque qu'ils sont agressifs et violents les soirs de matches mais ces soirs-là ils se sont aussi rincés le gosier de multiples litres de mauvaise bière. Et constatez les bagarres dans les cafés une fois les abrutis suffisamment avinés... mais c'est bien sûr ! Le problème c'est l'alcool ! Cet alcool infâme qui change l'homme en bête ! INTERDISONS L'ALCOOL !
J'entends d'ici les esprits chagrins dire que la prohibition de l'alcool avait réussi aux USA à transformer de petits groupes de voyous anecdotiques en puissantes mafias dont les ramifications tiraient les ficelles de l'économie et de la politique, et ce en quelques années à peine. L'efficacité à l'américaine, en quelque sorte. Nous le savons, et nous savons en tirer les leçons, nous. Parce que bon hein, faut dire ce qui est, on est pas des amerloques non plus, on sait tirer des leçons du passé et ne pas refaire les mêmes erreurs, nous. Nous ne sommes pas comme ces gens-là.
Tiens, c'était pas un tout petit peu du racisme ça, d'ailleurs ?
(Retrouvez cette chronique et d'autres stupidités dans On a toujours raison, en direct le jeudi soir et en podcast tout le temps.)
...la suite par ici...
Je vous épargne le texte de loi, mais en gros ça dit qu'on ne peut pas parler ou agir en raciste, antisémite, xénophobe, et même négationniste. La volonté derrrière étant clairement d'éviter des dérives extrêmes en empêchant les extrémistes d'haranguer la foule. C'est sûr que clamer "si on avait laisser Hitler finir le travail, on n'en serait pas là" ce n'est pas exactement le genre de discours qui donne envie de se métamorphoser en bisounours mignon.
Du coup, les propos nazis, ça incite à la haine, c'est mal, on ne peut pas. Tout le monde approuve, ça applaudit dans les chaumières. Encore une belle victoire face à la haine humaine.
Dans la lignée évidemment, tous les propos racistes sont haineux aussi. J'ai jamais eu envie de faire des bisous en entendant "je suis au chômage mais c'est à cause de tous ces étrangers hein ! Ces marloufs qui débarquent ici nous piquer nos jobs et qui engrossent leurs Fatmas pour choper des allocs en masse avec cette marmaille qu'ils ne sauront pas tenir après et qui vont agresse des gens dans le métro au point qu'on doive envisager d'y envoyer l'armée...". OK, le racisme c'est la haine, du coup c'est interdit, normal.
Bon tant qu'à faire, les homophobes on ferait pas pareil ? "Ouais moi ces grandes zazas qui se roulent des patins devant nos enfants avant d'aller se faire emmancher par de parfaits inconnus dans des backrooms sordides ça me dégoûte ! Les enverrai bien sucer des pissenlits par la racine, au lieu de pomper des joncs !" Houlà c'est de l'incitation au meurtre ça ! Interdisons les propos homophobe, ils incitent à la haine !
D'ailleurs, entre racisme et homophobie, on arrive doucement à l'archétype du fan de foot non ? Gueuler "enculé" à tout bout de champs par exemple, c'est un peu de l'homophobie ça ? D'ailleurs remarquez qu'on assiste fréquemment à des altercations violentes entre fanatiques d'une couleur et fanatiques de l'autre. Le foot en soi c'est bien, les fans de foot haineux c'est mal. On peut laisser le foot, mais il faut interdire les stades et les rassemblements dans les bistrots pendant les matches. Pas de direct à la TV, juste les résultats dans la presse le lendemain.
Mouais, moi je remarque qu'ils sont agressifs et violents les soirs de matches mais ces soirs-là ils se sont aussi rincés le gosier de multiples litres de mauvaise bière. Et constatez les bagarres dans les cafés une fois les abrutis suffisamment avinés... mais c'est bien sûr ! Le problème c'est l'alcool ! Cet alcool infâme qui change l'homme en bête ! INTERDISONS L'ALCOOL !
J'entends d'ici les esprits chagrins dire que la prohibition de l'alcool avait réussi aux USA à transformer de petits groupes de voyous anecdotiques en puissantes mafias dont les ramifications tiraient les ficelles de l'économie et de la politique, et ce en quelques années à peine. L'efficacité à l'américaine, en quelque sorte. Nous le savons, et nous savons en tirer les leçons, nous. Parce que bon hein, faut dire ce qui est, on est pas des amerloques non plus, on sait tirer des leçons du passé et ne pas refaire les mêmes erreurs, nous. Nous ne sommes pas comme ces gens-là.
Tiens, c'était pas un tout petit peu du racisme ça, d'ailleurs ?
(Retrouvez cette chronique et d'autres stupidités dans On a toujours raison, en direct le jeudi soir et en podcast tout le temps.)
...la suite par ici...
05/12/10
PHP : dot2array, une couche d'abstraction pour utiliser facilement des tableaux à plusieurs dimensions.
Des fois on a du temps à tuer, du coup on entame un projet de programmation mais en avançant dedans on se retrouve à avoir besoin de code utilitaire réutilisable... et une fois que c'est fait on se dit qu'en fait c'est pratique et ça servirait bien à d'autres, donc que ce serait bien de le publier quelque part. Ici, je suis dans un train de retour de Strasbourg, et j'avais besoin d'un moyen simple et lisible de parcourir des tableaux multi-dimentionnels.
Sans plus attendre, voici le résultat de cette petite session improvisée, un exemple d'utilisation concrete de ces fonctions (en fait, leur raison d'être à la base) suit plus bas (et est disponible ici) :
Les attentifs auront remarqué que le setter vérifie si un élement existe et le crée si besoin est. Maintenant, le pourquoi ! J'ai un fichier de configuration qui est de cette forme-là :
Doté de ceci, j'aimerais pouvoir faire quelque chose de ce goût-là :
En utilisant dot2array c'est possible, moyennant une fonction wrapper (allez, deux, c'est le même prix) :
Elle n'est pas belle, la vie ? Allez hop, c'est cadeau (CC-BY, faut juste reconnaître que je suis un mec génial) donc profitez-en bien ;-) Téléchargement ici.
...la suite par ici...
Sans plus attendre, voici le résultat de cette petite session improvisée, un exemple d'utilisation concrete de ces fonctions (en fait, leur raison d'être à la base) suit plus bas (et est disponible ici) :
<?php
// dot2array
// Abstraction layer allowing to get and set values from a multidimentional array
// by using a dot notation. Can be quite useful when working with configuration arrays.
// CC-BY 2010, Jean-Karim Bockstael <jkb@jkbockstael.be>
// getValue : getter accessor
// Example : getValue($items, 'foo.bar.baz') = $items['foo']['bar']['baz']
function getValue($items, $itempath) {
if (empty($items)) {
throw new Exception("Could not get value: Empty items argument.");
}
if (empty($itempath)) {
throw new Exception("Could not get value: Empty itempath argument.");
}
$names = explode('.',$itempath);
$names = array_reverse($names);
$item = &$items;
while (count($names) > 0) {
$name = array_pop($names);
if (!isset($item[$name])) {
throw new Exception("Could not get value: no value at this path.");
}
$item = &$item[$name];
}
return $item;
}
// setValue: setter accessor
// Example : setValue($items, 'foo.bar.baz', 42) => $items['foo']['bar']['baz'] = 42
function setValue(&$items, $itempath, $value) {
if (empty($items)) {
throw new Exception("Could not set value: Empty items argument.");
}
if (empty($itempath)) {
throw new Exception("Could not set value: Empty itempath argument.");
}
if (empty($value)) {
throw new Exception("Could not set value: Empty value argument.");
}
$names = explode('.',$itempath);
$names = array_reverse($names);
$item = &$items;
while (count($names) > 0) {
$name = array_pop($names);
if (!isset($item[$name])) {
$item[$name] = array();
}
$item = &$item[$name];
}
$item = $value;
}
?>
Les attentifs auront remarqué que le setter vérifie si un élement existe et le crée si besoin est. Maintenant, le pourquoi ! J'ai un fichier de configuration qui est de cette forme-là :
<?php
$configuration['database']['host'] = 'localhost';
$configuration['database']['name'] = 'DB-exemple';
$configuration['database']['user'] = 'user-exemple';
$configuration['database']['password'] = '5up3r53cr37';
$configuration['platform']['language'] = 'french';
$configuration['platform']['admin']['name'] = 'Jean-Karim Bockstael';
$configuration['platform']['admin']['email'] = 'jkb@jkbockstael.be';
// ...
?>
Doté de ceci, j'aimerais pouvoir faire quelque chose de ce goût-là :
<?php
// ...
$link = mysql_connect(getConfig('database.host'), getConfig('database.user'), getConfig('database.password'));
// ...
?>
En utilisant dot2array c'est possible, moyennant une fonction wrapper (allez, deux, c'est le même prix) :
<?php
require("dot2array.php");
require("configuration.php");
// Getter
function getConfig($itempath) {
global $configuration;
return getValue($configuration, $itempath);
}
// Setter
function setConfig($itempath, $value) {
global $configuration;
setValue($configuration, $itempath, $value);
}
?>
Elle n'est pas belle, la vie ? Allez hop, c'est cadeau (CC-BY, faut juste reconnaître que je suis un mec génial) donc profitez-en bien ;-) Téléchargement ici.
...la suite par ici...
31/07/10
The Drums - The Drums
Il y a peu j'ai vu passer un twitt de Yann Lebout (garçon intéressant, il parle peu mais parle bien, tout le contraire de moi) qui s'interrogeait rhétoriquement sur la similarité entre The Drums et The Cure. Etant moi-même assez friand de l'oeuvre des décoiffés en noir, j'ai tiqué et il me fallait écouter ce premier album des Drums dont beaucoup disent qu'il est bien parti pour être disque de l'année. Je ne sais pas pour vous, mais pour moi "disque de l'année" c'est péjoratif. Ce n'est pas dans mes habitudes de parler de ce qui ne me plait pas, mais je vais faire une exception, tiens...
The Drums est un groupe fondé en 2008 des cendres de Elkland (un truc électronique, rien à voir, splitté en 2006) par quatre garçons dans le vent, américains mais gentils. En 2009 ils sont shortlistés pour BBC Sound Acts of 2010, classés 5èmes dans cette même liste en janvier 2010, matraquent les esprits à grands renforts de MTV (être signé chez Island ça aide), du coup se hissent dans les votes de lecteurs et font une entrée dans les charts pas trop mauvaise (16èmes chez les britons). Ouais. C'est un groupe qui a deux ans mais fait de la première partie de Kings of Leon, c'est-y pas beau l'entertainment moderne ? Et pendant ce temps plein de talentueux rament comme des dingues...
C'est pas tout ça, que cache ce disque qui est une "révélation" pour tant ? D'emblée on est accueilli par des relents d'élctronique cheap qui laissent vite la place à du bon gros rythme bien pop, le genre conçu pour bien péter sur toutes les radios. D'ailleurs un rapide coup d'oeil révèle qu'ils sont pour la plupart très proches du fameux 3 minutes 40 de la radio, comme c'est curieux. C'est pop, en 4/4, y'a du reverb, on fait péter le couplet-refrain sans risquer autre chose, et à première vue la production n'a pas été faite par des sourds. Deuxième morceau, même recette...
Mais dites-moi... la guitare me rappelle les deux tiers du répertoire des Cure, c'est normal ? A vrai dire la batterie et la basse pareil. Le chant beaucoup moins, c'est de la voix de puceau qui se donne un genre hipster, ça agace, mais le reste c'est pas possible quoi c'est du voulu on me vend un cover-band camouflé en révélation ! Le groupe cite comme influences The Smith et Joy Division (entre autres), faut croire que c'est normal... enfin ceci dit, quand au fil des morceaux les références se font aussi flagrantes, on ne doit plus dire "influences" mais "fournisseurs", non ? Ou alors c'est moi qui râle.
Vient ensuite l'horriblement agaçant "Let's go surfing" qui a le mérite de durer moins de 3 minutes, et la même recette est réchauffée, resservie ad nauseum toujours dans un format très pratique pour les radios qui n'aiment pas prendre de risque. Comme c'est commode. Comme c'est lassant.
Ah ben quoi, c'est déjà fini ? C'était pas si long que ça finalement. Ah. 43 minutes. Tout s'explique...
En bref, pas de quoi fouetter un chat, ceci est un n-ième disque de pop dont la production est techniquement impeccable ; quelques tubes efficaces à court terme qui exploitent comme ils peuvent les sons, rythmes, et mélodies d'une période brittanique et d'une période surf dont les plus jeunes ignorent jusqu'à l'existence. Sûrement sympathique sur scène. Ils vont en vendre des disques, ça c'est sûr. Mais, demain, qui se souviendra ? Sur ces bonnes paroles, je vous laisse en compagnie de l'influence flagrante...
(Cet article a été publié sur La Fougère, blog musical sans restriction.)
...la suite par ici...
The Drums est un groupe fondé en 2008 des cendres de Elkland (un truc électronique, rien à voir, splitté en 2006) par quatre garçons dans le vent, américains mais gentils. En 2009 ils sont shortlistés pour BBC Sound Acts of 2010, classés 5èmes dans cette même liste en janvier 2010, matraquent les esprits à grands renforts de MTV (être signé chez Island ça aide), du coup se hissent dans les votes de lecteurs et font une entrée dans les charts pas trop mauvaise (16èmes chez les britons). Ouais. C'est un groupe qui a deux ans mais fait de la première partie de Kings of Leon, c'est-y pas beau l'entertainment moderne ? Et pendant ce temps plein de talentueux rament comme des dingues...
C'est pas tout ça, que cache ce disque qui est une "révélation" pour tant ? D'emblée on est accueilli par des relents d'élctronique cheap qui laissent vite la place à du bon gros rythme bien pop, le genre conçu pour bien péter sur toutes les radios. D'ailleurs un rapide coup d'oeil révèle qu'ils sont pour la plupart très proches du fameux 3 minutes 40 de la radio, comme c'est curieux. C'est pop, en 4/4, y'a du reverb, on fait péter le couplet-refrain sans risquer autre chose, et à première vue la production n'a pas été faite par des sourds. Deuxième morceau, même recette...
Mais dites-moi... la guitare me rappelle les deux tiers du répertoire des Cure, c'est normal ? A vrai dire la batterie et la basse pareil. Le chant beaucoup moins, c'est de la voix de puceau qui se donne un genre hipster, ça agace, mais le reste c'est pas possible quoi c'est du voulu on me vend un cover-band camouflé en révélation ! Le groupe cite comme influences The Smith et Joy Division (entre autres), faut croire que c'est normal... enfin ceci dit, quand au fil des morceaux les références se font aussi flagrantes, on ne doit plus dire "influences" mais "fournisseurs", non ? Ou alors c'est moi qui râle.
Vient ensuite l'horriblement agaçant "Let's go surfing" qui a le mérite de durer moins de 3 minutes, et la même recette est réchauffée, resservie ad nauseum toujours dans un format très pratique pour les radios qui n'aiment pas prendre de risque. Comme c'est commode. Comme c'est lassant.
Ah ben quoi, c'est déjà fini ? C'était pas si long que ça finalement. Ah. 43 minutes. Tout s'explique...
En bref, pas de quoi fouetter un chat, ceci est un n-ième disque de pop dont la production est techniquement impeccable ; quelques tubes efficaces à court terme qui exploitent comme ils peuvent les sons, rythmes, et mélodies d'une période brittanique et d'une période surf dont les plus jeunes ignorent jusqu'à l'existence. Sûrement sympathique sur scène. Ils vont en vendre des disques, ça c'est sûr. Mais, demain, qui se souviendra ? Sur ces bonnes paroles, je vous laisse en compagnie de l'influence flagrante...
(Cet article a été publié sur La Fougère, blog musical sans restriction.)
...la suite par ici...
Inscription à :
Messages (Atom)