viernes, 9 de mayo de 2014

Libera espacio en Gmail

¿Eres usuario de Gmail? En la mayoría de los casos los usuarios de Gmail optamos por "archivar" prácticamente todos los mensajes en lugar de eliminarlos. La barrera de 15GB (que no deja de crecer) nos hace pensar que son ilimitados.

El problema surge cuando somos también usuarios de Google Drive y necesitamos apurar esos 15GB. Yo me he encontrado recientemente con 9GB de espacio ocupado por el correo debido a decenas de miles de correos que ya no necesito.

¿Cómo hacemos limpieza?


Google ha implementado un buscador relativamente potente en su cliente web de Gmail. Además de las típicas búsquedas por palabras y direcciones de correo existen otras palabras clave que pueden ayudarnos en nuestra tarea identificando los correos más prescindibles (y pesados) de nuestra bandeja de entrada.

Buscar correos con archivos adjuntos


Es posible filtrar los correos con archivos adjuntos poniendo en el buscador has:attachment.


Este comando admite modificadores para especificar el tipo de archivo, por ejemplo:
  • has:attachment avi OR wmv nos mostrará los archivos con esas extensiones de video
  • has:attachment ppt OR ppx nos muestra los resultados con archivos de powerpoint.
También podemos especificar el tamaño de archivo con el modificador size. Por ejemplo, con size:4m nos listará todos los correos que ocupen al menos 4MB de espacio.

Otra opción es filtrar por fecha, con el modificador older_than. Si escribimos older_than:1y nos muestra todos los correos con más de dos años de antigüedad. También es posible filtrar por fecha con formato after:dd/mm/aaaa o before:dd/mm/aaaa

Por supuesto podremos combinar todas esas cadenas de búsqueda para precisar más los resultados.

Nos queda la mejor regla de todas: buscar los correos que incluyan FW: o RV:, seguramente es donde podremos ahorrar más espacio eliminando cadenas de correos

jueves, 8 de mayo de 2014

Habilitar PostgreSQL con WAMP Server

Continuando con la serie de posts sobre PostgreSQL, vamos a incluir uno para habilitar el soporte de PostgreSQL con WAMP Server. Si tratáis de hacer uso de la función pg_connect() sin activar este soporte aparecerá el siguiente error:

Fatal error: Call to undefined function pg_connect() in ...

El proceso debería ser bastante sencillo, pero la presencia de un bug en la versión 2.X de WAMP Server lo complica un poco (aunque os daremos la solución más adelante).


Partimos del supuesto de un servidor WAMP ya instalado, si no sabéis cómo hacerlo tenéis un tutorial aquí: http://alcasoft.blogspot.com.es/2011/12/instalacion-de-un-servidor-local-wamp.HTML

Una vez instalado, la activación de los módulos de Apache y extensiones de PHP es relativamente sencilla: hacemos clic en el icono de WAMP en la barra de tareas > PHP > Extensiones de PHP y activamos las siguientes:

  • php_pdo_pgsql
  • php_pgsql



Al reiniciar los servicios de WAMP debería funcionar, pero si tratamos de hacer uso de la función sigue apareciendo el error:


Si verificáis las extensiones habilitadas (con la función phpinfo() dentro de una página PHP), podréis comprobar que pgsql no se encuentra activo pese a haberlo activado en el interfaz gráfico de WAMP.

Esto se debe a un bug en WAMP. PostgreSQL hace uso de la librería libpq.dll encargada de ejecutar consultas SQL en Postgre. Esta librería debería estar en la carpeta bin de la instalación de Apache, pero se encuentra en la carpeta de PHP.

La solución es sencilla: copiar esa librería a la carpeta correcta:

  • Origen: C:\wamp\bin\php\php5.3.10
  • Destino: C:\wamp\bin\apache\Apache2.2.21\bin
Las rutas obviamente pueden cambiar dependiendo del directorio raíz de vuestra instalación de WAMP y de la versión del mismo, pero espero que os sirvan de ejemplo.

Reiniciamos los servicios de WAMP y comprobamos de nuevo con phpinfo():

 
Ya aparece la extensión activa y podremos hacer uso de las funciones de PHP para PostgreSQL desde nuestro código.

miércoles, 7 de mayo de 2014

WAMP: Problemas de acceso a PHPMyAdmin

Algunos usuarios reportan un error de permisos al intentar acceder a PHPMyAdmin. Generalmente se debe a que el programa viene configurado para autologin pero no permite contraseñas en blanco.

Para corregirlo vamos a necesitar dos cambios:

  • Establecer una clave en MySQL si no existe (no estrictamente necesario pero muy recomendable).
  • Configurar PHPMyAdmin para que solicite usuario y clave al entrar.
Ambas acciones aumentan considerablemente la seguridad de nuestro sistema.

Establecer la clave del usuario root en MySQL


Accederemos a la base de datos MySQL ejecutando mysql (en Windows y Linux) desde un path accesible. Si nos aparece el siguiente error:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
significa que el usuario root ya tiene clave. Si por el contrario nos permite acceder hasta la cocina es que tenemos ese usuario sin clave y debemos establecerla:


Estableceremos la clave de root con el siguiente comando:
 
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MiNuevaContraseña');
 
 

Configurar PHPMyAdmin para que solicite las credenciales de acceso

Debemos configurar el fichero config.inc.php situado en el directorio raíz de PHPMyAdmin. Es posible que este archivo no exista y tengamos que crearlo a partir del archivo de ejemplo config.sample.inc.php.
 
Añadiremos la siguiente línea:
 
$cfg['Servers'][$i]['AllowNoPassword'] = false;
 
De este modo PHPMyAdmin nos solicitará las credenciales de acceso cada vez que queramos iniciar sesión.

martes, 6 de mayo de 2014

PHPPgAdmin: administrador web de PostgreSQL

Continuando con la serie de tutoriales de PostgreSQL vamos a dedicar un post a PHPPgAdmin.


PHPPgAdmin es una herramienta web para la administración de bases de datos PostgreSQL (del mismo modo que PHPMyAdmin lo es para MySQL). Está compuesto por una serie de scripts PHP que serán ejecutados por un servidor web y estarán accesibles desde un navegador.


Requisitos previos

Necesitamos un servidor con las siguientes características instaladas:

  • Base de datos PostgreSQL 8.4 o superior (las versiones inferiores quedan fuera del soporte y desarrollo futuro, puede funcionar bajo nuestra responsabilidad)
  • Servidor web con soporte a PHP5.0 o superior

Proceso de instalación


Si trabajáis con un sistema operativo linux lo tenéis disponible en los repositorios de software.


Configuración


Existen dos archivos de configuración que debemos modificar: config.inc.php (configuración propia de PHPPgAdmin) y  apache.conf (con la configuración de los permisos de acceso al directorio que aloja los scripts php)

En el fichero config.inc.php configuramos las siguientes líneas con la dirección de nuestro servidor (generalmente localhost) y el puerto de conexión (por defecto el 5432)

$conf['servers'][0]['host'] = 'localhost';
$conf['servers'][0]['port'] = 5432;
 
Si queremos acceder con el usuario root a PHPPgAdmin (no recomendado) debemos desactivar la directiva extra_login_security en la línea:

$conf['extra_login_security'] = false;

Guardamos el fichero y abrimos apache.conf. Para permitir el acceso desde cualquier IP tendremos que habilitar la directiva allow from all. Si queremos que esté activa sólo desde una subred podemos indicarlo.

<Directory /usr/share/phppgadmin/>

DirectoryIndex index.php

Options +FollowSymLinks
AllowOverride None

order deny,allow
deny from all
#allow from 127.0.0.0/255.0.0.0 ::1/128
allow from all

<IfModule mod_php5.c>
  php_flag magic_quotes_gpc Off
  php_flag track_vars On
  php_value include_path .
</IfModule>

</Directory>


Reiniciamos Apache y ya tendremos accesible PHPPgAdmin desde nuestro navegador:


[Editado 18/09/2014]


En la versión 9.3 de PostgreSQL el archivo de configuración se encuentra en /etc/apache2/conf.d/phppgadmin

Igual que en el caso anterior comentaremos las líneas que impiden todos los accesos excepto el local:

#deny for all
#allow from 127.0.0.0/255.0.0.0  ::1/128

Y añadimos la línea

allow from all

que permite el acceso desde cualquier dirección I.P. (dejando la seguridad a cargo de la autenticación de Postgre). Es recomendable revisar el log de accesos de vez en cuando para averiguar si tenemos intentos de acceso no autorizados y en ese caso podemos restringir el rango de IPs permitidas.

lunes, 5 de mayo de 2014

PostgreSQL: habilitar conexión remota

Si habéis trabajado con un servidor PostgreSQL con frecuencia habréis usado la herramienta PgAdmin para administrarlo en un entorno gráfico más manejable. Generalmente en la instalación por defecto el servidor sólo acepta conexiones desde la máquina local (para ofrecer un servicio web no necesitamos acceder desde fuera).



En ocasiones podemos necesitar habilitar una conexión remota al servidor (para administración remota desde PgAdmin o phppgadmin, conexiones desde otro servidor web diferente, etc...). En estos casos tendremos que configurar Postgre editando el archivo pg_hba.conf.

¿Cómo habilitamos el acceso desde una IP remota?


Al final del archivo encontraremos las siguientes líneas:

# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres


Y añadiremos:

host     all     all     192.168.1.3/24     md5

Los campos que aparecen en la línea son:
  • Tipo: conexión local o remota (local o host)
  • Bases de datos a las que permitimos acceso
  • Usuarios que pueden acceder
  • Direcciones IP o subredes que accederán
Aquí indicamos que habilitamos conexiones desde un host con la IP 192.168.1.3, para todas las bases de datos (all) y todos los usuarios (all). Desde este momento podremos conectar nuestro PgAdmin instalado en la máquina con IP 192.168.1.3 al servidor Postgre.

Si queremos algo más general podemos indicar una subred: 192.168.1.0/24 permitirá el acceso desde cualquier equipo de esa subred.

Después tendremos que indicar al servidor que escuche peticiones de cualquier dirección. Para ello editaremos el archivo postgres.conf y buscamos la línea listen_addresses. Debemos cambiar el valor: addresses = '*' para indicar que escuche desde cualquier dirección.

Por último no olvidéis reiniciar el servicio de PostgreSQL antes de intentar conectar en remoto. Un saludo

Recomendaciones de Alcasoft