Category Archives: Licence Info. UM

catégorie concernant la licence informatique de l’Université de Montpellier

Projet Tableur

Le document projetTableur  décrit un interprète de commandes permettant de manipuler des cellules d’une feuille de calcul. Pour réaliser ce projet,  vous devrez réaliser un fichier bison tableur.y et un fichier flex tableur.l qui utiliseront une bibliothèque C++ libtableur.so  au format ELF 64-bit LSB shared object, x86-64, qui vous sera fournie avec son API décrite en  html. Cette bibliothèque contient l’implémentation d’un modèle (M de MVC) de tableur sans interface. L’interprète en bison contiendra la Vue (textuelle) et le Contrôleur.

Les en-têtes sont également fournis afin de permettre la compilation : entete.

Afin de compiler le projet dans le répertoire contenant en-têtes, librairie libtab.so, tableur.y et tableur.l :

bison -ydtv tableur.y
flex tableur.l
g++ -std=c++11 -fPIC -o tableurlib  y.tab.c lex.yy.c -ltableur -L.
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
./tableurlib
$> a1=5
$> a2=7
$> somme(a1:a2;sin(1.57);2)
15.000000
$>

Vous devez avoir une démarche incrémentale en testant d’abord les fonctionnalités les plus simples puis en complexifiant votre démarche.

Doctrine

Installation au SIF

Téléchargement de composer et préparation de l’installation

~/public_html/Archiweb$ mkdir TestDoctrine
~/public_html/Archiweb$ cd TestDoctrine 
~/public_html/Archiweb/TestDoctrine$ curl -sS https://getcomposer.org/installer | php
~/public_html/Archiweb/TestDoctrine$ emacs composer.json
{
    "require": {
        "doctrine/orm": "*"",
        "symfony/yaml": "*"
    }
}

Installation de doctrine

$ php composer.phar install

Utilisation de doctrine au SIF

créer un fichier bootstrap.php

<?php
// bootstrap.php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

require_once "vendor/autoload.php";

//METADATA YAML
$isDevMode=true;
$config = Setup::createYAMLMetadataConfiguration(array(__DIR__."/config/yaml"), $isDevMode);

// database configuration parameters
$dsn =  array(
    'dbname' => 'mmeynard',
    'user' => 'mmeynard',
    'password' => 'Le votre !',
    'host' => 'venus',    // '127.0.0.1' ne fonctionne pas car serveur MySQL sur venus
    'driver' => 'pdo_mysql',
    'charset' => 'utf8' ,    // sinon les char utf-8 ne passent pas en BD
);
// obtaining the entity manager
$entityManager = EntityManager::create($dsn, $config);

puis créer un fichier cli-config.php pour faire fonctionner la commande doctrine

<?php
// cli-config.php
require_once "bootstrap.php";

return \Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet($entityManager);

puis créer en rétro-ingéniérie, les fichiers yaml dans /config/yaml définissant les métadonnées, puis les fichiers php dans le répertoire src définissant les classes d’entités

mkdir config/yaml
php vendor/bin/doctrine orm:convert-mapping --from-database yml config/yaml
mkdir src 
php vendor/bin/doctrine orm:generate-entities src/

On listera le répertoire src qui contient les classes Etudiant, Options,  Stagea : ls src; less Etudiant.php

on peut maintenant écrire un script php listant les étudiants (des stages d’analyse) : listetud.php : OUF !

<?php
include "src/Etudiant.php";
include "src/Options.php";
include "src/Stagea.php";

require_once "bootstrap.php";
$etudRep=$entityManager->getRepository('Etudiant');
$letud=$etudRep->findAll();
foreach($letud as $e){
  print($e->getNom() . " " . $e->getPrenom() . "<br>");
}
?>

Afin de ne pas avoir à inclure chaque classe avant utilisation, on utilisera la fonctionnalité de chargement automatique fournie par doctrine :

use Doctrine\Common\ClassLoader;
require 'vendor/doctrine/common/lib/Doctrine/Common/ClassLoader.php';
$classLoader = new ClassLoader(null, 'src/'); // null : pas d'espace de nom
$classLoader->register();

Attention les instances d’étudiant récupérées font référence à des instances d’Options et de Stagea (qui font eux  même référence à des étudiants grâce aux métadonnées) : ne pas faire de print_r car la récursivité risque d’être infinie !

foreach($letud as $e){
 print($e->getNom() . " " . $e->getPrenom() . " : " . 
 ($e->getOpt()?$e->getOpt()->getNom():"PAS D'OPTION") . "<br>");
}

permettra d’afficher :

GUILLAUME Julien : Langue naturelle
GUITARD Brice : Web et BD
HAET Franck : PAS D'OPTION
HERIZI Abderraouf : Bio-Informatique

Documents et Paramètres d’Architecture et Programmation du Web

Documents du cours


Paramètres 2016-2017

  • répertoire des documents web (html, php, …) : ~/public_html/
  • URL d’accès pour jdupont : http://localhost/~jdupont/mastermind.php
  • compte MySQL :
    1. se connecter sur le site du SIF : https://sif.info-ufr.univ-montp2.fr/
    2. dans le bloc « Mon Espace », cliquer sur « Mon compte » puis sur « Modifier » dans la partie centrale
    3. dans « Bases de données », cliquer sur MySQL puis indiquer oui et votre mot de passe
    4. votre BD MySQL et votre login mysql se nomment comme votre login SIF
    5.  pour tester (h hôte, u user, p password) : mysql -h venus -u jdupont -p
    6. use jdupont; show tables;

 

Contrôle Continu de Systèmes d’exploitation HLIN303

Compresseur/décompresseur de Huffman

Le sujet du contrôle continu : ccHuffman

Le contrôle continu est soumis à la règle du max , il n’est donc pas indispensable mais est fortement recommandé !

Les démos sur machine du projet « Code de Huffman » auront lieu fin décembre. Si vous désirez y participer, le binôme (groupe de deux étudiants) doit :
-  envoyer à Michel Meynard (meynard@lirmm.fr) et Pierre Pompidor (pompidor@lirmm.fr), une archive de vos codes 2 JOURS AVANT LA SOUTENANCE ;
-  en retour, nous vous enverrons un créneau plus précis de votre passage.

Veuillez dans votre archive (nommée par les noms des participants au projet), créer un petit fichier README qui indiquera l’état d’avancement de votre projet (et par exemple les bogues résiduels). Par ailleurs, TOUS les participants au projet devront être présents (les absents ne seront sinon pas notés).

Le jour de la soutenance, les participants doivent venir avec :
-  un micro rapport papier de 1 à 2 pages décrivant les choix importants effectués ;
-  les listings (fichiers sources) documentés (doxygen) ;
-  des réponses aux questions indiquées dans le CC ;

Chaque soutenance durera 12 à 15 minutes ! C’est extrêmement rapide, aussi soyez certain d’avoir les exécutables prêts à fonctionner sur votre compte Unix ainsi que les fichiers exemples. Une recompilation du projet durant la soutenance n’est pas envisageable !

Aides

Ci-après, des fichiers textes exemples qui devront passer au compresseur : unpeudetout , undechaque , quedes1 .

Vous pouvez également tester les exécutables suivants : huf le compresseur, dehuf le décompresseur. Enfin, un fichier compressé : unpeudetout.txt.huf .

TP Mastermind

Mastermind

Article permettant de voir un vrai makefile sur un projet de jeu mastermind en ligne de commande (mm) et avec interface graphique mmgui ! Après avoir lu et compris l’organisation du projet, il ne vous reste plus qu’à programmer mm.c !

  1. Après avoir téléchargé le fichier mm    (enregistrer le fichier puis l’ouvrir (ne pas l’ouvrir directement avec le gestionnaire d’archives))
  2. Extraire les différents fichiers et observer leur organisation
  3.  tester mm en ligne de commande
  4. tester mmgui &
  5. écrire le source mm.c

Documents du cours de L3 : Concepts et Programmation des Systèmes d’Exploitation

CC=gcc
CFLAGS=-g  -Wall -std=c99 -D_GNU_SOURCE

testMot : testMot.o mot.o
	$(CC) $(CFLAGS) -o $@ $+

.h.c:
	@echo regle de suffixe : .h modifie donne .c modifie
	touch $*.c

.c.o:
	@echo debut compil c sans edition de liens de $<
	$(CC) $(CFLAGS) -c $<
	@echo fin compil de $<

.c:
	@echo debut compil c complete de $<
	$(CC) $(CFLAGS) -o $* $<
	@echo fin compil de $< en $*

Link

Interprétation et Compilation

Cet article est destiné à informer les étudiants de L3 Informatique ayant choisi le module « Interprétation et Compilation ». Vous y trouverez des informations, des documents, des liens utiles pour les TPs.

Téléchargements pour les TPs

TP1

afd.h

analex.h

analex.c

TP3

analdesc.c

TP4

arbin.h

arbin.c

makefileEtudiants est un exemple de makefile à modifier selon votre goût et à renommer en « makefile »

Contrôle Continu

La note finale est obtenue par moyenne des 2 meilleures notes. Si vous ne passez qu’un seul CC, votre seconde note sera considérée comme un 0.