lunes, 25 de marzo de 2013

Brython migra de Google Code hacia Bitbucket

Brython

Este artículo es fundamentalmente para informarles a los seguidores de este blog que el desarrollo de Brython se ha migrado desde Google Code (i.e. svn) hacia Bitbucket (hg + git) . Pero bueno ... ¿qué es Brython?

Brython está diseñado para remplazar a Javascript como lenguaje de scripts en el lado del cliente . Para nadie es un secreto las límitaciones de este lenguaje que desde mucho tiempo ya domina en el ámbito de los lenguajes de script para los navegadores web . Este es el bloque fundamental para confeccionar la gran mayoría de las páginas web dinámicas. Sin este tipo de lenguajes la Internet sería ... bueno , como al principio . Esto quiere decir no tan divertida y útil como es ahora sino más bien orientada a un grupo reducido de personas con aplicaciones prácticas limitadas . Nada de mapas , ni de chat web , ni de hojas de cálculo , ni ...

Desde un punto de vista un poco más técnico Brython es una implementación de Python 3 adaptado al entorno HTML 5 . En consecuencia ofrece una interface a los objetos y eventos del DOM .

La galería muestra unos cuántos ejemplos , desde la creación de un documento simple hasta funcionalidades más complejas incluyendo drag-and-drop y navegación 3D .

A continuación les muestro el código completo de una página ...

<!doctype html>
<html>
<head>
<meta name="description" content="Brython">
<meta name="keywords" content="Python,Brython">
<meta name="author" content="Pierre Quentel">
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<script src="brython.js"></script>
<title>Brython</title>
<link rel="stylesheet" href="brython.css">
</head>
<body onload="brython()">
<center>
<table id="banner" cellpadding=0 cellspacing=0>
<tr>
<td><a class="banner" href="index.html">Home</a></td>
<td><a class="banner" href="tests/console_en.html">Console</a></td>
<td><a class="banner" href="gallery/gallery_en.html">Gallery</a></td>
<td><a class="banner" href="doc/en/index.html">Documentation</a>
<td><a class="banner" href="https://bitbucket.org/olemis/brython/downloads" target="_blank">Download</a></td>
<td><a class="banner" href="https://bitbucket.org/olemis/brython/src" target="_blank">Development</a></td>
<td><a class="banner" href="groups_en.html" target="_blank">Groups</a></td>
</tr>
</table>
</center>
<div style="text-align:center">
<img src="brython.png"></img><br><b>browser python</b>
</div>

<script type="text/python">
import time
import math
import datetime

sin,cos = math.sin,math.cos
width,height = 250,250 # canvas dimensions
ray = 100 # clock ray

def needle(angle,r1,r2,color="#000000"):
    # draw a needle at specified angle in specified color
    # r1 and r2 are percentages of clock ray
    x1 = width/2-ray*cos(angle)*r1
    y1 = height/2-ray*sin(angle)*r1
    x2 = width/2+ray*cos(angle)*r2
    y2 = height/2+ray*sin(angle)*r2
    ctx.beginPath()
    ctx.strokeStyle = color
    ctx.moveTo(x1,y1)
    ctx.lineTo(x2,y2)
    ctx.stroke()

def set_clock():
    # erase clock
    ctx.beginPath()
    ctx.fillStyle = "#FFF"
    ctx.arc(width/2,height/2,ray*0.89,0,2*math.pi)
    ctx.fill()
    
    # redraw hours
    show_hours()

    # print day
    now = datetime.datetime.now()
    day = now.day
    ctx.font = "bold 14px Arial"
    ctx.textAlign = "center"
    ctx.textBaseline = "middle"
    ctx.fillStyle="#FFF"
    ctx.fillText(day,width*0.7,height*0.5)

    # draw needles for hour, minute, seconds    
    ctx.lineWidth = 3
    hour = now.hour%12 + now.minute/60
    angle = hour*2*math.pi/12 - math.pi/2
    needle(angle,0.05,0.5)
    minute = now.minute
    angle = minute*2*math.pi/60 - math.pi/2
    needle(angle,0.05,0.85)
    ctx.lineWidth = 1
    second = now.second+now.microsecond/1000000
    angle = second*2*math.pi/60 - math.pi/2
    needle(angle,0.05,0.85,"#FF0000") # in red
    
def show_hours():
    ctx.beginPath()
    ctx.arc(width/2,height/2,ray*0.05,0,2*math.pi)
    ctx.fillStyle = "#000"
    ctx.fill()
    for i in range(1,13):
        angle = i*math.pi/6-math.pi/2
        x3 = width/2+ray*cos(angle)*0.75
        y3 = height/2+ray*sin(angle)*0.75
        ctx.font = "20px Arial"
        ctx.textAlign = "center"
        ctx.textBaseline = "middle"
        ctx.fillText(i,x3,y3)
    # cell for day
    ctx.fillStyle = "#000"
    ctx.fillRect(width*0.65,height*0.47,width*0.1,height*0.06)

canvas = doc["clock"]
# draw clock border
if hasattr(canvas,'getContext'):
    ctx = canvas.getContext("2d")
    ctx.beginPath()
    ctx.lineWidth = 10
    ctx.arc(width/2,height/2,ray,0,2*math.pi)
    ctx.stroke()
    
    for i in range(60):
        ctx.lineWidth = 1
        if i%5 == 0:
            ctx.lineWidth = 3
        angle = i*2*math.pi/60 - math.pi/3
        x1 = width/2+ray*cos(angle)
        y1 = height/2+ray*sin(angle)
        x2 = width/2+ray*cos(angle)*0.9
        y2 = height/2+ray*sin(angle)*0.9
        ctx.beginPath()
        ctx.moveTo(x1,y1)
        ctx.lineTo(x2,y2)
        ctx.stroke()
    time.set_interval(set_clock,100)
    show_hours()
else:
    doc['navig_zone'].html = "On Internet Explorer 9 or more, use a Standard rendering engine"
</script>

<p>
<div style="text-align:center;padding-left:15%;padding-right:15%;">
Without a doubt, you've seen a clock like this in demos of HTML5
<p><canvas width="250" height="250" id="clock">
<i>sorry, Brython can't make the demo work on your browser ; 
<br>check if Javascript is turned on
<br><div id="navig_zone"></div></i>
</canvas>
<p>
However, right click and view the source of this page...
<p>It is not Javascript code! Intead, you will find Python code
in a script of type "text/python"
<p>Brython is designed to replace Javascript as the scripting 
language for the Web. As such, it is a Python 3 implementation 
(you can take it for a test drive through a web 
<a href="/tests/console_en.html">console</a>), adapted to
the HTML5 environment, that is to say with an interface to
the DOM objects and events
<p>The <a href="gallery/gallery_en.html">gallery</a> highlights a few 
of the possibilities, from creating simple document elements 
to drag and drop and 3D navigation
</div>
</body>
</html>

... nada de Javascript \o/ .

¿Qué que es lo que hace? Solo use su navegador web preferido y consulte esta página para ver el ejemplo en acción .

Brython @ Bitbucket

¿Por qué la migración hacia Bitbucket? Bueno ... quizás este artículo les proporcione las respuestas . Es sobre Github pero no hay nada más parecido a ese modelo que Bitbucket, con la ventaja de poder tener a git y mercurial en un solo lugar. Google Code se queda un poco atrás .

Por el momento existen dos repositorios

Esperamos que este cambio sea beneficioso para la comunidad ya que todos podrán aportar al proyecto con mayor facilidad. Sus contribuciones serán bienvenidas ... especialmente simelo piden .

TuxInfo 56 : Interfaces de usuario flexibles con AvalonDock

TuxInfo 56

Hace poco tiempo atrás descubrí cómo implementar interfaces de usuario similares a las de entornos de desarrollo como Microsoft Visual Studio , PyCharm, Eclipse, o Aptana . De hecho la librería en cuestión es utilizada en el producto SharpDevelop . Hemos estado utilizando este tipo de soluciones en aplicaciones que venimos desarrollando desde entonces . Si está interesado en conocer los detalles le invito a descargar TuxInfo 56 . En ese número hay otros artículos que podrían ser igualemnte de su interés , sobre todo si Usted se interesa en las alternativas de código abierto para sistemas propietarios .

TuxInfo 57 estará lista en los próximos días, al parecer con un nuevo formato de dos columnas . Varios artículos interesantes serán publicados allí muy pronto , incluyendo más detalles acerca de las aplicaciones que hemos hecho con AvalonDock y que estamos terminando en este momento . Les invito a seguir los próximos números de TuxInfo y suscribirse a este blog si desea estar al tanto de nuevas noticias acerca del software libre . Usted siempre contará con mi ayuda simelo pide.

viernes, 22 de marzo de 2013

Apache™ Bloodhound se gradua como proyecto de la ASF

Apache™ Bloodhound

Todo comenzó con una votación inicial en la lista de discusión bloodhound-dev@incubator.apache.org y el consecuente voto favorable de los miembros del IPMC . Hace unas pocas horas en un anuncio de Joachim Dreimann se dió a conocer que la junta directiva de la fundación ha decidido aceptar el sistema de gestión de incidencias Apache™ Bloodhound como un proyecto oficial. Gary Martin asumirá el rol de VP Apache Bloodhound .

Felicidades Gary . Ha sido un verdadero placer trabajar contigo durante más de un año . Felicidades también a todos los que han contribuido de una forma u otra a que este feliz acontecimiento suceda .

Todo esto ubica a Apache™ Bloodhound a la altura de Apache HTTP server , OpenOffice.org , Tomcat , Hadoop , Camel , CouchDB , Subversion ... y muchos , muchos otros sistemas líderes del mercado que ponen de manifiesto las buenas prácticas auspiciadas por la fundación durante sus ya más de diez años de existencia . A continuación les ofrezco más detalles .

Votaciones

Los resultados de las votaciones fueron los siguientes :

bloodhound-dev@…
Andrej Golcov (andrej) +1 (non-binding)
Branko Čibej (brane, mentor/IPMC) +1 binding
Gavin McDonald (gmcdonald, PPMC) +1 binding
Gary Martin (gjm, PPMC) +1 binding
Joachim Dreimann (jdreimann) +1 (non-binding)
Jose Angel Franco Navarro +1 (non-binding)
Jure Žitnik (jure) +1 (non-binding)
Mark Poole (mpoole, PPMC) +1 binding
Matevž Bradač (matevz) +1 (non-binding)
Olemis Lang +1 (non-binding)
Peter Koželj (peter) +1 (non-binding)
Ryan Ollos (rjollos) +1 (non-binding)
general@…
Branko Čibej +1 binding
Chris Mattmann +1 binding
Gavin McDonald +1 binding
Greg Stein +1 binding
Joachim Dreimann +1 (non-binding)
Jure Žitnik +1 (non-binding)
Matevž Bradač +1 (non-binding)
Ryan Ollos +1 (non-binding)
Propuesta de miembros para el PMC
Mat Booth <mbooth@apache.org>
Matevž Bradač <matevz@apache.org>
John Chambers <chambej@apache.org>
Branko Čibej <brane@apache.org>
Joachim Dreimann <jdreimann@apache.org>
Andrej Golcov <andrej@apache.org>
Peter Koželj <peter@apache.org>
Gary Martin <gjm@apache.org>
Gavin McDonald <gmcdonald@apache.org>
Ryan Ollos <rjollos@apache.org>
Mark Poole <mpoole@apache.org>
Greg Stein <gstein@apache.org>
Hyrum K. Wright <hwright@apache.org>
Jure Žitnik <jure@apache.org>

Listo para la versión 0.5.0

Aprovecho la ocasión para mencionar lo más relevante que ha ocurrido en este trimestre con relación al proyecto . En primerísimo lugar para la versión 0.5.0 se ha obtenido un nuevo diseño basado en Bootstrap que logra adaptarse a diferentes resoluciones de pantalla . Este es el primer paso con vistas a una orientación marcada hacia el mercado de dispositivos móviles (smartphones , tablets , ...) . En consecuencia se han incorporado ajustes y mejoras en los elementos de navegación del sitio , en la tipografía, las vistas de los tickets , administración y los formularios para adjuntar ficheros .

El explorador del repositorio, pendiente desde hace mucho tiempo, ya viene incorporado. Todos aquellos que ya tenían esta capacidad previamente instalada no tienen porqué preocuparse . Comparado con la versión que le ofrecíamos a nuestros clientes no hay cambios de ningún tipo .

También se han hecho grandes mejoras en el área de la búsqueda avanzada después de ser introducida en la versión 0.4.0. Ahora se resaltan las palabras clave de la búsqueda, y se mejora la calidad del algoritmo de indexación, entre muchas otras mejoras .

Sobre la infraestructura de la fundación ya hay dos demos en línea \o/. En https://bh-demo2.apache.org/ se puede ver la última versión estable (por el momento 0.4.0) . En https://bh-demo1.apache.org se ha desplegado la versión más reciente en el repositorio (i.e. un nightly build basado en HEAD) . Aquí encontrará todo lo que está incluído en la versión 0.5.x y un poco más .

El voto del PPMC para liberar la versión 0.5.x es bastante favorable. Esto quiere decir que muy pronto todo esto estará listo para descarga desde algún servidor de la ASF . Solo que faltan ciertos tecnicismos y trámites burocráticos relacionados con la graduación , etc ... En fin que si Usted quisiera adelantarse, pues, todo esto está ya en el HEAD del repositorio. Las instrucciones de instalación son bastante precisas y le facilitarán el proceso.

Contribuciones hechas a Trac

Como parte de la implementación de la búsqueda avanzada a partir de una petición de un servidor se ha decidido generalizar y unificar el mecanismo de notificaciones de Trac . De esta forma en poco tiempo muy probablemente todas las interfaces de notificación de cambios e.g. ITicketChangeListener, IMilestoneChangeListener, ... serán descontinuadas en favor de una única interfaz IResourceChangeListener . Esto ya es un hecho en la copia que distribuye Apache™ Bloodhound . Los autores de los plugins no deben preocuparse en demasía (por el momento) puesto a que todavía se ofrece compatibilidad con el ramillete de interfaces existentes hasta el momento ... pero por favor , no creen más ninguna :P .

Otro aporte importante ha sido la separación de las instancias de la clase ComponentManager al ser enumerados los puntos de extensión . Sí , así mismo ... un rollo ... por lo que si está interesado en saber más le pido que lea este ticket . Esto será incorporado en Trac=1.0.2 . A lo mejor escriba alguna nota al respecto en los próximos días .

Perspectivas

Fundamentalmente a corto o mediano plazo hay dos o tres mejoras importantes . En primer lugar el soporte para múltiples productos ya es un hecho . En estos momentos estamos dando los toques finales a la primera versión que estará ya disponible para la versión 0.6.0 .

Hace pocos días con vistas a la graduación del proyecto y otros asuntos relacionados estuvimos analizando algunos retos y limitaciones que tiene el despliegue que utilizamos en la ASF . En lo que concierne al control de versiones un mensaje de Branko Čibej puso la última gota a un asunto que desde hace tiempo nos viene afectando de forma negativa : la integración del gestor de incidencias con los repositorios gestionados en la infraestructura d la ASF . La solución completa parece estar en torno al soporte remoto de repositorios svn y el manejo de hooks a través de pubsub . Esta última es una característica que será incluída en Subversion 1.8.x pero que desde ya está desplegada en producción en la infraestructura de la ASF . Esta configuración también facilitará otro enfoque de trabajo sugerido por Greg Stein , haciendo más énfasis en el repositorio .

Por otra parte hace unos minutos pude leer el anuncio de la versión 3.0.4 de trachacks:MasterTicketsPlugin y su futura integración con Apache™ Bloodhound .

Además de esto en la nevera tenemos otras sorpresas basadas en soluciones que ya hemos desplegado y ofrecido a varios clientes .

Conclusiones

Como siempre , espero que las mejoras sean de su agrado . No dude en comentar acerca de estas propuestas o sugerir mejoras . Todo es posible ... simelo piden .