This commit is contained in:
tTh 2023-11-29 14:12:03 +01:00
parent da080e47e3
commit 2a24703136
12 changed files with 119 additions and 48 deletions

View File

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

View File

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

View File

@ -2,6 +2,8 @@
\index{backup}
% https://blog.flozz.fr/2023/10/15/borgbackup-sauvegarde-sur-une-machine-distante-via-ssh/
% ===============================================================
\section{Geb...}

View File

@ -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 (<SOURCE>) {
@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}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

3
code/.gitignore vendored
View File

@ -19,4 +19,7 @@ plugiciel.so
send-osc
thread-demo
voirenv
xform/yesyno
debug/spy_getenv

View File

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