Ho scritto questo documento con tutta l' accuratezza possibile ma se usate le informazioni in esso contenute lo fate a vostro rischio e pericolo. In nessun caso potrò essere ritenuto responsabile di eventuali danni causati dall' utilizzo del presente HOWTO.
La traduzione in italiano si trova subito dopo la versione originale in lingua inglese.
Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.
All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below.
In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would like to be notified of any plans to redistribute the HOWTOs.
If you have questions, please contact Tim Bynum, the Linux HOWTO
coordinator, at
tjbynum@sunsite.unc.edu
via email.
Questa la traduzione in italiano:
Senza nessuna precisazione, i documenti Linux HOWTO hanno il copyright dei loro rispettivi autori. I documenti Linux HOWTO possono essere riprodotti e distribuiti, completi o in parte, con ogni mezzo fisico o elettronico, purché siano tutti accompagnati da questo copyright. Distribuzioni commerciali sono permesse ed incoraggiate; comunque l' autore desidera essere avvisato di ogni simile distribuzione.
Tutte le traduzioni, derivazioni o lavori incorporanti qualsiasi Linux HOWTO devono essere mantenuti sotto questo avviso di copyright. Per questo non è possibile produrre un lavoro derivante da un HOWTO ed imporre restrizioni aggiuntive alla sua distribuzione. Eccezioni a questa regola possono essere concesse a certe condizioni; contattare il coordinatore dei Linux HOWTO all' indirizzo riportato sotto.
In breve vogliamo promuovere la disseminazione di queste informazioni attraverso più canali possibili. Comunque vogliamo mantenere il copyright nei documenti HOWTO, e possibilmente essere avvisati di ogni progetto di ridistribuzione degli HOWTO.
Se si hanno domande, contattare Tim Bynum, il coordinatore dei Linux
HOWTO, all' indirizzo e-mail
tjbynum@sunsite.unc.edu
Per le versioni italiane degli HOWTO rivolgersi a Giovanni Bortolozzo,
borto@pluto.linux.it
o Eugenia Franzoni,
eugenia@stud.unipg.it
.
L' ultima versione di questo documento è reperibile presso i seguenti quattro indirizzi:
http://web.tiscalinet.it/airaghi
http://www.linux.it/ospiti/slrn/
http://www.pluto.linux.it/ildp/altri/SLRN+SLRNPULL-HOWTO.html
http://www.ziobudda.net/mirror/slrn_slrnpull/
Critiche, correzioni e suggerimenti per migliorare questo testo sono ben accetti. Contattatemi pure tramite posta elettronica.
Tutti i comandi da scrivere nella shell di Linux sono indicati con un "#" o "$" prefisso al comando.
# è il simbolo che appare quando usate la shell come utente root.
$ è il simbolo che appare quando usate la shell come utente normale.
Per esempio, "$ slrn
" indica che dovete lanciare il comando "slrn
"
come utente normale mentre "# rpm -ivh slrn-0.9.6.2-4.i386.rpm
" indica
che dovete lanciare il comando "rpm -ivh slrn-0.9.6.2-4.i386.rpm
" come
utente root.
[Esc] [p] : indica che dovete premere il tasto Esc, poi il tasto p
[Ctrl]+[d] : indica che dovete tenere premuto il tasto Ctrl e poi premere il tasto d
Un' ultima nota: nella shell di Linux la tilde (~) indica la directory
home di un utente (con tale termine si indica la directory in cui l' utente
si trova subito dopo il login). Esempio: la frase "bisogna editare il file
~/.bash_profile
", per l' utente alex diventa "bisogna
editare il file /home/alex/.bash_profile
". In pratica: "entra
come utente alex ed edita il file .bash_profile
".
Questo, in breve, il funzionamento dei due programmi.
appena lanciato invia al news server gli articoli che uno o
più utenti di un sistema Linux hanno scritto offline. Finita questa operazione
scarica, da uno o più newsgroup, i nuovi articoli presenti sul news
server.
da solo, si collega ad un news server e consente di poter
leggere, uno alla volta, gli articoli di un dato newsgroup.
Può anche essere utilizzato per leggere offline gli articoli scaricati in
precedenza da SLRNPULL.
NOTA 1: l' utente che utilizza SLRNPULL deve necessariamente appartenere
al gruppo news
. Per esempio, affinchè l' utente alex possa scaricare
le news è necessario editare, con i permessi di root, il file
/etc/group
in modo che compaia una linea simile alla
seguente:
news::13:news,alex
Se un utente desidera semplicemente leggere le news con SLRN (news che
qualcun altro avrà scaricato con SLRNPULL) allora NON è necessario che
egli appartenga al gruppo news
. Un simile utente potrà comunque
inviare i propri articoli al news server. Più precisamente: i suoi articoli
verranno salvati sull' hard disk in attesa che l' utente appartenente al
gruppo news
lanci il programma SLRNPULL.
NOTA 2: le informazioni contenute nel presente HOWTO sono state verificate con SLRN e SLRNPULL versione 0.9.6.2 e potrebbero risultare inadatte per versioni precedenti dei programmi.
Sono necessari i seguenti tre pacchetti .rpm:
slang-1.2.2-5.i386.rpm
slrn-0.9.6.2-4.i386.rpm
slrn-pull-0.9.6.2-4.i386.rpm
Questi pacchetti sono presenti nella distribuzione RedHat 6.2 e li
potete anche trovare (per esempio) qui:
ftp://ftp.students.cs.unibo.it/Mirrors/ftp.redhat.com/redhat-6.2/i386/RedHat/RPMS
Nel caso non siano più presenti su tale sito al momento della lettura di
questo documento, potete effettuare una ricerca in rete usando uno dei
tanti motori di ricerca.
Per esempio, potete collegarvi tramite Netscape ad uno dei seguenti
due siti:
Si deve ora procedere con l' installazione dei tre pacchetti .rpm
Effettuate il login come utente root.
Inserite il CD della distribuzione RedHat 6.2 e date il seguente
comando:
# mount /mnt/cdrom
Portatevi nella directory che contiene i tre pacchetti .rpm:
# cd /mnt/cdrom/RedHat/RPMS
Installateli dando i seguenti comandi:
# rpm -ivh slang-1.2.2-5.i386.rpm
# rpm -ivh slrn-0.9.6.2-4.i386.rpm
# rpm -ivh slrn-pull-0.9.6.2-4.i386.rpm
Uscite come utente root e rientrate come utente normale.
NOTA IMPORTANTE: questo paragrafo non viene più aggiornato da diversi mesi. Contiene riferimenti a versioni dei programmi e delle librerie divenute ormai obsolete. Se possedete una distribuzione Debian e volete darmi informazioni su come aggiornare questo paragrafo, scrivetemi un' e-mail. Grazie.
Questo paragrafo è a cura di Roberto Gerola,
rogerola@tin.it
Dovete procurarvi i seguenti pacchetti .deb, che trovate anche sui CD della distribuzione:
slang0.99.38_0.99.38-6.deb
slrn-0.9.4.3-4.deb (contiene sia SLRN che SLRNPULL)
Effettuate il login come utente root. Installate il primo pacchetto .deb dando il seguente comando:
# dpkg -i slang0.99.38_0.99.38-6.deb
Installate il secondo pacchetto .deb dando il seguente comando:
# dpkg -i slrn-0.9.4.3-4.deb
Al termine della scompattazione e copia dei file bisogna rispondere ad alcune semplici domande poste dallo script di installazione al fine di configurare al meglio SLRN sul proprio sistema. Queste le domande:
Do you want to change the current configuration ?
Viene chiesto solo se è gia presente sul proprio sistema un file
/etc/slrnget.conf
Do you want a cron job to be set up to automatically refresh the
newsgroup descriptions for you ?
Rispondendo y viene attivata un' entry in cron per aggiornare
periodicamente la lista dei newsgroup sul vostro news server.
Risposta consigliata: n
Do you want /etc/ppp/ip-up.d/slrn to refresh the newsgroups
descriptions?
Viene chiesto solo se si è risposto no alla domanda precedente. Ad ogni
collegamento viene aggiornata la lista dei newsgroup, direi di rispondere
con decisione n. Rispondendo no lo script ci informa che dovremo
aggiornare manualmente la lista dei newsgroup lanciando come utente root il
programma: /usr/sbin/slrn_getdescs
Seguono poi le domande per configurare il programma SLRNPULL:
Do you plan to use slrnpull to download a small local
news spool for offline news reading?
Lo vogliamo usare questo SLRNPULL sì o no? y
Do you want a cron job to be set to automatically run slrnpull
?
Io direi di no. Trovo l' opzione utile solo se abbiamo un collegamento
permanente ad internet.
Do you want /etc/ppp/ip-up.d/slrn to run slrnpull ?
Viene chiesto solo se abbiamo risposto no alla domanda precendente.
Direi che sarebbe il caso di rispondere y.
Ci viene poi chiesto se siamo soddisfatti delle nostre scelte o se vogliamo cambiare qualcosa e, per ultimo, ci viene chiesto se vogliamo aggiornare subito la lista dei newsgroup. Dovete rispondere n in quanto non avete ancora specificato il nome del news server da cui scaricare le news.
A questo punto si seguano le istruzioni riportate nel capitolo intitolato "Configurazione" fecendo attenzione che:
slrnpull.conf
si trovi nella directory
/var/spool/slrnpull
~/.slrnrc
compaiano queste linee:
set spool_inn_root "/var/spool/slrnpull"
set spool_root "/var/spool/slrnpull/news"
set spool_nov_root "/var/spool/slrnpull/news"
Collegatevi ad internet e lanciate /usr/sbin/slrn_getdescs
: la lista
dei newsgroup verrà messa nel file /var/lib/slrn/newsgroups.dsc
. Si
tratta di un file di testo, sarà il caso di leggerlo per vedere quali
newsgroup abbiamo a disposizione e quali possono interessarci.
NOTA: è sempre possibile cambiare la configurazione lanciando come utente root lo script:
/usr/sbin/slrnconfig
Questa procedura è consigliata a tutti coloro che non dispongono
di una distribuzione Linux basata sui pacchetti .rpm o .deb
E' altresì indicata per tutti coloro che vogliono utilizzare
l' ultima versione disponibile dei programmi senza che debbano
aspettare il rilascio dei pacchetti .rpm o .deb
Vi occorre il seguente file (contiene sia SLRN che SLRNPULL):
slrn-0.9.6.2.tar.gz
che potete trovare qui:
ftp://space.mit.edu/pub/davis/slrn
Nel caso non abbiate già installato la libreria S-Lang, avete bisogno anche di questo file:
slang-1.4.0.tar.gz
che potete scaricare da:
ftp://space.mit.edu/pub/davis/slang/v1.4
NOTA: la documentazione di S-Lang è contenuta nel file slang1.4-doc.tar.gz
Per prima cosa bisogna compilare ed installare la libreria S-Lang.
Entrate come utente root e portatevi nella directory /usr/local/src
:
# cd /usr/local/src
Decomprimete l' archivio:
# tar xvzf [path completo]/slang-1.4.0.tar.gz
# cd slang-1.4.0
Per compilare ed installare S-Lang iniziate a dare i seguenti tre comandi:
# ./configure
# make
# make runtests
Se non viene segnalato nessun errore date questi altri tre comandi:
# make install
# make elf
# make install-elf
Assicuratevi che nel file /etc/ld.so.conf
sia presente la
seguente linea:
/usr/local/lib/
Date ora il seguente comando:
# ldconfig
Si procede ora con la compilazione ed installazione dei programmi SLRN
e SLRNPULL.
Sempre come utente root decomprimete l' archivio compresso
slrn-0.9.6.2.tar.gz
nella directory /usr/local/src
:
# cd /usr/local/src
# tar xvzf [path completo]/slrn-0.9.6.2.tar.gz
# cd slrn-0.9.6.2
Editate il file src/slrnfeat.h
ed assicuratevi che compaia la
seguente linea:
#define SLRNPULL_ROOT_DIR "/var/spool/slrnpull"
Date ora i seguenti comandi:
# ./configure
# make
# make slrnpull
# make install
# mkdir /var/spool/slrnpull
# chown news.news /var/spool/slrnpull
Come ultima cosa, assicuratevi che la variabile di ambiente PATH (di tutti gli utenti che utilizzeranno i programmi SLRN e/o SLRNPULL) contenga la seguente stringa:
/usr/local/bin
Per accertarsene basta dare questo comando:
$ echo $PATH
In caso contrario aggiungete alla fine del file ~/.bash_profile
le seguenti due linee:
PATH=$PATH:/usr/local/bin
export PATH
Copiate il file slrn.rc
come ~/.slrnrc
:
$ cp [path completo]/slrn.rc ~/.slrnrc
NOTA: il file slrn.rc
si troverà in directory diverse a seconda
del tipo di installazione effettuata.
Per esempio, se installate i programmi a partire dai pacchetti .rpm, il
file slrn.rc
sarà presente nella directory
/usr/lib/slrn/
Se avete utilizzato i sorgenti .tar.gz, il file slrn.rc
sarà presente
nella directory /usr/local/src/slrn-0.9.6.2/doc
Editate il file ~/.slrnrc
, inserite i vostri dati ed
assicuratevi che compaiano TUTTE le righe sotto riportate:
% File ~/.slrnrc
%
% Si fa riferimento ad un ipotetico abbonato di Tiscalinet, Mario Rossi,
% avente il seguente indirizzo e-mail: mr@tiscalinet.it
% Inserendo tutti i dati CORRETTAMENTE si è però soggetti al
% fastidioso fenomeno dello spamming. Si legga a tal proposito
% il paragrafo intitolato "Protezione dallo spamming".
% L' header From viene generato dal programma SLRN così:
%
% username@hostname (realname)
%
% ATTENZIONE: lo username non deve contenere spazi !
hostname "tiscalinet.it"
set username "mr"
set realname "Mario Rossi"
set replyto "mr@tiscalinet.it"
set signature ".signature.slrn"
% Filename where articles you have posted are archived.
% Traduzione: nomi dei file dove vengono archiviati gli articoli
% che sono stati inviati.
set save_posts "slrn/My_Posts"
set save_replies "slrn/My_Replies"
scorefile "slrn/score"
% Name of directory where decoded files are placed (relative to HOME)
% Traduzione: nome della directory dove vengono posti i file
% decodificati (relativamente alla directory home)
set decode_directory "slrn/decoded"
% Directory where all other files are saved.
% Traduzione: directory dove vengono salvati tutti gli altri file.
set save_directory "slrn/misc"
% Directory where postponed articles are placed. (Make sure it exists)
% Traduzione: directory dove vengono posti gli articoli scritti, ma che
% si vogliono inviare al newsgroup in un secondo tempo.
%
% Quando siete in modalità -elenco dei newsgroup-, premete [Esc] [p] per
% scegliere quali di questi articoli archiviati inviare.
set postpone_directory "slrn/postponed"
%-------------------------------------------------
% Local spool configuration
%-------------------------------------------------
set spool_inn_root "/var/spool/slrnpull"
set spool_root "/var/spool/slrnpull/news"
set spool_nov_root "/var/spool/slrnpull/news"
set read_active 1
set use_slrnpull 1
set server_object "spool"
% Trovo che i colori per SLRN 0.9.5.7 (e superiori) definiti
% nel file /usr/lib/slrn/slrn.rc non siano molto belli a vedersi.
% Personalmente preferisco i colori che erano definiti
% per la versione 0.9.5.4 e che sono qui sotto riportati.
%-----------------------------------------------
% Colors
%-----------------------------------------------
color header_number "green" "white"
color header_name "green" "white"
color normal "black" "white"
color error "red" "white"
color status "yellow" "blue"
color group "blue" "white"
color article "blue" "white"
color cursor "brightgreen" "white"
color author "magenta" "white"
color subject "black" "white"
color headers "brightcyan" "white"
color menu "yellow" "blue"
color menu_press "blue" "yellow"
color tree "red" "white"
color quotes "red" "white"
color thread_number "blue" "white"
color high_score "red" "white"
color signature "red" "white"
color description "blue" "white"
color tilde "green" "white"
color response_char "green" "white"
% Commentate/correggete la linea (errata): mono verbatum 0
Un consiglio: nel file ~/.slrnrc
modificate la variabile
followup_string eliminando <%f> e/o %d di modo che la stringa risultante
sia la più corta possibile. In caso contrario, il programma SLRN potrebbe
chiedervi di ri-editare il vostro articolo per "sistemare" una riga che è
lunga più di 80 caratteri.
Esempi (usando l' italiano):
set followup_string "In data %d, %r scriveva:"
set followup_string "%r scriveva:"
Oppure, fate in modo che compaia la seguente linea:
set reject_long_lines 0
NOTA: il file ~/.slrnrc
in realtà contiene molte altre
istruzioni che consentono una maggiore personalizzazione del programma.
Quelle da me sopra elencate sono le minime indispensabili, affinchè
tutto funzioni correttamente: il programma SLRN non si collegherà al
news server per leggere le news perchè utilizzerà quelle presenti
sull' hard disk, scaricate in precedenza dal programma SLRNPULL.
Create le seguenti directory:
$ mkdir slrn
$ mkdir slrn/postponed
$ mkdir slrn/decoded
$ mkdir slrn/misc
Bisogna ora indicare a SLRNPULL quali newsgroup scaricare.
Con i permessi di root editate il file
/var/spool/slrnpull/slrnpull.conf
.
Tale file è formato da una serie di linee del tipo:
[nome newsgroup] [numero articoli] [tempo di permanenza]
[nome newsgroup] = nome del newsgroup da scaricare
[numero articoli] = indica quanti articoli devono essere scaricati. Il numero 0 equivale a scaricare TUTTI gli articoli presenti nel newsgroup
[tempo di permanenza] = indica quanti giorni gli articoli rimangono
sull' hard disk prima di essere rimossi a seguito del comando
"$ slrnpull --expire"
Esempio di file /var/spool/slrnpull/slrnpull.conf
:
# Scarica TUTTI gli articoli dal newsgroup it.comp.os.linux.iniziare
# con un tempo di permanenza pari a 14 giorni.
# Gli articoli scaricati verranno rimossi dall' hard disk se dopo 14
# giorni dal download viene dato il comando "$ slrnpull --expire"
it.comp.os.linux.iniziare 0 14
# Scarica gli ULTIMI 50 articoli presenti nel newsgroup
# it.comp.os.linux.software con un tempo di permanenza pari a 7 giorni.
# Gli articoli scaricati verranno rimossi dall' hard disk se dopo 7
# giorni dal download viene dato il comando "$ slrnpull --expire"
it.comp.os.linux.software 50 7
Nelle linee che seguono dovete sostituire al posto di [news server] il nome del news server al quale potete accedere per leggere/scrivere le news. Per maggiori informazioni chiedete al vostro fornitore di accesso ad internet.
Effettuate il login con l' utente abilitato ad utilizzare il programma
SLRNPULL (si ricorda che deve appartenere al gruppo news
).
Una volta collegati ad internet date il seguente comando:
$ slrnpull -h [news server]
E' altresì possibile definire la variabile di ambiente NNTPSERVER
per evitare di utilizzare l' opzione -h di SLRNPULL.
Basta editare il file /etc/profile
ed aggiungere le seguenti
due linee:
NNTPSERVER=[news server]
export NNTPSERVER
In questo caso il comando per scaricare le news diventerà semplicemente:
$ slrnpull
La prima volta che lancerete SLRNPULL verrà visualizzata una schermata simile alla seguente:
10/06/1999 16:02:15 slrnpull started.
10/06/1999 16:02:15 Created dir /var/spool/slrnpull/news.
10/06/1999 16:02:15 Created dir /var/spool/slrnpull/data.
10/06/1999 16:02:15 Reading /var/spool/slrnpull/slrnpull.conf
10/06/1999 16:02:15 Created dir /var/spool/slrnpull/news/it.
10/06/1999 16:02:15 Created dir /var/spool/slrnpull/news/it/test.
10/06/1999 16:02:15 Connecting to host news.tiscalinet.it ...
10/06/1999 16:02:17 Connected to host. Posting Ok.
10/06/1999 16:02:17 ***/var/spool/slrnpull/out.going/rejects directory
does not exist. Creating it...
10/06/1999 16:02:17 Fetching articles for it.test.
A questo punto verranno scaricati sia i titoli degli articoli sia i relativi messaggi in essi contenuti.
NOTA: la prima volta sarà necessario scaricare migliaia di articoli e la cosa potrebbe richiedere una quantità di tempo non trascurabile. Inoltre, con alcuni news server, la velocità di download potrebbe diminuire drasticamente dopo aver scaricato i primi 100 articoli (cosa che capita utilizzando il news server di Tin - news.tin.it - per esempio).
Una volta che il programma SLRNPULL ha terminato il suo compito,
potete scollegarvi da internet e procedere alla lettura delle news
usando il programma SLRN. Una registrazione di tutte le operazioni
svolte dal programma SLRNPULL è contenuta nel file
/var/spool/slrnpull/log
. Per esaminarne il contenuto:
$ less /var/spool/slrnpull/log
Per effettuare la cancellazione dall' hard disk degli articoli divenuti
ormai vecchi (in base a quanto specificato nel file
/var/spool/slrnpull/slrnpull.conf
) date il seguente comando:
$ slrnpull --expire
NOTA: per quest' ultima operazione non è necessario essere collegati ad internet.
E' un' operazione semplicissima, basta digitare il seguente comando:
$ slrn -create
per ogni utente che desidera leggere le news.
NOTA: dovete usare l' opzione -create
solamente la prima volta
che lanciate il programma SLRN. Le volte successive il comando sarà
semplicemente:
$ slrn
NOTA: il programma SLRN in molti casi, ma non sempre, fa distinzione
tra lettere maiuscole e minuscole.
Ad esempio, IL COMANDO OTTENUTO PREMENDO IL TASTO [L] E' DIVERSO DA QUELLO
OTTENUTO PREMENDO IL TASTO [l].
Per leggere gli articoli scaricati:
/var/spool/slrnpull/slrnpull.conf
aggiungendo nuovi newsgroup da
scaricare.
Il programma SLRN presenta 3 modalità di funzionamento.
-elenco dei newsgroup-
: è la schermata di avvio, con
l' elenco di tutti i newsgroup sottoscritti aventi almeno 1 articolo non
ancora letto.
-elenco degli articoli-
: è la schermata che appare
quando si preme [Invio] sul nome di un newsgroup.
-lettura degli articoli-
: è la finestra che contiene
il corpo dell' articolo. Appare quando si preme [Invio] sul titolo
di un articolo.Per avere un elenco dei comandi, premete [?].
I più utili sono i seguenti:
Ovunque vi troviate
[Ctrl]+[g] : annulla un' operazione
[Ctrl]+[r] : refresh dello schermo
-Elenco dei newsgroup-
[l] : elenca i newsgroup sottoscritti ma che contengono solamente articoli già letti (tali newsgroup hanno uno 0 a sinistra del nome. Tale numero, infatti, conteggia gli articoli non letti)
-Elenco degli articoli-
[Esc]+[s] : per ordinare (in inglese: to sort) gli articoli secondo diversi criteri
[Esc]+[t] : espande/collassa un thread
[h] : dopo che è stato letto un articolo, serve per tornare all' elenco degli articoli a pieno schermo
[Esc]+[<] : salta al primo articolo
[Esc]+[>] : salta all' ultimo articolo
[a] : ricerca (in avanti) una data stringa nel campo "Author"
[A] : ricerca (all' indietro) una data stringa nel campo "Author"
[s] : ricerca (in avanti) una data stringa nel campo "Subject"
[S] : ricerca (all' indietro) una data stringa nel campo "Subject"
[o] : salva un articolo sull' hard disk nel file specificato dall' utente. Se il file esiste, l' articolo viene aggiunto alla fine del file (operazione nota come "append").
[.] : ripete l' ultimo comando dato
-Lettura degli articoli-
[t] : mostra/nasconde gli header meno importanti
[T] : mostra/nasconde le linee che costituiscono citazioni di altri articoli (in inglese: quoted lines)
[U] : lancia Netscape per collegarsi all' URL presente nell' articolo Nel caso che in quest' ultimo siano presenti più URL, verrà aperta una finestra per chiedervi quale indirizzo contattare
[z] : mostra l' articolo a tutto schermo
[TAB] : scavalca le "quoted lines"
[b] : indietro di una pagina
[SPAZIO] : avanti di una pagina
[Invio] : avanti di una riga
[Esc]+[FRECCIA SU] : indietro di una riga
[Esc]+[FRECCIA GIU'] : avanti di una riga
NOTA: per default vengono mostrati solo i seguenti header:
From, Newsgroups e Subject. Se volete modificare tale situazione
editate la variabile "visible_headers" in ~/.slrnrc
.
Esempi:
visible_headers "X-,From:" per visualizzare, di default, tutti gli header
che iniziano con X- più l' header From
visible_headers "" per non visualizzare, di default, nessun header
Per inviare un nuovo articolo lanciate il programma SLRN
$ slrn
Vi comparirà l' elenco dei newsgroup sottoscritti, che contengono almeno 1 articolo non ancora letto. Ricordo che se non vedete il nome di nessun newsgroup ma solo il puntatore "->" :
Portatevi sul nome del newsgroup al quale volete inviare il vostro
articolo e premete i tasti [p] [y] [Invio].
NOTA: i manifesti dei newsgroup italiani li trovate presso
http://www.news.nic.it/news-it/gruppi-it.html
Se volete inviare un articolo di prova, per verificare la corretta
installazione dei programmi, dovete utilizzare il
newsgroup it.test
!
Per default si dovrà scrivere l' articolo utilizzando l' editor
vi
. Se volete utilizzare un editor diverso, modificate nel file
~/.slrnrc
la linea: set editor_command
Uscite dall' editor, vi verrà posta la seguente domanda:
Post the message? Yes, No, Edit, poStpone
Si possono presentare i seguenti 3 casi:
~/.slrnrc
è presente la linea
"set use_slrnpull 1". Premete [y] oppure [Y].
SLRN non invia al news server l' articolo bensì lo copia nella directory
/var/spool/slrnpull/out.going
con un nome simile a
questo: X913482683-607-1.[utente]
~/.slrnrc
NON è presente la linea
"set use_slrnpull 1". Se premete [y] o [Y]
l' articolo verrà inviato al news server. E' NECESSARIO, pertanto, avere
attiva la connessione ad internet
~/.slrnrc
,
premete [s] o [S]. L' articolo verrà salvato in un
file: dovete fornire un nome. Successivamente, tale articolo potrà essere
inviato (al news server o alla
directory /var/spool/slrnpull/out.going
) premendo i
tasti [Esc] [p] in modalità -elenco dei newsgroup-Se volete rispondere nel newsgroup ad un articolo che avete appena finito di leggere, premete [f] per effettuare un followup. Le regole per l' invio dell' articolo di followup sono identiche ai 3 casi sopra elencati.
I programmi SLRN e SLRNPULL consentono di assegnare un punteggio
(in inglese: score) ad ogni articolo che è stato scaricato (SLRN) o che
deve essere scaricato (SLRNPULL).
Le regole per l' assegnazione dei punteggi si trovano nel file
~/slrn/score
per SLRN e nel file
/var/spool/slrnpull/score
per SLRNPULL.
I programmi SLRN e SLRNPULL utilizzano il file score
in modo
differente:
~/.slrnrc
la
linea: set display_score 1
~/.slrnrc
la linea: set sorting_method
Il formato di un file score
non è complicato ed è lo stesso
sia per SLRN che per SLRNPULL.
Tale file consiste di sezioni, ognuna delle quali contiene le regole
che devono essere applicate ad uno o più newsgroup per calcolare i
punteggi da attribuire a ciascun articolo.
Ogni sezione è identificata da parentesi quadre.
Per esempio, [it.comp.os.linux.*] indica l' inizio della sezione che definirà
le regole per tutti i newsgroup che iniziano con i caratteri
"it.comp.os.linux.". Cioè per i seguenti newsgroup:
it.comp.os.linux.annunci
it.comp.os.linux.development
it.comp.os.linux.iniziare
it.comp.os.linux.software
it.comp.os.linux.sys
Seguono ora alcuni esempi.
news.software.readers
che non contengono la parola "slrn"
nel titolo (Subject) dell' articolo, per evitare di scaricarli. Questo è
ciò che dovete scrivere nel file /var/spool/slrnpull/score
:
[news.software.readers]
Score: -1
~Subject: slrn
it.comp.os.linux.iniziare
i cui titoli contengono la
parola "redhat". Inserite nel file
~/slrn/score
:
[it.comp.os.linux.iniziare]
Score: 10
Subject: redhat
it.comp.os.linux.iniziare
i cui titoli contengono la parola
"aiuto" E l' autore è Mario Rossi. Inserite nel file
~/slrn/score
:
[it.comp.os.linux.iniziare]
Score: 20
Subject: aiuto
From: Mario Rossi
it.comp.os.linux.iniziare
i cui titoli contengono la parola
"aiuto" OPPURE l' autore è Mario Rossi (notare Score::). Inserite
nel file ~/slrn/score
:
[it.comp.os.linux.iniziare]
Score:: 30
Subject: aiuto
From: Mario Rossi
it.comp.os.linux.iniziare
, da voi scritti, appartenenti ad
un qualsiasi thread (non dovete scrivere le parentesi tonde). Inserite nel
file ~/slrn/score
:
[it.comp.os.linux.iniziare]
Score: 40
From: ( mettete ciò che compare nel VOSTRO header From )
it.comp.os.linux.sys
. Inserite nel file ~/slrn/score
:
[it.comp.os.linux.sys]
Score: 50
References: ( si veda la nota sotto )
NOTA: dovete basarvi sulla parte finale dell' header Message-ID di
un vostro articolo, quella che comincia con il vostro username.
Se, per esempio, il vostro username è "mr" (si veda la voce "set username"
nel file ~/.slrnrc
) e non avete dato un nome al vostro PC,
tale header terminerà nel seguente modo:
mr@localhost.localdomain>
La linea da inserire alla voce "References:" sarà allora la seguente:
\.mr@localhost.localdomain>$
Con quest' ultima regola di assegnazione dei punteggi vi sarà senz' altro
più semplice poter seguire le risposte ai vostri articoli.
Per maggiori informazioni si veda il file: SCORE_FAQ
Inserendo correttamente i vostri dati nel file ~/.slrnrc
tutti
coloro che leggeranno il vostro articolo sapranno qual è il vostro indirizzo
e-mail. Potrete così ricevere, in privato, le risposte ai vostri
articoli da parte di altri frequentatori dei newsgroup.
Esistono però programmi appositi che estraggono, dagli articoli inviati
ad un newsgroup, gli indirizzi e-mail.
Noto il vostro indirizzo e-mail è possibile inviarvi (in automatico) di
tutto un po': proposte di vacanze in Papuasia, vendite di PC, consulenze
informatiche, numeri del lotto, ...
Questa poco civile pratica è nota come "spamming" (ho una mia versione
in italiano ma è improponibile).
Se volete evitare di trovare la vostra casella di posta intasata da
messaggi non desiderati, potete alterare i vostri dati ed usare il file
~/.signature.slrn
Per esempio, sempre facendo riferimento all' ipotetico abbonato di Tiscali
Mario Rossi (e-mail: mr@tiscalinet.it), potete editare il
file ~/.slrnrc
così:
hostname "tiscalinet.it"
set username "NOSPAM"
set realname "Mario Rossi"
set replyto "NOSPAM@tiscalinet.it"
set signature ".signature.slrn"
ed editare il file ~/.signature.slrn
in modo che compaia
la seguente frase:
Per ottenere il mio indirizzo e-mail sostituite NOSPAM con mr
In tal modo, solo chi avrà realmente necessità vi contatterà tramite e-mail.
R. Sebbene vi sia una man page, essa probabilmente non illustra le ultime
caratteristiche del programma. Una miglior sorgente di informazioni riguardo
le nuove caratteristiche di slrn si trova nel file changes.txt
(in inglese) che viene distribuito assieme a slrn. Inoltre, tutte le opzioni
di ~/.slrnrc
sono descritte nel file di esempio
slrn.rc
, anch' esso distribuito assieme a slrn.
Un ulteriore aiuto (in lingua inglese) è disponibile a:
http://space.mit.edu/~davis/slrn.html
In particolare, questa pagina web contiene dei link ad altre sorgenti
di informazioni riguardanti slrn.
Potete inoltre partecipare allo sviluppo di slrn migliorando la sua
documentazione. Se siete intenzionati a presentare della documentazione per
slrn, utilizzate per favore il semplice formato testo. Ho intenzione, prima
o poi, di tradurre tutta la documentazione di slrn in formato SGML per poi
elaborare il documento SGML per produrre man page e documenti nei formati
HTML, TeX, RTF, ecc...
Infine, se create della documentazione addizionale per slrn e la rendete
disponibile attraverso il WWW, per cortesia fatemelo sapere così che io
possa creare un link alla vostra pagina web.
Frequentemente il newsgroup news.software.readers
contiene articoli
che riguardano SLRN. Molti utilizzatori esperti di SLRN partecipano
attivamente al newsgroup, rendendolo una grande risorsa per SLRN stesso.
Vi sono diverse pagine web dedicate a SLRN. Basta seguire i link
presenti nella home page del programma SLRN a:
http://space.mit.edu/~davis/slrn.html
R. Ci sono un paio di ragioni per questo. La più semplice potrebbe essere che
il font che state utilizzando non supporta i caratteri utilizzati per
disegnare le linee. Si può risolvere il problema semplicemente cambiando il
font con uno dec-vt220 compatibile. Questo è di solito il caso delle
applicazioni telnet di Windows.
Un' altra ragione è che il vostro file terminfo potrebbe non essere
configurato correttamente. La soluzione ovvia è quella di sistemare il file
terminfo. Comunque, ciò potrebbe non essere possibile senza le corrette
utility (untic e tic) e molti sistemi non hanno queste utility installate.
Sebbene slang sia un sistema basato su terminfo, c'è un' altra soluzione
basata su termcap se state usando la versione 0.99.18, o successive, di
slang. Prima di tutto, aggiungete una voce al file termcap
per poter
disporre di un set di caratteri alternativo tramite le proprietà "ac",
"ae", "as" e possibilmente "eA". Chiameremo questo file
mio_termcap
. Date ora i seguenti comandi:
# setenv TERMCAP mio_termcap (se state usando tcsh come shell)
# export TERMCAP=mio_termcap (se state usando bash come shell)
# eval ‘tset -s nome-terminale‘
Sostituite nome-terminale con il nome del vostro terminale.
‘tset’ legge ed analizza il file mio_termcap
ed imposta
adeguatamente la variabile TERMCAP. Potete ora inserirla nel vostro file
.login
R. Si veda la risposta alla domanda precedente.
R. Affinchè slrn contrassegni come letto un articolo in più di un newsgroup, ha bisogno di sapere in quali newsgroup l' articolo è stato inviato tramite cross-post. Questa informazione è fornita dall' header Xref. Non tutti i news server forniscono questo header così che questa caratteristica non funzionerà con questi server. Supponiamo ora che il vostro news server fornisca l' header Xref come uno degli header dell' articolo e, allo stesso tempo, fornisca il supporto per il database NOV (attraverso il comando nntp XOVER). In questo caso, a meno che il server sia configurato per fornire l' header Xref come parte del database NOV, slrn non sarà in grado di ottenere l' header senza dover accedere all' articolo. Sfortunatamente, usando NOV l' header Xref è opzionale, così molti sistemi non lo forniscono automaticamente sebbene esso sia uno degli header raccomandati. Ricapitolando, assicuratevi che il vostro news server fornisca l' header Xref E se supporta NOV, assicuratevi che l' header Xref sia parte del database NOV.
R. Molte sequenze di tasti accettano argomenti di prefisso. Un argomento
di prefisso è un intero che è generato prima di una sequenza di tasti e
viene utilizzato come mezzo per controllarne il comportamento. E' generato
dalla pressione del tasto [Esc] e successivamente dalla pressione
dei tasti che corrispondono ad un numero intero. Per esempio, per generare
l' argomento di prefisso 314, dovete semplicemente premere
4 tasti: [Esc] [3] [1] [4].
Alcune funzioni usano tali argomenti come elemento di ripetizione. La
funzione corrispondente ad una determinata sequenza di tasti verrà ripetuta
il numero di volte specificato dall' argomento di prefisso.
Alcune altre funzioni possono semplicemente usarli come metodo per
modificare leggermente il comportamento della funzione. Per esempio, se un
argomento di prefisso è utilizzato come modificatore della funzione
"followup", gli header dell' articolo originale verranno inclusi
nell' articolo di followup. Senza un argomento di prefisso, gli header non
verranno inclusi nell' articolo di followup.
R. Basta semplicemente entrare in un newsgroup utilizzando un argomento di prefisso. Premete cioè [Esc] e poi un numero seguito dalla sequenza di tasti che utilizzate per entrare nel newsgroup. Per esempio, se utilizzate il tasto [Invio], dovete allora premere i seguenti tasti: [Esc] [1] [Invio].
R. Sì, se lanciate slrn in una finestra Xterm. Per abilitarlo, aggiungete
al file ~/.slrnrc
la seguente linea:set mouse 1
Per forzare slrn ad usare il mouse, lanciate slrn utilizzando l' opzione -m,
cioè date il seguente comando:
$ slrn -m
Le azioni definite per il mouse sono specificate nella seguente tabella:
Modalità: elenco nomi newsgroup
Oggetto Pulsante Azione
------------------------------------------------------------------------
Linea in alto di status qualsiasi specificata dall' etichetta
Nome del newsgroup qualsiasi seleziona il newsgroup
Linea in basso di status centrale mostra/nasconde i newsgroup
i cui articoli sono stati
letti tutti
Linea in basso di status sinistro una pagina giù
Linea in basso di status destro una pagina su
Modalità: elenco degli articoli
Oggetto Pulsante Azione
------------------------------------------------------------------------
Linea in alto di status qualsiasi specificata dall' etichetta
Linea in basso di status sinistro una pagina giù
destro una pagina su
centrale mostra la finestra degli
articoli
Linea di status degli articoli sinistro vai al successivo non letto
destro vai al precedente non letto
centrale mostra/nasconde le "quoted
lines"
Titolo di un articolo qualsiasi seleziona l' articolo
Modalità: finestra degli articoli
Pulsante Azione
------------------------------------------------------------------------
sinistro una pagina giù
destro una pagina su
centrale nascondi la finestra
R. Il metodo più semplice consiste nel tenere premuto il tasto [Shift] quando si usa il mouse per le operazioni taglia e incolla. Un altro metodo consiste nell' ottenere un prompt di slrn per effettuare la ricerca di qualcosa (premete [s] o [/] a seconda dei casi), effettuare l' operazione di taglia e incolla per poi interrompere la ricerca premendo [Invio].
R. Per fortuna, il metodo più semplice è anche quello più efficiente. In
pratica esso si basa sull' uso del tasto [#] per contrassegnare
numericamente gli articoli che volete decodificare e successivamente
sull' uso del tasto [:] per iniziare il processo di decodifica.
L' unica restrizione è che gli articoli codificati in più parti devono essere
contrassegnati seguendo l' esatto ordine in cui essi sono stati suddivisi.
Non c'è bisogno di decodificare un articolo alla volta. Semplicemente,
contrassegnate tutto ciò che volete decodificare e poi premete il tasto
[:].
Ecco un esempio concreto tratto dal newsgroup
alt.binaries.pictures.fractals:
- 9:[Mike In Indy] Kaboom! - kaboom.gif (0/1)
- 3078:[Mike In Indy] Kaboom! - kaboom.gif (1/1)
- 23:[Gumbycat ] lucifer.gif (0/7)
- 433:[Gumbycat ] lucifer.gif - for Halloween (5/7)
- 433:[Gumbycat ] lucifer.gif - for Halloween (3/7)
- 433:[Gumbycat ] lucifer.gif - for Halloween (4/7)
- 433:[Gumbycat ] lucifer.gif - for Halloween (6/7)
- 244:[Gumbycat ] lucifer.gif - for Halloween (7/7)
- 434:[Gumbycat ] lucifer.gif - for Halloween (1/7)
- 433:[Gumbycat ] lucifer.gif - for Halloween (2/7)
- 16:[Paul Carlson] My Halloween Fractal - devil.gif (0/1)
- 4310:[Paul Carlson] My Halloween Fractal - devil.gif (1/1)
Come potete vedere, sono stati inviati 3 file: kaboom.gif
,
lucifer.gif
e devil.gif
(nel momento in cui sto scrivendo è la
settimana di Halloween).
Sia kaboom.gif
che devil.gif
sono file costituiti da un' unica
parte mentre lucifer.gif
è un file che è stato suddiviso in 7 parti.
Dal momento che lucifer.gif
è mostrato non nell' ordine, bisogna
prestare attenzione nel contrassegnarlo per la decodifica.
Assumiamo che vogliate decodificare queste 3 immagini .gif, il tasto
[#] verrà utilizzato per contrassegnarle. Il risultato
dell' utilizzo del tasto [#] è mostrato qui sotto:
- 9:[Mike In Indy] Kaboom! - kaboom.gif (0/1)
1- 3078:[Mike In Indy] Kaboom! - kaboom.gif (1/1)
- 23:[Gumbycat ] lucifer.gif (0/7)
6- 433:[Gumbycat ] lucifer.gif - for Halloween (5/7)
4- 433:[Gumbycat ] lucifer.gif - for Halloween (3/7)
5- 433:[Gumbycat ] lucifer.gif - for Halloween (4/7)
7- 433:[Gumbycat ] lucifer.gif - for Halloween (6/7)
8- 244:[Gumbycat ] lucifer.gif - for Halloween (7/7)
2- 434:[Gumbycat ] lucifer.gif - for Halloween (1/7)
3- 433:[Gumbycat ] lucifer.gif - for Halloween (2/7)
- 16:[Paul Carlson] My Halloween Fractal - devil.gif (0/1)
9- 4310:[Paul Carlson] My Halloween Fractal - devil.gif (1/1)
Sono stati contrassegnati numericamente 9 articoli. Per iniziare la
decodifica, premete semplicemente il tasto [:]. Slrn chiederà il
nome del file in cui salvare gli articoli e, dopo aver salvato, chiederà se
deve proseguire nella decodifica delle altre 2 immagini gif. I file
decodificati verranno posti nella directory specificata dalla variabile
"decode_directory" che potete impostare nel file ~/.slrnrc
. Il
risultato finale è che, dopo aver contrassegnato con il tasto
[#], dovete premere una volta [:] e due volte il
tasto [Invio]. Per togliere tutti i contrassegni, premete
[Esc] [#].
R. Ci sono 2 modi:
Un utile suggerimento:
se vi dimenticate il nome del newsgroup mentre avete già caricato l' editor,
sospendete l' editor con [Ctrl]+[z] ed utilizzate more/less/most per
esaminare il vostro file .newsrc
. Se il vostro editor è sufficientemente
sofisticato, potete semplificare questo processo utilizzando la linea
"editor_command" presente nel file ~/.slrnrc
. Per esempio, se
utilizzate l' editor jed, potete impostare il vostro comando per richiamare
l' editor come:
editor_command "jed ~/.jnewsrc -2 %s -g %d"
Questo comando divide in due la finestra di editing, carica il file
~/.jnewsrc
all' interno della prima finestra e il file che dovete
editare con slrn nella seconda. Inoltre, fa sì che il cursore si posizioni
inizialmente sulla riga %d del file che dovete editare.
R. La combinazione di tasti [Esc] [p] cercherà di trovare l' articolo padre del corrente articolo come specificato dall' header references interrogando il news server se necessario. Per trovare l' articolo figlio dell' articolo corrente utilizzate i tasti [Esc] [Ctrl]+[p]. Infine, per ricostruire l' intero thread utilizzate i tasti [Esc] [1] [Esc] [p].
R. Il tasto [L] mostra un elenco di tutti i gruppi non sottoscritti
di cui slrn è a conoscenza. Slrn ottiene questa informazione cercando,
nell' ordine, nelle seguenti 3 sorgenti e fermandosi non appena la
trova:
active
(se state utilizzando
slrn e slrnpull per la lettura offline delle news, questo file si trova
nella directory ~/slrnpull/data, ndt). Slrn fa questo solo se è
presente nel file ~/.slrnrc
la linea "set read_active 1".
Per default, slrn non legge l' active file.
~/.slrnrc
la linea "set use_xgtitle 1".
~/.newsrc
. Il
comando [L] mostrerà solo la lista dei gruppi non sottoscritti che
sono presenti in questo file.L' ultima ricerca (3) ha sempre successo con il risultato che potrebbero
essere elencati molti meno gruppi di quelli che ci si aspetterebbe. Se
disponete di una connessione veloce con il vostro news server, allora
aggiungete semplicemente questa linea al file ~/.slrnrc
: "set
read_active 1". Se invece la vostra connessione è lenta e non desiderate che
slrn legga il file active
, allora informatevi se il vostro news server
supporti o meno il comando XGTITLE. In caso affermativo, fate in modo che
slrn lo possa usare aggiungendo nel file ~/.slrnrc
la linea
"set use_xgtitle 1". Per ultimo, potete inserire nel file
~/.slrnrc
una lista dei newsgroup.
R. Dovete utilizzare le impostazioni presenti nel file
~/.slrnrc
:
set hostname "NOME DEL VOSTRO HOST"
set username "NOME UTENTE"
set realname "VOSTRO NOME REALE"
Infine, se esiste una funzione S-Lang chiamata `make_from_string_hook',
essa verrà utilizzata per generare l' header From. In pratica:
define make_from_string_hook ()
{
return "W. J. Clinton <president@whitehouse.gov>"
}
R. Questa variabile non è più significativa ed è ignorata dalle recenti versioni di SLRN. L' utente è invece incoraggiato ad utilizzare l' interfaccia, molto più flessibile, fornita dalla variabile `header_display_format'.
~/.slrnrc
solo per gli articoli inviati al newsgroup e non
per gli articoli di risposta inviati tramite e-mail?R. Bisogna configurare correttamente il proprio MTA (postfix/sendmail/qmail).
esiste un mini-HOWTO che descrive (in italiano) come configurarlo:
http://www.linux.it/~agx/info/mini-postfix-howto.txt
Personalmente vi consiglio di utilizzare Postfix. E' un MTA sicuro e molto semplice da configurare:
NOTA: se vi collegate ad internet mediante modem
tramite la normale rete telefonica (connessioni dial-up) vi sarà utile
aggiungere in /etc/postfix/main.cf
la seguente linea:
defer_transports = smtp
In questo modo, tutte le vostre e-mail non verranno inviate subito al server SMTP del vostro provider bensì salvate sul vostro hard disk in attesa di essere spedite. Per spedirle:
# sendmail -q
Per evitare di dare il comando come utente root, create il seguente link simbolico per ogni utente della vostra Linux box:
$ ln -s /usr/sbin/sendmail ~/bin/sendmail
si legga il "Sendmail address rewriting mini-HOWTO" che potete trovare (in italiano) qui:
http://www.pluto.linux.it/ildp/HOWTO/mini/Sendmail-Address-Rewrite.html
Se di Sendmail avete la versione 8.9.x/8.10 è anche possibile utilizzare lo
script Install-Sendmail (è multilingua, compreso l' italiano) che potete
trovare qui:
http://cork.linux.ie/projects/install-sendmail/install-sendmail-5.3.1.tar.gz
R. Fate in modo che siano presenti nel file ~/.slrnrc
le
seguenti due linee:
set abort_unmodified_edits 1
set mail_editor_command "mutt -H '%s'"
Se utilizzate SLRN assieme a X:
set mail_editor_command "xterm -T mutt -e mutt -H '%s' &"
R. Fate in modo che nel file ~/.slrnrc
siano presenti le
seguenti linee:
set abort_unmodified_edits 1
interpret "my_reply.sl"
set mail_editor_command "mutt -H '%s' -F '~/.muttrc.slrn'"
Nel file ~/.slrnrc
commentate la linea
(cioè aggiungete un % all'inizio):
setkey article reply "r"
Infine, scrivete il file di testo (macro) ~/my_reply.sl
:
% File ~/my_reply.sl
define my_reply ()
{
variable sig = get_variable_value("signature");
set_string_variable("signature", " ");
% se utilizzate delle misure anti-spam, sostituite a __________ il
% vostro vero indirizzo e-mail
set_string_variable("replyto", "__________");
call("reply");
set_string_variable("signature", sig);
}
definekey ("my_reply", "r", "article");
ed il file di configurazione ~/.muttrc.slrn
(commentate
con un # la linea "set editor=" che non vi interessa):
# File ~/.muttrc.slrn
source ~/.muttrc
#per avere il cursore posizionato sulla seconda linea:
set editor="vim +2"
#per avere il cursore posizionato appena sopra la signature:
set editor="vim +/^$"
R. Personalmente utilizzo vim
:
Una volta configurato a dovere si rivela essere un editor molto potente
ed incredibilmente efficiente nello svolgere il proprio lavoro.
Segue, commentato, il mio file di configurazione ~/.vimrc
NOTA: il programma par
(un formattatore di paragrafi) lo trovate
qui:
http://www.cs.berkeley.edu/~amc/Par/
" File ~/.vimrc
" evidenzia i risultati di una ricerca (tasto [/])
set hlsearch
" fai un backup dei file
set backup
" niente beep, niente visual bell
set vb t_vb=
" margine destro al 72-esimo carattere
set tw=72
" il tasto [Canc] deve funzionare come in tutti gli altri editor
set bs=2
" mostra riga e colonna correnti, in basso a destra dello schermo
set ruler
" evidenzia la sintassi dei file
syntax on
" SLRN utilizza i file ~/.followup e ~/.article per gli articoli destinati
" ai newsgroup. Pertanto, per questi due file non utilizziamo le lettere
" accentate presenti su una tastiera italiana.
" Il contenuto del file ~/.vimrc.slrn è a seguire
autocmd BufReadPost ~/.followup source ~/.vimrc.slrn
autocmd BufReadPost ~/.article source ~/.vimrc.slrn
" Mutt utilizza i file /tmp/mutt-* quando scriviamo un' e-mail.
" Anche in questo caso, non utilizziamo le lettere accentate presenti su
" una tastiera italiana.
" Il contenuto del file ~/.vimrc.mutt è a seguire
autocmd BufReadPost /tmp/mutt-* source ~/.vimrc.mutt
" non creare file di backup per i file "postponed", per evitare che
" appaiano nella finestra ottenuta premendo [Esc] [p] in modalità
" -elenco dei newsgroup-
" Il contenuto del file ~/.vimrc.slrn.postponed è a seguire
autocmd BufReadPost ~/slrn/postponed/* source ~/.vimrc.slrn.postponed
" modalità NORMAL (nmap) e INSERT (imap)
" ^[ = [Ctrl]+[v] [Esc]
" ^M = [Ctrl]+[v] [Ctrl]+[m]
" mappa il tasto funzione <F2> per cancellare una linea
nmap <F2> dd
imap <F2> ^[dd^[i
" mappa il tasto funzione <F3> per utilizzare PAR
nmap <F3> {!}par 72qj^M}
imap <F3> ^[{!}par 72qj^M}^[i
" mappa il tasto funzione <F8> per uscire SENZA salvare
nmap <F8> :q!^M
imap <F8> ^[:q!^M
" mappa il tasto funzione <F10> per uscire E salvare
nmap <F10> :x^M
imap <F10> ^[:x^M
" definisci le abbreviazioni per gli indirizzi di posta elettronica
" sostituisce a io@ l' indirizzo e-mail a.airaghi@tiscalinet.it
" sostituisce a rossi@ l' indirizzo e-mail mr@tiscalinet.it
ia io@ a.airaghi@tiscalinet.it
ia rossi@ mr@tiscalinet.it
" File ~/.vimrc.slrn
" File ~/.vimrc.mutt
imap à a`
imap è e`
imap é e`
imap ì i`
imap ò o`
imap ù u`
" File ~/.vimrc.slrn.postponed
set nobackup
imap à a`
imap è e`
imap é e`
imap ì i`
imap ò o`
imap ù u`
Bisogna poi inserire in ~/.slrnrc
questa linea:
set editor_command "vim +8"
R. Sì, basta inserire nel file ~/.slrnrc
la seguente linea:
set use_metamail 0
R. Sì. Un metodo molto semplice consiste nell' utilizzare un MUA (Mail User
Agent) come elm o mutt. Digitate uno dei seguenti due comandi:
$ elm -f ~/slrn/My_Posts
$ mutt -f ~/slrn/My_Posts
R. Modificate il file ~/.slrnrc
in modo che compaia la
seguente linea:
set write_newsrc_flags 0
Date ora il seguente comando:
slrn --nntp -h [news server] -a -f elenco_gruppi -create
[news server] = nome del news server
Uscite da SLRN. L' elenco di tutti i newsgroup lo potete leggere nel
file elenco_gruppi
R. Date il seguente comando:
$ slrn -h [nome news server] -f elenco_gruppi -create
Lanciate ora SLRN:
$ slrn
Elencate tutti i newsgroup presenti sul news server: dovete premere il tasto
[L], scrivere * e premere [Invio]
Sottoscrivete tutti i newsgroup: dovete premere i tasti [Esc]
[1] [s], scrivere * e premere [Invio]
Uscite ora da SLRN. L' elenco di tutti i newsgroup lo potete leggere nel
file elenco_gruppi
R. Sì, basta che nel file ~/.slrnrc
sia presente la seguente
linea:
set abort_unmodified_edits 1
R. Sì, ci sono 10 formati disponibili e il comando
[Esc] [a] consente di passare al successivo.
Per modificare il formato numero 0 (quello di default per la modalità
-elenco degli articoli-) si deve aggiungere al file ~/.slrnrc
la seguente linea:
header_display_format 0 "<formato>"
dove <formato> si costruisce utilizzando i seguenti campi:
%d: data dell' articolo
%f: header From
%F: flags (marcatori: letto/non-letto, * e #, numero di linea)
%G: "group lens score"
%l: numero di linee dell' articolo
%n: numero dell' articolo sul news server
%r: realname (autore dell' articolo)
%s: subject (titolo dell' articolo)
%S: score (punteggio)
%t: thread (mostra il numero degli articoli che formano un thread)
%Xg: sposta il cursore alla colonna X (sono numerate a partire da 0).
Se X è un numero negativo, il cursore verrà spostato di X colonne a
partire dal bordo destro della finestra.
E' possibile definire l' ampiezza di ciascun campo mediante un numero interposto tra il segno di percentuale (%) e la lettera che identifica il campo. Ad esempio:
%12r = riserva 12 caratteri per il campo che conterrà il nome dell' autore dell' articolo.
Il contenuto del campo verrà giustificato:
Esistono 4 formati predefiniti:
formato numero 0: "%F%-5S%G%-5l:[%12r]%t%s"
formato numero 1: "%F%G%-5l:[%12r]%t%s"
formato numero 2: "%F%-5l:%t%s"
formato numero 3: "%F%-5S%-5l:%t%50s %r"
Inoltre, [Esc] [a] può essere utilizzato con un argomento di prefisso per selezionare un particolare formato. Per esempio, [Esc] [0] [Esc] [a] seleziona il formato numero 0.
Questo paragrafo è a cura di Matteo Nastasi,
nastasi@tiscalinet.it
Knews è un programma che gira sotto X Window per leggere e inviare
articoli ad un news server.
La K iniziale non sta per KDE ma per "Karl-Johan Johnsson" (il nome di
colui che l' ha scritto) quindi non è necessario aver installato
KDE per farlo funzionare.
Con gli opportuni accorgimenti, che verranno qui descritti, può essere
utilizzato offline in combinazione con SLRNPULL.
Questa l' home page del programma:
http://www.matematik.su.se/users/kjj/knews.html
Dovete, prima di tutto, installare e configurare SLRNPULL.
Create ora il seguente script di shell, /usr/bin/mynews:
#!/bin/sh
nome=`date +X%Y%m%d_%H%M%S`.`id -un`
pa="$1"
cat > $pa/$nome
exit 0
Date il seguente comando:
# chmod a+x /usr/bin/mynews
in modo da renderlo eseguibile
Dopo aver installato il programma Knews, editate il file
/usr/X11R6/lib/X11/app-defaults/Knews
assicurandovi che
compaiano le seguenti linee:
Knews.nntpServer: #spool
Knews.#spool: knewsd -spool /var/spool/slrnpull/news \
-active /var/spool/slrnpull/data/active \
-post 'exec mynews /var/spool/slrnpull/out.going'
Per la configurazione di Knews si tengano presenti le seguenti
equivalenze (tra parentesi quadre i file da editare):
set realname "Mario Rossi" [~/.slrnrc] diventa:
*fullName: Mario Rossi [~/.knews/config-#spool]
set username "mr" [~/.slrnrc] diventa:
Knews.mailName: mr [/usr/X11R6/lib/X11/app-defaults/Knews]
set editor_command "vim +8" [~/.slrnrc] diventa:
Knews.editCommand: xterm -e vim +%i %s [/usr/X11R6/lib/X11/app-defaults/Knews]
NOTA (per utenti Debian): l' editor utilizzato per scrivere gli
articoli con Knews è "/usr/bin/sensible-editor". Occorre quindi valorizzare
opportunamente la variabile di ambiente EDITOR (magari in uno dei
vari script lanciati ad inizio sessione tipo .profile
) prima di
lanciare il programma Knews.
E' possibile aggiungere funzionalità a SLRN mediante l' utilizzo di
macro. Scelta la macro da utilizzare, inserite nel file
~/.slrnrc
la seguente linea:
interpret "{nome macro}"
Ad esempio:
interpret "filter.sl"
Altre utili macro le potete trovare (in inglese) qui:
http://slrn.sourceforge.net/macros/index.html
http://www.geocities.com/tsca.geo/slang.html
Per "estrarre" le macro dal presente HOWTO consiglio di partire dalla
sua versione testo news2.2.txt
e di utilizzare l' editor vim
.
Potete ottenere la versione testo scaricandola direttamente da
internet:
http://web.tiscalinet.it/airaghi/news2.2.txt
oppure elaborando il file sorgente news2.2.sgml
:
$ sgml2txt -f -l it -c latin news2.2.sgml
Editate con vim
il documento news2.2.txt
:
$ vim news2.2.txt
Per cercare una parola utilizzate il tasto [/]
Supponiamo ora che vogliate utilizzare la macro filter.sl
.
Quest' ultima, all' interno del file news2.2.txt
, inizia alla
linea 2141 e termina alla linea 2163 (per la configurazione di vim
si veda il paragrafo "Ancora FAQ").
Premete [Esc] [:] e scrivete:
2141,2163w ~/filter.sl
per ottenere il file ~/filter.sl
con la macro richiesta.
% File ~/filter.sl
%
% Autore della macro e
% del programma newsbody: Byrial Jensen, byrial@image.dk
define post_filter_hook (file)
{
variable rsp;
variable cmd;
rsp = get_response ("AaIiEe",
"Use ispell? \001Abort, \001Italian, \001English");
if ((rsp == 'i') or (rsp == 'I'))
cmd = Sprintf ("newsbody -qs -n %s -p ispell -- -d italian -x %%f",
file, 1);
else if ((rsp == 'e') or (rsp == 'E'))
cmd = Sprintf ("newsbody -qs -n %s -p ispell -- -x %%f", file, 1);
else return;
() = system (cmd);
}
E' necessario scaricare il dizionario italiano da:
http://members.xoom.com/endhome/download.html
e il programma newsbody
da:
http://home.worldonline.dk/~byrial/spellutils/
% File ~/cerca.sl
%
% Questa macro è presente nei sorgenti del programma SLRN
%
% This macro allows one to search throgh the bodies of the articles in
% the current newsgroup. It binds the function 'search_newsgroup' to
% the '$' key in article mode.
%
% Traduzione: questa macro effettua una ricerca all' interno degli
% articoli del newsgroup corrente. Associa (in modalità -elenco degli
% articoli-) la funzione 'search_newsgroup' al tasto [$].
%
% Per effettuare una ricerca: premete il tasto [$] in modalità
% -elenco degli articoli-
variable Search_Last_Art_Search_Str = "";
define search_newsgroup ()
{
variable str;
variable flags;
str = read_mini ("Search for regexp", Search_Last_Art_Search_Str,"");
if (str == "")
return;
Search_Last_Art_Search_Str = str;
uncollapse_threads ();
do
{
flags = get_header_flags ();
if (re_search_article (str))
{
pop ();
return;
}
set_header_flags (flags);
call ("hide_article");
}
while (header_down (1));
error ("Not found.");
}
definekey ("search_newsgroup", "$", "article");
% File ~/multi.sl
%
% Autore: Tomasz 'tsca' Sienicki, tsca@cryogen.com
% http://www.geocities.com/tsca.geo/slang.html
%
% Modifiche: Alessandro Airaghi, a.airaghi@tiscalinet.it
% http://web.tiscalinet.it/airaghi
define common_hook ()
{
variable
custom_headers = get_variable_value ("custom_headers"),
editor_command = get_variable_value ("editor_command"),
followup_custom_headers = get_variable_value (
"followup_custom_headers"),
followup_string = get_variable_value ("followup_string"),
hostname = get_variable_value ("hostname"),
mime_charset = get_variable_value ("mime_charset"),
realname = get_variable_value ("realname"),
replyto = get_variable_value ("replyto"),
signature_file = get_variable_value ("signature"),
username = get_variable_value ("username");
if (is_substr (current_newsgroup (), "<ng1>"))
{
custom_headers = "X-____: ______";
editor_command = "vim +9";
followup_custom_headers = "X-____: ______";
followup_string = "______________";
hostname = "______________";
mime_charset = "______________";
realname = "______________";
replyto = "______________";
signature_file = "______________";
username = "______________";
}
if (orelse {is_substr (current_newsgroup (), "<ng2>")}
{is_substr (current_newsgroup (), "<ng3>")}
{is_substr (current_newsgroup (), "<ng4>")} )
{
custom_headers = "X-____: ______";
editor_command = "vim +9";
followup_custom_headers = "X-____: ______";
followup_string = "______________";
hostname = "______________";
mime_charset = "______________";
realname = "______________";
replyto = "______________";
signature_file = "______________";
username = "______________";
}
set_string_variable ("custom_headers", custom_headers);
set_string_variable ("editor_command", editor_command);
set_string_variable ("followup_custom_headers",followup_custom_headers);
set_string_variable ("followup_string", followup_string);
set_string_variable ("hostname", hostname);
set_string_variable ("mime_charset", mime_charset);
set_string_variable ("realname", realname);
set_string_variable ("replyto", replyto);
set_string_variable ("signature", signature_file);
set_string_variable ("username", username);
}
define followup_hook () { common_hook; }
define post_hook () { common_hook; }
NOTA 1: la variabile signature_file
non deve contenere il
carattere ~ in quanto non viene interpretato come directory HOME.
Ad esempio, se volete usare un' apposita signature per il newsgroup
it.test
, potete scrivere:signature_file = ".signature.it.test";
e poi editare il file ~/.signature.it.test
NOTA 2: la stringa "alt." al posto di <ng1>, per esempio, individua tutti i newsgroup che iniziano con i caratteri "alt."
NOTA 3: se avete dei dubbi su come SLRN utilizzi le variabili presenti nella macro, osservate i due specchietti che seguono. Le variabili compaiono all' interno delle parentesi graffe.
Schema di un articolo (non di followup) inviato al newsgroup it.test :
Path: ...!{username}
From: {username}@{hostname} ({realname})
Newsgroups: it.test
Subject: ...
Reply-To: {replyto}
{custom_headers}
Message-Id: <slrn8...{username}@localhost.localdomain>
Mime-Version: 1.0
Content-Type: text/plain; charset={mime_charset}
Content-Transfer-Encoding: 7bit
User-Agent: slrn/0.9.6.2 (Linux)
...corpo dell' articolo (non di followup)...
--
{signature_file}
Schema di un articolo (di followup) inviato al newsgroup it.test :
Path: ...!{username}
From: {username}@{hostname} ({realname})
Newsgroups: it.test
Subject: Re: ...
References: <...>
Reply-To: {replyto}
{followup_custom_headers}
Message-Id: <slrn8...{username}@localhost.localdomain>
Mime-Version: 1.0
Content-Type: text/plain; charset={mime_charset}
Content-Transfer-Encoding: 7bit
User-Agent: slrn/0.9.6.2 (Linux)
{followup_string}
...corpo dell' articolo (di followup)...
--
{signature_file}
~/{save_directory}
(si veda la voce "set save_directory"
nel file ~/.slrnrc
)
% File ~/salva_no_nome.sl
%
% Autore: Alessandro Airaghi, a.airaghi@tiscalinet.it
% http://web.tiscalinet.it/airaghi
variable ultimo_file = "";
define salva_no_nome ()
{
variable file, salva, home_dir;
file = read_mini ("Save to file (^G aborts)", ultimo_file, "");
if (file == "")
return;
ultimo_file = file;
home_dir = make_home_filename ("");
salva = Sprintf ("%s%s/%s", home_dir,
get_variable_value("save_directory"), ultimo_file, 3);
set_input_string (salva);
call ("save");
}
definekey ("salva_no_nome", "^o", "article");
% File ~/seleziona_tutti.sl
%
% Autore: Paolo Piersanti, broonzy@mailandnews.com
%
% Modifiche: Alessandro Airaghi, a.airaghi@tiscalinet.it
define seleziona_tutti ()
{
set_prefix_argument (1);
ungetkey (13);
call ("select_group");
}
definekey ("seleziona_tutti", "&", "group");
X-Complaints-To
).
Posizionatevi sull' articolo che contiene lo spam e premete
[=]X-Complaints-To
% File ~/segnala_spam.sl
%
% Autore: Alessandro Airaghi, a.airaghi@tiscalinet.it
% http://web.tiscalinet.it/airaghi
define segnala_spam ()
{
variable indirizzo="";
variable articolo=article_as_string ();
variable newsgroup=extract_article_header("Newsgroups");
variable cmd, fp;
variable file="/tmp/spam.txt";
% sostituisci il carattere "," con un ritorno a capo "\n"
% per utilizzare la funzione 'strtrans' occorre S-Lang >= 1.3.8
newsgroup = strtrans(newsgroup, ",", "\n");
% assegna alla variabile {indirizzo} il valore dell' header
% X-Complaints-To
indirizzo=extract_article_header("X-Complaints-To");
% esci se non esiste l' header X-Complaints-To
if (indirizzo == "")
{
message (sprintf ("%s", "Non esiste l' header X-Complaints-To"));
return;
}
% apri il file temporaneo per la scrittura
fp = fopen (file, "w");
% scrivi nel file
fputs ("\nSPAM in newsgroup(s):\n\n", fp);
fputs (newsgroup, fp);
fputs ("\n---------------------------------------------------\n", fp);
fputs (articolo, fp);
% chiudi il file
() = fclose (fp);
% invia un' e-mail con titolo "SPAM" al destinatario indicato
% in {indirizzo}
cmd = sprintf ("%s%s", "cat /tmp/spam.txt | mutt -s SPAM ",
indirizzo, 2);
() = system (sprintf ("%s", cmd));
% stampa in SLRN un messaggio dell' avvenuto invio della mail
message (sprintf ("=SPAM= segnalato al seguente indirizzo: %s",
indirizzo));
% rimuovi il file temporaneo
() = system (sprintf ("%s%s", "rm -f ", file, 2));
}
definekey ("segnala_spam", "=", "article");
% File ~/invia_copia.sl
%
% Autore: Alessandro Airaghi, a.airaghi@tiscalinet.it
% http://web.tiscalinet.it/airaghi
define invia_copia ()
{
variable indirizzo="";
variable newsgroup=extract_article_header("Newsgroups");
variable titolo=extract_article_header("Subject");
variable rsp, cmd, line, messaggio;
variable article_file, body_file, forward_file;
variable article_fp, body_fp, forward_fp;
% esci se non è ancora stato letto nessun articolo
if (_is_article_visible () == 0)
{
message (sprintf ("%s", "Devi prima leggere un articolo !"));
return;
}
% sostituisci il carattere "," con un ritorno a capo "\n"
% per utilizzare la funzione 'strtrans' occorre S-Lang >= 1.3.8
newsgroup = strtrans(newsgroup, ",", "\n");
% elenco dei nomi dei file temporanei utilizzati dalla macro
% si trovano tutti in /tmp
%
% article : articolo originale, completo di tutti gli header
% article-body : solo il corpo dell' articolo
% article-forward : file da inviare in forward
article_file="/tmp/article";
body_file = article_file + "-body";
forward_file = article_file + "-forward";
% crea il file article
save_current_article(article_file);
% apri in lettura il file article
article_fp = fopen (article_file, "r");
% apri in scrittura il file article-body
body_fp = fopen (body_file, "w");
% salta gli header del file article
while (-1 != fgets (&line, article_fp))
if (line == "\n")
break;
% crea il file article-body
while (-1 != fgets (&line, article_fp))
() = fputs (line, body_fp);
() = fclose (body_fp);
() = fclose (article_fp);
% crea il file article-forward
body_fp = fopen (body_file, "r");
forward_fp = fopen (forward_file, "w");
fputs ("\nArticolo apparso in:\n", forward_fp);
fputs (newsgroup, forward_fp);
fputs ("\n\ndal titolo:\n", forward_fp);
fputs (titolo, forward_fp);
fputs ("\n\nCredo possa interessarti !\n", forward_fp);
fputs ("-----------------------------------------------------\n\n",
forward_fp);
while (-1 != fgets (&line, body_fp))
() = fputs (line, forward_fp);
() = fclose (forward_fp);
() = fclose (body_fp);
% finestra per la selezione del destinatario
rsp = get_select_box_response
("Invia una copia a:", % titolo della finestra
"Mario Rossi", % destinatario numero 0
"utente locale [alex]", % destinatario numero 1
2); % totale numero destinatari = 2
switch (rsp)
{case 0: indirizzo="mr@tiscalinet.it"; }
{case 1: indirizzo="alex"; }
% invio dell' e-mail
messaggio = sprintf ("%s", forward_file);
cmd = sprintf ("%s%s%s%s", "cat ", messaggio,
" | mutt -s Leggi_questo ", indirizzo, 4);
() = system (sprintf ("%s", cmd));
message (sprintf ("Inviata una copia del messaggio a: %s",
indirizzo));
% cancella i file temporanei
() = system (sprintf ("%s%s", "rm -f ", article_file, 2));
() = system (sprintf ("%s%s", "rm -f ", body_file, 2));
() = system (sprintf ("%s%s", "rm -f ", forward_file, 2));
}
definekey ("invia_copia", "^f", "article");
~/.mutt_aliases
% File ~/invia_copia2.sl
%
% Autore: Alessandro Airaghi, a.airaghi@tiscalinet.it
% http://web.tiscalinet.it/airaghi
%
% Autore: Vanni Brutto, zanac@linuxfan.com
% http://www.zanac.net
% affinchè la macro funzioni correttamente, il file ~/.mutt_aliases
% DEVE avere la seguente sintassi:
%
% alias <nick> <indirizzo e-mail> (Nome Cognome)
%
% esempi:
%
% alias io a.airaghi@tiscalinet.it (Alessandro Airaghi)
% alias Zanac zanac@linuxfan.com (Vanni Brutto)
variable indirizzo="";
define invia_copia2 ()
{
variable articolo=article_as_string ();
variable newsgroup=extract_article_header("Newsgroups");
variable titolo=extract_article_header("Subject");
variable cmd, line, messaggio;
variable article_file, body_file, forward_file, rubrica_file,
funzione_file;
variable article_fp, body_fp, forward_fp, rubrica_fp,
funzione_fp;
% esci se non è ancora stato letto nessun articolo
if (_is_article_visible () == 0)
{
message (sprintf ("%s", "Devi prima leggere un articolo !"));
return;
}
% sostituisci il carattere "," con un ritorno a capo "\n"
% per utilizzare la funzione 'strtrans' occorre slang >= 1.3.8
newsgroup = strtrans(newsgroup, ",", "\n");
% elenco dei file temporanei utilizzati dalla macro
% si trovano tutti in /tmp
%
% article_file : articolo originale, completo di tutti gli header
% body_file : solo il corpo dell'articolo
% forward_file : file da inviare in forward
% rubrica_file : contiene gli indirizzi e-mail ed i nomi dei
% destinatari estratti dal file ~/.mutt_aliases
% Il file contiene delle linee del tipo:
%
% "a.airaghi@tiscalinet.it (Alessandro Airaghi)",
% "zanac@linuxfan.com (Vanni Brutto)",
%
% funzione_file : contiene la funzione 'get_address_list'.
% Questo file DEVE essere creato: quanti e quali alias
% siano presenti nel file ~/.mutt_aliases non sono
% noti a priori
article_file = "/tmp/article";
body_file = article_file + "-body";
forward_file = article_file + "-forward";
rubrica_file = "/tmp/rubrica.txt";
funzione_file = "/tmp/get_address_list.sl";
% crea il file rubrica_file
%
% si tenga presente che i alcuni caratteri vanno "protetti" da
% un backslash (\):
% " diventa \"
% ' diventa \'
% \ diventa \\
%% estrai dal file ~/.mutt_aliases i seguenti due campi:
%% <indirizzo e-mail> (Nome Cognome)
cmd = "cat ~/.mutt_aliases | cut -d \\ -f 3- > /tmp/rubrica1.txt";
() = system (sprintf ("%s", cmd));
%% aggiungi " ad inizio riga
cmd = "sed \'s/^/\"/\' /tmp/rubrica1.txt > /tmp/rubrica2.txt";
() = system (sprintf ("%s", cmd));
%% aggiungi " a fine riga
cmd = "sed \'s/$/\",/\' /tmp/rubrica2.txt > ";
() = system (sprintf ("%s%s", cmd, rubrica_file));
% crea il file funzione_file che conterrà la funzione 'get_address_list'
funzione_fp = fopen (funzione_file, "w");
fputs ("define get_address_list ()\n",funzione_fp);
fputs ("{\n", funzione_fp);
fputs ("variable n;\n", funzione_fp);
fputs ("n = _stkdepth ();\n", funzione_fp);
fputs ("select_list_box (\"Invia una copia a: \",\n", funzione_fp);
rubrica_fp = fopen (rubrica_file, "r");
% inserisci gli alias di Mutt nel file funzione_file
while (-1 != fgets (&line, rubrica_fp))
() = fputs (line, funzione_fp);
() = fclose (rubrica_fp);
fputs ("_stkdepth () - n - 1,\n", funzione_fp);
fputs ("0);\n", funzione_fp);
fputs ("}\n", funzione_fp);
%% la chiamata alla funzione 'get_address_list' deve avvenire all'interno
%% del file funzione_file
fputs ("indirizzo = get_address_list;", funzione_fp);
() = fclose (funzione_fp);
% crea il file article_file
article_fp = fopen (article_file, "w");
fputs (articolo, article_fp);
() = fclose (article_fp);
% apri in lettura il file article_file per estrarre il corpo del
% messaggio
article_fp = fopen (article_file, "r");
% apri in scrittura il file article_body
body_fp = fopen (body_file, "w");
% salta gli header
while (-1 != fgets (&line, article_fp))
if (line == "\n")
break;
% crea il file article_body
while (-1 != fgets (&line, article_fp))
() = fputs (line, body_fp);
() = fclose (body_fp);
() = fclose (article_fp);
% crea il file article_forward
body_fp = fopen (body_file, "r");
forward_fp = fopen (forward_file, "w");
fputs ("\nArticolo apparso in:\n", forward_fp);
fputs (newsgroup, forward_fp);
fputs ("\n\ndal titolo:\n", forward_fp);
fputs (titolo, forward_fp);
fputs ("\n\nCredo possa interessarti !\n", forward_fp);
fputs ("---------------------------------------------\n\n", forward_fp);
while (-1 != fgets (&line, body_fp))
() = fputs (line, forward_fp);
() = fclose (forward_fp);
() = fclose (body_fp);
% esegui la funzione 'get_address_list' contenuta nel file funzione_file
evalfile(funzione_file);
% la funzione 'get_address_list' restituisce una stringa così
% fatta:
%
% <indirizzo e-mail> <nome e cognome tra parentesi tonde>
%
% sostituisci allora il carattere " " con un ritorno a capo "\n"
% affinchè Mutt venga chiamato in maniera corretta
%
% per utilizzare la funzione 'strtrans' occorre slang >= 1.3.8
indirizzo = strtrans(indirizzo, " ", "\n");
% invia l' e-mail
messaggio = sprintf ("%s", forward_file);
cmd = sprintf ("%s%s%s%s", "cat ", messaggio,
" | mutt -s Leggi_questo ", indirizzo, 4);
() = system (sprintf ("%s", cmd));
message (sprintf ("Inviata una copia del messaggio a: %s",
indirizzo));
% cancella i file temporanei
() = system (sprintf ("%s%s", "rm -f ", article_file, 2));
() = system (sprintf ("%s%s", "rm -f ", body_file, 2));
() = system (sprintf ("%s%s", "rm -f ", forward_file, 2));
() = system (sprintf ("%s%s", "rm -f ", rubrica_file, 2));
() = system (sprintf ("%s%s", "rm -f ", funzione_file, 2));
() = system (sprintf ("%s", "rm -f /tmp/rubrica1.txt"));
() = system (sprintf ("%s", "rm -f /tmp/rubrica2.txt"));
}
definekey ("invia_copia2", "^f", "article");
NOTA: affinchè la macro funzioni correttamente, il file
~/.mutt_aliases
DEVE avere la seguente sintassi:
alias <nick> <indirizzo e-mail> (Nome Cognome)
esempi:
alias io a.airaghi@tiscalinet.it (Alessandro Airaghi)
alias Zanac zanac@linuxfan.com (Vanni Brutto)
L' informatica possiede un gergo ricchissimo di vocaboli, la maggior parte dei quali sono in lingua inglese. Per la stesura di questo documento ho preferito tradurre tali termini il meno possibile. Questo è un elenco in ordine alfabetico di tutti i termini in lingua inglese, e non, che sono propri del mondo dei newsgroup.
ARTICOLO PADRE e FIGLIO. Supponiamo che venga inviato al newsgroup
un primo articolo, che chiameremo A. Successivamente, ad A verrà data
risposta tramite l' articolo B. A prende il nome di articolo padre (di B)
e B quello di articolo figlio (di A). Se anche a B verrà data risposta
tramite l' articolo C, B costituirà l' articolo padre (di C) e C sarà
l' articolo figlio (di B). E così via...
Utilizzando lo stesso schema adoperato da SLRN per visualizzare i
thread:
A
`-->B
`-->C
CROSS POSTING. Invio contemporaneo di un articolo a più newsgroup.
FAQ. Frequently Asked Question, in italiano: domande poste di frequente.
FOLLOWUP MESSAGE. Messaggio di risposta pubblico. Viene inviato al newsgroup. Dal verbo inglese "to follow up" (seguire, far seguito a). Si veda anche: REPLY MESSAGE.
HEADER. Intestazioni. Sono le linee che appaiono in cima a tutti gli articoli e che riportano informazioni riguardanti il nome del newsgroup a cui l' articolo è stato inviato, la data di invio, ecc...
LURKER. Si indica con tale termine chi, pur leggendo quotidianamente tutti gli articoli di uno o più newsgroup, non vi prende attivamente parte inviando contributi personali. Deriva dal verbo inglese "to lurk" (restare nascosti). In italiano tale verbo è diventato "lurkare" (sic).
NEWS. Articolo, messaggio.
NEWSGROUP. Gruppo di articoli. Si indica con tale termine l' insieme di tutti gli articoli che vertono su un determinato tema. Esempio: in it.comp.os.linux.sys partecipano tutti coloro che sono interessati a discussioni in lingua italiana riguardanti il sistema operativo Linux.
NEWS SERVER. E' costituito dal computer e dal software necessario per la gestione di tutti i newsgroup. Un news server (per esempio: news.tiscalinet.it) normalmente ospita migliaia di newsgroup, in varie lingue e dai più disparati temi (cucina, informatica, astronomia, matematica, politica, viaggi, ecc...).
OFF TOPIC. Fuori tema. Lo sono tutti gli articoli che trattano argomenti non propri del newsgroup al quale sono stati inviati.
POSTARE. Orrendo termine, a mio avviso. E' la maldestra italianizzazione del verbo inglese "to post" (impostare, inviare per posta). Personalmente, preferisco utilizzare l' italianissimo verbo "inviare".
REPLY MESSAGE. Messaggio di risposta privato. Viene inviato, tramite posta elettronica, direttamente all' autore dell' articolo al quale si vuole rispondere. Dal verbo inglese "to reply" (rispondere, replicare).
SIGNATURE. Firma. Sono linee (personalizzabili) aggiunte in automatico da SLRN alla fine di un articolo. Possono contenere frasi spiritose, saluti o tutto ciò che la vostra fantasia vi suggerisce. E' buona norma non superare le quattro linee.
THREAD. Letteralmente, filo. Quando inviate un articolo ad un newsgroup può capitare che una o più persone vi rispondano nel newsgroup stesso. Il vostro articolo iniziale, più tutti gli altri che si sono ad esso aggiunti, costituiscono quello che si chiama thread.
Vi capiterà , nella lettura degli articoli presenti in un newsgroup, di imbattervi in misteriose "sigle". Ecco un elenco dei principali acronimi utilizzati da molti frequentatori dei newsgroup:
AFAIK: As Far As I Know = per quanto io sappia
BTW: By The Way = incidentalmente, tra parentesi
FUD: Fear, Uncertainty, and Disinformation = timore, incertezza e
disinformazione
IMNSHO: In My Not So Humble Opinion = a mio non così modesto avviso
IMHO: In My Humble Opinion = a mio modesto avviso
IMVHO: In My Very Humble Opinion = a mio modestissimo avviso
ROTFL: Rolling On The Floor Laughing = rotolando sul pavimento dal
ridere
RTFM: Read The Fucked Manual = leggiti il fottuto manuale
Per una lista più dettagliata (in inglese):
http://homepages.ihug.co.nz/~tajwileb/dictionary.html
L' autore dei programmi SLRN e SLRNPULL è:
John E. Davis,
davis@space.mit.edu
URL:
http://space.mit.edu/~davis
L' ultima versione del programma SLRN è disponibile, tramite
anonymous ftp, presso:
ftp://space.mit.edu/pub/davis/slrn/
oppure, presso i seguenti mirror:
ftp://ftp.uni-stuttgart.de:/pub/unix/misc/slang/
ftp://ftp.fu-berlin.de/pub/unix/news/slrn/
ftp://ftp.ntua.gr/pub/lang/slang/
I migliori risultati si ottengono stampando la versione PostScript. Scaricate da internet la versione SGML dell' HOWTO:
http://web.tiscalinet.it/airaghi/news2.2.sgml.gz
Assicuratevi che sul vostro sistema Linux sia installato il pacchetto sgml-tools:
$ rpm -q sgml-tools
Se l' output di questo comando è "package sgml-tools is not installed" allora inserite il CD della distribuzione RedHat 6.2 e date i seguenti comandi:
# mount /mnt/cdrom
# cd /mnt/cdrom/RedHat/RPMS
# rpm -ivh sgml-tools-1.0.9-2.i386.rpm
Per ottenere la versione PostScript date i seguenti comandi:
$ gunzip news2.2.sgml.gz
$ sgml2latex -l it -c latin -o ps news2.2.sgml
otterrete così il file news2.2.ps