Compare commits

...

3 Commits

Author SHA1 Message Date
tth 7dea31c24c small patches for a grey sunday 2022-04-03 11:56:49 +02:00
tth 53c0dfbf8a more bla... 2022-04-01 14:23:45 +02:00
tth 89abb2bb04 + Zenitram 2022-03-18 21:40:44 +01:00
16 changed files with 156 additions and 27 deletions

View File

@ -43,6 +43,9 @@ $
\end{verbatim}
% --------------------------------------------------------
%
% https://fortranwiki.org/fortran/show/Command-line+arguments
%
\section{Args \& Env}
Un fort beau programme, mais il est un peu fermé au monde extérieur.
@ -75,37 +78,58 @@ il faut la convertir avant usage.
call getarg(2, string) ; read (string, *) cx
\end{verbatim}
% --------------------------------------------------------
\subsection{Tableaux}
\section{Tableaux}
Rank, Size, \textsc{allocatable}, toussa\dots
Amies du C, soyez d'entrée prévenues, en Fortran, l'indice
par défaut du premier élément d'un tablesu est \textbf{1},
mais cette valeur peut être modifiée à la déclaration
du tableau.
% --------------------------------------------------------
\subsection{Fichiers}
\section{Fichiers}
Pour qui vient du C et de la philosophie Unix, la gestion
des fichiers en Fortran est assez déroutante%
\footnote{Par contre, pour un dino des \textsl{big irons}\dots}.
Il semble qu'il y ait deux concepts orthogonaux.
Open, Read, Write, Inquire, toussa\dots
\textit{Open, Read, Write, Inquire, toussa\dots}
% --------------------------------------------------------
\subsection{Modules}
\section{Modules}
Une notion essentielle, à mon avis, pour écrire des programmes
au-delà de 104 lignes. Oui, j'avoue, j'ai bien changé depuis
l'époque où je confectionnait des procédures \textsl{monobloc}
de 1337 lignes, avec une bonne centaine de \texttt{GOTO} dedans.
% --------------------------------------------------------
\section{Random et Aléa}
La dernière ligne va vous étonner.
\begin{verbatim}
integer, dimension(3) :: tarray
integer :: t3
real :: dummy
call itime(tarray)
t3 = 3600*tarray(1) + 60*tarray(2) + tarray(3)
write(0, '(A,3I3,A,I6)') "sranding: ", tarray, " --> ", t3
call srand(t3)
! after initializing the random generator engine,
! you MUST use it for initializing the initializer
dummy = rand()
\end{verbatim}
% --------------------------------------------------------
\subsection{Images ?}
\section{Images}
Plplot semble être un bon choix pour commencer.

View File

@ -35,6 +35,8 @@ pinpin0: çhârsèt ?
/SET autoclose_windows OFF
\end{verbatim}
\textbf{Question :} comment enregistrer un chan' ?
% ==============================================================
\section{hexchat}
\index{hexchat}

View File

@ -216,7 +216,7 @@ d'un fichier \texttt{.mid} ?
\lstinputlisting[language=perl]{code/midifile.pl}
Voilà.
Voilà enfin du code qui n'est pas fini\dots
% ---------------------------------------------------------
@ -233,5 +233,7 @@ OSC\index{OSC} (page \pageref{chap:OSC}) semble une possibilité
pour aller au-delà. Mais, \textsl{amho}, rien ne pourra vraiment
remplacer le midi tel que nous le connaissons depuis les années 80.
You can read more about USB MIDI here:
https://www.midi.org/midi-articles/basic-of-usb
% ---------------------------------------------------------

View File

@ -15,6 +15,19 @@ Je songe ensuite aborder certains aspects de la théorie du
signal, dans le but pratique de brotcher du son.
\section{En vrac}
\begin{verbatim}
double stddev(const auto *x, int N)
{
double sum = 0, sum_sq = 0;
for (int i = 0; i < N; i++) {
sum += x[i];
sum_sq += x[i]*x[i];
}
return sqrt((sum_sq - sum*sum/N)/(N-1));
}
\end{verbatim}

View File

@ -6,7 +6,11 @@ Il existe bien entendu des outils \textsl{mainstream}
tels que le classique \texttt{gdb}\index{gdb}, mais il en existe
une foultitude d'autres, injustement méconnus.
Nous allons en voir quelques-uns en essayant de nous baser
sur des cas réels.
sur des cas quasiment réels.
Et non, je ne vais pas vous parler du vénérable \texttt{ddt}
des antiques systèmes CP/M, ni même du \texttt{debug} des
anciens DOS, bien que tous deux méritent votre attention.
% ==============================================================

View File

@ -133,10 +133,13 @@ l'IRC\index{IRC} \texttt{freenode\#paulla} \textit{:)}
\textsl{Perform generic image processing operations, through the G'MIC
language interpreter. gmic: GREYC's Magic for Image Computing.}
\index{XXX}
Gmic se base sur une grosse bibliothèque de fonctions écrite
en \texttt{C++}\index{C++} dont l'utilisation est bien
docummentée dans le livre ???\index{XXX}
Existe aussi en plugin pour Gimp\index{Gimp} avec une interface
pleine de curseurs et de boutons.
pleine de curseurs et de boutons, qui facilite (ou pas) l'exploration
des possibles.
% -------------------------------------------------------------------
@ -161,7 +164,7 @@ for ((y=0; y<250; y++)) {
Comment faire un \textsl{resize} avec NetPBM ?
Est-il nécessaire d'apprendre la bibliothèque de fonctions
\texttt{libnetpbm} ?
\texttt{libnetpbm}\footnote{Réponse: oui.} ?
% -------------------------------------------------------------------

View File

@ -10,26 +10,37 @@ Mais il est probable que ce concept existait déja dans
d'autres mondes, peut-être avec \textsl{AmigaOS} ou
\textsl{VAX/VMS}\index{VMS}\dots
Une bibliothèque partagé (aka \texttt{.so}) est une collection
de fonctions, chargée une seule fois en mémoire centrale,
mais qui peut être utilisée par plusieurs programmes en
même temps.\index{.so}
Et c'est en partie sur ce concept qu'est basé le premier
mécanisme que nous allon découvrir~:
mécanisme que nous allons découvrir~:
\texttt{dlopen} et sa petite famille.
% ------------------------------------
\section{Mécanique}
\section{Mécanisme}
\index{dlopen}
\index{dlopen} \index{dlclose}
\texttt{dlclose, dlopen, dlmopen - open and close a shared object}
\begin{quote}
The function dlopen() loads the dynamic shared object (shared library)
The function dlopen() loads the dynamic shared object (shared library)
file named by the null-terminated string filename and returns an opaque
"handle" for the loaded object. This handle is employed with other
functions in the dlopen API, such as dlsym(3), dladdr(3), dlinfo(3),
"handle" for the loaded object. This handle is employed with other
functions in the dlopen API, such as dlsym(3), dladdr(3), dlinfo(3),
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
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.
% ------------------------------------
\section{Un exemple ?}
@ -42,7 +53,8 @@ un tableau de quatre nombres flottants, et que nous souhaitons
proposer un affichage de ce tableau modifiable à volonté.
Nous allons donc écrire notre fonction personnelle d'affichage
dans un fichier \textsc{.c} indépendant (le plugiciel) et qui
dans un fichier \textsc{.c} indépendant
(ci-après dénommé «le plugiciel») et qui
sera chargé dynamiquement au \textsl{run-time} par le logiciel
principal (l'appelant).
@ -54,12 +66,16 @@ lecteurs, à titre d'exercice.
\lstinputlisting[language=c]{code/plugiciel.c}
On peut difficelement faire plus simple pour une première
approche, mais attendez la suite.
On peut difficilement faire plus simple pour une première
approche, mais attendez la suite des opérations,
la cinquième va vous étonner.
\subsection{L'appelant}
Voyons maintenant comment mettre ça en œuvre depuis le programme
principal.
Nous supposerons que le binaire du plugin est dans le répertoire
courant.
\lstinputlisting[language=c]{code/appelant.c}
@ -83,7 +99,9 @@ tth@fubar:~/Documents/TetaTricks/code$
\section{Autres langages}
En Perl\index{Perl} ?
En Fortran\index{Fortran} ?
% -------------- to be continued

View File

@ -200,7 +200,7 @@ Comment scanner un /24 pour y découvrir les machines ?
\section{netcat}
\index{netcat}
\textbf{Attention :} Il existe au moins deux variantes de netcat
\textbf{Attention :} Il existe au moins $N$ variantes de netcat
en circulation, bien entendu avec des options et des
comportements différents.

34
chap/scripting.tex Normal file
View File

@ -0,0 +1,34 @@
\chapter{scripting}
\section{Awk} \index{Awk}
Quelques \textsl{oneliners} de bon aloi pour vous donner
une idée du langage\dots
\begin{verbatim}
cat { print $0 } or just 1
grep pattern /pattern/
head -n 5 NR <= 5
cut -f1 { print $1 }
tr a-z A-Z { print toupper($0) }
sed 's/hi/ho/g' gsub(/hi/,"ho")
wc -l END { print NR }
\end{verbatim}
% ===============================================================
\subsection{Un exemple simple}
À partir d'un jeu de données structurées, nous allons générer un
fichier \texttt{.inc} contenant un objet pour Povray\index{povray}.
Un cas d'école : un élément par ligne, les valeurs séparées par
des espaces.
\lstinputlisting[]{code/awk/dataset}
Ces données sont les coordonnées \textsc{xyz} et le rayon d'une
petite collection de bubulles. Pratiquement, une représentation
sommaire d'une sphère de povray.
% ===============================================================

View File

@ -91,8 +91,8 @@ sur la page \pageref{chap:MIDI}.
TODO\index{XXX}
%------------------------------------------------------------------
%
% bienvenu dans le monde de LP
\section{pulseaudio}
\index{pulseaudio}
\label{pulseaudio}
@ -102,7 +102,7 @@ même falloir y passer : ce machin prétenduement
\textsl{michu compliant}\index{Michu}
a parfois, voire même souvent, tendance à se mettre en travers
du chemin des honnètes gens%
\footnote{Du moins vers l'année 2014}.
\footnote{Du moins vers les années 2014/2019}.
%------------------------------------------------------------------
\section{Jack}
@ -159,6 +159,13 @@ voir qu'elle est à deux niveaux.
https://www.xiph.org/ao/doc/drivers.html
\subsection{Choisir la sortie}
Pour choisr comment et vers quelle prise physique libao va envoyer
le son, il y a deux choix à faire. La partie logicielle d'une part
(aixs, oss, alsa, jack, sndio\dots)
et la partie matérielle (jack standard, casque audio USB\dots).
%------------------------------------------------------------------
\section{Portaudio} \label{Portaudio} \index{Portaudio}

View File

@ -32,7 +32,7 @@ the implementation makes use of the FUSE (Filesystem in Userspace)
kernel module. The practical effect of this is that the end user can
seamlessly interact with remote files being securely served over SSH
just as if they were local files on his/her computer. On the remote
computer the SFTP subsystem of SSH is used.}
computer the SFTP\index{sftp} subsystem of SSH is used.}
Hélas, ça ne marche pas trop bien depuis un
OpenBSD\index{OpenBSD}\footnote{OpenBSD 5.5 sur sparc64} :

View File

@ -152,6 +152,16 @@ VLC peut éventuellement aussi être utilisé comme un outil
de streaming, voyez ça page \pageref{streamvlc}, bon courage.
% --------------------------------------------------------------------
\section{Mediainfo}
\begin{quote}
MediaInfo\footnote{by the famous Zenitram of DaLFP.} is a utility
used for retrieving technical information and other
metadata about audio or video files.
\end{quote}
% --------------------------------------------------------------------
\section{Autres trucs}

View File

@ -6,7 +6,7 @@
% ==============================================================
\section{Apache} \index{Apache}
Le grand classique.
Le grand classique. Que nous ne verrons pas pour le moment.
% ==============================================================
@ -22,6 +22,13 @@ root@ramen:~# service lighttpd force-reload
root@ramen:~#
\end{verbatim}
\textbf{Q:} Sur une installation fraiche, la racine du site est
en 403\index{403} ?\linebreak
\textbf{R:} Par défaut le listing des répertoires vides
(sans \texttt{index.html}) est interdit. Pour changer ça, il faut
\texttt{\# lighttpd-enable-mod dir-listing} et
\texttt{\# service lighttpd force-reload}, voilà.
% ==============================================================
\section{Custom made}

3
code/awk/dataset Normal file
View File

@ -0,0 +1,3 @@
17 9 4 1.5
11 0.8 2.3 0.989
0 0 0 1

0
code/awk/mkunion.awk Normal file
View File

View File

@ -119,6 +119,8 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
% \input{chap/SCSI}
\input{chap/X11}
\input{chap/Fortran}
\input{chap/scripting}
% \input{chap/GMP}
\input{chap/Python}
\input{chap/dino}