An evening with... Microservices - Session 1Arkhotech
Si bien la tecnología de microservicios tiene ya un par de años, su uso más formal con implementaciones importantes en ambientes productivos es bastante reciente. En este meetup se hará un introducción mundo de los microservicios comenzando por los aspectos más teóricos, pasando por la descripción de arquitectura y buenas prácticas, para finalizar con un ejemplo práctico de implementación y un primer acercamiento al escalamiento.
NodeJS es una plataforma que permite programar servidores dedicados en Javascript de forma sencilla y eficaz. Pese a que Javascript no es un lenguaje con soporte a la concurrencia, el carácter no bloqueante de las operaciones que realizan accesos de entrada salida E/S permite avanzar los flujos de ejecución aumentando la productividad y la escalabilidad del sistema total. En efecto, los tiempos de espera en cada operación motivados por los accesos a disco son aprovechados para procesar nuevas peticiones entrantes en el servidor. Pese a sus innegables ventajas en productividad, el modelo de programación se complica. Dado que ahora las operaciones se liberan del flujo de control para retomarse posteriormente, ¿cómo podemos determinar cuándo una operación ha terminado? ¿Cómo podemos recuperar sus resultados? ¿Cómo gestionamos sus errores potenciales? A lo largo de este texto presentaremos diferentes modelos de programación que pueden ser empleado para dar respuesta a estas y otras preguntas en el marco de la programación asíncrona.
La programación funcional está cogiendo fuerte tracción en los últimos años dentro de la comunidad de desarrollo. Tal vez ello se deba al surgimiento de nuevas arquitecturas que demandan cotas de escalabilidad, resistencia y flexibilidad en el marco de soluciones centradas en procesos de transformación. Pero más allá de una simple moda, como trataremos de mostrar en este taller, la programación funcional conduce a soluciones de código robustas, versátiles y expresivas que difícilmente son comparables con las propias de la orientación a objetos.
Además JavaScript, como la mayoría de los lenguajes de scripting es un lenguaje idiomático que invita a pensar en términos funcionales. De hecho muchas veces, cuando programamos en Javascript, desarrollamos soluciones funcionales casi sin darnos cuenta. Pero para trabajar correctamente en el marco de este paradigma debemos saber, qué es exactamente la programación funcional, cuáles son sus ventajas y principios fundacionales, de qué mecanismos se sirve, qué técnicas de programación se utilizan, qué patrones de diseño funcional existen a nuestra disposición y qué estilos arquitectónicos emergen.
Este taller trata de dar una introducción a la programación funcional que comienza desde lo más básico y va pasando progresivamente hacia conceptos más avanzados. A continuación se resume una relación del programa de contenidos para que os hagáis una idea de lo que se va a abordar.
- Diseño de Funciones I. Recursión
- Diseño de Funciones II. Inmersion
- Orden Superior I. Famila map & reduce
- Orden Superior II. Evaluación Partial
- Orden Superior III. Closures & Retentión Léxica
- Composición I. compose & sequence
- Composición II. Inversión de control
- Composición III. Streams
- Diseño sin Estado I. Fundamentos
- Diseño sin Estado II. Mónadas
- Conceptos Avanzados I. Optimización
- Conceptos Avanzados II.Inmutabilidad
Todos estos temas se abordan en 12 ficheros `.js` que se encuentran en [https://goo.gl/YwXtkV], en la carpeta `code/`. Para falilitar la realización y autoevaluación, el material de este taller se ha dividido en dos carpetas. En `code/problems` puede encontrarse una descripción de cada ejercicio planteado junto con una plantilla de código que ayuda a escribir la solución y probarla. En la carpeta `code/solutions` se ofrece una propuesta de solución para cada ejercicio planteado. Se anima al lector a no consultar la solución hasta haber intentando cada ejercicio por si mismo.
An evening with... Microservices - Session 1Arkhotech
Si bien la tecnología de microservicios tiene ya un par de años, su uso más formal con implementaciones importantes en ambientes productivos es bastante reciente. En este meetup se hará un introducción mundo de los microservicios comenzando por los aspectos más teóricos, pasando por la descripción de arquitectura y buenas prácticas, para finalizar con un ejemplo práctico de implementación y un primer acercamiento al escalamiento.
NodeJS es una plataforma que permite programar servidores dedicados en Javascript de forma sencilla y eficaz. Pese a que Javascript no es un lenguaje con soporte a la concurrencia, el carácter no bloqueante de las operaciones que realizan accesos de entrada salida E/S permite avanzar los flujos de ejecución aumentando la productividad y la escalabilidad del sistema total. En efecto, los tiempos de espera en cada operación motivados por los accesos a disco son aprovechados para procesar nuevas peticiones entrantes en el servidor. Pese a sus innegables ventajas en productividad, el modelo de programación se complica. Dado que ahora las operaciones se liberan del flujo de control para retomarse posteriormente, ¿cómo podemos determinar cuándo una operación ha terminado? ¿Cómo podemos recuperar sus resultados? ¿Cómo gestionamos sus errores potenciales? A lo largo de este texto presentaremos diferentes modelos de programación que pueden ser empleado para dar respuesta a estas y otras preguntas en el marco de la programación asíncrona.
La programación funcional está cogiendo fuerte tracción en los últimos años dentro de la comunidad de desarrollo. Tal vez ello se deba al surgimiento de nuevas arquitecturas que demandan cotas de escalabilidad, resistencia y flexibilidad en el marco de soluciones centradas en procesos de transformación. Pero más allá de una simple moda, como trataremos de mostrar en este taller, la programación funcional conduce a soluciones de código robustas, versátiles y expresivas que difícilmente son comparables con las propias de la orientación a objetos.
Además JavaScript, como la mayoría de los lenguajes de scripting es un lenguaje idiomático que invita a pensar en términos funcionales. De hecho muchas veces, cuando programamos en Javascript, desarrollamos soluciones funcionales casi sin darnos cuenta. Pero para trabajar correctamente en el marco de este paradigma debemos saber, qué es exactamente la programación funcional, cuáles son sus ventajas y principios fundacionales, de qué mecanismos se sirve, qué técnicas de programación se utilizan, qué patrones de diseño funcional existen a nuestra disposición y qué estilos arquitectónicos emergen.
Este taller trata de dar una introducción a la programación funcional que comienza desde lo más básico y va pasando progresivamente hacia conceptos más avanzados. A continuación se resume una relación del programa de contenidos para que os hagáis una idea de lo que se va a abordar.
- Diseño de Funciones I. Recursión
- Diseño de Funciones II. Inmersion
- Orden Superior I. Famila map & reduce
- Orden Superior II. Evaluación Partial
- Orden Superior III. Closures & Retentión Léxica
- Composición I. compose & sequence
- Composición II. Inversión de control
- Composición III. Streams
- Diseño sin Estado I. Fundamentos
- Diseño sin Estado II. Mónadas
- Conceptos Avanzados I. Optimización
- Conceptos Avanzados II.Inmutabilidad
Todos estos temas se abordan en 12 ficheros `.js` que se encuentran en [https://goo.gl/YwXtkV], en la carpeta `code/`. Para falilitar la realización y autoevaluación, el material de este taller se ha dividido en dos carpetas. En `code/problems` puede encontrarse una descripción de cada ejercicio planteado junto con una plantilla de código que ayuda a escribir la solución y probarla. En la carpeta `code/solutions` se ofrece una propuesta de solución para cada ejercicio planteado. Se anima al lector a no consultar la solución hasta haber intentando cada ejercicio por si mismo.
Hybreed. Plataforma de desarrollo de aplicaciones móviles híbridas. Descripci...atSistemas
La plataforma de desarrollo de aplicaciones móviles híbridas de
atSistemas tiene como objetivo proporcionar las herramientas necesarias para construir aplicaciones multidispositivo aprovechando las tecnologías web.
Con este enfoque multiplataforma, el proyecto de construcción se reduce a un único desarrollo, frente a la opción tradicional de crear una versión separada por cada sistema operativo nativo o incluso por cada
terminal.
El resultado final del desarrollo con Hybreed es una aplicación móvil
híbrida, embebida posteriormente en un contenedor que la convierte en nativa, generando las diferentes versiones de aplicación por cada sistema operativo nativo.
Hybreed es el fruto del trabajo constante de nuestro departamento de I+D. En atSistemas, utilizamos Hybreed para llevar a cabo nuestros proyectos de creación de aplicaciones móviles híbridas. Además, ahora ofrecemos la posibilidad a nuestros clientes de adoptar esta solución como su propia plataforma de desarrollo móvil multiplataforma, como un valor asociado a nuestros servicios.
¿Conoces Windows Phone App Studio?, ¿aún no? En esta presentación conoceremos todas las posibilidades de esta nueva herramienta destinada a la creación de Aplicaciones para Windows Phone 8.
Cloud computing. Como rentabilizar la gestión de datos de su empresaMiguel Ángel Catalán
Presentación seminario Cloud Computing en la red de la CEA. Visión genérica del cloudcompuntig y exposición de las principales herramientas en la nube sobre sincronización y virtualización.
Hybreed. Plataforma de desarrollo de aplicaciones móviles híbridas. Descripci...atSistemas
La plataforma de desarrollo de aplicaciones móviles híbridas de
atSistemas tiene como objetivo proporcionar las herramientas necesarias para construir aplicaciones multidispositivo aprovechando las tecnologías web.
Con este enfoque multiplataforma, el proyecto de construcción se reduce a un único desarrollo, frente a la opción tradicional de crear una versión separada por cada sistema operativo nativo o incluso por cada
terminal.
El resultado final del desarrollo con Hybreed es una aplicación móvil
híbrida, embebida posteriormente en un contenedor que la convierte en nativa, generando las diferentes versiones de aplicación por cada sistema operativo nativo.
Hybreed es el fruto del trabajo constante de nuestro departamento de I+D. En atSistemas, utilizamos Hybreed para llevar a cabo nuestros proyectos de creación de aplicaciones móviles híbridas. Además, ahora ofrecemos la posibilidad a nuestros clientes de adoptar esta solución como su propia plataforma de desarrollo móvil multiplataforma, como un valor asociado a nuestros servicios.
¿Conoces Windows Phone App Studio?, ¿aún no? En esta presentación conoceremos todas las posibilidades de esta nueva herramienta destinada a la creación de Aplicaciones para Windows Phone 8.
Cloud computing. Como rentabilizar la gestión de datos de su empresaMiguel Ángel Catalán
Presentación seminario Cloud Computing en la red de la CEA. Visión genérica del cloudcompuntig y exposición de las principales herramientas en la nube sobre sincronización y virtualización.
Es un diagrama para La asistencia técnica o apoyo técnico es brindada por las compañías para que sus clientes puedan hacer uso de sus productos o servicios de la manera en que fueron puestos a la venta.
3Redu: Responsabilidad, Resiliencia y Respetocdraco
¡Hola! Somos 3Redu, conformados por Juan Camilo y Cristian. Entendemos las dificultades que enfrentan muchos estudiantes al tratar de comprender conceptos matemáticos. Nuestro objetivo es brindar una solución inclusiva y accesible para todos.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
2. Felipe Martínez
Ingeniero Informático de Sistemas con 15
años de experiencia. En los últimos años me he
especializado en tecnologías móviles (Android
/ iOs / Cross Platform). Me apasiona afrontar
nuevos retos e investigar con nuevas
tecnologías.
#mobilebusiness #mobiledevelopment #apps
Conceptos Básicos…
fmaralv@gmail.com
@fmaralv
http://www.linkedin.com/profile/view?id=215678645
4. Contenidos
Introducción al uso de este SDK basado en la
conectividad
Wifi-Direct
para
implementar
comunicaciones entre apps.
1 - Overview Alljoyn: Introducción y conceptos básicos
para poder hacer uso de este SDK.
Conceptos Básicos…
2 - Ejemplo de App Chat: Ejemplo práctico de cómo
poder hacer uso del SDK de Alljoyn en una app.
6. ¿Qué es Alljoyn?
Alljoyn es una tecnología P2P Open Source que
permite una comunicación inter-dispositivo, basada
en proximidad (no depende de los planes de datos ),
y completamente ad hoc, sin la necesidad de
intermediarios. Esta conectividad se establace
haciendo uso del protocolo Wi-Fi Direct o Bluetooth.
7. Internet of things (IOT)
El objetivo del IOT es permitir el intercambio de
información entre el mundo digital y el mundo
físico.
No existe una definición unificada sobre qué es el
IOT .La mejor forma de explicar el concepto es
imaginar un mundo en el que todos los objetos
cotidianos tienen una relación o una referencia
digital,mediante la tecnología(ej.:RFID). En este
mundo todos los objetos se pueden comunicar
entre sí , almacenando e intercambiando
información.
8. Internet of things (IOT)
El Internet de las Cosas es uno de los pilares del
paradigma Internet del Futuro(Future Internet).
Con IOT se abre la posibilidad de que cualquier
cosa(objeto físico) pueda conectarse a Internet
para transmitir o recibir información.
Este concepto abre la puerta a nuevos modelos de
negocio y nuevos servicios.
Nuevas soluciones cross
los objetos de un
vehículo podrán interactuar con los de edificios ,
otros vehículos o infraestucturas.
9. Desafios de IOT
Lagunas en torno a la privacidad y seguridad.
Falta de estándares globales.
Las Infraestructurasde comunicaciones actuales
han de adaptarse (y a veces hasta crearse
nuevas) para soportar nuevos dispositivos y
protocolos (p. ej. tecnología Zigbee)
Evolucionar los sistemas de procesamiento en
tiempo real actuales, para que puedan soportar
tecnologías Big Data ,Cloud , y Business Analytics.
10. Internet of EveryThing
Del «Internet of Things» al «Internet of EveryThing»
Para llegar al “EveryThing” es necesario dar un salto
exponencial:
El móvil o cualquier otro dispositivo del usuario
será bombardeado por servicios de la ciudad.
2.Necesidad de ampliar las infraestructuras de
comunicaciones actuales y mejora en las
tecnologías Big Data: servicios en tiempo real.
11. Internet of EveryThing
Business Analytics: La información deberá estar
filtrada, para que el usuario sólo reciba la que le
pueda interesar: Información personalizada.
4.Cloud Computing: La información deberá
disponibilizarse de manera global y distribuida.
12. Open Source
Alljoyn se distribuye bajo licencia Open Source por lo
que no tiene ningún coste. Al ser un software basado
en licencia Open Source estamos aceptando los
términos que implican el uso de este tipo de licencia:
http://opensource.org/docs/osd#fields-of-endeavor
13. Open Source
En cualquier caso siempre podremos realizar una
app comercial que hago uso de Alljoyn respetando los
términos de la licencia que nos obliga a mencionar el
propietario original.
15. AllSeen Alliance
Con fecha 10 de Diciembre del 2013 Qualcomm
anuncia su adhesión a la alianza “Allseen Alliance”.
Esta alianza entre grandes empresas como LG,
Sharp, Panasonic ,Silicon Image, Cisco, HTC,…etc.
Esta alianza tiene como objetivo promover el
concepto de “Internet of Things”. Se busca una mayor
interacción entre diferentes sectores como la
educación
,
salud
,
casa
conectada
,
automoción…etc.
16. Ejemplos de Uso
Existen multitud de ámbitos de uso como juegos ,
multipantalla , proximidad social , colaboración
,educación…etc , el limite esta en tu imaginación.
Ejemplos de apps: https://wwwdev.alljoyn.org/app-developers
17. Wi-Fi Direct
Wifi Direct (2010) es un programa de certificación
que en resumidas cuentas permite la conectividad por
proximidad entre dos dispositivos de forma
inalámbrica sin necesidad de un punto de acceso.
Alianza Wifi: http://www.wi-fi.org/about/organization
18. Wi-Fi Direct Vs Alljoyn
Si con Wifi-Direct podemos establecer comunicación entre
dispositivos ¿Para que necesitamos Alljoyn?
Alljoyn no depende de hardware o sistemas operativos
(multiplataforma).
Desarrollar apps que implementen conectividad Wifi-Direct
sin necesidad de trabajar con Android 4.0 (API level 14).
19. Wi-Fi Direct vs Bluetooth
Android soporta Wifi-Direct (2010) desde la v4.0
(API level 14) mientras que Bluetooth v4.0 (2010)
es soportado desde la v4.3 (API level 18).
Wi-Fi Direct ofrece mayor velocidad de conexión y
soporta mayores distancias que Bluetooth
Wifi-Direct (250 Mbps y 656 feet) Vs Bluetooth 4.0
(250 Mbps y 200 feet)
Wi-Fi Direct es más seguro que Bluetooth
Wifi-Direct (WPA2 ) Vs Bluetooth 4.0 ( AES 128-bit )
20. Wi-Fi Direct vs Bluetooth
Wi-Fi Direct tiene mejor compatibilidad con
versiones anteriores que Bluetooth.
http:// www.tested.com/news/166998-google-app-play-0813/
http://www.pcworld.com/article/208778/Wi_Fi_Direct_vs_Bluetooth_4_0_A
_Battle_for_Supremacy.html
21. Futuro
Qualcomm está trabajando en su propia solución a
nivel hardware llamada FlashLinq, que en teoría podría
extender el alcance de Alljoyn a un kilómetro en el
mejor de los casos, y aún sería muy superior a otras
soluciones en el peor.
23. Arquitectura Alljoyn
El modelo de arquitectura de Alljoyn se basa en dos
partes claramente diferenciadas:
1. La librería para el soporte a la parte cliente de
las aplicaciones
2. Un servicio en segundo
Generalidades…
plano que proporciona
todos los servicios relacionados con el bus de
comunicación como pueda ser el registro del
servicio o la búsqueda de nuevos dispositivos.
27. Integración del SDK
Deberemos seguir los siguientes para trabajar con el
SDK:
1. Añadir las librerías que contienen el SDK .
2. Debemos cargar la librería nativa de alljoyn desde
código.
3. Configurar ofuscadores de código como ProGuard.
4. Modificar el Manifiesto de la aplicación
introduciendo permisos de uso , actividades ,
servicios…etc
32. Implementación MCV
Nos encontramos limitaciones en los componentes
Android:
AsynTask:
Intent Service:
No especifica como notificar a
Implementación cambia
los clientes.
Ningún controlo sobre la
concurrencia.
No especifican método de
gestión de errores.
dependiendo del la versión de
android.
En la versión actual se ejecutan en
serie.
Suelen ser fuente de context leak.
No especifican método de gestión
de errores/excepciones.
33. Programación Reactiva
La programación reactiva es un paradigma de
programación
orientado a flujos de datos y a la
propagación de cambios.
Prog. Imperativa
Prog. Reactiva
X = 10;
X = 10;
y = x + 5;
Func<int> y = () -> {x + 5};
X= 20
X= 20
Cual es el valor de Y? 15
Cual es el valor de Y? 25
34. Programación Reactiva
La programación reactiva es un paradigma de
programación
orientado a flujos de datos y a la
propagación de cambios.
Prog. Imperativa
Prog. Reactiva
X = 10;
X = 10;
y = x + 5;
Func<int> y = () -> {x + 5};
X= 20
X= 20
Cual es el valor de Y? 15
Cual es el valor de Y? 25
35. RxJava
Una librería para componer programas asíncronos y
basados en eventos mediante el uso de secuencias
observables.
Open source.
Creada por Netflix.
Un port de “Reactive extension” creadas por
Microsoft.
Observable / Observer como elementos básicos.