<?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>Ubicuos.com</title>
	<atom:link href="http://www.ubicuos.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ubicuos.com</link>
	<description>Tecnología,Programación, Proyectos, Ciencia y Empresas</description>
	<lastBuildDate>Thu, 18 Mar 2010 02:27:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Conectar Ruby con Mysql en Ubuntu 9.10</title>
		<link>http://www.ubicuos.com/2010/03/17/conectar-ruby-con-mysql-en-ubuntu-9-10/</link>
		<comments>http://www.ubicuos.com/2010/03/17/conectar-ruby-con-mysql-en-ubuntu-9-10/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 21:06:14 +0000</pubDate>
		<dc:creator>Sosa suazo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux y Software Libre]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=717</guid>
		<description><![CDATA[
			
				
			
		
Para poder conectar Ruby con Mysql necesitamos de tres cosas:
Ruby, Mysql y el modulo Ruby Mysql que es el que nos ayudara a crear la conexión.
El modulo lo podemos descargar del siguiente enlace http://rubyforge.org/frs/?group_id=4550.
Para este ejemplo se utilizaron las siguientes versiones.
Mysql: 5.1.37-1ubuntu5.1
Ruby: 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
Modulo: mysql-ruby-2.8.2.tar.gz
 
Ya descargado el modulo lo descomprimimos con [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F17%2Fconectar-ruby-con-mysql-en-ubuntu-9-10%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F17%2Fconectar-ruby-con-mysql-en-ubuntu-9-10%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Para poder conectar Ruby con Mysql necesitamos de tres cosas:</p>
<p>Ruby, Mysql y el modulo Ruby Mysql que es el que nos ayudara a crear la conexión.</p>
<p>El modulo lo podemos descargar del siguiente enlace <a href="http://rubyforge.org/frs/?group_id=4550">http://rubyforge.org/frs/?group_id=4550</a>.</p>
<p>Para este ejemplo se utilizaron las siguientes versiones.</p>
<pre><strong>Mysql: 5.1.37-1ubuntu5.1</strong></pre>
<pre><strong>Ruby: 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]</strong></pre>
<pre><strong>Modulo: mysql-ruby-2.8.2.tar.gz
 </strong></pre>
<p>Ya descargado el modulo lo descomprimimos con el siguiente comando:</p>
<pre><strong>tar zxf mysql-ruby-2.8.2.tar.gz

</strong></pre>
<p>Accedemos a la carpeta mysql-ruby-2.8.2 y ejecutamos el siguiente comando para configurar la distribución:</p>
<pre><strong>ruby extconf.rb

</strong></pre>
<p>Una vez configurado instalamos el modulo:</p>
<pre><strong>mak</strong>e
<strong>sudo make install

</strong></pre>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/instalar-mysql-ruby-2.8.2.png"><img class="alignnone size-full wp-image-730" title="instalar-mysql-ruby-2.8.2" src="http://www.ubicuos.com/wp-content/uploads/2010/03/instalar-mysql-ruby-2.8.2.png" alt="" width="595" height="417" /></a></p>
<p>Con el modulo Ruby MySql instalado, ya podremos ser capaces de conectarnos a nuestro servidor MySql. Para este ejemplo nuestro servidor se está ejecutando en la maquina local y tenemos una base de datos llamada &#8220;escuela&#8221;  y una tabla llamada &#8220;alumno&#8221; con los campos matricula, nombre y carrera.</p>
<p>Como nos conectaremos con un nombre de usuario y contraseña necesitamos configurar esta cuenta para poder trabajar con mysql y ruby, para ello haremos lo siguiente:</p>
<p>Accedemos a mysql con el comando</p>
<pre><strong>mysql -u root -p

</strong></pre>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/accedermysql.png"><img class="alignnone size-full wp-image-731" title="accedermysql" src="http://www.ubicuos.com/wp-content/uploads/2010/03/accedermysql.png" alt="" width="595" height="417" /></a></p>
<p>Damos los permisos para poder trabajar con la tabla.</p>
<pre><strong>GRANT ALL ON escuela.* TO 'root'@'localhost' IDENTIFIED BY '1234';

</strong></pre>
<p>donde &#8216;1234&#8242; es el password de nuestro servidor mysql.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/permisosmysql.png"><img class="alignnone size-full wp-image-732" title="permisosmysql" src="http://www.ubicuos.com/wp-content/uploads/2010/03/permisosmysql.png" alt="" width="595" height="417" /></a></p>
<p>En caso de no tener creada nuestra base de datos, la creamos de la siguiente manera.</p>
<pre><strong>CREATE DATABASE escuela;
 </strong></pre>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/createdatabase.png"><img class="alignnone size-full wp-image-734" title="createdatabase" src="http://www.ubicuos.com/wp-content/uploads/2010/03/createdatabase.png" alt="" width="595" height="417" /></a></p>
<p>Creamos la tabla alumno.</p>
<pre><strong>CREATE TABLE alumno(
matricula varchar(10),
nombre varchar(40),
carrera varchar(40));

</strong></pre>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/createtable.png"><img class="alignnone size-full wp-image-735" title="createtable" src="http://www.ubicuos.com/wp-content/uploads/2010/03/createtable.png" alt="" width="595" height="417" /></a></p>
<p>Bueno, hasta aquí ya tenemos configurado nuestro modulo y nuestro servidor, ahora vamos a lo que es el programa. El código esta divido en dos archivos, para este caso los llame mysqlruby.rb y clase.rb, donde mysqlruby.rb tendrá el código del menú mostrado en pantalla y clase.rb tendrá los métodos de agregar, consultar, eliminar y la conexión de la base de datos.</p>
<p>El código lo pueden descargar de aquí.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/mysqlruby.zip">mysqlruby</a></p>
<p>A continuación algunas imagenes del funcionamiento del programa.</p>
<p>Menú.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/menu.png"><img class="alignnone size-full wp-image-743" title="menu" src="http://www.ubicuos.com/wp-content/uploads/2010/03/menu.png" alt="" width="595" height="417" /></a></p>
<p>Agregar.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/agregar.png"><img class="alignnone size-full wp-image-744" title="agregar" src="http://www.ubicuos.com/wp-content/uploads/2010/03/agregar.png" alt="" width="581" height="279" /></a></p>
<p>Consultar.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/consultar.png"><img class="alignnone size-full wp-image-745" title="consultar" src="http://www.ubicuos.com/wp-content/uploads/2010/03/consultar.png" alt="" width="581" height="279" /></a></p>
<p>Eliminar.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/eliminar.png"><img class="alignnone size-full wp-image-746" title="eliminar" src="http://www.ubicuos.com/wp-content/uploads/2010/03/eliminar.png" alt="" width="645" height="242" /></a></p>
<p>Salir.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/salir.png"><img class="alignnone size-full wp-image-747" title="salir" src="http://www.ubicuos.com/wp-content/uploads/2010/03/salir.png" alt="" width="645" height="208" /></a></p>
<p>Listo!!</p>
<p>El código puede ser modificado según sea la necesidad, por ahora espero sea de gran ayuda, cualquier duda no duden en comentar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/03/17/conectar-ruby-con-mysql-en-ubuntu-9-10/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Invitación al Grupo de Usuarios de PHP</title>
		<link>http://www.ubicuos.com/2010/03/15/grupo-php-linuxcabal-glo/</link>
		<comments>http://www.ubicuos.com/2010/03/15/grupo-php-linuxcabal-glo/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 21:32:27 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux y Software Libre]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Social / Internet]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[grupo]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=719</guid>
		<description><![CDATA[
			
				
			
		
Saludos a todos.
Nos envían la siguiente invitación por parte del Grupo de Usuarios de Linux de Occidente y LinuxCabal.
Para las comunidades de GNU &#38; Linux y F/OSS (Free y Open Source Software)
Fundado en 1996. Desde 2005 en Guadalajara, Jalisco México.
El objetivo del grupo es producir código, está diseñado para ususarios de nivel intermedio que quieran [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F15%2Fgrupo-php-linuxcabal-glo%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F15%2Fgrupo-php-linuxcabal-glo%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Saludos a todos.<br />
Nos envían la siguiente invitación por parte del Grupo de Usuarios de Linux de Occidente y LinuxCabal.<br />
Para las comunidades de GNU &amp; Linux y F/OSS (Free y Open Source Software)<br />
Fundado en 1996. Desde 2005 en Guadalajara, Jalisco México.</p>
<p>El objetivo del grupo es producir código, está diseñado para ususarios de nivel intermedio que quieran pulir sus habilidades y socializando con otros usuarios, la idea es que los que están arriba &#8220;jalen&#8221; a los de abajo.</p>
<p>La dinámica de trabajo contempla 30min para dejar que los nuevos aprendan un poco, para despúes comenzar a trabajar en serio, la intención es trabajar sobre proyectos que  representen un beneficio para la comunidad y que puedan ser usados como carta de presentación por los participantes.</p>
<p>Las reuniones de los usuarios de PHP serán los Martes de 7:00pm a 9:00pm, en las instalaciones de LinuxCabal ubicadas en Cale 14 #2184-A Colonia Ferrocarril Guadalajara, Jalisco México, CP 44440 entre Calle 11 y Calz. Lázaro Cárdenas a 2 cuadras de la estación Lázaro Cárdenas del Macrobús.</p>
<p>Para más información visita nuestra página web:<a href="http://www.linuxcabal.org"> http://www.linuxcabal.org</a></p>
<p style="text-align: center;"><a href="http://www.linuxcabal.org"><img class="aligncenter size-full wp-image-720" title="lcPHP_banner" src="http://www.ubicuos.com/wp-content/uploads/2010/03/lcPHP_banner.png" alt="Invitación al grupo de PHP de Guadalajara México" width="540" height="507" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/03/15/grupo-php-linuxcabal-glo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalación de postgresql-8.3 y postgresql-8.3-postgis en Ubuntu 9.10</title>
		<link>http://www.ubicuos.com/2010/03/12/instalacion-de-postgresql-8-3-y-postgresql-8-3-postgis-en-ubuntu-9-10/</link>
		<comments>http://www.ubicuos.com/2010/03/12/instalacion-de-postgresql-8-3-y-postgresql-8-3-postgis-en-ubuntu-9-10/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 22:26:22 +0000</pubDate>
		<dc:creator>Sosa suazo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Linux y Software Libre]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[base]]></category>
		<category><![CDATA[cartografia]]></category>
		<category><![CDATA[postgis]]></category>
		<category><![CDATA[postgresql]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=693</guid>
		<description><![CDATA[
			
				
			
		
Para este tutoríal instalaremos postgresql-8.3 y postgresql-8.3-postgis desde el Gestor de paquetes Synaptic, para ello nos dirigimos a Sistema / Administración / Gestor de paquetes Synaptic.
Una vez abierto el Synaptic buscaremos los paquetes postgresql-8.3 y postgresql-8.3-postgis.

Damos un clic derecho sobre cada paquete y seleccionamos la opción Marcar para instalar. Nos informara sobre paquetes adicionales que [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F12%2Finstalacion-de-postgresql-8-3-y-postgresql-8-3-postgis-en-ubuntu-9-10%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F12%2Finstalacion-de-postgresql-8-3-y-postgresql-8-3-postgis-en-ubuntu-9-10%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Para este tutoríal instalaremos postgresql-8.3 y postgresql-8.3-postgis desde el Gestor de paquetes Synaptic, para ello nos dirigimos a Sistema / Administración / Gestor de paquetes Synaptic.</p>
<p>Una vez abierto el Synaptic buscaremos los paquetes postgresql-8.3 y postgresql-8.3-postgis.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/Gestor-de-paquetes-Synaptic-.png"><img class="alignnone size-full wp-image-696" title="Gestor de paquetes Synaptic" src="http://www.ubicuos.com/wp-content/uploads/2010/03/Gestor-de-paquetes-Synaptic-.png" alt="" width="545" height="409" /></a></p>
<p>Damos un clic derecho sobre cada paquete y seleccionamos la opción Marcar para instalar. Nos informara sobre paquetes adicionales que tenemos que descargar y seleccionamos Marcar en ambos casos.</p>
<p>Dependencias de postgresql-8.3.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/Ventana-sin-título.png"><img class="alignnone size-full wp-image-697" title="Ventana sin título" src="http://www.ubicuos.com/wp-content/uploads/2010/03/Ventana-sin-título.png" alt="" width="490" height="350" /></a></p>
<p>Dependencias de postgresql-8.3-postgis.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/Ventana-sin-título-1.png"><img class="alignnone size-full wp-image-698" title="Ventana sin título-1" src="http://www.ubicuos.com/wp-content/uploads/2010/03/Ventana-sin-título-1.png" alt="" width="490" height="350" /></a></p>
<p>Una vez marcado los paquetes daremos un clic en Aplicar para comenzar la instalación.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/Gestor-de-paquetes-Synaptic-1.png"><img class="alignnone size-full wp-image-699" title="Gestor de paquetes Synaptic -1" src="http://www.ubicuos.com/wp-content/uploads/2010/03/Gestor-de-paquetes-Synaptic-1.png" alt="" width="545" height="409" /></a></p>
<p>Nos muestra un resumen sobre los paquetes que vamos a instalar y cuales se actualizaran.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/Resumen.png"><img class="alignnone size-full wp-image-703" title="Resumen" src="http://www.ubicuos.com/wp-content/uploads/2010/03/Resumen.png" alt="" width="566" height="413" /></a></p>
<p>Damos clic en Aplicar y comienza la descarga.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/Descargando-paquetes.png"><img class="alignnone size-full wp-image-700" title="Descargando paquetes" src="http://www.ubicuos.com/wp-content/uploads/2010/03/Descargando-paquetes.png" alt="" width="450" height="178" /></a></p>
<p>Durante el proceso de instalación es probable que nos muestre una advertencia a la hora de configurar el paquete <strong>postgresql-common</strong>, informándonos que PostgreSQL 8.3 esta obsoleto ya que existe la versión 8.4, ignoramos este mensaje y damos clic en Adelante.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/Debconf-en-jorge-laptop.png"><img class="alignnone size-full wp-image-702" title="Debconf en jorge-laptop" src="http://www.ubicuos.com/wp-content/uploads/2010/03/Debconf-en-jorge-laptop.png" alt="" width="540" height="360" /></a></p>
<p>Termina la instalación y damos clic en cerrar.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/Cambios-aplicados.png"><img class="alignnone size-full wp-image-704" title="Cambios aplicados" src="http://www.ubicuos.com/wp-content/uploads/2010/03/Cambios-aplicados.png" alt="" width="535" height="231" /></a></p>
<p>Cuando instalamos PostgreSQL automaticamente se crea un usuario llamado &#8220;postgres&#8221;, que es el cual nos servira para trabajar.</p>
<p>Por razones de seguridad estableceremos la nueva contraseña al usuario del sistema creado por PostgreSQL, escribimos el comando: <em><strong> </strong></em></p>
<pre><span style="color: #000080;"><strong>sudo passwd postgres
</strong></span><span style="color: #000080;"> </span></pre>
<p>Nos pide la contraseña del usuario actual y la nueva contraseña para el usuario postgres.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/jorge@jorge-laptop-.png"><img class="alignnone size-full wp-image-705" title="jorge@jorge-laptop: ~" src="http://www.ubicuos.com/wp-content/uploads/2010/03/jorge@jorge-laptop-.png" alt="" width="535" height="357" /></a></p>
<p>Nos autentificamos como usuario postgres con el comando:</p>
<pre><strong><span style="color: #000080;">sudo su postgres
</span></strong></pre>
<p><strong><span style="color: #000080;"> </span></strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/jorge@jorge-laptop-1.png"><img class="alignnone size-full wp-image-706" title="jorge@jorge-laptop: ~-1" src="http://www.ubicuos.com/wp-content/uploads/2010/03/jorge@jorge-laptop-1.png" alt="" width="535" height="357" /></a></p>
<p>Escribimos el comando <strong>pgsql </strong>para acceder al servidor de base de datos de PostgreSQL, una vez dentro cambiamos la contraseña al usuario postgres:</p>
<pre><strong><span style="color: #000080;">postgres=# ALTER USER postgres WITH PASSWORD 'nueva_contraseña';
</span></strong><strong><span style="color: #000080;"> </span></strong></pre>
<p>Para este ejemplo &#8216;nueva contraseña&#8217; es &#8216;1234&#8242; pero puede ser otra contraseña con mayor seguridad, si todo sale bien te saldrá el siguiente mensaje confirmando la operación:</p>
<pre><strong><span style="color: #000080;">ALTER ROLE
</span></strong><strong><span style="color: #000080;"> </span></strong></pre>
<p>Salimos de la terminal  del servidor de bases de datos con el comando \q :</p>
<pre><span style="color: #000080;"><strong>postgres=# \q
</strong></span><span style="color: #000080;"> </span></pre>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/jorge@jorge-laptop-2.png"><img class="alignnone size-full wp-image-707" title="jorge@jorge-laptop: ~-2" src="http://www.ubicuos.com/wp-content/uploads/2010/03/jorge@jorge-laptop-2.png" alt="" width="535" height="357" /></a></p>
<p>Listo!!, tenemos instalado postgresql-8.3 y postgresql-8.3-postgis en nuestro Ubuntu 9.10.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/03/12/instalacion-de-postgresql-8-3-y-postgresql-8-3-postgis-en-ubuntu-9-10/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Puesta en marcha de Tkinter</title>
		<link>http://www.ubicuos.com/2010/03/08/puesta-en-marcha-de-tkinter/</link>
		<comments>http://www.ubicuos.com/2010/03/08/puesta-en-marcha-de-tkinter/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 17:15:10 +0000</pubDate>
		<dc:creator>Jorge Alejandro</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Tk]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=683</guid>
		<description><![CDATA[
			
				
			
		
Se resume una forma de utilizar la interface estándar de python llamada Tkinter. Se construye un programa (hola mundo !) que permite mostrar como usar dicha interface.
Tkinter es la interface por defecto que tiene python para la GUI de tk. Sabemos que tk es una biblioteca que permite crear aplicaciones de escritorio que pueden ejecutarse [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F08%2Fpuesta-en-marcha-de-tkinter%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F08%2Fpuesta-en-marcha-de-tkinter%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Se resume una forma de utilizar la interface estándar de <em>python</em> llamada <em>Tkinter</em>. Se construye un programa (hola mundo !) que permite mostrar como usar dicha interface.</p>
<p><em>Tkinter</em> es la interface por defecto que tiene <em>python</em> para la GUI de <em>tk</em>. Sabemos que <em>tk</em> es una biblioteca que permite crear aplicaciones de escritorio que pueden ejecutarse sin cambios en diferentes sistemas operativos.<br />
<span id="more-683"></span><br />
Tkinter está disponible en la mayoría de sistemas opertivos basados en UNIX, así como en Windows y Macintosh, a partir de su version 8.0 Tk ofrece una apariencia nativa en todas las plataformas.</p>
<p>Además del módulo de interface hacia Tk, Tkinter ofrece una variedad de módulos de python.</p>
<p>A continuación vamos a crear una aplicación sencilla para mostrar el funcionamiento de <em>tkinter</em>, para ello debemos crear un <em>widget</em>. Un widget es un componente gráﬁco con el cual el usuario puede interactuar, puede ser una ventana o algún dispositivo de ventana, para este caso es una ventana ordinaria.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">Tkinter</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
root = Tk<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
root.<span style="color: black;">mainloop</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>La aplicación se mantendrá en un ciclo principal hasta que sea cerrada la aplicación, tal evento <em>mainloop</em> se encarga de los eventos generados por el usuario (clics, teclas presionadas, etc.), así como de los eventos generados por la ventana, los mensajes de conﬁguracón de ésta y operaciones del mismo Tkinter, etc. Se recomienda colocar el <em>mainloop</em> al final del código, de otra manera se entra al ciclo principal antes de que los conrtoles sean agregados.</p>
<p>Después se debe agregar un frame (contenedor) donde vamos a colocar los controles (botones y etiquetas) de nuestra aplicación.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">frame = Frame<span style="color: black;">&#40;</span>root, height=<span style="color: #ff4500;">100</span>, width=<span style="color: #ff4500;">200</span><span style="color: black;">&#41;</span>
frame.<span style="color: black;">pack_propagate</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
frame.<span style="color: black;">pack</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>La función <em>pack_propagate</em> especifica que el contenedor deberá mantener su tamaño determinado. La función <em>pack</em> muestra visibles a los controles, en el caso de un botón también se debe llamar dicha función:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">funcOne = Button<span style="color: black;">&#40;</span>frame, text=<span style="color: #483d8b;">&quot;Mostrar&quot;</span>, command=say_hello<span style="color: black;">&#41;</span>
funcOne.<span style="color: black;">pack</span><span style="color: black;">&#40;</span>side=BOTTOM<span style="color: black;">&#41;</span></pre></div></div>

<p>El constructor del botón recibe el contenedor al que se va a agregar (frame), una cadena de texto que se mostrará en el botón y el nombre de la función que será ejecutada cuando el botón sea presionado.</p>
<p>Por útlimo debemos crear una función que agrege al contenedor una etiqueta que muestre el texto &#8220;<em>Hola mundo !</em>&#8220;.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> say_hello<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    w = Label<span style="color: black;">&#40;</span>frame, text=<span style="color: #483d8b;">&quot;Hola mundo !&quot;</span><span style="color: black;">&#41;</span>
    w.<span style="color: black;">pack</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Al final nuestra pequeña aplicación deberá mostrarse asi:</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/03/HelloWorldTkInter.png"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/HelloWorldTkInter.png" alt="Hola Mundo" title="Hello World TkInter" width="206" height="126" class="alignnone size-full wp-image-684" /></a></p>
<p>A continucaión se muestra el código final:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">Tkinter</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
&nbsp;
root = Tk<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
frame = Frame<span style="color: black;">&#40;</span>root, height=<span style="color: #ff4500;">100</span>, width=<span style="color: #ff4500;">200</span><span style="color: black;">&#41;</span>
frame.<span style="color: black;">pack_propagate</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
frame.<span style="color: black;">pack</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> say_hello<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    w = Label<span style="color: black;">&#40;</span>frame, text=<span style="color: #483d8b;">&quot;Hola mundo !&quot;</span><span style="color: black;">&#41;</span>
    w.<span style="color: black;">pack</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
funcOne = Button<span style="color: black;">&#40;</span>frame, text=<span style="color: #483d8b;">&quot;Mostrar&quot;</span>, command=say_hello<span style="color: black;">&#41;</span>
funcOne.<span style="color: black;">pack</span><span style="color: black;">&#40;</span>side=BOTTOM<span style="color: black;">&#41;</span>
&nbsp;
root.<span style="color: black;">mainloop</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/03/08/puesta-en-marcha-de-tkinter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Construyen un robot controlado por Android de Google</title>
		<link>http://www.ubicuos.com/2010/03/06/construyen-un-robot-controlado-por-android-de-google/</link>
		<comments>http://www.ubicuos.com/2010/03/06/construyen-un-robot-controlado-por-android-de-google/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 23:41:18 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Empresas]]></category>
		<category><![CDATA[Robótica]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/2010/03/06/construyen-un-robot-controlado-por-android-de-google/</guid>
		<description><![CDATA[
			
				
			
		
Tim Heath y Ryan Hickman han creado unos cellbots llamdos “Tankbot” y “Truckbot” que son robots que utilizan dispositivos Android.
Con sólo $30 dólares, un dipositivo Android y algo de creatividad han sido capacaes de crear estos robot que procesan órdenes vía Telnet en una PC.
Los robots se pueden mover en posiciones especificadas gracias a la [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F06%2Fconstruyen-un-robot-controlado-por-android-de-google%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F06%2Fconstruyen-un-robot-controlado-por-android-de-google%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Tim Heath y Ryan Hickman han creado unos cellbots llamdos “Tankbot” y “Truckbot” que son robots que utilizan dispositivos Android.</p>
<p>Con sólo $30 dólares, un dipositivo Android y algo de creatividad han sido capacaes de crear estos robot que procesan órdenes vía Telnet en una PC.</p>
<p>Los robots se pueden mover en posiciones especificadas gracias a la brújula integrada en algunos dispositivos.</p>
<p>Mientras que la funcionalidad del robot es mínima, el enfoque del proyecto fue utilizar teléfonos Android como el cerebro de estos robots.</p>
<p>La esperanza de estos desarrolladores es expandir la funcionalidad del robot para aprovechar en su totalidad el software de Android.</p>
<p>Heath y Hickman han documentado el proyecto completo en el sitio web <a href="http://www.cellbots.com">http://www.cellbots.com</a>, lo que significa que puedes también construir tu propio robot Android.</p>
<p>Aquí un vídeo</p>
<p> <object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/fPiQ-Rtcp9k&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/fPiQ-Rtcp9k&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object>
<p>Vía Mashable.com: <a title="http://mashable.com/2010/03/06/cellbot/" href="http://mashable.com/2010/03/06/cellbot/">http://mashable.com/2010/03/06/cellbot/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/03/06/construyen-un-robot-controlado-por-android-de-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rotación de un cubo 3D usando Java</title>
		<link>http://www.ubicuos.com/2010/03/04/rotacion-de-un-cubo-usando-java/</link>
		<comments>http://www.ubicuos.com/2010/03/04/rotacion-de-un-cubo-usando-java/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 18:09:27 +0000</pubDate>
		<dc:creator>Jorge Alejandro</dc:creator>
				<category><![CDATA[Ciencia]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[algebra lineal]]></category>
		<category><![CDATA[grafiación]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=617</guid>
		<description><![CDATA[
			
				
			
		
Resumen
Se muestra una manera sencilla de graficar y rotar un Cubo. 
Se comienza con la teor&#237;a de transformaciones lineales y proyecciones en el plano, al final se muestra un c&#243;digo muy sencillo de una aplicaci&#243;n hecha en Java que ejemplifica y muestra las transfomaciones descritas.
Introducci&#243;n
Se puede rotar una figura en tres dimensiones, sobre el eje [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F04%2Frotacion-de-un-cubo-usando-java%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F03%2F04%2Frotacion-de-un-cubo-usando-java%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><em>Resumen</em></p>
<p>Se muestra una manera sencilla de graficar y rotar un Cubo. </p>
<p>Se comienza con la teor&iacute;a de transformaciones lineales y proyecciones en el plano, al final se muestra un c&oacute;digo muy sencillo de una aplicaci&oacute;n hecha en Java que ejemplifica y muestra las transfomaciones descritas.</p>
<p><em>Introducci&oacute;n</em></p>
<p>Se puede rotar una figura en tres dimensiones, sobre el eje X, sobre el eje Y o sobre el eje Z. </p>
<p>En el caso de una computadora, la pantalla es un espacio de dos dimensiones, por lo tanto hay que hacer una proyecci&oacute;n sobre el plano XY cada vez que se manipulen figuras tridimensionales.<br />
 <span id="more-617"></span></p>
<p>Existe un vector <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/v.png" width="19" height="20" alt="v" /> en el plano R2 con coordenadas (x, y) y un &aacute;ngulo <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/alfa.png" width="19" height="15" alt="alfa" /> con respecto al eje X,<br />
se desea rotar el vector en un &aacute;ngulo <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/teta.png" width="10" height="15" alt="teta" /> en sentido contrario de las manecillas del reloj con respecto al eje X. El nuevo vector <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/v.png" width="19" height="20" alt="v" /> &#8216; forma un &aacute;ngulo <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/teta.png" width="10" height="15" alt="teta" />+<img src="http://www.ubicuos.com/wp-content/uploads/2010/03/alfa.png" width="19" height="15" alt="alfa" />respecto al vector <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/v.png" width="19" height="20" alt="v" /> y existe la misma longitud <em>r</em> en ambos vectores como se muestra en la figura:</p>
<p align="center">
<img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Fig1.png" alt="fig1" />
</p>
<p>Utilizando las definiciones de seno y coseno obtenemos que para el vector <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/v.png" width="19" height="20" alt="v" /></p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula1.png" width="141" height="84" alt="Formula1" /></p>
<p>Para el vector <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/v.png" width="19" height="20" alt="v" />&#8216;, de forma similar, se obtiene que:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula2.png" width="178" height="85" alt="formula2" /></p>
<p>La suma de dos &aacute;ngulos esta dada por:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula3.png" width="421" height="66" alt="formula3" /></p>
<p>Si se considera r = 1 y se sustituyen los valores correspondientes de <em>x</em> e<em> y</em> de la figura 1 tenemos.</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula4.png" width="438" height="66" alt="Formula4" /></p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula5.png" width="251" height="66" alt="Formula5" /></p>
<p>Escribiendo las mismas ecuaciones en forma de matrices se obtiene:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula6.png" width="483" height="66" alt="Formula7" /></p>
<p>La matriz (1) es mejor conocida como matriz de rotaci&oacute;n, la cual determina las nuevas coordenadas (x&#8217;, y&#8217;) obtenidas por rotar un &aacute;ngulo <img src="http://www.ubicuos.com/wp-content/uploads/2010/03/teta.png" width="10" height="15" alt="teta" /> un punto (x, y) en sentido contrario de las manecillas del reloj.</p>
<p>  Si las rotaciones se quieren hacer en el espacio R3, se necesita considerar el valor del eje de rotaci&oacute;n (en el cual se desea girar) igual a uno y poner el resto  de los valores igual a cero. En el caso de la matriz (1) se considera que rota con respecto al eje z.</p>
<p>  Las matrices de rotaci&oacute;n correspondientes a cada uno de los ejes est&aacute;n dadas por:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/matrices_rotacion.png"  alt="Matrcies rotacion" /></p>
<p>Para poder mostrar la rotaci&oacute;n en tres dimensiones en un plano de dos dimensiones hay que hacer una proyecci&oacute;n. Una proyecci&oacute;n es una trasnformaci&oacute;n lineal que toma un punto en el espacio de tres dimensiones y lo proyecta en un plano, que en este caso sera el plano xy. La matriz de transfomaci&oacute;n que nos brinda la proyecci&oacute;n de un punto en el plano xy es:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Formula8.png" width="234" height="96" alt="Formula8" /></p>
<p>Ahora vamos a usar las matrices anteriores para tratar de rotar un cubo.</p>
<p>  Para construir un cubo se pueden tomar una lista de v&eacute;rtices, aristas o caras, para ejemplos ilustrativos vamos a tomar una lista de ocho v&eacute;rtices y vamos a enumerarlos como sigue:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Fig2.png"  alt="Fig2" /></p>
<p>Si trazamos lineas que unan los v&eacute;rtices de forma tal que formen las aristas del cubo, se obtiene la siguiente figura:</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Fig3.png" width="410" height="337" alt="Fig3" /></p>
<p>La figura 3 muestra un cubo centrado en el origen pero a pesar de que la figura mostrada aparenta ser un cuadrado (dos dimensiones) se sabe que tiene una tercera dimensi&oacute;n dado que tiene las tres coordenadas en cada uno de sus ocho v&eacute;rtices, pero al proyectar sus puntos en el plano xy todos los valores z de los puntos son &quot;planchados&quot; al plano xy. Para darse cuenta de la forma tridimensional de la figura basta con rotar los puntos del cubo sobre el eje <em>x</em> o sobre el eje <em>y</em>. </p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Fig4.png" width="309" height="282" alt="Fig4" /></p>
<p>El cubo aparenta estar representado en el espacio de tres dimensiones, pero carece de volumen, propiedad t&iacute;pica de los cuerpos tridimensionales. Para lograr una apariencia de volumen se necesitan crear diferentes pol&iacute;gonos que representen cada una de las caras del cubo, los v&eacute;rtices de cada cara del cubo ser&aacute;n los v&eacute;rtices de cada pol&iacute;gono y se puede asignar un color diferente a cada uno de ellos como se muestra.</p>
<p align="center"><img src="http://www.ubicuos.com/wp-content/uploads/2010/03/Fig5.png" width="309" height="282" alt="Fig5" /></p>
</p>
<p>Para ilustrar mejor lo antes mencionado, se contruyó un <em>applet</em> que muestra un cubo en 3D el cual puede rotar utlizando las matrices descritas. </p>
<p><strong>Da click en el siguiente enlace para abrir el applet:</strong></p>
<p><a href='http://www.ubicuos.com/wp-content/uploads/2010/03/Hola.html'>Rotación 3D de un cubo usando Java</a></p>
<p><em>Debes mover el ratón mientras mantienes presionado el botón izquierdo sobre el cubo para observar su rotación.</em></p>
<p align="left">A continuaci&oacute;n se muestra el c&oacute;digo que muestra la utilizaci&oacute;n de matrices de rotaci&oacute;n y proyecciones en el plano.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.applet.*</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.*</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.Stroke</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.event.*</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.lang.Math</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.awt.Polygon</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Represents a point in space */</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">double</span> x<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">double</span> y<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">double</span> z<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">x</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">y</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">z</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">double</span> x,<span style="color: #000066; font-weight: bold;">double</span> y, <span style="color: #000066; font-weight: bold;">double</span> z<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">x</span><span style="color: #339933;">=</span>x<span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">y</span><span style="color: #339933;">=</span>y<span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">z</span><span style="color: #339933;">=</span>z<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* for move it at origin */</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> getXCoordinate<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">return</span> Cube.<span style="color: #006633;">origin</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">x</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> getYCoordinate<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">return</span> Cube.<span style="color: #006633;">origin</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#41;</span><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">y</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> getZCoordinate<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">return</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">/* projection on XY plane*/</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Face<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #003399;">Point</span> p1,p2,p3,p4<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Polygon</span> side<span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Polygon</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
Face<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
Face<span style="color: #009900;">&#40;</span><span style="color: #003399;">Point</span> p1,<span style="color: #003399;">Point</span> p2,<span style="color: #003399;">Point</span> p3,<span style="color: #003399;">Point</span> p4<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">p1</span><span style="color: #339933;">=</span>p1<span style="color: #339933;">;</span>this.<span style="color: #006633;">p2</span><span style="color: #339933;">=</span>p2<span style="color: #339933;">;</span>this.<span style="color: #006633;">p3</span><span style="color: #339933;">=</span>p3<span style="color: #339933;">;</span>this.<span style="color: #006633;">p4</span><span style="color: #339933;">=</span>p4<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">side</span>.<span style="color: #006633;">addPoint</span><span style="color: #009900;">&#40;</span>p1.<span style="color: #006633;">getXCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,p1.<span style="color: #006633;">getYCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">side</span>.<span style="color: #006633;">addPoint</span><span style="color: #009900;">&#40;</span>p2.<span style="color: #006633;">getXCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,p2.<span style="color: #006633;">getYCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">side</span>.<span style="color: #006633;">addPoint</span><span style="color: #009900;">&#40;</span>p3.<span style="color: #006633;">getXCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,p3.<span style="color: #006633;">getYCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">side</span>.<span style="color: #006633;">addPoint</span><span style="color: #009900;">&#40;</span>p4.<span style="color: #006633;">getXCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>,p4.<span style="color: #006633;">getYCoordinate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> drawFace<span style="color: #009900;">&#40;</span><span style="color: #003399;">Graphics</span> g<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> g.<span style="color: #006633;">fillPolygon</span><span style="color: #009900;">&#40;</span>side<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> isVisible<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #003399;">Point</span> aux1, aux2<span style="color: #339933;">;</span>
&nbsp;
aux1 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span>p2.<span style="color: #006633;">x</span><span style="color: #339933;">-</span>p1.<span style="color: #006633;">x</span>, p2.<span style="color: #006633;">y</span><span style="color: #339933;">-</span>p1.<span style="color: #006633;">y</span>, p2.<span style="color: #006633;">z</span><span style="color: #339933;">-</span>p1.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// p1-&gt;p2</span>
&nbsp;
aux2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span>p4.<span style="color: #006633;">x</span><span style="color: #339933;">-</span>p1.<span style="color: #006633;">x</span>, p4.<span style="color: #006633;">y</span><span style="color: #339933;">-</span>p1.<span style="color: #006633;">y</span>, p4.<span style="color: #006633;">z</span><span style="color: #339933;">-</span>p1.<span style="color: #006633;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// p1-&gt;p4</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>aux1.<span style="color: #006633;">x</span><span style="color: #339933;">*</span>aux2.<span style="color: #006633;">y</span> <span style="color: #339933;">-</span> aux1.<span style="color: #006633;">y</span><span style="color: #339933;">*</span>aux2.<span style="color: #006633;">x</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Cube <span style="color: #000000; font-weight: bold;">extends</span> <span style="color: #003399;">Applet</span> <span style="color: #000000; font-weight: bold;">implements</span>
&nbsp;
<span style="color: #003399;">Runnable</span>, <span style="color: #003399;">MouseMotionListener</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #003399;">Thread</span> luxury<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> vertex <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">8</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Cube vertexes</span>
&nbsp;
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> maxSize <span style="color: #339933;">=</span><span style="color: #cc66cc;">300</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// screen size</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> origin <span style="color: #339933;">=</span> maxSize<span style="color: #339933;">/</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// (0,0)</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> xMouseP<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span>, yMouseP <span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// X and Y mouse's positions</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> xAux , yAux <span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// old X and Y mouse's positions</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> module <span style="color: #339933;">=</span> <span style="color: #cc66cc;">50</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// length of lines of cube.</span>
&nbsp;
<span style="color: #003399;">Image</span> canvasAux<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Graphics</span> backBuffer<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
setSize<span style="color: #009900;">&#40;</span>maxSize,maxSize<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
setBackground<span style="color: #009900;">&#40;</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Color</span><span style="color: #009900;">&#40;</span>0.2f,0.6f,0.1f,1.0f<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
addMouseMotionListener<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/*Initial coordinates of vertex*/</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> coordX <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #339933;">-</span>module,module,module,<span style="color: #339933;">-</span>module,<span style="color: #339933;">-</span>module,module,module,<span style="color: #339933;">-</span>module<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> coordY <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #339933;">-</span>module,<span style="color: #339933;">-</span>module,module,module,<span style="color: #339933;">-</span>module,<span style="color: #339933;">-</span>module,module,module<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> coordZ <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span>module,module,module,module,<span style="color: #339933;">-</span>module,<span style="color: #339933;">-</span>module,<span style="color: #339933;">-</span>module,<span style="color: #339933;">-</span>module<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
canvasAux <span style="color: #339933;">=</span> createImage<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span>,<span style="color: #cc66cc;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
backBuffer <span style="color: #339933;">=</span> canvasAux.<span style="color: #006633;">getGraphics</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>vertex.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span>coordX<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>,coordY<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>,coordZ<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> start<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span> luxury <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Thread</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> luxury.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> run<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> stop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> paint<span style="color: #009900;">&#40;</span><span style="color: #003399;">Graphics</span> g<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Cube's points */</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> pts1 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">3</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> pts2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">2</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> pts3 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">6</span>,<span style="color: #cc66cc;">7</span>,<span style="color: #cc66cc;">7</span>,<span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">6</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> pts4 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">6</span>,<span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">7</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Color</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> colorRGB <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Color</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span> <span style="color: #003399;">Color</span>.<span style="color: #006633;">black</span>, <span style="color: #003399;">Color</span>.<span style="color: #006633;">blue</span>,<span style="color: #003399;">Color</span>.<span style="color: #006633;">orange</span>,
&nbsp;
<span style="color: #003399;">Color</span>.<span style="color: #006633;">pink</span>,<span style="color: #003399;">Color</span>.<span style="color: #006633;">red</span>, <span style="color: #003399;">Color</span>.<span style="color: #006633;">yellow</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
Face<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> faces <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Face<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">6</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
backBuffer.<span style="color: #006633;">clearRect</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">500</span>,<span style="color: #cc66cc;">500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">6</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
backBuffer.<span style="color: #006633;">setColor</span><span style="color: #009900;">&#40;</span>colorRGB<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
&nbsp;
faces<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Face<span style="color: #009900;">&#40;</span>vertex<span style="color: #009900;">&#91;</span>pts1<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span>,vertex<span style="color: #009900;">&#91;</span>pts2<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span>,vertex<span style="color: #009900;">&#91;</span>pts3<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span>,vertex<span style="color: #009900;">&#91;</span>pts4<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>faces<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">isVisible</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
faces<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">drawFace</span><span style="color: #009900;">&#40;</span>backBuffer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
g.<span style="color: #006633;">drawImage</span><span style="color: #009900;">&#40;</span>canvasAux,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
g.<span style="color: #006633;">drawString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; Touche &quot;</span>, <span style="color: #cc66cc;">30</span>,<span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
g.<span style="color: #006633;">drawString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; X &quot;</span> <span style="color: #339933;">+</span> xMouseP, <span style="color: #cc66cc;">30</span>,<span style="color: #cc66cc;">50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
g.<span style="color: #006633;">drawString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; Y &quot;</span> <span style="color: #339933;">+</span> yMouseP, <span style="color: #cc66cc;">30</span>,<span style="color: #cc66cc;">65</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">return</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> update<span style="color: #009900;">&#40;</span><span style="color: #003399;">Graphics</span> g<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> paint<span style="color: #009900;">&#40;</span>g<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> destroy<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span><span style="color: #003399;">Thread</span>.<span style="color: #006633;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1500</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">InterruptedException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Exception in sleep&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Rotate each vertex of cube over X, Y and Z axis */</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> rota<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">double</span> angleTeta, <span style="color: #000066; font-weight: bold;">double</span> anglePhi, <span style="color: #000066; font-weight: bold;">double</span> anglePsi<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">double</span> teta<span style="color: #339933;">=</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">toRadians</span><span style="color: #009900;">&#40;</span>angleTeta<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">double</span> phi<span style="color: #339933;">=</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">toRadians</span><span style="color: #009900;">&#40;</span>anglePhi<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">double</span> psi<span style="color: #339933;">=</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">toRadians</span><span style="color: #009900;">&#40;</span>anglePsi<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Point</span> pAux <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Point</span> pAux1 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399;">Point</span> pAux2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Point</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Rotating over x */</span>
&nbsp;
pAux1.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">x</span><span style="color: #339933;">;</span>
&nbsp;
pAux1.<span style="color: #006633;">y</span><span style="color: #339933;">=</span> vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">y</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>teta<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">z</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>teta<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
pAux1.<span style="color: #006633;">z</span> <span style="color: #339933;">=</span> vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">y</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>teta<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">z</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>teta<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Rotating over y */</span>
&nbsp;
pAux2.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> pAux1.<span style="color: #006633;">x</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>phi<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> pAux1.<span style="color: #006633;">z</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>phi<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
pAux2.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> pAux1.<span style="color: #006633;">y</span><span style="color: #339933;">;</span>
&nbsp;
pAux2.<span style="color: #006633;">z</span> <span style="color: #339933;">=</span> pAux1.<span style="color: #006633;">x</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>phi<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> pAux1.<span style="color: #006633;">z</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>phi<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Rotating over z */</span>
&nbsp;
pAux.<span style="color: #006633;">x</span><span style="color: #339933;">=</span> pAux2.<span style="color: #006633;">x</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>psi<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> pAux2.<span style="color: #006633;">y</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>psi<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
pAux.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> pAux2.<span style="color: #006633;">x</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">sin</span><span style="color: #009900;">&#40;</span>psi<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> pAux2.<span style="color: #006633;">y</span> <span style="color: #339933;">*</span> <span style="color: #003399;">Math</span>.<span style="color: #006633;">cos</span><span style="color: #009900;">&#40;</span>psi<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
pAux.<span style="color: #006633;">z</span><span style="color: #339933;">=</span> pAux2.<span style="color: #006633;">z</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">/* new position */</span>
&nbsp;
vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> pAux.<span style="color: #006633;">x</span><span style="color: #339933;">;</span>
&nbsp;
vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> pAux.<span style="color: #006633;">y</span><span style="color: #339933;">;</span>
&nbsp;
vertex<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">z</span> <span style="color: #339933;">=</span> pAux.<span style="color: #006633;">z</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* For move the cube over X and Y axis */</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> mouseDragged<span style="color: #009900;">&#40;</span> <span style="color: #003399;">MouseEvent</span> e <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* old coordinates */</span>
&nbsp;
xAux <span style="color: #339933;">=</span> xMouseP<span style="color: #339933;">;</span>
&nbsp;
yAux <span style="color: #339933;">=</span> yMouseP<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* new coordinates */</span>
&nbsp;
xMouseP <span style="color: #339933;">=</span> e.<span style="color: #006633;">getX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
yMouseP <span style="color: #339933;">=</span> e.<span style="color: #006633;">getY</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>yMouseP <span style="color: #339933;">&gt;</span> yAux<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> rota<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>yMouseP <span style="color: #339933;">&lt;</span> yAux<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> rota<span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>xMouseP <span style="color: #339933;">&gt;</span> xAux<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> rota<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>xMouseP <span style="color: #339933;">&lt;</span> xAux<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> rota<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
repaint<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
e.<span style="color: #006633;">consume</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> mouseMoved<span style="color: #009900;">&#40;</span> <span style="color: #003399;">MouseEvent</span> e <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>El c&oacute;digo anterior pertenece a un archivo llamado Cube.java, para poder visualizar el <em>applet</em> generado se necesita crear una archivo html.</p>
<p>El siguiente c&oacute;digo solo es un html para desplegar el <em>applet</em>.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!-- hola.html --&gt;
&lt;HTML&gt;
&lt;BODY&gt;
Cubo
&lt;APPLET width=&quot;500&quot; height=&quot;500&quot; CODE=&quot;Cube.class&quot;&gt;&lt;br /&gt;&lt;/APPLET&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;</pre></div></div>

<p>En caso de contar con un IDE (Eclipse, jGrasp, etc.) no existe necesidad de crear dicho html para visualizar el cubo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/03/04/rotacion-de-un-cubo-usando-java/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Tema del Mes de Marzo 2010</title>
		<link>http://www.ubicuos.com/2010/02/22/tema-del-mes-de-marzo-2010/</link>
		<comments>http://www.ubicuos.com/2010/02/22/tema-del-mes-de-marzo-2010/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 05:35:09 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Empresas]]></category>
		<category><![CDATA[Social / Internet]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[barcamp]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Tema del mes]]></category>
		<category><![CDATA[ubicuos]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/2010/02/22/tema-del-mes-de-marzo-2010/</guid>
		<description><![CDATA[
			
				
			
		
Como sabemos el área de tecnologías es muy extensa, por eso empezamos esta nueva idea, cada fin de mes vamos a tomar sus sugerencias de tema, para los posts del sitio, si tienen dudas o les gustaría que escribiéramos sobre un tema en particular no lo duden y hagan que su voz se escuche.
Por otra [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F02%2F22%2Ftema-del-mes-de-marzo-2010%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F02%2F22%2Ftema-del-mes-de-marzo-2010%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Como sabemos el área de tecnologías es muy extensa, por eso empezamos esta nueva idea, cada fin de mes vamos a tomar sus sugerencias de tema, para los posts del sitio, si tienen dudas o les gustaría que escribiéramos sobre un tema en particular no lo duden y hagan que su voz se escuche.</p>
<p>Por otra parte mes de Marzo tenemos los siguientes eventos:</p>
<p><a href="http://barcamp.org/PressCampMexico"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="presscamp[1]" border="0" alt="presscamp[1]" src="http://www.ubicuos.com/wp-content/uploads/2010/02/presscamp1.jpg" width="244" height="69" /></a> </p>
<p>Press Camp México es un evento que convoca a todos los Periodistas y Comunicadores de México,&#160; a la gente interesada en la profesión de informar y compartir información, en las herramientas que nos ofrece hoy en día Internet y las diferentes tecnologías accesibles, así como&#160; también a la comunidad de Web de México en general.</p>
<p><a href="http://es.wikipedia.org/wiki/BarCamp">El <b>BarCamp</b></a> es una red internacional de &quot;<a href="http://es.wikipedia.org/wiki/Desconferencia">desconferencias</a>&quot; (eventos abiertos y participativos), cuyo contenido es provisto por los participantes. Se enfocan en aplicaciones web en estadios tempranos, tecnologías de <a href="http://es.wikipedia.org/wiki/C%C3%B3digo_abierto">código abierto</a> y protocolos sociales. Sin embargo, este tipo de encuentros han ampliado su temática y actualmente incluyen eventos participativos y abiertos alrededor de temas sociales, artísticos, educativos&#8230; con fuertes componentes creativos e innovadores en los respectivos ámbitos.</p>
<p><strong>Fecha:</strong>&#160; 20 de Marzo de 2010 de&#160; 9:00 a 18:00 horas</p>
<p><strong>Sede:</strong> Universidad Iberoamericana (IBERO Santa Fé) </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/02/22/tema-del-mes-de-marzo-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip de la Semana: Girasol Blog Editor</title>
		<link>http://www.ubicuos.com/2010/02/20/tip-de-la-semana-girasol-blog-editor/</link>
		<comments>http://www.ubicuos.com/2010/02/20/tip-de-la-semana-girasol-blog-editor/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 04:40:56 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/2010/02/20/tip-de-la-semana-girasol-blog-editor/</guid>
		<description><![CDATA[
			
				
			
		
Les dejamos esta presentación sobre las características de Girasol un proyecto opensource mutiplataforma para publicar en tu blog sin necesidad de entrar a la interfaz web.

Girasol Editor de Blogs Negocio
   
See more presentations by smartdsign &#124; 

]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F02%2F20%2Ftip-de-la-semana-girasol-blog-editor%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F02%2F20%2Ftip-de-la-semana-girasol-blog-editor%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Les dejamos esta presentación sobre las características de Girasol un proyecto opensource mutiplataforma para publicar en tu blog sin necesidad de entrar a la interfaz web.</p>
<div>
<h3 style="padding-bottom: 0px; margin: 3px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><a style="font: 18px ,arial" href="http://www.authorstream.com/Presentation/smartdsign-330361-girasol-editor-de-blogs-negocio-sunflower-business-blog-tool-live-writer-science-technology-ppt-powerpoint/" target="_blank">Girasol Editor de Blogs Negocio</a></h3>
<p>   <object width="425" height="354" id="player"><param name="movie" value="http://www.authorstream.com/player/player.swf?p=330361_634022971265375000" /><param name="allowfullscreen" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://www.authorstream.com/player/player.swf?p=330361_634022971265375000" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="354"></embed></object>
<div style="font: 11px arial; font-size-adjust: none; font-stretch: normal">See more <a href="http://www.authorstream.com/" target="_blank">presentations</a> by <a href="http://www.authorstream.com/User-Presentations/smartdsign/" target="_blank">smartdsign</a> | </div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/02/20/tip-de-la-semana-girasol-blog-editor/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>BugCon 2010 Call for Papers</title>
		<link>http://www.ubicuos.com/2010/02/20/bugcon-2010-call-for-papers/</link>
		<comments>http://www.ubicuos.com/2010/02/20/bugcon-2010-call-for-papers/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 03:20:19 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Linux y Software Libre]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Robótica]]></category>
		<category><![CDATA[bugcon]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[seguridad]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/2010/02/20/bugcon-2010-call-for-papers/</guid>
		<description><![CDATA[
			
				
			
		
&#160;
Nos mandan el “Call for Papers”, para el BugCon de 2010, BugCon es un evento abierto y técnico sobre seguridad informática.
BugCON is a purely technical convention where all security researchers can show their current work,projects and ideas in Mexico City. 
The main topics for BugCON 2010 are:

Software security
Secure coding
Audit
Honeynets     
Perimeter Security
Web [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F02%2F20%2Fbugcon-2010-call-for-papers%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F02%2F20%2Fbugcon-2010-call-for-papers%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>&#160;</p>
<p>Nos mandan el “Call for Papers”, para el BugCon de 2010, BugCon es un evento abierto y técnico sobre seguridad informática.</p>
<p>BugCON is a purely technical convention where all security researchers can show their current work,projects and ideas in Mexico City. </p>
<p>The main topics for BugCON 2010 are:</p>
<ul>
<li>Software security</li>
<li>Secure coding</li>
<li>Audit</li>
<li>Honeynets     </li>
<li>Perimeter Security</li>
<li>Web security</li>
<li>Malware Development</li>
<li>Computer Forensic</li>
<li>Fuzzing</li>
<li>Security related AI applications </li>
<li>Database hacking</li>
<li>Privacy issues</li>
<li>Mobile technologies</li>
<li>Hardware/firmware and embedded systems hacking</li>
<li>Cracking and protections on software</li>
<li>Academic security research</li>
<li>Firewalls, IDS and other network hardware/software (implementation, configuration and evasion</li>
<li>Open Source projects</li>
<li>Videogame consoles, T.V. systems, and other friki stuff</li>
<li>Cryptography and steganography</li>
<li>Phreaking</li>
<li>Informatic legislation</li>
<li>Reverse Engineering     </li>
<li>REMEMBER, you can send us your topic&#8230; We don’t have any problem if your topic is not present in the list above .</li>
</ul>
<p> <span id="more-602"></span>
<p>BugCON accepts your participation in the form of conference and workshop, with a duration of 1 to 2 hours for the conference and in the case of workshops you can tell us how many time would you like need(if you need more time BugCON can offer work tables for continuing your talk); the conference language can be Spanish (prefereably) or English.</p>
<p>Remeber that BugCON is totally uncensored, so the public can start a discussion about your conference, and it&#8217;s totally acceptable.   </p>
<p>BugCON has two lines, “white hat” topic and “black hat” topic the technical reviewers going to collocate your conferences in the most adecuate clasification. BugCON reserves the right to accept or reject any paper.   </p>
<p>All proposals should be sent to <a href="mailto:secretary@bugcon.org">secretary@bugcon.org</a> with a little description about the conference and a little bio from the author, from February 17th to August 31th (no extensions).</p>
<p>The final schedule will be published on September 18th. Once your conference is accepted you should send a confirmation, a telephone number for contacting you and details about your arrival.   </p>
<p>BugCon 2010 will be celebrated at 27, 28 and 29 of October 2010 at CFIE-IPN ( Centro de Formación e Innovación Educativa del Instituto Politécnico Nacional) with the best support of&#160; ESCOM-IPN ( Escuela Superior de Cómputo).    <br />Will be waiting for you.    <br />Regards    <br />Armin Garcia    <br />President of BugCon    <br />Forensic Malware Analyst at Cipherstorm Ltd    </p>
<p>UK Office Suite 404, Albany House    <br />324-326 Regent Street    <br />London    <br />W1B 3HH    <br />United Kingdom    <br />UK Tel: 0871 245 6786    <br />UK Tel: 0871 245 6789    <br />Intl. Tel: +44 (0) 701 703 5786    <br />Fax: 0844 589 0400    <br />http://cipherstormgroup.com/     <br />http://www.bugcon.org</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/02/20/bugcon-2010-call-for-papers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertir HTML a PDF con PHP</title>
		<link>http://www.ubicuos.com/2010/02/12/convertir-html-a-pdf-con-php/</link>
		<comments>http://www.ubicuos.com/2010/02/12/convertir-html-a-pdf-con-php/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 19:55:35 +0000</pubDate>
		<dc:creator>Sosa suazo</dc:creator>
				<category><![CDATA[Linux y Software Libre]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.ubicuos.com/?p=594</guid>
		<description><![CDATA[
			
				
			
		
Bueno antes de comenzar, primero debemos bajarnos el DOMPDF, que es el que nos servira para convertir nuestro html a pdf, descargaremos su version dompdf_0-6-0_alpha2.tar.gz ,que funciona tanto para windows como para linux y que ahora se encuentra en http://code.google.com/p/dompdf/downloads/list, para utilizarlo requerimos de php 5 o superior con la extensión DOM habilitada.
DOMPDF provee soporte para [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F02%2F12%2Fconvertir-html-a-pdf-con-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.ubicuos.com%2F2010%2F02%2F12%2Fconvertir-html-a-pdf-con-php%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Bueno antes de comenzar, primero debemos bajarnos el DOMPDF, que es el que nos servira para convertir nuestro html a pdf, descargaremos su version <a href="http://dompdf.googlecode.com/files/dompdf_0-6-0_alpha2.tar.gz">dompdf_0-6-0_alpha2.tar.gz</a> ,que funciona tanto para windows como para linux y que ahora se encuentra en <a href="http://code.google.com/p/dompdf/downloads/list">http://code.google.com/p/dompdf/downloads/list</a>, para utilizarlo requerimos de php 5 o superior con la extensión DOM habilitada.</p>
<p>DOMPDF provee soporte para la creación de archivos PDF sobre archivos html con estilos(css) pero no todas las propiedades, no acepta posiciones flotantes ni relativas entre otras, para saber que propiedades son aceptadas y cuales no, revisa el siguiente <a href="http://www.digitaljunkies.ca/dompdf/css21.php">link</a>.</p>
<p>Ya descargado el DOMPDF, extraemos los archivos y la carpeta llamda <strong>dompdf</strong> la copiamos en la raiz de nuestro proyecto.</p>
<p>Ahora, para nuestro caso crearemos una aplicacion en html, en donde nostros podremos buscar nuestra pagina en html para transformarla a pdf.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/02/htmlpdf.png"><img class="alignnone size-full wp-image-595" title="htmlpdf" src="http://www.ubicuos.com/wp-content/uploads/2010/02/htmlpdf.png" alt="" width="549" height="179" /></a></p>
<p>Lo que aquí hacemos es crear un formulario donde le decimos que será redireccionada a la pagina toPdf.php y los valores ó variables seran pasadas a travez del metodo GET.</p>
<p>Seguido de esto crearemos el archivo toPdf.php, el cual se encargara de recibir el nombre de la pagina que seleccionamos y la convertira a pdf.</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/02/toPdf.png"><img class="alignnone size-full wp-image-597" title="toPdf" src="http://www.ubicuos.com/wp-content/uploads/2010/02/toPdf.png" alt="" width="359" height="227" /></a></p>
<p>Este proceso puede ser modificado ya que no es obligatorio leer un archivo html, tambien contamos con un metodo llamdo load_html(&#8216;texto&#8217;) donde el parametro texto recibira una cadena que contenga la informacion para crear una pagina html, como por ejemplo lo siguiente:</p>
<p><a href="http://www.ubicuos.com/wp-content/uploads/2010/02/toPdfhtml.png"><img class="alignnone size-full wp-image-598" title="toPdfhtml" src="http://www.ubicuos.com/wp-content/uploads/2010/02/toPdfhtml.png" alt="" width="459" height="340" /></a></p>
<p>Ya terminado los dos archivos, solo falta ejecutar nuestra aplicacion y ver como el proceso se realiza facilmente.</p>
<p><em>Nota: los dos archivos y la carpeta dompdf deben de estar en la raiz del proyecto y recuerden que como trabajamos con php este tiene que estar bajo un servidor que lo soporte.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ubicuos.com/2010/02/12/convertir-html-a-pdf-con-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
