<?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'><id>tag:blogger.com,1999:blog-31156664</id><updated>2009-11-12T18:45:26.373-06:00</updated><title type='text'>jupabeans</title><subtitle type='html'>Para consultar rápidamente códigos, métodos y rutinas que utilizo frecuentemente</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default?start-index=26&amp;max-results=25'/><author><name>juparave</name><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-31156664.post-6789837702895626617</id><published>2009-03-20T10:42:00.004-06:00</published><updated>2009-03-20T10:54:23.130-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Arreglando locale en Ubuntu 8.10 Intrepid</title><content type='html'>En una nueva instalación del Ubuntu Intrepid, en su versión a 64 bits, batallé dos días para arreglar el problema con el locale, principalmente con perl.&lt;br /&gt;&lt;br /&gt;El mensaje era el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;perl: warning: Setting locale failed.&lt;br /&gt;perl: warning: Please check that your locale settings:&lt;br /&gt;     LANGUAGE = "en_US:en",&lt;br /&gt;     LC_ALL = (unset),&lt;br /&gt;     LANG = "en_US.UTF-8"&lt;br /&gt; are supported and installed on your system.&lt;br /&gt;perl: warning: Falling back to the standard locale ("C").&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Intenté de varias formas arreglar el locale con:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# locale-gen en_US.UTF-8&lt;/code&gt;&lt;br /&gt;&lt;code&gt;# update-locale en_US.UTF-8&lt;/code&gt;&lt;br /&gt;&lt;code&gt;# update-locale-config en_US.UTF-8&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ajustando la configuración de "/etc/environment":&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"&lt;br /&gt;LANGUAGE="en_US:en"&lt;br /&gt;LANG="en_US.UTF-8"&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;y la configuración de "/etc/default/locale":&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;LANG=en_US.UTF-8&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Pero el error seguía, en mi estación también tengo el Intrepid instalado pero en su versión de 32 bits, y llegué a pensar que el problema venía en los paquetes de 64 bits.&lt;br /&gt;&lt;br /&gt;Buscando en google nunca dí con una solución clara al problema y entonces decidí buscar sin especificar la distribución de linuz, para obtener resultados más genéricos y encontré la línea que me ayudó a resolver el problema.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# localedef --no-archive -i en_US -c -f UTF-8 en_US.UTF-8&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;y después las subsecuentes...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;# locale-gen en_US.UTF-8&lt;/code&gt;&lt;br /&gt;&lt;code&gt;# update-locale en_US.UTF-8&lt;/code&gt;&lt;br /&gt;&lt;code&gt;# update-locale-config en_US.UTF-8&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;y problema resuelto.&lt;br /&gt;&lt;br /&gt;Lo copio aquí para próximas instalaciones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-6789837702895626617?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/6789837702895626617/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=6789837702895626617' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/6789837702895626617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/6789837702895626617'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2009/03/arreglando-locale-en-ubuntu-810.html' title='Arreglando locale en Ubuntu 8.10 Intrepid'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-7104901171552151717</id><published>2009-02-24T19:34:00.003-06:00</published><updated>2009-02-24T19:47:26.686-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux eclipse html'/><title type='text'>MyEclipse 7.0 y Visual HTML Designer</title><content type='html'>Es necesario de vez en cuando editar HTML y en Linux a la fecha no hay un editor decente, para mi.  Sé que existen y he usado el &lt;a href="http://quanta.kdewebdev.org/"&gt;Quanta+&lt;/a&gt; y el difunto &lt;a href="http://www.net2.com/nvu"&gt;NVU&lt;/a&gt;, pero ninguno de los dos se compara con el &lt;a href="http://www.adobe.com/products/dreamweaver/"&gt;Dreamweaver&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Entonces escribo código en Linux y luego hago los arreglos cosméticos en la Mac.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.myeclipseide.com/"&gt;MyEclipse&lt;/a&gt;, es la herramienta de desarrollo que más utilizo ahora, tiene un editor decente de html con preview, pero desde hace años sigue en modo "experimental" que es una forma de cubrirse por si tiene algún error.&lt;br /&gt;&lt;br /&gt;Lo puedo activar agregando al laucher &lt;code&gt;-Dlinux.experimental=true&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;En MyEclipse 7.0, se agrega al final de&lt;br /&gt;&lt;code&gt;~/Genuitec/MyEclipse 7.0/myeclipse.ini&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Quedando mi configuración así:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;-startup&lt;br /&gt;../Common/plugins/org.eclipse.equinox.launcher_1.0.101.R34x_v20080819.jar&lt;br /&gt;--launcher.library&lt;br /&gt;../Common/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.0.101.R34x_v20080805&lt;br /&gt;-clean&lt;br /&gt;-configuration&lt;br /&gt;/home/pablito/Genuitec/MyEclipse 7.0/configuration&lt;br /&gt;-vm&lt;br /&gt;/home/pablito/Genuitec/Common/binary/com.sun.java.jre.linux.x86_1.5.0.011/bin/java&lt;br /&gt;-vmargs&lt;br /&gt;-Xms256M&lt;br /&gt;-Xmx512M&lt;br /&gt;-XX:PermSize=128M&lt;br /&gt;-XX:MaxPermSize=256M&lt;br /&gt;-Dlinux.experimental=true&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;No olvidar instalar la librería &lt;span style="font-style: italic;"&gt;libstdc++5&lt;/span&gt; de lo contrario MyEclipse no arrancará arrojando un error poco claro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-7104901171552151717?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/7104901171552151717/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=7104901171552151717' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/7104901171552151717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/7104901171552151717'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2009/02/myeclipse-70-y-visual-html-designer.html' title='MyEclipse 7.0 y Visual HTML Designer'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-7668230161672173948</id><published>2009-01-09T20:48:00.003-06:00</published><updated>2009-01-10T09:16:59.464-06:00</updated><title type='text'>Hibernate Annotations y DELETE_ORPHAN</title><content type='html'>DELETE_ORPHAN aún no es soportado por JPA, pero es una opción muy útil cuando manejamos colecciones.&lt;br /&gt;&lt;br /&gt;Afortunadamente Hibernate 3+ tiene esta opción.&lt;br /&gt;&lt;br /&gt;Agregamos "@OneToMany(cascade=CascadeType.ALL)" pero esta cascada no incluirá el borrado de registros huérfanos que después de algún tiempo se pueden aglutinar en la base de datos.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;@OneToMany&lt;/font&gt;(cascade=CascadeType.ALL)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ff40ff"&gt;@Cascade&lt;/font&gt;({org.hibernate.annotations.CascadeType.DELETE_ORPHAN})&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#00ff00"&gt;public&lt;/font&gt;&amp;nbsp;List&amp;lt;BillDetails&amp;gt; getBillDetails()&amp;nbsp;{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#ffff00"&gt;return&lt;/font&gt;&amp;nbsp;billDetails;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-7668230161672173948?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/7668230161672173948/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=7668230161672173948' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/7668230161672173948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/7668230161672173948'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2009/01/hibernate-annotations-y-deleteorphan.html' title='Hibernate Annotations y DELETE_ORPHAN'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-8943925742341549459</id><published>2008-08-09T12:36:00.005-06:00</published><updated>2008-08-09T13:33:59.133-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='n800'/><category scheme='http://www.blogger.com/atom/ns#' term='maemo'/><title type='text'>Extendiendo la memoria virtual en el Nokia N800</title><content type='html'>La máxima memoria virtual del N800 es de 128KB, quiero agregar por lo menos 1GB que tomaré de la tarjeta interna.&lt;br /&gt;&lt;br /&gt;La SD interna es de 8GB y la tengo ocupada sólo con respaldos de contactos, correos etc.&lt;br /&gt;&lt;br /&gt;Entro como root desde mi desktop.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;hopper800:~# sfdisk -l /dev/mmcblk0&lt;br /&gt;&lt;br /&gt;Disk /dev/mmcblk0: 250112 cylinders, 4 heads, 16 sectors/track&lt;br /&gt;Warning: The partition table looks like it was made&lt;br /&gt;  for C/H/S=*/103/2 (instead of 250112/4/16).&lt;br /&gt;For this listing I'll assume that geometry.&lt;br /&gt;Units = cylinders of 105472 bytes, blocks of 1024 bytes, counting from 0&lt;br /&gt;&lt;br /&gt;   Device Boot Start     End   #cyls    #blocks   Id  System&lt;br /&gt;/dev/mmcblk0p1         39+  77704-  77665-   7999488    b  W95 FAT32&lt;br /&gt;  start: (c,h,s) expected (39,79,1) found (0,130,3)&lt;br /&gt;  end: (c,h,s) expected (1023,102,2) found (996,102,2)&lt;br /&gt;/dev/mmcblk0p2          0       -       0          0    0  Empty&lt;br /&gt;/dev/mmcblk0p3          0       -       0          0    0  Empty&lt;br /&gt;/dev/mmcblk0p4          0       -       0          0    0  Empty&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;El formato original de la tarjeta ocupa los 8GB en una partición FAT32.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;hopper800:~# sfdisk /dev/mmcblk0 -uM&lt;br /&gt;Checking that no-one is using this disk right now ...&lt;br /&gt;OK&lt;br /&gt;&lt;br /&gt;Disk /dev/mmcblk0: 250112 cylinders, 4 heads, 16 sectors/track&lt;br /&gt;Old situation:&lt;br /&gt;Units = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0&lt;br /&gt;&lt;br /&gt;   Device Boot Start   End    MiB    #blocks   Id  System&lt;br /&gt;/dev/mmcblk0p1         0+  6799   6800-   6963199+   b  W95 FAT32&lt;br /&gt;/dev/mmcblk0p2      6800   7815   1016    1040384   82  Linux swap / Solaris&lt;br /&gt;/dev/mmcblk0p3         0      -      0          0    0  Empty&lt;br /&gt;/dev/mmcblk0p4         0      -      0          0    0  Empty&lt;br /&gt;Input in the following format; absent fields get a default value.&lt;br /&gt;&lt;start&gt; &lt;size&gt; &lt;type [E,S,L,X,hex]&gt; &lt;bootable [-,*]&gt; &lt;c,h,s&gt; &lt;c,h,s&gt;&lt;br /&gt;Usually you only need to specify &lt;start&gt; and &lt;size&gt; (and perhaps &lt;type&gt;).&lt;br /&gt;&lt;br /&gt;/dev/mmcblk0p1 :0,6800,82&lt;br /&gt;/dev/mmcblk0p1         0+  6799   6800-   6963199+  82  Linux swap / Solaris&lt;br /&gt;/dev/mmcblk0p2 :,,83&lt;br /&gt;/dev/mmcblk0p2      6800   7815   1016    1040384   83  Linux&lt;br /&gt;/dev/mmcblk0p3 :&lt;br /&gt;/dev/mmcblk0p3         0      -      0          0    0  Empty&lt;br /&gt;/dev/mmcblk0p4 :&lt;br /&gt;/dev/mmcblk0p4         0      -      0          0    0  Empty&lt;br /&gt;New situation:&lt;br /&gt;Units = mebibytes of 1048576 bytes, blocks of 1024 bytes, counting from 0&lt;br /&gt;&lt;br /&gt;   Device Boot Start   End    MiB    #blocks   Id  System&lt;br /&gt;/dev/mmcblk0p1         0+  6799   6800-   6963199+  82  Linux swap / Solaris&lt;br /&gt;/dev/mmcblk0p2      6800   7815   1016    1040384   83  Linux&lt;br /&gt;/dev/mmcblk0p3         0      -      0          0    0  Empty&lt;br /&gt;/dev/mmcblk0p4         0      -      0          0    0  Empty&lt;br /&gt;Warning: no primary partition is marked bootable (active)&lt;br /&gt;This does not matter for LILO, but the DOS MBR will not boot this disk.&lt;br /&gt;Do you want to write this to disk? [ynq] y&lt;br /&gt;Successfully wrote the new partition table&lt;br /&gt;&lt;br /&gt;Re-reading the partition table ...&lt;br /&gt;&lt;br /&gt;If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)&lt;br /&gt;to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1&lt;br /&gt;(See fdisk(8).)&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;El tamaño de la tarjeta no es exactamente 8GB asi que ajusto el tamaño como sigue:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/dev/mmcblk0p1 :0,6800,82&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Partición tipo 82 (linux), el resto lo dejo como swap, tipo 83&lt;br /&gt;&lt;br /&gt;&lt;code&gt;/dev/mmcblk0p2 :,,83&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ahora doy formato a la partición swap:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;hopper800:~# mkswap /dev/mmcblk0&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Checo con &lt;b&gt;free&lt;/b&gt; si lo tengo lo hice bien.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;hopper800:~# free&lt;br /&gt;              total         used         free       shared      buffers&lt;br /&gt;  Mem:       126796       113880        12916            0         7712&lt;br /&gt; Swap:      1040376            0      1040376&lt;br /&gt;Total:      1167172       113880      1053292&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Aparentemete el sistema me reconoce el swap de 1GB. weeeeee! y además es de tipo swap cosa que le ahorrará mucho proceso por no pasar por el sistema de archivos FAT32.&lt;br /&gt;&lt;br /&gt;Ahora cada vez que se reinicie el tablet se perderá este swap, lo mejor es configurarlo para que se monte automáticamente.&lt;br /&gt;&lt;br /&gt;Lo podemos agregar en /etc/fstab para que lo carge cada vez que se reinicie.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;hopper800:~# cat /etc/fstab &lt;br /&gt;rootfs /  rootfs defaults,errors=remount-ro,noatime 0 0&lt;br /&gt;/dev/mmcblk0p1  /media/mmc1 vfat rw,noauto,nodev,noexec,nosuid,utf8,uid=29999 0 0&lt;br /&gt;/dev/mmcblk0p2 none swap sw 0 0&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Luego agregar la siguiente línea antes del &lt;i&gt;exit 0&lt;/i&gt; en &lt;b&gt;/etc/init.d/rcS &lt;/b&gt;:&lt;br /&gt;&lt;code&gt;swapon -a&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;OK &lt;b&gt;swap&lt;/b&gt; listo, ahora el resto de la tarjeta la formateamos como ext2, más eficiente que FAT32.&lt;br /&gt;&lt;br /&gt;Tenemos que instalar las librerías necesarias por que no están incluídas por default en el OS2008.Diablo.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;hopper800:~# apt-get install e2fsprogs&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ahora podemos formatear nuestra partición&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;hopper800:~# mkfs.ext2 /dev/mmcblk0p1 &lt;br /&gt;mke2fs 1.37 (21-Mar-2005)&lt;br /&gt;Filesystem label=&lt;br /&gt;OS type: Linux&lt;br /&gt;Block size=4096 (log=2)&lt;br /&gt;Fragment size=4096 (log=2)&lt;br /&gt;870912 inodes, 1740799 blocks&lt;br /&gt;87039 blocks (5.00%) reserved for the super user&lt;br /&gt;First data block=0&lt;br /&gt;54 block groups&lt;br /&gt;32768 blocks per group, 32768 fragments per group&lt;br /&gt;16128 inodes per group&lt;br /&gt;Superblock backups stored on blocks: &lt;br /&gt; 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632&lt;br /&gt;&lt;br /&gt;Writing inode tables: done                            &lt;br /&gt;Writing superblocks and filesystem accounting information: done&lt;br /&gt;&lt;br /&gt;This filesystem will be automatically checked every 32 mounts or&lt;br /&gt;180 days, whichever comes first.  Use tune2fs -c or -i to override.&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Esta partición se monta automáticamente.&lt;br /&gt;&lt;br /&gt;Espero que el desempeño de mi tablet mejore con esta configuración.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-8943925742341549459?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/8943925742341549459/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=8943925742341549459' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/8943925742341549459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/8943925742341549459'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2008/08/extendiendo-la-memoria-virtual-en-el.html' title='Extendiendo la memoria virtual en el Nokia N800'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-4824940523789661822</id><published>2008-07-21T14:36:00.004-06:00</published><updated>2008-07-21T16:51:07.555-06:00</updated><title type='text'>Agregando librerías al proyecto en Maven 2</title><content type='html'>Desarrollando una aplicación para facturación digital, requiero de aplicar un sello de seguridad y la librería de la cual depende ese método no está en los repositorios de Maven2, si quiero mantener el control con Maven2 debo de incluir esta librería al repositorio local.&lt;br /&gt;&lt;br /&gt;La librería es &lt;a href="http://juliusdavies.ca/commons-ssl/"&gt;Not-Yet-Commons-SSL&lt;/a&gt;, que maneja varios protocolos de seguridad y llaves.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 1:&lt;/span&gt;&lt;br /&gt;Bajar el jar a un direcotorio temporal.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;curl -C - -O http://juliusdavies.ca/commons-ssl/not-yet-commons-ssl-0.3.10.jar&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;small&gt;*No tengo el wget a la mano en Leopard, así que lo bajé con curl&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 2:&lt;/span&gt;&lt;br /&gt;Lo agregamos en el repositorio local de Maven2&lt;br /&gt;&lt;br /&gt;&lt;code&gt;mvn install:install-file -Dfile=not-yet-commons-ssl-0.3.10.jar -DgroupId=org.apache.commons -DartifactId=not-yet-commons-ssl -Dversion=0.3.10 -Dpackaging=jar&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Paso 3:&lt;/span&gt;&lt;br /&gt;Lo ponemos como dependiencia en nuestro proyecto&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;dependency&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;groupId&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;gt;&lt;/span&gt;org.apache.commons&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;artifactId&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;gt;&lt;/span&gt;not-yet-commons-ssl&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;version&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;gt;&lt;/span&gt;0.3.10&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;scope&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;gt;&lt;/span&gt;compile&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;/scope&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Como uso Eclipse, tengo que volver a ejecutar &lt;code&gt;mvn install eclipse:eclipse&lt;/code&gt; para que la librería sea instalada.&lt;br /&gt;Listo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-4824940523789661822?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/4824940523789661822/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=4824940523789661822' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/4824940523789661822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/4824940523789661822'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2008/07/agregando-libreras-al-proyecto-en-maven.html' title='Agregando librerías al proyecto en Maven 2'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-4398433805293272625</id><published>2008-05-23T22:45:00.004-06:00</published><updated>2008-05-23T22:53:15.506-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jstl'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><category scheme='http://www.blogger.com/atom/ns#' term='displaytag'/><category scheme='http://www.blogger.com/atom/ns#' term='appfuse'/><title type='text'>DisplayTag y TableDecorator</title><content type='html'>DisplayTag es una librería comúnmente utilizada en Spring-MVC y facilita muchísimo el despliegue de información en tablas.&lt;br /&gt;&lt;br /&gt;TableDecorator es una clase, que extendida, permite customizar la salida y presentación de las propiedades del objeto listado.&lt;br /&gt;&lt;br /&gt;Por ejemplo.  Tengo el siguiente objeto.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;font color="#ff40ff"&gt;@Entity&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ff00"&gt;public&lt;/font&gt; &lt;font color="#00ff00"&gt;class&lt;/font&gt; Partida &lt;font color="#00ff00"&gt;extends&lt;/font&gt; BaseObject &lt;font color="#00ff00"&gt;implements&lt;/font&gt; Serializable {&lt;br /&gt;        &lt;font color="#00ff00"&gt;private&lt;/font&gt; &lt;font color="#00ff00"&gt;static&lt;/font&gt; &lt;font color="#00ff00"&gt;final&lt;/font&gt; &lt;font color="#00ff00"&gt;long&lt;/font&gt; serialVersionUID = -&lt;font color="#ff6060"&gt;3392581174026724271L&lt;/font&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;private&lt;/font&gt; Long id;&lt;br /&gt;        &lt;font color="#00ff00"&gt;private&lt;/font&gt; User user;&lt;br /&gt;        &lt;font color="#00ff00"&gt;private&lt;/font&gt; EntidadFederativa estado;&lt;br /&gt;        &lt;font color="#00ff00"&gt;private&lt;/font&gt; Intervencion intervencion;&lt;br /&gt;        &lt;font color="#00ff00"&gt;private&lt;/font&gt; FuenteFinanciamiento ff;&lt;br /&gt;        &lt;font color="#00ff00"&gt;private&lt;/font&gt; CatalogoPartidas partida;&lt;br /&gt;        &lt;font color="#00ff00"&gt;private&lt;/font&gt; Double recurso;&lt;br /&gt;        &lt;font color="#00ff00"&gt;private&lt;/font&gt; Boolean compraconsolidada;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@Id&lt;/font&gt; &lt;font color="#ff40ff"&gt;@GeneratedValue&lt;/font&gt;(strategy=GenerationType.AUTO)&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; Long getId() {&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; id;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@ManyToOne&lt;/font&gt;(fetch=FetchType.EAGER)&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@JoinColumn&lt;/font&gt;(name=&lt;font color="#ff6060"&gt;&amp;quot;user_id&amp;quot;&lt;/font&gt;,nullable=&lt;font color="#ff6060"&gt;false&lt;/font&gt;)&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; User getUser() {&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; user;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@ManyToOne&lt;/font&gt;(fetch=FetchType.EAGER)&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@JoinColumn&lt;/font&gt;(name=&lt;font color="#ff6060"&gt;&amp;quot;estado_id&amp;quot;&lt;/font&gt;,nullable=&lt;font color="#ff6060"&gt;false&lt;/font&gt;)&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; EntidadFederativa getEstado() {&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; estado;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@ManyToOne&lt;/font&gt;(fetch=FetchType.EAGER)&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@JoinColumn&lt;/font&gt;(name=&lt;font color="#ff6060"&gt;&amp;quot;intervencion_id&amp;quot;&lt;/font&gt;,nullable=&lt;font color="#ff6060"&gt;false&lt;/font&gt;)&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; Intervencion getIntervencion() {&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; intervencion;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@ManyToOne&lt;/font&gt;(fetch=FetchType.EAGER)&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@JoinColumn&lt;/font&gt;(name=&lt;font color="#ff6060"&gt;&amp;quot;ff_id&amp;quot;&lt;/font&gt;,nullable=&lt;font color="#ff6060"&gt;false&lt;/font&gt;)&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; FuenteFinanciamiento getFf() {&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; ff;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@ManyToOne&lt;/font&gt;(fetch=FetchType.EAGER)&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@JoinColumn&lt;/font&gt;(name=&lt;font color="#ff6060"&gt;&amp;quot;partida_id&amp;quot;&lt;/font&gt;,nullable=&lt;font color="#ff6060"&gt;false&lt;/font&gt;)&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; CatalogoPartidas getPartida() {&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; partida;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; Double getRecurso() {&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; recurso;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; Boolean getCompraconsolidada() {&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; compraconsolidada;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; &lt;font color="#00ff00"&gt;void&lt;/font&gt; setId(Long id) {&lt;br /&gt;                &lt;font color="#00ff00"&gt;this&lt;/font&gt;.id = id;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; &lt;font color="#00ff00"&gt;void&lt;/font&gt; setUser(User user) {&lt;br /&gt;                &lt;font color="#00ff00"&gt;this&lt;/font&gt;.user = user;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; &lt;font color="#00ff00"&gt;void&lt;/font&gt; setEstado(EntidadFederativa estado) {&lt;br /&gt;                &lt;font color="#00ff00"&gt;this&lt;/font&gt;.estado = estado;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; &lt;font color="#00ff00"&gt;void&lt;/font&gt; setIntervencion(Intervencion intervencion) {&lt;br /&gt;                &lt;font color="#00ff00"&gt;this&lt;/font&gt;.intervencion = intervencion;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; &lt;font color="#00ff00"&gt;void&lt;/font&gt; setFf(FuenteFinanciamiento ff) {&lt;br /&gt;                &lt;font color="#00ff00"&gt;this&lt;/font&gt;.ff = ff;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; &lt;font color="#00ff00"&gt;void&lt;/font&gt; setPartida(CatalogoPartidas partida) {&lt;br /&gt;                &lt;font color="#00ff00"&gt;this&lt;/font&gt;.partida = partida;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; &lt;font color="#00ff00"&gt;void&lt;/font&gt; setRecurso(Double recurso) {&lt;br /&gt;                &lt;font color="#00ff00"&gt;this&lt;/font&gt;.recurso = recurso;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; &lt;font color="#00ff00"&gt;void&lt;/font&gt; setCompraconsolidada(Boolean compraconsolidada) {&lt;br /&gt;                &lt;font color="#00ff00"&gt;this&lt;/font&gt;.compraconsolidada = compraconsolidada;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@Override&lt;/font&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; &lt;font color="#00ff00"&gt;boolean&lt;/font&gt; equals(Object obj) {&lt;br /&gt;                &lt;font color="#ffff00"&gt;if&lt;/font&gt; (&lt;font color="#00ff00"&gt;this&lt;/font&gt; == obj)&lt;br /&gt;                        &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;true&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#ffff00"&gt;if&lt;/font&gt; (getClass() != obj.getClass())&lt;br /&gt;                        &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#00ff00"&gt;final&lt;/font&gt; Partida other = (Partida) obj;&lt;br /&gt;                &lt;font color="#ffff00"&gt;if&lt;/font&gt; (compraconsolidada == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) {&lt;br /&gt;                        &lt;font color="#ffff00"&gt;if&lt;/font&gt; (other.compraconsolidada != &lt;font color="#ff6060"&gt;null&lt;/font&gt;)&lt;br /&gt;                                &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                } &lt;font color="#ffff00"&gt;else&lt;/font&gt; &lt;font color="#ffff00"&gt;if&lt;/font&gt; (!compraconsolidada.equals(other.compraconsolidada))&lt;br /&gt;                        &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#ffff00"&gt;if&lt;/font&gt; (estado == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) {&lt;br /&gt;                        &lt;font color="#ffff00"&gt;if&lt;/font&gt; (other.estado != &lt;font color="#ff6060"&gt;null&lt;/font&gt;)&lt;br /&gt;                                &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                } &lt;font color="#ffff00"&gt;else&lt;/font&gt; &lt;font color="#ffff00"&gt;if&lt;/font&gt; (!estado.equals(other.estado))&lt;br /&gt;                        &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#ffff00"&gt;if&lt;/font&gt; (ff == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) {&lt;br /&gt;                        &lt;font color="#ffff00"&gt;if&lt;/font&gt; (other.ff != &lt;font color="#ff6060"&gt;null&lt;/font&gt;)&lt;br /&gt;                                &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                } &lt;font color="#ffff00"&gt;else&lt;/font&gt; &lt;font color="#ffff00"&gt;if&lt;/font&gt; (!ff.equals(other.ff))&lt;br /&gt;                        &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#ffff00"&gt;if&lt;/font&gt; (id == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) {&lt;br /&gt;                        &lt;font color="#ffff00"&gt;if&lt;/font&gt; (other.id != &lt;font color="#ff6060"&gt;null&lt;/font&gt;)&lt;br /&gt;                                &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                } &lt;font color="#ffff00"&gt;else&lt;/font&gt; &lt;font color="#ffff00"&gt;if&lt;/font&gt; (!id.equals(other.id))&lt;br /&gt;                        &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#ffff00"&gt;if&lt;/font&gt; (intervencion == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) {&lt;br /&gt;                        &lt;font color="#ffff00"&gt;if&lt;/font&gt; (other.intervencion != &lt;font color="#ff6060"&gt;null&lt;/font&gt;)&lt;br /&gt;                                &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                } &lt;font color="#ffff00"&gt;else&lt;/font&gt; &lt;font color="#ffff00"&gt;if&lt;/font&gt; (!intervencion.equals(other.intervencion))&lt;br /&gt;                        &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#ffff00"&gt;if&lt;/font&gt; (partida == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) {&lt;br /&gt;                        &lt;font color="#ffff00"&gt;if&lt;/font&gt; (other.partida != &lt;font color="#ff6060"&gt;null&lt;/font&gt;)&lt;br /&gt;                                &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                } &lt;font color="#ffff00"&gt;else&lt;/font&gt; &lt;font color="#ffff00"&gt;if&lt;/font&gt; (!partida.equals(other.partida))&lt;br /&gt;                        &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#ffff00"&gt;if&lt;/font&gt; (recurso == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) {&lt;br /&gt;                        &lt;font color="#ffff00"&gt;if&lt;/font&gt; (other.recurso != &lt;font color="#ff6060"&gt;null&lt;/font&gt;)&lt;br /&gt;                                &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                } &lt;font color="#ffff00"&gt;else&lt;/font&gt; &lt;font color="#ffff00"&gt;if&lt;/font&gt; (!recurso.equals(other.recurso))&lt;br /&gt;                        &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#ffff00"&gt;if&lt;/font&gt; (user == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) {&lt;br /&gt;                        &lt;font color="#ffff00"&gt;if&lt;/font&gt; (other.user != &lt;font color="#ff6060"&gt;null&lt;/font&gt;)&lt;br /&gt;                                &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                } &lt;font color="#ffff00"&gt;else&lt;/font&gt; &lt;font color="#ffff00"&gt;if&lt;/font&gt; (!user.equals(other.user))&lt;br /&gt;                        &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;false&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;true&lt;/font&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#ff40ff"&gt;@Override&lt;/font&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; &lt;font color="#00ff00"&gt;int&lt;/font&gt; hashCode() {&lt;br /&gt;                &lt;font color="#00ff00"&gt;final&lt;/font&gt; &lt;font color="#00ff00"&gt;int&lt;/font&gt; prime = &lt;font color="#ff6060"&gt;31&lt;/font&gt;;&lt;br /&gt;                &lt;font color="#00ff00"&gt;int&lt;/font&gt; result = &lt;font color="#ff6060"&gt;1&lt;/font&gt;;&lt;br /&gt;                result = prime&lt;br /&gt;                                * result&lt;br /&gt;                                + ((compraconsolidada == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) ? &lt;font color="#ff6060"&gt;0&lt;/font&gt; : compraconsolidada&lt;br /&gt;                                                .hashCode());&lt;br /&gt;                result = prime * result + ((estado == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) ? &lt;font color="#ff6060"&gt;0&lt;/font&gt; : estado.hashCode());&lt;br /&gt;                result = prime * result + ((ff == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) ? &lt;font color="#ff6060"&gt;0&lt;/font&gt; : ff.hashCode());&lt;br /&gt;                result = prime * result + ((id == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) ? &lt;font color="#ff6060"&gt;0&lt;/font&gt; : id.hashCode());&lt;br /&gt;                result = prime * result&lt;br /&gt;                                + ((intervencion == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) ? &lt;font color="#ff6060"&gt;0&lt;/font&gt; : intervencion.hashCode());&lt;br /&gt;                result = prime * result + ((partida == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) ? &lt;font color="#ff6060"&gt;0&lt;/font&gt; : partida.hashCode());&lt;br /&gt;                result = prime * result + ((recurso == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) ? &lt;font color="#ff6060"&gt;0&lt;/font&gt; : recurso.hashCode());&lt;br /&gt;                result = prime * result + ((user == &lt;font color="#ff6060"&gt;null&lt;/font&gt;) ? &lt;font color="#ff6060"&gt;0&lt;/font&gt; : user.hashCode());&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; result;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#8080ff"&gt;/**&lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         &lt;/font&gt;&lt;font color="#8080ff"&gt;* &lt;/font&gt;&lt;font color="#ff40ff"&gt;@see &lt;/font&gt;&lt;font color="#00ffff"&gt;java.lang.Object#toString&lt;/font&gt;&lt;font color="#8080ff"&gt;()&lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         */&lt;/font&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; String toString() {&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ffff00"&gt;new&lt;/font&gt; ToStringBuilder(&lt;font color="#00ff00"&gt;this&lt;/font&gt;).append(&lt;font color="#ff6060"&gt;&amp;quot;compraconsolidada&amp;quot;&lt;/font&gt;,&lt;br /&gt;                                &lt;font color="#00ff00"&gt;this&lt;/font&gt;.compraconsolidada).append(&lt;font color="#ff6060"&gt;&amp;quot;estado&amp;quot;&lt;/font&gt;, &lt;font color="#00ff00"&gt;this&lt;/font&gt;.estado).append(&lt;br /&gt;                                &lt;font color="#ff6060"&gt;&amp;quot;id&amp;quot;&lt;/font&gt;, &lt;font color="#00ff00"&gt;this&lt;/font&gt;.id).append(&lt;font color="#ff6060"&gt;&amp;quot;intervencion&amp;quot;&lt;/font&gt;, &lt;font color="#00ff00"&gt;this&lt;/font&gt;.intervencion)&lt;br /&gt;                                .append(&lt;font color="#ff6060"&gt;&amp;quot;user&amp;quot;&lt;/font&gt;, &lt;font color="#00ff00"&gt;this&lt;/font&gt;.user).append(&lt;font color="#ff6060"&gt;&amp;quot;ff&amp;quot;&lt;/font&gt;, &lt;font color="#00ff00"&gt;this&lt;/font&gt;.ff).append(&lt;br /&gt;                                                &lt;font color="#ff6060"&gt;&amp;quot;recurso&amp;quot;&lt;/font&gt;, &lt;font color="#00ff00"&gt;this&lt;/font&gt;.recurso)&lt;br /&gt;                                .append(&lt;font color="#ff6060"&gt;&amp;quot;partida&amp;quot;&lt;/font&gt;, &lt;font color="#00ff00"&gt;this&lt;/font&gt;.partida).toString();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;y la siguiente tabla&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;        &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;display&lt;font color="#00ffff"&gt;:table &lt;/font&gt;&lt;font color="#00ff00"&gt;name&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partidaList&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; &lt;/font&gt;&lt;font color="#00ff00"&gt;class&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;table&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; &lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;                &lt;/font&gt;&lt;font color="#00ff00"&gt;style&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;width: 100%&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; &lt;/font&gt;&lt;font color="#00ff00"&gt;id&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partidaList&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; export=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;true&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; pagesize=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;25&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column property=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;id&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; &lt;/font&gt;&lt;font color="#00ff00"&gt;media&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;csv excel xml pdf&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;                        titleKey=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partida.id&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; /&amp;gt;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column property=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;ff&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; titleKey=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partida.ff&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; /&amp;gt;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column&amp;gt;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column property=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partida.id&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; titleKey=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partida.id&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column&amp;gt;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column property=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partida.nombre&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; titleKey=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partida.nombre&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column&amp;gt;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column property=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;recurso&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; titleKey=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partida.recurso&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column&amp;gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;display&lt;font color="#00ffff"&gt;:table&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Me despliega los datos de manera muy simple&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/kandarv/SDeV3hIyK-I/AAAAAAAAACI/RljhZ-MYlyY/%5BUNSET%5D.png"/&gt;&lt;br /&gt;&lt;br /&gt;La columna del recurso (dinero) se ve mal.&lt;br /&gt;&lt;br /&gt;Extendemos ahora la clase TableDecorator.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#00ff00"&gt;public&lt;/font&gt; &lt;font color="#00ff00"&gt;class&lt;/font&gt; WrapperPartida &lt;font color="#00ff00"&gt;extends&lt;/font&gt; TableDecorator {&lt;br /&gt;&lt;br /&gt;        &lt;font color="#8080ff"&gt;/**&lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         *&lt;/font&gt;&lt;font color="#ff40ff"&gt; DecimalFormat usado para dar formato a getRecurso().&lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         */&lt;/font&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;private&lt;/font&gt; DecimalFormat moneyFormat;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#8080ff"&gt;/**&lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         *&lt;/font&gt;&lt;font color="#ff40ff"&gt; Constructor que asigna el formato, según documentación hace más eficiente la clase&lt;/font&gt;&lt;br /&gt;&lt;font color="#ff40ff"&gt;         &lt;/font&gt;&lt;font color="#8080ff"&gt;*/&lt;/font&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; WrapperPartida() {&lt;br /&gt;                &lt;font color="#00ff00"&gt;super&lt;/font&gt;();&lt;br /&gt;&lt;br /&gt;                &lt;font color="#00ff00"&gt;this&lt;/font&gt;.moneyFormat = &lt;font color="#ffff00"&gt;new&lt;/font&gt; DecimalFormat(&lt;font color="#ff6060"&gt;&amp;quot;$ #,###,###.00&amp;quot;&lt;/font&gt;);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#8080ff"&gt;/**&lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         *&lt;/font&gt;&lt;font color="#ff40ff"&gt; Método para regresar nulos&lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         *&lt;/font&gt;&lt;font color="#ff40ff"&gt; &lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         &lt;/font&gt;&lt;font color="#8080ff"&gt;* &lt;/font&gt;&lt;font color="#ff40ff"&gt;@return&lt;/font&gt;&lt;font color="#8080ff"&gt; &lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;code&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#8080ff"&gt;null&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ffff00"&gt;code&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         */&lt;/font&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; String getNullValue() {&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#ff6060"&gt;null&lt;/font&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;font color="#8080ff"&gt;/**&lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         *&lt;/font&gt;&lt;font color="#ff40ff"&gt; Damos formato al dinero como un String $ #,###,###.format.&lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         * Estamos tomando directamente del objeto tipo Partida, la propiedad recurso&lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         * &lt;/font&gt;&lt;font color="#ff40ff"&gt;@return&lt;/font&gt;&lt;font color="#8080ff"&gt; String&lt;/font&gt;&lt;br /&gt;&lt;font color="#8080ff"&gt;         */&lt;/font&gt;&lt;br /&gt;        &lt;font color="#00ff00"&gt;public&lt;/font&gt; String getRecurso() {&lt;br /&gt;                &lt;font color="#ffff00"&gt;return&lt;/font&gt; &lt;font color="#00ff00"&gt;this&lt;/font&gt;.moneyFormat.format(((Partida) &lt;font color="#00ff00"&gt;this&lt;/font&gt;.getCurrentRowObject())&lt;br /&gt;                                .getRecurso());&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Ahora agregamos el decorator a la tabla en la declaración y además ponemos el total de los recursos asignados.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;font color="#00ffff"&gt;  decorator=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;com.deuxbits.ssaspps.webapp.decorator.WrapperPartida&amp;quot;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Para totalizar los recursos, debemos declarar una variable que almacene los totales.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;font color="#00ffff"&gt; varTotals=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;totals&amp;quot;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;y activar la operacion en las columnas que queramos, para este ejemplo, sólo la de recurso.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column property=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;recurso&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; titleKey=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partida.recurso&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;    &lt;/font&gt;&lt;font color="#00ff00"&gt;class&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;textright&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; total=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;true&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column&amp;gt;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Al final queremos mostrar el total ¿no? para ello utilizamos otro tag de la librería&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;  &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;display&lt;font color="#00ffff"&gt;:footer&amp;gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;tr&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&amp;amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&amp;amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;      &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;Total&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;      &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt; &lt;/font&gt;&lt;font color="#00ff00"&gt;class&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;textright&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;fmt&lt;font color="#00ffff"&gt;:formatNumber &lt;/font&gt;&lt;font color="#00ff00"&gt;value&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;${totals.column4}&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; &lt;/font&gt;&lt;font color="#00ff00"&gt;type&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;currency&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; currencyCode=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;USD&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; /&amp;gt;&lt;/font&gt;&lt;br /&gt;      &lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;tr&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;  &lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;display&lt;font color="#00ffff"&gt;:footer&amp;gt;&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Todo junto queda así:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;display&lt;font color="#00ffff"&gt;:table &lt;/font&gt;&lt;font color="#00ff00"&gt;name&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partidaList&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; &lt;/font&gt;&lt;font color="#00ff00"&gt;class&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;table&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; requestURI=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; varTotals=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;totals&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;  &lt;/font&gt;&lt;font color="#00ff00"&gt;style&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;width: 100%&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; &lt;/font&gt;&lt;font color="#00ff00"&gt;id&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partidaList&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; export=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;true&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; pagesize=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;25&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;  decorator=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;com.deuxbits.ssaspps.webapp.decorator.WrapperPartida&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;  &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column property=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;recurso&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; titleKey=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;partida.recurso&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;    &lt;/font&gt;&lt;font color="#00ff00"&gt;class&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;textright&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; total=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;true&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;display&lt;font color="#00ffff"&gt;:column&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;  &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;display&lt;font color="#00ffff"&gt;:footer&amp;gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;tr&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&amp;amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;font color="#ff40ff"&gt;&amp;amp;nbsp;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;      &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;Total&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;      &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt; &lt;/font&gt;&lt;font color="#00ff00"&gt;class&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;textright&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;fmt&lt;font color="#00ffff"&gt;:formatNumber &lt;/font&gt;&lt;font color="#00ff00"&gt;value&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;${totals.column4}&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; &lt;/font&gt;&lt;font color="#00ff00"&gt;type&lt;/font&gt;&lt;font color="#00ffff"&gt;=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;currency&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; currencyCode=&lt;/font&gt;&lt;font color="#ff6060"&gt;&amp;quot;USD&amp;quot;&lt;/font&gt;&lt;font color="#00ffff"&gt; /&amp;gt;&lt;/font&gt;&lt;br /&gt;      &lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#ffff00"&gt;td&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;    &lt;font color="#00ffff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#ffff00"&gt;tr&lt;/font&gt;&lt;font color="#00ffff"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;  &lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;display&lt;font color="#00ffff"&gt;:footer&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#00ffff"&gt;&amp;lt;/&lt;/font&gt;display&lt;font color="#00ffff"&gt;:table&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Mostrando la tabla de la siguiente manera:&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/kandarv/SDedVxIyK_I/AAAAAAAAACQ/2C-yK7x-DfI/%5BUNSET%5D.png"/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-4398433805293272625?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/4398433805293272625/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=4398433805293272625' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/4398433805293272625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/4398433805293272625'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2008/05/displaytag-y-tabledecorator.html' title='DisplayTag y TableDecorator'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-4303152956683126766</id><published>2008-04-23T18:28:00.005-06:00</published><updated>2008-04-23T18:45:01.499-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>SVN Keywords</title><content type='html'>Para poner datos como versión, autor y última actualización dentro de los fuentes es necesario decirle a svn.&lt;br /&gt;&lt;br /&gt;Una manera rápida de hacerlo es creando un archivo &lt;span style="font-weight: bold;"&gt;.keywords&lt;/span&gt; en la raíz del proyecto con el siguiente contenido.&lt;br /&gt;&lt;pre&gt;Author&lt;br /&gt;Rev&lt;br /&gt;Id&lt;br /&gt;Date&lt;/pre&gt;Luego indicar a svn que queremos llevar esos keywords en todos los archivos del proyecto.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;$ svn -R propset svn:keywords -F .keywords *&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Agregamos una cabecera para los archivos fuentes parecida a esta&lt;br /&gt;&lt;pre&gt;/**&lt;br /&gt; * Archivo.java &lt;br /&gt; * $Rev::                               $:  Revision of last commit&lt;br /&gt; * $Author::                            $:  Author of last commit&lt;br /&gt; * $Date$:&lt;br /&gt; */&lt;/pre&gt;&lt;br /&gt;Y damos un commit a todo el proyecto&lt;blockquote&gt;&lt;pre&gt;$ svn ci -m"Setting keywords"&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Mas información en &lt;a href="http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.html"&gt;svnbook&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-4303152956683126766?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/4303152956683126766/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=4303152956683126766' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/4303152956683126766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/4303152956683126766'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2008/04/svn-keywords.html' title='SVN Keywords'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-4921844184436699705</id><published>2008-04-16T20:20:00.006-06:00</published><updated>2008-04-23T18:28:10.146-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>Multiples instancias de Tomcat</title><content type='html'>Para correr multiples instancias de Tomcat en el mismo servidor.&lt;br /&gt;&lt;br /&gt;Tengo un Tomcat instalado en un RHEL5 en /opt/apache-tomcat-5.5.23 con una liga simbólica de /opt/tomcat5&lt;br /&gt;Dentro de esta instalación en /opt/tomcat5/conf/server.xml tengo configurados varias aplicaciones.  Teniendo varias desventajas.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Si una aplicación consume muchos recursos, todas las demás bajan de rendimiento.&lt;/li&gt;&lt;li&gt;Si una aplicación congela el JVM, las demás dejan de funcionar también.&lt;/li&gt;&lt;/ul&gt;No es práctico tener una instancia para cada aplicación, sobre todo cuando estas son pequeñas soluciones.&lt;br /&gt;&lt;br /&gt;Ahora estoy desarrollando para Tomcat 6 y no quise migrar todas la aplicaciones ya configuradas y probadas en Tomcat 5.5.&lt;br /&gt;&lt;br /&gt;Cree un directorio nuevo /var/tomcat y extraje el último Tomcat 6 en /var/tomcat/apache-tomcat-6.0.16&lt;br /&gt;Cree otro directorio, exclusivo para mi instancia lo llamé serverB (pensando en que luego habrá un serverA y un serverC) y cree el siguiente árbol.&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;&lt;br /&gt;|-- conf&lt;br /&gt;|   |-- server.xml&lt;br /&gt;|   |-- tomcat-users.xml&lt;br /&gt;|   `-- web.xml&lt;br /&gt;|-- logs&lt;br /&gt;|   `-- catalina.out&lt;br /&gt;|-- temp&lt;br /&gt;|-- webapps&lt;br /&gt;`-- work&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Ahora viene lo bueno.&lt;br /&gt;Para correr la instancia y que no choque con la que ya está corriendo, hay que cambiar algunos puertos.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;Service&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 255, 0);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 96, 96);"&gt;"Catalina"&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;Connector&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 255, 0);"&gt;port&lt;/span&gt;=&lt;span style="color: rgb(255, 96, 96);"&gt;"8082"&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 255, 0);"&gt;URIEncoding&lt;/span&gt;=&lt;span style="color: rgb(255, 96, 96);"&gt;"UTF-8"&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 255);"&gt;&amp;lt;!&lt;/span&gt;&lt;span style="color: rgb(128, 128, 255);"&gt;-- Define an AJP 1.3 Connector on port 8020 --&lt;/span&gt;&lt;span style="color: rgb(128, 128, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;Connector&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 255, 0);"&gt;port&lt;/span&gt;=&lt;span style="color: rgb(255, 96, 96);"&gt;"8020"&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 255, 0);"&gt;enableLookups&lt;/span&gt;=&lt;span style="color: rgb(255, 96, 96);"&gt;"false"&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 255, 0);"&gt;redirectPort&lt;/span&gt;=&lt;span style="color: rgb(255, 96, 96);"&gt;"9972"&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 255, 0);"&gt;protocol&lt;/span&gt;=&lt;span style="color: rgb(255, 96, 96);"&gt;"AJP/1.3"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 255, 0);"&gt;URIEncoding&lt;/span&gt;=&lt;span style="color: rgb(255, 96, 96);"&gt;"UTF-8"&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Creamos un script de arranque,&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;run&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 255);"&gt;#!/bin/sh -e&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;JAVA_HOME&lt;/span&gt;=&lt;span style="color: rgb(255, 255, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 96, 96);"&gt;/usr/lib/jvm/java-1.5.0-sun-1.5.0.11&lt;/span&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;JAVA_OPTS&lt;/span&gt;=&lt;span style="color: rgb(255, 255, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 96, 96);"&gt;-Xmx800m -Xms800m&lt;/span&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 255);"&gt;#CATALINA_HOME=/opt/tomcat5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;CATALINA_HOME&lt;/span&gt;=/var/tomcat/apache-tomcat&lt;span style="color: rgb(255, 96, 96);"&gt;-6&lt;/span&gt;.&lt;span style="color: rgb(255, 96, 96);"&gt;0&lt;/span&gt;.&lt;span style="color: rgb(255, 96, 96);"&gt;16&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;CATALINA_BASE&lt;/span&gt;=/var/tomcat/serverB&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;export&lt;/span&gt; JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_BASE&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 255);"&gt;# -p preserves the environment (for $JAVA_HOME etc.)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 255);"&gt;# -s is required because tomcat's login shell is /bin/false&lt;/span&gt;&lt;br /&gt;su &lt;span style="color: rgb(255, 64, 255);"&gt;-p&lt;/span&gt; &lt;span style="color: rgb(255, 64, 255);"&gt;-s&lt;/span&gt; /bin/sh tomcat &lt;span style="color: rgb(255, 64, 255);"&gt;-c&lt;/span&gt; &lt;span style="color: rgb(255, 255, 102);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 64, 255);"&gt;$CATALINA_HOME&lt;/span&gt;&lt;span style="color: rgb(255, 96, 96);"&gt;/bin/catalina.sh start&lt;/span&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;y un script de parada&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;stop&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 128, 255);"&gt;#!/bin/sh -e&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;JAVA_HOME&lt;/span&gt;=&lt;span style="color: rgb(255, 255, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 96, 96);"&gt;/usr/lib/jvm/java-1.5.0-sun-1.5.0.11&lt;/span&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;JAVA_OPTS&lt;/span&gt;=&lt;span style="color: rgb(255, 255, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 96, 96);"&gt;-Xmx800m -Xms800m&lt;/span&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;CATALINA_HOME&lt;/span&gt;=/var/tomcat/apache-tomcat&lt;span style="color: rgb(255, 96, 96);"&gt;-6&lt;/span&gt;.&lt;span style="color: rgb(255, 96, 96);"&gt;0&lt;/span&gt;.&lt;span style="color: rgb(255, 96, 96);"&gt;16&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;CATALINA_BASE&lt;/span&gt;=/var/tomcat/serverB&lt;br /&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;export&lt;/span&gt; JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_BASE&lt;br /&gt;&lt;br /&gt;su &lt;span style="color: rgb(255, 64, 255);"&gt;-p&lt;/span&gt; tomcat &lt;span style="color: rgb(255, 64, 255);"&gt;-c&lt;/span&gt; &lt;span style="color: rgb(255, 255, 102);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 64, 255);"&gt;$CATALINA_HOME&lt;/span&gt;&lt;span style="color: rgb(255, 96, 96);"&gt;/bin/catalina.sh stop&lt;/span&gt;&lt;span style="color: rgb(255, 255, 102);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Ahora tenemos otro Tomcat corriendo en el mismo servidor con puertos diferentes.  Creamos un workerb en /etc/httpd/conf/worker.properties apuntando al puerto 8020.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;worker.workerb.port&lt;/span&gt;=&lt;span style="color: rgb(255, 96, 96);"&gt;8020&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;worker.workerb.host&lt;/span&gt;=&lt;span style="color: rgb(255, 96, 96);"&gt;localhost&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;worker.workerb.type&lt;/span&gt;=&lt;span style="color: rgb(255, 96, 96);"&gt;ajp13&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 255, 255);"&gt;worker.workerb.lbfactor&lt;/span&gt;=&lt;span style="color: rgb(255, 96, 96);"&gt;1&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;y listo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-4921844184436699705?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/4921844184436699705/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=4921844184436699705' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/4921844184436699705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/4921844184436699705'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2008/04/multiples-instancias-de-tomcat.html' title='Multiples instancias de Tomcat'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-913078705579930191</id><published>2008-04-15T17:25:00.003-06:00</published><updated>2008-06-20T23:58:10.340-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='appfuse'/><title type='text'>Appfuse 2. Creando un nuevo proyecto Spring MVC</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Appfuse tiene varias plantillas de proyecto, crearemos nuestro proyecto con la plantilla de Spring-MVC.&lt;br /&gt;&lt;br /&gt;En el directorio que queremos crear el proyecto:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0.1 -DgroupId=com.miproyecto.app -DartifactId=proyecto&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;Las dos últimas opciones son las que cambiamos para personalizar nuestro proyecto.&lt;br /&gt;&lt;i&gt;-DgroupId=com.miproyecto.app&lt;/i&gt; es el paquete raíz que utilizaremos, todos los nuevos paquetes que genera Appfuse se crearán dentro de este.&lt;br /&gt;&lt;i&gt;-DartifactId=proyecto&lt;/i&gt; es el nombre de nuestro proyecto.&lt;br /&gt;&lt;br /&gt;Luego de ejecutar el comando, Appfuse y Maven bajarán todas las librearías de las que depende el proyecto Spring-MVC, entre ellas, Velocity, Hibernate, Spring, AcegiSecurity,...&lt;br /&gt;&lt;br /&gt;Para probarlo primero nois aseguramos de tener un MySQL funcionando con una base de datos lista para el proyecto y editamos el archivo pom.xml en la sección Database Settings que está casi al final para introducir las credenciales.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #808080; font-style: italic;"&gt;&amp;lt;!-- Database settings --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;dbunit&lt;/span&gt;.dataTypeFactoryName&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;org.dbunit.dataset.datatype.DefaultDataTypeFactory&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/dbunit&lt;/span&gt;.dataTypeFactoryName&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;dbunit&lt;/span&gt;.operation.type&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;CLEAN_INSERT&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/dbunit&lt;/span&gt;.operation.type&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;hibernate&lt;/span&gt;.dialect&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;org.hibernate.dialect.MySQL5InnoDBDialect&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/hibernate&lt;/span&gt;.dialect&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;jdbc&lt;/span&gt;.groupId&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;mysql&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/jdbc&lt;/span&gt;.groupId&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;jdbc&lt;/span&gt;.artifactId&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;mysql-connector-java&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/jdbc&lt;/span&gt;.artifactId&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;jdbc&lt;/span&gt;.version&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;5.0.5&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/jdbc&lt;/span&gt;.version&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;jdbc&lt;/span&gt;.driverClassName&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;com.mysql.jdbc.Driver&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/jdbc&lt;/span&gt;.driverClassName&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;jdbc&lt;/span&gt;.url&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #339933;"&gt;&amp;lt;![CDATA[jdbc:mysql://localhost/mibasededatos?createDatabaseIfNotExist=true&amp;amp;amp;useUnicode=true&amp;amp;amp;characterEncoding=utf-8]]&amp;gt;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/jdbc&lt;/span&gt;.url&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;jdbc&lt;/span&gt;.username&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;miusuario&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/jdbc&lt;/span&gt;.username&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;jdbc&lt;/span&gt;.password&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;miclave&lt;span style="color: #009900;"&gt;&lt;span style="font-weight: bold; color: black;"&gt;&amp;lt;/jdbc&lt;/span&gt;.password&lt;span style="font-weight: bold; color: black;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;Para vestir el sitio, editamos las leyendas en /src/main/resources/ApplicationResources.properties&lt;/p&gt;&lt;br /&gt;Lo incluimos a un servidor de control de versiones&lt;br /&gt;&lt;br /&gt;&lt;code&gt;svn import miproyecto svn://somesvnserver.com/proyecto/trunk -m "Inicio de miproyecto"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ahora bajamos el resto de los archivos del proyecto&lt;br /&gt;&lt;br /&gt;&lt;code&gt;mvn appfuse:full-source&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Con este paso dejamos a un lado muchos archivos de appfuse que después podemos integrar al svn cuando creamos necesario.&lt;/p&gt;&lt;p&gt;Generamos los archivos para edición con Eclipse:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;mvn install eclipse:eclipse&lt;/code&gt;&lt;br /&gt;&lt;p&gt;Ahora probamos nuestra aplicación:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;mvn jetty:run-war&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Abrimos nuestro navegador en &lt;a href="http://localhost:8080/"&gt;http://localhost:8080&lt;/a&gt; y debemos ver una ventana de bienvenida&lt;br /&gt;&lt;br /&gt;¡Listo!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Otros comandos usados comúnmente:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Para crear rápidamente una entidad con CRUD&lt;br/&gt;&lt;code&gt;mvn appfuse:gen -Dentity=Page&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Para correr y probar todo el sistema&lt;br/&gt;&lt;code&gt;mvn clean; mvn jetty:run-war -Dmaven.buildNumber.doCheck=false&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Para correr un JUnit&lt;br/&gt;&lt;code&gt;mvn test -Dtest=UserFormControllerTest&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Para exportar la BD usando DBUnit&lt;br/&gt;&lt;code&gt;mvn dbunit:export -Ddest=sample-data.xml&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&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/31156664-913078705579930191?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/913078705579930191/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=913078705579930191' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/913078705579930191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/913078705579930191'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2008/04/appfuse-2-creando-un-nuevo-proyecto_15.html' title='Appfuse 2. Creando un nuevo proyecto Spring MVC'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-6317767580832863410</id><published>2008-04-06T14:25:00.003-06:00</published><updated>2008-04-07T00:36:07.724-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>SVN mini tutorial</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Para importar un proyecto nuevo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;svn import miproyecto svn://somesvnserver.com/miproyecto/trunk -m "Inicio de proyecto"&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;En el servidor SVN debe de estar configurado un repositorio con el nombre de "miproyecto"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Para extraer un proyecto&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;svn co svn://somesvnserver.com/miproyecto/trunk miproyecto&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Para guardar los cambios&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;svn ci -m "Resolviendo error de dependencias"&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;*siempre es bueno poner un comentario corto cada vez&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Para agregar un archivo o directorio&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;svn add nuevo.jsp otro.jsp algo.java&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Este minitutorial está incompleto y poco a poco lo iré terminando&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-6317767580832863410?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/6317767580832863410/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=6317767580832863410' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/6317767580832863410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/6317767580832863410'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2008/04/svn-mini-tutorial.html' title='SVN mini tutorial'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-1321192450189711395</id><published>2008-04-04T10:12:00.005-06:00</published><updated>2008-11-13T10:30:00.430-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='appfuse'/><title type='text'>Appfuse 2</title><content type='html'>&lt;div style="text-align: right;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ioYbByyEgz0/R_ZV8YkqoxI/AAAAAAAAABE/Ku1EbUjiUWY/s1600-h/logo_appfuse.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_ioYbByyEgz0/R_ZV8YkqoxI/AAAAAAAAABE/Ku1EbUjiUWY/s320/logo_appfuse.gif" alt="" id="BLOGGER_PHOTO_ID_5185426516840456978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://appfuse.org/"&gt;Appfuse 2&lt;/a&gt; es una herramienta muy útil para desarrollar proyectos.  Conserva las dependencias de las librerías usadas comunmente en los desarrollos con Java/Hibernate/Spring-MVC.&lt;br /&gt;&lt;br /&gt;También ofrece un ambiente de desarrollo y pruebas autónomo, que obliga a los desarrolladores a seguir siempre los mismos pasos para crear nuevos objetos, relaciones y tablas.&lt;br /&gt;&lt;br /&gt;Se apoya en &lt;a href="http://maven.apache.org/"&gt;Maven&lt;/a&gt; para la administración del proyecto usando su modelo POM (project object model) facilitando la compilación integrando un ambiente uniforme para desarrollo independiente de la plataforma (Linux, OSX y Windows), ofreciendo información técnica del proyecto (librerías de las que depende con versiones; parámetros de compilación para pruebas y despliegue) y promoviendo la aplicación de mejores prácticas (best practices).&lt;br /&gt;&lt;br /&gt;Appfuse crea toda la estructura básica para iniciar un nuevo proyecto.  Después de esto puede también crear las configuraciones necesarias para utilizar el IDE de preferencia.  Soporta &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;, &lt;a href="http://www.jetbrains.com/idea/"&gt;IntelliJIDEA&lt;/a&gt; y &lt;a href="http://www.netbeans.org/"&gt;Netbeans&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-1321192450189711395?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/1321192450189711395/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=1321192450189711395' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/1321192450189711395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/1321192450189711395'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2008/04/appfuse-2.html' title='Appfuse 2'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ioYbByyEgz0/R_ZV8YkqoxI/AAAAAAAAABE/Ku1EbUjiUWY/s72-c/logo_appfuse.gif' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-5566949254221309598</id><published>2008-02-23T10:42:00.004-06:00</published><updated>2008-02-23T11:27:01.704-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><title type='text'>Convirtiendo de CMYK a RGB</title><content type='html'>Muchas veces cuando se procesan imágenes para sitios web, los diseñadores guardan los archivos en formato CMYK, que es muy común para impresiones.  Cuando nos llegas las gráficas, el Internet Explorer o el Firefox no las muestran mandando un error.&lt;br /&gt;&lt;br /&gt;Primero detectar cuáles son los archivos que están con ese formato:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;identify -verbose *.jpg | grep -B 6 "Colorspace: CMYK" | awk '/^Image/ {printf $2"\n"}'&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Luego, hay que convertir esos archivos a RGB usando otro comando.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;convert -colorspace RGB imgCMYK.jpg jpg:imgRGB.jpg&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;En sistemas Linux se puede automatizar de la siguiente forma:&lt;br /&gt;&lt;br /&gt;Copiar todos los archivos jpg en formato CMYK a un directorio temporal y ejecutar el siguiente script.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;PROG="/usr/bin/convert -colorspace RGB "&lt;br /&gt;&lt;br /&gt;find . -iname '*.jpg' -exec $PROG {} jpg:{} \;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Se podría construir un script que haga todo, detecte los archivos, los copie a un directorio temporal, los convierta y luego los copie al directorio original.&lt;br /&gt;&lt;br /&gt;Los comandos gráficos (identify, convert) son de la librería &lt;a href="http://www.imagemagick.org/"&gt;ImageMagick&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-5566949254221309598?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/5566949254221309598/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=5566949254221309598' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/5566949254221309598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/5566949254221309598'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2008/02/convirtiendo-de-cmyk-rgb.html' title='Convirtiendo de CMYK a RGB'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-5155433696220173054</id><published>2007-10-30T13:52:00.001-06:00</published><updated>2008-04-07T00:38:22.381-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>Trigger en MySQL</title><content type='html'>Tengo el caso de que cada vez que agrego un usuario a una tabla debo de codificar su password a MD5 y agregar el login a una tabla con sus ROLES.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;DELIMITER |&lt;br /&gt; &lt;span style="color:#a52a2a;"&gt;&lt;b&gt;CREATE&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#6a5acd;"&gt;TRIGGER&lt;/span&gt; auth_users BEFORE &lt;span style="color:#a52a2a;"&gt;&lt;b&gt;INSERT&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#6a5acd;"&gt;ON&lt;/span&gt; usuarios&lt;br /&gt;   &lt;span style="color:#6a5acd;"&gt;FOR&lt;/span&gt; EACH &lt;span style="color:#6a5acd;"&gt;ROW&lt;/span&gt; &lt;span style="color:#6a5acd;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#a52a2a;"&gt;&lt;b&gt;SET&lt;/b&gt;&lt;/span&gt; NEW.passwdmd5 = md5(NEW.passwd);&lt;br /&gt;     &lt;span style="color:#a52a2a;"&gt;&lt;b&gt;INSERT&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#6a5acd;"&gt;INTO&lt;/span&gt; authorities (username, privilege) &lt;span style="color:#6a5acd;"&gt;values&lt;/span&gt; (NEW.login, &lt;span style="color:#ff00ff;"&gt;"ROLE_USER"&lt;/span&gt;);&lt;br /&gt;   &lt;span style="color:#6a5acd;"&gt;END&lt;/span&gt;;&lt;br /&gt; |&lt;br /&gt;DELIMITER ;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Cambio primero el delimitador cuando tengo varias instrucciones, esto para no confundir a &lt;span style="color:#a52a2a;"&gt;&lt;b&gt;CREATE&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#6a5acd;"&gt;TRIGGER&lt;/span&gt;.  Inicio el loop poniendo el nuevo valor de passwdmd5 con la instrucción md5(NEW.passwd).  NEW es el registro que estoy insertando, por ello lo modifico primero (BEFORE INSERT).&lt;br /&gt;&lt;br /&gt;Agrego el nuevo ROLE en la tabla de authorities creando como default "ROLE_USER".&lt;br /&gt;&lt;br /&gt;Cabe mencionar que para poder crear un Trigger en MySQL tienes que tener privilegios de &lt;b&gt;super user&lt;/b&gt; sobre la base de datos.&lt;br /&gt;&lt;br /&gt;Quizás para terminar habría que agregar otro trigger para cuando borro un usuario, pero para este caso es dificil pues el usuario tiene muchas otras relaciones históricas como lo son pedidos y productos favoritos, información que me es valiosa para análisis, así que no aplica lo de borrar usuarios.&lt;br /&gt;&lt;br /&gt;*&lt;a href="http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html"&gt;MySQL Reference&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-5155433696220173054?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/5155433696220173054/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=5155433696220173054' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/5155433696220173054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/5155433696220173054'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2007/10/trigger-en-mysql.html' title='Trigger en MySQL'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-2034280269027081693</id><published>2007-05-05T11:00:00.000-06:00</published><updated>2007-05-05T11:48:02.019-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jstl'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><title type='text'>fmt:message no funciona</title><content type='html'>Estoy desarrollando un nuevo proyecto usando &lt;a href="http://springframework.org/docs/reference/mvc.html"&gt;Spring MVC&lt;/a&gt;, me parece una plataforma bastante adecuada, algo entre jsp, struts y jsf.&lt;br /&gt;&lt;br /&gt;Cuando seguí los pasos que muestra el tutorial, todo funciona perfectamente, pero cuando quiero desarrollar un nuevo proyecto ya con Spring 2 no me funcionó el &lt;fmt:message key="title" /&gt; dentro del JSP.  Me lo traducía como &lt;span style="font-style: italic;"&gt;???title???&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Me aseguré de que archivo messages.properties estuviera en WEB-INF/classes.&lt;br /&gt;&lt;br /&gt;Que exisistiera en el aplicacion-servlet.xml :&lt;br /&gt;&lt;pre&gt;...&lt;br /&gt;&lt;font color="#008b8b"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008b8b"&gt;bean&lt;/font&gt;&lt;font color="#008b8b"&gt; &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;id&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;messageSource&amp;quot;&lt;/font&gt;&lt;br /&gt;&lt;font color="#008b8b"&gt;        &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;org.springframework.context.support.ResourceBundleMessageSource&amp;quot;&lt;/font&gt;&lt;font color="#008b8b"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#008b8b"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008b8b"&gt;property&lt;/font&gt;&lt;font color="#008b8b"&gt; &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;basename&amp;quot;&lt;/font&gt;&lt;font color="#008b8b"&gt;&amp;gt;&lt;/font&gt;&lt;br /&gt;                &lt;font color="#008b8b"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008b8b"&gt;value&lt;/font&gt;&lt;font color="#008b8b"&gt;&amp;gt;&lt;/font&gt;messages&lt;font color="#008b8b"&gt;&amp;lt;/value&amp;gt;&lt;/font&gt;&lt;br /&gt;        &lt;font color="#008b8b"&gt;&amp;lt;/property&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#008b8b"&gt;&amp;lt;/bean&amp;gt;&lt;/font&gt;&lt;br /&gt;...&lt;/pre&gt;&lt;br /&gt;y aún así seguía con el error.  De casualidad revisando nuevamente el aplicacion-servlet.xml, veo que en el nuevo no tengo una línea en el view resolver y aunque no tenía "nada que ver" ya me faltaban pocas cosas que probar y fué cuando por fin funcionó.&lt;br /&gt;&lt;pre&gt;...&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;bean&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;id&lt;/b&gt;&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 255);"&gt;"viewResolver"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 255);"&gt;"org.springframework.web.servlet.view.InternalResourceViewResolver"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;property&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 255);"&gt;"viewClass"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&lt;/span&gt;org.springframework.web.servlet.view.JstlView&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;property&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 255);"&gt;"prefix"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&lt;/span&gt;/WEB-INF/jsp/&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;property&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 255);"&gt;"suffix"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&lt;/span&gt;.jsp&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;/value&amp;gt;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;/bean&amp;gt;&lt;/span&gt;&lt;br /&gt;...&lt;/pre&gt;&lt;br /&gt;La línea mágica para mi caso fue incluir el &lt;span style="font-style: italic;"&gt;viewClass&lt;/span&gt; como &lt;span style="font-style: italic;"&gt;org.springframework.web.servlet.view.JstlView&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Después de resolver el aparente problema, la solución parece muy simple y sobretodo obvia.  Aquí estoy llamando al jstlView de Spring para una etiqueta que uso en Spring.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-2034280269027081693?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/2034280269027081693/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=2034280269027081693' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/2034280269027081693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/2034280269027081693'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2007/05/fmtmessage-no-funciona.html' title='fmt:message no funciona'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-8132369551000555254</id><published>2007-04-22T10:14:00.000-06:00</published><updated>2007-04-22T10:41:58.259-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><title type='text'>Renombrar archivos con rename (Linux)</title><content type='html'>Muchas veces cuando estamos desarrollando nuevos sitios, es común tener que renombrar muchos archivos, generalmente fotos.&lt;br /&gt;&lt;br /&gt;Para usar las fotos de un producto de manera sencilla, ponemos la clave del producto como el nombre de este y la extensión &lt;span style="font-style: italic;"&gt;jpg&lt;/span&gt; pero cuando además de la foto también tenemos el thumbnail usamos la clave con el sufijo &lt;span style="font-style: italic;"&gt;_th&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si en un folder tengo cientos de archivos gráficos que serán thumbnails pero que aún no llevan el sufijo, tendré que renombrarlos a todos, con rename es muy fácil.&lt;br /&gt;&lt;br /&gt;La sintaxis de rename:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;La parte que quizás más asuste es la del perlexpr.  A estas alturas las expresiones regulares con Perl deberían de ser cosa de todos los días, pero aún existen administradores que no se llevan bien con ellas.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;-v es para ver los resultados&lt;br /&gt;-n es para ver los resultados sin que haga cambios&lt;br /&gt;-f es para forzar la sobreescritura de los archivos resultantes&lt;/blockquote&gt;&lt;br /&gt;Para esta necesidad yo tengo la siguiente lista de archivos:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;AA02.jpg&lt;br /&gt;AJ11.jpg&lt;br /&gt;AJ14.jpg&lt;br /&gt;BO12.jpg&lt;br /&gt;...&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;y los quiero renombrar a:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;AA02_th.jpg&lt;br /&gt;AJ11_th.jpg&lt;br /&gt;AJ14_th.jpg&lt;br /&gt;BO12_th.jpg&lt;br /&gt;...&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;La expresión regular es la siguiente &lt;span style="font-style: italic;"&gt;s/\.jpg$/_th\.jpg/&lt;/span&gt; quedando el comando como sigue:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;$&gt; rename -v &lt;span style="color: rgb(204, 0, 0);"&gt;'s/\.jpg$/_th\.jpg/'&lt;/span&gt; *.jpg&lt;br /&gt;AA02.jpg renamed as AA02_th.jpg&lt;br /&gt;AJ11.jpg renamed as AJ11_th.jpg&lt;br /&gt;AJ14.jpg renamed as AJ14_th.jpg&lt;br /&gt;BO12.jpg renamed as BO12_th.jpg&lt;br /&gt;...&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Mas información:&lt;br /&gt;&lt;a href="http://tips.webdesign10.com/how-to-bulk-rename-files-in-linux-in-the-terminal"&gt;How to Bulk Rename Files in Linux (Terminal or GUI)&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-8132369551000555254?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/8132369551000555254/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=8132369551000555254' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/8132369551000555254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/8132369551000555254'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2007/04/renombrar-archivos-con-rename-linux.html' title='Renombrar archivos con rename (Linux)'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-5695115828295739665</id><published>2007-04-09T23:58:00.000-06:00</published><updated>2007-04-10T00:44:58.333-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jstl'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><title type='text'>Alternando Colores en tablas con jstl</title><content type='html'>Es muy común mostrar tablas o listas en las aplicaciones.  Para facilitar su lectura usamos diferentes colores para cada fila (row).&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color:#008b8b;"&gt;&amp;lt;&lt;/span&gt;c&lt;span style="color:#008b8b;"&gt;:if test=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"${!model.editMode}"&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008b8b;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;&lt;b&gt;table&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color:#008b8b;"&gt;&amp;lt;&lt;/span&gt;c&lt;span style="color:#008b8b;"&gt;:forEach items=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"${model.marcas}"&lt;/span&gt;&lt;span style="color:#008b8b;"&gt; var=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"marca"&lt;/span&gt;&lt;span style="color:#008b8b;"&gt; varStatus=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"loop"&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#008b8b;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;&lt;b&gt;tr&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;style&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"background: ${((loop.index % 2) == 0) ? '#D9E5F2' : '#ABC6E2'}"&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008b8b;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    Español: &lt;span style="color:#008b8b;"&gt;&amp;lt;&lt;/span&gt;c&lt;span style="color:#008b8b;"&gt;:out &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"${marca.entNombre.es}"&lt;/span&gt;&lt;span style="color:#008b8b;"&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#008b8b;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;&lt;b&gt;br&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    Inglés: &lt;span style="color:#008b8b;"&gt;&amp;lt;&lt;/span&gt;c&lt;span style="color:#008b8b;"&gt;:out &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"${marca.entNombre.en}"&lt;/span&gt;&lt;span style="color:#008b8b;"&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008b8b;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008b8b;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#008b8b;"&gt;&amp;lt;&lt;/span&gt;c&lt;span style="color:#008b8b;"&gt;:&lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;url&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"marcas.html?id=${marca.marcaId}"&lt;/span&gt;&lt;span style="color:#008b8b;"&gt; var=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"editLink"&lt;/span&gt;&lt;span style="color:#008b8b;"&gt; /&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#008b8b;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;&lt;b&gt;a&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;href&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"${editLink}"&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;Editar&lt;span style="color:#008b8b;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;&lt;b&gt;a&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008b8b;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#008b8b;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;&lt;b&gt;tr&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color:#008b8b;"&gt;&amp;lt;/&lt;/span&gt;c&lt;span style="color:#008b8b;"&gt;:forEach&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008b8b;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a52a2a;"&gt;&lt;b&gt;table&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008b8b;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008b8b;"&gt;&amp;lt;/&lt;/span&gt;c&lt;span style="color:#008b8b;"&gt;:if&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Es muy simple y funciona muy bien, puede haber otras adaptaciones y en lugar de poner directamente el color de la fila podemos colocar un estilo.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;&lt;/span&gt;c&lt;span style="color: rgb(0, 139, 139);"&gt;:forEach items=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"${model.marcas}"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; var=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"marca"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; varStatus=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"status"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;tr&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;&lt;span style="font-family:monospace;"&gt;class&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"${((status.index % 2) == 0) ? '&lt;span style="font-style: italic;"&gt;par&lt;/span&gt;' : '&lt;span style="font-style: italic;"&gt;impar&lt;/span&gt;'}"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Esto gracias a los valores que nos da varStatus.  En la siguiente tabla pongo todos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;current&lt;/span&gt; &lt;span style="font-style: italic;"&gt;getCurrent()&lt;/span&gt;&lt;br /&gt;El item (de la colección) para el actual round de iteración&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;index&lt;/span&gt; &lt;span style="font-style: italic;"&gt;getIndex()&lt;/span&gt;&lt;br /&gt;El índice desde cero para el actual round de iteración&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;count&lt;/span&gt; &lt;span style="font-style: italic;"&gt;getCount()&lt;/span&gt;&lt;br /&gt;La cuenta desde uno para el actual round de iteración&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;first&lt;/span&gt; &lt;span style="font-style: italic;"&gt;isFirst()&lt;/span&gt;&lt;br /&gt;Bandera que indica si el actual item es el primero de la ronda de iteración&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;last&lt;/span&gt; &lt;span style="font-style: italic;"&gt;isLast()&lt;/span&gt;&lt;br /&gt;Bandera que indica si el actual item es el último de la ronda de iteración&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;begin&lt;/span&gt; &lt;span style="font-style: italic;"&gt;getBegin()&lt;/span&gt;&lt;br /&gt;El valor de begin&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;end&lt;/span&gt; &lt;span style="font-style: italic;"&gt;getEnd()&lt;/span&gt;&lt;br /&gt;El valor de end&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;step&lt;/span&gt; &lt;span style="font-style: italic;"&gt;getStep()&lt;/span&gt; El valor de step&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-5695115828295739665?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/5695115828295739665/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=5695115828295739665' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/5695115828295739665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/5695115828295739665'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2007/04/alternando-colores-en-tablas-con-jstl.html' title='Alternando Colores en tablas con jstl'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-6019593360831706509</id><published>2007-03-29T16:17:00.000-06:00</published><updated>2007-03-29T16:27:18.163-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><title type='text'>Buscar con pageup en Bash</title><content type='html'>Esta era de mis funciones favoritas del bash en Mandrake, pero poco a poco se ha ido perdiendo entre las diferentes distribuciones de linux.  Ahora uso Ubuntu y tampoco lo tiene, así que buscando por la red por fin supe donde había que poner los aliases.  Lo copio aquí que seguro lo necesitaré después.&lt;br /&gt;&lt;br /&gt;~/.inputrc&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;blockquote&gt;"\e[1~": beginning-of-line&lt;br /&gt;"\e[2~": yank&lt;br /&gt;"\e[3~": delete-char&lt;br /&gt;"\e[4~": end-of-line&lt;br /&gt;"\e[5~": history-search-backward&lt;br /&gt;"\e[6~": history-search-forward&lt;br /&gt;$if term=xterm&lt;br /&gt;"\e[2;5~": yank&lt;br /&gt;"\e[3;5~": delete-char&lt;br /&gt;"\e[5;5~": history-search-backward&lt;br /&gt;"\e[6;5~": history-search-forward&lt;br /&gt;$endif&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-6019593360831706509?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/6019593360831706509/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=6019593360831706509' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/6019593360831706509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/6019593360831706509'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2007/03/buscar-con-pageup-en-bash.html' title='Buscar con pageup en Bash'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-3193644349845239216</id><published>2007-03-17T20:15:00.000-06:00</published><updated>2007-03-17T20:14:18.365-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='studio creator'/><title type='text'>Javascript en elementos html con Studio Creator</title><content type='html'>Es común utilizar Javascript para muchas operaciones en el cliente.&lt;br /&gt;&lt;br /&gt;Por ejemplo, queremos que nos calcule una multiplicación entre precio unitario (p.u.) y cantidad (cant) y que ponga el resultado en total durante el proceso de captura.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img157.imageshack.us/img157/4885/textboxesqc8.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://img157.imageshack.us/img157/4885/textboxesqc8.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Para poder hacerlo, tengo que saber los nombres con los que Studio Creator creará los componentes html de la forma.  Puedo ver el "preview" con el botón de arriba en el editor.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img243.imageshack.us/img243/6905/previewbuttondy0.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://img243.imageshack.us/img243/6905/previewbuttondy0.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Luego pido ver la fuente, localizo mis componentes y apunto los nombres.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img295.imageshack.us/img295/1176/buscarcodigotc9.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://img295.imageshack.us/img295/1176/buscarcodigotc9.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;El resultado cambia cuando cualquiera de los operandos se modifica, entonces escuchamos los dos inputs involucrados.  Precio unitario y cantidad.&lt;br /&gt;&lt;br /&gt;Según el preview, el input de precio unitario lo llamará &lt;span style="font-style: italic;"&gt;form1:tabSet1:tab5:tf_pu&lt;/span&gt;, cantidad &lt;span style="font-style: italic;"&gt;form1:tabSet1:tab5:tf_cantidad&lt;/span&gt; y total &lt;span style="font-style: italic;"&gt;form1:tabSet1:tab5:tf_total&lt;/span&gt; el Javascript es muy sencillo:&lt;br /&gt;&lt;pre&gt;&lt;blockquote&gt;document.getElementById('&lt;span style="color: rgb(204, 51, 204);"&gt;form1:tabSet1:tab5:tf_total&lt;/span&gt;').value =&lt;br /&gt; document.getElementById('&lt;span style="color: rgb(204, 51, 204);"&gt;form1:tabSet1:tab5:tf_pu&lt;/span&gt;').value *&lt;br /&gt; document.getElementById('&lt;span style="color: rgb(204, 51, 204);"&gt;form1:tabSet1:tab5:tf_cantidad&lt;/span&gt;').value;&lt;/blockquote&gt;&lt;br /&gt;&lt;/pre&gt;Hay que insertarlo en los dos inputs bajo el evento onChange.  Volvemos a ver el preview para confirmar los cambios en los dos inputs.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"TxtFld"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;id&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"form1:tabSet1:tab5:tf_pu"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"form1:tabSet1:tab5:tf_pu"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;onchange="&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; document.getElementById(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'form1:tabSet1:tab5:tf_total'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;).value = &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;         document.getElementById(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'form1:tabSet1:tab5:tf_pu'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;).value *&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;         document.getElementById(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'form1:tabSet1:tab5:tf_cantidad'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;).value;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;size&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"15"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"text"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"0.0"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; /&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"TxtFld"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;id&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"form1:tabSet1:tab5:tf_cantidad"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"form1:tabSet1:tab5:tf_cantidad"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;onchange="&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; document.getElementById(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'form1:tabSet1:tab5:tf_total'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;).value = &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;         document.getElementById(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'form1:tabSet1:tab5:tf_pu'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;).value *&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;         document.getElementById(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'form1:tabSet1:tab5:tf_cantidad'&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;).value;&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;size&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"15"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"text"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"0.0"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; /&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"TxtFld"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;id&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"form1:tabSet1:tab5:tf_total"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"form1:tabSet1:tab5:tf_total"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;size&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"15"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"text"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; &lt;/span&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;"0.0"&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt; /&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 139, 139);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Listo, quedó agregado el código Javascript y todo lo hicimos dentro del IDE.&lt;br /&gt;&lt;br /&gt;Una solución más elegante sería crear una funcion que haga la operación y sólo llamar a la funcion cuando se active el evento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-3193644349845239216?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/3193644349845239216/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=3193644349845239216' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/3193644349845239216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/3193644349845239216'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2007/03/javascript-en-elementos-html-con-studio.html' title='Javascript en elementos html con Studio Creator'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-4404221390578823346</id><published>2007-03-02T18:54:00.000-06:00</published><updated>2007-03-03T00:43:00.574-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problemas'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><title type='text'>FizzFuzz</title><content type='html'>Mi solución al FizzFuzz en C (la de Java es muy parecida):&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;/*&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt; * Solucion FizzFuzz&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt; * Juparave &lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt; * 2 de marzo 2007&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;*/&lt;/font&gt;&lt;br /&gt;&lt;font color="#a020f0"&gt;#include &lt;/font&gt;&lt;font color="#ff00ff"&gt;&amp;lt;stdio.h&amp;gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt; main(&lt;font color="#2e8b57"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt; argc, &lt;font color="#2e8b57"&gt;&lt;b&gt;char&lt;/b&gt;&lt;/font&gt;** argv){&lt;br /&gt;   &lt;font color="#2e8b57"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt; i;&lt;br /&gt;&lt;br /&gt;   &lt;font color="#a52a2a"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt; (i = &lt;font color="#ff00ff"&gt;0&lt;/font&gt;; i &amp;lt; &lt;font color="#ff00ff"&gt;100&lt;/font&gt;; i++) {&lt;br /&gt;      &lt;font color="#a52a2a"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;( !(i % &lt;font color="#ff00ff"&gt;3&lt;/font&gt;) )&lt;br /&gt;         printf(&lt;font color="#ff00ff"&gt;&amp;quot;fizz&amp;quot;&lt;/font&gt;);&lt;br /&gt;      &lt;font color="#a52a2a"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;( !(i % &lt;font color="#ff00ff"&gt;5&lt;/font&gt;) )&lt;br /&gt;         printf(&lt;font color="#ff00ff"&gt;&amp;quot;fuzz&amp;quot;&lt;/font&gt;);&lt;br /&gt;      &lt;font color="#a52a2a"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/font&gt;( (i % &lt;font color="#ff00ff"&gt;3&lt;/font&gt;) * (i % &lt;font color="#ff00ff"&gt;5&lt;/font&gt;) )&lt;br /&gt;         printf(&lt;font color="#ff00ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#6a5acd"&gt;%d&lt;/font&gt;&lt;font color="#ff00ff"&gt;&amp;quot;&lt;/font&gt;, i);&lt;br /&gt;      printf(&lt;font color="#ff00ff"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#6a5acd"&gt;\n&lt;/font&gt;&lt;font color="#ff00ff"&gt;&amp;quot;&lt;/font&gt;);&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;El FizzFuzz no es mas que listar números del 1 al 100, pero cuando este número sea múltiplo de 3 en lugar imprimir fizz y cuando sea multiplo de 5 imprimir fuzz.  Cuando sea múltiplo de 3 y de 5 imprimir fizzfuzz.  Parece un problema sencillo y cualquiera que se jacte de ser programador debe de tardar menos de 2 minutos en resolverlo... sin comentarios&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-4404221390578823346?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/4404221390578823346/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=4404221390578823346' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/4404221390578823346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/4404221390578823346'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2007/03/fizzfuzz.html' title='FizzFuzz'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-7694516503877938995</id><published>2007-03-02T15:15:00.000-06:00</published><updated>2007-03-02T17:42:58.487-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='uml-basico'/><title type='text'>Repaso de diagramas de clase</title><content type='html'>UML es la mejor forma de comunicar ideas y conceptos entre un equipo de programación.  Es muy fácil de usar una vez que se tiene clara la simbología.&lt;br /&gt;&lt;br /&gt;Los &lt;span style="font-weight: bold;"&gt;diagramas de clase&lt;/span&gt; los usamos para describir las clases de un sistema y sus relaciones entre ellas.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://aycu06.webshots.com/image/12365/2000613685713738666_rs.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://aycu06.webshots.com/image/12365/2000613685713738666_rs.jpg" alt="" border="0" /&gt;&lt;/a&gt;En este diagrama se muestra a la &lt;span style="font-weight: bold;"&gt;Clase 1&lt;/span&gt;, que &lt;span style="font-style: italic;"&gt;hereda&lt;/span&gt; características de la &lt;span style="font-weight: bold;"&gt;Clase A&lt;/span&gt; e &lt;span style="font-style: italic;"&gt;implementa&lt;/span&gt; operaciones de la &lt;span style="font-weight: bold;"&gt;interfaz Q&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La &lt;span style="font-weight: bold;"&gt;Clase 2&lt;/span&gt; &lt;span style="font-style: italic;"&gt;instancia&lt;/span&gt; un objeto de la &lt;span style="font-weight: bold;"&gt;Clase 1&lt;/span&gt; llamado atributo3, a esto se le llama composición (composition)&lt;br /&gt;&lt;br /&gt;Esto en Java quedaría así:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Class Clase_1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; Clase_1 &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;extends&lt;/b&gt;&lt;/span&gt; Clase_A &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;implements&lt;/b&gt;&lt;/span&gt; Interfaz_Q {&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Fields&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; atributo1;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; atributo2;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Methods&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Constructors&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Accessor Methods&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Get the value of atributo1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;* &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;@return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; the value of atributo1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; getAtributo1 (  ) {&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; atributo1;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Set the value of atributo1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/span&gt; setAtributo1 ( &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; value  ) {&lt;br /&gt;atributo1 = value;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Get the value of atributo2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;* &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;@return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; the value of atributo2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; getAtributo2 (  ) {&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; atributo2;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Set the value of atributo2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/span&gt; setAtributo2 ( &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; value  ) {&lt;br /&gt;atributo2 = value;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Operations&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;* &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;@return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt;  operacion1 ( ) {&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Class Clase_2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; Clase_2 {&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Fields&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; atributo1;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; atributo2;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; Clase_1 atributo3;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Methods&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Constructors&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Accessor Methods&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Get the value of atributo1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;* &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;@return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; the value of atributo1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; getAtributo1 (  ) {&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; atributo1;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Set the value of atributo1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/span&gt; setAtributo1 ( &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; value  ) {&lt;br /&gt;atributo1 = value;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Get the value of atributo2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;* &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;@return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; the value of atributo2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; getAtributo2 (  ) {&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; atributo2;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Set the value of atributo2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/span&gt; setAtributo2 ( &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; value  ) {&lt;br /&gt;atributo2 = value;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Get the value of atributo3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;* &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;@return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; the value of atributo3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; Clase_1 getAtributo3 (  ) {&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; atributo3;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Set the value of atributo3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/span&gt; setAtributo3 ( Clase_1 value  ) {&lt;br /&gt;atributo3 = value;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Operations&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Class Clase_A&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; Clase_A {&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Fields&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; atributoA1;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Methods&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Constructors&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Accessor Methods&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Get the value of atributoA1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;* &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;@return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; the value of atributoA1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; getAtributoA1 (  ) {&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; atributoA1;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Set the value of atributoA1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/span&gt; setAtributoA1 ( &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; value  ) {&lt;br /&gt;atributoA1 = value;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Operations&lt;/span&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; Interface Interfaz_Q&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;interface&lt;/b&gt;&lt;/span&gt; Interfaz_Q {&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Methods&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Constructors&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Accessor Methods&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;// Operations&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   *&lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;* &lt;/span&gt;&lt;span style="color: rgb(106, 90, 205);"&gt;@return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;   */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(46, 139, 87);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt;  operacion1 ( );&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Todo muy sencillito, es el primer paso para comprender las relaciones.  Todos los archivos fueron generados automáticamente con &lt;a href="http://uml.sourceforge.net/index.php"&gt;Umbrello&lt;/a&gt; después de dibujar el diagrama de clases.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-7694516503877938995?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/7694516503877938995/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=7694516503877938995' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/7694516503877938995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/7694516503877938995'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2007/03/repaso-de-diagramas-de-clase.html' title='Repaso de diagramas de clase'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-115343266409397687</id><published>2007-02-19T13:25:00.000-06:00</published><updated>2007-02-19T13:28:36.913-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><title type='text'>JOptionPanel, un message box facilito para Swing</title><content type='html'>Es muy frecuente utilizar un mensaje de diálogo cuando queremos que el usuario se entere de un evento o cuando necesitamos confirmación para realizar una acción. &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JOptionPane.html"&gt;JOptionPane&lt;/a&gt; en swing es la mejor opción para hacer este proceso rápido.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;     &lt;font color="#0000ff"&gt;// primero despliego un mensaje para confirmar la operación&lt;/font&gt;&lt;br /&gt;     Object[] options = {&lt;font color="#ff00ff"&gt;&amp;quot;OK&amp;quot;&lt;/font&gt;, &lt;font color="#ff00ff"&gt;&amp;quot;CANCELAR&amp;quot;&lt;/font&gt;};&lt;br /&gt;     &lt;font color="#2e8b57"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/font&gt; confirmar = JOptionPane.showOptionDialog(&lt;font color="#ff00ff"&gt;null&lt;/font&gt;,&lt;br /&gt;             &lt;font color="#ff00ff"&gt;&amp;quot;OK para sobreescribir el archivo&amp;quot;&lt;/font&gt;, &lt;font color="#ff00ff"&gt;&amp;quot;Advertencia&amp;quot;&lt;/font&gt;,&lt;br /&gt;             JOptionPane.DEFAULT_OPTION,&lt;br /&gt;             JOptionPane.WARNING_MESSAGE,&lt;br /&gt;             &lt;font color="#ff00ff"&gt;null&lt;/font&gt;, options, options[&lt;font color="#ff00ff"&gt;0&lt;/font&gt;]);&lt;br /&gt;&lt;br /&gt;     &lt;font color="#0000ff"&gt;// muestro resultado&lt;/font&gt;&lt;br /&gt;     JOptionPane.showMessageDialog(&lt;font color="#2e8b57"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;,&lt;br /&gt;                                   &lt;font color="#ff00ff"&gt;&amp;quot;Opcion seleccionada &amp;quot;&lt;/font&gt; +&lt;br /&gt;                                   options[confirmar], &lt;font color="#ff00ff"&gt;&amp;quot;Información&amp;quot;&lt;/font&gt;,&lt;br /&gt;                                   JOptionPane.INFORMATION_MESSAGE);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-115343266409397687?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/115343266409397687/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=115343266409397687' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/115343266409397687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/115343266409397687'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2006/07/joptionpanel-un-message-box-dinmico.html' title='JOptionPanel, un message box facilito para Swing'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-116960373950796825</id><published>2007-01-23T19:55:00.000-06:00</published><updated>2007-04-23T16:17:58.944-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><title type='text'>Buscar y remplazar en bash con sed y con perl</title><content type='html'>&lt;p&gt;Una de las muchas ventajas de los archivos de configuración en texto es que podemos hacer modificaciones en masa fácilmente.  Por ejemplo si queremos sustituir el nombre de un dominio en un servidor o su ip ha cambiado, podemos usar un script haga en el cambio en todos los archivos de configuración.&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#!/bin/bash&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; i &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(106, 90, 205);"&gt;`*.txt`&lt;/span&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;  &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;do&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;sed&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;-i&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;'&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;s/find/replace/g&lt;/span&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;'&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(160, 32, 240);"&gt;$i&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(165, 42, 42);"&gt;&lt;b&gt;done&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Se puede realizar una versión de este archivo que recupere los parámetros de la línea de comando.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Algo rápido para cambiar el server de svn.&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;$ find . -iname entries | xargs perl -pi -e 's/oldhost/newhost/g'&lt;/pre&gt;&lt;/blockquote&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-116960373950796825?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/116960373950796825/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=116960373950796825' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/116960373950796825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/116960373950796825'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2007/01/buscar-y-remplazar-en-bash-con-sed-y.html' title='Buscar y remplazar en bash con sed y con perl'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-115412389032451200</id><published>2006-07-28T15:58:00.000-06:00</published><updated>2006-07-28T15:58:10.380-06:00</updated><title type='text'>Microsoft: .Net Beat Java, Who's Next?   ...hmm yeah rigth!</title><content type='html'>Esto es lo último en noticias de Microsoft en una desesperación por levantar a .Net&lt;br /&gt;&lt;br /&gt;Microsoft declares Java dead and now focusing on different systems to compete with other platforms like Ruby on Rails.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://www.eweek.com/article2/0,1895,1995495,00.asp"&gt;read more&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://digg.com/programming/Microsoft_Net_Beat_Java_Who_s_Next"&gt;digg story&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-115412389032451200?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/115412389032451200/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=115412389032451200' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/115412389032451200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/115412389032451200'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2006/07/microsoft-net-beat-java-whos-next-hmm.html' title='Microsoft: .Net Beat Java, Who&apos;s Next?   ...hmm yeah rigth!'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-115390030943785097</id><published>2006-07-26T01:51:00.001-06:00</published><updated>2008-04-07T00:38:35.778-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>Atención con altas y bajas en las tablas de MySQL</title><content type='html'>Tengo la 'mala' costumbre de trabajar en tres plataformas, Windows, Linux y OSX.  Linux y OSX son muy parecidos y son mis favoritos, Windows es lo que usa el 98% de mis clientes por lo que tengo muchas veces que diseñar específicamente para esta plataforma y hacer pruebas.&lt;br /&gt;&lt;br /&gt;Es la primera vez que me pasa que los nombres de las tablas en MySQL me causan problemas.  Studio Creator en Windows hizo las ligas y los querys en minúsculas incluso para tablas que tienen altas y bajas.  Cuando seguí el desarrollo en Linux, todo tronó, nada funcionaba.  Mucho tiempo perdido corrigiendo los errores, creo que el mayor culpable aquí es Studio Creator, pues siendo un IDE multi-plataforma debería de considerar estos casos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-115390030943785097?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/115390030943785097/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=115390030943785097' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/115390030943785097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/115390030943785097'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2006/07/atencin-con-altas-y-bajas-en-las_26.html' title='Atención con altas y bajas en las tablas de MySQL'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31156664.post-115320246102398108</id><published>2006-07-18T00:01:00.001-06:00</published><updated>2008-04-07T00:38:02.045-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Enviando Correo con PHP</title><content type='html'>Una función muy popular en los sitios corporativos es la de Contáctenos. Voy a describir rápidamente cómo enviar una forma de contacto por email desde una forma de HTML.&lt;br /&gt;Primero necesitamos la forma que va a contener los datos.&lt;br /&gt;&lt;br /&gt;&lt;img alt="forma" src="http://img89.imageshack.us/img89/2453/formaql3.gif" border="0" height="140" width="265" /&gt;&lt;br /&gt;&lt;br /&gt;OK, la forma puede variar pero el concepto es el mismo. Veamos ahora el HTML de esta forma&lt;br /&gt;&lt;br /&gt;contacto.html (extracto)&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;form&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"contacto"&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;method&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"post"&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;action&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"doemail.php"&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;table&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;tr&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;Nombre:&lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"$form[de_nombre]"&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"text"&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;id&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"$form[nombre]"&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;tr&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;tr&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;Email:&lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"$form[de_email]"&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"text"&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;id&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"$form[email]"&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;tr&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;tr&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;Mensaje:&lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;textarea&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"$form[dmensaje]"&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;id&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"$form[mensaje]"&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;textarea&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;tr&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;tr&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;input&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;type&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"submit"&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;name&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"Submit"&lt;/span&gt;&lt;span style="color:#008080;"&gt; &lt;/span&gt;&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;value&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;=&lt;/span&gt;&lt;span style="color:#ff00ff;"&gt;"Enviar"&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;     &lt;span style="color:#008080;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;td&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;tr&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;table&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008080;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;form&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Es una buena costumbre llenar el campo de id de los elementos de la forma aunque no es necesario. Observar cómo manejamos dentro del array form, todos los campos. Método Post a la páginadoemail.php.&lt;br /&gt;&lt;br /&gt;doemail.php&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color:#6a5acd;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt; * doemail.php&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt; * Autor: Juan Pablo Ramírez&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt; * Fecha: 18 de julio 2006&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt; * Sencilla forma para enviar un correo de contacto por email&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;para_email&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; "&lt;span style="color:#ff00ff;"&gt;contacto@empresafictisio.com&lt;/span&gt;";&lt;br /&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;de_nombre&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;_POST&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;[&lt;/span&gt;"&lt;span style="color:#ff00ff;"&gt;forma&lt;/span&gt;"&lt;span style="color:#6a5acd;"&gt;][&lt;/span&gt;"&lt;span style="color:#ff00ff;"&gt;de_nombre&lt;/span&gt;"&lt;span style="color:#6a5acd;"&gt;]&lt;/span&gt;;&lt;br /&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;de_email&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt;  &lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;_POST&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;[&lt;/span&gt;"&lt;span style="color:#ff00ff;"&gt;forma&lt;/span&gt;"&lt;span style="color:#6a5acd;"&gt;][&lt;/span&gt;"&lt;span style="color:#ff00ff;"&gt;de_email&lt;/span&gt;"&lt;span style="color:#6a5acd;"&gt;]&lt;/span&gt;;&lt;br /&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;titulo&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; "&lt;span style="color:#ff00ff;"&gt;Desde forma de contacto&lt;/span&gt;";&lt;br /&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;mensaje&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;_POST&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;[&lt;/span&gt;"&lt;span style="color:#ff00ff;"&gt;forma&lt;/span&gt;"&lt;span style="color:#6a5acd;"&gt;][&lt;/span&gt;"&lt;span style="color:#ff00ff;"&gt;mensaje&lt;/span&gt;"&lt;span style="color:#6a5acd;"&gt;]&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;headers&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; "&lt;span style="color:#ff00ff;"&gt;MIME-Version: 1.0&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;"&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt; "&lt;span style="color:#ff00ff;"&gt;Content-type: text/html; charset=iso-8859-1&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;"&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt; "&lt;span style="color:#ff00ff;"&gt;X-Mailer: PHP/&lt;/span&gt;" &lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#008080;"&gt;phpversion&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;()&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt; "&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;" &lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt; "&lt;span style="color:#ff00ff;"&gt;From: \"&lt;/span&gt;"&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;de_nombre&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;"&lt;span style="color:#ff00ff;"&gt;\" &amp;lt;&lt;/span&gt;"&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;de_email&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;"&lt;span style="color:#ff00ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;"&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt; "&lt;span style="color:#ff00ff;"&gt;To: \"&lt;/span&gt;"&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;titulo&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;"&lt;span style="color:#ff00ff;"&gt;\" &amp;lt;&lt;/span&gt;"&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;para_email&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;"&lt;span style="color:#ff00ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;"&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt; "&lt;span style="color:#ff00ff;"&gt;Date: &lt;/span&gt;"&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;date&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;(&lt;/span&gt;"&lt;span style="color:#ff00ff;"&gt;r&lt;/span&gt;"&lt;span style="color:#6a5acd;"&gt;)&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;"&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;"&lt;span style="color:#804040;"&gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt; "&lt;span style="color:#ff00ff;"&gt;Subject: Desde forma de contacto&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;\r\n&lt;/span&gt;";&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;// enviando correo&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;mail&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;(&lt;/span&gt;&lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;para_email&lt;/span&gt;, &lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;titulo&lt;/span&gt;, &lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;mensaje&lt;/span&gt;, &lt;span style="color:#804040;"&gt;&lt;b&gt;$&lt;/b&gt;&lt;/span&gt;&lt;span style="color:#008080;"&gt;headers&lt;/span&gt;&lt;span style="color:#6a5acd;"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#6a5acd;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Esta es la manera más sencilla de enviar un correo con PHP, pero es bastante vulnerable contra inyecciones y spam. Más adelante escribiré otro método usando librerías espcializadas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31156664-115320246102398108?l=jupabeans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jupabeans.blogspot.com/feeds/115320246102398108/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=31156664&amp;postID=115320246102398108' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/115320246102398108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31156664/posts/default/115320246102398108'/><link rel='alternate' type='text/html' href='http://jupabeans.blogspot.com/2006/07/enviando-correo-con-php.html' title='Enviando Correo con PHP'/><author><name>juparave</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09534436160263142998'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>