<?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>Cibernatural S.L.</title>
	<atom:link href="http://www.cibernatural.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cibernatural.com</link>
	<description>Páginas web en Lanzarote y Desarrollo de software profesional - Islas Canarias</description>
	<lastBuildDate>Thu, 25 Feb 2010 13:16:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tutorial de Django &#8211; II</title>
		<link>http://www.cibernatural.com/tutorial-de-django-ii/</link>
		<comments>http://www.cibernatural.com/tutorial-de-django-ii/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 12:17:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Técnico]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.cibernatural.com/?p=453</guid>
		<description><![CDATA[Vistas y URLconfs
Su primera Página Django: Hola Mundo
Como primer objetivo, vamos a crear una página Web que produzca el mensaje de ejemplo famoso: &#8220;Hola mundo&#8221;.
Con Django, el contenido de la página es producido por una vista, y la dirección se especifica en una URLconf.  En primer lugar, vamos a escribir la función de la vista [...]]]></description>
			<content:encoded><![CDATA[<h2><span style="text-decoration: underline;">Vistas y URLconfs</span></h2>
<h3>Su primera Página Django: Hola Mundo</h3>
<p>Como primer objetivo, vamos a crear una página Web que produzca el mensaje de ejemplo famoso: &#8220;Hola mundo&#8221;.</p>
<p>Con Django, el contenido de la página es producido por una vista, y la dirección se especifica en una URLconf.  En primer lugar, vamos a escribir la función de la vista &#8220;Hola Mundo&#8221;.</p>
<p>Una vista &#8220;Hola Mundo&#8221; es simple. Aquí está toda la función que debe escribir en el archivo <em>views.py</em>:</p>
<blockquote><p>from django.http import HttpResponse</p>
<p>def hello(request):</p>
<p style="padding-left: 30px;">return HttpResponse(&#8220;Hello world&#8221;)</p>
</blockquote>
<p>Una vista en Python es sólo una función que toma un <em>HttpRequest </em>como su primer parámetro y devuelve una instancia de <em>HttpResponse</em>. Para que una función de Python sea una vista Django, tiene que hacer esas dos cosas. (Hay excepciones, pero las veremos más tarde.)  Si en este momento ejecuta <em>python manage.py runserver</em> de nuevo, seguirás viendo el mensaje &#8220;Bienvenido a Django&#8221;, sin ningún rastro de &#8220;Hola mundo&#8221;.  Eso se debe a que el proyecto mysite no conoce la vista hello; se necesita ahora decirle a Django explícitamente que se va a activar esa vista en una determinada URL, usando URLconf.  Un URLconf es como una tabla de contenidos para un sitio web Django. Básicamente, es un mapeo entre las URL y las funciones de vista que deben llamarse para esas direcciones URL.  El URLconf por defecto incluye algunas características comentadas de uso común en Django, por lo que la activación de esas características es tan fácil como descomentar las líneas adecuadas. Si se ignora el código comentado, aquí está la esencia de un URLconf:</p>
<blockquote><p>from django.conf.urls.defaults import *</p>
<p>urlpatterns = patterns(&#8221;,</p>
<p>)</p></blockquote>
<p>Lo más importante a destacar es la variable urlpatterns, que Django espera encontrarla en el módulo URLconf. Esta variable define la asignación entre las direcciones URL y el código que controla las direcciones URL. Por defecto, el URLconf está vacío &#8211; la aplicación Django está en blanco.  Para agregar una URL y una vista al URLconf, simplemente añadir una tupla Python que asigna un patrón de URL a la función de la vista. He aquí cómo conectarlo en la vista hello:</p>
<blockquote><p>from django.conf.urls.defaults import *</p>
<p>from mysite.views import hello</p>
<p style="padding-left: 30px;">urlpatterns = patterns(&#8221;,</p>
<p style="padding-left: 30px;">(&#8216;^hello/$&#8217;, hello),</p>
<p>)</p></blockquote>
<p>En pocas palabras, se le dice a Django que cualquier petición a la URL /hello/ debería ser gestionada por la función de vista hello.</p>
<p>Para probar los cambios a la URLconf, inicie el servidor de desarrollo de Django con el comando python manage.py runserver. (Si usted lo dejó ejecutándose también está bien. El servidor de desarrollo detecta automáticamente los cambios en su código Python y vuelve a cargarlos cuando sea necesario, para que no tenga que reiniciar el servidor entre los cambios.) El servidor se está ejecutando en la dirección http://127.0.0.1:8000/, por lo que abra un navegador Web y vaya a http://127.0.0.1:8000/hello/. Usted debe ver el texto &#8220;Hola mundo&#8221;, la salida de su vista Django. Usted hizo su primera página web en Django.</p>
<h3>Una nota rápida sobre errores 404</h3>
<p>En este punto, el URLconf define sólo un único patrón de URL: el que trata las solicitudes de la dirección /hello/. ¿Qué sucede cuando usted solicita una dirección URL diferente?</p>
<p>Usted debe ver un mensaje de &#8220;Página no encontrada&#8221;. Django muestra este mensaje porque ha solicitado una URL que no está definida en su URLconf.</p>
<p>La utilidad de esta página va más allá del mensaje básico de error 404. También le dice, de forma precisa que URLconf Django es usada y cada patrón utilizado en el URLconf. De esa información, usted debe ser capaz de determinar por qué la dirección URL solicitada arrojó un error 404.</p>
<p>Naturalmente, esta información es confidencial y está destinada únicamente a usted, el desarrollador Web. Si esto fuese un sitio de desplegado en Internet, usted no desearía exponer esa información al público. Por esta razón, esta página &#8220;Página no encontrada&#8221;, se muestra sólo si su Proyecto de Django se encuentra en modo de depuración. Le explicaremos cómo desactivar el modo de depuración más tarde. Por ahora, sólo sepa que cada proyecto Django creado se encuentra en modo de depuración, y si el proyecto no está en modo de depuración, Django emite una respuesta 404 diferente.</p>
<h3>Una nota rápida sobre la raíz del sitio</h3>
<p>Como se explicó en la última sección, verá un mensaje de error 404 si usted va a la raíz del sitio: http://127.0.0.1:8000/. El patrón URL para que coincida con la raíz del sitio es un poco contradictorio, por lo que es digno de mención. Cuando esté listo para poner en práctica una vista de la raíz del sitio, utilice el patrón de URL &#8216;^$&#8217;, que coincide con una cadena vacía. He aquí un ejemplo:</p>
<blockquote><p>from mysite.views import hello, my_homepage_view</p>
<p>urlpatterns = patterns(&#8221;,</p>
<p style="padding-left: 30px;">(&#8216;^$&#8217;, my_homepage_view),</p>
<p style="padding-left: 30px;"># &#8230;</p>
<p>)</p></blockquote>
<p>Cómo Django procesa una petición:</p>
<ol>
<li>Una petición viene a /hello/.</li>
<li>Django determina el URLconf raíz en base a ROOT_URLCONF.</li>
<li>Django busca en todos los urlpatterns del URLconf por el primero que coincida con /hello/.</li>
<li>Si encuentra una coincidencia, llama a la función de vista asociada.</li>
<li>La función de vista devuelve un HttpResponse.</li>
<li>Django convierte el HttpResponse en la respuesta HTTP apropiada, que resulta en una página web.</li>
</ol>
<p>Ahora que conoce los aspectos básicos de cómo hacer páginas Django. Es muy sencillo, en realidad: sólo escribir funciones de vista y mapearlas a URLs a través de URLconfs.</p>
<h3>Segunda vista: contenido dinámico</h3>
<p>Vamos a crear algo más dinámico: una página Web que muestre la fecha y hora actuales. Este es un paso agradable y simple, porque no se trata de una base de datos o cualquier entrada de usuario, sólo la salida del reloj interno del servidor. Es sólo un poco más emocionante que &#8220;Hola mundo&#8221;, pero se muestran un par de conceptos nuevos.</p>
<p>Para realizar una vista Django que muestre la fecha y hora actuales, sólo es necesario colocar la sentencia  datetime.datetime.now() en una vista y devolver un <em>HttpResponse</em>.</p>
<blockquote><p>from django.http import HttpResponse</p>
<p>import datetime</p>
<p>def current_datetime(request):</p>
<p style="padding-left: 30px;">now = datetime.datetime.now()</p>
<p style="padding-left: 30px;">html = &#8220;It is now %s.&#8221; % now</p>
<p style="padding-left: 30px;">return HttpResponse(html)</p>
</blockquote>
<p>Al igual que con la función de vista hello, esta debe residir en <em>views.py</em>.  Este es el aspecto completo de <em>views.py</em>:</p>
<blockquote><p>from django.http import HttpResponse</p>
<p>import datetime</p>
<p>def hello(request):</p>
<p style="padding-left: 30px;">return HttpResponse(&#8220;Hello world&#8221;)</p>
<p>def current_datetime(request):</p>
<p style="padding-left: 30px;">now = datetime.datetime.now()</p>
<p style="padding-left: 30px;">html = &#8220;It is now %s.&#8221; % now</p>
<p style="padding-left: 30px;">return HttpResponse(html)</p>
</blockquote>
<p>Después de añadir esto a <em>views.py</em>, agreguar el patrón URL a urls.py para decirle a Django que URL debe manejar esta vista. Algo como /time/ tendría sentido:</p>
<blockquote><p>from django.conf.urls.defaults import *</p>
<p>from mysite.views import hello, current_datetime</p>
<p>urlpatterns = patterns(&#8221;,</p>
<p style="padding-left: 30px;">(&#8216;^hello/$&#8217;, hello),</p>
<p style="padding-left: 30px;">(&#8216;^time/$&#8217;, current_datetime),</p>
<p>)</p></blockquote>
<p>Con la vista escrita y la URLconf actualizada, arrancar el runserver y visitar  http://127.0.0.1:8000/time/ en el navegador. Usted debería ver la fecha y hora actuales.</p>
<h3>URLconfs y acoplamiento débil</h3>
<p>Ahora es un buen momento para destacar una filosofía clave detrás de URLconfs y detrás de Django en general: el principio de acoplamiento débil.  Si dos trozos de código están débilmente acoplados, los cambios realizados a uno de ellos tendrá poco o ningún efecto en el otro.</p>
<p>Las URLconfs de Django son un buen ejemplo de este principio en la práctica. En una aplicación Web Django, las definiciones de URL y las funciones de vista que ellas llaman están débilmente acopladas, es decir, la decisión de lo que la URL debe ser para una determinada función y la implementación de la función residen en dos lugares diferentes. Esto le permite intercambiar una pieza sin afectar a la otra.</p>
<p>Por ejemplo, considere la vista del current_datetime. Si usted quiere cambiar la dirección por ejemplo, para moverla de /time/ a /current-time/ podría hacer un cambio rápido en URLconf sin tener que preocuparse por la vista. Del mismo modo, si usted quisiera cambiar la función de vista que altera la lógica de alguna manera, podría hacerlo sin afectar a la URL a la que está vinculada la función.</p>
<p>Además, si usted quiere exponer a la actual funcionalidad de la fecha en varias URL, usted fácilmente podría hacerlo editando URLconf, sin tener que tocar el código de la vista. En este ejemplo, el current_datetime está disponible en dos URLs. Es un ejemplo artificial, pero esta técnica puede ser útil:</p>
<blockquote><p>urlpatterns = patterns(&#8221;,</p>
<p style="padding-left: 30px;">(&#8216;^hello/$&#8217;, hello),</p>
<p style="padding-left: 30px;">(&#8216;^time/$&#8217;, current_datetime),</p>
<p style="padding-left: 30px;">(&#8216;^another-time-page/$&#8217;, current_datetime),</p>
<p>)</p></blockquote>
<p>Las URLconfs y las vistas están débilmente acopladas en la acción.</p>
<h3>Tercera vista: URLs dinámicas</h3>
<p>En la vista current_datetime, el contenido de la página, la fecha/hora actual, es dinámica, pero la dirección (/time/) es estática. En la mayoría de aplicaciones Web dinámicas, sin embargo, una dirección URL contiene los parámetros que influyen en la salida de la página. Por ejemplo, una librería on-line podría dar a cada libro su propia URL.</p>
<p>Crearemos una tercera vista que muestre la fecha y hora actuales compensada por un cierto número de horas. El objetivo es diseñar un sitio para que la página /time/plus/1/ muestre la fecha y hora dentro de una hora, la página /time/plus/2/ muestra la fecha y hora dentro de dos horas, la página /time/plus/3/ muestre la fecha y hora dentrop de tres horas, y así sucesivamente.</p>
<p>Un principiante podría pensar en codificar una función de vista distinta para cada desplazamiento de hora, que podría dar lugar a una URLconf como:</p>
<blockquote><p>urlpatterns = patterns(&#8221;,</p>
<p style="padding-left: 30px;">(&#8216;^time/$&#8217;, current_datetime),</p>
<p style="padding-left: 30px;">(&#8216;^time/plus/1/$&#8217;, one_hour_ahead),</p>
<p style="padding-left: 30px;">(&#8216;^time/plus/2/$&#8217;, two_hours_ahead),</p>
<p style="padding-left: 30px;">(&#8216;^time/plus/3/$&#8217;, three_hours_ahead),</p>
<p style="padding-left: 30px;">(&#8216;^time/plus/4/$&#8217;, four_hours_ahead),</p>
<p>)</p></blockquote>
<p>Entonces, ¿cómo diseñar la aplicación para manejar los desplazamiento de hora arbitrarios? La clave es usar comodines de patrones URL. Como se mencionó anteriormente, un patrón URL es una expresión regular, por lo que puede utilizar el patrón de expresión regular \d+ para que coincida con uno o más dígitos:</p>
<blockquote><p>urlpatterns = patterns(&#8221;,</p>
<p style="padding-left: 30px;"># &#8230; 	(r&#8217;^time/plus/\d+/$&#8217;, hours_ahead),</p>
<p style="padding-left: 30px;"># &#8230;</p>
<p>)</p></blockquote>
<p>Este nuevo patrón URL casará con cualquier URL como /time/plus/2/, /time/plus/25/, o incluso /time/plus/100000000000/.<br />
Ahora, vamos a limitarlo de forma que se permita un desplazamiento máximo de 99 horas. Esto significa que queremos permitir, números de uno o de dos dígitos, y en la sintaxis de la expresión regular, que se traduce en \d(1,2):</p>
<blockquote><p>(r&#8217;^time/plus/\d{1,2}/$&#8217;, hours_ahead),</p></blockquote>
<p>Un detalle importante que se introduce aquí es el carácter r al principio de la expresión regular. Este caracter le dice a Python que la cadena es una &#8220;raw string&#8221; &#8211; su contenido no debe interpretar barras invertidas. En las cadenas normales de Python, las barras invertidas son usadas para caracteres de escape especiales, como la cadena &#8216;\n&#8217;, que es una cadena de caracteres que contiene una nueva línea.</p>
<p>Cuando se agrega el r para que sea una raw string, Python, no aplica el escape de la barra invertida, por lo que r&#8217;\n&#8217; es una cadena de dos caracteres que contiene una barra invertida literal y la n minúscula. Se recomienda fuertemente que utilice raw string en cualquier momento si está definiendo una expresión regular en Python. A partir de ahora, todos los urlpatterns en este libro serán raw string.</p>
<p>Ahora que se ha designado un comodín para la dirección, usted necesita una manera de pasar esos datos de  comodín a la función de vista, de modo que usted pueda utilizar una función de vista única para cualquier desplazamiento de hora arbitrario. Usted puede hacer esto colocando entre paréntesis los datos de la URLpattern que desea guardar. En el caso del ejemplo, lo que desea guardar es cualquier número que se introduzca en la URL, así que ponga paréntesis alrededor de \d(1,2), de esta manera:</p>
<blockquote><p>(r&#8217;^time/plus/(\d{1,2})/$&#8217;, hours_ahead),</p></blockquote>
<p>Usted está utilizando paréntesis para capturar datos del texto concordante. El URLconf final, incluidos los últimos dos puntos de vista, se parece a esto:</p>
<blockquote><p>from django.conf.urls.defaults import *</p>
<p>from mysite.views import hello, current_datetime, hours_ahead</p>
<p>urlpatterns = patterns(&#8221;,</p>
<p style="padding-left: 30px;">(r&#8217;^hello/$&#8217;, hello),</p>
<p style="padding-left: 30px;">(r&#8217;^time/$&#8217;, current_datetime),</p>
<p style="padding-left: 30px;">(r&#8217;^time/plus/(\d{1,2})/$&#8217;, hours_ahead),</p>
<p>)</p></blockquote>
<p>hours_ahead es muy similar a la vista current_datetime escrita antes, con una diferencia clave: que lleva un argumento extra que el número de horas de desplazamiento. Aquí está la vista de código:</p>
<blockquote><p>from django.http import Http404, HttpResponse</p>
<p>import datetime</p>
<p>def hours_ahead(request, offset):</p>
<p style="padding-left: 30px;">try:</p>
<p style="padding-left: 60px;">offset = int(offset)</p>
<p style="padding-left: 30px;">except ValueError:</p>
<p style="padding-left: 60px;">raise Http404()</p>
<p style="padding-left: 30px;">dt = datetime.datetime.now() + datetime.timedelta(hours=offset)</p>
<p style="padding-left: 30px;">html = &#8220;In %s hour(s), it will be %s.&#8221; % (offset, dt)</p>
<p style="padding-left: 30px;">return HttpResponse(html)</p>
</blockquote>
<p>Con esta función de vista y el URLconf escrito, iniciar el servidor de desarrollo de Django (si no está ya en ejecución), y visitar http://127.0.0.1:8000/time/plus/3/ para verificar que funciona. A continuación, intentar http://127.0.0.1:8000/time/plus/5/. Luego http://127.0.0.1:8000/time/plus/24/. Por último, visitar http://127.0.0.1:8000/time/plus/100/ para comprobar que el patrón en el URLconf acepta números sólo de uno o dos dígitos; Django debería mostrar un error de &#8220;Página no encontrada&#8221; en este caso, tal y como vimos. La URL http://127.0.0.1:8000/time/plus/ (sin horas) también debería lanzar un error 404.</p>
<h3>Páginas de error bonitas en Python</h3>
<p>Vamos a introducir deliberadamente un error de Python comentando en el archivo views.py las líneas offset=int(offset)  en la vista de hours_ahead:</p>
<blockquote><p>def hours_ahead(request, offset):</p>
<p style="padding-left: 30px;"># try:</p>
<p style="padding-left: 30px;"># 	offset = int(offset)</p>
<p style="padding-left: 30px;"># except ValueError:</p>
<p style="padding-left: 30px;"># 	raise Http404()</p>
<p style="padding-left: 30px;">dt = datetime.datetime.now() + datetime.timedelta(hours=offset)</p>
<p style="padding-left: 30px;">html = &#8220;In %s hour(s), it will be %s.&#8221; % (offset, dt)</p>
<p style="padding-left: 30px;">return HttpResponse(html)</p>
</blockquote>
<p>Inicie el servidor de desarrollo y vaya a /time/plus/3/. Usted verá una página de error con mucha información, incluido un mensaje TypeError que aparece en la parte superior: &#8220;unsupported type for timedelta hours component: unicode&#8221;</p>
<p>¿Qué pasó? Pues bien, la función de datetime.timedelta espera que el parámetro de horas que se le pase sea un número entero, y el trozo de código que convierte el desplazamiento a un número entero fue comentado. Eso provoca que datetime.timedelta lance un TypeError. Es el típico pequeño fallo que todos los programadores han cometido en algún momento.</p>
<p>El objetivo de este ejemplo es mostrar las páginas de error de Django. Tómese su tiempo para explorar la página de error y conocer la distinta información que ofrece.</p>
<p>La página de error de Django es capaz de mostrar más información en ciertos casos especiales, como el caso de errores de sintaxis de plantilla. Los veremos más tarde, cuando hablemos del sistema de plantillas de Django. Por el momento, descomente las líneas del offset = int (offset) para obtener la función de vista funcionando correctamente de nuevo.</p>
<p>Enlaces Relacionados:</p>
<ul>
<li><a href="/tutorial-de-django-i">Tutorial de Django I</a></li>
<li>Tutorial de Django II</li>
</ul>

                            <div id="aspdf">
                                <a href="http://www.cibernatural.com/wp-content/plugins/as-pdf/generate.php?post=453">
                                    <span>Descargar en PDF</span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://www.cibernatural.com/tutorial-de-django-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Residencial Grenwich-Lanzarote</title>
		<link>http://www.cibernatural.com/web-residencial-grenwich-lanzarote/</link>
		<comments>http://www.cibernatural.com/web-residencial-grenwich-lanzarote/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 19:09:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Construcción]]></category>
		<category><![CDATA[Inmobiliaria]]></category>
		<category><![CDATA[Lanzarote]]></category>
		<category><![CDATA[Playa Blanca]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.cibernatural.com/?p=440</guid>
		<description><![CDATA[Cibernatural S.L. estrena la página web http://www.grenwich-lanzarote.com, Complejo Residencial de apartamentos de lujo en Playa Blanca &#8211; Lanzarote.
En ella puede ver los distintos tipos de apartamentos disponibles, una completa galería de imágenes, planos en formato PDF, el equipamiento de cada uno de ellos, así como la situación del complejo, el entorno, las actividades de ocio [...]]]></description>
			<content:encoded><![CDATA[<p>Cibernatural S.L. estrena la página web <a href="http://www.grenwich-lanzarote.com">http://www.grenwich-lanzarote.com</a>, Complejo Residencial de apartamentos de lujo en Playa Blanca &#8211; Lanzarote.</p>
<p>En ella puede ver los distintos tipos de apartamentos disponibles, una completa galería de imágenes, planos en formato PDF, el equipamiento de cada uno de ellos, así como la situación del complejo, el entorno, las actividades de ocio a realizar y los servicios que le ofrece Grenwich S.A. para realizar todos los trámites ya sea para la compra, alquiler, o alquiler con opción a compra.</p>

                            <div id="aspdf">
                                <a href="http://www.cibernatural.com/wp-content/plugins/as-pdf/generate.php?post=440">
                                    <span>Descargar en PDF</span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://www.cibernatural.com/web-residencial-grenwich-lanzarote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial de Django &#8211; I</title>
		<link>http://www.cibernatural.com/tutorial-de-django-i/</link>
		<comments>http://www.cibernatural.com/tutorial-de-django-i/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 14:19:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Técnico]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.cibernatural.com/?p=432</guid>
		<description><![CDATA[Introducción a Django
Django es un framework de desarrollo web escrito en Python con el que usted puede construir y mantener aplicaciones web de alta calidad con un mínimo de esfuerzo.
Instalar Python
Django está escrito completamente en Python, por lo que el primer paso en la instalación del marco es el  asegurarse de que tiene Python [...]]]></description>
			<content:encoded><![CDATA[<h2><strong><span style="text-decoration: underline;">Introducción a Django</span></strong></h2>
<p>Django es un framework de desarrollo web escrito en Python con el que usted puede construir y mantener aplicaciones web de alta calidad con un mínimo de esfuerzo.</p>
<h3><strong>Instalar Python</strong></h3>
<p>Django está escrito completamente en Python, por lo que el primer paso en la instalación del marco es el  asegurarse de que tiene Python instalado.</p>
<p><a href="http://www.python.org/download/">http://www.python.org/download/</a></p>
<h3><strong>Instalar Django</strong></h3>
<p><a href="http://www.djangoproject.com/download/">http://www.djangoproject.com/download/</a></p>
<p>Linux:   sudo python setup.py install<br />
Windows:   python setup.py install</p>
<p>Los archivos de Django se instalarán en el directorio site-packages de su instalación de Python, en donde Python busca las bibliotecas de terceros.</p>
<h3><strong>Prueba de la instalación de Django</strong></h3>
<p>En una shell de comandos, cambie a otro directorio (no el directorio que contiene el directorio de Django) e inicie el intérprete de Python interactivo escribiendo python. Si la instalación fue exitosa, usted debe ser capaz de importar el módulo de Django:</p>
<p>&gt;&gt;&gt; import django<br />
&gt;&gt;&gt; django.VERSION<br />
(1, 1, 0, &#8216;final&#8217;, 1)</p>
<h3><strong>Establecer una base de datos</strong></h3>
<p>En este punto, usted podría comenzar a escribir una aplicación Web con Django, porque el único requisito previo es una instalación de Python. Sin embargo, es probable que desarrolle un sitio web controlado por base de datos, en cuyo caso tendrá que configurar un servidor de base de datos.</p>
<p>Django es compatible con cuatro motores de base de datos:</p>
<ul>
<li>PostgreSQL (<a href="http://www.postgresql.org/">http://www.postgresql.org/</a>)</li>
<li>SQLite 3 (<a href="http://www.sqlite.org/">http://www.sqlite.org/</a>)</li>
<li>MySQL (<a href="http://www.mysql.com/">http://www.mysql.com/</a>)</li>
<li>Oracle (<a href="http://www.oracle.com/">http://www.oracle.com/</a>)</li>
</ul>
<p>La configuración de la base de datos es un proceso de dos pasos:</p>
<ol>
<li>En primer lugar, tendrá que instalar y configurar el servidor de base de datos.</li>
<li>En segundo lugar, tendrá que instalar la librería Python para nuestra base de datos de back-end. Esto es código Python de terceros que permite interactuar con la base de datos.</li>
</ol>
<h3><strong>Uso de Django con MySQL</strong></h3>
<p>Django requiere MySQL 4.0 o superior. Las versiones 3.x no soportan subconsultas anidadas y algunas otras sentencias SQL estándar .</p>
<p>También tendrá que instalar el paquete de MySQLdb desde <a href="http://www.djangoproject.com/r/python-mysql/">http://www.djangoproject.com/r/python-mysql/</a>.<br />
En Linux, puede comprobar si su paquete de distribución del sistema de gestión ofrece un paquete llamado python-mysql, python-MySQLdb, mysql-python, o algo similar.</p>
<h3><strong>Iniciar un proyecto</strong></h3>
<p>Una vez que haya instalado Python, Django, y (opcionalmente) el servidor/librería de base de datos, puede dar el primer paso del desarrollo de una aplicación Django mediante la creación de un proyecto.</p>
<p>Un proyecto es una colección de ajustes de una instancia de Django, incluyendo la configuración de la base de datos, las opciones específicas de Django, y la configuración de la aplicación.</p>
<p>Si es la primera vez que usa Django, usted tendrá que tener cuidado con la configuración inicial. Cree un nuevo directorio para comenzar a trabajar, tal vez algo como /home/nombre de usuario/djcode/</p>
<p>Vaya al directorio que ha creado y ejecute el comando siguiente:</p>
<p style="padding-left: 30px;"><strong>django-admin.py startproject mysite</strong></p>
<p>Esto creará un directorio <em>mysite</em> en el directorio actual.</p>
<p>El comando startproject crea un directorio que contiene cuatro archivos:</p>
<p>mysite/</p>
<p style="padding-left: 30px;">__init__.py<br />
manage.py<br />
settings.py<br />
urls.py</p>
<ul>
<li>__init__.py: Un archivo necesario para que Python trate el directorio mysite como un paquete (un grupo de módulos de Python). Es un fichero vacío, y normalmente no se le añade nada.</li>
<li>manage.py: Utilidad de línea de comandos que le permite interactuar con el proyecto Django de diversas maneras. Con python manage.py puede tener una idea de lo que puede hacer. Usted nunca tiene que editar este archivo, sino que se crea en el directorio por pura conveniencia.</li>
<li>settings.py: Características de configuración de este proyecto Django. Echele un vistazo para tener una idea de los tipos de configuraciones disponibles, junto con sus valores predeterminados.</li>
<li>urls.py: Las direcciones URL de este proyecto Django. Piense en ello como la &#8220;tabla de contenidos&#8221; de su sitio Django. Por el momento, está vacío.</li>
</ul>
<p>A pesar de su pequeño tamaño, estos archivos ya constituyen una aplicación Django de trabajo.</p>
<h3><strong>Ejecutar el servidor de desarrollo (runserver)</strong></h3>
<p>El servidor de desarrollo de Django (también llamado runserver debido al comando que lanza) es un servidor web ligero que puede utilizar durante el desarrollo de su sitio. Está incluido con Django para que pueda desarrollar su sitio rápidamente, sin tener que lidiar con la configuración del servidor de producción (Apache, por ejemplo) hasta que esté listo para la producción.</p>
<p>El servidor de desarrollo rastrea su código y automáticamente vuelve a cargarlo, por lo que es fácil para usted cambiar el código sin necesidad de reiniciar nada.</p>
<p>Para iniciar el servidor, vaya al directorio del proyecto si no lo ha hecho, y ejecute este comando:</p>
<p style="padding-left: 30px;"><strong>python manage.py runserver</strong></p>
<p>Esto iniciará el servidor de forma local en el puerto 8000, accesible sólo para las conexiones de su propio equipo. Ahora que está en ejecución, visite <strong>http://127.0.0.1:8000/</strong> con su navegador Web. Verá un &#8220;Welcome to Django&#8221;  ¡Funciona!</p>
<p>Enlaces relacionados:</p>
<ul>
<li>Tutorial de Django I</li>
<li><a href="/tutorial-de-django-ii">Tutorial de Django II</a></li>
</ul>

                            <div id="aspdf">
                                <a href="http://www.cibernatural.com/wp-content/plugins/as-pdf/generate.php?post=432">
                                    <span>Descargar en PDF</span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://www.cibernatural.com/tutorial-de-django-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zimbra para PYMEs en Lanzarote</title>
		<link>http://www.cibernatural.com/zimbra-para-pymes-en-lanzarote/</link>
		<comments>http://www.cibernatural.com/zimbra-para-pymes-en-lanzarote/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 10:36:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Correo electrónico]]></category>
		<category><![CDATA[Lanzarote]]></category>
		<category><![CDATA[Open source]]></category>
		<category><![CDATA[PYME]]></category>
		<category><![CDATA[Zimbra]]></category>

		<guid isPermaLink="false">http://www.cibernatural.com/?p=425</guid>
		<description><![CDATA[Zimbra Collaboration Suite (ZCS) resuelve los desafíos a los que se enfrentan las empresas de hoy. ZCS ofrece una solución innovadora diseñada para gestionar buzones de correo de gran tamaño, es compatible con todas las aplicaciones y dispositivos y reduce en gran medida las dificultades en la administración.
Zimbra le permite a su organización implementar un [...]]]></description>
			<content:encoded><![CDATA[<p>Zimbra Collaboration Suite (ZCS) resuelve los desafíos a los que se enfrentan las empresas de hoy. ZCS ofrece una solución innovadora diseñada para gestionar buzones de correo de gran tamaño, es compatible con todas las aplicaciones y dispositivos y reduce en gran medida las dificultades en la administración.</p>
<p>Zimbra le permite a su organización implementar un sistema robusto y moderno de mensajería y colaboración a un COSTO RELATIVAMENTE BAJO con respectos a otros fabricantes. <a href="http://www.cibernatural.com/index.php/contacto/">Solicite una demostración a Cibernatural</a> para descubrir las ventajas que Zimbra puede proporcionarle</p>
<p>Zimbra Collaboration Suite es un servidor completo de mensajería y colaboración con la tecnología mas moderna. Incluye las funcionalidades de correo electrónico, contactos, calendario, documentos, mensajería instantánea, tareas y sincronización con otras aplicaciones y dispositivos.</p>
<p>Zimbra proporciona lo siguiente:</p>
<ul>
<li>Acceso a su correo y colaboración desde cualquier navegador (Internet Explorer, Firefox, Chrome, etc).</li>
<li>Extensa Administración e interfaz gráfica</li>
<li>Escritorio Zimbra. Robusto cliente de correo para gestionar todos sus correos</li>
<li>Acceso desde cualquier otro cliente de correo.</li>
<li>Sincronizacion nativa con móviles &#8211; Blackberry / Windows Mobile / Dispositivos Symbian / J2ME / Palm.</li>
</ul>

                            <div id="aspdf">
                                <a href="http://www.cibernatural.com/wp-content/plugins/as-pdf/generate.php?post=425">
                                    <span>Descargar en PDF</span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://www.cibernatural.com/zimbra-para-pymes-en-lanzarote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inauguración del nuevo local de Cibernatural en Arrecife</title>
		<link>http://www.cibernatural.com/inauguracion-del-nuevo-local-de-cibernatural-en-arrecife/</link>
		<comments>http://www.cibernatural.com/inauguracion-del-nuevo-local-de-cibernatural-en-arrecife/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 11:42:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Arrecife]]></category>
		<category><![CDATA[DELL]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[Lanzarote]]></category>

		<guid isPermaLink="false">http://www.cibernatural.com/?p=413</guid>
		<description><![CDATA[El pasado Viernes día 11 celebramos entre un selecto grupo de amigos la inauguración del nuevo local estudio de ingeniería de Cibernatural S.L. en la Calle Almirante Boado Endeiza, 7 de Arrecife en Lanzarote.
Además de mostrar la nueva instalación y el material disponible (todo tipo de hardware Dell), donde los invitados realizaron todo tipo de [...]]]></description>
			<content:encoded><![CDATA[<p>El pasado Viernes día 11 celebramos entre un selecto grupo de amigos la inauguración del nuevo local estudio de ingeniería de Cibernatural S.L. en la Calle Almirante Boado Endeiza, 7 de Arrecife en Lanzarote.</p>
<p>Además de mostrar la nueva instalación y el material disponible (todo tipo de hardware Dell), donde los invitados realizaron todo tipo de preguntas relacionadas con los servicios ofertados (software y hardware), se procedió al típico cocktel de bienvenida (taperío y bebidas) que se alargó hasta altas horas de la noche.</p>
<p>En resumen, una velada agradable en compañía de amigos como Alejandro (las fotos son cortesía de él y el grifo de cerveza también), Leo (el de la banderita, siempre animando el cotarro), Alejandro Córdoba (sirve igual para un roto que para un descosido), Guillermo, Vicente, Alexis, Javier, David, Sergio y Julián que pasó por allí.</p>
<p>No me gustaría dejar de nombrar igualmente al trío sacapuntas (va con cariño): Ana, Cintia y Mercedes, así como a Alicia y Mayte, y por supuesto a Tere y a mi mujer Mariate, sin las que nada hubiera salido igual.</p>
<p>Les dejo unas pocas imágenes del evento en cuestión (antes de que se acabara el Ron):</p>
<p><object width="480" height="360"><param name="flashvars" value="offsite=true&#038;lang=es-us&#038;page_show_url=%2Fphotos%2Fcibernatural%2Fsets%2F72157622886852707%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fcibernatural%2Fsets%2F72157622886852707%2F&#038;set_id=72157622886852707&#038;jump_to="></param><param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=es-us&#038;page_show_url=%2Fphotos%2Fcibernatural%2Fsets%2F72157622886852707%2Fshow%2F&#038;page_show_back_url=%2Fphotos%2Fcibernatural%2Fsets%2F72157622886852707%2F&#038;set_id=72157622886852707&#038;jump_to=" width="480" height="360"></embed></object></p>

                            <div id="aspdf">
                                <a href="http://www.cibernatural.com/wp-content/plugins/as-pdf/generate.php?post=413">
                                    <span>Descargar en PDF</span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://www.cibernatural.com/inauguracion-del-nuevo-local-de-cibernatural-en-arrecife/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Instalar GlassFish v2.1 en Ubuntu Server 9.10</title>
		<link>http://www.cibernatural.com/instalar-glassfish-v2-1-en-ubuntu-server-9-10/</link>
		<comments>http://www.cibernatural.com/instalar-glassfish-v2-1-en-ubuntu-server-9-10/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 17:26:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Técnico]]></category>
		<category><![CDATA[GlassFish]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.cibernatural.com/?p=366</guid>
		<description><![CDATA[Vamos a mostrar los pasos en la instalación del Servidor de Aplicaciones Java EE GlassFish v2.1 en Ubuntu Server 9.10.

Primero, instalamos Java 6 de Sun como administradores:
sudo apt-get install sun-java6-jdk
Descargar la versión 2.1 de GlassFish para Ubuntu (Linux):
wget http://download.java.net/javaee5/v2.1_branch/promoted/Linux/glassfish-installer-v2.1-b60e-linux.jar
Tarda un poco (59 Mb)
Realizamos la instalación:
sudo java -Xmx256M -jar glassfish-installer-v2.1-b60e-linux.jar
Eliminamos el instalador y movemos la instalación [...]]]></description>
			<content:encoded><![CDATA[<p>Vamos a mostrar los pasos en la instalación del Servidor de Aplicaciones Java EE GlassFish v2.1 en Ubuntu Server 9.10.</p>
<ul>
<li>Primero, instalamos Java 6 de Sun como administradores:<br />
<strong>sudo apt-get install sun-java6-jdk</strong></li>
<li>Descargar la versión 2.1 de GlassFish para Ubuntu (Linux):<br />
<strong>wget http://download.java.net/javaee5/v2.1_branch/promoted/Linux/glassfish-installer-v2.1-b60e-linux.jar</strong><br />
Tarda un poco (59 Mb)</li>
<li>Realizamos la instalación:<br />
<strong>sudo java -Xmx256M -jar glassfish-installer-v2.1-b60e-linux.jar</strong></li>
<li>Eliminamos el instalador y movemos la instalación a un lugar más adecuado como por ejemplo /opt:<br />
<strong>rm glassfish-installer-v2.1-b60e-linux.jar<br />
sudo mv glassfish /opt</strong></li>
<li>Creamos un usuario <em>glassfish</em> para ejecutar el servidor de aplicaciones:<br />
<strong>sudo adduser &#8211;home /opt/glassfish glassfish</strong></li>
<li>Cambiar los permisos del directorio para acceder sin ser superusuario:<br />
<strong> sudo chown -R glassfish /opt/glassfish<br />
sudo chgrp -R glassfish /opt/glassfish</strong></li>
<li>Dar permiso de ejecución a los scripts de Ant:<br />
<strong>cd /opt/glassfish/<br />
sudo chmod -R +x lib/ant/bin/</strong></li>
<li>Ejecutar la configuración:<br />
<strong>sudo -u glassfish lib/ant/bin/ant -f setup.xml</strong></li>
<li>Iniciar un dominio:<br />
<strong>sudo -u glassfish bin/asadmin start-domain domain1</strong></li>
<li>Probar en un navegador si carga la página de administración de GlassFish:<br />
<strong>http://servidor:4848</strong></li>
<li>Entrar mediante los valores por defecto; usuario <em>admin</em> y clave <em>adminadmin</em></li>
</ul>
<p>Ahora veamos los pasos para que se inicie GlassFish (dominio <em>domain1</em>) al arrancar la máquina servidor:</p>
<ul>
<li>Crear el fichero <em>/etc/init.d/glassfish</em> como administrador de esta forma:
<p><strong></p>
<pre>
#! /bin/sh

GLASSFISHPATH=/opt/glassfish/bin

case "$1" in
    start)
       echo "starting glassfish from $GLASSFISHPATH"
       sudo -u glassfish $GLASSFISHPATH/asadmin start-domain domain1
    ;;
    restart)
        $0 stop
	$0 start
    ;;
    stop)
        echo "stopping glassfish from $GLASSFISHPATH"
        sudo -u glassfish $GLASSFISHPATH/asadmin stop-domain domain1
    ;;
    *)
        echo "usage: $0 {start|stop|restart}"
	exit 3
    ;;
esac
</pre>
<p></strong></li>
<li>Darle permiso de ejecución al script:<br />
<strong>sudo chmod a+x /etc/init.d/glassfish</strong></li>
<li>Probar el script:<br />
<strong>sudo /etc/init.d/glassfish restart</strong></li>
<li>Crear los scripts para el inicio automático:<br />
<strong>sudo update-rc.d glassfish defaults 90 10</strong></li>
<li>Reiniciar la máquina para comprobar que el servidor de aplicaciones se inicia al arrancar el servidor</li>
</ul>
<p>Sacado de <a href="http://tuxtraining.com/2008/11/14/installing-glassfish-2-on-ubuntu-710">http://tuxtraining.com/2008/11/14/installing-glassfish-2-on-ubuntu-710</a>, aunque probado y actualizado para Ubuntu Server 9.10.</p>

                            <div id="aspdf">
                                <a href="http://www.cibernatural.com/wp-content/plugins/as-pdf/generate.php?post=366">
                                    <span>Descargar en PDF</span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://www.cibernatural.com/instalar-glassfish-v2-1-en-ubuntu-server-9-10/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Cibernatural es nuevo socio de DELL</title>
		<link>http://www.cibernatural.com/cibernatural-es-nuevo-socio-de-dell/</link>
		<comments>http://www.cibernatural.com/cibernatural-es-nuevo-socio-de-dell/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 14:37:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[DELL]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Partner]]></category>

		<guid isPermaLink="false">http://www.cibernatural.com/?p=323</guid>
		<description><![CDATA[Cibernatural S.L. ha sido aceptado en el programa de socios de DELL (DELL Partner Program), y por tanto, desde ahora dispone de cuenta DELL Premier, con todas las ventajas y beneficios que ello conlleva para la adquisición de hardware de este importante fabricante.

             [...]]]></description>
			<content:encoded><![CDATA[<p>Cibernatural S.L. ha sido aceptado en el programa de socios de <a href="http://www.dell.com">DELL</a> (DELL Partner Program), y por tanto, desde ahora dispone de cuenta DELL Premier, con todas las ventajas y beneficios que ello conlleva para la adquisición de hardware de este importante fabricante.</p>

                            <div id="aspdf">
                                <a href="http://www.cibernatural.com/wp-content/plugins/as-pdf/generate.php?post=323">
                                    <span>Descargar en PDF</span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://www.cibernatural.com/cibernatural-es-nuevo-socio-de-dell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web del C.D. Gymnástica GranaSport</title>
		<link>http://www.cibernatural.com/web-del-c-d-gymnastica-granasport/</link>
		<comments>http://www.cibernatural.com/web-del-c-d-gymnastica-granasport/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 14:23:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tenerife]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.cibernatural.com/?p=307</guid>
		<description><![CDATA[Desarrollo de la Web corporativa del Club Deportivo Gymnástica GranaSport, dedicado fundamentalmente a las clases de Gimnasia Rítmica y Ballet, y la organización de shows vinculados a la danza y la gimnasia, en la Isla de Tenerife.

http://www.gimnasticagranasport.es/






                   [...]]]></description>
			<content:encoded><![CDATA[<p>Desarrollo de la Web corporativa del Club Deportivo <a href="http://www.gimnasticagranasport.es/">Gymnástica GranaSport</a>, dedicado fundamentalmente a las clases de Gimnasia Rítmica y Ballet, y la organización de shows vinculados a la danza y la gimnasia, en la Isla de Tenerife.<br />
<br/><br/><br />
<a href="http://www.gimnasticagranasport.es/">http://www.gimnasticagranasport.es/</a><br />
<br/><br/><br />
<img src="http://www.cibernatural.com/wp-content/uploads/2009/10/granasport11-300x225.jpg" alt="granasport1" title="granasport1" width="300" height="225" class="aligncenter size-medium wp-image-311" /><br />
<img src="http://www.cibernatural.com/wp-content/uploads/2009/10/granasport21-300x225.jpg" alt="granasport2" title="granasport2" width="300" height="225" class="aligncenter size-medium wp-image-312" /><br />
<img src="http://www.cibernatural.com/wp-content/uploads/2009/10/granasport31-300x225.jpg" alt="granasport3" title="granasport3" width="300" height="225" class="aligncenter size-medium wp-image-313" /><br />
<img src="http://www.cibernatural.com/wp-content/uploads/2009/10/granasport4-300x225.jpg" alt="granasport4" title="granasport4" width="300" height="225" class="aligncenter size-medium wp-image-314" /></p>

                            <div id="aspdf">
                                <a href="http://www.cibernatural.com/wp-content/plugins/as-pdf/generate.php?post=307">
                                    <span>Descargar en PDF</span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://www.cibernatural.com/web-del-c-d-gymnastica-granasport/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hormicasa y C2 Gestión Inmobiliaria se publicitan mediante Mediasand</title>
		<link>http://www.cibernatural.com/hormicasa-y-c2-gestion-inmobiliaria-se-publicitan-mediante-mediasand/</link>
		<comments>http://www.cibernatural.com/hormicasa-y-c2-gestion-inmobiliaria-se-publicitan-mediante-mediasand/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 13:50:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Hormicasa]]></category>
		<category><![CDATA[Inmobiliaria]]></category>
		<category><![CDATA[Lanzarote]]></category>
		<category><![CDATA[Mediasand]]></category>
		<category><![CDATA[SEM]]></category>

		<guid isPermaLink="false">http://www.cibernatural.com/?p=300</guid>
		<description><![CDATA[Las inmobiliarias en Lanzarote Hormicasa y C2 Gestión Inmobiliaria, con objeto de mejorar su posición en el mercado inmobiliario en Canarias, han decidido utilizar la red publicitaria on-line de Canarias Mediasand.



En principio, están disponible en los siguientes soportes:
http://www.lanzarote-webcam.com/
http://lanzarotetouristnetwork.com/

                  [...]]]></description>
			<content:encoded><![CDATA[<p>Las inmobiliarias en Lanzarote <a href="http://www.hormicasa.es">Hormicasa</a> y <a href="http://www.c2gestioninmobiliaria.com">C2 Gestión Inmobiliaria</a>, con objeto de mejorar su posición en el mercado inmobiliario en Canarias, han decidido utilizar la red publicitaria on-line de Canarias <a href="http://www.mediasand.com/">Mediasand</a>.<br />
<br/><br/></p>
<p><img src="http://carlosdpp.webfactional.com/wp-content/uploads/2009/10/banner-021.png" alt="banner-02" title="banner-02" width="468" height="60" class="aligncenter size-full wp-image-302" /><br />
<img src="http://carlosdpp.webfactional.com/wp-content/uploads/2009/10/banner-468x60.png" alt="banner-468x60" title="banner-468x60" width="468" height="60" class="aligncenter size-full wp-image-303" /></p>
<p>En principio, están disponible en los siguientes soportes:<br />
<a href="http://www.lanzarote-webcam.com/">http://www.lanzarote-webcam.com/</a><br />
<a href="http://lanzarotetouristnetwork.com/">http://lanzarotetouristnetwork.com/</a></p>

                            <div id="aspdf">
                                <a href="http://www.cibernatural.com/wp-content/plugins/as-pdf/generate.php?post=300">
                                    <span>Descargar en PDF</span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://www.cibernatural.com/hormicasa-y-c2-gestion-inmobiliaria-se-publicitan-mediante-mediasand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Traductor Python de XML</title>
		<link>http://www.cibernatural.com/traductor-python-de-xml/</link>
		<comments>http://www.cibernatural.com/traductor-python-de-xml/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 13:34:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Noticias]]></category>
		<category><![CDATA[Latex]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Tenerife]]></category>
		<category><![CDATA[Universidad de La Laguna]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.cibernatural.com/?p=293</guid>
		<description><![CDATA[Cibernatural S.L. está desarrollando para la Universidad de La Laguna, y en particular junto al grupo de Paralelismo del departamento de Computación como coautor, un traductor XML.
El objetivo es obtener un conjunto de clases C++ para un problema de programación dinámica paralelo desde una fórmula matemática del problema en Latex.
Como ya se posee un generador [...]]]></description>
			<content:encoded><![CDATA[<p>Cibernatural S.L. está desarrollando para la Universidad de La Laguna, y en particular junto al grupo de Paralelismo del departamento de Computación como coautor, un traductor XML.</p>
<p>El objetivo es obtener un conjunto de clases C++ para un problema de programación dinámica paralelo desde una fórmula matemática del problema en Latex.</p>
<p>Como ya se posee un generador de las clases a partir de una especificación XML del problema y la fórmula en Latex puede ser especificada también mediante XML usando MathML, se necesita un traductor que transforme el XML que especifica la fórmula (MathML) al XML que especifica la entrada al generador de clases.</p>
<p>Cibernatural está desarrollando en Python dicho traductor XML.</p>
<p>El XML de salida de nuestro traductor debe corresponder a la definición de un problema de programación dinámica paralela, que servirá como entrada a un generador de clases C++ que cree los ficheros del código fuente correspondiente al problema para ejecutarlo.</p>
<p>El objetivo es generar estos ficheros XML de definición del problema a partir de las fórmulas matemáticas de definición del problema en Latex. Como se pueden generar ficheros XML (MathML) a partir de fórmulas en Latex, lo que faltaría para cerrar el círculo sería un traductor del XML de la fórmula (MathML) al XML de entrada al generador de clases del problema.</p>
<p>Lo primero que necesitamos es el fichero XML de entrada el cual podemos obtener, por ejemplo, con <a href="http://hutchinson.belmont.ma.us/tth/mml/">TtM, un traductor de TeX a MathML</a>, (ttmL es su versión para Linux). Una vez ejecutado, ya tenemos el MathML.</p>
<p>Para comenzar a traducir el XML con Python, lo primero que debemos hacer es cargar el archivo XML de entrada en memoria. Para ello, usaremos <a href="http://codespeak.net/lxml/">lxml, una librería de procesamiento de XML y HTML en Pyhton</a>, y en concreto la <a href="http://codespeak.net/lxml/tutorial.html">API ElementTree</a>.<br />
<strong><br />
import sys, string<br />
from lxml import etree<br />
</strong></p>
<p>Definiendo un  parser XML y usando el método parse ya tenemos nuestro XML (MathML) en memoria:<br />
<strong><br />
parser = etree.XMLParser(load_dtd=True, no_network=False, remove_blank_text=True, ns_clean=True, resolve_entities=True)<br />
tree = etree.parse(’problemaMathML.xml’,parser)<br />
</strong></p>
<p>Podemos mostrar el fichero cargado por pantalla para comprobar que todo ha ido bien:<br />
<strong><br />
fsalida.write(etree.tostring(tree, pretty_print=True))<br />
</strong></p>
<p>En entradas siguientes, veremos como recorrer los nodos del árbol y las acciones de procesamiento a realizar en cada uno de ellos para conseguir la traducción correcta mediante ejemplos concretos.</p>

                            <div id="aspdf">
                                <a href="http://www.cibernatural.com/wp-content/plugins/as-pdf/generate.php?post=293">
                                    <span>Descargar en PDF</span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://www.cibernatural.com/traductor-python-de-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
