Transición librerias de tratamiento xml de PHP4 a PHP5 (domxml,dom)

Logo PHPPues menos mal que Alexandre Alapetite me echó una mano con su script para realizar la transición del domxml de php4 al dom de php5 porque sino todavía estaría preguntándome porque narices mi php no encontraba la función dom_open_mem().

El caso es que el proyecto en el estoy enfrascado hace uso de la librería de funciones dom xml de php4 pero en mi entorno de desarrollo local trabajo con php5, seguro que esto os pasa a muchos de vosotros, y como tantas otras veces en php5 han reescrito las funciones de tratamiento de xml, así que lo que en php4 era domxml en php5 es dom a secas y todas sus funciones diferentes.

Pero como decía menos mal que siempre hay buena gente dispuesta a ayudar, en este caso Alexandre con su librería para realizar la transición de php4 a php5 nos ha salvado de una buena. Thanks :-) .

Para utilizar este script simplemente nos lo descargamos y insertamos en nuestro fichero la cabecera:
[php]
if (version_compare(PHP_VERSION,'5','>='))
require_once('../domxml-php4-to-php5.php');
[/php]
Con lo que si nuestra versión php es 5 o superior el script de Alexandre entrará a en acción y todo solucionado.

Leave a comment

Remember the milk & Nuevo Gmail & Firefox = La combinación perfecta

En uno de mis primeros posts en este blog Rememberthemilk – Gestor de tareas online contaba mi experiencia con algunos gestores de tareas y especialmente con el último, remember the milk. En este post no voy a mostrar nuevos gestores de tareas, simplemente porque remember the milk me dá casi todas las funcionalidades que necesito y por eso lo sigo utilizando.

En aquel viejo post comentaba algunas opciones que echaba en falta, personalizar niveles de prioridad y agrupar tareas, hace unos meses que ya contamos con estas dos posibilidades, Fantastico!.
Gmail & RTM
Pero para mejorar todavía mas la cosa han desarrollado un nuevo servicio, un plugin para firefox, Remember The Milk for Gmail, con el que integramos remember the milk con el nuevo gmail, con esta extensión podremos:

  • Administrar tus tareas.
  • Conectar tareas con tus mails.
  • Conectar tareas con los eventos de google calendar.
  • Conectar tareas con tus contactos.

Siguiendo este enlace encontramos toda la información disponible de este plugin, además tienen un vídeo demostración donde explican claramente todo lo que podemos hacer.



Gracias a la instalación y posterior prueba de este plugin he probado también el nuevo gmail (pues solo funciona con esta nueva versión), solo disponible en inglés (así que ya estáis cambiando vuestro idioma gmail :-) ). Esta nueva versión trae consigo bastantes cambios en la interfaz, una nueva y mejorada gestión de contactos, carga los mails mucho más rápido, la posibilidad de crear eventos google calendar asociados a un mail, invitación a eventos para otros contactos cuando le enviamos un mail, diferentes colorines para cada etiqueta, integración con Picasa para mostrar por ejemplo las imagenes de los contactos, y seguro que algunas otras mejoras que todavía no he descubierto.

Leave a comment

Codificación de caracteres en Eclipse

Para todos los que alguna vez “casi” nos hemos vuelto locos con la codificación de caracteres en eclipse (especialmente duro cuando compartes trabajo entre equipos linux-windows), dejo este enlace al blog de Rubensa donde explica claramente como cambiarla y las diferencias entre eclipse 2.1 y 3.2.1.

Leave a comment

Modelado de BD en ubuntu

DbDesignerDe toda la documentación que podemos generar durante el desarrollo de un proyecto de gestión, uno de los documentos que mas me ayuda son los diagramas entidad-relación. Gracias a ellos puedo observar de un golpe de vista todo el modelo de datos con el que trabajo y con ello gran parte del modelo de negocio a tratar.

De siempre hemos tenido programas para generar estos diagramas, Oracle Designer, IBM Rational Rose, ERwin, Microsoft Visio, DataArquitect, y seguro que muchos otros que no conozco. Pero no fué hasta la aparición de DbDesigner cuando tuvimos un programa de este tipo para mysql, liberado bajo GPL y disponible también para escritorios linux.

Hace ya unos años que mysql se hizo con fabforce, empresa que desarrolló DbDesigner, gracias a esta compra tenemos productos como Mysql Administrator, Mysql Query Browser o Mysql Migration Toolkit, pero nos faltaba la continuación de DbDesigner que parecía haber quedado estancada. En Diciembre 2007 por fín mysql liberó MySQL Workbench 5.0.11 (beta) el sucesor de nuestro querido DbDesigner, no sin llevarnos una buena sorpresa, solo se ha liberado para windows, todas las demás plataformas deberán esperar un poco, no deja de ser curioso viniendo de mysql, en fin…

Todo este rollo viene al caso porque la semana pasada he comenzado a hacerme con un nuevo proyecto dentro de mi nuevo trabajo, y claro, como suele ser habitual no tenemos ni rastro de documentación. Por lo que me decidido a comenzar documentando la BD que se utiliza y así poder entender algo de lo que se cuece ahí. Y ya que como os contaba todavía no tenemos Mysql Workbench para nuestros linux, he vuelto a instalar en mi portatil-ubuntu la última versión de DbDesigner, os cuento como lo hice:

Antes de nada necesitaremos tener instalado el paquete xkeyboard-config, si todavía no lo tenemos en ubuntu nos bastará con un simple apt-get install xkeyboard-config.

DbDesigner esta desarrollado en kylix por lo que debemos bajarnos sus librerias si es que no las tenemos instaladas ya. Para ello visitamos http://kylixlibs.sourceforge.net/down.html y nos las bajamos en el formato que mas nos convenga, yo me las bajé en .deb y las instalé con un simple dpkg -i libreria.deb por cada una, en total son estos 5 paquetes:

kylixlibs3-borqt_3.0-1_i386.deb

kylixlibs3-runtime_3.0-1_i386.deb

kylixlibs3-borstlcrtl_3.0-1_i386.deb

kylixlibs3-unwind_3.0-1_i386.deb

kylixlibs3-qt_3.0-1_i386.deb

Por lo general se instalarán en el directorio /usr/lib/kylix3 y es posible que debamos crear 2 enlaces simbolicos para que DbDesigner sepa donde encontrarlas.

[code]
ln -s /usr/lib/kylix3/libborqt-6.9.0-qt2.3.so /usr/lib/kylix3/libborqt-6.9-qt2.3.so
[/code]
Posiblemente necesitemos crear también un enlace a /usr/lib/:

[code]
ln -s /usr/lib/kylix3/libborqt-6.9.0-qt2.3.so /usr/lib/libborqt-6.9-qt2.3.so
[/code]

para que este último enlace tenga efecto editamos el fichero /etc/ld.so.conf o /etc/ld.conf y si no está añadimos la linea /usr/lib, guardamos y ejecutamos el comando ldconfig para actualizar los links de nuestro directorio /usr/lib.
Ahora ya solo nos queda descargarnos el DbDesigner y ejecutarlo.

1 Comment

Publicado el primer borrador de Html 5, ¿y luego que?

Hace unos días se presentaba el primer borrador de Html 5 y son muchos los que todavía se hacen preguntas de tipo: “¿pero eso de html no estaba ya anticuado?”, “¿volveremos a la maquetación con tablas?”, “¿volveremos a los documentos sin una estructura xml definida?”, “¿diremos adiós a la web semántica?”, “y los estándares y la accesibilidad, ¿al carajo?”, pues no exactamente, en cierta medida todo sigue quedando en nuestras manos. Tener una nueva versión de Html 5 no significa volver a las tablas como posiblemente muchos de vosotros esté pensando, es mas, tenemos nuevos elementos que también debiéramos utilizar a la hora de crear un nuevo documento, elementos como section, article, aside, header, footer, nav, dialog, etc. La forma de trabajar seguirá siendo la misma que la actual: estructura de documento xml, a ser posible, y css para dar forma y estilo. Eso si, aunque recomendable, no estaremos obligados a seguir la estructura xml de un documento xhtml y es aquí donde está la diferencia, rompemos la tendencia que había marcado el w3c hace unos años donde parecía que cualquier documento no xml no sería renderizado por los navegadores en el futuro. En este documento podéis encontrar las diferencias entre html4 y html5.

HTML5 está siendo desarrollado por WHATWG (comunidad abierta fundada por Mozilla, Opera y Apple) a los que parece que la complejidad del próximo xhtml2 del w3c no les convencía.

Aprovechando este post permitirme un par de reflexiones personales. Estaremos todos de acuerdo de que en la web los desarrolladores tenemos varios problemas a los que parece que hasta el momento nadie ha encontrado solución.

Para los desarrolladores de aplicaciones web tenemos una plataforma que llevamos años utilizando con un propósito para el cual no fué diseñada, html;xhtml han sido y son lenguajes de etiquetas para estructurar y publicar documentos. Donde están los layouts, árboles, pestañas, las barras de progreso, los menús, una comunicación mas dinámica y usable entre cliente y servidor, etc etc etc, que necesitan los desarrolladores de aplicaciones?.

Y por otro lado, y este lo añadimos al problema anterior que intentamos solucionar cada día con grandes dosis de imaginación (véase ajax, gwt, jsf, flex, java web start), tenemos el gran problema de los estándares. Señores navegadores, ¿hasta cuando creen que el gran negocio de la web podrá continuar desperdiciando tiempos de desarrollo debido a la mala implementación de los estándares en sus maravillosas aplicaciones?. Me respondo a mi mismo, yo creo que mucho mucho tiempo porque las ventajas y oportunidades que aporta la web son muy elevadas. Como elemento de comunicación no tiene precio, es un medio único, con unos costes únicos. Como plataforma de distribución de aplicaciones el ahorro de costes es tan superior a los problemas que causa, que continuaremos remendando hasta que aparezca una tecnología estándar que solucione nuestros problemas. Mientras seguiremos con nuestros hacks remendones:
[html]





[/html]
Para ir terminando, que ya me estoy enrollando demasiado, tengo que mencionar la lentitud en las tomas de decisiones del w3c y derivados, y su aportación final a la comunidad. Hace 3 días apareció el primer borrador de html5, si, pero, ¿cuando creen que realmente se convertirá en un estándar que utilicemos la mayoría?, ¿cuando aparecerá la versión final de esta propuesta?, ¿cuando lo implementarán correctamente los navegadores?, ¿y cuando la mayoría de los usuarios emplearán dichos navegadores?, ¿y cuando la mayoría de los desarrolladores comenzaremos a aprovechar este lenguaje?, pues con toda seguridad dentro de muchos muchos años. Y mientras, otros, por su cuenta, siguen buscando soluciones a muchos de estos problemas, con mucha mas agilidad, pero basándose en las posibilidades actuales que nos permite la web.

Amigos, la web necesita del trabajo de varios equipos, pero son los equipos de los estándares y desarrollo de agentes de usuario los que deben tirar del carro. El equipo de los desarrolladores web estará al completo y dispuesto a cumplir estándares cuando esto no les suponga un coste tan elevado como el actual, y cuando les aporte un beneficio que no sea simplemente “cumplir los estándares”, un beneficio económico y tecnológico real. Mientras esto no ocurra solo aquellos que creemos en los ideales continuaremos intentando cumplir estándares por una futura web mejor, ¿mejor o ideal?.

Bibliografía y algunos enlaces interesantes:

http://www.w3.org/TR/2008/WD-html5-diff-20080122/#new-elements

http://www.w3.org/TR/2008/WD-html5-20080122/#relationship

http://www.w3.org/html/wg/html5/#html-vs

http://www.w3.org/TR/xhtml2/

http://dig.csail.mit.edu/breadcrumbs/node/166

http://www.digital-web.com/articles/html5_xhtml2_and_the_future_of_the_web/

http://www.whatwg.org/

Leave a comment

Volviendo a la vida!!

Eso es lo que estaré haciendo a estas horas (20:30) mientras salgo de mi último examen de este semestre en la UOC, el de estadística!!. Mientras escribo esto (habreis imaginado que he dejado programada la publicación de este post) sigo apurando las ultimas horas de estudio. La verdad es que no lo llevo demasiado bien, pero en este momento el único deseo es terminar con este agobio cuanto antes y volver a la vivir, volver a quedar después de trabajar, a dormir y salir los fines de semana, a jugar a la wii, a montar en bici, en fin, a tener un poco de vida social y tiempo de ocio.

La noche de mañana se avecina divertida. A la finalización de los exámenes se suma una entrañable cena de amiguetes/compañeros de trabajo, y después un poco de fiestuki para liberar tensión, que después de 3 semanitas de encierro ya va haciendo falta.

Las últimas han sido 3 semanas muy intensas, ahora comprenderéis la nula actividad en este espacio durante este tiempo, pero sobre todo han sido 3 semanas de cambios, trabajo incluido. Y es que después de ya casi 5 años de trabajo en interacción el cuerpo me pedía un cambio, nuevas y renovadas ilusiones, entablar nuevas relaciones de trabajo, nuevos proyectos, nuevos hábitos, nuevo negocio, etc etc. En esta nueva etapa teletrabajaré desde casa, como los funcionarios modernos ;-) , en la soledad, aunque con buenos compañeros online con los que poder charlar e intercambiar opiniones en todo momento. Es una nueva experiencia que como todas tendrá sus cosas buenas y menos buenas(no quiero decir malas), espero que sean las primeras las que triunfen aunque a priori he de reconocer que acojona un poco.

De la etapa interacción hago un balance general muy positivo, me llevo muy buenos recuerdos, una enorme experiencia en todos los sentidos, no solo en el puramente técnico. Por lo tanto solo puedo mostrar mi agradecimiento a toda la gente con la que he trabajado, que ha sido muchísima, y que me ha dado la oportunidad de aprender tanto. Les deseo lo mejor a partir de ya.

1 Comment

Porque el tamaño en web si que importa

Y porque un desarrollador web profesional también debe conocer los pequeños detalles, perdón, los grandes detalles olvidados. Porque a un desarrollador web profesional debemos pedirle mucho mas que reproducir fielmente un diseño photoshop, debemos pedirle conocer y cumplir con esos detalles que el resto de los mortales no ve, que están detrás, en el lado oscuro, pero que existen.

Por eso hoy quiero hablar de un tema al que mucha gente no le da la mas mínima importancia, las unidades de medida de los elementos xhtml.

Cuando en nuestras css establecemos el tamaño de los diferentes elementos, desde margins paddings widths hasta el font-size de las fuentes, podemos hacerlo en varias unidades diferentes:

En unidades relativas:

  • em: Aunque originalmente la unidad ‘em’ era equivalente a la altura de la letra M mayúscula, actualmente hace referencia simplemente al tamaño de la fuente instalada.
  • ex: Altura de la letra x minúscula de la fuente utilizada.
  • px: Esta unidad es relativa a la resolución de pantalla de nuestro dispositivo.

O en unidades absolutas:

  • in: inches — 1 inch es igual a 2.54 centimetros.
  • cm: centimetros.
  • mm: milimetros.
  • pt: points — los puntos usados por CSS 2.1 son iguales a 1/72nd por cada inch.
  • pc: picas — 1 pica es igual a 12 points.

De todas las unidades anteriores siempre se recomienda utilizar unidades relativas en lugar de absolutas, a no ser que estemos diseñando un documento muy específico del que sepamos a seguro en que tipo de dispositivo se va a visualizar. De las unidades relativas se recomienda utilizar em, puesto que como vemos en la siguiente imagen la unidad px es dependiente de la resolución de pantalla, mientras que en em las distancias son proporcionales a los tamaños de fuente, por lo que si aumentamos el tamaño de la fuente se aumentan todas las distancias proporcionalmente. Así en la imagen vemos que 1px cubre 16 puntos en un documento impreso a láser de alta resolución, mientras que el mismo 1px solo cubre 1 punto en un monitor de baja resolución.

Ejemplo utilización unidad de medida pixel(px)

Tampoco me quiero olvidar de los porcentajes (%), siempre relativos al tamaño de pantalla o al elemento padre. Así pues podríamos tener un tamaño de fuente en nuestro documento de 1.1em (declarada en la clase body por ejemplo), y en todos sus elementos hijos ser un 10% mas pequeña por lo tanto declarada con un tamaño del 90% respecto al 1.1em de la clase padre.

Ya para finalizar os dejo 3 enlaces referencia que he utilizado para documentarme sobre este tema.

Referencia: http://www.w3.org/TR/CSS21/syndata.html#percentage-units

Tabla de equivalencias entre puntos, pixels, ems y portentajes http://www.reeddesign.co.uk/test/points-pixels.html.

Sintesis de buenas prácticas en el maquetado web http://www.w3.org/WAI/GL/css2em.htm.

Espero tener algo mas de tiempo para seguir posteando sobre estándares y accesibilidad web donde todavía tenemos mucho de que hablar.

Un saludo y solo si fuisteis buenos que os traigan muchos regalos.

Leave a comment

Instancia de clases, llamadas a funciones y variables dinámicas en PHP

A falta de punteros, en php también podemos hacer referencia a funciones, variables, métodos, objectos, de forma dinámica. Aquí dejo estos links a php.net en los que se documentan la perfección las funciones que lo permiten:

Funciones variables – http://es.php.net/manual/es/functions.variable-functions.php

Variables variables – http://es.php.net/manual/es/language.variables.variable.php

Utilizando la funcion call_user_func – http://es.php.net/manual/es/function.call-user-func.php

Enviando un número de parámetros no conocido call_user_func_array – http://es.php.net/manual/es/function.call-user-func-array.php

Y como puntilla comentar la posibilidad de crear funciones en tiempo de ejecución con create_function – http://es.php.net/manual/es/function.create-function.php

1 Comment

Ireport en netbeans 6

IreportFantástica noticia la que nos llega desde la comunidad “jasper”, se han lanzado al desarrollo de un nuevo ireport para plataforma NetBeans 6. Por el momento ya nos podemos descargar el plugin en beta preview, aunque en su web comentan que liberarán la versión final en FEBRERO 2008, a la vuelta de la esquina. Yo mientras voy a echarle un ojo a sus videos y capturas de pantalla.

Leave a comment

Aplicación Java swing a pantalla completa (fullscreen)

Existen por lo menos dos métodos para poder abrir una aplicación swing a fullscreen.

La que mas me gusta, simplemente creamos un componente que herede de un JWindow, por ejemplo, y le asignamos las dimensiones de nuestra pantalla, esto funciona siempre:
[java]
public class pruebaFullScreen extends JWindow

public pruebaFullScreen()
{
this.setSize(Toolkit.getDefaultToolkit().getScreenSize());
this.setVisible(true);
this.setBackground(Color.YELLOW);
this.toFront();
this.setAlwaysOnTop(true);
}
[/java]

Y la otra la explica a la perfección Antonio Calero en javahispano http://www.javahispano.org/contenidos/es/aplicaciones_a_pantalla_completa:

[java]
// Primero obtenemos una referencia al entorno gráfico de ventanas
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
// Obtenemos una referencia al dispositivo gráfico primario
gd = ge.getDefaultScreenDevice();

// Si no hay soporte adecuado lo mostramos por pantalla
if(!gd.isFullScreenSupported()) System.out.println(“WARNING: No hay soporte.\n”);
else System.out.println(“INFO: Detectado soporte\n”);
try
{
// Activamos el modo a pantalla completa
gd.setFullScreenWindow(this);
}
catch(Throwable e)
{
e.printStackTrace();
}
[/java]

Comentar que utilizando esta opción y dependiendo del S.O. que utilicemos pueden haber elementos del sistema que se sigan situando por encima de nuestra aplicación swing como por ejemplo el menú de xfce.

1 Comment