OpenSource ¿Cosa solo de marcianos y hackers?
OpenSource ¿Cosa solo de marcianos y hackers?
Programando un Servlet para crear código HTML, use String, StringBuilder, etc., para crear el contenido de mi pagina, no quede muy satisfecho con los resultado, después de cierto tiempo perdí el control de mi código. Busque un API libre y fácil de usar para salvarme la cordura, me encontré con Java HTML Generator v0.9: , vi los ejemplos, lo use y me gusto mucho, luego revise el código a detalle y me sorprendí de lo ingenioso del código y recordé que muchos de nosotros en la comunidad nos preguntamos por un proyecto al cual contribuir, aprender, ver crecer, en fin, ser parte del proyecto mismo.
Tengo la sensación de que cuando se habla de proyectos de código abierto se mencionan proyectos enormes, que requieren un conocimiento extenso en el lenguaje en el que se programo, tiempo, tiempo, y más tiempo libre para estudiar el código, ya que como yo y mucho otros, no nos pagan para contribuir al OpenSource.
Pero creo que con proyectos como este, que si bien son pequeños, ¡son proyectos! y son libres. Solo usándolos y viendo que si me gusta, que no, que le falta, que le sobra (¿?), se puede contribuir de más formas que solo usando los, si bien eso ya es una gran apoyo a la comunidad, contribuyendo al código es un aporte aun mejor para mí.
Estoy trabajando en un par de contribuciones, solo quería expresar y compartir mi entusiasmo con ustedes.
Les dejo un ejemplo de cómo usar ‘Java HTML Generator’ en la versión v0.9.
- rodrigo salado anaya's blog
- Inicie sesión o regístrese para enviar comentarios
Muy bien
Buen aporte. Y es muy cierto lo que dices, hay infinidad de proyectos pequeños, bibliotecas sencillas de software libre que atacan un problema y lo resuelven de la mejor manera posible (o al menos eso intentan). La mayoría de esos proyectos son creados, desarrollados, mantenidos y administrados por una sola persona. En esos proyectos puede ser más fácil participar que en los megaproyectos tipo Spring, JBoss, el kernel de Linux, Grails, etc; si ves algo que se puede mejorar, puedes contactar al autor y mandarle tu sugerencia, de preferencia con el código; seguramente obtendrás una respuesta y si tu parche es aceptado pues ya te darán crédito (asegúrate que así sea, porque finalmente si es algo significativo, puedes ponerlo en tu CV).
Si claro, puedes entrarle
Si claro, puedes entrarle tambie al HackerGarten donde encuentras personas muy involucradas en las aporaciones a proyectos open source y como dicen, no importa que no sepas mucho, cualquier aporte por muy minimo que sea puede ayudar a mejorar basante e incluso dar pie a otras mejoras adicionales. Mi ecperiencia, no sabia ni que era eso y tuve la suerte de participar con @ecamacho en un poryecto (jAlarms de @ezamudio) y sucedio lo que dices. Cuando vi como estaba estructurado dije "AAAY WEY!" y pues resulto muy sencillo aportar con un canal para enviar alarmas via XMPP... claro que resulto facil orqueya Erick sabia lo qe hacia y el fue quien llevo la batuta del aporte... A que voy con esto? que puedes "como bien dces" aportar con proyectos pequeños que te enseñen como se hace un API, como se moldean las extensiones... esas cosas que hacen a los proyectos enormes
Muy recomendable HackerGarten...
Libreria
En eso tienes razón.
Yo hace tiempo que hize una libreria en swing para mejorar la forma en que se maneja la información de un jtable, un poco mas simple que el default de swing (no he checado si alguien mas haya hecho algo), todo lo maneja con listas de pojos, un pojo representa una fila y cada propiedad una columna (aunque como no todas las propiedades de un pojo serán columnas, estas hay que especificarlas), tiene la faclidad de poder mostrar u ocultar columnas, así como agregar cadenas de información custom al table-header como el total de filas contra las seleccionadas, etc. Tiene la ventaja de que utiliza un data source para llenarse y este mismo maneja ordenacion de las columnas tanto interna como externa. Tiene la capacidad de manejar un paginador. Ademas de que tiene la posibilidad de agregar colores customs a cada fila y a cada celda dependiendo de varios criterios.
Desde hace tiempo que me gustaria ponerlo como proyecto opensourcepara ver si alguien mas me ayuda a mejorarlo o a decirme que el modelo que hize esta mal y hay que hacerlo de nuevo jeje, aunque la funcionalidad se quede, o a agregarle nuevas funciones o mejorar las que estan.
En fin a ver si un dia de estos hago el tiempo necesario para colocarlo por ahi.
Aqui un ejemplo de como crear una tabla y como manipular la informacion:
sobres
abreviación
Si el método
devuelve el objeto recién agregado, entonces se puede abreviar a
. Te ahorras la fabulosa cantidad de 4 líneas de código...
bueno y si el addAttribute devuelve
, entonces podrías hacer
. En fin, lo veo muy verborreico, pero tal vez para páginas más complejas (y que quieras modificar al vuelo o algo así) pueda servir.
Esta biblioteca, puede hacer alguna otra cosa con la estructura del documento, aparte de generar el texto HTML?
Totalmente de acuerdo con
Totalmente de acuerdo con Enrique, si se usara Chaining methods se reduciría un poco la cantidad de código
Hasta lo pueden usar para
Hasta lo pueden usar para generar sus XML (bueno, XHTML es un XML) pero pues para que no se espanten con los Element, Document, Attribute... etc
ah pus tambien te pudiste generar el Html con un parser de XML
@java.daba.doo HackerGarten
HackerGarten Orale java.daba.doo le voy a echar un ojo, y que padre que le metes al OpenSource en este caso jAlarms de @ezamudio que es un pryecton :).
@Nopalin
Orale se ve muy interesante, ojala y tengas tiempo para compartirnos tu creación, unos pantallazos estaría super :)
@ezamudio y @domix
Si tiene mucha razón, es mucho código para tan poco HTML jejeje se ve luego luego el cayo que se cargan, gracias por la observación.
Domingo jejeje a por eso el Twitt de "mucho java para tan poco HTML" jejeje :P, procurare mejorar el código de ejemplos.
Gracias a todos, bye.
@ezamudio
Esta biblioteca, puede hacer alguna otra cosa con la estructura del documento, aparte de generar el texto HTML?
Nop solo genera el texto del HTML. Es muy humilde la biblioteca.
Mi propuesta
Y eso da como salida esto:
Hay mas casos a considerar, pero es un ejemplo de Chainning Methods.
Saludos
El punto es comenzar a
El punto es comenzar a participar en algún proyecto open source. La dificultad de entrarle a un proyecto grande está para empezar en lograr compilar el proyecto ( buen ejemplo, el kernel de linux como bien lista Enrique )
Entonces proyecto sencillititos como este son un buen inicio para por ejemplo, utilizar un controlador de versiones diferente, bajar el código, correr pruebas o simple y sencillamente ver como está estructurado el código de otra persona.
Considera un builder cuando tienes varios constructores
Aprovecho este hilo para usarlo como ejemplo del principio (item2) de Joshua Blosh en Effective Java, que a la letra dice "Consider a Builder when faced with many constructor parameters".
Usaré parte de lo que aquí se quiere hacer, pero solamente para no complicar el código, el ejemplo que viene más adelante solamente se refiere a la construcción de un tag de html, que puede tener atributos, contenido y otras cosas.
¿De que se trata?
Este principio de diseño trata de evitar usar el estilo de constructores telescopios que muchas veces usamos o el estilo de métodos de fábrica telescopios que también usamos.
Ese telescopio lo tenemos en el ejemplo que aquí se discute: Construimos una clase Tag para representar una etiqueta de html y se nos puede ocurrir escribir los constructores siguientes, donde el primer argumento es obligado y los restantes son opcionales:
El patrón telescopio funciona pero a veces nos molesta. Si el lenguaje no soporta parámetros opcionales ni parámetros nombrados, y queremos usar un constructor de 5 argumentos, con el primer argumento obligatorio y el quinto argumento necesario para el caso particular, estamos obligados a pasar 3 valores de default en los argumentos restantes.
Una solución al problema es acompañar a la clase con otra clase que se encargue de construir al objeto. La solución es similar a la del patrón de diseño Builder descrito en GOF.
El cliente ahora, en lugar de crear el objeto directamente, crea un builder al que se le puede pedir la creación del objeto con los parámetros requeridos. Con métodos setter se especifican las propiedades opcionales, con una sintaxis similar al modelo de JavaBeans. El patrón usa de manera efectiva el encadenamiento de métodos
La solución tiene ventajas y desventajas. No hablo de ellas aquí para fomentar la discusión.
El código que aparece a continuación ilustra este principio de diseño para crear etiquetas de HTML.
Un pequeño ejemplo que hace uso de lo anterior:
Al ejecutarlo obtenemos:
Si, al parecer
Es cosa de hackers y nerds/geeks ?:{
Yo odio los servlets. Sin embargo, esta solución me parece buena. No sabía que existia Java HTML Generator
Creo que valela pena
Creo que valela pena mencionar que El HackerGarten 3 será el proximo 21 de Mayo de 2011... aqui esa la liga del evento