Compare commits
2 Commits
8a17ec60c5
...
b36e5ea983
Author | SHA1 | Date | |
---|---|---|---|
|
b36e5ea983 | ||
|
09a846f9b1 |
6
.gitignore
vendored
6
.gitignore
vendored
@ -30,9 +30,5 @@ code/plugiciel.so
|
|||||||
code/appelant
|
code/appelant
|
||||||
code/flydraw.png
|
code/flydraw.png
|
||||||
code/flydraw.gif
|
code/flydraw.gif
|
||||||
|
code/xform/yesyno
|
||||||
|
|
||||||
|
|
||||||
A
|
|
||||||
|
|
||||||
D
|
|
||||||
code/flydraw.gif
|
|
||||||
|
@ -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}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
% ========================================
|
||||||
|
|
||||||
|
12
chap/X11.tex
12
chap/X11.tex
@ -153,7 +153,17 @@ protocol, improved threading support, and extensibility.
|
|||||||
en C, mais le premier exemple du tutorial d'initiation ne fonctionne
|
en C, mais le premier exemple du tutorial d'initiation ne fonctionne
|
||||||
pas vraiment comme il devrait. Mais quand même une affaire à suivre.
|
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
|
||||||
|
|
||||||
%-------------------------------------------------------------------
|
%-------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
26
chap/ioctl.tex
Normal 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})
|
||||||
|
|
||||||
|
% =========================================================
|
@ -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
37
chap/sdr.tex
Normal 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}
|
||||||
|
|
||||||
|
|
||||||
|
% ===================================================
|
@ -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}).
|
||||||
|
|
||||||
%------------------------------------------------------------------
|
%------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -1,16 +1,18 @@
|
|||||||
#include <forms.h>
|
#include <forms.h>
|
||||||
|
/*
|
||||||
|
* gcc yesno.c -lforms -O YESYNO
|
||||||
|
*/
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
FL_FORM *form;
|
FL_FORM *form;
|
||||||
FL_OBJECT *yes,
|
FL_OBJECT *yes,
|
||||||
*no,
|
*no,
|
||||||
*but;
|
*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);
|
form = fl_bgn_form(FL_UP_BOX, 320, 120);
|
||||||
fl_add_box(FL_BORDER_BOX, 160, 40, 0, 0, \
|
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, \
|
yes = fl_add_button(FL_NORMAL_BUTTON, \
|
||||||
40, 70, 80, 30, "Yes");
|
40, 70, 80, 30, "Yes");
|
||||||
no = fl_add_button(FL_NORMAL_BUTTON, \
|
no = fl_add_button(FL_NORMAL_BUTTON, \
|
||||||
@ -18,10 +20,10 @@ int main(int argc, char *argv[]) {
|
|||||||
fl_end_form();
|
fl_end_form();
|
||||||
|
|
||||||
fl_show_form(form, FL_PLACE_MOUSE, FL_TRANSIENT, \
|
fl_show_form(form, FL_PLACE_MOUSE, FL_TRANSIENT, \
|
||||||
"Question");
|
"Vroum !");
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
if (fl_do_forms() == yes {
|
if (fl_do_forms() == yes) {
|
||||||
printf("Yes is pushed\n");
|
printf("Yes is pushed\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
7
main.tex
7
main.tex
@ -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}
|
||||||
|
Loading…
Reference in New Issue
Block a user