Contenido

Pycript, el javascript con sabor a Python

15 ene

+ 8

Si conoces Python habrás notado que la generación de código limpio es una norma muy inculcada en la filosofía del lenguaje. Esto ayuda sustancialmente a la creación de un código que prácticamente todo aquel que haya desarrollado alguna en Python podrá entender (aunque tambien se pueden hacer desastres :D).

Por el contrario, Javascript, es archiconocido por la filosofía de minimizar, hacer todo en el menor número de líneas posibles, esto tiene sentido ya que el lenguaje ha de viajar hasta el cliente y allí ejecutarse. De esta forma, todo lo que podamos bajar, son bytes de menos que enviar.

Aza Raskin se ha propuesto unir estas dos filosofías e implementar Pyscript, una implementación en Javascript que nos permite desarrollar en Javascript usando la sintaxis de Python [Ver Demo]

// Pyscript
function triangle(a,b):
  if a > 0 && b > 0:
    function sqroot(x):
      if x > 0:
        return Math.pow(x,.5)
      else:
        return 0
    return sqroot( a*a + b*b )
  else:
    return 0
// Javascript
function triangle(a,b){
  if(a > 0 && b > 0 ){
    function sqroot(x){
      if( x > 0 ){
        return Math.pow(x,.5);
      }
      else {
        return 0;
      }
    }
    return sqroot( a*a + b*b );
  }
  else {
    return 0;
  }
}


¿Como usarlo?

Se trata de un fichero .js que podemos descargar directamente desde aquí y que nos permitirá incluir código Pyscript en unos tags personalizados para dicho código.

<script src="pyscript.min.js"></script>

Una vez añadido este código, ya podremos generar nuestros bloques de código.

<script id="input" type="text/pyscript">
  var el = document.getElementById("string")
  for var i=0; i<5; i++: el.innerHTML += "hello! "

  var count = 0
  for var i=0; i<5; i++:
    count += 1
    if count==2:
      count *= 5

  document.getElementById("count").innerHTML = count;    

  function triangle(a,b):
    function sqroot(x): return Math.pow(x,.5)
    return sqroot( a*a + b*b )

  document.getElementById("triangle").innerHTML = triangle(3,4);
</script>

Como experimento es muy interesante, pero por el momento no debería tomarse más enserio debido a que la filosofía de Javascript (que hemos visto antes) es así por algo, las conexiones más lentas lo agradecerán :D

Python + Django, ¿por donde empezar?

2 ene

+ 17

Hace 1 mes, Antoni Aloy nos hizo una charla informal, el Creant Bits. En ella nos presentó, con una ilusión admirable, python + django (os dejo las presentaciones). Yo no había trasteado nada de Python y mucho menos Django, hasta aquel momento y la verdad es que en 4-5 horas que duró la presentación fué posible conocer de pasada ambas herramientas lo suficiente para que el gusanillo empiece a mordisquear, tanto que aún sigue haciéndolo en mi :D

Python

Me voy a ahorrar la información sobre el lenguaje, y delego ese trabajo a la Wikipedia. Solo diré que el código identado al principio es poco “laborioso” pero con 2 días de tabulador no puedes vivir sin él.

Ojo! Actualmente la versión estable es la 2.6 aunque ya se vé asomar la versión 3.x. Por el momento han tomado la desición de paralizar la evolución de la 3.0 hasta que todas las implementaciones de Python lo soporten y asegurarse la mayor compatibilidad con esta nueva versión, así que aunque desarrollemos sobre la 2.6 deberíamos conocer las diferencias con la 3.x.

Django

Este framework fué desarrollado con la premisa de que generar una aplicación web no debería ser tan complicado y mucho menos lento. Por ese motivo, generar una aplicación con Django es sencillo y rápido. Una simple y “casi” universal configuración nos permitirá generar proyectos web completos con un simple copy&paste.

Esto solo pretende ser una pequeña guía de sitios que he ido recopilando en mi primer mes con Python + Django. Espero que a alguien le pueda servir y si de paso pico a algún curioso, pues mejor :D

Actualización(13:49)

Si crear un proyecto es fácil, configurarlo a veces es un poco pesado, así que he montado un proyecto plantilla en blanco que puede servir para iniciarte en el mundo django. Además, lo he alojado en Google Code para que alguien con más conocimientos sobre el tema lo complemente si cree conveniente.