miércoles, 2 de febrero de 2011

Ejecutar comandos con sudo al iniciar Ubuntu

Anteriormente mencioné como hacer scripts para montar automáticamente las particiones compartidas en la red. Al comando le llamé amistosamente montar, pero... hay que ejecutarlo todo el rato al iniciar el ordenador, algo que es poco eficiente.

Por ello mismo investigué y descubrí el script rc.local.

  • sudo gedit /etc/rc.local

Una vez se nos abra el editor de texto añadiremos antes del exit 0 nuestro comando
Que dando algó así:
montar
firefox
thunderbird
emesene
rythmbox
exit 0
Guardamos y cuando iniciemos voilá, ya funciona.

sábado, 4 de diciembre de 2010

Cortar Archivos en trozos ubuntu y renombrarlos.

Hoy os voy a hablar de una utilidad bastante importante para mi. El comando split y un comando que realiza limpieza del comando split.

Los que ya sepáis inglés averiguaréis que split es cortar, dividir o como queráis decirlo, efectivamente, lo popularmente conocido como hacha.

Esta utilidad es de gran utilidad para los uploaders de rapidshare para cortar los archivos en 100 mb y luego unirlos, o en mi caso, para los amantes de las sesiones de música electrónica o los conciertos grabados, para trocear y grabarlos en un CD sin tener que rompernos el dedo rebobinando en nuestro aparato mp3.

Para ello ejecutaremos lo siguiente:
  • split -b 5m archivo.mp3
  • for file in x?? ; do mv $file `echo $file | sed 's/\(.*\.\)/\1mp3/'` ; done
En este caso nos dividiría el archivo en trozos de 5 megas. Si quisiéramos que fueran de 100 Megas, tan sólo habría que modificar el 5 por 100 y listo!

Por último si queremos cambiar el renombre a otro formato que no sea mp3 modificaremos en el segundo comando la palabra mp3 por la que queráis.

sábado, 20 de noviembre de 2010

Acelera tu UBUNTU (Mediante el parche del Kernel)

Estos días se ha estado debatiendo sobre el maravilloso Kernel que implementa una mejora en el rendimiento sustancial, en cuanto a la velocidad de la interfaz gráfica. Aparentemente el código mejora la velocidad de las prioridades de los procesos en BASH, pero extrañamente esa mejora de los TTY se refleja en una velocidad de la interfaz rapidísima.

Lo he experimentado yo mismo y el teclado va mucho más fluido y el ratón, el navegador y los programas funcionan mucho más fluidos. 

Mientras se prepara el Kernel podemos emplear el parche propuesto en BASH para ir tirando hasta que se integre en nuestra distro.

Para ello en el terminal ejecutaremos:
  • sudo gedit /etc/rc.local
y pegaremos este código antes del exit 0
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
Luego ejecutaremos:
  • sudo chmod +x /etc/rc.local
Luego:
  • gedit $HOME/.bashrc
Añadimos al final:

if [ "$PS1" ] ; then  
   mkdir -p -m 0700 /dev/cgroup/cpu/user/$$ > /dev/null 2>&1
   echo $$ > /dev/cgroup/cpu/user/$$/tasks
   echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release
fi
Luego ejecutamos:
  • sudo gedit /usr/local/sbin/cgroup_clean


Añadimos esto:

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

Luego ejecutamos:


  • sudo chmod +x /usr/local/sbin/cgroup_clean


Por último ejecutamos:

  • sudo /etc/rc.local


sábado, 9 de octubre de 2010

PHP: Generador de palabras por fuerza bruta.

Hoy a petición de un amigo he creado un script muy sencillo y que probablemente existan mejores maneras de hacerlo con programación genérica pero oye al que le sirva que lo use.

En este caso es un generador de todas las palabras del alfabeto Hexadecimal, es decir, del 1 al 0 y de la A a la F. No se diferencia entre mayúsculas y minúsculas pero no es un problema arreglarlo. Tan sólo hay que añadir todos los caracteres que deseemos a la cadena alpha y cambiar la variable longitud por su nuevo valor.

Por otro lado la longitud de este diccionario será siempre 7 ya que conocemos el número exacto de caracteres. Si no fuera así, existen otros métodos para generar un diccionario completo. Pedírmelo y os lo pondré.

También añadir que si quieres que tenga 10 caracteres de longitud tendrás que añadir 3 for y concatenar alpha al valor de sus contadores.

Por último, el resultado será guardado en la variable $token.

<?php
$token = "";
$longitud = 16;
$alfa = "1234567890abcdef";
for ($caracter1 = 0; $caracter1< $longitud; $caracter1++){
    for ($caracter2=0; $caracter2< $longitud; $caracter2++){
        for ($caracter3=0; $caracter3< $longitud; $caracter3++){
            for ($caracter4=0; $caracter4< $longitud; $caracter4++){
                for ($caracter5=0; $caracter5< $longitud; $caracter5++){
                    for ($caracter6=0; $caracter6< $longitud; $caracter6++){
                        for ($caracter7=0; $caracter7< $longitud; $caracter7++){
                            $token  = $alfa[$caracter1].$alfa[$caracter2].$alfa[$caracter3].$alfa[$caracter4].$alfa[$caracter5].$alfa[$caracter6].$alfa[$caracter7];
                        }
                    }
                }
            }   
        }
    }
}
?>

Espero que os sirva de utilidad.


viernes, 3 de septiembre de 2010

Historias de Software: Términos pastafarianos.

La entrada de hoy, va dedicada a todos los que hemos tenido que mantener aplicaciones desarrolladas por otros desarrolladores en las que como siempre, la estructura está mal, faltan los comentarios y como no, un clásico, ha sido llevada a cabo sin planificación ninguna y debemos descifrarlo sobre la marcha.

Los que pensabais que esta era la típica entrada sobre el Flying Spaguetti Monster, FSM, vais bastante mal, en cualquier caso en el mundo de la programación existe unos términos clásicos que no se deberían perder y que aquí procedo a explicar.


Código espagueti: Sin duda es el más famoso, difícil de entender, difícil de mantener y como no, complicado. Es un término bastante degradante, si alguien comenta que tu código es espagueti, prepararte, tu ego de programador ha sido atacado y tendrás que defenderlo.

Código lasaña: Quizá uno de los códigos que más me gusten, sencillo, muy estructurado y analítico. Algunos pensaréis que es el más fácil de mantener pero no es así ya que resulta bastante complicado mejorar lo inmejorable y sobre todo razonar como su autor original, es como jugar una partida de Jenga, hay que tener mucho cuidado.

Código ravioli: Teóricamente este es el mejor código para mantener, todo es sencillo y esta empaquetado en pequeños componentes muy específicos. Por todo esto modificar alguno de los paquetes u objetos no tendrá cambios significativos en el resto del programa.


Ya sabéis programadores / mantenedores de aplicaciones, mucha paciencia y a veces es mejor reescribir todo el código que descifrar jeroglíficos.