Dernières publications | Jean-Philippe Fleury http://www.jpfleury.net Dernières publications | Jean-Philippe Fleury Gestion de projet avec Git http://www.jpfleury.net/tutoriels/gestion-projet-git.php http://www.jpfleury.net/tutoriels/gestion-projet-git.php <!-- APERÇU: automatique --> <p>Ce qui suit illustre une méthode de travail avec <a href="http://git-scm.com/">Git</a>.</p> <h2>Création du projet</h2> <p>Note: l'emplacement distant utilisé en exemple pour héberger le projet est sur <a href="http://baregit.com/">Baregit</a>.</p> <pre><code>cd /tmp mkdir projet-demo cd projet-demo git init touch version.txt git add . git commit -m "Début de versionnage de projet-demo" git remote add origin git@baregit.com:utilisateur/projet-demo.git git push origin master </code></pre> <h2>Création d'une branche de développement</h2> <p>La branche de développement est utilisée pour préparer la prochaine version. C'est donc sur cette branche que le travail s'effectue. La branche <code>master</code> contient toujours le code de la dernière version stable publiée.</p> <pre><code>git checkout -b dev touch fichier1 git add . git commit -m "Message fichier1" git push origin dev </code></pre> <h2>Création d'une branche topique</h2> <p>Une branche topique, créée à partir de la branche <code>dev</code>, est utile pour travailler sur une nouvelle fonctionnalité, qui pourra être ajoutée plus tard dans la branche de développement.</p> <pre><code>git checkout -b fonctionnalite1 touch fonctionnalite1-fichier1 git add . git commit -m "Message fonctionnalite1-fichier1" touch fonctionnalite1-fichier2 git add . git commit -m "Message fonctionnalite1-fichier2" </code></pre> <h2>Continuation du travail sur la branche de développement</h2> <pre><code>git checkout dev touch fichier2 git add . # On met de côté les modifications en cours pour travailler sur autre chose. git stash touch fichier3 git add . git commit -m "Message fichier3" # On retourne travailler sur les changements précédemment mis de côté. git stash pop git status git add . git commit -m "Message fichier2" git push origin dev </code></pre> <h2>Travail sur le même projet à partir d'un autre emplacement</h2> <pre><code>git clone git@baregit.com:utilisateur/projet-demo.git ../autre-emplacement-projet-demo cd ../autre-emplacement-projet-demo git checkout dev touch fichier4 git add . git commit -m "Message fichier4" git push origin dev </code></pre> <h2>Retour au premier emplacement</h2> <p>Pour mettre à jour une branche locale, il est souvent conseillé d'utiliser <code>git pull</code>. Cette commande effectue en réalité deux actions:</p> <ul> <li><code>git fetch</code>, pour récupérer les modifications présentes à l'emplacement distant;</li> <li><code>git merge</code>, pour intégrer ces modifications dans la branche locale courante.</li> </ul> <p>Si la branche locale ne contient pas de modifications inconnues de l'emplacement distant, <code>git merge</code> va simplement déplacer la référence <code>HEAD</code> vers la dernière révision. Exemple (les graphiques ont été générés avec <a href="http://git.gnome.org/browse/gitg/">gitg</a>):</p> <ul> <li><p>Avant <code>git merge</code>:</p> <p><img src="http://www.jpfleury.net/site/fichiers/images/modele-developpement-git/avant-git-merge-ff.png" alt="Historique du projet avant la fusion des modifications présentes à l'emplacement distant" width="248" height="99" /></p></li> <li><p>Après <code>git merge</code>:</p> <p><img src="http://www.jpfleury.net/site/fichiers/images/modele-developpement-git/apres-git-merge-ff.png" alt="La référence «HEAD» a été déplacée vers la dernière révision" width="303" height="99" /></p></li> </ul> <p>Dans le cas contraire, les deux branches divergent et une nouvelle révision va être créée pour contenir les modifications de la fusion. Cette révision va bien sûr apparaître dans l'historique. Exemple:</p> <ul> <li><p>Avant <code>git merge</code>:</p> <p><img src="http://www.jpfleury.net/site/fichiers/images/modele-developpement-git/avant-git-merge-no-ff.png" alt="Historique du projet avant la fusion des modifications présentes à l'emplacement distant" width="264" height="123" /></p></li> <li><p>Après <code>git merge</code>:</p> <p><img src="http://www.jpfleury.net/site/fichiers/images/modele-developpement-git/apres-git-merge-no-ff.png" alt="La fusion des modifications a été effectuée et une nouvelle révision a été créée" width="416" height="147" /></p></li> </ul> <p>Avec le temps, l'historique va en être considérablement alourdi. Pour cette raison, j'utilise <code>git rebase</code>, qui permet de réappliquer les modifications locales à la suite de la dernière révision de la branche distante. L'historique demeure donc linéaire. Exemple:</p> <ul> <li><p>Avant <code>git rebase</code>:</p> <p><img src="http://www.jpfleury.net/site/fichiers/images/modele-developpement-git/avant-git-merge-no-ff.png" alt="Historique du projet avant la mise à jour avec l'emplacement distant" width="264" height="123" /></p></li> <li><p>Après <code>git rebase</code>:</p> <p><img src="http://www.jpfleury.net/site/fichiers/images/modele-developpement-git/apres-git-rebase.png" alt="La branche locale a été mise à jour avec l'emplacement distant à l'aide d'une recombinaison des révisions" width="248" height="123" /></p></li> </ul> <p>Voir l'article <a href="http://notes.envato.com/developers/rebasing-merge-commits-in-git/">Rebasing Merge Commits in Git</a> concernant l'importance d'utiliser le paramètre <code>-p</code> (<code>--preserve-merges</code>) avec <code>git rebase</code>.</p> <p>Note: au lieu des deux commandes <code>git fetch origin</code> et <code>git rebase -p origin/dev</code> ci-dessous, un alias peut être créé:</p> <pre><code>git config --global alias.frp '!git fetch origin &amp;&amp; git rebase -p origin/$(branche="$(git symbolic-ref HEAD 2&gt;&amp;-)" &amp;&amp; echo ${branche#refs/heads/})' </code></pre> <p>Pour que l'alias soit actif seulement pour le projet courant, enlever le paramètre <code>--global</code>.</p> <pre><code>cd ../projet-demo git checkout dev git fetch origin git rebase -p origin/dev touch fichier5 git add . git commit -m "Message fichier5" echo "1.0" &gt; version.txt git add . git commit -m "Mise à jour du numéro de version (1.0)" </code></pre> <h2>Publication de la première version</h2> <p>Lorsque la branche de développement reflète l'état désiré pour la prochaine version du logiciel, elle est fusionnée dans la branche <code>master</code>, et une étiquette est créée avec le numéro de version.</p> <p>Le paramètre <code>--no-ff</code> est utilisé lors de la fusion pour s'assurer que les révisions de la branche de développement soient regroupées dans l'historique et facilement distingables des autres révisions.</p> <p>Aussi, le paramètre <code>-s</code> utilisé avec <code>git tag</code> permet de créer une étiquette signée. Utiliser le paramètre <code>-a</code> pour créer un objet <code>tag</code> sans le signer.</p> <pre><code>git checkout master git fetch origin git rebase -p origin/master git checkout dev git rebase -p master git push origin dev git checkout master git merge --no-ff dev git tag -s 1.0 -m "Message 1.0" git push --tags origin master </code></pre> <h2>Développement de la deuxième version</h2> <pre><code>git checkout dev touch fichier6 git add . git commit -m "Message fichier6" git push origin dev </code></pre> <h2>Continuation du développement de la fonctionnalité 1</h2> <p>Noter l'utilisation de <code>git rebase</code> pour ajouter dans la branche topique les modifications de la branche de développement.</p> <pre><code>git checkout fonctionnalite1 git rebase -p dev touch fonctionnalite1-fichier3 git add . git commit -m "Message fonctionnalite1-fichier3" </code></pre> <h2>Intégration de la fonctionnalité 1</h2> <p>Lors qu'une foncitonnalité est terminée, la branche topique correspondante est fusionnée à la branche de développement, et est ensuite supprimée. Noter l'utilisation du paramètre <code>--no-ff</code> lors de la fusion.</p> <pre><code>git checkout dev git fetch origin git rebase -p origin/dev git checkout fonctionnalite1 git rebase -p dev git checkout dev git merge --no-ff fonctionnalite1 git branch -d fonctionnalite1 </code></pre> <h2>Continuation et fin du développement de la deuxième version</h2> <pre><code>touch fichier7 git add . git commit -m "Message fichier7" echo "2.0" &gt; version.txt git add . git commit -m "Mise à jour du numéro de version (2.0)" git push origin dev </code></pre> <h2>Publication de la deuxième version</h2> <pre><code>git checkout master git fetch origin git rebase -p origin/master git merge --no-ff dev git tag -s 2.0 -m "Message 2.0" git push --tags origin master </code></pre> <p>L'historique résultant de ce projet de démonstration est le suivant:</p> <p><img src="http://www.jpfleury.net/site/fichiers/images/modele-developpement-git/projet-demo-gitg.png" alt="" width="436" height="387" /></p> Tue, 01 May 2012 00:59:00 -0400 Corbeille-SpaceFM: corbeille pour SpaceFM conforme à la spécification de freedesktop.org http://www.jpfleury.net/logiciels/corbeille-spacefm.php http://www.jpfleury.net/logiciels/corbeille-spacefm.php <!-- APERÇU: automatique --> <p lang="en"><strong><a hreflang="en" href="http://www.jpfleury.net/en/software/corbeille-spacefm.php">Read this page in English.</a></strong></p> <h2>Aperçu</h2> <p>Corbeille-SpaceFM est une extension ajoutant le support de la corbeille au gestionnaire de fichiers <a href="http://ignorantguru.github.com/spacefm/">SpaceFM</a>.</p> <p>Corbeille-SpaceFM est conforme à la <a href="http://standards.freedesktop.org/trash-spec/trashspec-latest.html">spécification de freedesktop.org relative à la corbeille</a>, et est donc interopérable avec d'autres implémentations conformes, qui pourront gérer les fichiers mis à la corbeille par Corbeille-SpaceFM, et vice versa. Des essais ont été effectués avec Thunar, Nautilus et Dolphin.</p> <p>Corbeille-SpaceFM gère sans problème les noms de fichiers formés de n'importe quel caractère valide, par exemple des retours à la ligne.</p> <p>Aussi, une attention particulière a été portée à la vitesse d'exécution. Corbeille-SpaceFM supporte les processeurs multicoeurs et peut manipuler des centaines ou des milliers de fichiers sans souffrir d'un ralentissement trop important. Voir la section <em>Précisions</em> ci-dessous pour des tests de performance.</p> <h2>Dépendances</h2> <p>Un effort a été déployé pour requérir un minimum de dépendances. Corbeille-SpaceFM est écrit en Bash et fait seulement appel à quelques commandes externes provenant toutes du paquet <code>coreutils</code> (<code>ls</code>, <code>mv</code>, <code>rm</code>...); il devrait donc fonctionner pour tout le monde sans installation supplémentaire.</p> <h2>Installation</h2> <p>La marche à suivre pour installer une extension dans SpaceFM est décrite dans le manuel du logiciel. En gros, il y a deux possibilités:</p> <ul> <li><p><a href="http://ignorantguru.github.com/spacefm/spacefm-manual-en.html#plugins-install">Installer une extension.</a> Les fichiers de l'extension sont protégés contre une modification inopportune puisqu'ils appartiennent au superutilisateur (le mot de passe du superutilisateur est nécessaire lors de l'installation), et l'extension est disponible pour tous les utilisateurs dans le menu <em>Plugins</em> de SpaceFM.</p></li> <li><p><a href="http://ignorantguru.github.com/spacefm/spacefm-manual-en.html#plugins-copy">Copier une extension.</a>. Une fois copiée, l'extension peut être collée dans n'importe quel menu (aucun mot de passe superutilisateur requis).</p></li> </ul> <p>Pour chacune des options, il est possible de télécharger soi-même l'extension pour ensuite la sélectionner sur son disque dur, ou bien de fournir une URL et laisser SpaceFM gérer le téléchargement. <a href="http://jpfleury.indefero.net/p/corbeille-spacefm/downloads/">Consulter la liste des fichiers offerts en téléchargement.</a></p> <p>Alternativement, une archive peut être construite à partir du code source:</p> <ul> <li><p><a href="http://jpfleury.indefero.net/p/corbeille-spacefm/source/download/master/">Télécharger le code source.</a>.</p></li> <li><p>Extraire l'archive.</p></li> <li><p>Ouvrir une console dans le dossier extrait.</p></li> <li><p>Dans la console, lancer la commande suivante:</p> <pre><code>./script.sh archive $LANGUE </code></pre></li> </ul> <p>Les valeurs possibles pour <code>$LANGUE</code> sont <code>en</code> et <code>fr</code>. Une archive sera créée à la racine du dossier. Elle peut être directement utilisée par SpaceFM pour procéder à l'installation.</p> <h2>Désinstallation</h2> <p>Voir les instructions pour <a href="http://ignorantguru.github.com/spacefm/spacefm-manual-en.html#plugins-uninstall">désinstaller une extension</a> dans le manuel de SpaceFM.</p> <h2>Utilisation</h2> <p>Corbeille-SpaceFM correspond à un ensemble de 9 commandes (disponibles dans le menu <em>Plugins | Corbeille</em> de SpaceFM si l'installation a été effectuée avec les droits d'administration). Prendre note qu'<strong>il n'y a pas de fenêtre de confirmation</strong> après qu'une commande est sélectionnée.</p> <ul> <li><p><em>Mettre à la corbeille</em>: au moins un fichier en dehors de la corbeille doit être sélectionné pour que cette commande soit active. Les fichiers sélectionnés seront déplacés vers la corbeille.</p> <p>Le raccourci clavier <em>Maj+Suppr</em> permet de mettre à la corbeille les fichiers sélectionnés. <em>Note: il semble y avoir un bogue avec SpaceFM, qui ne reconnaît pas un raccourci clavier paramétré par une commande d'une extension. Pour l'instant, il faudra le créer manuellement.</em></p></li> <li><p><em>Restaurer</em>: au moins un fichier dans la corbeille doit être sélectionné pour que cette commande soit active. Les fichiers sélectionnés seront déplacés vers leur emplacement original. Si un fichier existe déjà à cet emplacement, aucun déplacement n'aura lieu et un message d'erreur sera affiché.</p></li> <li><p><em>Supprimer définitivement</em>: au moins un fichier dans la corbeille doit être sélectionné pour que cette commande soit active. Les fichiers sélectionnés seront supprimés définitivement, donc ils ne pourront plus être restaurés à partir de la corbeille.</p></li> <li><p><em>Aller à la corbeille</em>: cette commande est toujours active. Le dossier de la corbeille sera ouvert dans un nouvel onglet dans la fenêtre actuelle de SpaceFM. Aussi, si des corbeilles racine sont trouvées (par exemple, une corbeille à la racine d'un support amovible), elles seront ouvertes chacune dans un nouvel onglet.</p></li> <li><p><em>Afficher les propriétés</em>: cette commande est toujours active. Une boîte de dialogue affichera le nombre de fichiers mis dans la corbeille ainsi que la taille totale de la corbeille.</p></li> <li><p><em>Vider la corbeille</em>: cette commande est toujours active. Il s'agit d'un raccourci pour supprimer définitivement tous les fichiers de la corbeille. Le même résultat peut être obtenu en sélectionnant tous les fichiers de la corbeille et en choisissant de les supprimer définitivement.</p></li> <li><p><em>Limiter la taille de la corbeille</em>: cette commande est toujours active. Elle permet de réduire la corbeille à une taille donnée. Les fichiers sont supprimés en ordre croissant de date de mise à la corbeille (les fichiers mis à la corbeille depuis le plus longtemps sont supprimés en premier).</p></li> <li><p><em>Supprimer les anciens fichiers</em>: cette commande est toujours active. Elle permet de supprimer les fichiers mis à la corbeille depuis un nombre de jours donné.</p></li> <li><p><em>Supprimer les fichiers volumineux</em>: cette commande est toujours active. Elle permet de supprimer les fichiers mis à la corbeille et dont la taille est supérieure ou égale à une taille donnée.</p></li> </ul> <h2>Précisions</h2> <h3>Vitesse</h3> <p>Corbeille-SpaceFM a été pensé pour être rapide, même lorsque qu'un nombre important de fichiers doivent être manipulés. Les processeurs multicoeurs sont supportés, les commandes intégrées de Bash ont été privilégiées autant que possible et le nombre de sous-processus à l'intérieur de boucles a été réduit au minimum.</p> <p>Des tests de performance ont été effectués pour comparer Corbeille-SpaceFM avec Thunar, le gestionnaire de fichiers par défaut de Xfce (Thunar a été choisi, car Xfce est le gestionnaire de bureau que j'utilise). Chaque commande du test manipulait 1000 fichiers texte et a été lancée 5 fois. Les résultats correspondent au temps moyen en secondes.</p> <p>Le premier test a été effectué sur un portable ayant un processeur Intel Core 2 Duo T9300 et 4 Gio de mémoire vive. SpaceFM 0.7.3 et Thunar 1.2.3 ont été utilisés sous Xubuntu 11.10. Les résultats sont les suivants:</p> <table> <thead> <tr> <th></th> <th>Corbeille-SpaceFM</th> <th>Thunar</th> </tr> </thead> <tbody> <tr> <td><strong>Mettre à la corbeille</strong></td> <td>3</td> <td>12</td> </tr> <tr> <td><strong>Supprimer définitivement</strong></td> <td>3</td> <td>12</td> </tr> <tr> <td><strong>Restaurer</strong></td> <td>4</td> <td>15</td> </tr> <tr> <td><strong>Vider la corbeille</strong></td> <td>1</td> <td>1</td> </tr> </tbody> </table> <p>Le deuxième test a été effectué sur un miniportable ayant un processeur Intel Atom N450 et 2 Gio de mémoire vive. SpaceFM 0.7.3 et Thunar 1.2.3 ont été utilisés sous Ubuntu 11.10. Les résultats sont les suivants:</p> <table> <thead> <tr> <th></th> <th>Corbeille-SpaceFM</th> <th>Thunar</th> </tr> </thead> <tbody> <tr> <td><strong>Mettre à la corbeille</strong></td> <td>15</td> <td>41</td> </tr> <tr> <td><strong>Supprimer définitivement</strong></td> <td>14</td> <td>44</td> </tr> <tr> <td><strong>Restaurer</strong></td> <td>19</td> <td>50</td> </tr> <tr> <td><strong>Vider la corbeille</strong></td> <td>10</td> <td>6</td> </tr> </tbody> </table> <h3>Symboles utilisés pour la taille des fichiers</h3> <p>Pour la taille des fichiers, Corbeille-SpaceFM utilise la signification habituelle du <a href="http://fr.wikipedia.org/wiki/Pr%C3%A9fixe_binaire">préfixe binaire</a>, c'est-à-dire la puissance de 2, mais avec les nouveaux termes proposés pour différentier sans équivoque les préfixes binaires des préfixes du système international (en puissance de 10). Par exemple, Mio est utilisé pour 1024 Kio, et 1 Kio équivaut à 1024 octets.</p> <h3>Fichiers pouvant être mis à la corbeille</h3> <p>Les fichiers présents sur la même partition que la corbeille de bureau sont déplacés vers cette corbeille, c'est-à-dire <code>$XDG_DATA_HOME/Trash</code>. La plupart du temps, cela signifie déplacer les fichiers vers <code>/home/user/.local/share/Trash/files</code>.</p> <p>Les fichiers sur d'autres partitions ne sont pas gérés par Corbeille-SpaceFM, comme permis par la spécification. Les raisons sont qu'un tel système est complexe et, à mon humble avis, pas très ergonomique.</p> <p>Selon la spécification, les fichiers d'autres partitions peuvent être mis à la corbeille de bureau. Cependant, tenons compte de ces situations:</p> <ul> <li><p>Déplacer des fichiers externes vers la corbeille de bureau résulterait en une copie de ces fichiers à partir de leur emplacement original vers la partition de la corbeille de bureau. Cette situation pourrait convenir pour quelques fichiers sur un support amovible en USB 2.0, mais pas nécessairement pour la mise à la corbeille de 50 Gio de données, ou de fichiers distants ou présents sur des périphériques lents.</p> <p>La spécification permet de faire l'usage d'exceptions, par exemple de désactiver la mise à la corbeille de fichiers distants. Cependant, cela ne permet pas vraiment de résoudre le problème, et je crois que le déplacement de fichiers d'une partition vers une autre devrait être le fait d'une action explicite entreprise par l'utilisateur.</p></li> <li><p>Les supports amovibles sont parfois montés chaque fois avec un nouveau nom. Ainsi, un fichier mis à la corbeille à un moment donné peut ne pas être restauré si le périphérique a été démonté et remonté depuis.</p></li> <li><p>Un fichier mis à la corbeille à partir d'un support amovible ne pourra pas être restauré si le périphérique en question n'est pas monté.</p></li> </ul> <p>Une implémentation peut supporter plutôt la mise à la corbeille dans des dossiers racine, c'est-à-dire à la racine d'un système de fichiers monté. Cependant, prenons en compte ce qui suit:</p> <ul> <li><p>Deux emplacements sont possibles, <code>$topdir/.Trash/$uid</code> et <code>$topdir/.Trash-$uid</code>, donc deux emplacements doivent être vérifiés, avec le risque de se retrouver avec deux corbeilles non vides sur le même périphérique pour le même utilisateur.</p></li> <li><p>Plusieurs situations sont épineuses: systèmes de fichiers sans support du bit collant, sans identifiant utilisateur numérique ou tout simplement sans identifiant utilisateur, sans permissions, etc. S'il y a trop d'exceptions, est-ce encore utile?</p></li> <li><p>Il est possible d'utiliser un support amovible sous plusieurs systèmes avec différents identifiants utilisateur, donc chaque fois avec un dossier de corbeille différent. Dans ces conditions, nos propres fichiers mis précédemment à la corbeille ne nous sont pas accessibles (sauf à avoir les droits d'administration).</p></li> </ul> <p>Aussi, j'ai consulté plusieurs rapports de bogue sur Launchpad au sujet de la mise à la corbeille. J'ai trouvé plusieurs situations intéressantes:</p> <ul> <li><p>Les fichiers mis à la corbeille sont situés dans un dossier caché, donc ils ne sont pas affichés par défaut dans la plupart des gestionnaires de fichiers. Il y a des rapports de bogue au sujet d'utilisateurs ayant partagé leur périphérique sans savoir que les fichiers supprimés se trouvaient dans un dossier caché. Ceux avec qui le périphérique avait été partagé pouvaient avoir accès à la corbeille, surtout en prenant en compte le fait que cette dernière ne constitue pas un dossier caché sous Windows.</p></li> <li><p>Il y a des rapports de bogue à propos d'utilisateurs incapables d'ajouter des fichiers sur leur périphérique alors qu'ils ont supprimé des données. Ils ne s'étaient pas rendu compte qu'une corbeille cachée était présente sur leur périphérique et prenait encore de la place.</p></li> <li><p>Il y a des rapports de bogue à propos du fait que des dossiers cachés de corbeille sont créés automatiquement sans jamais être supprimés, même lorsqu'ils sont vides.</p></li> <li><p>Il y a des rapports demandant l'ajout d'une option pour désactiver la mise à la corbeille dans les dossiers racine.</p></li> </ul> <p>Voir par exemple ce vieux rapport (datant de 2005), <a href="https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/12893">Shouldn't put .Trash-$USER on removable devices</a>, ayant 13 doublons et 104 commentaires, ou cet autre rapport (2004), <a href="https://bugzilla.gnome.org/show_bug.cgi?id=138058">Ask to empty when unmounting media with items in trash</a>, ayant 12 doublons et 44 commentaires. Les deux sont marqués comme étant résolus, mais en réalité ce n'est pas le cas. Nous pouvons noter de la confusion de la part des utilisateurs ainsi que des implémentations pas très claires (ou bien est-ce la spécification qui n'est pas assez claire).</p> <p>Personnellement, j'ajouterais que certains gestionnaires de fichiers affichent les fichiers des corbeilles racine directement dans la corbeille de bureau, et ce sans différentier ces fichiers de ceux locaux. Un utilisateur peut donc vider la corbeille de bureau sans se rendre compte qu'il vide également toutes les corbeilles situées sur d'autres partitions. Un utilisateur peut vouloir vider une corbeille racine sans vider la corbeille de bureau, toutefois sans trouver de moyen d'accomplir une telle action. Un utilisateur risque de penser que tous les fichiers listés dans la corbeille de bureau sont (en toute logique) situés sur la partition utilisateur, mais, après avoir démonté son support amovible (et potentiellement après l'avoir partagé), réaliser que certains fichiers mis à la corbeille ne sont plus accessibles (ou, autrement dit, que le périphérique contient encore les fichiers mis à la corbeille). Tout ceci est plutôt source de confusion.</p> <p>Je crois vraiment que le meilleur moyen de gérer la mise à la corbeille de fichiers situés sur une partition différente de celle de la corbeille de bureau est de laisser l'utilisateur gérer le cas manuellement. Par exemple, il est possible de déplacer manuellement les fichiers vers la partition utilisateur pour ensuite les mettre à la corbeille de bureau.</p> <p>Cependant, prendre note que la commande <em>Aller à la corbeille</em> de Corbeille-SpaceFM affiche, s'il y a lieu, les corbeilles racine, puisqu'il est écrit dans la spécification:</p> <blockquote> <p>If an implementation does NOT provide such trashing, and does provide the user with some interface to view and/or undelete trashed files, it SHOULD make a “best effort” to show files trashed in top directories (by both methods) to the user, among other trashed files or in a clearly accessible separate way.</p> </blockquote> <h2>Traduction</h2> <p>Corbeille-SpaceFM peut être traduit:</p> <ul> <li><p>Cliquer droit sur une des commandes de Corbeille-SpaceFM et sélectionner <em>Command | Browse | Files</em>. Ouvrir le fichier <code>init.inc.sh</code>, situé à la racine du dossier. Les phrases à traduire se trouvent dans les sections <em>Localization, 1 of 2</em> et <em>Localization, 2 of 2</em>.</p></li> <li><p>Cliquer droit sur une des commandes de Corbeille-SpaceFM et sélectionner <em>Command | Browse | Plugin</em>. Ouvrir le fichier <code>plugin</code>, situé à la racine du dossier. Les phrases à traduire se présentent sous la forme suivante:</p> <pre><code>cstm_00000000-label=Phrase à traduire cstm_00000000-desc=Phrase à traduire </code></pre></li> </ul> <p>Toute personne intéressée à effectuer une traduction peut donc traduire les phrases et m'envoyer le résultat. Pour l'instant, Corbeille-SpaceFM est disponible en français et en anglais.</p> <h2>Développement</h2> <p>Le logiciel Git est utilisé pour la gestion de versions. <a href="http://jpfleury.indefero.net/p/corbeille-spacefm/source/tree/master/">Le dépôt peut être consulté en ligne ou récupéré en local.</a></p> <p>Corbeille-SpaceFM dispose également d'un <a href="http://jpfleury.indefero.net/p/corbeille-spacefm/issues/">système de suivi</a>, sur lequel les rapports de bogues et les suggestions peuvent être soumis.</p> <h2>Licence</h2> <p>Auteur: Jean-Philippe Fleury <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#x3a;&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;">&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;</a><br /> Copyright © Jean-Philippe Fleury, 2012.</p> <p>Ce programme est un logiciel libre; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU General Public License telle que publiée par la Free Software Foundation: soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.</p> <p>Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE: sans même la garantie implicite de COMMERCIALISABILITÉ ni d'ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence publique générale GNU pour plus de détails.</p> <p>Vous devriez avoir reçu une copie de la Licence publique générale GNU avec ce programme; si ce n'est pas le cas, consultez <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> Thu, 05 Apr 2012 15:27:00 -0400 Bascule: déplacer la fenêtre active d'un écran à un autre http://www.jpfleury.net/logiciels/bascule.php http://www.jpfleury.net/logiciels/bascule.php <!-- APERÇU: automatique --> <p lang="en"><strong><a hreflang="en" href="http://www.jpfleury.net/en/software/bascule.php">Read this page in English.</a></strong></p> <h2>Aperçu</h2> <p>Bascule est un script Bash permettant de déplacer la fenêtre active d'un écran à un autre sous GNU/Linux à l'aide d'un raccourci-clavier.</p> <p>Bascule supporte deux écrans (de même résolution ou non) ayant un segment latéral qui se touche, peu importe la position sur l'axe des y, par exemple:</p> <pre><code> |¯¯¯¯¯¯¯¯¯¯¯| | | | | | | |___________| |¯¯¯¯¯¯¯¯¯¯¯| | | | | | | |___________| |¯¯¯¯¯¯¯¯¯¯¯| | | |¯¯¯¯¯¯¯¯¯¯¯| | | | | | |___________| | | |___________| |¯¯¯¯¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯| | | | | | | | | | |___________|___________| |¯¯¯¯¯¯¯¯¯¯¯| | | | |¯¯¯¯¯¯¯¯¯¯¯| | | | |___________| | | | |___________| |¯¯¯¯¯¯¯¯¯¯¯| | | | | | | |___________| |¯¯¯¯¯¯¯¯¯¯¯| | | | | | | |___________| </code></pre> <p>Bascule prend également en compte les tableaux de bord, peu importe leur nombre et leur emplacement. Ainsi, une fenêtre déplacée vers un autre écran ne sera jamais cachée en partie sous un tableau de bord, ni étendue au-delà du nouvel écran. Une fenêtre maximisée le demeurera sur le nouvel écran.</p> <p>Bascule est inspiré d'un <a href="http://ubuntuforums.org/showthread.php?p=10210628#post10210628">script présenté sur le forum anglophone d'Ubuntu</a>.</p> <h2>Dépendances</h2> <p>Les paquets suivants doivent être installés:</p> <ul> <li><code>wmctrl</code></li> <li><code>x11-utils</code></li> <li><code>xdotool</code></li> </ul> <h2>Installation</h2> <ul> <li><p><a href="http://jpfleury.indefero.net/p/bascule/source/download/master/">Télécharger l'archive de la dernière version.</a></p></li> <li><p>Extraire l'archive.</p></li> </ul> <h3>Utilisateur courant</h3> <p>Le script est prêt à être utilisé par l'utilisateur courant.</p> <h3>Tous les utilisateurs</h3> <p>Pour rendre accessible le script à tous les utilisateurs, ajouter le fichier <code>bascule.sh</code> dans le dossier <code>/usr/bin/</code> (nécessite d'avoir les droits d'administration).</p> <p>Dans ce cas, le dossier créé par l'extraction de l'archive peut être effacé ou mis à la corbeille après la copie.</p> <h2>Désinstallation</h2> <h3>Utilisateur courant</h3> <p>Supprimer simplement le dossier créé par l'extraction de l'archive.</p> <h3>Tous les utilisateurs</h3> <p>Supprimer le fichier précédemment copié dans <code>/usr/bin/</code> (nécessite d'avoir les droits d'administration).</p> <h2>Utilisation</h2> <ul> <li><p>Ouvrir le script <code>bascule.sh</code> dans un éditeur de texte et renseigner les quelques variables au début du fichier (section <em>Variables à modifier.</em>).</p></li> <li><p>Ouvrir le gestionnaire de raccourcis-clavier offert par son gestionnaire de bureau (exemple sous Xfce: <em>Menu principal > Paramètres > Gestionnaire de paramètres > Clavier > Raccourcis des applications</em>).</p></li> <li><p>Assigner le raccourci voulu à Bascule en précisant le chemin du script dans le dossier local ou dans <code>/usr/bin/</code>, selon le cas.</p></li> </ul> <p>Utiliser ce raccourci clavier va déplacer la fenêtre active d'un écran à un autre.</p> <h2>Développement</h2> <p>Le logiciel Git est utilisé pour la gestion de versions. <a href="http://jpfleury.indefero.net/p/bascule/source/tree/master/">Le dépôt peut être consulté en ligne ou récupéré en local.</a></p> <p>Bascule dispose également d'un <a href="http://jpfleury.indefero.net/p/bascule/issues/">système de suivi</a>, sur lequel les rapports de bogues et les suggestions peuvent être soumis.</p> <h2>Licence</h2> <p>Auteur: Jean-Philippe Fleury <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#x3a;&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;">&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;</a><br /> Copyright © Jean-Philippe Fleury, 2012.</p> <p>Ce programme est un logiciel libre; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU General Public License telle que publiée par la Free Software Foundation: soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.</p> <p>Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE: sans même la garantie implicite de COMMERCIALISABILITÉ ni d'ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence publique générale GNU pour plus de détails.</p> <p>Vous devriez avoir reçu une copie de la Licence publique générale GNU avec ce programme; si ce n'est pas le cas, consultez <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> Mon, 23 Jan 2012 23:14:00 -0500 Open URI Context Menu: ouvrir une URI à partir de gedit http://www.jpfleury.net/logiciels/open-uri-context-menu.php http://www.jpfleury.net/logiciels/open-uri-context-menu.php <!-- APERÇU: automatique --> <p lang="en"><strong><a hreflang="en" href="http://www.jpfleury.net/en/software/open-uri-context-menu.php">Read this page in English.</a></strong></p> <h2>À propos</h2> <p>«Open URI Context Menu» est un greffon pour gedit, l'éditeur de texte par défaut de Gnome. Ce greffon ajoute deux options dans le menu contextuel lors d'un clic droit sur une URI contenue dans le texte d'un fichier: ouverture dans le navigateur ou ouverture dans gedit pour consultation du code source.</p> <p>La <a href="http://wiki.sukimashita.com/GEdit_Plugins">version originale</a> a été développée par Martin Szulecki pour gedit 2.</p> <p>Le présent dépôt constitue un portage du greffon vers gedit 3.</p> <h2>Dépendances</h2> <p>Le greffon utilise la commande <code>xdg-open</code> du paquet <code>xdg-utils</code>.</p> <h2>Installation</h2> <ul> <li><p><a href="http://jpfleury.indefero.net/p/open-uri-context-menu/source/download/master/">Télécharger l'archive de la dernière version.</a></p></li> <li><p>Extraire l'archive.</p></li> <li><p>Copier les fichiers <code>open-uri-context-menu.plugin</code> et <code>open-uri-context-menu.py</code> dans le dossier suivant:</p> <pre><code>~/.local/share/gedit/plugins/ </code></pre></li> <li><p>Activer le greffon dans le menu <em>Édition > Préférences > Greffons</em> de gedit.</p></li> </ul> <h2>Développement</h2> <p>Le logiciel Git est utilisé pour la gestion de versions. <a href="http://jpfleury.indefero.net/p/open-uri-context-menu/source/tree/master/">Le dépôt peut être consulté en ligne ou récupéré en local.</a></p> <p>«Open URI Context Menu» dispose également d'un <a href="http://jpfleury.indefero.net/p/open-uri-context-menu/issues/">système de suivi</a>, sur lequel les rapports de bogues et les suggestions peuvent être soumis.</p> <h2>Licence</h2> <p>Auteurs: Martin Szulecki <a href="&#x6d;&#x61;&#105;&#108;&#116;&#x6f;&#x3a;&#x6f;&#112;&#101;&#110;&#x73;&#x75;&#x73;&#101;&#64;&#115;&#x75;&#x6b;&#x69;&#109;&#97;s&#x68;&#x69;&#x74;&#97;&#46;c&#x6f;&#x6d;">&#x6f;&#112;&#101;&#110;&#x73;&#x75;&#x73;&#101;&#64;&#115;&#x75;&#x6b;&#x69;&#109;&#97;s&#x68;&#x69;&#x74;&#97;&#46;c&#x6f;&#x6d;</a>, Jean-Philippe Fleury <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#x3a;&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;">&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;</a><br /> Copyright © Martin Szulecki, 2007-2008.<br /> Copyright © Jean-Philippe Fleury, 2011.</p> <p>Ce programme est un logiciel libre; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU General Public License telle que publiée par la Free Software Foundation: soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.</p> <p>Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE: sans même la garantie implicite de COMMERCIALISABILITÉ ni d'ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence publique générale GNU pour plus de détails.</p> <p>Vous devriez avoir reçu une copie de la Licence publique générale GNU avec ce programme; si ce n'est pas le cas, consultez <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> Wed, 23 Nov 2011 22:48:00 -0500 oneko-css: petite image en noir et blanc de chat ou de chien sur son site web http://www.jpfleury.net/logiciels/oneko-css.php http://www.jpfleury.net/logiciels/oneko-css.php <!-- APERÇU: automatique --> <p lang="en"><strong><a hreflang="en" href="http://www.jpfleury.net/en/software/oneko-css.php">Read this page in English.</a></strong></p> <h2>Aperçu</h2> <p>oneko-css permet d'ajouter une petite image en noir et blanc de chat ou de chien dans une colonne de site web. Au chargement de la page, l'image est prise au hasard dans une banque de 64 images (32 de chat et 32 de chien).</p> <p>Voici quelques exemples:</p> <p><img src="http://jpfleury.indefero.net/p/oneko-css/source/tree/master/doc/exemples.png" width="204" height="416" alt="Exemples d'images de chat ou de chien affichées par oneko-css." /></a></p> <h2>Utilisation</h2> <ul> <li><p><a href="http://jpfleury.indefero.net/p/oneko-css/source/download/master/">Télécharger l'archive de la dernière version.</a></p></li> <li><p>Extraire l'archive.</p></li> <li><p>Copier le dossier extrait dans un espace d'hébergement web.</p></li> <li><p>Visiter la démo (fichier <code>demo.php</code>).</p></li> </ul> <p>Il ne reste plus qu'à intégrer les fichiers à votre site web selon votre configuration et vos préférences.</p> <h2>Développement</h2> <p>Le logiciel Git est utilisé pour la gestion de versions. <a href="http://jpfleury.indefero.net/p/oneko-css/source/tree/master/">Le dépôt peut être consulté en ligne ou récupéré en local.</a></p> <p>oneko-css dispose également d'un <a href="http://jpfleury.indefero.net/p/oneko-css/issues/">système de suivi</a>, sur lequel les rapports de bogues et les suggestions peuvent être soumis.</p> <h2>Licence</h2> <p>Auteur: Jean-Philippe Fleury <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#x3a;&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;">&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;</a><br /> Copyright © Jean-Philippe Fleury, 2011-2012.</p> <p>Ce programme est un logiciel libre; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU Affero General Public License telle que publiée par la Free Software Foundation: soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.</p> <p>Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE: sans même la garantie implicite de COMMERCIALISABILITÉ ni d'ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence publique générale GNU Affero pour plus de détails.</p> <p>Vous devriez avoir reçu une copie de la Licence publique générale GNU Affero avec ce programme; si ce n'est pas le cas, consultez <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> <h3>Matériel tiers</h3> <p>Toutes les images proviennent du <a href="http://packages.ubuntu.com/oneiric/oneko">logiciel oneko</a>, publié dans le <a href="http://changelogs.ubuntu.com/changelogs/pool/universe/o/oneko/oneko_1.2.sakura.6-7/oneko.copyright">domaine public</a>.</p> Wed, 26 Oct 2011 13:57:00 -0400 Clearwaita: thème GTK2/GTK3 proche visuellement de Clearlooks http://www.jpfleury.net/logiciels/clearwaita.php http://www.jpfleury.net/logiciels/clearwaita.php <!-- APERÇU: automatique --> <p lang="en"><strong><a hreflang="en" href="http://www.jpfleury.net/en/software/clearwaita.php">Read this page in English.</a></strong></p> <h2>À propos</h2> <p><strong>Clearwaita = Clearlooks + Adwaita</strong></p> <p>Clearwaita est un thème GTK2/GTK3. Les fichiers pour GTK3 correspondent à une modification d'Adwaita, le thème par défaut de Gnome 3, pour en faire un thème proche visuellement de Clearlooks. Les fichiers pour GTK2 sont une copie non modifiée du thème Clearlooks original.</p> <p>Aussi, des fichiers pour les gestionnaires de fenêtres Metacity, Openbox et Xfwm4 sont inclus.</p> <p>Voici deux captures d'écran (cliquer pour télécharger l'image au format original):</p> <p><a href="http://jpfleury.indefero.net/p/clearwaita/source/tree/master/doc/exemple1.png"><img src="http://jpfleury.indefero.net/p/clearwaita/source/tree/master/doc/exemple1.png" alt="Capture d'écran du bureau sous Gnome 3 (mode fallback) avec le thème Clearwaita" width="684" height="482" /></a></p> <p><a href="http://jpfleury.indefero.net/p/clearwaita/source/tree/master/doc/exemple2.png"><img src="http://jpfleury.indefero.net/p/clearwaita/source/tree/master/doc/exemple2.png" alt="Capture d'écran de gedit 3 avec le thème Clearwaita" width="684" height="565" /></a></p> <h2>Dépendances</h2> <p>S'assurer que le paquet <code>gnome-themes-standard</code> est installé. Ça devrait être le cas sous Gnome 3, mais pas sous Xfce.</p> <h2>Installation</h2> <ul> <li><p><a href="http://jpfleury.indefero.net/p/clearwaita/source/download/master/">Télécharger l'archive de la dernière version.</a></p></li> <li><p>Extraire l'archive.</p></li> <li><p>Renommer le dossier extrait en <code>Clearwaita</code>.</p></li> <li><p>Copier le dossier <code>Clearwaita</code> dans un des deux emplacements suivants:</p> <ul> <li><p><code>~/.themes/</code> pour l'utilisateur courant;</p></li> <li><p><code>/usr/share/themes/</code> pour tous les utilisateurs, incluant le style des logiciels lancés en tant que superutilisateur (par exemple Synaptic).</p></li> </ul></li> <li><p>Ensuite, choisir le thème Clearwaita:</p> <ul> <li><p>sous Gnome: avec le logiciel <a href="https://live.gnome.org/GnomeTweakTool">gnome-tweak-tool</a>;</p></li> <li><p>sous Xfce: en allant dans <em>Paramètres > Apparence</em> du menu principal pour le thème GTK, et dans <em>Paramètres > Gestionnaire de fenêtres</em> pour le thème de Xfwm4.</p></li> </ul></li> </ul> <h2>Configuration</h2> <p>Par défaut, le texte des icônes sur un bureau géré par Nautilus est noir. Pour afficher le texte en blanc, ouvrir le fichier <code>gtk-3.0/gtk.css</code> dans un éditeur de texte, trouver la ligne suivante (à la fin du fichier):</p> <pre><code>/*@import url("apps/nautilus.css");*/ </code></pre> <p>et la décommenter, ce qui donne:</p> <pre><code>@import url("apps/nautilus.css"); </code></pre> <p>Pour avoir une couleur personnalisée, modifier la couleur directement dans le fichier <code>gtk-3.0/apps/nautilus.css</code>.</p> <h2>Icônes et arrière-plan</h2> <p>Sur les captures d'écran, le thème d'icônes utilisé est Mist, installé avec le paquet <a href="http://packages.ubuntu.com/oneiric/gnome-themes"><code>gnome-themes</code></a>.</p> <p>L'arrière-plan est une légère modification d'une <a href="http://www.volvoguy.net/ubuntu/">image de volvoguy</a>.</p> <h2>Développement</h2> <p>Le logiciel Git est utilisé pour la gestion de versions. <a href="http://jpfleury.indefero.net/p/clearwaita/source/tree/master/">Le dépôt peut être consulté en ligne ou récupéré en local.</a></p> <p>Clearwaita dispose également d'un <a href="http://jpfleury.indefero.net/p/clearwaita/issues/">système de suivi</a>, sur lequel les rapports de bogues et les suggestions peuvent être soumis.</p> <h2>Licence</h2> <p>Auteur: Jean-Philippe Fleury <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#x3a;&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;">&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;</a><br /> Copyright © Jean-Philippe Fleury, 2011-2012.</p> <p>Ce programme est un logiciel libre; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU General Public License telle que publiée par la Free Software Foundation: soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.</p> <p>Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE: sans même la garantie implicite de COMMERCIALISABILITÉ ni d'ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence publique générale GNU pour plus de détails.</p> <p>Vous devriez avoir reçu une copie de la Licence publique générale GNU avec ce programme; si ce n'est pas le cas, consultez <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> <h3>Matériel tiers</h3> <ul> <li><p>Thème Adwaita, provenant du paquet <a href="http://packages.ubuntu.com/oneiric/gnome-themes-standard"><code>gnome-themes-standard</code></a>, sous licence LGPL.</p></li> <li><p>Fichier <code>gtk-2.0/gtkrc</code>, provenant du paquet <a href="http://packages.ubuntu.com/oneiric/gtk2-engines"><code>gtk2-engines</code></a>, sous licence LGPL.</p></li> <li><p>Fichier <code>metacity-1/metacity-theme-1.xml</code>, provenant du paquet <a href="http://packages.ubuntu.com/oneiric/gnome-themes-selected"><code>gnome-themes-selected</code></a>, sous licence LGPL.</p></li> <li><p>Fichier <code>openbox-3/themerc</code>, provenant du paquet <a href="http://packages.ubuntu.com/oneiric/openbox"><code>openbox</code></a>, sous licence GPL.</p></li> <li><p>Thème <a href="http://xfce-look.org/content/show.php/Clearlooks+for+XFWM4?content=137055">Clearlooks XFWM4</a>, sous licence GPL.</p></li> </ul> Wed, 26 Oct 2011 13:58:00 -0400 GConjugo, apprentissage de la conjugaison dans plusieurs langues http://www.jpfleury.net/logiciels/gconjugo.php http://www.jpfleury.net/logiciels/gconjugo.php <!-- APERÇU: automatique --> <p>GConjugo est un logiciel libre permettant de pratiquer la conjugaison des verbes dans plusieurs langues et selon plusieurs niveaux de difficulté. Il est développé par Maxence Dolle.</p> <img class="imgCentre" src="http://www.gconjugo.org/site/fichiers/galeries/captures-d-ecran/gconjugo-entrainement-correction.png" alt="Correction d'un exercice de conjugaison en espagnol en mode entraînement" width="500" height="348" /> <p class="centre"><a href="http://www.gconjugo.org/"><img class="imgSansBordure" src="http://www.squeletml.net/site/fichiers/en-savoir-plus.png" alt="En savoir plus sur GConjugo" width="272" height="70" /></a></p> Jean-Philippe Fleury Tue, 08 Mar 2011 00:00:00 -0500 pdfmm: assistant graphique pour réduire la taille d'un fichier PDF http://www.jpfleury.net/logiciels/pdfmm.php http://www.jpfleury.net/logiciels/pdfmm.php <!-- APERÇU: automatique --> <p lang="en"><strong><a hreflang="en" href="http://www.jpfleury.net/en/software/pdfmm.php">Read this page in English.</a></strong></p> <h2>Aperçu</h2> <p>pdfmm (pour «pdf moins moins», ou «pdf--») est un assistant graphique pour réduire la taille d'un fichier PDF.</p> <p><img src="http://jpfleury.indefero.net/p/pdfmm/source/tree/master/doc/exemple1-fr.png" width="446" height="287" alt="Assistant graphique de réduction de la taille des fichiers PDF" /></p> <p>Voici quelques résultats obtenus avec des fichiers PDF choisis au hasard:</p> <table> <thead> <tr> <th>Taille de départ</th> <th>Taille à la sortie</th> <th>% d'optimisation</th> </tr> </thead> <tbody> <tr> <td>29 Kio</td> <td>23 Kio</td> <td>20 %</td> </tr> <tr> <td>363 Kio</td> <td>72 Kio</td> <td>80 %</td> </tr> <tr> <td>733 Kio</td> <td>658 Kio</td> <td>10 %</td> </tr> <tr> <td>991 Kio</td> <td>349 Kio</td> <td>65 %</td> </tr> <tr> <td>1,7 Mio</td> <td>0,8 Mio</td> <td>52 %</td> </tr> <tr> <td>1,9 Mio</td> <td>1,1 Mio</td> <td>40 %</td> </tr> <tr> <td>2,3 Mio</td> <td>1,6 Mio</td> <td>31 %</td> </tr> <tr> <td>3,4 Mio</td> <td>1,3 Mio</td> <td>60 %</td> </tr> <tr> <td>7,1 Mio</td> <td>5,4 Mio</td> <td>23 %</td> </tr> <tr> <td>14,8 Mio</td> <td>9,4 Mio</td> <td>36 %</td> </tr> <tr> <td>54,3 Mio</td> <td>14,6 Mio</td> <td>73 %</td> </tr> </tbody> </table> <p>Bien sûr, ces chiffres sont donnés seulement à titre d'exemples. Le résultat ne sera sûrement pas le même avec d'autres fichiers de taille similaire. Tout dépend du contenu.</p> <h2>Dépendances</h2> <p>pdfmm est un script shell dépendant de bash (>= 4.0), zenity et ghostscript.</p> <h2>Installation</h2> <ul> <li><p><a href="http://jpfleury.indefero.net/p/pdfmm/source/download/master/">Télécharger l'archive de la dernière version.</a></p></li> <li><p>Extraire l'archive.</p></li> </ul> <h3>Utilisateur courant</h3> <p>Le script est prêt à être utilisé par l'utilisateur courant.</p> <h3>Tous les utilisateurs</h3> <p>Pour rendre accessible le script à tous les utilisateurs, ajouter le fichier <code>pdfmm</code> dans le dossier <code>/usr/bin/</code> (nécessite d'avoir les droits d'administration).</p> <p>Dans ce cas, le dossier créé par l'extraction de l'archive peut être effacé ou mis à la corbeille après la copie.</p> <h2>Désinstallation</h2> <h3>Utilisateur courant</h3> <p>Supprimer simplement le dossier créé par l'extraction de l'archive.</p> <h3>Tous les utilisateurs</h3> <p>Supprimer le fichier <code>pdfmm</code> précédemment copié dans <code>/usr/bin/</code> (nécessite d'avoir les droits d'administration).</p> <h2>Utilisation</h2> <p><strong>Notes:</strong></p> <ul> <li><p>Aucun fichier original n'est modifié. Le fichier optimisé est créé dans le même dossier que le fichier original.</p></li> <li><p>Un fichier de configuration est créé dans le dossier personnel de l'utilisateur lançant <code>pdfmm</code>:</p> <pre><code>~/.config/pdfmm.conf </code></pre> <p>Ce fichier contient le dossier du dernier fichier sélectionné. C'est ce dossier qui sera proposé par défaut lors de la prochaine ouverture de <code>pdfmm</code>.</p></li> </ul> <h3>Utilisateur courant</h3> <p>Pour utiliser le script dans une console, lancer le fichier <code>pdfmm</code> en précisant son chemin d'accès:</p> <pre><code>chemin/vers/pdfmm </code></pre> <p>Si vous vous trouvez dans le même dossier que le fichier <code>pdfmm</code>, la commande est:</p> <pre><code>./pdfmm </code></pre> <p>Dans tous les cas, il est possible de préciser en argument le fichier PDF à optimiser, par exemple:</p> <pre><code>./pdfmm chemin/vers/le/fichier.pdf </code></pre> <p>Il est également possible d'ouvrir le script en cliquant sur le fichier <code>pdfmm</code> (simple clic ou double clic selon votre configuration) et en choisissant de le lancer.</p> <p>Vous pouvez également créer un lanceur dont la commande correspond au chemin absolu vers le fichier, par exemple:</p> <pre><code>/home/NOM/chemin/vers/pdfmm </code></pre> <h3>Tous les utilisateurs</h3> <p>Dans une console, simplement saisir <code>pdfmm</code>. Le fichier PDF à optimiser peut être précisé en argument.</p> <p>Un lanceur peut également être créé. Dans ce cas, la commande est simplement <code>pdfmm</code>.</p> <h2>Traduction</h2> <p>pdfmm peut s'afficher dans plusieurs langues. Toute personne intéressée à effectuer une traduction peut donc traduire les phrases présentes dans la section <em>Localisation</em> du fichier <code>pdfmm</code> et m'envoyer le résultat. Pour l'instant, pdfmm est disponible en français et en anglais.</p> <h2>Développement</h2> <p>Le logiciel Git est utilisé pour la gestion de versions. <a href="http://jpfleury.indefero.net/p/pdfmm/source/tree/master/">Le dépôt peut être consulté en ligne ou récupéré en local.</a></p> <p>pdfmm dispose également d'un <a href="http://jpfleury.indefero.net/p/pdfmm/issues/">système de suivi</a>, sur lequel les rapports de bogues et les suggestions peuvent être soumis.</p> <h2>Licence</h2> <p>Auteur: Jean-Philippe Fleury <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#x3a;&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;">&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;</a><br /> Copyright © Jean-Philippe Fleury, 2011-2012.</p> <p>Ce programme est un logiciel libre; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU General Public License telle que publiée par la Free Software Foundation: soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.</p> <p>Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE: sans même la garantie implicite de COMMERCIALISABILITÉ ni d'ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence publique générale GNU pour plus de détails.</p> <p>Vous devriez avoir reçu une copie de la Licence publique générale GNU avec ce programme; si ce n'est pas le cas, consultez <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> Wed, 26 Oct 2011 21:48:00 -0400 MyNotex, logiciel libre de prise et de gestion de notes http://www.jpfleury.net/logiciels/mynotex.php http://www.jpfleury.net/logiciels/mynotex.php <!-- APERÇU: automatique --> <div class="chapeau"> <p class="legende"><span>Résumé</span></p> <div class="contenuChapeau"> <p>Ceci est une traduction de la <a href="http://sites.google.com/site/mynotex/">page d'accueil du site de MyNotext</a>, un logiciel libre de prise et de gestion de notes. Le développeur de MyNotex est Massimo Nardello.</p></div><!-- /.contenuChapeau --> </div><!-- /.chapeau --> <p><strong>MyNotex est un logiciel libre sous GNU/Linux pour la prise et la gestion de notes.</strong> Les notes sont classées par sujet et sont composées d'un titre, d'une date, de mots clés (étiquettes) et d'un contenu textuel. Le contenu peut être mis en forme (police, taille, couleur, surlignage, gras, italique, souligné et barré). MyNotex gère également l'alignement des paragraphes ainsi que les listes non ordonnées et ordonnées avec indentation automatique. Un fichier MyNotex peut contenir plusieurs sujets et notes.</p> <p><strong>Voici quelques exemples d'utilisation de MyNotex:</strong></p> <ul> <li><p>Prendre des notes lors de réunions, de cours, de conférences, etc.</p></li> <li><p>Écrire et conserver des idées, des mémos, des lettres, des rapports, des agendas, des projets, etc.</p></li> <li><p>Écrire et conserver des rapports chiffrés de réunions confidentielles.</p></li> <li><p>Écrire et conserver des séries de cours et de conférences.</p></li> <li><p>Écrire et tenir un journal (quotidien ou non).</p></li> <li><p>Dresser et tenir une liste d'articles au format PDF (joindre chaque fichier PDF à une note classée dans un sujet thématique, insérer l'auteur et le titre de l'article dans le titre de la note, et insérer le résumé dans le texte de la note ou les mots clés; ainsi, il est possible de faire appel à la fonction de recherche de MyNotex pour retrouver l'article).</p></li> <li><p>Écrire et conserver des archives de code source (pour les programmeurs).</p></li> <li><p>Écrire et conserver des critiques de livres, de films, etc.</p></li> <li><p>Recueillir de nombreux documents écrits simples (sans image, note de bas de page, titre, etc.) dans un seul fichier.</p></li> <li><p>Créer une archive de textes en ligne (articles de magazines en ligne, blogues, etc.) en les copiant à partir du navigateur.</p></li> <li><p>Conserver une liste chiffrée de mots de passe.</p></li> <li><p>Gérer une liste de tâches.</p></li> <li><p>Partager des notes et des documents avec d'autres.</p></li> </ul> <p><strong>Les nouvelles fonctionnalités ajoutées dans la version 1.2.0 sont:</strong></p> <ul> <li><p>Alignement des paragraphes et indentation des listes.</p></li> <li><p>Surlignage du texte.</p></li> <li><p>Possibilité d'activer la synchronisation automatique lorsqu'un fichier est ouvert ou fermé.</p></li> <li><p>Paramétrage du niveau de transparence de l'interface.</p></li> <li><p>Création de liens dans le texte d'une note vers d'autres notes.</p></li> <li><p>Ajout d'une pièce jointe ou de plusieurs à la fois par glisser-déposer.</p></li> <li><p>Recherche par date.</p></li> </ul> <p><strong>Les autres principales fonctionnalités du logiciel sont les suivantes:</strong></p> <ul> <li><p>Ajout de pièces jointes (fichiers de tout type) aux notes. Les pièces jointes sont compressées et conservées dans un dossier situé dans le même emplacement que le fichier MyNotex et portant le même nom (sans l'extension), et sont gérées par le logiciel. Leur nombre n'est limité que par l'espace disque disponible.</p></li> <li><p>Chiffrement du contenu des notes avec l'algorithme AES.</p></li> <li><p>Recherche dans le titre des sujets, le titre et le texte des notes, le nom des pièces jointes, la date et les mots clés.</p></li> <li><p>Recherche à l'aide de plusieurs mots clés (condition de type OU) ou entre deux dates.</p></li> <li><p>Liste des mots clés utilisés dans le fichier en cours d'utilisation, utile pour les ajouter par double clic lors de la création d'une note ou lors d'une recherche.</p></li> <li><p>Déplacement d'une note (et de ses pièces jointes, s'il y a lieu) d'un sujet à un autre.</p></li> <li><p>Importation d'un sujet et de ses notes et ses pièces jointes à partir d'un autre fichier MyNotex, ou exportation vers un autre fichier.</p></li> <li><p>Importation de fichiers texte ou de documents texte d'OpenOffice.org ou de LibreOffice.</p></li> <li><p>Importation de notes créées avec Tomboy ou Gnote.</p></li> <li><p>Ouverture du texte de la note actuelle dans OpenOffice.org ou LibreOffice (utile entre autres pour imprimer la note).</p></li> <li><p>Exportation des données au format HTML, pouvant facilement être ouvert avec un traitement de texte comme OpenOffice.org ou LibreOffice.</p></li> </ul> <p>Enfin, il est possible de synchroniser deux fichiers MyNotex différents pour faire en sorte que les modifications (ajout, modification ou suppression de sujets, de notes ou de pièces jointes) dans chacun d'eux soient répercutés dans l'autre; ainsi, à la fin du processus, les deux fichiers et leur dossier de pièces jointes sont identiques. Cette fonctionnalité permet de modifier hors ligne plusieurs fichiers MyNotex pour ensuite les synchroniser par Internet ou LAN, ou par un service d'hébergement de données dans les nuages comme Dropbox ou Ubuntu One.</p> <p>Un fichier MyNotex correspond à une base de données <a href="http://www.sqlite.org/">SQLite</a>, moteur de base de données populaire dont le contenu peut être lu et exporté facilement grâce à différents outils disponibles sur Internet. La version de SQLite utilisée par MyNotex est 3.7.2-1 ou une version plus récente (disponible depuis Ubuntu 10.04), mais MyNotex devrait fonctionner également avec toute version égale ou supérieure à 3.</p> <p>L'utilisation de SQLite et l'absence d'une structure en arborescence pour afficher le titre des sujets et des notes démarquent MyNotex des autres logiciels de prise de notes. <em>MyNotex a été développé dans un soucis de gestion d'un très grand nombre de notes, même s'il peut être utilisé plus modestement pour seulement quelques notes. L'utilisation de grilles au lieu d'une structure en arborescence ainsi que du format SQLite au lieu d'un fichier XML offre une robustesse et une vitesse accrues lors de la manipulation d'une grande quantité de données.</em> Cela rend MyNotex utile non seulement pour un usage personnel, mais aussi pour partager de nombreux documents au sein d'un groupe ou d'une organisation. Voir plus bas le résultat d'un test de charge.</p> <p>MyNotex est en anglais par défaut, mais s'il est installé à partir du paquet deb, il sera automatiquement traduit, s'il y a lieu, en allemand, en français ou en italien, selon la langue du système. Si seul l'exécutable est téléchargé, lancer MyNotex et aller dans <em>Tools – Set language...</em> pour installer un fichier de langue disponible sur la <a href="http://sites.google.com/site/mynotex/files">page de téléchargement</a> du site Web de Mynotex. Il est également possible d'ouvrir avec un éditeur de texte le fichier <code>english.lng</code> (un simple fichier texte) présent dans le dossier d'installation du logiciel (<code>/usr/lib/mynotex</code>) ou obtenu sur la <a href="http://sites.google.com/site/mynotex/files">page de téléchargement</a>, y traduire toutes les phrases dans la langue voulue à partir de l'anglais et l'installer.</p> <p><strong>MyNotex a été développé avec <a href="http://www.lazarus.freepascal.org/">Lazarus</a></strong> et les composants suivants: <a href="http://wiki.freepascal.org/ZVDateTimeControls_Package">TDBZVDateTimePicker</a>, <a href="http://wiki.freepascal.org/RichMemo">TRichMemo</a> (version modifiée) et <a href="http://wiki.lazarus.freepascal.org/DCPcrypt">DCPcrypt</a>. Il a été développé et testé sous Ubuntu 11.10 et compilé pour Gnome.</p> <p><strong>MyNotex est un logiciel libre et est publié sous la Licence publique générale GNU, version 3 (http://www.gnu.org/licenses/gpl-3.0.txt).</strong></p> <p>Le développeur (Massimo Nardello) ne prévoit pas publier de version de MyNotex pour Windows et Mac OS, et ce à cause d'un manque de temps et de ses préférences pour les logiciels libres. À tout le moins, l'EDI (environnement de développement intégré) utilisé (Lazarus) peut compiler le même code pour GNU/Linux, Windows et Mac OS. Ainsi, MyNotex peut en théorie être compilé pour ces plate-formes, mais le code devrait préalablement être revu; et la modification du composant TRichMemo, complétée.</p> <p>L'auteur de MyNotex tient à remercier Jean-Philippe Fleury pour sa participation au débogage du logiciel et pour ses suggestions d'amélioration.</p> <h2>Captures d'écran</h2> <p>Voici une capture d'écran de la version actuelle de MyNotex:</p> <p class="centre"><a class="sansDecoration" href="http://www.jpfleury.net/site/fichiers/mynotex/mynotex-grand.png"><img class="sansBordure" src="http://www.jpfleury.net/site/fichiers/mynotex/mynotex-petit.png" width="640" height="487" alt="Interface de MyNotex" /><br /> Cliquer sur l'image pour l'agrandir</a></p> <div class="blocArrondi"> <div class="haut-droit"></div><div class="haut-gauche"></div><div class="contenuBloc"> <span class="licence"><a href="http://www.gnu.org/licenses/gpl.html"><img src="http://www.jpfleury.net/fichiers/licence-gnu-gpl-80x15.png" width="80" height="15" alt="Licence publique générale de GNU, version 3 ou toute version ultérieure" /></a> Mis à disposition sous la <a href="http://www.gnu.org/licenses/gpl.html">licence publique générale de GNU, version 3 ou toute version ultérieure</a>.</span> </div><!-- /.contenuBloc --><div class="bas-droit"></div><div class="bas-gauche"></div> </div> <!-- /.blocArrondi --> <p><a href="http://sites.google.com/site/mynotex/#TOC-Screenshots">Voir d'autres captures d'écran de MyNotex.</a></p> <p><strong>Voici une vidéo de démonstration d'une ancienne version de MyNotex</strong> (version 1.1.1), créée par Jean-Philippe Fleury:</p> <div class="video"> <!--[if !IE]> --> <object type="application/x-shockwave-flash" data="http://www.youtube.com/v/HVrNk5jelfo?fs=1&amp;hl=fr_FR&amp;cc_load_policy=1" width="480" height="385"> <!-- <![endif]--> <!--[if IE]> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="480" height="385"> <param name="movie" value="http://www.youtube.com/v/HVrNk5jelfo?fs=1&amp;hl=fr_FR&amp;cc_load_policy=1" /> <!--><!-- http://Validifier.com --> </object> <!-- <![endif]--> </div> <!-- /.video --> <div class="blocArrondi"> <div class="haut-droit"></div><div class="haut-gauche"></div><div class="contenuBloc"> <p><span class="licence"><a href="http://www.gnu.org/licenses/gpl.html"><img src="http://www.jpfleury.net/fichiers/licence-gnu-gpl-80x15.png" width="80" height="15" alt="Licence publique générale de GNU, version 3 ou toute version ultérieure" /></a> Mis à disposition sous la <a href="http://www.gnu.org/licenses/gpl.html">licence publique générale de GNU, version 3 ou toute version ultérieure</a>.</span></p> <p><a href="http://www.jpfleury.net/site/fichiers/mynotex/video-mynotex.zip">Télécharger la vidéo originale au format Theora ainsi que les sous-titres (24&nbsp;Mio).</a></p> <div class="codeVideo"> <p class="bDtitre">Insérer cette vidéo sur votre site:</p> <div class="bDcorps gauche"> <pre><code>&lt;!--[if !IE]&gt; --&gt; &lt;object type="application/x-shockwave-flash" data="http://www.youtube.com/v/HVrNk5jelfo?fs=1&amp;amp;hl=fr_FR&amp;amp;cc_load_policy=1" width="480" height="385"&gt; &lt;!-- &lt;![endif]--&gt; &lt;!--[if IE]&gt; &lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="480" height="385"&gt; &lt;param name="movie" value="http://www.youtube.com/v/HVrNk5jelfo?fs=1&amp;amp;hl=fr_FR&amp;amp;cc_load_policy=1" /&gt; &lt;!--&gt;&lt;!-- http://Validifier.com --&gt; &lt;/object&gt; &lt;!-- &lt;![endif]--&gt;</code></pre> </div> </div> </div><!-- /.contenuBloc --><div class="bas-droit"></div><div class="bas-gauche"></div> </div> <!-- /.blocArrondi --> <h2>Aide et contacts</h2> <p>Pour poser des questions, partager des idées ou rapporter des bogues au sujet de MyNotex, il est possible de visiter le <a href="http://groups.google.com/forum/#!forum/mynotex">forum en ligne</a> ou de s'y inscrire. Ce forum est géré par Jean-Philippe Fleury. Les messages peuvent être écrits en anglais ou en français.</p> <p>Pour contacter l'auteur de MyNotex, écrire à ms.nardello &#95;arobas&#95; gmail &#95;point&#95; com. Cependant, ne pas le contacter pour du support sur l'installation ou l'utilisation du logiciel, car il ne peut malheureusement pas répondre individuellement à chaque demande.</p> <h2>Améliorations</h2> <p>La <a href="http://sites.google.com/site/mynotex/improvements">page des améliorations</a> liste les nouvelles fonctionnalités ajoutées au fil des versions de MyNotex.</p> <h2>Articles</h2> <p>La <a href="http://sites.google.com/site/mynotex/reviews">page des articles</a> liste les revues du logiciel publiées en ligne.</p> <h2>Demandes</h2> <p>La <a href="http://sites.google.com/site/mynotex/wish-list">page des demandes</a> liste les fonctionnalités suggérées qui seront implémentées dans MyNotex.</p> <h2>Rapports de bogue</h2> <p>La <a href="http://sites.google.com/site/mynotex/bugs-report">page des rapports de bogue</a> liste les problèmes connus de la version actuelle de MyNotex et qui seront résolus dans la prochaine version.</p> <h2>Téléchargement</h2> <p><strong>La dernière version stable de MyNotex est la 1.2.0, publiée le 10 décembre 2011.</strong></p> <p>La <a href="http://sites.google.com/site/mynotex/files">page de téléchargement</a> offre les fichiers suivants:</p> <ul> <li><p>Un paquet deb pour installer MyNotex sur Ubuntu avec Unity.</p></li> <li><p>Un paquet deb pour installer MyNotex sur Debian ou des distributions fondées sur cette dernière, mais sans Unity.</p></li> <li><p>Une archive contenant le fichier exécutable du programme, permettant d'utiliser MyNotex sur les autres distributions (télécharger l'archive, l'extraire, rendre exécutable le fichier, copier ce dernier dans le dossier voulu et le lancer; SQLite >= 3 doit être installé sur le système).</p></li> <li><p>Les fichiers de langue pour l'allemand, le français et l'italien (utiles seulement pour une installation de MyNotex sur des distributions non fondées sur Debian).</p></li> <li><p>Le manuel d'utilisation de MyNotex (en anglais, en français et en italien; la traduction en allemand est en cours) au format PDF.</p></li> <li><p>Le code source de MyNotex et du composant TRichMemo modifié.</p></li> </ul> <p><strong>Les paquets deb ainsi que le fichier exécutable sont disponibles en 32-bit et 64-bit.</strong></p> <p>Aller à la <a href="http://sites.google.com/site/mynotex/files">page de téléchargement</a>.</p> <h2>Test de charge</h2> <p>Pour tester la réactivité de MyNotex (version 1.0.6) avec une grande quantité de données, un fichier de 100000 notes a été créé grâce à un logiciel et a ensuite été divisé en 100 sujets (1000 notes par sujet); chaque note était composée d'un texte d'environ 15000 caractères, équivalant à quatre pages pleines au format A4 (totalisant un milliard et demi de caractères). Bien que le fichier avait une taille d'environ 1,5 Gio, le logiciel avait encore un bon temps de réponse, sauf pour la recherche dans le texte des notes, qui a pris environ 25 secondes. L'ordinateur utilisé pour le test est un portable muni d'un processeur Intel Core i5 et de 4 Gio de mémoire vive.</p> Jean-Philippe Fleury Tue, 28 Dec 2010 00:00:00 -0500 Une installation optimisée de Drupal http://www.jpfleury.net/tutoriels/installation-optimisee-de-drupal.php http://www.jpfleury.net/tutoriels/installation-optimisee-de-drupal.php <!-- APERÇU: automatique --> <p>Quelques pistes pour une installation optimisée de Drupal 6. Il s'agit d'un brouillon, une sorte de mémo, et il faudrait bien que je prenne le temps de faire du gros ménage là-dedans et d'en faire un tutoriel un peu plus abouti.</p> <h2>La base</h2> <p>Premièrement, on récupère la dernière version de Drupal. On trouvera le lien sur <a href="http://drupalfr.org/">l'accueil de Drupal francophone</a>. Ensuite on <a href="http://drupal.org/project/fr">télécharge les fichiers pour le français</a>. Une fois les deux archives extraites, on fusionne les dossiers, ce qui donne par exemple <code>cp -R fr-6.x-1.0/. drupal-6.9</code>. On installe le tout sur son serveur.</p> <h2>La configuration et les modules à ajouter</h2> <p>On a une installation de base de Drupal. Il va falloir ajouter ou configurer plusieurs modules pour modeler Drupal à notre convenance.</p> <h3>Option <em>URLs simplifiées</em></h3> <p>On active les URL simplifiées, option disponible par défaut dans Drupal.</p> <p>On passe donc maintenant de liens <code>?q=node/1</code> à des liens <code>node/83</code>.</p> <h3>Choisir entre conserver ou supprimer les www</h3> <p>Le contenu dupliqué est le fait qu'un même contenu puisse être accessible par plus d'une URL. C'est le cas par exemple si un site présente le même contenu sur exemple.com et www.exemple.com. Les moteurs de recherche essaient de réduire le contenu dupliqué dans leurs résultats. Par exemple, s'il y a du contenu dupliqué reconnu par Google, ce dernier affiche à la dernière page de résultats une phrase de ce type:</p> <blockquote> <p>Pour limiter les résultats aux pages les plus pertinentes (total : 128), Google a ignoré certaines pages à contenu similaire. Si vous le souhaitez, vous pouvez relancer la recherche en incluant les pages ignorées.</p> </blockquote> <p>C'est mieux de choisir soi-même. Commençons par choisir entre un site avec www ou un site sans www. Dans le .htaccess de Drupal, il y a une section qu'on peut décommenter. Voir ce qui suit ce paragraphe:</p> <pre><code># If your site can be accessed both with and without the 'www.' prefix, you # can use one of the following settings to redirect users to your preferred # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option: </code></pre> <h3>Page title</h3> <p>Le <a href="http://drupal.org/project/page_title">module Page Title</a> permet de personnaliser pour chaque page le contenu de la balise <code>title</code> dans l'en-tête HTML de notre page. Par exemple, on peut saisir soi-même le contenu, faire ajouter automatiquement le terme associé, etc. Dans ce dernier cas, s'il n'y a pas de terme, plusieurs séparateurs peuvent se suivre. Par exemple, si on met <code>[page-title] | [term] | [site-name]</code> comme contenu de la balise <code>title</code> et qu'il n'y a pas de terme, on va obtenir comme titre <code>Mon titre | | Mon site</code>. J'ai fait un rapport de bogue à ce sujet: <a href="http://drupal.org/node/386014">http://drupal.org/node/386014</a>.</p> <p>Pour ajouter la pagination dans le titre, voir la demande <a href="http://drupal.org/node/224262">http://drupal.org/node/224262</a> et le code proposé. En espérant que le correctif soit intégré au module Token bientôt.</p> <p>À noter que ce module dépend du <a href="http://drupal.org/project/token">module Token</a>.</p> <h3>Meta tags</h3> <p>Le <a href="http://drupal.org/project/nodewords">module Meta tags</a> permet de personnaliser plusieurs métabalises, dont <code>keywords</code> et <code>description</code>. Bien sûr le référencement ne repose plus sur les métabalises, mais il peut y avoir un intérêt quand même. Par exemple, le contenu de la balise <code>description</code> est souvent affiché dans les résultats des moteurs de recherche. Il y a donc un intérêt à la soigner. Pour sa part, la balise <code>keywords</code> pourrait permettre, si son contenu est personnalisé, d'éviter que certaines pages ayant un contenu ressemblant soient considérées comme du contenu dupliqué.</p> <p>Pour la pagination (page 1, page 2, etc.), ce module met pour l'instant <code>noindex</code>. Dans mon cas, ce n'est pas adapté parce que je mets une description de la catégorie sur ces pages. Voir <a href="http://drupal.org/node/294996">http://drupal.org/node/294996</a>, en espérant qu'un correctif soit apporté bientôt.</p> <h3>Pathauto</h3> <p>Le <a href="http://drupal.org/project/pathauto">module Pathauto</a> permet d'obtenir des URL plus parlantes, par exemple <code>ouverture-de-mon-site</code> au lieu de <code>node/1</code>. À noter que ce module dépend du module Path (livré par défaut avec un Drupal de base).</p> <p>Il est recommandé d'installer en complément le module Path redirect.</p> <p>Note: pour que la redirection de flux RSS fonctionne, il faut mettre <code>0/feed</code> dans le champ «Internal feed alias text (leave blank to disable) :». Voir <a href="http://drupal.org/node/263199">Taxonomy term path feed problem</a>.</p> <h3>Path redirect</h3> <p>Le <a href="http://drupal.org/project/path_redirect">module Path redirect</a> permet de rediriger d'anciennes adresses vers les nouvelles dans le cas où on modifie l'URL d'une page. Quand le module Pathauto est également installé, ce dernier peut être configuré pour faire automatiquement les redirections.</p> <h3>Global Redirect</h3> <p>Le <a href="http://drupal.org/project/globalredirect">module Global Redirect</a> s'assure qu'il n'y a pas de page ayant deux adresses différentes. Si une page est accessible par exemple par <code>node/1</code> et <code>ouverture-de-mon-site</code>, le module va effectuer une redirection 301 de la première adresse vers la seconde.</p> <h3>Formulaire de contact</h3> <p>Maintenant on ajoute un forumlaire de contact en activant le module Contact, livré par défaut avec Drupal.</p> <h3>GeSHi Filter (coloration syntaxique)</h3> <p>Si vous voulez ajouter proprement du code source sur vos pages, le <a href="http://drupal.org/project/geshifilter">module GeShi Filter</a> permet d'activer la coloration syntaxique pour du code.</p> <h3>Markdown filter</h3> <p>Si vous voulez utiliser la syntaxe Markdown dans vos pages, installez le <a href="http://drupal.org/project/markdown">module Markdown filter</a>.</p> <p><strong>Note: si on active GeSHi Filter et Markdown filter, il faut bien faire attention à ce que le filtre Markdown soit analysé avant le filtre GeSHi.</strong></p> <h3>Mailhandler</h3> <p>Si vous voulez créer du contenu par courriel, installez le <a href="http://drupal.org/project/mailhandler">module Mailhandler</a>.</p> <h3>Mailsave</h3> <p>Le <a href="http://drupal.org/project/mailsave">module Mailsave</a> est un complément à Mailhandler. Il permet entre autres de créer automatiquement des fichiers attachés aux pages créées par Mailhandler selon les pièces jointes au courriel.</p> <p>À noter qu'on doit aussi activer le module Upload (qui est livré par défaut avec Drupal), étant donné que Mailsave se base sur les droits définis pour ce module.</p> <h3>CustomError</h3> <p>Le <a href="http://drupal.org/project/customerror">module CustomError</a> permet de configurer les pages d'erreur 403 et 404 sans avoir à créer de noeud spécial.</p> <p>Ne pas oublier d'aller sur la page <code>admin/settings/error-reporting</code> et configurer les adresses comme ceci:</p> <pre><code>customerror/403 customerror/404 </code></pre> <h3>XML Sitemap</h3> <p>Le module XML Sitemap permet de générer automatiquement un plan du site.</p> <p><strong>Note: en date du 17 février 2009, ce module est encore en version de développement pour Drupal 6.</strong></p> <h3>CCK</h3> <p>Le <a href="http://drupal.org/project/cck">module CCK</a> est quasiment un incontournable. Il permet d'ajouter des champs selon nos besoins, donc de créer ou de configurer des types de contenu.</p> <h3>Views</h3> <p>Le <a href="http://drupal.org/project/views">module Views</a> est le compagnon de CCK. Il permet de créer selon des critères précis des listes de contenu. Ensuite, on peut utiliser ces listes pour former notre page d'accueil, des pages de section, des blocs, etc.</p> <h3>Advanced Help</h3> <p>Pour profiter d'une aide avancée de Views, il faut installer le <a href="http://drupal.org/project/advanced_help">module Advanced Help</a>.</p> <h3>Insert View</h3> <p>Le <a href="http://drupal.org/project/insert_view">module Insert View</a> permet d'insérer des vues (générées par le module Views) dans du contenu sans devoir passer par du code PHP. Exemple: <code>[view:nom]</code>.</p> <h3>robots.txt</h3> <p>Si nécessaire, personnaliser ce fichier (oui, il faudrait que je développe un peu plus :)).</p> <h3>filter_default</h3> <p>À faire.</p> <h3>Comment mail</h3> <p>Le <a href="http://drupal.org/project/commentmail">module Comment mail</a> permet de recevoir un courriel à chaque nouveau commentaire posté sur le site.</p> <h3>Comment Notify</h3> <p>Le <a href="http://drupal.org/project/comment_notify">module Comment Notify</a> ajoute une option dans le formulaire de commentaire pour permettre aux internautes de s'abonner aux réponses à leur commentaire ou de s'abonner à tous les nouveaux commentaires de l'article.</p> <h3>Captcha</h3> <p>Le <a href="http://drupal.org/project/captcha">module Captcha</a> permet d'éviter le pourriel dans les commentaires.</p> <h3>Pagination</h3> <p>Le <a href="http://drupal.org/project/pagination">module Pagination</a> permet de paginer de longues pages. Cependant, ce module incrémente déjà la variable GET page, ce qui entre en conflit avec le correctif que j'ai appliqué à Drupal pour faire la même chose. Voir le rapport <a href="http://drupal.org/node/386154">http://drupal.org/node/386154</a>.</p> <h3>Optimiser la structure des pages</h3> <p>Par défaut, la plupart des thèmes mettent le titre du site dans une balise <code>h1</code> et le titre de la page (ou du noeud) dans une balise <code>h2</code>. À changer. Le titre du site devrait être dans une <code>div</code> et le titre de page dans un <code>h1</code>. Sur la page d'accueil, c'est pas une mauvaise idée de mettre le titre de site exceptionnellement dans un <code>h1</code>.</p> <h3>Faire débuter le numéro de la pagination à 1 et non 0</h3> <p>Par exemple, le lien vers la deuxième page est ?page=1, mais ça devrait plutôt être ?page=2. J'ai soumis un <a href="http://drupal.org/node/385270">correctif pour le fichier includes/pager.inc</a>.</p> <h3>Term Fields et afficher la description des termes de taxonomie seulement sur la première page</h3> <p>Par défaut, ce n'est pas vraiment possible d'avoir une page personnalisée pour la page d'index des termes de taxonomie. Par exemple, la page <code>/taxonomy/term/id</code> va lister les noeuds faisant partie de ce terme, avec possiblement la description dans le haut si cette information a été remplie. Si la description s'affiche, elle va s'affiche pour toutes les pages (donc sur la page 1, page 2, page 3, etc.). Si on veut écrire une grande description, ce n'est pas adapté. Ce que je propose, c'est donc de faire afficher la description complète sur la première page, et seulement un petit résumé sur les pages suivantes.</p> <p>On va donc installer le <a href="http://drupal.org/project/term_fields">module Term Fields</a>, qui va nous permettre d'ajouter des champs personnalisés aux termes. On va donc installer ce module et ajouter un champ résumé, qu'on va faire afficher seulement sur les pages supérieures à 1. Pour ce faire, on peut ajouter par exemple la fonciton suivante dans notre fichier <code>template.php</code>:</p> <pre><code>/* Afficher la description des termes de taxonomie seulement sur la première page, et afficher le résumé sur les pages subséquentes */ /** * Render a taxonomy term page HTML output. * * @param $tids * An array of term ids. * @param $result * A pager_query() result, such as that performed by taxonomy_select_nodes(). * * @ingroup themeable */ function phptemplate_taxonomy_term_page($tids, $result) { drupal_add_css(drupal_get_path('module', 'taxonomy') .'/taxonomy.css'); $output = ''; // Only display the description if we have a single term, to avoid clutter and confusion. if (count($tids) == 1) { $term = taxonomy_get_term($tids[0]); $description = $term-&gt;description; // Check that a description is set. if (!empty($description)) { $output .= '&lt;div class="taxonomy-term-description"&gt;'; // Si on se trouve sur la première page, on affiche la description complète if (empty($_GET['page'])) { $output .= '&lt;p class="legende"&gt;&lt;span&gt;Description de la catégorie &lt;em&gt;' . $term-&gt;name . '&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="taxonomy-term-description-contenu"&gt;'; $output .= filter_xss_admin($description); $output .= '&lt;/div&gt;'; } // Sinon on affiche seulement le résumé. else { $output .= '&lt;p class="legende"&gt;&lt;span&gt;Résumé de la catégorie &lt;em&gt;' . $term-&gt;name . '&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="taxonomy-term-description-contenu"&gt;'; $output .= term_fields_get_field($term-&gt;tid, 'resume'); $output .= l ('&lt;p class="taxonomy-term-description-contenu-plus"&gt;En savoir plus sur la catégorie &lt;em&gt;' . $term-&gt;name . '&lt;/em&gt;...&lt;/p&gt;', taxonomy_term_path($term), array('html' =&gt; TRUE)); $output .= '&lt;/div&gt;'; } $output .= '&lt;/div&gt;'; } } $output .= taxonomy_render_nodes($result); return $output; } </code></pre> <p>Et un style qui l'accompagne:</p> <pre><code>/* Description des termes de taxonomie */ div.taxonomy-term-description { margin-top: 1.5em; border: 1px solid #eee; } p.legende { margin-top: -0.8em; margin-left: 10px; float: left; } p.legende span { padding: 0px 10px; background-color: #fff; font-weight: bold; } div.taxonomy-term-description-contenu { clear: left; padding: 10px 0 10px 10px; } p.taxonomy-term-description-contenu-plus { margin-top: 10px; } </code></pre> <h3>Syndication</h3> <p>Le <a href="http://drupal.org/project/syndication">module Syndication</a> permet de créer une page recenssant tous les flux RSS du site. On peut également générer des flux RSS en mariant plusieurs termes.</p> <h3>Taxonomy Menu</h3> <p>Le <a href="http://drupal.org/project/taxonomy_menu">module Taxonomy Menu</a> permet d'ajouter dans un menu une liste de terme pour chaque vocabulaire.</p> <p><em>Note: j'utilisais avant le <a href="http://drupal.org/project/taxonomy_blocks">module Taxonomy Blocks</a>, qui permet de créer un menu listant chaque terme d'un vocabulaire (optionnellement, on peut faire afficher entre parenthèses le nombre d'éléments de chaque terme). Cependant, dû à un certains nombre de bogues, dont le problème de non-génération des classes habituelles pour les listes (par exemple <code>leaf first</code>), j'ai changé pour le module Taxonomy Menu.</em></p> <h3>Piwik - Web analytics</h3> <p>Le <a href="http://drupal.org/project/piwik">module Piwik - Web analytics</a> permet d'ajouter le code nécessaire au suivi statistique des visites à l'aide du logiciel <a href="http://piwik.org/">Piwik</a> (que l'on doit installer à part).</p> <h3>Node Hierarchy</h3> <p>Le <a href="http://drupal.org/project/nodehierarchy">module Node Hierarchy</a> permet de créer facilement une hiérarchie entre les pages, par exemple en assignant telle page enfant de telle autre page parente. On peut configurer pathauto pour que l'URL reflète la hiérarchie, et on peut également faire créer automatiquement le menu hiérarchisé.</p> <h3>Menu block</h3> <p>Le <a href="http://drupal.org/project/menu_block">module Menu block</a> permet d'ajouter un bloc qui reflète le menu dans lequel la page courante fait partie.</p> <p><em>Note: le <a href="http://drupal.org/project/local_menu">module Local Menu</a> permet de réaliser la même chose, mais pour seulement un bloc, alors que Menu block permet de créer autant de bloc qu'on veut.</em></p> <h3>Table of Contents</h3> <p>Le <a href="http://drupal.org/project/tableofcontents">module Table of Contents</a> permet de générer une table des matières d'une page en se basant sur les titres HTML de niveau 1 à 6.</p> <h3>Search config</h3> <p>Le <a href="http://drupal.org/project/search_config">module Search config</a> permet de configurer les options dans la recherche avancée (et plus).</p> <h2>Autres modules potentiellement utiles</h2> <h3>Taxonomy Title</h3> <p>Le <a href="http://drupal.org/project/taxonomy_title">module Taxonomy Title</a> permet de configurer le titre (contenu de la balise h1 ou h2 selon les thèmes) pour les pages d'index de chaque terme.</p> <h3>SiteMenu</h3> <p>Le <a href="http://drupal.org/project/sitemenu">module SiteMenu</a> permet de générer une page listant tous les noeuds classés par catégorie.</p> <p><strong>Note: en date du 7 mars 2009, ce module est encore en version de développement pour Drupal 6.</strong></p> <h2>À tester plus tard</h2> <h3>Taxonomy redirect</h3> <p>Le <a href="http://drupal.org/project/taxonomy_redirect">module Taxonomy redirect</a> permet de changer l'adresse de taxonomie, mais ne permet pas encore une redirection automatique de l'ancienne adresse par défaut de Drupal vers la nouvelle.</p> <h2>À faire</h2> <ul> <li>Avoir des URL simplifiées aussi pour la pagination, donc se débarrasser des <code>?page=</code>.</li> </ul> Tue, 01 May 2012 01:00:00 -0400 Motus: protéger ses informations importantes en les chiffrant http://www.jpfleury.net/logiciels/motus.php http://www.jpfleury.net/logiciels/motus.php <!-- APERÇU: automatique --> <h2>Aperçu</h2> <p>Motus est un logiciel permettant de chiffrer et déchiffrer rapidement un fichier texte sur un système GNU/Linux. Il est particulièrement utile pour sauvegarder des mots de passe et des identifiants de connexion.</p> <p>Une coloration syntaxique est offerte pour gedit, l'éditeur de texte par défaut de Gnome. Ainsi, les informations peuvent facilement être mises en valeur visuellement.</p> <p>Motus a vu le jour pour proposer une alternative à la plupart des logiciels de gestion de mots de passe qui ont une structure définie à l'avance et qui empêchent ainsi l'utilisateur d'entrer et d'ordonner ses informations comme il le souhaite.</p> <p><img src="http://jpfleury.indefero.net/p/motus/source/tree/master/doc/exemple1.png" width="685" height="704" alt="Coloration syntaxique de Motus dans gedit." /></p> <h2>Dépendances</h2> <p>Motus est développé en langage Shell (Bash). Les dépendances logicielles sont les suivantes:</p> <ul> <li><code>openssl</code></li> <li><code>wipe</code></li> <li><code>zenity</code></li> </ul> <p>Les logiciels qui suivent ne sont pas obligatoires, mais sont suggérés pour tirer profit pleinement des fonctionnalités de Motus:</p> <ul> <li><code>alltray</code></li> <li><code>gedit</code></li> <li><code>gettext</code></li> <li><code>mktemp</code> (si gedit 2 est utilisé; inutile pour gedit 3)</li> <li><code>xdg-utils</code></li> </ul> <h2>Installation</h2> <ul> <li><p><a href="http://jpfleury.indefero.net/p/motus/source/download/master/">Télécharger l'archive de la dernière version.</a></p></li> <li><p>Extraire l'archive.</p></li> <li><p>Ouvrir une console dans le dossier extrait.</p></li> <li><p>Dans la console, lancer le script d'installation en mode superutilisateur, ce qui donne (sous Ubuntu):</p> <pre><code>sudo ./scripts.sh installer </code></pre></li> </ul> <p>Le dossier créé par l'extraction de l'archive peut être effacé ou mis à la corbeille après l'installation.</p> <h2>Désinstallation</h2> <ul> <li><p>Ouvrir une console dans le dossier extrait.</p></li> <li><p>Dans la console, lancer le script de désinstallation en mode superutilisateur, ce qui donne (sous Ubuntu):</p> <pre><code>sudo ./scripts.sh desinstaller </code></pre></li> </ul> <h2>Utilisation</h2> <ul> <li><p>Une entrée pour lancer Motus est ajoutée dans la section «Accessoires» du menu principal. Motus peut également être lancé en ligne de commande:</p> <pre><code>motus </code></pre></li> <li><p>Le fichier de configuration global est <code>/usr/share/motus/config.inc.sh</code>. La configuration peut être personnalisée pour l'utilisateur courant dans <code>~/.motus/config.inc.sh</code>.</p></li> <li><p>Un exécutable <code>gedit-unique</code> est créé dans <code>/usr/bin</code>. Il s'agit du script utilisé par défaut par Motus pour lancer l'éditeur de texte, mais ce script peut être utilisé en dehors de Motus. Il lance une instance de gedit avec un dossier temporaire unique, ce qui permet d'isoler le fichier ouvert dans cette instance (les prochains fichiers ouverts en passant par le gestionnaire de fichiers ou par la ligne de commande ne le seront jamais dans cette instance).</p></li> <li><p>Le chiffrement utilisé est l'AES-256 en mode CBC (voir <a href="http://fr.wikipedia.org/wiki/Standard_de_chiffrement_avanc%C3%A9">Standard de chiffrement avancé</a>).</p></li> <li><p>Par défaut, le chemin du fichier chiffré est <code>~/.motus/chiffre</code>.</p></li> <li><p>Par défaut, le chemin du fichier déchiffré est le suivant:</p> <pre><code>`/dev/shm/0x[0-9A-F]{8}-motus/0x[0-9A-F]{8}-dechiffre.motus`. </code></pre> <ul> <li><p><code>/dev/shm/</code> correspond à un emplacement en mémoire vive, donc le fichier déchiffré n'est pas enregistré sur le disque dur. Si cet emplacement n'existe pas, Motus utilise le dossier <code>/tmp/</code> (donc un emplacement sur le disque dur).</p></li> <li><p><code>0x[0-9A-F]{8}-motus</code> est un dossier temporaire commençant par 8 nombres hexadécimaux choisis au hasard. Les droits d'accès du dossier sont 700.</p></li> <li><p><code>0x[0-9A-F]{8}-dechiffre.motus</code> correspond au fichier déchiffré. Ses droits d'accès sont 600.</p></li> </ul></li> <li><p>À la fermeture de Motus, le dossier temporaire <code>0x[0-9A-F]{8}-motus</code> et son contenu sont supprimés de manière sécuritaire avec <a href="http://manpages.ubuntu.com/manpages/precise/en/man1/wipe.1.html"><code>wipe</code></a>. Si jamais des fichiers temporaires (par exemple <code>0x[0-9A-F]{8}-dechiffre.motus~</code>) ont été créés dans cet emplacement par l'éditeur de texte utilisé pour modifier le fichier déchiffré, ils seront supprimés en même temps.</p></li> <li><p>Le chemin des fichiers chiffré et déchiffré peut être modifié à l'aide de paramètres passés à Motus. Exemples:</p> <pre><code>motus /chemin/vers/le/fichier/chiffré motus /chemin/vers/le/fichier/chiffré /chemin/vers/le/fichier/déchiffré </code></pre> <p>Si le chemin du fichier déchiffré est précisé en paramètre, seul ce fichier sera supprimé lors de la fermeture de Motus (et non le dossier qui le contient).</p></li> <li><p>Un fichier de sauvegarde est automatiquement créé lors du chiffrement. Ce fichier correspond au dernier fichier chiffré auquel l'extension <code>sauv</code> est ajoutée:</p> <pre><code>/chemin/vers/le/fichier/chiffré.sauv </code></pre> <p>Par défaut, on a donc:</p> <pre><code>~/.motus/chiffre ~/.motus/chiffre.sauv </code></pre></li> </ul> <h2>Localisation</h2> <p>Les messages de Motus sont localisables. Toute personne intéressée à effectuer une traduction peut donc copier le fichier <code>motus.pot</code> situé dans le répertoire <code>locale</code> de l'archive source, le renommer en <code>LANGUE.po</code>, traduire les phrases contenues dans le fichier et m'envoyer le fichier <code>.po</code>.</p> <p>Pour l'instant, Motus est disponible en français.</p> <h2>Développement</h2> <p>Le logiciel Git est utilisé pour la gestion de versions. <a href="http://jpfleury.indefero.net/p/motus/source/tree/master/">Le dépôt peut être consulté en ligne ou récupéré en local.</a></p> <p>Motus dispose également d'un <a href="http://jpfleury.indefero.net/p/motus/issues/">système de suivi</a>, sur lequel les rapports de bogues et les suggestions peuvent être soumis.</p> <h2>Licence</h2> <p>Auteur: Jean-Philippe Fleury <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#x3a;&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;">&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;</a><br /> Copyright © Jean-Philippe Fleury, 2008-2012.</p> <p>Ce programme est un logiciel libre; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU General Public License telle que publiée par la Free Software Foundation: soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.</p> <p>Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE: sans même la garantie implicite de COMMERCIALISABILITÉ ni d'ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence publique générale GNU pour plus de détails.</p> <p>Vous devriez avoir reçu une copie de la Licence publique générale GNU avec ce programme; si ce n'est pas le cas, consultez <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> <h3>Matériel tiers</h3> <ul> <li><strong>Logo de Motus</strong>: le logo a été fait à partir de l'image <code>scalable/emotes/face-plain.svg</code> du <a href="http://archive.ubuntu.com/ubuntu/pool/main/g/gnome-icon-theme/gnome-icon-theme_2.28.0.orig.tar.gz">thème d'icônes Gnome</a>, sous licence GPL.</li> </ul> Wed, 26 Oct 2011 13:57:00 -0400 RapportHamster++: personnaliser les rapports du gestionnaire de temps Hamster http://www.jpfleury.net/logiciels/rapporthamster%2B%2B.php http://www.jpfleury.net/logiciels/rapporthamster%2B%2B.php <!-- APERÇU: automatique --> <p lang="en"><em><a hreflang="en" href="http://www.jpfleury.net/en/software/rapporthamster++.php">Read this page in English.</a></em></p> <h2>Aperçu</h2> <p>RapportHamster++ est un ensemble de fonctions PHP permettant de personnaliser les rapports HTML créés par le <a href="http://projecthamster.wordpress.com/">gestionnaire de temps Hamster</a>. Le parcours et la modification des rapports HTML sont principalement effectués grâce à l'extension DOM de PHP.</p> <h2>Dépendances</h2> <p>RapportHamster++ nécessite une version de Hamster utilisant la <a href="http://projecthamster.wordpress.com/2010/06/06/custom-html-reports/">nouvelle structure des rapports HTML</a>. La version 2.31.6 utilise cette nouvelle structure. Il est possible que ce soit le cas également d'une version antérieure.</p> <p>Il faut aussi bien sûr un interpréteur PHP, sur un serveur ou en ligne de commande (PHP CLI). Pour utiliser PHP en ligne de commande, installer le paquet <code>php5-cli</code> (testé sous Ubuntu).</p> <h2>Installation</h2> <p>Il n'y a pas d'installation nécessaire. Un fichier d'index est offert par défaut pour montrer l'utilisation possible des différentes fonctions avec PHP CLI.</p> <ul> <li><p><a href="http://jpfleury.indefero.net/p/rapporthamsterpp/source/download/master/">Télécharger l'archive de la dernière version.</a></p></li> <li><p>Extraire l'archive.</p></li> <li><p>Ouvrir une console dans le dossier extrait.</p></li> <li><p>Lancer le script d'index (les paramètres sont à titre d'exemples):</p> <pre><code>php index.cli.php "/chemin/vers/le/rapport.html" 1 1 1 1 1 " h" " min" 0 </code></pre> <p>Le rapport modifié sera enregistré dans le même répertoire que le rapport original, par exemple <code>/chemin/vers/le/rapport - 2.html</code>.</p></li> </ul> <p>Le dossier <code>doc/exemple</code> contient deux fichiers:</p> <ul> <li><p><code>Gestion du temps, 2010-07-30 - 2010-08-05.html</code>: un rapport créé par Hamster;</p></li> <li><p><code>Gestion du temps, 2010-07-30 - 2010-08-05 - 2.html</code>: le même rapport, mais modifié par RapportHamster++.</p></li> </ul> <p>Pour plus de détails sur les paramètres et les fonctions, analyser le fichier <code>index.cli.php</code> dans un édtieur de texte et lire les commentaires de chaque fonction dans le fichier <code>inc/fonctions.inc.php</code>. Voir également ci-dessous l'aperçu des fonctionnalités.</p> <h2>Survol des fonctionnalités</h2> <p>Le fichier <code>index.cli.php</code> livré par défaut montre une utilisation possible des fonctions de RapportHamster++. Les fonctions en question sont:</p> <ul> <li><p><code>ajouteClassesLignesTable()</code>: ajoute des classes aux lignes d'une table donnée. Le résultat visible est une couleur d'arrière-plan pour les lignes paires;</p></li> <li><p><code>ajouteDureeTotale()</code>: ajoute la durée totale de toutes les activités du rapport;</p></li> <li><p><code>colonneMarkdownVersHtml()</code>: convertit le texte d'une colonne de la syntaxe Markdown vers le HTML. Utile pour rédiger les descriptions en Markdown. Par exemple:</p> <pre><code>Lorem *ipsum* dolor **sit** amet, `consectetuer` adipiscing [elit](dictum). </code></pre> <p>devient:</p> <pre><code>&lt;p&gt;Lorem &lt;em&gt;ipsum&lt;/em&gt; dolor &lt;strong&gt;sit&lt;/strong&gt; amet, &lt;code&gt;consectetuer&lt;/code&gt; adipiscing &lt;a href="dictum"&gt;elit&lt;/a&gt;.&lt;/p&gt; </code></pre></li> <li><p><code>dateSansZeroInitial()</code>: supprime tout 0 initial dans les dates apparaissant dans le rapport. Par exemple:</p> <pre><code>08 mai 2010 </code></pre> <p>devient:</p> <pre><code>8 mai 2010 </code></pre> <p>Autre exemple:</p> <pre><code>Journal d'activité du 01 au 07 mai 2010 </code></pre> <p>devient:</p> <pre><code>Journal d'activité du 1 au 7 mai 2010 </code></pre></li> <li><p><code>dureeFormatHamsterVersMinutes()</code>: convertit la durée en nombre de minutes. Par exemple, pour la durée <code>8 h 15 min</code>, le retour est <code>495</code>;</p></li> <li><p><code>fusionneActivites()</code>: fusionne les activités de la table «Journal d'activité» (deuxième onglet) du rapport. Les colonnes de début et de fin de l'activité sont supprimées.</p> <p>La fusion consiste à rechercher les activités semblables (mêmes jour, activité, catégorie et étiquettes) et dont la description utilise une syntaxe spéciale pour lier les activités entre elles. Soit les cinq activités suivantes:</p> <ul> <li><p>description de l'activité 1 (1 h 35 min): [1] Début de l'activité. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p></li> <li><p>description de l'activité 2 (20 min): [1]</p></li> <li><p>description de l'activité 3 (2 h 15 min): [1] Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p></li> <li><p>description de l'activité 4 (1 h 10 min): [1]</p></li> <li><p>description de l'activité 5 (2 h 50 min): [1] Fin de l'activité. Praesent tempus; odio ac sagittis vehicula; mauris pede tincidunt lacus, in euismod orci mauris a quam.</p></li> </ul> <p>Ces cinq activités, si elles ont les mêmes jour, activité, catégorie et étiquettes, sont liées entre elles par le nombre entre crochets situé au début de chaque description, et seront donc fusionnées. La durée totale de l'activité sera la somme de toutes les activités liées (8 h 10 min dans cet exemple) et la description résultante contiendra s'il y a lieu la description de chaque activité:</p> <pre><code>[1] Début de l'activité. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fin de l'activité. Praesent tempus; odio ac sagittis vehicula; mauris pede tincidunt lacus, in euismod orci mauris a quam. </code></pre></li> <li><p><code>minutesVersDureeFormatHamster()</code>: convertit le nombre de minutes en durée affichée par Hamster. Par exemple, pour <code>495</code>, la durée retournée est <code>8 h 15 min</code>;</p></li> <li><p><code>supprimeColonnes()</code>: supprime les colonnes données dans la table donnée;</p></li> <li><p><code>supprimeJquery()</code>: supprime jQuery du rapport. Utile lorsque des tables ont été supprimées et qu'une seule a été laissée;</p></li> <li><p><code>supprimeTables()</code>: supprime les tables données. Une table correspond à un onglet principal dans le haut du rapport.</p></li> </ul> <h2>Développement</h2> <p>Le logiciel Git est utilisé pour la gestion de versions. <a href="http://jpfleury.indefero.net/p/rapporthamsterpp/source/tree/master/">Le dépôt peut être consulté en ligne ou récupéré en local.</a></p> <p>RapportHamster++ dispose également d'un <a href="http://jpfleury.indefero.net/p/rapporthamsterpp/issues/">système de suivi</a>, sur lequel les rapports de bogues et les suggestions peuvent être soumis.</p> <h2>Licence</h2> <p>Auteur: Jean-Philippe Fleury <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#x3a;&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;">&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;</a><br /> Copyright © Jean-Philippe Fleury, 2010-2012.</p> <p>Ce programme est un logiciel libre; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU General Public License telle que publiée par la Free Software Foundation: soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.</p> <p>Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE: sans même la garantie implicite de COMMERCIALISABILITÉ ni d'ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence publique générale GNU pour plus de détails.</p> <p>Vous devriez avoir reçu une copie de la Licence publique générale GNU avec ce programme; si ce n'est pas le cas, consultez <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> <h3>Matériel tiers</h3> <ul> <li><a href="http://michelf.com/projets/php-markdown/"><strong>PHP Markdown</strong></a>: sous licence de style BSD.</li> </ul> Wed, 26 Oct 2011 22:54:00 -0400 gedit-mediawiki: coloration syntaxique de la syntaxe MediaWiki dans gedit http://www.jpfleury.net/logiciels/gedit-mediawiki.php http://www.jpfleury.net/logiciels/gedit-mediawiki.php <!-- APERÇU: automatique --> <p lang="en"><strong><a hreflang="en" href="http://www.jpfleury.net/en/software/gedit-mediawiki.php">Read this page in English.</a></strong></p> <h2>Aperçu</h2> <p>gedit-mediawiki ajoute la coloration syntaxique de la <a href="http://meta.wikimedia.org/wiki/Aide:Syntaxe_wiki">syntaxe MediaWiki</a> dans gedit, l'éditeur de texte par défaut de Gnome.</p> <p>Voici une capture d'écran:</p> <p><img src="http://jpfleury.indefero.net/p/gedit-mediawiki/source/tree/master/doc/exemple1.png" width="685" height="1112" alt="Coloration syntaxique pour la syntaxe MediaWiki dans gedit." /></p> <h2>Installation</h2> <ul> <li><p><a href="http://jpfleury.indefero.net/p/gedit-mediawiki/source/download/master/">Télécharger l'archive de la dernière version.</a></p></li> <li><p>Extraire l'archive.</p></li> <li><p>Copier le fichier <code>mediawiki.lang</code> dans le dossier approprié (créer le dossier s'il n'existe pas):</p> <ul> <li>pour gedit 2: <code>~/.local/share/gtksourceview-2.0/language-specs/</code></li> <li>pour gedit 3: <code>~/.local/share/gtksourceview-3.0/language-specs/</code></li> </ul></li> </ul> <p>La coloration syntaxique de la syntaxe MediaWiki sera ajoutée à l'utilisateur courant (l'installation se fait donc sans les droits d'administration). Le dossier créé par l'extraction de l'archive peut être supprimé après l'installation.</p> <h2>Désinstallation</h2> <p>Supprimer le fichier précédemment installé.</p> <h2>Utilisation</h2> <p>Avant toute chose, redémarrer gedit s'il est ouvert.</p> <p>Choisir la coloration en allant dans le menu <em>Affichage > Mode de coloration > Autres</em> de gedit et en cochant <em>MediaWiki</em>.</p> <p>Un fichier démo se trouve dans le dossier <code>doc</code> de gedit-mediawiki.</p> <h2>Développement</h2> <p>Le logiciel Git est utilisé pour la gestion de versions. <a href="http://jpfleury.indefero.net/p/gedit-mediawiki/source/tree/master/">Le dépôt peut être consulté en ligne ou récupéré en local.</a></p> <p>gedit-mediawiki dispose également d'un <a href="http://jpfleury.indefero.net/p/gedit-mediawiki/issues/">système de suivi</a>, sur lequel les rapports de bogues et les suggestions peuvent être soumis.</p> <h2>Licence</h2> <p>Auteur: Jean-Philippe Fleury <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#x3a;&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;">&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;</a><br /> Copyright © Jean-Philippe Fleury, 2009-2012.</p> <p>Ce programme est un logiciel libre; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU Lesser General Public License telle que publiée par la Free Software Foundation: soit la version 2.1 de la License, soit (à votre gré) toute version ultérieure.</p> <p>Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE: sans même la garantie implicite de COMMERCIALISABILITÉ ou d'ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence publique générale limitée GNU pour plus de détails.</p> <p>Vous devriez avoir reçu une copie de la Licence publique générale limitée GNU avec ce programme; si ce n'est pas le cas, écrivez à la: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p> Wed, 26 Oct 2011 13:57:00 -0400 gedit-markdown: support du langage Markdown dans gedit http://www.jpfleury.net/logiciels/gedit-markdown.php http://www.jpfleury.net/logiciels/gedit-markdown.php <!-- APERÇU: automatique --> <p lang="en"><strong><a hreflang="en" href="http://www.jpfleury.net/en/software/gedit-markdown.php">Read this page in English.</a></strong></p> <h2>Aperçu</h2> <p>gedit-markdown est un ensemble de fichiers ajoutant le support du langage <a href="http://michelf.com/projets/php-markdown/concepts/">Markdown</a> (ou de la version spéciale <a href="http://michelf.com/projets/php-markdown/extra/">Markdown Extra</a>) dans gedit, l'éditeur de texte par défaut de Gnome.</p> <p>Plus précisément, gedit-markdown ajoute:</p> <ul> <li><p>la coloration syntaxique des fichiers Markdown ainsi que des extraits de code pour accélérer la rédaction;</p></li> <li><p>le greffon <em>Aperçu Markdown</em>, affichant dans le panneau latéral ou inférieur de gedit un aperçu en HTML de la sélection ou du fichier en cours d'édition;</p></li> <li><p>un outil externe permettant d'exporter le code HTML de la sélection ou du document en cours d'édition;</p></li> <li><p>un jeu de couleurs, optionnel, colorant le code Markdown d'une manière plus ressemblante au rendu HTML.</p></li> </ul> <p><img src="http://jpfleury.indefero.net/p/gedit-markdown/source/tree/master/doc/exemple1.png" width="684" height="779" alt="Coloration syntaxique par défaut du Markdown dans gedit." /></p> <h2>Dépendances</h2> <ul> <li><p>gedit-markdown supporte gedit 2 et gedit 3. Il est livré avec un installateur pour GNU/Linux. Sous Windows XP, seuls certains fichiers fonctionnent, et doivent être installés à la main.</p></li> <li><p>Le greffon «Aperçu Markdown» dépend de Python 2 (>= 2.6) ou de Python 3 (>= 3.1), bien que pour l'instant, gedit ne supporte que Python 2. L'installateur va copier le greffon seulement si la bonne version de Python est installée.</p></li> <li><p>La désactivation de la vérification orthographique dans la coloration syntaxique pour les contextes non pertinents (par exemple dans les adresses URL) dépend de GtkSourceView >= 2.10.</p></li> <li><p>Pour les utilisateurs d'Ubuntu 11.10 ou une version plus récente: le paquet <code>gir1.2-webkit-3.0</code> doit être installé pour que le greffon «Aperçu Markdown» fonctionne.</p></li> </ul> <h2>Installation (ou mise à jour)</h2> <h3>GNU/Linux</h3> <ul> <li><p><a href="http://jpfleury.indefero.net/p/gedit-markdown/source/download/master/">Télécharger l'archive de la dernière version.</a></p></li> <li><p>Extraire l'archive.</p></li> <li><p>Ouvrir une console dans le dossier extrait.</p></li> <li><p>Lancer le script d'installation dans la console et répondre aux questions demandées, ce qui donne:</p> <pre><code>./gedit-markdown.sh installer </code></pre></li> </ul> <p>Le support de Markdown sera ajouté à l'utilisateur courant (l'installation se fait donc sans les droits d'administration). Le dossier créé par l'extraction de l'archive peut être supprimé après l'installation.</p> <h3>Windows XP</h3> <p>Voici la marche à suivre pour gedit 2:</p> <ul> <li><p>Coloration syntaxique: dans l'archive de gedit-markdown, trouver le dossier <code>language-specs</code>, copier le fichier correspondant à la version de Markdown voulue, par exemple:</p> <pre><code>language-specs/markdown.lang </code></pre> <p>et le coller dans le dossier suivant:</p> <pre><code>C:Program Filesgeditsharegtksourceview-2.0language-specs </code></pre></li> <li><p>Jeu de couleurs optionnel: dans l'archive de gedit-markdown, copier le fichier <code>styles/classic-markdown.xml</code> et le coller dans le dossier suivant:</p> <pre><code>C:Program Filesgeditsharegtksourceview-2.0styles </code></pre></li> </ul> <h2>Désinstallation</h2> <h3>GNU/Linux</h3> <ul> <li><p>Ouvrir une console dans le dossier extrait.</p></li> <li><p>Lancer le script de désinstallation dans la console, ce qui donne:</p> <pre><code>./gedit-markdown.sh desinstaller </code></pre></li> </ul> <p><strong>Astuce:</strong> il est possible de préciser en ligne de commande la version de gedit. Les valeurs possibles sont <code>2</code> et <code>3</code>. Ça peut être utile lors d'une mise à jour de gedit 2 vers gedit 3. Ainsi, le script peut être lancé pour supprimer les fichiers de l'ancienne version de gedit. Exemple:</p> <pre><code>./gedit-markdown.sh desinstaller 2 </code></pre> <h3>Windows XP</h3> <p>Simplement supprimer à la main les fichiers ajoutés lors de l'installation.</p> <h2>Utilisation</h2> <p>Avant toute chose, redémarrer gedit s'il est ouvert.</p> <h3>Coloration syntaxique</h3> <p>La coloration syntaxique devrait s'activer automatiquement pour les fichiers reconnus comme étant des fichiers Markdown (extensions <code>.markdown</code>, <code>.md</code> ou <code>.mkd</code>), sinon choisir la coloration en allant dans <em>Affichage > Mode de coloration > Balisage</em> et cocher <em>Markdown</em>.</p> <h3>Greffon <em>Aperçu Markdown</em></h3> <p>Pour activer le greffon, aller dans <em>Édition > Préférences > Greffons</em> et activer <em>Aperçu Markdown</em>. Maintenant vous trouverez dans le menu <em>Outils</em> une action <em>Aperçu Markdown</em>, qui affichera dans le panneau latéral ou inférieur l'aperçu en HTML du document courant ou de la sélection. Le raccourci-clavier <em>Ctrl+Alt+m</em> (peut être modifié dans le fichier de configuration) peut également être utilisé pour effectuer la même chose.</p> <p>Voici une capture d'écran du greffon lorsqu'il est situé dans le panneau inférieur:</p> <p><img src="http://jpfleury.indefero.net/p/gedit-markdown/source/tree/master/doc/exemple3.png" width="684" height="886" alt="Aperçu en HTML d'un document Markdown dans le panneau inférieur de gedit." /></p> <p>Voici maintenant le même greffon situé dans le panneau latéral (cliquer pour télécharger l'image au format original):</p> <p><a href="http://jpfleury.indefero.net/p/gedit-markdown/source/tree/master/doc/exemple4-grand.png"><img src="http://jpfleury.indefero.net/p/gedit-markdown/source/tree/master/doc/exemple4-petit.png" width="684" height="445" alt="Aperçu en HTML d'un document Markdown dans le panneau latéral de gedit." /></a></p> <h3>Extraits de code</h3> <p>Pour utiliser les extraits de code de Markdown, il faut activer le greffon <em>Extraits de code</em> dans le menu <em>Édition > Préférences > Greffons</em> de gedit. Ensuite, aller dans <em>Outils > Gérer les extraits de code...</em> pour consulter les différentes possibilités.</p> <h3>Outil externe <em>Exporter en HTML</em></h3> <p>Pour utiliser l'outil externe, il faut activer le greffon <em>Outils externes</em> dans le menu <em>Édition > Préférences > Greffons</em> de gedit. L'outil est accessible par le menu <em>Outils > Outils externes > Exporter en HTML</em> ou par le raccourci-clavier <em>Ctrl+Alt+h</em>. Le code Markdown du document en cours d'édition ou de la sélection sera converti en HTML, et le résultat sera inséré dans un nouveau document.</p> <p>Pour modifier l'outil, aller dans <em>Outils > Gérer les outils externes...</em>.</p> <h3>Jeu de couleurs optionnel</h3> <p>Un jeu de couleurs optionnel est installé automatiquement par gedit-markdown. Pour l'utiliser, aller dans le menu <em>Édition > Préférences > Police et couleurs > Jeu de couleurs</em> de gedit et sélectionner <em>Classic Markdown</em>. Cette coloration se rapproche d'un rendu HTML, par exemple les emphases fortes et les titres sont en gras et de couleur noire, les liens sont bleus et soulignés, etc. Ce jeu de couleurs resemble à ceci:</p> <p><img src="http://jpfleury.indefero.net/p/gedit-markdown/source/tree/master/doc/exemple2.png" width="684" height="779" alt="Jeu de couleurs optionnel pour la coloration syntaxique du Markdown dans gedit." /></p> <h3>Fichier de configuration</h3> <p>Le fichier de configuration de gedit-markdown est le suivant:</p> <pre><code>~/.config/gedit-markdown.ini </code></pre> <p>Seule la section <code>markdown-preview</code> peut être modifiée, et contient trois paramètres:</p> <ul> <li><p><code>panel</code>: emplacement de l'aperçu Markdown. Valeurs possibles: <code>side</code> (panneau latéral) ou <code>bottom</code> (panneau inférieur).</p></li> <li><p><code>shortcut</code>: raccourci-clavier pour générer l'aperçu en HTML du document courant. La valeur par défaut est <code>&lt;Control&gt;&lt;Alt&gt;m</code>.</p></li> <li><p><code>version</code>: la version du langage Markdown à utiliser pour générer l'aperçu et exporter en HTML. Valeurs possibles: <code>standard</code> ou <code>extra</code>.</p></li> </ul> <h2>Précisions ou limitations</h2> <ul> <li><p>La coloration syntaxique ainsi que les extraits de code pour Markdown (version standard) ont été ajoutés officiellement à GtkSourceView et gedit > 3.1.1. Dans l'installateur de gedit-markdown, si la version choisie est Markdown standard, une vérification sera effectuée pour ne pas copier des fichiers qui existent déjà (aucune vérification ne sera effectuée pour l'installation de Markdown Extra puisqu'il ne s'agit pas de la version livrée par défaut avec GtkSourceView et gedit > 3.1.1).</p></li> <li><p>D'anciennes versions de gedit-markdown ajoutaient également un type MIME pour les fichiers Markdown ainsi que la reconnaissance d'une extension supplémentaire (<code>.mdtxt</code>). Depuis que le support des fichiers Markdown a été ajouté directement dans la base de données partagée MIME <code>shared-mime-info</code> (<a href="https://bugs.freedesktop.org/show_bug.cgi?id=27441">consulter le rapport de bogue</a>), gedit-markdown n'ajoute plus son propre fichier de type MIME pour Markdown. Aussi, dans un but de conformité avec la spécification, l'extension <code>.mdtxt</code> n'est plus supportée.</p></li> <li><p>Puisqu'il est possible d'ajouter du code HTML directement dans un texte écrit en Markdown, j'ai également ajouté la coloration syntaxique du HTML, ce qui a entre autres comme conséquence que le code Markdown dans du HTML est coloré syntaxiquement. Il faut cependant avoir en tête que selon la syntaxe officielle, du code Markdown dans un environnement HTML n'est pas transformé, il est affiché tel quel, et que selon la syntaxe du Markdown Extra, seul le code Markdown dans un bloc possédant un attribut <code>markdown</code> dont la valeur est de 1 (par exemple <code>&lt;div markdown="1"&gt;</code>) est transformé.</p></li> <li><p>Markdown permet d'écrire du code dans un paragraphe. Pour ce faire, le code doit être entouré d'un accent grave (&#96;), ou de plusieurs, pourvu que le nombre soit identique de part et d'autre, et qu'il n'y ait pas dans le code un nombre identique d'accents qui se suivent. Exemples:</p> <pre><code>`lorem lorem lorem lorem` `lorem lorem `` lorem lorem` `lorem lorem ````` lorem lorem` ``lorem lorem lorem lorem`` ``lorem lorem ` lorem lorem`` ``lorem lorem ````` lorem lorem`` </code></pre> <p>Prendre note que gedit-markdown supporte la coloration jusqu'à 2 accents de part et d'autre du code.</p></li> <li><p>Un bloc de citation peut contenir des éléments Markdown de niveaux bloc ou texte, mais gedit-markdown supporte seulement la coloration des éléments de niveau texte (emphase, lien, etc.).</p></li> <li><p>Il n'est pas possible de savoir dans quel contexte une ligne se trouve, entre autres parce que le retour à la ligne ne peut pas être utilisé dans les expressions rationnelles de la coloration syntaxique. En voici des conséquences:</p> <ul> <li><p>Selon la syntaxe du Markdown, pour écrire plusieurs paragraphes dans un item de liste, il faut indenter chaque paragraphe. Exemple:</p> <pre><code>- Item A (paragraphe 1). Item A (paragraphe 2). Item A (paragraphe 3). - Item B. </code></pre> <p>Il y a donc conflit au plan de la coloration syntaxique entre un paragraphe indenté à l'intérieur d'une liste (quatre espaces ou une tabulation) et une ligne de code indentée en dehors d'une liste (également quatre espaces ou une tabulation). Le choix a été fait de colorer une ligne de code seulement à partir de deux niveaux d'indentation.</p></li> <li><p>Seul le soulignement d'un titre de style Setext est analysé et coloré. Il n'y a donc pas de garanti qu'il s'agit bien d'un soulignement de titre.</p></li> <li><p>Avec Markdown Extra, quelques éléments sont analysés et colorés sans certitude qu'ils sont bien dans le bon contexte: l'attribut <code>id</code> pour un titre de style Setext, le deux-points séparateur dans une liste de définition et la ligne de séparation d'un tableau.</p></li> </ul></li> </ul> <h2>Traduction</h2> <p>Les messages de l'installateur peuvent être traduits. Toute personne intéressée à effectuer une traduction peut donc copier le fichier <code>gedit-markdown.pot</code> situé dans le répertoire <code>locale</code>, le renommer en <code>LANGUE.po</code>, y traduire les phrases et m'envoyer le résultat.</p> <p>De même, le greffon <em>Aperçu Markdown</em> est également traduisible. Le fichier contenant les phrases à traduire est <code>plugins/markdown-preview/locale/markdown-preview.pot</code>.</p> <p>Pour l'instant, gedit-markdown est disponible en français et en anglais.</p> <h2>Développement</h2> <p>Le logiciel Git est utilisé pour la gestion de versions. <a href="http://jpfleury.indefero.net/p/gedit-markdown/source/tree/master/">Le dépôt peut être consulté en ligne ou récupéré en local.</a></p> <p>gedit-markdown dispose également d'un <a href="http://jpfleury.indefero.net/p/gedit-markdown/issues/">système de suivi</a>, sur lequel les rapports de bogues et les suggestions peuvent être soumis.</p> <h2>Licence</h2> <p>Auteur: Jean-Philippe Fleury <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#x3a;&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;">&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;</a><br /> Copyright © Jean-Philippe Fleury, 2009-2012.</p> <p>Ce programme est un logiciel libre; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU General Public License telle que publiée par la Free Software Foundation: soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.</p> <p>Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE: sans même la garantie implicite de COMMERCIALISABILITÉ ni d'ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence publique générale GNU pour plus de détails.</p> <p>Vous devriez avoir reçu une copie de la Licence publique générale GNU avec ce programme; si ce n'est pas le cas, consultez <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> <h3>Matériel tiers</h3> <ul> <li>Le greffon d'aperçu Markdown est basé sur <a href="http://live.gnome.org/Gedit/MarkdownSupport">Markdown Preview</a>, sous licence GPL version 2 ou toute version ultérieure, et sur <a href="http://www.freewisdom.org/projects/python-markdown/">Python Markdown</a>, sous licence de style BSD.</li> </ul> Wed, 26 Oct 2011 13:57:00 -0400 gedit-url: coloration syntaxique des URL dans gedit http://www.jpfleury.net/logiciels/gedit-url.php http://www.jpfleury.net/logiciels/gedit-url.php <!-- APERÇU: automatique --> <p lang="en"><strong><a hreflang="en" href="http://www.jpfleury.net/en/software/gedit-url.php">Read this page in English.</a></strong></p> <h2>Aperçu</h2> <p>gedit-url ajoute la coloration syntaxique des URL dans gedit, l'éditeur de texte par défaut de Gnome.</p> <p>Voici une capture d'écran (cliquer pour télécharger l'image au format original):</p> <p><a href="http://jpfleury.indefero.net/p/gedit-url/source/tree/master/doc/exemple1-grand.png"><img src="http://jpfleury.indefero.net/p/gedit-url/source/tree/master/doc/exemple1-petit.jpg" width="685" height="247" alt="Coloration syntaxique des URL dans gedit." /></a></p> <h2>Installation</h2> <ul> <li><p><a href="http://jpfleury.indefero.net/p/gedit-url/source/download/master/">Télécharger l'archive de la dernière version.</a></p></li> <li><p>Extraire l'archive.</p></li> <li><p>Copier le fichier <code>url.lang</code> dans le dossier approprié (créer le dossier s'il n'existe pas):</p> <ul> <li>pour gedit 2: <code>~/.local/share/gtksourceview-2.0/language-specs/</code></li> <li>pour gedit 3: <code>~/.local/share/gtksourceview-3.0/language-specs/</code></li> </ul></li> </ul> <p>La coloration syntaxique des URL sera ajoutée à l'utilisateur courant (l'installation se fait donc sans les droits d'administration). Le dossier créé par l'extraction de l'archive peut être supprimé après l'installation.</p> <h2>Désinstallation</h2> <p>Supprimer le fichier précédemment installé.</p> <h2>Utilisation</h2> <p>Avant toute chose, redémarrer gedit s'il est ouvert.</p> <p>Choisir la coloration en allant dans la menu <em>Affichage > Mode de coloration > Autres</em> de gedit et cocher <em>URL</em>.</p> <p>Un fichier démo se trouve dans le dossier <code>doc</code> de gedit-url.</p> <h2>Développement</h2> <p>Le logiciel Git est utilisé pour la gestion de versions. <a href="http://jpfleury.indefero.net/p/gedit-url/source/tree/master/">Le dépôt peut être consulté en ligne ou récupéré en local.</a></p> <p>gedit-url dispose également d'un <a href="http://jpfleury.indefero.net/p/gedit-url/issues/">système de suivi</a>, sur lequel les rapports de bogues et les suggestions peuvent être soumis.</p> <h2>Licence</h2> <p>Auteur: Jean-Philippe Fleury <a href="&#109;&#97;&#x69;&#x6c;&#116;&#111;&#x3a;&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;">&#x63;&#111;&#110;&#x74;&#x61;&#99;&#116;&#x40;&#x6a;p&#102;&#x6c;&#x65;u&#114;&#121;&#x2e;&#x6e;&#101;&#116;</a><br /> Copyright © Jean-Philippe Fleury, 2009-2012.</p> <p>Ce programme est un logiciel libre; vous pouvez le redistribuer ou le modifier suivant les termes de la GNU General Public License telle que publiée par la Free Software Foundation: soit la version 3 de cette licence, soit (à votre gré) toute version ultérieure.</p> <p>Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE: sans même la garantie implicite de COMMERCIALISABILITÉ ni d'ADÉQUATION À UN OBJECTIF PARTICULIER. Consultez la Licence publique générale GNU pour plus de détails.</p> <p>Vous devriez avoir reçu une copie de la Licence publique générale GNU avec ce programme; si ce n'est pas le cas, consultez <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> Wed, 26 Oct 2011 13:57:00 -0400 Squeletml: système de gestion de contenu léger et sans base de données http://www.jpfleury.net/logiciels/squeletml.php http://www.jpfleury.net/logiciels/squeletml.php <!-- APERÇU: automatique --> <p><img class='imgGauche' src='http://www.jpfleury.net/fichiers/squeletml-logo.png' alt='Squeletml' width='75' height='75' />Le logiciel libre Squeletml est un système de gestion de contenu léger, sans base de données et multilingue. Sa structure est un squelette XHTML 1.0 Strict géré par inclusion de fichiers PHP. Chaque page peut être personnalisée facilement (métabalises, langue, titre de premier niveau, fichiers CSS ou Javascript, table des matières, etc). Plusieurs fonctionnalités sont également livrées par défaut: formulaires de contact, galeries photo, classement par catégories, flux RSS, fonction «Faire découvrir à des ami-e-s», interface d'administration avec porte-documents, etc.</p> <p>Aussi, un fichier de configuration permet de paramétrer en un rien de temps plusieurs aspets structurels et visuels sans devoir bidouiller dans les feuilles de style CSS ou la structure de page.</p> <p class="centre"><a href="http://www.squeletml.net/"><img class="imgSansBordure" src="http://www.squeletml.net/site/fichiers/en-savoir-plus.png" alt="En savoir plus sur le SGC Squeletml" width="272" height="70" /></a></p> Mon, 06 Sep 2010 10:04:00 -0400