Ubuntu i la seva estúpida política anti-KDE

NOTA: Ja tinc ADSL, però ho detallaré millor en una entrada més endavant. Ara m’agradaria ocupar-se d’afers més interessants.

Avui m’ha donat per instal·lar l’Alfa 6 de la Kubuntu Intrepid Ibex (8.10), ja que feia uns dies que l’havia estat provant i ja era hora d’anar passant al KDE 4. A part d’alguns petits problemes (lògic, és el que té que sigui una alfa), ha funcionat tot bé i ja està tot instal·lat i funcionant perfectament. Tot, excepte una cosa: la traducció al català.

Si bé els programes que no són del KDE (el sistema base, el Firefox, el GIMP, etc.) estan en perfecte català, els del KDE estan un 1% en català. Mireu la captura del pobre Konsole:

L’únic que hi ha en català en tota l’aplicació és “Nova finestra”!

Doncs bé, en la resta d’aplicacions, si fa no fa, tot és igual. I si anem a mirar la pàgina de traduccions d’Ubuntu, què trobem? Això:

Potser és que a can KDE no ho han traduït? M’estranya, ja que tenen força bons traductors. Aquí va una captura del web del KDE on es veu l’estat de la traducció del Konsole al català:

He investigat una mica i sí senyor, es tracta d’una xapussa més del seu màgic-magnífic-meravellós sistema Rosetta, un sistema ideat perquè tothom pugui ajudar a traduir, però que al final acaba sent inútil perquè les traduccions no estan actualitzades i si no et coordines “manualment” amb els projectes originals, la feina acaba sent duplicada i el propi sistema es fot un embolic perquè barreja textos d’una i altra traducció.

Al que volia arribar: han executat els scripts per importar les traduccions del KDE però es veu que aquestes han canviat de format i a Rosetta han quedat totes marcades con a “pendents d’acceptació manual”. Vaja, que han de revisar milers de paquets i aprovar-los un a un. Una veritable xapussa del segle XXI.

I a tot això, els traductors demanen explicacions i els responsables triguen dies a respondre.

De sempre s’ha sabut que Canonical no dedica pràcticament cap esforç a Kubuntu, però això ja és massa. Que no s’importin unes traduccions que a Debian hi són i perfectament funcionals, és de por. I si arriben a la versió final així, serà tot un rècord per la seva part. I s’hauran guanyat un desertor, que se n’anirà a alguna altra distro on donin millor suport al KDE i a la localització.

Instal·lació d’ADSL en un pis de l’any de Maria Castanya

Fa més d’un any que em vaig mudar a casa de la meva àvia (a Barcelona) per motiu de feina, i fins ara he estat robant Wi-Fi. Crec que ja era hora de contractar un ADSL, així que després de mirar una mica m’he decidit per l’oferta de Yacom Total (ADSL 20 MB + línia + trucades nacionals gratis per uns 40€ al mes). Això implica diversos passos per desempallegar-se de l’actual línia de Telefònica. Per una part, s’ha de rebre el router i instal·lar-lo. Per l’altra, s’ha de donar la conformitat del canvi d’operadora de la línia. I finalment, s’ha d’adquirir el telèfon que lloga Telefònica.

Pel que fa al router, 11 dies després de contractar el servei, ja l’he rebut. El problema ve a l’hora de connectar-lo. Primer, no hi ha rosetes de connexió on poder-lo connectar. Sí senyor, els dos telèfons que hi ha al pis estan soldats directament a un cable que prové de l’entrada de la línia. Un deu per als cracks que ho van instal·lar (un dels telèfons és un Domo i té una autèntica xapussa feta per dins). Com que no hi havia rosetes, he pensat de provar-ho al PTR (és el que et recomanen també si hi ha problemes de sincronització amb l’ADSL). Doncs l’ADSL no sincronitza, i és que no és un PTR sinó un PCR, dels que fa més de 10 anys que no se n’instal·len i que dóna problemes amb l’ADSL, però això té solució. He fet el que s’aconsella en aquest tutorial i el router segueix sense sincronitzar. A veure què em diran demà els del servei tècnic.

Pel que fa a la línia, s’ha de fer una gravació telefònica en què el titular de la línia accepti la portabilitat. Donat que és la meva àvia i difícilment podrien fer una gravació correcta, estem a l’espera que arribi la carta amb tot per escrit, perquè només calgui signar-la. Ja veurem si arribarà, i quan.

Finalment, respecte al lloguer del terminal, aquesta setmana trucaré a Telefònica per adquirir-lo. Espero que, com que encara no he cursat la portabilitat, es portin mitjanament bé.

Seguiré informant de futurs successos.

Control de la sortida de PHP amb ob_start() i ob_flush()

Avui hem decidit canviar el comportament de l’aplicació que estem desenvolupant perquè, en cas que la base de dades petés, era terriblement lleig tenir 200 warnings i errors de MySQL rondant pel mig de la web. Era més lògic mostrar una pàgina d’error perquè el client veiés que alguna cosa havia anat malament, i que ho provés més tard.

La idea inicial era simple. Hi ha la següent funció:

db_query($query)

Aquesta funció permet fer una consulta a la base de dades abstraient (una mica) l’aplicació del MySQL. A més, en cas d’error a la consulta, afegeix entrades al registre de l’aplicació i més coses. En fi, doncs la idea era simplement modificar la funció afegint-hi això en cas que hi hagués un error:

header(”Location: error.php”);

La idea està molt bé, però no és possible, perquè si l’error es produeix un cop s’ha iniciat la sortida, tindrem el típic problema de “headers already sent by”.

I és aquí on entren en joc les funcions de búfer ob_start() i ob_flush(). Aquestes funcions retenen i alliberen, respectivament, la sortida de l’aplicació, excepte les capçaleres. Per tant, això ens permet retenir la sortida fins que estiguen segurs que no hi pot haver cap error, i llavors executar ob_flush().

D’aquesta manera se solucionen els possibles problemes d’enviament de capçaleres quan ja hi ha sortida.

Internet Explorer i focus() endarrerit

Avui a la feina estava tocant un JavaScript i m’he adonat d’una cosa. L’IE no li feia ni cas a una de les instruccions. La cosa és la següent: hi ha una part de l’aplicació que es recarrega contínuament (cada 5 segons) mitjançant Ajax. Aquesta part conté un “input” el qual, si estàs escrivint mentre es refresca, perd el contingut. La idea del JavaScript era fer la petició Ajax i en rebre la resposta:

1. Copiar el valor de l’”input” en una variable temporal.
2. Substituir el contingut del “div” corresponent amb el de la resposta.
3. Assignar el valor de la variable al nou “input”.
4. Restaurar la posició del ratolí en cas que estigués seleccionat o tingués focus.

I en aquest últim cas és en el que fallava. Una de les instruccions era que, si anteriorment tenia focus, se li tornés a donar focus. Això ho fèiem així:

document.getElementById(”elementToFocus”).focus();

Misteriosament, no funcionava. En Firefox sí, però a l’IE no. El més curiós era que si fèiem això:

document.getElementById(”elementToFocus”).focus();
document.getElementById(”elementToFocus”).focus();

Sí que funcionava! És il·lògic, però investigant, sembla que l’Explorer fa alguna cosa en segon pla i no deixa prendre el focus fins passats uns quants mil·lisegons. Es pot solventar així:

setTimeout(”document.getElementById(”elementToFocus”).focus();”, 100);

D’altra banda, ens hem trobat un altre problema. El tema de conservar la selecció actual. En Firefox, hi ha els simplíssims selectionStart i selectionEnd, que et fan tota la feina, però en Explorer, no. La manera “oficial” de Microsoft és un autèntic nyap, i a Mishoo s’han currat una alternativa fent ús d’una funció no documentada que retorna una “cadena opaca”. Això és el que hem hagut de fer, quin remei.

Com sempre, les cerques sobre coses de JavaScript amb el senyor IE són d’allò més curioses…