Skip to main content

Développeur web Full-stack chez WebService'Est - Metz - Saint-Avold.
Je partage ici en brut mes découvertes issu de ma veille IT.
---
Pourquoi pas Facebook ou Twitter? Je suis pour l'open-Source !

nicolasnosal.fr

www.webservice-est.fr

nosalnicolas

 

Article très intéressant d'un PoC pour lancer un LLM sous SteamDeck, notamment le tweak bios sur la mémoire unifiée : https://swethatanamala.substack.com/p/how-i-ran-llms-on-steam-deck-handheld ; ou alors cet article utilisant le modèle lora : https://medium.com/@aleksandrshevchuk/steamdeck-and-a-gpt-model-on-the-brink-of-absurdity-bf1e4b8eb6...

 

Petit test de Swirl-AI (https://github.com/swirlai/swirl-search/tree/main) -- Un meta-moteur de recherche libre avec de l'IA pour condenser.

Sa mise en place n'est pas aussi "simple" que fait paraitre la doc ( page utile: https://docs.swirl.today/Admin-Guide.html#configuring-the-swirl-environment / https://github.com/swirlai/swirl-search/blob/main/docs/DOCKER_BUILD.md#create-super-user-account )...

Du coup petit memento, tout d'abord l'installation :
```
# Setup
mkdir -p swirlai && cd swirlai && \
curl https://raw.githubusercontent.com/swirlai/swirl-search/main/docker-compose.yaml -o docker-compose.yaml && curl https://raw.githubusercontent.com/swirlai/swirl-search/main/.env.docker -o .env && echo 'SECRET_KEY=django-insecure-4*@!3sf)-t=jvww$27w#_gv9!18+8cj9(+e$#w8*#umln$jjf$' >> .env && echo "CSRF_TRUSTED_ORIGINS='http://localhost:8000'" >> .env && echo "MSAL_CB_PORT=8000" >> .env && echo "MSAL_HOST=localhost" >> .env && echo "OPENAI_API_KEY='GPT_KEY_HERE'" >> .env && docker compose pull && sed -i '/^\s*app:/a \ env_file: [.env]' docker-compose.yaml

# Change IP if use VPS
sed -i "s/SQL_HOST=localhost/127.0.0.1/g" .env && sed -i "s/localhost/$(curl ifconfig.me)/g" .env && echo http://$(curl ifconfig.me):8000
# Set your GPT API KEY
sed -i 's/GPT_KEY_HERE/REPLACEME/g' .env
```

Puis on le lance:
```
# Run
docker compose -p swirlai up -d && docker compose logs -f app | grep -w --line-buffered -m 1 "Listening on TCP address 0.0.0.0:8000" && echo "OK, Swirl is Up ! on :8000"
```

Et là, c'est le drame, impossible de se connecter et moteur vide... voici comment faire
```
# Création du compte admin ( admin/password n'existe plus dans les dernière version par défaut )
docker compose exec -it app bash .... puis...
python manage.py createsuperuser --email admin@admin.com --username admin
# On rajoute les PSE de base
python swirl_load.py SearchProviders/google_pse.json -u admin -p admin
```

Et enfin, on peut se connecter http://MYIP:8000/galaxy/ , user/pass de test défini avant dans mon cas (admin/admin) puis on peut faire des recherches sur les PSE de base, par exemple Linkedin.

Puis rien d'autre que ça?
En fait, il suffit de voir dans le dossier https://github.com/swirlai/swirl-search/tree/main/SearchProviders, quelques autres PSE sont fournis… Pour l'exemple, on va ajouter InternetArchive :

```
python swirl_load.py SearchProviders/internet_archive.json -u admin -p admin
```

Puis, on va l'activer, pour cela, on va sur la liste des search_provider de la page d'admin: http://MYIP:8000/admin/swirl/searchprovider/ puis on clique sur InternetArchive puis "Activate". Il suffira alors de se rendre de nouveau sur le front pour le trouver dans la liste déroulante notre nouveau PSE.

Bon nombre d'autres PSE, sont à customiser dans la partie admin, comme celui de ChatGPT qui nécessite de re-saisir son API_KEY, et surtout on peut créer ses propres PSE.

En connecteur, il y a de quoi faire même s'il manque mySQL et postgreSQL !! Ce qui est un vrai no-go de mon côté, surtout que c'est quand même un peu trop difficile d'accès pour un profane niveau UX, dommage :
- ChatGPT Query String
- HTTP/GET returning JSON
- HTTP/POST returning JSON
- Elasticsearch Query String
- OpenSearch Query String
- Google BigQuery
- Sqlite3
- M365 Outlook Messages
- M365 One Drive
- M365 Outlook Calendar
- M365 SharePoint Sites
- Microsoft Teams
- MongoDB
- Oracle
- Snowflake
- PineconeDB
- SnowflakeAI

Voilà il ne reste plus qu'à clean… le test est fini.

```
# Clean
docker-compose -p swirlai down --volumes
```

 

On sous-estime vraiment le menu "aide" de la barre de menu sous MacOS... Dans google chrome, recherche dans ses favoris, dans n'importe quel app, raccourci clavier avec aide visuel, etc...

 

J'ai récemment eu une erreur de migration en testant tianji/unami...

Petit memento dans mon docker-compose il suffit juste d'ajouter dans le service de l'app:
"command: npx prisma migrate resolve --rolled-back NOMDELAMIGRATIONBLOQUANTE"

Puis en séquence d'execution ça donnerais ça: down (la stack), edit_on (ajouter la ligne), up, down, edit_off, up.
Ca devrait être régler... en tout cas, ce fut mon cas.

 

Comment mettre à jour Mautic à la version 5 ( version "beta" actuellement la seule compatible PHP 8.1 ) ?

**Update**: Après test, la v5 ne supporte pas l'envoi d'email en mode production... autant dire inutilisable.. rollback avec un bon vieux .htaccess pour appliquer php8 que pour le dossier de mautic 4.4 :
```
# Force use php 7.4
7.4 :
<FilesMatch \.php$>
SetHandler application/x-httpd-php74
</FilesMatch>
AddHandler application/x-httpd-php74 .php
suPHP_ConfigPath /my/path/mautic/php.ini
```

**Disclaimer**: Prévoyez bien les backup, il s'agit d'une version "béta" ! ( donc à vos risques )

- Se rendre dans "Configuration" -> "Paramètres système" -> "Update Settings"
- Mettre le niveau de stabilité à "Beta"
- Se rendre en terminal dans le dossier de mautic:
```
php bin/console mautic:update:find
php bin/console mautic:update:apply
php bin/console mautic:update:apply --finish
```
Vous devriez voir ce message: "Bravo ! Vous utilisez maintenant la version 5.0.0-rc2 de Mautic."

Si comme moi, vous êtes bloqué :
- Pour résoudre "An exception occurred while establishing a connection to figure out your platform version.You can circumvent this by setting a 'server_version'" :
- Modifer le `./app/config/local.php` : il faut passer le "db_driver" de "mysqli" à 'pdo_mysql' ( puisqu'il y a un breaking change sous php8.1: https://php.watch/versions/8.1/mysqli-error-mode )
- Pour résoudre "Failed opening required '.../var/cache/prod/doctrine/orm/Proxies/__CG__MauticPluginBundleEntityPlugin.php'"
- Clean le cache: `rm -rf var/cache/prod/* && php bin/console cache:clear --env=prod` puis on applique la màj de finalisation en incluant les modules aussi: `php bin/console mautic:update:apply --finish -p`

 

Alternative à l'ultime "ncdu", un port super rapide en go "gdu": https://github.com/dundee/gdu
Le github fait référence aussi vers d'autres projets similaire ( ncdu, dust, ... ) 👍
Ainsi que les bench, le plus rapide en "warm cache" ( destination régulière ) est par contre celui en rust: https://github.com/Byron/dua-cli
Je regrette juste le dark theme par défaut de ncdu :P

 

Gitea vient de publier sa version 1.19 (https://blog.gitea.io/2023/03/gitea-1.19.0-is-released/#-gitea-actions-21937httpsgithubcomgo-giteagi...) qui contient son propre système de runner ( gitea/act_runner ) pour faire la CI/CD 🚀🎉
Le process est encore un peu brouillon car super récent ( 3 jours ), mais voici comment tester rapide...

1- Mettre en place une stack gitea ( template portainer pour aller vite ou autre )
2-Ajouter à la fin du config/app.ini:
```
[actions]
ENABLED = true
```
3-Restart stack
4-Se connecter en Admin > "Administration du site" > "Runners" (entre "Applications" et "Configuration") - /admin/runners
5-Ajouter un runner > Copier le TOKEN.
6-Lancer une nouvelle stack pour le runner:
```
version: "3.8"
# Package src repo : https://github.com/martabal/docker-act_runner
services:
gitea_act_runner:
image: martabal/act_runner:latest
environment:
- INSTANCE=https://NDD/ # http://IP:PORT/
- TOKEN=TOKEN_A_COLLER_ICI
- NAME=test_runner
#- LABELS=RUNNER_TAGS
volumes:
- BIND_FOLDER_OR_MOUNT_NAME_HERE:/config
- /var/run/docker.sock:/var/run/docker.sock
```
7-Aller sur le repo souhaité, Paramètres > Dépot > Paramètres avancés > en dessous de Paquets, cocher la case "Enable Repository Actions".
8-Commit un .gitea/workflows/workflow.yaml
9-Push pour déclencher le runner, visible dans l'onglet "Actions" du repo

# Lien super utile ( notamment l'exemple de workflow.yaml et tout le process ) :
https://blog.gitea.io/2022/12/feature-preview-gitea-actions/

NOTE: Depuis la 1.17 Gitea se dote d'un package registry qui peut host des images OCI ( docker, etc.. ) et bien d'autres ( NPM, .. ) autant dire que Gitea rattrape tout doucement le monstre Gitlab ( en feature tout comme sa consommation en ressource :D ) : https://jlelse.blog/dev/gitea-container-registry

 

Ça fait un bon moment que je n'ai plus partagé d'info, je vais rajouter en public certaines mais d'ici là, voilà ma problématique de la journée ;

Je me suis demandé pourquoi "depends_on" n'est pas supporté par swarm... en fait c'est assez simple, swarm utilise encore que les specs 3.9 (https://github.com/docker/compose/issues/9957#issuecomment-1329726003) et non pas les nouvelles specs sans version ( ce qu'utilise maintenant docker-compose ) géré depuis 2020 par : https://compose-spec.io/ , les specs depends_on sont présent ici: https://github.com/compose-spec/compose-spec/blob/master/spec.md#depends_on.

Bref il va falloir attendre que docker stack soit mis à jour... un ticket est en cours ici: https://github.com/docker/cli/issues/3880. En attendant, il faudra bidouiller avec toujours le classique script de waitfor (https://github.com/eficode/wait-for) ou bien dockerize (https://github.com/powerman/dockerize).

Très bonne vidéo qui explique cela et qui présente les nouveautés de compose : https://youtu.be/ZCm7Qyjz4Nw?t=299

 

Memento rapide : Comment gérer des QR depuis le terminal ?
- Création : echo "https://www.webservice-est.fr" | qrencode -t UTF8 # -o qrcode.png
- Lecture : ./qrscan --qr test.png

> Quelques exemples de qrencode: https://doc.ubuntu-fr.org/qrcode#exemples_d_utilisation_de_qrencode
> Repo de qrscan: https://github.com/sayanarijit/qrscan

 

Petit memento qu'il est possible d'automatiser et d'utiliser Gitlab en mode CLI : https://gitlab.com/gitlab-org/cli

> Pour la petite histoire, il s'agit du projet glab (https://github.com/profclems/glab) qui a été repris par Gitlab en personne 😎

 

L'extension Redirector (https://chrome.google.com/webstore/detail/redirector/ocgpenflpmgnfapjedencafcfakcekcd) que j'utilise sur Chrome va bientôt cesser de fonctionner (juin 2023) car arrêt du support du MV2 (https://github.com/libredirect/libredirect/issues/45#issuecomment-1068395443), bon nombre de plug-in est basé dessus car il permet les redirections. Mieux encore cette extension: https://github.com/libredirect/libredirect qui est un redirector spécialisé pour les alternatives libres que j'ai loupé sur le chrome store, tout simplement car il est impossible de rajouter sur le store un plug-in MV2 depuis 2022..
En tout cas, libredirect est une source d'instance super intéréssante: https://github.com/libredirect/libredirect/blob/master/src/instances/data.json , il y aussi le projet SimpleWeb qui propose plein d'alternative: https://simple-web.org/ , un docker existe aussi: https://codeberg.org/SimpleWeb/SimplyTranslate-Docker/src/branch/master/web

 

Vidéo hyperqualitative de LTT sur Windows: https://www.youtube.com/watch?v=4GASGO0go5I ; Microsoft à bien rattraper son retard sur linux & les interfaces Mac en suivant ces astuces.

 

Alternative de Portainer spécifique à Swarm: https://github.com/swarmpit/swarmpit
Léger, Gratuit, Full-Api access, AutoUpdate Image 💯

 

Gros Memento qui va vous simplifier la vie pour installer docker sur Linux (apt) 😎 avec des one-liner prêt à copier/coller 😉 :

Edit 2023: Un one-liner en vraiment beaucoup plus court :P: `wget -nv -O - https://get.docker.com/ | sh`

Install docker one-line: `apt-get install apt-transport-https ca-certificates curl screen ncdu gnupg lsb-release; curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg; echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null; less /etc/apt/sources.list.d/docker.list; apt-get update; apt-get -y install docker-ce docker-ce-cli containerd.io; docker run --rm hello-world`

Install docker-compose v2 (v2.23.1 dans cet exemple) one-liner: `mkdir -p ~/.docker/cli-plugins; curl -sSL https://github.com/docker/compose/releases/download/v2.23.1/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose; chmod +x ~/.docker/cli-plugins/docker-compose; cp ~/.docker/cli-plugins/docker-compose /usr/local/bin/docker-compose; docker compose version`

> Cette méthode d'installation permet d'être compliant: `docker-compose` (directement le cli) ou bien `docker compose` ( via le module de docker). Cela permet aussi de controler exactement la version souhaitée.
> Il y a aussi maintenant un nouveau paquet disponible pour faire la même chose mais en latest_only et dépendant donc de votre gestionnaire de paquet : "docker-compose-plugin".

Bonus sur LXC (Memento) : Monter un dossier host dans un container lxc (nonprivileged) : `pct set 300 -mp0 /Volumes/tmp,mp=/docker/mnt/tmp`

 

Utiliser un compte smtp de test sur gmail en non sécurisé (user/pass) est vraiment devenu horrible ( en plus il sera désactivé courant mai 2022)... bref ce post m'a bien aidé en attendant : https://stackoverflow.com/a/25238515 surtout le http://www.google.com/accounts/DisplayUnlockCaptcha qui à débloqué l'envoi des email. Pour tester je recommande chaudement "swaks" pour tester rapidement l'envoi d'un email, exemple de commande: swaks --to USER@gmail.com -s smtp.gmail.com:587 -tls -au USER@gmail.com -ap PASS ; # en cas de port bloqué? un classique test avec telnet: telnet smtp.gmail.com 587

Process pour utiliser le SMTP de gmail en 2023: https://noted.lol/setup-gmail-smtp-sending-2023/

 

Pour travailler à plusieurs sur du code, le Live Share de VS Code est vraiment super, comment? Suivre la procédure ici:
- https://docs.microsoft.com/fr-fr/visualstudio/liveshare/use/vscode
- https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare-pack

Si vous utiliser VS Codium (https://vscodium.com/), une alternative s'appelle :
- https://codetogether.com/ : l'URL généré pour le partage est accessible directement depuis le navigateur ( limité à 60minutes sans compte ).

 

Bonne année 2022! Pour bien commencer l'année, une astuce super pratique pour disposer d'un vs code light (navigateur) gratuitement et rapidement sans rien installer!

En effet github a mis en place l'outil via l'url: https://github.dev/ ( il suffit de remplacer le .com en .dev ).

Ça marche pour ouvrir n'importe quel repo github, par exemple: https://github.dev/coder/deploy-code-server ( qui est d'ailleurs un repo intéréssant pour mettre en place sa propre stack un peu plus custom )

 

Besoin de faire une présentation, un cour ou autre? Plus besoin d'être forcémment facecam, vous pouvez très bien utiliser des IA pour ça : https://www.synthesia.io/

 

Tabby ( anciennement Terminus ) est un terminal cross plateforme ( mac, linux, windows ) codé en Electron, il est vraiment très sympa, découvert pour son quake mode, il peut gérer plusieurs type de shell et intègre même un client ssh (génial pour les utilisateurs windows) : https://tabby.sh/

Il y aussi ueli qui est aussi codé en Electron, c'est un clone de spotlight/alfred mais en cross plateform : https://ueli.app/#/

 

Vous utilisez votre git sur des grosses plateformes détenues par des tiers, des alternatives quand même online? :

- Pour remplacer gitlab.com? Pensez à : https://framagit.org/public/projects
- Pour remplacer github.com / jira ou gitea? Pensez à https://codeberg.org/

 

- un outil sympa pour analyser couche par couche une image docker: https://github.com/wagoodman/dive
- un autre outil sympa afin de compresser plus efficacement ses images docker: https://github.com/docker-slim/docker-slim ( https://dockersl.im/ ) (https://computingforgeeks.com/minify-optimize-and-secure-docker-containers-using-dockerslim/)

 

O2S gère Nextcloud enfin... il est temps de rafraichir mes logiciels de connexion cloud, petit memento:
- Forklift 3 gère le webdav et via "Forklift Mini" dans le tray on peux "mount as disk" ( par contre c'est dommage j'ai mis à jour à la dernière version et ça ne marche plus... ): https://binarynights.com/
- Mountain Duck, le projet axé "mount" de Cyberduck: https://mountainduck.io/
- CloudMounter qui gère pas mal de protocole: https://cloudmounter.net/
- StrongSync le projet axé mount spéciale Mac APFS, https://www.expandrive.com/strongsync/ dérivé du vieux expandrive ( linux aussi?): https://www.expandrive.com/desktop/

Sinon il y a le soft de nextcloud qui fait une synchro de base ( filtre possible ).
Edit: Il y a toujours rclone, dommage qu'il n'y a pas de gui de qualité : https://www.linuxuprising.com/2019/07/rclonetray-easily-mount-rclone-remotes.html
Edit2: Pour forklift, il suffisait de réinstaller fuse for mac: https://osxfuse.github.io/ ( et de bien autoriser l'app ).

 

Je bosse actuellement dans un projet avec IA et c'est vrai que les modèles sont principalement en anglais... Du coup, petite découverte de ce que ça peut donner (testable online) avec un modèle génératif Open AI GPT-2 francophone : https://huggingface.co/spaces/mnemlaghi/beauparleur

Approfondir sur Bert? GPT-2? GPT-3?:
- https://dataanalyticspost.com/bert-gpt-3-switch-c-le-transformer-a-lassaut-du-langage-naturel
- https://stackoverflow.com/questions/66852791/key-difference-between-bert-and-gpt2
- https://www.lebigdata.fr/openai-ia-dangereuse-publiee
- https://www.lebigdata.fr/openai-gpt-3-tout-savoir
- https://ressources.labomedia.org/aitextgen

Edit: en passant sur les projets du jour, sympa ce projet (en anglais) couplant un newsreader + un générateur ML pour synthétiser les articles : https://huggingface.co/spaces/Devika/Briefly

 

Si vous débuter sur Mac, un petit raccourci sympa pour ajouter des émoticones: CTRL + Cmd + Espace 😉

 

Outil crossplateform pour améliorer des photos (ai/deeplearning) avec son/ses gpu: https://github.com/xinntao/Real-ESRGAN

Très prometteur, ll est actuellement optimisé pour les images d'animés / photos mais il est prévu d'être optimisé dans un futur proche pour les visages / textes.

Si vous avez un vieux gpu/cpu, vous pouvez utiliser la version online ici: https://huggingface.co/spaces/akhaliq/Real-ESRGAN

 

En réfléchissant de nouveau sur les nas, je me suis posé la question s'il serait possible de me monter un nic teaming ( bonding sous linux bref... de l'aggrégation de plusieurs de mes cartes réseau :D ), la réponse est oui, ça peut se faire via linux (en bonding) mais il faut aussi un routeur/switch compatible ( c'est souvent un basique "Static Link Aggregation Groups (LAGs)" alors qu'il faut un full "Link Aggregation Control Protocol (LACP)" qui est sur du matos plus cher ; au minimum 50€ avec un Netgear Smart GS308T ) ainsi qu'une carte réseau 10gb en mono utilisateur.

Sinon il y aussi le protocole MPTCP qui est super intéréssant pour agréger plusieurs connexion internet, genre le wifi + le lan + le 4g ... :D https://www.youtube.com/watch?v=KezRqtM6quk ( liste des VPS compatibles: https://github.com/Ysurac/openmptcprouter/wiki/Install-or-update-the-VPS )

Edit: petit exemple à quoi peux ressembler la mise en place d'un bonding avec l'interface Synology : https://www.cachem.fr/agregation-liens-nas-synology/ ( similaire sous d'autre os linux comme omv ou autre )

Edit 2: Le Nic teaming sous windows est toujours réservé au SKU des éditions "Serveurs" de Windows. Une doc pour Windows 10 Serveur est dispo: https://docs.microsoft.com/fr-fr/windows-server/networking/technologies/nic-teaming/nic-teaming-sett... ; actuellement la technique pour les "desktop" c'est de configurer manuellement via les pilotes de Intel PROSet: https://www.intel.com/content/www/us/en/support/articles/000005667/network-and-i-o/ethernet-products... ... ça semble fastidieux :D ... Dell explique bien la situation ici: https://www.dell.com/support/kbdoc/fr-fr/000131811/association-de-cartes-nic-dans-des-syst%C3%A8mes-.... Et ça ne va pas s'améliorer, cette possibilité va même totalement disparaitre de Windows 11, Intel ne va pas poursuivre les pilotes ... : https://www.intel.com/content/www/us/en/support/articles/000087483/ethernet-products.html ; bref bien joué Microsoft..

Edit 3: En multi plateforme, (donc windows aussi) il y a le projet dispro (en go) qui est un proxy load balancer NIC sous SOCKS5, qui semblent prometteur... : https://sirsac.github.io/DisPro/

Note: Vérifier aussi pour du matos Ubquity: https://vblog.io/ubiquiti-networks-le-reve-pour-un-prosumer/

 

Mon nas s'est décider à me demander beaucoup d'attention ce week-end... il est devenu instable avec des input/output error très chelou sur le disque système... pourtant le raid est clean ( "sudo mdadm -D /dev/md0" ) ... bref, une commande fort utile si vous utilisez mdadm:

"sudo mdadm --assemble --scan ; # installation? sudo apt-get install mdadm ; il ne veux toujours pas le détecter? en mode manuel: sudo mdadm --assemble /dev/md0 /dev/sda1 /dev/sda2 ... ".

Cela permet de détecter automatiquement tout vos disques et de monter ainsi votre raid facilement, pratique depuis un live cd par exemple, afin de pouvoir faire backup ou autre.

 

à tester pour des script test inbrowser: https://playwright.dev/docs/intro

 

Je suis très bash dernièrement, du coup petite commande pratique pour trier avec 'ls' les derniers modifiés/ajoutés d'un dossier: 'ls -alt *.py | head' pour afficher les 10 premiers fichier python ou bien on peut aussi utiliser le reverse: 'ls -altr *.py'

 

Sans surprise, encore un gadget qui terni l'image du quantique... hallucinant le prix en fin de vidéo ( 500 à 5000€ pour un basique signal carré : honteux ! ... en même temps, facile, vu la taille de l'appareil il fallait pas s'étonner non plus... ) : https://www.youtube.com/watch?v=UrDfPGSWxas

 

Pour les petites retouches sans sortir Photoshop : https://cleanup.pictures/

 

Dans les trucs assez cool de vim que j'apprécie, c'est de pouvoir executer des commandes on the fly.

Imaginons que l'on souhaite insérer à la ligne 1 la date, il suffit de taper ":0read !date". Note: Pour formater une date en plus, il faut rajouter "+\%Y-\%m-\%d", notez bien l'escape du caractère "%" qui est nécessaire.

Bon saisir des lignes c'est pas super pratique autant sélectionner la ligne actuel, pour cela il faut taper "V".
Puis on peut saisir notre commande par exemple ":read !curl --silent ifconfig.me" pour remplir avec notre IP public. Ce n'est pas cool ça?

On peut imaginer executer aussi un code python :read !python -c 'print("Hello World!")' qui va nous écrire dans notre fichier "Hello World" depuis Python.

Inversement, on peut aussi executer du code python depuis du texte, imaginons qu'on se place sur une ligne qui contient print("ABC"), on fait "V" pour la sélectionner puis ":write !python".

Voilà un petit memento sans prétention pour présenter ces petites fonctionnalités plutôt puissante.

 

Petite astuce vim pour visualiser les lignes d'un bash qui ne sont pas commenté: ":v/^\(\(#.*\)\@!.\)*$/d"
Edit: En fait, ça supprime les lignes (/d)...

Si l'on souhaite filtrer sous vim on peut soit masquer le contenu des lignes: ":syn match Ignore /#.*/ containedin=ALL set conceallevel=2". Ca fait beaucoup de vide mais ça passe.

Soit mettre le code dans un panel quickfix ( que je trouve pas pratique): ":vimgrep /#.*/ %" . Mais là il faut jongler comme pas possible dans les raccourcis claviers.

Ou bien utiliser le folding, c'est cette méthode que je trouve la plus élégante, même si ligne devient longue, pour cela on peut faire une fonction par exemple:
'''
# dans son bashrc (j'ai chain le pattern "#" et "//")
function vif() { vim -c ":set fde=getline(v:lnum)=~'^\\s#'?1:getline(prevnonblank(v:lnum))=~'^\\s#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:getline(v:lnum)=~'^\\s//'?1:getline(prevnonblank(v:lnum))=~'^\\s//'?1:getline(nextnonblank(v:lnum))=~'^\\s*//'?1:0 fdm=expr" $@; };
# pour utiliser:
vif ansible.cfg # si besoin de fold/unfold sur le curseur: "zo" ou bien "zc"
'''

Je suis un peu surpris que ça n'existe pas nativement dans un éditeur de texte terminal comme dans vim ou même dans "neovim" (le fork amélioré)...

 

Petit memento pour enregistrer le bash history d'un screen non persistant :
'''
screen -r screename
history -w ~/history_myscreen.txt
'''

 

Petit memento d'un scrip en bash (attention, non testé) pour découper un tgz :
'''
# Split TGZ
splitsize="10G"; fn="home.tar.gz"; pathtocompress="/home" # edit here
split -b ${splitsize} ${fn} "${fn}.part" # split an existing tgz file
tar -cvzf - ${pathtocompress} | split -b ${splitsize} - "${fn}.part" # or split while making tgz file..
cat "${fn}.part*" > "joined.${fn}" # join back the file
tar -xvzf "joined.${fn}" # decompress the file
'''

 

Petit bench sur le respect de la vie privé de votre navigateur : https://privacytests.org/

Mais où est Vivaldi ? 😁

 
 

Speedtest? Pensez à essayer librespeed : https://librespeed.org/

 

Incroyable cette faille 0 day pour Mac quand même... en espérant un fixe rapide : https://www.01net.com/actualites/une-faille-zero-day-permet-de-pirater-des-mac-a-distance-2048658.ht...

 

Source pour migrer gogs vers gitea: https://docs.gitea.io/en-us/upgrade-from-gogs/ puis https://awk.space/blog/gogs-to-gitea/
Conclusion rapide: c'est fastidieux mais c'est faisable! :) Il faut vraiment commencer à partir de 1.1.4... puis 1 un par 1...
Si j'ai un peu de temps, je ferais une image automatisant le process.

 

Petite découverte du jour: https://lottiefiles.com/

 

Une altenative à uptime robot en self hosted? Uptime Kuma: https://github.com/louislam/uptime-kuma (pour les notif?: https://gotify.net/ )

 

Je viens de voir passer une notification pour la sortie de Parallels Desktop 17... je me suis demandé si enfin le support x86 était de la partie.. et en fait... eh bien non... il s'agit vraiment d'une virtualisation simple, pas d'émulation x86 pour booter ses anciennes vm.. ouch.

D'ailleurs je n'ai même pas trouver l'info sur leurs site de façon clair?!... Bref je confirme que cela nécessite donc bien une version Windows 10 ARM64 (note: qui est une version développeur) et non pas la classique !

Bon chose à savoir, Microsoft à mis en place dans Windows 10 ARM, un émulateur x32 et x86 mais ça reste de l'expérimental... aucune idée si ça marche bien... et ce n'est donc que pour Windows, exit les OS x86 Linux ou autre un peu spécial..

Du coup, en cherchant un peu mieux, il n'y a pour l'instant que le projet UTM qui permet une émulation x86 sur Apple Silicon. Je vous recommande ce super article en anglais qui résume bien les outils pour l'instant dispo: https://nomadic-dmitry.medium.com/apple-silicon-m1-how-to-run-x86-and-arm-virtual-machines-on-it-cdd...

Note:
- VirtualBox n'émule pas de CPU mais que les périphériques, donc out à jamais pour VirtualBox.
- VMWare est en train d'étudier comme Parallels une version ARM, cela doit être la même chose que Parallels... à voir.
- Il ne reste plus donc plus que la solution open-source incontournable: QEMU (d'ailleurs UTM est un wrapper de ce dernier ) qui permet d'émuler de nombreux type de processeur mais bon les performances ne doivent pas être terrible et out l'accélération graphique, à review.

Quelques pistes:

-> Exactement ça ! Windows 10 x86... bon mais en gros c'est trop lent... donc l'émulation serait contre productive :
https://www.sevarg.net/2021/01/09/arm-mac-mini-and-boinc/ ;
-> Windows Xp via QEMU ARM:
https://tinyapps.org/blog/202105220715_m1_mac_emulate_x86.html ;
-> Mac x86 via QEMU:
https://khronokernel.github.io/apple/silicon/2021/01/17/QEMU-AS.html ;
-> UTM bien dispo sur M1 et pas que iOS ( via le repo github):
https://www.macg.co/logiciels/2021/02/virtualisation-utm-est-aussi-disponible-sur-macos-y-compris-po... ;

 

Une IA pour vais aider avec vos cover de réseaux sociaux ? : https://pixelhunter.io/

 

Grafikart test Github CoPilot, la révolution est en marche !
L'IA décide déjà à notre place du choix techno 😱😂 :
https://twitter.com/grafikart_fr/status/1415668381907259393?s=19

 

J'adore coder en python mais le bash c'est très bien aussi ( sans dépendance ), autant alors le faire bien avec ma petite recommandation en français:
- Pro Tips de Wescale: https://blog.wescale.fr/2016/04/07/bash-pro-tips/ ;
- Best Practice Bash rapide : https://blog.desdelinux.net/fr/mejores-practicas-para-crear-un-script-de-shell-en-gnulinux-parte-2/ ;
- Best Pratice global : https://blog.seboss666.info/2020/04/programmation-defensive-en-bash/
- Best Practice plus complet: https://ineumann.developpez.com/tutoriels/linux/bash-bonnes-pratiques/
- Bonus: Une cheatsheet pour réviser vos bases: https://devhints.io/bash

 

Je suis passé entre autre de memcached à redis ( Pourquoi? multithread maintenant supporté et surtout plus de possibilité ) et franchement c'est vraiment top ! Mais comment monitoré "rapidement" Redis? : A cela vous pouvez utiliser le basique et gourmand "redis-client monitor" ou bien utiliser: "Redistop" ( pas un "Stop" Redis... mais à comprendre plutôt Redis + Top et là c'est bien plus classe !! ) : https://bearstech.com/societe/blog/redistop/

( ... et grafana? grafana!... chuuuutttt...! j'ai bien précisé "rapidement" :D )

 

Mémento regex hyper sympa ( Pourquoi? il y a toute les syntaxes de compatibilités ! PCRE, BRE, ... ) : https://remram44.github.io/regex-cheatsheet/regex.html

 

Un résumé de plusieurs infographies plutôt sympa sur le monde du dev: https://www.hongkiat.com/blog/cheatsheet-infographic-software-developers/

 

Pour les PC, pensez a refresh Windows Update : la mise à jour KB5004945 est enfin disponible afin de fix la faille Zeroday PrintNightmare.

 

C'est con, mais si vous n'arrivez toujours pas à vous connecter avec votre pubkey en tant que simple utilisateur, ssh est hyper sensible à ses permissions, voici une proposition de code à appliquer sur le distant :
'
sshp=/home/USER_HERE/.ssh ; sshauthfile=authorized_keys;
chmod 700 $sshp; chmod 644 $sshp/$sshauthfile; # chmod 400 $sshp/id_rsa;
# bonus pour selinux: restorecon -R -v $sshp
# vous pouvez aussi mettre un chmod 600 ou 400 sur la clée privée si vous en avez une dans votre dossier.
'

Rappel de la commande pour se connecter par clé:
'ssh-copy-id -i ~/.ssh/id_rsa user@host'

 

Découverte du projet Mackup, permettant de synchroniser osx ses paramètres sur le cloud : https://github.com/lra/mackup

 

VSCodium c'est sympa pour les puristes du libre avec une version vraiment de base. Mais il ya quand même des extensions sympa exclusives sur VS Code Classique en code non libre. Du coup, c'est pas compliqué, il suffit juste de le désactiver et c'est tout: https://code.visualstudio.com/docs/getstarted/telemetry . Ca stocke dans votre settings.json: "telemetry.enableTelemetry": false et donc ça reste persistant en plus pour les upgrades ;)

 

Il y a des cas particuliers où sshpass est fort utile (si si ça existe mais c'est rare oui :D ), pour installer la dernière version d'Avril 2021 (1.09), j'ai trouvé un gist à jour pour l'installer manuellement avec brew, voici le code: 'dlfile=https://gist.githubusercontent.com/ethan-k/e9d7ca8f34e981407fa512c1e69db3a0/raw/524ce55b0b1b3bbdda5a2d83bc77fcee86fa0812/sshpass.rb ; wget $dlfile ; brew install sshpass.rb ; rm sshpass.rb '

 

Intéréssant cette technique nginx pour utiliser du webp à 100% sur son site : https://www.geeek.org/webp-nginx/ ; Idem pour activer la compression brotli: https://www.geeek.org/installer-brotli-nginx-ubuntu/

 

Intéréssante étude pour comparer les performances entre différents reverse proxy: https://github.com/NickMRamirez/Proxy-Benchmarks

 

Découverte du projet code server, qui permet d'utiliser vscode depuis un navigateur ! : https://github.com/cdr/code-server#quick-install

 

Un gros Wow pour cet article de François Goffinet ! Aussi complet voir même un peu plus sur certains sujet que ma doc en interne, C'est rare, une telle qualitée ! Bravo à l'auteur ! Je partage, si vous voulez vous mettre à KVM: https://linux.goffinet.org/administration/virtualisation-linux/virtualisation-kvm/ ; Note: Il y a pleins d'autres sujet même du Openstack ! Un site à bookmarker direct.

 

Résumé de la journée des choses à ne pas faire :
0- Ne pas PRUNE votre docker sans sauvegarde au préalable à MINIMA. Sinon bonjour la BACKUP à récupérer.
1- Ne pas essayer de booter directement un OS sous QCOW2 sans minimum un SSD natif.
2- Ne pas essayer non plus de le mettre en disque dur secondaire pour accéder aux données, cela va planter votre VM et les latences sont à se trucider.
3 - Ne pas s'embêter à faire de la place pour faire le 1/ ou le 2/ même sur un SSD/NVME en externe via USB3. Paradoxe des paradoxes, les latences sont encore pire qu'un HDD en SATA interne classique.
4- Ne pas essayer de convertir votre image QCOW2 en RAW, ça prend 20 plombes et en plus à terme ça fait planter votre host sur un HDD classique.
5- Ne pas essayer de copier les données avec un GUI comme Nautilus, toujours utiliser la ligne de commande afin de diagnostiquer d'éventuel bug dans la copie.

Les choses à faires:
0- Avoir assez de place sur un autre SSD/NVME natif pour accueillir le fichier. Sinon...
1- Monter votre QCOW2 via NBD et monter le. POINT FINAL.

Qui dans mon cas bien super simple était de monter un QCOW2 de sauvegarde bien volumineux qui est stocké sur HDD classique (tu les sent les 100mb/sec...) et dont la partition est bien évidemment dans le format spécial APFS... afin de récupérer des fichiers effacés. Voici le code:
'''
# Install APFS Fuse via Yay - Arch
yay install apfs-fuse-git # ou linux-apfs-dkms-git plus à jour mais plus compliqué car besoin du DKMS kernel
# Mount
qcowfpath='/path/file.qcow2' ; sudo modprobe nbd max_part=8 ; sudo qemu-nbd --connect=/dev/nbd0 $qcowfpath ;
# Check partition
sudo fdisk /dev/nbd0 -l ;
# Mount partition 2 in my case
sudo apfs-fuse /dev/nbd0p2 /mnt
cd /mnt/root/ ; ls
sudo rsync -auv --partial --sparse --ignore-errors --progress "somestuffpath" "toherepath"
# Umount
sudo umount /mnt
'''

 

Pour des images gratuites pour votre blog: https://www.piqsels.com/

 

Je crois que j'ai trouvé mon prochain projet DIY 😎 : https://trustmyscience.com/neuralpi-ia-emule-toutes-pedales-guitare/

 

Un top sympa de korben pour avoir une vision d'ensemble de quelques distributions Linux a découvrir en tant que néophyte : https://korben.info/top-distributions-linux.html

 

J'ai été confronté à un cas un peu particulier, pour setup un proxy dans Docker sous Debian 10, il faut recourir à un override Systemd, voici le code:
```
mkdir -p /etc/systemd/system/docker.service.d
printf '[Service]\nEnvironment="HTTP_PROXY=http://HOST_HERE:PORT_HERE"' > /etc/systemd/system/docker.service.d/http-proxy.conf
systemctl daemon-reload ; systemctl restart docker ; systemctl status docker
docker run hello-world
```

 

Article super intéréssant afin de sécuriser un peu plus vos conteneur docker: https://www.objectif-libre.com/fr/blog/2020/06/30/securiser-docker-au-travers-de-la-fonctionnalite-u...

 

Je vois qu'il est obligatoire maintenant dans le dernier ISO pour installer Windows 10 d'utiliser une adresse email.
Petite astuce, pour créer un compte local classique, il suffit de débrancher le réseau pour retourner à l'installation classique avec un simple mot de passe.

 

Petite commande pratique sous Mac pour convertir un fichier .IMG en .ISO: hdiutil convert File.img -format UDTO -o File.iso

 

Utilisateur de Visual Studio Code? Envie d'une version 100% open? Il existe une version alternative sans la télémétrie de Microsoft, cela s'appelle VSCodium : https://vscodium.com/

 

Besoin d'un clone de Photoshop pratiquement gratuit directement dans votre navigateur?: https://www.photopea.com/ ( il gère même les fichiers sketch et bien d'autres )

 

Intel bosse sur un filtre photoréaliste par IA, futur des textures de jeu ? : https://intel-isl.github.io/PhotorealismEnhancement/

 

Parallels est enfin natif sur les puces M1 ( depuis Mi Avril 2021 ) - 30% de perf en plus. Par contre, déception ce n'est que pour virtualiser du ARM donc pas de x86 x64 :( ... Allez parallels ! J'attend ça avec un impatience. https://www.macg.co/logiciels/2021/04/parallels-dekstop-165-virtualise-windows-10-sur-les-machines-a...

 

Bon à savoir, il existe un windows defender portable (pour scanner rapidement) : https://docs.microsoft.com/fr-fr/windows/security/threat-protection/intelligence/safety-scanner-down...

 

Incroyable mais vrai le logiciel open source d'édition audio Audacity vient d'être racheté. Pas de version payante obligatoire normalement mais bon ça sent sinon le fork LibreAudacity pour bientôt 😂 : https://www.minimachines.net/actu/muse-group-rachete-le-logiciel-audacity-99063

 
 

Pour clore et faire suite à mon dernier message sur LiteSpeed, Nginx, ... je vous recommande la lecture de cet article super bien fait pour avoir une vision globale des avantages & inconvénients de chacun: https://geekflare.com/open-source-web-servers/ ;
Il parle d'ailleurs aussi de mon petit chouchou codé en go que je veux bientôt tester: caddy.
Note: L'article n'est pas exhaustif, il manque par exemple h2o: https://github.com/h2o/h2o ou bien les différents serveurs Synchrone WSGI ou Asynchrone ASGI de Node, Python , ... ( voir cet article aussi à ce sujet: https://moisio.fr/2020/01/27/python-wsgi-ou-asgi/ ou ce non-bench: https://blog.miguelgrinberg.com/post/ignore-all-web-performance-benchmarks-including-this-one )

 

A propos de LiteSpeed, je crois qu'il faut nuancer tout les benchmark sur le net et que c'est surtout un gros coup de com' ! ( puisque tout sont issu de LiteSpeed... sacré arnaque! )
Et que bien sûr Nginx reste le top ! avec son FastCGI natif ... même si il faut savoir comment l'optimiser finement ...
Mais LiteSpeed n'en reste pas moins une solution sympa si votre hébergeur le propose gratuitement. Il faut voir LiteSpeed comme une version améliorée ( event-driven comme Nginx) de Apache ( compatible mod_rewrite ) et spécialisé pour un boost de performance en PHP ( grace au native PHP SAPI ). Petit point en plus le plugin Wordress tout en un ( minification, cdn, image, ... ) est vraiment très facile à utiliser pour n'importe quel utilisateur lambda, d'où son succès croissant.

 

Intéréssant ce benchmark (fiable?), resmush.it, serait vraiment plus performant que tinypng: https://wpcours.com/wp-plugins/5-meilleurs-plugins-de-compression-dimages-pour-wordpress/, à creuser d'avantage, surtout qu'on peut utiliser resmush en cli linux/mac. ;
Edit: Niveau algo, le traitement du PNG est un peu obscur: lossy+lossless et le JPG est lossless, sur un test perso fait sur un PNG avec transparent en ligne de commande, le fichier est un peu plus gros de quelques centaines d'octet, ce qui est très correct !! même si tinypng (avec son smart lossy) à fait à peine un peu mieux. Plus de détail ici: https://resmush.it/features

 

Petite découverte du jour: LiteSpeed Cache : https://wpformation.com/litespeed-cache-plugin-cache-wordpress/ ; Après Apache puis Nginx, un petit tour sur LiteSpeed (dispo chez O2Switch) qui permet des performances plutôt folles surtout pour du PHP. Cet article est super bien fait, je n'aurais pas écris mieux. En précision: Le serveur "Entreprise" sans limite de ram & de site est Payant. Une version open-source un peu moins complète existe aussi: https://openlitespeed.org/.

 

Petite découverte du jour: ReSmush.it : https://resmush.it/ ( et "cocorico" c'est Français! :D ) ; la seul API permettant d'optimiser vos images vraiment gratuitement, existe en plugin souvent gratuit pour par exemple Wordpress, Composer, etc ... ; Sympa pour automatiser à fond !
( Sinon j'aime toujours utilisé en manuel tinypng: https://tinypng.com/ , efficace & gratuit mais jute limité en utilisation/jour )

 

Quand il s'agit de prototyper en vectoriel chacun à ses outils modernes, j'ai abandonné Adobe Illustrator ( trop lourd, hors exception ), je suis plutôt un fidèle de Sketch ( le pionnier avec son UX clean ) : https://www.sketch.com/ ; mais si vous n'êtes pas sur Mac... je recommande alors des outils web comme Figma : https://www.figma.com/ ou bien en projet 100% open-source self-hostable PenPot ( encore en Alpha et très basique mais ça dépanne ) : https://penpot.app/

 

Découverte python du jour FastAPI, le projet est jeune ( 1 an ) mais ça simple envoyer du lourd niveau performance & simplicité : https://github.com/tiangolo/fastapi . Pas de surprise ça se base sur Starlette ( https://www.starlette.io/ ) pour la partie web et sur Pydantic ( https://pydantic-docs.helpmanual.io/ ) pour la partie validation des données.

 

A ben voilà comment ils comptent renflouer les caisses de l'état ( sur le dos du consommateur ) : https://www.phonandroid.com/achats-en-ligne-se-faire-livrer-des-colis-de-letranger-va-couter-beaucou...

 

Bon plan du jour : Besoin d'enlever un fond sur une image pixelisée ?! ... Avant de perdre son temps sur photoshop pour tenter de détourer... essayer en ligne remove.bg : https://www.remove.bg/fr 👍👍
De rien 😉

 

Après l'ouverture progressive au projets open source, le rapprochement vers Linux continue 👍 WSL va disposer bientôt d'un serveur X capable de lancer des applications Linux même graphique ! Hâte de tester ce build : https://www.frandroid.com/marques/microsoft/920625_windows-10-preview-microsoft-linux-gui-interface

 

Petit rappel qu'un gros projet commence toujours par un premier commit: celui de Gitlab en 2011: https://gitlab.com/gitlab-org/gitlab-foss/commit/9ba1224867665844b117fa037e1465bb706b3685

 

Le bon plan du jour: Formation Gitlab gratuite ici : https://www.dealabs.com/bons-plans/certification-gitlab-learn-gratuite-2138418

 

Si vous utiliser beaucoup de carte (Google Map) pour vos projets, je ne peux que recommander Leaflet en alternative : https://leafletjs.com/examples/quick-start/

 
 
 
 
 

Je viens de découvrir une alternative possible pour Audacity : Ocenaudio ( https://www.ocenaudio.com/ )

 
 

https://www.nchsoftware.com/capture/ ; ça semble être comme webcamoid mais en plus complet ( par contre pas opensource ). EDIT: J'ai testé, c'est vraiment spécialisé enregistrement vidéo ( envoi ftp, etc ... ) pas de livrestreaming ni de caméra virtuelle !

 

On parle d'OBS, de webcamoid, même de Splitcam ... c'est bien sympa mais comment faire quand on n'a pas de fond vert ( zoom tu sort... :D ) pour une incrustation? Snapchat? Pas loin pas loin.... Scapcamera de Snapchat, c'est gratuit et ça permet d'utiliser les filtres snapchat "change background" (ou autre) sur PC & Mac ;) : https://snapcamera.snapchat.com/

 

Petit test de Splitcam (gratuit), c'est comme un OBS ( avec gestion des scènes) mais en plus light... excepté qu'il n'est pas Open Source, franchement très sympa: https://splitcam.com/

 

Je parle de camtwist mais l y a aussi le logiciel webcamoid qui est crossplatform & open-source : https://webcamoid.github.io/ ; il fait aussi "caméra virtuelle" mais pas detecté sur mon mac... ; de plus il reste plutôt simple comparé à tout les effets de scènes et les optimisations cpu/gpu d'OBS. En tout le cas le projet est sympa à tester et toujours mis à jour.

 

Bon à savoir ! Depuis Janvier 2021, la version 26.1 sur Mac intègre nativement VirtualCam ! ( oui parce que l'antique camtwist ... ) Youhou ! Plus de raison de ne plus utiliser son fond vert et OBS ! :) Pour l'activer, il suffit de cliquer "Démarrer le caméra virtuelle" dans OBS ( à côté des boutons pour enregistrer / commencer le stream ) et choisir le périphérique "OBS Virtual Camera" dans votre logiciel favori. ( Ne pas oublier de restart vos logiciels après l'activation )

 

Quand les créa de chez Amazon ont oublié un petit détail 😂 : https://creapills.com/amazon-logo-moustache-hitler-20210311

 

Décidément OVH.. incendie sur le cluster de Strasbourg à 0h47,maitrisé à 6h45:
- SBG2 est complètement détruit
- SBG1 partiellement
- SBG3/4/5/6 normalement ok ( même si toute l'électricité & les communications ont étés coupés par le plan d'urgence )
---
https://www.dna.fr/faits-divers-justice/2021/03/10/strasbourg-important-incendie-dans-une-entreprise...
Pour se tenir au courant de la situation:
https://twitter.com/olesovhcom/status/1369504527544705025