Browse Source

more bla, again

master
tth 9 months ago
parent
commit
b36e5ea983
  1. 26
      chap/Fortran.tex
  2. 54
      chap/curses.tex
  3. 18
      chap/hardware.tex
  4. 26
      chap/ioctl.tex
  5. 6
      chap/openwrt.tex
  6. 37
      chap/sdr.tex
  7. 2
      chap/son.tex
  8. 33
      code/xf_yesno.c
  9. 7
      main.tex

26
chap/Fortran.tex

@ -5,6 +5,8 @@ un des premiers langages évolués. Il a été conçu après la seconde @@ -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, @@ -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}
% ========================================

54
chap/curses.tex

@ -6,8 +6,8 @@ @@ -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 @@ -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 @@ -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)}, @@ -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

18
chap/hardware.tex

@ -1,8 +1,21 @@ @@ -1,8 +1,21 @@
\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}
Quand les choses ne se passent pas comme prévu, quand il
@ -12,7 +25,7 @@ dmesg, lshw, lsusb, lspci\dots @@ -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~: @@ -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.} @@ -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

@ -0,0 +1,26 @@ @@ -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})
% =========================================================

6
chap/openwrt.tex

@ -1,9 +1,11 @@ @@ -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

@ -0,0 +1,37 @@ @@ -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}
% ===================================================

2
chap/son.tex

@ -4,7 +4,7 @@ @@ -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}).
%------------------------------------------------------------------

33
code/xf_yesno.c

@ -1,33 +0,0 @@ @@ -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;
}

7
main.tex

@ -30,6 +30,7 @@ @@ -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 @@ -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 @@ -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 @@ -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}

Loading…
Cancel
Save