dernier commit avant le Gers
This commit is contained in:
parent
c5b0e17bbb
commit
0818f87582
@ -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
|
||||||
|
|
||||||
% --------------------------------------------------------
|
% --------------------------------------------------------
|
||||||
|
|
||||||
|
@ -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}
|
||||||
|
@ -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 = ("") \}}
|
||||||
|
|
||||||
% ==============================================================
|
% ==============================================================
|
||||||
|
|
||||||
|
@ -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
8
code/C/hacks.txt
Normal 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);
|
||||||
|
}
|
@ -7,18 +7,20 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
int c, sec, nano;
|
int c, sec, nano;
|
||||||
struct timespec ts;
|
struct timespec ts;
|
||||||
int slowdown = 300; /* set a default value */
|
int slowdown = 300; /* set a default value */
|
||||||
float delay;
|
float delay;
|
||||||
/*
|
/*
|
||||||
* get the desired slowdown from command-line
|
* get the desired slowdown from command-line
|
||||||
*/
|
*/
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
@ -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 ?
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user