more bla, again

This commit is contained in:
tth 2021-12-23 20:06:52 +01:00
parent 09a846f9b1
commit b36e5ea983
9 changed files with 165 additions and 44 deletions

View File

@ -5,6 +5,8 @@ un des premiers langages évolués. Il a été conçu après la seconde
guerre mondiale, en 1954, par guerre mondiale, en 1954, par
John Warner Backus, ingénieur en radiophonie chez IBM\index{IBM}, John Warner Backus, ingénieur en radiophonie chez IBM\index{IBM},
% ========================================
\section{F77} \section{F77}
Dernière version à exiger le format '80 colonnes' des cartes perforées, Dernière version à exiger le format '80 colonnes' des cartes perforées,
@ -12,7 +14,27 @@ 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}. Nom officiel : \texttt{ANSI X3.9-1978}.
\section{Et après} \index{gfortran} % ========================================
\section{Gfortan} \index{gfortran}
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. Les dinos vont devoir s'adapter. chose de bien plus moderne : le Fortran 90.
Les dinos vont devoir s'adapter. Et utiliser \texttt{gfortran},
de la Gnu Compiler Collection\index{gcc}.
Il est obligatoire d'avoir l'exemple canonique, donc le voilà.
Il faut l'enregister dans un fichier nommé \texttt{hello.f90}
pour que le compilateur le comprenne.
\begin{verbatim}
program hello
implicit none
print *, "hello world"
end
\end{verbatim}
% ========================================

View File

@ -6,8 +6,8 @@
\index{curses} \index{curses}
En fait, nous allons plutôt parler de \textbf{ncurses} qui est En fait, nous allons plutôt parler de \textbf{ncurses} qui est
l'implémentation actuelle de l'ancêtre \texttt{curses}. Voic ce l'implémentation actuelle de l'ancêtre \texttt{curses}.
qu'en dit une page de man~: Voici ce qu'en dit une page de man~:
\begin{quote} \begin{quote}
The ncurses library routines give the user a terminal-independent The ncurses library routines give the user a terminal-independent
@ -23,6 +23,46 @@ chaque cellule de votre écran (la case où l'on peut mettre
un caractère) pour y écrire quelque chose, en gérant des un caractère) pour y écrire quelque chose, en gérant des
attributs tels que gras ou souligné. attributs tels que gras ou souligné.
% =========================================================
\section{Les principes}
\begin{itemize}
\item{Indépendance de l'écran physique}
\item{Fenêtre et sous-fenêtre}
\item{Deux écrans : stdscr et curscr}
\end{itemize}
Au tout début était le terminal canonique, la \textsc{Teletype}.
C'est dans le doux cliquetis de la vénérable \texttt{ASR33}
que se sont échaffaudées les premières lignes du code, écrites
avec \textsl{the only true one}\footnote{ed}.
Ensuite sont arrivés les terminaux à écran vidéo, les fameuses
\textsl{Glass TTYs}, qui ne tardèrent pas à se munir d'un
curseur adressable, ce qui permet alors d'écrire un caractère
à n'importe quelle endroit de l'écran.
Adm3a, vt52, Qume 60...
Une structure essentielle dans curses est l'écran,
appelé \textsl{screen} dans l'original. C'est une matrice
rectangulaire de cellules caractère/attribut et quelques
données associées.
Pourquoi deux écrans ? La mécanique interne de curses
maintient en interne deux écrans (qui sont en fait des fenêtres
de la taille de l'écran physique) connus sous les noms de
\texttt{stdscr} et \texttt{curscr}.
Le premier est celui que voit l'application, et qu'il peut manipuler
avec les fonctions (genre \texttt{mvaddstr})
que nous verrons très bientôt.
Et le second est l'image que se fait la mécanique de l'écran
physique, donc ce que voit le yuser.
% =========================================================
\section{Premier exemple} \section{Premier exemple}
Bien entendu, nous commencerons par l'ECM traditionnel de rigueur. Bien entendu, nous commencerons par l'ECM traditionnel de rigueur.
@ -43,6 +83,8 @@ une capture d'écran, puisque je me permet de supposer que vous
avez pris le temps de compiler l'exemple, et de voir par vous même avez pris le temps de compiler l'exemple, et de voir par vous même
ce que ça donne. ce que ça donne.
% =========================================================
\section{Bell and whistles} \section{Bell and whistles}
Voici comment centrer sur la ligne du haut Voici comment centrer sur la ligne du haut
@ -62,6 +104,14 @@ La liste complète est dans le man~: \texttt{attr(3NCURSES)},
avec plein avec plein
de fonctions spécialisées dans le traitement des attributs. de fonctions spécialisées dans le traitement des attributs.
% =========================================================
\section{Les fenêtres}
% =========================================================
\section{Astuces} \section{Astuces}
Dans une boucle interactive, on va utiliser \texttt{getch()}, qui va Dans une boucle interactive, on va utiliser \texttt{getch()}, qui va

View File

@ -1,7 +1,20 @@
\chapter{Hardware} \chapter{Hardware}
\label{chap:hardware} \label{chap:hardware}
% -----------------------------------------------------------
\section{Joystick}\index{joystick}
\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}
% -----------------------------------------------------------
\section{Diagnostics} \section{Diagnostics}
@ -12,7 +25,7 @@ dmesg, lshw, lsusb, lspci\dots
% ----------------------------------------------------------- % -----------------------------------------------------------
\section{Ports série} \section{Ports série}
\index{rs232} \index{rs232} \label{rs232}
\begin{quote} \begin{quote}
RS-232 (parfois appelée EIA RS-232, EIA 232 ou TIA 232) est RS-232 (parfois appelée EIA RS-232, EIA 232 ou TIA 232) est
@ -55,7 +68,7 @@ servir un port série ? » appelle un réponse presque évidente~:
« à plusieurs choses ». Une petite liste~: « à plusieurs choses ». Une petite liste~:
Connecter un Minitel\index{MINITEL} Connecter un Minitel\index{MINITEL}
pour dialoguer avec Ulla Trentsixquinze ? Brancher un pour dialoguer avec Ulla Trentsixquinze ? Brancher un
Sportster 14400 pour retouver Fidonet\index{Fidonet} ? Sportster 14400 pour retrouver Fidonet\index{Fidonet} ?
Discuter avec un équipement avionnique ? Rediriger Discuter avec un équipement avionnique ? Rediriger
l'impression d'un MSX\index{MSX} vers Cups\index{cups} ? l'impression d'un MSX\index{MSX} vers Cups\index{cups} ?
@ -64,7 +77,6 @@ est la limite\footnote{Comme à peu près tout dans la vie.}
% ----------------------------------------------------------- % -----------------------------------------------------------
\section{Disques durs} \section{Disques durs}
Iozone ? Bonnie ? Smart\index{smart} ? UUID\index{uuid} ? Iozone ? Bonnie ? Smart\index{smart} ? UUID\index{uuid} ?

26
chap/ioctl.tex Normal file
View File

@ -0,0 +1,26 @@
\chapter{I/O control}
\label{chap:ioctl} \index{ioctl}
Un des paradigmes les plus connus à propos des systèmes de la
famille Unix est : \textsf{Tout est vu comme un fichier}.
C'est souvent vrai, mais parfois ce n'est pas suffisant.
Prenons rapidement un exemple, le baton de joie\index{joystick}
dans Linux.
\begin{verbatim}
int foo, joy_fd;
struct js_event js;
char joy_name[128];
joy_fd = open(joy_device , O_RDONLY);
\end{verbatim}
% =========================================================
Ailleurs dans ce document : Ports série (p. \pageref{rs232})
% =========================================================

View File

@ -1,9 +1,11 @@
\chapter{OpenWrt} \chapter{OpenWrt}
\label{chap:openwrt} \label{chap:openwrt}
\index{openwrt} \index{OpenWrt}
Sur quoi tenter de le faire tourner ?
\begin{verbatim} \begin{verbatim}
TP Ling TP Link
AC 1750 AC 1750
Archer C7 Archer C7
\end{verbatim} \end{verbatim}

37
chap/sdr.tex Normal file
View File

@ -0,0 +1,37 @@
\chapter{Sofware Defined Radio}
\label{chap:sdr} \index{sdr}
Beaucoup d'empirisme danc ce chapitre.
Tout d'abord, le matériel à ma disposition~:
\begin{verbatim}
Bus 004 Device 010: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
\end{verbatim}
Ensuite, le premier hack, dont je n'ai pas encore bien capté
la raison~:
\begin{verbatim}
$ cat /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf
# added by tth
blacklist dvb_usb_rtl28xxu
\end{verbatim}
% ===================================================
\section{CubicSDR}
\begin{quote}
CubicSDR is a cross-platform Software Defined Radio application which
allows you to navigate the radio spectrum and demodulate any signals
you might discover. It currently includes several common analog
demodulation schemes such as AM and FM and will support digital modes
in the future.
SDR hardware is accessed through SoapySDR and therefore any
hardware for which a SoapySDR module exists can be used as a receiver
with CubicSDR.
\end{quote}
% ===================================================

View File

@ -4,7 +4,7 @@
Abordons maintenant un sujet complexe : Abordons maintenant un sujet complexe :
le son en général, le son en général,
la musique (p. \pageref{chap:musique}) et la la musique (p. \pageref{chap:musique}) et la
synthèse(p. \pageref{chap:modular}). synthèse de sons (p. \pageref{chap:modular}).
%------------------------------------------------------------------ %------------------------------------------------------------------

View File

@ -1,33 +0,0 @@
#include <forms.h>
int main(int argc, char *argv[]) {
FL_FORM *form;
FL_OBJECT *yes,
*no,
*but;
fl_initialize(&argc, argv, "FormDemo", 0, 0);
form = fl_bgn_form(FL_UP_BOX, 320, 120);
fl_add_box(FL_BORDER_BOX, 160, 40, 0, 0, \
"Do you want to Quit?");
yes = fl_add_button(FL_NORMAL_BUTTON, \
40, 70, 80, 30, "Yes");
no = fl_add_button(FL_NORMAL_BUTTON, \
200, 70, 80, 30, "No");
fl_end_form();
fl_show_form(form, FL_PLACE_MOUSE, FL_TRANSIENT, \
"Question");
while (1) {
if (fl_do_forms() == yes {
printf("Yes is pushed\n");
break;
}
else printf("No is pushed\n");
}
fl_finish();
return 0;
}

View File

@ -30,6 +30,7 @@
\makeatletter \makeatletter
\def\verbatim@font{\normalfont\ttfamily\small} \def\verbatim@font{\normalfont\ttfamily\small}
% XXX \def\quote@font{\sffamily}
\makeatother \makeatother
\title{Tricks pour mon ordinateur} \title{Tricks pour mon ordinateur}
@ -117,7 +118,7 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
\input{chap/webcam} \input{chap/webcam}
% \input{chap/SCSI} % \input{chap/SCSI}
\input{chap/X11} \input{chap/X11}
% \input{chap/Fortran} \input{chap/Fortran}
% \input{chap/GMP} % \input{chap/GMP}
\input{chap/Python} \input{chap/Python}
\input{chap/dino} \input{chap/dino}
@ -136,6 +137,8 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
\input{chap/photos} \input{chap/photos}
\input{chap/plugins} \input{chap/plugins}
\input{chap/Bonjour} \input{chap/Bonjour}
\input{chap/ioctl}
\input{chap/debug} \input{chap/debug}
\input{chap/buzybox} \input{chap/buzybox}
\input{chap/gif89a} \input{chap/gif89a}
@ -146,6 +149,8 @@ en ligne sur le site du Tetalab. Your mileage may vary\dots
\input{chap/ssh} \input{chap/ssh}
\input{chap/hardware} \input{chap/hardware}
\input{chap/gadgets} \input{chap/gadgets}
\input{chap/sdr}
% \input{chap/slang} % \input{chap/slang}
\input{chap/curses} \input{chap/curses}
\input{chap/openwrt} \input{chap/openwrt}