<?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</title> <atom:link href="http://blog.jorgeivanmeza.com/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>Fri, 18 May 2012 22:13:15 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Actualización menor de las versiones de Scientific Linux 5.x y 6.x</title><link>http://blog.jorgeivanmeza.com/2012/05/actualizacion-menor-de-las-versiones-de-scientific-linux-5-x-y-6-x/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=actualizacion-menor-de-las-versiones-de-scientific-linux-5-x-y-6-x</link> <comments>http://blog.jorgeivanmeza.com/2012/05/actualizacion-menor-de-las-versiones-de-scientific-linux-5-x-y-6-x/#comments</comments> <pubDate>Mon, 14 May 2012 05:03:10 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[actualizar]]></category> <category><![CDATA[GNU/Linux]]></category> <category><![CDATA[ScientificLinux]]></category> <category><![CDATA[yum]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=50111</guid> <description><![CDATA[Introducción Los procedimientos descritos a continuación permiten realizar la actualización de versiones menores en los sistemas operativos basados en Scientific Linux en sus versiones 5.x y 6.x, es decir, pasar de la 5.1 a la 5.3 por ejemplo mas no &#8230; <a
href="http://blog.jorgeivanmeza.com/2012/05/actualizacion-menor-de-las-versiones-de-scientific-linux-5-x-y-6-x/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción</h2><p><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/05/sl_logo.png"><img
class="alignleft size-full wp-image-50112" title="sl_logo" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/05/sl_logo.png" alt="" width="96" height="96" /></a>Los procedimientos descritos a continuación permiten realizar la actualización de versiones menores en los sistemas operativos basados en <a
href="http://www.scientificlinux.org/">Scientific Linux</a> en sus versiones 5.x y 6.x, es decir, pasar de la 5.1 a la 5.3 por ejemplo mas no para pasar de la versión 5 a la 6.</p><p>Recuerde tener suficiente espacio en <span
style="font-family: courier new,courier;">/var/cache</span> para realizar este procedimiento así como contar con copias de seguridad en caso de que algo salga mal.  Realice los siguientes pasos bajo su propia responsabilidad.</p><h2>Serie 5.x</h2><pre># yum remove perl.i386 gaim.i386 gaim-devel.i386
# yum clean all
# rpm -Uvh ftp://ftp.scientificlinux.org/linux/scientific/5x/i386/misc/RPMS/yum-conf-latest.SL.noarch.rpm
# yum update yum
# yum update
# yum clean all
# /sbin/reboot</pre><ul><li>El paso #1 <span
style="text-decoration: underline;">solamente</span> se debe realizar bajo la arquitectura de 64 bits para remover versiones instaladas de 32 bits de estos paquetes.</li></ul><h2>Serie 6.x</h2><pre># yum clean all
# yum update
# yum --releasever=6x update
# yum-conf-sl-other
# yum update
# yum clean all
# /sbin/reboot</pre><ul><li>En el paso #3 reemplazar el valor <span
style="font-family: courier new,courier;"><strong>6x</strong></span> por la versión a la cual desea realizarse la instalación (<span
style="font-family: courier new,courier;"><strong>6.2</strong></span> por ejemplo).</li><li>El paso #4 sólo es estrictamente necesario cuando la versión original del sistema operativo que se está actualizando es la 6.0.</li></ul><h2>Enlaces</h2><ul><li>How To Upgrade To The Latest S.L. 5.x Release<br
/> <a
href="http://www.scientificlinux.org/documentation/howto/upgrade.5x">http://www.scientificlinux.org/documentation/howto/upgrade.5x</a></li><li>How To Upgrade To The Latest S.L. 6.x Release<br
/> <a
href="http://www.scientificlinux.org/documentation/howto/upgrade.6x">http://www.scientificlinux.org/documentation/howto/upgrade.6x</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2012/05/actualizacion-menor-de-las-versiones-de-scientific-linux-5-x-y-6-x/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Compartir una sesión de terminal con Screen en Linux utilizando el mismo usuario</title><link>http://blog.jorgeivanmeza.com/2012/04/compartir-una-sesion-de-terminal-con-screen-en-linux-utilizando-el-mismo-usuario/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=compartir-una-sesion-de-terminal-con-screen-en-linux-utilizando-el-mismo-usuario</link> <comments>http://blog.jorgeivanmeza.com/2012/04/compartir-una-sesion-de-terminal-con-screen-en-linux-utilizando-el-mismo-usuario/#comments</comments> <pubDate>Wed, 18 Apr 2012 21:18:34 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[screen]]></category> <category><![CDATA[shared]]></category> <category><![CDATA[terminal]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=50098</guid> <description><![CDATA[Introducción Frecuentemente me encuentro con compañeros de la universidad experimentando en los servidores del nodo grid, en estos casos es común que nos distribuyamos entre diferentes computadores pero a pesar de esto sea conveniente compartir una única terminal para que &#8230; <a
href="http://blog.jorgeivanmeza.com/2012/04/compartir-una-sesion-de-terminal-con-screen-en-linux-utilizando-el-mismo-usuario/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción</h2><p>Frecuentemente me encuentro con compañeros de la universidad experimentando en los servidores del nodo grid, en estos casos es común que nos distribuyamos entre diferentes computadores pero a pesar de esto sea conveniente compartir una única terminal para que todos podamos ver lo que se está experimentando y que cada uno pueda proponer e implementar sus ideas.</p><p>Para hacer esto la solución mas simple que he encontrado es utilizando el comando <span
style="font-family: courier new,courier;">screen</span> que se incluye por defecto en la mayoría de las distribuciones de Linux.</p><p>El procedimiento descrito a continuación es útil cuando todos los usuarios acceden finalmente a la terminal compartida utilizando el <span
style="text-decoration: underline;">mismo usuario</span> en el mismo servidor, en caso contrario es necesario realizar unas modificaciones adicionales.</p><h2>Procedimiento</h2><p>El usuario que va a crear la terminal compartida ejecuta el siguiente comando para iniciar la sesión de <span
style="font-family: courier new,courier;">screen</span> y nombrarla (<em>mySharedSession</em> en este caso).</p><pre>$ screen -d -m -S mySharedSession</pre><p>El siguiente paso radica en unir la terminal del usuario a la sesión compartida de <span
style="font-family: courier new,courier;">screen</span> mediante la ejecución del siguiente comando que debe ser ejecutado por todos los usuarios incluyendo al creador de la sesión ya que esta se crea inicialmente separada de su terminal actual.</p><pre>$ screen -x mySharedSession</pre><p>En cualquier momento es posible listar las sesiones de <span
style="font-family: courier new,courier;">screen</span> disponibles mediante la ejecución del siguiente comando.</p><pre>$ screen -ls</pre><h2>Salir y terminar sesiones</h2><p>Para salir de una sesión compartida sin destruírla es necesario ejecutar la siguiente combinación de teclas: <span
style="font-family: courier new,courier;">CTRL+a d</span>.</p><p>Para salir de una sesión destruyéndola se puede utilizar el comando <span
style="font-family: courier new,courier;">exit</span> (cierre brusco) o la combinación de teclas <span
style="font-family: courier new,courier;">CTRL+a k</span> (cierre limpio) la cual es equivalente a <span
style="font-family: courier new,courier;">CTRL+a :kill</span>.  Debe tener en cuenta que la destrucción de la sesión afecta a todos los usuarios que se encontraban conectados a ella.</p><h2>Enlaces</h2><ul><li>GNU Screen<br
/> <a
href="http://www.gnu.org/software/screen/">http://www.gnu.org/software/screen/</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2012/04/compartir-una-sesion-de-terminal-con-screen-en-linux-utilizando-el-mismo-usuario/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Creando un nuevo proyecto en GitHub bajo GNU/Linux</title><link>http://blog.jorgeivanmeza.com/2012/04/creando-un-nuevo-proyecto-en-github-bajo-gnulinux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creando-un-nuevo-proyecto-en-github-bajo-gnulinux</link> <comments>http://blog.jorgeivanmeza.com/2012/04/creando-un-nuevo-proyecto-en-github-bajo-gnulinux/#comments</comments> <pubDate>Fri, 06 Apr 2012 17:58:08 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Desarrollo de software]]></category> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Git]]></category> <category><![CDATA[GitHub]]></category> <category><![CDATA[GNU/Linux]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[Ubuntu]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=50093</guid> <description><![CDATA[Introducción Una vez instalado Git y configurado para GitHub es posible empezar a crear proyectos que sean monitoreados por este software de control de versiones. Para cada proyecto se crea un repositorio donde se almacenarán las versiones de sus archivos &#8230; <a
href="http://blog.jorgeivanmeza.com/2012/04/creando-un-nuevo-proyecto-en-github-bajo-gnulinux/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción</h2><p><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/04/octocat-150x150.png"><img
class="alignleft size-full wp-image-50094" title="octocat-150x150" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/04/octocat-150x150.png" alt="" width="150" height="150" /></a>Una vez <a
href="http://blog.jorgeivanmeza.com/2012/03/instalacion-y-configuracion-de-git-para-el-uso-con-github-bajo-gnulinux-ubuntu-12-04/">instalado Git y configurado para GitHub</a> es posible empezar a crear proyectos que sean monitoreados por este software de control de versiones.</p><p>Para cada proyecto se crea un repositorio donde se almacenarán las versiones de sus archivos y las ramas que se creen con ellos.</p><p>A continuación se describirán los pasos necesarios para crear un nuevo repositorio.</p><h2>Crear el repositorio en GitHub</h2><p>Para crear un nuevo repositorio en GitHub se debe ingresar con la información de la cuenta del usuario que será su propietario, acceder al enlace <a
href="https://github.com/repositories/new">Create a new repository</a> e ingresar la siguiente información.</p><div
id="attachment_50095" class="wp-caption aligncenter" style="width: 967px"><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/04/Selection_006.png"><img
class="size-full wp-image-50095" title="Selection_006" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/04/Selection_006.png" alt="Crear un nuevo repositorio en GitHub" width="957" height="499" /></a><p
class="wp-caption-text">Crear un nuevo repositorio en GitHub</p></div><h2>Crear el directorio del proyecto</h2><p>Si todavía no existe un directorio para el proyecto en el sistema de archivos del equipo del desarrollador, este se debe crear en la ubicación que la se requiera.</p><pre>$ mkdir /ruta/al/proyecto123
$ cd /ruta/al/proyecto123</pre><p>Esta nueva ubicación se debe activar para ser monitoreada por Git de la siguiente manera.</p><pre>$ git init</pre><h2>Agregar una descripción ampliada del proyecto</h2><p>Este paso es opcional pero se recomienda hacerlo.  Es posible agregar un archivo <span
style="font-family: courier new,courier;">README</span> al proyecto cuyo contenido se mostrará junto con la descripción del proyecto en GitHub.</p><pre>$ vi README</pre><p>Como este archivo es nuevo debe agregarse al registro de Git.</p><pre>$ git add README</pre><p>De ser necesario es posible agregar en un solo paso a <em>todos</em> los archivos ubicados en un directorio específico.</p><pre>$ git add .</pre><p>Una vez agregado y registrado el archivo es necesario hacer <em>commit</em> de esas modificaciones.</p><pre>$ git commit -m 'First commit'</pre><h2>Enviar las modificaciones a GitHub</h2><p>Debe tenerse en cuenta que el <em>commit</em> realizado en el paso anterior se realiza en la base de versiones local.  Para publicar estas modificaciones en el proyecto en GitHub es necesario sincronizarlo con el repositorio remoto de la siguiente manera.</p><p>Primero es necesario asociar el repositorio local con el remoto.</p><pre>$ git remote add origin git@github.com:USERNAME/PROYECTO.git</pre><p>Reemplazar las palabras <span
style="font-family: courier new,courier;">USERNAME</span> y <span
style="font-family: courier new,courier;">PROYECTO</span> con el nombre de usuario GitHub de quien va a publicar y el nombre del proyecto respectivamente.</p><p>Finalmente se realiza la sincronización con el repositorio remoto.</p><pre>$ git push -u origin master</pre><h2>Consultar la página del repositorio en GitHub</h2><p>Al consultar la página del repositorio en GitHub se deberá ver el listado de archivos sincronizados y el texto de la descripción ampliada (archivo <span
style="font-family: courier new,courier;">README</span>) especificado.  Para consultar este sitio se deberá acceder al URL con la siguiente estructura.</p><p
style="padding-left: 30px;"><span
style="font-family: courier new,courier;">https://github.com/</span><em>USERNAME</em><span
style="font-family: courier new,courier;">/</span><em>PROYECTO</em></p><h2>Enlaces</h2><ul><li>Create a Repo en GitHub Help<br
/> <a
href="http://help.github.com/create-a-repo/">http://help.github.com/create-a-repo/</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2012/04/creando-un-nuevo-proyecto-en-github-bajo-gnulinux/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Implementando la carga dinámica de clases en Processing</title><link>http://blog.jorgeivanmeza.com/2012/04/implementando-la-carga-dinamica-de-clases-en-processing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=implementando-la-carga-dinamica-de-clases-en-processing</link> <comments>http://blog.jorgeivanmeza.com/2012/04/implementando-la-carga-dinamica-de-clases-en-processing/#comments</comments> <pubDate>Fri, 06 Apr 2012 09:39:20 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Desarrollo de software]]></category> <category><![CDATA[carga dinámica]]></category> <category><![CDATA[clases]]></category> <category><![CDATA[Factory]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[patrones]]></category> <category><![CDATA[Processing]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=50088</guid> <description><![CDATA[Introducción La carga dinámica de clases es una característica muy conocida de los lenguajes orientados a objetos que permite crear instancias de clases con solo conocer su nombre.  Esto permite a los desarrolladores crear aplicaciones que utilicen clases que sean &#8230; <a
href="http://blog.jorgeivanmeza.com/2012/04/implementando-la-carga-dinamica-de-clases-en-processing/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción</h2><p>La carga dinámica de clases es una característica muy conocida de los lenguajes orientados a objetos que permite crear instancias de clases con solo conocer su nombre.  Esto permite a los desarrolladores crear aplicaciones que utilicen clases que sean creadas después de la aplicación sin necesidad de recompilar la misma.  También es muy útil cuando se desea generalizar la creación de un conjunto de objetos mediante el patrón de <a
href="http://en.wikipedia.org/wiki/Factory_method_pattern"><em>fábrica</em></a>.</p><p>Gracias a la <a
href="http://en.wikipedia.org/wiki/Reflection_%28computer_programming%29"><em>reflexión</em></a> en Java y otros lenguajes como C# es muy fácil de implementar, sin embargo en <a
href="http://www.processing.org/">Processing</a> (derivado de Java) su implementación fue un poco mas elaborada ya que las clases que implementa el usuario son en realidad clases internas del proyecto desarrollado.</p><h2>Explicación</h2><p>En Processing cuando se crea un <em>Proyecto</em> y en él se implementan las clases <span
style="font-family: courier new,courier;">A</span>, <span
style="font-family: courier new,courier;">B</span> y <span
style="font-family: courier new,courier;">C</span>, y este se compila, internamente se crea un archivo de código fuente Java conteniendo a este código de la siguiente manera.</p><pre>import processing.core.*;
// Imports del usuario
// Otros imports
public class Proyecto extends PApplet {
    class A
    {
        // ...
    }
    class B
    {
        // ...
    }
    class C
    {
        // ...
    }
    static public void main(String args[]) {
        PApplet.main(new String[] { "--bgcolor=#DFDFDF", "Proyecto" });
    }
}</pre><h2>Implementación</h2><p>Para realizar la implementación de una versión simple del patrón de fábrica utilizando la carga dinámica de clases en Processing se supondrá que existe la clase <span
style="font-family: courier new,courier;">Padre</span> de la cual se derivan las clases <span
style="font-family: courier new,courier;">Hijo1</span> e <span
style="font-family: courier new,courier;">Hijo2</span> del proyecto <span
style="font-family: courier new,courier;">Demostracion</span>.</p><p>Crear un objeto donde se almacenará la instancia a crearse de manera dinámica.</p><pre>Padre instance = null;</pre><p>Recuperar la referencia al cargador de clases del sistema.</p><pre>ClassLoader classLoader = ClassLoader.getSystemClassLoader();</pre><p>Cargar la referencia de la <span
style="text-decoration: underline;">clase</span> a partir de su nombre (<span
style="font-family: courier new,courier;">className</span>), en este caso podría ser <span
style="font-family: courier new,courier;">Hijo1</span> o <span
style="font-family: courier new,courier;">Hijo2</span>.  Recuerde que esta clase es realmente interna a la clase <span
style="font-family: courier new,courier;">Demostracion</span>.</p><pre>Class loadedClass = classLoader.loadClass("Demostracion$" + className);</pre><p>Obtener una referencia al <span
style="text-decoration: underline;">constructor</span> que se desea utilizar para crear la instancia.  En este caso se eligió un constructor que recibe dos parámetros: una cadena y un real.  Nótese además que todos los constructores reciben una referencia al <em>applet</em> de Processing, en este caso de <span
style="font-family: courier new,courier;">Demostracion</span> (que hereda a su vez de <span
style="font-family: courier new,courier;">PApplet</span>).</p><pre>java.lang.reflect.Constructor constructor = loadedClass.getConstructor(new Class[] {PApplet.class, String.class, float.class});</pre><p>Crear la nueva <span
style="text-decoration: underline;">instancia</span> utilizando el constructor obtenido en el paso anterior.  Al método <span
style="font-family: courier new,courier;">newInstance</span> se le especifican los valores de los parámetros que serán suplidos en el constructor.</p><pre>instance = (Padre) constructor.newInstance(new Object[] {applet, str, flt});</pre><p>Nótese como el primero de ellos, <span
style="font-family: courier new,courier;">applet</span>, hace referencia al <em>applet</em> de Processing que se está ejecutando.  Al no encontrar una forma mas elegante para obtener esta referencia al <em>applet</em>, declarar una variable global para almacenarlo.</p><pre>PApplet applet;</pre><p>Y obtener su valor en el procedimiento <span
style="font-family: courier new,courier;">setup</span>.</p><pre>void setup()
{
    // ...
    applet = this;
    // ...
}</pre><p>En el código mostrado anteriormente se deberán manejar las excepciones <span
style="font-family: courier new,courier;">ClassNotFoundException</span> y <span
style="font-family: courier new,courier;">ClassCastException</span> para poder llevar a feliz término su ejecución.</p><h2>Enlaces</h2><ul><li>Nested classes en The Java Tutorials<br
/> <a
href="http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html">http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html</a></li><li>Documentación de la clase PApplet de Processing<br
/> <a
href="http://processing.googlecode.com/svn/trunk/processing/build/javadoc/core/processing/core/PApplet.html">http://processing.googlecode.com/svn/trunk/processing/build/javadoc/core/processing/core/PApplet.html</a></li><li>Reflection &amp; inner classes<br
/> <a
href="http://www.jroller.com/tomdz/entry/reflection_inner_classes">http://www.jroller.com/tomdz/entry/reflection_inner_classes</a></li><li>Dynamic Class Loading and Reloading in Java<br
/> <a
href="http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html">http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2012/04/implementando-la-carga-dinamica-de-clases-en-processing/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Iniciando una máquina virtual con Libvirt/KVM desde CDROM</title><link>http://blog.jorgeivanmeza.com/2012/03/iniciando-una-maquina-virtual-con-libvirtkvm-desde-cdrom/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=iniciando-una-maquina-virtual-con-libvirtkvm-desde-cdrom</link> <comments>http://blog.jorgeivanmeza.com/2012/03/iniciando-una-maquina-virtual-con-libvirtkvm-desde-cdrom/#comments</comments> <pubDate>Mon, 26 Mar 2012 19:27:33 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[CDROM]]></category> <category><![CDATA[GNU/Linux]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[ISO]]></category> <category><![CDATA[KVM]]></category> <category><![CDATA[libvirt]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=50086</guid> <description><![CDATA[Introducción En algunos casos es necesario iniciar una máquina virtual ya instalada desde el CDROM o en su defecto, una imagen ISO.  Por ejemplo cuando se deben realizar labores de administración o recuperación que requieran acceder al disco duro de &#8230; <a
href="http://blog.jorgeivanmeza.com/2012/03/iniciando-una-maquina-virtual-con-libvirtkvm-desde-cdrom/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción</h2><p>En algunos casos es necesario iniciar una máquina virtual ya instalada desde el CDROM o en su defecto, una imagen ISO.  Por ejemplo cuando se deben realizar labores de administración o recuperación que requieran acceder al disco duro de la máquina virtual desmontado.</p><p>A continuación se muestra el procedimiento necesario para reconfigurar la máquina virtual para que monte una imagen ISO como su CDROM virtual e inicie el sistema operativo desde ella.</p><h2>Procedimiento</h2><p>Acceder a la consola de administración de las máquinas virtuales.</p><pre>$ virsh --connect qemu:///system</pre><p>Modificar la configuración de la máquina virtual (<span
style="font-family: courier new,courier;">SL_57_x64_Generic</span> en este caso) en dos partes.</p><pre>virsh # edit SL_57_x64_Generic</pre><p>Bajo <span
style="font-family: courier new,courier;">domain/os</span> agregue un nuevo registro <span
style="font-family: courier new,courier;">boot</span> para el <span
style="font-family: courier new,courier;">cdrom</span>.</p><pre> &lt;boot dev='cdrom'/&gt;</pre><p>Identificar la configuración del CDROM bajo <span
style="font-family: courier new,courier;">domain/devices/disk</span>.  En mi caso se ve de la siguiente manera.</p><pre>&lt;disk type='block' device='cdrom'&gt;
    &lt;driver name='qemu' type='raw'/&gt;
    &lt;target dev='hdc' bus='ide'/&gt;
    &lt;readonly/&gt;
    &lt;address type='drive' controller='0' bus='1' unit='0'/&gt;
&lt;/disk&gt;</pre><p>Modificar la configuración del CDROM para que se asocie con la imagen ISO deseada especificándole el valor de su respectivo <span
style="font-family: courier new,courier;">source</span>.</p><pre>&lt;source file='/b1/ISO/data_disk1.iso'/&gt;</pre><p>Una vez terminadas las labores de administración es necesario regresar la configuración a la original para evitar que la máquina continúe iniciándose desde el CDROM indefinidamente.</p><h2>Modificar el contenido del CDROM (cambiar disco)</h2><p>Otra tarea frecuente con respecto al manejo de medios en las máquinas virtuales será la manipulación del contenido de la unidad de CDROM.  Esto es necesario al realizar la instalación del sistema operativo o acceder información de diferentes medios/imágenes ISO.  Para hacer esto desde la linea de comando es necesario ejecutar el siguiente comando.</p><pre>$ virsh attach-disk --type cdrom --mode readonly SL_57_x64_Generic /b1/ISO/data_disk2.iso hdc</pre>]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2012/03/iniciando-una-maquina-virtual-con-libvirtkvm-desde-cdrom/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Instalando KVM con Libvirt y la interfaz de red en puente bajo Ubuntu 11.10</title><link>http://blog.jorgeivanmeza.com/2012/03/instalando-kvm-con-libvirt-y-la-interfaz-de-red-en-puente-bajo-ubuntu-11-10/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalando-kvm-con-libvirt-y-la-interfaz-de-red-en-puente-bajo-ubuntu-11-10</link> <comments>http://blog.jorgeivanmeza.com/2012/03/instalando-kvm-con-libvirt-y-la-interfaz-de-red-en-puente-bajo-ubuntu-11-10/#comments</comments> <pubDate>Mon, 26 Mar 2012 08:25:26 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[KVM]]></category> <category><![CDATA[libvirt]]></category> <category><![CDATA[Ubuntu]]></category> <category><![CDATA[Virtualización]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=50082</guid> <description><![CDATA[Introducción Desde la versión 9.10 de Ubuntu no había actualizado el proceso de instalación de KVM y de la interfaz de red en puente que realizo en mi servidor de desarrollo.  En este caso estoy utilizando la versión 11.10 y &#8230; <a
href="http://blog.jorgeivanmeza.com/2012/03/instalando-kvm-con-libvirt-y-la-interfaz-de-red-en-puente-bajo-ubuntu-11-10/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción</h2><p>Desde la versión 9.10 de Ubuntu no había actualizado el proceso de <a
href="http://blog.jorgeivanmeza.com/2010/01/instalar-kvm-en-linux-ubuntu-server-9-10/">instalación de KVM</a> y de la <a
href="http://blog.jorgeivanmeza.com/2010/01/configurando-un-puente-en-la-interfaz-de-red-para-las-kvm-en-linux-ubuntu-9-10/">interfaz de red en puente</a> que realizo en mi servidor de desarrollo.  En este caso estoy utilizando la versión 11.10 y a continuación describo el procedimiento seguido para instalar KVM utilizando el metapaquete del repositorio estándar, crear la interfaz de red e instalar una máquina virtual inicial.</p><h2>Instalación de KVM con Libvirt</h2><pre>$ sudo aptitude install ubuntu-virt-server</pre><p>Es necesario que los usuarios que vayan a interactuar con las máquinas virtuales pertenezcan al grupo de <span
style="font-family: courier new,courier;">libvirtd</span>.  En el caso de la instalación es necesario que el usuario actual termine su sesión y la inicie nuevamente para que su suscripción al grupo sea tenida en cuenta.</p><h2>Creación del puente en la interfaz de red</h2><p>Asignar los permisos de manipulación de red requeridos al usuario que se encontrará activo durante la creación del puente.</p><pre>$ sudo setcap cap_net_admin=ei /usr/bin/qemu-system-x86_64</pre><p>Agregar el nombre de usuario elegido frente a la propiedad <span
style="font-family: courier new,courier;">cap_net_admin</span>.</p><pre>$ sudo vi /etc/security/capability.conf
    cap_net_admin        USUARIO</pre><p>Actualizar la configuración de las interfaces de red.</p><pre>$ sudo vi /etc/network/interfaces
    auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet manual
    auto br0
    iface br0 inet static
    address 192.168.1.250
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.254
    bridge_ports eth0
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0</pre><p>Reiniciar el servicio de red para que los cambios anteriores sean tenidos en cuenta.</p><pre>$ sudo /etc/init.d/networking restart</pre><h2>Creación de una máquina virtual desde línea de comando</h2><p>En el servidor instalar la herramienta de virt-install para la creación de máquinas virtuales desde la línea de comando.</p><pre>$ sudo aptitude install virtinst</pre><p>Solicitar la creación de la máquina virtual a partir de su configuración básica.</p><p>En este caso se va a instalar un Scientific Linux 5.7 llamada <span
style="font-family: courier new,courier;">SL_57_x64_Generic</span> con 384MB de RAM, un disco duro de 7GB y utilizará la interfaz de red en puente creada anteriormente.</p><pre>$ virt-install \
    --connect qemu:///system \
    -n SL_57_x64_Generic \
    -r 384 \
    --os-type linux \
    --os-variant generic26 \
    --hvm \
    --cdrom /b1/ISO/SL.57.090911.DVD.x86_64.disc1.iso \
    --network bridge:br0 \
    --disk path=/home/vms/SL_57_x64_Generic.img,size=7 \
    --vnc --noautoconsole \
    --accelerate</pre><p>Desde el cliente donde se deseen administrar las máquinas virtuales ejecutar el siguiente comando para conectarse a la máquina virtual recién creada para realizar el proceso de instalación.</p><pre>$ virt-viewer -c qemu+ssh://SERVIDOR/system SL_57_x64_Generic</pre><h2>Enlaces</h2><ul><li>KVM en Ubuntu Documentation<br
/> <a
href="https://help.ubuntu.com/community/KVM">https://help.ubuntu.com/community/KVM</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2012/03/instalando-kvm-con-libvirt-y-la-interfaz-de-red-en-puente-bajo-ubuntu-11-10/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Instalación y configuración de Git para el uso con GitHub bajo GNU/Linux Ubuntu 12.04</title><link>http://blog.jorgeivanmeza.com/2012/03/instalacion-y-configuracion-de-git-para-el-uso-con-github-bajo-gnulinux-ubuntu-12-04/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalacion-y-configuracion-de-git-para-el-uso-con-github-bajo-gnulinux-ubuntu-12-04</link> <comments>http://blog.jorgeivanmeza.com/2012/03/instalacion-y-configuracion-de-git-para-el-uso-con-github-bajo-gnulinux-ubuntu-12-04/#comments</comments> <pubDate>Sat, 24 Mar 2012 06:09:09 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Desarrollo de software]]></category> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[Git]]></category> <category><![CDATA[GitHub]]></category> <category><![CDATA[GNU/Linux]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[Ubuntu]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=50078</guid> <description><![CDATA[Introducción GitHub es un servicio de hospedaje de proyectos basado en web incluye funciones de red social como feeds, seguidores y estadísticas como clasificaciones.  Este sistema se basa en el software de control de versiones llamado Git. El servicio se &#8230; <a
href="http://blog.jorgeivanmeza.com/2012/03/instalacion-y-configuracion-de-git-para-el-uso-con-github-bajo-gnulinux-ubuntu-12-04/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción</h2><p><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/03/octocat.png"><img
class="alignleft size-thumbnail wp-image-50079" title="octocat" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/03/octocat-150x150.png" alt="" width="150" height="150" /></a><a
href="http://github.com/">GitHub</a> es un servicio de hospedaje de proyectos basado en web incluye funciones de red social como <em>feeds</em>, seguidores y estadísticas como clasificaciones.  Este sistema se basa en el software de control de versiones llamado <a
href="http://git-scm.com/">Git</a>.</p><p>El servicio se ofrece de manera gratuita para los proyectos de código abierto y bajo un <a
href="https://github.com/plans">costo mensual</a> para los proyectos privados.</p><p>Una vez se ha <a
href="https://github.com/signup/free">creado la cuenta del usuario</a> en GitHub este debe instalar y configurar Git para que se pueda interactúar de manera con los repositorios de los proyectos que se crearán en él.</p><p>Para hacer esto se deben realizar las siguientes actividades que se describen a continuación.</p><h2>Procedimiento</h2><h3>Instalar Git</h3><pre>$ sudo aptitude install git</pre><h3>Crear la pareja de llaves SSH</h3><p>En este paso se debe decidir si se va a utilizar una combinación de llaves existente o si se creará una nueva como se describe a continuación.</p><pre>$ cd ~/.ssh
$ ssh-keygen -t rsa -C "correo@electronico.com"</pre><p>Recuerde especificar un contraseña (<em>passphrase</em>) segura a su llave privada, de esta forma evitará que pueda ser utilizada de manera maliciosa si pierde el control sobre el archivo.</p><h3>Registrar la llave pública a GitHub</h3><p>Ingrese al sitio web de GitHub con la información de su cuenta de usuario y seleccione en el menú de <em><a
href="https://github.com/settings/profile">Account Settings</a></em> la opción <em><a
href="https://github.com/settings/ssh">SSH Keys</a></em> y presione el botón <em>Add SSH key</em>.</p><p>Especifique un nombre (<em>Title</em>) para la llave SSH y copie/pegue el contenido del archivo<span
style="font-family: courier new,courier;"> ~/.ssh/id_rsa.pub</span> (o el que haya especificado) en el área <em>Key</em>.</p><h3>Verificar la configuración de la llave pública en GitHub</h3><p>Desde una terminal en el equipo de desarrollo ejecutar el siguiente comando.</p><pre>$ ssh -T git@github.com</pre><p>Si la llave ha sido correctamente establecida se deberá recibir un mensaje como el siguiente.</p><p
style="padding-left: 30px;"><em>Hi username! You've successfully authenticated, but GitHub does not provide shell access.</em></p><h3>Configurar el nombre de usuario y el correo electrónico</h3><p>En este paso se establecen localmente el nombre de usuario (de GitHub) y el correo electrónico del desarrollador para relacionarlo con los <em>commits</em> que haga a los diferentes proyectos del repositorio.</p><pre>$ git config --global user.name "Nombre Completo"
$ git config --global user.email "correo@electronico.com"</pre><h3>Configurar el token de GitHub</h3><p>Este <em>token</em> (secreto) se utiliza como medida de seguridad para autenticar las herramientas que no utilicen SSH y que deseen acceder a GitHub en nombre del usuario.</p><p>Para determinar el valor del <em>token</em> del usuario, seleccione en el menú de <em><a
href="https://github.com/settings/profile">Account Settings</a></em> la opción <em><a
href="https://github.com/settings/admin">Account Settings</a></em> y copie el valor mostrado frente al texto <em>Your API token is</em>.</p><p>Finalmente ejecute las siguientes instrucciones en una terminal teniendo en cuenta que <em>username</em> deberá corresponder con el nombre de usuario elegido en GitHub y reemplazar el <em>TOKEN</em> con el obtenido anteriormente desde el sitio web de GitHub.</p><pre>$ git config --global github.user username
$ git config --global github.token TOKEN</pre><p><strong>Importante</strong>, debe tener en cuenta que cada vez que modifique la contraseña del usuario de GitHub se generará un nuevo valor del <em>token</em>.</p><h2>Enlaces</h2><ul><li>Set Up Git<br
/> <a
href="http://help.github.com/linux-set-up-git/">http://help.github.com/linux-set-up-git/</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2012/03/instalacion-y-configuracion-de-git-para-el-uso-con-github-bajo-gnulinux-ubuntu-12-04/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Instalando el IDE de Cloud9 en GNU/Linux Ubuntu</title><link>http://blog.jorgeivanmeza.com/2012/03/instalando-el-ide-de-cloud9-en-gnulinux-ubuntu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalando-el-ide-de-cloud9-en-gnulinux-ubuntu</link> <comments>http://blog.jorgeivanmeza.com/2012/03/instalando-el-ide-de-cloud9-en-gnulinux-ubuntu/#comments</comments> <pubDate>Sat, 24 Mar 2012 00:27:54 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Desarrollo de software]]></category> <category><![CDATA[Linux/Solaris/BSD]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[cloud]]></category> <category><![CDATA[Cloud9]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[IDE]]></category> <category><![CDATA[NodeJS]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=50070</guid> <description><![CDATA[Introducción Cloud9 es un ambiente integrado para el desarrollo de software diseñado específicamente para ser ejecutado en la nube.  Este trae consigo múltiples características muy interesantes, incluyendo el soporte para diferentes lenguajes de programación como C/C++, C#, CSS, Java, Javascript, &#8230; <a
href="http://blog.jorgeivanmeza.com/2012/03/instalando-el-ide-de-cloud9-en-gnulinux-ubuntu/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción</h2><p><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/03/Cloud9IDE_logo.png"><img
class="alignleft size-thumbnail wp-image-50071" title="Cloud9IDE_logo" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/03/Cloud9IDE_logo-150x150.png" alt="" width="150" height="150" /></a>Cloud9 es un ambiente integrado para el desarrollo de software diseñado específicamente para ser ejecutado en la nube.  Este trae consigo múltiples <a
href="http://c9.io/site/category/features/">características</a> muy interesantes, incluyendo el soporte para diferentes lenguajes de programación como C/C++, C#, CSS, Java, Javascript, Lua, PHP, Python, Ruby, SQL y HTML entre otros mas.</p><p>Este software ha sido desarrollado en <a
href="http://c9.io/site/node-js/">Node.js</a> el cual es también su plataforma objetivo para el desarrollo de proyectos.  Cloud9 pueden ser accedido desde dos diferentes perspectivas: como un servicio en el cual el usuario se inscribe en la página (<a
href="http://c9.io/site/pricing/">gratuitamente o con un pago</a>) y accede remotamente al servicio.  La otra perspectiva corresponde con instalar este software en un servidor propio y acceder a él de manera privada.</p><div
id="attachment_50072" class="wp-caption aligncenter" style="width: 510px"><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/03/cloud9-Cloud9-Mozilla-Firefox_001.png"><img
class="size-large wp-image-50072" title="cloud9 | Cloud9 - Mozilla Firefox_001" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/03/cloud9-Cloud9-Mozilla-Firefox_001-1024x622.png" alt="Cloud9 IDE running on Firefox" width="500" height="303" /></a><p
class="wp-caption-text">Cloud9 IDE running on Firefox</p></div><p>A continuación se describirán los pasos seguidos para la instalación de Cloud9 IDE en un GNU/Linux Ubuntu 12.04.</p><h2>Instalación</h2><p>Se decidió instalar el software asociado bajo la carpeta <span
style="font-family: courier new,courier;">~/local</span> del usuario que utilizará al ambiente de desarrollo.</p><h3>Requerimientos</h3><pre>$ sudo apt-get install -y build-essential g++ curl libssl-dev apache2-utils git libxml2-dev</pre><h3>Ajustes iniciales</h3><p>Crear la ruta donde se instalarán los diferentes paquetes de software necesarios.</p><pre>$ mkdir ~/local</pre><p>Agregar la ruta de los paquetes binarios al <span
style="font-family: courier new,courier;">PATH</span>.</p><pre>$ echo 'export PATH=$HOME/local/bin:$PATH' &gt;&gt; ~/.bashrc
$ . ~/.bashrc</pre><h3>Instalación de Node.js</h3><p>Verificar cual es <a
href="http://nodejs.org/">la versión mas reciente del software</a>, en este caso era la <span
style="font-family: courier new,courier;">0.6.14</span>.</p><pre>$ cd ~/local
$ git clone git://github.com/joyent/node.git
$ cd node
$ git checkout <strong>v0.6.14</strong>
$ ./configure --prefix=~/local
$ make
$ make install
$ cd ..</pre><h3>Instalación de npm (<em>Node Package Manager</em>)</h3><pre>$ curl http://npmjs.org/install.sh | sh</pre><h3>Instalación de Cloud9 IDE</h3><pre>$ git clone git://github.com/ajaxorg/cloud9.git
$ cd cloud9
$ git checkout devel
$ git submodule update --init --recursive
$ cd ..</pre><h3>Instalación del framework de componentes O3</h3><pre>$ git clone http://github.com/ajaxorg/o3
$ cd o3
$ ./tools/node_modules_build
$ cp ./build/Release/o3.node ../cloud9/support/jsdav/support/node-o3-xml-v4/lib/o3-xml/
$ cd ..</pre><h2>Ejecutar el IDE</h2><p>Para lanzar el ambiente de desarrollo es necesario ejecutar el siguiente comando.  Debe tenerse en cuenta que si no se especifica un puerto su valor por defecto será de <span
style="font-family: courier new,courier;">3000</span> y si no se especifica un lugar de trabajo se utilizará el directorio actual donde fue ejecutado el comando.</p><pre>$ ~/local/cloud9/bin/cloud9.sh --port 3000 --workspace ~/proyectos/xxx</pre><p>Otro aspecto a tenerse en cuenta es que se deberá crear una instancia del IDE por cada proyecto ya que estos se trabajan de manera independiente.</p><h2>Enlaces</h2><ul><li>Sitio web de Cloud9 IDE<br
/> <a
href="http://c9.io/">http://c9.io/</a></li><li>GitHub del proyecto Cloud9 IDE<br
/> <a
href="https://github.com/ajaxorg/cloud9">https://github.com/ajaxorg/cloud9</a></li><li>HOWTO: Install Cloud9 IDE locally<br
/> <a
href="http://ubuntuforums.org/showthread.php?t=1813076">http://ubuntuforums.org/showthread.php?t=1813076</a></li><li>Node Package Manager<br
/> <a
href="http://npmjs.org/">http://npmjs.org/</a></li><li>Instalación de Cloud9 IDE mediante <span
style="font-family: courier new,courier;">nvm</span> (versiones no muy actualizadas)<br
/> <a
href="http://gratdevel.blogspot.com/2011/03/easier-way-of-setting-up-cloud9-on.html">http://gratdevel.blogspot.com/2011/03/easier-way-of-setting-up-cloud9-on.html</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2012/03/instalando-el-ide-de-cloud9-en-gnulinux-ubuntu/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Servidores DNS públicos y gratuitos</title><link>http://blog.jorgeivanmeza.com/2012/03/servidores-dns-publicos-y-gratuitos/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=servidores-dns-publicos-y-gratuitos</link> <comments>http://blog.jorgeivanmeza.com/2012/03/servidores-dns-publicos-y-gratuitos/#comments</comments> <pubDate>Fri, 23 Mar 2012 23:48:35 +0000</pubDate> <dc:creator>jimezam</dc:creator> <category><![CDATA[Internet]]></category> <category><![CDATA[Web]]></category> <category><![CDATA[DNS]]></category> <category><![CDATA[Hipergalaxia]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=50067</guid> <description><![CDATA[Introducción El servicio de DNS (Domain Name System) se encarga de traducir los nombres de los dominios de los requerimientos a sus correspondientes direcciones IP para poder ser físicamente localizados y consultados.  Este procedimiento toma unos cuantos milisegundos los cuales &#8230; <a
href="http://blog.jorgeivanmeza.com/2012/03/servidores-dns-publicos-y-gratuitos/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción</h2><p>El servicio de <a
href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS (<em>Domain Name System</em>)</a> se encarga de traducir los nombres de los dominios de los requerimientos a sus correspondientes direcciones IP para poder ser físicamente localizados y consultados.  Este procedimiento toma unos cuantos milisegundos los cuales a lo largo del día pueden significar cantidades significativas de tiempo.  En casos como este o de problemas específicos es conveniente algunas veces utilizar el servicio de servidores DNS diferentes a los provistos por el ISP.</p><p>A continuación se muestra una lista de los servidores DNS gratuitos y públicos que he recopilado.</p><h2>Servidores DNS</h2><ol><li><span
style="font-size: large;"><strong>Google</strong></span><br
/> <span
style="font-size: large;"> 8.8.8.8</span><br
/> <span
style="font-size: large;"> 8.8.4.4</span></li><li><span
style="font-size: large;"><strong>Google (IPV6)</strong></span><br
/> <span
style="font-size: large;">2001:4860:4860::8888</span><br
/> <span
style="font-size: large;">2001:4860:4860::8844</span></li><li><span
style="font-size: large;"><strong>OpenDNS</strong></span><br
/> <span
style="font-size: large;"> 208.67.222.222</span><br
/> <span
style="font-size: large;"> 208.67.220.220</span></li><li><strong>Norton DNS</strong><br
/> 198.153.192.1<br
/> 198.153.194.1</li><li><strong>OpenNIC</strong><br
/> 69.164.208.50<br
/> 216.87.84.211</li><li><strong>Level3</strong><br
/> 209.244.0.3<br
/> 209.244.0.4</li><li><strong>DNS Advantage</strong><br
/> 156.154.70.1<br
/> 156.154.71.1</li><li><strong>ScrubIT3</strong><br
/> 67.138.54.120<br
/> 207.225.209.77</li><li><strong>Public-Root5</strong><br
/> 199.5.157.131<br
/> 208.71.35.137</li><li><strong>Comodo Secure</strong><br
/> 8.26.56.26<br
/> 8.20.247.20</li></ol> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2012/03/servidores-dns-publicos-y-gratuitos/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Detectando movimiento con Processing utilizando Flob</title><link>http://blog.jorgeivanmeza.com/2012/03/detectando-movimiento-con-processing-utilizando-flob/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=detectando-movimiento-con-processing-utilizando-flob</link> <comments>http://blog.jorgeivanmeza.com/2012/03/detectando-movimiento-con-processing-utilizando-flob/#comments</comments> <pubDate>Mon, 19 Mar 2012 06:20:32 +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[detección]]></category> <category><![CDATA[Flob]]></category> <category><![CDATA[Hipergalaxia]]></category> <category><![CDATA[movimiento]]></category> <category><![CDATA[Processing]]></category> <guid
isPermaLink="false">http://blog.jorgeivanmeza.com/?p=50062</guid> <description><![CDATA[Introducción En la búsqueda de como detectar movimiento en las imágenes recibidas de una cámara web utilizando un sketch de Processing para ser utilizado como medio para la interacción entre el usuario y el computador, he iniciado el día de &#8230; <a
href="http://blog.jorgeivanmeza.com/2012/03/detectando-movimiento-con-processing-utilizando-flob/">Continue reading <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<h2>Introducción</h2><div
id="attachment_50063" class="wp-caption aligncenter" style="width: 510px"><a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/03/Flob_Demo_002.png"><img
class="size-large wp-image-50063" title="Flob_Demo_002" src="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/03/Flob_Demo_002-1024x536.png" alt="Movement detection with Flob" width="500" height="261" /></a><p
class="wp-caption-text">Movement detection with Flob</p></div><p>En la búsqueda de como detectar movimiento en las imágenes recibidas de una cámara web utilizando un <em>sketch</em> de Processing para ser utilizado como medio para la interacción entre el usuario y el computador, he iniciado el día de hoy algunas pruebas con la librería <a
href="http://s373.net/code/flob/flob.html">Flob</a> que facilita este proceso.</p><p>Hasta el momento se ha utilizado la característica para calcular la imagen de movimiento y la facilidad para determinar las áreas de movimiento (<em>blobs</em>) agrupándolas según su cercanía.</p><p>El <em>sketch</em> de demostración se desarrolló utilizando Processing 2 (alpha 4) por lo que se descargó la <a
href="https://github.com/s373/s373-processing-libs/tree/master/flob">versión de desarrollo de la librería</a>.</p><h2>Enlaces</h2><ul><li>Demostración<br
/> <a
href="http://blog.jorgeivanmeza.com/wp-content/uploads/2012/03/Flob_Demo.zip">http://blog.jorgeivanmeza.com/wp-content/uploads/2012/03/Flob_Demo.zip</a></li><li>flob // multi blob tracker for processing<br
/> <a
href="http://s373.net/code/flob/flob.html">http://s373.net/code/flob/flob.html</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://blog.jorgeivanmeza.com/2012/03/detectando-movimiento-con-processing-utilizando-flob/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
