<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6337866978093157247</id><updated>2012-01-27T17:59:52.992-03:00</updated><category term='Me'/><category term='CXF'/><category term='Mockito'/><category term='NuoDB'/><category term='JPA'/><category term='visual Basic'/><category term='Gosu'/><category term='apt-get'/><category term='self'/><category term='equinox'/><category term='Erjang'/><category term='Spring Roo'/><category term='EJB'/><category term='TDD'/><category term='Smalltalk'/><category term='MongoDb'/><category term='HBase'/><category term='Flex'/><category term='Apache OFBiz'/><category term='Hudson'/><category term='javacio'/><category term='JMS'/><category term='Apache'/><category term='actionscript'/><category term='JEE'/><category term='Data grid/cache'/><category term='Spring WS'/><category term='CSS'/><category term='JBI'/><category term='JavaCC'/><category term='F#'/><category term='Perl'/><category term='lift'/><category term='Inyección de dependencias'/><category term='Groovy'/><category term='jUnit'/><category term='Estimación'/><category term='Aristoteles'/><category term='Apache Hadoop'/><category term='Herencia'/><category term='Tomcat'/><category term='Netbeans'/><category term='AdSense'/><category term='Persistencia'/><category term='Eclipse'/><category term='Abdera'/><category term='WSO2 Business Process Server'/><category term='Apache Ivy'/><category term='CMIS'/><category term='Ioke'/><category term='json'/><category term='Apache Tuscany'/><category term='this'/><category term='Python'/><category term='Voldemort'/><category term='tango'/><category term='Noop'/><category term='Seam'/><category term='Antipatterns'/><category term='ECM'/><category term='W3C'/><category term='JavaFx'/><category term='ESB'/><category term='Apache Thrift'/><category term='OCaml'/><category term='OSGI'/><category term='WOA'/><category term='GNU'/><category term='Oracle'/><category term='Lisp'/><category term='SOA'/><category term='Objective C'/><category term='apache felix'/><category term='Apache Chemistry'/><category term='Scala'/><category term='Jetty'/><category term='jRuby'/><category term='Apache Pivot'/><category term='neo4j'/><category term='BeanShell'/><category term='Spring Data'/><category term='ESP'/><category term='Apache Click'/><category term='Akka'/><category term='aptitude'/><category term='UnQL'/><category term='Camel'/><category term='Jquery'/><category term='programación orientada a objeto'/><category term='Cloud'/><category term='Node'/><category term='X10'/><category term='Go'/><category term='Apache Harmony'/><category term='jna'/><category term='Enterprise Integration Patterns'/><category term='Sun Tzu'/><category term='RESTEasy'/><category term='Debian'/><category term='sqlite'/><category term='SCA'/><category term='Prototype'/><category term='Apache AsyncWeb'/><category term='web services'/><category term='RichFaces'/><category term='LiquiBase'/><category term='Google'/><category term='simula'/><category term='JDBC'/><category term='Open Source'/><category term='Apache Lenya'/><category term='Apache Wave'/><category term='Ruby'/><category term='Linux'/><category term='Cocoa'/><category term='Platon'/><category term='Erlang'/><category term='Chapel'/><category term='Metro'/><category term='Netty'/><category term='Super Vaca'/><category term='C'/><category term='Spring DN'/><category term='Hibernate'/><category term='firebug'/><category term='Kotlin'/><category term='Clojure'/><category term='JSE'/><category term='Metodología'/><category term='Qi4j'/><category term='Rhina'/><category term='Apache Roller'/><category term='AppFuse'/><category term='Apache ODE'/><category term='prolog'/><category term='HTTP'/><category term='Fantom'/><category term='jni'/><category term='programación funcional'/><category term='Design By Contract'/><category term='RSS'/><category term='js'/><category term='DSL'/><category term='cultura'/><category term='Apache Ant'/><category term='EDA'/><category term='Lua'/><category term='.net'/><category term='Mono'/><category term='CDI'/><category term='blogs'/><category term='XForms'/><category term='DAO'/><category term='MySQL'/><category term='POO'/><category term='JEXL'/><category term='TopLink'/><category term='Rails'/><category term='qi'/><category term='ActiveMQ'/><category term='UML'/><category term='SweetDEV RIA'/><category term='Apache Mina'/><category term='BPEL'/><category term='Refactoring'/><category term='Rest'/><category term='Haskell'/><category term='db4o'/><category term='Apache CouchDB'/><category term='JDK'/><category term='Restlet'/><category term='Zimbu'/><category term='Spring Rich Client'/><category term='HTML'/><category term='riqueza'/><category term='JSF'/><category term='Ceylon'/><category term='Facelets'/><category term='Apache Aries'/><category term='haXe'/><category term='jython'/><category term='Io'/><category term='axis 2'/><category term='Atom'/><category term='GWT'/><category term='javascript'/><category term='motivación'/><category term='Apache Esper'/><category term='E4X'/><category term='Gambas'/><category term='MyIbatis'/><category term='C++'/><category term='NewSql'/><category term='browser'/><category term='script'/><category term='tecnología'/><category term='EAI'/><category term='Spring'/><category term='Apache Solr'/><category term='Apache Cassandra'/><category term='Querydsl'/><category term='Android'/><category term='TomEE'/><category term='Entity Beans'/><category term='JVM'/><category term='Apache Shiro'/><category term='php'/><category term='Arquitectura'/><category term='NoSql'/><category term='Xtend'/><category term='BPM'/><category term='CEP'/><category term='Java'/><category term='SDO'/><category term='object pascal'/><category term='Eiffel'/><category term='SOAP'/><category term='C#'/><category term='Sun'/><category term='Jenkins'/><category term='SEO'/><category term='ehcache'/><category term='Maven'/><category term='inciclopedia'/><category term='play'/><category term='jboss'/><category term='mvnrepository'/><category term='Patterns'/><category term='JDO'/><category term='Opa'/><category term='Dart'/><title type='text'>Emanuel Goette, alias Crespo</title><subtitle type='html'>Cambiaríamos el mundo pero no tenemos el código fuente.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default?start-index=101&amp;max-results=100'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>395</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-8254684980281825822</id><published>2012-01-27T17:57:00.000-03:00</published><updated>2012-01-27T17:59:53.005-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='play'/><title type='text'>Con Play framework desarrollar aplicaciones web con Java y Scala... ¡vuelve a ser divertido!</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-sg1HLoHKois/TyMPW3BnJMI/AAAAAAAAAqk/tvVEroIy58w/s1600/play.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-sg1HLoHKois/TyMPW3BnJMI/AAAAAAAAAqk/tvVEroIy58w/s1600/play.jpg" /&gt;&lt;/a&gt;Con Play framework desarrollar aplicaciones web con Java y Scala... ¡vuelve a ser divertido! es el titulo de la web en español de play; si!&lt;br /&gt;&lt;br /&gt;Los usuarios de play decidieron traducir toda la&amp;nbsp;documentación&amp;nbsp;es español y colgarla en la web.&lt;br /&gt;&lt;br /&gt;Dejo los links:&lt;br /&gt;&lt;a href="http://playdoces.appspot.com/"&gt;http://playdoces.appspot.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://playdoces-opensas.rhcloud.com/"&gt;http://playdoces-opensas.rhcloud.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-8254684980281825822?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/8254684980281825822/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/con-play-framework-desarrollar.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8254684980281825822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8254684980281825822'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/con-play-framework-desarrollar.html' title='Con Play framework desarrollar aplicaciones web con Java y Scala... ¡vuelve a ser divertido!'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-sg1HLoHKois/TyMPW3BnJMI/AAAAAAAAAqk/tvVEroIy58w/s72-c/play.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5953209815552203791</id><published>2012-01-27T00:13:00.000-03:00</published><updated>2012-01-27T00:15:15.860-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Curso de HTML 5</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-9dHXCk0BJUI/TyIV2c6BhQI/AAAAAAAAAqc/rK2lPHhMqvw/s1600/images.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-9dHXCk0BJUI/TyIV2c6BhQI/AAAAAAAAAqc/rK2lPHhMqvw/s1600/images.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;La gente de msdn ( del Inglés: Microsoft Developer Network ) ha realizado unos cursos de html que se pueden tomar de forma gratuita, parecen estar buenos.&lt;br /&gt;&lt;br /&gt;Dejo el link:&amp;nbsp;&lt;a href="http://msdn.microsoft.com/es-es/ie/hh749020"&gt;http://msdn.microsoft.com/es-es/ie/hh749020&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5953209815552203791?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5953209815552203791/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/curso-de-html-5.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5953209815552203791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5953209815552203791'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/curso-de-html-5.html' title='Curso de HTML 5'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-9dHXCk0BJUI/TyIV2c6BhQI/AAAAAAAAAqc/rK2lPHhMqvw/s72-c/images.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-6004332838254483943</id><published>2012-01-22T15:28:00.004-03:00</published><updated>2012-01-22T15:29:29.392-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Hibernate 4!!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-2eZ8CE0ym90/TxxVKZ-1iuI/AAAAAAAAAqM/K5gFnZAZks4/s1600/hibernate.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://2.bp.blogspot.com/-2eZ8CE0ym90/TxxVKZ-1iuI/AAAAAAAAAqM/K5gFnZAZks4/s320/hibernate.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Jboss libero la versión número 4 de Hibernate entre las características nuevas podemos nombrar: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mejor logging con soporte a i18n y codigo de mensajes&lt;/li&gt;&lt;li&gt;Preparan el soporte a OSGI&lt;/li&gt;&lt;li&gt;Soporta Multitenancy&lt;/li&gt;&lt;li&gt;Remueve código deprecado&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Multitenancy es cuando un componente de software corre en un servidor pero sirve a  múltiples clientes.  &lt;br /&gt;&lt;br /&gt;Dejo la entrada en el pom para el que usa maven:&lt;br /&gt;&lt;pre class="xml" name="code"&gt;  &lt;br /&gt;  &lt;dependency&gt;&lt;br /&gt; &lt;groupid&gt;org.hibernate&lt;/groupid&gt;&lt;br /&gt; &lt;artifactid&gt;hibernate-core&lt;/artifactid&gt;&lt;br /&gt; &lt;version&gt;4.0.1.Final&lt;/version&gt;&lt;br /&gt;  &lt;/dependency&gt;&lt;br /&gt;            &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;a href="http://www.infoq.com/news/2012/01/hibernate-4-released"&gt;http://www.infoq.com/news/2012/01/hibernate-4-released&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.hibernate.org/downloads"&gt;http://www.hibernate.org/downloads&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-6004332838254483943?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/6004332838254483943/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/hibernate-4.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6004332838254483943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6004332838254483943'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/hibernate-4.html' title='Hibernate 4!!'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-2eZ8CE0ym90/TxxVKZ-1iuI/AAAAAAAAAqM/K5gFnZAZks4/s72-c/hibernate.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-8062875059492143920</id><published>2012-01-22T11:19:00.002-03:00</published><updated>2012-01-22T11:19:43.687-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Tutorial de Java 7</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-aLtdvWaparI/Txwa4ESCjTI/AAAAAAAAAqE/4eLQZD4hplI/s1600/java_duke_7.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-aLtdvWaparI/Txwa4ESCjTI/AAAAAAAAAqE/4eLQZD4hplI/s1600/java_duke_7.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Han publicado un tutorial de java 7, es un&amp;nbsp;tutorial&amp;nbsp;basado ejemplos,&amp;nbsp;fácil&amp;nbsp;de leer y entretenido. Ideal para el verano:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javacodegeeks.com/2012/01/java-7-project-coin-in-code-examples.html"&gt;http://www.javacodegeeks.com/2012/01/java-7-project-coin-in-code-examples.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-8062875059492143920?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/8062875059492143920/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/tutorial-de-java-7.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8062875059492143920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8062875059492143920'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/tutorial-de-java-7.html' title='Tutorial de Java 7'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-aLtdvWaparI/Txwa4ESCjTI/AAAAAAAAAqE/4eLQZD4hplI/s72-c/java_duke_7.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5529173978116906746</id><published>2012-01-15T14:37:00.000-03:00</published><updated>2012-01-15T14:37:17.976-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache Hadoop'/><title type='text'>Más de Hadoop!!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-wNBixUVPjRs/TxMOSHdr72I/AAAAAAAAAps/KdFrdDnCrVw/s1600/hadoop%252Belephant_rgb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="93" src="http://3.bp.blogspot.com/-wNBixUVPjRs/TxMOSHdr72I/AAAAAAAAAps/KdFrdDnCrVw/s400/hadoop%252Belephant_rgb.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Sigo leyendo más de Hadoop un framework que ya estuvimos hablando: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://emanuelpeg.blogspot.com/2009/10/apache-hadoop-es-un-proyecto-java-de.html"&gt;http://emanuelpeg.blogspot.com/2009/10/apache-hadoop-es-un-proyecto-java-de.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://emanuelpeg.blogspot.com/2009/10/hadoop-hbase.html"&gt;http://emanuelpeg.blogspot.com/2009/10/hadoop-hbase.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El proyecto comenzo como funcionalidad de Nutch pero rapidamente se convirtio en un proyecto aparte; basado en Google GFS y MapReduce. Iniciado por Doug Cutting.&lt;br /&gt;&lt;br /&gt;Apache Hadoop es un framework para computación distribuida y persistencia distribuida el cual tiene las siguientes&amp;nbsp;características:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Permite montas fácilmente y de manera fiable clusters con multitud de nodos&lt;/li&gt;&lt;li&gt;Implementa Map/Reduce y sistema de archivos distribuido (HDFS)&lt;/li&gt;&lt;li&gt;y es Open Source!!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-vBYmHrDgwt8/TxMOdyzL-II/AAAAAAAAAp8/i7ykW5KWGWk/s1600/mapreduce-logo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-vBYmHrDgwt8/TxMOdyzL-II/AAAAAAAAAp8/i7ykW5KWGWk/s1600/mapreduce-logo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Buenísimo pero que es MapReduce? Es un modelo de programación aplicable a problemas en los que la solución de una subparte no sea dependiente de las soluciones de las demás subpartes. Es un estilo "divide y vencerás"; se divide el problema e subproblemas independientes y se soluciona cada uno de forma independiente.  El MapReduce  de hadoop tiene una arquitectura maestro/esclavo. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Un único maestro (JobTracker): Responsable de la gestión de tareas asignadas a esclavos, las monitoriza y se encarga de re-ejecutarlas si han fallado.&lt;/li&gt;&lt;li&gt;N esclavos (TaskTracker) : Ejecutan la tarea asignada.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;En principio pensado para Java, pero con Hadoop Pipes para C++ y se esta implementando Hadoop Streaming para el resto de los lenguajes. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-K5PTbJe6AnY/TxMOSjMO6hI/AAAAAAAAAp0/qsqgHaYB2UM/s1600/hdfs-logo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-K5PTbJe6AnY/TxMOSjMO6hI/AAAAAAAAAp0/qsqgHaYB2UM/s1600/hdfs-logo.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;HDFS: Hadoop Distributed File System. Es el framework encargado de simular un file system como si estuviera en un equipo pero este esta distribuido.&lt;br /&gt;&lt;br /&gt;HDFS tiene una arquitectura maestro/esclavo, hay un maestro que tiene la responsabilidad de administrar y nodos que se guardan los archivos. Existen estrategias para recuperar el maestro, para eliminar el punto de fallo. Todos los protocolos que usa se implementan sobre TCP/IP.&lt;br /&gt;&lt;br /&gt;Además cuenta con una serie de comandos que permiten utilizarlo:&lt;br /&gt;&lt;br /&gt;get: Copia a local el archivo de HDFS&lt;br /&gt;&lt;br /&gt;put: Copia desde local múltiples ficheros HDFS&lt;br /&gt;&lt;br /&gt;strep: Cambia el factor de replicación&lt;br /&gt;&lt;br /&gt;Comandos típicos: ls, mkdir, cp, cat, etc... &lt;br /&gt;&lt;br /&gt;Bueno este fue un pequeño resumen sobre un gran proyecto.&lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;a href="http://hadoop.apache.org/"&gt;http://hadoop.apache.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hadoop.apache.org/hdfs/"&gt;http://hadoop.apache.org/hdfs/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hadoop.apache.org/mapreduce/"&gt;http://hadoop.apache.org/mapreduce/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5529173978116906746?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5529173978116906746/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/mas-de-hadoop.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5529173978116906746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5529173978116906746'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/mas-de-hadoop.html' title='Más de Hadoop!!'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-wNBixUVPjRs/TxMOSHdr72I/AAAAAAAAAps/KdFrdDnCrVw/s72-c/hadoop%252Belephant_rgb.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-1157833454847114407</id><published>2012-01-14T13:39:00.004-03:00</published><updated>2012-01-14T13:39:50.410-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ceylon'/><title type='text'>Post de Ceylon</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-uaXiGefI2uU/TxGvtt2BrmI/AAAAAAAAApg/zpusFXz26kY/s1600/ceylon_icon_256px.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-uaXiGefI2uU/TxGvtt2BrmI/AAAAAAAAApg/zpusFXz26kY/s200/ceylon_icon_256px.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;En Java Mexico&amp;nbsp;están&amp;nbsp;publicado unos post acerca de Ceylon el lenguaje de Red Hat diseñado por Gavin King (el creador de hibernate).&lt;br /&gt;&lt;br /&gt;Dejo el link:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javamexico.org/categorias/lenguajes_jvm/ceylon"&gt;http://www.javamexico.org/categorias/lenguajes_jvm/ceylon&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-1157833454847114407?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/1157833454847114407/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/post-de-ceylon.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1157833454847114407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1157833454847114407'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/post-de-ceylon.html' title='Post de Ceylon'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-uaXiGefI2uU/TxGvtt2BrmI/AAAAAAAAApg/zpusFXz26kY/s72-c/ceylon_icon_256px.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5261886523425601062</id><published>2012-01-12T00:28:00.000-03:00</published><updated>2012-01-12T00:28:07.248-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache Hadoop'/><title type='text'>Understanding Big Data</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1_hCnF-13xg/Tw5TG-50ccI/AAAAAAAAApY/yMMZjt78X7E/s1600/sw-infomgt_reg-thumb_en_US_PKG-bdebook1_500016891_en_US.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="152" src="http://2.bp.blogspot.com/-1_hCnF-13xg/Tw5TG-50ccI/AAAAAAAAApY/yMMZjt78X7E/s200/sw-infomgt_reg-thumb_en_US_PKG-bdebook1_500016891_en_US.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;IBM nos regala un libro sobre Big Data; por Big Data Nos referimos &lt;span class="Apple-style-span" style="line-height: 21px;"&gt;al tratamiento y análisis de enormes repositorios de datos, tan desproporcionadamente grandes que resulta imposible tratarlos con las herramientas de bases de datos y analíticas convencionales. La tendencia se encuadra en un entorno que no nos suena para nada extraño: la proliferación de páginas web, aplicaciones de imagen y vídeo, redes sociales, dispositivos móviles, apps, sensores, internet de las cosas, etc.&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;El libro es una introducción al tratamiento de estos datos y hace una introducción a Apache Hadoop&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Dejo el link:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: verdana, helvetica, sans-serif; font-size: 16px;"&gt;&lt;a href="https://www14.software.ibm.com/webapp/iwm/web/signup.do?source=sw-infomgt&amp;amp;S_PKG=500016891"&gt;https://www14.software.ibm.com/webapp/iwm/web/signup.do?source=sw-infomgt&amp;amp;S_PKG=500016891&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: verdana, helvetica, sans-serif; font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5261886523425601062?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5261886523425601062/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/understanding-big-data.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5261886523425601062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5261886523425601062'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/understanding-big-data.html' title='Understanding Big Data'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-1_hCnF-13xg/Tw5TG-50ccI/AAAAAAAAApY/yMMZjt78X7E/s72-c/sw-infomgt_reg-thumb_en_US_PKG-bdebook1_500016891_en_US.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5613317311844285257</id><published>2012-01-10T23:58:00.002-03:00</published><updated>2012-01-10T23:58:38.140-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Infografía sobre Ruby, Python y PHP</title><content type='html'>&lt;br /&gt;Dejo una infografía sobre Ruby, Python y PHP muy interesante.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.udemy.com/blog/modern-language-wars/"&gt;&lt;img alt="programming languages, infographic" src="http://www.udemy.com/blog/wp-content/uploads/2012/01/PROGRAMMING-LANGUAGE-3-620x3450.png" title="programming languages, infographic" /&gt;&lt;/a&gt;&lt;br /&gt;Source: &lt;a href="http://blog.udemy.com/"&gt;Udemy Blog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5613317311844285257?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5613317311844285257/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/infografia-sobre-ruby-python-y-php.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5613317311844285257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5613317311844285257'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/infografia-sobre-ruby-python-y-php.html' title='Infografía sobre Ruby, Python y PHP'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-3510210383108065566</id><published>2012-01-07T13:10:00.003-03:00</published><updated>2012-01-07T13:13:47.952-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala'/><category scheme='http://www.blogger.com/atom/ns#' term='JDO'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Querydsl'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring Data'/><category scheme='http://www.blogger.com/atom/ns#' term='MongoDb'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='JPA'/><title type='text'>Escribiendo sql más fácil con Querydsl</title><content type='html'>&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-YwZfhMYxEJw/TwhuSmuuacI/AAAAAAAAApQ/9Tdv5BTrL1Q/s1600/querydsl-logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://1.bp.blogspot.com/-YwZfhMYxEJw/TwhuSmuuacI/AAAAAAAAApQ/9Tdv5BTrL1Q/s320/querydsl-logo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;No les pasa que cuando escriben hql les da miedo de equivocarse en el nombre de alguna propiedad o algo que pueda hacer explotar la aplicación? Cuando escriben consultas con criterios de hibernate, no les pasa que no saben como se deben hacer ciertas cosas o tienen que mirar el manual? No les parece poco intuitiva la API de Critera de hibernate?&lt;br /&gt;&lt;br /&gt;Si a todo contestaste que si Querydsl es para vos. Querydsl es un framework el cual permite construir consultas type-safe muy similares a Sql para multiples formas de acceder a datos JPA, JDO y SQL. &lt;br /&gt;&lt;br /&gt;En lugar de&amp;nbsp;escribir consultas&amp;nbsp;en texto&amp;nbsp; lo escribimos con este dsl de forma fluida y segura. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-U87yBO27cvw/TwhuR3_nYII/AAAAAAAAApI/tK7Osh4VcfY/s1600/querydsl.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="141" src="http://4.bp.blogspot.com/-U87yBO27cvw/TwhuR3_nYII/AAAAAAAAApI/tK7Osh4VcfY/s200/querydsl.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Que ventajas tiene usar Querydsl?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nos puede ayudar la IDE a escribir nuestras consultas, porque son propiedades.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;Contamos con la seguridad por tipo&amp;nbsp;&lt;/li&gt;&lt;li&gt;Si refactorisamos nos permite refactorisar la consulta y si se rompe alguna consulta no compila.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Es más&amp;nbsp;fácil&amp;nbsp;escribir consultas complejas&amp;nbsp;&lt;/li&gt;&lt;li&gt;Podemos escribir SQL o usarlo con Hibernate y también con MongoDB&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Veamos un ejemplo de consulta:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;query.from(customer)&lt;br /&gt;    .where(customer.firstName.eq("Bob").and(customer.lastName.eq("Wilson")));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;query.from(cat)&lt;br /&gt;    .innerJoin(cat.mate, mate)&lt;br /&gt;    .leftJoin(cat.kittens, kitten)&lt;br /&gt;    .list(cat);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;query.from(cat)&lt;br /&gt;    .leftJoin(cat.kittens, kitten)&lt;br /&gt;    .on(kitten.bodyWeight.gt(10.0))&lt;br /&gt;    .list(cat);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;query.from(customer)&lt;br /&gt;    .orderBy(customer.lastName.asc(), customer.firstName.desc())&lt;br /&gt;    .list(customer);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Se integra con Hibernate, maven, y también con Spring Data JPA. Además lo podemos usar con MongoDB y también con Scala.&lt;br /&gt;&lt;br /&gt;Es de licencia Apache 2. &lt;br /&gt;&lt;br /&gt;Dejo un video: &lt;br /&gt;&lt;br /&gt;&lt;object height="360" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/WmZAePZpExo&amp;hl=en_US&amp;feature=player_embedded&amp;version=3"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/WmZAePZpExo&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="420" height="315"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;a href="http://www.querydsl.com/"&gt;http://www.querydsl.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.querydsl.com/documentation"&gt;http://www.querydsl.com/documentation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.mysema.com/2010/07/querying-hibernate-with-querydsl.html"&gt;http://blog.mysema.com/2010/07/querying-hibernate-with-querydsl.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.mysema.com/2010/11/mongodb-with-querydsl.html"&gt;http://blog.mysema.com/2010/11/mongodb-with-querydsl.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-3510210383108065566?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/3510210383108065566/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/escribiendo-sql-mas-facil-con-querydsl.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3510210383108065566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3510210383108065566'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/escribiendo-sql-mas-facil-con-querydsl.html' title='Escribiendo sql más fácil con Querydsl'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-YwZfhMYxEJw/TwhuSmuuacI/AAAAAAAAApQ/9Tdv5BTrL1Q/s72-c/querydsl-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-4441262615071474208</id><published>2012-01-07T12:12:00.003-03:00</published><updated>2012-01-07T12:12:27.735-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>Spring by example</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5YgaVZeJTpU/TwhgreVi_xI/AAAAAAAAApA/XqC2Ry_uC9M/s1600/spring-framework.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="158" src="http://4.bp.blogspot.com/-5YgaVZeJTpU/TwhgreVi_xI/AAAAAAAAApA/XqC2Ry_uC9M/s400/spring-framework.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Quiero compartir una pagina que&amp;nbsp;explica&amp;nbsp;como configurar Spring mediante ejemplos. Si bien esta basada en Spring 2, de a poco&amp;nbsp;están&amp;nbsp;escribiendo ejemplos de spring 3.&lt;br /&gt;&lt;br /&gt;Dejo el link:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://springbyexample.org/"&gt;http://springbyexample.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-4441262615071474208?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/4441262615071474208/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/spring-by-example.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/4441262615071474208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/4441262615071474208'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/spring-by-example.html' title='Spring by example'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-5YgaVZeJTpU/TwhgreVi_xI/AAAAAAAAApA/XqC2Ry_uC9M/s72-c/spring-framework.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5288136931002335637</id><published>2012-01-06T00:05:00.000-03:00</published><updated>2012-01-06T00:05:14.684-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala'/><category scheme='http://www.blogger.com/atom/ns#' term='Chapel'/><category scheme='http://www.blogger.com/atom/ns#' term='Zimbu'/><category scheme='http://www.blogger.com/atom/ns#' term='F#'/><category scheme='http://www.blogger.com/atom/ns#' term='X10'/><category scheme='http://www.blogger.com/atom/ns#' term='Go'/><category scheme='http://www.blogger.com/atom/ns#' term='haXe'/><category scheme='http://www.blogger.com/atom/ns#' term='Fantom'/><category scheme='http://www.blogger.com/atom/ns#' term='Ceylon'/><category scheme='http://www.blogger.com/atom/ns#' term='Opa'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='Dart'/><title type='text'>10 lenguajes que podrían influir en el futuro</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-0M3vniYYOtc/TwZkgoEyN4I/AAAAAAAAAo4/Wm2ccrGOzKg/s1600/programming-languages-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="174" src="http://4.bp.blogspot.com/-0M3vniYYOtc/TwZkgoEyN4I/AAAAAAAAAo4/Wm2ccrGOzKg/s320/programming-languages-1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Estuve leyendo un articulo sobre 10 lenguajes que&amp;nbsp;podrían&amp;nbsp;influir en el futuro. Los lenguajes son: Dart, Ceylon, Go, F#, Opa, Fantom, Zimbu, X10, haXe, chapel.&lt;br /&gt;&lt;br /&gt;La verdad es que a Opa, Zimbu, X10, haXe, chapel no los conozco; pero por lo que veo creo que los demás lenguajes no dejan muchas cosas nuevas. Me parece que el que falta es Scala que es un gran lenguaje la innovación es tener lo bueno de muchos lenguajes. Erlang otro que falta.&lt;br /&gt;&lt;br /&gt;Cual piensa que falta?&lt;br /&gt;&lt;br /&gt;Dejo el link:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoworld.com/d/application-development/10-programming-languages-could-shake-it-181548"&gt;http://www.infoworld.com/d/application-development/10-programming-languages-could-shake-it-181548&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5288136931002335637?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5288136931002335637/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/10-lenguajes-que-podrian-influir-en-el.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5288136931002335637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5288136931002335637'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/10-lenguajes-que-podrian-influir-en-el.html' title='10 lenguajes que podrían influir en el futuro'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-0M3vniYYOtc/TwZkgoEyN4I/AAAAAAAAAo4/Wm2ccrGOzKg/s72-c/programming-languages-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-392291244114987300</id><published>2012-01-05T23:43:00.000-03:00</published><updated>2012-01-05T23:43:11.883-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Recursos sobre HTML 5</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-q5JQuDfKimw/TwZfqFpxtKI/AAAAAAAAAos/k9k9Fezir9A/s1600/html5-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="http://3.bp.blogspot.com/-q5JQuDfKimw/TwZfqFpxtKI/AAAAAAAAAos/k9k9Fezir9A/s320/html5-logo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;SourceForge&amp;nbsp;abrió&amp;nbsp;una pagina para compartir con nosotros una buena cantidad de recursos sobre HTML 5.&lt;br /&gt;&lt;br /&gt;Dejo el link:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://elcentrohtml5.sourceforge.net/"&gt;http://elcentrohtml5.sourceforge.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-392291244114987300?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/392291244114987300/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/recursos-sobre-html-5.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/392291244114987300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/392291244114987300'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/recursos-sobre-html-5.html' title='Recursos sobre HTML 5'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-q5JQuDfKimw/TwZfqFpxtKI/AAAAAAAAAos/k9k9Fezir9A/s72-c/html5-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-1283267760765570575</id><published>2012-01-04T23:28:00.000-03:00</published><updated>2012-01-04T23:28:50.424-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Source'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Rusia ahorrará 55.300 millones de dólares en software gracias a GNU/Linux</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-b-s-OD5xGhk/TwUKnoaXoFI/AAAAAAAAAog/EaN-R0kDsgU/s1600/12446298_efac77add9_o.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" src="http://1.bp.blogspot.com/-b-s-OD5xGhk/TwUKnoaXoFI/AAAAAAAAAog/EaN-R0kDsgU/s320/12446298_efac77add9_o.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;La necesidad de afianzar una industria informática nacional, escapar de la dependencia tecnológica de la infraestructura informática pública, especialmente de los sistemas de Microsoft va a permitir ahorros milmillonarios a las arcas públicas.&lt;br /&gt;&lt;br /&gt;Según el analista Román Dórojov en principio se han previsto 4 distribuciones principales cuyo desarrollo principal será a cargo de la empresa PingWin Software. El derroche y la insostenibilidad de la dependencia tecnológica en el área informática fue denunciado por el Programa Estatal “Comunidad de Información” aprobado en octubre de 2010 y concebido para el período 2011-2020. El plan va cumpliendo plazos y el prototipo de la plataforma del software nacional (PSN), que sustituirá a Windows en los ordenadores de las Administraciones Púlicas y escuelas de enseñanza media obligatoria, ya ha sido aprobado por el Ministerio de Comunicación. Las inversiones durante los primeros dos años de funcionamiento del programa en empresas locales alcanzará los 490 millones de rublos.&lt;br /&gt;&lt;br /&gt;Argentina y todos los países deberías seguir por el mismo camino!!&lt;br /&gt;&lt;br /&gt;Dejo la fuente:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hispalinux.es/node/747"&gt;http://www.hispalinux.es/node/747&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-1283267760765570575?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/1283267760765570575/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/rusia-ahorrara-55300-millones-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1283267760765570575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1283267760765570575'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/rusia-ahorrara-55300-millones-de.html' title='Rusia ahorrará 55.300 millones de dólares en software gracias a GNU/Linux'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-b-s-OD5xGhk/TwUKnoaXoFI/AAAAAAAAAog/EaN-R0kDsgU/s72-c/12446298_efac77add9_o.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-3935978223382736878</id><published>2012-01-04T00:16:00.000-03:00</published><updated>2012-01-04T00:16:37.860-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='neo4j'/><title type='text'>Bio4j</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-vUsHdsBV90c/TwPERmB8k0I/AAAAAAAAAoU/fE3LztVgxog/s1600/Bio4j.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="103" src="http://4.bp.blogspot.com/-vUsHdsBV90c/TwPERmB8k0I/AAAAAAAAAoU/fE3LztVgxog/s400/Bio4j.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Bio4j seria como grafo bioinformatico basado en base de dato que incluye la mayor cantidad de datos de UniProt KB(SwissProt + Trembl), Gene Ontology (GO), UniRef (50,90,100), RefSeq, and NCBI taxonomy. (Manuscript in preparation). La verdad es que esto es chino&amp;nbsp;básico&amp;nbsp;para mi pero creo que mi hermano que es bioinformatico le va interesar.&lt;br /&gt;&lt;br /&gt;Bio4j&amp;nbsp; usa neo4j para representar la información.&lt;br /&gt;&lt;br /&gt;Lo interesante es que utiliza licencia AGPL 3 .&lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bio4j.com/"&gt;http://www.bio4j.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.bio4j.com/"&gt;http://blog.bio4j.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-3935978223382736878?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/3935978223382736878/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/bio4j.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3935978223382736878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3935978223382736878'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/bio4j.html' title='Bio4j'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-vUsHdsBV90c/TwPERmB8k0I/AAAAAAAAAoU/fE3LztVgxog/s72-c/Bio4j.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5822788349787391476</id><published>2012-01-03T23:36:00.002-03:00</published><updated>2012-01-04T23:14:42.410-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring Data'/><category scheme='http://www.blogger.com/atom/ns#' term='neo4j'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>Spring Data Neo4j</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-oJbDoqFcRSc/TwO51YcBXTI/AAAAAAAAAn8/5PTZ2XRePzY/s1600/springdataNeo4j-logo-cmyk-11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="98" src="http://4.bp.blogspot.com/-oJbDoqFcRSc/TwO51YcBXTI/AAAAAAAAAn8/5PTZ2XRePzY/s400/springdataNeo4j-logo-cmyk-11.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Neo4j es una base de datos basada en grafos. De la cual ya hablamos: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://emanuelpeg.blogspot.com/2009/09/neo4j.html"&gt;http://emanuelpeg.blogspot.com/2009/09/neo4j.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Neo4j permite acceder a un nodo mediante una clave la cual contiene un valor. También tenemos una API para acceder a los datos y un lenguaje de consulta llamado Cypher. &lt;br /&gt;&lt;br /&gt;Una de las características de Neo4j es que es una base transaccional y por lo tanto soporta ACID. Esto es bastante inusual para una base de datos NoSQL.&lt;br /&gt;&lt;br /&gt;Podemos agregar a un estro proyecto Neo4j (si utilizamos maven) con la siguiente entrada en el pom: &lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;  &lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;org.neo4j&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;neo4j&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;1.5&lt;/version&gt;&lt;br /&gt;  &lt;/dependency&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Trabajar con la Api de Neo4j puede ser un trabajo duro por lo tanto Spring framework nos provee un modulo que nos permite trabajar con Neo4j de forma más fácil y elegante.&lt;br /&gt;&lt;br /&gt;Primero agregamos la siguiente entrada al pom:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;dependency&gt; &lt;br /&gt;&lt;groupid&gt;org.springframework.data&lt;/groupid&gt; &lt;br /&gt;&lt;artifactid&gt;spring-data-neo4j&lt;/artifactid&gt; &lt;br /&gt;&lt;version&gt;2.0.0.RC1&lt;/version&gt; &lt;br /&gt;&lt;/dependency&gt; &lt;br /&gt;&lt;/pre&gt;Y ahora vamos a agregar la siguiente entrada al applicationContext.xml :&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;beans ...="" xmlns:neo4j="http://www.springframework.org/schema/data/neo4j" xmlns="http://www.springframework.org/schema/beans" xsi:schemalocation="... http://www.springframework.org/schema/data/neo4j &lt;br /&gt;http://www.springframework.org/schema/data/neo4j/spring-neo4j-2.0.xsd"&gt; &lt;br /&gt;... &lt;br /&gt;&lt;neo4j:config storedirectory="data/graph.db"&gt; &lt;br /&gt;... &lt;br /&gt;&lt;/neo4j:config&gt;&lt;/beans&gt; &lt;br /&gt;&lt;/pre&gt;La idea es hacer una aplicación que mantenga la relación de amistad entre personas. Primero creamos el proyecto con maven: &lt;br /&gt;&lt;br /&gt;mvn archetype:generate&lt;br /&gt;&lt;br /&gt;Luego configuramos como un proyecto normalito de maven. &lt;br /&gt;&lt;br /&gt;Y el pom debería tener las siguientes dependencias: &lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;&lt;br /&gt; &lt;modelversion&gt;4.0.0&lt;/modelversion&gt;&lt;br /&gt;&lt;br /&gt; &lt;groupid&gt;org.assembly&lt;/groupid&gt;&lt;br /&gt; &lt;artifactid&gt;friend&lt;/artifactid&gt;&lt;br /&gt; &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&lt;br /&gt; &lt;packaging&gt;jar&lt;/packaging&gt;&lt;br /&gt;&lt;br /&gt; &lt;name&gt;friend&lt;/name&gt;&lt;br /&gt; &lt;url&gt;http://maven.apache.org&lt;/url&gt;&lt;br /&gt;&lt;br /&gt; &lt;properties&gt;&lt;br /&gt;  &lt;project.build.sourceencoding&gt;UTF-8&lt;/project.build.sourceencoding&gt;&lt;br /&gt;  &lt;spring.version&gt;3.0.6.RELEASE&lt;/spring.version&gt;&lt;br /&gt; &lt;/properties&gt;&lt;br /&gt;&lt;br /&gt; &lt;build&gt;&lt;br /&gt;  &lt;plugins&gt;&lt;br /&gt;   &lt;plugin&gt;&lt;br /&gt;    &lt;artifactid&gt;maven-compiler-plugin&lt;/artifactid&gt;&lt;br /&gt;    &lt;configuration&gt;&lt;br /&gt;     &lt;source&gt;&lt;/source&gt;1.6&lt;br /&gt;     &lt;target&gt;1.6&lt;/target&gt;&lt;br /&gt;    &lt;/configuration&gt;&lt;br /&gt;   &lt;/plugin&gt;&lt;br /&gt;   &lt;plugin&gt;&lt;br /&gt;    &lt;groupid&gt;org.apache.maven.plugins&lt;/groupid&gt;&lt;br /&gt;    &lt;artifactid&gt;maven-eclipse-plugin&lt;/artifactid&gt;&lt;br /&gt;    &lt;version&gt;2.7&lt;/version&gt;&lt;br /&gt;    &lt;configuration&gt;&lt;br /&gt;     &lt;wtpversion&gt;2.0&lt;/wtpversion&gt;&lt;br /&gt;     &lt;downloadsources&gt;true&lt;/downloadsources&gt;&lt;br /&gt;    &lt;/configuration&gt;&lt;br /&gt;   &lt;/plugin&gt;&lt;br /&gt;   &lt;plugin&gt;&lt;br /&gt;    &lt;groupid&gt;org.apache.maven.plugins&lt;/groupid&gt;&lt;br /&gt;    &lt;artifactid&gt;maven-javadoc-plugin&lt;/artifactid&gt;&lt;br /&gt;   &lt;/plugin&gt;&lt;br /&gt;   &lt;plugin&gt;&lt;br /&gt;    &lt;groupid&gt;org.apache.maven.plugins&lt;/groupid&gt;&lt;br /&gt;    &lt;artifactid&gt;maven-project-info-reports-plugin&lt;/artifactid&gt;&lt;br /&gt;   &lt;/plugin&gt;&lt;br /&gt;  &lt;/plugins&gt;&lt;br /&gt; &lt;/build&gt;&lt;br /&gt;&lt;br /&gt; &lt;repositories&gt;&lt;br /&gt;  &lt;repository&gt;&lt;br /&gt;   &lt;id&gt;spring-snapshot&lt;/id&gt;&lt;br /&gt;   &lt;name&gt;Spring Maven SNAPSHOT Repository&lt;/name&gt;&lt;br /&gt;   &lt;url&gt;http://s3.amazonaws.com/maven.springframework.org/snapshot&lt;/url&gt;&lt;br /&gt;  &lt;/repository&gt;&lt;br /&gt; &lt;/repositories&gt;&lt;br /&gt;&lt;br /&gt; &lt;dependencies&gt;&lt;br /&gt;&lt;br /&gt;  &lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;org.springframework.data&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;spring-data-neo4j&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;2.0.0.BUILD-SNAPSHOT&lt;/version&gt;&lt;br /&gt;  &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;  &lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;org.springframework&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;spring-core&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;${spring.version}&lt;/version&gt;&lt;br /&gt;  &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;  &lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;org.springframework&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;spring-context&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;${spring.version}&lt;/version&gt;&lt;br /&gt;  &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;  &lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;org.springframework&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;spring-aop&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;${spring.version}&lt;/version&gt;&lt;br /&gt;  &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;  &lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;org.springframework&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;spring-aspects&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;${spring.version}&lt;/version&gt;&lt;br /&gt;  &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;  &lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;org.springframework&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;spring-tx&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;${spring.version}&lt;/version&gt;&lt;br /&gt;  &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;  &lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;org.neo4j&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;neo4j&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;1.5&lt;/version&gt;&lt;br /&gt;  &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;  &lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;junit&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;junit&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;4.10&lt;/version&gt;&lt;br /&gt;   &lt;scope&gt;test&lt;/scope&gt;&lt;br /&gt;  &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;  &lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;org.springframework&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;spring-test&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;${spring.version}&lt;/version&gt;&lt;br /&gt;   &lt;scope&gt;test&lt;/scope&gt;&lt;br /&gt;  &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;/dependencies&gt;&lt;br /&gt;&lt;/project&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Luego hacen mvn clean install y luego eclipse:eclipse.&lt;br /&gt;&lt;br /&gt;Luego importamos el proyecto a eclipse, ahora veamos la clase persona:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt; * &lt;br /&gt; */&lt;br /&gt;package org.assembly.model;&lt;br /&gt;&lt;br /&gt;import java.util.HashSet;&lt;br /&gt;import java.util.Set;&lt;br /&gt;&lt;br /&gt;import org.springframework.data.neo4j.annotation.GraphId;&lt;br /&gt;import org.springframework.data.neo4j.annotation.Indexed;&lt;br /&gt;import org.springframework.data.neo4j.annotation.NodeEntity;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * @author emanuel&lt;br /&gt; *&lt;br /&gt; */&lt;br /&gt;@NodeEntity&lt;br /&gt;public class Person {&lt;br /&gt; &lt;br /&gt; @GraphId&lt;br /&gt; private Long id;&lt;br /&gt; &lt;br /&gt; @Indexed //nos permite buscar por ejemplo por nombre. 2 personas no deberian llamarse igual&lt;br /&gt; private String name;&lt;br /&gt; &lt;br /&gt; private String lastName;&lt;br /&gt; &lt;br /&gt; private Set&lt;person&gt; friends = new HashSet&lt;person&gt;();&lt;br /&gt;&lt;br /&gt; public Person() { }&lt;br /&gt; &lt;br /&gt; public Person(String name, String lastName) {&lt;br /&gt;  super();&lt;br /&gt;  this.name = name;&lt;br /&gt;  this.lastName = lastName;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public Person(String name, String lastName, HashSet&lt;person&gt; friends) {&lt;br /&gt;  super();&lt;br /&gt;  this.name = name;&lt;br /&gt;  this.lastName = lastName;&lt;br /&gt;  this.friends = friends;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void makeAFriend(Person friend) {&lt;br /&gt;  this.getFriends().add(friend);&lt;br /&gt;  friend.getFriends().add(this);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;//geters , seters, hashcode and equal&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Con esas anotaciones le decimos a spring cual es el id de nuestro nodo y que puede usar como indice para buscar. Ahora hagamos un dao: &lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;package org.assembly.dao;&lt;br /&gt;//La interfaz&lt;br /&gt;import org.assembly.model.Person;&lt;br /&gt;&lt;br /&gt;public interface PersonDAO {&lt;br /&gt; &lt;br /&gt; void save(Person person);&lt;br /&gt;&lt;br /&gt; Person get(Long id);&lt;br /&gt; &lt;br /&gt; Person findByName(String name);&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;package org.assembly.dao;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import org.assembly.model.Person;&lt;br /&gt;import org.springframework.beans.factory.annotation.Autowired;&lt;br /&gt;import org.springframework.data.neo4j.repository.GraphRepository;&lt;br /&gt;import org.springframework.data.neo4j.support.Neo4jTemplate;&lt;br /&gt;//La implementacion&lt;br /&gt;public class PersonDAOImpl implements PersonDAO {&lt;br /&gt; &lt;br /&gt; @Autowired&lt;br /&gt; private Neo4jTemplate template;&lt;br /&gt; &lt;br /&gt; public void setTemplate(Neo4jTemplate template) {&lt;br /&gt;  this.template = template;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public void save(Person person) {&lt;br /&gt;  this.template.save(person);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public Person get(Long id) {&lt;br /&gt;  return this.template.findOne(id, Person.class);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public Person findByName(String name) {&lt;br /&gt;  GraphRepository&lt;person&gt; movieRepository =&lt;br /&gt;    template.repositoryFor(Person.class);&lt;br /&gt;  &lt;br /&gt;  return movieRepository.findByPropertyValue("name", name);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Vamos a configurar el applicationContext.xml:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;beans xmlns:context="http://www.springframework.org/schema/context" xmlns:neo4j="http://www.springframework.org/schema/data/neo4j" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemalocation="&lt;br /&gt;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd&lt;br /&gt;http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd&lt;br /&gt;http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd&lt;br /&gt;http://www.springframework.org/schema/data/neo4j http://www.springframework.org/schema/data/neo4j/spring-neo4j-2.0.xsd"&gt;&lt;br /&gt;&lt;br /&gt; &lt;context:annotation-config&gt;&lt;br /&gt;&lt;br /&gt; &lt;context:component-scan base-package="org.assembly"&gt;&lt;br /&gt;  &lt;context:exclude-filter &lt;br /&gt;          expression="org.springframework.stereotype.Controller" &lt;br /&gt;          type="annotation"&gt;&lt;br /&gt;  &lt;/context:exclude-filter&gt;&lt;br /&gt; &lt;/context:component-scan&gt;&lt;br /&gt;&lt;br /&gt; &lt;tx:annotation-driven mode="proxy"&gt;&lt;br /&gt;&lt;br /&gt; &lt;neo4j:config storedirectory="data/graph.db"&gt;&lt;br /&gt;&lt;br /&gt; &lt;bean class="org.assembly.dao.PersonDAOImpl" id="dao.person"&gt;&lt;br /&gt;  &lt;property name="template" ref="neo4jTemplate"&gt;&lt;br /&gt;  &lt;/property&gt;&lt;br /&gt; &lt;/bean&gt;&lt;br /&gt;&lt;br /&gt;&lt;/neo4j:config&gt;&lt;/tx:annotation-driven&gt;&lt;/context:annotation-config&gt;&lt;/beans&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Vamos a probar todo con un test:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;package org.assembly.dao;&lt;br /&gt;&lt;br /&gt;import static org.junit.Assert.assertEquals;&lt;br /&gt;&lt;br /&gt;import javax.annotation.Resource;&lt;br /&gt;&lt;br /&gt;import org.assembly.model.Person;&lt;br /&gt;import org.junit.Test;&lt;br /&gt;import org.junit.runner.RunWith;&lt;br /&gt;import org.springframework.test.context.ContextConfiguration;&lt;br /&gt;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;&lt;br /&gt;import org.springframework.transaction.annotation.Transactional;&lt;br /&gt;&lt;br /&gt;@ContextConfiguration(locations = "classpath:applicationContext.xml")&lt;br /&gt;@RunWith(SpringJUnit4ClassRunner.class)&lt;br /&gt;public class PersonDAOTest {&lt;br /&gt;&lt;br /&gt; @Resource&lt;br /&gt; private PersonDAO dao;&lt;br /&gt; &lt;br /&gt; public void setDao(PersonDAO dao) {&lt;br /&gt;  this.dao = dao;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; @Test &lt;br /&gt; @Transactional&lt;br /&gt; public void save() {&lt;br /&gt;  Person person = new Person("Pablo", "Goette");&lt;br /&gt;  &lt;br /&gt;  dao.save(person);&lt;br /&gt;  &lt;br /&gt;  Person personSaved = dao.get(person.getId());&lt;br /&gt;  &lt;br /&gt;  assertEquals(person, personSaved);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; @Test &lt;br /&gt; @Transactional&lt;br /&gt; public void saveFriendly() {&lt;br /&gt;  Person person = new Person("Pablo", "Goette");&lt;br /&gt;  &lt;br /&gt;  person.getFriends().add(new Person("Mercedez","Benz"));&lt;br /&gt;  person.getFriends().add(new Person("Al","Colico"));&lt;br /&gt;  person.getFriends().add(new Person("Barry","Gota"));&lt;br /&gt;  person.getFriends().add(new Person("Mercedez","Benz"));&lt;br /&gt;  dao.save(person);&lt;br /&gt;  &lt;br /&gt;  Person personSaved = dao.get(person.getId());&lt;br /&gt;  &lt;br /&gt;  assertEquals(person, personSaved);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Test &lt;br /&gt; @Transactional&lt;br /&gt; public void findByName() {&lt;br /&gt;  Person person = new Person("Aquiles", "Canto");&lt;br /&gt;  &lt;br /&gt;  dao.save(person);&lt;br /&gt;  &lt;br /&gt;  Person personSaved = dao.findByName("Aquiles");&lt;br /&gt;  &lt;br /&gt;  assertEquals(person, personSaved);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Y listo, verán por ahí la carpeta data con la base de neo4j.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-m0fAtGGOVjg/TwO5_EIF1MI/AAAAAAAAAoI/jD7DyQlwo5Y/s1600/Pantallazo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="324" src="http://3.bp.blogspot.com/-m0fAtGGOVjg/TwO5_EIF1MI/AAAAAAAAAoI/jD7DyQlwo5Y/s640/Pantallazo.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Si todo salio bien los test terminaron exitosos. &lt;br /&gt;&lt;br /&gt;Dejo el repositorio subversion:&lt;br /&gt;svn checkout http://spring-neo4j.googlecode.com/svn/trunk/ spring-neo4j-read-only&lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.springsource.org/spring-data/neo4j"&gt;http://www.springsource.org/spring-data/neo4j&lt;/a&gt;&lt;br /&gt;&lt;a href="http://neo4j.org/"&gt;http://neo4j.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://video.neo4j.org/YbYN/webinar-introduction-to-spring-data-neo4j/"&gt;http://video.neo4j.org/YbYN/webinar-introduction-to-spring-data-neo4j/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://youtu.be/9qVs9vxx8lk"&gt;http://youtu.be/9qVs9vxx8lk&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/presentations/Introduction-to-Spring-Data-Neo4j"&gt;http://www.infoq.com/presentations/Introduction-to-Spring-Data-Neo4j&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Y dejo un video:&lt;br /&gt;&lt;br /&gt;&lt;iframe title="Neo4j Videography Video Player" width="640" height="360" src="http://video.neo4j.org/player/YbYN" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5822788349787391476?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5822788349787391476/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/spring-data-neo4j.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5822788349787391476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5822788349787391476'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/spring-data-neo4j.html' title='Spring Data Neo4j'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-oJbDoqFcRSc/TwO51YcBXTI/AAAAAAAAAn8/5PTZ2XRePzY/s72-c/springdataNeo4j-logo-cmyk-11.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-3731396649676312806</id><published>2012-01-02T22:18:00.002-03:00</published><updated>2012-01-02T22:18:38.489-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Libro de Javascript gratuito</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-H2-VUdUwxwA/TwJXTiPhNjI/AAAAAAAAAnw/pR3HXZwpfyA/s1600/ejs.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-H2-VUdUwxwA/TwJXTiPhNjI/AAAAAAAAAnw/pR3HXZwpfyA/s320/ejs.png" width="242" /&gt;&lt;/a&gt;Comparto un buen libro de javascript gratuito:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://eloquentjavascript.net/"&gt;http://eloquentjavascript.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Entre los comentarios se encuentra el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: tahoma, arial, sans-serif; font-style: italic; line-height: 24px;"&gt;A concise and balanced mix of principles and pragmatics. I loved the tutorial-style game-like program development. This book rekindled my earliest joys of programming. Plus, JavaScript!&lt;br /&gt;&lt;span style="font-style: normal;"&gt;—&lt;a href="http://brendaneich.com/" style="color: #223388; text-decoration: none;"&gt;Brendan Eich&lt;/a&gt;, the man who gave us JavaScript&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-3731396649676312806?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/3731396649676312806/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/libro-de-javascript-gratuito.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3731396649676312806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3731396649676312806'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/libro-de-javascript-gratuito.html' title='Libro de Javascript gratuito'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-H2-VUdUwxwA/TwJXTiPhNjI/AAAAAAAAAnw/pR3HXZwpfyA/s72-c/ejs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-7158127800949782176</id><published>2012-01-02T14:19:00.001-03:00</published><updated>2012-01-02T22:04:46.911-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Objective C'/><category scheme='http://www.blogger.com/atom/ns#' term='visual Basic'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Perl'/><category scheme='http://www.blogger.com/atom/ns#' term='object pascal'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Ranking de lenguajes 2011</title><content type='html'>Estaba leyendo genbetadev y me&amp;nbsp;encontré&amp;nbsp;el ranking de lenguajes que realiza la empresa TIOBE:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-yrJDNWmvgQs/TwJT3OTzjoI/AAAAAAAAAnk/f_t9JtCyi90/s1600/top-lenguajes-2011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-yrJDNWmvgQs/TwJT3OTzjoI/AAAAAAAAAnk/f_t9JtCyi90/s1600/top-lenguajes-2011.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Dejo links:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.genbetadev.com/lenguajes-de-programacion/ranking-2011-de-lenguajes-mas-usados-java-se-mantiene-lider-y-objective-c-dobla-sus-resultados"&gt;http://www.genbetadev.com/lenguajes-de-programacion/ranking-2011-de-lenguajes-mas-usados-java-se-mantiene-lider-y-objective-c-dobla-sus-resultados&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"&gt;http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-7158127800949782176?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/7158127800949782176/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/lenguajes-de-programacion-ranking-2011.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7158127800949782176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7158127800949782176'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2012/01/lenguajes-de-programacion-ranking-2011.html' title='Ranking de lenguajes 2011'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-yrJDNWmvgQs/TwJT3OTzjoI/AAAAAAAAAnk/f_t9JtCyi90/s72-c/top-lenguajes-2011.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-8679793830043583989</id><published>2011-12-31T14:07:00.000-03:00</published><updated>2011-12-31T14:07:15.702-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring Data'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache Hadoop'/><title type='text'>Apache Hadoop con Spring Data</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-g6adIdKiQsA/Tv9AwhSEyPI/AAAAAAAAAnQ/g-42C7qtZno/s1600/Project_Data.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-g6adIdKiQsA/Tv9AwhSEyPI/AAAAAAAAAnQ/g-42C7qtZno/s1600/Project_Data.png" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Spring Data provee soporte para Apache Hadoop; que es Hadoop es un proyecto de software libre el cual tiene como objetivo brindar servicios de computacion distribuida de este proyecto ya hablamos:&lt;br /&gt;&lt;a href="http://emanuelpeg.blogspot.com/2009/10/apache-hadoop-es-un-proyecto-java-de.html"&gt;http://emanuelpeg.blogspot.com/2009/10/apache-hadoop-es-un-proyecto-java-de.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Spring Data es otro proyecto libre que nos ayuda a interactuar con diferentes tipos de almacenes de datos. Este proyecto implementa un modulo para interactuar con Apache Hadoop. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-mKmfQPftcYU/Tv9AzZfwhMI/AAAAAAAAAnY/1AOeov3IRIg/s1600/Hadoop.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://1.bp.blogspot.com/-mKmfQPftcYU/Tv9AzZfwhMI/AAAAAAAAAnY/1AOeov3IRIg/s200/Hadoop.png" width="200" /&gt;&lt;/a&gt;Entre sus características podemos nombrar:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Una extensión para Spring Batch para soportar la comunicación punto a punto&lt;/li&gt;&lt;li&gt;Simplifica la lectura y escritura de recursos HDFS&lt;/li&gt;&lt;li&gt;Spring Batch Tasklets Map-Reduce para en un Job con streaming&lt;/li&gt;&lt;li&gt;Integración con Hbase, Hive y Pig&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para utilizar este proyecto con maven deben agregar el siguiente repositorio:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;repository&gt;&lt;br /&gt; &lt;id&gt;spring-snapshot&lt;/id&gt;&lt;br /&gt; &lt;name&gt;Spring Maven SNAPSHOT Repository&lt;/name&gt;&lt;br /&gt; &lt;url&gt;http://s3.amazonaws.com/maven.springframework.org/snapshot&lt;/url&gt;&lt;br /&gt;&lt;/repository&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;y la siguiente entrada en el pom:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;dependency&gt;&lt;br /&gt; &lt;groupid&gt;org.springframework.data&lt;/groupid&gt;&lt;br /&gt; &lt;artifactid&gt;spring-data-hadoop&lt;/artifactid&gt;&lt;br /&gt; &lt;version&gt;1.0.0.BUILD-SNAPSHOT&lt;/version&gt;&lt;br /&gt;&lt;/dependency&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.springsource.org/spring-data/hadoop"&gt;http://www.springsource.org/spring-data/hadoop&lt;/a&gt;&lt;br /&gt;&lt;a href="http://static.springsource.org/spring-hadoop/docs/current/reference/"&gt;http://static.springsource.org/spring-hadoop/docs/current/reference/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://hadoop.apache.org/"&gt;http://hadoop.apache.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-8679793830043583989?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/8679793830043583989/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/apache-hadoop-con-spring-data.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8679793830043583989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8679793830043583989'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/apache-hadoop-con-spring-data.html' title='Apache Hadoop con Spring Data'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-g6adIdKiQsA/Tv9AwhSEyPI/AAAAAAAAAnQ/g-42C7qtZno/s72-c/Project_Data.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-4332090267687746859</id><published>2011-12-31T12:59:00.000-03:00</published><updated>2011-12-31T14:10:16.421-03:00</updated><title type='text'>Feliz 2012!!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PVfE915SyVE/Tv4qtNJ2JQI/AAAAAAAAAnE/SEpq03BD0Uc/s1600/imagenes-de-feliz-a%25C3%25B1o-nuevo-2012.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="380" src="http://3.bp.blogspot.com/-PVfE915SyVE/Tv4qtNJ2JQI/AAAAAAAAAnE/SEpq03BD0Uc/s400/imagenes-de-feliz-a%25C3%25B1o-nuevo-2012.jpg" width="480" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-4332090267687746859?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/4332090267687746859/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/feliz-2012.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/4332090267687746859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/4332090267687746859'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/feliz-2012.html' title='Feliz 2012!!'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-PVfE915SyVE/Tv4qtNJ2JQI/AAAAAAAAAnE/SEpq03BD0Uc/s72-c/imagenes-de-feliz-a%25C3%25B1o-nuevo-2012.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-6572354991986470280</id><published>2011-12-29T18:03:00.000-03:00</published><updated>2011-12-29T18:03:01.869-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Aprendiendo Android</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ALzeB_krslM/TvzVc8kcnqI/AAAAAAAAAm4/zD5yZcIpGfE/s1600/curso_android.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" src="http://1.bp.blogspot.com/-ALzeB_krslM/TvzVc8kcnqI/AAAAAAAAAm4/zD5yZcIpGfE/s320/curso_android.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;"&gt;Para el que quiere aprender a programar aplicaciones para Android, dejo algunos recursos:&lt;br /&gt;&lt;br /&gt;1.-&amp;nbsp;9 videotutoriales en español&amp;nbsp;--&amp;gt;&amp;nbsp;&lt;a class="ot-anchor" href="http://goo.gl/laZc8" style="color: #3366cc; cursor: pointer; text-decoration: none;"&gt;http://goo.gl/laZc8&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.-&amp;nbsp;4 libros digitales gratuitos&amp;nbsp;--&amp;gt;&amp;nbsp;&lt;a class="ot-anchor" href="http://goo.gl/pqvUj" style="color: #3366cc; cursor: pointer; text-decoration: none;"&gt;http://goo.gl/pqvUj&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3.-&amp;nbsp;20 horas para aprender a programar en Android&amp;nbsp;--&amp;gt;&lt;a class="ot-anchor" href="http://goo.gl/SU7sh" style="color: #3366cc; cursor: pointer; text-decoration: none;"&gt;http://goo.gl/SU7sh&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4.-&amp;nbsp;Curso impartido por Google&amp;nbsp;--&amp;gt;&amp;nbsp;&lt;a class="ot-anchor" href="http://goo.gl/8utpu" style="color: #3366cc; cursor: pointer; text-decoration: none;"&gt;http://goo.gl/8utpu&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5.-&amp;nbsp;Desarrollo y Programacion Android Fácilmente&amp;nbsp;--&amp;gt;&amp;nbsp;&lt;a class="ot-anchor" href="http://goo.gl/HYvbd" style="color: #3366cc; cursor: pointer; text-decoration: none;"&gt;http://goo.gl/HYvbd&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6.-&amp;nbsp;Desarrollo en Android en español&amp;nbsp;--&amp;gt;&amp;nbsp;&lt;a class="ot-anchor" href="http://goo.gl/r7yu2" style="color: #3366cc; cursor: pointer; text-decoration: none;"&gt;http://goo.gl/r7yu2&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Que lo disfruten!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-6572354991986470280?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/6572354991986470280/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/aprendiendo-android.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6572354991986470280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6572354991986470280'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/aprendiendo-android.html' title='Aprendiendo Android'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-ALzeB_krslM/TvzVc8kcnqI/AAAAAAAAAm4/zD5yZcIpGfE/s72-c/curso_android.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5650036754311791378</id><published>2011-12-27T00:28:00.001-03:00</published><updated>2011-12-27T00:28:25.941-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Libro de Python</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-j3Gnr_WpmAM/Tvk7Djwzg6I/AAAAAAAAAms/qm07-pfaiOk/s1600/olive-python.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://4.bp.blogspot.com/-j3Gnr_WpmAM/Tvk7Djwzg6I/AAAAAAAAAms/qm07-pfaiOk/s200/olive-python.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Dejo un libro gratuito de Python en castellano :&lt;br /&gt;&lt;br /&gt;&lt;a href="https://docs.google.com/gview?url=http://books.openlibra.com/pdf/Python%20para%20todos.pdf&amp;amp;chrome=true"&gt;https://docs.google.com/gview?url=http://books.openlibra.com/pdf/Python%20para%20todos.pdf&amp;amp;chrome=true&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Que lo disfruten!!&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5650036754311791378?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5650036754311791378/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/libro-de-python.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5650036754311791378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5650036754311791378'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/libro-de-python.html' title='Libro de Python'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-j3Gnr_WpmAM/Tvk7Djwzg6I/AAAAAAAAAms/qm07-pfaiOk/s72-c/olive-python.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-7358140166199164093</id><published>2011-12-27T00:15:00.000-03:00</published><updated>2011-12-27T00:15:17.468-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Manual de Symfony 2</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-d2wBPgjWgPo/Tvk4EfeT8jI/AAAAAAAAAmg/C4-R41H8-Kw/s1600/symfony.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-d2wBPgjWgPo/Tvk4EfeT8jI/AAAAAAAAAmg/C4-R41H8-Kw/s1600/symfony.gif" /&gt;&lt;/a&gt;&lt;/div&gt;Han publicado un manual en castellano de Symfony 2, framework PHP que esta sumando adeptos; dado su productividad y flexibilidad.&lt;br /&gt;&lt;br /&gt;Dejo el link:&amp;nbsp;&lt;a href="https://docs.google.com/gview?url=http://books.openlibra.com/pdf/symfony2-es.pdf&amp;amp;chrome=true&amp;amp;pli=1"&gt;https://docs.google.com/gview?url=http://books.openlibra.com/pdf/symfony2-es.pdf&amp;amp;chrome=true&amp;amp;pli=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-7358140166199164093?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/7358140166199164093/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/manual-de-symfony-2.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7358140166199164093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7358140166199164093'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/manual-de-symfony-2.html' title='Manual de Symfony 2'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-d2wBPgjWgPo/Tvk4EfeT8jI/AAAAAAAAAmg/C4-R41H8-Kw/s72-c/symfony.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5099196959301550283</id><published>2011-12-27T00:03:00.003-03:00</published><updated>2011-12-27T00:04:41.927-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache Lenya'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Apache Lenya - Open Source Content Management (Java/XML)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-005_xAw80cY/Tvk0Eutb5II/AAAAAAAAAmU/DR-05gu3lhM/s1600/lenya-Menu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="48" src="http://3.bp.blogspot.com/-005_xAw80cY/Tvk0Eutb5II/AAAAAAAAAmU/DR-05gu3lhM/s640/lenya-Menu.png" width="560" /&gt;&lt;/a&gt;&lt;/div&gt;Apache Lenya es un framewrok open source java/xml; CMS (Common Manager System) con un sistema de control de versiones, un administrador multi-site, scheduling, busquedas y un editor WYSIWYG (What You See Is What You Get) y workflow. Completito, completito! &lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-IJR3yODs-tU/Tvk0EM3CKoI/AAAAAAAAAmM/fIOYq1W8yB0/s1600/lenya.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-IJR3yODs-tU/Tvk0EM3CKoI/AAAAAAAAAmM/fIOYq1W8yB0/s1600/lenya.png" /&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp;La actual&amp;nbsp;versión&amp;nbsp;es la 2.0.4 y se distribuye con licencia Apache. Por el momento no se distribuye de forma binaria y corre sobre un jetty o tomcat.&lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lenya.apache.org/"&gt;http://lenya.apache.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lenya.apache.org/docu20/installation20/install20.html"&gt;http://lenya.apache.org/docu20/installation20/install20.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lenya.apache.org/docu20/installation20/download20.html"&gt;http://lenya.apache.org/docu20/installation20/download20.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lenya.apache.org/index/screenshots.html"&gt;http://lenya.apache.org/index/screenshots.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5099196959301550283?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5099196959301550283/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/apache-lenya-open-source-content.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5099196959301550283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5099196959301550283'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/apache-lenya-open-source-content.html' title='Apache Lenya - Open Source Content Management (Java/XML)'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-005_xAw80cY/Tvk0Eutb5II/AAAAAAAAAmU/DR-05gu3lhM/s72-c/lenya-Menu.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5770592061826335305</id><published>2011-12-24T09:59:00.004-03:00</published><updated>2011-12-24T10:03:07.859-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Nueva iniciativa de Codecademy para que programar sea fácil y entretenido</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-VlmuzRNpFk8/TvXMHbc6yiI/AAAAAAAAAmA/shryOTkWaVo/s1600/Labs.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="292" src="http://1.bp.blogspot.com/-VlmuzRNpFk8/TvXMHbc6yiI/AAAAAAAAAmA/shryOTkWaVo/s400/Labs.jpg" width="580" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #676767; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px;"&gt;Codecademy se planteaba como una propuesta interesante&amp;nbsp; y amena al momento de aprender programación en línea, ya sea JavaScrip, Ruby o Python.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Se ha abierto Codecademy Labs, tu espacio para que puedas practicar todo lo que aprendes en tus clases virtuales . Una de los detalles más interesantes es que no necesitas descargar ningún editor a tu escritorio, sino que puedes hacerlo desde la misma interfaz, desde el navegador. Otro aspecto interesante es que puedes ejecutar o descargar archivos.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;A estudiar!!!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Dejo el link:&amp;nbsp;&lt;a href="http://labs.codecademy.com/"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;http://labs.codecademy.com/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #676767; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5770592061826335305?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5770592061826335305/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/nueva-iniciativa-de-codecademy-para-que.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5770592061826335305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5770592061826335305'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/nueva-iniciativa-de-codecademy-para-que.html' title='Nueva iniciativa de Codecademy para que programar sea fácil y entretenido'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-VlmuzRNpFk8/TvXMHbc6yiI/AAAAAAAAAmA/shryOTkWaVo/s72-c/Labs.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-7883196394857447250</id><published>2011-12-21T23:49:00.002-03:00</published><updated>2011-12-22T12:40:15.406-03:00</updated><title type='text'>CHOMSKY</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-2J5e6ti9ydA/TvKarkf4qGI/AAAAAAAAAl0/T6eHhvDPGvE/s1600/Chomsky-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-2J5e6ti9ydA/TvKarkf4qGI/AAAAAAAAAl0/T6eHhvDPGvE/s1600/Chomsky-1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Uno de los genios que a dado este ultimo siglo (a mi parecer) y personaje muy influyente tanto en política como lingüística y en informática. Si, si este tipo nos ha ayudado mucho a nosotros.&lt;br /&gt;&lt;br /&gt;En la década de 1950, Noam Chomsky desarrolló la Jerarquía de Chomsky en el campo de la lingüística; un descubrimiento que impactó directamente a la teoría de lenguajes de programación y otras ramas de la informática. Si leemos en la wikipedia sobre la Jerarquia de Chomsky:   &lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial,sans-serif;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-style: normal;"&gt;&lt;span style="color: black;"&gt;“&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Lajerarquía de Chomsky consiste en los niveles siguientes:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;Gramáticas Type-0 (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Unrestricted_grammar"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;gramáticas sin restricción&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;) incluya todas las gramáticas formales. Generan exactamente todas las idiomas que se puedan reconocer por a&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Turing_machine"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;Máquina de Turing&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;. Estas idiomas también se conocen como&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Recursively_enumerable_language"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;idiomas recurrentemente enumerable&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;. Observe que esto es diferente de&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Recursive_language"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;idiomas recurrentes&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&amp;nbsp;cuál puede ser&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;decidido&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&amp;nbsp;por&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Machine_that_always_halts"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;máquina de Turing siempre-que para&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;Gramáticas del tipo 1 (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Context-sensitive_grammar"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;gramáticas sensibles al contexto&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;) genere&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Context-sensitive_language"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;idiomas sensibles al contexto&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;. Estas gramáticas tienen reglas de la forma con&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;A&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&amp;nbsp;un no terminal y&amp;nbsp;α,&amp;nbsp;β&amp;nbsp;y&amp;nbsp;γ&amp;nbsp;cadenas de terminales y de nonterminals. Las secuencias&amp;nbsp;α&amp;nbsp;y&amp;nbsp;β&amp;nbsp;puede ser vacío, pero&amp;nbsp;γ&amp;nbsp;debe ser no vacío. La regla se permite si&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;S&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&amp;nbsp;no aparece en el derecho de ninguna regla. Las idiomas descritas por estas gramáticas son exactamente todas las idiomas que se pueden reconocer por a&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Linear_bounded_automaton"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;autómata limitado linear&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&amp;nbsp;(una máquina no determinista de Turing que cinta es limitada por las épocas constantes la longitud de la entrada.)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;Gramáticas Type-2 (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Context-free_grammar"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;gramáticas independientes del contexto&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;) genere&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Context-free_language"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;idiomas context-free&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;. Éstos son definidos por las reglas de la forma con&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;A&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;un no terminal y&amp;nbsp;γ&amp;nbsp;una cadena de terminales y de nonterminals. Estas idiomas son exactamente todas las idiomas que se pueden reconocer por un no determinista&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Pushdown_automaton"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;autómata del pushdown&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;. Las idiomas libres del contexto son la base teórica para el sintaxis de la mayoría&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Programming_language"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;lenguajes de programación&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;Gramáticas Type-3 (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Regular_grammar"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;gramáticas regulares&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;) genere&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Regular_language"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;idiomas regulares&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;. Tal gramática restringe sus reglas a un solo no terminal en el lado izquierdo y un lado derecho que consisten en un solo terminal, seguido (o precedido posiblemente, pero no ambos en la misma gramática) por un solo no terminal. La regla también se permite aquí si&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;S&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&amp;nbsp;no aparece en el derecho de ninguna regla. Estas idiomas son exactamente todas las idiomas que se pueden decidir por a&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Finite_state_machine"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;autómata finito del estado&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;. Además, esta familia de lenguajes formales se puede obtener cerca &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.multilingualarchive.com/ma/enwiki/es/Regular_expression"&gt;&lt;span style="color: #0e6c99;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;expresiones regulares&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;. Las idiomas regulares son de uso general definir los patrones de la búsqueda y la estructura léxica de lenguajes de programación.”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;Nosolo nos ayudo a nosotros si no que fue un activista político quehoy día lucha por mejorar el mundo. Es muy aconsejable que lean elsiguiente &lt;a href="http://vorticeinmediaista.blogspot.com/2011/06/chomsky-y-las-10-estrategias-de.html"&gt;link&lt;/a&gt;, en el cual el describe las 10 estrategias demanipulación mediática.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;Una frase:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 16px;"&gt;"El país se fundó sobre el principio de que el rol primario del gobierno es proteger de la mayoría a la propiedad, y así sigue."&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 16px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Noam Chomsky&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;Ypor ultimo para darle un poco de humor compartir este resumen que saque de la frikipedia:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: 'Trebuchet MS'; font-size: 13px; line-height: 19px;"&gt;&lt;br class="Apple-interchange-newline" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;table align="right" cellpadding="2" cellspacing="0" style="background-attachment: initial; background-clip: initial; background-color: lightsteelblue; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(136, 136, 170); border-bottom-style: solid; border-bottom-width: 2px; border-collapse: collapse; border-left-color: rgb(136, 136, 170); border-left-style: solid; border-left-width: 2px; border-right-color: rgb(136, 136, 170); border-right-style: solid; border-right-width: 2px; border-top-color: rgb(136, 136, 170); border-top-style: solid; border-top-width: 2px; font-size: 11px; margin-bottom: 1em; margin-left: 1em; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px;"&gt;&lt;tbody&gt;&lt;tr align="center" style="vertical-align: top;"&gt;&lt;td colspan="2" style="line-height: 2em; margin-left: inherit;"&gt;De la serie&amp;nbsp;&lt;b&gt;&lt;a href="http://www.frikipedia.es/friki/Categor%C3%ADa:Personajes" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #002bb8; text-decoration: none;" title="Categoría:Personajes"&gt;grandes personajes&lt;/a&gt;&lt;/b&gt;:&lt;/td&gt;&lt;/tr&gt;&lt;tr align="center" style="vertical-align: top;"&gt;&lt;td colspan="2" style="font-size: medium; line-height: 2em; margin-left: inherit;"&gt;&lt;b&gt;Avram Noam Chomsky&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center" colspan="2" style="background-attachment: initial; background-clip: initial; background-color: lightsteelblue; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;&lt;table style="font-size: 11px; text-align: center; width: 408px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a class="image" href="http://www.frikipedia.es/images/b/b0/Chomsky_pensativo.jpg" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #002bb8; text-decoration: none;" title="undefined&amp;lt;br /&amp;gt;Origen: &amp;lt;a style=&amp;quot;color:#888888;&amp;quot; href=&amp;quot;http://www.frikipedia.es/friki/Archivo:Chomsky_pensativo.jpg&amp;quot;&amp;gt;Chomsky_pensativo.jpg&amp;lt;/a&amp;gt;"&gt;&lt;img alt="Chomsky pensativo.jpg" height="134" src="http://www.frikipedia.es/images/thumb/b/b0/Chomsky_pensativo.jpg/200px-Chomsky_pensativo.jpg" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; vertical-align: middle;" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;small&gt;"&lt;i&gt;Otro estudiente del&amp;nbsp;&lt;a class="mw-redirect" href="http://www.frikipedia.es/friki/MIT" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #002bb8; text-decoration: none;" title="MIT"&gt;MIT&lt;/a&gt;&amp;nbsp;con una duda de etica compleja... ¿Por qué no estudie medicina?&lt;/i&gt;"&lt;/small&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-top-color: rgb(153, 153, 153); border-top-style: solid; border-top-width: 1px;"&gt;&lt;td width="40%"&gt;&lt;b&gt;Nacimiento&lt;/b&gt;&lt;/td&gt;&lt;td style="background-attachment: initial; background-clip: initial; background-color: #f7f8ff; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; text-align: center;"&gt;Poquito después del&amp;nbsp;&lt;a href="http://www.frikipedia.es/friki/Comunismo" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #002bb8; text-decoration: none;" title="Comunismo"&gt;comunismo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-top-color: rgb(153, 153, 153); border-top-style: solid; border-top-width: 1px;"&gt;&lt;td&gt;&lt;b&gt;Muerte&lt;/b&gt;&lt;/td&gt;&lt;td style="background-attachment: initial; background-clip: initial; background-color: #f7f8ff; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; text-align: center;"&gt;Si&amp;nbsp;&lt;a href="http://www.frikipedia.es/friki/George_W._Bush" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #002bb8; text-decoration: none;" title="George W. Bush"&gt;Bush&lt;/a&gt;&amp;nbsp;se reelige... y si&amp;nbsp;&lt;a href="http://www.frikipedia.es/friki/Hugo_Ch%C3%A1vez" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #002bb8; text-decoration: none;" title="Hugo Chávez"&gt;Chávez&lt;/a&gt;&amp;nbsp;no lo declara muerto antes.&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-top-color: rgb(153, 153, 153); border-top-style: solid; border-top-width: 1px;"&gt;&lt;td&gt;&lt;b&gt;Ocupación&lt;/b&gt;&lt;/td&gt;&lt;td align="center" style="background-attachment: initial; background-clip: initial; background-color: #f7f8ff; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial;"&gt;Molestar al gobierno (Con justa razón)&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-top-color: rgb(153, 153, 153); border-top-style: solid; border-top-width: 1px;"&gt;&lt;td&gt;&lt;b&gt;Nacionalidad&lt;/b&gt;&lt;/td&gt;&lt;td style="background-attachment: initial; background-clip: initial; background-color: #f7f8ff; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; text-align: center;"&gt;Made in America (¡&lt;i&gt;Hombre hasta yo me avergonzaria&lt;/i&gt;!)&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-top-color: rgb(153, 153, 153); border-top-style: solid; border-top-width: 1px;"&gt;&lt;td&gt;&lt;b&gt;Malo o Bueno&lt;/b&gt;&lt;/td&gt;&lt;td style="background-attachment: initial; background-clip: initial; background-color: #f7f8ff; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; text-align: center;"&gt;Depende de como consdieres a&amp;nbsp;&lt;a href="http://www.frikipedia.es/friki/George_W._Bush" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #002bb8; text-decoration: none;" title="George W. Bush"&gt;Bush&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-top-color: rgb(153, 153, 153); border-top-style: solid; border-top-width: 1px;"&gt;&lt;td&gt;&lt;b&gt;Atentados contra la humanidad&lt;/b&gt;&lt;/td&gt;&lt;td style="background-attachment: initial; background-clip: initial; background-color: #f7f8ff; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; text-align: center;"&gt;Escribir libros sobre una teoría ininteligible&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-top-color: rgb(153, 153, 153); border-top-style: solid; border-top-width: 1px;"&gt;&lt;td&gt;&lt;b&gt;Religión&lt;/b&gt;&lt;/td&gt;&lt;td style="background-attachment: initial; background-clip: initial; background-color: #f7f8ff; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; text-align: center;"&gt;&lt;a href="http://www.frikipedia.es/friki/Anarquismo" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #002bb8; text-decoration: none;" title="Anarquismo"&gt;Anarquismo&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-top-color: rgb(153, 153, 153); border-top-style: solid; border-top-width: 1px;"&gt;&lt;td&gt;&lt;b&gt;Notas&lt;/b&gt;&lt;/td&gt;&lt;td style="background-attachment: initial; background-clip: initial; background-color: #f7f8ff; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; text-align: center;"&gt;Escribir libros contra el capitalismo es excelente negocio&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="LEFT" style="border: none; margin-bottom: 0.13cm; margin-right: 0.26cm; margin-top: 0.13cm; orphans: 2; padding: 0cm; widows: 2;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Georgia,Verdana,Geneva,Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-7883196394857447250?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/7883196394857447250/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/chomsky.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7883196394857447250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7883196394857447250'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/chomsky.html' title='CHOMSKY'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-2J5e6ti9ydA/TvKarkf4qGI/AAAAAAAAAl0/T6eHhvDPGvE/s72-c/Chomsky-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-2690589884255806026</id><published>2011-12-19T23:55:00.002-03:00</published><updated>2011-12-19T23:56:08.150-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='blogs'/><title type='text'>SOA agenda</title><content type='html'>Un Blog de java y SOA, Muy bueno!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://soaagenda.com/journal/"&gt;http://soaagenda.com/journal/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-2690589884255806026?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/2690589884255806026/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/soa-agenda.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2690589884255806026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2690589884255806026'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/soa-agenda.html' title='SOA agenda'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-137864863623093750</id><published>2011-12-19T23:24:00.001-03:00</published><updated>2011-12-19T23:24:20.573-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NewSql'/><title type='text'>NuoDB</title><content type='html'>Aportando más sobre newSQL dejo un&amp;nbsp;vídeo&amp;nbsp;de NuoDb&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;iframe allowfullscreen="" frameborder="0" height="250" mozallowfullscreen="" src="http://player.vimeo.com/video/33785505?title=0&amp;amp;byline=0&amp;amp;portrait=0" webkitallowfullscreen="" width="400"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;a href="http://vimeo.com/33785505"&gt;Technical Overview Webinar Video (nuodb)&lt;/a&gt; from &lt;a href="http://vimeo.com/user9671321"&gt;NUODB&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-137864863623093750?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/137864863623093750/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/nuodb.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/137864863623093750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/137864863623093750'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/nuodb.html' title='NuoDB'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-8772416129335919597</id><published>2011-12-18T20:54:00.003-03:00</published><updated>2011-12-18T20:54:51.647-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fantom'/><title type='text'>Fantom</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Emc6iYoBVIQ/Tu58Xr1SuvI/AAAAAAAAAlo/YXLH0bBZIq4/s1600/fantom.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="178" src="http://4.bp.blogspot.com/-Emc6iYoBVIQ/Tu58Xr1SuvI/AAAAAAAAAlo/YXLH0bBZIq4/s200/fantom.jpeg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Fantom es un lenguaje el cual corre sobre la JVM de java; sobre CLR de .net y además sobre javascript. Es similar a java o c# pero con una sintaxis más evolucionada. Soporta mixin y concurrencia con el modelo de actores. &lt;br /&gt;&lt;br /&gt;Totalmente orientado a objetos pero soporta el paradigma funcional y tiene closures. Soporta tipado estático o dinámico.Además de todos los características dichas agrega unos chiches como serialización a json, una api elegante y URIs basadas en REST.&lt;br /&gt;&lt;br /&gt;Veamos un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Hello from Fantom!&lt;br /&gt;class HelloWorld&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; static Void main()&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; echo("Hello, World!")&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Un ejemplo de clase:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class Person&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; public String name() { return name; }&lt;br /&gt;&amp;nbsp; public void name(String x) { name = x; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp; public int age() { return age; }&lt;br /&gt;&amp;nbsp; public void age(int x) { age = x; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp; private String name;&lt;br /&gt;&amp;nbsp; private int age;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Prometo seguir escribiendo sobre este lenguaje que pinta lindo.&lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;a href="http://fantom.org/doc/docIntro/StartHere.html"&gt;http://fantom.org/doc/docIntro/StartHere.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://fantom.org/"&gt;http://fantom.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-8772416129335919597?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/8772416129335919597/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/fantom.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8772416129335919597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8772416129335919597'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/fantom.html' title='Fantom'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Emc6iYoBVIQ/Tu58Xr1SuvI/AAAAAAAAAlo/YXLH0bBZIq4/s72-c/fantom.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-2212757840377260758</id><published>2011-12-15T23:31:00.002-03:00</published><updated>2011-12-15T23:31:35.810-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='play'/><title type='text'>Anuncio de play! 2.0 en español</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-f7h4EQUOndM/TuqtaRp6NOI/AAAAAAAAAlg/qvMIJM7tstY/s1600/Play-Framework.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-f7h4EQUOndM/TuqtaRp6NOI/AAAAAAAAAlg/qvMIJM7tstY/s400/Play-Framework.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222;"&gt;El anuncio de play 2.0 esta traducido en su totalidad al español y lo pueden leer del siguiente link:&amp;nbsp;&lt;/span&gt;&lt;a href="http://playdoces.appspot.com/2.0"&gt;http://playdoces.appspot.com/2.0&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: rgba(255, 255, 255, 0.917969); color: #222222;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Como principal novedad, el core del mismo estará escrito en scala,&amp;nbsp;integrándose al stack de typesafe (scala + akka + sbt + play!), y&amp;nbsp;tendrá soporte completo y APIs nativas tanto para scala como para&amp;nbsp;java.&lt;br /&gt;&lt;br /&gt;También hay otras novedades, como un nuevo sistema de builds (sbt),&amp;nbsp;mayores validaciones en tiempo de compilación (los templates e incluso&amp;nbsp;los archivos de rutas son estáticamente compilados), más soporte para&amp;nbsp;operaciones asincrónicas, soporte para diversos tipos de fuentes de&amp;nbsp;datos (bases relaciones y nosql) y más cambios.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-2212757840377260758?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/2212757840377260758/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/anuncio-de-play-20-en-espanol.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2212757840377260758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2212757840377260758'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/anuncio-de-play-20-en-espanol.html' title='Anuncio de play! 2.0 en español'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-f7h4EQUOndM/TuqtaRp6NOI/AAAAAAAAAlg/qvMIJM7tstY/s72-c/Play-Framework.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-8192348776840615757</id><published>2011-12-13T01:56:00.001-03:00</published><updated>2011-12-13T01:56:10.846-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>@EJB</title><content type='html'>&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-tUWCBHpvCTw/Tuba1a65bDI/AAAAAAAAAlU/Q4Wz7HV7t8w/s1600/cup-of-java-beans.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-tUWCBHpvCTw/Tuba1a65bDI/AAAAAAAAAlU/Q4Wz7HV7t8w/s320/cup-of-java-beans.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;Enun post anterior hicimos un proyecto con maven y JEE&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;Peroen ese caso hicimos un lookup pero podríamos haber usado @EJB de lasiguiente manera:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: #646464;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;@EJB&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;(mappedName=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="color: #2a00ff;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;"HolaMundoImpl/remote"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: #7f0055;"&gt;&lt;span style="font-style: normal;"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;HolaMundo &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="color: #0000c0;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;holaMundo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;= &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="color: #7f0055;"&gt;&lt;span style="font-style: normal;"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span style="color: black;"&gt;Ycon esto nos&amp;nbsp;ahorrábamos&amp;nbsp;el lookup. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;Cualesson los atributos de @EJB y para que se usan? &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;@EJBindica la dependencia de un ejb tanto local como remoto. Estaanotación tiene diferentes atributos &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;loscuales analizaremos luego de revisar el concepto de ENC. Todos losEJB tienen un ENC (Enterprise Naming Context) es como un registrointerno donde fue deployeada esta aplicación. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;Porejemplo: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;@Stateless(name="MyEJB")&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;publicclass MyEJBBean implements MyEJBRemoteBusiness, MyEJBLocalBusiness&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;Sinosotros asumimos que este EJB esta en myejb.jar y dentro demyapp.ear se puede tener una referencia a este bean de la siguientemanera: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;javax.naming.ContextjndiContext = new InitialContext(); // Assume we have this&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;//Define the contracted value&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;finalString jndiName = "java:global/myapp/myejb/MyEJB!" +&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;MyEJBRemoteBusiness.class.getName();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;MyEJBRemoteBusinessbean = (MyEJBRemoteBusiness)jndiContext.lookup(jndiName);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;Cadabean contiene su JNDI ENC. La registración a JNDI ENC puede serregistrado bajo el contexto java:comp/env comp es porque es uncomponente. Cuando hacemos el lookup se resuelve la dependencia dediferentes contextos.  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;@EJBtiene los siguientes atributos:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;name:atributo el cual indica conque nombre acedemos a una referencia EJBen JNDI ENC.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;BeanName:este es el nombre de una referencia.  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;MappedName:es especifico del vendor; es una key dentro de la registraciónglobal. Es una forma de acceder a la referencia en el JNDI global.Por medio de mappedName varios vendors introducen característicasparticulares.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;em&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;Esto fue una reseña general de @EJB.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-8192348776840615757?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/8192348776840615757/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/ejb.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8192348776840615757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8192348776840615757'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/ejb.html' title='@EJB'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-tUWCBHpvCTw/Tuba1a65bDI/AAAAAAAAAlU/Q4Wz7HV7t8w/s72-c/cup-of-java-beans.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5545439548235226815</id><published>2011-12-10T16:17:00.001-03:00</published><updated>2011-12-10T16:21:53.139-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring Data'/><category scheme='http://www.blogger.com/atom/ns#' term='MongoDb'/><category scheme='http://www.blogger.com/atom/ns#' term='neo4j'/><category scheme='http://www.blogger.com/atom/ns#' term='JDBC'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache Cassandra'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache CouchDB'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><category scheme='http://www.blogger.com/atom/ns#' term='HBase'/><category scheme='http://www.blogger.com/atom/ns#' term='JPA'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache Hadoop'/><title type='text'>Spring Data</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif;"&gt;&lt;a href="http://4.bp.blogspot.com/-7H0ypNGwGko/TuOw2uDYPRI/AAAAAAAAAlI/mNjhXLhIDto/s1600/spring_Data.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-7H0ypNGwGko/TuOw2uDYPRI/AAAAAAAAAlI/mNjhXLhIDto/s1600/spring_Data.png" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif;"&gt;Spring Data hace fácil la construcción de aplicaciones que usan nuevas formas de almacenar datos como por ejemplo base de datos no relacionales, servicios de datos en la nube, bases clave-valor, etc.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif;"&gt;La idea es introducir una capa de abstracción que permita generalizar el acceso a dato a almacenes de datos tan dispares. Este proyecto fue desarrollado gracias al trabajo conjunto con un conjunto de compañías y desarrolladores.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif;"&gt;Spring data esta dividido en diferentes subproyectos dependiendo los almacenes de datos que tenga que interactuar:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;table cellpadding="2" cellspacing="0" style="width: 642px;"&gt; &lt;colgroup&gt;&lt;col width="148"&gt;&lt;/col&gt; &lt;col width="487"&gt;&lt;/col&gt; &lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;span class="Apple-style-span" style="color: #666666; font-family: Arial, sans-serif; font-size: x-small;"&gt;&lt;b&gt;Categoría&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;div align="LEFT"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Sub-proyecto&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Relational   Databases&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;a href="http://www.springsource.org/spring-data/jpa"&gt;&lt;span style="color: #0a96c5;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;JPA&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;a href="http://www.springsource.org/spring-data/jdbc-extensions"&gt;&lt;span style="color: #0a96c5;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;JDBC   Extensions&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;th style="border: none; padding: 0cm;" width="148"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt;  &lt;th style="border: none; padding: 0cm;" width="487"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Big   Data&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;a href="http://www.springsource.org/spring-data/hadoop"&gt;&lt;span style="color: #0a96c5;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Hadoop&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;th style="border: none; padding: 0cm;" width="148"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt;  &lt;th style="border: none; padding: 0cm;" width="487"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Data-Grid&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;a href="http://www.springsource.org/spring-gemfire"&gt;&lt;span style="color: #0a96c5;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Gemfire&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;th style="border: none; padding: 0cm;" width="148"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt;  &lt;th style="border: none; padding: 0cm;" width="487"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Key   Value Stores&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;a href="http://www.springsource.org/spring-data/redis"&gt;&lt;span style="color: #0a96c5;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Redis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;a href="http://www.springsource.org/spring-data/riak"&gt;&lt;span style="color: #0a96c5;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Riak&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;th style="border: none; padding: 0cm;" width="148"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt;  &lt;th style="border: none; padding: 0cm;" width="487"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Document   Stores&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;a href="http://www.springsource.org/spring-data/mongodb"&gt;&lt;span style="color: #0a96c5;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;MongoDB&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;CouchDB   (planned)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;th style="border: none; padding: 0cm;" width="148"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt;  &lt;th style="border: none; padding: 0cm;" width="487"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Graph   Databases&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;a href="http://www.springsource.org/spring-data/neo4j"&gt;&lt;span style="color: #0a96c5;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Neo4j&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;th style="border: none; padding: 0cm;" width="148"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt;  &lt;th style="border: none; padding: 0cm;" width="487"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Column   Stores&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;HBase   (planned)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Cassandra   (planned)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;th style="border: none; padding: 0cm;" width="148"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt;  &lt;th style="border: none; padding: 0cm;" width="487"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Blob-Stores&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;a href="http://www.springsource.org/spring-data/blob"&gt;&lt;span style="color: #0a96c5;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Blob&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;th style="border: none; padding: 0cm;" width="148"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt;  &lt;th style="border: none; padding: 0cm;" width="487"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;span style="color: #666666;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Common   Infrastructure&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;a href="http://www.springsource.org/spring-data/commons"&gt;&lt;span style="color: #0a96c5;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Commons&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border: none; padding: 0cm;" width="148"&gt;&lt;br /&gt;&lt;/td&gt;  &lt;td style="border: none; padding: 0cm;" width="487"&gt;&lt;a href="https://github.com/SpringSource/grails-data-mapping"&gt;&lt;span style="color: #0a96c5;"&gt;&lt;span style="text-decoration: none;"&gt;&lt;span style="font-family: Arial, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Grails   Mapping&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;  &lt;th style="border: none; padding: 0cm;" width="148"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt;  &lt;th style="border: none; padding: 0cm;" width="487"&gt;&lt;div align="LEFT" style="border: none; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/th&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5545439548235226815?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5545439548235226815/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/spring-data.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5545439548235226815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5545439548235226815'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/spring-data.html' title='Spring Data'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-7H0ypNGwGko/TuOw2uDYPRI/AAAAAAAAAlI/mNjhXLhIDto/s72-c/spring_Data.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-6712547588061210234</id><published>2011-12-10T15:44:00.001-03:00</published><updated>2011-12-10T15:59:15.977-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>IKVM.NET 7.0 Released</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ZN2IBUNR5Lw/TuOrXfuRpII/AAAAAAAAAkw/01mlB9bqOtc/s1600/MicrosoftNet.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-tuE4BoEFdHs/TuOrYOn1FRI/AAAAAAAAAlA/apI9iu50Jc4/s1600/sun-microsystem-java-logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;/a&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-tuE4BoEFdHs/TuOrYOn1FRI/AAAAAAAAAlA/apI9iu50Jc4/s200/sun-microsystem-java-logo.png" width="107" /&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-ZN2IBUNR5Lw/TuOrXfuRpII/AAAAAAAAAkw/01mlB9bqOtc/s200/MicrosoftNet.jpg" width="200" /&gt;&lt;a href="http://2.bp.blogspot.com/-Bkszre3rz-o/TuOrXuKI8WI/AAAAAAAAAk4/s_Tqj3xHX40/s1600/mono_project.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-Bkszre3rz-o/TuOrXuKI8WI/AAAAAAAAAk4/s_Tqj3xHX40/s200/mono_project.png" width="167" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Fue liberada al versión 7 de IKVM. IKVM es una implementación de Java para Mono y .net. Este proyecto permite correr aplicaciones Java sobre .net adndonos mayor interoperabilidad entre estas plataformas. Esta compuesto por:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Una Maquina virtual Java implemantada en .net&lt;/li&gt;&lt;li&gt;Una implementación .net de librerías Java.&lt;/li&gt;&lt;li&gt;Herramientas que permiten la interoperabilidad entre Java y .net&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Y es de licencia GNU 2.&lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/news/2011/12/IKVM_v7_released"&gt;http://www.infoq.com/news/2011/12/IKVM_v7_released&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ikvm.net/"&gt;http://www.ikvm.net/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ikvm.net/userguide/tutorial.html"&gt;http://www.ikvm.net/userguide/tutorial.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-6712547588061210234?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/6712547588061210234/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/ikvmnet-70-released.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6712547588061210234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6712547588061210234'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/ikvmnet-70-released.html' title='IKVM.NET 7.0 Released'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-tuE4BoEFdHs/TuOrYOn1FRI/AAAAAAAAAlA/apI9iu50Jc4/s72-c/sun-microsystem-java-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-1997172158366402883</id><published>2011-12-06T23:36:00.001-03:00</published><updated>2011-12-06T23:41:05.255-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>APIs Explorer de Google</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-rCey6dpAfyM/Tt7R2pF0AjI/AAAAAAAAAko/GyjNgiC5NVA/s1600/apis1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-rCey6dpAfyM/Tt7R2pF0AjI/AAAAAAAAAko/GyjNgiC5NVA/s1600/apis1.png" /&gt;&lt;/a&gt;&lt;/div&gt;Quería&amp;nbsp;compartir el explorador de Apis de google, no lo&amp;nbsp;conocía&amp;nbsp;tiene varias funcionalidades de varios productos de google.&lt;br /&gt;&lt;br /&gt;Dejo el link:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://code.google.com/apis/explorer/"&gt;https://code.google.com/apis/explorer/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-1997172158366402883?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/1997172158366402883/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/apis-explorer-de-google.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1997172158366402883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1997172158366402883'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/apis-explorer-de-google.html' title='APIs Explorer de Google'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-rCey6dpAfyM/Tt7R2pF0AjI/AAAAAAAAAko/GyjNgiC5NVA/s72-c/apis1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-3776871715383189740</id><published>2011-12-05T23:22:00.001-03:00</published><updated>2011-12-05T23:28:37.085-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='play'/><title type='text'>Play 1.2.4</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-dMGgtVxzpQs/Tt19fYgfulI/AAAAAAAAAkg/Bfe5A7YZ5ss/s1600/Playframework.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-dMGgtVxzpQs/Tt19fYgfulI/AAAAAAAAAkg/Bfe5A7YZ5ss/s1600/Playframework.png" /&gt;&lt;/a&gt;&lt;/div&gt;Salio la nueva versión del framework play, copie la release note: &lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f7f7f7; color: #666666; font-family: 'Lucida Grande', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h2 id="SoporteparaJava7" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px !important; border-color: initial !important; border-color: initial; border-left-width: 0px !important; border-right-width: 0px !important; border-style: initial !important; border-style: initial; border-top-color: rgb(224, 224, 224) !important; border-top-style: solid !important; border-top-width: 4px !important; color: #333333; font-size: 21px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 1.5em !important; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0.5em !important; text-shadow: rgb(255, 255, 255) 1px 1px 0px; vertical-align: baseline;"&gt;Soporte para Java 7&lt;/h2&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; line-height: 1.5em !important; margin-bottom: 1em !important; margin-top: 1em !important; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Play ahora trae soporte para Java 7, de manera que puede escribir el siguiente código sin ningún problema.&lt;/div&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: rgb(248, 248, 255) !important; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-color: rgb(224, 224, 224) !important; border-left-style: solid !important; border-left-width: 4px !important; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: rgb(68, 68, 68) !important; font-size: 13px; line-height: 1.5em !important; margin-bottom: 1em !important; margin-top: 1em !important; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: auto !important; overflow-y: auto !important; padding-bottom: 0.5em !important; padding-left: 0.5em !important; padding-right: 0.5em !important; padding-top: 0.5em !important; vertical-align: baseline;"&gt;&lt;code style="background-attachment: initial; background-clip: initial; background-color: rgb(248, 248, 255) !important; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(222, 222, 222) !important; border-bottom-style: none !important; border-bottom-width: 1px !important; border-color: initial !important; border-color: initial; border-left-color: rgb(222, 222, 222) !important; border-left-style: none !important; border-left-width: 1px !important; border-right-color: rgb(222, 222, 222) !important; border-right-style: none !important; border-right-width: 1px !important; border-style: initial; border-top-color: rgb(222, 222, 222) !important; border-top-style: none !important; border-top-width: 1px !important; border-width: initial !important; color: rgb(68, 68, 68) !important; display: block; font-size: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px !important; padding-left: 10px !important; padding-right: 0px !important; padding-top: 0px !important; vertical-align: baseline;"&gt;Map&amp;lt;String, List&amp;lt;String&amp;gt;&amp;gt; map = new HashMap();&lt;br /&gt;String version = "1.2.4";&lt;br /&gt;switch(version) {&lt;br /&gt;  case "1.2.4":&lt;br /&gt;     //code&lt;br /&gt;     break;&lt;br /&gt;   case "1.2.3":&lt;br /&gt;     //code&lt;br /&gt;     break;&lt;br /&gt;   case "1.2.2":&lt;br /&gt;     //code&lt;br /&gt;   default:&lt;br /&gt;     //code&lt;br /&gt;     break;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="Nuevaimplementacindelbinderglossarybinderdedatos" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px !important; border-color: initial !important; border-color: initial; border-left-width: 0px !important; border-right-width: 0px !important; border-style: initial !important; border-style: initial; border-top-color: rgb(224, 224, 224) !important; border-top-style: solid !important; border-top-width: 4px !important; color: #333333; font-size: 21px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 1.5em !important; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0.5em !important; text-shadow: rgb(255, 255, 255) 1px 1px 0px; vertical-align: baseline;"&gt;Nueva implementación del&amp;nbsp;&lt;a href="http://playdoces.appspot.com/documentation/1.2.4/glossary#binder" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #444444; font-size: 21px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;binder&lt;/a&gt;&amp;nbsp;de datos&lt;/h2&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; line-height: 1.5em !important; margin-bottom: 1em !important; margin-top: 1em !important; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;La nueva implementación del&amp;nbsp;&lt;a href="http://playdoces.appspot.com/documentation/1.2.4/glossary#binder" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #444444; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;binder&lt;/a&gt;&amp;nbsp;es más flexible y le permite vincular datos fácilmente entre jQuery y Play. También es posible vincular objetos más complejos usando esta nueva implementación.&lt;/div&gt;&lt;h2 id="SoporteparalaltimaespecificacindeWebSockets" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px !important; border-color: initial !important; border-color: initial; border-left-width: 0px !important; border-right-width: 0px !important; border-style: initial !important; border-style: initial; border-top-color: rgb(224, 224, 224) !important; border-top-style: solid !important; border-top-width: 4px !important; color: #333333; font-size: 21px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 1.5em !important; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0.5em !important; text-shadow: rgb(255, 255, 255) 1px 1px 0px; vertical-align: baseline;"&gt;Soporte para la última especificación de WebSockets&lt;/h2&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; line-height: 1.5em !important; margin-bottom: 1em !important; margin-top: 1em !important; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Play ahora soporta la última versión de la especificación de WebSockets, más precisamente de la versión hybi-00 a la hybi-10. Consulte la&amp;nbsp;&lt;a href="http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #444444; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Especificación de WebSocket&lt;/a&gt;&amp;nbsp;para más información.&lt;/div&gt;&lt;h2 id="SoporteparaIDscompuestos" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px !important; border-color: initial !important; border-color: initial; border-left-width: 0px !important; border-right-width: 0px !important; border-style: initial !important; border-style: initial; border-top-color: rgb(224, 224, 224) !important; border-top-style: solid !important; border-top-width: 4px !important; color: #333333; font-size: 21px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 1.5em !important; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0.5em !important; text-shadow: rgb(255, 255, 255) 1px 1px 0px; vertical-align: baseline;"&gt;Soporte para IDs compuestos&lt;/h2&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; line-height: 1.5em !important; margin-bottom: 1em !important; margin-top: 1em !important; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Los fixtures ahora soportan IDs compuestos. También puede utilizar las siguientes anotaciones tanto desde los modelos como desde los fixtures:&amp;nbsp;&lt;code style="background-attachment: initial; background-clip: initial; background-color: rgb(248, 248, 255) !important; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(222, 222, 222) !important; border-bottom-style: solid !important; border-bottom-width: 1px !important; border-color: initial; border-left-color: rgb(222, 222, 222) !important; border-left-style: solid !important; border-left-width: 1px !important; border-right-color: rgb(222, 222, 222) !important; border-right-style: solid !important; border-right-width: 1px !important; border-style: initial; border-top-color: rgb(222, 222, 222) !important; border-top-style: solid !important; border-top-width: 1px !important; color: rgb(68, 68, 68) !important; font-size: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px !important; padding-left: 0.2em !important; padding-right: 0.2em !important; padding-top: 0px !important; vertical-align: baseline;"&gt;@IdClass&lt;/code&gt;,&amp;nbsp;&lt;code style="background-attachment: initial; background-clip: initial; background-color: rgb(248, 248, 255) !important; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(222, 222, 222) !important; border-bottom-style: solid !important; border-bottom-width: 1px !important; border-color: initial; border-left-color: rgb(222, 222, 222) !important; border-left-style: solid !important; border-left-width: 1px !important; border-right-color: rgb(222, 222, 222) !important; border-right-style: solid !important; border-right-width: 1px !important; border-style: initial; border-top-color: rgb(222, 222, 222) !important; border-top-style: solid !important; border-top-width: 1px !important; color: rgb(68, 68, 68) !important; font-size: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px !important; padding-left: 0.2em !important; padding-right: 0.2em !important; padding-top: 0px !important; vertical-align: baseline;"&gt;@EmbeddedId&lt;/code&gt;. Consulte la&amp;nbsp;&lt;a href="http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#d0e2177" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #444444; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Documentación de Hibernate&lt;/a&gt;&amp;nbsp;para más información.&lt;/div&gt;&lt;h2 id="MejorsoporteparaIntelliJ" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px !important; border-color: initial !important; border-color: initial; border-left-width: 0px !important; border-right-width: 0px !important; border-style: initial !important; border-style: initial; border-top-color: rgb(224, 224, 224) !important; border-top-style: solid !important; border-top-width: 4px !important; color: #333333; font-size: 21px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 1.5em !important; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0.5em !important; text-shadow: rgb(255, 255, 255) 1px 1px 0px; vertical-align: baseline;"&gt;Mejor soporte para IntelliJ&lt;/h2&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; line-height: 1.5em !important; margin-bottom: 1em !important; margin-top: 1em !important; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;El comando&amp;nbsp;&lt;code style="background-attachment: initial; background-clip: initial; background-color: rgb(248, 248, 255) !important; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(222, 222, 222) !important; border-bottom-style: solid !important; border-bottom-width: 1px !important; border-color: initial; border-left-color: rgb(222, 222, 222) !important; border-left-style: solid !important; border-left-width: 1px !important; border-right-color: rgb(222, 222, 222) !important; border-right-style: solid !important; border-right-width: 1px !important; border-style: initial; border-top-color: rgb(222, 222, 222) !important; border-top-style: solid !important; border-top-width: 1px !important; color: rgb(68, 68, 68) !important; font-size: 13px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px !important; padding-left: 0.2em !important; padding-right: 0.2em !important; padding-top: 0px !important; vertical-align: baseline;"&gt;play idealize&lt;/code&gt;&amp;nbsp;ahora crea un proyecto de IntelliJ completo. Puede abrir directamente los proyectos de Play desde IntelliJ.&lt;/div&gt;&lt;h2 id="Otrasmejoras" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px !important; border-color: initial !important; border-color: initial; border-left-width: 0px !important; border-right-width: 0px !important; border-style: initial !important; border-style: initial; border-top-color: rgb(224, 224, 224) !important; border-top-style: solid !important; border-top-width: 4px !important; color: #333333; font-size: 21px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 1.5em !important; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0.5em !important; text-shadow: rgb(255, 255, 255) 1px 1px 0px; vertical-align: baseline;"&gt;Otras mejoras&lt;/h2&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 14px; line-height: 1.5em !important; margin-bottom: 1em !important; margin-top: 1em !important; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Esta versión trae una cantidad importante de pequeñas mejoras, así como&amp;nbsp;&lt;a href="https://play.lighthouseapp.com/projects/57987-play-framework/milestones/121681-124" style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #444444; font-size: 14px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;86 bugs resueltos&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-3776871715383189740?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/3776871715383189740/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/play-124.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3776871715383189740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3776871715383189740'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/play-124.html' title='Play 1.2.4'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-dMGgtVxzpQs/Tt19fYgfulI/AAAAAAAAAkg/Bfe5A7YZ5ss/s72-c/Playframework.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-7804718374511899299</id><published>2011-12-05T23:19:00.001-03:00</published><updated>2011-12-05T23:19:49.816-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='play'/><title type='text'>Having fun with Play framework!</title><content type='html'>Les quiero recomendar este nuevo blog, sobre play, scala, java, etc...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://playlatam.wordpress.com/"&gt;http://playlatam.wordpress.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-7804718374511899299?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/7804718374511899299/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/having-fun-with-play-framework.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7804718374511899299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7804718374511899299'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/having-fun-with-play-framework.html' title='Having fun with Play framework!'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-6050928773976818975</id><published>2011-12-04T11:51:00.001-03:00</published><updated>2011-12-04T11:59:33.022-03:00</updated><title type='text'>Cursos en Stanford University</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3RqpD2rw7lo/TtuKtMONEbI/AAAAAAAAAkY/4i4ytkZtwPo/s1600/Stanford_university.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-3RqpD2rw7lo/TtuKtMONEbI/AAAAAAAAAkY/4i4ytkZtwPo/s1600/Stanford_university.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;La gente de Stanford University va a publicar unos cursos gratuitos, por lo visto estan buenos.&lt;br /&gt;&lt;br /&gt;Dejo los links:&lt;br /&gt;&lt;a href="http://www.algo-class.org/"&gt;http://www.algo-class.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cs101-class.org/"&gt;http://www.cs101-class.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jan2012.ml-class.org/"&gt;http://jan2012.ml-class.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.saas-class.org/"&gt;http://www.saas-class.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.hci-class.org/"&gt;http://www.hci-class.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.nlp-class.org/"&gt;http://www.nlp-class.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.game-theory-class.org/"&gt;http://www.game-theory-class.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.pgm-class.org/"&gt;http://www.pgm-class.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.crypto-class.org/"&gt;http://www.crypto-class.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.security-class.org/"&gt;http://www.security-class.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-6050928773976818975?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/6050928773976818975/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/cursos-en-stanford-university.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6050928773976818975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6050928773976818975'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/cursos-en-stanford-university.html' title='Cursos en Stanford University'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-3RqpD2rw7lo/TtuKtMONEbI/AAAAAAAAAkY/4i4ytkZtwPo/s72-c/Stanford_university.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-2713295862400774758</id><published>2011-12-04T11:39:00.001-03:00</published><updated>2011-12-04T11:48:28.067-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Date4j vs Joda Time</title><content type='html'>&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ewOzv9hVASE/TtuIF55SLII/AAAAAAAAAkQ/r20gyAORYEk/s1600/date.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-ewOzv9hVASE/TtuIF55SLII/AAAAAAAAAkQ/r20gyAORYEk/s1600/date.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: arial, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;EninfoQ publicaron una articulo muy interesante sobre la libreríaDate4j y lo comparan con Joda Time (librería facilitar el uso defechas en java) quede sorprendido, joda time es mucho más pesadoaunque soporta más cosas (hay que ver si se usan). Paso a copiar latabla comparativa:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: -webkit-auto;"&gt;   &lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table cellpadding="4" cellspacing="0" style="width: 596px;"&gt; &lt;colgroup&gt;&lt;col width="312"&gt;&lt;/col&gt; &lt;col width="266"&gt;&lt;/col&gt; &lt;/colgroup&gt;&lt;tbody&gt;&lt;tr valign="TOP"&gt;  &lt;th style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: 1px solid #000000; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm; padding-top: 0.1cm;" width="312"&gt;   Joda Time&lt;br /&gt;  &lt;/th&gt;  &lt;th style="border: 1px solid #000000; padding: 0.1cm;" width="266"&gt;   &lt;div align="CENTER" style="margin-left: 0.01cm; margin-right: 2.57cm;"&gt;Date4j&lt;/div&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm; padding-top: 0cm;" width="312"&gt;   &lt;span style="font-size: small;"&gt;&lt;span&gt;Numero de   clases&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span&gt;:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://joda-time.sourceforge.net/api-release/index.html"&gt;&lt;span style="color: #0b59b2;"&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;&lt;span&gt;140+&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;  &lt;/td&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm; padding-top: 0cm;" width="266"&gt;   &lt;span style="font-size: small;"&gt;&lt;span&gt;Numero de   clases&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.date4j.net/javadoc/index.html"&gt;&lt;span style="color: #0b59b2;"&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;&lt;span&gt;&amp;lt;   10&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm; padding-top: 0cm;" width="312"&gt;   &lt;span style="font-size: small;"&gt;Clases mutables e   inmutables&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm; padding-top: 0cm;" width="266"&gt;   &lt;span style="font-size: small;"&gt;Clases inmutables&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm; padding-top: 0cm;" width="312"&gt;   &lt;span style="font-size: small;"&gt;Foco en la velocidad y   características&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm; padding-top: 0cm;" width="266"&gt;   &lt;span style="font-size: small;"&gt;Se centran en&amp;nbsp;la   sencillez&amp;nbsp;y la precisión&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm; padding-top: 0cm;" width="312"&gt;   &lt;span style="font-size: small;"&gt;Soporta calendarios   Gregorian, Coptic, Islamic, Buddhist ...&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm; padding-top: 0cm;" width="266"&gt;   &lt;span style="font-size: small;"&gt;Solo soporta Gregorian   calenda&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm; padding-top: 0cm;" width="312"&gt;   &lt;span style="font-size: small;"&gt;Puede remplazar   totalmente el Date de la JDK&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm; padding-top: 0cm;" width="266"&gt;   &lt;span style="font-size: small;"&gt;Trabaja con Date de la   JDK&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm; padding-top: 0cm;" width="312"&gt;   &lt;span style="font-size: small;"&gt;Soporta milisegundos&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm; padding-top: 0cm;" width="266"&gt;   &lt;span style="font-size: small;"&gt;Soporta   nanosegundos&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm; padding-top: 0cm;" width="312"&gt;   &lt;span style="font-size: small;"&gt;El dia "overflow"no   es configurable&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm; padding-top: 0cm;" width="266"&gt;   &lt;span style="font-size: small;"&gt;El   dia "overflow"   es configurable&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm; padding-top: 0cm;" width="312"&gt;   &lt;span style="font-size: small;"&gt;Orientado a la   manipulación total de fechas&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm; padding-top: 0cm;" width="266"&gt;   &lt;div style="margin-left: 0.01cm; margin-right: 1.25cm;"&gt;   &lt;span style="font-size: small;"&gt;Orientado a la manipulación de fechas por base de   datos&lt;/span&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr valign="TOP"&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: none; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0cm; padding-top: 0cm;" width="312"&gt;   &lt;span style="font-size: small;"&gt;Licencia Apache 2.0&lt;/span&gt;&lt;br /&gt;  &lt;/td&gt;  &lt;td style="border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; border-top: none; padding-bottom: 0.1cm; padding-left: 0.1cm; padding-right: 0.1cm; padding-top: 0cm;" width="266"&gt;   &lt;div style="margin-left: 0.01cm; margin-right: 1.25cm;"&gt;   &lt;span style="font-size: small;"&gt;Licencia BSD &lt;/span&gt;   &lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: -webkit-auto;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: arial, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;Esinteresante que existan estas librerías denota que en java no esbueno el manejo de fechas de forma nativa. Por lo visto para poblemassimples es mejor usar Date4j que Joda Time aunque me gustaría que lotraiga la jdk.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: arial, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;Dejo links:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: arial, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;&lt;a href="http://www.infoq.com/news/2011/12/date4j-vs-joda-time"&gt;http://www.infoq.com/news/2011/12/date4j-vs-joda-time&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: arial, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;a href="http://www.date4j.net/"&gt;http://www.date4j.net/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-2713295862400774758?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/2713295862400774758/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/date4j-vs-joda-time.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2713295862400774758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2713295862400774758'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/12/date4j-vs-joda-time.html' title='Date4j vs Joda Time'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-ewOzv9hVASE/TtuIF55SLII/AAAAAAAAAkQ/r20gyAORYEk/s72-c/date.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-6226070076456252902</id><published>2011-11-28T11:30:00.001-03:00</published><updated>2011-11-28T11:40:51.528-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache Click'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Cual es la diferencia entre Apache Click y otros frameworks web java?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-KT42TssbTKA/TtOdJUTLRbI/AAAAAAAAAiA/E0E9YlWkV74/s1600/click.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-KT42TssbTKA/TtOdJUTLRbI/AAAAAAAAAiA/E0E9YlWkV74/s1600/click.png" /&gt;&lt;/a&gt;&lt;/div&gt;Cual es la diferencia entre apache click y otros frameworks web java? y porque deberíamos aprender este framework web? &lt;br /&gt;&lt;br /&gt;La diferencia tecnológica más importante es que apache Click no mantiene estados en el servidor (es stateless)  esto lo hace ideal para usarlo en proyectos los cuales podrían tener muchos usuarios. Dado que si mantenemos estados en el servidor y vamos guardando cosas en estas sesiones cuando tengamos millones de usuarios; el servidor va a necesitar mucha memoria para trabajar. &lt;br /&gt;&lt;br /&gt;Apache click no mantiene estados en el servidor (aunque se lo puede configurar para que si) lo que permite mayor escalabilidad. En click las paginas y los componentes son recreados por cada request. La visión de apache click es una creación de paginas web de forma más tradicional. &lt;br /&gt;&lt;br /&gt;Apache click tiene más ventajas pero sin duda esta es la razón más importante por la que yo elegiría este framework.&lt;br /&gt;&lt;br /&gt;Apache click esta en constante desarrollo y es un proyecto top-level de Apache foundation. &lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://click.apache.org/"&gt;http://click.apache.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://click.apache.org/docs/user-guide/htmlsingle/click-book.html"&gt;http://click.apache.org/docs/user-guide/htmlsingle/click-book.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-6226070076456252902?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/6226070076456252902/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/cual-es-la-diferencia-entre-apache.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6226070076456252902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6226070076456252902'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/cual-es-la-diferencia-entre-apache.html' title='Cual es la diferencia entre Apache Click y otros frameworks web java?'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-KT42TssbTKA/TtOdJUTLRbI/AAAAAAAAAiA/E0E9YlWkV74/s72-c/click.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-1361348969618021215</id><published>2011-11-26T15:30:00.001-03:00</published><updated>2011-11-28T10:50:56.589-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NewSql'/><category scheme='http://www.blogger.com/atom/ns#' term='NuoDB'/><title type='text'>NuoDB</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-rgUyE1MXrTE/TtEwLOW_nsI/AAAAAAAAAh4/qv-bmJX0o1Y/s1600/nuodb.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-rgUyE1MXrTE/TtEwLOW_nsI/AAAAAAAAAh4/qv-bmJX0o1Y/s1600/nuodb.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;NuoDB es una base de datos newSQL. Se ve y se comporta como una base de datos relacional pero internamente nos permite tener una base distribuida. Si vamos a su pagina, como premisas afirma 100% ACID, 100% SQL y 100% escalable. Este conjunto de&amp;nbsp;características combinadas hacen&amp;nbsp;NuoDB&amp;nbsp;el líder&amp;nbsp;en el mercado&amp;nbsp;NewSQL.&amp;nbsp;Lo que diferencia a&amp;nbsp;NuoDB&amp;nbsp;además de&amp;nbsp;otros&amp;nbsp;NewSQL&amp;nbsp;y soluciones&amp;nbsp;NoSQL&amp;nbsp;es cómo&amp;nbsp;organizar&amp;nbsp;y garantizar&amp;nbsp;las transacciones ACID&amp;nbsp;en un entorno distribuido.&lt;br /&gt;&lt;br /&gt;El&amp;nbsp;sistema está diseñado para&amp;nbsp;ofrecer una visión coherente&amp;nbsp;de datos,&amp;nbsp;alta disponibilidad y&amp;nbsp;la capacidad de detectar&amp;nbsp;y gestionar&amp;nbsp;las particiones&amp;nbsp;de una manera predecible&amp;nbsp;y consistente.&lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://nuodb.com/"&gt;http://nuodb.com/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://nuodb.com/how_it_works.html"&gt;http://nuodb.com/how_it_works.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-1361348969618021215?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/1361348969618021215/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/nuodb.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1361348969618021215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1361348969618021215'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/nuodb.html' title='NuoDB'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-rgUyE1MXrTE/TtEwLOW_nsI/AAAAAAAAAh4/qv-bmJX0o1Y/s72-c/nuodb.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-3769896547286869008</id><published>2011-11-26T13:44:00.001-03:00</published><updated>2011-11-29T23:29:56.229-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data grid/cache'/><category scheme='http://www.blogger.com/atom/ns#' term='NewSql'/><category scheme='http://www.blogger.com/atom/ns#' term='NoSql'/><title type='text'>NoSQL, NewSQL y Data grid/cache</title><content type='html'>NewSql es una forma abreviada de dirigirnos a las bases de datos realcionales las cuales están preparadas para escalar, tienen en común el desarrollo de nuevos productos de base de datos relacional y servicios diseñados para llevar los beneficios del modelo relacional de las arquitecturas distribuidas, o para mejorar el rendimiento de bases de datos relacionales en la medida en que la escalabilidad horizontal es un la necesidad. &lt;br /&gt;&lt;br /&gt;Podemos nombrar los siguientes productos como newSQL Clustrix, GenieDB, ScalArc, Schooner, VoltDB, RethinkDB, ScaleDB, Akiban, CodeFutures, ScaleBase, Translattice, and NuoDB, Drizzle, MySQL Cluster con NDB y MySQL con HandlerSocket. El ultimo grupo incluye Tokutek y JustOne DB. Podemos habler de NewSQL como servicio  en el que podemos incluir Amazon Relational Database Service, Microsoft SQL Azure, Xeround, Database.com and FathomDB.&lt;br /&gt;&lt;br /&gt;Como vemos ha cambiado bastante el&amp;nbsp;ámbito&amp;nbsp;de las bases de datos, las cuales se fueron adaptando para poder ofrecer mejor escalabilidad. Podemos agrupar las bases de datos escalables en 3 tipos: NoSQL, NewSQL y Data grid/cache. &lt;br /&gt;&lt;br /&gt;InfoQ nos muestra la siguiente imagen donde muestra como se agrupan los productos según su clasificación:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-47hvsxEvAMs/TtEXzfWGjJI/AAAAAAAAAhw/Ga-k341iBBU/s1600/database.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="374" src="http://2.bp.blogspot.com/-47hvsxEvAMs/TtEXzfWGjJI/AAAAAAAAAhw/Ga-k341iBBU/s640/database.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-3769896547286869008?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/3769896547286869008/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/nosql-newsql-y-data-gridcache.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3769896547286869008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3769896547286869008'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/nosql-newsql-y-data-gridcache.html' title='NoSQL, NewSQL y Data grid/cache'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-47hvsxEvAMs/TtEXzfWGjJI/AAAAAAAAAhw/Ga-k341iBBU/s72-c/database.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-7168920123617906325</id><published>2011-11-20T12:49:00.001-03:00</published><updated>2011-11-20T13:00:37.229-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><category scheme='http://www.blogger.com/atom/ns#' term='jboss'/><title type='text'>EJB 3 + Maven 2 + JBoss 6 + Eclipse</title><content type='html'>Vamos a crear un proyecto Jee con maven y que use como servidor Jboss con la siguiente estructura:  &lt;br /&gt;&lt;br /&gt;pom parent _&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|__ ejb&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|__ war&lt;br /&gt;&lt;br /&gt;Bueno creamos el proyecto parent:&lt;br /&gt;&lt;br /&gt;mvn archetype:create -DgroupId=com.ejemplos -DartifactId=EjemploJEE&lt;br /&gt;&lt;br /&gt;Y modificamos el pom para que quede de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;&lt;br /&gt;  &lt;modelversion&gt;4.0.0&lt;/modelversion&gt;&lt;br /&gt;&lt;br /&gt;  &lt;groupid&gt;org.assembly&lt;/groupid&gt;&lt;br /&gt;  &lt;artifactid&gt;ExampleJEE&lt;/artifactid&gt;&lt;br /&gt;  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&lt;br /&gt;  &lt;packaging&gt;pom&lt;/packaging&gt;&lt;br /&gt;&lt;br /&gt;  &lt;name&gt;ExampleJEE&lt;/name&gt;&lt;br /&gt;  &lt;url&gt;http://maven.apache.org&lt;/url&gt;&lt;br /&gt;&lt;br /&gt;  &lt;properties&gt;&lt;br /&gt;    &lt;project.build.sourceencoding&gt;UTF-8&lt;/project.build.sourceencoding&gt;&lt;br /&gt;  &lt;/properties&gt;&lt;br /&gt;&lt;br /&gt;  &lt;build&gt; &lt;br /&gt; &lt;plugins&gt; &lt;br /&gt;  &lt;plugin&gt; &lt;br /&gt;   &lt;artifactid&gt;maven-compiler-plugin&lt;/artifactid&gt; &lt;br /&gt;   &lt;configuration&gt; &lt;br /&gt;    &lt;source&gt;&lt;/source&gt;1.6 &lt;br /&gt;    &lt;target&gt;1.6&lt;/target&gt; &lt;br /&gt;   &lt;/configuration&gt; &lt;br /&gt;  &lt;/plugin&gt; &lt;br /&gt;  &lt;plugin&gt; &lt;br /&gt;   &lt;groupid&gt;org.apache.maven.plugins&lt;/groupid&gt; &lt;br /&gt;   &lt;artifactid&gt;maven-eclipse-plugin&lt;/artifactid&gt; &lt;br /&gt;   &lt;version&gt;2.7&lt;/version&gt;      &lt;br /&gt;   &lt;configuration&gt; &lt;br /&gt;    &lt;wtpversion&gt;2.0&lt;/wtpversion&gt; &lt;br /&gt;    &lt;downloadsources&gt;true&lt;/downloadsources&gt; &lt;br /&gt;   &lt;/configuration&gt; &lt;br /&gt;  &lt;/plugin&gt; &lt;br /&gt;  &lt;plugin&gt; &lt;br /&gt;   &lt;groupid&gt;org.apache.maven.plugins&lt;/groupid&gt;   &lt;br /&gt;      &lt;artifactid&gt;maven-javadoc-plugin&lt;/artifactid&gt;    &lt;br /&gt;  &lt;/plugin&gt; &lt;br /&gt;  &lt;plugin&gt; &lt;br /&gt;   &lt;groupid&gt;org.apache.maven.plugins&lt;/groupid&gt;   &lt;br /&gt;       &lt;artifactid&gt;maven-project-info-reports-plugin&lt;/artifactid&gt;    &lt;br /&gt;  &lt;/plugin&gt; &lt;br /&gt; &lt;/plugins&gt; &lt;br /&gt;  &lt;/build&gt;&lt;br /&gt;&lt;br /&gt;  &lt;repositories&gt;&lt;br /&gt;        &lt;repository&gt;&lt;br /&gt;            &lt;id&gt;jboss-repository&lt;/id&gt;&lt;br /&gt;            &lt;name&gt;JBoss Repository&lt;/name&gt;&lt;br /&gt;            &lt;url&gt;https://repository.jboss.org/nexus/content/groups/public/&lt;/url&gt;&lt;br /&gt;            &lt;layout&gt;default&lt;/layout&gt;&lt;br /&gt;        &lt;/repository&gt;&lt;br /&gt;    &lt;/repositories&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;dependencies&gt;&lt;br /&gt;     &lt;br /&gt;    &lt;dependency&gt;&lt;br /&gt;      &lt;groupid&gt;jboss&lt;/groupid&gt;&lt;br /&gt;      &lt;artifactid&gt;jboss-ejb-api&lt;/artifactid&gt;&lt;br /&gt;      &lt;version&gt;4.2.0.GA&lt;/version&gt;&lt;br /&gt;      &lt;scope&gt;provided&lt;/scope&gt;&lt;br /&gt;    &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;    &lt;dependency&gt;&lt;br /&gt;      &lt;groupid&gt;junit&lt;/groupid&gt;&lt;br /&gt;      &lt;artifactid&gt;junit&lt;/artifactid&gt;&lt;br /&gt;      &lt;version&gt;4.10&lt;/version&gt;&lt;br /&gt;      &lt;scope&gt;test&lt;/scope&gt;&lt;br /&gt;    &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;  &lt;/dependencies&gt;&lt;br /&gt;&lt;br /&gt;&lt;/project&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Creamos el proyecto ejb: &lt;br /&gt;&lt;br /&gt;cd  ExampleJEE&lt;br /&gt;mvn archetype:create -DgroupId=org.assembly -DartifactId=ExampleEJB&lt;br /&gt;&lt;br /&gt;Y cambiamos el pom de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;&lt;br /&gt;&lt;br /&gt;  &lt;modelversion&gt;4.0.0&lt;/modelversion&gt;&lt;br /&gt;&lt;br /&gt;  &lt;parent&gt;&lt;br /&gt;    &lt;artifactid&gt;ExampleJEE&lt;/artifactid&gt;&lt;br /&gt;    &lt;groupid&gt;org.assembly&lt;/groupid&gt;&lt;br /&gt;    &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&lt;br /&gt;  &lt;/parent&gt;&lt;br /&gt;&lt;br /&gt;  &lt;groupid&gt;org.assembly&lt;/groupid&gt;&lt;br /&gt;&lt;br /&gt;  &lt;artifactid&gt;ExampleEJB&lt;/artifactid&gt;&lt;br /&gt;&lt;br /&gt;  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&lt;br /&gt;&lt;br /&gt;  &lt;packaging&gt;ejb&lt;/packaging&gt;&lt;br /&gt;&lt;br /&gt;  &lt;name&gt;ExampleEAR&lt;/name&gt;&lt;br /&gt;&lt;br /&gt;  &lt;url&gt;http://maven.apache.org&lt;/url&gt;&lt;br /&gt;&lt;br /&gt;  &lt;dependencies&gt;&lt;br /&gt;   &lt;br /&gt;       &lt;dependency&gt;&lt;br /&gt;            &lt;groupid&gt;javax.persistence&lt;/groupid&gt;&lt;br /&gt;            &lt;artifactid&gt;persistence-api&lt;/artifactid&gt;&lt;br /&gt;            &lt;version&gt;1.0&lt;/version&gt;&lt;br /&gt;            &lt;scope&gt;provided&lt;/scope&gt;&lt;br /&gt;        &lt;/dependency&gt;   &lt;br /&gt;        &lt;br /&gt;  &lt;/dependencies&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;properties&gt;&lt;br /&gt;    &lt;project.build.sourceencoding&gt;UTF-8&lt;/project.build.sourceencoding&gt;&lt;br /&gt;  &lt;/properties&gt;&lt;br /&gt;&lt;br /&gt; &lt;build&gt;&lt;br /&gt;    &lt;plugins&gt;&lt;br /&gt;    &lt;br /&gt;      &lt;plugin&gt;&lt;br /&gt;        &lt;groupid&gt;org.apache.maven.plugins&lt;/groupid&gt;&lt;br /&gt;        &lt;artifactid&gt;maven-ejb-plugin&lt;/artifactid&gt;&lt;br /&gt;        &lt;version&gt;2.1&lt;/version&gt;&lt;br /&gt;        &lt;configuration&gt;&lt;br /&gt;          &lt;ejbversion&gt;3.0&lt;/ejbversion&gt;&lt;br /&gt;        &lt;/configuration&gt;&lt;br /&gt;      &lt;/plugin&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/plugins&gt;&lt;br /&gt;  &lt;/build&gt;&lt;br /&gt;&lt;br /&gt;&lt;/project&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ahora vamos a generar el proyecto war siempre dentro de ExampleJEE:&lt;br /&gt;&lt;br /&gt;mvn archetype:create -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=org.assembly -DartifactId=ExampleWAR &lt;br /&gt;&lt;br /&gt;Y cambiamos el pom de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;modelversion&gt;4.0.0&lt;/modelversion&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;parent&gt;&lt;br /&gt;    &lt;artifactid&gt;ExampleJEE&lt;/artifactid&gt;&lt;br /&gt;    &lt;groupid&gt;org.assembly&lt;/groupid&gt;&lt;br /&gt;    &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&lt;br /&gt;  &lt;/parent&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;groupid&gt;org.assembly&lt;/groupid&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;artifactid&gt;ExampleWAR&lt;/artifactid&gt;&lt;br /&gt;&lt;br /&gt;  &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&lt;br /&gt;&lt;br /&gt;  &lt;packaging&gt;war&lt;/packaging&gt;&lt;br /&gt;&lt;br /&gt;  &lt;name&gt;ExampleWAR Maven Webapp&lt;/name&gt;&lt;br /&gt;&lt;br /&gt;  &lt;url&gt;http://maven.apache.org&lt;/url&gt;&lt;br /&gt;&lt;br /&gt;  &lt;build&gt;&lt;br /&gt;    &lt;finalname&gt;ExampleWAR&lt;/finalname&gt;&lt;br /&gt;  &lt;/build&gt;&lt;br /&gt;&lt;br /&gt;  &lt;dependencies&gt;&lt;br /&gt; &lt;br /&gt;   &lt;dependency&gt;&lt;br /&gt;            &lt;groupid&gt;org.assembly&lt;/groupid&gt;&lt;br /&gt;            &lt;artifactid&gt;ExampleEJB&lt;/artifactid&gt;&lt;br /&gt;            &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;&lt;br /&gt;            &lt;scope&gt;provided&lt;/scope&gt;&lt;br /&gt;        &lt;/dependency&gt;&lt;br /&gt; &lt;br /&gt;     &lt;dependency&gt;&lt;br /&gt;            &lt;groupid&gt;javax.servlet&lt;/groupid&gt;&lt;br /&gt;            &lt;artifactid&gt;servlet-api&lt;/artifactid&gt;&lt;br /&gt;            &lt;version&gt;2.5&lt;/version&gt;&lt;br /&gt;            &lt;scope&gt;provided&lt;/scope&gt;&lt;br /&gt;        &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;  &lt;/dependencies&gt;&lt;br /&gt;&lt;br /&gt;&lt;/project&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Pongo la dependencia a ExampleEJB como provided dado que no quiero que maven agregue el jar dentro del war después hago deploy del proyecto EJB y del WAR.&lt;br /&gt;&lt;br /&gt;Ahora mvn clean install parados en el proyecto parent (ExampleJEE) y mvn eclipse:eclipse (si usan eclipse).&lt;br /&gt;&lt;br /&gt;Bueno ahora importamos el proyecto a eclipse: file-&amp;gt; import-&amp;gt; Existing Projects into Workspace … Elegimos el path donde se encuentra el proyecto  ExampleJEE y importamos. &lt;br /&gt;&lt;br /&gt;Vamos a crear las siguientes clases en ExampleEJB:&lt;br /&gt;&lt;br /&gt;La interfaz del servicio:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;package org.assembly.service.api;&lt;br /&gt;&lt;br /&gt;import javax.ejb.Remote;&lt;br /&gt;&lt;br /&gt;@Remote&lt;br /&gt;public interface HolaMundo {&lt;br /&gt; &lt;br /&gt; String decirHola();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;La implementación :&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;package org.assembly.service.impl;&lt;br /&gt;&lt;br /&gt;import javax.ejb.Stateless;&lt;br /&gt;&lt;br /&gt;import org.assembly.service.api.HolaMundo;&lt;br /&gt;&lt;br /&gt;@Stateless&lt;br /&gt;public class HolaMundoImpl implements HolaMundo {&lt;br /&gt;&lt;br /&gt; /* (non-Javadoc)&lt;br /&gt;  * @see org.assembly.service.api.HolaMundo#decirHola()&lt;br /&gt;  */&lt;br /&gt; @Override&lt;br /&gt; public String decirHola() {&lt;br /&gt;  return "Hola";&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Además agregamos este archivo en src/main/resources (si no existe la carpeta la crean) y lo nombramos jndi.properties&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory&lt;br /&gt;java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces&lt;br /&gt;java.naming.provider.url=localhost:1099&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y en el Proyecto web agregamos este servlet:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;package org.assembly.web;&lt;br /&gt;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.PrintWriter;&lt;br /&gt;&lt;br /&gt;import javax.naming.Context;&lt;br /&gt;import javax.naming.InitialContext;&lt;br /&gt;import javax.naming.NamingException;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.HttpServlet;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;br /&gt;&lt;br /&gt;import org.assembly.service.api.HolaMundo;&lt;br /&gt;&lt;br /&gt;public class HolaMundoServlet extends HttpServlet {&lt;br /&gt;&lt;br /&gt; private static final long serialVersionUID = 7819040755879233852L;&lt;br /&gt;&lt;br /&gt; private HolaMundo holaMundo = null;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; public HolaMundoServlet() {&lt;br /&gt;  final Context context;&lt;br /&gt;  try {&lt;br /&gt;   context = new InitialContext();&lt;br /&gt;   holaMundo = (HolaMundo) context.lookup("HolaMundoImpl/remote");&lt;br /&gt;&lt;br /&gt;  } catch (NamingException e) {&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; protected void doGet(HttpServletRequest req, HttpServletResponse resp)&lt;br /&gt;   throws ServletException, IOException {&lt;br /&gt;  final PrintWriter out = resp.getWriter();&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;   out.println(holaMundo.decirHola());&lt;br /&gt;  } catch (Exception e) {&lt;br /&gt;   out.println(e.getStackTrace().toString());&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Por ultimo modificamos el web.xml para que escuche el servlet:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;web-app&gt;&lt;br /&gt;  &lt;display-name&gt;Archetype Created Web Application&lt;/display-name&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;    &lt;servlet&gt;&lt;br /&gt;        &lt;servlet-name&gt;hola&lt;/servlet-name&gt;&lt;br /&gt;        &lt;servlet-class&gt;org.assembly.web.HolaMundoServlet&lt;/servlet-class&gt;&lt;br /&gt;    &lt;/servlet&gt;&lt;br /&gt;&lt;br /&gt;    &lt;servlet-mapping&gt;&lt;br /&gt;        &lt;servlet-name&gt;hola&lt;/servlet-name&gt;&lt;br /&gt;        &lt;url-pattern&gt;/hola.html&lt;/url-pattern&gt;&lt;br /&gt;    &lt;/servlet-mapping&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;&lt;/web-app&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ahora lo que hacemos es instalar el plugin Jboss Tools en eclipse lo podemos hacer desde el Marketplace de eclipse. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/--lLn4jScSJc/TskjwLVdtGI/AAAAAAAAAhg/mm_tP0K4hQU/s1600/Pantallazo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/--lLn4jScSJc/TskjwLVdtGI/AAAAAAAAAhg/mm_tP0K4hQU/s400/Pantallazo.png" width="298" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ahora bajar Jboss 6 desde http://download.jboss.org/jbossas/6.1/jboss-as-distribution-6.1.0.Final.zip&lt;br /&gt;&lt;br /&gt;Instalar el Jboss desde el panel de Servers menú contextual new. Luego importamos nuestros proyectos. Si todo fue bien debería verse el entorno así:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fDbgqNHpnEo/Tskj6rd73zI/AAAAAAAAAho/eW_-_EjLB5U/s1600/Pantallazo-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="388" src="http://4.bp.blogspot.com/-fDbgqNHpnEo/Tskj6rd73zI/AAAAAAAAAho/eW_-_EjLB5U/s640/Pantallazo-1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Corremos Jboss y en http://localhost:8080/ExampleWAR/hola.html deberíamos ver un “hola”&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-7168920123617906325?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/7168920123617906325/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/ejb-3-maven-2-jboss-6-eclipse.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7168920123617906325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7168920123617906325'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/ejb-3-maven-2-jboss-6-eclipse.html' title='EJB 3 + Maven 2 + JBoss 6 + Eclipse'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/--lLn4jScSJc/TskjwLVdtGI/AAAAAAAAAhg/mm_tP0K4hQU/s72-c/Pantallazo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-6923123454166045123</id><published>2011-11-17T00:40:00.001-03:00</published><updated>2011-11-17T00:50:57.027-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='play'/><category scheme='http://www.blogger.com/atom/ns#' term='Akka'/><title type='text'>Typesafe incluye a play en su Stack</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wrOs3xl8DbQ/TsSD_WFtx-I/AAAAAAAAAhM/mC7bIP9cWJs/s1600/logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-wrOs3xl8DbQ/TsSD_WFtx-I/AAAAAAAAAhM/mC7bIP9cWJs/s1600/logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Typesafe le empresa formada a raíz de Scala anuncio que agregara a play 2.0 a su stack. &amp;nbsp;Stack de typesafe es una plataforma que permite desarrollar software con scala teniendo a Akka como midleware. Bueno este stack va a tener a play como plataforma para desarrollo web. Recordemos que play es un framework para desarrollo&amp;nbsp;ágil&amp;nbsp;en Java y Scala (a partir de la versión 2.0).&lt;br /&gt;&lt;br /&gt;El framework play va podes ser usado tanto en Java como en scala.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-6aIRF6gMPd4/TsSEGeAsgoI/AAAAAAAAAhU/dExDewS7hag/s1600/logo-6e4dc6876ce90c5e.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-6aIRF6gMPd4/TsSEGeAsgoI/AAAAAAAAAhU/dExDewS7hag/s1600/logo-6e4dc6876ce90c5e.png" /&gt;&lt;/a&gt;&amp;nbsp;Dejo links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://typesafe.com/stack"&gt;http://typesafe.com/stack&lt;/a&gt;&lt;br /&gt;&lt;a href="http://typesafe.com/company/news/15856"&gt;http://typesafe.com/company/news/15856&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.typesafe.com/typesafe-stack-adds-play-framework"&gt;http://blog.typesafe.com/typesafe-stack-adds-play-framework&lt;/a&gt;&lt;br /&gt;&lt;a href="http://typesafe.com/technology/play"&gt;http://typesafe.com/technology/play&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-6923123454166045123?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/6923123454166045123/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/typesafe-incluye-play-en-su-stack.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6923123454166045123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6923123454166045123'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/typesafe-incluye-play-en-su-stack.html' title='Typesafe incluye a play en su Stack'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-wrOs3xl8DbQ/TsSD_WFtx-I/AAAAAAAAAhM/mC7bIP9cWJs/s72-c/logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-7431346250832579181</id><published>2011-11-17T00:13:00.001-03:00</published><updated>2011-11-17T00:13:54.183-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala'/><title type='text'>Libro Gratuito de Scala!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-_xzS1kmKi0Q/TsR72DqejiI/AAAAAAAAAhE/FFIHdnUAFXE/s1600/showCover.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-_xzS1kmKi0Q/TsR72DqejiI/AAAAAAAAAhE/FFIHdnUAFXE/s200/showCover.png" width="153" /&gt;&lt;/a&gt;&lt;/div&gt;Typesafe nos regala un libro sobre scala!!&lt;br /&gt;&lt;br /&gt;Dejo el link:&amp;nbsp;&lt;a href="http://typesafe.com/resources/scala-for-the-impatient"&gt;http://typesafe.com/resources/scala-for-the-impatient&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-7431346250832579181?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/7431346250832579181/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/libro-gratuito-de-scala.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7431346250832579181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7431346250832579181'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/libro-gratuito-de-scala.html' title='Libro Gratuito de Scala!'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-_xzS1kmKi0Q/TsR72DqejiI/AAAAAAAAAhE/FFIHdnUAFXE/s72-c/showCover.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-2169845687444888552</id><published>2011-11-16T23:58:00.001-03:00</published><updated>2011-11-16T23:58:20.100-03:00</updated><title type='text'>Me la venia venir</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-iEpljSLaQW4/TsR4NS8Tv3I/AAAAAAAAAg8/ZGdno6EDXUc/s1600/flex.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-iEpljSLaQW4/TsR4NS8Tv3I/AAAAAAAAAg8/ZGdno6EDXUc/s200/flex.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Increíble&amp;nbsp;leo en javahispano que adobe abandona Flex!!&lt;br /&gt;&lt;br /&gt;"&lt;span class="Apple-style-span" style="background-color: #f9fafc; font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 15px; line-height: 22px;"&gt;Una semana después de haber anunciado que no continuaría desarrollando Flash para dispositivos móviles,&amp;nbsp;&lt;a href="http://blogs.adobe.com/flex/2011/11/your-questions-about-flex.html" style="color: #089afa; text-decoration: none;"&gt;Adobe anuncia que va a donar el Flex&amp;nbsp;&lt;span class="caps"&gt;SDK&amp;nbsp;&lt;/span&gt;y BlazeDS a la Apache Software Foundation&lt;/a&gt;. Esta noticia ya ha despertado&amp;nbsp;&lt;a href="http://forums.adobe.com/message/4021343#4021343" style="color: #089afa; text-decoration: none;"&gt;múltiples críticas y quejas por parte de los usuarios de Flex&lt;/a&gt;, que por lo general no están en absoluto contentos con un movimiento que ven como un abandono de Flex."&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f9fafc; font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 15px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f9fafc;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, Geneva, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 22px;"&gt;Para mi esto significa el fin de RIA basada en plugins y un comienzo de Ria basada en HTML 5 y Javascript.&amp;nbsp;Después&amp;nbsp;que ie 10 anuncie que no soportara plugines era&amp;nbsp;cuestión&amp;nbsp;de tiempo que las demás empresas se den cuenta por donde viene la mano.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f9fafc; font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 15px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f9fafc;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, Geneva, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 22px;"&gt;Que opinan?&amp;nbsp;Murió&amp;nbsp;Ria&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #f9fafc; font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 15px; line-height: 22px;"&gt;basada en plugins?&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f9fafc; font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 15px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f9fafc; font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 15px; line-height: 22px;"&gt;Dejo el link:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f9fafc; font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 15px; line-height: 22px;"&gt;&lt;a href="http://www.javahispano.org/portada/2011/11/16/adobe-anuncia-que-abandona-flex.html"&gt;http://www.javahispano.org/portada/2011/11/16/adobe-anuncia-que-abandona-flex.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f9fafc; font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 15px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f9fafc; font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 15px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-2169845687444888552?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/2169845687444888552/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/me-la-venia-venir.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2169845687444888552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2169845687444888552'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/me-la-venia-venir.html' title='Me la venia venir'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-iEpljSLaQW4/TsR4NS8Tv3I/AAAAAAAAAg8/ZGdno6EDXUc/s72-c/flex.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-3790635018982363401</id><published>2011-11-13T00:11:00.001-03:00</published><updated>2012-01-27T17:58:25.690-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='play'/><title type='text'>Play</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JLw2oCjUaeA/Tr8zizQgRnI/AAAAAAAAAgo/wawnv5D9L_I/s1600/23477_10150158155535113_333015290112_11876478_7114236_n.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" src="http://4.bp.blogspot.com/-JLw2oCjUaeA/Tr8zizQgRnI/AAAAAAAAAgo/wawnv5D9L_I/s320/23477_10150158155535113_333015290112_11876478_7114236_n.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;El objetivo de play es hacer aplicaciones Web rapidas con Java y Scala. Se centra en la productividad de los desarrolladores y provee una arquitectura basada en REST. play! es un marco de trabajo para desarrollo ágil de software. &lt;br /&gt;&lt;br /&gt;Entre las características podemos nombrar: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;a href="http://3.bp.blogspot.com/-1ztamz6j2m4/Tr8zpArAyJI/AAAAAAAAAgw/qagdivfJLMQ/s1600/play.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-1ztamz6j2m4/Tr8zpArAyJI/AAAAAAAAAgw/qagdivfJLMQ/s1600/play.jpg" /&gt;&lt;/a&gt;&lt;li&gt;Una arquitectura simple basada en el patrón MVC y RestFull&lt;/li&gt;&lt;li&gt;Utiliza JPA&lt;/li&gt;&lt;li&gt;Testeable (pensado para hacer TDD)&lt;/li&gt;&lt;li&gt;y mucho más!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Dejo este video que me dejo impresionado:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;iframe allowfullscreen="" frameborder="0" height="225" src="http://player.vimeo.com/video/7087610?title=0&amp;amp;byline=0&amp;amp;portrait=0&amp;amp;color=ffffff" webkitallowfullscreen="" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/7087610"&gt;A web app  in 10 minutes using Play framework&lt;/a&gt; from &lt;a href="http://vimeo.com/user2463720"&gt;zenexity&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Dejo links: &lt;br /&gt;&lt;a href="http://www.playframework.org/"&gt;http://www.playframework.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.playframework.org/documentation/1.2.3/overview"&gt;http://www.playframework.org/documentation/1.2.3/overview&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.playframework.org/documentation/1.2.3/guide1"&gt;http://www.playframework.org/documentation/1.2.3/guide1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.playframework.org/2.0"&gt;http://www.playframework.org/2.0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-3790635018982363401?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/3790635018982363401/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/play.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3790635018982363401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3790635018982363401'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/play.html' title='Play'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-JLw2oCjUaeA/Tr8zizQgRnI/AAAAAAAAAgo/wawnv5D9L_I/s72-c/23477_10150158155535113_333015290112_11876478_7114236_n.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-89770921261933283</id><published>2011-11-11T01:17:00.001-03:00</published><updated>2011-11-11T14:06:51.577-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Xtend'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><title type='text'>Ahora le toca a eclipse!</title><content type='html'>&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-GCV3e7pOwvU/TryiIuZ2qWI/AAAAAAAAAgY/rqZXu3nPuIw/s1600/Xtend.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="120" src="http://4.bp.blogspot.com/-GCV3e7pOwvU/TryiIuZ2qWI/AAAAAAAAAgY/rqZXu3nPuIw/s320/Xtend.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;Luegoque Jboss presente su lenguaje Ceylon para la plataforma Java; ahorala organización eclipse pone una nueva ficha en el tablero. &lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;Xtendes el lenguaje de eclipse. El cual corre sobre la plataforma java. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span style="color: black; font-family: Verdana,sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;Xtendnació con el objetivo de simplificar el lenguaje y escribir menoslineas de código. Entre sus características podemos nombrar: &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;Tipadoestático&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;Facilitael desarrollo&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;Closures&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;Compilaa&amp;nbsp;código&amp;nbsp;Java no a bycode&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;Sintaxissimilar a Java&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;Sedesarrollo con Xtext y se basa en Xbase&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;Veamosun ejemplo:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre class="western" style="font-style: normal; text-decoration: none;"&gt;&lt;span style="color: #4444cc;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;import my::metamodel;extension other::ExtensionFile;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #4444cc;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;/**&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4444cc;"&gt;  &lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-style: normal;"&gt;* Documentation&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4444cc;"&gt;  &lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-style: normal;"&gt;*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4444cc;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;anExpressionExtension(String stringParam) :&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4444cc;"&gt;  &lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-style: normal;"&gt;doingStuff(with(stringParam))&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4444cc;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #4444cc;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;/**&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4444cc;"&gt;  &lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-style: normal;"&gt;* java extensions are just mappings&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4444cc;"&gt;  &lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-style: normal;"&gt;*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4444cc;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;String aJavaExtension(String param) : JAVA&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4444cc;"&gt;  &lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-style: normal;"&gt;my.JavaClass.staticMethod(java.lang.String)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #4444cc;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-size: x-small;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;Noes&amp;nbsp;el objetivo de&amp;nbsp;reemplazar&amp;nbsp;Java.&amp;nbsp;Por lotanto,&amp;nbsp;los frameworks pueden interactuar con código&amp;nbsp;Xtend&amp;nbsp;igualque interactúa Java. También&amp;nbsp;puede llamar afunciones&amp;nbsp;Java,&amp;nbsp;Xtend&amp;nbsp;de una maneratotalmente&amp;nbsp;transparente.&amp;nbsp;Y, por supuesto, ofrece un&amp;nbsp;modernoIDE&amp;nbsp;basado en Eclipse&amp;nbsp;IDE&amp;nbsp;integrado con&amp;nbsp;lasherramientas de&amp;nbsp;desarrollo de Java (JDT).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;Dejo un ejemplo que compara java con Xtend:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Rwii5I8CCao/TryiJqJpxRI/AAAAAAAAAgg/wOZH4VVOSgo/s1600/Xtend_and_Java.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="247" src="http://2.bp.blogspot.com/-Rwii5I8CCao/TryiJqJpxRI/AAAAAAAAAgg/wOZH4VVOSgo/s640/Xtend_and_Java.png" width="580" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;Dejo links:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;a href="http://www.eclipse.org/Xtext/documentation/2_1_0/01-Xtend_Introduction.php"&gt;http://www.eclipse.org/Xtext/documentation/2_1_0/01-Xtend_Introduction.php&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333; font-family: Verdana,sans-serif;"&gt;&lt;a href="http://www.openarchitectureware.org/pub/documentation/4.3.1/html/contents/core_reference.html#Xtend_language"&gt;http://www.openarchitectureware.org/pub/documentation/4.3.1/html/contents/core_reference.html#Xtend_language&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;&lt;a href="http://www.eclipse.org/Xtext/#xtend2"&gt;http://www.eclipse.org/Xtext/#xtend2&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;a href="http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.xpand.doc/help/ch01s05.html"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.xpand.doc/help/ch01s05.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana,sans-serif;"&gt;Dejo un video: &lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-style: normal; margin-bottom: 0cm;"&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;iframe allowfullscreen="" frameborder="0" height="225" src="http://player.vimeo.com/video/31248257?title=0&amp;amp;byline=0&amp;amp;portrait=0" webkitallowfullscreen="" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/31248257"&gt;Xtend Intro&lt;/a&gt; from &lt;a href="http://vimeo.com/user2817486"&gt;Xtext Team&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-89770921261933283?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/89770921261933283/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/ahora-le-toca-eclipse.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/89770921261933283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/89770921261933283'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/ahora-le-toca-eclipse.html' title='Ahora le toca a eclipse!'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-GCV3e7pOwvU/TryiIuZ2qWI/AAAAAAAAAgY/rqZXu3nPuIw/s72-c/Xtend.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-8147711215076058078</id><published>2011-11-10T00:10:00.000-03:00</published><updated>2011-11-10T00:10:05.618-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>Private Cloud for Dummies</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-UENsN9IPm9Y/TrtAZSLaE2I/AAAAAAAAAgQ/Y6wrdIb55F4/s1600/9781118152843_220x340.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-UENsN9IPm9Y/TrtAZSLaE2I/AAAAAAAAAgQ/Y6wrdIb55F4/s320/9781118152843_220x340.gif" width="207" /&gt;&lt;/a&gt;&lt;/div&gt;Libro gratuito sobre la nube! IBM nos regala un libro gratuito sobre las&amp;nbsp;nubes&amp;nbsp;privadas, lo unico malo es que hay que registrarse.&lt;br /&gt;&lt;br /&gt;Dejo el link :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/vrm/newsletter_11421_9654_211548_email_DYN_1IN/EGoette105121800"&gt;http://www.ibm.com/vrm/newsletter_11421_9654_211548_email_DYN_1IN/EGoette105121800&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-8147711215076058078?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/8147711215076058078/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/private-cloud-for-dummies.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8147711215076058078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8147711215076058078'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/private-cloud-for-dummies.html' title='Private Cloud for Dummies'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-UENsN9IPm9Y/TrtAZSLaE2I/AAAAAAAAAgQ/Y6wrdIb55F4/s72-c/9781118152843_220x340.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-1731643395812376330</id><published>2011-11-08T00:03:00.001-03:00</published><updated>2011-11-08T00:05:26.523-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Infografía de los 10 años de eclipse</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.eclipse.org/10years/images/infographic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="980" src="http://www.eclipse.org/10years/images/infographic.png" width="483" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-1731643395812376330?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/1731643395812376330/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/infografia-de-los-10-anos-de-eclipse.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1731643395812376330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1731643395812376330'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/infografia-de-los-10-anos-de-eclipse.html' title='Infografía de los 10 años de eclipse'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-3919107642703872229</id><published>2011-11-07T23:56:00.002-03:00</published><updated>2011-11-07T23:58:20.729-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Eclipse cumple 10 años</title><content type='html'>El 5 de noviembre del 2001 fue liberada la primera&amp;nbsp;versión&amp;nbsp;de Eclipse, desde ese momento hasta hoy&amp;nbsp;creció&amp;nbsp;a pasos agigantados;&amp;nbsp;dándonos&amp;nbsp;una IDE optima de muy buena calidad. Nada más para decir, simplemente Feliz cumpleaños.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-WtDaUtlWxLM/TriaENlPH0I/AAAAAAAAAfw/G_JuRP4HcNA/s1600/eclipse-10-years.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="207" src="http://4.bp.blogspot.com/-WtDaUtlWxLM/TriaENlPH0I/AAAAAAAAAfw/G_JuRP4HcNA/s400/eclipse-10-years.png" width="470" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Dejo links:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.eclipse.org/10years/"&gt;http://www.eclipse.org/10years/&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.eclipse.org/10birthday/"&gt;http://www.eclipse.org/10birthday/&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://www.infoq.com/news/2011/11/eclipse-10"&gt;http://www.infoq.com/news/2011/11/eclipse-10&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-3919107642703872229?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/3919107642703872229/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/eclipse-cumple-10-anos.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3919107642703872229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3919107642703872229'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/eclipse-cumple-10-anos.html' title='Eclipse cumple 10 años'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-WtDaUtlWxLM/TriaENlPH0I/AAAAAAAAAfw/G_JuRP4HcNA/s72-c/eclipse-10-years.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-3888247868567751571</id><published>2011-11-07T00:14:00.001-03:00</published><updated>2011-11-07T00:14:59.500-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><category scheme='http://www.blogger.com/atom/ns#' term='Gosu'/><title type='text'>Gosu</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-CshyA7-Nc2Y/TrdMuWsszAI/AAAAAAAAAfo/ChGQwYsqtiQ/s1600/gosu.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-CshyA7-Nc2Y/TrdMuWsszAI/AAAAAAAAAfo/ChGQwYsqtiQ/s1600/gosu.png" /&gt;&lt;/a&gt;&lt;/div&gt;Gosu es un lenguaje que corre sobre la jvm, y tiene las siguientes características:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;100% orientado a objetos&lt;/li&gt;&lt;li&gt;tipado estático&lt;/li&gt;&lt;li&gt;es imperativo&lt;/li&gt;&lt;li&gt;100% compatible con java&lt;/li&gt;&lt;li&gt;inferencia de tipos&lt;/li&gt;&lt;li&gt;soporta closures&lt;/li&gt;&lt;li&gt;generic simplificados&lt;/li&gt;&lt;li&gt;y con licencia Apache 2.0!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Veamos un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;// Declare some data&lt;br /&gt;var minLength = 4&lt;br /&gt;var strings = { "yellow", "red", "blue" }&lt;br /&gt;&lt;br /&gt;// Slice and dice the data using blocks&lt;br /&gt;print( strings.where( \ s -&amp;gt; s.length() &amp;gt;= minLength )&lt;br /&gt;              .sort()&lt;br /&gt;              .join( ", " ) )&lt;br /&gt;&lt;br /&gt;// Use standard java classes&lt;br /&gt;var someFile = new java.io.File( "SomeFile.txt" )&lt;br /&gt;&lt;br /&gt;// But with shiny new methods&lt;br /&gt;someFile.write( strings.join( "\n" ) )&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;Dimos un pequeño vistazo a este lenguje, dejo links:&lt;/pre&gt;&lt;pre&gt;&lt;/pre&gt;&lt;pre&gt;&lt;a href="http://gosu-lang.org/"&gt;http://gosu-lang.org/&lt;/a&gt;&lt;/pre&gt;&lt;pre&gt;&lt;a href="http://gosu-lang.org/intro.shtml"&gt;http://gosu-lang.org/intro.shtml&lt;/a&gt;&lt;/pre&gt;&lt;pre&gt;&lt;a href="http://gosu-lang.org/examples.shtml"&gt;http://gosu-lang.org/examples.shtml&lt;/a&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-3888247868567751571?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/3888247868567751571/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/gosu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3888247868567751571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3888247868567751571'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/gosu.html' title='Gosu'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-CshyA7-Nc2Y/TrdMuWsszAI/AAAAAAAAAfo/ChGQwYsqtiQ/s72-c/gosu.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-8391444520081042103</id><published>2011-11-05T16:58:00.003-03:00</published><updated>2011-11-05T16:58:49.786-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>Spring Insight</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-_dmJ_gXUGR4/TrWVScnqRgI/AAAAAAAAAfg/2hluGz7aaVs/s1600/SpringInsight_Logo_black_0.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="90" src="http://3.bp.blogspot.com/-_dmJ_gXUGR4/TrWVScnqRgI/AAAAAAAAAfg/2hluGz7aaVs/s320/SpringInsight_Logo_black_0.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Spring Insight es una tecnología la cual da&amp;nbsp;visibilidad del rendimiento&amp;nbsp;en tiempo de ejecución&amp;nbsp;de la aplicación. &lt;br /&gt;&lt;br /&gt;Las pruebas de estrés&amp;nbsp;de una aplicación&amp;nbsp;por lo general son lentas.&amp;nbsp;Mediante la combinación de&amp;nbsp;Spring inSigth con&amp;nbsp;sus herramientas de testing &amp;nbsp;(tal como&amp;nbsp;JMeter), se puede ver no sólo&amp;nbsp;que&amp;nbsp;direcciones URL&amp;nbsp;son lentas,&amp;nbsp;sino porque y descubrir la forma de acelerarlos. &lt;br /&gt;     &lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: arial, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;&lt;span style="background: transparent;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: arial, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;Dejounos &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: arial, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span&gt;&lt;span style="background: transparent;"&gt;screenshot&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: arial, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: arial, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-jboZgZi6e-U/TrWT7pMUSQI/AAAAAAAAAfQ/JPd9VxENA44/s1600/SpringInsight.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="308" src="http://3.bp.blogspot.com/-jboZgZi6e-U/TrWT7pMUSQI/AAAAAAAAAfQ/JPd9VxENA44/s400/SpringInsight.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xMxEu_howL4/TrWT9QFgk1I/AAAAAAAAAfY/W0-xTIWhCrA/s1600/SpringInsightOperations_highres.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" src="http://2.bp.blogspot.com/-xMxEu_howL4/TrWT9QFgk1I/AAAAAAAAAfY/W0-xTIWhCrA/s400/SpringInsightOperations_highres.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Dejo links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.springsource.org/insight"&gt;http://www.springsource.org/insight&lt;/a&gt;&lt;br /&gt;&lt;a href="http://static.springsource.com/projects/tc-server/6.0/devedition/cinintro.html"&gt;http://static.springsource.com/projects/tc-server/6.0/devedition/cinintro.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-8391444520081042103?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/8391444520081042103/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/spring-insight.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8391444520081042103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8391444520081042103'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/spring-insight.html' title='Spring Insight'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-_dmJ_gXUGR4/TrWVScnqRgI/AAAAAAAAAfg/2hluGz7aaVs/s72-c/SpringInsight_Logo_black_0.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5672101798547670354</id><published>2011-11-05T14:35:00.001-03:00</published><updated>2011-11-05T14:35:36.800-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>Configurar spring para usarlo con anotaciones</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-tkZrCWskrDg/TrVz13ABAYI/AAAAAAAAAfI/wJ-it_wdZWw/s1600/spring.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="206" src="http://2.bp.blogspot.com/-tkZrCWskrDg/TrVz13ABAYI/AAAAAAAAAfI/wJ-it_wdZWw/s320/spring.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Para configurar spring para que funcione a base de anotaciones es necesario  crear el  archivo applicationContext.xml de spring  y lo vamos a guardar en WEB-INF si es una aplicación web y queremos usar spring como contexto: &lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;beans xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemalocation="http://www.springframework.org/schema/beans  &lt;br /&gt;            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&lt;br /&gt;            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd&lt;br /&gt;            http://www.springframework.org/schema/context  &lt;br /&gt;            http://www.springframework.org/schema/context/spring-context-2.5.xsd"&gt;  &lt;br /&gt;        &lt;context:component-scan annotation-config="true" base-package="com.ejemplo"&gt;&lt;br /&gt;        &lt;context:annotation-config&gt; &lt;br /&gt;&lt;/context:annotation-config&gt;&lt;/context:component-scan&gt;&lt;/beans&gt;&lt;br /&gt;&lt;/pre&gt;Luego podemos configurar nestros beans con anoteciones de la siguiente manera, primero creamos la interfaz: &lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;package com.ejemplo;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * @author emanuel&lt;br /&gt; *&lt;br /&gt; */&lt;br /&gt;public interface HelloWorldService {&lt;br /&gt; &lt;br /&gt; public String convertToUpperCase(String word);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Y luego una clase que lo implemente:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;package com.ejemplo;&lt;br /&gt;&lt;br /&gt;import org.springframework.stereotype.Service;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * @author emanuel&lt;br /&gt; *&lt;br /&gt; */&lt;br /&gt;@Service&lt;br /&gt;public class HelloWorldServiceImpl implements HelloWorldService {&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public String convertToUpperCase(String word) {&lt;br /&gt;  return word.toUpperCase();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Con @Service estamos indicando a spring es un servicio. Tambien podemos hacer @Autowired para que spring injecte por tipo, de igual forma que lo hace cuando configuramos por xml. Por ejemplo si deberiamos configurar un manager o action con anotaciones podemos hacer lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;package com.ejemplo;&lt;br /&gt;&lt;br /&gt;import org.springframework.beans.factory.annotation.Autowired;&lt;br /&gt;import org.springframework.beans.factory.annotation.Qualifier;&lt;br /&gt;import org.springframework.context.annotation.Scope;&lt;br /&gt;import org.springframework.stereotype.Component;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * @author emanuel&lt;br /&gt; *&lt;br /&gt; */&lt;br /&gt;@Component("helloWorld")&lt;br /&gt;@Qualifier("helloWorld")&lt;br /&gt;@Scope("request")&lt;br /&gt;public class HelloWorldBean {&lt;br /&gt; &lt;br /&gt; private String name;&lt;br /&gt; &lt;br /&gt; @Autowired&lt;br /&gt; private HelloWorldService helloWorldService;&lt;br /&gt; &lt;br /&gt; public void setHelloWorldService(HelloWorldService helloWorldService) {&lt;br /&gt;  this.helloWorldService = helloWorldService;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String convertNameToUpperCase() {&lt;br /&gt;  name = helloWorldService.convertToUpperCase(name);&lt;br /&gt;  return "success";&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String getName() {&lt;br /&gt;  return name;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setName(String name) {&lt;br /&gt;  this.name = name;&lt;br /&gt; }&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Es muy comodo y elegante, la desventaja es que si quiero cambiar una dependencia debo recompilar, que creo que no es un gran problema. Es una alternativa genial!&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5672101798547670354?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5672101798547670354/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/configurar-spring-para-usarlo-con.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5672101798547670354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5672101798547670354'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/configurar-spring-para-usarlo-con.html' title='Configurar spring para usarlo con anotaciones'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-tkZrCWskrDg/TrVz13ABAYI/AAAAAAAAAfI/wJ-it_wdZWw/s72-c/spring.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-3102084207549833871</id><published>2011-11-03T21:27:00.001-03:00</published><updated>2011-11-03T21:29:56.175-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Probar Javascript con jsfiddle.net</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-S98L16ahZpo/TrMxJzXNqHI/AAAAAAAAAfA/tXxB7ZWuYoY/s1600/jsfiddle.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-S98L16ahZpo/TrMxJzXNqHI/AAAAAAAAAfA/tXxB7ZWuYoY/s200/jsfiddle.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Cuando tenemos que probar algo en Javascript es muy&amp;nbsp;fácil&amp;nbsp;tomamos un blog de nota hacemos una pagina que nos permita probar la función que necesitamos. Pero si usamos alguna librería Javascript se pone más complicado. &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;En &amp;nbsp;ese caso es mucho más recomendable un servicio como el que provee esta pagina:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://jsfiddle.net/"&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: Verdana, sans-serif;"&gt;jsfiddle.net/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;En el cual podemos probar nuestro html y Javascript. &lt;span class="Apple-style-span" style="background-color: whitesmoke;"&gt;&lt;span class="hps"&gt;El código&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;puede&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;ser compartida con otros&lt;/span&gt;&lt;span class=""&gt;,&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;incrustado en un&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;blog,&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;etc.&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;Con este enfoque,&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;los desarrolladores de JavaScript&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;pueden&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;aislar&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;fácilmente&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;los errores&lt;/span&gt;&lt;span class=""&gt;.&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: whitesmoke;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: whitesmoke;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Muy&amp;nbsp;útil!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: whitesmoke;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: whitesmoke;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Dejo link:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: whitesmoke;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://doc.jsfiddle.net/"&gt;http://doc.jsfiddle.net/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: whitesmoke; color: #333333;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-3102084207549833871?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/3102084207549833871/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/probar-javascript-con-jsfiddlenet.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3102084207549833871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3102084207549833871'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/probar-javascript-con-jsfiddlenet.html' title='Probar Javascript con jsfiddle.net'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-S98L16ahZpo/TrMxJzXNqHI/AAAAAAAAAfA/tXxB7ZWuYoY/s72-c/jsfiddle.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-1882713533603384774</id><published>2011-11-02T01:25:00.000-03:00</published><updated>2011-11-02T01:25:14.479-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Akka'/><category scheme='http://www.blogger.com/atom/ns#' term='Erlang'/><title type='text'>Actores con Akka</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-MWFYOwBxsoY/TrDGBRXVuhI/AAAAAAAAAe4/TcayMSnd2Xw/s1600/akka.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-MWFYOwBxsoY/TrDGBRXVuhI/AAAAAAAAAe4/TcayMSnd2Xw/s1600/akka.png" /&gt;&lt;/a&gt;&lt;/div&gt;La concurrencia se puede manejar de dos formas a travez de hilos o thread como c++ y java o por medio de actores como erlang y scala. El modelo de actores es un modelo de concurrencia computacional que trata a los "actores" como los primitivos universal de la computación digital en paralelo: en respuesta a un mensaje que recibe, un actor puede tomar decisiones locales, crear más actores, envía más mensajes, y determinar cómo responder al siguiente mensaje recibido. &lt;br /&gt;&lt;br /&gt;Si buscamos en la wikipedia dice lo siguiente: &lt;br /&gt;&lt;br /&gt;En informática,&amp;nbsp;el modelo de&amp;nbsp;actor es&amp;nbsp;un modelo matemático de&amp;nbsp;cálculo&amp;nbsp;simultáneas que&amp;nbsp;trata a&amp;nbsp;los "actores", como&amp;nbsp;los primitivos&amp;nbsp;universales de la&amp;nbsp;computación digital&amp;nbsp;simultáneas:&amp;nbsp;en respuesta a un&amp;nbsp;mensaje que recibe,un actor puede&amp;nbsp;tomar decisiones locales,&amp;nbsp;crear más&amp;nbsp;actores,&amp;nbsp;enviar más&amp;nbsp;mensajes,&amp;nbsp;y&amp;nbsp;determinar cómo responder&amp;nbsp;a la&amp;nbsp;siguiente mensaje&amp;nbsp;recibido.&amp;nbsp;El modelo de&amp;nbsp;actor&amp;nbsp;se originó en&amp;nbsp;1973.&amp;nbsp;&amp;nbsp;Se ha utilizado&amp;nbsp;tantocomo un marco para&amp;nbsp;una comprensión teórica&amp;nbsp;de la computación,&amp;nbsp;y como&amp;nbsp;la base teórica para&amp;nbsp;variasaplicaciones prácticas&amp;nbsp;de&amp;nbsp;los sistemas concurrentes.&amp;nbsp;La relación&amp;nbsp;de la&amp;nbsp;modelo para&amp;nbsp;otros trabajos&amp;nbsp;se discute enla indeterminación&amp;nbsp;en el cálculo&amp;nbsp;simultáneo&amp;nbsp;y el modelo de&amp;nbsp;actor y&amp;nbsp;cálculos&amp;nbsp;proceso. Toma tu torta!! &lt;br /&gt;&lt;br /&gt;Akka es un framework java que nos brinda este modelo en el lenguaje java. Permitiéndonos manejar la concurrencia de forma más simple como lo hace scala o erlang. &lt;br /&gt;&lt;br /&gt;Veamos un ejemplo: &lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;// server code&lt;br /&gt;class HelloWorldActor extends UntypedActor {&lt;br /&gt;  public void onReceive(Object msg) {&lt;br /&gt;    getContext().tryReply(msg + " World");&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;remote().start("localhost", 2552).register(&lt;br /&gt;  "hello-service",&lt;br /&gt;   actorOf(HelloWorldActor.class));&lt;br /&gt;&lt;br /&gt;// client code&lt;br /&gt;ActorRef actor = remote().actorFor(&lt;br /&gt;  "hello-service", "localhost", 2552);&lt;br /&gt;Object res = actor.ask("Hello").get();&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Como podemos ver en ejemplo podemos hacer un manejo de actores de forma remota. &amp;nbsp;Akka&amp;nbsp;Utiliza&amp;nbsp;el modelo del actor&amp;nbsp;junto con&amp;nbsp;la memoria&amp;nbsp;transaccional&amp;nbsp;de software&amp;nbsp;que&amp;nbsp;elevar el&amp;nbsp;nivel de abstracción&amp;nbsp;y proporcionar&amp;nbsp;una mejor plataforma&amp;nbsp;para construir&amp;nbsp;aplicaciones concurrentes&amp;nbsp;correcta&amp;nbsp;y escalable.&amp;nbsp;A la vez es tolerante a fallos  dado que fue concedido con tecnología Let it crash/Embrace failure. Akka&amp;nbsp;es de código abierto&amp;nbsp;y&amp;nbsp;disponible bajo la&amp;nbsp;licencia&amp;nbsp;Apache 2. A la vez esta basado en scala y provee una api para este lenguaje, escrita en este lenguaje.&lt;br /&gt;&lt;br /&gt;Tiene integración con Spring, soporta OSGI, se integra con Apache Camel. Solo falta que te cocine y te lave la ropa!&lt;br /&gt;&lt;br /&gt;Seguramente vamos a seguir escribiendo sobre este framework, dado que esta muy bueno!&lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Actor_model"&gt;http://en.wikipedia.org/wiki/Actor_model&lt;/a&gt;&lt;br /&gt;&lt;a href="http://akka.io/"&gt;http://akka.io/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://akka.io/docs/"&gt;http://akka.io/docs/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://akka.io/docs/akka-modules/1.1.3/modules/spring.html"&gt;http://akka.io/docs/akka-modules/1.1.3/modules/spring.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-1882713533603384774?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/1882713533603384774/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/actores-con-akka.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1882713533603384774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1882713533603384774'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/11/actores-con-akka.html' title='Actores con Akka'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-MWFYOwBxsoY/TrDGBRXVuhI/AAAAAAAAAe4/TcayMSnd2Xw/s72-c/akka.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-4335445819520684062</id><published>2011-10-31T01:27:00.001-03:00</published><updated>2011-10-31T01:27:48.299-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Netty'/><category scheme='http://www.blogger.com/atom/ns#' term='jboss'/><title type='text'>Netty</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/--xLBf7vCyVg/Tq4jN1JX1HI/AAAAAAAAAew/_3ZTK43x54A/s1600/netty_logo.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="159" src="http://3.bp.blogspot.com/--xLBf7vCyVg/Tq4jN1JX1HI/AAAAAAAAAew/_3ZTK43x54A/s320/netty_logo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Netty es un framework de Jboss que provee un manejo asíncrono en aplicaciones web, un framework ideal para hacer comet.  &lt;br /&gt;&lt;br /&gt;Netty&amp;nbsp;es un cliente&amp;nbsp;NIO&amp;nbsp;infraestructura de servidor&amp;nbsp;que permite el desarrollo&amp;nbsp;rápido y sencillo&amp;nbsp;de aplicaciones de red,&amp;nbsp;tales como&amp;nbsp;servidores de protocolo&amp;nbsp;y los clientes.&amp;nbsp;Simplifica y&amp;nbsp;agiliza la&amp;nbsp;programación de la red tales como&amp;nbsp;TCP&amp;nbsp;y&amp;nbsp;UDP&amp;nbsp;socket&amp;nbsp;servidor.&lt;br /&gt;&lt;br /&gt;"Rápido y fácil"&amp;nbsp;no significa que&amp;nbsp;una&amp;nbsp;aplicación resultante&amp;nbsp;sufrirá&amp;nbsp;un&amp;nbsp;mantenimiento&amp;nbsp;o&amp;nbsp;un problema de rendimiento.&amp;nbsp;Netty&amp;nbsp;ha sido diseñado&amp;nbsp;cuidadosamente con&amp;nbsp;las experiencias&amp;nbsp;obtenidos de la&amp;nbsp;implementación de una gran cantidad de&amp;nbsp;protocolos como&amp;nbsp;FTP,&amp;nbsp;SMTP,&amp;nbsp;HTTP,&amp;nbsp;etc.Como resultado,&amp;nbsp;Netty&amp;nbsp;ha logrado&amp;nbsp;encontrar&amp;nbsp;una forma de lograr&amp;nbsp;la facilidad de desarrollo,&amp;nbsp;rendimiento, estabilidad&amp;nbsp;y flexibilidad&amp;nbsp;sin&amp;nbsp;compromiso.&lt;br /&gt;&lt;br /&gt;Mas adelante vamos a probar este framework. &lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jboss.org/netty"&gt;http://www.jboss.org/netty&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.jboss.org/netty/documentation.html"&gt;http://www.jboss.org/netty/documentation.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.jboss.org/netty/3.2/guide/html_single/index.html"&gt;http://docs.jboss.org/netty/3.2/guide/html_single/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-4335445819520684062?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/4335445819520684062/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/netty.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/4335445819520684062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/4335445819520684062'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/netty.html' title='Netty'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/--xLBf7vCyVg/Tq4jN1JX1HI/AAAAAAAAAew/_3ZTK43x54A/s72-c/netty_logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-4189048971939708961</id><published>2011-10-30T23:38:00.002-03:00</published><updated>2011-10-30T23:38:18.266-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache Mina'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache AsyncWeb'/><title type='text'>Apache Mina y Apache AsyncWeb</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-4NJk_CjvLoY/Tq4Jp9Mk7BI/AAAAAAAAAeo/TyJ7N0FTZMU/s1600/logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="167" src="http://3.bp.blogspot.com/-4NJk_CjvLoY/Tq4Jp9Mk7BI/AAAAAAAAAeo/TyJ7N0FTZMU/s320/logo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Mediante una serie de técnicas llamadas&amp;nbsp;Comet, puedes hacer una aplicación que envíe datos al usuario en tiempo real; es decir, que el navegador mantenga la conexión siempre abierta y reciba continuamente nuevos datos cuando los haya. Para servidores y aplicaciones clásicas que no estén preparadas para mantener muchas conexiones, la forma más sencilla es solicitar desde el navegador un cada X segundos nueva información (polling). Si tenemos muchos usuarios a la vez abriendo conexiones y haciendo peticiones a la BD nos encontramos con que nuestro servidor no da más de sí y deja de atender peticiones. Un ejemplo de polling clásico sería realizar peticiones mediante AJAX a un script PHP que devuelve nuevos datos en JSON cada 3 segundos y actualiza la tabla de novedades. &lt;br /&gt;&lt;br /&gt;En el&amp;nbsp;desarrollo web, Comet es un&amp;nbsp;neologismo&amp;nbsp;para describir un modelo de&amp;nbsp;aplicación web&amp;nbsp;en el que una petición&amp;nbsp;HTTP&amp;nbsp;mantenida abierta permite a un&amp;nbsp;servidor web&amp;nbsp;enviar datos a un navegador por&amp;nbsp;Tecnología Push, sin que el navegador los solicite explícitamente. Comet es un término paraguas de múltiples técnicas para conseguir esta interacción. Todos estos métodos confían en características incluidas por defecto en navegadores, como&amp;nbsp;JavaScript, en lugar de sobre plugins no disponibles por defecto.Existen frameworks en java que nos permiten hacer coment tenemos a Netty de Jboss, Atmosphere y Apache Mina. &lt;br /&gt;&lt;br /&gt;Vamos a ver como funciona y nos permiten hacer coment Apache Mina. Apache Mina es un framework que nos permite hacer aplicaciones escalables y performantes basadas en network. Este framework provee una api asincrona para varios tipos de transportes y protocolos tcp/ip o UDP/ip via Java Nio. &lt;br /&gt;&lt;br /&gt;Apache AsyncWeb&amp;nbsp;que es parte de Apache Mina, rompe con la forma petición-respuesta de los servidores webs más usados. Esto le permite&amp;nbsp;ser altamente escalable y&amp;nbsp;capaz de soportar&amp;nbsp;un rendimiento muy alto incluso en&amp;nbsp;escenarios de alto&amp;nbsp;procesamiento de&amp;nbsp;latencia. &lt;br /&gt;Una Api simple permite crear fácilmente servicios asincronos y integración con spring permite una configuración simple con gran flexibilidad. AsyncWeb permite también aplicar filtros a todas las requests. &lt;br /&gt;&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;a href="http://mina.apache.org/"&gt;http://mina.apache.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mina.apache.org/asyncweb/"&gt;http://mina.apache.org/asyncweb/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-4189048971939708961?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/4189048971939708961/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/apache-mina-y-apache-asyncweb.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/4189048971939708961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/4189048971939708961'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/apache-mina-y-apache-asyncweb.html' title='Apache Mina y Apache AsyncWeb'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-4NJk_CjvLoY/Tq4Jp9Mk7BI/AAAAAAAAAeo/TyJ7N0FTZMU/s72-c/logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5964953692102231183</id><published>2011-10-25T23:19:00.001-03:00</published><updated>2012-01-02T22:05:32.423-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><title type='text'>Muere John McCarthy, pionero de la inteligencia artificial y padre de Lisp</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-An7wLxo-KXc/Tqdt5bTfABI/AAAAAAAAAeY/qCFYUu4JFvA/s1600/131958392613811dn.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-An7wLxo-KXc/Tqdt5bTfABI/AAAAAAAAAeY/qCFYUu4JFvA/s320/131958392613811dn.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;El Lisp (o LISP) es una familia de lenguajes de programación de computadora de tipo multiparadigma con una larga historia y una sintaxis completamente entre paréntesis. Este lunes este lenguaje esta de luto dado que su creador John McCarthy murió. Copio un trozo de una noticia: &lt;br /&gt;&lt;br /&gt;El lunes fallecía en Boston, a los 84 años, uno de los grandes pioneros de la industria de la computación: John McCarthy fue el primer ingeniero que habló del término "inteligencia artificial", en 1956, y también fue uno de los primeros que sugirió, en los años sesenta, que las aplicaciones informáticas podrían llegar a ser vendidas como un servicio, tal y como ocurre con el gas o la electricidad. McCarthy es la tercera gran figura del mundo de la tecnología que fallece en las últimas semanas, después de las muertes de Steve Jobs, el fundador de Apple, y Dennis Ritchie, creador del lenguaje de programación C. &lt;br /&gt;&lt;br /&gt;McCarthy se unió a la facultad de Stanford en 1962, tras pasar cortos periodos en Princeton, Dartmouth y el MIT. Se retiró en 2000 tras recibir varios reconocimientos, como el Premio Turing en 1972 y la Medalla Nacional de las Ciencias en 1991. &lt;br /&gt;&lt;br /&gt;Dejo Links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.publico.es/ciencias/403365/muere-john-mccarthy-pionero-de-la-inteligencia-artificial"&gt;http://www.publico.es/ciencias/403365/muere-john-mccarthy-pionero-de-la-inteligencia-artificial&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.lavanguardia.com/tecnologia/20111025/54236811431/muere-el-padre-de-la-inteligencia-artificial-moderna-john-mccarthy.html"&gt;http://www.lavanguardia.com/tecnologia/20111025/54236811431/muere-el-padre-de-la-inteligencia-artificial-moderna-john-mccarthy.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/John_McCarthy"&gt;http://es.wikipedia.org/wiki/John_McCarthy&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5964953692102231183?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5964953692102231183/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/muere-john-mccarthy-pionero-de-la.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5964953692102231183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5964953692102231183'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/muere-john-mccarthy-pionero-de-la.html' title='Muere John McCarthy, pionero de la inteligencia artificial y padre de Lisp'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-An7wLxo-KXc/Tqdt5bTfABI/AAAAAAAAAeY/qCFYUu4JFvA/s72-c/131958392613811dn.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5462795696009452431</id><published>2011-10-22T15:14:00.001-03:00</published><updated>2011-10-22T15:19:09.934-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='ehcache'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Cache de Hibernate</title><content type='html'>Generalmente todos los cache se basan en almacenar objetos en memoria para acelerar accesos posteriores, pero debemos aclarar que en Hibernate hay dos tipos de cache: el Primer Nivel y el Segundo Nivel.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Cache de Primer Nivel&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Es el que mantiene automáticamente Hibernate cuando dentro de una transacción interactuamos con la base de datos, en éste caso se mantienen en memoria los objetos que fueron cargados y si mas adelante en el flujo del proceso volvemos a necesitarlos van a ser retornados desde el cache, ahorrando accesos sobre la base de datos. Lo podemos considerar como un cache de corta duración ya que es válido solamente entre el begin y el commit de una transacción, en forma aislada a las demás. Hibernate lo maneja por defecto, no hay que configurar nada, si por alguna razón queremos deshabilitar o evitar el uso del cache, podemos usar un tipo especial de session: StatelessSession, se obtiene de la sessionFactory con el método openStatelessSession(). Se usa en el caso de los procesos batch, por ejemplo cuando se tiene que hacer inserts o updates masivos, así se evita que cada vez que se hace el save de un objeto, el mismo se quede en memoria y en el correr del proceso se produzca un error del tipo OutOfMemoryError. La StatelessSession no interactúa con el Cache de Primer Nivel ni con el Cache de Segundo Nivel, es casi como si se utilizara JDBC directamente. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Cache de Segundo Nivel&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;El Cache de Segundo Nivel permite ir varios pasos mas adelante en la mejora de la performance. La diferencia fundamental es que éste tipo de cache es válido para todas las transacciones y puede persistir en memoria durante todo el tiempo en que el aplicativo esté online, lo podríamos considerar como un cache global. Para habilitar el Cache de Segundo Nivel hay que realizar lo siguiente: &lt;br /&gt;1. Seleccionar un Proveedor de Cache. Por ejemplo EhCache. &lt;br /&gt;2. Agregar en el hibernate.cfg.xml los siguientes properties:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt; &lt;br /&gt; &lt;property name="hibernate.cache.provider_class"&gt;org.hibernate.cache.EhCacheProvider&lt;/property&gt;&lt;br /&gt; &lt;property name="hibernate.cache.use_structured_entries"&gt;true&lt;/property&gt;&lt;br /&gt;&lt;/pre&gt;3. Poner en el classpath del aplicativo el archivo de configuración ehcache.xml, según las instrucciones del proveedor. &lt;br /&gt;4. Agregar en el mapping de las clases que se queren seleccionar como "cacheables" la siguiente entrada: &lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;cache usage="nonstrict-read-write"&gt;&lt;/cache&gt;&lt;/pre&gt;Hibernate define tres niveles de cache que determinan el aislamiento: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;transactional: Garantiza un nivel de aislamiento hasta repeatable read. Es el nivel más estricto. Solamente se puede utilizar en clusters, es decir, con cachés distribuidas. 'read-write: Mantiene un aislamiento hasta el nivel de commited.&lt;/li&gt;&lt;li&gt;nonstrict read-write: No ofrece garantía de consistencia entre el caché y la base de datos. Es una es'trategia ideal para almacenar datos que no cambian habitualmente y que no sean demasiado críticos.&lt;/li&gt;&lt;li&gt;read-only: Es la estrategia de concurrencia menos estricta. Recomendada para datos que nunca cambian.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Otro tema importante es definir qué entidades se van a "cachear", los candidatos naturales son por ejemplo las clases que representan: provincias, países, monedas o similares. Hay que tener en cuenta que cuando se tienen relaciones one-to-many hacia éstas entidades, se debe configurarlas como fetch=select, no como fetch=join porque si no Hibernate va a "levantar" la relación haciendo un join en lugar de intentar obtener el objeto desde el cache. Información general&lt;br /&gt;&lt;br /&gt;Ehcache se integra fácilmente con la hibernate. Gavin King, el responsable del modo de hibernate, es también un confirmador al proyecto EHCache. Esto asegura EHCache seguirá siendo un caché de primer nivel para la hibernate. Configuración de EHCache para Hibernate es simple. Los pasos básicos son:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Descargar e instalar EHCache en su proyecto&lt;/li&gt;&lt;li&gt;Configurar EHCache como un proveedor de memoria caché en la configuración de su proyecto Hibernate.&lt;/li&gt;&lt;li&gt;Configurar almacenamiento en caché de segundo nivel en la configuración de su proyecto Hibernate.&lt;/li&gt;&lt;li&gt;Configuración de Hibernate de caché para cada entidad, o la consulta que desea almacenar en caché.&lt;/li&gt;&lt;li&gt;Configurar ehcache.xml como sea necesario para cada entidad, colección o consulta configurado para almacenar en caché.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Maven&lt;/b&gt;&lt;br /&gt;Configurar o añadir el siguiente repositorio en el pom:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;repository&gt;&lt;br /&gt;   &lt;id&gt;terracotta-releases&lt;/id&gt;&lt;br /&gt;   &lt;url&gt;http://www.terracotta.org/download/reflector/releases&lt;/url&gt;&lt;br /&gt;   &lt;releases&gt;&lt;enabled&gt;true&lt;/enabled&gt;&lt;/releases&gt;&lt;br /&gt;   &lt;snapshots&gt;&lt;enabled&gt;false&lt;/enabled&gt;&lt;/snapshots&gt;&lt;br /&gt;&lt;/repository&gt;&lt;br /&gt;&lt;/pre&gt;Configurar o añadir el módulo del núcleo ehcache definido por la siguiente dependencias (pom.xml):&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;net.sf.ehcache&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;ehcache-core&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;${ehcacheVersion}&lt;/version&gt;&lt;br /&gt;&lt;/dependency&gt;&lt;br /&gt;&lt;/pre&gt;Si está configurando Hibernate y EHCache con terracotta, agregar las siguientes dependencias para su construcción (pom.xml):&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;net.sf.ehcache&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;ehcache-terracotta&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;${ehcacheVersion}&lt;/version&gt;&lt;br /&gt;&lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;&lt;dependency&gt;&lt;br /&gt;   &lt;groupid&gt;org.terracotta&lt;/groupid&gt;&lt;br /&gt;   &lt;artifactid&gt;terracotta-toolkit-${toolkitAPIversion}-runtime&lt;/artifactid&gt;&lt;br /&gt;   &lt;version&gt;${toolkitVersion}&lt;/version&gt;&lt;br /&gt;&lt;/dependency&gt;&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;Configurar EHCache como el proveedor de caché de segundo nivel&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Para configurar EHCache como caché de segundo nivel de Hibernate, se debe configurar hibernate de la siguiente manera el archivo hibernate.cfg.xml: &lt;br /&gt;Agregar la siguiente propiedad: &lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;property name="hibernate.cache.region.factory_class"&gt;&lt;br /&gt;         net.sf.ehcache.hibernate.EhCacheRegionFactory&lt;/property&gt;&lt;br /&gt;&lt;/pre&gt;Para la creación de la instancia,&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;property name="hibernate.cache.region.factory_class"&gt;&lt;br /&gt;         net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory&lt;/property&gt;&lt;br /&gt;&lt;/pre&gt;Para forzar a Hibernate a utilizar un singleton de EHCache CacheManager.Hibernate 3,0 a 3,2 uso:&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;br /&gt;         &lt;property name="hibernate.cache.provider_class"&gt;&lt;br /&gt;         net.sf.ehcache.hibernate.EhCacheProvider&lt;br /&gt;  &lt;/property&gt;&lt;br /&gt;&lt;/pre&gt;Para la creación de la instancia, o&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;property name="hibernate.cache.provider_class"&gt;&lt;br /&gt;         net.sf.ehcache.hibernate.SingletonEhCacheProvider&lt;/property&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre class="xml" name="code"&gt;&lt;property name="hibernate.cache.provider_class"&gt;&lt;br /&gt;&lt;/property&gt;&lt;/pre&gt;Para forzar a Hibernate a utilizar un singleton EHCache CacheManager.&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;br /&gt;        &lt;property name="hibernate.cache.provider_class"&gt;&lt;br /&gt;         net.sf.ehcache.hibernate.SingletonEhCacheProvider&lt;/property&gt;&lt;br /&gt;  &lt;/property&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Habilitar caché de segundo nivel y la configuración de la caché de consultas&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;br /&gt;         &lt;property name="hibernate.cache.provider_class"&gt;&lt;br /&gt;         net.sf.ehcache.hibernate.EhCacheProvider&lt;br /&gt;  &lt;/property&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Además de configurar la configuración de caché de segundo nivel de proveedores, usted tendrá que activar el caché de segundo nivel (por defecto está configurado en off - "falso" - por Hibernate). Esto se hace mediante el establecimiento de la siguiente propiedad en la configuración de su hibernación:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;property name="hibernate.cache.use_second_level_cache"&gt;true&lt;/property&gt;&lt;br /&gt;&lt;/pre&gt;También es posible que desee activar la caché de consultas de Hibernate. Esto se hace mediante el establecimiento de la siguiente propiedad en la configuración de su hibernate config:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;property name="hibernate.cache.use_query_cache"&gt;true&lt;/property&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre class="xml" name="code"&gt;&lt;property name="hibernate.cache.use_query_cache"&gt;&lt;br /&gt;&lt;/property&gt;&lt;/pre&gt;&lt;b&gt;Configurar Hibernate Entidades de utilizar Segundo caché a nivel &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Además de la configuración de la hibernación para uso de la caché de segundo nivel, Hibernate también se debe activar la caché de entidades, colecciones y consultas. Por ejemplo, para habilitar las entradas de caché para el com.somecompany.someproject.domain.Country se debe agregar lo siguiente al mapeo de hibernate:&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;hibernate-mapping&gt;&lt;br /&gt;&lt;class dynamic-insert="false" dynamic-update="false" name="com.somecompany.someproject.domain.Country" table="ut_Countries"&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/class&gt;&lt;br /&gt;&lt;/hibernate-mapping&gt;&lt;br /&gt;&lt;/pre&gt;Para habilitar el almacenamiento en caché, agregue el siguiente elemento.&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;cache usage="read-write|nonstrict-read-write|read-only"&gt;&lt;br /&gt;&lt;/cache&gt;&lt;/pre&gt;Donde  read-write|nonstrict-read-write|read-only es el tipo de cache. &lt;br /&gt;Por ejemplo:&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;hibernate-mapping&gt;&lt;br /&gt;&lt;class dynamic-insert="false" dynamic-update="false" name="com.somecompany.someproject.domain.Country" table="ut_Countries"&gt;&lt;br /&gt; &lt;cache usage="read-write"&gt;&lt;br /&gt;...&lt;br /&gt;&lt;/cache&gt;&lt;/class&gt;&lt;br /&gt;&lt;/hibernate-mapping&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Esto también puede lograrse mediante la anotación @ caché, por ejemplo,&lt;br /&gt;&lt;br /&gt;@Entity@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)&lt;br /&gt;public class Country {...}&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Definición de las estrategias de caché diferente&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;De sólo lectura:&amp;nbsp;Cachés de datos que no se actualiza.&lt;br /&gt;&lt;br /&gt;No estricta-lectura-escritura:Cachés de datos que a veces se actualiza sin bloqueo de la memoria caché. Si el acceso simultáneo a un elemento es posible, esta estrategia de concurrencia no garantiza que el producto devuelto de la caché es la última versión disponible en la base de datos. Configurar el tiempo de espera de caché en consecuencia.&lt;br /&gt;&lt;br /&gt;De lectura y escritura:&amp;nbsp;Cachés de datos que a veces se actualiza la vez que mantiene la semántica de "lectura confirmada" nivel de aislamiento. Si la base de datos está establecida en "lectura repetible", esta estrategia de concurrencia casi mantiene la semántica. De aislamiento de lectura repetible se ve comprometida en el caso de escrituras simultáneas.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Query Cache&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Para mejorar la performance y rendimiento de las aplicaciones podemos utilizar Query Cache. &lt;br /&gt;Si lo que interesa es "cachear" el resultado exacto de una consulta, no objetos individuales. Por ejemplo, si tenemos un método en un DAO que retorna la lista de Países registrados en la base de datos, es muy probable que siempre retorne el mismo resultado ya que esa tabla no cambia a menudo, entonces es recomendable establecer la consulta como "cacheable". &lt;br /&gt;&lt;br /&gt;Hay que tener en cuenta que el query cache solo almacena los identificadores de los objetos del resultado, es decir que lo debemos usar combinado con el Cache de Segundo Nivel. Los pasos serían: &lt;br /&gt;&lt;br /&gt;1. Establecer el property hibernate.cache.use_query_cache=true en el hibernate.cfg.xml &lt;br /&gt;2. Configurar la entidad Pais como "cacheable" &lt;br /&gt;3. Establecer la consulta como "cacheable": &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;List paises = sess.createQuery("from Pais")                              .setCacheable(true)                              .list();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Por lo tanto, la primera vez que se ejecuta la consulta, se retorna la lista de Paises desde la tabla mediante un select, pero a partir de ese momento toda vez que se repita el query, el resultado va a ser retornado desde el cache, evitando la comunicación con la base de datos. &lt;br /&gt;&lt;br /&gt;¿Que pasa si agrego un nuevo Pais?&lt;br /&gt;&lt;br /&gt;Entonces el query dejaría de ser válido, solo si agregamos un nuevo Pais pasando por la session de Hibernate, el query se invalida automáticamente para que la próxima vez que se ejecute la consulta vuelva a obtener el resultado desde la base de datos. Es importante aclarar que el comportamiento anterior no se cumple si se inserta un Pais por afuera del aplicativo, es decir con un insert directo a la tabla, o si se tiene dos aplicativos separados que apuntan a la misma base de datos, en ese caso habría que usar JNDI para que todos compartan la misma SessionFactory. &lt;br /&gt;&lt;br /&gt;Es recomendable usar el query cache solo en los casos en que una consulta se repite constantemente y la entidad resultado no cambia frecuentemente, por ejemplo: Países, Provincias, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5462795696009452431?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5462795696009452431/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/cache-de-hibernate.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5462795696009452431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5462795696009452431'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/cache-de-hibernate.html' title='Cache de Hibernate'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-6711710985096261387</id><published>2011-10-22T13:25:00.000-03:00</published><updated>2011-10-22T14:05:10.731-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JVM'/><category scheme='http://www.blogger.com/atom/ns#' term='Dart'/><title type='text'>jdart</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ts3kjhcG1Pg/TqLuQbOHdbI/AAAAAAAAAeQ/4-4tS_kAP1M/s1600/google-dart.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-ts3kjhcG1Pg/TqLuQbOHdbI/AAAAAAAAAeQ/4-4tS_kAP1M/s320/google-dart.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;jdart&lt;/b&gt; es compilador a código java el nuevo lenguaje de google Dart. El objetivo es poder portar codigo dart a la plataforma. Actualmente se encuentra en desarrollo.&lt;br /&gt;En la pagina del proyecto podemos ver un ejemplo del compilador:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;main() {&lt;br /&gt;  print("hello world");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Y esto compilaría a este código java: &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;public class test {&lt;br /&gt;  public static void main(java.lang.String[]);&lt;br /&gt;    Code:&lt;br /&gt;       0: invokedynamic #18,  0             // InvokeDynamic #0:__main__:()V&lt;br /&gt;       5: return        &lt;br /&gt;&lt;br /&gt;  public static java.lang.Object __main__();&lt;br /&gt;    Code:&lt;br /&gt;       0: ldc           #21                 // String hello world&lt;br /&gt;       2: invokedynamic #27,  0             // InvokeDynamic #1:print:(Ljava/lang/String;)V&lt;br /&gt;       7: aconst_null   &lt;br /&gt;       8: areturn       &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Me parece una buena idea, todavía esta en desarrollo pero pinta lindo!&lt;br /&gt;Dejo links:&lt;br /&gt;&lt;a href="http://code.google.com/p/jdart/"&gt;http://code.google.com/p/jdart/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.dzone.com/links/r/jdart_dart_to_jvm_bytecode_compiler_using_invoked.html"&gt;http://www.dzone.com/links/r/jdart_dart_to_jvm_bytecode_compiler_using_invoked.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.dartlang.org/"&gt;http://www.dartlang.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-6711710985096261387?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/6711710985096261387/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/jdart.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6711710985096261387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6711710985096261387'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/jdart.html' title='jdart'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-ts3kjhcG1Pg/TqLuQbOHdbI/AAAAAAAAAeQ/4-4tS_kAP1M/s72-c/google-dart.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-2600342114892949946</id><published>2011-10-20T00:32:00.002-03:00</published><updated>2011-10-20T00:32:39.930-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='js'/><category scheme='http://www.blogger.com/atom/ns#' term='Node'/><title type='text'>Recursos sobre Node.js</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-R7onitf5g4E/Tp-Viey6A6I/AAAAAAAAAeE/VZBfj00bdOo/s1600/nodejs-1024x768.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-R7onitf5g4E/Tp-Viey6A6I/AAAAAAAAAeE/VZBfj00bdOo/s320/nodejs-1024x768.png" width="320" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Geneva, sans-serif; font-size: 15px;"&gt;Node.js es un entorno JavaScript de lado de servidor que utiliza un modelo asíncrono y dirigido por eventos. Es muy interesante la propuesta del framework dejo un excelente manual para empesar:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Geneva, sans-serif; font-size: 15px;"&gt;&lt;a href="http://www.rmunoz.net/introduccion-a-node-js.html"&gt;http://www.rmunoz.net/introduccion-a-node-js.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dejo un libro de Node.js&amp;nbsp;:&lt;br /&gt;&lt;a href="http://www.nodebeginner.org/index-es.html"&gt;http://www.nodebeginner.org/index-es.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-2600342114892949946?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/2600342114892949946/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/recursos-sobre-nodejs.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2600342114892949946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2600342114892949946'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/recursos-sobre-nodejs.html' title='Recursos sobre Node.js'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-R7onitf5g4E/Tp-Viey6A6I/AAAAAAAAAeE/VZBfj00bdOo/s72-c/nodejs-1024x768.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-2282370310264149568</id><published>2011-10-16T21:02:00.000-03:00</published><updated>2011-10-20T00:10:23.881-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Identidad del objeto en hibernate</title><content type='html'>&lt;title&gt;&lt;/title&gt;  &lt;style type="text/css"&gt; &lt;!--  @page { margin: 2cm }  P { margin-bottom: 0.21cm } --&gt; &lt;/style&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-KyyEulyrnsg/TptwVdM6HOI/AAAAAAAAAd8/dwsT1KwcCiI/s1600/upc-a-036000291452.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="144" src="http://2.bp.blogspot.com/-KyyEulyrnsg/TptwVdM6HOI/AAAAAAAAAd8/dwsT1KwcCiI/s200/upc-a-036000291452.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;Una aplicación puede accedersimultáneamente al mismo estado persistente en dos Sessiones&amp;nbsp;diferentes. Sin embargo, una instanciade una clase persistente nunca se comparte entre dos&amp;nbsp;instancias de Session. Por lo tanto,existen dos nociones diferentes de identidad:&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;Identidad de Base de Datos&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;foo.getId().equals( bar.getId() )&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;Identidad JVM&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;foo==bar&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;Para los objetos unidos a una Sessionen particular (por ejemplo, en el ámbito de una Session) las&amp;nbsp;dos nociones son equivalentes y laidentidad de la JVM para la identidad de la base de datos se&amp;nbsp;encuentra garantizada por Hibernate.Mientras la aplicación acceda simultáneamente al "mismo"&amp;nbsp;objeto  (identidad persistente) en dossesiones diferentes, las dos instancias serán realmente "diferentes" (identidad JVM). Los conflictos se resuelvenusando un enfoque optimista&amp;nbsp;y el versionado automático.&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;Este enfoque deja que Hibernate y labase de datos se preocupen de la concurrencia. Además&amp;nbsp;provee la mejor escalabilidad, ya quegarantizando la identidad en unidades de trabajo monohilo&amp;nbsp;no necesitan bloqueos caros u otrosmedios de sincronización. La aplicación no necesita&amp;nbsp;sincronizar sobre ningún objeto,siempre que se mantenga un solo hilo por Session.&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;Dentro de una Session la aplicaciónpuede usar con seguridad == para comparar objetos.&amp;nbsp;Sin embargo, una aplicación que usa ==fuera de una Session, podría ver resultados inesperados.&amp;nbsp;Esto podría ocurrir incluso en sitiosalgo inesperados. Por ejemplo, si pone dos instancias&amp;nbsp;separadas dentro del mismo Set ambaspodrían tener la misma identidad de la base de datos&amp;nbsp;(por ejemplo, representar la mismafila). Sin embargo, la identidad JVM, por definición, no está&amp;nbsp;garantizada para las instancias enestado separado.&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;El desarrollador tiene que sobrescribirlos métodos equals() y hashCode() en las clases persistentes eimplementar su propia noción de igualdad de objetos. Nunca sedebería usar el identificador de la base de datos para implementarla igualdad. Use una clave de negocio, una combinación de atributosúnicos, usualmente inmutables. El identificador de la base de datoscambiará si un objeto transitorio es hecho persistente. Si lainstancia transitoria (usualmente junto a las instancias separadas)es mantenida en un Set, cambiar el código hash rompe el contratodel Set. Los atributos para las claves empresariales no tienen queser tan estables como las claves principales de la base de&amp;nbsp;datos, sólo tiene que garantizarestabilidad en tanto los objetos estén en el mismo Set.&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;Este no es problema de Hibernate, sinoque simplemente se tiene que implementar la identidad&amp;nbsp;y la igualdad de los objetos Java.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-2282370310264149568?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/2282370310264149568/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/identidad-del-objeto-en-hibernate.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2282370310264149568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2282370310264149568'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/identidad-del-objeto-en-hibernate.html' title='Identidad del objeto en hibernate'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-KyyEulyrnsg/TptwVdM6HOI/AAAAAAAAAd8/dwsT1KwcCiI/s72-c/upc-a-036000291452.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-4412186928006379439</id><published>2011-10-15T20:47:00.002-03:00</published><updated>2011-10-15T21:07:19.910-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smalltalk'/><title type='text'>Para que la gente prueba smalltalk facilmente</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-aQWhTRADmoE/TpobkELAwjI/AAAAAAAAAd0/ly2L5l1zJN0/s1600/byteBalloonSmall.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-aQWhTRADmoE/TpobkELAwjI/AAAAAAAAAd0/ly2L5l1zJN0/s1600/byteBalloonSmall.gif" /&gt;&lt;/a&gt;&lt;/div&gt;Una forma&amp;nbsp;fácil&amp;nbsp;de probar Smalltalk por medio de la web es el siguiente sitio:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://amber-lang.net/learn.html"&gt;http://amber-lang.net/learn.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Este sitio nos permite programar en Smalltak por medio de una consola web. Genial idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-4412186928006379439?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/4412186928006379439/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/para-que-la-gente-prueba-smalltalk.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/4412186928006379439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/4412186928006379439'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/para-que-la-gente-prueba-smalltalk.html' title='Para que la gente prueba smalltalk facilmente'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-aQWhTRADmoE/TpobkELAwjI/AAAAAAAAAd0/ly2L5l1zJN0/s72-c/byteBalloonSmall.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-2115285118541964810</id><published>2011-10-10T20:12:00.000-03:00</published><updated>2011-10-10T20:16:33.107-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Dart'/><title type='text'>Google Dart</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--AUHPcOnZa4/TpN7s0H6A1I/AAAAAAAAAdw/9hLgaKRtzJY/s1600/dart-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/--AUHPcOnZa4/TpN7s0H6A1I/AAAAAAAAAdw/9hLgaKRtzJY/s1600/dart-logo.png" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;Comohabíamos dicho el post anterior google presento su nuevo lenguajecomo alternativa a Javascript. Dart tienen las siguientes&amp;nbsp;características:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;basadoen clases, herencia simple con interfaces&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;tipado&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;estático&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;opcional&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;unhilo de ejecución&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;lexicosimilar a Javascript&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;funcionesLambda (x) =&amp;gt; x&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;recargade operadores&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;interpolaciónde String: "Hello ${foo}"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;multiprocesobasado en actores&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;Veamosun ejemplo:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;main(){&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;varname = 'World';&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;print('Hello,${name}!');&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;Simple.Veamos como escribir la función que calcule la secuencia defigonacci: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;intfib(int n) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;if(n &amp;lt;= 1) return n;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;returnfib(n - 1) + fib(n - 2);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;main(){&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;print('fib(20)= ${fib(20)}');&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;Veamosun ejemplo con clases:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;classPoint {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; Point(this.x,this.y);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; distanceTo(Pointother) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; vardx = x - other.x;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; vardy = y - other.y;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; returnMath.sqrt(dx * dx + dy * dy);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp;varx, y;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;main(){&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; Pointp = new Point(2, 3);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; Pointq = new Point(3, 4);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp; print('distancefrom p to q = ${p.distanceTo(q)}');&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;Porlo poco que leí no tiene mayor innovación, es un lenguaje conalgunas mejoras ante javascript. Pero no creo que sea capaz dedesplazarlo.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;Dejolinks:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;a href="http://www.dartlang.org/"&gt;http://www.dartlang.org/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-family: Verdana, sans-serif; font-weight: normal;"&gt;&lt;a href="http://www.dartlang.org/docs/getting-started/"&gt;http://www.dartlang.org/docs/getting-started/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: Verdana, sans-serif; font-style: normal;"&gt;&lt;a href="http://googlecode.blogspot.com/2011/10/dart-language-for-structured-web.html"&gt;http://googlecode.blogspot.com/2011/10/dart-language-for-structured-web.html&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-2115285118541964810?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/2115285118541964810/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/google-dart.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2115285118541964810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2115285118541964810'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/google-dart.html' title='Google Dart'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/--AUHPcOnZa4/TpN7s0H6A1I/AAAAAAAAAdw/9hLgaKRtzJY/s72-c/dart-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-5389156735415535682</id><published>2011-10-08T14:25:00.000-03:00</published><updated>2011-10-08T14:25:29.856-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Inicializadores (o algo así) en Java</title><content type='html'>Este post esta dedicado a mi amigo personal Christian, que me mostró esto que realmente no lo conocía. &lt;br/&gt;Supongamos que tenemos una interfaz y queremos hacer un clase anonima que implemente esta Interfaz pero necesitamos inicializar valores. No podemos llamar al constructor dado que es una clase anonima por lo tanto podemos inicializar el código de la siguiente manera:&lt;br/&gt;&lt;br/&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;br /&gt;public class Main {&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args) {&lt;br /&gt;		IEjemplo ejemplo = new IEjemplo() {&lt;br /&gt;			&lt;br /&gt;			private String saludo;&lt;br /&gt;			&lt;br /&gt;			//Inicializador &lt;br /&gt;			{&lt;br /&gt;				saludo = "Holass";&lt;br /&gt;				System.out.println("Inicializo en el inicializador!!");&lt;br /&gt;			}&lt;br /&gt;			&lt;br /&gt;			@Override&lt;br /&gt;			public void metodoDeEjemplo() {&lt;br /&gt;				System.out.println(saludo);				&lt;br /&gt;			}&lt;br /&gt;		};&lt;br /&gt;		&lt;br /&gt;		ejemplo.metodoDeEjemplo();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br/&gt;Para la interfaz:&lt;br/&gt;&lt;br/&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;br /&gt;public interface IEjemplo {&lt;br /&gt;	&lt;br /&gt;	void metodoDeEjemplo();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br/&gt;Y la salida del programa seria:&lt;br/&gt;Inicializo en el inicializador!!&lt;br/&gt;Holass&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;La verdad no tenia idea que se podía hacer eso en Java.&lt;br/&gt;&lt;br/&gt;Todos los días se aprende algo nuevo.&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-5389156735415535682?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/5389156735415535682/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/inicializadores-o-algo-asi-en-java.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5389156735415535682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/5389156735415535682'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/inicializadores-o-algo-asi-en-java.html' title='Inicializadores (o algo así) en Java'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-8430271360949332282</id><published>2011-10-08T12:30:00.001-03:00</published><updated>2011-10-08T12:35:54.418-03:00</updated><title type='text'>Curso Online de Desarrollo de Aplicaciones en Silverlight para Windows Phone</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Gf6zfIdaYPA/TpBsdEUYHLI/AAAAAAAAAds/GEVvIZ_JHUo/s1600/ff645433.WP_Brd_Grn_h_rgb%2528es-es%252CMSDN.10%2529.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="56" src="http://1.bp.blogspot.com/-Gf6zfIdaYPA/TpBsdEUYHLI/AAAAAAAAAds/GEVvIZ_JHUo/s320/ff645433.WP_Brd_Grn_h_rgb%2528es-es%252CMSDN.10%2529.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;En el blog le damos poca&amp;nbsp;atención&amp;nbsp;al mundo microsoft, pero ahora voy ha hacer una&amp;nbsp;excepción&amp;nbsp;dado que la gente de microsoft preparo unos cursos que&amp;nbsp;estaría&amp;nbsp;bueno mirarlos, dejo una pequeña reseña y el link:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #666666; font-family: Verdana, sans-serif;"&gt;Este curso consta de varios vídeos, presentaciones y ejercicios que guían en el diseño y desarrollo de aplicaciones para Wïndows Phone en&amp;nbsp;Silverlight.&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #666666; font-style: inherit; font-weight: inherit; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Lo hemos dividido en las siguientes secciones:&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #666666; font-style: inherit; font-weight: inherit; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Sección 1:&lt;/strong&gt;&lt;img alt="" heigth="2" src="http://i.msdn.microsoft.com/hh307892.spacer(es-es,MSDN.10).png" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="" width="4" /&gt;&lt;a href="http://msdn.microsoft.com/es-es/windowsphone/hh307893" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #f07522; cursor: pointer; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="blank"&gt;Introducción al Diseño y Desarrollo de Aplicaciones en Windows Phone con Silverlight&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #666666; font-style: inherit; font-weight: inherit; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Sección 2:&lt;/strong&gt;&lt;img alt="" heigth="2" src="http://i.msdn.microsoft.com/hh307892.spacer(es-es,MSDN.10).png" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="" width="4" /&gt;&lt;a href="http://msdn.microsoft.com/es-es/windowsphone/hh316167" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #f07522; cursor: pointer; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="blank"&gt;Plataforma Windows Phone&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #666666; font-style: inherit; font-weight: inherit; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Sección 3:&lt;/strong&gt;&lt;img alt="" heigth="2" src="http://i.msdn.microsoft.com/hh307892.spacer(es-es,MSDN.10).png" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="" width="4" /&gt;&lt;a href="http://msdn.microsoft.com/es-es/windowsphone/hh316168" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #f07522; cursor: pointer; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="blank"&gt;Datos y Servicios en Windows Phone&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #666666; font-style: inherit; font-weight: inherit; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Sección 4:&lt;/strong&gt;&lt;img alt="" heigth="2" src="http://i.msdn.microsoft.com/hh307892.spacer(es-es,MSDN.10).png" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="" width="4" /&gt;&lt;a href="http://msdn.microsoft.com/es-es/windowsphone/hh290774" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #f07522; cursor: pointer; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="blank"&gt;Trabajando con sensores&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #666666; font-style: inherit; font-weight: inherit; margin-bottom: 12px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;strong style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: inherit; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Sección 5:&lt;/strong&gt;&lt;span class="Apple-style-span" style="border-color: initial; border-style: initial; font-style: inherit; outline-color: initial; outline-style: initial;"&gt;&lt;img alt="" heigth="2" src="http://i.msdn.microsoft.com/hh307892.spacer(es-es,MSDN.10).png" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="" width="4" /&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/es-es/windowsphone/hh290775" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #f07522; cursor: pointer; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" target="blank"&gt;Herramientas y Acceso a Recursos de Windows Phone&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #666666;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;El link del curso es:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://msdn.microsoft.com/es-es/windowsphone/hh307892"&gt;http://msdn.microsoft.com/es-es/windowsphone/hh307892&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #666666; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #666666; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #666666; line-height: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #666666; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #666666; line-height: 16px;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-8430271360949332282?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/8430271360949332282/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/curso-online-de-desarrollo-de.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8430271360949332282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8430271360949332282'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/curso-online-de-desarrollo-de.html' title='Curso Online de Desarrollo de Aplicaciones en Silverlight para Windows Phone'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Gf6zfIdaYPA/TpBsdEUYHLI/AAAAAAAAAds/GEVvIZ_JHUo/s72-c/ff645433.WP_Brd_Grn_h_rgb%2528es-es%252CMSDN.10%2529.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-988006067891184280</id><published>2011-10-08T01:31:00.002-03:00</published><updated>2011-10-08T01:31:53.323-03:00</updated><title type='text'>Los tontos hablan bien de una persona solo porque esta muerta</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-oWu94r4GDls/To_SHyLrOtI/AAAAAAAAAdo/5PqNcLgsupw/s1600/steve_jobs_vintage.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-oWu94r4GDls/To_SHyLrOtI/AAAAAAAAAdo/5PqNcLgsupw/s400/steve_jobs_vintage.jpg" width="231" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-988006067891184280?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/988006067891184280/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/los-tontos-hablan-bien-de-una-persona.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/988006067891184280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/988006067891184280'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/los-tontos-hablan-bien-de-una-persona.html' title='Los tontos hablan bien de una persona solo porque esta muerta'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-oWu94r4GDls/To_SHyLrOtI/AAAAAAAAAdo/5PqNcLgsupw/s72-c/steve_jobs_vintage.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-6954846795226060815</id><published>2011-10-07T02:19:00.000-03:00</published><updated>2011-10-07T02:20:03.372-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='NoSql'/><title type='text'>Oracle NoSQL?</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif;"&gt;&lt;span class="hps"&gt;Oracle&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;ha anunciado&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;el dispositivo&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;Big Data&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;corriendo con&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;Oracle&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;NoSQL&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;base de datos,&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;una nueva&lt;/span&gt;&amp;nbsp;base&lt;span class="hps"&gt;&amp;nbsp;clave y valor&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;basado en&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;Oracle&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;Berkeley&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;DB&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;Java&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;Edition.&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;Algunas de las características&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;incluyen:&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;miles de millones de&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;filas &lt;/span&gt;&lt;span class="hps"&gt;de almacenamiento&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;en&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;discos y&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;terabytes&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;en&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;B&lt;/span&gt;-tree,&amp;nbsp;&lt;span class="hps"&gt;transacciones ACID,&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;CRUD&lt;/span&gt;,&amp;nbsp;&lt;span class="hps"&gt;Sharding&lt;/span&gt;,&amp;nbsp;&lt;span class="hps"&gt;sin&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;punto único de fallo&lt;/span&gt;&lt;span class=""&gt;,&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;la recuperación de desastres&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;a través de&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;la replicación&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;de centros de datos&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span class="hps"&gt;La base de datos&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;Oracle&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;NoSQL&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;es&lt;/span&gt;&amp;nbsp;una base clave-valor&amp;nbsp;&lt;span class="hps"&gt;diseñada para&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;una alta escalabilidad&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;y disponibilidad,&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;y se despliegan en&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;múltiples&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;nodos&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;replicados para&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;conmutación rapida por error &lt;/span&gt;&lt;span class="hps"&gt;y balanceo de carga&lt;/span&gt;.&amp;nbsp;&lt;span class="hps"&gt;Los datos se&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;accede a través de&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;una API de Java&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;con&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;Get, Put&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;y Delete&amp;nbsp;&lt;/span&gt;&lt;span class="hps"&gt;empaquetada en un archivo&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;JAR.&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;Otras características incluyen&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Java puro&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="hps"&gt;Capacidad:&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;miles de millones de&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;registros y&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;de múltiples&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;terabytes&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;de datos en un&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;almacenamiento&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="hps"&gt;Automática&lt;/span&gt;,&amp;nbsp;&lt;span class="Apple-style-span" style="color: black; line-height: 16px;"&gt;&amp;nbsp;hash-function basado en&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;la partición de datos&lt;/span&gt;&amp;nbsp;y distribuida&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Transacciones ACID&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="hps"&gt;Con las operaciones&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;CRUD&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;con garantías de&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;durabilidad&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;ajustable&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="hps"&gt;No hay ningún punto&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;único de fallo&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="hps"&gt;soporta&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;Sharding&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="hps"&gt;Resistencia&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;al&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;fallo de un nodo&lt;/span&gt;&lt;span class="hps"&gt;&amp;nbsp;o varios nodos&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;de almacenamiento&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="hps"&gt;Recuperación de desastres mediante&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;la replicación&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;de centros de datos&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="hps"&gt;Soporta miles de&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;nodos&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="hps"&gt;Copia de seguridad&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;/ restauración&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;a nivel de&lt;/span&gt;&amp;nbsp;&lt;span class="hps"&gt;nodo&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Bueno simplemente hay que probarla!!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Dejo Link:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.oracle.com/technetwork/database/nosqldb/overview/index.html"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;http://www.oracle.com/technetwork/database/nosqldb/overview/index.html&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-6954846795226060815?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/6954846795226060815/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/oracle-nosql.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6954846795226060815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6954846795226060815'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/oracle-nosql.html' title='Oracle NoSQL?'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-6250466811585007696</id><published>2011-10-07T01:59:00.000-03:00</published><updated>2011-10-07T02:03:22.582-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CXF'/><category scheme='http://www.blogger.com/atom/ns#' term='TomEE'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache Ant'/><title type='text'>Apache TomEE Certifico Web Profile Compatible</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-4U7NFjuGAKk/To6IEeXRsYI/AAAAAAAAAdk/YDXWVVseqD8/s1600/feather-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="95" src="http://3.bp.blogspot.com/-4U7NFjuGAKk/To6IEeXRsYI/AAAAAAAAAdk/YDXWVVseqD8/s320/feather-logo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Apache sorprende con un nuevo producto, Apache TomEE (se pronuncia Tommy y es la union de TomCat y Java EE)&lt;br /&gt;&lt;br /&gt;La idea es tener un Web Profile basado en Tomcat que no influya en este proyecto y basado en productos de apache.&amp;nbsp;Veamos los productos que lo conforman:&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;table class="confluenceTable" style="border-collapse: collapse; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;CDI&lt;/td&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Apache OpenWebBeans&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;EJB&lt;/td&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Apache OpenEJB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Javamail&lt;/td&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Apache Geronimo JavaMail&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;JPA&lt;/td&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Apache OpenJPA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;JSF&lt;/td&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Apache MyFaces&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;JSP&lt;/td&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Apache Tomcat&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;JSTL&lt;/td&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Apache Tomcat&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;JTA&lt;/td&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Apache Geronimo Transaction&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Servlet&lt;/td&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Apache Tomcat&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Además viene una versión plus que trae los siguientes servicios:&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;table class="confluenceTable" style="border-collapse: collapse; margin-bottom: 5px; margin-left: 5px; margin-right: 5px; margin-top: 5px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Connector&lt;/td&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Apache Geronimo Connector&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;JMS&lt;/td&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Apache ActiveMQ&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Web Services&lt;/td&gt;&lt;td class="confluenceTd" style="border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; padding-bottom: 3px; padding-left: 4px; padding-right: 4px; padding-top: 3px;"&gt;Apache CXF&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Dejo Links:&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;a href="http://www.infoq.com/news/2011/10/apache-tomee"&gt;http://www.infoq.com/news/2011/10/apache-tomee&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;a href="http://openejb.apache.org/3.0/apache-tomee.html"&gt;http://openejb.apache.org/3.0/apache-tomee.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-6250466811585007696?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/6250466811585007696/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/apache-tomee-certifico-web-profile.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6250466811585007696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6250466811585007696'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/apache-tomee-certifico-web-profile.html' title='Apache TomEE Certifico Web Profile Compatible'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-4U7NFjuGAKk/To6IEeXRsYI/AAAAAAAAAdk/YDXWVVseqD8/s72-c/feather-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-6192716103286149263</id><published>2011-10-07T00:25:00.001-03:00</published><updated>2011-10-07T00:25:42.253-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Programa WebExpert de Google AdWords</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-7vSqhW2FaMQ/To5wta8dfmI/AAAAAAAAAdg/lv_xCUV6MBs/s1600/WebExpert-Google-AdWords.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="162" src="http://4.bp.blogspot.com/-7vSqhW2FaMQ/To5wta8dfmI/AAAAAAAAAdg/lv_xCUV6MBs/s400/WebExpert-Google-AdWords.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Estuve leyendo esto y me intereso, la verdad no lo&amp;nbsp;conocía&amp;nbsp;(copio y pego) :&lt;br /&gt;&lt;br /&gt;&lt;div lang="es-AR" style="color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 13px; margin-left: 0px; margin-right: 0px; margin-top: 13px;"&gt;Queremos brindarte la educación, capacitación y el soporte que necesitás para ofrecerle más valor a tus clientes y, como consecuencia, hacer crecer tu negocio. Este programa es ideal para:&lt;/div&gt;&lt;ul style="color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 13px; margin-top: 13px;"&gt;&lt;li&gt;Webmasters y desarrolladores web&lt;/li&gt;&lt;li&gt;Cualquier persona o empresa que trabaje para un negocio online&lt;/li&gt;&lt;li&gt;Agencias de publicidad y marketing digital&lt;/li&gt;&lt;/ul&gt;&lt;div lang="es-AR" style="color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px; margin-bottom: 13px; margin-left: 0px; margin-right: 0px; margin-top: 13px;"&gt;Al aumentar tus habilidades online y el conocimiento de los productos de Google, tendrás herramientas para atraer potenciales clientes y aportar más y mejores beneficios a tus clientes actuales.&lt;/div&gt;Suena interesante me voy a registrar!&lt;br /&gt;&lt;br /&gt;Dejo el link:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com.ar/adwords/webexpert/#utm_source=ar-ha-CTPT&amp;amp;utm_medium=ha&amp;amp;utm_campaign=es"&gt;http://www.google.com.ar/adwords/webexpert/#utm_source=ar-ha-CTPT&amp;amp;utm_medium=ha&amp;amp;utm_campaign=es&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-6192716103286149263?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/6192716103286149263/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/programa-webexpert-de-google-adwords.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6192716103286149263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/6192716103286149263'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/programa-webexpert-de-google-adwords.html' title='Programa WebExpert de Google AdWords'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-7vSqhW2FaMQ/To5wta8dfmI/AAAAAAAAAdg/lv_xCUV6MBs/s72-c/WebExpert-Google-AdWords.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-183236181549546585</id><published>2011-10-06T00:36:00.000-03:00</published><updated>2011-10-06T00:36:39.550-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Libros de Linux</title><content type='html'>Dejo un conjunto de links donde se pueden bajar libros de linux:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-0I5NYj0fRuc/To0f8HZK7iI/AAAAAAAAAdc/Viy1w-2b4qQ/s1600/librosthiftbooks1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="265" src="http://4.bp.blogspot.com/-0I5NYj0fRuc/To0f8HZK7iI/AAAAAAAAAdc/Viy1w-2b4qQ/s320/librosthiftbooks1.jpg" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, helvetica, sans-serif; font-size: 16px;"&gt;&lt;a href="http://www.muylinux.com/2008/12/09/e-books-gratuitos-sobre-linux/"&gt;http://www.muylinux.com/2008/12/09/e-books-gratuitos-sobre-linux/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, helvetica, sans-serif; font-size: 16px;"&gt;&lt;a href="http://www.taringa.net/posts/linux/1146629/Coleccion-de-Libros-de-GNU_Linux-_Ubuntu-especialmente_.html"&gt;http://www.taringa.net/posts/linux/1146629/Coleccion-de-Libros-de-GNU_Linux-_Ubuntu-especialmente_.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.ubuntips.com.ar/2007/11/26/100-libros-sobre-linux-en-descarga-directa/"&gt;http://www.ubuntips.com.ar/2007/11/26/100-libros-sobre-linux-en-descarga-directa/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.planetalibro.net/ebooks/eam/index.php?label=linux"&gt;http://www.planetalibro.net/ebooks/eam/index.php?label=linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A leer!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-183236181549546585?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/183236181549546585/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/libros-de-linux.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/183236181549546585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/183236181549546585'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/libros-de-linux.html' title='Libros de Linux'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-0I5NYj0fRuc/To0f8HZK7iI/AAAAAAAAAdc/Viy1w-2b4qQ/s72-c/librosthiftbooks1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-386716637487191535</id><published>2011-10-04T00:42:00.003-03:00</published><updated>2011-10-04T00:42:57.300-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogs'/><title type='text'>Vistas dinámicas del blog</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/-vl0vMQaMm-Y/ToqAmFf9W1I/AAAAAAAAAdY/9hDymCUnAy4/s1600/convertir-HTML-a-Blogspot.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-vl0vMQaMm-Y/ToqAmFf9W1I/AAAAAAAAAdY/9hDymCUnAy4/s200/convertir-HTML-a-Blogspot.png" width="200" /&gt;&lt;/a&gt;Google nos ofrece un nuevo servicio que es poder ver nuestro blog en forma&amp;nbsp;dinámica. Es&amp;nbsp;fácil, debes ingresar a :&amp;nbsp;&lt;a href="http://emanuelpeg.blogspot.com/view"&gt;http://emanuelpeg.blogspot.com/view&lt;/a&gt;&amp;nbsp;y hay un&amp;nbsp;menú&amp;nbsp;con las formas de ver el contenido.&lt;br /&gt;&lt;br /&gt;Es muy bueno que el servicio baya mejorando y es una interesante propuesta.&lt;br /&gt;&lt;br /&gt;Que lo disfruten!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-386716637487191535?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/386716637487191535/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/vistas-dinamicas-del-blog.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/386716637487191535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/386716637487191535'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/vistas-dinamicas-del-blog.html' title='Vistas dinámicas del blog'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-vl0vMQaMm-Y/ToqAmFf9W1I/AAAAAAAAAdY/9hDymCUnAy4/s72-c/convertir-HTML-a-Blogspot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-9059789605105367911</id><published>2011-10-01T19:28:00.000-03:00</published><updated>2011-10-01T19:28:16.199-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Voldemort'/><title type='text'>Voldemort una base de datos NoSQL con magia negra</title><content type='html'>	&lt;title&gt;&lt;/title&gt;		&lt;style type="text/css"&gt;	&lt;!--		@page { margin: 2cm }		P { margin-bottom: 0.21cm }	--&gt;	&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5RHreKYYiCA/ToeTALbQLCI/AAAAAAAAAdU/ex-zEPUt3zs/s1600/Voldemortreborn.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="237" src="http://4.bp.blogspot.com/-5RHreKYYiCA/ToeTALbQLCI/AAAAAAAAAdU/ex-zEPUt3zs/s400/Voldemortreborn.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;Novoy a hablar del enemigo Harry Poter, si no de la base de datosutilizada por LinkedIn. Voldemort es una base de datos NoSQL creadapor LinkedIn para solucionar un problema de escalabilidad que teniacon las base de datos relacionales y luego donado a la comunidad.  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Voldemort&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;esuna base de datos NoSQL orientada a guardar datos de formaclave-valor. Permite configurar diferentes Nodos los cuales contienenlos datos y a la vez los datos se van replicando de forma que si secae un nodo la base siga trabajando. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Algunascaracterísticas de Voldemort:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Los	datos se&amp;nbsp;replican automáticamente&amp;nbsp;a través de	servidores&amp;nbsp;múltiples.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Los	datos son&amp;nbsp;automáticamente&amp;nbsp;particionados por lo tanto&amp;nbsp;cada	servidor&amp;nbsp;contiene sólo un subconjunto&amp;nbsp;de los datos	totales&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Las	Fallas en el servidor son manejado de forma transparente&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Permite	sereailizar con diferentes frameworks &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Protocol	Buffers, Thrift, Avro &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;y&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;	Java Serialization; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;además	permite seriabilizar objetos complejos como listas, arregles, etc.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Los	elementos de datos&amp;nbsp;están versionados&amp;nbsp;para maximizar	la&amp;nbsp;integridad de los datos&amp;nbsp; sin&amp;nbsp;comprometer	la&amp;nbsp;disponibilidad&amp;nbsp;del sistema&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Cada	nodo&amp;nbsp;es independiente de&amp;nbsp;otros nodos&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Un	buen rendimiento&amp;nbsp;solo nodo:&amp;nbsp;se puede esperar&amp;nbsp;10-20k&amp;nbsp;de	operaciones por segundo&amp;nbsp;en función de&amp;nbsp;las máquinas, la	red,&amp;nbsp;el sistema de disco,&amp;nbsp;y el factor&amp;nbsp;de replicación	de datos&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;	&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Utiliza	una estrategia que permite tener nodos en distintos lugares	geograficos.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://3.bp.blogspot.com/-WAX08P97a_U/ToeS-1qKv_I/AAAAAAAAAdQ/Mxh2fBnsAlc/s1600/voldemort_logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-WAX08P97a_U/ToeS-1qKv_I/AAAAAAAAAdQ/Mxh2fBnsAlc/s1600/voldemort_logo.png" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Voldemortes libre y fue escrito en java. Tiene una buena documentación y unacomunidad activa. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;DejoLink:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;&lt;a href="http://project-voldemort.com/"&gt;http://project-voldemort.com/&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-9059789605105367911?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/9059789605105367911/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/voldemort-una-base-de-datos-nosql-con.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/9059789605105367911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/9059789605105367911'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/voldemort-una-base-de-datos-nosql-con.html' title='Voldemort una base de datos NoSQL con magia negra'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-5RHreKYYiCA/ToeTALbQLCI/AAAAAAAAAdU/ex-zEPUt3zs/s72-c/Voldemortreborn.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-8563561105585394704</id><published>2011-10-01T18:38:00.001-03:00</published><updated>2011-10-04T01:18:31.965-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Estado de los Objetos en Hibernate</title><content type='html'>&lt;title&gt;&lt;/title&gt;		&lt;style type="text/css"&gt;	&lt;!--		@page { margin: 2cm }		P { margin-bottom: 0.21cm }	--&gt;	&lt;/style&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0cm;"&gt;Hibernate define estos 3 estados, enlos cuales los objetos se encuentran durante la ejecución de nuestraaplicación:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="margin-bottom: 0cm;"&gt;Transient: Un Objeto es transiente	si fue instanciado con new y no con la session de hibernate. Este	objeto no esta persistido y hibernate no lo conoce. 	&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0cm;"&gt;Persistent: Un objeto persistido	tiene una representación en la base de datos y un identificador.	Este fue guardado o recuperado de la base de datos y se encuentra en	el ámbito de la sesión de hibernate; quiere decir que hibernate	conoce este objeto. Hibernate detecta los cambios en el objeto y	sincroniza con el estado de la base de datos. 	&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="margin-bottom: 0cm;"&gt;Detached: Un objeto es detached	cuando ha sido persistido pero la sesión de hibernate se cerro. La	referencia al objeto es valida y puede ser re-atachada a otra sesión	de hibernate, por ejemplo con el método saveOrUpdate.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-bottom: 0cm;"&gt;En la siguiente imagen podemos ver comoes la transición entre estados de un objeto con hibernate: &amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ysTRvHVu2rQ/ToeIIZNY4CI/AAAAAAAAAdM/vgrXShIlEXo/s1600/aaa.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="261" src="http://2.bp.blogspot.com/-ysTRvHVu2rQ/ToeIIZNY4CI/AAAAAAAAAdM/vgrXShIlEXo/s400/aaa.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-8563561105585394704?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/8563561105585394704/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/estado-de-los-objetos-en-hibernate.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8563561105585394704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/8563561105585394704'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/estado-de-los-objetos-en-hibernate.html' title='Estado de los Objetos en Hibernate'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ysTRvHVu2rQ/ToeIIZNY4CI/AAAAAAAAAdM/vgrXShIlEXo/s72-c/aaa.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-7735336913694819495</id><published>2011-10-01T17:46:00.000-03:00</published><updated>2011-10-01T19:28:51.120-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='db4o'/><category scheme='http://www.blogger.com/atom/ns#' term='MongoDb'/><category scheme='http://www.blogger.com/atom/ns#' term='neo4j'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache Cassandra'/><category scheme='http://www.blogger.com/atom/ns#' term='Voldemort'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache CouchDB'/><category scheme='http://www.blogger.com/atom/ns#' term='NoSql'/><category scheme='http://www.blogger.com/atom/ns#' term='HBase'/><title type='text'>NoSQL</title><content type='html'>&lt;title&gt;&lt;/title&gt;		&lt;style type="text/css"&gt;	&lt;!--		@page { margin: 2cm }		P { margin-bottom: 0.21cm }	--&gt;	&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-D5xMQvjIpcQ/Tod7DMVjebI/AAAAAAAAAdI/lruF-xv-u0g/s1600/nosql-logos-300x231.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-D5xMQvjIpcQ/Tod7DMVjebI/AAAAAAAAAdI/lruF-xv-u0g/s1600/nosql-logos-300x231.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;Hoyen día ya paso la furia por &lt;b&gt;NoSQL&lt;/b&gt;, podemos decir que esta en uncrecimiento constante. &lt;b&gt;NoSQL&lt;/b&gt; es un movimiento que&amp;nbsp;surgió&amp;nbsp;dadorequerimientos no funcionales de aplicaciones que no podian sersubsanados con bases relacionales. Las bases &lt;b&gt;NoSQL&lt;/b&gt; sacrificaronrequerimientos de integridad de datos por requerimientos deescalabilidad y performance. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;NoSQL&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;es una etiqueta en la cual entran todas las bases no relacionales.Existen gran cantidad de diferentes soluciones etiquetadas comoNoSQL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;Basesorientadas a grafos (Neo4j) orientada a busquedas en grafos.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;Basesdocumentales (MongoDb, Apache CouchDB) guardan estructuras complejas dedatos; y pueden guardar diferentes estructuras.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;BasesClave-Valor (Voldemort): se guardan los datos por clave-valor.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;Bases basadas en columnas (Apache Cassandra, BigTable, HBase)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Yhasta bases orientadas a objeto como db4o son llamadas &lt;/span&gt;NoSQL&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Antesde utilizar un producto &lt;/span&gt;NoSQL&lt;span class="Apple-style-span" style="font-weight: normal;"&gt; debe tener en cuenta que cada productofue hecho para una realidad diferente y para atacar un problemaparticular; es menos generico que las bases relacionales. Por lotanto debe ser cuidadoso y analizar bien sus requerimientos nofuncionales para dar justo en la tecla. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-REQyiyfIT8w/Tod7Ac47NbI/AAAAAAAAAdE/IPfPWoi26Bc/s1600/nosql.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="189" src="http://3.bp.blogspot.com/-REQyiyfIT8w/Tod7Ac47NbI/AAAAAAAAAdE/IPfPWoi26Bc/s320/nosql.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Nohay que tener miedo de mezclar bases &lt;/span&gt;NoSQL&lt;span class="Apple-style-span" style="font-weight: normal;"&gt; con base de datosrelacionales dado que en una misma aplicación podemos tenerproblemas diferentes y por lo tanto soluciones diferentes.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;LasBases &lt;/span&gt;NoSQL&lt;span class="Apple-style-span" style="font-weight: normal;"&gt; funcionan y han solucionado muchos problemas, es hora deprobarlas y utilizarlas si se justifica. &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-7735336913694819495?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/7735336913694819495/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/nosql.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7735336913694819495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7735336913694819495'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/nosql.html' title='NoSQL'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-D5xMQvjIpcQ/Tod7DMVjebI/AAAAAAAAAdI/lruF-xv-u0g/s72-c/nosql-logos-300x231.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-7234245712619956001</id><published>2011-10-01T16:58:00.000-03:00</published><updated>2011-10-01T17:01:02.287-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Mapeo de relaciones en hibernate</title><content type='html'>Mapeo de relación uno a uno. &lt;br /&gt;&lt;br /&gt;Para estas relaciones se puede utilizar una foreing key o algo menos común que las dos tablas tengan similar Id. &lt;br /&gt;&lt;br /&gt;Con una relación many-to-one podremos mapear la relación uno a uno utilizando foreing key:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;many-to-one access="field|property|ClassName" cascade="cascade_style" class="ClassName" column="column_name" embed-xml="true|false" entity-name="EntityName" fetch="join|select" foreign-key="foreign_key_name" formula="arbitrary SQL expression" index="index_name" insert="true|false" lazy="proxy|no-proxy|false" name="propertyName" node="element-name|@attribute-name|element/@attribute|." not-found="ignore|exception" not-null="true|false" optimistic-lock="true|false" property-ref="propertyNameFromAssociatedClass" unique="true|false" unique_key="unique_key_id" update="true|false"&gt; &lt;br /&gt;&lt;/many-to-one&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Cuando queremos tener similar primary key debemos utilizar una relación one-to-one:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;one-to-one access="field|property|ClassName" cascade="cascade_style" class="ClassName" constrained="true|false" embed-xml="true|false" entity-name="EntityName" fetch="join|select" foreign-key="foreign_key_name" formula="any SQL expression" lazy="proxy|no-proxy|false" name="propertyName" node="element-name|@attribute-name|element/@attribute|." property-ref="propertyNameFromAssociatedClass"&gt; &lt;br /&gt;&lt;/one-to-one&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Para que tome el mismo key no hay que especificar la propiedad “koreing-key” &lt;br /&gt;&lt;br /&gt;Mapeo muchos a uno&lt;br /&gt;&lt;br /&gt;En este caso puede haber dos situaciones que sea una relación unidireccional o una relación bidireccional.&lt;br /&gt;&lt;br /&gt;En el caso de la relación unidireccional se mapea de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;class name="Person"&gt;&lt;br /&gt;      &lt;id column="personId" name="id"&gt;&lt;br /&gt;        &lt;generator class="native"&gt;&lt;br /&gt;     &lt;/generator&gt;&lt;/id&gt;&lt;br /&gt;    &lt;many-to-one column="addressId" name="address" not-null="true"&gt;&lt;br /&gt;&lt;/many-to-one&gt;&lt;/class&gt;&lt;br /&gt;&lt;br /&gt;&lt;class name="Address"&gt;&lt;br /&gt;   &lt;id column="addressId" name="id"&gt;&lt;br /&gt;      &lt;generator class="native"&gt;&lt;br /&gt;   &lt;/generator&gt;&lt;/id&gt;&lt;br /&gt;&lt;/class&gt;&lt;br /&gt;  &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;En el caso de la relación bidireccional se mapea de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;class name="Person"&gt;&lt;br /&gt;	&lt;id column="personId" name="id"&gt;&lt;br /&gt;		&lt;generator class="native"&gt;&lt;br /&gt;	&lt;/generator&gt;&lt;/id&gt;&lt;br /&gt;	&lt;many-to-one column="addressId" name="address" not-null="true"&gt;&lt;br /&gt;&lt;/many-to-one&gt;&lt;/class&gt;&lt;br /&gt;&lt;br /&gt;&lt;class name="Address"&gt;&lt;br /&gt;	&lt;id column="addressId" name="id"&gt;&lt;br /&gt;		&lt;generator class="native"&gt;&lt;br /&gt;	&lt;/generator&gt;&lt;/id&gt;&lt;br /&gt;	&lt;set inverse="true" name="people"&gt;&lt;br /&gt;		&lt;key column="addressId"&gt;&lt;br /&gt;		&lt;one-to-many class="Person"&gt;&lt;br /&gt;	&lt;/one-to-many&gt;&lt;/key&gt;&lt;/set&gt;&lt;br /&gt;&lt;/class&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Mapeos uno a muchos &lt;br /&gt;&lt;br /&gt;En este caso también tenemos 2 situaciones unidireccional y bidireccional. &lt;br /&gt;&lt;br /&gt;La unidireccional se mapea de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;class name="Person"&gt;&lt;br /&gt;	&lt;id column="personId" name="id"&gt;&lt;br /&gt;		&lt;generator class="native"&gt;&lt;br /&gt;	&lt;/generator&gt;&lt;/id&gt;&lt;br /&gt;	&lt;set name="addresses" table="PersonAddress"&gt;&lt;br /&gt;		&lt;key column="personId"&gt;&lt;br /&gt;		&lt;many-to-many class="Address" column="addressId" unique="true"&gt;&lt;br /&gt;	&lt;/many-to-many&gt;&lt;/key&gt;&lt;/set&gt;&lt;br /&gt;&lt;/class&gt;&lt;br /&gt;&lt;br /&gt;&lt;class name="Address"&gt;&lt;br /&gt;	&lt;id column="addressId" name="id"&gt;&lt;br /&gt;		&lt;generator class="native"&gt;&lt;br /&gt;	&lt;/generator&gt;&lt;/id&gt;&lt;br /&gt;&lt;/class&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;La relación bidireccional es similar a la que vimos en many-to-one bidireccional:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;class name="Person"&gt;&lt;br /&gt;	&lt;id column="personId" name="id"&gt;&lt;br /&gt;		&lt;generator class="native"&gt;&lt;br /&gt;	&lt;/generator&gt;&lt;/id&gt;&lt;br /&gt;	&lt;many-to-one column="addressId" name="address" not-null="true"&gt;&lt;br /&gt;&lt;/many-to-one&gt;&lt;/class&gt;&lt;br /&gt;&lt;br /&gt;&lt;class name="Address"&gt;&lt;br /&gt;	&lt;id column="addressId" name="id"&gt;&lt;br /&gt;		&lt;generator class="native"&gt;&lt;br /&gt;	&lt;/generator&gt;&lt;/id&gt;&lt;br /&gt;	&lt;set inverse="true" name="people"&gt;&lt;br /&gt;		&lt;key column="addressId"&gt;&lt;br /&gt;		&lt;one-to-many class="Person"&gt;&lt;br /&gt;	&lt;/one-to-many&gt;&lt;/key&gt;&lt;/set&gt;&lt;br /&gt;&lt;/class&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Mapeo muchos a muchos &lt;br /&gt;&lt;br /&gt;EL mapeo muchos a muchos siempre es bidireccional y se mapea como dos colecciones indicandole el nombre de la tabla relación, la cual va a tener los ids de las diferentes entidades; el mapeo sera como el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;class name="Person"&gt;&lt;br /&gt;	&lt;id column="personId" name="id"&gt;&lt;br /&gt;		&lt;generator class="native"&gt;&lt;br /&gt;	&lt;/generator&gt;&lt;/id&gt;&lt;br /&gt;	&lt;set name="addresses" table="PersonAddress"&gt;&lt;br /&gt;		&lt;key column="personId"&gt;&lt;br /&gt;		&lt;many-to-many class="Address" column="addressId"&gt;&lt;br /&gt;	&lt;/many-to-many&gt;&lt;/key&gt;&lt;/set&gt;&lt;br /&gt;&lt;/class&gt;&lt;br /&gt;&lt;br /&gt;&lt;class name="Address"&gt;&lt;br /&gt;	&lt;id column="addressId" name="id"&gt;&lt;br /&gt;		&lt;generator class="native"&gt;&lt;br /&gt;	&lt;/generator&gt;&lt;/id&gt;&lt;br /&gt;	&lt;set inverse="true" name="people" table="PersonAddress"&gt;&lt;br /&gt;		&lt;key column="addressId"&gt;&lt;br /&gt;		&lt;many-to-many class="Person" column="personId"&gt;&lt;br /&gt;	&lt;/many-to-many&gt;&lt;/key&gt;&lt;/set&gt;&lt;br /&gt;&lt;/class&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-7234245712619956001?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/7234245712619956001/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/mapeo-de-relaciones-en-hibernate.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7234245712619956001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/7234245712619956001'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/10/mapeo-de-relaciones-en-hibernate.html' title='Mapeo de relaciones en hibernate'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-2678695325671507586</id><published>2011-09-29T22:02:00.000-03:00</published><updated>2011-09-29T22:02:19.957-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='JPA'/><title type='text'>Mapeos de Herencia con Hibernate</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3DrI2qyM7DQ/ToUUOJIupTI/AAAAAAAAAdA/8zgtFLD1KeI/s1600/hibernate.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="220" src="http://1.bp.blogspot.com/-3DrI2qyM7DQ/ToUUOJIupTI/AAAAAAAAAdA/8zgtFLD1KeI/s320/hibernate.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Hibernate provee 3 estrategias para resolver el mapeo de herencias. &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;La primera es utilizar una sola tabla lo que es recomendable cuando los objetos “hijos” o subclases no agregan gran cantidad de propiedades.&lt;/li&gt;&lt;li&gt;La segunda es utilizar una tabla para la clase “Padre” y los atributos de las subclases en otras tablas.&lt;/li&gt;&lt;li&gt;La tercera es utilizar una tabla por clase.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Si utilizamos una sola tabla deberíamos utilizar una columna que indique de que tipo es el registro que se esta guardando. Este registro se llama discriminator . Por ejemplo en el mapeo de nuestra clase padre deberíamos agregar la siguiente entrada para indicar el dicriminador:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;discriminator column="discriminator_column" force="true|false" formula="arbitrary sql expression" insert="true|false" type="discriminator_type"&gt; &lt;br /&gt;&lt;/discriminator&gt;&lt;/pre&gt;&lt;br /&gt;Y además debemos indicar la subclase:&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;subclass discriminator-value="discriminator_value" dynamic-insert="true|false" dynamic-update="true|false" entity-name="EntityName" extends="SuperclassName" lazy="true|false" name="ClassName" node="element-name" proxy="ProxyInterface"&gt; &lt;br /&gt;	&lt;property ....=""&gt; &lt;br /&gt;	..... &lt;br /&gt;&lt;/property&gt;&lt;/subclass&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Con anotaciones podemos hacerlo como muestra el ejemplo:&lt;br /&gt;&lt;pre class="java" name="code"&gt;@Entity &lt;br /&gt;@Inheritance(strategy=InheritanceType.SINGLE_TABLE) &lt;br /&gt;@DiscriminatorColumn( &lt;br /&gt;	name="planetype", &lt;br /&gt;	discriminatorType=DiscriminatorType.STRING &lt;br /&gt;) &lt;br /&gt;@DiscriminatorValue("Plane") &lt;br /&gt;public class Plane { ... } &lt;br /&gt;&lt;br /&gt;@Entity &lt;br /&gt;@DiscriminatorValue("A320") &lt;br /&gt;public class A320 extends Plane { ... } &lt;br /&gt;&lt;/pre&gt;Si utilizamos una tabla con los datos genéricos y otras por subclase se debe mapear de la siguiente manera: &lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;joined-subclass catalog="catalog" dynamic-insert="true|false" dynamic-update="true|false" entity-name="EntityName" extends="SuperclassName" lazy="true|false" name="ClassName" node="element-name" persister="ClassName" proxy="ProxyInterface" schema="schema" subselect="SQL expression" table="tablename"&gt; &lt;br /&gt;	&lt;br /&gt;	&lt;key ....=""&gt; &lt;br /&gt;	&lt;property ....=""&gt; &lt;br /&gt;	..... &lt;br /&gt;&lt;/property&gt;&lt;/key&gt;&lt;/joined-subclass&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;El atributo key indica cual es el nombre de la columna que contiene el id de la clase padre. Veamos un ejemplo:&lt;br /&gt;&lt;pre class="xml" name="code"&gt; &lt;br /&gt; &lt;br /&gt;	&lt;hibernate-mapping package="eg"&gt; &lt;br /&gt;		&lt;class name="Cat" table="CATS"&gt; &lt;br /&gt;			&lt;id column="uid" name="id" type="long"&gt; &lt;br /&gt;				&lt;generator class="hilo"&gt; &lt;br /&gt;			&lt;/generator&gt;&lt;/id&gt; &lt;br /&gt;			...&lt;br /&gt;			&lt;joined-subclass name="DomesticCat" table="DOMESTIC_CATS"&gt; &lt;br /&gt;				&lt;key column="CAT"&gt; &lt;br /&gt;				&lt;property name="name" type="string"&gt; &lt;br /&gt;			&lt;/property&gt;&lt;/key&gt;&lt;/joined-subclass&gt; &lt;br /&gt;		&lt;/class&gt; &lt;br /&gt;&lt;/hibernate-mapping&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Si utilizamos una tabla por clase se debe declarar de la siguiente manera: &lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;union-subclass abstract="true|false" catalog="catalog" dynamic-insert="true|false" dynamic-update="true|false" entity-name="EntityName" extends="SuperclassName" lazy="true|false" name="ClassName" node="element-name" persister="ClassName" proxy="ProxyInterface" schema="schema" subselect="SQL expression" table="tablename"&gt; &lt;br /&gt;&lt;property ....=""&gt; &lt;br /&gt;..... &lt;br /&gt;&lt;/property&gt;&lt;/union-subclass&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;En este caso no es necesario un discriminador ya que cada tabla tiene su clase.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-2678695325671507586?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/2678695325671507586/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/09/mapeos-de-herencia-con-hibernate.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2678695325671507586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/2678695325671507586'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/09/mapeos-de-herencia-con-hibernate.html' title='Mapeos de Herencia con Hibernate'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-3DrI2qyM7DQ/ToUUOJIupTI/AAAAAAAAAdA/8zgtFLD1KeI/s72-c/hibernate.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-3110182206765146257</id><published>2011-09-29T10:46:00.002-03:00</published><updated>2011-09-29T10:47:01.597-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>MySQL cambia su estrategia de negocio a  “open core”</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-VCSpiC9FApQ/ToR2dl9PhhI/AAAAAAAAAc4/uHAq3KCJnfg/s1600/mysql60-where.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-VCSpiC9FApQ/ToR2dl9PhhI/AAAAAAAAAc4/uHAq3KCJnfg/s1600/mysql60-where.png" /&gt;&lt;/a&gt;	&lt;title&gt;&lt;/title&gt;		&lt;style type="text/css"&gt;	&lt;!--		@page { margin: 2cm }		P { margin-bottom: 0.21cm }	--&gt;	&lt;/style&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;Esuna noticia que se venia venir; oracle anuncio que va a cambiar elmodo en que hace dinero con mysql . Ahora va a tener un “core”libre y productos comerciales ni libres, ni gratuitos. Imagino quemuchas empresas que optaron por el software libre van a pasarse aotros proyectos. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Meimagino que esto impulsara el proyecto MariaDB en el que estatrabajando Monty el creador de MySQL. Creo que también le dará unempujón a PostgreSQL que viene creciendo de una forma constante. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Noestoy en desacuerdo que una empresa haga dinero, es su objetivo perocreo que por nada del mundo puede cambiar el modelo de negocio de unode sus productos. No solo porque pierde credibilidad sino que porquetambien esta traicionando a sus clientes. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;Queopinan de esta noticia?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-DTG494l5RoA/ToR2Z_oVBmI/AAAAAAAAAc0/BFrty9_PAEQ/s1600/oracle-my-sql1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-DTG494l5RoA/ToR2Z_oVBmI/AAAAAAAAAc0/BFrty9_PAEQ/s1600/oracle-my-sql1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;Dejo el link de blog de oracle:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"&gt;&lt;a href="http://blogs.oracle.com/MySQL/entry/new_commercial_extensions_for_mysql"&gt;http://blogs.oracle.com/MySQL/entry/new_commercial_extensions_for_mysql&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: #333333;"&gt;&lt;span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="background: transparent;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-3110182206765146257?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/3110182206765146257/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/09/mysql-cambia-su-estrategia-de-negocio.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3110182206765146257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/3110182206765146257'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/09/mysql-cambia-su-estrategia-de-negocio.html' title='MySQL cambia su estrategia de negocio a  “open core”'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-VCSpiC9FApQ/ToR2dl9PhhI/AAAAAAAAAc4/uHAq3KCJnfg/s72-c/mysql60-where.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-211522626139975347</id><published>2011-09-27T00:49:00.002-03:00</published><updated>2011-09-27T14:12:41.580-03:00</updated><title type='text'>Una profesión clave para el desarrollo</title><content type='html'>Sigo leyendo clarin, me mantengo informado ahora una columna de opinion del Decano de la FRBA, Ing. Guillermo Oliveto en Ieco de Clarin:&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ieco.clarin.com/economia/profesion-clave-desarrollo_0_560944131.html"&gt;http://www.ieco.clarin.com/economia/profesion-clave-desarrollo_0_560944131.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Bueno ahora viene mi opinión, creo que nuestra profesión es fantástica, si te gusta estudiar todo el tiempo, evolucionar, actualizar constantemente.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;El conjunto de incumbencias de nuestra profesión nos posibilitan a dirigir proyectos como a programar y aquí el problema porque el programar nos deja en competencia con el programador de la esquina que sin desmerecer a los programadores de raza (o que aprendieron "de la vida")  cobra mucha veces más barato o se olvida de la calidad en pos de un buen precio.&lt;br /&gt;&lt;br /&gt;Creo que el mercado es amplio hoy en día todos tenemos oportunidad es necesario saber "venderse" para dejar sentado nuestra calidad. Calidad que se ve reflejada por el precio, los tiempos y el&amp;nbsp;código. Estoy convencido que este es el camino para crecer como profesión. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-211522626139975347?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/211522626139975347/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/09/una-profesion-clave-para-el-desarrollo.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/211522626139975347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/211522626139975347'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/09/una-profesion-clave-para-el-desarrollo.html' title='Una profesión clave para el desarrollo'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-hqRqPovYcYs/AAAAAAAAAAI/AAAAAAAAAY0/Dqn6ZFHNQhE/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6337866978093157247.post-1712765070629311898</id><published>2011-09-26T00:53:00.002-03:00</published><updated>2011-09-26T01:23:21.826-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Mapeos en Hibernate</title><content type='html'>Hibernate nos permite definir las relaciones de nuestros objetos con las tablas de la base de datos por medio de un archivo xml y por medio de anotaciones en la clase. &lt;br /&gt;&lt;br /&gt;Veamos con mayor detalle las partes de este mapeo. &lt;br /&gt;&lt;br /&gt;Primero se define la clase y la tabla: &lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&amp;lt; class&amp;nbsp;name="event"&amp;nbsp;table="events"&amp;gt;&lt;br /&gt;...&lt;br /&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Cuando usamos anotaciones llamamos a @Entity que indica que la clase es una entidad manejada por hibernate y se va a persistir. Además con @Table indicamos el nombre de la tabla. &lt;br /&gt;&lt;br /&gt;Luego se puede definir el id, de la siguiente forma: &lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;id access="field|property|ClassName" column="column_name" name="propertyName" type="typename" unsaved-value="null|any|none|undefined|id_value"&gt; &lt;br /&gt;            node="element-name|@attribute-name|element/@attribute|." &lt;br /&gt;&lt;br /&gt;&lt;generator class="generatorClass"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/generator&gt;&lt;/id&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Donde: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;name: Indica el nombre de la propiedad.type: indica el tipo.&amp;nbsp;&lt;/li&gt;&lt;li&gt;column: la columna en la base de datos.&amp;nbsp;&lt;/li&gt;&lt;li&gt;unsaved-value: Valor que toma cuando el objeto no esta guardado.&amp;nbsp;&lt;/li&gt;&lt;li&gt;access: como va aceder hibernate a esta propiedad.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Esto es similar a utilizar la anotación @Id en Jpa. &lt;br /&gt;&lt;br /&gt;El generator es el motor que indica como hibernate se va a manegar para obtener los números de las claves nuevas. &lt;br /&gt;&lt;br /&gt;Hibernate ofrece varias estrategias:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IDENTITY: soporta id autoincrementales en DB2, MySQL, MS SQL Server, Sybase and HypersonicSQL .&amp;nbsp;&lt;/li&gt;&lt;li&gt;SEQUENCE : Usa secuencias de la base.&amp;nbsp;&lt;/li&gt;&lt;li&gt;TABLE: Toma el nombre de la tabla y la columna como fuente y genera una un identificador a partir de estas.&amp;nbsp;&lt;/li&gt;&lt;li&gt;AUTO: Toma el más conveniente según el motor de base de datos.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Cuando son claves compuestas las cuales se encuentran en una clase embebida se puede definir de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;composite-id access="field|property|ClassName" class="ClassName" mapped="true|false" name="propertyName" node="element-name|."&gt; &lt;br /&gt;&lt;key-property column="column_name" name="propertyName" type="typename"&gt; &lt;br /&gt;&lt;key-many-to-one class="ClassName" column="column_name" name="propertyName"&gt; &lt;br /&gt;...... &lt;br /&gt;&lt;/key-many-to-one&gt;&lt;/key-property&gt;&lt;/composite-id&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Cuando tenemos claves compuestas que no se encuentren en una clase envevida podremos definirla de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;composite-id&gt; &lt;br /&gt;	&lt;key-many-to-one name="user"&gt; &lt;br /&gt;		&lt;column name="userfirstname_fk"&gt; &lt;br /&gt;		&lt;column name="userlastname_fk"&gt; &lt;br /&gt;	&lt;/column&gt;&lt;/column&gt;&lt;/key-many-to-one&gt; &lt;br /&gt;	&lt;key-property name="customerNumber"&gt; &lt;br /&gt;&lt;/key-property&gt;&lt;/composite-id&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Version&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Cuando queremos que hibernate detecte los conflictos podemos agregar un campo versión, que indica la versión del registro. De esta forma hibernate incrementara este registro cada vez que guarde.  &lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;version access="field|property|ClassName" column="version_column" generated="never|always" insert="true|false" name="propertyName" node="element-name|@attribute-name|element/@attribute|." type="typename" unsaved-value="null|negative|undefined"&gt; &lt;br /&gt;&lt;/version&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;También se puede utilizar un timestamp para mantener la versión de los registros.&lt;br /&gt;&lt;br /&gt;Con anotaciones podemos usar el @Version. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Property &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Con Property declaramos una propiedad de nuestro objeto:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;property access="field|property|ClassName" column="column_name" formula="arbitrary SQL expression" generated="never|insert|always" index="index_name" insert="true|false" lazy="true|false" length="L" name="propertyName" node="element-name|@attribute-name|element/@attribute|." not-null="true|false" optimistic-lock="true|false" precision="P" scale="S" type="typename" unique="true|false" unique_key="unique_key_id" update="true|false"&gt;&lt;br /&gt;&lt;/property&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Componentes o objetos embebidos&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Se pueden definir estructuras de objetos contenidos en el archivo contenedor, de esta forma nos ahorramos hacer un archivo de mapeo. Cuando la clase contenida es utilizada en 2 o más clases no es conveniente utilizar componentes. &lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;component access="field|property|ClassName" class="className" insert="true|false" lazy="true|false" name="propertyName" node="element-name|." optimistic-lock="true|false" unique="true|false" update="true|false"&gt; &lt;br /&gt;	&lt;property .....=""&gt; &lt;br /&gt;	&lt;many-to-one ....=""&gt; &lt;br /&gt;	........ &lt;br /&gt;&lt;/many-to-one&gt;&lt;/property&gt;&lt;/component&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6337866978093157247-1712765070629311898?l=emanuelpeg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://emanuelpeg.blogspot.com/feeds/1712765070629311898/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://emanuelpeg.blogspot.com/2011/09/mapeos-en-hibernate.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1712765070629311898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6337866978093157247/posts/default/1712765070629311898'/><link rel='alternate' type='text/html' href='http://emanuelpeg.blogspot.com/2011/09/mapeos-en-hibernate.html' title='Mapeos en Hibernate'/><author><name>Emanuel Goette</name><uri>https://profiles.google.com/114749564067693134838</uri><email>noreply@blogger.com</email><gd:image rel='http:
