small patches for a grey sunday
This commit is contained in:
parent
53c0dfbf8a
commit
7dea31c24c
@ -43,6 +43,9 @@ $
|
|||||||
\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.
|
||||||
@ -75,16 +78,20 @@ il faut la convertir avant usage.
|
|||||||
call getarg(2, string) ; read (string, *) cx
|
call getarg(2, string) ; read (string, *) cx
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
\subsection{Tableaux}
|
\section{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.
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
\subsection{Fichiers}
|
\section{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%
|
||||||
@ -95,7 +102,7 @@ Il semble qu'il y ait deux concepts orthogonaux.
|
|||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
\subsection{Modules}
|
\section{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
|
||||||
@ -103,7 +110,7 @@ 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.
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
\subsection{Random et Aléa}
|
\section{Random et Aléa}
|
||||||
|
|
||||||
La dernière ligne va vous étonner.
|
La dernière ligne va vous étonner.
|
||||||
|
|
||||||
@ -122,7 +129,7 @@ La dernière ligne va vous étonner.
|
|||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
\subsection{Images}
|
\section{Images}
|
||||||
|
|
||||||
Plplot semble être un bon choix pour commencer.
|
Plplot semble être un bon choix pour commencer.
|
||||||
|
|
||||||
|
@ -6,7 +6,11 @@ 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 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.
|
||||||
|
|
||||||
% ==============================================================
|
% ==============================================================
|
||||||
|
|
||||||
|
@ -133,10 +133,13 @@ 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.}
|
||||||
|
|
||||||
\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
|
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 ?
|
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} ?
|
\texttt{libnetpbm}\footnote{Réponse: oui.} ?
|
||||||
|
|
||||||
% -------------------------------------------------------------------
|
% -------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -10,15 +10,19 @@ 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 allon découvrir~:
|
mécanisme que nous allons découvrir~:
|
||||||
\texttt{dlopen} et sa petite famille.
|
\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}
|
\texttt{dlclose, dlopen, dlmopen - open and close a shared object}
|
||||||
|
|
||||||
@ -30,6 +34,13 @@ 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 ?}
|
||||||
@ -42,7 +53,8 @@ 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 (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
|
sera chargé dynamiquement au \textsl{run-time} par le logiciel
|
||||||
principal (l'appelant).
|
principal (l'appelant).
|
||||||
|
|
||||||
@ -54,12 +66,16 @@ lecteurs, à titre d'exercice.
|
|||||||
|
|
||||||
\lstinputlisting[language=c]{code/plugiciel.c}
|
\lstinputlisting[language=c]{code/plugiciel.c}
|
||||||
|
|
||||||
On peut difficelement faire plus simple pour une première
|
On peut difficilement faire plus simple pour une première
|
||||||
approche, mais attendez la suite.
|
approche, mais attendez la suite des opérations,
|
||||||
|
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}
|
||||||
|
|
||||||
@ -83,7 +99,9 @@ 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
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
% ==============================================================
|
% ==============================================================
|
||||||
\section{Apache} \index{Apache}
|
\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:~#
|
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}
|
||||||
|
0
code/awk/mkunion.awk
Normal file
0
code/awk/mkunion.awk
Normal file
Loading…
Reference in New Issue
Block a user