martes, 20 de noviembre de 2012

2 Cosas que no me gustan de Twitter Bootstrap

Vaya por delante que me parece que los chicos de Twitter han hecho, en líneas generales, un gran trabajo. Sobre todo me gusta su carrusel responsive, aunque no sea la opción más completa sí que es más que digna.
Sin embargo, no sé si es que no esperaban su propio éxito o si era desde el principio lo que pretendían, pero  están consiguiendo marcar un estándar de diseño, con sus cosas buenas (alguien que no tenga ni idea de diseño puede hacer una página resultona de manera bastante fácil) y sus cosas malas (si bien no se resta margen a la creatividad, han marcado una pauta de la que pocos se atreven a salirse, si no me crees, fíjate en los botones de las aplicaciones web, cuesta encontrar unos distintos a los de Bootstrap).
Por otro lado, otra cosa que tampoco impone Bootstrap es la utilización de marcado presentacional. ¿O sí? O, al menos, ¿hasta qué punto? No lo impone, pero lo promueve. Hoy por hoy, mediante los preprocesadores (Sass y Less, por ejemplo) es completamente prescindible (en realidad siempre lo ha sido) al poder reutilizar partes con marcado semántico. Pero es que, a pesar de la "amistad" que une a Bootstrap y Less, en su propia página utilizan classes como los que siguen para la barra superior:
  • navbar-inverse: Para que el color de fondo sea oscuro
  • navbar-fixed-top: Para fijarlos a la parte superior de la página y que no se mueva de ahí aunque se haga scroll
Nein, nein, nein. ¿Qué cojones hacemos a estas alturas del partido mezclando responsabilidades? HTML para contenidos, CSS para presentación y Javascript para comportamiento. ¿Es que no hemos aprendido nada? ¿A nadie le suena ya eso de hacer un HTML lo más semántico posible? ¿Damos la batalla por perdida? 
Y no me vale que me vengan ahora con que CSS3 y sus transition y animations se inmiscuyen en el comportamiento, y por muchos motivos, entre ellos:
  • Es importante partir de una materia prima buena y ésta la compone el HTML
  • Las animaciones realizables mediante CSS3 son sólo las más sencillas (¡¡¡no tenemos callbacks, por ejemplo!!!)
  • Pero sobre todo: el acoplamiento entre CSS y Js es de por sí alto y esto no es algo fácilmente soslayable, porque las animaciones no son otra cosa que presentación dinámica de un elemento, por definición. Por el contrario, es posible (y deseable) dejar el HTML limpio de elementos presentacionales, al menos en la mayor parte de casos.
¿Quiero decir con esto que  Bootstrap es una mierda? ¡No! Pero hay que utilizarlo con cuidado: por ejemplo, en Sass sería suficiente con utilizar @extend para reutilizar el código y no incurrir en todos los problemas que conlleva lo anteriormente explicado. Less tiene su propia sintaxis, pero la idea es la misma: no utilizar marcado presentacional. Al menos cuando no sea imprescindible.
O si no, acabaremos con botones rojos que tendrán un class "azul", barras superiores con su class "fixed-bottom", etc. Pero estamos en 2012, eso ya es agua pasada... ¿o no?

miércoles, 21 de diciembre de 2011

Cómo elegir mi primera guitarra eléctrica

La elección de la primera guitarra eléctrica suele resultar complicada, por desconocimiento, por
falta de experiencia... Así que vamos intentar arrojar un poco de luz sobre la decisión desde nuestra experiencia.

En primer lugar, siempre que se elige algo, es importante tener claro cuál será el uso de ese algo: no es lo mismo
comprar un coche para moverse por ciudad que para hacerlo por pistas. Puede que los dos tengan calidades equivalentes,
pero cada uno está especializado en un tipo de terreno. Con las guitarras y sobre todo con las eléctricas, ocurre exactamente
lo mismo: cada una, por sus características, irá más orientada a un estilo u otro, siendo nuestro objetivo encontrar aquella
que mejor se adapte a nuestras necesidades.

Por otro lado, para entender de antemano las carácterísticas de una guitarra es necesario conocer las características de sus partes.
Entre las partes de las guitarras destacan:

  • Madera: según el tipo de madera el sonido será más oscuro (propicio para acompañamientos o estilos pesados como el rock duro o el metal) o más claro (propicio para tocar solos y estilos como el blues o un rock más light).
    Las guitarras de caoba (como la Les Paul o la SG) suelen tener un sonido más oscuro, mientras que las de aliso (como la Stratocaster) suelen sonar más "cristalinas".
  • Unión mástil-cuerpo: puede ser de más "oscuro" a menos y de más sustain a menos: atornillada, encolada o neck-through
  • Electrónica (principalmente las pastillas): puede propiciar sonidos más de un estilo u otro. Por ejemplo, las pastillas simples suelen ser más útiles en blues o rock ligero, mientras que las dobes (o humbucker) suelen ser más útiles nuevamente para estilos más pesados.
    Existen guitarras que las combinan. Tampoco pueden obviarse las pastillas activas, que necesitan de una alimentación propia y están más pensadas para estilos pesados.
  • Tipo de puente: básicamente puede ser fijo o flotante, cada uno con sus variantes. El puente flotante permite obtener sonidos imposibles de obtener de otro modo, pero si tu presupuesto es ajustado suele ser buena
    idea prescindir de él (el ahorro hará que el resto de componentes sean de mayor calidad y, además, los puentes flotantes baratos suelen producir problemas de afinación constantes).

Teniendo todo lo anterior en cuenta, veamos algunos consejos que pueden facilitar la elección de nuestra primera guitarra:

  • Piensa qué sueles o te gustaría tocar y qué guitarras utilizan tus artistas favoritos.
  • No te precipites si aún estás empezando, puede que Petrucci necesite 17 cuerdas, 500 trastes y un puente flotante de kriptonita, pero si tu presupuesto es ajustado
    vale más gozar de menor abanico de opciones y que éstas sean de mayor calidad.
  • Invertir en una guitarra versátil te permitirá probar más variedad de sonidos y amplía las posibilidades de acertar con la compra, aunque no tenga tanta personalidad como una más específica.
  • Los puentes flotantes de guitarras de bajo coste suelen dar muchos problemas, haciendo a la guitarra perder su afinación cada poquísimo tiempo. Mejor no invertir en uno de esos.
  • No te dejes llevar por la estética.Sí, esa guitarra es muy tentadora visualmente, pero seguramente esa otra no tan guapa suene bastante mejor o tenga un sonido más parecido a lo que buscas.

Todo eso está muy bien, pero, seguramente, me pediréis ser más concreto, así que me voy a mojar:

  1. Si no lo tienes claro vete a por un clásico: una tipo strato, una tipo teleca o una tipo Les Paul (o su hermana "pequeña" la SG). Las dos primeras son más para solos y estilos más ligeros y la última idónea para acompañamientos y estilos más pesados (esto no lo tomes al pie de la letra, Slash toca solos con una Les Paul y Ritchie Blackmore saca un sonido "gordísimo" de una strato...).
  2. No sabría poner un límite claro, pero seguramente hasta 500€ tirando por lo bajo no encuentres un puente flotante decente, así que la cosa quedaría reducida a Telecaster o Les Paul (o una SG).

Espero haber ayudado un poco a aclarar alguna mente ;)

martes, 1 de febrero de 2011

Prueba de Less CSS

Estos días he estado probando en un pequeño proyecto el lenguaje dinámico para hojas de estilo en cascada Less. Tal y como explican en el sitio web, Less es una opción más para optimizar el trabajo con CSS, que añade a las posibilidades de éste que añade variables, mixins, operaciones y funciones. Existen también otras alternativas como SASS, Blueprint, 960 grid, Compass, así como Less portado a otros lenguajes, como .Less para .NET Framework, aunque no todas sirven para lo mismo ni tienen el mismo nivel de implementación.
En cuanto a la experiencia, tengo que decir que no ha sido del todo satisfactoria. Me explico: la idea tiene un gran potencial, pero su aplicación no es tan buena como debería para utilizar un proyecto real a mediana o gran escala. Paso a contar mi experiencia.
Lo primero que hice, tras leer un poco sobre el tema fue instalar la gema de Ruby que permitía compilar hojas de estilo less, pero, tras comprobar que era una versión obsoleta y no mantenida, decidí decantarme por la versión en Javascript. Lo bueno de esta versión es que no hace necesario el tedioso paso de la compilación. Lo malo es que no conseguí hacerla funcionar ni en IE7, ni en IE8, ni en Ópera, ni en Chrome. Sorprendentemente sí funcionaba en Safari y en IE6 :S Pero bueno, como se trataba de un proyecto sencillo esto no me echó para atrás. Continué con el tema y al terminar y ponerme a preparar la versión de producción intenté compilarla a CSS con .Less (la versión para .NET) encontrándome con que no implementaba algunas funciones. Bueno, me bastó con copiar los estilos de la opción CSS > Ver código CSS de la Web Developer Toolbar del Firefox. Una vez en este punto, un reemplazo de las URL's de los recursos (te aparecen en términos absolutos, en plan file:///C:/....) me dejó la CSS limpia, lista y válida para entregar.

Conclusiones

Como ya he dicho, se trata de una implementación interesantísima y cuyo uso, probablemente se convierta en generalizado. Uno de los usos más interesantes sería la generación de plantillas, pues con unos pequeños cambios podría obtenerse una apariencia bastante diferente. Además, en combinación con otros proyectos, como 960 Grid System la potencia aumenta enormemente, solucionando algunos de los inconvenientes originales de éste (el hecho de tener que usar marcado no semántico en el HTML). En resumen, resulta un proyecto interesante para empezar a trastear un poco, incluso para algún uso medianamente serio por parte de algún osado/a :D, pero que necesita aún algo de madurez para poder aspirar a un uso serio y extensivo.

Edito: .LESS sí implementa las funciones de color, pero reciben otros nombres, por lo que el código less deja de ser compatible.

viernes, 17 de diciembre de 2010

Libro: "Sangre y champán. La vida y época de Robert Capa"

No voy a descubrir a nadie en este momento que Capa es uno de los grandes fotógrafos de lo que va de Historia (sí, con mayúscula). Es, además, y para quien aún no lo sepa, uno de los mejores fotógrafos de guerra, habiendo cubierto algunas de las más sangrientas del siglo XX, como la II Guerra Mundial o la Guerra Civil Española. Pues bien, interesado como suelo estar en el tema de la historia del siglo XX y en la fotografía y particularmente en la obra de Capa, me decidí a leer esta biografía sobre el mismo.
En primer lugar, me gustaría resaltar que se trata de un libro que engancha prácticamente desde la primera página. Realmente hacía tiempo que no leía un libro tan rápido y con tantas ganas. El autor, Alex Kershaw, consigue un ritmo trepidante, primero a ritmo de las balas y más tarde hablando sobre la bohemia vida de Capa. Sin embargo, tengo que reconocer que tiene también algunos defectos, como por ejemplo que no incluye ninguna fotografía hecha por el propio Capa. También existen algunas anécdotas difíciles de creer y que no resulta difícil encontrar por Internet. Otras anotaciones no quedan muy claras, o su sentido concreto al sacarlas de contexto... Y sin embargo, es un libro que tengo que decir que me alegro de haber leído.
En resumen, se trata de un libro muy entretenido y fácil de leer, que engancha, aunque algunos aspectos muy puntuales confundan un poco. Me parece especialmente recomendable para personas interesadas en la fotografía y la historia del siglo XX.

domingo, 12 de diciembre de 2010

Séneca: sobre la brevedad de la vida (on the shortness of life)

Lee los clásicos. Es un consejo universal y cada día más manido en los inciertos tiempos que corren. Y no es un consejo vano. En cualquier tiempo. Lo cierto es que cuando vi este libro en una estantería me llamó la atención por el subtítulo. Una sencilla frase que hacía las veces de presentación y que ya era una perla en sí misma: Life is so long if you know how to use it. Tengo que reconocer que la lectura es algo lenta, debido tanto a la temática (filosofía) como al hecho de estar leyendo en inglés, pero con un pequeño esfuerzo fui acostumbrándome y fui entresacando varias ideas interesantes. Sorprendentemente, muchos de los temas que trata tienen completa vigencia actualmente y, en particular, la idea más interesante fue la siguiente: de la persona que ha vivido más tiempo se puede decir que ha existido más pero no que ha vivido más. Hace unos pocos años, recuerdo en un foro que se debatía este mismo tema y cual fue mi sorpresa al ver que unos 2000 años antes ya se había encontrado una respuesta tan precisa. En realidad, no es tan sorprendente cuando se trata de un tema tan universal a los seres humanos de todos los tiempos como la vida y la muerte.
En resumen, me parece una lectura muy recomendable y bastante distinta a las más populares hoy día, especialmente porque invita a reflexionar sobre temas importantes y materializa muchos pensamientos que probablemente ya sean nuestros aunque todavía no les hayamos dado forma. Una invitación a disfrutar de la vida lejos de entretenimientos banales que en su día sería el circo y hoy, probablemente, la televisión, lejos de modas, de convenciones sociales y de todo tipo de ataduras.

viernes, 10 de diciembre de 2010

Cómo validar el NIF mediante los controles de validación de ASP.NET

Ayer publiqué una entrada con un script que servía para validar el NIF de una persona mediante un javascript genérico. Veamos hoy cómo hacerlo utilizando controles de validación específicos de .NET.
En primer lugar, se crea un web site y dentro de éste un archivo aspx, por ejemplo, Default.aspx. Dentro de Default.aspx se inserta un formulario (lo normal es que venga por defecto) y en él se incluye una etiqueta (label) y un campo de texto (edit), por ejemplo como sigue:

<asp:Label ID="etiquetaNIF" runat="server" Text="NIF:"
AssociatedControlID="textoNIF"></asp:Label>
<asp:TextBox ID="textoNIF" runat="server" />

A continuación se añade un control de validación. Dado que el DNI es un tipo de validación muy específica que no puede validarse mediante expresiones regulares (recuerdo que la letra se calcula a partir de dividir el número en 23) debemos utilizar un Custom Validator, que añadiremos a continuación de lo anterior:
<asp:CustomValidator ID="CustomValidatorNIF"
runat="server" ErrorMessage="NIF incorrecto"
ControlToValidate="textoNIF" 
ClientValidationFunction="validanif" />
Como puede verse, los aspectos fundamentales son:
  • El ID: debe asignarse un id también al control de validación
  • Runat: debe asignarse al servidor
  • ErrorMessage: es el mensaje que aparecerá cuando la validación falle
  • ControlToValidate: el control a validar, en este caso textoNIF
  • ClientValidationFunction: validanif
  • OnServerValidate: En este caso no se ha utilizado un manejador de evento del lado del servidor porque el ejemplo está centrado en la parte del cliente, pero por motivos de seguridad se recomienda validar SIEMPRE en el lado del servidor las entradas de los usuarios

A continuación sólo nos falta añadir la función validanif al javascript de la página. Se recomienda que en un fichero externo y por los métodos habituales a tal efecto. El resultado sería:
///Calcula la letra del nif a partir del número
 function letranif(numero)
 {
  aLetras = new Array();
  aLetras[0] = "T" ;aLetras[1] = "R" ;aLetras[2] = "W" ;
  aLetras[3] = "A" ;aLetras[4] = "G" ;aLetras[5] = "M" ;
  aLetras[6] = "Y" ;aLetras[7] = "F" ;aLetras[8] = "P" ;
  aLetras[9] = "D" ;aLetras[10] = "X" ;aLetras[11] = "B" ;
  aLetras[12] = "N" ;aLetras[13] = "J" ;aLetras[14] = "Z" ;
  aLetras[15] = "S" ;aLetras[16] = "Q" ;aLetras[17] = "V" ;
  aLetras[18] = "H" ;aLetras[19] = "L" ;aLetras[20] = "C" ;
  aLetras[21] = "K" ;aLetras[22] = "E" ;   
  return aLetras[numero%23];
 }
 
 ///Lleva a cabo la validación del nif
 function validanif(source, args)
 {
  //Validación básica de formato
  var validformat = /^\d{8}([A-Z]|[a-z])$/;
  var numero;
  
  if (!validformat.test(args.Value))
  {
   args.IsValid = false;
   return;
  } 
   
  //Entrando en detalle
  numero = parseInt(args.Value.substring(0,8));
  
  //Si no es un número dar error
  if (isNaN(numero))
  {
   args.IsValid = false;
   return;
  }
   
  //Se comparan ambos resultados para validarlos
  if (letranif(numero)==args.Value.substring(8,9).toUpperCase())
   args.IsValid = true;
  else
   args.IsValid = false;
 } 

Como puede verse prácticamente planchado al método de ayer. La única peculiaridad a comentar es que se valida la letra tanto si es minúscula como si es mayúscula, aspecto a considerar según la aplicación.

jueves, 9 de diciembre de 2010

Validar el NIF

Son múltiples los ejemplos existentes por internet de scripts que calculan la letra del DNI a partir del número. No así los scripts que realizan la validación. Así pues comparto mi encomiable esfuerzo :D por si a alguien le ahorra los 5 minutos que lleva hacerlo.

///Lleva a cabo la validación del nif
   function validanif(nif)
   {
    //Validación básica de formato
    var validformat = /^\d{8}([A-Z]|[a-z])$/;
    var numero;
    
    if (!validformat.test(nif))
     return false;

    //Entrando en detalle
    numero = parseInt(nif.substring(0,8));
    
    //Si no es un número dar error
    if (isNaN(numero))
     return false;
     
    //Se comparan ambos resultados y se devuelve
    return (letranif(numero)==nif.substring(8,9).toUpperCase());
   }
   
   ///Calcula la letra del nif a partir del número
   function letranif(numero)
   {
    aLetras = new Array();
    aLetras[0] = "T" ;aLetras[1] = "R" ;aLetras[2] = "W" ;
    aLetras[3] = "A" ;aLetras[4] = "G" ;aLetras[5] = "M" ;
    aLetras[6] = "Y" ;aLetras[7] = "F" ;aLetras[8] = "P" ;
    aLetras[9] = "D" ;aLetras[10] = "X" ;aLetras[11] = "B" ;
    aLetras[12] = "N" ;aLetras[13] = "J" ;aLetras[14] = "Z" ;
    aLetras[15] = "S" ;aLetras[16] = "Q" ;aLetras[17] = "V" ;
    aLetras[18] = "H" ;aLetras[19] = "L" ;aLetras[20] = "C" ;
    aLetras[21] = "K" ;aLetras[22] = "E" ;   
    
    return aLetras[numero%23];
   }

Problema de compatibilidad de ASP.NET Ajax Toolkit con mis scripts

O al menos eso fue lo que en un principio pensaba cuando comprobé que al incluir mi propio script de validación se producía un error de javascript y fallaba toda la funcionalidad del toolkit. La peculiaridad es que todos los ejemplos que aparecen por la red son (cómo no) excesivamente sencillos y todos los scripts que se incluyen suelen ser "pegotes" en el código. Si en lugar de eso quieres utilizar un fichero js externo es cuando aparecen los problemas. Y lo cierto es que estaba a punto de intentar una solución relativamente desesperada cuando se me ocurrió que tal vez todo provenía del hecho de intentar incluir el script con una sola etiqueta. ¡Y efectivamente! Un pequeño despiste, fácilmente solucionable que me dejó una noche en vela y una mañana bastante cansada... Así que ya sabéis amigos, si queréis incluir vuestros scripts en una página, recordad usar 2 etiquetas: la de apertura y la de cierre:
<script type="text/javascript" src="miscript.js"></script>

El capitán salió a comer y los marineros tomaron el barco

Bajo este curioso título podemos encontrar la obra póstuma de Bukowski. Se trata de un diario de sus últimos años donde se narra, como siempre en primera persona, el día a día de una persona que ya no vive tan al límite como en otros tiempos (ahora está casado, tiene una casa, un buen coche, un jacuzzi...) pero sigue manteniendo la esencia de su escritura. Cambian los escenarios, los protagonistas, pero el estilo sigue siendo reconocible.
Por otro lado, al tratarse de un conjunto de capítulos inconexos entre sí, resulta menos ameno que otros, aunque es una buena manera de ocupar breves ratos libres, ya que la lectura es rápida.
En resumen: un libro imprescindible para los seguidores de las andanzas de Hank, aunque no lo recomendaría como primera lectura del autor.

miércoles, 8 de diciembre de 2010

Discurso del Permio Nobel de Mario Vargas Llosa

Sin desperdicio alguno (aunque un poco largo para leer por pantalla), empieza así:
Aprendí a leer a los cinco años, en la clase del hermano Justiniano, en el Colegio de la Salle, en Cochabamba (Bolivia). Es la cosa más importante que me ha pasado en la vida.
Sólo esas 2 frases valen la pena, pero te recomiendo que no dejes de leer el resto.

martes, 30 de noviembre de 2010

Andiparos, el fork de Paros Proxy que sí me funciona en Windows 7

Últimamente he necesitado utilizar el Paros Proxy para un trabajo, pero me he encontrado con la dificultad de que no lo podía ejecutar sobre Windows 7. Así que una vez que agoté casi todas las alternativas (siempre quedaba la de bajarse los fuentes e intentar arreglarlo) me decidí a investigar si existía algún programa que me pudiera hacer las veces de Paros, con tan buena suerte que he descubierto que un fork del propio Paros Proxy, el Andiparos no sólo funciona sobre Windows 7 sino que, además, incluye varias características interesantes que facilitan un poco la labor de los testers de seguridad.

viernes, 26 de noviembre de 2010

Los Viajes de Gulliver

Sí, ya sé que estoy un poco crecido como para leer este libro, pero un clásico siempre merece la pena leerlo, aunque sea un pelín tarde. ¿Qué puedo decir de un libro tan conocido? Pues básicamente que hay vida más allá de Liliput, su capítulo más conocido. El autor, en primera persona, visita distintas tierras en varios viajes, siempre de manera accidental, para poner de manifiesto la relatividad de las cosas una vez que se altera el punto de vista.
Por otro lado, sorprende la vigencia (el libro está publicado en 1726) de varias afirmaciones que se pueden encontrar a lo largo del libro acerca de la clase política, abogados y demás profesionales del engaño.
La única pega que puedo ponerle es que tiene algunos pasajes descriptivos algo áridos de leer y que hacen que no acabe de enganchar como otros.
En cualquier caso, se trata de un libro muy recomendable, tanto por leer las aventuras liliputienses como las menos conocidas con los houyhnhnms...

domingo, 21 de noviembre de 2010

SQL Server 2005: Importar base de datos sin disponer del archivo de log

A menudo se da la situación de tener que importar una base de datos y, sea por el motivo que sea, no disponer del archivo de log (ldf). También puede suceder que queramos restaurar una base de datos a su estado inicial (por ejemplo, para poner los contadores automáticos a cero). En tales circunstancias, es necesario trabajar a bajo nivel, ya que a alto nivel no es posible la importación sin el fichero ldf (aspecto que el administrador de SQL Server se encargará de recordarnos constantemente). Para ello utilizaremos el comando sp_attach_db.Un ejemplo:

sp_attach_db  @dbname = N'MiBaseDeDatos', 
    @filename1 = N'c:\Archivos de Programa\Microsoft SQL 
Server\MSSQL.1\MSSQL\DATA\MiBaseDeDatos.mdf'
Una vez hecho esto, se creará un nuevo archivo de log y será como si se acabase de crear la base de datos.

martes, 16 de noviembre de 2010

ASP.NET Compilar Ficheros en App_Code

Si has agregado un fichero a la carpeta App_Code de tu aplicación web y sus clases no te aparecen por ningún sitio aquí tienes la solución: por defecto, los archivos creados en la carpeta App_Code se marcan como Contenidos y es necesario cambiar esto a Compilado. ¿Cómo conseguirlo? Muy sencillo: en el Explorador de soluciones se marca el fichero problemático y debajo, en la ventana de Propiedades se modifica la opción de Acción de Compilación a Compilación. Se genera el proyecto de nuevo y ¡magia!

miércoles, 3 de noviembre de 2010

El por qué del 101

Para alguien familiarizado con el mundo de la informática, es muy frecuente encontrar tutoriales básicos sobre un tema que se titulan: Nombre del tema 101. De hecho puede ser una buena manera de buscar información sobre un tema desconocido. Por ejemplo, supongamos que no sabemos nada de XML. Podríamos optar por buscar por "XML 101". Pero, ¿por qué es esto así? La respuesta [¡cómo no!] está en la Wikipedia:
The first course in a subject taught at a college or university in Australia, Canada, South Africa, or the United States. By extension, "Topic 101" is used generally to indicate the basics of any subject. The expression is also used in this non-academic sense in the UK. Used this way, it is always pronounced "one-oh-one".

miércoles, 9 de junio de 2010

HTML 5: un paso más cerca

Esta semana me he enterado (desconozco en qué fecha se publicó) que desde Apple se ha creado un sitio utilizando HTML 5 a modo de demostración de las posibilidades de este estándar y de su navegador Safari. El apoyo de una empresa tan importante siempre es algo digno de agradecer aunque los objetivos no sean facilitar a nadie la vida, sino más bien demostrar las posibilidades de su nuevo navegador (o mejor dicho de la última versión del mismo), pero gracias a la repercusión mediática que tiene, esto puede servir para la expansión del uso de navegadores de calidad medianamente modernos. Esto último es un avance para todos los usuarios ya que desechar los navegadores obsoletos permitiría desarrollar páginas más avanzadas al no tener que proporcionar compatibilidad hacia atrás. Hay toda una web por descubrir y las personas que trabajan en ella están esperando a poder utilizarla...

jueves, 20 de mayo de 2010

¿Tiempos de cambio?

Francamente, no soy una persona con una memoria prodigiosa, por lo que la cantidad de recuerdos que tengo del colegio no es excesivamente grande, al menos en lo que a momentos cotidianos se refiere. Sin embargo, recuerdo un momento en el que el entonces director del colegio, que a su vez era mi profesor de Ciencias Sociales, nos dijo que a lo largo de la historia siempre se habían dado períodos de gran libertad personal alternados con períodos en los que prima la represión y que recientemente habíamos pasado por uno de los primeros por lo que la tendencia empezaba a ser ir hacia lo segundo. Por supuesto, en aquel tiempo no le di mayor importancia, pero ahora, cada vez que veo un síntoma de ello me acuerdo de esas palabras. Así, ayer cuando leí el siguiente texto, extraído de www.pdsg.es no pude evitar preocuparme una vez más...


El empeño del gobierno del PP y el grupo mixto en Castilla y León, acompañado por la complacencia del PSOE en promover y desarrollar una estación de esquí en San Glorio, ha dado un giro radical en los últimos días. El soñado proyecto de estación de esquí tiene ya en su contra tres sentencias judiciales donde queda clara la imposibilidad legal de desarrollar las infraestructuras necesarias para este proyecto sin incumplir la Ley 4/2000, de 27 de junio, de declaración del Parque Natural de Fuentes Carrionas y Fuente Cobre-Montaña Palentina, una Ley que paradójicamente promulgó y aprobó hace apenas diez años el mismo gobierno que ahora quiere dilapidarla. Esta sentencia está ahora mismo en trámite de recurso ante el Tribunal Supremo, pero todos los indicios vienen a indicar que la sentencia final será igualmente restrictiva ante la pretensión de desarrollar un agresivo proyecto de estación de esquí en el interior de un espacio natural protegido.

El empecinamiento político en sacar adelante este proyecto ha dado un peligroso giro hacia un espacio posiblemente fuera del marco constitucional. Este camino comenzó el pasado día 26 de marzo, cuando se modificó la Ley de Ordenación del Territorio de la Comunidad de Castilla y León. Esta modificación permite que cualquier proyecto pueda ser aprobado por Decreto o por Ley de las Cortes, cuando sean de excepcional relevancia. Con esto se abre la puerta al ejercicio de todo tipo de presiones en defensa de intereses particulares o corporativos sobre quien deba tomar la decisión –el grupo parlamentario que tiene la mayoría– para blindar ante los tribunales de lo contencioso administrativo cualquier plan o proyecto regional de intervención en el territorio que pueda resultar conflictivo.

De esta forma la Junta de Castilla y León elude la acción de los tribunales ordinarios, priva a los ciudadanos de la tutela judicial efectiva y quiebra la división de poderes. Esta maniobra de la Junta resulta claramente inconstitucional, ya que priva a todos los ciudadanos y asociaciones a interponer cualquier recurso contra las leyes. Si se aprobaran como Ley todos los proyectos, no se podrían recurrir y se podrían llevar a cabo.

Esta situación, más propia de un estado totalitario, es lo que ha sucedido en Castilla y León. Tras la modificación de la Ley de Ordenación del Territorio, apenas transcurrieron unos días para que el rodillo antidemocrático de la Junta de Castilla y León presentase una Proposición de Ley cuyo objetivo es la declaración de Proyecto Regional del Complejo de Ocio y Aventura Meseta-Ski, un proyecto que pretende la instalación de una estación de esquí en Tordesillas (Valladolid) y que, al igual que el caso de San Glorio, tiene varias sentencias judiciales en su contra que impiden la ejecución del proyecto por su impacto ambiental.

El pasado día 5 de mayo le tocó el turno a San Glorio. El Partido Popular y el grupo mixto presentaron una Proposición de Ley para modificar la Ley por la que se declaró el Parque Natural de Fuentes Carrionas y Fuente Cobre-Montaña Palentina, eliminando la prohibición existente en la actualidad que impide la creación de estaciones de esquí alpino dentro del Parque.

Tanto si se está a favor o en contra de la estación de esquí, debe estar por encima el respeto a las leyes de la democracia, el respeto a las decisiones de los jueces, el escuchar los argumentos de la otra parte. Es muy tentador, como se ha visto, una mala utilización del poder y traspasar los límites de lo que debe estar por encima de todo en un sistema democrático: La ley.

Los ciudadanos hemos sufrido un menoscabo de la tutela judicial efectiva recogida en el artículo 24 de la constitución Española, por la cual, todos tenemos derecho a ser parte en un proceso y a poder promover en su marco la actividad jurisdiccional para poder defender nuestros derechos e intereses, intereses legítimos como lo demuestran las tres sentencias falladas a favor de los grupos ecologistas y en contra de autorizar el esquí alpino en la zona palentina de Fuentes Carrionas.

Los ciudadanos sufrimos indefensión ya que no tenemos oportunidad de alegar y probar nuestros derechos e intereses con los principios de bilateralidad e igualdad de armas procesales.

Los ciudadanos hemos perdido el derecho a participar, derecho recogido en el derecho Español y Europeo.

Los jueces han perdido respeto puesto que se buscan “caminos para allanar los obstáculos legales” para conseguir el fin político a toda costa.

Los jueces han perdido credibilidad puesto que ven como sus sentencias no se cumplen.

Los partidos políticos han sufrido un menoscabo puesto que utilizan cualquier medio para conseguir sus fines evitando y saltándose, y esto es lo más grave, las leyes de la democracia, de la participación, de permitir hablar al otro.

Ante esta situación, los grupos firmantes no vamos a escatimar esfuerzos en utilizar los escasos medios constitucionales y legales a los que todavía tenemos acceso. Esta misma semana se presentará una Queja al defensor del pueblo para que presente recurso de inconstitucionalidad ante el Tribunal Constitucional y pida la suspensión como medida cautelar de la Ley de Ordenación del Territorio y la Proposición de Ley para modificar el PORN de Fuentes Carrionas.

De igual forma, se está trabajando ya en un escrito de apelación ante el tribunal Europeo de Derechos Humanos de Estrasburgo, por vulneración del derecho a la tutela judicial efectiva e indefensión.

Los grupos ecologistas exigimos al Partido Socialista Obrero Español la presentación urgente de un recurso de inconstitucionalidad contra la modificación de la Ley de Ordenación del Territorio, de no llevarse a cabo este recurso, que solamente ellos pueden presentar a través de cincuenta parlamentarios nacionales, estarán siendo también cómplices de este atentando contra el estado de Derecho.

Los grupos firmantes piden a la ciudadanía una respuesta contundente para luchar contra una injusticia, no dejar que por intereses “ciegos” se pisoteen las libertades y derechos fundamentales de todos (incluso de los que apoyan la estación) que son la base de nuestro sistema democrático, de nuestro Estado de Derecho y de nuestra convivencia.

martes, 27 de abril de 2010

Reveladores RAW de Software Libre

En este artículo se pretende desentrañar los secretos de algunos de los reveladores RAW más interesantes publicados bajo alguna licencia de código libre. Esta tarea se intentará llevar a cabo probando los programas (en lugar de buscar capturas) y leyendo algo de documentación de las páginas de sus autores, por lo que se espera que la información sea lo más veraz y actualizada que sea posible. No obstante, el software libre evoluciona de manera bastante rápida y nadie está libre de cometer errores al redactar, así que si detectas alguno, no dudes en añadir un comentario al respecto.

¿Debería usar un revelador libre?


Sí... ¡o no! Uno de los objetivos de este artículo es simplemente el de, al menos, hacerte pensar sobre si deberías o no hacerlo. Por el contrario, no se pretende con el mismo entrar en una disquisición sobre si utilizar o no software libre, sólo diré que, personalmente, tras utilizar el revelador que venía adjunto con mi cámara (que me pareció excesivamente poco potente) me decidí a buscar alternativas y, sin dinero como para costear la mayoría de los programas de software propietario ni ganas de piratear nada, sólo me quedaban las alternativas libres.
Por último, una duda lógica en este momento sería preguntarse: ¿tiene suficiente calidad el software libre siguiente como para ser usado con un cierto nivel? La respuesta es un "según qué programa, sí", pero para más detalles habrá que esperar al análisis de cada programa. Únicamente añadir que, hoy por hoy, el software libre es a menudo una fuente de inspiración constante para el software propietario, por lo que, algo debe tener...

DCRAW


Este programa creado por David Coffin y publicado con una licencia de libre distribución, sirve de base a muchos otros y es por esto que lo trato en este artículo. Su principal inconveniente es que no dispone de interfaz gráfica, lo que hace que trabajar con él pueda ser un poco complicado/tedioso, especialmente al principio. Si eres un valiente, existe un interesante tutorial en español que puede serte de gran utilidad.
Puede ser una buena opción (que no la única) a la hora de procesar lotes de fotos de manera automática pero no lo veo tan claro para un procesado más individualizado, sobre todo por usuarios "estándar".

RAWDROP



La sencillez llevada al extremo. Tal y como indica su autor en la web del programa se trata de un frontend (una interfaz gráfica, vamos) para DCRAW.
Se trata de un programa ligero (el instalador ocupa 320 Kb) y de apariencia y manejo muy sencillos. Básicamente el funcionamiento consiste en:

  1. Configuración de Opciones del programa (marcar/desmarcar opciones)

  2. Arrastrar el/los RAW/s a la ventana del programa (de ahí el nombre del mismo)

  3. El programa los procesa y devuelve el fichero de salida (normalmente un TIFF)


¿Quién dijo que revelar RAWs era difícil? Sin embargo, seamos realistas, las opciones que permite el programa son demasiado escasas y sencillas. Si bien es cierto que el TIFF que se obtiene como resultado tiene mucha más información que un JPG creado por la cámara, también es cierto que el firmware de una cámara está especializado en corregir los defectos específicos de la misma, por lo que cabe preguntarse hasta qué punto es interesante utilizar este programa, excepto en casos concretos. El uso lógico de este programa sería simplemente pasar a TIFF para editar posteriormente en un programa de edición de imágenes como GIMP.
Por último, añadir que este programa está disponible sólo para Windows y la última versión (a fecha de escribir estas líneas) es la 1.2.

JDLRAW



Este programa está basado también en DCRAW y está publicado bajo licencia GNU/GPL. En este caso no se trata de un programa tan básico como el RAWDrop sino que permite manipular la imagen ampliamente y observar los resultados de cada operación de manera instantánea. Ésto, sin embargo, no hace que resulte excesivamente complejo de utilizar, siempre y cuando se disponga de una cierta experiencia en la manipulación de imágenes. Los resultados en este caso sí son aceptables.
Uno de los puntos fuertes de este programa es la versatilidad de su herramienta de curvas, que se puede precargar con multitud de funciones que vienen con el propio programa.
El mayor inconveniente que he observado ha sido la inestabilidad que adolece en arquitecturas de 64 bits, cosa que no ocurre con 32.

UFRAW



UFRaw es, de nuevo, una interfaz gráfica para DCRAW, con licencia GNU/GPL. Una de sus principales ventajas es que permite la instalación como plugin de GIMP, lo que permite conseguir un interesante combo de software libre para todo el flujo de trabajo. La interfaz es muy completa, pero permite aún así un procesado sencillo a poco que se tenga conocimiento del tema. Se trata, sin lugar a dudas de una de las opciones más interesantes y cuyo uso está más extendido, lo que resulta ventajoso, por ejemplo, en forma de manuales de usuario en español.

Raw Therapee



Este programa, a diferencia de los anteriores, no es una simple capa gráfica para DCRaw, sino que implementa sus propios algoritmos y sólo utiliza DCRaw como motor de carga de los archivos RAW. Este es uno de los errores más frecuentes que aparecen en los artículos sobre este programa que, debido a no leerse la documentación un poco, piensan que no es más que otra interfaz para DCRaw. El otro, es que suele atribuírsele un uso profesional que puede echar para atrás a mucha gente, cuando es un programa no mucho más complejo que, por ejemplo, UFRAW. Otro error frecuente debido a la falta de actualidad de los artículos es la licencia, que actualmente sí es GNU/GPL.
El principal inconveniente que le veo a este programa es la ausencia de la opción de curvas, que tan útil es, aunque, se espera que sea incluida en próximas versiones.
La web del programa es bastante completa llegando a incluir (no siempre disponible en proyectos de sofware libre) varios manuales y documentación variada.
Resulta interesante la opción de procesamiento en lote de imágenes, que permite un filtrado de las imágenes por diversos parámetros.

Conclusiones


La principal conclusión que puede extraerse de este breve estudio es que, afortunadamente, existen muchas alternativas para todos los niveles de usuario. En este sentido, RAWDrop es la opción más sencilla, pero demasiado poco versátil como para ser tenida en cuenta a poco nivel que se tenga. El resto de opciones, principalmente son interfaces gráficas para DCRaw, de entre las que se destaca UFRaw por su versatilidad y la importante comunidad que lo usa y da soporte. Otra opción también muy destacada es el RawTherapee que utiliza únicamente DCRaw para cargar los archivos RAW y resulta, por tanto, una alternativa más completa a los anteriores (al no ser sólo un cambio de interfaz). En resumen, aunque esto es sólo mi opinión, considero que estas últimas son las opciones más interesantes de todas. Personalmente estoy usando más RawTherapee actualmente, pero no descarto pasarme al UFRaw o usarlos indistintamente, según las conveniencias del momento.

lunes, 26 de abril de 2010

Proposición...

..pero no indecente, al menos no de momento...

¿Qué te parece si nos contamos aquí cosas que se nos quedan en el tintero?

lunes, 15 de febrero de 2010

Transcending CSS



Una vez terminada la primera vuelta al libro, pienso que es un buen momento para opinar sobre el mismo.
En primer lugar, se trata de un libro más orientado al diseño y a diseñadores (web en este caso) que al desarrollo. Esto, es algo que hace que su lectura sea más ligera que los habituales libros del tema y que no requiera tanto "ver para creer". En realidad, más que un manual al uso se trata casi de un manifiesto para intentar conseguir que las CSS escritas hoy sigan siendo válidas (a todos los niveles) mañana. Para ello, se comienza con una especie de estado del arte del desarrollo de hojas de estilo actualmente y se continua con un método de trabajo (workflow) que el autor, Andy Clarke, considera el más recomendable para trabajar en la web y que principalmente está basado en la creación de prototipos con HTML y CSS para un solo navegador como herramienta de validación con clientes y el resto del equipo.
Tras estos capítulos más introductorios, se trata el tema del diseño web mediante grids y se termina con el capítulo más orientado a la implementación de las ideas que se han venido tratando a lo largo del libro, que probablemente será el capítulo favorito de los lectores más técnicos.
En mi opinión, se trata de un libro muy interesante tanto para personal técnico como para personal de diseño ya que, todos podrán aprender cosas interesantes del mismo. Además, en el caso del personal técnico, considero que puede contribuir a entender mejor el trabajo del diseñador que, lejos de lo que en muchos casos se piensa, no tiene nada de mágico o esotérico sino que está basado en una serie de reglas que debe saberse cuando respetar y cuando romper. También decir que, al igual que siempre, no se puede tomar como una verdad universal y que, de hecho, varios aspectos tratados son, sin duda, algo polémicos, como el uso de los microformatos (lo que menos me gusta en este sentido es que ni siquiera se mencionan otras alternativas como RDFa).
Como inconveniente, decir que, a pesar de estar traducido a 8 idiomas, ninguno de ellos es el español, por lo que probablemente se termine por optar por su versión original en inglés.