Techno-magis

Linux

Renommer en masse par ordre alphabétique

Sunday 28th July 2019

Pendant mes vacances, j'avais besoin de renommer mes photos par lot et en prenant bien soin de respecter l'ordre alphabétique des noms de fichier de base. Je n'ai pas trouvé de solution simple. En grattant un peu sur la toile et en combinant plusieurs trucs, je suis arrivé à ça :

CODE:

ls -1 *.jpg | awk -F_ '{print $(NF-1) " " $0}' | sort | cut -d' ' -f2- | rename -v 's/.*/our $i;if(!$i){$i=1;} sprintf("xxxxxx_%02d.jpg", $i++)/e'

  • *.jpg : le filtre de recherche (à changer si ce n'est pas des images).
  • xxxxxx_%02d.jpg : le nom final des fichiers, avec "%02d" pour le nombre de chiffre pour le compteur. Ici ça sera xxxxxx_01.jpg,xxxxxx_02.jpg, etc.
Comment this entry...
Categories:
By Zéfling, the 28/07/2019 at 11:20:32
The ticket was read 6 times, with 0 comment posted.

Sauvegarde de Gitlab

Sunday 3rd February 2019

J'en avais un peu marre d'aller chercher le backup à chaque fois pour le mettre dans un dossier de sauvegarde. Alors, j'ai fais un tout petit script pour faire le backup et aller le récupérer pour le copier là où je veux.

J'ai écrit ce petit script :

CODE:

#!/bin/bash
 
echo ">backup : gitlab"
gitlab-rake gitlab:backup:create
gitlab_folder='/var/opt/gitlab/backups/'
backup_folder='/my/backup/folder/'
gitlab_file=`ls -got ${gitlab_folder} | grep \.tar$ | head -1 | awk '{print $7}'`
echo ">copie : ${gitlab_folder}${gitlab_file}"
cp "${gitlab_folder}${gitlab_file}" $backup_folder
chown user:user "${backup_folder}${gitlab_file}"

Remplacez '/my/backup/folder/' par votre dossier de sauvegarde et user:user par vos droits.

Maintenant je n'ai plus qu'à faire :

CODE:

sudo ./monscript.sh
Comment this entry...
Categories:
By Zéfling, the 03/02/2019 at 20:35:12
The ticket was read 53 times, with 0 comment posted.

Installation de Gitlab avec Ubuntu Server/Apache 2

Friday 15th July 2016

Je ne prétends pas que ça soit l'installation parfaite, mais ayant un peu galéré à faire marcher le tout, ça me sert surtout de mémo. Si vous avez mieux à proposer, un commentaire sera le bienvenu.

Read the complete entry...
Categories:
By Zéfling, the 15/07/2016 at 00:36:44
The ticket was read 309 times, with 0 comment posted.

Décompression ZIP et l'encode des noms de fichiers

Monday 21th December 2015

Le format ZIP est un format très rependu. Malheureusement, le nom des fichiers est encodé suivant l'encodage du système1, ce qui fait qu'une fois décompressé, on peut se retrouve avec un nom de fichier nommé de la sorte « �s����Ȑ_�l.ext », ce qui a beaucoup de chance de le rendre fichier illisible l'état par d'autres programmes, mais aussi vous-même. Il faut donc le renommer et c'est là que ça se complique vu que l'on ne connaît pas forcément le nom d'origine.

Heureusement, sous Linux, il existe convmv qui permet de déplacer en masse des fichiers en réencodant leur nom, un mélange de « mv + conversion ».

Pour tester une conversion ici du SHIFT_JIS vers l'UTF8 :

CODE:

convmv -f SHIFT_JIS -t UTF8 *

Et pour réaliser la conversion :

CODE:

convmv -f SHIFT_JIS -t UTF8 --notest *

Parfois des petites choses nous rendent la vie impossible, et d'autres nous en sauvent. 😊

  • 1:

    ZIP ne semble pas conserver l'encodage des fichiers contrairement d'autres formats comme RAR ou TAR.GZ. En tout cas, je ne remercie pas Windows qui n'est pas fichu d'avoir le même encodage suivant la langue du système, ce qui peut rendre une installation impossible pour un logiciel chinois ou japonais sur un poste en français.


Comment this entry...
Categories:
By Zéfling, the 21/12/2015 at 21:23:58
The ticket was read 99 times, with 0 comment posted.

2 ans sous Linux (sans Windows)

Saturday 19th September 2015

Depuis le 19 septembre 2013, chez moi je n'ai vu Windows qu'au travers d'une machine virtuelle (et encore, j'ai crashé celle que j'avais et je ne l'ai pas réinstallé) ou Wine (mais ce n'est pas vraiment Windows). Ça ne s'est pas fait en partie pour pouvoir garder le contrôle de ma machine et aussi parce que j'avais déjà l'idée d'y passer. Donc je ne peux pas dire que ma démarche s'est totalement faite au hasard, même si certaines choses l'ont précipité. Je vais donc vous raconter quelle a été mon expérience durant ses deux années. Attention, je ne suis pas là pour dire que Linux est mieux, je dirais qu'il correspond mieux à ce que j'attends d'un système d'exploitation, malgré quelques galères.

Read the complete entry...
Categories:
By Zéfling, the 19/09/2015 at 00:00:35
The ticket was read 340 times, with 2 comments posted.

Passage de Kubuntu 15.10 à Debian 8 KDE

Sunday 10th May 2015

Après mes déboires d'une mise à jour complètement foireuse vers Plasma 5.2 avec Kubuntu 15.10, je n’avais pas envie de passer mes journées à essayer de réparer de choses complètement pétées... Puis, je me suis dit, si je veux quelque chose de plus stable d'Ubuntu, il serait temps d'essayer autre chose. Debian étant la base d'Ubuntu, c'était un peu un choix de facilité... du moins en apparence.

La facilité est donc assez relative, car je ne peux pas nier qu'Ubuntu assiste sur pas mal de choses et on est assez loin de cela sous Debian où il ne faut pas avoir peur de mettre les mains dans les lignes de code pour faire des installations.

Voilà un résumé des problèmes de mon week-end.

Read the complete entry...
Categories:
By Zéfling, the 10/05/2015 at 19:26:59
The ticket was read 504 times, with 0 comment posted.

Mes logiciels sous Linux

Friday 8th May 2015

Certains donnent l'impression que l'on ne peut pas bosser sous Linux, mais c'est totalement faux. D'ailleurs je n'ai pas grand-chose qui me manque, mais l'inverse serait aujourd'hui vrai, j'aurais du mal à quitter Linux pour Windows car il y a certains outils que je n'y retrouverais pas. Bon, je ne ferais pas de présentation de truc que je trouve trop connu comme Libre Office, Firefox, Gimp, Inkscape, Filezilla ou encore VLC.

Il est à noter que certains environnements proposent de base nombre de programmes par défaut : gestion de photos, lecteur de musiques, gestionnaires de mots de passe, client pour les torrents, navigateur web, gravure de CD, gestionnaire de sauvegarde, etc. En fait, je me rends compte que j'ai installé assez peu de choses en plus hors serveur de dév.

Read the complete entry...
Categories:
By Zéfling, the 08/05/2015 at 23:22:45
The ticket was read 157 times, with 0 comment posted.

Hé! Ça ressemble presque à un jeu. 😜

Wednesday 4th March 2015

Je me rends compte que les mécaniques d'un jeu sont assez simples à mettre en œuvre (pour un shooter en 2D). Maintenant ce qui va être compliqué c'est de mettre ça dans un cadre intéressant et que ça soit assez sympa... ce qui ne sera pas de la tarte.

Je publie une nouvelle version. J'ai compris comment faire des animations avec des sprites et comment jouer avec. J'ai aussi un peu mieux compris le système d'aire. Je pense que ma prochaine étape sera de comprendre comment mettre des déclencheurs (triggers). Tout ce qui est graphique, j'y penserais plus tard.

Télécharger “Test 3” :

  • Linux (5,8 Mio - Binaire),
  • Mac (6,4 Mio - Binaire).

La grosse nouveauté se présente assez simplement des points de vies que l'on perd en touchant un ennemi (les ronds rouges).

Désolé pour les non Linuxiens, je n’ai toujours pas compris comment compiler pour Windows ou Mac sous Linux.

Comment this entry...
Categories:
By Zéfling, the 04/03/2015 at 21:35:12
The ticket was read 78 times, with 0 comment posted.

Godot : tuons des « monstres » !!

Sunday 1st March 2015

J’ai un peu avancé. La doc est vraiment infecte, j’ai compris certaines choses en regardant certains exemples et quelques bugs.

Ce qu’il y a de plus :

  • Ajout de « monstres » (c’est juste pour tester)
  • Test de collision (pour détecter si une flamme touche/traverse un ennemi)

Pour les touches, ça reste pareil (j'ai oublié de les préciser dans mon article précédent) :

  • Flèches : se diriger
  • [Shift] : courir
  • [<] : tirer (j’ai un problème avec espace et les diagonales)

Ce qui m’a posé problème, c’est comprendre la détection d’entrée dans une zone, mais surtout en sorte de savoir ce que c’est. Je n’ai pas trop l’habitude de ce genre de syntaxe :

CODE:

extends Area2D
 
func _on_Pickup_body_enter( body ):
	# si c'est un monstre
	if (body extends preload("Monstre.gd")):
		body.toucher()
 
func _ready():
	# test si le tir touche quelque chose
	connect("body_enter", self, "_on_Pickup_body_enter") 
	set_process(true)
	pass
Comment this entry...
Categories:
By Zéfling, the 01/03/2015 at 18:22:45
The ticket was read 94 times, with 0 comment posted.

Godot, 10 jours après

Sunday 22th February 2015

Enfin, 10 jours, de mon temps libre. Le premier exemple que j'avais donné la dernière fois était après avoir touché au premier tuto pour faire un Pong. J'avais eu un peu de mal avec le langage de scripts, trop habitué aux dérivés du C. J'ai presque fini par m'y faire, même si je trouve que ça manque un peu de lisibilité et que j'ai parfois du mal avec les erreurs pas forcément claires. Mais, je pense que c'est surtout l'IDE qui est assez affreux. Les copier-coller sont infernaux, la suppression est parfois bizarre, les ctrl+Z (annuler) donnent des étapes qu'on n’attend pas. Bref, j'utilise Kate pour modifier mes scripts, ça me fait perdre l'autocomplétion, mais au moins ça ne fait pas de choses bizarres. Je n'ai pas trop regardé du côté des bugs de l'IDE, mais ça serait bien qu'ils l'améliorent sur ces points.

Read the complete entry...
Categories:
By Zéfling, the 22/02/2015 at 02:54:48
The ticket was read 226 times, with 0 comment posted.

Première approche avec Godot

Thursday 12th February 2015

Cela faisait déjà quelque temps que j'avais envie de me lancer dans la réalisation d'un petit jeu. Mon gros problème reste tout ce qui est graphisme, sans moteur de rendu, je ne suis pas fichu de faire mieux que des graphiques en 2D. Ça finit par devenir trop matheux pour moi. Ma dernière expérience dans la réalisation de jeu a été avec Haxe, il a maintenant quelque année pour faire un petit jeu de rapidité/réflexion en 1 mois. J'étais sans emplois et c'était dans l'optique de bosser dans une boîte. Le jeu est toujours en ligne même s'il n'en plus mise à jour depuis bien longtemps.

Read the complete entry...
Categories:
By Zéfling, the 12/02/2015 at 22:55:06
The ticket was read 236 times, with 0 comment posted.

PHP & Crontab (Unix world only)

Tuesday 3rd June 2014

À la base, c'était une demande du boulot, sauf qu'une fois que j'avais ce que je voulais pour mon module, il y avait peu d’intérêt d'aller plus loin. Du coup, j'ai repris l'idée chez moi et j'ai essayé d'en faire un outil plus polyvalent qui ne demande même pas de connaître la syntaxe de Crontab. J'ai découpé la chose en deux parties, la gestion des lignes et du fichier d'un côté et de l'autre celui du temps. Le plus long a été de faire tous les contrôles lors du parsing d'un fichier pour s'assurer qu'il n'y a pas d'erreurs.

Read the complete entry...
Categories:
By Zéfling, the 03/06/2014 at 00:37:41
The ticket was read 139 times, with 0 comment posted.

Suppression de l'orientation EXIF d'une liste d'images avec un script

Sunday 23th March 2014

À l'origine, j'avais récupéré une solution pour tourner les images de mon numérique. Tous les logiciels ne supportent pas la rotation EXIF, du coup je préfère dans certains cas tourner l'image et supprimer la rotation EXIF. La solution que j'avais trouvée fonctionnait de façon quelque peu erratique avec des cas où la rotation n'était pas faite pour une raison que je n'ai jamais comprise. J'ai pas mal souffert du script foireux pendant mon voyage au Japon (et j'ai jamais vraiment eu le temps de m'y pencher durant mon expédition).

Après un peu de lecture de doc, de recherches sur internet, j'ai corrigé les problèmes et j'ai au passage fait une présentation un peu plus sympa pour montrer l'avancement de la conversion.

Pour faire simple, le script met les extensions en minuscules, crée un dossier « rotate » et copie les fichiers dedans. Ensuite, il parcourt un par un les fichiers pour effectuer une rotation (si nécessaire).

Read the complete entry...
Categories:
By Zéfling, the 23/03/2014 at 00:45:24
The ticket was read 268 times, with 1 comment posted.

Conversion de vidéos vers WebM en masse

Sunday 16th March 2014

Ayant un peu marre de faire de la conversion vidéo à la main, maintenant que je suis sous Linux, j'ai cherché un moyen de scripter une conversion de vidéos manuellement. J'ai testé un peu avant quelques solutions... mais jamais avec les résultats attendus. Soit la conversion WebM n'est pas possible, soit c'est extrêmement lent (non multi-threadé), soit il faut les faire une par une, soit il ne faut pas de caractères spéciaux. Bref, j'en suis venu à chercher à faire un script qui me sort de ses contraintes... et sur le Net ce n'est pas forcement simple de trouver ce que l'on veut. Beaucoup utilisent encore aujourd'hui « ffmepg » qui est aujourd'hui obsolète pour la conversion vidéo, ou encore la boucle ne fonctionne pas... En mélangeant ici et là quelques scripts Bash, je suis arrivé à faire mon petit fichier :

CODE:

#!/bin/bash
VIDEOS=.
find "$VIDEOS" -name '*.mp4' -exec sh -c 'avconv -i "$0" -threads 4 -b:v 2M  "${0%%.mp4}.webm"' {} \;
exit;

Celui-ci ne fait que de la conversion MP4 vers WebM. Comme j'ai quatre processeurs j'ai mis 4 threads et une compression vidéo à 2 Mb, en dessous je trouve que le rendu assez mauvais et c'est à peu près ce qu'utilise YouTube.

Je pense que je fais peut-être essayer d'appendre un peu plus le Bash pour faire quelque chose d'un peu plus évolué qui ne se limite pas à un format.

Comment this entry...
Categories:
By Zéfling, the 16/03/2014 at 21:48:42
The ticket was read 132 times, with 0 comment posted.

Passage de MySQL à MariaDB... imprévu.

Thursday 6th March 2014

Je n'avais pas prévu de le faire à cause d'une non-compatibilité avec Zabbix lors de mise à jour... Mais il y a des jours où ça ne se passe pas comme prévu. Lors de la mise à jour du serveur toute bête comme j'en fais souvent et sans encombre, cette fois le paquet mysql-server5.5 est impossible à mettre à jour. Il plante avec une erreur « 1 » lors que de la configuration. Je réessaie plein de trucs trouvés çà et là sur le net, à passer mon temps à virer des fichiers de verrouillage, tuer des processus et tenter d'autres façons de l'installer. Au bout de 2 heures, parce que j'en ai franchement ras le cul et que surtout que tous mes sites sont hors service, voyant que ça bloque toujours sur ce « putain » de fichier de configuration, j'ai eu une idée : « MariaDB est normalement compatible avec MySQL, là je n'ai plus rien à perdre à essayer ». Résultat, cette ligne me sauve :

CODE:

sudo aptitude install mariadb-client mariabd-server

Je redonne le même mot de passe root et ça fonctionne à l'identique au bout de quelques secondes. Maria, tu me sauves ma nuit. Merci.


Comment this entry...
Categories:
By Zéfling, the 06/03/2014 at 01:11:09
The ticket was read 777 times, with 2 comments posted.

Connecter sa PSVita sous Linux

Saturday 18th January 2014

Forcement, depuis que je suis sous Ubuntu, je dois chercher un peu plus quand un périphérique ayant une connexion quelque peu exotique. C'est le cas de la PSVita qui n'a aucun support officiel sous Linux. Heureusement, en cherchant un peu je suis tombé sur QCMA qui marche assez bien et en plus est largement plus léger que le connecteur officiel. L'installation est assez simple, sous Ubuntu, il y a juste 2 fichiers .deb à installer : VitaMTP et QCMA (le second semble être l’interface graphique du premier).

Comment this entry...
Categories:
By Zéfling, the 18/01/2014 at 20:52:57
The ticket was read 761 times, with 0 comment posted.