Some config I add to the default apache2 global configuration file

17 May 2021

I manage my own little VPS, it host multiple little web site and service.
I wanted to set some headers by default on all the website so I edited the /etc/apache2/apache2.conf file and added these:

# Opt out google FLOC
# https://paramdeo.com/blog/opting-your-website-out-of-googles-floc-network
<IfModule mod_headers.c>
  Header always set Permissions-Policy: interest-cohort=()
</IfModule>

# Set cache for common files
<FilesMatch "\.(ico|pdf|jpg|jpeg|png|gif|js|css|eot|ttf|woff|woff2)$">
  Header set Cache-Control "max-age=63072000, public"
</FilesMatch>

This will be set for all the website hosted on this server. They can be overrited if needed.


Deploy something with Gitlab

10 May 2021

Basicly, when you want to “deploy” something via Gitlab CI/CD, that just mean building something inside a docker container and Rsync the result to the production server.
Continuous Integration” and “Continuous Deployment” are just fancy word that mean you put your shit online. It’s not magic, it’s automated FTP with Git as the source.

First create SSH_PRIVATE_KEY with a ssh private key that can access the server.

ssh-keygen -t rsa -b 4096 -C "me@my-domain.com"

Don’t use the passphrase, otherwise, the automatique login wont work.
You need to add the public key to a file named ~/.ssh/authorized_keys and chmod 0644 ~/.ssh/authorized_keys that file.

Now we just need to add this ssh key to the gitlab-ci that will Rsync what ever file you want to put on the server

deploy_henix:
  stage: deploy
  image: my_image
  before_script:
    - apt-get update
    - apt-get install -qq rsync
  script:
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
    - eval $(ssh-agent -s)
    - ssh-add <(echo "$SSH_PRIVATE_KEY")- mkdir -p ~/.ssh
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
    - rsync -av public/js/ myuser@mydomain:public_html/public/js
  only:
    - master

How to install Qutebrowser on Linux Mint and Ubuntu 20.04

10 May 2021

I like Qutebrowser because it’s a keyboard driven browser (Vim like). You can do a lot of things without using the mouse. It’s really a good option when you already run something like I3 to handle the desktop window. I personnaly run the Regolith desktop, that is based on I3.

First you will have to use the git and virtual env version, because the version shipped from the Ubuntu 20.04 is really outdated and also provide a QtWebEngine that is missing a year of security fix.
You can’t miss so much security fix, this is not a viable option.

First step is to clone qutebrowser and build the virual env (See the documentation)

git clone https://github.com/qutebrowser/qutebrowser.git
cd qutebrowser
python3 scripts/mkvenv.py

I recommand you also build the documentation, just for the documentation, it will allow you to call :help for… Well, help.

python3 scripts/asciidoc2html.py

This is the basic to install qutebrowser. To start it, just do .venv/bin/python3 -m qutebrowser from the qutebrowser repository.

But that is not usable for daily drive : it’s not your default browser, witch mean that it wont open links from other apps.
You also have to remember a fairly complex command that need to be started from a specific directory.

Now, for the desktop integration, first, copy the org.qutebrowser.qutebrowser.desktop file inside ~/.local/share/applications.

You can’t just set Qutebrowser as default browser from the configuration panel, sadly. First we need a little script (this is also in the official documentation) to start it easly. Create a file /usr/local/bin/qutebrowser and put this content inside :

#!/bin/bash
~/qutebrowser/.venv/bin/python3 -m qutebrowser "$@"

You also need to add execute permission on this file

chmod +x /usr/local/bin/qutebrowser

To set Qutebrowser as the default browser, we need to run this command:

xdg-settings set default-web-browser org.qutebrowser.qutebrowser.desktop

And voilà, Qutebrowser should open every link you try to open.


Refonte du site avec Hugo

10 May 2021

Depuis pas mal de temps, je veux refaire ce site (encore !)

Oui, il y a eu pas mal de version, de refonte, pas toujours justifiée en fonction de mes humeurs et outils favoris.

En gros, la toute première version était mon travail de fin d’étude sur base d’un CMS maison (FlameCMS xD) et animé en javascript.
Ensuite une version Wordpress qui n’a pas tenu très longtemps, parce que développer mon propre CMS dans mon coin, c’est quand même vachement difficile.
Puis est venu la version SPIP c’était le logiciel qui j’utilisais de manière professionnel. Avoir mon blog sous SPIP me permettait d’expérimenter.

Aujourd’hui mes besoins sont différents. Premièrement je veux que ce site soit plus rapide et plus léger. Je le veux aussi statique que possible et en markdown. Je veux les update via Git et un système de déployement.
Mes besoins ont évolués, ce site a toujours été ma documentation personnel, mais j’ai besoin de pouvoir rapidement mettre en place des articles depuis Spacemacs car je n’ai pas quitter mon IDE favoris. Je fais absolument tout ce que je peux dedans, le quitter est systématiquement douloureux.
J’ai aussi besoin de mettre de l’ordre dans tous ces articles qui sont en ligne depuis une éternité et qui mérite simplement la poubelle aujourd’hui.

Initialement, je voulais utiliser PicoCMS, il est en PHP et ne demande pas de devoir “compiler” le markdown avec un outils. On ajoute simplement la page au dossier de contenu et cela fonctionn directement.
Seulement, PicoCMS n’est pas très orienté “blog”. Je n’ai pas réussi a obtenir la structure qui me convient.
La dépendance à PHP est aussi une restriction, pour un site très statique, utiliser PHP pour afficher du texte n’est pas des plus intéressant, même si PicoCMS est très léger !

Bref, je me suis tourné vers Hugo qui offre beaucoup plus de fonctionnalité et une compilation vers des fichiers statiques.


Get PhpUnit code coverage back

14 March 2021

Since I upgraded to laravel 8, my usual phpunit setup greated me with a

PHPUnit 9.5.2 by Sebastian Bergmann and contributors.

  Warning - The configuration file did not pass validation!
  The following problems have been detected:

  Line 35:
  - Element 'log': This element is not expected.

  Test results may not be as expected.

I m used to have a beautiful little html web site that show me the code coverage with:

<logging>
    <log type="coverage-html" target="tests/code-coverage/" lowUpperBound="35" highLowerBound="70" />
</logging>

But it doesn’t work anymore, you need to use the <coverage> node:

<coverage processUncoveredFiles="true">
    <include>
        <directory suffix=".php">./app</directory>
    </include>
    <report>
        <html outputDirectory="html-coverage" lowUpperBound="50" highLowerBound="90"/>
    </report>
</coverage>

Brother MFC 9140CDN - Reset des toners

17 April 2020

J’ai une Brother MFC 9140CDN. Chouette imprimante dont je suis très content. Cependant, comme tous les fabricants d’imprimante, Brother ne peut pas s’empêcher d’arnaquer ces clients en leur vendant :

  • Des toners hors de prix
  • Des toners qui sont annoncés vide par la machine alors qu’en fait, ils ne le sont pas.

Pour déclencher l’alerte « nouveau toner », il se contente de compter le nombre de page imprimé. Et il a la main lourde sur le calcule, parce que perso, cela fait déjà 2 fois que je remet a 0 les toners sans les changer et ça imprime toujours correctement.

Pour remettre a 0 (reset) les toners de votre imprimante :

Repérer l’astérix du pavé numérique. On peut allumer le pavé numérique en cliquant sur « fax ». Ensuite il faut ouvrir le compartiment des toners. Appuyez pendant 5 secondes sur l’astérix (le compartiment à toner dois rester ouvert).

Un menu apparaît :

  • K = noir
  • Y = Jaune
  • M = Rouge
  • C = Blue

Les cartouches qui termine par STD sont cartouche de taille « standard » et les HC sont les grand capacité (HC = Hight capacity).

Le menu est parfois un peu buggé/capricieux, il faut insister sur les boutons.


L'héritage important

1 April 2020

.content {
    height: inherit !important;
}

Je ne sais pas à quoi cela peut bien servir. Mais c’est important !


if if if

14 February 2020

if-if-if

Quel genre de psychopathe écrit ce genre de code et ne ce demande pas s’il n’y a pas un problème ?


Utiliser la session Laravel avec les route/api

17 December 2019

Je cherchais une solution pour utiliser les routes api de Laravel avec la session web classique. Installer Passport est complexe et souvent inutile pour pas mal de projet. Il existe la solution de passer par un champ api_token dans la base de donnée, mais niveau sécurité, je trouve cela moyen.

Cependant, il est possible d’utiliser le driver de session classique :

Dans config/auth.php, il faut modifier les guards pour replacer token par session en dessous d’API :

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'session',
        'provider' => 'users',
        'hash' => false,
    ],
],

Ensuite dans app/Http/Kernel.php, il faut modifier le middlewareGroups « api » :

'api' => [
    'throttle:60,1',
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Session\Middleware\StartSession::class,
    'bindings',
],

Tester avec un projet Laravel 6 sans soucis !


Dymo Label Writer 450 sous Linux Mint 19.2

13 October 2019

Il y a un paquet Ubuntu printer-driver-dymo.

Voir: https://doc.ubuntu-fr.org/dymo

Une fois le driver installer, CPUS semble voir correctement la Dymo et permet même de choisir le format d’étiquette. L’imprimante est correctement listée.

Dymo inside the printer menu

Par contre impossible d’imprimer depuis un logiciel classique. L’astuce est d’installer gLabels, de sélectionner le format et cela imprimera !

glables selection de produit

Il est aussi possible de partager la Dymo en réseau. J’utilise gLabels sur mon portable pour imprimer sur la Dymo de ma tour.

Attention à bien cocher la case “publier les imprimantes” dans les paramètres de Linux Mint :

share printer menu

Sous Windows, le logiciel de Dymo (DYMO Label) pour faire des étiquettes ne semble pas fonctionner avec cette configuration.