les_joies_du_code();

22 05 2012

Quelques illustrations à des situations qu’on rencontre souvent quand on travaille dans l’informatique :

Quand on me parle d’un framework un peu trop underground :

Et la petite série spéciale StackOverflow, tellement vrai :
Quand je poste une reponse sur stackoverflow :

Quand je trouve une solution sur stackoverflow :

Quand je poste une question sur stackoverflow :

[source]



Robot ballon (MorpHex)

21 04 2012

MorpHex est un robot hexapode qui se transforme en ballon :



Résolution personnalisée pour carte graphique ATI

15 04 2012

Sur les cartes graphiques AMD (ex ATI), il est impossible de définir une résolution d’écran personnalisée (contrairement aux cartes nVidia qui proposent cette fonctionnalité via les paramètres du driver).

On est obligé de choisir parmi un ensemble de résolution prédéfinies.

Heureusement, il existe un petit outil fort utile qui permet d’ajouter ses propres résolutions à la liste des résolutions existantes :

[ATi Custom Resolution Tool V1.02]

L’utilisation est très simple :

  • Vous cliquez sur Get current resolutions pour charger les résolutions déjà présentes (c’est très important pour ne pas les perdre lors de l’enregistrement)
  • Vous ajoutez une ou plusieurs résolutions dans la liste
    Le format est le suivant : <largeur>x<hauteur>x<fréquence>
    Ex: 1280×0760x60 correspond à 1280*760 en 60Hz
    Attention à bien écrire le nombre sur 4 chiffres (il faut écrire 0760 et non 760)
  • Vous enregistrer la nouvelle liste de résolutions en cliquant sur Save table.
    À ce moment, le logiciel aura besoin d’écrire dans la base de registre, et Windows vous demandera si vous autorisez le logiciel à y accéder, il faut accepter.
  • Une fois enregistré, vous cliquez sur Restart ATi driver (ou alors vous redémarrez votre ordinateur), pour que ces changement soient pris en compte

Maintenant votre nouvelle résolution s’affiche dans la liste des résolutions que windows vous propose dans le panneau de configuration.

Pour ceux que ça intéresse, les résolutions prédéfinies sont enregistrées à plusieurs endroits dans la base de registre, dans des valeurs commençant par DALNonStandard (ex: DALNonStandardModesBCD1, DALNonStandardModesBCD2).

Cet utilitaire sert justement à éditer toutes ces valeurs rapidement, sans avoir à chercher et à toutes les modifier une par une.



Naviguer plus facilement dans la base de registre windows

4 03 2012

Pour accéder et éditer la base de registre sous windows, on utilise l’utilitaire par défaut : regedit.exe.

Cet utilitaire n’est pas très pratique à de nombreux égards :

  • Impossible d’accéder directement à une clé, comme on le fait dans l’explorateur windows (dans la barre d’adresse, ex: C:\Program Files (x86)\Adobe\Adobe After Effects CS4)
  • La recherche se fait “pas à pas”, au lieu d’avoir une liste de résultats

Mais il existe des solutions pour améliorer ces points, avec par exemple Registry Jumper qui permet d’accéder directement à une clé en faisant un copier-coller par exemple :

RegJump

Mais il y a encore plus radical, on peut remplacer regedit par un autre utilitaire, comme RegAlyzer, qui apporte pleins de fonctionnalités super utiles :

  • Annuler et Rétablir (Undo/Redo) en format .reg
  • Fonctions de recherche améliorées (liste de résultats)
  • Aller à une clé en la tapant/copiant dans un dialogue (au lieu de parcourir)
  • Modification DWord avec affichage en parallèle hexa/décimal/binaire
  • Affichage du contenu d’un fichier .reg sans l’importer


Erreur Firefox : Cette adresse est interdite

29 02 2012

Par défaut, Firefox bloque certains ports.

Par exemple, si vous essayez d’accéder à l’une de ces adresses :

http://localhost:143/
http://localhost:993/
http://localhost:110/

Vous aurez une jolie erreur :

Cette adresse est interdite
Cette adresse utilise un port réseau inhabituel pour la navigation Web. Par mesure de sécurité, Firefox a abandonné la requête.

(”Port Restricted for Security Reasons” en VO)

Pour désactiver cette sécurité ennuyeuse, allez dans la configuration avancée (about:config), trouvez ce paramètre :

network.security.ports.banned.override

Et donnez lui la valeur 1-65535 pour débloquer tous les ports.

Note : sur les versions récentes de Firefox (firefox 8 au moins), ce paramètre n’existe pas par défaut, il suffit de le créer (clic droit > Nouvelle > Chaîne de caractères).



Wake on LAN depuis internet (wake on wan)

28 02 2012

Après avoir galéré et beaucoup cherché sur internet comment faire fonctionner le wake on lan depuis internet, j’ai décidé de synthétiser dans ce billet tout ce que j’ai appris sur le sujet.

Ce billet a été déplacé ici : Wake on LAN depuis internet (wake on wan).



Plusieurs versions de PHP sur EasyPHP

4 02 2012

Quand on fait du développement web en local avec MAMP, EasyPHP ou encore WAMP, ça peut être pratique de disposer des plusieurs versions de PHP (4, 5.2 et 5.3 notamment).

EasyPHP ne permet pas de switcher entre différentes versions de PHP. Voici donc un petit tuto pour utiliser différentes versions de PHP en parallèle…

Avant tout, il faut savoir qu’il existe 2 façons “d’intégrer” PHP à Apache :

  • Module : PHP est chargé en tant que module Apache (comme le mod_rewrite par exemple).
    Le lien entre Apache et PHP se fait par un «handler». Sous Windows, ce handler est une DLL, et sur Unix c’est un fichier .so.
  • CGI (Common Gateway Interface) : il s’agit d’une interface permettant à Apache de déléguer la réponse à une requête HTTP à un programme, qui peut être un script PERL, un script Python, Ruby ou encore… PHP !
    Apache va en fait exécuter le programme PHP (ex: php.exe sous Windows) en lui passant tout un tas de paramètres relatifs à la requête HTTP.

Dans ce tutoriel, je vais vous présenter les 2 méthodes, qui vous allez le voir présentent chacune des avantages et des inconvénients. Lire la suite »



Tester un modem/routeur avant d’acheter

25 01 2012

Voilà une petite astuce qui pourrait vous aider à choisir si vous avez besoin d’un modem/routeur.

En effet, certains constructeurs (Netgear et Linksys, filiale de Cisco en l’occurence) proposent de tester l’interface d’administration de leur matériel en ligne (une demo en quelque sorte) :

L’intérêt c’est de se faire une idée des fonctionnalités et de l’ergonomie du modem/router, en explorant son panel d’admin (redirection de port, accès web, routage statique…).

Heureusement que Bewan ne propose pas ce service, sinon ils ne vendraient plus rien !

EDIT 01/02/2012 : ajout D-link.



IP change log (PHP/Python)

19 01 2012

Voilà une petite application que je viens de créer, qui permet d’enregistrer tous les changements d’IP publique d’un ordinateur.

Elle se compose de 2 parties :

  • Un script PHP (logip.php), qui sera hébergé sur un serveur (sur internet), dont le rôle est d’enregistrer l’adresse IP du client dans un fichier .log
  • Un script Python (notifier.py) que l’on va faire tourner en arrière-plan au démarrage de l’ordinateur (celui dont on veut enregistrer les changements d’IP), et qui va être chargé d’appeler le serveur à intervalle régulier (toutes les 1 minute par exemple), et ainsi lui indiquer un éventuel changement d’IP.

Ce script peut être très utile pour par exemple diagnostiquer un problème de déconnexion/reconnexion intempestive d’un modem ADSL (comme cette merde de Bewan 900), ou tout simplement pour pouvoir connaitre l’IP dynamique de votre ordinateur personnel depuis n’importe ou, simplement en accédant au fichier de log sur le serveur (quand DynDNS fait des siennes).

Techniquement, c’est le serveur qui détecte le changement d’IP, le client est très simple, il ne fait que des requêtes HTTP en boucle. La seule chose à faire est de lui indiquer l’URL où vous hébergez logip.php, avec également le paramètre “machine” qui sert à définir le nom du fichier log sur le serveur, et éventuellement changer la fréquence des notifications (toutes les 60 secondes par défaut) :

#coding: UTF-8
import urllib.request
import time

# Configuration
server_url = "http://votresite.com/IPChangeLog/logip.php?machine=ordinateur-maison"

while True :
    try:
        response = urllib.request.urlopen(server_url)
        response.close()
    except:
        pass
    time.sleep(60)

Note importante : ce script fonctionne en Python 3, je n’ai pas testé avec Python 2 et il se peut que ça ne fonctionne pas puisque Python 3 n’est pas rétro-compatible.

Ensuite il faut lancer le script notifier.py en arrière plan grâce à pythonw.exe (la différence entre python.exe et pythonw.exe est que le 2éme n’affiche pas d’invite de commande, il sert justement à exécuter des scripts python en arrière-plan), avec cette ligne de commande (modifiez juste les chemins en fonction de l’emplacement de python et du script notifier.py sur votre ordinateur) :

C:\Python\pythonw.exe "C:\Python\IPChangeLog\notifier.py"

Pour que ce script se lance automatiquement au démarrage de votre ordinateur, vous pouvez par exemple créer une tâche planifiée.

Et voilà, maintenant vous pouvez voir le journal de vos changements d’IP en consultant le fichier .log (ex: http://votresite.com/IPChangeLog/ipchange_ordinateur-maison.log).



Limiter la bande passante d’Apache

18 01 2012

Aujourd’hui les enfants, on va apprendre à limiter la bande passante d’un serveur Apache/PHP (comme EasyPHP ou WAMP) sur Windows, ça peut servir pour simuler des connexions bas débit lors de tests de site web.

Mes recherches m’ont conduit à 2 modules Apache qui permettent de limiter la bande passante : mod_bw (Bandwidth Mod) et mod_cband.

Comme toujours c’est un peu galère pour installer des modules Apache sur Windows, puisqu’il faut soit compiler soit même l’extension pour obtenir une .DLL, ou alors trouver une .DLL toute prête sur internet.

Ça tombe bien, j’ai pu trouver une DLL de mod_bw compatible avec ma version d’Apache (Apache/2.2.13) ici : mod_bw v0.91 – Windows Release for Apache 2.2.14.

Donc il suffit de la télécharger, de l’installer dans votre répertoire d’extensions Apache (ex: C:\EasyPHP5.2.10\apache\modules\mod_bw.dll), et de l’activer dans le fichier de configuration (httpd.conf) :

LoadModule bw_module modules/mod_bw.dll

Ensuite, reste plus qu’à configurer le module. Ce qui est génial avec ce mod, c’est qu’on peut limiter le débit uniquement pour un fichier particulier.
Voici un exemple qui limite le débit à 56 ko/s pour tous les fichiers nommés download.php (notez que le débit s’écrit en octets/s et pas en bit/s) :

BandwidthModule On
ForceBandWidthModule On
LargeFileLimit download.php 1 56000

Pour finir, voilà quelques liens intéressants sur le sujet :

Enjoy ^^ !