Displaying articles with tag

Microformats, Mephisto e hCard

Posted by Ripley, Wed Jul 11 20:56:00 UTC 2007

Microformats

Microformats??

Chi sono costoro?

ma soprattutto:
  • cosa vogliono da noi (`sviluppatori`)?
  • e cosa vogliamo noi (`utenti`) da loro?

Ma andiamo con ordine.

Chi sono costoro?

I microformats sono principalmente un nuovo modo per associare dei contenuti semantici ai contenuti web, un interessante riedizione (riveduta e corretta) del Web Semantico. Il Web Semantico ha come obiettivo quello di rendere il Web `Machine Readable` oltre che `Human Readable`. I Microformats hanno come obiettivo quello di rendere il Web contemporaneamente `Machine ed Human Readable`. Questo basta a stuzzicare la vostra fantasia? La mia si… ma in genere non mi faccio pregare troppo :-P

Cosa vogliono da noi sviluppatori?

Sostanzialmente il loro obiettivo e’ inserire i contenuti semantici direttamente nell’HTML sfruttando in modo diverso (e molto furbo) le possibilita’ fornite da quest’ultimo, in particolare alcuni attributi standard dei tag come `class`, `id` e `rel`. Quindi i Microformats vogliono che alcune informazioni all’interno del nostro HTML, quantomeno quelle che vogliamo rendere `Machine Readable`, rispettino un determinato formato (in termini di tag e attributi utilizzati). In questo modo i software in grado di riconoscere quei microformats saranno in grado di estrarre le informazioni direttamente dal nostro HTML, che rimarrà comunque completamente `Human Readable`.

Questo poi genera un interessante effetto collaterale, cioè l’accordarsi sul formato in HTML di determinate informazioni di uso comune (per cui ha quindi senso definire un microformat) permette allo sviluppatore e al web designer di sapere sin dall’inizio la struttura HTML di tali snippet. Anche trattandosi solo di un effetto collaterale e non di un fine, a mio avviso non e’ trascurabile dato che la convenienza e comodita’ delle tecnologie da parte di chi le usa ne decreta poi il successo o l’insuccesso.

Cosa vogliamo noi utenti da loro?

Noi utenti vogliamo poter accedere sempre piu’ agevolmente a quel marasma di informazioni che e’ presente su internet. A questo scopo e’ necessario che i software siano in grado di estrarre dal materiale presente su web informazioni sempre piu’ precise e sensate. Questo vale sia per i servizi web come:

  • motori di ricerca
  • web social/comunity
  • pubblicazione di contenuti

sia per le applicazioni lato client come il nostro browser. Ed e’ qui che entra in gioco Operator.

Operator: Microformats on Firefox, NOW!

Se la breve introduzione sui Microformats vi ha incuriosito e’ il momento giusto… andate subito a installare Operator. Grazie a questa estensione vedremo subito in azione Firefox alle prese con i microformats. L’estensione ci mette a disposizione una toolbar:

oppure un bottone:

Operator analizza per noi la pagina HTML corrente alla ricerca dei Microformats di cui conosce il formato e ci consente di eseguire delle azioni su queste informazioni:

  • Export Contact
  • Bookmark with Firefox
  • Add to Yahoo! Contacts
  • Export Event
  • Add to Google Calendar
  • etc. etc. etc.

I formati e relative azioni conosciute da Operator possono essere estese con degli userscript javascript che utilizzano l’API messa a disposizione da Operator.

Microformats On The Road: hCard on Mephisto

A questo punto hanno cominciato a prudermi le mani e non ho saputo resistere alla tentazione di toccare con mano. Perche’ non esportare delle hCard per le pagine di about del blog?

hCard e vCard

hCard e’ il microformat finalizzato ad inserire informazioni personali in un formato gemello a vCard.

vCard

vCard, come e’ possibile apprendere dalla pagina di introduzione su wikipedia, e’ un formato standard per lo scambio di informazioni personali.

1
2
3
4
5
6
BEGIN:VCARD
FN;CHARSET=UTF-8:Alca Societa' Cooperativa a.r.l.
EMAIL:info@alca.le.it
NICKNAME;CHARSET=UTF-8:ALCA
PHOTO;VALUE=uri:http://labs.alca.le.it/assets/2007/6/4/alcalabs.png
END:VCARD

vCard e’ stato pensato per essere inserito in documenti testuali come le email, di cui richiama in qualche modo il formato.

hCard

hCard, come si nota immediatamente, identifica con l’attributo `class` i tag corrispondenti ai campi di una comune vCard :

1
2
3
4
5
6
7
8
9
10
11
12
<div class="widget vcard">
   <img class="photo" 
   src="http://labs.alca.le.it/assets/2007/6/4/alcalabs.png" />
   <dl>
     <dt>Full Name:</dt>
     <dd class="fn">Alca Societa' Cooperativa a.r.l.<dd>
     <dt>Nickname:</dt>
     <dd class="nickname">ALCA</dd>
     <dt>Email:</dt>
     <dd class="email">info@alca.le.it</dd>
   </dl>
</div>

Filtered-column-hcard-macro

Certo che inserire a mano l’HTML per una hcard non e’ proprio il massimo della comodita’... come ovviare? La prima cosa che mi e’ venuta in mente e’ stata quella di utilizzare il sistema di macro gia’ presente in mephisto, basato su un plugin rails chiamato filtered_column. Questo plugin prevede la possibilita’ di introdurre nuove macro del tipo:

1
2
3
<macro:nomemacro parametro1="valore1" parametro2="valore2">
  contenuto
  

quindi perche’ non introdurre un apposita macro del tipo:

1
2
3
4
5
6
<macro:hcard class="widget"
  fn="Alca Societa' Cooperativa a.r.l."
  nickname="ALCA"
  email="info@alca.le.it"
  photo="http://labs.alca.le.it/assets/2007/6/4/alcalabs.png">
  

Il compito (almeno nella sua prima release) e’ praticamente banale:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class HCardMacro < FilteredColumn::Macros::Base
  def self.filter(attributes, inner_text = '', text = '')
    fn          = attributes[:fn] || ""
    nickname    = attributes[:nickname] || ""
    photo       = attributes[:photo] || "/images/avatar-nil.png"
    email       = attributes[:email] || ""
    css_class   = (attributes[:class] || "") + " vcard"

    hcard_block = <<-EOF
    <div class="#{css_class}">
      <img class="photo" src="#{photo}" />
      <dl>
        <dt>Full Name:</dt>
        <dd class="fn">#{fn}</dd>
        <dt>Nickname:</dt>
        <dd class="nickname">#{nickname}</dd>
        <dt>Email:</dt>
        <dd class="email">#{email}</dd>
        #{inner_text}
      </dl>
    </div>
    EOF
  end
end

filtered\_column\_hcard\_macro: dove e come

Il codice del plugin si trova attualmente in hosting su Google Code a questo url. Per utilizzarlo in una applicazione Ruby On Rails che fa uso del plugin filtered_column (come ad esempio con Mephisto) avete 2 possibilita’ :

* decomprimere il tar.bz2 della directory vendor/plugins/;
1
2
rpl@ubik:/srv/webapps/mephisto-0.7.3/vendor/plugins$ tar xjvf \ 
  ~/Desktop/filtered-column-hcard-macro--0.0.1.tar.bz2
* effettuare un checkout del repository in vendor/plugins/filtered-column-hcard-macro;
1
2
3
rpl@ubik:/srv/webapps/mephisto-0.7.3/vendor/plugins$ svn co \
   http://filtered-column-hcard-macro.googlecode.com/svn/trunk/ \
   filtered_column_hcard_macro

La seconda e’ consigliata solo ai temerari che non hanno paura di vivere nel trunk ;-). Ora che il plugin e’ installato potete provarlo semplicemente inserendo uno snippet macro:hcard simile a quello dell’esempio presente nel paragrafo precedente.

Considerazioni Filosofiche

Microformats => SemanticWeb 2.0?

Un’altro 2.0?? Beh… bisogna notare come ultimamente tutte le ultime `2.0-rivoluzioni` assomiglino a delle riesumazioni. Dopo aver fatto di tutto per complicarsi la vita… il 2.0 in genere e’ costituito da una serie di tecniche/tecnologie esistenti o esistite rivalutate o reinterpretare (in genere perche’ la prima interpretazione era stata affidata ad attori scadenti). Ad esempio Web 2.0 potremmo vederlo come una correzione di rotta rispetto alle pericolose derive proprietarie del Web (c’e’ bisogno di fare nomi?) e riguardo a REST (che sa un po’ di WebService 2.0 :-)) non possiamo non notare alcune analogie…

Unico 2.0 veramente autentico IMHO e’ l’ IM2.0 inaugurato da un visionario quanto talentuoso sviluppatore italiano (si avete letto bene) ma su questo spero di poter presto dedicare tempo e bit su questo blog :-D

About Us

Alca è una delle prime cooperative del panorama italiano del Mezzogiorno ad offrire competenze specifiche nell’ambito dell’ open source e a sviluppare soluzioni basate su software libero. AlcaLabs e’ un weblog realizzato da Alca Societa’ Cooperativa, su cui i geek motore della cooperativa mandano in pipe esperienze, idee, progetti e software interessanti (e rigorosamente liberi) seguendo la filosofia che e’ motore del progetto: il Software e la Cultura Libera. Alca Societa’ Cooperativa (e’ difficile crederlo) ha base a Lecce - Salento (Italy)

3 comments | Filed Under: Non Solo Ruby Rails Tutorial | Tags: