21 de febrero de 2016

:: Sentencia Explain en MySQL

La sentencia EXPLAIN de MySQL, quizás poco conocida y utilizada puede servirnos para optimizar las consultas sobre nuestra base de datos.
Esta sentencia devuelve una relación de registros  con información sobre cada una de las tablas empleadas en la consulta a la que acompaña.

El formato de la misma es la siguiente:
EXPLAIN SELECT * FROM tabla1, tabla2; 

Los registros devueltos como resultado de la consulta anterior  muestran la lista las tablas en el orden en el que MySQL las leería al procesar la consulta, es decir, el primer registro (fila) devuelto sería la primera tabla que se lee, y último registro sería la última tabla que sería leída.
Este orden es importante ya que nos indicará el plan de ejecución de la consulta y, por tanto, será información relevante para llevar a cabo las posibles optimizaciones.

Adicionalmente puede utilizarse la sentencia EXTENDED para obtener información más detallada del plan de ejecución. En este caso, nos devolverá una columna adicional denominada “filtered”, que nos indicará el porcentaje aproximado de filas filtradas por la condición empleada en la tabla.

El formato es el siguiente:
EXPLAIN EXTENDED SELECT * FROM tabla1, tabla2; 
Utilizada esta sentencia con SHOW WARNINGS nos mostrará la consulta reescrita tras la actuación del optimizador.
 EXPLAIN SELECT * FROM tabla1, tabla2 SHOW WARNINGS; 
Otro posible uso sería con PARTITIONS, para obtener información sobre las tablas particionadas de la consulta.
 EXPLAIN PARTITIONS SELECT * FROM tabla1, tabla2;
Tras la ejecución de la consulta con la sentencia EXPLAIN obtendremos una serie de filas con distintos campos, que pasaremos a describir a continuación:

  • id: identificador de cada una de las tablas procesadas en la consulta
  • select_type: indica el tipo de SELECT que se ha ejecutado. En función del tipo de SELECT nos permitirá identificar qué tipo de consulta se trata; Existen varios tipos: SIMPLE, PRIMARY, UNION, DERIVED…
  • table: nombre de la tabla a la que se refiere la información de la fila. También, puede ser alguno de los siguientes valores:
    • : tabla resultante de la unión de las tablas cuyos campos id son M y N
    • : tabla resultante de una tabla derivada (una subconsulta en la cláusula FROM)cuyo id es N
    • : tabla resultante de una subconsulta cuyo id es N
  • partitions: particiones cuyos registros coinciden con los de la consulta (cuando se utiliza EXPLAIN PARTITIONS)
  • type: tipo de unión utilizado
  • possible_keys: indices disponibles sobre la tabla. Si esta columna es NULL, indica que no hay índices que puedan ser utilizados para optimizar la consulta
  • key: índice utilizado por MySQL para ejecuar la consulta. Puede ocurrir que el nombre del índice no esté presente en la lista de possible_keys
  • key_len: tamaño del índice utilizado por MySQL para ejecutar la consulta.
  • ref: columnas o constantes comparadas con el índice especificado en la columna key
  • rows: número de filas aproximado que MySQL considera que deben ser examinadas para ejecutar la consulta
  • filtered: porcentaje estimado de filas que serán filtradas por la condición de la consulta (cuando se utiliza EXPLAIN EXTENDED)
  • Extra: información adicional sobre cómo MySQL ejecuta la consulta

 Más información sobre MySQL: http://dev.mysql.com/doc/refman/5.7/en/




17 de febrero de 2016

:: Wordpress. Eliminar la versión del código

Una de las buenas prácticas en Wordpress consiste en eliminar la cabecera que muestra información sobre la versión instalada.
La cabecera que aparece cuando consultamos el código fuente de una página es la siguiente:
< meta name="generator" content="WordPress 4.4.2" / >


El código que genera esta metaetiqueta es el siguiente:

< meta name="generator" content="WordPress " / >

Para eliminar el código que genera esta información, debemos localizar el fichero "functions.php" dentro de nuestro tema y añadiremos la sentencia siguiente:
remove_action('wp_head', 'wp_generator');

De esta manera eliminaremos esta información del código fuente de nuestro portal.

15 de febrero de 2016

:: Alfresco. Definir usuario administrador

En Alfresco, y en este caso en la versión 4.0d en ocasiones es necesario indicar que un determinado usuario sea administrador.
Para ello podemos seguir esta serie de pasos a través de la asignación a un determinado grupo:

1.- En la entrada de menú "Más", seleccionamos "Grupos"

2.- Pulsamos el botón "Examinar" para mostrar todos los grupos existentes

3.- En la primera columna -de las tres que nos aparecen- seleccionamos "administracion (site_administracion)

4.- En la segunda columna seleccionamos "administracion (site_administracion_SiteManager)"

5.- En la última de las columnas buscamos el usuario requerido y lo añadimos a este grupo
De esta manera el usuario asignado será usuario administrador de los sitios creados en nuestro Alfresco, una opción más rápida y cómoda que otras posibles alternativas.

12 de febrero de 2016

:: CSS. Cómo centrar elementos HTML

Breve resumen sobre cómo centrar elementos HTML, teniendo en cuenta si son elementos de bloque o de línea.
Algo a tener en cuenta y que puede sernos de ayuda cuando estamos maquetando una web.

Fuente: Campus MVP

10 de febrero de 2016

:: Alfresco. Habilitar las notificaciones vía email

Para habilitar las notificaciones vía email a los usuarios, por ejemplo las invitaciones a unirse a un sitio, debemos añadir la siguiente línea en el fichero "alfresco-global.properties" ubicado en la ruta "c:\alfresco\tomcat\shared\classes\" (suponiendo que nuestro Alfresco se encuentra en "c:\alfresco").

### E-mail site invitation setting ###
notification.email.siteinvite=true

Tras este cambio deberemos reiniciar el servicio de Alfresco, para que los cambios tengan efecto.

7 de febrero de 2016

:: Alfresco. Modificar el puerto por defecto

Para modificar el puerto al que responde Alfresco, tendremos que modificar dos ficheros.

1.- En el fichero "server.xml" ubicado en "c:\alfresco\tomcat\conf\" buscaremos el literal "8080" y lo modificaremos por el valor que deseemos.
El valor a modificar es el que aparece en negrita.
               < Connector port="8080" URIEncoding="UTF-8" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" maxHttpHeaderSize="32768" / >


2.- En el fichero "share-config-custom.xml" ubicado en "c:\alfresco\tomcat\shared\classes\alfresco\web-extension\" debemos buscar el literal "8080" y sustituirlo por el puerto que deseemos.


3.- Reiniciaremos el servicio de Alfresco y este ya responderá por el nuevo puerto especificado.

2 de febrero de 2016

:: Alfresco 5. Cómo habilitar el protocolo IMAP

El protocolo IMAP (Internet Message Access Protocol), es un protocolo de aplicación que permite el acceso a mensajes almacenados en un servidor de Internet.
IMAP permite a los usuarios acceder a sus e-mails directamente en el servidor y sólo descargar -a la máquina local- los mensajes y archivos adjuntos que le resulten de interés.

Para habilitar el protocolo IMAP en nuestro servidor Alfresco, deberemos añadir las siguientes líneas al fichero: "alfresco-global.properties" ubicado en "c:/alfresco/tomcat/shared/classes/" (considerando que tenemos nuestro alfresco en c:/alfresco)

### IMAP
imap.server.enabled=true
imap.server.port=143
imap.server.host=IP del servidor

Tras reiniciar nuestro Tomcat, al lado de los sitios creados en Alfresco, nos aparecerá la posibilidad de añadirlo a nuestros favoritos de IMAP, representado por un icono.

:: Liferay. Obtener los usuarios activos desde Groovy

Una solución rápida para obtener la relación de usuarios activos en Liferay 7.4 es por medio de un script en Groovy. Para ello accederemos a...