more blabla again and again
This commit is contained in:
parent
76c10fe9f4
commit
8684520c5a
@ -1,8 +1,6 @@
|
|||||||
\chapter{Fedora}
|
\chapter{Fedora}
|
||||||
\label{chap:Fedora} \index{Fedora}
|
\label{chap:Fedora} \index{Fedora}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
\section{Gestion des paquets}
|
\section{Gestion des paquets}
|
||||||
|
|
||||||
@ -18,12 +16,29 @@ Pour chercher un binaire précis~:
|
|||||||
|
|
||||||
\texttt{\# dnf provides '*/interpolator'}
|
\texttt{\# dnf provides '*/interpolator'}
|
||||||
|
|
||||||
|
Pour installer un nouveau jouet~:
|
||||||
|
|
||||||
|
\texttt{\# dnf install gfortran}
|
||||||
|
|
||||||
|
\subsection{trucs}
|
||||||
|
|
||||||
|
<blz\_rg\_> 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}
|
\section{Firewall}
|
||||||
|
|
||||||
Krkrkr, UPD\index{UDP} est bloqué en entrée ? Wtf ?
|
Krkrkr, UDP\index{UDP} est bloqué en entrée ? Wtf ?
|
||||||
|
|
||||||
\textsf{\textsc{<doug713705> welcome to firewalld}}
|
\textsf{\textbf{<doug713705> 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}
|
\section{Include dir}
|
||||||
@ -42,7 +57,9 @@ portabilité est à vérifier.
|
|||||||
\section{Gni ?}\index{memtest86}
|
\section{Gni ?}\index{memtest86}
|
||||||
\label{memtest86:fedora}
|
\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
|
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
|
test approfondi de la RAM. DNF m'a permis de trouver le paquet
|
||||||
\texttt{memtest86+}, puis de l'installer (comme je procède
|
\texttt{memtest86+}, puis de l'installer (comme je procède
|
||||||
|
@ -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}
|
\section{Strace}\index{strace}
|
||||||
|
|
||||||
Strace permet de tracer les appels systèmes d'un processus.
|
Strace permet de tracer les appels systèmes d'un processus.
|
||||||
|
@ -25,6 +25,10 @@ Question : qui tombe à l'eau ?
|
|||||||
printf '\033]11;lemonchiffon2\a'
|
printf '\033]11;lemonchiffon2\a'
|
||||||
\end{verbatim}
|
\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}
|
\section{fdupes}
|
||||||
\index{fdupes}\label{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.
|
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 ?
|
||||||
|
|
||||||
|
|
||||||
|
% ==============================================================
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
\chapter{Gnuplot}
|
\chapter{Gnuplot}
|
||||||
\index{Gnuplot}\label{chap:gnuplot}
|
\index{Gnuplot}\label{chap:gnuplot}
|
||||||
|
|
||||||
|
Gnuplot - an interactive plotting program
|
||||||
|
|
||||||
\section{Exemple : le phytotron}
|
\section{Exemple : le phytotron}
|
||||||
\index{phytotron}
|
\index{phytotron}
|
||||||
|
|
||||||
|
@ -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 :
|
Et c'est là que les ennuis potentiels débarquent :
|
||||||
\textit{share the same global memory}, ce qui veut dire en gros
|
\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}
|
\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
|
Une première piste : http://tools.ietf.org/html/rfc3117
|
||||||
|
|
||||||
% ----------------------------------------------------------------
|
% ----------------------------------------------------------------
|
||||||
\section{Un exemple}
|
|
||||||
|
|
||||||
XXX\index{XXX}
|
|
||||||
|
|
||||||
% ----------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
32
code/thread-demo.c
Normal file
32
code/thread-demo.c
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/* thread-demo */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
/* ---------------------------------------------------- */
|
||||||
|
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;
|
||||||
|
}
|
7
main.tex
7
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
|
Ensuite, je passe pas mal de temps à téléglander, et je tombe
|
||||||
parfois sur de petites perles que je m'empresse d'incruster
|
parfois sur de petites perles que je m'empresse d'incruster
|
||||||
dans un chapitre.
|
dans un chapitre.
|
||||||
|
|
||||||
Et pour finir, il y a quelques ouvrages de référence.
|
Et pour finir, il y a quelques ouvrages de référence.
|
||||||
Citons, par exemple, le K\&R, ceux de Christophe Blaess,
|
Citons, par exemple, le K\&R, ceux de Christophe Blaess,
|
||||||
le Christian Pelissier, et bien d'autres.
|
le Christian Pelissier, et bien d'autres.
|
||||||
|
|
||||||
\vspace{3em}
|
\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}
|
||||||
|
|
||||||
|
|
||||||
% ==============================================================
|
% ==============================================================
|
||||||
|
Loading…
Reference in New Issue
Block a user