Author: Oriol Rius

Microformats – afegint semàntica a les nostres webs

Reading time: 189 – 315 minutes

Després de força temps sense veurens en persona, ahir vaig passar quasi tot el dia amb l’Ernest. Varem tenir molta feina actualitzant-nos de mil i un temes personals, professionals i de tot tius. En una de les les nostres converces va sortir el tema dels microformats. De fet, el tema em sonava però no tenia ni idea de que anava i realment ho vaig trobar molt bona idea, sobretot de cara a fer més potents a nivell semantic els nostres continguts en format xHTML.

Una petita descripció de què és això dels microformats podria ser la que donen a un bon article que vaig trobar de casualitat Add microformats magic to your site (local).

Els microformats són:

  • simples
  • basats en HTML
  • dades amb format
  • basats en formats ja existents
  • basats en pràctiques ja habituals pels creadors de continguts

l’objectiu és afegir un sentit semàntic als continguts web actuals, i permetre la millor intereacció amb serveis descentralitzats:

  • sense perdre compatibilitat amb els navegadors
  • ni les eines de desenvolupament
  • sense requerir nous coneixements als desenvolupadors

Tot això que sona tan extrany seria tan senzill, per exemple, com quan en el nostre blog ens referim a una direcció postal encomptes d’usar aquest possible codi:

<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">div</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>Oriol Rius<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>movilpoint new concept,s.l.<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>oriol@movilpoint.com<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>Passeig Ferrocarrils Catalans, 117 oficina 9<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>Cornellà de Llobregat<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>Barcelona<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>08940<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>Tlf. +34 93 470 90 80<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/p</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/div</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>

Doncs si escribissim el mateix codi respectant la sintaxis del microformat anomenat hCard:

<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">div</span> <span style="color: #2040a0;">class=</span><span style="color: #008000;">"vcard"</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">a</span> <span style="color: #2040a0;">class=</span><span style="color: #008000;">"url fn"</span> <span style="color: #2040a0;">href=</span><span style="color: #008000;">"http://www.movilpoint.com"</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>Oriol Rius<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/a</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>4
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">div</span> <span style="color: #2040a0;">class=</span><span style="color: #008000;">"org"</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>movilpoint new concept,s.l.<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/div</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">a</span> <span style="color: #2040a0;">class=</span><span style="color: #008000;">"email"</span> <span style="color: #2040a0;">href=</span><span style="color: #008000;">"mailto:oriol@movilpoint.com"</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>oriol@movilpoint.com<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/a</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">div</span> <span style="color: #2040a0;">class=</span><span style="color: #008000;">"adr"</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">div</span> <span style="color: #2040a0;">class=</span><span style="color: #008000;">"street-address"</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>Passeig Ferrocarrils Catalans, 117 oficina 9<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/div</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">span</span> <span style="color: #2040a0;">class=</span><span style="color: #008000;">"locality"</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>Cornellà de Llobregat<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/span</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">span</span> <span style="color: #2040a0;">class=</span><span style="color: #008000;">"region"</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>Barcelona<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/span</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">span</span> <span style="color: #2040a0;">class=</span><span style="color: #008000;">"postal-code"</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>08940<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/span</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/div</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">div</span> <span style="color: #2040a0;">class=</span><span style="color: #008000;">"tel"</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>+34 93 470 90 80<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/div</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>
<span style="color: #2040a0;"><strong><span style="color: 4444ff;"><strong><</strong></span><span style="color: #2040a0;">/div</span><span style="color: 4444ff;"><strong>></strong></span></strong></span>

Com ja he comentat lo bo és que això serà interpretat com una vCard per les aplicacions de tercers que suportin el microformat hCard, per exemple, google, zimbra, etc.

Screen tips: més d’un usuari en una sessió

Reading time: 8 – 13 minutes

Quan vaig descobrir la comanda screen la vaig trobar potentíssima. Ben aviat me’n vaig enamorar, el que no m’hagués pensat mai és que es podrien fer coses tan interessants com les que explica l’article: Using screen for remote interaction (local). Per exemple, podem deixar una sessió oberta d’screen i accedir-hi des de més d’un client de forma simultanea. Tan en mode lectura, només veure el que hi ha, com escriptura, poder modificar en temps real el que conté el terminal virtual d’screen simultaneament des de més d’un lloc. Com us podeu imaginar això és ideal, per exemple, per poder ensenyar-li a algú com es fa alguna cosa.

Resum de comandes per tal de llençar una sessió d’screen i connectar-la en remot en mode lectura i escriptura:

1. Sessió principal: Cal que el binari <em>/usr/bin/screen</em> estigui <em>setuid root</em>.
2. Sessió principal: llencem <em>screen</em>: screen -S nom_sessio
3. Sessió secundària: connectem al PC de la 'sessió principal' amb SSH.
4. Sessió principal: Crt-a :multiuser on
5. Sessió principal: Crt-a :acladd loginID
6. Sessió secundària: screen -x usuari/nom_sessio

A més per si això fos poc, també podem grabar la sessió amb tots els moviments de cursor a través del propi screen sense haver d’usar comandes, com ara script.

Resum de comandes per grabar una sessió amb screen:

screen -S nom_sessio -L
o bé quan estem en una sessió:
Crt-a H

Cal recordar que igual que passa amb la comanda script, screen tampoc suporta els caràcters d’escapament ANSI que permeten mostrar colors a la pantalla. Per tant, si el nostre ls és amb colorets no funcionarà, cal que fem això per solucionar-ho: alias ls=’ls –color=none’.

Gentoo: portage 2.1 funció elog

Reading time: 4 – 6 minutes

La versió 2.1 del portage de Gentoo que va entrar en mode estable fa uns mesos realment és un salt important en la gestió de paquets d’aquesta metadistribució. Així que si encara no us heu mirat les millores que incorpora us ho recomano moltíssim. La gent de linux.com han escrit un article que parla del ‘secrets’ d’aquesta nova versió del portage (local). De fet, la majora ja en sóc un asidu usuari, per exemple l’esearch o l’eix. Però hi ha una novetat que m’ha agradat moltíssim i que no coneixia. La podeu també trobada en l’article anterior. Però us en faré 5 centims.

Bàsciament es tracta de dues variables que es defineixen a make.conf. Amb aquestes variables podem definir quin és nivell de log que ens ha de mostrar la comanda emerge mentre compila un paquet i a més podem definir si volem que la sortida de missatges es guardi en un fitxer a /var/log/elog així quan compilem més d’un paquet de forma consecutiva podem veure si aquest ha tingut algún problema. De fet, on jo li veig més utilitat és en el típic paquet que dona problemes després d’instal·lar-se correctament. Doncs bé, podem comprobar si ha fallat alguna de les seves parts al compilar.

Les variables que s’han de definir al make.conf:

# This sets what to log
PORTAGE_ELOG_CLASSES="warn error log"
# And this is how to do it
PORTAGE_ELOG_SYSTEM="save"

winmail.dat – aprofundint una mica en el tema

Reading time: 2 – 2 minutes

Quan enviem un email amb el MS Exchange com a proveedor de correu d’internet si aquest email conté un missatge amb format de texte enriquit (rich-text message) llavors el missatge estarà enmarcat entre una capçalera de descripció MIME per tal de poder informar al MUA destí quin format té la informació que conté el cos del missatge. Però si no li diem res al client de correu de MS aquest enviarà l’email dintre d’un fitxer adjunt anomenat winmail.dat. Aquest fitxer es codificarà en format uuencoded. (informació fonamentada en XCLN: Sending Messages In Rich-Text Format)

Obviament el que ens interessa als no-usuaris d’aquests serveis de MS és que això s’envii d’una forma molt més estàndard. Per tal de poder informar als usuaris de MS de com han de configurar el seu MUA es pot consultar l’article How to Prevent the Winmail.dat File from Being Sent to Internet Users.

Article 138053 de suport MS:

This article describes how either an Exchange Server administrator or end users can prevent the Winmail.dat attachment from being sent to Internet users when using the Microsoft Exchange Internet Mail Connector (IMC).

En poques paraules el que ve a dir l’article és que s’ha de buscar on posa Always Send To This Recipient In Microsoft Exchange Rich-Text Format en el menú de configuració del MS Exchange (en cas de que siguem admins), o del Outlook (en cas de ser users) i desmarcar la checkbox.

mini-cookbook: ssh passwordless

Reading time: < 1 minute

Sense ajudes, descripcions ni notes… només per refrescar el tema amb 1s:

  • client ssh:
    • ssh-keygen -t dsa
    • id_dsa.pub el copiem al servidor
  • servidor ssh:
    • afegim contingut id_dsa.pub al ~/.ssh/authorized_keys
    • borrem id_dsa.pub

Vaig a parlar malament de bloglines.com

Reading time: 2 – 4 minutes

Logo de Bloglines

Sóc un gran usuari del servei de lectura de feeds que presta de forma gratuita bloglines. Tot i les seves deficiències en algunes tonteries és el sistema que més s’ajusta a les meves necessitats per tal de llegir els ja més de 180 blogs (feeds en rss) cada dia. Sempre he defensat el servei perquè realment crec en l’empresa. Com dic, sempre salvant els inconvenints propis d’una aplicació ASP i sense possibilitat de poder-la tenir instal·lada en el meu servidor.

Però el problema me’l vaig trobar dissabte quan em vaig posar a llegir el meu blog d’enllaços que vaig guardant a diari (servei gratuit de bloglines també) per tal de consultar a posteriori en més temps les noticies/enllaços que hi he guardat. El problema esta en que vaig decidir posar-me al dia des del gener d’aquest any fins a dia d’avui repassant tots els enllaços que hi tinc. Amb l’objectiu d’organitzar-me millor la informació (escriure nous posts, posar nous enllaços al sitebar, etc). Així realment li extrec al màxim possible al temps que hi dedico cada dia repassar i filtrar tanta informació.

Doncs bé, quan vaig arribar al març (anava enrera, des d’avui fins a gener) moltíssims enllaços s’havien perdut. I no parlo d’enllaços cap a internet, sinó enllaços dintre del propi servei de bloglines. O sigui, que els enllaços de moltes notícies antigues dintre del servidor de bloglines havien deixat d’existir no poden així llegir la notícies que vaig referenciar des del seu propi servei. Per mi això és molt trist, ja que és normal que els enllaços que fem cap a webs de tercers deixin de funcionar (no podem garantir al 100% la integritat referencial en enllaços externs). Però cap al nostre propi site jo crec que és vital intentar fer-ho i més una empresa tan important com aquesta.

Així doncs, formalment ja puc dir que bloglines m’ha fet perdre moltíssima informació que tenia guardada en el seu servidor, entre els mes de gener i març. De moment no he decidit prendre cap més mesura que la de usar una altre política a l’hora d’escollir que guardo al blog d’enllaços que hi tinc. Però esta clar que no hi podeu confiar com ho he fet jo fins ara.

Qt SOAP – provant els webservices

Reading time: 1 – 2 minutes

A l’article Client SOAP genèric ja vaig parlar d’una pàgina web que a partir de la URL del WSDL ja podiem atacar el webservice d’una forma molt senzilla. El problema que té això és que quan estem dintre de la xarxa de l’empresa potser no tenim el webservice publicat a l’exterior d’internet. Doncs amb aquesta simple eina programada en Qt podem tenir una eina similar a la oferida per la pàgina web.

qtsoap.png

De moment encara no l’he provada però de ben segur ho hauré de fer aviat, així doncs si hi trobo algún inconvenient o avantatge descatbles, amplicaré aquest article sobre el Qt SOAP. Una cosa que ja he vist i que té molt bona pinta és que ens permet veure les HTTP headers de la petició i la respostes SOAP. A més podem definir el content-type de la petició cosa realment útil.

Whatisthatfile.com – què és aquest fitxer?

Reading time: < 1 minute

Sovint en trobem fitxers, sobretot en windows que no sabem ni d’on han sortit i que no ens atrevim a borrar per si les mosques, així que si voleu saber a quí preguntar: “què és aquest fitxer?” cada vegada que ús passi això whatisthatfile.com.

Generant RSS de les revisions de Subversion

Reading time: 2 – 2 minutes

rss.jpg

Quan treballes en un projecte on hi ha més d’una persona treballant contra un repositori de codi és molt bona idea poder-se sindicar via RSS a les noves revisions que es van publicant del codi i als comentaris associats a aquestes revisions. De fet, aconseguir això amb subversion no és gens difícil. Jo fins ara ho he fet amb el WebSVN (port del ViewCVS. A més gràcies al trac també podem obtenir aquests RSS i moltes més funcionalitats. Però tot això ja us ho he explicat. En alguns casos però ens pot interessar publicar aquests RSS sense haver de tenir programes orientats a altres funcionalitats sinó únicament aprofitar les extencions WebDAV/DAV_SVN per publicar els RSS. Això és el que ens expliquen a l’article HOWTO: Adding an RSS feed to a Subversion Server (local).

De fet, el que planteja aquest article és força senzill. Simplement usa un generador d’RSS a partir de les revisions de l’SVN, l’script esta fet en python i després li diem al subversion que després de cada commit que es fassi al repositori es genir un nou fitxer RSS. Així doncs el tema no té cap misteri però va bé tenir-ho en un howto per si mai fa falta.

Phalanger: the PHP Language Compiler for .NET Framework

Reading time: 2 – 2 minutes

dotNet.jpg

Ja coneixia aquesta solució però mai recordava el nom que tenia, de fet, encara no l’he pogut provar mai però pel que he vist a la web en principi qualsevol dels nostres codis fets en PHP hauria de poder-se compilar en bytecode perquè pogués correr en un servidor web ASP.NET.

Penseu el senzill que serà doncs, usar codi des de .NET que haguem fet amb PHP o alrevés, si ja disposem de classes implementades en C# O VB.NET les podrem usar tranquilament des de PHP.

Llàstima que no m’hagi posat mai ni en .NET ni mono ni res de res. A més dubto que ho fassi perquè no és la meva feina, però per alguns codis que tinc fets a la feina en PHP em seria una gran avantatge poder-los fer corre directament sobre infraestructures complemtament windows, així no hauria de portar els codis de PHP a llenguatges més complexos per tal de fer-los corre en servidors 2000 o 2003 amb ISS i .NET.

Per ampliar més informació us recomano la web de Phalanger és força completa i té molta documentació si algú proba mai el compilador que m’avisi ja que hi estic molt interessant però em suposaria molta feina provar-lo amb la infraestructura que tinc montada ara mateix. A més no tinc ni idea de .NET.

Scroll to Top