Update et sélect imbriqués

MySQL Offre une syntaxe particulière pour faire un UPDATEde champs d’une table sur la base des champs d’une autre table. Il s’agit de la suivante :

UPDATE `table1` JOIN `table2` ON `table1`.`id` = `table2`.`id` SET `table1`.`champcible` = `table2`.`champorigine`

Reste à rajouter une condition WHERE, sauf opération particulière (copie de champs d’une table à l’autre, avec nombre d’enregistrements identiques).

Cloner simplement le contenu de votre répertoire web

Envie de gérer votre site web avec Git ? C’est plus simple et plus efficace qu’avec FTP.

Cette petite opération induit par contre d’avoir accès au serveur en tant qu’administrateur.

1. On crée le dépôt Git sur le serveur :

/var/www/site-web# git init

2. On clone, sur son poste de développement, le contenu existant :

/home/user/dev-web$ git clone ssh://root@162.36.2.45/var/www/site-web

La suite prochainement !

Interpréter les options d’une commande en Bash

Voici une petite trame de code permettant de construire un script Bash prenant des options de type –opt -R -odp.
Ici, il s’agit, selon les options –help, –recursif, –class, –jar, –war et/ou selon leurs versions courtes -hRcjw, de renseigner les variables $RECURSIF, $RES, $CLASS, $JAR et $WAR.

let "lim=$#+1"

while [ $OPTIND != $lim ]
do


    # Traite une suite d'option, modifie les valeurs des variables correspondant en conséquence.
    while getopts "hRcjw-:" OPTION
    do
        # Si l'option est "-" c'est que l'option est de type --opt. Du coup, on isole la partie de OPTARG qui correspond au nom de l'option, c'est à dire ce qui est avant le "=" éventuel (et évidemment les "--" qui ne sont pas dans OPTARG). On teste sur cette base.
        # Dans ${OPTARG%%=*} on supprime la plus grande occurence de "=*" à partir de la fin de OPTARG.
   
        [ $OPTION = "-" ] && case "${OPTARG%%=*}" in
   

            help) OPTION="h" ;;
            recursif) OPTION="R" ;;
            class) OPTION="c" ;;
            jar) OPTION="j" ;;
            war) OPTION="w" ;;
       
            # Pour récupérer un vrai OPTARG au cas échéant :
            # OPTARG="${OPTARG#*=}"
            # On supprime la plus petite occurence de "*=" à partir du début de OPTARG.
            # Pour résumer : avec la forme ${chaineXsous-chaine}
            # X peut être de quatre formes :
            # "%" supprime la plus petite occurence de sous-chaine à partir de la fin de chaine.
            # "%%" plus grande occurence à partir de la fin.
            # "#"  plus petite occurence à partir du début.
            # "##" plus grande occurence à partir du début.
        esac
       
        case $OPTION in
            h)
                usage
                exit 1
                ;;
            R)
                RECURSIF=true
                RES=$RES" récursif"
                ;;
            c)
                CLASS=true
                RES=$RES" class"
                ;;
            j)
                JAR=true
                RES=$RES" jar"
                ;;
            w)
                WAR=true
                RES=$RES" war"
                ;;
            ?)
                usage
                exit
                ;;
        esac   
    done
   
    let "OPTIND++"

done

Installation de Zope sous Fedora 16

Zope est un serveur d’applications web écrit en python, sous licence Zope Public License (ZPL).

Zope n’a été dans les paquets de Fedora que dans les premières versions de la distribution, la raison invoquée étant l’obsolescence de la version de python utilisée (2.4.3).

Il est tout de même possible d’installer Zope à partir des sources et faire coexister la version de python requise avec celle déjà installée sur l’OS.

On commencera par installer python 2.4.3 :

wget http://www.python.org/ftp/python/2.4.3/Python-2.4.3.tgz
tar zxvf Python-2.4.3.tgz
cd Python-2.4.3/
./configure
make
make install

On installe ensuite la dernière version de Zope (3.4.0) :

wget http://download.zope.org/zope3.4/3.4.0/Zope-3.4.0.tgz
tar zxvf Zope-3.4.0.tgz
cd Zope-3.4.0/
./configure
make
make install

La dernière commande a dû nous indiquer le répertoire d’installation de Zope (si on ne l’a pas précisé dans les options de ./ configure)

/usr/local/bin/python install.py -q install --skip-build --home "/usr/local/Zope-3.4.0"

On lance donc

/usr/local/Zope-3.4.0/bin/mkzopeinstance

L’utilitaire nous demande quelques renseignements : le répertoire d’installation de l’instance de Zope, le nom d’utilisateur pour l’administrateur initial, le mode de stockage du mot de passe (texte, MD5 ou SHA1) et enfin le mot de passe.

On peut dès lors accéder à l’interface d’administration web du serveur : http://localhost:8080/manager

À suivre…

À la découverte du Framework Play!

Je me lance à la découverte du Framework Java/Scala orienté web Play! (sous licence Apache 2). La documentation sur le site du projet est très didactique (se référer régulièrement à la javadoc est évidemment une bonne pratique qui permet de se faire une idée plus précise de l’architecture du logiciel).

Il est proposé un tutoriel mettant en œuvre pas mal de fonctionnalités du framework dans une toute petite appli rapide à réaliser (on ne perd pas de temps).

Je posterai sans doute ici d’autres articles à ce sujet, afin de partager mon expérience.

À noter : après la création d’un projet (avec play new nomAppli) et un cd /chemin/monAppli, mes tentatives d’ouvrir la console avec play se soldaient par :

Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

La solution, trouvée là est d’ajouter les options appropriées à Java, à savoir quelque chose de ce goût là :

_JAVA_OPTIONS="-Xms128m -Xmx512m" play

(cf man java).