-
GNU / Linux, Logiciels Libres
Passer de SVN à Git + Gitosis
par divarvel, le 12 Février 2010 à 21:39
J'ai récemment réalisé la migration de tous les projets EklaWeb de Subversion vers Git.
Si vous voulez savoir pourquoi, je vous conseille cet excellent article de Scott Chacon
Pour résumer,
- Git est plus rapide
- Git est plus puissant
- Git est plus flexible
Lire la suite...
aucun commentaire
Un petit script pour faire du Benchmark
par divarvel, le 1 Juin 2009 à 16:38
Dans le cadre d'un travail demandé en cours de Théorie des Graphes, je devais regarder l'évolution du temps d'exécution d'un programme en fonction d'un paramètre. (Pour les curieux, c'est la k-Coloration d'un Graphe à n Sommets)
Je me suis bricolé un petit script qui fait ça tout seul, et génère un graphe (via l'excellent GnuPlot) (ou affiche les temps d'exécution)
C'est la première fois que je fais un vrai script en Bash (ie un script qui n'est pas 3 commandes mises à la suite), du coup, pour la structure, je me suis inspiré d'un petit script de P4bl0.
Le nom du programme à tester est hard coded, mais ce n'est pas très dur à modifier.
N'hésitez pas à vous en servir si ça vous est utile ;-), de même que toutes les critiques sont les bienvenues (je n'y connais pas grand chose (pour ne pas dire que dalle) en scripts Bash)
L'usage, c'est $[...]:~> ./bench.sh [-i n] p n1 n2 itv graphe.png
n1 valeur de départ du paramètre
n2 valeur finale du paramètre
itv variation du paramètre à chaque pas
graphe.png nom du fichier généré
Pour le -i n, n est le nombre d'exécutions du programme pour chaque point (par défaut, 10)#!/bin/sh
if [ "$1" = "-i" ]; then
ITER="$2"
shift
shift
else
ITER="10"
fi
_bench_usage() {
cat <<USAGE
Usage: bench disp n1 n2 interval : Affiche le temps pris pour traiter des graphes de n sommets, n variant de n1 à n2 par pas de interval.
bench plot n1 n2 interval file: Crée le fichier file, un graphique PNG affichant le temps pris pour traiter des graphes de n sommets,
n variant de n1 à n2 par pas de interval.
bench help: Affiche cette page d'aide.
La première lettre de chaque commande peut être utilisée
Le flag -i permet de spécifier combien de fois un graphe à n sommets doit être calculé.
Valeur par défaut : 10
USAGE
}
_bench_disp() {
i=$1
while [ $i -le $2 ]; do
START=$(date +%s)
_bench_run
STOP=$(date +%s)
echo "Graphe à" $i "sommets :" $[$STOP-$START] "secondes"
i=$[i + $3]
done
}
_bench_plot() {
# Création d'un fichier temporaire contenant les données à afficher
i=$1
echo "# Temps de calcul pour des graphes de "$1" à "$2" sommets (par pas de "$3")" > plot.dat
while [ $i -lt $2 ]; do
START=$(date +%s)
_bench_run
STOP=$(date +%s)
echo $i $[$STOP-$START] >> plot.dat
i=$[i + $3]
done
# Génération du graphe
gnuplot<<EOF
set xlabel 'Nombre de Sommets du graphe'
set ylabel 'Temps de calcul (s)'
set xrange [*:*]
set yrange [*:*]
set grid
set nokey
set output "${4}"
set terminal png small
plot "plot.dat" with linespoints
EOF
# Suppression du fichier temporaire
rm -f plot.dat
}
_bench_run() {
j="0"
while [ $j -lt $ITER ]; do
../source/coloration -r $i -v 1>>coloration.log 2>> error.log
echo "">>coloration.log
echo "">>error.log
j=$[j + 1]
done
}
_bench() {
local ACTION="$1"
shift
case $ACTION in
d|disp) _bench_disp "$@" ;;
p|plot) _bench_plot "$@" ;;
h|help|*) _bench_usage >&2 ;;
esac
}
_bench "$@"
echo
exit 0
C'est facilement modifiable pour faire un comparatif entre deux programmes, à condition de regarder un peu la doc de GnuPlot.
4 commentaires
Un peu de Conky
par divarvel, le 1 Juin 2009 à 16:23
J'avais déjà parlé de Conky sur ce blog, un outil très geek et très sympa.
Je me suis rebricolé une config hier (pendant que je je faisais un peu de benchmarking), à partir de ce super article
Je n'ai pas encore fini, il faut que je tweake le script qui va chercher les tweets pour le mettre un peu plus joliement en forme, et que je mette la météo.
À part ces deux trois trucs à finir, je suis vraiment content du résultat.
J'ai fait une version plus light pour mon EEE, qui rend vraiment bien niveau sobriété (ça se marie bien à OpenBox)
La prochaine étape, générer des graphes un peu plus complets avec GnuPlot (temps de latence de différents serveurs, le temps que je passe sur l'ordi, le cours du Yen, tout ça...)
aucun commentaire
Algorithmique et Programmation en LaTeX
par divarvel, le 30 Mars 2009 à 07:16
Cette année, j'ai des cours d'algorithmique et de programmation, du coup je fais mes rapports en LaTeX. Un de mes collègues m'a passé de quoi intégrer du code et des algorithmes dans vos rapports, et ce proprement et joliment.
Listings de Programmation
Pour afficher des bouts de code, rien de bien compliqué. On commence par charger l'environnement listing.
\usepackage{listings}Ensuite, on le configure un peu.
\lstset{
language=C,
keywordstyle=bfseriesttfamilycolor[rgb]{0,0,1},
identifierstyle=ttfamily,
commentstyle=color[rgb]{0.133,0.545,0.133},
stringstyle=ttfamilycolor[rgb]{0.627,0.126,0.941},
showstringspaces=false,
basicstyle=footnotesize,
numberstyle=footnotesize,
numbers=left,
stepnumber=1,
numbersep=10pt,
tabsize=2,
breaklines=true,
breakatwhitespace=false,
aboveskip={1.5baselineskip},
columns=fixed,
upquote=true,
extendedchars=true,
}Rien de bien sorcier dans la config, en bidouillant un peu, on peut obtenir ce que l'on veut (langage, espacements, etc...) Il suffit ensuite d'encapsuler le bout de code qu'on veut afficher dans un environnement lstlisting
\begin{lstlisting}
#include <stdio.h>
int main(){
printf("Hello World");
return 0;
}
\end{lstlisting}Algoritmique
Pour afficher des algorithmes dans vos documents LaTeX, rien de bien compliqué non plus, sauf qu'on va franciser un peu les packages dont on se sert (personnellement je trouve ça affreux, mais on est obligés de faire comme ça en cours :/). On commence par charger les packages.
\usepackage{algorithm,algorithmic};On redéfinit ensuiteles commandes des packages algorithmic et algorithm.
% Francisation des algorithmes
\renewcommand{algorithmicrequire} {textbf{textsc{Entrées:}}}
\renewcommand{algorithmicensure} {textbf{textsc{Sorties:}}}
\renewcommand{algorithmicwhile} {textbf{tant que}}
\renewcommand{algorithmicdo} {textbf{faire}}
\renewcommand{algorithmicendwhile}{textbf{fin tant que}}
\renewcommand{algorithmicend} {textbf{fin}}
\renewcommand{algorithmicif} {textbf{si}}
\renewcommand{algorithmicendif} {textbf{fin si}}
\renewcommand{algorithmicelse} {textbf{sinon}}
\renewcommand{algorithmicthen} {textbf{alors}}
\renewcommand{algorithmicfor} {textbf{pour}}
\renewcommand{algorithmicforall} {textbf{pour tout}}
\renewcommand{algorithmicdo} {textbf{faire}}
\renewcommand{algorithmicendfor} {textbf{fin pour}}
\renewcommand{algorithmicloop} {textbf{boucler}}
\renewcommand{algorithmicendloop} {textbf{fin boucle}}
\renewcommand{algorithmicrepeat} {textbf{répéter}}
\renewcommand{algorithmicuntil} {textbf{jusqu'à}}
\renewcommand{algorithmiccomment} {STATE //}
\newcommand{BEGIN}{STATE fbox{Début}}
\newcommand{END}{STATE fbox{Fin}}
\floatname{algorithm}{Algorithme}Pour intégrer un algo dans son document LaTeX, il ne reste plus qu'à faire comme ceci :
\begin{algorithm}
\caption{Algo de test}
\begin{algorithmic}
\require entiers a, b
\ensure entier d
\begin
\state d $leftarrow (a+b)$
\end
\end{algorithmic}
\end{algorithm}Normalement, vous devriez avoir tout ce qu'il faut pour impressionn^Wfaire plaisir à votre prof d'Algo - Programmation préféré(e). Bon courage et bonne programmation !
Merci à Julien pour m'avoir passé ces bouts de code !
3 commentaires
Créer son thème Beamer
par divarvel, le 1 Février 2009 à 22:46J'ai enfin (à peu près) compris comment créer un thème Beamer from scratch. Voilà la méthode (ce n'est en aucun cas un lexique de commandes). Pour les différentes commandes, ça se trouve facilement (ici et ici par exemple). J'écris cet article car il n'y a quasiment aucune ressource qui explique comment créer un thème entier (juste comment en modifier des existants).
Tout se passe dans les fichiers suivants (remplacez Theme par le nom de votre thème):- beamerthemeTheme.sty
- beamerouterthemeTheme.sty
- beamerinnerthemeTheme.sty
- beamercolorthemeTheme.sty
Chaque fichier comporte la ligne :
\ProvidesPackage{beamercolorthemeTheme}[AAAA/JJ/MM] (color pour le fichier colortheme, à remplacer par inner, outer ou rien)
Le fichier principal est beamerthemeTheme.sty, c'est lui qui définit tout le reste (il contient les liens vers les trois autres fichiers de thèmes). Pour indiquer au compilateur d'utiliser votre fichier de thème, insérez la commande suivante \usetheme{Theme} dans la partie \mode<presentation>{}.
Pour la structure des slides (fond, menu, etc...), ça se passe dans outertheme. Par exemple, pour définir le fond des slides :
\pgfdeclareimage[height=\paperheight,width=\paperwidth]{frame_bg}{frame_bg}
\setbeamertemplate{background}{\pgfuseimage{frame_bg}}
On définit une image (frame_bg.png) de la taille du slide (height=\paperheight,width=\paperwidth), puis on la met comme fond de chaque slide.
Pour les différentes couleurs (ici la couleur de fond des slides) :
\definecolor{couleur}{HTML}{F0F6F8}
\setbeamercolor{background canvas}{fg=couleur, bg=couleur}
Le innertheme définit le contenu des slides. J'ai pas trop d'idées de commandes à mettre dedans.
Voilà pour une brève explication de la méthode. Pour des explications des différentes commandes, je vous conseille l'excellent site mcclinews.free.fr, qui est complet et détaillé. Le passage sur les beamercolorbox est très intéressant et utile. Enjoy !
aucun commentaire
[1] 2 3 4 5 6 7

Suivre le flux RSS des articles de cette rubrique
Suivre le flux RSS des commentaires de cette rubrique






Haut de page