GearUtilitaires

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.

Table des matières :

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.

  1. Lister les logiciels du système à mettre à jour:

    # offline-emerge -uDNpv world
  2. Demander la mise à jour complète du système:

    # offline-emerge -uDN world
  3. 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 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.

Valid
							       HTML
							       4.01
							       Strict Valid
								      CSS