El botón que le falta al MS Windows (para informáticos)

Bueno, de acuerdo, un gran número de informáticos se evitan algunos dolores de cabeza optando directamente por usar GNU/Linux para sus desarrollos y tareas de escritorio… pero algunos siguen, por razones de trabajo o por motivos de causa mayor, trabajando con MS Windows (en cualquiera de sus múltiples versiones).

Para esos valientes (casi mártires) va esta imagen que muestra el botón que muchos quisiéramos tener disponible para desaparecer para siempre (aunque casi mejor que hubiese otro botón de vuelta, por si acaso) :D

Apagar para siempre el equipo, dejar la informática e irme a vivir al monte a comer castañas y a hablar con Dios

Aplicar el famoso parche de 200 lineas en Debian/Ubuntu sin recompilar el Kernel

Linus Torvalds ha confirmado los beneficios del parche de 200 lineas que mejoraba las tareas de Escritorio, sin embargo había que recompilar el kernel para ello, no obstante, un desarollador de Red Hat ha mostrado como con unas simples modificaciones podemos obtener unos resultados equivalentes con los kernels recientes que soporten control group.

De momento un sinfín usuarios están muy satisfechos con los cambios que dan esta pequeña solución alternativa.

Hay que tener en cuenta, que en las distribuciones Debian/Ubuntu hay que utilizar /dev en vez de /sys.

Editar el fichero rc.local y añadir las siguientes lineas antes del ‘exit 0’

/etc/rc.local

mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent

Añadir en vuestro /home/usuario/.bashrc las siguientes lineas.

$ editor ~/.bashrc

if [ "$PS1" ] ; then
    mkdir -p -m 0700 /dev/cgroup/cpu/user/$$
    echo $$ > /dev/cgroup/cpu/user/$$/tasks
    echo 1 > /dev/cgroup/cpu/user/$$/notify_on_release
fi

Para eliminar cgroup cada vez que se abandona una tarea:

# editor /usr/local/sbin/cgroup_clean

#!/bin/sh
rmdir /dev/cgroup/cpu/$*

Hacerlo el fichero ejecutable:

chmod +x /usr/local/sbin/cgroup_clean

Reiniciar la máquina (no es realmente necesario) o bien copiar a mano los comandos y lanzar una nueva terminal.

Saludos!

SynPS/2 Synaptics TouchPad no synaptics event device found (SOLVED, SOLUCIONADO)

Recién me he comprado un netbook, así que voy a ir poniendo errores que me he ido encontrando en la configuracón, uno de ellos ha sido en Synaptics cuando inicializaba las X mediante startx.

Errors from xkbcomp are not fatal to the X server
SynPS/2 Synaptics TouchPad no synaptics event device found
Query no Synaptics: 6003C8
(EE) SynPS/2 Synaptics TouchPad Unable to query/initialize Synaptics hardware.
(EE) PreInit failed for input device “SynPS/2 Synaptics TouchPad”

En concreto yo tengo instalado Debian squeeze, pero el procedimiento es similar para el resto de distribuciones.

Método 1 (ciertos touchpad genéricos):

(como root)
# modprobe -r psmouse
# modprobe psmouse proto=imps

Y para hacer los combios permanentes al reiniciar:

# echo 'options psmouse proto=imps' > /etc/modprobe.d/touchpad.conf

Método 2 (no relizar el método 1):

Si habeís realizado el método 1, probad el 2, pero teneís que desconfigurar el 1.


# modprobe -r psmouse
# modprobe psmouse
# rm -f /etc/modprobe.d/touchpad.conf

Al parecer el driver se carga 2 veces mediante los scripts /usr/share/X11/xorg.conf.d/10-evdev.conf y /usr/share/X11/xorg.conf.d/50-synaptics.conf.

1) Comentar todo lo referente a touchpad en 10-evdev.conf

2) Modificar el fichero 50-synaptics.conf, es importante añadir la opción MatchDevicePath, aquí pongo uno de ejemplo, además añado la opción del scroll vertical que es bastante curiosa.

Mi touchpad no soporta multitouch, pero con una simple opción es sencillo emularlo “EmulateTwoFingerMinZ”.

Modificadlo a vuestro gusto, y repasar las opciones que brinda man 4 synaptics.

/usr/share/X11/xorg.conf.d/50-synaptics.conf

Section "InputClass"
Identifier "touchpad"
Driver "synaptics"
MatchIsTouchpad "on"
Option "Protocol" "auto-dev"
MatchDevicePath "/dev/input/event*"
# algunos programas lo requieren
Option "SHMConfig" "1"
Option "TapButton1" "1"
Option "TapButton2" "2"
Option "TapButton3" "3"
Option "VertEdgeScroll" "1"
Option "VertTwoFingerScroll" "1"
Option "HorizEdgeScroll" "1"
Option "HorizTwoFingerScroll" "1"
Option "CircularScrolling" "1"
Option "CircScrollTrigger" "7"
# emulacion multitouch
Option "EmulateTwoFingerMinZ" "0"
EndSection

Con estos simples pasos al reinicar las X o el netbook, los errores de Synaptic han desaparecido funcionando de manera correcta.

Como solucionar el error Mysql [Warning] Changed limits

En un servidor con suficiente tráfico y muchas consultas de base de datos, en ocasiones hay que incrementar el valor por defecto del my.cnf del parametreo max_connections a un valor más adecuado, por ejemplo 1024

max_connections = 100
a
max_connections = 1024

Ya que sinó, la base de datos puede ser insuficiente. Justamente hoy me he dado cuenta de que el servidor se ha vuelto a saturar y mirando los logs, me he dado cuenta de que cada vez que reiniciaba MySQL, él “ajustaba” automáticamete esos valores de max_connections a otro inferior, en este caso a 886, así que existia una limitación del sistema operativo que forzaba el reajuste.


090616 13:49:22 mysqld started
090616 13:49:22 [Warning] Changed limits: max_open_files: 1024 max_connections: 886 table_cache: 64

La solución es bien sencilla, simplemente hay que añadir una linea similar arriba de todo del script o ponerlo en el bash_profile/bashrc, o si quieres hacerlo más elegante, deberiamos de mirar de configurar correctamente el fichero limits.conf (yo he optado por ponerlo encima del script)

ulimit -n valor (por defecto es 1024)
ulimit -n 2048

Realizamos un ulimit -n para ver que realmente se ha cambiado el valor, y volvemos a reiniciar MySQL con nuestro problema resuelto!