Publicado por Tom Greenaway, representante sénior de desarrolladores asociados
El año pasado anunciamos que, a partir de agosto de 2018, Google Play exigirá que en su totalidad las apps y los juegos ...


Publicado por Tom Greenaway, representante sénior de desarrolladores asociados
El año pasado anunciamos que, a partir de agosto de 2018, Google Play exigirá que en su totalidad las apps y los juegos nuevos se orienten a un nivel de API de Android reciente, fijado en el 26 (Android 8.0 Oreo) o uno más alto. Además, este requisito se extenderá a las actualizaciones para las apps existentes a partir de noviembre de 2018.
En cada versión nueva de Android se introducen cambios que aportan mejoras importantes de seguridad y rendimiento, y optimizan la experiencia general del usuario en Android. Actualizar tus juegos para que apunten al último nivel de API garantiza que tus usuarios puedan beneficiarse de esas mejoras y, al mismo tiempo, permite que tus juegos se ejecuten en versiones anteriores de Android.
Los pasos siguientes son simples:
  • Instala el Android 8.0 Oreo SDK (nivel de API 26) a través de Android Studio; para ello, dirígete a Tools > Android > SDK Manager > Android SDK > SDK Platforms.
  • Actualiza tu juego para que se oriente al nivel de API 26 y comprueba si presenta incompatibilidades o problemas lo antes posible. Actualiza las dependencias externas según sea necesario. Podrás obtener más información sobre los cambios incrementales entre versiones de Android aquí.
  • Si estás usando una red, un SDK o un complemento de publicidad compatible con el nivel de API 26, averigua si tus contactos admiten el nivel de API 26. Cuanto antes sepan sobre estos cambios, mejor.
  • Si compilas tu juego con Unity, la asistencia para el nivel de API 26 de destino ya está integrada en Unity 5.6.6 y versiones posteriores. Simplemente, asegúrate de seleccionar el nivel de API más reciente en tus ajustes de configuración de compilación de Android para Unity (Build Settings > Android > Player Settings). En el caso de las versiones 5.6.5 y anteriores de Unity, consulta esta documentación en la que se incluye una solución alternativa para versiones previas, hasta la 4.3.
  • En el caso de los juegos compilados con Unreal, comprueba que en la configuración de tu plataforma Android "Target SDK Version" se fije en 26.
  • Si usas Cocos2D-X, comprueba el nivel de API de destino en el archivo gradle.properties que se genera.
Cambios importantes que debes conocer:
  • Desde el nivel de API 23, hemos requerido la solicitud de permisos en el tiempo de ejecución, lo que ayuda a agilizar el proceso de instalación de la app.
  • Desde el nivel de API 24, las apps ya no pueden vincularse dinámicamente a bibliotecas que no pertenezcan al NDK. Si tu app (se incluyen bibliotecas estáticas de terceros) contiene código nativo, solo debes usar API de NDK públicos.
  • Si tu juego usa notificaciones push de Android, el Google Play Services SDK de tu juego deberá actualizarse a la versión 10.2.1 o a una posterior para que tu juego admita el nivel de API 26.
  • Si tu juego usa BLOBS binarios opacos (OBB), tu debe comprobar si puede acceder al directorio antes de intentar acceder a los archivos OBB. Te recomendamos solicitar permiso de acceso explícitamente usando la Runtime Permissions API, y abordar los casos correctamente cuando no se otorgue el permiso. Además, agrega una entrada en el manifiesto para el acceso al almacenamiento externo:
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    
Siguientes pasos
Recuerda que actualizar el nivel de API de destino es solo el primer paso; asegúrate de que tu juego sea compatible con los cambios de comportamiento entre tu nivel actual de API objetivo y el nivel de API 26. Consulta la orientación adicional sobre los cambios en versiones anteriores de Android para obtener ayuda en tu proceso de migración. Estos cambios en la política son importantes para mejorar el ecosistema de Android y mantenerlo en buenas condiciones para nuestros usuarios, y los tuyos.
¿Cuán útil te resultó esta entrada de blog?


Por Michael Tyka, Artists and Machine Intelligence
El descubrimiento y los primeros pasos en el aprendizaje automático pueden ser abrumadores. Quizá tengas una idea general sobre un proyecto y estés buscando un punto a partir del cual puedas comenzar y aplicar adaptaciones. Quizá estés buscando inspiración y quieras tener una idea de lo que es posible.

Por Michael Tyka, Artists and Machine Intelligence
El descubrimiento y los primeros pasos en el aprendizaje automático pueden ser abrumadores. Quizá tengas una idea general sobre un proyecto y estés buscando un punto a partir del cual puedas comenzar y aplicar adaptaciones. Quizá estés buscando inspiración y quieras tener una idea de lo que es posible.
Hoy lanzamos Seedbank, un espacio para descubrir ejemplos de aprendizaje automático interactivos que puedes ejecutar desde tu navegador, sin configuración. Cada ejemplo es una pequeña semilla que te inspirará para editar, extender y desarrollar ideas y proyectos propios, desde problemas de análisis de datos hasta proyectos de arte.


Recientemente, Google lanzó varios ejemplos de código de aprendizaje automático en forma de bloc de notas de Colab. Colaboratory es el entorno de bloc de notas de Jupyter alojado en Google. Colab te permite ejecutar el código directamente a través del navegador usando una GPU gratis proporcionada por Google, sin configuración.
Entre los ejemplos se incluyen la nueva experiencia de primeros pasos en tensorflow.org, el Curso de fallas del aprendizaje automático, artículos de investigación sobre distill.pub y cada vez más instructivos sobre tensorflow.org, como la traducción automática. En TF Hub también se proporcionan diferentes módulos de aprendizaje automático previamente preparados, listos para aplicarse y generalmente van acompañados de blocs de notas de Colab que ejemplifican su uso y permiten poner manos a la obra de forma sencilla.


Seedbank ahora ofrece un espacio para buscar ejemplos de aprendizaje automático respaldados por Colab. Puedes usar las categorías de nivel superior para limitar tu exploración y buscar palabras claves dentro de los blocs de notas. Cada semilla tiene una vista previa que te permite evaluar rápidamente si deseas seguir explorando. Una vez que hagas clic en el bloc de notas de Colab, te conectarás automáticamente a una GPU y podrás comenzar a trabajar a través del ejemplo o del instructivo. Por ahora, solo estamos realizando un seguimiento de blocs de notas publicados por Google, pero en el futuro podríamos indexar contenido creado por el usuario. Haremos nuestro mayor esfuerzo por actualizar Seedbank con frecuencia, y tú también debes asegurarte de visitar TensorFlow.org para acceder al contenido nuevo.


Sin embargo, lo mejor es que Colab te permite editar blocs de notas, guardar copias en Google Drive y compartir esos derivados con tus amigos o en las redes sociales; todo mientras sigues usando la GPU de Colab para el entrenamiento rápido y la interferencia. También puedes leer datos de Google Drive, lo que acelera la importación de conjuntos de datos grandes. Por supuesto, tenemos ejemplos sobre cómo hacer eso en Seedbank.
¡Feliz exploración! Esperamos que ahora puedas encontrar y plantar las semillas de tus ideas mucho más rápido.
— —
Agradecimientos
Seedbank se compiló con contribuciones de Mike Tyka, Sures Kumar Thoddu Srinivasan, Chris Boudreaux, Simon Doury, Harini Krishnamurthy, Mike Dory, Gabriel Schubiner y Kyle Pedersen, y con el apoyo de Artists & Machine Intelligence y equipos de Colaboratory.




Kubernetes Engine es un excelente espacio para ejecutar tus cargas de trabajo a escala. Sin embargo, para poder usar Kubernetes debes disponer tus aplicaciones en contenedores. Puedes ejecutar la mayoría de las aplicaciones en un contenedor Docker sin demasiada dificultad. Sin embargo, ejecutar esos contenedores eficazmente en producción y simplificar el proceso de compilación es una cuestión aparte. Hay varios aspectos a los que debes estar atento para que tus equipos de seguridad y operaciones estén más tranquilos. En esta entrada encontrarás sugerencias y prácticas recomendadas que te ayudarán a compilar contenedores de forma efectiva.



Kubernetes Engine es un excelente espacio para ejecutar tus cargas de trabajo a escala. Sin embargo, para poder usar Kubernetes debes disponer tus aplicaciones en contenedores. Puedes ejecutar la mayoría de las aplicaciones en un contenedor Docker sin demasiada dificultad. Sin embargo, ejecutar esos contenedores eficazmente en producción y simplificar el proceso de compilación es una cuestión aparte. Hay varios aspectos a los que debes estar atento para que tus equipos de seguridad y operaciones estén más tranquilos. En esta entrada encontrarás sugerencias y prácticas recomendadas que te ayudarán a compilar contenedores de forma efectiva.

1. Empaquetar una sola aplicación por contenedor

Más información

Un contenedor funciona mejor cuando en él se ejecuta una sola aplicación. Esa aplicación debe tener un solo proceso superior. Por ejemplo, no debes ejecutar PHP y MySQL en el mismo contenedor: entre otros inconvenientes, la depuración será más difícil, las señales de Linux no se controlarán correctamente y no podrás escalar horizontalmente los contenedores PHP. Esto te permite vincular el ciclo de vida de la aplicación al del contenedor.
Para el contenedor de la izquierda, se aplica la práctica recomendada. Para el de la derecha no.


2. Controlar correctamente PID 1, el manejo de la señal y los procesos zombis.

Más información

Kubernetes y Docker envían señales Linux a tu aplicación dentro del contenedor para detenerla. Envían esas señales al proceso con el identificador de proceso (PID) 1. Si quieres que tu aplicación se detenga correctamente cuando lo necesites, debes controlar esas señales de forma adecuada.

Sandeep Dinesh, representante de desarrolladores de Google, explica el ciclo de vida completo del cierre de Kubernetes en su artículo Mejores prácticas de Kubernetes: cierre correcto.

3. Optimización para el caché de compilación de Docker

Más información

Docker puede almacenar en caché capas de tus imágenes para acelerar compilaciones futuras. Esta es una característica muy útil, pero introduce algunos comportamientos que debes considerar al escribir tus Dockerfiles. Por ejemplo, debes agregar el código fuente de tu aplicación lo más tarde posible en tu Dockerfile para que la imagen de base y las dependencias de tu aplicación se almacenen en el caché y no se vuelvan a compilar con cada compilación.

Toma este Dockerfile como ejemplo:
FROM python:3.5
COPY my_code/ /src
RUN pip install my_requirements
Debes cambiar las dos últimas líneas:
FROM python:3.5
RUN pip install my_requirements
COPY my_code/ /src
En la nueva versión, el resultado del comando pip se almacenará en caché y no se volverá a ejecutar cada vez que cambie el código fuente.

4. Quitar herramientas innecesarias

Más información

Reducir la superficie de ataque de tu sistema host siempre es una buena idea, y es mucho más fácil hacerlo con contenedores que con los sistemas tradicionales. Quita de tu contenedor todo lo que la aplicación no necesite. O mejor aún, incluye solo tu aplicación en una imagen distroless o scratch. Si es posible, también debes hacer que el sistema de archivos del contenedor sea de solo lectura. Con esto, deberías recibir comentarios excelentes de tu equipo de seguridad durante tu revisión de rendimiento.

5. Compilar la imagen más pequeña posible

Más información

¿A quién le agrada descargar cientos de megabytes de datos inútiles? Procura tener las imágenes más pequeñas posibles. Esto reduce los tiempos de descarga, los tiempos de arranque en frío y el uso del disco. Puedes usar varias estrategias para lograr esto: comienza con una imagen de base mínima, aprovecha las capas comunes entre las imágenes y usa la característica de compilación en varias etapas de Docker.
Proceso de compilación en varias etapas de Docker.

Sandeep Dinesh, representante de desarrolladores de Google, abarca este tema en profundidad en su artículo Prácticas recomendadas de Kubernetes: Cómo y por qué compilar pequeñas imágenes de contenedores.

6. Etiquetar correctamente tus imágenes

Más información

Las etiquetas son los elementos que permiten a los usuarios elegir la versión de tu imagen que quieren usar. Hay dos maneras principales de etiquetar tus imágenes: aplicar control semántico de versiones, o usar el hash de confirmación Git de tu aplicación. Cualquiera sea la opción que elijas, documéntala y establece claramente las expectativas que deberían tener los usuarios de la imagen. Ten cuidado: si bien lo usuarios esperan que algunas etiquetas, como “latest”, pase de una imagen a otra, también esperan que otras etiquetas sean inmutables, aunque técnicamente no lo sean. Por ejemplo, una vez que hayas etiquetado una versión específica de tu imagen, con algo como “1.2.3”, nunca debes mover esa etiqueta.

7. Considerar cuidadosamente si quieres usar una imagen pública

Más información

El uso de imágenes públicas puede ser una excelente alternativa para comenzar a trabajar con un software específico. Sin embargo, usarlas en producción puede suponer varios desafíos, en especial en un entorno con muchas restricciones. Podrías necesitar controlar lo que hay dentro de ellas o no querer depender de un repositorio externo, por ejemplo. Por otro lado, compilar tus propias imágenes para cada software que usas no es algo trivial, en particular porque debes estar al día con las actualizaciones de seguridad del software principal. Evalúa detenidamente las ventajas y desventajas de tu caso de uso específico, y toma decisiones conscientes.

Próximos pasos

Puedes obtener más información sobre estas prácticas recomendadas en Prácticas recomendadas para compilar contenedores, y aprender más sobre nuestras Prácticas recomendadas para Kubernetes. También puedes probar nuestras guías de inicio rápido para Kubernetes Engine y Container Builder.





En 2014, antes de llamarse Sirena, el equipo de Rodati.com tenía una idea que parecía buena: ofrecer un listado con los precios de referencia de todos los autos del mercado, de modo que quienes quisieran comprar coche eligieran la mejor oferta y se contactaran con un concesionario para terminar la transacción. Por cada auto vendido, la empresa ganaba una comisión. Sonaba sencillo y conveniente, pero no funcionó.


El problema fue que no habían pensado en las realidades de las agencias de coches. “Estos negocios no contaban ni con el know-how, ni con las herramientas para trabajar efectivamente a los clientes de la era digital,” explica Ezequiel Sculli, cofundador y Director de Producto & Tecnología. Además, la mayoría de estos negocios no tienen herramientas tecnológicas robustas, y “los vendedores muchas veces no podían trabajar en su escritorio”. Por ejemplo, “tenían que hacer guardias en los showrooms, reemplazar a la recepcionista o inclusive lavar autos, ¡ellos mismos!”

Peor aún, Rodati.com tenía un problema grave a la hora de cerrar negocios. “Enviar usuarios a sus salones de venta era dejarlos en una ruleta donde cualquier resultado era posible”. La startup podía hacer bien todo su trabajo, pero “el 99% de las interacciones entre vendedores y compradores se daban sin que existiera ningún registro.”

En 2015, en un ‘team day’ en Buenos Aires, la empresa comenzó a reflexionar sobre qué podía hacer mejor. La solución fue meterse en los móviles de los vendedores con una herramienta que realmente sea compatible con su rutina y les ofrezca herramientas que realmente les faciliten el trabajo. Así nació Sirena.

Android primero

Hoy, Sirena no es una aplicación orientada a los consumidores finales, sino un B2B que integra todos los canales de contacto entre las agencias de autos y sus clientes. Su fortaleza es que permite monitorear y agilizar todas las interacciones entre clientes y vendedores. Tienen oficinas en Argentina, México y Brasil, y clientes en esos países y Chile, Paraguay y España. Aunque su ‘corazón’ sigue siendo el mercado de vendedores de autos, hoy ofrece soluciones en otras industrias, desde la belleza hasta la venta de seguros.

Su elemento principal es una aplicación móvil, pensada para funcionar en los equipos de los vendedores. Como cualquier estrategia móvil que aspire a tener éxito en Latinoamérica, tener presencia y soporte para Android se convirtió en su prioridad. Y la mejor forma de hacerlo es usando las mejores herramientas. Por eso, Sirena desarrolló su aplicación usando Android Studio, lo que le permite añadir las funcionalidades y características de seguridad más recientes.

Además, todas sus aplicaciones —no solo la de Android, sino todas las demás— implementan los patrones de Material Design. Eso, dice Ezequiel Sculli, “ayudó a simplificar el diseño, hacer un lenguaje visual claro y hacer que la gente entienda nuestra plataforma”.

Además, Sirena han implementado diversas funcionalidades de Firebase para lograr que la app sea más eficiente y segura. Con ellas, miden con precisión cómo está siendo usada la app, y también pueden coordinar las notificaciones en todas las plataformas (algo crucial para los vendedores) sin necesidad de implementar tecnologías más complicadas.

Incluso, Sirena usa herramientas de Google para crear los pequeños detalles que hacen que la experiencia de usuario sea excepcional. “Usamos una librería de Google, libPhoneNumber, que nos permite entender, en otras palabras ‘parsear’, los teléfonos e interpretar a qué localidad, código de área o país pertenecen”. En un entorno en el que buena parte del trabajo se hace por medio de llamadas telefónicas, tener la mayor cantidad de información posible sobre ellas es una ventaja competitiva bastante interesante.

El futuro

Han pasado dos años desde que Sirena decidió cambiar su enfoque, y le llegó la hora de dar un nuevo paso hacia adelante. La startup logró una inversión de tres millones de dólares, con le permitirá ampliar sus equipos de producto y tecnología, relanzará sus aplicaciones y creará nuevos servicios y funcionalidades que buscan simplificar el contacto de los negocios con sus clientes.

Además, Sirena comenzará a utilizar herramientas de machine learning e inteligencia artificial “para facilitar cuestiones relacionadas a la comunicación y gestión de clientes de una manera escalable y automática,” escribió el equipo en su post cuando anunció la noticia.

Como siempre, la empresa cuenta con las herramientas de Google para crear la próxima evolución de su producto. Sculli explica que aprovechan TensorFlow “para algunos proyectos de Machine Learning”, igual que las nuevas funcionalidades de Firebase para usar aplicaciones de AI tanto en el dispositivo como en la nube.


Con estas herramientas, Sirena espera seguir evolucionando sus servicios y hacerlos aún más poderosos. Como dijeron en su blog, “este capital será puesto a trabajar directamente para nuestros clientes. Queremos desarrollar más y mejor tecnología a una velocidad que nunca antes hemos podido alcanzar”.


Publicado por Kacey Fahey, Marketing para desarrolladores, Google Play
Únete a nosotros para extender una felicitación por las apps y los juegos más recientes que ingresaron al programa Android Excellence en Google Play. Este grupo diverso de apps y juegos es reconocido por su alta calidad, la excelente experiencia que ofrece al usuario y su sólido rendimiento técnico. Así estés interesado en aprender meditación o un idioma nuevo, o que busques un juego relacionado con mariposas o con la guerra, nos entusiasma sumergirnos en estas nuevas colecciones.

Publicado por Kacey Fahey, Marketing para desarrolladores, Google Play
Únete a nosotros para extender una felicitación por las apps y los juegos más recientes que ingresaron al programa Android Excellence en Google Play. Este grupo diverso de apps y juegos es reconocido por su alta calidad, la excelente experiencia que ofrece al usuario y su sólido rendimiento técnico. Así estés interesado en aprender meditación o un idioma nuevo, o que busques un juego relacionado con mariposas o con la guerra, nos entusiasma sumergirnos en estas nuevas colecciones.

Imagen de apps ganadoras
Mira algunas de nuestras apps destacadas.
  • Beelinguapp: Aprende un idioma nuevo con esta app exclusiva. Lee y escucha historias con texto simultáneo en el idioma que estés aprendiendo mientras las sigues en tu idioma como referencia.
  • Fortune City: si buscas una app divertida que te ayude a administrar tus finanzas personales, entérate de cómo Fortune City enseña buenos hábitos de creación de presupuestos mientras construyes una metrópolis próspera.
  • ShareTheMeal: alimenta a un niño necesitado con un solo toque en tu teléfono, o crea un equipo con tus amigos para combatir el hambre usando esta app de World Food Programme.

Pon a prueba tus habilidades con estos juegos destacados.
  • Animal Crossing™: Pocket Camp: asume el rol de administrador del campamento mientras recoges elementos para decorar y construir el sitio para acampar de tus sueños. Conoce animales, crea amistades e invita a tus animales favoritos a divertirse contigo.
  • Cash, Inc.: sé el gran jefe de tu imperio empresarial en este juego divertido. Trabaja y asciende para unirte a una comunidad de empresas de elite y conviértete en el magnate más famoso.
  • Shadowgun Legends: salva a la humanidad de un invasor alienígena en una campaña épica que incluye más de 200 misiones en 4 planetas diferentes. En el camino, personaliza tu personaje, forma un equipo con amigos y conviértete en una celebridad del universo Shadowgun.

Consulta la lista completa de apps y juegos de Android Excellence.
Nuevas apps de Android Excellence Nuevos juegos de Android Excellence
Beelinguapp
BTFIT
Fortune City
Letras.mus.br
LingoDeer
Memrise
PicsArt
Pocket Casts
ShareTheMeal
The Mindfulness App
Tokopedia
Trello
VivaReal
Wynk Music
Animal Crossing™: Pocket Camp
Cash, Inc.
Flutter: Starlight
Shadow Fight 3
Shadowgun Legends
War Heroes
World of Warships Blitz

Explora más apps y juegos excelentes en la sección Editors' Choice de Google Play y descubre las mejores prácticas que te ayudarán a compilar apps y juegos de alta calidad.

¿Cuán útil te resultó esta entrada de blog?





A principios de este mes, anunciamos un lanzamiento limitado de amp-date-picker, un selector de fechas interactivo de estilo calendario para entradas en formularios. Con este componente, los usuarios pueden especificar fechas individuales o períodos con una interfaz de calendario que acelera el proceso y lo hace menos propenso a experimentar errores. Después de la gran cantidad de comentarios recibidos de desarrolladores que lo probaron en sus páginas, corregimos algunos errores y agregamos algunas características solicitadas, como la capacidad de activar o desactivar rápidamente la fecha actual. Con estas actualizaciones, el selector de fechas ya está disponible para producción.



datepickerfinal.gif



Consulta el ejemplo en AMP by Example para ver cómo usarlo y lo que puede hacer. Como siempre, envíanos tus comentarios sobre amp-date-picker o brechas en las características de AMP. ¡Queremos escuchar tu opinión!

Publicado por Eric Lindley, gerente de Producto de AMP

¡Ya se lanzó amp-date-picker!



Publicado por Wesley Chun (@wescpy), representante de desarrolladores, G Suite

Si bien la mayoría de chatbots responden a las solicitudes de los usuarios de forma síncrona, hay situaciones en las que los bots no realizan acciones en función de una solicitud explícita del usuario, como ocurre con las alertas o las notificaciones. En el video de DevByte de hoy, te mostraré la manera de enviar mensajes ...


Publicado por Wesley Chun (@wescpy), representante de desarrolladores, G Suite

Si bien la mayoría de chatbots responden a las solicitudes de los usuarios de forma síncrona, hay situaciones en las que los bots no realizan acciones en función de una solicitud explícita del usuario, como ocurre con las alertas o las notificaciones. En el video de DevByte de hoy, te mostraré la manera de enviar mensajes de manera asíncrona a salas o mensajes directos (DM) en Hangouts Chat, la herramienta de comunicación y colaboración grupal de G Suite.

¿Qué imagen proyectas en tu cabeza cuando piensas en un bot en una sala de chat? Quizás un usuario quiera ver los números de las ventas del último trimestre en Europa, o bien buscar el estado del tiempo actual o el próximo horario de una película. Suponiendo que hay un bot para la solicitud en cuestión, un usuario enviará a este un mensaje directo (DM) o lo mencionará precedido por @ desde una sala de chat. Luego, el bot tomará la solicitud (enviada por el servicio de Hangouts Chat), aplicará las acciones necesarias y le enviará una respuesta al usuario en ese “espacio”; la nomenclatura genérica para una sala o un DM.

En nuestro video anterior de DevByte para el marco de trabajo de bots de Hangouts Chat mostramos a los desarrolladores de qué se tratan los bots y el marco de trabajo, y cómo compilar uno de esos tipos de bots en Python y JavaScript. No obstante, debes reconocer que esos bots responden de forma síncrona a la solicitud de un usuario. Esto no es suficiente si los usuarios quieren recibir notificaciones cuando se complete una tarea de ejecución prolongada en segundo plano, cuando falte poco para que llegue un autobús o tren demorado o cuando quede fuera de servicio uno de sus servidores. Debes reconocer que esas alertas pueden provenir de un bot, pero quizá también de una aplicación de supervisión. En el último episodio de G Suite Dev Show, puedes aprender a integrar esta funcionalidad a cualquiera de estos tipos de aplicación.



En el video puedes ver que esas alertas y notificaciones son mensajes “fuera de banda”, lo cual significa que pueden ingresar en cualquier momento. El marco de trabajo del bot de Hangouts Chat proporciona varias alternativas para enviar mensajes asíncronos a una sala o un DM, lo que genéricamente se conoce como “espacio”. La primera es la API de REST basada en HTTP. La otra lo que se conoce como “webhooks entrantes”.

Los bots usan la API de REST para enviar mensajes a un espacio. Debido a que un bot nunca será un usuario humano, se requiere una cuenta de servicio de Google. Una vez que crees una cuenta de servicio para tu bot de Hangouts Chat en la consola para desarrolladores, podrás descargar las credenciales necesarias para comunicarte con la API. A continuación te mostramos un fragmento de Python de ejemplo que usa la API para enviar un mensaje de forma asíncrona a un espacio.
from apiclient import discovery
from httplib2 import Http
from oauth2client.service_account import ServiceAccountCredentials

SCOPES = 'https://www.googleapis.com/auth/chat.bot'
creds = ServiceAccountCredentials.from_json_keyfile_name(
        'svc_acct.json', SCOPES)
CHAT = discovery.build('chat', 'v1', http=creds.authorize(Http()))

room = 'spaces/<ROOM-or-DM>'
message = {'text': 'Hello world!'}
CHAT.spaces().messages().create(parent=room, body=message).execute()

La alternativa a usar la API con las cuentas de servicio es el concepto de webhooks entrantes. Los webhooks representan una alternativa rápida y sencilla de enviar mensajes a cualquier sala o DM sin configurar un bot completo; por ejemplo, a apps de supervisión. Los webhooks también te permiten integrar tus flujos de trabajo personalizados, como cuando se agrega un cliente nuevo al CRM (sistema de administración de relaciones con clientes) corporativo, y también en los casos que se mencionan más arriba. A continuación, te mostramos un fragmento de Python que usa un webhook entrante para comunicarse en un espacio de forma asíncrona.
import requests
import json

URL = 'https://chat.googleapis.com/...&thread_key=T12345'
message = {'text': 'Hello world!'}
requests.post(URL, data = json.dumps(message))

Debido a que los webhooks entrantes son puntos de conexión en los que se realizan publicaciones mediante HTTP POST, puedes incluso usar curl para enviar un mensaje a un espacio de Hangouts Chat desde la línea de comandos:
curl \
    -X POST \
    -H 'Content-Type: application/json' \
    'https://chat.googleapis.com/...&thread_key=T12345' \
    -d '{"text": "Hello!"}'

Para comenzar, repasemos la documentación de Hangouts Chat para desarrolladores; en especial, las páginas específicas cuyos vínculos se proporcionan más arriba. Esperamos que este video, en el que se muestra cómo enviar mensajes al servicio de Hangouts Chat de forma asíncrona, te ayude a llevar tus habilidades de desarrollo de bots al siguiente nivel.


directora de Estrategia de código abierto de Google Cloud ...
directora de Estrategia de código abierto de Google Cloud

Las nubes abiertas hoy son mucho más importantes que antes. Si bien la mayoría de las empresas actualmente usan un proveedor de nube pública único además del entorno en sus instalaciones, las investigaciones muestran que probablemente adoptarían nubes múltiples, públicas y privadas, en los próximos años. De hecho, según un estudio de Rightscale de este año, el 81 por ciento de las empresas con 1000 o más empleados tienen una estrategia de nubes múltiples; y si se tiene en cuenta el SaaS, la mayoría de las organizaciones ya las usan.



Las nubes abiertas permiten que los clientes elijan libremente la combinación de servicios y proveedores que mejor se adapten a sus necesidades con el paso del tiempo. Las nubes abiertas permiten que los clientes organicen su infraestructura de forma eficaz en entornos de nubes híbridas.

Creemos en tres principios para una nube abierta:
  1. “Abierta” hace referencia a la posibilidad de escoger una app y moverla (hacia y desde las instalaciones, nuestra nube u otra nube) en cualquier momento.
  2. El software de código abierto permite acceder a una gran variedad de ideas y a un canal de comunicación constante con los usuarios.
  3. Las API abiertas preservan la capacidad de todos de realizar compilaciones en función del trabajo de otros.

1. “Abierta” hace referencia a la posibilidad de escoger una app y moverla.

El concepto de una nube abierta se basa en la creencia de que estar asociado a una nube específica no debería obstaculizar el logro de nuestros objetivos. Una nube abierta se basa en la idea de que la posibilidad de enviar tus apps a diferentes nubes mientras usas un enfoque común de desarrollo y operaciones te ayudará a cumplir con tu prioridad en cualquier momento, ya sea la de aprovechar al máximo las habilidades ampliamente compartidas entre tus equipos o acelerar rápidamente la innovación. El código abierto es habilita nubes abiertas, ya que en la nube te permite mantener el control de los sitios en los que deseas implementar tus inversiones de TI. Por ejemplo, los clientes están usando Kubernetes para administrar contenedores y TensorFlow para compilar modelos de aprendizaje automático en instalaciones físicas y en varias nubes.

2. El software de código abierto permite acceder a una gran variedad de ideas y a un canal de comunicación constante con los usuarios.

A través del canal de comunicación constante con los usuarios, el software de código abierto (OSS) ofrece mejores prestaciones que otros, es más rápido y requiere un volumen mucho menor de tiempo e inversión por parte de las personas y las empresas que utilizan proyectos de código abierto. Aquí te mostramos algunos ejemplos del compromiso de Google con OSS y los diferentes niveles de trabajo necesarios:
  • El OSS, como Android, tiene una base de código abierta y el desarrollo es responsabilidad exclusiva de una organización.
  • El OSS con cambios propuestos por la comunidad, como TensorFlow, incluye la coordinación entre diferentes empresas e individuos.
  • El OSS con una estrategia propuesta por la comunidad (por ejemplo, la colaboración con Linux Foundation y la comunidad de Kubernetes) incluye el trabajo colaborativo, la toma de decisiones y la aceptación del consenso en relación con el control.
El código abierto es tan importante para Google que lo incluimos dos veces en nuestras filosofías corporativas, y alentamos a los empleados y, de hecho, a todos los desarrolladores a realizar aportes al código abierto.

Al usar BigQuery para analizar datos de GHarchive.org, descubrimos que en 2017, más de 5500 googlers enviaron código a aproximadamente 26 000 repositorios, crearon más de 215 000 solicitudes de incorporación de cambios y participaron en innumerables comunidades a través de unos 450 000 comentarios. Un análisis comparativo de la contribución de Google al código abierto ofrece una posición relativa útil de las empresas líderes en código abierto en función de datos normalizados.

Los googlers son colaboradores activos en proyectos populares que quizá conozcas, entre los que se incluyen Linux, LLVM, Samba y Git.

Google a menudo ofrece proyectos internos con código abierto

Entre los principales proyectos iniciados por Google se incluyen los siguientes:

3. Las API abiertas preservan la capacidad de compilar en función del trabajo de otros.

Las API abiertas preservan la capacidad de todos de realizar compilaciones en función del trabajo de otros y mejorar el software de manera iterativa y colaborativa. Las API abiertas permiten a las empresas y a los desarrolladores individuales cambiar de proveedores de servicios cuando lo deseen. La investigación revisada por pares muestra que las API abiertas aceleran la innovación en toda la industria y en cualquier ecosistema determinado. Las API abiertas dependen del derecho de reutilizar API establecidas mediante la creación de implementaciones independientes y compatibles. Google tiene el compromiso de admitir API abiertas a través de nuestra membresía en la iniciativa de API abiertas, la participación en la especificación de API abiertas, la compatibilidad con gRPC, a través de la compatibilidad de Cloud Bigtable con la HBase API, Cloud Spanner y la compatibilidad de BigQuery con SQL:2011 (con extensiones), y la compatibilidad de Cloud Storage con las API compartidas.

Crea una nube abierta con nosotros

Si crees como nosotros en una nube abierta, nos encantaría que participes. Puedes ayudar usando bibliotecas de código abierto, realizando aportes a ellas y preguntando a tus proveedores de infraestructura y servicios en la nube lo que harán para mantener las cargas de trabajo libres de bloqueos. Creemos que los ecosistemas abiertos crecen más rápido y son más resistentes y adaptables a los cambios. Como tú, apuntamos a esto a largo plazo. (Puedes conocer un poco más nuestras ideas mirando la presentación que hicimos en Next el año pasado).

Cabe mencionar que no todos los productos de Google serán totalmente abiertos en todas las etapas de sus ciclos de vida. Al realizar negocios en general, la apertura es más una mentalidad que un concepto absoluto. Sin embargo, verás que Google Cloud continuará invirtiendo en apertura en todos nuestros productos con el paso del tiempo, contribuirá a proyectos de código abierto y ofrecerá algunos de sus proyectos internos en código abierto.

Si crees que las nubes abiertas ocupan un lugar en la tarea de lograr que este mundo de nubes múltiples sea un lugar en el que todos puedan prosperar, te recomendamos visitar nuestro nuevo sitio web sobre nubes abiertas, en el que todos ofrecemos definiciones más detalladas y ejemplos de los términos, los conceptos y las ideas aquí analizadas: cloud.google.com/opencloud.





A principios de este año, en respuesta a la fuerte demanda de los clientes, anunciamos la expansión de las regiones admitidas para MongoDB Atlas. La base de datos NoSQL de MongoDB es inmensamente popular, y la versión en la nube de MongoDB Atlas lo hace más fácil de administrar en Google Cloud Platform (GCP). Recibimos muy buenos comentarios de los usuarios, por lo que ampliaremos la accesibilidad para dar los primeros pasos con MongoDB Atlas y GCP.

Nos complace anunciar que, a partir de hoy, MongoDB ofrecerá un nivel gratuito de MongoDB Atlas en GCP en tres regiones admitidas, ubicadas estratégicamente en América del Norte, Europa y el Pacífico Asiático, en reconocimiento por su alta base de instalaciones de usuarios.

El nivel gratuito ofrece a los desarrolladores un entorno de pruebas sin costo para MongoDB Atlas en GCP. Puedes probar cualquier carga de trabajo potencial de MongoDB en el nivel gratuito y luego realizar la actualización a un clúster de Atlas pago más amplio una vez que tengas confianza en nuestros productos para la nube y su rendimiento.

Actualmente, estas son las regiones específicas que admite el nivel gratuito de Atlas:
  1. Iowa (us-central1)
  2. Bélgica (europe-west1)
  3. Singapur (asia-southeast1)
Para comenzar, solo necesitarás iniciar sesión en tu consola de MongoDB, seleccionar “Build a New Cluster” y luego “Google Cloud Platform”, y buscar el mensaje “Free Tier Available”. La opción gratuita utiliza instancias M0 de MongoDB. Un clúster M0 es un entorno de pruebas de MongoDB para creación de prototipos y desarrollo temprano con 512 MB de espacio de almacenamiento. También incluye características potentes para empresas, como autenticación siempre activada, encriptación de extremo a extremo, alta disponibilidad y también supervisión. ¡Feliz experimentación!

Contenido relacionado:


Publicado por Jamal Eason, gerente de Producto, Android


A partir de hoy, puedes descargar Android Studio 3.2 Beta. La última versión del IDE oficial de Android, presentada en Google I/O 2018, tiene como objetivo principal presentarte todas las características nuevas lanzadas en Google I/O ...

Publicado por Jamal Eason, gerente de Producto, Android


A partir de hoy, puedes descargar Android Studio 3.2 Beta. La última versión del IDE oficial de Android, presentada en Google I/O 2018, tiene como objetivo principal presentarte todas las características nuevas lanzadas en Google I/O: Android JetPack, Android P Developer Preview y el nuevo formato Android App Bundle. También hay varias características nuevas que se incluyen en Android Studio 3.2 para acelerar el desarrollo de tu app, como las instantáneas de emuladores y el generador de perfiles de energía.

Con el aumento del uso de Android Studio durante los tres años y medio que transcurrieron desde la versión 1.0, también creció nuestra obsesión por la calidad. Seguimos invirtiendo en calidad porque sabemos que millones de desarrolladores de apps dedican casi todo el día a Android Studio y necesitan un conjunto confiable de herramientas. La estabilidad, los tiempos de compilación y otros aspectos vinculados a la calidad serán el foco principal para nuestro próximo lanzamiento una vez que finalicemos Android Studio 3.2. Tampoco queríamos esperar, por lo que elaboramos protecciones para abordar las fugas de memoria y los problemas de rendimiento. También se corrigieron más de 450 errores. Agradecemos sus comentarios permanentes y esperamos que sigan llegando para que podamos concentrarnos en las áreas que más les preocupan en la próxima versión de Android Studio. Si quieren probar las últimas características y acceder a mejoras en la calidad, pueden descargar Android Studio en el canal de versiones beta.

Qué ofrece Android Studio 3.2

La versión beta, basada en la versión Canary de Android Studio 3.2, incluye lo siguiente:
  • Compatibilidad con Android App Bundle: Android App Bundle es un nuevo formato que utiliza Google Play Dynamic Delivery, la cual proporciona un APK más pequeño y optimizado que solo contiene los recursos necesarios para un dispositivo específico. Al no haber cambios en el código, puedes aprovechar el ahorro que en cuanto al tamaño de apps ofrece un Android App Bundle navegando hasta Build Build Bundle/APK o BuildGenerate Signed Bundle/APK.


Realizar compilaciones con Android App Bundle
  • Instantáneas de emuladores: con Android Studio 3.2, pueden crear instantáneas en cualquier estado de un emulador y luego iniciar una en menos de 2 segundos. Pueden configurar previamente un Android Virtual Device (AVD) con las apps, los datos y la configuración que deseen, y luego regresar a las mismas instantáneas de manera repetida. Más información.


Instantáneas de Android Emulator
  • Generador de perfiles de energía: el nuevo generador de perfiles de energía del conjunto de generadores de perfiles de rendimiento puede ayudarlos a comprender el impacto energético de sus apps en un dispositivo Android. Ahora pueden visualizar el consumo de energía estimado de los componentes del sistema e investigar eventos en segundo plano que puedan contribuir al agotamiento de la batería.


Generador de perfiles de energía

A continuación y en el blog de Canary, podrán ver el análisis completo de todas las características principales organizadas por flujo de desarrollo:


Desarrollo

  • Editor de navegación
  • Refactorización de AndroidX
  • Datos de ejemplo
  • Actualización de Material Design
  • Android Slices
  • Edición de CMakeList
  • Asistente de novedades
  • Nuevas verificaciones de Lint
  • Actualización de la plataforma IntelliJ

Compilación
  • Android App Bundle
  • Conversión de D8
  • Optimizador R8
Prueba
  • Instantáneas de Android Emulator
  • Registro de pantalla en Android Emulator
  • Cámara de escena virtual de Android Emulator
  • Asistente de conexión de ADB

Optimización
  • Generador de perfiles de energía
  • Seguimiento del sistema
  • Sesiones del generador de perfiles
  • Grabaciones de CPU automáticas
  • Seguimiento de referencias JNI

Sesiones en Google I/O 2018

Junto al lanzamiento de Android Studio 3.2 en Google I/O 2018, el equipo de Android Studio también presentó una serie de sesiones sobre Android Studio. En los siguientes videos podrán ver en acción las características más recientes, y acceder a consejos y trucos relacionados con el uso de Android Studio:

Descarga y comentarios

Descarguen la última versión de Android Studio 3.2 desde la página de descargas del canal beta. Si usan versiones anteriores de Android Studio, asegúrense de realizar la actualización a Android Studio Beta 1 o a una versión posterior. Si también desean mantener una versión estable de Android Studio, pueden ejecutar la versión estable y versiones beta de Android Studio al mismo tiempo. Más información.

Para usar las características de Android Emulator, asegúrense de ejecutar por lo menos Android Emulator v27.3+, que pueden descargar a través de Android Studio SDK Manager.

Tengan en cuenta que, para asegurarnos de preservar la calidad del producto, algunas de las características que vieron en el canal de Canary, como el editor de navegación, no vienen habilitadas de forma predeterminada. Para activar características del canal de versiones de Canary, diríjanse a File → Settings → Experimental → Editor → Enable Navigation Editor.

Si experimentan un problema o error, no duden en notificarlo. Conéctense con nosotros, el equipo de desarrollo de Android Studio, ‐ en nuestra página de Google+ o en Twitter.


Komercia.co fue al Google Launchpad a darse un golpe de realidad. “Pensábamos que nuestra plataforma era perfecta y estábamos equivocados, nos dimos cuenta de que teníamos muchas cosas por mejorar,” cuenta Gustavo Moreno, CEO de la startup.
Su producto tiene una oferta de valor ambiciosa: permitirle a cualquier empresa o emprendedor comenzar a vender en línea en cinco minutos y solo dando algunos datos básicos. Pero cumplir esa promesa tiene muchas dificultades, y en el Launchpad se dieron cuenta de que debían cambiar bastantes cosas. Mejoraron la tecnología, modificaron la arquitectura del software, potenciaron su estrategia de marketing y ajustaron la usabilidad de su plataforma.
Más allá de eso, el paso por el programa también les permitió mejorar sus procesos internos y hacerse más ágiles a la hora de resolver problemas y desarrollar nuevas herramientas. “Antes nos tomaba mucho tiempo completar alguna tarea o por lo menos planearla. Ahora somos más puntuales y específicos; si realizamos algo es por que se ha planeado y se ha identificado que es importante,” explica Moreno.
Su relación con los clientes también cambió para bien. Ahora, Komercia se preocupa más por entender sus necesidades y problemas reales, y a buscar soluciones que les funcionen.
Komercia comenzó a implementar herramientas de Google en diferentes partes de su producto, lo que les ha traído también muy buenos resultados. “Cambiamos todo nuestro editor de diseño de plantillas, ahora funciona en Firebase. Eso nos ahorró tiempo de desarrollo y nos dio herramientas adicionales que antes no teníamos,” cuenta Moreno.
Hoy, Komercia logró hacer que los usuarios realmente puedan poner en marcha su tienda en tan solo unos minutos. La administración de los productos, los medios de pago y las opciones de envío se hace muy fácilmente desde un poderoso panel de control. Así, los emprendedores pueden pasar menos tiempo manejando las complejidades de su presencia en línea, y dedicar sus esfuerzos en mejorar sus productos y sus negocios.
Ahora bien, para quien no tiene ni idea de comercio electrónico, también hay una serie de artículos que explican las cosas más básicas: cosas como cómo funciona una pasarela de pagos, o tips para mejorar la presentación de las fotos. También hay guías para entender mejor las políticas de tratamiento de datos personales, o para administrar los envíos de una manera eficiente.
Además, ayudan a sus usuarios a usar Google Maps para geolocalizar sus tiendas físicas, e implementaron Google Analytics en sus procesos internos, y también en los de sus clientes. “Aprendimos la importancia de medir todo para poder tomar decisiones acertadas y conocer el comportamiento de nuestros usuarios,” dice el vocero.
Un año después de su paso por Launchpad Start, Komercia sigue creciendo. Su equipo pasó de 4 personas a 9 y de tener 15 tiendas a soportar el funcionamiento de 450 comercios en línea en toda Colombia, aumentando además la tasa de retención de clientes. La empresa ya planea su expansión a México.
Su paso por la aceleradora les permitió “identificar una gran cantidad de oportunidades” y comenzar a crecer en serio. “El cambio después del programa es total”, dice Quintero. “Las personas que conoces son geniales y el conocimiento que se adquiere no tiene precio.”