Codice Forma Contenuto II – compito 4


… continuando a intrecciare fili diversi e acquisendo qualche molto sana abitudine. Piccoli hacker crescono.



Confronto fra i file english.xml e italian.xml, all'inizio e alla fine
A sinistra: italian.xml; a destra: english.xml; sopra: prime 20 righe; sotto: ultime 20 righe.

Eravamo rimasti qui. Ho riportato qui sopra una composizione grafica che mette a confronto l’inizio e la fine dei due file, anche se auspico che abbiate fatto l’esercizio nel post precedente, scaricando e installando l’editore di testo per frugare in questi file. Se cliccate sulla figura ne potete vedere una versione più nitida. In questa composizione, per facilitare il confronto, ho eliminato l’intestazione con le informazioni sull’autore della traduzione, nel file italian.xml, che tuttavia ho riportato in fondo.

Un inciso prima di tutto, sul tema degli editor di testo possenti. Ho fatto questa composizione con Vim, l’editore di testo integrato nei sistemi Linux e anche Mac OSX. Vim, è nipote di vi, editore di testo integrato nei sistemi operativi Unix (di cui Linux è una versione) praticamente da sempre: è stato scritto per la prima volta nel 1976. In questa composizione si possono scorgere alcune potenzialità: la suddivisione dello schermo in sezioni con parti diverse di stessi file o diversi file (a me serviva in quadranti ma si possono aggiustare come si vuole), l’evidenziazione sintattica, i numeri di riga (naturalmente si possono togliere se si vuole). Nel preparare questa figura mi sono tornate utili altre possibilità. Per esempio la regolazione della tabulatura (gli spazi lunghi) che avevo trovato troppo ampia perché le singole righe potessero rientrare nello spazio di un quadrante; con un solo comando ho portato la tabulatura da 8 spazi ad 1. Oppure la possibilità di cancellare rettangoli di testo anziché singoli caratteri o righe; questo è servito a sbarazzarmi di spazi disseminati qua e là che ingarbugliavano l’ordine dei rientri (indenting), che sono molto utili per orientarsi nei codici basati su costrutti del tipo <tag>…</tag>, nidificati gli uni negli altri.

Questo inciso non rappresenta un’esortazione a usare attrezzi del genere, ma solo a dare un’idea che per lavori di editing di testo (compresi i codici di embedding di figure o video o altro, che sempre di testo son fatti) ci sono degli strumenti appositi, che sono liberamente disponibili per tutti. Potrei dire che sono intrinseci a Internet. Se uno sa che esistono, il giorno che ne sentisse il bisogno, potrà iniziare ad usarli.

E ora guardiamo questi file e prima di porci domande precise sulla loro struttura, interroghiamoci sulla loro finalità. Ebbene, in questo semplice esempio è chiaro che i file english.xml e italian.xml, servono a contenere e trasmettere un certo tipo di informazione con una certa struttura. Sono facili da capire, con un minimo di abitudine alle cose informatiche, ed è abbastanza comprensibile che chiunque conosca un po’ l’inglese, partendo da english.xml non trovi grande difficoltà a confezionare un file analogo per un’altra lingua che sia di sua conoscenza. Come dire che il file in XML si spiega da sé. Ecco questi sono i fatti fondamentali: il codice XML è il veicolo che trasporta informazione strutturata in Internet in modo che possa essere decodificata da chiunque. Questo non significa che sia facile da leggere. Ci sono documenti XML assai intricati. Significa invece che all’occorrenza sia possibile recuperare tutta l’informazione contenuta in un documento XML senza ostacoli di sorta al di là di un certo impegno e un certo lavoro.

Riassumiamo, XML …

  • è un codice di markup simile a HTML
  • ma serve a trasportare informazione, non a mostrarla
  • come HTML è basato sul’impiego dei tag, ma anziché essere predefiniti e fissi questi vengono creati per ciascuna tipologia di documento
  • è concepito per essere autodescrittivo

Mentre HTML, o meglio i browser che sono gli strumenti che interpretano le pagine scritte in HTML, perdonano le sbavature sintattiche …

<html>
<head>
<title>Questo è HTML poco buono</title>
<body>
<h1>HTML poco buono
<p>Questo potrebbe essere un paragrafo
<p>ma vedete che dimentico di chiudere quasi tutti i tag?
<p>i browser perdonano ma non è una buon pratica ...
</body>

… con il codice XML la sintassi deve essere rispettata rigorosamente, sintassi peraltro semplice; ecco le regole, che scrivo perché sono singolarmente poche:

  • i documenti devono avere un elemento radice che contiene tutti gli altri
  • tutti gli elementi devono avere un tag di chiusura, tipo
    <tag>...</tag>
    
  • minuscole e maiuscole fanno differenza, per esempio
    <tag></tag>
    <TAg></TAg>
    <Tag></Tag>
    <tAG><tAG>
    <TAG></TAG>
    

    sono tutti tag diversi

  • gli elementi devono essere nidificati correttamente:
    <tag_esterno>
    <tag_interno_1>
    Testo interno 1
    </tag_interno_1>
    <tag_interno_2>
    Testo interno 2
    </tag_interno_2>
    </tag_esterno>
    
  • i valori di eventuali attributi degli elementi devono essere specificati fra virgolette:
    <tag un_attributo="suo_valore"></tag>
    

Quando un documento XML soddisfa queste semplici regole allora si dice che è ben formato e questo è un fatto obbligatorio.

Un documento XML può essere, oltre che ben formato, anche valido. Questo significa che il documento si attiene ad un insieme di regole, predeterminato per una data tipologia. Le regole descrivono i suoi elementi, medianti i relativi tag e eventuali attributi, e anche le relazioni che possono esistere fra di essi. Per esempio le relazioni di nidificazione: certi tag figli possono stare solo dentro a certi altri tag genitori. I modi con i quali tali insiemi di regole possono essere specificati, sono vari e abbastanza ingarbugliati, a causa dell’evoluzione impetuosa dello standard. Non è utile qui disperdersi in dettagli del genere. Ci basti sapere che, pur nelle varie modalità, la specifica delle regole per un certo tipo di documenti viene reperita in qualche luogo della rete.

Per dare sostanza a queste parole vediamo un tipico esempio di informazione codificata in XML, prendendo l’esempio dei feed che ormai ben conoscete. Voi già sapete che i feed sono “bocconi” di informazione che i siti web offrono affinché possano essere trasportati negli aggregatori di feed, i quali consentono così di seguire le novità pubblicate in quei siti. Ebbene, ho estratto l’ultimo feed dei post del mio blog e l’ho ripulito di tutte le informazioni inutili per una comprensione immediata del frammento di codice:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
	<channel>
		<title>Insegnare Apprendere Mutare</title>
		<atom:link href="https://iamarf.org/feed/" rel="self" type="application/rss+xml" />
		<link>http://iamarf.org</link>
		<description>
			yearning for a society where knowledge and learning are public goods,
			available to everybody without any constraint of social or financial nature
		</description>
		<lastBuildDate>Sun, 18 Dec 2011 13:57:48 +0000</lastBuildDate>
		<item>
			<title>Codice Forma Contenuto</title>
			<link>https://iamarf.org/2011/12/17/codice-forma-contenuto/</link>
			<description>
				<![CDATA[Dove si intrecciano fili diversi e si acquisisce
				qualche molto sana abitudine. Piccoli hacker crescono.
				Non finisce qui &amp;#8230; Vi ricordate il video postato da Marvi?]]>
			</description>
		</item>
		<item>
		...
		</item>
		<item>
		...
		</item>
	</channel>
</rss>

Così ripulito e semplificato non dovreste avere difficoltà a “leggere” questo codice. Aggiungo solo qualche breve commento.

Il primo tag, <xml>, ha due attributi che specificano la versione usata per il codice XML e il tipo di codifica, UTF-8, e voi sapete già cosa significhi questo.

Gli attributi del secondo tag, <rss>, specificano la versione dello standard RSS, ed anche una serie di indirizzi nei quali si trovano le regole che servono per questo tipo di documenti, quelle che dicevamo prima. Ne ho lasciati solo alcuni, per semplicità. Questo metodo si basa sui cosiddetti xmlns, xml namespaces, ma non ci serve sapere altro a riguardo.

Come vedete, il tag <rss>, è padre del tag <channel>, che a sua volta è padre degli altri che vediamo. Il tag <channel>, specifica l’emittente, in questo caso il mio blog. Tralascio poi le cose evidenti per arrivare al primo elemento item, che contiene il feed vero e proprio di un singolo post. Ho lasciato solo le cose essenziali ma sono più che sufficienti. Per esempio queste sono le uniche cose che uso nell’aggregatore di feed che mi sono costruito. Anche dentro al primo item vedete tutte cose facilmente riconoscibili. I feed successivi li ho eliminati perché non ci dicono nulla di più.

Come vedete, non ci sono tanti misteri. Ora sappiamo compiutamente cosa è un feed: una manciata di informazioni essenziali relative ad un frammento di contenuto, che potrebbe essere un post di un blog, un commento a un post, un articolo di giornale online, un podcast – uh … – frammento che è codificato in XML in armonia con un adeguato insieme di regole.

Il cosiddetto web 2.0 è un sistema dinamico sostenuto dalla fluida circolazione di frammenti di informazione codificata in XML. I feed sono solo un esempio. Abbiamo visto che i gestori di Notepad++ usano file in XML per gestire le traduzioni del loro editore. I file OPML che conoscete, sono codificati in XML. Tutte le volte che esportate dati da un sito web, da un blog, da un wiki o da qualche tipo di social network, questi saranno espressi in file codificati in XML. Anche i vostri blog, sì.

L’esportazione di un blog può essere utilizzata per trasferire i contenuti in un altro blog, anche di un altro gestore. Per esempio questo blog che state leggendo, lo creai in blogspot, nella prima versione, poi dopo un paio d’anni decisi di passare tutto in wordpress. Ebbene, l’operazione è consistita nell’esportare i contenuti dal vecchio blog in blogspot, creare un nuovo blog in wordpress e poi importarci il file scaricato da blogspot. Tutto questo è stato possibile perché il file è scritto in XML con delle regole che tutti i blog capiscono. Ah, mi viene ora in mente, che quel vecchio blog esiste ancora, lo rendo nuovamente pubblico per qualche tempo, con l’occasione, eccolo qua!

Nella blogoclasse è stato menzionato alcune volte il fatto che la piattaforma splinder è moritura. Ebbene, i possessori di blog in quella piattaforma potranno migrare verso altri sistemi utilizzando un meccanismo del genere.

Non c’è molto altro da dire su questo, forse, se non che potremmo costruirci un “compito” 😉 che potrebbe essere il seguente: cercate come si fa ad esportare il vostro blog, wordpress o blogspot che sia. Consultatevi fra voi, via blogoclasse, chi lo sa già fare può scrivere consigli in un post, per esempio. Aprite poi con Notepad++ (Gedit per chi ha Linux, TextWrangler per chi ha Mac, o editori similari) il file XML che contiene l’esportazione del vostro blog. Poi fate uno screenshot dell’inizio del vostro file aperto in Notepad++ e pubblicatelo nel vostro blog. C’è il beneficio collaterale che così imparate a salvare i vostri testi, post e commenti compresi.

Ultima avvertenza: le opzioni Importa blog, Esporta blog, Elimina blog sono vicine: occhio a selezionare Esporta blog!


Autore traduzione in italiano di Notepad++

Italian translation for Notepad++ 5.9.6.1

Last modified Tue, November 7th, 2011 12:00 GMT by Luca Leonardi.

Please e-mail errors, suggestions etc. to ices_eyes(at)users.sourceforge.net.

For updates, see https://sourceforge.net/projects/notepad-plus/forums/forum/558104/topic/1853765

Codice Forma Contenuto


Dove si intrecciano fili diversi e si acquisisce qualche molto sana abitudine. Piccoli hacker crescono. Non finisce qui …


Vi ricordate il video postato da Marvi? Ecco, riascoltatelo con molta attenzione da questo preciso punto:

http://youtu.be/5xDITZBizfY#t=0m48s

uh … preciso punto …

Ricapitoliamo:

HyperText Markup Language (HTML)
Codice per rappresentare pagine web. Definisce i vari elementi di testo: titoli di vari livelli, paragrafi, elenchi di vario tipo, elementi immagine, frammenti di codice destinati ad arricchire la pagina, quali video o altri elementi grafici particolari. Anche metadati, ovvero informazioni che descrivono la natura della pagina ma risultano invisibili. Questi sono elementi utilizzati dal browser che deve rappresentare la pagina e dai motori di ricerca; per esempio la versione di HTML con la quale è stata scritta la pagina o le parole chiave che facilitano il reperimento della pagina da parte dei motori di ricerca.
Cascading Style sheet (CSS)
Codice per definire l’apparenza grafica dei vari elementi di testo. Definisce come debbano essere rappresentati i vari elementi specificati nella pagina HTML, colore, tipo e dimensione dei caratteri, allineamento nella pagina o nelle sue sezioni e via dicendo.
Javascript
Codice per l’esecuzione di particolari operazioni che modificano l’apparenza delle pagine HTML e le rendono reattive a certe azioni dell’utente. È vero e proprio software che le pagine web portano nei computer degli utenti come un cavallo di Troia.

Potrebbe sembrare che il web sia tutto qui, in soldoni: pagine web molto belle e dinamiche. In realtà ci sono altri importanti ingredienti.

Uno di questi è la separazione fra forma e contenuto, proprio quella accennata da Michael Wesh, ed è qui che entra in gioco un altro tipo di codice, lo XML (eXtensible Markup Language). Proviamo a toccarlo con mano, prima di studiarlo sui libri.

Uno di questi è la separazione fra forma e contenuto, proprio quella accennata da Michael Wesh, ed è qui che entra in gioco un altro tipo di codice, lo XML (eXtensible Markup Language). Proviamo a toccarlo con mano, prima di studiarlo sui libri. Fate un po’ di ginnastica e stretching alle dita … alla fine, in un altro post, ci sarà anche il compito, forse 😉

Molti di voi conosceranno già Blocco note (Notepad), il piccolo editore di testo che correda tutte le versioni di Windows. Ne avevamo parlato nel post andando dove mi portano i feedback. In Windows, credo in tutte le versioni, si trova in Avvio (Start) -> Tutti i programmi -> Accessori -> Blocco note. Chi non avesse fatto il miniesercizio con il Blocco note (Notepad), descritto in quel post, lo faccia ora [1].

Il Blocco note (Notepad) è palesemente molto semplice e questo a molti potrà sembrare un fatto naturale – Che vuoi che faccia un semplice editore di testo! Niente affatto. Il mondo è pieno di sofisticatissimi editori di testo, con una miriade di strane opzioni, in tutte le salse e per tutti i sistemi. Sono gli attrezzi preferiti da professionisti, geek di varia estrazione o da chiunque mastichi con una certa frequenza qualche tipo di codice. Nei casi più estremi sono effettivamente ostici, un po’ come una macchina da corsa, scomoda e senza aiuti che perdonino gli errori del pilota, ma se la sai usare vai più forte.

In realtà gli editori di testo possono essere raffinati anche sotto il profilo grafico ma con il fine di facilitare la scrittura del codice. L’esempio più lampante, ma non certo l’unico, è la colorazione sintattica (evidenziazione sintattica, syntax highlighting), vale a dire l’uso dei colori per differenziare gli elementi di un certo tipo di codice. Una cosa semplice ma di grande utilità quando si deve rovistare in codici lunghi e complessi, ma non solo.

Roba solo per professionisti? Secondo me non proprio, magari anche per studenti dei corsi di editing multimediale … Perchè uno degli equivoci tripici è che una cosa che si chiama editing multimediale debba necessariamente essere una cosa fatta solo di link e bottoni cliccati. Niente affatto, la marcia in più invece, anche senza volere aspirare a vette stratosferiche, compare proprio quando si comincia e aggeggiare qualche codice, e qui, un vero editore di testo è proprio quello che ci vuole. Mai manipolare frammenti di codice con un word processor, sarebbe come andare a cercar funghi con il frac e il mantello, tutto il tempo andrebbe speso nel districarsi fra i rovi …

Ok, facci usare questo Blocco note e non la menare troppo lunga! – No, vorrei che provaste un altro editore, anche perché così facendo, scopriremo qualche altra cosa.

Cliccate quindi qui: Notepad++. Leggiamo insieme alcune parti di questa pagina. Prima la sezione a destra, intitolata About:

Notepad++ is a free (as in “free speech” and also as in “free beer”) source code editor and Notepad replacement that supports several languages. Running in the MS Windows environment, its use is governed by GPL License.

Fermi.

Notepad++ è un editore di codice sorgente libero (come libera espressione e anche a costo zero [2]) che funziona anche come un sostituto più potente di Notepad, in grado di riconoscere e tenere conto di diversi tipi di codici. Gira in ambiente MS Windows e il suo impiego è regolato dalla licenza GPL [3].

Se siete andati a leggere le note, vi sarete resi conto che qui si svela un nuovo mondo, che noi proviamo a conoscere semplicemente entrandoci dentro, che qui vuol dire scaricando il software e provando a usarlo. Guardate la colonna di sinistra, cliccate sul tasto Download. Si apre una nuova pagina. Guardate la parte destra, intitolata v5.9.6.2 – Current Version. Prima di procedere, leggete sotto, anzi, riporto qui la prima e l’ultima voce dell’elenco che si vede:

  • Notepad++ v5.9.6.2 Installer
  • Notepad++ v5.9.6.2 code source (source code)

La prima voce è quella su cui dovrete cliccare per scaricare il software, ma l’ultima, che ho copiato qui sopra, vedete cosa dice? source code. Quello è il codice sorgente del software che state per scaricare. Ecco se voi voleste, potreste scaricarlo e leggerlo. Magari modificarlo per introdurre qualche vostra miglioria, magari ridistribuire in rete la vostra versione, cosa che potreste fare, a patto di corredare il nuovo prodotto ancora con la licenza GPL, in modo che il processo possa evolvere ulteriormente. Questo è il modo nel quale si sviluppa il software libero.

Ora torniamo a noi. Cliccate quindi sulla prima voce, vi viene così chiesto se volete scaricare un file di nome npp.5.9.6.2.Installer.exe (Nota per chi non usa windows. Dite di sì e, una volta scaricato, cercate il file, nella cartella Download o dove siete comunque abituati a scaricare la roba da Internet, e poi eseguite quel file – perché come dice l’estensione del suo nome, .exe, si tratta di un file eseguibile. In seguito a questa operazione, vi ritroverete Notepad++ fra i vostri programmi. Lo trovate in Avvio (Start) -> Tutti i programmi -> Notepad++.

Se vi va di provarlo, per esempio caricandoci dei file che conoscete, magari qualcuno dei file HTML con i quali avete giocato qualche tempo fa, fatelo. Poi tornate qui, sennò procediamo subito, leggendo nella (copio e traduco qui sotto) pagina principale di Notepad++, sempre nella sezione a sinistra, About, in fondo, sotto alla figura che si vede:

Siete incoraggiati a tradurre Notepad++ nella vostra lingua madre, nel caso tale traduzione non fosse ancora disponibile nella pagina Binary Translations. E se l’idea vi piace, l’aiuto che darete traducendo il sito ufficiale di Notepad++ nella vostra lingua madre sarà molto apprezzato.

Seguite il secondo link (il primo contiene le istruzioni, ma guardatelo dopo, solo se volete): avete visto in quante lingue è stato tradotto? Le ho contate: 62, se non mi sono sbagliato. Ecco, il modello cooperativo del software libero, non concerne solo strettamente il software ma anche altri aspetti. Questo delle lingue è molto interessante perché con questo sistema, si hanno traduzioni in lingue minoritarie, che ad una multinazionale del software potrebbe non convenire finanziare. Invece, in un processo dal basso all’alto di questo genere, sono le comunità di utenti stessi che modulano i prodotti sulle esigenze locali.

Bene, risalite in cima alla pagina Binary translation.

Scaricate due file, quello denominato english.xml – uh … – e quello con la bandierina italiana, che qui chiamo con il suo nome italian.xml – ri-uh … Lo potete fare anche da questi due link, fatelo con il tasto destro del mouse e poi selezionate Salva destinazione con nome Save link as.

Aprite questi due file con Notepad++, esplorateli e confrontateli. Ne parleremo la prossima volta.


[1] Scrivete un file con dentro il testo “pippo” con Notepad e salvatelo con il nome pippo.txt. Poi scrivete lo stesso testo “pippo” in un word processor e salvate il file con il nome pippo.doc o pippo.odt o quello che volete, a seconda del word processor che usate. Guardando nella cartella che contiene tali file, confrontate la lunghezza. Io l’ho fatto in questo momento usando Vi (un editore di testo tipico di Unix) e OpenOffice Write: pippo.txt è venuto 6 byte e pippo.odt 8841 byte! Ebbene, in pippo.txt i byte sono 6 perché ci sono i 5 caratteri (un byte per carattere secondo la codifica ASCII) di “pippo” più un carattere finale che rappresenta la fine della riga. Invece il file pippo.odt è venuto 8841 caratteri perché i rimanenti 8835 caratteri servono per descrivere le caratteristiche grafiche del testo, anche se di fatto non le abbiamo usate.

[2] Deriva da un famoso slogan coniato da Richard Stallman, padre dell’idea di software libero ma anche padre di ampi pezzi di codice che compongono il sistema operativo Linux, proprio per questo giustamente chiamato GNU/Linux, dove GNU è il sistema di componenti scritti da Stallman negli anni 80, abbondantemente usati da Linus Torwald per costruire il nocciolo di ciò che oggi è GNU/Linux, nelle sue innumerevoli “salse”, Debian, Ubuntu, Redhat ecc. Lo slogan di Stallman era: Libero come libera espressione e non come birra gratis, intendendo con questo che l’enfasi era sul concetto di libera diffusione dei prodotti dell’ingegno e non di prodotto venduto a costo zero. La precisazione era necessaria perché in inglese la parola “free” vuole dire ambedue le cose: free beer è birra gratis.

[3] General Public Licence, è una licenza inventata da Richard Stallman, che consiste in un documento associato ad un software che regola la distribuzione del medesimo, in armonia con l’idea di libera circolazione dei prodotti dell’ingegno. In pratica la licenza GPL assicura all’utente libertà di utilizzo, copia, modifica e distribuzione. È la più diffusa licenza per il software libero. Mi rendo conto che liquidare questo concetto con una frasetta è paurosamente riduttivo, ma affrontare ora il tema delle licenze “libere” e dei diritti d’autore ci porterebbe troppo fuori strada perché il tema è vastissimo e assai intricato. Proveremo a sollevare la questione più avanti, se ce ne sarà il tempo. Preferisco toccare con mano la questione, intanto.

[Nota per chi non usa Windows] Chi non usa Windows non può evidentemente eseguire un file tipo .exe. Quindi gli utenti di Mac o di Linux NON devono scaricare quel file, bensì possono seguire il resto delle istruzioni, esplorando il sito di Notepad++, scaricare i file english.xml e italian.xml (continuate a leggere il post prima) e poi aprire tali file con un altro editore. Non mancano tuttavia ottimi editori di testo negli altri sistemi, anzi! Per gli utenti di Linux c’è gedit, quasi sicuramente disponibile nel sistema. Gli utenti Mac possono scaricare TextWrangler.

%d blogger hanno fatto clic su Mi Piace per questo: