<?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:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6465577696340041904</id><updated>2025-04-19T19:19:13.838-04:00</updated><category term="sun"/><category term="tutorial"/><category term="mac"/><category term="guliqq"/><category term="tip"/><category term="codigo"/><category term="cielo"/><category term="flickr"/><category term="netbeans"/><category term="video"/><category term="software"/><category term="firefox"/><category term="google"/><category term="ie"/><category term="fisica"/><category term="eco"/><category term="postgresql"/><category term="windows"/><category term="xml"/><category term="OOo"/><category term="unix"/><category term="cotizaciones"/><category term="css"/><category term="javascript"/><category term="mysql"/><category term="xhtml"/><category term="musica"/><category term="redes"/><category term="oracle"/><category term="tramites"/><title type='text'>ElBlog</title><subtitle type='html'>Esto es un blog escrito por un tal &lt;strong&gt;Oscar&lt;/strong&gt; desde Iquique (Chile), para compartir y comunicarse con el resto de la comunidad de Internet. También escribo opiniones y HOW-TOs a pedido.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default?start-index=26&amp;max-results=25'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-2676905366728865076</id><published>2010-04-17T22:34:00.000-04:00</published><updated>2010-04-17T22:34:29.066-04:00</updated><title type='text'>En mantención</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Estamos remodelando&lt;/p&gt;
&lt;p&gt;Sólo quería avisar que Google no tiene los suficientes recursos y ganas de seguir manteniendo los blogs que se alojan en servidores propios (como este blog) así que nos están obligando a retirarnos, pasar a blogspot o redirigir un subdominio a sus servidores.&lt;/p&gt;

&lt;p&gt;Yo pienso que es por el tema de la publicidad: quieren hacerle la vida más fácil a la gente que no cacha.&lt;/p&gt;

&lt;p&gt;Por lo mismo, he estado evaluando estos meses &lt;a href=&quot;http://www.wordpress.org/&quot; rel=&quot;external nofollow&quot; xml:lang=&quot;en&quot;&gt;Wordpress&lt;/a&gt; y &lt;a href=&quot;http://www.joomla.org/&quot; rel=&quot;external nofollow&quot; xml:lang=&quot;en&quot;&gt;Joomla&lt;/a&gt;. La verdad es que me carga mantener bases de datos, era feliz manejando sólo archivos.&lt;/p&gt;

&lt;p&gt;También me ha costado mucho tratar de insertar mi propio código dentro de los artículos de este blog en Wordpress para que se ejecute tal como yo lo quiero. Me gusta más escribir el &lt;abbr xml:lang=&quot;en&quot; title=&quot;hypertext markup language&quot;&gt;html&lt;/abbr&gt; directamente cuando escribo, por ejemplo, esto.&lt;/p&gt;
&lt;p&gt;Así que no sé qué voy a hacer, quedan pocos días para que se acabe el mes y no pueda escribir más en este blog a través de blogger y sus comentarios no aparezcan.&lt;/p&gt;

&lt;p&gt;También hay que pensar en los buscadores que ya tienen estos artículos en sus resultados, los links en otros blogs, el OpenId; el feed por lo menos está en &lt;a href=&quot;http://www.feedburner.com/&quot; rel=&quot;external nofollow&quot;&gt;feedburner&lt;/a&gt;, pero puede que con el cambio vuelvan a aparecer los artículos antiguos como nuevos. Maldito, Blogger.&lt;/p&gt;

&lt;p&gt;Esto está en mantención.&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://blogger-ftp.blogspot.com/2010/01/deprecating-ftp.html&quot; xml:lang=&quot;en&quot; rel=&quot;external nofollow&quot;&gt;Blogger FTP Info - Deprecating FTP&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/2676905366728865076/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2010/04/en-mantencion.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/2676905366728865076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/2676905366728865076'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2010/04/en-mantencion.php' title='En mantención'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-293457582496414762</id><published>2010-01-02T05:31:00.000-03:00</published><updated>2010-01-02T05:31:26.479-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><title type='text'>Cómo ejecutar Talend 4.0 en Mac OS X</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;La primera versión beta de &lt;a href=&quot;http://www.talendforge.org/&quot; xml:lang=&quot;en&quot; rel=&quot;externa nofollow&quot;&gt;Talend 4&lt;/a&gt; (&lt;span xml:lang=&quot;en&quot;&gt;software&lt;/span&gt; comercial para &lt;abbr xml:lang=&quot;en&quot; title=&quot;Extract, transform, load&quot;&gt;ETL&lt;/abbr&gt;) tiene un pequeño error que impide que se ejecute a la primera en &lt;span xml:lang=&quot;en&quot;&gt;OS X&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Para una tarea de inteligencia de negocios nos pidieron usar Talend para el proceso de &lt;abbr xml:lang=&quot;en&quot; title=&quot;Extract, transform, load&quot;&gt;ETL&lt;/abbr&gt; y cuando fui a ejecutar el &lt;code&gt;TalendOpenStudio-macosx-carbon.app&lt;/code&gt; de la versión de prueba de una temprana versión beta de &lt;span xml:lang=&quot;en&quot;&gt;Talend 4.0.0&lt;/span&gt;, aparecía el siguiente error:&lt;/p&gt;

&lt;p class=&quot;imagen&quot; xml:lang=&quot;en&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/talend/Talend-error-companion-launcher.png&quot; width=&quot;550&quot; height=&quot;224&quot;&gt;&lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/talend/Talend-error-companion-launcher.png&quot;&gt;The TalendOpenStudio-macosx-carbon executable launcher was unable to locale its companion launcher jar.&lt;/q&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Para arreglarlo había que abrir el archivo &lt;code&gt;TOS-All-r33789-V4.0.0M1/TalendOpenStudio-macosx-carbon.app/Contents/MacOS/TalendOpenStudio-macosx-carbon.ini&lt;/code&gt;. (Para abrir la &lt;code&gt;.app&lt;/code&gt;, en el menú contextual sobre el archivo de la aplicación seleccionar &lt;q&gt;Mostrar contenido del paquete&lt;/q&gt;).&lt;/p&gt;

&lt;p&gt;Hay que editar la parte que dice&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-startup
../../../plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;y reemplazarla por&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-startup
../../../plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Con eso, pude ejecutar la versión 4 (que ya viene con los permisos de ejecutables resueltos) con sólo hacer click en &lt;code&gt;TalendOpenStudio-macosx-carbon.app&lt;/code&gt; en el &lt;span xml:lang=&quot;en&quot;&gt;dock&lt;/span&gt;.&lt;/p&gt;

&lt;p class=&quot;imagen&quot; xml:lang=&quot;en&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/talend/talend4osx.png&quot; width=&quot;550&quot; height=&quot;330&quot;&gt;Interfaz gráfica de &lt;span xml:lang=&quot;en&quot;&gt;Talend Open Studio&lt;/span&gt; 4.0.0M1 para Mac OS X.&lt;/object&gt;&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.talendforge.org/forum/viewtopic.php?pid=35100&quot; xml:lang=&quot;en&quot; rel=&quot;external nofollow&quot;&gt;test only, Talend Open Studio 4.0.0M1 is available&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/293457582496414762/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2010/01/como-ejecutar-talend-40-en-mac-os-x.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/293457582496414762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/293457582496414762'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2010/01/como-ejecutar-talend-40-en-mac-os-x.php' title='Cómo ejecutar Talend 4.0 en Mac OS X'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.252383526516969 -70.1270654797554</georss:point><georss:box>-20.25269802651697 -70.1275214797554 -20.252069026516967 -70.1266094797554</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-6097604551874092702</id><published>2009-12-12T18:33:00.001-03:00</published><updated>2009-12-12T18:35:23.115-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="unix"/><title type='text'>Saber el SID de Oracle en UNIX</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Estaba tratando de conectarme a Oracle desde &lt;span xml:lang=&quot;en&quot;&gt;&lt;abbr title=&quot;Structured Query Language&quot;&gt;SQL&lt;/abbr&gt; Developer&lt;/span&gt; pero el formulario de la conexión me pedía el &lt;abbr xml:lang=&quot;en&quot; title=&quot;System IDentifier&quot;&gt;SID&lt;/abbr&gt;. ¿Pero cuál es mi &lt;abbr xml:lang=&quot;en&quot; title=&quot;System IDentifier&quot;&gt;SID&lt;/abbr&gt;? ¿Ah?&lt;/p&gt;

&lt;p&gt;Por suerte, Oracle estaba instalado sobre un ambiente parecido a &lt;span xml:lang=&quot;en&quot;&gt;UNIX&lt;/span&gt; como lo es &lt;span xml:lang=&quot;en&quot;&gt;Linux&lt;/span&gt; y pude conocer este dato entrando por &lt;abbr xml:lang=&quot;en&quot; title=&quot;Secure SHell&quot;&gt;SSH&lt;/abbr&gt; al servidor y escribiendo el comando:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;ssh&quot;&gt;echo $ORACLE_SID&lt;/code&gt;&lt;/pre&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/SQLdeveloper.png&quot; width=&quot;550&quot; height=&quot;364&quot;&gt;Ventana de configuración de conexiones de &lt;span xml:lang=&quot;en&quot;&gt;&lt;abbr title=&quot;Structured Query Language&quot;&gt;SQL&lt;/abbr&gt; Developer&lt;/span&gt; para &lt;span xml:lang=&quot;en&quot;&gt;Mac OS X&lt;/span&gt; con el &lt;abbr xml:lang=&quot;en&quot; title=&quot;System IDentifier&quot;&gt;SID&lt;/abbr&gt; &lt;code&gt;acinfo&lt;/code&gt;.&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Para administrar mi base de datos estoy usando el software gratuito oficial de Oracle multi-plataforma &lt;a href=&quot;http://www.oracle.com/technology/sqldeveloper/index.html&quot; xml:lang=&quot;en&quot; rel=&quot;external nofollow&quot;&gt;&lt;abbr title=&quot;Structured Query Language&quot;&gt;SQL&lt;/abbr&gt; Developer&lt;/a&gt; (requiere registro previo en &lt;code&gt;oracle.com&lt;/code&gt;).&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://en.allexperts.com/q/Oracle-1451/installed-Oracle-xe.htm&quot; xml:lang=&quot;en&quot; rel=&quot;external nofollow&quot;&gt;All Experts: Oracle - I installed Oracle xe on my...&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/6097604551874092702/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/12/saber-el-sid-de-oracle-en-unix.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/6097604551874092702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/6097604551874092702'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/12/saber-el-sid-de-oracle-en-unix.php' title='Saber el SID de Oracle en UNIX'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-2336937354912399489</id><published>2009-12-11T18:06:00.006-03:00</published><updated>2009-12-11T21:32:15.188-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="postgresql"/><category scheme="http://www.blogger.com/atom/ns#" term="tip"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Columnas que se auto-incrementan en PostgreSQL</title><content type='html'>&lt;p class=&quot;imagen&quot; style=&quot;float:right;margin-left:10px;&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/postgresql.png&quot; width=&quot;128&quot; height=&quot;128&quot;&gt;&lt;span xml:lang=&quot;en&quot;&gt;PostgreSQL&lt;/span&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p class=&quot;introduccion&quot;&gt;&lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; tiene la posibilidad de crear columnas que se auto-incrementan en la misma definición de la columna a travé del comando &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html&quot; rel=&quot;external nofollow&quot;&gt;&lt;code&gt;AUTO_INCREMENT&lt;/code&gt;&lt;/a&gt;, no así &lt;span xml:lang=&quot;en&quot;&gt;PostgreSQL&lt;/span&gt;. En &lt;span xml:lang=&quot;en&quot;&gt;Postgres&lt;/span&gt; es más complicado, y de esta manera lo hago yo.&lt;/p&gt;

&lt;h3&gt;1. Crear secuencia&lt;/h3&gt;
&lt;h4&gt;Con pgAdmin III&lt;/h4&gt;
&lt;p&gt;pgAdmin3 es una aplicación multi-plataforma que sirve para administrar las bases de datos &lt;span xml:lang=&quot;en&quot;&gt;PostgreSQL&lt;/span&gt; hecha por la misma comunidad &lt;span xml:lang=&quot;en&quot;&gt;PostgreSQL&lt;/span&gt;. Si l quieres hacer por líneas de comandos, avanza un poco más en este artículo.&lt;/p&gt;

&lt;p&gt;Una vez abierto el &lt;span xml:lang=&quot;en&quot;&gt;pgAdmnin3&lt;/span&gt; y hecha la conexión:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;&lt;p&gt;Expando mi base datos, mi Esquema, elijo con el botón secundario del &lt;span xml:lang=&quot;en&quot;&gt;mouse&lt;/span&gt; la sección Secuencias y elijo en el menú contextual la opción &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/postgresql-autoincrementar/Nueva_Secuencia.png&quot;&gt;Nueva Secuencia...&lt;/q&gt;&lt;/p&gt;
&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/postgresql-autoincrementar/Nueva_Secuencia.png&quot; width=&quot;411&quot; height=&quot;159&quot;&gt;Menú contextual sobre las Secuencias de una base de datos PotgreSQL en pgAdmin3.&lt;/object&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;En el formulario le pongo un nombre (en mi caso se llamará &lt;code&gt;transferencias_id&lt;/code&gt;), el usuario que hará uso de esta secuencia (en mi caso, el usurio se llama &lt;code&gt;ooscarr&lt;/code&gt;) y &lt;span xml:lang=&quot;en&quot;&gt;OK&lt;/span&gt;. También puedo elegir si quier que se auto-incremente a partir de un número diferente al 1 y/o si quiero que el número vaya aumentando de 2 en 2, 3 en 3, &lt;abbr title=&quot;etcétera&quot;&gt;etc.&lt;/abbr&gt; en vez de 1 en 1 como se pone por defecto.&lt;/p&gt;
&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/postgresql-autoincrementar/secuencia.png&quot; width=&quot;500&quot; height=&quot;636&quot;&gt;Diálogo de secuencia nueva en pgAdminIII. Si sólo se llenan los campos &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/postgresql-autoincrementar/secuencia.png&quot;&gt;Nombre&lt;/q&gt; y &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/postgresql-autoincrementar/secuencia.png&quot;&gt;Propietario&lt;/q&gt;, &lt;span xml:lang=&quot;en&quot;&gt;PostgreSQL&lt;/span&gt; los llenará automáticamente con incremento de 1 en 1, desde el número 1, y le asignará una &lt;abbr xml:lang=&quot;en&quot; title=&quot;Object identifier&quot;&gt;OID&lt;/abbr&gt;, &lt;abbr title=&quot;etcétera&quot;&gt;etc&lt;/abbr&gt;, &lt;abbr title=&quot;etcétera&quot;&gt;etc&lt;/abbr&gt;.&lt;/object&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;h4&gt;Lo mismo, desde la línea de comandos&lt;/h4&gt;

&lt;p&gt;si seleccionas la nueva secuencia que se agrega a la lista puedes ver el comando &lt;abbr xml:lang=&quot;en&quot; title=&quot;Structured Query Language&quot;&gt;SQL&lt;/abbr&gt; que se utilizó para crearla. Lo mismo se pudo haber hecho desde la línea de comandos &lt;code&gt;psql&lt;/code&gt; con:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;CREATE SEQUENCE transferencias_id;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ó&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;CREATE SEQUENCE transferencias_id
  INCREMENT 1
  MINVALUE 1
  START 1
  CACHE 1;
ALTER TABLE transferencias_id OWNER TO ooscarr;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;transferencias_id&lt;/code&gt; es el nombre que le asigné a la secuencia y &lt;code&gt;ooscarr&lt;/code&gt; es el usuario de &lt;span xml:lang=&quot;en&quot;&gt;PostgreSQL&lt;/span&gt; que es dueño de esta variable auto-incrementable.&lt;/p&gt;


&lt;h3&gt;2. Usar la secuencia en una columna&lt;/h3&gt;

&lt;h4&gt;Con pgAdmin3&lt;/h4&gt;

&lt;ol&gt;&lt;li&gt;Expandemos la tabla que queremos modificar, expandemos Columnas, y seleccionamos la columna de la tabla que se deseas que se auto-incremente con esta variable, vas a las &lt;q&gt;Propiedades...&lt;/q&gt;.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;En el inspector de columna, le asignamos el &lt;q&gt;Valor por defecto&lt;/q&gt; &lt;code&gt;NEXTVAL(&#39;transferencias_id&#39;)&lt;/code&gt;. Siendo &lt;code&gt;transferencias_id&lt;/code&gt; el nombre de la secuencia.&lt;/p&gt;
&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/postgresql-autoincrementar/NEXTVAL.png&quot; width=&quot;500&quot; height=&quot;630&quot;&gt;Diálogo de Propiedades de columna en pgAdminIII, con el campo &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/postgresql-autoincrementar/NEXTVAL.png&quot;&gt;Valor por defecto &lt;code&gt;NEXTVAL(&#39;transferencias_id&#39;)&lt;/code&gt;&lt;/q&gt;.&lt;/object&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li xml:lang=&quot;en&quot;&gt;OK&lt;/li&gt;&lt;/ol&gt;

&lt;h4&gt;Con comandos (&lt;code&gt;psql&lt;/code&gt;)&lt;/h4&gt;
&lt;p&gt;Sería...&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;SQL&quot;&gt;ALTER TABLE transferencias 
    ALTER COLUMN id 
        SET DEFAULT NEXTVAL(&#39;transferencias_id&#39;);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;transferencias_id&lt;/code&gt; es el nombre de la secuencia, &lt;code&gt;id&lt;/code&gt; es el nombre de la columna a asignarle la secuencia y &lt;code&gt;transferencias&lt;/code&gt; es el nombre de mi tabla donde está la columna con al secuencia.&lt;/p&gt;

&lt;h3&gt;Actualizar filas anteriores sin la secuencia&lt;/h3&gt;
&lt;h4&gt;Con comandos&lt;/h4&gt;
&lt;p&gt;Para cambiar los valores &lt;code&gt;null&lt;/code&gt; de las filas creadas antes de la asignación de la variable auto-incrementable, consultamos:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;SQL&quot;&gt;UPDATE transferencias 
    SET id = NEXTVAL(&#39;transferencias_id&#39;);&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote cite=&quot;http://pointbeing.net/weblog/2008/03/mysql-versus-postgresql-adding-an-auto-increment-column-to-a-table.html&quot;&gt;&lt;p&gt;Ese paso final es una de las cosas más lentas que puedes pedirle a Postgres que haga posiblemente. Para una tabla de tamaño mediano (alrededor de 5,000,000 tuplas, con unas cuantas columnas de pequeños números y textos), eso tomó cerca de 2.5 horas en &lt;span xml:lang=&quot;en&quot;&gt;hardware&lt;/span&gt; poderoso - así que querrás dejar esto por un tiempo tranquilo. Afortunadamente &lt;span xml:lang=&quot;en&quot;&gt;Postgres&lt;/span&gt; interpreta el &lt;code xml:lang=&quot;en&quot;&gt;UPDATE&lt;/code&gt; como una transacción atómica: nada se realiza hasta que el comando se complete, así será difícil que dejes los datos en un estado inconsistente.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Y ya con eso, cada vez que crees una nueva fila en esa tabla, esa columna se llenará automáticamente con un número distinto automáticamente.&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://pointbeing.net/weblog/2008/03/mysql-versus-postgresql-adding-an-auto-increment-column-to-a-table.html&quot; rel=&quot;external nofollow&quot;&gt;MySQL versus PostgreSQL: Adding an Auto-Increment Column to a Table&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/05/respaldemos-la-base-de-datos.php&quot;&gt;¿Respaldemos la base de datos?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/2336937354912399489/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/12/columnas-que-se-auto-incrementan-en.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/2336937354912399489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/2336937354912399489'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/12/columnas-que-se-auto-incrementan-en.php' title='Columnas que se auto-incrementan en PostgreSQL'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.242710235055181 -70.141790807247162</georss:point><georss:box>-20.243024735055183 -70.142246807247162 -20.24239573505518 -70.141334807247162</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-110868229400290890</id><published>2009-12-04T01:32:00.011-03:00</published><updated>2010-01-22T14:33:07.149-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codigo"/><category scheme="http://www.blogger.com/atom/ns#" term="guliqq"/><category scheme="http://www.blogger.com/atom/ns#" term="netbeans"/><category scheme="http://www.blogger.com/atom/ns#" term="sun"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Ejemplo de aplicación web con Hibernate que funciona usando Netbeans IDE y JSTL (JSP(X))</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Al final de este tutorial conocerás la dinámica del desarrollo de una aplicación web manejando la persistencia de la base de datos con &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; y cómo &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;Integrated Development Environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt; te ayuda a escribir el código y consultar la base de datos. También escribirás una aplicación web &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Server Pages&quot;&gt;JSP&lt;/abbr&gt; que haga consultas a esta base de datos a través usando &lt;abbr xml:lang=&quot;en&quot; title=&quot;eXtensible Markup Language&quot;&gt;XML&lt;/abbr&gt;.&lt;/p&gt;

&lt;p&gt;Este ejemplo de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; es famoso, está documentado en varias páginas, pero todas tienen el código malo y es frustrante aprender así. Así que lo corregí y lo traduje al español sacando cosas de uno y de otro mismo tutorial que encontré en ¡chino, portugués, inglés y ruso!&lt;/p&gt;

&lt;blockquote cite=&quot;http://wiki.netbeans.org/HibernateAndWebApp#section-HibernateAndWebApp-HibernateSupportInNetBeans&quot;&gt;&lt;p&gt;Soporte para &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; en aplicaciones web está disponible desde &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt; 6.1. Desde &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt; 6.5, también puedes hacer ingeniería inversa a las tablas de una &lt;abbr title=&quot;Base de datos&quot;&gt;BD&lt;/abbr&gt; a archivos de mapeo y clases Java correspondientes usando un asistente intuitivo.&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;Pasos previos&lt;/h3&gt;
&lt;p&gt;Antes de empezar necesitarás:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Instalar &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt;. Al momento de escribir esto, anda dando vueltas la versión 6.8 &lt;abbr xml:lang=&quot;en&quot; title=&quot;Release Candidate 2&quot;&gt;RC2&lt;/abbr&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/11/instale-mysql-en-mac-os-x.php&quot;&gt;Instalar &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;&lt;/a&gt; o &lt;span xml:lang=&quot;en&quot;&gt;Java &lt;abbr xml:lang=&quot;en&quot; title=&quot;DataBase&quot;&gt;DB&lt;/abbr&gt;&lt;/span&gt;, o tener acceso a conectarte a una de estas bases de datos con permiso para acceder o crear la base de datos Sakila. La base de datos Sakila está disponible en estos dos tipos de bases de datos, pero &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; funciona con cualquier &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java DataBase Connectivity&quot;&gt;JDBC&lt;/abbr&gt;, por ejemplo &lt;span xml:lang=&quot;en&quot;&gt;PostgreSQL&lt;/span&gt; y &lt;span xml:lang=&quot;en&quot;&gt;Oracle&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/11/importar-la-base-de-datos-de-ejemplo.php&quot;&gt;Importar la base de datos de ejemplo Sakila&lt;/a&gt; (a la que le haremos consultas en este ejemplo).&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Una vez obtenido esto, asegúrate de configurar &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt; para poder acceder a la base de datos Sakila desde el panel &quot;Prestaciones&quot; (Menú &lt;q&gt;Ventana&lt;/q&gt; &amp;gt; &lt;q&gt;Prestaciones&lt;/q&gt;.&lt;/p&gt;

&lt;h4&gt;Instalar el complemento de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;El &lt;span xml:lang=&quot;en&quot; title=&quot;Complemento&quot;&gt;plug-in&lt;/span&gt;, si no lo tienes ya instalado, lo obtienes&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;yendo, en el menú, a &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/fromFilm.png&quot;&gt;Herramientas&lt;/q&gt; &amp;gt; &lt;q&gt;Complementos&lt;/q&gt;.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;En la ficha &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/HibernatePlugin.png&quot;&gt;&lt;span xml:lang=&quot;en&quot;&gt;Plugins&lt;/span&gt; disponibles&lt;/q&gt;, selecciona la casilla del módulo &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/HibernatePlugin.png&quot; xml:lang=&quot;en&quot;&gt;Hibernate&lt;/q&gt; y presiona &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/HibernatePlugin.png&quot;&gt;Instalar&lt;/q&gt;.&lt;/p&gt;
&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/HibernatePlugin.png&quot; width=&quot;500&quot; height=&quot;348&quot;&gt;&lt;/object&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;q&gt;Siguiente&lt;/q&gt;&lt;/li&gt;
&lt;li&gt;Acepta los términos de todos los contratos de licencia y presiona el botón de Instalar.&lt;/li&gt;
&lt;li&gt;Después que se descargue y se instale, presiona Terminar.&lt;/li&gt;
&lt;li&gt;Y listo, el módulo para &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; (o Hibernar) se activará solo; o sino, reinicia &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;


&lt;h3&gt;Crear Proyecto nuevo&lt;/h3&gt;

&lt;p&gt;Primero: lo típico. Creamos un Proyecto nuevo de tipo &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/cewolf-hello-world/Imagen%201.png&quot;&gt;Aplicación web&lt;/q&gt;.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/cewolf-hello-world/Imagen%201.png&quot; width=&quot;500&quot; height=&quot;360&quot;&gt;Asistente de Nuevo proyecto de &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans&lt;/span&gt;, bajo la categoría Web está la opción Aplicación web.&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Para nuestro ejemplo, le damos el nombre &lt;code&gt;&lt;strong&gt;DVDStore&lt;/strong&gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Elegimos un servidor como &lt;span xml:lang=&quot;en&quot;&gt;Tomcat&lt;/span&gt; o &lt;span xml:lang=&quot;en&quot;&gt;Glassfish&lt;/span&gt;, Siguiente y marcamos la opción &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; y seleccionamos la base de datos &lt;code&gt;jdbc:mysql://localhost:3306/sakila&lt;/code&gt;, en nuestro caso, de la lista que, supongo, ya habías configurado anteriormente como indiqué en los pasos previos de este tutorial.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/Hibernate3.2.5-Sakila.png&quot; width=&quot;500&quot; height=&quot;338&quot;&gt;Asistente de Nuevo proyecto de &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans&lt;/span&gt;, después de marcar la casilla que habilita &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; 3.2.5 abajo selecciona la base de datos Sakila instalada en localhost.&lt;/object&gt;&lt;br /&gt;&lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/Hibernate3.2.5-Sakila.png&quot;&gt;Terminar&lt;/q&gt;&lt;/p&gt;

&lt;p&gt;Fíjate que en:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong xml:lang=&quot;en&quot;&gt;DVDStore&lt;/strong&gt;
 &lt;ul&gt;&lt;li xml:lang=&quot;en&quot;&gt;Libraries&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;se agregaron automáticamente las librerías necesarias para utilizar &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; y conectar a la base de datos.&lt;/p&gt;




&lt;h3&gt;Configurar proyecto&lt;/h3&gt;

&lt;h4&gt;&lt;code&gt;hibernate.cfg.xml&lt;/code&gt;&lt;/h4&gt;


&lt;p&gt;Abre el archivo &lt;code&gt;hibernate.cfg.xml&lt;/code&gt; que está en la ruta:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong xml:lang=&quot;en&quot;&gt;DVDStore&lt;/strong&gt;
 &lt;ul&gt;&lt;li&gt;&lt;span xml:lang=&quot;en&quot;&gt;Source Packages&lt;/span&gt;
  &lt;ul&gt;&lt;li&gt;&amp;lt;paquete predeterminado&amp;gt;
   &lt;ul&gt;&lt;li&gt;&lt;code&gt;hibernate.cfg.xml&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;
  &lt;/li&gt;&lt;/ul&gt;
 &lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Una vez abierto en &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt;, en el modo Diseño, en la parte &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/hibernate.cfg.xml-design.png&quot;&gt;Propiedades opcionales&lt;/q&gt;, &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/hibernate.cfg.xml-design.png&quot;&gt;Propiedades de configuración&lt;/q&gt;, pon &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/hibernate.cfg.xml-design.png&quot;&gt;Agregar...&lt;/q&gt; y añade la propiedad:&lt;/p&gt;

&lt;blockquote cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/hibernate.cfg.xml-design.png&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Nombre de la propiedad:&lt;/th&gt;&lt;td&gt;&lt;code&gt;hibernate.show_sql&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Valor de la propiedad:&lt;/th&gt;&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/blockquote&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/hibernate.cfg.xml-design.png&quot; width=&quot;530&quot; height=&quot;353&quot;&gt;Com el asistente de diseño de &lt;abbr xml:lang=&quot;en&quot; title=&quot;eXtensible Markup Language&quot;&gt;XML&lt;/abbr&gt; de configuración en &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt; se puede seleccionar los valores en una lista desplegable sin tocar el código &lt;abbr xml:lang=&quot;en&quot; title=&quot;eXtensible Markup Language&quot;&gt;XML&lt;/abbr&gt;.&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Dentro de las mismas &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/hibernate.cfg.xml-design.png&quot;&gt;Propiedades opcionales&lt;/q&gt; del modo Diseño de &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt;, más abajo, en &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/hibernate.cfg.xml-design.png&quot;&gt;Propiedades varias&lt;/q&gt;, &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/hibernate.cfg.xml-design.png&quot;&gt;Agrega&lt;/q&gt; la propiedad:&lt;/p&gt;

&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Nombre de la propiedad:&lt;/th&gt;&lt;td&gt;&lt;code&gt;hibernate.current_session_context_class&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;Valor de la propiedad:&lt;/th&gt;&lt;td&gt;&lt;code&gt;thread&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;Después de esto, si ves el archivo &lt;code&gt;hibernate.cfg.xml&lt;/code&gt; en el modo Operador XML, quedaría un código más o menos así, pero con otras contraseñas, por supuesto:&lt;/p&gt;

&lt;blockquote cite=&quot;http://zh-cn.netbeans.org/kb/docs/web/hibernate-webapp.html&quot;&gt;&lt;pre&gt;&lt;code class=&quot;xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!DOCTYPE hibernate-configuration PUBLIC &quot;-//Hibernate/Hibernate Configuration DTD 3.0//EN&quot; &quot;http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd&quot;&amp;gt;
&amp;lt;hibernate-configuration&amp;gt;
  &amp;lt;session-factory&amp;gt;
    &amp;lt;property name=&quot;hibernate.dialect&quot;&amp;gt;org.hibernate.dialect.MySQLDialect&amp;lt;/property&amp;gt;
    &amp;lt;property name=&quot;hibernate.connection.driver_class&quot;&amp;gt;com.mysql.jdbc.Driver&amp;lt;/property&amp;gt;
    &amp;lt;property name=&quot;hibernate.connection.url&quot;&amp;gt;jdbc:mysql://localhost:3306/sakila&amp;lt;/property&amp;gt;
    &amp;lt;property name=&quot;hibernate.connection.username&quot;&amp;gt;root&amp;lt;/property&amp;gt;
    &amp;lt;property name=&quot;hibernate.connection.password&quot;&amp;gt;######&amp;lt;/property&amp;gt;
    &lt;strong&gt;&amp;lt;property name=&quot;hibernate.current_session_context_class&quot;&amp;gt;thread&amp;lt;/property&amp;gt;
    &amp;lt;property name=&quot;hibernate.show_sql&quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;/strong&gt;
  &amp;lt;/session-factory&amp;gt;
&amp;lt;/hibernate-configuration&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Guarda los cambios del archivo.&lt;/p&gt;



&lt;h4&gt;Asistente de ingeniería inversa de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt;&lt;/h4&gt;

&lt;p&gt;Agreguemos un nuevo archivo, y seleccionemos &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/nuevo-asistente-ing-inversa-hibernate.png&quot;&gt;Hibernar&lt;/q&gt; &amp;gt; &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/nuevo-asistente-ing-inversa-hibernate.png&quot;&gt;Asistente de ingeniería inversa de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt;&lt;/q&gt;&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/nuevo-asistente-ing-inversa-hibernate.png&quot; width=&quot;530&quot; height=&quot;324&quot;&gt;Asistente para la creación de nuevo archivo en &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt;. El primer paso es seleccionar la categoría Hibernar y luego, en la columna derecha, Asistente de ingeniería inversa de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;En el siguiente paso dejamos los valores por defecto (asegurándonos que pertenezca al proyecto &lt;code&gt;&lt;strong&gt;DVDStore&lt;/strong&gt;&lt;/code&gt;). Siguiente.&lt;/p&gt;

&lt;p&gt;Se cargarán automáticamente los nombres de las tablas de la base de datos Sakila (elegida cuando creamos el proyecto), y seleccionaremos las tablas:&lt;/p&gt;

&lt;blockquote cite=&quot;http://zh-cn.netbeans.org/kb/docs/web/hibernate-webapp.html&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;actor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;category&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;film&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;film_actor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;film_category&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;language&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/asistente-ing-inversa-hibernate.png&quot; width=&quot;500&quot; height=&quot;329&quot;&gt;Asistente de ingeniería inversa de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; tiene 2 columnas: Tablas disponibles (con las tablas en la base de datos) y Tablas seleccionadas (con las tablas que se utilizarán en el proyecto)&lt;/object&gt;&lt;br /&gt;Para pasar tablas de una columnas a la otra, existen los botones &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/asistente-ing-inversa-hibernate.png&quot;&gt;Agregar &amp;gt;&lt;/q&gt; y &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/asistente-ing-inversa-hibernate.png&quot;&gt;&amp;lt; Eliminar&lt;/q&gt;.&lt;/p&gt;

&lt;p&gt;Si marcas la casilla &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/asistente-ing-inversa-hibernate.png&quot;&gt;Incluir tablas relacionadas&lt;/q&gt; algunas otras tablas se incluirán automáticamente. Eso está bien.&lt;/p&gt;

&lt;p&gt;Al presionar &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/asistente-ing-inversa-hibernate.png&quot;&gt;Terminar&lt;/q&gt; se va a crear un archivo &lt;code&gt;hibernate.reveng.xml&lt;/code&gt; parecido a este:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!DOCTYPE hibernate-reverse-engineering PUBLIC &quot;-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN&quot; &quot;http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd&quot;&amp;gt;
&amp;lt;hibernate-reverse-engineering&amp;gt;
  &amp;lt;schema-selection match-catalog=&quot;sakila&quot;/&amp;gt;
  &amp;lt;table-filter match-name=&quot;film&quot;/&amp;gt;
  &amp;lt;table-filter match-name=&quot;language&quot;/&amp;gt;
  &amp;lt;table-filter match-name=&quot;category&quot;/&amp;gt;
  &amp;lt;table-filter match-name=&quot;actor&quot;/&amp;gt;
  &amp;lt;table-filter match-name=&quot;film_category&quot;/&amp;gt;
  &amp;lt;table-filter match-name=&quot;film_actor&quot;/&amp;gt;
&amp;lt;/hibernate-reverse-engineering&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;No lo edites, cíerralo.&lt;/p&gt;



&lt;h4&gt;Archivos de mapas de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; y &lt;abbr xml:lang=&quot;en&quot; title=&quot;Plain Old Java Object&quot;&gt;POJO&lt;/abbr&gt;s de la base de datos&lt;/h4&gt;

&lt;p&gt;Crea un &lt;q&gt;Archivo nuevo...&lt;/q&gt;. Categoría &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/NewPOJOs.png&quot;&gt;Hibernar&lt;/q&gt;, tipo &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/NewPOJOs.png&quot;&gt;Archivos de mapas de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; y POJOs de la base de datos&lt;/q&gt;.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/NewPOJOs.png&quot; width=&quot;530&quot; height=&quot;251&quot;&gt;Asistente para la creación de nuevo archivo en &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt;. El primer paso es seleccionar la categoría &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/NewPOJOs.png&quot;&gt;Hibernar&lt;/q&gt; y luego, en la columna derecha, &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/NewPOJOs.png&quot;&gt;Archivos de mapas de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; y &lt;abbr xml:lang=&quot;en&quot; title=&quot;Plain Old Java Object&quot;&gt;POJO&lt;/abbr&gt;s de la base de datos&lt;/q&gt;.&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Debes ponerle nombre a la clase donde estarán los mapas de Hibernate. Para que este tutorial funcione, ponle &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/NewPOJOs.png&quot;&gt;&lt;code&gt;dvdrental&lt;/code&gt;&lt;/q&gt;&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/dvdrental.png&quot; width=&quot;500&quot; height=&quot;379&quot;&gt;En el asistente de nuevo archivo de mapas de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; y &lt;abbr xml:lang=&quot;en&quot; title=&quot;Plain Old Java Object&quot;&gt;POJO&lt;/abbr&gt;s de la base de datos, en el paso de la Generación de código, debes seleccionar &lt;code&gt;hibernate.cfg.xml&lt;/code&gt; como archivo de configuración de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; e &lt;code&gt;hibernate.reveng.xml&lt;/code&gt; como archivo de ingeniería inversa.&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;...y presiona el botón &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/NewPOJOs.png&quot;&gt;Terminar&lt;/q&gt;. Se deberían generar los siguientes archivos:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;strong xml:lang=&quot;en&quot;&gt;DVDStore&lt;/strong&gt;
 &lt;ul&gt;&lt;li&gt;&lt;span xml:lang=&quot;en&quot;&gt;Source Packages&lt;/span&gt;
  &lt;ul&gt;&lt;li&gt;&lt;code&gt;dvdrental&lt;/code&gt;
   &lt;ul&gt;&lt;li&gt;&lt;code&gt;Actor.hbm.xml&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;Actor.java&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;Category.hbm.xml&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;Category.java&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;Film.hbm.xml&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;Film.java&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;FilmActor.hbm.xml&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;FilmActor.java&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;FilmActorId.java&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;FilmCategory.hbm.xml&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;FilmCategory.java&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;FilmCategoryId.java&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;Language.hbm.xml&lt;/code&gt;&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;Language.java&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;
  &lt;/li&gt;&lt;/ul&gt;
 &lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;


&lt;h4&gt;&lt;code&gt;HibernateUtil.java&lt;/code&gt;&lt;/h4&gt;

&lt;p&gt;Lo último sería crear un &lt;q&gt;Archivo Nuevo...&lt;/q&gt;, Categoría &lt;q&gt;Hibernar&lt;/q&gt;, Tipo &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/HibernateUtil.png&quot;&gt;&lt;code&gt;HibernateUtil.java&lt;/code&gt;&lt;/q&gt;.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/HibernateUtil.png&quot; width=&quot;500&quot; height=&quot;317&quot;&gt;Al crear el nuevo archivo &lt;code&gt;HibernateUtil.java&lt;/code&gt;, en el asistente de nuevo archivo de &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt;, por favor fijarse en cambiar el nombre del archivo propuesto &lt;code&gt;NewHibernateUtil&lt;/code&gt; por &lt;code&gt;HibernateUtil&lt;/code&gt; sin el &lt;code&gt;New&lt;/code&gt; y agregarlo al paquete &lt;code&gt;dvdrental&lt;/code&gt;&lt;/object&gt;&lt;br /&gt;&lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/HibernateUtil.png&quot;&gt;Terminar&lt;/q&gt;&lt;/p&gt;




&lt;h3&gt;Empecemos&lt;/h3&gt;

&lt;h4&gt;&lt;code&gt;FilmHelper.java&lt;/code&gt;&lt;/h4&gt;

&lt;p&gt;Crea una nueva Clase Java (&lt;q&gt;Archivo Nuevo...&lt;/q&gt;, Categoría &lt;q&gt;Java&lt;/q&gt;, tipo &lt;q&gt;Clase Java&lt;/q&gt;) y llámale &lt;code&gt;FilmHelper&lt;/code&gt; y ponlo dentro del paquete &lt;code&gt;dvdrental&lt;/code&gt;.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/NewFilmHelper.png&quot; width=&quot;500&quot; height=&quot;309&quot;&gt;Creación de una nueva clase Java llamada &lt;code&gt;FilmHelper&lt;/code&gt; en el paquete &lt;code&gt;dvdrental&lt;/code&gt; utilizando &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt; 6.8 para Mac OS X.&lt;/object&gt;&lt;br /&gt;&lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/NewFilmHelper.png&quot;&gt;Terminar&lt;/q&gt;&lt;/p&gt;

&lt;p&gt;Agrega el siguiente código (en negrita) para crear una sesión de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;java&quot;&gt;package dvdrental;

public class FilmHelper {

&lt;strong&gt; Session session = null;

 public FilmHelper() {
  this.session = HibernateUtil.getSessionFactory().getCurrentSession();
 }&lt;/strong&gt;

}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Van a aparecer unos errores que se arreglan usando el menú contextual (botón secundario del ratón) y eligiendo la opción &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/fix-import1.png&quot;&gt;Reparar importaciones&lt;/q&gt;.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/fix-import1.png&quot; width=&quot;352&quot; height=&quot;253&quot;&gt;Menú contextual aparece cuando uno hace &lt;span xml:lang=&quot;en&quot;&gt;click&lt;/span&gt; sobre el código fuente.&lt;/object&gt;&lt;br /&gt;La opción &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/fix-import1.png&quot;&gt;Reparar importaciones&lt;/q&gt; en inglés se llama &lt;span xml:lang=&quot;en&quot;&gt;Fix import&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Si dejamos el valor por defecto, quedaría el código de &lt;code&gt;FilmHelper.java&lt;/code&gt; de la siguiente manera:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;java&quot;&gt;package dvdrental;

&lt;strong&gt;import org.hibernate.Session;&lt;/strong&gt;

public class FilmHelper {

 Session session = null;

 public FilmHelper() {
  this.session = HibernateUtil.getSessionFactory().getCurrentSession();
 }
 
}
&lt;/code&gt;&lt;/pre&gt;


&lt;h4&gt;Consultas &lt;abbr xml:lang=&quot;en&quot; title=&quot;Hibernate Query Language&quot;&gt;HQL&lt;/abbr&gt;&lt;/h4&gt;

&lt;p&gt;Probemos algo. Haz &lt;span xml:lang=&quot;en&quot;&gt;click&lt;/span&gt; con el botón secundario sobre el archivo &lt;span xml:lang=&quot;en&quot;&gt;Source Packages&lt;/span&gt;/&amp;lt;paquete predeterminado&amp;gt;/&lt;code&gt;hibernate.cfg.xml&lt;/code&gt; y selecciona la opción &lt;q&gt;Ejecutar la consulta &lt;abbr xml:lang=&quot;en&quot; title=&quot;Hibernate Query Language&quot;&gt;HQL&lt;/abbr&gt;&lt;/q&gt; del menú contextual.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/contextual-HQL.png&quot; width=&quot;379&quot; height=&quot;145&quot;&gt;Opción Ejecutar la consulta &lt;abbr xml:lang=&quot;en&quot; title=&quot;Hibernate Query Language&quot;&gt;HQL&lt;/abbr&gt; aparece en el menú contextual sólo cuando se hace &lt;span xml:lang=&quot;en&quot;&gt;click&lt;/span&gt; sobre el archivo &lt;code&gt;hibernate.cfg.xml&lt;/code&gt;.&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;En la barra de herramientas del editor de consultas &lt;abbr xml:lang=&quot;en&quot; title=&quot;Hibernate Query Language&quot;&gt;HQL&lt;/abbr&gt;, selecciona la Sesión: &lt;code&gt;hibernate.cfg&lt;/code&gt; y escribe lo siguiente en la primera caja de texto grande:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;from Film&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Y presiona el botón que está al lado de la lista desplegable que debería estar mostrando &lt;code&gt;hibernate.cfg&lt;/code&gt; como opción seleccionada para hacer la consulta y obtener un resultado como el siguiente.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/fromFilm.png&quot; width=&quot;530&quot; height=&quot;331&quot;&gt;El Editor de consultas &lt;abbr xml:lang=&quot;en&quot; title=&quot;Hibernate Query Language&quot;&gt;HQL&lt;/abbr&gt; de &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt; tiene dos partes: arriba para escribir la consultas y abajo para mostrar los resultados o equivalente &lt;abbr xml:lang=&quot;en&quot; title=&quot;Structured Query Language&quot;&gt;SQL&lt;/abbr&gt;.&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Ahora prueba con una consulta un poquito más complicada:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;from Film as film where film.filmId between 100 and 200&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Con las consultas probadas, obteniendo los resultados esperados, podemos utilizarlas en la clase &lt;code&gt;helper&lt;/code&gt;.&lt;/p&gt;


&lt;h3&gt;Hibernate&lt;/h3&gt;

&lt;p&gt;Edita el archivo &lt;code&gt;FilmHelper.java&lt;/code&gt; y agrégale el siguiente método (marcado con negrita):&lt;/p&gt;

&lt;blockquote cite=&quot;http://kenai.com/projects/netbeans-samples/sources/samples/content/Samples/Web/DVDStore/src/java/dvdrental/FilmHelper.java?rev=83&quot;&gt;&lt;pre&gt;&lt;code class=&quot;java&quot;&gt;package dvdrental;

import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;

public class FilmHelper {

 Session session = null;

 public FilmHelper() {
  this.session = HibernateUtil.getSessionFactory().getCurrentSession();
 }
 
 &lt;strong&gt; // Obtiene los films donde el id de film está entre un cierto rango especificado por las variables startID y endID

 public List getFilmTitles(int startID, int endID) {
  List&amp;lt;Film&amp;gt; filmList = null;
  try {
   org.hibernate.Transaction tx = session.beginTransaction();
   Query q = session.createQuery(&quot;from Film as film where film.filmId between &#39;&quot; + startID + &quot;&#39; and &#39;&quot; + endID + &quot;&#39;&quot;);
   filmList = (List&amp;lt;Film&amp;gt;) q.list();
  } catch (Exception e) {
   e.printStackTrace();
  }
  return filmList;
 }&lt;/strong&gt;
 
}
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Repara las importaciones (&lt;span xml:lang=&quot;en&quot;&gt;Fix Import&lt;/span&gt;) si es necesario, utilizando las clases de &lt;span xml:lang=&quot;en&quot;&gt;hibernate&lt;/span&gt;.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/hibernate-sakila-jspx/org.hibernate.query.png&quot; width=&quot;500&quot; height=&quot;251&quot;&gt;Asistente para reparar importaciones en el código &lt;span xml:lang=&quot;en&quot;&gt;Java&lt;/span&gt; de &lt;span xml:lang=&quot;en-us&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt;. Instrucciones &lt;span xml:lang=&quot;en&quot;&gt;Import&lt;/span&gt;: &lt;span xml:lang=&quot;en&quot;&gt;Query&lt;/span&gt; &lt;code&gt;org.hibernate.Query&lt;/code&gt; y &lt;span xml:lang=&quot;en&quot;&gt;List&lt;/span&gt; &lt;code&gt;java.util.List&lt;/code&gt;.&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;para que quede completamente igual como está en el código de ejemplo anterior.&lt;/p&gt;

&lt;p&gt;Vuelve a abrir el Editor de Consultas &lt;abbr xml:lang=&quot;en&quot; title=&quot;Hibernate Query Language&quot;&gt;HQL&lt;/abbr&gt; y haz la siguiente &lt;span xml:lang=&quot;en&quot;&gt;query&lt;/span&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;from Actor as actor where actor.actorId in (select filmActor.actor.actorId from FilmActor as filmActor where filmActor.film.filmId=&#39;10&#39;)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Esta consulta obtiene los actores de la película del &lt;code&gt;filmid = 10&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Ahora súmale el siguiente método (marcado con negrita) al archivo &lt;code&gt;FilmHelper.java&lt;/code&gt;:&lt;/p&gt;

&lt;blockquote cite=&quot;http://kenai.com/projects/netbeans-samples/sources/samples/content/Samples/Web/DVDStore/src/java/dvdrental/FilmHelper.java?rev=83&quot;&gt;&lt;pre&gt;&lt;code class=&quot;java&quot;&gt;package dvdrental;

import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;

public class FilmHelper {

 Session session = null;

 public FilmHelper() {
  this.session = HibernateUtil.getSessionFactory().getCurrentSession();
 }

  // Obtiene los films donde el id de film está entre un cierto rango especificado por las variables startID y endID

 public List getFilmTitles(int startID, int endID) {
  List&amp;lt;Film&amp;gt; filmList = null;
  try {
   org.hibernate.Transaction tx = session.beginTransaction();
   Query q = session.createQuery(&quot;from Film as film where film.filmId between &#39;&quot; + startID + &quot;&#39; and &#39;&quot; + endID + &quot;&#39;&quot;);
   filmList = (List&amp;lt;Film&amp;gt;) q.list();
  } catch (Exception e) {
   e.printStackTrace();
  }
  return filmList;
 }

&lt;strong&gt; // Obtiene los actores en un film particular
 public List getActorsByID(int filmId) {
  List&amp;lt;Actor&amp;gt; actorList = null;
  try {
   org.hibernate.Transaction tx = session.beginTransaction();
   Query q = session.createQuery(&quot;from Actor as actor where actor.actorId in (select filmActor.actor.actorId from FilmActor as filmActor where filmActor.film.filmId=&#39;&quot; + filmId + &quot;&#39;)&quot;);
   actorList = (List&amp;lt;Actor&amp;gt;) q.list();

  } catch (Exception e) {
   e.printStackTrace();
  }

  return actorList;
 }&lt;/strong&gt;

}
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p&gt;Repara las importaciones si es necesario. Guarda.&lt;/p&gt;

&lt;p&gt;Ahora agrega 3 métodos más y algunos métodos que inventé para hacer uso de &lt;code&gt;beans&lt;/code&gt; en el código &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Server Pages XML&quot;&gt;JSPX&lt;/abbr&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;java&quot;&gt;
package dvdrental;

import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;

public class FilmHelper {

 Session session = null;

 public FilmHelper() {
  this.session = HibernateUtil.getSessionFactory().getCurrentSession();
 }

 // Obtiene los films donde el id de film está entre un cierto rango especificado por las variables startID y endID
 public List getFilmTitles(int startID, int endID) {
  List&amp;lt;Film&amp;gt; filmList = null;
  try {
   org.hibernate.Transaction tx = session.beginTransaction();
   Query q = session.createQuery(&quot;from Film as film where film.filmId between &#39;&quot; + startID + &quot;&#39; and &#39;&quot; + endID + &quot;&#39;&quot;);
   filmList = (List&amp;lt;Film&amp;gt;) q.list();
  } catch (Exception e) {
   e.printStackTrace();
  }
  return filmList;
 }

 // Obtiene los actores en un film particular
 public List getActorsByID(int filmId) {
  List&amp;lt;Actor&amp;gt; actorList = null;
  try {
   org.hibernate.Transaction tx = session.beginTransaction();
   Query q = session.createQuery(&quot;from Actor as actor where actor.actorId in (select filmActor.actor.actorId from FilmActor as filmActor where filmActor.film.filmId=&#39;&quot; + filmId + &quot;&#39;)&quot;);
   actorList = (List&amp;lt;Actor&amp;gt;) q.list();

  } catch (Exception e) {
   e.printStackTrace();
  }

  return actorList;
 }

&lt;strong&gt; // Obtiene una lista de categorías de acuerdo al filmId
 public Category getCategoryByID(int filmId) {
  List&amp;lt;Category&amp;gt; categoryList = null;
  try {
   org.hibernate.Transaction tx = session.beginTransaction();
   Query q = session.createQuery(&quot;from Category as category where category.categoryId in (select filmCat.category.categoryId from FilmCategory as filmCat where filmCat.film.filmId=&#39;&quot; + filmId + &quot;&#39;)&quot;);
   categoryList = (List&amp;lt;Category&amp;gt;) q.list();

  } catch (Exception e) {
   e.printStackTrace();
  }

  return categoryList.get(0);
 }

 // Obtiene un solo film de acuerdo al filmId
 public Film getFilmByID(int filmId) {

  Film film = null;

  try {
   org.hibernate.Transaction tx = session.beginTransaction();
   Query q = session.createQuery(&quot;from Film as film where film.filmId=&quot; + filmId);
   film = (Film) q.uniqueResult();
  } catch (Exception e) {
   e.printStackTrace();
  }

  return film;
 }


 // Obtiene el idioma del film de acuerdo a un langId
 public String getLangByID(int langId) {

  Language language = null;

  try{
   org.hibernate.Transaction tx = session.beginTransaction();
   Query q = session.createQuery(&quot;from Language as lang where lang.languageId=&quot; + langId);
   language = (Language) q.uniqueResult();
  } catch (Exception e) {
   e.printStackTrace();
  }

  return language.getName();
 }&lt;/strong&gt;



 &lt;strong title=&quot;inventos míos que servirán más adelante&quot;&gt;&lt;em&gt;//Métodos para no poner código java en el JSPX
 int startId;
 int endId;

 int filmId;
 int langId;

 public void setAttributeStartID(int startId){
  this.startId = startId;
 }
 public void setAttributeEndID(int endId){
  this.endId = endId;
 }
 public List getFilmTitlesList(){
  return getFilmTitles(startId,endId);
 }
 public void setAttributeFilmByID(int filmId){
  this.filmId = filmId;
 }
 public List getActorsID() {
  return getActorsByID(filmId);
 }
 public Category getCategoryID() {
  return getCategoryByID(filmId);
 }
 public Film getFilmID() {
  return getFilmByID(filmId);
 }
 public void setAttributeLangByID(int langId){
  this.langId = langId;
 }
 public String getLangID() {
  return getLangByID(langId);
 }&lt;/em&gt;&lt;/strong&gt;

}

&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;&lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Server Pages&quot;&gt;JSP&lt;/abbr&gt;(&lt;abbr title=&quot;XML&quot;&gt;X&lt;/abbr&gt;)&lt;/h3&gt;

&lt;p&gt;Hurra. Por fin llegamos a las páginas web. A mi me gusta escribir las &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Server Pages&quot;&gt;JSP&lt;/abbr&gt; con &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Standard Tag Libraries&quot;&gt;JSTL&lt;/abbr&gt; así que antes de seguir deberás...&lt;/p&gt;

&lt;h4&gt;Instalar la librería &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Standard Tag Library&quot;&gt;JSTL&lt;/abbr&gt;&lt;/h4&gt;

&lt;ol&gt;&lt;li&gt;&lt;p&gt;Entra a las propiedades del proyecto (botón secundario del ratón sobre &lt;code&gt;&lt;strong&gt;DVDStore&lt;/strong&gt;&lt;/code&gt;, opción Propiedades).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;En la sección &lt;q xml:lang=&quot;en&quot;&gt;Libraries&lt;/q&gt; hay un botón &lt;q xml:lang=&quot;en&quot;&gt;Add Library...&lt;/q&gt;. Presiónalo.&lt;/li&gt;
&lt;li&gt;Si no te aparece inmediatamente, Importa la librería (o biblioteca también le llaman) &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Standard Tag Libraries&quot;&gt;JSTL&lt;/abbr&gt; 1.1 o superior.&lt;/li&gt;
&lt;li&gt;Selecciona la librería &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Standard Tag Library&quot;&gt;JSTL&lt;/abbr&gt; y añádela al proyecto.&lt;/li&gt;
&lt;li&gt;&lt;q&gt;Aceptar&lt;/q&gt;&lt;/li&gt;&lt;/ol&gt;



&lt;h4&gt;Nuevo archivo &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Server Pages XML&quot;&gt;JSPX&lt;/abbr&gt;&lt;/h4&gt;

&lt;p&gt;Primero elimina el archivo &lt;code&gt;index.jsp&lt;/code&gt; del proyecto que está en la carpeta &lt;code&gt;&lt;strong&gt;DVDStore&lt;/strong&gt;/Web Pages/&lt;/code&gt; del proyecto.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/01/indexjspx-en-netbeans.php&quot;&gt;Agrega un nuevo archivo &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Server Pages XML&quot;&gt;JSPX&lt;/abbr&gt; y cambia la página por defecto&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;En el archivo &lt;code&gt;index.jspx&lt;/code&gt; escribe lo siguiente.&lt;/p&gt;

&lt;h5&gt;&lt;code&gt;index.jspx&lt;/code&gt;&lt;/h5&gt;

&lt;pre&gt;&lt;code class=&quot;jspx&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&amp;lt;!-- 
    Document   : index
    Created on : 01-dic-2009, 21:43:16
    Author     : ooscarr
--&gt;
&amp;lt;jsp:root xmlns:jsp=&quot;http://java.sun.com/JSP/Page&quot; version=&quot;2.0&quot;
     xmlns:c=&quot;http://java.sun.com/jsp/jstl/core&quot;
     xmlns:fn=&quot;http://java.sun.com/jsp/jstl/functions&quot;&gt;

 &amp;lt;jsp:output
  omit-xml-declaration=&quot;no&quot;
  doctype-public=&quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
  doctype-system=&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;
  doctype-root-element=&quot;html&quot;/&gt;

 &amp;lt;jsp:directive.page import=&quot;dvdrental.*&quot;/&gt;
 &amp;lt;jsp:directive.page import=&quot;java.util.List&quot;/&gt;

 &amp;lt;jsp:directive.page contentType=&quot;text/html&quot; pageEncoding=&quot;UTF-8&quot;/&gt;

 &amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
  &amp;lt;head&gt;
   &amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;/&gt;
   &amp;lt;title&gt;DVDStore&amp;lt;/title&gt;
  &amp;lt;/head&gt;
  &amp;lt;body&gt;


   &amp;lt;c:set var=&quot;startID&quot; value=&quot;1&quot;/&gt;
   &amp;lt;c:set var=&quot;endID&quot; value=&quot;10&quot;/&gt;
   &amp;lt;c:set var=&quot;prev_startID&quot; value=&quot;1&quot;/&gt;
   &amp;lt;c:set var=&quot;prev_endID&quot; value=&quot;10&quot;/&gt;
   
   &amp;lt;c:set var=&quot;FILM_RECORD_COUNT&quot; value=&quot;1000&quot;/&gt;
   
   &amp;lt;c:set var=&quot;RECORD_START_PAGE&quot; value=&quot;false&quot;/&gt;
   &amp;lt;c:set var=&quot;RECORD_END_PAGE&quot; value=&quot;false&quot;/&gt;


   &amp;lt;c:if test=&quot;${not empty param.startid}&quot;&gt;
    &amp;lt;c:set var=&quot;startID&quot; value=&quot;${param.startid}&quot;/&gt;
   &amp;lt;/c:if&gt;
   &amp;lt;c:if test=&quot;${not empty param.endid}&quot;&gt;
    &amp;lt;c:set var=&quot;endID&quot; value=&quot;${param.endid}&quot;/&gt;
   &amp;lt;/c:if&gt;

   &amp;lt;jsp:useBean id=&quot;helper&quot; class=&quot;dvdrental.FilmHelper&quot;/&gt;
   &amp;lt;!-- Invento para pasar filmID a FilmHelper.java --&gt;
   &amp;lt;c:set target=&quot;${helper}&quot; property=&quot;attributeStartID&quot; value=&quot;${startID}&quot;/&gt;
   &amp;lt;c:set target=&quot;${helper}&quot; property=&quot;attributeEndID&quot; value=&quot;${endID}&quot;/&gt;
   &amp;lt;c:set var=&quot;filmTitles&quot; value=&quot;${helper.filmTitlesList}&quot;/&gt;

   &amp;lt;c:if test=&quot;${startID == 1}&quot;&gt;
    &amp;lt;c:set var=&quot;RECORD_START_PAGE&quot; value=&quot;true&quot;/&gt;
   &amp;lt;/c:if&gt;
   &amp;lt;c:if test=&quot;${endID == FILM_RECORD_COUNT}&quot;&gt;
    &amp;lt;c:set var=&quot;RECORD_END_PAGE&quot; value=&quot;true&quot;/&gt;
   &amp;lt;/c:if&gt;

   &amp;lt;c:set var=&quot;prev_startID&quot; value=&quot;${startID-10}&quot;/&gt;
   &amp;lt;c:set var=&quot;prev_endID&quot; value=&quot;${endID-10}&quot;/&gt;

   &amp;lt;c:set var=&quot;startID&quot; value=&quot;${endID+1}&quot;/&gt;
   &amp;lt;c:set var=&quot;endID&quot; value=&quot;${endID+10}&quot;/&gt;

   &amp;lt;c:set var=&quot;filmTitlesSize&quot; value=&quot;${fn:length(filmTitles)}&quot;/&gt;


   &amp;lt;table&gt;
    &amp;lt;thead&gt;

     &amp;lt;c:choose&gt;
      &amp;lt;c:when test=&quot;${RECORD_START_PAGE}&quot;&gt;
       &amp;lt;tr&gt;
        &amp;lt;td class=&quot;NEXT&quot;&gt; &amp;lt;/td&gt;
        &amp;lt;td class=&quot;NEXT&quot;&gt; &amp;lt;/td&gt;
        &amp;lt;td class=&quot;NEXT&quot;&gt; &amp;lt;/td&gt;
        &amp;lt;td class=&quot;NEXT&quot;&gt;
         &amp;lt;a class=&quot;NEXT&quot; href=&quot;index.jspx?startid=${startID}&amp;amp;amp;endid=${endID}&quot;&gt;Next&amp;lt;/a&gt;&amp;lt;/td&gt;
       &amp;lt;/tr&gt;
      &amp;lt;/c:when&gt;
      &amp;lt;c:when test=&quot;${RECORD_END_PAGE}&quot;&gt;
       &amp;lt;tr&gt;
        &amp;lt;td class=&quot;NEXT&quot;&gt; &amp;lt;/td&gt;
        &amp;lt;td class=&quot;NEXT&quot;&gt; &amp;lt;/td&gt;
        &amp;lt;td class=&quot;NEXT&quot;&gt;
         &amp;lt;a class=&quot;NEXT&quot; href=&quot;index.jspx?startid=${prev_startID}&amp;amp;amp;endid=${prev_endID}&quot;&gt;Prev&amp;lt;/a&gt;&amp;lt;/td&gt;
        &amp;lt;td class=&quot;NEXT&quot;&gt; &amp;lt;/td&gt;
       &amp;lt;/tr&gt;
      &amp;lt;/c:when&gt;
      &amp;lt;c:otherwise&gt;
       &amp;lt;tr&gt;
        &amp;lt;td class=&quot;NEXT&quot;&gt; &amp;lt;/td&gt;
        &amp;lt;td class=&quot;NEXT&quot;&gt; &amp;lt;/td&gt;
        &amp;lt;td class=&quot;NEXT&quot;&gt;
         &amp;lt;a class=&quot;NEXT&quot; href=&quot;index.jspx?startid=${prev_startID}&amp;amp;amp;endid=${prev_endID}&quot;&gt;Prev&amp;lt;/a&gt;&amp;lt;/td&gt;
        &amp;lt;td class=&quot;NEXT&quot;&gt;
         &amp;lt;a class=&quot;NEXT&quot; href=&quot;index.jspx?startid=${startID}&amp;amp;amp;endid=${endID}&quot;&gt;Next&amp;lt;/a&gt;
        &amp;lt;/td&gt;
       &amp;lt;/tr&gt;
      &amp;lt;/c:otherwise&gt;
     &amp;lt;/c:choose&gt;


     &amp;lt;tr&gt;&amp;lt;th&gt;Title&amp;lt;/th&gt;&amp;lt;th&gt;Description&amp;lt;/th&gt;&amp;lt;th&gt; &amp;lt;/th&gt;&amp;lt;th&gt; &amp;lt;/th&gt;&amp;lt;/tr&gt;
    &amp;lt;/thead&gt;
    &amp;lt;tbody&gt;

     &amp;lt;c:forEach items=&quot;${filmTitles}&quot; var=&quot;i&quot;&gt;
      &amp;lt;c:set var=&quot;film&quot; value=&quot;${i}&quot;/&gt;
      &amp;lt;c:set var=&quot;filmID&quot; value=&quot;${film.filmId}&quot;/&gt;
      &amp;lt;tr&gt;
       &amp;lt;td class=&quot;COL1&quot;&gt;
        &amp;lt;a href=&quot;browse.jspx?id=${filmID}&quot;&gt;${film.title}&amp;lt;/a&gt;
       &amp;lt;/td&gt;
       &amp;lt;td class=&quot;COL2&quot;&gt;${film.description}&amp;lt;/td&gt;
       &amp;lt;td class=&quot;COL2&quot;&gt;
        &amp;lt;a href=&quot;browse.jspx?id=${filmID}&quot;&gt;More&amp;lt;/a&gt;
       &amp;lt;/td&gt;
       &amp;lt;td class=&quot;COL2&quot;&gt;
        &amp;lt;a href=&quot;rent.jsp?id=${filmID}&quot;&gt;Rent&amp;lt;/a&gt;
       &amp;lt;/td&gt;
      &amp;lt;/tr&gt;
     &amp;lt;/c:forEach&gt;

    &amp;lt;/tbody&gt;
   &amp;lt;/table&gt;

  &amp;lt;/body&gt;
 &amp;lt;/html&gt;
&amp;lt;/jsp:root&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ya lo puedes hacer correr si quieres probarlo.&lt;/p&gt;

&lt;p&gt;Si no te gusta escribir las &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Server Pages&quot;&gt;JSP&lt;/abbr&gt; con &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Standard Tag Libraries&quot;&gt;JSTL&lt;/abbr&gt;, puedes revisar &lt;a href=&quot;http://kenai.com/projects/netbeans-samples/sources/samples/show/Samples/Web/DVDStore?rev=83&quot; rel=&quot;external nofollow&quot;&gt;el código oficial donde está lo mismo pero en clave &lt;span xml:lang=&quot;en&quot;&gt;Java&lt;/span&gt; clásico&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;&lt;code&gt;browse.jspx&lt;/code&gt;&lt;/h4&gt;
&lt;p&gt;Crea otro archivo &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Server Pages&quot;&gt;JSP&lt;/abbr&gt; con sintaxis &lt;abbr xml:lang=&quot;en&quot; title=&quot;eXtensible Markup Language&quot;&gt;XML&lt;/abbr&gt; que se llame &lt;code&gt;browse&lt;/code&gt; con el siguiente código:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;jspx&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&amp;lt;!-- 
    Document   : browse
    Created on : 29-nov-2009, 19:47:16
    Author     : ooscarr
--&gt;
&amp;lt;jsp:root xmlns:jsp=&quot;http://java.sun.com/JSP/Page&quot; version=&quot;2.0&quot;
     xmlns:c=&quot;http://java.sun.com/jsp/jstl/core&quot;&gt;

 &amp;lt;jsp:output
  omit-xml-declaration=&quot;no&quot;
  doctype-public=&quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
  doctype-system=&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;
  doctype-root-element=&quot;html&quot;/&gt;

 &amp;lt;jsp:directive.page import=&quot;dvdrental.*&quot;/&gt;
 &amp;lt;jsp:directive.page import=&quot;java.util.List&quot;/&gt;

 &amp;lt;jsp:directive.page contentType=&quot;text/html&quot; pageEncoding=&quot;UTF-8&quot;/&gt;

 &amp;lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
  &amp;lt;head&gt;
   &amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;/&gt;
   &amp;lt;title&gt;DVDStore browse&amp;lt;/title&gt;
  &amp;lt;/head&gt;
  &amp;lt;body&gt;
   
   &amp;lt;!-- Get title ID --&gt;
   &amp;lt;c:set var=&quot;filmID&quot; value=&quot;1&quot;/&gt;
   &amp;lt;c:if test=&quot;${not empty param.id}&quot;&gt;
    &amp;lt;c:set var=&quot;filmID&quot; value=&quot;${param.id}&quot;/&gt;
   &amp;lt;/c:if&gt;

   &amp;lt;c:set var=&quot;startPage&quot;&gt;false&amp;lt;/c:set&gt;
   &amp;lt;c:set var=&quot;endPage&quot;&gt;false&amp;lt;/c:set&gt;

   &amp;lt;jsp:useBean id=&quot;helper&quot; class=&quot;dvdrental.FilmHelper&quot;/&gt;

   &amp;lt;!-- Invento para pasar filmID a FilmHelper.java --&gt;
   &amp;lt;c:set target=&quot;${helper}&quot; property=&quot;attributeFilmByID&quot; value=&quot;${filmID}&quot;/&gt;

   &amp;lt;jsp:useBean id=&quot;film&quot; class=&quot;dvdrental.Film&quot;/&gt;
   &amp;lt;c:set var=&quot;film&quot; value=&quot;${helper.filmID}&quot;/&gt;

   &amp;lt;c:set var=&quot;filmTitle&quot; value=&quot;${film.title}&quot;/&gt;
   &amp;lt;c:set var=&quot;filmDescription&quot; value=&quot;${film.description}&quot;/&gt;

   &amp;lt;!-- Get Actors --&gt;
   &amp;lt;c:set var=&quot;actors&quot; value=&quot;${helper.actorsID}&quot;/&gt;

   &amp;lt;!-- Get Category --&gt;
   &amp;lt;c:set var=&quot;category&quot; value=&quot;${helper.categoryID}&quot;/&gt;

   &amp;lt;c:set var=&quot;totalCast&quot;&gt;
    &amp;lt;c:forEach items=&quot;${actors}&quot; var=&quot;i&quot;&gt;${i.firstName} ${i.lastName}, &amp;lt;/c:forEach&gt;
   &amp;lt;/c:set&gt;

   &amp;lt;!-- Invento para pasar langId a FilmHelper.java --&gt;
   &amp;lt;c:set target=&quot;${helper}&quot; property=&quot;attributeLangByID&quot; value=&quot;${film.languageByLanguageId.languageId}&quot;/&gt;
   &amp;lt;!-- Obtiene el idioma usando el langId entregado anteriormente --&gt;
   &amp;lt;c:set var=&quot;language&quot; value=&quot;${helper.langID}&quot;/&gt;
   
   &amp;lt;c:set var=&quot;filmLength&quot; value=&quot;${film.length}&quot;/&gt;
   &amp;lt;c:set var=&quot;filmRating&quot; value=&quot;${film.rating}&quot;/&gt;
   &amp;lt;c:set var=&quot;filmYear&quot; value=&quot;${film.releaseYear}&quot;/&gt;
   
   &amp;lt;c:set var=&quot;rentalDuration&quot; value=&quot;${film.rentalDuration}&quot;/&gt;
   &amp;lt;c:set var=&quot;rentalRate&quot; value=&quot;${film.rentalRate}&quot;/&gt;

   &amp;lt;c:set var=&quot;specialFeatures&quot; value=&quot;${film.specialFeatures}&quot;/&gt;


   &amp;lt;table&gt;
    &amp;lt;tr&gt;
     &amp;lt;td class=&quot;RENT&quot;&gt; &amp;lt;/td&gt;
     &amp;lt;td class=&quot;RENT&quot;&gt;
      &amp;lt;a class=&quot;RENT&quot; href=&quot;browse.jspx?id=${filmID}&quot;&gt;Arrendar&amp;lt;/a&gt;
     &amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;th class=&quot;TITLE&quot;&gt;Título&amp;lt;/th&gt;
     &amp;lt;td class=&quot;TITLE&quot;&gt;${filmTitle}&amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;th class=&quot;COL1&quot;&gt;Descripción&amp;lt;/th&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt;${filmDescription}&amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;td class=&quot;COL1&quot;&gt; &amp;lt;/td&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt; &amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;th class=&quot;COL1&quot;&gt;Género&amp;lt;/th&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt;${catName}&amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;td class=&quot;COL1&quot;&gt; &amp;lt;/td&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt; &amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;th class=&quot;COL1&quot;&gt;Reparto&amp;lt;/th&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt;${totalCast}&amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;td class=&quot;COL1&quot;&gt; &amp;lt;/td&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt; &amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;th class=&quot;COL1&quot;&gt;Duración de la película&amp;lt;/th&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt;${filmLength} &amp;lt;abbr title=&quot;minutos&quot;&gt;mins.&amp;lt;/abbr&gt;&amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;th class=&quot;COL1&quot;&gt;Idioma&amp;lt;/th&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt;${language}&amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;th class=&quot;COL1&quot;&gt;Calificación cinematográfica&amp;lt;/th&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt;${filmRating}&amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;th class=&quot;COL1&quot;&gt;Año&amp;lt;/th&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt;${filmYear}&amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;td class=&quot;COL1&quot;&gt; &amp;lt;/td&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt; &amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;th class=&quot;COL1&quot;&gt;Características especiales&amp;lt;/th&gt;
     &amp;lt;td class=&quot;SPECIAL&quot;&gt;${specialFeatures}&amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;td class=&quot;COL1&quot;&gt; &amp;lt;/td&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt; &amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;th class=&quot;COL1&quot;&gt;Precio Arriendo&amp;lt;/th&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt;US$ ${rentalRate}&amp;lt;/td&gt;
    &amp;lt;/tr&gt;
    &amp;lt;tr&gt;
     &amp;lt;th class=&quot;COL1&quot;&gt;Duración de Arriendo&amp;lt;/th&gt;
     &amp;lt;td class=&quot;COL2&quot;&gt;${rentalDuration} días&amp;lt;/td&gt;
    &amp;lt;/tr&gt;
   &amp;lt;/table&gt;

   &amp;lt;/body&gt;
 &amp;lt;/html&gt;
&amp;lt;/jsp:root&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ejecuta la aplicación en el servidor, visita la página (en mi máquina se está ejecutando en &lt;a href=&quot;http://localhost:8084/DVDStore/&quot; rel=&quot;external nofollow&quot;&gt;http://localhost:8084/DVDStore/&lt;/a&gt;) y &lt;span xml:lang=&quot;fr&quot;&gt;Voilà!&lt;/span&gt;. Funciona o te equivocaste.&lt;/p&gt;

&lt;h3&gt;Conclusiones&lt;/h3&gt;

&lt;p&gt;A pesar de que este ejemplo sólo hace lecturas a la base de datos, me puedo imaginar que escribir debe ser igual de sencillo ya que autmáticamente se generan la clases &lt;code&gt;bean&lt;/code&gt; para insertar valores (&lt;code&gt;set&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Con la persistencia ya no me tengo que preocupar de hacer la conexión y desconexión en cada página, la contraseña está guardada de manera más segura y estandarizada, y el acceso a las tablas se hace sencillo manejándolas como clases (un editor de &lt;span xml:lang=&quot;en&quot;&gt;Java&lt;/span&gt; ayuda a completar el código) y no andan &lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/09/conectar-la-base-de-datos-desde-jsp.php&quot;&gt;las consultas &lt;abbr xml:lang=&quot;en&quot; title=&quot;Structured Query Language&quot;&gt;SQL&lt;/abbr&gt; dando vueltas por todo el código&lt;/a&gt;, lo que ofrece mayor abstracción entre los distintos niveles del código otorgando flexibilidad a cambios.&lt;/p&gt;

&lt;p&gt;Si se me ocurre cambiar la base de datos (agregar una columna, modificar el nombre de una tabla o las relaciones y tipos de datos), habría que regenerar los mapas de &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; y volver a compilar todo.&lt;/p&gt;

&lt;p&gt;También, si nos fijamos en todo lo que hay que saber sobre programación &lt;span xml:lang=&quot;en&quot;&gt;Java&lt;/span&gt;, se hace más difícil la programación, aunque supongo y reconozco que con el tiempo se debe volver más sencillo con la experiencia. Obvio.&lt;/p&gt;

&lt;p&gt;Mejoras en el rendimiento... No sé. Supongo que al tener todas las consultas guardadas... Y con &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; preocupado de las conexiones y desconexiones... Me imagino que sí hay alguna mejora, lo desconozco.&lt;/p&gt;

&lt;!--&lt;p&gt;&lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; es parte del pasado, para la época de &lt;span xml:lang=&quot;en&quot;&gt;Tomcat&lt;/span&gt;; ahora lo que se usa es la &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Persistency API&quot;&gt;JPA&lt;/abbr&gt; que ya está en la versión &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Persistency API&quot;&gt;JPA&lt;/abbr&gt; 2.0. Pero &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; no se queda atrás y creó interfaces con las &lt;span xml:lang=&quot;en&quot;&gt;Hibernate Annotations&lt;/span&gt; y módulos &lt;span xml:lang=&quot;en&quot;&gt;Hibernate EntityManager&lt;/span&gt;, que funcionan por sobre el &lt;span xml:lang=&quot;en&quot;&gt;Hibernate Core&lt;/span&gt; para lograr &lt;a href=&quot;https://www.hibernate.org/397.html&quot; rel=&quot;external nofollow&quot;&gt;&lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Persistency API&quot;&gt;JPA&lt;/abbr&gt; sin dejar atrás todo el trabajo que se ha desarrollado en el proyecto &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt;&lt;/a&gt;. Y para allá apunta mi siguiente investigación. Adiós.&lt;/p&gt;--&gt;

&lt;h3&gt;En el próximo capítulo...&lt;/h3&gt;
&lt;p&gt;Esto fue &lt;strong&gt;cómo leer desde una base de datos con &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt;&lt;/strong&gt;, prometo escribir sobre cómo escribir en la base de datos usando &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt; y hacer este mismo ejemplo usando &lt;abbr xml:lang=&quot;en&quot; title=&quot;java Persistency API&quot;&gt;JPA&lt;/abbr&gt;, que ya lo tengo hecho, pero hay que desarrollarlo y darle formato. Hasta el próximo mes.&lt;/p&gt;


&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://wiki.netbeans.org/HibernateAndWebApp&quot; rel=&quot;external nofollow&quot;&gt;Using NetBeans for Building Hibernate Based Web Applications&lt;/a&gt;&lt;/li&gt;
&lt;li xml:lang=&quot;zh&quot;&gt;&lt;a href=&quot;http://zh-cn.netbeans.org/kb/docs/web/hibernate-webapp.html&quot; rel=&quot;external nofollow&quot;&gt;在 &lt;span xml:lang=&quot;en&quot;&gt;Web&lt;/span&gt; 应用程序中使用 &lt;span xml:lang=&quot;en&quot;&gt;Hibernate&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li xml:lang=&quot;pt&quot;&gt;&lt;a href=&quot;http://www.www.netbeans.org/kb/docs/web/hibernate-webapp_pt_BR.html&quot; rel=&quot;external nofollow&quot;&gt;Usando o Hibernate em uma aplicação Web&lt;/a&gt;&lt;/li&gt;
&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://kenai.com/projects/netbeans-samples/sources/samples/show/Samples/Web/DVDStore?rev=83&quot;&gt;NetBeans &lt;abbr title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt; Samples Catalog&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/09/conectar-la-base-de-datos-desde-jsp.php&quot;&gt;Conectar a la base de datos con &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java Server Pages&quot;&gt;JSP&lt;/abbr&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/110868229400290890/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/12/ejemplo-de-aplicacion-web-con-hibernate.php#comment-form' title='7 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/110868229400290890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/110868229400290890'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/12/ejemplo-de-aplicacion-web-con-hibernate.php' title='Ejemplo de aplicación web con Hibernate que funciona usando Netbeans IDE y JSTL (JSP(X))'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.242544143105047 -70.14172375202179</georss:point><georss:box>-20.242858643105048 -70.142179752021789 -20.242229643105045 -70.14126775202179</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-3780174720301527006</id><published>2009-11-29T14:48:00.001-03:00</published><updated>2009-11-29T14:49:53.713-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="guliqq"/><category scheme="http://www.blogger.com/atom/ns#" term="redes"/><title type='text'>El Modelo OSI y el error de capa 8 ¬¬</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Sería bueno explicar qué significa el chistecito del error de capa 8 para los incautos. Lo sospechaba. Aprovecho aquí también de conocer los otros 7 niveles.&lt;/p&gt;

&lt;p&gt;El chistecito del error de capa 8 viene del Modelo &lt;abbr xml:lang=&quot;en&quot; title=&quot;Open System Interconnection&quot;&gt;OSI&lt;/abbr&gt;, que de acuerdo a Wikipedia:&lt;/p&gt;

&lt;blockquote cite=&quot;&quot;&gt;&lt;p&gt;El &lt;strong&gt;modelo de referencia de Interconexión de Sistemas Abiertos&lt;/strong&gt; (&lt;abbr xml:lang=&quot;en&quot; title=&quot;Open System Interconnection&quot;&gt;OSI&lt;/abbr&gt;, &lt;span xml:lang=&quot;en&quot;&gt;Open System Interconnection&lt;/span&gt;) fue el modelo de red descriptivo creado por la Organización Internacional para la Estandarización lanzado en 1984. Es decir, fue un marco de referencia para la definición de arquitecturas de interconexión de sistemas de comunicaciones.&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;7 capas del modelo &lt;abbr xml:lang=&quot;en&quot; title=&quot;Open System Interconnection&quot;&gt;OSI&lt;/abbr&gt;&lt;/h3&gt;
&lt;p&gt;Este modelo presenta 7 capas:&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;530&quot; height=&quot;267&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/modelo-osi.png&quot;&gt;Pirámide que enumera las 7 capas del modelo &lt;abbr xml:lang=&quot;en&quot; title=&quot;Open System Interconnection&quot;&gt;OSI&lt;/abbr&gt; con el Nivel Físico (Capa 1) como base y el Nivel de Aplicación (Capa 7) en la parte superior.&lt;/object&gt;&lt;/p&gt;

&lt;dl&gt;&lt;dt&gt;Capa 1: Capa Física&lt;/dt&gt;
&lt;dd&gt;Se refiere al medio físico de transporte como los cables o las ondas, por ejemplo. O también en el proceso de codificar la información para adaptarla al medio físico en que se transportará.&lt;/dd&gt;
&lt;dt&gt;Capa 2: Capa de enlace de datos&lt;/dt&gt;
&lt;dd&gt;&lt;q cite=&quot;http://es.wikipedia.org/wiki/Modelo_OSI#Capa_de_enlace_de_datos_.28Capa_2.29&quot;&gt;La capa de enlace de datos se ocupa del direccionamiento físico, de la topología de la red, del acceso a la red, de la notificación de errores, de la distribución ordenada de tramas y del control del flujo.&lt;/q&gt;&lt;/dd&gt;
&lt;dt&gt;Capa 3: Capa de red&lt;/dt&gt;
&lt;dd&gt;Los enrutadores o &lt;span xml:lang=&quot;en&quot;&gt;routers&lt;/span&gt; y/o la saturación de la red o paquete.&lt;/dd&gt;
&lt;dt&gt;Capa 4: Capa de transporte&lt;/dt&gt;
&lt;dd&gt;Es cuando se dividen la información en paquetes para ser transportados por la Capa 3, la que se encarga de la comunicación independientemente del medio de transporte de la información.&lt;/dd&gt;
&lt;dt&gt;Capa 5: Capa de sesión&lt;/dt&gt;
&lt;dd&gt;&lt;q cite=&quot;http://es.wikipedia.org/wiki/Modelo_OSI#Capa_de_sesi.C3.B3n_.28Capa_5.29&quot;&gt;Esta capa es la que se encarga de mantener y controlar el diálogo establecido entre los dos computadores que estan transmitiendo datos de cualquier índole.&lt;/q&gt;&lt;/dd&gt;
&lt;dt&gt;Capa 6: Capa de presentación&lt;/dt&gt;
&lt;dd&gt;El objetivo de la capa de presentación es encargarse de la representación de la información, de manera que aunque distintos equipos puedan tener diferentes representaciones internas de caracteres (&lt;abbr xml:lang=&quot;en&quot; title=&quot;American Standard Code for Information Interchange&quot;&gt;ASCII&lt;/abbr&gt;, Unicode, &lt;abbr xml:lang=&quot;en&quot; title=&quot;Extended Binary Coded Decimal Interchange Code&quot;&gt;EBCDIC&lt;/abbr&gt;), números (&lt;span xml:lang=&quot;en&quot;&gt;little-endian&lt;/span&gt; tipo Intel, &lt;span xml:lang=&quot;en&quot;&gt;big-endian&lt;/span&gt; tipo Motorola), sonido o imágenes, los datos lleguen de manera reconocible.&lt;/dd&gt;
&lt;dt&gt;Capa 7: Capa de aplicación&lt;/dt&gt;
&lt;dd&gt;Son los protocolos de comunicación como &lt;abbr xml:lang=&quot;en&quot; title=&quot;HyperText Transfer Protocol&quot;&gt;HTTP&lt;/abbr&gt;, &lt;abbr xml:lang=&quot;en&quot; title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt;, &lt;abbr xml:lang=&quot;en&quot; title=&quot;Post Office Protocol&quot;&gt;POP&lt;/abbr&gt;, &lt;abbr title=&quot;etcétera&quot;&gt;etc&lt;/abbr&gt;. &lt;q cite=&quot;http://es.wikipedia.org/wiki/Modelo_OSI#Capa_de_aplicaci.C3.B3n_.28Capa_7.29&quot;&gt;Cabe aclarar que el usuario normalmente no interactúa directamente con el nivel de aplicación. Suele interactuar con programas que a su vez interactúan con el nivel de aplicación pero ocultando la complejidad subyacente.&lt;/q&gt;&lt;/dd&gt;
&lt;/dl&gt;

&lt;h3&gt;Error de capa 8 y capa 9&lt;/h3&gt;

&lt;p&gt;La capa 8 es un chiste &lt;q cite=&quot;http://en.wikipedia.org/wiki/Layer_8&quot;&gt;usado para referiste a una capa &quot;usuario&quot; o &quot;política&quot; inexistente&lt;/q&gt;. &lt;q cite=&quot;http://foros.cristalab.com/error-de-capa-8-t48619/#330001&quot;&gt;Error Capa 8: Error del Usuario&lt;/q&gt;. También es conocido como el &lt;q cite=&quot;http://foros.cristalab.com/error-de-capa-8-t48619/#330623&quot;&gt;&quot;error 505&quot; entre el teclado y el asiento&lt;/q&gt;. O sea, tú.&lt;/p&gt;

&lt;blockquote cite=&quot;http://foros.cristalab.com/error-de-capa-8-t48619/#330001&quot;&gt;&lt;p&gt;&quot;Error Capa 9: Error del Jefe del Usuario&quot; XD&lt;/p&gt;&lt;/blockquote&gt;

&lt;p xml:lang=&quot;en&quot;&gt;Nerd.&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://foros.cristalab.com/error-de-capa-8-t48619/&quot; rel=&quot;external nofollow&quot;&gt;Error de Capa 8???&lt;/a&gt;&lt;/li&gt;
&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Layer_8&quot; rel=&quot;external nofollow&quot;&gt;Layer 8 - Wikipedia, the free encyclopedia&lt;/a&gt;&lt;/li&gt;
&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://thecoffeedesk.com/news/index.php/2009/04/11/osi-model-layer-8/&quot; rel=&quot;external nofollow&quot;&gt;&lt;abbr title=&quot;Open System Interconnection&quot;&gt;OSI&lt;/abbr&gt; Model Layer 8&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/3780174720301527006/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/11/el-modelo-osi-y-el-error-de-capa-8.php#comment-form' title='5 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/3780174720301527006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/3780174720301527006'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/11/el-modelo-osi-y-el-error-de-capa-8.php' title='El Modelo OSI y el error de capa 8 ¬¬'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.242591957472531 -70.141825675964355</georss:point><georss:box>-20.242906457472532 -70.142281675964355 -20.242277457472529 -70.141369675964356</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-8033213863922019851</id><published>2009-11-25T21:19:00.006-03:00</published><updated>2009-12-07T14:22:08.284-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google"/><category scheme="http://www.blogger.com/atom/ns#" term="guliqq"/><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="sun"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Ejecutar Chrome OS como si fuera otra aplicación (abrir imagen VMWare en VirtualBox)</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Con el software &lt;span xml:lang=&quot;en&quot;&gt;opensource&lt;/span&gt; de virtualización de escritorios &lt;span xml:lang=&quot;en&quot;&gt;VirtualBox&lt;/span&gt; puedes probar ya el nuevo sistema operativo de Google completamente gratis y fácilmente en una ventana gracias a la posibilidad de abrir imágenes &lt;span xml:lang=&quot;en&quot;&gt;VMWware&lt;/span&gt;. &lt;span xml:lang=&quot;en&quot;&gt;Jump the shark.&lt;/span&gt;&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;550&quot; height=&quot;452&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/virtualbox-chromeos/chromeos-virtualbox.png&quot;&gt;Pestaña de aplicaciones de &lt;span xml:lang=&quot;en&quot;&gt;Chrome &lt;abbr title=&quot;Operative System&quot;&gt;OS&lt;/abbr&gt;&lt;/span&gt; corriendo en &lt;span xml:lang=&quot;en&quot;&gt;VirtualBox&lt;/span&gt;.&lt;/object&gt;&lt;/p&gt;

&lt;h3&gt;Instrucciones&lt;/h3&gt;

&lt;ol&gt;&lt;li&gt;&lt;p&gt;Consigue una imagen de &lt;a href=&quot;http://www.chromium.org/chromium-os&quot; xml:lang=&quot;en&quot; rel=&quot;external nofollow&quot;&gt;Chrome &lt;abbr title=&quot;Operative System&quot;&gt;OS&lt;/abbr&gt;&lt;/a&gt; ya compilada (anda una &lt;a href=&quot;http://chromeos-blog.com/wp-content/uploads/chromeos-image-999.999.32309.211410-a1.vmdk.bz2.5170843.TPB.torrent&quot; rel=&quot;external nofollow&quot;&gt;imagen &lt;span xml:lang=&quot;en&quot;&gt;VMware&lt;/span&gt;&lt;/a&gt; dando vueltas por ahí).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mueve el archivo &lt;code&gt;.vmdk&lt;/code&gt; a una carpeta personal, por ejemplo &lt;code&gt;Mis documentos&lt;/code&gt; o &lt;code&gt;~/Library/VirtualBox/HardDisks&lt;/code&gt; o en cualquier lugar que no se te pierda.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Abre &lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/04/ejecutar-windows-en-una-maquina-virtual.php&quot;&gt;&lt;span xml:lang=&quot;en&quot;&gt;VirtualBox&lt;/span&gt;&lt;/a&gt; y agrega una &lt;q&gt;Máquina&lt;/q&gt; &amp;gt; &lt;q&gt;Nueva...&lt;/q&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dale un nombre, en Sistema Operativo elije la opción &lt;span xml:lang=&quot;en&quot;&gt;Linux&lt;/span&gt; y en Versión: &lt;span xml:lang=&quot;en&quot;&gt;Other Linux&lt;/span&gt;. &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/virtualbox-chromeos/otherlinux.png&quot;&gt;Siguiente&lt;/q&gt;.&lt;/p&gt;
&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;500&quot; height=&quot;329&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/virtualbox-chromeos/otherlinux.png&quot;&gt;Asistente de Nueva máquina virtual en &lt;span xml:lang=&quot;en&quot;&gt;VirtualBox&lt;/span&gt;.&lt;/object&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Especifica la memoria base. 256&lt;abbr xml:lang=&quot;en&quot; title=&quot;megabytes&quot;&gt;MB&lt;/abbr&gt; es lo mínimo recomendado, luego Siguiente.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;En el paso siguiente, marca la casilla de &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/virtualbox-chromeos/hdd.png&quot;&gt;Disco duro de arranque (Primario maestro)&lt;/q&gt;, selecciona la opción &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/virtualbox-chromeos/hdd.png&quot;&gt;Usar un disco duro existente&lt;/q&gt; y busca la imagen &lt;span xml:lang=&quot;en&quot;&gt;VMWare&lt;/span&gt; de &lt;span xml:lang=&quot;en&quot;&gt;Chrome &lt;abbr title=&quot;Operative System&quot;&gt;OS&lt;/abbr&gt;&lt;/span&gt; que conseguiste.&lt;/p&gt;
&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;500&quot; height=&quot;126&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/virtualbox-chromeos/hdd.png&quot;&gt;Agregando imagen &lt;span xml:lang=&quot;en&quot;&gt;VMWare&lt;/span&gt; dentro del asistente de Nueva máquina virtual en &lt;span xml:lang=&quot;en&quot;&gt;VirtualBox&lt;/span&gt;.&lt;/object&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Siguiente. Terminar. Ahora selecciona la nueva máquina virtual de la lista que tiene &lt;span xml:lang=&quot;en&quot;&gt;VirtualBox&lt;/span&gt; e iníciala.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ahí está. El usuario y contraseña son los mismos que usas para iniciar sesión en Google.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;También puedes &lt;a href=&quot;http://alt1040.com/2009/11/como-hacer-funcionar-chrome-os-desde-una-memoria-usb&quot; rel=&quot;external nofollow&quot;&gt;&lt;span xml:lang=&quot;en&quot;&gt;boot&lt;/span&gt;ear &lt;span xml:lang=&quot;en&quot;&gt;Chrome &lt;abbr title=&quot;Operative System&quot;&gt;OS&lt;/abbr&gt;&lt;/span&gt; desde un pendrive &lt;abbr xml:lang=&quot;en&quot; title=&quot;Universal Serial Bus&quot;&gt;USB&lt;/abbr&gt;&lt;/a&gt; si lo vas a usar en serio para obtener un rendimiento mayor y ver por qué es una buena idea.&lt;/p&gt;

&lt;h3 xml:lang=&quot;en&quot;&gt;Bonus track&lt;/h3&gt;

&lt;!--[if !IE]&gt; &lt;--&gt;&lt;p class=&quot;imagen&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/ooscarr/4122693880/&quot;&gt;&lt;object type=&quot;image/jpeg&quot; width=&quot;153&quot; height=&quot;240&quot; data=&quot;http://farm3.static.flickr.com/2551/4122693880_d98ff7832b_m.jpg&quot;&gt;Probé el &lt;span xml:lang=&quot;en&quot;&gt;WebOS&lt;/span&gt; de &lt;span xml:lang=&quot;en&quot;&gt;Palm&lt;/span&gt; en &lt;span xml:lang=&quot;en&quot;&gt;VirtualBox&lt;/span&gt;&lt;/object&gt;&lt;/a&gt;&lt;/p&gt;&lt;!--&gt; &lt;![endif]--&gt;

&lt;p&gt;En &lt;a href=&quot;http://developer.palm.com/&quot;&gt;http://developer.palm.com/&lt;/a&gt; puedes descargar, previo registro, un instalador del &lt;span xml:lang=&quot;en&quot;&gt;WebOS&lt;/span&gt; (el sistema operativo que usa el &lt;span xml:lang=&quot;en&quot;&gt;Palm pre&lt;/span&gt;) para &lt;span xml:lang=&quot;en&quot;&gt;VirtualBox&lt;/span&gt; gratis también para jugar.&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.facebook.com/topic.php?topic=10866&amp;amp;uid=23601848556&quot; xml:lang=&quot;en&quot; rel=&quot;external nofollow&quot;&gt;Run Chrome &lt;abbr title=&quot;Operative System&quot;&gt;OS&lt;/abbr&gt; on VirtualBox, the easy way!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/04/ejecutar-windows-en-una-maquina-virtual.php&quot;&gt;Ejecuta otro sistema operativo en una ventana sin reiniciar con &lt;span xml:lang=&quot;en&quot;&gt;VirtualBox&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/8033213863922019851/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/11/instalar-chrome-os-como-si-fuera-otra.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/8033213863922019851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/8033213863922019851'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/11/instalar-chrome-os-como-si-fuera-otra.php' title='Ejecutar Chrome OS como si fuera otra aplicación (abrir imagen VMWare en VirtualBox)'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.245221725022525 -70.139738917350769</georss:point><georss:box>-20.245536225022526 -70.140194917350769 -20.244907225022523 -70.139282917350769</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-4070622960827668250</id><published>2009-11-22T13:06:00.003-03:00</published><updated>2009-11-28T22:45:00.071-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="guliqq"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="netbeans"/><category scheme="http://www.blogger.com/atom/ns#" term="sun"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Importar la base de datos de ejemplo MySQL (Sakila DB Schema) con Netbeans IDE es fácil</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Con el plug-in de Netbeans, instalar la base de datos de ejemplo Sakila es sencillo (con los permisos adecuados).&lt;/p&gt;

&lt;blockquote cite=&quot;http://dev.mysql.com/doc/sakila/en/sakila.html#sakila-introduction&quot;&gt;&lt;p&gt;La base de datos de ejemplo Sakila fue desarrollada por Mike Hillyer, un pasado miembro del equipo de documentación de &lt;span xml:lang=&quot;en&quot;&gt;MySQL AB&lt;/span&gt;, y su intención fue la de proveer un esquema estándar que pueda ser usado para ejemplos en libros, tutoriales, artículos, ejemplos, y así en adelante. La base de datos de ejemplo Sakila también sirve para destacar las últimas características de &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; tales como Vistas, Procedimientos Almacenados, y Disparadores (&lt;span xml:lang=&quot;en&quot;&gt;Triggers&lt;/span&gt;).&lt;/p&gt;&lt;/blockquote&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;520&quot; height=&quot;401&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/sakila-netbeans/sakila-schema.png&quot;&gt;&lt;span xml:lang=&quot;en&quot;&gt;Scheme&lt;/span&gt; de &lt;span xml:lang=&quot;en&quot;&gt;Sakila &lt;abbr title=&quot;Data Base&quot;&gt;DB&lt;/abbr&gt;&lt;/span&gt; hecho con &lt;a href=&quot;http://wb.mysql.com/&quot; xml:lang=&quot;en&quot; rel=&quot;external nofollow&quot;&gt;MySQL Workbench&lt;/a&gt;&lt;/object&gt;&lt;br /&gt;Diagrama relacional del &lt;span xml:lang=&quot;en&quot;&gt;Scheme&lt;/span&gt; de &lt;span xml:lang=&quot;en&quot;&gt;Sakila &lt;abbr title=&quot;Data Base&quot;&gt;DB&lt;/abbr&gt;&lt;/span&gt; (&lt;a href=&quot;http://dev.mysql.com/doc/sakila/en/sakila.html#sakila-structure&quot;&gt;ver más grande&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Instalar el &lt;span xml:lang=&quot;en&quot;&gt;plug-in&lt;/span&gt; de Sakila es muy sencillo, sólo vamos al menú &lt;q&gt;Herramientas&lt;/q&gt; &amp;gt; &lt;q&gt;Complementos&lt;/q&gt;, en el panel que se abre, existe una sección llamada &lt;q&gt;&lt;span xml:lang=&quot;en&quot;&gt;Plugins&lt;/span&gt; disponibles&lt;/q&gt;.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;550&quot; height=&quot;360&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/sakila-netbeans/plugins.png&quot;&gt;En el panel de Plugins de &lt;span xml:lang=&quot;en&quot;&gt;Netbeans &lt;abbr xml:lang=&quot;en&quot; title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt;, hay que marcar la opción &lt;span xml:lang=&quot;en&quot;&gt;Sakila Sample Database&lt;/span&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Para instalarlo, espera que cargue la larga lista de &lt;span xml:lang=&quot;en&quot;&gt;plugins&lt;/span&gt; disponibles, marca la casilla de &lt;q xml:lang=&quot;en&quot; cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/sakila-netbeans/plugins.png&quot;&gt;Sakila Sample Database&lt;/q&gt; y presiona el botón &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/sakila-netbeans/plugins.png&quot;&gt;Instalar&lt;/q&gt; que está debajo. Sigue el proceso de instalación, reinicia &lt;span xml:lang=&quot;en&quot;&gt;Netbeans IDE&lt;/span&gt; si es necesario.&lt;/p&gt;

&lt;p&gt;Luego, en el panel de Servicios (si no lo ves, elije el menú &lt;q&gt;Ventana&lt;/q&gt; &amp;gt; &lt;q&gt;Prestaciones&lt;/q&gt;) y con el menú contextual sobre la parte de &lt;q&gt;Bases de datos&lt;/q&gt; elije la opción &lt;q&gt;Registrar servidor &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;...&lt;/q&gt; si todavía no lo has hecho.&lt;/p&gt;

&lt;p&gt;Ya, cuando te hayas conectado al servidor &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; como root u otra cuenta con los suficientes permisos, selecciónala y en el menú contextual elije la nueva opción &lt;q cite=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/sakila-netbeans/crearbd.png&quot;&gt;Crear base de datos...&lt;/q&gt;.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;500&quot; height=&quot;235&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/sakila-netbeans/crearbd.png&quot;&gt;Para crear base de datos &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; con el &lt;span xml:lang=&quot;en&quot;&gt;plugin&lt;/span&gt; de &lt;span xml:lang=&quot;en&quot;&gt;Sakila&lt;/span&gt; de &lt;span xml:lang=&quot;en&quot;&gt;Netbeans &lt;abbr xml:lang=&quot;en&quot; title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt; se necesita tener permisos de &lt;code xml:lang=&quot;en&quot;&gt;root&lt;/code&gt;.&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;En el cuadro de diálogo que se abre, seleccionamos &lt;q&gt;sakila&lt;/q&gt; en el primer campo, y en el segundo seleccionamos al usuario que tendrá todo el poder sobre esta nueva base de datos.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;520&quot; height=&quot;215&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/sakila-netbeans/conceder-acceso.png&quot;&gt;En el cuadro de diálogo de Crear nueva base de datos &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; en &lt;span xml:lang=&quot;en&quot;&gt;Netbeans &lt;abbr xml:lang=&quot;en&quot; title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/span&gt;, también aparecen otras bases de datos de ejemplo además de Sakila.&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Ya, con eso, después de esperar que se creen todas las tablas y se llenen de datos de ejemplo, podemos conectarnos y empezar a utilizarlas para nuestros experimentos y lecciones.&lt;/p&gt;

&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;550&quot; height=&quot;541&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/sakila-netbeans/sakila-netbeans.png&quot;&gt;Netbeans &lt;abbr xml:lang=&quot;en&quot; title=&quot;integrated development environment&quot;&gt;IDE&lt;/abbr&gt; cuenta con un administrador de bases de datos basado en &lt;abbr xml:lang=&quot;en&quot; title=&quot;Open Database Connectivity&quot;&gt;ODBC&lt;/abbr&gt;.&lt;/object&gt;&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://dev.mysql.com/doc/sakila/en/sakila.html&quot; rel=&quot;external nofollow&quot;&gt;Sakila &lt;abbr title=&quot;Data Base&quot;&gt;DB&lt;/abbr&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/4070622960827668250/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/11/importar-la-base-de-datos-de-ejemplo.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/4070622960827668250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/4070622960827668250'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/11/importar-la-base-de-datos-de-ejemplo.php' title='Importar la base de datos de ejemplo MySQL (Sakila DB Schema) con Netbeans IDE es fácil'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-8710767976640234612</id><published>2009-11-20T19:57:00.029-03:00</published><updated>2009-11-21T20:30:44.696-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="sun"/><category scheme="http://www.blogger.com/atom/ns#" term="tip"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Borrar base de datos en MySQL</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Voy a borrar toda una base de datos usando las líneas de comandos.&lt;/p&gt;

&lt;p&gt;Eliminar una base de datos involucra eliminar también todas las tablas y contenidos de éstas y para hacerlo se necesita tener permiso para borrar dicha base de datos, y en mi caso usaré la cuenta &lt;code&gt;root&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Voy al terminal, e inicio sesión como &lt;code&gt;root&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;ssh&quot;&gt;/usr/local/mysql/bin/mysql -u root -p&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Si el usuario &lt;code&gt;root&lt;/code&gt; tiene contraseña, la ingresamos.&lt;/p&gt;

&lt;p&gt;El comando para borrar una base de datos, según la documentación oficial, es:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;DROP {DATABASE | SCHEMA} [IF EXISTS] db_name&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Por ejemplo, para el caso que quiera eliminar una base de datos llamada &lt;code&gt;ooscarr&lt;/code&gt;, pondría:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;DROP DATABASE IF EXISTS &lt;em&gt;ooscarr&lt;/em&gt;;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Obviamente, se advierte precaución ya que si no se ha hecho un respaldo previo, los datos no se podrán recuperar.&lt;/p&gt;

&lt;p&gt;Para salir de &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;, el comando es &lt;code class=&quot;sql&quot;&gt;exit&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/es/drop-database.html&quot; rel=&quot;external nofollow&quot;&gt;Manual de &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; 5.0 - 13.1.6. Sintaxis de DROP DATABASE&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/8710767976640234612/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/11/borrar-base-de-datos-en-mysql.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/8710767976640234612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/8710767976640234612'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/11/borrar-base-de-datos-en-mysql.php' title='Borrar base de datos en MySQL'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.244059096437503 -70.140329003334045</georss:point><georss:box>-20.244373596437505 -70.140785003334045 -20.2437445964375 -70.139873003334046</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-1309398171935089122</id><published>2009-11-14T20:10:00.005-03:00</published><updated>2009-11-28T17:51:09.217-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="sun"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Instalé MySQL en Mac OS X</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Mac OS X viene con Apache y PHP, pero sólo la versión server incluye &lt;strong&gt;&lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;&lt;/strong&gt;, y hasta ahora no lo había instalado.&lt;/p&gt;



&lt;p&gt;Puedes &lt;a href=&quot;http://hivelogic.com/articles/installing-mysql-on-mac-os-x/&quot; rel=&quot;external nofollow&quot;&gt;compilar &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; tú mismo&lt;/a&gt;, como &lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/04/cmo-instal-postgresql-en-mac-os-x.php&quot;&gt;con PostgreSQl&lt;/a&gt;, pero para qué.&lt;/p&gt;





&lt;h3&gt;Descarga e instalación&lt;/h3&gt;


&lt;h4&gt;1. Descarga &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;&lt;/h4&gt;


&lt;p&gt;Ve a la página &lt;a href=&quot;http://dev.mysql.com/downloads/mysql/&quot; rel=&quot;external nofollow&quot;&gt;http://dev.mysql.com/downloads/mysql/&lt;/a&gt; y descarga la última versión para Mac OS X. La versión x86 en formato &lt;abbr xml:lang=&quot;en&quot; title=&quot;Disk iMaGe&quot;&gt;DMG&lt;/abbr&gt; es la recomendada.&lt;/p&gt;


&lt;p&gt;Si estás usando un Mac con un procesador de 64 bits (como un Core 2 Duo o Core i5, i7) y tienes algún Leopardo (OS X 10.5 u OS X 10.6) mejor descarga la versión de 64 bits para ir acorde a Apache2 que se ejecuta a 64 bits.&lt;/p&gt;



&lt;h4&gt;2. Leer antes de instalar&lt;/h4&gt;


&lt;p&gt;Si usas &lt;a href=&quot;http://www.apple.com/la/server/macosx/&quot; rel=&quot;external nofollow&quot;&gt;Mac OS X &lt;span xml:lang=&quot;en&quot;&gt;Server&lt;/span&gt;&lt;/a&gt; te recomiendo que leas el archivo &lt;code&gt;Readme.txt&lt;/code&gt; que viene con el &lt;abbr xml:lang=&quot;en&quot; title=&quot;Disk iMaGe&quot;&gt;DMG&lt;/abbr&gt; para leer la documentación (en inglés) ya que Mac OS X Server viene con &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; pre-instalado.&lt;/p&gt;

&lt;p&gt;Aún si no usas la versión server, puede que ya tengas MySQL previamente instalado. Revisa si lo tienes instalado buscando algún archivo o carpeta con la palabra &quot;&lt;code&gt;mysql&lt;/code&gt;&quot; en la carpeta &lt;code&gt;/usr/local&lt;/code&gt; ó en &lt;code&gt;Librería/StartupIyems&lt;/code&gt;, ya sea con el &lt;span xml:lang=&quot;en&quot;&gt;Finder&lt;/span&gt; (&lt;q&gt;Menú Ir&lt;/q&gt; &amp;gt; &lt;q&gt;Ir a la carpeta...&lt;/q&gt;) o con el &lt;span xml:lang=&quot;en&quot;&gt;Terminal&lt;/span&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ls /usr/local
ls /Library/StartupItems&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Otra opción es &lt;strong&gt;ejecutar el comando de apagar el servidor &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;&lt;/strong&gt; que podría estar corriendo (y que &lt;strong&gt;es necesario hacerlo antes de comenzar la instalación&lt;/strong&gt;) con el comando:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;mysqladmin shutdown&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Si no existe el comando, estamos bien. De todos modos, el instalador archivará una versión antigua de &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; con la extensión &lt;code&gt;.bak&lt;/code&gt; (siempre que el servidor &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; haya sido parado antes de instalar).&lt;/p&gt;



&lt;h4&gt;3. Asistente de instalación&lt;/h4&gt;

&lt;p&gt;Ahora instala el paquete de instalación &lt;strong&gt;que NO se llama&lt;/strong&gt; &quot;&lt;code&gt;MySQLStartupItem.pkg&lt;/code&gt;&quot; y el rutinario Siguiente, Siguiente, Instalar, Finalizar.&lt;/p&gt;



&lt;p&gt;El instalador te puede decir que no hay espacio, es un &lt;span xml:lang=&quot;en&quot;&gt;bug&lt;/span&gt;; retrocede y vuelve a intentarlo y no debería pasar.&lt;/p&gt;



&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;480&quot; height=&quot;356&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/mysql-instalacion-osx/instalacion-correcta.png&quot;&gt;Una vez que aparezca o suene la señal de instalación correcta, hay que elegir la opción Finalizar para cerrar el asistente de instalación.&lt;/object&gt;&lt;/p&gt;



&lt;p&gt;Ojo, el instalador requiere un usuario llamado &quot;&lt;code&gt;mysql&lt;/code&gt;&quot;, pero los buenos de Apple lo crearon durante la instalación del sistema operativo. :-)&lt;/p&gt;


&lt;h3&gt;Configurar Mac OS X&lt;/h3&gt;

&lt;!--&lt;h4&gt;Creemos algunos aliases&lt;/h4&gt;

&lt;p&gt;Para hacer más sencillo el manejo de &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; en el Terminal, es útil crear aliases en el PATH para los dos comandos principales.&lt;/p&gt;


&lt;p&gt;Para esto, vamos a la carpeta &lt;code&gt;/usr/local/mysql/bin/&lt;/code&gt; y seleccionamos los archivos...&lt;/p&gt;


&lt;ul&gt;&lt;li&gt;&lt;code&gt;mysql&lt;/code&gt;&lt;/li&gt;

&lt;li&gt;&lt;code&gt;mysqladmin&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;


&lt;p&gt;...y los arrastramos al Escritorio presionando las teclas &lt;kbd&gt;alt&lt;/kbd&gt; &lt;kbd&gt;command&lt;/kbd&gt; para que se creen aliases.&lt;/p&gt;


&lt;p class=&quot;image&quot;&gt;&lt;object type=&quot;image/jpeg&quot; width=&quot;464&quot; height=&quot;299&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/mysql-instalacion-osx/arrastrar-aliases.jpg&quot;&gt;&lt;/object&gt;&lt;/p&gt;

 &lt;p&gt;Luego arrastramos estos aliases a la carpeta &lt;code&gt;/usr/local/bin/&lt;/code&gt; y autenticamos cuando lo pida. Súper gráfico.&lt;/p&gt;--&gt;




&lt;h4&gt;Iniciar servidor&lt;/h4&gt;

&lt;p&gt;Iniciar y apagar &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; es mucho más fácil y gráfico si se instala el panel de preferencias del sistema abriendo el archivo &lt;code&gt;MySQL.prefPane&lt;/code&gt; incluido en la &lt;abbr xml:lang=&quot;en&quot; title=&quot;Disk iMaGe&quot;&gt;DMG&lt;/abbr&gt; de instalación de &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;.&lt;/p&gt;



&lt;p class=&quot;imagen&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;480&quot; height=&quot;263&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/mysql-instalacion-osx/panel-control.png&quot;&gt;El botón de iniciar o detener el servidor &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; se encuentra en las Preferencias del sistema, en la última sección de Complementos, se agrega un botón llamado &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;.&lt;/object&gt;&lt;/p&gt;



&lt;p&gt;Con esto, iniciar o detener el servidor &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; es muy sencillo; basta presionar un botón en el panel de Preferencias del sistema MySQL, incluso se puede configurar para que se inicie automáticamente cuando arranque el sistema sin necesidad de modificar archivos de sistema.&lt;/p&gt;



&lt;h4&gt;PHP&lt;/h4&gt;


&lt;p&gt;&lt;q cite=&quot;http://www.macosxhints.com/article.php?story=20071030153912813&quot;&gt;Apple fue lo suficientemente amable para compilar php con soporte para MySQL&lt;/q&gt; así que sólo hay que configurar el archivo &lt;code&gt;php.ini&lt;/code&gt;.&lt;/p&gt;



&lt;p&gt;Primero ve a la carpeta &lt;code&gt;/etc&lt;/code&gt; ó &lt;code&gt;/private/etc&lt;/code&gt;, si ves algún archivo llamado &lt;code&gt;php.ini&lt;/code&gt; no sigas el siguiente comando que consiste en crear una copia del archivo &lt;code&gt;php.ini.default&lt;/code&gt; para usarlo como &lt;code&gt;php.ini&lt;/code&gt;. Las intrucciones para el Terminal son las siguientes:&lt;/p&gt;



&lt;pre&gt;&lt;code&gt;&lt;span title=&quot;Situar en el directorio /etc&quot;&gt;cd /etc&lt;/span&gt;

&lt;span title=&quot;Duplicar el archivo php.ini.default con el nombre php.ini usando privilegios de administrador&quot;&gt;sudo cp php.ini.default php.ini&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Edita el archivo recién creado con permisos de administrador con la instrucción:&lt;/p&gt;



&lt;pre&gt;&lt;code&gt;sudo pico php.ini&lt;/code&gt;&lt;/pre&gt;



&lt;blockquote cite=&quot;http://www.macosxhints.com/article.php?story=20071030153912813&quot;&gt;&lt;p&gt;Presiona &lt;kbd&gt;control&lt;/kbd&gt; + &lt;kbd&gt;W&lt;/kbd&gt;, busca &lt;code&gt;mysql.default_socket&lt;/code&gt;, y hazlo que se vea como esto:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mysql.default_socket = /tmp/mysql.sock

&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Guarda los cambios presionando &lt;kbd&gt;control&lt;/kbd&gt; &lt;kbd&gt;X&lt;/kbd&gt;, luego presiona &lt;kbd&gt;Y&lt;/kbd&gt;, luego presiona &lt;kbd&gt;enter&lt;/kbd&gt;.&lt;/p&gt;&lt;/blockquote&gt;



&lt;p&gt;Si tenías el &lt;strong&gt;Compartir web&lt;/strong&gt; corriendo, reinicia Apache desactivándolo y volviéndolo a activar.&lt;/p&gt;



&lt;p&gt;Si quieres hacer una prueba, crea el siguiente archivo:&lt;/p&gt;



&lt;pre&gt;&lt;code class=&quot;php&quot;&gt;&amp;lt;?php
$con = mysql_connect(&quot;localhost&quot;,&quot;root&quot;,&quot;&quot;);
if (!$con){
 die(&#39;No se pudo conectar porque: &#39; . mysql_error());
} else{
 echo &quot;Conectado exitosamente&quot;;
}
mysql_close($con);
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Guárdalo como &lt;code&gt;probando.php&lt;/code&gt; en tu carpeta &lt;code&gt;~/Web&lt;/code&gt; o &lt;code&gt;~/Sites&lt;/code&gt;, entra a &lt;a href=&quot;http://localhost/~USUARIO/probando.php&quot;&gt;http://localhost/~USUARIO/probando.php&lt;/a&gt; y si sale&lt;/p&gt;



&lt;pre&gt;Conectado exitosamente&lt;/pre&gt;



&lt;p&gt;Entonces todo salió bien. Si no, quizás todavía no has configurado Apache para que funcione con PHP o qué sé yo.&lt;/p&gt;



&lt;h3&gt;Configurar bases de datos inciales&lt;/h3&gt;

&lt;p&gt;Durante la instalación por defecto de &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;, se crearon unas cuentas de usuario:&lt;/p&gt;

&lt;dl&gt;
 &lt;dt&gt;&lt;span xml:lang=&quot;en&quot;&gt;root&lt;/span&gt;&lt;/dt&gt;
 &lt;dd&gt;El usuario &lt;span xml:lang=&quot;en&quot;&gt;root&lt;/span&gt; tiene acceso de super-usuario a todas las bases de datos, sólo se puede conectar desde el computador local y por defecto no lleva contraseña.&lt;/dd&gt;
 &lt;dt&gt;Cuentas anónimas&lt;/dt&gt;
 &lt;dd&gt;Dos cuentas de usuario anónimas son creadas y tampoco llevan contraseña, y sólo se puede conectar a ellas desde el &lt;span xml:lang=&quot;en&quot;&gt;local-host&lt;/span&gt;. &lt;q cite=&quot;http://dev.mysql.com/doc/refman/5.1/es/default-privileges.html&quot;&gt;Estas cuentas tienen todos los privilegios para la base de datos de prueba (&lt;code&gt;test&lt;/code&gt;) y para otras bases de datos con nombres que empiezan con &lt;code&gt;test_&lt;/code&gt;.&lt;/q&gt;&lt;/dd&gt;&lt;/dl&gt;

&lt;h4&gt;Cambiar las contraseñas por defecto&lt;/h4&gt;

&lt;p&gt;Primero debes averiguar cuáles son las cuentas que se crearon; para eso, voy al &lt;span xml:lang=&quot;en&quot;&gt;Terminal&lt;/span&gt; y primero me conecto como &lt;span xml:lang=&quot;en&quot;&gt;root&lt;/span&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/usr/local/mysql/bin/mysql -u root&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;...listo las cuentas con la consulta:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;mysql&gt; SELECT Host,User FROM mysql.user ORDER BY User DESC;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;En mi caso me entregó lo siguiente:&lt;/p&gt;
&lt;pre xml:lang=&quot;en&quot;&gt;+------------------+------+
| Host             | User |
+------------------+------+
| localhost        | root |
| MacBook.local    | root |
| 127.0.0.1        | root |
| localhost        |      |
| MacBook.local    |      |
+------------------+------+
5 rows in set (0.00 sec)
&lt;/pre&gt;

&lt;p&gt;Como se ve, hay 3 cuentas &lt;span xml:lang=&quot;en&quot;&gt;root&lt;/span&gt; (&lt;code&gt;127.0.0.1&lt;/code&gt;, &lt;code&gt;MacBook.local&lt;/code&gt;, y &lt;code&gt;localhost&lt;/code&gt;; y 2 anónimas (&lt;code&gt;localhost&lt;/code&gt; y &lt;code&gt;MacBook.local&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/es/default-privileges.html&quot; rel=&quot;external nofollow&quot;&gt;Las cuentas anónimas se pueden eliminar&lt;/a&gt;, pero como ignoro si me servirán algún día, mejor le cambiaré sus contraseñas solamente.&lt;/p&gt;

&lt;p&gt;Para cambiar estas 5 contraseñas que están en blanco por el momento, escribo las siguientes consultas:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;mysql&gt; SET PASSWORD FOR &#39;root&#39;@&#39;localhost&#39; = PASSWORD(&#39;contraseña_root&#39;);
mysql&gt; SET PASSWORD FOR &#39;root&#39;@&#39;MacBook.local&#39; = PASSWORD(&#39;contraseña_root&#39;);
mysql&gt; SET PASSWORD FOR &#39;root&#39;@&#39;127.0.0.1&#39; = PASSWORD(&#39;contraseña_root&#39;);
mysql&gt; SET PASSWORD FOR &#39;&#39;@&#39;localhost&#39; = PASSWORD(&#39;contraseña_anónima&#39;);
mysql&gt; SET PASSWORD FOR &#39;&#39;@&#39;MacBook.local&#39; = PASSWORD(&#39;contraseña_anónima&#39;);&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Obviamente, reemplazando &lt;code&gt;contraseña_root&lt;/code&gt; por la clave que le quieras poner al super-usuario, y las &lt;code&gt;contraseña_anónima&lt;/code&gt; por la de las cuentas anónimas.&lt;/p&gt;

&lt;p&gt;Desde ahora, la próxima vez que ingreses a &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; con una cuenta que requiera contraseña, deberás agregar el parámetro &lt;code class=&quot;ssh&quot;&gt;-p&lt;/code&gt; al final, por ejemplo:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;ssh&quot;&gt;/usr/local/mysql/bin/mysql -u root &lt;strong&gt;-p&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html&quot; rel=&quot;external nofollow&quot;&gt;Si se te olvida la contraseña, consulta el manual&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Crear nueva base de datos&lt;/h4&gt;
&lt;p&gt;Ahora voy a crear una base de datos nueva llamada &quot;db_name&quot;. Para eso, entro a &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; como &lt;code&gt;root&lt;/code&gt; y escribo:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;CREATE DATABASE IF NOT EXISTS db_name;&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Crear un nuevo usuario&lt;/h4&gt;

&lt;p&gt;Pata crear un nuevo usuario escribimos (como &lt;code&gt;root&lt;/code&gt; &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;):&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;CREATE USER &#39;ooscarr&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;obscure&#39;;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Con esto se creará el usuario &quot;ooscarr&quot; con la contraseña &quot;obscure&quot; para que se conecte desde &lt;code&gt;localhost&lt;/code&gt;. Si queremos que pueda acceder desde otro equipo, habría que hacer lo mismo que se hizo anteriormente con los dominios o la dirección &lt;abbr xml:lang=&quot;en&quot; title=&quot;Internet Protocol&quot;&gt;IP&lt;/abbr&gt; listados, que en mi caso sería:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;CREATE USER &#39;ooscarr&#39;@&#39;MacBook.local&#39; IDENTIFIED BY &#39;obscure&#39;;
CREATE USER &#39;ooscarr&#39;@&#39;127.0.0.1&#39; IDENTIFIED BY &#39;obscure&#39;;&lt;/code&gt;&lt;/pre&gt; 

&lt;h4&gt;Asignar base de datos a un usuario&lt;/h4&gt;

&lt;p&gt;Ya, finalmente, le damos el permiso al usuario &quot;ooscarr&quot; recién creado para que administre la base de datos &lt;code&gt;db_name&lt;/code&gt;, por ejemplo, con la siguiente sentencia &lt;abbr xml:lang=&quot;en&quot; title=&quot;Structured Query Language&quot;&gt;SQL&lt;/abbr&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
 ON db_name.*
 TO &#39;ooscarr&#39;@&#39;localhost&#39;;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Y como uno se puede imaginar:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;sql&quot;&gt;GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
 ON db_name.*
 TO &#39;ooscarr&#39;@&#39;MacBook.local&#39;;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
 ON db_name.*
 TO &#39;ooscarr&#39;@&#39;127.0.0.1&#39;;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para salir de &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; escribimos &lt;code&gt;exit&lt;/code&gt;; y para salir del Terminal, tipeamos &lt;code&gt;logout&lt;/code&gt;.&lt;/p&gt;



&lt;h3&gt;Instalar &lt;span xml:lang=&quot;en&quot;&gt;software&lt;/span&gt; para trabajar con &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;&lt;/h3&gt;

&lt;p&gt;Existen herramientas más cómodas para utilizar una base de datos &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;, como son las interfaces gratuitas &lt;a href=&quot;http://www.phpmyadmin.net/&quot; rel=&quot;external nofollow&quot; xml:lang=&quot;en&quot;&gt;phpMyAdmin&lt;/a&gt;, &lt;a href=&quot;http://www.netbeans.org/&quot; rel=&quot;external nofollow&quot; xml:lang=&quot;en&quot;&gt;Netbeans &lt;abbr xml:lang=&quot;en&quot; title=&quot;Integrated Development Environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/a&gt; y la sensacional &lt;a href=&quot;http://www.sequelpro.com/&quot; rel=&quot;external nofollow&quot; xml:lang=&quot;en&quot;&gt;Sequel Pro&lt;/a&gt;, entre otros.&lt;/p&gt;


&lt;h3&gt;Importante&lt;/h3&gt;



&lt;blockquote cite=&quot;http://discussions.apple.com/message.jspa?messageID=10004712#10005164&quot;&gt;&lt;p&gt;En el futuro si lo actualizas, asegúrate de &lt;em&gt;hacerle un &lt;span xml:lang=&quot;en&quot; title=&quot;respaldo&quot;&gt;dump&lt;/span&gt;&lt;/em&gt; a tus bases de datos, ya que haciendo una instalación sobre una instalación existente destruirá tu directorio de datos.&lt;/p&gt;&lt;/blockquote&gt;





&lt;h3&gt;Referencias&lt;/h3&gt;



&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/es/mac-os-x-installation.html&quot; rel=&quot;external nofollow&quot;&gt;Manual de &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; 5 - 2.5. Instalar MySQL en Mac OS X&lt;/a&gt;&lt;/li&gt;

&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://developer.apple.com/internet/opensource/osdb.html&quot; rel=&quot;external nofollow&quot;&gt;Apple Developer Connection - MySQL on Mac OS X&lt;/a&gt;&lt;/li&gt;

&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://www.sitecrafting.com/blog/apache-mysql-php-on-leopard/&quot; rel=&quot;external nofollow&quot;&gt;Apache, MySQL, and PHP on Leopard (Mac OS 10.5)&lt;/a&gt;&lt;/li&gt;

&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/mac-os-x.html&quot; rel=&quot;external nofollow&quot;&gt;MySQL 5.1 Reference Manual - 2.7. Installing MySQL on Mac OS X&lt;/a&gt;&lt;/li&gt;

&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://superfancy.net/coding/php-mysql-apache-in-mac-osx-leopard/&quot; rel=&quot;external nofollow&quot;&gt;Setting up PHP, MySQL, and Apache in Mac OSX Leopard&lt;/a&gt;&lt;/li&gt;

&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://superfancy.net/coding/mysql-administrator-on-mac-osx-leopard-tips-and-tricks/&quot; rel=&quot;external nofollow&quot;&gt;ySQL Administrator on Mac OSX Leopard: A Few Tips and Tricks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/es/create-database.html&quot; rel=&quot;external nofollow&quot;&gt;Manual de &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt; 5 - 13.1.3. Sintaxis de &lt;code class=&quot;sql&quot;&gt;CREATE DATABASE&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;



&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/10/instalar-oracle-en-mac-os-x.php&quot;&gt;Instalar Oracle &lt;abbr xml:lang=&quot;en&quot; title=&quot;Data Base&quot;&gt;DB&lt;/abbr&gt; en Mac OS X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/04/cmo-instal-postgresql-en-mac-os-x.php&quot;&gt;Cómo instalé &lt;span xml:lang=&quot;en&quot;&gt;PostgreSQL&lt;/span&gt; en Mac OS X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/11/borrar-base-de-datos-en-mysql.php&quot;&gt;Borrar base de datos en &lt;span xml:lang=&quot;en&quot;&gt;MySQL&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/1309398171935089122/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/11/instale-mysql-en-mac-os-x.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/1309398171935089122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/1309398171935089122'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/11/instale-mysql-en-mac-os-x.php' title='Instalé MySQL en Mac OS X'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-8612165064896798372</id><published>2009-10-05T18:53:00.003-04:00</published><updated>2009-10-06T08:28:01.540-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="sun"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Instalar Oracle DB en Mac OS X</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Era cosa de tiempo para que los empleados de &lt;span xml:lang=&quot;en-us&quot;&gt;Sun Microsystems&lt;/span&gt; comenzaran a recomendar &lt;span xml:lang=&quot;en-us&quot;&gt;Oracle &lt;abbr title=&quot;DataBase&quot;&gt;DB&lt;/abbr&gt;&lt;/span&gt;. Aquí dejo el &lt;span xml:lang=&quot;en-us&quot;&gt;link&lt;/span&gt; sobre su instalación en sistemas &lt;span xml:lang=&quot;en-us&quot;&gt;Mac OS X&lt;/span&gt; escrito por &lt;span xml:lang=&quot;en-IN&quot;&gt;Arun Gupta&lt;/span&gt;.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://blog.arungupta.me/2009/09/totd-105-how-to-install-oracle-database-10g-on-mac-os-x-intel/&quot; xml:lang=&quot;en-us&quot; rel=&quot;external nofollow&quot;&gt;&lt;abbr title=&quot;Tip Of The Day&quot;&gt;TOTD&lt;/abbr&gt; #106: How to install Oracle Database 10g on Mac OS X (Intel) ?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;p class=&quot;img&quot; xml:lang=&quot;en-us&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;150&quot; height=&quot;19&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/logo-oracle.png&quot;&gt;Oracle &amp;reg;&lt;/object&gt; + &lt;object type=&quot;image/png&quot; width=&quot;150&quot; height=&quot;65&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/logo-sun.png&quot;&gt;Sun Microsystems &amp;reg;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Después él enseña a &lt;a href=&quot;http://blog.arungupta.me/2009/09/totd-106-connect-to-oracle-database-using-netbeans/&quot; rel=&quot;external nofollow&quot; xml:lang=&quot;en-us&quot;&gt;&lt;span xml:lang=&quot;es-cl&quot;&gt;conectar a&lt;/span&gt; Oracle &lt;span xml:lang=&quot;es-cl&quot;&gt;en&lt;/span&gt; Netbeans&lt;/a&gt; y más adelante &lt;a href=&quot;http://blog.arungupta.me/2009/10/totd-108-java-ee-6-web-application-jsf-2-0-jpa-2-0-ejb-3-1-using-oracle-netbeans-and-glassfish/&quot; xml:lang=&quot;en-us&quot;&gt;&lt;span xml:lang=&quot;es-cl&quot;&gt;crea una aplicación web elemental de lectura de base de datos en&lt;/span&gt; &lt;abbr title=&quot;Java Server Faces&quot;&gt;JSF&lt;/abbr&gt; 2.0 + &lt;abbr title=&quot;Java Persistence API&quot;&gt;JPA&lt;/abbr&gt; 2.0 + &lt;abbr title=&quot;Enterprise JavaBeans&quot;&gt;EJB&lt;/abbr&gt; 3.1&lt;/a&gt; con estas herramientas sobre &lt;span xml:lang=&quot;en-us&quot;&gt;Glassfish&lt;/span&gt; &lt;abbr title=&quot;versión 3&quot;&gt;v3&lt;/abbr&gt; (su favorito).&lt;/p&gt;

&lt;p&gt;Digo, para saber y tener algo más de experiencia de cómo son las cosas en las otras plataformas.&lt;/p&gt;

&lt;h3 xml:lang=&quot;en-us&quot;&gt;Links&lt;/h3&gt;

&lt;ol xml:lang=&quot;en-us&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://blog.arungupta.me/2009/09/totd-105-how-to-install-oracle-database-10g-on-mac-os-x-intel/&quot; rel=&quot;external nofollow&quot;&gt;&lt;abbr title=&quot;Tip Of The Day&quot;&gt;TOTD&lt;/abbr&gt; #106: How to install Oracle Database 10g on Mac OS X (Intel) ?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.arungupta.me/2009/09/totd-106-connect-to-oracle-database-using-netbeans/&quot; rel=&quot;external nofollow&quot;&gt;&lt;abbr title=&quot;Tip Of The Day&quot;&gt;TOTD&lt;/abbr&gt; #107: Connect to Oracle database using NetBeans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.arungupta.me/2009/10/totd-108-java-ee-6-web-application-jsf-2-0-jpa-2-0-ejb-3-1-using-oracle-netbeans-and-glassfish/&quot; rel=&quot;external nofollow&quot;&gt;&lt;abbr title=&quot;Tip Of The Day&quot;&gt;TOTD&lt;/abbr&gt; #108: Java EE 6 web application (&lt;abbr title=&quot;Java Server Faces&quot;&gt;JSF&lt;/abbr&gt; 2.0 + &lt;abbr title=&quot;Java Persistence API&quot;&gt;JPA&lt;/abbr&gt; 2.0 + &lt;abbr title=&quot;Enterprise JavaBeans&quot;&gt;EJB&lt;/abbr&gt; 3.1) using Oracle, NetBeans, and GlassFish&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/04/cmo-instal-postgresql-en-mac-os-x.php&quot;&gt;Cómo instalé &lt;span xml:lang=&quot;en&quot;&gt;PostgreSQL&lt;/span&gt; en &lt;span xml:lang=&quot;en-us&quot;&gt;Mac OS X&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/8612165064896798372/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/10/instalar-oracle-en-mac-os-x.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/8612165064896798372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/8612165064896798372'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/10/instalar-oracle-en-mac-os-x.php' title='Instalar Oracle DB en Mac OS X'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.2426699703563 -70.141715705394745</georss:point><georss:box>-20.2429844703563 -70.142171705394745 -20.242355470356298 -70.141259705394745</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-4564595477674354398</id><published>2009-09-30T15:23:00.003-04:00</published><updated>2009-09-30T15:43:58.934-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="tip"/><title type='text'>Tip: Esconder algunos usuarios de la ventana de Inicio de sesión en Mac OS X</title><content type='html'>&lt;p style=&quot;margin-top:-20px;float:right;&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/terminal.png&quot;
 width=&quot;128&quot;
 height=&quot;128&quot;&gt;Terminal
&lt;/object&gt;&lt;/p&gt;
&lt;p class=&quot;introduccion&quot;&gt;Desde Tiger y en los leopardos se pueden esconder los usuarios que no usas frecuentemente con un sencillo comando.&lt;/p&gt;

&lt;p&gt;Abre la utilidad de Terminal, tipeas lo siguiente:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add &lt;em&gt;postgres&lt;/em&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;... donde &lt;code&gt;postgres&lt;/code&gt; es el nombre corto del usuario que deseas esconder.&lt;/p&gt;

&lt;p&gt;Te pedirá la contraseña de administrador que es la misma que usas para abrir los candados del sistema.&lt;/p&gt;

&lt;p&gt;También puedes volver a ejecutar el comando para agregar otro usuario o puedes incluir varios usuarios en una sola sentencia.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add &lt;em&gt;usuario1&lt;/em&gt; &lt;em&gt;usuario2&lt;/em&gt; &lt;em&gt;usuario3&lt;/em&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Para hacer que vuelvan&lt;/h3&gt;
&lt;p&gt;Si quieres que vuelva a aparecer un usuario, puedes editar la &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;properties list&quot;&gt;plist&lt;/abbr&gt; con permisos de administrador o ejecutar el comando&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;sin ningún usuario y comenzar desde zero.&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.macworld.com/article/52200/2006/08/hidelogin.html&quot; xml:lang=&quot;en&quot; rel=&quot;external nofollow&quot;&gt;Hide user accounts in Tiger&#39;s login window&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.macosxhints.com/article.php?story=20080127172157404&quot; xml:lang=&quot;en&quot; rel=&quot;external nofollow&quot;&gt;Create completely hidden accounts in 10.5 and 10.4.11&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/4564595477674354398/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/09/tip-esconder-algunos-usuarios-de-la.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/4564595477674354398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/4564595477674354398'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/09/tip-esconder-algunos-usuarios-de-la.php' title='Tip: Esconder algunos usuarios de la ventana de Inicio de sesión en Mac OS X'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-2937199152025476803</id><published>2009-09-27T21:42:00.001-04:00</published><updated>2009-09-27T21:46:15.418-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>¡Emergencia! ¡Windows no me deja iniciar sesión y pide que lo active!</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Si tienes Windows ilegalmente o recién lo has comprado/instalado, una advertencia te aparece diciendo que tienes que activar la copia de Windows en 30 días. Si no lo haces, Windows se bloqueará y en ese caso, esto es lo que se puede hacer.&lt;/p&gt;

&lt;h3&gt;Si estás dentro de los 30 días y es una copia original&lt;/h3&gt;
&lt;p&gt;Hazle caso y valida tu copia de Windows. La clave de tu windows es la que viene incluida con el CD (espero que no la hayas botado a la basura) o generalmente viene pegada en un auto-adhesivo detrás del computador (la &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Central Processing Unit&quot;&gt;CPU&lt;/abbr&gt;, donde se ponen los &lt;abbr xml:lang=&quot;en&quot; title=&quot;Compact Discs&quot;&gt;CDs&lt;/abbr&gt;) o debajo del &lt;span xml:lang=&quot;en-us&quot;&gt;notebook&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;También puedes llamar a Microsoft para que te ayuden.&lt;/p&gt;

&lt;h3&gt;Si ya pasaron los 30 días y el computador se bloqueó&lt;/h3&gt;

&lt;p&gt;En un caso de urgencia, puedes volver a darle 30 días más de funcionamiento (y así recuperar tus archivos) de la siguiente manera:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Reinicia el computador (apagándolo).&lt;/li&gt;
&lt;li&gt;En el momento justo después que suene el primer timbre que hace sonar el computador cuando se enciende y antes que cargue Windows, presiona la tecla &lt;kbd&gt;F8&lt;/kbd&gt;.&lt;/li&gt;
&lt;li&gt;Te va a aparecer un menú negro. Selecciona la opción &quot;Modo Seguro&quot;.&lt;/li&gt;
&lt;li&gt;Inicia sesión con el usuario &quot;Administrador&quot;.&lt;ul&gt;&lt;li&gt;Puedes escribir la palabra &quot;Administrador&quot; directamente como nombre de usuario si aparece el cuadro de diálogo (se hace aparecer presionando 2 veces al mismo tiempo las teclas &lt;kbd&gt;control&lt;/kbd&gt; + &lt;kbd&gt;alt&lt;/kbd&gt; + &lt;kbd&gt;suprimir&lt;/kbd&gt;).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;/li&gt;
&lt;li&gt;La contraseña o te la sabes o la dejas en blanco.&lt;ol&gt;&lt;li&gt;Si no la recuerdas, jodiste o te reitero que generalmente no se pone nada en el campo de contraseña.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;Ya en el escritorio, con el mensaje &quot;Modo a prueba de fallos&quot; anunciado en todas partes, ejecuta &lt;code&gt;cmd&lt;/code&gt;.&lt;ul&gt;&lt;li&gt;Si no sabes cómo ejecutarlo, puedes presionar las teclas &lt;kbd&gt;Windows&lt;/kbd&gt; + &lt;kbd&gt;R&lt;/kbd&gt; para abrir el cuadro de diálogo de &quot;Ejecutar&quot; y escibir ahí &lt;code&gt;cmd&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;En la pantalla negra que aparece, escribir la siguiente sentencia y presionar &lt;kbd&gt;Enter&lt;/kbd&gt; o &lt;kbd&gt;return&lt;/kbd&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;slmgr -rearm&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Reiniciar.&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;Ese comando se puede ejecutar sólo 3 veces, así que anda pensando cómo resolverlo antes que se vuelva a bloquear.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/2937199152025476803/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/09/emergencia-windows-no-me-deja-iniciar.php#comment-form' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/2937199152025476803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/2937199152025476803'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/09/emergencia-windows-no-me-deja-iniciar.php' title='¡Emergencia! ¡Windows no me deja iniciar sesión y pide que lo active!'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.266041872353295 -70.124133825302124</georss:point><georss:box>-20.267299872353295 -70.125957825302123 -20.264783872353295 -70.122309825302125</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-217568545504476579</id><published>2009-09-27T19:37:00.004-04:00</published><updated>2009-10-19T12:02:20.543-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ie"/><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="tip"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Quictime 7 se apodera de los objetos PNG en Internet Explorer</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;&lt;span xml:lang=&quot;en-us&quot;&gt;Internet Explorer&lt;/span&gt; 8 incluye soporte para imágenes como objetos, pero cuando instalas &lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt; éste se apodera de algunos de ellos y eso se arregla de la siguiente manera en Windows xp.&lt;/p&gt;

&lt;p&gt;Ve a las preferencias de &lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt;.&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;520&quot; height=&quot;329&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/quicktime/object-ie-xp/panel_de_control_xp_quicktime.png&quot;&gt;Otras preferencias de Panel de control de &lt;span xml:lang=&quot;en-us&quot;&gt;Windows xp&lt;/span&gt; con la opción &lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt;.&lt;/object&gt;&lt;br /&gt;Si no aparece &lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt; en el panel de control, puedes seleccionar &quot;Ver otras opciones de Panel de Control&quot; en el panel lateral de &lt;span xml:lang=&quot;en-us&quot;&gt;Windows xp&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;En la ficha &quot;Explorador&quot; selecciona &quot;Ajustes &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Multipurpose Internet Mail Extensions&quot;&gt;MIME&lt;/abbr&gt;...&quot;.&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;416&quot; height=&quot;576&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/quicktime/object-ie-xp/preferencias_explorador_quicktime.png&quot;&gt;Ficha &quot;Explorador&quot; en las preferencias de &lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt; para &lt;span xml:lang=&quot;en-us&quot;&gt;Windows xp&lt;/span&gt;.&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Busca la opción &quot;Imagen &lt;abbr xml:lang=&quot;en&quot; title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/abbr&gt;&quot; y desmárcala.&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;396&quot; height=&quot;489&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/quicktime/object-ie-xp/MIME_explorador_quicktime.png&quot;&gt;Explorador de tipos &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Multipurpose Internet Mail Extensions&quot;&gt;MIME&lt;/abbr&gt; de &lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt; para &lt;span xml:lang=&quot;en-us&quot;&gt;Windows xp&lt;/span&gt; con la opción &quot;Imagen &lt;abbr xml:lang=&quot;en&quot; title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/abbr&gt;&quot; no marcada.&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;En &lt;span xml:lang=&quot;en-us&quot;&gt;Windows&lt;/span&gt; Vista y &lt;span xml:lang=&quot;en-us&quot;&gt;Windows&lt;/span&gt; 7 no sé cómo hacer lo mismo. A pesar de que las preferencias aparecen, en Windows xp &lt;strong&gt;se necesita tener permisos de Administrador para que todo esto funcione&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 xml:lang=&quot;en&quot;&gt;Links&lt;/h3&gt;
&lt;ul xml:lang=&quot;en&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://discussions.apple.com/thread.jspa?threadID=2157452&quot; rel=&quot;external nofollow&quot;&gt;Apple Discussions: Topic &quot;QuickTime &lt;abbr title=&quot;versus&quot;&gt;vs.&lt;/abbr&gt; &lt;abbr title=&quot;Tagged Image File Format&quot;&gt;TIFF&lt;/abbr&gt;&quot; in forum &quot;QuickTime for Windows&quot;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/09/tip-para-que-los-videos-de-quicktime-en.php&quot;&gt;Tip: Para que los videos de &lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt; en &lt;span xml:lang=&quot;en-us&quot;&gt;Windows&lt;/span&gt; no se vean verdes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/04/imagenes-como-objetos-e-ie6.php&quot;&gt;Imágenes como objetos en &lt;span xml:lang=&quot;en-us&quot;&gt;Internet Explorer&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/217568545504476579/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/09/quictime-7-se-apodera-de-los-objetos.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/217568545504476579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/217568545504476579'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/09/quictime-7-se-apodera-de-los-objetos.php' title='Quictime 7 se apodera de los objetos PNG en Internet Explorer'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.242614606378304 -70.141825675964355</georss:point><georss:box>-20.243243606378304 -70.142737675964355 -20.241985606378304 -70.140913675964356</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-3457222051224837349</id><published>2009-09-11T15:27:00.004-04:00</published><updated>2009-09-27T19:42:54.470-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="tip"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Tip: Para que los videos de Quicktime en Windows no se vean verdes</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Los usuarios de Windows xp con computadores medianamente antiguos, ven un rectángulo de color verde en lugar de video, ya sea en &lt;a href=&quot;http://www.apple.com/es/quicktime/&quot; rel=&quot;external nofollow&quot;&gt;&lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt;&lt;/a&gt;, en una página web con un video de &lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt; incluido o en &lt;a href=&quot;http://www.apple.com/la/itunes/overview/&quot; rel=&quot;external nofollow&quot;&gt;&lt;span xml:lang=&quot;en-us&quot;&gt;iTunes&lt;/span&gt; para &lt;span xml:lang=&quot;en-us&quot;&gt;Windows&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Esto se puede deber porque su tarjeta gráfica no tiene soporte &lt;span xml:lang=&quot;en-us&quot;&gt;DirectDraw&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Si este es tu caso, y no pierdes nada con probar, puedes hacer los siguiente:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?displaylang=es&amp;amp;FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&quot; rel=&quot;external nofollow&quot;&gt;Actualiza tu versión de &lt;span xml:lang=&quot;en-us&quot;&gt;DirectX&lt;/span&gt;&lt;/a&gt; que salió hoy (opcional).&lt;/p&gt;

&lt;p&gt;Ve al panel de Control de &lt;span xml:lang=&quot;en-us&quot;&gt;Windows&lt;/span&gt;, y selecciona la opción de &lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt;.&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;520&quot; height=&quot;346&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/quicktime/quicktime7-win/panelcontrol.png&quot;&gt;Vista por iconos del Panel de control de &lt;span xml:lang=&quot;en-us&quot;&gt;Windows&lt;/span&gt; 7 con la opción &lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt;.&lt;/object&gt;&lt;br /&gt;Si no aparece &lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt; en el panel de control, puedes seleccionar &quot;Ver otras opciones del panel de control&quot; en el panel lateral de &lt;span xml:lang=&quot;en-us&quot;&gt;Windows xp&lt;/span&gt; o la &quot;Vista clásica&quot;. Si usas &lt;span xml:lang=&quot;en-us&quot;&gt;Windows Vista&lt;/span&gt; o &lt;span xml:lang=&quot;en-us&quot;&gt;Windows&lt;/span&gt; 7, existe también la opción &quot;Ver por Iconos&quot; arribita.&lt;/p&gt;

&lt;p&gt;Después, en la ficha &quot;Avanzado&quot;, &lt;strong&gt;desmarca la opción &lt;q&gt;Activar aceleración &lt;a href=&quot;http://en.wikipedia.org/wiki/DirectDraw&quot; rel=&quot;external nofollow&quot; xml:lang=&quot;en-us&quot;&gt;DirectDraw&lt;/a&gt;&lt;/q&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object type=&quot;image/png&quot; width=&quot;426&quot; height=&quot;561&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/quicktime/quicktime7-win/directdraw.png&quot;&gt;Panel de control de Windows 8 con la opción Quicktime&lt;/object&gt;&lt;br /&gt;&lt;q&gt;Aceptar&lt;/q&gt;.&lt;/p&gt;

&lt;p&gt;Cierra &lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt;, el navegador o &lt;span xml:lang=&quot;en-us&quot;&gt;iTunes&lt;/span&gt;, vuélvelo a abrir y prueba si ahora sí se muestra el video.&lt;/p&gt;

&lt;p&gt;Ya, si no funciona, vuelve a repetir los pasos anteriores, pero ahora selecciona &lt;q&gt;Modalidad segura&lt;/q&gt;, donde no se utilizará la tarjeta gráfica y se le dará todo el trabajo al procesador (esta opción utiliza más recursos del sistema).&lt;/p&gt;

&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/09/quictime-7-se-apodera-de-los-objetos.php&quot;&gt;&lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt; 7 se apodera de los objetos &lt;abbr xml:lang=&quot;en&quot; title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/abbr&gt; en &lt;span xml:lang=&quot;en-us&quot;&gt;Internet Explorer&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/3457222051224837349/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/09/tip-para-que-los-videos-de-quicktime-en.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/3457222051224837349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/3457222051224837349'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/09/tip-para-que-los-videos-de-quicktime-en.php' title='Tip: Para que los videos de Quicktime en Windows no se vean verdes'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Alto Hospicio, Chile</georss:featurename><georss:point>-20.27892913540115 -70.096839666366577</georss:point><georss:box>-20.27955813540115 -70.097751666366577 -20.27830013540115 -70.095927666366578</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-2903044498984450434</id><published>2009-08-19T16:46:00.009-04:00</published><updated>2009-11-27T21:06:19.885-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="codigo"/><category scheme="http://www.blogger.com/atom/ns#" term="guliqq"/><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="netbeans"/><category scheme="http://www.blogger.com/atom/ns#" term="sun"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Exportar a formato Excel con JSP de forma bien básica (TSV)</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;En este tutorial voy a mostrar la manera de generar un archivo compatible con Microsoft Excel que consiste en valores separados por espacios tabuladores muy elemental y sin gráficos o estilos.&lt;/p&gt;

&lt;p&gt;Primero hay que partir diciendo qué opciones de formatos compatibles con Excel hay:&lt;/p&gt;

&lt;dl&gt;&lt;dt&gt;&lt;abbr xml:lang=&quot;en&quot; title=&quot;Comma Separated Values&quot;&gt;CSV&lt;/abbr&gt;&lt;/dt&gt;
&lt;dd&gt;Es el más conocido, y consiste en un archivo de texto plano, generalmente con la extención &lt;code&gt;.csv&lt;/code&gt; donde los valores de cada celda van separados por una coma (,) en el caso de las columnas, y un salto de línea para las filas.&lt;/dd&gt;
&lt;dt&gt;&lt;abbr xml:lang=&quot;en&quot; title=&quot;Tab Separated Values&quot;&gt;TSV&lt;/abbr&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;abbr xml:lang=&quot;en&quot; title=&quot;Tab Separated Values&quot;&gt;TSV&lt;/abbr&gt; es una variación al anterior &lt;abbr xml:lang=&quot;en&quot; title=&quot;Comma Separated Values&quot;&gt;CSV&lt;/abbr&gt;, donde las columnas van separadas por un espacio tabulador y las filas por un salto de línea. Esto permite que se puedan introducir celdas con valores que incluyan una coma y no sean confundidas por un salto de columna, por ejemplo.&lt;/dd&gt;
&lt;dt&gt;&lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Excel Spreadheet&quot;&gt;XLS&lt;/abbr&gt;&lt;/dt&gt;
&lt;dd&gt;El formato Microsoft Excel tradicional que es un archivo binario para Windows donde se guardan en hojas, gráficos y macros. Mucho tiempo su especificación fue cerrada, pero desde que se comenzó a documentar el formato con ingeniería inversa y debido a las presiones de las cortes para aceptar su formato como un estándar, Microsoft se vio obligada a publicar su estructura de funcionamiento bien particular.&lt;/dd&gt;
&lt;dt&gt;&lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Excel Spreadsheet XML Syntax&quot;&gt;XLSX&lt;/abbr&gt;&lt;/dt&gt;
&lt;dd&gt;Esta es la última especificación &lt;span xml:lang=&quot;en-us&quot;&gt;Office Open &lt;abbr  title=&quot;eXtensible Markup Language&quot;&gt;XML&lt;/abbr&gt;&lt;/span&gt; que Microsoft no sé cómo logró estandarizar, y que consiste en una serie de archivos &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;eXtensible Markup Language&quot;&gt;XML&lt;/abbr&gt; y otros, organizados en una carpeta todo comprimido en un archivo ZIP (al igual que el estándar &lt;span xml:lang=&quot;en-us&quot;&gt;OpenDocument&lt;/span&gt; que también es soportado por &lt;span xml:lang=&quot;en-us&quot;&gt;Microsoft Office 2007&lt;/span&gt; pero que no es de propiedad de Microsoft).&lt;/dd&gt;&lt;/dl&gt;
&lt;p&gt;Y &lt;a href=&quot;http://en.wikipedia.org/wiki/Microsoft_Excel#File_formats&quot; rel=&quot;external nofollow&quot;&gt;otros más&lt;/a&gt; menos importantes.&lt;/p&gt;


&lt;h3&gt;El formato&lt;/h3&gt;

&lt;p&gt;El formato que voy a exportar desde el &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Java Server Page&quot;&gt;JSP&lt;/abbr&gt; en este tutorial es el &lt;abbr xml:lang=&quot;en&quot; title=&quot;Tab Separated Values&quot;&gt;TSV&lt;/abbr&gt;, pero con extensión &lt;code&gt;.xls&lt;/code&gt;. El archivo siguiente:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Uno Due Tre Quattro
Uno Dos Tres Cuatro
One Two
Ichi Ni San Shi
Odin Dva Tri&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Se vería así en la planilla de cálculo:&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;A&lt;/th&gt;&lt;th&gt;B&lt;/th&gt;&lt;th&gt;C&lt;/th&gt;&lt;th&gt;D&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;1&lt;/th&gt;&lt;td&gt;Uno&lt;/td&gt;&lt;td&gt;Due&lt;/td&gt;&lt;td&gt;Tre&lt;/td&gt;&lt;td&gt;Quattro&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;2&lt;/th&gt;&lt;td&gt;Uno&lt;/td&gt;&lt;td&gt;Dos&lt;/td&gt;&lt;td&gt;Tres&lt;/td&gt;&lt;td&gt;Cuatro&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;3&lt;/th&gt;&lt;td&gt;One&lt;/td&gt;&lt;td&gt;Two&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;4&lt;/th&gt;&lt;td&gt;Ichi&lt;/td&gt;&lt;td&gt;Ni&lt;/td&gt;&lt;td&gt;San&lt;/td&gt;&lt;td&gt;Shi&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;5&lt;/th&gt;&lt;td&gt;Odin&lt;/td&gt;&lt;td&gt;Dva&lt;/td&gt;&lt;td&gt;Tri&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

&lt;h3&gt;La librería&lt;/h3&gt;

&lt;p&gt;Yo encontré una librería de etiquetas para generar estos archivos y así evitarme el problema de generar el caracter de tabulación y todos los espacios (&lt;span xml:lang=&quot;en&quot;&gt;whitespaces&lt;/span&gt;) que se generan.&lt;/p&gt;

&lt;h4&gt;Descarga&lt;/h4&gt;
&lt;p&gt;La página para descargar el archivo &lt;a href=&quot;http://www.servletsuite.com/servlets/exceltag.jar&quot; rel=&quot;external nofollow&quot;&gt;exceltag.jar&lt;/a&gt; es &lt;a href=&quot;http://www.servletsuite.com/servlets/exceltag.htm&quot;&gt;http://www.servletsuite.com/servlets/exceltag.htm&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;Instalación&lt;/h4&gt;
&lt;p&gt;Para instalar la librería en &lt;a href=&quot;http://www.netbeans.org/&quot; rel=&quot;external nofollow&quot; xml:lang=&quot;en-us&quot;&gt;Netbeans&lt;/a&gt;, es igual que en todas las librerías. Se va a las propiedades del proyecto,&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/jsp2xls/tsv/librerias.png&quot;
 width=&quot;516&quot;
 height=&quot;349&quot;&gt; Sección librerías del panel de Propiedades del proyecto en Netbeans
&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;elegimos Agregar &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java ARchive&quot;&gt;JAR&lt;/abbr&gt;/Carpeta (o &lt;span xml:lang=&quot;en&quot;&gt;Add &lt;abbr title=&quot;Java ARchive&quot;&gt;JAR&lt;/abbr&gt;/Folder&lt;/span&gt;); buscamos el archivo exceltag.jar recién descargado y seleccionamos &lt;q&gt;Elegir&lt;/q&gt;.&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/jsp2xls/tsv/agregarJAR.png&quot;
 width=&quot;516&quot;
 height=&quot;417&quot;&gt; Copiando archivo exceltag.jar al proyecto con Netbeans
&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;&lt;q&gt;Aceptar&lt;/q&gt;&lt;/p&gt;

&lt;h3&gt;El modo de uso&lt;/h3&gt;
&lt;p&gt;Ahora que está la librería instalada, hacemos uso de ella de la siguiente forma:&lt;/p&gt;
&lt;h4&gt;Hola, mundo&lt;/h4&gt;
&lt;p&gt;Para el primer ejemplo, voy a crear un nuevo archivo llamado &lt;code&gt;Numberwang.jspx&lt;/code&gt; como de costumbre:&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/jsp2xls/tsv/NuevoJSPX.png&quot;
 width=&quot;516&quot;
 height=&quot;450&quot;&gt; Creando nuevo archivo &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Java Server Page&quot;&gt;JSP&lt;/abbr&gt; llamado &lt;code&gt;Numberwang&lt;/code&gt; con sintaxis &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;eXtensible Markup Language&quot;&gt;XML&lt;/abbr&gt; en Netbeans
&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Y el código con sintaxis &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;eXtensible Markup Language&quot;&gt;XML&lt;/abbr&gt; sería...&lt;/p&gt;

&lt;h5&gt;Numberwang.jspx&lt;/h5&gt;

&lt;pre&gt;&lt;code class=&quot;xml jspx&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&amp;lt;!-- 
    Document   : Numberwang
    Created on : 15-ago-2009, 9:58:09
    Author     : ooscarr
--&gt;
&amp;lt;jsp:root xmlns:jsp=&quot;http://java.sun.com/JSP/Page&quot;
  xmlns:ms=&quot;http://www.servletsuite.com/servlets/exceltag&quot;
  version=&quot;2.0&quot;&gt;

 &amp;lt;jsp:directive.page contentType=&quot;application/vnd.ms-excel;charset=UTF-8&quot;
          pageEncoding=&quot;UTF-8&quot;/&gt;

 &amp;lt;ms:Excel&gt;
  &amp;lt;ms:cell&gt;Uno&amp;lt;/ms:cell&gt;
  &amp;lt;ms:cell&gt;Due&amp;lt;/ms:cell&gt;
  &amp;lt;ms:cell&gt;Tre&amp;lt;/ms:cell&gt;
  &amp;lt;ms:cell&gt;Quattro&amp;lt;/ms:cell&gt;
  &amp;lt;ms:row/&gt;
  &amp;lt;ms:cell&gt;Uno&amp;lt;/ms:cell&gt;
  &amp;lt;ms:cell&gt;Dos&amp;lt;/ms:cell&gt;
  &amp;lt;ms:cell&gt;Tres&amp;lt;/ms:cell&gt;
  &amp;lt;ms:cell&gt;Cuatro&amp;lt;/ms:cell&gt;
  &amp;lt;ms:row/&gt;
  &amp;lt;ms:cell&gt;One&amp;lt;/ms:cell&gt;
  &amp;lt;ms:cell&gt;Two&amp;lt;/ms:cell&gt;
  &amp;lt;ms:row/&gt;
  &amp;lt;ms:cell&gt;Ichi&amp;lt;/ms:cell&gt;
  &amp;lt;ms:cell&gt;Ni&amp;lt;/ms:cell&gt;
  &amp;lt;ms:cell&gt;San&amp;lt;/ms:cell&gt;
  &amp;lt;ms:cell&gt;Shi&amp;lt;/ms:cell&gt;
  &amp;lt;ms:row/&gt;
  &amp;lt;ms:cell&gt;Odin&amp;lt;/ms:cell&gt;
  &amp;lt;ms:cell&gt;Dva&amp;lt;/ms:cell&gt;
  &amp;lt;ms:cell&gt;Tri&amp;lt;/ms:cell&gt;
 &amp;lt;/ms:Excel&gt;

&amp;lt;/jsp:root&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h5&gt;Resultado&lt;/h5&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/jsp2xls/tsv/operaGuardar.png&quot;
 width=&quot;512&quot;
 height=&quot;285&quot;&gt; &lt;span xml:lang=&quot;en&quot;&gt;Browser&lt;/span&gt; dando la opción de Guardar o Abrir el archivo Numberwang.xls con OpenOffice.org
&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Cuando visite la página Numberwang.jspx, el navegador reconocerá el &lt;code&gt;contentType=&quot;application/vnd.ms-excel;charset=UTF-8&quot;&lt;/code&gt; y dará la opción de descargarlo o, en ciertos casos, en Windows, desplegará la planilla de cálculo dentro de la ventana del &lt;span xml:lang=&quot;en&quot;&gt;browser&lt;/span&gt;.&lt;/p&gt;

&lt;h4&gt;Nombre de archivo personalizado&lt;/h4&gt;

&lt;p&gt;Para elegir otro nombre para el archivo Excel, basta agregar la siguiente línea en el principio del documento:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;xml jspx&quot;&gt;&amp;lt;jsp:directive.page contentType=&quot;application/vnd.ms-excel;charset=UTF-8&quot;
          pageEncoding=&quot;UTF-8&quot;/&gt;
&lt;strong&gt;&amp;lt;jsp:scriptlet&gt;
 response.setHeader(&quot;Content-Disposition&quot;,&quot;attachment;filename=nombre_de_archivo.xls&quot;);
&amp;lt;/jsp:scriptlet&gt;&lt;/strong&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;h4&gt;Otro ejemplo con base de datos&lt;/h4&gt;
&lt;p&gt;Un último ejemplo que lee los datos de la base de datos, sería:&lt;/p&gt;

&lt;h5&gt;Productos.jspx&lt;/h5&gt;
&lt;pre&gt;&lt;code class=&quot;xml jspx&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&amp;lt;jsp:root xmlns:jsp=&quot;http://java.sun.com/JSP/Page&quot;
     xmlns:c=&quot;http://java.sun.com/jsp/jstl/core&quot;
     xmlns:sql=&quot;http://java.sun.com/jsp/jstl/sql&quot;
     xmlns:ms=&quot;http://www.servletsuite.com/servlets/exceltag&quot;
     version=&quot;2.0&quot;&gt;

&amp;lt;jsp:directive.page contentType=&quot;application/vnd.ms-excel;charset=UTF-8&quot;
          pageEncoding=&quot;UTF-8&quot;/&gt;

&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/09/conectar-la-base-de-datos-desde-jsp.php&quot;&gt;&amp;lt;jsp:directive.include file=&quot;/WEB-INF/jspf/conexion.jspf&quot;/&gt;&lt;/a&gt;
&amp;lt;c:catch var=&quot;excepcion&quot;&gt;
 &amp;lt;sql:transaction dataSource=&quot;${bdatos}&quot;&gt;
  &amp;lt;sql:query var=&quot;productos&quot;&gt;
   SELECT nombre_prod AS nombre,precio AS precio FROM inventario_productos;
  &amp;lt;/sql:query&gt;
 &amp;lt;/sql:transaction&gt;
&amp;lt;/c:catch&gt;
&amp;lt;c:if test=&quot;${empty excepcion}&quot;&gt;

 &amp;lt;!-- Si encontró productos --&gt;
 &amp;lt;c:if test=&quot;${productos.rowCount&gt;0}&quot;&gt;
  &amp;lt;!-- Forma la tabla --&gt;
  &amp;lt;ms:Excel&gt;
   &amp;lt;ms:cell&gt;Producto&amp;lt;/ms:cell&gt;
   &amp;lt;ms:cell&gt;Precio&amp;lt;/ms:cell&gt;

   &amp;lt;!-- Llena la tabla --&gt;
   &amp;lt;c:forEach items=&quot;${productos.rows}&quot; var=&quot;producto&quot; varStatus =&quot;status&quot;&gt;
    &amp;lt;ms:row/&gt;
    &amp;lt;ms:cell&gt;${producto.nombre}&amp;lt;/ms:cell&gt;
    &amp;lt;ms:cell&gt;${producto.precio}&amp;lt;/ms:cell&gt;

    &amp;lt;!-- En la última fila --&gt;
    &amp;lt;c:if test=&quot;${status.last}&quot;&gt;
     &amp;lt;ms:row/&gt;
     &amp;lt;ms:cell&gt;&amp;lt;c:out value=&quot; &quot;/&gt;&amp;lt;/ms:cell&gt;
     &amp;lt;!-- Se pueden ingresar fórmulas --&gt;
     &amp;lt;ms:cell&gt;=SUM(B2:B${status.index+2})&amp;lt;/ms:cell&gt;
    &amp;lt;/c:if&gt;
   &amp;lt;/c:forEach&gt;
  &amp;lt;/ms:Excel&gt;
 &amp;lt;/c:if&gt;

&amp;lt;/c:if&gt;
 
&amp;lt;/jsp:root&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h5&gt;Resultado leído de la base de datos&lt;/h5&gt;
&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;A&lt;/th&gt;
&lt;th&gt;B&lt;/th&gt;
&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;1&lt;/th&gt;&lt;td&gt;Producto&lt;/td&gt;&lt;td&gt;Precio&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;2&lt;/th&gt;&lt;td&gt;Lápiz&lt;/td&gt;&lt;td&gt;200&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;3&lt;/th&gt;&lt;td&gt;Cuaderno&lt;/td&gt;&lt;td&gt;1000&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;4&lt;/th&gt;&lt;td&gt; &lt;/td&gt;&lt;td title=&quot;=SUM(B2:B3)&quot;&gt;1200&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;¿Qué opinan las aplicaciones de planillas de cálculo?&lt;/h3&gt;
&lt;p&gt;Cuando se abre el archivo excel generado con una apliación de planillas de cálculo, estos son algunos de los resultados:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th xml:lang=&quot;en&quot;&gt;Software&lt;/th&gt;&lt;th&gt;Resultado&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Microsoft Office&lt;/td&gt;&lt;td&gt;No dice nada y abre el archivo correctamente.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;OpenOffice.org&lt;/td&gt;&lt;td&gt;Aparece un asistente de importación con una vista previa y si no se modifica ninguna opción, abre la planilla correctamente.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;iWork Numbers&lt;/td&gt;&lt;td&gt;Aparece un pequeño aviso de que no es un formato Excel válido, pero lo muestra correctamente.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Google Docs&lt;/td&gt;&lt;td&gt;Produce un error. A la fecha, no está preparado para el formato.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Microsoft_Excel#File_formats&quot; xml:lang=&quot;en&quot; rel=&quot;external nofollow&quot;&gt;Microsoft Excel file formats - Wikipedia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.servletsuite.com/servlets/exceltag.htm&quot; xml:lang=&quot;en&quot; rel=&quot;external nofollow&quot;&gt;MS Excel taglib ver. 1.3&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/2903044498984450434/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/08/exportar-formato-excel-con-jsp-de-forma.php#comment-form' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/2903044498984450434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/2903044498984450434'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/08/exportar-formato-excel-con-jsp-de-forma.php' title='Exportar a formato Excel con JSP de forma bien básica (TSV)'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.242584407836535 -70.141831040382385</georss:point><georss:box>-20.243213407836535 -70.142743040382385 -20.241955407836535 -70.140919040382386</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-8385092842109880366</id><published>2009-08-02T23:34:00.004-04:00</published><updated>2009-08-04T15:04:09.174-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="guliqq"/><category scheme="http://www.blogger.com/atom/ns#" term="sun"/><category scheme="http://www.blogger.com/atom/ns#" term="tutorial"/><title type='text'>Cómo instalar un .war en Tomcat desde la página Tomcat manager</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Para una tarea tuve que hacer un manual de cómo instalar un archivo &lt;code&gt;.&lt;acronym xml:lang=&quot;en&quot; title=&quot;Web Application Archive&quot;&gt;war&lt;/acronym&gt;&lt;/code&gt; en el viejo Tomcat. Super sencillo y básico, no se asombren.&lt;/p&gt;
&lt;p&gt;No a la guerra.&lt;/p&gt;
&lt;blockquote cite=&quot;http://es.wikipedia.org/wiki/WAR_(archivo)&quot;&gt;&lt;p&gt;En computación, un archivo &lt;acronym xml:lang=&quot;en&quot; title=&quot;Web Application Archive&quot;&gt;WAR&lt;/acronym&gt; (el cual sus iníciales significan “archivo de aplicación web”) es un archivo &lt;abbr xml:lang=&quot;en&quot; title=&quot;Java ARchive&quot;&gt;JAR&lt;/abbr&gt; utilizado para distribuir una colección de JavaServer Pages, servlets, clases Java, archivos &lt;abbr xml:lang=&quot;en&quot; title=&quot;eXtensible Meta Language&quot;&gt;XML&lt;/abbr&gt;, librerías de tags y páginas web estáticas (&lt;abbr xml:lang=&quot;en&quot; title=&quot;HyperText Meta Language&quot;&gt;HTML&lt;/abbr&gt; y archivos relacionados) que juntos constituyen una aplicación web.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;h3&gt;1. Abrir la página inicial de Tomcat&lt;/h3&gt;
&lt;p&gt;Tomcat manager viene incluido con tomcat cuando se instala, para acceder a él se ingresa a la página del servidor donde está ejecutándose Tomcat.&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/ssh-tuneles/tomcat-home.png&quot;
 width=&quot;500&quot;
 height=&quot;268&quot;&gt;Página de &lt;code&gt;$CATALINA_HOME&lt;/code&gt; de Tomcat desplegándose en la &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/acronym&gt; &lt;code&gt;http://localhost:2348/&lt;/code&gt;
&lt;/object&gt;&lt;br /&gt;Usualmente se encuentra en el &lt;code&gt;http://localhost:8080/&lt;/code&gt; o en el mismo puerto del servidor externo.&lt;/p&gt;

&lt;h3&gt;2. Entrar a Tomcat Manager&lt;/h3&gt;
&lt;p&gt;En dicha página en la columna de Administración izquierda se encuentra un link a Tomcat Manager&lt;/p&gt;

&lt;p&gt;Inmediatamente preguntará por la constraseña, que por defecto es&lt;/p&gt;
&lt;dl&gt;&lt;dt&gt;usuario&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;tomcat&lt;/code&gt;&lt;/dd&gt;
&lt;dt&gt;contraseña&lt;/dt&gt;&lt;dd&gt;&lt;code&gt;tomcat&lt;/code&gt;&lt;/dd&gt;&lt;/dl&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/tomcat-manager/Picture 1.png&quot;
 width=&quot;550&quot;
 height=&quot;485&quot;&gt;Página de Tomcat Manager típica
&lt;/object&gt;&lt;br /&gt;En la página de Tomcat manager, aparece una lista con todas las aplicaciónes que Tomcat tiene instaladas o ejecutándose (incluyéndose a sí mismo).&lt;/p&gt;

&lt;h3&gt;3. Desplegar aplicación&lt;/h3&gt;

&lt;p&gt;Casi al final, aparece un formulario llamado &lt;q&gt;Desplegar&lt;/q&gt;.&lt;/p&gt;
&lt;p&gt;En la parte donde dice &lt;q&gt;Seleccione archivo WAR a deplegar&lt;/q&gt;, es cosa se buscar el archivo &lt;acronym xml:lang=&quot;en&quot; title=&quot;Web Application Archive&quot;&gt;WAR&lt;/acronym&gt;, subirlo al servidor con el botón &lt;q&gt;Desplegar&lt;/q&gt;...&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/tomcat-manager/Picture 2.png&quot;
 width=&quot;500&quot;
 height=&quot;216&quot;&gt;Formulario de despliegue de aplicación web en Tomcat Manager típico
&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Y si no había otra aplicación con el mismo contexto, debería aparecer un mensaje de &lt;code&gt;OK&lt;/code&gt; en la parte superior de la página al terminar la transferencia.&lt;/p&gt;
&lt;h3&gt;Advertencias&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;No todos los &lt;code&gt;.&lt;acronym xml:lang=&quot;en&quot; title=&quot;Web Application Archive&quot;&gt;war&lt;/acronym&gt;&lt;/code&gt; funcionan en todas las versiones de Tomcat&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/_(archivo)&quot; rel=&quot;external nofollow&quot;&gt;&lt;acronym xml:lang=&quot;en&quot; title=&quot;Web Application Archive&quot;&gt;WAR&lt;/acronym&gt; (archivo) - Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/8385092842109880366/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/08/como-instalar-un-war-en-tomcat-desde-la.php#comment-form' title='1 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/8385092842109880366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/8385092842109880366'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/08/como-instalar-un-war-en-tomcat-desde-la.php' title='Cómo instalar un .war en Tomcat desde la página Tomcat manager'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.242675003444226 -70.141825675964355</georss:point><georss:box>-20.243304003444226 -70.142737675964355 -20.242046003444226 -70.140913675964356</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-1043541737109000222</id><published>2009-07-27T20:53:00.001-04:00</published><updated>2009-07-27T20:57:38.483-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><title type='text'>Interfaz gráfica para los túneles SSH en Mac OS</title><content type='html'>&lt;p style=&quot;margin-top:-20px;float:right;&quot;&gt;&lt;a href=&quot;http://projects.tynsoe.org/en/stm/&quot; rel=&quot;external nofollow&quot; xml:lang=&quot;en-uk&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/ssh-tuneles/stm_gros.png&quot;
 width=&quot;128&quot;
 height=&quot;128&quot;&gt;&lt;abbr title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt; Tunnel Manager
&lt;/object&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;introduccion&quot;&gt;Para no complicarnos con &lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/07/accediendo-otro-servidor-de-una-red-por.php&quot;&gt;feos comandos en el Terminal a la hora de conectarnos a un túnel &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt;&lt;/a&gt;, existe una aplicación gratuita para ejecutar los comandos &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt; necesarios.&lt;/p&gt;
&lt;p&gt;La aplicación para conectarse a los túneles se llama &lt;a href=&quot;http://projects.tynsoe.org/en/stm/&quot; rel=&quot;external nofollow&quot; xml:lang=&quot;en-uk&quot;&gt;&lt;abbr title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt; Tunnel Manager&lt;/a&gt; y es gratuita. Está hasta el proyecto Xcode para compilarlo uno mismo si uno quiere.&lt;/p&gt;
&lt;h3&gt;Configuración&lt;/h3&gt;
&lt;p&gt;Para configurarlo, es re-fácil. Uno entra a las Preferencias, agrega un túnel a la lista izquierda y llena los campos.&lt;/p&gt;
&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/ssh-tuneles/stm-serrano.png&quot;
 width=&quot;500&quot;
 height=&quot;485&quot;&gt;Captura de pantalla del panel de configuración de la aplicación&lt;/object&gt;&lt;br /&gt;Esto es equivalente al comando &lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/07/accediendo-otro-servidor-de-una-red-por.php&quot;&gt;&lt;code&gt;ssh -N -p 22 -c 3des ooscarr@acinfo.unap.cl -L 2348/serrano.unap.cl/8080&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Luego se abre la lista de túneles, y se presionan los botoncitos &lt;span xml:lang=&quot;en-us&quot;&gt;Play&lt;/span&gt; para que corran los comandos.&lt;/p&gt;
&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/ssh-tuneles/stm-encendidos.png&quot;
 width=&quot;295&quot;
 height=&quot;195&quot;&gt;Captura de pantalla de la aplicación ejecutándose&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;También lo puedes &lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/07/accediendo-otro-servidor-de-una-red-por.php&quot;&gt;hacer de la forma seria con comandos en el Terminal&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://projects.tynsoe.org/en/stm/&quot; xml:lang=&quot;en-uk&quot; rel=&quot;external nofollow&quot;&gt;&lt;abbr title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt; Tunnel Manager&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/07/accediendo-otro-servidor-de-una-red-por.php&quot;&gt;Accediendo a otro servidor de una red por &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/1043541737109000222/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/07/interfaz-grafica-para-los-tuneles-ssh.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/1043541737109000222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/1043541737109000222'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/07/interfaz-grafica-para-los-tuneles-ssh.php' title='Interfaz gráfica para los túneles SSH en Mac OS'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.242614606378304 -70.141729116439819</georss:point><georss:box>-20.243243606378304 -70.142641116439819 -20.241985606378304 -70.14081711643982</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-7546144323233315499</id><published>2009-07-27T18:52:00.010-04:00</published><updated>2009-08-04T15:07:45.823-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="guliqq"/><category scheme="http://www.blogger.com/atom/ns#" term="redes"/><category scheme="http://www.blogger.com/atom/ns#" term="sun"/><category scheme="http://www.blogger.com/atom/ns#" term="tip"/><category scheme="http://www.blogger.com/atom/ns#" term="unix"/><title type='text'>Accediendo a otro servidor de una red por SSH</title><content type='html'>&lt;p style=&quot;margin-top:-20px;float:right;&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/terminal.png&quot;
 width=&quot;128&quot;
 height=&quot;128&quot;&gt;Terminal
&lt;/object&gt;&lt;/p&gt;&lt;p class=&quot;introduccion&quot;&gt;El comando para conectarse al puerto del servidor que está en la Universidad y que no podemos acceder desde la casa (a través de otro servidor dentro de la red).&lt;/p&gt;
&lt;h3&gt;Primer caso&lt;/h3&gt;
&lt;p&gt;En la Universidad tenemos un servidor Windows 2003 que ofrece el servicio de Tomcat por el puerto 8080 como es normal. &lt;code&gt;http://serrano.unap.cl:8080/&lt;/code&gt;. Pero la red de la Universidad tiene el puerto 8080 bloqueado para afuera de la &lt;acronym xml:lang=&quot;es-cl&quot; title=&quot;Universodad&quot;&gt;U&lt;/acronym&gt; y no podemos conectarnos desde la casa.&lt;/p&gt;
&lt;p&gt;Por medio de &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt;, nosotros nos conectamos a otro servidor con Linux que está en la misma red, &lt;code&gt;http://acinfo.unap.cl/&lt;/code&gt;, por el puerto de siempre, el 22, y a través de esta conexión accedemos al servidor del puerto 8080.&lt;/p&gt;
&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/gif&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/ssh-tuneles/ssh-local-acinfo-serrano.gif&quot;
 width=&quot;364&quot;
 height=&quot;191&quot;&gt;Diagrama con un notebook (&lt;code&gt;localhost:2348&lt;/code&gt;) conectándose a un servidor con linux (&lt;code&gt;acinfo.unap.cl:22&lt;/code&gt;) que a su vez está conectado a un servidor con Tomcat (&lt;code&gt;serrano.unap.cl:8080&lt;/code&gt;)
&lt;/object&gt;&lt;br /&gt;Algo más o menos así.&lt;/p&gt;

&lt;p&gt;En el Terminal, esto se hace con el comando&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh ooscarr@acinfo.unap.cl -L 2348:serrano.unap.cl:8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ó&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh ooscarr@acinfo.unap.cl -L 2348/serrano.unap.cl/8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reemplazamos el &lt;code&gt;ooscarr&lt;/code&gt; por tu nombre de usuario, por supuesto, y así accedemos al puerto 8080 del otro servidor como si estuviéramos en la mismísima &lt;acronym xml:lang=&quot;es-cl&quot; title=&quot;Universodad&quot;&gt;U&lt;/acronym&gt;.&lt;/p&gt;
&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/ssh-tuneles/tomcat-home.png&quot;
 width=&quot;500&quot;
 height=&quot;268&quot;&gt;Página de &lt;code&gt;$CATALINA_HOME&lt;/code&gt; de Tomcat desplegándose en la &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/acronym&gt; &lt;code&gt;http://localhost:2348/&lt;/code&gt;
&lt;/object&gt;&lt;br /&gt;¡A través de la dirección &lt;code&gt;http://localhost:2348/&lt;/code&gt; accedemos a &lt;code&gt;http://serrano.unap.cl:8080/&lt;/code&gt;!&lt;/p&gt;

&lt;p&gt;Fin.&lt;/p&gt;

&lt;h3&gt;No, mentira. Segundo caso&lt;/h3&gt;
&lt;p&gt;Pongámonos en un segundo caso. Acaban de instalar Tomcat en el servidor &lt;code&gt;acinfo.unap.cl:8080&lt;/code&gt; así que ya no hace falta conectarse al &lt;code&gt;serrano.unap.cl:8080&lt;/code&gt;. El puerto 8080 del servidor también está bloqueado,&lt;/p&gt;
&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/gif&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/ssh-tuneles/ssh-local-acinfo.gif&quot;
 width=&quot;288&quot;
 height=&quot;87&quot;&gt;Diagrama con un notebook (&lt;code&gt;localhost:2348&lt;/code&gt;) conectándose a un servidor con linux (&lt;code&gt;acinfo.unap.cl:8080&lt;/code&gt;)
&lt;/object&gt;&lt;br /&gt;Ahora sin el serrano.&lt;/p&gt;
&lt;p&gt;En este caso, bastaría cambiar &lt;code&gt;serrano.unap.cl&lt;/code&gt; por &lt;code&gt;localhost&lt;/code&gt; ó &lt;code&gt;acinfo.unap.cl&lt;/code&gt; así&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh ooscarr@acinfo.unap.cl -L 2348:localhost:8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ó&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh ooscarr@acinfo.unap.cl -L 2348:acinfo.unap.cl:8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ó&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh ooscarr@acinfo.unap.cl -L 2348/acinfo.unap.cl/8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ó&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh -N -p 22 ooscarr@acinfo.unap.cl -L 2348:acinfo.unap.cl:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Y el mismo resultado.&lt;/p&gt;
&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/ssh-tuneles/tomcat-home.png&quot;
 width=&quot;500&quot;
 height=&quot;268&quot;&gt;Página de &lt;code&gt;$CATALINA_HOME&lt;/code&gt; de Tomcat desplegándose en la &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Uniform Resource Locator&quot;&gt;URL&lt;/acronym&gt; &lt;code&gt;http://localhost:2348/&lt;/code&gt;
&lt;/object&gt;&lt;br /&gt;¡A través de la dirección &lt;code&gt;http://localhost:2348/&lt;/code&gt; accedemos a &lt;code&gt;http://acinfo.unap.cl:8080/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Podríamos conectarnos a ambos servidores, utilizando un puerto distinto al 2348 para el segundo servidor.&lt;/p&gt;

&lt;h3&gt;¿Y si uso Windows, cómo lo hago?&lt;/h3&gt;
&lt;p&gt;Bueno, para esos casos, mi amigo Fernando (el Puma) hizo un &lt;a href=&quot;http://fmedina.wordpress.com/2007/07/30/mini-micro-tutorial-de-uso-de-tuneles-con-ssh/&quot; xml:lang=&quot;es-cl&quot; rel=&quot;external nofollow co-worker&quot;&gt;mini-tutorial en su blog&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.axllent.org/docs/security_and_encryption/ssh_tunnels#toc_6&quot; xml:lang=&quot;en&quot; rel=&quot;external nofollow&quot;&gt;&lt;abbr title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt; Tunnels: &lt;acronym title=&quot;Virtual Network Computing&quot;&gt;VNC&lt;/acronym&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fmedina.wordpress.com/2007/07/30/mini-micro-tutorial-de-uso-de-tuneles-con-ssh/&quot; xml:lang=&quot;es-cl&quot; rel=&quot;external nofollow co-worker&quot;&gt;Mini micro tutorial de uso de túneles con &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Secure Shell&quot;&gt;ssh&lt;/abbr&gt; - pumex blog&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/07/interfaz-grafica-para-los-tuneles-ssh.php&quot;&gt;Interfaz gráfica para los túneles &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;Secure Shell&quot;&gt;SSH&lt;/abbr&gt; en Mac OS&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/7546144323233315499/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/07/accediendo-otro-servidor-de-una-red-por.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/7546144323233315499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/7546144323233315499'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/07/accediendo-otro-servidor-de-una-red-por.php' title='Accediendo a otro servidor de una red por SSH'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.242629705646983 -70.141777396202087</georss:point><georss:box>-20.243258705646983 -70.142689396202087 -20.242000705646984 -70.140865396202088</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-2390205732101253477</id><published>2009-05-16T22:57:00.004-04:00</published><updated>2009-05-19T16:39:38.437-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="software"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Mi MP4 no reproduce el formato MP4</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Me regalaron un reproductor MP4 chino de la &lt;abbr xml:lang=&quot;es-cl&quot; title=&quot;ZOna FRanca de Iquique&quot;&gt;ZOFRI&lt;/abbr&gt;, que más bien es un &lt;span xml:lang=&quot;en&quot;&gt;pendrive&lt;/span&gt; con pantalla. Lo que más me costó fue ponerle videos porque a pesar de que le llaman MP4, el formato que reproduce es &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;SigmaTel Motion Video&quot;&gt;SMV&lt;/acronym&gt; ¿?&lt;/p&gt;

&lt;p class=&quot;img&quot; style=&quot;float:right;margin-left:10px;&quot;&gt;&lt;img xml:lang=&quot;en&quot; src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/MP4 MPK1040.gif&quot; alt=&quot;MPK1040&quot; /&gt;&lt;br /&gt;iPobre&lt;/p&gt;

&lt;h3&gt;¿Quién conoce los &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;SigmaTel Motion Video&quot;&gt;SMV&lt;/acronym&gt;?&lt;/h3&gt;

&lt;p&gt;El SMV es un formato binario de video que en el fondo es un audio sin comprimir acompañado de una secuencia de imágenes JPEG pero todo especifico para el chip de Sigmatel.&lt;/p&gt;
&lt;p&gt;El audio sin comprimir es generalmente de baja potencia para dejarle procesador y memoria al procesamiento de las imágenes. La experiencia también me ha mostrado que tampoco reproduce los videos excesivamente largos.&lt;/p&gt;

&lt;h3&gt;Convertidor de videos&lt;/h3&gt;

&lt;p&gt;Junto con el reproductor, venía un &lt;span xml:lang=&quot;en&quot;&gt;mini CD&lt;/span&gt; con los controladores para windows 98 y &lt;a href=&quot;http://etronicsland.com/smv-mp4-player-video-conversion-converter-software-download-p-167.html&quot; rel=&quot;external nofollow&quot;&gt;un convertirdor VIDEO2SMV&lt;/a&gt;.  Pero en Wikipedia encontré una versión más reciente:&lt;/p&gt;

&lt;blockquote xml:lang=&quot;en-us&quot; cite=&quot;http://en.wikipedia.org/wiki/SigmaTel_Motion_Video#External_links&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;ftp://ftp.aztech.com/Shiro/SMV%20transcoder/SMV%20Transcoder.zip&quot; rel=&quot;external nofollow&quot;&gt;SMV Convert Tool 4.0&lt;/a&gt; (latest version)&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;

&lt;p class=&quot;img&quot;&gt;&lt;img xml:lang=&quot;en&quot; src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/VIDEO2SMV.png&quot; alt=&quot;VIDEO2SMV&quot; /&gt;&lt;br /&gt;Su uso se ve simple y lógico: se agregan los archivos a la lista y se presiona el botón &quot;Convert&quot;.&lt;/p&gt;

&lt;p&gt;Sobre los botones con una &quot;A&quot;, uno achica la imagen para que quepa todo en la pantalla y el otro la agranda para que la llene.  De los dos botones con las bocinas, uno es &lt;abbr title=&quot;monofónico&quot;&gt;mono&lt;/abbr&gt; y el otro es sonido &lt;abbr title=&quot;estéreofónico&quot;&gt;estéreo&lt;/abbr&gt;.&lt;/p&gt;

&lt;p&gt;Esto es importante saberlo. La aplicación hace la conversión por medio de los componentes del Reproductor de Windows y &lt;strong&gt;sólo acepta los formatos contenedores &lt;acronym title=&quot;Audio Video Interleave&quot;&gt;AVI&lt;/acronym&gt; y &lt;acronym title=&quot;Windows Media Video&quot;&gt;WMV&lt;/acronym&gt;&lt;/strong&gt;. Espero que no hayan otros códecs por ahí haciendo conflicto con los originales que venían en Windows.&lt;/p&gt;

&lt;h3&gt;Cómprate un &lt;span xml:lang=&quot;en-us&quot;&gt;iPod&lt;/span&gt;, Perico.&lt;/h3&gt;

&lt;p&gt;Luego de leer mi manual e intentar diferentes combinaciones, descubrí que mi descontinuado reproductor no se reinicia si los videos los pongo a 5 &lt;acronym title=&quot;frames por segundo&quot;&gt;fps&lt;/acronym&gt;.&lt;/p&gt;

&lt;p&gt;Lo interesante de esto, es que leí por ahí que estos chips eran los que usaban los &lt;span xml:lang=&quot;en-us&quot;&gt;iPod shuffle&lt;/span&gt; de primera generación. Así que yo podría inferir que los primeros &lt;span xml:lang=&quot;en-us&quot;&gt;iPods&lt;/span&gt; ya eran capaces de reproducir video pero no de la manera que &lt;span xml:lang=&quot;en-us&quot;&gt;Steve Jobs&lt;/span&gt; le hubiera gustado. Ahora entiendo por qué.&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul xml:lang=&quot;en&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/SigmaTel_Motion_Video&quot; rel=&quot;external nofollow&quot;&gt;Sigmatel Motion Video (Wikipedia)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/MP4_player&quot; rel=&quot;external nofollow&quot;&gt;MP4 player (Wikipedia)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://forum.videolan.org/viewtopic.php?f=14&amp;amp;t=32602&amp;amp;p=100650&amp;amp;hilit=smv#p100650&quot; rel=&quot;external nofollow&quot; xml:lang=&quot;fr&quot;&gt;The &lt;span xml:lang=&quot;en&quot;&gt;VideoLAN Forums &amp;bull; View topic - smv video format&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/2390205732101253477/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/05/mi-mp4-no-reproduce-el-formato-mp4.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/2390205732101253477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/2390205732101253477'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/05/mi-mp4-no-reproduce-el-formato-mp4.php' title='Mi MP4 no reproduce el formato MP4'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.205903948604835 -70.137630701065063</georss:point><georss:box>-20.207162448604834 -70.139454701065063 -20.204645448604836 -70.135806701065064</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-8053072067966474906</id><published>2009-05-03T23:48:00.014-04:00</published><updated>2009-08-22T22:31:20.260-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tip"/><title type='text'>Tip: Agrega más actividades a tus perfiles en la web</title><content type='html'>&lt;p class=&quot;introduccion&quot;&gt;Cuando entras a una red social no estás obligado/a a poner toda tu información en dicho sitio. Puedes vincular otros los servicios que usas de modo que tus amigos de uno y de otro puedan ver lo que publicas sin importar qué servicio ocupas.&lt;/p&gt;
&lt;p&gt;Ahora que todo el mundo se cree friendfeed, se le unió Windows Live Profiles y aquí rápido te muestro cómo vincular los defirentes servicios para que lo hagas y se me haga más fácil seguirte, no puedo andar revisando todas las páginas por separado.&lt;/p&gt;

&lt;h3&gt;Windows Live&lt;/h3&gt;
&lt;p class=&quot;img&quot; style=&quot;float:right;margin-top:-.5em;margin-left:10px;&quot;&gt;&lt;img src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/wlive-avatar.png&quot; alt=&quot;Imagen de ooscarr en Windows Live&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Si usas Hotmail o Messenger, sobretodo en latinoamérica, ya te habrás dado cuenta que existen los perfiles de Windows Live.&lt;/p&gt;
&lt;p&gt;Bueno, ahora puedes hacer que tus fotos de flickr, fotolog, facebook, metroflog y otros aparezcan automáticamente anunciadas en tu perfil de Windows Live o en el nuevo Windows Live Messenger.&lt;/p&gt;
&lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/msn-novedades-flickr.png&quot; alt=&quot;Barra de novedades en Windows Live Messenger para Windows: Oscar agregó fotos a flickr&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;img&quot; style=&quot;float:left;margin:-.5em 10px 0 auto;&quot;&gt;&lt;a href=&quot;http://profile.live.com/WebActivities/&quot; rel=&quot;external nofollow&quot;&gt;&lt;img src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/wlive-actividades.png&quot; alt=&quot;Agregar actividades web en un perfil de Windows Live&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Y no sólo las fotos, también tus canciones favoritas de last.fm o el zune, artículos de tu blog, digg y otras redes sociales como facebook.&lt;/p&gt;

&lt;p&gt;Solo tienes que &lt;a href=&quot;http://profile.live.com/WebActivities/&quot; rel=&quot;external nofollow&quot;&gt;entrar a tu perfil y agregar los nombres de usuario que usas&lt;/a&gt; en cada servicio.&lt;/p&gt;

&lt;p&gt;Lo único malo (o bueno, según tu opinión particular), es que &lt;strong&gt;en el mundo de Windows Live no existe Google&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 style=&quot;margin-top:1em;&quot;&gt;Facebook&lt;/h3&gt;
&lt;p class=&quot;img&quot; style=&quot;float:right;margin-top:-1em;margin-left:10px;&quot;&gt;&lt;img src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/facebook-configuracion.png&quot; alt=&quot;Lo que pasa cuando haces click al botón configuración que aparece en tu perfil de facebook&quot; /&gt;&lt;/p&gt;
&lt;p&gt;En facebook también puedes hacer lo mismo, puedes hacer que cada vez que publiques algo nuevo en tu flickr, Google Reader, last.fm, Youtube, del.icio.us o cualquier RSS, aparezca anunciado en tu muro de facebook.&lt;/p&gt;
&lt;p&gt;Para eso, sólo haz click en Configuración, elige el servicio, escribe el nombre de usuario y el botón importar.&lt;/p&gt;

&lt;h3&gt;Google, Yahoo! y otros&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://www.google.com/profiles/&quot; rel=&quot;external nofollow&quot;&gt;Gogle Profiles&lt;/a&gt;, con esto del Google Friend Connect, también está haciendo perfiles donde puedes vincular tu sitio de fotos.&lt;/p&gt;

&lt;p&gt;Yahoo! algo tarde intenta hacerse el facebook con sus &lt;a href=&quot;http://profiles.yahoo.com/&quot;&gt;Yahoo! Profiles&lt;/a&gt;, y es una buena idea porque Yahoo! tiene muchos servicios que se están desperdiciando y que de esta manera obtienen mayor notoriedad.&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;a href=&quot;http://friendfeed.com/&quot; rel=&quot;external nofollow&quot;&gt;&lt;img src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/friendfeed-logo.png&quot; alt=&quot;friendfeed&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Y al final, el rey, no sé si &lt;a href=&quot;http://friendfeed.com/&quot; rel=&quot;external nofollow&quot;&gt;friendfeed&lt;/a&gt; (también en español) fue el que empezó con esto, pero tiene una característica muy útil que es la de crear amigos imaginarios de modo que si uno sabe que alguien usa ciertos servicios, se puede reunir toda su información y recibir sus actualizaciones en tiempo real incluso. Aunque el nuevo diseño lo encuentro feo.&lt;/p&gt;

&lt;p&gt;Así que para allá va la tendencia en cuanto a redes sociales, &lt;add&gt;Facebook compró &lt;span xml:lang=&quot;en-us&quot;&gt;friendfeed&lt;/span&gt;&lt;/add&gt; También está &lt;a href=&quot;http://tech.slashdot.org/article.pl?sid=09/05/02/1433249&quot; rel=&quot;external nofollow&quot;&gt;el regreso de los &lt;code xml:lang=&quot;en&quot;&gt;frame&lt;/code&gt;s&lt;/a&gt; para que los usuarios no se vayan de sus páginas. Si no quieren que sus usuarios los abandonen, ofrezcan servicios con mayor calidad y valor agregado, y ofrezcan portabilidad de datos, nosotros deberíamos ser los dueños de nuestro contenido.&lt;/p&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li xml:lang=&quot;en-us&quot;&gt;&lt;a href=&quot;http://windowslive.com/Campaign/SocialNetworking&quot; rel=&quot;external nofollow&quot;&gt;Windows Live: Your online updates, together in one place&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/12/agregar-videos-de-youtube-o-vimeo-y.php&quot;&gt;Agregar videos de Youtube o Vimeo y otros en una página (no perfil) de facebook&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/8053072067966474906/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/05/tip-agrega-mas-actividades-tus-perfiles.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/8053072067966474906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/8053072067966474906'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/05/tip-agrega-mas-actividades-tus-perfiles.php' title='Tip: Agrega más actividades a tus perfiles en la web'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.243877906783467 -70.140565037727356</georss:point><georss:box>-20.245136406783466 -70.142389037727355 -20.242619406783469 -70.138741037727357</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-1577065608682473931</id><published>2009-04-09T12:51:00.010-04:00</published><updated>2009-11-28T09:49:39.062-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="guliqq"/><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="sun"/><category scheme="http://www.blogger.com/atom/ns#" term="video"/><title type='text'>Ejecuta otro sistema operativo en una ventana sin reiniciar con VirtualBox</title><content type='html'>&lt;p class=&quot;img&quot;&gt;&lt;a href=&quot;http://www.virtualbox.org/&quot; style=&quot;float:right;margin-top:-1em;&quot;&gt;&lt;img src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/virtualbox/logo_vbox.png&quot; alt=&quot;VirtualBox&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;introduccion&quot;&gt;Se me acabó el período de prueba de &lt;a href=&quot;http://www.parallels.com/es/products/desktop/&quot;&gt;Parallels (US$79,99)&lt;/a&gt;, y ya que también se estaba acabando el período de descarga de Windows 7 beta (&lt;a href=&quot;http://windowsteamblog.com/blogs/windows7/archive/2009/02/09/reminder-general-availability-for-windows-7-beta-ending-this-week.aspx&quot;&gt;12 de febrero de 2009&lt;/a&gt;), me animé a probar Virtualbox, un proyecto &lt;em&gt;opensource&lt;/em&gt; para correr máquinas virtuales del que se estaba hablando harto en el mundo mac.&lt;/p&gt;

&lt;p&gt;En un mundo dominado por el sistema operativo Windows, hay un par de cosas en las que dependo de este &lt;acronym title=&quot;Sistema Operativo&quot;&gt;SO&lt;/acronym&gt; que son: un programa que me piden en la Universidad y que no puedo ejecutar con &lt;a href=&quot;http://www.winehq.org/&quot; rel=&quot;external nofollow&quot;&gt;wine&lt;/a&gt;, y un pendrive que viene diseñado para ser reconocido sólo por Windows (debería cambiarlo).&lt;/p&gt;

&lt;p&gt;Personalmente, participé en dos presentaciones de Virtualbox donde pude aclarar mis dudas por medio de demostraciones, haciendo preguntas y viendo las de otras personas, en vivo y en directo con los desarrolladores de Sun; y esa demostración me convenció de que Virtualbox es una herramienta ya madura que puedo considerar y recomendar aceptablemente. La 
uso a menudo.&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/virtualbox/win7-leopard.jpg&quot; alt=&quot;windows 7 corriendo en VirtualBox bajo Mac OS X Leopard&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Con respecto a las máquinas virtuales, hay algunas palabras claves que hay que conocer:&lt;/p&gt;

&lt;dl&gt;&lt;dt&gt;Máquina virtual&lt;/dt&gt;
 &lt;dd&gt;Es una manera especial de correr diferentes sistemas operativos dentro del &lt;acronym title=&quot;sistema operativo&quot;&gt;SO&lt;/acronym&gt; que estás ocupando. Por ejemplo, dentro de una ventana como cualquier otro programa. &lt;/dd&gt;
 &lt;dt&gt;&lt;span xml:lang=&quot;en&quot;&gt;Host&lt;/span&gt; o Anfitrión&lt;/dt&gt;
 &lt;dd&gt;Se refiere al computador donde se está ejecutando Virtualbox, o sea, el real.&lt;/dd&gt;
 &lt;dt&gt;&lt;span xml:lang=&quot;en&quot;&gt;Guest&lt;/span&gt; o invitado&lt;/dt&gt;
 &lt;dd&gt;Corresponde a la máquina virtual. El sistema operativo invitado cree que se está ejecutando sobre hardware real y funciona.&lt;/dd&gt;
 &lt;dt&gt;Tecla anfitrión o &lt;span xml:lang=&quot;en-us&quot;&gt;Host key&lt;/span&gt;&lt;/dt&gt;
 &lt;dd&gt;Esto es específico de Virtualbox. Es la tecla o combinación de teclas para intercambiar el puntero y el teclado entre ambos sistemas operativos. Si aparece la palabra izquierda, significa que es la tecla del lado izquierdo, no siempre la flechita &lt;kbd&gt;←&lt;/kbd&gt;. Es un problema de traducción.&lt;/dd&gt;&lt;/dl&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;h3&gt;Algunas consideraciones&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Está diseñado para correr &lt;span xml:lang=&quot;en-us&quot;&gt;guests&lt;/span&gt; de sistemas x86.&lt;/li&gt;
 &lt;li&gt;No puedes virtualizar Mac OS X porque está prohibido en la licencia de Apple.&lt;/li&gt;
 &lt;li&gt;Deberías tener licencia para instalar el sistema operativo en la máquina virtual.&lt;/li&gt;
 &lt;li&gt;En la versión 2.2 todavía no se pueden arrastrar archivos desde el &lt;span xml:lang=&quot;en-us&quot;&gt;Host&lt;/span&gt; y soltarlos al &lt;span xml:lang=&quot;en-us&quot;&gt;Guest&lt;/span&gt;. Viene en camino. Pero se pueden compartir archivos.&lt;/li&gt;
 &lt;li&gt;Puedes correr sistemas de 64-bits en computadores de 32-bits, pero se sobre-calienta el procesador así que debes que tener cuidado. De todos modos Virtualbox indica cuáles sistemas invitados son los que puedes correr en tu máquina.&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Pequeño tutorial: Instalando Windows 7 en Mac OS X&lt;/h3&gt;

&lt;p&gt;A continuación, los 3 videos claves para aprender a usar Virtualbox. También conocidos como &lt;strong xml:lang=&quot;en-uk&quot;&gt;The Fat Bloke&#39;s Shorts&lt;/strong&gt; (en inglés).&lt;/p&gt;

&lt;h4&gt;Paso 1: Instalar Virtualbox&lt;/h4&gt;

&lt;p&gt;Es tan fácil que llega a dar vergüenza.&lt;/p&gt;

&lt;p class=&quot;img&quot; xml:lang=&quot;en-uk&quot;&gt;&lt;object type=&quot;application/x-shockwave-flash&quot; width=&quot;500&quot; height=&quot;405&quot; data=&quot;http://blip.tv/play/Aee3VZOCbg&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://blip.tv/play/Aee3VZOCbg&quot; /&gt;
&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;
&lt;param name=&quot;FlashVars&quot; value=&quot;playerMode=embedded&quot; /&gt;
&lt;a href=&quot;http://fatbloke.blip.tv/file/1685998/&quot; rel=&quot;external nofollow&quot;&gt;Download and Install VirtualBox on a Mac&lt;/a&gt;&lt;/object&gt;&lt;/p&gt;

&lt;h4&gt;Paso 2: Instalar Windows 7 desde la imagen de disco, &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Digital Versatile Disc&quot;&gt;DVD&lt;/acronym&gt; o &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Compact Disc&quot;&gt;CD&lt;/acronym&gt;&lt;/h4&gt;

&lt;p&gt;En mi caso, bajé el beta de Windows 7 porque en su tiempo era gratis y legal.&lt;/p&gt;
&lt;p&gt;No olvidar instalar las &lt;span xml:lang=&quot;en-us&quot;&gt;guest additions&lt;/span&gt; una vez que se está en Windows.&lt;/p&gt;

&lt;p class=&quot;img&quot; xml:lang=&quot;en-uk&quot;&gt;&lt;object type=&quot;application/x-shockwave-flash&quot; width=&quot;500&quot; height=&quot;405&quot; data=&quot;http://blip.tv/play/AeecJ5OCbg&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://blip.tv/play/AeecJ5OCbg&quot; /&gt;
&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;
&lt;param name=&quot;FlashVars&quot; value=&quot;playerMode=embedded&quot; /&gt;
&lt;a href=&quot;http://fatbloke.blip.tv/file/1682489/&quot; rel=&quot;external nofollow&quot;&gt;Creating a Windows 7 virtual machine in VirtualBox 2.1.2&lt;/a&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;Ojo que en la barra de estado, aparece la tecla que se necesita para liberar el puntero del ratón (o &lt;span xml:lang=&quot;en-us&quot;&gt;mouse&lt;/span&gt;) y el teclado de la máquina virtual.&lt;/p&gt;

&lt;h4&gt;Paso 3: Configurar directorios compartidos&lt;/h4&gt;
&lt;p&gt;Esto fue lo que más me costó, y era porque no había visto este video donde aparece el dato más importante: &lt;strong&gt;hay que escribir el prefijo &lt;code&gt;\\vboxsvr\&lt;/code&gt; antes del nombre asignado a la carpeta compartida&lt;/strong&gt;. Cuándo iba a adivinar...&lt;/p&gt;
&lt;p&gt;En Linux necesitarás instalar &lt;a href=&quot;http://www.samba.org/&quot; rel=&quot;external nofollow&quot;&gt;samba&lt;/a&gt; primero.&lt;/p&gt;

&lt;p class=&quot;img&quot; xml:lang=&quot;en-uk&quot;&gt;&lt;object type=&quot;application/x-shockwave-flash&quot; width=&quot;500&quot; height=&quot;343&quot; data=&quot;http://blip.tv/play/AefTPpOCbg&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://blip.tv/play/AefTPpOCbg&quot; /&gt;
&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;
&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;
&lt;param name=&quot;FlashVars&quot; value=&quot;playerMode=embedded&quot; /&gt;
&lt;a href=&quot;http://fatbloke.blip.tv/file/1689558/&quot; rel=&quot;external nofollow&quot;&gt;Host-Guest Integration with VirtualBox&lt;/a&gt;&lt;/object&gt;&lt;/p&gt;

&lt;p&gt;En mi caso, dentro de Windows dice que tengo 20&lt;abbr xml:lang=&quot;en&quot; title=&quot;Gigabyte&quot;&gt;GB&lt;/abbr&gt; de espacio en el disco, pero en mi disco duro real &lt;code&gt;Windows 7.&lt;acronym xml:lang=&quot;en&quot; title=&quot;Virtual Disk Image&quot;&gt;vdi&lt;/acronym&gt;&lt;/code&gt; ocupa menos de 8&lt;abbr xml:lang=&quot;en&quot; title=&quot;Gigabyte&quot;&gt;GB&lt;/abbr&gt;. 20&lt;abbr xml:lang=&quot;en&quot; title=&quot;Gigabyte&quot;&gt;GB&lt;/abbr&gt; es el máximo que puede alcanzar el archivo de disco duro virtual. Por eso le dicen semi-dinámico. &lt;/p&gt;
&lt;p&gt;Es bueno darse una vuelta por la configuración después, donde le bajé la &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Random Access Memory&quot;&gt;RAM&lt;/acronym&gt; a 256&lt;abbr xml:lang=&quot;en&quot; title=&quot;Megabyte&quot;&gt;MB&lt;/abbr&gt; para que mi computador no se ponga lento y, deshabilitando opciones de Windows innecesarias, Windows 7 me funciona tan rápido como Windows xp dentro de una máquina virtual en mi computador con Mac OS X Leopard (se está trabajando para que funcione en modo 64-bits).&lt;/p&gt;

&lt;p&gt;También puedes congelar el sistema operativo para que cargue más rápido la próxima vez que lo vas a usar, eligiendo la opción correcta. Para eso, cierra la ventana no más sin apagar Windows correctamente.&lt;/p&gt;

&lt;p&gt;Y eso es todo.  Cuando se me acabe el tiempo de prueba de Windows 7 y/o cuando tenga más espacio en mi disco, contaré cómo instalar otras versiones de Windows legalmente en Virtualbox. Gratis.&lt;/p&gt;

&lt;h3&gt;Más información&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.virtualbox.org/&quot; rel=&quot;external nofollow&quot;&gt;Virtualbox.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fatbloke.blip.tv/&quot; rel=&quot;external nofollow&quot;&gt;El podcast&lt;/a&gt; donde muestran gráficamente lo fácil que es usar Virtualbox.&lt;/li&gt;
&lt;li&gt;El &lt;a href=&quot;http://blogs.sun.com/fatbloke/&quot; rel=&quot;external nofollow&quot;&gt;blog The Fat Bloke Sings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://slx.sun.com/1179273221&quot; rel=&quot;external nofollow&quot;&gt;Presentación 1 (en inglés). Febrero de 2009.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://slx.sun.com/1179273959&quot; rel=&quot;external nofollow&quot;&gt;Presentación 2 (en inglés). Abril del 2009.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://forums.virtualbox.org/&quot; rel=&quot;external nofollow&quot;&gt;El foro (en inglés) que siempre están recomendando usar.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/11/instalar-chrome-os-como-si-fuera-otra.php&quot;&gt;Ejecutar &lt;span xml:lang=&quot;en&quot;&gt;Chrome &lt;abbr title=&quot;Operative system&quot;&gt;OS&lt;/abbr&gt;&lt;/span&gt; como si fuera otra aplicación (abrir imagen &lt;span xml:lang=&quot;en&quot;&gt;VMWare&lt;/span&gt; en &lt;span xml:lang=&quot;en&quot;&gt;VirtualBox&lt;/span&gt;)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/1577065608682473931/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/04/ejecutar-windows-en-una-maquina-virtual.php#comment-form' title='4 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/1577065608682473931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/1577065608682473931'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/04/ejecutar-windows-en-una-maquina-virtual.php' title='Ejecuta otro sistema operativo en una ventana sin reiniciar con VirtualBox'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.233217543586385 -70.1413643360138</georss:point><georss:box>-20.234476043586383 -70.1431883360138 -20.231959043586386 -70.1395403360138</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-5486676565527926739</id><published>2009-04-07T08:31:00.010-04:00</published><updated>2009-11-03T20:45:25.887-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ie"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="xhtml"/><category scheme="http://www.blogger.com/atom/ns#" term="xml"/><title type='text'>Imágenes como objetos en Internet Explorer</title><content type='html'>&lt;p style=&quot;float:right;margin-left:10px;&quot;&gt;&lt;a href=&quot;http://www.microsoft.com/latam/windows/internet-explorer/&quot; rel=&quot;external nofollow&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/no_ie.png&quot;
 width=&quot;180&quot;
 height=&quot;180&quot;&gt;

 &lt;!--[if gte IE 7]&gt;&lt;object
   type=&quot;image/gif&quot;
   data=&quot;http://www.ooscarr.com/nerd/loading.gif&quot;
   width=&quot;100&quot;
   height=&quot;100&quot;&gt;

  &lt;img src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/no_ie.png&quot; alt=&quot;No a Internet Explorer&quot; /&gt;

 &lt;/object&gt;&lt;![endif]--&gt;
&lt;/object&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p class=&quot;introduccion&quot;&gt;En &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;eXtensible HyperText Markup Languaje&quot;&gt;XHTML&lt;/abbr&gt;2, las etiquetas &lt;code class=&quot;html&quot;&gt;&amp;lt;img&amp;gt;&lt;/code&gt; y &lt;code class=&quot;html&quot;&gt;&amp;lt;applet&gt;&lt;/code&gt; fueron reemplazadas por &lt;code class=&quot;html&quot;&gt;&amp;lt;object&amp;gt;&lt;/code&gt;, algo que en Internet Explorer era un tremendo problema. Digo era, porque Internet Explorer 8 se comporta más o menos como el resto de los navegadores modernos, acompañado de una nueva función llamada &quot;modo compatibilidad&quot;. En este artículo muestro una solución conocida a la incompatibilidad con las imágenes insertadas como objeto de las versiones anteriores.&lt;/p&gt;

&lt;h3&gt;¿Por qué &lt;code&gt;&amp;lt;object&amp;gt;&lt;/code&gt;?&lt;/h3&gt;

&lt;h4&gt;La historia del objeto&lt;/h4&gt;

&lt;ol&gt;&lt;li&gt;Con Internet Explorer 3.0 Microsoft introdujo una tecnología para insertar elementos ActiveX dentro de una página web utilizando la etiqueta &lt;code class=&quot;html&quot;&gt;&amp;lt;object&amp;gt;&lt;/code&gt;.&lt;/li&gt;
 &lt;li&gt;Netscape también quiere insertar videos en las páginas web y saca la etiqueta &lt;code class=&quot;html&quot; xml:lang=&quot;en&quot;&gt;&amp;lt;embed&amp;gt;&lt;/code&gt;, con otro nombre para diferenciarse de la tecnología ActiveX específica del sistema operativo de Microsoft.&lt;/li&gt;
 &lt;li&gt;En 1997 se le agrega el elemento &lt;code class=&quot;html&quot;&gt;&amp;lt;object&amp;gt;&lt;/code&gt; a la especificación del &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;HyperText Markup Languaje&quot;&gt;HTML&lt;/acronym&gt;.&lt;/li&gt;
 &lt;li&gt;Microsoft ajustó su forma de tratar los objetos para que aceptaran el estándar.  Pero siguió tratando a todos los objetos como elementos de ActiveX.&lt;/li&gt;
 &lt;li&gt;Hasta el día de hoy.&lt;/li&gt;
 &lt;li&gt;La etiqueta &lt;code class=&quot;html&quot; xml:lang=&quot;en&quot;&gt;&amp;lt;embed&amp;gt;&lt;/code&gt; nunca fue estándar, aunque se sigue utilizando por algunos para evitar de manera rápida los problemas de incompatibilidad.&lt;/li&gt;
 &lt;li&gt;Después sale la especificación de &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;eXtensible HyperText Markup Languaje&quot;&gt;XHTML&lt;/abbr&gt;2 donde se eliminan las etiquetas &lt;del&gt;&lt;code class=&quot;html&quot;&gt;&amp;lt;img&amp;gt;&lt;/code&gt;&lt;/del&gt;, &lt;code class=&quot;html&quot;&gt;&amp;lt;applet&gt;&lt;/code&gt; e &lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/06/deja-de-usar-iframes.php&quot;&gt;&lt;code class=&quot;html&quot;&gt;&amp;lt;iframe&amp;gt;&lt;/code&gt;&lt;/a&gt; para ser reemplazadas por &lt;code class=&quot;html&quot;&gt;&amp;lt;object&amp;gt;&lt;/code&gt;.&lt;/li&gt;
 &lt;li&gt;Internet Explorer 8 muestra los objetos de manera más parecida al estándar.&lt;/li&gt;&lt;/ol&gt;

&lt;h4&gt;Qué tenía de malo el &lt;code class=&quot;html&quot; xml:lang=&quot;en&quot;&gt;&amp;lt;img&amp;gt;&lt;/code&gt;&lt;/h4&gt;

&lt;p&gt;Semánticamente, aparte de que &lt;em&gt;i-m-g&lt;/em&gt; no es una palabra completa como &lt;em xml:lang=&quot;en-us&quot;&gt;image&lt;/em&gt; u &lt;em xml:lang=&quot;en-us&quot;&gt;object&lt;/em&gt;; a mi manera de pensar, &lt;code class=&quot;html&quot; xml:lang=&quot;en&quot;&gt;&amp;lt;object&amp;gt;&lt;/code&gt; es una palabra mucho más genérica para nombrar esta clase de elementos que no son texto en una página web.&lt;/p&gt;

&lt;p&gt;Pienso que si se siguiera utilizando una etiqueta específica para las imágenes, tendría que crearse otra llamada &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; (como lo hicieron en &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;HyperText Markup Languaje&quot;&gt;HTML&lt;/acronym&gt;5) y siguiendo esa lógica después vendrían &lt;code title=&quot;mapa&quot;&gt;&amp;lt;map&amp;gt;&lt;/code&gt;, &lt;code title=&quot;juego&quot;&gt;&amp;lt;game&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;iframe&amp;gt;&lt;/code&gt; (también fue eliminado), &lt;code&gt;&amp;lt;application&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;applet&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;vr&amp;gt;&lt;/code&gt;, &lt;abbr title=&quot;etcétera&quot;&gt;etc&lt;/abbr&gt;. Obligando a cambiar o extender el estándar cada vez que a alguien se le ocurra insertar nuevo tipo de contenido en una página web. Y luego comienzan los dilemas: ¿es &lt;code&gt;applet&lt;/code&gt; una &lt;code&gt;application&lt;/code&gt;? ¿Y si el &lt;code&gt;iframe&lt;/code&gt; contiene un &lt;code&gt;video&lt;/code&gt;? ¿El objeto flash es un video, una aplicación, una animación, o un &lt;code&gt;&amp;lt;application&amp;gt;&amp;lt;video&amp;gt;&amp;lt;animation&amp;gt; &amp;lt;/animation&amp;gt;&amp;lt;/video&amp;gt;&amp;lt;/application&amp;gt;&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;En cambio, una sola etiqueta estandarizada para &lt;em&gt;embeber&lt;/em&gt; elementos es mucho más flexible, pudiéndose usar el &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Multipurpose Internet Mail Extensions&quot;&gt;MIME&lt;/acronym&gt; type para diferenciar de qué clase de objeto se trata.&lt;/p&gt;

&lt;p&gt;&lt;ins&gt;Sin embargo, y lo supe recién, &lt;a href=&quot;http://xhtml.com/en/future/x-html-5-versus-xhtml-2/#x2-uncool-img&quot; rel=&quot;external nofollow&quot;&gt;la etiqueta &lt;code class=&quot;html&quot;&gt;&amp;lt;img&amp;gt;&lt;/code&gt; se va a mantener&lt;/a&gt; al final &lt;a href=&quot;http://xhtml.com/en/future/conversation-with-xhtml-2-team/#qa&quot; rel=&quot;external nofollow&quot;&gt;debido a los reclamos y para hacer felices a todos&lt;/a&gt;, pero con la condición de que se prefiera la etiqueta de objeto.&lt;/ins&gt;&lt;/p&gt;

&lt;h4&gt;Ejemplo de código&lt;/h4&gt;

&lt;p&gt;Por ejemplo, la etiqueta...&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&amp;lt;img
 src=&quot;&lt;strong&gt;rss.jpg&lt;/strong&gt;&quot;
 width=&quot;152&quot;
 height=&quot;160&quot;
 alt=&quot;&lt;strong&gt;RSS&lt;/strong&gt;&quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Como objeto se vería como...&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;xhtml&quot;&gt;&amp;lt;object
 type=&quot;image/jpeg&quot;
 data=&quot;&lt;strong&gt;rss.jpg&lt;/strong&gt;&quot;
 width=&quot;152&quot;
 height=&quot;160&quot;&amp;gt;
 &amp;lt;p&amp;gt;Icono &amp;lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Really Simple Syndication&quot;&amp;gt;&lt;strong&gt;RSS&lt;/strong&gt;&amp;lt;/acronym&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;/object&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Como se pudo apreciar, el texto alternativo de &lt;strong&gt;la etiqueta &lt;code&gt;&amp;lt;object&amp;gt;&lt;/code&gt; tiene mayor riqueza descriptiva&lt;/strong&gt; que el texto plano permitido en el atributo &lt;code&gt;alt&lt;/code&gt; de la etiqueta &lt;code class=&quot;html&quot;&gt;&amp;lt;img&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Es más, si el software agente que se está utilizando para visualizar el documento no tiene soporte para un determinado formato de imagen, o cualquier otra cosa, el elemento &lt;code class=&quot;html&quot;&gt;&amp;lt;object&amp;gt;&lt;/code&gt; en teoría permite disponer de otros objetos para colocar en su lugar.&lt;/p&gt;

&lt;p&gt;Ejemplo:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;object
 type=&quot;video/x-mng&quot;
 data=&quot;logo.mng&quot;
 width=&quot;152&quot;
 height=&quot;160&quot;&amp;gt;

 &amp;lt;object
  type=&quot;image/gif&quot;
  data=&quot;logo.gif&quot;
  width=&quot;152&quot;
  height=&quot;160&quot;&amp;gt;

  &amp;lt;p&amp;gt;Logo de ElBlog&amp;lt;/p&amp;gt;

 &amp;lt;/object&amp;gt;
&amp;lt;/object&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;En teoría, porque Internet Explorer para Windows tiene sus diferencias.&lt;/p&gt;

&lt;h3 xml:lang=&quot;en-us&quot;&gt;Internet Explorer&lt;/h3&gt;
&lt;p&gt;Prácticamente todos los navegadores modernos están preparados para insertar imágenes como objetos. Pero las versiones anteriores de IE no.&lt;/p&gt;

&lt;h4&gt;Problemas de objeto con &lt;span xml:lang=&quot;en-us&quot;&gt;Internet Explorer&lt;/span&gt; 6 y 7&lt;/h4&gt;

&lt;ul&gt;&lt;li&gt;Borde visible alrededor del objeto.&lt;/li&gt;
 &lt;li&gt;Espaciado interior (&lt;code xml:lang=&quot;en-us&quot;&gt;padding&lt;/code&gt;) extra dentro de los objetos. y como el tamaño del objeto es el mismo que el de la imagen...&lt;/li&gt;
 &lt;li&gt;Aparecen las barras de desplazamiento innecesariamente.&lt;/li&gt;
 &lt;li&gt;Cuando hay varios objetos como en el ejemplo anterior, en vez de mostrar el primero que entiende, &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Internet Explorer 6&quot;&gt;IE6&lt;/acronym&gt; los carga todos.&lt;/li&gt;
&lt;li&gt;Si tienes las opciones de seguridad en &quot;alta&quot; (deshabilitando todos los controles ActiveX), no verás ningún elemento &lt;code&gt;&amp;lt;object&amp;gt;&lt;/code&gt;, incluso aquellos que no tienen nada que ver con ActiveX (como nuestras imágenes).&lt;/li&gt;
&lt;li&gt;Es más, si el objeto imagen es de otro dominio, aparecerá una alerta de seguridad en Internet Explorer. ActiveX.&lt;/li&gt;
 &lt;li&gt;Olvídate de las semi-transparencias de los &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Portable Network Graphic&quot;&gt;PNG&lt;/acronym&gt;.&lt;/li&gt;
 &lt;li&gt;Al deshabilitar las imágenes, Internet Explorer cargará los objetos igual.&lt;/li&gt;
 &lt;li&gt;Al poner un vínculo alrededor de un objeto, éste no se vuelve clickeable.&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;Posible solución a los problemas con &lt;span xml:lang=&quot;en-us&quot;&gt;Internet Explorer&lt;/span&gt;&lt;/h4&gt;

&lt;h5&gt;Para el problema de lo objetos alternativos&lt;/h5&gt;
&lt;p&gt;Para cuando tengas varios objetos como alternativas de formato o para agregar información adicional para los ciegos o robots buscadores, puedes usar los comentarios condicionales para evitar que los procese &lt;span xml:lang=&quot;en-us&quot;&gt;Internet Explorer&lt;/span&gt; 6 y seguir cumpliendo con los estándares:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;object
 type=&quot;image/tiff&quot;
 data=&quot;beagle.tiff&quot;
 width=&quot;152&quot;
 height=&quot;160&quot;&amp;gt;

 &lt;strong&gt;&amp;lt;!--[if &lt;abbr title=&quot;mayor o igual (greater than equal)&quot; xml:lang=&quot;en-us&quot;&gt;gte&lt;/abbr&gt; &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; 7]&amp;gt;&lt;/strong&gt;
 &amp;lt;object
  type=&quot;image/jpeg&quot;
  data=&quot;beagle.jpg&quot;
  width=&quot;152&quot;
  height=&quot;160&quot;&amp;gt;
 &amp;lt;/object&amp;gt;
 &lt;strong&gt;&amp;lt;![endif]--&amp;gt;&lt;/strong&gt;

&amp;lt;/object&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Usé &lt;code&gt;&lt;abbr title=&quot;mayor o igual (greater than equal)&quot; xml:lang=&quot;en-us&quot;&gt;gte&lt;/abbr&gt; &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; 7&lt;/code&gt; porque en Internet Explorer 7 se soluciona este problema.&lt;/p&gt;

&lt;h5&gt;Para los problemas estéticos&lt;/h5&gt;

&lt;p&gt;Para deshacerse del &lt;strong&gt;borde alrededor&lt;/strong&gt;, el &lt;strong xml:lang=&quot;en-us&quot;&gt;extra padding&lt;/strong&gt; y las &lt;strong&gt;barras de desplazamiento&lt;/strong&gt;; existe un &lt;code xml:lang=&quot;en-us&quot;&gt;javascript&lt;/code&gt; que detecta y aplica los estilos correspondientes de estos objetos.&lt;/p&gt;
&lt;p&gt;El código &lt;code xml:lang=&quot;en-us&quot;&gt;javascript&lt;/code&gt; es el siguiente:&lt;/p&gt;
&lt;blockquote cite=&quot;http://www.xml.com/pub/a/2003/07/02/dive.html&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;function fixObjectImages(){
 var objs=document.getElementsByTagName(&#39;OBJECT&#39;);
 for(n=0;n&amp;lt;objs.length;n++){
  var obj=objs[n];
  if((obj != null &amp;amp;&amp;amp; obj.type != null)
  &amp;amp;&amp;amp; ((obj.type==&quot;image/jpeg&quot;)
  || (obj.type==&quot;image/gif&quot;)
  || (obj.type==&quot;image/png&quot;))){
   &lt;strong&gt;fixObject(obj)&lt;/strong&gt;;
  }
 }
}
function &lt;strong&gt;fixObject(obj)&lt;/strong&gt;{
 obj.body.style.border=&#39;none&#39;;
 obj.body.style.margin=&#39;0&#39;;
 obj.body.style.padding=&#39;0&#39;;
 obj.body.style.overflow=&#39;hidden&#39;;
}
window.onload = fixObjectImages;
&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;blockquote cite=&quot;http://www.xml.com/pub/a/2003/07/02/dive.html&quot;&gt;&lt;p&gt;El truco para arreglar el elemento &lt;code&gt;&amp;lt;object&amp;gt;&lt;/code&gt; es darse cuenta que actúa como un &lt;code&gt;&amp;lt;iframe&amp;gt;&lt;/code&gt;; o sea, es su propio &lt;span xml:lang=&quot;en-us&quot;&gt;canvas&lt;/span&gt; con un &lt;span xml:lang=&quot;en-us&quot;&gt;canvas&lt;/span&gt;.  Dentro del &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Document Object Model&quot;&gt;DOM&lt;/acronym&gt;, un
&lt;code&gt;&amp;lt;object&amp;gt;&lt;/code&gt; tiene su propio &lt;code&gt;body&lt;/code&gt; con todas sus propias propiedades.  Entonces para remover el borde, simplemente lo hacemos en nuestra función &lt;code&gt;window.onload&lt;/code&gt; (&lt;a href=&quot;http://www.xml.com/pub/a/2003/2003/07/02/examples/object-demo-2.html&quot; rel=&quot;external nofollow&quot;&gt;demo&lt;/a&gt;):&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Afortunadamente &lt;strong&gt;Internet Explorer 8 arregló esto&lt;/strong&gt;, logrando así que todos los mayores navegadores modernos estén preparados para insertar imágenes como objetos.&lt;/p&gt;

&lt;p&gt;Este y otros cambios produjeron problemas de incompatibilidad con el código de páginas web preparadas para las versiones anteriores de &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt;. Esto obligó a incluir un botón nuevo llamado &quot;modo de compatibilidad&quot; en la versión 8 del navegador y todo un sistema que consulta en una base de datos de Microsoft para saber cómo abrir cada página web (opcional, por privacidad).&lt;/p&gt;

&lt;blockquote cite=&quot;http://blogs.msdn.com/ie/archive/2009/04/08/handling-script-errors-from-three-different-perspectives.aspx&quot;&gt;&lt;p class=&quot;img&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/ie8-compatview.png&quot;
 width=&quot;490&quot; height=&quot;149&quot; xml:lang=&quot;en-us&quot;&gt;

 &lt;!--[if gte IE 7]&gt;Compatibility view button&lt;![endif]--&gt;
&lt;/object&gt;&lt;br /&gt;Botón de Vista de compatibilidad en Internet Explorer 8.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Estas novedades provocaron confusión y descontento en los usuarios no ilustrados en el tema de los estándares web. La mayor parte incluso volvió a las versiones anteriores. :-@&lt;/p&gt;

&lt;h5&gt;Para los objetos &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Portable Network Graphic&quot;&gt;PNG&lt;/acronym&gt; en &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Internet Explorer 6&quot;&gt;IE6&lt;/acronym&gt; y los vínculos&lt;/h5&gt;
&lt;p&gt;Debido a la forma en que los objetos son tratados por Internet Explorer, no se me ocurre otra manera de solucionar &lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/07/usando-png-con-transparencias-en.php&quot;&gt;el problema de los &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Portable Network Graphic&quot;&gt;PNG&lt;/acronym&gt; semi-transparentes en versiones anteriores a Internet Explorer 6&lt;/a&gt; y el no poder cambiar el tamaño de la imagen original sin necesariamente tener que reemplazar todas las etiquetas &lt;code&gt;&amp;lt;object type=&quot;image/png&quot;&amp;gt;&lt;/code&gt; por &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;h5&gt;Para el ActiveX e imágenes deshabilitadas&lt;/h5&gt;
&lt;p&gt;&lt;acronym title=&quot;No tiene solución&quot;&gt;N.T.S.&lt;/acronym&gt; Si se deshabilita ActiveX, desaparecen todos los objetos.&lt;/p&gt;
&lt;p&gt;Cuando se deshabilitan las imágenes en las versiones anteriores a Internet Explorer 8, las imágenes como objeto seguían apareciendo; en cambio en &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Internet Explorer 8&quot;&gt;IE8&lt;/acronym&gt;, desaparece todo el objeto sin mostrar el texto alternativo.&lt;/p&gt;

&lt;h4&gt;Ejemplo final&lt;/h4&gt;
&lt;p&gt;En el siguiente ejemplo, se muestran dos imágenes &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Portable Network Graphic&quot;&gt;PNG&lt;/acronym&gt; con un vínculo cada una. La primera corresponde a la etiqueta &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; de toda la vida y la segunda es un objeto. A ambas se les han aplicado los &lt;code&gt;javascript&lt;/code&gt; para que se vean lo mejor posible en las diferentes versiones de &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; y comparar su funcionamiento en los distintos navegadores.&lt;/p&gt;
&lt;p class=&quot;img&quot;&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/07/usando-png-con-transparencias-en.php&quot;&gt;&lt;img src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/apng/Animated_PNG_example_bouncing_beach_ball.png&quot; alt=&quot;Pelota&quot; /&gt;&lt;/a&gt; &amp;nbsp; &lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/03/llegaron-los-apng.php&quot;&gt;&lt;object
 type=&quot;image/png&quot;
 data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/apng/Animated_PNG_example_bouncing_beach_ball.png&quot;
 width=&quot;100&quot;
 height=&quot;100&quot;&gt;

 &lt;!--[if gte IE 7]&gt;&lt;object
   type=&quot;image/gif&quot;
   data=&quot;http://www.ooscarr.com/nerd/loading.gif&quot;
   width=&quot;100&quot;
   height=&quot;100&quot;&gt;

  &lt;span&gt;Pelota&lt;/span&gt;

 &lt;/object&gt;&lt;![endif]--&gt;
&lt;/object&gt;&lt;/a&gt;&lt;br /&gt;
La &lt;abbr title=&quot;primera&quot;&gt;1&lt;sup&gt;ra&lt;/sup&gt;&lt;/abbr&gt; imagen tiene la etiqueta &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; y la &lt;abbr title=&quot;segunda&quot;&gt;2&lt;sup&gt;da&lt;/sup&gt;&lt;/abbr&gt;, &lt;code&gt;&amp;lt;object&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;Palabras finales&lt;/h3&gt;
&lt;p&gt;Internet Explorer no estará siguiendo el estándar &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;eXtensible HyperText Markup Languaje&quot;&gt;XHTML&lt;/abbr&gt; hasta que acepte el &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Multipurpose Internet Mail Extensions&quot;&gt;MIME&lt;/acronym&gt; type &lt;code&gt;application/xhtml+xml&lt;/code&gt;, por lo que el uso de &lt;code&gt;&amp;lt;object&amp;gt;&lt;/code&gt; en vez de &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; para las imágenes en Internet Explorer no es ninguna obligación ya que todos las versiones de &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;HyperText Markup Languaje&quot;&gt;HTML&lt;/acronym&gt; que acepta IE aceptan la etiqueta &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Se hace imperativo que todos se actualicen y actualicen cada computador con Windows que no tenga &lt;a href=&quot;http://www.microsoft.com/latam/windows/internet-explorer/&quot; rel=&quot;external nofollow&quot;&gt;Internet Explorer 8&lt;/a&gt;, porque seguir con versiones antiguas de los navegadores hacen que se retrase el desarrollo de la web.&lt;/p&gt;

&lt;h3&gt;Actualización&lt;/h3&gt;
&lt;p&gt;Después de la escritura de este artículo, surgen 2 informaciones:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;El estándar &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;eXtensible HyperText Markup Languaje&quot;&gt;XHTML&lt;/abbr&gt;2 es abandonado para concentrarse en el &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;HyperText Markup Languaje&quot;&gt;HTML&lt;/abbr&gt;5 que incluye de nuevo la etiqueta &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt;.&lt;/li&gt;
 &lt;li&gt;Descubro que &lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2009/09/quictime-7-se-apodera-de-los-objetos.php&quot;&gt;&lt;span xml:lang=&quot;en-us&quot;&gt;Quicktime&lt;/span&gt; 7 se apodera de los objetos &lt;abbr xml:lang=&quot;en&quot; title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/abbr&gt; en &lt;span xml:lang=&quot;en-us&quot;&gt;Internet Explorer&lt;/span&gt; para &lt;span xml:lang=&quot;en-us&quot;&gt;Windows&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul xml:lang=&quot;en&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://www.xml.com/pub/a/2003/07/02/dive.html&quot; rel=&quot;external nofollow&quot;&gt;The Vanishing Image: &lt;abbr xml:lang=&quot;en-us&quot; title=&quot;eXtensible HyperText Markup Languaje&quot;&gt;XHTML&lt;/abbr&gt; 2 Migration Issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://diveintomark.org/archives/2003/04/13/object_and_internet_explorer&quot;&gt;OBJECT and Internet Explorer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.libpng.org/pub/png/pngs.html&quot; rel=&quot;external nofollow&quot;&gt;Miscellaneous Transparent &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Portable Network Graphic&quot;&gt;PNG&lt;/acronym&gt; Images using OBJECT Tags&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms649487(VS.85).aspx&quot; rel=&quot;external nofollow&quot;&gt;What&#39;s New in Internet Explorer 7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms532969.aspx&quot; rel=&quot;external nofollow&quot;&gt;AlphaImageLoader Filter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://diveintomark.org/archives/2009/11/02/why-do-we-have-an-img-element&quot; rel=&quot;external nofollow&quot;&gt;&lt;span xml:lang=&quot;es&quot;&gt;La historia de cómo apareció el tag &lt;code&gt;img&lt;/code&gt; (muy interesante)&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/07/usando-png-con-transparencias-en.php&quot;&gt;Usando &lt;acronym xml:lang=&quot;en-us&quot; title=&quot;Portable Network Graphic&quot;&gt;PNG&lt;/acronym&gt; con transparencias en Internet Explorer 6 (primera parte)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/06/deja-de-usar-iframes.php&quot;&gt;Deja de usar &lt;code&gt;iframe&lt;/code&gt;s&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/5486676565527926739/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/04/imagenes-como-objetos-e-ie6.php#comment-form' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/5486676565527926739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/5486676565527926739'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/04/imagenes-como-objetos-e-ie6.php' title='Imágenes como objetos en Internet Explorer'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.242634738736225 -70.1418524980545</georss:point><georss:box>-20.243893238736224 -70.1436764980545 -20.241376238736226 -70.1400284980545</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-6568198836816498708</id><published>2009-03-01T16:46:00.010-03:00</published><updated>2009-04-04T20:09:32.552-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firefox"/><category scheme="http://www.blogger.com/atom/ns#" term="guliqq"/><category scheme="http://www.blogger.com/atom/ns#" term="ie"/><title type='text'>Llegaron los APNG (y no son estándar)</title><content type='html'>&lt;p class=&quot;img&quot; style=&quot;float:right;&quot;&gt;&lt;img alt=&quot;Animación de pelota rebotando&quot; src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/apng/Animated_PNG_example_bouncing_beach_ball.png&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;introduccion&quot;&gt;Pobre &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt;... Un formato de animaciones basado en el &lt;acronym xml:lang=&quot;en&quot; title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/acronym&gt;. Cuando salió nadie lo pescó. No estaba terminado cuando se masificó el &lt;acronym xml:lang=&quot;en&quot; title=&quot;Graphics Interchange Format&quot;&gt;GIF&lt;/acronym&gt; gracias a Netscape, a pesar de que era un formato propietario. Sin embargo, &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt; poseía mayor compresión, transparencias alpha, y perfiles de color.&lt;/p&gt;

&lt;p&gt;Ahora Mozilla Firefox 3 (cuyo motor se basó en el de Netscape) incluye soporte para los archivos &lt;acronym xml:lang=&quot;en&quot; title=&quot;Animated Portable Network Graphics&quot;&gt;APNG&lt;/acronym&gt; dejando botado al estándar &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt;. La principal razón fue la menor cantidad de código en comparación con el &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt; para poder implementarlo. Otra ventaja de &lt;acronym xml:lang=&quot;en&quot; title=&quot;Animated Portable Network Graphics&quot;&gt;APNG&lt;/acronym&gt; es que los archivos, de extensión &lt;acronym xml:lang=&quot;en&quot; title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/acronym&gt;, se degradan &lt;em&gt;agraciadamente&lt;/em&gt; en los navegadores que no soportan el formato. No así con el &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt;, que hasta se está viendo la posibilidad de darle su propio &lt;span xml:lang=&quot;en&quot;&gt;&lt;acronym title=&quot;Multipurpose Internet Mail Extensions&quot;&gt;MIME&lt;/acronym&gt; type&lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Pero el &lt;acronym xml:lang=&quot;en&quot; title=&quot;Animated Portable Network Graphics&quot;&gt;APNG&lt;/acronym&gt; no es un estándar. Al principio se tuvo la inteción de definir una especificación simple para animaciones en &lt;acronym xml:lang=&quot;en&quot; title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/acronym&gt; al estilo &lt;acronym xml:lang=&quot;en&quot; title=&quot;Graphics Interchange Format&quot;&gt;GIF&lt;/acronym&gt;, pero los desarrolladores de la época decidieron expandirlo a algo más complejo que resultó en un nuevo formato: el &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt;.&lt;/p&gt;

&lt;p&gt;Después llegaron unos turcos, estudiaron el &lt;acronym xml:lang=&quot;en&quot; title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/acronym&gt;, inventaron la forma de incluir animación después de poner el primer frame como si fuera un &lt;acronym xml:lang=&quot;en&quot; title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/acronym&gt; normal, mandaron un parche a Mozilla, a todos les gustó, se propuso como estándar, fue rechazado, el formato se quedó en el código y hoy (marzo de 2009) ya se encuentra implementado en los navegadores Mozilla Firefox 3 y Opera 9.5.&lt;/p&gt;

&lt;p&gt;Así que ya llegaron. Estándar o no, sirven para pequeñas cosas como ese remolino animado que indica que algo está cargando, por ejemplo, donde no se sabe si el fondo será oscuro, claro, de color... Que todos hemos visto con bordes pixelados en formato GIF o con un cuadrado negro detrás para disimular la necesidad del canal alpha.&lt;/p&gt;
&lt;p class=&quot;img&quot;&gt;&lt;img src=&quot;http://www.ooscarr.com/nerd/loading.gif&quot; alt=&quot;Cargando...&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;¿Llegará el &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt;?&lt;/h3&gt;
&lt;p&gt;Eso todavía se discute.&lt;/p&gt;

&lt;blockquote cite=&quot;http://forums.mozillazine.org/viewtopic.php?p=3056059&amp;amp;sid=78cc31287fd52558542771cb5993547f#p3056059&quot;&gt;&lt;p&gt;&lt;ins&gt;(el &lt;acronym xml:lang=&quot;en&quot; title=&quot;Animated Portable Network Graphics&quot;&gt;APNG&lt;/acronym&gt;)&lt;/ins&gt; es un &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt; simplificado. Como la mitad de las costosas definiciones están fuera. Hay un soporte avanzado para disponer del método &quot;restaurar-al-previo&quot; del &lt;acronym xml:lang=&quot;en&quot; title=&quot;Graphics Interchange Format&quot;&gt;GIF&lt;/acronym&gt;. El &quot;perfil de simplicidad&quot; se fue.&lt;/p&gt;&lt;/blockquote&gt;


&lt;blockquote cite=&quot;http://forums.mozillazine.org/viewtopic.php?p=3056962&amp;amp;sid=78cc31287fd52558542771cb5993547f#p3056962&quot;&gt;&lt;p&gt;¿Por qué existe este tema? &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt; es un estándar inmensamente complicado que nadie quiere implementar. Encuentra a alguien que lo implemente y a alguien que le importe y con eso tendrás media posibilidad. Nada que se diga en este foro va a cambiar eso.&lt;/p&gt;
&lt;p&gt;Y por los méritos del &lt;acronym xml:lang=&quot;en&quot; title=&quot;Animated Portable Network Graphics&quot;&gt;APNG&lt;/acronym&gt;, bueno, es extremadamente simple por una razón. La compatibilidad hacia atrás con &lt;acronym xml:lang=&quot;en&quot; title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/acronym&gt;s no-animados era una meta admirable, pero si se empuja al &lt;acronym xml:lang=&quot;en&quot; title=&quot;Animated Portable Network Graphics&quot;&gt;APNG&lt;/acronym&gt; hacia un nuevo &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multipurpose Internet Mail Extensions&quot;&gt;MIME&lt;/acronym&gt; y una nueva extensión de archivo, sería menos útil en la web, lo cual  sería ciertamente una vergüenza. Dicho eso, esto es lo mismo que en cualquier debate de estandarización. De cualquier forma, nadie puede usar realmente esta cosa hasta alrededor de 5-10 años desde hoy, cuando existan múltiples implementaciones (si es que van a alguna parte).&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;Yo, por mi parte, no puedo utilizar &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt; porque los navegadores no tienen soporte para el formato, no tengo un software donde pueda verlos (existe una compilación especial de Firefox que los muestra y plug-ins para otros navegadores), no está definido el &lt;span xml:lang=&quot;en&quot;&gt;&lt;acronym title=&quot;Multipurpose Internet Mail Extensions&quot;&gt;MIME&lt;/acronym&gt; type&lt;/span&gt; aún (se está usando &lt;code&gt;video/x-mng&lt;/code&gt; por ahora) y, sinceramente, no creo que llegue el día en que Internet Explorer no haga problemas con esto.&lt;/p&gt;

&lt;p class=&quot;img&quot;&gt;&lt;object type=&quot;video/x-mng&quot; data=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/apng/Animation1.mng&quot;&gt;Este navegador no soporta &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt;&lt;/object&gt;&lt;/p&gt;

&lt;h3&gt;Ejemplo de &lt;acronym xml:lang=&quot;en&quot; title=&quot;Animated Portable Network Graphics&quot;&gt;APNG&lt;/acronym&gt;&lt;/h3&gt;
&lt;p&gt;Como prueba de concepto, he convertido el logotipo animado de ElBlog al formato &lt;acronym xml:lang=&quot;en&quot; title=&quot;Animated Portable Network Graphics&quot;&gt;APNG&lt;/acronym&gt;. Por eso no se mueve ni en Safari ni en &lt;acronym xml:lang=&quot;en&quot; title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt;, al igual que la pelota saltarina que acompaña este post.&lt;/p&gt;


&lt;h3&gt;Referencias&lt;/h3&gt;
&lt;ul&gt;&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://www.boutell.com/innards/apng.html&quot; rel=&quot;external nofollow&quot;&gt;Innnards: &lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt; is dead, long live &lt;acronym xml:lang=&quot;en&quot; title=&quot;Animated Portable Network Graphics&quot;&gt;APNG&lt;/acronym&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/MNG&quot; rel=&quot;external nofollow&quot;&gt;&lt;acronym xml:lang=&quot;en&quot; title=&quot;Multiple-image Network Graphics&quot;&gt;MNG&lt;/acronym&gt; en la Wikipedia en español&lt;/a&gt;&lt;/li&gt;
&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://labs.mozilla.com/2007/08/better-animations-in-firefox-3/&quot; rel=&quot;external nofollow&quot;&gt;Better Animation in Firefox 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bugs.webkit.org/show_bug.cgi?id=17022&quot; rel=&quot;external nofollow&quot;&gt;Soporte de &lt;acronym xml:lang=&quot;en&quot; title=&quot;Animated Portable Network Graphics&quot;&gt;APNG&lt;/acronym&gt; en Safari webkit&lt;/a&gt;&lt;/li&gt;
&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://people.mozilla.com/%7Edolske/apng/demo.html&quot; rel=&quot;external nofollow&quot;&gt;Animated &lt;acronym title=&quot;Portable Network Graphics&quot;&gt;PNG&lt;/acronym&gt; demos&lt;/a&gt;&lt;/li&gt;
&lt;li xml:lang=&quot;en&quot;&gt;&lt;a href=&quot;http://annevankesteren.nl/2007/09/apng-update&quot; rel=&quot;external nofollow&quot;&gt;&lt;acronym title=&quot;Animated Portable Network Graphics&quot;&gt;APNG&lt;/acronym&gt; Update&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/6568198836816498708/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/03/llegaron-los-apng.php#comment-form' title='2 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/6568198836816498708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/6568198836816498708'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/03/llegaron-los-apng.php' title='Llegaron los APNG (y no son estándar)'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total><georss:featurename>Iquique, Chile</georss:featurename><georss:point>-20.242680036532004 -70.141761302948</georss:point><georss:box>-20.243938536532003 -70.143585302948 -20.241421536532005 -70.139937302948</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6465577696340041904.post-2681448447000238364</id><published>2009-02-25T08:53:00.001-03:00</published><updated>2009-04-08T23:20:51.286-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cielo"/><title type='text'>El Corán prohibe adorar al Sol</title><content type='html'>&lt;p class=&quot;img&quot;&gt;&lt;a href=&quot;http://commons.wikimedia.org/wiki/File:PICT0142.JPG&quot;&gt;&lt;img src=&quot;http://www.ooscarr.com/nerd/elblog/uploaded_images/piramide.jpg&quot; alt=&quot;Pirámide&quot; title=&quot;La pirámide de Saqqara, Egipto&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote cite=&quot;http://wwwislamgurea.blogspot.com/2008/09/el-ayuno-en-las-otras-religiones.html&quot;&gt;&lt;p&gt;Abrahán,(as) de grata memoria, fue enviado como Profeta a los Sabeos del Irak. Los sabeos de Harrán observaban un ayuno de treinta días sin comer ni beber desde la salida hasta la puesta del sol, y esto como ofrenda a la luna. &lt;cite&gt;cf. Encyclopedia of Religions and Ethics. &lt;abbr title=&quot;volumen&quot;&gt;vol.&lt;/abbr&gt; 5 &lt;abbr title=&quot;página&quot;&gt;pag.&lt;/abbr&gt; 764, articulo sobre &quot;Arrianos&quot; citado por Chowolson. Saber y Sabismus II, 711,226&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El Corán (41:37) prohíbe adorar el sol o la luna, pero ordena la adoración a quien los ha creado.&lt;/strong&gt; Asimismo ha prescrito un mes de ayuno, lo que significa la restauración del Hanifismo, o la verdadera religión del profeta Abrahám. (as)&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3&gt;Artículos relacionados&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.ooscarr.com/nerd/elblog/2008/04/google-me-lava-el-cerebro.php&quot;&gt;Google me lava el cerebro&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.ooscarr.com/nerd/elblog/index.php/feeds/2681448447000238364/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/04/el-coran-prohibe-adorar-al-sol.php#comment-form' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/2681448447000238364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6465577696340041904/posts/default/2681448447000238364'/><link rel='alternate' type='text/html' href='http://www.ooscarr.com/nerd/elblog/index.php/2009/04/el-coran-prohibe-adorar-al-sol.php' title='El Corán prohibe adorar al Sol'/><author><name>ooscarr</name><uri>http://www.blogger.com/profile/10725957830613872608</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>