Month: May 2007

Flickrvision (from Google Developper Day)

Posted by – May 31, 2007

Cette après-midi j’ai assisté (en partie) à la 1ère1 Google Developper Day organisée en France, l’évènement se déroulait près de Bastille dans un lieu très sympa et design (avec tous pleins de Geeks avec leur portable sous MAC OS, Linux et XP). Le sujet principal était les APIs qu’offre (ou commercialise aux entreprises) Google, on en retrouve plus de 33, disponibles sur Google code. Originalité de la journée : elle avait lieu simultanément dans plusieurs pays : Espagne, Allemagne, USA, …

Parmi les démos (mais applications bien réelles), il y en a notamment une qui a retenu mon attention : Flickrvision.

Le principe est simple : allier Flickr et Google Maps en affichant toutes les photos en temps réel nouvellement ajoutées dans Flickr. En passant la souris sur une image, celle-ci s’affiche au center de la fenêtre en plus grand, cela peut dans l’absolu servir d’écran de veille par exemple, à découvrir.

1 REST, API, Google MAPS, Atom, JSON, Ajax…pleins de termes qui donnent envie de s’y mettre aux APIs Google, voir le blog d’un évangéliste Google . Au passage, marrant, car dans le monde Microsoft on retrouve ce terme d’évangéliste, très américain…lien avec le côté religieux de nos amis d’Amérique du Nord ? ;)

MyHeritage, parait que je ressemble à …

Posted by – May 28, 2007

…plutôt flatteur mais gadget quand même ;)

  • Category: Fun
  • Tags:
  • Comments Closed

Typo : ajout d’une barre sociale et d’un sommaire

Posted by – May 28, 2007

J’avais déjà vu des articles sur le site Dev411 concernant l’ajout d’une barre de bookmarking ainsi que l’ajout d’un sommaire des billets de la page courante, c’est maintenant fait.

La barre ressemble à ça, à ceci près que je l’ai passée en noir & blanc :

Ce que j’aime lorsque j’arrive sur une page c’est d’avoir un sommaire des articles de la page, cela évite de parcourir toute la page et avoir en un clin d’oeil les titres des billets, un peu comme delicious. C’était aussi l’occasion1 de mettre un peu les mains dans Typo, et de modifier quelques scripts (index.rhtml et modèles rails) de mon thème2 scribbish : _article.rhtml, _article_toc.rhtml, _article_notable.rhtml

Il reste à appliquer un style maison pour habiller le sommaire.


#articles_toc
{
-moz-border-radius-topleft: 10px;
-moz-border-radius-topright: 10px;
-moz-border-radius-bottomright: 10px;
-moz-border-radius-bottomleft: 10px;
background-color:#EEEEEE;
padding-left:5px;
border-color:#B7B7B7;
border-style:solid solid dotted;
border-width:1px;
}

#articles_toc a
{
display:block;
}

Outil que j’utilise pour les images écran : Screenshot captor, logiciel qui permet en outre d’habiller ou de manipuler la capture.

1 A faire : mettre en place un vserver pour typodev…

2 Scribbish, en plus d’une assez belle charte, apporte une sémantique aux pages grâce à l’utilisation du microformat hAtom.

Flickr toys

Posted by – May 26, 2007

Vous souhaitez faire des cartes postales, un calendrier, un slideshow ou encore avoir quelques outils et gadgets pour profiter pleinement de vos photos flickr, alors ce site vous rendra bien service.

Quelques exemples :

View slideshow

Zork[Yy]. Get yours at bighugelabs.com/flickr

VServer et guest erratum

Posted by – May 26, 2007

Dans l’article VServer : une mise en place sous Debian j’annonçais que sous un guest l’interface lo n’était pas reconnue et qu’il fallait la simuler grâce à l’interface dummy. En fait, c’est une erreur, c’est possible d’utiliser 127.0.0.1 sous un guest à condition d’activer l’option CONFIG_VSERVER_REMAP_SADDR dans la configuration du noyau, dont je joins ma configuration :

 # # Linux VServer # # CONFIG_VSERVER_LEGACY is not set CONFIG_VSERVER_LEGACYNET=y CONFIG_VSERVER_REMAP_SADDR=y CONFIG_VSERVER_COWBL=y # CONFIG_VSERVER_VTIME is not set CONFIG_VSERVER_PROC_SECURE=y CONFIG_VSERVER_HARDCPU=y CONFIG_VSERVER_IDLETIME=y # CONFIG_VSERVER_IDLELIMIT is not set # CONFIG_TAGGING_NONE is not set # CONFIG_TAGGING_UID16 is not set # CONFIG_TAGGING_GID16 is not set CONFIG_TAGGING_ID24=y # CONFIG_TAGGING_INTERN is not set # CONFIG_TAG_NFSD is not set # CONFIG_PROPAGATE is not set CONFIG_VSERVER_PRIVACY=y CONFIG_VSERVER_CONTEXTS=256 CONFIG_VSERVER_WARN=y # CONFIG_VSERVER_DEBUG is not set CONFIG_VSERVER=y  

Le noyau détecte que si 127.0.0.1 est utilisée alors la mappe automatiquement avec l’IP utilisée par le guest (par exemple 192.168.1.140).

Bonne compilation !

131 services Google

Posted by – May 13, 2007

Tout le monde connaît le moteur de recherche Google, beaucoup de gens connaissent plusieurs autres applications. Mais qui peut se vanter de connaître ses 131 services ? Les voici tous rassemblés sur une page.

Services Google

Personnellement, j’utilise Google, Google Analytics (bien mieux sous sa nouvelle forme), Gmail, et parfois Google Maps, et il n’y a pas si longtemps Blogger, il reste donc du boulot ;)

Typo…crash ce jour…

Posted by – May 11, 2007

Le blog a été injoignable toute la journée, suite à un crash de Typo.

Voilà le genre d’erreurs que j’avais au démarrage du serveur :

 Processing ArticlesController#index (for 192.168.1.101 at 2007-05-11 19:28:18) [GET]
Parameters: {"action"=>"index", "controller"=>"articles"}
Expiring #<Article:0xb671aeec>, with controller:
Expiring #<Article:0xb6a9d3f8>, with controller:
Expiring #<Article:0xb6a631f8>, with controller:
Expiring #<Article:0xb6a0d898>, with controller:
...

avec comme message sur la page principale : “stack level too deep”.

En cherchant un peu sur le Net et après que le blog refonctionne, il vaut mieux éviter d’écrire un article, avec une date publication quelques jours plus tard, et cocher la publication, apparemment, il aime pas trop, j’ai eu tout de même quelques sueurs froides.

VServer : une mise en place sous Debian

Posted by – May 11, 2007

La virtualisation est de plus en plus utilisée et le sera d’autant plus dans les années à venir, et cela pour plusieurs raisons :

  • économie de matériels (serveurs physiques), et donc de place : au lieu d’acheter 10 serveurs physiques à héberger, on se retrouve à placer dans la baie (et le coût n’est pas négligeable…) qu’un seul serveur physique avec 10 serveurs virtuels (VMWare, VServer, …).
  • cloisonnement des serveurs : on peut architecturer de façon un peu plus propre et pérenne son parc : serveur par type de services, on pensera par type de services à : PHP (voire n serveurs / versions), Rails, passerelle SMTP, SGBDR, … chaque serveur est spécialisé. L’administrateur sait alors précisément les versions et les modules qui tournent sur ces serveurs, leurs mises à jour, gestion, et sauvegardes s’en trouve simplifiées.
  • accès : ce cloisonnement permet aussi l’accès de la part de tiers qui souhaiteraient avoir toute la main sur leur serveur : imaginons un LAMP sur lequel on donnerait l’accès root à un client, celui-ci ne voit que SON serveur et rien d’autre.

Pour ces raisons, j’ai mis en place des serveurs virtuels sous VServer, peu consommateur en ressources. Chaque serveur utilise le même noyau, et les mêmes ressources que le serveur maître (host), mais on peut limiter pour chaque serveur virtuel (guest) les ressources allouées.

Environnement

Le cas décrit se base sur les spécifications suivantes (host) :

  • Debian Etch
  • version 2.6.20(.4) du noyau (2.6.20.11 à l’heure où j’écris ce billet)
  • patch 2.2.0 de vserver disponible en page d’accueil
root@nestor:~# uname -a
Linux nestor 2.6.20.4-vs2.2.0-vs #1 Thu Apr 12 07:39:33 CEST 2007 i686 GNU/Linux

Nous aurons besoin des utilitaires vserver (vserver, vapt-get, vserver-stat, …):

$ apt-get install util-vserver

Compilation et installation du noyau patché

Télécharger les sources 2.6.20 (ou pour la dernière version prendre le bz2 qui convient au patch vserver). Télécharger le patch vserver (ou la version appropriée à votre noyau).

$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.4.tar.bz2
$ wget http://ftp.linux-vserver.org/pub/kernel/vs2.2/patch-2.6.20.4-vs2.2.0.diff

Mettre les sources dans /usr/src et les patcher :

$ bzip2 -cd linux-2.6.20.4.tar.bz2 | tar xvf - 
$ cp patch-2.6.20.11-vs2.2.0.diff linux-2.6.20.4
$ cd linux-2.6.20.4
$ patch -p1 < patch-2.6.20.4-vs2.2.0.diff

On prend une configuration et on l’adapte pour la prise en compte du VServer :

$ cp /boot/config- /usr/src/linux-2.6.20.4/.config
$ make menuconfig

La dernière commande permet de configurer votre noyau selon vos besoins. Il faut au moins activer la configuration VServer. Ma configuration de ce fichier :

 # # Linux VServer # # CONFIG_VSERVER_LEGACY is not set CONFIG_VSERVER_LEGACYNET=y CONFIG_VSERVER_REMAP_SADDR=y CONFIG_VSERVER_COWBL=y # CONFIG_VSERVER_VTIME is not set CONFIG_VSERVER_PROC_SECURE=y CONFIG_VSERVER_HARDCPU=y CONFIG_VSERVER_IDLETIME=y # CONFIG_VSERVER_IDLELIMIT is not set # CONFIG_TAGGING_NONE is not set # CONFIG_TAGGING_UID16 is not set # CONFIG_TAGGING_GID16 is not set CONFIG_TAGGING_ID24=y # CONFIG_TAGGING_INTERN is not set # CONFIG_TAG_NFSD is not set # CONFIG_PROPAGATE is not set CONFIG_VSERVER_PRIVACY=y CONFIG_VSERVER_CONTEXTS=256 CONFIG_VSERVER_WARN=y # CONFIG_VSERVER_DEBUG is not set CONFIG_VSERVER=y  

Compiler (méthode Debian) et installer le package :

$ make-kpkg clean
$ fakeroot make-kpkg --append_to_version -vs --initrd --revision=vserver.01 kernel_image modules_image
$ dpkg -i linux-image-2.6.20.4*.deb

puis rebooter…

$ shutdown -r now

Création d’un serveur virtuel (guest)

A ce stade, votre noyau contient le module VServer, nous pouvons dès lors créer notre 1er vserver. Les serveurs seront installés sur /var/lib/vservers. On pourra penser à l’utilisation de LVM pour la création d’une partition logique par vserver. Cela permet de faciliter la maintenance : ajout d’espace disque simplifié, séparation de la partition vserver du host, …on en parlera lors d’un prochain billet.

Une commande suffit, on peut aussi exclure certains packages à ne pas installer lors de la préparation du gest. Création d’un guest nommé nestor-wiki, avec l’IP 192.168.1.180, le n° du context doit être unique :

  $ REMOVE_PACKAGES="sparc-utils,dhcp-client,lilo,makedev,pcmcia-cs,ppp,pppconfig,pppoe,pppoeconf,setserial,\\
syslinux,fdutils,libpcap0,iptables,pciutils"
$ vserver nestor-wiki build -m debootstrap --context 49800 --hostname nestor-wiki --interface eth0:192.168.1.180/32 --force -- -d etch -- --exclude=$REMOVE_PACKAGES
I: Retrieving Release
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Checking component main on http://ftp.debian.org/debian...
I: Retrieving adduser
I: Validating adduser
I: Retrieving apt
...
I: Base system installed successfully.

Le système a été installé dans /var/lib/vservers/nestor-wiki.

Exécution et configuration de base

Il reste maintenant à exécuter le vserver, à y installer au moins ssh pour l’accès, ainsi que vos services qui répondent à vos besoins.

$ vserver nestor-wiki start
$ vserver-stat
49800 2 3.8M 1.4M 0m00s00 0m00s00 0m22s11 nestor-wiki

On copie les sources apt-get du host sur le vserver : cp /etc/apt/sources.list /var/lib/vservers/nestor-wiki/etc/apt/ Soit on entre dans le contexte du vserver pour une mise à jour et y installer ssh et sudo, soit on utilise vapt-get (mais à ce stade, on préférera la 1ère méthode) :

  • par vserver, on entre sur le guest :
$ vserver nestor-wiki enter
$ apt-get update
$ apt-get upgrade
$ apt-get install ssh
$ apt-get install sudo
$ adduser zorky
$ visudo => ajouter zorky
$ exit
  • par vapt-get (à partir du host):
$ vapt-get nestor-wiki -- update
$ vapt-get nestor-wiki -- upgrade
$ vapt-get nestor-wiki -- install ssh
$ vapt-get nestor-wiki -- install sudo
$ vserver nestor-wiki enter
$ adduser zorky
$ visudo => ajouter zorky

ça y est, vous pouvez dès lors utiliser votre client ssh préféré pour vous logguer sur votre nouveau vserver : putty sous windows, ssh sous linux.

On vérifie les IPs utilisées.

 root@nestor:~# ip addr
1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0f:3d:f8:a7:73 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.104/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.170/32 scope global eth0
inet 192.168.1.150/32 scope global eth0
inet 192.168.1.160/32 scope global eth0
inet 192.168.1.140/32 scope global eth0
inet6 fe80::20f:3dff:fef8:a773/64 scope link
valid_lft forever preferred_lft forever

Utilitaires

  • Connaître le statut des serveurs :
 root@nestor:~$ vserver-stat
CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME
0 70 300.9M 81M 3h10m56 24m03s81 25d22h25 root server
20 9 161.6M 118.1M 10m21s23 1m28s19 25d18h20 nestor-rails
60 16 206.5M 71.1M 6m22s87 1m10s88 25d18h20 nestor-php
70 12 139.6M 43.9M 1m09s60 0m28s40 25d18h20 nestor-sympa
49700 8 90.5M 38.7M 4m25s27 1m20s93 25d18h20 nestor-mysql
  • apt-get sur un ou l’ensemble des serveurs, cela peut s’avérer pratique pour les mises à jour sécurité par exemple :
 $ vapt-get --all -- update
vapt-get: operating on vserver nestor-mysql
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait..
$ vapt-get --all -- upgrade
  • un top global qui permet d’afficher l’ensemble des processus de tous les serveurs (host et guests) :
 $ vtop
top - 18:47:13 up 25 days, 22:29, 3 users, load average: 1.75, 1.08, 0.46
Tasks: 117 total, 2 running, 115 sleeping, 0 stopped, 0 zombie
Cpu(s): 93.3%us, 6.0%sy, 0.0%ni, 0.0%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10954 www-data 15 0 51380 38m 2292 S 0.0 10.2 1:33.04 mongrel_rails
10957 www-data 15 0 50996 38m 2292 S 0.0 10.1 1:12.22 mongrel_rails
10951 www-data 15 0 50944 38m 2280 S 0.0 10.1 1:11.03 mongrel_rails
9516 identd 18 0 78240 34m 5076 S 0.0 9.2 5:29.84 mysqld
31726 sympa 17 0 35736 31m 2680 S 0.0 8.2 0:02.85 wwsympa.fcgi
337 www-data 21 0 18328 6680 4028 S 0.0 1.7 0:41.14 apache2
340 www-data 15 0 18320 6572 3924 S 0.0 1.7 0:27.31 apache2
458 www-data 15 0 18276 6512 3944 S 0.0 1.7 0:28.01 apache2
1209 www-data 15 0 18340 6512 3928 S 0.0 1.7 0:20.88 apache2
336 www-data 18 0 18284 6484 3908 S 0.0 1.7 0:26.89 apache2
4603 www-data 15 0 18336 6456 3796 S 0.0 1.7 0:21.96 apache2
339 www-data 15 0 18276 6404 3832 S 0.0 1.7 0:22.79 apache2
11082 www-data 15 0 18284 6256 3712 S 0.0 1.6 0:02.87 apache2
  • vps pour afficher l’ensemble des processus, par serveurs :

    $ vps xau

  • vkill pour tuer un processus d’un vserver

Contexts

Lors du chargement du vserver, il inscrit dans /var/run/vservers sous forme de fichiers les serveurs qui sont lancés, avec le n° du context sur lequel le vserver est lancé.

 $ ls /var/run/vservers total 16 -rw-r--r-- 1 root root 6 2007-04-12 23:21 nestor-mysql -rw-r--r-- 1 root root 3 2007-04-12 23:21 nestor-php -rw-r--r-- 1 root root 3 2007-04-12 23:21 nestor-rails -rw-r--r-- 1 root root 3 2007-04-12 23:21 nestor-sympa $  cat /var/run/vservers/nestor-mysql 49700  

S’il s’avérait qu’un problème se passe (reboot involontaire du host, …), il suffit de supprimer un des fichiers pour résoudre le défaut de lancement du vserver si celui-ci ne se lançait pas le cas échéant.

.NET humour…si, si c’est possible…

Posted by – May 8, 2007

Tirée de ce blog, une liste de dessins ou animations concernant le monde .NET.

Mes préférés :

…je précise que dans le cadre de mon travail, l’équipe d’ingénierie dans laquelle je bosse développe quotidiennement avec les technologies .NET, il y a donc du vécu ;)

News en vrac :

  • Category: Fun
  • Tags:
  • Comments Closed

Snap : calculez votre économie en CO²

Posted by – May 8, 2007

Snap (le site qui offre des aperçus des liens) fournit un économiseur d’écran. Celui-ci se propose de réduire l’énergie consommée par votre matériel tout en vous proposant de calculer l’économie en CO² qu’il a permise de faire.

Pour ceux qui ont du mal à éteindre leur portable ou PC (comme moi, sic)…

CO2Saver

…bon, bien sûr, autant que faire se peut, il est préférable d’éteindre son PC quand on s’en sert pas.

Autre idée, si vous souhaitez “compenser” votre PC allumé, vous pouvez investir dans une veille humanitaire, par exemple le projet World Community Grid qui aide la recherche contre le SIDA.