time to sleep...

This commit is contained in:
tTh 2022-12-16 20:41:32 +01:00
parent 75a94fc6c7
commit 87fb8ed834
13 changed files with 242 additions and 42 deletions

View File

@ -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, Dernière version à exiger le format '80 colonnes' des cartes perforées,
cette version est aussi (aux yeux de vieux dinos) la plus pure, cette version est aussi (aux yeux de vieux dinos) la plus pure,
à cause d'instructions comme le \textsl{computed goto} ou le à 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 Puis ce langage du passé a subi une évolution lente vers quelque
chose de bien plus moderne : le Fortran 90. 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}. un élément de la Gnu Compiler Collection\index{gcc}.
Comme pour tous les langages de programmation, Comme pour tous les langages de programmation,
@ -74,9 +76,10 @@ il faut la convertir avant usage. Exemple pour un nombre
flottant~: flottant~:
\begin{verbatim} \begin{verbatim}
character(len=89) :: arg character(len=89) :: arg
real :: cx real :: cx
call getarg(2, string) ; read (string, *) cx call getarg(2, string)
read (string, *) cx
\end{verbatim} \end{verbatim}
% -------------------------------------------------------- % --------------------------------------------------------
@ -86,7 +89,7 @@ flottant~:
Rank, Size, \textsc{allocatable}, toussa\dots Rank, Size, \textsc{allocatable}, toussa\dots
Amies du C, soyez d'entrée prévenues, en Fortran, l'indice 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 mais cette valeur peut être modifiée à la déclaration
du tableau. du tableau.
@ -101,6 +104,14 @@ Il semble qu'il y ait deux concepts orthogonaux.
\textit{Open, Read, Write, Inquire, toussa\dots} \textit{Open, Read, Write, Inquire, toussa\dots}
\subsection{Sequentiel texte}
XXX\index{XXX}
\subsection{Indexé} \index{index}
XXX\index{XXX}
% -------------------------------------------------------- % --------------------------------------------------------
\section{Modules} \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} l'époque où je confectionnait des procédures \textsl{monobloc}
de 1337 lignes, avec une bonne centaine de \texttt{GOTO} dedans. 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} \section{Random et Aléa}
@ -128,6 +143,15 @@ La dernière ligne va vous étonner.
dummy = rand() dummy = rand()
\end{verbatim} \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} \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 avec les vieux F77, et possiblement avec un Fortran moderne, il faut juste
un peu de \textsc{rtfm}. 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 Comment déclarer une variable statique dans une procédure ?
\item Pourquoi ne pas parler de DISLIN ? \item Pourquoi ne pas parler de DISLIN ?
\item Est-il possible de causer à \texttt{libsndfile} ? \item Est-il possible de causer à \texttt{libsndfile} ?
\item Comment caler une chaine à gauche avec un \textsc{format} ?
\end{itemize} \end{itemize}
% ======================================== % ========================================

27
chap/bdd.tex Normal file
View File

@ -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}
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

View File

@ -47,7 +47,7 @@ Le pendant graphique est \texttt{xcowsay}.
\textsl{Display large characters made up of ordinary screen characters.} \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. \texttt{-W} permet d'espacer un peu les caractères.
\begin{verbatim} \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} \end{verbatim}
Certains esprits ouverts pensent que Certains esprits ouverts pensent que
\texttt{fortune}\index{fortune} est aussi un \texttt{fortune}\index{fortune} est aussi un
générateur de données futilement complexes. 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} \subsection{Les animations}
@ -112,6 +128,22 @@ vraiment\footnote{Enfin, si, j'essaye de confectionner
un soft pour fabriquer des flipbooks à partir de portnawak} un soft pour fabriquer des flipbooks à partir de portnawak}
faire d'animation imprimable. 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}
% =============================================================== % ===============================================================

View File

@ -89,20 +89,23 @@ options sont un peu ésotériques et parfois inter-dépendantes\dots
\begin{tabular}{|l|p{7cm}|} \begin{tabular}{|l|p{7cm}|}
\hline \hline
Code & Signification \\ Code & Signification \\
\hline \hline
txtfont & \\ -txtfont & \\
fontsize & \\ -fontsize & taille des caractères \\
kerning & espacement entre les caractères \\ -kerning & espacement entre les caractères \\
color & \\ -color & couleur de l'encre \\
stroke & couleur 'bord' de caractère \\ -stroke & couleur 'bord' de caractère \\
strokewidth & largeur de la bordure \\ -strokewidth & largeur de la bordure \\
txtopts & \\ -txtopts & \textsl{Gni?} \\
gravity & \\ -gravity & vers quel point cardinal le texte va-t-il être \textsl{tiré} ? \\
annotate & \\ -annotate & \texttt{+30+30 "texte à écrire"} \\
\hline \hline
\end{tabular} \end{tabular}
Pour avoir la liste des couleurs disponibles : \texttt{convert -list color}
et celles des fontes : \texttt{convert -list color}.
\subsection{Questions...} \subsection{Questions...}
@ -120,7 +123,7 @@ image name, and more.
Krkrkr\dots 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 Ces petites images clignotantes sont l'essence même du
Web\index{web} moderne depuis 1992 malgré leurs limitations, 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 On trouve encore en circulation de très vieux logiciels qui ne savent lire
qu'un encore plus ancien format : \textsl{Targa file format}. 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} \begin{lstlisting}
GOTO_TGA () 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} Gmic se base sur une grosse\footnote{énorme, même. dans les deux sens\dots}
bibliothèque de fonctions écrite bibliothèque de fonctions écrite
en \texttt{C++}\index{C++} dont l'utilisation est bien 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 Gmic existe aussi en plugin pour Gimp\index{Gimp} avec une interface
pleine de curseurs et de boutons, qui facilite (ou pas) l'exploration pleine de curseurs et de boutons, qui facilite (ou pas) l'exploration
@ -276,13 +282,18 @@ use it heavily.
sion schemes. sion schemes.
\end{verbatim} \end{verbatim}
% -------------------------------------------------------------------
\section {EXIF} \index{EXIF}
Logiciels: \texttt{exiftool}\dots
% ------------------------------------------------------------------- % -------------------------------------------------------------------
\section{Cimg} \index{Cimg} \section{Cimg} \index{Cimg}
\texttt{Cimg} est l'énorme bibliothèque de fonctions \texttt{Cimg} est l'énorme bibliothèque de fonctions
(écrites en \texttt{C++}\footnote{\textsc{wtf?}}) sur lesquelles (é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. énormes, mais il semble bien que ça puisse faire des trucs géniaux.
\subsection{\textsc{hello world}} \subsection{\textsc{hello world}}
@ -308,6 +319,9 @@ return 0;
} }
\end{lstlisting} \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...} \subsection{Questions...}
\begin{itemize} \begin{itemize}

View File

@ -1,47 +1,65 @@
\chapter{Photographie} \chapter{Photographie}
\index{Photo} \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} \section{gphoto2}
\index{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. les choses peuvent être (rarement) différentes chez vous.
L'appareil photo que j'utilise actuellement est un 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} \begin{verbatim}
gphoto2 --list-ports gphoto2 --list-ports
gphoto2 --list-cameras gphoto2 --list-cameras
gphoto2 --auto-detect
\end{verbatim} \end{verbatim}
Deux commandes pour obtenir la description des modes de connexion Ces trois commandes servent à obtenir la description des modes de
possibles, et la liste des appareils gérés. connexion possibles, la liste des appareils gérés, et l'éventuel
appareil connecté, si il est sous tension, bien entendu :)
%----------------------------------------------------------------
\begin{verbatim} \begin{verbatim}
gphoto2 --auto-detect
gphoto2 --port usb:002,002 -P gphoto2 --port usb:002,002 -P
\end{verbatim} \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 bestiale de toutes les photos (l'option \texttt{-P} peut
être remplacée par \texttt{--get-all-files}). être remplacée par \texttt{--get-all-files}).
L'option \texttt{--new} permet de se limiter au L'option \texttt{--new} permet de se limiter au
téléchargement des nouvelles photos. téléchargement des nouvelles photos.
Pour les drogués de la ligne de commande, l'option \texttt{--shell} Pour les drogués de la ligne de commande, l'option \texttt{--shell}
démarre un environnement interactif, qui permet d'explorer le 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 Il doit exister plein d'autres tricks'n'tips, il faut juste prendre
le temps de les découvrir. le temps de les découvrir.
%---------------------------------------------------------------- %================================================================
\section{ufraw} \section{ufraw}
\index{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 \textit{RAW}, c'est à dire en général les données brutes en sortie
du capteur de l'appareil photo. du capteur de l'appareil photo.
%---------------------------------------------------------------- %================================================================

View File

@ -27,6 +27,9 @@ Pour faire une planche contact d'une vidéo :
jpeg:outdir=/tmp -sstep 60 monfichier.ts} jpeg:outdir=/tmp -sstep 60 monfichier.ts}
% -------------------------------------------------------------------- % --------------------------------------------------------------------
%
% <doug> https://img.ly/blog/ultimate-guide-to-ffmpeg/
%
\section{ffmpeg} \section{ffmpeg}
\index{ffmpeg} \index{ffmpeg}

View File

@ -7,7 +7,8 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
int main(int argc, char *argv[]) /* ------------------------------------------------------------------ */
int check_a_file_by_fp(FILE *fp, char *filename)
{ {
int input, linenum, count; int input, linenum, count;
int flagline; int flagline;
@ -22,16 +23,52 @@ while (EOF != (input=getc(stdin))) {
} }
if ((input < 0) || (input>127)) { if ((input < 0) || (input>127)) {
if (!flagline) { if (!flagline) {
fprintf(stderr, "non ascii 0x%x line %d\n", fprintf(stderr, "%s: non ascii 0x%x line %d\n",
filename,
input, linenum); input, linenum);
flagline = 1; flagline = 1;
} }
count++; count++;
} }
} }
if (count) { return count;
fprintf(stderr, "at least %d non-ascii characters found\n", count); }
exit(1); /* ------------------------------------------------------------------ */
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 ? "<stdin>" : 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<argc; idx++) {
printf("%4d %s\n", idx, argv[idx]);
}
}
return 0; return 0;
} }
/* ------------------------------------------------------------------ */

5
code/sqlite/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
*.sqlite

2
code/sqlite/README.md Normal file
View File

@ -0,0 +1,2 @@
# sqlite

12
code/sqlite/create-and-fill.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
DBFILE='example.sqlite'
rm -v $DBFILE
sqlite3 $DBFILE < create-table.sql
echo 'table created'
sqlite3 $DBFILE < insert-birds.sql
echo 'bird added'

View File

@ -0,0 +1,14 @@
CREATE TABLE detections (
Date DATE,
Time TIME,
Sci_Name VARCHAR(100) NOT NULL,
Com_Name VARCHAR(100) NOT NULL,
Confidence FLOAT,
Lat FLOAT,
Lon FLOAT,
Cutoff FLOAT,
Week INT,
Sens FLOAT,
Overlap FLOAT,
File_Name VARCHAR(100) NOT NULL);

View File

@ -0,0 +1,10 @@
insert into detections
(Sci_Name, Com_Name, File_Name)
values
('Foonis Barus', 'foobar','foo.wav') ;
insert into detections
(Sci_Name, Com_Name, File_Name)
values
('Quuxinus Oncore', 'quux','quux.wav') ;

View File

@ -162,7 +162,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
\input{chap/hardware} \input{chap/hardware}
\input{chap/gadgets} \input{chap/gadgets}
\input{chap/sdr} \input{chap/sdr}
\input{chap/bdd} % nouveau 26 octobre 2022
\input{chap/slang} \input{chap/slang}
\input{chap/curses} \input{chap/curses}
\input{chap/openwrt} \input{chap/openwrt}