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 !
Petit test de Swirl-AI (https://
Sa mise en place n'est pas aussi "simple" que fait paraitre la doc ( page utile: https://
Du coup petit memento, tout d'abord l'installation :
```
# Setup
mkdir -p swirlai && cd swirlai && \
curl https://
# 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://
# 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://
Puis rien d'autre que ça?
En fait, il suffit de voir dans le dossier https://
```
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://
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
```
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.
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://
> Repo de qrscan: https://
Petit memento qu'il est possible d'automatiser et d'utiliser Gitlab en mode CLI : https://
> Pour la petite histoire, il s'agit du projet glab (https://
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://
Install docker one-line: `apt-get install apt-transport-https ca-certificates curl screen ncdu gnupg lsb-release; curl -fsSL https://
Install docker-compose v2 (v2.23.1 dans cet exemple) one-liner: `mkdir -p ~/.docker/cli-plugins; curl -sSL https://
> 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`
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://
- Mountain Duck, le projet axé "mount" de Cyberduck: https://
- CloudMounter qui gère pas mal de protocole: https://
- StrongSync le projet axé mount spéciale Mac APFS, https://
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://
Edit2: Pour forklift, il suffisait de réinstaller fuse for mac: https://
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.
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
'''
Mémento regex hyper sympa ( Pourquoi? il y a toute les syntaxes de compatibilités ! PCRE, BRE, ... ) : https://
Mon petit #memento rapide pour VisiData :
"q" pour revenir en arrière/quitter ;
"e" pour éditer une cellule
"s" (select) + "gzY" + ↑ + "t" (deselect) pour copier la cellule ("z")
"]" / "[" pour filtrer la colonne ;
"_" / "v" pour expand une colonne trop grande ;
"shift+f" pour mesurer la fréquence (répétitions/doublons) ;
"-" du 6 pour masquer une colonne.
Spécial:
- Effet global: "g"+"command" ( exemple: "g_", va expand toutes les colonnes d'un coup.
- Forcer le typage: "#" = number ; "%" = float ; "$" = currency ; "@" = date ; "~" = default / all.
Edit: J'ai trouvé une cheatsheet sympa aussi pour approfondir: https://