more bla
This commit is contained in:
parent
da080e47e3
commit
2a24703136
@ -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}
|
||||
|
@ -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
|
||||
|
||||
% ====================================================================
|
||||
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
\index{backup}
|
||||
|
||||
% https://blog.flozz.fr/2023/10/15/borgbackup-sauvegarde-sur-une-machine-distante-via-ssh/
|
||||
|
||||
|
||||
% ===============================================================
|
||||
\section{Geb...}
|
||||
|
23
chap/bdd.tex
23
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 (<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}
|
||||
|
@ -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.
|
||||
|
||||
% ==============================================================
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
||||
% ------------------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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}
|
||||
|
||||
|
@ -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
3
code/.gitignore
vendored
@ -19,4 +19,7 @@ plugiciel.so
|
||||
send-osc
|
||||
thread-demo
|
||||
voirenv
|
||||
|
||||
xform/yesyno
|
||||
|
||||
debug/spy_getenv
|
||||
|
@ -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__
|
Loading…
Reference in New Issue
Block a user