dernier commit avant le Gers

This commit is contained in:
tTh 2024-03-11 02:20:47 +01:00
parent c5b0e17bbb
commit 0818f87582
9 changed files with 99 additions and 23 deletions

View File

@ -141,7 +141,7 @@ pixel%r = 0x55
Nous verrons plus loin l'importance de cette notion. Nous verrons plus loin l'importance de cette notion.
% -------------------------------------------------------- % ========================================
\section{Fichiers} \section{Fichiers}
@ -157,18 +157,36 @@ Il semble qu'il y ait deux concepts orthogonaux :
\textit{Open, Read, Write, Inquire, toussa\dots} \textit{Open, Read, Write, Inquire, toussa\dots}
% --------------------------------------------------------
\subsection{Ouvrir un fichier}
C'est la première étape : attacher un fichier à un numéro d'unité.
Il y a une foultitude d'options, nous allons commencer par les
plus courantes.
% --------------------------------------------------------
\subsection{Sequentiel texte} \subsection{Sequentiel texte}
XXX\index{XXX} XXX\index{XXX}
Pour faire simple, on accède à chaque unité de donnée l'une après l'autre, Pour faire simple, on accède à chaque unité de donnée l'une après l'autre,
comme quand on déroule une bande 6250bpi. comme quand on déroule une bande 6250bpi. Ces unités peuvent être
(restons simple pour commencer) des lignes entières de texte.
Dans l'ancien temps\footnote{F77 rulz the world}, le format de ces
lignes devait être précisement structure, avec des largeurs de champs
fixés.
% --------------------------------------------------------
\subsection{Indexé} \index{index} \subsection{Indexé} \index{index}
XXX\index{XXX} XXX\index{XXX}
C'est pas pareil. C'est pas pareil : d'abord les enregistrements sont tous de la même
taille
% -------------------------------------------------------- % --------------------------------------------------------

View File

@ -169,6 +169,8 @@ nous aurons toujours la même séquence en sortie.
\subsection{Trucs à voir} \subsection{Trucs à voir}
Des bouts de code piochés à droite et à gauche...
\begin{verbatim} \begin{verbatim}
#declare VIRGINIA = #declare VIRGINIA =
transform { transform {
@ -177,12 +179,29 @@ matrix < 1, 1, 0,
0, 0, 1, 0, 0, 1,
0, 0, 0 > 0, 0, 0 >
} }
box { 0, 1 box { 0, 1
transform {VIRGINIA} transform {VIRGINIA}
} }
\end{verbatim} \end{verbatim}
Pour faire un vaisseau spatial (Thomas de Groot dans povray.binaries.images)
\begin{verbatim}
// the color bleeding is done by emission color:
material {
texture {
pigment {rgb <0.50, 1.00, 1.00>}
finish {
specular 0 roughness 0.001
emission rgb <0.50, 1.00, 1.00>*5
diffuse 1
reflection {0} conserve_energy
}
}
}
\end{verbatim}
% ================================================ % ================================================
\section{Avec Fortran} \section{Avec Fortran}

View File

@ -4,20 +4,26 @@
\chapter{Web servers} \chapter{Web servers}
% ============================================================== % ==============================================================
\section{Apache, Nginx} \index{Apache} ìndex{nginx} \section{Apache, Nginx} \index{Apache} \index{nginx}
Apache (\textsl{A patchy server} et Nginx sont de grands classiques, Apache (\textsl{A patchy server} et Nginx sont de grands classiques,
voire même, dans le cas d'Apache, un grand ancien. 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 Que nous ne verrons pas pour le moment. Je vais plutôt me concentrer
sur un autre serveur : \texttt{lighthttp}, pour passer ensuite à quelque sur un autre serveur : \texttt{lighthttp}, pour passer ensuite à quelque
chose d'encore plus bas-niveau. chose d'encore plus bas-niveau qui demandera quelques connaissances en C.
% ============================================================== % ==============================================================
\section{Lighttpd} \index{Lighttpd} \section{Lighttpd} \index{Lighttpd}
Un outsider ? Un outsider ? Non, pas vraiment. Probablement plus léger que
les classiques, il a quelques fonctions assez interessantes.
Je vais faire un rapide survol des \textsl{tricks} à connaitre
pour une mise en œuvre de bon aloi. Et pour ça, je vais
d'abord me concentrer sur un cas précis~:
l'exécution de scripts CGI\index{CGI} écrits en Perl\index{Perl}
depuis le répertoire \texttt{\$HOME/public\_html/} des yusers.
\begin{verbatim} \begin{verbatim}
root@ramen:~# lighty-enable-mod userdir root@ramen:~# lighty-enable-mod userdir
@ -28,7 +34,7 @@ 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 erreur 403\index{403} ?
\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
@ -37,6 +43,14 @@ en erreur 403\index{403} ?\linebreak
Question : comment forcer le \texttt{Content-Type} pour un type particulier Question : comment forcer le \texttt{Content-Type} pour un type particulier
de fichier ? Par exemple text/plain pour les fichiers \texttt{.POV} ? de fichier ? Par exemple text/plain pour les fichiers \texttt{.POV} ?
% ------------------------------------------------
\subsection{Filtrages}
In case you need to do this with lighttpd (you can have multiple of
these for each useragent you want to match, or you can make one big regex
if you want):
\texttt{\$HTTP["useragent"] =~ "Amazonbot" \{ url.access-deny = ("") \}}
% ============================================================== % ==============================================================

View File

@ -0,0 +1,12 @@
# Le BASIC
Un des premiers langages abordable par tout le monde,
crée il y a très longtemps à Dartmouth. Il a eu ensuite
une longue et fructueuse carrière, surtout à l'époque
des ordinateurs personnels de la regrettée famille des
8 bits : Apple ][, Amstrad CPC6128, la série des MSX,
l'Oric...

8
code/C/hacks.txt Normal file
View File

@ -0,0 +1,8 @@
inline int
usleep(useconds_t microseconds)
{
struct timespec ts;
ts.tv_sec = microseconds / (useconds_t)1000000;
ts.tv_nsec = (long)(microseconds % (useconds_t)1000000) * 1000L;
return nanosleep(&ts, NULL);
}

View File

@ -14,11 +14,13 @@ float delay;
*/ */
if (2 == argc) { if (2 == argc) {
if (1 != sscanf(argv[1], "%d", &slowdown)) { if (1 != sscanf(argv[1], "%d", &slowdown)) {
fprintf(stderr, "%s: bad arg, sorry\n", argv[0]); fprintf(stderr, "%s: bad arg, sorry\n",
argv[0]);
exit(1); exit(1);
} }
if (slowdown < 1) { if (slowdown < 1) {
fprintf(stderr, "%d is invalid\n", slowdown); fprintf(stderr, "%d is invalid\n",
slowdown);
exit(1); exit(1);
} }
} }

View File

@ -6,10 +6,10 @@ program dessiner
character(len=80) :: version character(len=80) :: version
call plgver(version) call plgver(version)
write (*,'(a,a)') 'plPlot version: ', trim(version) write (*,'(" ",a,a)') 'plPlot version: ', trim(version)
! call dessin_X11 (0.00, 1.51, 11) call dessin_X11 (0.12, 1.51, 11)
call dessin_dans_un_fichier () !! call dessin_dans_un_fichier ()
contains ! ----------------------------- contains ! -----------------------------
!------------------------------------------------------ !------------------------------------------------------
@ -33,13 +33,13 @@ subroutine dessin_X11 (sha, shb, color)
call plsdev('xwin') call plsdev('xwin')
call plinit () call plinit ()
call plenv (-2.1, 2.1, -2.1, 2.1, 1, 2) call plenv (-2.5, 2.5, -2.5, 2.5, 1, 2)
amp = 2.16 amp = 2.06
do i = 1, lg do i = 1, lg
k = real(i)/real(lg) * 6.2832 * 4.0 k = real(i)/real(lg) * 6.2832 * 2.0
x(i) = amp * sin((k+sha)*5) x(i) = amp * sin((k+sha))
y(i) = amp * cos((k+shb)*3) y(i) = amp * cos((k+shb))
enddo enddo
! print *, k, x(i), y(i) ! print *, k, x(i), y(i)

View File

@ -1,7 +1,7 @@
# Outils divers # Outils divers
OK, let's go for a few nice tools. *OK, let's go for a few nice tools.*
## non ascii ? ## non ascii ?

View File

@ -10,26 +10,29 @@
/* ------------------------------------------------------------------ */ /* ------------------------------------------------------------------ */
int check_a_file_by_fp(FILE *fp, char *filename) int check_a_file_by_fp(FILE *fp, char *filename)
{ {
int input, linenum, count; int input, linenum, colnum, count;
int flagline; int flagline;
linenum = 1; /* humans start line count at 1 */ linenum = 1; /* humans start line count at 1 */
colnum = 1;
count = 0; count = 0;
while (EOF != (input=getc(stdin))) { while (EOF != (input=getc(stdin))) {
if ('\n' == input) { if ('\n' == input) {
linenum++; linenum++;
flagline = 0; flagline = 0;
colnum = 1;
} }
if ((input < 0) || (input>127)) { if ((input < 0) || (input>127)) {
if (!flagline) { if (!flagline) {
fprintf(stderr, "%s: non ascii 0x%x line %d\n", fprintf(stderr, "%s: nonascii 0x%x line %d, col %d\n",
filename, filename,
input, linenum); input, linenum, colum);
flagline = 1; flagline = 1;
} }
count++; count++;
} }
colnum++;
} }
return count; return count;
} }