Les caractères de dessin ascii en latex (comme pstree)
Publié par The Troll le 19 05 2021

Parfois, il vous prend l'envie de copier-coller une sortie d'un terminal sous linux pour faire un cours en latex (pour une formation linux) par exemple la sortie de pstree ou, pour mon cas d'un systemctl list-dependencies, un truc qui donne quelque chose comme çà :

systemdefault.target
● ├─exim4.service
● ├─hddtemp.service
● ├─slim.service
● ├─systemd-update-utmp-runlevel.service
● └─multi-user.target
●   ├─apache2.service
Mais latex il aime pas du tout ça, mais alors pas du tout, et il vous le fait savoir avec des insultes bien senties qui ressemblent à cela :
! Package inputenc Error: Unicode char ● (U+25CF)
(inputenc)                not set up for use with LaTeX.
! Package inputenc Error: Unicode char ├ (U+251C)
(inputenc)                not set up for use with LaTeX.
! Package inputenc Error: Unicode char ─ (U+2500)
(inputenc)                not set up for use with LaTeX.
! Package inputenc Error: Unicode char └ (U+2514)
(inputenc)                not set up for use with LaTeX.
! Package inputenc Error: Unicode char │ (U+2502)
(inputenc)                not set up for use with LaTeX.
Alors bien entendu vous vous précipitez dans votre moteur favoris, pour trouver une solution et vous tombez sur une pléthore de gens qui vous proposent de les dessiner avec tkiz. Malheureux... c'est pour cela qu'il faut lire les docs, le plus possible. Parce que latex à prévu un package pour le faire tout seul, il suffit d'ajouter dans votre préambule

\usepackage{pmboxdraw} % For lines form from terminal
\DeclareUnicodeCharacter{25CF}{\textbullet}

Et là, il le fait pour vous, sans vous prendre le choux. Vous avez remarqué que j'ai ajouté \DeclareUnicodeCharacter{25CF}{\textbullet} parce que le rond noir ● qui est dans la sortie de systemctl n'est pas dans le dessins ascii des boites.

J'espère que cela vous fera gagner du temps un jour et que vous trouverez ce billet dans votre moteur de recherche favori.

Je vous mets en téléchargement la liste des symboles dispo en latex, cela vaut le coup d'y jeter un coup d'oeil : latex_symbols.pdf.

Debian linux - Latex - Commentez
Le if en latex, c'est simple parfois mais pas tout le temps.
Publié par The Troll le 20 04 2021

Oui les p'tits clous, 2 billets en un rien de temps (et j'en ai un troisième sous le coude, mais comme il est 'politique' j'ai la flemme). Donc deuxième billet pour annoncer au monde entier que j'ai résolu un problème que j'avais avec latex, dans une application (on dit appliance ?) de mon cru (ui il y a un R) utilisant latex.

Pour expliquer simplement, j'ai une macro qui reçoit des arguments, juste que là c'est assez simple. Disons que dans cette macro je teste pour savoir si un argument est vide (ui, ils peuvent être vides, sinon c'est moins drôle). Pour cela j'utilise le package \ifthen comme cela :


\RequirePackage{ifthen}

\RequirePackage{ color, graphicx, fancyhdr}
\definecolor{t3}{RGB}{85,212,0}

\newcommand*{\truc}[3]{
Écrit le #1
% si le 3 n'est pas vide écrit le 3
\ifthenelse{\equal{#3}{}}{}{\noindent{{\color{t3}\ding{109}}\itshape~ #3} ~\\}

Écrit le #2
}

Pour le moment tout va bien, la vie est belle et cela fonctionne. SAUF SAUF SAUF que si l'argument en question contient du code latex, la compilation [s|t]e plante avec un log pas forcément facile à comprendre :


! Incomplete \iffalse; all text was ignored after ligne....

Après avoir bataillé un peu de temps à comprendre (je suis pas un dieu en latex) j'ai finalement utilisé une autre construction du même paquet \ifx:


% vvvv le 3 est là
\ifx&#3&%
\else {\begin{small}\vbox{\begin{list}{}{}#3 ~\end{list}}\end{small}}

Et là roulement de tambour cela compile et fait ce qu'il faut comme il faut où il faut. Je suis joie.

Debian linux - Libre - Latex - Commentez
Nouvelles options de config pour apache
Publié par The Troll le 16 04 2021

au détour d'un post mastodon, j'ai découvert de nouveaux headers 'à la mode'.

Le point de départ est la nouvelle technique marketing google, la cohorte. On ne vous dépose plus de cookies,(enfin, plus seulement) de traceurs, mais on vous score dans une "cohorte" qui a le même comportement, comme un troupeau. De ce que j'ai cru comprendre cela ne concerne que les utilisateurs chrome. Mais qui peut utiliser chrome ? mystère.

Donc il y a un nouveau header que l'on peut ajouter à sa config, (apache pour moi) pour dire au navigateur pas de cohorte pour ce site:

Header always set Permissions-Policy: interest-cohort=()

Vous pouvez le mettre dans votre httpd.conf (du coup valide pour toute les hôtes virtuels.

Comme j'étais parti dans le délire, j'ai 'hardener' (un truc à la mode) mon serveur, avec tout pleins de directives qui sont bonnes :

  • Pour éviter de se faire iframer (utiliser nos données dans une iframe) : Header always set X-Frame-Options "SAMEORIGIN"
  • Pour ne pas envoyer de referer (ne pas dire d'où on vient) lorsque l'on suit un lien pointant vers un autre site. Ici je le garde pour les liens intra-site. : Header set Referrer-Policy "same-origin"
  • Pour empêcher les navigateurs de charger des assets d'un autre site (par exemple une feuille de style personnalisé : Header always set X-Xss-Protection "1"
  • Pour empêcher les navigateurs de charger des assets d'un autre site, les 2 valeurs self (pour votre site) et unsafe-inline (si vous utiliser des feuilles de style ou des scripts inlinés dans les pages) : Header always set Content-Security-Policy "default-src 'self' 'unsafe-inline';
  • Pour empêcher les navigateurs de sniffer sans se fier aux headers déclarés (cela permet d'éviter qu'un utilisateurs upload un fichier qui serait mal interprété) : Header always set X-Content-Type-Options "nosniff"
Debian linux - Serveurs - 2 commentaire(s)
A propos d'un bug python.pygments dans debian jessie
Publié par The Troll le 09 11 2017

Coucou les p'tits clous... ça nous rajeunit pas en fait.

Depuis quelques temps j'étais confronté à un bug sous latex pour colorer du code avec le package minted. La compilation foirait et je n'arrivais pas à avoir mon fichier compilé par latex.

Michel, mais comment ça marche, et bien c'est très simple : il faut ajouter

\usepackage{minted}
dans le préambule, et dans le corps du document :

\begin{minted}[linenos=true, bgcolor=lightgray, tabsize=4, gobble=8,
fontfamily=courier, fontsize=\small, xleftmargin=5pt, xrightmargin=5pt]{php}

     print('bonjour monde');

    \end{minted}

Mais dans mon cas, une debian jessie, ça marche po. (il faut bien entendu avoir python pygments installé.)

En regardant dans les logs de latex, on y trouve un truc du genre :


runsystem(pygmentize -l php -f latex -F tokenmerge  -F gobble:n=8 
-P linenos -P "verboptions= ,tabsize=4,fontfamily=courier,fontsize=\small ,xleftmar
gin=5pt,xrightmargin=5pt" -o lex.out.pyg lex.pyg)...executed.

! LaTeX Error: File `lex.out.pyg' not found.
Et si on tente la commande en ligne de commande, nous avons :


herve@dreammachine:~/RV/travaux/latex$ pygmentize -S default -f latex > lex.pyg
Traceback (most recent call last):
  File "/usr/local/bin/pygmentize", line 5, in 
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2876, in 
    working_set = WorkingSet._build_master()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 451, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 464, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 639, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: Pygments==1.6

Bon, on y voit un peu plus... il attend une version de pygments qui n'est pas celle fournie par la distribution. Donc on télécharge dans wheezy-backports la version 1.6 et on l'installe à la main (en downgradant du coup...)

et TADAAAAAAAA...... à marche.

Pour que cette petite manip permettent à d'autres de gagner un peu de temps, avec peut être les bons termes de recherche pour être trouvé facilement sur le nain Ternet.

Debian linux - Libre - 7 commentaire(s)
Internet et la liberté
Publié par The Troll le 27 04 2016

je suis tombé par hasard pas si hasardeux sur un article d'un monsieur : https://www.santenatureinnovation.com/jm-dupuis-bientot-supprime/

Ce monsieur (je ne parle pas de lui en particulier, je ne le connais pas, mais c'est un propos bien plus général) fait la grande découverte du siècle : Rien n'est gratuit.

Il faut au moins un ordinateur, une connexion internet, un raccordement électrique, et du temps. Voila pour la partie matériels.

Pour la partie logiciels, Si ce que vous avez est gratuit, c'est que c'est vous la marchandise. Ainsi tous les grands noms touiteur, fassebouc, gogole, unstagramme et consort vous offrent la possibilité de vous servir sans payer de leurs services mais en échange ils utilisent vos données personnelles (navigation, connexions, recherches, mails, contenus, amis, relations...) pour vous 'scorer' (vous profiler économiquement) afin de vous 'vendre' au mieux à des annonceurs, au pire aux gouvernements, aux partis politiques, à vos employeurs. Ils peuvent (et font) de la censure sur leurs réseaux (ils sont chez eux tout de même) pour des bonnes (mœurs, légalités) ou mauvaises (concurrences, vies alternatives...) raisons. Ils utilisent même votre activité numérique pour scorer vos visiteurs et les vendres aux entreprises les plus offrantes. Ainsi le gentil animateur d'un blog sur les produit naturels hébergé gratuitement, avec des statistiques de visites gratuites, des listes de diffusions gratuites, des adresses et comptes mails gratuits offre sur un plateau ses visiteurs à des groupes (par exemple yves rocher, bjorg, danone...) qui sauront utiliser avec intelligence ces données (qu'elles payent bien volontiers).

Mais cela ne veut pas que internet est verrouillé (pour le moment), cela veut dire que vous devez ne pas utiliser leurs réseaux, vous devez prendre un hébergement (un vrai) et apprendre à le gérer : site, blog, mails, listes, flux rss... ou prendre un prestataire pour le faire, un prestataire en accord avec vos valeurs pour qu'il ne vous censure pas. Oui c'est payant.

C'est à ce moment là que les kékés comment à hurler au racket. Lorsque vous achetez(ou louez) une voiture, vous la payez, vous payez votre assurance, votre essence, vous avez même payé le droit de l'utiliser (le permis de conduire), soit vous la réparer vous même, soit vous payez le garagiste et personne ne trouve cela anormal. Par contre, en informatique tout le monde pense pouvoir l'utiliser gratuitement sans aucune contrainte parce que tout le monde à l'impression qu'ouvrir un compte gmail c'est se créer un mail, qu'ouvrir un waurdpresse gratuit sur waurdpresse point com et prendre les stats gogle, c'est gérer un blog que retoucher (j'allais dire saloper) une photo avec un phautoshop piraté c'est être infographiste. Ben non, c'est juste être un 'kéké' en informatique (sans le dire méchamment). Et à chaque fois, lorsque vous tentez de leur expliquer les logiciels libres, comment utiliser quoi, ou apprendre, par quoi commencer, ces gens là vous envoient bouler en vous expliquant qu'ils savent parfaitement ce dont ils ont besoin et ce n'est pas de vous. Dont acte.

Et puis un jour, pour les plus chanceux, ceux qui vont évoluer suffisamment pour heurter le plafond de verre (le vraie), ils vont s’apercevoir que non ce qu'ils font ce n'est pas de l'informatique et qu'ils sont coincés, ils sont censurés, leurs pages fermées, leurs données perdues, leur phautoshop piraté qui ne fonctionne plus que leur waurdpresse a été piraté et vont pondre un long post dithyrambique sur internet qui est trop pourri. Non il ne l'est pas encore, c'est juste leur internet qui est pourri parce qu'ils n'auront pas voulu ou pas pu apprendre (moi je veux que ca marche épicétou).

Et le pire de tout c'est que ces gens façonnent cet internet pourri, en désapprenant à leurs visiteurs les bonnes pratiques, en leur faisant croire qu'une page fassebouque c'est ça internet, en leur faisant croire qu'un gogoleplus c'est ça une gestion de contacts, en leur faisant croire que ce minitel 2.0 c'est cela internet. Alors que non. Il est très facile de s'émanciper : apprendre et prendre un hébergement. Toute la doc est gratuite sur le net (sur les bons sites et pas sur les miroirs gogole.)

ps : vous remarquez que je dis qu'internet n'est pas verrouillé 'pour le moment', c'est parce que les gouvernants voudraient bien le verrouiller pour empêcher les gens qui ne peuvent pas être censurés par gogole et consort puissent l'être par une autorité administrative, pour que les gens qui ne peuvent pas être pistés et contrôlés par gogole puissent l'être par une autorité administrative et lorsque le peu que nous sommes tentons de nous faire entendre pour combattre ces tentatives de flicages et de pistages, ils sont les premiers à nous rétorquer que si on avait rien à se reprocher on n'aurait rien à craindre de toutes ces lois liberticides : ben oui celui qui a un mail gogole n'a rien à craindre de plus, mais le 'rebel' qui aime bien être libre ? La liberté est devenu tellement old school aujourd'hui.

Si je dois vous donnez un conseil : allez regarder derrière le mur, l'herbe est bien plus verte. Si vous avez du mal : faites-vous aider. La liberté requiert du travail pour s’apprécier. Internet ce n'est pas ce que ces gens là vous disent, vous vendent et vous font utiliser : internet c'est vous au centre.

Debian linux - Lol - politique ? - Libre - Serveurs - Commentez