Archivos de la categoría Unix

Configurando el VIM para que suba por FTP

Tanto en mi trabajo como en mis proyectos personales utilizo como editor de texto y entorno de desarrollo el vim. Me gustan los entornos livianos y que respondan con rapidez cuando escribo.

Al usar únicamente el vim, cuando tengo que subir un fichero al servidor, me apoyo un un cliente de FTP, en este caso, el Filezilla. Y claro, pierdo tiempo entre :w!, CMD + TAB y por último arrastrar el fichero.

Para ser más productivo, decidí que ya era hora de mirar la manera de poder subir un fichero directamente desde el propio vim con alguna combinación de teclas.

Me puse manos a la obra y después de un rato buscando, encontré los plugins que me harían falta para lograrlo.

El primero de ellos y el más importante fue el netrw. Este plugin permite realizar operaciones de lectura y escritura en red, es decir permite editar ficheros en remoto y subir ficheros por FTP, SFTP, SCP e incluso RSYNC.

El segundo que hace falta es el localvimrc. Este plugin permite definir una configuración especifica para cada proyecto. En mi caso lo uso para definir el comando que voy a usar para subir el fichero que estoy editando al servidor.

Una vez instalados ambos plugins, lo que hay que hacer es ir a la carpeta local donde tienes el proyecto y crear el fichero .lvimrc, dentro del cual vamos a meter un comando similar a éste:

map <leader>S :execute 'Nwrite ftp://www.javray.com//home/miproyecto/' . expand("%")

Yo he definido <leader>S para subir el fichero que estoy editando, pero se puede definir la combinación que os sea más comoda. También se pueden definir distintos comandos.

Eso sí, al usar el protocolo FTP para que no me pida la clave he tenido que usar el fichero .netrc, en el cual he definido el servidor, el login y el password. Una opción más segura sería subir el fichero por SCP y meter la clave publica de mi ordenador en el servidor.

¿Lo siguiente?

Crear un comando que me suba al repositorio el fichero, a ver si investigo un poco y os lo cuento.

Github

Hace un tiempo que me hice una cuenta en Github para aprender a utilizar git, ya que me parece una mejor opción que SVN. De momento lo he usado bastante poco, he subido tres proyectos: dos de ellos muy sencillos y un tercero algo más complejo.

Empezando por el más complejo, Galert, es un aplicación para Android hecha en python usando SL4A, la tengo publicada en Google Play, como es gratuita y es más un experimento que otra cosa, he decidido liberar lo que he hecho:

https://github.com/javray/Galert

La siguiente es un sencillo script en PHP que coge un RSS y lo transforma en comandos SHELL para que se vea con colores en el terminal:

https://github.com/javray/RSS-Colorize

Y la última, es una única página que contiene HTML y Javascript, la cual sirve para realizar un sorteo entre varios participantes. La idea es que tienes los participantes en un fichero de texto, arrastras éste a la aplicación, eliges cuántos ganadores quieres y le das a sortear:

https://github.com/javray/Sorteo

Espero seguir publicando más aplicaciones que se me vayan ocurriendo, ya que es bueno compartir el código para aprender.

VMWare y Ubuntu 7.04

Ayer puse a actualizar un Ubuntu 6.10 a Ubuntu 7.04 desde las actualizaciones automáticas en un ordenador con conexión de 300K, con lo que ha estado desde ayer a las 18:30 aproximadamente hasta hoy a las 13:00 horas descargando e instalando.

Este ordenador tiene instalado el VMWare Server 1.0.1-29996 y ya me ha pasado otras veces que al actualiza el Kernel tienes que volver a recompilar los módulos para que siga funcionando. Lo que suelo hacer es bajarme los headers del nuevo kernel y reconfigurar el VMWare:

  • cd /usr/src
  • sudo apt-get install linux-headers-`uname -r`
  • ln -s linux-headers-`uname -r` linux
  • sudo /usr/bin/vmware-config.pl

Pero hoy al hacer esto, me ha dado un error de compilación y no me ha creado el módulo para que funcione con el nuevo Kernel. Me he puesto ha buscar por Internet y en unos foros de Ubuntu he encontrado la solución:

  • sudo apt-get install vmware-server-kernel-modules
  • sudo apt-get install vmware-tools-kernel-modules
  • sudo sed -i -e “s/sub configure_module {/sub configure_module {\n return ‘yes’;/” /usr/bin/vmware-config.pl
  • sudo vi /etc/init.d/vmware
    (En la linea 542 aprox. cambiar /sbin/insmod -s -f “/lib/modules/`uname -r`/misc/$1.o” || exit 1 por modprobe -s -f $1 || exit 1)
  • sudo rm /etc/vmware/not_configured
  • sudo /usr/bin/vmware-config.pl
  • sudo /etc/init.d/vmware restart

Referencias:
http://ubuntuforums.org/showthread.php?t=338305

Reload del CRON

Una cosilla que he descubierto hoy y que no sabía es que cuando cambias algo en la tabla del CRON mediante, por ejemplo, crontab -e, los cambias no son efectivos hasta el minuto siguiente, es decir que si estás poniendo un proceso para que se ejecute para el próximo minuto este no tendrá efecto hasta ese minuto, por lo que el programa no se ejecutará.

La duda que me surge es que he visto que en Linux, el reload se hace en el segundo 1 del siguiente minuto y en freeBSD en el segundo 0, por lo que no estoy seguro de si en freeBSD no se ejecutará, en Linux fijo porque lo he probado.

Mysql – mostrar variables y máximo número de conexiones

Para saber con que valores está configurado el mysql desde línea de comandos podemos usar el siguiente comando:

echo “show variables;” | mysql -uroot -ppassword

Con el comando anterior se pueden observar todos los valores de las variables de configuración con las que está corriendo el mysql y se puede ver que por defecto el número máximo de conexiones simultanes está puesto a 100. Si queremos cambiar dicho parámetro lo que hay que hacer es editar el fichero de configuración de mysql, normalmente /etc/my.cnf y añadir la siguiente línea:

max_connections = 255

Y después hay que reinciar el mysql. Para ver que ha cogido el nuevo valor podemos ejecutar de nuevo el comando de arriba que muestra las variables.

Comprobar la sintáxis de un SCRIPT en SHELL

Cuantas veces me habrá pasado que hago un cambio en un SCRIPT en cual no puedo ejecutar porque está en producción y sin querer meto un error de sintáxis y al día siguiente provoco una catastrofe porque no se ha ejecutado.

Pues bueno, para que esto no me ocurra más he descubierto como comprobar la sintáxis:

sh -n mi_script.sh

Con esto lo que conseguimos es que unicamente nos compruebe si no hemos cometido un error sintáctico, los semánticos son otro tema…

Crear un usuario mediante comandos en MySQL

Igual mucha gente ya lo sabe, pero una manera sencilla de crear un usuario mediante comandos es la siguiente:

GRANT ALL PRIVILEGES ON mibd.* TO miusuario@mihost IDENTIFIED BY 'mipassword'

Con este comando creamos un usuario que tienen todos los privilegios para la base de datos mibd

La verdad que si tienes que dar de alta muchos usuarios o lo haces mediantes SCRIPT’s es bastante útil

Otro comando útil por si usas clientes de MySQL 4.0 es este:

SET PASSWORD miusuario = OLD_PASSWORD('mipassword');

con esto cambias el password al formato de antiguo para que puedan usarlos los clientes de MySQL 4.0

Errores de procesado de Includes en Apache

¿A quién no le molestan estas líneas?

[an error ocurred while processing this directive]

La verdad es que la mejor solución para que no aprezcan es poner bien el include, pero si tenemos páginas en las que realmente ese include no tiene que estar y queremos ocultar este error la solución es cambiar la configuración del apache con algo similar a esto:

SSIErrorMsg "<!-- missing include -->"

Para más información aquí

Leave

Hoy leyendo noticias en meneame.net he descubierto una página en la cual venían algunos comandos interesantes de UNIX, entre ellos estaba el comando leave, el cual te permite poner alarmas para que te avisen, en realidad la finalidad del programa es avisarte de que ha llegado la hora de irte, la verdad que me parece interesante y es una cosa más que se del mundo UNIX.

Para más información:

man leave