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 .
¿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
- El repositorio oficial olemis/brython @ bitbucket (mercurial) creado con hgsubversion
- Un mirror olemis/brython-git @ bitbucket creado con git-svn y que se mantendrá sincronizado usando hg-git
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 .
No hay comentarios:
Publicar un comentario