samedi 29 août 2009

Thème Windows 7 - Grand Theft Auto: The Ballad Of Gay Tony

Une nouvelle fonctionnalité de Windows 7 est la possibilité très simple de créer un thème et surtout de le partager en en faisant une archive distribuable.

Pour la peine, je viens de me faire un thème pour Windows 7 utilisant des fonds d'écran de la future extension pour GTA: The Ballad Of Gay Tony que je mets à disposition.
Télécharger le thème Grand Theft Auto: The Ballad Of Gay Tony (3,43 Mo). Pour info, la résolution des fonds d'écran inclus est de 2560x1600 pixels.

Libellés : , ,

mardi 25 août 2009

Comment forker proprement en PHP ?

Pour un script particulier, j'ai eu besoin d'effectuer des traitements en parallèle en PHP: j'ai donc fait appel au fork. Le fait de forker permet à un programme de se dupliquer, en vue de réaliser un autre traitement, en même temps que le premier.

Le language PHP, destiné à priori au monde du web, ne s'est vu attribuer des méthodes de forking que tardivement, dans la version 4.1.0.

Le concept n'étant pas aisé à comprendre pour un développeur débutant en PHP, je vous livre un exemple très simple d'utilisation du fork: Un processus père lance 10 processus fils qui ont une durée de vie de 1 à 10 secondes. Puis le processus père se termine après la fin de vie du dernier de ses fils:


('NB_CHILDREN', 10); // Nombre d'enfants à forker

$a_pids = array(); // Tableau contenant les PIDs des fils

echo "Avant le premier fork\n";

for (
$i = 1; $i <= NB_CHILDREN; $i++)
{
 echo
"Je fork l'enfant n°$i\n";
 
$pid = pcntl_fork();
 if (
$pid === -1)
 {
  die(
"Impossible de forker\n");
 }
 elseif (
$pid)
 {
  echo
'Je suis le père, pid reçu: '. $pid ."\n";
  
$a_pids[] = $pid;
 }
 else
 {
  
sleep($i);
  echo
'Je suis un fils, pid reçu: '. $pid ."\n";
  exit;
 }
}

echo
"Le père attend la fin de ses fils...\n";

foreach (
$a_pids as $pid)
{
 if (
pcntl_waitpid($pid, $status) === -1)
 {
  die(
"Impossible d'attendre la fin d'un de mes fils\n");
 }
}

echo
"Tous les enfants ont terminé, je peux en finir =)\n";


Si vous tentez de lancer ce programme en ligne de commande, vous obtiendrez la sortie suivante:
analogue@plop:~$ php -f test-fork.php
Avant le premier fork
Je fork l'enfant n°1
Je suis le père, PID reçu: 8071
Je fork l'enfant n°2
Je suis le père, PID reçu: 8072
Je fork l'enfant n°3
Je suis le père, PID reçu: 8073
Je fork l'enfant n°4
Je suis le père, PID reçu: 8074
Je fork l'enfant n°5
Je suis le père, PID reçu: 8075
Je fork l'enfant n°6
Je suis le père, PID reçu: 8076
Je fork l'enfant n°7
Je suis le père, PID reçu: 8077
Je fork l'enfant n°8
Je suis le père, PID reçu: 8078
Je fork l'enfant n°9
Je suis le père, PID reçu: 8079
Je fork l'enfant n°10
Je suis le père, PID reçu: 8080
Le père attend la fin de ses fils...
Je suis un fils, PID reçu: 0
Je suis un fils, PID reçu: 0
Je suis un fils, PID reçu: 0
Je suis un fils, PID reçu: 0
Je suis un fils, PID reçu: 0
Je suis un fils, PID reçu: 0
Je suis un fils, PID reçu: 0
Je suis un fils, PID reçu: 0
Je suis un fils, PID reçu: 0
Je suis un fils, PID reçu: 0
Tous les enfants ont terminé, je peux en finir =)
analogue@plop:~$
A la place de la ligne sleep($i); exécutée par chaque fils, vous pouvez insérer le traitement de votre choix, qui sera exécuté en parallèle, par exemple un crawler ;)

Sachez enfin que les méthodes de contrôle de processus de PHP ne sont disponibles qu'en ligne de commande (PHP CLI). Si vous êtes sous Debian GNU/Linux ou Ubuntu, un simple apt-get install php-cli vous installera le binaire nécessaire.

Libellés : , ,

mardi 18 août 2009

dan le sac vs Scroobius Pip - Thou Shalt Always Kill

Je diffuse ici une petite merveille anglaise que m'a fait découvrir Adrien AK Ménielle sur son Twitter: "dan le sac vs Scroobius Pip - Thou Shalt Always Kill".



Du bon hip-hop qui fait pas dans la facilité de ce qu'on entends habituellement, qui permet de prendre du recul et qui peut se résumer en "think for yourselves".

On peut aussi le trouver sur Spotify ;)

Libellés : ,

mardi 11 août 2009

Problème entre Steam et Windows 7 RC 64 bits

En rentrant du taf', je me décide à acheter un pack de jeux indies sur Steam qui tue pas qu'un peu ! Excusez du peu:
  • Audiosurf
  • Blueberry Garden
  • Braid
  • Crayon Physics Deluxe
  • Darwinia
  • Everyday Shooter
  • Gish
  • Mr. Robot
  • The Path
  • World of Goo
Et bam ! Steam m'affiche les insultes suivantes au démarrage:
Running Steam in Windows compatibility mode is not recommended. Please remove any Windows compatibility settings for all users under file properties for Steam.exe and restart Steam. Press 'Cancel' to permanently ignore this warning and continue.


J'utilise Windows 7 RC en 64 bits (x64 ou amd64) et Steam pense que j'essaie de le lancer en mode compatibilité, ce qui est faux ! Bien entendu, ce qu'ils conseillent de faire ne fonctionne pas, et pourtant Steam continue de m'afficher le même message, me traitant donc de menteur.

Qu'à cela ne tienne, c'est un bug, et comme pour quasi-tout bug d'un logiciel propriétaire, il y a un moyen de passer outre en attendant que le développeur se bouge.
  1. Lancez l'éditeur de base de registre (Démarrer -> Exécuter -> regedit)
  2. Trouvez la clef HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
  3. Sélectionnez l'entrée dont le path fini par Steam.exe
  4. Effacez l'entrée sélectionnée
Si vous ne trouvez pas l'entrée en question, cherchez-la dans la clé HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers.

Relancez Steam et jouez ! ;)

Libellés : , , ,

lundi 10 août 2009

Mort de tr.im quid des raccourcisseurs d'URL à la tinyurl ?

tr.im est mortUn raccourcisseur d'URL (URL shortening service) est un fournisseur d'adresse web courte pointant vers une adresse web plus longue. Par exemple l'adresse http://www.glop.org/blog/2009/08/le-rage-did-software-saffiche.html peut être remplacée par http://tinyurl.com/lnepzo.

Si ce type de service a vu le jour, c'est qu'il est utile:
  • Il évite les URLs illisibles. Le web dynamique utilise l'URL pour le passage de paramètres. C'est moche, illisible et impossible à se souvenir. Le raccourcissement d'URL peut être utile pour une URL copiée dans un mail ou sur un forum.
  • Dans la messagerie instantanée où le nombre de caractères est limité (exemple: Twitter, ou les statuts sur les IMs), il devient possible d'afficher des URLs qui pourraient s'accaparer tous les caractères alloués.
  • Il peut être utile de dicter une URL, par exemple au téléphone.
Seulement, il n'y a pas que des avantages à se reposer sur ces services:
  • Les URLs courtes rajoutent de la complexité et donc du travail à tous les serveurs. Avant de se connecter directement sur l'URL en question, plusieurs requêtes HTTP et DNS seront nécessaires.
  • L'URL raccourcie cache sa destination, et cela peut être utilisé pour envoyer des visiteurs vers des pages qu'il ne souhaitait pas visiter. Par exemple, un utilisateur peut poster un lien raccourci avec un titre très accrocheur et envoyer ses cibles sur une page exploitant les failles d'un navigateur pour diffuser un virus, amener des visiteurs sur un site de fishing, ou sur des boutiques vendant du viagra ou des pompes pour gonfler son pénis.
  • Dans le cas qui se présente aujourd'hui, la mort de tr.im, toutes les URLs raccourcies par ce service seront définitivement perdues au 1er janvier 2010. Ce qui éliminera une grande quantité d'information du net, ainsi que la cohérence de beaucoup de publications incluant un lien raccourci par le service en question. Tout ça part à la poubelle.
L'URL raccourcie est utile si elle est utilisée dans le domaine de l'éphémère: par téléphone ou dans les statuts des divers outils de communication. Mais utiliser une URL courte dans un communication archivée (mail, twitter, facebook) lui donne une durée de vie limitée: l'information deviendra obsolète le jour ou le fournisseur d'URL courte rendra l'âme. Pour Twitter, avec la limitation de la taille des messages, difficile de faire sans, la solution serait que Twitter offre ce service lui-même pour tuer cette dépendance: alors les twits deviendront obsolètes seulement le jour ou Twitter mourra.

Libellés : , ,

vendredi 7 août 2009

Le Rage d'ID Software s'affiche

ID Software a publié six nouvelles images de son futur jeu Rage, et elles en mettent vraiment plein la vue.

Image de Rage n°1
Image de Rage n°2
Image de Rage n°3
Image de Rage n°4
Image de Rage n°5
Image de Rage n°6

Vivement !

Libellés : , ,

mardi 4 août 2009

Compiler Mozilla Firefox en 64 bits sous Debian GNU/Linux

Mozilla Firefox 64 bits optimiséTravaillant avec une Debian GNU/Linux amd64, et désirant utiliser Firefox 3.5 qui ne sera pas disponible avant quelques semaines sous forme de paquet debian officiel, je me suis compilé une version optimisée de Firefox en 64 bits.

Pensant que ça pouvait en intéresser d'autres, je vous indique la marche à suivre.

Avant tout il faut télécharger le code source de Firefox sur le serveur FTP official de Mozilla. Il doit logiquement se trouver à cette adresse: ftp://ftp.mozilla.org/pub/firefox/releases/latest/source/
Par exemple:
wget ftp://ftp.mozilla.org/pub/firefox/releases/latest/source/firefox-3.5.2-source.tar.bz2
Vous pouvez alors décompresser le code source:
tar jxvf firefox-3.5.2-source.tar.bz2
Le code source se trouve alors dans le répertoire mozilla-1.9.1

Il faut ensuite éditer le fichier ~/.mozconfig que vous garderez pour les versions futures de Firefox. Vous devez y copier le contenu suivant:
# Utilisation d'un répertoire objdir
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@

. $topsrcdir/browser/config/mozconfig

# ac_add_options --enable-optimize
ac_add_options --enable-optimize=-O3
ac_add_options --disable-debug

# ac_add_options --enable-default-toolkit=gtk2
ac_add_options --enable-default-toolkit=cairo-gtk2

ac_add_options --enable-xft
# ac_add_options --enable-freetype2

# ac_add_options --enable-static --disable-shared
ac_add_options --disable-static --enable-shared

ac_add_options --disable-tests

ac_add_options --enable-crypto

ac_add_options --disable-javaxpcom

# Options perso
ac_add_options --enable-official-branding
ac_add_options --enable-startup-notification
ac_add_options --enable-strip
ac_add_options --disable-parental-controls
#ac_add_options --enable-system-cairo
#ac_add_options --enable-ui-locale=fr-FR
Activez ou modifiez des options selon votre configuration et vos besoins, la description des options vous permet de connaître leur signification est disponible à cette adresse.

Vous pouvez lancer la compilation, comptez une bonne demi-heure sur un PC récent:
make -j 3 -f client.mk build
L'option -j 3 permet d'utiliser plusieurs core, ajoutez 1 au nombre de cores de votre ordinateur. Exemple pour un quadcore: -j 5

Une fois la compilation terminée, vous pouvez installer firefox localement:
make -f client.mk install ; sudo make -f client.mk install
C'est fini !

A vous les joies d'un Firefox 64 bits optimisé sous Debian. Pour vérifier, vous pouvez voir les options de configuration de votre navigateur à la page: about:buildconfig. Le mien indique:
--enable-application=browser --enable-optimize=-O3 --disable-debug --enable-default-toolkit=cairo-gtk2 --enable-xft --disable-static --enable-shared --disable-tests --enable-crypto --disable-javaxpcom --enable-official-branding --enable-startup-notification --enable-strip --disable-parental-controls
La prochaine fois, on compile Google Chrome ? ;)

Libellés : , , ,

lundi 3 août 2009

Utilisez votre serveur SMTP avec Gmail

Gmail vient encore de gagner en flexibilité ! Depuis le 30 juillet 2009, Gmail vous propose d'utiliser le serveur SMTP de votre choix pour l'envoi de vos mails via leur webmail.

A quoi ça sert ? Principalement à éviter que les serveurs de vos correspondants ne voient que vos mails proviennent d'un compte gmail, indirectement, cela peut servir à whitelister vos mails en montrant aux serveurs de vos correspondants qu'ils proviennent du serveur SMTP légitime de votre nom de domaine. Exemple: smtp.glop.org pour le domaine glop.org.

Jusqu'à cette mise à jour, si vous utilisiez Gmail avec un adresse dont le domaine n'est pas gmail.com (example: prenom@nom.fr) Gmail se sentait obligé de signaler aux serveurs de votre correspondant l'origine de votre mail: votre compte Gmail de la forme compte@gmail.com.

Dorénavant, vous pouvez configurer Gmail pour que votre mail passe par le serveur SMTP de votre choix, généralement celui qui vous est fourni par le prestataire qui vous fournit aussi votre adresse mail personnalisée. Ca se passe dans les paramètres de Gmail, page "Comptes", il faut cliquer sur le lien "modifier les informations" de l'adresse mail concernée.

Évidement, il n'existe plus de serveur SMTP ouvert, et il faut donc que le serveur SMTP de votre prestataire supporte l'authentification SMTP pour s'y connecter. Mais c'est une option très intéressante et rarement disponible ailleurs pour ceux qui utilisent leur webmail avec un mail personnalisé.

Libellés : ,