<?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>HiperGalaxia &#187; Linux/Solaris/BSD</title>
	<atom:link href="http://www.hipergalaxia.org/blog/tag/linuxsolarisbsd/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hipergalaxia.org/blog</link>
	<description>El conocimiento, la frontera final.</description>
	<lastBuildDate>Sun, 05 Feb 2012 03:52:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<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/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=campos-autonumericos-con-sqlite3#comments</comments>
		<pubDate>Mon, 30 Jan 2012 21:33:57 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[autoincrement]]></category>
		<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Sqlite]]></category>
		<category><![CDATA[Windows]]></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>&#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>Permisos de archivos/directorios incorrectos para el servidor de páginas en GNU/Linux</title>
		<link>http://blog.jorgeivanmeza.com/2012/01/permisos-de-archivosdirectorios-incorrectos-para-el-servidor-de-paginas-en-gnulinux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=permisos-de-archivosdirectorios-incorrectos-para-el-servidor-de-paginas-en-gnulinux</link>
		<comments>http://blog.jorgeivanmeza.com/2012/01/permisos-de-archivosdirectorios-incorrectos-para-el-servidor-de-paginas-en-gnulinux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=permisos-de-archivosdirectorios-incorrectos-para-el-servidor-de-paginas-en-gnulinux#comments</comments>
		<pubDate>Mon, 30 Jan 2012 03:15:46 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[permisos]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49950</guid>
		<description><![CDATA[Introducción El problema mas común que impide que se pueda acceder correctamente a un sitio o aplicación web que se está instalando o desarrollando es que los archivos y directorios no cuenten con los permisos de acceso apropiados para que &#8230; <a href="http://blog.jorgeivanmeza.com/2012/01/permisos-de-archivosdirectorios-incorrectos-para-el-servidor-de-paginas-en-gnulinux/">Continue reading <span>&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2><p>El problema mas común que impide que se pueda acceder correctamente a un sitio o aplicación web que se está instalando o desarrollando es que los archivos y directorios no cuenten con los permisos de acceso apropiados para que el servidor de páginas (Apache por ejemplo) pueda accederlos correctamente.  En estos casos se obtiene un mensaje de error similar al  mostrado a continuación.</p><p style="padding-left: 30px;"><em>failed to open stream: Permission denied in /ruta/al/proyecto/index.php on line xx</em></p><h2>La solución</h2><p>En términos generales, los directorios deben contar con permisos 755 (<span style="font-family: courier new,courier;">drwxr-xr-x</span>) y los archivos -como .php- 644 (<span style="font-family: courier new,courier;">-rw-r&#8211;r&#8211;</span>).  Esta modificación puede realizarse de manera recursiva aprovechando la flexibilidad del comando <span style="font-family: courier new,courier;">find</span> de la siguiente manera.</p><pre>$ find /ruta/al/proyecto -type d -exec chmod 755 {} \;
$ find /ruta/al/proyecto -type f -exec chmod 644 {} \;</pre><p>Inclusive es posible establecer filtros a los nombres de los recursos actualizados para mayor precisión en el cambio.</p><pre>$ find /ruta/al/proyecto -type f -name '*.php' -exec chmod 644 {} \;</pre>]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2012/01/permisos-de-archivosdirectorios-incorrectos-para-el-servidor-de-paginas-en-gnulinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Invalid command &#039;RewriteEngine&#039; con Apache2</title>
		<link>http://blog.jorgeivanmeza.com/2012/01/invalid-command-rewriteengine-con-apache2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=invalid-command-rewriteengine-con-apache2</link>
		<comments>http://blog.jorgeivanmeza.com/2012/01/invalid-command-rewriteengine-con-apache2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=invalid-command-rewriteengine-con-apache2#comments</comments>
		<pubDate>Mon, 30 Jan 2012 02:58:08 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[rewrite]]></category>
		<category><![CDATA[RewriteEngine]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49948</guid>
		<description><![CDATA[Introducción Intentando utilizar un software web que incluía un .htaccess y este se aprovechaba de la funcionalidad del RewriteEngine de Apache2, obtenía siempre el siguiente mensaje de error. Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included &#8230; <a href="http://blog.jorgeivanmeza.com/2012/01/invalid-command-rewriteengine-con-apache2/">Continue reading <span>&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2><p>Intentando utilizar un software web que incluía un <span style="font-family: courier new,courier;">.htaccess</span> y este se aprovechaba de la funcionalidad del <span style="font-family: courier new,courier;">RewriteEngine</span> de Apache2, obtenía siempre el siguiente mensaje de error.</p><p style="padding-left: 30px;"><em>Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration</em></p><h2>Solución</h2><p>Activar el módulo del <span style="font-family: courier new,courier;">RewriteEngine</span> de Apache2.</p><p><span style="font-family: courier new,courier;">$ sudo a2enmod rewrite</span></p><p>Reiniciar Apache2 para que tenga en cuenta al módulo recién activado.</p><p><span style="font-family: courier new,courier;">$ sudo service apache2 restart</span></p> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2012/01/invalid-command-rewriteengine-con-apache2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalando Unity 5.0 en GNU/Linux Ubuntu 11.10</title>
		<link>http://blog.jorgeivanmeza.com/2012/01/instalando-unity-5-0-en-gnulinux-ubuntu-11-10/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalando-unity-5-0-en-gnulinux-ubuntu-11-10</link>
		<comments>http://blog.jorgeivanmeza.com/2012/01/instalando-unity-5-0-en-gnulinux-ubuntu-11-10/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalando-unity-5-0-en-gnulinux-ubuntu-11-10#comments</comments>
		<pubDate>Mon, 23 Jan 2012 02:52:08 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unity]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49946</guid>
		<description><![CDATA[Introducción Unity 5.0 es actualmente la última versión del ambiente de escritorio desarrollado por Canonical para Ubuntu su distribución de GNU/Linux.  Está versión que trae mejoras en su desempeño, se incluirá con la versión 12.04 ("Precise Pangolin") a liberarse en &#8230; <a href="http://blog.jorgeivanmeza.com/2012/01/instalando-unity-5-0-en-gnulinux-ubuntu-11-10/">Continue reading <span>&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2><p><a href="http://unity.ubuntu.com/">Unity</a> 5.0 es actualmente la última versión del ambiente de escritorio desarrollado por Canonical para Ubuntu su distribución de GNU/Linux.  Está versión que trae <a href="http://planetared.com/2012/01/unity-5-0-ya-esta-disponible-para-ubuntu-12-04/">mejoras en su desempeño</a>, se incluirá con la versión 12.04 ("<em>Precise Pangolin</em>") a liberarse en el mes de abril del 2012.</p><p>A continuación se describe el procedimiento necesario para instalar y desinstalar (no se ha probado aún) la versión mas reciente de Unity en Ubuntu 11.10.</p><h2>Instalación</h2><pre class="bash">$ sudo add-apt-repository ppa:unity-team/ppa
$ sudo apt-get update &amp;&amp; sudo apt-get dist-upgrade
</pre><p><strong>*Anotación*</strong> Si desea instalar los paquetes mas recientes que aún no cuentan con las pruebas de aceptación utilice el repositorio <span style="font-family: courier new,courier;">ppa:unity-team/staging</span>.</p><h2>Desinstalación</h2><pre class="bash">$ sudo apt-get install ppa-purge
$ sudo ppa-purge ppa:unity-team/ppa
</pre>]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2012/01/instalando-unity-5-0-en-gnulinux-ubuntu-11-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalando GSVideo en Processing bajo GNU/Linux</title>
		<link>http://blog.jorgeivanmeza.com/2012/01/instalando-gsvideo-en-processing-bajo-gnulinux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalando-gsvideo-en-processing-bajo-gnulinux</link>
		<comments>http://blog.jorgeivanmeza.com/2012/01/instalando-gsvideo-en-processing-bajo-gnulinux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalando-gsvideo-en-processing-bajo-gnulinux#comments</comments>
		<pubDate>Thu, 19 Jan 2012 02:22:27 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[GStreamer]]></category>
		<category><![CDATA[GSVideo]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49937</guid>
		<description><![CDATA[Introducción GSVideo es una librería para Processing desarrollada por Andrés Colubri y basada en GStreamer.  Esta librería permite reproducir videos (incluyendo a la cámara web), capturar imágenes y realizar grabaciones.  Su API sigue los lineamientos de la librería nativa (processing.video.*) &#8230; <a href="http://blog.jorgeivanmeza.com/2012/01/instalando-gsvideo-en-processing-bajo-gnulinux/">Continue reading <span>&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2><p><a href="http://gsvideo.sourceforge.net/">GSVideo</a> es una librería para <a href="http://processing.org/">Processing</a> desarrollada por <a href="http://interfaze.info/">Andrés Colubri</a> y basada en <a href="http://www.gstreamer.net/">GStreamer</a>.  Esta librería permite reproducir videos (incluyendo a la cámara web), capturar imágenes y realizar grabaciones.  Su API sigue los lineamientos de la <a href="http://processing.org/reference/libraries/video/index.html">librería nativa</a> (<span style="font-family: courier new,courier;">processing.video.*</span>) la cual por estar basada en Apple QuickTime no se encuentra disponible en GNU/Linux.</p><h2>Instalación</h2><p>La instalación de la distribución binaria es muy simple y se describe a continuación.</p><p>Descargar la versión mas reciente de la librería desde la siguiente ubicación.</p><p style="padding-left: 30px;"><a href="http://sourceforge.net/projects/gsvideo/files/gsvideo/">http://sourceforge.net/projects/gsvideo/files/gsvideo/</a></p><p>En este caso se obtuvo el archivo <span style="font-family: courier new,courier;">GSVideo-1.0.0-linux.zip</span>.</p><p>Descomprimir el paqute con la distribución de la librería.</p><p><span style="font-family: courier new,courier;">$ unzip GSVideo-1.0.0-linux.zip</span></p><p>Reubicar la librería en el lugar apropiado del <em>sketchbook</em>.</p><p><span style="font-family: courier new,courier;">$ mv GSVideo ~/sketchbook/libraries/</span></p><h2>Dependencias</h2><p>Como se mencionó inicialmente esta librería depende de GStreamer para su funcionamiento.  Utilizando GNU/Linux Mint 12 no fue necesario instalar ningún paquete adicional para trabajar con la librería.</p><p><span style="font-family: courier new,courier;">$ sudo aptitude search gstream | grep "^i"</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">i   bluez-gstreamer                 &#8211; Bluetooth GStreamer support               </span><br /><span style="font-family: courier new,courier;">i   gir1.2-gstreamer-0.10           &#8211; Description: GObject introspection data fo</span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-alsa              &#8211; GStreamer plugin for ALSA                 </span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-ffmpeg            &#8211; FFmpeg plugin for GStreamer               </span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-fluendo-mp3       &#8211; Fluendo mp3 decoder GStreamer plugin      </span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-gconf             &#8211; GStreamer plugin for getting the sink/sour</span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-nice              &#8211; ICE library (GStreamer plugin)            </span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-pitfdll           &#8211; GStreamer plugin for using MS Windows bina</span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-plugins-bad       &#8211; GStreamer plugins from the "bad" set      </span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-plugins-bad-multi &#8211; GStreamer plugins from the "bad" set (Mult</span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-plugins-base      &#8211; GStreamer plugins from the "base" set     </span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-plugins-base-apps &#8211; GStreamer helper programs from the "base" </span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-plugins-good      &#8211; GStreamer plugins from the "good" set     </span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-plugins-ugly      &#8211; GStreamer plugins from the "ugly" set     </span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-pulseaudio        &#8211; GStreamer plugin for PulseAudio           </span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-tools             &#8211; Tools for use with GStreamer              </span><br /><span style="font-family: courier new,courier;">i   gstreamer0.10-x                 &#8211; GStreamer plugins for X11 and Pango       </span><br /><span style="font-family: courier new,courier;">i   libgstreamer-plugins-base0.10-0 &#8211; GStreamer libraries from the "base" set   </span><br /><span style="font-family: courier new,courier;">i   libgstreamer0.10-0              &#8211; Core GStreamer libraries and elements</span></p><h2>Demostración</h2><p>El siguiente código se basa en el ejemplo <a href="http://gsvideo.sourceforge.net/examples/Capture/GettingStartedCaptureLinux/GettingStartedCaptureLinux.pde">GettingStartedCaptureLinux</a> incluído en la distribución de la librería.</p><pre class="java">// Import the GSVideo library classes
import codeanticode.gsvideo.*;
// GSVideo capture object reference
GSCapture cam;
void setup()
{
  size(640, 480);
  // Create the GSVideo capture object with the capture's resolution
  cam = new GSCapture(this, 640, 480);
  // Begin the video capture process
  cam.start();
  // Retrieve the video resolutions available
  println("Supported video resolutions: ");
  int[][] res = cam.resolutions();
  for (int i = 0; i &lt; res.length; i++)
  {
    println(res[i][0] + "x" + res[i][1]);
  }
  println();
  // Retrieve the video framerates available
  println("Supported video framerates: ");
  String[] fps = cam.framerates();
  for (int i = 0; i &lt; fps.length; i++)
  {
    println(fps[i]);
  }
}
void stop()
{
  // Stop the GSVideo webcam capture
  cam.stop();
  // Stop the sketch
  this.stop();
}
void draw()
{
  // Check if there is a capture device available
  if (cam.available() == true)
  {
    // In this case, read an image from it
    cam.read();
    // Display it on the window
    image(cam, 0, 0);
  }
}</pre><h2>Enlaces</h2><ul><li>GSVideo project<br /><a href="http://gsvideo.sourceforge.net/">http://gsvideo.sourceforge.net/</a></li><li>GSVideo en SourceForge<br /><a href="http://sourceforge.net/projects/gsvideo/">http://sourceforge.net/projects/gsvideo/</a></li><li>GSVideo API reference<br /><a href="http://gsvideo.sourceforge.net/reference/index.html">http://gsvideo.sourceforge.net/reference/index.html</a></li></ul> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2012/01/instalando-gsvideo-en-processing-bajo-gnulinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalación de la librería de OpenCV en Processing bajo GNU/Linux Mint 12</title>
		<link>http://blog.jorgeivanmeza.com/2012/01/instalacion-de-la-libreria-de-opencv-en-processing-bajo-gnulinux-mint-12/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalacion-de-la-libreria-de-opencv-en-processing-bajo-gnulinux-mint-12</link>
		<comments>http://blog.jorgeivanmeza.com/2012/01/instalacion-de-la-libreria-de-opencv-en-processing-bajo-gnulinux-mint-12/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalacion-de-la-libreria-de-opencv-en-processing-bajo-gnulinux-mint-12#comments</comments>
		<pubDate>Fri, 13 Jan 2012 01:00:09 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Mint]]></category>
		<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49895</guid>
		<description><![CDATA[Introducción En el presente artículo se describirán los pasos necesarios para instalar el software de OpenCV y su correspondiente librería para desarrollar sketches con él utilizando Processing. Durante el desarrollo de la instalación se utilizó GNU/Linux Mint 12 sin emgbargo &#8230; <a href="http://blog.jorgeivanmeza.com/2012/01/instalacion-de-la-libreria-de-opencv-en-processing-bajo-gnulinux-mint-12/">Continue reading <span>&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2><p>En el presente artículo se describirán los pasos necesarios para instalar el software de <a href="http://opencv.willowgarage.com/wiki/">OpenCV</a> y su correspondiente librería para desarrollar <em>sketches</em> con él utilizando <a href="http://www.processing.org/">Processing</a>.</p><p>Durante el desarrollo de la instalación se utilizó GNU/Linux Mint 12 sin emgbargo el procedimiento debe ser compatible con Ubuntu.</p><p><strong>Aviso!</strong> La versión de OpenCV que se encuentra en los repositorios del sistema operativo (<span style="font-family: courier new,courier;">2.1.0-7build1</span>) es un poco antigua, sin embargo se encontraron problemas para compilar la parte nativa de la librería con <a href="https://launchpad.net/~gijzelaar/+archive/opencv2.3">una versión mas reciente</a>.  Por este motivo se decidió utilizar la versión disponible y experimentar posteriormente una posible actualización.</p><h2>Procedimiento</h2><h3>Instalar OpenCV</h3><p><span style="font-family: courier new,courier;">$ sudo aptitude install libcv-dev libhighgui-dev libcvaux-dev opencv-doc</span></p><h3>Instalar la librería de Processing</h3><p><strong>Nota!</strong>  Se recomienda descargar la última versión disponible de la <a href="http://ubaa.net/shared/processing/opencv/">página web del desarrollador</a>.  En este caso se utilizó <span style="font-family: courier new,courier;"><a href="http://ubaa.net/shared/processing/opencv/download/opencv_01.zip">opencv_01.zip</a></span>.</p><p>Crear el directorio donde se almacenarán las librerías de Processing del usuario.</p><p><span style="font-family: courier new,courier;">$ mkdir -p ~/sketchbook/libraries ; cd ~/sketchbook/libraries</span></p><p>Descargar la librería y los ejemplos de la misma.</p><p><span style="font-family: courier new,courier;">$ wget http://ubaa.net/shared/processing/opencv/download/opencv_01.zip</span><br /><span style="font-family: courier new,courier;">$ wget http://ubaa.net/shared/processing/opencv/download/opencv_examples.zip</span></p><p>Descomprimir los paquetes recién descargados</p><p><span style="font-family: courier new,courier;">$ unzip opencv_01.zip</span><br /><span style="font-family: courier new,courier;">$ rm opencv_01.zip</span><br /><span style="font-family: courier new,courier;">$ unzip opencv_examples.zip</span><br /><span style="font-family: courier new,courier;">$ rm opencv_examples.zip</span></p><p>Ubicar correctamente el directorio con los ejemplos.</p><p><span style="font-family: courier new,courier;">$ mv OpenCV\ examples/ OpenCV/examples</span></p><h3>Recompilar el módulo nativo de la librería</h3><p>La librería incluye una librería del sistema operativo (<span style="font-family: courier new,courier;">libOpenCV.so</span>) enlazada dinámicamente con OpenCV.  La incluída con la distribución de la librería recién instalada fue compilada con versiones anteriores de OpenCV motivo por el cual no se cumplen sus dependencias y en el momento de compilar los <em>sketches</em> se obtiene el siguiente mensaje de error.</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">!!! required library not found : /home/jimezam/sketchbook/libraries/OpenCV/library/libOpenCV.so: libcxcore.so.1: cannot open shared object file: No such file or directory</span><br /><span style="font-family: courier new,courier;">Verify that the java.library.path property is correctly set and 'libcxcore.so', 'libcv.so', 'libcvaux.so', 'libml.so', and 'libhighgui.so' are placed (or linked) in one of your system shared libraries folder</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">Exception in thread "Animation Thread" java.lang.UnsatisfiedLinkError: hypermedia.video.OpenCV.capture(III)V</span><br /><span style="font-family: courier new,courier;">    at hypermedia.video.OpenCV.capture(Native Method)</span><br /><span style="font-family: courier new,courier;">    at hypermedia.video.OpenCV.capture(OpenCV.java:945)</span><br /><span style="font-family: courier new,courier;">    at sketch_jan12b.setup(sketch_jan12b.java:35)</span><br /><span style="font-family: courier new,courier;">    at processing.core.PApplet.handleDraw(Unknown Source)</span><br /><span style="font-family: courier new,courier;">    at processing.core.PApplet.run(Unknown Source)</span><br /><span style="font-family: courier new,courier;">    at java.lang.Thread.run(Thread.java:662)</span></p><p>Por este motivo es necesario recompilar el módulo nativo con las versiones actuales.  Para hacer esto se deben seguir los siguientes pasos.</p><p><span style="font-family: courier new,courier;">$ cd ~/sketchbook/libraries/OpenCV/library/</span></p><p>Crear una copia de seguridad del módulo nativo a recompilarse.</p><p><span style="font-family: courier new,courier;">$ mv libOpenCV.so libOpenCV.so.OLD</span></p><p>Generar la cabecera del módulo nativo de Java (JNI).</p><p><span style="font-family: courier new,courier;">$ javah -classpath OpenCV.jar -jni hypermedia.video.OpenCV</span></p><p>Recompilar el módulo nativo.</p><p><span style="font-family: courier new,courier;">$ g++ -shared ../source/cpp/OpenCV.cpp -o libOpenCV.so -I/usr/include/opencv/ -I/usr/lib/jvm/java-1.6.0-openjdk/include/ -I. -lcv -lhighgui -fPIC</span></p><p>Finalmente se obtienen los siguientes archivos.</p><p><span style="font-family: courier new,courier;">$ ls -l</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">-rw-rw-r&#8211; 1 jimezam jimezam  10748 2012-01-12 14:43 hypermedia_video_OpenCV.h</span><br /><span style="font-family: courier new,courier;">-rwxr-xr-x 1 jimezam jimezam  80088 2009-05-27 13:15 libOpenCV.jnilib</span><br /><span style="font-family: courier new,courier;">-rwxrwxr-x 1 jimezam jimezam  41953 2012-01-12 16:16 <strong>libOpenCV.so</strong></span><br /><span style="font-family: courier new,courier;">-rwxr-xr-x 1 jimezam jimezam  42861 2009-05-27 13:15 libOpenCV.so.OLD</span><br /><span style="font-family: courier new,courier;">-rwxr&#8212;&#8211; 1 jimezam jimezam 515184 2009-05-27 13:15 OpenCV.dll</span><br /><span style="font-family: courier new,courier;">-rw-r&#8211;r&#8211; 1 jimezam jimezam  12116 2009-05-27 13:15 OpenCV.jar</span></p><h3>Instalar los perfiles de reconocimiento</h3><p>Los perfiles de reconocimiento son archivos XML donde se estructura el conocimiento que le permite a la librería reconocer rostros sin la necesidad de mayor entrenamiento.  La versión actual de los paquetes de OpenCV en los repositorios instala estos perfiles en una ubicación que no permite que sean utilizados fácilmente desde Processing.  Los siguientes pasos corrígen esta situación.</p><p><span style="font-family: courier new,courier;">$ sudo cp -R /usr/share/doc/opencv-doc/examples/haarcascades /usr/share/opencv/</span><br /><span style="font-family: courier new,courier;">$ sudo gunzip /usr/share/opencv/haarcascades/*.gz</span></p><h2><em>Sketch</em> de prueba</h2><p>Una vez instalada la librería se podrán desarrollar <em>sketches</em> con ella, a continuación se presenta el sketch mas sencillo posible que muestra la imagen proveniente de la cámara web utilizando OpenCV.</p><pre class="java">import hypermedia.video.*;
OpenCV opencv;
void setup()
{
  size(640, 480);
  opencv = new OpenCV(this);
  opencv.capture(width,height);
}
void draw()
{
    opencv.read();
    background(opencv.image());
}
</pre><h2>Enlaces</h2><ul><li>OpenCV &#8211; <em>Open Source Computer Vision</em><br /><a href="http://opencv.willowgarage.com/wiki/">http://opencv.willowgarage.com/wiki/</a></li><li>Librería para Processing<br /><a href="http://ubaa.net/shared/processing/opencv/">http://ubaa.net/shared/processing/opencv/</a></li></ul><ul><li>Documentación del API<br /><a href="http://ubaa.net/shared/processing/opencv/opencv.html">http://ubaa.net/shared/processing/opencv/opencv.html</a></li></ul><li>Código fuente<br /><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/01/OpenCV_HelloWorld.zip">http://blog.jorgeivanmeza.com/wp-content/uploads/2012/01/OpenCV_HelloWorld.zip</a></li> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2012/01/instalacion-de-la-libreria-de-opencv-en-processing-bajo-gnulinux-mint-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Construcción de la librería Simple-OpenNI para Processing bajo Ubuntu de 32 bits</title>
		<link>http://blog.jorgeivanmeza.com/2012/01/construccion-de-la-libreria-simple-openni-para-processing-bajo-ubuntu-de-32-bits/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=construccion-de-la-libreria-simple-openni-para-processing-bajo-ubuntu-de-32-bits</link>
		<comments>http://blog.jorgeivanmeza.com/2012/01/construccion-de-la-libreria-simple-openni-para-processing-bajo-ubuntu-de-32-bits/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=construccion-de-la-libreria-simple-openni-para-processing-bajo-ubuntu-de-32-bits#comments</comments>
		<pubDate>Wed, 11 Jan 2012 21:52:41 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Mint]]></category>
		<category><![CDATA[NITE]]></category>
		<category><![CDATA[OpenNI]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49860</guid>
		<description><![CDATA[Introducción Simple-OpenNI es una librería de Processing que actúa como un recubrimiento (wrapper) para utilizar fácilmente OpenNI desde este lenguaje de programación. La distribución binaria de esta librería puede ser descargada directamente desde el sitio web del proyecto.  En el &#8230; <a href="http://blog.jorgeivanmeza.com/2012/01/construccion-de-la-libreria-simple-openni-para-processing-bajo-ubuntu-de-32-bits/">Continue reading <span>&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2><p><a href="http://code.google.com/p/simple-openni/">Simple-OpenNI</a> es una librería de <a href="http://www.processing.org/">Processing</a> que actúa como un recubrimiento (<em>wrapper</em>) para utilizar fácilmente <a href="http://openni.org/">OpenNI</a> desde este lenguaje de programación.</p><p>La distribución binaria de esta librería puede ser descargada directamente desde el <a href="http://code.google.com/p/simple-openni/downloads/list">sitio web del proyecto</a>.  En el presente artículo se describirán los pasos necesarios para construír esta librería a partir de su distribución de fuentes lo cual resulta interesante para garantizar compatibilidad con las versiones de las librerías nativas instaladas y mantener la última versión disponible, así como utilizar arquitecturas cuyas distribuciones binarias no se encuentren disponibles.</p><h2>Prerequisitos</h2><p>Para poder construír la librería bajo GNU/Linux Ubuntu es necesario contar con los siguientes requisitos previamente instalados.</p><ol><li><a href="http://blog.jorgeivanmeza.com/2011/12/instalacion-openni-sensor-kinect-y-nite-en-gnulinux-ubuntu-11-10-desde-fuentes/">OpenNI y NITE</a></li><li>Java Development Kit.<br /><span style="font-family: courier new,courier;">$ sudo aptitude install openjdk-6-jdk openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib</span> <br />Activar la versión recién instalada:<span style="font-family: courier new,courier;"> /usr/lib/jvm/java-6-openjdk/jre/bin/java<br />$ sudo update-alternatives &#8211;config java</span></li><li>CMake<br /><span style="font-family: courier new,courier;">$ sudo aptitude install cmake</span></li><li>Swig &gt;= v2.0.2<br /><span style="font-family: courier new,courier;">$ sudo aptitude install swig</span></li><li>Eigen &gt;= v3.0<br /><span style="font-family: courier new,courier;">$ sudo aptitude install libeigen3-dev</span></li><li>Boost &gt;= v1.46 (<em>use the static build</em>) <br /><span style="font-family: courier new,courier;">$ sudo aptitude install libboost-all-dev</span></li></ol><h2>Procedimiento</h2><p>Obtener la última versión del código fuente de la librería.</p><p><span style="font-family: courier new,courier;">$ svn checkout http://simple-openni.googlecode.com/svn/trunk/ simple-openni-read-only</span></p><p><span style="font-family: courier new,courier;">$ cd simple-openni-read-only/SimpleOpenNI/</span></p><p>Ajustar el <em>script</em> de construcción modificando la invocación a <span style="font-family: courier new,courier;">cmake</span> de la siguiente manera.  (Ajustar las rutas que se consideren convenientes, en especial a <span style="font-family: courier new,courier;">DP5_JAR</span>)</p><p><span style="font-family: courier new,courier;">$ vi buildLinux32.sh</span></p><p style="padding-left: 30px;">(actualizar)</p><p style="padding-left: 30px;"><code> cmake -DOPEN_NI_INCLUDE=/usr/include/ni/ \ <br />      -DXN_NITE_INCLUDE=/usr/include/nite/ \ <br />      -DXN_NITE_LIB=/usr/lib/ \ <br />      -DEIGEN3D_INCLUDE=/usr/include/eigen3/ \ <br />      -DP5_JAR=~/Processing/2.0a4/lib/core.jar \ <br />      -JAVA_INCLUDE_PATH=/usr/lib/jvm/java-6-openjdk/include/ \ <br />      -JAVA_INCLUDE_PATH2=/usr/lib/jvm/java-6-openjdk/include/linux \ <br />      .. </code></p><p>Realizar la construcción de la librería.</p><p><span style="font-family: courier new,courier;">$ ./buildLinux32.sh</span></p><p>Instalar la librería recién construída.</p><p><span style="font-family: courier new,courier;">$ ./installLinux.sh</span></p><h2>Verificar la instalación de la librería</h2><p>El procedimiento anterior construye e instala la librería de Simple-OpenNI bajo <span style="font-family: courier new,courier;">~/sketchbook/libraries/SimpleOpenNI/</span> dejándola lista para ser utilizada con Processing.</p><p><span style="font-family: courier new,courier;">$ tree -d ~/sketchbook/libraries/SimpleOpenNI/</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">/home/jimezam/sketchbook/libraries/SimpleOpenNI/</span><br /><span style="font-family: courier new,courier;">├── documentation</span><br /><span style="font-family: courier new,courier;">│   ├── resources</span><br /><span style="font-family: courier new,courier;">│   └── SimpleOpenNI</span><br /><span style="font-family: courier new,courier;">├── examples</span><br /><span style="font-family: courier new,courier;">│   ├── eclipse</span><br /><span style="font-family: courier new,courier;">│   ├── Nite</span><br /><span style="font-family: courier new,courier;">│   │   ├── CircleCtrl</span><br /><span style="font-family: courier new,courier;">│   │   ├── Hands</span><br /><span style="font-family: courier new,courier;">│   │   └── Slider2d</span><br /><span style="font-family: courier new,courier;">│   └── OpenNI</span><br /><span style="font-family: courier new,courier;">│       ├── AlternativeViewpoint3d</span><br /><span style="font-family: courier new,courier;">│       ├── DepthImage</span><br /><span style="font-family: courier new,courier;">│       ├── DepthImageXml</span><br /><span style="font-family: courier new,courier;">│       │   └── data</span><br /><span style="font-family: courier new,courier;">│       ├── DepthInfrared</span><br /><span style="font-family: courier new,courier;">│       ├── DepthMap3d</span><br /><span style="font-family: courier new,courier;">│       ├── Hands3d</span><br /><span style="font-family: courier new,courier;">│       ├── MultiCam</span><br /><span style="font-family: courier new,courier;">│       ├── RecorderPlay</span><br /><span style="font-family: courier new,courier;">│       ├── Scene</span><br /><span style="font-family: courier new,courier;">│       ├── SceneDepth</span><br /><span style="font-family: courier new,courier;">│       ├── Threaded</span><br /><span style="font-family: courier new,courier;">│       ├── User</span><br /><span style="font-family: courier new,courier;">│       ├── User3d</span><br /><span style="font-family: courier new,courier;">│       ├── User3dCallback</span><br /><span style="font-family: courier new,courier;">│       ├── UserSaveCalib</span><br /><span style="font-family: courier new,courier;">│       └── UserScene3d</span><br /><span style="font-family: courier new,courier;">└── library</span></p><h2>Enlaces</h2><ul><li>simple-openni &#8211; A simple OpenNI wrapper for processing<br /><a href="http://code.google.com/p/simple-openni/">http://code.google.com/p/simple-openni/</a></li></ul><ul><li>Downloads<br /><a href="http://code.google.com/p/simple-openni/downloads/list">http://code.google.com/p/simple-openni/downloads/list</a></li><li>How to Build<br /><a href="http://code.google.com/p/simple-openni/wiki/HowToBuild">http://code.google.com/p/simple-openni/wiki/HowToBuild</a></li></ul> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2012/01/construccion-de-la-libreria-simple-openni-para-processing-bajo-ubuntu-de-32-bits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalación de NodeJS en GNU/Linux Ubuntu/Mint</title>
		<link>http://blog.jorgeivanmeza.com/2012/01/instalacion-de-nodejs-en-gnulinux-ubuntumint/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalacion-de-nodejs-en-gnulinux-ubuntumint</link>
		<comments>http://blog.jorgeivanmeza.com/2012/01/instalacion-de-nodejs-en-gnulinux-ubuntumint/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalacion-de-nodejs-en-gnulinux-ubuntumint#comments</comments>
		<pubDate>Tue, 10 Jan 2012 02:12:12 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[aptitude]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Mint]]></category>
		<category><![CDATA[NodeJS]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49841</guid>
		<description><![CDATA[Introducción NodeJS es  una plataforma de desarrollo de alta escalabilidad para aplicaciones en red basada en un único hilo de ejecución, una arquitectura orientada a eventos y un manejo asíncrono de E/S.  Esta plataforma se programa utilizando Javascript del lado &#8230; <a href="http://blog.jorgeivanmeza.com/2012/01/instalacion-de-nodejs-en-gnulinux-ubuntumint/">Continue reading <span>&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2><p><a href="http://nodejs.org/">NodeJS</a> es  una plataforma de desarrollo de alta escalabilidad para aplicaciones en red basada en un único hilo de ejecución, una arquitectura orientada a eventos y un manejo asíncrono de E/S.  Esta plataforma se programa utilizando Javascript del lado del servidor.</p><p>En el presente artículo se describen los pasos realizados para su instalación siguiendo dos estrategias diferentes.</p><h2>Instalación</h2><h3>Utilizando el gestor de paquetes</h3><p>En este caso la instalación es mas rápida y sencilla ya que el gestor de paquetes, apt/aptitude en este caso, se hace cargo de la descarga e instalación del software y sus dependencias.</p><h4>Utilizando los repositorios por defecto</h4><p>Los repositorios incluídos por defecto con el sistema operativo permiten instalar a NodeJS sin embargo no en su versión mas reciente sino un par de números atrasada.</p><p><div id="attachment_49843" class="wp-caption aligncenter" style="width: 760px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/01/Terminal_002.png"><img class="size-full wp-image-49843" title="Terminal_002" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/01/Terminal_002.png" alt="Versión de NodeJS disponible en los repositorios de Ubuntu" width="750" height="459" /></a><p class="wp-caption-text">Versión de NodeJS disponible en los repositorios de Ubuntu</p></div></p><p>Para realizar su instalación se debe ejeuctar el siguiente comando.</p><p><span style="font-family: courier new,courier;">$ sudo aptitude install nodejs</span></p><h4>Utilizando los repositorios del proyecto</h4><p>Este método permite actualizar los repositorios del sistema operativo con el repositorio oficial del proyecto de donde se podrán descargar versiones mas recientes.  Para hacer esto se deben ejecutar los siguientes comandos.</p><p><span style="font-family: courier new,courier;">$ sudo apt-get install python-software-properties</span><br /><span style="font-family: courier new,courier;">$ sudo add-apt-repository ppa:chris-lea/node.js </span><br /><span style="font-family: courier new,courier;">$ sudo apt-get update</span></p><p><div id="attachment_49844" class="wp-caption aligncenter" style="width: 760px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/01/Terminal_0021.png"><img class="size-full wp-image-49844" title="Terminal_002" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/01/Terminal_0021.png" alt="Versión de NodeJS disponible en los repositorios del proyecto" width="750" height="427" /></a><p class="wp-caption-text">Versión de NodeJS disponible en los repositorios del proyecto</p></div></p><p>Una vez incluído el nuevo repositorio se procede a instalar el paquete normalmente.</p><p><span style="font-family: courier new,courier;">$ sudo aptitude install nodejs</span></p><h3>Desde el código fuente</h3><p>Este método permite compilar una distribución de NodeJS para la versión específica del sistema operativo que se está utilizando.  Esto requiere que se cuente con el soporte requerido de las herramientas de desarrollo y dependencias necesarias para construír el proyecto.</p><p>Descargar el código fuente de la última versión disponible (la 0.6.7 en este caso) desde la siguiente ubicación.</p><p style="padding-left: 30px;"><a href="http://nodejs.org/#download">http://nodejs.org/#download</a></p><p><code> $ wget http://nodejs.org/dist/v0.6.7/node-v0.6.7.tar.gz </code></p><p><code>$ tar zxvf node-v0.6.7.tar.gz $ cd node-v0.6.7/ </code></p><p><code>$ ./configure --prefix=/home/jimezam/nodejs/0.6.7 </code></p><p><strong>Aviso!</strong>  Si desea instalar NodeJS en una ubicación central haciéndolo disponible para todos los usuarios del sistema operativo, omita el parámetro <span style="font-family: courier new,courier;">&#8211;prefix</span> de la ejecución anterior, de lo contrario ajuste su ruta según la ubicación específica donde desee instalarlo.</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">Checking for program g++ or c++          : /usr/bin/g++ </span><br /><span style="font-family: courier new,courier;">Checking for program cpp                 : /usr/bin/cpp </span><br /><span style="font-family: courier new,courier;">Checking for program ar                  : /usr/bin/ar </span><br /><span style="font-family: courier new,courier;">Checking for program ranlib              : /usr/bin/ranlib </span><br /><span style="font-family: courier new,courier;">Checking for g++                         : ok  </span><br /><span style="font-family: courier new,courier;">Checking for program gcc or cc           : /usr/bin/gcc </span><br /><span style="font-family: courier new,courier;">Checking for program ar                  : /usr/bin/ar </span><br /><span style="font-family: courier new,courier;">Checking for program ranlib              : /usr/bin/ranlib </span><br /><span style="font-family: courier new,courier;">Checking for gcc                         : ok  </span><br /><span style="font-family: courier new,courier;">Checking for library dl                  : yes </span><br /><span style="font-family: courier new,courier;">Checking for openssl                     : yes </span><br /><span style="font-family: courier new,courier;">Checking for library util                : yes </span><br /><span style="font-family: courier new,courier;">Checking for library rt                  : yes </span><br /><span style="font-family: courier new,courier;">Checking for fdatasync(2) with c++       : yes </span><br /><span style="font-family: courier new,courier;">'configure' finished successfully (0.776s)</span></p><p>El siguiente paso consiste en construír la distribución compilando su código fuente.</p><p><span style="font-family: courier new,courier;">$ make</span></p><p>Y finalmente se debe instalar la distribución recién construída en la ubicación elegida.</p><p><span style="font-family: courier new,courier;">$ make install</span></p><p><strong>Aviso!</strong>  Si se eligió instalar NodeJS en una ubicación central, la ejecución del comando anterior deberá ser hecha por el usuario <em>root</em> de la siguiente manera: <span style="font-family: courier new,courier;">sudo make install</span>.</p><p>Actualizar el <span style="font-family: courier new,courier;">PATH</span> para que incluya la ubicación de las herramientas de NodeJS recién instaladas.  Realizar esta modificación en el <span style="font-family: courier new,courier;">.bash_profile</span>/<span style="font-family: courier new,courier;">.bashrc</span> del usuario o <span style="font-family: courier new,courier;">/etc/profile</span> para tener un alcance global y garantizar que esta modificación persista cada vez que se inicia la máquina.</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">$ PATH=/home/jimezam/nodejs/0.6.7/bin:$PATH</span></p><p>Si el ajuste fue exitoso la aplicación <span style="font-family: courier new,courier;">node</span> ya podrá ser accedida directamente desde la línea de comando.</p><p><span style="font-family: courier new,courier;">$ which node</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">/home/jimezam/nodejs/0.6.7/bin/node</span></p><h2>Prueba de funcionamiento: Hola Mundo NodeJS!</h2><p>Crear el siguiente archivo de código Javascript para crear un servicio extremadamente simple que responda "Hola Mundo" ante las peticiones web de los clientes a través de navegadores.</p><p><span style="font-family: courier new,courier;">$ vi prueba.js</span></p><pre>var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hola Mundo NodeJS!\n');
}).listen(7777, '127.0.0.1');
console.log('Servidor ejecutándose en http://127.0.0.1:7777');</pre><p>Para iniciar el servicio se debe invocar el comando <span style="font-family: courier new,courier;">node</span> de la siguiente manera.</p><p><span style="font-family: courier new,courier;">$ node prueba.js</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">Servidor ejecutándose en http://127.0.0.1:7777</span></p><p>Desde un navegador web acceder a la dirección mencionada.</p><p><div id="attachment_49846" class="wp-caption aligncenter" style="width: 394px"><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/01/Mozilla-Firefox_002.png"><img class="size-full wp-image-49846" title="Mozilla Firefox_002" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/01/Mozilla-Firefox_002.png" alt="Hola Mundo consultándose desde NodeJS" width="384" height="207" /></a><p class="wp-caption-text">Hola Mundo consultándose desde NodeJS</p></div></p><p>&nbsp;</p><h2>Enlaces</h2><ul><li>Node.JS<br /><a href="http://nodejs.org/">http://nodejs.org/</a></li><li>Installing Node.js via package manager<br /><a href="https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager">https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager</a></li></ul> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2012/01/instalacion-de-nodejs-en-gnulinux-ubuntumint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mostrar en pantalla los errores producidos en PHP con Apache bajo Ubuntu</title>
		<link>http://blog.jorgeivanmeza.com/2011/12/mostrar-en-pantalla-los-errores-producidos-en-php-con-apache-bajo-ubuntu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mostrar-en-pantalla-los-errores-producidos-en-php-con-apache-bajo-ubuntu</link>
		<comments>http://blog.jorgeivanmeza.com/2011/12/mostrar-en-pantalla-los-errores-producidos-en-php-con-apache-bajo-ubuntu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mostrar-en-pantalla-los-errores-producidos-en-php-con-apache-bajo-ubuntu#comments</comments>
		<pubDate>Wed, 28 Dec 2011 05:44:49 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php.ini]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49833</guid>
		<description><![CDATA[Introducción Mientras que en producción mostrar al usuario final la información relacionada con el error producido es un riesgo de seguridad demasiado alto, durante el desarrollo del software es una condición necesaria para entender que está pasando con el código &#8230; <a href="http://blog.jorgeivanmeza.com/2011/12/mostrar-en-pantalla-los-errores-producidos-en-php-con-apache-bajo-ubuntu/">Continue reading <span>&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2><p>Mientras que en producción mostrar al usuario final la información relacionada con el error producido es un riesgo de seguridad demasiado alto, durante el desarrollo del software es una condición necesaria para entender que está pasando con el código que se está probando.</p><p>En la mayoría de despliegues de Apache/PHP vienen ahora con esta opción desactivada, redireccionando por defecto los mensajes de error al archivo de registro habitualmente ubicado en <span style="font-family: courier new,courier;">/var/log/apache2/error.log</span>.</p><h2>Procedimiento</h2><p>Es posible activar la opción de mostrar los errores de PHP en pantalla a tres diferentes niveles de acuerdo con el alcance que se le desee dar a este comportamiento.</p><p>A <strong>nivel global</strong>, esta modificación aplica a todo el servidor o sitios web publicados bajo esa configuración.</p><p><span style="font-family: courier new,courier;">$ sudo vi /etc/php5/apache2/php.ini</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">error_reporting = E_ALL </span><br /><span style="font-family: courier new,courier;">display_errors = On</span></p><p>A <strong>nivel de un directorio o una aplicación</strong>, esta modificación afecta a los <em>scripts</em> ubicados bajo un directorio específico.</p><p><span style="font-family: courier new,courier;">$ vi /var/html/un/directorio/especifico/.htaccess</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">&lt;IfModule mod_php5.c&gt;<br />    php_value error_reporting E_ALL </span><br /><span style="font-family: courier new,courier;">    php_value display_errors on</span><br /><span style="font-family: courier new,courier;">&lt;/IfModule&gt;</span></p><p>A <strong>nivel de una sección de código específico</strong>, esta modificación afecta sólo una parte de un <em>script</em>.</p><p><span style="font-family: courier new,courier;">$ vi /var/html/un/script.php</span></p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">error_reporting(E_ALL);</span><br /><span style="font-family: courier new,courier;">ini_set('display_errors','On');</span></p><h2>Aclaración adicional</h2><p>Para que los ajustes de configuración de los últimos dos niveles sean tenidos en cuenta, el directorio donde del sitio web publicado deberá tener por lo menos activa la siguiente opción.</p><p style="padding-left: 30px;"><span style="font-family: courier new,courier;">AllowOverride Options</span></p><p>Esta se deberá modificar bajo <span style="font-family: courier new,courier;">/etc/apache2/mods-enabled/userdir.conf</span> para los sitios personales de los usuarios (<span style="font-family: courier new,courier;">public_html</span>) o <span style="font-family: courier new,courier;">/etc/apache2/sites-enabled/*</span> para los <em>virtualhosts</em> existentes.</p> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2011/12/mostrar-en-pantalla-los-errores-producidos-en-php-con-apache-bajo-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problema con la interfaz de red inalámbrica Broadcom en Ubuntu: eth1 en lugar de wlan0</title>
		<link>http://blog.jorgeivanmeza.com/2011/12/problema-con-la-interfaz-de-red-inalambrica-broadcom-en-ubuntu-eth1-en-lugar-de-wlan0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=problema-con-la-interfaz-de-red-inalambrica-broadcom-en-ubuntu-eth1-en-lugar-de-wlan0</link>
		<comments>http://blog.jorgeivanmeza.com/2011/12/problema-con-la-interfaz-de-red-inalambrica-broadcom-en-ubuntu-eth1-en-lugar-de-wlan0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=problema-con-la-interfaz-de-red-inalambrica-broadcom-en-ubuntu-eth1-en-lugar-de-wlan0#comments</comments>
		<pubDate>Mon, 26 Dec 2011 18:08:07 +0000</pubDate>
		<dc:creator>jimezam</dc:creator>
				<category><![CDATA[Sindicados]]></category>
		<category><![CDATA[11.10]]></category>
		<category><![CDATA[b43]]></category>
		<category><![CDATA[Broadcom]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[Hipergalaxia]]></category>
		<category><![CDATA[Linux/Solaris/BSD]]></category>
		<category><![CDATA[Mint]]></category>
		<category><![CDATA[red]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.jorgeivanmeza.com/?p=49822</guid>
		<description><![CDATA[Introducción A diferencia de otros portátiles Dell que había configurado en el pasado, el mío tenía algo particular con su tarjeta de red inalámbrica.  Esta aparecía referenciada por la interfaz eth1 en lugar de la habitual wlan0.   $ iwconfig &#8230; <a href="http://blog.jorgeivanmeza.com/2011/12/problema-con-la-interfaz-de-red-inalambrica-broadcom-en-ubuntu-eth1-en-lugar-de-wlan0/">Continue reading <span>&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2><p>A diferencia de otros portátiles Dell que había configurado en el pasado, el mío tenía algo particular con su tarjeta de red inalámbrica.  Esta aparecía referenciada por la interfaz <span style="font-family: 'courier new', courier;">eth1</span> en lugar de la habitual <span style="font-family: 'courier new', courier;">wlan0</span>.  </p><p><span style="font-family: 'courier new', courier;">$ iwconfig</span></p><p style="padding-left: 30px;"><span style="font-family: 'courier new', courier;"><strong>&#8230;<br />eth1</strong> IEEE 802.11bg ESSID:off/any </span><br /><span style="font-family: 'courier new', courier;"> Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm </span><br /><span style="font-family: 'courier new', courier;"> Retry long limit:7 RTS thr:off Fragment thr:off</span><br /><span style="font-family: 'courier new', courier;"> Power Management:off</span></p><p>A pesar de esto funcionaba aparentemente de manera correcta utilizando el driver STA, sin embargo empecé a tener problemas cuando quise hacer algunos ajustes a la interfaz así que tuve que darme a la tarea de solucionar este problema.</p><p>Como mencioné inicialmente, la tarjeta de red inalámbrica es una Broadcom BCM4312.</p><p><span style="font-family: 'courier new', courier;">$ sudo lspci -vk</span></p><p style="padding-left: 30px;"><span style="font-family: 'courier new', courier;">08:00.0 Network controller: <strong>Broadcom Corporation BCM4312 802.11b/g <span style="text-decoration: underline;">LP-PHY</span></strong> (rev 01)</span><br /><span style="font-family: 'courier new', courier;"> Subsystem: <strong>Dell Wireless 1397 WLAN Mini-Card</strong></span><br /><span style="font-family: 'courier new', courier;"> Flags: bus master, fast devsel, latency 0, IRQ 17</span><br /><span style="font-family: 'courier new', courier;"> Memory at f0600000 (64-bit, non-prefetchable) [size=16K]</span><br /><span style="font-family: 'courier new', courier;"> Capabilities: [40] Power Management version 3</span><br /><span style="font-family: 'courier new', courier;"> Capabilities: [58] Vendor Specific Information: Len=78 &lt;?&gt;</span><br /><span style="font-family: 'courier new', courier;"> Capabilities: [e8] MSI: Enable- Count=1/1 Maskable- 64bit+</span><br /><span style="font-family: 'courier new', courier;"> Capabilities: [d0] Express Endpoint, MSI 00</span><br /><span style="font-family: 'courier new', courier;"> Capabilities: [100] Advanced Error Reporting</span><br /><span style="font-family: 'courier new', courier;"> Capabilities: [13c] Virtual Channel</span><br /><span style="font-family: 'courier new', courier;"> Capabilities: [160] Device Serial Number df-3d-0d-fd-fd-dd-0d-2d</span><br /><span style="font-family: 'courier new', courier;"> Capabilities: [16c] Power Budgeting &lt;?&gt;</span></p><h2>La situación</h2><p>Aparentemente esto se debe a la utilización del controlador incorrecto de la tarjeta de red inalámbrica.</p><h2>La solución</h2><p>Mediante la aplicación de <em>Additional Drivers</em> (<span style="font-family: 'courier new', courier;">/usr/bin/jockey-gtk</span>) desactivar el controlador STA que se venía utilizando.</p><p><a href="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/12/Additional-Drivers_002.png"><img class="aligncenter size-medium wp-image-49824" title="Additional Drivers_002" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2011/12/Additional-Drivers_002-300x268.png" alt="" width="300" height="268" /></a></p><p>Remover los paquetes relacionados con el controlador STA (recomendado).</p><p><span style="font-family: 'courier new', courier;">$ sudo aptitude remove broadcom-sta-common broadcom-sta-source bcmwl-kernel-source</span></p><p>Instalar el <em>firmware</em> apropiado para la tarjeta de red.</p><p><span style="font-family: 'courier new', courier;">$ sudo aptitude install b43-fwcutter firmware-b43-installer</span></p><p>En mi caso resultó que la tarjeta era de bajo consumo -<em>Low-Power (LP-PHY)</em>- por lo cual recibí el siguiente mensaje de error.</p><p style="padding-left: 30px;"><span style="font-family: 'courier new', courier;">An unsupported BCM4312 Low-Power (LP-PHY) device was found.</span><br /><span style="font-family: 'courier new', courier;">Use b43 LP-PHY firmware (firmware-b43-lpphy-installer package) instead.</span></p><p>Por este motivo se deben instalar los siguientes paquetes en cambio.</p><p><span style="font-family: 'courier new', courier;">$ sudo aptitude install b43-fwcutter firmware-b43-lpphy-installer</span></p><p>Reiniciar el equipo para que sean tenidos en cuenta los cambios en la configuración recién hechos.</p><p><span style="font-family: 'courier new', courier;">$ sudo reboot</span></p><h2>La verificación</h2><p>Contrario a lo que esperaba, el nuevo controlador (b43) no aparece listado en la aplicación de <em>Additional Drivers</em>, sin embargo la interfaz ya aparece con su nombre correcto y es posible realizar la conexión a redes inalámbricas cercanas (por ejemplo utilizando el <em>NetworkManager</em>).</p><p>&nbsp;</p><p style="padding-left: 30px;"> </p> ]]></content:encoded>
			<wfw:commentRss>http://blog.jorgeivanmeza.com/2011/12/problema-con-la-interfaz-de-red-inalambrica-broadcom-en-ubuntu-eth1-en-lugar-de-wlan0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

