docker / alpine / mariadb : ce que j'en pense....

2020-12-02 | #alpine #docker #mariadb

J’ai voulu passer à alpine à cause de la taille de l’image produite et parce qu’elle boote vite. Je voulais améliorer les performances du pipeline de mon projet. J’ai eu beaucoup de déboires pour : comprendre et réussir à faire tourner le service MariaDB dans docker (je voulais une image généraliste qui ne fasse pas que MariaDB mais aussi du java/maven & du python2.7) contourner des problèmes pour réussir à configurer mariadb convenablement (actuellement les postes de dévs et le gitlab sont en mysql alors que nos serveurs d’intégration/préproduction/production sont passés en MariaDB).

Continuer la lecture 


docker, alpine, mariadb: ce qui m'a été nécessaire...

2020-12-02 | #alpine #docker #mariadb

Voici ce qui m’a été nécessaire : #!/bin/bash apk add openrc # Avoid Service `hwdrivers' needs non existent service `dev' #/ # rc-status # * Caching service dependencies ... #Service `hwdrivers' needs non existent service `dev' [ ok ] #Runlevel: sysinit apk add udev-init-scripts-openrc apk add mariadb mariadb-client mariadb-server-utils pwgen mysql_install_db --user=mysql --ldata=/var/lib/mysql # com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure # due to : skip-networking # https://stackoverflow.com/a/2985169/3550759 # # Specified key was too long; max key length is 767 bytes # due to : innodb-default-row-format && (maybe) innodb_strict_mode sed -e '/^\\[mysqld\\]/a innodb_strict_mode=0' \\ -e '/^\\[mysqld\\]/a innodb-default-row-format=dynamic' \\ -e '/^\\[mysqld\\]/a sql-mode="ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"' \\ -e '/^skip-networking/c #skip-networking' \\ -i /etc/my.

Continuer la lecture 


sed, insérer avant ou après matchage de ligne

2020-12-01 | #sed

Peut-être pratique pour modifier un fichier de configuration par exemple $ printf "[section1]\\n\\n[section2]\\ncle1=valeur1\\n" | sed '/^\\[section2\\]/i cle2=valeur2' [section1] cle2=valeur2 [section2] cle1=valeur1 $ printf "[section1]\\n\\n[section2]\\ncle1=valeur1\\n" | sed '/^\\[section2\\]/a cle2=valeur2' [section1] [section2] cle2=valeur2 cle1=valeur1

Continuer la lecture 


bash, appel callback à la sortie...

2020-11-20 | #bash #commande #trap

Il est possible en bash d’appeler des méthodes lorsque de la fin du script est atteinte et ce même s’il y a une erreur. Ci-dessous, le script appellera cleanup_err puis cleanup_ok lorsque false sera atteint. #!/bin/bash function cleanup_err { echo cleanup_err } function cleanup_ok { echo cleanup_ok } trap cleanup_ok EXIT trap cleanup_err ERR C’est bien pratique pour nettoyer les fichiers et répertoires temporaires :)

Continuer la lecture 


tmux, copier/coller à la vi + dans le presse-papier

2020-11-18 | #bash #commande #presse-papier #tmux #xclip

Commandes à ajouter au ~/.tmux.conf Dans mon cas, il s’agit d’un tmux 1.8 : bind-key P run-shell "xclip -o | tmux load-buffer - ; tmux paste-buffer" bind-key -t vi-copy 'v' begin-selection bind-key -t vi-copy 'y' copy-pipe "tmux save-buffer - | xclip -sel clip -i" bind-key -t vi-copy 'r' rectangle-toggle Cela nécessite d’ajouter la commande xclip Attention, l’exécution est très très lente…

Continuer la lecture 


python, distance de levenshtein

2020-11-13 | #distance #levenshtein

La distance de Levenshtein est une distance, au sens mathématique du terme, donnant une mesure de la différence entre deux chaînes de caractères. Elle est égale au nombre minimal de caractères qu’il faut supprimer, insérer ou remplacer pour passer d’une chaîne à l’autre. def levenshtein(a,b): "Calculates the Levenshtein distance between a and b." n, m = len(a), len(b) if n > m: # Make sure n <= m, to use O(min(n,m)) space a,b = b,a n,m = m,n current = range(n+1) for i in range(1,m+1): previous, current = current, [i]+[0]*n for j in range(1,n+1): add, delete = previous[j]+1, current[j-1]+1 change = previous[j-1] if a[j-1] !

Continuer la lecture 