domingo, 28 de junio de 2009

Saludos

Buen dia, hoy no publico algo muy formal, hay muchos temas que me gustaria redactar pero los dejare para despues, tengo mucho que no les platico algo y por eso me animo a escribirles aunque sea un poco, actualmente me encuentro trabajando en lo de mi titulación, realizare una monografia con el titulo "Intercepcion de frames etiquetados en VLANs", en un tiempo más publicare algo al respecto, aqui les dejo un link para los que esten interesados en el tema, en lo personal conozco poco de esto pero me suena bien y pues a investigar, je. Algo que tambien tendre que hacer como ejercicio practico sera un pequeño sniffer que intercepte frames para poder identificar de que VLAN provienen.



Bueno despues les platico y les muestro algo de codigo.

Saludos.

miércoles, 29 de abril de 2009

Asignación de permisos en Linux

El sistema operativo Linux cuenta con un mecanismo para la asignación de permisos a todo directorio o archivo que maneje, mecanismo que para todo principiante en dicho software es muchas veces desconocido.

El saber como funciona este mecanismo nos es de gran utilidad ya que nos permite realizar actividades que para algunos son sencillas pero para otros significa el dejar a un lado Linux, por la forma en que están acostumbrados a trabajar.

Esta forma de proteger los archivos y directorios es lo que hace a Linux un sistema mas seguro.


ASIGNACION DE PERMISOS

Se tienen tres tipos de miembros a los cuales se les pueden asignar permisos:
+ Dueño
+ Grupo
+ Otro

Los permisos que se pueden asignar a cada miembro son:
+ Lectura
+ Escritura
+ Ejecución

Es decir, se le puede dar permiso de lectura y escritura al dueño pero a los usuarios pertenecientes al grupo solo de lectura, por citar algún ejemplo.

Una forma de hacer esto es con el comando "chmod" seguido de los permisos q se asignaran y el archivo o directorio que se vera afectado.

Los permisos estarán simbolizados por números y la asignación de una combinación de estos será mediante la suma de los mismos, los valores para cada permiso son los siguientes:
+ Lectura = 4
+ Escritura = 2
+ Ejecución = 1

Ejemplo1: Si queremos permisos de lectura para el dueño, grupo y otro en el archivo main.l se escribe en una consola y como super-usuario lo siguiente:

chmod 444 main.l

El primer 4 se refiere a los permisos para el dueño, el segundo para el grupo y el tercero para otro.


Ejemplo2: Permisos de lectura (4), escritura (2) y ejecución (1), (4+2+1=7) para el dueño, permisos de lectura para el grupo y ninguno para cualquier otro usuario sobre el archivo main.l

chmod 740 main.l


De esta forma es como se asignan permisos en Linux, espero les sea de utilidad.

domingo, 26 de abril de 2009

FLISOL 2009

Saludos a todos y despues de un dia lleno de trabajo por la realización del FLISOL 2009 en las instalaciones del Instituto Tecnológico de Morelia, quiero felicitar, primero que nada, a todos mis compañeros, miembros del Grupo de Usuarios Linux de Morelia (GULMORE) por la gran labor que de acuerdo a sus posibilidades desempeñaron, y despues, que no son menos importantes, ya que sin ellos no hubiera sido posible, a todas las personas que asistieron a dicho Festival, agredeciendo también todos los puntos de vista que nos proporcionaron durante la clausura, ya que con estos nos brindan la posibilidad de mejorar la realización de futuros eventos.

Felicidades compañeros y sigamos a delante con los demas objetivos que tenemos en agenda.

miércoles, 18 de febrero de 2009

Pequeña aplicacion en Java Struts

Nuestra aplicación estará formada por los siguientes archivos y por una tabla llamada Passwords:

Model:
•Passwords.java
•PasswordsClient.java

Controller:
•LoginActionForm.java
•LoginAction.java
•struts-config.xml

View:
•inises.jsp
•bienvenida.html
•errorIniSes.html

Tabla Passwords:
Atributos: usuario, password;

El archivo Passwords.java viene siendo nuestra “Clase Entidad”, esta hecha a imagen y semejanza, en este caso, de nuestra tabla Passwords.

Con PasswordsClient.java realizamos la conexión a la base de datos y la creación de métodos para el manejo de esta.

LoginActionForm.java también conocido como “bean” contiene un atributo por cada cajita de texto en donde el usuario proporcionara sus datos, así como los respectivos métodos “set” y “get”.

En LoginAction.java llevamos acabo la lógica de validar los datos.

struts-config.xml es el archivo de configuración en donde estableceremos cual sera nuestra Action en este caso LoginAction.java, cual nuestro bean (LoginActionForm) y cuales nuestros forwards, es decir, si son validos los datos del usuario que ventana mostraremos (bienvenida.html) o hacia donde dirigiremos el flujo del sistema.

A continuación muestro un diagrama de cómo estarían relacionados en nuestra aplicación todos estos elementos:



Quizás resulta demasiado confuso pero conforme te familiarizas se convierte en razonable y aprecias lo funcional.

Para más información acerca de MVC podemos visitar:
http://es.wikipedia.org/wiki/Modelo_Vista_Controlador

La documentación de Java Struts:
http://struts.apache.org/

Java Struts

Después de tanto tiempo sin publicar, por aquí estoy de nuevo, actualmente me encuentro realizando mis residencias profesionales en la Comisión Federal de Electricidad de la ciudad de Morelia, el proyecto en el que estoy trabajando tiene que ver con la creación de un sistema utilizando el Framework Java Struts, no soy experto en esta tecnología pero tratare de explicar en que consiste.

Resulta que recordando la clase de “Ingeniería de Software” existe una arquitectura en la cual nos podemos basar para desarrollar algún sistema, el seguir este diseño nos trae algunas ventajas como: modularidad, fácil mantenimiento, sencillo de entender (por aquello de que luego tenemos código conocido en ocasiones como espagueti), etc.

Con Java Struts podemos desarrollar software siguiendo esta arquitectura llamada MVC (Model View Controller) donde la parte del modelo tiene que ver con el manejo de información, muy probablemente conexiones a la base de datos, View (vista), todo lo referente a las interfaces y Controller todo lo que es la lógica de negocios (Business Logic).

Para que se comprenda con mayor facilidad este Framework hablare de una pequeña aplicación en donde son validados los datos proporcionados por un usuario para permitir (mostrando una pagina de bienvenida) o denegar (mensaje de error) el acceso al sistema: esta aplicacion la muestro en la siguiente publicación.

viernes, 26 de septiembre de 2008

Personalizando el kernel

Cuando instalamos una distribución linux en nuestro equipo por lo general lleva una versión del kernel la cual esta configurada de manera muy generalizada, incluyendo por ejemplo: drivers para dispositivo bluetooth, tengamos o no dicho dispositivo en nuestro equipo, se configura para un determinado procesador, quizás no específicamente el nuestro, se instalan otras opciones para notebook de algunas determinadas marcas y así sucesivamente, en si, se tiene un kernel configurado para que funcione en la mayoría de los equipos, siendo por consecuencia no optimizado para algún equipo en especial.

Pero tratándose de linux pues existe la opción de que personalicemos el kernel para que tengamos uno a nuestra medida, que cumpla únicamente con lo que necesitamos, haciendo el desempeño de nuestra máquina más eficiente. A continuación mostrare los pasos necesarios para llevar acabo dicha tarea.

1.- Necesitamos descargar el código fuente del kernel que tengamos instalado, este se puede encontrar en: http://www.kernel.org

NOTA: También si lo deseamos podemos descargar un kernel mas nuevo con el fin de actualizar o en busca de soporte para nuevas tecnologías.

2.- Una vez que hayamos descargado el kernel, lo descomprimimos y estando en una consola como root, nos colocamos en el directorio que se descomprimió.

3.- Para comenzar en base a la configuración que nuestro kernel ya tiene, hacemos lo siguiente: copiamos el archivo llamado config-2.6.xxxxxx que se encuentra en /boot a la carpeta donde se encuentran los fuentes del kernel que descomprimimos cambiándole el nombre a .config

Ejemplo:
cp /boot/config-2.6.xxxx /usr/src/linux-2.6.16.xxx/.config

Se puede configurar el kernel omitiendo este paso, pero es recomendable que se inicie la configuración en base a una, que de antemano sabemos que funciona.

4.- Existen varias formas de configurar el kernel, pero la más común es mediante el comando make menuconfig, los diferentes comandos son:

1.- make config (para una configuración sin la ayuda de un entorno gráfico).

2.- make menuconfig (para un entorno gráfico tipo consola)

3.- make xconfig (para una forma gráfica)

En esta ocasión elegiremos la segunda opción ya que es una forma fácil de hacer esta tarea, una vez que hayamos tecleado el comando, notaras que te has sumergido en un mar de parámetros para configurar donde la mayoría son confusos, te tocara investigar para que los entiendas, algunos los puedes intuir pero otros requieren de más conocimiento.

Cada parámetro tiene tres opciones de configuración, una es incluirlo en el kernel que esta simbolizada con un (*), la segunda es compilarlo como módulo (M) y la tercera excluirlo del kernel, en saber elegir alguna de estas opciones para cada parámetro consiste una buena configuración.

Para elegir que un parámetro se compile incluido en el kernel debemos tomar en cuenta a todos aquellos que forman parte imprescindible del funcionamiento de nuestra máquina como los que tienen que ver con los drivers de los diferentes dispositivos.

Para el caso de compilar como módulo hay que elegir a todos los que se refieren a cuestiones que casi no se utilizan, por ejemplo: soporte para el sistema de archivos NTFS.

En el caso de excluir parámetros, seleccionamos a los que tienen que ver con dispositivos con los que no cuenta nuestro equipo o con soporte para aspectos que nunca ocuparemos.

Una vez que terminemos de configurar, guardamos los cambios y salimos.

NOTA: Para poder ver el menú de configuración ocuparas tener instalada una librería llamada ncurses, la cual se puede instalar con la ayuda de algún administrador de paquetes o descargándola de algún sitio de internet, por ejemplo en Debian, puedes hacerlo de la siguiente forma:

:#apt-get install ncurses


5.- Tecleamos:
make //Comienza a compilar (Tarda aprox. 30 min para que pienses en tener cerca un libro o alguna revista)
make install //Instala la imagen del kernel
make modules_install
mkinitrd -o /boot/initrd-2.6.x.img 2.6.x //Crea una imagen que ocuparemos cuando configuremos el gestor de arranque (GRUB, LILO).


6.- Configuramos GRUB:
Dentro del directorio /boot/grub existe un archivo de configuración del gestor de arranque (menu.lst), donde agregaremos una nueva entrada que corresponderá al nuevo kernel que configuramos. Ejemplo:

title kernel personalizado, kernel 2.6.x.x
//El titulo únicamente es el nombre que queremos aparezca en el GRUB

root (hd0,1)
//hd0 se refiere al disco duro

kernel /boot/vmlinuz-2.6.x.x root=/dev/hda2 ro
//Se establece la dirección donde se encuentra la vmlinuz nueva y donde se montara //el sistema, en este caso /dev/hda2, (ro) se refiere a que el sistema se cargue en //modo de solo lectura.

initrd /boot/initrd.img-2.6.x.x
//Dirección de la imagen que creamos

savedefault

7.- Una vez que hayamos configurado el grub, reiniciamos y esperamos a que todo salga bien.


RESUMEN:

1.- Descargar los fuente del kernel ( http://www.kernel.org )
2.- Descomprimir el kernel.
3.- Si se utilizara make menuconfig instalar ncurses.
4.- Teclear make menuconfig
5.- Configurar
6.- Teclear make
7.- Teclear make install
8.- Teclear make modules_install
9.- Crear imagen: mkinitrd -o /boot/initrd-2.6.x.img 2.6.x
10.- Modificar el gestor de arranque
11.- Reiniciar la PC
12.- Esperar que todo salga bien.

domingo, 24 de agosto de 2008

Integración de Sistemas

Después de tanto tiempo sin publicar voy hablarles del proyecto de investigación que realizamos con unos compañeros en la ciudad de Monterrey el pasado mes, el proyecto estuvo a cargo del Dr. Guillermo Jiménez Pérez el cual es investigador del ITESM (Instituto Tecnológico y de Estudios Superiores de Monterrey).

Platicando con el investigador nos planteo el problema de que en la actualidad una empresa cuenta con varios sistemas comúnmente heterogéneos, es decir, sistemas desarrollados para diferentes áreas de la empresa y construidos con diferentes lenguajes de programación, y que también, si requieren de una interacción con una base de datos posiblemente la lleven acabo con diferentes manejadores, que uno puede estar desarrollado en un habiente web y el resto no, etc.

Pero aparte de todas estas diferencias existe la necesidad de compartir información entre estos sistemas, actividad, que por lo general la lleva acabo una secretaria o una serie de procesos predefinidos.

Entonces lo que se buscó con el proyecto fue crear un mecanismo de interacción entre estos sistemas para que procesos de uno que requieren información de otro la consigan automáticamente sin la necesidad de un usuario y de manera transparente.

Para la realización de este trabajo, el proyecto se dividió en tres capas, las cuales lo hacían mas interesante, la primera tenia que ver con todo lo relacionado con una interfaz gráfica tipo RIA (Rich Internet Applications) como comúnmente se conocen, la segunda capa manejaba con JSP's la comunicación con la base de datos y la tercera utilizaba WebServices para lograr integrar los diferentes sistemas.

La primer capa se comunicaba con la segunda mediante archivos XML con un formato previamente establecido, es un mecanismo bastante interesante, la interfaz interpretaba los XML creados por los JSP's con los resultados de las acciones a la base de datos.

La estructuración de este proyecto facilita mucho la depuración de errores y la realización de futuras modificaciones ya que puede no ser necesario editar todo el sistema sino únicamente alguna capa de este sin que dejen de funcionar las demás.

Como pueden ver de este proyecto hay mucho que decir, de lo próximo que les platicare será de Openlaszlo que fue la herramienta que utilizamos para la realización de las interfaces gráficas.