Contenido

jsCron, portando Cron a Javascript

5 Ene

+ 8

En un momento de aburrimiento he estado implementado una versión de Cron para Javascript. Para los que no lo sepan, Cron es una utilidad del sistema Unix que permite programar tareas a lo largo del tiempo. Una de las utilidades más usadas para tareas como copias de seguridad, envío de mails, …

Para Javascript he pensado que sería interesante usar la misma estructura cron usa en el fichero crontab, donde se almacena la lista de tareas programadas.

35 17 * * * hola()

Hagamos un pequeño repaso a los parámetros de Cron (por orden):

  1. minuto [0-59]
  2. hora [0-23]
  3. dia del mes [0-31]
  4. mes [0-12]
  5. dia semana [0-7]
  6. ejecutable

Los * indican cualquier, por lo tanto en el ejemplo anterior indicamos que cada día a las 17:35 se ejecutará el script hola().

La hora especificada será la del navegador del usuario

Veamos unos ejemplos más:

* 16 * * * hola()

Cada día desde las 16:00 a las 16:59 se ejecutará hola().

30 6 1 * * showHola()

Ejecutamos showHola() el día 1 de cada mes a las 6:30 de la mañana.

Se trata de un sistema bastante rudimentario, pero funciona y aunque operadores como (/2) no están contemplados, dan mucho juego.

Codigo

var jsCron = {
		items:[],
		interval: null,
		parse: function(strUnix) {
				return strUnix.match(/^(\d+|\*) (\d+|\*) (\d+|\*) (\d+|\*) (\d|\*) +(\w+)/);
		},
		check: function() {
				var hoy = new Date();
				var test = [new Date(), hoy.getMinutes(), hoy.getHours(), hoy.getDate(), hoy.getMonth(), hoy.getDay()];

				for (var i in this.items) {
					var exec = 0;
					var t = this.parse(this.items[i][1]);
					for (var x in t)
				    if (t[x] && (t[x] == test[x] || t[x] == "*"))exec++;
					if (exec == 5 && this.items[i][0] == 0) {
							eval(t[6]).call();
							this.items[i][0] = 1;
					} else if (exec < 5 && this.items[i][0] == 1) {
						this.items[i][0] = 0;
					}
				}
		},
		set: function(strUnix) {
			if (!/^(\d+|\*) (\d+|\*) (\d+|\*) (\d+|\*) (\d|\*) +(\w+)/.test(strUnix)) return new Error("Formato invalido");
			this.items.push([0, strUnix]);
		},
		init: function(seg) {
			var seg = seg || 1000;
			this.interval = setInterval("jsCron.check()", seg);
		}
};
jsCron.init();

Modo de uso

Al igual que de un crontab debemos especificar un listado de tareas a programar, para ello usaremos el método set() e introduciremos la sentencia en el formato explicado anteriormente.

// Función hola();
function hola() {
   alert("Hola");
}

// Tarea programada
jsCron.set("35 17 * * * hola()");

Descargar Fichero JS (jscron)

Participa, Hay 8 Comentarios. →

2008 un año escrito en Javascript

5 Ene

+ 0

Jacob Seidelin ha hecho un excelente post recopilativo sobre los más relevante del año que hemos dejado atrás en relación al potencial de Javascript. Una muestra de que 2008 ha sido un año escrito en Javascript.

Participa, Hay 0 Comentarios. →

Extiende las posibilidad de Inspector de WebKit

5 Ene

+ 2

Inspector es el Firebug de WebKit/Safari y hace ya tiempo que vamos viendo su evolución y la adquisición de nuevas mejoras que completaban esta herramienta del navegador

Alvaro Videla ha extendido las posibilidades añadiendole un juego que ha portado de uno hecho en ActionScript del concurso de 25lines.com

fun_panel

El resultado, poco útil, permite ver las posibilidades y la facilidad de extender esta herramienta para ofrecernos ayudas y mejoras propias con el fin de personalizar y facilitar nuestra tarea.

Via

Participa, Hay 2 Comentarios. →

La calculadora tambien se hace 2.0

5 Ene

+ 1

Una muestra que la Web 2.0 está aquí es que hasta la calculadora se está inmersa en este mundo. Lo curioso es que tenga que hacer una petición ajax para cada cálculo… pero es una aproximación.

Participa, Hay 1 Comentario. →

RIP Internet Explorer 6

2 Ene

+ 32

Jesus Moreno me pasa esta imagen sacada de un artículo de Ajaxian que a su vez la sacaron de un artículo de Asa Dotzler en la que nos muestra la montaña rusa que forma esta gráfica del tanto por cierto de usuarios usando Internet Explorer 6 a lo largo de los últimos años.

3159496996_e995d120a0_o

Datos obtenidos de Market Share.

Debido a la aparición de PC’s más baratos, con Windows Vista e Internet Explorer 7 hacen que los anticuados navegadores empiecen a ir desapareciendo poco a poco. Algo más que lógico que los desarrolladores esperamos desde hace muuucho tiempo. ¿Tocará fondo en 2009?

Participa, Hay 32 Comentarios. →

aNieto2k 2008 recopilación de este último año

31 Dic

+ 11

Bueno, ya va terminando el 2008 y me parece interesante hacer una recopilación de datos interesantes de lo que este año ha significado para aNieto2k. No voy a extenderme mucho ya que es un día para preparar la noche así que allá vamos:

  1. Posts Escritos: 730 (731 contando este) (2007 1.068).
  2. Comentarios: 6.132 (2007 6.762)
  3. Pingbacks/Trackbacks: 2.367 (2007 2.195)
  4. Diferencia de visitas (con 2007): +59,90%

Además de estas cifras, han ocurrido cosas muy interesantes:

  1. Presentamos el nuevo theme
  2. Probamos Google Chrome
  3. Creamos nuestro propio framework javascript
  4. Descubrimos el corazón de Wordpress
  5. Tambien probamos Internet Explorer 8 Beta
  6. Intentamos cambiar la forma de leer los feeds (aún podemos hacerlo)
  7. Pasamos la barrera de los 3.000
  8. Vimos frente a frente la verdad
  9. Seguimos la llegada de Wordpress 2.7( y explicamos como adaptarnos a él, una y otra vez, incluso una vez más)
  10. Ofrecimos un espacio para promocionar eventos relacionados
  11. Entrevistamos a algunos de los grandes bloggers

Haciendo recuento me encuentro satisfecho por el año que hemos vivido, algo que supondrá un reto para superar en este año que entra.

Participa, Hay 11 Comentarios. →

jQuery Alert Dialogs, reemplazo para alert(), prompt() y confirm()

31 Dic

+ 8

jQuery Alert Dialogs, ofrece un reemplazo muy elegante a las funciones alert(), prompt() y confirm() de javascript.

jquery-alert-dialogs

¿Como usarlo?

Simplemente tendremos que añadir estas líneas a nuestro <head /> y dispondremos de esta nuevo funcionalidad.

<script src="/path/to/jquery.js" type="text/javascript"></script>
<script src="/path/to/jquery.ui.draggable.js" type="text/javascript"></script>

<script src="/path/to/jquery.alerts.js" type="text/javascript"></script>
<link href="/path/to/jquery.alerts.css" rel="stylesheet" type="text/css" media="screen" />

Una vez cargados los ficheros necesarios podremos llamar a las funciones que nos mostrarán las alertas.

jAlert()

jAlert es el sustituto de alert() y nos muestra alerta básica con un botón de aceptar para que el usuario acepte que ha visto el aviso.

jAlert('This is a custom alert box', 'Alert Dialog');

jPrompt()

Sustituto de prompt() que nos da la opción de introducir un valor desde la ventana.

jPrompt('Type something:', 'Prefilled value', 'Prompt Dialog', function(r) {
    if( r ) alert('You entered ' + r);
});

jConfirm()

Alternativa a confirm() en la que ofrecemos al usuario la opción de aceptar o cancelar una acción.

jConfirm('Can you confirm this?', 'Confirmation Dialog', function(r) {
    jAlert('Confirmed: ' + r, 'Confirmation Results');
});

Demo

Para verlos funcionando podemos verlos todos reunidos en esta demo que han montado

Consejo de uso

Personalmente estas modificaciones de funciones básicas, siempre me han dado miedo ya que deberían usarse como una alternativa y los sistemas propuestos siempre suelen ser muy dependientes del script, en este caso, si por cualquier cosa no es posible ejecutar jAlert(), jConfirm() o jPrompt() dejaremos de ofrecer al usuario la alerta necesaria para nuestra aplicación, por ese motivo os propongo usas un sistema que convierta esta opción en una alternativa y que en caso de fallar nos muestre su funcionalidad original.

//alert()
var oAlert = alert;
function alert(txt, title) {
    try {
        jAlert(txt, title);
    } catch (e) {
        oAlert(txt);
    }
}
alert("Hola", "Prueba");

//confirm()
var oConfirm = confirm;
function confirm(txt, title, func) {
    try {
        jConfirm(txt, title, func);
    } catch (e) {
        if (oConfirm (txt, title)) func();
    }
}
confirm("Hola", "Prueba", function(){
	alert("Prueba", "Superada");
});

//prompt()
var oPrompt = prompt;
function prompt(txt, input, title, func){
    try {
        jPrompt(txt, input, title, func);
    } catch(e) {
        func(prompt(txt, input, title));
    }
}
prompt("Hola", "Valor", "Prueba", function(r) {
	if (r) alert(r);
});

Participa, Hay 8 Comentarios. →

15 utiles herramientas para usuarios de Wordpress

29 Dic

+ 12

SixRevisions ha hecho una recopilación de 15 herramientas para usuarios de Wordpress que realmente aportan una utilidad al blog. En la lista hay herramientas que no había visto nunca y otras que me han sorprendido de lo que realmente aportan al blog, así que no te pases ni una, no tienen desperdicio.

  1. ScribeFire, convierte tu Firefox en un editor enriquecido conectado a tu blog.
  2. Wordpress Helper, toda la documentación de Wordpress en tu Firefox.
  3. Screen Grab to Wordpress, haz screenshots y envialos directamente a tu Wordpress.
  4. Wordpress Scanner, revisa la seguridad de tu blog.
  5. Broken Link Checker, plugin que se encarga de revisar los enlaces de tu blog y marcar los que ya no están disponibles.
  6. Google Syntac Highlighter, mejora estéticamente la visualización del código de tus posts. (Alternativas  WP-Syntax, WP-Chili, o SyntaxHighlighter Plus.)
  7. Insights, plugin que te permite enlazar tu contenido con contenido multimédia de sitios como Flickr, Youtube, Wikipedia…
  8. Windows Live Writer, Microsoft nos dá la aplicación necesaria para escribir offline nuestros artículos.(Para Mac tenemos ecto o Thingamablog)
  9. Revision Control, herramienta que permite controlar las revisiones de posts, ideal para blogs con multiples autores.
  10. Organize Series, un plugin ideal para crear series de artículos relacionados entre sí.
  11. Wordpress Comment Moderation Notifiers, herramienta con la que podremos moderar nuestros comentarios más rápidamente.
  12. Wordpress Comment Ninja, extiende las opciones de moderación de comentarios con este script de GreaseMonkey.
  13. Adserve, controla la publicidad de tuWordpress.
  14. Simple Tags, los tags nunca serán más fáciles, usando el Yahoo Term Extractions API este plugin te sugerirá los tags que poner.
  15. Twitme, postea en twitter desde tu Wordpress (Alternativas Twitter for Wordpress, Twitter Tools, Twitpress, y SimpleTwitter)

Participa, Hay 12 Comentarios. →

Bordes redondeados con CSS Sprites

29 Dic

+ 5

CSSGlobe publica un fantástico tutorial de como crear bordes redondeados con Sprites. Mientras esperamos a border-radius podemos usar esta alternativa que seguro nos sacará de algún problemilla

Participa, Hay 5 Comentarios. →

tyPhoGraphic, transformaciones CSS

29 Dic

+ 2

Hace ya muchos meses que venimos hablando las CSS Transformations y tambien de los navegadores que poco a poco se van sumando a esta nueva tecnología. Y es que aunque haya un debate bastante acalorado sobre llevar al nivel del diseño o no los movimientos de los elementos, hay que reconocer que son impresionantes.

tyPhoGraphic es la última herramienta con la que usar estas CSS Transformations  será más fácil todavía, aunque le encuentro 2 grandes problemas:

<div effect="zoomin" duration="1700" >2009</div>
<div effect="zoomout" duration="1600"  start="-200">2009</div>
<div effect="wobble" duration="1000" >2009!</div>
<div effect="shake" duration="1200" >2009!</div>

<div effect="shake" duration="1000" start="200" >Happy </div>
<div effect="waggle" duration="1200" >New</div>
<div effect="waggle" duration="1200" >Year!</div>

<div effect="zoomout" duration="800" start="500" >Party </div>

<div effect="zoomout" duration="400" >like </div>
<div effect="zoomin" duration="400" start="-100" >it's </div>
<div effect="zoomin" duration="800" >1999</div>
<div effect="shake" duration="50000" >

Aquí es donde está el primer problema, la inclusión de nuevos atributos a los elementos HTML nos hará que nuestras páginas no validen. El segundo problema, es que únicamente funciona en navegadores con CSS Transformations, lo que navegadores como Firefox 3.0, IE6, IE7, Opera 9.5,.. no funcionará el siguiente ejemplo.

Yo lo he visto con WebKit/iPhone y he tenido la impresión de estar viendo un video Flash.Sin duda es una muestra de lo que podremos hacer en un futuro.
Via

Participa, Hay 2 Comentarios. →