Compare commits

..

2 Commits

Author SHA1 Message Date
tth
b36e5ea983 more bla, again 2021-12-23 20:06:52 +01:00
tth
09a846f9b1 xform - yesno.c 2021-11-18 14:36:08 +01:00
11 changed files with 186 additions and 24 deletions

6
.gitignore vendored
View File

@ -30,9 +30,5 @@ code/plugiciel.so
code/appelant
code/flydraw.png
code/flydraw.gif
code/xform/yesyno
A
D
code/flydraw.gif

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
John Warner Backus, ingénieur en radiophonie chez IBM\index{IBM},
% ========================================
\section{F77}
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
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
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

@ -153,7 +153,17 @@ protocol, improved threading support, and extensibility.
en C, mais le premier exemple du tutorial d'initiation ne fonctionne
pas vraiment comme il devrait. Mais quand même une affaire à suivre.
\lstinputlisting[language=c]{code/xf_yesno.c}
\lstinputlisting[language=c]{code/xform/yesno.c}
Compilation: \texttt{gcc yesno.c -lforms -o yesno}
En fait, je ne me souviens plus du petit souci qui m'a fait négliger
trop lontemps ce discret toolkit graphique, mais ça avait
quelque chose à voir avec
la constante \texttt{FL\_BORDER\_BOX} qui
\textbf{ne} fait \textbf{pas} le borderbox.
http://xforms-toolkit.org/examples.html
%-------------------------------------------------------------------

View File

@ -6,8 +6,8 @@
\index{curses}
En fait, nous allons plutôt parler de \textbf{ncurses} qui est
l'implémentation actuelle de l'ancêtre \texttt{curses}. Voic ce
qu'en dit une page de man~:
l'implémentation actuelle de l'ancêtre \texttt{curses}.
Voici ce qu'en dit une page de man~:
\begin{quote}
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
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}
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
ce que ça donne.
% =========================================================
\section{Bell and whistles}
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
de fonctions spécialisées dans le traitement des attributs.
% =========================================================
\section{Les fenêtres}
% =========================================================
\section{Astuces}
Dans une boucle interactive, on va utiliser \texttt{getch()}, qui va

View File

@ -1,7 +1,20 @@
\chapter{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}
@ -12,7 +25,7 @@ dmesg, lshw, lsusb, lspci\dots
% -----------------------------------------------------------
\section{Ports série}
\index{rs232}
\index{rs232} \label{rs232}
\begin{quote}
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~:
Connecter un Minitel\index{MINITEL}
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
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}
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}
\label{chap:openwrt}
\index{openwrt}
\index{OpenWrt}
Sur quoi tenter de le faire tourner ?
\begin{verbatim}
TP Ling
TP Link
AC 1750
Archer C7
\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 :
le son en général,
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,16 +1,18 @@
#include <forms.h>
/*
* gcc yesno.c -lforms -O YESYNO
*/
int main(int argc, char *argv[]) {
FL_FORM *form;
FL_OBJECT *yes,
*no,
*but;
fl_initialize(&argc, argv, "FormDemo", 0, 0);
fl_initialize(&argc, argv, "Yes or No ?", 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?");
"Do you want something?");
yes = fl_add_button(FL_NORMAL_BUTTON, \
40, 70, 80, 30, "Yes");
no = fl_add_button(FL_NORMAL_BUTTON, \
@ -18,10 +20,10 @@ int main(int argc, char *argv[]) {
fl_end_form();
fl_show_form(form, FL_PLACE_MOUSE, FL_TRANSIENT, \
"Question");
"Vroum !");
while (1) {
if (fl_do_forms() == yes {
if (fl_do_forms() == yes) {
printf("Yes is pushed\n");
break;
}

View File

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