Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

Embassytown

Review:

This is the first time a Miéville book has bored me.

It goes to great lengths about lin­guis­tic­s, which is not some­thing that in­ter­ests me, but al­so, the in­ten­tion­al vague­ness of ev­ery­thing, how
noth­ing is de­scribed, made it hard to read or re­late to.

Sentidos

La pan­ta­lla de mi cá­ma­ra que­dó obs­ti­na­da­men­te ne­gra. Cam­bié op­cio­nes, mo­ví ISO­s, to­qué en lu­ga­res, tra­tan­do de con­ven­cer­la de en­fo­car y usar la aper­tu­ra pa­ra el lu­gar más cla­ro o más os­cu­ro de lo que yo sa­bía es­ta­ba ahí.

Pe­ro se­guía ne­gra. Y ahí tu­ve un di­sen­so, una opi­nión contra­dic­to­ria, que tal vez no ha­bía un ár­bol cla­ro y ver­de, que el cie­lo no es­ta­ba lleno de nu­bes na­ran­ja, que to­do era ne­gro, ca­ren­te de es­tre­lla­s, va­cío de ár­bo­l, va­cío de nu­be­s.

Pu­se mi ma­no por en­ci­ma de la cá­ma­ra, es­pe­ran­do ver al­go, un ras­tro, y só­lo ha­bía un rec­tán­gu­lo de os­cu­ri­dad se­pa­ran­do mis de­dos de mi bra­zo, tan va­cío co­mo an­tes, rién­do­se de mí sin ex­pre­sio­nes.

Por­qué era tan ne­gro, si yo veía, si ha­bía lám­pa­ras ilu­mi­nan­do, y yo veía, y veía un ár­bo­l. La cá­ma­ra fun­cio­na­ba. ¿Que ha­cía yo, jun­to al río, a las 4 AM, un mar­tes, acos­ta­do en un ban­co, mi­ran­do pa­ra arri­ba, con una cá­ma­ra?

Uno es­pe­ra que sus sen­ti­dos fun­cio­nen. Es­pe­ra per­ci­bir lo que es­tá, y no per­ci­bir lo que no. Es­pe­ra ver rea­li­dad y no ver lo irrea­l, es­cu­char co­sas, y no es­cu­char no­-­co­sas, to­car ver­da­des, oler mier­da.

Qué pa­sa­ría si tu­vie­ra dos sen­ti­do­s, dos vi­sio­nes, y no es­tu­vie­ran de acuer­do, si no su­pie­ra en cual con­fia­r, cual es­tá bien, cual es ver­dad. Que pa­sa­ría si la cá­ma­ra tu­vie­ra ra­zón y mis ojos no, si en vez de ver es­tu­vie­ra ima­gi­nan­do, si la ver­dad fue­ra va­cía, si no hay ár­bo­l, si el cie­lo es ne­gro.

Pu­se el flas­h, y la ho­rren­da fo­to me con­ven­ció de, al­gún día, com­prar una cá­ma­ra co­mo la gen­te, y de no ol­vi­dar­me el re­me­dio de la gas­tri­tis cuan­do voy de vaca­cio­nes a lu­ga­res ais­la­do­s.

¡Nikola 1.1 en la calle!

Lo es­cri­bí pa­ra es­te mis­mo si­tio, pe­ro de­ci­dí que tal vez sea útil pa­ra otro­s. Los ob­je­ti­vos prin­ci­pa­les de Niko­la so­n:

  • Po­­­co có­­­di­­go: po­r­­que no quie­­ro man­­te­­ner un mon­s­­truo pa­­ra es­­te blo­­­g.

  • Ge­­ne­­ra­­ción rá­­pi­­da de pá­­gi­­na­s: aña­­dir un post no de­­be­­­ría ta­r­­dar mas de 5 se­­gun­­dos en re­­contruir el si­­tio.

  • Ge­­ne­­rar si­­tios es­­tá­­ti­­co­­s: de­­plo­­­y­­ment usan­­do rs­­yn­­c!

  • Ge­­ne­­ra­­ción fle­­xi­­ble de pá­­gi­­na­s: po­­­dés de­­ci­­dir ado­n­­de te­r­­mi­­na ca­­da co­­­sa en el si­­tio.

  • Te­m­­pla­­tes po­­­de­­ro­­sas: Usa Mako

  • Ma­­rkup li­m­­pio pa­­ra los po­s­­ts: Usa Do­­­cu­­tils

  • No ha­­ce bui­l­­ds idio­­­ta­s: Usa doit

  • HT­­ML li­m­­pio por de­­fau­l­­t: Usa boots­­trap

  • Co­­­men­­ta­­rios sin lío­­s: Usa Dis­­qus

  • Tags, con sus pro­­­pios fee­­ds

  • Fá­­cil pa­­ra ha­­cer blogs

  • Pá­­gi­­nas fue­­ra del blog

  • Si­­tios mu­l­­ti­­li­n­­gües

Creo que es­ta ver­sión ini­cial lo­gra esos ob­je­ti­vo­s, pe­ro por su­pues­to es me­jo­ra­ble. Se agra­de­ce el fee­dba­ck!

La pá­gi­na de Niko­la es http://­niko­la-­ge­ne­ra­to­r.­google­co­de.­com

¡Unicode en Python es Divertido!

>>> 'á'.decode('utf8')
u'\xe1'

Sin em­bar­go, hay una tram­pa. Te­nés que es­tar ab­so­lu­ta­men­te se­gu­ro que la co­sa que es­tás de­co­dean­do es un string de by­tes, y no un ob­je­to uni­co­de. Por­que los ob­je­tos uni­co­de tie­nen un mé­to­do de­co­de pe­ro es to­tal­men­te inú­ti­l, y su úni­co pro­pó­si­to en la vi­da es cau­sar es­te error pe­cu­lia­r:

>>> u'á'.decode('utf8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1'
in position 0: ordinal not in range(128)

¿Por­qué es pe­cu­lia­r? Por­que es un error de En­co­de. Cau­sa­do por lla­mar a de­co­de. Lo que pa­sa es que en los ob­je­tos uni­co­de, de­co­de, en la prác­ti­ca es al­go así:

def decode(self, encoding):
    return self.encode('ascii').decode(encoding)

El usua­rio quie­re un ob­je­to uni­co­de. Él tie­ne un ob­je­to uni­cde. Por de­fi­ni­ció­n, no exis­te un co­sa que sea "de­co­dear co­mo utf-8 un ob­je­to uni­co­de". No tie­ne sen­ti­do. Es co­mo pei­nar un pes­ca­do, o es­ca­lar una la­gu­na.

¡Lo que debería devolver es self! Además es suamente molesto que la única manera de evitar el error es chequear el tipo del objeto, lo que es activamente antipitónico.

Aún me­jo­r, no ten­ga­mos un mé­to­do de­co­de en ob­je­tos uni­co­de, que creo es la si­tua­ción en py­thon 3, pe­ro nun­ca lo va a ser en py­thon 2.

Así que aho­ra ya sa­be­n, y bue­na suer­te.


Contents © 2000-2022 Roberto Alsina