miércoles, 18 de mayo de 2016

Introducción a Azure Logic Apps

Azure Logic Apps es un servicio que forma parte de la oferta PAAS de Microsoft. Este servicio nos permite crear flujos de negocios integrados desde múltiples tipos de "endpoints" previamente ya definidos en la plataforma de Logic Apps, o podemos crear nuestros propios conectores para integrar el flujo con aplicaciones "on premises" u otros recursos en la red. En este post vamos a crear un flujo que nos permita consumir tweets que nos interesan y enviarlos a una dirección de correo electrónico para su consumo posterior.

Creando nuestro primer flujo con Logic Apps

Para crear un nuestro primer flujo en el portal de Azure debes seleccionar la opción de Logic Apps en el menú examinar del portal de Azure.















El siguiente paso es seleccionar la opción agregar  Logic App desde la barra de herramientas como se ve en la siguiente figura.

Luego procedemos llenar los campos que se nos solicitan para poder crear el servicio, a saber nombre único, subscripción, grupo de recursos y plan de servicios. La siguiente figura nos muestra la pantalla descrita.

Después de creado el servicio procedemos a seleccionarlo para editarlo y empezar a diseñar nuestro nuevo flujo - la primera vez que se crea se abre el editor de forma automática.
Una vez en el editor nos aparece el lienzo para crear el flujo y la barra de herramientas para iniciar nuestro proceso de integración. 

Para iniciar nuestro flujo vamos a conectarnos a Twitter y vamos a buscar entradas que cumplan con nuestro criterio de búsqueda. Para iniciar tenemos que conectarnos con una cuenta de Twitter(1). Luego de configurada la figura de entrada, procedemos con el siguiente paso en (2).

Una vez conectados a Twitter procedemos a configurar lo que deseamos buscar, en nuestro caso Azure o Linux.


Ahora procedemos a agregar una condición al flujo, dando clic en el signo (+) del lienzo y eligiendo agregar condición como se ve en la siguiente figura.

El siguiente paso es configurar la condición. Para esto procedemos a agregar la condición en base a las opciones del tweet que tenemos disponibles en el cuadro de configuración. 


Como podemos ver, cada vez que nos ubicamos en las cajas de texto seleccionadas nos aparecen opciones para crear la condición deseada en base al tweet que se está procesando. Esta opción aparece tanto en (1) como en (2). En este caso vamos a buscar que el texto del Tweet tenga la palabra microsoft.
El siguiente paso es agregar una forma para enviar un email utilizando una cuenta de office 365 como se ve en la siguiente figura.


Luego procedemos a conectar nuestra cuenta de Azure. Una vez conectada nuestra cuenta procedemos a configurar el envío del correo en base a los resultados de la búsqueda que efectuamos.


Ejecutar el proceso

El siguiente paso es ejecutar el proceso recién creado. Una vez que se ha guardado el flujo este aparece como habilitado en la página de administración del mismo como se puede ver en la siguiente figura.


El resultado a la hora de ejecutar el flujo aparece en mi inbox de correo electrónico como vemos en la siguiente figura.





lunes, 18 de abril de 2016

Como probar el API REST de Team Foundation Services utilizando Postman

La mayoría de desarrolladores que utilizamos Team Foundation Server o Visual Studio Team Services - anteriormente VSO - conocemos de la existencia del API REST para acceder la plataforma y poder desarrollar tanto aplicaciones como extensiones de la misma. En este post vamos a ver como acceder este API utilizando la herramienta Postman para pruebas de uso.

Que es Postman?

Postman es una herramienta muy simple de utilizar que nos permite hacer solicitudes de tipo REST ( y muchas otras más) sin necesidad de desarrollar código para probar nuestras API´s. Como se puede ver en la siguiente figura, la herramienta esta disponible tanto para Chrome como para OSX, en mi caso he descargado el aplicativo para Mac y haré las solicitudes desde el mismo. El url para descargar el app es https://getpostman.com.





























El API REST de Visual Studio Team Services

El Visual Studio Team Services tiene un API REST que nos permite crear aplicaciones o extensiones que interactúen con la plataforma de Team Foundation tanto "on premises" como "online". El API esta muy bien documentada y se puede acceder en este url

Hacer solicitudes con Postman

Para hacer solicitudes con postman hacia el API de VSTS simplemente debemos escribir el comando y configurar los parámetros requeridos. Por ejemplo, para solicitar la lista de proyectos en una cuenta específica, tenemos que indicar la cuenta que queremos acceder, el usuario y el password con que queremos acceder y si tenemos varias colecciones debemos solicitar la colección deseada. En este caso, yo quiero acceder una cuenta que tiene el nombre de Arc1Lab, en el defaultCollection y con mi usuario y password de VSTS. En la siguiente figura se ve como se debe configurar la solicitud.













Primero debemos escribir el comando a ejecutar, en este caso es https://arc1lab.VisualStudio.com/DefaultCollection/_apis/projects?api-version=2.0, luego configuramos el tipo de autenticación (1 y 2 ) en este caso básica; seguidamente procedemos a escribir el usuario y el password (3 y 4 ), y por último se envía el comando. El resultado de ejecutar el comando expuesto en la figura anterior se puede ver en la siguiente imagen.
Como se puede ver en la imagen anterior, la lista de proyectos se retorna en formato JSON iniciando con la totalidad de proyectos y luego un detalle de cada proyecto.

sábado, 26 de marzo de 2016

Cliente OneDrive para MacOs no me permite ingresar la cuenta de office 365

Este post es un poco diferente pero creo que es importante porque a los que usamos MacOS como sistema operativo principal, nos da visibilidad de un problema que es sencillo de resolver.

El problema

El asunto es muy simple, tengo una cuenta de Office365 y quiero utilizar el cliente de OneDrive para MacOS con esta cuenta pero no puedo...porque?
Bueno, al parecer el cliente por defecto solo acepta cuentas microsoft - hotmail.com o outlook.com - y por tal razón no puedo tener el cliente de OneDrive configurado con la cuenta de Office365.

La solución

Para poder utilizar el cliente de OneDrive con una cuenta de Office 365 debo de ejecutar los siguientes comandos para habilitar esta funcionalidad desde el terminal del sistema operativo.









Que hace el comando default write?
El comando defaults write permite cambiar los valores de usuario a nivel del sistema operativo. En este caso le estamos indicando al sistema operativo que el aplicativo OneDrive-mac tiene una propiedad DefaultToBusinessFRE y que le vamos a cambiar el valor de tipo booleano a verdadero: TRUE.
Luego de esto podemos iniciar el cliente de OneDrive para Mac y proceder a configurar nuestro cliente de Office 365.

lunes, 14 de marzo de 2016

Usando Azure PowerShell 1 - Seleccionando el perfil deseado

Una de las formas más útiles - e interesantes - es trabajar con la plataforma Azure vía PowerShell. Azure Powershell es un conjunto de cmdlets que nos permiten conectarnos con Azure y llevar a cabo tareas tales como iniciar una máquina virtual, apagar una máquina virtual, crear componentes tales como storage, namespaces de un bus de servicios, etc. 
En este post, vamos a ver como conectarnos a Azure con PowerShell y establecer con cual subscripción vamos a trabajar - si tenemos más de una subscripción.

Conectarse a Azure

El primer paso para conectarse a Azure es descargar el archivo de configuración de perfil desde Azure, para esto, ejecutamos el comando Get-AzurePublishSettingsFile.




Este comando va a solicitarnos que ingresemos a Azure y seleccionemos el perfil que deseamos descargar. Primero nos pide el usuario y password que tenemos registrado en Azure.


















Una vez autenticados, procedemos a seleccionar el archivo de subscripción.


















El archivo lo descargamos en el directorio deseado y con un nombre que podamos utilizar fácilmente desde el IDE de PowerShell.









Una vez descargado en el directorio deseado, volvemos al IDE de PowerShell y procedemos a ejecutar el comando Import-AzurePublishSettingsFile con url del archivo que acabamos de descargar como parámetro.






Este comando retorna todas las subscripciones a las que tenemos acceso en la plataforma Azure.


















En mi caso tengo 3 subscripciones en Azure, por lo que tengo que seleccionar cual será la que voy a usar por defecto en esta interacción. En este caso la opción uno es la opción por defecto, y yo deseo trabajar con la opción 3. Para cambiarme de subscripción primero ejecuto el comando Get-AzureSubscription con el pibe indicándole que deseo seleccionar el nombre de la subscripción tal y como se ve en la siguiente figura.









En mi caso, deseo usar la subscripción Ultimate. Ahora procedo a seleccionar la opción (1) como la opción por defecto utilizando el comando Select-AzureSubscription con el parámetro SubscriptionName; luego para verificar si la subscripción desea esta como subscripción por defecto utilizo el comando Get-AzureSubscription con el parámetro -Current tal y como se ve en la siguiente figura.








Como podemos ver en la figura anterior, la subscripción seleccionada tiene le parámetro IsDefault : True.

martes, 18 de agosto de 2015

Acceder el API REST de Visual Studio Online con Power Shell–Parte 1

Visual Studio Online tiene un API REST que se puede acceder desde múltiples fuentes tales como código .NET, o herramientas de pruebas de APIs tales como postman. Sin embargo, los servicios REST también pueden ser invocados desde PowerShell. En este post vamos a iniciar con una serie de artículos respecto a como consumir el API de Visual Studio Online desde PowerShell.

Invoke-RestMethod

En PowerShell tenemos la posibilidad de invocar servicios REST utilizando el método Invoke-RestMethod. Este método recibe como parámetros el url del recurso que queremos acceder, el verbo que vamos a ejecutar, y el encabezado de la invocación del recurso el cual en nuestro caso son los servicios REST disponibles en Visual Studio Online. En este caso vamos a listar todos los proyectos disponibles en una cuenta.

Autenticación en Visual Studio Online y PowerShell

Para autenticarse en Visual Studio Online tenemos que crear una autenticación alterna, la cual nos permite asociar un usuario a nuestra cuenta sin necesidad de utilizar el caracter “@”. Esto se logra a través del perfil del usuario seleccionando la opción “Alternate authentication credentials” tal y como se ve en la siguiente figura.

image

Una vez configurado el usuario, procedemos a crear las variables que almacenan el usuario y el password – en nuestro caso $username y $password. Seguidamente procedemos a formatear el texto a un string base 64. Por último creamos la variable del encabezado de la solicitud y le agregamos las credenciales.

Lo que procede es invocar el servicio enviándole los parámetros recién configurados al método tal y como se ve en la siguiente figura.

image

El resultado al ejecutar el script anterior se puede ver en la siguiente figura, en donde se puede apreciar toda la información de los proyectos que están creados bajo la cuenta de arc1lab.visualstudio.com.

image

Etiquetas de Technorati: ,,

martes, 12 de agosto de 2014

Arquitectura 2014 - Implementando SOA con Azure Service Bus

Los invito al webcast de mañana acerca del Azure Service Bus. En este webcast vamos a presentar como sacarle provecho al service bus en azure, interacción con Java, node.js, relay services y event hub. Además veremos AMQP. Este es el segundo webcast de una serie de 10. El link de registro se los dejo a continuación:

Regístrate en el webcast "Implementando SOA con Azure Service Bus" y aprende a crear middleware. http://bit.ly/1lxLzfd

Etiquetas de Technorati:

jueves, 17 de julio de 2014

Nueva serie de Webcast de arquitectura

Gracias al excelente recibimiento de la serie de webcast de arquitectura producida el año pasado se ha decidido hacer una nueva serie con temas relacionados y que están presentes en los temas a diario que enfrentamos arquitectos y desarrolladores. La nueva serie de webcast será en vivo igual que la anterior y los videos también serán hosteados en Channel9. Esta serie inicia el próximo 6 de agosto y a continuación pueden ver la información y le link de registro para el evento.

image

El link de registro para el evento es el siguiente:

Serie - Arquitectura de Software: Implementando SOA con el Windows Service Bus

Para los que desean información de los links del año anterior los pueden ver en channel 9 en esta dirección.

lunes, 19 de mayo de 2014

Google Charts y Windows Azure 2 - Introducción a los Azure Tables

Continuando con esta serie de posts respecto a la integración de componentes de Azure con el componente Google Charts, vamos a ver de forma rápida que son los objetos Table de Windows Azure. Estos componentes los vamos a utilizar como fuente de datos para pintar nuestros gráficos con Google Charts.

Azure Tables

Las tablas en azure son objetos capaces de almacenar grandes cantidades de datos sin necesidad de definir todos los detalles que se definen cuando se trabaja con una base de datos relacional.

Estas tablas almacenan los datos en colecciones de entidades. Las entidades son como filas de una tabla relacional. Esta entidad tiene una llave primaria y una lista de propiedades. Las propiedades al igual que en .NET y al igual que una columna en una base de datos relacional consiste en un nombre y un valor - es decir un value-pair tipificado. Estas tablas no fuerzan ningún esquema de datos, por lo que pueden existir entidades con formatos diferentes dentro de la misma tabla → similar a MongoDB o RavenDB → si se desea forzar un esquema, debe de hacerse desde el lado del cliente.

Existen una serie de requisitos para ponerle nombre a una tabla, los cuales se detallan a continuación:

  • Los nombres deben de ser únicos dentro de una cuenta
  • Sólo pueden contener caracteres alfanuméricos
  • No pueden iniciar con un número
  • Son “case sensitive”.
  • El tamaño mínimo es de 3 caracteres y el máximo de 63.
  • Algunos nombres están reservados, tales como “tables”.

Las propiedades son también “case sensitive” y pueden tener un máximo de 255 caracteres → siguen las mismas reglas que los identificadores de C#.

Todas las tablas tienen tres propiedades en común con propósitos diferentes:

  • PartitionKey: Las tablas de entidades se organizan por partición. Una partición es un rango de entidades que tienen el mismo valor en esta llave. Esta llave forma la primera parte de la llave primaria de una entidad. Su principal función es soportar “load balancing” entre los nodos de storage.
  • RowKey: Es la segunda parte de la llave primaria. Esta es una llave única para la entidad en una partición dada.
  • Timestamp: Esta propiedad es del tipo DateTime y es mantenida en el servidor para almacenar el momento en que una entidad fue modificada. Se utiliza para permitir concurrencia optimista sobre las tablas.

Node.js y las tablas en Azure

En este post vamos a trabajar con las tablas de Azure utilizando Node.js y Cloud9 como IDE de desarrollo. Inicialmente vamos a crear una tabla y vamos a interactuar con ella ingresando datos, modificándolos y consultándolos. Para iniciar, procedemos creando una tabla.

Para crear una tabla en Azure, necesito una cuenta en Windows Azure para tal propósito → fuera del alcance del post. Una vez creada esta cuenta procedemos a crear la tabla con la que vamos a trabajar utilizando el nombre de la cuenta y la llave generada para dicha cuenta. Esta información se obtiene desde el sitio de Windows Azure tal y como se puede ver en la siguiente figura.

clip_image002

Con esta información ya podemos iniciar con la programación para el acceso al servicio de las tablas de Azure. Como se ve en la siguiente figura, primero cargamos la librería del SDK de Azure, seguidamente en el paso 2 procedemos a ingresar el nombre de la cuenta del storage que vamos a utilizar y el respectivo key para su acceso → recortado en este caso para que quepa en el documento (y cambiado apenas se publique este post :) ). Por último creamos el servicio para acceder las tablas que existen en nuestra cuenta.

clip_image004

El siguiente paso es crear la tabla que vamos a utilizar, la cual en este caso se llamará “IncidentsTable” y en la cual vamos a guardar todos los incidentes generados a través de diferentes dispositivos y los cuales serán graficados utilizando Google Charts.

clip_image006

Creamos la tabla con el método createTableIfNotExists, si la tabla existe o se produce algún error → de nombre por ejemplo → entonces se despliega el error en la consola, en caso contrario se consultan todas las tablas disponibles dentro de la cuenta y las desplegamos.

clip_image008

En este caso yo tengo varias tablas en la cuenta, por lo que se reflejan en la consulta; sin embargo, en el objeto señalado por la flecha, se puede ver la tabla que creamos.

El siguiente paso es agregarle entidades a la tabla. Para esto vamos a usar el código que se muestra en la siguiente figura.

clip_image010

Vamos a insertar la entidad en la tabla ‘IncidentsTable’ utilizando el método insertEntity. En este método definimos el ‘PartitionKey’ y el ‘RowKey’ específico para la entidad → en este caso no vamos a agregar datos referentes al demo porque el registro lo vamos a borrar para demostrar esta funcionalidad. En el paso dos hemos creado una consulta para utilizarla en el paso tres del código, este query consulta todos los elementos que existen en la tabla definida por la variable ‘tableName’ .En el paso tres de la figura anterior también hacemos una consulta para obtener las entidades que existen dentro de la base de datos.

clip_image012

Si queremos borrar la entidad anterior procedemos con el siguiente código; el resultado de la consulta al borrar la entidad debe de ser []; es decir, un arreglo vacío de entidades.

clip_image014

Ahora procedemos a guardar los registros de incidentes que vamos a graficar desde Google Charts. El código final para ingresar las entidades es el siguiente:

clip_image016

Como se ve en la figura anterior, se agregan dos propiedades más a la entidad: IncidentType y Description, ambos del tipo String. Cuanto ejecutamos el código anterior, se despliegan los registros en la tabla hasta ahora insertados.

clip_image018

En el próximo post vamos a “ligar” los registros en nuestras tablas de Azure con una página que contiene el componente de Google Charts.

Etiquetas de Technorati: ,,,

lunes, 12 de mayo de 2014

Google Charts y Windows Azure 1 - Introducción a Google Charts

En el proceso de desarrollo de aplicaciones, los que nos dedicamos a esto pasamos constantemente por proyectos o escenarios donde debemos seleccionar cual es la tecnología que mejor aplica para el problema que queremos desarrollar. En un proyecto en donde me tocó trabajar recientemente, tuve que integrar Azure con Google Charts y luego de la experiencia - muy positiva por cierto - decidí crear una serie de post para mostrar cómo interactuar con los componentes de creación de gráficos de Google. Para iniciar, primero voy a hacer un post relacionado con el tema de Google Charts, después de lo cual voy a crear otros posts para integrarlos con componentes de Windows Azure.  

Qué es Google Charts?

Google Charts es un conjunto de módulos escritos en Javascript que nos permiten graficar de forma sencilla y rápida → y con un excelente desempeño. La librería soporta más de 20 tipos de gráficos y crece día con día. El link donde se encuentra toda la información de esta librería se puede localizar acá.

La librería es muy sencilla de usar solamente hay que manera los conceptos típicos de cualquier suite para creación de gráficos y entender muy bien como se usan las fuentes de datos. Básicamente existen tres componentes que interactúan para que los gráficos se puedan presentar en una página Web. En primer lugar la fuente de datos, seguidamente procedemos con la carga de los datos a una clase js DataTable, desde la cual pintamos los datos en los diferentes charts que vamos a presentar en nuestra página.  La siguiente figura nos resume cómo interactúan estos componentes.

Demostración

Para iniciar vamos a crear un ejemplo muy simple utilizando solamente una pagina web y la librería de charts de google, todo programado en javascript. Como lo hemos hecho en los ejemplos donde usamos javascript, vamos a usar el IDE llamado cloud9 para programar el demo. El primer paso es incluir la librería donde esta contenido el acceso al GoogleChart, este paso se ve en la siguiente figura.

jsHeaderGoogleCharts.png

Ahora, procedemos a crear el código necesario para poder desplegar el gráfico en nuestra página web.

DrawChart GoogleChart post 1.png Como vemos en el código anterior, primero creamos el conjunto de datos que queremos desplegar en el chart. En este caso estamos creando un DataTable estático pero en próximos post lo vamos a integrar a componentes de Windows Azure. El paso dos es mas bien estético, como queremos que se vea el Chart; en este caso vamos a poner un fondo Gris, un título con fuente 18, con tooltip cuando movemos el cursor por el chart, y lo queremos ver en 3D. Por último creamos el gráfico → un pieChart →  y lo pintamos ( en un div llamado ‘chart’).

La siguiente función que debemos crear es la que carga los componentes de la librería para que se puedan utilizar en el código anterior. Es importante destacar que aquí es donde se asocia nuestra función drawChart con el chart que vamos a crear.

LoadGoogleChart.png

Por último creamos el div en la página HTML donde se va a pintar el chart. Nótese que el nombre del div es el del elemento que se obtiene a la hora de instanciar el chart que vamos a apuntar.

DivGoogleChartDemo1.png

Ahora solo nos queda ejecutar la página Web. El resultado de dicha ejecución se puede ver en la siguiente figura.

PrimerChartResultadoFinal.png

En nuestro próximo post, vamos a usar componentes de Windows Azure para obtener los datos de forma dinámica y para poder graficarlos con Google Charts.

 

Etiquetas de Technorati: ,,

lunes, 21 de abril de 2014

Azure Service Bus y node.js–parte 2

En el post anterior nos conectamos al Windows Service Bus utilizando node.js y obtuvimos la lista de queues que están creadas en el namespace. En este post vamos a enviar un mensaje desde node.js y lo vamos a recibir utilizando también node.js.

Envío del mensaje

Para enviar un mensaje, simplemente invocamos el método sendQueueMessage del ServiceBusService y le indicamos hacia que cola poner el mensaje, el mensaje que queremos enviar y ponemos un callback para manejar el error en caso que se de cuando intentamos poner en el mensaje en la cola. la siguiente figura nos muestra como codificar la invocación a este método.

image

Si ejecutamos el código anterior desde el IDE Cloud9 vamos a darnos cuenta que en el output del terminal se nos indica que el mensaje fue enviado de forma exitosa.

image

Si vamos al portal de Azure, podemos darnos cuenta que el mensaje esta recibido en la cola queuereportes tal y como se lo indicamos en el código anterior.

image

Recibir el mensaje

Para recibir el mensaje desde el bus de servicios de Azure, procedemos con la invocación al método receiveQueueMessage de la clase ServiceBusService. Cuando invocamos este método, le enviamos como parámetro la cola desde donde vamos a recibir el mensaje y un callback para recibir y procesar el mensaje – en este caso solo vamos a desplegar el mensaje en la consola de la terminal.

image

El resultado a la hora de ejecutar el código anterior se ve en la siguiente figura, en donde podemos ver que el mensaje fue recibido – además, se imprimen las propiedades del mensaje que por defecto se imprimen en el toString del objeto.

image

Si vamos al portal de Azure, podemos ver que el mensaje ya fue consumido.

image

Etiquetas de Technorati: ,,