Lier Erlang avec d autres langages de programmation

Dimension: px
Commencer à balayer dès la page:

Download "Lier Erlang avec d autres langages de programmation"

Transcription

1 16 Lier Erlang avec d autres langages de programmation Les logiciels actuels, quelle que soit leur taille, sont souvent écrits dans plusieurs langages de programmation. Généralement, les pilotes de périphériques sont écrits en C et de nombreux environnements de développement intégrés comme Eclipse sont écrits en Java ou en C# ; les applications web peuvent être développées en Ruby et en PHP. De son côté, Erlang permet d offrir une concurrence légère et résistante aux pannes et, pour manipuler ou analyser efficacement des chaînes de caractères, Perl et Python sont la norme. Par ailleurs, si la bibliothèque dont vous avez besoin pour résoudre un problème n existe pas dans votre langage favori, vous devrez alors choisir entre utiliser une bibliothèque externe ou tout recoder vous-même en Erlang 1. La communication entre les langages n est jamais simple, qu il s agisse du langage naturel ou des langages de programmation. Avec le premier, il faut comprendre comment chaque langue fonctionne utilise-t-elle des articles? Différencie-t-elle le genre? Où sont placés les verbes dans une phrase? Il faut également savoir traduire les mots le verbe ser du portugais signifie-t-il la même chose que "être" en français? (La réponse est non.) Il en va de même pour les langages de programmation : quel paradigme utilisent-ils? Sont-ils fonctionnels, orientés objet, concurrents ou structurés? Est-ce qu un entier Java est identique à un entier Erlang? (La réponse est non!) En outre, cette communication entre les langages n est pas tout ; Erlang/OTP permet également de communiquer en utilisant XML, ODBC, CORBA, ASN et SNMP, qui aident Erlang dans son rôle sans cesse croissant de "colle distribuée" pour relier des programmes monothreads classiques. 1. C est ce que fait Wrangler, l outil de refactoring pour Erlang, pour détecter le code dupliqué : il utilise une bibliothèque C efficace pour identifier les "clones" éventuels dans le code Erlang.

2 362 Programmer en Erlang Présentation du problème Erlang fournit un certain nombre de mécanismes pour travailler avec plusieurs langages : un modèle de haut niveau reposant sur des nœuds Erlang distribués, un modèle de plus bas niveau permettant de communiquer avec un programme externe par un port et un mécanisme permettant de lier des programmes les pilotes liés dans la machine virtuelle elle-même. Le modèle de programmation distribuée d Erlang offre une solution à la fois simple et souple au problème du fonctionnement des autres langages avec Erlang : les programmes écrits dans d autres langages s exécutent dans d autres nœuds sur la même machine ou sur des machines différentes et apparaissent comme des nœuds Erlang distribués qui envoient et reçoivent des messages. Ces nœuds offrent un environnement dans lequel les programmes externes peuvent s exécuter, mais également communiquer avec des nœuds Erlang. Pour que cet échange avec un programme écrit dans un autre langage fonctionne, on peut utiliser des ports ou fournir un modèle plus élaboré des primitives de communication Erlang dans cet autre langage. Dans les deux cas, il faut savoir comment gérer les types de base et traduire les structures de données composées entre les deux langages. Dans ce chapitre, nous verrons comment construire des nœuds en Java et en C qui peuvent interagir avec Erlang. Nous présenterons également erl_call, qui permet au shell Unix de communiquer avec un nœud Erlang distribué et qui repose sur la bibliothèque erl_interface fournie avec Erlang, tout comme le paquetage Java JInterface. Ces bibliothèques offrent un code et une architecture stables aux dépens de la vitesse pure. Puis nous expliquerons comment communiquer au moyen des ports et nous donnerons un exemple d interaction avec Ruby en nous servant de la bibliothèque erlectricity. Autres langages Ce chapitre traite des interactions avec Java, C et Ruby, mais Erlang peut être lié à un grand nombre d'autres langages de programmation : OTP.NET fournit un lien vers la plateforme.net, via un portage du code de JInterface. Py-Interface, une implémentation Python d'un nœud Erlang, permet de faire communiquer ces deux langages. Le Perl Erlang-Port permet à du code Perl de communiquer avec Erlang via un port. PHP/Erlang est une extension PHP fournissant un ensemble de fonctions pour transformer un thread PHP en nœud Erlang C. Haskell/Erlang-FFI autorise une communication complète et dans les deux sens entre des programmes écrits en Haskell et en Erlang. Les messages envoyés depuis Haskell vers Erlang ressemblent à des appels de fonctions et les messages envoyés d'erlang à Haskell sont délivrés à des MVar. L'interface Erlang/Gambit permet de faire communiquer Scheme et Erlang. Distel améliore le mode Erlang d'emacs en autorisant l'interaction entre Emacs Lisp et Erlang.

3 Chapitre 16 Lier Erlang avec d autres langages de programmation 363 Pour obtenir une interaction la plus efficace possible, vous pouvez définir un pilote lié. Cependant, un pilote lié mal écrit pouvant provoquer des fuites mémoire, figer ou crasher tout le système d exécution d Erlang, ces pilotes doivent être utilisés avec la plus grande prudence. Interagir avec Java Le paquetage Java JInterface offre à Java un modèle de processus et de communication à la Erlang. Vous pouvez l utiliser seul pour bénéficier de la concurrence de type Erlang en Java, ou comme composante d un système distribué mélangeant les deux langages afin d intégrer des composants Erlang dans un système Java et vice versa. JInterface est une collection de classes Java dont les noms commencent quasiment tous par Otp. Cette section décrira les plus utilisées et donnera des exemples d envoi de messages et de gestion des types de données entre les deux langages. Vous trouverez plus d informations sur JInterface et ses classes Erlang dans la section "Interface and Communication Applications" de la documentation d Erlang/OTP. Le fil rouge de cette section sera une réécriture de l exemple d appel de procédure distante (RPC) du Chapitre 11. Nœuds et boîtes aux lettres Nous avons décrit les nœuds Erlang au Chapitre 11, qui a également présenté la programmation distribuée. Un nœud Erlang est désigné par son nom, constitué d un identifiant suivi d un nom d hôte (au format court ou long) ; chaque hôte peut exécuter plusieurs nœuds, pourvu que leurs noms soient différents. La classe OtpNode est la représentation JInterface d un nœud Erlang : OtpNode machin = new OtpNode("machin"); Cette instruction crée l objet Java machin que nous appellerons un nœud, qui représente le nœud Erlang machin qui s exécute sur la machine sur laquelle elle est exécutée. Vous pouvez créer un processus sur ce nœud en créant une boîte aux lettres, représentée par un identifiant de processus ou enregistrée sous un certain nom. L instruction suivante crée un processus : OtpMbox mbox = machin.creatembox(); Pour donner un nom à cette boîte, il suffit de passer une chaîne en paramètre : OtpMbox mbox = machin.creatembox("serveurfacto"); L enregistrement peut également s effectuer après la création : mbox.registername("serveurfacto");

4 364 Programmer en Erlang Dans les deux cas, le processus est enregistré sous le nom serveurfacto. Nous l avons nommé ainsi car il agira comme un "serveur de factorielles" en renvoyant la factorielle des entiers qu il reçoit aux processus qui les ont envoyés. Vous pouvez désormais accéder à cette boîte aux lettres par son nom. Si vous avez également besoin de son identifiant de processus pour un nœud Erlang distant, par exemple, utilisez sa méthode self() : OtpErlangPid pid = mbox.self(); Représentation des types Erlang Le paquetage JInterface contient plusieurs classes pour représenter les différents types Erlang en Java. Leurs méthodes permettent de convertir les types natifs dans ces représentations et réciproquement, ce qui est essentiel à l interaction entre les deux langages. Nous avons déjà vu un exemple dans l instruction précédente : la classe OtpErlang- Pid produit la représentation Java d un identifiant de processus Erlang. De même, les classes OtpErlangAtom,..., OtpErlangTuple, OtpErlangObject permettent de représenter les atomes, les binaires, les listes, les ports, les références, les tuples et les termes. Les types points flottants d Erlang sont convertis en OtpErlangFloat ou OtpErlang- Double ; les types entiers en OtpErlangByte, OtpErlangChar, OtpErlangShort, OtpErlangInt, OtpErlangUInt ou OtpErlangLong, selon la valeur et le signe de la valeur concernée. La classe OtpErlangBoolean permet de représenter les deux atomes spéciaux true et false et les chaînes Erlang qui ne sont que des listes d entiers sont décrites par la classe OtpErlangString. Tous les détails de ces classes se trouvent dans la documentation de JInterface ; nous les utiliserons dans la prochaine section et dans l exemple RPC. Communication Les processus Erlang envoient et reçoivent des messages ; dans JInterface, ces opérations sont implémentées par les méthodes send et receive d une boîte aux lettres. Les messages échangés sont des termes Erlang et sont donc représentés par des objets OtpErlangObject en Java. L envoi du message suivant dans le processus mbox : Pid! {ok, M} sera donc traduit par : mbox.send(pid,tuple);

5 Chapitre 16 Lier Erlang avec d autres langages de programmation 365 où la variable Java pid correspond à la variable Erlang Pid, et tuple 2 représente le terme Erlang {ok, M}. Un message est reçu par une instruction de la forme : OtpErlangObject o = mbox.receive(); Cette instruction est différente d un receive Erlang car elle n effectue aucun pattern matching sur le message. Nous verrons dans l exemple suivant comment décomposer et analyser ce message. Récapitulatif : RPC revisité Le code Erlang suivant met en place un serveur de factorielles sur le nœud machin de l hôte STC : setup() -> serveur() -> register(serveurfacto,self()), factoloop(). factoloop() -> receive {Pid, N} -> Pid! {ok, facto(n)} end, factoloop(). Le serveur reçoit des messages de la forme {Pid, N} et renvoie le résultat {ok, facto(n)} au processus identifié par Pid. Voici le code Java qui effectue le même travail : 1 import com.ericsson.otp.erlang.*; // Pour JInterface 2 import java.math.biginteger; // Pour la factorielle 3 4 public class NoeudServeur { 5 6 public static void main (String[] _args) throws Exception{ 7 8 OtpNode machin = new OtpNode("machin"); 9 OtpMbox mbox = machin.creatembox("serveurfacto"); OtpErlangObject o; 12 OtpErlangTuple msg; 13 OtpErlangPid de; 2. Si vous programmez en Erlang depuis plusieurs années et que vous soyez troublé par le fait que des variables comme pid et tuple sont toutes en minuscules, vous n êtes pas seul. Ce qui est important, ici, est que vous ne les preniez pas pour des atomes.

6 366 Programmer en Erlang 14 BigInteger n; 15 OtpErlangAtom ok = new OtpErlangAtom("ok"); while(true) try { 18 o = mbox.receive(); 19 msg = (OtpErlangTuple)o; 20 de = (OtpErlangPid)(msg.elementAt(0)); 21 n = ((OtpErlangLong (msg.elementat(1))).bigintegervalue(); 22 OtpErlangObject[] reponse = new OtpErlangObject[2]; 23 reponse[0] = ok; 24 reponse[1] = new OtpErlangLong(Facto.facto(n)); 25 OtpErlangTuple tuple = new OtpErlangTuple(reponse); 26 mbox.send(de,tuple); }catch(otperlangexit e) {break; } 29 } 30 } Dans cet exemple, les aspects concurrents sont marqués en gras aux lignes 8, 9, 18 et 26 ; le reste sert à analyser, à décomposer et à reconstruire les valeurs des données et à créer la boucle de contrôle. Le programme principal commence par lancer un nœud machin et un processus serveurfacto sur ce nœud. La boucle qui s étend de la ligne 18 à la ligne 26 reçoit et répond à un message. Le message reçu est un terme Erlang, c est-à-dire un OtpErlangObject, qui est transtypé en OtpErlangTuple à la ligne 19 pour pouvoir en extraire l identifiant de l expéditeur (ligne 20) et l entier envoyé (ligne 21). Cette valeur est extraite comme un entier long mais est convertie en BigInteger pour permettre le calcul de sa factorielle. Le reste du code (lignes 22 à 26) construit et envoie le tuple reponse. La ligne 22 crée un tableau d objets contenant la représentation de l atome ok (ligne 23) et la valeur renvoyée par facto(n) (ligne 24). Ce tableau est ensuite reconverti en tuple (ligne 25) avant d être renvoyé au client à la ligne 26. Interactions Pour interagir avec le nœud Java, vous pouvez utiliser le code suivant et appeler la fonction monrpc:f/1 à partir du shell Erlang : -module(monrpc).... f(n) -> {serveurfacto, {self(), N}, receive {ok, Res} -> io:format("la factorielle de ~p est ~p.~n", [N,Res]) end.

7 Chapitre 16 Lier Erlang avec d autres langages de programmation 367 Ce code client est exactement le même que celui qui permet d interagir avec un nœud Erlang ; un "test de Turing" 3 envoyant des messages au nœud ou en recevant de celui-ci devrait être incapable de faire la différence entre un nœud Java et un nœud Erlang. Notes de bas de page Nous expliquerons dans cette section comment utiliser correctement JInterface dans vos programmes. Pour établir et gérer les connexions entre les nœuds Java et Erlang, il faut d abord que epmd (Erlang Port Mapper Daemon) s exécute vous pouvez le lancer en tapant simplement epmd (la version Windows du programme s appelle epmd.exe) et tester qu il s exécute déjà à l aide de la commande suivante : epmd -names Vous obtiendrez alors la liste des nœuds Erlang qui s exécutent sur la machine et vous pourrez donc vérifier qu un nœud a bien été lancé. Le système créera un nœud avec le cookie par défaut si vous n en fournissez pas. Pour créer un nœud avec un cookie précis, utilisez une instruction de la forme : OtpNode machin = new OtpNode("machin", "valeur-cookie"); S il faut utiliser un port particulier, celui-ci sera passé en troisième paramètre. La ligne 1 du programme de la section "Récapitulatif : RPC revisité" importait le paquetage JInterface, mais il faut également indiquer son emplacement au compilateur et à la machine virtuelle car il fait partie de la distribution OTP, pas de la distribution Java. Son chemin est de la forme : <racine-otp>/jinterface-xxx/priv/otperlang.jar où <racine-otp> est le répertoire racine de la distribution, tel qu il est renvoyé par l appel code:root_dir() dans un nœud, et XXX est le numéro de version. Sur Mac OS X, ce chemin est le suivant : /usr/local/lib/erlang/lib/jinterface-1.4.2/priv/otperlang.jar Voici comment indiquer ce chemin au compilateur : javac -classpath ".:/usr/local/lib/erlang/lib/jinterface-1.4.2/priv/otperlang. jar" NoeudServeur.java 3. Le test de Turing a été créé par le mathématicien pionnier de l informatique Alan Turing ( ) pour tester l intelligence d une machine. L idée, traduite en technologie moderne, est que le testeur discute sans les voir avec deux "interlocuteurs" en ligne une personne et une machine : s il ne peut pas reconnaître formellement qui est l humain et qui est la machine, la machine est considérée comme faisant preuve d intelligence.

8 368 Programmer en Erlang et à la machine virtuelle Java : java -classpath ".:/usr/local/lib/erlang/lib/jinterface-1.4.2/priv/otperlang. jar" NoeudServeur Pour aller plus loin JInterface a bien d autres possibilités que celles que nous venons de voir : Les méthodes link et unlink d OtpMbox permettent, respectivement, de se lier et de se libérer d une boîte aux lettres Java ou d un processus Erlang. Notre exemple suppose que les connexions entre les nœuds sont créées automatiquement. Vous pouvez également utiliser la méthode ping sur un nœud afin de tester si un nœud distant existe : en ce cas, la connexion est automatique. Vous pouvez envoyer des données quelconques entre les nœuds en passant par des données binaires, qui seront gérées par la classe OtpErlangBinary. La classe OtpConnection fournit un mécanisme de haut niveau pour les RPC, exactement comme le fait le module rpc pour Erlang. Les méthodes d OtpConnection permettent également de tracer l exécution. Toutes ces fonctionnalités sont décrites en détail avec les autres dans la documentation en ligne. Nœuds C La bibliothèque C erl_interface permet de construire des termes binaires Erlang encodés en C, d y accéder et de les manipuler. Elle fournit également des fonctions pour gérer l allocation mémoire, accéder aux noms globaux et signaler les erreurs : erl_marshal, erl_eterm, erl_format et erl_malloc permettent de gérer le format des termes Erlang, notamment la gestion mémoire. Ces fonctions autorisent également la conversion des termes Erlang en structures C et réciproquement. erl_connect et ei_connect permettent de se connecter à Erlang via un nœud Erlang distribué. erl_error affiche les messages d erreur. erl_global donne accès aux noms globaux. registry permet de stocker et de sauvegarder des paires clé-valeur. On retrouve ainsi une partie des fonctionnalités des tables ETS, et ces paires peuvent être sauvegardées et restaurées avec une table Mnesia sur un nœud Erlang lié.

9 Chapitre 16 Lier Erlang avec d autres langages de programmation 369 En outre, le format de terme externe d Erlang est une représentation d un terme Erlang sous forme d une suite d octets, c est-à-dire un binaire. Les BIF term_to_binary/1 et binary_to_term/1 permettent de passer de l un à l autre. Nous étudierons ce format plus en détail dans la section "Programmes ports", plus loin dans ce chapitre. Nous reprendrons ici l exemple de serveur de factorielles que nous venons d étudier en Java, mais en l écrivant en C en nous appuyant sur l exemple fourni dans le "Interoperability Tutorial for Erlang" : 1 /* facto.c */ 2 3 #include <stdio.h> 4 #include <sys/types.h> 5 #include <sys/socket.h> 6 #include <netinet/in.h> 7 8 #include "erl_interface.h" 9 #include "ei.h" #define BUFSIZE int main(int argc, char **argv) { 14 int fd; /* descripteur de fichier du nœud Erlang */ int loop = 1; /* Indicateur de boucle */ 17 int recu; /* Résultat de receive */ 18 unsigned char buf[bufsize] /* Tampon pour message entrant */ 19 ErlMessage emsg; /* Message entrant */ ETERM p_de, p_param, p_res; /* Repr. des termes Erlang */ 22 int facto(int y); /* Initialisation de erl_interface (une fois seulement) */ 25 erl_init(null, 0); /* Initialisation du mécanisme de connexion */ 28 if (erl_connect_init(1, "moncookie", 0) == -1) 29 erl_err_quit("erl_connect_init"); /* Connexion à un nœud Erlang */ 32 if ((fd = < 0) 33 erl_err_quit("erl_connect"); while (loop) { 36 /* Message reçu */ 37 recu = erl_receive_msg(fd, buf, BUFSIZE, &emsg); if (recu == ERL_TICK) { 40 /* ignore */ 41 } else if (recu == ERL_ERROR) { 42 loop = 0; 43 } else { 44 if (msg.type == ERL_REG_SEND) {

10 370 Programmer en Erlang 45 /* Extraction des champs du message */ 46 p_de = erl_element(1, emsg.msg); 47 p_param = erl_element(2, emsg.msg); /* Appel de facto() et renvoi du résultat */ 50 p_res = erl_format("{ok, ~i}",facto(erl_int_value(p_param))); 51 erl_send(fd, p_de, p_res); /* Libération de la mémoire */ 54 erl_free_term(emsg.from); erl_free_term(emsg.msg); 55 erl_free_term(p_de); erl_free_term(p_param); 56 erl_free_term(p_res); 57 } } } int facto(int y) { 60 if (y < 0) 61 return 1; 62 else 63 return y * facto(y - 1); 64 } La forme générale du code C ressemble à celle du nœud Java précédent, sauf que le code C utilise plus d opérations de bas niveau : inclusion des fichiers en-têtes de C (lignes 3 à 6) et de l interface Erlang (lignes 8 et 9) ; allocation de mémoire pour le tampon d entrée (lignes 11 et 18) ; libération de la mémoire allouée aux termes Erlang (lignes 53 à 56). Les lignes 24 à 33 mettent en place le nœud et le connectent à un nœud Erlang : erl_init(null, 0) initialise la bibliothèque erl_interface et ne doit être appelée qu une fois par programme. erl_connect_init(1, "moncookie", 0) initialise le mécanisme de connexion, en fixant notamment le numéro du nœud (1, ici) et le cookie utilisé. fd = se connecte au nœud Erlang et renvoie un descripteur de fichier pour la connexion. Les lignes 35 à 57 forment une boucle sans fin qui lit un message (ligne 37) grâce à la ligne suivante : recu = erl_receive_msg(fd, buf, BUFSIZE, &emsg); Cette instruction recevra un message dans le tampon buf et le décodera pour obtenir un terme Erlang, emsg. Les messages ERL_TICK qui vérifient qu un nœud est vivant sont ignorés (ligne 40) et la boucle se termine lorsqu elle reçoit un message ERL_ERROR (ligne 42). Le reste de la boucle effectue le traitement suivant :

11 Chapitre 16 Lier Erlang avec d autres langages de programmation 371 Extraction de l identifiant de l expéditeur du message, p_de, et de son contenu, p_ param (lignes 46 et 47). Conversion de p_param en entier C et passage de celui-ci en paramètre à la fonction facto(), puis renvoi du terme Erlang {ok, facto(...(p_param))} au processus p_de (ligne 51). L appel erl_format se sert d une chaîne de format pour construire des termes Erlang lisibles. Pour construire le même terme manuellement, vous p ourriez utiliser les instructions suivantes : tab[0] = erl_mk_atom("ok"); tab[1] = erl_mk_integer(facto(erl_int_value(p_param))); p_res = erl_mk_tuple(tab, 2); Enfin, libération de la mémoire utilisée par les termes Erlang (lignes 54 à 56). Pour compiler ce programme C, indiquez les emplacements des fichiers erl_ interface.h, liberl_interface.a et libei.a et précisez que vous utilisez ces bibliothèques : gcc -o facto -I/usr/local/lib/erlang/lib/erl_interface-3.5.9/include \ -L/usr/ local/lib/erlang/lib/erl_interface-3.5.9/lib facto.c -lerl_interface -lei Dans la commande ci-dessus, les chemins mènent à la dernière version d erl_interface sur votre système. L exécutable produit s appellera facto et se trouvera dans le répertoire courant. Voici maintenant le code Erlang pour se connecter au nœud C. En général, le nom du nœud C est cn, où N est le numéro d identification du nœud. Ici, nous utilisons donc : -module(facto). -export([call/1]). call(x) -> {any, {self(), X}, receive {ok, Result} -> Result end. Son utilisation dans le shell Erlang donne le résultat suivant : % erl -sname "truc" -setcookie "moncookie"... L'exécutable C devrait être appelé... c(facto). {ok,facto} facto:call(7) facto:call(0). 1 Ici, le nœud C agit comme un client : le nœud Erlang doit donc être lancé d abord pour qu il s exécute déjà lorsque le nœud C tentera de s y connecter.

12 372 Programmer en Erlang Pour aller plus loin Le nœud C que nous venons de décrire s exécute comme un client : il peut se connecter à des nœuds Erlang. Il peut également s exécuter en mode serveur il faut alors que le programme crée d abord une socket écoutant sur un port particulier et qu il la publie à l aide d epmd. Il pourra ensuite accepter les demandes de connexion provenant de nœuds Erlang. La bibliothèque erl_interface offre de nombreuses autres possibilités, comme le pattern matching sur les messages entrants, un système de base de registres pour stocker des paires clé-valeur et un schéma de nommage global. Toutes ces fonctionnalités, ainsi que la programmation des nœuds en mode serveur, sont décrites dans l "Interoperability Tutorial" et le guide de l utilisateur de la bibliothèque erl_interface. Erlang à partir du shell Unix : erl_call La commande Unix erl_call fait partie des "trésors cachés d OTP". Elle a été créée à partir d erl_interface pour permettre de communiquer à partir du shell Unix avec un nœud Erlang distribué. Elle permet également de compiler et d évaluer du code Erlang à partir de la ligne de commande. Son aptitude à lire sur stdin est mise à profit par d autres scripts ceux de CGI, notamment. L ensemble complet des paramètres et options de cette commande est décrit dans sa page de manuel ou résumé en appelant erl_call sans aucun paramètre ou option. Les seules options obligatoires sont -n, -name ou -sname car elles permettent de préciser le nom (ou le nom court) du nœud appelé. Elles sont souvent accompagnées de l option -s, qui lance le nœud s il ne s exécute pas déjà. L option -a est l équivalent de apply/3 et ses paramètres sont au même format, tandis que -e évalue tout ce qui est fourni sur l entrée standard (jusqu à Ctrl+D). Voici un exemple d utilisation d erl_call : % erl_call -s -a 'erlang date' -n machin {2010, 6, 12} % erl_call -s -e -n machin X=3, Y=4, X+Y. Ctrl-D {ok, 7} % erl_call -a 'erlang halt' -n machin %

La programmation Impérative par le Langage C

La programmation Impérative par le Langage C La programmation Impérative par le Langage C 1. Introduction 1.1 Qu est-ce que la programmation impérative? Un programme est constitué de plusieurs lignes d instructions. Chaque instruction permet d effectuer

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005

RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Oussama ELKACHOINDI Wajdi MEHENNI RAPPORT DU PREMIER MINI PROJET «FORUM DE CHAT» Novembre 2005 Sommaire I. Préliminaire : Notice d exécution et mode opératoire...4 II. Architecture globale de l application...5

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau Plan Tableaux Université de Nice - Sophia Antipolis Richard Grin Version 1.0.4 25/11/10 Définition Déclaration d un tableau Création d un tableau Utilisation d un dun tableau Tableau des paramètres de

Plus en détail

Création d un catalogue en ligne

Création d un catalogue en ligne 5 Création d un catalogue en ligne Au sommaire de ce chapitre Fonctionnement théorique Définition de jeux d enregistrements Insertion de contenu dynamique Aperçu des données Finalisation de la page de

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

EISTI. Oracle Toplink. Manuel d installation et d utilisation

EISTI. Oracle Toplink. Manuel d installation et d utilisation EISTI Oracle Toplink Manuel d installation et d utilisation VILLETTE Charles, BEQUET Pierre, DE SAINT MARTIN Cédric, CALAY-ROCHE Vincent, NAUTRE Francois 20/05/2010 Ce manuel d installation et d utilisation

Plus en détail

Atelier Le gestionnaire de fichier

Atelier Le gestionnaire de fichier Chapitre 12 Atelier Le gestionnaire de fichier I Présentation Nautilus est un gestionnaire de fichiers pour l environnement de bureau Gnome. Il offre toutes les fonctions de gestion de fichier en local

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

RAPPORT DE CONCEPTION UML :

RAPPORT DE CONCEPTION UML : Carlo Abi Chahine Sylvain Archenault Yves Houpert Martine Wang RAPPORT DE CONCEPTION UML : Bamboo Ch@t Projet GM4 Juin 2006 Table des matières 1 Introduction 2 2 Présentation du logiciel 3 2.1 Précisions

Plus en détail

Une introduction au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Introduction aux systèmes d exploitation

Introduction aux systèmes d exploitation Introduction aux systèmes d exploitation Le système d exploitation est un ensemble de logiciels qui pilotent la partie matérielle d un ordinateur. Les principales ressources gérées par un système d exploitation

Plus en détail

Systèmes répartis : les Remote Procedure Calls p.1/25

Systèmes répartis : les Remote Procedure Calls p.1/25 Systèmes répartis : les Remote Procedure Calls Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine Systèmes répartis : les Remote Procedure Calls p.1/25 Les Remote Procedure Calls

Plus en détail

Introduction au Java Development Kit Et quelques instructions en Java. 1 Création des répertoires d accueil des programmes Java

Introduction au Java Development Kit Et quelques instructions en Java. 1 Création des répertoires d accueil des programmes Java HLIN406 - Janvier 2015 Le Java Development Kit offre un ensemble d outils de développement d applications Java. Pour utiliser ces outils, JDK ne propose pas d interface utilisateur, on doit donc écrire

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

Installation des outils du CD-Rom

Installation des outils du CD-Rom Installation des outils du CD-Rom Installer le JDK Pour installer Java2 SDK, exécutez le programme d'installation en double-cliquant sur l icône j2sdk-1_4_0-win.exe située dans le répertoire Java2 du CD-Rom.

Plus en détail

Sujet d examen 1. Pratique du C. Novembre 2009

Sujet d examen 1. Pratique du C. Novembre 2009 Durée 1 h 30 Documents autorisés Sujet d examen 1 Pratique du C Novembre 2009 Introduction Écrivez lisiblement et n hésitez pas à commenter votre code en langage C. Vous ne pouvez utiliser que les fonctions

Plus en détail

JVM. RMI - couche de référence. RMI - couche de transport TCP/IP

JVM. RMI - couche de référence. RMI - couche de transport TCP/IP Chapitre 9 Dans ce chapitre nous abordons le mécanisme RMI (Remote Method Invocation) permettant le développe ment des systèmes répartis. Nous expliquerons comment les classes d un serveur peuvent être

Plus en détail

Familiarisation avec Eclipse / Netbeans

Familiarisation avec Eclipse / Netbeans Institut Galilée LEE Année 011-01 Master T.P. 0 Familiarisation avec Eclipse / Netbeans Lien important contenant le pdf du cours et du TP, et ensuite des sources : http://www-lipn.univ-paris13.fr/~fouquere/mpls

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C

1 Hello world. 2 Sorties en C. DUT Informatique M3101 Système S3 2015 / 2016. Travaux Pratiques n o 0 : Rappels de programmation C DUT Informatique 2015 / 2016 Travaux Pratiques n o 0 : Rappels de programmation C Nom(s) : Groupe : Date : Objectifs : renouer avec les notions, la manipulation et l écriture de programmes C, en particulier

Plus en détail

Principes de la programmation impérative

Principes de la programmation impérative Séquence d instructions Variables et types Types élaborés Procédures, arguments Gestion de la mémoire Langage compilé, interprété Principes de la programmation impérative Séquence d instructions Variables

Plus en détail

Projet 2A STI : Supervision et audit de la sécurité système dans un réseau

Projet 2A STI : Supervision et audit de la sécurité système dans un réseau Projet 2A STI : Supervision et audit de la sécurité système dans un réseau Jeremy Briffaut,??? 8 septembre 2014 1 Objectifs Ce projet vous permettra de mettre en pratique vos connaissances acquises dans

Plus en détail

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens Année académique 2009 2010 1 Introduction Ce projet est le premier d une série de quatre projets qui ont

Plus en détail

Architecture applicative de l application Web

Architecture applicative de l application Web Architecture applicative de l application Web Principes d organisation de l application PHP Gsb-AppliFrais Les principes d'organisation de l'application s'inspirent des travaux réalisés autour du contexte

Plus en détail

Sujet Projets 2 nd Semestre

Sujet Projets 2 nd Semestre Sujet Projets 2 nd Semestre Seuls les appels systèmes vus en cours sont autorisés. L usage d autres fonctions doit impérativement être validé par l enseignant. La date d ouverture pour l assignation de

Plus en détail

Le langage PHP permet donc de construire des sites web dynamiques, contrairement au langage HTML, qui donnera toujours la même page web.

Le langage PHP permet donc de construire des sites web dynamiques, contrairement au langage HTML, qui donnera toujours la même page web. Document 1 : client et serveur Les ordinateurs sur lesquels sont stockés les sites web sont appelés des serveurs. Ce sont des machines qui sont dédiées à cet effet : elles sont souvent sans écran et sans

Plus en détail

RICM 4 ème année 12/1/2012

RICM 4 ème année 12/1/2012 RICM 4 ème année 12/1/2012 Examen de Systèmes Répartis Durée : 2h, Documents autorisés à l exception des livres. Le barème est indicatif. Partie A Applications Web Question 1. Dans un répertoire contenant

Plus en détail

4D v11 SQL Release 5 (11.5) ADDENDUM

4D v11 SQL Release 5 (11.5) ADDENDUM ADDENDUM Bienvenue dans la release 5 de 4D v11 SQL. Ce document présente les nouveautés et modifications apportées à cette nouvelle version du programme. Prise en charge de nouvelles plates-formes La release

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

1 : 1 er programmes & prise en main de l environnement

1 : 1 er programmes & prise en main de l environnement 1 : 1 er programmes & prise en main de l environnement 1 Introduction 1.1 Rappel : gestion d arborescence et de fichiers sous UNIX Pour la manipulation de répertoire et de fichier à partir d un terminal

Plus en détail

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 5 : Sockets Stream

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 5 : Sockets Stream iut ORSAY DUT Informatique Département Informatique 2009 / 2010 Travaux Pratiques n o 5 : Sockets Stream Nom(s) : Groupe : Date : Objectifs : manipuler les primitives relatives à la communication par sockets

Plus en détail

Programmation système de commandes en C

Programmation système de commandes en C Programmation système de commandes en C Cours de Programmation système Tuyêt Trâm DANG NGOC Université de Cergy-Pontoise 2012 2013 Tuyêt Trâm DANG NGOC Programmation système de commandes

Plus en détail

INTRODUCTION A MUTT Yann Marion e-mail=yann.marion@u-bourgogne.fr Date de création : 16/03/99 Dernière mise à jour :

INTRODUCTION A MUTT Yann Marion e-mail=yann.marion@u-bourgogne.fr Date de création : 16/03/99 Dernière mise à jour : INTRODUCTION A MUTT Yann Marion e-mail=yann.marion@u-bourgogne.fr Date de création : 16/03/99 Dernière mise à jour : Sommaire : 1. Exemple 2. Présentation 3. Principe d une messagerie 4. Migrer de Elm

Plus en détail

Chap. V : Les interruptions

Chap. V : Les interruptions UMR 7030 - Université Paris 13 - Institut Galilée Cours Architecture et Système Nous étudions dans ce chapitre les interruptions matérielles (ou externes), c est-à-dire déclenchées par le matériel (hardware)

Plus en détail

Java - TP3. Nicolas Baudru, Carine Guivier-Curien, Laurent Vallet. Année 2008-2009

Java - TP3. Nicolas Baudru, Carine Guivier-Curien, Laurent Vallet. Année 2008-2009 Java - TP3 Nicolas Baudru, Carine Guivier-Curien, Laurent Vallet Année 2008-2009 Le but de ce TD est d'écrire une application client/serveur de type msn : 1. Des clients se connectent à un serveur 2. Un

Plus en détail

Introduction au langage C - types et variables

Introduction au langage C - types et variables Chapitre 2 Introduction au langage C - types et variables 1 Le Langage C Le langage C est un langage de bas niveau dans le sens où il permet l accès à des données que manipulent les ordinateurs (bits,

Plus en détail

Systèmes d'informations

Systèmes d'informations Systèmes d'informations C'est un ensemble d'outils pour stocker / gérer / diffuser des informations / des données Le stockage : Bases de données + SGDBR La gestion : Saisie, Mise à jour, Contrôle La diffusion

Plus en détail

LISE 3. Template pour les mails. Version 1.0 du 13/04/2010. Etat : Validé

LISE 3. Template pour les mails. Version 1.0 du 13/04/2010. Etat : Validé Template pour les mails Version 1.0 du 13/04/2010 Etat : Validé SUIVI DES MODIFICATIONS Version Rédaction Description Vérification Date 1.0 A. Lesuffleur création du document 13/04/10 Document validé dans

Plus en détail

Introduction aux exercices en Java

Introduction aux exercices en Java Introduction aux exercices en Java Avant de commencer les séries proprement dites, nous allons voir quelques informations utiles concernant le langage de programmation principal de ce cours d'informatique

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Logiciels de Base. 2ème partie: Logiciels de base. Cours 1ère année informatique, semestre 1. Najib Tounsi

Logiciels de Base. 2ème partie: Logiciels de base. Cours 1ère année informatique, semestre 1. Najib Tounsi Logiciels de Base 2ème partie: Logiciels de base Cours 1ère année informatique, semestre 1. Najib Tounsi Lien permanent: http://www.emi.ac.ma/~ntounsi/cours/logbase/logicielsdebase-2.html 1. Les produits

Plus en détail

PG208, Projet n 3 : Serveur HTTP évolué

PG208, Projet n 3 : Serveur HTTP évolué PG208, Projet n 3 : Serveur HTTP évolué Bertrand LE GAL, Serge BOUTER et Clément VUCHENER Filière électronique 2 eme année - Année universitaire 2011-2012 1 Introduction 1.1 Objectif du projet L objectif

Plus en détail

MANUEL D UTILISATION DU LOGICIEL GoBACKUP 4.85

MANUEL D UTILISATION DU LOGICIEL GoBACKUP 4.85 MANUEL D UTILISATION DU LOGICIEL GoBACKUP 4.85 INSTALLATION 2 SUR LE SITE DE GOBACKUP 2 SUR VOTRE ORDINATEUR 3 UTILISATION DU LOGICIEL GOBACKUP 10 LES DIFFERENTES FONCTIONS DE GOBACKUP 10 SAUVEGARDER 11

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

WWW - Intérêts du Web

WWW - Intérêts du Web WWW - Intérêts du Web client universel facilité d'emploi standards ouverts intégration des autres services Internet extensibilité du système faibles coûts logiciel et réseau utilisation au sein d'une entreprise

Plus en détail

Programmation Socket en Java

Programmation Socket en Java Programmation Socket en Java Cours sockets Université Paul Sabatier Plan Un bon réflexe Les adresses IP en Java Sockets en mode flot La classe Socket La classe ServerSocket Communication via les Sockets

Plus en détail

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

TP N o 2 - Utilisateurs et droits

TP N o 2 - Utilisateurs et droits IUT de Villetaneuse E. Viennet GTR 2ème année Introduction au Système UNIX 22/09/03 TP N o 2 - Utilisateurs et droits Vous rédigerez un compte rendu, sur lequel vous indiquerez la réponse à chaque question,

Plus en détail

Initiation au HPC - Programmation concurrente

Initiation au HPC - Programmation concurrente Initiation au HPC - Programmation concurrente Éric Ramat et Julien Dehos Université du Littoral Côte d Opale M2 Informatique 12 octobre 2015 Éric Ramat et Julien Dehos Initiation au HPC - Programmation

Plus en détail

Objets distribués et Appel de Méthodes à Distance 2009-2010

Objets distribués et Appel de Méthodes à Distance 2009-2010 Objets distribués et Appel de Méthodes à Distance 2009-2010 1 Objectif : construire une application où différents modules peuvent être situés sur des machines différentes, en utilisant un modèle à objets

Plus en détail

ArcGIS Pro : guide de l utilisateur pour l installation et l autorisation

ArcGIS Pro : guide de l utilisateur pour l installation et l autorisation ArcGIS Pro : guide de l utilisateur pour l installation et l autorisation Le présent document décrit la marche à suivre pour télécharger et activer ArcGIS Pro. Premier pas : Qu est-ce qu ArcGIS Pro Installation

Plus en détail

édition revue et corrigée avec Java SE 7 7 1 Les bases 11 Compiler un programme Java 13 Exécuter un programme Java 14 Définir le chemin de classe 15

édition revue et corrigée avec Java SE 7 7 1 Les bases 11 Compiler un programme Java 13 Exécuter un programme Java 14 Définir le chemin de classe 15 Table des matières Au sujet de l auteur 1 Introduction 3 édition revue et corrigée avec Java SE 7 7 1 Les bases 11 Compiler un programme Java 13 Exécuter un programme Java 14 Définir le chemin de classe

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail

Systèmes d exploitation. Introduction. (Operating Systems) http://www.sir.blois.univ-tours.fr/ mirian/

Systèmes d exploitation. Introduction. (Operating Systems) http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation (Operating Systems) Introduction SITE : http://www.sir.blois.univ-tours.fr/ mirian/ Systèmes d exploitation - Mírian Halfeld-Ferrari p. 1/2 Qu est-ce qu un SE? Ensemble de logiciels

Plus en détail

TP 1 : Premier contact

TP 1 : Premier contact TP 1 : Premier contact Informatique Fondamentale (IF1) Semaine du 22 Septembre 2008 Les sujets de TP sont disponibles à l adresse http://www.pps.jussieu.fr/~jch/enseignement/if1/ Les transparents de cours

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes

Programmation en Python - Cours 2 : Premiers programmes Programmation en Python - Cours 2 : Premiers programmes 2013/2014 Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Saisie de données par l utilisateur : input(),

Plus en détail

Asynchronous Mailing System. Jérôme Clet-Ortega François Broquedis Dave Tapesar Stéphanie Moreaud 12 janvier 2007

Asynchronous Mailing System. Jérôme Clet-Ortega François Broquedis Dave Tapesar Stéphanie Moreaud 12 janvier 2007 Asynchronous Mailing System Jérôme Clet-Ortega François Broquedis Dave Tapesar Stéphanie Moreaud 12 janvier 2007 1 2 Objectifs Asynchronous Mailing System (AMS) doit permettre de rédiger des mails sur

Plus en détail

TP4 : Firewall IPTABLES

TP4 : Firewall IPTABLES Module Sécurité TP4 : Firewall IPTABLES Ala Rezmerita François Lesueur Le TP donnera lieu à la rédaction d un petit fichier texte contenant votre nom, les réponses aux questions ainsi que d éventuels résultats

Plus en détail

Informations sur l utilisation du webmail du CNRS. Webmail du CNRS. Manuel Utilisateur

Informations sur l utilisation du webmail du CNRS. Webmail du CNRS. Manuel Utilisateur Informations sur l utilisation du webmail du CNRS Webmail du CNRS Manuel Utilisateur V1.0 Octobre 2012 Table des matières Généralités... 2 Navigateurs testés... 2 Internet Explorer... 2 Firefox... 3 Connexion...

Plus en détail

Communication entre processus avec des tuyaux Fils Java. Partie A La communication entre processus avec tuyaux

Communication entre processus avec des tuyaux Fils Java. Partie A La communication entre processus avec tuyaux Systèmes d exploitation CSI3531 Labo 2 Communication entre processus avec des tuyaux Fils Java Partie A La communication entre processus avec tuyaux Objectif : Explorer le IPC avec les tuyaux UNIX/Linux

Plus en détail

Cours Visual Basic URCA

Cours Visual Basic URCA Cours Visual Basic URCA Sommaire Introduction à la programmation VBA et VB Syntaxe de base, variables Opérateurs de base, boucles Introduction à la programmation Qu est-ce que la programmation? Séquences

Plus en détail

1. Eléments de base du langage C

1. Eléments de base du langage C 1 1. Eléments de base du langage C Généralités Programme et sous-programme Fonction C Structure d un programme C Vocabulaire de base et syntaxe Exemples 2 Généralités Crée en 1972 par D. Ritchie pour écrire

Plus en détail

LE RPV DE NIVEAU RÉSEAU AVEC TINC

LE RPV DE NIVEAU RÉSEAU AVEC TINC LE RPV DE NIVEAU RÉSEAU AVEC TINC L entreprise Ilog est une petite entreprise de services informatiques située à La Défense. Les chefs de projet de l entreprise sont souvent en déplacement à travers toute

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 7 : RMI Nom(s) : Groupe : Date : Objectifs : savoir créer des applications client-serveur mettant en jeu des machines

Plus en détail

CORBA avec OpenORB. Samir Torki et Patrice Torguet

CORBA avec OpenORB. Samir Torki et Patrice Torguet CORBA avec OpenORB Samir Torki et Patrice Torguet 1 Présentation de CORBA CORBA (Common Object Request Broker Architecture) est un standard décrivant une architecture pour la mise en place d objets distribués.

Plus en détail

Conception Plateforme Messagerie

Conception Plateforme Messagerie Conception Plateforme Messagerie Date du document Vendredi 19 mai 2006 Sommaire du document I. Introduction...1 II. Une vision globale du système...1 1. Le diagramme de classes UML...1 2. Détail des méthodes

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Le programme OFFICE GSP est disponible sur le site http://www.officegsp.com.

Le programme OFFICE GSP est disponible sur le site http://www.officegsp.com. 1 1 - Installation & Mise à Jour du logiciel 1.1 Première Installation Cette procédure d installation est indispensable pour tout ordinateur n ayant jamais fait l objet d une installation du logiciel.

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Java Avancé - Cours 2

Java Avancé - Cours 2 Java avancé - cours 2 1/8 Java Avancé - Cours 2 Plan 1 Communication entre objets 1 1.1 Motivation....................................................... 1 1.2 Relations entre le panier et le rayon.........................................

Plus en détail

Projet d Etude et de Développement

Projet d Etude et de Développement Projet d Etude et de Développement PokerServer Guide d installation Auteurs: Lucas Kerdoncuff Balla Seck Rafik Ferroukh Xan Lucu Youga MBaye Clients: David Bromberg Laurent Réveillère March 28, 2012 Contents

Plus en détail

Sauvegarde des données d affaires de Bell Guide de démarrage. Vous effectuez le travail Nous le sauvegarderons. Automatiquement

Sauvegarde des données d affaires de Bell Guide de démarrage. Vous effectuez le travail Nous le sauvegarderons. Automatiquement Sauvegarde des données d affaires de Bell Guide de démarrage Vous effectuez le travail Nous le sauvegarderons. Automatiquement Guide De Démarrage Introduction...2 Configuration Minimale Requise...3 Étape

Plus en détail

Informatique. Programmation en Python.

Informatique. Programmation en Python. BCPST 1 B 13 septembre 2015 Informatique. Programmation en Python. Ce document est un support de cours, il vous permet d avoir sa structure et ses éléments les plus importants. Au cours des séances en

Plus en détail

Tutoriel de création et d utilisation d une bibliothèque dynamique (dll)

Tutoriel de création et d utilisation d une bibliothèque dynamique (dll) Tutoriel de création et d utilisation d une bibliothèque dynamique (dll) Cette procédure démontre comment on crée une bibliothèque dynamique (Dynamic Link Library ou DLL) contenant des classes utiles pour

Plus en détail

Introduction à Eclipse

Introduction à Eclipse Introduction à Eclipse Eclipse IDE est un environnement de développement intégré libre (le terme Eclipse désigne également le projet correspondant, lancé par IBM) extensible, universel et polyvalent, permettant

Plus en détail

S. Laporte C# mode console DAIGL TS1

S. Laporte C# mode console DAIGL TS1 Bases du langage C# I. C# en mode console (mode texte) Avantages par rapport au mode graphique (Application Windows): - C'est un mode plus proche de l'approche algorithmique (pas de notions de composants,

Plus en détail

Utiliser NDK dans un projet Android

Utiliser NDK dans un projet Android Introduction NDK est une suite d outils permettant de compiler puis d utiliser du code natif dans une application Android. Ce code natif est ensuite appelé via JNI (Java Native Interface), fournissant

Plus en détail

BAT 4 Polytech Nice. Cours Environnement Logiciel puis Internet, Services et Réseaux en BAT4. Vérification des effectifs, Appel Sur EDT

BAT 4 Polytech Nice. Cours Environnement Logiciel puis Internet, Services et Réseaux en BAT4. Vérification des effectifs, Appel Sur EDT BAT 4 Polytech Nice Cours Environnement Logiciel puis Internet, Services et Réseaux en BAT4 Vérification des effectifs, Appel Sur EDT Une consigne : prenez des notes pendant les cours! Les supports ne

Plus en détail

5.1 Sauvegarder avec Nero

5.1 Sauvegarder avec Nero Nero propose plusieurs outils et méthodes pour sauvegarder le contenu d un disque dur et le restaurer. De fait, les supports optiques représentent des solutions parfaitement bien adaptées pour l enregistrement

Plus en détail

Ajout d items spécifiques

Ajout d items spécifiques 1 Ajout d items spécifiques Item : SNMP (Borne Wi-Fi & Switch.) Introduction sur le SNMP. SNMP est relativement simple une fois qu on a compris. Voyons comment se compose un ensemble d éléments communiquant

Plus en détail

CCNA Discovery Travailler dans une PME ou chez un fournisseur de services Internet

CCNA Discovery Travailler dans une PME ou chez un fournisseur de services Internet Curriculum Name Guide du participant CCENT 3 Section 9.3 Dépannage de l adressage IP de la couche 3 Cette section consacrée au dépannage vous permettra d étudier les conditions nécessaires à l obtention

Plus en détail

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi 802.11 module

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi 802.11 module François SCHNEIDER Lycée Victor-Hugo BESANÇON. STS SE FreeRTOS Programmation réseau WIFI Programmation réseau Socket Tcp FlyPort smart Wi-Fi 802.11 module Prérequis : langage C, connaissance réseau : Ip,

Plus en détail

Communications et synchronisations. Système L3, 2014-2015 1/21

Communications et synchronisations. Système L3, 2014-2015 1/21 Communications et synchronisations Système L3, 2014-2015 1/21 Le problème des philosophes (Dijkstra 1965) Cinq philosophes sont assis autour d une table ronde Chaque philosophe a devant lui un plat de

Plus en détail

Programmation Objet Java Correction

Programmation Objet Java Correction INSA - 4 AE 2007 2008 Durée : 1H00 Contrôle Programmation Objet Java Correction Consignes Tous les documents sont autorisés, mais ils seront peu utiles. Indiquez vos nom et prénom sur chaque feuille. Le

Plus en détail

Module d anonymisation

Module d anonymisation Module d anonymisation Préambule Ce module permet d «anonymiser» un fichier, c est à dire de masquer les informations qu il contient en fonction de règles préalablement spécifiées. Le fichier généré par

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

Interfaçage de programmation. c Olivier Caron

Interfaçage de programmation. c Olivier Caron Interfaçage de programmation 1 Le SGBD est-il suffisant? (1/2) Les pour : La puissance du langage de requêtes. 1 Le SGBD est-il suffisant? (1/2) Les pour : La puissance du langage de requêtes. L aspect

Plus en détail

Procédures et fonctions

Procédures et fonctions Chapitre 5 Procédures et fonctions 5.1 Introduction Considérons le programme suivant, dont le but est d inverser les éléments d un tableau : public class InversionTableau1 { int t[]= {8, 2, 1, 23; Terminal.ecrireStringln("Tableau

Plus en détail

Guide de l utilisateur de PrintMe Mobile 3.0

Guide de l utilisateur de PrintMe Mobile 3.0 Guide de l utilisateur de PrintMe Mobile 3.0 Sommaire A propos de PrintMe Mobile Matériel et logiciels nécessaires Impression Dépannage A propos de PrintMe Mobile PrintMe Mobile est une solution d impression

Plus en détail

420KEL Petite révision v. 1,65. Petite révision

420KEL Petite révision v. 1,65. Petite révision Petite révision Quelques petits exercices pour vous rafraîchir la mémoire et vous remettre en forme. Dans les exercices pour lesquels on vous demande de programmer, cherchez à produire un résultat à la

Plus en détail

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation.

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Sébastien COLLETTE et Gilles GEERAERTS 1 Introduction Ce document décrit

Plus en détail

Installation et utilisation de SSH. .et

Installation et utilisation de SSH. .et Installation et utilisation de SSH.et.soumission de travail SSH est un protocole de communication qui permet de communiquer à distance entre deux ordinateurs. Pour cela, il faut qu un des deux ordinateurs

Plus en détail

Python et la Programmation fonctionnelle. Programmation fonctionnelle 3. Programmation fonctionnelle pure 4. Matthieu Amiguet

Python et la Programmation fonctionnelle. Programmation fonctionnelle 3. Programmation fonctionnelle pure 4. Matthieu Amiguet Python et la Programmation fonctionnelle Matthieu Amiguet 2009 2010 1 Programmation fonctionnelle? 2 3 Lambda expressions 4 5 Programmation fonctionnelle? Programmation fonctionnelle 3 L expression programmation

Plus en détail

TP1 : Traducteur «Français-Anglais»

TP1 : Traducteur «Français-Anglais» TP1 : Traducteur «Français-Anglais» Objectifs : créer deux activités, basculer entre activités, passer des paramètres entre activités, utiliser un service Internet pour faire réaliser une traduction, utiliser

Plus en détail

RPC Remote Procedure Call. Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benm@gmail.com

RPC Remote Procedure Call. Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benm@gmail.com RPC Remote Procedure Call Benmoussa Yahia Université M hamed Bougara de Boumerdès yahia.benm@gmail.com Objectifs Le rôle de RPC comme middleware Positionner RPC dans le modèle OSI Développement d application

Plus en détail

Algorithmie ISI301 TP 1 : Python et premiers algorithmes

Algorithmie ISI301 TP 1 : Python et premiers algorithmes Algorithmie ISI301 TP 1 : Python et premiers algorithmes 1 Python : apprentissage Pour avoir une vision plus large des différentes possibilités du langage Python, nous ne pouvons que vous conseiller d

Plus en détail