From e8a6bb9959074109db9f4d21c568ea7ddaf108cb Mon Sep 17 00:00:00 2001 From: Nathan Baudrier Date: Tue, 10 Feb 2026 17:46:27 +0100 Subject: [PATCH] all (flemme) --- .../Exercise1/Database.java | 0 .../Exercise1/Main.java | 0 .../Exercise1/Vote.java | 0 .../Exercise1/Votes.java | 0 .../Exercise1/data.sql | 0 .../Exercise1/start.sh | 0 .../Exercise2/Database.java | 0 .../Exercise2/Main.java | 0 .../Exercise2/ScoreBoardWindow.java | 0 .../Exercise1/GridWindow.java | 0 .../Exercise1/GridWindowClosedEvent.java | 0 .../{TP03 => TP_List}/Exercise1/Main.java | 0 .../{TP03 => TP_List}/Exercise2/Champ.java | 0 .../{TP03 => TP_List}/Exercise2/Database.java | 0 .../{TP03 => TP_List}/Exercise2/Main.java | 0 .../{TP03 => TP_List}/Exercise2/schema.sql | 0 .../TP_Queue/Exercise1/SortedQueue.java | 0 .../TP_Queue/Exercise2/CustomQueue.java | 6 + DEV/DEV3.1/{TP02 => TP_Recursion}/.DS_Store | Bin .../Part1/ClickSwapImageEvent.java | 0 .../Part1/ImageManager.java | 0 .../Part1/ImageWindow.java | 0 .../{TP02 => TP_Recursion}/Part1/Main.java | 0 .../Part2/ApprovedButtonPressedEvent.java | 0 .../Part2/CancelButtonPressedEvent.java | 0 .../Part2/ClickSwapImageEvent.java | 0 .../Part2/CloseVerificationWindow.java | 0 .../Part2/ImageWindow.java | 0 .../{TP02 => TP_Recursion}/Part2/Main.java | 0 .../Part2/WindowClosedEvent.java | 0 .../{TP02 => TP_Recursion}/Part2/start.sh | 0 .../{TP02 => TP_Recursion}/resources/dice.jpg | Bin .../{TP02 => TP_Recursion}/resources/frog.png | Bin .../resources/random.jpg | Bin .../TP_Tree1/Exercise1/DirectoryList.java | 32 + DEV/DEV3.2/TP_Tree1/Exercise1/Node.java | 8 + DEV/DEV3.2/TP_Tree1/Exercise1/tp/answer.txt | 0 .../TP_Tree1/Exercise1/tp/tp1/content.txt | 0 DEV/DEV3.4/TP01/ADN.java | 0 DEV/DEV3.4/TP01/Base.java | 6 + DEV/DEV3.4/TP01/stub/0Bad/Base.java | 4 + DEV/DEV3.4/TP01/stub/0Bad/Exemple.java | 31 + DEV/DEV3.4/TP01/stub/0Bad/MonBrin.java | 28 + DEV/DEV3.4/TP01/stub/0Bad/MonMaillon.java | 29 + DEV/DEV3.4/TP01/stub/1Iterable/Base.java | 4 + DEV/DEV3.4/TP01/stub/1Iterable/Exemple.java | 34 + DEV/DEV3.4/TP01/stub/1Iterable/MonBrin.java | 45 ++ .../TP01/stub/1Iterable/MonMaillon.java | 36 + DEV/DEV3.4/TP01/stub/2Iterator/Base.java | 4 + DEV/DEV3.4/TP01/stub/2Iterator/Exemple.java | 35 + DEV/DEV3.4/TP01/stub/2Iterator/MonBrin.java | 37 + .../TP01/stub/2Iterator/MonBrinIterator.java | 32 + .../TP01/stub/2Iterator/MonMaillon.java | 29 + .../Base.java | 4 + .../Exemple.java | 58 ++ .../MonBrin.java | 83 +++ .../MonBrinIterator.java | 33 + DEV/DEV3.4/TP01/stub/explication.txt | 20 + SCR/SCR3.2/TP00/answer.txt | 25 + SCR/SCR3.2/TP00/tp00.SCR.3.2.imn | 645 ++++++++++++++++++ SCR/SCR3.2/TP00/tp00.SCR.3.2.pdf | Bin 0 -> 117373 bytes SCR/SCR3.2/TP01/answer.txt | 25 + SCR/SCR3.2/TP01/one-gateway.imn | 208 ++++++ SCR/SCR3.2/TP01/two-gateway.imn | 323 +++++++++ 64 files changed, 1824 insertions(+) rename DEV/DEV3.1/{TP01 => TP_Genericity}/Exercise1/Database.java (100%) rename DEV/DEV3.1/{TP01 => TP_Genericity}/Exercise1/Main.java (100%) rename DEV/DEV3.1/{TP01 => TP_Genericity}/Exercise1/Vote.java (100%) rename DEV/DEV3.1/{TP01 => TP_Genericity}/Exercise1/Votes.java (100%) rename DEV/DEV3.1/{TP01 => TP_Genericity}/Exercise1/data.sql (100%) rename DEV/DEV3.1/{TP01 => TP_Genericity}/Exercise1/start.sh (100%) rename DEV/DEV3.1/{TP01 => TP_Genericity}/Exercise2/Database.java (100%) rename DEV/DEV3.1/{TP01 => TP_Genericity}/Exercise2/Main.java (100%) rename DEV/DEV3.1/{TP01 => TP_Genericity}/Exercise2/ScoreBoardWindow.java (100%) rename DEV/DEV3.1/{TP03 => TP_List}/Exercise1/GridWindow.java (100%) rename DEV/DEV3.1/{TP03 => TP_List}/Exercise1/GridWindowClosedEvent.java (100%) rename DEV/DEV3.1/{TP03 => TP_List}/Exercise1/Main.java (100%) rename DEV/DEV3.1/{TP03 => TP_List}/Exercise2/Champ.java (100%) rename DEV/DEV3.1/{TP03 => TP_List}/Exercise2/Database.java (100%) rename DEV/DEV3.1/{TP03 => TP_List}/Exercise2/Main.java (100%) rename DEV/DEV3.1/{TP03 => TP_List}/Exercise2/schema.sql (100%) create mode 100644 DEV/DEV3.1/TP_Queue/Exercise1/SortedQueue.java create mode 100644 DEV/DEV3.1/TP_Queue/Exercise2/CustomQueue.java rename DEV/DEV3.1/{TP02 => TP_Recursion}/.DS_Store (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/Part1/ClickSwapImageEvent.java (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/Part1/ImageManager.java (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/Part1/ImageWindow.java (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/Part1/Main.java (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/Part2/ApprovedButtonPressedEvent.java (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/Part2/CancelButtonPressedEvent.java (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/Part2/ClickSwapImageEvent.java (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/Part2/CloseVerificationWindow.java (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/Part2/ImageWindow.java (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/Part2/Main.java (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/Part2/WindowClosedEvent.java (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/Part2/start.sh (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/resources/dice.jpg (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/resources/frog.png (100%) rename DEV/DEV3.1/{TP02 => TP_Recursion}/resources/random.jpg (100%) create mode 100644 DEV/DEV3.2/TP_Tree1/Exercise1/DirectoryList.java create mode 100644 DEV/DEV3.2/TP_Tree1/Exercise1/Node.java create mode 100644 DEV/DEV3.2/TP_Tree1/Exercise1/tp/answer.txt create mode 100644 DEV/DEV3.2/TP_Tree1/Exercise1/tp/tp1/content.txt create mode 100644 DEV/DEV3.4/TP01/ADN.java create mode 100644 DEV/DEV3.4/TP01/Base.java create mode 100644 DEV/DEV3.4/TP01/stub/0Bad/Base.java create mode 100644 DEV/DEV3.4/TP01/stub/0Bad/Exemple.java create mode 100644 DEV/DEV3.4/TP01/stub/0Bad/MonBrin.java create mode 100644 DEV/DEV3.4/TP01/stub/0Bad/MonMaillon.java create mode 100644 DEV/DEV3.4/TP01/stub/1Iterable/Base.java create mode 100644 DEV/DEV3.4/TP01/stub/1Iterable/Exemple.java create mode 100644 DEV/DEV3.4/TP01/stub/1Iterable/MonBrin.java create mode 100644 DEV/DEV3.4/TP01/stub/1Iterable/MonMaillon.java create mode 100644 DEV/DEV3.4/TP01/stub/2Iterator/Base.java create mode 100644 DEV/DEV3.4/TP01/stub/2Iterator/Exemple.java create mode 100644 DEV/DEV3.4/TP01/stub/2Iterator/MonBrin.java create mode 100644 DEV/DEV3.4/TP01/stub/2Iterator/MonBrinIterator.java create mode 100644 DEV/DEV3.4/TP01/stub/2Iterator/MonMaillon.java create mode 100644 DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/Base.java create mode 100644 DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/Exemple.java create mode 100644 DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/MonBrin.java create mode 100644 DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/MonBrinIterator.java create mode 100644 DEV/DEV3.4/TP01/stub/explication.txt create mode 100644 SCR/SCR3.2/TP00/answer.txt create mode 100644 SCR/SCR3.2/TP00/tp00.SCR.3.2.imn create mode 100644 SCR/SCR3.2/TP00/tp00.SCR.3.2.pdf create mode 100644 SCR/SCR3.2/TP01/answer.txt create mode 100644 SCR/SCR3.2/TP01/one-gateway.imn create mode 100644 SCR/SCR3.2/TP01/two-gateway.imn diff --git a/DEV/DEV3.1/TP01/Exercise1/Database.java b/DEV/DEV3.1/TP_Genericity/Exercise1/Database.java similarity index 100% rename from DEV/DEV3.1/TP01/Exercise1/Database.java rename to DEV/DEV3.1/TP_Genericity/Exercise1/Database.java diff --git a/DEV/DEV3.1/TP01/Exercise1/Main.java b/DEV/DEV3.1/TP_Genericity/Exercise1/Main.java similarity index 100% rename from DEV/DEV3.1/TP01/Exercise1/Main.java rename to DEV/DEV3.1/TP_Genericity/Exercise1/Main.java diff --git a/DEV/DEV3.1/TP01/Exercise1/Vote.java b/DEV/DEV3.1/TP_Genericity/Exercise1/Vote.java similarity index 100% rename from DEV/DEV3.1/TP01/Exercise1/Vote.java rename to DEV/DEV3.1/TP_Genericity/Exercise1/Vote.java diff --git a/DEV/DEV3.1/TP01/Exercise1/Votes.java b/DEV/DEV3.1/TP_Genericity/Exercise1/Votes.java similarity index 100% rename from DEV/DEV3.1/TP01/Exercise1/Votes.java rename to DEV/DEV3.1/TP_Genericity/Exercise1/Votes.java diff --git a/DEV/DEV3.1/TP01/Exercise1/data.sql b/DEV/DEV3.1/TP_Genericity/Exercise1/data.sql similarity index 100% rename from DEV/DEV3.1/TP01/Exercise1/data.sql rename to DEV/DEV3.1/TP_Genericity/Exercise1/data.sql diff --git a/DEV/DEV3.1/TP01/Exercise1/start.sh b/DEV/DEV3.1/TP_Genericity/Exercise1/start.sh similarity index 100% rename from DEV/DEV3.1/TP01/Exercise1/start.sh rename to DEV/DEV3.1/TP_Genericity/Exercise1/start.sh diff --git a/DEV/DEV3.1/TP01/Exercise2/Database.java b/DEV/DEV3.1/TP_Genericity/Exercise2/Database.java similarity index 100% rename from DEV/DEV3.1/TP01/Exercise2/Database.java rename to DEV/DEV3.1/TP_Genericity/Exercise2/Database.java diff --git a/DEV/DEV3.1/TP01/Exercise2/Main.java b/DEV/DEV3.1/TP_Genericity/Exercise2/Main.java similarity index 100% rename from DEV/DEV3.1/TP01/Exercise2/Main.java rename to DEV/DEV3.1/TP_Genericity/Exercise2/Main.java diff --git a/DEV/DEV3.1/TP01/Exercise2/ScoreBoardWindow.java b/DEV/DEV3.1/TP_Genericity/Exercise2/ScoreBoardWindow.java similarity index 100% rename from DEV/DEV3.1/TP01/Exercise2/ScoreBoardWindow.java rename to DEV/DEV3.1/TP_Genericity/Exercise2/ScoreBoardWindow.java diff --git a/DEV/DEV3.1/TP03/Exercise1/GridWindow.java b/DEV/DEV3.1/TP_List/Exercise1/GridWindow.java similarity index 100% rename from DEV/DEV3.1/TP03/Exercise1/GridWindow.java rename to DEV/DEV3.1/TP_List/Exercise1/GridWindow.java diff --git a/DEV/DEV3.1/TP03/Exercise1/GridWindowClosedEvent.java b/DEV/DEV3.1/TP_List/Exercise1/GridWindowClosedEvent.java similarity index 100% rename from DEV/DEV3.1/TP03/Exercise1/GridWindowClosedEvent.java rename to DEV/DEV3.1/TP_List/Exercise1/GridWindowClosedEvent.java diff --git a/DEV/DEV3.1/TP03/Exercise1/Main.java b/DEV/DEV3.1/TP_List/Exercise1/Main.java similarity index 100% rename from DEV/DEV3.1/TP03/Exercise1/Main.java rename to DEV/DEV3.1/TP_List/Exercise1/Main.java diff --git a/DEV/DEV3.1/TP03/Exercise2/Champ.java b/DEV/DEV3.1/TP_List/Exercise2/Champ.java similarity index 100% rename from DEV/DEV3.1/TP03/Exercise2/Champ.java rename to DEV/DEV3.1/TP_List/Exercise2/Champ.java diff --git a/DEV/DEV3.1/TP03/Exercise2/Database.java b/DEV/DEV3.1/TP_List/Exercise2/Database.java similarity index 100% rename from DEV/DEV3.1/TP03/Exercise2/Database.java rename to DEV/DEV3.1/TP_List/Exercise2/Database.java diff --git a/DEV/DEV3.1/TP03/Exercise2/Main.java b/DEV/DEV3.1/TP_List/Exercise2/Main.java similarity index 100% rename from DEV/DEV3.1/TP03/Exercise2/Main.java rename to DEV/DEV3.1/TP_List/Exercise2/Main.java diff --git a/DEV/DEV3.1/TP03/Exercise2/schema.sql b/DEV/DEV3.1/TP_List/Exercise2/schema.sql similarity index 100% rename from DEV/DEV3.1/TP03/Exercise2/schema.sql rename to DEV/DEV3.1/TP_List/Exercise2/schema.sql diff --git a/DEV/DEV3.1/TP_Queue/Exercise1/SortedQueue.java b/DEV/DEV3.1/TP_Queue/Exercise1/SortedQueue.java new file mode 100644 index 0000000..e69de29 diff --git a/DEV/DEV3.1/TP_Queue/Exercise2/CustomQueue.java b/DEV/DEV3.1/TP_Queue/Exercise2/CustomQueue.java new file mode 100644 index 0000000..888f81d --- /dev/null +++ b/DEV/DEV3.1/TP_Queue/Exercise2/CustomQueue.java @@ -0,0 +1,6 @@ +import java.util.AbstractQueue; +import java.util.Collection; + +public class CustomQueue extends AbstractQueue { + +} diff --git a/DEV/DEV3.1/TP02/.DS_Store b/DEV/DEV3.1/TP_Recursion/.DS_Store similarity index 100% rename from DEV/DEV3.1/TP02/.DS_Store rename to DEV/DEV3.1/TP_Recursion/.DS_Store diff --git a/DEV/DEV3.1/TP02/Part1/ClickSwapImageEvent.java b/DEV/DEV3.1/TP_Recursion/Part1/ClickSwapImageEvent.java similarity index 100% rename from DEV/DEV3.1/TP02/Part1/ClickSwapImageEvent.java rename to DEV/DEV3.1/TP_Recursion/Part1/ClickSwapImageEvent.java diff --git a/DEV/DEV3.1/TP02/Part1/ImageManager.java b/DEV/DEV3.1/TP_Recursion/Part1/ImageManager.java similarity index 100% rename from DEV/DEV3.1/TP02/Part1/ImageManager.java rename to DEV/DEV3.1/TP_Recursion/Part1/ImageManager.java diff --git a/DEV/DEV3.1/TP02/Part1/ImageWindow.java b/DEV/DEV3.1/TP_Recursion/Part1/ImageWindow.java similarity index 100% rename from DEV/DEV3.1/TP02/Part1/ImageWindow.java rename to DEV/DEV3.1/TP_Recursion/Part1/ImageWindow.java diff --git a/DEV/DEV3.1/TP02/Part1/Main.java b/DEV/DEV3.1/TP_Recursion/Part1/Main.java similarity index 100% rename from DEV/DEV3.1/TP02/Part1/Main.java rename to DEV/DEV3.1/TP_Recursion/Part1/Main.java diff --git a/DEV/DEV3.1/TP02/Part2/ApprovedButtonPressedEvent.java b/DEV/DEV3.1/TP_Recursion/Part2/ApprovedButtonPressedEvent.java similarity index 100% rename from DEV/DEV3.1/TP02/Part2/ApprovedButtonPressedEvent.java rename to DEV/DEV3.1/TP_Recursion/Part2/ApprovedButtonPressedEvent.java diff --git a/DEV/DEV3.1/TP02/Part2/CancelButtonPressedEvent.java b/DEV/DEV3.1/TP_Recursion/Part2/CancelButtonPressedEvent.java similarity index 100% rename from DEV/DEV3.1/TP02/Part2/CancelButtonPressedEvent.java rename to DEV/DEV3.1/TP_Recursion/Part2/CancelButtonPressedEvent.java diff --git a/DEV/DEV3.1/TP02/Part2/ClickSwapImageEvent.java b/DEV/DEV3.1/TP_Recursion/Part2/ClickSwapImageEvent.java similarity index 100% rename from DEV/DEV3.1/TP02/Part2/ClickSwapImageEvent.java rename to DEV/DEV3.1/TP_Recursion/Part2/ClickSwapImageEvent.java diff --git a/DEV/DEV3.1/TP02/Part2/CloseVerificationWindow.java b/DEV/DEV3.1/TP_Recursion/Part2/CloseVerificationWindow.java similarity index 100% rename from DEV/DEV3.1/TP02/Part2/CloseVerificationWindow.java rename to DEV/DEV3.1/TP_Recursion/Part2/CloseVerificationWindow.java diff --git a/DEV/DEV3.1/TP02/Part2/ImageWindow.java b/DEV/DEV3.1/TP_Recursion/Part2/ImageWindow.java similarity index 100% rename from DEV/DEV3.1/TP02/Part2/ImageWindow.java rename to DEV/DEV3.1/TP_Recursion/Part2/ImageWindow.java diff --git a/DEV/DEV3.1/TP02/Part2/Main.java b/DEV/DEV3.1/TP_Recursion/Part2/Main.java similarity index 100% rename from DEV/DEV3.1/TP02/Part2/Main.java rename to DEV/DEV3.1/TP_Recursion/Part2/Main.java diff --git a/DEV/DEV3.1/TP02/Part2/WindowClosedEvent.java b/DEV/DEV3.1/TP_Recursion/Part2/WindowClosedEvent.java similarity index 100% rename from DEV/DEV3.1/TP02/Part2/WindowClosedEvent.java rename to DEV/DEV3.1/TP_Recursion/Part2/WindowClosedEvent.java diff --git a/DEV/DEV3.1/TP02/Part2/start.sh b/DEV/DEV3.1/TP_Recursion/Part2/start.sh similarity index 100% rename from DEV/DEV3.1/TP02/Part2/start.sh rename to DEV/DEV3.1/TP_Recursion/Part2/start.sh diff --git a/DEV/DEV3.1/TP02/resources/dice.jpg b/DEV/DEV3.1/TP_Recursion/resources/dice.jpg similarity index 100% rename from DEV/DEV3.1/TP02/resources/dice.jpg rename to DEV/DEV3.1/TP_Recursion/resources/dice.jpg diff --git a/DEV/DEV3.1/TP02/resources/frog.png b/DEV/DEV3.1/TP_Recursion/resources/frog.png similarity index 100% rename from DEV/DEV3.1/TP02/resources/frog.png rename to DEV/DEV3.1/TP_Recursion/resources/frog.png diff --git a/DEV/DEV3.1/TP02/resources/random.jpg b/DEV/DEV3.1/TP_Recursion/resources/random.jpg similarity index 100% rename from DEV/DEV3.1/TP02/resources/random.jpg rename to DEV/DEV3.1/TP_Recursion/resources/random.jpg diff --git a/DEV/DEV3.2/TP_Tree1/Exercise1/DirectoryList.java b/DEV/DEV3.2/TP_Tree1/Exercise1/DirectoryList.java new file mode 100644 index 0000000..3d2dc6c --- /dev/null +++ b/DEV/DEV3.2/TP_Tree1/Exercise1/DirectoryList.java @@ -0,0 +1,32 @@ +import java.io.File; + +class DirectoryList { + + public static void main(String[] args) { + if(args.length == 0) { + System.err.println("Usage: DirectoryList "); + return; + } + + String repositoryName = args[0]; + + File directory = new File(repositoryName); + + if(!directory.exists()) { + System.err.println("Repository not found."); + return; + } + + System.out.println(directory.getName()); + listFiles(directory, "\t"); + } + + private static void listFiles(File directory, String space) { + if(!directory.isDirectory() || directory.listFiles().length == 0) return; + + for(File file : directory.listFiles()) { + System.out.println(space + file.getName()); + listFiles(file, space + '\t'); + } + } +} \ No newline at end of file diff --git a/DEV/DEV3.2/TP_Tree1/Exercise1/Node.java b/DEV/DEV3.2/TP_Tree1/Exercise1/Node.java new file mode 100644 index 0000000..c51a628 --- /dev/null +++ b/DEV/DEV3.2/TP_Tree1/Exercise1/Node.java @@ -0,0 +1,8 @@ +public class Node { + private String name; + private Node[] children; + + public Node(String name) { + + } +} diff --git a/DEV/DEV3.2/TP_Tree1/Exercise1/tp/answer.txt b/DEV/DEV3.2/TP_Tree1/Exercise1/tp/answer.txt new file mode 100644 index 0000000..e69de29 diff --git a/DEV/DEV3.2/TP_Tree1/Exercise1/tp/tp1/content.txt b/DEV/DEV3.2/TP_Tree1/Exercise1/tp/tp1/content.txt new file mode 100644 index 0000000..e69de29 diff --git a/DEV/DEV3.4/TP01/ADN.java b/DEV/DEV3.4/TP01/ADN.java new file mode 100644 index 0000000..e69de29 diff --git a/DEV/DEV3.4/TP01/Base.java b/DEV/DEV3.4/TP01/Base.java new file mode 100644 index 0000000..81d1097 --- /dev/null +++ b/DEV/DEV3.4/TP01/Base.java @@ -0,0 +1,6 @@ +public enum Base { + A, + C, + G, + T +} diff --git a/DEV/DEV3.4/TP01/stub/0Bad/Base.java b/DEV/DEV3.4/TP01/stub/0Bad/Base.java new file mode 100644 index 0000000..5e6a4cf --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/0Bad/Base.java @@ -0,0 +1,4 @@ +// juste un type énuméré pour nommer les bases +public enum Base { + A,C,G,T +} diff --git a/DEV/DEV3.4/TP01/stub/0Bad/Exemple.java b/DEV/DEV3.4/TP01/stub/0Bad/Exemple.java new file mode 100644 index 0000000..ae72d5c --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/0Bad/Exemple.java @@ -0,0 +1,31 @@ +// Fichier Exemple pour le premier exercice sur l'ADN + +public class Exemple{ + public static void main(String[] args) { + // codon GCT code l'analine https://en.wikipedia.org/wiki/DNA_codon_table + // stop codon TAG, voir https://en.wikipedia.org/wiki/Stop_codon + + System.out.println("construction du brin GCTTAG"); + MonMaillon l = new MonMaillon(Base.G); + l = new MonMaillon(Base.A,l); + l = new MonMaillon(Base.T,l); + l = new MonMaillon(Base.T,l); + l = new MonMaillon(Base.C,l); + l = new MonMaillon(Base.G,l); + + MonBrin b = new MonBrin(l); + + System.out.println("l'affichage par défaut du brin ne va pas vous plaire"); + System.out.println(b.toString()); + + + System.out.println("On peut afficher en avançant"); + System.out.println("Il faut s'en inspirer pour implémenter l'interface iterator de Java.util"); + MonMaillon actuel = b.getDebut();//NB: c'est comme l ci-dessus + + while (actuel != null){ + System.out.println(actuel.getBase()); + actuel = actuel.getSuiteMaillon(); + } + } +} diff --git a/DEV/DEV3.4/TP01/stub/0Bad/MonBrin.java b/DEV/DEV3.4/TP01/stub/0Bad/MonBrin.java new file mode 100644 index 0000000..5026f07 --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/0Bad/MonBrin.java @@ -0,0 +1,28 @@ +/** + MonBrin code un brin d'ADN sous forme de liste simplement chaînée. + + Plusieurs instances de MonMaillon reliées convenablement forment une structure de liste simplement chaînée contenant pour chaque maillon le nom de la base. + + On n'utilise pas java.util et on recode tout. + + Cette version a un problème : la navigation n'est pas raisonnable +*/ +public class MonBrin { + + //Le constructeur fabrique un brin à partir du premier maillon p; + public MonBrin(MonMaillon p){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + public MonMaillon getDebut(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + /** et pour naviguer? + On pourrait implémenter l'interface iterator de java.util ici + **/ + + +} + + diff --git a/DEV/DEV3.4/TP01/stub/0Bad/MonMaillon.java b/DEV/DEV3.4/TP01/stub/0Bad/MonMaillon.java new file mode 100644 index 0000000..d5e4c66 --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/0Bad/MonMaillon.java @@ -0,0 +1,29 @@ +/** + MonMaillon code un maillon d'un brin d'ADN. + plusieurs instances reliées convenablement forment une structure de liste simplement chaînée contenant pour chaque maillon le nom de la base. + On n'utilise pas java.util et on recode tout. + +*/ +public class MonMaillon { + + //Le constructeur de base retourne un brin à une base; + public MonMaillon(Base b){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + // Le constructeur évolué ajoute une base à un brin. + public MonMaillon(Base b, MonMaillon l){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + public Base getBase(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + public MonMaillon getSuiteMaillon(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + +} + + diff --git a/DEV/DEV3.4/TP01/stub/1Iterable/Base.java b/DEV/DEV3.4/TP01/stub/1Iterable/Base.java new file mode 100644 index 0000000..5e6a4cf --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/1Iterable/Base.java @@ -0,0 +1,4 @@ +// juste un type énuméré pour nommer les bases +public enum Base { + A,C,G,T +} diff --git a/DEV/DEV3.4/TP01/stub/1Iterable/Exemple.java b/DEV/DEV3.4/TP01/stub/1Iterable/Exemple.java new file mode 100644 index 0000000..94a55a7 --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/1Iterable/Exemple.java @@ -0,0 +1,34 @@ +// Fichier Exemple pour le second exercice sur l'ADN + +public class Exemple{ + public static void main(String[] args) { + // codon GCT code l'analine https://en.wikipedia.org/wiki/DNA_codon_table + // stop codon TAG, voir https://en.wikipedia.org/wiki/Stop_codon + + System.out.println("construction du brin GCTTAG"); + MonMaillon l = new MonMaillon(Base.G); + l = new MonMaillon(Base.A,l); + l = new MonMaillon(Base.T,l); + l = new MonMaillon(Base.T,l); + l = new MonMaillon(Base.C,l); + l = new MonMaillon(Base.G,l); + + MonBrin b = new MonBrin(l); + + System.out.println("l'affichage par défaut du brin ne va pas vous plaire"); + System.out.println(b.toString()); + + System.out.println("On peut maintenant afficher en itérant avec un while comme ceci"); + + while (b.hasNext()){ + System.out.println(b.next()); + } + + // ajouter du code ici pour gérer les questions en plus + // (simulation de plusieurs navigations successives) + + + // (simulation de plusieurs navigations simultanées) + } + +} diff --git a/DEV/DEV3.4/TP01/stub/1Iterable/MonBrin.java b/DEV/DEV3.4/TP01/stub/1Iterable/MonBrin.java new file mode 100644 index 0000000..35674eb --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/1Iterable/MonBrin.java @@ -0,0 +1,45 @@ +import java.util.Iterator; +import java.util.NoSuchElementException; +/** + MonBrin code un brin d'ADN sous forme de liste simplement chaînée. + + Plusieurs instances de MonMaillon reliées convenablement forment une structure de liste simplement chaînée contenant pour chaque maillon le nom de la base. + + On n'utilise pas java.util et on recode tout. + + Cette version a un problème : la structuration et la navigation sont dans la même classe. +*/ +public class MonBrin implements Iterator { + private MonMaillon premier; + private MonMaillon courant; + + public MonBrin(MonMaillon premier){ + this.premier = premier; + this.courant = premier; + } + + public MonMaillon getDebut(){ + return this.premier; + } + + + // rappel : on met @Override pour dire au compilateur qu'on veut surcharger (en particulier c'est le cas quand on implémente une interface) + // ce n'est pas nécessaire dans ce cas mais ça permet d'avoir des messages d'alerte si on se trompe (typo dans le nom de la méthode ...) + // voir https://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why + @Override + public boolean hasNext(){ + return this.courant != null; + } + + @Override + public Base next() { + Base base = this.courant.getBase(); + this.courant = this.courant.getSuiteMaillon(); + return base; + } + +} + + + + diff --git a/DEV/DEV3.4/TP01/stub/1Iterable/MonMaillon.java b/DEV/DEV3.4/TP01/stub/1Iterable/MonMaillon.java new file mode 100644 index 0000000..90e044c --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/1Iterable/MonMaillon.java @@ -0,0 +1,36 @@ +import java.util.Iterator; + +/** + MonMaillon code un maillon d'un brin d'ADN. + plusieurs instances reliées convenablement forment une structure de liste simplement chaînée contenant pour chaque maillon le nom de la base. + On n'utilise pas java.util et on recode tout. + +*/ +public class MonMaillon implements Iterable { + private Base b; + private MonMaillon l; + + public MonMaillon(Base b) { + this.b = b; + } + + public MonMaillon(Base b, MonMaillon l){ + this.b = b; + this.l = l; + } + + public Base getBase(){ + return this.b; + } + + public MonMaillon getSuiteMaillon(){ + return l; + } + + @Override + public Iterator iterator() { + return new MonBrin(l); + } +} + + diff --git a/DEV/DEV3.4/TP01/stub/2Iterator/Base.java b/DEV/DEV3.4/TP01/stub/2Iterator/Base.java new file mode 100644 index 0000000..5e6a4cf --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/2Iterator/Base.java @@ -0,0 +1,4 @@ +// juste un type énuméré pour nommer les bases +public enum Base { + A,C,G,T +} diff --git a/DEV/DEV3.4/TP01/stub/2Iterator/Exemple.java b/DEV/DEV3.4/TP01/stub/2Iterator/Exemple.java new file mode 100644 index 0000000..b48d0a7 --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/2Iterator/Exemple.java @@ -0,0 +1,35 @@ +// Fichier Exemple pour le dernier exercice sur l'ADN (Iterable) + +public class Exemple{ + + public static void main(String[] args) { + + // codon GCT code l'analine https://en.wikipedia.org/wiki/DNA_codon_table + // stop codon TAG, voir https://en.wikipedia.org/wiki/Stop_codon + + System.out.println("construction du brin GCTTAG"); + MonMaillon l = new MonMaillon(Base.G); + l = new MonMaillon(Base.A,l); + l = new MonMaillon(Base.T,l); + l = new MonMaillon(Base.T,l); + l = new MonMaillon(Base.C,l); + l = new MonMaillon(Base.G,l); + + MonBrin m = new MonBrin(l); + + System.out.println("l'affichage par défaut du brin ne va pas vous plaire"); + System.out.println(m.toString()); + + System.out.println("On peut afficher en itérant avec forEach (une méthode proposée par Iterable, regardez la doc)"); + m.forEach(b -> System.out.println(b)); + + System.out.println("On a découplé la navigation de la structuration en implémentant iterable plutôt que iterator. On peut maintenant naviguer 2 fois facilement, c'est vraiment trop fort."); + m.forEach(b -> System.out.println(b)); + + System.out.println("On peut même utiliser les boucles avancées de Java 8 et notre code en devient presque pythonesque"); + for(Base b: m){ + System.out.println(b); + } + } + +} diff --git a/DEV/DEV3.4/TP01/stub/2Iterator/MonBrin.java b/DEV/DEV3.4/TP01/stub/2Iterator/MonBrin.java new file mode 100644 index 0000000..b6782cc --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/2Iterator/MonBrin.java @@ -0,0 +1,37 @@ +import java.util.Iterator; +import java.util.NoSuchElementException; +/** + MonBrin code un brin d'ADN sous forme de liste simplement chaînée. + + Plusieurs instances de MonMaillon reliées convenablement forment une structure de liste simplement chaînée contenant pour chaque maillon le nom de la base. + + On n'utilise pas java.util et on recode tout. + + Cette version est correcte : la structuration et la navigation sont dans 2 classes séparées. +La classe MonBrin implémente Iterable au sens où elle peut générer à la demande un objet Iterator. + +NB : Notez que j'implémente Iterable plutôt que Iterable qui n'était pas tout à fait propre +c'est un peu technique et c'est lié aux types génériques. + Il y a des détails ici +https://stackoverflow.com/questions/20790770/why-cant-i-assign-a-raw-type-to-a-parameterized-type-java?rq=1 +*/ +public class MonBrin implements Iterable{ + + + public MonBrin(MonMaillon p){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + public MonMaillon getDebut(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + /** Pour naviguer? + On implémente l'interface iterator de java.util ici + L'avantage c'est que c'est standard et tout le monde comprendra sans trop de mal comment la navigation fonctionne. + **/ + @Override + public Iterator iterator() { + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } +} diff --git a/DEV/DEV3.4/TP01/stub/2Iterator/MonBrinIterator.java b/DEV/DEV3.4/TP01/stub/2Iterator/MonBrinIterator.java new file mode 100644 index 0000000..a2a85e7 --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/2Iterator/MonBrinIterator.java @@ -0,0 +1,32 @@ +import java.util.Iterator; +import java.util.NoSuchElementException; + +/** +MonBrinIterator + +gère la navigation dans un Brin d'ADN + +*/ +public class MonBrinIterator implements Iterator { + + public MonBrinIterator(MonMaillon m){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + /** Pour naviguer? + On implémente l'interface iterable de java.util ici + L'avantage c'est que c'est standard et tout le monde comprendra sans trop de mal comment la navogation fonctionne. + **/ + @Override + public boolean hasNext(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + @Override + public Base next() { + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + +} + + diff --git a/DEV/DEV3.4/TP01/stub/2Iterator/MonMaillon.java b/DEV/DEV3.4/TP01/stub/2Iterator/MonMaillon.java new file mode 100644 index 0000000..d5e4c66 --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/2Iterator/MonMaillon.java @@ -0,0 +1,29 @@ +/** + MonMaillon code un maillon d'un brin d'ADN. + plusieurs instances reliées convenablement forment une structure de liste simplement chaînée contenant pour chaque maillon le nom de la base. + On n'utilise pas java.util et on recode tout. + +*/ +public class MonMaillon { + + //Le constructeur de base retourne un brin à une base; + public MonMaillon(Base b){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + // Le constructeur évolué ajoute une base à un brin. + public MonMaillon(Base b, MonMaillon l){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + public Base getBase(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + public MonMaillon getSuiteMaillon(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + +} + + diff --git a/DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/Base.java b/DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/Base.java new file mode 100644 index 0000000..5e6a4cf --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/Base.java @@ -0,0 +1,4 @@ +// juste un type énuméré pour nommer les bases +public enum Base { + A,C,G,T +} diff --git a/DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/Exemple.java b/DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/Exemple.java new file mode 100644 index 0000000..b4afd21 --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/Exemple.java @@ -0,0 +1,58 @@ +// Fichier Exemple pour le dernier exercice sur l'ADN (Iterable) + +public class Exemple{ + + public static void main(String[] args) { + + // codon GCT code l'analine https://en.wikipedia.org/wiki/DNA_codon_table + // codon CAT code Histidine + // codon CGT code Arginine + // codon GCC code Analine + // stop codon TAG, voir https://en.wikipedia.org/wiki/Stop_codon + + System.out.println("construction du brin CGT CAT CGT GCC CAT GCT TAG"); + MonBrin l = new MonBrin(Base.G); + l = new MonBrin(Base.A,l); + l = new MonBrin(Base.T,l); + // + l = new MonBrin(Base.T,l); + l = new MonBrin(Base.C,l); + l = new MonBrin(Base.G,l); + // + l = new MonBrin(Base.T,l); + l = new MonBrin(Base.A,l); + l = new MonBrin(Base.C,l); + // + l = new MonBrin(Base.C,l); + l = new MonBrin(Base.C,l); + l = new MonBrin(Base.G,l); + // + l = new MonBrin(Base.T,l); + l = new MonBrin(Base.G,l); + l = new MonBrin(Base.C,l); + // + l = new MonBrin(Base.T,l); + l = new MonBrin(Base.A,l); + l = new MonBrin(Base.C,l); + // + l = new MonBrin(Base.T,l); + l = new MonBrin(Base.G,l); + l = new MonBrin(Base.C,l); + // + + System.out.println("l'affichage par défaut ne va toujours pas vous plaire"); + System.out.println(l.toString()); + + System.out.println("On peut afficher en itérant avec forEach (une méthode proposée par Iterable, regardez la doc)"); + l.forEach(b -> System.out.println(b)); + + System.out.println("On a découplé la navigation de la structuration en implémentant iterable plutôt que iterator. On peut maintenant naviguer 2 fois facilement, c'est vraiment trop fort."); + l.forEach(b -> System.out.println(b)); + + System.out.println("On peut même utiliser les boucles avancées de Java 8 et notre code en devient presque pythonesque"); + for(Base b: l){ + System.out.println(b); + } + } + +} diff --git a/DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/MonBrin.java b/DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/MonBrin.java new file mode 100644 index 0000000..6cd0ad1 --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/MonBrin.java @@ -0,0 +1,83 @@ +import java.util.Iterator; +import java.util.NoSuchElementException; + +/** +MonBrin code un brin d'ADN sous forme de tableaux. Dynamiquement, la taille du tableau est augmentée en cas de besoin (la taille est initialement 3*4 elle est multipliée ensuite pour être toujours de la forme 3*2^n). +On utilise System.arraycopy et java.util.Arrays.copyOfRange pour faire ça efficacement. +voir +https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#arraycopy-java.lang.Object-int-java.lang.Object-int-int- +https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html#copyOfRange-T:A-int-int- + +Cette version est correcte : la structuration et la navigation sont dans 2 classes séparées. +La classe MonBrin implémente Iterable au sens où elle peut générer à la demande un objet Iterator. + +NB : Notez que j'implémente Iterable plutôt que Iterable qui n'était pas tout à fait propre +c'est un peu technique et c'est lié aux types génériques. + Il y a des détails ici +https://stackoverflow.com/questions/20790770/why-cant-i-assign-a-raw-type-to-a-parameterized-type-java?rq=1 +*/ + +public class MonBrin implements Iterable { + + /** + C'est le constructeur de base (pun intended) qui construit un brin à une base + + @param b : la base + + Ici je pourrais mettre un commentaire plus long sur le fonctionement détaillé de mon super constructeur. + + */ + public MonBrin(Base b){ + + } + + /** + C'est le constructeur évolué qui construit un brin en ajoutant la base donnée en argument devant le brin donné en argument. + + @param b : la base qui va aller devant + @param l : le brin qui sera à la suite + + NB. Ce constructeur est un peu obsolète avec la nouvelle structure interne. + On devrait en ajouter un qui prend en paramètre un tableau de bases. + */ + public MonBrin(Base b, MonBrin l){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + public Base getBase(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + public int length(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + public int limit(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + public int capacity(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + public Base getBase(int i){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + public Base[] getBases(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + /** Pour naviguer? + On implémente l'interface iterator de java.util ici + L'avantage c'est que c'est standard et tout le monde comprendra sans trop de mal comment la navigation fonctionne. + **/ + @Override + public Iterator iterator() { + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + +} + + diff --git a/DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/MonBrinIterator.java b/DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/MonBrinIterator.java new file mode 100644 index 0000000..363d355 --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/3IteratorDifferentInnerStructure/MonBrinIterator.java @@ -0,0 +1,33 @@ +import java.util.Iterator; +import java.util.NoSuchElementException; + +/** +MonBrinIterator + +gère la navigation dans un Brin d'ADN + +*/ +public class MonBrinIterator implements Iterator { + + //Le constructeur de base retourne un brin à une base; + public MonBrinIterator(MonBrin brin){ + } + + /** Pour naviguer? + On implémente l'interface iterable de java.util ici + L'avantage c'est que c'est standard et tout le monde comprendra sans trop de mal comment la navigation fonctionne. + **/ + + @Override + public boolean hasNext(){ + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + + @Override + public Base next() { + throw new UnsupportedOperationException("cette méthode n'est pas implémentée"); + } + +} + + diff --git a/DEV/DEV3.4/TP01/stub/explication.txt b/DEV/DEV3.4/TP01/stub/explication.txt new file mode 100644 index 0000000..9254e46 --- /dev/null +++ b/DEV/DEV3.4/TP01/stub/explication.txt @@ -0,0 +1,20 @@ +Les biologistes sont des gens étranges pour lesquels les string n'ont que 4 lettres : A,C,G ou T. +Ils ne connaissent pas les String, ils parlent d'ADN. + + +Le Brin est une succession de Maillons. +Il suffit de connaître le premier maillon pour définir un brin d'ADN. + + +----------+ + | maillon | + | | _____ next __> autre Maillon + | | + +----+-----+ + | + | val + \|/ + +----------+ + | Base | + | A | + | | + +----+-----+ diff --git a/SCR/SCR3.2/TP00/answer.txt b/SCR/SCR3.2/TP00/answer.txt new file mode 100644 index 0000000..9fd213d --- /dev/null +++ b/SCR/SCR3.2/TP00/answer.txt @@ -0,0 +1,25 @@ +S3 -> S4 +S4 -> S3 +S4 -> S5 +S5 -> S3 +S5 -> S6 +S5 -> S7 +S5 -> S8 +S5 -> S9 +S6 -> S3 +S6 -> S6 +S6 -> S7 +S6 -> S8 +S6 -> S9 +S7 -> S6 +S7 -> S8 +S7 -> S9 + +- PC3 : +10.32.0.0/17 10.16.0.254 + +- PC4 : +10.16.0.0/17 10.32.0.254 +10.48.0.0/17 10.32.0.255 + +- PC5 diff --git a/SCR/SCR3.2/TP00/tp00.SCR.3.2.imn b/SCR/SCR3.2/TP00/tp00.SCR.3.2.imn new file mode 100644 index 0000000..2045e03 --- /dev/null +++ b/SCR/SCR3.2/TP00/tp00.SCR.3.2.imn @@ -0,0 +1,645 @@ +node n2 { + type lanswitch + network-config { + hostname switch3 + ! + } + canvas c0 + iconcoords {96 528} + labelcoords {97 556} + interface-peer {e0 n10} + interface-peer {e1 n19} + interface-peer {e2 n0} +} + +node n3 { + type lanswitch + network-config { + hostname switch4 + ! + } + canvas c0 + iconcoords {120 72} + labelcoords {75 55} + interface-peer {e0 n10} + interface-peer {e1 n11} + interface-peer {e2 n20} +} + +node n4 { + type lanswitch + network-config { + hostname switch5 + ! + } + canvas c0 + iconcoords {360 288} + labelcoords {341 309} + interface-peer {e0 n9} + interface-peer {e1 n11} + interface-peer {e2 n21} + interface-peer {e3 n1} +} + +node n5 { + type lanswitch + network-config { + hostname switch6 + ! + } + canvas c0 + iconcoords {816 48} + labelcoords {765 27} + interface-peer {e0 n9} + interface-peer {e1 n22} +} + +node n6 { + type lanswitch + network-config { + hostname switch7 + ! + } + canvas c0 + iconcoords {816 264} + labelcoords {810 232} + interface-peer {e0 n9} + interface-peer {e1 n12} + interface-peer {e2 n23} + interface-peer {e3 n8} +} + +node n7 { + type lanswitch + network-config { + hostname switch8 + ! + } + canvas c0 + iconcoords {528 312} + labelcoords {513 289} + interface-peer {e0 n12} + interface-peer {e1 n13} + interface-peer {e2 n14} +} + +node n9 { + type host + network-config { + hostname P5 + ! + interface eth3 + mac address 42:00:aa:00:00:09 + ip address 10.80.0.254/17 + ! + interface eth2 + mac address 42:00:aa:00:00:04 + ip address 10.64.0.254/17 + ! + interface eth1 + mac address 42:00:aa:00:00:03 + ip address 10.48.0.254/17 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + ! + } + canvas c0 + iconcoords {576 96} + labelcoords {543 52} + interface-peer {eth1 n4} + interface-peer {eth2 n5} + interface-peer {eth3 n6} + custom-configs { + custom-config-id default { + custom-command /bin/sh + config { + ip addr add 127.0.0.1/8 dev lo0 + + ip addr add 10.48.0.254/17 dev eth1 + ip addr add 10.64.0.254/17 dev eth2 + ip addr add 10.80.0.254/17 dev eth3 + ip -6 addr add ::1/128 dev lo0 + + + iptables -t nat -A POSTROUTING -o eth3 -s 10.48.0.0/17 -j SNAT --to-source 10.80.0.254 + + rpcbind + inetd + + } + } + } + custom-enabled true + custom-selected default +} + +node n10 { + type host + network-config { + hostname P3 + ! + interface eth1 + mac address 42:00:aa:00:00:06 + ip address 10.32.0.254/17 + ! + interface eth0 + mac address 42:00:aa:00:00:05 + ip address 10.16.0.254/17 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + ! + } + canvas c0 + iconcoords {240 288} + labelcoords {246 328} + interface-peer {eth0 n2} + interface-peer {eth1 n3} +} + +node n11 { + type host + network-config { + hostname P4 + ! + interface eth1 + mac address 42:00:aa:00:00:08 + ip address 10.48.0.255/17 + ! + interface eth0 + mac address 42:00:aa:00:00:07 + ip address 10.32.0.255/17 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + ! + } + canvas c0 + iconcoords {312 96} + labelcoords {319 52} + interface-peer {eth0 n3} + interface-peer {eth1 n4} + custom-configs { + custom-config-id default { + custom-command /bin/sh + config { + ip addr add 127.0.0.1/8 dev lo0 + ip addr add 10.32.0.255/17 dev eth0 + ip addr add 10.48.0.255/17 dev eth1 + ip -6 addr add ::1/128 dev lo0 + + + iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 10.32.0.255 + iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 10.48.0.255 + + rpcbind + inetd + + } + } + } + custom-enabled true + custom-selected default +} + +node n12 { + type host + network-config { + hostname P6 + ! + interface eth0 + mac address 42:00:aa:00:00:0a + ip address 10.80.0.255/17 + ! + interface eth1 + mac address 42:00:aa:00:00:0b + ip address 102.103.104.255/15 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + ! + ! + } + canvas c0 + iconcoords {792 456} + labelcoords {751 479} + interface-peer {eth0 n6} + interface-peer {eth1 n7} + custom-configs { + custom-config-id default { + custom-command /bin/sh + config { + ip addr add 127.0.0.1/8 dev lo0 + ip addr add 10.80.0.255/17 dev eth0 + ip addr add 102.103.104.255/15 dev eth1 + ip -6 addr add ::1/128 dev lo0 + + + iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 102.103.104.255 + + rpcbind + inetd + + } + } + } + custom-enabled true + custom-selected default +} + +node n13 { + type router + model quagga + network-config { + hostname router1 + ! + interface eth1 + mac address 42:00:aa:00:00:0e + ip address 202.203.204.254/11 + ! + interface eth0 + mac address 42:00:aa:00:00:0c + ip address 102.103.104.254/15 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + router rip + redistribute static + redistribute connected + redistribute ospf + network 0.0.0.0/0 + ! + router ripng + redistribute static + redistribute connected + redistribute ospf6 + network ::/0 + ! + } + canvas c0 + iconcoords {792 576} + labelcoords {792 601} + interface-peer {eth0 n7} + interface-peer {eth1 n15} +} + +node n14 { + type host + network-config { + hostname host2 + ! + interface eth0 + mac address 42:00:aa:00:00:0d + ip address 102.103.104.104/15 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + ! + } + canvas c0 + iconcoords {384 456} + labelcoords {369 415} + interface-peer {eth0 n7} +} + +node n15 { + type host + network-config { + hostname host3 + ! + interface eth0 + mac address 42:00:aa:00:00:0f + ip address 202.203.204.204/11 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + ! + ! + } + canvas c0 + iconcoords {408 552} + labelcoords {408 588} + interface-peer {eth0 n13} +} + +node n19 { + type pc + network-config { + hostname pc3 + ! + interface eth0 + mac address 42:00:aa:00:00:13 + ip address 10.16.0.3/17 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + ! + ip route 10.32.0.0/17 10.16.0.254 + ! + } + canvas c0 + iconcoords {264 432} + labelcoords {264 463} + interface-peer {eth0 n2} +} + +node n20 { + type pc + network-config { + hostname pc4 + ! + interface eth0 + mac address 42:00:aa:00:00:14 + ip address 10.32.0.4/17 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + ! + ip route 10.16.0.0/17 10.32.0.254 + ip route 10.48.0.0/17 10.32.0.255 + ! + } + canvas c0 + iconcoords {48 264} + labelcoords {48 295} + interface-peer {eth0 n3} +} + +node n21 { + type pc + network-config { + hostname pc5 + ! + interface eth0 + mac address 42:00:aa:00:00:15 + ip address 10.48.0.5/17 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + ! + ip route 0.0.0.0/0 10.48.0.5 + ! + } + canvas c0 + iconcoords {528 216} + labelcoords {528 247} + interface-peer {eth0 n4} +} + +node n22 { + type pc + network-config { + hostname pc6 + ! + interface eth0 + mac address 42:00:aa:00:00:16 + ip address 10.64.0.6/17 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + ! + } + canvas c0 + iconcoords {768 144} + labelcoords {768 175} + interface-peer {eth0 n5} +} + +node n23 { + type pc + network-config { + hostname pc7 + ! + interface eth0 + mac address 42:00:aa:00:00:17 + ip address 10.80.0.7/17 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + ! + } + canvas c0 + iconcoords {624 216} + labelcoords {624 247} + interface-peer {eth0 n6} +} + +node n0 { + type host + network-config { + hostname host1 + ! + interface eth0 + mac address 42:00:aa:00:00:00 + ip address 10.16.0.200/17 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + ! + } + canvas c0 + iconcoords {48 360} + labelcoords {31 327} + interface-peer {eth0 n2} +} + +node n1 { + type pc + network-config { + hostname pc6-5 + ! + interface eth0 + mac address 42:00:aa:00:00:01 + ip address 10.48.0.6/17 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + } + canvas c0 + iconcoords {456 72} + labelcoords {429 41} + interface-peer {eth0 n4} +} + +node n8 { + type pc + network-config { + hostname pc8 + ! + interface eth0 + mac address 42:00:aa:00:00:02 + ip address 10.80.0.8/17 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ipv6 address ::1/128 + ! + } + canvas c0 + iconcoords {648 288} + labelcoords {648 319} + interface-peer {eth0 n6} +} + +link l3 { + nodes {n9 n4} + bandwidth 0 +} + +link l4 { + nodes {n5 n9} + bandwidth 0 +} + +link l5 { + nodes {n10 n2} + bandwidth 0 +} + +link l6 { + nodes {n3 n10} + bandwidth 0 +} + +link l7 { + nodes {n11 n3} + bandwidth 0 +} + +link l8 { + nodes {n4 n11} + bandwidth 0 +} + +link l9 { + nodes {n6 n9} + bandwidth 0 +} + +link l10 { + nodes {n6 n12} + bandwidth 0 +} + +link l11 { + nodes {n7 n12} + bandwidth 0 +} + +link l12 { + nodes {n13 n7} + bandwidth 0 +} + +link l13 { + nodes {n7 n14} + bandwidth 0 +} + +link l14 { + nodes {n15 n13} + bandwidth 0 +} + +link l18 { + nodes {n19 n2} + bandwidth 0 +} + +link l19 { + nodes {n20 n3} + bandwidth 0 +} + +link l20 { + nodes {n4 n21} + bandwidth 0 +} + +link l21 { + nodes {n5 n22} + bandwidth 0 +} + +link l22 { + nodes {n6 n23} + bandwidth 0 +} + +link l0 { + nodes {n2 n0} + bandwidth 0 +} + +link l1 { + nodes {n1 n4} + bandwidth 0 +} + +link l2 { + nodes {n6 n8} + bandwidth 0 +} + +canvas c0 { + name {Canvas0} +} + +option show { + interface_names yes + ip_addresses yes + ipv6_addresses yes + node_labels yes + link_labels yes + background_images no + annotations yes + hostsAutoAssign no + grid yes + iconSize normal + zoom 1.0 +} + diff --git a/SCR/SCR3.2/TP00/tp00.SCR.3.2.pdf b/SCR/SCR3.2/TP00/tp00.SCR.3.2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0f3315719d7f5b2a56ba7f6ca5b17b628a679d18 GIT binary patch literal 117373 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�(ziRh2zt?UL>iv2|TQ%bEg~x9=RbnFa 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%0AoE8Sf&NuaU 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

>o*U+lg{w_uizc_UM+Ct#8=UroUHUUQy=M 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 literal 0 HcmV?d00001 diff --git a/SCR/SCR3.2/TP01/answer.txt b/SCR/SCR3.2/TP01/answer.txt new file mode 100644 index 0000000..c15f21b --- /dev/null +++ b/SCR/SCR3.2/TP01/answer.txt @@ -0,0 +1,25 @@ +II. + +1. + +- Dans les machines de S1 (table de routage) : +172.16.2.0/24 172.16.1.254 + +2. + +Ajouter ce script dans la configuration de la passerelle : + +ip addr add 127.0.0.1/8 dev lo0 +ip addr add 172.16.1.254/24 dev eth0 +ip addr add 172.16.2.254/24 dev eth1 + +iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 172.16.2.254 + +rpcbind +inetd + +-> Avec ça, si une machine du S2 renvoie une information à la passerelle, on modifie l'adresse source par l'adresse de la passerelle pour que la réponse puisse arriver à la machine de destination. + +III. + +S3 ne peut pas ping S1, mais peut ping S2, je ne comprends pas. diff --git a/SCR/SCR3.2/TP01/one-gateway.imn b/SCR/SCR3.2/TP01/one-gateway.imn new file mode 100644 index 0000000..38ec9f4 --- /dev/null +++ b/SCR/SCR3.2/TP01/one-gateway.imn @@ -0,0 +1,208 @@ +node n0 { + type pc + network-config { + hostname pc1-1 + ! + interface eth0 + mac address 42:00:aa:00:00:02 + ip address 172.16.1.1/24 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ! + ! + ip route 172.16.2.0/24 172.16.1.254 + ! + } + auto_default_routes enabled + canvas c0 + iconcoords {72 528} + labelcoords {72 559} + interface-peer {eth0 n5} +} + +node n1 { + type pc + network-config { + hostname pc1-2 + ! + interface eth0 + mac address 42:00:aa:00:00:03 + ip address 172.16.1.2/24 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ! + ip route 172.16.2.0/24 172.16.1.254 + ! + } + auto_default_routes enabled + canvas c0 + iconcoords {288 528} + labelcoords {288 559} + interface-peer {eth0 n5} +} + +node n2 { + type pc + network-config { + hostname pc2-1 + ! + interface eth0 + mac address 42:00:aa:00:00:00 + ip address 172.16.2.1/24 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ! + } + auto_default_routes enabled + canvas c0 + iconcoords {600 528} + labelcoords {600 559} + interface-peer {eth0 n6} +} + +node n3 { + type pc + network-config { + hostname pc2-2 + ! + interface eth0 + mac address 42:00:aa:00:00:01 + ip address 172.16.2.2/24 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ! + } + auto_default_routes enabled + canvas c0 + iconcoords {816 528} + labelcoords {816 559} + interface-peer {eth0 n6} +} + +node n4 { + type host + network-config { + hostname host1 + ! + interface eth1 + mac address 42:00:aa:00:00:05 + ip address 172.16.2.254/24 + ! + interface eth0 + mac address 42:00:aa:00:00:04 + ip address 172.16.1.254/24 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ! + } + canvas c0 + iconcoords {456 96} + labelcoords {456 132} + interface-peer {eth0 n5} + interface-peer {eth1 n6} + custom-configs { + custom-config-id default { + custom-command /bin/sh + config { + ip addr add 127.0.0.1/8 dev lo0 + ip addr add 172.16.1.254/24 dev eth0 + ip addr add 172.16.2.254/24 dev eth1 + + iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 172.16.2.254 + + rpcbind + inetd + + } + } + } + custom-enabled true + custom-selected default +} + +node n5 { + type lanswitch + network-config { + hostname switch1 + ! + } + canvas c0 + iconcoords {192 312} + labelcoords {192 335} + interface-peer {e0 n0} + interface-peer {e1 n1} + interface-peer {e2 n4} +} + +node n6 { + type lanswitch + network-config { + hostname switch2 + ! + } + canvas c0 + iconcoords {720 312} + labelcoords {720 335} + interface-peer {e0 n2} + interface-peer {e1 n3} + interface-peer {e2 n4} +} + +link l0 { + nodes {n6 n2} + bandwidth 0 +} + +link l1 { + nodes {n6 n3} + bandwidth 0 +} + +link l2 { + nodes {n5 n0} + bandwidth 0 +} + +link l3 { + nodes {n5 n1} + bandwidth 0 +} + +link l4 { + nodes {n4 n5} + bandwidth 0 +} + +link l5 { + nodes {n4 n6} + bandwidth 0 +} + +canvas c0 { + name {Canvas0} +} + +option show { + interface_names yes + ip_addresses yes + ipv6_addresses yes + node_labels yes + link_labels yes + background_images no + annotations yes + hostsAutoAssign no + grid yes + iconSize normal + zoom 1.0 +} + diff --git a/SCR/SCR3.2/TP01/two-gateway.imn b/SCR/SCR3.2/TP01/two-gateway.imn new file mode 100644 index 0000000..50f1a4e --- /dev/null +++ b/SCR/SCR3.2/TP01/two-gateway.imn @@ -0,0 +1,323 @@ +node n0 { + type pc + network-config { + hostname A + ! + interface eth0 + mac address 42:00:aa:00:00:00 + ip address 172.16.1.1/24 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ! + ip route 0.0.0.0/0 172.16.1.254 + ! + } + canvas c0 + iconcoords {96 96} + labelcoords {96 127} + interface-peer {eth0 n3} +} + +node n1 { + type pc + network-config { + hostname B + ! + interface eth0 + mac address 42:00:aa:00:00:01 + ip address 172.16.2.1/24 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ! + ip route 0.0.0.0/0 172.16.2.252 + ! + } + canvas c0 + iconcoords {96 432} + labelcoords {96 463} + interface-peer {eth0 n7} +} + +node n2 { + type pc + network-config { + hostname C + ! + interface eth0 + mac address 42:00:aa:00:00:05 + ip address 172.16.3.1/24 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ! + ip route 0.0.0.0/0 172.16.3.251 + ! + } + canvas c0 + iconcoords {768 192} + labelcoords {768 223} + interface-peer {eth0 n6} +} + +node n3 { + type lanswitch + network-config { + hostname switch1 + ! + } + canvas c0 + iconcoords {288 96} + labelcoords {288 119} + interface-peer {e0 n0} + interface-peer {e2 n4} +} + +node n4 { + type host + network-config { + hostname P1 + ! + interface eth1 + mac address 42:00:aa:00:00:03 + ip address 172.16.2.253/24 + ! + interface eth0 + mac address 42:00:aa:00:00:02 + ip address 172.16.1.254/24 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ! + } + canvas c0 + iconcoords {288 264} + labelcoords {288 300} + interface-peer {eth0 n3} + interface-peer {eth1 n7} + custom-configs { + custom-config-id default { + custom-command /bin/sh + config { + ip addr add 127.0.0.1/8 dev lo0 + ip addr add 172.16.1.254/24 dev eth0 + ip addr add 172.16.2.253/24 dev eth1 + + iptables -t nat -A POSTROUTING -j SNAT --to-source 172.16.2.253 + iptables -t filter -A FORWARD -d 172.16.3.0/24 -j DROP + iptables -t filter -A FORWARD -d 172.16.1.0/24 -s 172.16.2.0/24 -j DROP + + rpcbind + inetd + + } + } + } + custom-enabled true + custom-selected default +} + +node n5 { + type host + network-config { + hostname P2 + ! + interface eth2 + mac address 42:00:aa:00:00:08 + ip address 10.0.0.250/8 + ! + interface eth1 + mac address 42:00:aa:00:00:06 + ip address 172.16.3.251/24 + ! + interface eth0 + mac address 42:00:aa:00:00:04 + ip address 172.16.2.252/24 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ! + } + canvas c0 + iconcoords {528 432} + labelcoords {528 468} + interface-peer {eth1 n6} + interface-peer {eth0 n7} + interface-peer {eth2 n8} + custom-configs { + custom-config-id default { + custom-command /bin/sh + config { + ip addr add 127.0.0.1/8 dev lo0 + ip addr add 172.16.3.251/24 dev eth1 + ip addr add 172.16.2.252/24 dev eth0 + ip addr add 10.0.0.250/8 dev eth2 + + iptables -t filter -A FORWARD -d 172.16.1.0/24,172.16.2.0/24 -j DROP + + rpcbind + inetd + + } + } + } + custom-selected default +} + +node n6 { + type lanswitch + network-config { + hostname switch3 + ! + } + canvas c0 + iconcoords {528 192} + labelcoords {528 215} + interface-peer {e0 n2} + interface-peer {e1 n5} +} + +node n7 { + type lanswitch + network-config { + hostname switch2 + ! + } + canvas c0 + iconcoords {288 432} + labelcoords {288 455} + interface-peer {e0 n1} + interface-peer {e1 n4} + interface-peer {e2 n5} +} + +node n8 { + type router + model quagga + network-config { + hostname router1 + ! + interface eth1 + mac address 42:00:aa:00:00:09 + ip address 10.0.7.1/24 + ! + interface eth0 + mac address 42:00:aa:00:00:07 + ip address 10.0.0.250/8 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ! + router rip + redistribute static + redistribute connected + redistribute ospf + network 0.0.0.0/0 + ! + router ripng + redistribute static + redistribute connected + redistribute ospf6 + network ::/0 + ! + } + canvas c0 + iconcoords {768 432} + labelcoords {768 457} + interface-peer {eth0 n5} + interface-peer {eth1 n9} +} + +node n9 { + type pc + network-config { + hostname D + ! + interface eth0 + mac address 42:00:aa:00:00:0a + ip address 10.0.7.20/24 + ! + interface lo0 + type lo + ip address 127.0.0.1/8 + ! + ip route 0.0.0.0/0 10.0.0.250 + ! + } + auto_default_routes enabled + canvas c0 + iconcoords {864 576} + labelcoords {864 607} + interface-peer {eth0 n8} +} + +link l0 { + nodes {n3 n0} + bandwidth 0 +} + +link l2 { + nodes {n4 n3} + bandwidth 0 +} + +link l4 { + nodes {n6 n2} + bandwidth 0 +} + +link l5 { + nodes {n5 n6} + bandwidth 0 +} + +link l1 { + nodes {n7 n1} + bandwidth 0 +} + +link l3 { + nodes {n4 n7} + bandwidth 0 +} + +link l6 { + nodes {n7 n5} + bandwidth 0 +} + +link l7 { + nodes {n8 n5} + bandwidth 0 +} + +link l8 { + nodes {n8 n9} + bandwidth 0 +} + +canvas c0 { + name {Canvas0} +} + +option show { + interface_names yes + ip_addresses yes + ipv6_addresses yes + node_labels yes + link_labels yes + background_images yes + annotations yes + hostsAutoAssign no + grid yes + iconSize normal + zoom 1.0 +} +