Fedora-Fr - Communauté francophone Fedora - Linux

Planet de Fedora-Fr : la communauté francophone autour de la distribution Linux Fedora

A propos

Cette page est actualisée toutes les heures.

Cette page est une sélection de blogs autour de Fedora. Fedora-Fr.org décline toute responsabilité au sujet des propos tenus par les auteurs des blogs de ce planet. Leurs propos sont leur entière responsabilité.

Le contenu de ce planet appartient à leurs auteurs respectifs. Merci de consulter leur blogs pour obtenir les licences respectives.

Mot-clefs : planet-libre

Faire une application web en D comme en JEE

Jonathan Mercier

Bonjour cher lecteur,
Aujourd'hui je vous présente comment créé une application web en D avec Tango et Mango

Prérequis

Dépôt D

Ajouter le dépôt D comme expliqué ici: Depôt pour le langage D
Installer ensuite le paquet mango-devel

$ su -c 'yum install mango-devel'

Pare-Feu

Vous devez :

  • ouvrir les ports 8080 tcp et udp
  • démarrer le service httpd
$ su -c 'service httpd start'

Architecture Logiciel

.
|-- fr
|   `-- bioinfornatics
|       `-- bioinformatic
|           |-- controller
|           |   `-- Controller.d
|           |-- main.d
|           |-- model
|           `-- view
|               |-- Home.d
|               `-- Introduction.d

Pour cela:

$ mkdir -p fr/bioinfornatics/bioinformatic/controller  fr/bioinfornatics/bioinformatic/viewfr/ bioinfornatics/bioinformatic/model

Exemple de code

Fichier main.d

module fr.bioinfornatics.bioinformatic.main;
private import tango.util.log.Log                                   : Log, Logger;
private import tango.net.InternetAddress                            : InternetAddress;
private import mango.net.servlet.ServletProvider                    : ServletProvider;
private import mango.net.servlet.ServletContext                     : ServletContext;
private import mango.net.http.server.HttpServer                     : HttpServer;
private import mango.net.servlet.tools.AdminServlet                 : AdminServlet;
private import fr.bioinfornatics.bioinformatic.controller.Controller: Controller;
 
void main(){
    Logger logger           = Log.lookup("fr.bioinfornatics.bioinformatic.main");
    // Construct a servlet-provider
    ServletProvider sp      = new ServletProvider(logger);
    logger.info ("registering servlets");
    // Create a log-admin servlet
    new AdminServlet (sp, sp.getDefaultContext);
    // Create a controller object for request uri web page
    Controller controller   = new Controller(logger);
    // Create a context for D_Programming servlets
    ServletContext context  = sp.addContext(new ServletContext (""));
    // Map all requests to our controller servlet
    sp.addMapping("/",                                          sp.addServlet (controller, context));
    sp.addMapping("/introduction",                              sp.addServlet (controller, context));
    sp.addMapping("/first_programm",                            sp.addServlet (controller, context));
    sp.addMapping("/basics_of_imperative_programming_language", sp.addServlet (controller, context));
    sp.addMapping("/object_oriented_programming",               sp.addServlet (controller, context));
    // Bind to port 80 on a local address
    InternetAddress addr    = new InternetAddress (8080);
    // Create a (1 thread) server using the ServiceProvider to service requests
    HttpServer server       = new HttpServer (sp, addr, 1, logger);
    // Start listening for requests (but this thread does not listen)
    logger.info("starting server");
    server.start;
}

Logger est un objet pratique pour lister les différents évènements.
On créé une instance de la classe Controller, cet objet recevra les différents context que l'on défini après et redirigera vers la page approprié
Ensuite on crée une instance de la classe ServletContext qui gérera les différents context (pages web) existant.
On définit l'adresse et le port pour accéder au site à l'aide d'une instance de la classe InternetAddress ici on on définit le port 8080 pour accéder au site web
Ensuite on construit le serveur avec une instance des classes: ServletProvider, InternetAddress, Logger et on le démarre

Fichier Controller.d

module fr.bioinfornatics.bioinformatic.controller.Controller;
// for testing the servlet-engine
private import mango.net.servlet.Servlet                : Servlet;
private import mango.net.servlet.model.IServletRequest  : IServletRequest;
private import mango.net.servlet.model.IServletResponse : IServletResponse;
// for logging
private import tango.util.log.Log                       : Logger;
// for get uri
private import tango.net.model.UriView                 : UriView;
private import fr.bioinfornatics.bioinformatic.view.Introduction;
private import fr.bioinfornatics.bioinformatic.view.Home;
 
public class Controller : Servlet{
    private Logger logger;
 
    public this(Logger log){
        logger = log;
        logger  = log.lookup("fr.bioinfornatics.bioinformatic.controller.Controller");
        logger.info("Controller object is constructed");
    }
 
    //Handle all the different request methods ...
    void service (IServletRequest request, IServletResponse response){
        switch(request.uri.getPath){
            case "/introduction":
                Introduction introduction = new Introduction(logger);
                introduction.service(request,response);
                break;
            case "/first_programm":
                break;
            case "/basics_of_imperative_programming_language":
                break;
            case "/object_oriented_programming":
                break;
            default:
                Home home = new Home(logger);
                home.service(request,response);
                break;
        }
 
    }
}

Le Controller et la servlet principale de l'application web, son travail sera de vérifier les demandes utilisateurs comme les urls entrée et les champs utilisateurs des formulaires puis de rediriger vers la page demandé.

Fichier Home.d

module fr.bioinfornatics.bioinformatic.view.Home;
// for testing the servlet-engine
private import mango.net.servlet.Servlet                : Servlet;
private import mango.net.servlet.model.IServletRequest  : IServletRequest;
private import mango.net.servlet.model.IServletResponse : IServletResponse;
// for write content web page
private import tango.io.model.IConduit                  : OutputBuffer;
private import mango.io.protocol.model.IWriter          : IWriter;
private import tango.util.log.Log                       : Logger;
 
class Home : Servlet{
    private Logger logger;
 
    public this(Logger log){
        logger = log;
        logger  = log.lookup("fr.bioinfornatics.bioinformatic.controller.Home");
        logger.info("Home object is constructed");
    }
 
    //Handle all the different request methods ...
    void service (IServletRequest request, IServletResponse response){
        logger.info ("Request for Home");
        // say we are writing html
        response.setContentType ("text/html");
        // get the response output ...
        OutputBuffer output = response.buffer;
        // write HTML preamble ...
        output  ("<HTML>\n\t<HEAD>\n\t\t<TITLE>Home Page</TITLE>\n\t</HEAD>\n\t<BODY>\n\t\t"c)
                ("<P>Hello</P>\n\t\t"c)
                ("<UL>\n\t\t\t"c)
                ("<LI><a href=\"http://localhost:8080/introduction\">Introduction</a>\n\t\t\t"c)
                ("<LI><a href=\"http://localhost:8080/first_program\">First program</a>\n\t\t\t"c)
                ("<LI><a href=\"http://localhost:8080/basics_of_imperative_programming_language\">Basics of imperative programming language</a>\n\t\t\t"c)
                ("<LI><a href=\"http://localhost:8080/object_oriented_programming\">Object oriented programming</a>\n\t\t\t"c)
                ("</UL>\n\t"c)
                ("</BODY>\n</HTML>"c);
    }
 
}

Cette classe permet de générer le code HTML de la page principale lorsque la méthode service est invoqué.

Fichier Introduction.d

module fr.bioinfornatics.bioinformatic.view.Introduction;
// for testing the servlet-engine
private import mango.net.servlet.Servlet                : Servlet;
private import mango.net.servlet.model.IServletRequest  : IServletRequest;
private import mango.net.servlet.model.IServletResponse : IServletResponse;
// for write content web page
private import tango.io.model.IConduit                  : OutputBuffer;
private import tango.util.log.Log                       : Logger;
 
class Introduction : Servlet{
    private Logger logger;
 
    public this(Logger log){
        logger = log;
        logger  = log.lookup("fr.bioinfornatics.bioinformatic.controller.Introduction");
        logger.info("Introduction object is constructed");
    }
 
    //Handle all the different request methods ...
    void service (IServletRequest request, IServletResponse response){
        logger.info ("Request for Introduction");
        // say we are writing html
        response.setContentType ("text/html");
        // get the response output ...
        OutputBuffer output = response.buffer;
        // write HTML preamble ...
        output  ("<HTML>\n\t<HEAD>\n\t\t<TITLE>Introduction</TITLE>\n\t</HEAD>\n\t<BODY>\n\t")
                ("<P>D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. Special attention is given to the needs of quality assurance, documentation, management, portability and reliability. The D language is statically typed and compiles directly to machine code. It's multiparadigm, supporting many programming styles: imperative, object oriented, and metaprogramming. It's a member of the C syntax family, and its appearance is very similar to that of C++. Here's a quick list of <a href=\"http://www.digitalmars.com/d/2.0/comparison.html\">features</a>.</P>\n\t"c)
                ("<P>It is not governed by a corporate agenda or any overarching theory of programming. The needs and contributions of the <a href=\"http://www.digitalmars.com/NewsGroup.html\">D programming community</a> form the direction it goes.</P>\n"c)
                ("</BODY>\n</HTML>"c);
    }
 
}

Cette classe permet de générer le code HTML de la page introduction lorsque la méthode service est invoqué.

Compiler et lancer l'application web

$ cd /path/to/my/project
$ ldc  -w -L -lmango $(find -name "*.d") -of example

On compile en récupérant tout les fichier dont l'extention est *.d contre la bibliothèque mango le nom de l'éxécutable sera example
Ensuite on lance l'application

$ ./example

Maintenant ouvrez votre navigateur web et allez sur localhost

A bientôt

Signé: bioinfornatics, Jonathan MERCIER

Programmer en D avec SDL et openGL

Jonathan Mercier

Bonjour cher lecteur,

Aujourd'hui je vous présente comment programmer en D pour faire des applications 2D et 3D grâce à SDL et openGL.

Prérequis

Ajouter le dépôt D comme expliqué ici: Depôt pour le langage D
Installer ensuite les paquets Derelict-SDL et Derelict-GL, les bibliothèques statiques et de développement soit

# yum install  derelict-SDL* derelict-GL*

Exemple de code

Créons un fichier main.d qui contient

private import Display;
private import derelict.sdl.sdl:    SDL_Event, SDL_PollEvent, SDL_QUIT;
 
void main(){
    bool    isRunning   = true;
    Display display     = new Display();
    scope(exit) display.cleanup();
    while(isRunning){
        isRunning = display.event();
        // clear the screen. by default it clears to black
        display.clear();
        //display graphic
        display.drawGLFrame();
    }
}
  1. On crée un booléen pour la boucle principale du programme
  2. On crée une instance de classe Display que l'on verra son contenu plus loin
  3. Lorsque le programme se terminera, il executera obligatoirement la méthode display.cleanup()
  4. Tant qu'un évènement donne pas l'ordre de quitter (bouton fermer par exemple) le booléen sera vrai
    • On on rafraichit l'image

Maintenant créons notre fichier Display.d

private import derelict.sdl.sdl;
private import derelict.opengl.gl;
private import derelict.opengl.glu;
private import tango.stdc.stringz;
//private import tango.io.Stdout;
 
class Display{
    // horizontal and vertical screen resolution
    private uint height;
    private uint width;
    // number of bits per pixel used for display. 24 => true color
    private uint bitsPerPixel;
    // field of view => the angle our camera will see vertically
    private float fov;
    // distance of the near clipping plane
    private float nearPlane;
    // distance of the far clipping plane
    private float farPlane;
    /**
     * Setup some basic OpenGL parameters
     */
    private void setupGL(){
        // switch to the projection mode matrix
        glMatrixMode(GL_PROJECTION);
        // load the identity matrix for projection
        glLoadIdentity();
        // setup a perspective projection matrix
        gluPerspective(fov, cast(float)height / width, nearPlane, farPlane);
        // switch back to the modelview transformation matrix
        glMatrixMode(GL_MODELVIEW);
        // load the identity matrix for modelview
        glLoadIdentity();
    }
    /**
     * Library initializer
     */
    private void init(){
        // initialize SDL, GL and GLU Derelict modules
        DerelictSDL.load();
        DerelictGL.load();
        DerelictGLU.load();
        // initialize SDL's VIDEO module
        SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER);
        // enable double-buffering
        SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
        // create our OpenGL window
        SDL_SetVideoMode(height, width, bitsPerPixel, SDL_OPENGL);
        SDL_WM_SetCaption(toStringz("D is the best"), null);
        setupGL();
    }
    /**
     * Constructor
     */
    public this(){
        height      = 800;
        width       = 600;
        bitsPerPixel= 24;
        fov         = 90;
        nearPlane   = 0.1f;
        farPlane    = 100.f;
        init();
    }
    public ~this(){
        //cleanup();
    }
    /**
     * be nice and release all resources
     */
    public static void cleanup(){
        // tell SDL to quit
        if(SDL_Quit !is null)
            SDL_Quit();
        // release GL, GLU and SDL's shared libs
        DerelictGLU.unload();
        DerelictGL.unload();
        DerelictSDL.unload();
    }
    public void clear(){
        glClear(GL_COLOR_BUFFER_BIT);
    }
    public void drawGLFrame(){
        glBegin(GL_TRIANGLES);
            glColor3f (1,  0,  0);
            glVertex3f(-1, -1, -2);
            glColor3f (0,  1,  0);
            glVertex3f(1, -1, -2);
            glColor3f (0,  0,  1);
            glVertex3f(0,  1, -2);
        glEnd();
        // swap the buffers, making our backbuffer the visible one
        SDL_GL_SwapBuffers();
    }
 
    public bool event(){
        bool isRunning = true;
        SDL_Event event;
        // handle all SDL events that we might've received in this loop iteration
        while(SDL_PollEvent(&event)){
            switch(event.type){
                // user has clicked on the window's close button
                case SDL_QUIT:
                    isRunning = false;
                    break;
                // by default, we do nothing => break from the switch
                default:
                    break;
            }
            //Stdout.formatln("event.type: {}",event.type);
        }
        return isRunning;
    }
}

Ici on crée une classe pour gérer l'affichage que l'on appelle Display.

Elle contient des attributs pour:

  • La résolution de la fenêtre (height, width)
  • La qualité de l'image (bitsPerPixel)
  • Angle de caméra (fov)
  • Spécifie la distance minimum entre le spectateur par rapport au plan (nearPlane)
  • Spécifie la distance maximum entre le spectateur par rapport au plan (farPlane)

Le constructeur par défaut initialise les attributs ainsi que les bibliothèques openGL/SDL par l'appel de la fonction init()
La fonction event renvoie un booléen, faux si on souhaite quitter sinon vrai
La fonction drawGLFrame dessine un triangle
La fonction statique cleanup est optionnelle elle permet de s'assurer de quitter proprement

Je vous laisse potasser sur le code :)" class="smiley

Compilation

Pour compiler l'application on doit spécifier les bibliothèques avec lesquelles le programme est lié soit ici:

$ ldc -g -w -L -ldl -L -lDerelictGL -L -lDerelictGLU  -L -lDerelictSDL -L -lDerelictUtil *.d -of example

Produira un éxécutable nommé example

Éxécution

Simplement, après compilation

$ ./example

Résultat

Capture-D_is_the_best.png

C'est beau hein!

Liens

A bientôt

Signé: bioinfornatics, Jonathan MERCIER

Apprendre le langage D pas à pas

Jonathan Mercier

Bonjour cher lecteur,

J'ai rédigé pour vous un petit livre vous permettant de commencer en langage D.

Pourquoi passé au langage D, différents points concernant C/C++ et java?

  1. Finis les .c et .h le compilateur s'en occupe vous mettez tous dans un .d
  2. Finis la gestion galère de la mémoire en D vous avez un ramasse miette couplé à la méthode RAII ça donne des applications très sûre
  3. La gestion des tableaux et des matrices un vrai bonnheur
  4. Pas de machine virtuelle
  5. Plein de fonctionalité native puissante comme les mots clés unittest, version, debug
  6. Des programmes rapides de performance égale au C/C++
  7. Des templates très puissants
  8. Facilter d'écriture du code comme en Python/Ruby

A bientôt

Signé: bioinfornatics, Jonathan MERCIER

Depôt pour le langage D

Jonathan Mercier

Bonjour cher lecteur,

Cette nouvelle fonctionalité arrive avec Fedora 14: http://fedoraproject.org/wiki/Features/D_Programming

Il y a ici un dépôt non officiel pour le langage D: http://repos.fedorapeople.org/

A faire:

$ su -
# cd /etc/yum.repos.d/
# urlgrabber http://repos.fedorapeople.org/repos/bioinfornatics/D/fedora-D.repo
# yum install ldc tango

A bientôt

Signé: bioinfornatics, Jonathan MERCIER

Programmation en D lire les entrées clavier 2

Jonathan Mercier

Bonjour cher lecteur,

Comment lire les entrées clavier en D et changer le type?

import tango.io.Console;
import tango.util.Convert;
import tango.io.Stdout;
 
void main()
{
    Cout("Entrer votre nom: ")();
    char[] nom = Cin.get;
    Cout("Entrer votre age: ")();
    uint age = to!(uint)(Cin.get);
    Stdout.formatln("Salut {} tu as donc {} ans", nom , age);    
}

A bientôt

Signé: bioinfornatics, Jonathan MERCIER

Programmation en D lire les entrées clavier

Jonathan Mercier

Bonjour cher lecteur,

Comment ire les entrées clavier en D ?

import tango.io.Console;
 
void main()
{
    Cout("Entrer votre nom: ")();
    char[] nom = Cin.get;
    Cout("Salut ")(nom).newline;
}

A bientôt

Signé: bioinfornatics, Jonathan MERCIER

Fedora 13 à l'honneur dans la presse cet été

Thomas Canniot

Fedora 13 déroge aux habitudes de la presse écrite. C’est avec beaucoup de plaisir que nous pouvons retrouver Fedora 13 à l’honneur dans 2 magazines chez vos marchands de journaux cet été :

couverture linux pratique essentiel été 2010

Tout d’abord, Linux Pratique Essentiel, qui n’a pas l’habitude de parler énormément de Fedora. On saluera la grande qualité du magazine (ndla : Fleur oblige)et sa justesse dans la description apportée à Fedora au fil des lignes : « Fedora ne se présente pas tout à fait comme une distribution grand public. Elle est d’ailleurs beaucoup moins utilisée par le linuxien novice, qui se tourne préférentiellement vers des distributions plus accessibles » ou encore « Lorsque l’on évoque cette distribution, il est souvent question d’un système destiné à des utilisateurs avancés ou à ceux désirant profiter des dernières fonctionnalités développées ». Et s’en suit un dossier très complet et toujours très juste sur plus de 35 pages. Un régal, foncez !

Autre magazine, Linux Identity, tout aussi intéressant et dont la réalisation a été confiée à l’un des membres de la communauté francophone de Fedora, Marc Bessière (HappyDino) :

couverture linux identity spécial fedora 13

Comme à son habitude, le contenu est exhaustif et les conseils accompagnant les étapes de mise en œuvre de Fedora très judicieux. Marc est en effet un habitué de la communauté francophone et ses articles sont marqués par son expérience. Il vous propose de découvrir les nouveautés de Fedora 13 avant d’envisager une transition en douceur depuis Fedora 12. Chose de plus en plus commune, Fedora peut se vanter de la qualité de l’intégration du bureau KDE et Marc nous présente son retour d’expérience sur cet autre visage de Fedora, malheureusement trop méconnu.

Dilemme, je ne peux même pas vous conseiller la lecture d’un seul magazine. Je vous conseille la lecture des deux. Ils en valent le coup.

Wrap-up des Rencontres Fedora 13 à Paris

Mathieu Bridon

Le 5 juin 2010 avaient lieu les Rencontres Fedora 13 à la Cité des Sciences pour fêter la sortie de Fedora 13. Cet événement s'est tenu dans le cadre du Premier Samedi du Libre. [Comment ça je suis à la bourre ?]

Nous avons ainsi pu accueillir 150 visiteurs venus pour installer Fedora, résoudre leurs problèmes, assister aux conférences et ateliers ou tout simplement discuter avec d'autres membres de la communauté.

Une conférence sur Zarafa a eu lieu, ainsi que deux ateliers sur l'administration Linux et sur LaTeX. Les slides sont disponibles sur la page de l'événement.

La bonne surprise est venue de Firas qui a filmé l'événement, la conférence sur Zarafa et a même réalisé une interview. [dans laquelle j'ai surement dit plein de conneries, flamewars welcome :-)" class="smiley ]

Merci à ceux d'entre vous qui étaient présents, et à bientôt pour les Rencontres Fedora 14 ! [ou le prochain premier samedi]

Muffin : c'est reparti pour un tour !

Thomas Canniot

Cédrik Guilbaud vient de lancer la machine à créer le numéro 2 de Muffin dans sa dernière ligne droite !

Bonjour à toutes et à tous,

Voici le plan final du second numéro du magazine de fedora-fr. Ce dernier
est disponible sur la page suivante :

http://mag.fedora-fr.org/wiki/Num%C3%A9ro_2

Cette page est maintenant à jour ! Il reste un peu de boulot mais pour ce
qui est du plan c’est définitif. Je demande donc à l’ensemble des
contributeurs de bien vouloir se pencher sur ce qu’il reste à faire.

J’ai également basculé des articles dans la section “relecture” afin que ces
derniers soient validés et puissent être susceptibles d’être intégrés à la
mise en page provisoire.

Le point est rapide mais nécessaire. Je suis à votre disposition pour toutes
questions concernant le numéro en cours.

Je suis pour ma part, en rédaction des rubriques et articles me concernant
mais j’aimerais que l’effort soit commun..!

Je vous remercie d’avance pour le travail qui sera effectué dans les jours à
venir.


Salutations et Go!!!


N’hésitez pas, contribuez, c’est gratuit !

Retrouvez les discussions sur Muffin sur la liste !

Les sujets de conversations de Fedora 13 ont été choisis

Thomas Canniot

Et voilà, les sujets de conversation de Fedora 13 ont été choisis. Il s’agit des sujets qui seront mis en avant en tant qu’arguments pour une utilisation de Fedora 13. D’après https://fedoraproject.org/wiki/Fedora_13_Talking_Points, il s’agit des suivants :

Pour tous les utilisateurs et les utilisateurs orientés bureautique

  1. Installation automatique des pilotes d’impression
  2. Installation automatique des packs de langues
  3. Refonte de l’interface de gestion des utilisateurs
  4. La gestion des couleurs
  5. NetworkManager peut maintenant être utilisé en ligne de commande
  6. Prise en charge expérimentale de la 3D dans le pilote Nouveau

Pour les administrateurs

  1. BFO
  2. Refonte de l’interface de authconfig
  3. Inclusion de fonctionnalités très récentes de NFS
  4. Zarafa
  5. Possibilité de test de btrfs


Pour les développeurs

  1. Explorations statiques avec SystemTap
  2. Débuggage de python facilité
  3. Installation de Python 3 en parallèle
  4. NetBeans 6.8 est le premier IDE à prendre en charge la totalité des spécifications Java 6 EE

Nouvelles versions personnalisées (spin)

  1. Spin Moblin
  2. Spin « Sugar on a Stick »
  3. Spin Design Studio
  4. Spin Security

A propos de la traduction de Fedora en français

Thomas Canniot

Cela devient presque une habitude… l’équipe de traduction francophone de Fedora rame à fidéliser ses contributeurs. Cette fois, plutôt que de vous renvoyer vers la procédure, j’ai envie de vous demander… pourquoi ? A votre avis ? Pourquoi ne traduisez-vous pas alors que vous avez des connaissances en anglais ? En quoi cette procédure est gênante ? Que pouvons-nous faire pour l’améliorer ? Bref, tout ce qui vous passe par la tête et qui serait à même de nous faire avancer. D’avance, merci pour vos commentaires :-)

Pourquoi je n'abandonnerai pas Firefox

Thomas Canniot

C’est assez étrange. Je vois de plus en plus de linuxiens se laisser tenter par Google Chrome. Et j’ai le sentiment que sur le long terme, ce choix n’est pas le bon.

Google est rentré dans la course aux navigateurs web dans le but d’en faire la brique de base de son futur système d’exploitation. Google a fait le choix des technologies libres pour son navigateur en le basant sur un moteur de rendu existant et éprouvé, Webkit. Google Chrome est un logiciel libre, et c’est bien. Mais pourtant, utiliser Google Chrome au quotidien cache une chose moins bien glorieuse pour le web sur le long terme : utiliser Firefox de manière marginale, voire l’abandonner.

C’est là tout le problème je pense. Les deux navigateurs sont très bons dans l’ensemble. On peut difficilement leur reprocher quoi que se soit. Pourtant, leur développement est mené par deux entités bien différentes et aux objectifs… opposés.

Google a un objectif mercantile et choisit les technologies qui vont lui permettre de créer une offre rapidement afin de générer des marges juteuses. Que Google Chrome soit vert, noir ou bleu, peut importe. L’important est qu’il permette à Google de générer des profits sur le long terme.

Mozilla Firefox voit son développement encadré par la fondation Mozilla. Ses objectifs sont clairs : préserver l’ouverture du web et son accessibilité grâce à un navigateur à la pointe de la technologie. Des profits ? Oui, bien sûr, autant que faire se peut, mais dans l’objectif de les réutiliser pour le développement du navigateur.

Un exemple simple vient facilement à l’esprit de qui suit un peu l’actualité informatique de ces dernières semaines : le choix de Google d’utiliser le format propriétaire et payant H.264 dans Chrome et celui de la Fondation Mozilla de promouvoir une technologie libre et gratuite, l’ogg Theora.

C’est aussi oublier bien rapidement d’où nous venons, c’est à dire la suprématie d’Internet Explorer 6, et ce que nous a permis d’achever Mozilla Firefox : la pérennité du web face à un éditeur de logiciels et technologies propriétaires, qui n’a, lui aussi, que des objectifs mercantiles.

Sur le long terme, je fais confiance à la Fondation Mozilla pour faire les bons choix pour le web et pour continuer de maintenir cette concurrence autour des technologies libres et ouvertes. Étrangement, je ne peux pas accorder autant de crédits à Google.

Et vous ?

Fedora 7 est de retour !

Thomas Canniot

Et oui, mieux vaut tard que jamais ! Alors que le Projet Fedora nous mijote Fedora 13, dont la première version Alpha n’est pas prévue avant mars, il faut donc vous occuper un peu en cette période de vache maigre : Fedora 7 remet donc le couvert, à table !

  • Fedora 7, c’est un peu comme le renouveau. Le moment tant attendu par la communauté du Projet Fedora, le moment où, enfin, elle se voit confier le développement de la distribution ; le moment où tous les paquets du systèmes sont buildables par tous les volontaires. Le moment où Core n’existe plus. Le moment où l’entreprise et le communautaire ne font plus qu’un. Et oui ! Fedora 7 voit la fin des dépôts Core et Extras. Qu’ils brûlent en enfer ! Fedora 7 abat les murs et réunit les amis d’antan. Un seul et même grand dépôt où les spécifications de construction des paquets sont respectées aussi bien par RedHat que par la communauté.
  • Fedora 7 c’est aussi l’émergence des Spins, ces versions personnalisées de Fedora qui nous donne : un live CD GNOME, un live CD KDE… les premières briques qui donneront naissance au portail dédié (toujours en construction).
  • Fedora 7 rime avec amélioration : amélioration de yum, amélioration de NetworkManager, amélioration de Xorg et de la gestion de l’énergie… et j’en passe !
  • Fedora 7 c’est aussi le dernier thème réalisé par Diana Fong. Fly High. Silence, respect. I love you Diana !

Et vous, Fedora 7 c’était quoi ?

Cloture des Rencontres Fedora 12

Mathieu Bridon

Les Rencontres Fedora 12 ont eu lieu les 12 et 13 décembre 2009 à la Cité des Sciences et de l'Industrie à Paris.

Avec un peu (qui a dit beaucoup ? :-)) de retard, les slides des conférences et ateliers sont désormais disponibles sur la page de l'événement, chacune dans la section correspondante. Le reportage vidéo, ainsi que les compte-rendus y sont aussi disponibles en bas de page.

La plupart des conférences ont été filmées. Malheureusement, les vidéos ne sont toujours pas disponibles, mais nous espérons qu'elles le seront prochainement.

Les intervenants ont tous accepté de mettre leurs documents sous licence CC-BY-SA. N'hésitez donc pas à les télécharger, les utiliser, vous en inspirer,...

Quand la lecture d'un CD me laisse perplexe.

Thomas Canniot

Il ne s’agit pas d’un CD « normal », j’en conviens, mais de ces formats un peu « bâtard » : un CD de 90 min.

Testé sur plusieurs configuration, et forcément plus OS. Le résultat est parfois vraiment surprenant. Pourquoi ?

CD n°1 
PC \ OS Fedora 12 Windows XP Windows 7 MacOS X  10.6.2
PC portable
illisible na
lecture parfaite na
Tour
na lecture parfaite
na na
MacBook
na na
na lecture parfaite

Le résultat est encore plus étrange avec le deuxième CD…

CD n°2 
PC \ OS Fedora 12 Windows XP Windows 7 MacOS X  10.6.2
PC portable
illisible na
erreur na
Tour
na
erreur na na
MacBook
na na
na lecture parfaite

La conclusion est donc assez mitigée. Autant parfois le lecteur de CD semble réellement incriminé, autant parfois l’OS entre clairement en cause. Pourquoi ? Une histoire de firmware ?

Où est l'Open Source ?

Mathieu Bridon

Chez nous :-)" class="smiley

RedHat et Georgia Tech ont récemment publié une étude sur le sujet.

L'étude a pour résultat deux cartes interactives, montrant le classement de 75 pays du monde en ce qui concerne l'activité autour du logiciel libre et open source ainsi que l'environnement plus ou moins propice à l'expansion du logiciel libre et open source.

Une grosse surprise (en tous cas pour ma part) : la France est première en terme d'activité, tout particulièrement grâce à une grande adoption dans le secteur public (critère "Government").

A mettre en perspective avec les événements récents...

« M'sieur, m'sieur, mon XO il est tout cassé »

Mathieu Bridon

Mercredi 11 mars se tenait au /tmp/lab un atelier de réparation de XOs, organisé par l'association OLPC-France.

Bien que nos XOs soient en parfait état, Nashella et moi-même sommes allés y participer, afin de jeter un oeil dans les entrailles de la bête.

Démonter un XO est un jeu d'enfant. Des instructions sont disponibles en vidéo :

Un tournevis en main et les vidéos sous les yeux, nous avons alors entrepris de réparer 5 XOs défectueux.

La première étape est d'isoler le composant qui ne fonctionne plus. Pour cela, on peut démarrer le XO en maintenant la touche gauche du joystick de jeu situé dans la partie supérieure. Le XO va alors lancer une procédure de test de chaque composant.

XO selftest

Nous avons pour notre part changé un clavier dont une touche avait été arrachée. Voici ce qu'on obtient une fois la partie inférieure désossée.

XO bottom disassembly

Un autre couple s'est quant à lui atelé au changement d'un écran défectueux.

Il est aussi possible d'accéder à la carte mère et d'y brancher un cable série, afin d'accéder en console au XO (avec un outil comme minicom par exemple). Voici ce que ça donne :

XO top disassembly with serial cable connected

Au final, cet atelier aura permis de réparer 4 XOs et demi. En effet, l'écran du cinquième ne s'allumait plus du tout. Après avoir changé la pile du XO, seule une des deux moitiés de l'écran s'allumait. L'heure du dernier RER approchant, le changement de cet écran a été remis à plus tard.

Pour les plus curieux, OLPC-France maintient une page de ressources sur le démontage et la réparation de XOs.

A voté !

Mathieu Bridon

J'ai voté. Et vous ?

Paris se pare de bleu pour un appel à la communauté

Mathieu Bridon

Cela a déjà été annoncé: les 6 et 7 décembre se tiendront les Rencontres Fedora parisiennes en l'honneur de Fedora 10.

D'autres vous ont déjà présenté le programme des festivités, j'aimerais néanmoins y revenir en insistant tout particulièrement sur un point.

Un des objectifs forts du Projet Fedora est son engagement envers l'upstream. Toutes les contributions Fedora sont faites directement upstream, afin que la communauté du libre dans son intégralité en profite.

Cet objectif se retrouve dans le programme de l'événement. Évidemment, nous installerons Fedora sur les ordinateurs de ceux qui le voudront. Bien sûr, nous présenteront le Projet Fedora, les nouveautés de Fedora 10, etc... Mais des conférences et ateliers plus généraux auront aussi lieu.

Jugez plutôt:

  • une conférence sur les formats ouverts et les enjeux qui y sont liés par Thierry Stoehr
  • une conférence sur le projet OLPC par deux intervenants de l'association OLPC-France
  • une conférence technique sur les outils de virtualisation sous Linux
  • un atelier sur Mutt
  • une conférence sur l'implication de Red Hat dans le libre, ou comment gagner de l'argent avec le FOSS
  • et bien d'autres !

Vous l'aurez compris, nous ne souhaitons pas voir venir uniquement des gens souhaitant de l'aide dans l'installation de Fedora.

Au lieu de ça, l'ensemble de la communauté d'utilisateurs, intéressés ou passionnés par le libre est la bienvenue. Que vous souhaitiez repartir avec Fedora installée sur votre ordinateur ou pas, venez, assistez aux conférences, participez aux ateliers. En d'autres mots, venez échanger avec nous sur le libre et passer une bonne journée, voire un week-end.

J'espère donc vous voir très nombreux, Ubunteros, Mandrivistes, Debianeux ou autres. Et Fedoristas bien sûr ;-)" class="smiley