mercredi 23 septembre 2009

Livre : Bases de données - de la modélisation au SQL

Enseignant à l'institut universitaire de technologie de l'Université de Paris 13, lorsque le cours de Bases de données m'a été confié, j'ai dû rechercher dans la volumineuse bibliographie sur les Bases de données un support de cours adéquat. Les ouvrages traitant correctement de la conception des bases de données, en utilisant le modèle entités-associations, ne sont pas si nombreux et datent souvent de l'époque Merise. En plus de la conception, je souhaitais aborder l'algèbre relationnelle, puis le langage SQL et enfin les déclencheurs. Chacune de ces parties devait être ponctuée de séances d'exercices sous forme de travaux dirigés ou de travaux pratiques. J'ai donc entrepris la rédaction d'un support de cours sur mesure, qui, de révision en révision, est devenu cet ouvrage édité dans la collection Info+ des éditions Ellipses sous le titre Bases de données - de la modélisation au SQL. Ce livre de 255 pages est composé de 5 chapitres décrits ci-dessous.
  1. Introduction aux bases de données – L'objectif de ce court chapitre est d'introduire la problématique des bases de données : définition de la notion de bases de données, principaux modèles de bases de données, systèmes de gestion de bases de données (SGBD).
  2. Conception des bases de données : le modèle entités-associations – Ce chapitre explique comment bien concevoir une base de données. Après une description des éléments constitutifs du modèle entités-associations, la notion de type-association est détaillée, puis un éventail méthodologique des règles qu'il est utile d'appliquer pour l'obtention d'un modèle bien formé est ensuite présenté. La problématique de la normalisation des type-entités et des type-associations est ensuite abordée avant de discuter de l'adéquation des type-associations n-aires.
  3. Modèle de données relationnel – Ce chapitre commence par une présentation du modèle relationnel, puis décrit le moyen de passer d'un modèle entités-associations à un modèle relationnel. La théorie de la normalisation, qui constitue un précieux outil pour débusquer la redondance dans les bases de données, est ensuite présentée en détail. Le chapitre aborde enfin l'algèbre relationnelle qui constitue le formalisme support du langage de requête de SQL.
  4. Langage SQL – Ce chapitre est entièrement consacré au langage SQL qui est considéré comme le langage d'accès normalisé aux bases de données relationnelles. La création et la manipulation de la structure de la base de données sont traitées en premier. Les commandes SQL d'insertion, de suppression et de modification des données sont ensuite abordées. Puis, deux sections sont entièrement consacrées à la commande d'interrogation d'une base de données. La dernière section s'intéresse à la description de quelques objets particuliers.
  5. Programmation SQL – L'objet de ce chapitre est de présenter comment combiner des commandes élémentaires SQL avec un langage de programmation. Le premier objectif est l'implémentation de fonctionnalités complexes au niveau du SGBD grâce aux fonctions utilisateur. Ces fonctions sont ensuite utilisées pour implémenter des comportements complexes et dynamiques en utilisant le mécanisme des déclencheurs, rendant ainsi la base de données active.
    Le second objectif est l'interaction entre un programme et un SGBD abordé en décrivant comment intégrer des commandes SQL à un programme écrit en langage C.
Ce livre, comportant de nombreux exercices corrigés, s'adresse à toute personne désirant se former à la problématique des bases de données.

samedi 19 septembre 2009

Remplacement du disque du Synology DS107e

Pour commencer, une bonne nouvelle : le Samsung EcoGreen F2 de 1.5 To (HD154UI) fonctionne parfaitement dans le NAS Synology DS107e. Cela dit, la procédure de remplacement n'est ni simple, ni rapide. Une première solution consiste à cloner le disque d'origine pour retrouver une configuration identique. La seconde solution consiste à repartir de zéro en réinstallant le système sur le nouveau disque. Cette seconde solution est plus longue, mais permet de repartir sur un système propre et de faire évoluer ses choix de gestion et de configuration. C'est cette seconde solution que j'ai choisie et que je présente dans ce billet. Mon premier essai avec l'assistant Synology fut un échec, et la solution préconisée pour y remédier n'y a rien fait. Voici donc la procédure qui a finalement fonctionné.
  1. J'ai effectué cette étape sous Linux. Pour pouvoir préparer le nouveau disque, il faut l'installer dans un ordinateur de bureau ou dans un boîtier externe pour disque dur. On commence par supprimer toutes les partitions du disque dur (avec gparted par exemple). Puis, pour le préparer, il suffit d'exécuter la commande suivante :
    dd if=/dev/zero of=/dev/sdl bs=1M conv=noerror
    sdl doit être par le point d'accès à votre disque (identifié par gparted par exemple). Cette procédure a pris une petite dizaine d'heures.
  2. Monter le nouveau disque dans le Synology puis télécharger les dernières versions du Firmware et du Synology Assistant.
  3. Démarrer le Synology et attendre le bip. Appuyer sur le bouton reset au dos pendant environ 4 secondes jusqu'à entendre un bip (réinitialisation de l'IP, du DNS et du mot de passe du compte admin).
  4. La version Linux du Synology Assistant n'ayant pas fonctionné, j'ai effectué cette étape sous Windows. Exécuter Synology Assistant, sélectionner le Firmware téléchargé puis appuyer sur One-Click Setup et croiser les doigts...
  5. Enfin, il ne vous reste plus qu'à tout paramétrer et copier vos données en rebranchant votre ancien disque par l'intermédiaire d'un boîtier externe pour disque dur.

vendredi 18 septembre 2009

Nouvelles du cours Bases de Données et langage SQL

Le cours Bases de Données et langage SQL hébergé chez Developpez.com se porte bien. Depuis sa mise en ligne en 2007, il totalise plus 441000 pages consultées, soit de l'ordre de 500 consultations par jour.
Cet intérêt m'a donné la motivation nécessaire pour continuer mon effort afin d'améliorer ce support de cours. Cette nouvelle version est éditée ce mois-ci dans la collection Info+ d'Ellipses. J'en parlerai prochainement dans un nouveau billet.
Je tiens à remercier les éditions Ellipses pour m'avoir autorisé à conserver la première ébauche en ligne sur le site Developpez.com.
Cette version en ligne est actuellement en cours de mise à jour. Je ne peux y apporter que peu de modifications pour ne pas faire ombrage à la version publiée. J'ai donc corrigé quelques erreurs, supprimé les sujets d'exercices (ils n'ont que peu d'intérêt sans la correction) et retaillé les images.
Voici ce que la version publié apporte par rapport à la version en ligne chez Developpez.com :
  • De nouvelles notions (spécialisation, lien identifiant, validité d'un type association n-aire, agrégat, fonctions et opérateurs SQL, fonctions utilisateur, langage PL/pgSQL, déclencheurs...). La version éditée est 2,5 fois plus volumineuse que la version en ligne (en nombre de phrases et en nombre de figures).
  • Des séances de travaux dirigés et de travaux pratiques accompagnées de corrigés complets et détaillés.
  • De nombreuses améliorations (corrections, illustrations, exemples...). En fait, seulement 10% de la version éditée se retrouve à l'identique dans la version en ligne.
  • Une présentation bien plus agréable sous la forme d'un vrai livre.

mercredi 5 août 2009

Meilleur Firefox meilleur ! (vs Meurs IE6, meurs !)

J'utilise intensivement et j'apprécie énormément le navigateur Firefox. Et c'est certainement pour ces deux raisons que Firefox m'énerve aussi.
Firefox plante (sur Ubuntu, sur Debian ou sur Windows) au moins une fois par journée d'utilisation. Quand Firefox plante, il le fait bien : tous les onglets et toutes les fenêtres plantent en même temps. Pas grave, Firefox nous propose de retrouver toutes les fenêtres et les onglets perdus lorsqu'on le relance ! Sauf que dans toutes ces fenêtres et tous ces onglets, il y a immanquablement celui qui a tout fait planté et qui refait tout planter inexorablement. On pourra toujours dire que c'est la faute à telle ou telle page qui ne respecte pas les standards du web... N'empêche, si Linux était programmé comme Firefox, c'est tout le système qui tomberait quand Firefox plante. Heureusement, ce n'est pas le cas ! Ce qui m'étonne dans tout ça, c'est que je n'entends que des louanges de Firefox et très peu de critiques. C'est facile, Firefox c'est bien et IE c'est mal. Suis-je le seul à endurer tous ces plantages de Firefox ?
Alors pour moi, Firefox est bien, qu'IE vive ou meure je m'en fout, mais Firefox doit surtout devenir meilleur !

mardi 19 mai 2009

Freebox et UPnp Av derrière un routeur externe

Comment rendre le serveur UPnP Av TwonkyMedia tournant sur un NAS Synology connecté à un switch/routeur DLink visible sur la FreeBoxHD (le mode routeur de la freebox étant désactivé) ?
Tout le problème provient du fait que le boîtier HD se trouve sur un VLAN dédié situé à l'extérieur de l'intranet créé par le switch/routeur externe.
La solution est la suivante :
  1. Autoriser les paquets ayant comme destination 239.255.255.250 (Ils contiennent l'adresse IP de la machine UPnP Av ainsi que diverses infos) ;
    (Menu "Avancé>>Filtre Entrant" sur mon DLink DIR-635)
  2. Rediriger le port 9000 pour TwonkyMedia (ou 61119 pour XBMC) en TCP et UDP vers votre l'adresse du système hébergeant le serveur UPnP. (Avec TwonkyMedia, le numéro du port est renseigné et modifiable dans le fichier twonkyvision-mediaserver.ini.)
    (Menu "Avancé>Redirection de port" sur mon DLink DIR-635)
  3. Rebooter la FreeBoxHD et patienter quelques minutes pour voir apparaître le serveur UPNP.
Sources :

mercredi 25 février 2009

Tirage Photo sur Internet

Attention, lors du tirage de photographies numériques, sur Internet ou dans un magasin, un traitement numérique est appliqué sur vos clichés. Souvent, le commercial qui vous accueil n'est même pas au courant. Sur Internet, cette particularité n'est pas toujours spécifiée. Ce traitement peut affecter la couleur, le contraste, la saturation ou encore effectuer un lissage. Par exemple, Photo Service effectue systématiquement ce type de traitement sur Internet dans l'objectif "d'améliorer" vos photographies. Cette particularité n'est actuellement pas mentionnée et évidemment pas débrayable. Certains sites rendent ce choix explicite et paramétrable. Personnellement, je trouve ces traitements automatique très préjudiciables pour les photos. Elles en ressortent moins réalistes, moins nettes, moins détaillées, bref dégradées.
Pour illustrer ce phénomène, voici un exemple de photo de mariage :
Un détail de cette photo :
Une numérisation de ce détail sur un cliché tiré par le site Internet de Photo Service, observez les aplats sur la photo :
Le même détail de la photo tiré en magasin Photo Service en demandant explicitement de ne pas effectuer de retouche automatique (en l'occurence, il faut demander d'enlever le dTFS) :
Au final, j'avais fait imprimer plus de 200 photos sur le site Internet de Photo Service. J'ai été extrêmement déçu du résultat. Les photos n'étaient tout simplement pas agréables à regarder. J'ai mis un moment à en comprendre la cause. Des retirages en magasin ont permis de la confirmer. Je tiens à remercier Photo Service pour avoir accepté de retirer l'ensemble de ces photos sans supplément de prix (les prix ne sont hélas pas du tout les mêmes en magasin et sur Internet).
J'ai écrit à Photo Service, voici un extrait de leur réponse encourageante :
Je vous rassure l'option permettant à nos clients d'opter pour une retouche automatique ou non sera disponible dans les prochains jours. Cela est actuellement en cours de développement.

lundi 23 février 2009

Prise en compte du fichier .bash_profile sous Ubuntu

Par défaut, le fichier .bash_profile n'est pas pris en compte lors du lancement d'un terminal sous Ubuntu. Pour qu'il le soit, il faut procéder de la manière suivante :
  1. Ouvrir un terminal
  2. Aller dans Édition → Profils... → Modifier → Titre et commande
  3. Cocher l'option Lancer la commande en tant que shell de connexion
Lorsque cette option est activée, les scripts de connexion de l'utilisateur, comme le .bash_profile, sont exécutés au lancement d'un terminal gnome, de la même manière que lors d'une connexion en mode console.

vendredi 20 février 2009

Conversion de l'encodage d'un fichier texte : iconv

iconv permet de convertir l'encodage d'un fichier texte. Par exemple, pour convertir le fichier fic_source encodé en UTF8 vers l'encodage ISO_8859-15 et récupérer le résultat dans le fichier dic_dest, il suffit de taper la commande :
iconv -c -f UTF-8 -t ISO_8859-15 fic_source -o fic_dest
Pour connaître la liste des encodages disponibles, saisir :
iconv -l

mardi 10 février 2009

Université : les fainéants et les mauvais chercheurs, au travail !

Consacrant plus de 50 heures hebdomadaires à mon métier d'enseignant-chercheur, j'ai été ulcéré de lire dans un article détaillé du Monde de samedi 13 octobre 2007, intitulé Réforme universitaire : Les profs en première ligne, que les maîtres de conférences travaillent "environ 6 heures hebdomadaires par semaine pendant 32 semaines" (je vous laisse au passage apprécier le "hebdomadaires par semaine").
Aujourd'hui, Valérie Pécresse, Nicolas Sarkozy et certains journalistes donnent encore cette image du mouvement des chercheurs contre la forme actuelle du décret modifiant leur statut.
Pierre Jourde vient de publier un billet qui reflète très bien le fond de ma pensée et probablement celle de la plupart de mes collègues. En voici un extrait :
[...] En fait, un universitaire moyen travaille beaucoup trop. Il exerce trois métiers, enseignant, administrateur et chercheur. Autant dire qu'il n'est pas aux 35 heures, ni aux 40, ni aux 50. Donnons une idée rapide de la variété de ses tâches : cours. Préparation des cours. Examens. Correction des copies (par centaines). Direction de mémoires ou de thèses. Lectures de ces mémoires (en sciences humaines, une thèse, c'est entre 300 et 1000 pages). Rapports. Soutenances. Jurys d'examens. Réception et suivi des étudiants. Elaboration des maquettes d'enseignement. Cooptation et évaluation des collègues (dossiers, rapports, réunions). Direction d'année, de département, d'UFR le cas échéant. Réunions de toutes ces instances. Conseils d'UFR, conseils scientifiques, réunions de CEVU, rapports et réunions du CNU et du CNRS, animations et réunions de centres et de laboratoires de recherche, et d'une quantité de conseils, d'instituts et de machins divers.

Et puis, la recherche. Pendant les loisirs, s'il en reste. Là, c'est virtuellement infini : lectures innombrables, rédaction d'articles, de livres, de comptes rendus, direction de revues, de collections, conférences, colloques en France et à l'étranger. Quelle bande de fainéants, en effet. Certains cherchent un peu moins que les autres, et on s'étonne ? Contrôlons mieux ces tire-au-flanc, c'est une excellente idée. Il y a une autre hypothèse : et si, pour changer, on fichait la paix aux chercheurs, est-ce qu'ils ne chercheraient pas plus ? Depuis des lustres, la cadence infernale des réformes multiplie leurs tâches. Après quoi, on les accuse de ne pas chercher assez. C'est plutôt le fait qu'ils continuent à le faire, malgré les ministres successifs et leurs bonnes idées, malgré les humiliations et les obstacles en tous genres, qui devrait nous paraître étonnant.

Nicolas Sarkozy, dans son discours du 22 janvier, parle de recherche «médiocre» en France. Elle est tellement médiocre que les publications scientifiques françaises sont classées au 5e rang mondial, alors que la France se situe au 18e rang pour le financement de la recherche. Dans ces conditions, les chercheurs français sont des héros. [...]

mercredi 17 décembre 2008

Tableaux avec array sous LaTeX

Ce petit billet illustre, en utilisant un petit exemple, toute la souplesse que procure le paquetage array pour la réalisation de tableaux sous LaTeX.

Dans cet exemple, toutes les colonnes sont centrées horizontalement et verticalement. La dernière colonne fait exception car elle est justifiée à gauche. De plus, dans la dernière colonne, le texte est écrit en petit. La taille de cette dernière s'adapte automatiquement à la largeur du texte. Pour les calculs, il faut utiliser le paquetage calc. Je n'ai pas utilisé le paquetage tabularx qui me pose des problèmes.

Voici une image du tableau obtenu :



Voici le code pour obtenir ce tableau :

\usepackage{array}
\usepackage{calc}
...
{\setlength{\tabcolsep}{2pt}
\begin{tabular}{|>{\centering}m{3.5em}|>{\centering}m{4.5em}|>{\centering}m{6em}|>{\small}m{\textwidth-3.5em-4.5em-6em-8\tabcolsep-5\arrayrulewidth}|}
\hline
\textbf{Année} & \textbf{Nom} & \textbf{Appellation} & \multicolumn{1}{|c|}{\textbf{Apports majeurs}} \tabularnewline
\hline
2000 & Le nom complet & l'appellation & bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla \tabularnewline
\hline
\end{tabular}}