diff --git a/00introduction.tex b/00introduction.tex new file mode 100644 index 0000000..ee93659 --- /dev/null +++ b/00introduction.tex @@ -0,0 +1,24 @@ +\chapter*{Introduction générale} +\addcontentsline{toc}{chapter}{Introduction générale} % to include the introduction to the table of content +\markboth{Introduction générale}{} %To redefine the section page head + +Exemple d'utilisation de la bibliographie utilisée \cite{webArticle2}. Le style utilisé est IEEE \cite{webArticle1}.\\ + +Une introduction d’une à 3 pages où vous poserez clairement le problème auquel vous allez tenter d’apporter une solution. L’introduction se rédige à la fin de votre travail de rédaction. Avant de rédiger l’introduction, structurez TOUT le PFE. L’introduction peut se faire en même temps que la conclusion.\\ + +L’introduction sert trois objectifs : +\begin{itemize} +\item elle introduit le sujet. Ceci signifie qu’il faut présenter succinctement le contexte général du travail accompli, par exemple l’environnement professionnel et l’entreprise pour un rapport de stage, puis définir le sujet en termes précis et concis; +\item elle énonce ensuite succinctement les objectifs du travail personnel, et les moyens mis en œuvre pour tenter de les atteindre; +\item elle s’achève sur une présentation claire du plan adopté pour la suite du corps du rapport. L’annonce du plan se fait au futur et doit être rédigée en entier. +\end{itemize} + +\null + +L’introduction générale doit développer les points suivants : +\begin{itemize} +\item la présentation du contexte du projet (domaine exemple : télécommunication, sécurité, automate etc.); +\item la présentation brève de l’entreprise d’accueil et de son domaine; +\item la description des objectifs du PFE/ Mémoire : justifier le sujet et poser le problème à résoudre; indiquer la manière dont il sera traité en terme d’outils et de méthodes; donner les raisons qui président à ce choix; exposer les intérêts du sujet et sa problématique; +\item l’annonce du plan du rapport sans trop détailler. Il est recommandé, à partir de l’introduction générale, de recourir au « nous» de modestie. +\end{itemize} \ No newline at end of file diff --git a/Implementation.tex b/Implementation.tex new file mode 100644 index 0000000..18ed936 --- /dev/null +++ b/Implementation.tex @@ -0,0 +1,604 @@ +\chapter{Implementation} + + +\section{Initialization} +People usually oversimplify data integration by assuming it involves only extract, transform and load (ETL) tools. Though critical, an ETL tool is just one piece of a complex puzzle. +The data integration framework (DIF) encompasses two categories of processes. Before transforming our data into information that businesspeople can use to analyze and make decisions, we need to start by gathering our data physically from its sources and preparing our metadata. +\vskip0.2cm +Thus, we start our project by establishing our databases connection, whether input resources or output destinations. +\vskip0.2cm +Figure \ref{fig:ssmsDB} shows our initial database in local sql server +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.5\columnwidth]{img/Implementation/Initialization/ssmsDB.PNG}} +\caption{sql server database} +\label{fig:ssmsDB} +\end{figure} +\vskip0.2cm + +\clearpage +Figure \ref{fig:csvDB} shows our csv files for more data +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.5\columnwidth]{img/Implementation/Initialization/csvDB.PNG}} +\caption{csv files} +\label{fig:csvDB} +\end{figure} + +\vskip0.2cm +As in Figure \ref{fig:psqlDB} we created our exporting database in PostgreSQL +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.5\columnwidth]{img/Implementation/Initialization/psqlDB.PNG}} +\caption{PostgreSQL database created} +\label{fig:psqlDB} +\end{figure} +\vskip0.2cm + +We need to connect to multiple databases, then we want to centralize the connection information details in the Metadata folder in the Repository tree view as given in figure\ref{fig:metadata}. +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.3\columnwidth]{img/Implementation/Initialization/metadata.PNG}} +\caption{Talend Metadata} +\label{fig:metadata} +\end{figure} +\vskip0.2cm + +This setup procedure is made of two separate but closely related major tasks: +\vskip0.2cm + +\quad\quad\quad 1- Set up our database connections, + +\quad\quad\quad 2- Retrieve the tables schemas. + +\quad\quad\quad 3- Set up our delmitied csv files. + +1- As shown in Figures \ref{fig:sqlConec} and \ref{fig:psqlConec} we configured our database connections +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.5\columnwidth]{img/Implementation/Initialization/sqlConec.PNG}} +\caption{Microsoft sql server DB connection} +\label{fig:sqlConec} +\end{figure} + +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.5\columnwidth]{img/Implementation/Initialization/psqlConec.PNG}} +\caption{PostgreSQL DB connection} +\label{fig:psqlConec} +\end{figure} +\vskip0.2cm +\clearpage +2- To retrieve table schemas from the database connection you have just set up, right-click the connection item from the Repository tree view, and select Retrieve schema from the contextual menu.Then we simply follow the wizards. + +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.5\columnwidth]{img/Implementation/Initialization/schemas.PNG}} +\caption{retrieving schemas} +\label{fig:psqlConec} +\end{figure} + +3- We finally import our csv files by following the delimited files wizards + +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.5\columnwidth]{img/Implementation/Initialization/filedelimited.PNG}} +\caption{importing csv files} +\label{fig:psqlConec} +\end{figure} +\clearpage +\section{Data Integration with Talend} + % Une sous section + \subsection{Table : Assure} +To implement our first table "Assure", we start by setting up our input component, Microsoft SQL server Database. We define the needed table, its schema ... etc. +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/0.PNG}} +\end{figure} +\vskip0.2cm + +Then, we set up our data importing job, to import all rows from MS SQL to our output database PSQL +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.0.PNG}} +\end{figure} +\vskip0.2cm +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.1.PNG}} +\end{figure} +\vskip0.2cm +\clearpage + +Next, we explore our Assure.csv file where we notice we have 2 new columns that we need to include. +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.4\columnwidth]{img/Implementation/talend/assure/1.2.PNG}} +\end{figure} +\vskip0.2cm + +We setup our components to merge the csv data, we do that by using TMap, configured as following +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.3.0.PNG}} +\end{figure} +\vskip0.2cm + +An expected error occured, which is about not finding the 2 new columns in the PSQL Assure table. +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.3.PNG}} +\end{figure} +\vskip0.2cm +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.4.PNG}} +\end{figure} +\vskip0.2cm + +We fix that by manually creating the new columns +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.5.PNG}} +\end{figure} +\vskip0.2cm + +Then as seen in the next we figure the job should be done correctly : we update 12795 out or 25934 rows from MS SQL with new columns from csv file +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.6.PNG}} +\end{figure} +\vskip0.2cm + +Even though the exportation is completed we notice these errors in TLog, which implies that we have some outliers to fix in our data. +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.7.PNG}} +\end{figure} +\vskip0.2cm + +Now we add the remaining data from our csv. +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.8.PNG}} +\end{figure} + +The outliers errors are shown again in csv data +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.9.PNG}} +\end{figure} + +Our data is ready to explore in PSQL +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.10.PNG}} +\end{figure} + +We noticed a lot of NULL values, which is completely normal since the csv files updated only 25000 files while our initial database from MS SQL had more than 1M rows +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.4\columnwidth]{img/Implementation/talend/assure/1.11.PNG}} +\end{figure} +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.4\columnwidth]{img/Implementation/talend/assure/1.12.PNG}} +\end{figure} + +To fix that we start inspecting our first column to see how many NULL values does it contain. +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.7\columnwidth]{img/Implementation/talend/assure/1.13.PNG}} +\end{figure} + + +In first column "NomPrenomRaisonSocial" we have 13139, we can generate random values for that column using this sql query +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.15.PNG}} +\end{figure} + +The second column to inspect is "CodeTypePieceIdentite" which has a lot of null values +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.16.PNG}} +\end{figure} + +\clearpage + +from exploring the data we noticed that "CodeTypePieceIdentite" column should be containing either "1" or "2" as values, so we can replace those null values using this update with a subselect generator, +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.18.PNG}} +\end{figure} + +This is what we get +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.19.PNG}} +\end{figure} + +We can do that differently using the TRowGenerator +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.21.PNG}} +\end{figure} +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.4\columnwidth]{img/Implementation/talend/assure/1.20.PNG}} +\end{figure} + +The last column to inspect is "CodePostal", which contains also a lot of null variable, at first we didn't want to randomly generate values for this column because that can critically affect or analysis. +\vskip0.2cm +So we tried this query to retrieve randomly from NON-NULL existing values to complete the missing data +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.22.PNG}} +\end{figure} + +This query couldn't do the job so we tried to optimize it, we tried first to use CTE +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.24.PNG}} +\end{figure} + +Also we tried to use window functions as following +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.25.PNG}} +\end{figure} + +All 3 tries stuck in executing and never do the job, even though we confirm that all 3 queries work perfectly for smaller dataset, we concluded that this fail is probably due to large data size table. +\vskip0.2cm +As alternative solution we decided to use the following query to generate the missing values +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.26.PNG}} +\end{figure} + +This is the final ressult +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/1.27.PNG}} +\end{figure} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Table : Police} +We start by exploring our data in SSMS. +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/2.2.PNG}} +\end{figure} + +A null column is noticed, we exclude that from our TMapping +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/2.3.PNG}} +\end{figure} + +No new useful data in csv file. +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/2.4.PNG}} +\end{figure} + +So we simply run the following job: +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/2.0.PNG}} +\end{figure} + +\subsection{Table : Vehicule, MarqueVehicule, UsageVehicule } + +From SSMS we noticed 2 null columns, we remvoe that from out TMap component +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/3.0.PNG}} +\end{figure} + +Then run the job to import data from MS SQL to PSQL +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/3.1.PNG}} +\end{figure} + +Using same components but different configurations, we can import table "UsageVehicule" +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/3.3.0.PNG}} +\end{figure} + +And "MarqueVehicule" Table +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/3.3.PNG}} +\end{figure} + +"CodeUsage" column is missed from "Vehicule" Table, we can fix that by : first, creating the column manually +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/3.4.PNG}} +\end{figure} + +Second, we can use the next query to randomly select values from "UsageVehicule" and fill the new column +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/3.5.PNG}} +\end{figure} + +This is our final Vehicule table ready to be used +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/3.6.PNG}} +\end{figure} + + +\subsection{Table : Sinistre} +Most of our data is in our csv file, so we start by merging our data sources in TMap component, to ADD the in common rows +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/7.0.PNG}} +\end{figure} +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/7.1.PNG}} +\end{figure} +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/7.2.PNG}} +\end{figure} + +Then we add the remaning data from our csv file to PSQL table +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/7.3.PNG}} +\end{figure} + +We get this error due to date formatting issues, +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/7.4.PNG}} +\end{figure} + +We can easily pass that error by configuring the column Date Pattern in TMap +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/7.5.PNG}} +\end{figure} + +Exporting the final table in PSQL +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/7.6.PNG}} +\end{figure} + +\subsection{Tables : ClassesBonusMalus, souscripteur, companies, typeinfo} + +The remaining table were completely ready to be directly exported to PostgreSQL + +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/talend/assure/5.PNG}} +\end{figure} + + + +\clearpage +\section{Data Integration with Python} +\subsection{Table: Assure} + +We start by creating a new dataframe from our MS SQL table. +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.1.PNG}} +\end{figure} +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.2.PNG}} +\end{figure} + +We also import our assure.csv file to a new dataframe. +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.3.PNG}} +\end{figure} +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.4.PNG}} +\end{figure} + +Merging both dataframes to one is executed using the following code: +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.5.PNG}} +\end{figure} +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.6.PNG}} +\end{figure} + +Replace NaN values from 'nomPrenomRaisonSocial' column with random strings of 5 characters +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.7.PNG}} +\end{figure} + +Replace NaN values from 'codeTypePieceIdentite' column with either 1 or 2 randomly +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.8.PNG}} +\end{figure} + +This is what we get after previous transformation +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.9.PNG}} +\end{figure} + +Make a list of values from 'codePostal' and use it to randomly fill NaN fields +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.10.PNG}} +\end{figure} +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.11.PNG}} +\end{figure} +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.12.PNG}} +\end{figure} + +Change dataframe columns types and push it to PostgreSQL table ) +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.13.PNG}} +\end{figure} + +This is what we get in PSQL +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.14.PNG}} +\end{figure} + +We need to specify the primarykey manualy to remove to read only constraint +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.15.PNG}} +\end{figure} + +Or we can do it in PSQL +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.16.PNG}} +\end{figure} + +This is our final table in PSQL +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/1.17.PNG}} +\end{figure} + +\subsection{Table: Police} + +Create dataframe of Table Police from MS SQL data +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/2.0.PNG}} +\end{figure} +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/2.1.PNG}} +\end{figure} + +Delete the NULL column 'numPolice' also delete 'dateEcheancePolice' because it gives same data as 'dateEffetPolice' +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/2.2.PNG}} +\end{figure} + +Verify column types and export to PSQL +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/2.4.PNG}} +\end{figure} + +\subsection{Table: Vehicule, MarqueVehicule,UsageVehicule} + + +Import table 'vehicule' +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/3.0.PNG}} +\end{figure} + +Delete useless Columns +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/3.1.PNG}} +\end{figure} + +Import table 'MarqueVehicule' +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/3.3.PNG}} +\end{figure} + +Import table 'UsageVehicule' +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/3.4.PNG}} +\end{figure} + +'codeUsage' is missed from 'vehicule', we notice that 'codeUsage' is in a range of (1,17), so we can generate the needed it data randomly and add it to the missing fields +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/3.5.PNG}} +\end{figure} + +Finally,persist our tables to PostgreSQL server +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/3.6.PNG}} +\end{figure} + +\subsection{Table: Sinistre} + +While working on Sinistre table we noticed that MS SQL table is just a sample of sinistre.csv file, therefor we decided to work directly on the csv file (transform and clean) +\vskip0.2cm +First we import our csv data to a dataframe +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/4.0.PNG}} +\end{figure} + +Second we set up our dataframe's column names +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/4.1.PNG}} +\end{figure} + +Then we drop all useless columns +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/4.2.PNG}} +\end{figure} + +We notice we have outliers data in some needed columns +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/4.3.PNG}} +\end{figure} + +Next step is filling 'heureSurvanceDuSinistre' with randomly picked "day\_times" value, and We assign a value in range of [1,24] to every "lieuDuSinistre" cell (every value will be assigned to a specific governorate of our country ) +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/4.4.PNG}} +\end{figure} + +This is our dataframe clean and ready to PSQL exporting +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/4.5.PNG}} +\end{figure} + +We execute that using the following code +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/4.6.PNG}} +\end{figure} + +\subsection{Tables : ClassesBonusMalus, souscripteur, companies, typeinfo} + +We simply redo the same simple steps for the remaining tables (import from MS SQL / export to PSQL) +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/5.1.PNG}} +\end{figure} + +\begin{figure}[H] +\centering +\frame{\includegraphics[width=0.8\columnwidth]{img/Implementation/python/5.2.PNG}} +\end{figure} \ No newline at end of file diff --git a/Introduction.tex b/Introduction.tex new file mode 100644 index 0000000..7bc5345 --- /dev/null +++ b/Introduction.tex @@ -0,0 +1,4 @@ +\chapter{Introduction} +\section{azaz} +\subsection{intro} +\section{introoo} \ No newline at end of file diff --git a/Modelling.tex b/Modelling.tex new file mode 100644 index 0000000..639e3a3 --- /dev/null +++ b/Modelling.tex @@ -0,0 +1,20 @@ +\chapter{Modelling} + +\section{Introduction MO} + Introduction partielle, qui annonce le chapitre. + +\section{MO2} + Les diagrammes + descriptions textuelles + + \subsection{Diagramme des classes} + + \subsection{Diagramme des séquences} + +\section{MO 3 } + architecture physique... + +\section{MO4 s} + technologies à utiliser pendant la réalisation... + +\section*{MO5} + Conclusion partielle ayant pour objectif de synthétiser le chapitre et d'annoncer le chapitre suivant. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..cea3537 --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +# ISI-LaTeX-Template +:us: ISI's LaTeX template for internship reports (End-of-studies internships and Summer internships) +The template works perfectly online (Tested on Sharelatex.com), I added some modifications in order to make it work locally (Tested on TexMaker) + +------ + +:fr: Template LaTeX pour les rapports de stage de l'ISI (Stages de fin d'études et Stages d'été) +Le template fonctionne parfaitement en ligne (Testé sur Sharelatex.com), j'ai ajouté quelques modifications pour le faire fonctionner localement (Testé sur TexMaker) +``` +%================================================================% +% Copyright (C) ISI - All Rights Reserved % +% Proprietary % +% Written by Med Hossam , April 2016 % +% @author: HEDHILI Med Houssemeddine % +% @linkedin: http://tn.linkedin.com/in/medhossam % +% % +% Edited by Mustapha , Nov 2017 % +% @collaborator: SAHLI Mustapha % +% @linkedin: http://tn.linkedin.com/in/mustapha-sahli % +%================================================================% +``` +

+ Cover Page Screenshot +

+ +
+ +   If you found this helpful, consider helping me by sending some Bitcoins to the following address. Thank you 😊 + +
+15m4Prjz4WLSsCgBcZTa62cUetiwo6sZKg
+
+ + diff --git a/Rapport_Template_ISI.pdf b/Rapport_Template_ISI.pdf new file mode 100644 index 0000000..3da55a7 Binary files /dev/null and b/Rapport_Template_ISI.pdf differ diff --git a/acronymes.tex b/acronymes.tex new file mode 100644 index 0000000..02d422f --- /dev/null +++ b/acronymes.tex @@ -0,0 +1,22 @@ +\chapter*{Liste des abréviations} + +%=============== Glossary example ==============% +% it's an enhanced itemize list to make it % +% sortable automatically. % +%===============================================% + +\begin{acronyms} + + \sortitem[GLSI]{ + \textbf{G}énie \textbf{L}ogiciel et \textbf{S}ystèmes d’\textbf{I}nformation + } + + \sortitem[GTR]{ + Génie des Télécommunications et Réseaux + } + + \sortitem[GISI]{ + Génie Informatique des Systèmes Industriels + } + +\end{acronyms} \ No newline at end of file diff --git a/annexes.tex b/annexes.tex new file mode 100644 index 0000000..5f81f85 --- /dev/null +++ b/annexes.tex @@ -0,0 +1,47 @@ +\chapter*{Annexes} +\addcontentsline{toc}{chapter}{Annexes} +\markboth{Annexes}{} +\stepcounter{chapter} +\addtocontents{lot}{\vspace{3.8mm}} +\addtocontents{lof}{\vspace{3.8mm}} + +%Mettez vos annexes ici... + +%===================== ANNEXE 1 =====================% +\section*{Annexe 1.~Exemple d'annexe} +\addcontentsline{toc}{section}{Annexe 1.~Exemple d'annexe} + +Les chapitres doivent présenter l’essentiel du travail. Certaines informations-trop détaillées ou constituant un complément d’information pour toute personne qui désire mieux comprendre ou refaire une expérience décrite dans le document- peuvent être mises au niveau des annexes. Les annexes, {\bf placées après la bibliographie}, doivent donc être numérotées avec des titres (Annexe1, Annexe2, etc.). + +\addcontentsline{lot}{table}{Annexe 1.1~~~Exemple tableau dans l'annexe} + +Le tableau annexe 1.1 présente un exemple d'un tableau dans l'annexe. + +{\raggedright \textbf{Tableau annexe 1.1:}~Exemple tableau dans l'annexe} +\begin{longtable}[c]{ + | p{.20\textwidth} + | p{.50\textwidth} | +} + \hline + 0 & 0 \\ \hline + 1 & 1 \\ \hline + 2 & 2 \\ \hline + 3 & 3 \\ \hline + 4 & 4 \\ + \hline + +\end{longtable} + +\newpage +%===================== ANNEXE 2 =====================% +\section*{Annexe 2.~Entreprise} +\addcontentsline{toc}{section}{Annexe 2.~Entreprise} + +\addcontentsline{lof}{figure}{Annexe 2.1~~~Logo d'entreprise} + +La figure annexe 2.1 présente le logo entreprise. +\begin{figure}[htpb] + \centering + \frame{\includegraphics[width=0.45\columnwidth]{Logo_Entreprise}} + {\\\textbf{Figure annexe 2.1:} Logo d'entreprise} +\end{figure} \ No newline at end of file diff --git a/biblio.bib b/biblio.bib new file mode 100644 index 0000000..9595d7f --- /dev/null +++ b/biblio.bib @@ -0,0 +1,21 @@ +%============ Bibliography Syntaxe ============% +% Just follow examples written below % +%==============================================% + +@electronic{webArticle1, + author = "Michael Shell", + title = "{IEEE}tran Homepage", + url = "http://www.michaelshell.org/tex/ieeetran/", + year = "Jan. 2007", + note = "[Accès le 5-Février-2016]" +} + +%% You must use a backslash before special characters such as underscores, etc. in URLs +@electronic{webArticle2, + author = "NOM Auteur", + organization = "Organisme", + title = "titre de l'article", + url = "http://www.exemple-lien.org/article/?id\_art=124", + year = "Jan. 2015", + note = "[Accès le 19-Janvier-2016]" +} \ No newline at end of file diff --git a/chap_04.tex b/chap_04.tex new file mode 100644 index 0000000..6a4e785 --- /dev/null +++ b/chap_04.tex @@ -0,0 +1,13 @@ +\chapter{Réalisation} + +\section*{Introduction} + Introduction partielle, qui annonce le contenu. + +\section{Choix techniques} + +\section{Travail réalisé} + +\section{Planning réel du projet} + +\section*{Conclusion} + Conclusion partielle ayant pour objectif de synthétiser le chapitre et d’annoncer le chapitre suivant. \ No newline at end of file diff --git a/conclusion.tex b/conclusion.tex new file mode 100644 index 0000000..f4f7824 --- /dev/null +++ b/conclusion.tex @@ -0,0 +1,25 @@ +\chapter{General conclusion} +\addcontentsline{toc}{chapter}{Conclusion générale} +\markboth{Conclusion générale}{} + +Rappel du contexte et de la problématique.\\ +Brève récapitulation du travail réalisé et de la soultion proposée.\\ + +La taille de la conclusion doit être réduite, une page de texte tout au plus. Il est important de souligner que la conclusion ne comporte pas de nouveaux résultats ni de nouvelles interprétations.\\ + +Le plus souvent, la conclusion comporte: + +%============= Itemise List Example ============% +% % +% Default list label is a dash (-) % +% % +% package used to customize labels is enumitem % +% Full documentation at : http://goo.gl/9OMLUN % +%===============================================% +\begin{itemize}[label=\textbullet,font=\normalsize] +\item un résumé très rapide du corps du texte; +\item un rappel des objectifs du projet; +\item un bilan professionnel qui indique clairement les objectifs annoncés dans l’introduction et en particulier ceux qui n’ont pu être atteints. Il présente et synthétise les conclusions partielles; +\item un bilan personnel qui décrit les principales leçons que vous tirez de cette expérience sur le plan humain; +\item les limites et les perspectives du travail effectué. +\end{itemize} \ No newline at end of file diff --git a/cover_page_screenshot.PNG b/cover_page_screenshot.PNG new file mode 100644 index 0000000..6834709 Binary files /dev/null and b/cover_page_screenshot.PNG differ diff --git a/dedicaces.tex b/dedicaces.tex new file mode 100644 index 0000000..954ba9e --- /dev/null +++ b/dedicaces.tex @@ -0,0 +1,16 @@ +\chapter*{\Huge Dédicaces} + +\begingroup + \large \raggedright Je dédie ce travail à : + \vspace{4mm} + + Monsieur \textbf{\@proFramerName}, Monsieur \textbf{\@academicFramerName} pour m'avoir encadré et fait de leurs mieux afin de m'aider. + + \vspace{4mm} + etc. +\endgroup + +\vspace{8mm} +\begin{flushright} + \LARGE \@author +\end{flushright} \ No newline at end of file diff --git a/global_config.tex b/global_config.tex new file mode 100644 index 0000000..85a8254 --- /dev/null +++ b/global_config.tex @@ -0,0 +1,88 @@ + +%=== File containing Global Configuration of the report ===% +% % +% Copyright (C) ISI - All Rights Reserved % +% Proprietary % +% Written by Med Hossam , April 2016 % +% % +% @author: HEDHILI Med Houssemeddine % +% @linkedin: http://tn.linkedin.com/in/medhossam % +%==========================================================% + +%=========== You MUST type your information here ==========% +% global_config.tex file is designed to configure your % +% cover pages (main, back and black covers) % +%==========================================================% + +%============= Config new columns type ==============% +\newcolumntype{L}{>{\raggedright\arraybackslash}} +\newcolumntype{R}{>{\raggedleft\arraybackslash}} +\newcolumntype{C}{>{\centering\arraybackslash}} +%==================================================% + +%========= Config the cover section ==========% + +\title{Data Integration} + +\author{Prénom NOM} +%%% if necessary +% Set isBinomal to true and type second author name +%\setboolean{isBinomal}{true} +%\secondAuthor{Prénom NOM} + +\diplomaName{Diplôme National d'Ingénieur en Sciences Appliquées et Technologiques} +\speciality{Génie Logiciel et Systèmes d'Information} +%\speciality{Génie des Télécommunications et Réseaux} +%\speciality{Génie Informatique des Systèmes Industriels} + +%% Encadrant professionnel +\proFramerName{Monsieur/Madame Prénom NOM} +\proFramerSpeciality{Ingénieur R\&D} + +%% Encadrant académique +\academicFramerName{Monsieur/Madame Prénom NOM} +\academicFramerSpeciality{Maître Assistant(e)} + +%% Entreprise d'accueil +\companyName{CGA} + +%% Année universitaire +\collegeYear{2020 - 2021} + +%%%%%% Signatures section %%%%%% + +% You can simply remove theses sentences by typing an empty string +% \proSignSentence{} + +\proSignSentence{J'autorise l'étudiant à faire le dépôt de son rapport de stage en vue d'une soutenance.} + +\academicSignSentence{J'autorise l'étudiant à faire le dépôt de son rapport de stage en vue d'une soutenance.} + +%%% AR +\arabicAbstract{يوضع الملخص باللغة العربية هنا... يوضع الملخص باللغة العربية هنا... يوضع الملخص باللغة العربية هنا... يوضع الملخص باللغة العربية هنا... يوضع الملخص باللغة العربية هنا... الرجاء أن يكون في حدود العشر أسطر... يوضع الملخص باللغة العربية هنا... الرجاء أن يكون في حدود العشر أسطر... يوضع الملخص باللغة العربية هنا... الرجاء أن يكون في حدود العشر أسطر... يوضع الملخص باللغة العربية هنا... الرجاء أن يكون في حدود العشر أسطر... يوضع الملخص باللغة العربية هنا... الرجاء أن يكون في حدود العشر أسطر... يوضع الملخص باللغة العربية هنا... الرجاء أن يكون في حدود العشر أسطر... يوضع الملخص باللغة العربية هنا... الرجاء أن يكون في حدود العشر أسطر... يمكنك أن تكتب كلمات بحروف لاتينية في وسط الملخص مثال \textLR{Exemple ici} يوضع الملخص باللغة العربية هنا...} + +\arabicAbstractKeywords{الرجاء عدم تجاوز الخمس كلمات} + +%% To use latin characters inside the arabic text +% just put them inside the command \textLR{} +%%%% + +%%% FR +\frenchAbstract{Mettez le resumé en français ici... Mettez le resumé en français ici... Mettez le resumé en français ici... Mettez le resumé en français ici... Merci de ne pas dépasser les dix lignes. Mettez le resumé en français ici, merci de ne pas dépasser les dix lignes. Mettez le resumé en français ici, merci de ne pas dépasser les dix lignes. Mettez le resumé en français ici, merci de ne pas dépasser les dix lignes. Mettez le resumé en français ici, merci de ne pas dépasser les dix lignes. Mettez le resumé en français ici, merci de ne pas dépasser les dix lignes. Mettez le resumé en français ici, merci de ne pas dépasser les dix lignes. Mettez le resumé en français ici, merci de ne pas dépasser les dix lignes. Mettez le resumé en français ici, merci de ne pas dépasser les dix lignes.} + +\frenchAbstractKeywords{Merci de ne pas dépasser les cinq mots} + +%%% EN +\englishAbstract{Put the English abstract here, put the English abstract here, put the English abstract here, put the English abstract here, put the English abstract here, put the English abstract here... Please don't exceed ten lines, Please don't exceed ten lines, Please don't exceed ten lines, Please don't exceed ten lines. Put the English abstract here, please don't exceed ten lines. Put the English abstract here, please don't exceed ten lines. Put the English abstract here, please don't exceed ten lines. Put the English abstract here, please don't exceed ten lines. Put the English abstract here, please don't exceed ten lines. Put the English abstract here, please don't exceed ten lines. Put the English abstract here, please don't exceed ten lines. Put the English abstract here, please don't exceed ten lines.} + +\englishAbstractKeywords{Please don't use more than five keywords} + +%% if you want to get rid of the company address just set the boolean variable to false +% PS : it's optional +\setboolean{wantToTypeCompanyAddress}{true} + +\companyEmail{contact@company.com} +\companyTel{71 111 111} +\companyFax{71 222 222} +\companyAddressAR{نهج بحيرة ملاران - ضفاف البحيرة - تونس} +\companyAddressFR{Rue du Lac Malaren, Les Berges du Lac 1053 Tunis} \ No newline at end of file diff --git a/img/Implementation/Initialization/csvDB.PNG b/img/Implementation/Initialization/csvDB.PNG new file mode 100644 index 0000000..ac2bdd5 Binary files /dev/null and b/img/Implementation/Initialization/csvDB.PNG differ diff --git a/img/Implementation/Initialization/filedelimited.PNG b/img/Implementation/Initialization/filedelimited.PNG new file mode 100644 index 0000000..46ab92b Binary files /dev/null and b/img/Implementation/Initialization/filedelimited.PNG differ diff --git a/img/Implementation/Initialization/metadata.PNG b/img/Implementation/Initialization/metadata.PNG new file mode 100644 index 0000000..0d7ced4 Binary files /dev/null and b/img/Implementation/Initialization/metadata.PNG differ diff --git a/img/Implementation/Initialization/psqlConec.PNG b/img/Implementation/Initialization/psqlConec.PNG new file mode 100644 index 0000000..edc1577 Binary files /dev/null and b/img/Implementation/Initialization/psqlConec.PNG differ diff --git a/img/Implementation/Initialization/psqlDB.PNG b/img/Implementation/Initialization/psqlDB.PNG new file mode 100644 index 0000000..a0bd9b0 Binary files /dev/null and b/img/Implementation/Initialization/psqlDB.PNG differ diff --git a/img/Implementation/Initialization/schemas.PNG b/img/Implementation/Initialization/schemas.PNG new file mode 100644 index 0000000..0ddd217 Binary files /dev/null and b/img/Implementation/Initialization/schemas.PNG differ diff --git a/img/Implementation/Initialization/sqlConec.PNG b/img/Implementation/Initialization/sqlConec.PNG new file mode 100644 index 0000000..bad848e Binary files /dev/null and b/img/Implementation/Initialization/sqlConec.PNG differ diff --git a/img/Implementation/Initialization/ssmsDB.PNG b/img/Implementation/Initialization/ssmsDB.PNG new file mode 100644 index 0000000..e909aee Binary files /dev/null and b/img/Implementation/Initialization/ssmsDB.PNG differ diff --git a/img/Implementation/python/1.1.PNG b/img/Implementation/python/1.1.PNG new file mode 100644 index 0000000..9945141 Binary files /dev/null and b/img/Implementation/python/1.1.PNG differ diff --git a/img/Implementation/python/1.10.PNG b/img/Implementation/python/1.10.PNG new file mode 100644 index 0000000..9dff805 Binary files /dev/null and b/img/Implementation/python/1.10.PNG differ diff --git a/img/Implementation/python/1.11.PNG b/img/Implementation/python/1.11.PNG new file mode 100644 index 0000000..593939f Binary files /dev/null and b/img/Implementation/python/1.11.PNG differ diff --git a/img/Implementation/python/1.12.PNG b/img/Implementation/python/1.12.PNG new file mode 100644 index 0000000..cb152c4 Binary files /dev/null and b/img/Implementation/python/1.12.PNG differ diff --git a/img/Implementation/python/1.13.PNG b/img/Implementation/python/1.13.PNG new file mode 100644 index 0000000..44ecf49 Binary files /dev/null and b/img/Implementation/python/1.13.PNG differ diff --git a/img/Implementation/python/1.14.PNG b/img/Implementation/python/1.14.PNG new file mode 100644 index 0000000..68f8aaa Binary files /dev/null and b/img/Implementation/python/1.14.PNG differ diff --git a/img/Implementation/python/1.15.PNG b/img/Implementation/python/1.15.PNG new file mode 100644 index 0000000..2f4d059 Binary files /dev/null and b/img/Implementation/python/1.15.PNG differ diff --git a/img/Implementation/python/1.16.PNG b/img/Implementation/python/1.16.PNG new file mode 100644 index 0000000..d525c58 Binary files /dev/null and b/img/Implementation/python/1.16.PNG differ diff --git a/img/Implementation/python/1.17.PNG b/img/Implementation/python/1.17.PNG new file mode 100644 index 0000000..e240183 Binary files /dev/null and b/img/Implementation/python/1.17.PNG differ diff --git a/img/Implementation/python/1.2.PNG b/img/Implementation/python/1.2.PNG new file mode 100644 index 0000000..6047002 Binary files /dev/null and b/img/Implementation/python/1.2.PNG differ diff --git a/img/Implementation/python/1.3.PNG b/img/Implementation/python/1.3.PNG new file mode 100644 index 0000000..948ffa1 Binary files /dev/null and b/img/Implementation/python/1.3.PNG differ diff --git a/img/Implementation/python/1.4.PNG b/img/Implementation/python/1.4.PNG new file mode 100644 index 0000000..be57c2a Binary files /dev/null and b/img/Implementation/python/1.4.PNG differ diff --git a/img/Implementation/python/1.5.PNG b/img/Implementation/python/1.5.PNG new file mode 100644 index 0000000..e49c25e Binary files /dev/null and b/img/Implementation/python/1.5.PNG differ diff --git a/img/Implementation/python/1.6.PNG b/img/Implementation/python/1.6.PNG new file mode 100644 index 0000000..4a241d5 Binary files /dev/null and b/img/Implementation/python/1.6.PNG differ diff --git a/img/Implementation/python/1.7.PNG b/img/Implementation/python/1.7.PNG new file mode 100644 index 0000000..01f5a90 Binary files /dev/null and b/img/Implementation/python/1.7.PNG differ diff --git a/img/Implementation/python/1.8.PNG b/img/Implementation/python/1.8.PNG new file mode 100644 index 0000000..65b9b47 Binary files /dev/null and b/img/Implementation/python/1.8.PNG differ diff --git a/img/Implementation/python/1.9.PNG b/img/Implementation/python/1.9.PNG new file mode 100644 index 0000000..4cb1d40 Binary files /dev/null and b/img/Implementation/python/1.9.PNG differ diff --git a/img/Implementation/python/2.0.PNG b/img/Implementation/python/2.0.PNG new file mode 100644 index 0000000..f48f09e Binary files /dev/null and b/img/Implementation/python/2.0.PNG differ diff --git a/img/Implementation/python/2.1.PNG b/img/Implementation/python/2.1.PNG new file mode 100644 index 0000000..d11ac10 Binary files /dev/null and b/img/Implementation/python/2.1.PNG differ diff --git a/img/Implementation/python/2.2.PNG b/img/Implementation/python/2.2.PNG new file mode 100644 index 0000000..179aa75 Binary files /dev/null and b/img/Implementation/python/2.2.PNG differ diff --git a/img/Implementation/python/2.3.PNG b/img/Implementation/python/2.3.PNG new file mode 100644 index 0000000..4b4bd7d Binary files /dev/null and b/img/Implementation/python/2.3.PNG differ diff --git a/img/Implementation/python/2.4.PNG b/img/Implementation/python/2.4.PNG new file mode 100644 index 0000000..cb9d002 Binary files /dev/null and b/img/Implementation/python/2.4.PNG differ diff --git a/img/Implementation/python/3.0.PNG b/img/Implementation/python/3.0.PNG new file mode 100644 index 0000000..da7f4bd Binary files /dev/null and b/img/Implementation/python/3.0.PNG differ diff --git a/img/Implementation/python/3.1.PNG b/img/Implementation/python/3.1.PNG new file mode 100644 index 0000000..3303b0e Binary files /dev/null and b/img/Implementation/python/3.1.PNG differ diff --git a/img/Implementation/python/3.2.PNG b/img/Implementation/python/3.2.PNG new file mode 100644 index 0000000..044641f Binary files /dev/null and b/img/Implementation/python/3.2.PNG differ diff --git a/img/Implementation/python/3.3.PNG b/img/Implementation/python/3.3.PNG new file mode 100644 index 0000000..6731489 Binary files /dev/null and b/img/Implementation/python/3.3.PNG differ diff --git a/img/Implementation/python/3.4.PNG b/img/Implementation/python/3.4.PNG new file mode 100644 index 0000000..f8fc251 Binary files /dev/null and b/img/Implementation/python/3.4.PNG differ diff --git a/img/Implementation/python/3.5.PNG b/img/Implementation/python/3.5.PNG new file mode 100644 index 0000000..bdcd61a Binary files /dev/null and b/img/Implementation/python/3.5.PNG differ diff --git a/img/Implementation/python/3.6.PNG b/img/Implementation/python/3.6.PNG new file mode 100644 index 0000000..02d6b1e Binary files /dev/null and b/img/Implementation/python/3.6.PNG differ diff --git a/img/Implementation/python/4.0.PNG b/img/Implementation/python/4.0.PNG new file mode 100644 index 0000000..c987dfb Binary files /dev/null and b/img/Implementation/python/4.0.PNG differ diff --git a/img/Implementation/python/4.1.PNG b/img/Implementation/python/4.1.PNG new file mode 100644 index 0000000..b983116 Binary files /dev/null and b/img/Implementation/python/4.1.PNG differ diff --git a/img/Implementation/python/4.2.PNG b/img/Implementation/python/4.2.PNG new file mode 100644 index 0000000..9c2ed39 Binary files /dev/null and b/img/Implementation/python/4.2.PNG differ diff --git a/img/Implementation/python/4.3.PNG b/img/Implementation/python/4.3.PNG new file mode 100644 index 0000000..28fbdfd Binary files /dev/null and b/img/Implementation/python/4.3.PNG differ diff --git a/img/Implementation/python/4.4.PNG b/img/Implementation/python/4.4.PNG new file mode 100644 index 0000000..7dfd5b8 Binary files /dev/null and b/img/Implementation/python/4.4.PNG differ diff --git a/img/Implementation/python/4.5.PNG b/img/Implementation/python/4.5.PNG new file mode 100644 index 0000000..dc97faa Binary files /dev/null and b/img/Implementation/python/4.5.PNG differ diff --git a/img/Implementation/python/4.6.PNG b/img/Implementation/python/4.6.PNG new file mode 100644 index 0000000..ee21ca5 Binary files /dev/null and b/img/Implementation/python/4.6.PNG differ diff --git a/img/Implementation/python/5.1.PNG b/img/Implementation/python/5.1.PNG new file mode 100644 index 0000000..5213585 Binary files /dev/null and b/img/Implementation/python/5.1.PNG differ diff --git a/img/Implementation/python/5.2.PNG b/img/Implementation/python/5.2.PNG new file mode 100644 index 0000000..0ee68d1 Binary files /dev/null and b/img/Implementation/python/5.2.PNG differ diff --git a/img/Implementation/talend/assure/0.PNG b/img/Implementation/talend/assure/0.PNG new file mode 100644 index 0000000..acdadc9 Binary files /dev/null and b/img/Implementation/talend/assure/0.PNG differ diff --git a/img/Implementation/talend/assure/1.0.PNG b/img/Implementation/talend/assure/1.0.PNG new file mode 100644 index 0000000..1bb2ab8 Binary files /dev/null and b/img/Implementation/talend/assure/1.0.PNG differ diff --git a/img/Implementation/talend/assure/1.1.PNG b/img/Implementation/talend/assure/1.1.PNG new file mode 100644 index 0000000..6eb6d19 Binary files /dev/null and b/img/Implementation/talend/assure/1.1.PNG differ diff --git a/img/Implementation/talend/assure/1.10.PNG b/img/Implementation/talend/assure/1.10.PNG new file mode 100644 index 0000000..21d4405 Binary files /dev/null and b/img/Implementation/talend/assure/1.10.PNG differ diff --git a/img/Implementation/talend/assure/1.11.PNG b/img/Implementation/talend/assure/1.11.PNG new file mode 100644 index 0000000..a426024 Binary files /dev/null and b/img/Implementation/talend/assure/1.11.PNG differ diff --git a/img/Implementation/talend/assure/1.12.PNG b/img/Implementation/talend/assure/1.12.PNG new file mode 100644 index 0000000..5f71cc3 Binary files /dev/null and b/img/Implementation/talend/assure/1.12.PNG differ diff --git a/img/Implementation/talend/assure/1.13.PNG b/img/Implementation/talend/assure/1.13.PNG new file mode 100644 index 0000000..e3ead11 Binary files /dev/null and b/img/Implementation/talend/assure/1.13.PNG differ diff --git a/img/Implementation/talend/assure/1.14.PNG b/img/Implementation/talend/assure/1.14.PNG new file mode 100644 index 0000000..ba52bea Binary files /dev/null and b/img/Implementation/talend/assure/1.14.PNG differ diff --git a/img/Implementation/talend/assure/1.15.PNG b/img/Implementation/talend/assure/1.15.PNG new file mode 100644 index 0000000..25e3bca Binary files /dev/null and b/img/Implementation/talend/assure/1.15.PNG differ diff --git a/img/Implementation/talend/assure/1.16.PNG b/img/Implementation/talend/assure/1.16.PNG new file mode 100644 index 0000000..90a7cc3 Binary files /dev/null and b/img/Implementation/talend/assure/1.16.PNG differ diff --git a/img/Implementation/talend/assure/1.17.PNG b/img/Implementation/talend/assure/1.17.PNG new file mode 100644 index 0000000..c833f3b Binary files /dev/null and b/img/Implementation/talend/assure/1.17.PNG differ diff --git a/img/Implementation/talend/assure/1.18.PNG b/img/Implementation/talend/assure/1.18.PNG new file mode 100644 index 0000000..23ccdd7 Binary files /dev/null and b/img/Implementation/talend/assure/1.18.PNG differ diff --git a/img/Implementation/talend/assure/1.19.PNG b/img/Implementation/talend/assure/1.19.PNG new file mode 100644 index 0000000..f2670aa Binary files /dev/null and b/img/Implementation/talend/assure/1.19.PNG differ diff --git a/img/Implementation/talend/assure/1.2.PNG b/img/Implementation/talend/assure/1.2.PNG new file mode 100644 index 0000000..3ac9ad7 Binary files /dev/null and b/img/Implementation/talend/assure/1.2.PNG differ diff --git a/img/Implementation/talend/assure/1.20.PNG b/img/Implementation/talend/assure/1.20.PNG new file mode 100644 index 0000000..6af3809 Binary files /dev/null and b/img/Implementation/talend/assure/1.20.PNG differ diff --git a/img/Implementation/talend/assure/1.21.PNG b/img/Implementation/talend/assure/1.21.PNG new file mode 100644 index 0000000..4a53f6d Binary files /dev/null and b/img/Implementation/talend/assure/1.21.PNG differ diff --git a/img/Implementation/talend/assure/1.22.PNG b/img/Implementation/talend/assure/1.22.PNG new file mode 100644 index 0000000..093866b Binary files /dev/null and b/img/Implementation/talend/assure/1.22.PNG differ diff --git a/img/Implementation/talend/assure/1.24.PNG b/img/Implementation/talend/assure/1.24.PNG new file mode 100644 index 0000000..d6644db Binary files /dev/null and b/img/Implementation/talend/assure/1.24.PNG differ diff --git a/img/Implementation/talend/assure/1.25.PNG b/img/Implementation/talend/assure/1.25.PNG new file mode 100644 index 0000000..63afe71 Binary files /dev/null and b/img/Implementation/talend/assure/1.25.PNG differ diff --git a/img/Implementation/talend/assure/1.26.PNG b/img/Implementation/talend/assure/1.26.PNG new file mode 100644 index 0000000..9422b45 Binary files /dev/null and b/img/Implementation/talend/assure/1.26.PNG differ diff --git a/img/Implementation/talend/assure/1.27.PNG b/img/Implementation/talend/assure/1.27.PNG new file mode 100644 index 0000000..e02577d Binary files /dev/null and b/img/Implementation/talend/assure/1.27.PNG differ diff --git a/img/Implementation/talend/assure/1.3.0.PNG b/img/Implementation/talend/assure/1.3.0.PNG new file mode 100644 index 0000000..902f4a6 Binary files /dev/null and b/img/Implementation/talend/assure/1.3.0.PNG differ diff --git a/img/Implementation/talend/assure/1.3.PNG b/img/Implementation/talend/assure/1.3.PNG new file mode 100644 index 0000000..7754d23 Binary files /dev/null and b/img/Implementation/talend/assure/1.3.PNG differ diff --git a/img/Implementation/talend/assure/1.4.PNG b/img/Implementation/talend/assure/1.4.PNG new file mode 100644 index 0000000..48d74e5 Binary files /dev/null and b/img/Implementation/talend/assure/1.4.PNG differ diff --git a/img/Implementation/talend/assure/1.5.PNG b/img/Implementation/talend/assure/1.5.PNG new file mode 100644 index 0000000..aa88f62 Binary files /dev/null and b/img/Implementation/talend/assure/1.5.PNG differ diff --git a/img/Implementation/talend/assure/1.6.PNG b/img/Implementation/talend/assure/1.6.PNG new file mode 100644 index 0000000..4d04841 Binary files /dev/null and b/img/Implementation/talend/assure/1.6.PNG differ diff --git a/img/Implementation/talend/assure/1.7.PNG b/img/Implementation/talend/assure/1.7.PNG new file mode 100644 index 0000000..ef70f2f Binary files /dev/null and b/img/Implementation/talend/assure/1.7.PNG differ diff --git a/img/Implementation/talend/assure/1.8.PNG b/img/Implementation/talend/assure/1.8.PNG new file mode 100644 index 0000000..fc5d7b6 Binary files /dev/null and b/img/Implementation/talend/assure/1.8.PNG differ diff --git a/img/Implementation/talend/assure/1.9.PNG b/img/Implementation/talend/assure/1.9.PNG new file mode 100644 index 0000000..c47a4bd Binary files /dev/null and b/img/Implementation/talend/assure/1.9.PNG differ diff --git a/img/Implementation/talend/assure/2.0.PNG b/img/Implementation/talend/assure/2.0.PNG new file mode 100644 index 0000000..2400619 Binary files /dev/null and b/img/Implementation/talend/assure/2.0.PNG differ diff --git a/img/Implementation/talend/assure/2.1.PNG b/img/Implementation/talend/assure/2.1.PNG new file mode 100644 index 0000000..abbb472 Binary files /dev/null and b/img/Implementation/talend/assure/2.1.PNG differ diff --git a/img/Implementation/talend/assure/2.2.PNG b/img/Implementation/talend/assure/2.2.PNG new file mode 100644 index 0000000..eebda66 Binary files /dev/null and b/img/Implementation/talend/assure/2.2.PNG differ diff --git a/img/Implementation/talend/assure/2.3.PNG b/img/Implementation/talend/assure/2.3.PNG new file mode 100644 index 0000000..40dbe6a Binary files /dev/null and b/img/Implementation/talend/assure/2.3.PNG differ diff --git a/img/Implementation/talend/assure/2.4.PNG b/img/Implementation/talend/assure/2.4.PNG new file mode 100644 index 0000000..827f26c Binary files /dev/null and b/img/Implementation/talend/assure/2.4.PNG differ diff --git a/img/Implementation/talend/assure/3.0.PNG b/img/Implementation/talend/assure/3.0.PNG new file mode 100644 index 0000000..85976ce Binary files /dev/null and b/img/Implementation/talend/assure/3.0.PNG differ diff --git a/img/Implementation/talend/assure/3.1.PNG b/img/Implementation/talend/assure/3.1.PNG new file mode 100644 index 0000000..405e072 Binary files /dev/null and b/img/Implementation/talend/assure/3.1.PNG differ diff --git a/img/Implementation/talend/assure/3.3.0.PNG b/img/Implementation/talend/assure/3.3.0.PNG new file mode 100644 index 0000000..296ac28 Binary files /dev/null and b/img/Implementation/talend/assure/3.3.0.PNG differ diff --git a/img/Implementation/talend/assure/3.3.PNG b/img/Implementation/talend/assure/3.3.PNG new file mode 100644 index 0000000..b7bee2c Binary files /dev/null and b/img/Implementation/talend/assure/3.3.PNG differ diff --git a/img/Implementation/talend/assure/3.4.PNG b/img/Implementation/talend/assure/3.4.PNG new file mode 100644 index 0000000..c1956bb Binary files /dev/null and b/img/Implementation/talend/assure/3.4.PNG differ diff --git a/img/Implementation/talend/assure/3.5.PNG b/img/Implementation/talend/assure/3.5.PNG new file mode 100644 index 0000000..2d8bd1d Binary files /dev/null and b/img/Implementation/talend/assure/3.5.PNG differ diff --git a/img/Implementation/talend/assure/3.6.PNG b/img/Implementation/talend/assure/3.6.PNG new file mode 100644 index 0000000..f4c8c36 Binary files /dev/null and b/img/Implementation/talend/assure/3.6.PNG differ diff --git a/img/Implementation/talend/assure/4.0.PNG b/img/Implementation/talend/assure/4.0.PNG new file mode 100644 index 0000000..efcaad8 Binary files /dev/null and b/img/Implementation/talend/assure/4.0.PNG differ diff --git a/img/Implementation/talend/assure/5.PNG b/img/Implementation/talend/assure/5.PNG new file mode 100644 index 0000000..b03463c Binary files /dev/null and b/img/Implementation/talend/assure/5.PNG differ diff --git a/img/Implementation/talend/assure/7.0.PNG b/img/Implementation/talend/assure/7.0.PNG new file mode 100644 index 0000000..07ba540 Binary files /dev/null and b/img/Implementation/talend/assure/7.0.PNG differ diff --git a/img/Implementation/talend/assure/7.1.PNG b/img/Implementation/talend/assure/7.1.PNG new file mode 100644 index 0000000..d074e42 Binary files /dev/null and b/img/Implementation/talend/assure/7.1.PNG differ diff --git a/img/Implementation/talend/assure/7.2.PNG b/img/Implementation/talend/assure/7.2.PNG new file mode 100644 index 0000000..31ba849 Binary files /dev/null and b/img/Implementation/talend/assure/7.2.PNG differ diff --git a/img/Implementation/talend/assure/7.3.PNG b/img/Implementation/talend/assure/7.3.PNG new file mode 100644 index 0000000..ea96b74 Binary files /dev/null and b/img/Implementation/talend/assure/7.3.PNG differ diff --git a/img/Implementation/talend/assure/7.4.PNG b/img/Implementation/talend/assure/7.4.PNG new file mode 100644 index 0000000..8c839f9 Binary files /dev/null and b/img/Implementation/talend/assure/7.4.PNG differ diff --git a/img/Implementation/talend/assure/7.5.PNG b/img/Implementation/talend/assure/7.5.PNG new file mode 100644 index 0000000..91eb767 Binary files /dev/null and b/img/Implementation/talend/assure/7.5.PNG differ diff --git a/img/Implementation/talend/assure/7.6.PNG b/img/Implementation/talend/assure/7.6.PNG new file mode 100644 index 0000000..e5954a9 Binary files /dev/null and b/img/Implementation/talend/assure/7.6.PNG differ diff --git a/img/LogoISI.png b/img/LogoISI.png new file mode 100644 index 0000000..d8a923f Binary files /dev/null and b/img/LogoISI.png differ diff --git a/img/Logo_ESPRIT_Ariana.jpg b/img/Logo_ESPRIT_Ariana.jpg new file mode 100644 index 0000000..83486ee Binary files /dev/null and b/img/Logo_ESPRIT_Ariana.jpg differ diff --git a/img/Logo_Entreprise.jpg b/img/Logo_Entreprise.jpg new file mode 100644 index 0000000..d20babb Binary files /dev/null and b/img/Logo_Entreprise.jpg differ diff --git a/img/Logo_Entreprise_Black.jpg b/img/Logo_Entreprise_Black.jpg new file mode 100644 index 0000000..c552b2d Binary files /dev/null and b/img/Logo_Entreprise_Black.jpg differ diff --git a/img/Logo_ISI_Black.png b/img/Logo_ISI_Black.png new file mode 100644 index 0000000..4c9396c Binary files /dev/null and b/img/Logo_ISI_Black.png differ diff --git a/img/Logo_UTM.png b/img/Logo_UTM.png new file mode 100644 index 0000000..71df329 Binary files /dev/null and b/img/Logo_UTM.png differ diff --git a/img/Logo_UTM_Black.png b/img/Logo_UTM_Black.png new file mode 100644 index 0000000..180e250 Binary files /dev/null and b/img/Logo_UTM_Black.png differ diff --git a/img/cgalogo.png b/img/cgalogo.png new file mode 100644 index 0000000..64c9cba Binary files /dev/null and b/img/cgalogo.png differ diff --git a/img/tnlogo.PNG b/img/tnlogo.PNG new file mode 100644 index 0000000..874b17d Binary files /dev/null and b/img/tnlogo.PNG differ diff --git a/main-blx.bib b/main-blx.bib new file mode 100644 index 0000000..880a27d --- /dev/null +++ b/main-blx.bib @@ -0,0 +1,11 @@ +@Comment{$ biblatex control file $} +@Comment{$ biblatex version 2.9 $} +Do not modify this file! + +This is an auxiliary file used by the 'biblatex' package. +This file may safely be deleted. It will be recreated as +required. + +@Control{biblatex-control, + options = {2.9:0:0:1:0:1:1:0:0:0:0:0:3:3:79:+:none}, +} diff --git a/main.tex b/main.tex new file mode 100644 index 0000000..d995cbd --- /dev/null +++ b/main.tex @@ -0,0 +1,82 @@ + +%========= File containing the main LaTex document ========% +% % +% Copyright (C) ISI - All Rights Reserved % +% Proprietary % +% Written by Med Hossam , April 2016 % +% % +% @author: HEDHILI Med Houssemeddine % +% @linkedin: http://tn.linkedin.com/in/medhossam % +%==========================================================% + +%\documentclass[pfe]{./tpl/isipfe} +\documentclass[]{./tpl/isipfe} +\graphicspath{{./img/}} + +\usepackage{hyperref} +\hypersetup{ + colorlinks, + citecolor=black, + filecolor=black, + linkcolor=black, + urlcolor=black +} + +%\usepackage{hyperref} + +\input{./tpl/new_commands} + +% @author: Stoufa +% the command `\makeindex` is mandatory to create the index file main.idx +% https://tex.stackexchange.com/questions/9913/input-index-file-not-found +\makeindex + +\addto\captionsfrench{% Replace "english" with the language you use + \renewcommand{\contentsname}% + {Contents}% + \renewcommand{\listfigurename}{List of Figures} + \renewcommand{\listtablename}{List of Tables} + \renewcommand{\bibname}{bibliography} +} + +\begin{document} + + \input{global_config} + \frontmatter + \input{tpl/cover_page} + \setcounter{page}{1} + \setcounter{secnumdepth}{3} + \setcounter{tocdepth}{2} + \dominitoc + \tableofcontents + \adjustmtc + \thispagestyle{frontmatter} + \listoffigures + \thispagestyle{frontmatter} + \listoftables + \thispagestyle{frontmatter} + \input{acronymes} + \thispagestyle{frontmatter} + \mainmatter + + \input{Introduction} + \input{Modelling} + \input{Implementation} + + + + \input{conclusion} + + % @author: Stoufa + % the command `\nocite{*}` is mandatory to avoid the “no \citation commands” error + % https://tex.stackexchange.com/questions/18045/problem-with-compiling-bibtex-no-citation-commands-error + %\nocite{*} + \printbibliography[heading=bibintoc] + + % \input{annexes} + % \clearpage + + \backmatter + \input{./tpl/resume} + +\end{document} \ No newline at end of file diff --git a/remerciement.tex b/remerciement.tex new file mode 100644 index 0000000..8fb52c8 --- /dev/null +++ b/remerciement.tex @@ -0,0 +1,10 @@ +\chapter*{\huge Remerciements} + +\begin{center} +\it \Large + Je remercie + + Je suis reconnaissant + + J'exprime ma gratitude +\end{center} \ No newline at end of file diff --git a/tpl/cover_page.tex b/tpl/cover_page.tex new file mode 100644 index 0000000..ec4b72c --- /dev/null +++ b/tpl/cover_page.tex @@ -0,0 +1,166 @@ + +%===== File containing the main cover of the document =====% +% % +% Copyright (C) ISI - All Rights Reserved % +% Proprietary % +% Written by Med Hossam , April 2016 % +% % +% @author: HEDHILI Med Houssemeddine % +% @linkedin: http://tn.linkedin.com/in/medhossam % +%==========================================================% + +%== It's advised to not modify the content of this file ===% +% To set your information, go to global_config.tex file % +%==========================================================% + +\thispagestyle{cover}% +\newgeometry{bottom=25mm,left=20mm,top=15mm,right=20mm} +\hspace{-47pt} +\begin{minipage}[l]{0.2\columnwidth} +\vspace{6mm} +\includegraphics[width=1.1\columnwidth]{img/Logo_ESPRIT_Ariana.jpg}\\ +\end{minipage} +\hfill +\begin{minipage}[l]{0.6\columnwidth} +\centering +\footnotesize +%\textbf{{République Tunisienne}}\\ +%\vspace{1.5mm} +%\textbf{{Ministère de l'Enseignement Supérieur\\ +%et de la Recherche Scientifique}}\\ +%\vspace{1.5mm} +%\textbf{{Université de Tunis El Manar}}\\ +%\vspace{1.5mm} +%\textbf{{Institut Supérieur d'Informatique d’El Manar}} +\end{minipage} +\hfill +\begin{minipage}[l]{0.02\columnwidth} +\end{minipage} +\hfill +\begin{minipage}[l]{0.18\columnwidth} +\vspace{6mm} +\includegraphics[width=1.1\columnwidth]{img/tnlogo.PNG}\\ +\end{minipage} +\vskip1.5cm + +\begin{center} +{\LARGE{\textbf{\textsc{Report of PEBI phase 1}}}}\\ +\vskip0.5cm +\large + +{\textbf{Reporting the first phase of ERP-BI integrated project }}\\ +%\vskip2mm +%{\textbf{ERP-BI integrated project}}\\ +{} +\end{center} + +\definecolor{isiBlue}{RGB}{31, 78, 121} + +\begin{changemargin}{-9mm}{0cm} +\begin{minipage}[l]{1.1\columnwidth} +\begin{tcolorbox}[colframe=isiBlue,colback=white,boxrule=0pt,toprule=3pt,bottomrule=3pt,arc=0pt,top=0mm,right=0mm,left=0mm,bottom=0mm,boxsep=0.5mm]{ + \begin{tcolorbox}[colframe=isiBlue,colback=white, boxrule=0pt,toprule=1pt,bottomrule=1pt,arc=0pt,enlarge bottom by=-0.9mm, auto outer arc] + \centering + {\huge\textbf{\@title}} + \end{tcolorbox} +} +\end{tcolorbox} +\end{minipage} +\end{changemargin} + +\begin{center} +\textrm{Presented by }\\ +\vskip0.3cm +{\ifthenelse{\boolean{isBinomal}} + {% IF TRUE + \begin{center} + \large\textbf{\@author}~~~~~ et ~~~~~ + \large\textbf{\@secondAuthor} + \end{center} + } + {\Large\textbf{AYARI Hamza}}% FALSE +} +\vskip0.3mm +{\ifthenelse{\boolean{isBinomal}} + {% IF TRUE + \begin{center} + \large\textbf{\@author}~~~~~ et ~~~~~ + \large\textbf{\@secondAuthor} + \end{center} + } + {\Large\textbf{BENMOUSSA Amin}}% FALSE +} +\vskip0.3mm +{\ifthenelse{\boolean{isBinomal}} + {% IF TRUE + \begin{center} + \large\textbf{\@author}~~~~~ et ~~~~~ + \large\textbf{\@secondAuthor} + \end{center} + } + {\Large\textbf{CHAABINI Soraya}}% FALSE +} +\vskip0.3mm +{\ifthenelse{\boolean{isBinomal}} + {% IF TRUE + \begin{center} + \large\textbf{\@author}~~~~~ et ~~~~~ + \large\textbf{\@secondAuthor} + \end{center} + } + {\Large\textbf{HADDAD Mohamed Aziz}}% FALSE +} +\vskip0.3mm +{\ifthenelse{\boolean{isBinomal}} + {% IF TRUE + \begin{center} + \large\textbf{\@author}~~~~~ et ~~~~~ + \large\textbf{\@secondAuthor} + \end{center} + } + {\Large\textbf{KOOLI Youssef}}% FALSE +} +\vskip0.3mm +{\ifthenelse{\boolean{isBinomal}} + {% IF TRUE + \begin{center} + \large\textbf{\@author}~~~~~ et ~~~~~ + \large\textbf{\@secondAuthor} + \end{center} + } + {\Large\textbf{NACIB Rajia Rihab}}% FALSE +} +\vskip5mm + +\end{center} +\vskip8mm% + +\begin{center} +\textrm{Elaborated by }\\ +\vskip0.3cm +{\ifthenelse{\boolean{isBinomal}} + {% IF TRUE + \begin{center} + \large\textbf{\@author}~~~~~ et ~~~~~ + \large\textbf{\@secondAuthor} + \end{center} + } + {\Large\textbf{Mrs. SLIMEN Ines}}% FALSE +} + +\vskip12mm + +\end{center} +\vskip8mm% + +\begin{center} +\large +Prepared for\\ +\vskip0.4cm +\begin{figure}[h] +\centering +{\color{isiBlue}{\fboxrule=2.5pt\fbox{\includegraphics[width=0.4\columnwidth]{img/cgalogo.png}}}} +\end{figure} +\end{center} + +\afterpage{\blankpage} \ No newline at end of file diff --git a/tpl/cover_page_black.tex b/tpl/cover_page_black.tex new file mode 100644 index 0000000..d82a662 --- /dev/null +++ b/tpl/cover_page_black.tex @@ -0,0 +1,115 @@ + +%===== File containing the black cover of the document ====% +% % +% Copyright (C) ISI - All Rights Reserved % +% Proprietary % +% Written by Med Hossam , April 2016 % +% % +% @author: HEDHILI Med Houssemeddine % +% @linkedin: http://tn.linkedin.com/in/medhossam % +%==========================================================% + +%== It's advised to not modify the content of this file ===% +% To set your information, go to global_config.tex file % +%==========================================================% + +\thispagestyle{cover}% +\hspace{-47pt} +\begin{minipage}[l]{0.2\columnwidth} +\vspace{6mm} +\includegraphics[width=1.1\columnwidth]{Logo_ISI_Black}\\ +\end{minipage} +\hfill +\begin{minipage}[l]{0.6\columnwidth} +\centering +\footnotesize +\textbf{{République Tunisienne}}\\ +\vspace{1.5mm} +\textbf{{Ministère de l'Enseignement Supérieur\\ +et de la Recherche Scientifique}}\\ +\vspace{1.5mm} +\textbf{{Université de Tunis El Manar}}\\ +\vspace{1.5mm} +\textbf{{Institut Supérieur d'Informatique d’El Manar}} +\end{minipage} +\hfill +\begin{minipage}[l]{0.02\columnwidth} +\end{minipage} +\hfill +\begin{minipage}[l]{0.18\columnwidth} +\vspace{6mm} +\includegraphics[width=0.9\columnwidth]{Logo_UTM_Black}\\ +\end{minipage} +\vskip1.5cm + +\begin{center} +{\LARGE{\textbf{\textsc{Rapport de Projet de Fin d'\'Etudes}}}}\\ +\vskip0.5cm +\large + +{\textbf{Présenté en vue de l'obtention du}}\\ +\vskip2mm +{\textbf{\@diplomaName}}\\ +{\textbf{Spécialité : \@speciality}}\\ +{} +\end{center} + +\begin{center} +\textrm{Par}\\ +\vskip0.3cm +{\ifthenelse{\boolean{isBinomal}} + {% IF TRUE + \begin{center} + \large\textbf{\@author}~~~~~ et ~~~~~ + \large\textbf{\@secondAuthor} + \end{center} + } + {\Large\textbf{\@author}}% FALSE +} +\vskip12mm + +\begin{changemargin}{-9mm}{0cm} +\begin{minipage}[l]{1.1\columnwidth} +\begin{tcolorbox}[colback=white,boxrule=0pt,toprule=3pt,bottomrule=3pt,arc=0pt,top=0mm,right=0mm,left=0mm,bottom=0mm,boxsep=0.5mm]{ + \begin{tcolorbox}[colback=white, boxrule=0pt,toprule=1pt,bottomrule=1pt,arc=0pt,enlarge bottom by=-0.9mm, auto outer arc] + \centering + {\huge\textbf{\@title}} + \end{tcolorbox} +} +\end{tcolorbox} +\end{minipage} +\end{changemargin} + +\end{center} +\vskip8mm% + +\begin{center} +\large +\begin{minipage}[c]{0.28\columnwidth} +Encadrant professionnel:\\ +Encadrant académique: +\end{minipage} +\hfill +\begin{minipage}[c]{0.42\columnwidth} +\textbf{\@proFramerName}\\ +\textbf{\@academicFramerName} +\end{minipage} +\hfill +\begin{minipage}[c]{0.26\columnwidth} +\@proFramerSpeciality\\ +\@academicFramerSpeciality +\end{minipage} +\end{center} +\vskip16mm + +\begin{center} +\large +Réalisé au sein de \@companyName\\ +\vskip0.4cm +\begin{figure}[h] +\centering +{{\fboxrule=2.5pt\fbox{\includegraphics[width=0.4\columnwidth]{Logo_Entreprise_Black}}}} +\end{figure} +\end{center} + +\restoregeometry \ No newline at end of file diff --git a/tpl/isipfe.cls b/tpl/isipfe.cls new file mode 100644 index 0000000..4bfc4d8 --- /dev/null +++ b/tpl/isipfe.cls @@ -0,0 +1,353 @@ + +%========= File containing the ISIPFE LaTex Class =========% +% Produced based on "mqthesis.cls" and isipfe.cls v1 % +% % +% Copyright (C) ISI - All Rights Reserved % +% Proprietary % +% Written by Med Hossam , April 2016 % +% % +% @author: HEDHILI Med Houssemeddine % +% @linkedin: http://tn.linkedin.com/in/medhossam % +%==========================================================% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{isipfe}[15/04/2016 ISI PFE LaTeX Class] + +% ifthenelse for if loops +\RequirePackage{ifthen} + +% if two condidates +\newboolean{isBinomal} +\setboolean{isBinomal}{false} +\DeclareOption{isBinomal}{\setboolean{isBinomal}{true}} + +\newboolean{wantToTypeCompanyAddress} +\setboolean{wantToTypeCompanyAddress}{false} +\DeclareOption{wantToTypeCompanyAddress}{\setboolean{wantToTypeCompanyAddress}{true}} + +% finished processing options +\ProcessOptions\relax + +% load the book class using a4paper +\LoadClass[11pt,a4paper, oneside]{book} +\usepackage[a4paper]{geometry} + +% give the header a bit more room for fancyhdr below +% otherwise LaTeX will spew on each page +\addtolength{\headheight}{2.5pt} + +% first set to zero ... +\setlength{\oddsidemargin}{-1in} +\setlength{\evensidemargin}{-1in} +\setlength{\topmargin}{-1in} + +% adjust these if printer is off by a bit +\setlength{\hoffset}{0mm} +\setlength{\voffset}{0mm} + +% PS also that the optimal number of characters per line +% for readability is only 60-70, we're over so we'll be a +% bit more generous on the evensidemargin + +\addtolength{\oddsidemargin}{22mm} +\addtolength{\evensidemargin}{22mm} +\addtolength{\topmargin}{20mm} + +% set up some of the spacing +\setlength{\marginparwidth}{40pt} +\setlength{\marginparsep}{10pt} +\setlength{\headsep}{0.2in} + +% A4 dimensions [mm]: 209.903 x 297.039 +\setlength{\textwidth}{21 cm} +\setlength{\textheight}{30 cm} + +% fix up width +\addtolength{\textwidth}{-\oddsidemargin} +\addtolength{\textwidth}{-\evensidemargin} +% now we've added 2inches in setting up margins +\addtolength{\textwidth}{-2in} + +% fix up height +\addtolength{\textheight}{-2\topmargin} +\addtolength{\textheight}{-\headheight} +\addtolength{\textheight}{-\headsep} +\addtolength{\textheight}{-\footskip} +% now we've added 2inches in setting up margins +\addtolength{\textheight}{-2in} + +\brokenpenalty=10000 % dunno what this does, maybe handy + +% this stops one figure taking up a whole page and lets more text onto +% the one page when a figure exists +\renewcommand\floatpagefraction{0.8} % Default = 0.5 + +%% Disable hyphenation +\usepackage[none]{hyphenat} + +%% Defining section, subsection and subsubsection spacing +\usepackage{titlesec} +\titlespacing*{\section}{7mm}{12pt}{8pt} +\titlespacing*{\subsection}{15mm}{12pt}{8pt} +\titlespacing*{\subsubsection}{18mm}{12pt}{6pt} + +% use 1.5 line spacing +%\renewcommand{\baselinestretch}{1.5} +\usepackage{setspace} +\setstretch{1.6} + +\setlength{\parindent}{12mm} +%\setlength{\parskip}{3pt} + +%%% load the required packages +% fancyhdr for nice, fancy headings +\RequirePackage{fancyhdr} +% ccaption for good caption handling +%\RequirePackage{ccaption} +% xspace so that spaces after commands are handled correctly +\RequirePackage{xspace} + +%================ Languages used in the doc ================% +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +% @author: Stoufa +% Package babel-french Warning: Option `frenchb' for Babel is *deprecated* +%\usepackage[english,arabic,frenchb]{babel} +\usepackage[english,arabic,french]{babel} + +%%%%%%%%%%% + +\frenchbsetup{LowercaseSuperscripts=false} +\usepackage{csquotes} +\PassOptionsToPackage{% + backend=biber, %instead of bibtex + %backend=bibtex8,bibencoding=ascii,% + %language=autobib,% + language=auto, + %language=french, + %autocite=inline, + %style=numeric-comp,% + %style=authoryear-comp, % Author 1999, 2010 + %style=authoryear,% + %style=alphabetic,% + style=ieee, + %bibstyle=authoryear,dashed=false, % dashed: substitute rep. author with --- + %sorting=nty, % name, year, title + sorting=none, % name, year, title + %maxbibnames=3, % default: 3, et al. + %backref=true,% + %hyperref=true, + %natbib=true % natbib compatibility mode (\citep and \citet still work) +}{biblatex} +% @author: Stoufa +% the option `backend=bibtex` is mandatory to avoid the “no \citation commands” error +% https://tex.stackexchange.com/questions/18045/problem-with-compiling-bibtex-no-citation-commands-error +\usepackage[backend=bibtex]{biblatex} +%\renewcommand*{\bibfont}{\small\raggedright} +%\DefineBibliographyExtras{french}{\renewcommand*\mkbibnamelast[1]{#1}} +\addbibresource{biblio.bib} +%\DefineBibliographyStrings{french}{% +% bibliography = {Bibliographie}, +%} + +%============== To Enable List Customization ==============% +\usepackage{enumitem} +\usepackage{datatool}% http://ctan.org/pkg/datatool +\newcommand{\sortitem}[2][\relax]{% + \DTLnewrow{list}% Create a new entry + \DTLnewdbentry{list}{sortlabel}{#1} + \DTLnewdbentry{list}{description}{ + \begin{minipage}[l]{0.1\columnwidth} + ~\textbf{#1} + \end{minipage} + \begin{minipage}[l]{0.05\columnwidth} + \textbf{=} + \end{minipage} + \begin{minipage}[l]{0.85\columnwidth} + #2 + \end{minipage} + }% Add entry description +} +\newenvironment{acronyms}{% + \DTLifdbexists{list}{\DTLcleardb{list}}{\DTLnewdb{list}}% Create new/discard old list +}{% + \DTLsort{sortlabel}{list}% Sort list + \begin{itemize}% + \DTLforeach*{list}{\theDesc=description}{% + \item \theDesc}% Print each item + \end{itemize}% +} + +%================= Defining Custom Colors =================% +\usepackage[table]{xcolor} +\definecolor{isiBlue}{RGB}{31, 78, 121} + +%================= configuring minitoc ==================% +\usepackage[french]{minitoc} +\mtcsettitle{minitoc}{Plan} +\setcounter{minitocdepth}{1} +\mtcsetrules{minitoc}{off} +\mtcsetoffset{minitoc}{-1.0em} + +%% disabling chapter numbers +\newcommand{\filterminitoc}[1]{#1} +\renewcommand{\thesection}{\csname filterminitoc \endcsname{\arabic{chapter}.}\arabic{section}} +\newcommand{\minitocsection}{\begingroup\renewcommand{\filterminitoc}[1]{}\minitoc\endgroup} + +%=============== Customizing Chapters Names ===============% +%@author: Stoufa +%Package pstcol Warning: +%************************************ +%(pstcol) The package `pstcol' is obsolet! +%(pstcol) You should use `pstricks' directly: +%(pstcol) \usepackage{pstricks} +%(pstcol) ************************************ +%\usepackage{pstcol} +\usepackage{pstricks} +\makeatletter +\def\thickhrulefill{\leavevmode \leaders \hrule height 1.2ex \hfill \kern \z@} + +\def\@makechapterhead#1{ + \vspace*{30\p@}% + {\parindent \z@ \centering \reset@font + \thickhrulefill\quad + \scshape\bfseries\textit{\@chapapp{} \thechapter} + \quad \thickhrulefill + \par\nobreak + \vspace*{10\p@}% + \interlinepenalty\@M + \hrule + \vspace*{10\p@}% + \Huge \bfseries #1 \par\nobreak + \par + \vspace*{10\p@}% + \hrule + \vskip 50\p@ + } + \minitocsection + \thispagestyle{empty}% + \newpage +} +\def\@makeschapterhead#1{\hbox{% + \huge\hbox{\textbf{#1}}% +}\par\vskip 1cm} + +%============== Table & Figure Captions Style ==============% + +\usepackage{caption} +\captionsetup[table]{ + labelfont=bf, + labelsep = newline, + name = Tableau, + justification=justified, + singlelinecheck=false,%%%%%%% a single line is centered by default + labelsep=colon, + skip = \medskipamount} + +\captionsetup[figure]{ + labelfont=bf, + labelsep = newline, + name = Figure, + justification=centering, + singlelinecheck=false, + labelsep=colon, + skip = \medskipamount} + +%%%%% Fancyhdr stuff +% define how headers are marked, for details, see fancyhdr docs +%\renewcommand{\chaptermark}[1]{\markboth{#1}{}} +%\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} +% define where sections, chapters and pagenumbers are put +% see fancyhdr docs for details + +% the \nouppercase stops book.cls making the contents, bibliography +% and index headers from being all in uppercase. +% The options used here are essentially that in Lamport's book, but +% with small caps for the headings. +\fancyhf{} +%\fancyhead[LE,RO]{\nouppercase{\thepage}} +%\fancyhead[L]{\nouppercase{\leftmark}} +\renewcommand{\headrulewidth}{0.3pt} +\renewcommand{\footrulewidth}{0.3pt} +\pagestyle{fancy} +\lhead{\nouppercase{\leftmark}} +\rfoot{\centering \thepage} + +%=============== Defining Fancy Page Styles ===============% + +\fancypagestyle{frontmatter}{% + \fancyhf{}% clear all header and footer fields + \renewcommand{\footrulewidth}{0.3pt}% + \renewcommand{\headrulewidth}{0pt}% + \fancyfoot[r]{\footnotesize \thepage}% +} + +\fancypagestyle{lscape}{ + \fancyhf{} + \renewcommand{\footrulewidth}{0pt} + \renewcommand{\headrulewidth}{0pt} + %\rhead{\vspace{12cm}\rotatebox{90}{\footnotesize \thepage}} + %\lfoot{\vspace{-88mm}\rotatebox{90}{\nouppercase{\leftmark}}} +} + +\fancypagestyle{plain}{ + \fancyhf{} + \renewcommand{\footrulewidth}{0.3pt} + \renewcommand{\headrulewidth}{0pt} + \fancyfoot[c]{\footnotesize \thepage} +} + +\fancypagestyle{cover}{ + \fancyhf{} + \renewcommand{\footrulewidth}{0pt} + \renewcommand{\headrulewidth}{0pt} + \fancyfoot[C]{{\noindent\makebox[\textwidth][c]{Année Universitaire \@collegeYear}}} +} + +\fancypagestyle{backcover}{ + \fancyhf{} + \renewcommand{\footrulewidth}{0pt} + \renewcommand{\headrulewidth}{0pt} + \setlength{\headheight}{0mm} + \setlength{\footskip}{0mm} + + %%% ISI Footer %%% + \fancyfoot[C]{ + \centering\color{isiBlue} + {\ifthenelse{\boolean{wantToTypeCompanyAddress}} + {% IF TRUE + \makebox[\textwidth][c]{\rule{1.03\columnwidth}{1pt}} + \makebox[\textwidth][c]{ + \small\textLR{\@companyEmail} \footnotesize{\textAR{البريد الالكتروني :}} + \footnotesize{\textLR{\@companyFax}\textAR{الفاكس : }} + \footnotesize{\textLR{\@companyTel}\textAR{الهاتف : }} + \footnotesize{\textAR{\@companyAddressAR}} + } + \makebox[\textwidth][c]{ + \small\textLR{\@companyAddressFR} + ~~\small\textLR{\textbf{Tél} : \@companyTel} + ~\small\textLR{\textbf{Fax} : \@companyFax} + ~\small\textLR{\textbf{Email} : \@companyEmail} + } + \vspace{-3mm} + }{\vspace{8mm}}} + \makebox[\textwidth][c]{\rule[2mm]{1.03\columnwidth}{1pt}} + \makebox[\textwidth][c]{ + \small\textLR{isi@isim.rnu.tn} \footnotesize{\textAR{البريد الالكتروني : }} + ~~~~~\footnotesize{\textLR{71 706 698}\textAR{الفاكس : }} + ~~~~~\footnotesize{\textLR{71 706 164}\textAR{الهاتف : }} + ~~~~~\footnotesize{\textAR{ أريانة }}\textLR{2080}\textAR{ نهج أبو الريحان الباروني }\textLR{2} + } + \makebox[\textwidth][c]{ + \small\textLR{2, Abou Raihane Bayrouni 2080 l'Ariana} + ~~~~~~~~\small\textLR{\textbf{Tél} : 71 706 164} + ~~~~~~~~\small\textLR{\textbf{Fax} : 71 706 698} + ~~~~~~~~\small\textLR{\textbf{Email} : isi@isim.rnu.tn} + } + } +} + +% standard graphics package for inclusion of images and eps files into LaTeX document +\usepackage{graphicx} +\usepackage{graphics} +\usepackage{float} \ No newline at end of file diff --git a/tpl/new_commands.tex b/tpl/new_commands.tex new file mode 100644 index 0000000..1afa8b7 --- /dev/null +++ b/tpl/new_commands.tex @@ -0,0 +1,115 @@ + +%=========== File containing some new commands ============% +% % +% Copyright (C) ISI - All Rights Reserved % +% Proprietary % +% Written by Med Hossam , April 2016 % +% % +% @author: HEDHILI Med Houssemeddine % +% @linkedin: http://tn.linkedin.com/in/medhossam % +%==========================================================% + +\newenvironment{changemargin}[2]{% +\begin{list}{}{% +\setlength{\leftmargin}{#1}% +\setlength{\rightmargin}{#2}% +}% +\item[]} +{\end{list}} + +\makeatletter + +%================= front cover variables =================% + +\newcommand{\secondAuthor}[1]{\gdef\@secondAuthor{#1}}% +\newcommand{\@secondAuthor}{\@latex@warning@no@line{No \noexpand\secondAuthor given}} + +\newcommand{\diplomaName}[1]{\gdef\@diplomaName{#1}}% +\newcommand{\@diplomaName}{\@latex@warning@no@line{No \noexpand\diplomaName given}} + +\newcommand{\speciality}[1]{\gdef\@speciality{#1}}% +\newcommand{\@speciality}{\@latex@warning@no@line{No \noexpand\speciality given}} + +\newcommand{\proFramerName}[1]{\gdef\@proFramerName{#1}}% +\newcommand{\@proFramerName}{\@latex@warning@no@line{No \noexpand\proFramerName given}} + +\newcommand{\proFramerSpeciality}[1]{\gdef\@proFramerSpeciality{#1}}% +\newcommand{\@proFramerSpeciality}{\@latex@warning@no@line{No \noexpand\proFramerSpeciality given}} + +\newcommand{\academicFramerName}[1]{\gdef\@academicFramerName{#1}}% +\newcommand{\@academicFramerName}{\@latex@warning@no@line{No \noexpand\academicFramerName given}} + +\newcommand{\academicFramerSpeciality}[1]{\gdef\@academicFramerSpeciality{#1}}% +\newcommand{\@academicFramerSpeciality}{\@latex@warning@no@line{No \noexpand\academicFramerSpeciality given}} + +\newcommand{\collegeYear}[1]{\gdef\@collegeYear{#1}}% +\newcommand{\@collegeYear}{\@latex@warning@no@line{No \noexpand\collegeYear given}} + +\newcommand{\companyName}[1]{\gdef\@companyName{#1}}% +\newcommand{\@companyName}{\@latex@warning@no@line{No \noexpand\companyName given}} + +%================== Signatures variables ==================% + +\newcommand{\proSignSentence}[1]{\gdef\@proSignSentence{#1}}% +\newcommand{\@proSignSentence}{\@latex@warning@no@line{No \noexpand\proSignSentence given}} + +\newcommand{\academicSignSentence}[1]{\gdef\@academicSignSentence{#1}}% +\newcommand{\@academicSignSentence}{\@latex@warning@no@line{No \noexpand\academicSignSentence given}} + +%================== Backcover variables ==================% + +\newcommand{\arabicAbstract}[1]{\gdef\@arabicAbstract{#1}}% +\newcommand{\@arabicAbstract}{\@latex@warning@no@line{No \noexpand\arabicAbstract given}} + +\newcommand{\arabicAbstractKeywords}[1]{\gdef\@arabicAbstractKeywords{#1}}% +\newcommand{\@arabicAbstractKeywords}{\@latex@warning@no@line{No \noexpand\arabicAbstractKeywords given}} + +\newcommand{\frenchAbstract}[1]{\gdef\@frenchAbstract{#1}}% +\newcommand{\@frenchAbstract}{\@latex@warning@no@line{No \noexpand\frenchAbstract given}} + +\newcommand{\frenchAbstractKeywords}[1]{\gdef\@frenchAbstractKeywords{#1}}% +\newcommand{\@frenchAbstractKeywords}{\@latex@warning@no@line{No \noexpand\frenchAbstractKeywords given}} + +\newcommand{\englishAbstract}[1]{\gdef\@englishAbstract{#1}}% +\newcommand{\@englishAbstract}{\@latex@warning@no@line{No \noexpand\englishAbstract given}} + +\newcommand{\englishAbstractKeywords}[1]{\gdef\@englishAbstractKeywords{#1}}% +\newcommand{\@englishAbstractKeywords}{\@latex@warning@no@line{No \noexpand\englishAbstractKeywords given}} + +\newcommand{\companyEmail}[1]{\gdef\@companyEmail{#1}}% +\newcommand{\@companyEmail}{\@latex@warning@no@line{No \noexpand\companyEmail given}} + +\newcommand{\companyTel}[1]{\gdef\@companyTel{#1}}% +\newcommand{\@companyTel}{\@latex@warning@no@line{No \noexpand\companyTel given}} + +\newcommand{\companyFax}[1]{\gdef\@companyFax{#1}}% +\newcommand{\@companyFax}{\@latex@warning@no@line{No \noexpand\companyFax given}} + +\newcommand{\companyAddressFR}[1]{\gdef\@companyAddressFR{#1}}% +\newcommand{\@companyAddressFR}{\@latex@warning@no@line{No \noexpand\companyAddressFR given}} + +\newcommand{\companyAddressAR}[1]{\gdef\@companyAddressAR{#1}}% +\newcommand{\@companyAddressAR}{\@latex@warning@no@line{No \noexpand\companyAddressAR given}} + +%============= cmd for inserting blank page =============% +\newcommand\blankpage{% + \null + \thispagestyle{empty}% + \addtocounter{page}{-1}% + \newpage} + +%================ document main language ================% +%\selectlanguage{english} +\selectlanguage{french} + + +%================== required packages ===================% + +\usepackage{tcolorbox} +\usepackage{afterpage} +\usepackage{array,longtable,multirow}% http://ctan.org/pkg/{array,longtable,multirow} +\usepackage{pifont} + +\usepackage{pdflscape} +\usepackage{rotating} +\usepackage{wrapfig} \ No newline at end of file diff --git a/tpl/resume.tex b/tpl/resume.tex new file mode 100644 index 0000000..49a54b9 --- /dev/null +++ b/tpl/resume.tex @@ -0,0 +1,76 @@ +%===== File containing the back cover of the document =====% +% % +% Copyright (C) ISI - All Rights Reserved % +% Proprietary % +% Written by Med Hossam , April 2016 % +% % +% @author: HEDHILI Med Houssemeddine % +% @linkedin: http://tn.linkedin.com/in/medhossam % +%==========================================================% + +%== It's advised to not modify the content of this file ===% +% To set your information, go to global_config.tex file % +%==========================================================% + +\thispagestyle{backcover} +\newgeometry{bottom=25mm,left=15mm,top=20mm,right=15mm} + +\begin{changemargin}{3mm}{0cm} + \begin{minipage}[c]{0.96\columnwidth} + + \selectlanguage{arabic} + + {\LARGE\textbf{ملخّص}} + \vskip1mm + \begingroup + \small + \@arabicAbstract + \endgroup + \vskip1mm + {\textbf{كلمات مفاتيح : } + \begingroup + \@arabicAbstractKeywords + \endgroup + } + + {\ifthenelse{\boolean{wantToTypeCompanyAddress}} + {% IF TRUE + \vskip5mm + }{\vskip8mm}} + + \selectlanguage{french} + + {\LARGE\textbf{Résumé}} + \vskip1mm + \begingroup + \large + \@frenchAbstract + \endgroup + \vskip1mm + {\textbf{Mots clés : } + \begingroup + \@frenchAbstractKeywords + \endgroup + } + + {\ifthenelse{\boolean{wantToTypeCompanyAddress}} + {% IF TRUE + \vskip5mm + }{\vskip8mm}} + + \selectlanguage{english} + {\LARGE\textbf{Abstract}} + \vskip1mm + \begingroup + \large + \@englishAbstract + \endgroup + \vskip1mm + {\textbf{Keywords : } + \begingroup + \@englishAbstractKeywords + \endgroup + } + \end{minipage} + +\end{changemargin} \ No newline at end of file diff --git a/tpl/signatures.tex b/tpl/signatures.tex new file mode 100644 index 0000000..c31d643 --- /dev/null +++ b/tpl/signatures.tex @@ -0,0 +1,35 @@ +\thispagestyle{empty} + +\begin{center} + \begin{minipage}[l]{1\columnwidth} + \begin{tcolorbox}[colback=white,boxrule=5pt,arc=10pt,height=105mm]{ + \vspace{2cm} + \large \@proSignSentence + \vspace{1mm} + \begin{center} + \Large + Encadrant professionnel, \textbf{\@proFramerName} + \end{center} + \vspace{5mm} + \hspace{0.71\columnwidth}\textbf{\large Signature et cachet} + } + \end{tcolorbox} + \end{minipage} + + \vspace{2cm} + + \begin{minipage}[l]{1\columnwidth} + \begin{tcolorbox}[colback=white,boxrule=5pt,arc=10pt,height=105mm]{ + \vspace{2cm} + \large \@academicSignSentence + \vspace{1mm} + \begin{center} + \Large + Encadrant académique, \textbf{\@academicFramerName} + \end{center} + \vspace{5mm} + \hspace{0.84\columnwidth}\textbf{\large Signature} + } + \end{tcolorbox} + \end{minipage} +\end{center} \ No newline at end of file