a 771 lines diff
This commit is contained in:
parent
c6fe2224bf
commit
c3e227f472
24
chap/C.tex
24
chap/C.tex
@ -553,6 +553,10 @@ décomposer~:
|
||||
utiliser une liste pré-définie de séparateur de champs,
|
||||
comme le \$IFS du shell.
|
||||
|
||||
Pour simplifier l'exemple, toutes les commandes susceptibles d'être
|
||||
tapées
|
||||
seront structurées de la même manière.
|
||||
|
||||
\subsection{la fonction \texttt{strtok}} \index{strtok}
|
||||
|
||||
Cette fonction nous permet de « découper » notre ligne de commande
|
||||
@ -580,21 +584,26 @@ on peut ensuite aller regarder dans la mémoire ce qui s'y passe~:
|
||||
66 6f 6f 20 20 20 62 61 72 09 71 75 75 78 20 77 69 7a 00
|
||||
f o o b a r q u u x w i z
|
||||
--- 1er strtok
|
||||
66 6f 6f 00 20 20 62 61 72 09 71 75 75 78 20 77 69 7a 00
|
||||
66 6f 6f \0 20 20 62 61 72 09 71 75 75 78 20 77 69 7a 00
|
||||
f o o b a r q u u x w i z
|
||||
got [foo]
|
||||
\end{verbatim}
|
||||
|
||||
Déja on peut constater que la chaine de départ est modifiée, ce qui
|
||||
Donc, \texttt{strtok} a détecté le premier caractère de séparation,
|
||||
ici un espace, qui est juste après le premier mot de la ligne à analyser,
|
||||
et l'a remplacé par un '\symbol{92}0', le marqueur de fin de chaine.
|
||||
Le premier mot (foo) a bien été isolé.
|
||||
|
||||
on peut constater que la chaine de départ est modifiée, ce qui
|
||||
risque de causer des soucis, mais on en parlera plus tard.
|
||||
|
||||
|
||||
|
||||
|
||||
\subsection{Le programme complet}
|
||||
|
||||
\lstinputlisting[language=c]{code/C/demo-strtok.c}
|
||||
|
||||
|
||||
|
||||
% =========================================================
|
||||
|
||||
\section{Erreurs classiques}
|
||||
@ -620,6 +629,8 @@ pièges fourbes et sournois. Sans parler des UBs, hein\dots
|
||||
|
||||
XXX \index{XXX}
|
||||
|
||||
Un ordinateur est déterministe.
|
||||
|
||||
% =========================================================
|
||||
|
||||
\section{Debug} \index{Debug}
|
||||
@ -656,6 +667,8 @@ https://devblogs.microsoft.com/oldnewthing/20230109-00/?p=107685
|
||||
|
||||
\section{Dessiner}
|
||||
|
||||
% XXX insert blabla here
|
||||
|
||||
\subsection{G2} \index{g2} \label{g2}
|
||||
|
||||
\begin{quote}
|
||||
@ -667,6 +680,9 @@ types of devices.
|
||||
|
||||
\lstinputlisting[language=c]{code/g2/un_dessin.c}
|
||||
|
||||
%
|
||||
% XXX EXEMPLE TROP MINIMALISTE !!!
|
||||
%
|
||||
|
||||
% =========================================================
|
||||
|
||||
|
@ -127,12 +127,16 @@ Partie imaginaire : \texttt{ipart = aimag(cmplx)}.
|
||||
|
||||
Une « structure », c'est comme une petite boite dans laquelle on peut
|
||||
mettre des variables de différentes natures.
|
||||
Les accès à chacune de ces variables sont idépendants les uns des autres.
|
||||
|
||||
\begin{lstlisting}
|
||||
type t_pixrgb
|
||||
integer :: r, g, b
|
||||
integer :: alpha = 0
|
||||
end type
|
||||
|
||||
t_pixrgb :: pixel
|
||||
pixel%r = 0x55
|
||||
\end{lstlisting}
|
||||
|
||||
Nous verrons plus loin l'importance de cette notion.
|
||||
|
@ -17,6 +17,8 @@ in the United States used for the purposes of trading information,
|
||||
sharing news, discussing new and exciting developments,
|
||||
and collaborating on research results and projects.}
|
||||
|
||||
% ==================================================================
|
||||
|
||||
\section{slrn}
|
||||
\index{slrn}
|
||||
\label{slrn}
|
||||
@ -31,12 +33,18 @@ be extended using the embedded S-Lang interpreter.
|
||||
printf 'set wrap_flags 7\nset wrap_width 72\n' >> .slrnrc
|
||||
\end{verbatim}
|
||||
|
||||
% ==================================================================
|
||||
|
||||
\section{leafnode}
|
||||
\index{leafnode}
|
||||
|
||||
Leafnode est l'outil essentiel si on désire troller au fond du jardin,
|
||||
en dehors du rayon d'action de sa box.\index{troll} On peut le voir
|
||||
comme une sorte de proxy, mais pas que.
|
||||
comme une sorte de proxy, mais pas que. Il permet aussi d'agréguer
|
||||
plusieurs feeds, ce qui permet de combler les trous, et de donner accès
|
||||
à Usenet à votre réseau local.
|
||||
|
||||
% ==================================================================
|
||||
|
||||
\section{INN}
|
||||
\index{INN}
|
||||
@ -44,8 +52,11 @@ comme une sorte de proxy, mais pas que.
|
||||
Voilà, c'est le moment de parler de l'engin fondamental de ce réseau
|
||||
de discussions. INN.
|
||||
|
||||
% ==================================================================
|
||||
|
||||
\section{fufe} \index{fufe}
|
||||
|
||||
\textbf{It's a trap !}
|
||||
N'y allez pas, \textbf{It's a trap !}
|
||||
|
||||
.
|
||||
|
||||
% ==================================================================
|
||||
|
12
chap/X11.tex
12
chap/X11.tex
@ -1,6 +1,18 @@
|
||||
\chapter{X11}
|
||||
\label{chap:X11}\index{X11}
|
||||
|
||||
L'écosysteme X11 semble être en fin de carrière pour plusieurs
|
||||
raisons~: sa complexité
|
||||
\textsl{mille-feuilles} accumulée au fil des décennies, ses
|
||||
failles de sécurité réelles ou potentielles, la difficulté
|
||||
de sa maintenance; raisons qui trainent depuis trop
|
||||
longtemps\dots
|
||||
|
||||
À l'heure actuelle (Octobre 2023) le successeur/remplaçant du
|
||||
vénérable X11 « \texttt{Wayland}\index{wayland} » commence tout
|
||||
juste à arriver dans les distributions Linux et à la
|
||||
page \pageref{chap:wayland}. Mais il reste un long chemin
|
||||
à parcourir pour une transition sans larme.
|
||||
|
||||
%-------------------------------------------------------------------
|
||||
\section{Les fontes}
|
||||
|
49
chap/bdd.tex
49
chap/bdd.tex
@ -1,7 +1,9 @@
|
||||
\chapter{Bases de données}
|
||||
\label{chap:bdd}
|
||||
\label{chap:bdd} \index{SQL}
|
||||
|
||||
% ----------------------------------------------------------------
|
||||
|
||||
|
||||
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
\section{sqlite} \index{sqlite}
|
||||
|
||||
@ -13,15 +15,60 @@
|
||||
% ----------------------------------------------------------------
|
||||
\subsection{Libreoffice} \index{Libreoffice}
|
||||
|
||||
|
||||
|
||||
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
\section{GDBM} \index{GDBM}
|
||||
|
||||
Alors là, carrément du vieux truc...
|
||||
|
||||
\begin{quote}
|
||||
GDBM - The GNU database manager. Includes dbm and ndbm compatibility.
|
||||
\end{quote}
|
||||
|
||||
Gnu DBM permet de stocker des paires clef/valeur dans un fichier
|
||||
de données. Chacune de ces clefs doit être unique, et doit être
|
||||
liée avec une seule valeur\footnote{Peut-on alors parler
|
||||
de bijection relationnelle ?}.
|
||||
|
||||
% ----------------------------------------------------------------
|
||||
|
||||
\subsection{Exemple en Perl} \index{Perl}
|
||||
|
||||
\begin{verbatim}
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
use strict;
|
||||
use GDBM_File;
|
||||
|
||||
my $nomdb = "exemple.gdbm";
|
||||
my (%DB, @champs);
|
||||
my ($user, $gecos);
|
||||
|
||||
open(SOURCE, "< /etc/passwd") or die "source $!";
|
||||
tie(%DB, "GDBM_File", $nomdb, GDBM_WRCREAT, 0666) or die "gdbm $!";
|
||||
|
||||
while (<SOURCE>) {
|
||||
@champs = split ":", $_;
|
||||
$user = $champs[0]."\0";
|
||||
$gecos = $champs[4]."\0";
|
||||
$DB{$user} = $gecos;
|
||||
}
|
||||
|
||||
untie %DB;
|
||||
close SOURCE;
|
||||
0;
|
||||
\end{verbatim}
|
||||
|
||||
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
\section{Postgresql}
|
||||
|
||||
Le poids lourd du domaine.
|
||||
|
||||
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
\section{Et le "NoSQL" ?} \index{nosql} \index{troll}
|
||||
|
||||
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
@ -69,7 +69,7 @@ XXX\index{XXX}
|
||||
|
||||
\section{Exemples pratiques}
|
||||
|
||||
Dans un Makefile~:
|
||||
Dans un Makefile\footnote{Les makefiles, c'est le bien !}~:
|
||||
|
||||
\begin{verbatim}
|
||||
indoor.gif: $(DEPS)
|
||||
@ -85,6 +85,7 @@ indoor.gif: $(DEPS)
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
|
||||
% ==================================================================
|
||||
|
||||
\section{gifsicle}
|
||||
|
@ -66,6 +66,8 @@ le résultat de ce script en « pour de vrai ».}
|
||||
|
||||
\section{Paramétrer la plume}
|
||||
|
||||
Largeur, couleur, odeur, toussa.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
|
||||
\section{La 3D avec \texttt{splot}} \index{splot}
|
||||
@ -78,8 +80,21 @@ gnuplot> help set view
|
||||
supports orthographic projections only. It supports both 3D projection or
|
||||
orthogonal 2D projection into a 2D plot-like map.
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
|
||||
|
||||
\section{Des trucs...}
|
||||
|
||||
Comment générer un signal carré~:
|
||||
|
||||
% https://lcamtuf.substack.com/p/square-waves-or-non-elephant-biology
|
||||
|
||||
\begin{verbatim}
|
||||
set samples 2000
|
||||
odd_h(x, n) = sin(x * (2*n - 1)) / (2*n - 1)
|
||||
plot sum [n=1:20] 4/pi * odd_h(x, n)
|
||||
\end{verbatim}
|
||||
|
||||
% -------------------------------------------------------------------
|
||||
|
||||
\section{Questions}
|
||||
|
@ -4,14 +4,14 @@
|
||||
% -----------------------------------------------------------
|
||||
\section{Joystick}\index{joystick}
|
||||
|
||||
La manette de jeu est un périphérique que j'affectionne particulièrement.
|
||||
|
||||
\begin{verbatim}
|
||||
int foo, joy_fd;
|
||||
struct js_event js;
|
||||
|
||||
|
||||
joy_fd = open(joy_device , O_RDONLY);
|
||||
foo = read(joy_fd, &js, sizeof(struct js_event));
|
||||
|
||||
\end{verbatim}
|
||||
|
||||
% -----------------------------------------------------------
|
||||
@ -23,6 +23,19 @@ y a des accrocs dans le plan, que le résultat n'est
|
||||
qu'une video totalement noire de 17 minutes.
|
||||
dmesg, lshw, lsusb, lspci\dots
|
||||
|
||||
% -----------------------------------------------------------
|
||||
% new: Fri Sep 22 11:13:36 UTC 2023
|
||||
|
||||
\subsection{lshw} \index{lshw}
|
||||
|
||||
\begin{quote}
|
||||
lshw is a small tool to extract detailed information on the hardware
|
||||
configuration of the machine. It can report exact memory configuration,
|
||||
firmware version, mainboard configuration, CPU version and speed, cache
|
||||
configuration, bus speed, etc. on DMI-capable x86 or IA-64 systems and
|
||||
on some PowerPC machines (PowerMac G4 is known to work).
|
||||
\end{quote}
|
||||
|
||||
% -----------------------------------------------------------
|
||||
\section{Ports série}
|
||||
\index{rs232} \label{rs232}
|
||||
|
@ -228,8 +228,10 @@ Ce sera, pour vous amis lecteurs, une dure mission à assumer.
|
||||
|
||||
\subsection{Ressources}
|
||||
|
||||
Le futur livre de Brunus. Réclamez les prmiers drafts dans
|
||||
l'IRC\index{IRC} \texttt{freenode\#paulla} \textit{:)}
|
||||
Le futur livre de Brunus.
|
||||
|
||||
Réclamez les prmiers drafts dans
|
||||
l'IRC\index{IRC} \texttt{libera.chat\#paulla} \textit{:)}
|
||||
|
||||
\texttt{http://www.fmwconcepts.com/imagemagick/index.php}
|
||||
|
||||
|
@ -9,18 +9,25 @@ Prenons rapidement un exemple, le baton de joie\index{joystick}
|
||||
dans Linux.
|
||||
|
||||
\begin{verbatim}
|
||||
int foo, joy_fd;
|
||||
struct js_event js;
|
||||
int joy_fd;
|
||||
char joy_name[128];
|
||||
|
||||
joy_fd = open(joy_device , O_RDONLY);
|
||||
|
||||
if (ioctl(joy_fd, JSIOCGNAME(sizeof(joy_name)), joy_name) < 0)
|
||||
strncpy(joy_name, "Unknown", sizeof(joy_name));
|
||||
fprintf(stderr, "Name: \"%s\"\n", joy_name);
|
||||
\end{verbatim}
|
||||
|
||||
|
||||
La macro \texttt{JSIOCGNAME} étant définie dans le fichier
|
||||
\texttt{/usr/include/linux/joystick.h} comme
|
||||
\texttt{\_IOC(\_IOC\_READ, 'j', 0x13, len)}.
|
||||
Bon, OK, j'aurais pu choisir un exemple plus simple,
|
||||
mais vous avez capté le principe\dots
|
||||
|
||||
% =========================================================
|
||||
|
||||
\vspace{5em}
|
||||
|
||||
Ailleurs dans ce document : Ports série (p. \pageref{rs232})
|
||||
|
||||
% =========================================================
|
||||
|
@ -1,7 +1,14 @@
|
||||
\chapter{scripting}
|
||||
|
||||
XXX
|
||||
|
||||
\section{Awk} \index{Awk}
|
||||
|
||||
Awk est un langage de programmation crée
|
||||
par Aho, Kernighan, and Weinberger%
|
||||
\footnote{The AWK Programming Language, Alfred V. Aho,
|
||||
Brian W. Kernighan, Peter J. Weinberger, Addison-Wesley, 1988.
|
||||
ISBN 0-201-07981-X. }.
|
||||
|
||||
Quelques \textsl{oneliners} de bon aloi pour vous donner
|
||||
une idée du langage\dots
|
||||
|
@ -8,21 +8,36 @@ bricolages constructifs et/ou amusant. Il y aura du gore\index{gore}
|
||||
aussi, parce que le shell est à la fois un interpréteur de commande
|
||||
et un langage de programmation.
|
||||
Ces deux notions ont beaucoup de choses en commun, comme nous
|
||||
allons essayer de le voir.
|
||||
allons essayer de le voir. Certains qualifient le shell de
|
||||
« langage de glue », et c'est une image assez pertinente.
|
||||
|
||||
Nous allons nous concentrer sur le \textsl{Bourne again shell}
|
||||
(aka \texttt{bash}\footnote{aka GNU/shell ?}) qui est un des plus
|
||||
répandus, du moins dans le monde Linux\index{Linux}.
|
||||
Mais il en existe d'autres : sh, ksh, ash, zsh, tthsh\dots
|
||||
Ce qui, bien entendu, pose quelques problèmes de compatibilité.
|
||||
|
||||
Ou alors, il faut reste \textsc{posix}, mais c'est pour le moment
|
||||
une autre histoire. Parce que là, on est plutôt dans une optique
|
||||
« morefun » sur l'utilisation de nos machines.
|
||||
|
||||
% ==============================================================
|
||||
|
||||
\section{Interpréteur}\index{cli}
|
||||
|
||||
Ceci est un prompt. Son petit nom est \texttt{PS1}. On peut y
|
||||
Ceci est un prompt : \texttt{tth@redlady:\textasciitilde\$}.
|
||||
Son petit nom est \texttt{PS1}. On peut y
|
||||
mettre plein d'informations utiles et de \textsl{mises en forme} assez
|
||||
funky\footnote{Un peu de calme, fatalerrors !} permettant
|
||||
d'enhancer la reliability de votre UI/UX.
|
||||
d'enhancer la reliability de votre UI/UX. Mais surtout il est
|
||||
là pour indiquer qu'il attend vos ordres, qu'il est prèt à
|
||||
interpréter vos lignes de commandes.
|
||||
|
||||
\begin{verbatim}
|
||||
tth@redlady:~$ date --utc
|
||||
Thu Oct 5 00:53:01 UTC 2023
|
||||
tth@redlady:~$
|
||||
\end{verbatim}
|
||||
|
||||
% ==============================================================
|
||||
|
||||
@ -57,13 +72,80 @@ Une invention géniale, dont vous pouvez voir un exemple d'utilisation
|
||||
par un gadget sonore en page \pageref{say-uptime} et
|
||||
un bout de code C en page \pageref{filtre-unix}.
|
||||
|
||||
Exemple rapide~:
|
||||
Exemple rapide, où la commande \texttt{uptime} envoie sa sortie dans
|
||||
le tuyau, et la commande \texttt{tr} va lire le tuyau pour
|
||||
son entrée~:
|
||||
|
||||
\begin{verbatim}
|
||||
$ uptime | tr " " "X"
|
||||
$ uptime | tr ' ' 'X'
|
||||
X09:22:29XupX33Xdays,X14:00,XX8Xusers,XXloadXaverage:X0.12,X0.17,X0.17
|
||||
\end{verbatim}
|
||||
|
||||
Bien entendu, on peut utiliser plusieurs tuyaux pour construire
|
||||
une chaine de traitements\footnote{La
|
||||
chaine de compilation \textsc{eqn/tbl/roff} est un bon exemple}.
|
||||
On peut même « intercepter » ce qui transite par un des tuyaux.
|
||||
|
||||
\begin{verbatim}
|
||||
$
|
||||
\end{verbatim}
|
||||
|
||||
% ==============================================================
|
||||
|
||||
\section{Les fonctions}
|
||||
|
||||
Une bonne manière de rendre votre code modulaire, et de réutiliser
|
||||
des bouts de code à volonté depuis plusieurs programmes.
|
||||
|
||||
Voici quelques fonctions~:
|
||||
|
||||
\lstinputlisting{code/shell/fonctions.sh}
|
||||
|
||||
Et comment les utiliser~:
|
||||
|
||||
\lstinputlisting{code/shell/demofonctions.sh}
|
||||
|
||||
% ==============================================================
|
||||
|
||||
% https://bwog-notes.chagratt.site/2023/le-heredoc/
|
||||
|
||||
\section{Heredoc}
|
||||
|
||||
Un nom difficile à traduire, peut-être par « document en place » ?
|
||||
|
||||
\lstinputlisting{code/shell/heredoc.sh}
|
||||
|
||||
\begin{verbatim}
|
||||
tth@redlady:~/Devel/TetaTricks$ code/shell/heredoc.sh
|
||||
|
||||
1 +--------------------------------------------------------------------+
|
||||
| +** *** + + + + |
|
||||
0.8 |-+.......**..........:.**.......:..........:.........sin(x).*******-|
|
||||
| ** : : * : : : : |
|
||||
0.6 |-+....**..:..........:....**....:..........:..........:..........:+-|
|
||||
| * : : * : : : : |
|
||||
0.4 |-+.**.....:..........:.......*..:..........:..........:..........:+-|
|
||||
| * : : * : : : : |
|
||||
0.2 |-*........:..........:.........**..........:..........:..........:+-|
|
||||
|* : : * : : : |
|
||||
0 |-+........:..........:..........:**........:..........:..........:+-|
|
||||
| : : : * : : : *|
|
||||
-0.2 |-+........:..........:..........:..**......:..........:..........:*-|
|
||||
| : : : * : : * |
|
||||
-0.4 |-+........:..........:..........:.....*....:..........:........**:+-|
|
||||
| : : : * : : * : |
|
||||
-0.6 |-+........:..........:..........:.......**.:..........:.....**...:+-|
|
||||
| : : : *: : ** : |
|
||||
-0.8 |-+........:..........:..........:..........**.........:..**......:+-|
|
||||
| + + + + *** +** + |
|
||||
-1 +--------------------------------------------------------------------+
|
||||
0 1 2 3 4 5 6
|
||||
\end{verbatim}
|
||||
|
||||
Je pense que l'exemple est assez parlant.
|
||||
Pour un exemple plus complet, toujours avec gnuplot, c'est vers la
|
||||
page \pageref{chap:gnuplot}.
|
||||
|
||||
% ==============================================================
|
||||
\section{Les \textsl{locales}}
|
||||
\index{locales}
|
||||
|
@ -59,6 +59,28 @@ D'un autre coté, c'est \texttt{roff} qui est utilisé pour formater
|
||||
les pages du manuel Unix. La documentation, c'est important.
|
||||
C'est pour ça que j'en cause page \pageref{chap:manpages}.
|
||||
|
||||
Voyons rapidement un exemple minumum compilable. XXX
|
||||
|
||||
\subsection{eqn}
|
||||
|
||||
\begin{quote}
|
||||
\texttt{eqn} compiles descriptions of equations embedded within troff
|
||||
input files into commands that are understood by troff.
|
||||
\end{quote}
|
||||
|
||||
\subsection{tbl}
|
||||
|
||||
\begin{quote}
|
||||
\texttt{tbl} compiles descriptions of tables embedded within troff
|
||||
input files into commands that are understood by troff.
|
||||
\end{quote}
|
||||
|
||||
\subsection{pic}
|
||||
|
||||
\begin{quote}
|
||||
\texttt{pic} compiles descriptions of pictures embedded within troff
|
||||
input files into commands that are understood by troff.
|
||||
\end{quote}
|
||||
|
||||
%-------------------------------------------------------------
|
||||
\section{yodl}
|
||||
@ -76,6 +98,8 @@ and texinfo, a poor-man's text converter and an experimental xml converter.
|
||||
\section{zoem}
|
||||
\index{zoem}
|
||||
|
||||
General-purpose macro/programming language for transforming text
|
||||
|
||||
\begin{quote}
|
||||
Zoem is a language for transforming text. It supports the creation of
|
||||
light-weight mark-up languages as macro packages built on top of zoem.
|
||||
|
@ -24,7 +24,8 @@ Et c'est là que les ennuis potentiels débarquent :
|
||||
les jours, «~ils vont se marcher sur les pieds~».
|
||||
|
||||
D'un autre coté, ce paradigme permet de faire des choses assez
|
||||
choupi, comme un synthétiseur d'évènement.
|
||||
choupi, comme un « synthétiseur d'évènement», notion que noue allons
|
||||
bientôt contempler.
|
||||
|
||||
% ----------------------------------------------------------------
|
||||
\section{Un exemple}
|
||||
|
@ -136,6 +136,38 @@ OMFG! Il manque le son.
|
||||
|
||||
% -----------------------------------------------------------------
|
||||
|
||||
\subsection{Capturer une vidéo}
|
||||
|
||||
%
|
||||
% mais où ai-je bien pu trouver ça ?
|
||||
%
|
||||
|
||||
|
||||
|
||||
\begin{verbatim}
|
||||
read -p "*** Press Enter to start recording ***"
|
||||
"$FFMPEGBIN" \
|
||||
-thread_queue_size 512 \
|
||||
-r "$RATE" \
|
||||
-f v4l2 \
|
||||
-video_size "$SIZE" \
|
||||
-i "$VIDEODEVICE" \
|
||||
-crf 0 \
|
||||
-c:v libx264 \
|
||||
-preset ultrafast \
|
||||
-threads 4 \
|
||||
"$FILENAME"
|
||||
\end{verbatim}
|
||||
|
||||
C'est un peu rudimentaire, mais il doit être possible de
|
||||
\textsl{tweaker} ça avec d'autres options, genre fixer
|
||||
la durée de la capture.
|
||||
|
||||
|
||||
|
||||
% -----------------------------------------------------------------
|
||||
|
||||
|
||||
\subsection{Questions}
|
||||
|
||||
Comment convertir lors de l'encodage un fichier \texttt{.WAV}
|
||||
|
7
chap/wayland.tex
Normal file
7
chap/wayland.tex
Normal file
@ -0,0 +1,7 @@
|
||||
\chapter{Wayland}
|
||||
|
||||
\label{chap:wayland} \index{wayland}
|
||||
|
||||
|
||||
L'avenir sans X11 ?\index{X11}
|
||||
|
@ -38,7 +38,8 @@ ioctl: VIDIOC_ENUM_FMT
|
||||
\end{verbatim}
|
||||
|
||||
Question : quelle méthode utiliser pour avoir la même chose avec
|
||||
des lignes de code écrites en C ?
|
||||
des lignes de code écrites en C ? Il faut passer par une suite d'appels
|
||||
\texttt{ioctl}\index{ioctl}.
|
||||
|
||||
% --------------------------------------------------------------------
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
/*
|
||||
* demo strtok
|
||||
* +-------------+
|
||||
* | demo strtok |
|
||||
* +-------------+
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
@ -14,7 +16,8 @@ unsigned char *ptr;
|
||||
printf(" --- %s\n", titre);
|
||||
ptr = (unsigned char *)ligne;
|
||||
for (foo=0; foo<combien; foo++) {
|
||||
printf("%02x ", ptr[foo]);
|
||||
if (ptr[foo]) printf("%02x ", ptr[foo]);
|
||||
else printf("\\0 ");
|
||||
}
|
||||
puts("");
|
||||
for (foo=0; foo<combien; foo++) {
|
||||
@ -49,6 +52,6 @@ dump_line("2eme & 3me strtok", copie, sizeof(input));
|
||||
foo = cptr - copie; /* this is the hack :) */
|
||||
|
||||
printf(" index = %d\n", foo);
|
||||
printf(" and we have [%s]\n", input+foo);
|
||||
printf(" and we have [%s] :)\n", input+foo);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,7 +1,3 @@
|
||||
/*
|
||||
* Hello, Sun.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
|
3
code/shell/demofonctions.sh
Executable file
3
code/shell/demofonctions.sh
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
. ./fonctions.sh
|
||||
message "hello world"
|
5
code/shell/fonctions.sh
Normal file
5
code/shell/fonctions.sh
Normal file
@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
message ()
|
||||
{
|
||||
echo $1 | boxes
|
||||
}
|
7
code/shell/heredoc.sh
Executable file
7
code/shell/heredoc.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
gnuplot << __EOC__
|
||||
set term dumb
|
||||
set grid
|
||||
plot [x=0:pi*2] sin(x)
|
||||
__EOC__
|
@ -126,6 +126,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
|
||||
\input{chap/webcam}
|
||||
% \input{chap/SCSI}
|
||||
\input{chap/X11}
|
||||
\input{chap/wayland} % nouveau septembre 2023
|
||||
\input{chap/Fortran}
|
||||
\input{chap/scripting}
|
||||
\input{chap/Arduino}
|
||||
@ -152,7 +153,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
|
||||
\input{chap/Bonjour}
|
||||
\input{chap/ioctl}
|
||||
\input{chap/debug}
|
||||
\input{chap/buzybox}
|
||||
% \input{chap/buzybox}
|
||||
\input{chap/gif89a}
|
||||
\input{chap/IRC}
|
||||
% \input{chap/SCCS} % nouveau 18 mars 2021
|
||||
@ -166,7 +167,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
|
||||
\input{chap/bdd} % nouveau 26 octobre 2022
|
||||
\input{chap/slang}
|
||||
\input{chap/curses}
|
||||
\input{chap/openwrt}
|
||||
% \input{chap/openwrt}
|
||||
\input{chap/WiFi}
|
||||
% \input{chap/GIT}
|
||||
\input{chap/divers}
|
||||
|
Loading…
Reference in New Issue
Block a user