domingo, 24 de abril de 2016

JavaScript. Repetir una cadena n veces

En ocasiones nos encontramos con la necesidad de crear una cadena que sea el resultado de concatenar n veces un carácter u otra cadena más corta.

Evidentemente podemos realizar esta concatenación utilizando un bucle:

    var result = '';
    for (var i = 0; i < number; i++) {
        result += stringToRepeat;
    }
 

Pero ¿existe otra manera de hacerlo?

sábado, 2 de enero de 2016

Microsoft MVP 2016

Ayer recibí un correo de Microsoft que me hizo una gran ilusión:

Estimado/a Asier Villanueva,

Enhorabuena. Nos complace anunciarle el Premio MVP de Microsoft® de 2016. Este nombramiento se concede a los líderes excepcionales de la comunidad técnica que comparten de forma activa con otras personas su profundo conocimiento técnico así como su experiencia en el uso de la tecnología. Le agradecemos especialmente la contribución que ha realizado en las comunidades técnicas en el área de Visual Studio and Development Technologies a lo largo del pasado año.


Es un gran orgullo pasar a pertenecer a un colectivo como es el de los MVP de Microsoft.

Este reconocimiento me anima mucho en la medida en la que es la constatación de que el trabajo que vengo realizando resulta realmente útil a otros miembros de la comunidad de desarrolladores.

En adelante espero poder seguir aportando como hasta ahora o incluso más (si el tiempo libre me lo permite) y estar a la altura de lo que este galardón significa.

Para aquellos que no conozcáis los premios MVP de Microsoft y queráis obtener más información sobre ellos aquí os dejo el link:

Microsoft MVP Award


Feliz año 2016. Espero que vuestra entrada del nuevo año haya sido tan gratificante como la mía, y que a partir de ahora no haga más que mejorar.

jueves, 25 de junio de 2015

Jasmine. Matchers (III) - toThrow, toThrowError

Artículos anteriores:
Jasmine. Introducción. Creando el primer test
Jasmine. Matchers (I) - toBe, toEqual, toMatch, toBeDefined, toBeUndefined, toBeNull
Jasmine. Matchers (II) - toBeTruthy, toBeFalsy, toContain, toBeLessThan, toBeGreaterThan, toBeCloseTo

En este artículo voy a mostrar el funcionamiento de dos matchers de Jasmine un tanto especiales, se trata de matchers que, en lugar de comprobar que nuestro código no falla, nos ayudan a comprobar que nuestro código falla cuando debe de fallar y de la forma que debe de fallar.

Son los matchers toThrow y toThrowError que nos permiten comprobar que las funciones producen errores cuando esperamos que los produzcan, generalmente cuando reciben parámetros no válidos.

miércoles, 24 de junio de 2015

martes, 23 de junio de 2015

Jasmine. Matchers (I) - toBe, toEqual, toMatch, toBeDefined, toBeUndefined, toBeNull

Artículos anteriores:
Jasmine. Introducción. Creando el primer test

Jasmine implementa un importante número de funciones de comprobación o matchers.

Los matchers nos permiten comprobar si un valor cumple una condición determinada, o si no la cumple anteponiendo la palabra clave not al matcher.

Vamos a repasar estos matchers viendo ejemplos de su funcionamiento.

lunes, 22 de junio de 2015

Jasmine. Introducción. Creando el primer test

Jasmine es uno de los frameworks de pruebas de código JavaScript más utilizados. Como sus propios creadores indican no depende de ninguna otra librería JavaScript y no requiere de un DOM para ejecutarse.
Este articulo pretende ser el primero de una serie en la que iré explicando desde cómo descargar el framework y crear nuestro primer test hasta cómo personalizar las características del framework o utilizar el plugin jasmine-ajax que permite simular llamadas Ajax en los tests.

domingo, 21 de junio de 2015

SlickGrid. DataView (y IV) - Paginación

Artículos anteriores:

El objeto DataView provee también soporte para paginación en cliente, es decir si, como en nuestro ejemplo, tenemos el conjunto de datos completo descargado en cliente.

Para gestionar la paginación el objeto DataView dispone de dos métodos

  • getPagingInfo(): método que devuelve el estado actual de la paginación. Devuelve un objeto con cuatro propiedades:
    • pageSize: número de filas por página
    • pageNum: número de página actual. Es un índice basado en cero, es decir la primera página tiene un pageNum igual a cero.
    • totalRows: número total de filas del grid, sumando las de todas las páginas.
    • totalPages: número total de páginas. La última página se correspondería con un pageNum igual a totalPages menos uno.
  • setPagingOptions(args): método que establece las opciones de paginación. Recibe un objeto que puede tener dos propiedades:
    • pageSize: establece un nuevo tamaño de página (número de filas a mostrar por página). Si pageSize es cero todas las filas se muestran en una única página.
    • pageNum: establece la página actual. Un valor de 0 desplaza el grid a la primera página, mientras que un valor de (getPagingInfo().totalPages - 1) desplazará el grid a la última página.

y un evento:

  • onPagingInfoChanged: que se lanza cada vez que cambia el estado actual de paginación, ya sea porque se cambian las opciones o se cambia la página actual.