DeveloZombie

Quemadas de un programador para muertos vivientes

Mi entrevista en Channel 9

Construyendo una solución de envío de SMS y llamadas en Azure

Hola Muertos vivientes, hoy les traigo un how-to para todos los spammers en potencia, cómo en

Hola Muertos vivientes, hoy les traigo un how-to para todos los spammers en potencia, cómo enviar SMS y llamadas a celulares de todo el mundo usando Azure y voz generada por texto. Para ello tenemos que ir a http://Twilio.com y crearnos una cuenta, ahi solicitaremos:

  • Un número de telefonico.
  • Un api key de cuenta.

El primer paso es crear una clase Twimlo.aspx.cs que genere el texto en SSML:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Notificaciones
{
    public partial class Twimlo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.ContentType = "text/xml";
            Response.Write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Response><Say voice=\"man\" language=\"es\" loop=\"2\">"+Request["mensaje"]+"</Say></Response>");
            Response.End();
        }
    }
}

Y en el Default.aspx yo he creado 4 controles, 2 cajas de texto, un checkbox y un botón, tal como se muestra en la imagen:

Luego en mi proyecto de Visual Studio he agregado desde NuGet el paquete de Twilio:

Install-Package Twilio

Ahora, vamos al code behind de Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Twilio;

namespace Notificaciones
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e){}

        protected void Button1_Click(object sender, EventArgs e)
        {
 
            string accountSID = "ID de cuenta";
            string authToken = "token de cuenta";

            TwilioRestClient client;
            client = new TwilioRestClient(accountSID, authToken);
            if (CheckBox1.Checked)
            {
                String Url = "http://{nombredeSitio}.azurewebsites.net/Twimlo.aspx?mensaje=" + TextBox2.Text.Replace(" ", "%20");
                CallOptions options = new CallOptions();
                options.From = "{numero generado}";
                options.To = TextBox1.Text;
                options.Url = Url;
                var call = client.InitiateOutboundCall(options);
            }

            else
            {
                    client.SendMessage(
                        "{numero generado}", // From number, must be an SMS-enabled Twilio number
                        "{numero destino}",     // To number, if using Sandbox see note above
                        TextBox1.Text);                // message content
            }
        }
    }
}

Ahora solo queda publicar a un Azure WebApp y listo!

Soporte Gratis para los clientes de Azure EA

Muchos de nosotros usamos Azure como una extensi&amp;oacute;n del centro de datos de nuestra empresa, al

Muchos de nosotros usamos Azure como una extensión del centro de datos de nuestra empresa, al hacerlo ganamos muchísima flexibilidad, sin embargo también nos vemos enfrentados al hecho de que algunas cosas necesitan un cierto nivel técnico y algún tiempo de lectura para hacer que funcionen siguiendo las mejores prácticas.

Hoy, Microsoft ha dado un paso súper importante, ha hecho el soporte de $3600 y $12000 gratuito para clientes que tengan un EA.

El enlace donde se publica es https://azure.microsoft.com/es-es/blog/announcing-azure-support-upgrade-for-enterprises/

Mi material del DevDays 2016

Como lo prometido es deuda, comparto con ustedes lo presentado en el DevDays 2016 Presentaci&amp;oacute;

Como lo prometido es deuda, comparto con ustedes lo presentado en el DevDays 2016

Presentación Azure Openess

Demo Script

#primer paso, crear grupo de recursos
azure group create AInterop "East US"
#crear cuenta de storage
azure storage account create demoperu0003
#plus, como crear un file share SMB 3.0
azure storage account connectionstring show demoperu0003

export AZURE_STORAGE_ACCOUNT=<account_name>
export AZURE_STORAGE_ACCESS_KEY=<key>
export AZURE_STORAGE_CONNECTION_STRING="<connection_string>"

azure storage share create sharedemo
azure storage directory create sharedemo prueba

#como automatizarlo en python
nano demo.py
#dentro de nano escribir
regiones = "East US"
grupo = "AInterop"
aplicacion = "demoperu00009"

from subprocess import call
call('azure storage account create '+aplicacion+' -l "'+regiones+'" -g "'+grupo+'"', shell=True)
#ctrl+x y luego Y
##########################
#containers, conectarse a la vm por ssh
ssh nomvm.cloudapp.net -l eladmin
#buscar repos
docker search debian
#correr un contenedor con debian
docker run -i -t debian /bin/bash
apt-get install zip
zip
exit
zip
#correr un contenedor con XAMPP
docker run -p 41061:22 -p 41062:80 -d -v ~/my_web_pages/my_testing_page1:/www tomsik68/xampp
#conectarse y modificar el index
ssh root@localhost -p 41061
cd /www
nano index.php



docker run -p 41072:22 -p 41078:80 -d -v ~/my_web_pages/my_testing_page1:/www tomsik68/xampp


 

Presentación de 0 a 100 en Azure ARM

Url usadas:

#Abrir la pagina de templates
https://github.com/Azure/azure-quickstart-templates/ 
#Navegar a la creacion de 2 vm con LB
https://github.com/Azure/azure-quickstart-templates/tree/master/201-2-vms-internal-load-balancer 

 

Exportando plantillas ARM de Grupos de Recursos

Con el nuevo modelo de Azure ARM podemos crear Grupos de Recursos y agrupar recursos de computo, red

Con el nuevo modelo de Azure ARM podemos crear Grupos de Recursos y agrupar recursos de computo, redes y almacenamiento de forma que:

  • Se garantiza la granularidad de accesos a los grupos y componentes.
  • Se pueden asignar etiquetas a los recursos para facilitar la gestión.
  • Y lo más importante, se pueden aprovisionar recursos desde plantillas en JSON.
  • Hace unas semanas anunciamos la posibilidad de exportar plantillas desde un Grupo de Recursos a JSON de tal forma que la arquitectura pueda ser reutilizada.

Vamos manos a la obra:

Entramos a Azure y busquemos un grupo de recursos creado previamente y podremos ver que se ha habilitado una nueva opción ¨Export Template¨

Al hacer clic podremos ver que se generó, le damos clic en Download, y nos descargará un archivo Zip, luego podemos ir a http://armviz.io/ y vamos a darle clic en Open from file, a lo cual veremos que se generó automáticamente la arquitectura

Resultado final

 

Crear un Container en Docker con XAMPP

Hola Muertos vivientes, hoy les ese&amp;ntilde;ar&amp;eacute; como crear contenedores en Docker con XAMPP y

Hola Muertos vivientes, hoy les eseñaré como crear contenedores en Docker con XAMPP y luego publicar un sitio web en el. Comencemos, para este how-to necesitamos:

  • Una cuenta de Azure
  • Putty, Terminal o Bash

Como primer paso vamos a ir a Azure y crear Docker Ubuntu, simplemente ingresamos a https://portal.azure.com y los loqueamos, una vez ahi, vamos a dar clic en el botón marketplace

En el marketplace vamos a buscar Docker on Ubuntu Server y le damos clic

Seguimos el wizard y configuramos que el método de autenticación es Password y no SSH Key.

Ahora nos vamos al Terminal y escribimos:

ssh nomvm.cloudapp.net -l eladmin

Eso nos conectará vía SSH al servidor de Docker, ahora crearemos el contenedor:

docker run -p 41061:22 -p 41062:80 -d -v ~/my_web_pages/my_testing_page1:/www tomsik68/xampp

En donde el puerto 41061 apunta al puerto 22 para SSH y el puerto 41062 apunta al puerto 80 para HTTP, para validar que el contenedor se haya creado correctamente, podemos usar el siguiente comando:

docker ps

Y veremos que nuestro contenedor se lista. Ahora que ya tenemos el contenedor funcionando, vamos a conectarnos vía SSH al contenedor para comenzar a crear código:

ssh root@localhost -p 41061
cd /www
nano index.php

En el nano escribiremos un clásico Hola Mundo:

<?php

echo 'Hola Mundo ', $_GET['nombre'];

?>

Ahora vamos al portal de Azure nuevamente y creamos una regla de entrada en el Network Security Group de la maquina virtual:

Con eso deberíamos poder ingresar a nuestro sitio Web sin problemas!