Arxiu de Programació

D’un sistema monolític a un basat en microserveis

// maig 31st, 2016 // No hi ha comentaris » // Programació

Últimament, per coses de la feina, he estat llegint més sobre sistemes que funcionen sobre microserveis enfrontat a sistemes monolítics.

La veritat és que s’ha parlat molt últimament sobre el tema, i hi ha un grapat de xarrades i articles molt interessants al respecte.

Martin Fowler ens parla en aquesta sobre què són els microserveis, i alguns dels seus principals avantatges i inconvenients front a sistemes monolítics. És una molt bona introducció si, com em passava a mi, tens alguns dubtes de què són (o, millor dit, què entén la gent per) microserveis.

En aquesta altra, una miqueta més llarga, Chad Fowler parla d’un exemple concret de migració d’un conjunt d’aplicacions basat en un sistema monolític (Wunderlist, una aplicació de llistes de tasques que potser coneixeu). És força interessant veure com han muntat tota l’arquitectura que gestiona els milions i milions d’usuaris de Wunderlist en una arquitectura totalment basada en microserveis.

En un moment d’aquesta última xarrada, Chad fa una frase que m’ha fet molta gràcia, perquè m’ha recordat al que em passa cada vegada que mire gairebé qualsevol fitxer de codi (tant siga d’una altra persona com meu):

We really really suck, we’re really bad at delivering software projects. And then when we do, we deliver crap.

Fem pena, som realment dolents a l’hora de produir projectes de software. I quan ho fem, entreguem porqueria.

Chad Fowler

 En definitiva, diuen que una imatge val més que mil paraules:

Comparativa d'un sistema monolític a un basat en microserveis

Comparativa d’un sistema monolític a un basat en microserveis – Imatge d’Álvaro Sanchez

I una altra extensió per al WordPress: XV Random Quotes

// agost 19th, 2015 // No hi ha comentaris » // Programació

XV Random QuotesJa feia temps que ho tenia a la llista de coses pendents: “netejar” l’extensió que utilitze per a mostrar una cita a la barra lateral (i també la pàgina més vista d’aquest lloc, la de cites) i publicar-la al repositori d’extensions de WordPress.

La idea realment és més gran: estic intentant “netejar” totes les extensions que tinc instal·lades i que tenen algun error, bé perquè noves versions de WordPress o PHP han modificat les API o bé perquè simplement tenen bugs. Amb eixe ànim vaig començar a col·laborar amb MonthChunks (on les últimes versions ja les he publicat jo sol), i ara continue amb altres extensions.

En aquest cas concret, es tracta d’una extensió que s’anomenava originalment Random Quotes, que després d’estar abandonada va ser represa per un altre desenvolupador sota el nom Stray Quotes i finalment, després d’un nou abandonament, un altre anomenat Stray Quotes Z.

I ara rep un nou nom: XV Random Quotes. La part de Random Quotes és evident: es tracta d’una extensió que permet desar cites i mostrar-les de manera aleatòria (tot i que també les pots mostrar com vulgues). I la part de XV (que ve de Xavi, no de XV en números romans) vull utilitzar-ho com a “prefix” de les diverses extensions que vaja publicant en el futur, com una mena de “marca” personal. Respecte al logo, el senyor Mario Santacreu ha tingut a bé crear-ne un per a l’ocasió 🙂

Aquesta extensió, ara mateix, és funcional, però necessita moooooolta feina: el codi és caòtic, i cada vegada que òbric qualsevol fitxer del codi font m’agarren ganes de tirar-la al fem. A més, l’extensió fa moltes coses que no utilitze, i possiblement eixa siga una manera de fer-la més senzilla: eliminar funcionalitats. Per eixe motiu, és possible que futures versions de l’extensió tinguen alguna característica menys de les que té ara. Siga com siga, espere poc a poc anar millorant la qualitat i la legibilitat del codi, tant per a simplificar el manteniment per la meua part com també per a facilitar que altra gent s’involucre amb el desenvolupament.

També tinc intenció d’aprofitar aquesta extensió com a “banc de proves” per a utilitzar eines que faciliten el desenvolupament en un llenguatge de programació que no destaca per ser massa agraït: PHP. Proves d’unitat amb PHPUnit, integració continua amb Travis…

Com deien els obrint pas, tot un món per descobrir 🙂

 

Monthchunks, col·laboració en el desenvolupament d’una extensió de WordPress

// gener 10th, 2015 // 1 comentari // Programació

Fa ja molts anys que sóc usuari de WordPress com a gestor de continguts. Des que l’any 2006 (ja fa més de 8 anys!) migrara el meu blog de Pivot a WordPress, he anat millorant el meu coneixement sobre el CMStunejant els temes que he tingut al blog o a altres pàgines (com Infobenissa, o el blog de la meua germana o Softvalencià, per exemple), he participat en la traducció tant de WordPress com d’algunes extensions, reportat alguns errors upstream (algunes de les quals no s’han resolt encara) i també he modificat/desenvolupat algunes extensions. Però açò últim sempre ho havia fet de manera privada, quedant-me per a mi l’extensió (o la millora a una existent). Fins a que l’estiu passat em vaig decidir a començar a posar ordre a gran part del codi que tenia escampat per tot arreu.

Una de les primeres extensions que havia modificat s’anomenava “Monthchunks“, de Justin Watt. Es tracta d’una extensió que genera una versió minimalista dels arxius del blog, que es troben habitualment a la barra lateral. Amb aquesta extensió, s’aconsegueix que l’espai utilitzat per tots els enllaços siga molt inferior al llistat estàndard de WordPress.

Llista estàndar dels arxius del blog

Llista estàndar dels arxius del blog

Llista dels arxius del blog de Monthchunks

Llista dels arxius del blog de Monthchunks

Vaig fer dues modificacions, la primera permetia posar abreviatures dels mesos en lloc de les opcions existents fins aquell moment (números del mes i primera lletra del mes). Després, vaig afegir l’opció de poder posar, en temes “moderns” de WordPress, els arxius a la barra lateral sense necessitat d’haver de modificar el codi de la plantilla, sinó a través d’un giny de WordPress. A més, també he afegit la possibilitat de localitzar el plugin, i la traducció al valencià.

I aquesta setmana, després de molt insistir, he aconseguit que els canvis s’integraren al repositori de l’extensió, i que Justin publicara la tercera versió del plugin. Així, de manera automàtica, les mil persones que tenen l’extensió instal·lada, han rebut la nova versió amb les millores. Al mateix temps m’ha afegit com a autor de l’extensió a WordPress.org, de manera que en el futur faig alguna altra millora, no hauré d’esperar mesos en que es publique.

Tots eixim guanyant: jo, perquè aconseguisc tindre unes modificacions integrades en l’extensió, de manera que a cada nova actualizació no les hauré de tornar a aplicar. La resta de la gent que utilitza el plugin, perquè tenen noves característiques de manera automàtica. I Justin, perquè aconsegueix algú que l’ajude a mantenir les extensions actualitzades.

I així és com llueix al meu blog

Monthchunks al Racó de Xavi

Monthchunks al Racó de Xavi

Visca el programari lliure!

WTF! per minut

// novembre 12th, 2012 // No hi ha comentaris » // Programació

He començat a llegir-me el llibre Clean Code, the Robert C. Martin, a vore si aprenc d’una vegada a programar per a millorar el meu codi. I gairebé només començar, m’he trobat amb esta imatge que m’ha fet molta gràcia.

Habitualment, intente que el meu codi estiga darrere la primera porta, però no puc negar que hi ha vegades que està, segur segur, darrere de la segona.

WTF! per minut

Font: WTFs/m, OS News

Llançament d’Infobenissa per a Android

// agost 19th, 2011 // No hi ha comentaris » // Internet, Programació

 

Infobenissa per a Android

Infobenissa per a Android

La setmana passada vaig publicar la meva primera aplicació per a Android. Es tracta d’una aplicació per a Infobenissa des de la que accedir d’una manera més còmoda des del mòbil a la informació de Benissa.

Es tracta d’una aplicació, de moment, molt senzilla, ja que només permet accedir als titulars de les últimes notícies publicades, amb enllaços directes a cadascuna d’elles.

No obstant, la meva intenció és anar poc a poc afegint funcionalitats a l’aplicació, així com alliberar el codi font sota una llicència lliure. També he creat una pàgina que servirà per recollir tots els avanços en l’aplicació: Infobenissa per a Android.

Els booleans…

// febrer 2nd, 2010 // No hi ha comentaris » // Cites, Miniposts, Programació

El que tenen bo els booleans és que, encara que t’equivoques, estàs a només un bit de la solució correcta.

Anònim

“Parameter substitution” en BASH…
... no haver-ho conegut abans!

// octubre 29th, 2009 // 3 comentaris » // Linux, Programació

Aquesta és una entrada molt específica de programació

No fa molt vaig descobrir la substitució de paràmetres en bash, i la veritat és que és una eina increïble que evita usos de sed, awk, o cut quan realment no fa falta.

A continuació reproduïsc una llista que he trobat a “BASH Cures Cancer“, un blog que pretén explicar les bondats del BASH per als Linuxers.

  1. Les variables es poden especificar de dues formes: $var o ${var}.
    $ var='a.ads,fssd2342%asd234#@.,&%,sdfgsdfgas4352'
    $ echo ${var}
    a.ads,fssd2342%asd234#@.,&%,sdfgsdfgas4352
  2. ${#var} és la llargària de la variable.
    $ echo ${#var}
    42
  3. ${var:pos} genera una subcadena començant en la posició pos.
    $ echo ${var:10}
    2342%asd234#@.,&%,sdfgsdfgas4352
  4. ${var:pos:len} genera una subcadena començant a en la posició pos d’una llargària len.
    $ echo ${var:10:5}
    2342%
  5. ${var#pattern} esborra el patró pattern començant pel principi de la variable. Aquesta versió para només troba l’expressió regular. ${var##pattern} és la versió extesa.
    $ echo ${var#*,}
    fssd2342%asd234#@.,&%,sdfgsdfgas4352
    $ echo ${var##*,}
    sdfgsdfgas4352
  6. ${var%pattern} elimina el patró pattern començant pel final de la variable. Aquesta versió para només troba l’expressió regular. ${var%%pattern} és la versió extesa.
    $ echo ${var%,*}
    a.ads,fssd2342%asd234#@.,&%
    $ echo ${var%%,*}
    a.ads
  7. ${var/pattern/replacement} substitueix l’expressió regular pattern amb replacement una vegada.
    $ echo ${var/a/A}
    A.ads,fssd2342%asd234#@.,&%,sdfgsdfgas4352
  8. ${var//pattern/replacement} substitueix l’expressió regular pattern amb replacement de manera global.
    $ echo ${var//a/A}
    A.Ads,fssd2342%Asd234#@.,&%,sdfgsdfgAs4352
  9. ${var/#pattern/replacement} si l’inici de la variable és com el patró pattern, es substitueix per replacement.
    $ echo ${var/#a./llll}
    llllads,fssd2342%asd234#@.,&%,sdfgsdfgas4352
  10. ${var/%pattern/replacement} si el final de la variable és com el patró pattern, es substitueix per replacement.
    $ echo ${var/%352/llll}
    a.ads,fssd2342%asd234#@.,&%,sdfgsdfgas4llll

Segur que aquells que utilitzeu el shell habitualment i no coneixieu açò, li podeu traure molt de profit.

Renovació d’Infobenissa…
... o ara o mai

// agost 14th, 2009 // 9 comentaris » // Internet, Personal, Programació

Ja fa mooooolt de temps que Joanba i jo anunciem una renovació total a Infobenissa. A l’entrevista que ens van fer al Levante allà pel 2006, quan “la idea”  complia 5 anys, i Infobenissa en sí 3, ja ho donàvem per fet. I des d’aleshores ha plogut molt. Però ara ja podem dir, per fi, que la renovació està en marxa.

Al principi volíem fer un canvi total de la web, i arrancar la versió 2 amb moltíssimes novetats, característiques trencadores, molt 2.0 tot. Però ara, més realistes, hem optat per fer el canvi més gros, la part visual, i poc a poc anar incorporant les novetats. Perquè aquesta serà l’única manera en que l’esperada Infobenissa 2.0 arribe.

El disseny base ja està fet, i ara ja estem adaptant-lo i programant les funcionalitats (notícies, la cambra, calendari…) que volem.

A tots aquells que insistentment ens heu preguntat com anava la nova versió, o per a quan (bàsicament, Òscar :D), dir-vos que li falta ben poc. No sé si atrevir-me a donar dates, però quasi asseguraria que abans de l’aniversari  (el 9 d’octubre) estarà tot llest. La meua idea és tindre-ho tot a punt a principis de setembre, i durant uns quants dies anar fent proves i acabant de polir detalls que no ens agraden.

I ara és quan vos demane ajuda: quines coses noves afegiríeu a Infobenissa? Nosaltres en tenim ja algunes planificades (algunes de les quals ja programades i tot), però els suggeriments mai sobren.

PD: No proposeu el fòrum, que prou maldecaps ens ha portat ja, jejeje.

WP-Apertium 0.9

// juliol 9th, 2009 // 3 comentaris » // Internet, Llengua, Programació

Ahir per la vesprada pujar a l’SVN d’Apertium els últims canvis de la versió 0.9 de WP-Apertium, l’extensió per a WordPress de què ja he parlat altres vegades.

Aquesta versió porta algunes novetats respecte a la versió anterior. La més significativa és que ha canviat la manera de recuperar les traduccions. Amb la 0.8, totes les traduccions s’escrivien al document, però ara amb la 0.9 es recuperen amb AJAX, de manera que no hi ha textos en diversos idiomes al codi font de la pàgina. A més, també soluciona un problema que hi havia de multiplicitat d’ID (si algun element HTML del contingut de l’entrada tenia ID, aquest es repetia tantes vegades com traduccions hi havia).

Respecte als anuncis AdSense que hi poguera haver dins del contingut de l’entrada, no he pogut resoldre les incompatibilitats. Si amb la versió 0.8 el que passava és que apareixia moltes vegades (i, per tant, era possible que no es veiera pel màxim de blocs d’anuncis que marca Google) amb la 0.9 directament es queda la pàgina en blanc quan es demana una traducció. Així que, si voleu utilitzar WP-Apertium, no poseu AdSense dins de les entrades (a la resta de la pàgina no hi ha problema).

Finalment, he implementat també un xicotet detall per a aquells que no tinguen habilitat el Javascript, i que apropa el plugin a aquells que permeten llocs multilingües: es pot accedir directament a traduccions de les entrades. Per exemple, des d’aquest enllaç podreu accedir a la versió en castellà de l’apunt, i des d’aquest altre a la versió en occità. Amb una bona interfície de post-edició, i amb re-escritura de les URLs, WP-Apertium passaria per davant a plugins com ZdMultilang.

Queden alguns xicotets detalls per resoldre, com què fer quan a l’entrada hi ha un <!–more–>, però això serà per a la propera versió.

Una altra decissió que he pres ha sigut el tema dels números de versions. Quan vaig publicar la primera versió la vaig anomenar 0.8. La meva idea original era resoldre uns pocs detalls en una futura 0.9 i passar a una versió estable 1.0. Com que venia del treball previ d’Enrique, i el plugin funcionava bé, no era massa destrellatat. Però els problemes que vaig detectar (en la indexació des dels cercadors, amb el tema dels IDs…) van fer que la 0.9 fóra més complexa del que esperava.

A partir d’ara, la numeració de les versions serà un poc diferent. El primer canvi és que no passaré a la versió 1.x fins que no hi haja una API estàndar d’Apertium, de manera que es puguen obtenir les traduccions des de la pàgina d’Apertium d’una manera normal mitjançant peticions REST – JSON o XML – definides i documentades per part del projecte Apertium (i no tal i com es fa ara, enviant una petició POST al formulari de traducció de documents). Eixa és una de les coses que s’espera aconseguir amb el GSOC d’enguany. Així, les properes versions seran totes 0.x, amb noves funcionalitats a cada versió.

El proper repte és resoldre l’assumpte del <!–more–> i fer un panell d’administració per a l’extensió, de manera que no s’haja d’editar a ma un fitxer per a configurar coses com l’idioma per defecte, les traduccions a generar, etc.

I, com no, demanar ajuda a tots aquells usuaris que utilitzeu l’extensió (que sé que no seran molts, però més val pocs i bons…). Feu comentaris, suggeriments, avisos d’errades, i tot el que vos vinga al cap. S’agrairà 😉

Comment-author-link Repair, nou plugin per a WordPress

// gener 27th, 2009 // No hi ha comentaris » // Programació

A partir del comentari de Xavier Caballé a l’entrada sobre el Google Analytics i els errors 404, he fet una xicoteta anàlisi de les pàgines que li tornen un error 404 al Googlebot, segons les Google Webmaster Tools.

I, a part d’alguns enllaços que encara estaven apuntant a les URL de quan el blog funcionava amb Pivot, he trobat un parell d’errors que seguien un patró. Apuntaven a diverses pàgines del meu blog, i tenien com a característica que acabaven amb ‘ rel=’external nofollow. Què passava? Doncs que des d’algun lloc s’estava enllaçant cap a aquestes pàgines amb alguna cosa com

<a href="http://xavi.ivars.me/algo' rel='external nofollow">enllaç</a>

en lloc de

<a href="http://xavi.ivars.me/algo" rel="external nofollow">enllaç</a>

Pareu atenció amb les cometes simples en el primer cas, i dobles en el segon.

A més, tots els enllaços eren del blog d’Òscar, o siga que el problema era seu 😀

Com que no sabia exactament d’on podia recaure el problema, però era evident que no era ni a l’enviar jo els pingbacks, ni del tema que gasta Òscar al blog (ho he comprovat), he pensat que el problema venia amb la funció comment_author_link() del WordPress.

Així que m’he posat mans a l’obra, i en un momentet tenia un “mini-plugin” per a resoldre-ho: l’he anomenat Comment-author-link Repair, i ací està el codi, per si a algú li interessa.

<?php

/* Plugin Name: wp-calr - Comment-author-link Repair
Plugin URI: http://xavi.ivars.me/utilitats/comment-author-link-repair/
Description: This plugin will repair single quote problem on some pingbacks
Version: 1.0
Author: Xavi Ivars
Author URI: http://xavi.ivars.me
*/

function comment_author_link_repair($link)
{
	$link = preg_replace("/' rel='external/","\" rel=\"external", $link);
	return $link;
}

add_filter('get_comment_author_link', 'comment_author_link_repair');

?>