more blabla again and again

This commit is contained in:
tth 2020-11-25 14:24:19 +01:00
parent 76c10fe9f4
commit 8684520c5a
7 changed files with 135 additions and 14 deletions

View File

@ -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}
<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}
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}
@ -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

View File

@ -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.

View File

@ -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 ?
% ==============================================================

View File

@ -4,6 +4,8 @@
\chapter{Gnuplot}
\index{Gnuplot}\label{chap:gnuplot}
Gnuplot - an interactive plotting program
\section{Exemple : le phytotron}
\index{phytotron}

View File

@ -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}
% ----------------------------------------------------------------
% ----------------------------------------------------------------

32
code/thread-demo.c Normal file
View 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;
}

View File

@ -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}
% ==============================================================