jHeidi: cliente MySQL multiplataforma

jHeidi es una versión de Heidi realizado en Java para que se pueda ejecutar en otras plataformas y no solo en Windows.

jheidi.png

Entre las características que ofrece nos encontramos con:

  • Navegador de bases de datos, tablas y campos
  • Crear, actualizar y borrar BD, tablas, campos e índices
  • Ventana para queries
  • Administrador de usuarios
  • Mantenimiento de tablas
  • Administrador de conexiones
  • Exportar datos (CSV, HTML, …)
  • Importar CVS

jHeidi

Laboratorio: detectar parametros de la URL en Javascript

Algo bastante sencillo y que puede sernos útil es detectar los parámetros que se envían por URL para así modificar el comportamiento de nuestro Javascript, por ejemplo si se envía un parámetro o tiene cierto valor, se podría cargar un objeto o implementar una función.

El script sería el siguiente:

// Obtenemos la URL
var url = document.location.href;
// Nos quedamos con los parámetros
url = url.substring(url.lastIndexOf('?')+1);
// Dividimos los distintos parámetros
url = url.split('&');
// Almacenamos los parámetros en un array(param => valor)
var res = new Array();
for(var i=0; i

Si nuestra URL es amigable, no hay parámetros sino que se indican en la propia URL (http://servidor/metodo/accion/parametro/parametro), deberíamos hacer algo así:


//Obtenemos la Query String (URL - host)
var url = document.location.href;
url = url.substring(url.lastIndexOf(document.location.host)+1);
// Separamos mediante la barra (/)
var res = url.split('/');

Como se puede apreciar es muy sencillo, pero nos puede ser muy útil, sobre todo si queremos ganar en rendimiento y no cargar todo el js, que a veces no está muy optimizado y en todas las páginas se carga cuando a veces no sería necesario.

mod_qos: prioridades para peticiones en Apache

QoS (calidad del servicio) se trata mecanismos de control para proveer diferentes prioridades a diferentes usuarios, aplicaciones y conexiones, realmente es más gestión de recursos que calidad del servicio. Cuando queremos limitar el uso de Apache y dar prioridades a diferentes peticiones podemos usar mod_qos.

Ofrece mecanismos para gestionar:

  • Número máximo de peticiones concurrentes a una URL o a un dominio virtual.
  • Limitación del ancho de banda, ya sea por número de peticiones por segundo o kilobytes por segundo.
  • Posibilidad de detectar usuarios especiales que no sufriran las restricciones o lo harán en menor grado.
  • Denegar operaciones no autorizadas
  • Limitaciones en el nivel TCP, por ejemplo el número máximo de conexiones permitidas desde una IP.

mod_qos

Vía / Apache-es

Selenium IDE: plugin para Firefox para realizar testing

Selenium IDE es un plugin para Firefox que nos va a facilita la labor de realizar juegos de pruebas en nuestras aplicaciones web. Para ello nos permite grabar, editar y debuguear tests. Con la grabación, podremos grabar la navegación que realizamos en Firefox y después reproducirla. Aunque no es tan solo una herramienta de grabación, además permite editar las grabaciones.

Las características que nos ofrece son:

  • Grabación y reproducción de casos de test
  • Selección inteligente de campos mediante sus ids, nombres o XPath
  • Autocompletado para todos los comandos de Selenium
  • Paso a paso
  • Debug y puntos de parada
  • Guardar los test como HTML, scripts de Ruby, …

Disponemos de un gran tutorial de uso aquí

Selenium IDE

Gracias Taufpate por el aviso.

Variables del servidor útiles en PHP

Resumen de algunas variables que podemos obtener del servidor y que nos pueden ayudar en nuestras aplicaciones:

  • $_SERVER[‘REQUEST_URI’]: devuelve la URL con la que se accede al script que se está ejecutando. Devolvería algo así como /script.php?param1=val1&param2=val2.
  • $_SERVER[‘DOCUMENT_ROOT’]: devuelve el directorio raíz del servidor web, algo así como /usr/tusitio/www.
  • $_SERVER[‘HTTP_HOST’]: devuelve el nombre del dominio (por ejemplo, sentidoweb.com). Esto puede ser muy útil cuando se quieren usar paths absolutos en vez de relativos y queremos que funcione la aplicación en el servidor de desarrollo y en el de real.
  • $_SERVER[‘HTTP_USER_AGENT’]: nos devuelve información del navegador, cuál es y en qué sistema operativo se ejecuta. Útil si tenemos que hacer algún apaño por incompatibilidad de navegadores, para llevar tema de estadísticas o por ejemplo para devolver un archivo para descarga dependiente de S.O.
  • $_SERVER[‘PHP_SELF’]: devuelve el nombre del fichero que se está ejecutando.
  • $_SERVER[‘QUERY_STRING’]: devuelve la lista de parámetros que se pasan por URL (lo que sigue después de la interrogación).
  • $_SERVER[‘REMOTE_ADDR’]: devuelve la dirección IP de la máquina que está accediendo al script.
  • $_SERVER[‘SCRIPT_FILENAME’]: devuelve el path absoluto del script que se está ejecutando.

8 useful server variables available in PHP

CodeIgniter 1.6.2

codeigniter.pngHa salido la nueva versión de CodeIgniter, la cual repara una treintena de errores y añade algunas novedades, entre las que nos encontramos mejoras en el Active Record, posibilidad de indicar el código de retorno http en la función redirect(), nuevo fichero para manejar las constantes, mejoras en el File Helper, y en la librería ZIP, Helper para compatibilidades entre PHP4 y PHP5.
Recomendable su actualización

Laboratorio: publicar en Twitter mediante CURL

Para mí, uno de los mayores fracasos de Twitter es su API, una limitación de su uso increíble para algo que le podría dar mucho juego a la aplicación. Ahora mismo no sé en cuánto está el límite, pero la posibilidad de realizar una aplicación basada en Twitter es una pesadilla.

Para aquellos que no quieran sufrir lo que hemos sufrido con TwitterPoster (los espacios en blanco es porque la gente actualiza su imagen y no podemos recuperar la de todos los usuarios por el límite en el API de Twitter), les recomiendo usar Twitter mediante CURL.

Os paso un script sencillito que he realizado:

<?php
// Primer hacemos login
$url ="https://twitter.com/sessions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
// Por si tienen limitación por navegador
curl_setopt($ch, curlOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)");
// Poned una ruta para las cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, '/temp/');
curl_setopt ($ch, CURLOPT_COOKIEFILE, '/temp/');
curl_setopt ($ch, CURLOPT_POSTFIELDS, "username_or_email=[usuario]&password=[contraseña]");
// Para que funcione el https
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, curlOPT_SSL_VERIFYHOST, 2);
curl_exec ($ch);
// Cargamos el home, porque Twitter añade dos campos ocultos para poder publicar por web
$url ="http://twitter.com/home";
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec ($ch);
// Recuperamos los campos ocultos
preg_match('//', $result, $match);
$authenticity_token = $match[1];
preg_match('//', $result, $match);
$siv = $match[1];
// Insertamos el texto
$res = $url ="http://twitter.com/status/update";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'siv='.$siv.'&authenticity_token='.$auth.'&status=[texto]');
curl_exec ($ch);
curl_close ($ch);
unset($ch);
?>

¿Qué fallo tiene este script? pues que si cambian el HTML (campos de formulario, …) o las URLs deja de funcionar, pero al menos no tenemos limitaciones. Eso sí, es más costoso para sus servidores y para los nuestros, porque en vez de hacer una llamada, hacemos 3, y en nuestro caso, a parte parseamos una página para obtener dos campos ocultos.

Recursos para generar nubes de etiquetas

Aunque sea algo que cada vez veo menos en la web, sí que es algo característico de la web2.0, por lo que quien necesite ayuda para crear sus nubes de etiquetas (tag cloud), podrá encontrarla en este listado de recursos.

Tutoriales, consejos y referencias

Inspiración

Generadores

Everything Tag Clouds

JIT: JavaScript Information Visualization Toolkit

Impresionante la librería que ha creado Nicolas Garcia Belmonte que permite crear gráficas RGraph, Treemaps o Hyperbolic Trees. ¿Y qué tipo de gráficas son estas? pues explicándolo llanamente, las que muestran relación entre elementos usándo árboles, pero algo más visuales, centrando nodos.
jit.png
Por lo poco que he visto, está desarrollado en Canvas y para IE lo simula mediante VML. También estaría bien mirar si permite ampliar nodos dinámicamente.
JIT