Hacer de mi pc un router

June 1, 2008 – 1:47 pm

diagrama de redEl problema: en mi habitación de mi casa solo una roseta (que vaya al router), me he dejado el switch en el otro piso, quiero internet en mi portátil a toda velocidad, sin wifi, con cable.
El material: Un cable cruzado, una NIC vieja (eth1, la que ya estaba es eth0) que he encontrado en un cajón. Mi sobremesa (geus-server), mi portátil (geus-laptop).
El contexto: Actualmente estoy tras un router en una VPN (192.168.1.0/24). Mi puerta de enlace es (192.168.1.1) y geus-server es 192.168.1.35  con un Ubuntu-Linux (Si, si, ya sé no se debe dar información de este tipo sobre tu red priviada)

La idea: es construir otra VPN (192.168.0.0/24) colocando eth1 en geus-server, la conecto con geus-laptop. En teoría con esto me puedo conectar a internet desde mi portátil, solo hace falta que geus-server enrute los paquetes.

Manos a la obra: Para eso tenemos el comando ip. Entre otras cosas este comando permite modificar la tabla de enrutamiento de nuestro pc para configurarlo como un router (también existe el comando route, pero que yo sepa es obsoleto)

  1. Configurar la ip de la nueva NIC
    sudo ifconfig eth1 192.168.0.1
  2. Indicar a geus-server donde está la subred 192.168.0.0/24 y como comunicarse por ella:
    sudo ip route add 192.168.0.0/24 dev eth1 src 192.168.0.1
    (la subred está por la interface eth1 y te debes identificar por esa interface como 192.168.0.1)
  3. Indicar a geus-server que envíe al router las peticiones que vengan de la subred 192.168.0.0/24
    sudo ip route add 192.168.0 via 192.168.1.1 dev eth0 src 192.168.1.35
  4. Finalmente comprobamos el estado de la tabla de rutas
    $ sudo ip route show
    192.168.0.0 via 192.168.1.1 dev eth0  src 192.168.1.35
    192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.35
    192.168.0.0/24 dev eth1  scope link  src 192.168.0.1
    default via 192.168.1.1 dev eth0

Algunas conclusiones:

Aunque me he llevado varias horas probando cosillas finalmente me he quedado sorprendido con la facilidad con la que puedes configurar redes y subredes. Aún es mas fácil con una aplicación de gnome, Firestarter, que hace de frontend de toda esta administración y con un simple wizzard puedes compartir una conexión de internet (que por supuesto es menos potente que manejar la tabla de enrutamiento, pero para este caso particular también hubiera funcionado).

En fin, con “ip” se pueden hacer infinidad de cosas mas, que quizá algún día pruebe, una de las que me parece interesante es utilizar dos NICs conectadas a diferentes proveedores de internet y realizar un balanceo de la carga por prioridades.

Saludos.

Frikada de mi fin de semana: una aplicación para gestión de bolsa

May 25, 2008 – 5:17 pm

Este fin de semana he frikeado en bastantes cosas: el libro de la gsoc “the beautiful code”, rssando mucho, programando bastante…
modelo de datos de bolsa

Para uso personal he construido un programa para la gestión de mis acciones en bolsa usando .NET.

Hace poco son inversor (estoy probando a ver si realmente se puede ganar algo) y la verdad es que con tanta información no me aclaro si gano o pierdo dinero o si ganaría mas en algo mas seguro como un depósito a plazo fijo u algo similar: operaciones, impuestos, dividendos .. necesito una herramienta que me permita consultar de forma mas potente mi estado.

Mi banco me ofrece toda esta información. Sin embargo carece de un sistema de consultas potente, es difícil sacar conclusiones o realizar consultas que pueden ser estratégicas.

Se necesitan dos herramientas:

  • Un modelo de datos con la historia de tus movimientos.
  • Un suministro de información a tiempo real del estado de la bolsa.

Para lo primero se ha utilizado Linq to Sql y un sql server express, con un par de trucos he conseguido la información de mis movimientos sin tener que escribirlas a mano uno a uno…

Para lo segundo se ha utilizado la web de YahooTrends a base de peticiones web y tratamiento de texto (usando System.Net.WebClient y System.Text.Regularexpressions), con esto podemos sacar los datos a tiempo real del valor de las acciones, además de mas información interesante (gráficas, noticias, tendencias…)

Una vez montado esto se puede hacer todas las consultas que se quieran. Ya solo falta una pequeña interfaz gráfica donde ir poniendo las primeras consultas que sean interesantes y con el tiempo ir poniendo otras mas complejas.

GUI programa bolsa

 

Regards and happy stocking.

Like tortoise svn but in gnome

May 19, 2008 – 4:40 pm

Tampoco digamos tanto :-). Sin embargo algo que es un hecho es que los usuarios de tortoise svn que conozco cuando trabajan en linux se sienten bastante incómodos. Tortoise svn tiene una ventaja respecto a sus competidores, se maneja desde el explorador de windows.

En linux no he encontrado clientes con tal característica. Sin embargo nautilus ofrece de forma sencilla extensiones en los menús contextuales: nautilus-scripts. Ya hay gente que se ha preocupado de hacer lo necesario para hacer un menú parecido al de tortoise svn:

sudo apt-get install nautilus-script-collection-svn

nautilus-script-manager enable Subversion

No obstante en muchos aspectos deja bastante que desear, es interesante para hacer operaciones sencillas rápidamente (updates, commit, reverts, rename…). Sin embargo para operaciones mas complejas (diffs, logs…) recomiendo SVN Workbench.


Not completely like tortoise svn. However is a fact that most of tortoise svn users when work in linux miss that tool. The main advantage of tortoise svn against their competence is that you can work in the windows explorer directly without open any form or window program.AFAIK linux does not have clients with those features. Nonetheless nautilus deliver a easy way to extend contextual menus: nautilus-scripts. There are some of that nautilus scripts to work with subversion:
sudo apt-get install nautilus-script-collection-svn

nautilus-script-manager enable Subversion

Nevertheless IMO this tool has a few of weakness, it is useful for simple operations like (update, commit, revert, rename…), for complex ones is better use another client: I recommend SVN Workbench.

Sshfs Hints

May 17, 2008 – 10:49 pm

disco duro y herramientas

Cuando usamos un servidor ssh como almacenamiento remoto es interesante plantearse el uso de sshfs.
Sshfs es un sistema de archivos que nos permite montar en local carpetas remotas del servidor ssh, es decir poder usarlo como si fuera un disco duro local . Un par de caracteristicas interesantes son:

  • Comunicaciones seguras ssh (por lo que te hace falta tener instalado en la máquina un servidor ssh, por ejemplo openssh)
  • Implementación sobre FUSE (sistemas de archivos en el espacio de usuario: sshfs, ntfs-3g…).

Configuración en /etc/fstab

sshfs#remoteUser@remoteHost:/ /local/folder/where/mount    fuse   user,noauto,gid=myGroup,uid=myUser,umask=007    0    0 

Opciones (repasando conceptos)

  • noauto: Indica que el montado hay que hacerlo explícito y no ocurrirá en el bootup.
  • user: indica que cualquier usuario puede montar la partición (nouser: requeriría ser root) (users: permitiría que cualquier usuario lo pudiera montar o desmontar, a diferencia de user que el que la monta la desmonta :-))
  • gid y uid: ownership de los archivos. En los sistemas FUSE son especialmente importantes ya que habitualmente carecen de capacidades para cambiar permisos y ownership
  • umask: mascara de permisos(inversa a chmod), por ejemplo 007 permite que el owner y el group puedan leer, ejecutar y escribir

Opinión
En mi opinión estar implementado con FUSE lo hace “mas lentillo”. Supongo que la decisión de haberlo implementado sobre FUSE es para poder utilizar las librerías ssh de usuario directamente y no tener que implementar ningún módulo para el kernel.

Mas info acerca de fstab:

http://www.tuquito.org.ar/tukipedia/index.php?title=Entendiendo_Fstab
http://www.informatik.uni-freiburg.de/~mader/FSTAB-Tuning.html

Cabo de San Vicente

May 9, 2008 – 11:58 pm

El pasado fin de semana fue grande. Mi novia me regaló por mi cumpleaños un viaje al Algarve portugués. Toda una sorpresa (ella siempre hace todo lo posible para que no me entere de nada hasta última hora) así que cogimos el coche y nos pusimos en marcha, pasamos por Tavira, Albufeira, Portimao y el Cabo de San Vicente.

Pablo en el Cabo de San Vicente
Un lugar para el recuerdo: Albufeira. Preciosa ciudad, su ambiente turístico contrasta con un claro pasado humilde y pesquero, ciudad llena de cuestas los edificios dan directamente al mar desde la altura de sus acantilados, entre ellos una pequeña playa que está directamente conectada al centro de la ciudad. Sublime.

Aprovechamos también para probar la gastronomía, salmón y dorada a la plancha, bacalao dorado… riquísimos y el premio para: “sartenada de marisco a la Algarvia”, una especie de guiso de almejas pero también con mejillones, gambas y langostinos… mmmm

Lo mejor de todo mi muca, un encanto, como siempre muchas gracias por ser como eres.
Te quiero mucho ! ^_^

Ahí os dejo esta foto. Desde la fortaleza de Sagres se vé al fondo el cabo de San Vicente, el punto mas occidental de la Europa continental.

Euphoria: amazing engine for natural movement simulation in a 3D World

April 27, 2008 – 4:23 pm

Absolutely impressive results. That company has achieved a very realistic results simulating (on the fly) humans natural movements in any situation. Video games animation designers won’t have to create each character’s animation at design time (at least not all), from now on they will be able to enable the “automatic control” of the character thanks to Euphoria enginee. A very cool merge of artificial intelligence technicals and physics engine.

Take a look:

You need to a flashplayer enabled browser to view this YouTube video

The oficial website of euphoria is: www.naturalmotion.com/euphoria.htm#video

Video games industry is much more that leisure time, it is being one of the most important way for advance in some computer science area. As time goes less things surprise me in the computer science world, but this is one of them.

Sooner or later other industries like robotics will use these technical and theoretical advances from the video games industry. Since that robotics and automatic control is one of my main interests I will follow them nearly.

Take another look to this robotic video.
Have fun.

You need to a flashplayer enabled browser to view this YouTube video

Google Summer of Code 2008: I have been accepted!

April 22, 2008 – 6:21 pm

I am excited.

The goal is provide a linq binding for sqlite in a maintainable/scalable way, a suit of tests and enough documentation for understand the work in the future.

Linq project includes O/R mapper capabilities in a similar way that Hibernate or NHibernate does (though are some substantial differences) so like any O/R mapper there are a internal and generic core for dealing with databases and specific logic for each database engine(usually known as binding, provider or controller): postgreesql, mysql, oracle, ms sqlserver. My GSoC objective is do implement that specific functionality for the Sqlite database engine to the Mono Project’s Linq implementation .

Those of you that don’t know what is linq have to know that is a project for the .NET platform that include O/R mapper capabilities and extends some syntactic features in C# and Visual Basic programming that bring near that languages to the functional and declarative programming (lambda expressions, query expressions, extensions methods, query protections into anonymous struts… and others cool features specially in static typed programming languages)

The start point DBLinq. They that want know what’s that, go to: http://code.google.com/p/dblinq2007/

Also congratulations to Christian López Espinola and Rafael Vargas also accepted in GSoC 2008 in ArgoUML project and Minix respectively. They are good friends and job partners, congratulations again!

Regards.

This year I’ll try to participate in GSoC

April 5, 2008 – 3:01 pm

Two years ago I tried it too, sent 6 submissions to the Mono Project and another one for JMARs project. Unfortunately I was not chosen. Last year didn’t submit because thought that probably would happen the same, however  two work parters and good friends were chosen in two GSoC Projects: Marcos Cobeña at The Mono Project and Christian López at ArgoUML.

In the short GSoC history four University of Seville’s students have participated in GSoC with nice results. Many partners as Rafael Vargas, Christian López and David Ventura will try again this year and hope that everyone of them have enough luck for show their value to the community.

This is my last year of studies so it is my last opportunity. I’ll wish submit on IA, 3D-programming and The Mono Project
My favorite mentors organizations are:

Singularity Institute for Artificial Intelligence:  http://code.google.com/soc/siai/about.html
Crystal Space:  http://www.crystalspace3d.org/main/Main_Page
The Mono Project: http://www.mono-project.com

Of course one of my targets is find a project where follow contributing and helping the community after GSoC.Good luck and have fun!

Hola Wordpress

March 30, 2008 – 5:49 pm

Llevaba un año sin escribir nada y tengo que hacer algo para motivarme, por eso necesito un wordpress en mi propia casa, en mi servidor, que pueda controlar y personalizar. A partir de ahora este es mi blog. http://geus.wordpress.com queda descatalogado, aunque no descarto periodicas exportaciones de los datos de este servidor.

Wordpress en casa te permite personalizar con gran cantidad de plugins tu blog. Mucho mas que podrias hacerlo en www.wordpress.com, eso sí, luego existen otros inconvenientes.

El primer trasteo ha terminado con la destrucción de mi primer mensaje (parecido a este) y que el pobre penyaskito había comentado. :-)

Saludos.

Lo que rodea a LINQ

April 16, 2007 – 1:00 am

Ya tenemos LINQ hasta en la sopa. Un par de tips:

Al parecer se está trabajando en una implementación para LINQ orientada al procesamiento paralelo: PLINQ.

Evidentemente no todo es paralelizable, pero quizá en la mayoría de ocasiones los bucles lo son y por tanto las querys de LINQ también lo son, en esos casos sería interesante poderlo declarar de forma explícita.

Por lo que he visto sería algo muy sencillo, parecido a esto:

(from p in People
 join c in Customers
 on p.Name equals c.Name
 select new {p.Name, p.Age}).AsPararell();

Imaginad que People es una fuente que viene de un fichero XML y Customers viene de una base de datos, operaciones I/O que de forma intrínseca traen esperas de los hilos de ejecución, paralelizar ambas mejorará el rendimiento en la mayoría de ocasiones.

Otra que lleva mas tiempo es BLINQ: generación de vistas y controlador dado un modelo de datos. (Ojo! lo interesante es la Vista(páginas asp.net)) algo similar al Scaffold de Ruby on Rails.

Es increíble el camino que está tomando el equipo de c#, están siendo muy atrevidos y la verdad es que según mi opinión lo están haciendo muy bien, c# su aspecto hoy es más dinámico y declarativo.

De sobra es sabido que los lenguajes fuertemente tipados tienen muchísimas ventajas, dado su rigor son insuperables cuando nos encontramos con proyectos de gama media y alta en complejidad y tamaño.

Sin embargo los lenguajes dinámicos siempre han destacado por su altísima productividad (RAD) para tareas concretas en módulos pequeños y que no requieran mucha complejidad, mas hoy con lenguajes
tan potentes como Python, Ruby, Groovy(que es una gran promesa, pronto oiremos hablar de el hasta en la sopa, también sobre GRails)

Lo que es sorprendente es que hoy día se compare su agilidad y potencia sintáctica, su mayor virtud con LINQ, hoy día podemos encontrar en Internet comparativas de Ruby, Python, Groovy y LINQ!!!

Puede que c# sea un antes y un después en los lenguajes de programación.