Compare commits

..

No commits in common. "7dea31c24c871dda75fe985d06c021b5c62bcad4" and "fa3b83fa25cf8bbbd7dc4a495439dceb97890256" have entirely different histories.

16 changed files with 27 additions and 156 deletions

View File

@ -43,9 +43,6 @@ $
\end{verbatim} \end{verbatim}
% -------------------------------------------------------- % --------------------------------------------------------
%
% https://fortranwiki.org/fortran/show/Command-line+arguments
%
\section{Args \& Env} \section{Args \& Env}
Un fort beau programme, mais il est un peu fermé au monde extérieur. Un fort beau programme, mais il est un peu fermé au monde extérieur.
@ -78,58 +75,37 @@ il faut la convertir avant usage.
call getarg(2, string) ; read (string, *) cx call getarg(2, string) ; read (string, *) cx
\end{verbatim} \end{verbatim}
% -------------------------------------------------------- % --------------------------------------------------------
\section{Tableaux} \subsection{Tableaux}
Rank, Size, \textsc{allocatable}, toussa\dots 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.
% -------------------------------------------------------- % --------------------------------------------------------
\section{Fichiers} \subsection{Fichiers}
Pour qui vient du C et de la philosophie Unix, la gestion Pour qui vient du C et de la philosophie Unix, la gestion
des fichiers en Fortran est assez déroutante% des fichiers en Fortran est assez déroutante%
\footnote{Par contre, pour un dino des \textsl{big irons}\dots}. \footnote{Par contre, pour un dino des \textsl{big irons}\dots}.
Il semble qu'il y ait deux concepts orthogonaux. Il semble qu'il y ait deux concepts orthogonaux.
\textit{Open, Read, Write, Inquire, toussa\dots} Open, Read, Write, Inquire, toussa\dots
% -------------------------------------------------------- % --------------------------------------------------------
\section{Modules} \subsection{Modules}
Une notion essentielle, à mon avis, pour écrire des programmes Une notion essentielle, à mon avis, pour écrire des programmes
au-delà de 104 lignes. Oui, j'avoue, j'ai bien changé depuis au-delà de 104 lignes. Oui, j'avoue, j'ai bien changé depuis
l'époque où je confectionnait des procédures \textsl{monobloc} l'époque où je confectionnait des procédures \textsl{monobloc}
de 1337 lignes, avec une bonne centaine de \texttt{GOTO} dedans. 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}
% -------------------------------------------------------- % --------------------------------------------------------
\section{Images} \subsection{Images ?}
Plplot semble être un bon choix pour commencer. Plplot semble être un bon choix pour commencer.

View File

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

View File

@ -216,7 +216,7 @@ d'un fichier \texttt{.mid} ?
\lstinputlisting[language=perl]{code/midifile.pl} \lstinputlisting[language=perl]{code/midifile.pl}
Voilà enfin du code qui n'est pas fini\dots Voilà.
% --------------------------------------------------------- % ---------------------------------------------------------
@ -233,7 +233,5 @@ OSC\index{OSC} (page \pageref{chap:OSC}) semble une possibilité
pour aller au-delà. Mais, \textsl{amho}, rien ne pourra vraiment pour aller au-delà. Mais, \textsl{amho}, rien ne pourra vraiment
remplacer le midi tel que nous le connaissons depuis les années 80. 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,19 +15,6 @@ Je songe ensuite aborder certains aspects de la théorie du
signal, dans le but pratique de brotcher du son. 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,11 +6,7 @@ Il existe bien entendu des outils \textsl{mainstream}
tels que le classique \texttt{gdb}\index{gdb}, mais il en existe tels que le classique \texttt{gdb}\index{gdb}, mais il en existe
une foultitude d'autres, injustement méconnus. une foultitude d'autres, injustement méconnus.
Nous allons en voir quelques-uns en essayant de nous baser Nous allons en voir quelques-uns en essayant de nous baser
sur des cas quasiment réels. sur des cas 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,13 +133,10 @@ l'IRC\index{IRC} \texttt{freenode\#paulla} \textit{:)}
\textsl{Perform generic image processing operations, through the G'MIC \textsl{Perform generic image processing operations, through the G'MIC
language interpreter. gmic: GREYC's Magic for Image Computing.} language interpreter. gmic: GREYC's Magic for Image Computing.}
Gmic se base sur une grosse bibliothèque de fonctions écrite \index{XXX}
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 Existe aussi en plugin pour Gimp\index{Gimp} avec une interface
pleine de curseurs et de boutons, qui facilite (ou pas) l'exploration pleine de curseurs et de boutons.
des possibles.
% ------------------------------------------------------------------- % -------------------------------------------------------------------
@ -164,7 +161,7 @@ for ((y=0; y<250; y++)) {
Comment faire un \textsl{resize} avec NetPBM ? Comment faire un \textsl{resize} avec NetPBM ?
Est-il nécessaire d'apprendre la bibliothèque de fonctions Est-il nécessaire d'apprendre la bibliothèque de fonctions
\texttt{libnetpbm}\footnote{Réponse: oui.} ? \texttt{libnetpbm} ?
% ------------------------------------------------------------------- % -------------------------------------------------------------------

View File

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

View File

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

View File

@ -1,34 +0,0 @@
\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} TODO\index{XXX}
%------------------------------------------------------------------ %------------------------------------------------------------------
%
% bienvenu dans le monde de LP
\section{pulseaudio} \section{pulseaudio}
\index{pulseaudio} \index{pulseaudio}
\label{pulseaudio} \label{pulseaudio}
@ -102,7 +102,7 @@ même falloir y passer : ce machin prétenduement
\textsl{michu compliant}\index{Michu} \textsl{michu compliant}\index{Michu}
a parfois, voire même souvent, tendance à se mettre en travers a parfois, voire même souvent, tendance à se mettre en travers
du chemin des honnètes gens% du chemin des honnètes gens%
\footnote{Du moins vers les années 2014/2019}. \footnote{Du moins vers l'année 2014}.
%------------------------------------------------------------------ %------------------------------------------------------------------
\section{Jack} \section{Jack}
@ -159,13 +159,6 @@ voir qu'elle est à deux niveaux.
https://www.xiph.org/ao/doc/drivers.html 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} \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 kernel module. The practical effect of this is that the end user can
seamlessly interact with remote files being securely served over SSH seamlessly interact with remote files being securely served over SSH
just as if they were local files on his/her computer. On the remote just as if they were local files on his/her computer. On the remote
computer the SFTP\index{sftp} subsystem of SSH is used.} computer the SFTP subsystem of SSH is used.}
Hélas, ça ne marche pas trop bien depuis un Hélas, ça ne marche pas trop bien depuis un
OpenBSD\index{OpenBSD}\footnote{OpenBSD 5.5 sur sparc64} : OpenBSD\index{OpenBSD}\footnote{OpenBSD 5.5 sur sparc64} :

View File

@ -152,16 +152,6 @@ VLC peut éventuellement aussi être utilisé comme un outil
de streaming, voyez ça page \pageref{streamvlc}, bon courage. 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} \section{Autres trucs}

View File

@ -6,7 +6,7 @@
% ============================================================== % ==============================================================
\section{Apache} \index{Apache} \section{Apache} \index{Apache}
Le grand classique. Que nous ne verrons pas pour le moment. Le grand classique.
% ============================================================== % ==============================================================
@ -22,13 +22,6 @@ root@ramen:~# service lighttpd force-reload
root@ramen:~# root@ramen:~#
\end{verbatim} \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} \section{Custom made}

View File

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

View File

View File

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