31 agosto 2015

Android Espresso

Android Espresso es parte del Android Testing Support Library y su propósito es permitirnos automatizar las pruebas de interfaz de usuario. Aquí les dejo algunos recursos para aprender sobre ello...

Estoy preparando un repo en Github con ejemplos: https://github.com/apiconz/espresso-ejemplos



10 agosto 2015

Notas iniciales sobre Go!



Hasta que por fin me pude dar un tiempo para empezar a probar Go. Estoy siguiendo los ejemplos que encontré en la web Go by Example. El repositorio en el que estoy subiendo los ejemplos que voy resolviendo está en Github.

A continuación, les dejo algunas notas:

  • Golang es un lenguaje de programación compilado y estructurado.
  • La extensión de los archivos es ".go"
  • Si queremos ejecutar un archivo .go ejecutamos:
go run helloworld.go
  • Si queremos generar un binario a partir de un archivo .go ejecutamos
go build helloworld.go
  • El binario generado dependerá del sistema operativo en el que se ejecute el comando build, estando hasta ahora disponible para Linux, Windows y MacOS.
  • El paquete principal, desde el que se inicia la ejecución de una aplicación en Go, se llama "main".
  • De forma similar a Java existe una función "main" desde la que parte la ejecución de un archivo .go
  • No cuenta con expresiones ternarias if como existe en java

26 julio 2015

Configurando mi espacio de trabajo para GO

Hace un par de días que asistí al meetup del grupo Golang Lima y me animé a probar este lenguaje de programación. Por esta razón decidí comenzar a escribir una serie de posts con lo que iré aprendiendo. 

Preparar mi ambiente de trabajo para empezar a probar GO, en Linux, no fue tan complicado:

  • Descargué el paquete con los binarios (Linux) desde aquí: https://golang.org/dl/ y lo descomprimí en una ruta de mi preferencia
  • Configuré algunas variables de entorno:
    • export GOROOT=/home/user/go 
    • export GOPATH=$GOROOT 
    • export PATH=$GOPATH/bin:$PATH
  • Descargué SublimeText (ST3) desde aquí: http://www.sublimetext.com/3 y lo instalé siguiendo las instrucciones.
  • Luego, instalé el Package Control para ST3 siguiendo las instrucciones que aparecen aquí: http://wbond.net/sublime_packages/package_control
  • Finalmente, instalé el plugin GoSublime siguiendo las instrucciones que encontramos aquí: https://github.com/DisposaBoy/GoSublime

Con esto ya tengo todo lo necesario para comenzar a programar con GO.

10 diciembre 2014

AndroidStudio - Gradle DSL method not found 'runProguard()'

Estaba elaborando unos ejemplos con mi versión beta de Android Studio hasta que me tocó actualizarme a la versión 1.0 del mismo y me empezó a salir este error:


Tras una breve visita por StackOverflow encontré que "runProguard" ha sido remplazado por "minifyEnabled"




Y con ese cambio solucioné mi problema.

Fuente: StackOverflow

19 septiembre 2014

[Google App Engine] Usando Bitbucket para Push-to-Deploy (traducción)

Traducido de Google Cloud Platform Blog

Algunos meses atrás, extendimos el soporte para realizar Push-to-Deploy con repositorios GitHub. Hoy estamos felices de extender el soporte para Push-to-Deploy con repositorios Bitbucket Git. Conectando tu proyecto AppEngine con tu repositorio Bitbucket, puedes lanzar el despliegue de tus aplicaciones Java, Python o PHP haciendo push a tu branch master en Bitbucket.

Push to Deploy automatiza el proceso de construcción, pruebas y despliegue lanzado por medio de tus comandos de git. Esto hace la distribución de cambios en el código para tu aplicación de forma fácil, segura y rápida. Adicionalmente, a través del manejo de tu despliegue en Google Cloud Platforms te brinda acceso a otras interesantes herramientas devops tales como Log to Source linking.

"Los usuarios de Bitbucket pueden facilmente desplegar sus aplicaciones para Google App Engine." dijo Jens Schumacher, Group Product Manager para Atlassian. "Con Push-to-Deploy, los desarrolladores pueden lanzar un despliegue al hacer push al master branch del repositorio o por combinar un pull request aprobado en Bitbucket".

Vayamos a través de un ejemplo.

Conectando el repositorio


  1. Dirígete al Google Developers Console y crea un proyecto o haz click sobre un proyecto existente que desees sincronizar con Bitbucket.
  2. Haz click sobre Source Code y luego sobre Browse en el panel de navegación izquierdo.

  3. El siguiente paso es enlazar el repositorio de tu proyecto en Bitbuket.

    Si tu proyecto no tiene un repo git o tiene un repo git vacío, llegarás directamente a la página "Source Repository Settings". Haz click en "Connect" debajo del logo de Bitbucket.
    Si tu proyecto no tiene un repo git vacío, verás una pantalla listando el contenido actual del repositorio. Puedes cambiar la configuración del repositorio para conectarlo a Bitbucket (toma en cuenta que esto sobreescribirá el contenido actual del repositorio de tu proyecto). Haz click sobre el ícono de Settings para acceder a la página "Source Repository Settings" mostrada anteriormente y luego haz click sobre "Connect" debajo del logo de Bitbucket.
  4. Serás redirigido a Bitbucket para autenticarte y obtener permisos para tus repositorios Bitbucket. Haz click en "Grant access". Te podría solicitar que ingreses a cuenta de Bitbucket.
  5. Una vez que hayas obtenido acceso, verás una lista de todos los repositorios Bitbucket Git a los que tienes acceso. Escoge el repositorio que desees conectar con tu proyecto.
  6. Lee y acepta y la opción de consentimiento en el cuadro de dialogo y haz click en Connect.
  7. El repositorio Bitbucket ahora aparece en la página Repo Settings
  8. Puedes configurar tu flujo de despliegue siguiendo estas instrucciones
  9. Una vez que tu flujo de despliegue está configurado, cada vez que hagas push a tu master branch del proyecto en Bitbucket usando git push origin master el código fuente será desplegado al App Engine. La página Release también te muestra el estado de los despliegues pasados y del actual.
-Publicado por Rae Wang, Product Manager
-Traducido por Armando Picón

Esta fue una traducción del post original (en inglés): Using Bitbucket for Push-to-Deploy

04 junio 2014

Un vistazo a Google Cloud Platform

Uno de los temas de los que he venido conversando con los chicos últimamente es la plataforma en la nube que se conoce como Google Cloud Platform. Esta plataforma te permite desplegar aplicaciones web, almacenar data y analizarla, construir el backend de aplicaciones mobiles y varias cosas. Lo bueno es que se cuenta con una plataforma escalable y robusta.

Esta plataforma se compone de varios servicios como se muestra en la siguiente gráfica:


Como se puede apreciar contamos con tres grandes categorías Compute, Storage y App Services:

  • App Engine: la PaaS (Plataforma como servicio) de Google, nos permite desplegar aplicaciones web desarrolladas con Python, Java, PHP y Go. También, podemos interactuar con diferentes APIs de los servicios de Google. Se cuenta con un paquete básico gratuito que le viene bien a las startups.
  • Compute Engine: la IaaS (Infraestructura como servicio) de Google, nos permite la creación de máquinas virtuales a partir de imagenes predefinidas o crear con nuestras propias configuraciones. Actualmente, se cuenta con la posibilidad de emplear sistemas operativos como Debian, CentOS, CoreOS, entre otros. Recomendado para quienes requieran un alto nivel de cómputo.
  • Cloud Storage: el servicio de almacenamiento de objetos de Google, cuenta con APIs que permiten el consumo de datos desde otros servicios como App Engine, Compute Engine, etc.
  • Cloud SQL: si requerimos de una base de datos relacional en la nube, este es el servicio que debemos emplear, basado en MySQL; el mantenimiento? se lo dejamos a Google quien nos garantiza una base de datos con una buena performance y de alta disponibilidad.
  • Cloud Datastore: la base de datos NoSQL, libre de esquemas y data relacional, puede crecer de acuerdo a nuestras necesidades, con soporte a transacciones y a consultas tipo SQL.
  • BigQuery: si hablamos de consultas a grandes conjuntos de datos y a un tiempo reducido, sin duda, esto es BigQuery. Escalable y de fácil uso, nos permite explotación de conjuntos de datos que en sistemas normales podrían llevarnos horas.
  • Cloud Endpoints: nos permite construir servicios RESTful para el consumo de aplicaciones mobiles, cuenta con protección contra ataques de denegación de servicios (Denial-of-Service), soporte OAuth 2.0 y más.
  • ...y otros servicios como Prediction API, Translate API y el reciente Cloud DNS.
Si quieres saber quiénes emplean Google Cloud Platform puedes visitar el siguiente enlace.

Hace poco la gente de Google hizo un esfuerzo y preparó este site en Github lleno de ejemplos sobre cómo emplear las diversas APIs y tecnologías.

Finalmente, les comparto una presentación que empleé hace poco para dar un vistazo a lo que la plataforma ofrece:


Otros enlaces útiles:

11 mayo 2014

Taller de Android - FLISOL Lima Este 2014

No hace mucho, el 26 de abril para ser más precisos, tuve oportunidad de dictar un taller sobre Android como parte del evento FLISOL Lima Este 2014 al cual fui invitado como miembro del GDG Open. Les comparto los slides que usé para mi presentación.


Enlace: FLISOL Lima Este 2014