Mostrando entradas con la etiqueta Informática. Mostrar todas las entradas
Mostrando entradas con la etiqueta Informática. Mostrar todas las entradas

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, 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>

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.

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...

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, 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.

domingo, 14 de febrero de 2010

Particiones de disco en Windows 7

Una de las tareas más frecuentes a la hora de particionar un disco es la de crear una partición para los datos. El motivo es que, en caso de haber un problema con el sistema operativo, se puede formatear la unidad (o partición) que lo contiene y los datos almacenados en otras unidades no se tocan. Por otro lado, también ayuda a tener el ordenador mejor organizado.
Para realizar las particiones de disco con Windows XP resultaba sencillo tanto si se deseaba hacer con un programa específico (el más famoso era el Partition Magic) como si se deseaba hacer durante la instalación del sistema operativo. El problema con el Windows 7 es que el Partition Magic no es compatible (lleva varios años sin actualizarse), aunque también se podría hacer con una instalación portable en un lápiz.
Una solución para realizar esta tarea en Windows 7 puede ser utilizar las herramientas proporcionadas por el propio sistema operativo:

  1. Abrir Inicio -> Panel de Control -> Sistema y Seguridad -> Crear y formatear particiones de disco duro (abajo del todo)

  2. Se selecciona el volumen a reducir (normalmente C:) y se hace clic con el botón derecho, eligiendo la opción "Reducir Volumen".

  3. Se indica la reducción en MB (por ejemplo 50000 serían aproximadamente 50GB) y se procede a la reducción.

  4. Una vez reducido, aparecerá un espacio sin asignar en el disco. Botón derecho-> "Nuevo volumen simple"

  5. Se sigue el asistente asignando la letra que se desee y formateando después con NTFS

  6. Una vez que se acabe el formateo la nueva unidad estará lista para utilizar


Y con esto tendremos nuestra flamante nueva partición de datos: rápido, sencillo y para toda la familia, amigos ;)