<?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>Marlon J. Manrique &#187; mono</title>
	<atom:link href="http://www.marlonj.com/blog/tag/mono/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marlonj.com/blog</link>
	<description>Resistance is Futile</description>
	<lastBuildDate>Fri, 16 Jul 2010 07:02:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Cliente XML-RPC en Mono para OpenSimulator</title>
		<link>http://www.marlonj.com/blog/2009/02/cliente-xml-rpc-en-mono-para-opensimulator/</link>
		<comments>http://www.marlonj.com/blog/2009/02/cliente-xml-rpc-en-mono-para-opensimulator/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 16:12:09 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=1256</guid>
		<description><![CDATA[Una forma para realizar comunicación entre los prims internos de OpenSimulator o Second Life y el mundo externo es a través del uso de XML-RPC el cual permite enviar mensajes a un objeto dentro de una región, siempre y cuando este se haya registrado para recibir dicha comunicación. Crear Script para Recibir Datos : Abrir [...]]]></description>
			<content:encoded><![CDATA[<p>Una forma para realizar comunicación entre los prims internos de OpenSimulator o Second Life y el mundo externo es a través del uso de XML-RPC el cual permite enviar mensajes a un objeto dentro de una región, siempre y cuando este se haya registrado para recibir dicha comunicación.</p>
<p><strong>Crear Script para Recibir Datos : </strong></p>
<ul>
<li>Abrir nuestro visor favorito y entrar al servidor de OpenSimulator o SecondLife</li>
<li>Crear un objeto</li>
<li>Adicionar un Script</li>
<li>Abrir el script</li>
<li>Colocar el siguiente codigo :
<pre class="java"><span style="color: #000000; font-weight: bold;">default</span> <span style="color: #66cc66;">{</span>
   state_entry<span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>
   <span style="color: #66cc66;">{</span>
      llOpenRemoteDataChannel<span style="color: #66cc66;">(</span><span style="color: #66cc66;">)</span>;
   <span style="color: #66cc66;">}</span>

   remote_data<span style="color: #66cc66;">(</span>integer type, key channel, key message_id, string sender, integer ival, string sval<span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
      <span style="color: #b1b100;">if</span><span style="color: #66cc66;">(</span>type == REMOTE_DATA_CHANNEL<span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
         llOwnerSay<span style="color: #66cc66;">(</span><span style="color: #ff0000;">"Canal : "</span> + <span style="color: #66cc66;">(</span>string<span style="color: #66cc66;">)</span> channel + <span style="color: #ff0000;">""</span><span style="color: #66cc66;">)</span>;
      <span style="color: #66cc66;">}</span>
      <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #66cc66;">(</span>type == REMOTE_DATA_REQUEST<span style="color: #66cc66;">)</span> <span style="color: #66cc66;">{</span>
         llRemoteDataReply<span style="color: #66cc66;">(</span>channel,NULL_KEY,<span style="color: #ff0000;">"Exito"</span>,<span style="color: #cc66cc;">1221</span><span style="color: #66cc66;">)</span>;
         llOwnerSay<span style="color: #66cc66;">(</span><span style="color: #ff0000;">"Cadena : "</span> + sval + <span style="color: #ff0000;">"nNumero: "</span> + <span style="color: #66cc66;">(</span>string<span style="color: #66cc66;">)</span> ival<span style="color: #66cc66;">)</span>;
      <span style="color: #66cc66;">}</span>
      <span style="color: #b1b100;">else</span> <span style="color: #66cc66;">{</span>
         llOwnerSay<span style="color: #66cc66;">(</span><span style="color: #ff0000;">"Error"</span><span style="color: #66cc66;">)</span>;
      <span style="color: #66cc66;">}</span>
   <span style="color: #66cc66;">}</span>
<span style="color: #66cc66;">}</span></pre>
</li>
<li>Guardar</li>
<li>En este momento el servidor debe compilar el script y muestra en el chat :<br />
[11:54]  Compile successful<br />
[11:54]  Primitive: Canal : 61b5e9ca-9378-4254-af36-d78d6ed839de</li>
<li>La cadena : 61b5e9ca-9378-4254-af36-d78d6ed839de es el identificador del canal por el cual escucha el prim, es diferente para cada prim</li>
</ul>
<p>Enviar Datos con C# :</p>
<p>Se utilizara la libreria XmlRpcCS para realizar la comunicación entre la aplicación y el objeto en OpenSimulator o SecondLife.</p>
<ul>
<li>Abrir una consola</li>
<li>Crear el directorio para el cliente<br />
mkdir clientxmlrpc</li>
<li>Cambiar al directorio<br />
cd clientxmlrpc</li>
<li>Copiar la libreria al directorio actual<br />
cp ../XmlRpcCS/XmlRpcCS.dll .</li>
<li>Crear un archivo Client.cs y adicionamos el siguiente codigo :
<pre class="csharp"><span style="color: #0600FF;">using</span> <span style="color: #000000;">System</span>.<span style="color: #0000FF;">Collections</span>;
<span style="color: #0600FF;">using</span> Nwc.<span style="color: #0000FF;">XmlRpc</span>;
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> Client <span style="color: #000000;">&#123;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #0600FF;">void</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
                <span style="color: #008080; font-style: italic;">// Informacion del Servidor de Second Life</span>
                <span style="color: #008080; font-style: italic;">// Canal por donde escucha el cliente</span>
                <span style="color: #FF0000;">string</span> server = <span style="color: #808080;">&quot;http://xmlrpc.secondlife.com/cgi-bin/xmlrpc.cgi&quot;</span>;
                <span style="color: #FF0000;">string</span> channel = <span style="color: #808080;">&quot;eafc58de-5d8a-364e-d6d8-4c4cab0129f4&quot;</span>;
&nbsp;
                <span style="color: #008080; font-style: italic;">// Parametros</span>
                Hashtable args = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> Hashtable<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
                args.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Channel&quot;</span>,channel<span style="color: #000000;">&#41;</span>;
                args.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;IntValue&quot;</span>,<span style="color: #FF0000;">12345</span><span style="color: #000000;">&#41;</span>;
                args.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;StringValue&quot;</span>,<span style="color: #808080;">&quot;Hello World!&quot;</span><span style="color: #000000;">&#41;</span>; 
&nbsp;
                <span style="color: #008080; font-style: italic;">// Cliente XMLRPC</span>
                XmlRpcRequest request = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> XmlRpcRequest<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
                request.<span style="color: #0000FF;">MethodName</span> = <span style="color: #808080;">&quot;llRemoteData&quot;</span>;
                request.<span style="color: #0600FF;">Params</span>.<span style="color: #0000FF;">Add</span><span style="color: #000000;">&#40;</span>args<span style="color: #000000;">&#41;</span>;
&nbsp;
                <span style="color: #008080; font-style: italic;">// Invocacion y Resultado</span>
                Hashtable ret = <span style="color: #000000;">&#40;</span>Hashtable<span style="color: #000000;">&#41;</span> request.<span style="color: #0000FF;">Invoke</span><span style="color: #000000;">&#40;</span>server<span style="color: #000000;">&#41;</span>;
                <span style="color: #000000;">System</span>.<span style="color: #0000FF;">Console</span>.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span>ret<span style="color: #000000;">&#91;</span><span style="color: #808080;">&quot;StringValue&quot;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span>;
                <span style="color: #000000;">System</span>.<span style="color: #0000FF;">Console</span>.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span>ret<span style="color: #000000;">&#91;</span><span style="color: #808080;">&quot;IntValue&quot;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span>;
        <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre>
</li>
<li>Compilamos el codigo :<br />
gmcs -lib:. -r:XmlRpcCS.dll Client.cs</li>
<li>Ejecutamos<br />
mono Client.exe</li>
<li>Debe mostrar en pantalla los valores enviados por el objeto<br />
Exito<br />
1221</li>
<li>Mienstras tanto en OpenSimulator debe aparecer en el chat la informacion enviada<br />
Hello World!!! 12345</li>
</ul>
<p>Para usar el mismo codigo con OpenSimulator la cadena server debe tener la direccion de nuestro servidor : http://&lt;ipServidor&gt;:&lt;puerto&gt;/cgi-bin/xmlrpc.cgi</p>
<p>Enlaces :</p>
<ul>
<li>LSL XML-RPC en OpenSimulator<br />
<a title="LSL XML-RPC en OpenSimulator" href="http://www.marlonj.com/blog/2008/12/lsl-xml-rpc-en-opensimulator" target="_blank">http://www.marlonj.com/blog/2008/12/lsl-xml-rpc-en-opensimulator</a></li>
<li>XML-RPC<br />
<a title="XML-RPC" href="http://www.xmlrpc.com/" target="_blank">http://www.xmlrpc.com</a></li>
<li>LSL XML-RPC en Second Life<br />
<a title="LSL XML-RPC en Second Life" href="http://wiki.secondlife.com/wiki/Category:LSL_XML-RPC" target="_blank">http://wiki.secondlife.com/wiki/Category:LSL_XML-RPC</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2009/02/cliente-xml-rpc-en-mono-para-opensimulator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Libreria XML-RPC para Mono</title>
		<link>http://www.marlonj.com/blog/2009/02/libreria-xml-rpc-para-mono/</link>
		<comments>http://www.marlonj.com/blog/2009/02/libreria-xml-rpc-para-mono/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 15:28:53 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[libreria]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=1253</guid>
		<description><![CDATA[Actualmente algunos sistemas como OpenSimulator o Second Life utilizan servicios remotos basados en XML-RPC, por tal motivo es necesario utilizar una libreria para realizar los llamados a estos servicios, actualmente para Microsoft .NET podemos encontrar dos librerias : Microsoft .NET: client/server (Charles Cook) http://www.cookcomputing.com/xmlrpc/xmlrpc.shtml Microsoft .NET: client/server (Nicholas Christopher) http://sourceforge.net/projects/xmlrpccs Utilizaremos la libreria XmlRpcCS, la [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Actualmente algunos sistemas como OpenSimulator o Second Life utilizan servicios remotos basados en XML-RPC, por tal motivo es necesario utilizar una libreria para realizar los llamados a estos servicios, actualmente para Microsoft .NET podemos encontrar dos librerias :</p>
<ul>
<li>Microsoft .NET: client/server (Charles Cook)<br />
<a title="CS XMLRPC" href="http://www.cookcomputing.com/xmlrpc/xmlrpc.shtml" target="_blank">http://www.cookcomputing.com/xmlrpc/xmlrpc.shtml</a></li>
<li>Microsoft .NET: client/server (Nicholas Christopher)<br />
<a title="CS XMLRPC" href="http://sourceforge.net/projects/xmlrpccs" target="_blank">http://sourceforge.net/projects/xmlrpccs</a></li>
</ul>
<p style="text-align: justify;">Utilizaremos la libreria XmlRpcCS, la cual es utilizada por el proyecto OpenSimulator para implementar el servicio de XMLRPC que permite realizar llamados remotos a objetos en este mundo virtual.</p>
<p style="text-align: justify;">Requerimientos :</p>
<ul>
<li>Debemos instalar lo paquetes para compilar la libreria<br />
sudo apt-get install nant mono-2.0-devel libmono-winforms2.0-cil mono-1.0-devel</li>
</ul>
<p style="text-align: justify;">Construcción de la Libreria :</p>
<ul>
<li>Abrir una consola</li>
<li>Descargar la ultima versión de la libreria<br />
<a title="XmlRpcCS" href="http://sourceforge.net/project/platformdownload.php?group_id=123702" target="_blank">http://sourceforge.net/project/platformdownload.php?group_id=123702</a></li>
<li>Por ejemplo la versión 1.10<br />
wget http://ufpr.dl.sourceforge.net/sourceforge/xmlrpccs/XmlRpcCS-1.10.zip</li>
<li>Descomprimir el archivo<br />
unzip XmlRpcCS-1.10.zip</li>
<li>Cambiar al directorio de la libreria<br />
cd XmlRpcCS</li>
<li>Compilar la libreria<br />
nant</li>
<li>El archivo XmlRpcCS.dll es creado</li>
</ul>
<p>Enlaces :</p>
<ul>
<li>XML-RPC<br />
<a title="XML-RPC" href="http://www.xmlrpc.com" target="_blank">http://www.xmlrpc.com</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2009/02/libreria-xml-rpc-para-mono/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MMetaverseSurface 0.1 y Second Life</title>
		<link>http://www.marlonj.com/blog/2009/01/mmetaversesurface-01-y-second-life/</link>
		<comments>http://www.marlonj.com/blog/2009/01/mmetaversesurface-01-y-second-life/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 07:39:39 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Desarrollos]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[maestriaendiseño]]></category>
		<category><![CDATA[mmetaversesurface]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[reactivision]]></category>
		<category><![CDATA[secondlife]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=892</guid>
		<description><![CDATA[Pruebas iniciales del desempeño y ejecucion de la version 0.1 de la aplicacion MMetaverseSurface que permite controlar un avatar a traves de una superficie. En esta primera prueba se utilizo la plataforma Windows, una camara Genius Slim 1322AF, Second Life y MMetaverseSurface 0.1 Evaluacion : Para conectar el avatar a Second Life debe utilizarse el [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><object width="425" height="344" data="http://www.youtube.com/v/I2zl7vkDNwY&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/I2zl7vkDNwY&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999" /><param name="allowfullscreen" value="true" /></object></p>
<p style="text-align: justify;">Pruebas iniciales del desempeño y ejecucion de la version 0.1 de la aplicacion MMetaverseSurface que permite controlar un avatar a traves de una superficie. En esta primera prueba se utilizo la plataforma Windows, una camara Genius Slim 1322AF, Second Life y MMetaverseSurface 0.1</p>
<p style="text-align: justify;">Evaluacion :</p>
<ul>
<li>Para conectar el avatar a Second Life debe utilizarse el LoginURIy no el que se coloco en la documentacion :
<p>https://login.agni.lindenlab.com/cgi-bin/login.cgi</li>
<li>El avatar controlado se mostro como una macha blanca, lo que indica que no termino de descargar su apariencia. Se deben hacer mas pruebas para determinar el problema.</li>
<li>Al momento de mover el avatar dentro de Second Life, los edificios impiden que este se mueva libremente, se recomienda utilizar una region con pocos edificios para utilizar la superficie.</li>
<li>Adicionar la posibilidad de indicar las coordenadas de una zona de la region para que el avatar se mueva sobre esta y no sobre toda la superficie. Esto permitiria crear un espacio para utilizar la superficie.</li>
<li>A diferencia de OpenSimulator el avatar permanece quieto cuando el marcador esta quieto.</li>
<li>No se pudo probar el giro del avatar debido a que no se descargo la apariencia del cliente.</li>
</ul>
<p>En terminos generales funciono como debia, solo se presento el problema inesperado de la apariencia del avatar. Las recomendaciones despues de la prueba se tendran en cuenta para la version 0.2 de la aplicacion.</p>
<p><strong>Enlaces : </strong></p>
<ul>
<li>Pagina del Proyecto :<br />
<a title="MMetaverseSurface" href="../proyectos/mmetaversesurface" target="_blank">http://www.marlonj.com/blog/proyectos/mmetaversesurface</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2009/01/mmetaversesurface-01-y-second-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MMetaverseSurface 0.1</title>
		<link>http://www.marlonj.com/blog/2009/01/mmetaversesurface-01/</link>
		<comments>http://www.marlonj.com/blog/2009/01/mmetaversesurface-01/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 19:45:53 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Desarrollos]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[maestriaendiseño]]></category>
		<category><![CDATA[mmetaversesurface]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[reactivision]]></category>
		<category><![CDATA[secondlife]]></category>
		<category><![CDATA[tuiosimulator]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=855</guid>
		<description><![CDATA[Siguiendo con los desarrollos para los metaversos, llega la primera version de la superficie para mundos virtuales MMetaverseSurface que permite controlar uno a mas avatars y objetos desde una superficie interactiva en la cual se colocan marcadores que representan dichos elementos. Esta primera version es una prueba de concepto que busca identificar los elementos necesarios [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><object width="425" height="264" data="http://www.youtube.com/v/JKJ_KkVl4jk&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/JKJ_KkVl4jk&amp;hl=en&amp;fs=1&amp;color1=0x3a3a3a&amp;color2=0x999999" /><param name="allowfullscreen" value="true" /></object></p>
<p style="text-align: justify;">Siguiendo con los desarrollos para los metaversos, llega la primera version de la superficie para mundos virtuales MMetaverseSurface que permite controlar uno a mas avatars y objetos desde una superficie interactiva en la cual se colocan marcadores que representan dichos elementos.</p>
<p style="text-align: justify;">Esta primera version es una prueba de concepto que busca identificar los elementos necesarios para crear este tipo de aplicaciones, por ejemplo para la creacion de la superficie se utilizara la aplicacion reacTIVision que permite capturar la posicion y angulo de marcadores, los cuales representaran los objetos y avatars; esta aplicacion utiliza una camara de video con soporte de firewire o una camara USB para capturar la imagen de la superficie e identificar cada uno de los marcadores, enviando la informacion de posicion y angulo de cada uno de estos. Para la comunicacion con los mundos virtuales se utiliza LibOpenMetaverse que permite interactuar con mundos virtuales como Second Life y OpenSimulator, esta libreria esta desarrollada en C# lo que hace necesario utilizar un cliente de reacTIVision para dicha plataforma, como tambien hacer el desarrollo de la aplicacion MMetaverseSurface es esta plataforma. Adicionalmente para el desarrollo se utiliza una plataforma Ubuntu Linux con la version de codigo abierto de la plataforma .NET llamada Mono y utilizando la herramienta NAnt para automatizar la construccion del software.</p>
<p style="text-align: justify;">Actualmente la version 0.1 de la aplicacion permite controlar uno o mas avatars a los cuales se les ha asignado un marcador y que permite utilizando el simulador o el reacTIVision controlar el avatar dentro de la region en la que se encuentra, permitiendo cambiar la posicion y angulo en el que mira el avatar. Actualmente existen algunos problemas con el movimiento que hacen que el avatar no se quede estatico en una posicion, si no que opsilar entre dos posiciones.</p>
<p style="text-align: justify;">Para las pruebas iniciales se utilizo como servidor OpenSimulator instalado en la misma maquina que la aplicacion lo que permite tener una respuesta muy rapida de los movimientos del avatar, tambien se utilizo el simulador de reacTIVision para tener el control preciso sobre la aplicacion.</p>
<p style="text-align: justify;"><strong>Requerimientos :</strong></p>
<ul>
<li>Windows : Microsoft .NET Framework 2.0 (v2.0.50727 or later)</li>
<li>Linux : mono 1.9 - http://www.mono-project.com/</li>
</ul>
<p><strong>Instalacion : </strong></p>
<ul>
<li>Descargar el archivo con la distribucion de la aplicacion</li>
<li>Descomprimir</li>
<li>Editar el archivo mmetaversesurface/bin/MMetaverseSurface.exe.config y cambiar la url de autenticacion del mundo virtual.
<ul>
<li>Para Second Life utilice : https://login.agni.lindenlab.com</li>
<li>Para OpenSimulator utilice : http://192.168.1.4:9000 (cambiar la IP y el puerto a los de suservidor)</li>
</ul>
</li>
<li>Editar el archivo mmetaversesurface/bin/avatars.txt<br />
Modificar la linea suministrando la informacion del avatar a controlar<br />
Id del Marcador, Nombre, Apellido, Clave<br />
El id del marcador es un numero que representa el marcador a utilizar dentro de reacTIVision</li>
</ul>
<p><strong>Ejecutar :</strong></p>
<ul>
<li>Ejecutar el TUIO Simulator o ejecutar la aplicacion reacTIVision</li>
<li>Ejecutar el MMetaverseSurface.exe</li>
<li>Conectarse al mundo virtual utilizando un avatar diferente al utilizado en la aplicacion</li>
<li>Teletransportarse a sitio donde se encuentra el avatar a ser controlado</li>
<li>Controlar el avatar utilizando los marcadores</li>
</ul>
<p><strong>Enlaces : </strong></p>
<ul>
<li>Pagina del Proyecto :<br />
<a title="MMetaverseSurface" href="http://www.marlonj.com/blog/proyectos/mmetaversesurface" target="_blank">http://www.marlonj.com/blog/proyectos/mmetaversesurface</a></li>
<li>Descargar la aplicacion :<br />
<a title="MMetaverseSurface 0,1" href="http://msketchbook.googlecode.com/files/mmetaversesurface_0.1.zip" target="_blank">http://msketchbook.googlecode.com/files/mmetaversesurface_0.1.zip</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2009/01/mmetaversesurface-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creando el Primer Bot con LibOpenMetaverse</title>
		<link>http://www.marlonj.com/blog/2008/12/creando-el-primer-bot-con-libopenmetaverse/</link>
		<comments>http://www.marlonj.com/blog/2008/12/creando-el-primer-bot-con-libopenmetaverse/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 02:55:41 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[libopenmetaverse]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=449</guid>
		<description><![CDATA[Despues de compilar la libreria de linopenmetaverse me dedique hacer el primer programa con la libreria, donde un avatar se autentique con el servidor y permanezca en el mundo un determinado tiempo y despues salga de este, esto con el fin de conocer el uso de la libreria y los pasos requeridos para compilar el [...]]]></description>
			<content:encoded><![CDATA[<p>Despues de compilar la libreria de linopenmetaverse me dedique hacer el primer programa con la libreria, donde un avatar se autentique con el servidor y permanezca en el mundo un determinado tiempo y despues salga de este, esto con el fin de conocer el uso de la libreria y los pasos requeridos para compilar el programa.</p>
<p>Al principio solo dejaba al avatar cinco segundos en el mundo, pero al tratar de entrar de nuevo el servidor me sacaba diciendo que el avatar ya estaba logueado, entonces probe con 60 segundos, 30 segundos, al final me quede con 15 segundos asegurando asi que el proceso de autenticacion y loqueo se cumpla totalmente, para luego proceder a cerrar la conexion.</p>
<p><a href="http://www.marlonj.com/blog/wp-content/uploads/2008/12/mybot01.png" rel="lightbox[449]"><img class="aligncenter size-full wp-image-451" title="MyBot" src="http://www.marlonj.com/blog/wp-content/uploads/2008/12/mybot01.png" alt="" width="500" height="312" /></a></p>
<ul>
<li>Abrir una consola</li>
<li>Crear el directorio para nuestro programa<br />
mkdir MyBot<br />
cd MyBot</li>
<li>Copiar las dlls necesarias de la libreria libopenmetaverse compiladas anteriormente<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverse.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverseTypes.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/OpenMetaverse.StructuredData.dll .<br />
cp &lt;directorio libopenmv&gt;/trunk/bin/log4net.dll .</li>
<li>Crear el programa en C#<br />
vi MyBot.cs</p>
<pre class="csharp"><span style="color: #0600FF;">using</span> <span style="color: #000000;">System</span>;
<span style="color: #0600FF;">using</span> <span style="color: #000000;">System</span>.<span style="color: #0000FF;">Threading</span>;
<span style="color: #0600FF;">using</span> OpenMetaverse; <span style="color: #008080; font-style: italic;">// Libreria de Acceso OpenSimulator</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> MyBot
<span style="color: #000000;">&#123;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #0600FF;">void</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
                <span style="color: #008080; font-style: italic;">// Crear cliente</span>
                GridClient client = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span style="color: #008000;">new</span></a> GridClient<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
                <span style="color: #008080; font-style: italic;">// Informacion acerca del avatar y la aplicacion</span>
                LoginParams loginParams =
                         client.<span style="color: #0000FF;">Network</span>.<span style="color: #0000FF;">DefaultLoginParams</span><span style="color: #000000;">&#40;</span>
                                <span style="color: #808080;">&quot;Juan&quot;</span>,<span style="color: #808080;">&quot;Perez&quot;</span>,<span style="color: #808080;">&quot;1234&quot;</span>,<span style="color: #808080;">&quot;MyBot&quot;</span>,<span style="color: #808080;">&quot;0.1&quot;</span><span style="color: #000000;">&#41;</span>;
&nbsp;
                <span style="color: #008080; font-style: italic;">// Colocamos la direccion de nuestro simulador</span>
                loginParams.<span style="color: #0000FF;">URI</span> = <span style="color: #808080;">&quot;http://192.168.1.3:9000/&quot;</span>;
&nbsp;
                <span style="color: #008080; font-style: italic;">// Tratamos de entrar</span>
                <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>client.<span style="color: #0000FF;">Network</span>.<span style="color: #0000FF;">Login</span><span style="color: #000000;">&#40;</span>loginParams<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
                <span style="color: #000000;">&#123;</span>
                        <span style="color: #008080; font-style: italic;">// Si entramos sacamos un mensaje,</span>
                        <span style="color: #008080; font-style: italic;">// esperamos 15 segundos</span>
                        <span style="color: #008080; font-style: italic;">// y salimos del mundo</span>
                        Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Entrando ...&quot;</span><span style="color: #000000;">&#41;</span>;
                        Thread.<span style="color: #0000FF;">Sleep</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">15000</span><span style="color: #000000;">&#41;</span>;
                        client.<span style="color: #0000FF;">Network</span>.<span style="color: #0000FF;">Logout</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>;
                <span style="color: #000000;">&#125;</span>
                <span style="color: #0600FF;">else</span>
                        <span style="color: #008080; font-style: italic;">// Si no fue posible loguearse, mostrar error</span>
                        Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span>client.<span style="color: #0000FF;">Network</span>.<span style="color: #0000FF;">LoginMessage</span><span style="color: #000000;">&#41;</span>;
        <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre>
</li>
<li>Compilar el programa :<br />
gmcs -lib:. -r:OpenMetaverse.dll MyBot.cs</li>
<li>Ejecutar el programa :<br />
mono MyBot.exe</li>
</ul>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="302" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="intl_lang=en-us&amp;photo_secret=eacd546eb9&amp;photo_id=3090949407" /><param name="bgcolor" value="#000000" /><param name="allowFullScreen" value="true" /><param name="src" value="http://www.flickr.com/apps/video/stewart.swf?v=63881" /><embed type="application/x-shockwave-flash" width="400" height="302" src="http://www.flickr.com/apps/video/stewart.swf?v=63881" allowfullscreen="true" bgcolor="#000000" flashvars="intl_lang=en-us&amp;photo_secret=eacd546eb9&amp;photo_id=3090949407"></embed></object></p>
<p>Para verificar que esto esta funcionando puede abrir el visor y entrar con un usuario a la zona inicial de la region, cuando ejecute el programa Juan Perez aparecera por unos momentos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2008/12/creando-el-primer-bot-con-libopenmetaverse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Compilando LibOpenMetaverse en Ubuntu 8.10</title>
		<link>http://www.marlonj.com/blog/2008/12/compilando-libopenmetaverse-en-ubuntu-810/</link>
		<comments>http://www.marlonj.com/blog/2008/12/compilando-libopenmetaverse-en-ubuntu-810/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 01:45:02 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[libopenmetaverse]]></category>
		<category><![CDATA[libsecondlife]]></category>
		<category><![CDATA[mono]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=447</guid>
		<description><![CDATA[Para comenzar a desarrollar con la libreria libsecondlife, tome la decision de mejor pasarme de una vez a libopenmetaverse, no encontre binarios disponibles asi que me di a la tarea de compilar la libreria. Preparativos : Abrir una terminal Debemos instalar el cliente de subversion para poder descargar los fuentes del repositorio sudo apt-get install [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Para comenzar a desarrollar con la libreria libsecondlife, tome la decision de mejor pasarme de una vez a libopenmetaverse, no encontre binarios disponibles asi que me di a la tarea de compilar la libreria.</p>
<p style="text-align: justify;"><strong>Preparativos : </strong></p>
<ul>
<li>Abrir una terminal</li>
<li>Debemos instalar el cliente de subversion para poder descargar los fuentes del repositorio<br />
sudo apt-get install subversion</li>
<li>Debemos instalar lo paquetes para compilar la libreria<br />
(He instalado ya tantos paquetes de mono que la verdad no se con cuales es lo minimo)<br />
sudo apt-get install nant mono-2.0-devel libmono-winforms2.0-cil mono-1.0-devel</li>
</ul>
<p><strong>Compilar LibOpenMetaverse :</strong></p>
<ul>
<li>Descargar la version actual de la libreria por medio de subversion<br />
svn co http://openmetaverse.org/svn/omf/libopenmetaverse/trunk/</li>
<li>Ir al directorio trunk<br />
cd trunk</li>
<li>Ejecutar un shell que prepara el proyecto y lo compila<br />
sh runprebuild.sh nant</li>
<li>Aqui tenemos un problema, el script lanza el siguiente error :<br />
[: 11: ==: unexpected operator<br />
[: 18: ==: unexpected operator<br />
Parece ser que el shell no entiende los operadores ==</li>
<li>Para corregir esto ejecutamos con el shell bash<br />
bash runprebuild.sh nant</li>
<li>Los binarios de la libreria esta en el directorio bin</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2008/12/compilando-libopenmetaverse-en-ubuntu-810/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HolaMundo con Ubuntu 8.10 y Mono</title>
		<link>http://www.marlonj.com/blog/2008/12/holamundo-con-ubuntu-810-y-mono/</link>
		<comments>http://www.marlonj.com/blog/2008/12/holamundo-con-ubuntu-810-y-mono/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 00:53:12 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=445</guid>
		<description><![CDATA[La libreria Libsecondlife que necesito para hacer algunos desarrollos con SecondLife y OpenSimulator para un trabajo que estoy realizando y que en un futuro estare publicando, esta escrita en C# y puede ser utilizada en Ubuntu con Mono, asi que ha escribir codigo en C#, bueno al menos ya soy Desarrollador 5 Estrellas :p Instalar [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">La libreria Libsecondlife que necesito para hacer algunos desarrollos con SecondLife y OpenSimulator para un trabajo que estoy realizando y que en un futuro estare publicando, esta escrita en C# y puede ser utilizada en Ubuntu con Mono, asi que ha escribir codigo en C#, bueno al menos ya soy Desarrollador 5 Estrellas :p</p>
<p style="text-align: justify;"><strong>Instalar Compilador de C# :</strong></p>
<ul>
<li>Abrir una consola</li>
<li>Debemos instalar el compilador de c#,<br />
esto debe instalar la plataforma mono si no se ha instalado previamente :<br />
sudo apt-get install mono-mcs</li>
<li>Voila !!!</li>
</ul>
<p>Escribir, Compilar y Ejecutar Programa :</p>
<ul>
<li>Crear el archivo HolaMundo.cs<br />
vi HolaMundo.cs</li>
<li>Escribir el siguiente programa en C# :
<pre class="csharp"><span style="color: #0600FF;">using</span> <span style="color: #000000;">System</span>;
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> HolaMundo
<span style="color: #000000;">&#123;</span>
        <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #0600FF;">void</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#123;</span>
                Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #808080;">&quot;Hola Mundo&quot;</span><span style="color: #000000;">&#41;</span>;
        <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre>
</li>
<li>Compilar el Programa<br />
mcs HolaMundo.cs</li>
<li>Ejecutar el Programa, nos debe salir en consola el mensaje Hola Mundo<br />
mono HolaMundo.exe</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2008/12/holamundo-con-ubuntu-810-y-mono/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalando Libsecondlife en Ubuntu 8.10</title>
		<link>http://www.marlonj.com/blog/2008/12/instalando-libsecondlife-en-ubuntu-810/</link>
		<comments>http://www.marlonj.com/blog/2008/12/instalando-libsecondlife-en-ubuntu-810/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 21:20:46 +0000</pubDate>
		<dc:creator>marlonj</dc:creator>
				<category><![CDATA[Cacharreos]]></category>
		<category><![CDATA[libsecondlife]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[opensimulator]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.marlonj.com/blog/?p=414</guid>
		<description><![CDATA[Instalaremos la version binaria del la libreria libsecondlife en una maquina Ubuntu 8.10, para esto necesitamos tambien instalar mono. Instalar Mono : Abrir una consola y ejecutar sudo apt-get install mono-runtime Instalar Libsecondlife : Ir a la pagina de descarga http://www.libsecondlife.org/wiki/Download Buscar la distribucion binaria, comprimida en zip y copiar el enlace http://www.libsecondlife.org/builds/libsecondlife-0_5_0-binary.zip Abrir una [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.marlonj.com/blog/wp-content/uploads/2008/12/opensim_testclient.png" rel="lightbox[414]"><img class="aligncenter size-full wp-image-420" title="OpenSimulator Libsecondlife" src="http://www.marlonj.com/blog/wp-content/uploads/2008/12/opensim_testclient.png" alt="" width="500" height="315" /></a></p>
<p style="text-align: justify;">Instalaremos la version binaria del la libreria libsecondlife en una maquina Ubuntu 8.10, para esto necesitamos tambien instalar mono.</p>
<p><strong>Instalar Mono : </strong></p>
<ul>
<li>Abrir una consola y ejecutar<br />
sudo apt-get install mono-runtime</li>
</ul>
<p><strong>Instalar Libsecondlife :</strong></p>
<ul>
<li>Ir a la pagina de descarga<br />
<a title="Libsecondlife download" href="http://www.libsecondlife.org/wiki/Download" target="_blank">http://www.libsecondlife.org/wiki/Download</a></li>
<li>Buscar la distribucion binaria, comprimida en zip y copiar el enlace<br />
<a title="Libsecondlife 0.5.0" href="http://www.libsecondlife.org/builds/libsecondlife-0_5_0-binary.zip" target="_blank">http://www.libsecondlife.org/builds/libsecondlife-0_5_0-binary.zip</a></li>
<li>Abrir una consola</li>
<li>Crear un directorio para almacenar la libreria<br />
mkdir libsl<br />
cd libsl</li>
<li>Descargar el archivo (2.7M)<br />
wget http://www.libsecondlife.org/builds/libsecondlife-0_5_0-binary.zip</li>
<li>Descomprimir el archivo<br />
unzip libsecondlife-0_5_0-binary.zip</li>
</ul>
<p><strong>Ejecutar Cliente Consola :</strong></p>
<ul>
<li>Libsecondlife cuenta con un programa que nos permite acceder al mundo virtual a traves de consola y dar indicaciones a nuestro avatar o explorar el mundo :</li>
<li>mono TestClient.exe --first Juan --last Perez --pass 1234 --loginuri=http://192.168.1.3:9000/<br />
52 [1] INFO  - No log configuration found, defaulting to console logging<br />
424 [2] INFO  - &lt;Juan Perez&gt;: Connecting to (192.168.1.3:9000)<br />
606 [3] WARN  - &lt;Juan Perez&gt;: Received a duplicate of packet #2, current type: AvatarAppearance<br />
745 [4] INFO  - &lt;Juan Perez&gt;: Received a region handshake for OpenSim Test (192.168.1.3:9000)<br />
Logged in Juan Perez<br />
Type quit to exit.  Type help for a command list.<br />
1 avatars online&gt; say Hola<br />
Said Hola</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.marlonj.com/blog/2008/12/instalando-libsecondlife-en-ubuntu-810/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
