Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

Pointer to (void)

Cambio de Look

Diciembre 22nd, 2004 - [Enlace local]

Como está visto que el cambio es una constante hoy en dia, he cambiado el look del blog. ¿Cómo lo veis? Es más sencillo, pero es 100% mio y ahora se lee realmente mejor. Mañana haré las pruebas desde Linux a ver que tal.

Oracle te envia a casa un bonito pack con su base de datos, para que la pruebes. Aparentemente y siguiendo la moda de Ubuntu, es gratis.

Por otra parte esta semana empezaron mis andaduras con Gnome 2.8. No me he podido resistir a las screenshots, así que el objetivo es instalarlo sobre Debian SID y sobre FreeBSD. Más objetivos de desarrollo (personales): Construir un pequeño Frontend para GCC, un módulo para Apache que conecte con un ensamblado .NET, OpenLaszlo y más Oracle. Demasiada cosa para lidiar con el turrón y las cenas de navidad, que a este ritmo veo que no voy a pisar mi casa.

Más cosas, antes de que olvide. Espectacular MIT OpenCourseWare. Recomiendo la clase 21 del curso Product Design & Development de la Sloan School of Management: Organizing Concurrent Engineering (Lecture Notes). Lo de DSM me tiene asombrado, de veras.

Un saludo a todos, seguramente desconectaré estas fechas, así que feliz navidad.

» Leer más, comentarios, etc...

El arte de programar

Configurar Linux como Router

Diciembre 20th, 2004 - [Enlace local]

Recientemente he adquirido un ordenador de 2º mano en mi empresa. La utilidad que le voy a dar es la de tener un ordenador en la casa donde voy de veraneo en Cercedilla. Pero claro, durante estos días lo he estado configurando y metiendole todos los programas necesarios y los que preveía que tarde o temprano usaré. Con este ya suman 4 los ordenadores que tengo, a saber:

Servidor: VIA EPIA 800, 128 MB RAM, linux
Uso diario: AMD XP, 2.4 Ghz., 512 MB RAM, 280 GB HD, linux, windows xp
Portatil: AMD XP Mobile, 2.4 Ghz, 512 MB RAM, 40 GB HD, windows xp
Nueva adquisición: Pentium IV 2.4 Ghz, 768 MB RAM, 20 GB HD, windows xp

Pues con estos equipos el otro día se me ocurrió hacer dos redes, una del tipo 192.168.0.0/24 y otra del tipo 10.0.0.0/8 que estuviesen unidas al nuevo equipo, actuando este como router. En la red 192* tenía el ordenador de uso diario y el router ADSL, y en la red 10* tenía al portatil. Mi intención era que todos los ordenadores se vieran entre si y también tuviesen acceso a Internet. El ordenador nuevo tenía dos tarjetas y corría el linux knoppix. Una tarjeta tenía la ip 10.0.0.254 y la otra tenía la ip 192.168.0.4. En linux ambas se configuran así a través de la shell o linea de comandos:

ifconfig eth0 192.168.0.4 netmask 255.255.255.0 up
ifconfig eth1 10.0.0.254 netmask 255.0.0.0 up

En este ordenador, la puerta de enlace o gateway estaba configurado para 192.168.0.254, o lo que es lo mismo, la ip que tiene mi router ADSL:

route add default gw 192.168.0.254

El portatil y el ordenador de uso diario ejecutaban windows xp y tenian como ip 10.0.0.1 y 192.168.0.1 respectivamente. El portatil estaba conectado a un switch (con puerta de enlace 10.0.0.254) al igual que una de las tarjetas del ordenador nuevo; el ordenador de uso diario estaba conectado al router ADSL (como es un hub al fin y al cabo; con puerta de enlace 192.168.0.254) al igual que la otra tarjeta del ordenador nuevo.

Una vez ya todo conectado puse en el linux del ordenador nuevo esta sentencia desde la shell:

echo "1" > /proc/sys/net/ipv4/ip_forwarding

que permitia reenviar los paquetes tcp/ip por las redes que tenia acceso este ordenador (se puede ver poniendo un simple route en linux)

Pero hay triste de mi que los ordenadores host no se veian entre ellos, ya que haciendo ping de uno a otro no se veian, sin embargo si veian al ordenador nuevo, aunque curiosamente si veían al router y también podían navegar por Internet (en ambos estaban puestas ya las DNS correctas), por lo que pensé que algo había hecho mal. Asi que pensando, pensando, cambié la puerta de enlace del ordenador de uso diario que estaba como he comentado antes a 192.168.0.254 a 192.168.0.4 y ¡¡¡ voila !!! ya se veían entre ellos. Había creado dos redes con casi nada de esfuerzo. Luego ya me entretuve con el iptables para configurar accesos desde el shell como:

iptables -A FORWARDING -p tcp --destination-port 80 -j DROP

que no permite el paso de paquetes por el puerto http o

iptables -A FORWARDING -s 192.168.0.0/24 -d 10.0.0.0/8 -j DROP

que no permite el flujo de daots entre una red y otra.

El dibujo de la red sería tal que así:



y muestra como aunque el ordenador de uso diario y el router ADSL estan en la misma red, los paquetes entre uno y otro deben pasar por el ordenador nuevo.

» Leer más, comentarios, etc...

código escrito

¿Es el encapsulamiento un convenio?

Diciembre 12th, 2004 - [Enlace local]

Vuelvo con otra de mis dudas existenciales después de asistir a varias clases de programación. Esta vez se trata del encapsulamiento. El otro día, el profesor, explicándonos la Programación Orientada a Objetos, nos comentó que como norma de estilo existe...

» Leer más, comentarios, etc...

Y si hablamos de...

… de aprovechar el congreso

Diciembre 12th, 2004 - [Enlace local]

En el congreso del año pasado no paré. Volví a casa medio deshidratado, cansadísimo, y en los tres días siguientes al congreso dormí una media de 11 horas. Pero si aún así mereció la pena fué por la gente. La gente que no conocía y conocí, la gente que conocía virtualmente y encontré allí por primera vez, la gente con la que compartí pizzas a medianoche. Eso es lo que realmente hizo que mereceira la pena para mí, porque si os soy sincero, el año pasado asistí sólo a dos charlas :-(.

Pero a lo largo de este año he oido unos cuantos te ví pero no me atreví a decir nada, me alojé en el mismo hotel que vosotros, o no quise molestarte porque te ví ocupado. Y no quiero oir eso. Os puedo asegurar que casi todos (es broma!) los miembros de javaHispano son buena gente, que seguramente todos los asistentes quieren compartir experiencias (y no tiene porque ser sólo Java!), conocer a la gente que ven online todos los días, etc. Por eso os pediría que os esforceis en conseguir eso, en conocer gente, en estar con los demás, en estar conmigo (aunque tampoco digo que yo merezca la pena!).

Es cierto, seguramente estaré liado, pero después del congreso hay tiempo para muchas cosas, y en las pausas, y en la comida, y... siempre hay dos minutos, y luego email, y teléfono, y... infinitas posibilidades. Dos minutos de charla son mejores que 20 emails. Tenemos que acostumbrarnos a aprovechar estas posibilidades. Al menos eso es lo que yo deseo para este congreso, y espero que este congreso lo ofrezca. Y si no lo conseguimos al 100%, el año que viene lo haremos mejor. Prometido.

A... y si aún no te has inscrito.... ¿a que estas esperando!, ¿te lo puedes perder?.

» Leer más, comentarios, etc...

Configuración básica de CruiseControl

Diciembre 10th, 2004 - [Enlace local]

¿Que es la integración continua? Si leemos Automatizar la integración continua: una buena práctica tendremos una muy buena idea de que se trata. ¿Pero como logramos que la teoría se convierta en práctica? Podemos lograrlo instalando una de las herramientas mas conocidas: CruiseControl.

Lo primero es descargarnos la última versión disponible (2.2 al momento de escribir este post), y descompactarla en alguna carpeta que elijamos, por ejemplo c:\work\apps si estamos trabajando con windows.

Luego deberemos crear una carpeta de trabajo para CruiseControl, por ejemplo c:\work\cruise, y dentro de ella tres subdirectrios: checkout para los checkouts del CVS, logs donde CruiseControl creará los reportes y artifacts que nos servirá para contruir elementos que precisan ser mantenidos ente builds.

En la raíz de la carpeta de trabajo (c:\work\cruise), crearemos un fichero config.xml donde especificaremos la configuración de CruiseControl. Por ejemplo:

<cruisecontrol>
  <project name=“MyProject” buildafterfailed=“true”>
	
    <bootstrappers>
      <currentbuildstatusbootstrapper file=“logs/MyProject/status.txt”/>
    </bootstrappers>
	
    <modificationset quietperiod=“10″>
      <cvs localworkingcopy=“checkout/MyProject”/>
    </modificationset>
	
    <schedule interval=“60″>
      <ant antscript=“c:\work\apps\apache-ant-1.6.1\bin\ant.bat”
           buildfile=“build-MyProject.xml” target=“build”
           uselogger=“true” usedebug=“false”/>
    </schedule>
	
    <log dir=“logs/MyProject”/>
	
    <publishers>
      <currentbuildstatuspublisher file=“logs/MyProject/status.txt”/>
    </publishers>
  </project> 
	
</cruisecontrol>
En este fichero pondremos un tag <project> para nuestro proyecto, dentro del cual especificaremos (mínimamente):

<bootstrappers> Los bootstrapers son ejecutados antes que el proyecto se contruya, por ejemplo <currentbuildstatusbootstrapper> escribe en el log el estado del build.

<modificationset> Este tag nos permite configurar cómo CruiseControl buscará cambios en el CVS, por ejemplo con el tag <cvs>.

<schedule> Finalmente podemos configurar el script de ant (o Maven) para construir el proyecto, configurando el path a nuestra instalación de ant y el nombre de un fichero a ejecutar con su respectivo target (mas sobre esto adelante).

<log> nos permite especificar donde se crearán las salidas de CruiseControl.

<publishers> Los publishers se ejecutan luego de terminado un build (exitoso o no) y nos permiten, por ejemplo, enviar alertas por email con el resultado del mismo.

Para comenzar el proceso, primero deberemos extraer el proyecto a la carpeta de extracts, por ejemplo con el comando cvs -d :pserver:nombre-de-usuario@nombre-de-servidor-cvs/ checkout -P MyProject. Recordar también que CruiseControl necesita el cvs en el path.

Luego deberemos crear el fichero de configuración de ant c:\work\cruise\build-MyProject.xml que especificamos en el tag <ant>, el cual nos servirá para extraer del CVS la última versión del proyecto y lanzar su propio fichero ant para construir el proyecto:

<project name=“build-MyProject” default=“build” basedir=“checkout/MyProject”>
  <target name=“build”>
    <!– Get the latest from CVS –>
    <cvs command=“-d :pserver:username@cvsservername/ update -P”/>
    <!– Call the target that does everything –>
    <ant antfile=“build.xml” target=“compile”/>
  </target>
</project>
Ahora, suponiendo que el build.xml del proyecto (el que utilizamos todos los dias y CruiseControl baja del cvs) tiene un target llamado “compile” que reconstruye el proyecto, tenemos todo listo para poner a CruiseControl a funcionar.

Para ello, estando en el directorio de trabajo, ejecutaremos el .bat (o .sh según el caso) del directorio bin de CruiseControl:



C:\work\cruise>C:\work\apps\cruisecontrol-2.2\main\bin\cruisecontrol.bat

[cc]dic-10 08:01:15 Main - CruiseControl Version 2.2

[cc]dic-10 08:01:16 trolController- projectName = [MyProject]

[cc]dic-10 08:01:16 Project - Project MyProject: reading settings from config file [C:\work\cruise\config.xml]

[cc]dic-10 08:01:16 Project - Project MyProject starting

[cc]dic-10 08:01:16 Project - Project MyProject: idle

[cc]dic-10 08:01:16 BuildQueue - BuildQueue started

[cc]dic-10 08:01:16 Project - Project MyProject started

[cc]dic-10 08:01:16 Project - Project MyProject: next build in 1 minutes

[cc]dic-10 08:01:16 Project - Project MyProject: waiting for next time to build

Para ver como van progresando los builds, nada mejor que la aplicación web que viene con CruiseControl. Necesitaremos instalarla copiando c:\work\apps\cruisecontrol-2.2\reporting\jsp\dist\cruisecontrol.war a la carpeta webapps de Tomcat (o del servidor que creamos conveniente) y dejando que se despliegue. Pero también deberemos modificar el fichero web.xml de la aplicación para que apunte a nuestros directorios de trabajo. Mas específicamente, el <context-param>logDir” y el “rootDir” del servlet ArtifactServlet deben apuntar a c:\work\cruise\logs.

Luego accederemos a la aplicación mediante al url http://localhost:8080/cruisecontrol, cambiando localhost y 8080 al nombre y puerto de nuestro servidor.

Con esto tenemos mínimamente configurado nuestro servidor de integración para que busque cambios en el cvs cada 60 segundos, y de haberlos baje esos cambios, reconstruya el proyecto y deje los resultados para ser vistos con la aplicación web integrada.

» Leer más, comentarios, etc...

El II Congreso javaHispano ya esta aqui

Diciembre 9th, 2004 - [Enlace local]

Hace más de un año de este post y sin embargo la noticia es la misma, ya se ha abierto la inscripción para el II Congreso javaHispano que se celebrará los próximos días 15 y 16 de diciembre en la Universidad Rey Juan Carlos de Móstoles (Madrid).

En la página web del congreso podréis encontrar el formulario de inscripción y toda la información sobre el evento, incluido el programa del mismo. Un programa que destaca por su variedad, pero sobre todo por la calidad. Si el congreso del año pasado dejó el listón muy alto, este año la cosa se va a salir. Entre las novedades:

… y todo esto GRATIS !!!

En fin, que os espero haber convencido para asistir, pero si tenéis que convencer a vuestro jefe,
aqui va una lista de motivos, aunque sin duda uno de los más importantes es reforzar esta pequeña Comunidad que ha crecido alrededor de javaHispano. Esta es una de las pocas ocasiones que tenemos para conocernos, saber quién hay detrás de ese nick que nos soluciona la vida todas las semanas en los foros, o quién es ese tío que hace unos manuales tan buenos, o quién hay detrás de ese blog que leo a diario, o quién …

En relación con eso, recuerdo que cuando empezamos con los blogs en javaHispano, la comunidad de bloggers habíamos hablado de la importancia de poner nuestra foto en el blog, para que llegado un momento como éste nos pudieramos reconocer. Bueno, pues conmigo no hay excusa, sigo siendo el tío que veis a la izquierda, el matrimonio me ha sentado bien pero no hasta el punto de hacerme guapo (algún dia actualizaré la foto, lo sé). En el congreso pasado conocí a mucha gente y en este espero conocer a mucha más, así que si vas, no dudes en saludarme, estaré encantado de charlar un rato, y si se tercia de tomarnos unas cañas.

Y poco más hay que añadir, que ya estás tardando en rellenar el formulario de inscripción !!

» Leer más, comentarios, etc...

Null Pointer Exception

El II Congreso javaHispano ya esta aqui

Diciembre 9th, 2004 - [Enlace local]

Hace más de un año de este post y sin embargo la noticia es la misma, ya se ha abierto la inscripción para el II Congreso javaHispano que se celebrará los próximos días 15 y 16 de diciembre en la Universidad Rey Juan Carlos de Móstoles (Madrid).

En la página web del congreso podréis encontrar el formulario de inscripción y toda la información sobre el evento, incluido el programa del mismo. Un programa que destaca por su variedad, pero sobre todo por la calidad. Si el congreso del año pasado dejó el listón muy alto, este año la cosa se va a salir. Entre las novedades:

... y todo esto GRATIS !!!

En fin, que os espero haber convencido para asistir, pero si tenéis que convencer a vuestro jefe, aqui va una lista de motivos, aunque sin duda uno de los más importantes es reforzar esta pequeña Comunidad que ha crecido alrededor de javaHispano. Esta es una de las pocas ocasiones que tenemos para conocernos, saber quién hay detrás de ese nick que nos soluciona la vida todas las semanas en los foros, o quién es ese tío que hace unos manuales tan buenos, o quién hay detrás de ese blog que leo a diario, o quién ...

En relación con eso, recuerdo que cuando empezamos con los blogs en javaHispano, la comunidad de bloggers habíamos hablado de la importancia de poner nuestra foto en el blog, para que llegado un momento como éste nos pudieramos reconocer. Bueno, pues conmigo no hay excusa, sigo siendo el tío que veis a la izquierda, el matrimonio me ha sentado bien pero no hasta el punto de hacerme guapo (algún dia actualizaré la foto, lo sé). En el congreso pasado conocí a mucha gente y en este espero conocer a mucha más, así que si vas, no dudes en saludarme, estaré encantado de charlar un rato, y si se tercia de tomarnos unas cañas.

Y poco más hay que añadir, que ya estás tardando en rellenar el formulario de inscripción !!

» Leer más, comentarios, etc...

Y si hablamos de...

… de trabajar en javaHispano

Diciembre 3rd, 2004 - [Enlace local]

Abraham comentaba la decisión de la fundación Apache de contratar personal dedicado a la organización, y en sus comentarios relacionaba la situación de Apache con la de javaHispano, salvando las distancias. Hablada de lo mucho que exige una labor así­, de lo sacrificado que es, etc. y el usuario peyrona relacionaba esta situación con similares en USA.

No sé, como, por llamarlo de alguna forma responsable de esta cosa que llamamos javaHispano (en realidad una Asociación sin ánimo de lucro legalmente constituida) tengo que asumir muchos errores, como por ejemplo, no haber sabido transmitir lo que es javaHispano, la idea que tiene e ilusionar a más gente. Y también la de no haber podido llevar de la mano a personas que han intentado colaborar. O dedicarles más tiempo, o... . Un montón de cosas, mis disculpas.

En el pasado era mucho más sencillo. La gente me escribí­a, yo les contestaba, y despés de cuatro mails ya les habí­a convencido, al menos a los que tení­an ganas de que les convenciera. Creedme que soy más eficaz convenciendo a la gente que programando :-D. Pero esto ya no es así, yo no tengo tiempo para atender a mucha gente, quizás jH no es todo lo eficiente que deberí­a, quizás simplemente no interesa la idea y lo único que quieren los usuarios es una web de noticias. Quizás la gente ya no tiene paciencia. En javaHispano damos libertad a quién quiere trabajar, y si realmente quiere hacerlo y necesita ayuda, debe preguntar, porque se le responderá. Lo malo es que a veces quién entra se queda en un segundo plano, esperando que le den ordenes, o que se lo den todo hecho, y esto no funciona así­. Ya ha dicho Abraham que este es un trabajo duro, y tienes que tener el interés de hacerlo, por ti mismo, tengas las razones que tengas, no esperar que alguién tire de tí­ todo el tiempo, porque no va a ser así­. Porque yo no lo voy a hacer. Incluso yo, que he dedicado y dedico mi tiempo y mi dinero a javaHispano necesito algunos días que tiren de mí­, porque si no exploto. Y si te comprometes a algo, hacerlo, aunque tardes, aunque te retrases, pero cumple tu palabra.

Pero bueno, seamos más optimistas. ¿Es factible que javaHispano tenga personal ha sueldo?. Sinceramente, no lo creo. No porque no sea posible, pero eso supondrí­a el fin de la mal llamada comunidad (que hasta ahora se limita a exprimir a unos pocos, aunque estos sean voluntarios). Tengo la impresión de que el dí­a que jH pague a un par de personas para mantener las distintas actividades el resto dejarán de colaborar. Lamentable, pero es así. Quizás me equivoque, pero lo dudo. Veo más factible que yo cree una empresa y me dedique a explotar javaHispano ;-).

¿Así­ que cual es el futuro de javaHispano?. En mi opinón... que como no convezcamos a más gente de trabajar de forma desinteresada lo llevamos mal. Y no hablo simplemente de voluntarios que trabajen desde casa a deshoras. Realmente habría que implicar más a las empresas en las que trabajamos. Yo por ejemplo no puedo más que agradecer la compresión de NHT-Norwick por mi dedicación a javaHispano, así­ como la de otros compañeros, como lasterra y woviux. Y por supuesto también agradezco sus aportaciones económicas. Pero yo no pido que esas empresas nos den únicamente dinero (aunque lo aceptaremos, por supuesto), a mi me gustarí­a que estas empresas vieran lo necesario que es javaHispano y que permitan que sus empleados dedicaran un tiempo a javaHispano. No 2 horas todos los dí­as, por supuesto (aunque de nuevo no me quejaría), pero sí­ que aportasen documentación interna en un formato aceptable, o que pudieran preprarar charlas o talleres en distintas ciudades, o que ayudaran a mantener los distintos portales. Qué se yo!. Hay miles de formas, y al igual que pasa con los voluntarios, deberí­an ser las empresas las que tuvieran un mí­nimo de inicitiva, y no simplemente esperar que yo les pase un plan de acción completo. Entre otras cosas porque yo no las conozco por dentro para saber de que son capaces. Nosotros ponemos el campo de juego y los juguetes, que son más de los que pudieran parecer (ver el ejemplo del II. Congreso javaHispano y muchas otras cosas que no tenemos tiempo de realizar), pero no podemos tomar otro tipo de decisiones.

Así­ que... llegado a este punto voy a intentar que este post sirva de algo. ¿Qué puedes hacer tú por javaHispano?. Personalmente puedes colaborar con lo que buenamente puedas, y profesionalmente puedes intentar concienciar a tu empresa de que también aporte de alguna forma porque le sale rentable (y además se lo reconoceremos!). Si necesitas ayuda... ponte en contacto con alguién de javaHispano (mariscal, abraham, escoem, etc.), que intentaremos ayudarte a convencerlos, si es necesario presencialmente. Pero eso sí­, haz estas cosas con las ideas claras. Esto es algo voluntario, pero muy serio para mucha gente. javaHispano pone los medios para muchas cosas, lo que cada uno saque de él es cosa suya.

Mis disculpas por la chapa, que estoy seguro no tiene interés para la gran mayorí­a.

» Leer más, comentarios, etc...

Los programadores no nacen.

Diciembre 2nd, 2004 - [Enlace local]

Me parece muy acertado lo que se expresa acá, aunque levemente exagerado. Es lo que yo siempre pensé, hay gente que esta en esto porque mal que mal se gana bien, no demanda un gran esfuerzo físico y parece fácil de afuera. Pero a los que realmente esto nos apasiona, mas allá de la […]

» Leer más, comentarios, etc...

Información legal y técnica