diff --git a/chap/Fedora.tex b/chap/Fedora.tex index b3ed4c8..828328e 100644 --- a/chap/Fedora.tex +++ b/chap/Fedora.tex @@ -1,8 +1,6 @@ \chapter{Fedora} \label{chap:Fedora} \index{Fedora} - - % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \section{Gestion des paquets} @@ -18,12 +16,29 @@ Pour chercher un binaire précis~: \texttt{\# dnf provides '*/interpolator'} +Pour installer un nouveau jouet~: + +\texttt{\# dnf install gfortran} + +\subsection{trucs} + + faut sans doute passer le enable de 0 à 1 dans le fichier +/etc/yum.repo.d/le\_repo\_en\_question dans le paragraphe +[fedora***-debuginfo] + % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \section{Firewall} -Krkrkr, UPD\index{UDP} est bloqué en entrée ? Wtf ? +Krkrkr, UDP\index{UDP} est bloqué en entrée ? Wtf ? -\textsf{\textsc{ welcome to firewalld}} +\textsf{\textbf{ welcome to firewalld}} + +\begin{quote} +firewalld provides a dynamically managed firewall with support for network/firewall zones to define the trust level of +network connections or interfaces. It has support for IPv4, IPv6 firewall settings and for ethernet bridges and has a +separation of runtime and permanent configuration options. It also supports an interface for services or applications to add +firewall rules directly. +\end{quote} % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \section{Include dir} @@ -42,7 +57,9 @@ portabilité est à vérifier. \section{Gni ?}\index{memtest86} \label{memtest86:fedora} -Ayant des soucis de \textsf{kernelpanic} avec une ancienne machine +Ayant des soucis de \textsf{kernelpanic}% +\footnote{[90821.154795] fonderie: Corrupted page table at address 7f58478cd000} +avec une ancienne machine Dell\footnote{d'origine catalano-ariégeoise} j'ai voulu faire un test approfondi de la RAM. DNF m'a permis de trouver le paquet \texttt{memtest86+}, puis de l'installer (comme je procède diff --git a/chap/debug.tex b/chap/debug.tex index df7e50e..028a00a 100644 --- a/chap/debug.tex +++ b/chap/debug.tex @@ -88,6 +88,28 @@ Bah non, il nous avait bien prévenu : % ============================================================== +\section{Valgrind} + +Reprenons le premier exemple précédemment traité avec Gdb, et +tentons de résoudre l'énigme avec Valgrind. + +\begin{verbatim} +(gdb) quit +[tth@laserbox]$ man valgrind +[tth@laserbox]$ valgrind fonderie -I 'G/?????.fimg' -O 'Png' \ + -w 0 -x 0 -T 80 +==2388== Memcheck, a memory error detector +==2388== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. +==2388== Using Valgrind-3.16.1 and LibVEX; rerun with -h for copyright info + +\end{verbatim} + +Là, on attend vingt heures que le logiciel tripote plein +d'images en virgule flottante. C'est très long. Je me +demande même si ce n'est pas un roblock total. + +% ============================================================== + \section{Strace}\index{strace} Strace permet de tracer les appels systèmes d'un processus. diff --git a/chap/divers.tex b/chap/divers.tex index 3e55c7d..7362901 100644 --- a/chap/divers.tex +++ b/chap/divers.tex @@ -25,6 +25,10 @@ Question : qui tombe à l'eau ? printf '\033]11;lemonchiffon2\a' \end{verbatim} +Pour être honnete, je n'ai pas la moindre idée de ce que +cela veut dire. Mais j'imagine que le \texttt{*a} à la +fin est destiné à activer la cloche. + % ============================================================== \section{fdupes} \index{fdupes}\label{fdupes} @@ -33,5 +37,21 @@ Un utilitaire pour découvrir les fichiers dupliqués dans votre disque dur qui se remplit trop vite à votre gout. % ============================================================== +\section{g77: Command not found} + +Lors d'une fin de soirée, je me suis retrouvé à fouiller +dans ma portion du Ternet, et je suis tombé sur un très +vieux truc. Des fractales en \textsc{fortran77}, avec +des incantations comme celle-ci dans le Makefile~: + +\begin{verbatim} +map_henon: map_henon.f + g77 $(G77OPT) map_henon.f -o map_henon -limage +\end{verbatim} + +Hélas, je n'ai pas de commande \texttt{g77} dans ma machine, +que faire ? +% ============================================================== + diff --git a/chap/gnuplot.tex b/chap/gnuplot.tex index a434228..31615bf 100644 --- a/chap/gnuplot.tex +++ b/chap/gnuplot.tex @@ -4,6 +4,8 @@ \chapter{Gnuplot} \index{Gnuplot}\label{chap:gnuplot} +Gnuplot - an interactive plotting program + \section{Exemple : le phytotron} \index{phytotron} diff --git a/chap/threads.tex b/chap/threads.tex index 0c92b5d..69e80f3 100644 --- a/chap/threads.tex +++ b/chap/threads.tex @@ -20,8 +20,38 @@ memory (data and heap segments), but each thread has its own stack Et c'est là que les ennuis potentiels débarquent : \textit{share the same global memory}, ce qui veut dire en gros -«~se partagent la même mémoire globale~». +«~se partagent la même mémoire globale~». Et en français de tous +les jours, «~ils vont se marcher sur les pieds~». +D'un autre coté, ce paradigme permet de faire des choses assez +choupi, comme un synthétiseur d'évènement. + +% ---------------------------------------------------------------- +\section{Un exemple} + +Nous allons partir sur un exemple peu réaliste, mais simple +à comprendre. Nous aurons un seul fil d'exécution qui affichera +un compteur, puis l'incrémentera. Pendant ce temps, la branche +principale du programme mettra du random dans le compteur, en +espérant perturber l'autre branche. + +\lstinputlisting[language=c]{code/thread-demo.c} + +Voilà, nous avons là deux \textsl{race conditions} qui +peuvent avoir des effets pervers~: Ils vont +effectivement se marcher sur les pieds. + +Dans le thread +(la fonction \texttt{fil}), le +compteur est incrémenté, \textbf{puis} il est affiché. +Si la branche principale poke du random dans le compteur +entre ces deux opérations, *paf* le chien. +Et réciproquement, si le \texttt{main} pose son aléa dans +le compteur, \textbf{puis} l'affiche, cet aléa peut avoir +été incrémenté par l'autre partie du processus. + + +% % ---------------------------------------------------------------- \section{ITC} @@ -39,12 +69,7 @@ Comment allons-nous procéder\footnote{Et c'est une vraie question !} ? Une première piste : http://tools.ietf.org/html/rfc3117 -% ---------------------------------------------------------------- -\section{Un exemple} - -XXX\index{XXX} - -% ---------------------------------------------------------------- +% ---------------------------------------------------------------- diff --git a/code/thread-demo.c b/code/thread-demo.c new file mode 100644 index 0000000..1c0df69 --- /dev/null +++ b/code/thread-demo.c @@ -0,0 +1,32 @@ +/* thread-demo */ + +#include +#include +#include + +/* ---------------------------------------------------- */ +int compteur; /* shared variable */ +/* ---------------------------------------------------- */ +int fil(void *ptr) +{ +int foo; + +for (foo=0; foo<100; foo++) { + compteur++; + printf("= %d\n", compteur); + sleep(1); + } +return 0; +} +/* --------------------------------------------------- */ +int main(int argc, char *argv[]) +{ +int foo; + +for (foo=0; foo<20; foo++) { + compteur = rand()%1000; + printf("r %d\n", compteur); + sleep(7); + } +return 0; +} diff --git a/main.tex b/main.tex index 9d6cdd9..13967d5 100644 --- a/main.tex +++ b/main.tex @@ -62,13 +62,16 @@ d'un nouveau paquet plus approprié. Ensuite, je passe pas mal de temps à téléglander, et je tombe parfois sur de petites perles que je m'empresse d'incruster dans un chapitre. - Et pour finir, il y a quelques ouvrages de référence. Citons, par exemple, le K\&R, ceux de Christophe Blaess, le Christian Pelissier, et bien d'autres. + \vspace{3em} -Your mileage may vary\dots +Le code \LaTeX{} et les fichiers d'exemples sont disponibles +en ligne sur le site du Tetalab. Your mileage may vary\dots + +\texttt{https://git.tetalab.org/tTh/TetaTricks} % ==============================================================