Ruby & Ruby on Rails

Posted on June 3rd, 2009 in Programacion, tutoriales by Miggs

Here are a some excelent video casts from U.C. Berkeley on Ruby and Ruby on Rails that should help you get started with such cool technology!

Ruby on Rails – Part 1: Hello World

Ruby on Rails – Part 2: Just Enough Ruby

Ruby on Rails – Part 3: Basic Rails

Ruby on Rails – Part 4: Advanced Active Record

Ruby on Rails – Part 5: AJAX and Testing

Ruby on Rails – Part 6: Configuration and Deploy


Resume transfer with scp and rsync

Posted on May 14th, 2009 in tutoriales by Miggs

Today I feel like writing in English, but don’t worry, It wont be too much.

This trick becomes is very handy when transferring large files over the CLI and suddenly the connection is lost.

HOW-TO-RESUME-SCP-TRANSFER

scp does not support any kind of transfer recovery, so what can you use instead? rsync over ssh!

$ export RSYNC_RSH=’ssh [OPTIONS]‘
$ rsync –partial –progress <source> <destination>

Done! That’s it for today.
Cheers
Miguel


setxkbmap: Cambiar layout del teclado

Posted on August 15th, 2008 in tutoriales by Miggs

setxkbmap sirve para cambiar el layout del teclado desde sesiones X. Muy útil, cuando uses ordenadores que no sean tuyos.

USO

Muy sencillo, lo de siempre

$ setxkbmap us # Cambia al layout de US.
$ setxkbmap es # Cambia al layout Español.

Recuerda al reiniciar sesión los cambios se perderán. Si quieres cambiarlo permanentemente, edita el xorg.conf


SUSE Enterprise 10, updatedb y locate

Posted on July 22nd, 2008 in Linux, tutoriales by Miggs

Los de Suse Enterprise cada dia lo hacen peor, no hay duda… Si queréis contar con updatedb y locate os tendréis que bajar los fuentes e instalarlos vosotros mismos… El paquete se llama findutils y los podréis encontrar aqui o dentro de /gnu/findutils/ en vuestro repositorio favorito; ex: ftp://mirrors.kernel.org/gnu/findutils/

Instalacion

Muy sencillo, lo de siempre

$ wget ftp://mirrors.kernel.org/gnu/findutils/findutils-4.4.0.tar.gz
$ tar -xvvf findutils-4.4.0.tar.gz
$ cd findutils-4.4.0
$ sudo ./configure
$ sudo make
$ sudo make install
# Por ultimo
$ sudo updatedb

Ya podréis utilizar el locate como habéis echo siempre.


awk: elemento separador

Posted on July 1st, 2008 in Linux, Programacion, tutoriales by Miggs

Nota rápida pero quite handy. Como cambiar el símbolo separador de argumentos en awk (por defecto es el espacio)

# awk -F. ‘{…}’

Saludos


Forma Rapida Segura y Sencilla de ELIMINAR archivos

Posted on July 1st, 2008 in Linux, Programacion, Seguridad, tutoriales by Miggs

El otro dia mi jefe me pidio que le llamase antes de borrar un archivo para asegurarnos de que realmente los datos eran eliminados. El proceso es simple, sobreescribir el contenido del archivo con datos. Idilicamente se debería de hacer con datos aleatorios, pero tampoco es cuestion de ser paranoicos. Basta con repetir el proceso unas cuantas veces antes de borrarlo. En cualquier si alguien tiene a mano como hacerlo correctamente que escriba un comentario y lo anado.

$ sed -i -e ’s/./X/g’ ./path/to/fichero

Saludos


Generador de palabras. Wordgenerator.c

Posted on May 23rd, 2008 in FreeBSD, Linux, Programacion, Seguridad, tutoriales by Miggs

beastyHace tiempo, trasteando con las redes wifi y la clásica encriptacion WEP llegue a un punto en el que necesitaba una diccionario de claves. Como las claves eran ’semi-aleatorias’ no me servia cualquier diccionario, necesitaba algo que me generase todas las posibles claves de determinada longitud con un determinado juego de caracteres. Así que decidí poner en buen uso mis conocimientos de C y crearme una herramienta que me lo hiciera. El problema era conceptual mente simple así que me puse manos a la obra.

Inicialmente resolví el problema con recursividad (lento), mejorandolo mas tarde utilizando un algoritmo lineal (mucho mucho mas rápido). Aquí os dejo el código fuente.

Compilar

Si dispones de gcc el proceso es muy sencillo.

$ gcc -o wordgenerator.c wordgenerator

Ejecucion

Desde la linea de comandos basta con

$ ./wordgenerator

Código

//Librerias necesarias
#include<stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
//Prototipos
int getOptions(int,char**,char**,int*,int*);
void ayuda();
void generator(char *, char *,int, int);
//
//Funcion: wordgenerator.c
//Description: Genera palabras linear o recursivamente.
//Autor: Miggs
//Date: 18/10/2006
//
int main (int argc, char *argv[])
{
//Caracteres a usar por defecto
char *c = “1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM”;
int len;
//Usamos recursividad?
int r = 0; //No a no ser que nos lo pidan…

if(getOptions(argc,argv,&c,&len,&r)<0)
ayuda();

char actual[len + 1];
actual[len] = ‘\0′;

if(r == 0){
//Lineal = rapido
int i,j;
for(i = 0; i < len ; i ++)
for(j = 0; j< strlen(c) ; j ++){
actual[i] = c[j];
printf(“%s\n”,actual);
}
}else
//Recursividad = lento
generator(c,actual,len,0);
return 0;
}
//
//Funcion: generator
//Description: funcion recursiva
//Date: 18/10/2006
//
void generator(char *c,char *actual, int len, int level)
{
int i;
if(level < len)
{
for(i = 0; i < strlen(c);i = i + 1){
actual[level] = c[i];
generator(c,actual,len,level+1);
}
}
else
printf(“%s\n”,actual);
}

//
//Funcion: getOptions
//Description: Interpreta las opciones de la linea de comandos
//Date: 18/10/2006
//
int getOptions(int argc, char **argv, char **vC, int *l, int *r)
{
int c;
int retValue = -1;

while((c = getopt(argc, argv, “l:c:r”)) != -1){
switch(c){
case ‘l’:
*l = atoi(optarg);
if(*l > 0)
retValue = 1;
break;
case ‘c’:
*vC =optarg;
break;
case ‘r’:
*r = 1;
default:
break;
}
}
return retValue;
}

//
//Funcion: ayuda
//Description: Imprime la ayuda por pantalla
//Date: 18/10/2006
//
void ayuda()
{
printf(“\n// wordGenerator 0.1 6/Feb/2008\n”);
printf(“// icaix.com//\n”);
printf(“\n Uso:\n”)//
printf(” ./wordGenerator [-C CaracteresAUsar] [-r] -l <longitudPalabra> \n”);
printf(“\n Generacion palabras de longitud 3, metodo lineal\n”);
printf(” ./wordGenerator -l 3\n”);
printf(“\n Generacion palabras de longitud 3, metodo recursivo\n”);
printf(” ./wordGenerator -r -l 3\n”);
printf(” Generacion palabras de longitud 3 con vocabulario abcdefghABCDEFGH\n”);
printf(” ./wordGenerator -l 3 -C abcdefghABCDEFGH\n\n”);
_exit(0);
}


Configuracion del sonido FreeBSD en nc6400

Posted on May 22nd, 2008 in FreeBSD, tutoriales by Miggs

beastyAl instalar FreeBSD 7.0 para tener sonido en el portátil, es necesario ordenarle explicitamente al sistema que cargue el modulo de sonido corespondiente. Esto afortunadamente es una tarea relativamente simple que se arregla insertando una linea en /boot/loader.conf.

Tarjeta de sonido

Para ver los dispositivos PCI del pc utilizamos el comando ‘pciconf’:

# pciconf -l -cv

[..]
vendor = ‘Intel Corporation’
device = ‘82801G (ICH7 Family) High Definition Audio’
class = multimedia
cap 01[50] = powerspec 2 supports D0 D3 current D0
cap 05[60] = MSI supports 1 message, 64 bit
cap 10[70] = PCI-Express 1 type 0
[..]

Modulo de sonido: snd_hda.ko

Es necesario cargar el modulo snd_hda para que el audio funcione correctamente.

# kldload snd_hda

Para cargar el modulo automáticamente durante el arranque del sistema, añade la siguiente linea en /boot/loader.conf

snd_hda_load=”YES”


Resolucion nativa 1280×800 en FreeBSD 7.0, Compaq nc6400

Posted on May 22nd, 2008 in FreeBSD, tutoriales by Miggs

beastyTal y como suele ocurrir al instalar Debian, una de las primeras batallas a las que se enfrenta uno es configurar la configuración de X11. FreeBSD no es diferente, especialmente en resoluciones diferentes a 1024×768. En mi caso, dispongo de un compaq nc6400 equipada con un Core 2 Duo T5500, 3 GB de RAM, disco SATA de 250 GB y afortunadamente el chipset GM945 de intel. La pantalla es de 14.1” con una resolución nativa de 1280×800. El proceso no es complicado en si pero si que puede llevar algo de tiempo a los recién iniciados como me ocurrió a mi.

Por cierto, aquí os dejo un ‘must have’ a todos los que migréis de Linux a FreeBSD y viceversa Unix/Linux/BSD Cheat Sheet.

Especificaciones H.W. de mi equipo relevantes al manual.

  • Chipset GM945, AGP.
  • Resolución nativa de la pantalla: 1280×800.

Necesidades:

  • modulo i915
  • Paquete i915resolution.

Paso 1: Asegurarnos que el i915 esta cargado.

En FreeBSD para ver los modulos cargados en cada momento se utiliza el comando ‘klbstat’

# kldstat

En caso de que no este en la lista el modulo ‘i915.ko’ tendras que cargarlo.

# kldload i915

Para cargar el modulo automáticamente durante el arranque añade la siguiente linea en /boot/loader.conf

i915_load=”YES”

Paso 2: Instalacion paquete i915resolution.

Es necesario tener instalado este paquete para permitir algunas resoluciones especificas, como por ejemplo 1280×800 en nuestro caso. Hay muchas formas de instalar paquetes, una de ellas es.

# pkg_add -r i915resolution

Una vez instalado agrega las siguientes lineas a /etc/rc.conf

i915resolution_enable=”YES”
i915resolution_modes=”3c”
i915resolution_width=1280
i915resolution_height=800

Configuracion: /etc/X11/xorg.conf

Este es mi xorg.conf.

Section “Files”
FontPath “/usr/share/fonts/X11/misc”
FontPath “/usr/share/fonts/X11/cyrillic”
FontPath “/usr/share/fonts/X11/100dpi/:unscaled”
FontPath “/usr/share/fonts/X11/75dpi/:unscaled”
FontPath “/usr/share/fonts/X11/Type1″
FontPath “/usr/share/fonts/X11/100dpi”
FontPath “/usr/share/fonts/X11/75dpi”
EndSection

Section “Module”
Load “i2c”
Load “bitmap”
Load “ddc”
Load “dri”
Load “extmod”
Load “freetype”
Load “glx”
Load “int10″
Load “vbe”
EndSection

Section “InputDevice”
Identifier “Generic Keyboard”
Driver “kbd”
Option “CoreKeyboard”
Option “XkbRules” “xorg”
Option “XkbModel” “pc105″
Option “XkbLayout” “de”
EndSection

Section “Device”
Identifier “Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller”
Driver “i810″
BusID “PCI:0:2:0″
Option “AGPMode” “4″
Option “AGPFastWrite” “yes”
Option “ColorTiling” “on”
Option “EnablePageFlip” “yes”
Option “DynamicClocks” “true”
Option “BIOSHotkeys” “true”
EndSection

Section “Monitor”
Identifier “Generic Monitor”
ModelName “1280X800@60HZ”
Option “DPMS”
VendorName “Hp”
Modeline “1280×800″ 80.58 1280 1344 1480 1680 800 801 804 827
EndSection

Section “Screen”
Identifier “Default Screen”
Device “Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller”
Monitor “Generic Monitor”
DefaultDepth 24
SubSection “Display”
Depth 24
Modes “1280×800″
EndSubSection
EndSection

Section “ServerLayout”
Identifier “Default Layout”
Screen “Default Screen”
EndSection

Section “DRI”
Mode 0666
EndSection

Section “Extensions”
Option “Composite” “Enable”
EndSection


Instalacion por red con PXE. Ubuntu/Debian

Posted on December 26th, 2007 in Linux, tutoriales by Miggs

Requisitos

  • Un servidor DHCP
  • Un servidor tftp (trivial ftp) con soporte hpa.

Instalación Requisitos

Suponiendo que disponemos de una maquina con Debian o alguna de sus variantes, obtengamos los paquetes necesarios:

$ sudo apt-get install dhcp3-server tftpd-hpa

Configuración

Servidor Dhcp

Una vez instalados es necesario configurar el servidor de dhcp. El archivo de configuración suele encontrar en /etc/dhcp3/dhcpd.conf, es bueno hacer un backup.

$ sudo cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.confBackup

Edita lo con tu editor favorito. Aquí os dejo el contenido de mi fichero de configuración:

option domain-name-servers 192.168.1.1;
default-lease-time 86400;
max-lease-time 604800;
authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.70 192.168.1.100;
filename “pxelinux.0″;
next-server 192.168.1.106;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
}

Es importante que NO SOLO copiéis y peguéis. Comprobar que los parámetros son correctos, con especial atencion a:

  • option domain-name-servers -> servidor de dns, en mi caso el propio gateway.
  • subnet -> Rango de la propia LAN.
  • range -> Rango en el que el servidor de dhcp concedera ips.
  • filename -> Nombre del archivo desde que el que comenzar el proceso de arranque. Este fichero en mi caso se encuentra en el directorio raiz del servidor de tftp.
  • next-server -> direccion donde se encuentra el servidor de tftp.
  • routers -> Direccion del gateway

Reiniciad el servidor para que los cambios tengan efecto

$ sudo /etc/init.d/dhcp3-server restart

Servidor de tftp

Una vez instalado el servidor de tftp descarguemos los ficheros que utilizaremos para el inicio de la instalación.

Si usas Ubuntu -> netboot.tar.gz

Si prefieres Debian -> netboot.tar.gz

Una vez descargado descomprime lo en /var/lib/tftpboot/

$ sudo tar -xvvf NombreFichero.tar.gz –directory /var/lib/tftpboot/

En este caso NO es necesario reiniciar el servidor de tftp.

Comprobación que los servidores están arrancados

Intoduciendo $ netstat -uap. Deberian de aparecer dos procesos en escucha udp en el puerto 68 para dhcpd y 69 para tftpd. En caso de que falte alguno de los dos intenta arrancarlos.

DHCP: $ sudo /etc/init.d/dhcp3-server start
TFTP: $ sudo /etc/init.d/tftpd-hpa start


Next Page »