Compare commits
No commits in common. "3794eb26088d3bf7f9f9a0d38f009d4ca9923b4a" and "2efd5bec74a6068073c450d828720de03c98c889" have entirely different histories.
3794eb2608
...
2efd5bec74
14
.gitignore
vendored
14
.gitignore
vendored
@ -5,13 +5,13 @@ log.*
|
|||||||
MANIFEST
|
MANIFEST
|
||||||
tarball
|
tarball
|
||||||
|
|
||||||
tetatricks.aux
|
main.aux
|
||||||
tetatricks.idx
|
main.idx
|
||||||
tetatricks.ilg
|
main.ilg
|
||||||
tetatricks.ind
|
main.ind
|
||||||
tetatricks.log
|
main.log
|
||||||
tetatricks.pdf
|
main.pdf
|
||||||
tetatricks.toc
|
main.toc
|
||||||
|
|
||||||
code/a.out
|
code/a.out
|
||||||
code/*.o
|
code/*.o
|
||||||
|
@ -135,53 +135,18 @@ 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 les vieux F77, et possiblement avec un Fortran moderne, il faut juste
|
avec le F77, et possiblement avec un Fortran moderne.
|
||||||
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}
|
||||||
|
|
||||||
\index{XXX}
|
XXX\index{XXX}
|
||||||
|
|
||||||
\begin{itemize}
|
Comment déclarer une variable statique dans une procédure ?
|
||||||
\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,15 +116,13 @@ 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}
|
||||||
@ -143,25 +141,9 @@ 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,14 +6,6 @@ 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}
|
||||||
@ -29,11 +21,6 @@ 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
|
||||||
@ -213,34 +200,6 @@ 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,17 +1,12 @@
|
|||||||
%
|
%
|
||||||
% Chapitre un peu en vrac :)
|
%
|
||||||
%
|
%
|
||||||
\chapter{Web servers}
|
\chapter{Web servers}
|
||||||
|
|
||||||
% ==============================================================
|
% ==============================================================
|
||||||
\section{Apache, Nginx} \index{Apache} ìndex{nginx}
|
\section{Apache} \index{Apache}
|
||||||
|
|
||||||
Apache (\textsl{A patchy server} et Nginx sont de grands classiques,
|
Le grand classique. Que nous ne verrons pas pour le moment.
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
% ==============================================================
|
% ==============================================================
|
||||||
@ -28,18 +23,16 @@ 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 erreur 403\index{403} ?\linebreak
|
en 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