Comportement indéfini et optimisation

Dans certains langages (typiquement C et C++), la sémantique de certaines opérations est indéfinie. Cela permet au compilateur de ne s’intéresser qu’aux cas qui sont définis (et donc de les optimiser) sans s’occuper des effets produits sur les cas indéfinis. C’est un concept très précieux pour améliorer sensiblement les performances. Mais cela peut avoir des […]

 

20 octobre 2014

Commentaires fermés

AImageView (composant Android)

Pour afficher une image sur Android, le SDK contient un composant ImageView. Cependant, son mécanisme de configuration du redimensionnement de l’image (ScaleType) me semble déficient : il ne gère pas tous les cas courants ; le choix de la bonne constante (si elle existe) n’est pas toujours très intuitif. J’ai donc écrit un composant AImageView (qui hérite […]

Chiffrer un disque dur externe (ou une clé USB) avec LUKS

Un disque dur externe contenant vos données n’a pas de raisons de ne pas être chiffré. Voici quelques commandes utiles pour l’utilisation de LUKS. Prérequis Le paquet cryptsetup doit être installé : sudo apt-get install cryptsetup Initialisation Trouver le disque Tout d’abord, il faut déterminer l’emplacement du disque dur dans /dev. Pour cela, avant de […]

SSHFS inversé (rsshfs)

SSHFS permet de monter un répertoire d’une machine distance dans l’arborescence locale en utilisant SSH : sshfs serveur:/répertoire/distant /répertoire/local Mais comment monter un répertoire local sur une machine distante ? Une solution simple serait de se connecter en SSH sur la machine distante et d’exécuter la commande sshfs classique. Mais d’abord, ce n’est pas toujours directement […]

 

19 mars 2014

Commentaires fermés

Compiler un exécutable pour Android

Je vais présenter dans ce billet comment compiler un exécutable ARM pour Android, l’intégrer à un APK et l’utiliser dans une application. À titre d’exemple, nous allons intégrer un programme natif, udpxy, dans une application minimale de lecture vidéo. Contexte Le framework multimédia d’Android ne supporte pas nativement la lecture de flux UDP multicast (1, […]

Des slides Beamer en Markdown

Pour produire des slides propres pour une présentation, j’aime beaucoup Beamer (basé sur LaTeX). Mais la syntaxe est un peu lourde et la configuration est parfois inutilement compliquée (fonts, encodage, compilation multipasse…). Est-il possible d’avoir les avantages de Beamer sans ses inconvénients ? La réponse est oui, grâce à pandoc et son Markdown étendu. Beamer Voici […]

Lecture différée de la webcam d’un Rasberry Pi

L’objectif de ce billet est de parvenir à lire le flux provenant de la caméra d’un Raspberry Pi avec un décalage de quelques secondes (plutôt qu’en direct), avec les outils dédiés que sont raspivid et omxplayer. Contexte Là où je travaille, il y a un babyfoot. Nous avons récemment décidé de l’informatiser un peu pour […]

Duplicity : des backups incrémentaux chiffrés

Quiconque s’auto-héberge doit maintenir un système de sauvegarde de son serveur, permettant de tout remettre en place dans le cas d’un crash de disque dur, d’un piratage ou d’un cambriolage. Objectifs Il est nécessaire de sauvegarder à la fois des fichiers (les mails, les services hébergés, les fichiers de config…) et le contenu de bases […]

Anti-AdBlock et Hadopi, même combat ?

La presse s’inquiète de plus en plus de l’impact des bloqueurs de publicités sur leurs sources de revenus et condamne, plus ou moins ouvertement, leur utilisation par les internautes. Le débat se polarise alors entre : ceux qui considèrent qu’ils n’ont pas à se voir imposer des publicités, et qui donc les bloquent ; ceux qui pensent […]

GIT : squasher des merges

Supposons que je souhaite ajouter une fonctionnalité à un projet sur GIT. Je prends la version actuelle de la branche master (A), puis ajoute sur ma branche topic les commits X et Y. X—Y topic / –A master Je propose la fonctionnalité upstream (par un git request-pull ou une pull request), qui met un peu […]

Le mixage audio

Que se passe-t-il lorsque nous percevons le son provenant de plusieurs sources audio simultanément, par exemple lorsque plusieurs personnes parlent en même temps ? Dans la réalité, ce que nous entendons est la somme de chacun des signaux. Mais si nous voulons mélanger plusieurs pistes audio numériques, nous rencontrons un problème : chaque échantillon d’un signal audio […]

Paradoxes probabilistes

Ce sont des cas d’école, mais j’adore ces quelques paradoxes. La simplicité de leurs énoncés et l’évidence de leur solution nous permettent de répondre en quelques secondes, sans aucune hésitation. Mais en nous trompant. Deux enfants Un couple a deux enfants dont l’un d’eux (au moins) est une fille. Quelle est la probabilité que l’autre […]

Formater du code C avec indent et Vim

Pour suivre des règles de codage et s’y tenir, rien de tel qu’un outil qui formate automatiquement le code (c’est plus rapide et sans erreurs). Sous Eclipse par exemple, la combinaison de touches Ctrl+Shift+F est indispensable. Mon but est d’obtenir la même fonctionnalité sous Vim pour le langage C. indent L’outil indent permet de formater […]

Free Mobile n’est pas neutre

Intrigué par le rapport d’un utilisateur sur RespectMyNet (qu’il présente en détail), j’ai voulu vérifier par moi-même. Sur un serveur hébergé chez moi sur une ligne Free ADSL (maximum ~120Ko/s en upload), je crée un fichier totalement aléatoire dans un répertoire accessible en HTTP, avec plusieurs extensions : # crée un fichier de 2Mio dd if=/dev/urandom […]

Modifier la luminosité d’une vidéo dans avconv (ffmpeg)

Pour partager des vidéos capturées par mon appareil photo, je les convertissais jusqu’alors en Ogg/Theora grâce à ffmpeg2theora. Ce format (contrairement au h264) est libre et lisible nativement par Firefox, y compris par la version mobile. Mais j’envisage depuis longtemps de passer à WebM (le format libéré par Google il y a un peu plus […]