home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 613b.lha / VIF / vif.doc.pp / vif.doc
Encoding:
Text File  |  1992-03-07  |  9.6 KB  |  259 lines

  1. VIF.
  2.  
  3.  _V_ery _I_ntelligent _F_ilter
  4.  
  5.  (Filtro molto intelligente)
  6.  
  7.  C1990 Pagani Massimiliano
  8.  
  9.  
  10.  
  11. 0 CONDIZIONI DI DISTRIBUZIONE
  12.   E' possibile copiare liberamente questo programma e darne una copia a
  13. chiunque, basta che la transazione avvenga GRATUITAMENTE e con tutti i
  14. files relativi. E' possibile mettere a disposizione questi files su banca
  15. dati od in raccolte di programmi share-ware e pubblico dominio purchè non
  16. siano a fini di lucro.
  17.   E' VIETATO modificare i files vif.doc e vif.c senza il consenso del
  18. sottoscritto.
  19.   Ribadendo quanto detto sopra, l'unico mezzo di diffusione di questo
  20. programma deve essere la donazione gratuita.
  21.   L'autore non può essere ritenuto responsabile di perdite o danneggiamento
  22. di dati derivati dall'uso diretto o indiretto, corretto o meno, di VIF.
  23.  
  24. OK. Basta con le scartoffie legali e veniamo al sodo.
  25.  
  26.  
  27. 0.1 Files
  28. VIF deve essere distribuito con i seguenti files:
  29.  
  30.     VIF        - l'eseguibile (13364 bytes)
  31.     VIF.c        - il sorgente (10797 bytes)
  32.     VIF.doc        - questo documento (9801 bytes)
  33.     VIF.e.doc    - la versione inglese di questo documento (7794 bytes)
  34.  
  35. Se non trovate tutti questi files, potete contattarmi per avere la
  36. versione aggiornata e completa (il mio indirizzo è alla fine di questo
  37. file).
  38.  
  39.  
  40.  
  41. 1 COSA FA VIF?
  42. VIF è un filtro.  Un programma che prende un file di testo e lo trasforma
  43. in un altro.
  44. In questa operazione VIF toglie tutti quei caratteri che non servono
  45. (vedremo un po' più sotto esattamente quali) e li elimina mantenendo, sia
  46. l'intero testo significativo, sia le corrette spaziature.
  47. Questo programma è nato dall'esigenza di sistemare numerosi file di
  48. documenti in maniera organica. Prima di scrivere VIF utilizzavo un editor
  49. per rimuovere gli spazi a fine linea (mediante ricerca e sostituzione) e
  50. per far sostituire a spazi consecutivi tabulazioni.
  51. VIF è stato pensato per essere utilizzato esclusivamente da CLI, quindi è
  52. rivolto agli utenti del Computer con almeno una minima esperienza di
  53. AmigaDOS.
  54.  
  55.  
  56.  
  57. 2 QUALI SONO I CARATTERI ELIMINATI
  58.  
  59. 2.1 spazi -> tab
  60. Una tabulazione consente di risparmiare da 1 a 7 caratteri. Esempio:
  61.  
  62. T-------T-------T-------T-------T-------T-------T-------T-------T
  63. __qualche_carattere________________altri_caratteri.
  64.  
  65. Nella prima linea ho segnato le tabulazioni (una ogni 8 caratteri), mentre
  66. nella seconda un esempio di testo possibile. Con il simbolo '_' ho
  67. rappresentato lo spazio. VIF sostituisce la linea con la seguente linea:
  68.  
  69. T-------T-------T-------T-------T-------T-------T-------T-------T
  70. __qualche_carattere<T>    <T>    ___altri_caratteri.
  71.  
  72. Dove con <T> ho indicato il carattere di tabulazione. In questo modo la
  73. linea ha conservato sia i caratteri significativi che la posizione di
  74. questi, ma è passata da 51 a 39 caratteri.
  75.  
  76.  
  77. 2.2 Spazi e tabulazione a fine linea
  78. Dei caratteri invisibili (spazi e tabulazioni) a fine linea non sono di
  79. alcuna importanza, vengono quindi eliminati senza pietà.
  80.  
  81.  
  82. 2.3 NewLines a fine file
  83. Discorso analogo a quello fatto per il punto 2.2. Linee vuote alla fine del
  84. file non sono di alcun giovamento.
  85. VIF si comporta in maniera abbastanza intelligente: se alla fine c'è una
  86. serie di linee vuote ed una di queste contiene caratteri tipo spazio tab,
  87. questa viene considerata vuota e rimossa. (EhEh)
  88.  
  89.  
  90. 2.4 Spazi coperti da tabulazioni.
  91. Nell'esempio sottoriportato:
  92.  
  93. T-------T-------T-------T-------T-------T-------T-------T-------T
  94. __<T>    qualche carattere
  95.  
  96. E' immediato vedere che i primi due spazi sono inutili in quanto sono già
  97. "coperti" dal carattere di tabulazione successivo. Questi due spazi vengono
  98. quindi rimossi.
  99.  
  100.  
  101. 2.5 ^M e ^Z
  102. I baracchi (leggi MS-DOS) usano delle convenzioni alquanto dispendiose in
  103. termini di memoria per quanto riguarda il testo: per terminare ogni linea
  104. utilizzano due caratteri, uno per riportare il "carrello" in prima colonna
  105. (carriage return) e l'altro per farlo avanzare di una linea (line feed).
  106. Per Amiga (e per molti altri computer moderni) è sufficiente un solo
  107. carattere per questa operazione. Risultato di tutta la storia è che per
  108. Amiga i caratteri ^M all'interno dei file di testo sono inutili.
  109. Come sono inutili i caratteri ^Z che, sempre per i baracchi, indicano la
  110. fine del file.
  111.  
  112.  
  113. 2.6 opzionalmente le sequenze di escape.
  114. Questa è un'opzione del programma, quindi non deve essere necessariamente
  115. impiegata. L'ho inserita nel programma in quanto mi sembra particolarmente
  116. utile per avere documenti uniformi.
  117. Una sequenza di escape è qualcosa che inizia col carattere 0x1B (27
  118. decimale) seguito da '[', quindi nessuno o più numeri separati da ';' ed
  119. infine una lettera. Tali sequenze servono per cambiare colore, carattere
  120. (grassetto, italico, sottolineato) o per spostare la posizione del cursore,
  121. o per altre operazioni più o meno complesse.
  122. Se il file ascii viene stampato con un comando di tipo "type" non ci sono
  123. problemi: queste sequenze vengono interpretate correttamente, ma se il file
  124. viene letto con un editor o con alcuni programmi del tipo (more) possono
  125. venire interpretati erroneamente o non interpretati del tutto, con notevole
  126. difficoltà di interpretazione.
  127.  
  128.  
  129.  
  130. 3. USO
  131. Come già detto, VIF si usa da CLI, quindi niente interfaccia utente
  132. dall'aspetto amichevole.  Potrebbe essere un'idea per una futura
  133. versione...
  134. Esistono diversi modi per invocare VIF. In ogni caso se si desidera
  135. ottenere alcune indicazioni utili direttamente dal programma è sufficiente
  136. impartire:
  137.  
  138. 1> vif ?
  139.  
  140. Verranno visualizzate delle sintetiche istruzioni e generalità del
  141. programma.
  142.  
  143.  
  144. 3.1 Opzioni
  145. In qualsiasi modo di funzionamente è possibile specificare delle opzioni a
  146. VIF, nel seguente modo:
  147.  
  148. 1> vif -<lettere>
  149.  
  150. Attualmente sono supportate le seguenti opzioni:
  151. -e    Le sequenze di escape vengono conservate.
  152. -q    Il programma non produce alcuna scritta.
  153. -p    Ogni 16 linee lette viene stampato il carattere '#'.
  154. Queste opzioni possono essere combinate semplicemente indicando più di una
  155. lettera dopo il carattere '-'. [Ad esempio per conservare le sequenze di
  156. escape ed osservare il procedere del programma bisogna indicare:
  157.  
  158. 1> vif -ep
  159.  
  160. E NON
  161.  
  162. 1> vif -e -p
  163.  
  164. Questa sintassi potrà essere supportata in una futura versione, ma
  165. attualmente non funziona.]
  166.  
  167.  
  168. 3.2 Da stdin a stdout.
  169. Il filtro viene applicato dallo standard input allo standard output,
  170. semplicamente senza indicare ulteriori parametri oltre ad eventuali
  171. opzioni.
  172. Questo modo di funzionamento è particolarmente utile quando si utilizzano
  173. redirezioni e pipe.
  174. Utilizzando questa modalità viene disattivata l'opzione -p ed attivata
  175. l'opzione -q, differenti specifiche dell'utente verranno ignorate.
  176. Es:
  177.  
  178. 1> vif
  179.  
  180.  
  181. 3.3 Da un file ad un altro.
  182. La sintassi è la seguente:
  183.  
  184.   vif [-epq] file_sorgente file_destinazione
  185.  
  186. Con significato evidente. Il file_destinazione viene creato (se c'era un
  187. file con questo nome viene cancellato senza indugio e senza comunicazione
  188. all'utente).
  189.  
  190.  
  191. 3.4 Da un file ad esso stesso
  192. Il filtro viene applicato sul file con il risultato in un file temporaneo,
  193. quindi il file originario viene cancellato ed il file temporaneo lo
  194. rimpiazza.
  195. La sintassi è:
  196.  
  197.   vif [-epq] file
  198.  
  199. Anche qui con ovvio significato.
  200. Il file temporaneo è chiamato t:viftemp%d. Dove %d indica un numero.
  201. Ovviamente è necessario avere il device T: Questo è generalmente associato
  202. alla directory ram:T. VIF controlla se esiste già un file temporaneo, in
  203. caso affermativo cambia il numero in coda al nome fino a quando non riesce
  204. ad avere un file non ancora esistente.
  205. E' importante notare che il filtro non opera direttamente sul file
  206. indicato, quindi è sempre possibile, in caso di errori, recuperare il file
  207. originale od il file completamente filtrato.
  208. Inoltre questa modalità, come la precedente abbisogna di uno spazio libero
  209. pari allo spazio occupato dall'orginale (potrebbe non esserci alcuna
  210. riduzione).
  211.  
  212.  
  213. 4 PROSSIMAMENTE SU QUESTI SCHERMI
  214. Ho diverse idee riguardo all'evoluzione di VIF. Così com'è è comodo, forse
  215. non eccessivamente piccolo, ma fa molte cose utili. Sotto UNIX la cosa
  216. migliore sarebbe stata quella di fare molti filtri specifici che combinati
  217. in una pipeline avrebbero prodotto il risultato desiderato, purtroppo in
  218. AmigaDOS l'utilizzo delle pipe non è così immediato ed una pipeline sarebbe
  219. un'operazione piuttosto macchinosa.
  220. Possibili ampliamenti nel futuro potranno essere:
  221. - Riformattazione dei paragrafi con o senza riempimento.
  222. - Sostituzione delle vocali accentate: e' -> è.
  223. - Interfaccia utente per operazioni in batch.
  224. - rimozione dei commenti e degli spazi inutili dai sorgenti C (eheh).
  225. - impaginazione automatica
  226.  
  227.  
  228. 5 ALCUNE CONSIDERAZIONI FINALI
  229. Nel realizzare questo programma ho messo in pratica tutte le buone regole
  230. di programmazione apprese a scuola e sul campo, quindi non dovrebbero
  231. esserci problemi neanche nelle situazioni particolarmente critiche (poca
  232. memoria, dischi pieni, errori di lettura/scrittura). In ogni caso è sempre
  233. possibile recuperare completamente i dati tranne quando il filtro viene
  234. applicato dallo stdin allo stdout. Infatti VIF non scrive direttamente sul
  235. file che sta processando.
  236. Attualmente VIF NON è puro, quindi se viene reso residente, non può essere
  237. utilizzato da più processi. Se dovessero esserci abbastanza richieste in
  238. tal senso, andrò alla ricerca della documentazione sui programmi puri ed
  239. opererò su VIF alla bisogna.
  240. Penso che questo programma possa risultare molto utile a tutti quelli che
  241. abbiano a che fare con files di testo non scritti da loro.
  242. Se utilizzate il programma e potete permettervelo mandatemi un'offerta (a
  243. vostra discrezione) al seguente indirizzo:
  244.  
  245.     Pagani Massimiliano
  246.     via Mazzini 40
  247.     21052 Busto Arsizio (VA)
  248.     ITALIA
  249.  
  250. Se invece avete trovato un sistema interessante per avere una GURU tramite
  251. VIF o avete consigli, questioni, suggerimenti potete anche contattarmi al
  252. seguente indirizzo di e-mail:
  253.  
  254.     ele9133@cdc835.cdc.polimi.it
  255.  
  256.     [L'indirizzo equivale a 131.175.6.2]
  257.  
  258. Grazie e buon utilizzo
  259.