<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>Jorge Iván Meza Martínez &#187; Windows</title> <atom:link href="http://blog.jorgeivanmeza.com/category/windows/feed/" rel="self" type="application/rss+xml" /><link>http://blog.jorgeivanmeza.com</link> <description>The Fire Within Me: &#34;knowledge will set you free&#34;</description> <lastBuildDate>Tue, 31 Jan 2012 18:18:13 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Campos autonuméricos con SQLite3</title><link>http://blog.jorgeivanmeza.com/2012/01/campos-autonumericos-con-sqlite3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=campos-autonumericos-con-sqlite3</link> <comments>http://blog.jorgeivanmeza.com/2012/01/campos-autonumericos-con-sqlite3/#comments</comments> <pubDate>Mon, 30 Jan 2012 21:33:57 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Bases de datos]]></category> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[autoincrement]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[Sqlite]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49954</guid> <description><![CDATA[Introducción SQLite es un gestor de bases de datos pequeño y simple que se usa ampliamente como apoyo al software (aplicaciones de escritorio, navegadores web, etc.) y en sistemas embebidos como los teléfonos móviles (Android por ejemplo). A continuación se &#8230; <a
href="http://blog.jorgeivanmeza.com/2012/01/campos-autonumericos-con-sqlite3/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción</h2><p><a
href="http://sqlite.org/">SQLite</a> es un gestor de bases de datos pequeño y simple que se usa ampliamente como apoyo al software (aplicaciones de escritorio, navegadores web, etc.) y en sistemas embebidos como los teléfonos móviles (Android por ejemplo).</p><p>A continuación se muestra como crear campos autonuméricos en esta base de datos, es decir, campos cuyo valor es un número serial que es asignado automáticamente por el software.</p><h2>Procedimiento</h2><p>Crear la tabla con el campo autonumérico (<span
style="font-family: courier new,courier;">code</span> en este caso).</p><pre class="sql">CREATE TABLE test (
code     INTEGER        PRIMARY KEY    AUTOINCREMENT,
name     VARCHAR(20)    UNIQUE,
value    FLOAT
);</pre><p>Agregar datos a la tabla recién creada.</p><pre class="sql">INSERT INTO test VALUES(NULL, 'demo1', 10.10);
INSERT INTO test VALUES(NULL, 'demo2', 20.20);
INSERT INTO test VALUES(NULL, 'demo3', 30.30);</pre><p>Consultar los datos recién ingresados.</p><pre class="sql">sqlite&gt; select * from test;
    1|demo1|10.1
    2|demo2|20.2
    3|demo3|30.3</pre><p>Consultar el valor del último campo autonumérico ingresado durante la sesión.</p><pre class="sql">SELECT last_insert_rowid();
    3</pre><p>Enlaces</p><ul><li>SQLite<br
/><a
href="http://sqlite.org/">http://sqlite.org/</a></li><li>SQLite autoincrement<br
/><a
href="http://www.sqlite.org/autoinc.html">http://www.sqlite.org/autoinc.html</a></li><li>How do I create an AUTOINCREMENT field<br
/><a
href="http://www.sqlite.org/faq.html#q1">http://www.sqlite.org/faq.html#q1</a></li><li>Function API <span
style="font-family: courier new,courier;">last_insert_rowid()</span><br
/><a
href="http://www.sqlite.org/lang_corefunc.html#last_insert_rowid">http://www.sqlite.org/lang_corefunc.html#last_insert_rowid</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2012/01/campos-autonumericos-con-sqlite3/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Instalación de Windows XP en un netbook desde una unidad USB</title><link>http://blog.jorgeivanmeza.com/2011/06/instalacion-de-windows-xp-en-un-netbook-desde-una-unidad-usb/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalacion-de-windows-xp-en-un-netbook-desde-una-unidad-usb</link> <comments>http://blog.jorgeivanmeza.com/2011/06/instalacion-de-windows-xp-en-un-netbook-desde-una-unidad-usb/#comments</comments> <pubDate>Sat, 18 Jun 2011 23:00:43 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Software]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[instalación]]></category> <category><![CDATA[unidad usb]]></category> <category><![CDATA[XP]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=27203</guid> <description><![CDATA[Introducción. Instalar Windows XP en una netbook (portátil liviano sin unidad de DVD) desde una memoria USB no fue tan fácil y placentero como fue la instalación de Windows 7.  Después de algunas pruebas estos fueron los pasos que se &#8230; <a
href="http://blog.jorgeivanmeza.com/2011/06/instalacion-de-windows-xp-en-un-netbook-desde-una-unidad-usb/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>Instalar Windows XP en una <em>netbook</em> (portátil liviano sin unidad de DVD) desde una memoria USB no fue tan fácil y placentero como fue la <a
href="http://blog.jorgeivanmeza.com/2010/07/preparar-una-unidad-usb-de-instalacion-de-windows-7-utilizando-gnulinux/" target="_blank">instalación de Windows 7</a>.  Después de algunas pruebas estos fueron los pasos que se siguieron.</p><h2>Crear la unidad USB de instalación.</h2><p>Para crear la unidad USB de instalación se utilizó <a
href="http://wintoflash.com/" target="_blank">WinToFlash</a>.  Este procedimiento es muy simple, sólo se debe especificar cual es la unidad en la que se encuentran los archivos (CDROM) de instalación de Windows y cual es la unidad (USB) hacia la cual se realizará la copia.</p><h2>Instalación del sistema operativo.</h2><p>Una vez creada la unidad USB de instalación se debe iniciar el sistema desde ella y realizar normalmente los pasos de instalación de Windows XP.</p><h2>Corregir el inicio de la unidad USB.</h2><p>Finalizada la instalación del sistema operativo se intenta reiniciar y falla mostrando un error relacionado con la falta de archivos del sistema, comúnmente <span
style="font-family: 'courier new', courier;">hal.dll</span>.  Esto aparentemente se debe a que el instalador consideró a la unidad USB  como primer disco y al disco duro real como segundo, generando estas referencias incorrectas en el archivo <span
style="font-family: 'courier new', courier;">boot.ini</span>.</p><p>Para corregir esto es necesario editar este archivo y modificar la referencia a la partición en la que buscará al sistema operativo durante su inicio.  Por facilidad (para mi) utilicé un Linux (<a
href="http://peppermintos.com/" target="_blank">Peppermint</a>) que inicia desde LiveUSB que casualmente tenía preparado para otra prueba.  En el ambiente Windows  imagino que se requerirá de un disco de arranque que permita acceder a través de la consola de texto a los comandos básicos del DOS.</p><p>Este es un ejemplo de <span
style="font-family: 'courier new', courier;">boot.ini</span> en el que se supone que hay un <strong>Windows XP Home Edition</strong> instalado en la primera partición del primer disco duro del equipo (como habitualmente sucede).</p><p
style="padding-left: 30px;"><span
style="font-family: 'courier new', courier;">[boot loader]</span><br
/> <span
style="font-family: 'courier new', courier;">timeout=5</span><br
/> <span
style="font-family: 'courier new', courier;">default=multi(0)disk(0)rdisk(<span
style="color: #ff0000;"><strong>0</strong></span>)partition(1)\WINDOWS</span><br
/> <span
style="font-family: 'courier new', courier;">[operating systems]</span><br
/> <span
style="font-family: 'courier new', courier;">multi(0)disk(0)rdisk(<strong><span
style="color: #ff0000;">0</span></strong>)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /fastdetect</span></p><p>El parámetro <span
style="color: #000000; font-family: 'courier new', courier;">rdisk</span> (marcado en rojo) es el que se genera incorrectamente y aparece inicialmente con el valor de <span
style="font-family: 'courier new', courier;">1</span> (segundo disco duro).</p><h2>Cambiar la ruta de los archivos de instalación.</h2><p>Una vez superado el problema anterior el sistema operativo deberá iniciar sin problemas.  De manera opcional elegí copiar los archivos del sistema operativo al disco duro del <em>netbook</em> para que estén disponibles si se hace necesaria la instalación de algún componente adicional sin que se necesite insertar nuevamente la unidad USB preparada al comienzo de este procedimiento.</p><p>Para lograr esto además de copiar físicamente los archivos del CDROM de instalación al un directorio del disco duro, es necesario actualizar la referencia que tiene el sistema operativo de esta ruta.  Para hacer esto se debe ejecutar el programa <span
style="font-family: 'courier new', courier;">regedit</span> (hágalo como Administrador si obtiene problemas de permisos) y acceda a la siguiente rama en el panel izquierdo.</p><p
style="padding-left: 30px;"><span
style="font-family: 'courier new', courier;">HKEY_LOCAL_MACHINE</span> &gt; <span
style="font-family: 'courier new', courier;">Software</span> &gt; <span
style="font-family: 'courier new', courier;">Microsoft</span> &gt; <span
style="font-family: 'courier new', courier;">Windows</span> &gt; <span
style="font-family: 'courier new', courier;">CurrentVersion</span> &gt; <span
style="font-family: 'courier new', courier;">Setup</span>.</p><p>Ubicado en esa rama identifique la variable <span
style="font-family: 'courier new', courier;">SourcePath</span> en el panel derecho y modifique su valor a la ruta absoluta donde se encuentra el directorio <span
style="font-family: 'courier new', courier;">\i386</span> de los archivos de instalación de Windows: <span
style="font-family: 'courier new', courier;">c:\instaladores\windowsxp\i386</span> en mi caso específico.</p> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2011/06/instalacion-de-windows-xp-en-un-netbook-desde-una-unidad-usb/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Google Chrome y los puertos inseguros: ERR_UNSAFE_PORT</title><link>http://blog.jorgeivanmeza.com/2011/06/google-chrome-y-los-puertos-inseguros-err_unsafe_port/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google-chrome-y-los-puertos-inseguros-err_unsafe_port</link> <comments>http://blog.jorgeivanmeza.com/2011/06/google-chrome-y-los-puertos-inseguros-err_unsafe_port/#comments</comments> <pubDate>Fri, 03 Jun 2011 00:45:49 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[Chrome]]></category> <category><![CDATA[GNU/Linux]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[Hipergalaxia]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=17721</guid> <description><![CDATA[Introducción. Aparentemente Google Chrome incluye características de seguridad obligatorias como esta que impide que el usuario acceda a servidores a través de ciertos puertos considerados inseguros aunque eso sea realmente lo que se desea. A continuación se define el procedimiento &#8230; <a
href="http://blog.jorgeivanmeza.com/2011/06/google-chrome-y-los-puertos-inseguros-err_unsafe_port/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>Aparentemente <a
href="http://www.google.com/chrome/" target="_blank">Google Chrome</a> incluye características de seguridad <em>obligatorias</em> como esta que impide que el usuario acceda a servidores a través de ciertos puertos considerados inseguros aunque eso sea realmente lo que se desea.</p><div
id="attachment_17723" class="wp-caption aligncenter" style="width: 815px"><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/06/Selection_014.png"><img
class="size-full wp-image-17723" title="Selection_014" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/06/Selection_014.png" alt="Error puertos inseguros de Google Chrome" width="805" height="190" /></a><p
class="wp-caption-text">Error puertos inseguros de Google Chrome</p></div><p>A continuación se define el procedimiento necesario para indicarle a Chrome que efectivamente se desea acceder a esos puertos.</p><h2>Procedimiento.</h2><p>La única opción es indicarle a Chrome desde el momento de su ejecución cuales son los puertos que se consideran seguros para permitir conexiones mas allá de los estándar.  Para hacer esto es necesario indicar el parámetro <span
style="font-family: 'courier new', courier;">&#8211;explicitly-allowed-ports</span> seguido por la lista de puertos separados por comas.  Por ejemplo:</p><p><span
style="font-family: 'courier new', courier;">$ /usr/bin/google-chrome &#8211;explicitly-allowed-ports=4444,5555,6666</span></p><p>Por facilidad, especialmente en la plataforma Windows, se recomienda modificar el acceso directo a la aplicación para que la modificación perdure.</p> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2011/06/google-chrome-y-los-puertos-inseguros-err_unsafe_port/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Modificar la contraseña del usuario root de MySQL 5</title><link>http://blog.jorgeivanmeza.com/2011/06/modificar-la-contrasena-del-usuario-root-de-mysql-5/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=modificar-la-contrasena-del-usuario-root-de-mysql-5</link> <comments>http://blog.jorgeivanmeza.com/2011/06/modificar-la-contrasena-del-usuario-root-de-mysql-5/#comments</comments> <pubDate>Thu, 02 Jun 2011 21:50:57 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Bases de datos]]></category> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[contraseña]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[MySQL]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=17718</guid> <description><![CDATA[Introducción. El procedimiento que se describe a continuación permite modificar la contraseña del usuario administrador (root)  de MySQL 5.  Es útil para los casos en que esta se olvida y por lo tanto ya no es posible acceder a sus &#8230; <a
href="http://blog.jorgeivanmeza.com/2011/06/modificar-la-contrasena-del-usuario-root-de-mysql-5/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>El procedimiento que se describe a continuación permite modificar la contraseña del usuario administrador (<span
style="font-family: 'courier new', courier;">root</span>)  de MySQL 5.  Es útil para los casos en que esta se olvida y por lo tanto ya no es posible acceder a sus funciones de administración.</p><h2>Procedimiento.</h2><p>Detener el servicio si se está ejecutando actualmente.</p><p><span
style="font-family: 'courier new', courier;"># service mysql5 stop</span></p><p>Iniciar el servicio con el modificador de <em>skip-grant-tables</em>.</p><p><span
style="font-family: 'courier new', courier;"># mysqld_safe &#8211;skip-grant-tables &amp;</span></p><p>Realizar una conexión al motor de base de datos a través de la herramienta de línea de comando.</p><p><span
style="font-family: 'courier new', courier;"># mysql -u root</span></p><p>Realizar la actualización de la contraseña.  Téngase en cuenta que se deberá modificar la palabra <span
style="font-family: 'courier new', courier;">NUEVO_PASSWORD</span> por la nueva contarseña que se desee asignar al usuario <span
style="font-family: 'courier new', courier;">root</span>.</p><p><span
style="font-family: 'courier new', courier;">mysql&gt; use mysql;</span><br
/> <span
style="font-family: 'courier new', courier;">mysql&gt; update user set password=PASSWORD("NUEVO_PASSWORD") where User='root';</span><br
/> <span
style="font-family: 'courier new', courier;">mysql&gt; flush privileges;</span><br
/> <span
style="font-family: 'courier new', courier;">mysql&gt; quit</span></p><p>Detener el servicio</p><p><span
style="font-family: 'courier new', courier;"># service mysql5 stop</span></p><p>Iniciarlo normalmente.</p><p><span
style="font-family: 'courier new', courier;"># service mysql5 start</span></p> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2011/06/modificar-la-contrasena-del-usuario-root-de-mysql-5/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Instalar Eclipse y el plugin ADT en GNU/Linux</title><link>http://blog.jorgeivanmeza.com/2011/05/instalar-eclipse-y-el-plugin-adt-en-gnulinux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalar-eclipse-y-el-plugin-adt-en-gnulinux</link> <comments>http://blog.jorgeivanmeza.com/2011/05/instalar-eclipse-y-el-plugin-adt-en-gnulinux/#comments</comments> <pubDate>Fri, 27 May 2011 17:21:56 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Desarrollo de software]]></category> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Móvil]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[ADT]]></category> <category><![CDATA[Android]]></category> <category><![CDATA[Eclipse]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[SDK]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=16594</guid> <description><![CDATA[Introducción. Para el desarrollo de aplicaciones en Android además de la instalación del SDK es necesario instalar Eclipse como ambiente de desarrollo -oficial- y el plugin ADT para su interacción con Android. Obtener Eclipse. Descargar de la siguiente ubicación una &#8230; <a
href="http://blog.jorgeivanmeza.com/2011/05/instalar-eclipse-y-el-plugin-adt-en-gnulinux/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>Para el desarrollo de aplicaciones en Android además de la <a
href="http://blog.jorgeivanmeza.com/2011/05/instalacion-del-sdk-r11-de-android-en-gnulinux/" target="_blank">instalación del SDK</a> es necesario instalar <a
href="http://eclipse.org/" target="_blank">Eclipse</a> como ambiente de desarrollo -oficial- y el <em>plugin</em> ADT para su interacción con Android.</p><h2>Obtener Eclipse.</h2><div
id="attachment_16600" class="wp-caption aligncenter" style="width: 692px"><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/Selection_0072.png"><img
class="size-full wp-image-16600" title="Selection_007" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/Selection_0072.png" alt="Distribuciones de Eclipse" width="682" height="590" /></a><p
class="wp-caption-text">Distribuciones de Eclipse</p></div><p>Descargar de la siguiente ubicación una distribución de Eclipse que corresponda con el sistema operativo y arquitectura donde se desee instalar.  Para el desarrollo de aplicaciones con Android se recomienda utilizar la distribución clásica o la de Java, sin que esto aparentemente sea obligatorio.</p><p
style="padding-left: 30px;"><a
href="http://eclipse.org/downloads/" target="_blank">http://eclipse.org/downloads/</a></p><h2>Instalar Eclipse.</h2><p>La instalación de Eclipse consiste únicamente en desempaquetarlo y ubicarlo en la ruta donde finalmente residirá.</p><p><span
style="font-family: courier new,courier;">$ tar zxvf eclipse-java-helios-SR2-linux-gtk.tar.gz</span></p><p><span
style="font-family: courier new,courier;">$ mv eclipse ~/</span></p><h2>Instalar el <em>plugin</em> ADT.</h2><p>Iniciar Eclipse y seleccionar la opción <strong>Install new software&#8230;</strong> del menú <strong>Help</strong>.</p><p>Presionar el botón <strong>Add&#8230;</strong> (esquina superior derecha) y especificar los siguientes valorses.</p><ul><li> <span
style="font-family: courier new,courier;">ADT Plugin</span> como <strong>Name</strong>.</li><li><span
style="font-family: courier new,courier;">https://dl-ssl.google.com/android/eclipse/</span> como <strong>Location</strong>.</li></ul><div
id="attachment_16601" class="wp-caption aligncenter" style="width: 563px"><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/Add-Repository-_008.png"><img
class="size-full wp-image-16601" title="Add Repository _008" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/Add-Repository-_008.png" alt="Agregar un repositorio a Eclipse" width="553" height="197" /></a><p
class="wp-caption-text">Agregar un repositorio a Eclipse</p></div><p>Seleccionar la casilla de verificación de la rama <strong>Developer Tools</strong>.</p><div
id="attachment_16602" class="wp-caption aligncenter" style="width: 708px"><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/Selection_0073.png"><img
class="size-full wp-image-16602" title="Selection_007" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/Selection_0073.png" alt="Paquete Developer Tools del plugin ADT de Eclipse." width="698" height="162" /></a><p
class="wp-caption-text">Paquete Developer Tools del plugin ADT de Eclipse.</p></div><p>Presione el botón <strong>Next</strong> en los dos diálogos siguientes.  Seleccione la opción <em>I accept the terms of the license agreements</em> y presione el botón <strong>Finish</strong> para terminar el procedimiento.  Reinicie Eclipse cuando este lo solicite.</p><h2>Configurar el <em>plugin</em> ADT.</h2><p>En Eclipse acceda al diálogo de preferencias a través del menú <strong>Window</strong> &gt; <strong>Preferences</strong>.</p><p>Seleccione la opción <strong>Android</strong> en el árbol del lado izquierdo.</p><p>Presione el botón <strong>Browse&#8230;</strong> y ubique el directorio de instalación del Android SDK si este no aparece correctamente.  Presione el botón <strong>Apply</strong> y finalmente <strong>Ok</strong>.</p><div
id="attachment_16606" class="wp-caption aligncenter" style="width: 739px"><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/Preferences-_007.png"><img
class="size-full wp-image-16606" title="Preferences _007" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/05/Preferences-_007.png" alt="Preferencias del plugin ADT" width="729" height="452" /></a><p
class="wp-caption-text">Preferencias del plugin ADT</p></div><h2>Enlaces.</h2><ul><li>Eclipse.<br
/> <a
href="http://eclipse.org/" target="_blank">http://eclipse.org/</a></li><li>ADT plugin for Eclipse.<br
/> <a
href="http://developer.android.com/sdk/eclipse-adt.html" target="_blank">http://developer.android.com/sdk/eclipse-adt.html</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2011/05/instalar-eclipse-y-el-plugin-adt-en-gnulinux/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Recuperar la sesión de Firefox</title><link>http://blog.jorgeivanmeza.com/2011/04/recuperar-la-sesion-de-firefox/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=recuperar-la-sesion-de-firefox</link> <comments>http://blog.jorgeivanmeza.com/2011/04/recuperar-la-sesion-de-firefox/#comments</comments> <pubDate>Fri, 22 Apr 2011 16:49:51 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[Firefox]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[sesión]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=15526</guid> <description><![CDATA[Introducción. Firefox tiene una característica que permite recuperar el conetenido de su sesión (las pestañas abiertas) aún después de que ha ocurrido un problema grave de ejecución como es el caso cuando el proceso termina abruptamente o el equipo se &#8230; <a
href="http://blog.jorgeivanmeza.com/2011/04/recuperar-la-sesion-de-firefox/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p><a
href="http://getfirefox.com/" target="_blank"></a><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/04/133px-Firefox-logo.svg_1.png"><img
class="size-full wp-image-15527 alignleft" title="133px-Firefox-logo.svg" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/04/133px-Firefox-logo.svg_1.png" alt="" width="133" height="127" /></a>Firefox tiene una característica que permite recuperar el conetenido de su sesión (las pestañas abiertas) aún después de que ha ocurrido un problema grave de ejecución como es el caso cuando el proceso termina abruptamente o el equipo se apaga sin cerrarse convenientemente.</p><p>La siguiente vez que se utiliza Firefox, este permite elegir si se desea <em>iniciar una nueva sesión</em> o si por el contrario se desea <em>restaurar la versión anterior</em>.</p><p>Yo acostumbro aprovechar esta característica para trabajar en ciertas páginas web durante varias sesiones sin tomar nota de sus URLs, confiando en que la restauración de sesión las abrirá nuevamente.  Esto ha sido confiable salvo algunas pocas oportunidades en las cuales he perdido la sesión, especialmente molesto cuando por error propio presiono el botón de iniciar una nueva sesión en lugar del de restaurar.</p><p>Por suerte Firefox permite recuperar la copia de seguridad de la sesión aún si se ha decidido iniciar una nueva.  El procedimiento es muy simple y se explica a continuación.</p><h2>Procedimiento.</h2><p>Tan pronto como se desee recuperar la copia de seguridad de la sesión anterior escribir en la barra de direcciones la siguiente instrucción.</p><p
style="padding-left: 30px;"><span
style="font-family: courier new,courier;">about:sessionrestore</span></p><p>La última sesión disponible se recuperará inmediatamente restaurando las pestañas que se tenía abiertas.</p><p>La configuración de la restauración de sesión permite ajustar otros comportamientos relacionados como el forzar a que siempre se restaure la sesión si hay una disponible, restaure automáticamente la siguiente sesión únicamente o desactivar esta característica.</p><h2>Enlaces.</h2><ul><li>Session Restore en mozillaZine.<br
/> <a
href="http://kb.mozillazine.org/Session_Restore" target="_blank">http://kb.mozillazine.org/Session_Restore</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2011/04/recuperar-la-sesion-de-firefox/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Descubrir equipos cercanos con Processing y bluetoothDesktop</title><link>http://blog.jorgeivanmeza.com/2010/12/descubrir-equipos-cercanos-con-processing-y-bluetoothdesktop/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=descubrir-equipos-cercanos-con-processing-y-bluetoothdesktop</link> <comments>http://blog.jorgeivanmeza.com/2010/12/descubrir-equipos-cercanos-con-processing-y-bluetoothdesktop/#comments</comments> <pubDate>Fri, 10 Dec 2010 00:10:53 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Desarrollo de software]]></category> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[Bluetooth]]></category> <category><![CDATA[bluetoothDesktop]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[Processing]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=12923</guid> <description><![CDATA[Introducción. En el presente artículo se describe el proceso de instalación de la librería bluetoothDesktop en GNU/Linux (para Windows es similar) que permite manipular el módulo de Bluetooth del dispositivo donde se ejecuta el sketch y con ella se implementa &#8230; <a
href="http://blog.jorgeivanmeza.com/2010/12/descubrir-equipos-cercanos-con-processing-y-bluetoothdesktop/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>En el presente artículo se describe el proceso de instalación de la librería <strong>bluetoothDesktop</strong> en GNU/Linux (para Windows es similar) que permite manipular el módulo de Bluetooth del dispositivo donde se ejecuta el <em>sketch</em> y con ella se implementa el procedimiento para detectar dispositivos cercanos que utilicen este protocolo de comunicaciones.</p><h2>Obtener la librería.</h2><p>Descargar la versión disponible mas reciente en el sitio web del proveedor.</p><p
style="padding-left: 30px;"><a
href="http://www.extrapixel.ch/processing/bluetoothDesktop/download.html" target="_blank">http://www.extrapixel.ch/processing/bluetoothDesktop/download.html</a></p><h2>Instalación de la librería.</h2><p>Descomprimir el paquete recién descargado.</p><p>Mover el directorio <span
style="font-family: 'courier new', courier;">bluetoothDesktop/</span> al directorio de librerías de Processing en <span
style="font-family: 'courier new', courier;">~/sketchbook/libraries/</span>.  El resultado se deberá apreciar de la siguiente manera.<br
/> <span
style="font-family: 'courier new', courier;">$ ls -l ~/sketchbook/libraries/bluetoothDesktop/</span></p><div
style="padding-left: 30px;"><span
style="font-family: 'courier new', courier;">drwxr-xr-x 5 jimezam jimezam 4096 2010-12-08 22:47 examples</span></div><div
style="padding-left: 30px;"><span
style="font-family: 'courier new', courier;">-rw-r&#8211;r&#8211; 1 jimezam jimezam  910 2007-12-17 21:25 howto.txt</span></div><div
style="padding-left: 30px;"><span
style="font-family: 'courier new', courier;">drwxr-xr-x 3 jimezam jimezam 4096 2010-12-08 23:09 library</span></div><div
style="padding-left: 30px;"><span
style="font-family: 'courier new', courier;">drwxr-xr-x 2 jimezam jimezam 4096 2010-12-08 22:47 src</span></div><p>Remover los siguientes archivos ubicados bajo el directorio <span
style="font-family: 'courier new', courier;">~/sketchbook/libraries/library/</span>.</p><ul><li><span
style="font-family: 'courier new', courier;">libavetanaBT.so</span></li><li><span
style="font-family: 'courier new', courier;">export.txt</span></li><li><span
style="font-family: 'courier new', courier;">bluecove-2.0.2-snapshot.jar</span></li><li><span
style="font-family: 'courier new', courier;">avetanaBT_readme.txt</span></li><li><span
style="font-family: 'courier new', courier;">avetanaBT.jar</span></li></ul><p>Copiar en es mismo directorio los siguientes archivos que pueden obtenerse del <a
href="http://code.google.com/p/bluecove/" target="_blank">sitio web de Bluecove</a>.</p><ul><li><span
style="font-family: 'courier new', courier;">bluecove-x.x.x.jar</span></li><li><span
style="font-family: 'courier new', courier;">bluecove-gpl-x.x.x.jar</span> (requerido para Linux).</li></ul><p>El contenido final de ese directorio se aprecia de la siguiente manera.</p><p><span
style="font-family: 'courier new', courier;">$ ls -l ~/sketchbook/libraries/bluetoothDesktop/library/</span></p><p
style="padding-left: 30px;"><span
style="font-family: 'courier new', courier;">-rw-r&#8211;r&#8211; 1 jimezam jimezam 547156 2010-12-08 21:27 bluecove-2.1.0.jar<br
/> -rw-r&#8211;r&#8211; 1 jimezam jimezam  89022 2010-12-08 21:26 bluecove-gpl-2.1.0.jar<br
/> -rw-r&#8211;r&#8211; 1 jimezam jimezam   9409 2007-11-14 19:01 bluetoothDesktop.jar</span></p><h2>Implementación.</h2><p>Importar el paquete principal de la librería.</p><pre class="java">import bluetoothDesktop.*;</pre><p>Crear un objeto para hacer referencia al dispositivo de Bluetooth.</p><pre class="java">Bluetooth bluetoothInstance = new Bluetooth(this);</pre><p>Iniciar el proceso de descubrimiento de dispositivos cercanos.</p><pre class="java">bluetoothInstance.discover();</pre><p>Implementar el método <span
style="font-family: 'courier new', courier;">deviceDiscoverEvent</span> el cual es llamado cada vez que un nuevo dispositivo Bluetooth es detectado.</p><pre class="java">void deviceDiscoverEvent(Device dev)
{
    println("Discovering ... name=" + dev.name + "; address=" + dev.address);
}</pre><p>Implementar el método <span
style="font-family: 'courier new', courier;">deviceDiscoveryCompleteEvent</span> el cual es llamado una única vez al terminarse el proceso de descubrimiento.</p><pre class="java">void deviceDiscoveryCompleteEvent(Device[] devices)
{
  println("I Found " + devices.length+ " devices.");
  for(int i=0; i&lt;devices.length; i++)
  {
    println(i + "# name=" + devices[i].name + "; address=" + devices[i].address);
  }
}</pre><h2>Aplicación de demostración.</h2><div
id="attachment_12926" class="wp-caption aligncenter" style="width: 604px"><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/12/Selection_008.png"><img
class="size-full wp-image-12926" title="Selection_008" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/12/Selection_008.png" alt="Aplicación de demostración - Descubrir dispositivos Bluetooth cercanos" width="594" height="767" /></a><p
class="wp-caption-text">Aplicación de demostración - Descubrir dispositivos Bluetooth cercanos</p></div><h2>Enlaces.</h2><ul><li>Código fuente de la aplicación de demostración.<br
/> <a
href="http://demo.jorgeivanmeza.com/Processing/BtDiscoverDemo/" target="_blank">http://demo.jorgeivanmeza.com/Processing/BtDiscoverDemo/</a></li><li>bluetoothDesktop &#8211; Bluetooth Library for Processing.<br
/> <a
href="http://www.extrapixel.ch/processing/bluetoothDesktop/" target="_blank">http://www.extrapixel.ch/processing/bluetoothDesktop/</a></li><li>Processing.<br
/> <a
href="http://processing.org/" target="_blank">http://processing.org/</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2010/12/descubrir-equipos-cercanos-con-processing-y-bluetoothdesktop/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Laberinto 0.2 controlado por wiimote</title><link>http://blog.jorgeivanmeza.com/2010/12/laberinto-0-2-controlado-por-wiimote/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laberinto-0-2-controlado-por-wiimote</link> <comments>http://blog.jorgeivanmeza.com/2010/12/laberinto-0-2-controlado-por-wiimote/#comments</comments> <pubDate>Thu, 09 Dec 2010 20:22:17 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Desarrollo de software]]></category> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[Bluetooth]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[Processing]]></category> <category><![CDATA[Wiimote]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=12918</guid> <description><![CDATA[Introducción. Preparando un mejor ejemplo para el uso del wiimote con Processing decidí actualizar la versión procedimiental del Laberinto que utilicé como demostración en una charla hace un par de meses. Con esta mejora es posible conectar el wiimote al sketch &#8230; <a
href="http://blog.jorgeivanmeza.com/2010/12/laberinto-0-2-controlado-por-wiimote/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>Preparando un mejor ejemplo para el uso del wiimote con Processing decidí actualizar la <a
href="http://blog.jorgeivanmeza.com/2010/09/charla-introduccion-a-processing-en-201009/" target="_blank">versión procedimiental del Laberinto</a> que utilicé como demostración en una charla hace un par de meses.</p><p>Con esta mejora es posible conectar el wiimote al <em>sketch</em> y controlar con él al caballero en busca de su tesoro mas preciado: la princesa <img
src='http://blog.jorgeivanmeza.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Adicionalmente el wiimote vibrará cuando el caballero se encuentre con ella.</p><p>El movimiento del caballero es controlado por el d-pad mientras que el botón de inicio (<em>home</em>) lo teletransporta y el botón #1 reinicia el juego.</p><h2>Implementación.</h2><p>Como primera instancia es necesario tener <a
href="http://blog.jorgeivanmeza.com/2010/12/utilizar-el-wiimote-con-processing-en-ubuntu-10-10/" target="_blank">instaladas las librerías requeridas para el uso del wiimote con Processing</a>.</p><p>A continuación se realizan las siguientes modificaciones al código base del <em>sketch</em>.</p><p>Se importa el paquete de las clases relacionadas con el wiimote.</p><pre class="java">import lll.wrj4P5.*;</pre><p>Se establece una referencia global al control.</p><pre class="java">Wrj4P5 wii;</pre><p>En el <span
style="font-family: 'courier new', courier;">setup</span> se establece la conexión con el wiimote.</p><pre class="java">void setup()
{
    // ...
    wii = new Wrj4P5(this);
    wii.connect();
}</pre><div>Se implementa el método <span
style="font-family: 'courier new', courier;">buttonPressed</span> para manejar los eventos provenientes del control con la lógica que se mencionó anteriormente: d-pad controla la dirección, <em>home</em> teletransporta al jugador y el botón #1 reinicia el juego.</div><pre class="java">void buttonPressed(RimokonEvent evt, int rid)
{
  if (evt.wasPressed(RimokonEvent.LEFT))
    moverJugador(LEFT);
  if (evt.wasPressed(RimokonEvent.RIGHT))
    moverJugador(RIGHT);
  if (evt.wasPressed(RimokonEvent.DOWN))
    moverJugador(DOWN);
  if (evt.wasPressed(RimokonEvent.UP))
    moverJugador(UP);
  if (evt.wasPressed(RimokonEvent.ONE))
    reset();
  if (evt.wasPressed(RimokonEvent.HOME))
    teletransportarJugador();
}</pre><p>La verificación del encuentro entre la princesa y el caballero se realiza en el método <span
style="font-family: 'courier new', courier;">moverJugador</span> y sucede cuando la nueva ubicación del caballero no es una pared &amp;&amp; es un tesoro, en ese momento se ejecuta la siguiente instrucción para hacer vibrar el control.</p><pre class="java">wii.rimokon.vibrateFor(400);</pre><h2>Enlaces.</h2><div><ul><li>Código fuente de la versión 0.2 del Laberinto.<br
/> <a
href="http://demo.jorgeivanmeza.com/Processing/Laberinto/" target="_blank">http://demo.jorgeivanmeza.com/Processing/Laberinto/</a></li><li>Utilizar el wiimote con Processing en Ubuntu 10.10.<br
/> <a
href="http://blog.jorgeivanmeza.com/2010/12/utilizar-el-wiimote-con-processing-en-ubuntu-10-10/" target="_blank">http://blog.jorgeivanmeza.com/2010/12/utilizar-el-wiimote-con-processing-en-ubuntu-10-10/</a></li><li>Métodos de las clases de Wrj4P5 para Processing.<br
/> <a
href="http://sourceforge.jp/projects/wrj4p5/wiki/Wrj4P5(en)" target="_blank">http://sourceforge.jp/projects/wrj4p5/wiki/Wrj4P5(en)</a></li></ul></div> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2010/12/laberinto-0-2-controlado-por-wiimote/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Utilizar el wiimote con Processing en Ubuntu 10.10</title><link>http://blog.jorgeivanmeza.com/2010/12/utilizar-el-wiimote-con-processing-en-ubuntu-10-10/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=utilizar-el-wiimote-con-processing-en-ubuntu-10-10</link> <comments>http://blog.jorgeivanmeza.com/2010/12/utilizar-el-wiimote-con-processing-en-ubuntu-10-10/#comments</comments> <pubDate>Thu, 09 Dec 2010 03:38:41 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Desarrollo de software]]></category> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[Bluetooth]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[Processing]]></category> <category><![CDATA[Wiimote]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=12879</guid> <description><![CDATA[Introducción. En el presente artículo se describen las librerías necesarias para acceder a la información proveniente de un wiimote desde sketches desarrollados en Processing y se implementa un sketch simple para verificar su funcionamiento. Obtener e instalar las librerías requeridas. &#8230; <a
href="http://blog.jorgeivanmeza.com/2010/12/utilizar-el-wiimote-con-processing-en-ubuntu-10-10/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>En el presente artículo se describen las librerías necesarias para acceder a la información proveniente de un wiimote desde <em>sketches</em> desarrollados en Processing y se implementa un <em>sketch</em> simple para verificar su funcionamiento.</p><h2>Obtener e instalar las librerías requeridas.</h2><p>Obtener los siguientes archivos.</p><table
border="0"><tbody><tr><td>wrj4P5 (alpha-011)</td><td><a
href="http://sourceforge.jp/projects/wrj4p5/releases/" target="_blank">http://sourceforge.jp/projects/wrj4p5/releases/</a></td><td><span
style="font-family: 'courier new', courier;">wrj4P5.jar</span></td></tr><tr><td>Loc (beta-005)</td><td><a
href="http://sourceforge.jp/projects/wrj4p5/releases/" target="_blank">http://sourceforge.jp/projects/wrj4p5/releases/</a></td><td><span
style="font-family: 'courier new', courier;">Loc.jar</span></td></tr><tr><td>WiiRemoteJ (1.6)</td><td><a
href="http://www.world-of-cha0s.hostrocket.com/WiiRemoteJ/" target="_blank">http://www.world-of-cha0s.hostrocket.com/WiiRemoteJ/</a></td><td><span
style="font-family: 'courier new', courier;">WiiRemoteJ v1.6.zip.gz</span></td></tr><tr><td>BlueCove (2.1.0)</td><td><a
href="http://code.google.com/p/bluecove/downloads/list" target="_blank">http://code.google.com/p/bluecove/downloads/list</a></td><td><span
style="font-family: 'courier new', courier;">bluecove-gpl-2.1.0.jar<br
/> </span><span
style="font-family: 'courier new', courier;">bluecove-2.1.0.jar</span></td></tr></tbody></table><p>Crear el directorio <span
style="font-family: 'courier new', courier;">libraries</span><span
style="font-family: 'courier new', courier;">/wrj4P5/library</span> bajo el directorio de los <em>sketches</em> del usuario.  En mi caso, bajo <span
style="font-family: 'courier new', courier;">~/sketchbook</span>.</p><p><span
style="font-family: 'courier new', courier;">$ mkdir ~/sketchbook/libraries/wrj4P5/library</span></p><p>Copiar los siguientes archivos a la ruta recién creada.</p><ol><li><span
style="font-family: 'courier new', courier;">bluecove-2.1.0.jar</span></li><li><span
style="font-family: 'courier new', courier;">bluecove-gpl-2.1.0.jar</span> (requerido para Linux)</li><li><span
style="font-family: 'courier new', courier;">Loc.jar</span></li><li><span
style="font-family: 'courier new', courier;">WiiRemoteJ.jar</span></li><li><span
style="font-family: 'courier new', courier;">wrj4P5.jar</span></li></ol><p>Con las versiones utilizadas el contenido del directorio queda de la siguiente manera.</p><p><span
style="font-family: 'courier new', courier;">$ ls -l ~/sketchbook/libraries/wrj4P5/library</span></p><p
style="padding-left: 30px;"><span
style="font-family: 'courier new', courier;">-rw-r&#8211;r&#8211; 1 jimezam jimezam 547156 2010-12-08 21:27 bluecove-2.1.0.jar<br
/> </span><span
style="font-family: 'courier new', courier;">-rw-r&#8211;r&#8211; 1 jimezam jimezam  89022 2010-12-08 21:26 bluecove-gpl-2.1.0.jar<br
/> </span><span
style="font-family: 'courier new', courier;">-rw-r&#8211;r&#8211; 1 jimezam jimezam  34765 2010-12-08 21:44 Loc.jar<br
/> </span><span
style="font-family: 'courier new', courier;">-rw-r&#8211;r&#8211; 1 jimezam jimezam  91091 2009-03-12 12:00 WiiRemoteJ.jar<br
/> </span><span
style="font-family: 'courier new', courier;">-rw-r&#8211;r&#8211; 1 jimezam jimezam  39825 2010-12-08 21:40 wrj4P5.jar</span></p><p>Además es necesario contar (en mi caso) con las siguientes librerías del repositorio de Ubuntu.</p><ul><li><span
style="font-family: 'courier new', courier;">bluez</span></li><li><span
style="font-family: 'courier new', courier;">libbluetooth3</span></li><li><span
style="font-family: 'courier new', courier;">libbluetooth3-dev</span></li></ul><h2>Crear un <em>sketch</em> de demostración.</h2><p>Para esto se utiliza el código fuente del sketch <a
href="http://www.geocities.jp/classiclll_newweb/MyFirstWii/applet/" target="_blank">MyFirstWii</a>.</p><div
id="attachment_12886" class="wp-caption aligncenter" style="width: 830px"><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/12/Workspace-1_007.png"><img
class="size-full wp-image-12886" title="Workspace 1_007" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2010/12/Workspace-1_007.png" alt="Sketch de demostración" width="820" height="768" /></a><p
class="wp-caption-text">Sketch de demostración</p></div><p>Crear un nuevo <em>sketch</em> en el PDE (File &gt; New) y copie el <a
href="http://www.geocities.jp/classiclll_newweb/MyFirstWii/applet/MyFirstWii.txt" target="_blank">código fuente de demostración</a>.  Ejecute el <em>sketch</em> para probar el código (Sketch &gt; Run).</p><p>Para conectar el wiimote al sketch presione al tiempo los botones 1 y 2 del wiimote por un momento.</p><h2>Conclusiones iniciales.</h2><ul><li>Sería interesante tener mas control e información acerca del proceso de conexión con el wiimote.</li><li>La lectura de los botones del wiimote funciona muy bien.</li><li>La lectura del acelerómetro parece ser incorrecta y el cubo de la demostración gira sin control.</li><li>Será necesario hacer mas pruebas con estas librerías, incluyendo otras versiones de las mismas.</li></ul><h2>Enlaces.</h2><ul><li>Proyecto wrj4P5.<br
/> <a
href="http://sourceforge.jp/projects/wrj4p5/">http://sourceforge.jp/projects/wrj4p5/</a></li><li>WiiRemoteJ.<br
/> <a
href="http://www.world-of-cha0s.hostrocket.com/WiiRemoteJ/" target="_blank"> http://www.world-of-cha0s.hostrocket.com/WiiRemoteJ/</a></li><li>BlueCove.<br
/> <a
href="http://code.google.com/p/bluecove/" target="_blank"> http://code.google.com/p/bluecove/</a></li><li>How to Use a WiiMote in a Processing Sketch.<br
/> <a
href="http://www.brockcraft.com/2008/05/15/how-to-use-a-wiimote-in-a-processing-sketch/" target="_blank">http://www.brockcraft.com/2008/05/15/how-to-use-a-wiimote-in-a-processing-sketch/</a></li><li>MyFirstWii Processing applet.<br
/> <a
href="http://www.geocities.jp/classiclll_newweb/MyFirstWii/applet/" target="_blank">http://www.geocities.jp/classiclll_newweb/MyFirstWii/applet/</a></li><li>How to Install a Contributed Library.<br
/> <a
href="http://wiki.processing.org/w/How_to_Install_a_Contributed_Library" target="_blank">http://wiki.processing.org/w/How_to_Install_a_Contributed_Library</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2010/12/utilizar-el-wiimote-con-processing-en-ubuntu-10-10/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Manejar los errores fatales en PHP</title><link>http://blog.jorgeivanmeza.com/2010/12/manejar-los-errores-fatales-en-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=manejar-los-errores-fatales-en-php</link> <comments>http://blog.jorgeivanmeza.com/2010/12/manejar-los-errores-fatales-en-php/#comments</comments> <pubDate>Wed, 01 Dec 2010 16:09:17 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Desarrollo de software]]></category> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[Windows]]></category> <category><![CDATA[PHP]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=12552</guid> <description><![CDATA[Introducción. Los errores fatales son problemas críticos de los cuales no es posible recuperar la ejecución del programa, por esta misma razón no pueden ser manejados como excepciones con bloques try/catch. A pesar de que no es posible recuperar un &#8230; <a
href="http://blog.jorgeivanmeza.com/2010/12/manejar-los-errores-fatales-en-php/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción.</h2><p>Los errores fatales son problemas críticos de  los cuales no es posible recuperar la ejecución del programa, por esta  misma razón no pueden ser manejados como excepciones con bloques try/catch.</p><p>A  pesar de que no es posible recuperar un programa después de un error  fatal, si es posible realizar ciertas acciones de cierre que pueden ser  útiles para mostrar un mensaje de error mas amigable y realizar el  registro del error para su futura revisión, evitando que el lenguaje o  el <em>framework</em> que se esté utilizando muestre un error difícil de comprender para el usuario final.</p><h2>Ejemplo.</h2><p>Un caso de error fatal es el producido por la recursión infinita.</p><pre class='php'>function f($i)
{
 return f($i+1);
}
f(1);
</pre><p>El código anterior generará el siguiente mensaje de error de PHP.</p><pre>Fatal error: Maximum function nesting level of '100' reached, aborting! in php shell code on line 3
Call Stack:
 12.0763      62388   1. {main}() php shell code:0
 12.0764      62548   2. f() php shell code:1
 12.0904      62772   3. f() php shell code:3
 12.0905      62996   4. f() php shell code:3
 12.0905      63220   5. f() php shell code:3
 12.0905      63444   6. f() php shell code:3
 12.0905      63668   7. f() php shell code:3
 ...
</pre><h2>Implementación del manejo.</h2><p>Desactivar la funcionalidad de PHP para mostrar los errores al usuario.</p><pre class="php">ini_set('display_errors', 0);</pre><p>Registrar la función que se va a ejecutar durante el <em>cierre</em> de la ejecución de la aplicación.</p><pre class='php'>register_shutdown_function('shutdown');</pre><p>Realizar la implementación de la función de cierre.  En ella se filtran los diferentes tipos de error y se implementan, en este caso, únicamente los errores fatales.</p><pre class="php">function shutdown()
{
 if(!is_null($e = error_get_last()))
 {
  if($e['type'] == E_ERROR)
  {
    // ... implementación ...
  }
 }
}
</pre><h2>Enlaces.</h2><ul><li><span
style="font-family: courier new,courier;">register_shutdown_function</span> en el manual de PHP.<br
/> <a
href="http://co.php.net/register_shutdown_function" target="_blank">http://co.php.net/register_shutdown_function</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2010/12/manejar-los-errores-fatales-en-php/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
