Quoi de neuf aujourd’hui ?

Que de nouvelles !

Je commence déjà par la nouvelle émission de Cyprien IOV aka Monsieur Dream qui a donc laissé Le Rewing du 20 Minutes pour 12 Infos sur NRJ12, cette dernière voulait renouveler son public.

Si vous voulez déjà programmer votre DVR, la première émission sera le 20 Septembre à 20h15 et ça dure 9 minutes.

Source CB News.

Internet Explorer 9 aurait été aperçu sur le site Russe de Microsoft. Il ressemble assez à la beta de Firefox 4 (que vous pouvez d'ailleurs tester, tout s'intègre bien dans Windows 7).

Pour la première fois, The Pirate Bay à reçu le conseil de conserver un torrent. En effet, un concepteur d'un logiciel, trouvant son logiciel mal cracké, dont la validation implique un "simple changement de booléèn" a demandé qu'on garde ce torrent pour "se moquer", et à demandé un meilleur crackeur pour finalement "relever le niveau".

Une copie du mail est disponible ici.

Source TorrentFreaks.

Dans la série Neutralité du Net, Orange fait peur, vraiment peur.

Publié dans Non classé | Laisser un commentaire

Vidéos du jour

Labyrinth Chase by Ziul from POCKO on Vimeo.

Le site de l'auteur.

Bloodwork Opening from POCKO on Vimeo.

Le site de l'auteur.

Si vous avez le temps aussi aujourd'hui - car vous n'avez pas repris le boulot - de regarder leurs showreels et vidéos personnelles, elles valent le coup :) .

P.S. j'en profite pour signaler que le nouveau embed code de Vimeo ne marche pas sur WordPress...

Publié dans Non classé | Laisser un commentaire

Petites modifications du .htaccess

C'est une question existentielle si vous avez plusieurs sous-domaines avec des redirections : que rediriger vers quoi ?

Auparavant, tout sous-domaine ce qui n'était pas dans la liste : ext, blog, 301... était redirigé vers blog.mygb.eu.

Bref, j'ai amélioré la méthode pour faire rediriger mygb.eu vers www.mygb.eu et seulement si REQUEST_URL est "/", ça redirige vers blog.mygb.eu.

RewriteEngine on

RewriteCond %{HTTP_HOST} ^mygb.eu$
RewriteRule ^(.*) http://www.mygb.eu/$0 [QSA,L,R=301]
RewriteCond %{HTTP_HOST} ^www.mygb.eu$
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^$ http://blog.mygb.eu/ [QSA,L,R=301]

Voila pour le code. Pour les pas-familier des htaccess, les "flags" entre crochets signifient pour [L] ne pas continuer une fois qu'on a complété la "rule", [R] est l'erreur de code à fournir, ici, 301 : Permanent Redirection que les admirables robots des moteurs de recherche vont suivre comme des grands.

Pour rediriger l'url /blog/ vers blog.mygb.eu, il faut :
RewriteCond %{HTTP_HOST} mygb.eu$
RewriteCond %{REQUEST_URI} ^/blog/?$
RewriteRule ^(.*)$ http://blog.mygb.eu/$1 [QSA,L,R=301]

Dans un tout autre domaine (Joke 2010 © MyGB), vous vous demandez surement ce qui fait les redirections sur http://301.mygb.eu et offre une version mobile sur http://301.mygb.eu/m/ ? Nan ? Bon, je met quand même le code du .htaccess :

RewriteRule /mobile/? /m/ [R=301]
RewriteRule /m$ /m/ [R=301]
RewriteRule /m/ /index.php?mobile=on

Donc, on peut voir que si on tape /m, ça redirige vers /m/.
La page /m/ n'est en fait que la page de base / avec une variable GET nommée mobile=on. Dans le code source de index.php, il y a une détection de l'user-agent et une redirection. Toutefois, elle force le navigateur mobile à aller sur /m/. J'ai rajouté une option ?force=1 pour obliger à aller sur la version Desktop au cas où.

Pour finir, je vous annonce juste que j'ai mis des pages d'erreurs plus légères que celles d'Open-Web habituelles. Néanmoins, il semble que cela ne marche pas dans les sous-répertoires (301, ext...) et cela même avec un "/../".

La solution serait de mettre une page avec le chemin http://, mais cela fait perdre l'url où l'on a l'erreur.

Publié dans Internet | Laisser un commentaire

Petits amusements

Avant d'installer la nouvelle version d'Android 2.2 (FroydVillain 1.3) sur mon Hero, j'ai décidé de tenter un dump TCP (analyse des paquets réseaux) avec AndroShark. En effet, Vous connaissez probablement Google Voice Search et Shazam ? Ces deux applications se basent sur des données audio et effectuent pour le premier une reconnaissance vocale et pour le second une reconnaissance musicale.

Néanmoins, aucun de ces deux services n'a d'API alors il peut être intéressant de savoir ce que l'application envoie et où.

Deux minutes plus tard le dump était fait, un joli petit fichier de quelques kilos. Je ne tarde pas à trouver ce que je cherche.

Cependant, ce fut un ratage complet.

Google envoit une requête POST à "http://www.google.com/m/voice-search" semble télécharger un certificat SSL. Puis le téléphone communique avec une autre IP. Parfois avec TCP ou TSLv1.

Le tout avant de recevoir un fichier mis en forme avec des liens et des suggestions.

Le tout est indéchiffrable. Il est impossible de récupérer un semblant de fichier audio (qui d'ailleurs semble être envoyé en "streaming").

Du côté de Shazam, il y a 3 requêtes.

Une de découverte, une d'analyse (http://goog.shazamid.com/orbit/DoRecognition1) et une de résultat.

Un bon paquet de paramètres dont le modèle du téléphone, l'IMEI, l'user-agent (indéchiffrable), un crypt-token et un octet-stream de 1,6Ko...

En conclusion, gros ratage, alors que Google semble faire télécharger un certificat SSL, Shazam l'encode à sa manière et surtout diffuse l'IMEI du téléphone (l'identifiant unique...) ce qui est pas très plaisant. Néanmoins, les réponses sont lisibles (XML pour Shazam).

---

Dans un tout autre registre, je me suis amusé à faire lire des mails via PHP et fournir une réponse. Je ferai probablement un article "journée coding" sur ça un de ces jours. En tout cas, si vous voulez tester, vous n'avez qu'une fonction à activer dans votre php.ini et vous êtes parés, il s'agit de l'extention IMAP.

Faites attention quand même, prenez un serveur mail local (et ajoutez une redirection dans votre fichier HOST) car smtp.free.fr a mal supporté au bout d'une vingtaine de messages et les refusait (550 SPAM DETECTED). De même pour Google qui les recevait, un a été classé dans "spam". Enfin, j'dis surtout ça pour éviter que votre IP se retrouve dans toutes les blacklistes du monde...

Publié dans Non classé | Laisser un commentaire

Quote du jour

"Intel CEO: "We need antivirus, can someone buy me McAfee?" Few hours later: "Done." "Great, which version?" "Version ... ?" Via Twitter pour cette affaire.

Traduction :

"PDG d'Intel: "On a besoin d'un antivirus, quelqu'un pour prendre McAfee ?" Quelques heures plus tard: "C'est fait." "Ah, bien, quelle version vous avez pris ?" "Une version ?..."

Publié dans Non classé | Laisser un commentaire

Le merveilleux monde de la typo sur le web

A la différence d'un document ouvert par votre éditeur de texte favori, sur Internet, il est parfois assez difficile de mette en place une "font" ou police d'écriture.

CSS font-face

Cependant, des groupes de travaux ont introduit dans le CSS une propriété nommée font-face qui permet d'ajouter un texte dans une page web, avec une police exotique qui ne soit pas une image.

C'est donc avec une grande joie qu'on découvre "font-face" qui peut s'utiliser comme "@import" ou comme une propriété dans les fichiers CSS.

Bref, vous avez de la documentation partout : officielle, en français, de Mozilla, ou version simple.

Sinon, il existe une petite dizaine d'API qui vous permettent de jouer avec des polices d'écriture, notamment Google Font, Typekit, Typeface.

Par contre, j'avais trouvé un bon site qui analysait ces outils mais là, je ne le retrouve plus...

Dans les images générées

Si c'est impossible pour vous de faire la méthode pratiquée ci-dessus pour quelque raison que ce soit (on ne peut pas toujours mettre du texte), vous pouvez l'utiliser dans les images. Néanmoins, là où ça devient intéressant, c'est en PHP, si vous utilisez la bibliothèque GD pour générer ces images.

En effet elle utilise un format spécial nommé "GD Font", et les polices sont étiquetées .gdf.

Bref, ces fonts sont différents des polices d'écriture habituelles (.tff, .otf, .ps) car il sont dépendants de l'architecture du processeur (Big Endian et Little Endian, bonne lecture ici et ici).

Voila le petit paragraphe culturel.

Toutefois, si vous ne voulez pas vous embêter à chercher/convertir des fonts, PHP peut utiliser du TTF, j'ai découvert ça récemment (*fier*).

imagettftext

Publié dans Non classé | Laisser un commentaire

Journée coding 2 – PHP et Bittorrent (Partie 1)

Pour un petit proof-concept, j'ai décidé de tenter la connexion à un tracker via PHP.

Subtilité du protocole

Premièrement, avant de débuter quoique ce soit, il est nécessaire de trouver comment vous aller communiquer.

Je vous conseille de rechercher dans votre Google "Bittorrent Specs". Deux sites apparaissent, l'officiel et un wiki très bien documenté.

Il faut savoir que ce protocole utilise un système de codage très sympathique, pour ses communications, le bencode. Il permet des listes, dictionnaires, entiers et chaines.

Commençons.

Pour se connecter à un tracker, il va nous falloir un identifiant du fichier torrent, il est unique, c'est le info_hash. Pour l'obtenir, il faut faire une petite opération sur le fichier torrent. Ouvrez par exemple le torrent de Pioneer One avec HxD.

Voici ce que vous devriez obtenir, il s'agit d'un hexdump :

Vous avez un exemple de bencode avec par exemple "infod5:filesld6:lengthi1219[...]", on a donc un dictionnaire "info".

J'en reviens à mon info_hash, pour l'obtenir, sélectionnez TOUT le contenu de info, cela commence à "d5" et cela s'arrête à l'avant-dernier "e". Allez dans le menu "Analyse > Sommess de contrôle" , choisissez SHA-1 et cochez "Sélection".

Le "hash" apparaîtra en bas de la fenêtre.

Qui est donc : 38EDEE1E687462442E40FA8E988D67F198AE7DFC

Si vous avez un doute, ouvrez le torrent dans votre logiciel de Torrent.

Avant de le passer en paramètre au tracker, il faut le hash, mais il faut aussi le convertir

Note that all binary data in the URL (particularly info_hash and peer_id) must be properly escaped. This means any byte not in the set 0-9, a-z, A-Z, '.', '-', '_' and '~', must be encoded using the "%nn" format, where nn is the hexadecimal value of the byte. (See RFC1738 for details.)

For a 20-byte hash of \x12\x34\x56\x78\x9a\xbc\xde\xf1\x23\x45\x67\x89\xab\xcd\xef\x12\x34\x56\x78\x9a,
The right encoded form is %124Vx%9A%BC%DE%F1%23Eg%89%AB%CD%EF%124Vx%9A

Ainsi, il faut découper le hash par paquet de deux lettres et voir si elles existent en ASCII (c'est de l'hexa).

38 ED EE 1E 68 74 62 44 2E 40 FA 8E 98 8D 67 F1 98 AE 7D FC

S'il y a correspondance (qui est dans l'intervalle A-Z, a-z ou 0-9), on remplace par le caractère, sinon, on laisse le code (en minuscule) avec un % au début.

Ce qui donne donc avec le hash de Pioneer One :

8%ed%ee%1ehtbD.%40%fa%8e%98%8dg%f1%98%ae%7d%fc

Nous pouvons désormais questionner le tracker http://tracker.vodo.net:6970/announce.

On contacte un tracker avec une requête GET toute simple.

Ainsi, pour obtenir des infos du tracker

http://tracker.vodo.net:6970/announce?info_hash=8%ed%ee%1ehtbD.%40%fa%8e%98%8dg%f1%98%ae%7d%fc&peer_id=%111111111111111111111&port=10930&uploaded=0&downloaded=0&left=1253704885&event=started&numwant=1000&compact=0

Quelques précisions s'imposent.

info_hash, on l'a vu.
peer_id, c'est votre identifiant, il est généré aléatoirement sans aucune règle, néanmoins, il faut qu'il soit avec un % et d'une longueur de 20 caractères (ici, un % suivi de 20 "1"). Nous verrons plus tard qu'il s'agit d'un moyen d'identifier le logiciel client.
port, le port sur lequel vous allez discuter avec les autres.
uploaded, la quantité de données envoyée.
downloaded, la quantité de données reçues.
left, la quantité qu'il reste à recevoir.
event, votre état (started, stopped, completed).
compact, si vous acceptez une liste des peers compacte.

Une fois que vous avez envoyé la requête, le tracker devrait vous envoyer une réponse :

C'est pas toujours sous forme de fichier, mais là, comme le port était différent du web, Firefox a décidé de l'enregistrer.

De retour sous HxD, ouvrez votre fichier.


Si c'est pas magnifique, vous avez maintenant la liste de 300 IPs contenue dans un fichier d'1Ko de peers prêts à communiquer avec vous.

Vous ne les voyez pas ? Vous êtes sûrs ?

Et si je vous dis de prendre sur la colonne du milieu 4 bits comme ça :

Et ensuite, d'entrer chacun des bits dans le mode calculette programmeur en Hexa et de passer en Décimal ?

N'est-ce pas étonnant de trouver une forme pratiquement similaire à une IP dans un fichier qui est une base pour faire vos transferts de pair à pair ?

Il y a tout de même une petite subtilité. Tous les nombres ne sont pas des IPs. Il y a en effet les PORTS des IPs qui s'étalent sur deux octets (16*16*16*16 = 65 536 et il y a 65 536 ports logiciels disponibles : logique).

Passons à la pratique

Vous voyez tout ce qu'on vient de se farcir ? Ben maintenant, on va le faire en PHP ! (*rire démoniaque*).

Mais don't worry, pleins de fonctions existent pour vous faciliter la vie !

Ce sera dans la prochaine "journée coding" :) .

Publié dans Non classé | 2 commentaires

Boule à facette sous After Effect

Vous avez été tellement épaté par ma vidéo que vous avez décidé de retourner ciel et web pour la reproduire ?

Votre attente est révolue (et mon égo s'accentue), et je vais vous montrer en quelques images que c'est très simple.

Premièrement, créez un nouveau projet et une nouvelle composition.

Ajoutez ce qui sera un fond (Calque > Créer > Solide).

Ajouter un nouveau "solide" nommé sphère. Peu importe la couleur.

Dans les "effets" cherchez "Bruit Fractal" et ajoutez-le à "sphère".

Et appliquez-y ces paramètres :

Votre calque devrait maintenant ressembler à un tableau d'Art Moderne.

Ajoutez ensuite un "Detection des contours" et "Dégradé 4 couleurs" avec ces paramètres :

Et là, du tableau d'Art Moderne, on passe à la vision psychédélique du tableau.

Rajouter ensuite une "Grille" et un "Damier".

On approche d'un résultat :

Ajoutez enfin les deux derniers éléments, "CC Sphere" et "Lueur Diffuse" :

Ce qui donne :

Essayez de centrer le damier sur la grille, ça fera plus réaliste.

Et si on donnait du mouvement ?

Malheureusement, ce n'est pas une sphère, mais une image plane.

Il va donc falloir trifouiller les effets.

Je propose la "grille" et le "damier".

Pour la grille, "ancrage" et "coin" doivent bouger en même temps (deux valeurs égales pour moi).
De même pour le "ancrage" du damier (mais pas forcément la même valeur).

Chez moi, les effets bougent de 400.

Et voila. Vous avez normalement une belle boule à facette :) .

Publié dans Non classé | Laisser un commentaire

MediaCoder et les fichiers MTS (AVCHD) + configuration d’encodage h.264

Quand vous prenez une vidéo avec votre tout dernier appareil-hitech dernier cri, celui-ci peut parfois vous sortir un fichier vidéo haute-définition AVCHD.

Toutefois, si vous avez tenté d'encoder ce fichier avec MediaCoder, il se peut que vous ayez eu comme moi un petit problème : la vidéo est accélérée et le son coupé au milieu.

Résoudre le problème est très simple. Il vous suffit de cocher une case dans l'onglet "DEMUXER" :

Puis, cochez dans "AUDIO" et "VIDEO" l'onglet à côté de "source" et choisissez "MPlayer". Le traitement de la vidéo devrait être un peu plus long et cette fois, vous aurez votre vidéo complète à vitesse normale et le son en entier.

Je me suis aidé de cet article.

J'ai récemment revu une configuration "prêt-à-traiter". Encoder en h.264 est souvent très pratique, mais pas toujours très accessible.

De plus, j'ai remarqué que la version 0.7.5 de MediaCoder avait l'encodeur FAAC défaillant. Je vous conseille de prendre l'ancienne version qui est la 0.7.3.

La configuration pour la VIDEO est donc :

Format : H.264
Mode : Average Bitrate
Pour une qualité DVD, environ 1500-2000Kb/s
Source : Auto
Encoder : Auto

Notez que si vous comptez encoder pour un Androphone, chez moi, mon HTC Hero (ARMv6) ne supporte qu'un profile "baseline".

Et pour l'AUDIO

Encoder : FAAC
Format : LC-AAC
Source : Auto
128Kb/s en MPEG4
Publié dans Encodage, Vidéo | Laisser un commentaire

Hé Hubert vient on va se foutre de la gueule des Meup…Morpeug !

Je dirai que Plus Belle la Vie, Episode du Vendredi 13 Aout a prononcé LE mot qui va faire d'elle le succès des deux-trois jours à venir.

Il me semble que c'est l'épisode S06E225 (les gars ont tout compris dans le nommage) ah ben non en fait, y'a plus de 3000 épisodes en tout >.<.

C'est dire que le doublage est tellement à chier (et les clichés tellement gros) que j'ai cru à une vidéo type Mozinor.

En tout cas si c'est l'idée de com', je pense que le coup est réussi.

Bref c'est à voir sur Pluzz (ou demain 2h du matin) a 3"23' juste après le mec qui preind l'aquecent d'in mafieux.

Publié dans Non classé | Laisser un commentaire