Jornada “A Todo Ruby” organizada por el UYLUG

Una jornada mas que interesante para conocer uno de los lenguajes mas potentes del momento a la que lamentablemente no podré asistir pues se superpone a mi horario laboral :(

Aviso original del grupo RugUy:

Hola gente,

Bueno… hace ya un tiempo que se viene cocinando esto pero recién hoy
se lanzó el anuncio oficial. Hay poco tiempo para difusión así que
agradezco si ustedes nos ayudan reenviando el anuncio a todos quienes
crean que puedan estar interesados. Sería bueno juntar un buen número de
gente, especialmente ahora que ya algunas empresas locales han
manifestado interés en nuestro lenguaje.

** Sábado 16 de Agosto, 17 hs.

A TODO RUBY -con la participación de miembros del Grupo de Usuarios
Ruby del Uruguay-

I) Introducción al lenguaje de programación Ruby.
Diego Algorta.
II) Introducción a Rails.
Nicolas Sanguinetti.
III)  Más allá del testing: specs y el Desarrollo Guiado por
Comportamiento. (Beyond testing, Specs and BDD)
Evan Henshaw.

Lugar: FCI - Fundacion de Cultura Informática - www.fci.edu.uy -
Venezuela 1299 Esquina Francisco Acuña de Figueroa (detrás del IPA)
Mapa: http://tinyurl.com/6mk39a

Asistencia libre y gratuita pero con lugares limitados, se deben
inscribir por mail a charlas@uylug.org.uy

Agradecemos la difusión que consideren.

Leave a Comment

Curso de Python organizado por UYLUG

Interesante oportunidad para comenzar con uno de los lenguajes del momento  :)

Curso de Python

Organiza: UyLUG

Auspicia: Artech, Menttes y FCI.

Temario:
*Introducción al Lenguaje
*Funciones, metodos, propiedades
*Buenas prácticas
*Tipos de datos nativos
*Orientación a objetos
*Excepciones
*Unit testing

SE EMITIRÁ CERTIFICADO

Docente: Roberto Allende

Fecha:
6/8/08 al 8/8/08
Grupo A: 9:00 a 13:00
Grupo B: 19:00 a 23:00

Lugar: Salón Azul de Artech. 18 de Julio 1645 piso 4.

Sábado 9/8/08 (Hora y Lugar a Confirmar)
Jornada: Presentación sobre PyGame y Programación para OLPC XO

*Costo:
Socios UyLUG al día: $ 800,00
No socios: $ 1.500,00

*Inscripciones y consultas:
Por e-mail a charlas@uylug.org.uy

** Inscripciones hasta el 2 de Agosto ¡¡¡¡LUGARES LIMITADOS!!!! **

Currículum de Roberto Allende:

* Miembro de Plone Foundation.
* Miembro del comité de Marketing de Plone Foundation.
* Emprendedor y desarrollador en menttes - http://www.menttes.com -
Empresa dedicada al desarrollo en Python, Zope y Plone basada en
Software Libre. Miembro de Zea Partners.
* Cofundador de Plone Conosur (http://plone.org/countries/conosur).
* Miembro del proyecto Communes Plone (http://www.communesplone.org/).
* Cofundador de la comunidad Freenets (http://www.freenets.org.ar).
* Autor del blog robertoallende.com dedicado a Software Libre, Plone y
temas relacionados con la web.

Leave a Comment

Final Release de openSuse 11

Luego de una larga espera al fin ha llegado el dia!!!

Ya se puede descargar directamente desde el portal de openSuse la versión final de openSuse 11.

Descargar openSuse 11

Aquellos que deseen obtener la versión de pago o “retail / box” en DVD con su cajita , manual y todos los chiches, con 90 dias de soporte de instalación pueden pre-ordenarla (ya que se lanza el 26 de junio) directamente desde la pagina de NOVELL por unos 55U$s (con el shipping via UPS a Uruguay queda en unos 75U$s).

Comprar openSuse 11 (Box)

No queda mas que decir , a descargar y a probarla!!!

Leave a Comment

Solución: Problema Java Swing/AWT y Compiz-Fusion

Hace ya poco mas de un mes comencé un cursillo en el Circulo Informático sobre Java del cual comentaré mi experiencia al finalizar el curso.

Hasta el momento no había tenido la necesidad de ponerme a estudiar ya que mas o menos manejaba los conceptos básicos de POO desde PHP5 (clases concretas , abstractas , interfaces , excepciones , etc).

En dicha institución utilizan como sistema operativo WINDOWS XP , por lo tanto las únicas pruebas que había realizado fueron sobre ese sistema asumiendo que al ser Java multiplataforma , correrían en forma idéntica en mi openSuse 10.3.

LLegado el momeno de comenzar con Swing decidí comenzar a estudiar en mi casa desde mi máquina.

Para mi sorpresa al intentar correr un ejercicio que habiamos hecho en clase (sobre Swing)  me encuentro con una ventana en blanco , donde deberian verse etiquetas, botones y cajas de texto.

Pero como podía suceder esto? no era Java multiplataforma? googleando un poco di con la solución a el problema , que aparentemente sería un BUG que se “activa” al habilitar los “desktop-effects” , como Compiz-Fusion o Beryl.

La solución es MUY sencilla y consta de pasar una variable de “ambiente” a Java.
Basta con editar como root el archivo /etc/environment y agregar la linea AWT_TOOLKIT=”MToolkit” , luego reiniciamos la sesión y listo.

Ya podremos visualizar nuestas GUI de Java apropiadamente :)

Problema Swing Compiz Fusion

Leave a Comment

Guía : Instalar Lexmark Z615 en openSuse 10.x

A continuación dejo una pequeña guía de como conseguir soporte CUPS para nuestra sencilla , económica y queridísima Lexmark Z615 e openSuse 10.x .

Si bien los drivers CUPS para la misma son para la serie Z600 solo los he probado en la Z615 , y solo doy fe de que sirven para la misma.

1er paso:

Descargar los drivers (z600cups-1.0-1.gz.sh.zip) y descomprimirlos de el archivo zip de lo cual vamos a obtener el archivo z600cups-1.0-1.gz.sh.

2do paso:

Asumiendo que estamos que es archivo esta en nuestro directorio principal vamos a ejecutar en consola

sh z600cups-1.0-1.gz.sh -keep

, esto nos va a generar un directorio llamado install con 2 paquetes rpm en el , por tanto nos tenemos que mover a ese directorio , tecleando el comando “cd install” , luego que estemos situados en el directorio install vamos a proceder a instaals ambos paquetes. Es importante aclarar que ambos se deben instalar saltandose las dependencias incumplidas , por lo que vamos a utilizar el parametro –nodeps en nuestra instalación.

Seguimos en consola y escribimos…

rpm -Uvh –nodeps z600cups-1.0-1.i386.rpm
rpm -Uvh –nodeps z600llpddk-2.0-1.i386.rpm

.. y tendremos nuestros drivers CUPS funcionando.

3e paso:

Ahora solo resta dirigirnos a Sistema->Centro de Control->Impresoras->Impresora Nueva , marcamos la casilla “Impresora local” , hacemos click en siguiente y nos aparecera una lista con los drivers CUPS , en la cual deberemos ubicara los de nuestra impresora , en este caso z600v1.01 , la instalamos y listo , nuestra z615 esta lista para trabajar.

Lexmark z615

Leave a Comment

Creando un screencast con RecordMyDesktop

Hace unos dias y por curiosidad , decidí buscar información de como crear un screencast , ya que muchas veces es más práctico que crear tutoriales de texto “plano” , que (dependiendo del contexto) pueden ser un poco confusos para los lectores.

Asi conocí RecordMyDesktop

RecordMyDesktop es paquete dividido en 2 partes , que efectua la tarea de captura y “encodificación” de la actividad en pantalla. La primer parte es el “engine” escrito en “C” y la segunda es el “frontend” , el cual viene en 2 “sabores” , GTK y QT4 , para Gnome y KDE4 respectivamente.

El programa es extremadamente sencillo de operar e intuitivo y para acceder a la documentación del paquete basta con teclear “man recordmydesktop” en consola.

Luego de realizar la captura y codificación del video , vamos a obtener un archivo out.ogv (Ogg Theora) con nuestro screencast . Si queremos compartir el screen cast con un usuario windows o publicarlo en sitios como “toutube.com” o “linux-tube.com” vamos a tener que codificar nuevamente el video a un formato mas difundido , para que a nuestros amigos usuarios de windows no les de un ataque cuando intentan abrir el “.ogv” con el windows media player o que youtube , con todos sus millones de dolares invertidos en tecnología nos diga que no reconoce el formato.

Para esto vamos a utilizar el paquete “mencoder” , que es un paquete de conversion de video. Dicho paquete viene incluido en la instalación del “Mplayer” , asi que si lo tenemos instalado no tendremos de que preocuparnos y si no lo tenemos instalado debemos instalarlo (jojo), no solo por la utilidad de conversión de video sino por ser un excelente repoductor también.

Luego de instalado el paquete procedemos a la recodificación , para eso nos vamos a consola e ingresamos:

# Si efectuamos una grabación con sonido

mencoder out.ogv -oac mp3lame -ovc lavc -ofps 30 -vf scale=320:240 -o out.mpg

# Si efectuamos una grabación sin sonido

mencoder out.ogv -nosound -ovc lavc -ofps 30 -vf scale=320:240 -o out.mpg

Nota : scale=320:240 refiere a la proporción de video

Si todo salió bien vamos a obtener un video en formato mpeg y ya lo podremos compartir con el mundo.


Leave a Comment

El mundo según Google

Interesante documental de 46 minutos creado por Ijsbrand van Veelen , con la participación y testimonios de Marissa Mayer, Vint Cerf (uno de los creadores de internet y actual empleado de google), Ian Brown (Open Rights Group), Brewster Kahle (fundador de “Internet Archive”) y de algunos ingenieros de la empresa.

El documental da una introducción a lo que es el pagerank , la política “democrática” de la empresa (filosofía de la misma),la publicidad contextual y la dudosa política de privacidad del gigante de la web.

También encontamos algunas anécdotas de la empresa , como la de el origen de la famosa frase “Don’t be evil”.

Descarga desde Rapidshare

http://rapidshare.com/files/48606425/MSG.part1.rar
http://rapidshare.com/files/48609693/MSG.part2.rar
http://rapidshare.com/files/48617546/MSG.part3.rar
http://rapidshare.com/files/48635356/MSG.part4.rar
http://rapidshare.com/files/48637489/MSG.part5.rar

Pass: elgoog

Comments (1)

Monitorear hardware en openSuse 10.x

Ayer migré de openSuse 10.2 a 10.3.

En una primera instancia el cambio parece positivo , 10.3 parece mas estable y rápido que el 10.2 desde el arranque y cuenta con “One-Click Install Technology“.

Luego de instalar “Compiz-Fusion” note que al igual que “Beryl” , genera algunos picos de CPU , asi que decidí buscar la manera de monitorear la temperatura y la carga del mismo para evitarme futuros “problemas”.

Asi es como llegue a “lm_sensors“…

lm sensors

El paquete viene incluido en la instalación de openSuse 10.x , asi que no hay que instalar nada ni preocuparse por dependencias incumplidas.

La función básica del paquete es recopilar información de los sensores de nuestro sistema .

A continuacion dejo los pasos para la activación y configuración de lm_sensors.

1 - Abrir la consola y obtener permisos de root (comandos su o sudo)

2 - Digitamos en la misma sensors-detect para comenzar con la detección de sensores del sistema.

A continuación nos va ir listando los sensores uno por uno y a preguntandonos si los queremos monitorear mediante un prompt , a esto vamos a responder con YES a todos los sensores.

Al terminar la operación van a ver unas lineas similares a estas:

To make the sensors modules behave correctly, add these lines to
/etc/modprobe.conf:

#—-cut here—-
# I2C module options
alias char-major-89 i2c-dev
#—-cut here—-

To load everything that is needed, add this to some /etc/rc* file:

#—-cut here—-
# Chip drivers
modprobe it87
# sleep 2 # optional
/usr/bin/sensors -s # recommended
#—-cut here—-

Básicamente lo que tenemos que hacer es copiar y pegar las lineas entre #—-cut here—- y #—-cut here—- en los archivos que se nos pide.

Ej: en /etc/modprobe.conf vamos a pegar

#—-cut here—-
# I2C module options
alias char-major-89 i2c-dev
#—-cut here—-

y asi sucesivamente.

No copien la del ejemplo ya que existe la posibilidad de que sus maquinas no tengan los mismos sensores que la mia :P

3 - El 3er paso es correr los comandos en consola (siempre como root) para habilitar los sensores , en mi caso lo debo hacer con “modprobe it87” ya que es el único sensor que ha encontrado (el/los de la motherboard), ustedes deberán hacerlo con los suyos . Pueden obtenerlos de la lista que han generado con “sensors-detect“.

Ej:
To load everything that is needed, add this to some /etc/rc* file:
#—-cut here—-
# Chip drivers
modprobe it87
# sleep 2 # optional
/usr/bin/sensors -s # recommended
#—-cut here—-

4 - Ahora solo nos resta constatar que los sensores esten funcionando correctamente.

Esto lo hacemos corriendo el comando “sensors” en nuestra consola , la que nos va a devolver la lista de los sensores con sus correspondientes valores (temperatura,carga,voltage,etc)

5 - [opcional] Dar una interfaz gráfica a los sensores.

Para dar una interfaz gráfica a lm_sensors solo nos hace falta instalar el paquete ksensors

Luego de instalarlo podemos agregarlo al arranque de openSuse Sistema -> Sentro de Control -> Sesiones -> Añadir , ksensors

6 - Listo ya tenemos nuestro monitor de hadware funcionando!

lm sensors en tray lm sensors en ventana

Leave a Comment

El 19 de Junio se libera OpenSUSE 11

Una de las novedades mas destacadas es la presencia de un nuevo instalador basado en Qt4, el pilar del entorno de escritorio KDE 4.0. Aunque el instalador no cambia en lo que respecta a su funcionamiento, sí que lo hace en cuanto a la interfaz, que ahora hace uso de las librerías Qt4 que TrollTech ha liberado con licencia GPLv3.

Algunas capturas:

Road Map (por ahora vienen cumpliendo con todas las fechas):

The most important dates of the schedule are:
* Jan 17 openSUSE 11.0 Alpha 1 release
* Feb 07 openSUSE 11.0 Alpha 2 release
* Mar 18 openSUSE 11.0 Alpha 3 release
* Apr 17 openSUSE 11.0 Beta 1 release
* May 02 openSUSE 11.0 Beta 2 release
* May 13 openSUSE 11.0 Beta 3 release
* May 29 openSUSE 11.0 Release Candidate 1
* Jun 12 openSUSE 11.0 Goldmaster (internal)
* Jun 19 openSUSE 11.0 Public release

Actualmente se puede descargar la versión Beta 2 desde el portal de openSuse para testing.
Pensaba pasarme a 10.3 en esta semana , pero ahora no se si esperar hasta Junio… nah :)

Leave a Comment

Evitar “SQL Injection” en aplicaciones PHP

La modalidad de ataque “SQL Injection” es una de las mas utilizadas en la web
y por ello nuestras aplicaciones PHP deben estar mínimamente protegidas contra este tipo de ataques.
A grandes razgos el ataque consiste en pasar mediante formularios o parametros URL codigo SQL para dañar o acceder ilícitamente a información privada en nuestra base de datos.
Para proteger a nuestras aplicaciones de este tipo de ataque podemos crear funciones o clases para filtrar datos que nos lleguen mediante las variables enviadas hacia nuestra aplicación, asi como tener en cuenta algunas otras normativas de seguridad a la hora de crearla.

Aqui dejo un par de “tips” para mejorar la seguridad en nuestras aplicaciones e intentar evitar
ser atacados mediante esta modalidad.

 1- Al crear el usuario de DB restringir el mismo a las funciones básicas y necesarias para el correcto funcionamiento de nuestra aplicación. 
Habilitar a nuestro usuario a ejecutar cláusulas como “DROP” es una potencial vulnerabilidad y raramente son necesarias en nuestras aplicaciones.
 2- Efectuar consultas concretas (Ej: “SELECT `nombre`,`apellido` FROM…”) y evitar el abuso del “SELECT * FROM…”. 
Raramente necesitamos traer todos los datos de una tabla , tupla o columna , traer los justos y necesarios va a reforzar la seguridad en nuestra aplicación y a optimizar el tiempo de ejecución de la misma. En este caso obtenemos un doble beneficio.
 3- No desplegar errores en pantalla a los usuarios de la aplicación.
La salida de errores en pantalla puede develar información clave de la estructura de nuestra DB poniendo en compromiso
la seguridad de nuestra aplicación. Podemos utilizar la función “error_reporting” para ocultar errores y posteriosmente utilizar el manejo de exepciones de PHP para definir errores personalizados y guardarlos en un log privado.
4- Validar los datos que ingresan via formulario con PHP.
Las validaciones con JAVASCRIPT pueden ser fácilmente burladas y en algunos casos basta con deshabilitar el javascript del navegador.
5- Filtrar TODOS los datos que recibimos. 
Validar que sean enteros o cadenas , asegurarnos de filtrar caracteres impropios como operadores aritmeticos (Ej: *,-,+,=,%,etc) , escapar las comillas con contrabarras (Ej: utilizando funciones como “mysql_real_escape_string” o “addslashes“) y convertir los textos en entidades html utilizado “htmlentities“.
 6- Reservar palabras. 
Filtrar y prohibir palabras equivalentes a clausulas SQL como “INSERT,DROP,DELETE,SELECT,UPDATE,UNION,etc”.
En este caso tendremos que ser muy selectivos , ya que muchas palabras son de normal uso (Ej:”UNION”) y si estamos programando una aplicación en inglés ni que hablar.

Bueno , creo que por ahora es todo , si se me ocurre algo más habrá una segunda parte.

Enjoy ;)

Leave a Comment