Aller au contenu | Aller au menu | Aller à la recherche

MarcArea Weblog

30 ans

samedi 20 décembre 2008

Catégorie Rien à voir

Hey, c'est mes 30 ans aujourd'hui :)

Compléments pour iTunes, le mp3 à son meilleur

vendredi 12 décembre 2008

Catégorie Macintosh

Pas la peine de mentir, on t'as reconnu sale petit pirate. Tu vas bientôt recevoir dans ta BAL une lettre de menace en provenance des hautes sphères car tu download comme un porc et ça, oh oui, c'est très mal. Tu devrais être fairplay avec ceux qui font leur thune sur un marché décédé.

En attendant ta lettre, tu es peut-être un music snob ? Un perfectionniste doublé d'un maniaque du classement ? Peut-être aussi que tu n'es pas convaincu par les alternatives à iTunes même si ça n'a pas toujours été l'amour fou ? Dans tous les cas, passe ton chemin si pour toi Amarok ça r0x ou que tu penses que c'est Jésus qui a inventé le Ogg Vorbis, sale libriste.

Ok, pour les autres voici quelques perles pour Mac qui, une fois maîtrisées, viendront faciliter votre vie en réduisant considérablement le temps brûlé par votre activité de taggeur de mp3 fou.

La rage du media

Anciennement MP3Rage, Media Rage de Chaotic Software est ce que j'ai trouvé de mieux sur Mac pour réaliser toutes sortes d'opérations sur des fichiers multimédia (principalement audio). L'interface est un peu bizarre et pas très intuitive au début mais une fois habitué c'est le pied. Je ne vais pas énumérer tout ce qu'on peut faire avec car c'est vraiment le couteau se-sui de la musique numérique. Quelques exemples de features parmis les plus utiles :

  • Renommer ses fichiers sur la base des tags ID3
  • Tagger ses fichiers à partir de leur nom grâce à des regexp
  • Passer d'une version d'ID3 à une autre
  • Rechercher/remplacer dans les tags ID3
  • Traitement par lots
  • Effacement de certains tags

Leur site est pas terrible mais le soft est maintenu et de nouvelles versions sortent assez régulièrement. $29.95, emballé c'est pesé.

90bpm, la béatitude

beaTunes est un logiciel écrit en Java qui fait tout un tas de trucs de dingue et je ne l'ai pas lâché depuis sa découverte. Le plus utile pour moi et son outil automatique de détection de BPM. C'est pas le seul outil à faire ça mais il ne fait pas que ça. En tous cas ça me sert à fond pour mon ScratchLive

beaTunes dispose d'une fonction d'inspection en profondeur de la librairie iTunes pour trouver des champs mal orthographiés ou orthographiés de façon différente, trouver des fichiers manquants etc. Il permet aussi de générer des playlists basés sur le tempo des chansons. Build better playlists mo'fucka ;) $24.95, emballé c'est pesé.

Je mange des cerveaux

C'est très très rare mais parfois on peut se retrouver avec des fichiers mp3 vieux et obscurs et qui ne sont dotés d'aucun tag ID3. Ouais c'est chelou mais ça m'est déjà arrivé. Dans ce cas, soit on a quelques indices sur l'artiste ou l'album et on peut aller fouiller dans les bases de données en lignes, soit on a nada et c'est la merde putain chier. Alors quand tout le reste a échoué, lisez le mode d'emploi. Sauf qu'on a pas de mode d'emploi mais une base de donnée un peu spéciale, MusicBrainz, qui stocke en plus des informations classiques des empreintes audio.

Ca c'est plutôt cool et il existe des applications qui analysent le contenu audio de vos fichiers, en génèrent une empreinte et vont essayer de la trouver dans la base de MusicBrainz. C'est ce que fait par exemple iEatBrainz malheureusement plus maintenu. Là, si ça ne réussit pas c'est que vous êtes vraiment un music snobinard qui écoute des trucs obscurs de chez obscurs.

One-liners et trucs de geeks

Une petite ligne de Perl pour que la fête soit complète ? Pour lowercaser le nom de vos fichiers :

perl -e 'for (@ARGV) { ($new=$_) =~ tr/[A-Z]/[a-z]/; rename $_, $new }' *.mp3

Une autre pour faire un chercher remplacer toujours dans le nom des fichiers :

perl -e 'for (@ARGV) { ($new=$_) =~ s/woutang/wu-tang/g; rename $_, $new }' *.mp3

Pour contôler iTunes via des raccourcis claviers j'utilise Synergy qui est bien foutu. Sinon il y a aussi Controlling iTunes from the Terminal, un script shell qui utilise osascript pour contrôler iTunes. Bien utile via ssh par exemple si vous avez plusieurs Macs.

Et le mot de la fin

Mot

PNG, transparence et optimisation avec pngnq sous OS X

mercredi 10 décembre 2008

Catégorie Faire le web

Photoshop propose deux choix pour enregistrer des images PNG via sa fonction d'optimisation d'images pour le web : PNG-8 (permet d'obtenir des images en 256 couleurs) et PNG-24 (permet d'obtenir des images en milliers de couleurs et d'avoir de la transparence alpha). Ici vous trouverez plus d'informations sur les formats PNG en Photoshop, et là encore des explications sur la différence entre PNG-8 et PNG-24.

Depuis quelques temps on sait que le PNG-8, contrairement à des idées reçues, peut aussi gérer la transparence alpha. Voir le post PNG8 The Clear Winner dans lequel l'auteur parle de PNG-32, c'est à dire de PNG-24 avec une couche alpha de 8 bits supplémentaires.

Après avoir lu ces slides sur l'optimisation des images, on sait qu'il existe des outils pour convertir des PNG en milliers de couleurs vers des PNG en 256 couleurs. C'est comme ça que doit faire Flash, je ne sais pas si vous avez déjà vu le poids d'un SWF dans lequel vous avez importé une image transparente PNG-24 générée par Photoshop, c'est assez impressionnant. pngnq est un de ces outils. Il s'agit d'un programme qui s'utilise en ligne de commande. Ceux qui n'aiment pas ça et qui ont Fireworks peuvent lire PNG Alpha Transparency - No Clear Winner.

Malheureusement pngnq n'est pas disponible via MacPorts, mais une version compilée pour Mac OS X est disponible dans les téléchargements. pngnq a besoin de libpng pour fonctionner. libpng est disponible via MacPorts.

Voici un petit mémo pour installer pngnq. Vous aurez besoin de MacPorts et devez d'abord télécharger la version compilée pour Mac de pngnq.

 $ sudo port install libpng
 $ cd ~/Desktop/pngnq-0.5-macosx-universal
 $ sudo cp pngnq /usr/local/bin/
 $ sudo ln -s /opt/local/lib/libpng.dylib /usr/local/lib/libpng12.0.dylib

Ensuite vous pouvez installer aussi optipng ou pngcrush via MacPorts et commencer à jouer :

 $ pngnq -vf -s1 image.png
 $ optipng -o7 -nc image-nq8.png

A titre d'exemple, je passe d'un PNG-24 avec transparence alpha de 188 ko obtenu via Photoshop à un PNG de 56 ko toujours avec transparence après la moulinette pngnq.

D'autres ressources : Optimiser la compression des PNG et Images, PNG et GIF.

Obtenir des colonnes de hauteur identique via JavaScript

mardi 9 décembre 2008

Catégorie Faire le web

Parfois dans nos sites on a besoin d'obtenir des colonnes de hauteur égale. Dans l'état actuel de l'art c'est un peu compliqué à obtenir via CSS, c'est pour ça que des hacks et des techniques pas toujours au top ont été inventés pour palier à ce problème. En utilisant display:table on a une méthode pas mal mais ça n'est pas encore complètement cross-browser. Quelques lignes de JavaScript peuvent nous permettre d'arriver à nos fins simplement, d'ailleurs d'autres se sont déjà penchés sur le problème. Une petite recherche Google sur les termes javascript equal height vous fera voir pas mal d'approches différentes dont certaines un peu barbares :o Une des méthodes les plus clean est celle du plug-in jQuery des devs de Filament Group.

J'ai une approche presque identique sauf qu'à la place d'initialiser une variable à 0 et de boucler sur les divs concernés pour trouver la hauteur la plus importante, je boucle sur les divs concernés et je stocke leur hauteur dans un tableau, puis je récupère la plus grande valeur du tableau obtenu via la méthode max de l'objet global Math. Cette façon de faire est intéressante, vous allez voir. Pour l'exemple je passe par la librairie jQuery histoire d'économiser des lignes de codes et pour calculer la hauteur des éléments sans se prendre la tête avec des clientHeight ou des offsetHeight.

Voici le code en light :

 var heights = [];
 $('.my-divs').each(function(){ heights.push( $(this).height() ); });
 var max_height = Math.max.apply(null, heights);
 $('.my-divs').css( {'min-height': max_height+'px'} );

Deux choses intéressantes ici.

D'abord le fait de pouvoir passer un tableau en argument à la méthode max qui normalement attend des integers, j'avais lu ça dans Fast JavaScript Max/Min et dans la réintroduction à JavaScript il y a un bout de temps. Dans notre exemple apply() prend deux arguments, un objet et un tableau, ici null et heights. Ce qu'il faut savoir ici c'est que lorsque l'objet du premier argument est set à null c'est l'objet global qui est utilisé. Donc ce qui se passe : apply() invoque max() comme si c'était une méthode de l'objet global (Math ici) en lui passant en argument les éléments du tableau heights. Bing, c'est beau et propre.

L'autre chose intéressante est de définir la hauteur maximum ainsi obtenue non pas sur la propriété height des éléments concernés mais sur leur propriété min-height et ce dans le but de ne pas se retrouver avec un layout foireux dans le cas d'un resize du texte par l'utilisateur. L'inconvénient est que notre ami IE6 ne supporte pas min-height, le plug-in de Filament Group le gère, pas moi car j'en ai trop marre d'IE6. Leur plug-in fait encore un truc intéressant en transformant les pixels en ems, je n'ai pas jugé ça utile dans mon cas.

Voila, c'était vraiment très intéressant.

MarcArea refonte et redesign avec du Django dedans

Catégorie Faire le web

Boum, ça y est. Je viens de corriger les derniers bugs CSS (merci Vince) et MarcArea 2008 est en ligne. Ca faisait un bail que l'ancienne version prenait la poussière. Je ne vais pas m'étaler sur le design. Allez, juste un peu : niveaux de gris avec du rouge pour la couleur, Helvetica Neue en font principale, PNG transparent à gogo, un chouïa de JavaScript, du -webkit-transition sur le menu pour ceux qui ont Safari, une grille en 4 colonnes pour le layout, que des photos de papa Kemar dans le header... c'est le 32 hits combo qu'il te faut. Bon, la photo de la home ne fait pas l'unanimité mais c'est ça la street life mec, c'est comme une pure prod de Pete Rock sur une boucle de piano de ouf, c'est gangster gangster :D

Le saviez-vous ? PHP c'est trop pour les enfants, c'est plus la classe de coder en Perl ou en Python. Partant de ce constat pour le moins trollesque, j'ai décidé d'utiliser Django pour la refonte de mon site après en avoir entendu tellement de bien autour de moi et surtout parce que je suis un perfectionniste avec des putains de deadlines. J'ai donc testé et je ne suis pas déçu pour le moment.

Remarquez y a rien de violent dans mon site perso. Pas franchement besoin d'un framework pour ça mais on se refait pas et c'était parfait pour un premier test. Alors je me suis d'abord tapé la doc, les tutos et le début du DjangoBook qui est un peu chiant car pas à jour par rapport à la dernière version du framework. Ca suffit largement pour se lancer dans son premier projet.

J'ai joué avec l'excellent système de templates. J'ai créé deux tables dans une base SQLite pour gérer les MacBookmarks et voir comment fonctionne la couche modèle ainsi que l'auto génération des interfaces d'admin qui est vraiment cool. J'ai joué un peu avec les formulaires pour générer le form de contact et sa validation et c'est vraiment rapide une fois qu'on sait comment ça marche. Tout est bien organisé, c'est propre et beau.

Donc voila. Django c'est cool et hype. J'ai trouvé de l'info et des tips (Gmail and Django) sur le net à chaque fois que je suis tombé sur un pépin. Peut-être un peu chiant à déployer. J'ai un peu galéré pour configurer mon vhost Apache, surtout pour continuer à servir mon DotClear en PHP à la même URL. Il ne me reste plus qu'à lire davantage de doc Django, bosser mon Python et voir l'évolution du framework sur la base de Python 3.

- page 1/73