código
Obtener el espacio ocupado por las bases de datos de MySQL
En The Arctel Journal tienen un pequeño y útil fragmento de código MySQL para obtener el espacio ocupado por los datos de las distintas bases de datos MySQL de un servidor:
SELECT table_schema, count(*) TABLES, concat(round(sum(table_rows)/1000000,2),'M') rows,concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA,concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx,concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size,round(sum(index_length)/sum(data_length),2) idxfrac FROM information_schema.TABLES group by table_schema;
O la versión en Mb y miles de filas (en vez de GB y millones de filas):
SELECT table_schema, count( * )
TABLES , concat( round( sum( table_rows ) /1000, 2 ) , ‘K’ )
ROWS , concat( round( sum( data_length ) / ( 1024 *1024 ) , 2 ) , ‘Mb’ )
DATA , concat( round( sum( index_length ) / ( 1024 *1024 ) , 2 ) , ‘Mb’ ) idx, concat( round( sum( data_length + index_length ) / ( 1024 *1024 ) , 2 ) , ‘Mb’ ) total_size, round( sum( index_length ) / sum( data_length ) , 2 ) idxfrac
FROM information_schema.TABLES
GROUP BY table_schema;
Para ejecutarlo podemos recurrir a PhpMyAdmin, alguna herramienta similar, ejecutar el comando mediante la consola o crear un pequeño script que lo ejecute y muestre los resultados en pantalla…
Expresión regular para encontrar vídeos de YouTube en un texto
Con la siguiente expresión regular podremos encontrar los identificadores de los vídeos que se encuentren en vídeos de youtube (tanto como links como si están incrustados):
/youtube\.com\/watch\?v=([A-Za-z0-9._%-]*)[&\w;=\+_\-]*/
Esto permite extraer el identificador único del vídeo, que sirve para enlazarlo, incrustarlo u obtener su imagen. Por ejemplo, para obtener la URL de la imagen thumnail del vídeo podremos usar:
preg_match('/youtube\.com\/watch\?v=([A-Za-z0-9._%-]*)[&\w;=\+_\-]*/',$texto);
$img="http://i2.ytimg.com/vi/{$match[1]}/default.jpg";
Vía | d0t101101 en el Foro de Drupal.
Creación de un bot de twitter sencillo con PHP
Twitter tiene un API bastante sencillo sobre el cual se pueden desarrollar aplicaciones de un modo bastante fácil. Con unas pocas líneas podemos montar un bot de twitter que cada hora envíe un mensaje, como explico en BloqNum.
$username = 'nombreDeLaCuenta';
$password = 'passwordDeLaCuenta';
date_default_timezone_set('Europe/Madrid');
$hora = date('g');
if ($hora == '1')
$message = "Xa é a unha... ";
else
$message = "Xa son as ".$hora."... ";
for ($i = 0; $i < $hora; $i++){
$message .= 'TOLON! ';
}
$url = 'http://twitter.com/statuses/update.xml';
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "$url");
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
if (empty($buffer)) {
echo '--error-'.$message;
} else {
echo '--exito-'.$message;
}
Después, con un proceso de cron se automatiza la ejecución del cliente cada hora, para que se publique el mensaje cada 60 minutos. Este archivo enviará el mensaje cada vez que se visite, con lo cual si se quiere proteger habría que añadirle una contraseña o no ponerlo en una ruta accesible públicamente.
Mostrar un listado anidado de términos de taxonomía en Drupal
Buscando cómo mostrar un listado aninado de los términos (terms) de un vocabulario (una categoría de Drupal, o taxonomy), encontré este útil fragmento de código en Drupal.org. Para que funcione esto es necesario usar el módulo Taxonomy.
<?php
// El ID del vocabulario de la taxonomia del que queremos crear la lista de terminos
$vid = 10;
$depth = 0;
$num_at_depth = 0;
$tree = taxonomy_get_tree($vid);
print "<ul class=\"menu\">\n<li>";
foreach ($tree as $term) {
$diffdepth=0;
if ($term->depth > $depth) {
print "\n<ul>\n<li>";
$depth = $term->depth;
$num_at_depth = 0;
}
if ($term->depth < $depth) {
$diffdepth= $depth -$term->depth;
while ($diffdepth > 0){
print "</li>\n</ul>\n";
$diffdepth -- ;
}
$depth = $term->depth;
}
if (($term->depth == $depth) && ($num_at_depth > 0)) {
print "</li>\n<li>";
}
print l($term->name, 'taxonomy/term/' . $term->tid);
$num_at_depth ++;
}
print "</li>\n</ul>\n";
?> |
El crédito va al autor, billyboylindien
Reemplazo masivo en cadenas de texto con SQL
-
UPDATE table_name SET column_name = REPLACE(column_name,“original_string”,“replace_string”);
-
UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`,“picateclas.com/directorioantiguo/”,“picateclas.com/nuevodirectorio”)
Vía | LiewCF.
Reemplazar saltos de línea (/n) de un textarea con JavaScript
Reemplazar los saltos de línea (\n) de un textarea en una página web mediante javascript es muy sencillo usando una expresión regular. Espero que sirva a aquellos que queráis mejorar vuestra formación en java:
<html>
<head>
<script>
function nl2br(str){
str=str.replace(/\n/gi,"<br />");
return str;
}
function reformat(){
document.dummy.area.value=nl2br(document.dummy.area.value);
}
</script>
</head>
<body>
<form name="dummy" id="dummy">
<textarea name="area" id="area" rows="10" cols="50"></textarea><br />
<input type="button" name="nl2br" id="nl2br" onclick="reformat()" value="Eliminar Saltos de Línea" />
</form>
</body>
</html> |
Rotar una BufferedImage en Java
Me he llevado cierto tiempo encontrar una función para conseguir rotar 90 grados una imagen de tipo BufferedImage en Java, así que una vez he hallado cómo hacerlo qué menos que compartirlo por si os es útil:
public BufferedImage rotate90DX(BufferedImage bi)
{
int width = bi.getWidth();
int height = bi.getHeight();
BufferedImage biFlip = new BufferedImage(height, width, bi.getType());
for(int i=0; i<width; i++)
for(int j=0; j<height; j++)
biFlip.setRGB(height-1-j, width-1-i, bi.getRGB(i, j));
return biFlip;
} |
Y en el sentido inverso sería así…
public BufferedImage rotate90SX(BufferedImage bi)
{
int width = bi.getWidth();
int height = bi.getHeight();
BufferedImage biFlip = new BufferedImage(height, width, bi.getType());
for(int i=0; i<width; i++)
for(int j=0; j<height; j++)
biFlip.setRGB(j, i, bi.getRGB(i, j));
return biFlip;
} |
Vía | Snippet en Dzone.
Guía rápida de introducción a jQuery
jQuery es una librería muy útil para desarrollos web, y sobre todo para evitar reinventar la rueda al usar javascript, ya que nos ahorra muchos problemas de compatibilidad entre navegadores, carencias o limitaciones del lenguaje, etc.
A pesar de su gran documentación online o los libros sobre la librería publicados, puede que su sintaxis resulte un tanto extraña para un novato, además de no saber muy bien cuáles son las posibilidades reales de jQuery. Para ello, es muy útil este artículo de DotNetStacklers (es la primera parte, espero que pronto publiquen la segunda). Y por cierto, los desarrolladores en .NET pueden aprovechar para darle una oportunidad a jQuery ahora que se integrará con el Intellisense en Visual Studio…
Typeface.js: generando texto con Javascript, canvas y VML
Un problema habitual en el diseño web es conseguir que las fuentes se dibujen de la misma manera en cada navegador, ya que, a pesar de que CSS es un estándar, la implementación de CSS que hace cada navegador dista bastante de ser uniforme (¿alguien ha dicho Internet Explorer?).
La solución tradicional a este problema solía ser la de crear los textos necesario mediante imágenes. La ventaja de esto es que el aspecto en cada navegador sería exactamente el esperado, y no hay límites en cuanto a los efectos o fuentes que se quieran usar… Pero es muy poco flexible, ya que para cada texto hay que crear la imagen correspondiente.
La siguiente solución es la creación las imágenes mediante flash. Esta solución es bastante versátil, pero tiene el problema de la accesibilidad del texto de cara a su indexación por los motores de búsqueda (aunque mitigada con las últimas actualizaciones de Google, esto sigue siendo un problema de cara a la optimización del contenido para los buscadores).
Aquí es donde entra typeface.js: nos permite de una manera sencilla (ver el código a continuación), multiplataforma (no importa el navegador) y flexible (permite aplicar diversos efectos que los navegadores no implementan de una manera uniforme) dar estilo a los textos de la página. Con algo como esto ya se dibujarían los textos…
<script type="text/javascript" src="typeface-0.10.js"></script> <script type="text/javascript" src="helvetiker_regular.typeface.js"></script> <div class="myclass typeface-js" style="font-family: Helvetiker"> Text here in Helvetiker font... </div> |
Y uno de los resultados de uso podría ser el siguiente, sacado de su web…

Aunque evidentemente, esto no es tan maravilloso. El renderizado aún no es del todo eficiente, y aunque funciona bien para títulos y apartados concretos, dibujar toda la web mediante typeface.js es muy costoso. En cualquier caso, si os interesa no dudeis en echar un ojo a los ejemplos y a la explicación de su uso…
Más información | Typeface.js
Vía | Delicious Popular.
Peppy: un motor de selectores JS ultrarrápido para tus proyectos web
El programador James Donaghue ha lanzado recientemente un motor de selectores javascript bastante interesante, sobre todo por lo rápido que resulta. En la página de pruebas que ha montado para comparar su velocidad con otros motores queda el primero, superando a jQuery, Mootols, Prototype…
Además, es multinavegador y compatible con CSS3. Sin duda, una opción interesante para incorporar un motor de selectores a los proyectos web propios en los que no se quiera incluir una librería más pesada, ya que su tamaño (10Kb) lo hace ideal para ello.
Eso sí, el motor está aún en la versión 0.1 así que es probable que vaya saliendo que otro bug…
Más información | Noticia del lanzamiento
Vía | Ajaxian.