Reflexions de la primera DrupalcampSpain

2 març 2010 per Ramon Vilar Gavaldà

Aquest cap de setmana passat fou la primera DrupalcampSpain, i tal i com va dir el meu amic Robert:

Ha estat la millor DrupalcampSpain que s’ha fet fins ara.

Bromes a part, han estat uns dies intensos, plens de conferències, xerrades informals entre passadissos, plens de networking i en definitiva, plens de gom a gom de Drupal. Al final l’assistència fou tot un èxit (es calculen unes 375 persones vingudes de tot el món, encara que principalment de l’estat o més específicament, del país) i la qualitat de les xerrades fou força bona.

Tot seguit faig un petit resum del meu pas durant els tres dies:

Divendres 26 – Presentació i primeres xerrades

Només arribar al Citilab, i fer el registre, ja et donaven una bossa plena fins dalt de merxandatge, una samarreta de la Drupalcamp, una enganxina i un programa dels tres dies (amb això ja vaig preveure que la cosa anava en serio). Després de fer les primeres xerrades amb en Robert, en Pedro, en Conrad i en Jaume, i de menjar una mica, vaig entrar a l’auditori per veure la sessió inaugural: tot un espectacle que donava a entendre que allò seria una cosa gran!

Després d’això, tocà anar a la sessió anomenada “Spaces/Context/Features/Purl. Qué es y cómo se come?“: una exposició força interessant de què són aquests 4 mòduls i on vaig veure que algun d’aquests era precisament el que jo estava buscant des de feia molt de temps.

Tot seguit, a la mateixa sala em vaig quedar a escoltar la sessió “Unit testing & Integration testing. Implementación en Drupal” on s’explicà una mica el tema de tests però no pas com jo m’esperava ni al nivell que es preveia. Tot i així, alguna cosa en vaig treure de bo i ho tinc apuntat com un tema a estudiar en breu.

Una vegada acabada la sessió, cap a casa que al dia següent tocava una jornada llarga.

Dissabte 27 – El dia llarg

Dissabte fou el dia estrella de la Drupalcamp: 21 conferències programades, desenes de xerrades informals improvisades, la fira de treball i el sopar de la nit.

A primera hora, i només arribar, tocà la sessió “Ecommerce para Drupal: Introducción a Ubercart” d’en Pedro, on explicà com començar una botiga electrònica amb Ubercart des de l’inici, a més a més, de solucionar algunes de les preguntes que em rondaven pel cap. Una de les millors sessions que vaig assistir, no tant pel que vaig aprendre jo, sinó pel que crec que va aprendre l’auditori sencer, ja que s’explicava molt bé, ordenadament i de forma clara i directa.

Tot seguit, l’equip català de traducció del Drupal varem fer una xerrada informal per a organitzar-nos, veure’ns les cares i en definitiva, poder llançar-nos en la traducció del Drupal d’una forma més ordenada i amb una gran qualitat associada. Personalment, en vaig sortir molt content tot i que amb deures pendents ;)

Una vegada acabada, i havent esmorzat, me’n vaig anar a la xerrada de “Open Atrium para la gestión de proyectos“. Feia temps que volia saber una mica d’aquest nou producte i amb la xerrada buscava veure quin ús se’n feia i per on anava la cosa encaminada. Alguna conclusió en vaig treure.

Tot seguit fou la fira de treball. Jo vaig anar a veure que es coïa, i després de donar un parell de voltes i escoltar què es proposava, vaig acabar xerrant amb el meu amic Robert sobre drupal.cat i d’altres temes.

Per la tarda, i havent dinat, li tocà al torn a “Drush Make y Feature Server” una xerrada molt més que interessant i de la que vaig aprendre’n molt, sobretot de la primera part. Ja tinc apuntat aquest tema per profunditzar-hi de debò en les properes setmanes.

Després, li tocà el torn a “Building Maps with OpenLayers in Drupal“, la única xerrada en anglès a la que vaig assistir. Personalment, pensava que seria una altra cosa, però mira, al cap i a la fi, vaig practicar el meu anglès i vaig veure com anava el tema de mapes en Drupal, que també és força interessant (i complex!).

Per acabar el dia, i ja de baixada, vaig assistir a “Programación con la API de views. Un caso práctico“, una xerrada que segons el títol semblava que anés per una banda, però al final fou per tot el contrari. Un tema molt interessant, encara que crec que l’exemple que van proporcionar no fou dels més clars que podien haver posat.

Diumenge 28 – Darreres xerrades i clausura

El matí de diumenge ja es notava la ressaca en l’ambient.

La primera xerrada a la que vaig assistir, fou “Construyendo el futuro: Distribuciones y Productos basados en Drupal“. Quan vaig decidir assistir-hi, pensava que no sortiria tan interessat i amb tantes preguntes al cap. La xerrada que més m’ha donat a pensar de tot el cap de setmana i una que en comptes d’explicar, el que feia era plantejar-nos preguntes, que poc a poc, i guiats, varem anar responent. La conferència tractà de la línia que segueix Drupal (on som, cap a on volem anar, què ens espera al futur), de quines necessitats tenen els diversos col·lectius associats (usuaris, desenvolupadors, integradors) i de quin rumb està prenent tot el món que envolta aquest programari (productes i serveis). Molt més que interessant.

Sortint de la xerrada, i amb la sang que em bombejava al cap de totes les preguntes que hi tenia, vaig entrar a “Plantillas, como tomar el control sin perder (mucho) pelo en el intento“. Una xerrada d’iniciació al món de les plantilles però sense entrar en res tècnic. Personalment, crec que hi faltà un últim ingredient, però tot i així, per a la gent que començava, suposo que no va estar gens malament.

I per acabar amb les xerrades, vaig assistir a “Iniciación a Skinr” per voler saber una mica més d’aquest mòdul. Personalment, crec que té una aplicació força reduïda en el món de les webs (tal i com es coneixen) però que sí que pot entrar una mica més en entorns on es necessiti poder donar a l’usuari la capacitat de personalització de diversos elements de la pàgina; encara que crec que a aquest mòdul encara li queda una maduració per arribar al nivell que s’espera d’ell.

Doncs bé, per acabar de tancar els tres dies, li tocà el torn a la sessió de clausura. Un moment de rialles, reflexions i molt bon rotllo. Se sortejaren diversos llibres (que no me’n tocà ni un :( ) i es feu un petit anàlisi dels tres dies. Personalment, crec que ha estat tot un èxit i espero que l’any vinent hi hagi molt més i molt millor (si és que es pot)! Per acabar, només dir que tot això no hagués estat possible sense la super colla de voluntaris que varen fer tot el possible perquè tot això fos el que va ser! Gràcies a tots!!

Què m’emporto de la Drupalcamp Spain 2010?

  • Un munt d’experiències i nous coneixements.
  • Un llistat de temes per estudiar i aprofundir.
  • Dues xapes: una de Development Seed i una altra d’Open Atrium.
  • Dues samarretes: la de regal i una ben xula que vaig comprar.
  • Uns quants quilos que he engreixat del munt de menjar boníssim que hi havia.
  • Una bona estona de networking.
  • I en definitiva, tot un món per a seguir investigant

Validacions de formularis: a client o a servidor?

11 febrer 2010 per Ramon Vilar Gavaldà

Els que ens dediquem a sistemes client-servidor, més específicament, a sistemes basats en web,  sovint ens trobem amb la necessitat de construir formularis que executin accions a partir d’una entrada. És ben normal, que un client o un funcional proclami:

  • Vull que el número d’identificació sigui obligatori!
  • El correu electrònic ha d’estar en el format correcte!

O altres típics requeriments que requereixin de fer una validació del formulari.

Davant d’aquest escenari, el primer que ens ve al cap és fer les validacions amb JavaScript a la capa client. Bé, no està malament. Fer les validacions a la capa de client, és ràpid en temps de computació, senzill (normalment) i proporciona una resposta ràpida a l’usuari, fet pel qual assegurem una bona experiència d’usuari mentre introduïm dades. Una de les primeres normes de la usabilitat a formularis és: com més aviat sàpiga l’usuari que s’ha equivocat, més aviat podrà reaccionar-hi (compte amb la interpretació d’aquesta frase made-by-me!). Però mai hem d’acabar aquí!

Fer les validacions només a la capa client és una decisió completament errònia. On de debò s’han de fer aquestes comprovacions és a la capa servidor. Allà és on s’ha de mirar si cert camp existeix, si el format de tal camp és el correcte, de si la relació entre dos camps és correcta, etc. És a la capa servidor on tot aquest algorisme s’ha d’executar per prevenir qualsevol error que pugui tenir l’aplicació. És allà on s’executa la lògica de l’aplicació i on les validacions, com part d’aquesta lògica que són, s’han d’executar. Si només ho féssim a client, què passaria si no tinguéssim disponible el JavaScript? Quin seria el comportament de l’aplicació? Possiblement, acabéssim en un estat d’inconsistència no desitjat per ningú.

Sovint quan es planteja aquest argument (validacions dobles a capa client i servidor), molts arquitectes d’aplicacions (remarco la paraula perquè és el títol que es posen ells, no el que els hi posaria jo) posen el crit al cel i diuen la del porc argumentant que s’està fent una tasca dues vegades i que el rendiment de l’aplicació en general es veu ressentit. Si alguna vegada us trobeu davant d’això, només heu de dir:

D’acord, llavors, les validacions que es facin només a la capa de servidor!

Veureu com els hi canvia la cara ;)

Cal tenir ben presents quines són les implicacions de deixar un processament de dades a una capa tan fràgil com pot ser un navegador, i la nostra tasca és argumentar i deixar ben clar el per què a client no és lloc per fer aquest tipus de processament.

Tingueu aquest consell sempre ben present perquè segur que al llarg de la vostra vida professional us caldrà utilitzar-lo més d’un cop.

DrupalcampSpain 2010: Barcelona

11 gener 2010 per Ramon Vilar Gavaldà
Logotip de la DrupalcampSpain 2010

Logotip de la DrupalcampSpain 2010

Els propers dies 26, 27 i 28 de febrer es durà a terme al Citilab de Cornellà la primera Drupalcamp de l’estat, l’esdeveniment del món drupaler més gran de la península.Durant aquests tres dies es duran a terme diverses xerrades, tallers, xerrades informals (anomenades BOFs), a més a més, de ser un lloc únic per a poder augmentar el nostre networking drupaler amb gent propera. Igualment, servirà com a lloc per a poder contactar entre diverses empreses i professionals per tal d’iniciar possibles col·laboracions o simplement, per intercanviar punts de vista i experiències.

Com no podia ser menys, jo ja m’he inscrit (els primers 50 tenien un descompte de 10€ i calia aprofitar-lo), i per tant, hi seré, a poder ser, els tres dies. Igualment, he proposat una sessió sobre com traduir Drupal de forma correcta i ordenada (actualment hi ha una mica de merder al voltant d’aquest tema). A més a més, em ronda pel cap proposar una sessió sobre integració de maquetes HTML+CSS+JS a Drupal, cosa que mai he trobat informació i exemples precisos sobre un cas pràctic.

Doncs bé, si teniu cap proposta sobre alguna cosa que us agradaria saber sobre Drupal, digueu-ho i intentarem trobar algú que ho pugui explicar en una sessió.

Comprovacions de l’existència d’una variable a JavaScript

21 desembre 2009 per Ramon Vilar Gavaldà

Quan programem amb JavaScript (o qualsevol altre llenguatge de scripting) és normal haver de fer comprovacions de l’existència d’una variable dins de l’espai de noms.

Si necessitem saber si una variable ha estat declarada però sense valor assignat, podem comparar-la amb el “valor” undefined. Així podem veure:

var x;
// x === undefined retornaria cert
x = 5;
// x === undefined retornaria fals

Però si el que de debò volem fer és comprovar si aquesta variable ha estat definida en algun punt del script, no podem fer aquesta comprovació, ja que al intentar cercar el símbol “x” a la seva taula de noms, ens donaria un error de referència. Llavors, podem fer-ho o no? La resposta és sí! Només cal comprovar el seu tipus: si no té un tipus definit, vol dir que no està definida dins la taula de noms. Total, que podem fer:

// typeof(y) === undefined retornaria cert
var y;
// typeof(y) === undefined retornaria fals

I ja per acabar amb nota: com fer per saber si certa variable està definida directament en l’àmbit global de l’script? Doncs bé, com bé sabem, qualsevol variable definida a l’espai global, està també definida com un camp de l’objecte global. Llavors, els que ens dediquem a la programació web, i per tant tenim l’objecte window com a objecte global, podem fer la comprovació:

window.z === undefined
// retornaria cert si la variable z no ha estat definida

Doncs res, aquest ha estat el truc del dia. Espero que us sigui útil!

JavaScript. The Definitive Guide

17 novembre 2009 per Ramon Vilar Gavaldà
Portada del llibre Javascript. The Definitive Guide

Portada del llibre Javascript. The Definitive Guide

Si alguna vegada esteu interessats en comprar un llibre sobre un llenguatge de programació i descobriu que un autor anomenat David Flanagan n’ha escrit un, no us ho penseu més: agafeu-lo. No tinc el plaer de conèixer-el en persona, però el que us puc ben assegurar és que aquest home, abans d’escriure res sobre un tema, ho estudia tot. I això us ho puc ben assegurar perquè no és pas el primer llibre que llegeixo d’aquest home i me n’adono de la minuciositat en que descriu un concepte o com va esfilagarsant un tema fins a deixar-lo tot explicat i ben explicat sobre paper.

El llibre que ens ocupa, JavaScript. The Definitive Guide, és per definició, el llibre de lectura obligatòria si volem intentar conèixer de debò aquest llenguatge de programació. Aquest llibre ens demostra que JavaScript no és, com la gent pensa, un llenguatge de programació només per la web i que només serveix per a validar formularis, fer menús desplegables i fer que la meva pàgina sigui més molona. No! JavaScript, i més d’un se sorprendrà al llegir això, és un dels llenguatges de programació més difícils i complexes que existeixen. Tampoc us espanteu, sinó que aquest llenguatge de programació amaga més d’una sorpresa, i fins que no llegeixes un llibre on s’explica tot amb pèls i senyals, no te n’adones de fins a on arriba el seu potencial.

Aquest llibre, com el seu nom indica, vol ser la guia definitiva de JavaScript, i sota el meu punt de vista, ho compleix sense cap tipus de dubte. La seva lectura, salvant la barrera inicial de ser un llibre de quasi bé un miler de pàgines escrites en anglès, es fa molt amena, avançant per tots els conceptes del llenguatge d’una forma natural i seguint un guió gens qüestionable, que ens durà, a través de centenars d’exemples, a comprendre parts completament desconegudes per molts.

Només mirant el llom interior del llibre, podem veure que aquest es divideix en quatre parts; encara que el llibre tracta només amb dos grans temes:

  • La primer part, anomenada Core JavaScript, tal i com el seu nom indica, explica el nucli del llenguatge amb un detall excepcional. En aquesta part podem trobar els següents capítols:
    • Lexical Structure
    • Datatypes and Values
    • Variables
    • Expressions and Operators
    • Statements
    • Objects and Arrays
    • Functions
    • Classes, Constructors, and Prototypes
    • Modules and Namespaces
    • Pattern Matching with Regular Expressions
    • Scripting Java
  • La segona part, anomenada Client-Side JavaScript, se centra més en el navegador com a plataforma de desenvolupament d’aplicacions en JavaScript. Hi podem trobar:
    • JavaScript in Web Browsers
    • Scripting Browser Windows
    • Scripting Documents
    • Cascading Style Sheets and Dynamic HTML
    • Events and Event Handling
    • Forms and Form Elements
    • Cookies and Client-Side Persistence
    • Scripting HTTP
    • JavaScript and XML
    • Scripted Client-Side Graphics
    • Scripting Java Applets and Flash Movies
  • La tercera part, anomenada Core JavaScript Reference, és una referència completa de totes les classe, objectes, mètodes, propietats i demés del nucli del llenguatge definits per JavaScript 1.5 i ECMAScript versió 3.
  • La quarta part, anomenada Client-Side JavaScript Reference, és una referència de tots els elements que podem trobar dins d’aquest tema, des de DOM (nivell 1, 2 i 3), canvas, etc.

Què, te’l compres? T’he convençut? Fes-ho, veuràs com em dones la raó de que és un llibre d’aquells que s’han de tenir sempre a mà.