29 junio 2006

Echo de menos programar mal

Últimamente ando un poco deprimido con esto de la programación. Llevo muchos años programando y mi forma de programar ha ido evolucionando mucho, se supone que para mejor.

Al principio hacía mi código rápido. Mis clases eran gigantes y muy poco reutilizables. Apenas usaba herencias, prácticamente nunca el polimorfismo y nunca había oido hablar de patrones de diseño. Mi objetivo era hacer el código rápido y que funcionara.

Luego aprendí a usar el polimorfismo, leí sobre patrones, las clases deben ser pequeñas, el código debe ser reutilizable, hay que comentar, etc, etc.

Ahora programa tratando de seguir todas estas cosas. Cualquier programa que hago se llena de clases separaditas, algunas de ellas siempre acabo reusándolas en otro sitio. Me llevo clases de estas a "librerías" que clases para usar en otrs proyectos. Mi código tira mucho de esas "librerías" que me he ido haciendo con el tiempo. Uso los patrones, el polimorfismo. Supuestamente, todo lo más mejor que soy capaz de hacerlo.

Sin embargo, hecho de menos los viejos tiempos. Antes programar era divertido. Ahora se convierte casi en una tortura. Cuando hago algo o modifico algo hecho, tengo que emepezar a revisar las clases de las librerías, soy incapaz de hacer algo una clase grande o un método largo, así que hago muchas clases y métodos. Cuando una cosa parece que puede ser reutilizable más adelante, la hago un poco mejor para llevármela a la librería, etc, etc.

Para un mismo programa, ahora hago muchísmimas menos líneas de código, pero echo bastate tiempo en pensarlas, rebuscar por la librerías, por las clases ya hechas, pasando de una interface a la clase que la implementa que simplemente acaba llamando a un método de otra clase que a su vez...

Echo de menos los tiempos en que programar era liarse a echar lineas de código sin más, aunque no fuera la forma más eficiente.

28 junio 2006

maven

En el trabajo ya he metido un par de proyectos con maven.

Con el tiempo hemos desarrollado varias librerías en java. Una de comunicaciones (sockets y rmi), otra con algoritmos matemáticos, otra con componentes de interface de usuario, para ventanitas con acceso a base de datos, etc, etc.

He creado proyectos maven para los fuentes de cada una de estas librerías. En un servidor he montado un repositorio de jar accesible para todo el mundo a través de ftp. Con maven, he compilado estas librerías y metido los jar en el respositorio común.

En dos proyectos que están ahora en marcha, los he modificado para que funcionen con maven. He puesto las dependencias correspondientes a log4j y demás librerías standard, además de las dependencias de nuestras librerías propias. Todo ha funcionado correctamente. Al compilar por primera vez estos proyectos con maven, se ha ido a internet y a mi repositorio de jars a buscar las librerías indicadas, se las ha descargado y todo bien.

Me quedan sin embargo dos pequeñas pegas que solucionaré jugando un poco.

Por un lado, si modifico un jar dentro del repositorio de jars, no sé si los proyectos que lo utilizan se enteran y se bajan la nueva versión (a la que no he numerado como nueva versión). Creo que poniendo lo que maven llama versión SNAPSHOT, sí lo haría. De todas formas, la primera prueba que he hecho con esto no me acaba de convencer.

Por otro lado, todo el tema de integración con los IDE. Maven tiene estos comandos

mvn idea:idea
mvn eclipse:eclipse

que generan los proyectos para Idea y para eclipse. Para el primero funciona todo perfecto. Sin embargo, para eclipse parace que el tema funciona peor. No me gusta cómo se monta el proyecto en eclipse, sobre todo si es un proyecto maven con subproyectos debajo.

Hay además un plugin de eclipse para poder utilizar maven desde el ide. Lo he instalado una vez y me ha ido bien, pero ya no puedo tocar en dependencias el proyecto como a mi me gustaría. Un compañero mio ha instalado el mismo plugin y no ha podido volver a abrir eclipse. Le da un error en el inicio, antes de abrir nada y de ahí no sale, ni desinstalando el plugin a mano (borrándolo del directorio plugins).

En fin, con eclipse parece que ese plugin no es buena cosa, aunque seguiré en ello.

14 junio 2006

Foro de Java y C++ de Chuidiang

Tengo el foro Foro de Java y C++ de Chuidiang abandonado.

En el trabajo, resulta que tenemos un corta fuegos que no permite acceso a través de un montón de puertos y además el proxy nos prohibe el acceso a determinadas páginas. ¡Sorpresa!. Desde este Lunes está prohibido el acceso al foro (supongo que la prohibición es a foroswebgratis).

En casa, por problemas técnicos que no vienen al caso, estoy sin internet.

Resultado: No puedo ni siquiera ver qué hay en mi propio foro y tampoco puedo actualizar mi página web.

Espero que los problemas técnicos caseros se resulevan pronto....

Problemas de refresco con internet explorer

Uno de los motivos de mi cabreo con css eran los problemas de refresco que se me plantean en mi página de apuntes de programación cuando se mira con internet explorer.

Si visualizamos la página y ponemos una ventana encima o jugamos con el scroll de una forma "brusca", desaparecen algunas letras o incluso se quedan a medio dibujar.

Jugando ayer, ya tengo una pista del problema. Las líneas que desaparecen es justo encima de los anuncios de google o del buscador de google. Parece entonces que hay algo en los javascript de google que no le gusta al internet explorer. Todavía no he conseguido arreglarlo, pero teniendo la pista ya parece más fácil o, al menos, "ñapeable".

Sin embargo es curioso porque sólo pasa en aquellas páginas que he "modernizado" hace poco con css, dándoles el aspecto de libreta con papel rayado. En las antiguas páginas no pasa. Habrá que seguir investigando un poco.

13 junio 2006

Cascading Style Sheets, Level 2

Dados mis problemas con css, buscando, encotré esto Cascading Style Sheets, Level 2 que supongo que es donde tenía que haber ido desde el principio. Tiene buena pinta salvo que está en un idioma extraño.

Curiosamente, es de la página que me aconsejaba JJR en un comentario de un post anterior.

12 junio 2006

Free Java Books

Aunque estén en perfecto inglés, en Free Java Books hay un montón de libros gratis para bajarse sobre java. Están incluidos los de "thinking in java" y "thinking in patterns whith java".

10 junio 2006

Más css

Bueno, acabo de conseguir que se peguen los dos div. El truco es este:

<div>cosas<div>
<div>mas cosas<div>

Si lo hacemos así, sí salen pegados, pero si se nos ocurre hacer esto

<div>cosas</div>
<div><p>mas cosas</p></div>

entonces se separan. Si en vez de <p> es un <h1;> también se separan.

Aparentemente p o h1 tienen un márgen. El div se queda pegadito a la etiqueta p o h1, pero el margen de esa etiqueta cae fuera del div y es lo que hace que se separe del div anterior.

Los contenidos de cada "fila" de pixels serían esto...

div
margen superior de p o h1
otro div y contenido de p o h1
...


Bueno, creo que voy entendiendo cómo va el asunto. A ver si encuentro algún tutorial en castellano que explique cómo son las cosas (la filosofía de css) en vez de limitarse a poner etiquetas explicadas una detrás de otra.

css, internet explorer y firefox una mierda

Bueno, estoy un poco cabreado, así que ahí voy a soltarlo todo.

No tengo ni idea de css, estoy empezando, pero desde luego lo que veo no me gusta nada.

En primer lugar, internet explorer y firefox no se comportan igual ante el mismo código, cada uno hace lo que le da la gana (se supone que firefox hace lo correcto), pero de todas formas hay que andar peleándose para ver si sale igual, o al menos decente, en ambos exploradores y andar "ñapeando" para que así sea.

Luego, con firefox veo cosas que no me cuadran. Intento conseguir que dos div salgan pegados. No hay manera. En algunas de mis páginas sí salen pegados, en otras no y aparentenmente hay lo mismo (ambas incluyen el mismo fichero css y los div están colocados exactamente igual). Seguro que la diferencia es algo que hay dentro del div, pero no logro acertar con qué es. Sin embargo, en el que no lo cosigo, si al div de abajo le pongo un borde solid de 1px entonces misteriosamente se mueve y se pega. Si le pongo 0px vuelve a salir separado. ¿Será que el borde por defecto es de varios pixels? ¿Y si no quiero borde en absoluto? ¿Por qué en otras páginas me sale bien sin necesidad de poner el borde?.

La última mierda: Mi página inicial, por ejemplo, sale bien en internet explorer y firefox, pero me da problemas de refresco en internet explorer. Si se abre una ventana encima y se cierra o se juega con el scroll, desaparecen letras o quedan incluso a medio pintar.

No dudo que con esfuerzo y aprendiendo trucos se puede conseguir que salga bien en todos lados pero ... ¿qué interés tiene para mí echar horas y horas en eso para resolver problemas de los navegadores?.

Voy a seguir un poco más, pero al final creo que pasaré de css y seguiré haciendo mis páginas cutre-simples html y ya. Al final, para poner tutoriales no necesito grandes presentaciones.

05 junio 2006

PMD y eclipse

PMD es un programa para revisar métricas de nuestro código. Puedes bajártelo como aplicación independiente en http://pmd.sourceforge.net/ y tiene plugings para un montón de IDEs, incluido Maven.

Me bajé la versión 3.1.5 y la instalé con eclipse 3.1.2, pero todo son problemas. Según le das la primera vez para que analize las métricas va bien y saca más métricas no adecuadas de las que me gustaría.

Sin embargo, según voy trabajando y le doy a que repase las métricas, incluso de un sólo fichero, se me queda colgado, tarda un montón y me deja el eclipse más pallá que pacá.

Al final, voy a desinstalar el plugin este y probaré con maven a ver qué tal va...

03 junio 2006

Guestbook

Cuando cogí el dominio y después de jugar un poco con las herramientas que me daban, instale un libro de visitasGuestbook, el Viper GuestBook.

Aunque la última versión parece que viene protegida para que no se pueda meter basura alegremente (mensajes de esos que sólo tienen links) y que suelen meter "robots", yo tengo anterior que no tiene esa protección.

De momento lo he solucionado añadiendo un nuevo campo en el que pido una suma y restrinjo las posibles entradas del campo sólo al resultado correcto de esa suma. Aunque es un poco chapuza, de momento parece que funciona y no tengo más problemas.

Tendré que escribir a los de hostito a ver si piensan actualizarlo, o bien descargarme la versión más moderna e instalármela yo por mi cuenta.

Más sobre apache y php

Como últimamente ando metiendo algo de php y jugando con css para mi página web, me he decido a instalar también en casa apache y php. De esta forma podré ver el resultado de mis páginas antes de subirlas al servidor.

Me bajé la última de Apache (2.2.2) y la de PHP (5.1.4) y me puse a ello. Igual que en el trabajo, tuve el problema de "cannot load php5apache2.dll into server". Como en el trabajo, después de un día de pelearme con ello, conseguí arreglarlo reemplazando la librería php5apache2.dll por otra, voy a ello directamente al grano.... ¡No funciona!. En casa esa solución no me vale.

Vuelta a indagar por internet y al final seguí un sabio consejo que encontré por ahí. Instalar versiones más antiguas. Instalé dos versiones que tenía en el ordenador de otra vez que intenté todo esto: apache 2.0.53 y php 5.0.3. Funcionó todo perfecto y a la primera.

A veces no es bueno irse rápidamente a la última versión de algo.

01 junio 2006

Javolution

Un compañero de trabajo ha encontrado esto Javolution. Una especie de añadido a java con clases muy rápidas para tiempo real.

Bueno, es otra cosa más que hay que probar un día de estos.

elmundo.es - Lo que Google sabe de mí

Un compañero de trabajo me ha mandado esta noticia elmundo.es - Lo que Google sabe de mí.

Realmente da qué pensar.

php5 y apache2 en windows

Después de la gracia de tener que reinstalar windows, me decidí a volver a poner apache/php/mysql en windows. Ya puestos, me bajé las últimas versiones de todo.

Al instalar apache 2.2 con php 5.1.4 he tenido un problema: no había forma de que funcionara. Por más que revisé que todo estaba correcto, al arrancar el servidor apache siempre obtenía el error

Cannot load c:/php/php5apache2.dll into server

Buscando por internet, al final encontré que es un pequeño problema de compatibilidad entre apache 2.2 y php 5.1.4. Hay versiones de apache ya compiladas que no pueden cargar este modulo. Encontré esa información aquí http://www.webestilo.com/foros/mensaje.phtml?foro=3&msg=43520&pag=

La solución que propnen ahí es bajarse una nueva php5apache2.dll de aquí http://www.apachelounge.com/download/ y reemplazarla por la original.

Lo he probado y efectivamente funciona.

Bueno, ahora me queda la parte de mysql ...