Utilitaires
Tous les logiciels que je développe sont distribués selon les
termes de la GNU General Public License v3. Cette page héberge
quelques outils utiles pour tester la fouille de motifs dans
des tenseurs flous et synthétiques, deux thèmes Beamerposter
et quatre scripts Shell.
Testing pattern mining in synthetic noisy
tensors
This archive
contains the source codes of four useful commands to test
pattern mining in synthetic noisy tensors. The first
one, gennsets
, generates randomly positioned
n-sets of any sizes in a null tensor of any sizes. Then, the
second one, noise
, or the third
one, num-noise
, turns this "perfect" tensor
noisy. The difference between the two commands is
that noise
outputs another Boolean tensor (the
noise only switches Boolean values),
wheras num-noise
turns the tensor fuzzy (the
noise turns Boolean values into degrees of
membership). Finally, the fourth
command, n-set-diff
, provides a tuple-based
comparison of the hidden patterns (as output
by gennsets
) with those discovered in the noisy
version of the tensor.
Please, take the time to read the INSTALL files before
compiling these commands and the README files before using
them.
If you want to reproduce experiments reported in the
article
introducing Fenster,
you may be interested
in these
Bash scripts. The source code of DCE is not available on
the website of its
author anymore. Since it was distributed under the
terms of the GNU GPL, we are free to redistribute
it. Thus, here is the
source code of DCE. The only improvement w.r.t. the
original code is the added possibility to specify
different minimal size constraints for the different
dimensions of the tensor.
Beamerposter themes for the DCC
This
archive contains a
theme beamerposter
. The background and most
of the colors come from DCC's
website. The archive contains as well an example
source file, a Makefile, and the resulting PDF. The
example poster presents some useful commands to structure
it.
To use the theme, beamer
and beamerposter
are (obviously) required. On
Debian and derivatives (including the *buntu), use the
package manager to install latex-beamer
and texlive-latex-extra
. If you do not want the
whole texlive-latex-extra
package (or if your
distribution of choice does not
ship beamerposter
),
visit beamerposter
's
website.
If you feel nostalgic about DCC's previous website, here
is another
theme beamerposter
that reuses its
background.
srtfold
Given in argument a maximal number of characters per
line,
srtfold
reformat .srt subtitles to satisfy
that constraint (except for words that, alone, exceed it) and
to display at most two lines at a time. Consider for instance
those subtitles:
1
00:01:10,000 --> 00:01:20,000
No entanto, apesar da eficácia de seu trabalho, ele se encontrou enfrentando o que ele descreveu como um dilema crescente.
2
00:01:20,000 --> 00:01:25,000
Quando voltei para Chicago, pensei na história dele até casa.
Processing them,
srtfold 40
outputs:
1
00:01:10,000 --> 00:01:13,902
No entanto,
apesar da eficácia de seu trabalho,
2
00:01:13,902 --> 00:01:20,000
ele se encontrou enfrentando o que
ele descreveu como um dilema crescente.
3
00:01:20,000 --> 00:01:25,000
Quando voltei para Chicago,
pensei na história dele até casa.
And
srtfold 20
outputs:
1
00:01:10,000 --> 00:01:10,976
No entanto,
2
00:01:10,976 --> 00:01:13,902
apesar da eficácia
de seu trabalho,
3
00:01:13,902 --> 00:01:16,748
ele se encontrou
enfrentando o que
4
00:01:16,748 --> 00:01:20,000
ele descreveu como
um dilema crescente.
5
00:01:20,000 --> 00:01:22,258
Quando voltei
para Chicago,
6
00:01:22,258 --> 00:01:25,000
pensei na história
dele até casa.
srtfold
tries to avoid widows and orphans. It
heuristically balances the number of characters per line. It
prefers to break lines after punctuation marks. With a lower
priority, it prefers longer second lines too. If an input
subtitle cannot be displayed within two lines during the
provided time interval, that interval is divided into
sub-intervals whose duration is proportional to the number
of characters. srtfold
can process
slightly-malformed subtitles (more than one blank lines
between subtitles, missing/supernumerary spaces around
"-->", missing hours, dots separating seconds from
milliseconds, incorrect padding) that it fixes. It removes
supernumerary spaces between words, but keeps the input line
breaks. It removes HTML tags too. Here
is the Shell
script. Executing it with no argument makes it print a
usage help.
To improve the readability of the output subtitles, some
spaces in the input subtitles can be turned non-breaking.
Appropriate substitutions depend on the language.
Two sed
substitutions are commented in the
script: to turn non-breaking every space right before ":",
"?" or "!" (useful in French) or right after a word
consisting of a single alphanumerical character.
pdf-page-grep
pdf-page-grep
cherche des motifs (par défaut,
des expressions rationnelles simples) dans des fichiers PDF
et concatène les pages correspondantes. Les arguments
commençant par "-" (par exemple, -F
ou --ignore-case
) sont considérés des
options. Elles sont passées à grep
. Le fichier
en sortie prend le nom de base du dernier PDF avec une
correspondance suivi de "-matches.pdf".
Le script est très court et simple. Il représente une
occasion d'apprendre. Dans ce but, il est assez lourdement
commenté. De plus, Lucas Westermann m'a fait l'honneur
d'écrire un article pédagogique à son propos. Cet article a
été publié
dans le
numéro 89 (pages 10–11) du Full Circle Magazine, qui est
librement consultable et est
traduit
en français.
Si vous ne voulez pas une sortie PDF mais plutôt une sortie
texte des seules lignes contenant les motifs, alors
installez pdfgrep
,
un programme bien plus complet qui est probablement dans les
dépôts de votre distribution GNU/Linux.
Installation
Mis à part grep
, le script s'appuie
principalement
sur pdfinfo
, pdftotext
, pdfunite
,
et pdfjam
. Dans Debian et dérivées, le paquet
"poppler-utils" fournit les trois premières commandes et
"texlive-extra-utils" fournit pdfjam
. Les deux
paquets doivent être installés. pdf-page-grep
a
été testé sur bash
et dash
mais
fonctionne probablement tout aussi bien sur d'autres
shells. Il suffit de
le télécharger et
de l'exécuter ! En le lançant sans argument, une aide à
l'utilisation est montrée.
Utilisation non-interactive
pdf-page-grep
peut être utilisé de façon
non-interactive. Pour cela, redirigez l'entrée standard vers
un fichier avec un motif par ligne and une ligne vide à la
fin. La code de retour de pdf-page-grep
est 0
si des pages ont correspondu aux motifs, 1 sinon.
offline-emerge
Ce script Bash permet de garder la puissance du
gestionnaire de paquets de Gentoo GNU/Linux sans avoir
recours directement à Internet. Toutes les actions
nécessitant d'aller chercher quelque fichier sur le réseau
des réseaux listent à la place, sur un périphérique
retirable (typiquement une clé USB), les URLs de ces
fichiers. Un script sur le périphérique retirable s'occupe
du téléchargement depuis n'importe quel système de type *NIX
(GNU/Linux, BSD, Mac OS X, etc.) connecté à Internet. De
retour sur la Gentoo, une commande permet d'exécuter toutes
les actions précédemment reportées. Malgré l'absence de
connexion Internet, il est ainsi facile de mettre à jour
l'arbre Portage, d'installer un nouveau logiciel ou de
mettre à jour tout le système.
Installation
Un ebuild est
disponible ici. Placez-le
dans votre overlay puis exécutez :
# emerge offline-emerge
Si vous êtes sans connexion Internet, il vous faut
auparavant télécharger
le code source à la main et le placer parmi vos
distfiles.
Il vous faut enfin définir la
variable MOVINGDIR
dans /etc/make.conf
. Cette variable doit
contenir le chemin du répertoire sur votre périphérique
retirable qu'offline-emerge
utilisera. Par
exemple, pour
utiliser /media/usbdisk/moving-portage
comme
répertoire sur votre périphérique retirable :
# echo 'MOVINGDIR="/media/usbdisk/moving-portage"' >>
/etc/make.conf
À la première utilisation de offline-emerge
,
les fichiers sur le périphérique retirable seront créés.
Utilisation
Un cycle d'utilisation typique commence sur la Gentoo.
Lister les logiciels du système à mettre à jour:
# offline-emerge -uDNpv world
Demander la mise à jour complète du système:
# offline-emerge -uDN world
Demander l'installation de Listen:
# offline-emerge =media-soud/listen-0.4.3
Comme vous l'aurez probablement compris, toutes les
utilisations valides de emerge
le sont aussi
avec offline-emerge
(à l'exception de
l'option --sync
qui devient inutile). Les deux
dernières commandes de cet exemple seront exécutées si tous
les fichiers nécessaires sont présents sur la
Gentoo. Autrement chacune donne lieu à la création d'un
fichier portant le nom de la commande dans le répertoire
actions sur le périphérique retirable. Avec les exemple
ci-dessus, ces fichiers s'appelleraient "-uDN world"
directement dans actions et "=listen-0.4.3" dans un
sous-répertoire media-soud).
À tout moment il est possible de supprimer un de ces
fichiers ce qui aura pour conséquence l'annulation de
l'action correspondante. Ainsi si vous voulez renoncez à la
mise à jour de votre système (mais pas à l'installation de
Listen), vous n'avez qu'à supprimer le fichier "-uDN world"
qui se trouve dans le répertoire actions de votre
périphérique retirable.
Sur l'ordinateur connecté à Internet, il vous suffit
d'exécuter le script nommé "fetch"
qu'offline-emerge
a créé sur votre périphérique
retirable. En général, cela revient à double-cliquer sur le
scripter et à choisir "Exécuter" ou "Exécuter dans un
terminal". fetch
télécharge, dans un répertoire
nommé "distfiles", l'ensemble des fichiers nécessaires à
l'exécution des commandes qui ont été reportées. Il
télécharge également le dernier instantané de l'arbre
Portage si il est différent de celui actuellement sur la
Gentoo. Si la place vient à manquer, fetch
laisse votre périphérique retirable plein à 100% de façon à
ne pas avoir à recommencer depuis le début un téléchargement
partiel. Ceci peut vous sembler ennuyeux mais il n'en est
rien. En effet, si vous avez besoin de place, vous pouvez,
sans soucis d'intégrité, supprimer des sources dans
distfiles ou un un instantanné de l'arbre Portage (forcément
partiel). En aucun cas,
offline-emerge
ne tranférera un fichier
partiellement téléchargé sur la Gentoo. Notez que vous
pouvez aussi mettre à la main des sources dans
distfiles. Elles seront transférées sur votre Gentoo.
De retour sur la Gentoo, pour retenter l'exécution de
toutes les commandes précédemment appellées mais non
exécutées et mettre à jour l'arbre Portage :
# offline-emerge --oldactions
Une commande pour tout faire. Nul besoin de se rappeler ce
que vous avez précédemment demandé.
Vos modifications de /etc/portage/packages.*
ou /etc/make.conf
sont bien prises en compte
par offline-emerge
. Pour qu'elles soient
appliquées aux actions précédemment demandées mais non
encore exécutées, vous devez exécuter :
# offline-emerge --oldactions
Notez aussi qu'avoir ses distfiles ou/et son arbre Portage
dans des répertoires non-traditionnels ne pose aucun
problème.
Pour tout savoir sur offline-emerge
, consultez
sa page de manuel :
$ man offline-emerge
trivialibre
Selon son site
Web, "Trivialibre est un ensemble de questions
concernant le Logiciel Libre pour le célèbre jeu Trivial
Pursuit". Ma maigre contribution consiste
en un petit
script Shell qui pose ces questions dans des boîtes de
dialogues graphiques. Mêmes si le thème des logiciels libres
ne vous intéresse pas, vous pourriez trouver un intérêt à ce
script. Vous pourriez, par exemple, réviser vos examens
grâce à lui. En effet, il suffit d'éditer les fichiers dans
le répertoire categories (resp. ajouter/supprimer des
fichiers dans ce répertoire) pour ajouter/supprimer des
questions (resp. des catégories de questions). Le script en
soi ne nécessite pas d'être touché.
Fonctionnalités
- Le joueur choisit une catégorie ou sélectionne "Au
hasard !" pour une sélection aléatoire;
- Un délai de 20s (avec barre de progression) est laissé
au joueur pour trouver une réponse (ou pas);
- Ce délai, en secondes, est en fait une valeur par défaut
et peut donc être modifié (il s'agit là de la seule
option, facultative, du script);
- Les questions non encore posées sont stockées sur le
disque ce qui permet de quitter le jeu sans risquer de se
voir reposer les mêmes questions la prochaine fois;
- Lorsqu'une catégorie est épuisée, toutes ses questions
sont reprises dans un ordre différent.
Le script est très court et simple. Il représente une
occasion d'apprendre. Dans ce but, il est assez lourdement
commenté. De plus, Lucas Westermann m'a fait l'honneur
d'écrire un article pédagogique à son propos. Cet article a
été publié
dans le
numéro 58 (pages 5–7) du Full Circle Magazine, qui est
librement consultable et est
traduit
en français.
Installation
Le script repose
sur Zenity
qui est, je crois, installé sur la plupart des distributions
GNU/Linux (en particulier celles utilisant GNOME). Si ce
n'est pas le cas, il est probablement dans les dépôts. Les
autres commandes exécutées ne devraient poser aucun problème
si votre système dispose d'une version raisonnablement
récente de GNU coreutils (utilisation
de shuf
). Le script a été testé
sur bash
, dash
et zsh
. Il devrait probablement aussi
fonctionner sur d'autres shells tels
que ksh
.
Pour installer le script, il faut tout d'abord télécharger
cette
archive et la décompresser où bon vous semble. Il ne
vous reste plus qu'à exécuter trivialibre
pour jouer. Il est, bien sûr, possible de créer un lanceur
(typiquement dans le menu "Jeux") et une icône est
disponible dans l'archive.