From 2a247031365f8892d34c6708423e578894f99f8f Mon Sep 17 00:00:00 2001 From: tTh Date: Wed, 29 Nov 2023 14:12:03 +0100 Subject: [PATCH] more bla --- chap/Basic.tex | 19 ++++++++++-- chap/GIT.tex | 6 ++-- chap/backups.tex | 2 ++ chap/bdd.tex | 23 +++++++++------ chap/debug.tex | 12 +++++++- chap/gif89a.tex | 3 +- chap/graphisme.tex | 12 ++++---- chap/hardware.tex | 8 ++++++ chap/plugins.tex | 9 ++++-- chap/shell.tex | 67 +++++++++++++++++++++++++++---------------- code/.gitignore | 3 ++ code/shell/heredoc.sh | 3 ++ 12 files changed, 119 insertions(+), 48 deletions(-) diff --git a/chap/Basic.tex b/chap/Basic.tex index 3c08485..a173856 100644 --- a/chap/Basic.tex +++ b/chap/Basic.tex @@ -1,13 +1,14 @@ % ---------------------------------------------------------- \chapter{Basic} -\index{dosbox}\label{chap:Basic} +\label{chap:Basic} +\index{dosbox}\index{Basic} % ==================================================================== % https://www.theregister.com/2023/03/28/nostalgic_for_basic/ % ==================================================================== -\section{BASIC} \index{BASIC} +% \section{BASIC} \index{BASIC} C'est probablement un des premiers langages interactifs utilisable par le peuple et les gens. Déja, à ce titre, dénonce que ce langage @@ -75,6 +76,20 @@ dans un livre imprimé\dots http://www.sdlbasic.altervista.org/main/ +% ==================================================================== +\section{Brandy} + +\index{BBC} \index{Acorn} + +https://www.bbcbasic.co.uk/index.html + +\begin{quote} +Brandy is an interpreter for BBC BASIC V, the dialect of BASIC that +Acorn Computers supplied with their ranges of desktop computers that +use the ARM processor such as the Archimedes and Risc PC, and is still +in use on these and compatibles. +\end{quote} + % ==================================================================== \section{FreeBASIC} \index{FreeBASIC} diff --git a/chap/GIT.tex b/chap/GIT.tex index b59a9bc..e80447b 100644 --- a/chap/GIT.tex +++ b/chap/GIT.tex @@ -102,9 +102,11 @@ Comment exclure par \textsl{.gitignore} tous les fichiers \texttt{foo.html} ? % ==================================================================== -\section{Krkrkr...} +\section{Trucs} -Tout cela semble bien compliqué. + +git archive --format tgz --prefix=my-project/ +--output /tmp/my-project.tar.gz HEAD % ==================================================================== diff --git a/chap/backups.tex b/chap/backups.tex index 88b3a56..85222ad 100644 --- a/chap/backups.tex +++ b/chap/backups.tex @@ -2,6 +2,8 @@ \index{backup} +% https://blog.flozz.fr/2023/10/15/borgbackup-sauvegarde-sur-une-machine-distante-via-ssh/ + % =============================================================== \section{Geb...} diff --git a/chap/bdd.tex b/chap/bdd.tex index 3e5f053..b760c04 100644 --- a/chap/bdd.tex +++ b/chap/bdd.tex @@ -11,6 +11,8 @@ % ---------------------------------------------------------------- \subsection{CLI} \index{cli} +Commandes internes: + % ---------------------------------------------------------------- \subsection{Libreoffice} \index{Libreoffice} @@ -21,8 +23,6 @@ \section{GDBM} \index{GDBM} -Alors là, carrément du vieux truc... - \begin{quote} GDBM - The GNU database manager. Includes dbm and ndbm compatibility. \end{quote} @@ -41,26 +41,31 @@ de bijection relationnelle ?}. use strict; use GDBM_File; - my $nomdb = "exemple.gdbm"; my (%DB, @champs); my ($user, $gecos); - open(SOURCE, "< /etc/passwd") or die "source $!"; tie(%DB, "GDBM_File", $nomdb, GDBM_WRCREAT, 0666) or die "gdbm $!"; while () { - @champs = split ":", $_; - $user = $champs[0]."\0"; - $gecos = $champs[4]."\0"; - $DB{$user} = $gecos; - } + @champs = split ":", $_; + $user = $champs[0]."\0"; + $gecos = $champs[4]."\0"; + $DB{$user} = $gecos; + } untie %DB; close SOURCE; 0; \end{verbatim} +Vous remarquerez que pour cet exemple, nous avons clef et valeur qui +sont du texte. Alors que DBM est prévu pour stocker des blocs de +binaire. Pour faciliter la récupération de ces chaines de caractères +par un hypothétique\footnote{Oui, je vais l'écrire bientôt.} programme +en C, le programme Perl rajoute un \texttt{'\textbackslash0'} +(fin de chaine) aux deux champs concernés. + % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \section{Postgresql} diff --git a/chap/debug.tex b/chap/debug.tex index 0e2b113..963699e 100644 --- a/chap/debug.tex +++ b/chap/debug.tex @@ -180,12 +180,22 @@ oh surprise, contient votre nom de login. Et justement, vous avez un programme sous la main que vous suspecter d'avoir un problème relationnel avec cette variable. -Il nius faut donc remplacer le getenv de la libc par notre propre +Il nous faut donc remplacer le getenv de la libc par notre propre version qui va écouter et exfiltrer l'utilisation de cette fonction. \lstinputlisting[language=C]{code/debug/spy_getenv.c} +Et à l'utilsation~: + +\begin{verbatim} +tth@redlady:~$ LD_PRELOAD=~/Devel/TetaTricks/code/debug/spy_getenv date +--getenv--> TZ --> (nil) +--getenv--> TZ --> (nil) +Tue Oct 17 08:55:01 CEST 2023 +tth@redlady:~$ +\end{verbatim} + Simple et efficace. % ============================================================== diff --git a/chap/gif89a.tex b/chap/gif89a.tex index d73ef95..86a6d22 100644 --- a/chap/gif89a.tex +++ b/chap/gif89a.tex @@ -32,6 +32,7 @@ et reçu le petit nom de \textsc{gif89a}. Il y a toujours la limitation à 256 couleurs et un seul niveau de transparence. Contraintes qui n'étaient pas si génantes que ça à l'époque vu les terminaux visés. +Contraintes qu'un artiste numérique peut comprendre et accepter. % ================================================================== @@ -49,7 +50,7 @@ Le \textsl{delay} est exprimé en millisecondes. On peut aussi rajouter l'option \texttt{-loop nnn}\footnote{aka: add Netscape loop extension to your GIF animation} avec nnn qui est le nombre de boucle que doit faire l'animation. La valeur 0 demandant une -boucle infinie. Deux fois\index{Vous connaissez Chuck Norris ?}. +boucle infinie. Deux fois\footnote{Vous connaissez Chuck Norris ?}. Et ensuite, vouv pouvez voir votre logo en flamme avec la commande \texttt{animate foo.gif} sur votre super écran diff --git a/chap/graphisme.tex b/chap/graphisme.tex index f889862..6f274cf 100644 --- a/chap/graphisme.tex +++ b/chap/graphisme.tex @@ -36,7 +36,7 @@ cryptiques pour moi. Donc, on y arrive. \end{center} \end{figure} -Ceci dit, une lecture attentive du code source\footnote{UTSL} permettra +Ceci dit, une lecture attentive du code source\footnote{UTSL!} permettra de contourner ces petits désagréments, et de rédiger quelques exemples d'utilisation amusants. @@ -49,7 +49,7 @@ d'utilisation amusants. \textbf{Persistence Of Vision} est un logiciel de raytracing qui existe depuis plus de trente ans. C'est un lointain descendant -de DKBtrace. +de DKBtrace. Mais le raytracing, c'est quoi ? \subsection{Caméra} @@ -72,8 +72,8 @@ lors du calcul de la séquence~: #fclose CL \end{verbatim} -Et la seconde, l'exploitation, ou plutôt la visualisation -des données~: +Et la seconde étape, l'exploitation, ou plutôt la visualisation +de ces données avec l'indémodable gnuplot\index{gnuplot}~: \begin{verbatim} #!/bin/bash @@ -137,7 +137,7 @@ initialiser un générateur~: \texttt{\#declare RND = seed(13.37);} -Vous noterez au passage le fort degré de ce délicieux Corbière que je +Vous noterez au passage le fort degré alcolique de ce délicieux Corbière que je déguste en ce moment même. Ensuite, pour obtenir le résultat du tirage, on utilise le \textsl{handler} que l'on vient d'obtenir~: @@ -187,7 +187,7 @@ transform {VIRGINIA} \section{Avec Fortran} -plplot +plplot\index{plplot} est la piste à explorer. % ------------------------------------------------ diff --git a/chap/hardware.tex b/chap/hardware.tex index 538adc5..de849eb 100644 --- a/chap/hardware.tex +++ b/chap/hardware.tex @@ -96,6 +96,8 @@ est la limite\footnote{Comme à peu près tout dans la vie.} périphérique \texttt{/dev/parport} +Question: comment faire du \textsl{bitbanging} ? + % ----------------------------------------------------------- \section{Disques durs} @@ -167,6 +169,12 @@ filesystems}\footnote{You can tune a fs, but you can't tuna fish}. % ----------------------------------------------------------- +\section{Sensors} \index{sensors} + +L'outil pour connaitre la température de votre CPU surmené. + +% ----------------------------------------------------------- + \section{Interface réseau}\index{NIC} On a parfois besoin de savoir dans quel état est une interface diff --git a/chap/plugins.tex b/chap/plugins.tex index 3523a28..7d8d057 100644 --- a/chap/plugins.tex +++ b/chap/plugins.tex @@ -35,7 +35,8 @@ and dlclose(). \end{quote} Traduit en clair, la fonction \texttt{dlopen} permet de charger -manuellement un \texttt{.so} en mémoire centrale, au lieu de +manuellement une bibliothèque partagée (un \texttt{.so}) +en mémoire centrale, au lieu de laisser faire le loader (ld.so) automatiquement au lancement d'un binaire. la fonction \texttt{dlclose} va, elle, vidanger la zone mémoire dans laquelle est le plugin. @@ -62,7 +63,7 @@ principal (l'appelant). C'est ici que nous trouverons le code actif de l'exemple, l'utilité de notre \textsl{usecase} reste à déterminer par nos -lecteurs, à titre d'exercice. +lecteurs, mais seulement à titre d'exercice. \lstinputlisting[language=c]{code/plugiciel.c} @@ -75,7 +76,9 @@ la cinquième va vous étonner. Voyons maintenant comment mettre ça en œuvre depuis le programme principal. Nous supposerons que le binaire du plugin est dans le répertoire -courant. +courant. Pour les autres cas, il faut jouer avec la variable +d'environnement \texttt{LD\_LIBRARY\_PATH} (cf man dlopen(3)) ou +le fichier \texttt{/etc/ld.so.cache} (cf man ldconfig(8)). \lstinputlisting[language=c]{code/appelant.c} diff --git a/chap/shell.tex b/chap/shell.tex index ccceeb6..ac47f36 100644 --- a/chap/shell.tex +++ b/chap/shell.tex @@ -50,6 +50,8 @@ et ensuite l'utilisation d'outils extérieurs\footnote{Grep, Sed, Awk, BwBasic...} divers. C'est \textsl{très} efficace. +% -------------------------------------------------------------- + \subsection{Le \textsc{shebang}} \index{shebang} Le shebang, c'est ce couple de caractères \texttt{\#!} qui apparait @@ -92,6 +94,20 @@ $ % ============================================================== +\section{Structures de contrôle} + +% -------------------------------------------------------------- + +\subsection {Les tests} + +Deux éléments sont ils-égaux ? + +% -------------------------------------------------------------- + +\subsection {Les boucles} + +% ============================================================== + \section{Les fonctions} Une bonne manière de rendre votre code modulaire, et de réutiliser @@ -111,35 +127,38 @@ Et comment les utiliser~: \section{Heredoc} -Un nom difficile à traduire, peut-être par « document en place » ? +Un nom bien difficile à traduire, peut-être par « document en place » ? + \lstinputlisting{code/shell/heredoc.sh} \begin{verbatim} tth@redlady:~/Devel/TetaTricks$ code/shell/heredoc.sh - - 1 +--------------------------------------------------------------------+ - | +** *** + + + + | - 0.8 |-+.......**..........:.**.......:..........:.........sin(x).*******-| - | ** : : * : : : : | - 0.6 |-+....**..:..........:....**....:..........:..........:..........:+-| - | * : : * : : : : | - 0.4 |-+.**.....:..........:.......*..:..........:..........:..........:+-| - | * : : * : : : : | - 0.2 |-*........:..........:.........**..........:..........:..........:+-| - |* : : * : : : | - 0 |-+........:..........:..........:**........:..........:..........:+-| - | : : : * : : : *| - -0.2 |-+........:..........:..........:..**......:..........:..........:*-| - | : : : * : : * | - -0.4 |-+........:..........:..........:.....*....:..........:........**:+-| - | : : : * : : * : | - -0.6 |-+........:..........:..........:.......**.:..........:.....**...:+-| - | : : : *: : ** : | - -0.8 |-+........:..........:..........:..........**.........:..**......:+-| - | + + + + *** +** + | - -1 +--------------------------------------------------------------------+ - 0 1 2 3 4 5 6 + + Here Doc + + 1 +--------------------------------------------------------------------+ + | +** *** + + + + | + 0.8 |-+.......**..........:.**.......:..........:.........sin(x).*******-| + | ** : : * : : : : | + 0.6 |-+....**..:..........:....**....:..........:..........:..........:+-| + | * : : * : : : : | + 0.4 |-+.**.....:..........:.......*..:..........:..........:..........:+-| + | * : : * : : : : | + 0.2 |-*........:..........:.........**..........:..........:..........:+-| + |* : : * : : : | + 0 |-+........:..........:..........:**........:..........:..........:+-| + | : : : * : : : *| +-0.2 |-+........:..........:..........:..**......:..........:..........:*-| + | : : : * : : * | +-0.4 |-+........:..........:..........:.....*....:..........:........**:+-| + | : : : * : : * : | +-0.6 |-+........:..........:..........:.......**.:..........:.....**...:+-| + | : : : *: : ** : | +-0.8 |-+........:..........:..........:..........**.........:..**......:+-| + | + + + + *** +** + | + -1 +--------------------------------------------------------------------+ + 0 1 2 3 4 5 6 \end{verbatim} Je pense que l'exemple est assez parlant. diff --git a/code/.gitignore b/code/.gitignore index 9d6cf75..014e907 100644 --- a/code/.gitignore +++ b/code/.gitignore @@ -19,4 +19,7 @@ plugiciel.so send-osc thread-demo voirenv + xform/yesyno + +debug/spy_getenv diff --git a/code/shell/heredoc.sh b/code/shell/heredoc.sh index a57c382..dd2c438 100755 --- a/code/shell/heredoc.sh +++ b/code/shell/heredoc.sh @@ -1,7 +1,10 @@ #!/bin/bash +TITLE="Here Doc" + gnuplot << __EOC__ set term dumb set grid +set title "$TITLE" plot [x=0:pi*2] sin(x) __EOC__ \ No newline at end of file