Compare commits
3 Commits
c3e227f472
...
2a24703136
Author | SHA1 | Date | |
---|---|---|---|
|
2a24703136 | ||
|
da080e47e3 | ||
|
72892afeff |
@ -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
|
||||
|
||||
% ====================================================================
|
||||
|
||||
|
@ -135,6 +135,9 @@ la chose\dots
|
||||
\subsection{Timestamp} \index{timestamp}
|
||||
|
||||
Comme promis un peu plus haut, le code est très simple.
|
||||
C'est juste dommage qu'une fonction aussi utile ne fasse
|
||||
pas partie de la \textsl{stdlib} du langage C\index{C},
|
||||
alors qu'elle le mérite.
|
||||
|
||||
\lstinputlisting[language=c]{code/dtime.c}
|
||||
|
||||
|
237
chap/R.tex
Normal file
237
chap/R.tex
Normal file
@ -0,0 +1,237 @@
|
||||
\chapter{R}
|
||||
\index{R}
|
||||
|
||||
% new: Mon Oct 9 07:44:09 UTC 2023
|
||||
|
||||
% https://raw.githubusercontent.com/wurli/r-best-practice/main/cheatsheet.jpg
|
||||
|
||||
% ======================================================================
|
||||
|
||||
Je n'ai certainement pas la prétention de vous enseigner
|
||||
les arcanes du \textsl{R project},
|
||||
je suis (octobre 2023) en pleine périoe de découverte.
|
||||
Mais j'ai déja un projet concret en tête, et ce chapitre sera,
|
||||
dans un premier temps, composé de mes notes de voyage.
|
||||
|
||||
\begin{quote}
|
||||
R is a language which bears a passing resemblance to the S language
|
||||
developed at AT\&T Bell Laboratories.
|
||||
It provides support for a variety of statistical and graphical analyses.
|
||||
R is a true computer language which contains a number of control-flow
|
||||
constructions for iteration and alternation.
|
||||
It allows users to add additional functionality by defining new functions.
|
||||
\end{quote}
|
||||
|
||||
% ======================================================================
|
||||
\section{Les bases}
|
||||
|
||||
Le caractère \texttt{>} est le prompt de R, il vous invite à taper
|
||||
des commandes afin qu'il vous explique le sens de la vie.
|
||||
On peut définir des variables, leur donner une valeur et faire des calculs
|
||||
avec ces variables,
|
||||
ce qui est bien suffisant pour commencer. Démonstration~:
|
||||
|
||||
\begin{verbatim}
|
||||
> a <- 22
|
||||
> b <- 7
|
||||
> a ; b
|
||||
[1] 22
|
||||
[1] 7
|
||||
> a / b
|
||||
[1] 3.142857
|
||||
\end{verbatim}
|
||||
|
||||
Les choses semblent simples, nous avons approximé $\pi$.
|
||||
Les deux premières lignes affectent des valeurs aux variables a et b.
|
||||
La troisième demande l'affichage de ces variables, et la quatrimème
|
||||
fait le calcul du nombre qu'il faut apprendre aux sages..
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{Variables}
|
||||
|
||||
Elles sont auto-vivifiantes\footnote{Si quelqu'un a un meilleur terme,
|
||||
je sui preneur}, c'est-à-dire qu'elles existent dès qu'elles
|
||||
sont référencées, il n'y a pas de déclaration préalable à faire.
|
||||
|
||||
Enfin, avec R, il ne faudrait pas parler de variables, mais
|
||||
d'objets, lesquels contenant les variables.
|
||||
|
||||
Ces objets/variables peuvent être de différents types : chaines de caractères,
|
||||
valeurs numériques, booléens\dots
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
|
||||
\subsection{Builtins}
|
||||
|
||||
Quelques fonctions de base, plus ou moins vaguement expliquées.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
\begin{tabular}{|l|p{7cm}|}
|
||||
\hline
|
||||
\textbf{Fonction} & \textbf{Signification} \\
|
||||
\hline
|
||||
foo <- 3.14159 & Affectation d'une valeur à une variable \\
|
||||
ls() & Liste les objets actuellement chargé. \\
|
||||
help(foobar) & Avoir de l'aide sur la chose \textsl{foobar}, %
|
||||
abréviation: ?foobar \\
|
||||
class(pixel) & Classe de l'objet (numeric, data.frame, ...) \\
|
||||
str(foobar) & Information sur l'objet 'foobar' \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
|
||||
\subsection{Scripting}
|
||||
|
||||
\textbf{R --vanilla --quiet < mon-script.R}
|
||||
|
||||
La magie du shebang\index{shebang}
|
||||
|
||||
% Heredoc ?
|
||||
|
||||
% ======================================================================
|
||||
\section{Un cas concret}
|
||||
|
||||
Nous disposons d'un fichier SSV
|
||||
(Space Separated Values)\footnote{C'est nouveau, ça vient de sortir.}
|
||||
provenant d'un système optico-numérique bi-dimensionnel multi-planaire
|
||||
(aka Webcam\index{Webcam}).
|
||||
Et nous voulons en tirer quelques chiffres et graphiques bien
|
||||
clinquants,
|
||||
par exemple les éventuels rapports entre le rouge et le bleu.
|
||||
Pour la facilité de la mise en page, nous allons utiliser un fichier
|
||||
contenant seulement huit lignes de données,
|
||||
alors qu'un cas réel en comprend quelques centaines de milliers.
|
||||
|
||||
Voici les quelques lignes de ce fichier~:
|
||||
|
||||
\begin{verbatim}
|
||||
X Y R G B
|
||||
0 0 0.000000 0.000000 0.000000
|
||||
240 0 3967.814941 1983.907471 0.000000
|
||||
480 0 7935.629883 3967.814941 0.000000
|
||||
720 0 11903.445312 5951.722656 0.000000
|
||||
0 240 0.000000 3967.814941 7935.629883
|
||||
240 240 3967.814941 5951.722656 7935.629883
|
||||
480 240 7935.629883 7935.629883 7935.629883
|
||||
720 240 11903.445312 9919.537109 7935.629883
|
||||
\end{verbatim}
|
||||
|
||||
Vous pouvez remarquer que les noms de colonnes sont sur la première
|
||||
ligne du fichier, et qu'il y a deux types de données~:
|
||||
les coordonnées x/y qui sont des nombres entiers, et les composantes
|
||||
de couleur (r/g/b) qui sont des valeurs flottantes.
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
Il nous faut maintenant charger ces données dans le logiciel.
|
||||
La fonction \texttt{read.delim} est là pour ça, il faut juste lui
|
||||
passer les options convenantes pour notre fichier de données~:
|
||||
signaler la présence de l'entête avec les noms de colonnes et
|
||||
le type du séparateur entre champs.
|
||||
|
||||
\begin{verbatim}
|
||||
> pixels <- read.delim("foo.txt", header=TRUE, sep=' ')
|
||||
> pixels
|
||||
X Y R G B
|
||||
1 0 0 0.000 0.000 0.00
|
||||
2 240 0 3967.815 1983.907 0.00
|
||||
3 480 0 7935.630 3967.815 0.00
|
||||
4 720 0 11903.445 5951.723 0.00
|
||||
5 0 240 0.000 3967.815 7935.63
|
||||
6 240 240 3967.815 5951.723 7935.63
|
||||
7 480 240 7935.630 7935.630 7935.63
|
||||
8 720 240 11903.445 9919.537 7935.63
|
||||
> class(pixels)
|
||||
[1] "data.frame"
|
||||
> pixels$G
|
||||
[1] 0.000 1983.907 3967.815 5951.723 3967.815 5951.723 7935.630 9919.537
|
||||
\end{verbatim}
|
||||
|
||||
Si vous avez fait cette manipulation, bravo, vous êtes maintenant
|
||||
un \textsl{data-scientist} reconnu. Mais il nous reste beaucoup
|
||||
de choses à apprendre. Le voyage n'est pas fini.
|
||||
Il est temps d'explorer (ou exploiter ?) un peu nos données.
|
||||
|
||||
|
||||
% ======================================================================
|
||||
|
||||
\section{Statistiques}
|
||||
|
||||
Oui, c'est un peu pour ça que \textbf{R} a été conçu.
|
||||
Hélas ce n'est pas un domaine qui m'est familier, alors ce que
|
||||
vous allez lire doit être pris avec des pincettes aussi bien
|
||||
du coté des maths sous-jacentes que de la méthodologie.
|
||||
|
||||
|
||||
|
||||
\begin{verbatim}
|
||||
> mean(pixels$R) ; mean(pixels$G)
|
||||
[1] 5951.723
|
||||
[1] 4959.769
|
||||
\end{verbatim}
|
||||
|
||||
% ======================================================================
|
||||
\section{Graphiques}
|
||||
|
||||
Bah c'est pas simple, alors j'ai activé le \textsl{rach-system} et je
|
||||
suis arrivé à ce petit truc qui me permet de faire de la
|
||||
\texttt{gif89a}\index{gif89a}, donc je suis content.
|
||||
Vous allez voir, c'est assez simple, mais le diable\index{Prada}
|
||||
se cache dans les détails, et un peu aussi dans la doc tortueuse.
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{x/y}
|
||||
|
||||
Un des classiques du genre.
|
||||
|
||||
\begin{verbatim}
|
||||
R --vanilla --quiet << __EOR__
|
||||
pixels <- read.delim("cumul.txt", header=TRUE, sep=' ')
|
||||
png(filename="cumul.png", width=640, height=480)
|
||||
plot(pixels\$X, pixels\$B, pch=".",
|
||||
main="$title", sub="tTh 2023",
|
||||
xlab="composante rouge",
|
||||
ylab="composante bleu")
|
||||
quit(save="no")
|
||||
__EOR__
|
||||
\end{verbatim}
|
||||
|
||||
Détaillons un peu le script~:
|
||||
comme dans l'exemple précédent, nous chargeons nos données dans un
|
||||
\textsl{data.frame}. Ensuite nous spécifions une sortie vers un
|
||||
fichier image au format PNG\index{PNG}, avec une taille d'image fixée.
|
||||
Finalement, nous traçons notre image avec l'instruction \texttt{plot}
|
||||
et ses nombreux paramêtres.
|
||||
Je vais détailler ceux qui sont utilisés dans cet exemple, et je vous rappelle
|
||||
que \texttt{help(plot)} est là pour vous aider.
|
||||
|
||||
\begin{itemize}
|
||||
\item \texttt{pch} : type de la plume utilisée
|
||||
\item \texttt{main} : titre principal de la page
|
||||
\item \texttt{sub} : sous-titre, placé tout en bas
|
||||
\item \texttt{xlab} : label de l'axe des X
|
||||
\item \texttt{ylab} : label de l'axe des Y
|
||||
\end{itemize}
|
||||
|
||||
Avec ça, nous pouvons déja faire quelgues diagrammes corrects
|
||||
\footnote{Voire même on peut tenter de la gif89a\index{gif89a}},
|
||||
mais d'autres paramêtres devraient retenir notre attention, comme
|
||||
la gestion des marges et des couleurs, comment exporter proprement
|
||||
vers \LaTeX, peut-on faire de la 3D\index{3D}, \dots
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
|
||||
\subsection{Histogramme}
|
||||
|
||||
hist(datas\$V3, breaks=50)
|
||||
|
||||
% ======================================================================
|
||||
|
||||
\section{Interface avec l'OS}
|
||||
|
||||
|
||||
|
||||
|
||||
% ======================================================================
|
||||
|
@ -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
|
||||
|
3
code/R/README.md
Normal file
3
code/R/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# R
|
||||
|
||||
Be warned, Only garbage here.
|
@ -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__
|
@ -17,6 +17,10 @@
|
||||
%
|
||||
% hot to have \begin{quote} in sans serif ?
|
||||
%
|
||||
\makeatletter
|
||||
\def\verbatim@font{\normalfont\ttfamily\small}
|
||||
\def\quote@font{\sffamily}
|
||||
\makeatother
|
||||
|
||||
\makeindex
|
||||
|
||||
@ -26,7 +30,7 @@
|
||||
%------ reglages des 'listings'
|
||||
\lstset{frame=single} % dessin d'un cadre autour du listing
|
||||
\lstset{basicstyle=\ttfamily\small}
|
||||
\lstset{aboveskip=1.0em,belowskip=1.0em}
|
||||
\lstset{aboveskip=0.7em,belowskip=0.7em}
|
||||
|
||||
\setcounter{tocdepth}{1} % XXX à regarder un de ces jours ?
|
||||
\pagestyle{plain}
|
||||
@ -36,11 +40,6 @@
|
||||
\setitemize[1]{label={\ding{87}}}
|
||||
\frenchbsetup{CompactItemize=false}
|
||||
|
||||
\makeatletter
|
||||
\def\verbatim@font{\normalfont\ttfamily\small}
|
||||
% XXX \def\quote@font{\sffamily}
|
||||
\makeatother
|
||||
|
||||
\title{Tricks pour mon ordinateur}
|
||||
\author{Thierry « tTh » Boudet}
|
||||
|
||||
@ -50,8 +49,6 @@
|
||||
% ==============================================================
|
||||
\chapter{Introduction}
|
||||
|
||||
Un nouveau nouvel ouvrage, en vrac.
|
||||
|
||||
Des notes informelles sur l'utilisation
|
||||
d'un ordinateur moderne, vous allez en avoir vraiment beaucoup.
|
||||
Mais elles sont en vrac, et surtout, elles sont reprises
|
||||
@ -131,7 +128,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
|
||||
\input{chap/scripting}
|
||||
\input{chap/Arduino}
|
||||
\input{chap/Basic}
|
||||
|
||||
\input{chap/R} % new octobre 2023
|
||||
% \input{chap/GMP}
|
||||
\input{chap/Python}
|
||||
\input{chap/dino}
|
||||
|
Loading…
Reference in New Issue
Block a user