Cloud Computing para dummies

cloud-computing-1

Seguramente has escuchado en infinidad de lugares, frases como : “súbelo a la nube”, “respalda tus archivos en la nube”, “mi trabajo lo hago en la nube” entre otras, pero, ¿qué demonios es la nube ?.

Over the Clouds

El concepto de “Nube” es, la forma más moderna y cool de referirnos al conjunto de direfentes servicios que se acceden a través de Internet, en donde se puede almacenar, manipular y distribuir la información.

Expliquemos un poco más esa definición. Hace unos años, ¿recuerdas tu etapa de estudiante de nivel medio superior, cuando a medio trabajo de impresión la tinta se terminaba , y después de maldecir mil veces a la impresora y a la humanidad, guardabas en una memoria USB tu documento para imprimirlo por la mañana, antes de llegar a la escuela?. Si lo hiciste, ¡felicidades eres un Millenial!, y esa era la forma más habitual de almacenar y transportar la información en ese entonces.

Lo anterior, tiene sus ventajas y desventajas, en este momento, me enfocaré sólo en dos desventajas, la portabilidad y disponibilidad de nuestra información. Si perdías la memoria USB, perdías también su contenido, y si no había respaldo, ¿era terrible verdad?, o si no la reconocía la PC del centro de computo, también era realmente frustrante. Estos problemas, son dos de tantos que podemos solucionar con el concepto de la nube.


Ahora, resulta demasiado fácil guardar los documentos en nuestro drive virtual y poder acceder a ellos desde cualquier parte del mundo, a cualquier hora y desde una infinidad de tipos de dispositivos. Ese drive virtual, realmente es, un servicio de almacenamiento que proveé alguna empresa, por ejemplo, Dropbox y realmente son servidores resguardados en Centros de Datos, en algún punto geográfico del planeta, con condiciones de seguridad muy elevada tanto de hardware como de software.

Una vez que nuestro documento queda almacenado en dichos servidores, se dice que, “lo subimos a la nube” o que “nuestro documento está en la nube”. ¿Queda un poco más claro el concepto de nube?. Espero que si.

 

¿Y qué hay del Cloud Computing?

Bueno, pues entonces el Cloud Computing, es un modelo informático que nos permite acceder a servicios informáticos a través de Internet.

Esta idea no es un invento reciente, pues desde la creación del Internet se ha tenido la idea de poder tener servicios que permitan ser productivos sin la necesidad de tener todo un equipo dotado con cientos de herramientas de software y prestaciones de hardware demasiado llamativas.

Por ejemplo, muchos estudios de animación medianos, no poseían granjas de renderizado (grandes centros con servidores dedicados a procesar los algoritmos que generar el material que podemos ver en el cine) por lo cual se rentaban las granjas de una empresa especializada y mediante enlaces dedicados se procesaba el maerial. Este ejemplo, se podría considerar como los primeros intentos del Cloud Computing, aunque no eran tan usados debido a las velocidades de Internet.

 

Entonces, ¿qué beneficios obtengo mediante este nuevo modelo informático?

¡Muchos!, por ejemplo, imagina que eres el encargado del área de informática de una empresa. Recientemente, se adquirieron 400 computadoras, y se requiere que se instale alguna suite de ofimática para que puedan trabajar los asociados y mantener los avances en el serivdor de la empresa. ¡Es una locura instalar 400 veces el mismo software!, ¿no crees?, aparte, los asuntos de licencias, hacer imagenes de respaldo, un usuario le movió y desconfiguró la suite, monitorear las condiciones ambientales del cuarto de servidores, su configuración, se cayó el servidor y detuvo el trabajo de todos, etc. ¿Te das cuenta el trabajo que conlleva?, eso es por parte del área de informática, pero ahora las cuentas de la empresa también se incrementan exponencialmente.

¿Qué podemos hacer para reducir los tiempos y costos de mantenimiento y de esta forma aumentar la productividad de la empresa?

¡Fácil!, hagamos uso de algún servicio de Cloud Computing, para “rentar” la infraestructura necesaria (EC2 de Amazón o Azure de Microsoft) y usemos algún software online de ofimática ( Zoho, Google Docs), así reducimos considerablemente los requerimientos de nuestros equipos, garantizamos que nuestra información esté disponible desde cualquier lugar del mundo y en cualquier momento, garantizamos la compatibilidad del software pues no depende del sistema operativo del equipo donde se ejecuta, entre otras muchas ventajas que trataremos en otro momento.

 

Preparemos un sandwich . . .

Existen principalmente tres modelos de servicios en el Cloud Computing y estos son los siguientes:

Infrastructure as a Service (IaaS) :

Es el primer pan del sandwich y se refiere a contratar toda la parte física, (hardware) que requiere el usuario final (una persona o una empresa). El proveedor se encarga del mantenimiento de los equipos, configuraciones de seguridad, resguardo de todo el equipo en un área geográfica.

Este modelo es utilizado mucho en el ámbito empresarial, ya que simplifica la parte de administración de los equipos y así mismo, reduce los gastos de las empresas, ya que no se hace una inversión en equipos ni en su mantenimiento, ni en su resguardo.

El usuario instala, configura y mantiene su software en los equipos remotos. Es muy utilizado en aplicaciones web, computación de alto rendimiento, análisis de datos, almacenamiento de backups, hospedaje web, principalmente.

La referencia más conocida, EC2 de Amazon

 

Plataform as a Service (PaaS) :

Este nivel es como el jamón del sandwich, explicaré qué es y por qué lo digo.

Esta capa de servicio está más enfocada a los desarrolladores, pues ya se tiene todo un hardware soportando un sistema operativo y con herramientas de desarrollo instaladas, bases de datos, etc. Aquí, el proveedor se encarga de dejar todo el equipo listo para soportar el tiempo de desarrollo de la aplicación. Por su parte, el desarrollador se rige por ciertas normas que propone el proveedor para el correcto funcionamiento y desarrollo de las aplicaciones que correrán en la nube. Todo esto reduce los costos de las empresas, pues se evita la inversión en equipos, instalaciones y ahora también, licencias de software.

¡Ya se puso el primer pan y este es el jamón! XD

En resumen, es aquí donde se desarrolla el servicio de software que estará en la nube.

Algunos ejemplos de proveedores de PaaS, AWS Elastic Beanstalk, Windows Azure, Heroku

 

Y por último, ¡la otra rebanada de pan!

 

Software as a Service (SaaS) :

El último nivel o capa, es aquí, donde ya como usuario final haces uso del software online, en nuestro ejemplo corresponde a usar la suite de ofimática y beneficiarse del trabajo online.

Ya se tiene un soporte de hardware y de software completo, o sea, ese bonito programa, editor de textos que ejecutas desde tu navegador, fue desarrollado por un grupo y está corriendo en servidores instalados, lo más seguro alrededor del mundo.

No necesitas obviamente instalar nada en tu computadora o dispositivo inteligente para poder hacer uso del software, los archivos los guardas en la nube, donde quedan respaldados y disponibles.

Un ejemplo de esta layer, Microsoft Office 365

 
En el siguiente gráfico podemos observar como están organizadas las capas anteriores para efecto de aclarar más el panorama

 

visual-uaas

 

 

¡Listo nuestro sandwich está listo!

 

Como pudimos ver, los beneficios que nos ofrece este paradigma son muchísimos, pero como todo, también hay puntos en contra, me refiero a las cuestiones de seguridad. Estas las trataremos en otra entrada.

 

¡Saludos terrícolas!

Desmontando un controlador MIDI

Hola, antes que nada quiero dejar en claro que durante el desarrollo de este pequeño artículo ningún controlador resultó herido XD.

La idea de escribir este artículo surgió debido a que nos encontramos desarrollando una serie de equipos en EDAX Audio  basados en MIDI así mismo software de control para estos dispositivos  y la curiosidad me obligó a ver las entrañas de este controlador fabricado por M-Audio, además de que muchxs de nostrxs tal vez tenemos uno pero nos da temor desarmar tan preciados instrumentos así que decidí tomarme el atrevimiento de mostrarles que hay tras esas bonitas carcasas de plástico.

En específico el modelo que desmontaré es KeyRig 49 el cual es un teclado controlador de 49 teclas con  pitch bend y modulation wheel además de poderle añadir un pedal de sustain. Es alimentado por medio del puerto USB del ordenador.

¿Qué es un controlador MIDI?

Un controlador MIDI a grosso modo es un dispositivo electrónico que genera mensajes MIDI al tener interacción con el ejecutante y que son enviados «en tiempo real» a la PC para ser tratados y convertidos en sonidos audibles. Existen infinidad de controladores MIDI, los más comunes son los teclados pero también hay baterias, guitarras, bajos, superficies de control por mencionar algunos ejemplos.

Nótese que escribí entre comillas -tiempo real- esto lo hago porque puede que al conectar sus controladores sin ningún ajuste previo, se den cuenta de que existe cierto retardo entre su ejecución y el sonido producido por la computadora, esto es debido a que dependemos de varios factores como son: la velocidad del reloj de la computadora, los drivers de la tarjeta de audio, la tarjeta de audio, el cable usado entre muchos otros más. Algo importante que debemos de tener en cuenta es que ese retardo es algo inherente de cualquier dispositivo electrónico y jamás podremos eliminarlo por completo. Lo que si se puede hacer es disminuirlo al grado que no sea del todo perceptible o que no interfiera en nuestras actividades.

Otro aspecto que debemos de tener en cuenta siempre con respecto a nuestros controladores MIDI es que estos aparatos NO MANEJAN NINGUNA SEÑAL DE AUDIO sólo como ya lo mencioné trabajan enviando y recibiendo mensajes que llevan características para permitir al software en la computadora generar el sonido.

Recomendaría que primero leyeras Introducción al protocolo MIDI [Parte 1] donde te podrás dar una idea de como son estos mensajes y qué información es la que llevan.

Bueno, dejemos de lado la teoría y comencemos presentando a nuestro paciente. . .

keyrig-49

Quitando tornillos . . .

Procederé a quitar todos los tornillos inferiores para permitirnos apreciar el interior. De este paso no dejaré imágenes ya que considero que no es necesario.

Primer encuentro . . .

Primero quité todas las teclas para poder acceder  al PCB donde se encuentran los push buttons.
1

Quitando esto nos encontramos con esta bonita imagen de todo el equipo desnudo.
2

En esta imagen vemos las dos PCBs que conforman al equpo. La color café es la parte de control del controlador y la otra es la parte donde se recolectan los datos (o sea donde están las teclas).

3

Corazón del controlador

4

Esta tarjeta esconde detrás un gran secreto. . .  el corazón de este bonito aparato, un microcontrolador de 8 bits de la empresa taiwanesa Holtek Semiconductors. Este pequeño amigo es quien lleva por dentro todos y cada uno de los mensajes MIDI que se envian al pulsar una tecla, al hacer girar la ruedita del pitch o de la modulación,  así como también las funciones especiales del equipo y gestiona la comunicación USB. SIn este micro no serviría de nada este instrumento.

5

Supe que microcontrolador era puesto que removí la etiqueta que tiene encima jejejejejejejejeje

Entradas y salidas por aquí y por allá

Vista posterior de la tarjeta de control. Podemos ver el  puerto USB, el jack para el pedal de sustain y el interruptor.

6

Un potenciómetro deslizable es lo que hay detrás de bambalinas de un fader.

7

Aquí está los leds de selección de octava así como lso botones para poder seleccionar entre  las octavas.


8

Las control wheels de la modulación y el pitch son dos potenciómetros al igual que el slider de volumen.

9

Husmeando en las entrañas del corazón

Una vez montado procederemos a encenderlo para revisar que todo esté bien y sniffearlo para saber qué hace.

010

Vamos a usar el monitor MIDI para güindous el famoso MIDI OX [es mi preferido] configuramos nuestro controlador para que el software lo pueda sniffear y ¡Voila!.

Vemos toda la data que nos envía el microcontrolador.

midi_ox_03

Como les comenté esta entrada sólo la escribí por mera curiosidad y espero que les ayude a quitarse  también la curiosidad de muchxs en saber que llevan por dentro los controladores MIDI. Obviamente hay muchos más complejos pero en escencia es más de lo mismo.

Dejaré unos enlaces de interés :

Keyrig49 : http://www.m-audio.com/products/view/keystation-49es1#.VldQeB8qfQo
M-AUDIO :  http://www.m-audio.com
MIDI OX: http://www.midiox.com/

Software para electrónica | Lo que no podría faltar en mi alacena . . .

 

Hoy comenzaré con una lista de diversos programas que he usado o uso para temas relacionados con el diseño electrónico y programación.

Poco a poco iré subiendo algunos programas para que puedas descargarlos todos juntos aunque en su mayoría son gratuitos y los puedes descargar de sus respectivos sitios web.

ECLIPSE STUDIO

eclipse_bckgr_logo_fc_lg
Windows-Mac-Linux

Es una excelente IDE para diversos lenguajes en mi caso lo uso para programar microcontroladores AVR en C.


Descarga: https://eclipse.org/downloads/


 

ATOM
atom-editor-logo

Windows-Mac-Linux

Un excelente editor de texto con highlighting y con soporte de plugins lo cual lo hace extremadamente poderoso además de su gestor de proyectos integrado. Lo uso para programar HTML5, CSS3, PHP, JAVASCRIPT, JQUERY.

Descarga: https://atom.io/


ARDUINO IDE

hqdefault (1)Windows-Mac-Linux

Más claro ni el agua, aunque también lo uso para las custom boards que desarrollamos con diferentes micros AVR no soportados oficialmente

Descarga: http://www.arduino.cc


ENERGÍA IDE

EnergiaWindows-Mac-Linux

Es una IDE de programación para las Launchpad de Texas instruments, está basada en la IDE de Arduino, La uso para programar las tarjetas de desarrolla de Texas Instruments.

Descarga:  http://www.energia.nu


CODE COMPOSER STUDIO

CCSSPLASH

Windows-Mac-Linux

Como ya lo abrán notado es para los micros y demás cosillas de Texas Instruments. Lo uso para  las Launchpads.

Descarga: http://www.ti.com/tool/ccstudio



EAGLE CADSOFT

Created with The GIMP

Created with The GIMP

Windows-Mac-Linux

El líder en diseño de PCB desde mi punto de vista puesto que es uno de los más usados a nivel mundial y poderosísimo por sus plugins.

Descarga: http://www.cadsoft.de


 

DREAMWEAVER

macromedia_dreamweaver

Sí, lo sé, es una versión viejita pero es la que me agrada, lo uso principalmente para PHP y HTML5.
Uso una versión portable que encontré en la red y lo ejecuto con WINE en Linux.



GEDIT

650px-Gedit-logo-clean.svg

Uno de los editores de texto por default en GNOME me gusta mucho por lo liviano que es. HTML, CSS, PHP JQUERY, C principalmente.

Descarga : $ sudo apt-get install gedit


APACHE WEBSERVER

Apache-http-server

Windows-Mac-Linux

Mi servidor de desarrollo favorito por su magnífico soporte y potencia al trabajar. Lo uso en el desarrollo de apps en PHP, HTML5, CSS3, JQUERY principalmente.

Descarga: http://www.apache.org 


PROTEUS ISIS

proteus

El simulador por defecto que uso preferentemente en la versión 7. Me gusta por el soporte que tiene y su relativa facilidad de uso además de las librerias que poseé y las que andan navegando por internet.


MPLABX

21086

La IDE de programación de Microchip para sus microcontroladores. Lo uso obviamente en la programación de PICS en C y Ensamblador.

Descarga: http://www.microchip.com


CCS COMPILER

images (1)

Esta IDE la ocupo a la par que MPLAB ya que es más intuitiva y muy potente en la programación de micros en C.


VIRTUALBOX

oracle_virtualbox1

Windows-Mac-Linux

Un gestor de máquinas virtuales muy potente e interesante lo uso para cargar un windows XP donde hago ciertas pruebas y para probar una que otra nueva distro de Linux.

Descarga: https://www.virtualbox.org/

Estos son algunos de los programas que uso para hacer mis proyectos personales así como también para trabajar. La mayoría son Gratuitos. Maś adelante incluiré algunos otros que también uso.

Espero que te sirva este pequeño post.

¡Hasta la próxima!

 

Programación de microcontroladores AVR : Instalación de Eclipse

atmel_logo

Hola buen día, después de un tiempo sin escribir nada ahora trataré un tema relacionado a posts anteriores pues estos microcontroladores son los usados en las placas Arduino.

Un poco de historia

ATMEL es una empresa estadounidense fundada en la década de los ochenta establecida en San Jose, California. Dedicada desde sus inicios en el desarrollo de semiconductores enfocándose en el área de los sistemas embebidos a base de microcontroladores. Actualmente podemos encontrar entre sus productos microcontroladores desde MCU´s de 8, 16,32 bits hasta ARM´s de 32 bits.

Es una empresa muy versatil en cuanto a aplicaciones puesto que sus dispositivos son usados en diferentes áreas de la industria como son: la computación, el automovilismo, comunicaciones, aplicaciones médicas, control de procesos industriales, aplicaciones militares y aeroespaciales  por mencionar algunas.

Bueno, bueno dejemos un poco la historia y comencemos a hablar de «lo que nos truje chencha» que es de los microcontroladores de 8 bits en específico en el ATmega 128L

ATmega 128L

Es un microcontrolador de 8 bits disponible en dos presentaciones MLF y TQFP [en nuestro caso usaremos el encapsulado TQFP con una breakout board diseñada para este fin ].

Algunas características de este dispositivos son:

* Arquitectura RISC avanzada
* 133 instrucciones
* 32 x 8 registros de trabajo de propósito general + registros de control periféricos
* Capacidad de procesamiento de unos 16 MIPS a 16 MHz
* 128K bytes de FLASH reprogramable en sistema
* 4K bytes de EEPROM
* 4K bytes de SRAM
* Dos Timer/Contadores de 8 bits con prescaler separado y modo comparación
* Interface serie SPI maestro/esclavo
* Doble USART serie programable
* Contador en tiempo real con oscilador separado
* ADC de 10 bit y 8 canales
* 2 canales de PWM de 8 bit
* 6 canales PWM con resolución programable desde 2 a 16 bits
* Reset de Power-on y detección de Brown-out programable
* Oscilador interno calibrable
* Función de compatibilidad con el ATmega103 por medio de fusible
* 53 líneas de I/O programables
* Voltaje de alimentación de 2.4 - 5.5V
* Frecuencia máxima de trabajo de 8 MHz

Estas son algunas de las  características importantes [sin menospreciar todas las demás que podemos encontrar en su hoja de datos]

Comenzando la instalación de nuestro IDE 

Antes que nada como ya saben instalaré la paquetería correspondiente a Linux.

Usaremos como IDE el tan famoso Eclipse en su versión 3.8 desde linux en específico Ubuntu es fácil la instalación puesto que se encuentra en los repositorios listados en el sistema así que fácilmente procedemos a instalarlo junto con las demás dependencias (toolchains) para compilar para AVR. Abrimos nuestra consola y escribimos :

sudo apt-get install eclipse gcc-avr binutils-avr gdb-avr avr-libc avrdude

Screenshot from 2015-09-28 12:25:26

Con esto iniciará el proceso de instalación de la IDE. Es importante o mejor dicho NECESARIO estar conectado a internet durante estos primeros pasos de instalación.

Una vez terminada procederemos a abrir Eclipse

Screenshot from 2015-09-28 12:28:13

Seguido nos preguntará el Workspace [espacio de trabajo] introduciré el mio en Microcontroladores/ATMEL ustedes pongan donde gusten solo es para concentrar sus proyectos.

Screenshot from 2015-09-28 14:10:27

Ahora que ya está abierto nuestro IDE vamos a el menú Help [Ayuda] y allí damos click en la opción Install new software [Instalar nuevo software], se abrirá una ventana similar a esta:

Screenshot from 2015-09-28 14:13:39

En el campo que dice Work with: introducimos la siguiente dirección:

http://avr-eclipse.sourceforge.net/updatesite/

y damos click en Add [Añadir]. Posteriormente nos aparecerá el plugin y lo seleccionamos y pulsamos en Next (se encuentra hasta abajo de la ventana).

Screenshot from 2015-09-28 14:18:54

Esperamos a que termine y listo ya quedó el plugin instalado para trabajar con Eclipse.

En nuestra próxima entrada escribiremos nuestro primer programa para el ATmega128 L.

avr_programming1

Desiderata

Felicidad

Camina placido entre el ruido y la prisa; y piensa en la paz
que se puede encontrar en el silencio.
En cuanto sea posible y sin rendirte, manten buenas relaciones
con todas las personas.
Enuncia tu verdad en una manera serena y clara;
y escucha a los demás, incluso al torpe e ignorante,
también ellos tienen su propia historia.

Esquiva a las personas ruidosas y agresivas,
pues son un fastidio para el espíritu.
Si te comparas con los demas te volverás vano y amargado;
pues siempre habran personas mas grandes y más pequenas que tú.
Disfruta de tus éxitos lo mismo que de tus planes;
Mantén el interés en tu propia carrera, por humilde que sea;
ella es un verdadero tesoro en el cambiar de los tiempos.

Se cauto en tus negocios, pues el mundo está lleno de engaños;
Mas no dejes que esto te vuelva ciego para la virtud que existe;
hay muchas persona que se esfuerzan por alcanzar nobles ideales;
La vida esta llena de heroísmo.
Se sincero contigo mismo, en especial no finjas el afecto,
Y no seas cinico en el amor, pues en medio de todas las arideces
y desengaños es perenne como la hierba;
Acata docilmente el consejo de los años,
abandonando con donaire las cosas de la juventud.
Cultiva la firmeza de el espíritu para que te proteja
en las adversidades repentinas.

activa-felicidad

Muchos temores nacen de la fatiga y la soledad.
Sobre una sana disciplina, se benigno contigo mismo.
Tú eres una criatura del universo;
no menos que las plantas y las estrellas,
tienes derecho a existir, y sea que te resulte claro o no,
indudablemente el universo marcha como debiera.

Por eso debes estar en paz con dios, cualquier que sea tu idea de el;
y sean cualquiera tus trabajos y aspiraciones
Conserva la paz con tu alma; en la bullisiosa confusión de la vida.
Aún con toda su farsa, penalidades y sueños fallidos
El mundo es todavia hermoso; se cauto, esfuerzate por ser feliz.