% Copyright (c)  2007 Rémi Laurent <remi.laurent@fsugar.be>.
% Permission is granted to copy, distribute and/or modify this document
% under the terms of the GNU Free Documentation License, Version 1.2
% or any later version published by the Free Software Foundation.

\documentclass{beamer}
\usetheme{PaloAlto}
\setbeamercovered{transparent}

\usepackage[french]{babel}
\usepackage{hyperref}

\usepackage[utf8]{inputenc}


\title{GNU/Linux et l'étude de l'informatique}
\date{\today}
\author{Rémi Laurent}
\institute{Expo-Sciences 2007}

\begin{document}
\frame{\titlepage}

\begin{frame}
\frametitle{Qui ?}
Cette présentation s'adresse :
\begin{itemize}
	\item aux étudiants en informatique
	\item aux professeurs d'informatique
	\item aux écoles donnant des cours d'informatique
	\item aux hobbyistes qui s'intéressent à l'informatique
\end{itemize}
Vous ne serez pas intéressés par tout, c'est normal;\\
j'espère seulement vous donner des pistes à explorer.
\end{frame}

\part{Langages de programmation proposés}
\frame{\partpage}
%------------------------------------------------------------------- 
\begin{frame}
\frametitle{Langages de programmation proposés}
\begin{itemize}
	\item C/C++
	\item Java
	\item C\#
	\item Ruby
	\item Python
	\item Shell Script
	\item HTML
	\item ...
\end{itemize}
\end{frame}

\section{C/C++}
\begin{frame} 
\frametitle{C/C++}
\begin{description}
	\item [C,] \textbf{Le} langage de programmation 'bas' niveau.
	\item [C++,] son homologue orienté objet.
\end{description}

\begin{itemize}
	\item Debugging : gdb, libefence
	\item Profiling mémoire : valgrind
	\item Test automatisé : expect
	\item Test de vulnérabilité, robustesse : fuzzing
	\item Documentation : doxygen
	\item Innombrables bibliothèques (réseau, multimédia, mathématiques, statistiques, ...)
	\item ...
\end{itemize}

\end{frame}

\section{Java}
\begin{frame}[fragile]
\frametitle{Java}
\begin{description}
	\item [Java,] le standard de fait dans l'entreprise, disponible en version 6.
\end{description}

\begin{itemize}
	\item Environnement de développement : Netbeans, Eclipse
	\item Serveur applicatif : Tomcat
	\item Framework de développement : hibernate, struts, ...
	\item Bindings : JRuby, Jython
	\item \begin{verbatim}
	apt-cache search java | grep lib | wc -l
	396  #bibliothèques directement disponibles
	\end{verbatim}
	\item ...
\end{itemize}
\end{frame}

\section{C\#.Net}
\begin{frame}
\frametitle{C\#.Net}
\begin{description}
	\item [C\#.Net,] de Microsoft,
\end{description}
Implémentation libre : Mono\\
90\% implémentés, mais pas les WinForms ou Win32
\newline

Pas de MS .Net ou Visual Studio sous GNU/Linux (évidemment).
\newline

\pause
\scriptsize{légitimité de Mono face aux brevets déposés ?}
\end{frame}

\section{Ruby}
\begin{frame} 
\frametitle{Ruby}
\begin{description}
	\item [Ruby,] langage de script simple et 'novateur'
\end{description}
\begin{itemize}
	\item intuitif
	\item premiers programmes en quelques minutes
	\item orienté objet (au cas où)
	\item Ruby On Rails (dév. Web et modèle MVC)
\end{itemize}
Un cours d'introduction gratuit (cliquez sur le lien):\\
\url{http://www.ruby-doc.org/docs/ApprendreProgrammer/Apprendre\_\%E0\_Programmer.pdf}
\end{frame} 

\section{Python}
\begin{frame} 
\frametitle{Python}
\begin{description}
	\item [Python,] langage de script simple
\end{description}
\begin{itemize}
	\item relativement intuitif
	\item premiers programmes en quelques minutes
	\item nombreux exemples pour débutants
	\item orienté objet (au cas où)
\end{itemize}
Un cours très complet et gratuit (écrit pas un professeur belge ;)) :\\
\url{http://www.cifen.ulg.ac.be/inforef/swi/python.htm}
\end{frame} 

\section{Shell Script}
\begin{frame} 
\frametitle{Shell Script}
\begin{description}
	\item [Bash, csh, ksh, zsh, ... ] tout ce qu'on est en droit d'attendre d'un shell *NIX digne de ce nom
\end{description}
\begin{itemize}
	\item scripts d'administration
	\item utilisation de la ligne de commande
	\item illustrations d'éléments d'étude des OS
\end{itemize}
Bref, tout ce qu'un futur administrateur réseau/système *NIX \textbf{doit} savoir.
\end{frame} 

\section{HTML, XML, XHTML}
\begin{frame} 
\frametitle{HTML, XML, XHTML}
\begin{description}
	\item [HTML,] pour réaliser ses pages Web
	\item [XML,] données structurées
	\item [XHTML,] le meilleur des deux mondes ?
\end{description}
\begin{itemize}
	\item serveurs HTTP : apache, lighttpd, ...
	\item contenu dynamique : PHP, Python, Ruby, Perl, ...
	\item WebServices, XML-RPC
	\item parser XML, sérialisation
\end{itemize}
Plugin propriétaire Flash disponible, mais pas d'IDE.\\
Java Web ou ASP.Net possibles également.
\end{frame} 

\begin{frame}
\frametitle{Divers}
Tous les outils d'automatisation de tâche :
\begin{itemize}
	\item manipulation de texte : sed, awk, grep, ...
	\item compilation de projets : make, autotools, ...
	\item éditeurs textes / IDE : gedit, kate, anjuta, vi, ...
	\item script Shell, Python, Ruby, Perl, ...
	\item gestionnaire de versions : CVS, Subversion, git, DARCS, ...
\end{itemize}
\end{frame}

\part{Réseaux et Systèmes}
\frame{\partpage}

\section{Réseaux et Systèmes}
\begin{frame} 
\frametitle{Réseaux et Systèmes}
Réseaux :
\begin{itemize}
	\item IPv4 ou IPv6, analyse de toutes les couches
	\item client ou serveur (Web, FTP, Mail, SSH, DNS, NFS, ...)
	\item bridge/pont, routeur, NAT/PAT
	\item firewall : iptables pour netfilter
	\item VPN, IPSec : OpenVPN, OpenSwan
\end{itemize}
Systèmes (et virtualisation)
\begin{itemize}
	\item simulation de réseaux
	\item simulation de systèmes complets
\end{itemize}
Qemu, Xen, 10 PC en réseau virtualisés sur 1 ? oui, c'est fait pour
\end{frame} 

\section{Cisco ?}
\frametitle{Cisco ?}
\begin{frame} 
\frametitle{s/Cisco/Quagga/}
\begin{description}
	\item [Quagga,] "BGP4, BGP4+, OSPFv2, OSPFv3, IS-IS, RIPv1, RIPv2, and RIPng"
\end{description}
\begin{itemize}
	\item interface de configuration identique à un routeur Cisco
	\item étude de l'implémentation et modifications possibles
	\item pour le prix d'un (vieux) PC
\end{itemize}
De quoi équiper un local réseau à moindre frais.\\
Matériel Cisco et Quagga inter-opèrent.
\end{frame} 

%------------------------------------------------------------------- 
\part{Divers}
\frame{\partpage}
%------------------------------------------------------------------- 
\begin{frame}
\frametitle{Divers}

\begin{itemize}
	\item *NIX
	\item Base de données
	\item LaTeX
	\item UML
\end{itemize}
\end{frame}


\section{Système d'exploitation}
\begin{frame} 
\frametitle{Système d'exploitation}
Idéal pour l'apprentissage d'un système de type UNIX.

\begin{itemize}
	\item toutes les fonctionnalités d'un *NIX moderne
	\item code source à disposition pour étude, modification et redistribution
	\item exemples concrets afin d'illustrer un cours théorique
\end{itemize}
\end{frame} 


\section{Base de données}
\begin{frame} 
\frametitle{Base de données}
\begin{description}
	\item [MySQL,] rapide et léger, mais moins de fonctionnalités que
	\item [PostgreSQL,] contraintes, trigger, index, procédures stockées, ...
\end{description}
Illustration de tous les aspects d'une base de données moderne à un prix nul.\\
Si nécessaire, Oracle est également disponible sous GNU/Linux
\end{frame} 


\section{Rapports}
\begin{frame} 
\frametitle{Rapports et documentation}
\begin{description}
	\item [OpenOffice.org,] bien entendu
	\item [LaTeX,] un TFE de plusieurs centaines de pages ? pas de problème
	\item [LaTeX/Beamer,] vous êtes en train de regarder une présentation Beamer en ce moment même ;)
	\item [LaTex/Texify,] mise en page de code source pour l'impression
	\item [Valgrind,] graphe d'utilisation mémoire, rapports complets sur l'exécution d'une application
	\item [GnuPlot,] statistiques graphiques sur plusieurs milliers de données ?
\end{description}
\end{frame} 

\section{UML}
\begin{frame}
\frametitle{UML}
Différents outils de modélisation UML:
\begin{itemize}
	\item Dia, basique
	\item Umbrello, abouti
	\item ArgoUML, orienté Java et écrit en Java
\end{itemize}
\end{frame}

%------------------------------------------------------------------- 
\part{Conlusion}
\frame{\partpage}

\begin{frame}
\frametitle{Conclusion}
GNU/Linux | le Logiciel Libre\\
une plateforme \textbf{de rêve} pour
\begin{itemize}
	\item l'étude et la compréhension de l'informatique
	\item l'illustration de cours à l'aide d'exemples concrets
	\item la mise en oeuvre rapide et peu onéreuse de projets scolaires
\end{itemize}

\pause

\begin{center}
Nombre d'universités et écoles se sont laissées séduire.\\
Serez-vous le prochain ?
\end{center}
\end{frame}

\begin{frame}
\frametitle{Questions}
\begin{center}
Des questions ?
\pause
\vspace{1cm}

FEU !
\end{center}
\end{frame}
\end{document}

