diff --git a/chap/DNS.tex b/chap/DNS.tex new file mode 100644 index 0000000..d7825d3 --- /dev/null +++ b/chap/DNS.tex @@ -0,0 +1,87 @@ +\chapter{Domain Name Service} +\label{DNS} + +\section{host} +\index{host} + +C'est vraiment la commande de base pour tout ce qui touche à la +résolution de nom. Elle propose les premières options de base, +avec une syntaxe facile à retenir. Elle existe, sous des formes +légèrement déviantes, dans une grande partie des +OS\footnote{même dans le sale, c'est dire.} existants de nos jours. + + +\begin{verbatim} +tth@plop:~ $ host sigfood.dinorama.fr +sigfood.dinorama.fr has address 91.121.221.123 +tth@plop:~ $ host -t mx dinorama.fr +dinorama.fr mail is handled by 20 mx1.smeuh.org. +tth@plop:~ $ +\end{verbatim} + +Ces deux exemples sont encourageants. Est-il possible d'aller +plus loin ? + +% ------------------------------------------------------------ + +\section {nslookup} +\index{nslookup} + +\begin{quote} +Nslookup is a program to query Internet domain name +servers. Nslookup has two modes: interactive and +non-interactive. Interactive mode allows the user to query +name servers for information about various hosts and domains +or to print a list of hosts in a domain. Non-interactive mode +is used to print just the name and requested information for +a host or domain. » +\end{quote} + +% ------------------------------------------------------------ + +\section{dig} +\index{dig} + +Dig (\textit{domain information groper}) est un outil d'interrogation +des serveurs DNS. Par défaut, il questionne les serveurs +listés dans \texttt{/etc/resolv.conf}. + +Pour résoudre récursivement un nom de domaine à partir de la racine : +\$ dig +trace + +Pour le reverse d'une adresse IP : +\$ dig +trace -x + +% ------------------------------------------------------------ +\section{delv} +\index{delv} + +Nouvel outil en rapport avec DNSSEC\index{DNSSEC}. +% XXX +\index{XXX} +% http://www.bortzmeyer.org/delv.html +% XXX + +% ------------------------------------------------------------ + +\section{checkresolv} + + +Outil très basique conçu et bricolé par Tonton~Th au siècle +dernier lors d'un séjour à Frontignan-plage. + +% ------------------------------------------------------------ + +\section{dnsmasq} +\index{dnsmasq} + +\begin{quote} + +dnsmasq is a lightweight DNS, TFTP and DHCP server. It is intended to +provide coupled DNS and DHCP service to a LAN. +\end{quote} + + + + + diff --git a/chap/GIT.tex b/chap/GIT.tex index 0340d8f..64b1efb 100644 --- a/chap/GIT.tex +++ b/chap/GIT.tex @@ -6,8 +6,10 @@ aux quatre coins des interwebs. Je ne vais donc pas m'étendre plus que ça, pour passer tout de suite à un cas particulier \footnote{que je n'arrive pas encore à vraiment maitriser}. +% -------------------------------------------------------------------- \section{Démarrage} +\subsection{En local} \begin{verbatim} $ mkdir Foo $ cd Foo/ @@ -17,7 +19,7 @@ $ git add README.txt \end{verbatim} -\section{Setup du serveur} +\subsection{Setup du serveur} Sur le serveur distant, dans un endroit accessible par le protocole \texttt{HTTP}, il faut créer le dépot. @@ -33,16 +35,53 @@ Et ensuite : $ git update-server-info \end{verbatim} -\section{Pousser le code} +% -------------------------------------------------------------------- +\subsection{Pousser le code} Notre commit\index{commit} local semble pertinent, il est temps de le faire connaitre au monde. - \begin{verbatim} $ git push yuser@serveur:/chemin/vers/le/depot/Foo \end{verbatim} +% -------------------------------------------------------------------- + +\section{Configuration dynamique} + +\texttt{http://sandrotosi.blogspot.com/2020/10/multiple-git-configurations-depending.html} + +One way to change the user.email git config value is to git config --local +in every repo, but that's tedious, error-prone and +doesn't scale very well with many repositories +(and the chances to forget to set the right one on a new repo are ~100\%). + +The solution is to use the git-config ability to include +extra configuration files, based on the repo path, by using includeIf: +\vspace{1em} + +Content of \texttt{\$HOME/.gitconfig} : + +\begin{verbatim} +[user] + name = Sandro Tosi + email = @gmail.com + +[includeIf "gitdir:~/deb/"] + path = ~/.gitconfig-deb +\end{verbatim} + +Every time the git path is in ~/deb/ (which is where i have all Debian repos) +the file ~/.gitconfig-deb will be included; its content: + +\begin{verbatim} +[user] + email = morph@debian.org +\end{verbatim} + +That results in my personal address being used on all repos not part of Debian, where i use my Debian email address. This approach can be extended to every other git configuration values. +% -------------------------------------------------------------------- + \section{Krkrkr...} Tout cela semble bien compliqué. diff --git a/chap/IRC.tex b/chap/IRC.tex new file mode 100644 index 0000000..4492d1a --- /dev/null +++ b/chap/IRC.tex @@ -0,0 +1,39 @@ +% ============================================================== + +\chapter{Internet Relay Chat} +\index{IRC} + +% ============================================================== +\section{hybrid} +\index{hybrid} + +C'est le serveur utilisé par Smeuh. Une vrai galère à +configurer. + +On se retrouve vite dans des situations critiques, du genre +un \#canal où il n'y a plus de @op, et donc, on ne peut +plus changer le topix, et là, \textbf{ça craint vraiment} ! + +% ============================================================== + +\section{irssi} +\index{irssi} + +\begin{quote} +Irssi is a modular Internet Relay Chat client. It is highly extensible +and very secure. Being a fullscreen, termcap\index{termcap} based +client with many features, Irssi is easily extensible through scripts +and modules. +\end{quote} + +\begin{verbatim} +/recode add #gcu ISO-8859-15 +pinpin0: çhârsèt ? +\end{verbatim} + +\begin{verbatim} +/SET autoclose_windows OFF +\end{verbatim} + +% ============================================================== + diff --git a/chap/MIDI.tex b/chap/MIDI.tex index a8e8ff9..556c1e9 100644 --- a/chap/MIDI.tex +++ b/chap/MIDI.tex @@ -1,5 +1,5 @@ \chapter{Musical Instrument Digital Interface} -\label{MIDI} \index{MIDI} +\label{chap:midi} \index{MIDI} Dans un premier temps, je vais me concentrer sur les services \textsc{midi} offerts par la couche ALSA d'un @@ -27,8 +27,6 @@ tth@plop:~/Muzak/Samples$ aseqdump -l 14:0 Midi Through Midi Through Port-0 \end{verbatim} - - \subsection{aconnect} Maintenant que nous savons ce qui rentre dans notre machine, @@ -139,3 +137,9 @@ MIDI::Track (3pm) - functions and methods for MIDI tracks % --------------------------------------------------------- +\section{Et après ?} + +OSC\index{OSC} (page \pageref{chap:osc}) semble une possibilité +pour aller au-delà. + +% --------------------------------------------------------- diff --git a/chap/MINITEL.tex b/chap/MINITEL.tex new file mode 100644 index 0000000..59cb59c --- /dev/null +++ b/chap/MINITEL.tex @@ -0,0 +1,37 @@ +% =============================================================== +\chapter{MINITEL} +\label{MINITEL} + +Une très belle réussite technologique française, dont la fin de +vie est annoncée pour 2014. +Certains geeks pensent qu'il présente encore un grand intérêt, +à la fois historique et ludique + Le Tetalab\footnote{Un hackerspace à Toulouse}, par +exemple, les interface avec des Arduino\index{Arduino} afin +de diffuser des images pornographiques ou de contrôler des +appareils étranges. + + +% =============================================================== + +\section{Xtel} +\index{Xtel} + +Xtel est un émulateur de \textsc{minitel} pour les systèmes +Unix/X11, écrit par Pierre Ficheux vers 1997. + +Il est architecturé selon le modèle client/serveur, comme +l'explique son \textsc{readme} : + +\begin{quote} +Il est utilisable en réseau, c'est a dire qu'une des machines du +réseau commande les MODEMS et dialogue avec les services Télétel, +les utilisateurs de XTEL dialoguent avec cette machine "serveur" +par socket internet (utilisation d'un service TCP et du super-démon +"inetd"). +\end{quote} + + + +% =============================================================== + diff --git a/chap/OSC.tex b/chap/OSC.tex new file mode 100644 index 0000000..e26b6d5 --- /dev/null +++ b/chap/OSC.tex @@ -0,0 +1,45 @@ +\chapter{Open Sound Control} +\index{OSC} \label{chap:osc} + +Wikipedia : +\textsl{OSC est un format de transmission de données entre ordinateurs, +synthétiseurs, robots ou tout autre matériel ou logiciel compatible, +conçu pour le contrôle en temps réel. Il utilise le réseau au travers +des protocoles UDP\index{UDP} ou TCP\index{OSC} et apporte des +améliorations entermes de rapidité et flexibilité par rapport +à l'ancienne norme MIDI\index{MIDI}\dots} + +Actuellement, j'utilise (pour le C) \texttt{liblo}\index{liblo} +qui reste simple +à utiliser tout en permettant de descendre à un bas niveau. +Cette bibliothèque est livrée avec deux outils que nous +allos voir maintenant. + +\section{oscdump \& oscsend} +\index{oscdump}\index{oscsend} + +Ecouter : + +\begin{verbatim} +tth@debian:~$ oscdump 1664 +/tmp/kmem is 61 "meg, efface !" +^C +tth@debian:~$ +\end{verbatim} + +Envoyer : + +\begin{verbatim} +tth@debian:~$ oscsend localhost 1664 /tmp/kmem is 61 'meg, efface !' +tth@debian:~$ +\end{verbatim} + +\section{Exemple de code} + +TODO\index{TODO} + +\section{Autres logiciels} + +Beaucoup d'autres logiciels peuvent être controlés par OSC. + + diff --git a/chap/SCSI.tex b/chap/SCSI.tex new file mode 100644 index 0000000..623a701 --- /dev/null +++ b/chap/SCSI.tex @@ -0,0 +1,28 @@ +% +% nouveau 20 juillet 2014 ave StExupery +% +\chapter{SCSI} +\label{SCSI} +\index{SCSI} + +Acronyme de \textit{Small Computer System Interface}. +Ce bus SCSI a été initialement créé par la société Shugart en 1979, +et a subit par la suite de nombreuses évolutions. + +\section{lecteurs de DAT} +\index{DAT} + +DAT = Digital Audio Tape. + +Pour contrôler ce genre de matérien, on utilisera la commande +\texttt{mt(1)} : control magnetic tape drive operation. + + + + +\section{les scanners} + + +\section{le bas niveau} + + diff --git a/chap/Usenet.tex b/chap/Usenet.tex new file mode 100644 index 0000000..07059f6 --- /dev/null +++ b/chap/Usenet.tex @@ -0,0 +1,45 @@ +\chapter{Usenet} +\index{Usenet} + +Je suis un vieux dino du grand \textsc{Usenet} mondial. +Mes premiers posts +doivent dater de quelques mois après l'arrivée de +\textsc{Compu\$erve} en France. C'est dire\dots +Et quand il m'arrive de parler de cet ancêtre des réseaux sociaux, +la question : « Usenet, c'est quoi ? » revient +parfois\footnote{Mais pas assez souvent, à mon gout\dots}. +On va essayer d'y répondre rapidement, avant de passer +aux outils qui le font fonctionner. + +\textsl{Usenet was born approximately three decades ago, in 1979. +It all began as a small communication network between a few universities +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} + +\begin{quote} +slrn is an easy to use but powerful NNTP / spool based newsreader. +It is highly customizable, supports scoring, free key bindings and can +be extended using the embedded S-Lang interpreter. +\end{quote} + +\begin{verbatim} +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} + +\section{INN} +\index{INN} + +Voilà, c'est le moment de parler de l'engin fondamental de ce réseau +de discussions. INN. + diff --git a/chap/debug.tex b/chap/debug.tex new file mode 100644 index 0000000..019f647 --- /dev/null +++ b/chap/debug.tex @@ -0,0 +1,55 @@ +\chapter{Debug}\index{Debug} +\label{chap:debug} + +Quand plus rien ne marche, il existe encore un espoir... + +\section{strace}\index{strace} + + +\section{LD\_PRELOAD}\index{LD\_PRELOAD} + + +\begin{lstlisting}[language=C] +/* +spy_getenv.so: spy_getenv.c Makefile + gcc -Wall -shared -fPIC $< -ldl -o $@ +*/ + +#include +#include +#include + +#define __USE_GNU +#include + +typedef char * (*original_getenv)(const char *envname); + +char *getenv(char *envname) +{ +static char *arrow = "--getenv--> "; +static char *wtf = " --> WTF ?"; + +char *content; +original_getenv orig_getenv; + +orig_getenv = (original_getenv)dlsym(RTLD_NEXT, "getenv"); + +write(STDERR_FILENO, arrow, strlen(arrow)); +write(STDERR_FILENO, envname, strlen(envname)); + +content = orig_getenv(envname); +if (NULL != content) { + write(STDERR_FILENO, "=", 1); + write(STDERR_FILENO, content, strlen(content)); + } +else { + write(STDERR_FILENO, wtf, strlen(wtf)); + } + +write(STDERR_FILENO, "\n", 1); + +return content; +} +\end{lstlisting} + + diff --git a/chap/dosbox.tex b/chap/dosbox.tex new file mode 100644 index 0000000..735dd1f --- /dev/null +++ b/chap/dosbox.tex @@ -0,0 +1,18 @@ +% ---------------------------------------------------------- +\chapter{Dosbox} +\index{dosbox} + +Dosbox est un émulateur de machine MS-DOS avec le son et +le graphique. Il ne nécessite pas de système d'exploitation. + +% ---------------------------------------------------------- +\section{Popcorn} +\index{Popcorn} + +\textbf{Popcorn} est un jeu de cassebrique écrit dans les années +80 pour tirer la quintessence des cartes graphiques CGA\index{CGA}. + +% ---------------------------------------------------------- +% ---------------------------------------------------------- + + diff --git a/chap/editeurs.tex b/chap/editeurs.tex new file mode 100644 index 0000000..00470a4 --- /dev/null +++ b/chap/editeurs.tex @@ -0,0 +1,47 @@ +\chapter{Éditeurs} +\label{chap:editeurs} + +\index{Vim}\index{gedit} + +% ----------------------------------------------------------- +\section{gedit} + +Gedit\footnote{dans sa version 2.30.3} est un éditeur de texte +simple basé +sur Gtk\index{Gtk} pour le bureau +Gnome\index{Gnome}\footnote{On ne rigole pas dans le fond !}. +Entre autres fonctions basique, il fait la coloration +syntaxique\footnote{sauf pour le Postscript\index{postscript}, hélas.}. +Par contre, +contrairement\footnote{Si quelqu'un veut me contredire, il sait +comment faire}, +il est très facilement scriptable : il suffit d'écrire +quelques lignes de shell\index{shell}. Vous voulez numéroter +les lignes d'un paragraphe ? Il suffit d'un tout petit morceau +de Awk\index{awk} que voici : + +\begin{lstlisting}[language=awk] +#!/usr/bin/awk -f +{ printf "%5d\t%s\n", NR, $0; } +\end{lstlisting} + +Ok ? Pigé le principe ? +Il ne reste plus qu'à intégrer ce bout de code dans les outils +personnalisables de Gedit. + + +% ----------------------------------------------------------- +\section{emacs} +\index{emacs} + +\textbf{Escape Meta Alt Control Del} + +% ----------------------------------------------------------- +\section{ed} +\index{ed} + +\textsc{The only true one.} C'est de lui que tout est parti. + +% ----------------------------------------------------------- + + diff --git a/chap/musique.tex b/chap/musique.tex new file mode 100644 index 0000000..eabd462 --- /dev/null +++ b/chap/musique.tex @@ -0,0 +1,48 @@ +\chapter{Joueurs de musique} +\label{chap:musique} + +Vous pouvez aussi aller voir la page \pageref{Son}, +qui traite d'autres +problématiques liées au son. + +%------------------------------------------------------------------ +\section{mocp} +\index{mocp} + +Le nom « Mocp » est l'abréviation de \textsc{Music on-consol Player}. +Personnellement, j'aime beaucoup son look, et son ergonomie parfois +déroutante. +% expliquer comment creer son theme personnel + +%------------------------------------------------------------------ + +\section{mpd} +\index{mpd} + +Le nom « Mpd » est l'abréviation de \textsc{Music Player Daemon}. +Il peut théoriquement\footnote{Théoriquement, parce que +je n'ai pas encore essayé :)} +\textit{feeder} un serveur Icecast\index{icecast}. + +%------------------------------------------------------------------ +\section{Audacious} +\index{xmms} + +%------------------------------------------------------------------ +\section{Effets sonores} + +Ladspa ? +\index{ladspa} + +%------------------------------------------------------------------ + +\section{Les playlists} +\index{pls}\index{m3u} + +Une \textit{playlist} est (en général) un fichier contenant une +liste de musiques à écouter. + + +%------------------------------------------------------------------ + + diff --git a/chap/puredata.tex b/chap/puredata.tex new file mode 100644 index 0000000..b6d4d46 --- /dev/null +++ b/chap/puredata.tex @@ -0,0 +1,17 @@ +\chapter{Puredata} +\label{Puredata}\index{Puredata} + +\section{Premiers pas} + +Hop, on y va... Attention, la première marche semble assez rude. + +\section{Lire un fichier WAV} +\index{WAV} + + + + + + + + diff --git a/chap/slang.tex b/chap/slang.tex new file mode 100644 index 0000000..43ce0f8 --- /dev/null +++ b/chap/slang.tex @@ -0,0 +1,42 @@ +\chapter{S-lang} +\label{S-lang} +\index{S-lang} + +\section{C'est quoi ?} + +S-lang est une bibliothèque de fonctions multi-plateforme +pour faire des trucs +sympathiques dans des +consoles texte. +L'exemple le plus éblouissant étant le célèbre +\texttt{slrn}\index{slrn} : "s-lang news reader", dont on cause plus +longuement dans les pages consacrées à Usenet\index{Usenet} +(page \pageref{slrn}). + +\section{slsh} +\index{slsh} + +Autour de s-lang, on trouve un interpréteur de scripts. + +Voyons un premier exemple d'utilisation, inspiré de l'exemple de la +manpage\footnote{vous lisez bien les pages de man ?}, et qui montre +l'utilisation en mode interactif : + +\begin{verbatim} +tth@plop:~/Essais/Slang$ slsh +slsh version 0.8.4-1; S-Lang version: 2.2.2 + +slsh> 3*10; +30 +slsh> x = [1:20]; +slsh> sum (sin(x)-cos(x)); +0.45861331748677714 +slsh> print x; +Usage: print (OBJ [,&str|File_Type|Filename]); +Qualifiers: pager[=pgm], nopager +slsh> ^D +tth@plop:~/Essais/Slang$ +\end{verbatim} + +Cool... + diff --git a/chap/son.tex b/chap/son.tex index 2519435..c6c9c22 100644 --- a/chap/son.tex +++ b/chap/son.tex @@ -168,6 +168,9 @@ play -n synth sine 480 sine 620 remix 1-2 fade 0 0.5 delay 0.5 repeat 5 voies mono en un fichier stéréo. \texttt{-M} est l'abréviation de \texttt{--combine merge}. +Question en attente : comment combiner huit pistes monophoniques +en un seul fichier ? + %------------------------------------------------------------------ diff --git a/chap/streaming.tex b/chap/streaming.tex index 85980ac..82eefdc 100644 --- a/chap/streaming.tex +++ b/chap/streaming.tex @@ -195,7 +195,12 @@ interface (e.g. sound card), encodes it and sends it to a streaming server. %==================================================================== +\section{libshout}\index{libshout}\label{libshout} +Mais c'est quoi ?\index{XXX} + + +%==================================================================== %------------------------------------------------------------- diff --git a/chap/video.tex b/chap/video.tex index 0f3ded4..5bef961 100644 --- a/chap/video.tex +++ b/chap/video.tex @@ -61,7 +61,8 @@ done | ffmpeg -f image2pipe -c png -i - ... \end{verbatim} -Plus quelques trucs en vrac : + +\subsection{quelques trucs en vrac} \begin{verbatim} fichier .avi -> mpeg ( qualité DVD ) @@ -90,6 +91,22 @@ préciser le coef de qualité ( qscale : 1 = le mieux / 3 = correcte ) ffmpeg -i fichier.dv -target pal-dvd -qscale 2 Fichier.mpeg \end{verbatim} +\subsection{Encoder un cloître} + +Là, nous sommes dans du \textsl{serious bizness}, puisque cette vidéo +a été programmée par James Lewis pour la résidence « Sonoptic 2020 ». +C'est donc un exemple réel. + +\begin{verbatim} +ffmpeg -nostdin \ + -y -r 30 -f image2 -i lf/%06d.png \ + -metadata artist='--[ tTh ]--' \ + -metadata title='-- Un cloitre en POVray --' \ + -c:v libx264 \ + -pix_fmt yuv420p \ + -tune film \ + wip.mp4 +\end{verbatim} % -------------------------------------------------------------------- diff --git a/main.tex b/main.tex index d3a7d2e..2e0db11 100644 --- a/main.tex +++ b/main.tex @@ -7,6 +7,9 @@ \usepackage{graphicx} \usepackage{listings} +\usepackage[T1]{fontenc} + + \makeindex \setlength \parindent {1em} @@ -44,7 +47,8 @@ peut-être pas vraiment d'actualité. Tout cette ouvrage a été écrit avec mousepad et \LaTeX{} selon la méthode éprouvée dite -de «~La~Rache~», essentiellement sur une machine Debian/amd64. +de «~La~Rache~»\index{rache}, +essentiellement sur une machine Debian/amd64. \vspace{5em} @@ -58,34 +62,36 @@ Your mileage may vary\dots } % ============================================================== -% \input{chap/editeurs} +\input{chap/editeurs} \input{chap/son} \input{chap/image} -% \input{chap/musique} -% \input{chap/puredata} +\input{chap/musique} +\input{chap/puredata} \input{chap/MIDI} +\input{chap/OSC} \input{chap/backups} \input{chap/processing} \input{chap/video} \input{chap/gnuplot} \input{chap/webcam} -% \input{chap/SCSI} +\input{chap/SCSI} \input{chap/X11} \input{chap/dino} \input{chap/textes} -% \input{chap/MINITEL} +\input{chap/MINITEL} \input{chap/threads} -% \input{chap/dosbox} +\input{chap/dosbox} \input{chap/photos} +\input{chap/debug} \input{chap/reseau} -% \input{chap/IRC} -% \input{chap/Usenet} -% \input{chap/DNS} +\input{chap/IRC} +\input{chap/Usenet} +\input{chap/DNS} \input{chap/ssh} \input{chap/hardware} \input{chap/streaming} \input{chap/gadgets} -% \input{chap/slang} +\input{chap/slang} \input{chap/curses} \input{chap/WiFi} \input{chap/GIT}