Category Archives: L3 Info

catégorie concernant la 3ème année de 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;

 

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.

Contrôle continu d’Architecture du Web

Le CC aura lieu salles 5 et 6 du bâtiment 6 mardi 28/04 à partir de 14H; chaque binôme aura 15 minutes pour effectuer une démonstration (10′) et répondre aux questions (5′) ! Soyez prêt…

Venez avec :
-  un mini-rapport PAPIER (d’une dizaine de pages maxi) décrivant :

  • les choix de conception que vous avez effectué ;
  • les outils techniques que vous avez utilisés (framework, dépôt, IDE, gestion de projet, …);
  • une conclusion décrivant les difficultés rencontrées, les erreurs que vous avez commises et que vous ne feriez pas maintenant, les perspectives de ce projet;
  • 2 pages maxi de code source commenté ;

-  une démo PRÉPARÉE avec des exemples préparés (c’est-à-dire qu’on ne perdra pas de temps à télécharger des fichiers, à recompiler des prog , etc…) ; les salles sont réservées à partir de 13h, vous pouvez donc venir à l’avance vérifier le bon déroulement de votre démonstration;
-  des réponses aux questions que nous vous poserons ;

Avant de venir, envoyez-nous (pompidorAtlirmm.fr, meynardAtlirmm.fr) une archive contenant votre projet et votre rapport.

A Mardi