<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-7066997711286640384</id><updated>2008-07-18T00:46:47.837+02:00</updated><title type="text">el holgazán</title><link rel="alternate" type="text/html" href="http://www.elholgazan.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.elholgazan.com/feeds/posts/default" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>210</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-nd/2.5/" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><link rel="self" href="http://feeds.feedburner.com/elholgazan" type="application/atom+xml" /><feedburner:emailServiceId>1099755</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-8906037607287995100</id><published>2008-07-04T18:20:00.008+02:00</published><updated>2008-07-04T19:35:31.267+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title type="text">Generación de interfaz de usuario con Metawidget</title><content type="html">&lt;a href="http://metawidget.sourceforge.net/index.html"&gt;Metawidget&lt;/a&gt; permite generar, en tiempo de ejecución, interfaces de usuario en diferentes tecnologías a partir de una clase Java, un fichero XML, anotaciones o ficheros de configuración.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://bp2.blogger.com/_j7c0Q8AS2HM/SG5U8LAuvtI/AAAAAAAAARI/yqvWxF8Tz0I/s400/metawidget.png" alt="" id="BLOGGER_PHOTO_ID_5219202410893721298" border="0" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Actualmente soporta Swing, Struts, JSF (RichFaces y Facelets), GWT, Spring Web MVC, JSP y Android. Incluye por tanto aplicaciones desktop, web o para móviles.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://bp0.blogger.com/_j7c0Q8AS2HM/SG5ToEM00nI/AAAAAAAAARA/JhypqdGXG1I/s400/metawidget-swingx.png" alt="" id="BLOGGER_PHOTO_ID_5219200965956391538" border="0" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Su licencia es &lt;a href="http://metawidget.sourceforge.net/doc/faq/licensing.html"&gt;LGPL&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Todavía no es un framework muy maduro pero tiene buena pinta.&lt;br /&gt;&lt;br /&gt;Para más información ver el &lt;a href="http://metawidget.sourceforge.net/doc/reference/en/htmlsingle/metawidget.html"&gt;tutorial&lt;/a&gt; (&lt;a href="http://metawidget.sourceforge.net/doc/reference/en/pdf/metawidget.pdf"&gt;descargar en pdf&lt;/a&gt;) y el &lt;a href="http://kennardconsulting.blogspot.com/"&gt;blog de Kennard Consulting&lt;/a&gt;.</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/326770330/generacin-de-interfaz-de-usuario-con.html" title="Generación de interfaz de usuario con Metawidget" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=8906037607287995100" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/8906037607287995100/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/8906037607287995100" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/8906037607287995100" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/07/generacin-de-interfaz-de-usuario-con.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-4908441911565152104</id><published>2008-06-16T23:53:00.005+02:00</published><updated>2008-06-17T00:07:00.614+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="proyectos" /><category scheme="http://www.blogger.com/atom/ns#" term="citas" /><category scheme="http://www.blogger.com/atom/ns#" term="mente" /><title type="text">Supernova Burnout</title><content type="html">&lt;p class="frase"&gt;Hay estrellas que provocan su propio fallecimiento creyendo que todo será perfecto si consiguen su siguiente proyecto. Pero la satisfacción psicológica esperada casi nunca se materializa. El éxito se convierte en una droga y sienten constantemente la necesidad de puntuar. En cuanto consiguen un objetivo se acostumbran a las alturas y el zumbido desaparece. ¿Y entonces qué? Necesitarán niveles cada vez más elevados de droga para obtener el efecto psicológico deseado.&lt;/p&gt;&lt;div style="text-align: right;"&gt;&lt;a href="http://www.berglas.com/index2.html"&gt;&lt;span style="font-style: italic;"&gt;Steven Berglas&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;(El agotamiento supernova)&lt;br /&gt;&lt;/div&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/313327199/supernova-burnout.html" title="Supernova Burnout" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=4908441911565152104" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/4908441911565152104/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/4908441911565152104" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/4908441911565152104" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/06/supernova-burnout.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-6235449897507709228</id><published>2008-06-12T22:44:00.003+02:00</published><updated>2008-06-15T14:46:55.700+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="diseño" /><title type="text">Tooltips maravillosos</title><content type="html">Mejor dicho: &lt;a href="http://www.nickstakenburg.com/projects/prototip2/"&gt;Prototip 2&lt;/a&gt;: "Create beautiful tooltips with easy".&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://www.nickstakenburg.com/projects/prototip2/"&gt;&lt;img src="http://bp3.blogger.com/_j7c0Q8AS2HM/SFUPAI-AkCI/AAAAAAAAAQ4/C2_312v9oTM/s400/prototip2.gif" alt="" id="BLOGGER_PHOTO_ID_5212088638833201186" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Estan guapos... eh?!</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/310670938/tooltips-maravillosos.html" title="Tooltips maravillosos" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=6235449897507709228" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/6235449897507709228/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/6235449897507709228" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/6235449897507709228" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/06/tooltips-maravillosos.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-5224995365304050394</id><published>2008-06-10T21:28:00.002+02:00</published><updated>2008-06-10T21:31:36.482+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><title type="text">Curiosa animación interactiva</title><content type="html">No, no es Flash. Es JavaScript !&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://bomomo.com/"&gt;&lt;img src="http://bp0.blogger.com/_j7c0Q8AS2HM/SE7WOq_yMwI/AAAAAAAAAQw/wOkrxyWulQQ/s400/bomomo.gif" alt="" id="BLOGGER_PHOTO_ID_5210337366462575362" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;a href="http://bomomo.com/"&gt;bomomo.com&lt;/a&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/309063024/curiosa-animacin-interactiva.html" title="Curiosa animación interactiva" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=5224995365304050394" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/5224995365304050394/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/5224995365304050394" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/5224995365304050394" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/06/curiosa-animacin-interactiva.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-5963541613943574203</id><published>2008-06-10T21:07:00.003+02:00</published><updated>2008-06-10T21:20:36.193+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ajax" /><title type="text">Define componentes Ajax con XML</title><content type="html">&lt;a href="http://dojoe.nexaweb.com/"&gt;dojo.E&lt;/a&gt; son unas extensiones de dojo 1.1 toolkit que facilita el uso de Ajax mediante scripts XML en la propia página, como en el siguiente ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://dojoe.nexaweb.com/images/home_content_1.gif" alt="" border="0" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;script type="text/xml" dojoType="dojoe.XmlScript"&amp;gt;&lt;br /&gt;&amp;lt;ui xmlns="html" xmlns:layout="dijit.layout"&amp;gt;&lt;br /&gt;&amp;lt;layout:AccordionContainer duration="200"&amp;gt;&lt;br /&gt; &amp;lt;layout:AccordionPane title="Title One"&amp;gt;&lt;br /&gt;  &amp;lt;div&amp;gt;&amp;lt;b&amp;gt;Hello, World!&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/layout:AccordionPane&amp;gt;&lt;br /&gt; &amp;lt;layout:AccordionPane title="Title Two"&amp;gt;&lt;br /&gt;  &amp;lt;div&amp;gt;&amp;lt;b&amp;gt;Hello Again!&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/layout:AccordionPane&amp;gt;&lt;br /&gt;&amp;lt;/layout:AccordionContainer&amp;gt;&lt;br /&gt;&amp;lt;/ui&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/blockquote&gt;También permite la programación declarativa para hacer trasformaciones DOM, etc.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dojoe.nexaweb.com/index.html@cid=2618.html"&gt;Ver otros ejemplos&lt;/a&gt;.</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/309050407/define-componentes-ajax-con-xml.html" title="Define componentes Ajax con XML" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=5963541613943574203" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/5963541613943574203/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/5963541613943574203" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/5963541613943574203" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/06/define-componentes-ajax-con-xml.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-3044798664413061641</id><published>2008-06-07T17:17:00.007+02:00</published><updated>2008-06-07T17:58:54.439+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title type="text">Generación de interfaz con Wicket RAD</title><content type="html">&lt;a href="http://faler.wordpress.com/2008/06/02/announcing-wicket-rad-rapid-application-development-with-wicket/"&gt;Wicket RAD&lt;/a&gt; es un framework basado en &lt;a href="http://wicket.apache.org/"&gt;Wicket&lt;/a&gt; que permite generar formularios a partir de anotaciones sobre las entidades Java del modelo de dominio (tipos de campos, orden, validaciones, etc).&lt;br /&gt;Las entidades podrán tener además las anotaciones JPA correspondientes al objeto-relacional.&lt;br /&gt;&lt;br /&gt;Ver este ejemplo, donde se tienen primero las anotaciones típicas JPA que relacionan la entidad con la base de datos, y después las anotaciones Wicket RAD que la relacionan con el formulario a generar:&lt;br /&gt;&lt;blockquote&gt;public class PhoneBookEntry implements Identifiable&lt;string&gt; {&lt;br /&gt; @Id&lt;br /&gt; @Column(name="full_name")&lt;br /&gt; private String id;&lt;br /&gt; @Column(name="phone")&lt;br /&gt; private String phonenumber;&lt;br /&gt; @Column(name="country")&lt;br /&gt; private String country;&lt;br /&gt; @Column(name="gender")&lt;br /&gt; private String gender;&lt;br /&gt; @Column(name="active")&lt;br /&gt; private boolean active;&lt;br /&gt;&lt;br /&gt; @FieldOrder(1)&lt;br /&gt; @TextField&lt;br /&gt; @Required&lt;br /&gt; @EditScope(EditScope.Scope.CREATE)&lt;br /&gt; @UniqueField&lt;br /&gt; public String getId() {&lt;br /&gt;     return id;&lt;br /&gt; }&lt;br /&gt; public void setId(String id) {&lt;br /&gt;     this.id = id;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @FieldOrder(2)&lt;br /&gt; @TextField&lt;br /&gt; @Required&lt;br /&gt; @Length(min=3, max=20)&lt;br /&gt; public String getPhonenumber() {&lt;br /&gt;     return phonenumber;&lt;br /&gt; }&lt;br /&gt; public void setPhonenumber(String phonenumber) {&lt;br /&gt;     this.phonenumber = phonenumber;&lt;br /&gt; }&lt;br /&gt; @FieldOrder(3)&lt;br /&gt; @DropDownChoice(CountrySource.class)&lt;br /&gt; public String getCountry() {&lt;br /&gt;     return country;&lt;br /&gt; }&lt;br /&gt; public void setCountry(String country) {&lt;br /&gt;     this.country = country;&lt;br /&gt; }&lt;br /&gt; @FieldOrder(4)&lt;br /&gt; @RadioGroup(GenderSource.class)&lt;br /&gt; public String getGender() {&lt;br /&gt;     return gender;&lt;br /&gt; }&lt;br /&gt; public void setGender(String gender) {&lt;br /&gt;     this.gender = gender;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @FieldOrder(5)&lt;br /&gt; @CheckBox&lt;br /&gt; public boolean isActive() {&lt;br /&gt;     return active;&lt;br /&gt; }&lt;br /&gt; public void setActive(boolean active) {&lt;br /&gt;     this.active = active;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;/string&gt;&lt;/blockquote&gt;Esta idea de generación de interfaz es similar a &lt;a href="http://www.elholgazan.com/2008/05/grails-por-qu-no-has-venido-antes.html"&gt;la que veíamos en el scaffolding de Grails&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Puedes descargar el framework (wicket-rad-core) y una pequeña aplicación de ejemplo (wicket-rad-samples) en &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=223129"&gt;sourceforge&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Para probarlo rápidamente leer los archivos readme.txt.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Con maven basta hacer "mvn clean install" en wicket-rad-core, que descargará automáticamente las dependencias y compilará e instalará el framework en tu repositorio maven.&lt;/li&gt;&lt;li&gt;Después hacer "mvn clean install" y "mvn exec:java -Dexec.mainClass="org.wicketrad.Server"" para compilar, instalar y ejecutar la aplicación de ejemplo, que estará accesible en http://localhost:8080.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;(Vía &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=49587"&gt;TheServerSide.com&lt;/a&gt;).</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/306850409/generacin-de-interfaz-con-wicket-rad.html" title="Generación de interfaz con Wicket RAD" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=3044798664413061641" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/3044798664413061641/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/3044798664413061641" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/3044798664413061641" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/06/generacin-de-interfaz-con-wicket-rad.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-7996465071733929204</id><published>2008-06-06T20:06:00.002+02:00</published><updated>2008-06-06T20:16:42.016+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title type="text">Oracle dona Toplink a Eclipse (EclipseLink)</title><content type="html">Aunque &lt;span style="font-weight: bold;"&gt;Toplink &lt;/span&gt;seguirá existiendo como producto comercial, estará compuesto por &lt;span style="font-weight: bold;"&gt;EclipseLink&lt;/span&gt;, la plataforma de persistencia de Eclipse que ofrecerá todas las funcionalidades del motor de persistencia (sin restricciones), aunque ofrecerá extensiones para una integración avanzada con &lt;span style="font-weight: bold;"&gt;Oracle Application Server&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/tech/eclipse/pdf/eclipselink-faq.pdf"&gt;Ver el FAQ de Oracle&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;El &lt;a href="http://wiki.eclipse.org/EclipseLink/FAQ/WhatIsEclipseLink"&gt;proyecto&lt;/a&gt; está actualmente en fase de incubación.&lt;br /&gt;&lt;br /&gt;La licencia será la  &lt;a href="http://www.eclipse.org/legal/epl-v10.html" class="external text" title="http://www.eclipse.org/legal/epl-v10.html" rel="nofollow"&gt;Eclipse Public License&lt;/a&gt;.</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/306277933/oracle-dona-toplink-eclipse-eclipselink.html" title="Oracle dona Toplink a Eclipse (EclipseLink)" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=7996465071733929204" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/7996465071733929204/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/7996465071733929204" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/7996465071733929204" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/06/oracle-dona-toplink-eclipse-eclipselink.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-5039068361290312013</id><published>2008-06-06T17:23:00.005+02:00</published><updated>2008-06-06T18:04:01.258+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="BBDD" /><title type="text">Neo4j, una base de datos de grafos</title><content type="html">&lt;a href="http://neo4j.org/"&gt;Neo4j&lt;/a&gt; es un motor de persistencia robusto, escalable y empotrado para la gestión eficiente de datos semiestructurados y orientados a redes.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://blogs.talis.com/nodalities/files/2008/04/2415237566_563a84b14c_m.jpg" alt="" border="0" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Orientado a redes.&lt;/span&gt; Al igual que el modelo relacional está basado en tablas, columnas y filas, Neo está basado en nodos, propiedades y relaciones, que pueden formar una gran red o grafo.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Especialmente indicado para datos semiestructurados. &lt;/span&gt;Donde sólo algunas propiedades son obligatorias y la gran mayoría son opcionales.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Está empotrado. &lt;/span&gt;Es una librería Java no intrusiva y de poco peso.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Rendimiento y escalabilidad. &lt;/span&gt;A sido diseñado teniendo en mente estas cuestiones y ha sido probado con grandes redes (de más de 100 millones de nodos, propiedades y relaciones).&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Robusto.&lt;/span&gt; Soporta JTA y JTS. Es maduro, hasta 3 años en producción en sistemas 24x7.&lt;/li&gt;&lt;li&gt;La API es muy sencilla, y permite representar los datos de una manera flexible e intuitiva.&lt;/li&gt;&lt;li&gt;Las consultas están basadas en la navegación por los nodos y relaciones. También permite usar "Transversers", que son objetos para realizar consultas del tipo: "dime todos los amigos de Morfeo y los amigos de sus amigos", o "¿cónoce Trinity a alguien que esté emparentado con un agente?".&lt;/li&gt;&lt;li&gt;Cuenta con versiones comerciales y de software libre.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Sin embargo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Requiere cierta curva de aprendizaje. No hay demasiada gente que sepa de modelos orientados a redes.&lt;/li&gt;&lt;li&gt;Las herramientas existentes de consulta son muy rudimentarias.&lt;/li&gt;&lt;li&gt;Es mucho peor que el modelo relacional para datos estructurados que requieren consultas arbitrarias.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://neo4j.org/doc/"&gt;Ver más en la documentación&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(Vía &lt;a href="http://www.infoq.com/news/2008/06/neo4j"&gt;InfoQ&lt;/a&gt;).</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/306197584/neo4j-una-base-de-datos-de-grafos.html" title="Neo4j, una base de datos de grafos" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=5039068361290312013" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/5039068361290312013/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/5039068361290312013" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/5039068361290312013" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/06/neo4j-una-base-de-datos-de-grafos.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-8988202694675004071</id><published>2008-05-30T10:24:00.004+02:00</published><updated>2008-05-30T10:45:12.851+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><title type="text">Elige tu licencia de ExtJS</title><content type="html">&lt;a href="http://extjs.com/"&gt;ExtJS&lt;/a&gt; ha dejado de ser &lt;a href="http://es.wikipedia.org/wiki/Licencia_p%C3%BAblica_general_limitada_de_GNU"&gt;LGPL&lt;/a&gt; para ser &lt;a href="http://es.wikipedia.org/wiki/GPL"&gt;GPL&lt;/a&gt;. Esto significa que si construyes una aplicación usando ExtJS 2.1, entonces tu aplicación debe ser GPL si vas a distribuirla.&lt;br /&gt;&lt;br /&gt;Ver las &lt;a href="http://extjs.com/forum/showthread.php?t=33096"&gt;discusiones sobre este tema&lt;/a&gt; en el foro de ExtJS.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://extjs.com/company/dual.php"&gt;¿Cómo lo explican en ExtJS?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pues ofrecen 2 licencias posibles, siguiendo el principio &lt;span style="font-weight: bold;"&gt;Quid Pro Quo&lt;/span&gt; ("algo a cambio de algo").&lt;br /&gt;A cambio de las ventajas de utilizar ExtJS en tu aplicación, requieren una de las siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Contribuir a la continuidad del desarrollo del producto, comprando &lt;span style="font-weight: bold;"&gt;licencias comerciales&lt;/span&gt; de Ext. Esta opción asegura el derecho de distribuir tu aplicación en los términos de la licencia que elijas.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Contribuir a la comunidad &lt;span style="font-weight: bold;"&gt;Open Source&lt;/span&gt; con tu aplicación (por ejemplo con una licencia GPL v3). Esta opción asegura que todos los usuarios puedan obtener todo el código, lo puedan modificar y redistribuir.&lt;/li&gt;&lt;/ul&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/301119791/elige-tu-licencia-de-extjs.html" title="Elige tu licencia de ExtJS" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=8988202694675004071" title="2 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/8988202694675004071/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/8988202694675004071" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/8988202694675004071" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/elige-tu-licencia-de-extjs.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-7959820896215665098</id><published>2008-05-29T23:31:00.004+02:00</published><updated>2008-05-29T23:37:34.625+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="diseño" /><title type="text">Plantillas Flash gratis</title><content type="html">Están bastante bien. En &lt;a href="http://www.flashmo.com/"&gt;flashmo.com&lt;/a&gt;.&lt;br /&gt;Esta es la que más me ha gustado:&lt;br /&gt;&lt;br /&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" name="flashmo_091_intro" id="http://www.elholgazan.com.googlepages.com/flashmo_091_intro.swf" align="middle" height="300" width="600"&gt;&lt;param name="allowScriptAccess" value="sameDomain"&gt;&lt;param name="movie" value="flashmo_091_intro.swf"&gt;&lt;param name="quality" value="high"&gt;&lt;param name="bgcolor" value="#000000"&gt;&lt;embed src="http://www.elholgazan.com.googlepages.com/flashmo_091_intro.swf" quality="high" bgcolor="#000000" name="flashmo_091_intro" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" align="middle" height="300" width="600"&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/300805923/plantillas-flash-gratis.html" title="Plantillas Flash gratis" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=7959820896215665098" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/7959820896215665098/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/7959820896215665098" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/7959820896215665098" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/plantillas-flash-gratis.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-7964990048295423274</id><published>2008-05-27T23:14:00.003+02:00</published><updated>2008-05-27T23:25:26.327+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title type="text">Servlets, taglibs y otros trucos</title><content type="html">Muy buena esta &lt;a href="http://www.servletsuite.com/servlets.htm"&gt;colección de servlets&lt;/a&gt;, estas &lt;a href="http://www.servletsuite.com/jsp.htm"&gt;librerías de etiquetas&lt;/a&gt; y estos otros &lt;a href="http://www.servletsuite.com/tips.htm"&gt;trucos&lt;/a&gt; y &lt;a href="http://www.servletsuite.com/dev.htm"&gt;herramientas&lt;/a&gt; relacionadas en &lt;span style="font-weight: bold;"&gt;servletsuite.com&lt;/span&gt;.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Entre los más de 100 servlets pueden encontrarse un proxy HTTP, un proxy REST, un gestor de ficheros, un albun de fotos, un formulario de envío de emails, etc.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Entre las más de 300 librerías de etiquetas pueden verse etiquetas para el manejo de XML, XSL, upload de ficheros, integración con LDAP, utilidades Ajax, etc.&lt;/li&gt;&lt;/ul&gt;Para entretenerse un buen rato...&lt;br /&gt;Una pena que no puedan verse demostraciones online de todas ellas.</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/299351268/servlets-taglibs-y-otros-trucos.html" title="Servlets, taglibs y otros trucos" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=7964990048295423274" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/7964990048295423274/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/7964990048295423274" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/7964990048295423274" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/servlets-taglibs-y-otros-trucos.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-2145809161267787045</id><published>2008-05-26T22:37:00.005+02:00</published><updated>2008-05-26T22:59:55.048+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><title type="text">Persistencia en cliente con JavaScript</title><content type="html">&lt;a href="http://pablotron.org/?cid=1557"&gt;PersistJS&lt;/a&gt; es una API que permite persistir datos en cliente con JavaScript, sin necesidad de instalar ningún plugin adicional (como &lt;a href="http://www.macromedia.com/support/documentation/en/flashplayer/help/help02.html"&gt;Flash&lt;/a&gt; o &lt;a href="http://gears.google.com/"&gt;Google Gears&lt;/a&gt;) y sin estar sujeto a las limitaciones de tamaño de las &lt;a href="http://es.wikipedia.org/wiki/Cookie"&gt;cookies&lt;/a&gt;.&lt;br /&gt;Utiliza las soluciones que ofrecen los distintos navegadores actuales:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://developer.mozilla.org/es/docs/DOM:Almacenamiento"&gt;globalStorage&lt;/a&gt;: Firefox 2.0+, Internet Explorer 8&lt;/li&gt;&lt;li&gt;localStorage: development WebKit&lt;/li&gt;&lt;li&gt;&lt;a href="http://webkit.org/blog/126/webkit-does-html5-client-side-database-storage/"&gt;openDatabase&lt;/a&gt;: Safari 3.1+&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms531424.aspx"&gt;userdata behavior&lt;/a&gt;: Internet Explorer 5.5+&lt;/li&gt;&lt;/ul&gt;Similar a &lt;a href="http://dojotoolkit.org/offline"&gt;Dojo Storage&lt;/a&gt; aunque con menos limitaciones, según cuentan.&lt;br /&gt;&lt;br /&gt;¿Cuándo van a ponerse de acuerdo los distintos navegadores de forma que podamos dejar de invertir esfuerzos en este tipo de asuntos?</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/298617413/persistencia-en-cliente-con-javascript.html" title="Persistencia en cliente con JavaScript" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=2145809161267787045" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/2145809161267787045/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/2145809161267787045" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/2145809161267787045" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/persistencia-en-cliente-con-javascript.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-2503424123484323820</id><published>2008-05-25T22:31:00.007+02:00</published><updated>2008-06-06T21:39:20.135+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title type="text">Comparativa de frameworks de desarrollo de aplicaciones web</title><content type="html">Me ha parecido interesante esta serie de artículos de &lt;a href="http://weblogs.java.net/blog/simongbrown/"&gt;Simon Brown&lt;/a&gt;, donde se comparan distintos frameworks Java de desarrollo web.&lt;br /&gt;Lo hace mostrando como ejemplo el desarrollo de una aplicación simple: un blog.&lt;br /&gt;(En inglés)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://weblogs.java.net/blog/simongbrown/archive/2005/11/comparing_webap.html"&gt;Introducción&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.java.net/blog/simongbrown/archive/2005/11/comparing_webap_2.html"&gt;¿Por qué?&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.java.net/blog/simongbrown/archive/2005/11/comparing_webap_1.html"&gt;Requisitos&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.java.net/blog/simongbrown/archive/2005/11/comparing_webap_3.html"&gt;Modelo de dominio&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.java.net/blog/simongbrown/archive/2005/11/comparing_webap_4.html"&gt;Modelo 1 con scriptlets&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.java.net/blog/simongbrown/archive/2006/01/comparing_webap_5.html"&gt;Modelo 1 con JSTL&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.java.net/blog/simongbrown/archive/2006/01/comparing_webap_6.html"&gt;Modelo 1 con JSP XML&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.java.net/blog/simongbrown/archive/2006/01/comparing_webap_7.html"&gt;Struts&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.java.net/blog/simongbrown/archive/2006/03/comparing_webap_8.html"&gt;Wicket&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.java.net/blog/simongbrown/archive/2006/03/comparing_webap_9.html"&gt;Stripes&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.java.net/blog/simongbrown/archive/2006/03/comparing_webap_10.html"&gt;WebWork&lt;/a&gt;. (Hoy, &lt;a href="http://struts.apache.org/2.x/index.html"&gt;Struts 2&lt;/a&gt;=WebWork + Struts).&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/297941501/comparativa-de-framewoks-de-desarrollo.html" title="Comparativa de frameworks de desarrollo de aplicaciones web" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=2503424123484323820" title="1 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/2503424123484323820/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/2503424123484323820" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/2503424123484323820" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/comparativa-de-framewoks-de-desarrollo.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-1056832911951955447</id><published>2008-05-22T15:50:00.005+02:00</published><updated>2008-05-22T16:00:58.135+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="diseño" /><title type="text">Convertir una imagen a formato vectorial</title><content type="html">&lt;a href="http://vectormagic.com/"&gt;Vector magic&lt;/a&gt; es una web que permite vectorizar imágenes. Y lo hace bastante bien.&lt;br /&gt;&lt;br /&gt;Simplemente hay que subir la imagen, indicar unos parámetros para optimizar la conversión (si es una fotografía o un logo, nivel de detalle, etc), y te la podrás descargar en eps, svg, pdf o png.&lt;br /&gt;&lt;br /&gt;Un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://bp0.blogger.com/_j7c0Q8AS2HM/SDV6nikD3-I/AAAAAAAAAQo/axXHZaPJR88/s400/vectorize.jpg" alt="" id="BLOGGER_PHOTO_ID_5203199764208017378" border="0" /&gt;&lt;/center&gt;&lt;br /&gt;Para la descarga requiere que te registres, aunque sólo se puede efectuar un par de descargas de forma gratuita.&lt;br /&gt;&lt;br /&gt;¿Conoces alguna herramienta similar?</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/295852383/convertir-una-imagen-formato-vectorial.html" title="Convertir una imagen a formato vectorial" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=1056832911951955447" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/1056832911951955447/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/1056832911951955447" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/1056832911951955447" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/convertir-una-imagen-formato-vectorial.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-6651657403023309620</id><published>2008-05-22T10:24:00.008+02:00</published><updated>2008-05-22T10:51:52.892+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><category scheme="http://www.blogger.com/atom/ns#" term="diseño" /><title type="text">Clones de Ligthbox</title><content type="html">Hemos escuchado hablar de &lt;a href="http://paularmstrongdesigns.com/projects/awesomebox/"&gt;Awesome Box&lt;/a&gt;,  &lt;a href="http://livepipe.net/projects/control_modal/"&gt;Control.Modal&lt;/a&gt;, &lt;a href="http://famspam.com/facebox"&gt;Facebox&lt;/a&gt;, &lt;a href="http://www.cabel.name/2008/02/fancyzoom-10.html"&gt;Fancy Zoom&lt;/a&gt;, &lt;a href="http://fancy.klade.lv/"&gt;FancyBox&lt;/a&gt;, &lt;a href="http://orangoo.com/labs/GreyBox/"&gt;Greybox&lt;/a&gt;, &lt;a href="http://jquery.com/demo/grey/"&gt;Greybox Redux&lt;/a&gt;, &lt;a href="http://vikjavev.no/highslide/"&gt;Highslide&lt;/a&gt;, &lt;a href="http://labs.ibegin.com/ibox/"&gt;iBox&lt;/a&gt;, &lt;a href="http://www.intelliance.fr/jquery/imagebox/"&gt;Imagebox&lt;/a&gt;, &lt;a href="http://leandrovieira.com/projects/jquery/lightbox/"&gt;jQuery lightBox plugin&lt;/a&gt;, &lt;a href="http://www.eight.nl/files/leightbox/"&gt;Leightbox&lt;/a&gt;, &lt;a href="http://particletree.com/features/lightbox-gone-wild/"&gt;LightBox Gone Wild&lt;/a&gt;, &lt;a href="http://serennz.sakura.ne.jp/toybox/lightbox/"&gt;Lightbox+&lt;/a&gt;, &lt;a href="http://www.huddletogether.com/projects/lightbox2/"&gt;Lightbox2&lt;/a&gt;, &lt;a href="http://www.nickstakenburg.com/projects/lightview/"&gt;Lightview&lt;/a&gt;, &lt;a href="http://stickmanlabs.com/lightwindow/"&gt;LightWindow&lt;/a&gt;,  &lt;a href="http://www.doknowevil.net/litebox/"&gt;Litebox&lt;/a&gt;, &lt;a href="http://www.dolem.com/lytebox/"&gt;Lytebox&lt;/a&gt;, &lt;a href="http://reghellin.com/milkbox/"&gt;Milkbox&lt;/a&gt;, &lt;a href="http://www.wildbit.com/labs/modalbox/"&gt;ModalBox&lt;/a&gt;, &lt;a href="http://www.e-magine.ro/web-dev-and-design/36/moodalbox/"&gt;MOOdalbox&lt;/a&gt;, &lt;a href="http://www.phatfusion.net/multibox/"&gt;Multibox&lt;/a&gt;, &lt;a href="http://nyromodal.nyrodev.com/"&gt;nyroModal&lt;/a&gt;, &lt;a href="http://www.no-margin-for-errors.com/projects/prettyPhoto/"&gt;prettyPhoto&lt;/a&gt;, &lt;a href="http://prototype-window.xilinus.com/index.html"&gt;Prototype Window&lt;/a&gt;, &lt;a href="http://www.roebox.com/"&gt;RoeBox&lt;/a&gt;, &lt;a href="http://mjijackson.com/shadowbox/"&gt;Shadow Box&lt;/a&gt;, &lt;a href="http://www.oscandy.com/index.html"&gt;Slightbox&lt;/a&gt;, &lt;a href="http://www.jasons-toolbox.com/SlightlyThickerbox/"&gt;Slightly ThickerBox&lt;/a&gt;, &lt;a href="http://www.digitalia.be/software/slimbox"&gt;Slimbox&lt;/a&gt;, &lt;a href="http://gueschla.com/labs/smoothbox/"&gt;Smoothbox&lt;/a&gt;, &lt;a href="http://www.subimage.com/dhtml/subModal/"&gt;SubModal&lt;/a&gt;, &lt;a href="http://mondaybynoon.com/2007/02/19/suckerfish-hoverlightbox-redux/"&gt;Suckerfish HoverLightbox Redux&lt;/a&gt;, &lt;a href="http://www.makesites.cc/programming/by-makis/swfbox/"&gt;SWFbox&lt;/a&gt;, &lt;a href="http://jquery.com/demo/thickbox/"&gt;Thickbox&lt;/a&gt;, &lt;a href="http://alexei.417.ro/node/4"&gt;TinyBox&lt;/a&gt;, &lt;a href="http://thecodecentral.com/2007/08/17/yui-based-lightbox-revisit"&gt;YUI based lightbox&lt;/a&gt; ...&lt;br /&gt;&lt;br /&gt;En planetOzh han realizado una &lt;a href="http://planetozh.com/projects/lightbox-clones/"&gt;comparativa&lt;/a&gt; entre todos estos scripts de imágenes y otros contenidos mutimedia en forma de pop-ups.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://www.elholgazan.com.googlepages.com/lightbox-clones.gif" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Parece que los más versátiles son &lt;a href="http://stickmanlabs.com/lightwindow/"&gt;LightWindow&lt;/a&gt;, &lt;a href="http://mjijackson.com/shadowbox/"&gt;Shadow Box&lt;/a&gt; y &lt;a href="http://www.phatfusion.net/multibox/"&gt;Multibox&lt;/a&gt;.</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/295683845/clones-de-ligthbox.html" title="Clones de Ligthbox" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=6651657403023309620" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/6651657403023309620/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/6651657403023309620" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/6651657403023309620" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/clones-de-ligthbox.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-4112264534208722633</id><published>2008-05-22T10:03:00.003+02:00</published><updated>2008-05-22T10:21:16.926+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="open source" /><category scheme="http://www.blogger.com/atom/ns#" term="proyectos" /><title type="text">LibreSource: plataforma colaborativa de desarrollo</title><content type="html">&lt;a href="http://dev.libresource.org/home/overview"&gt;LibreSource&lt;/a&gt; es una plataforma para implementar "forjas" de desarrollo de software.&lt;br /&gt;Algunas &lt;a href="http://dev.libresource.org/home/community/features"&gt;características&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Permite múltiples proyectos.&lt;/li&gt;&lt;li&gt;Búsquedas contextuales basadas en Lucene.&lt;/li&gt;&lt;li&gt;Mensajería instantánea con Jabber.&lt;/li&gt;&lt;li&gt;Configuración de la seguridad de forma flexible.&lt;/li&gt;&lt;li&gt;Definición de grupos de usuarios.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Existencia de Wikis.&lt;/li&gt;&lt;li&gt;Foros.&lt;/li&gt;&lt;li&gt;Áreas de descarga de ficheros.&lt;/li&gt;&lt;li&gt;Formularios y encuestas.&lt;/li&gt;&lt;li&gt;Seguimiento de incidencias.&lt;/li&gt;&lt;li&gt;Con sincronizador de contenidos.&lt;/li&gt;&lt;/ul&gt;El mismo sitio de &lt;a href="http://dev.libresource.org/home/overview"&gt;LibreSource&lt;/a&gt; sirve de ejemplo, similar a &lt;a href="http://sourceforge.net/"&gt;sourceforge.net&lt;/a&gt;, a &lt;a href="http://code.google.com/"&gt;Google Code&lt;/a&gt;, &lt;a href="http://codehaus.org/"&gt;Codehaus&lt;/a&gt;, &lt;a href="http://sharesource.org/"&gt;ShareSource&lt;/a&gt;, etc.</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/295666035/libresource-plataforma-colaborativa-de.html" title="LibreSource: plataforma colaborativa de desarrollo" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=4112264534208722633" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/4112264534208722633/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/4112264534208722633" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/4112264534208722633" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/libresource-plataforma-colaborativa-de.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-180482913574423250</id><published>2008-05-22T00:29:00.003+02:00</published><updated>2008-05-22T00:40:45.863+02:00</updated><title type="text">Cambio de código Java "en caliente"</title><content type="html">Con &lt;a href="http://www.zeroturnaround.com/javarebel/"&gt;JaveRebel&lt;/a&gt; esto es posible de una forma muy sencilla, tanto para aplicaciones web JEE como para aplicaciones Java standalone.&lt;br /&gt;Basta añadir a la línea de comandos de inicio de la máquina virtual Java:&lt;br /&gt;&lt;blockquote&gt;-noverify -javaagent:javarebel.jar&lt;br /&gt;&lt;/blockquote&gt;Con esto, al cambiar el código fuente Java podrás ver los resultados "al vuelo", si que sea necesario desplegar de nuevo la aplicación.&lt;br /&gt;&lt;br /&gt;Puedes ganar mucho tiempo en tu desarrollo...&lt;br /&gt;&lt;br /&gt;Ver &lt;a href="http://www.zeroturnaround.com/docs/javarebel-jpetstore-screencast"&gt;este vídeo de demostración&lt;/a&gt; con una aplicación web corriendo en Tomcat.</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/295384122/cambio-de-cdigo-java-en-caliente.html" title="Cambio de código Java &quot;en caliente&quot;" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=180482913574423250" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/180482913574423250/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/180482913574423250" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/180482913574423250" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/cambio-de-cdigo-java-en-caliente.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-4454585959971090516</id><published>2008-05-17T16:39:00.005+02:00</published><updated>2008-05-17T16:56:21.099+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Ajax" /><title type="text">Bindows: componentes tipo Windows con Ajax  y JSF</title><content type="html">Aunque es de pago, &lt;a href="http://www.bindows.net/"&gt;este framework&lt;/a&gt; Ajax simula bastante bien las aplicaciones web "tipo Windows".&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://www.bindows.net/"&gt;&lt;img src="http://bp1.blogger.com/_j7c0Q8AS2HM/SC7uzgY7kbI/AAAAAAAAAQg/rXm4uSbjT5c/s400/bindows.gif" alt="" id="BLOGGER_PHOTO_ID_5201357188294742450" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bindows.net/demos/"&gt;Ver demos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A simple vista, en comparación con &lt;a href="http://extjs.com/"&gt;Ext JS&lt;/a&gt;, es bastate ligero en la carga inicial aunque parece algo menos atrattivo visualmente y cuenta con menos componentes. Sí que tiene la ventaja de que se pueda desarrollar con JSF.&lt;br /&gt;Habrá que ver si es sencilla su utilización para aplicaciones reales...&lt;br /&gt;¿Alguien lo ha probado?&lt;br /&gt;&lt;br /&gt;NOTA: Existen algunos intentos de hacer componentes JSF basados en ExtJS, como &lt;a href="http://sharesource.org/project/lilya/files/17/25/"&gt;Lilya&lt;/a&gt;, aunque no parecen ser desarrollos suficientemente maduros. ¿Conoces algún otro?</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/292329893/bindows-componentes-tipo-windows-con.html" title="Bindows: componentes tipo Windows con Ajax  y JSF" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=4454585959971090516" title="1 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/4454585959971090516/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/4454585959971090516" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/4454585959971090516" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/bindows-componentes-tipo-windows-con.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-494041307001885394</id><published>2008-05-11T11:42:00.004+02:00</published><updated>2008-05-11T12:40:46.242+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Grails" /><title type="text">Grails: por qué no has venido antes</title><content type="html">&lt;a href="http://grails.codehaus.org/"&gt;Grails&lt;/a&gt; es un framework de desarrollo web basado en la utilización del lenguaje &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt;, que complementa el desarrollo web basado en Java.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://bp0.blogger.com/_j7c0Q8AS2HM/SCbIlQY7kaI/AAAAAAAAAQY/bmVS3ILHKss/s400/grails_logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5199063362226065826" border="0" /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Se ejecuta en una máquina virtual Java y está basado en librerías como Spring, Hibernate, Acegi, log4j, etc, aunque el desarrollador no tiene que preocuparse de la configuración de estos componentes.&lt;br /&gt;El objetivo principal: &lt;span style="font-weight: bold;"&gt;facilitar la vida al desarrollador&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;INSTALACIÓN&lt;/span&gt;&lt;br /&gt;Es muy fácil de &lt;a href="http://grails.codehaus.org/Installation"&gt;instalar&lt;/a&gt;. Teniendo la máquina virtual Java: descomprimir un zip, configurar una variable de entorno y listo!&lt;br /&gt;Cuenta con&lt;a href="http://grails.codehaus.org/IDE+Integration"&gt; plugins para distintos IDEs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CoC y DRY&lt;/span&gt;&lt;br /&gt;Sigue el paradigma de &lt;a href="http://es.wikipedia.org/wiki/Convenci%C3%B3n_sobre_Configuraci%C3%B3n"&gt;convención sobre la configuración&lt;/a&gt; (al igual que &lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;).&lt;br /&gt;Para &lt;a href="http://grails.codehaus.org/Quick+Start"&gt;crear una aplicación nueva&lt;/a&gt; con la estructura estándar de carpetas basta hacer:&lt;br /&gt;&lt;blockquote&gt;grails create-app&lt;/blockquote&gt;Consigue que el programador tenga que encargarse de configurar lo mínimo imprescindible (principio &lt;a href="http://es.wikipedia.org/wiki/DRY"&gt;DRY&lt;/a&gt;): se acabaron los ficheros XML de Spring, Hibernate y Struts o JSF.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EL ANDAMIAJE MVC&lt;/span&gt;&lt;br /&gt;Sigue el patrón Modelo-Vista-Controlador.&lt;br /&gt;Tiene una característica muy interesante, el &lt;a href="http://grails.codehaus.org/Scaffolding"&gt;scaffolding&lt;/a&gt;, que permite generar vistas y controladores dinámicamente (en tiempo de ejecución),  para las entidades del modelo de dominio que así se definan.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;¡¡ Puedes llegar a generar la versión inicial de una aplicación completamente a partir del modelo de dominio !!&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;class BookController {&lt;br /&gt;def scaffold = true&lt;br /&gt;...&lt;br /&gt;}&lt;/blockquote&gt;De esta manera, los métodos del controlador y las vistas son las que se definen por defecto en base a plantillas, a no ser que se definan métodos o vistas nuevas, o se sobreescriban las estándar.&lt;br /&gt;Estas plantillas (para las operaciones típicas &lt;a href="http://es.wikipedia.org/wiki/CRUD"&gt;CRUD&lt;/a&gt;) son adaptables por el programador.&lt;br /&gt;&lt;blockquote&gt;grails install-templates&lt;/blockquote&gt;También se pueden generar las vistas y controladores de forma estática en tiempo de programación, que se pueden tomar como versión inicial para empezar a programar.&lt;br /&gt;&lt;blockquote&gt;grails generate-all&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PLUGINS&lt;/span&gt;&lt;br /&gt;Cuenta con &lt;a href="http://grails.codehaus.org/Plugins"&gt;plugins&lt;/a&gt; que amplían la funcionalidad disponible: búsquedas basadas en Lucene, seguridad basada en Acegi, informes JasperReports, etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;En definitiva: viene muy bien para crear una aplicación web con arquitectura JEE que sea fundamentalmente CRUD en un tiempo record !&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Para más información, continuar con la &lt;a href="http://grails.codehaus.org/Quick+Start"&gt;introducción&lt;/a&gt; y los &lt;a href="http://grails.codehaus.org/Tutorials"&gt;tutoriales&lt;/a&gt;.&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/287993001/grails-por-qu-no-has-venido-antes.html" title="Grails: por qué no has venido antes" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=494041307001885394" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/494041307001885394/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/494041307001885394" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/494041307001885394" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/grails-por-qu-no-has-venido-antes.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-2162300259553926039</id><published>2008-05-10T11:22:00.007+02:00</published><updated>2008-05-10T13:22:26.123+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Groovy" /><title type="text">Mejora de productividad con Groovy</title><content type="html">Ya sabemos que &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; es un lenguaje:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ágil y dinámico que se ejecuta en la máquiva virtual Java.&lt;/li&gt;&lt;li&gt;compila como bytecodes Java, de forma que puedes utilizarlo allí donde puedes usar Java.&lt;/li&gt;&lt;li&gt;se integra con todos los objetos y librerías Java existentes.&lt;/li&gt;&lt;li&gt;proporciona toda la potencia de Java y proporciona características adicionales basadas en lenguajes como Python, Ruby y Smalltalk.&lt;/li&gt;&lt;li&gt;disminuye la curva de aprendizaje.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;incrementa la productividad del desarrollo web, de interfaz de usuario, de acceso a base de datos o de consola.&lt;/li&gt;&lt;li&gt;simplifica el desarrollo de pruebas.&lt;/li&gt;&lt;li&gt;soporta lenguajes de dominio específicos y otras sintaxis para que el código sea más fácil de mantener.&lt;/li&gt;&lt;/ul&gt;Aquí va un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Con Java:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;import java.io.BufferedReader;&lt;br /&gt;import java.io.FileNotFoundException;&lt;br /&gt;import java.io.FileReader;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;&lt;br /&gt;public class WalkFile {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;      BufferedReader br = null;&lt;br /&gt;      try {&lt;br /&gt;          br = new BufferedReader(new FileReader("../simpleFile.txt"));&lt;br /&gt;          String line = null;&lt;br /&gt;          while ((line = br.readLine()) != null) {&lt;br /&gt;              System.out.println(line);&lt;br /&gt;          }&lt;br /&gt;      } catch (FileNotFoundException e) {&lt;br /&gt;          e.printStackTrace();&lt;br /&gt;      } catch (IOException e) {&lt;br /&gt;          e.printStackTrace();&lt;br /&gt;      } finally {&lt;br /&gt;          if (br != null) {&lt;br /&gt;              try {&lt;br /&gt;                  br.close();&lt;br /&gt;              } catch (IOException e) {&lt;br /&gt;                  e.printStackTrace();&lt;br /&gt;              }&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Con Groovy:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;new File("../simpleFile.txt" ).eachLine{line -&amp;gt;&lt;br /&gt;println line&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Y es que no es sólo cuestión de líneas de código...&lt;br /&gt;&lt;br /&gt;Estás son algunas características que este lenguaje nos ofrece:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;imports automáticos.&lt;/span&gt; Igual que Java permite utilizar &lt;span style="font-style: italic;"&gt;java.lang.*&lt;/span&gt; sin hacer imports, Groovy permite utilizar muchos más paquetes de la JDK y GDK.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;El punto y coma es opcional&lt;/span&gt;, si una línea tiene sólo un comando.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;    Los paréntesis son opcionales&lt;/span&gt; al llamar a un método.&lt;/li&gt;&lt;li&gt;    También &lt;span style="font-weight: bold;"&gt;es opcional indicar "&lt;span style="font-style: italic;"&gt;return&lt;/span&gt;" &lt;/span&gt;cuando un método devuelve un resultado.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;    Es opcional declarar los tipos de datos&lt;/span&gt;, de forma que el lenguaje es dinámicamente tipado.&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;    El manejo de excepciones es opcional.&lt;/li&gt;&lt;li&gt;    Existe &lt;span style="font-weight: bold;"&gt;sobrecarga de operadores&lt;/span&gt;. Por ejemplo:  &lt;span style="font-style: italic;"&gt;a[b]=c&lt;/span&gt; es &lt;span style="font-style: italic;"&gt;a.putAt(b,c)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;    Hay una &lt;span style="font-weight: bold;"&gt;forma sencilla de ignorar los &lt;span style="font-style: italic;"&gt;NullPointerException&lt;/span&gt;&lt;/span&gt;, sin tener que recurrir ala tediosa formade estar haciendo if antes. Ejemplo: &lt;span style="font-style: italic;"&gt;s?.doSomething()&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/287404041/mejora-de-productividad-con-groovy.html" title="Mejora de productividad con Groovy" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=2162300259553926039" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/2162300259553926039/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/2162300259553926039" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/2162300259553926039" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/mejora-de-productividad-con-groovy.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-2997064804277660447</id><published>2008-05-10T09:50:00.004+02:00</published><updated>2008-05-10T10:08:08.415+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="matemáticas" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title type="text">¿Cuántos afinadores de piano hay en Chicago?</title><content type="html">En algún sitio he visto que esta es una de las típicas preguntas que hacen en las &lt;a href="http://tihomir.org/crazy-questions-at-google-job-interview/"&gt;entrevistas de trabajo de Google&lt;/a&gt;... ¿para desconcertarte y analizar tu actitud? ¿para ver tu capacidad de inventar soluciones creativas? ¿para comprobar tu capacidad de análisis? ¿para observar tus métodos de trabajo?...&lt;br /&gt;&lt;br /&gt;Rápidamente se te pueden ocurrir cosas como esta:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hay 5 millones de personas viviendo en Chicago.&lt;/li&gt;&lt;li&gt;En promedio, viven dos personas en cada casa de Chicago.&lt;/li&gt;&lt;li&gt;Una de cada veinte casas tiene un piano que es afinado regularmente.&lt;/li&gt;&lt;li&gt;Dichos pianos son afinados una vez por año.&lt;/li&gt;&lt;li&gt;A un afinador de pianos le lleva dos horas afinar un piano, incluyendo el tiempo de viaje.&lt;/li&gt;&lt;li&gt;Cada afinador trabaja 8 horas por día, 5 días a la semana y 50 semanas en un año.&lt;/li&gt;&lt;/ul&gt;Este es un ejemplo de lo que llaman &lt;a href="http://es.wikipedia.org/wiki/Problema_de_Fermi"&gt;Problema de Fermi&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;¿Te fiarías de una solución de este tipo para decidir si empezar un negocio en Chicago que provea equipamiento de afinación?</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/287365861/cuntos-afinadores-de-piano-hay-en.html" title="¿Cuántos afinadores de piano hay en Chicago?" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=2997064804277660447" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/2997064804277660447/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/2997064804277660447" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/2997064804277660447" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/cuntos-afinadores-de-piano-hay-en.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-5823177291363284929</id><published>2008-05-07T22:49:00.002+02:00</published><updated>2008-05-07T22:56:16.585+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="negocios" /><title type="text">Objetividad vs confianza</title><content type="html">&lt;p class="frase"&gt;En una negociación: proceder siempre objetivamente, con independencia de la confianza.&lt;/p&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;Fisher y Ury (1991)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Esta regla se puede flexibilizar cuando estamos razonablemente &lt;span style="font-weight: bold;"&gt;seguros &lt;/span&gt;de que el contexto es totalmente cooperativo o cuando están incluidas en la situación las &lt;span style="font-weight: bold;"&gt;garantías &lt;/span&gt;adecuadas.&lt;br /&gt;&lt;br /&gt;Pero aún en tales casos es bueno mantener los procedimientos de &lt;span style="font-weight: bold;"&gt;verificación&lt;/span&gt;, porque aunque no exista peligro de &lt;span style="font-style: italic;"&gt;engaño  &lt;/span&gt;sí existen siempre posibilidades de &lt;span style="font-style: italic;"&gt;errores en los datos&lt;/span&gt; o en las &lt;span style="font-style: italic;"&gt;interpretaciones&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;malentendidos &lt;/span&gt;y &lt;span style="font-style: italic;"&gt;confusiones&lt;/span&gt;.</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/285624845/objetividad-vs-confianza.html" title="Objetividad vs confianza" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=5823177291363284929" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/5823177291363284929/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/5823177291363284929" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/5823177291363284929" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/05/objetividad-vs-confianza.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-3025216649122983367</id><published>2008-04-27T23:31:00.003+02:00</published><updated>2008-04-27T23:37:59.919+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="diseño" /><title type="text">Formularios y validaciones con estilo</title><content type="html">Dos utilidades muy atractivas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.badboy.ro/articles/2005-07-23/niceforms_preview/"&gt;Niceforms&lt;/a&gt;, que convierte los elementos de los formularios mediante CSS y JavaScript. Se degrada fácilmente si no se dispone de JavaScript. &lt;a href="http://www.badboy.ro/assets/articles/niceforms/niceforms.html"&gt;Ver ejemplo&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://moo.floor.ch/?p=18"&gt;FormCheck2&lt;/a&gt;, que crea mensajes de validación muy estéticos asociados a cada elemento del formulario. &lt;a href="http://moo.floor.ch/examples/formcheck/"&gt;Ver ejemplo&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;Un caso de utilización de ambos a la vez es &lt;a href="http://web-kreation.com/LightForm/"&gt;LightForm&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://web-kreation.com/LightForm/"&gt;&lt;img src="http://bp3.blogger.com/_j7c0Q8AS2HM/SBTxzmlj8lI/AAAAAAAAAQQ/Ibfh6mxW-y8/s400/lightform.gif" alt="" id="BLOGGER_PHOTO_ID_5194042139098739282" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/278985431/formularios-y-validaciones-con-estilo.html" title="Formularios y validaciones con estilo" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=3025216649122983367" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/3025216649122983367/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/3025216649122983367" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/3025216649122983367" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/04/formularios-y-validaciones-con-estilo.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-1193621597470256262</id><published>2008-04-27T21:45:00.002+02:00</published><updated>2008-04-27T22:01:11.895+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title type="text">Validación de entidades Java</title><content type="html">&lt;a href="http://www.javalid.org"&gt;JaValid&lt;/a&gt; es un framework que facilita la validación de objetos de dominio utilizando para ello anotaciones Java: @NotNull, @NotEmpty, @MinLength (length=4), etc. (&lt;a href="http://www.javalid.org/documentation/api/org/javalid/annotations/validation/package-summary.html"&gt;ver anotaciones disponibles&lt;/a&gt;).&lt;br /&gt;De esta manera, se puede invocar al validador en cualquier momento y éste devolverá la lista de mensajes de validación correspondiente.&lt;br /&gt;El framework tiene conversores de mensajes de validación para JSF y para Spring.&lt;br /&gt;&lt;br /&gt;Ver &lt;a href="http://www.javalid.org/wps/?page_id=6"&gt;ejemplo básico&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;También permite crear grupos de validación, de manera que al validar se le pueda pedir que realice sólo las validaciones que correspondan al grupo. Esto es útil por ejemplo para validaciones en la creación, que pueden ser diferentes a las que se realicen en la modificación o en otras operaciones.&lt;br /&gt;&lt;br /&gt;Ver &lt;a href="http://www.javalid.org/wps/?page_id=9"&gt;ejemplo con grupos&lt;/a&gt;.</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/278949767/validacin-de-entidades-java.html" title="Validación de entidades Java" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=1193621597470256262" title="0 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/1193621597470256262/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/1193621597470256262" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/1193621597470256262" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/04/validacin-de-entidades-java.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-7066997711286640384.post-2800343229633466537</id><published>2008-04-26T10:39:00.005+02:00</published><updated>2008-04-26T10:50:48.203+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BBDD" /><title type="text">Generación de datos aleatorios</title><content type="html">¿Necesitas generar datos aleatorios para hacer pruebas?&lt;br /&gt;Con &lt;span style="font-style: italic;"&gt;Data Generator&lt;/span&gt; de &lt;a href="http://www.generatedata.com/"&gt;generatedata.com&lt;/a&gt; puedes generar tablas de datos en Excel, HTML, XML, CSV y SQL. Permite definir cualquier número de campos con diversos métodos de generación: en forma de fechas, textos, números, seleccionando de una lista, etc.&lt;br /&gt;&lt;br /&gt;Ver &lt;a href="http://www.generatedata.com/#generator"&gt;demo&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://www.generatedata.com/#generator"&gt;&lt;img src="http://bp2.blogger.com/_j7c0Q8AS2HM/SBLrh2lj8kI/AAAAAAAAAQI/k5_nwu8KOC4/s400/generatedata.gif" alt="" id="BLOGGER_PHOTO_ID_5193472287132873282" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;La aplicación está realizada con PHP y MySQL.&lt;br /&gt;Se puede descargar gratuitamente &lt;a href="http://www.generatedata.com/#download"&gt;aquí&lt;/a&gt;. Licencia GNU Open Source.</content><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/elholgazan/~3/278164981/generacin-de-datos-aleatorios.html" title="Generación de datos aleatorios" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7066997711286640384&amp;postID=2800343229633466537" title="1 comentarios" /><link rel="replies" type="application/atom+xml" href="http://www.elholgazan.com/feeds/2800343229633466537/comments/default" title="Enviar comentarios" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/2800343229633466537" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7066997711286640384/posts/default/2800343229633466537" /><author><name>el holgazán</name><uri>http://www.blogger.com/profile/06957959468971558977</uri><email>noreply@blogger.com</email></author><feedburner:origLink>http://www.elholgazan.com/2008/04/generacin-de-datos-aleatorios.html</feedburner:origLink></entry></feed>
