Closures en PHP5.3

Closures son bloques de código que pueden ser pasados a una función y que pueden manejar variables que están definidas en el mismo ámbito. Algo que puede ser bastante útil cuando queremos repetir un código que solo se ejecutará en un lugar determinado y no queremos definir una función a nivel de clase para poder usarla.

Un vistazo a un ejemplo nos podrá ayudar de mejor manera:

function replace_in_array ($search, $replacement, $array) {
$map = function ($text) use ($search, $replacement) {
if (strpos ($text, $search) > 50) {
return str_replace ($search, $replacement, $text);
} else {
return $text;
}
};
return array_map ($map, $array);
}

Como se puede ver se trata de definir una función con una serie de parámetros, indicar qué variables del mismo ámbito puede usar y una vez definida, realizar la llamada a la función.

Closures en PHP5.3

Vía / Spinning de web

MySQLTuner: consejos para mejorar el rendimiento de MySQL

MySQLTuner es un script en Perl que realiza un SHOW STATUS y ofrece una serie de consejos fáciles de entender de cómo mejorar el rendimiento en nuestro servidor MySQL.
Este script no te soluciona nada, solo te ofrece consejos que se deberían implementar. Siempre es importante mejorar las queries que se ejecutan para que el rendimiento a nivel de servidor sea menos necesario.
MySQLTuner
Vía / The Pythian Group

ExtSQL: Extended Usage Statistics for SQL

ExtSQL es una serie de modificaciones y parches realizados sobre MySQL y PostgresSQL que permiten realizar monitorizaciones e informes sobre el estado de la base de datos, del servidor, la actividad de los usuarios. Las consultas se realizan mediante queries SQL, las cuales quieren que se añadan al estándar SQL. Actualmente, la mayor parte del trabajo se ha realizado en MySQL, ya que están a la espera de la respuesta de la comunidad de PostgreSQL.

Por ejemplo, para saber el número de selects e inserts realizados por todos los usuarios desde que el servidor arrancó, sería así:

SHOW STATISTICS Com_select, Com_insert, Questions FROM user;

Dando el siguiente resultado:

+----------+-------------+------------+------------+
| user     | Com_select  | Com_insert | Questions  |
+----------+-------------+------------+------------+
| bandala  | 8302675     | 95973      | 23153940   |
| sandymao | 1702812     | 6205       | 3829023    |
| ponnetli | 24909       | 4784       | 95646      |

ExtSQL

Vía / VivaLinux

Gracias David por el aviso

Eventum: gestor de tareas desarrollado por MySQL

Eventum es un sistema para la gestión de tareas y seguimiento de errores que ha desarrollado MySQL y que ellos mismos utilizan.
eventum.png
Posee las típicas características de aplicaciones parecidas como dotProject: creación de proyectos, tareas, administración, envío de emails, etc…
Eventum

xmpphp: libería Jabber para PHP

xmpphp es una librería que permite realizar acciones sobre el protocolo XMPP, en el cual está basado Jabber o GTalk.

Un ejemplo sencillo para mandar mensajes sería el siguiente:

<?php
include("xmpp.php");
$conn = new XMPP('talk.google.com', 5222, 'username', 'password', 'xmpphp', 'gmail.com', $printlog=False, $loglevel=LOGGING_INFO);
$conn->connect();
$conn->processUntil('session_start');
$conn->message('someguy@someserver.net', 'This is a test message!');
$conn->disconnect();
?>

Una clase que nos puede ayudar mucho en algunas tareas como en el envio de alertas o avisos.

xmpphp

Gracias David por el aviso

Time picker en jQuery

Curioso script en jQuery que permite transformar una caja de texto en un seleccionador de tiempo. Pinchando sobre ella nos saldrán las horas que podemos elegir, y al movernos sobre las horas, aparecerán los minutos y así con el resto de los datos.

timepicker.png

Su utilización es muy fácil, tan solo habrá que ejecutar lo siguiente:

$(function(){
$('#test-1').timepickr();
});

A parte se puede configurar indicando que horas, minutos, segundos y etiquetas (am/pm) se pueden elegir, los formatos o incluso que datos mostrar o no.

jquery.timepickr.js

Vía / WebAppers

Borrar queries lentas en MySQL5.1

MySQL 5.1 añade la posibilidad de programar eventos, pudiendo así ejecutar tareas de forma automática. Una de las tareas más comunes es la de eliminar consultas lentas que aún no han acabado de ejecutarse.
Esta tarea se puede realizar mediante un prodecimiento almacenado que realiza un PROCESS LIST y que comprueba las sentencias con más de 200s (configurable) que están en estado executing o las que está en Spleep.
Purge process list from slow queries/idle connections
Vía / The Data Charmer

__autoload en PHP5

En PHP5 existe una funcionalidad muy interesante a la hora de crear una aplicación o un framework. Se trata del método __autoload que nos permite ejecutar código cuando se intenta instanciar a una clase que aún no ha sido definida aún.

Esto nos permitiría hacer un include del fichero de la clase cuando se vaya a ejecutar, así nos ahorramos muchos includes al principio de cada script.

function __autoload($class_name) {
require_once $class_name . '.php';
}
// El código anterior deberá ir en la clase y cuando vayamos a instanciarlo, como a continuación, se ejecutará
$obj  = new MyClass1();
$obj2 = new MyClass2();

El código se puede mejorar para que coja el código de distintas partes o librerías.

__autoload

Propel: ORM para PHP

Propel es un ORM para PHP que facilita la labor de desarrollo de aplicaciones web, gracias a la capa que transforma el tratamiento de la BD mediante objetos, con la que se puede recuperar, insertar y modificar datos.

No es necesario preocuparse por las conexiones de la BD y escribir SQL. Tampoco es necesario escapar datos o realizar casting. Tan solo es necesario definir la base de datos en formato XML u obtener la definición desde una base de datos ya existente.

Propel