Catégories
Blog Open-source Systeme

Logiciels Mac OS X pour twitter…

Un rapide inventaire des applications pour twitter (bientôt dans le Petit Robert) depuis son Mac.

Twitterrific

La Rolls-Royce des clients Twitter pour Mac OS X, malheureusement ce logiciel n’est pas libre et est payant (environ 15$).

C’est de loin le plus complet des clients, la liste des fonctions est impressionnante et en constante amélioration.

twitterrific3.jpg

Pwytter

Un client libre, compatible Mac, Linux et Windows basée sur le langage Python. C’est mon client du moment !

pwytter-05-mac.png

TWidget

Ce client se présente sous la forme d’un Widget. Je ne l’utilise plus, je trouve embêtant de passer dans la fenêtre Widget pour voir/poster des messages.

front.jpg

Twitgit

Encore un Widget Mac avec les mêmes fonctions que TWidget.

Twitgit08.png

Si vous en connaissez d’autres je suis preneur…

Catégories
Open-source Reseau Systeme

Limiter la bande passante avec Mac OS X

Attention:  Apple a choisi de migrer de IPFW vers PF à partir de OS X Lion (ce qui en soit un un bon choix…).

La syntaxe est complètement différente. Pour effectuer une limite de bande passante avec PF il faut passer par un module externe (à voir si il est installé par défaut sous OS X Lion) nommé altq.

Je conseille la lecture des billets suivants:
– De IPFW à PF (sur ce blog)
– Packet Queueing and Prioritization
– Bandwidth Limiting with pf and ALTQ

Catégories
Developpement Open-source

Tutorial jQuery

Jquery logojQuery est une bibliothèque javascript open-source et cross-browser qui permet de traverser et manipuler très facilement l’arbre DOM de vos pages web à l’aide d’une syntaxe fortement similaire à celle d’XPath (qui est la syntaxe de manipulation d’arbre XML). jQuery vous permet par exemple de changer/ajouter une classe CSS, créer des animations, modifier des attributs, etc. mais également de gérer les événements javascript ainsi que de faire des requetes AJAX le plus simplement du monde.

Pour développer jQuery, il suffit de connaitre un seul objet référencé par la variable « $ ». Cet objet est en fait une fonction javascript qui est le point d’entrée de tout le framework, et dont le retour est l’object « $ » lui-meme (dont le contexte dépend de la fonction appelée) ce qui permet d’enchainer facilement et rapidement des actions (comme nous le verrons dans les exemples qui suivent).

Maintenant que les présentations sont faites, passons sans attendre aux exemples !

Tout d’abord, jQuery peut etre téléchargé ici sous forme d’un fichier .js normal ou compressé : http://jquery.com.Une fois téléchargé, il suffit de l’insérer entre les balises <head> et </head> de vos pages html.

Exemple : <script type= »text/javascript » src= »jquery-1.2.2.min.js »/>Quelques bases sur la sélection…

  • $(« p »);
    Cet appel retourne tous les éléments P (paragraphes) de votre document : on a rarement fait plus simple.
  • $(« .tata »);
    Cet appel retourne tous les éléments de votre document qui ont la classe CSS « tata ».
  • $(« #toto »);
    Cet appel retourne l’élément de votre document, s’il existe, dont l’attribut ID est « toto ».
  • $(« #titi > span »);
    Cet appel retourne tous les éléments SPAN contenus dans l’élément dont l’identifiant est « titi ». On pourrait écrire cet appel de cette façon également : $(« span », $(« #titi »));
  • $(« table#tutu > tr:even »);
    Cet appel retourne tous les éléments TR pairs (pour les lignes impaires remplacer « even » par « odd ») contenus dans l’élément TABLE dont l’identifiant est « tutu » (à noter la grande originalité des noms que je donne a mes identifiants…). Cet appel peut etre extremement utile pour appliquer une couleur de fond a toutes les lignes paires par exemple.

A partir de la, vous pouvez appliquer toutes les fonctions de jQuery que vous voulez. En voici quelques exemples concrets (cliquez ici pour télécharger les exemples d’appels jQuery du tutorial et les jouer chez vous) !

  • $(« p »).addClass(« bluebg »);
    Cet appel va chercher tous les éléments P de votre document et leur ajouter la classe CSS nommée « bluebg » si ils ne la possèdent pas déjà.
  • $(« p »).removeClass(« bluebg »);
    Cet appel retire la classe « bluebg » des éléments P du document.
  • $(« p »).toggleClass(« bluebg »);
    Cet appel va alterner les fonctions « addClass » et « removeClass » vues précédemment.
  • $(« p:odd »).css(« border », « 5px solid black »);
    Cet appel va ajouter une bordure noire de 5px d’épaisseur a tous les éléments P impairs.
  • $(« a[href=http://www.google.fr] »).css(« font-weight », « bold »).css(« color », « red »).css(« background-color », « green »);
    Cet appel va transformer tous les liens pointant vers le site http://www.google.fr, comme celui-ci : google.fr c’est par ici !
  • $(« p#testAppend > span »).append(« Hello World ! »);
    Cet appel va ajouter du texte a la balise SPAN contenu dans l’élément P dont l’identifiant est « testAppend ».

Quelques effets sympas maintenant !

  • $(« #testAnim »).show(« slow »);
  • $(« #testAnim »).hide(« normal »);
  • $(« #testAnim »).slideDown(500);
  • $(« #testAnim »).slideUp(200);
  • $(« #testAnim »).toggle();
  • $(« #testAnim »).fadeIn();
  • $(« #testAnim »).fadeOut();

Si jamais vous trouvez que la bibliothèque jQuery propose peu d’animation, sachez qu’il est possible de rajouter des plugins ! Voici une petite liste de plugins très intéressants :

  • Interface est certainement le plugin le plus connu : il ajoute énormément d’animations a jQuery. Allez voir la page d’exemples ici
  • ThickBox permet de faire des « popup » html (pour faire des galeries d’images par exemple)
  • UI Datepicker permet de créer des calendriers très simplement
  • etc.

Voila, c’est fini pour cette petite introduction a jQuery. Voici quelques liens qui vous seront certainement utiles :

Bon développement !NDNicolargo: Merci à Ritchi, maître-es développeur pour ce billet !

Catégories
Open-source

Utilisation de FFMpeg sous Mac OS X

FFMpeg est un logiciel libre (sous licence LGPL) permettant l’encodage et le transcodage de fichiers multimédia audio et vidéo. Bien connu sous Linux, FFMpeg est également disponible sous Mac OS X. Nous allons dans ce billet détailler l’installation de FFMpeg sur l’OS de la pomme et donner quelques exemples d’utilisations.

ffmpegmac.jpg

Compilation et installation

Nous allons d’abord récupérer la dernière version (snapshot) sur le site officiel, puis décompresser, compiler puis installer:

# wget http://ffmpeg.mplayerhq.hu/ffmpeg-export-snapshot.tar.bz2
# bzip2 -d ffmpeg-export-snapshot.tar.bz
# tar xvf ffmpeg-export-snapshot.tar
# cd ffmpeg-export-snapshot
# ./configure —disable-mmx
# make
# sudo make install

Remarque: si vous souhaitez encoder des fichiers en utilisant le codec MP3, il faut le récupérer et le compiler en plus.

Exemples d’utilisation

Une fois installée, le logiciel (ffmpeg) peut être lancé depuis la ligne de commande.

La commande suivante permet d’afficher les informations sur le fichier video passé en paramètre (-i).

# ffmpeg -i source.avi
FFmpeg version SVN-r11531, Copyright © 2000-2008 Fabrice Bellard, et al. configuration: —disable-mmx
libavutil version: 49.6.0
libavcodec version: 51.49.0
libavformat version: 52.4.0
libavdevice version: 52.0.0
built on Jan 15 2008 16:14:51, gcc: 4.0.1 (Apple Inc. build 5465)
Input #0, avi, from ‘source.avi’:
Duration: 00:18:24.3, start: 0.000000, bitrate: 2077 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 704×576 [PAR 16:11 DAR 16:9], 24.00 tb®
Stream #0.1: Audio: mp2, 48000 Hz, stereo, 64 kb/s

Comment lire le résultat de cette commande ?, c’est simple, le fichier source.avi utilise donc un conteneur de type AVI (on peut aussi obtenir des informations sur le conteneur grâce à la commande # file source.avi). Le codec video est de type MPEG-4. Le codec audio est MPEG-2.

Pour avoir la liste des codecs disponibles sur votre machine, on peut utiliser la commande:

# ffmpeg -formats

Exemples de transcodage (fichier TOD Mpeg2 HD vers un conteneur AVI):

# ffmpeg -i source.tod -s 4cif -aspect 16:9 -threads 2 -b 2000kb -r 24 cible.avi

Transcodage depuis un fichier AVI vers un fichier FLV (vidéo Flash)

# ffmpeg -i source.avi -ar 22050 -b 300k cible.flv

Transcodage d’un fichier AVI en MPEG:

# ffmpeg -i source.avi -target pal-dvd -aspect 16:9 cible.avi

Si vous chercher d’autres exemples d’utilisation, allez jeter un coups d’oeil sur ce blog.

Enfin, pour les allergiques à la ligne de commande, il existe l’Interface graphique FFMpegX. Ce shareware (il est donc payant… 15 $US) regroupe de nombreux utilitaires Unix afin de convertir simplement des vidéos d’un format à l’autre.

Catégories
Open-source

Actualité open-source de la semaine

L’actualité open-source de la semaine dont je n’ai pas parlé sur le blog:

  • Paint.NET, le logiciel de retouche photo pour Windows passe en version 3.22.
  • SimCity, le jeu, libère son code source.
  • BSD FreeBSD a aussi sa distribution orientée desktop: DesktopBSD.
  • Vous êtes sous MacOS X, vous manipulez des images médicales de type DICOM, vous êtes pauvre (ou radin), vous aimez le libre ? OsiriX est fait pour vous.
  • Une entreprise libre (MySQL) vient d’être rachetée 1 Miliard de $ par Sun Microsystem. Son modèle restera le même, distribuer sous licence GPL ces produits et les faire payer aux entreprises qui veulent les intégrer dans un produit propriétaire.
  • Les logiciels libres connaissent une forte croissance en France (youpi !)

J’oublie quelque chose ?

Catégories
Open-source Reseau Uncategorized Web

Installation d’une carte Digium avec Asterisk

Attention: « DAHDI is the new name for ‘Zaptel’ as of May 19th 2008 »

/etc/zaptel.conf devient /etc/dahdi/system.conf

/etc/asterisk/zapata.conf devient /etc/asterisk/chan_dahdi.conf

Les cartes Digium sont indissociables d’Asterisk. Elles permettent la gestion de liaisons téléphoniques de type E1/T1, ISDN ou PSTN.

Nous allons dans ce billet détailler l’installation d’une carte Digium TE220 (compatible E1/T1) sous Linux.

Installation de la carte

Une fois la carte déballée, il faut vérifier que le jumper de sélection entre les normes T1 (US) et E1 (Europe) est bien positionné. Pour une liaison RNIS Européenne (E1), il faut que les jumpers soient fermés.

Une fois la carte installée physiquement dans le serveur (slot PCI-X), nous allons, dans un premier temps, vérifier qu’elle est bien identifiée par Linux:

# dmesg

Found a Wildcard: Wildcard TE220 (4th Gen)

# lspci -n

04:08.0 0780: d161:0220 (rev 02)

On récupère sur le site de Digium la dernière version des librairies PRI:

# wget http://downloads.digium.com/pub/telephony/libpri/libpri-1.4.5.tar.gz
PS: Remplacer 1.4.5 par la dernière version disponible.

puis on les installe:

# tar zxvf libpri-1.4.5.tar.gz
# cd libpri-1.4.5
# make
# sudo make install

On enchaîne avec le téléchargement des drivers Zaptel:

# wget http://downloads.digium.com/pub/telephony/zaptel/zaptel-1.4.11.tar.gz
PS: Remplacer 1.4.11 par la dernière version disponible.

et leur installation:

# tar zxvf zaptel-1.4.11.tar.gz
# cd zaptel-1.4.11
# ./install_prereq test
=> On vérifie que les pre-requis sont OK (sinon on lance ./install_prereq install)
# ./configure
# make
# make install
# make config

La carte TE200 partage les mêmes drivers que les TE400 (module wct4xxp). Afin d’optimiser le démarrage des modules, j’ai également modifié le fichier /etc/sysconfig/zaptel en suppriment toutes les occurrences MODULES et en laissant la ligne suivante:

MODULES= »$MODULES wct4xxp »

Nous pouvons redémarrer le serveur pour vérifier que le module est bien lancé au démarrage. Pour vérifier:

# lsmod

wct4xxp               400512  0
zaptel                190852  3 wct4xxp

Attention: il faut installer libpri AVANT d’installer Asterisk sinon le driver ne sera pas généré. Si vous avez déjà Asterisk installé sur votre système, il faudra le réinstaller….

Configuration de la carte

Nous allons d’abord définir les caractéristiques de la carte dans le fichier /etc/asterisk/zapata.conf. Pour une liaison E1 PRI (standard en Europe), vous pouvez utiliser la configuration suivante (voir ici http://docs.tzafrir.org.il/dahdi-tools pour une liste complète des paramètres):

group=1
signalling=pri_cpe
switchtype=euroisdn
context=incoming
channel=>1-15,17-31

Puis les caractéristiques de la liaison E1/T1 utilisée. Pour cela, il faut éditer le fichier /etc/zaptel.conf:

span=1,1,0,ccs,hdb3
bchan=1-15,17-31
dchan=16

Initialisation de la carte

Si vous n’avez pas rebooter votre serveur depuis l’installation des drivers, il faut commencer par charger le driver Zaptel dans le noyau Linux:

# modprobe wct4xxp

Ensuite, on doit lancer la configuration (une fois la liaison E1 connectée sur la carte):

# ztcfg -vv

Vérification de l’état des liaisons E1

Le plus simple est d’utiliser l’utilitaire zttool qui affiche l’état des liaisons:

# zttool

Il est également possible de vérifier si les liaisons sont bien montées en lançant Asterisk en mode debug:

# asterisk -vvvr

Et voilou, et à bientôt pour voir comment utiliser ces liaisons avec Asterisk…

Catégories
Open-source Planet-libre Reseau

IPerf: des exemples…

Nous commençons l’année 2008 avec un billet regroupant des exemples d’utilisation d’IPerf, l’outil en ligne de commande indispensable pour tester un réseau informatique.

Pour rappel, IPerf est un logiciel client/serveur, il faut donc deux machines positionner aux deux extremités du réseau à tester pour fonctionner (pour l’installation et une rapide introduction, vous pouvez consulter ce billet).

Dans les exemples ci-dessous, nous allons considérer que nous allons utiliser deux machines nommées C (avec comme adresse IP: IPC) et S (avec comme adresse IP: IPS).

Exemple pour mesurer la bande passante disponible entre S et C

Attention, cette méthode mesure la bande passante au moment du test. Ce dernier dure par défaut 10 secondes et utilise le protocole TCP sur le port 5001.

Sur la machine S: # iperf -s

Sur la machine C: # iperf -c IPS

Résultat (à lire sur la machine S):

————————————————————

Server listening on TCP port 5001TCP window size: 56.0 KByte (default)

————————————————————

[ 6] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 54334

[ 6] 0.0-10.0 sec 112 MBytes 93.7 Mbits/sec

Exemple pour générer un débit réseau entre C et S

On génère ici un flux en utilisant le protocole UDP et en fixant la bande passante à 1 Megabits par seconde. Le test dure par défaut 10 secondes.

Il est possible de choisir l’unité de mesure de débit avec l’option -b et en collant les lettres suivantes aux débits:

  • b: bits par seconde
  • k: kilobits par seconde
  • m: megabits par seconde
  • g: gigabits parseconde

pour un débit en octets par seconde, il faut utiliser ces lettres en majuscule)

Sur la machine S: # iperf -s -u

Sur la machine C: # iperf -c IPS -u -b 4m

Résultat (à lire sur la machine S):

————————————————————

Server listening on UDP port 5001

Receiving 1470 byte datagrams

UDP buffer size: 41.1 KByte (default)

————————————————————

[ 5] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 49617

[ 5] 0.0-10.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ 3403 (0%)


Exemple pour générer un débit réseau entre C et S pendant 10 heures

Il peut être utile de générer un flux réseau plus long pour tester par exemple une liaison Internet pendant les heures d’utilisation. Nous allons donc utiliser l’option -t pour fixer la durée du test précédent à 10 heures (10*3600=36000 secondes).

Sur la machine S: # iperf -s -u

Sur la machine C: # iperf -c IPS -u -b 4m -t 36000

Résultat (à lire sur la machine S):

————————————————————

Server listening on UDP port 5001

Receiving 1470 byte datagrams

UDP buffer size: 41.1 KByte (default)

————————————————————

[ 5] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 49617

[ 5] 0.0-36000.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ 999403 (0%)

Il est également possible d’ajouter l’option -i 3600 pour avoir un rapport intermédiaire toutes les heures (1*3600=3600 secondes).

Sur la machine S: # iperf -s -u

Sur la machine C: # iperf -c IPS -u -b 4m -t 3600

Résultat (à lire sur la machine S):

————————————————————

Server listening on UDP port 5001

Receiving 1470 byte datagrams

UDP buffer size: 41.1 KByte (default)

————————————————————

[ 5] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 49617

[ 5] 0.0-3600.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ – (0%)

[ 5] 3600.0-7200.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ – (0%)…

[ 5] 0.0-36000.0 sec 4.77 MBytes 4.00 Mbits/sec 0.066 ms 0/ 999403 (0%)

Exemple pour générer 2 flux réseau entre S et C

Il est parfois utile de générer plusieurs flux UDP simultanément pour simuler une application. IPerf permet cela grâce à l’option -P et en donnant le nombre de flux à générer. L’exemple suivant génère 4 flux TCP entre S et C (simulation d’un serveur Web par exemple).

Sur la machine S: # iperf -s

Sur la machine C: # iperf -c IPS -P 4

Résultat (à lire sur la machine S):

————————————————————

Server listening on TCP port 5001

TCP window size: 56.0 KByte (default)

————————————————————

[ 6] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 64978

[ 7] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 64979

[ 8] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 64980

[ 9] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 64981

[ 7] 0.0-10.0 sec 28.0 MBytes 23.5 Mbits/sec
[ 8] 0.0-10.0 sec 28.0 MBytes 23.4 Mbits/sec
[ 9] 0.0-10.0 sec 28.1 MBytes 23.5 Mbits/sec
[ 6] 0.0-10.0 sec 28.1 MBytes 23.5 Mbits/sec
[SUM] 0.0-10.0 sec 112 MBytes 93.8 Mbits/sec

Exemple pour optimiser une connexion TCP entre S et C

Le protocole TCP, bien que capable pour s’adapter aux réseaux large bande, a été conçu lorsque les débits étaient beaucoup moins important. Les valeurs par défaut des fenêtres TCP (taille des paquets envoyé dans des trames TCP) ne sont pas forcement adapté aux réseaux actuels. IPerf permet de jouer avec la taille de ces fenêtres avec l’option -w. L’exemple suivant génère un flux TCP avec une taille de fenêtre de 130 kilo octets.

Sur la machine S: # iperf -s

Sur la machine C: # iperf -c IPS -w 128k

Résultat (à lire sur la machine S):

————————————————————

Client connecting to 192.168.29.1, TCP port 5001

TCP window size: 128 KByte (WARNING: requested 130 KByte)

————————————————————

[ 3] local 192.168.29.157 port 65066 connected with 192.168.29.1 port 5001

[ 3] 0.0-10.0 sec 112 MBytes 93.5 Mbits/sec

Exemple pour découvrir la taille du MTU entre S et C

Le MTU est la taille maximale du paquet pouvant être transmis sur la couche réseau sans être segmenté. La découverte de cette valeur peut être utile à l’optimisation de votre réseau et des applications qui tourne dessus. IPerf permet d’obtenir cette valeur grâce à l’option -m (à lancer sur le serveur).

Sur la machine S: # iperf -s -m

Sur la machine C: # iperf -c IPS

Résultat (à lire sur la machine S):

————————————————————

Client connecting to 192.168.29.1, TCP port 5001

TCP window size: 56.0 KByte (default)

————————————————————

[ 3] local 192.168.29.157 port 65066 connected with 192.168.29.1 port 5001

[ 3] 0.0-10.0 sec 112 MBytes 93.5 Mbits/sec[ 3] MSS size 1448 bytes (MTU 1500 bytes, ethernet)

Exemple pour tester un flux de type VoIP entre C et S

Les paquets de type voix sur IP on les caractéristiques suivantes: protocole UDp et taille des paquets petites (bien inférieure au MTU). Le meilleur moyen de tester un flux de type VoIP avec IPerf est d’utiliser les options -l (taille du datagram) et -w (taille maximale du buffer recevant les datagras) en fixant une valeur de datagram inférieure à celle du buffer.

Sur la machine S: # iperf -s -u -l 32 -w 128k -i 1

Sur la machine C: # iperf -c IPS -u -b 1m -l 32 -w 128k

Résultat (à lire sur la machine S):

————————————————————

Server listening on UDP port 5001

Receiving 32 byte datagrams

UDP buffer size: 128 KByte

————————————————————

[ 3] local 192.168.29.157 port 5001 connected with 192.168.29.125 port 32778

[ 3] 0.0- 1.0 sec 96.0 KBytes 786 Kbits/sec 0.003 ms 0/ 3 (0%)

[ 3] 1.0- 2.0 sec 128 KBytes 1.05 Mbits/sec 0.008 ms 0/ 4 (0%)

[ 3] 2.0- 3.0 sec 128 KBytes 1.05 Mbits/sec 0.017 ms 0/ 4 (0%)

[ 3] 3.0- 4.0 sec 128 KBytes 1.05 Mbits/sec 0.021 ms 0/ 4 (0%)

[ 3] 4.0- 5.0 sec 128 KBytes 1.05 Mbits/sec 0.023 ms 0/ 4 (0%)

[ 3] 5.0- 6.0 sec 96.0 KBytes 786 Kbits/sec 0.022 ms 0/ 3 (0%)

[ 3] 6.0- 7.0 sec 128 KBytes 1.05 Mbits/sec 0.152 ms 0/ 4 (0%)

[ 3] 7.0- 8.0 sec 128 KBytes 1.05 Mbits/sec 0.142 ms 0/ 4 (0%)

[ 3] 8.0- 9.0 sec 128 KBytes 1.05 Mbits/sec 0.115 ms 0/ 4 (0%)

[ 3] 9.0-10.0 sec 128 KBytes 1.05 Mbits/sec 0.098 ms 0/ 4 (0%)

[ 3] 0.0-10.5 sec 1.25 MBytes 1.00 Mbits/sec 0.116 ms 0/ 40 (0%)

Remarque: bien que Iperf soit disponible sur de nombreuses plate-forme (Linux, BSD, Mac, Windows), l’option -l ne fonctionne pas toujours quand vous utiliser des OS différents entre le client et le serveur.

Exemple pour utiliser IPerf sur un port différent

Par défaut, Iperf utilise le numéro de port 5001 (TCP et/ou UDP). Selon votre configuration (notamment au niveau des ACL des routeurs/firewalls), il peut être utile d’utiliser un autre port, pour cela, il faut passer par l’option -p. L’exemple suivant permet de générer un flux réseau TCP entre S et C sur le port 80 (port Web standard).

Sur la machine S: # iperf -s -p 80
Sur la machine C: # iperf -c IPS -p 80

Résultat (à lire sur la machine S):

————————————————————

Server listening on TCP port 80

TCP window size: 56.0 KByte (default)

————————————————————

[ 6] local 192.168.29.1 port 5001 connected with 192.168.29.157 port 54334

[ 6] 0.0-10.0 sec 112 MBytes 93.7 Mbits/sec


Voici donc quelques exemple d’utilisation d’Iperf, si vous en avez d’autres, les commentaires sont ouverts !

Catégories
Open-source Systeme

Emulateur Windows sous Mac OS X

Je pense qu’il vous ai déjà arrivé de devoir utiliser un logiciel qui ne tournait pas sur votre « operating system ». C’est ce qui m’est arrivé ce matin lorsque que j’ai voulu administrer un boîtier Wifi depuis mon Mac. Le constructeur (le fourbe) ne fournissait qu’un pauvre logiciel sous Windows.

Je me suis donc lancé à la recherche d’un émulateur Windows pour Mac OS X. Encore une fois le monde du libre m’a apporté la solution sur un plateau: Wine !

Compilation de Wine

Il faut d’abord se rendre sur la page suivante pour récupérer les derniers sources disponibles (format tar.bz2).

Une fois les sources téléchargées sur votre disque, il faut lancer la compilation (elle nécessite l’installation préalable de Xcode et du pack X11 disponibles sur votre DVD d’installation de Mac OS X).

# ./configure
# make depend && make
# sudo make install

Exécution d’un programme Windows sous Mac OS X avec Wine

Imaginons que l’on veuille lancer le programme toto.exe (binaire Windows). Il suffit de taper la ligne de commande suivante:

# wine toto.exe

 

Et le programme devrait se lancer automatiquement ! C’est pas beau ça !

Catégories
Open-source

Top 10 des applications open-source pour Mac OS X

Voici une sélection de 10 logiciels open-source que je trouve indispensables pour tout utilisateur de Mac OS X

.1 Vienna: C’est LE lecteur de flux RSS open-source sur l’OS Apple. Il permet la lecture des billets des blogs auquel vous êtes abonnez. Un gain de temps de de convivialité pour tout surfer ! (<autopromo>pour vous abonnez au flux RSS du blog de Nicolargo, c’est par ici </autopromo>)

2. Adium: Fini la multiplication des logiciels de messagerie instantané (IM), MSN, Google Talk, ICQ on trouvé leur maître ! Adium permet à partir d’une même interface de se connecter simultanément à plusieurs comptes d’IM. L’intégration à Mac OS X est très bien faîte, bref un must !

3. Xmeeting: Déjà présenté dans ce billet, Xmeeting est un client H.323 complet permettant de se connecter à un réseau H.323 existant. Il est compatible avec les dernières normes sur le sujet (H.264 / gatekeeper, STUN…).

4. Filezilla: Si vous avez besoin d’un client FTP simple, rapide et stable, ne chercher pas plus loin. C’est pour moi le seul et l’unique sur Mac OS X (mais aussi sous Windows et Linux…).

5. MacFUSE et SSHFSSi comme moi vous administrez des machines en utilisant le protocole SSH, le couple MacFuse et SSHFS permet de « monter » un répertoire distant via le protocole SSH et de le voir comme un répertoire local.

6. Transmission : Pour les échanges PeerToPeer, le protocole bittorrent est devenu un standard de fait. Transmission est un client multi plate-forme disponible sous Mac OS X et qui fait exactement ce que l’on attend de lui !

7. VLC: Si vous suivez ce blog, vous savez tout le bien que je pense de ce logiciel de lecture de fichiers multimedia (audio / video). Il permet également de streamer des flux sur votre réseau local.

8. Wireshark: Ethereal est mort, vive Wireshark ! Ce logiciel permet de capturer et d’analyser tout flux réseau transitant par une interface (Ethernet, Wifi…). Pour les débutant, j’ai écris un tutorial sur le sujet.

9. Handbrake: Ce logiciel permet d’encoder un DVD dans un format compressé (DiVX, MPEG4 ou autres…). Il peut utiliser FFMpeg et ses nombreux formats d’encodage audio et video.

10. Seneti: Si vous n’avez jamais essayé de transférer simplement vos MP3 de votre IPod vers votre Mac, vous ne pouvez pas comprendre le bonheur de disposer d’un logiciel comme Seneti !

Voyer vous d’autres logiciels Open-Source qui peuvent entrer dans ce classement ?

Catégories
Open-source

Streaming avec VLC et VLM

Suite des articles sur VideoLAN, nous allons aujourd’hui nous pencher sur l’interface VLM du client VideoLAN. Cette interface permet de créer un serveur pouvant lancer des streaming audio et video soit à la demande, soit en fonction d’une plage horaire.

Voici un schéma fonctionnel du système:

En entrée, on peut donc avoir:

En sortie, VLC va générer un streaming IP pouvant se baser sur les protocoles suivants:

  • HTTP (c’est du TCP, donc adapté pour des streaming de basses qualités sur des réseaux sans qualité de service. ex: Internet)
  • MMSH (MMS sur HTTP, même remarque que pour le HTTP. Le principal avantage (le seul ?) de ce protocole est qu’il peut être lu par des clients Windows Media Player)
  • UDP (permet un diffusion simple et sans overhead d’un streaming. Par contre, il n’y aucun contrôle… en cas de problème sur le réseau, les clients recevrons une vidéo dégradée ou plus de vidéo du tout)
  • RTP (c’est un bon compromis. bassée sur UDP il permet d’avoir des statistiques sur le flux. Les prochaines versions de VideoLAN devraient inclure la prise en compte du protocole RTCP permettant de modifier dynamiquement le flux en fonction des contraintes du réseau)

Il est bien sûr possible et conseiller d’encoder ou de ré-encoder l’entrée selon vos besoins (MPEG-1, MPEG-2, MPEG-4, H.264…).
Lancement de VLC avec l’interface VLM
L’interface VLM peut être administrée par ligne de commande (Telnet) ou interface Web. Nous allons étudier dans ce billet la première solution, beaucoup plus souple et simple que la seconde.
La première chose à faire est de lancer VLC avec l’interface Telnet:

# vlc –intf telnet
VLC media player 0.8.6c Janus
[00000287] main interface: creating VLM
[00000287] telnet interface: using the VLM interface plugin…
[00000287] telnet interface: telnet interface started on interface 4212

Comme on peut le voir, le serveur se lance en écoute sur le port TCP/4212
Administration de VLM via telnet
Nous allons donc ouvrir une session telnet sur le port 4212 (on part sur le principe ou l’on administre la machine en local, si ce n’est pas le cas, il faudra que vous remplaciez l’adresse 127.0.0.1 par l’adresse IP de votre machine).

# telnet localhost 4212
telnet 127.0.0.1 4212
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.
Password: admin
Welcome, Master>

Nous voilà donc dans le shell de VLM. La liste des commandes disponibles peut être affichée grâce à la commande help.
Reste à voir command créer un streaming (media dans la nomenclature VLC).
Création d’un streaming à partir d’un fichier DivX
Dans ce premier exemple nous allons créer un streaming à partir d’un fichier source Divx. Ce streaming sera démarré sur action de l’administrateur (c’est à dire vous…).
Nous allons donc procéder à la création du media que nous allons nommer mondivx.

> new mondivx broadcast enabled
> setup mondivx input « Star_Wars_3.avi »
> setup mondivx output #transcode{vcodec=mp4v,vb=768,scale=1}:duplicate{dst=std{access=udp,mux=ts,dst=192.168.0.100:1234}}

La première ligne permet de créer et d’activer le media mondivx.La seconde configure la source (ici notre fichier DivX).La troisième configure le streaming. Vous pouvez faire un copier/coller de ceux qui est affiché par VideoLAN. Dans mon exemple, je diffuse en UDP vers l’adresse 192.168.0.100 (port UDP/1234).
La commande suivant permet de visualiser la liste des médias créés.

> showshow media : ( 1 broadcast – 0 vod ) mondivx type : broadcast enabled : yes instances schedule

On voit donc que le serveur VLM à 1 média de type broadcast qui se nomme mondivx.
Pour afficher le détail du média, on utilise la commande:

> show mondivxshow fileunicast type : broadcast enabled : yes loop : no inputs Star_Wars_3.avi output : #transcode{vcodec=mp4v,vb=768,scale=1}:duplicate{dst=std{access=udp,mux=ts,dst=192.168.29.157:1234}} options instances

Lancement du streaming
C’est très simple:

> control mondivx play

Pour visualiser le streaming, il suffit d’ouvrir VideoLAN (sur la machine 192.168.0.100) et de choisir « Ouvrir un flux réseau » , UDP port 1234.
Pour l’arrêter:

> control mondivx play

Création d’une streaming à partir d’une carte d’acquisition vidéo
Si vous disposé d’une carte d’acquisition vidéo ou d’une WebCam (reconnue par v4l), il suffit de configurer un nouveau media (dans mon cas mon device video est mappé sur /dev/video1).

> new macamera broadcast enabled
> setup macamera input « v4l:// »
> setup macamera option v4l-vdev=/dev/video1> setup macamera option v4l-adev=/dev/dsp> setup macamera option v4l-norm=0> setup macamera option v4l-frequency=-1> setup macamera option v4l-width=640> setup macamera option v4l-height=480> setup macamera output #transcode{vcodec=mp4v,vb=768,scale=1}:duplicate{dst=std{access=udp,mux=ts,dst=192.168.0.100:1234}}

La seule différence avec le media mondivx est la source (camera).
Pour lancer le streaming:

> control macamera play

Pour visualiser le streaming, il suffit d’ouvrir VideoLAN (sur la machine 192.168.0.100) et de choisir « Ouvrir un flux réseau » , UDP port 1234.
Pour l’arrêter:

> control macamera play

Programmer des streamings

Une des fonctions intéressante de VLM est la possibilité d’automatiser le lancement et l’arrêt d’un streaming (media) à des heures données.

Pour cela nous allons définir deux horaires (celui de départ et celui de fin):

> new camera_start schedule enabled
> setup camera_start date 2007/12/31-23:00:00
> new camera_stop schedule enabled
> setup camera_stop date 2007/12/31-23:59:59

Puis l’affecter au media macamera préalablement créé.

> setup camera_start append control macamera play
> setup camera_stop append control macamera stop

Le streaming sera donc automatiquement démarré le 31 décembre 2007 à 23h00 et arrêté le même jour à 23h59.
Voici donc un rapide aperçu des fonctions de VLM. Il est également possible de faire de la VoD (vidéo à la demande). On abordera sûrement ce sujet dans un prochain billet.