diff --git a/chap/Fortran.tex b/chap/Fortran.tex index f2124b9..d08d915 100644 --- a/chap/Fortran.tex +++ b/chap/Fortran.tex @@ -12,7 +12,8 @@ John Warner Backus, ingénieur en radiophonie chez IBM\index{IBM}, Dernière version à exiger le format '80 colonnes' des cartes perforées, cette version est aussi (aux yeux de vieux dinos) la plus pure, à cause d'instructions comme le \textsl{computed goto} ou le -mythique \textsl{comefrom}. Nom officiel : \texttt{ANSI X3.9-1978}. +mythique \textsl{comefrom}\footnote{Keyword: Datamatic}. +Nom officiel : \texttt{ANSI X3.9-1978}. % ============****************=============== @@ -22,7 +23,8 @@ mythique \textsl{comefrom}. Nom officiel : \texttt{ANSI X3.9-1978}. Puis ce langage du passé a subi une évolution lente vers quelque chose de bien plus moderne : le Fortran 90. -Les dinos vont devoir s'adapter. Et utiliser \texttt{gfortran}, +Les dinos vont devoir s'adapter. +Et songer à utiliser un \texttt{gfortran} moderne, un élément de la Gnu Compiler Collection\index{gcc}. Comme pour tous les langages de programmation, @@ -74,9 +76,10 @@ il faut la convertir avant usage. Exemple pour un nombre flottant~: \begin{verbatim} - character(len=89) :: arg - real :: cx - call getarg(2, string) ; read (string, *) cx + character(len=89) :: arg + real :: cx + call getarg(2, string) + read (string, *) cx \end{verbatim} % -------------------------------------------------------- @@ -86,7 +89,7 @@ flottant~: Rank, Size, \textsc{allocatable}, toussa\dots Amies du C, soyez d'entrée prévenues, en Fortran, l'indice -par défaut du premier élément d'un tablesu est \textbf{1}, +par défaut du premier élément d'un tableau est \textbf{1}, mais cette valeur peut être modifiée à la déclaration du tableau. @@ -101,6 +104,14 @@ Il semble qu'il y ait deux concepts orthogonaux. \textit{Open, Read, Write, Inquire, toussa\dots} +\subsection{Sequentiel texte} + +XXX\index{XXX} + +\subsection{Indexé} \index{index} + +XXX\index{XXX} + % -------------------------------------------------------- \section{Modules} @@ -110,6 +121,10 @@ au-delà de 104 lignes. Oui, j'avoue, j'ai bien changé depuis l'époque où je confectionnait des procédures \textsl{monobloc} de 1337 lignes, avec une bonne centaine de \texttt{GOTO} dedans. +Il serait bon de voir un exemple du monde réel. Ou juste un +exemple basique. Mais avec des explications. Parce que ce n'est pas +vraiment évident. Mais c'est un concept balaize. + % -------------------------------------------------------- \section{Random et Aléa} @@ -128,6 +143,15 @@ La dernière ligne va vous étonner. dummy = rand() \end{verbatim} +% -------------------------------------------------------- +% new Thu 24 Nov 2022 02:27:05 AM CET + +\section{Options de gfortran} \index{gfortran} + +Comme d'habitude avec gcc\footnote{The Gnu Compiler Collection}, les +options sont innombrables. J'ai essayé d'en dégager les plus importantes, +mais ce ne sont probablement pas les seules. + % -------------------------------------------------------- \section{Images} @@ -138,7 +162,7 @@ Par exemple \textbf{g2} (page \pageref{g2}) semble être utilisable avec les vieux F77, et possiblement avec un Fortran moderne, il faut juste un peu de \textsc{rtfm}. -Nous allons donc commencer par Plplot. +Nous allons donc commencer par Plplot, pour envisager ensuite les alternatives. % -------------------------------------------------------- @@ -182,6 +206,7 @@ D'accord, mais dessiner quoi ? \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} ? +\item Comment caler une chaine à gauche avec un \textsc{format} ? \end{itemize} % ======================================== diff --git a/chap/bdd.tex b/chap/bdd.tex new file mode 100644 index 0000000..3c69274 --- /dev/null +++ b/chap/bdd.tex @@ -0,0 +1,27 @@ +\chapter{Bases de données} +\label{chap:bdd} + +% ---------------------------------------------------------------- +% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +\section{sqlite} \index{sqlite} + + +% ---------------------------------------------------------------- +\subsection{CLI} \index{cli} + + +% ---------------------------------------------------------------- +\subsection{Libreoffice} \index{Libreoffice} + +% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +\section{GDBM} \index{GDBM} + +% ---------------------------------------------------------------- + + + +% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +\section{Postgresql} + +% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ diff --git a/chap/gadgets.tex b/chap/gadgets.tex index 311cf48..47dd2f3 100644 --- a/chap/gadgets.tex +++ b/chap/gadgets.tex @@ -47,7 +47,7 @@ Le pendant graphique est \texttt{xcowsay}. \textsl{Display large characters made up of ordinary screen characters.} -Il y a énormément d'option, en voice une première~: +Il y a énormément d'option, en voici une première~: \texttt{-W} permet d'espacer un peu les caractères. \begin{verbatim} @@ -98,12 +98,28 @@ ___________ | *** . * | | ** *.** | ___________ +tth@plop $ bcd "we make porn" | tr ']' 'x' + ________________________________________________ +/WE MAKE PORN | +| x x x | +| x x xxxx | +|x | +|1111x1111111111111111111111111111111111111111111| +|22222x222222222222222222222222222222222222222222| +|333333333333333333333333333333333333333333333333| +|444x44444444444444444444444444444444444444444444| +|5x5555x5555x555555555555555555555555555555555555| +|x66666666x66666666666666666666666666666666666666| +|77777777x777777777777777777777777777777777777777| +|888888888888888888888888888888888888888888888888| +|9999999999x9999999999999999999999999999999999999| +|________________________________________________| \end{verbatim} Certains esprits ouverts pensent que \texttt{fortune}\index{fortune} est aussi un générateur de données futilement complexes. -D'autres songent à MXDoctor\index{emacs} ou Camélia. +D'autres penseront à MX-Doctor\index{emacs} ou Camélia. \subsection{Les animations} @@ -112,6 +128,22 @@ vraiment\footnote{Enfin, si, j'essaye de confectionner un soft pour fabriquer des flipbooks à partir de portnawak} faire d'animation imprimable. +% =============================================================== + +\section{Faire \textsl{beep-beep}} + +Dans le temps, les ordinateurs de type IBM-PC n'avaient qu'un tout +petit \textsl{buzzer} pour se faire entendre\footnote{Négligeons les +ventilateurs en première approche.} avec seulement 1 bit de résolution. +On pouvait quand même modifier la fréquence et jouer de petites +mélodies. + +\begin{verbatim} +$ beep -f 1000 -n -f 2000 -n -f 1500 +$ beep -f 300.7 -r 2 -d 100 -l 400 +$ cat codes.txt | beep -c -f 400 -D 50 -l 10 +$ beep -f 1000 -r 2 -n -r 5 -l 10 --new +\end{verbatim} % =============================================================== diff --git a/chap/image.tex b/chap/image.tex index 5869060..0b6b96e 100644 --- a/chap/image.tex +++ b/chap/image.tex @@ -89,20 +89,23 @@ options sont un peu ésotériques et parfois inter-dépendantes\dots \begin{tabular}{|l|p{7cm}|} \hline -Code & Signification \\ +Code & Signification \\ \hline -txtfont & \\ -fontsize & \\ -kerning & espacement entre les caractères \\ -color & \\ -stroke & couleur 'bord' de caractère \\ -strokewidth & largeur de la bordure \\ -txtopts & \\ -gravity & \\ -annotate & \\ +-txtfont & \\ +-fontsize & taille des caractères \\ +-kerning & espacement entre les caractères \\ +-color & couleur de l'encre \\ +-stroke & couleur 'bord' de caractère \\ +-strokewidth & largeur de la bordure \\ +-txtopts & \textsl{Gni?} \\ +-gravity & vers quel point cardinal le texte va-t-il être \textsl{tiré} ? \\ +-annotate & \texttt{+30+30 "texte à écrire"} \\ \hline \end{tabular} +Pour avoir la liste des couleurs disponibles : \texttt{convert -list color} +et celles des fontes : \texttt{convert -list color}. + \subsection{Questions...} @@ -120,7 +123,7 @@ image name, and more. Krkrkr\dots -\subsection{Faire des GIFs animées}\index{GIF} +\subsection{Faire des GIFs animées}\index{gif89a} Ces petites images clignotantes sont l'essence même du Web\index{web} moderne depuis 1992 malgré leurs limitations, @@ -159,9 +162,11 @@ changer la dimension de l'image. En détail, j'ai pas tout compris. On trouve encore en circulation de très vieux logiciels qui ne savent lire qu'un encore plus ancien format : \textsl{Targa file format}. -Et dans une variante bien précise. +Et dans une variante bien précise : mode \textsc{rgb} et non compressé% +\footnote{Un jour, peut-être, ça va changer\dots}. -Il nous faut donc une incantation bien précise : +Il nous faut donc une incantation bien précise avec, heureusement, des +arguments aux noms évocateurs : \begin{lstlisting} GOTO_TGA () @@ -211,7 +216,8 @@ language interpreter. gmic: GREYC's Magic for Image Computing.} Gmic se base sur une grosse\footnote{énorme, même. dans les deux sens\dots} bibliothèque de fonctions écrite en \texttt{C++}\index{C++} dont l'utilisation est bien -docummentée dans le livre ???\index{XXX} +documentée dans le livre ???\index{XXX} mais nécessite quand même +de solides bases dans les subtilitées fourbes du \texttt{C++}. Gmic existe aussi en plugin pour Gimp\index{Gimp} avec une interface pleine de curseurs et de boutons, qui facilite (ou pas) l'exploration @@ -276,13 +282,18 @@ use it heavily. sion schemes. \end{verbatim} +% ------------------------------------------------------------------- +\section {EXIF} \index{EXIF} + +Logiciels: \texttt{exiftool}\dots + % ------------------------------------------------------------------- \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 +est basé Gmic. C'est long à compiler, ça produit des binaires énormes, mais il semble bien que ça puisse faire des trucs géniaux. \subsection{\textsc{hello world}} @@ -308,6 +319,9 @@ return 0; } \end{lstlisting} +Un concept interessant, mais pas évident au premier abord. Un peu comme +les branchements dans Chuck\index{Chuck} ou les pipes du shell\dots + \subsection{Questions...} \begin{itemize} diff --git a/chap/photos.tex b/chap/photos.tex index b6e3db2..30b6936 100644 --- a/chap/photos.tex +++ b/chap/photos.tex @@ -1,47 +1,65 @@ \chapter{Photographie} \index{Photo} -Voir aussi ImageMagick dans le chapitre \ref{chap:image}, +Le domaine de la photographie numérique est vaste. +Nous allons essayer d'en entrevoir certains aspects et de +découvrir quelques recettes bien pratiques. +Dans le (dés)ordre, nous verrons comment récupérer les +image d'un appareil qui n'est pas compatible avec le +bien pratique protocole \textsl{mass storage}, puis nous +passerons au traitement des fichiers crus, les fameux +\textsc{raw} qui font le bonheur de monsieur Reep. +Voir aussi ImageMagick dans le chapitre \ref{chap:image}, +page \pageref{chap:image}, un bon outil pour brotcher vos images. + +%---------------------------------------------------------------- + \section{gphoto2} \index{gphoto2} -Notes écrites en se basant sur la version 2.4.5 (Ubuntu 10.04), +Notes écrites en se basant sur la version 2.5.20 (Debian 10.23), les choses peuvent être (rarement) différentes chez vous. L'appareil photo que j'utilise actuellement est un -Canon \textit{PowerShot A520}. +Canon \textit{EOS 600D}\footnote{Hélas, j'ai perdu mon bien-aimé +PowerShot A520\dots}, dont, il faut bien l'avouer, la complexité +m'effraye un peu. \begin{verbatim} gphoto2 --list-ports gphoto2 --list-cameras +gphoto2 --auto-detect \end{verbatim} -Deux commandes pour obtenir la description des modes de connexion -possibles, et la liste des appareils gérés. +Ces trois commandes servent à obtenir la description des modes de +connexion possibles, la liste des appareils gérés, et l'éventuel +appareil connecté, si il est sous tension, bien entendu :) + +%---------------------------------------------------------------- \begin{verbatim} -gphoto2 --auto-detect gphoto2 --port usb:002,002 -P \end{verbatim} -Détection d'un éventuel appareil connecté, puis récupération +Cette commande fait une récupération bestiale de toutes les photos (l'option \texttt{-P} peut être remplacée par \texttt{--get-all-files}). - L'option \texttt{--new} permet de se limiter au téléchargement des nouvelles photos. Pour les drogués de la ligne de commande, l'option \texttt{--shell} démarre un environnement interactif, qui permet d'explorer le -contenu de votre appareil, et d'interagir avec lui. +contenu de votre appareil, et d'interagir avec lui. Ce qu'on peut faire +semble assez dépendant du modèle d'apn utilisé. + Il doit exister plein d'autres tricks'n'tips, il faut juste prendre le temps de les découvrir. -%---------------------------------------------------------------- +%================================================================ \section{ufraw} \index{ufraw} @@ -50,7 +68,8 @@ Ufraw (Unidentified Flying Raw) est un convertisseur de fichier images \textit{RAW}, c'est à dire en général les données brutes en sortie du capteur de l'appareil photo. -%---------------------------------------------------------------- +%================================================================ + diff --git a/chap/video.tex b/chap/video.tex index 4827c43..2a9f98f 100644 --- a/chap/video.tex +++ b/chap/video.tex @@ -27,6 +27,9 @@ Pour faire une planche contact d'une vidéo : jpeg:outdir=/tmp -sstep 60 monfichier.ts} % -------------------------------------------------------------------- +% +% https://img.ly/blog/ultimate-guide-to-ffmpeg/ +% \section{ffmpeg} \index{ffmpeg} diff --git a/code/misctools/nonascii.c b/code/misctools/nonascii.c index c5e411e..2c47a83 100644 --- a/code/misctools/nonascii.c +++ b/code/misctools/nonascii.c @@ -7,7 +7,8 @@ #include #include -int main(int argc, char *argv[]) +/* ------------------------------------------------------------------ */ +int check_a_file_by_fp(FILE *fp, char *filename) { int input, linenum, count; int flagline; @@ -22,16 +23,52 @@ while (EOF != (input=getc(stdin))) { } if ((input < 0) || (input>127)) { if (!flagline) { - fprintf(stderr, "non ascii 0x%x line %d\n", + fprintf(stderr, "%s: non ascii 0x%x line %d\n", + filename, input, linenum); flagline = 1; } count++; } } -if (count) { - fprintf(stderr, "at least %d non-ascii characters found\n", count); - exit(1); +return count; +} +/* ------------------------------------------------------------------ */ +int check_a_file_by_name(char *name) +{ +FILE *fp; +int foo; + +if (NULL == name) { + fp = stdin; } +else { + if (NULL==(fp=fopen(name, "r"))) { + perror(name); + return -1; + } + } + +foo = check_a_file_by_fp(fp, NULL==name ? "" : name); + +return foo; +} +/* ------------------------------------------------------------------ */ + +int main(int argc, char *argv[]) +{ +int foo, idx; + +if (1 == argc) { + foo = check_a_file_by_name(NULL); + } +else { + for (idx=1; idx