Compare commits
2 Commits
2efd5bec74
...
3794eb2608
Author | SHA1 | Date | |
---|---|---|---|
|
3794eb2608 | ||
|
d1d3b7c94e |
14
.gitignore
vendored
14
.gitignore
vendored
@ -5,13 +5,13 @@ log.*
|
|||||||
MANIFEST
|
MANIFEST
|
||||||
tarball
|
tarball
|
||||||
|
|
||||||
main.aux
|
tetatricks.aux
|
||||||
main.idx
|
tetatricks.idx
|
||||||
main.ilg
|
tetatricks.ilg
|
||||||
main.ind
|
tetatricks.ind
|
||||||
main.log
|
tetatricks.log
|
||||||
main.pdf
|
tetatricks.pdf
|
||||||
main.toc
|
tetatricks.toc
|
||||||
|
|
||||||
code/a.out
|
code/a.out
|
||||||
code/*.o
|
code/*.o
|
||||||
|
@ -135,18 +135,53 @@ La dernière ligne va vous étonner.
|
|||||||
La bibliothèque \textbf{Plplot} semble être un bon choix pour commencer,
|
La bibliothèque \textbf{Plplot} semble être un bon choix pour commencer,
|
||||||
mais il existe bien d'autres options.
|
mais il existe bien d'autres options.
|
||||||
Par exemple \textbf{g2} (page \pageref{g2}) semble être utilisable
|
Par exemple \textbf{g2} (page \pageref{g2}) semble être utilisable
|
||||||
avec le F77, et possiblement avec un Fortran moderne.
|
avec les vieux F77, et possiblement avec un Fortran moderne, il faut juste
|
||||||
|
un peu de \textsc{rtfm}.
|
||||||
|
|
||||||
|
Nous allons donc commencer par Plplot.
|
||||||
|
|
||||||
|
% --------------------------------------------------------
|
||||||
|
|
||||||
\subsection{Plplot} \index{plplot} \label{ploplt}
|
\subsection{Plplot} \index{plplot} \label{ploplt}
|
||||||
|
|
||||||
|
Commençons directement par un EMC\footnote{Exemple Minimal Compilable}
|
||||||
|
qui ne va pas faire grand chose, à part initialiser la machinerie
|
||||||
|
interne de Plplot qui est assez avancée.
|
||||||
|
Il y a beaucoup de paramètres réglables, mais aussi des fonctions
|
||||||
|
qui gèrent pour vous les valeurs « par défaut ».
|
||||||
|
Voyez cette exemple comme un \textsl{boilerplate} simple
|
||||||
|
ou un \textsc{HelloWorld}~:
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
program dessine
|
||||||
|
use plplot
|
||||||
|
implicit none
|
||||||
|
call plinit ()
|
||||||
|
call plenv(-2.1, 2.1, -2.1, 2.1, 0, 0)
|
||||||
|
call plend
|
||||||
|
end program
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
Il ne se passe pas grand chose, sauf la proposition de choisir
|
||||||
|
le type de sortie.
|
||||||
|
Dans la version que j'ai (XXX\index{XXX}), on a le choix entre
|
||||||
|
X-Window, PostScript mono ou couleur, Xfig, Null, UserMemory et SVG.
|
||||||
|
C'est intriguant de ne pas avoir au moins \textbf{un} format
|
||||||
|
pixmap\index{pixmap}.
|
||||||
|
|
||||||
|
Laissons cette question en suspens, et commençons à dessiner.
|
||||||
|
D'accord, mais dessiner quoi ?
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
\section{Questions}
|
\section{Questions}
|
||||||
|
|
||||||
XXX\index{XXX}
|
\index{XXX}
|
||||||
|
|
||||||
Comment déclarer une variable statique dans une procédure ?
|
\begin{itemize}
|
||||||
|
\item Comment déclarer une variable statique dans une procédure ?
|
||||||
|
\item Pourquoi ne pas parler de DISLIN ?
|
||||||
|
\item Est-il possible de causer à \texttt{libsndfile} ?
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
% ========================================
|
% ========================================
|
||||||
|
@ -116,13 +116,15 @@ Les champs d'altitude... Toute une histoire...
|
|||||||
#declare Champ_Altitude = object
|
#declare Champ_Altitude = object
|
||||||
{
|
{
|
||||||
height_field {
|
height_field {
|
||||||
png "WS/hf5.png" gamma 1.8
|
png "WS/hf5.png" gamma 1.8
|
||||||
}
|
}
|
||||||
pigment { color Cyan }
|
pigment { color Cyan }
|
||||||
scale 2
|
scale 2
|
||||||
}
|
}
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
|
Le paramètre \texttt{gamma} est injustement méconnu.
|
||||||
|
|
||||||
% ------------------------------------------------
|
% ------------------------------------------------
|
||||||
|
|
||||||
\subsection{Random} \index{ramdom}
|
\subsection{Random} \index{ramdom}
|
||||||
@ -141,9 +143,25 @@ que l'on vient d'obtenir~:
|
|||||||
|
|
||||||
\texttt{\#local foo = rand(RND);}
|
\texttt{\#local foo = rand(RND);}
|
||||||
|
|
||||||
|
Par contre, on va obtenir un résultat bien classique~:
|
||||||
\textsl{The numbers are uniformly distributed, and have values between
|
\textsl{The numbers are uniformly distributed, and have values between
|
||||||
0.0 and 1.0,}
|
0.0 and 1.0,}
|
||||||
Mais... \index{XXX}
|
|
||||||
|
Pourquoi nous faut-il plusieurs générateurs ? La réponse est dans
|
||||||
|
la documentation\footnote{\texttt{https://wiki.povray.org/}}~:
|
||||||
|
\textsl{Multiple random generators are very useful in situations where you use
|
||||||
|
rand() to place a group of objects, and then decide to use rand()
|
||||||
|
in another location earlier in the file to set some colors or place
|
||||||
|
another group of objects.
|
||||||
|
Without separate rand() streams, all of your objects would move
|
||||||
|
when you added more calls to rand().
|
||||||
|
This is very annoying.}
|
||||||
|
|
||||||
|
Ce qui nous conduit vers une autre question. Les PRNG sont des machines
|
||||||
|
déterministes. C'est à dire qu'à conditions identiques au départ,
|
||||||
|
nous aurons toujours la même séquence en sortie.
|
||||||
|
|
||||||
|
... \index{XXX}
|
||||||
|
|
||||||
|
|
||||||
% ------------------------------------------------
|
% ------------------------------------------------
|
||||||
|
@ -6,6 +6,14 @@ voir quelques grands classiques de la catégorie pas du tout
|
|||||||
interactif. Le genre de machin que l'on peut ranger au fond
|
interactif. Le genre de machin que l'on peut ranger au fond
|
||||||
d'un script shell pour le réutiliser la semaine prochaine.
|
d'un script shell pour le réutiliser la semaine prochaine.
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item{ImageMagick}
|
||||||
|
\item{Gmic}
|
||||||
|
\item{NetPBM}
|
||||||
|
\item{Portable Network Graphic}
|
||||||
|
\item{TIFF}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
% -------------------------------------------------------------------
|
% -------------------------------------------------------------------
|
||||||
|
|
||||||
\section{ImageMagick}\index{ImageMagick}
|
\section{ImageMagick}\index{ImageMagick}
|
||||||
@ -21,6 +29,11 @@ la plupart des traitements,
|
|||||||
\texttt{display} et \texttt{animate} pour visualiser des images,
|
\texttt{display} et \texttt{animate} pour visualiser des images,
|
||||||
\texttt{identify} pour en lire les méta-données.
|
\texttt{identify} pour en lire les méta-données.
|
||||||
|
|
||||||
|
Ils partagent un certain nombre d'options communes.
|
||||||
|
Certains d'entre eux peuvent avoir un effet destructif%
|
||||||
|
\footnote{En plus d'avoir un nom de série $Z$.},
|
||||||
|
vous êtes prévenus.
|
||||||
|
|
||||||
\subsection{L'option \texttt{-geometry}}
|
\subsection{L'option \texttt{-geometry}}
|
||||||
|
|
||||||
C'est une notion importante, car elle est utilisée comme paramètre
|
C'est une notion importante, car elle est utilisée comme paramètre
|
||||||
@ -200,6 +213,34 @@ use it heavily.
|
|||||||
sion schemes.
|
sion schemes.
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
|
% -------------------------------------------------------------------
|
||||||
|
|
||||||
|
\section{Cimg} \index{Cimg}
|
||||||
|
|
||||||
|
\texttt{Cimg} est l'énorme bibliothèque de fonctions
|
||||||
|
(écrites en \texttt{C++}\footnote{\textsc{wtf?}}) sur lesquelles
|
||||||
|
et basé Gmic. C'est long à compiler, ça produit des binaires
|
||||||
|
énormes, mais il semble bien que ça puisse faire des trucs géniaux.
|
||||||
|
|
||||||
|
\begin{lstlisting}
|
||||||
|
#define cimg_use_png
|
||||||
|
#include "CImg.h"
|
||||||
|
using namespace cimg_library;
|
||||||
|
|
||||||
|
#define BLUR 0.35
|
||||||
|
int main(int argc,char **argv)
|
||||||
|
{
|
||||||
|
if (3 != argc) {
|
||||||
|
fprintf(stderr, \
|
||||||
|
"Usage: %s infile.png outfile.png\n", argv[0]);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
CImg<unsigned char> imgIn (argv[1]);
|
||||||
|
CImg<unsigned char> imgOut = \
|
||||||
|
imgIn.get_norm().blur(BLUR).normalize(0, 255);
|
||||||
|
imgOut.save(argv[2]);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
% -------------------------------------------------------------------
|
% -------------------------------------------------------------------
|
||||||
|
@ -1,12 +1,17 @@
|
|||||||
%
|
%
|
||||||
%
|
% Chapitre un peu en vrac :)
|
||||||
%
|
%
|
||||||
\chapter{Web servers}
|
\chapter{Web servers}
|
||||||
|
|
||||||
% ==============================================================
|
% ==============================================================
|
||||||
\section{Apache} \index{Apache}
|
\section{Apache, Nginx} \index{Apache} ìndex{nginx}
|
||||||
|
|
||||||
Le grand classique. Que nous ne verrons pas pour le moment.
|
Apache (\textsl{A patchy server} et Nginx sont de grands classiques,
|
||||||
|
voire même, dans le cas d'Apache, un grand ancien.
|
||||||
|
|
||||||
|
Que nous ne verrons pas pour le moment. Je vais plutôt me concentrer
|
||||||
|
sur un autre serveur : \texttt{lighthttp}, pour passer ensuite à quelque
|
||||||
|
chose d'encore plus bas-niveau.
|
||||||
|
|
||||||
|
|
||||||
% ==============================================================
|
% ==============================================================
|
||||||
@ -23,16 +28,18 @@ root@ramen:~#
|
|||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
\textbf{Q:} Sur une installation fraiche, la racine du site est
|
\textbf{Q:} Sur une installation fraiche, la racine du site est
|
||||||
en 403\index{403} ?\linebreak
|
en erreur 403\index{403} ?\linebreak
|
||||||
\textbf{R:} Par défaut le listing des répertoires vides
|
\textbf{R:} Par défaut le listing des répertoires vides
|
||||||
(sans \texttt{index.html}) est interdit. Pour changer ça, il faut
|
(sans \texttt{index.html}) est interdit. Pour changer ça, il faut
|
||||||
\texttt{\# lighttpd-enable-mod dir-listing} et
|
\texttt{\# lighttpd-enable-mod dir-listing} et
|
||||||
\texttt{\# service lighttpd force-reload}, voilà.
|
\texttt{\# service lighttpd force-reload}, voilà.
|
||||||
|
|
||||||
|
|
||||||
% ==============================================================
|
% ==============================================================
|
||||||
|
|
||||||
\section{Custom made}
|
\section{Custom made}
|
||||||
|
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
tth@ramen:~/Houba/Fractales90$ apt show libmicrohttpd12
|
tth@ramen:~/Houba/Fractales90$ apt show libmicrohttpd12
|
||||||
Package: libmicrohttpd12
|
Package: libmicrohttpd12
|
||||||
|
Loading…
Reference in New Issue
Block a user