PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

OLPC France : Les clés pour développer des applications Sugar en HTML5

mardi 18 septembre 2012 à 22:33

L’un des éléments importants de réussite d’un déploiement OLPC est d’avoir des contenus adaptés aux enfants. Sugar intègre déjà de nombreuses activités pédagogiques néanmoins, notre expérience des déploiements (notamment lors du projet Saint-Denis) nous a montré le manque de certains contenus en particulier pour l’apprentissage de la lecture.

C’est l’un des objectifs d’OLPC France de proposer ou d’adapter des nouveaux contenus pour Sugar et le XO, voilà donc comment nous proposons d’essayer de combler ce manque aujourd’hui. Le reste dépend de vous !

Où trouver des contenus ?

Grâce au travail de Pierre et Bastien, nous avons échangé ces derniers mois avec ILearn4Free une organisation qui édite de très jolies histoires interactives sur iPad (iStory) dans différentes langues.

Nous avons convaincus iLearn4free d’ouvrir une partie de leur très riches contenus réalisés par des graphistes et linguistes professionnels afin qu’ils puissent être librement diffusables. Ainsi est né il y a quelques semaines Art4Apps, un site web proposant une bibliothèque d’images et d’enregistrements audio de mots dans différentes langues. L’ensemble étant sous licence Creative Commons BY SA, c’est donc plusieurs centaines de contenus qui peuvent être librement intégrés dans des applications de lecture.

L’objectif est ainsi d’offrir à la communauté les moyens de développer des applications Sugar à destination des enfants.

Comment développer des applications Sugar en HTML5/JavaScript ?

Encore faut-il être familier avec le développement Python et avec le framework Gtk qui sont la base du développement d’applications pour Sugar. Pour permettre néanmoins au plus grand nombre de développer des applications à partir de ces contenus, OLPC France a également travaillé à la possibilité de réaliser directement en HTML5/JavaScript des applications pour Sugar.

Une première tentative avait été réalisée avec l’application de nutrition que nous avions co-réalisée avec Danone, Nutrino. Son architecture technique restait néanmoins complexe car elle intégrait un serveur HTTP Python (Flask) et était limitée par les capacités du navigateur HTML initial de Sugar qui repose sur une vieille version de Gecko (le moteur de rendu de Firefox).

Aujourd’hui je vous propose une solution différente permettant de réaliser une application Sugar en HTML5/JavaScript sans compromis sur le rendu HTML ni sur les possibilités d’intégration avec Sugar.

Pour cela la première étape est de s’appuyer sur une version récente de Sugar, Sugar 0.96 désormais officiellement packagée pour le XO 1, 1.5 et 1.75. Sugar 0.96 propose en effet deux nouveautés importantes:

La deuxième étape est d’utiliser le framework JavaScript Open Source Enyo pour concevoir son application. S’il existe de nombreux framework JavaScript, Enyo a l’avantage d’être simple et élégant, très orienté « composants » et portable. Portable voulant dire que votre application développée avec Enyo pourra fonctionner facilement sur de nombreux périphériques (smartphones, tablets, …). Vous ne développerez donc pas uniquement pour Sugar et le XO mais potentiellement pour d’autres systèmes.


Comment puis-je démarrer ?

Pour comprendre le mécanisme, j’ai développé un exemple très simple de page HTML qui accède à quelques images et sons de la librairie Art4Apps.

La page est accessible ici.

Le code source JavaScript est disponible ici.

Convertissons-là maintenant en une application Sugar pour le XO. Une application Sugar est un dossier compressé avec différents éléments de configuration et du code Python d’initialisation. J’ai préparé un template qui vous permet d’éviter tout cela, il suffit de copier les fichiers HTML dans le dossier correspondant et de recréer le fichier. Voici alors ce que cela donne: application XO

.

La capture d’écran ci-dessus montre son exécution sur le XO. Elle s’exécute comme une véritable application pour Sugar et le XO.

Si maintenant vous souhaitez que votre application interagisse avec Sugar (personnaliser la barre d’outil, communiquer avec le journal, …), c’est tout à fait possible car le template intègre un mini-framework permettant d’échanger avec Sugar depuis Enyo. Ainsi, en une ligne de JavaScript vous pouvez appeler un traitement de l’application Python ou au contraire recevoir un événement déclenché par Python.


sugar = new Sugar();
sugar.sendMessage("ready");
sugar.connect("home_clicked", enyo.bind(this, "javascript_callback"));

Facile non ?

Alors si vous êtes développeur HTML5 vous avez maintenant les clés : qu’attendez-vous pour mettre votre imagination et votre talent au service du projet OLPC ? Contactez-nous et nous vous accompagnerons sur votre projet.

A noter que:

Gravatar de OLPC France
Original post of OLPC France.Votez pour ce billet sur Planet Libre.

Nicolargo : Des outils de test pour stresser votre système

mardi 18 septembre 2012 à 17:58

Le développement logiciel nécessite des phases de test et de validation qui sont souvent menées sur des machines non chargées. Je vous propose donc de découvrir, dans ce billet, une série de petits logiciels permettant de simuler une charge sur votre système et qu'il faudra donc lancer en parallèle de vos applications à valider. J'ai uniquement sélectionné des logiciels libres, légers, en ligne de commande et disponible dans les dépôts Ubuntu standards.

Comment stresser une machine ?

Plusieurs leviers permettent de "stresser" une machine:

L'utilisation conjointe de ces leviers permet de simuler une charge sur une machine cible. L'amplitude des paramètres appliquées à ces leviers est bien sûr à adapter à votre configuration hardware et système.

Note: l'utilisation des logiciels décrits si-dessous peut entraîner le plantage pure et simple de votre machine (cela m'est arrivé pendant mes tests...). Je vous conseille donc vivement de ne pas les appliquer sur une machine en production...

Fuzz

Le premier logiciel est Fuzz. Contrairement aux autres solutions, ce dernier ne génère pas de "stress" par lui même mais demande à d'autres programmes de le faire.

Ainsi, la ligne de commande suivante:

fuzz grep foo

va lancer 10.000 fois la commande "grep foo" en lui donnant en entrée des données factices. Ainsi votre machine va chercher la chaîne de caractère foo dans un flot de données. Nous pouvons donc voir, grâce à Glances (un peu de pub...),  que la charge CPU (recherche de sous-chaine) et IO (entrée-sortie disque) augmentent.

Le nombre d’exécution (-r par défaut 10.000) et le time-out (-t par défaut 120 secondes) sont bien-sur paramétrable en ligne de commande (voir le man).

Si vous connaissez les applications qui tourneront en parallèle de la votre, il est facile de simuler votre environnement cible. Il manque par contre un peu de finesse pour tester votre application avec des contraintes pré-définies (par exemple avec une charge CPU de 75%).

Spew

Développé par HP et mis à disposition de la communauté, Spew est spécialisé sur le stress par entrée-sortie disque. Il permet d'écrire et/ou de lire des fichiers de test sur votre disque.

Pour générer un fichier de 5 Go nommé /tmp/bibi:

$ spew 5G /tmp/bibi
WTR:    90320.56 KiB/s   Transfer time: 00:00:58    IOPS:   180641.12

La même commande mais en forçant la relecture du fichier à la fin de l'écriture:

$ spew --read-after-write 5G /tmp/titi
WTR:    74740.25 KiB/s   Transfer time: 00:01:10    IOPS:   149480.49
RTR:  1761227.45 KiB/s   Transfer time: 00:00:02    IOPS:  3522454.90

On peut voir une montée en charge globale de la machine (LOAD) mais juste avec des entrées/sorties (IO):

Note: pensez à supprimer vos fichiers de test (/tmp/bibi)...

Stress et StressAppTest

Deux logiciels qui font fonctionnellement la même chose (jouer sur l'ensemble des leviers permettant de stresser une machine) mais de manière différente...

Stress est une application permettant de générer des processus (worker) ayant des caractéristiques communes:

Avec la commande suivante:

stress -m 10 --vm-bytes 512000000 -t 30

On se retrouve donc avec 10 processus consommant chacun 512 Mo:

Contrairement à Stress, StressAppTest ne génère par défaut qu'un seul processus qui va regrouper les caractéristiques de stress souhaitées.

Ainsi, la commande:

$ stressapptest -s 30 -M 256 -m 8 -C 8 -W
Log: Commandline - stressapptest -s 30 -M 256 -m 8 -C 8 -W
Stats: SAT revision 1.0.3_autoconf, 64 bit binary
Log: buildd @ allspice on Wed Jan 11 17:38:51 UTC 2012 from open source release
Log: 1 nodes, 4 cpus.
Log: Prefer plain malloc memory allocation.
Log: Using memaligned allocation at 0x7f9e9f157000.
Stats: Starting SAT, 256M, 30 seconds
Log: Region mask: 0x1
Log: Seconds remaining: 20
Log: Seconds remaining: 10
Stats: Found 0 hardware incidents
Stats: Completed: 458960.00M in 31.10s 14756.72MB/s, with 0 hardware incidents, 0 errors
Stats: Memory Copy: 458960.00M at 15298.83MB/s
Stats: File Copy: 0.00M at 0.00MB/s
Stats: Net Copy: 0.00M at 0.00MB/s
Stats: Data Check: 0.00M at 0.00MB/s
Stats: Invert Data: 0.00M at 0.00MB/s
Stats: Disk: 0.00M at 0.00MB/s
Status: PASS - please verify no corrected errors

Donne:

Je vous invite à consulter la documentation officielle du projet pour y découvrir les nombreuses options.

Pour finir...

Cette liste est très loin d'être exhaustive. L'idée étant de partager votre savoir...

Quel logiciel utilisez vous pour faire vos test de performances sur des machines chargées ?

Avez-vous des solutions multi-plateforme ?

A vos claviers :)

Cet article Des outils de test pour stresser votre système est apparu en premier sur Le blog de NicoLargo.

Gravatar de Nicolargo
Original post of Nicolargo.Votez pour ce billet sur Planet Libre.

Emmanuel Kasper : Linux, ZFS et disque SATA: remplacement de disque sans faute en 5 commandes

mardi 18 septembre 2012 à 17:10

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

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


Gravatar de Emmanuel Kasper
Original post of Emmanuel Kasper.Votez pour ce billet sur Planet Libre.

Lolokai : Installation de Nagios sur une CentOS 6

mardi 18 septembre 2012 à 05:15

Introduction

Aujourd’hui j’ai décidé d’un petit retour au source ;) . Dans le monde de la supervision plusieurs moteur de supervision sortent leurs épingle du jeu. L’ordonnanceur Nagios sort son épingle du jeu en s’imposant depuis plusieurs années comme le moteur de supervision de références. Né en 1999 sous le nom de NetSaint il sera appelé plus tard Nagios sa version actuelle est la 3.4.1. Grâce à sa modularité, il permet de supervision à la fois des serveurs, des équipements réseaux, des applications etc… Nagios est distribué sous licence GPL et inclut par défaut : un moteur de supervision, une interface web pour visualiser les alertes, des plugins. Il convient cependant de souligner que Nagios présente plusieurs défauts : une communauté peu ouverte aux innovations, une configuration longue et plutôt pénible puisqu’elle se déroule en ligne de commande, une visualisation des alertes peu intuitive, une architecture assez lourde.

Installation

Désactivation de SELinux

J’ai rencontré pas mal de soucis au démarrage de Nagios à cause de SELinux, je recommande donc de le désactiver. Editez le fichier suivant :

vi /etc/selinux/config

Remplacez

SELINUX=enforcing (ou SELINUX=permissive)

par

SELINUX=disabled

Redémarrez votre serveur.

Installation de Nagios

Pour installer Nagios sous CentOS 6.1 (32 bits) depuis le gestionnaire de paquet yum il est nécessaire d’utiliser le repository rpmforge :

rpm –import http://apt.sw.be/RPM-GPG-KEY.dag.txt
rpm -i http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

Une fois le répository installé, installez Nagios et tous les paquets intéressants pour celui-ci :

yum install nagios nagios-*

Lancez les services suivants au démarrage (j’ai inclus nsca aussi ;) ) :

chkconfig –level 234 nagios on
chkconfig –level 234 httpd on
chkconfig –level 234 nsca on

Configuration

La configuration des hôtes, services etc… se déroule ici /etc/nagios.
Par défaut, une configuration existe et est contenue dans /etc/nagios/objects/, il suffit de l’éditer pour ajouter des informations. Nous allons maintenant générer un mot de passe pour la connexion à l’interface web :

htpasswd -c /etc/nagios/htpasswd.users nagiosadmin

N’oubliez pas de démarrer vos services :

service nagios start
service httpd start

Accédez à l’interface web de Nagios en tapant : http://[IP-DE-VOTRE-SERVEUR]/nagios/.

Conclusion

Nous avons vu dans ce billet, comment installer Nagios sur CentOS 6 ;) . Cependant, l’utilisation d’un utilitaire comme Centreon pourrait grandement améliorer cet ordonnanceur :) . Utilisez-vous un autre outil pour la supervision de votre système d’information ?

 Loic FONTAINE

Gravatar de Lolokai
Original post of Lolokai.Votez pour ce billet sur Planet Libre.

crowd42 : Turnkey Linux : dépoloyer votre serveur web en quelques clics

lundi 17 septembre 2012 à 20:48

Il y a quelques semaines, grâce au billet proposé par Baloo (que je remercie encore au passage), j’ai pu découvrir Yunohost. Une distribution faite pour les personnes qui souhaite monter leurs serveurs d’hébergement, mais qui n’ont ni les connaissances pour ça, ni du temps libre à consacrer pour monter les différentes briques de leurs serveurs.

Yunohost m’a mis aussi sur le chemin d’un nouveau genre (pour moi) de distributions, c’est ainsi qu’après quelques recherches sur le web, j’ai découvert Turnkey Linux. Une solution qui permet de monter en quelques minutes (et clics) un serveur de production LAMP, ou encore de choisir parmi les 100 applications proposées : Drupal, WordPress, Zen Cart, Zimbra, Etherpad Lite, GitLab…

Mais ce n’est pas l’unique plus qu’offre Turnkey, car en plus des images iso, il est possible de télécharger des images de machines virtuelles et les importer dans VirtualBox par exemple. Une solution très utile si on cherche à tester une application sans pour autant devoir l’installer.

Pour en savoir plus sur Turnkey Linux, je vous invite à se rendre sur cette page du site officiel du projet

Cet article Turnkey Linux : dépoloyer votre serveur web en quelques clics est apparu en premier sur crowd42.

Related posts:

  1. Lightweight Portable Security : GNU/Linux made by les militaires US
  2. Quelques pistes pour mieux protéger votre vie privé
  3. Yunohost, une distribution debian qui automatise l’installation de votre serveur personnel

flattr this!

Gravatar de crowd42
Original post of crowd42.Votez pour ce billet sur Planet Libre.