fragmentos útiles

Obtener el espacio ocupado por las bases de datos de MySQL

Lunes, Marzo 15th, 2010 | fragmentos útiles | Sin Comentarios

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…

Tags: , ,

Expresión regular para encontrar vídeos de YouTube en un texto

Jueves, Enero 28th, 2010 | código, fragmentos útiles | Sin Comentarios

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.

Tags: , , , , , , ,

Mostrar un listado anidado de términos de taxonomía en Drupal

Miércoles, Mayo 20th, 2009 | drupal, fragmentos útiles | Sin Comentarios

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

Tags: , , ,

Reemplazo masivo en cadenas de texto con SQL

Miércoles, Mayo 6th, 2009 | fragmentos útiles | Sin Comentarios
Actualizar muchas entradas de una base de datos que contengan un determinado texto puede ser tedioso (me refiero a programar algún script para que lo haga, porque hacerlo a mano seria digno del siglo XIX si hay muchos datos…).
Así, para actualizar los registros de una tabla entera aplicando el patrón de reemplazo deseado, sólo habrá que utilizar una consulta SQL:
  1. UPDATE table_name SET column_name = REPLACE(column_name,“original_string”,“replace_string”);
Un ejemplo de aplicación sería actualizar todos los links hacia un determinado host o URL de los posts de una base de datos de wordpress para que apunten a otro:
  1. 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

Jueves, Enero 8th, 2009 | fragmentos útiles, javascript | 1 comentario

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>

Tags: ,

Rotar una BufferedImage en Java

Jueves, Diciembre 11th, 2008 | fragmentos útiles, java | Sin Comentarios

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.

Usa Javascript para resolver 12 problemas comunes del diseño web

Jueves, Octubre 16th, 2008 | fragmentos útiles, jquery | 1 comentario

En Noupe han hecho una útil lista de doce problemas típicos que se suelen dar en el diseño web, cada uno con su correspondiente solución usando Javascript. Las soluciones dadas se basan en plugins de jQuery, por la potencia y sencillez que ofrece este framework, pero podrían portarse a otros frameworks o desarrollarlos con javascript puro y duro (otra cosa sería aspectos como portabilidad, rendimiento, etc.).

Los problemas que han recopilado son los siguientes:

  1. Establecer alturas iguales.
  2. Solución al problema de IE6 con los PNG transparentes.
  3. Cambiar clases CSS con Javascript
  4. Selectores basados en el navegador en CSS (tan simple como: $('html').addClass($.browser);)
  5. Dar soporte a alturas y anchos mínimos/máximos
  6. Centrar elementos (vertical y horizontalmente)
  7. Mostrar etiquetas Q en Internet Explorer
  8. Aumentar el tamaño de los elementos clickeables (en los enlaces)
  9. Carga perezosa
  10. bgiframe: alivia el problema de trabajar con los z-index en Internet Explorer.
  11. ieFixButtons: arregla el comportamiento lleno de bugs de los botones en Internet Explorer (6 y 7)
  12. Arreglar el “overflow”

Sin duda, un post que conviene tener a mano.

Cambiar la Hoja de Estilos (CSS) mediante JavaScript

Miércoles, Octubre 8th, 2008 | css, fragmentos útiles, javascript | Sin Comentarios

Uno de los objetivos del blog es la publicación de aquellos fragmentos de código que sean útiles en el día a día, y eso es precisamente con lo que lo voy a inaugurar. Con la siguiente función javascript se puede cambiar la hoja de estilos de la página web (el CSS) a cualquiera de las incluídas en la página.

La función en cuestión es la siguiente:

function cambiarHojaDeEstilos(title) {
	            var i, a, main;
	            for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
		            if(a.getAttribute("rel").indexOf("style") != -1 &amp;&amp; a.getAttribute("title")) {
			            a.disabled = true;
			            if(a.getAttribute("title") == title) a.disabled = false;
		            }
	            }

Para usarla, basta tener varias hojas de estilos cargadas en la página…

<link title="hoja1" href="ejemplo1.css" rel="stylesheet" type="text/css">
<link title="hoja2" href="ejemplo2.css" rel="stylesheet" type="text/css">
<link title="hoja3" href="ejemplo3.css" rel="stylesheet" type="text/css">

… e invocar a la función. Por ejemplo, para cambiar al hacer click en un enlace:

<a href="#" onclick="cambiarHojaDeEstilos('hoja1');">Cambia el CSS</a>

A continuación podéis descargar un pequeño ejemplo con una demostración simple: Cambiar Hoja de Estilos con JS

Vía | A List Apart.