Local blog for Spanish speaking developers in LATAM
Aspectos destacados de la TensorFlow Dev Summit 2018
jueves, 26 de abril de 2018
Originalmente publicado por Sandeep Gupta, Gerente de producto de TensorFlow, en representación del equipo de TensorFlow para el
Blog de TensorFlow
.
El 30 de marzo, realizamos la segunda
TensorFlow Developer Summit
en el Museo de la Historia de la Computación en Mountain View, California. El evento reunió a más de 500 usuarios de TensorFlow en persona y a miles de personas que se sumaron a la transmisión en vivo en los eventos de TensorFlow en todo el mundo. El día estuvo repleto de anuncios de productos nuevos, además de charlas técnicas con el equipo de TensorFlow y conferenciantes invitados. A continuación, se muestran los aspectos destacados del evento:
El aprendizaje automático está resolviendo problemas desafiantes que afectan a todos en todo el mundo. Los problemas cuya resolución antes creíamos imposible o demasiado compleja hoy pueden resolverse con esta tecnología. Con TensorFlow, ya hemos visto grandes avances en muchos campos diferentes. Por ejemplo:
Los astrofísicos están utilizando TensorFlow para analizar grandes volúmenes de datos de la misión Kepler, cuyo objetivo es
descubrir nuevos planetas
.
Los investigadores médicos están usando técnicas de aprendizaje automático con TensorFlow para evaluar en una persona el
riesgo cardiovascular de sufrir un ataque cardíaco o un accidente cerebrovascular
.
Los controladores de tráfico aéreo están utilizando TensorFlow para
prever rutas de vuelo cuando el espacio aéreo está saturado,
a fin de garantizar aterrizajes seguros y eficientes.
Los ingenieros están utilizando TensorFlow para analizar datos de auditorías en la selva tropical con el objetivo de
detectar incursiones de camiones de tala y otras actividades ilegales
.
Los científicos están usando TensorFlow en África para detectar enfermedades en plantas de Cassava con el objetivo de mejorar el rendimiento para los agricultores.
Nos entusiasma ver estas aplicaciones increíbles de TensorFlow y nos comprometemos con el objetivo de lograr que esté disponible para más desarrolladores. Por eso nos complace anunciar nuevas actualizaciones de TensorFlow que ayudarán a mejorar la experiencia de los desarrolladores.
Estamos simplificando el uso de TensorFlow.
Los investigadores y desarrolladores desean una forma más sencilla de usar TensorFlow. Integraremos un modelo de programación más intuitivo para desarrolladores de Python llamado
eager execution
, que elimina la distinción entre la construcción y la ejecución de gráficos de cálculo. Puedes realizar desarrollos con eager execution y luego usar el mismo código, a fin de generar el gráfico equivalente para la preparación a escala con la API de alto nivel Estimator. También anunciaremos un nuevo método para
ejecutar modelos de Estimator
en varios GPU en el mismo equipo. Esto permite que los desarrolladores puedan escalar rápidamente sus modelos con cambios de código mínimos.
A medida que los modelos de aprendizaje automático se vuelven más abundantes y complejos, queremos hacer más sencillos el uso compartido, la reutilización y la depuración de estos para los desarrolladores. A fin de ayudar a los desarrolladores a compartir y reutilizar modelos, anunciamos
TensorFlow Hub
, una biblioteca compilada para fomentar la publicación y el descubrimiento de módulos (piezas independientes del gráfico de TensorFlow) que se pueden volver a utilizar en tareas similares. Los módulos contienen ponderaciones que se han preparado previamente en grandes conjuntos de datos y pueden volver a prepararse en tus aplicaciones. Al reutilizar un módulo, un desarrollador puede preparar un modelo utilizando un conjunto de datos más pequeño, mejorar la generalización o simplemente acelerar la preparación. Para facilitar los modelos de depuración, también lanzaremos un nuevo
complemento de depuración gráfico
interactivo como parte de la herramienta de visualización de TensorBoard que te ayudará a inspeccionar y recorrer los nodos internos de un gráfico de cómputo en tiempo real.
El entrenamiento del modelo es solo una parte del proceso de aprendizaje automático, y los desarrolladores necesitan una solución que funcione de manera integral para compilar sistemas de aprendizaje automático reales. Con este propósito, anunciaremos el mapa de ruta para TensorFlow Extended (TFX) junto con el lanzamiento de TensorFlow Model Analysis, una biblioteca de código abierto que combina la solidez de TensorFlow y Apache Beam para computar y visualizar métricas de evaluación. Los componentes de TFX que se han lanzado hasta el momento (como
TensorFlow Model Analysis
,
TensorFlow Transform
,
Estimators
y
TensorFlow Serving
) se integran perfectamente y permiten a los desarrolladores preparar datos, preparar, validar e implementar modelos de TensorFlow en producción.
TensorFlow está disponible en más lenguajes y plataformas
Además de facilitar el uso de TensorFlow, estamos anunciando que los desarrolladores pueden usar TensorFlow en nuevos lenguajes.
TensorFlow.js
es un nuevo marco de trabajo de aprendizaje automático para desarrolladores de JavaScript. El aprendizaje automático en el navegador a través de TensorFlow.js abre nuevas y fantásticas posibilidades. Esto incluye aprendizaje automático interactivo y compatibilidad ante situaciones en las que todos los datos permanecen del lado del cliente. Se puede utilizar para compilar y preparar módulos por completo en el navegador, e importar modelos TensorFlow y Keras entrenados sin conexión para inferencia con aceleración WebGL. El juego
Emoji Scavenger Hunt
es un ejemplo divertido de una aplicación compilada con TensorFlow.js.
También tenemos novedades emocionantes para programadores de Swift:
TensorFlow for Swift
será de código abierto desde abril. TensorFlow for Swift no es tu vinculación de lenguaje típica para TensorFlow. Integra compatibilidad con lenguajes y compiladores de primera clase, lo que proporciona toda la potencia de los gráficos con la usabilidad de eager execution. El proyecto aún se encuentra en desarrollo y pronto anunciaremos más actualizaciones.
También compartimos las últimas actualizaciones de
TensorFlow Lite
, la solución multiplataforma ligera de TensorFlow para la implementación de modelos de aprendizaje automático preparados en dispositivos móviles y otros dispositivos de punta. Además de la compatibilidad existente con Android e iOS, anunciaremos la compatibilidad con Raspberry Pi, más compatibilidad con operaciones y modelos (se incluyen operaciones personalizadas), y describiremos la forma en que los desarrolladores pueden usar TensorFlow Lite fácilmente en sus propias aplicaciones. El intérprete principal de TensorFlow Lite actualmente ocupa solo 75 KB (frente a 1,1 MB de TensorFlow) y estamos observando aumentos de velocidad que llegan hasta 3 veces cuando se ejecutan modelos de clasificación de imágenes cuantificados en TensorFlow Lite, en comparación con TensorFlow.
Para la compatibilidad con elementos de hardware, TensorFlow ahora ofrece
integración con TensorRT de NVIDIA
. TensorRT es una biblioteca que optimiza los modelos de aprendizaje profundo para inferencia; también crea un tiempo de ejecución para la implementación en GPU en entornos de producción. Aporta algunas optimizaciones a TensorFlow y selecciona automáticamente kernels específicos de plataformas para maximizar el rendimiento y minimizar la latencia durante la inferencia en GPU.
Para los usuarios que usan TensorFlow en CPU, nuestra asociación con Intel ha permitido la
integración con una biblioteca Intel MKL-DNN
de código abierto altamente optimizada para el aprendizaje profundo. Al utilizar Intel MKL-DNN, observamos una aceleración de la inferencia de hasta 3 veces en varias plataformas de CPU Intel.
La lista de plataformas en las que funciona TensorFlow se amplió e incluye Cloud TPU, que se
lanzaron en versión beta
el mes pasado. El equipo de Google Cloud TPU ya logró un fuerte incremento de 1,6 veces en el rendimiento de ResNet-50 desde su lanzamiento. Estas mejoras estarán disponibles próximamente para los usuarios de TensorFlow con la versión 1.8.
Disponibilidad de nuevas aplicaciones y dominios usando TensorFlow
Muchos problemas de análisis de datos se resuelven usando métodos estadísticos o probabilísticos. Además de los modelos de aprendizaje profundo y redes neuronales, TensorFlow ahora ofrece métodos de vanguardia para análisis bayesiano a través de la
TensorFlow Probability API
. Esta biblioteca contiene componentes fundamentales, como distribuciones de probabilidad, métodos de ejemplo y nuevas métricas y pérdidas. También aumentó la compatibilidad de muchos otros métodos clásicos de aprendizaje automático. A modo de ejemplo, los árboles de decisión optimizados se pueden preparar e implementar fácilmente usando
clases prediseñadas de alto nivel
.
El aprendizaje automático y TensorFlow ya han ayudado a resolver problemas desafiantes en muchos campos diferentes. Otra área en la que observamos que TensorFlow tiene un gran impacto es la genómica; por ello, lanzaremos
Nucleus
, una biblioteca destinada a la lectura, escritura y filtración de formatos de archivo comunes en genómica para la aplicación en TensorFlow. Junto con
DeepVariant
, una herramienta de código abierto basada en TensorFlow para el descubrimiento de variantes del genoma, esto ayudará a ampliar la investigación y los avances en genómica.
Expansión de la participación y los recursos comunitarios
Estas actualizaciones de TensorFlow apuntan a beneficiar y expandir la comunidad de usuarios y colaboradores, los miles de personas responsables de que TensorFlow sea uno de los marcos de trabajo de aprendizaje automático más populares del mundo. Para que continúes participando en la comunidad y estés al tanto de las novedades de TensorFlow, lanzamos el nuevo
blog oficial de TensorFlow
y el
canal de YouTube TensorFlow
. También haremos más sencilla la colaboración para nuestra comunidad lanzando
nuevas listas de distribución
y
grupos de interés especiales
diseñados para respaldar el trabajo de código abierto en proyectos específicos. Para saber cómo formar parte de la comunidad, visita la página de la
comunidad de TensorFlow
y, como siempre, puedes seguir a TensorFlow en
Twitter
para recibir novedades.
Agradecemos a todos los que ayudaron a convertir a TensorFlow en un marco de trabajo de aprendizaje automático exitoso en los últimos dos años. Gracias por seguirnos de manera presencial y remota. Recuerda usar #MadeWithTensorFlow para compartir tus soluciones a problemas impactantes y desafiantes con el aprendizaje automático y TensorFlow.
Cómo obtener la foto de portada de G+ desde Python utilizando APIs y OAuth2 de Google
viernes, 11 de abril de 2014
By
Nick Bortolotti
Hoy vamos a abordar el primero de los pasos en la integración y manipulación de una Google API. Para esta actividad nos vamos a poner un desafío. Nuestro desafío consiste en integrar una Google API utilizando OAuth2, elegiremos G+ y finalmente intentamos obtener el cover de un perfil social. Vayamos directamente al código.
Lo primero que vamos a realizar es configurar el entorno de la solución. Vamos utilizar Eclipse con Pydev. Para realizar la interacción con la API de Google utilizaremos algunos componentes que son fundamentales para esta actividad como muestra la Fig.1. (apiclient, httplib2,
oauth2client, uritemplate)
Fig. 1 . Estructura básica del ejemplo planteado como desafio
Para obtener la cover foto de un perfil en G+ la Fig2. muestra como ejemplo la utilización de Jinja2 en donde insertaremos el contenido obtenido de la API y mediante la llamada a service.people()get(userID=’me’)execute(http=http).
Fig. 2. Ejemplo para obtener los datos de la API e insertarlos en el html utilizando jinja2
La Fig.3 muestra la plantilla jinja2 donde vinculamos los datos obtenidos desde la API y los visualizamos en nuestra resolución del desafío.
Fig. 3. Plantilla jinja para mostrar la información obtenida desde la API.
Finalmente como muestra la Fig. 4 tenemos la opción para autorizarnos a la G+ API, y la Fig 5 muestra la solicitud de permisos correspondientes al contexto requerido.
Fig. 4. Presentación de la opción para conceder permisos en la aplciación.
Fig. 5. Solicitud de permisos a la API
La Fig. 6 muestra el resultado final de la autorización y ya podemos utilizar el vínculo a nuestra solución final expuesta en este articulo, donde conectaremos con el perfil de G+ para obtener la cover foto.
Fig. 6. Autorización concedida para operar.
La Fig.7 muestra finalmente el resultado de nuestro desafío en donde se obtienen algunos datos del perfil y la cover foto correspondiente.
Fig. 7. Resolución del desafío mostrando la cover foto del perfil de G+
Pueden ver el código principal de este desafío en este
link
Referencias:
https://developers.google.com/accounts/docs/OAuth2
https://developers.google.com/appengine/docs/python/
https://developers.google.com/+/api/
Facilitando el desarrollo en App Engine mediante webapp2
miércoles, 19 de marzo de 2014
By
Nick Bortoloti
Actualmente existen gran cantidad de variantes involucradas en el desarrollo de soluciones en Google Cloud Platform, como también opciones de lenguajes y frameworks.
Hoy vamos a utilizar el lenguaje de desarrollo Python (versión 2.7) y, para simplificar, el desarrollo el framework webapp2, integrado en el SDK de App Engine.
Nuestra desafío será construir en minutos una solución simple que maneje formularios web que podamos validar de forma local y sea desplegable en la nube con un solo click.
Podemos utilizar diversos entornos de desarrollo según las preferencias del desarrollador, además es requerido el
SDK para Python de App Engine.
(utilice el indicado según la plataforma escogida)
Para cumplir con nuestro objetivo necesitamos básicamente dos archivos:
·
app.yaml
·
iniciando.py
Vamos a crear la configuración básica de la aplicación mediante el archivo app.yaml
Fig. 1 - Estructura de la aplicación
Como muestra la Fig. 2 la estructura de la aplicación propone la configuración básica por medio de los atributos: application, version, runtime, api_version y threadsafe. Además, propone un handler con el script iniciando.application.
Fig. 2 Archivo de configuración app.yaml
Antes de construir las clases que representen el formulario web y su mecanismo de interacción, vamos a ver en la Fig. 3 la clase Principal. Esta clase propone un handler que muestra cómo podemos obtener el usuario actual autenticado y mostrar algún mensaje mediante webapp2.
Fig. 3 Clase Principal que muestra ejemplos de interacción básicos con webapp2
Es momento de crear las clases con el objetivo de resolver el desafío planteado.
Como pueden observar en la Fig. 4 utilizamos imports para detectar desde el
appengine.api
el usuario autenticado, además incluimos el framework
webapp2
y el
cgi
.
Fig. 4 - Imports y variables para resolución del desafío planteado
Además tenemos una variable
pagina
que propone código html genérico que vamos a cargar en nuestra solución.
En la siguiente Fig. 5 se puede observar el desarrollo de las clases:
·
Home: esta clase realiza la carga del HTML ubicado en la variable
pagina
.
·
Registro: esta clase, obtiene el usuario autenticado, si esto es correcto realiza la operación correspondiente al formulario web trabajado.
En otro caso lleva a la acción de autenticación.
Fig. 5 Clases principales para el desafío planteado.
Finalmente se realiza la operación de carga por medio de webapp2, como muestra la Fig. 6.
Fig. 6 - Representación y carga de las clases Home y Registro.
Hemos generado una simple solución que utiliza formularios web pero aún nos quedas mas desafíos cómo persistir información e implementar plantillas...Estén atentos a las siguientes entregas.
Referencias:
·
Código de la
aplicación
open source Apache 2.0
·
https://developers.google.com/appengine/docs/python/gettingstartedpython27/introduction
·
http://webapp-improved.appspot.com/
·
https://developers.google.com/appengine/docs/python/
Labels
.app
.dev
.txt
#AMP
#CPU
#DeveloperStudentClubs
#DevFest
#DragonBall
#DSC
#Forsety
#ForsetySecurity
#freeandopen
#GCP
#Google
#GoogleCloud
#GoogleCloudPlatform
#GoogleLaunchpad
#iio2009
#Kubernetes
#MaterialDesign
#OneCommunity
#Security
#TensorFlow
#UPGlobal
#UpLatam
#WithGoogle
+page
10 YEARS
2013
2019
64 bits
A/B Testing
AA
Accelerator
Action on Goolge
actionbar
Actions
Actions Console
AdMob
Ads
adwords
adwords api
AI
AIY
ajax
alarmmanager
ALFA
almacenamiento
alojamiento de proyectos en google code
AMP
AMP Conf
AMP Project
amp-date-picker
amphtml
Analytics
Andorid
android
Android (operating System)
Android 3.1
android 3.3
android 4.2
android 9
Android 9 Pie
Android App Bundle
android design
Android Dev Summit
Android Developers
android Jetpack
Android P
Android SDK
Android Studio
Android Things
Android Wear
AndroidDevStory
androititlan
angelina jolie
Annotation
Announcements
anuncios
API
API Analytics YouTube
Apigee
APIs
Aplicaciones
aplicaciones chrome
app
app engine
App Indexing
app invites
App Server
applications
AppQuality
apps
Apps Script
AR
ARCore
arte
ATLAS
AWP
backend
Base64
batch
Bava
Betatesting
Better Ads Standars
bigdata
BigQuery
Biometrics
blink
bootcamp
BOT
BQ
Business
búsqueda ajax
by Google
byCases
byCommunity
byDevelopers
byGoogle
C++
CALENDAR
Cardboard
case
caso de éxito
Casos de éxito
casos destacados
CCOSS
Century Fox
chat
chrome
chrome web store
chromebook
chromecast
chromium
Cinéfilos
cloud
Cloud Anchors
CLOUD endpoints
Cloud Firestore
Cloud Functions
Cloud IoT Core
Cloud Next
Cloud Scheduler
Cloud services
cloud test lab
Cloud Text-to-Speech
Cloud Translation
CMD en vivo
coconut
code
code-in
code.org
CodeLabs
código
código abierto
Colab
colombia
Communities
Comunidades
concurso google
conference
contenedores
convocatoria
Coordinate
crashlytics
CRE
crear aplicaciones ajax
creatividad
Crowdsource
CSS
cws
daniela robles
dart
dart sdk
dartium
dartlang
Dataset
DCL
denis labelle
desarrolladores
Desarrolladores Google
desarrolladores LatAm
Desarrollar
Design
Design Sprint
Destacados
dev
Dev.f
DevArt
DevBus
DevBusLatAm
Developer Bus
Developer Summit
DeveloperConsole
developers
DevFest
devoxx
dialogflow
diseño UX
Distribuir
DNS
DOM
domain
DonkeyCar
doubleclick
Drive SDK
Drivers
ecommerce
ecosistema
elections
elizalde
Emoticons
emprendedores
empresas
engagement
english
Enhanced Campaigns
enterprise
eventos
Events
evolución de aplicaciones
Excel
ExpertosDicen
Faas
Family
FanBridge
FCM
FCP
Featured
fido
find people
Fintech
firebase
Firebase Cloud Messaging
firebase summit
flu trends
Flutter
Flutter 1.0
flutter 1.7
flutter developers
Flutter Live
FlutterLive
FoundersLab
Freebase
Fuction
Fuctions
Full-Stack
functional programming
G Suite Dev Show
G+
g+ goto gal
G+GotoGal
GAE
game
games
GCloud
gcm
GCP
GCS
GDA
GDE
GDG
GDH
GDL
GDLevent
GDS
Get Inspired
get.app
GitHub
GLP
gmail
golang
GOMO
Google
Google Accelerator
Google AdMob SDK
Google AdWords
Google Analytics
Google APIS
Google App Engine
Google Apps
Google Apps Script
Google Art Project
Google Assistant
google calendar
google cast
Google Charts
Google Chrome
Google Cloud
Google Cloud Console
Google Cloud Messaging
Google Cloud Next
Google Cloud Platform
Google Cloud Platform Newsletter
google cloud platforn
Google Cloud Storage
google code-in
Google Compute Engine
Google Dataset
Google Developer Groups
google developers
Google Developers Academy
google developers expert
Google Developers Hackademy
google dns
Google Drawings
Google Drive
Google Earth
Google for games
Google Forms
google geo
Google Home
google i/o
google i/o extended
google io
Google Keep
Google Kubernetes Engine
Google Launchapad
Google Launchpad
Google Maps
google maps coordinate
Google Maps Platform
Google Mexico
Google Nose
google now
Google Person Finder
google places api
Google Play
Google Play Books
Google Play Developer API
google play games
Google Play Movies
Google Play Protect
Google Play Services
Google Plus
Google Science Fair
google search
Google Sheets
google sign in
Google Top Geek
Google+
Google+ Communities
Google+ Hangouts
google+ sign-in
GoogleAPI
googlecloud storage
GoogleCloudPlatform
googledevs
GooglePlay
Googleplex
Goolge Lunchpad
GTG
Hackademy
hackers
Haiko
Haití
hangouts
Hangouts Remote Desktop
hardcode
Heello
honeycomb
HTML
HTML5
HTTPS
I/O
IA
IAM
IETF
IFAI
in app purchases
in-app
ingles
Ingress
instagram
integración de soluciones
interactive post
Interesante
International
International Women’s Day
IO
io15
io18
io19
iOS
IoT
istio
IU
IVR
J2EE
java
JavaScript
jelly bean
JS
JSON
Juegos
juegos html5
Kit ML
Knative
kotlin
kUBERNATES
Kubernetes
LATAM
latamRegionSur
Launchpad
Launchpad Studio
Lenovo Mirage Solo
lightbox
linux
lucero galindo
machine learning
Made with Code
Mapdata
Mapeo
maps
Maps Ad Unit
Maps API
Maps Engine
Market
Marketing
Marshmallow
MATERIAL DESIG
Material Design
mejores apps 2013
México
michelle marie
MIT
MIT Global Start-up Labs
MIT-AITI
ML
ML Kit
mobile
monetizar
mongoDB
MOOC
Motorola
Mountain View
móvil
MQTT
mr.white
mTLS
natalie villalobos
Navigation
NBA JAM
NES
Next Big Sound
Next Level
nfc
Niantic
Nik
NINTENDO
node.js
NoSQL
nube
OAuth2
Objective-C
OClock
open source
OPenApi
OS
OSS
Paas
PageSpeed
PagesSpeed
parallel18
patrones
patters
performance
permisos
Pipeline API
Pixability
pixel
Píxel
play
Play Console
Playtime
Podcast
pollito pio
Polymer
por lote
Posse
Prediction API
primer
Producto
programación
Propositos
Protocol Buffers
proyecto 20%
Push API
PYMES
python
Q
Q4
quickoffice
Rasberry Pi Zero WH
Raspberry Pi
Realtime
Reflectly
register
Release
Resources
robots.txt
Safe
SDK
Search
Security
seedbank
seguridad
SEO
servidores
Showyou
sign-in
SNES
SO
social media
Spain
SpLATAM
SQL
SQLite
Start
startup grind
Startup Launch
startup weekend
startup weekend for the planet
startupbus
startups
StayAtHome
story
Street View
subtitles
success
sw
SyScan
tablet
Tablet Optimization Tips
tabletas
takeaction
Tango
tendencias 2013
TensorFlow Developer Summit
testing
TextView
TF JAM
The Garage
The Venture City
tips G+
tips gmail
TLD
TLS
Top Experts
Top Geek
top level domain
TopExpert
topics
traducciones
Transparency Report
triggers
Tubular Labs
twilio
Tyka
TypeScript
UAC
udacity
ui
Umbrales
UNAM
unity
Unity3D
universal search
UX
Vector
VectorDrawable
video juegos
vidIQ
ViewPager
Visual Progress
Voicekit
VPC
VR
VSCode
web
Web hosting
Web móvil
WebAssembly
with google
Wizdeo
WizTracker
Women at Google
Women Techmakers
workmanager
WTM
XKCD
XML
Yifat Cohen
youtube
YouTube Analytics API
YouTube API
YouTube Data API
YouTube One Channel
YouTube Player API
Archive
2023
nov
oct
sept
ago
jun
may
abr
mar
ene
2022
dic
nov
oct
sept
ago
jul
jun
may
abr
mar
feb
ene
2021
dic
nov
oct
sept
ago
jul
jun
may
abr
mar
feb
2020
dic
nov
oct
sept
ago
jul
jun
may
abr
mar
feb
ene
2019
dic
nov
oct
sept
ago
jun
may
abr
mar
feb
ene
2018
dic
nov
oct
sept
ago
jul
jun
may
abr
mar
feb
2017
nov
sept
ago
jul
jun
may
abr
ene
2016
nov
oct
sept
ago
jul
jun
may
abr
mar
feb
ene
2015
dic
nov
oct
sept
ago
jul
jun
may
abr
mar
feb
ene
2014
dic
oct
sept
ago
jul
jun
may
abr
mar
feb
ene
2013
dic
nov
oct
ago
jul
jun
may
abr
mar
feb
ene
2012
dic
nov
oct
sept
ago
jul
2011
nov
oct
may
mar
2010
dic
nov
oct
sept
ago
jul
jun
may
abr
mar
feb
ene
2009
dic
nov
sept
ago
jul
jun
may
abr
mar
feb
ene
2008
oct
sept
ago
jul
jun
may
abr
mar
feb
ene
2007
dic
Feed
Desarrolladores
Eventos y Comunidad
Casos Destacados
Dicen los Expertos
Google Accelerator