J'avais envie de créer pour une collection de fichiers audio une vidéo affichant une courbe audio, afin d'avoir quelque chose de mieux à afficher sur youtube qu'un bête logo.
( le resultat final est visible ici: https://www.youtube.com/watch?v=oI32z19iu_o )
En utilisant ffmpeg et son filtre "showvaves", on arrive a un résultat assez convaincant.
ffmpeg -i mon_fichier.wav -filter_complex "[0:a]showwaves=s=720x576:mode=cline:rate=12:scale=log:colors=Black|LightBlue,format=yuv420p[v]" -map "[v]" -map 0:a -c:v libx264 -c:a aac -b:a 192k ma_video.mp4
Cette commande va créer a partir d'un fichier wav un video au format mp4, en utilisant les bons codecs que recommande youtube (x264 pour la video, aac pour l'audio)
La vidéo sera en résolution DVD ce qui est largement suffisant a mon avis pour le web, mais vous pouvez remplacer 720x576
par 1920×1080 si vous voulez absolument du full hd.
Maintenant que l'on a une belle courbe audio, pourquoi ne pas ajouter une image en fond ?
Cette fois ci nous allons utiliser le filtre "blend" avec un fichier mon_logo.jpg, qui devra être à la même résolution que le fichier audio (ici 720x576 donc) L'image sera ici en arrière plan, car mon_logo.jpg est specifié en deuxième paramètre sur la ligne de commande.
ffmpeg -i ma_video.mp4 -i mon_logo.jpg -filter_complex "blend=all_mode=overlay:all_opacity=0.7" ma_video_logo.mp4
Showing posts with label libre. Show all posts
Showing posts with label libre. Show all posts
Sunday, November 20, 2016
Sunday, January 3, 2016
Pinky syndrom ou syndrome du petit doigt sur clavier
La semaine dernière je me suis rendu compte que mon auriculaire de la main gauche était victime du"pinky syndrome" : la partie médiane de l’auriculaire étant particulièrement douloureuse alors que le reste de la main en pleine forme. J'ai rapidement relié ceci a un abus de l'utilisation de l'auriculaire sur mon clavier, j'utilise en effet l'auriculaire de la main gauche a la fois pour acceder à la touche 'shift', à la touche 'Control' et a la touche 'esc'
Quand on travaille avec Eclipse, Vim et la console Unix, Dieu sait si ces touches sont souvent utilisées !
Comme solution à ce problème j'ai configuré deux options pour mon clavier:
* la touche 'Control' de gauche est échangée avec la touche 'Alt' de gauche, ce qui me force à utiliser le pouce, plus musclé, pour entrer 'Control'.
* la touche 'Caps lock' est replacée par une touche 'Control'.
* j'essaye d'utiliser 'Control-C' pour passer an mode commande dans vim, ce qui évite d'aller chercher une touche bien loin de la position départ de la main.
Les deux premières options se configurent avec
XKBOPTIONS="ctrl:swap_lalt_lctl,caps:ctrl_modifier,terminate:ctrl_alt_bksp"
dans /etc/default/keyboard
ou avec setxkbmap -model pc105 -layout us -option ctrl:swap_lalt_lctl,caps:ctrl_modifier,terminate:ctrl_alt_bksp en ligne de commande.
Enfin si vous utilisez Gnome 3, il est possible que Gnome écrase ces règlages, il faudra les réintroduire pour Gnome avec:
dconf write "/org/gnome/desktop/input-sources/xkb-options" "['ctrl:swap_lalt_lctl','caps:ctrl_modifier','terminate:ctrl_alt_bksp']"
NB : on obtient aussi le même résultat en insérant dans le fichier .Xmodmap:
clear control
clear mod1
keycode 37 = Alt_L Meta_L
keycode 64 = Control_L
add control = Control_L Control_R
add mod1 = Alt_L
La liste complète des options d'agencement se trouve dans /usr/share/X11/xkb/rules/base.xml, ces options sont accessibles graphiquement via gnome-tweak-tool.
Le détail du fonctionnement du clavier sous Linux / X11 est expliqué en détail ici.
Quand on travaille avec Eclipse, Vim et la console Unix, Dieu sait si ces touches sont souvent utilisées !
Comme solution à ce problème j'ai configuré deux options pour mon clavier:
* la touche 'Control' de gauche est échangée avec la touche 'Alt' de gauche, ce qui me force à utiliser le pouce, plus musclé, pour entrer 'Control'.
* la touche 'Caps lock' est replacée par une touche 'Control'.
* j'essaye d'utiliser 'Control-C' pour passer an mode commande dans vim, ce qui évite d'aller chercher une touche bien loin de la position départ de la main.
Les deux premières options se configurent avec
XKBOPTIONS="ctrl:swap_lalt_lctl,caps:ctrl_modifier,terminate:ctrl_alt_bksp"
dans /etc/default/keyboard
ou avec setxkbmap -model pc105 -layout us -option ctrl:swap_lalt_lctl,caps:ctrl_modifier,terminate:ctrl_alt_bksp en ligne de commande.
Enfin si vous utilisez Gnome 3, il est possible que Gnome écrase ces règlages, il faudra les réintroduire pour Gnome avec:
dconf write "/org/gnome/desktop/input-sources/xkb-options" "['ctrl:swap_lalt_lctl','caps:ctrl_modifier','terminate:ctrl_alt_bksp']"
NB : on obtient aussi le même résultat en insérant dans le fichier .Xmodmap:
clear control
clear mod1
keycode 37 = Alt_L Meta_L
keycode 64 = Control_L
add control = Control_L Control_R
add mod1 = Alt_L
La liste complète des options d'agencement se trouve dans /usr/share/X11/xkb/rules/base.xml, ces options sont accessibles graphiquement via gnome-tweak-tool.
Le détail du fonctionnement du clavier sous Linux / X11 est expliqué en détail ici.
Wednesday, October 28, 2015
Débit d'un réseau TCP/IP avec iperf
A toutes fin de comparaison utiles, j'ai décidé de collecter la vitesse de transfert brute de différents réseaux physiques auquel j'ai accès , via la commande iperf.
Commande server:iperf -s -w 65536 -p 12345
NB: les cartes réseaux utilisées sont indiqués par leur nom de pilote Linux ou FreeBSD
e1000e sur le client
77.1 Mbits/sec
Réseau Powerline, distance 20m / 1 Etage,
6.45 Mbits/sec
Réseau Powerline, distance 20m / 1 Etage,
58 Mbits/sec
iwlwifi sur le client
13.2 Mbits/sec
Réseau Wifi 11ac 405Mb/s, Signal 100%
Point d'accès UPC Connect Box
Intel Corporation Wireless-AC 9260 sur le client
374 Mbits/sec (yeah !)
Commandes utilisées
Commande client: iperf -c nasi.local -w 65536 -p 12345 -t 60Commande server:iperf -s -w 65536 -p 12345
NB: les cartes réseaux utilisées sont indiqués par leur nom de pilote Linux ou FreeBSD
Réseau Fast Ethernet
VIA Technologies Rhine I/II/III Ethernet sur le serveur (FreeBSD vr)e1000e sur le client
77.1 Mbits/sec
Réseau Gigabit Ethernet
Intel e1000e sur le serveur
e1000e sur le client
726 Mbits/sec
Réseau Powerline, distance 20m / 1 Etage,
Netgear Powerline 200
6.45 Mbits/sec
Réseau Powerline, distance 20m / 1 Etage,
Devolo dlan 1200+
58 Mbits/secRéseau Wifi 11g 54Mb/s, Link Quality=70/70 Signal level=-34 dBm
Atheros 5212 sur le serveur (FreeBSD ath)iwlwifi sur le client
13.2 Mbits/sec
Réseau Wifi 11n 150Mb/s, Link Quality=70/70 Signal level=-34 dBm
Point d'accès UPC Connect Box
iwlwifi sur le client
22.3 Mbits/sec
Réseau Wifi 11ac 405Mb/s, Signal 100%
Point d'accès UPC Connect BoxIntel Corporation Wireless-AC 9260 sur le client
374 Mbits/sec (yeah !)
Sunday, April 12, 2015
Désactiver la mise en veille à distance sous Gnome3
Par défaut mon ordinateur de bureau se met en veille au bout de 30 minutes, une mesure d'économie bien pratique.
Seulement de temps en temps, j'ai besoin d'y acceder par ssh, et après 30 minutes d'activité, il se remet en veille.
Le paramètre de mise en veille est configurée dans le registre dconf, qui peut se lire avec:
gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout
1800 # 30 min x 60 sec
Pour désactiver la mise en veille, on met le timeout à 0.
dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0
La commande dbus-launch est nécessaire en cas de connexion distante.
Seulement de temps en temps, j'ai besoin d'y acceder par ssh, et après 30 minutes d'activité, il se remet en veille.
Le paramètre de mise en veille est configurée dans le registre dconf, qui peut se lire avec:
gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout
1800 # 30 min x 60 sec
Pour désactiver la mise en veille, on met le timeout à 0.
dbus-launch gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0
La commande dbus-launch est nécessaire en cas de connexion distante.
Thursday, March 26, 2015
Comprendre ce que fait le Javascript en 30 secondes et 3 commandes
Si vous avez déjà vu un terminal et une ligne de commande sous Linux, vous êtes à moins de 30 secondes de votre premier programme Javascript.
Top Chrono:
* ouvrez une autre fenêtre avec votre navigateur, allez sur une page au hasard
(par exemple: la mienne !), tout en gardant ce texte sous les yeux
* sur cette nouvelle fenêtre appuyez sur F12 sur votre navigateur, pour activer les outils de développement
Vous devriez voire apparaître une fenêtre semblable à ceci en bas:
* dans les outils de développements, cliquer sur l'onglet indiqué "Console".
Cet onglet contient tout en bas une ligne deux chevrons qu'on appelle un prompt, et dans lequel on peut taper des commandes:
* cliquer dans la barre au niveau du prompt, et entrez le texte suivant:
console.log('bonjour la companie');
Voila il s'agit de votre première commande Javascript ! N'oubliez pas les guillemets, le point virgule est optionnel mais fait partie des bonnes habitudes.
* on peut tenter comme dans un shell unix/linux d'autres commandes:
new date();
2 + 2 ;
* on peut obtenir des informations sur la page web que l'on est en train de lire:
console.log(document.domain);
console.log(document.title);
* et encore mieux on peut le modifier !
document.title = 'ca me plait pas mal';
document.bodyInnerHTML = 'a small text'
document.bodyInnerHTML = '<h1> a bigger title </h1>'
Voila vous avez découvert ce qu'est le Javascript, un langage pour lire, créer et modifier le contenu d'une page web !
Top Chrono:
* ouvrez une autre fenêtre avec votre navigateur, allez sur une page au hasard
(par exemple: la mienne !), tout en gardant ce texte sous les yeux
* sur cette nouvelle fenêtre appuyez sur F12 sur votre navigateur, pour activer les outils de développement
Vous devriez voire apparaître une fenêtre semblable à ceci en bas:
* dans les outils de développements, cliquer sur l'onglet indiqué "Console".
Cet onglet contient tout en bas une ligne deux chevrons qu'on appelle un prompt, et dans lequel on peut taper des commandes:
* cliquer dans la barre au niveau du prompt, et entrez le texte suivant:
console.log('bonjour la companie');
Voila il s'agit de votre première commande Javascript ! N'oubliez pas les guillemets, le point virgule est optionnel mais fait partie des bonnes habitudes.
* on peut tenter comme dans un shell unix/linux d'autres commandes:
new date();
2 + 2 ;
* on peut obtenir des informations sur la page web que l'on est en train de lire:
console.log(document.domain);
console.log(document.title);
* et encore mieux on peut le modifier !
document.title = 'ca me plait pas mal';
document.bodyInnerHTML = 'a small text'
document.bodyInnerHTML = '<h1> a bigger title </h1>'
Voila vous avez découvert ce qu'est le Javascript, un langage pour lire, créer et modifier le contenu d'une page web !
Thursday, January 1, 2015
Le plus grand succès du logiciel libre ? Internet, tout simplement
Le bug n°1 de Ubuntu (Microsoft has a Majority Market share) parait toujours d'actualité si on l'on se dirige vers le rayon PC de n'importe quelle grande surface. Cependant le post de blog que vous lisez à l'heure actuelle, est sans doute affiché dans un navigateur opensource (comme 60% du marché). Pour vous connecter à ce serveur vous avez utilisé un serveur DNS, sans doute Bind, le serveur DNS opensource de référence ? Ou si vous êtes chez Free, peut être PowerDNS encore un serveur DNS OpenSource.
Quel serveur distribue ces pages webs ? Apache ou Nginx deux logiciels libres qui possèdent 80 % du marché.
Quel langage de programmation utilise ce système pour afficher ce blog à partir de la base de données ? Java, Perl, PHP, Python ? Scala, Ruby ? Tous des langages dont l'implémentation de référence est libre.
Et sur quel OS tourne ce langage de programmation ? Qu'il soit chez Google, Yahoo ou un serveur perso sur OVH, Gandi ou Dedibox, vraisemblablement Linux ou FreeBSD, un OS libre.
La seule partie de l'infrastucture Internet sur laquelle le propriétaire domine c'est dans le domaine des routeurs des FAI, avec Cisco comme acteur dominant (encore que Juniper, basé sur FreeBSD, occupe maintenant 30% du marché)
On pourrait parler encore de protocoles réseaux, de formats d'image, mais l'essentiel est là: de BSD 4.2 qui a mis TCP/IP sur le devant de la scène en 1982 , à Chromium aujourd'hui, Internet a été construit par le logiciel libre.
Quel serveur distribue ces pages webs ? Apache ou Nginx deux logiciels libres qui possèdent 80 % du marché.
Quel langage de programmation utilise ce système pour afficher ce blog à partir de la base de données ? Java, Perl, PHP, Python ? Scala, Ruby ? Tous des langages dont l'implémentation de référence est libre.
Et sur quel OS tourne ce langage de programmation ? Qu'il soit chez Google, Yahoo ou un serveur perso sur OVH, Gandi ou Dedibox, vraisemblablement Linux ou FreeBSD, un OS libre.
La seule partie de l'infrastucture Internet sur laquelle le propriétaire domine c'est dans le domaine des routeurs des FAI, avec Cisco comme acteur dominant (encore que Juniper, basé sur FreeBSD, occupe maintenant 30% du marché)
On pourrait parler encore de protocoles réseaux, de formats d'image, mais l'essentiel est là: de BSD 4.2 qui a mis TCP/IP sur le devant de la scène en 1982 , à Chromium aujourd'hui, Internet a été construit par le logiciel libre.
Wednesday, March 19, 2014
Le bug numero un d'Ubuntu vu par les statistiques de Wikipedia
Il y a un an, Mark Shuttleworth d'Ubuntu / Canonical annonçait avec un certain triomphalisme que Microsoft n'avait plus une part de part de marché dominante dans l'informatique personnelle, fermant ainsi le bug n°1 à l'origine d'Ubuntu. Effectivement le boom d'Android et d'IOS ont rejeté les parts de marché de Windows bien en arrière.
Est ce une victoire pour le consommateur ? Dans un certain sens, oui, car un choix de plateformes permet d'éviter un monopole de l' accès à l'information.
Y a-t-il derrière un succès pour le logiciel libre ? Faiblement, il s'agit toujours globalement de plateformes fermées, le cœur libre de IOS (Darwin) et celui d'Android (ASOP) se réduisant à une part de plus en plus congrue.
On peut observer cette évolution des parts de marché de façon très intéressante en consultant les statistiques de fréquentations de Wikipedia triées par système d'exploitation.
On se rend alors compte que Windows est en dessous de 50% de la barre des visites, Android tournant à 11% et les distributions Linux autour de 1% (FreeBSD et OpenBSD faisant une performance honorable en apparaissant même dans ces statistiques ... )
N'en doutant pas, une grande part des utilisateurs d'IOS vus dans ces statistiques on peut sans doute un PC quelque part, mais alors ces statistiques indiquent que le PC est beaucoup moins utilisé, et recouvre alors bien moins d'importance.
Il y a quatre ans, Windows caracolait encore en tête avec 87 % des visites ...
Est ce une victoire pour le consommateur ? Dans un certain sens, oui, car un choix de plateformes permet d'éviter un monopole de l' accès à l'information.
Y a-t-il derrière un succès pour le logiciel libre ? Faiblement, il s'agit toujours globalement de plateformes fermées, le cœur libre de IOS (Darwin) et celui d'Android (ASOP) se réduisant à une part de plus en plus congrue.
On peut observer cette évolution des parts de marché de façon très intéressante en consultant les statistiques de fréquentations de Wikipedia triées par système d'exploitation.
On se rend alors compte que Windows est en dessous de 50% de la barre des visites, Android tournant à 11% et les distributions Linux autour de 1% (FreeBSD et OpenBSD faisant une performance honorable en apparaissant même dans ces statistiques ... )
N'en doutant pas, une grande part des utilisateurs d'IOS vus dans ces statistiques on peut sans doute un PC quelque part, mais alors ces statistiques indiquent que le PC est beaucoup moins utilisé, et recouvre alors bien moins d'importance.
Il y a quatre ans, Windows caracolait encore en tête avec 87 % des visites ...
Thursday, November 28, 2013
Utiliser l'API gandi pour faire du DNS dynamique (à la DynDNS)
Vous avez un nom de domaine enregistré chez gandi.net ? Vous avez besoin d'un nom de domain pour une machine perso sur une ligne ADSL ? Rien de plus simple !
Créer d'abord une clé d'API sur https://www.gandi.net/admin/api_key
Puis on crée via l'interface web une entrée initiale pour la machine qui nous intéresse (par exemple monpc.mydomain.com) sur https://www.gandi.net/admin/domain
On télécharge le script python qui va accèder à cette API:
git clone https://github.com/lembregtse/gandi-dyndns.git /usr/local/src/gandi-dyndns
ln -s /usr/local/src/gandi-dyndns/gandi-dyndns /usr/local/bin/gandi-dyndns
Premier jet en ligne de commande ( vous devez utilisez la clé de production pour que ca marche)
gandi-dyndns --api=123rdyy --domain=mydomain.com --record=monpc
On ajoute dans la crontab le script suivant pour actualiser toutes les heures:
dans un fichier /etc/cron.hourly/gandy
#!/bin/sh
/usr/local/bin/gandi-dyndns --api=123rdBy --domain=mydomain.com --record=monpc > /var/log/gandy.log
Enjoy your dyndns !
Créer d'abord une clé d'API sur https://www.gandi.net/admin/api_key
Puis on crée via l'interface web une entrée initiale pour la machine qui nous intéresse (par exemple monpc.mydomain.com) sur https://www.gandi.net/admin/domain
On télécharge le script python qui va accèder à cette API:
git clone https://github.com/lembregtse/gandi-dyndns.git /usr/local/src/gandi-dyndns
ln -s /usr/local/src/gandi-dyndns/gandi-dyndns /usr/local/bin/gandi-dyndns
Premier jet en ligne de commande ( vous devez utilisez la clé de production pour que ca marche)
gandi-dyndns --api=123rdyy --domain=mydomain.com --record=monpc
On ajoute dans la crontab le script suivant pour actualiser toutes les heures:
dans un fichier /etc/cron.hourly/gandy
#!/bin/sh
/usr/local/bin/gandi-dyndns --api=123rdBy --domain=mydomain.com --record=monpc > /var/log/gandy.log
Enjoy your dyndns !
Thursday, August 29, 2013
Comment vérifier si l'acceleration matérielle est activée pour votre carte graphique
Accélération 3D:
apt-get mesa-utilsglxinfo | grep render
direct rendering: Yes
OpenGL renderer string: Gallium 0.4 on AMD RV710
GL_EXT_vertex_array_bgra, GL_NV_conditional_render,
AMD RV710 étant ici le chipset de la carte graphique.
Accélération Video (hardware scaling)
xvinfo | grep AdaptorAdaptor #0: "Radeon Textured Video"
Accélération 3D pour OpenGL ES ( pour systèmes embarqués / ARM)
es2_info | grep RENDERERGL_RENDERER: Gallium 0.4 on AMD RV710
Wednesday, June 26, 2013
Provisioning d'une VM Debian avec libvirt, kvm, et pressed
En cherchant comme automatiser la création de machines virtuelles, je me suis penché sur libvirt, l'outil de virtualisation générique pour contrôler KVM, Xen, VmVare et quelques autres.
En combinant l'installeur virt-install avec un fichier preseed qui permet d'automatiser l'installation sur Debian, on peut créer sa propre machine virtuelle sans toucher une seule fois le clavier !
C'est assez impressionnant de voire l'installeur configurer le réseau, partitionner le système, installer le système sans aucune intervention utilisateur. La commande suivant installera un système Debian minimal avec openssh, et les comptes root/root et user/user
La Machine Virtuelle ainsi créée est ensuite controlable avec virt-manager, pour peu que votre utilisateur soit membre du groupe livirt.
Remarques, questions, suggestions ? Plutot que de laisser un commentaire qui passera ici peut etre ici inaperçu, contactez moi @formicapunk sur Twitter !
En combinant l'installeur virt-install avec un fichier preseed qui permet d'automatiser l'installation sur Debian, on peut créer sa propre machine virtuelle sans toucher une seule fois le clavier !
C'est assez impressionnant de voire l'installeur configurer le réseau, partitionner le système, installer le système sans aucune intervention utilisateur. La commande suivant installera un système Debian minimal avec openssh, et les comptes root/root et user/user
La Machine Virtuelle ainsi créée est ensuite controlable avec virt-manager, pour peu que votre utilisateur soit membre du groupe livirt.
Remarques, questions, suggestions ? Plutot que de laisser un commentaire qui passera ici peut etre ici inaperçu, contactez moi @formicapunk sur Twitter !
Thursday, June 6, 2013
Ubuntu + Gnome Classic = Debian boot screen !
Après une upgrade party at $JOB de Ubuntu 10.04 vers 12.04, et après avoir installé Gnome Classic, sur deux d'entre elles un phénomène intéressant se produit: l'écran de boot (GRUB) affiche le theme de Debian 6 !
Un cas de packaging qui a peut être mal tourné, et qui rappelle bien la synergie Debian / Ubuntu: Ubuntu c'est de mémoire 71% de paquets Debian recompilés sans modification et 29 % de paquets nouveaux/modifiés. (NB: Une source plus ancienne sur ce même thème )
Un cas de packaging qui a peut être mal tourné, et qui rappelle bien la synergie Debian / Ubuntu: Ubuntu c'est de mémoire 71% de paquets Debian recompilés sans modification et 29 % de paquets nouveaux/modifiés. (NB: Une source plus ancienne sur ce même thème )
Saturday, June 1, 2013
Le n°1 des ventes d'ordinateurs portable sur Amazon Etats Unis tourne sous Linux
Je ne sais pas depuis combien de temps il est en tête des ventes, mais c'est un chromebook qui occupe actuellement le top des ventes sur Amazon US. Le même portable est en neuxième position des ventes chez Amazon France. Et cette fois ci il s'agit d'une vraie machine Linux avec u boot, noyau, glibc, xorg et upstart comme système de démarrage (l'architecture sécurité mentionne tous ces composants)
La doc officielle mentionne comment activer l'appareil en mode développement pour avoir un accès complet (shell root) Après smartphone et routeur, une nouvelle fois une "appliance" fait confiance à ses utilisateurs, et c'est une bonne nouvelle.
Après l'installation d'un environnement Debian ou Ubuntu (on vout explique ici comment faire avec le savoureux script crouton), ce portable peut faire un outil idéal pour devops (7 heures d'autonomie, boot en 10 secondes)
La doc officielle mentionne comment activer l'appareil en mode développement pour avoir un accès complet (shell root) Après smartphone et routeur, une nouvelle fois une "appliance" fait confiance à ses utilisateurs, et c'est une bonne nouvelle.
Après l'installation d'un environnement Debian ou Ubuntu (on vout explique ici comment faire avec le savoureux script crouton), ce portable peut faire un outil idéal pour devops (7 heures d'autonomie, boot en 10 secondes)
Tuesday, April 23, 2013
IPv6 sur VPS Hetzner / NetBSD
Ayant découvert il y a quelques mois que mon hébergeur (Hetzner) proposait IPv6 sur ses offres VPS, je me suis décidé à l'activer, pour avoir un aperçu de la configuration requise.
Configuration envoyée par Hetzner:
IPs: 2a01:4f8:d13:1d00:: /64
Gateway: 2a01:4f8:d13:1d00::1 /64
Useable IP addresses:
2a01:4f8:d13:1d00::2 to 2a01:4f8:d13:1d00:ffff:ffff:ffff:ffff
On ajoute la première adresse du pool IPv6 à l'interface réseau:
cat /etc/ifconfig.rtk0
inet 78.47.36.230 netmask 0xfffffff0
inet6 2a01:4f8:d13:1d00::2 prefixlen 64
et on définit la passerelle IPv6:
cat /etc/mygate6
2a01:4f8:d13:1d00::1
Après avoir ajouté une entrée de type AAAA sur le registrar DNS (pour moi Gandi) on vérifie que cette entrée est bien accessible:
host -t AAAA libera.cc
libera.cc has IPv6 address 2a01:4f8:d13:1d00::2
Par défaut Apache httpd "écoute" seulement sur IPv4, il faut ajouter "Listen [::]:80" dans /usr/pkg/etc/httpd/httpd.conf:
grep ^Listen httpd.conf
Listen 0.0.0.0:80
Listen [::]:80
Avons une socket ouverte en IPv6 sur le port 80 ?
sockstat -f inet6 -ln | grep 80
www httpd 700 4 tcp6 *.80 *.*
www httpd 1958 4 tcp6 *.80 *.*
www httpd 1971 4 tcp6 *.80 *.*
root httpd 2100 4 tcp6 *.80
On peut donc tester depuis une machine cliente si Apache envoie répond bien sur IPv6:
curl -6 libera.cc
Computer says:
Business as usual ...
Configuration envoyée par Hetzner:
IPs: 2a01:4f8:d13:1d00:: /64
Gateway: 2a01:4f8:d13:1d00::1 /64
Useable IP addresses:
2a01:4f8:d13:1d00::2 to 2a01:4f8:d13:1d00:ffff:ffff:ffff:ffff
On ajoute la première adresse du pool IPv6 à l'interface réseau:
cat /etc/ifconfig.rtk0
inet 78.47.36.230 netmask 0xfffffff0
inet6 2a01:4f8:d13:1d00::2 prefixlen 64
et on définit la passerelle IPv6:
cat /etc/mygate6
2a01:4f8:d13:1d00::1
Après avoir ajouté une entrée de type AAAA sur le registrar DNS (pour moi Gandi) on vérifie que cette entrée est bien accessible:
host -t AAAA libera.cc
libera.cc has IPv6 address 2a01:4f8:d13:1d00::2
Par défaut Apache httpd "écoute" seulement sur IPv4, il faut ajouter "Listen [::]:80" dans /usr/pkg/etc/httpd/httpd.conf:
grep ^Listen httpd.conf
Listen 0.0.0.0:80
Listen [::]:80
Avons une socket ouverte en IPv6 sur le port 80 ?
sockstat -f inet6 -ln | grep 80
www httpd 700 4 tcp6 *.80 *.*
www httpd 1958 4 tcp6 *.80 *.*
www httpd 1971 4 tcp6 *.80 *.*
root httpd 2100 4 tcp6 *.80
On peut donc tester depuis une machine cliente si Apache envoie répond bien sur IPv6:
curl -6 libera.cc
Computer says:
Hello World !
Business as usual ...
Saturday, January 5, 2013
Augmenter le volume d'un fichier video avec ffmpeg
En ligne de commande:
ffmpeg -i file.mpg -vcodec copy -vol 1024 file_louder.mpg
-i : fichier en entrée à modifier
-vcodec copy: laisser la partie video inchangée
-vol 1024: multiplie le volume par 4 ( la valeur de base est -vol 256)
Il est important de se rappeler qu'a trop faire augmenter le volume, le son risque de saturer, bien vérifier par une écoute préliminaire, ou encore mieux, extraire la piste audio et la modifier dans Audacity.
ffmpeg -i file.mpg -vcodec copy -vol 1024 file_louder.mpg
-i : fichier en entrée à modifier
-vcodec copy: laisser la partie video inchangée
-vol 1024: multiplie le volume par 4 ( la valeur de base est -vol 256)
Il est important de se rappeler qu'a trop faire augmenter le volume, le son risque de saturer, bien vérifier par une écoute préliminaire, ou encore mieux, extraire la piste audio et la modifier dans Audacity.
Monday, November 5, 2012
Drush, un apt-get pour drupal
Je viens de faire la découverte de Drush, un utilitaire en ligne de commandes qui permet de mettre à jour un site Drupal d'une manière efficace en ligne de commandes. (Dans le cas où Drupal est installé à partir des sources de drupal.org, et non le paquet d'une distribution)
L'usage en est le suivant:
cd my_drupal_site/
Un outil tellement puissant qu'on en vient à souhaiter son existence pour wordpress.
L'usage en est le suivant:
cd my_drupal_site/
| Objectif | Debian | Drush |
|---|---|---|
| Liste les paquets installés | dpkg -l | drush pm-list |
| Mets à jour la liste des paquets disponibles | apt-get update | drush pm-refresh |
| Montre les mises à jour possibles | apt-get --simulate upgrade | drush --simulate pm-update |
| Installe les dernières mises à jour via le réseau | apt-get upgrade | drush pm-update |
Un outil tellement puissant qu'on en vient à souhaiter son existence pour wordpress.
Tuesday, September 18, 2012
Linux, ZFS et disque SATA: remplacement de disque sans faute en 5 commandes
Le serveur en question tourne sur Debian 6 avec zfs-fuse comme système de fichier sur un volume stripped mirror, équivalent d'un RAID 10.
zpool get version tank
NAME PROPERTY VALUE SOURCE
tank version 23 default
Alors que je regardais l'espace disponible sur un volume ZFS dédié à des backups, je m'apercois du message d'erreur suivant:
zpool status | head
pool: tank
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors using 'zpool clear' or replace the device with 'zpool replace'.
see: http://www.sun.com/msg/ZFS-8000-9P
scrub: none requested
config:
Effectivement le noyau a du mal à communiquer avec un disque dur
dmesg | grep sd
[87538.049395] sd 1:0:1:0: [sdd] Unhandled sense code
[87538.049399] sd 1:0:1:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[87538.049404] sd 1:0:1:0: [sdd] Sense Key : Medium Error [current] [descriptor]
[87538.049430] sd 1:0:1:0: [sdd] Add. Sense: Unrecovered read error - auto reallocate failed
[87538.049437] sd 1:0:1:0: [sdd] CDB: Read(10): 28 00 48 06 54 00 00 00 80 00
[87538.049448] end_request: I/O error, dev sdd, sector 1208374353
Cecu est confirmé par le status SMART du disque en question: un disque dur vieux de 1541 jours, on peut le changer !
smartctl --all /dev/sdd | grep ^Error
Error logging capability: (0x01) Error logging supported.
Error 7453 occurred at disk power-on lifetime: 36998 hours (1541 days + 14 hours)
Error 7452 occurred at disk power-on lifetime: 36998 hours (1541 days + 14 hours)
Error 7451 occurred at disk power-on lifetime: 36998 hours (1541 days + 14 hours)
Error 7450 occurred at disk power-on lifetime: 36998 hours (1541 days + 14 hours)
Error 7449 occurred at disk power-on lifetime: 36998 hours (1541 days + 14 hour
Notons tout d'abord son numéro de série:
hdparm -I /dev/sdd | grep "Serial Number"
Serial Number: WD-WCASJ0402738
Un petit tour sur le site du constructeur permet d'ailleurs de constater que la date de garantie est déja dépassée:
Et retirons le disque dur du pool zfs:
zpool offline tank /dev/sdd
Notre pool "tank" apparait alors en statut "dégradé" mais heureusement pas d'erreurs sur les données.
zpool status
pool: tank
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
mirror-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
mirror-1 DEGRADED 0 0 0
sdc ONLINE 0 0 0
sdd OFFLINE 0 0 0
errors: No known data errors
Une fois le serveur arrêté il s'agit de remplacer le disque dur comme le noyau l'avait reconnu comme /dev/sdd, il est sans doute sur la troisième nappe SATA (la numérotation commençant à partir de 0)
Un coup d’œil au disque permet de vérifier le numéro de série:
Après avoir recablé le disque, rajoutons le dans le pool zfs:
zpool replace tank /dev/sdd
Si vous utilisez les numeros de series des disques comme identifiant:
zpool replace tank ata-WDC_WD2003FYYS-02W0B0_WD-WMAY02196811 ata-Hitachi_HDS721010KLA330_GTE002PBGTNYME
Zfs va maintenant resynchroniser les blocs de données:
(Dans le jargon de ZFS, resilvering signifie copier les blocs d'un disque à un autre pour regagner un état initial)
zpool status
pool: tank
state: DEGRADED
status: One or more devices is currently being resilvered. The pool will continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scrub: resilver in progress for 0h33m, 34.92% done, 1h1m to go
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
mirror-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
mirror-1 DEGRADED 0 0 0
sdc ONLINE 0 0 0
replacing-1 DEGRADED 0 0 0
sdd/old OFFLINE 0 0 0
sdd ONLINE 0 0 0 67.0G resilvered
On peut aussi suivre l'état de la synchronisation, qui s'effectue environ à 47MB/s sur ce système:
iostat -d 1 -m
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 0.00 0.00 0.00 0 0
sdd 137.00 0.00 48.13 0 48
sdc 138.00 48.69 0.00 48 0
sdb 0.00 0.00 0.00 0 0
sde 0.00 0.00 0.00 0 0
Environ deux heures plus tard la synchronisation des blocs de données est terminée, et le pool zfs est de nouveau en statut normal:
zpool status
pool: tank
state: ONLINE
scrub: resilver completed after 1h38m with 0 errors on Tue Sep 18 17:04:25 2012
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sda ONLINE 0 0 0
sdb ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0 192G resilvered
errors: No known data errors
Saturday, September 8, 2012
Installation sur un Imac 24'': comment je suis devenu intégrateur OEM sans le vouloir
Une histoire d'upgrade
Un Imac 24'', c'est sans doute un ordinateur assez répandu, si on juge par les succès de la maison mère, et bien pourtant l'installation de Debian 7 (Beta) s'est révélé loin d'être une partie de plaisir. Évidemment avec 10 d'expérience de Linux, et le fait que je sois Debian Maintainer, j'avais pas mal d'atouts dans les mains et en quelques heures tout fonctionnait nickel. Cependant.
Carte graphique: tout le monde descend du bus
Pour installer le driver nvidia propriétaire, un petit coup de
apt-get install nvidia-kernel-dkms linux-headers-amd64
est suffisant.
On reboot, on se connecte tranquille, et après deux minutes le système se bloque complètement. Après deux heures d'Essais infructueux je remarque dans le /var/log/syslog:
Sep 7 21:50:58 leonard kernel: [ 257.212660] NVRM: GPU at 0000:01:00.0 has fallen off the bus.
dans /etc/modprobe.d/alsa-base.conf
Un Imac 24'', c'est sans doute un ordinateur assez répandu, si on juge par les succès de la maison mère, et bien pourtant l'installation de Debian 7 (Beta) s'est révélé loin d'être une partie de plaisir. Évidemment avec 10 d'expérience de Linux, et le fait que je sois Debian Maintainer, j'avais pas mal d'atouts dans les mains et en quelques heures tout fonctionnait nickel. Cependant.
Carte graphique: tout le monde descend du bus
Pour installer le driver nvidia propriétaire, un petit coup de
apt-get install nvidia-kernel-dkms linux-headers-amd64
est suffisant.
On reboot, on se connecte tranquille, et après deux minutes le système se bloque complètement. Après deux heures d'Essais infructueux je remarque dans le /var/log/syslog:
Sep 7 21:50:58 leonard kernel: [ 257.212660] NVRM: GPU at 0000:01:00.0 has fallen off the bus.
Finalement je supprime nvidia-kernel-dkms et linux-headers-amd64, je reboote le système, et là miraculeusement Xorg se utilise le driver nouveau avec accélération 3D Gallium, et plus de plantage.
![]() |
| (NB: Restreint signifie ici que j'utilise Gnome Classic et n'a rien à voir avec le fonctionnement de la carte) |
Carte Son: mbp3 pour jouer des mp3
En branchant mes baffles sur la sortie, je me rend compte tout d'un coup que le système utilise le haut parleur interne pour au lieu de ma luxueuse HiFi Sony. Après avoir incriminé à tort PulseAudio pendant une bonne demi heure, je me rends compte que le coupable est le module snd-hda-intel.
Celui ci a besoin de l'entrée
options snd-hda-intel model=mbp3
dans /etc/modprobe.d/alsa-base.conf
pour fonctionner correctement (source)
Clavier: Une carte pourrie pour nous sortir de là
Pas au bout de mes peines je me rends compte que les touches ^ (accent circonflexe) et '<' '>' sont inversées sur mon clavier mac allemand. Apparemment il s'agit d'un bug sur les claviers apple, qui n'affichent pas les codes qu'ils prétendent envoyer.
Il faut donc corriger le problème en ajoutant:
XKBMODEL="pc105"
XKBLAYOUT="de"
XKBVARIANT="mac"
XKBOPTIONS="lv3:rwin_switch,apple:badmap"
dans /etc/default/keyboard
Conclusion: je fais le boulot d'Apple, Dell, et Toshiba
Les trois bugs mentionnés plus hauts ne me seraient jamais arrivés sur un portable acheté à la Fnac au rayon PC ou Apple.
Pourquoi ? Tout simplement pour n'importe quel PC de marque, le constructeur se charge de préinstaller Windows avec les meilleurs drivers, et se charge à cette occasion de masquer les défauts de ses propres produits via une couche de plâtre logiciel.
En installant vous même Linux ou un autre OS non préinstallé c'est vous qui effectuez ce travail.
Sur un serveur le problème est quasi inexistant car vous avez seulement besoin d'un driver pour votre contrôleur de disque et pour la carte réseau, le plus souvent maintenu directement par le constructeur (Intel, Broadcom) pour Linux et FreeBSD dans les sources du noyau.
Pour un portable vous avez en plus besoin de suspend to disk, suspend to RAM, bluetooth, wifi, accélération 3D, carte son, lecteur de carte Smart Media, touches de fonction Volume/Luminosité et maintenant écran tactile, carte graphiques hybride.
Update: ajout de liens vers les contributions Intel/Broadcom à Linux & FreeBSD
Sur un serveur le problème est quasi inexistant car vous avez seulement besoin d'un driver pour votre contrôleur de disque et pour la carte réseau, le plus souvent maintenu directement par le constructeur (Intel, Broadcom) pour Linux et FreeBSD dans les sources du noyau.
Pour un portable vous avez en plus besoin de suspend to disk, suspend to RAM, bluetooth, wifi, accélération 3D, carte son, lecteur de carte Smart Media, touches de fonction Volume/Luminosité et maintenant écran tactile, carte graphiques hybride.
Update: ajout de liens vers les contributions Intel/Broadcom à Linux & FreeBSD
Thursday, August 23, 2012
Gnome3: parfait pour un netbook
Voici un petit retour d'expérience sur Gnome3, installé sur un netbook depuis une semaine. Le Netbook en question est un modèle assez peu courant (un Intel Classmate, destiné au marché de l'éducation) mais utilise des composants très standards ( proc Atom N450, Chipset graphique Intel, Wifi Realtek .. )
Prise en main et support du hardware
J'ai installé Debian 7.0 (Wheezy) en version Beta, en bootant à partir du réseau. Les images iso fournies par Debian sont aussi utilisables comme image USB, il suffit de les copier bit a bit sur une clé USBAprès le premier boot, tout fonctionne (Suspend to Ram, Ethernet, Webcam, son, accélération 3D) sauf la carte wifi.
La carte réseau du netbook est le modèle suivant ( sortie de la commande lspci)
07:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8191SEvB Wireless LAN Controller (rev 10)
Subsystem: Device 1a32:0308
Il suffit d'installer le firmware depuis le catalogue non-free:
apt-get install firmware-realtek
et la carte réseau est reconnue.
Gnome3 est l’environnement par défaut de bureau de Debian, et donc relativement bien intégré au reste du système.
Gnome 3 et Netbook: un mariage réussi
Tout d'abord pour ceux qui s'inquiéteraient des performance d'un environnement de bureau complet par rapport à un simple gestionnaire de fenêtre, je trouve le temps de boot du netbook tout a fait raisonnable environ 35 secondes jusqu'à l'affichage du navigateur web. NetBSD avec XFCE installé sur une autre partition mets quand à lui plus de 45 secondes à démarrer (et ne supporte ni wifi, ni suspend to RAM, ni accélération 3D)La première fois que j'avais installé Gnome3 dans une machine virtuelle, je n'avais pour ainsi dire rien compris au paradigme de Gnome3 et j'avais plutôt été dérouté. Maintenant que j'ai compris le Paradigme "Laissons plus de place aux applications", et après avoir adoré WebOS l'OS de Palm qui ressemble en de nombreux points à Gnome3, je trouve Gnome3 très pratique.
Ce qui m'a tout d'abord marqué dans l'utilisation de Gnome3 c'est l'utilisation judicieuse de la place dans un écran réduit. 1024x600 cela vous laisse en effet pas grand chose et autant bien en tirer parti.
Tout d'abord Gnome3 se contente d'une fine barre de statut par défaut: pas de barre des taches remplies d’icônes illisibles, ni de menu démarrer rempli de programmes mal catégorisés comme dans Gnome2 ou Windows XP.
Ceci plus laisse de place pour les applications en verticale, encore plus quand on utilise Web, le navigateur livré avec Gnome3.
Regardons la même page Youtube avec Firefox et avec Web.
![]() |
| Contrairement À Firefox, Web affiche la barre de contrôle video sans avoir à scroller. |
Gnome3 ne dispose pas de bouton réduire, ou maximiser pour la bonne raison que tout est en plein écran par défaut. Encore un choix judicieux pour un Netbook.
Dans le cas ou deux fenêtres auraient besoin d’être ouvertes simultanément, Gnome3, comme Unity, dispose d'un mode comparaison. Il suffit de "tirer" la barre de titre d'une fenêtre via un drag and drop sur le côté pour que cette fenêtre se réduise de moitié et se colle au bord de l'écran. Plus besoin de manipulations pesantes du coin inférieur droit de la fenêtre comme sous Gnome2, Mac ou Windows pour maximiser la place disponible.
Pour lancer un programme, changer de programme, rechercher un fichier ou sur le web, tout se fait à partir de la vue Activité, qu'on active en appuyant sur la touche Windows, ou Alt F1, ou en pointant le bord supérieur gauche de l'écran.
Depuis la vue Activité je peux ainsi lancer par exemple Virtualbox ou Audacity simplement en tapant "Auda" voire "Au" même sans avoir le focus. Ceci se révèle à l'usage bien plus pratique que de chercher si VirtualBox est dans le menu "Système" ou "Accessoires" comme dans Gnome2. Au fait pourquoi dans Accessoires ? Aucune idée.
![]() |
| Trois caractères à taper + Entrée et voila notre application démarrée |
Depuis la vue activité on peut aussi insérer du texte, qui sera directement recherché sur Google ou Wikipedia. Car après tout qu'est ce qu'un Netbook si ce n'est une fine couche de software et une fine couche de hardware permettant de lancer le vrai OS: le navigateur Web ?
Gnome3 ne convient peut être pas à tous les cas d'usage, sur mon PC de bureau je suis resté à Gnome2, étant donné que j'ai deux écrans de 22 pouces, le besoin de place se fait pour l'instant moins ressentir, et que j'utilise sur ce dernier un workflow professionel spécifique avec 4 bureaux virtuels, 4 Terminaux ouverts en permanence, Firefox et une multitude d'extensions.
Tuesday, August 14, 2012
Copier la partition système d'une machine à une autre en préservant les id/gid
De façon générale pour copier la partition racine d'un disque à un autre, par exemple depuis un live CD, on peut utiliser la commande suivante:
cd /OLD
L'option de tar --numeric-owner est ici capitale pour que chaque utilisateur retrouve bien ses fichiers à l'arrivée. Si votre système de fichier /OLD contient un fichier /OLD/postgresql (uid 1000) et que votre live CD contient l'utilisateur demo aussi avec un uid de 1000, sans cette option, tar recréera /NEW/postgresql en l'affectant à l'utilisateur demo ...
GNU Tar et le tar de libarchive (utilisé par exemple sur FreeBSD) possèdent cette option.
cd /OLD
tar --numeric-owner -cpf - . | (cd /NEW && tar -xpf - )
L'option de tar --numeric-owner est ici capitale pour que chaque utilisateur retrouve bien ses fichiers à l'arrivée. Si votre système de fichier /OLD contient un fichier /OLD/postgresql (uid 1000) et que votre live CD contient l'utilisateur demo aussi avec un uid de 1000, sans cette option, tar recréera /NEW/postgresql en l'affectant à l'utilisateur demo ...
GNU Tar et le tar de libarchive (utilisé par exemple sur FreeBSD) possèdent cette option.
Saturday, July 28, 2012
Convertir un fichier video pour l'utiliser dans un logiciel VJ (Resolume,Veejay)
Il semble que le format MJPEG soit le format préféré des logiciels de VJ'ing. FFmpeg, le couteau suisse de la video sous Unix, supporte naturellement ce format.
Pour convertir une video dans un format supporté en entrée par ffmpeg (c'est à dire: tous) en un mjpeg il suffira d'utiliser la commande suivante:
ffmpeg -i input.nimp -vcodec mjpeg -qscale 1 -an output.avi
ici -an signifie d'ignorer l'audio, et -qscale 1 signifie qualité à l'identique
encoder : Lavf52.111.0
Duration: 00:00:10.28, start: 0.000000, bitrate: 9263 kb/s
Stream #0.0: Video: mjpeg, yuvj420p, 720x576 [PAR 16:15 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
On a bien un fichier mjpeg.
Pour convertir une video dans un format supporté en entrée par ffmpeg (c'est à dire: tous) en un mjpeg il suffira d'utiliser la commande suivante:
ffmpeg -i input.nimp
ici -an signifie d'ignorer l'audio, et -qscale 1 signifie qualité à l'identique
ffmpeg -i output.avi 2>&1 | tail -5
Metadata:encoder : Lavf52.111.0
Duration: 00:00:10.28, start: 0.000000, bitrate: 9263 kb/s
Stream #0.0: Video: mjpeg, yuvj420p, 720x576 [PAR 16:15 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
On a bien un fichier mjpeg.
Subscribe to:
Posts (Atom)








