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.

Zéflingによって、 2013/09/23 20:30:19

Les derniers billets publiés

Les entretiens un peu spéciaux

2023年2月21日(火曜日)

Je suis entré sur le marché du travail en septembre 2008 alors un stage dans une entreprise qui n'a certainement pas me prendre Prizee était sur le déclin, donc au bout de 4 mois, j'avais peu d'espoir de pourvoir continuer. Je me suis mis à chercher du travail et en période de crise en prend un peu tout et n'importe quoi. Surtout quand a le droit à zéro aide. [...]

全記事を読みます...
カテゴリ:
Zéflingによって、 2023/02/21 23:32:34
5回を読んだ。0件のコメントが投稿されています。

Intégration conditionnelle de iFrameResizer

2021年11月25日(木曜日)

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 :

コード:

<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 :

コード:

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.

記事にコメントする...

Site LAMP sur une partition

2021年11月6日(土曜日)

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.

全記事を読みます...
カテゴリ:
Zéflingによって、 2021/11/06 19:05:07
55回を読んだ。0件のコメントが投稿されています。

Supprimer les données GPS des photos

2021年8月8日(日曜日)

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

Il faut juste installer :

コード:

sudo apt-get install libimage-exiftool-perl

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

コード:

exiftool photo.jpg

Supprimer toutes les données GPS :

コード:

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 :

コード:

exiftool -all= *.jpg

記事にコメントする...
カテゴリ:
Zéflingによって、 2021/08/08 21:18:16
65回を読んだ。0件のコメントが投稿されています。

Base 64 sur NativeScript

2020年2月4日(火曜日)

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

コード:

    // 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)));
    }


コード:

    //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}`;
    }

記事にコメントする...

Renommer en masse par ordre alphabétique

2019年7月28日(日曜日)

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 :

コード:

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.
記事にコメントする...
カテゴリ:
Zéflingによって、 2019/07/28 11:20:32
132回を読んだ。0件のコメントが投稿されています。

Sauvegarde de Gitlab

2019年2月3日(日曜日)

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 :

コード:

#!/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 :

コード:

sudo ./monscript.sh
記事にコメントする...
カテゴリ:
Zéflingによって、 2019/02/03 20:35:12
175回を読んだ。0件のコメントが投稿されています。

Astuce JavaScript : getter/setter sur un input

2018年7月17日(火曜日)

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 :

コード:

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

記事にコメントする...
カテゴリ:
Zéflingによって、 2018/07/17 14:00:28
184回を読んだ。0件のコメントが投稿されています。

Mes contributions avec Angular

2017年10月10日(火曜日)

Ç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.

記事にコメントする...
カテゴリ:
Zéflingによって、 2017/10/10 20:55:05
243回を読んだ。0件のコメントが投稿されています。