miércoles, 28 de agosto de 2019

Resumen sobre video 1 y 2.

Arduino es una placa programable con entradas y salidas digitales y analógicas, cuyo bajo costo la hace ideal para iniciarse en automatización o realizar pequeños proyectos domésticos en electrónica y robótica. Esto significa que disponemos de un pequeño “autómata”, capaz de recibir información del entorno (sensores) y realizar acciones (actuadores, motores…), según un programa que introducimos con un computadora, y que puede ejecutar de forma autónoma.





Ventajas.

  • Arduino simplifica el proceso de trabajar con microcontroladores.
  • Bajos costos. Tiene un costo más bajo comparado con otras tarjetas.
  • Multi-Plataforma. Puede ser utilizado en distintos sistemas operativos.
  • Entorno de programación simple y directa. El entorno de programación de Arduino es fácil de usar para principiantes y flexible para los usuarios avanzados.
  • Software ampliable y de código abierto. El software Arduino es de distribución de licencia libre y preparado para ser adaptado por programadores experimentados.
  • Hardware ampliable y de Código abierto. Arduino está basado en los microcontroladores ATMEGA168, ATMEGA328 y ATMEGA1280. Los planos de los módulos están publicados bajo licencia Creative Commons, por lo que diseñadores de circuitos con experiencia pueden hacer su propia versión del módulo, ampliándolo u optimizándolo.

Desventajas.

  • Dado que la programación no se realiza en ensambler, el precio a pagar por el uso de las librerías es un retraso en la ejecución de las instrucciones, algunos microsegundos que en el caso de dispositivos de uso cotidiano son irrelevantes, pero significativos  a la hora de hacer adquisición de datos.
  • El hecho de que la plataforma venga ya ensamblada le quita flexibilidad a los proyectos, asi por ejemplo estaríamos obligados a usar un espacio y forma acorde con el PCB  del Arduino.


Instalar Arduino, Hola Mundo y hacer Parpadear un LED.

Para poder programar en Arduino debemos tener físicamente nuestro Arduino y conectarlo con nuestro programa para que interprete las instrucciones que le damos a través de la programación.
Una vez hecho esto, escribimos el siguiente código para que nuestro LED parpadee, realizando así nuestro primer programa Arduino:


//LED parpadeando

void setup() {
  pinmode(13, OUTPUT);//Declaramos el pin 13 como nuestra salida
  
}
void loop() {
  digitalWrite(13, HIGH);//Aquí declaramos que el LED encienda
  delay(1000); //Damos un tiempo de espera de 1 seg
  digitalWrite(13, LOW);//Se apago el LED
  delay(1000); //Esperamos 1 segundo 
}


jueves, 22 de agosto de 2019

Resumen tema 1: Introducción a Arduino.

Introducción a Arduino.
Arduino es una placa programable con entradas y salidas digitales y analógicas, cuyo bajo costo la hace ideal para iniciarse en automatización o realizar pequeños proyectos domésticos en electrónica y robótica. Esto significa que disponemos de un pequeño “autómata”, capaz de recibir información del entorno (sensores) y realizar acciones (actuadores, motores…), según un programa que introducimos con un computadora, y que puede ejecutar de forma autónoma.
Ventajas.
  • Arduino simplifica el proceso de trabajar con microcontroladores.
  • Bajos costos. Tiene un costo más bajo comparado con otras tarjetas.
  • Multi-Plataforma. Puede ser utilizado en distintos sistemas operativos.
  • Entorno de programación simple y directa. El entorno de programación de Arduino es fácil de usar para principiantes y flexible para los usuarios avanzados.
  • Software ampliable y de código abierto. El software Arduino es de distribución de licencia libre y preparado para ser adaptado por programadores experimentados.
  • Hardware ampliable y de Código abierto. Arduino está basado en los microcontroladores ATMEGA168, ATMEGA328 y ATMEGA1280. Los planos de los módulos están publicados bajo licencia Creative Commons, por lo que diseñadores de circuitos con experiencia pueden hacer su propia versión del módulo, ampliándolo u optimizándolo.
Desventajas.
  • Dado que la programación no se realiza en ensambler, el precio a pagar por el uso de las librerías es un retraso en la ejecución de las instrucciones, algunos microsegundos que en el caso de dispositivos de uso cotidiano son irrelevantes, pero significativos  a la hora de hacer adquisición de datos.
  • El hecho de que la plataforma venga ya ensamblada le quita flexibilidad a los proyectos, asi por ejemplo estaríamos obligados a usar un espacio y forma acorde con el PCB  del Arduino.



Tipos de Arduino.
Existen multitud de modelos Arduino disponibles, lo que puede ser un poco confuso para los nuevos usuarios. A la hora de elegir lo normal es que nos fijemos en la cantidad de entradas y salidas que tiene, especialmente las analógicas dado que son las que habitualmente restringen nuestro proyecto.






Lo más normal es que para empezar emplees una Arduino UNO R3. Este es el modelo más estándar y es la placa que utilizaremos de forma habitual. Para ciertos proyectos grandes, que requieran manejar un número importante de motores o servo motores (robots, máquinas de CNC, impresoras 3D) puede ser necesario pasar a un modelo con mayor número de salidas, especialmente analógicas. En ese caso lo normal es emplear una Arduino MEGA R3.
Por su parte, el modelo Mini 05 es un modelo para usuarios avanzados. Es una placa de apenas 2.5 dólares y un tamaño realmente pequeño, pensado para aplicaciones finales, es decir, cuando vas a dejar la placa permanentemente conectada (y por tanto la vas a “perder”). Viene sin terminales de conexión, hay que soldarlos, y para programarla se requiere un adaptador USB FTDI que cuesta 3.5 dólares. En niveles expertos esta es prácticamente el único modelo de placa que se usa dado que, en caso de requerir una gran cantidad de entradas o salidas, es más económico formar una red de 3 o 4 placas mini, y obtienes una capacidad superior a una MEGA.

Tipos de Shields. 
Las shields son placas de circuitos modulares que se montan unas encima de otras para dar funcionalidad extra a un Arduino. Esta Shields son apilables.
Un shield en Arduino es un placa que se apila sobre el arduino o sobre otro shield, de forma que nos permite ampliar el hardware/capacidades de Arduino.


Las shields se pueden comunicar con el arduino bien por algunos de los pines digitales o analógicos o bien por algún bus como el SPI, I2C o puerto serie, así como usar algunos pines como interrupción. Además estas shields se alimentan generalmente a través del Arduino mediante los pines de 5V y GND.
Cada Shield de Arduino debe tener el mismo factor de forma que el standard de Arduino con un espaciado de pines concreto para que solo haya una forma posible de encajarlo.


Shields más importantes.

Ethernet Shield: La placa Arduino se comunica con el módulo W5100 y la micro-SD utilizando el bus SPI (mediante el conector ICSP). Esto se encuentra en los pines digitales 11, 12 y 13 en el modelo UNO y en los pines 50, 51 y 52 del modelo MEGA. En ambas placas, el pin 10 es utilizado para seleccionar el W5100 y el pin 4 para la micro-SD. Estos pines no pueden ser utilizados para otros fines mientras la Ethernet Shield esté conectada.

Arduino Wifi Shield: Permite conectar un Arduino a Internet mediante Wifi y hace uso de la librería WiFi También dispone de un slot para una tarjeta micro SD. Este shield se comunica con Arduino a través del bus SPI mediante los pines ICSP y usa los pines 4 y 10 al igual que la Shield Ethernet. También hace uso del pin 7 que no puedes ser usado.


Otros tipos de SHIELD:
Arduino GSM Shield: Conecta Arduino a Internet mediante GPRS, usando una tarjeta SIM. También permite enviar y recibir mensajes y llamadas de voz (SMSs).
Arduino Motor Shield: Permite manejar dos motores DC, controlando su dirección y velocidad. Está basado en un chip de doble puente H  ST L298 Este shield usa dos canales y cada canal usa 4 pines, en total nos ocupa 8 pines del Arduino. 
GPS Shield: Con un slot para micro SD donde guardar logs. No es compatible con Arduino Mega ni Due, RTC incluido. Conexión por puerto serie o conexión directa.
TFT Shield: Pantalla táctil resistiva con un slot para micro SD integrado. Comunicación a Arduino a través de bus SPI.
Bluetooth Shield: Comunicación inalámbrica por bluetooth. Conecta con la UART del Arduino o software serial con selector de puerto serie.

Terminal Shield: Shield con borneros y placa de prototipado que nos permite conectar fácilmente cualquier sensor o actuador a un Arduino.

miércoles, 21 de agosto de 2019

Entrevista a DBA.

A continuación anexo un video donde se realiza una entrevista a una DBA.

Entrevista completa (Inglés).


De la entrevista concluí que la persona encargada de administrar, supervisar y asegurar el adecuado uso de los datos dentro de un DBMS (Database Management System) son los DBA. Estos sistemas permiten manejar grandes montañas de datos de una manera eficiente,  permitiendo así disponer de una mejor herramienta para la toma de decisiones de negocios. Por lo tanto, la necesidad de los administradores de bases de datos (DBA) es hoy mayor que nunca.

martes, 20 de agosto de 2019

Arduino y sus características.

Arduino.



Arduino es una plataforma de desarrollo basada en una placa electrónica de hardware libre que incorpora un microcontrolador re-programable y una serie de pines hembra, los que permiten establecer conexiones entre el microcontrolador y los diferentes sensores y actuadores de una manera muy sencilla (principalmente con cables dupont).



Una placa electrónica es una PCB (“Printed Circuit Board”, “Placa de Circuito Impreso” en español). Las PCBs superficies planas fabricadas en un material no conductor, la cual costa de distintas capas de material conductor. Una PCB es la forma más compacta y estable de construir un circuito electrónico. Así que la placa Arduino no es más que una PCB que implementa un determinado diseño de circuitería interna, de esta forma el usuario final no se debe preocupar por las conexiones eléctricas que necesita el microcontrolador para funcionar, y puede empezar directamente a desarrollar las diferentes aplicaciones electrónicas que necesite.

PCB de un Arduino UNO



Cuando hablamos de “Arduino” deberíamos especificar el modelo concreto, ya que se han fabricado diferentes modelos de placas Arduino oficiales, cada una pensada con un propósito diferente y características variadas (como el tamaño físico, número de pines E/S, modelo del microcontrolador, etc). A pesar de las varias placas que existen todas pertenecen a la misma familia (microcontroladores AVR marca Atmel), esto significa que comparten la mayoría de sus características de software, como arquitectura, librerías y documentación.


¿Por qué usar Arduino?


Arduino es libre y extensible: esto quiere decir que cualquiera que desee ampliar y mejorar el diseño hardware de las placas como el entorno de desarrollo, puede hacerlo sin problemas. Esto permite que exista un rico ecosistema de placas electrónicas no oficiales para distintos propósitos y de librerías de software de tercero, que pueden adaptarse mejor a nuestras necesidades.


  1. Arduino tiene una gran comunidad: Gracias a su gran alcance hay un gran comunidad trabajando con esta plataforma, lo cual genera una cantidad de documentación bastante extensa, la cual abarca casi cualquier necesidad.
  2. Su entorno de programación es multiplataforma: Se puede instalar y ejecutar en sistemas operativos Windows, Mac OS y Linux.
  3. Lenguaje de programación de fácil compresión: Su lenguaje de programación basado en C++ es de fácil compresión que permite una entrada sencilla a los nuevos programadores y a la vez con una capacidad tan grande, que los programadores mas avanzados pueden exprimir todo el potencial de su lenguaje y adaptarlo a cualquier situación.
  4. Bajo costo: La placa Arduino estándar (Arduino UNO) tiene un valor aproximado de $17.000(pesos chilenos), incluso uno mismo la podría construir(una gran ventaja del hardware libre), con lo que el precio de la placa seria incluso menor.
  5. Re-usabilidad y versatilidad: Es re-utilizable porque una vez terminado el proyecto es muy fácil poder desmontar los componentes externos a la placa y empezar con un nuevo proyecto, de igual manera todos los pines del microcontrolador están accesibles a través de conectores hembra, lo cual permite sacar partido de todas las bondades del microcontrolador con un riesgo muy bajo de hacer una conexión errónea.

Modelo del microcontrolador



El microcontrolador que lleva la placa Arduino UNO es el modelo ATmega328P de la marca Atmel. La «P» del final significa que este chip incorpora la tecnología «Picopower» (propietaria de Atmel), la cual permite un consumo eléctrico ligeramente menor comparándolo con el modelo equivalente sin «Picopower», ATmega328 (sin la «P»). Aunque el ATmega328P pueda trabajar a un voltaje menor y consumir menos corriente que el ATmega328, ambos modelos son funcionalmente idénticos, es decir, pueden ser remplazados el uno por el otro.
Al igual que ocurre con el resto de microcontroladores usados en otras placas Arduino, el ATmega328P tiene una arquitectura de tipo AVR, arquitectura desarrollada por Atmel y en cierta medida «competencia» de otras arquitecturas como por ejemplo la PIC del fabricante Microchip. Mas concretamente, el ATmega328P pertenece a la subfamilia de microcontroladores «megaAVR». Otras subfamilias de la arquitectura AVR son la «tinyAVR» (cuyos microcontroladores son mas limitados y se identifica con el nombre ATtiny) y la «XMEGA»(cuyos microcontroladores son mas capaces y se identifican con el nombre de ATxmega).

Funciones BDA, Manejadores de BD relacionales y manejadores de BD NOSQL.

Funciones BDA.



Gestión General de Base de Datos
El DBA es la persona con más conocimientos sobre base de datos en una organización. Como tal, debe entender las reglas básicas de la tecnología de base de datos relacional y ser capaz de comunicarlos con precisión a los demás.
Modelado de Datos y Diseño de Base de Datos
Un DBA debe ser un profesional experto en la recopilación y análisis de las necesidades del usuario para obtener modelos de datos conceptuales y lógicos. Esta tarea es más difícil de lo que parece. Un modelo conceptual de datos describe los requisitos de datos a un nivel muy alto, un modelo de datos lógico proporciona en profundidad los detalles de los tipos de datos, longitudes, relaciones y cardinalidad. El DBA utiliza técnicas de normalización para ofrecer modelos de datos que reflejen las necesidades de los datos de la empresa.
Auditoria
Una de las tareas de un DBA es identificar qué usuarios tienen acceso a insertar, actualizar o eliminar datos, y cuándo. Una auditoría NO sólo podría ser necesaria por un tiempo limitado, para usuarios específicos o datos específicos. También puede ser requerida  24/7 para todos los datos que se introduzcan en el DBMS. Regularmente, para realizar las funciones de autorías los DBAs tienen que trabajar en combinación con los auditores internos y externos de la empresa.
Integración con aplicaciones
La mayoría de las empresas hoy en día utilizan aplicaciones de terceros (casi nadie ya desarrolla sus propias aplicaciones in-house), muy pocas de estas aplicaciones funcionan de manera aislada. En otras palabras, las aplicaciones tienen que interconectarse unas con otras, generalmente utilizando base de datos como el medio para compartir los datos. Los DBAs a menudo se involucran en los procesos de integrar las aplicaciones existentes con las bases datos que administran. Esto puede incluir la creación de aplicaciones a medida, scripts, etc.
Resguardo y recuperación de datos
Uno de los aspectos más fundamentales del trabajo del DBA es proteger los datos de la organización. Esto incluye hacer copias de seguridad periódicas de los datos y mantenerlos a salvo de la destrucción accidental o intencional. Además, diseñar, implementar y probar un plan de recuperación para que cuando se presenten los problemas, los datos se pueden restaurar rápidamente.
Inteligencia de negocios y almacenamiento de datos
Una de las áreas de mayor crecimiento para el DBA es la Inteligencia de Negocios (BI) y almacenamiento de datos. Esto se debe a que cada vez más organizaciones están tratando de extraer toda la información que pueda con el fin de tomar mejores decisiones de negocios.
Planificación de capacidad
En la mayoría de las organizaciones, el número y tamaño de las bases de datos crece rápidamente. Es la responsabilidad del DBA gestionar el creciente volumen de datos y diseñar los planes apropiados para administrarlos. Esto incluye también la gestión del hardware donde se almacenan los datos.
Administración de cambios
La configuración del servidor SQL Server o MySQL, el esquema de base de datos, el código de Transact-SQL, y muchas otras facetas del ecosistema de aplicaciones cambian con el tiempo. A menudo es la responsabilidad del DBA realizar el análisis de impacto antes de realizar los cambios dentro de una DBMS. Implementar cambios, hacer pruebas piloto y documentar todos los cambios y procedimientos es parte del trabajo de un DBA.


Sistemas Gestores de bases de datos Relacionales (SQL)

Desde que se comenzó a usar el modelo de bases de datos relacionales, en 1970, ha ido sufriendo una serie de transformaciones hasta convertirse, hoy en día, en el modelo más utilizado para administrar bases de datos.

Este modelo se basa fundamentalmente en establecer relaciones o vínculos entre los datos, imaginando una tabla aparte por cada relación existente con sus propios registros y atributos.

Los principales Sistemas gestores de bases de datos relacionales (SGBD SQL) actualmente son:

MySQL

Es el sistema gestor de bases de datos relacional por excelencia.
Es un SGBD multihilo y multiusuario utilizado en la gran parte de las páginas web actuales. Además es el más usado en aplicaciones creadas como software libre.
Ver las imágenes de origen


Se ofrece bajo la GNU GPL aunque también es posible adquirir una licencia para empresas que quieran incorporarlo en productos privativos (Desde la compra por parte de Oracle se está orientando a este ámbito empresarial).
Las principales ventajas de este Sistema Gestor de Bases de datos son:


  • Facilidad de uso y gran rendimiento
  • Facilidad para instalar y configurar
  • Soporte multiplataforma
  • Soporte SSL


La principal desventaja es la escalabilidad, es decir, no trabaja de manera eficiente con bases de datos muy grandes que superan un determinado tamaño.


MariaDB



Este SGBD es una derivación de MySQL que cuenta con la mayoría de características de este e incluye varias extensiones.
Nace a partir de la adquisición de MySQL por parte de Oracle para seguir la filosofía Open Source y tiene la ventaja de que es totalmente compatible con MySQL.
Ver las imágenes de origen
Entre las principales características de este Sistema Gestor de Bases de datos se encuentran:
  • Aumento de motores de almacenamiento
  • Gran escalabilidad
  • Seguridad y rapidez en transacciones
  • Extensiones y nuevas características relacionadas con su aplicación para Bases de datos NoSQL.
No tiene desventajas muy aparentes salvo algunas pequeñas incompatibilidades en la migración de MariaDB y MySQL o pequeños atrasos en la liberación de versiones estables.

SQLite

Más que un Sistema Gestor de bases de datos como tal, SQLite es una biblioteca escrita en C que implementa un SGBD y que permite transacciones sin necesidad de un servidor ni configuraciones.
Ver las imágenes de origen
Es una biblioteca utilizada en multitud de aplicaciones actuales ya que es open source y las consultas son muy eficientes.
Las principales características de SQLite son:
  • El tamaño, al tratarse de una biblioteca, es mucho menor que cualquier SGBD
  • Reúne los cuatro criterios ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad) logrando gran estabilidad
  • Gran portabilidad y rendimiento
La gran desventaja de SQLite es la escalabilidad ya que no soporta bases de datos que sean muy grandes.

PostgreSQL

Este sistema gestor de base de datos relacional está orientado a objetos y es libre, publicado bajo la licencia BSD.
Sus principales características son:
  • Control de Concurrencias multiversión (MVCC)
  • Flexibilidad en cuanto a lenguajes de programación
  • Multiplataforma
  • Dispone de una herramienta (pgAdmin, https://www.pgadmin.org/) muy fácil e intuitiva para la administración de las bases de datos.
  • Robustez, Eficiencia y Estabilidad.
La principal desventaja es la lentitud para la administración de bases de datos pequeñas ya que está optimizado para gestionar grandes volúmenes de datos.

Microsoft SQL Server

Es un sistema gestor de bases de datos relacionales basado en el lenguaje Transact-SQL, capaz de poner a disposición de muchos usuarios grandes cantidades de datos de manera simultánea.

Es un sistema propietario de Microsoft. Sus principales características son:
  • Soporte exclusivo por parte de Microsoft.
  • Escalabilidad, estabilidad y seguridad.
  • Posibilidad de cancelar consultas.
  • Potente entorno gráfico de administración que permite utilizar comandos DDL y DML.
  • Aunque es nativo para Windows puede utilizarse desde hace ya un tiempo en otras plataformas como Linux o Docker.
Su principal desventaja es el precio. Cuenta con un plan gratuito (Express) pero lo normal es la elección de alguno de los planes de pago disponibles (Standard, Developer, Enterprise o SQL Azure, la versión de SQL Server en la nube).

Oracle

Tradicionamente, Oracle ha sido el SGBD por excelencia para el mundo empresarial, considerado siempre como el más completo y robusto, destacando por:
  • Soporte de transacciones.
  • Estabilidad.
  • Escalabilidad.
  • Multiplataforma.

La principal desventaja, al igual que SQL Server, es el coste del software ya que, aunque cuenta con una versión gratuita (Express Edition o XE), sus principales opciones son de pago.
Las opciones de pago disponibles son:
    • 1. Standard Edition (SE)
    • 2. Standard Edition One (SE1)
    • 3. Standard Edition 2 (SE2)
    • 4. Personal Edition (PE)
  • 5. Lite Edition (LE)
  • 6. Entreprise Edition (EE)

Sistemas Gestores de bases de datos No Relacionales (NoSQL)

Una base de datos no relacional (NoSQL) es aquella base de datos que:
  • No requiere de estructuras de datos fijas como tablas
  • No garantiza completamente las características ACID
  • Escala muy bien horizontalmente.
Se utilizan en entornos distribuidos que han de estar siempre disponibles y operativos y que gestionan un importante volumen de datos.
Para la administración de este tipo de bases de datos, actualmente los principales sistemas gestores de bases de datos (SGBD NoSQL) son:

MongoDB

Estamos ante el Sistema Gestor de Bases de Datos no relacionales (SGBD NoSQL) más popular y utilizado actualmente.
MongoDB es un SBGD NoSQL orientado a ficheros que almacena la información en estructuras BSON con un esquema dinámico que permite su facilidad de integración.
Empresas como Google, Facebook, eBay, Cisco o Adobe utilizan MongoDB como Sistema Gestor de Bases de datos.
Las principales características de MongoDB son:
  • Indexación y replicación
  • Balanceo de carga
  • Almacenamiento en ficheros
  • Consultas ad hoc
  • Escalabilidad horizontal
  • Open Source
Como desventaja principal, MongoDB no es un SGBD adecuado para realizar transacciones complejas.

Redis

Redis está basado en el almacenamiento clave-valor. Podríamos verlo como un vector enorme que almacena todo tipo de datos, desde cadenas, hashses, listas, etc.
El principal uso de este SGBD es para el almacenamiento en memoria caché y la administración de sesiones.
Las características principales son:
  • Atomicidad y persistencia
  • Gran velocidad
  • Simplicidad
  • Multiplataforma

Cassandra

Al igual que Redis, Cassandra también utiliza almacenamiento clave-valor. Es un SGBD NoSQL distribuido y masivamente escalable.
Facebook, Twitter, Instagram, Spotify o Netflix utilizan Cassandra.
Dispone de un lenguaje propio para las consultas denominado CQL (Cassandra Query Languaje).
Las principales características de este SGBD NoSQL son:
  • Multiplataforma
  • Propio lenguaje de consultas (CQL)
  • Escalado lineal y horizontal
  • Es un SGBD distribuido
  • Utiliza una arquitectura peer-to-peer