Arreglar sonido de Pidgin en Jaunty

14 06 2009

Por lo menos a mi me pasa muy seguido que cuando un contacto de pidgin se conecta se me muestra la notificación en pantalla y al mismo tiempo se reproduce el sonido por defecto de pidgin, ese sonido a veces suna muy mal lo cual es muy desagradable, para solunarlo, es utilizar el reproductor que tiene pulseaudio:

Pidgin pulseaudio





Autenticando Trac con multiples proyectos usando PAM

2 06 2009

Una forma de facilitar la vida es tener un sistema de autenticacion general para el sistema, por lo que me tope con PAM que practicamente utiliza los mismos usuarios del sistema (linux) para autenticar, en este caso vamos a usar el modulo para Apache, es necesario instalar los paquetes necesarios:

sudo aptitude install libapache2-mod-auth-pam libapache2-mod-auth-sys-group

Luego en la configuracion del apache para sitio default, tal y como lo hable en otro post, hay que agregar el siguiente apartado:

<LocationMatch "/projects/[[:alnum:]]+/login">
AuthPAM_Enabled On
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/shadow
Require valid-user
Require group developers
</LocationMatch>

Es necesario darle permisos a Apache para que pueda leer los archivos de usuarios, o de lo contrario nunca va a autenticar:

sudo adduser www-data shadow

Eso solo le da permiso de lectura, es necesario reiniciar el servidor de apache para que surta efecto, otra cosa es que si el usuario no pertenece a el grupo developers o el que se haya definido no va a poder autenticar tampoco.





Probando chromium Alpha en Ubuntu Jaunty

2 06 2009

Es increible el estado maduro en el que se encuentra el desarrollo de Google Chrome para linux (Chromium), tanto asi que a no ser por la falta de soporte a flash lo usaria para todo :P .

Un screenshot de Chromium en Jaunty con mi Eeepc 900

chromium

Para instalarlo hay disponible un repositorio PPA:

https://launchpad.net/~chromium-daily/+archive/ppa





Temas para la ventana de conversación de Pidgin

22 05 2009

Soy muy fanático del Eye-candy, por lo que hoy que tenia un poco de tiempo libre, me di la tarea de buscar alguna manera de mejorar la ventanas de conversación de Pidgin, y me encontré con ésta página.

Para muestra un botón:

pidgin-webkit

Casi siempre los plugins de Pidgin son difíciles de configurar y en este caso fue la excepción, pero aqui no voy a explicar como compilarlo si no voy a hacer algo mejor, voy a compartirlo ya compilado y listo para usar.

Pidgin-webkit.tar.gz

Enjoy! :D

Nota: Probado en Ubuntu Intrepid Ibex, Jaunty Jacktalope y en Hardy no funciona.





Habilitar Eee pc 900 multi touch en Ubuntu Jaunty

18 05 2009

Ultimamente las netbooks tiene multi touch ( multi gestos con varios dedos) y sin excepción mi Eee pc 900, recién instalé Ubuntu Jaunty Jacktalope, esperando que el multi touch funcionara de caja, el cual no fue así, además el mouse se sentía como lento o con poca sensibilidad y gracias a un tutorial encontré la manera de habilitar el multi touch, pero no me función, luego de investigación encontré la manera de habilitar el driver para utilizar el archivo del tutorial.

Editando el archivo /etc/X11/xorg.conf hay que añadir la sección:

Section "InputDevice"
Identifier      "Configured Mouse"
Driver          "synaptics"
Option          "SHMConfig" "true"
EndSection

Luego de guardar el archivo hay que cerrar la sessión y entrar de nuevo para que los cambios surtan efecto, luego editar el archivo de /etc/hal/fdi/policy/11-x11-synaptics.fdi

sudo vim /etc/hal/fdi/policy/11-x11-synaptics.fdi

Mi archivo de configuración es de ésta manera para que el gesto con dos dedos al dar tab sea el del botón central de un mouse:


< ?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
 <device>
   <match key="info.capabilities" contains="input.touchpad">
       <merge key="input.x11_driver" type="string">synaptics</merge>
       <merge key="input.x11_options.SHMConfig" type="string">On</merge>
       <merge key="input.x11_options.EmulateTwoFingerMinZ" type="string">90</merge>
       <merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge>
       <merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge>
       <merge key="input.x11_options.TapButton1" type="string">1</merge>
   </match>
 </device>
</deviceinfo>

Hay que cerrar la sessión y volver a entrar para que los cambios surtan efecto.





Trac con Bazaar en Ubuntu

18 05 2009

Unas de las cosas que hacen a un buen programador, es el orden que lleve con los proyectos y su documentación, por lo que se me ocurrió intentar utilizar Trac, si me preguntan porque, por mera casualidad estaba buscando un paquete en el repositorio de Ubuntu y me encontré con el paquete de trac-bzr, me llamó la antención y decidí instarlo:

sudo aptitude install trac trac-bzr

luego crear el contenedor de los proyectos, en mi caso yo suelo utilizar mi home, pero se puede utilizar cualquiera:

mkdir ~/Trac
mkdir ~/Trac/proyecto
trac-admin ~/Trac/proyecto initenv

Seleccionamos todas las optiones a gusto a excepción del tipo de repositorio

Repository type [svn]> bzr

Hay que habilitar el plugin de bazaar o va a mostrar un error en la pagina del proyecto acerca de que no puede leer el repositorio, para esto hay que ir al archivo de configuración del proyecto:

vim ~/Trac/proyecto/conf/track.ini

y al final agregarle las lineas

[components]
tracbzr.* = enabled

Con eso ya esta habilitado el plugin, si se quisiera agregar más plugins se hace de la misma manera.

Con eso ya tenemos la instalación básica, ahora es necesario configurar el apache para que nos muestre las paginas de proyectos de trac

sudo apt-get install libapache2-mod-python

ahora es necesario editar el archivo de virtualhost de apache

sudo vim /etc/apache2/sites-available/default

agregamos la seccion debado de algun “location”

<Location /projects> #set up Trac handling
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /home/<tu_usuario>/Trac
PythonOption TracUriRoot /projects
</Location>

Cambiamos los permisos para que apache pueda leer nuestro trac

sudo chown www-data -R ~/Trac

Luego reiniciamos el apache

sudo /etc/init.d/apache2 restart

Seguidamente hay que agregar autenticación al sitio, para la parte del flujo de los ticketes y demás, primero hay que crear un archivo de password para apache

htpasswd -c ~/Trac/.htpasswd admin

Se llenan los password y luego hay que hacer la referencia en el location de apache, quedando de ésta manera

<Location /projects>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /home/edder/Trac
PythonOption TracUriRoot /projects
#authentication scheme
AuthType Basic
AuthName "Trac Projects"
AuthUserFile /home/<tu_usuario>/Trac/.htpasswd
Require valid-user
</Location>

Reiniciamos apache y ya con eso estamos :P

Nota: Funciona para Intrepid como para Jaunty.





Una clase php para hacer archivos log

4 05 2009

Actualmente estoy trabajando en un sistema legacy de PHP,  en algunas partes del código quiero saber que hay en las variables, si trato de hacer un var_dump / print_r no sale nunca en pantalla, me dirán “pero existe xdebug”, en efecto existe pero algunas veces si hay mod_rewrite no funciona bien por lo que no sirve de nada.

Para eso me cree una clase pequeña, que permite crear un archivo de log a el cual le agrega la hora y fecha además si es una arreglo lo muestra formateado, a éste archivo de log se le dice el path y el te va a decir si puede crearlo o no, además va a agregar linea tras linea, asi que cuidado de dejarlo habilitado porque despues de más 1.000.000 puede hacerse grande el archivo :P .

El codigo de archivo:


< ?php

	/**
	 * myLogger
	 * @author Edder Rojas Douglas
	 * @version 0.2
	 */

	class myLogger  {

		protected $_path;
		protected $_fileName = 'myLogger.log';

		/**
		 * @param string $path can be a directory o a file path
		 */
		public function __construct($path) {
			if (empty($path)){
				Throw new Exception("Path must be filled");
			}
			if (!file_exists($path)) {
				Throw new Exception("The Path doesn't exists.");
			}
			if (!is_writeable($path)) {
				Throw new Exception("You can write on the give path");
			}
			$this->_path = $this->_parsePath($path);
		}	

		/**
		 * Validate the path the add the filename to the path
		 * @param String $path
		 * @return String
		 */
		protected function _parsePath($path) {
			$strLenght = strlen($path);
        	$lastChar = substr($path, $strLenght - 1, $strLenght);
        	$path = $lastChar != "/" ? $path . "/" : $path;

        	if ( is_dir($path) ) {
        		return $path . $this->_fileName;
        	} else {
        		return $path;
        	}
		}

		/**
		 * Will save the path on the give path
		 * @param String $line
		 */
		protected function _save($line) {
			$fhandle = fopen($this->_path, "a+");
			fwrite($fhandle, $line);
			fclose($fhandle);
		}

		/**
		 * main function to add lines to the logging file
		 * @param String $line
		 */
		public function addLine($line){
			$line = is_array($line) ? print_r($line, true) : $line;
			$line = date("d-m-Y h:i:s") . ": $line\n";
			$this->_save($line);
		}
	}

Su utilización es sencilla:


// cargar la clasesita
require_once('myLogger.php');

$log = new myLogger(dirname(__FILE__) . "/tmp");
$log->addLine(array("testing", "my", 'data'));
// si en éste punto no muestra errores, todo bien =D

Actualización: Hice unas pequeñas modificaciones para mostrar mejor los resultados si lo que se loguea es un objecto.





Me cambio de tema de nuevo

4 05 2009

No me terminó de gustar el tema que estaba utilizando, así decidí cambiarme a el tema Freshy, éste último me gusta mucho más por la forma como muestra el código con numero de linea.

Asi que quedó hasta que a wordpress se le antoje de nuevo agregar más temas :P





Cambiar tamaño por defecto en la terminal

4 05 2009

El gnome la toda poderosa terminal a mi parecer es muy pequeña, a veces me da hasta rabia que tenga que cambiar el tamaño una y otra vez. Hace tiempo había encontrado un post que hacía referencia a cambiar el tamaño por defecto en la terminal y no me refiero a la propiedad “–geometry” que hacen mención en todo sitio:

“Si quieres que la terminal cambie de tamaño usa el comando gnome-terminal –geomety=120×30

Pero en ese caso sirve para el ejecutable pero no en general, por lo que hoy me dije “Porque no intento de nuevo, ya me tiene cansado el tamaño de la terminal” y di con un post parecido a el que había encontrado hacía ya tiempo.

Explico brevemente como configurar la terminal por defecto, además sirve para cuando lanzas la terminal desde el botón derecho en nautilus ;) .

Primero hay que editar la el archivo de configuración de ésta manera:

sudo vi /usr/share/vte/termcap/xterm

luego hay que buscar la línea que dice:
:co#80:it#8:li#24:\

Para reemplazarla por el tamaño deseado, en mi caso siento que está bien 120×30, un truco para conocer el tamaño es cambiar el tamaño de la terminal y ver que dice la ventanita que compiz agrega, por ejemplo en mi caso la linea quedó de ésta manera:

:co#120:it#8:li#30:\

Guardamos y cerramos todas las terminales y a disfrutar de más espacio en la terminal :D





Como ver los índices en Postgres y MySQL

10 03 2009

Unos de los problemas de rendimiento se deben a las base de datos, un ejemplo sería tratar de traerse datos cuando no hay indices que definan la tabla, eso provocaría que el gestor de base de datos valla registro por registro aplicando las condiciones, y en donde la base de datos en grande podría generar problemas de rendimiento.

Unas de las formas de mejorar el problema de rendiemiento relacionados a las Bases de datos es crear índices, pero en mi caso es ver si una base de datos existente hay indices definidos, por lo que en mysql se podrían ver así:


show create table <tu_tabla>;

Y por otro lado en postgres es:


select * from pg_indexes where tablename = '</tu_tabla>';

Nota: cambiar <tu_tabla> por el nombre de la tabla que se quiere inspeccionar.

Con ése queda el truquito para encontrar cuellos de botellas en las base de datos :)