DiaSQL generando esquema SQL apartir de un diagrama DIA

DiaSQL Dump es un plugin para el DIA que desarrolle en python bajo licencia GPLv3, que te permite crear un archivos en sintaxis SQL a partir de tu diagramas de base de datos.

Actualmente se encuentra en versión Beta pero ya es completamente funcional,  puedes obtener una copia y el código desde:

DiaSQL Dump nos ayuda a generar archivos con código SQL a partir de tus diagramas de base de datos desarrollados con la herramienta DIA, generando con esto una congruencia entre el modelado de tu base de datos con su definición en SQL, de esta forma si deseas generar algún cambio en el esquema de la base de datos basta con editar el diagrama.

Ejemplo

Previamente debes tener instalado el programa DIA, esto en ubuntu o debian linux lo puedes hacer con la siguiente instrucción.

sudo apt-get install -y dia

La siguiente figura muestra el diseño de un diagrama de base de datos en DIA.

ejemplo diagrama DIA definición de una tabla.

ejemplo diagrama DIA definición de una tabla.

De la figura se puede apreciar que la tabla Personas tiene las siguientes campos:

  • id: int(11), clave primaria, no puede ser nulo.
  • rfc: varchar(20), clave única, no puede ser nulo.
  • nombre: varchar(50), NO es clave, puede ser nulo.

Una ves que realizamos el diagrama nos vamos a archivo y del damos exportar seleccionamos al opción SQL Dump(*.sql) como se muestra en la siguiente imagen:

exportando volcado SQL del diagrama DIA

exportando volcado SQL del diagrama DIA

O bien desde linea de comando con la siguiente sentencia.

#h4x0r mode
dia  -e  ejemplo1.sql   ejemplo1.dia

Donde ejemplo1.dia es nuestro diagrama dia y ejemplos.sql es el archivo que queremos exportar(-e).

El cogido SQL generado por DiaSQL Dump para este ejemplo es:

-- Created by DiaSql-Dump Version 0.01(Beta)
-- Filename: ejemplo1.sql
-- Created: 2010-08-13

-- Personas --
CREATE TABLE IF NOT EXISTS `Personas` (
	`id` int(11) PRIMARY KEY NOT NULL UNIQUE AUTO_INCREMENT,
	`rfc` varchar(20) NOT NULL UNIQUE,
	`nombre` varchar(50)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-- End SQL-Dump

Nota: esto es solo parte de la documentación que espero levantar próximamente.

Anuncios

Redimencionando Imagenes con imagemagick Ejemplo practico

Uno de los mayores problemas de los sitios de Internet es que suelen ser algo lento su rendelizado y esto se debe a que son sobrecargados con imágenes y embebidos de Flash, Java o Silverlight. una buena practica es el tratar de evitar el uso de estos archivos o en su defecto el tratar de reducir el tamaño de los mismos.

Respecto a las imágenes,en la actualidad la mayoría de las cámaras digitales nos brindan una calidad muy buena, sin embargo estas imágenes suelen ser archivos que pesan en el orden de Megas. Hace un par de días me encontré con el problema que tenia que publicar un conjunto de galerías de imágenes las cuales provenían de una cámara digital.

Fue entonces cuando pensé en que este problema lo podía solucionar con un script, con las siguientes caracteristicas:

  1. Redimencionar todas las imágenes(a partir de su extensión) de un directorio.
  2. No debe borrar/modificar las imágenes originales.
  3. Lo ideal es que cree una carpeta ‘mini’ en donde guarde las nuevas imágenes redimensionadas.

Implementación: Manos a la obra.

Ahora que ya definimos los objetivos del script lo siguiente es buscar las herramientas para realizar tales objetivos, a mi se me vinieron varias opciones a la mente, pues existen múltiples formas de como hacerlo, algunas que conozco son:  scripts-Fu para el Gimp,  usando python image, PHP con la librería GD y finalmente la elegida con Bash haciendo uso de la suite imageMagick:

Dejo aquí las ligas de la documentación de imagenMagick:

http://www.imagemagick.org/Usage/

http://www.imagemagick.org/script/examples.php

*Intalando imagenMagick en debian ubuntu y derivados (requiere permisos de administrador):

apt-get install imagemagick

Sin mas dejo aquí el script con la implementación, el cual recibe como único argumento la extensión de las imagines a convertir:

reducir el tamaño de imgs

reducir el tamaño de imgs la técnica es redimencionar y bajar la calidad de 50% de compresion las imgs creadas quedaran en una carpeta que se llama mini

http://gist.github.com/364060

Script Instalando RubyOnraills en Fedora 10 y 11

Hace un par de días para un evento tuve que instalar en ruby onRails, como eran varias máquinas hice un script compatible con ambas versiones de fedora, debo decir que el script esta inspirado del siguiente post:

How to Setup Ruby on Rails for Fedora 10 and 11

http://www.technetra.com/2009/04/22/howto-setting-up-ruby-on-rails-for-fedora-10-and-11/

Sin mas aqui dejo el código disponible en gitHub[http://gist.github.com/392043]:

Setting up a Ruby on Rails development environment on Fedora 10 and Fedora 11

Tal vez el Mysql les cree conflictos respecto al password por defaul me parece que es ”, si no lo pueden cambiar desde el super usuario con la siguiente instrucción:

#mysqladmin -u root password ‘nuevoPassword’

Instalar openoffice 3.2 totalmente en español en sistema Linux Ubuntu 9.10 Karmic Koala

instalacion openOffice3.2 en español

instalación openOffice3.2 en español

Introducción:

En esta ocasión quiero compartir las instrucciones para el instalar el openOffice.org 3.2 completamente en español en un sistema Linux Ubuntu ocupando la versión Ubuntu 9.10 Karmic Koala pero muchos de estos pasos por ejemplo la parte de la traducción se puede instalar cualquier sistema basado en Debian que ocupe el apt como administrador de paquetes.

Explicare cada paso de la instalación si gustas puedes instalar el openOffice.org de esta manera aunque al final comparto un script en Bash el cual automatiza toda la instalación.

Agregando los nuevos repositorios a mi sistema operativo

Como lo comentaba Ubuntu el cual al igual que Debian emplean la colección de programas apt para administrar los paquetes instalados/disponibles del sistema. Lo primero que necesitamos es decirle al sistema donde puedo encontrar nuevos paquetes y esto lo hacemos al editar el archivo sources.list que normalmente se localiza en /etc/apt/sources.list para agregar los nuevos repositorios hacemos:

sudo add-apt-repository ppa:openoffice-pkgs/ppa

Sincronizando los nuevos paquetes disponibles:

El comando apt-get con la opción update [1]se usa para sincronizar el índice de paquetes respecto a sus fuentes. Los índices de paquetes disponibles se obtienen de los lugares especificados en /etc/apt/sources.list.(en paso anterior modificamos el archivo sources.list).

sudo apt-get update

Instalando versiones nuevas de paquetes:

Una ves que se ha sincronizado la lista de repositorios procedemos a instalar los nuevos paquetes (en este caso openoffice.org-gnome openoffice.org-evolution) que requiramos para esto empleamos el comando apt-get de la colección apt.

#en sistemas gnome
sudo apt-get –force-yes -y build-dep openoffice.org-gnome openoffice.org-evolution
sudo apt-get –force-yes -y install openoffice.org-gnome openoffice.org-evolution

En ocasiones el programa apt-get requiere descargar paquetes de Internet y suele preguntarte si deseas hacerlo las opciones (-y –force-yes) con afirmativas es decir el programa entiende que la respuestas de dichas preguntas son positivas y simplemente no las hace.

La primera linea que contiene build-dep lo que hace es construir las dependencias de compilación para que posteriormente la segunda linea que contiene el install ya las tenga listas.

Poniendo la ayuda en español:

#poniendo los paquetes en español
apt-get –force-yes -y build-dep openoffice.org-help-es
apt-get –force-yes -y install openoffice.org-help-es

Internacionalización(l18n) en español:

Por ultimo internacionalizamos el openOffice.org con las siguientes sentencias.

#l18n
sudo apt-get –force-yes -y build-dep openoffice.org-l10n-es
sudo apt-get –force-yes -y install openoffice.org-l10n-es

Por ultimo al abrir el openOffice.org nos deberia mostrar el siguiente splash.


spash.openOffice3.2

splash openOffice3.2

Finalmente el Script.

Finalmente comparto el script que te automatiza todos los partes anteriores:

descargar script
descargar script

para descargarlo y ejecutarlo es necesario tener permisos del usuario root dejo aquí las instrucciones del como ejecutar el siguiente script

#descargamos el código fuente de la página de Gist
wget http://gist.github.com/raw/361242/f8ebe01ab0514bda69e01b59c71e99f2aa866e36/installOpenOffice3.2.sh
#le damos permisos de ejecución al archivo
chmod +x installOpenOffice3.2.sh
#Finalmente ejecutamos el script con permisos de administrador
sudo ./installOpenOffice3.2.sh

Referencias:

[1].- Manual Linux apt-get

Importancia de la talleres en el FLISOL-Oaxaca

El siguiente contenido es una opinión muy subjetiva respecto a la importancia de la talleres en el FLISOL-Oaxaca que me gustaría que fuese tomada en consideración para la coordinación de dicho evento, al mismo tiempo refleja mi postura en cuanto al desarrollo de la tecnología.

Se me hace una lastima que los talleres no sean una parte de la estructura del FLISOL-Oaxaca pues esto implica el no coordinarnos y unir esfuerzos para realizarlos y que en cambio se halla optado ha formar equipos de trabajo a medida nuestras posibilidades los llevemos a cabo.

la razón de esto:
Trato de pedir una explicación al parecer se debe al hecho de que el Flisol es un evento de instalaciones y los talleres son una cosa secundaria, es decir el problema se reduce al hecho del desinterés que se tiene hacia los talleres, y es aquí donde tratare de indicar ciertos puntos que se me hacen relevantes de destacar.



Referencia histórica & Estructura de la Organización

Como ya sabemos el FLISOL es un evento llevado acabo por el esfuerzo coordinado de usuarios, dicho evento se realiza en distintas partes de latinamerica y que en cada una de estas existe sus peculiaridades, es decir es un evento con una diversidad, dada por los usuarios mismos.

Y nos da gusto que en el caso de la cuidad de Oaxaca ya llevamos(con este) 3 años de celebrarlo(pese ha ciertas inclemencias) siendo unas de las cedes caracterizada por su buena organización.

En esta vertiente se me hace un retroceso en nuestra que organización no haga una política de los Talleres en dicho evento, pues en la cuidad de Oaxaca hemos tratado de llevar una estructura horizontal en donde los esfuerzos son divididos y coordinados, con esto [1] hemos adoptado forma de convivencia basadas en este pensamiento y este le agregamos un sentir y una postura en cuanto al desarrollo de las tecnologías que estas deben ser aplicadas para el “buen vivir” es decir estas deben ser:
[2][3]“socialmente justas, culturalmente apropiables, ecológicamente sensatas y económicamente viables”.



El impacto social del FLISOL en Oaxaca

En lo personal no concibo un evento de Software Libre sin un impacto social pues la sola existencia de dicho software implica una practica social de compartir y re-difundir el conocimiento una practica que prepondera el saber en lugar del fin meramente económico, pero no nos confundamos esto para nada implica que no exista un costo, y muchas de estas veces el costo no es mas que el leerte “X HOW TO …” es decir el mismos esfuerzo generado por los usuarios es el costo del Software Libre, y este costo se reduce en la medida que los usuarios documentan sus aciertos y tropiezos, “es decir a la medida que los usuarios comparten su experiencia entorno al Software Libre, este tiene mayor impacto social” y los talleres fomentan dicha actividad.

Por otra parte se me hace una incongruencia, pues los usuarios Guslos denotado la practica Monopolica del no darle al usuario la opción de elegir su S.O. y que a causa de esto existan tantas maquinas con ventanas interrumpiendo con esto el desarrollo de S.O. emergentes, esta sin duda [4][5]estas son malas practicas pues no le da al usuario la LIBERTAD y el principio fundamental del software Libre es este concepto, que irónico resulta instalar un S.O. en este caso un GNU/Linux y no ayudar al usuario ha interactuar con el mismo.

Es pues guiar al usuario ha conseguir su emancipación tecnológica, pues no me gustaría que el FLISOL-Oaxaca se vea como “el evento en el cual puedes lleva tu maquina cada año para que le Actualicen/formateen su Linux”, no nos confundamos se trata ayudar en la medida que se pueda al estilo GPL(Con la esperanza q sea util…) y no hacerlo todo por ellos.

Solo así podemos generar una comunidad rica en la difusión/generación de nuestro conocimiento, de este conocimiento colectivo, donde cada miembro es un ente activo.



Motivación del usuario

Este punto lo destaco por el hecho de que considero que los usuarios deben estar cocientes que S.O.Pues de no ser así puede llegar a resulta una experiencia frustrante y una apatía del usuario hacia el sistema,no sólo se trata de que el usuario conozca que existe: un navegador, procesador de texto, editor de imágenes… si no que sepa utilizarlos o que por lo menos sepa utilizar los que le ayuden a resolver sus problemas de la vida cotidiana.

Cualquiera que sea la decisión favor de avisarme para ver como vamos a trabajar y en que medida “puedo ser útil en el desarrollo de dicho del evento”.

Referencias:

  • [1]-Hacker culture(s).
  • [2] -Foro Nacional de Tecnologías apropiadas.
  • [3]-Baños Secos y Azoteas Verdes.
  • [4]-Can You Trust Your Computer?.
  • [5]-Tacticas roboticas.

    logearse y descargar todo un directorio de un servidor ftp con el wget en linux

    En ocaciones es necesario conectarse a un servidor ftp para descargar toda una carpeta hacer esto cuando no tienes un cliente ftp suele ser tedioso en GNU/Linux con el comando wget resulta facil abrir una conexion ftp y con un par de parametros extras podermos autentificarnos en dicho servidor aqui el ejemplo de como hacerlo.

    conexion ftp wget

    conexion ftp wget

    Deteccion de intrusos en nuestra WI-FI

    Introducción:

    Como bien sabemos las redes inalámbricas tienen un problema de seguridad nativo del medio(capa 1 modelo OSI) y en este caso  es el espectro electromagnético dispersado por la atmósfera el cual es compartido por todos, por esta razón por las redes inalámbricas son(y serán inseguras) dadas la naturaleza del medio.

    Hace unos días por parte del equipo de SICÁ tuvimos la oportunidad de participar en el evento Ingenia que tuvo lugar en la cuidad de Oaxaca, entre las conferencias y talleres que tuvieron lugar hubo una que me llamo mucha la atención y fue la que dieron los amigos Diego(bugcillo) y el Nierox en este taller explicaron el uso de la suite aircrack-ng del como detectar redes inalámbricas, inyectar paquetes a dicha red y del como por medio de eucarísticas encuentra la key deseada.

    Todo esto me dejo pensando en una solución a la detección de intrusos en nuestra red, y se me ocurrió una idea!.

    Análisis

    En este caso suponemos que somos nosotros los propietarios del servicio y que hemos sido atacados por algún intruso (p.e. mi vecino).

    También suponemos que el servicio es Prodigy Infinitum de Telmex y que el modem routeador es un 2wire (que es lo + común).

    Modem 2 WIRE telmex

    Fig-1- Modem 2 WIRE telmex

    Ahora si accedemos a la URL http://gateway.2wire.net/xslt o bien  (http://home/) estaremos entrando a la configuración de nuestro modem en donde en el main page nos muestra un resumen del sistema si vemos en la parte inferior nos daremos cuenta que aparecen las maquinas colgadas a nuestro modem en este caso[fig2] solo la mía(fitorec) como activada y las maquinas pc_x y pc_y como parte del cache de las conexiones pero a su vez ambas están inactivas.

    red domestica

    Fig2 .- Se puede observar solo la maquina fitorec conectada

    Solución propuesta:

    Como podemos ver el router monitorea constantemente los hosts conectados y es posible visualizar quienes están conectado si accedemos al router traves de un navegador. Para detectar a un intruso o un nuevo hosts en nuestra red a travez de esta técnica puede resultar algo tedioso, pues tendríamos que visitar el sitio del router cada determinado tiempo para ver  a los nuevos hosts conectados.

    Pero si nos ponemos a pensar un par de minutos esto mismo pasa con los canales RSS, el correo electrónico, los mismos podcast, todos ellos normalmente tienen un cliente el cual se conecta con el servicio cada determinado tiempo para ver si hay nueva información. Esto ultimo me puso a pensar que se trata de  realizar un script que sea una especie de cliente que sirva para automatizar este proceso cada determinado tiempo y que de alguna manera nos notifique quienes están conectados a nuestra red.

    Fue entonces cuando se me ocurrió utilizar el Conky el cual es una programa que se integra al escritorio de Linux y nos sirve para monitorear distintas cosas de nuestro systema como: memoria consumida, procesador en uso, …,  y también se le pueden agregar scripts de red  para generar notificaciones  de gmail, twittter, .. entre otros servicios.

    Por otra parte el Conky también nos ayuda a descolar nuestro escritorio a qui dejo una cara del Conky:

    un ejemplo del conky

    un ejemplo del conky

    Sin mas la solución propuesta es hacer un script para detectar los usuarios conectados a nuestro router y mostrarlos en nuestro escritoria a través de conky.

    Implementación:

    Detección de Hosts: la deteccion de hosts la vamos hacer accediendo a la URL http://gateway.2wire.net/xslt en donde vamos a parsear para buscar la imagen (http://gateway.2wire.net/icons/icon_small_pc.gif) la cual corresponde a una maquina activa y de existir dicha imagen el nombre del host activo en este caso fitorec se encuentra localizada entre las etiquetas:

    <span class="textmono">fitorec</span>
    De esta idea he generado el siguiente script:
    
    
    
    
    codigo 2wireHosts.py script en python

    codigo 2wireHosts.py script en python

    Implementación 2:

    Via twitter el amigo @gnuget David Valdez me envio una versión mejorada del script, la verdad le quedo muy bien y se ve asta elegante el código(1 saludo man):

    Codigo desarrollado por gnuget

    Codigo desarrollado por gnuget

    Configurando Conky: pues bien ahora que ya tenemos un script para detectar los hosts en nuestra wifi ahora solo nos falta configurar nuestro Linux para que nos muestre esta info.  en su Escritorio.

    Instalación

    1.- creamos la carpeta donde estaran los archivos del compiz e ingresamos a la carpeta:

    mkdir  ~/.config/conky

    cd ~/.config/conky

    2.- Descargamos el siguiente archivo de configuración para el conky al cual he nombrado rightTop ya que se posiciona en la esquina superior derecha de nuestro desktop.

    wget http://gist.github.com/raw/259995/e9c8538cb6c45b7b7f063798262ed1566581680f/rightTop

    Nota:

    El este archivo de config. del  conky manda a llamar las siguientes fuentes.

    Las caules debes de descargar e instalar antes de seguir los siguientes pasos.

    3.- Descargamos el código de python que nos detecta los host conectados:

    wget http://gist.github.com/raw/259463/7af5d194d0829530cd5bbae6b7463e7f477e1014/2wireHosts.py

    4.- Y finalmente Ejecutamos nuestro conky con la siguiente instrucción:

    conky -c rightTop

    Corrida de ejemplo:

    Aqui les dejo una corrida de ejemplo de una maquina que configure con edubuntu para una niña de 9años (a mi como me hubiera gustado conocer linux a esa edad)