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.

Dart » Nuevo Lenguaje de Programación Estructurada para la Web.

Dart LogoMe entero en el Chromium Blog y en el Google Code Blog del lanzamiento de un nuevo lenguaje de programación estructurada, diseñado específicamente para desarrollar aplicaciones web… su nombre: Dart.

¿Es necesario otro lenguaje de programación? Antes de crucificar la nueva apuesta de Google, vamos a revisar de qué se trata Dart.

En los comunicados, se menciona que las metas de Dart son:

  1. La creación de un lenguaje estructurado y flexible para la programación web.
  2. Hacer que Dart sea familiar y natural para los programadores, por lo tanto, que sea fácil de aprender.
  3. Proveer un alto desempeño en todos los navegadores web modernos y entornos desde dispositivos móviles hasta servidores.

Los dos primeros puntos considero los cumple a cabalidad, si vemos un par de ejemplos:

El clásico “Hola Mundo!”

main() {
  print('Hello, Dart!');
}

Calcular un número de la secuencia de Fibonacci

int fib(int n) {
  if (n <= 1) return n;
  return fib(n - 1) + fib(n - 2);
}
 
main() {
  print('fib(20) = ${fib(20)}');
}

Ahora bien, para evaluar el tercer punto, es necesario conocer las dos maneras en cómo se ejecuta Dart:

  • Usando una máquina virtual nativa (Dart VM), la cual se espera sea integrada en Chrome.
  • Compilando el código de Dart para ejecutarse por el motor JavaScript del navegador web.

Aquí el último punto es el importante, pues toda aplicación que desarrollemos en Dart podrá ser ejecutada en cualquier navegador web moderno.

Si están interesados en este nuevo lenguaje, los invito a visitar la web oficial de Dart, donde encontrarán tutoriales, un PDF con la espeficicación del lenguaje, una buena descripción de cada componente de su librería y varios ejemplos listos para usarse.

MooTools 1.4.1 corrige varios bugs

MooTools LogoHace unas horas fue liberada una actualización menor del poderoso framework de JavaScript, preferido entre conocedores: MooTools Core 1.4.1, a casi un mes de la salida de su versión anterior.

En esta ocasión no encontraremos novedades, ya que sólo se trata de una actualización que corrige numerosos bugs encontrados en la versión 1.4.0. A pesar de ello, se recomienda su inmediata actualización.

Enlaces de descarga:

Fuente: MooTools Blog (incluye lista de bugs corregidos).

¿Desarrollas Aplicaciones para Linux? Conoce el nuevo Ubuntu App Developer

¿Eres desarrollador de software y te interesa crear aplicaciones (apps) para Ubuntu? Si es así, estas son geniales noticias para tí. Canonical acaba de liberar un nuevo sitio web denominado Ubuntu App Developer, destinado a todos los desarrolladores que deseen programar, diseñar, implementar y publicar sus aplicaciones.

Ubuntu App Developer

Me llamó mucho la atención la herramienta Quickly, que usa PyGTK para la creación de aplicaciones para Ubuntu. Aquí un video bastante claro y descriptivo de dicha herramienta.

¿Interesado? Accede entonces al Ubuntu App Developer en developer.ubuntu.com y no olvides seguir las noticias via Twitter por @UbuntuAppDev.

Vía: OMG! Ubuntu!

Llegan las Extensiones Comerciales a MySQL

Oracle / MySQL LogosMe entero via The H Open del anuncio de Oracle sobre la disponibilidad de extensiones comerciales para MySQL. Estas nuevas extensiones sólo se agregarán a la Enterprise Edition, haciendo a un lado por completo a la Community Edition (si, la que usamos los mortales como tú u yo), dejándola en clara desventaja.

El anuncio de inmediato ha causado controversias, pues mientras hay personas que afirman es el fin de MySQL como proyecto open source, existen otros le dan la bienvenida a las extensiones comerciales.

Antes de que Oracle llegara, la Enterprise Edition sólo incluía herramientas externas (MySQL Enterprise Monitor y MySQL Enterprise Backup) como parte del paquete, pero las nuevas extensiones comerciales estarán integradas a fondo en MySQL.

Esto me recuerda cuando Oracle hizo algo similar con OpenOffice, lo cual todos sabemos cómo terminó: Comunidad molesta » Creación de LibreOffice » Adopción generalizada de LibreOffice » Oracle “donando” OpenOffice a la Comunidad. ¿Sucederá lo mismo con MySQL?

PostgreSQL 9.1 con Replicación Síncrona, Tablas UnLogged y Ordenación según Idioma

PostgreSQL LogoHace un par de días fue liberada la nueva versión del sistema de gestión de bases de datos (database management system o DBMS) preferido por los conocedores: PostgreSQL 9.1, la cual se presenta con varias interesantes novedades:

  • Synchronous Replication: Replicación síncrona (controlada por sesión) ahora con alta disponibilidad con consistencia entre múltiples servidores.
  • Per-Column Collations: Soporte para ordenamiento (por base de datos, tabla o columna) de texto que respete las reglas lingüísticas de cada idioma. Ahora es posible definir el collation al crear una tabla y al momento de ejecutar alguna consulta con SELECT.
  • Unlogged Tables: Son tablas especiales que mejoran el desempeño, pues son más rápidas al escribir datos, pero son susceptibles a truncamientos en caso de fallos. Este tipo de tablas están pensadas para datos efímeros (información temporal, caché, etc).

Como siempre, los invito a leer las novedades a fondo de esta nueva versión.

Pueden descargar los binarios y código fuente de PostgreSQL 9.1, disponibles para FreeBSD, Linux, MacOS X, Solaris y Windows, o si usas alguna distro de Linux, podrías esperar a que el repositorio respectivo se actualice.

Fuente: PostgreSQL News.

MooTools 1.4.0 con delegación de eventos en Core

MooTools LogoHace unos días fue liberada una actualización del poderoso framework de JavaScript, preferido entre conocedores: MooTools Core 1.4.0, así como de MooTools More 1.4.0.1.

Lo más importante de esta nueva versión es la inclusión de la delegación de eventos (event delegation) en Core (antes estaba en More).

¿Qué es la delegación de eventos? Es cuando le asignamos un listener a un elemento padre para monitorear a sus nodos hijos (dentro del DOM) en vez de asignar dichos eventos a cada uno de ellos, lo cual es mcuho más eficiente para contenido dinámico con muchos nuevos elementos.

Para más información (y ejemplos) los invito a consultar la documentación oficial sobre el tema.

Enlaces de descarga:

Fuente: MooTools Blog (con la lista completa de novedades).

jQuery 1.6.4

jQuery LogoLos chicos de jQuery ayer liberaron jQuery 1.6.4, la cual es una actualización menor que corrige varios bugs de su versión previa liberada hace un par de semanas, por lo que se recomienda su actualización.

Para descargar jQuery 1.6.4, 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.6.4.min.js"></script>

Fuente: jQuery Blog.

Nuevo instalador de MySQL para Windows

MySQL para WindowsOracle acaba de anunciar la disponibilidad de un nuevo instalador de MySQL para Windows, que permite instalar al mismo tiempo MySQL Server, MySQL Workbench, conectores, bases de datos de ejemplo y documentación.

Cabe mencionar que también incluye un sistema de actualización integral para todos los componentes, muy útil cuando sean liberadas futuras versiones.

Descarga: Nuevo instalador de MySQL para Windows.

Via: The H Open.

jQuery 1.6.3 cierra agujero de seguridad XSS

jQuery LogoLos chicos de jQuery ayer liberaron jQuery 1.6.3, la cual es una actualización menor que corrige varios bugs y cierra un agujero de seguridad.

Lo más destacado de esta versión:

  1. Corrige un vector de ataque XSS, el cual muchos sitios están usando para seleccionar elementos usando location.hash permitiendo la inyección de scripts en la página. Ahora cualquier cadena pasada a $() no puede contener etiquetas HTML (obviamente tampoco scripts) si tiene el caracter “#” precediéndola.

  2. Se ha eliminado temporalmente (regresará en alguna futura versión de jQuery) el soporte para el API requestAnimationFrame, ya que todas las animaciones iniciadas en pestañas no visibles sólo eran ejecutadas cuando dichas pestañas obtenían el enfoque, ocasionando que la velocidad de animación fuera exagerada.

  3. Se ha mejorado el manejo de los nombres de atributos de datos en HTML5. El API $().data() no sólo maneja los datos para uso interno de jQuery y sus plugins, ahora también lee los valores iniciales de los atributos de data- en HTML5.

Para descargar jQuery 1.6.3, 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.6.3.min.js"></script>

Fuente: jQuery Blog.