Arxiu de Programació

Errors 404 i Google Analytics

// gener 26th, 2009 // 4 comentaris » // Programació

L’altre dia vaig estar pensant en les coses que em faltava per implementar en aquest blog, i que m’agradaria tindre “controlades” en certa manera. I em van vindre al cap els errors 404 (els famosos de que no s’ha trobat la pàgina).

Tot i que mostrava l’avís de que la pàgina no s’havia trobat, i a més l’avis estava “integrat” al tema, després jo no podia saber quines pàgines havien presentat problemes als lectors del blog. Així que, en un primer moment, em vaig posar a fer el que fem tots els usuaris de WordPress: tirar de plugins per afegir funcionalitats.

I en vaig trobar un que era quasi el que volia: 404 notifier. Aquest plugin detecta els errors 404 que s’han produït al blog, informant de quines pàgines

Però aquest plugin té una cosa que el feia terrible per a les meues necessitats: els avisos de pàgines 404 els envia al correu electrònic. I no reb ja prou coses per correu electrònic (estic subscrit a una infinitat de llistes de correu a les que, poc a poc, vaig demanant la baixa)!

Perquè no intentar que les coses siguen com un vol? Jo, en aquest cas, volia “poder saber quins són els errors 404 del blog”, i no “saber quins són els errors 404 del blog”. La diferència eixa entre “poder saber” i “saber” és importantíssima, sobretot en aquesta “era de la informació”, on ens trobem saturats per dades que, la majoria de vegades, ni necessitem.

Així que em vaig posar “manos a la obra”. Vaig començar a buscar per internet i vaig trobar una bona entrada en un blog on contaven com utilitzar el Google Analytics per a analitzar els missatges d’error produïts al WordPress. Si bé és cert que d’aquesta manera només es podran gestionar les visites fetes per lectors amb el javascript activat (com la resta d’estadístiques de l’Analytics) ens pot servir prou com a base per a veure per on se’ns estan escapant els lectors.

I la questió va resultar ben senzilla: només calia modificar la URL que registra l’analytics quan entra a una pàgina del blog que no existeix per una altra que siga senzilla de controlar després. Després de pegar-li algunes voltes, vaig optar per reescriure les URLs que donen error per “/404/url-original/”, de manera que una petició a la pàgina http://xavi.ivars.me/aquesta-no-existeix/ es queda registrada al Google Analytics com a http://xavi.ivars.me/404/aquesta-no-existeix/.

Per a implementar-ho, només cal modificar a la pàgina 404.php del nostre tema.

<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-XXXXX-X");
pageTracker._initData();
pageTracker._trackPageview();
</script>

per

<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-XXXXX-X");
pageTracker._initData();
var xvurl = '/404' + document.location.pathname;
if(document.location.search!='') {
xvurl += document.location.search;
}
pageTracker._trackPageview(xvurl);
</script>

En el meu cas, com que no tinc pàgina 404.php, i tot es troba a l’index.php, havia de fer la substitució només en el cas de que es tractara d’un error 404. A fer això ens ajuda la funció de WordPress is_404()

<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-XXXXX-X");
pageTracker._initData();
<?php if(!is_404()) { ?>
pageTracker._trackPageview();
<?php } else { ?>
var xvurl = '/404' + document.location.pathname;
if(document.location.search!='') {
xvurl += document.location.search;
}
pageTracker._trackPageview(xvurl);
<?php } ?>
</script>

Manuals d’XML i XSL

// desembre 9th, 2008 // 1 comentari // Programació

Avui estava intentat fer unes xicotetes transformacions a un XML que representava un model d’una llengua representat en n-grames, per tal d’eliminar algunes de de les entrades, i obtenir el resultat ordenat per la quantitat d’aparicions del n-grama en qüestió.

Ací va un exemple de l’XML:


<?xml version="1.0" encoding="UTF-8"?>
<ngrams>
<entry length="0" string="" count="278402143"></entry>
<entry length="3" string="##a" count="3725333"></entry>
<entry length="2" string="ab" count="656482"></entry>
<entry length="3" string="aab" count="3561903"></entry>
<entry length="1" string="d" count="6075086"></entry>
<entry length="3" string="#ex" count="5940835"></entry>
<entry length="3" string="ai$" count="1035105"></entry>
<ngrams>

En concret, volia eliminar els n-grames de longitud 0 (que, per cert, no haurien d’estar al model original, però això és un altre tema) i tots aquells que contenen # o $ (indicadors d’inici i final de paraula respectivament). Després, el resultat volia mostrar-lo ordenat per nombre d’aparicions (paràmetre count).

Amb aquesta fulla d’estils he aconseguit el resultat que volia.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<ngrams>
<xsl:for-each select="ngrams/entry">
<xsl:sort select="@count" data-type="number" order="descending"/>
<xsl:if test="@length != '0'">
<xsl:if test="not(contains(@string,'#')) and not(contains(@string,'$'))">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:if>
</xsl:for-each>
</ngrams>
</xsl:template>
</xsl:stylesheet>

A més, com que no me’n recordava massa de XSLT (tenia falta ja de fer memòria), he buscat alguna cosa per internet, i m’he trobat una xulla (cheatsheet en anglés) a la pàgina de Mulberry Technologies molt útil per a l’ocasió. També l’he afegida a la secció de manuals d’aquesta web.

Conversor de nombres romans
... i nova secció!!!

// agost 13th, 2008 // No hi ha comentaris » // Programació

He afegit un nova secció a la web: la secció d’Utilitats. En ella aniré afegint algunes utilitats (principalment Javascript) que he anat desenvolupant per algun motiu o un altre.

La primera que he posat ha sigut un conversor de nombres romans a nombres aràbics i viceversa. El conversor detecta automàticament el tipus de nombre que s’ha introduït, i el converteix a l’altre tipus (de romà a aràbic i d’aràbic a romà).

Em va vindre al cap fer-lo fa un parell de dies, quan estava ajudant a Carlos a fer uns deures que li han manat a l’escola. Ara, ja és més fàcil fer les conversions 😛

A més, tot això m’ha permés trobar la manera d’incloure pàgines php personalitzades dins del WordPress, de manera que des del propi gestor de WordPress, puc fer noves pàgines d’eixe estil.

Espere que a algú li aprofite aquest conversor!

Amigos.tw …
... xorrades 2.0

// agost 6th, 2008 // 2 comentaris » // Internet, Programació

Està clar que pel món web 2.0 hi ha molts serveis xorra, d’eixos que dius: i això per a que aprofitarà???

Un d’ells, clarament, és el Twitter. Alguns l’anomenen microblogging, o lifestreaming, o ves-a-saber-tu-què. Es tracta (per als pocs que no ho sàpiguen) d’una plataforma on posar coses: principalment la resposta a la trascendental pregunta: què estàs fent ara?

Com no, jo com a bon friki, coincidint amb el curset de web 2.0 (i després de moltes insistències d’Òscar) em vaig obrir un compte.

I avuí, a través del twitter d’Óscar J. Baeza, m’he enterat de la nova xorrada 2.0: el Amigos.tw. Es tracta d’una web d’especulació i compra/venda de mascotes. I lo 2.0 és que aquestes mascotes són usuaris del twitter 😀 Segons el seu creador, en només 1 dia ha posat en marxa la web!!!

Així, en estos moments, sóc propietari de gent tan influent com Angel Maria Herrera, Andreu Buenafuente, Ricardo Galli, Javier Casares (el creador de Amigos.tw), Matt Cutts,… i també sóc propietari d’organismes i institucions com Softcatalà, Marbú i Microformats.

També he tingut durant un bon rato a Antonio Ortiz, Óscar J. Baeza, Kirai, mobuzz.tv, Evento Blog,…

Pel que em sembla, quan compres una mascota, pagues el 120% del seu valor: d’això, un 110% va a l’actual propietari, i el 10% restant a la pròpia mascota. Després de la transacció, el valor de la mascota també puja, i si no m’equivoque el seu valor augmenta un 10% (es queda en un 110% del que valia abans de comprar-lo).

Així, guanyes diners si et compren/venen, així com també venent mascotes que hages comprat prèviament. També hi ha una altra manera de guanyar diners: actualitzant la teva llista d’amics (1 vegada al dia, 10.000 twitees) i amb invitacions (5 al dia, 5.000 twitees cada una).

Ara, crec que no seria massa bon especulador jo… No tinc un duro en estos moments!!!

Amigos.tw 2008/08/06

LoremTools 1.0

// juliol 23rd, 2008 // No hi ha comentaris » // Mozilla, Programació

Avuí, segunt una proposta que em va fer dilluns Sergio Ortiz, m’he proposat modificar l’extensió que tenia feta per a copiar el text LoremIpsum al porta-retalls: lorem2clipboard. Sergio em va dir: “i per què no un lorem2focus? Estalviaria temps”.

I m’he posat mans a l’obra. Però en lloc de fer una extensió com em proposava Sergio, he millorat la meva.

Vos presente la versió 1.0 de LoremTools: una extensió que permet copiar el text LoremIpsum al porta-retalls (amb click esquerre) o directament al quadre de text amb focus/actiu (click dret).

Quién da más?

La podeu descarregar a la pàgina de l’extensió a ca Mozilla.

Planeta Marina Alta

// maig 14th, 2008 // 5 comentaris » // Internet, Llengua, Programació

Ja està ací!

El Planeta Marina Alta ha arribat!

Després d’alguns últims retocs, i gràcies al treball combinat d’uns quants blocaires (Carles Mulet, Miquel Soldevila, Òscar Piera, i jo mateix), ha nascut el portal de blogs de la Marina Alta, la MarinaAltaEsfera!

Òscar i Blai ja n’han parlat abans.

Planeta Marina Alta

Definint-se com “Els blogs personals en valencià de gent de la Marina Alta, País Valencià”, arriba als nostres ordinadors un punt des del qual es podrà llegir de manera centralitzada a tots els blocs de la comarca.

A més de la pàgina en si, he fet un xicotet widget per a poder posar-lo a totes les webs (siguen blogs, webs normals – estàtiques o dinàmiques -). Per fer-ho, només hem d’incloure aquestes línies al lloc on vulguem:

<script src="http://marinaalta.pikaspart.com/js/widget.js" type="text/javascript"></script> >script type="text/javascript"><!--
getWidget(10,'classes')
// --></script>
<div id="marinaaltawidget"></div>

A més, disposa de diverses opcions de configuració, tot modificant la cridada a la funció getWidget(), de les següents formes:

  • Opcions predeterminades
    • getWidget();
  • Especificar el número d’items
    • getWidget(numero_items);
  • Especificar el número d’items i estils predefinits
    • getWidget(numero_items,'estils');
  • Especificar el número d’items i classes CSS
    • getWidget(numero_items,'classes');

I res més, per a qualsevol cosa, aquest és un bon lloc per als comentaris!

EDITAT: Gràcies, Enrique! Ja m’estranyava a mi que ningú hagués entrat al planeta des de la meua pàgina, mirant les estadístiques del Google Analytics…

Comentar programes…
... i netejar el bany

// abril 18th, 2008 // No hi ha comentaris » // Cites, Miniposts, Programació

Comentar el codi és com netejar el bany; ningú vol fer-ho, però el resultat sempre és una experiència més agradable per a un mateixa i per als seus convidats.

Ryan Campbell

Els canvis que venen…
... només cal esperar un poc!!!

// febrer 27th, 2008 // 3 comentaris » // Internet, Política, Programació

Estic preparant novetats al bloc, el que vindria a ser “El racó de Xavi 2.0 3.0″. A més d’actualitzar-lo a les últimes versions de WordPress (la branca 2.2.x fa forats per tots els costats) comença a ser hora de fer un canvi en el tema.

Després de vora any i mig utilitzant WordPress com a gestor de continguts, només puc dir que estic més que satisfet del funcionament que té i, sobretot, de la gran comunitat que hi ha darrere. Pensant-ho millor, tenint en compte que abans funcionava amb Pivot, aquesta serà la 3a versió del bloc.

El que és el nou disseny està a mig enllestir. Només puc avançar que es tracta d’un tema més senzill, més “net” que l’actual, tot i mantenir algunes de les característiques que porte arrastrant des dels inicis (logo, colors de la web, etc).

El motiu d’aquest canvi de disseny és múltiple.

En primer lloc, ja tocava, no? 😛 Tot el món canviant el disseny cada dos per tres i jo res de res!

En segon lloc, tenia ganes de fer un tema de WordPress des de zero (bé, des de zero zero no, però pràcticament).

I en tercer lloc, una cosa un poc curiosa. Fa una temporada, consulant les estadístiques del Analytics, vaig veure que m’havia arribat una visita des de Monjo.cat, i vaig entra en eixa pàgina per a veure-la. Quina va ser la sorpresa quan vaig veure un clon del meu bloc!

Això podia passar, era evident, perquè el disseny que tenia (i que encara tinc quan escric aquesta entrada) no és meu. Es diu OrangeCrush, d’AnekoStudios, i està publicat amb una llicència lliure, per la qual cosa tothom pot utilitzar-lo al seu bloc. Però no deixa de ser curiós que un bloc d’un xic d’Oliva (em sembla) tinga el mateix disseny que el meu, quan no havia trobat mai cap altre bloc amb el mateix disseny – sé que hi ha molts blocs en el món… però jo els he vist quasi tots! 😀

Però vaig deixar estar el tema del disseny, i vaig començar a buscar l’enllaç a través del qual havíen arribat ací. Vaig pensar que potser Josep (autor de Monjo.cat) m’havia enllaçat en alguna entrada en la que explicava on havia vist el tema, o alguna cosa així… Però no, no apareixia en cap entrada. Llavors?

Encara que parega mentira… estava enllaçat al seu blogroll! Si el seu blogroll hagués sigut de 200 entrades, no m’hauria estranyat, però només eren 5 o 6: Saül Gordillo, Èric Bertran, Gabriel Bibiloni… i jo! Que xicoteta és la catosfera…

Pocs dies després, ja no estava al blogroll, havia desaparegut. Tot havia sigut un somni? Tot no, les estadístiques del Google segueixen ahí…

 

Visites de Monjo.cat a l’Analytics de google

Bé, tot aquest rotllo només per a dir que vaig a canviar de tema…

Seguirem informant…

Manuals utils…
... que sempre venen bé

// febrer 13th, 2008 // No hi ha comentaris » // Programació

Fa una “temporaeta” vaig comenar a arreplegar manuals i tutorials1 que podia trobar útils. De tota classe: des de PHP, Java, Javascript… fins a guions de Shell, passant per AWK, Perl, Python, C++… i un llarg etcétera que en aquestos moments no m’apetix gens repetir 😀

1 Per cert … algú sap dir-me la diferència entre un manual i un tutorial? 😮

I mira per on, un dia que estava furgant per la xarxa vaig anar a parar a una entrada de RincónXen que em venia de categoria. Cheat Sheet útiles es va convertir en un bon punt de referència on trobar manuals.

Però encara es quedava curt (sóc molt exigent). Així que vaig començar a agrupar-los tots en una pàgina, i així va nàixer Manuals … que sempre venen bé.

Però, com era d’esperar en una cosa que faig jo, està a mitges, o siga que s’anirà omplint poc a poc. De moment, uns quants manuals de referència d’AWK.

Això si, em compromet a dir alguna cosa quan afegisca alguna cosa digna de destacar, o faça alguna actualització important.

I hui més que mai…

seguirem informant…

Servidor web en Ubuntu Gutsy…
... webs al teu ordinador

// novembre 7th, 2007 // No hi ha comentaris » // Internet, Linux, Programació

Al final m’he decidit, i vaig a començar a publicar entrades amb un mínim d’utilitat, a veure si d’una vegada trobe el tema conductor d’aquest bloc (sembla més un calaix de sastre que un bloc).

I per a començar aquesta sèrie de posts seriosos, un on explique (o millor dit, intente explicar) de manera senzilla la instal·lació d’un servidor web complet en Ubuntu Gutsy.

La informació no l’he arreplegada de cap lloc, i al mateix temps l’he arreplegada de molts: gràcies al tot-ho-sap, principalment.

I PART: INSTALACIÓ DELS PAQUETS NECESSARIS

En primer lloc, hem d’instal·lar tots els paquets. Venen als repositoris d’Ubuntu Gutsy Gibbon, o siga que només haureu d’obrir un terminal i fer:

sudo apt-get install php5 php5-mysql php5-gd php5-curl php5-imagick php5-mcrypt mysql-server mysql-client mysql-common apache2 phpmyadmin

Ens demanarà algunes dades de configuració (usuari i password de MySQL, per exemple). Una vegada acabat, haurem instal·lat el programari necessari per a muntar el nostre servidor Apache2, amb suport per a PHP5, MySQL, i algunes extensions de PHP5 interessants, com curl, ImageMagick, GD, i també l’eina phpMyAdmin per a la gestió de les bases de dades MySQL via web.

II PART: ALGUNS AJUSTOS NECESSARIS

Una vegada instal·lat tot, és l’hora de configurar algunes cosetes. Primer que res, provem si s’ha instal·lat bé l’Apache2. Només hem d’entrar a http://localhost/ i comprovar que ens apareix la pàgina inicial d’Apache.

Després provem el phpMyAdmin, entrant a http://localhost/phpmyadmin/. És possible que no trobe la pàgina, però açò se soluciona de forma fàcil:

sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

Ara ja hauriem de veure la pàgina, però és possible que ens indique errors per a connectar a la base de dades. Ací també hi ha una manera senzilla de solucionar-ho:

Entrem a MySQL des de la consola, posant el nom d’usuari (root) i la contrasenya que hagem triat abans (suposem que és password)

$ mysql -uroot -ppassword

i escrivim açò

SET PASSWORD FOR 'root'@'localhost' = OLD_PASSWORD('password');

Açò es deu a que des de la versió 4.11 de MySQL, s’utilitza un nou algorisme de xifrat de contrasenyes, i ja no es pot connectar a la base de dades de la manera que es connectava abans. Però amb açò ja està solucionat.

III PART: LA NOSTRA WEB

Una vegada ho tenim tot enllestit, ja podem posar la nostra web. El lloc on posar-la és dins de /var/www/, però aquesta carpeta no té permisos d’escriptura. Els podem donar de forma senzilla fent:

$ sudo chmod 777 /var/www/

I si, posem per cas, la nostra web està dins la carpeta elmeubloc, i l’hem posat dins de /var/www/ podrem accedir a ella a través d’aquest enllaç: http://localhost/elmeubloc/

Amb aquestes senzilles indicacions, ja podem muntar-nos un servidor en la nostra màquina per fer proves amb les pàgines web que dissenyem.