========================================================================
Il  manuale  di  Xnews  di  Luu Tran  è stato tradotto a cura di Massimo
Cerro  che  ha  cercato  di  renderne  la traduzione quanto più accurata
possibile.  I  due  autori non sono legati da nessun rapporto economico,
ma hanno collaborato limitatamente alla stesura di questa traduzione per
la  quale, considerandone lo spirito volontaristico, nessuno dei due può
essere considerato responsabile per errori, omissioni o imprecisioni.

Per   segnalazioni  e  consigli  esclusivamente  rivolti  al  lavoro  di
traduzione,  puoi contattare Massimo Cerro scrivendo a maxbyte@iname.com

Tutti i marchi e prodotti citati, 
appartengono ai rispettivi proprietari.
========================================================================

XNEWS

Guarda, ti sto buttando avanti come un newbie in mezzo ai lupi. RTFM!

Copyright © Luu Tran 1998-2001. Tutti i diritti sono riservati.
http://xnews.3dnews.net

Nota: changes.txt contiene le modifiche più recenti ed è più aggiornato rispetto al manuale. Leggi anche quello, vi troverai un sacco di materiale interessante.

XNEWS è freeware. Può essere liberamente distribuito fornendo l'indicazione del copyright senza modificare il contenuto dei file. E' inutile ricordare che non devi pagare nulla. Il suo impiego è a tuo rischio, ecc. ecc. ;-)

Ora che ho rilasciato Xnews in Rete, sto ricevendo una montagna di e-mail. Così, se hai dubbi o problemi, per favore:

  1. Leggi questo manuale.
  2. Rileggilo.
  3. Cerca di arrangiarti.
  4. Prova ancora con maggiore impegno.
  5. Se sei ancora a terra, invia il quesito al gruppo di discussione news:news.software.readers. Se non hai accesso a un news server, o se non stai usando un newsreader, puoi provare a leggerlo tramite Dejanews.

Nota: a causa di spiacevoli esperienze, con dispiacere ho deciso di non rispondere più alle domande via e-mail. Benché la maggior parte delle persone sia educata, il rispondere per e-mail mi ha esposto ad abusi da parte di alcune persone. Così, per favore, poni i tuoi quesiti su news:news.software.readers. Grazie.

* RTFM! Read The Fucking Manual (leggi il fottuto manuale)

Nota: Tanto per iniziare leggi almeno le prime cinque sezioni. Inoltre, leggi changes.txt per vedere quali sono le novità introdotte.

SOMMARIO

  1. Questo programma fa per me?
  2. Primi passi
  3. Le cose principali che dovresti sapere di Xnews
  4. Come fare per...
  5. Le scorciatoie da tastiera
  6. Risoluzione dei problemi e FAQ (frequently asked questions)
  7. A cosa serve...
  8. Suggerimenti e trucchi nascosti
  9. Filtri, filtri ovunque
  10. Organizzare i gruppi sottoscritti in categorie
  11. Archiviazione di intestazioni e articoli
  12. Cartelle
  13. Xnews.ini: impostazioni globali
  14. Groups.ini: impostazione in base ai gruppi
  15. Plonk file
  16. Score file
  17. Le espressioni regolari (regular expression)
  18. Riconoscimenti

1. Questo programma fa per me?

Considera questo programma un po' come una beta. E' un progetto che curo per hobby dove cerco di apportare frequenti modifiche in modo da migliorarne la stabilità. Non c'è alcun help file, solo questo manuale.

Xnews è un newsreader generico. Benché sia in grado di trattare i binari (abbastanza bene secondo le mie intenzioni), non può essere considerato un grabber o un visualizzatore di immagini. Inoltre, Xnews è un reader on-line. Ha funzioni pseudo off-line come lo 'storage', ma se hai bisogno di un vero supporto per l'off-line, usa Agent, Gravity o altro.

Sono un fan di NewsXpress (NX) così ho liberamente preso a prestito le idee di quel programma. Infatti, gli utenti di NX trovano familiarità con Xnews. Detto questo, Xnews non è NewsXpress. Non ho creato un clone. Ho le mie idee e il mio modo di intendere come le cose debbano essere fatte. Benché Xnews possa apparire somigliante a NX, ha anche alcune caratteristiche che allo stesso tempo il secondo non ha.

Per quanto riguarda questo documento: so che è piuttosto striminzito, ma per favore leggilo. Sono partito dal principio che tu abbia usato altri newsreader e che conosca il funzionamento di base di Usenet, in modo da soprassedere su cose che esulano dall'operato di Xnews.

Ho scritto Xnews per mio uso e consumo. Il programma riflette fortemente le mie preferenze, il mio ambiente e la mia sensibilità. Le linee guida di ricerca per gli end-user vanno nella direzione di questo software, benché esso appartenga a un solo utente. L'interfaccia è un po' complicata e il programma ha quello che il mondo del freeware può dare. Se pensi che Microsoft rappresenti l'apoteosi del design nel software, questo programma non fa probabilmente per te. In caso contrario, potresti imparare ad amarlo -- oppure no. E' gratis.

Questo significa, se c'è qualcosa che vorresti vedere aggiunto o cambiato, non indugiare a chiedere. Apporterò le modifiche se i cambiamenti risulteranno tanto graditi al maggior numero di persone possibile, quanto di minore affanno per me.

E vai.

indietro


2. Primi passi

Se stai usando Windows 95 e non hai installato Internet Explorer, potresti aver bisogno del nuovo Microsoft comctl32.dll. (Se apri Xnews e non vedi alcuna icona, oppure l'elenco è vuoto nonostante il programma sembra scaricare dei dati, allora è anche probabile che tu debba aggiorarti con la nuova dll.)

Non c'è alcun programma di installazione. Basta decomprimere il file .zip in una directory e lanciare Xnews.exe. Se stai facendo un aggiornamento, decomprimi sovrascrivendo il tutto.

La prima volta che apri Xnews, ti apparirà una finestra di dialogo per il Setup. Inserisci il tuo nome, ecc.. In questa guida mi limito a descrivere solo i passi che potrebbero risultare non familiari.

Public Email
Questa è l'email che vorrai mettere nel campo "From:" delle intestazioni dei tuoi articoli Usenet. Email, invece, è quella che vuoi usare nelle repliche per via privata.
Perché usare indirizzi e-mail separati per Usenet e la posta elettronica? Lo faccio per aiutare l'utente a evitare lo spam.

IDToken
Questa è una stringa che Xnews inserisce nel Message-ID al fine di tracciare i tuoi post e avvisarti nel caso replicassi a un tuo articolo. Puoi usare ogni stringa di lettere e numeri. Personalmente uso la mia e-mail senza la chiocciolina @. L'idea è di usare una stringa che probabilmente nessun altro usa.

Una volta che hai fatto ciò, clicca su OK. Xnews ti chiederà di creare un 'server profile' (Xnews è in grado di trattare server multipli). Inserisci il nome del tuo server, ad esempio, news.mindspring.com. Dopo inserisci un alias o titolo per il server, ad esempio, Mindspring. L'alias è ciò che poi apparirà nel menù.

E' tutto. Ora dovresti dare 'yes' quando ti chiederà se vuoi scaricare l'elenco dei newsgroup disponibili. Buon divertimento.

indietro


3. Le cose principali che dovresti sapere di Xnews.

Primo, un po' di terminologia: quando parlo di 'groups window', intendo la finestra che elenca tutti i gruppi disponibili in un server. 'article window' si riferisce alla finestra che elenca gli articoli di un gruppo e che, inoltre, mostra l'articolo selezionato.

groups window

articles window

In generale

indietro


4. Come fare per...

Q: ...scaricare le ultime n intestazioni da un newsgroup.

Re: invece di 'invio' (return) per aprire il gruppo, premi 'Ctrl+invio'. In questo modo si aprirà una finestra di dialogo che permette di selezionare quante intestazioni (headers) vuoi scaricare. Questo è molto utile quando vuoi estrarre un campione di articoli da un gruppo molto affollato. Quando invece sei posizionato nell'elenco degli articoli, puoi aprire questa finestra di dialogo attraverso 'Article | Refresh Headers Special' (Ctrl+F5). Per esempio: premi Ctrl+Invio aprendo un gruppo e specifica 100 intestazioni da scaricare. Xnews scaricherà le 100 intestazioni più recenti. Una volta viste le intestazioni, dall'elenco degli articoli, potresti decidere di leggere un articolo più vecchio. In questo caso userai Ctrl+F5, poi sposterai la barra orizzontale all'indietro nel tempo (a sinistra) in modo caricare quante intestazioni ti interessano oppure la porterai a fondo corsa in modo da richiedere tutto.

Q: ...decifrare/salvare/spostare diversi articoli in una volta?

Re: Xnews usa un sistema di accodamento (queue). Per mettere un articolo nel 'queue', usa la barra spaziatrice. Con essa puoi rimuovere lo stesso articolo dal queue. Quando accodi un articolo, leggerai nella colonna Q un numero che indica l'ordine di accodamento. Ora, seleziona 'Article | Decode/Save as...' oppure 'Transfer | (folder)'. Si può anche accodare o liberare un intero thread in un solo colpo.

Q: ...decifrare articoli binari (multipart binaries)?

Re: In modo predefinito, Xnews organizza i thread per divisione in parti nei gruppi che hanno la parola 'binaries' nel nome (molto meglio di quanto fa NewsXpress). Questa operazione si chiama 'multipart threading' e comporta l'assemblaggio di tutte le parti di un file all'interno di un thread. Se il file è completo, si vedrà un'icona a cubo di quattro blocchi vicino ad esso; se al file mancano una o più parti, mancherà un blocco al cubo dell'icona. Anche guardando la colonna 'Lines', si può dire esattamete da quante parti è composto il file e quante parti sono presenti.

Per accodare un file binario ripartito in più parti (multipart binary), seleziona il thread (con l'icona a forma di cubo) e premi la barra spaziatrice. Xnews segnerà tutte le singole parti al posto tuo. A questo punto usa Article | decode (F4).

Attenzione: con alcuni tipi di file, è possibile campionare il file in questo modo: espandi il thread, poi individua alcune parti da accodare, ad esempio 1/10, 4/10, 8/10. Devi almeno accodare la prima parte. Questo funziona bene per i file mp3 ma ovviamente non per i file zip dato che risulterebbero corrotti e illeggibili. (Temo che il 'campionamento' non funzioni per file codificati in MIME).

Alcune parole sullo 'smart decoding'

Partendo dalla versione Y2K-SE, Xnews è in grado di recuperare un 'multipart threading' dall'ultima parte decifrata con esito positivo (altrimenti avrebbe dovuto rifare tutto dall'inizio). Xnews fa questo salvando alcune informazioni sull'avanzamento della decifratura in file *.ini in una cartella temporanea (temp). Se l'operazione s'interrompesse mentre stai decifrando un file multipart, vedrai il nome del file modificarsi in:

filename__error_part_X.ext

Non cancellare o rinominare questo file. Vedrai anche alcuni file *.ini nella cartella temporanea (temp). Non cancellare nemmeno quest'ultimi. Ricomicia e accoda il file che cercavi di decifrare partendo dalla parte X. Per esempio, se il file multipart è composto da 20 parti e X equivale a 14, dovresti accodare le parti da 14 a 20 comprese. Clicca su 'Decode' e Xnews dovrebbe ricominciare laddove aveva terminato. (In realtà non dovrebbe esserci bisogno di accodare le parti mancanti; puoi accodare l'intero come si fa normalmente, mentre Xnews dovrebbe calcolarselo in proprio, ma il primo metodo è più sicuro.)

Se questa caratteristica dovesse darti delle noie, la puoi disabilitare in Xnews.ini [Misc] impostando UseSmartDecode=0

Q: ...cancellare un articolo?

Re: Per cancellare un articolo, devi prima di tutto trovarlo e scaricarlo. Come sempre, puoi fare questo aprendo il gruppo o usando 'XPAT search' (vedi oltre).

Q: ...ricercare per XPAT?

Re: La maggior parte dei server ha funzioni chiamate XPAT search, le quali realizzano ricerche server-side per articoli (in altre parole, ricercano cosa c'è nel server). Per fare una ricerca, seleziona il campo o intestazione a cui sei interessato. Nella maggior parte dei casi, probabilmente vorrai cercare per titolo (subject) o autore (from). La stringa di ricerca è una 'Unix wildmat', che significa che hai bisogno di cingere la stringa con 'wild cards' (asterischi) a meno che tu non voglia fare una ricerca per stringa esatta. Per esempio, se tu scrivi help, non leggerai altro che articoli con subject uguale a help. L'opposto se scrivi *help*. D'altra parte, non c'è alcun bisogno di scrivere *[Hh][Ee][Ll][Pp]* (case sensitive search) perché Xnews lo fa già in automatico per te (grazie provvidenza). Per rimuovere il filtro della XPAT search è sufficiente usare 'Filter | Remove all filters' (Ctrl+F9) oppure cliccare con il mouse sulla 's' che appare a sinistra, nella barra in fondo alla finestra. Per rimuovere il punteggio (score) assegnato attraverso la XPAT search, usare 'Special | Rescore this window' (Ctrl+R).

Q: ...aggiungere intestazioni personalizzate al messaggio?

Re: Seleziona Compose dal 'Setup dialog'. Inserisci l'intestazione personale desiderata in una nuova riga. Se vuoi un'intestazione che sia 'on' predefinita, precedila con un asterisco. Puoi inserire un'intestazione vuota e passare dei valori all'atto della composizione del messaggio. Un esempio:

*X-No-Bananas: yes
Approved: luutran@geocities.com
*Keyword:

La prima intestazione sarà predefinita 'on' (potrai disattivarla all'atto della composizione). La seconda, Approved, ha già un valore, ma dovrai attivarla di volta in volta se necessaria. Infatti, puoi attivarla al volo e, al limite, cambiare anche e-mail address. La terza intestazione è predefinita 'on', ma non ha alcun valore impostato. All'atto della composizione, potrai inserire qualcosa o lasciarla in bianco. Se la lasci in bianco, Xnews la ignora come se fosse 'off' (perciò, è una buona idea impostare sempre 'on' le intestazioni vuote.) Nota che anche con un'intestazione vuota, hai bisogno di mettere i due punti (:).

Troverai queste intestazioni personalizzate nella rubrica 'Custom' dell'editor window. Puoi anche aggiungere un'intestazione volta per volta usando la scheda Manual headers.

Q: ...usare ROT-13?

Re: ROT-13 è un semplice schema per cifrare il testo in modo che esso non sia immediatamente leggibile. Sposta la posizione di ogni lettera di 13 caratteri nella numerazione alfabetica, così A - M diventa N - Z e viceversa. ROT-13 viene usato per cifrare articoli o parti di essi che possono apparire offensivi o che contengono elementi per svelare una sorpresa (la fine di un film, frasi mordaci, ecc). L'idea è che il lettore debba decifrare l'articolo o parte di esso prima di leggerlo, in modo che non lo possa leggere accidentalmente. Alcune persone cifrano il loro e-mail address al fine di aggirare lo spam.

Ad ogni modo, per decifrare un articolo ROT-13, basta selezionare 'View|ROT-13'. Nell'editor window, puoi (de)cifrare a) il testo dell'articolo; b) l'indirizzo nel campo To: e c) il tuo e-mail address pubblico. Prima devi posizionare il cursore nella casella che vuoi (de)cifrare, poi clicca su ROT-13.

In tutti i casi, puoi anche applicare ROT-13 su una porzione del testo selezionandola con mouse o tastiera.

Q: ...nascondere una colonna nell'elenco?

Re: Non si può, ma puoi portare la sua larghezza a zero. Più o meno è la stessa cosa.

Q: ...salvare un allegato (attachment)?

Re: Xnews, in modo predefinito, non salva gli allegati degli articoli quando li aprite/leggete. Puoi modificare questa caratteristica nella rubrica Files del Setup dialog, spuntando [x] 'automatically save all attachments'. Puoi anche specificare quale tipo di file vuoi che venga automaticamente salvato. Per salvare manualmente un allegato, clicca sull'icona 'attachment' (assomiglia a una siringa), e seleziona l'allegato dall'elenco (potrebbe essere più d'uno). Se l'allegato è già stato salvato, si aprirà automaticamente.

Q: ...spedire allegati (attachments) / binari (binaries)?

Re: Per allegare un file, apri la rubrica Attachments e clicca su Add... Potrai selezionare più file in una sola volta. Alternativamente, puoi trascinare e rilasciare (drag and drop) i files dall'Explorer di Windows.

Opzioni:

  1. post attachments together under one subject: invia ogni allegato in un grande articolo che può essere o meno 'multipart'. Se il titolo del tuo articolo è 'My cats (with pictures)' e tu alleghi due file, in Xnews apparirà così:

    My cat (with pictures) - 2 attachments (~/4)
    
    * 2 attachments * non sarà visualizzato solo nel caso tu abbia deselezionato 'Show file count in subject'.

    Questa opzione è adatta per inviare meno di tre piccoli allegati in un gruppo di discussione (assumendo che questa pratica sia approvata dai frequentatori). Il tuo testo (editor) sarà fuso insieme all'articolo. Affiancare MIME a questa opzione potrebbe essere una buona soluzione. Non usare questa opzione quando invii grandi files o una serie di numerosi piccoli file.

  2. post attachments separately: ogni allegato come il tuo testo è inviato in un articolo separato (possibilmente multipart). Questo è il modo tipico in cui vengono inviati gli articoli nei gruppi binari. Il tuo testo dovrebbe corrispondere a una breve descrizione dei file che seguiranno. Per esempio, il tuo articolo intitolato 'Some pictures of my cats', con questa opzione produrrà:

    Some pictures of my cats - File 0 of 2
    Some pictures of my cats - File 1 of 2 - socks.jpg (~/2)
    Some pictures of my cats - File 2 of 2 - socks2.jpg (~/4)
    
    Se deselezioni 'Show file count in subject' non sarà visualizzato * File X of Y. *

    File 0 conterrà il tuo messaggio testuale (descrizione). Se lasci il corpo dell'articolo vuoto (cosa permessa), non ci sarà il file 0.

  3. post attachments separately; text in 0 part of first file: come sopra, ad eccezione del testo che non diventa parte 0 come primo allegato. In Xnews, same as above, except the text part becomes the 0 part of the first attachment. In Xnews, sarà mostrato come qui sotto con il primo file espanso.

    Some pictures of my cats - File 1 of 2 - socks.jpg (~/2)
      Some pictures of my cats - File 1 of 2 - socks.jpg (0/2)
      Some pictures of my cats - File 1 of 2 - socks.jpg (1/2)
      Some pictures of my cats - File 1 of 2 - socks.jpg (2/2)
    Some pictures of my cats - File 2 of 2 - socks2.jpg (~/4)
    
  4. post attachments separately; text in 0 part of each file: come sopra, ad eccezione del testo che diventa parte 0 in ogni allegato. In Xnews, sarà mostrato come qui sotto con tutti i file espansi.

    Some pictures of my cats - File 1 of 2 - socks.jpg (~/2)
      Some pictures of my cats - File 1 of 2 - socks.jpg (0/2)
      Some pictures of my cats - File 1 of 2 - socks.jpg (1/2)
      Some pictures of my cats - File 1 of 2 - socks.jpg (2/2)
    Some pictures of my cats - File 2 of 2 - socks2.jpg (~/4)
      Some pictures of my cats - File 1 of 2 - socks2.jpg (0/4)
      Some pictures of my cats - File 1 of 2 - socks2.jpg (1/4)
      Some pictures of my cats - File 1 of 2 - socks2.jpg (2/4)
      Some pictures of my cats - File 1 of 2 - socks2.jpg (3/4)
      Some pictures of my cats - File 1 of 2 - socks2.jpg (4/4)
    

    Ad alcuni piace usare l'opzione 3 o 4. Personalmente preferisco la 2. In ogni caso, evita l'opzione 1 perché inviando file molto grandi potresti andare incontro a qualche discussione (flame).

In generale, evita di usare il MIME dato che alcuni newsreaders non sono in grado di interpretarlo (IIRC, NewsXpress non sanno decifrare articoli in multipart MIME). Come probabilmente saprai, su Usenet, gli articoli che superano una determinata dimensione vengono rifiutati dai server, così articoli molto grandi devono essere frammentati in parti più piccole. Xnews taglia in modo predefinito gli articoli ogni 8000 righe.

Osserva anche regole e convenzioni del gruppo al quale sei interessato. Innanzitutto, assicurati che i binari siano permessi. In seguito, accertati delle regole predominanti (ad esempio dimensione massima dei post, possibilità di usare il MIME, e così via). Soprattutto, fai delle prove in un gruppo di prova dove sono ammessi i binari, per essere sicuro che otterrai il risultato voluto.

Ancora due cose:
1) le opzioni di cui sopra sono da applicare solo ai post su Usenet. Nella posta privata, io preferisco inviare in MIME tutti gli allegati in un solo articolo.
2) quando invii una serie di file, è altamente raccomandabile salvare nell'outbox e inviarli da la. In questo modo, se qualcosa andasse storto oppure se dovessi bloccare l'invio degli articoli, puoi selezionare solo i file da rinviare.

Q: ...tagliare/copiare/incollare testo quando non c'è alcun Edit menu?

Re: Usa la tastiera. Shift+Canc=cut, Ctrl+Ins=copy, Shift+Ins=paste.

Q: ...spedire in crosspost a più gruppi?

Re: Puoi aggiungerne il nome in Newsgroups, separandoli da una virgola. Oppure, puoi fare una selezione multipla nel 'groups window' premendo poi Ctrl+P. Non sai come fare una selezione multipla? Basta tener pigiato il tasto Ctrl e clic, clic, clic.

indietro


5. Le scorciatoie nascoste da tastiera / trucchi

La maggior parte delle scorciatoie sono mostrate sia nel menù, sia elencate nel 'keyboard mapping dialogs' (Alt+K). Queste scorciatoie non sono elencate.

Nella finestra degli articoli:

Space (dis)accoda articoli/thread (place in queue)
Shift+Space (dis)accoda articoli/thread, ma li mette in testa alla coda
Ctrl+Space Accoda tutto ciò in vista (attenzione ai multipart binaries)
Ctrl+Shift+Space Toglie gli articoli dalla coda
Ctrl+Up/Down Ridimensiona la divisione (split) tra articoli e viewer

Nel viewer:

Space scende di pagina
Shift+Space salta al prossimo paragrafo non quotato
Backspace sale di pagina
Invio passa all'elenco degli articoli
Num1..Num9
(tast. num.)
se sei in 'split screen', ti sposta nell'elenco degli articoli, lasciando il cursore nel viewer

Nel groups window:

Ins aggiunge manualmente un gruppo
Del cancella permanentemente i gruppi selezionati
F4 passa tra gruppi sottoscritti e tutti gruppi (all)

In groups window, elenco degli articoli e viewer

Ctrl+Del cancella ogni cosa memorizzata nelle caselle di riepilogo (combo box)

Queste scorciatoie sono nel 'keyboard map' (alt+K).

Nell'elenco degli articoli e nel viewer

Shift+ù / ù salta al precedente / successivo articolo non letto
Shift+. . salta all'articolo precedente / successivo
, salta al primo articolo in coda
è / à salta al precedente / successivo thread
  salta al succ. art. con punteggio (score) >0
ò salta al nuovo articolo dall'ultima archiviazione di intestazioni. Leggi la sezione 'archiviazione'
Alt+Left torna indietro nell'history
Alt+Right vai avanti nell'history

Alcune parole sul rimappamento della tastiera (alt+K).

indietro


6. Risoluzione dei problemi e FAQ (frequently asked question)

Q: Quando cerco di inviare qualcosa, ottengo l'errore 'bad message ID' dal server.

A: Prova a usare un più breve IDToken (Setup | Identity). Se non funziona, elimina l'IDToken.

Q: Perché la funzione 'get parent' (trova il genitore), quando è operativa, talvolta inserisce l'articolo trovato nell'elenco e talvolta no?

A: Xnews fa affidamento sul numero di messaggi per introdurre gli articoli nell'elenco. Se non mostra l'articolo genitore, significa che il server non restituisce quel messaggio (il server assegna un numero a ogni articolo presente in un gruppo). Non ne so abbastanza sul funzionamento dei news server da spiegarti il perché, ma è proprio così.

Q: Cosa accade quando chiudo l''articles window'? Talvolta il programma aggiorna il conto degli articoli e talvolta no.

A: Xnews considera l'aggiornamento automatico del totale degli articoli con bassa priorità, così se non c'è alcuna connessione disponibile, esso non opera. In ogni caso, puoi forzarlo, premendo F5.

Q: Quando parte un download, la didascalia nella finestra mostra il tempo passato e approssimativamente il tempo rimanente. Tuttavia questo va via dopo pochi secondi. Come posso richiamarlo?

A: Basta cliccare sulla 'progress bar'.

Q: Perché il 'crosspost killing' sembra non funzionare?

A: Perché la cancellazione di articoli crosspostati (crosspost killing) funzioni, devono essere soddisfatte le seguenti condizioni:

  1. Il poster deve avere realmente crosspostato e non semplicemente spedito articoli identici in ogni gruppo. Nel secondo caso, anche presumendo che si tratti di articoli esattamente identici, non esiste nessun modo efficiente per Xnews di fare la stessa cosa.
  2. Xnews si affida all'intestazione 'Xref' per fare 'crosspost killing'. Xref è un'intestazione specifica che dice a) in quale/i gruppo/i l'articolo è stato spedito e b) il numero assegnato all'articolo dal server in ciascuno di questi gruppi. Xnews richiede che il tuo news server sia configurato in modo da trasportare questa intestazione nel suo 'news overview' (NOV) database e che il news server ritorni questa informazione in risposta a un comando 'XOVER'. Non tutti i server fanno questo.
  3. Per una maggiore velocità, Xnews controlla solo i gruppi sottoscritti quando filtra i crossposts. Questo lo rende più veloce di un semplice 'Mark all read' e aiuta anche a tenere sotto controllo la dimensione del newsrc file.

Q: Uso una tastiera straniera (non inglese), ma continuo ad incorrere nella tastiera Inglese nell'uso dell'editor window

A: Apri il Pannello di controllo -> tastiera. Seleziona il linguaggio. Ora disinstalla tutte le tastiere ad esclusione della tua.

indietro


7. A cosa serve...

Q: Mark keep/unkeep? (To keep: predicato verbale tenere)

A: Se non hai attivato l'archiviazione (storage), quando fai un 'catchup', la volta dopo non vedrai le intestazioni che avevi già scaricato. Se invece segni un articolo o un intero thread come 'kept', il programma lo scaricherà nuovamente la volta successiva, nonostante l'impiego di un 'catchup'. Quando segni con 'keep' qualcosa, ad esso automaticamente viene assegnato un alto punteggio (high score) così da essere caricato la volta successiva.

Un esempio dove può essere applicabile è quando hai un 'multipart binary' con alcune parti mancanti. Se fai un catchup, la volta successiva potresti ottenere dal server come nuovi articoli le parti mancanti, ma le parti che hai già non saranno perse e non dovranno essere caricate nuovamente. In questo caso, vuoi tenere quelle parti che hai già con la speranza di caricare il resto la volta successiva.

Se hai l'archiviazione attivata (storage), gli articoli sotto chiave (keep) non saranno cancellati se non nel momento in cui scompariranno dal server. In altri termini, essi sono protetti contro la cancellazione e contro l'eliminazione locale dovuta alla scadenza ('expiry' che hai impostato usanto lo 'Storage Options dialog' o 'F7'). Per cancellare un articolo devi prima togliere la chiave (unkeep)

Puoi impostare il punteggio da assegnare automaticamente agli articoli sotto chiave (keep) usanto Setup | Misc.. Se imposti questo a zero, nessun punteggio sarà assegnato agli articoli sotto chiave.

Q: Mark High score/0 score? (High score: alto punteggio)

A: Questo equivale a segnare qualcosa come importante o non importante. Esso semplicemente assegna un punteggio di 9999 o zero agli articoli o thread selezionati. Puoi cliccare con il tasto destro del mouse sulla colonna 'Score' (punteggio) (o selezionare View | Filter Scores) e selezionare un filtro in base al punteggio al fine di vedere solo gli articoli più interessanti.

Q: Che cosa è il 'catchup'?

A: Tradizionalmente, 'catchup' nei newsreader significa aggiornare il conto degli articoli letti all'ultimo articolo caricato. Se guardi il file .newsrc, vedrai un gruppo di numeri come

1-50,55,65-80.
Ad ogni articolo è assegnato un numero dal server, e questi numeri nel newsrc indicano quali articoli hai letto. Quando applichi il 'catchup', il programma lo imposta a

1-<highest-numbered article retrieved>
ovvero al più alto numero degli articoli caricati.

'Catchup' in altre parole significa 'Ok, Ho letto tutto. Non mostrarmi questi articoli la prossima volta'. Nota che puoi anche non avere letto tutti gli articoli, ma potresti comportarti come se lo avessi fatto.

Nell''articles window', ci sono 3 tipi di catchup (tutti chiudono la finestra):

Finalmente! Sembra abbastanza confuso, vero?

Nel 'groups window', ci sono comandi di 'catchup' e di 'clear keep' separati. Da notare che per fare un catchup, devi almeno aver aggiornato il conto degli articoli. Il comando 'Clear read and keep' invece, svuota completamente il newsrc per i gruppi selezionati, permettendoti così di ricominciare da capo.

Q: Reformat (editor window)?

Spesso, quando replichi a un articolo e inserisci il carattere di citazione (quote) > davanti a ogni riga, queste diventano troppo lunghe e vengono ad essere sovrapposte dall'editor (wrap), mandandole a capo. Per esempio, ti ritroverai in una situazione analoga:

Prima del quote:

>this is a very very very very very long long line,
>isn't it?

Dopo il quote:

>>this is a very very very very very long long
line,
>>isn't it?

Hai due possibilità: 1) allargare la finestra in modo che il testo sia convogliato in una sola riga; 2) cliccare su Reformat. Nel secondo caso, Xnews riformatterà il testo in questo modo:

>>this is a very very very very very long long
>>line, isn't it?

Molto meglio, non credi?

Quando cliccherà su 'Save' o 'Send', Xnews cercherà di comprendere se è presente del testo mal formattato e ti chiederà se vuoi che intervenga, riformattandolo. Se dai 'yes', lo sistemerà e ti farà tornare nell'editor. Dovresti controllare il testo e assicurarti che ogni cosa sia a posto.

Inoltre, puoi riformattare anche solo una porzione di testo selezionandola prima di cliccare su 'Reformat'.

Ho deciso di lasciare la cosa nelle mani dell'utente piuttosto che automatizzarla. Ti ho dato i mezzi, ma ora sta a te rendere migliore Usenet (inoltre hai la responsabilità di preservarmi dalle accuse di aver realizzato un software scadente).

Q: le icone nell'elenco degli articoli.

pallino verde = articolo letto o segnato come tale.
bordo verde = articolo sotto chiave (kept).
nota bianca con righe  = icona predefinita per gli articoli
nota bianca senza righe = (solo con l'archiviazione o 'storage')
                          l'articolo è vecchio, ovvero è stato
                          archiviato. Quelle con le righe sono
                          intestazioni nuove caricate l'ultima volta che
                          hai letto il gruppo.
nota verde = corpo del messaggio presente nella cache. Se lo rileggi,
             l'articolo non sarà caricato dal disco (molto veloce)
!           = l'articolo ha uno score pari a 9999+
cubo a tre facce = binario incompleto (manca almeno una parte)
cubo a quattro facce = binario completo (sono presenti tutte le parti) 
punto interrogativo rosso = articolo non pił presente sul server

indietro


8. Suggerimenti e trucchi nascosti

indietro


Filtri, filtri ovunque

Per prima cosa vorrei evitare qualsiasi potenziale confusione. In molti news (email) reader, i filtri sono impiegati per eliminare articoli indesiderati (es: spam) invece di marcare gli articoli desiderabili come importanti. In Xnews, fai questo usando lo 'score file'. Xnews usa i filtri per nascondere gradualmente gli articoli visibili. Per esempio, usa il filtro 'Show complete multiparts only' per vedere i soli binari. Gli altri articoli vengono temporaneamente ignorati in modo da ridurre l'elenco da visualizzare. Basta rimuovere il filtro per tornare all'antico.

Hai già visto il box nel groups e nell'articles window, dove puoi battere una stringa per mostrare solo i gruppi o gli articoli il cui nome o titolo contiene la stringa. Nell''articles window', il box in fondo e assomiglia a una casella di riepilogo. (Lo chiamo B filter.) Puoi anche usare un'espressione (regex o regular expression). Inoltre, se vuoi filtrare per autore (from), invece che per titolo (subject), clicca con il tasto destro right alla destra del box (oppure Ctrl+F). La lettera dovrebbe cambiare da S (subject) a F (from). Quando sei in una cartella, puoi anche passare a G (group) e vedere solo gli articoli di un certo gruppo.

Ci sono alcune sottigliezze che dovrei segnalare. Quando inserisci un'espressione, vedrai immediatamente il risultato. L'elenco non è ancora scalettato (thread). Per vedere le relazioni tra gli articoli (thread), premi invio o usa la 'T' vicino al box.
Quest'operazione bloccherà anche il filtro corrente. Se selezioni un altro filtro (vedi sotto), o scrivi un'altra espressione (regex), il filtro sarà applicato sull'elenco corrente, ovvero ciò che rimane nell'elenco. Per rimuovere il filtro corrente, seleziona 'Filter | Undo last filter' o, prima di avere inserito qualcos'altro, usando la barra spaziatrice o il Canc (Del).

Puoi anche applicare direttamente alcuni filtri predefiniti che sono:

Per rimuovere il filtro e vedere tutti gli articoli, seleziona 'Filter | Remove All Filters' oppure clicca sulla destra del box in fondo alla finestra (lettera S/F/G). Puoi anche rimuovere solo l'ultimo filtro applicato o invertire il filtro.

Aspetta, c'è ancora qualcosa da dire.

Nell'elenco degli articoli, clicca con il tasto destro sulla colonna 'score' per ricavare un menù che permette di filtrare in base a punteggio (score). Le scelte sono:

C'è anche un 'filter dialog' (F9) che permette di impostare filtri basati su criteri più complessi. Prima di tutto, scegli sopra quale o quali campi deve essere applicato il filtro, poi inserisci la condizione che preferisci.

Nota che tutti i filtri sono cumulativi, ovvero sono applicati su ciò che appare in elenco, che potrebbe essere il risultato di filtri precedenti e non corrispondere all'insieme degli articoli disponibili. L'eccezione la fa il 'filter dialog', dove spuntando 'Add to existing' puoi scegliere se applicare il filtro sopra quello corrente. D'altro canto, se vuoi applicare il filtro all'elenco originale, devi prima rimuovere il filtro corrente togliendo la spunta.

Alla fine, l'ultimo filtro che hai applicato avrà effetto sugli articoli nuovi quando farai un refresh delle intestazioni. Per esempio, se scrivi B (hide incomplete binaries), poi F5 (refresh), dopo le intestazioni saranno caricate e ordinate nei 'thread', ma i binari incompleti (cubo a tre facce) saranno tenuti fuori e non li vedrai fino a quando rimuoverai il filtro.

Qui c'è un esempio di come puoi usare i filtri: dopo che hai aperto alt.tv.x-files, assumendo che tu abbia archiviato le intestazioni, pigia N. Questo mostrerà solo le nuove intestazioni. Poi nel B box scrivi 'dream.*land' (risulteranno 'dream land' o 'dreamland') e dai invio per vedere gli articoli dell'episodio di X-files chiamato 'Dreamland'. Poi scorri attraverso la lista e segna i threads o gli articoli che ti interessano con il tasto 9. Questo porterà il loro punteggio a 9999. Ora clicca sulla colonna 'score' e seleziona >0 o >=9999 per vedere gli articoli che hai appena segnato e ogni altro articolo automaticamente classificato dal tuo 'score file'.

indietro


10. Organizzare i gruppi sottoscritti in categorie

Puoi organizzare i tuoi gruppi sottoscritti in categorie, come 'binari', 'computer', 'cinema e TV', ecc. (Spiacente non esistono sottocategorie.) Clicca sull'icona 'New Category' oppure usa Alt+Ins(ert) poi sposta il gruppo su di essa. Una categoria è mostrata con una icona che sembra una cartella. Puoi riordinare le categorie e i gruppi trascinando e rilasciando i vari oggetti.

Alcune cose da osservare:

Fa qualche prova.

Puoi collassare o espandere tutte le categorie premendo -/+ sul tastierino numerico (guarda 'Special | Keyboard Mapping). Puoi anche collassare/espandere una singola cartella o categoria premendo invio o cliccando sull'icona.

Puoi cancellare una cartella con Canc (Del). Cancellare una cartella, rimuoverà una categoria, ma non i gruppi in essa compresi che ne saranno così liberati.

Quando ordini l'elenco dei gruppi sottoscritti, solo le cartelle e i gruppi che non sono dentro le cartelle saranno ordinati. Se vuoi ordinare i gruppi dentro le cartelle, dovrai tenere premuto il tasto 'Ctrl' quando cliccherai sulla colonna.

Le cartelle sottoscritte sono separate dal newsrc e salvate in un file con estensione .Xnewsrc (così newsrc resta compatibile all'indietro). Se clicchi sull'icona di refresh nella toolbar, il programma ricarica l'Xnewsrc file e abbandona ogni cambiamento fatto alle cartelle sottoscritte. Questo è per esempio utile dopo che hai ordinato le cartelle e vuoi ritornare nella condizione in cui eri l'ultima volta che le hai salvate.

indietro


11. Archiviazione di intestazioni e articoli

Come ho già detto, Xnews è un newsreader on-line. Esso memorizza gli articoli in una cache durante la sessione corrente. In questo modo quando vuoi ricaricare un articolo, Xnews lo estrae dalla cache invece di interrogare nuovamente il server. Nella configurazione predefinita, quando chiudi la finestra, la cache viene svuotata.

Se invece hai attivato l'archiviazione (storage), potrai trarne vantaggio nel caso in cui tu sia interessato a chiudere un gruppo impegnativo a metà lettura. Da una parte non vorrai fare un cathcup, dato che non lo hai ancora letto, ma dall'altra non hai nemmeno voglia di caricarti nuovamente un sacco di intestazioni. L'archiviazione (storage) è una cache più permanente.

Posizionato nell'articles window, premi F7. Avrai la possibilità di archiviare solo le intestazioni senza corpo, oppure entrambi. Devi solo specificare un tempo di scadenza in modo da purgare gli articoli dopo n giorni. Se selezioni 'never expire', gli articoli verranno comunque rimossi non appena non saranno più presenti nel server.

Per ragioni di praticità, quando un articolo viene rimosso dall'archiviazione, non viene realmente cancellato, ma solo segnato come tale. In questo modo, la dimensione del file rimane la stessa, ma potrai comunque reclamare lo spazio inutilizzato, pigiando F7 e cliccando sulla funzione 'Compact'.

Nota #1: con l'archiviazione (storage), puoi riconoscere le nuove intestazioni da quelle archiviate grazie alle righe nere sopra la loro icona a forma di nota (le intestazioni archiviate hanno un'icona a forma di nota bianca). Premi ` (backquote) [presumibilmente ò nella tastiera italiana] per saltare al prossimo 'nuovo' articolo non letto. Se l'articolo è stato caricato per intero, l'icona è a forma di nota gialla.

Nota #2: sulla toolbar, c'è un icona che indica le opzioni correnti di archiviazione (storage). Clicca su di essa per cambiare velocemente tali opzioni.

indietro


12. Cartelle (folders)

L'archiviazione 'storage' è solo semi-permanente. Gli articoli saranno comunque purgati quando scadranno sul server o quando saranno più vecchi della data di scadenza. Per un'archiviazione permanente degli articoli, usa le cartelle (folders), aka 'mailbox'.

Per organizzare le cartelle, apri il 'folders window' selezionando 'Window | folders' (o Shift+F12). Una volta creata una cartella, puoi trasferire in essa gli articoli per un'archiviazione permanente. Per te, ho già creato una cartella chiamata 'Archive'.

Come con NewsXpress, puoi definire una cartella predefinita dove dovrebbero essere trasferiti gli articoli quando clicchi sul pulsante 'Transfer to folder Archive' presente nella toolbar. Edita Xnews.ini. Sotto la sezione [Misc], imposta Archive= al nome della cartella che tu, in alternativa, hai scelto.

Trucchi avanzati:

Le cartelle 'queue'

Dalla versione Y2K-SE è presente un nuovo tipo di cartella chiamata 'queue'. Contrariamente alle cartelle normali, una cartella 'queue' archivia solo le intestazioni quando accodate in essa degli articoli. Dopo, quando vorrai leggere o decifrare gli articoli, Xnews li richiederà al server, come se ti trovassi in un newsgroup.

Cosa puoi fare con questa diavoleria? Puoi usarla come un 'queue' globale. Puoi usarla per caricare binari multipart da server differenti. Dato che puoi sostituire il server corrente con quello che vorresti usare per caricare gli articoli nella cartella 'queue', puoi tirare giù le intestazioni da un server per poi caricarne il corpo con uno differente. Se sei uno di quelli con una connessione dall'estero e il server ti sta rallentando, puoi spostare il download in due cartelle 'queue' separate e caricarlo simultaneamente.

Come esiste una cartella predefinita 'archive', esiste anche una cartella predefinita 'queue'. Puoi impostare questa caratteristica in Xnews [Misc]. Se nulla viene specificato, Xnews crea una cartella 'queue' predefinita chiamata _Queue (puoi anche voler nominare le tue cartelle queue con un prefisso _ per distinguerle da quelle di normale archiviazione). Allo stesso modo, come esiste un comando 'Archive', esiste anche il comando contrapposto chiamato 'QArchive', il quale trasferisce articoli (più precisamente, intestazioni) nella cartella 'queue' predefinita.

indietro


13. Xnews.ini: impostazioni globali

La maggioranza delle impostazioni in Xnews.ini può essere cambiata attraverso il 'Setup dialog'. Tuttavia, ce ne sono diverse che sono fuori dal suo controllo perché il loro significato poteva apparire un po' oscuro o (più probabilmente) perché io sono troppo pigro per aggiungerle al 'Setup dialog'. Devi editare Xnews.ini manualmente per modificare le impostazioni che seguiranno qui sotto. Do per implicito che tu sappia come fare.

In breve:

[Display] section:

key:                ColumnLayOut
type:               intero
default:            1
Numero per salvare il layout di colonna. Può essere inserito anche
in groups.ini per avere layout differenti in base al gruppo.

key:                DateFmtDay
type:               Date format
default:            hh:nn
Usato per indicare il tempo alla data odierna

key:                DateFmtWeek
type:               Date format
default:            ddd dd  
Usato per date entro una settimana da oggi

key:                DateFmtYear 
type:               Date format 
default:            mmm dd
Usato per date entro un anno da oggi

key:                DateFmtShort
type:               Date format
default:            dd mmm yyyy
Usato per articoli con date superiori all'anno, %d variabile

key:                DateFmtLong 
type:               Date format
default:            dd mmm yyyy hh:nn:ss
Usato nelle finestre di popup, %D variabile

key:                DrawTree
type:               Boleano
default:            1
Organizza i thread ad albero. Questa opzione è on di default se la
griglia è attivata 

key:                FixFlashing
type:               boolean
default:            1
Serve per prevenire anomalie sullo schermo nello scorrere degli elenchi.
Nel caso avessi dei problemi, porta questo valore a zero.

key:                FixWrapOpt
type:               {-1,0,1}
default:            1
Corregge il testo mal formattato (effetto fiordo) nel viewer del messaggio.
(-1 = manuale: devi ogni volta invocare esplicitamente il comando; 
0 = automatico ma non attivo per default; 1 = automatico e attivo per
default ).

key:                GaugeUpdateDelay
type:               integer
default:            500
Numero di millisecondi che devono trascorrere prima che la 'progress
gauge' sia aggiornata. Impostate un valore più alto se pensate che la
visualizzazione 'gauge' stia rallentando il vostro download.

key:                HideHorzScrollBar
type:               booleano
default:            0
Per nascondere la barra di scroll orizzontale nell''articles viewer,
anche se il testo fosse troppo largo per stare nello schermo. Impostalo
a uno per guadagnare spazio in verticale. Potrai comunque scorrere da
sinistra a destra con la tastiera

key:                HighLightColor 
type:               color system
default:            color
Il colore di sfondo con cui vengono selezionati gli articoli negli
elenchi. Cambialo se e il colore predefinito non fosse sufficientemente
visibile.

key:                HighLightTextColor 
type:               color system 
default:            color 
Come sopra, ma riguarda il colore del testo durante la selezione.

key:                jpeg
type:               boleano
default:            1
Attiva o disattiva la visione in linea delle immagini jpeg.

key:                MaxThreadDepth
type:               intero
default:            20
Massima profondità di indentazione dei thread.

key:                Panel1Width
type:               intero
default:            140
Width in pixel of bottom left panel in articles window

key:                Panel2Width
type:               intero
default:            190
Width in pixel of bottom middle panel in articles window

key:                ShowTabs 
type:               boolean 
default:            1 
Serve per mostrare la 'windows tabs' (la piccola task bar che ti
permette di passare da finestra a finestra).

key:                SkipHeaders 
type:               boolean 
default:            1 
Durante il caricamento del corpo degli articoli, serve a collocare il
cursore nel viewer DOPO le intestazioni presenti, all'inizio del testo.
(Questo non si applica se è attiva la modalità 'Show all headers' (h))

key:                SwitchViewAtThreadEnd 
type:               boolean
default:            0 
Quando sei a schermo pieno, serve a tornare automaticamente all'elenco
quando hai letto l'ultimo articolo di un thread e richiedi l'articolo
successivo. Se è pari a zero, salterà subito al prossimo thread senza
andare all'elenco.

key:                TitleBarLayOut
type:               {-1,0,1,2}
default:            0
Controlla lo stato della barra presente nell'article viewer: 
-1 = nasconde la barra;
 0 = due righe (barre dei tool e dei titoli su righe distinte) quando 
     c'è una X-Face, una riga negli altri casi;
 1 = come 0, eccetto per quando a schermo pieno, usa due righe;
 2 = usa sempre 2 righe. 

key:                TreeColor
type:               colore
default:            grid color
Il colore che viene usato per tracciare l'albero dei thread. 
Specificalo mediante la convenzione =$bbggrr (simile al codice
esadecimale presente per i colori nell'html, con le sole
differenze di $ al posto di # e rosso e blu scambiati di posizione. 

key:                Use24hrClock 
type:               boolean 
default:            0 
Mostra il tempo usando le 24 ore, invece di am/pm.

key:                ViewerLeftMargin 
type:               intero 
default:            3 
Margine sinistro (in pixel) per il viewer. Impostalo a zero senon vuoi
margine.

key:                ViewerWordWrap 
type:               boolean 
default:            0
Serve per formattare (wrap) le righe nel viewer in modo predefinito.

key:                XFace
type:               boleano
default:            1
Attiva o disattiva la visualizzazione in termini grafici dell'header
X-Face

'Date format' accetta questi valori:

d        mostra il giorno come numero senza zero iniziale (1-31)
dd       mostra il giorno come numero con uno zero iniziale (01-31)
ddd      mostra il giorno come abbreviazione (Sun-Sat o equivalente)
dddd     mostra il giorno con il nome completo (Sunday-Saturday o equiv.)
m        mostra il mese come numero senza zero iniziale (1-12)
mm       mostra il mese come numero con uno zero iniziale (01-12)
mmm      mostra il mese come abbreviazione (Jan-Dec o equivalente)
mmmm     mostra il mese con il nome completo (January-December o equiv.)
yy       mostra l'anno a due cifre (00-99)
yyyy     mostra l'anno come cifra completa (0000-9999)
h        mostra l'ora senza zero iniziale (0-23)
hh       mostra l'ora con zero iniziale (00-23)
n        mostra il minuto senza zero iniziale (0-59)
nn       mostra il minuto con zero iniziale (0-59)
s        mostra i secondi senza zero iniziale (0-59)
ss       mostra i secondi con zero iniziale (0-59)
am/pm    usa il formato a 12 ore e mostra 'am' o 'pm'
a/p      usa il formato a 12 ore e mostra 'a' o 'p'
ampm     usa il formato a 12 ore e mostra nel linguaggio locale
         l'equivalente di am/pm
/        mostra il separatore di data (varia in relazione alla località)
:        mostra il separatore del tempo (varia in relazione alla località)
'xx'     caratteri in virgolette singole o doppie sono mostrati come sono

[Misc] section:

key:                 AltServers
type:                stringa
default:             
Elenco di server alternativi (separati da |) da provare quando per
qualsivoglia ragione un dato articolo non può essere trovato sul server
corrente. Può essere impostato in base al gruppo all'interno di groups.ini.

key:                 Archive
type:                stringa
default:             Archive
Nome predefinito della cartella dove sono trasferiti gli articoli quando
usi il pulsante 'archive' nella toolbar. Può essere impostato anche
nel groups.ini (dove ha la precedenza sull'impostazione generale)

key:                 AutoCollapse 
type:                boolean 
default:             0 
Nell'elenco degli articoli, può collassare automaticamente il thread
precedente quando espandi un altro thread (non si applica quando tutti i
thread vengono espansi)

key:                 AutoResume 
type:                boolean 
default:             1 
Serve a provare automaticamente il recupero (resume) nel caso di
un'operazione complessa e automatica (batch) dopo che si è stati
disconnessi. Se stai usando dial-up, questo lavora solo se imposti il
tuo dial per la connessione automatica sulla rete.

key:                 AutoResumeDelay 
type:                intero 
default:             20 {5..1800} 
Numeri di secondi da attendere prima che parta il 'resume' automatico.

key:                 AutoSaveInterval
type:                {5..2000}
default:             0
Salva automaticamente il newsrc dopo lo specifico intervallo espresso in
minuti. Il default zero disabilita l'autosalvataggio.

key:                 BackUpNewsRC 
type:                boolean 
default:             1 
Serve a creare un file di backup (.bak) quando salvi il newsrc.

key:                 CatchUpButton 
type:                {0,1,2,3} 
default:             0 
Definisce quale tipo di catchup assegnare al pulsante di catchup
presente sulla toolbar. (0=Catchup; 1=CatchUp and clear keep; 2=Catchup
and kill xpost; 3=Catchup and purge)

key:                 CompactPercent 
type:                {0..100} 
default:             30 
Percentuale di spazio sprecato che gli articoli cancellati possono
occupare in una cartella prima che Xnews debba automaticamente
comprimere (compact) la cartella in seguito alla chiusura.

key:                 DecodeOpt 
type:                {1,2} 
default:             2 
Quando salvi file binari decifrati: 1 = sovrascrive il file
esistente; 2 = salva sotto un nome differente.

key:                 DejaPage 
type:                stringa
default:             http://groups.google.com/advanced_group_search 
URL da lanciare quando selezioni 'Special | Goto Google News Search'

key:                 DejaQuery 
type:                stringa 
default:             http://groups.google.com/groups?as_umsgid=%m
URL da ricercare attraverso la Google Usenet Search (in precedenza Deja)
per un articolo con un dato Message-ID %m (se non vuoi che questo
avvenga, imposta questo parametro senza alcun contenuto "DejaQuery=")

key:                 ExpiredScoreOpt 
type:                {0,1} 
default:             0 
Cosa fare con i punteggi scaduti (expired scores). 0 = rimozione
automatica automatically; 1 = chiede all'utente.

key:                 HardKill 
type:                boolean 
default:             1 
'hard kill' è attivato per default. Significa che gli articoli con
punteggio <= -9999 non saranno mostrati (Shift+Ctrl+K).

key:                 LaunchAfterDecode
type:                boolean
default:             0
Determina se lanciare i file dopo il decode

key:                 MaxConnPerServer
type:                1..4
default:             4
Numero massimo di connessioni simultanee permesse da un server.

key:                 OnLoaded 
type:                stringa   
default:        
Una virgola separa un elenco di comandi da eseguire dopo il caricamento
delle intestazioni: Se questo elenco include un ! (punto esclamativo), i
comandi saranno eseguiti solo una volta (invece di ogni volta che fai un
refresh delle intestazioni).

key:                 OnOpen 
type:                stringa
default:
Una virgola separa un elenco di comandi da eseguire la prima volta che
apri un 'articles window'

key:                 OpenNextGroup 
type:                boolean 
default:             0 
Serve ad aprire automaticamente il prossimo gruppo dopo che hai fatto un
'catchup' sul gruppo corrente.

key:                 PromptDecodeDir 
type:                boolean 
default:             1 
Serve ad avere il prompt su una directory quando usi 'decode'. 0
significa niente prompt e quindi usa la directory predefinita
(Setup|Files).

key:                 Queue
type:                stringa
default:             _Queue
Nome predefinito della cartella in cui sono trasferiti gli articoli
con il comando 'QArchive'. Può essere scavalcato in Groups.ini.

key:                 QuoteChars
type:                stringa
default:             >:|]»
Elenco dei caratteri che Xnews considera come caratteri per citare.
Opera in congiunzione con QuoteRegex che determina se una specifica
riga sia o meno citata.

key:                 QuoteRegex
type:                stringa
default:             ^\s?\s?\s?[>:|\]»]
Nel viewer, le righe corrispondenti a questa espressione regolare
vengono considerate come citate.

key:                 ReplyNotify
type:                {-1,0,1,2,...}
default:             4
Xnews può evidenziare le repliche ai tuoi articoli. Questo ti permette
di avere più controllo, entro un certo livello di profondità nel
thread, fino a quando Xnews continuerà a evidenziare gli articoli. L'idea
è che la discussione potrebbe divergere e probabilmente dopo qualche
replica, una sull'altra, non sarai più interessato a seguire il thread.
0=disabilitato (non segna nulla); -1=segna ogni replica (followup)
dipendente dal tuo messaggio; 1=segna solo i followup diretti; 2=segna i
followup diretti, più il livello successivo; etc. Default è 4.

key:                 ScoreFileEditor 
type:                stringa
default:
Il percorso dell'editor da usare quando selezioni 'Special | Edit score
file'

key:                 ScoreStoredHeaders 
type:                boolean 
default:             0 
Serve a assegnare un punteggio alle intestazioni che sono caricate
dall'archivio (attenzione, 'storage' e non archive!). Nel caso opposto,
lo scoring avrebbe operato sulle intestazioni appena caricate.

key:                 ThreadScoreOpt
type:                {0,1,2}
default:             0
Determina come i vengono trattati i thread nello scoring.
0 = più alto punteggio nel thread; 
1 = più alto punteggio in thread, a prescindere dagli articoli con punteggio nullo; 
2 = somma di tutti i punteggi nel thread

key:                 TZ
type:                intero 
default:             system timezone 
L'ora locale da GMT espressa in minuti*100/60. Per esempio, PST=-0800; 
Adelaide=+0950. Impostalo solo se Xnews sembra assumere valori sbagliati
da Windows.

key:                 UseSmartDecode
type:                booleano
default:             1
Serve per cercare di recuperare il caricamento prematuramente interrotto di
un file multipart, partendo dall'ultima parte caricata con esito positivo,
piuttosto che ricominciare sopra l'intero file.

key                  XferTimeOut
type:                Intero
default:             30
Time out di trasferimento espresso in secondi

Per finire, la sezione [Misc] contiene 'CopyHeadersTemplate', che permette di determinare il formato per il comando 'acaCopyHeaders' (copia le intestazioni selezionate nella clipboard), usando i seguenti codici speciali:

%s subject
%a nome dell'autore
%e email dell'autore
%d data in formato breve
%D data in formato lungo
%g nome del newsgroup
%m Message-ID
%R References
%L numero di righe
%B dimensione in byte
%int dove 0<int<256, codice ascii
%t tab (equivale a %9)
%r CR (equivale a %13)
%n LF (equivale a %10)
%% il simbolo %

Qualsiasi altra cosa viene tratta come normale testo. Originariamente, 'CopyHeadersTemplate' viene impostato a %s%r%n (un subject seguito da reference per riga)

[Compose] section:

key:                 AlwaysXNoArchive 
type:                booleano 
default:             0
Serve a impostare X-no-Archive = yes in modo predefinito. 0 = no; 1 =
yes.

key:                 Autorewrap
type:                booleano
default:             1
Se il testo quotato debba essere automaticamente riformattato

key:                 FollowupPrompt 
type:                {1..3} 
default:             3 
Avviso per impostare i followup-to quando inviate articoli a più di n
gruppi indicati. Predefinito n=3.

key:                 GenerateDateHeader
type:                booleano
default:             0
Se Xnews debba fornire una data (Date header). Nota: il server potrebbe
comunque sovrascrivere questa intestazione a sua discrezione.

key:                 KeepCopies 
type:                booleano
default:             1 
Serve a tenere copia degli articoli inviati.

key:                 SetReplyToInPost
type:                booleano
default:             0
Aggiunge automaticamente un'intestazione Reply-to con il tuo reale
email address (private) nei post verso i newsgroup. L'idea è che gli
spammer guardino in apparenza solo i dati restituiti da Xover, i quali
non contengono l'intestazione Reply-to. Così si rende sicuro l'invio
del tuo email address reale nel Reply-to. In questo modo, puoi alterare 
l'indirizzo nel campo From: impiegando un fake (spam proof) e
permettendo alla gente di scriverti senza l'assillo di dover correggere
manualmente la tua email. 

key:                 WarnBadWrap 
type:                booleano 
default:             1 
Serve ad avvisare che l'articolo che stai inviando contiene righe mal
formattate (badly wrapped) nel testo citato (quoted text)

key:                 WarnExcessiveQuote 
type:                {0..100} 
default:             60 
Indice di testo quotata dal totale permesso prima che tu sia avvisato
per aver citato troppo testo. Esempio: 60 significa che se il totale
delle righe citate ( >quoted ) eccede il 60% del totale delle righe,
Xnews ti avviserà. Imposta questo valore a zero se non vuoi ricevere
alcun avviso.

Per finire, la sezione [Compose] contiene 'MailAttrib', 'NewsAttrib', 'ForwAttrib' che permettono di personalizzare l'introduzione, rispettivamente quando si risponde per mail, followup o forward. Queste sono semplici righe di testo con i seguenti codici speciali:

%a nome dell'autore
%e email dell'autore
%f L'intestazione "From:" completa
%d data in formato breve
%D data in formato lungo
%z data e ora, in formato lungo
%g nome del newsgroup
%m Message-ID
%% il simbolo %

Per esempio, impostandoi 'NewsAttrib' a:

%a <%e> scrisse in %m:

l'introduzione nei followup potrebbe diventare:

John Smith <jsmith@xyz.com> scrisse in <72663.9374@news.xyz.com>:

[PopUps] section:

key:                 ArticleList 
type:                stringa
default:        acaMarkAllRead,acaMarkAllUnread,acaSelectAll,- 
Una virgola separa un elenco di comandi da aggiungere al menù a discesa
'popup' menù dell'elenco degli articoli. Guarda il 'keyboard mapping
dialog' (Alt+K) per vedere l'elenco dei comandi. Usa un trattino per
definire un delimitatore.

key:                 GroupList 
type:                stringa
default:
acgSubs,acgUnSubs,acgPost,-,acgCatchUp,acgMsgCount,acgAllMsgCount,acmSaveNewsRC,-
Come sopra, ma serve all'elenco dei gruppi.

key:                 Viewer 
type:                stringa 
default:        acaFollowup,acaMail,acaFollowupMail,acaSaveAs,- 
Come sopra, ma serve al viewer. 

[Xover] section:

key:                 DefragGapSize
type:                Intero
default:             20
Ottiene articoli con un solo XOVER a meno che ci sia una serie di
articoli letti in numero superiore a quanto specificato. 
(Quelli letti saranno caricati più tardi). Può velocizzare il comando
Xover adattandolo alle tue specifiche esigenze: se hai una connessione
lenta, oppure il tuo server limita il numero totale di byte, potresti
impostare questo valore verso il basso o disabilitarne la funzionalità
assegnando a DefragGapSize un valore pari a zero. Viceversa, se hai
una connessione dedicata e non hai limiti di banda, puoi impostare
questo valore a qualcosa di alto, come 30. Non impostarlo a valori
troppo alti perché sprecheresti banda scaricando un vasto numero di
header non necessarie. Fa delle prove prima di giungere a una scelta
definitiva.

key:                PromptThreshold 
type:               Intero
default:            30000
Apre automaticamente la finestra XOVER quando entri in un gruppo che ha più
dello specifico numero di intestazioni, in modo da avere la possibilità di
limitarne il numero a tua scelta. Fissa questo valore a zero se non vuoi che
compaia in alcun modo la finestra (sempre attivabile con "Open Special" 
(Alt+Invio) del menù contestuale del mouse.

[ToolBars] section:

key:                A1
type:               stringa
default:            -,bShowAllHeaders,bFixedFont,bRaw,bWrap,-,
                    bAttach,bFollowUp,bMail,-,bBack,bForw,-,bRef,bNextQ,
                    bPrevTh,bNextTh,bPrevUnread,bNextUnread,bSkipQuote,-
Elenco di voci separate da virgole che rappresentano i pulsanti presenti
nella barra dei tool presente nella finestra degli articoli. Il simbolo
meno "-" equivale a separatore. Opzionalmente puoi aggiungere un numero
dopo il "-" a significare quando spazio in pixel deve essere predisposto
prima di collocare il pulsante successivo.


key:                A2
type:               stringa
default:            bCatchUp,bStop,bDecode,bRefresh,bArchive,bSend,
                    bEdit,bStorage,bPurge
Come sopra, ma efficace per la barra sottostante al viewer nella finestra
degli articoli.

Imposta "A1= " e "A2= " se vuoi sbarazzarti di entrambe le barre.

[UserButtons] section:

A esclusivo tuo piacere, puoi personalizzare i tuoi pulsanti. In questa sezione puoi definire i tuoi pulsanti con:

buttonname=command|iconfilename|hint
buttonname è qualsiasi nome vuoi dargli. Nota: per evitare futuri conflitti con ogni pulsante che potrei aggiungere, non chiamare i tuoi pulsanti personalizzati con il prefisso 'b'.
command può essere qualsiasi comando di Xnews presente sull'elenco della finestra di dialogo per le scorciatoie da tastiera. iconfilename punta a un file .bmp o .ico da usare per il pulsante. Usa path e nome file completi. La dimensione delle icone non può superare i 16x16 pixel per i pulsanti nella toolbar della finestra degli articoli e i 20x20 pixel per i pulsanti nella toolbar sottostante al viewer.
hint E' opzionale. E' il testo di aiuto che compare come messaggio popup posizionando il cursore sopra uno dei pulsanti.

Esempio:

[ToolBars] 
A1=bBack,bForw,-,bRaw,bFixedFont,-,u1,u2,-,bAttach,-,bSkipQuote 
A2=bCatchUp,bStop,bDecode,bRefresh,bArchive,bSend,bEdit,bStorage,bPurge,u3  

Cosa sono u1, u2 e u3? Sono i tuoi pulsanti personalizzati che puoi definire come qui sotto. (Probabilmente vorrai un nome più descrittivo di u1, u2, etc, a te la scelta.)

[UserButtons] 
u1=acvQuoted|d:\delphi\q.ico|Toggle quoted text 
u2=acvFixWrap|d:\delphi\fixwrap.bmp  
u3=acaFindMissingPartsEx|D:\delphi\findparts.ico|Click me, you won't be sorry  

Attenzione: se un comando associato a un pulsante non è applicabile alla finestra corrente, il pulsante non verrà mostrato sulla barra.

indietro


14. Groups.ini: impostazione in base ai gruppi

Le impostazioni in xnews.ini (Name, Email, etc.) sono essenzialmente globali. E' possibile scavalcarle per gruppi individuali o per insiemi di gruppi. Tuttavia, per farlo, hai bisogno di editare manualmente il file groups.ini.

Il formato di groups.ini è:

[group-expression-1]
impostazione1=valore1
impostazione2=valore2
...

[group-expression-2]
impostazione1=valore1
impostazione2=valore2
...

dove 'group-expression' è un'espressione regolare che farà in modo di applicare le relative impostazioni a tutti i gruppi l cui nomi corrispondano a quell'espressione. Segue un semplice esempio.

[binaries|mp3]
MultiPartThreading=1
FullScreen=1
ID=binuser

Questo significa che vorrai avere threading multipart, schermo pieno e ID 'binuser' ('binuser' viene definito in IDs.ini) in tutti i gruppi con le parole 'binaries' o 'mp3' nel nome.

Se precedi una 'group-expression' con una ~ (tilde), allora quella sezione sarà applicata a tutti i gruppi che NON corrispondono quell'espressione.

Le impostazioni di groups.ini prevalgono localmente su quelle di servers.ini che a loro volta prevalgono su quelle di xnews.ini. Le seguenti impostazioni possono essere personalizzate in groups.ini:

Name 
Email 
PublicEMail 
IDToken 
Organization 
SigFile 
MultipartThreading 
SortOn 
SortOrder 
ColumnLayout 
ExpandAllThreads 
FullScreen 
AttachDir 
DecodeDir 
Archive
Queue 
NewsAttrib 
MailAttrib 
ForwAttrib 
OnOpen 
OnLoaded
AltServers

Attenzione: apri Xnews.ini e da un'occhiata a come sono impostate queste chiavi.

Per esempio, in Xnews.ini puoi dire che vuoi usare il file mysig.txt come signature nella maggior parte dei casi; in Groups.ini, puoi scegliere di usare worksig.txt nei gruppi 'comp' e delphisig.txt quando sei in comp.lang.pascal.delphi.*.

Quindi avremo:

In xnews.ini:

[ID]
Name=my name
; etc.
SigFile=mysig.txt

In groups.ini:

[comp.*delphi]
SigFile=delphisig.txt

[^comp]
SigFile=worksig.txt

Nota che Xnews processa groups.ini in ordine sequenziale e si ferma al valore del primo riscontro (match). Inoltre, non c'è bisogno di replicare le altre impostazioni come nome o email dato che sono semplicemente riprese dai valori presenti in xnews.ini (a meno che, tu non voglia usare nomi o email differenti in base al gruppo a un'insieme di gruppi).

Occasionalmente, puoi invece volere che il programma continui alla sezione successiva. Per fare ciò, aggiungi continue=1 alla sezione corrente. Prendi l'esempio sopra. Supponi che tu voglia usare un set di email, nome, ecc. per tutti i gruppi. Questo trucco lo farà:

[^comp]
SigFile=worksig.txt
Email=qualunque cosa
Name=qualunque cosa
; etc.
continue=1
 
[comp.*delphi]
SigFile=delphisig.txt
; eredita email, name, etc. dalla sezione comp

Nota: il nome della sezione è di fatto una 'regular expression' (regex). Perché groups.ini sia conforme agli .ini file di Windows, non puoi usare [ ] nella tua regex. In questo caso, non appena sei costretto a usare una combinazione di valori, devi aggiungere una regex = riga. Per esempio, dato che non puoi scrivere:

[delphi[^a]]
...

(riscontra delphi, ma non philadelphia)

Allora, devi scrivere

[compdelphi]
regex=delphi[^a]
... 

Intestazioni in base ai gruppi

Definisce intestazioni gruppo per gruppo in deroga alle impostazioni di Xnews.ini.

Esempio:

; si applica ai gruppi alt.*
[^alt\.] 
CustomHeadersCount=3 
CustomHeader1=X-No-Bananas: yes 
CustomHeader2=X-Junk: blah blah 
CustomHeader3=*Comments: 

Nota: le intestazioni personalizzate vengono ereditate da Xnews.ini e dalle precedenti sezioni di groups.ini, con le intestazioni correnti che sovrascrivono quelle precedenti. Per esempio, se tu hai questo su Xnews.ini:

[Compose] 
CustomHeadersCount=2 
CustomHeader1=X-No-Bananas: no 
CustomHeader2=X-Test: abc 

quando scriverai su un gruppo alt, avrai queste intestazioni

X-No-Bananas: yes 
X-Test: abc 
X-Junk: blah blah 
Comments:

Talvolta puoi voler cancellare intestazioni ereditate in precedenza (se presenti). In questo caso, hai bisogno di aggiungere NewCustomHeaders=1 nella sezione relativa al gruppo. Così, se avrai questo:

[^it\.discussioni\.pippo$] 
NewCustomHeaders=1

allora it.discussioni.pippo non avrà alcuna intestazione dato che hai eliminato tutte quelle ereditate in precedenza senza definirne di nuove.

Attenzione: puoi definire intestazioni multiple (ad esempio, potrai avere diverse X-Face). Nella composizione dell'articolo, potrai poi scegliere tra queste quale usare.

indietro


15. Plonk file

Il 'plonk file' è un modo veloce per fare fuori un utente noioso. Non è potente e flessibile come lo score file. Non puoi usare regex, così il nome dell'utente o il suo indirizzo e-mail devono corrispondere esattamente (eccetto che per maiuscole/minuscole). Inoltre, è globale (non puoi filtrare per gruppi). In altre parole, è più semplice dello score file nonché più efficiente.

Impiego: mentre leggi un articolo, pigia 'k' per aggiungere l'autore al plonk file. Ti sarà chiesto per un periodo di scadenza. La scadenza è predefinita a 100 giorni dopo di che, il nome sarà automaticamente rimosso. La ragione è che è da considerarsi ottusa la pratica di lasciare permanentemente qualcuno nel plonk file. Probabilmente il seccatore abbandonerà di sua spontanea volontà il gruppo oppure vi sarà costretto o, più probabilmente, modificherà appena il suo nome e/o e-mail. Per queste ragioni, è una buona idea specificare una scadenza (ricorda, quante più voci ci sono nel plonk file, tanto più tempo occorrerà al programma a processarle). Se vuoi realmente lasciare il nome permanentemente nel plonk file, imposta il periodo di scadenza a zero.

Puoi richiamare il plonk file con Ctrl+K. In seguito, puoi aggiungere, rimuovere o modificare le voci presenti. Per cancellare, usa Canc (Del). Per modificare un nome o un'e-mail, clicca con il tasto destro su di esso.

indietro


16. Score file

Xnews ha felicemente adottato il concetto alla base del sistema di scoring di slrn (newsreader per sistemi Unix). Di base, ad ogni articolo è assegnato un punteggio da -9999 a 9999. In modo predefinito, un articolo ha punteggio pari a 0 (neutrale). Gli articoli con punteggio uguale o inferiore a -9999, sono fatti fuori (non li vedrai mai, a meno che tu non abbia 'hard kill' disattivato, perché in quel caso ti saranno mostrati con un'icona a forma di X). Gli articoli con punteggio uguale o superiore a 9999 sono considerati importanti e marcati con l'icona gialla! Leggi scoring.txt per avere maggiori dettagli.

Usare 'Article | Add to score file'

Con la versione 2.02.20, ho aggiunto un dialog box per facilitare l'aggiunta di nuove voci allo 'score file'. Puoi usarlo in due modi: a) puoi lasciare che sia Xnews ad aggiungere la voce; b) fa in modo che Xnews generi un nuovo valore e clicca su 'copy to clipboard'. Dopo, puoi aprire lo 'score file' con l'editor di testo che preferisci e incollare le informazioni in esso usando 'Shift+Ins' o 'Ctrl+v', inserendo anche ogni eventuale cambiamento che vuoi compiere.

Se non basta e vuoi capire meglio come funziona lo score file, leggi scoring.txt. Inoltre, se hai bisogno di conoscere quali sono le intestazioni più importanti, ti consiglio di aprire alcuni messaggi Usenet, selezionare 'View | Show all headers' ed esaminare le intestazioni.

Il comando 'Add to score file dialog' dovrebbe permettere più o meno l'autoapprendimento. Per prima cosa, seleziona una sezione da aggiungere alla nuova voce dello 'score file'. Puoi scegliere da una sezione esistente (prendi spunto da quelle che si possono applicare nel newsgroup corrente) o creare una nuova sezione (la nuova sezione apparirà unicamente per il gruppo corrente; puoi comunque cambiare la 'regex' per superare questo limite).

Dopo, sceglierai se assegnare uno score di 9999, -9999 o altro punteggio. Infine, scegli una scadenza.

Ora arriva la parte più interessante. Affonda il pulsante corrispondente al campo su cui vuoi applicare lo 'score', per esempio From. Valuta cosa il programma fa apparire nei campi attivati. Quel testo è una 'regular expression'. E' per questa ragione che vedi questo carattere '\', ad esempio jsmith@foo\.bar\.com. Ti sono quindi offerte anche una serie di alternative che potrebbero tornare utili (puoi inserire qualsiasi cosa tu voglia).

Il campo 'References' richiede un po' più di attenzione. Puoi selezionare 'this article/top of thread/either', che corrispondono al Message-ID dell'articolo corrente/dell'articolo padre del thread/un altro articolo (foo|bar). In alternativa ai precedenti, puoi anche scrivere un'espressione personalizzata (custom). La casella di riepilogo sottostante contiene due Message-ID. Il primo è il Message-ID dell'articolo corrente, il secondo è quello che appartiene al capostipide del thread. Se l'articolo corrente coincide con il capostipide, ce ne sarà solo uno in elenco.

Ora scegli se applicare AND o OR. Clicca su 'Apply' perché Xnews aggiunga la nuova voce per te nello 'score file' oppure clicca su 'Copy to clipboard' se vuoi editare ed aggiungere personalmente la nuova voce allo 'score file'.

Ok, permettimi di illustrarti un esempio concreto. Diciamo che stai leggendo un thread interessante e vuoi monitorarlo (watch) per il futuro. Usa 'add to score file', seleziona 9999 o specifica uno score positivo insieme a una data di scadenza (il thread non durerà all'infinito o probabilmente tu non sarai sempre interessato). Affonda il pulsante 'References' e seleziona 'matches' dalla vicina casella di riepilogo (probabilmente potresti usare anche matches case). Se sei interessato all'intero thread, spunta 'top of thread' oppure 'either'. Se ti vuoi curare solo delle repliche (followup) all'articolo corrente, seleziona 'this article'.

Come scritto in precedenza, il campo 'References' può occasionalmente rompersi, così per stare tranquilli, puoi usare Subject e il valore booleano OR (se usi AND, lo score non sarà più applicabile sulla parte di thread interessata da un'eventuale cambio di subject e questo potrebbe comunque rappresentare ciò che volevi realmente).

indietro


17. Le espressioni regolari (regular expression)

Ho già menzionato le 'regular expression' in questo documento (abbrev. regex). Una regex è usata per i filtri, per le ricerche all'interno di cartelle e per lo 'score file'. Sarai meravigliato di cosa supporta la sintassi di Xnews nelle regex.

Xnews usa il «Philip Hazel's PCRE (Perl Compatible Regular Expression) package», adattato a Delphi con precisione. Questo significa che hai accesso a un potente motore di regex, e se hai già familiarità con Perl, sei a cavallo. PCRE supporta la maggior parte delle costruzioni in perl regex.

Qui trovi un buon tutorial introduttivo al perl regex: http://virtual.park.uga.edu/humcomp/perl/regex2a.html

Ti raccomando fortemente di leggerlo.

Ho aggiunto una caratteristica per permetterti di provare il motore regex di Xnews e vedere come funziona.
Seleziona 'Special | Test Regex'.

Per conoscere le differenze tra il PCRE e il perl regex, leggi il file pcre.html. Questo documento è rivolto ai programmatori e ti farà venire probabilmente un mal di testa (anche a me). Così, qui c'è un riassunto che potrebbe bastare:

1) Stringhe di lettere, numeri e caratteri diversi da quelli speciali possono corrispondere solo a se stesse.

Esempio:

        color
                è corrisposto da tutto ciò contenente la parola color

2) Caratteri speciali

   \     tratta il carattere successivo come carattere normale
   .     corrisponde a ogni carattere
   ^     corriposnde all'inizio di una stringa
   $     corrisponde alla fine di una stringa
   |     alternativo
   (..)  raggruppa
   [..]  corrisponde uno dei carateri nel set
   [^..] non corrisponde uno dei carateri nel set

(i due punti .. corrispondono a ellissi, non due a punti letterali)

Esempio:

        help\.
                corrisponde a help seguito da un punto
        ca.s
                corrisponde sia 'cats' che 'cars'
        ^test
                corrisponde a tutto ciò che comincia per test, ovvero 
                'testing', 'tester', ma non 'the test'
        me$
                corrisponde a tutto ciò che finisce per me, ovvero
                'see me' ma non 'meter' o 'me and you'
        cat|mouse
                corrisponde a 'cat' o 'mouse'
        dog(s|gie)
                corrisponde a 'dogs' o 'doggie'
        [aeiou]
                corrisponde a una vocale
        [a-z0-9]
                corrisponde a una lettera o una cifra.  Nota come - è
                usato per specificare un range.
        se vuoi specificare letteralmente un trattino come parte del set
        di caratteri, mettilo all'inizio o alla fine, es: [a-f0-9-]
        misura a-f, 0-9 oppure trattino.

Nota: quando dico che help\. corrisponde a help seguido da un punto, significa che la regex misurerà con successo una stringa che contiene help seguita da un punto. Di conseguenza, 'please help. Now' coincide benché corrisponda solo la parola 'help'. Invece, la regex ^help\.$ misurerà solo la stringa 'help.' dato che ^ e $ fanno capo all'inizio e alla fine della stringa.

3) Quantità (misura quante ripetizioni)

   *     corrisponde a 0 o più ripetizioni
   +     corrisponde a 1 o più ripetizioni
   ?     corrisponde a 1 o 0 rip.
   {n}   corrisponde a esattamente n ripetizioni
   {n,}  corrisponde a almeno n ripetizioni
   {n,m} corrisponde a almeno n ma non più di m ripetizioni

Esempio:

        ma+
                corrisponde a 'ma' 'maaa' 'maaaaaaa'
        ma*
                corrisponde a 'm' 'maaa'
        (yada ){2,}
                corrisponde a 'yada yada yada '
    foo(and)?bar
        corrisponde a 'fooandbar' o 'foobar' ('and' è opzionale).

4) Stenografia del set di caratteri

   \w     corrisponde a una 'parola' a caratteri, lettere, numeri, e '_'
   \W     NON corrisponde a una 'parola' a caratteri, l'opposto di \w
   \s     corrisponde a uno spazio bianco (barra, tab, a capo, lf)
   \S     NON corrisponde a un carattere bianco, l'opposto di \s
   \d     corrisponde a una cifra
   \D     NON corrisponde a una cifra

Esempio:

        \(\d\d\d\)\s*\d\d\d[- ]?\d\d\d\d

corrisponde a un numero telefonico americano, ovvero 3 cifre racchiuse in parentesi, seguite da zero o più spazi, un prefisso a 3 cifre, seguito ancora da un trattino, uno spazio oppure nulla di ciò per finire con quattro cifre.

5) asserzione di larghezza zero

Un bel modo per considerare vera una condizione che non corrisponde a un particolare carattere

    \b   corrisponde a una parola di confine
    \B   corrisponde a una parola che non sta al confine

Esempio:

        \bfoot
                corrisponde a 'footer' 'footing' 'a foot' ma non 'afoot'

        foot\b
                corrisponde a 'afoot' e 'foot.' (il punto non conta
                come parte della parola) ma non 'footing'

        \bfoot\b
                corrisponde a solo la parola intera 'foot'

        foot\B
                corrisponde a 'footer' ma non 'foot;' cioè ci deve essere
                scritto qualcosa dopo foot che sia parte della parola,
                altrimenti la condizione non si verifica.

6) Riferimenti all'indietro (back references)

Se il tuo regex contiene una o più subespressioni (..), puoi attribuire più ripetizioni attraverso la subespressione <digit>th con \<digit> [digit sta per cifra, th credo che sia da intendersi come il prefisso generico degli agg. numerali ordinali anglosassoni, 1st 2nd 3rd 4th 5th 6th...]

Esempio:

        (\b\w+\b) to \1
                corrisponde a 'man to man' 'hand to hand' '100 to 10000'
                il \b\w+\b corrisponde a una parola intera. Le parentesi
                ( ) salvano la parola e la riportano nella subespressione 
                #1 (è la prima subespressione nel regex)
                \1 si riferisce a ciò che lo precede.
                'man to child' non sarà invece corrisposto dato che child
                non coincide con man.

Nota: Xnews permette fino a 19 sub espressioni in una regex.

7) Guarda avanti/indietro (look ahead/behind assertions)

   (?=regexp) guarda l'asserzione avanti.
   (?!regexp) non guarda l'asserzione avanti. 
   (?<=regexp) guarda l'asserzione indietro.
   (?<!regexp) non guardare l'asserzione indietro.

Esempio:

    \w+(?=\t)
        	corrisponde a una parola seguita da un tab; il tab non è
            incluso nella condizione

    foo(?!bar)
            corrisponde a ogni incidenza di 'foo' non seguita da 'bar'
   
    (?<!foo)bar
            corrisponde a ogni incidenza di 'bar' non preceduta da 'foo'

8) Case sensitivity (sensibilità a maiuscole/minuscole)

In Xnews, il regex è sempre 'case insensitive' o 'caseless'. Nello 'score file', puoi rendere le regex 'case sensitive' specificando Keyword = espressione piuttosto che Keyword: espressione. Nel box di ricerca all'interno delle cartelle, puoi disabilitare il 'case sensitive' spuntando il box 'Match case'.

indietro


18. Riconoscimenti

Desidero ringraziare gli autori delle seguenti componenti/codice/risorse gratuiti che ho usato nella realizzazione di Xnews.

1) TAdvSplitter da parte di Charles Bedard.
2) TBufStream da parte di Lucian Radulescu. Entrambe si possono agevolmente trovare alla Delphi Super Page.
3) X-Face Delphi code by Matthijs Laan http://www.geocities.com/quazar_nl/winface/. Matthijs ha anche un programma che puoi usare per convertire immagini bmp in X-Face.
4) Philip Hazel's Perl-Compatible Regular Expression package.
5) 'Text wrapping code' nella gknsa library (http://www.newsreaders.com/gnksa/wrapping.tar.gz) creata da John Moreno, et al.
6) Per le icone free da windows95.com (http://www.winfiles.com/apps/98/icons.html)(autori vari).
7) Ho anche adottato le icone dei binari e alcune apprezzabili idee di NewsXpress. Spero che Ken Ng non se ne risenta :-)

Desidero anche ringraziare tutti gli utenti (leggi testers) che mi hanno riportato bug e suggerimenti. In particolare, ringrazio Richard Merit per il suo esteso alpha testing, feedback, e di volta in volta, l'aiuto con le Win32 API; John Moreno per avermi segnalato varie violazioni alle RFC e al GKNSA; e Adam Bailey per la recensione sul GKNSA.

Detto questo, sono unico responsabile per tutti i bug e le mancanze di Xnews, sicuramente a esclusione di quando queste possono essere provocate dalla Bill Gates and Co., :)

indietro

========================================================================
Copyright © Luu Tran 1998-2001. Tutti i diritti sono riservati.
http://xnews.3dnews.net
Ultimo aggiornamento: 10 giugno 2001
========================================================================
Il  manuale  di  Xnews  di  Luu  Tran è stato tradotto a cura di Massimo
Cerro  che  ha  cercato  di  renderne  la traduzione quanto più accurata
possibile.  I  due  autori non sono legati da nessun rapporto economico,
ma hanno collaborato limitatamente alla stesura di questa traduzione per
la  quale, considerandone lo spirito volontaristico, nessuno dei due può
essere considerato responsabile per errori, omissioni o imprecisioni.

Per   segnalazioni  e  consigli  esclusivamente  rivolti  al  lavoro  di
traduzione,  puoi contattare Massimo Cerro scrivendo a maxbyte@iname.com

Tutti i marchi e prodotti citati, 
appartengono ai rispettivi proprietari.
========================================================================

Introduzione allo scorefile di Xnews

(scoring.txt)

Xnews adotta felicemente il concetto di scoring alla base di slrn. Fondamentalmente, a ogni articolo viene assegnato un punteggio da -9999 a 9999. Originariamente, a ogni articolo viene assegnato un punteggio pari a 0 (neutrale). Gli articoli con punteggio pari a -9999 o inferiore vengono cancellati (o almeno non li vedrete più, a meno di non disattivare *hard kill*, nel qual caso vi saranno mostrati con un'icona a forma di X). Gli articoli con punteggio pari a 9999 o superiore saranno considerati *importanti* e segnalati con un'icona gialla.

Xnews assegna un punteggio agli articoli usando le regole da voi specificate nel file score.ini. Questo è un file di testo che potete editare con un semplice text editor (blocco note, ecc.) Spazi, tabulazioni e righe bianche sono ignorate ad eccezione delle keyword e delle espressioni regolari. Lo scorefile è composto da sezioni (come i file .ini). Ogni sezione comincia con una intestazione del tipo:

[nome_gruppo_in_espressione_regolare]

in altre parole, un'espressione regolare contenuta dalle parentesi quadre [ ]. L'intestazione indica a quali gruppi è applicabile la sezione relativa ad essa. Ad esempio:

[.]

indica che questa sezione è applicabile a tutti i gruppi.

[^alt\.binaries]

indica che questa sezione è applicabile a tutti i gruppi che cominciano per alt.binaries.

[babylon|trek]

indica che questa sezione è applicabile a tutti i gruppi contenenti la parola babylon o trek.

Se un'espressione regolare viene preceduta con una tilde (~) (alt+126), allora il suo significato viene invertito specularmente. Per esempio, [~babylon|trek] è applicabile a tutti i gruppi che non contengono né babylon, né trek.

All'interno di ogni sezione, puoi avere una o più regole di scoring. Ogni regola comincia così:

Score: numero

in altre parole, la keyword Score, seguita dai due punti ':', seguiti da uno o più spazi e da un numero intero che può variare da -9999 a 9999.

Ogni regola può essere circostanziata specificando una o più espressioni da corrispondere, in questo modo:

keyword: espressione da corrispondere

Dove keyword è una parola chiave scelta tra:

Message-ID, Subject, From, Xref, Lines, References

Ad esempio:

[.]

Score: -9999
Subject: \$\$\$+

Score: 9999
From: luu.*tran

Le due regole precedenti, sono applicabili a tutti i gruppi. La prima assegna un punteggio di -9999 (in altre parole, kill): articoli che hanno tre o più '$' consecutivi nel subject. La seconda evidenzia come importanti gli articoli il cui autore è uno dei vostri preferiti (ah, il mio ego è insaziabile!).

Se precedi una keyword con ~ (tilde), il suo significato viene invertito. Così,

Score: -1000
~Subject: mulder|sculley

sottrae 1000 punti a ogni articolo il cui subject non contenga le parole mulder o sculley (X-files).

Quando keyword è Lines, l'espressione da corrispondere è un intero che specifica il numero minimo (o massimo) di righe. Per esempio,

[~binaries]

Score: -9999
Lines: 1000
~Subject: faq|rfd|rfc

elimina (kill) gli articoli che non appartengono a un gruppo binaries e che contengono più di 1000 righe (lines) il cui subject non corrisponde a una FAQ, RFC o RFD.

Specularmente si potrebbe usare

[binaries]

Score: -9999
~Lines: 50

che elimina (kill) gli articoli in un gruppo binaries con 50 o meno righe (lines)

Fra l'altro, sto solo indentando queste sezioni al solo scopo di renderle più leggibili; altrimenti non ci sarebbe alcuna differenza. La cosa più importante è che ogni regola o keyword sopra deve apparire in una riga per conto suo. Inoltre, puoi aggiungere commenti inserendo il simbolo percentuale (%) all'inizio della riga.

By the way, I'm only indenting these lines to make it more readable; it makes no difference otherwise. The only important thing is each of the lines above must appear on a single line by itself. Also, you can add comments by putting a percent sign (%) at the beginning of the line.

A livello predefinito, ogni test individuale deve essere corrisposto al fine di applicare l'intera regola di scoring, in altre parole il boleano AND è di default. Invece, se volessi usare il boleano OR, dovresti aggiungere un due punti extra ':' dopo la keyword di scoring. Per esempio,

[^comp\.]

Score:: -9999
Lines: 1000
Xref: advocacy
From: beavis
From: butthead

Elimina gli articoli spediti su gruppi comp che hanno più di 1000 righe (lines) o sono in crosspost presso gruppi advocacy o provengono da beavis o butthead.

Nota che tutte le keyword sono case insensitive, in altre parole considerano alla pari maiuscolo e minuscolo. La stessa cosa vale per le espressioni regolari, in modo da non aver bisogno di scrivere [Ff][Oo][Oo], quando già foo era sufficiente. Se desideri che l'espressione sia case sensitive, devi inserire dopo la keyword di scoring un simbolo di uguale "=" invece dei due punti ':', ad esempio:

[.]

Score: -9999
~Subject= .*[a-z]

elimina ogni articolo che non contenga almeno una lettera minuscola nel subject.

Le sezioni e le regole dentro a ogni sessione sono applicate nell'ordine in cui appaiono all'interno dello scorefile. Ogni articolo viene inizialmente caricato con un punteggio pari a zero. In seguito, in relazione alle regole dal quale verrà processato, il suo punteggio potrà incrementare o decrementare del relativo punteggio ad eccezione di quando la regola presenterà punteggi di -9999 o 9999, nel qual caso il programma assegnerà quel punteggio e terminerà ogni test ulteriore. Se vuoi essere sicuro di assegnare un punteggio diverso da 9999 o -9999, puoi collocare il simbolo di uguale '=' di fronte al punteggio. Per esempio,

Score: =500
From: joey

significa che "se un articolo è stato spedito da joey, allora assegnagli un punteggio di 500 e non tenere più in considerazione regole ulteriori."

Puoi aggiungere una data di scadenza a ogni regola in modo che questa non operi più in seguito. Il formato è

Expires: date

La riga, se presente, deve apparire immediatamente dopo il punteggio da assegnare. Per esempio,

% questa regola scade alla fine del millennio
% (ok, in ogni caso alla fine del 1999 :)

Score: 2000
Expires: 31/12/1999
....

Il formato della data dipende dalle impostazioni locali. E' mm/dd/yyyy per gli americani e dd/mm/yyyy per gran parte dell'Europa.

Se disponi di una sezione vuota, lo scoring per quei gruppi che vengono corrisposti dalla sezione si fermerà in quel punto. Per esempio, se vuoi applicare un punteggio ad articoli appartenenti ai gruppi it.news.*, ma non per it.news.votazioni, puoi fare in questo modo

[^it\.news\.votazioni$]
% questa sezione viene lasciata intenzionalmente vuota. Essa
% previene che le regole successive vengano applicate su it.news.votazioni

[^it\.news]

Score: 2000
......

Lo scorefile di Xnews è molto simile a quello usato da slrn, con queste sole differenze:

  1. su Xnews le espressioni regolari sono case insensitive.
  2. slrn gestisce le intestazioni delle sezioni come espressioni wildcard (? e *), mentre Xnews come vere e proprie espressioni regolari.
  3. Xnews non permette lo scoring di header diverse da quelle menzionate, ovvero Message-ID, From, Subject, XRef, Lines e References.
  4. a quanto ne so, slrn non sfrutta le sezioni vuote con il significato di chiudere il processo di scoring (vedi sopra).

Puoi leggere un'introduzione allo scorefile di slrn qui

http://kwaziwai.cc.columbia.edu/acis/tutor/slrnscore-txt.html

Puoi anche trovare una FAQ allo scorefile di slrn qui

http://kwaziwai.cc.columbia.edu/acis/tutor/slrnscorefile-faq.html

Puoi fare tue le idee della FAQ per realizzare il tuo scorefile, ma tenendo in considerazione le differenze precedentemente citate.

Luu Tran
23 febbraio 1999

scoring.txt tradotto da Massimo Cerro
in data 1 settembre 2000