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,
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}
% ========================================

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.}
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}
% ===============================================================

View File

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

View File

@ -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.
%----------------------------------------------------------------
%================================================================

View File

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

View File

@ -7,7 +7,8 @@
#include <stdio.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 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 ? "<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;
}
}
/* ------------------------------------------------------------------ */

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/gadgets}
\input{chap/sdr}
\input{chap/bdd} % nouveau 26 octobre 2022
\input{chap/slang}
\input{chap/curses}
\input{chap/openwrt}