Techno-magis

Sortilège numérique

Je pense mettre ici quelques petits trucs sans prétention que je pense utile que j'aie pu rencontrer à diverses occasions : PHP, Java, JS, HTML, CSS, SQL, Linux, etc. Ça peut être juste une astuce, truc que j'ai trouvé sur le web, un problème que j'ai rencontré ou une connerie que j'ai faite (à prendre dans le sens que l'on veut). Ça sera sans grande prétention, et surtout en fonction des rencontres... Si je ne vois rien d'intéressant, je ne chercherais pas à écrire pour écrire.

By Zéfling, the 23/09/2013 at 20:30:19

The last entries published

Mon passage sous eCharts

Thursday 25th November 2021

Je suis passé récemment sous Apache eCharts, et j’ai eu quelques petits problèmes.

Read the complete entry...
Categories:
By Zéfling, the 25/11/2021 at 14:22:53
The ticket was read 22 times, with 0 comment posted.

Intégration conditionnelle de iFrameResizer

Thursday 25th November 2021

Si vous voulez que votre site soit compatible dans un iframe, mais que ça soit juste si le parent présente la bibliothèque iframe-resizer, il y a une solution assez simple :

En JavaScript vanilla :

CODE:

<script>
window.addEventListener('message', e => {
    if (
        String(e.data).startsWith('[iFrameSizer]') &&
        !document.body.classList.contains('into-container')
    ) {
        var script = document.createElement('script');
        script.src = '**CHEMIN À CHANGER**/iframeResizer.contentWindow.min.js';
        document.head.appendChild(script);
        document.body.classList.add('into-container');
    }
});
</script>

En TypeScript :

CODE:

window.addEventListener('message', (e: MessageEvent) => {
    if (
        String(e.data).startsWith('[iFrameSizer]') &&
        !document.body.classList.contains('into-container')
    ) {
        var script = document.createElement('script');
        script.src = '**CHEMIN À CHANGER**/iframeResizer.contentWindow.min.js';
        document.head.appendChild(script);
        document.body.classList.add('into-container');
    }
});
 

Note la classe “into-container” permet de changer le CSS de la page pour l'adapter au changement de mode.

Comment this entry...

Site LAMP sur une partition

Saturday 6th November 2021

Comme j'ai zéro mémoire, je me fais un petit mémo pour la réinstaller de mon site. Cela inclus la modification du hosts, l'installation de packages, la configuration des virtuals host dans Apache, la correction de problème de droit d'accès, et le problème lié à la mise en place de la base de données.

Read the complete entry...
Categories:
By Zéfling, the 06/11/2021 at 19:05:07
The ticket was read 16 times, with 0 comment posted.

Supprimer les données GPS des photos

Sunday 8th August 2021

Je voulais juste virer les données GPS de certaines photos.

Il faut juste installer :

CODE:

sudo apt-get install libimage-exiftool-perl

Pour voir les données EXIF d'un fichier:

CODE:

exiftool photo.jpg

Supprimer toutes les données GPS :

CODE:

exiftool -gps:all= *.jpg

Les fichiers non modifiés reste présente avec _original à la fin

Pour supprimer toutes les données EXIF c'est tout aussi simple :

CODE:

exiftool -all= *.jpg

Comment this entry...
Categories:
By Zéfling, the 08/08/2021 at 21:18:16
The ticket was read 22 times, with 0 comment posted.

Base 64 sur NativeScript

Tuesday 4th February 2020

Il est possible d'utiliser Base64 avec Nativescript sans passer par un package, en utilisant directement celui du système :

CODE:

    // for Android
 
    base64Encode(string: string): string {
        const text = new java.lang.String(string);
        const data = text.getBytes('UTF-8');
        return String.fromCharCode(...Array.from(android.util.Base64.encode(data, android.util.Base64.DEFAULT));
    }
 
    base64Decode(string: string): string {
        const text = new java.lang.String(string);
        const data = text.getBytes('UTF-8');
        return String.fromCharCode(...Array.from(android.util.Base64.decode(data, android.util.Base64.DEFAULT)));
    }


CODE:

    //iOS
 
    base64Encode(string: string): string {
        const text = NSString.stringWithString(string);
        const data = text.dataUsingEncoding(NSUTF8StringEncoding);
        const base64 = data.base64EncodedStringWithOptions(0);
        return base64;
    }
 
    base64Decode(string: string): string {
        const decodedData = NSData.alloc().initWithBase64EncodedStringOptions(string, 0);
        const decodedString = NSString.alloc().initWithDataEncoding(decodedData, NSUTF8StringEncoding);
        return `${decodedString}`;
    }

Comment this entry...

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 75 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 131 times, with 0 comment posted.

Astuce JavaScript : getter/setter sur un input

Tuesday 17th July 2018

Il est possible de débugger en JS la valeur de tout élément en remplaçant cette valeur par un getter et un setter de la façon suivante :

CODE:

inputElement._value = inputElement.value;
 
Object.defineProperty(inputElement, 'value', {
	get: function () {
		return this._value;
	},
	set: function (p) {
		this._value = p;
	}
});

Comment this entry...
Categories:
By Zéfling, the 17/07/2018 at 14:00:28
The ticket was read 120 times, with 0 comment posted.

Mes contributions avec Angular

Tuesday 10th October 2017

Ça fait un petit moment que je n'ai rien publié ici. Mais ça va peut-être changer. Je travaille depuis quelque temps sur Angular/Material2 en TypeScript, et je pense que je commence à avoir une belle expérience dessus. Tout ce que j'ai fait est pour l'instant dans un cadre privé, sauf 2 projets :

  • select2-component : un Select2 dont je me suis occupé d'améliorer la partie Angular et rendre l'élément compatible (graphiquement) avec un formulaire Material2.
  • walkthrough : une sorte de guide logiciel pour Angular. Ça me permet d'expérimenter un projet complet avec support de repository NPM, etc. (désolé pour mon anglais tout pourri)

Maintenant, je me dis que mon prochain projet pourrait être avec cette techno. Et pourquoi pas essayer du nodeJS avec, mais je m'avance un peu vite. J'ai déjà beaucoup à faire sur un autre site qui reste assez minimaliste côté JS.

Comment this entry...
Categories:
By Zéfling, the 10/10/2017 at 20:55:05
The ticket was read 186 times, with 0 comment posted.

Copies de sources sur Git

Sunday 20th November 2016

Depuis quelque temps, j'essaie de retrouver les sources de projets pour les publiés sur mon Gitlab. C'est surtout pour archivage, certaines choses sont abandonnées depuis belle lurette ou inutilisables en l'état. De plus, je ne peux pas attribuer de licence à des projets que je n'ai pas réalisés seul... En fait, si à 99% pour le code, mais étant des TP universitaires, je ne sais pas s'il me faut l'accord de la personne avec qui jamais ne fait le projet (qui franchement n'avait rien foutu ou presque pour la partie code). J'ai aussi posté toutes les sources de classes ou petits projets que j'avais postées au fur et à mesure sur ce blog. Je compte continuer à mettre à disposition des sources, car cela me permet aussi de les retrouver plus facilement et d'en faire profiter d'autres qui peuvent plus simplement les récupérer ou s'en inspirer sans s'embêter à récupérer les sources pour savoir si c'est vraiment intéressant.

En tout cas, Gitlab est un outil vraiment intéressant pour la publication personnelle sur son propre serveur, quoiqu'un peu lourd, mais facile à mettre en place. On pourrait me dire que ça fait un peu prendre un char pour tirer sur une mouche vu ce que j'en fais. L'utilisant au boulot, ça me semble plus simple comme ça. Pourquoi pas ailleurs, comme Github ? Ce n'est pas que je n’aime pas Github, je l'utilise souvent, mais je n'aime pas l'idée qu'une seule plateforme concentre la majorité des codes sources du monde. En fait, je n'aime pas la minitélisation du web.

Voici les projets publiques.

Comment this entry...
Categories:
By Zéfling, the 20/11/2016 at 23:48:59
The ticket was read 168 times, with 0 comment posted.