24 de desembre del 2012

BdeBooks i els e-llibres en català: la decepció final

Un cop més, torno a Amazon per veure com va el tema de BdeBooks, que vaig enunciar fa un any com una gran iniciativa, i que després es va desinflar per la manca de presència del català (no hi ha pàgina en català, i el número de llibres en català va avançant a poc a poc). Avui, el resultat ha estat el següent:



Únicament 10 llibres en català en catàleg, mentre que fa mig any n'hi havia 16. En canvi, en castellà han augmentat fins a 437 (344 a finals de juliol). Els llibres en català  representen poc més del 2% del total publicat per aquest segell que, no ho oblidem, depèn de Edicions B (ubicada a Consell de Cent, Barcelona).

El pitjor, però, és que mentre que en castellà el catàleg s'ha incrementat en 93 llibres, el número de llibres en català ha disminuït en 6.

Per desgràcia es confirma la mala impressió que ja tenia, i no trobo paraules per expressar el meu desencís amb BdeBooks.

Crec que aquest serà el meu darrer article sobre aquest segell. No paga la pena dedicar-li més temps.

5 de desembre del 2012

PHP Warning: json_encode(): Invalid UTF-8 sequence in argument [SOLUCIONAT]

Si mai us trobeu que en accedir des de PHP a una base de dades MySQL i codificar el resultat en JSON per retornar-lo us surt un error tipus "PHP Warning:  json_encode(): Invalid UTF-8 sequence in argument", està clar que teniu un problema. Possiblement algunes de les dades que esteu retornant estan buides, són invàlides o contenen caràcters estranys. Per sort, la solució és senzilla.

En primer lloc, comproveu que la base de dades utilitza codificació UTF-8 (p.e. amb phpMyAdmin):


Llavors, en accedir a la base de dades des de PHP afegiu l'opció "SET NAMES utf8" a l'atribut MYSQL_ATTR_INIT_COMMAND. Per exemple, utilitzant PDO podria ser similar a:
$DBH = new PDO("mysql:host=$server;dbname=$dbname",
            $user, $pass, 
            array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
I ja veureu com l'error desapareix dels vostres logs, i les dades s'obtenen correctament.

1 de desembre del 2012

LibreOffice Calc: obtenir els elements únics d'una llista

Sembla que estigui fent una sèrie d'articles sobre el LibreOffice. Ja he parlat de com afegir taules al Writer des del Calc per després donar-les-hi format propi, de com tenir llistes desplegables al Calc i, finalment, de com tenir valors amb salts de línia dins una cel·la en el Calc. I encara segueixo: avui explicaré com obtenir una llista d'elements únics d'una llista amb elements repetits.

Partim d'una llista de dades que conté elements repetits. El procés a seguir és el següent (veure la imatge de sota):
  1. Seleccionem la llista original, que conté els elements repetits.
  2. Obrim el menú Dades -> Filtre Estàndard i s'ens obre una finestra d'opcions.
  3. A la condició del filtre indiquem que volem tots els valors (no buits).
  4. Obrim les opcions addicionals pel filtre.
  5. Aquí hem de marcar que no volem els duplicats. Aquest és el secret :-)
  6. Indiquem que volem copiar els resultats...
  7. ... a una cel·la o fulla concreta.

I ja ho tenim. Acceptem, i obtenim el resultat final que es pot veure a la imatge de sota (després de canviar el títol de la columna per indicar que ja no hi ha repeticions).

Tal com podeu comprovar, un truc ben senzill. Però si no el saps, li pots donar força voltes. Us ho ben asseguro.