jueves, 20 de junio de 2013

Javascript: use strict

Muchas librerías Javascript contienen un extraño código en sus entrañas: 'use strict'. No se trata de una palabra clave de Javascript pues va escrita entre comillas, pero su uso en muy importante ya que le indica al motor de ejecución de scripts que use el modo estricto. Dicho modo es más restrictivo y un poco más seguro, ya que da errores de ejecución en sentencias que normalmente pasaría. El "modo estricto" viene promovido desde la 5ª edición de la especificación del lenguaje ECMAScript, pero no todos los motores de Javascript lo usan. Para los programadores es importante su uso a la hora de desarrollar librerías Javascript y depurar errores ya que, entre otras cosas, obliga a declarar las variables. Los desarrolladores deben programar "mejor" (con más cuidado), prestando más atención a los errores que normalmente se pasan por alto debido a la flexibilidad de JavaScript en modo no estricto, con lo que el código resultante es "mejor".

El modo estricto puede definirse a nivel de módulo o restringido a un ámbito concreto. Por ejemplo puede hacerse que sólo esté activo dentro del contexto de una función. En el siguiente ejemplo 'use strict' se restringe al interior de la función:

(function(){
    'use strict';
})();

Referencias

sábado, 8 de junio de 2013

Como crear un disco de reparación de Windows en un USB

Recientemente he necesitado crear un disco de reparación de Windows para arreglar la instalación de un portátil con arranque dual (Windows 7 y Ubuntu 12.04 LTS) en el que estuve moviendo las particiones. El problema es que ese portátil tiene estropeado el lector DVD hace años. Por suerte, aunque ya tiene unos añitos, es lo bastante moderno como para que sea capaz de arrancar desde una unidad USB (pendrive). Así que me puse a investigar como crear un disco de arranque en una unidad USB y la verdad es que es bastante sencillo: Windows incorpora una utilidad e línea de comandos llamada DISKPART que es perfecta para eso.


Paso 1: Crear un disco de reparación de Windows

Lo primero es lo primero y en este caso habrá que crear un disco de reparación de Windows. Para ello sólo hay que abrir el Panel de control >> Sistema y seguridad >> Copias de seguridad y restauración >> Crear un disco de reparación del sistema. Por desgracia Windows 7 sólo permite grabar un disco de reparación en un medio físico: es decir un CD o un DVD. Así que no hya más remedio que crear el disco y luego ya lo pasaremos al pendrive.

Reparación Windows

PASO 2: Preparar el pendrive

Una vez hemos creado el disco de arranque en un CD o DVD hay que iniciar la utilidad DISKPART. Para ello basta con escribir DISKPART en el cuadro de búsqueda del menú de inicio de Windows. Una vez arrancado el programa, la secuencia de comandos para crear un disco USB arrancable es la siguiente:

list disk
select disk n
clean
create partition primary
select partition 1
active
format fs=fat32
assign
exit

En lugar de la "n" en el segundo comando hay que escribir el número del disco USB, según la lista que aparece tras escribir el primer comando. En nuestro caso era el 5, pero en cada ordenador será diferente. Ten en cuenta que la partición primaria del disco seleccionado se perderá para siempre, borrándose todos los datos allí almacenados y sin posibilidad de recuperación. Asegúrate de que no te importa perder esos datos antes de ejecutar DISKPART. Ojo: Si se selecciona un número de disco erróneo, el resultado puede ser catastrófico. Podría borrarse toda la información del disco duro principal. No nos hacemos responsables de los posibles errores cometidos tras leer este artículo.

DISKPART

PASO 3: Copiar los archivos del disco de arranque al pendrive

Ya tenemos un disco de arranque USB. Ahora sólo falta copiar todos los archivos del CD o DVD de arranque que creamos antes sobre el disco USB. Pero antes hay que hacer que los archivos de sistema sean visibles desde el explorador de archivos. Para ello hay que abrir una ventana del explorador y acceder a las opciones de carpeta. Por ejemplo Inicio >> Equipo >> Organizar >> Opciones de carpeta y búsqueda >> Ver. Luego hay que activar la opción Mostrar archivos, carpetas y unidades ocultos y desactivar la opción Ocultar archivos protegidos del sistema operativo. Ya podrás realizar la copia de la forma habitual y ya tendrás un disco de arranque USB con las utilidades de reparación de Windows. Te recomendamos que al finalizar restaures las opciones de carpeta a su estado anterior.


Bonus track: Otros comandos de DISKPART

Algunos de los comandos de DISKPART son los siguientes: (la lista detallada se encuentra aquí)

  • list disk
    Muestra la lista de discos del equipo.

  • list partition
    Muestra la lista de particiones del disco seleccionado.

  • list volume
    Muestra la lista de volúmenes del equipo.

  • select disk[=n]
    Selecciona un disco por número o bien muestra el disco seleccionado.

  • select partition[=n/l]
    Selecciona una partición por número, letra de unidad o punto de montaje o bien muestra la partición seleccionada.

  • select volume[=n/l]
    Selecciona un volumen por número, letra de unidad, punto de montaje o ruta de acceso o bien muestra el volumen seleccionado.

  • detail disk
    Muestra información detallada del disco seleccionado.

  • detail partition
    Muestra información detallada de la partición seleccionada.

  • detail volume
    Muestra información detallada del volumen seleccionado.

  • create partition primary [size=n][offset=n][id=byte/guid][noerr]
    Crea una partición primaria.

  • create partition extended [size=n][offset=n][noerr]
    Crea una partición extendida.

  • create partition logical [size=n][offset=n][noerr]
    Crea una partición lógica sobre una partición extendida.

  • delete partition [noerr][override]
    borra la partición seleccionada.

  • create volume simple [size=n][disk=n][noerr]
    Crea un volumen simple.

  • delete volume [noerr]
    Borra el volumen seleccionado.

  • assign [[letter=l]/[mount=ruta de acceso]][noerr]
    Asigna una letra de unidad o un punto de montaje a la partición seleccionada.

  • active
    Establece la partición seleccionada como activa.

  • extend [size=n][noerr]
    Extiende el volumen seleccionado con el espacio contiguo no asignado.

  • remove [[letter=l]/[mount=ruta de acceso]/[all]][noerr]
    Quita una letra de unidad o un punto de montaje de la partición seleccionada o quita todas las letras de unidad y puntos de montaje actuales.

  • help
    Muestra la ayuda.

  • exit
    Detiene el programa.

Bonus track x2: Instalar Ubuntu desde un disco USB

Curiosamente existe un método muy sencillo para preparar un disco de instalación de Ubuntu en una unidad USB. Consiste en utilizar una utilidad para Windows llamada Universal USB Installer. Podéis encontrar un tutorial Aquí. Básicamente hay que descargar la versión de Ubuntu deseada desde la página oficial que vendrá en formato ISO listo para grabar en un DVD y usar la utilidad Universal USB Installer para grabarlo en un DVD. Sencillo... ¿Ehh?

lunes, 3 de junio de 2013

Herramientas de programación web: Twig

Hoy voy a hablar un poco de Twig, una herramienta más enfocada al diseño web que a la programación que viene integrada en el framework Symfony2, pero que puede utilizarse también por separado.

Twig es un motor de plantillas para PHP similar a Smarty. Es un proyecto de código abierto (open source) ofrecido bajo licencia BSD y desarrollado por Fabien Potencier, el creador de Symfony. Por ello es lógico que Twig sea el motor de plantillas por defecto de Symfony2.

Al igual que otros motores de plantillas, Twig ayuda a separar de forma sencilla la lógica de la aplicación (código PHP) de la presentación (HTML/CSS). Es una herramienta muy potente pero a la vez muy flexible que permite diseñar plantillas de presentación muy complejas sin usar instrucciones PHP, haciendo que el código HTML/CSS final sea mucho más legible.


Ejemplo

El siguiente es un ejemplo básico de plantilla Twig:

<!DOCTYPE html>
<html>
  <head>
    <title>Client List</title>
  </head>
  <body>
    <h1>Client List</h1>
    <ul>
    {# Recorrido por la lista de clientes #}
    {% for client in clients %}
      <li>
        <a> href="/client/{{ client.id }}">
          {{ client.name }}
        </a>
      </li>
    {% else %}
      No se han encontrado clientes.
    {% endfor %}
    </ul>
  </body>
</html>

Variables, filtros y funciones

Uando Twig podemos acceder al contenido de una variable simplemente poniendo su nombre entre llaves dobles: {{ var }}. Además podemos acceder a las propiedades de un objeto usando la sintaxis {{ obj.attr }}. Este mecanismo es tan potente y flexible en Twig que buscará primero como elemento (obj['attr']); si no existe buscará como atributo (obj.attr); y por último si no existe buscará como método (obj.getAttr()). Otra característica de Twig es que podemos aplicar filtros a las variables para modificar su comportamiento. Por ejemplo para formatear una fecha antes de imprimirla en pantalla: {{ date | date('d/m/Y H:i') }}. Los filtros además pueden encadenarse de forma que se ejecuten uno detras de otro. Así {{ text | striptags | upper }} eliminaría los tags HTML del texto y lo escribiría en mayúsculas.


Estructuras de control

En Twig hay una serie de instrucciones que se escriben entre {% ... %}.

  • {% if cond1 %}...{% elseif cond2 %}...{% else %}...{% endif %}
  • {% for item in array %}...{% else %}...{% endfor %}
  • {% set var = value %}
  • Etc.

Comentarios

Los comentarios se escriben entre {# ... #}:


Referencias

Adroid Studio

Android Studio

Como la mayoría sabréis, en el pasado Google I/O se presentó un nuevo entorno de desarrollo (IDE) para programar aplicaciones para el sistema operativo Android llamado Android Studio. Se trata de una nueva herramienta de programación que sustituye al problemático Eclipse. El nuevo IDE, que tiene versiones para Windows, Linux y Mac, está basado en IntelliJ IDEA y según parece está siendo muy bien valorado por los desarrolladores a pesar de que aun no tiene una versión definitiva.

Algunas de sus características son:

  • Herramientas de construcción extensible.
  • Potente editor de código.
  • Interfaz gráfica de usuario mejorada.
  • Fácil acceso a los servicios de Google.
  • Herramientas específicas para Android.
  • Desarrollo de código abierto.

Personalmente aun no he tenido la oportunidad de probarlo pero los chicos de El Androide Libre si que lo han hecho y han publicado una mini guía en tres artículos sobre el nuevo Android Studio:


Otras referencias

miércoles, 24 de abril de 2013

Herramientas de programación web: LESS

Cualquier programador o diseñador de páginas web sabe que el lenguaje que se usa para dar estilo a las páginas web HTML es el CSS (Cascading Style Sheets). Se trata de lenguaje de marcas muy potente que permite separar el contenido de la presentación, aplicando estilos a los elementos HTML de forma individual o global, pero que tiene una deficiencia enorme: no se puede parametrizar. Es decir CSS no permite definir variables, operaciones o funciones.

LESS es una extensión del lenguaje CSS que permite usar variables, aplicar operaciones aritméticas (sumas, restas, etc.) y definir funciones para código repetitivo. Desgraciadamente los navegadores no entienden LESS, por lo que será necesario compilar el código convirtiéndolo en CSS. Sin embargo para usar LESS en un proyecto web no se requiere usar plug-ins ni nada parecido. Hay varias formas de compilar las plantillas LESS:

  • La primera es hacerlo de forma estática a través de un compilador. Se trata de compilar las plantillas LESS convirtiéndolas en hojas de estilo CSS normales que se usarán de la forma habitual. Hay varias aplicaciones que convierten plantillas LESS en archivos CSS como Simpless o Less.app y existe un compilador oficial llamado lessc (para Linux):
  • $ lessc styles.less > styles.css
    
  • La segunda forma consiste en usar la librería javascript node.js en el lado del servidor para compilar de forma dinámica las plantillas LESS. Esta es la forma más habitual.
  • La tercera y última forma de usar LESS es a través de javascript del lado del cliente usando less.js. Esta sólo se recomienda para proyectos muy pequeños o para entornos de desarrollo, ya que es necesario compilar la hoja de estilos en cada ejecución, lo que puede ralentizar mucho la ejecución.

Origen y desarrollo

LESS fue desarrollado por Alexis Sellier, conocido como cloudhead, como un proyecto de código abierto que actualmente está mantenido por the LESS core team. Su uso es libre y gratuito.


Sintaxis de LESS

No voy a extenderme en la sintaxis de LESS, aunque voy a poner un ejemplo de algunas de las estructuras más importantes. Para más información sobre la sintaxis consultar los enlaces al final del artículo.

Variables: Podemos definir variables y darles cualquier valor. Los nombres de variable empiezan siempre con @ y podemos usarlas a lo largo del código siempre que las necesitemos.

@rojo: #C00000;
@verde: #008000;
@azul: #0000FF;

h1 { color: @rojo; }
a { color: @verde; }
a:hover { color: @azul; }

Operaciones aritméticas: LESS permite aplicar operaciones como sumas, restas o multiplicaciones. Por ejemplo se pueden sumar dos colores o multiplicar pixels.

@ancho: 100px;
@azul: #000080;
@azul-claro: (@azul + #111);

.azul-claro {
    background-color: @azul-claro;
    width: (@ancho * 2);
}

Mixings: Esta construcción permite aplicar las propiedades de un conjunto de reglas a otro conjunto de reglas, permitiendo parametrizaciones e incluso el uso de valores por defecto.


.borde-simple(@color-borde: black) { border: solid 1px @color-borde; } #container { .borde-simple; } #error { .borde-simple(#FF0000); }

Reglas Anidadas: LESS soporta una sintaxis alternativa a CSS con respecto a jerarquía de clases en forma de clases anidadas. Por ejemplo:

#header {
    width: 30px;
    h1 { float: left; color: red; }
    h2 { float: right; color: blue; }    
}

...se convertirá en:

#header { width: 30px; }
#header h1 { float: left; color: red; }
#header h2 { float: right; color: blue; }

Funciones de Color LESS soporta una gran variedad de funciones para transformar colores y obtener información de un color.

  • lighten(@color, 10%): Devuelve un color un 10% mas claro.
  • darken(@color, 10%): Devuelve un color un 10% mas oscuro.
  • saturate(@color, 10%): Devuelve un color un 10% más saturado
  • desaturate(@color, 10%): Devuelve un color un 10% menos saturado
  • fadein(@color, 10%): Devuelve un color un 10% menos transparente
  • fadeout(@color, 10%): Devuelve un color un 10% más transparente
  • spin(@color, 10): Devuelve un color con 10 grados de tono mayor.
  • spin(@color, -10): Devuelve un color con 10 grados de tono menor
  • hue(@color): Devuelve el valor del matiz del color.
  • saturation(@color): Devuelve el valor de la saturación del color.
  • lightness(@color): Devuelve el valor de la luminosidad del color.

Conclusiones

LESS es una herramienta muy potente para el desarrollo web que eleva CSS al nivel de lenguaje de programación con lo que la creación de hojas de estilo se convierte en una parte más del proceso de desarrollo de software.


Enlaces

viernes, 19 de abril de 2013

Nueva guía de diseño para tabletas Android

El parque de tabletas con sistema operativo Android ha crecido mucho en los últimos tiempos. Sin embargo, a diferencia de lo que ocurre con el iPad, la mayoría de las aplicaciones de Android no disponen de una versión específica para ellas. Esto puede ser debido a que las aplicaciones se adaptan automáticamente a cualquier tamaño de pantalla. A pesar de ello Google piensa que los desarrolladores deberíamos esforzarnos en adaptar nuestras aplicaciones para su uso en tabletas de los más diversos tamaños y por ello ha presentado una nueva lista de verificación de calidad de aplicaciones para tabletas o lo que es lo mismo, una guía de estilo para desarrollo de aplicaciones para tabletas.

Además de esta guía de estilo y de diversos consejos útiles para el desarrollo de aplicación para tabletas, a partir de ahora Google Play permitirá subir capturas de pantalla específicas para tabletas de 10" y 7", de forma que el usuario podrá ver como se ve la aplicación en un dispositivo del mismo tamaño que el que se va a usar.

La lista de verificación de calidad de aplicaciones para tabletas se puede resumir en los siguientes puntos:

  1. Prueba la calidad básica de la aplicación.
  2. Optimiza tus diseños para pantallas grandes.
  3. Aprovecha el área de pantalla adicional disponible en tabletas.
  4. Utiliza Iconos y otros objetos diseñados para pantallas de tabletas.
  5. Ajusta las tipografías y objetos táctiles para las pantallas de tabletas.
  6. Ajusta el tamaño de los widgets para pantallas de tabletas.
  7. Ofrece características adicionales para usuarios tabletas.
  8. Escoge la versión de Android adecuadamente.
  9. Declara las dependencias hardware correctamente.
  10. Declara que la aplicación tiene soporte para pantallas de tabletas.
  11. Muestra fotos de la IU específica para tabletas en Google Play.
  12. Sige los consejos de buenas prácticas para la publicación en Google Play.

Enlaces

Modern.IE - Un entorno de pruebas para Internet Explorer

¿Cuantas veces después de desarrollar tu página web con Firefox o Chrome te has dado cuenta que no funcionaba en Internet Explorer? ¿Cuantas veces te ha llamado un cliente para decirte que el maravilloso diseño que le has hecho no funciona en su Windows XP con IE8? ¿Cuantas veces has tenido que montar un Windows XP "pirata" en VirtualBox o VMWare para solucionar un problema que únicamente ocurre en IE6?

Por suerte Microsoft lo sabe y se ha apiadado de nosotros, pobres programadores y diseñadores, y ha lanzado modern.IE, un conjunto de herramientas para ayudar a los desarrolladores a probar sus diseños web en las diferentes versiones Internet Explorer, incluyendo IE6, IE7, IE8, IE9 y el más moderno IE10.

moden.IE

El sitio web modern.IE, que está totalmente traducido al Español, proporciona de forma gratuita un detector de código incompatible con versiones antiguas de IE. También da sugerencias de mejora para de tu página web para IE y otras plataformas. Además ofrece ejemplos de código y consejos sobre buenas prácticas en el diseño web. Y por si eso fuera poco modern.IE pone a nuestra disposición un amplio conjunto de archivos de máquinas virtuales preconfiguradas con las más típicas configuraciones (IE6-WinXP, IE7-Vista, IE8-WinXP, IE8-Win7, IE9-Win7, ...) para varios programas (VMWare, virtualBox, ...) y diversos sistemas operativos (Windows, Linux y Mac).

moden.IE

Enlaces