Usando el SDK de Google Apps Engine

El lunes pasado comentaba que me había llegado mi invitación para crear mi cuenta en Google Apps Engine (GAE), y tenía la duda sobre que aplicación desarrollar. He decidido en éste post hablar brevemente sobre como desarrollar una aplicación básica para GAE haciendo uso del SDK que ofrece Google de manera gratuita.

Si alguien planea usar GAE como plataforma para desarrollar una aplicación de producción, pues es bueno hacer ciertas aclaraciones para que nadie luego se sienta sorprendido, en lo personal creo que GAE es una gran iniciativa, pero ciertamente tiene sus inconveniente, aquí los más importantes:

  •  El único lenguaje de programación soportado actualmente es Python, se espera en un futuro ofrecer algunos otros.
  • No existe un motor de base de datos relacional, la única forma de almacenar información es en grande tablas que reciben el nombre de "datastore" (almacenes de datos), aunque Google ofrece la posibilidad de hacer queries en una sintaxis parecida a un SELECT de SQL, en realidad sólo ofrece eso, todas las escrituras o ediciones de datos deben ser hechas usando las funciones que provee Google para el datastore.
  • Las aplicaciones una vez que son levantadas a la red de Google no pueden ser borradas, así que cuidado con que es lo que subimos a GAE.
  •  Nuestra aplicación una vez desarrollada es automáticamente escalable, ya que GAE es el que se encarga de proveer la redundancia y distribución de la data a través de toda la red de Google, lo cuál es bueno poque reduce al mínimo la inversión en hardware, pero hay un inconveniente. Las aplicaciones desarrolladas para GAE, sólo correran en GAE. No hay forma de hacer un back up de la data y copiar los archivos de la aplicación para luego moverla un servidor web fuera de la red de Google, estamos ante una arquitectura cerrada.
  • Los datos que almacenemos en el datastore, estan en poseción de Google y por lo tanto Google puede indexarlos para que estén su motor de búsqueda. Así que cuidado con la información que se pone en el datastore, poque cualquiera podría tener acceso a ella.

Teniendo claro los puntos anteriores ya sabemos que podemos y que no podemos hacer con GAE, por lo tanto ya queda a nuestro criterio la naturaleza de la aplicación que desarrollemos. Comencemos ahora con éste breve tutorial que trata de explicar como instalar y correr una aplicación GAE mínima usando el SDK que puede ser descargado libremente desde la red de Google.

Lo primero que debemos hacer es descargar el SDK de GAE desde esta pagina web (en mi caso particular lo hare usando la versión Linux):

http://code.google.com/appengine/downloads.html

Los que tengan Linux or Mac pueden comenzar el proceso de instalación del SDK inmediatamente porque usualmente Python 2.5 ya está instalado, pero los usuarios de Windows deben de descargar e instalar Python desde aquí:

http://www.python.org/download/

Cuando se ha descargado el ZIP file de la versión Linux debemos tipear los siguientes comandos para instalarlo (asumiendo que usan Ubuntu):

$ unzip google_appengine_1.0.1.zip
$ sudo mv google_appengine /usr/local/appengine

Ya estamos listos para desarrollar nuestro primer ejemplo entonces. Para ello basta con que creemos un directorio llamado "holamundo", y luego entraremos a dicho directorio, para hacerlo usaremos los siguientes comandos:

$ cd ~
$ mkdir holamundo
$ cd holamundo

Ahora debemos de crear dos archivos uno llamado "holamundo.py" y otro llamado "app.yaml". El contenido de dichos archivos debe ser el siguiente:

holamundo.py:

print ‘Content-Type: text/html’
print »
print ‘hola mundo!!!’

app.yaml:

application: holamundo
version: 1
runtime: python
api_version: 1

handlers:
– url: /.*
  script: holamundo.py

Como es obvio el primer archivo holamundo.py es el programa que contiene nuestra aplicación y app.yaml le informa a GAE como procesar nuestra aplicación. holamundo.py no requiere mayor comentario pues es obvio por su sintaxis que lo único que hara la aplicación sera mostrar las palabras "hola mundo!!!" en el navegador, todo el trabajo de configuración se realiza en app.yaml, aquí una explicación detallada línea por línea:

application: holamundo
Como su nombre lo indica esta cláusula le da
nombre a nuestra aplicación
version: 1 Es la versión de nuestra aplicación, para nuestro
ejemplo esta es la primera versión que hacemos
de nuestro programa
runtime: python El lenguaje de programación que se usará para
ejecutar nuestra aplicación por el momento sólo
python esta disponible, pero se espera que otros
pronto.
api_version: 1 La versión del API que estamos usando, puesto
que esta es la primera verisón disponible, lo
indicamos en ésta claúsula pues depende de la
versión del API las funciones a las que tenemos
acceso, muchas funciones pueden añadirse o
eliminarse, con esta cláusula GAE sabe que
versión de API utilizar para ejecutar nuestra
aplicación.
handlers: Con ésta cláusula indicamos como debe GAE
de procesar los requerimientos POST/GET de
los clientes.
 – url: /.* Con ésta cláusula le decimos a GAE que debe hacer
con toda solicitud a nuestra aplicación ".*" es una
expresión regular que significa toda cadena de texto
de un caracter o más
 script: holamundo.py Cumplida la condición anterior, GAE ejecutará el
script "holamundo.py", que es nuestra aplicación.

Ahora que ya tenemos creados los dos archivos básicos que componen nuestra aplicación debemos de inciar el servidor web que viene en el SDK para poder probarla y ver que tal nos quedo, para ello debemos de ejecutar el siguiente comando (en Linux):

$ /usr/local/appengine/dev_appserver.py ~/holamundo

Es muy importante que tomemos en cuenta de que debemos dar la base del directorio y no el archivo de nuestra aplicación, luego de que demos el comando anterior el servidor de prueba local nos preguntará si deseamos de que busque los últimos updates, a lo que debemos responder que sí. Luego de eso debemos ver una serie de mensajes como éstos:

INFO     2008-05-08 17:18:27,431 appcfg.py] Checking for updates to the SDK.
INFO     2008-05-08 17:18:27,563 appcfg.py] The SDK is up to date.
WARNING  2008-05-08 17:18:27,563 datastore_file_stub.py] Could not read datastore data from /tmp/dev_appserver.datastore
WARNING  2008-05-08 17:18:27,563 datastore_file_stub.py] Could not read datastore data from /tmp/dev_appserver.datastore.history
INFO     2008-05-08 17:18:27,565 dev_appserver_main.py] Running application holamundo on port 8080: http://localhost:8080

Eso nos indicará que ya tenemos corriendo el webserver en el puerto 8080 que nos permitirá ver como luciría nuestra aplicación en GAE, para ver nuestra aplicación sólo debemos de abrir nuestro navegador y apuntar a: http://localhost:8080

Si todo esta bien debemos de ver una página como ésta:

Hola Mundo

Ahora que ya tenemos un SDK instalado, y sabemos lo básico sobre él, podemos comenzar a experimentar con las funciones incluídas en él.

Espero que éste mini-tutorial les haya sido de utilidad y espero sus comentarios.

AMD planea ofrecer procesadores de 12 núcleos en el 2010

El día de hoy he leído en la revista PCWorld, que AMD ha cambiado su hoja de ruta para liberar nuevos procesadores y ahora los 8 núcleos de nombre clave Barcelona, que deberían aparecer en el mercado el próximo año, han sido reemplazados por procesadores de 12 núcleos de nombre clave "Magny-Cours", que veran el mercado en el primer semestre del 2010.

Sin duda los Phenom X4 (4 núcleos) y X3 (3 núcleos), han visto reducido su impacto en el mercado por haber salido mucho más tarde que los Core 2 Duo y Quad de Intel, y por haber presentado iniciales defectos de fabricación que han demorado su disponibilidad en grandes números. No son malos procesadores pero comparados con los Intel ya no lucen tan superiores en la relación coste/beneficio como solían ser los productos AMD.

Al parecer éste cambio de planes en AMD, responde a la necesidad de reformular la estrategia original, porque al parecer Intel ha conseguido neutralizar al menos temporalmente a AMD en el segmento de procesadores de alto rendimiento, que es justamente donde se hace el mayor beneficio. Hace un par de años los AMD Opteron (64 bits) con doble núcleo eran los procesadores de PC más formidables que existían, aunque su consumo de energía dejaba mucho que desear. Hoy en día sin embargo los Core 2 Duo ofrecen una perfomance similar, a un precio bastante próximo (los Intel son todavía un poco más costosos), pero con un cosumo de energía mucho menor, que significa PC más baratos.

De cumplirse el plan anunciado por AMD, en el 2010 sería posible que un servidor cuente con 24 núcleos, pues las mainboards que soporten dos procesadores son comunes actualmente, y ésto permitiría la construcción de verdaderos data center integrados en un sólo chasis 1U. Con éste tipo de hardware ¿qué futuro tiene a nivel de servidores Windows 2008 que difícilmente puede sacar provecho a 4 núcleos?, a la luz de lo rápido que evoluciona el hardware y lo lento que se actualiza Windows, a nivel de sevidores en el 2010 el predominio de los sistemas operativos tipo Unix (Linux, OpenSolaris, FreeBSD, etc.) será total.

Yahoo-Microsoft ya parece novela mexicana

Al más puro estilo de una telenovela que ha sido tan exitosa que se alarga sin pies ni cabeza sólo para mantener el raiting, así parece que la telenovela "Yahoo-Microsoft, los frikis también lloran", esta por entrar en un nuevo capítulo. El día de hoy he leído en TechCrunch, que el directorio de Yahoo! ha autorizado al presidente del directorio Roy Bostock en lugar de su CEO Jerry Yang, para reiniciar las negociaciones de fusión/compra con Microsoft. De hecho éste rumos hizo que las acciones de Yahoo! subieran un 5.5% hoy día.

Al parecer Yang, se ha ganado la enemistad de muchos de los accionistas por no aceptar y organizar una resistencia con todos los medios a su alcance a la propuesta de compra de Microsft de $33 por acción. Y por el contrario mantener un precio de $37-$38 por acción como contra propuesta a Microsoft. Al parecer cuando Ballmer hizo público que no continuarían con la oferta de compra de Yahoo!, muchos accionistas se sintieron inconformes y fue Bostock en lugar de Jerry Yang, quién primero comentara sobre el asunto de manera oficial por la compañía.

Dadas así las cosas no me sorprendería que Yang sea removido de su cargo y Yahoo! sea ofrecida por sus directores en bandeja de plata a Microsoft. Todo parece indicar que apoyaron a Yang, mientras pensaron que la oferta de Microsoft subiría, pero al ver que Microsoft abandonó, ahora ya no apoyan a Yang.

Yo se que a un accionista no le interesa el espíritu de una empresa y que sólo le importa hacer dinero, pero creo que hay un punto en el cuál, se puede perder dinero si es que no se tienen principios y desde mi punto de vista ésto es lo que le puede pasar a Yahoo!.

Si el directorio consigue una fusión/venta con Microsoft, deshaciendose de Jerry Yang, sólo haran dos cosas: convertiran a Yang en un "martir" de la era digital, y se enemistarán con la base de usuarios de la empresa. De tal forma que cualquier cosa que realice Yang fuera de Yahoo!, definitivamente contará con la simpatía de los usuarios de Yahoo!. Ésta no sería tampoco la primera vez que una compañía tecnológica remueve a su CEO-fundador, en pro de una administración menos apacionada y más enfocada a los resultados, algo similar le ocurrio a Steve Jobs en Apple en 1988, para luego volver en 1997 y llevarla del olvido al liderazgo del mercado.

Y pensar que yo creía que ésta telenovela ya estaba por terminar, al parecer tendremos varias semanas más de intrigas, serruchadas de piso y negociaciones bajo la mesa, todo al más puro estilo de una telenovela mexicana.

Me llego mi invitación para Google Apps Engine

Estoy contento me ha llegado mi invitación para probar el último juguete introducido por Google, el hasta ahora poco popular Apps Engine, ya he hablado sobre el en un post anterior en éste blog el día de su lanzamiento. Cuando el proyecto fue hecho público se dieron 10,000 invitaciones, ese día no pude lograr un cupo, pero al parecer he sido considerado posteriormente y me han enviado mi invitación, ya he comenzado a darle un vistazo al SDK del Apps Engine, y aunque por el momento todo debe programarce en Python, la cosa no esta tan complicada, aunque valgan verdades las funciones ofrecidas en Apps Engine son mínimas, tanto que a pesar de que ya éste proyecto va para un mes apenas tendra un par de cientos de aplicaciones disponibles en la galería de proyectos, lo cuál puede considerarce decepcionante. Y hasta ha habido quien habiendo recibido la invitación no se le ocurrio mejor idea que hacer una aplicación para solicitar a Google que implemente PHP en el SDK para Apps Engine, dicho sea de paso ya firme la solicitud.

Éstos días he estado realmente ocupado, y no he podido más que leer el breve tutorial que explica como usar el SDK, pero por lo que he leído me parece que lo único que se ofrece es un soporte CGI básico, la mayor parte de la interacción debe ser implementada en JavaScript porque lo que se ofrce en Python básicamente son un sistema de template básico, funciones para autenticar contra una cuenta de Gmail, envio de e-mails, extracción de información de URLs y almacenamiento usando GQL (Google Query Language), una personalización de SQL para el datastore de que ofrece Google en Apps Engine.

De las aplicaciones que he podido ver, la única que me pareció bastante aceptable fue Twig, que pretende ser una alternativa a Twitter, aunque está todavía en una fase bastante alfa. Las demás no son más que experimentos, y muchas de ellas aunque aparecen en el directorio por alguna razón ya no estan activas, supongo que Google debe haberlas retirado por actividades relacionadas con el spam, aunque ésto es una suposición mia.

Hasta ahora no se que aplicación desarrollar, ya he visto varios blogs y forums en la galleria de Apps Engine, probablemente haga algo parecido, ya les estaré comentando por cuál proyecto me decidí y les pasaré el URL para que lo visiten y comenten sobre el mismo.

El drama Yahoo-Microsoft va llegando a su fin

Luego de más de 13 semanas de enfrentamiento frontal, ventilado publicamente, Microsoft finalmente ha decidido retirar su oferta de compra de Yahoo!, ésto ha tenido el inmediato efecto de desplomar las acciones de Yahoo! que habían subido debido a la expectavida de la toma a la fuerza por parte de Microsoft y el consecuento beneficio de ver incrementado el valor de las acciones. Finalmente los especuladores se fueron y el precio de las acciones de Yahoo! han caido como consecuencia de ello.

Pero las acciones de Yahoo!, no han sido lo único que ha perdido valor, el mismo CEO de Microsoft, Steve Ballmer, ha visto su credibilidad menoscabada luego de haber anunciado a los cuatro vientos que de una forma o de otra Yahoo! sería una compañía del grupo Microsoft, definitivamente si no fuera tan amigo de Bill Gates y Paul Allen, los dos fundadores de Microsoft, definitivamente su cabeza habría rodado luego de éste papelon.

Los que han salido ganando de todo éste drama, han sido Google por un lado que ha consolidado su papel como el principal broker de la publicidad on-line y Time Warener-AOL que ahora ha conseguido llamar la atención pública luego de haber estado relagado a segundo plano por muchos años.

Definitivamente Yahoo!,  puedo resistir a la oferta hostil de compra por parte de Microsoft, la pregunata que aún queda en el aire es si Yahoo! ha aprendido la lección y comienza ha innovar para no ser víctima otra vez de éste tipo de maniobras, ya que la próxima vez puede no ser Microsoft quien inicie una oferta hostil para comprar la compañía, sino cualquiera de los que ahora Yahoo! considera sus amigos, como Google o AOL. Éstos seguiran siendo tiempos difíciles para su CEO Jerry Yang.