From 3794eb26088d3bf7f9f9a0d38f009d4ca9923b4a Mon Sep 17 00:00:00 2001 From: tTh Date: Fri, 24 Jun 2022 03:19:32 +0200 Subject: [PATCH] small additions --- chap/Fortran.tex | 41 ++++++++++++++++++++++++++++++++++++++--- chap/graphisme.tex | 24 +++++++++++++++++++++--- chap/image.tex | 41 +++++++++++++++++++++++++++++++++++++++++ chap/webserver.tex | 15 +++++++++++---- 4 files changed, 111 insertions(+), 10 deletions(-) diff --git a/chap/Fortran.tex b/chap/Fortran.tex index f340158..f2124b9 100644 --- a/chap/Fortran.tex +++ b/chap/Fortran.tex @@ -135,18 +135,53 @@ La dernière ligne va vous étonner. La bibliothèque \textbf{Plplot} semble être un bon choix pour commencer, mais il existe bien d'autres options. 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} +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} -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} % ======================================== diff --git a/chap/graphisme.tex b/chap/graphisme.tex index 0663078..1b2d3f8 100644 --- a/chap/graphisme.tex +++ b/chap/graphisme.tex @@ -116,13 +116,15 @@ Les champs d'altitude... Toute une histoire... #declare Champ_Altitude = object { height_field { - png "WS/hf5.png" gamma 1.8 - } + png "WS/hf5.png" gamma 1.8 + } pigment { color Cyan } scale 2 } \end{verbatim} +Le paramètre \texttt{gamma} est injustement méconnu. + % ------------------------------------------------ \subsection{Random} \index{ramdom} @@ -141,9 +143,25 @@ que l'on vient d'obtenir~: \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 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} % ------------------------------------------------ diff --git a/chap/image.tex b/chap/image.tex index 2733ec5..fa2fc0c 100644 --- a/chap/image.tex +++ b/chap/image.tex @@ -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 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} @@ -21,6 +29,11 @@ la plupart des traitements, \texttt{display} et \texttt{animate} pour visualiser des images, \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}} C'est une notion importante, car elle est utilisée comme paramètre @@ -200,6 +213,34 @@ use it heavily. sion schemes. \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 imgIn (argv[1]); +CImg imgOut = \ + imgIn.get_norm().blur(BLUR).normalize(0, 255); +imgOut.save(argv[2]); +return 0; +} +\end{lstlisting} % ------------------------------------------------------------------- diff --git a/chap/webserver.tex b/chap/webserver.tex index 27fdc6a..c3150cf 100644 --- a/chap/webserver.tex +++ b/chap/webserver.tex @@ -1,12 +1,17 @@ % -% +% Chapitre un peu en vrac :) % \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} \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 (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} + \begin{verbatim} tth@ramen:~/Houba/Fractales90$ apt show libmicrohttpd12 Package: libmicrohttpd12