Mémoires sur le thème des logiciels libres


Quatre courts mémoires rédigés dans le cadre de mon congé individuel de formation pour l’obtention du Master 2 Informatique en Ingénierie du Logiciel Libre :

« Les licences libres » (avril 2012) : « Les licences sont au coeur de la définition des logiciels libres/open source. En comprendre les principes est indispensable pour optimiser et sécuriser la mise à disposition ou l’utilisation de ces logiciels. Nous verrons donc les droits et obligations principales portés par trois licences représentatives et couramment utilisées dans le monde du libre : la GPLv3, la LGPLv3 et la MIT. La question de leur compatibilité mutuelle ainsi qu’avec une licence propriétaire sera également étudiée. Puis nous détaillerons comment un modèle économique peut s’appuyer sur la possibilité de distribuer un logiciel sous double licence, libre et propriétaire ».

« Les modèles économiques du logiciel libre » (avril 2012) : « Nous verrons plusieurs modèles économiques actuellement utilisés afin de résoudre l’apparente contradiction entre les logiciels libres et la possibilité d’une captation de valeur économique pour les entreprises du secteur. Les activités liées aux services web et au domaine de la sécurité informatique seront plus particulièrement détaillées avec des exemples de sociétés en activité. Les applications mobiles et les logiciels embarqués viendront illustrer des secteurs porteurs de croissance où là encore les logiciels libres ont tous les atouts pour y jouer un rôle majeur ».

« Linux et les systèmes embarqués » (décembre 2012) : « Les systèmes embarqués sont aujourd’hui omniprésents et les logiciels open source y occupent une place non négligeable. Après avoir précisé la définition et les spécificités de ces systèmes, nous verrons de quelles manières il est possible d’utiliser Linux dans le cadre du développement d’applications embarquées. Nous donnerons ensuite un exemple pour illustrer une autre approche qui peut s’avérer dans certains cas pertinente, à savoir se passer totalement de système d’exploitation. Puis nous décrirons succinctement plusieurs projets d’autres systèmes open source orientés plates-formes embarquées. Pour finir, nous étudierons le cas du Raspberry Pi, un tout petit ordinateur à bas prix mais qui pourrait bien marquer l’histoire de l’informatique ».

« L’environnement de programmation fonctionnelle DrRacket » (décembre 2011) : « Nous commencerons par décrire succintement l’environnement DrRacket puis nous verrons certains aspects particuliers du langage principal qui lui est associé. Nous approfondirons ensuite les fonctionnalités graphiques proposées ainsi que l’outil de déboguage et d’évaluation pas à pas. Enfin nous verrons comment il est possible d’étendre l’environnement DrRacket ».

Licence Creative Commons
Ces documents PDF sont disponibles selon les termes de la Licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Partage dans les Mêmes Conditions 3.0 France.

Si vous souhaitez obtenir les fichiers LaTeX originaux utilisés pour composer ces PDF, n’hésitez pas à me contacter.

Publicités

Certification Zend Framework


Suite à mon passage de la certification Zend Framework, quelques conseils pour les éventuels futurs candidats.

En premier lieu, il est plus que recommandé de consulter (et plutôt plusieurs fois qu’une) le document de préparation à la certification (« ZF Certification Study Guide« ) proposé sur le site de Zend. En 200 pages, vous aurez un condensé de tous les éléments requis. Autre document qui peut s’avérer utile, celui rédigé par Rob Allen (« Zend Framework Certification Refresher« ) qui est un rappel des notions principales de Zend Framework. Bien sûr, cela ne dispense pas de consulter la documentation officielle afin d’avoir connaissance de tous les détails de l’implémentation des classes.

Cela va sans dire, une pratique du framework est également essentielle. Et en particulier de toutes les classes concernant le MVC au sens large (accès à la base de données, aides de vues, formulaires…).

Très important, n’oubliez pas non plus de réviser les recommandations ZF sur le style du code PHP à adopter. Les classes pour l’utilisation des services web comme REST, SOAP et XML-RPC sont aussi à connaître.

Il est également obligatoire de retenir les différentes manières d’utiliser les méthodes. Très souvent, il est en effet possible pour un même paramètre de passer soit un objet soit un tableau ou bien encore le nom d’une classe. Vous devez connaître ces différents moyens de réaliser la même chose.

Pour résumer, cette certification ne m’a pas parue plus difficile (ni plus facile d’ailleurs) qu’une autre comme la certification Linux LPI. Les 90 minutes pour répondre aux 75 questions rédigées en anglais ne sont pas de trop, certaines questions nécessitent davantage de réflexion parce que les réponses proposées sont parfois très proches mais il n’y a pas de question destinée à « piéger » le candidat. Seul petit bémol, j’ai trouvé dommage de ne pas avoir la note finale, vous savez juste que vous avez obtenu la certification. Il serait intéressant d’avoir au moins une idée de son niveau et surtout de savoir dans quelles sections vous devez approfondir vos connaissances.

Voyage à La Réunion


Quelques photos de mon voyage à La Réunion en septembre 2009. Des paysages inoubliables ! Un grand merci à Cyril, Nath et leurs deux puces Célia et Loane pour leur accueil et pour les visites organisées (mieux qu’un guide péi ! 🙂 )

Gestion d’une structure d’arbre sous MySQL


  • Introduction :

Il est très courant d’avoir à stocker une structure d’arbre dans une base de données. Par exemple, pour enregistrer l’organisation hiérarchique d’une entreprise ou bien pour représenter les catégories et sous-catégories des articles d’un site web.

La façon la plus simple de procéder est d’ajouter simplement à la table concernée un champ « identifiant_parent » qui servira à stocker l’identifiant du noeud parent. Ainsi, pour stocker l’arbre suivant :

      A
  ---------
  |       |
  B       C
        -----
        |   |
        D   E
      -----
      |   |
      F   G

nous aurions les enregistrements suivants :

identifiant    identifiant_parent
A                 NULL
B                 A
C                 A
D                 C
E                 C
F                 D
G                 D

Le noeud « A » qui est la racine de l’arbre n’a évidemment aucun parent c’est pourquoi l’identifiant du parent est dans ce cas mis à NULL.

Cette technique de représentation d’un arbre a comme avantage sa très grande simplicité. Elle a par contre l’inconvénient de nécessiter pour certains traitements l’envoi de plusieurs requêtes SQL de manière récursive. En effet, pour retrouver tous les noeuds enfants de « C », il n’est pas possible de le faire directement via une seule requête SQL. Il faut tout d’abord récupérer les enfants de « C » puis, pour chaque enregistrements trouvés, récupérer à leur tour leurs enfants.

Nous allons donc voir une autre méthode plus complexe mais aussi plus performante pour stocker dans une base SQL une structure d’arbre.

Lire la suite

Client Memcached pour Objective Caml


  • Introduction :

Nous allons voir comment développer un client pour le logiciel serveur Memcached avec le langage Objective Caml. Le logiciel Memcached permet en résumé de stocker des données en mémoire vive ce qui offre des accès très rapides. Une valeur est simplement indexée par une clef unique qui est utilisée par le client pour écrire, modifier ou lire cette donnée. Memcached est typiquement utilisé pour stocker des valeurs temporaires afin de gérer un cache d’où son nom. Son protocole est relativement simple ce qui en fait un bon candidat pour une première approche du développement en Objective Caml.

Le code source complet est disponible dans cette archive.

Lire la suite

Gestion d’un cache SQL sous Zend Framework


  • Introduction

Nous allons voir comment éviter l’envoi inutile de requêtes SQL identiques lors de l’exécution d’un script PHP utilisant Zend Framework. L’idée est de mettre en cache le résultat de chaque nouvelle requête SQL. Pour ensuite être capable de renvoyer directement le résultat mis en cache dans le cas où les données de la base utilisées par cette requête n’ont pas été modifiées. En effet, si nous sommes capable de vérifier qu’aucun enregistrement des tables concernées par la requête n’a été modifié depuis la mise en cache, nous sommes certain de pouvoir renvoyer directement le résultat en cache puisque la sélection de données sera forcément identique. Attention toutefois, nous partons du principe que les requêtes ne comportent pas de conditions de sélection extérieures aux données elles-mêmes. Une requête qui comporterait par exemple une condition sur l’heure courante pourrait voir son résultat changer même si les données sur lesquelles portent la requête ne sont jamais modifiées. Il vous faudra donc veiller à utiliser à bon escient ce mécanisme de cache.

Lire la suite