Pierre Fritsch | Blog

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

mercredi, mars 9 2011

Solveur de Tetris Attack

Petit exercice de développement piloté par les tests pour écrire un solveur du mode puzzle du jeu Super Nintendo "Tetris Attack".

Lire la suite...

dimanche, octobre 10 2010

Renommer des photo en masse

Comment faire quand j'ai deux cartes mémoires l'une après l'autre dans mon appareil photo et que je veux des noms de fichiers qui se suivent ?

# There has to be at least one file in the current folder responding to the given pattern

# start of variables
prefix=DSC_ # file name prefix
extension=NEF # file name suffix
digits=4 # number of digits
increase=257 # will be added to index
# end of variables

lengthofprefix=${#prefix}
for file in $prefix*.$extension;  # DSC_0047.JPG 
do 
   index=${file:lengthofprefix:digits}; # 0047 
   index=`echo $index|sed 's/^0*//'`; # 47 - so that not interpreted as hex
   newindex=$((index+increase)); # 333
   newindex=`printf "%0${digits}d" $newindex`; # 0333
   newfile=$prefix$newindex.$extension; # DSC_0333.JPG
   echo renaming $file to $newfile; # renaming DSC_0047.JPG to DSC_0333.JPG
   mv $file $newfile
done

Keywords : batch renaming image files

dimanche, décembre 27 2009

(Re)passer de Mac OS X 10.5 Leopard à Mac OS X 10.4 Tiger

Aux possesseurs de processeurs PowerPC G4 qui sont passés à Mac OS X 10.5 Leopard, et qui préféraient la performance de Mac OS X 10.4 Tiger sur cette architecture : Il est possible de faire marche arrière.

Quelques remarques d'ordre général concernant cette opération.

Time Machine

Il vaut mieux ne pas se fier aux sauvegardes automatiques faites par Time Machine (Backups.backupdb), celles-ci n'étant pas lisibles depuis Tiger.

Une solution pour garder une trace du système consiste à faire une image disque avec l'utilitaire de disque, en ayant redémarré sur le DVD d'installation de Mac OS.

Carnet d'adresses

Les fichiers d'export du carnet d'adresses créés sous Leopard sont lisibles sous Tiger, néanmoins seuls les contacts créés sous Tiger avant la migration à Leopard sont importés correctement. Ceux créés sous Leopard sont perdus.

La solution :

  1. sous Leopard, exporter la fiche vCard du groupe "Tous les contacts", par exemple en glissant-déposant ce groupe dans un dossier ;
  2. sous Tiger, vider le carnet d'adresse au préalable pour éviter les doublons ;
  3. sous Tiger, importer le groupe de contacts dans le carnet d'adresses avec l'encodage UTF-8.
Disque dur externe

Il est possible de démarrer un ordinateur portable Apple à partir d'un disque dur externe. Sur les ordinateurs à processeur PowerPC, seuls les disques durs FireWire sont supportés. Il peut être possible de démarrer un G4 à partir d'un disque dur USB, mais uniquement sur certains matériels. Un PowerBook G4 12" 1.5 GHz, par exemple, ne le permet pas.

jeudi, décembre 17 2009

Utiliser StreamTokenizer pour éliminer des commentaires dans du code Java

Comment utiliser la classe StreamTokenizer pour comprendre la syntaxe d'un string contenant du code écrit dans un langage de programmation comme Java et se débarrasser des commentaires qui y sont contenus.

import java.io.IOException;
import java.io.StreamTokenizer;
import java.io.StringReader;
public class TestStreamTokenizer {
  public static void main(String args) throws IOException {
      String input = "  myMethod(/* 'commented' out */); // Comment on first line" + "\r\n";
input += "  myOtherMethod(\"a string with plenty of space, \\\"a protected string\\\" , the \\\\ symbol and // in it\");"
+ "\r\n";
input += "// A pure comment line" + "\r\n";
input += "myLastMethod(1 + 2);  " + "\r\n";
input += "/* a multi-line" + "\r\n";
input += " * comment" + "\r\n";
input += " */  " + "\r\n";
input += "var myVar = \'myValue\';" + "\r\n";
StringReader stringReader = new StringReader(input);
      StreamTokenizer streamTokenizer = new StreamTokenizer(stringReader);
streamTokenizer.resetSyntax();
streamTokenizer.whitespaceChars(0, ' ' /* 10 */);
streamTokenizer.wordChars('!' /* 33 */, '!' /* 33 */);
streamTokenizer.quoteChar('"' /* 34 */);
streamTokenizer.wordChars('#' /* 35 */, '&'/* 38 */);
streamTokenizer.quoteChar(''' /* 39 */);
streamTokenizer.wordChars('(' /* 40 */, '.'/* 46 */);
streamTokenizer.commentChar('/'/* 47 */);
streamTokenizer.wordChars('0' /* 48 */, '9' /* 57 */);
streamTokenizer.wordChars(':' /* 58 */, '@'/* 64 */);
streamTokenizer.wordChars('A' /* 65 */, 'Z' /* 90 */);
streamTokenizer.wordChars('[' /* 91 */, '`' /* 96 */);
streamTokenizer.wordChars('a' /* 97 */, 'z' /* 122 */);
streamTokenizer.wordChars('{' /* 123 */, '~' /* 126 */);
streamTokenizer.wordChars(128 + 32, 255);
streamTokenizer.slashSlashComments(true);
streamTokenizer.slashStarComments(true);
      int type;
String token = null;
while ((type = streamTokenizer.nextToken()) != StreamTokenizer.TT_EOF) {
token = streamTokenizer.sval;
          switch (type) {
case StreamTokenizer.TT_WORD:
                  System.out.print(token + " ");
break;
              case ''':
System.out.print(''' + token + ''');
break;
              case '\"':
System.out.print('\"' + token + '\"');
break;
              default:
break;
}
      }
      System.out.println();
}
}

mercredi, septembre 9 2009

Script de backup de base de données MySQL via phpmyadmin

But

Avoir un script exécutable en ligne de commande permettant la sauvegarde d'une base de données distante, à laquelle on n'a accès qu'indirectement par une interface PHP.

Stratégie

Utiliser wget pour reproduire le comportement qu'aurait un utilisateur utilisant un browser pour accéder à l'interface phpMyAdmin sur la machine distante :

  1. Log in sur la page d'accueil index.php et récupération du cookie d'authentification et du token
  2. Ré-utilisation de ce cookie et du token pour les accès à phpMyAdmin suivants
  3. Obtention du contenu de la page db_export.php, qui liste les tables présentes sur le serveur
  4. Appel du script export.php pour obtenir une version compressée des instructions SQL nécessaires pour restaurer la base et toutes ses tables avec leur contenu
  5. Sauvegarde du fichier avec la date du jour
Prérequis

phpMyAdmin est installé sur le serveur

Téléchargement

save_sql_phpmyadmin_v1 Testé avec phpMyAdmin 3.2.1 réglé pour une authentification par cookie où une seule base de données est accessible à l'utilisateur connecté.

Référence

FAQ de phpMyAdmin : How can I backup my database or table?

Mots-clés

sauvegarde, backup, base de données, database, remote, à distance, mysql, sql, phpmyadmin, cookie, auth type, bash, sh, linux, ligne de commande, command line, terminal, wget, http request, automatique, automated, automation, cron, php, restricted access, GET, POST, parameter, URL, hyperlien, hyperlink, token, export.php, gzip, compression

mardi, septembre 23 2008

Servir des fichiers KML sur un serveur Apache

Vous venez de vérifier un fichier KML sur un serveur web avec Feed Validator et celui-ci vous indique que le serveur retourne le MIME-Type "text/plain" pour le fichier concerné.

Lire la suite...

mercredi, septembre 3 2008

PDF Version of the Djangobook

I compiled a PDF file of the Djangobook. The current version 1.0 seems to have been last changed on Dec 12, 2007.

The file is available here for downloading: djangobook_en_1_0.pdf

lundi, septembre 1 2008

Redimensionner un lot d'images avec Windows et ImageMagick

Comment redimensionner (ou appliquer un traitement d'image en masse à) un lot d'images en ligne de commande sous Windows ?

Lire la suite...

dimanche, août 3 2008

Afficher ou cacher les fichier masqués sous Mac OS X

Comment faire pour afficher les fichiers dont le nom commence par un point dans le Finder ? (Vous voulez par exemple éditer un fichier .htaccess et vous ne le trouvez pas graphiquement)

Lire la suite...

samedi, août 2 2008

Convertir une vidéo pour lecture sur un téléphone portable Sony Ericsson W810i

Quel format vidéo utiliser pour une lecture sur un téléphone portable Sony Ericsson W810i ?

Lire la suite...

samedi, mai 10 2008

Comparer 2 tableaux avec Excel

Vous voulez comparer 2 tableaux dans Excel pour détecter les lignes qui ont été modifiées, ajoutées, ou supprimées.

Lire la suite...

jeudi, avril 3 2008

Résoudre un labyrinthe avec Photoshop

=>

Tout le truc consiste à comprendre que le chemin que l'on trace à la fin sépare l'espace des murs en deux sous-ensembles.

Lire la suite...

mercredi, mars 26 2008

Bash scripting : for loop and left padding with zeros

for ((i=0;i<=10;i+=1))
do
printf "%03d\n" $i
done

Output:

000
001
002
003
004
005
006
007
008
009
010

vendredi, février 15 2008

Installer CakePHP sur un hébergement free.fr

Je me suis basé sur les instructions de Tony (groupe de discussion Cakephp-fra) pour créer un patch de la dernière version de CakePHP qui fonctionne sur votre hébergement free.fr.

Pour l'installer :

  1. Téléchargez la dernière version sur http://www.cakephp.org/
  2. Téléchargez mon patch dans le même dossier : cake_1.1.19.6305.free.patch
  3. Dans le dossier, exécutez les deux lignes de commande suivantes :
tar xvjf cake_1.1.19.6305.tar.bz2
patch -p 0 < cake_1.1.19.6305.free.patch

Voilà, il ne reste plus qu'à construire et uploader votre application sur ftpperso.free.fr.

Pour votre premier scaffolding, vous pouvez aller voir mon post du 1er mai 2007.

Créer et appliquer un patch

Contexte : vous voulez transmettre à d'autres personnes les modifications que vous effectuez sur un dossier.

Lire la suite...

dimanche, novembre 18 2007

Transformer un lot d'adresses en fichier KML

Comment afficher un lot d'adresses sur une carte ?

Lire la suite...

Vérifier la syntaxe d'un fichier KML

Vous souhaitez mettre en ligne un fichier KML et vous aimeriez vérifier qu'il est conforme à la syntaxe Google Maps.

Lire la suite...

vendredi, novembre 16 2007

Comment extraire l'hyperlien contenu dans une cellule Excel

Vos cellules Excel sont cliquables et contiennent un lien vers une page web, et vous aimeriez afficher tous ces liens qui n'apparaissent que lorsque vous passez la souris sur les cellules concernées.

Lire la suite...

mardi, novembre 6 2007

Comparer deux dossiers récursivement

Vous venez de copier un dossier avec énormément de fichiers, sous-dossiers etc. vers un autre emplacement, et vous aimeriez vous assurer que la copie est identique à l'original, sans comparer vous-même les fichiers un à un.

Lire la suite...

mardi, octobre 23 2007

Redimensionner un lot d'images avec ImageMagick sous Windows

How to use the convert command of the ImageMagick package for batch processing in the windows prompt?

Following solution works under Windows XP, in the cmd window

FOR %f IN (*JPG) DO convert -resize 2100 %f %f

- page 1 de 4