CDNJS – Completo CDN para Librerías JavaScript

Al desarrollar algún proyecto web, es muy común usar el CDN (Content Delivery Network) de Google, e incluso el de Microsoft, con la desventaja de que sólo incluyen las librerías más populares (jQuery, MooTools, etc). ¿Y si necesito backbone.js, coffee-script, less.js, socket.io o alguna otra librería JavaScript no tan popular?

CDNJS es la solución, pues contiene un extenso catálogo de librerías JavaScript, listas para ser usadas en nuestros proyectos.

Por cierto, CDNJS usa los servidores de CloudFlare, con lo cual podemos estar seguros de un alto nivel de estabilidad y disponibilidad de las librerías.

Enlace: cdnjs.com

Share

Actualiza automáticamente el navegador web al hacer cambios en archivos CSS

CSSrefresh es un pequeño archivo JavaScript que podemos usar en la etapa de desarrollo de nuestros proyectos web. Su función es monitorear los archivos CSS, de tal forma que al editarlos (y guardarlos) se aplicarán los cambios en el navegador web, sin tener que refrescar manualmente la página web respectiva.

[CSS Refresh]

Enlace: CSS Refresh.

Como pueden ver, pueden incluir el script directamente …

<head>
   <link rel="stylesheet" type="text/css" href="css/site.css" />
   <script type="text/javascript" src="js/cssrefresh.js"></script>
</head>

… o usar el bookmarklet disponible.

Share

¿Sabes cuánto CSS3 soporta tu navegador web?

¡La siempre activa y creativa Lea Verou lo hace de nuevo! Acaba de presentar un interesante test para verificar el nivel de soporte de CSS3 en navegadores web.

[¿Exactamente sabes cuánto CSS3 soporta tu navegador web?]

Enlace: CSS3 Test.

Por cierto, los resultados del test en los navegadores actuales son:

  • Chrome Canary, WebKit nightlies, Firefox Nightly: 64%
  • Chrome: 63%
  • Firefox 10: 61%
  • Safari 5.1, iOS5 Safari: 60%
  • Opera 11.60: 56%
  • Firefox 9: 58%
  • Firefox 6-8: 57%
  • Firefox 5, Opera 11.1 – 11.5: 55%
  • Safari 5.0: 54%
  • Firefox 4: 49%
  • Safari 4: 47%
  • Opera 10: 45%
  • Firefox 3.6: 44%
  • IE9: 39%

¿Sólo IE9? Así es, el test no funciona en IE8 para abajo… pero como dice la propia Lea:

The test won’t work on dinosaur browsers like IE8, but who cares measuring their CSS3 support anyway?

:-)

Share

HTML5 Please

¿Quieres empezar a usar HTML5 pero temes perder visitantes por falta de soporte en los diversos navegadores web? El interesante servicio HTML5 Please enlista todas las nuevas características de HTML5, y nos dice cuáles de ellas son seguras de usar, cuáles debemos usar con precauciones y cuáles mejor no usarlas.

Y lo mejor de todo, al dar clic en cada opción nos ofrece fallbacks y polyfills, para empezar a usar HTML5 hoy mismo.

Enlace: HTML5 Please.

Share

jQuery 1.7 y los nuevos .on() y .off() para eventos

jQuery LogoLos chicos de jQuery liberaron hace un par de días jQuery 1.7, introduciendo una nueva forma de trabajar con eventos.

Para descargar jQuery 1.7, usen los siguientes enlaces directos:

Ya que los enlaces previos pertenecen al jQuery CDN, pueden usarlos directamente en sus proyectos. Obviamente, el recomendado en la edición minificada:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script>

Novedades en jQuery 1.7

La principal novedad de esta versión son los nuevos APIs .on() y .off() para eventos, cuya finalidad es unificar la funcionalidad de .delegate() y .bind(). La sintaxis de ambos es:

$(elements).on( events [, selector] [, data] , handler );
$(elements).off( [ events ] [, selector] [, handler] );

Cuando se establece un selector, .on() es similar a .delegate() ya que asigna un manejador de eventos delegado filtrado por dicho selector. Cuando el selector se omite, entonces su comportamiento es como .bind().

No te preocupes si en tus proyectos usas los métodos existentes para asignar eventos, todos ellos aún son válidos en jQuery 1.7

Algunos ejemplos:

$('a').bind('click', myHandler);
$('a').on('click', myHandler);
 
$('form').bind('submit', { val: 42 }, fn);
$('form').on('submit', { val: 42 }, fn);
 
$(window).unbind('scroll.myPlugin');
$(window).off('scroll.myPlugin');
 
$('.comment').delegate('a.add', 'click', addNew);
$('.comment').on('click', 'a.add', addNew);
 
$('.dialog').undelegate('a', 'click.myDlg');
$('.dialog').off('click.myDlg', 'a');
 
$('a').live('click', fn);
$(document).on('click', 'a', fn);
 
$('a').die('click');
$(document).off('click', 'a');

Otras novedades que valen la pena mencionar:

  • Desempeño mejorado en la delegación de eventos.
  • Mejor soporte para HTML5 en IE 6/7/8
  • Mejoras en las animaciones.
  • Soporte para el Asynchronous Module Definition (AMD).
  • El objeto jQuery.Deferred ha sido extendido con un nuevos manejadores de progreso y métodos de notificación.
  • ¡Y mucho más! Te invito a consultar la documentación sobre jQuery 1.7.

Fuente: jQuery Blog.

Share

“Algoritmo” no es una palabra de cuatro letras

¡Tenía que compartir esta presentación a todos mis colegas desarrolladores! :-)

“Algorithm: is Not a Four Letter Word” es el título de una excelente presentación creada por Jamis Buck del equipo de 37Signals, donde habla acerca de los algoritmos y el porqué deben formar parte de nuestro entrenamiento de programación.

[Algorithm: is Not a Four Letter Word]

Enlace: “Algorithm: is Not a Four Letter Word”

Vía: NetTuts+.

Share

MySQL Workbench 5.2.35 con Plugins para PHP

MySQL Workbench LogoHa sido liberada una aplicación favorita entre Administradores de Bases de Datos y Desarrolladores Web: MySQL Workbench 5.2.35.

Se menciona como principal novedad el soporte para el método nativo de autentificación en Windows (Native Windows Authentication Method) y la creación de cuentas de usuarios por medio de este método. Cabe mencionar que esta característica sólo está disponible para la edición comercial de MySQL Server (de nuevo Oracle hace a un lado a la edición comunitaria).

La novedad que si vale la pena mencionar es la integración de un par de plugins para PHP que permitirán ahorrarnos valioso tiempo, los cuales puedes encontrarlos en el menú Plugins » Utilities.

  • Copy as PHP Code (Connect to Server). Este plugin tomará los parámetros de la conexión de base de datos abierta actualmente y creará el código PHP correspondiente.

    $host="p:localhost";
    $port=3306;
    $socket="/var/mysql/mysql.sock";
    $user="root";
    $password="";
    $dbname="";
     
    $con = new mysqli($host, $user, $password, $dbname, $port, $socket)
    	or die ('Could not connect to the database server' . mysqli_connect_error());
     
    //$con->close();
  • Copy as PHP Code (Iterate SELECT Results). Este plugin tomará la consulta (query) actual y generará el código PHP para ejecutarla, iterando a través de los resultados. Además, si se usan @variables SQL las convertirá en $variables PHP para ser enlazadas a la sentencia antes de su ejecución.

    Por ejemplo, para la siguiente consulta SQL

    set @before_date = '1990-01-01';
    set @after_date = '1980-01-01';
     
    SELECT
        emp_no, first_name, last_name, hire_date
    FROM
        `employees`.`employees`
    WHERE
        `hire_date` < @before_date AND `hire_date` > @after_date;

    … obtendremos el siguiente código PHP.

    $query = "SELECT emp_no, first_name, last_name, hire_date FROM `employees`.`employees` WHERE `hire_date` < ? AND `hire_date` > ?";
    $before_date = '';
    $after_date = '';
     
    $stmt->bind_param('ss', $before_date, $after_date); //FIXME: param types: s- string, i- integer, d- double, b- blob
     
    if ($stmt = $con->prepare($query)) {
        $stmt->execute();
        $stmt->bind_result($emp_no, $first_name, $last_name, $hire_date);
        while ($stmt->fetch()) {
            //printf("%s, %s, %s, %s\n", $emp_no, $first_name, $last_name, $hire_date);
        }
        $stmt->close();
    }

¡No conozco MySQL Workbench! ¿De qué se trata?

Para quienes aún no lo conozcan, MySQL Workbench incluye:

  • Modelado de Bases de Datos.
  • Consultas SQL (reemplaza a MySQL Query Browser).
  • Administración del Servidor (reemplaza a MySQL Administrator).

Descarga e instalación de MySQL Workbench 5.2.35

Si eres desarrollador web y MySQL es el RDBMS de tu preferencia, te sugerimos descargar MySQL Workbench 5.2.35; están disponibles los instaladores binarios para Windows, MacOS X y Linux (Ubuntu, Fedora, SuSE, RedHat).

En el caso particular de ArchLinux, instalar MySQL Workbench 5.2.35 es sumamente sencillo:

$ sudo pacman -Sy mysql-workbench

¿Por qué demoré tanto tiempo en publicar sobre el tema? Por algún motivo que desconozco, esta última versión de MySQL Workbench aún no estaba disponible en el repositorio [community] de ArchLinux, hasta el día de hoy (cuando normalmente sólo demoran unas cuantas horas), y como no me gusta publicar sobre servicios y aplicaciones que no he probado, pues prefería dejar en stand-by este post.

Share