Resistance is Futile

Pulsar Project : Preparacion Ambiente Web

Se comenzó a preparar el ambiente de desarrollo web para Pulsar Project, en este caso se tomo la decisión de utilizar el lenguaje PHP como lenguaje de programación de una librería que permite la comunicación de los componentes de los mundos virtuales con el mundo exterior. Se escogió el lenguaje de programación PHP por su soporte en los servidores que típicamente se podrían encontrar en los ambientes educativos donde se implementara la solución, así como también la poca cantidad de recursos que consume el lenguaje.

Anteriormente se instalo un servidor Ubuntu Linux con LAMP, conjunto de herramientas para el desarrollo de aplicaciones web basadas en Linux, Apache, MySQL y PHP, la tarea ahora es crear el ambiente para el desarrollo de la libreria de comunicacion en PHP, para esto se habilitara el directorio web para usuarios y la ejecucion de scripts desde el mismo :

  • Conectarse al Servidor de Desarrollo, con el usuario pulsar
  • Crear el directorio de paginas para el usuario
    mkdir public_html
  • Habilitar el modulo de directorio de usuarios
    sudo a2enmod userdir
  • Reiniciar el Apache
    sudo service apache2 restart
  • Probar que el directorio se puede acceder via web

    http://pulsarserver/~pulsar/

Actualmente y por políticas de seguridad se encuentra deshabilitado la ejecucion de scripts en PHP desde el directorio de usuario, procedemos a habilitar esa opcion :

  • Abrir el archivo de configuración de PHP5
    sudo vi /etc/apache2/mods-available/php5.conf
  • Buscar las Lineas
    <IfModule mod_userdir.c>
    <Directory /home/*/public_html>
    php_admin_value engine Off
    </Directory>
    </IfModule>
  • Comentarlas
    #<IfModule mod_userdir.c>
    #    <Directory /home/*/public_html>
    #        php_admin_value engine Off
    #    </Directory>
    #</IfModule>
  • Reiniciar el Apache
    sudo service apache2 restart

Pulsar Project : Stored Inventory

Antes conocido como Second Inventory y debido a las politicas de derechos de autor de Second Life que no permite el uso de "Second" de los productos asociados a su mundo virtual, Stored Inventory es una aplicación para la plataforma Windows que permite realizar un copia local de los elementos (texturas, scripts, prims, objetos) creados en SecondLife, OpenSim o en alguno de los mundos virtuales compatibles con estas plataformas.

Caracteristicas :

  • Permite hacer una copia local de los elementos creados en SecondLife, OpenSim
  • Soporta copia de Scripts, Notecards, Texturas, Ropas, Skins. Objetos (Prims y Primsets)
  • Sirve como herramienta de backup para almacenar datos locales los cuales pueden ser restaurados nuevamente
  • Evita la perdida de información debido al mal funcionamiento de los servidores
  • Permite copiar contenidos de un mundo virtual a otro, lo que facilita mover elementos de OpenSim a Second Life y viceversa
  • Solo permite copiar los elementos sobre los cuales se tienen todos los permisos de copia o ser el dueño del objeto
  • NO funciona como CopyBot para copiar o clonar elementos de otros usuarios sin los permisos de copia
  • NO es multiplataforma, solo funciona bajo la Plataforma Windows
  • Esta desarrollado en .NET 2.0
  • NO es gratis
  • Licencia por Computador
  • Licencia por Avatars
    36.2 $USD ($70.000 COL) la versión Multi Avatar
    17.5 $USD ($33.000 COL) la versión Único Avatar

Actualmente se cuenta con una licencia Multi Avatar la cual se adquirió hace un año y medio para realizar copias de seguridad del inventario de elementos creados en Second Life, ahora se utilizara esta aplicación para realizar copias de seguridad de los items desarrollados bajo OpenSimulator, como también exportar e importar contenidos de Second Life, permitiendo crear un inventario de herramientas igualmente disponibles en diferentes plataformas de los mundos virtuales.


Pulsar Project : Instalacion OpenSimulator 0.7 RC 2

El día de hoy tuvimos algunos problemas con la maquina host de nuestro proyecto, al momento de  ejecutar VirtualBox el teclado y mouse no respondían de tal forma que no fue posible apagar la maquina de forma correcta si no a través del temido apagar y prender, tiempo despues se trato de ejecutar la maquina virtual de nuevo deshabilitando de nuevo el teclado y el mouse, afortunadamente esta vez se pudo conectar otro teclado USB a la maquina a lo cual respondio de nuevo habilitando el mouse y el teclado, pero desafortunadamente nuestra maquina virtual sufrio algunos percances, ademas de esto se trato de actualizar el software y se trato de chequear el archivo de sistemas, donde "accidentalmente" see borro un nodo del sistema de archivos por lo cual la maquina no volvio a arrancar, debido a la premura de tiempo se tomo la decisión de utilizar una copia del servidor base y reinstalar el OpenSimulator de nuevo, esta vez se utilizara la versión 0.7 RC2 que recién salio hoy 1 de Julio de 2010 (como decía un profesor de la universidad, Pandebono Caliente).

Prerequisitos :

  • Maquina Virtual del Servidor de Desarrollo para Pulsar Project
  • Configuración NAT o Bridge para interface de red de la maquina virtual
  • Conexión a Internet

El software se instalara inicialmente en el directorio home del usuario Pulsar

Instalación :

  • Ejecutar la maquina virtual
  • Conectarse con
    usuario : pulsar
    clave : pulsar2010
  • Si se quiere realizar la instalación desde una terminal remota
    • obtener la ip del servidor
      ifconfig
    • Recuerde que con NAT solo se podra conectar desde la maquina local al servidor, no de otras maquinas de la red
    • Conectarse remotamente via ssh o putty

Instalacion del Software :

  • Instalar el software necesario para instalar OpenSimulator
    • sudo apt-get install wget
    • sudo apt-get install libmono-microsoft8.0-cil libmono-sqlite2.0-cil mono-gmcs libmono-system-web2.0-cil
  • Crear un directorio para almacenar los instaladores
    • mkdir sw
    • cd sw
  • Descargar la version 0.7 RC1 desde el servidor de OpenSimulator
    • wget http://dist.opensimulator.org/opensim-0.7-rc2-bin.tar.gz
      Esto descarga un archivo de 24 MB
    • Descomprimir el software
      tar -zxvf opensim-0.7-rc2-bin.tar.gz
  • Configurar el servidor
    • cd opensim-0.7-rc2-bin/bin
    • cp OpenSim.ini.example OpenSim.ini
    • cp config-include/StandaloneCommon.ini.example config-include/StandaloneCommon.ini
  • Ejecutar el servidor :
    • ./OpenSim.exe
  • Configuración Inicial
    • OpenSimulator comienza a cargar módulos y luego nos pregunta por las características de la región :
      New region name []: Pulsar Region<ENTER>
      Region UUID [862dd817-93a0-40e6-832c-682d6833c803]:<ENTER>
      Region Location [1000,1000]:<ENTER>
      Internal IP address [0.0.0.0]:<ENTER>
      Internal port [9000]:<ENTER>
      Allow alternate ports [False]:<ENTER>
      External host name [SYSTEMIP]:<ENTER>
    • Luego nos pide la información del estado :
      Your region is not part of an estate.
      Do you wish to join an existing estate? [no]:<ENTER>
      New estate name [My Estate]: Pulsar Estate<ENTER>
    • Luego nos solicita el nombre del dueño de la region :
      The current estate has no owner set.
      Estate owner first name [Test]: Master<ENTER>
      Estate owner last name [User]: Pulsar<ENTER>
      Passwordpulsar2010<ENTER>
      Email []: pulsar@pulsarserver<ENTER>
    • Finalmente quedamos en el Menu de Region :
      Region (Pulsar Region) #

Con esto ya tenemos nuestro servidor de OpenSimulator listo para ser visitado por el dueño de la región.


Pulsar Project : Status.net HUD v0.1

Este es el primer desarrollo oficial del Pulsar Project, el Pulsar Status.Net HUD v0.1, este objeto permite actualizar el estado en un servidor basado en la plataforma de microblogging Status.Net, utilza el API compatible con Twitter para actualizar el mensaje de estado del sitio directamente desde el mundo virtual.

Instalación :

  • Ir al inventario
  • Buscar el objeto Pulsar Status.Net HUD v0.1
  • Click derecho sobre el objeto
  • Seleccionar la opción "Attach to HUD"
  • Seleccionar la opción "Top Left"
  • Aparece en pantalla una imagen con el logo de Status.Net
    (este es el objeto pegado a la pantalla)
  • Debe aparecer en el chat el mensaje :
    Pulsar Status.Net HUD v0.1 : Ready

Configuración :

  • Click derecho sobre el objeto
  • Seleccionar la opción "Edit"
  • Ir a la pestaña "Content"
  • Doble Click en el archivo "PulsarStatusNetHUD.lsl"
  • Cambiar los valores de usuario por los de su cuenta :
    string psnh_username = "juanp";
    string psnh_password = "xxxx";
  • Cambiar el numero de canal donde escucha el objeto :
    integer psnh_channel = 5;
  • Cambiar la direccion del servidor, por ejemplo http://servidor/dir/index.php
    string psnh_serverName = "servidor";
    string psnh_serverPath = "/dir";
    string psnh_restPath = "index.php/api/statuses/update.xml";
  • Guardar

Uso :

  • En la ventana de chat escribir el mensaje a colocar utilizando el canal
    por ejemplo para el canal 5 :
    /5 Este es un mensaje desde el Mundo Virtual

    Pulsar Project : Status.Net HUD

    Para la actualización de los sitios de microblogging basados en status.net desde los mundos virtuales basados en OpenSimulator y Second Life, se creara un HUD (Heads-Up Display), objeto que puede ser pegado directamente colocado dentro de la pantalla y no dentro del mundo como un objeto o un accesorio del avatar, de esta forma solo es visible dentro de la interface del usuario que lo esta utilizando.

    El objeto contiene un script desarrollado en LSL (Linden Script Language) que escucha los mensajes enviados por el avatar dueño del objeto a traves del canal 5, de esta forma si el usuario quiere enviar un mensaje debe colocar en la ventana de chat /5 seguido por el mensaje a enviar.

     
        // Listen all the messages and post to the microblogging site
        listen(integer channel, string name, key id, string message) {
        	// Update the status using the message give by the user
        	PSNH_updateStatus(message);
        }
     

    El script toma el mensaje y lo envia a traves de una peticion HTTP al servidor, adicionando informacion de autenticacion y el nuevo estado.

     
    // Update the estatus of the user in the microblogging site
    // @param message The message to use like status
    PSNH_updateStatus(string message) {
    	// Construct the url to send the message
    	// Something like this
    	// http://username:password@server.com/api/statuses/update.xml
    	string url = "http://" + psnh_username + ":" + psnh_password + "@"
    		+ psnh_serverName + psnh_serverPath + psnh_restPath;
     
    	// Prepare request values, using post and send the message encoded
    	string body = "status=" + message;
    	list parameters = [
    		HTTP_METHOD, "POST",
    		HTTP_MIMETYPE, "application/x-www-form-urlencoded; charset=UTF-8"
    	];
     
    	// Sen the request
    	psnh_requestID = llHTTPRequest(url, parameters, body);
    }
     

    La respuesta del servidor es capturada por el script y se visualiza un mensaje de error si el código retornado por el servidor es 200 (OK), si es otro código se escribe en la pantalla de chat simplemente el error y el contenido de la respuesta devuelta por el servidor.

     
    // Check the reponse send by the server
    // @param request_id The identifier of the request
    // @param status The http reponse code send by the server
    // @param metadata Metadata associated with the request
    // @param body The response information send by the server
    PSNH_checkResponse(key request_id, integer status, list metadata, string body) {
    	// If any problem with the server, show the page that send
    	// The server response 200 if not problem
    	if(status != 200)
    		llOwnerSay(body);
    	// Show a info message
    	else
    		llOwnerSay("Status Update!!!");
    }
     

    El script completo es colocado dentro del objeto, acompañado de otros archivos de documentación.

    Enlaces :


    Pulsar Project : Actualizando Estado en Status.Net

    Antes de comenzar el desarrollo de una herramienta a utilizar dentro del mundo virtual, que permita actualizar el estado del usuario en un servidor basado en status.net, debemos entender el uso del API de acceso a la plataforma.

    Actualmente status.net es compatible con el API de twitter lo cual permite construir clientes que sean compatibles con las dos plataformas, debemos entonces primero consultar el API para identificar el metodo que nos permite actualizar el estado de un usuario.

    Twitter API :
    http://apiwiki.twitter.com/Twitter-API-Documentation

    Se identifico statuses/update como el método a utilizar para la actualización del estado del usuario ya autenticado, se opto por usar una respuesta en el formato xml frente a json, por tal motivo la url de acceso a este servicio en twitter es http://api.twitter.com/1/statuses/update.xml, en el caso de status.net debemos suministrar una url de la siguiente forma http://<servidor>/<dir>/index.php/api/statuses/update.xml

    Para realizar pruebas iniciales se creo una cuenta en el sitio de status,net con la siguiente direccion http://pulsarproject.status.net en la cual el api puede ser accedida a traves de la url http://pulsarproject.status.net/api/statuses/update.xml

    Para actualizar el estado debemos autenticar el usuario antes de enviar el mensaje, actualmente status.net soporta autenticacion básica, lo que permite enviar el nombre de usuario y clave dentro de la url, mientras que twitter tiene planeado para el mes de Agosto quitar el soporte para este tipo de autenticacion y utilizar OAuth en su reemplazo.

    Para simplificar el desarrollo se utilizara la autenticacion básica que aunque simple es insegura, adicionalmente se codificara el mensaje en formato application/x-www-form-urlencoded adicionando status=estado al mensaje enviado a través del método POST

    Actualizacion del Estado :

    • URL (ejemplo) :

      http://usuario@clave:pulsarproject.status.net/api/statuses/update.xml

    • Metodo :
      POST
    • Parametros :
      status=estado

    Page 3 of 7312345102030...Last »
    Powered by WordPress | Designed by Elegant Themes