jueves, 9 de diciembre de 2010

Parche, Compilar e Instalar Módulo slamr del Módem PCI TP-LINK Motorola SM56 Data Fax para Kernel Linux 2.6.36

En el artículo Configurar, Compilar e Instalar Kernel de Linux y drivers para Modems PCI en Debian GNU/Linux 5.0 "Lenny" vimos como se realizaba este proceso para los kernel de linux anteriores al 2.6.36.

Al realizar la actualización del kernel a la versión 2.6.36 y compilar el módulo slamr (slmodem-2.9.11-20100718) recibimos un error de compilación. Para solucionar el error la comunidad de linmodems.org dispone de un parche para este driver. Para su instalación realizamos los siguientes pasos:

# El slmodem-2.6.36.patch tiene el siguiete contenido:

--- slmodem-2.9.11-20100718/drivers/amrmo_init.c.orig 2010-10-10 00:33:03.000000000 -0400
+++ slmodem-2.9.11-20100718/drivers/amrmo_init.c 2010-10-10 00:37:36.000000000 -0400
@@ -436,8 +436,11 @@
}


-
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
+static long amrmo_ioctl(struct file *file, unsigned int cmd, unsigned long parg)
+#else
static int amrmo_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long parg)
+#endif
{
struct amrmo_struct *amrmo = (struct amrmo_struct *)file->private_data;
unsigned long flags;
@@ -514,7 +517,11 @@
.read = amrmo_read,
.write = amrmo_write,
.poll = amrmo_poll,
- .ioctl = amrmo_ioctl,
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
+ .unlocked_ioctl = amrmo_ioctl,
+ #else
+ .ioctl = amrmo_ioctl,
+ #endif
.open = amrmo_open,
.release = amrmo_release,
};


# Para aplicar el parche, ejecutamos lo siguiente:
cp slmodem-2.6.36.patch slmodem-2.9.11-20100718
cd slmodem-2.9.11-20100718
patch -p1 < slmodem-2.6.36.patch

y nos debe mostrar la salida:
patching file drivers/amrmo_init.c

# Compilamos slamr para kernel 2.6.36
make
make install

Con esto configuramos, compilamos e instalamos el módulo para el kernel linux 2.6.36. Gracias a todos los usuarios de la comunidad y puedes encontrar otros recursos en http://linmodems.technion.ac.il

Configurar, Compilar e Instalar Kernel de Linux y drivers para Modems PCI en Debian GNU/Linux 5.0 "Lenny"

INTRODUCCION

El siguiente proceso es sobre la configuración, compilación e instalación del kernel y de los módulos ungrab-winmodem y slamr para un Módem interno TPLINK (TMIP5600/TMIA5629V) Motorola SM56 Data Fax Módem. Luego se instalarán las herramientas básicas para establecer una conexión mediante acceso telefónico.

AUTOR
Oleksis Fraga Menéndez
Universidad de Matanzas “Camilo Cienfuegos” – Facultad de Ingeniería Informática
emails: oleksis.fraga@umcc.cu, oleksis.fraga@gmail.com
fecha: sábado, 16 de octubre de 2010

DESARROLLO

Primeramente necesitamos las siguientes herramientas para la compliación del kernel y módulos asociados.

#REQUISITOS
GCC (GNU compiler)
make (GNU Make)
ncurses
libncurses5-dev
bin86
libc6
libc6-dev
binutils
kernel-package
module-init-tools
initrd-tools
initramfs-tools

Para la compilación de los fuentes del kernel tenemos dos variantes. Manera Clásica y la manera Debian. En este artículo abordaremos la forma clásica, pues existe documentación en el soporte para Debian que trata la segunda forma.
Descargamos de la página oficial las fuentes del kernel de Linux.

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.2.tar.gz

# Extraer fuentes del kernel
cd /usr/src/
tar -xvf linux-2.6.26.2.tar.gz
cd linux-2.6.26.2

Preparamos y compilamos el kernel
# Limpiar el kernel
make clean
make mrproper

Como consejo y para avanzar en el proceso de configuración de los módulos que queremos instalar o cargar en el kernel, podemos copiar la configuración de nuestro kernel actual y copiarla al direcrorio.

cp /boot/config-2.6.26-2-686 /usr/src/linux-2.6.26.2/.config

Chequeamos la configuración mediante menuconfig para revisar o añadir nuevas configuraciones. Si añades nuevas configuraciones debes salvarla nuevamente al .config

# Configurar el kernel
make menuconfig

# Compilar el kernel
make bzImage

Cuando termine el proceso de compilación seguiremos con la compilación e instalación de los módulos que configuramos o selecionamos anteriormente

# Compilar los módulos e instalación en /lib/modules/2.6.26.2/
make modules
make modules_install

El RAM disk contiene los módulos necesarios para iniciar el sistema y montar la partición raíz, y cargar el resto de módulos sólo necesario si los controladores de disco se han compilado como módulos

# Crear el initrd.img-2.6.26.2
update-initramfs -u -t -k 2.6.26.2

#Instalar el nuevo kernel


Copiar los ficheros bzImage, System.map y .config al directorio de arranque del kernel (/boot)
Renombrar bzImage a vmlinuz- , System.map a System.map- y .config a config-

cp /usr/src/linux-2.6.26.2/arch/i386/boot/bzImage /boot/vmlinuz-2.6.26.2
cp System.map /boot/System.map-2.6.26.2
cp .config /boot/config-2.6.26.2

Configurar GRUB o LILO para poder cargar la nueva imagen. Para la configuración del GRUB abrimos un editor de texto y editamos /boot/grub/menu.lst, luego añadimos el nuevo kernel al archivo de configuración despues de la linea que dice ## ## End Default Options ##, por ejemplo:

# Configurar el GRUB para arrancar el nuevo kernel
title Debian GNU/Linux, kernel 2.6.26.2
root (hd0,1)
kernel /boot/vmlinuz-2.6.26.2 root=/dev/hda2 ro quiet
initrd /boot/initrd.img-2.6.26.2
savedefault

En title adicionamos un nombre al nuevo kernel, este aparecerá en el menú del GRUB al iniciar el computador. En la etiqueta root donde dice “(hd0,1)” se coloca la ubicación donde esta el directorio boot en nuestro caso se encuentra en el hd0 es decir disco duro cero, partición 1, lo que en otra nomenclatura seria hda2, en la nomenclatura del GRUB el numero de discos y de particiones comienzan a partir de 0, es decir si tienes el directorio boot en el disco duro 1 partición 2 la sintaxis en el GRUB seria (hd0,1). Guardas los cambios y listo reinicias el sistema y eliges el nuevo kernel.

Para la comprobación una vez que reiniciemos abrimos una terminal y ejecutamos:

#Comprobando
uname -r

y nos debe mostrar la versión de nuestro nuevo kernel 2.6.26.2

*** NOTA ***
Este proceso de compilación esta probado con la fuente del kernel linux-2.6.26.2, con resultados satisfactorios.
Para la fuente del último kernel (linux-2.6.35.7) hasta el momento y la compilación del driver slamr tuve que crear el siguiente fichero cabecera o de inclusión para su correcta compilación. Los restantes pasos se realizaron con éxito.

touch /lib/modules/2.6.35.7/build/include/linux/utsrelease.h
echo "#define UTS_RELEASE \"2.6.35.7\"" > /lib/modules/2.6.35.7/build/include/linux/utsrelease.h

#Configuración e instalación de los módulos (drivers) para el módem
Descargamos desde linmodems (http://linmodems.technion.ac.il/packages/smartlink/) los drivers ungrab-winmodem-20090716 y slmodem-2.9.11-20100613

# Instalando ungrab-winmodem (ungrab-winmodem-20090716)
cd ungrab-winmodem-20090716
make
make install
modprobe ungrab-winmodem

# Instalando slamr (slmodem-2.9.11-20100613)
cd slmodem-2.9.11-20100613
make
make install

# Cargar módulos en el Kernel
modprobe ungrab-winmodem
modprobe slamr

# Comprobación de módulos cargados
lsmod | grep ungrab
ungrab_winmodem 1952 0
lsmod | grep slamr
slamr 428776 0

# Crear nodo para dispositivo
mknod -m 600 /dev/slamr0 c 242 0
/usr/sbin/slmodemd --country=USA /dev/slamr0
Abrimos otra terminal y continuamos:

# Instalar wvdial y configurar el acceso telefónico

apt-get install wvdial ppp pppconfig
wvdialconf /etc/wvdial.conf
...
Found a modem on /dev/ttySL0.
Modem configuration written to /etc/wvdial.conf.
ttySL0: Speed 460800; init "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"

#Configuración de wvdial en /etc/wvdial.conf
[Dialer Defaults]
Modem = /dev/ttySL0
Baud = 460800
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
PPPD Path = /usr/sbin/pppd
Carrier Check = no
Phone = 123456
Username = usuario
Password = contraseña
Ask Password = 0
ISDN = 0
Dial Command = ATDT
Stupid Mode = 1
Compuserve = 0
Auto DNS = 1

En los valores de Phone establecemos el número de teléfono al cual nos queremos conectar, en Username el nombre de usuario y en Password la contraseña, todo esto necesario para conectarnos mediante acceso telefónico

# Levantar la conexión
wvdial
Opcionalmente podemos hacer los siguiente pasos:

# Interfaz gráfica para conexión mediante modem (/dev/ttySL0)
aptitude install gnome-ppp

# Para algunas aplicaciones se necesita crear el enlace simbólico
# por ejemplo para kppp

ln -s /dev/ttySL0 /dev/modem

# Utilizar un script (modem.sh) en bash para cargar los módulos, crear los dispositivos y levantar el demonio slmodemd

#!/bin/bash
#Cargamos los módulos al kernel
modprobe ungrab-winmodem
modprobe slamr
#Creamos el nodo para el dispositivo
mknod -m 600 /dev/slamr0 c 242 0
mknod -m 600 /dev/slamr1 c 242 1
mknod -m 600 /dev/slamr2 c 242 2
mknod -m 600 /dev/slamr3 c 242 3
# Crear el enlace simbólico para aplicaciones como kppp
ln -s /dev/ttySL0 /dev/modem
#Levantamos el demonio para el módem
slmodemd --country=USA /dev/slamr0
## ## FIN modem.sh ##

CONCLUSIONES

En este artículo vimos como configurar, compilar e instalar el kernel de Linux a la manera clásica. También compilamos e instalamos los módulos ungrab-winmodem y slamr para el funcionamiento del Módem interno TP¬LINK (TM¬IP5600/TM¬IA5629V) Motorola SM56 Data Fax Módem. Configuramos e instalamos wvdial, ppp y pppconfig para la conexión mediante acceso telefónico.

Puedes visitar otro artículo relacionado con la configuración del Modem TP LINK para el sistema NOVA 1.1.2 BAIRE en el siguiente enlace:

http://www.nova.uci.cu/documentacion/comos/Configuracion-Modem-TP-LINK.pdf
http://www.nova.cu/foros/viewtopic.php?f=18&t=162

En posterior artículo veremos como empaquetar nuestro kernel y sus módulos en un paquete de Debian (.deb) para próximas reinstalaciones de nuestro sistema y asi ganar tiempo al realizar este proceso.

Otras referencias de interés:

http://www.pri.jovenclub.cu/jc/linux/revista_linvix/
http://www.pri.jovenclub.cu/jc/linux/revista_linvix/8/ : Instalando un módem PCI en entornos GNU/Linux
http://www.pri.jovenclub.cu/jc/linux/revista_linvix/9/ : Instalando módem PCI Motorola SM56

domingo, 20 de junio de 2010

Solucionar error en tabla de base de dato en MySQL

Si en MySQL obtenemos el error parecido a:

Duplicate entry '109516' for key 1

QUERY: INSERT into nombre_de_la_tabla
(entity_guid, name_id, value_id, value_type, owner_guid, time_created, access_id) VALUES
(13392,'906',11,'integer', 721, 1276811859, 2)

Podemos solucionarla de la siguiente vía:

Entrando al phpmyadmin, selecciona la base de datos, SQL e introducir la sentencia siguiente:

repair table nombre_de_la_tabla; (repara la tabla directamente)

La salida debe ser como:

Table Op Msg_type Msg_text
nombre_de_la_tabla repair warning Number of rows changed from 108684 to 108633
nombre_de_la_tabla repair status OK

Después de esto todo volvió a la normalidad. uffff!

Fuente: http://www.rubendariux.com/?p=118

Nos leemos...

lunes, 14 de junio de 2010

Convertir videos a varios formatos utilizando Mencoder

Algunos scripts en bash útiles para convertir videos a otros formatos especialmente a AVI



#!/bin/bash
# FILE: avi2mpeg.sh
# Convertir varios archivos AVI a MPEG
# autor: OLEKSIS FRAGA MENENDEZ
# weblog: http://oleksisfraga-udic.blogspot.com/

for video in "$@"
do
echo "Encoding $video..."

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
-vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=15:vstrict=0:acodec=ac3\
"$video" -o "$(echo $video | sed 's/avi$/mpg/')"

echo "Done!"
done



#!/bin/bash
# FILE: mov2mpg.sh
# Convertir varios archivos MOV a AVI
# autor: OLEKSIS FRAGA MENENDEZ
# weblog: http://oleksisfraga-udic.blogspot.com/

for video in "$@"
do
echo "Encoding $video..."
mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac mp3lame "$video" -o "$(echo $video | sed 's/mov$/mpg/')"
echo "Done!"
done



#!/bin/bash
# FILE: rmvb2avi.sh
# Convertir varios archivos RMVB a AVI
# autor: OLEKSIS FRAGA MENENDEZ
# weblog: http://oleksisfraga-udic.blogspot.com/

for video in "$@"
do
echo "Encoding $video..."
mencoder -oac mp3lame -ovc lavc -lavcopts vbitrate=900 -ffourcc xvid "$video" -o "$(echo $video | sed 's/rmvb$/avi/')"
echo "Done!"
done



#!/bin/bash
# FILE: mkv2avi.sh
# Matroska video files to AVI.
# autor: OLEKSIS FRAGA MENENDEZ
# weblog: http://oleksisfraga-udic.blogspot.com/

INPUT=$1
OUTPUT=$2

mencoder $INPUT -mc 0 -oac mp3lame -lameopts br=192 -ovc xvid -xvidencopts pass=1 -o /dev/null

mencoder $INPUT -mc 0 -oac mp3lame -lameopts br=192 -ovc xvid -xvidencopts pass=2:bitrate=1200 -o $OUTPUT

echo "Done!"



Espero que les sea de utilidad. Nos leemos!

jueves, 27 de mayo de 2010

Características especiales de phpMyAdmin

Diseño fisico de una base de datos

Vamos a /usr/share/doc/phpmyadmin/examples

Extraemos el compactado create_tables.sql.gz ejecutando

tar -xzvf create_tables.sql.gz


instalamos la base de datos phpmyadmin

mysql -u root -p

Introduciomos la contraseña del usuario (root) en caso de ser necesario y damos ENTER

Vamos a la configuracion del phpMyAdmin en /usr/share/phpmyadmin/libraries/config.default.php y establecemos las siguientes variables de configuración

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';

$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';

$cfg['Servers'][$i]['relation'] = 'pma_relation';

$cfg['Servers'][$i]['table_info'] = 'pma_table_info';

$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';

$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';

$cfg['Servers'][$i]['column_info'] = 'pma_column_info';

$cfg['Servers'][$i]['history'] = 'pma_history';

$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';


Listo! Ahora podemos ver el diagrama entidad-relación de nuestras bases de datos y tener una mejor idea de su esquema.

Saludos y nos leemos...


lunes, 24 de mayo de 2010

Instalar VirtualBox OSE 1.66 en GNU/Linux Debian "Lenny"

Se necesita tener los headers del kernel instalados para ello instalamos
Module-Assistant

aptitude install module-assistant

para descargar linux-headers-_i386.deb, build-essential, etc ejecutamos

m-a prepare

y decimos Sí(S) a los paquetes necesarios para instalar.

Podemos instalar virtualbox-ose-modules (Módulo vboxdrv) vamos a /usr/src/modules/virtualbox-ose y ejecutamos

make

make install

Y el modulo se instalará en /usr/src/modules/virtualbox-ose/vboxdrv.ko

Luego debemos adicionar el usuario que ejecutará la maquina virtual al grupo de usuarios de virtualbox llamado vboxusers.

gpasswd -a usuario vboxusers

Cargamos el módulo al kernel:

modprobe vboxdrv

Y con todo esto debemos iniciar VirtualBox OSE

Saludos y Suerte...

domingo, 28 de marzo de 2010

Twitteando con GNU Emacs sobre Windows


Para Windows bajamos desde el Sitio Oficial de Emacs la versión para W32. Vamos a esta dirección para bajar la extensión de Twitter denominada TwIt

Establecemos las variables de entorno del sistema que utilizara GNU Emacs y el archivo init para cargar TwIt.

Archivo .emacs
=============

;; Cargando TwIt

(add-to-list 'load-path "~/.emacs.d/twit") ; Save directory

;; Define M-x commands

(autoload 'twit-show-recent-tweets "twit" "" t) ; most recent direct tweets (!)
(autoload 'twit-show-at-tweets "twit" "" t) ; directed to you
(autoload 'twit-show-friends "twit" "" t) ; your friends
(autoload 'twit-show-followers "twit" "" t) ; your followers

(autoload 'twit-follow-recent-tweets "twit" "" t) ; at idle, check at background

(autoload 'twit-post "twit" "" t)
(autoload 'twit-post-region "twit" "" t)
(autoload 'twit-post-buffer "twit" "" t)
(autoload 'twit-direct "twit" "" t) ; tweet to person

(autoload 'twit-add-favorite "twit" "" t) ; Add to favourite: (*) star
(autoload 'twit-remove-favorite "twit" "" t)

(autoload 'twit-add-friend "twit" "" t) ; follow a friend
(autoload 'twit-remove-friend "twit" "" t) ; emove a frienda

;; Customize twit-multi-accounts in order to use these: ((user . pass) ...)
(autoload 'twit-switch-account "twit" "" t)
(autoload 'twit-direct-with-account "twit" "" t)
(autoload 'twit-post-with-account "twit" "" t)

(autoload 'twit-show-direct-tweets-with-account "twit" "" t)
(autoload 'twit-show-at-tweets-with-account "twit" "" t)

;; Personalizando TwIt

(setq twit-user "usuario")
(setq twit-pass "password")

;; Key bindings examples
;; Requires that autoloads above have been added to ~/.emacs

(global-set-key "\C-cTT" 'twit-follow-recent-tweets) ; (s)how (T)weets
(global-set-key "\C-cTst" 'twit-follow-recent-tweets) ; (s)how (t)weets
(global-set-key "\C-cTsa" 'twit-show-at-tweets) ; (s)how (a)t
(global-set-key "\C-cTsf" 'twit-show-at-tweets) ; (s)how (f)riends
(global-set-key "\C-cTsl" 'twit-show-at-tweets) ; (s)how fo(l)lowers

(global-set-key "\C-cTpp" 'twit-post) ; (p)ost
(global-set-key "\C-cTpr" 'twit-post-region) ; (p)post (r)egion
(global-set-key "\C-cTpb" 'twit-post-buffer) ; (p)post (b)uffer
(global-set-key "\C-cTpr" 'twit-direct) ; (p)post (d)irect
(global-set-key "\C-cTfa" 'twit-add-favorite) ; (f)avorite (a)dd
(global-set-key "\C-cTfr" 'twit-remove-favorite) ; (f)avorite (r)emove

;; FIN TwIt

Para que Emacs cargue la configuración del archivo init (.emacs) debemos establecer la variable de entorno HOME en nuestro sistema. Para ello vamos a las Propiedades de MiPC en Opciones avanzadas y establecemos la variable con el su valor, por ejemplo:

HOME=c:\Documents and Settings\usuario\

Nota: En caso de necesitar establecer la variable http_proxy para conexiones mediante proxy establecemos también su valor, ejemplo:

http_proxy=http://127.0.0.1:3128/

Con esto tendremos listo nuestro editor de texto para intercambiar con una de las redes sociales mas populares.

Espero que les sea de utilidad y felices Twits...

Referencias:
==========
http://www.emacswiki.org/emacs/TwIt
http://www.gnu.org/software/emacs/windows/Installing-Emacs.html

martes, 19 de enero de 2010

Deshabilitar barra asombrosa (Awesome Bar) Firefox


Cuando queremos borrar el historial completo en nuestro navegador como Mozilla Firefox no basta con ir a las opciones de Tools -> Clear Recent History... Ctrl+Shift+Del ; pues en la barra de direcciones de nuestro navegador se quedan archivadas las direcciones que hemos visitados con anterioridad antes de realizar la limpieza del historial. Es una característica de la barra inteligente de Firefox que busca y completa las url que van coincidiendo con la que estamos digitando.

Para ellos podemos deshabilitar esta característica mediante la configuración de Firefox entrando en la barra de direcciones:

about:config

luego en la barra de filtro buscamos el parámetro de preferencia:

browser.urlbar.maxRichResults

y establecemos su valor a -1


Luego reiniciamos el navegador y debe deshabilitar el completamiento en la barra de direcciones.


Para obtener más información puede visitar las siguientes referencias:

Referencias:
Tips Firefox

jueves, 14 de enero de 2010

Chromium OS Zero Portable


Cuando me entero de Chromium OS Zero y su característica de poder instalar en un dispositivo USB decido descargarlo e instalarlo para experimentar y he obtenido los siguientes resultados:

Login en una Terminal de Chromium OS Zero

Para entrar a la terminal o consola tecleamos Ctrl+Alt+T y se abre la terminal:
     
chronos@localhost:/home/chronos$

tecleamos: sudo su y luego entramos la contraseña para el usuario root en Chromium OS Zero

chronos@localhost:/home/chronos$ 
sudo su [sudo] password for chronos:  
root@localhost:/home/chronos#

Nota: el usuario y contraseña por omisión del Chromium OS Zero (tambien se utiliza para autentificación en Offline) es: 

username: facepunch@gmail.com
password: facepunch

  Montar el sistema de archivos como lectura/escritura en Chromium OS Zero
mount -n -o remount rw /
Referencias:
FAQs Chromium OS Zero
Chromium OS root user
Capturas de pantalla con Chrome

sábado, 26 de diciembre de 2009

Script y reglas Firewall con Iptables


Les dejo un script de configuración para las reglas de un firewall o cortafuegos con iptables. Las fundamentaciones pueden encontrarlas en las referencias y satisfacer sus necesidades particulares. Cualquier mejora pueden dejar sus comentarios para enriquecer el script.

#!/bin/sh
# /etc/rc.d/rc.firewall
# GNU/Linux FIREWALL con Iptables

f_start() {
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

# A nuestro firewall tenemos acceso total desde nuestra IP
# iptables -A INPUT -s 127.0.0.1 -j ACCEPT

# Establecemos politicas por defecto
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# Permitir todo a Localhost
iptables -A INPUT -j ACCEPT -i lo

# Enmascaramiento de la red local
# activamos el BIT DE FORWARDING
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE


# www
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# mail (25, 110, 143)
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 143 -j ACCEPT
# ftp
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
# ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# xdmcp
iptables -A INPUT -p udp --dport 177 -j ACCEPT
# cups/lpd
iptables -A INPUT -p udp --dport 631 -j ACCEPT
# Reglas específicas por ejemplo: bittorrent
# iptables -A INPUT -p tcp --dport 6881:6883 -j ACCEPT

# apply rules
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Firewall iniciado..."
}

f_stop() {
iptables -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
echo "Firewall parado..."
}

f_status() {
iptables -nL
}

f_restart() {
fw_stop
fw_start
}

case "$1" in
'start')
f_start
;;
'stop')
f_stop
;;
'status')
f_status
;;
'restart')
f_restart
;;
*)
echo "Usage: $0 start|stop|restart|status"
esac


Referencias:

domingo, 13 de diciembre de 2009

Salvar y Restaurar Base de Datos en MySQL de forma rápida y sencilla


En un sistema Debian la ubicación del directorio de datos de MySQL por omisión es en /var/lib/mysql . Para salvar la(s) base(s) dato(s) realizamos los siguientes pasos:

Salvar:

1. Paramos el servicio MySQL con:
/etc/init.d/mysql stop

2. Compiamos el directorio de datos a un directorio de respaldo:
cp -r /var/lib/mysql/ /algun_dir/
ó lo comprimimos mediante:
tar czf mysql-backup.tar.gz /var/lib/mysql
3. Iniciamos el servicio:
/etc/init.d/mysql start

Restaurar:

1. Paramos el servicio MySQL con:
/etc/init.d/mysql stop

2. Restauramos la copia de los datos
cp /algun_dir/respaldo-mysql/* /var/lib/mysql
3. Importate restaurar el dueño y el grupo a los archivos de datos para tener los accesos correctamente. Por omisión es el usuario mysql el encargado del servicio.
chown -R mysql:mysql /var/lib/mysql
4. Iniciamos el servicio:
/etc/init.d/mysql start

Les dejo un documento interesante sobre Bases de datos en MySQL donde el objetivo principal es: "adquirir las habilidades y conocimientos de MySQL necesarios para utilizar y administrar este SGBD (Sistema Gestor de Bases de Datos)".

En el punto Copias de seguridad abordan con más profundidad este tema.

Referencias:
Base de datos en MySQL
Activar innoDB en Mysql Server

jueves, 10 de diciembre de 2009

Serie sobre cómo construir un datawarehouse


Cuando estamos investigando en el tema de Business Intelligence o Inteligencia de negocio y poco a poco nos damos cuenta que hay muchas temáticas, nos suele surgir preguntas como, ¿Por dónde empezar? .

Existen muchos sitios que aborden este mundo. Una forma fácil de entender los principales conceptos y herramientas que dispone la inteligencia empresarial, es en el siguiente blog: Business Intelligence fácil

Una sección recomendada es: Serie sobre cómo construir un datawarehouse.

En este post les dejo la sección en formato pdf para que la puedas consultar offline. Espero que disfruten del buen contenido del blog.

Referencias:
Artículos sobre Serie DWH (web, pdf)

miércoles, 9 de diciembre de 2009

SQL Server 2005, Limpiar base de datos y restablecer columnas identity, todo en 6 lineas!


Una manera sencilla para vaciar nuestras base de datos en SQL Server 2005 se muestra a continuación. El artículo original se encuentra en DotNetSlackers.

/*Disable Constraints & Triggers*/
exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'

/*Perform delete operation on all table for cleanup*/
exec sp_MSforeachtable 'DELETE ?'

/*Enable Constraints & Triggers again*/
exec sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? ENABLE TRIGGER ALL'

/*Reset Identity on tables with identity column*/
exec sp_MSforeachtable 'IF OBJECTPROPERTY(OBJECT_ID(''?''), ''TableHasIdentity'') = 1 BEGIN DBCC CHECKIDENT (''?'',RESEED,0) END'

Referencias:
SQL Server 2005, Clean your Database Records & reset Identity Columns, all in 6 lines!

lunes, 7 de diciembre de 2009

Configurar JDK 6 por default en GNU/Linux Debian


A veces suele ocurrir que tenemos en nuestro sistema más de una máquina virtual para Java y necesitamos establecer una por omisión. De esta manera podrás establecer el JDK (Java Development Kit) de Sun Microsystems:

update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jdk/jre/bin/java" 1

update-alternatives --set java /usr/lib/jdk/jre/bin/java

Comprobamos con la siguiente instrucción:

java -version

Referencias:

domingo, 6 de diciembre de 2009

Configuración sitio web principal en Apache


Para establecer un sitio web por omisión en el servidor web Apache utilizaremos la directiva RedirectMatch. Para ello creamos un fichero de configuración en el directorio /etc/apache2/conf.d
, por ejemplo: websitedefault.conf

# Web Site default Apache configuration
# Configuración Sitio Web por omisión en Apache

Alias /website /var/www/website/
RedirectMatch ^/$ /website

Options +FollowSymLinks
AllowOverride None

Order Deny,Allow
#Deny From All
#Allow From 127.0.0.0/255.0.0.0 ::1/128
Allow From All

Referencias:
Apache Module mod_alias


sábado, 28 de noviembre de 2009

Software World: PowerBuilder 9: Internet and Distributed Application Development


Software World: PowerBuilder 9: Internet and Distributed Application Development: "

PowerBuilder 9: Internet and Distributed Application Development
By William Green, John D. Olson

* Publisher: Sams
* Number Of Pages: 816
* Publication Date: 2003-10-03
* ISBN-10 / ASIN: 0672324997
* ISBN-13 / EAN: 9780672324994
* Binding: Paperback

Product Description:

Version 9 of PowerBuilder introduces many features designed specifically to blend the traditional strength of PowerBuilder as a rapid Client/Server application development tool with the new and emerging models for distributed application development. PowerBuilder developers need PowerBuilder-specific information on interacting with Java application servers, such as WebSphere, WebLogic, and Sybase’s Enterprise Application Server (EAServer) and Web Service development. This book presents the new capabilities of PowerBuilder 9 along with the architecture and patterns required to create distributed systems in PowerBuilder."


Referencias:
Descargar: http://ifile.it/l9w0yi/0672324997.chm

miércoles, 18 de noviembre de 2009

Filtros SQL dinámico para reportes en SQL Server


Me ha sido de gran utilidad este artículo sobre Filtros dinámicos en SQL Server para realizar Reportes. Se los recomiendo y les puede ser de utilidad usando DataWindow con procedimientos almacenados como fuente de datos para generar los reportes que necesiten.

Espero les sea de utilidad.


martes, 10 de noviembre de 2009

Funte de datos Stored Procedure y Transact SQL


Trabajando con Datawindow y las diferentes fuentes de datos (DataSource), al utilizar la fuente de datos Stored Procedure me ha sido de gran utilidad los siguientes enlaces para trabajar con Transact SQL y la programación para el SQL dinámico generando consultas con criterios de búsqueda.

Referencias:


sábado, 7 de noviembre de 2009

Poblar un DropDownListBox control desde base datos


Para poblar dinámicamente un DropDownListBox control desde una tabla en Power Builder podemos usar un DataStore, en el contructor del DropDownListBox hacemos el retrieve sobre el datastore y luego insertamos en el control los elementos recuperados. Ejemplo:

datastore ds
ds = create datastore
ds.dataobject='dw_tdo_doc'
ds.settransobject(sqlca)
ds.retrieve()
int li
for li=1 to ds.rowcount()
insertitem(ds.getitemstring(li,'tdo_desc'),li)
next
insertitem('Seleccionar...',1)
selectitem(1)

Referencia:


viernes, 30 de octubre de 2009

Datos y Notación por punto en Power Builder


En un post anterior vimos las diferencia entre Culumnas computadas vs Campos computados en Power Builder. Es importante entender estos conceptos para facilitar la implementación sobre los datawindows.

Ahora si queremos por ejemplo acceder al valor de un campo computado, de un datawindow que esta en el header, footer o summary se especifica el número de fila como 1 a través de la notación por puntos, ejemplo:


dw_1.Object.avg_cf[1]

He encontrado referencia sobre este tema en PowerBuilder Technique - Data and Dot Notation. Espero que les sirva de aclaración o ayuda.