sábado, 4 de abril de 2015

El secreto de los dedos de Aignes [Leído]

Una historia que se desarrolle en la Europa de la segunda guerra mundial que combine acción y misterio siempre estará entre mis favoritas, tal vez por eso El secreto de los dedos de Aignes - escrita por Pablo Carnicero - es la segunda novela de este tipo que me leo en un poco más de un mes.

En esta novela su autor, desde la perspectiva del soldado James Villalobos, nos cuenta como un grupo de soldados de élite del ejercito norteamericano son reasignados de unidad y elegidos para desarrollar la importante misión de recuperar algunos tesoros en poder de los nazis, cuyo valor  le ayudará a los ejércitos aliados a financiar la guerra.

El Secreto de los dedos de Aignes
El Secreto de los dedos de Aignes
La historia se comienza a desarrollar en el famoso desembarco de Normandia, a partir del cual sus protagonistas comienzan a vivir una serie de situaciones que desafían el peligro mientras se infiltran en líneas enemigas. Como se explica en su sinopsis, la misión aparentemente sencilla, esconde una maraña de traición, codicia y asesinatos, que le sitúa en el núcleo estratégico de un terrible conflicto entre los dos bandos contendientes.

Durante el desarrollo de la historia se nota el trabajo de su autor por describir muy bien los escenarios de la Europa en guerra, principalmente en Francia, así como los detalles técnicos propios del conflicto que fue la Segunda Guerra Mundial que hacen que la historia aunque sea de ficción se encuentre muy bien sustentada.

Otro punto a favor del libro es que se encuentra escrito en un lenguaje que facilita su lectura, y aunque no ahonda en detalle sobre sus personajes no queda ningún cabo suelto de la historia a pesar de su corta extensión (unas 211 páginas).

Si se busca una historia de acción, con un poco de contenido bélico (contenido necesario para la época y situación que se desarrolla), un poco de historia e incluso un poco de misterio, este libro es una buena alternativa. Yo por mi parte dejo en mi lista de pendientes explorar otras obras del autor que se encuentran disponibles en su página web y que sin duda se ven atractivas.






miércoles, 1 de abril de 2015

Diferencia entre CHAR y VARCHAR en MySQL

Un aspecto importante a la hora de diseñar bases de datos es definir de forma correcta los tipos de datos que se almacenarán en cada campo, ya que esto a largo plazo y dependiendo del volumen de transacciones que maneje la base de datos impactará en su rendimiento.


MySQL provee muchos tipos de datos, los cuales muchas veces resultan ambiguos pero que de fondo difieren en la forma en que son tratadas por el motor. Un claro ejemplo son los tipos CHAR y VARCHAR que nos permiten almacenar cadenas alfanuméricas, los cuales ha simple vista parecen iguales pero que como veremos a continuación difieren en la longitud máxima permitida, en la manera en que son almacenados, y en como son recuperados.


Cuando se declara un valor tipo CHAR el campo se crea con la longitud fija indicada al crear la tabla, la cual debe ser entre 0 y 255. Dado que es un tipo de longitud fija, al momento de almacenar datos en una columna CHAR, se rellenará con espacios en blanco las posiciones que no son ocupadas por los caracteres de la cadena que se está almacenando, caracteres que se eliminan cuando el dato es recuperado.


En contra parte los campos tipo VARCHAR son de longitud variable, que deber ser entre 0 y 65.535. Cuando se declara un valor tipo VARCHAR el motor de MySQL reserva 1 o 2 Bytes para ser usados como un prefijo de longitud, que almacena el valor de la longitud en Bytes de la cadena que se está almacenando. Si la cadena tiene una longitud de 255 o menos reserva 1 Byte, si la longitud es de 256 hasta 65.535 reserva 2 Bytes.


Con base a lo anterior podemos concluir que VARCHAR es más adecuado para cadenas que superan los 255 caracteres de longitud; sin embargo por ser un tipo de datos estático, CHAR tiende a ser más rápido que VARCHAR, lo cual lo convierte en la mejor alternativa si lo que se busca es un mejor rendimiento.


Un ejemplo de uso correcto de estos tipos de datos sería por ejemplo: usar CHAR para almacenar los hashes de contraseñas encriptadas con SHA1 ya que este algoritmo siempre genera cadenas de 40 caracteres, y usar VARCHAR para almacenar datos como direcciones o nombres de personas ya que estos datos son de longitud variable.

Más información en https://dev.mysql.com/doc/refman/5.0/en/char.html