back

Bribes de Code/Code Snippets

 
Vous trouverez ici des morceaux de code ou de scripts en divers langages, certains utiles, d'autres amusants.

Si vous distribuez du code ou un programme les utilisant ou les adapant, citez-moi. Give credit!

Disclaimer: These programs come with ABSOLUTELY NO WARRANTY.


GifAn : un analyseur de fichier GIF

Voici le code source (libre) d'un programme C++ permettant d'analyser la structure d'un fichier GIF (en particulier les métadonnées).

GifAn: a file analyser

Here is the source code (free) of a C++ program that analyses the structure of a GIF file (in particular the metadata).

Une astuce pour Cygwin
(Windows XP et Vista)

Pour pourvoir ouvrir un shell cygwin dans un dossier par un click droit. On trouve sur Internet comment ajouter la fonction d'ouverture d'une console de type Windows Command Prompt par un click droit sur un dossier. Mais comment faire pareil pour Cygwin ?

Créez d'abord un fichier dont le contenu est le suivant.
#! /bin/sh
VAR=$(cygpath "$1")
cd "$VAR"
bash
Les retours à la ligne de ce fichier doivent être du type LF et non CR-LF. Ceci peut être obtenu de diverses façons :
  • en utilisant un éditeur permettant de choisir cette option (PSPad, Emacs, vi, etc...)
  • en créant et éditant le fichier via un shell Cygwin (vi, nano, emacs, etc... Aucun de ces éditeurs n'est installé par défaut, il faut relancer le programme setup.exe de Cygwin pour les ajouter).
  • en l'éditant avec Wordpad ou notepad puis en le convertissant avec la commande dos2unix sous un shell Cygwin.
Disons que vous avez appelé ce fichier CygInitor et l'avez placé dans un dossier nommée C:\Batch.
Editez maintenant le registre de Windows avec le programme regedit. Attention: faites une copie de sauvegarde du registre avec le programme regedit avant d'effectuer les modifications ci-dessous. Maintenant, dans
HKEY_CLASSES_ROOT\Directory\shell
ajoutez une Clé vide que vous nommerez par exemple "Ouvrir un shell Cygwin ici". Dans cette clé ajoutez une clé nommée "command" de valeur
cmd.exe /s /c "C:\cygwin\bin\bash --login -i C:\Batch\CygInitor "%1""
Si vous êtes sous Vista, vous pouvez également ajouter ceci : dans
HKEY_CLASSES_ROOT\Directory\Background\shell
Ajoutez une clé vide nommée "Ouvrir un shell Cygwin ici". Dans cette clé ajoutez une clé nommée "command" de valeur
cmd.exe /s /c "C:\cygwin\bin\bash --login -i C:\Batch\CygInitor "%V""
Notez que %1 est devenu %V. Et voilà... Maintenant un click-droit sur un dossier vous offre la possibilité d'ouvrir un Shell Cygwin qui démarrera dans le dit dossier. Et sous Vista, un click-droit sur l'arrière plan dans une fenêtre de l'explorateur Windows donnera le même résultat.

MySilder : un slider Java maison

Un slider pour Java. Compatible Java 1.1 (il ne nécessite pas l'utilisation des classes Swing). Attention, il ne passe pas par la machinerie Event d'AWT  son inclusion dans un programme est cependant tout à fait analogue à celle d'un composant AWT usuel. Résultat :

Java caché: cliquez dans cette zone pour le décacher

MyMolette : une molette Java maison

Une molette pour Java. Mêmes remarques que pour MySlider. Résultat:

Java caché: cliquez dans cette zone pour le décacher

Quel âge ai-je ? (server side)

(très pratique si, comme moi, vous êtes incapables de vous souvenir de votre âge : maintenant à chaque fois qu'on me demande le mien, il me suffit de me connecter à cette page web)
<?php
  
$birthDay=7;
$birthMonth=6;
$birthYear=1975;
  
$date=getdate();
$age=$date['year']-$birthYear;
if($date['mon']<$birthMonth ||
  ($date['mon']==$birthMonth && $date['mday']<$birthDay)) 
{
  $age-=1;
}
  
echo "Arnaud, tu as $age an".($age>1 ? "s" : "");  
?>
Résultat :
Arnaud, tu as 42 ans

Quel âge ai-je ? (client side)

Pour que ce script fonctionne, il faut que l'heure soit bien réglée sur l'ordinateur client, et que je Javascript soit activé dans son navigateur.
<script type="text/javascript">

naissance=[7,6,1975];
date=new Date();
y=date.getFullYear();
m=date.getMonth()+1;
d=date.getDate();
age=(y-naissance[2]);
if((m < naissance[1]) || (m==naissance[1] && d<naissance[0])) 
  age=age-1;

document.write("Arnaud, tu as "+age+" an"+(age>1 ? "s" : ""));

</script>
Résultat :

Credits: popups done with overlib.