Update: Fedora Core 7 est sortie !
Nouvelle version du blog
Comme vous pouvez le voir la migration a mis mois de temps que prévu, c’est beau le Web 2.0.
J’ai quand même essuyé pas mal de plâtre avant d’arriver à ce point (qui n’est surement pas parfait, j’attent vos remarques…). Le principal problème a été la redirection depuis Blogger. En effet dans le tutorial, il parlait de modifier le template pour insérer la redirection Javascript. Il faut avant cela passer en template en mode « standard ». Sinon on ne trouve pas la balise <Blogger>.
Sinon je goûte aux joies de WordPress and Co.
Un grand merci également aux équipes support de mon hébergeur iWeb8.ca.
A bientôt pour des vrais posts 😉
Migration du site, les news…
Désolé de la faible activité du blog ces derniers jours, mais je me concentre sur la migration qui avance à grand pas…
J’ai déjà configuré WordPress notamment en ajoutant des plugins/widgets sympa (je ferais surement un poste sur le sujet.
Je travaille maintenant sur le design. Je me suis fixé sur le théme Mandigo. Voici donc en avant première une bêta version du blog:
Voili a+
Migration de Blogger vers WordPress
La décision est prise je vais me lancer dans la migration de mon blog vers WordPress.
Pourquoi ? Pour deux principales raisons:
1) j’arrive aux limites de paramètrage de Blogger. En effet, il y a peu d’évolution de la plate-forme de blog de Google depuis maintenant quelques temps. Je souhaiterai par exemple avoir une plus grande liberté au niveau du design du site et également utiliser des plugins comme en en touve beaucoup sur WordPress.
2) ma ligne éditoriale (ouha, tout de suite les grands mots…) est clairement recentrée vers l’open-source. Il est donc naturel de me tourner vers un CMS open-source…
Ce que je veux obtenir ? Une migration en douceur.
1) Pas de perte du réferencement actuel. Blogger devra rediriger les Internautes vers mon nouveau blog. Même si ils viennent d’un moteur de recherche. Je vais pour cela me baser sur le post de Tom Shermann.
2) Une redirection transparent entre l’adresse actuelle du blog et l’adresse cible.
Ce qui va changer:
1) Dans un premier temps, le design du site. je suis actuellement à la recherche de thème sympa pour WordPress, si vous avez des liens je suis preneur… Ma « shortlist » actuelle:
- http://wpthemepark.com/themes/terrafirma/
- http://www.wpdesigner.com/2007/01/17/peaceful-rush-wordpress-theme/
- http://themes.wordpress.net/columns/2-columns/1378/mandigo-14/
- http://ifelse.co.uk/flex
2) Surement une baisse du traffic (actuellement 1400 visiteurs par mois), le temps que les moteurs de recherche indexent mon nouveau blog…
3) Plein de nouveautés, notamment une gestion plus cohérente des tags et des liens.
Comment ?
Je vais d’abord préparer le terrain:
1) Reservation d’un nom de domaine
2) Achat d’un hébérgement (avec le support qui va avec…)
3) Installation/configuration de WordPress
4) Conception du design (théme) du nouveau blog
5) Migration des anciens posts de Blogger vers WordPress
6) Réferencement du nouveau blog
7) Mise en place de la redirection de Blogger vers WordPress
Quand ?
Je pense démarrer le processus prochainement. En esperant une migration avant le printemps… Je vous tiens au courant.
A+
Creative Commons 3.0
La version 3.0 des licences Creatives Commons viennent d’être mise en ligne. Elles sont en fait un couteau suisse dans la jungle des licences open-source.
Le site permet de choisir differentes options (utilisation commerciale, modification, pays…) et des les appliquer sur votre format qui peut être audio, imahe, video, texte ou creation multimedia).
Il vous permet également de générer un logo (et un lien HTML) que vous pouvez intégrer à votre page Web (comme je viens de le faire ;)).
Lien vers le site: http://creativecommons.org/license/
Autre post sur le sujet:
– C’est quoi l’open source ?
Création de package GNU
L’installation de packages GNU est toujours la même:
Nous allons dans ce post étudier comment créer un package GNU respectant ce processus d’installation. Nous allons pour cela nous servir des utilitaires autoconf et automake.
Dans notre exemple, nous allons faire un package du plus célébre des programmes: helloword !
Ce programme se compose des fichiers suivants: helloword.c et helloword.h (je ne vous ferais pas l’affront de vous en donner le code source…).
La première chose à faire est d’organiser votre arborescence:
./helloword/
./helloword/AUTHORS
./helloword/README
./helloword/ChangeLog
./helloword/NEWS
/helloword/src/helloword.c
./helloword/src/helloword.h
Les fichiers AUTHORS, README, ChangeLog et NEWS sont standards et contiennent:
- AUTHORS: Les informations sur l’auteur du package.
- README : Description du package.
- ChangeLog: Historique des changements (version par version).
- NEWS: Nouveautés de la dernière version.
Nous allons maintenant configurer le fichier configure.in (à la racine de votre arborescence) qui servira de squelette à l’utilitaire autoconf (vous pouvez aussi vous servir de l’utilitaire autoscan qui générera ce fichier automatiquement):
# vi ./configure.in
AC_INIT(configure.in)
AM_INIT_AUTOMAKE(helloword, 1.0)
AC_PROG_CC
AC_PROG_INSTALL
AC_OUTPUT([
Makefile
src/Makefile
])
La macro AC_PROG_CC permet de vérifier lors de l’installation que l’ordinateur cible à bien un compilateur C.
La macro AC_PROG_INSTALL permet de vérifier lors de l’installation que l’ordinateur cible à bien l’utilitaire d’installation de binaire.
On lance ensuite la commande aclocal/autoconf, qui va elle même générer de nouveaux fichiers dans votre arborescence:
# aclocal && autoconf
Il faut alors editer les fichiers ./Makefile.am et ./src/Makefile.am de la facon suivante:
# vi ./Makefile.am
SUBDIRS= src# vi ./src/Makefile.am
bin_PROGRAMS = helloword
helloword_SOURCES = helloword.h helloword.c
helloword_CPPFLAGS = «
helloword_LDADD = «
La ligne CPPFLAGS permet d’ajouter des arguments lors de la pre-compilation.
La ligne LDADD permet d’ajouter des arguments lors de l’édition de lien.
On génére alors le fichier ./configure avec la commande:
# automake -a -c
Pour tester votre tout nouveau tout beau package, il suffit de lancer les trois commandes magique:
# ./configure
# make
# make install
Et voila le travail, il ne vous reste plus qu’a publier votre beau logiciel sur un des nombreux sites hébergeant les softs open-source (par exemple http://www.sourceforge.net/).
Tutorial TCPdump
TCPdump est un outil en ligne de commande pour écouter ce qui se passe sur une interface réseau. Il est disponible sur la plupart des operating system (Linux, Mac, Wins…). Comme son nom ne l’indique pas il est capable de déchiffrer tout les paquets IP.
Comment lancer TCPdump
Il est préférable de lancer TCPdump en mode super user. En effet, il passe votre interface réseau en « promiscuous mode » (c’est à dire que votre interface va accepter tous les paquets IP, même ceux qui ne lui sont pas destinés), ce qui nécessite certain priviléges.
Voici une première commande pour écouter ce qui se passe sur l’interface par défaut de botre système:
# tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type EN10MB (Ethernet), capture size 96 bytes
11:21:49.128471 802.1d unknown version
11:21:50.629554 arp who-has 192.168.29.149 tell 192.168.29.179
11:21:51.116336 IP 192.168.29.11.34236 > broadcasthost.34235: UDP, length 186
11:21:51.129803 802.1d unknown version
11:21:51.543959 IP 192.168.29.157.49575 > 192.168.29.1.domain: 5186+ PTR? 149.29.168.192.in-addr.arpa. (45)
11:21:51.616221 IP 192.168.29.1.domain > 192.168.29.157.49575: 5186 NXDomain* 0/1/0 (142)
11:21:51.617724 IP 192.168.29.157.49576 > 192.168.29.1.domain: 55735+ PTR? 179.29.168.192.in-addr.arpa. (45)
11:21:51.618069 IP 192.168.29.1.domain > 192.168.29.157.49576: 55735 NXDomain 0/1/0 (122)
11:21:51.619695 IP 192.168.29.157.49577 > 192.168.29.1.domain: 34419+ PTR? 11.29.168.192.in-addr.arpa. (44)
11:21:51.691880 IP 192.168.29.1.domain > 192.168.29.157.49577: 34419 NXDomain* 0/1/0 (141)
11:21:52.693682 IP 192.168.29.157.49578 > 192.168.29.1.domain: 10774+ PTR? 1.29.168.192.in-addr.arpa. (43)
11:21:52.766304 IP 192.168.29.1.domain > 192.168.29.157.49578: 10774 NXDomain* 0/1/0 (140)
11:21:53.131204 802.1d unknown version
11:21:53.770691 IP 192.168.29.157 > 224.0.0.251: igmp v2 report 224.0.0.251
11:21:53.847442 arp who-has 192.168.29.175 tell 192.168.29.1
11:21:54.768652 arp who-has 192.168.29.1 tell 192.168.29.157
11:21:54.768916 arp reply 192.168.29.1 is-at 00:0d:61:60:3b:2f (oui Unknown)
11:21:54.768942 IP 192.168.29.157.49580 > 192.168.29.1.domain: 35687+ PTR? 251.0.0.224.in-addr.arpa. (42)
11:21:54.769366 IP 192.168.29.1.domain > 192.168.29.157.49580: 35687 NXDomain 0/1/0 (100)
11:21:54.770771 IP 192.168.29.157.49581 > 192.168.29.1.domain: 47393+ PTR? 175.29.168.192.in-addr.arpa. (45)
11:21:54.843466 IP 192.168.29.1.domain > 192.168.29.157.49581: 47393 NXDomain* 0/1/0 (142)
TCPdump génére une ligne par paquet IP. Avec les options par défaut, une ligne ressemble à:
11:21:54.768942 IP 192.168.29.157.49580 > 192.168.29.1.domain
-> Heure d’arrivée du paquet sur l’interface réseau
11:21:54.768942 IP 192.168.29.157.49580 > 192.168.29.1.domain
-> Type de protocole (ici IP, peut être aussi ARP, IGMP, GRE …)
11:21:54.768942 IP 192.168.29.157.49580 > 192.168.29.1.domain
-> Adresse réseau source
11:21:54.768942 IP 192.168.29.157.49580 > 192.168.29.1.domain
-> Port réseau source
11:21:54.768942 IP 192.168.29.157.49580 > 192.168.29.1.domain
-> Adresse réseau destination
11:21:54.768942 IP 192.168.29.157.49580 > 192.168.29.1.domain
-> Port réseau destination (domain = requête DNS UDP/53)
Remarque: pour trouver le numero de port correspondant au nom du port, il faut chercher dans le fichier /etc/services. Par exemple:
# grep domain /etc/services
domain 53/udp # Domain Name Server
Je veux plus d’informations
(ok ok …). Si vous souhaitez avoir plus d’information, vous pouvez utiliser le tag -v:
# tcpdump -v
…
11:34:23.480144 IP (tos 0x0, ttl 64, id 10784, offset 0, flags [DF], proto: UDP (17), length: 67) 192.168.29.246.32794 > 192.168.29.1.domain: 8576+ A? ftp.redhat.ikoula.com. (39)
…
On peut alors voir les informations supplémentaires suivantes:
(tos 0x0, ttl 64, id 10784, offset 0, flags [DF], proto: UDP (17), length: 67)
Associés au champs IP, elle fournie des informations sur le protocole (flags, protocole UDP, taille du paquet…).
8576+ A? ftp.redhat.ikoula.com. (39)
Donne un apercu du champ data (dans notre exemple, on peut voir que c’est une requête DNS qui demande l’adresse IP du serveur ftp.redhat.ikoula.com)
Si vous voulez encore plus d’informations (coquin va…), vous pouvez utiliser les options -vv et même -vvv (mais ou s’arrêteront t’ils ?).
Si vous souhaité avoir un dump du contenu du de chaque paquet, vous pouvez utiliser l’option -A, par exemple:
# tcpdump -v -A
11:46:00.607145 IP (tos 0x0, ttl 64, id 33771, offset 0, flags [DF], proto: TCP (6), length: 765) 192.168.29.157.49659 > mu-in-f104.google.com.http: P 1543672215:1543672940(725) ack 1290089933 win 65535
E…..@.@.}……U.h…P\…L.5.P…9…GET / HTTP/1.1
Host: www.google.fr
User-
Ce paquet correspnd donc à une requette HTTP sur le site www.google.fr.
Mon dieu, il y a trop d’informations !!!
(faut savoir ce que tu veux….). Heureusement, TCPdump inclut un système de filtrage très pointu.
Quelques exemples (consulter le man tcpdump pour une liste exhaustive):
# tcpdump host www.google.fr
Affiche seulement les paquets qui ont pour adresse source ou destination www.google.fr
# tcpdump dst www.google.fr
Affiche seulement les paquets qui ont pour adresse destination www.google.fr
# tcpdump port http
Affiche seulement les paquets HTTP (web)
# tcpdump proto gre
Affiche seulement les paquets GRE (utilisés lors de tunnel ipsec)
Il est bien sur possible de mixer plusieurs filtres:
# tcpdump dst 192.168.29.10 and port domain
Affiche tous les paquets DNS (domain) à destination de l’adresse 192.168.29.10
J’en veux encore !
(ben voila, on donne la main il prend le bras…). Imaginons que l’on souhaite capturer les paquets transitant sur une interface réseau afin de les analyser plus tard, sur une autre machine ou dans un autre logiciel (par exemple dans Ethereal…). C’est possible et très simple avec l’option -w:
# tcpdump -w capture.dump
tcpdump: listening on en0, link-type EN10MB (Ethernet), capture size 96 bytes
656 packets captured
676 packets received by filter
0 packets dropped by kernel
Cette commande va capturer les paquets et sauvegarder le tout dans le fichier capture.dump.
Si vous souhaitez maintenant afficher le contenu de ce fichier avec l’option -r, il faut taper la commande:
# tcpdump -v -r capture.dump
reading from file capture.dump, link-type EN10MB (Ethernet)
13:28:09.495897 IP (tos 0x0, ttl 64, id 47730, offset 0, flags [DF], proto: TCP (6), length: 52) 192.168.29.246.49084 > ftp.fu-berl
in.de.60772: ., cksum 0x13d0 (correct), ack 1339443207 win 2003
13:28:09.503376 IP (tos 0x0, ttl 64, id 47731, offset 0, flags [DF], proto: TCP (6), length: 52) 192.168.29.246.49084 > ftp.fu-berl
in.de.60772: ., cksum 0x0e1d (correct), ack 1449 win 2003
13:28:09.506374 IP (tos 0x0, ttl 64, id 47732, offset 0, flags [DF], proto: TCP (6), length: 52) 192.168.29.246.49084 > ftp.fu-berl
in.de.60772: ., cksum 0x0872 (correct), ack 2897 win 2003
Voila une première initiation à la capture réseau. Vous pouvez toujours consulter le man de TCPdump pour exploiter les nombreuses options de ce logiciel.
Quelques options en bonus:
-n : ne pas faire de résolution de nom (affiche seulement les adresses IP).
-i : Force l’utilisation de l’interface (par exemple -i eth0)
Nmap permet d’identifier le type de serveur Web utilisée par un site Internet. Pour cela on utilse la commande suivante:
# nmap -sV -p 80 -P0 -O
Ou alors:
# yum install libwww-perl
# GET -ed
Voici donc le résultat de cette commande sur le Top 10 des sites Francais (donné par Alexa).
msn.com – Microsoft-IIS/6.0 – Windows
google.fr – Google httpd 2.1 (GWS) – Linux (Redhat)
yahoo.com – ? – ?
skyblog.com – Apache – ?
google.com – Google httpd 2.1 (GWS) – Linux
free.fr – Apache – IBM AIX 4.X
live.com – Microsoft-IIS/6.0 – Windows
orange.fr – Apache – Linux
ebay.ff – Apache – NetBSD
youtube.com – Apache – Linux (Redhat)
Pour rappel, il existe plusieurs méthodes pour masquer (ou changer) le nom du service Web / operating system. Ces informations sont donc à prendre avec des pincettes.
On peut donc voir que pour ce « Top 10 », seul Microsoft utilise le serveur IIS. Les autres sites utilises Apache. Seul expession, Google qui a du re-écrire un serveur Web maison (d’un autre coté ils font aussi leur propores alimentations pour les serveurs…).
La Fedora Core 7 arrive…
La prochaine version de Fedora pass en version TEST1. Le plainning prevoit une version finale vers fin avril 2007.
Quelques évolutions enviseagées (cest une roadmap…):
- Regroupage des repos Core et Extra (enfin !)
- Amelioration des fonctions de l’annuaire LDAP
- Passage simplifié d’un compte utilisateur à un autre
- Remplacement du système de démarrage (init)
- Réecriture du système de mise à jour
- Versions optimisées pour les serveurs et pour les portables avec notamment un grand nombre de driver Wifi inclus de base dans la distribution.
VLC en ligne de commande
Nous allons regarder d’un peu plus prés le logiciel VLC (VideoLAN Media Player) dans sa version 0.8.6a et notamment son utilisation en ligne de commande. Les exemples suivants sont effectuée sous MacOS X, mais ils doivent fonctionner sans problème sous Linux.
En premier lieu on créé un alias vers l’executable vlc:
# alias vlc=’/Applications/VLC.app/Contents/MacOS/VLC’
Ensuite on lance la commande suivante pour vérifier que tout va bien…
# vlc -h
-> Affichage de l’aide en ligne
Jouer une video sur son écran
C’est la fonction de base de VLC, on prend en entrée un fichier video et on lance la commande suivante:
# vlc Elephants_Dream_HD.avi
-> Joue le fichier Elephants_Dream_HD.avi
On pointe déjà l’avantage de VLC par rapport aux autres « Player ». En effet, pas besoin de télécharger des codecs tous les jours. En effet, VLC inclue un grand nombre de codecs et à chaque version la liste s’agrandie.
Quelques touches racourcies quand une vidéo est en train de jouer:
– Touche « Espace »: Pause ou Play (si on est en pause)
– Touches « A »: Change l’aspect ratio
– Touches « T »: Affiche le temps écoulé/total
– Touches « S »: Active ou desactive les sous-titres (si disponible)
– Touches « D »: Active ou desactive les desentracellements
– Touche « ALT-F or POMME-F »: Pour passer en full-screen
– Touches « C »: Change le rognage
Flux de sortie de VLC
Nous allons enter dans le coeur du sujet de ce post: Les flux de sortie de VLC.
En effet, nous pouvons faire beaucoup plus que jouer une video, pour cela nous allons utiliser l’option –sout de la ligne de commande de VLC. Celle-ci permet d’utiliser des modules comme:
– standard: streaming sur le réseau ou encodage dans un nouveau fichier.
– transcodage: permet de changer à la volée le débit de sortie, le codec audio et/ou vidéo. Attention, cette option est grourmande en CPU…
– duplicate: permet de créer un nouveau flux de sortie (pouvant être traité de manière différente).
– display: permet de jouer la vidéo sur l’écran.
– rtp: streaming en RTP (compatible RTSP).
– es: Séparation du flux (par exemple pour un traitement différent du son et de la vidéo).
En ligne de commande, un transcodage, suivi d’un streaming se traduit par:
# vlc fichiersource.avi –sout ‘#transcode{options}:standard{options}’
La liste des options est disponible ici.
Streaming HTTP
Dans ce premier exemple, nous allons streamer (diffuser sur un réseau) une vidéo entre deux PC en utilisant le protocole HTTP.
Attention, pour streamer en utilisant le protocole HTTP, il faut que le fichier source soit encapsuler en: ps, mpeg1, ogg, asf ou mpjep.
Il faut donc passer par une phase de transcodage avant de pouvoir le streamer. Nous allons donc le transcoder en ogg. Le mux ogg est compatible avec les codecs MEPG 1/2/4, MJPEG, WMV 1/2 et Theora pour la vidéo et vorbix, flac, speex, a52 et l’audio MPEG pour l’audio. Notre fichier source d’exemple étant encodé en DIVX, il faut donc passer par une phase de transcodage avant de pouvoir le streamer. La commande à lancer sur le serveur est:
# vlc -vvv Elephants_Dream.avi –sout \ ‘#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:standard{access=http,mux=ogg,dst=:8080}’
Comme vous pouvez le voir dans la ligne de commande nous avons également fixé la bande passante (800 Kbps pour la vidéo et 128 Kbps pour l’audio).
Cette commande permet donc de créer l’équivalent d’un « serveur web » écoutant les requêtes sous le port TCP/8080 (il faut changer l’adresse IP par celle de votre PC). Il ne reste plus qu’a lancer sur une machine distante (cliente) la commande suivante:
# vlc http://:8080
Streaming UDP Multicast
Pour un streaming multicast utilisant le protocole UDP (on doit dans ce cas la encapsuler en ts).
Sur le serveur:
# vlc -vvv Elephants_Dream.avi –sout ‘#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128}:standard{access=udp,mux=ts,dst=239.10.11.12}’
Sur le client:
# vlc udp://@239.10.11.12:1234
Les combinaisons sont donc très grandes… à vos claviers !