Play! Framework launch script with Plumbr integrated

Hey folks!

I discovered this new project, Plumbr, that helps you track your memory leaks.

The project seems great and very useful, so I decided to give it a try.

And since I'm using Play! Framework mainly for my java project, I wanted a way to simply launch Play! with Plumbr.

At first, Play! is very easy to integrate java options, just take a look at that run command : (supposing your play env is in /opt/play/{version}/ and plubmr at /opt/plubmr/beta/

/opt/play/1.2.4/play run /path/to/play/app/ -agentpath:/opt/plumbr/beta/linux/64/libplumbr.so -javaagent:/opt/plumbr/beta/plumbr.jar -noverify

So I did a little shell script that will perform this command for a better simplicity, here it is :

 

#!/bin/bash
#
# Shell script (BASH) used to launch a PLAY! Framework project with Plumbr
#
# For more information, go to :
# http://www.playframework.org/
# http://www.plumbr.eu/

#
# Installation
# Customize the script according to your need. You need to setup :
# - The path to PLAY! Framework service
# - The path to Plumbr
# --------------------------------------------------------------------
# This is a free shell script under GNU GPL version 3.0 or above
# Copyright (C) 2005 ReFlectiv project.
# Feedback/comment/suggestions : http://www.reflectiv.net/
# -------------------------------------------------------------------------

PLAY="/opt/play/1.2.4/play"
PLUMBR_PATH="/opt/plumbr/"

# -------------------------------------------------------------------------
# Now, don't touch anything, it's for your safety! :)
# -------------------------------------------------------------------------

if [ $1 ==  "" ]; then
        $1 = "."
fi

ARCH_BIT="32"
if [ `uname -m` == "x86_64" ]; then
        ARCH_BIT="64"
fi

ARCH_OS="linux"
if [ `uname -s` == "Darwin" ]; then
        ARCH_OS="mac"
fi

$PLAY run $1 -agentpath:$PLUMBR_PATH/$ARCH_OS/$ARCH_BIT/libplumbr.so -javaagent:$PLUMBR_PATH/plumbr.jar -noverify

Hope this helps!

If you find bugs, don't hesitate to comment them, I'll fix it!

Filed under  //  Play!Framework   Plumbr   Scripts  
Posted by Cyril Nicodème 

Critiquer une page web en moins de 30 secondes

L'article du jour nous viens du blog de Zurb, apportant 5 techniques permettant de critiquer une page web rapidement, simplement, et sans outils.

Les 5 techniques proposées sont :

  1. Analysez ou vos yeux vont au chargement de la page.
  2. Plissez les yeux, afin de voir ce qui ressort le plus de votre page.
  3. Scannez la page diagonalement, partant d'en haut à gauche vers en bas à droite. (bien sûr, l'inverse s'applique dans certains pays).
  4. L'astuce des "5 trucs" : regardez la page 5 secondes, puis fermez les yeux et indiquez les 5 poins qui vous ont le plus marqué.
  5. Trouvez les intersections, les endroits qui attirent vos yeux.

Pour le 3ième point, je ne pourrai vous conseiller que le très pratique outil proposé par google : BrowserSize

Filed under  //  Advices   Development   Scripts   browsersize   critique   scan   web  
Posted by Cyril Nicodème 

Amélioration du script d'ajout d'image sur Black-Frames

Le script cron que l'on utilisais pour mettre à jour les images sur Black-Frames souffrait d'un bug gênant.

En effet, lorsqu'il n'y avait plus d'images à afficher, le script envoyait quand même un tweet vide et moche, du genre :

http://black-frames.net/i- - :

C'est maintenant chose corrigée. Lorsqu'il n'y a plus d'images dans le système de queue, le script prends une ancienne image affichée et la remet au goût du jour, ce afin de toujours proposer des images.

Certains vont penser que du coup, le site semblera un peu répétitif. Nous avons une base de plus de 1500 images. Si on part du principe que l'on affiche 5 images par jours, vous verrez la même image au bout de 300 jours.

Mais cela ne veux pas dire que nous n'ajouterons plus de nouvelles images ! Nous avons encore de côté 300 images à ajouter (il faut juste trouver le temps de le faire) et nous récupérons régulièrement de nouvelles images !

Ce script nous permettra juste d'effectuer une mise à jour constante du site afin de vous proposer des images régulièrement !

Filed under  //  Development   Php   Projects   Scripts   black-frames   bug   cron   tweet   twitter  
Posted by Cyril Nicodème 

Script de post installation de Linux Mint

Histoire de changer de distribution, je suis passé de Fedora à Linux Mint, une dérivée d'Ubuntu (qui est une dérivé de Debian ...).

Pourquoi Mint ? Pour son design, que je trouve BEAUCOUP plus beau que le brun d'Ubuntu (et aussi parce que tout le monde est sous Ubuntu mais schuuut ;)).

Du coup et à mon habitude, j'ai fait un petit script post installation de Linux Mint, qui va mettre à jour le système, ajouter les dépôts qui me manquent, supprimer les éléments qui ne m'intéressent pas et installer ceux que je veux.
Il va ensuite récupérer les applications qui me manquent en svn et les mettre dans opt tout en me créant un raccourcis dans le menu.

Attention ! Bien que ce script simplifie la vie, il est fait uniquement pour Linux Mint 8 (enfin pour Ubuntu Karmic), et ce à cause des dépôts.
Bien sûr, il suffira de modifier les informations sur les dépôts et ce sera bon.

Enjoy !

#!/bin/bash

function userIsRoot () {
        if [ $UID -ne 0 ]
        then
                echo -e "\033[31mVous devez être root pour pouvoir continuer l'installation.\033[00m"
                echo "Le fait d'être root va permettre à l'installeur d'ajouter des dépots,"
                echo "d'installer des logiciels, chose impossible pour un utilisateur standard"
                echo ""
                exit 0
        fi
}

clear
echo "============================================================="
echo "||       Linux Mint Finger in the Nose :)                  ||"
echo "============================================================="
echo ""
echo -e "\033[32mBienvenue\033[00m"
userIsRoot
echo ""
echo "Ce script va"
echo "     * Supprimer divers applications pré-installées : Giver, Transmission, OpenOffice-Base, OpenOffice-Math, Pidgin, MPlayer et AptonCD"
echo "     * Mettre à jour le système"
echo "     * Ajouter les dépôts VirtualBox et DropBox"
echo "     * Installer les applications suivantes : Binutils, Unace, Unzip, Unrar, Plugins Gedit, VLC, Totem, Des Codecs vidéos manquant, Filezilla, Deluge, Xchat, GSynaptics, Vim, Brasero, Geany, un serveur LAMP et Subversion"
echo "     * Récuperer Emesene des dépots SVN et le placer dans les raccourcis"
echo ""
echo ""
echo -e "\033[31m\033[01m                           Linux Mint 8 - Helena\033[00m"
echo ""
echo ""
echo -e "\033[31mJe décline toute responsabilité en cas de problèmes, de plantage et autre\033[00m"
echo -e "\033[31m(au cas ou ;))\033[00m"
echo ""
read -p "Appuyez sur Entrée pour continuer ..."

echo -e "\033[32mSuppression des paquets inutiles.\033[00m"
echo ""
apt-get --yes remove giver transmission-gtk transmission-common openoffice.org-base openoffice.org-math pidgin mplayer gnome-mplayer aptoncd

echo -e "\033[32mMise à jour du système.\033[00m"
echo ""
apt-get --yes update && apt-get --yes upgrade && apt-get --yes dist-upgrade
echo ""
echo ""
echo -e "\033[32mAjout des dépots VirtualBox et DropBox.\033[00m"
echo ""

echo "" >> /etc/apt/sources.list
wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | sudo apt-key add -
echo "# Dépôts VirtualBox" >> /etc/apt/sources.list
echo "deb http://download.virtualbox.org/virtualbox/debian karmic non-free" >> /etc/apt/sources.list

gpg --keyserver pgp.mit.edu --recv-keys 3565780E
echo "" >> /etc/apt/sources.list
echo "# Dépôts DropBox" >> /etc/apt/sources.list
echo "deb http://linux.dropbox.com/ubuntu karmic main" >> /etc/apt/sources.list
echo "deb-src http://linux.dropbox.com/ubuntu karmic main" >> /etc/apt/sources.list

echo -e "\033[32mRemise à jour.\033[00m"
echo ""
apt-get --yes update

echo -e "\033[32mInstallation des différents logiciels.\033[00m"
echo ""
apt-get --yes install binutils unace unzip unrar gedit-plugins vlc totem-xine filezilla deluge xchat-gnome gsynaptics vim brasero geany apache2 libapache2-mod-gnutls mysql-server php5 php5-cli php5-mysql phpmyadmin php5-gd php5-imap libapache2-mod-php5 php5-mcrypt php5-mhash php-pear php5-gd libapache2-mod-auth-mysql subversion virtualbox mint-dropbox

echo -e "\033[32mRécupération d'Emesene via les dépôts SVN :\033[00m"
echo ""
svn co https://emesene.svn.sourceforge.net/svnroot/emesene/trunk/emesene /opt/emesene

echo -e "\033[32m... et installation dans le menu :\033[00m"
echo ""
cd /usr/share/applications/
echo "[Desktop Entry]" > emesene.desktop
echo "Version=1.0" >> emesene.desktop
echo "Name=Emesene" >> emesene.desktop
echo "Comment=Microsoft Live Client" >> emesene.desktop
echo "GenericName=IM Client" >> emesene.desktop
echo "Exec=/opt/emesene/emesene" >> emesene.desktop
echo "Terminal=false" >> emesene.desktop
echo "X-MultipleArgs=false" >> emesene.desktop
echo "Type=Application" >> emesene.desktop
echo "Icon=/opt/emesene/misc/emesene.png" >> emesene.desktop
echo "Categories=Application;Network;" >> emesene.desktop

echo -e "\033[32mMerci d'utiliser Linux :)\033[00m"

exit 0;
# finished :)

Filed under  //  Development   Scripts   Ubuntu   Unix/Linux   apt-get   helena   install   linux   mint  
Posted by Cyril Nicodème 

Script Shell de backup de base de données via FTP

Après avoir modifié mon script de backup de dossier pour y intégrer le transfert via FTP, j'ai aussi entrepris de modifier le script de backup de base de donnée pour faire de même.

Là aussi, pas de grandes difficultés, le code ayant été déjà en partie réalisé, j'ai juste implémenté la partie transfert via FTP. J'en ai aussi profité pour optimiser le code afin de proposer quelque chose de plus fonctionnel. Vous m'en direz des nouvelles :)

Comme les autres scripts (backups de dossier/base de données), mettez ceci en Cron pour être exécuté quotidiennement, et modifiez les paramètres pour vos besoins, et tout devrait fonctionner (dites le sinon ;)).

Voici le code :

#!/bin/bash
#
# Shell script (BASH) used in cron to made a backup of all the MySQL databases

# In order to run this script, you must have following tools installed:
# - /usr/bin/mysql
# - /usr/bin/mysqlcheck
# - /usr/bin/mysqldump
# - /usr/bin/gpg
# - ncftp
#
# And we will use theses :
# - tar
# - rm
# - chown
# - chmod
#
#
# Installation
# Customize the script according to your need. You need to setup :
# - The MySQL credentials
# - The FTP credentials
# - The directory where to put the backups in the distant ftp
# - A GPG passphrase
#
# - The Email to send reports when error occurs
# - The file where to log the messages                         (default /var/log/backup.log)
# - The number of days the backups are stored (default 5)
#
# --------------------------------------------------------------------
# This is a free shell script under GNU GPL version 3.0 or above
# Copyright (C) 2005 ReFlectiv project.
# Feedback/comment/suggestions : http://www.reflectiv.net/
# -------------------------------------------------------------------------

# User & Password for the MySQL user used for the backup
DB_USER="root"; # Could be another user with good rights
DB_PASS="root";

# FTP Credentials
FTP_SERVER="ftp.serveur.tld"
FTP_USER="user"
FTP_PASS="password"

# Backup directory on the FTP :
FTP_DIR="/backups/database"

# The password for the archive
GPG_PASS="my_password";

# Email to send when error occurs
USER_EMAIL="email"

# File name where to log the messages
LOG_FILE="/var/log/backup.log";

# Number of days the archives are keeped
KEEPING_DAYS=5;


# Only change if your UNIX stores bin in diffrent location
MYSQL="/usr/bin/mysql";
MYSQLCHECK="/usr/bin/mysqlcheck";
MYSQLDUMP="/usr/bin/mysqldump";
GPG="/usr/bin/gpg";
NCFTP="/usr/bin/ncftp"

#######################################################################
# Do not change anything below
#######################################################################

# We mades some vars
DATE="$(date +"%Y-%m-%d")";
CURRENT_DATE=`date +"%d/%m/%Y - %H:%I:%S"`;
ARCHIVE="mysql_backup_$(date +"%Y_%m_%d").tbz";
GPG_ARCHIVE=$ARCHIVE".gpg";
OLD_ARCHIVE="mysql_backup_"`date --date $KEEPING_DAYS' days ago' "+%Y_%m_%d"`".tbz.gpg";

# Preparing the field :
mkdir -p /tmp/mysql_backup/
[ $? -eq 0 ] || exit 1;

cd /tmp/mysql_backup/
[ $? -eq 0 ] || exit 1;

# Adding new clear entry to the log file
echo "" >> $LOG_FILE."tmp";
echo "----------------------------------------------------------------------------------------------------" >> $LOG_FILE."tmp";
echo "" >> $LOG_FILE."tmp";

# Function called to log info into the file
function log {
    echo "["$CURRENT_DATE"] - "$1 >> $LOG_FILE".tmp";

    if [ ! $2 == "" ]; then
                mail -s "[$(hostname)] - Remote backup error" $USER_EMAIL > $LOG_FILE;
                cd /
                rm -rf "/tmp/mysql_backup";
                rm $LOG_FILE".tmp";
        exit 1;
    fi
}

log "MySQL Complete DUMP started";

# Preliminary tests
[ -x $MYSQL ] || log "mysql not found" 1;
[ -x $MYSQLCHECK ] || log "mysqlcheck not found" 1;
[ -x $MYSQLDUMP ] || log "mysqldump not found" 1;
[ -x $GPG ] || log "gpg not found" 1;
[ -x $NCFTP ] || log "ncftp not found" 1;

# We create te temporary directory for the dump
if [ ! -d $DATE ]; then
    mkdir -p $DATE"/";
    # If an error occured ...
        [ $? -eq 0 ] || log "An error occured with the command mkdir" 1;

    chmod 500 $DATE;
    # If an error occured ...
        [ $? -eq 0 ] || log "An error occured with the command chmod" 1;
fi

# We lists the bases
DATABASES="$(mysql -u $DB_USER -p$DB_PASS -Bse 'show databases;')";
# If an error occured ...
[ $? -eq 0 ] || log "An error occured while retrieving the list of all the databases" 1;

# For each Databases
for BASE in $DATABASES
do
        # We analyse each bases
        $MYSQLCHECK -u $DB_USER -p$DB_PASS -c -a $BASE > /dev/null
        # If an error occured ...
        [ $? -eq 0 ] || log "An error occured while checking the database "$BASE 1;

        log "Dump of the database '"$BASE"'";

        # And we saving them in a file
        $MYSQLDUMP -u $DB_USER -p$DB_PASS --add-drop-database  --add-drop-table --complete-insert --routines --triggers --allow-keywords --max_allowed_packet=50M --force $BASE -R > $DATE"/"$BASE".sql";

        # An error occured while dumping the database
        [ $? -eq 0 ] || log "An error occured while dumping the database '"$BASE"'" 1;
done

# We made the archive
tar -cjf $ARCHIVE $DATE"/";
# If an error occured ...
[ $? -eq 0 ] || log "An error occured with the command tar" 1;

# We encrypt the archive
$GPG --yes -c --passphrase $GPG_PASS --s2k-cipher-algo RIJNDAEL256 $ARCHIVE;
# If an error occured ...
[ $? -eq 0 ] || log "An error occured with the command gpg" 1;

# We delete the archive
rm -f $ARCHIVE;
# If an error occured ...
[ $? -eq 0 ] || log "An error occured with the command rm" 1;

# We modify the rights for the file
chmod 400 $GPG_ARCHIVE;
# If an error occured ...
[ $? -eq 0 ] || log "An error occured with the command chmod" 1;

# We modify the owner and group of the file
chown $UID $GPG_ARCHIVE;
# If an error occured ...
[ $? -eq 0 ] || log "An error occured with the command chown" 1;

log "Starting update to FTP server "$FTP_SERVER;

$NCFTP -u$FTP_USER -p$FTP_PASS $FTP_SERVER > $LOG_FILE;
rm $LOG_FILE".tmp";

exit 0;

Comme pour le script de backup de dossier via FTP, je n'ai pas trouvé comment faire taire ncftp. Donc si vous trouvez comment faire, je suis preneur !!

Toutes remarques seront les bienvenues :)

Filed under  //  Development   Scripts   Unix/Linux   backup   base   database   donnée   ftp   mysql   shell  
Posted by Cyril Nicodème 

Script Shell de backup de dossier via FTP

J'ai optimisé le précédent script de backup de dossier en y ajoutant une sauvegarde via FTP.

J'ai mis du temps à mettre en place cette technique car cela ne me convenait pas pour la simple et bonne raison que le transfert de l'archive générée peut-être longue (et lourde), surtout si on sauvegarde une quantité conséquente de fichiers !

Mais après en avoir parlé à Pierre, il s'est avéré que le temps de transfert, même pour de gros fichier, se faisait de manière très rapide, surtout entre serveurs.

Donc à défaut d'avoir les moyens de se payer deux serveurs et de les mettres en mirroring (ca ne saurait tarder) (les deux serveurs .... pas l'argent ...), je suis bien obligé d'utiliser une sauvegarde via FTP.

Voici donc le fameux script que j'utilise :

#!/bin/bash
#
# Shell script (BASH) used in cron to made a backup of the indicated directory

# In order to run this script, you must have following tools installed:
# - gpg
# - ncftp

# And we will use theses :
# - tar
# - rm
# - chown
# - chmod
#
#
# Installation
# Customize the script according to your need. You need to setup :
# - A list of folders, separated by space, and finished with the last /
# - A GPG passphrase
# - The file where to log the messages                         (default /var/log/backup.log)
# - The number of days the backups are stored         (default 5)
# - The FTP credentials
# - The Folders in that FTP
# - The Email to send reports when error occurs
#
# --------------------------------------------------------------------
# This is a free shell script under GNU GPL version 3.0 or above
# Copyright (C) 2005 ReFlectiv project.
# Feedback/comment/suggestions : http://www.reflectiv.net/
# -------------------------------------------------------------------------

# List of folders to save
LIST_F0LDERS="/etc/ /home/ /var/lib/mysql/";

# The password for the archive
GPG_PASS="my_passwd";

# File name where to log the messages
LOG_FILE="/var/log/backup.log";

# Number of days the archives are keeped
KEEPING_DAYS=5;

# FTP Credentials
FTP_SERVER="ftp.server.tld"
FTP_USER="user"
FTP_PASS="password"

# Backup directory on the FTP :
FTP_DIR="/backups/files"

# Email to send when error occurs
USER_EMAIL="email"

# Only change if your UNIX stores bin in diffrent location
GPG="/usr/bin/gpg";
NCFTP="/usr/bin/ncftp"

#######################################################################
# Do not change anything below
#######################################################################

# We mades some vars
UNIX_DATE=`date +"%Y_%m_%d"`;
CURRENT_DATE=`date +"%d/%m/%Y - %H:%M:%S"`;
TBZ_FILE="/tmp/"$UNIX_DATE".tbz";
GPG_FILE=$TBZ_FILE".gpg";

# Adding new clear entry to the log file
echo "" >> $LOG_FILE."tmp";
echo "----------------------------------------------------------------------------------------------------" >> $LOG_FILE."tmp";
echo "" >> $LOG_FILE."tmp";

# Function called to log info into the file
function log {
    echo "["$CURRENT_DATE"] - "$1 >> $LOG_FILE".tmp";

    if [ ! $2 == "" ]; then
                mail -s "[$(hostname)] - Remote backup error" $USER_EMAIL > $LOG_FILE;
                rm $LOG_FILE".tmp";
        exit 1;
    fi
}

log "Starting remote backup";

# Preliminary tests
[ -x $GPG ] || log "gpg not found" 1;
[ -x $NCFTP ] || log "ncftp not found" 1;

for FOLDER in $LIST_FOLDERS
do
        # We test if the original folder exists
    [ -d $FOLDER ] || log "The folder "$FOLDER" does not exists !" 1;
done

# We make the archive
tar -cjf $TBZ_FILE $LIST_F0LDERS
# If an error occured ...
[ $? -eq 0 ] || log "An error occured with the command tar" 1;

# We encrypt the archive
$GPG --yes -c --passphrase $GPG_PASS --s2k-cipher-algo RIJNDAEL256 $TBZ_FILE;
# If an error occured ...
[ $? -eq 0 ] || log "An error occured with the command gpg" 1;

# We delete the archive
rm $TBZ_FILE;
# If an error occured ...
[ $? -eq 0 ] || log "An error occured with the command rm" 1;

# We modify the rights for the file
chmod 400 $GPG_FILE;
# If an error occured ...
[ $? -eq 0 ] || log "An error occured with the command chmod" 1;

# We modify the owner and group of the file
chown $UID $GPG_FILE;
# If an error occured ...
[ $? -eq 0 ] || log "An error occured with the command chown" 1;


# We build the name of the archive from $KEEPING_DAYS days ago
OLD_ARCHIVE=`date --date $KEEPING_DAYS' days ago' "+%Y_%m_%d"`".tbz.gpg";

log "Starting update to FTP server "$FTP_SERVER;

$NCFTP -u$FTP_USER -p$FTP_PASS $FTP_SERVER > $LOG_FILE;
rm $LOG_FILE".tmp";

exit 0;

Le script effectue une sauvegarde des répertoires dans une archive tar.bz. Il chiffre ensuite cette archive avec gpg en utilisant un algorithme synchrone, puis envoie l'archive au serveur distant. Il prends aussi soin de bien supprimer les éléments qui ne sont plus utilisés afin d'éviter toute tentative de lecture (droits et accès aux fichier tbz et gpg puis suppression de tous les éléments).

Beaucoup de paramètres sont modifiable, comme vous pouvez le voir, et ce afin que vous puissiez l'adapter au mieux.

Le seul problème restant est que je n'ai pas réussi à faire taire ncftp ! Si quelqu'un connait une solution (l'argument -v quiet semble fonctionner pour les anciennes versions et n'y est vraisemblablement plus présent :s), je suis preneur !

Bon backup à vous :)

Filed under  //  Development   Scripts   Unix/Linux   backup   bash   dossier   fichier   file   folder   ftp   script   shell  
Posted by Cyril Nicodème 

Trouver une chaine dans des fichiers

Voici quelques commandes bash qui permettre de trouver une chaine contenue dans les fichiers d'un répertoire (utile par exemple pour trouver quels fichiers ont été infectés par le virus Gumblar :D)

La solution la plus simple est rgrep, mais qui n'est pas installé par défaut.

rgrep 'chaine' /arborescence

Sinon, vous avez la solution avec grep.
Cette méthode n'affiche que le fichier concerné

grep -lir "chaine" /arborescence

Cette méthode affiche le fichier concerné, la ligne ou la chaine à été trouvée, et la chaine trouvée :

grep -oHnr "chaine" /arborescence

Sinon, la méthode indiquée par Arkezis, toujours avec grep :

grep "chaine" **/*

Ou la solution avec find :

find /arborescence -name "*extension_du_fichier" -exec grep -l "chaine" {} \;

Enfin, limiter la recherche à certaines extensions :

for i in `find /arborescence -type d`; do grep "chaine" $i/*.{txt,log}; done 2>/dev/null

Parfois très utile ! :)

Filed under  //  Development   Scripts   Unix/Linux   bash   chaine   fichier   find   folder   recursive   repertoire   rgrep   récursif   shell   string   trouver  
Posted by Cyril Nicodème 

Astuce : Supprimer récursivement les répertoires .svn

Une petite commande bien utile donnée par CrainBrandy qui permet de supprimer récursivement tous les répertoires .svn en commençant par un dossier.

Je suis sûr que vous avez déjà été confrontés à ce genre de problème ! :p

rm -rf `find . -type d -name .svn`

ou vous pouvez aussi faire :

find . -type d -name .svn -exec rm -rf {} \;

à vous de choisir votre méthode préférée.

Filed under  //  Development   Scripts   Unix/Linux   bash   commande   dossier   linux   repertoire   récursif   récursivement   shell   supprimer   svn  
Posted by Cyril Nicodème 

[Astuce] - Formater une durée en heures, minutes, secondes

Voici un bout de code qui, j'en suis sûr, beaucoup d'entre vous ont déjà tenté d'implémenter dans leur projets, dans différentes façons.

En effet, qui n'a jamais voulu afficher une durée donnée en secondes, découpée en mois, jours, heures, minutes, secondes ?

La solution que je vous propose tiens en 2 lignes :

<?php
/**
 * Créer un objet DateTime avec le nombre de secondes donné en paramètres
 * Comme la date est de l'an 0, le temps retourné correspondra au temps 
 * en jours, heures, minutes, secondes du timestamp indiqué
 * 
 * @param Integer $iTime : Timestamp en seconde
 * @param String $sFormat (optionel) : Le format de la date à retourner
 * 
 * @return String : La date formatée
 */
function timetostr ($iTime, $sFormat = 'd\j H\hi\ms\s') {
    $oTime = new DateTime ('@'.$iTime);
    return $oTime->format ($sFormat);
}
?>

Attention ! Ne fonctionne que sous PHP 5.2 (utilisation de DateTime) !

Filed under  //  Development   Php   Scripts   date   day   duration   format   hour   minute   second   time   timestamp  
Posted by Cyril Nicodème 

Tutoriels sur l'installation d'un serveur Web : Mise en place

Bien, nous allons tout d'abord préparer l'environnement, histoire d'avoir quelque chose d'accueillant ! :)

Première chose, nous allons modifier le fichier /etc/apt/sources.list, afin qu'il prenne les fichiers de la version stable, et non le nom de la version que vous avez téléchargez (lenny). Ceci afin de toujours disposer des dernières versions stables.

Pour ce faire, éditez le fichier /etc/apt/sources.list et remplacez toutes les occurences de lenny en stable ! :) C'est tout !

Ensuite, mettez à jour la liste des paquets :

apt-get update

Puis installez les éventuelles mises à jours :

apt-get upgrade && apt-get dist-upgrade

Ensuite, nous allons créer un petit fichier qui va s'avérer utile, .email. Ce fichier ne contiendra qu'un email, ne sera visible que par vous, et permettra à des services tels que cron de vous envoyer un email en cas de problème. (Bon, ca ne fonctionnera pas tout de suite puisque nous avons encore aucun serveur mail, mais pour la suite, ce sera vraiment utile !).

Voici la commande :

echo "votre_email@example.org" > .email

Ensuite, nous allons nommer correctement le serveur. Pour cela, plusieurs éléments à modifier :
/etc/hosts, rajoutez le nom de domaine sur l'ip publique :

127.0.0.1       localhost webserv
192.168.0.8     example.org

/etc/hostname, donnez lui le nom voulu :

WebServ

Ensuite, exécutez le script /etc/init.d/hostname.sh, afin de mettre à jour votre nom de serveur. Le changement sera effectué lors de la prochaine connection.

/etc/init.d/hostname.sh

Pour ceux qui auraient des problèmes d'accents dans leur console, il faut modifier le fichier .bashrc, et y ajouter cette ligne :

echo "export LANG=fr_FR.UTF-8" >> ~/.bashrc

La configuration basique est terminée !

Maintenant, prêt pour attaquer le gros du travail ? :)

Filed under  //  .email   Howtos   Scripts   Unix/Linux   apt-get   hostname   mise en place   server   serveur   sources.list   web  
Posted by Cyril Nicodème