Charla dada en el marco del IV Congreso Español de Informática (CEDI) en la Universidad Complutense de Madrid, en las jornadas organizadas por PROLE para su V Taller de Programación Funcional.
Manejando Millones de Usuarios Concurrentes con Erlang/OTPManuel Rubio
Este documento presenta una introducción a Erlang/OTP. Brevemente describe a Erlang/OTP como un lenguaje de programación funcional y una plataforma diseñada para sistemas altamente concurrentes, tolerantes a fallos y distribuidos. También menciona algunos casos de uso comunes como WhatsApp y ejabberd, y explica cómo Erlang/OTP puede abordar mejor los problemas de escalabilidad en comparación con otras tecnologías como PHP.
Erlang otp yuilop - ieee developer days 2013Manuel Rubio
Este documento presenta información sobre Erlang/OTP. Introduce al autor y su experiencia con varios lenguajes de programación. Explica brevemente qué es Yuilop y cómo evolucionó su arquitectura para admitir millones de usuarios concurrentes, pasando de C++ y PHP a Erlang debido a su capacidad de escalabilidad. También resume las características clave de Erlang como lenguaje funcional orientado a la concurrencia, su sintaxis y comportamientos como OTP.
Chicago boss - Altenwald - Betabeers X CórdobaManuel Rubio
Este documento presenta a Manuel Ángel Rubio Jiménez, un programador y administrador de sistemas con más de 20 años de experiencia. Explica brevemente lo que es Erlang, incluyendo su historia, características y usuarios notables. También describe conceptos clave como el modelo actor, OTP, patrones de diseño comunes en Erlang como gen_server y gen_fsm, y el framework web ChicagoBoss basado en Erlang.
Erlang/OTP - Altenwald - CodeMotion Madrid 2013Manuel Rubio
Erlang/OTP: Un Mundo Concurrente, charla dada el 19 de octubre de 2013 a las 15:15h en el Track Programming de CodeMotion 2013 de Madrid. La charla hace un repaso de la base del Lenguaje Erlang, el framework OTP y las ventajas que ofrece su plataforma.
http://altenwald.org/2013/10/21/codemotion-2013/
Este documento presenta una introducción a TypeScript. Se describe a TypeScript como una posible solución para añadir tipos estáticos y características de programación orientada a objetos a JavaScript. El documento también proporciona información sobre los orígenes de TypeScript y recursos adicionales como su sitio web y código fuente.
Rust es un lenguaje de programación de sistemas creado por Mozilla Corporation que es potente y seguro. El documento presenta a Karla Jurado y explica brevemente qué es Rust, por qué usar Rust en lugar de C/C++ o Java, cómo compilar código Rust usando Cargo, y conceptos básicos como variables, mutabilidad, tipos de datos, manejo de memoria y concurrencia. Finalmente, Karla agradece y ofrece contactarse con más preguntas.
Get Back in Control of your SQL with jOOQ - GeekOut by ZeroTurnaroundDataGeekery
SQL is a powerful and highly expressive language for queries against relational databases. SQL is established, standardised and hardly challenged by alternative querying languages. Nonetheless, in the Java ecosystem, there had been few relevant steps forward since JDBC to better integrate SQL into Java. All attention was given to object-relational mapping and language abstractions on a higher level, such as OQL, HQL, JPQL, CriteriaQuery. In the meantime, these abstractions have become almost as complex as SQL itself, regardless of the headaches they’re giving to DBAs who can no longer patch the generated SQL.
jOOQ is a dual-licensed Open Source product filling this gap. It implements SQL itself as an internal domain-specific language in Java, allowing for the typesafe construction and execution of SQL statements of arbitrary complexity. This includes nested selects, derived tables, joins, semi-joins, anti-joins, self-joins, aliasing, as well as many vendor-specific extensions such as stored procedures, arrays, user-defined types, recursive SQL, grouping sets, pivot tables, window functions and many other OLAP features. jOOQ also includes a source code generator allowing you to compile queries in modern IDEs such as Eclipse very efficiently.
jOOQ is a good choice in a Java application where SQL and the specific relational database are important. It is an alternative when JPA / Hibernate abstract too much, JDBC too little. It shows, how a modern domain-specific language can greatly increase developer productivity, internalising SQL into Java.
Manejando Millones de Usuarios Concurrentes con Erlang/OTPManuel Rubio
Este documento presenta una introducción a Erlang/OTP. Brevemente describe a Erlang/OTP como un lenguaje de programación funcional y una plataforma diseñada para sistemas altamente concurrentes, tolerantes a fallos y distribuidos. También menciona algunos casos de uso comunes como WhatsApp y ejabberd, y explica cómo Erlang/OTP puede abordar mejor los problemas de escalabilidad en comparación con otras tecnologías como PHP.
Erlang otp yuilop - ieee developer days 2013Manuel Rubio
Este documento presenta información sobre Erlang/OTP. Introduce al autor y su experiencia con varios lenguajes de programación. Explica brevemente qué es Yuilop y cómo evolucionó su arquitectura para admitir millones de usuarios concurrentes, pasando de C++ y PHP a Erlang debido a su capacidad de escalabilidad. También resume las características clave de Erlang como lenguaje funcional orientado a la concurrencia, su sintaxis y comportamientos como OTP.
Chicago boss - Altenwald - Betabeers X CórdobaManuel Rubio
Este documento presenta a Manuel Ángel Rubio Jiménez, un programador y administrador de sistemas con más de 20 años de experiencia. Explica brevemente lo que es Erlang, incluyendo su historia, características y usuarios notables. También describe conceptos clave como el modelo actor, OTP, patrones de diseño comunes en Erlang como gen_server y gen_fsm, y el framework web ChicagoBoss basado en Erlang.
Erlang/OTP - Altenwald - CodeMotion Madrid 2013Manuel Rubio
Erlang/OTP: Un Mundo Concurrente, charla dada el 19 de octubre de 2013 a las 15:15h en el Track Programming de CodeMotion 2013 de Madrid. La charla hace un repaso de la base del Lenguaje Erlang, el framework OTP y las ventajas que ofrece su plataforma.
http://altenwald.org/2013/10/21/codemotion-2013/
Este documento presenta una introducción a TypeScript. Se describe a TypeScript como una posible solución para añadir tipos estáticos y características de programación orientada a objetos a JavaScript. El documento también proporciona información sobre los orígenes de TypeScript y recursos adicionales como su sitio web y código fuente.
Rust es un lenguaje de programación de sistemas creado por Mozilla Corporation que es potente y seguro. El documento presenta a Karla Jurado y explica brevemente qué es Rust, por qué usar Rust en lugar de C/C++ o Java, cómo compilar código Rust usando Cargo, y conceptos básicos como variables, mutabilidad, tipos de datos, manejo de memoria y concurrencia. Finalmente, Karla agradece y ofrece contactarse con más preguntas.
Get Back in Control of your SQL with jOOQ - GeekOut by ZeroTurnaroundDataGeekery
SQL is a powerful and highly expressive language for queries against relational databases. SQL is established, standardised and hardly challenged by alternative querying languages. Nonetheless, in the Java ecosystem, there had been few relevant steps forward since JDBC to better integrate SQL into Java. All attention was given to object-relational mapping and language abstractions on a higher level, such as OQL, HQL, JPQL, CriteriaQuery. In the meantime, these abstractions have become almost as complex as SQL itself, regardless of the headaches they’re giving to DBAs who can no longer patch the generated SQL.
jOOQ is a dual-licensed Open Source product filling this gap. It implements SQL itself as an internal domain-specific language in Java, allowing for the typesafe construction and execution of SQL statements of arbitrary complexity. This includes nested selects, derived tables, joins, semi-joins, anti-joins, self-joins, aliasing, as well as many vendor-specific extensions such as stored procedures, arrays, user-defined types, recursive SQL, grouping sets, pivot tables, window functions and many other OLAP features. jOOQ also includes a source code generator allowing you to compile queries in modern IDEs such as Eclipse very efficiently.
jOOQ is a good choice in a Java application where SQL and the specific relational database are important. It is an alternative when JPA / Hibernate abstract too much, JDBC too little. It shows, how a modern domain-specific language can greatly increase developer productivity, internalising SQL into Java.
El documento habla sobre software libre y GNU/Linux. Explica que el software libre permite la libertad de uso, modificación y redistribución. Menciona varias distribuciones populares de GNU/Linux como Ubuntu, Debian y Knoppix. También describe entornos de escritorio como GNOME, KDE y XFCE. Finalmente, menciona asociaciones de usuarios de software libre como AsturLiNUX.
Este documento presenta una introducción al lenguaje de programación Python. Explica conceptos como la arquitectura de un computador, sistemas operativos, lenguajes de programación, compiladores e intérpretes. Luego se enfoca en Python, describiendo sus características, versiones, implementaciones como CPython e IDEs como Wing IDE y PyCharm. Finalmente, proporciona referencias y consejos para aprender Python.
¡Mejora el Rendimiento de tu Webapp con Elixir!Manuel Rubio
Este documento presenta Elixir y Phoenix como opciones para mejorar el rendimiento de las aplicaciones web. Brevemente describe a Elixir como un lenguaje de programación funcional inspirado en Erlang que agrega características como evaluación perezosa y metaprogramación. También introduce Phoenix como un framework web para Elixir que sigue un patrón similar a Ruby on Rails y es adecuado para la construcción de APIs y aplicaciones web escalables.
Este documento describe las ventajas de usar Python, incluyendo su sintaxis simple, su enfoque en resolver problemas sobre la sintaxis, su amplio rango de usos, y ejemplos exitosos de su uso por compañías como YouTube, Google, NASA y el Ejército del Perú.
El documento presenta a Neurowork, una compañía española de tecnologías de la información que ofrece soluciones y servicios basados en software libre. Describe los servicios y soluciones de infraestructura y comunicaciones de Neurowork, incluyendo casos de éxito como proyectos para BBVA, Vodafone y otros clientes. Finalmente, muestra ejemplos prácticos del trabajo de Neurowork.
El documento presenta a Neurowork, una compañía española de tecnologías de la información que ofrece soluciones y servicios basados en software libre. Describe los servicios de infraestructura y comunicaciones de la compañía, incluyendo casos de éxito como proyectos para BBVA, Vodafone y Asterisk. También resume ejemplos prácticos como un visor de archivos CHM y un navegador web para KDE.
El documento habla sobre el alto rendimiento en el desarrollo web. Explica que el alto rendimiento se puede lograr optimizando la red, el hardware, la infraestructura y el código. En particular, menciona algunas formas de optimizar el protocolo HTTP, el servidor web, la base de datos, el lenguaje de programación y el código del lado del servidor y cliente para mejorar el rendimiento. También destaca la importancia del alto rendimiento para reducir los costos y el tiempo de lanzamiento de nuevas funcionalidades.
Este documento resume los conceptos básicos de los lenguajes de programación. Explica que un lenguaje de programación es un lenguaje formal que permite dar instrucciones a una computadora para ejecutar un programa. Luego clasifica los lenguajes en de bajo y alto nivel, y describe algunos lenguajes populares como Java, C++ y Python. Finalmente, distingue entre compiladores e intérpretes como métodos para traducir el código fuente a un programa ejecutable.
El documento habla sobre el desarrollo web con herramientas libres. Explica que el software libre ofrece alternativas gratuitas que pueden ahorrar costos a las empresas. Describe algunas de las herramientas libres más populares como Linux, Apache, MySQL, PHP y cómo se usan juntas en un entorno LAMP. Resalta las ventajas del código abierto y la libertad que ofrecen estas herramientas.
Las tecnologías de software libre y código abierto han pasado de ser una iniciativa de un grupo de hackers en centros de investigación a formar parte de soluciones innovadoras que ya son tomadas en cuenta en la industria a nivel global. Esta charla explora los principios, alcances e implicancias de dichas tecnologías en el mundo actual y hace hincapié en la importancia de contar con profesionales conocedores de sus posibilidades.
Este documento describe una práctica de campo realizada por estudiantes en el Ayuntamiento de Ensenada para analizar su red informática. Se describe la topología de la red, que consiste en varias LAN separadas conectadas por un anillo, y los componentes como switches, routers y servidores. La red utiliza protocolos TCP/IP en una configuración broadcast de 100 Mbps a través de cableado categoría 6. Los servidores funcionan con sistemas operativos Linux y Windows, y proveen servicios de correo, web y archivos.
Conceptos básicos y metodología de la programaciónjusto morales
El documento resume los conceptos básicos de programación, incluyendo las definiciones de computadora, datos, información y algoritmos. Explica las diferentes etapas del desarrollo de software como el análisis, diseño, codificación, pruebas y mantenimiento. También describe los diferentes tipos de lenguajes de programación como los lenguajes de máquina, ensamblador y de alto nivel.
Sartu Álava es un centro de nuevas tecnologías en Álava que usa software libre. Ofrece formación para la ciudadanía y colectivos, y crea sitios web y cartelería para colectivos. Usa 30 ordenadores con Ubuntu para impartir cursos y gestionarlos con su aplicación Kudesare. Programación web se hace con PHP, MySQL, jQuery y Wordpress. Diseño se hace con Gimp e Inkscape. Usa servicios como Cfengine, Redmine y Nagios.
Cómo programar C++, 9na Edición - Paul Deitel.pdfMonica277891
Este documento presenta un libro sobre programación en C++. El libro utiliza el método de código activo de Deitel, donde los conceptos se presentan en el contexto de programas completos en lugar de fragmentos de código. El libro cubre temas como programación orientada a objetos, el estándar C++11, apuntadores inteligentes y la biblioteca estándar de C++. El documento también proporciona información sobre cómo acceder a capítulos adicionales del libro en línea.
Los lenguajes de programación se clasifican en tres tipos principales: lenguajes de máquina, lenguajes de bajo nivel como ensambladores, y lenguajes de alto nivel. Los lenguajes de alto nivel son más fáciles de usar, portables entre sistemas, pero menos eficientes que los lenguajes de bajo nivel y máquina. Java es un lenguaje de programación orientado a objetos, interpretado, portable y de código abierto.
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
En esta charla se pretenden tocar todas las cosas que debemos tener en cuenta para sacar el máximo rendimiento y poder escalar usando Symfony2.
Se toca desde parámetros de configuración de PHP y APC, optimización de Composer, dónde optimizar, quick wins varios, cómo hacer profiling correctamente, BBDD NoSQL vs SQL y por supuesto lecciones aprendidas en mis anteriores trabajos
Conceptos básicos y metodología de la programaciónMarco Chunab
Una computadora es una máquina capaz de procesar datos y entregar resultados. Los programas indican a la computadora qué hacer mediante instrucciones. Existen diferentes tipos de datos como números, caracteres y lógicos, y lenguajes de programación como el lenguaje máquina, ensamblador y de alto nivel para codificar algoritmos que resuelven problemas de forma estructurada.
Este documento describe las ventajas de usar plataformas GNU/Linux para el desarrollo de software, incluyendo una variedad de lenguajes de programación compatibles, herramientas para todo el ciclo de desarrollo, entornos integrados de desarrollo, y la habilidad de crear aplicaciones multiplataforma. También discute brevemente algunas desventajas como la curva de aprendizaje para algunas herramientas y falta de documentación.
Más contenido relacionado
Similar a Erlang/OTP - V Taller de Programación Funcional
El documento habla sobre software libre y GNU/Linux. Explica que el software libre permite la libertad de uso, modificación y redistribución. Menciona varias distribuciones populares de GNU/Linux como Ubuntu, Debian y Knoppix. También describe entornos de escritorio como GNOME, KDE y XFCE. Finalmente, menciona asociaciones de usuarios de software libre como AsturLiNUX.
Este documento presenta una introducción al lenguaje de programación Python. Explica conceptos como la arquitectura de un computador, sistemas operativos, lenguajes de programación, compiladores e intérpretes. Luego se enfoca en Python, describiendo sus características, versiones, implementaciones como CPython e IDEs como Wing IDE y PyCharm. Finalmente, proporciona referencias y consejos para aprender Python.
¡Mejora el Rendimiento de tu Webapp con Elixir!Manuel Rubio
Este documento presenta Elixir y Phoenix como opciones para mejorar el rendimiento de las aplicaciones web. Brevemente describe a Elixir como un lenguaje de programación funcional inspirado en Erlang que agrega características como evaluación perezosa y metaprogramación. También introduce Phoenix como un framework web para Elixir que sigue un patrón similar a Ruby on Rails y es adecuado para la construcción de APIs y aplicaciones web escalables.
Este documento describe las ventajas de usar Python, incluyendo su sintaxis simple, su enfoque en resolver problemas sobre la sintaxis, su amplio rango de usos, y ejemplos exitosos de su uso por compañías como YouTube, Google, NASA y el Ejército del Perú.
El documento presenta a Neurowork, una compañía española de tecnologías de la información que ofrece soluciones y servicios basados en software libre. Describe los servicios y soluciones de infraestructura y comunicaciones de Neurowork, incluyendo casos de éxito como proyectos para BBVA, Vodafone y otros clientes. Finalmente, muestra ejemplos prácticos del trabajo de Neurowork.
El documento presenta a Neurowork, una compañía española de tecnologías de la información que ofrece soluciones y servicios basados en software libre. Describe los servicios de infraestructura y comunicaciones de la compañía, incluyendo casos de éxito como proyectos para BBVA, Vodafone y Asterisk. También resume ejemplos prácticos como un visor de archivos CHM y un navegador web para KDE.
El documento habla sobre el alto rendimiento en el desarrollo web. Explica que el alto rendimiento se puede lograr optimizando la red, el hardware, la infraestructura y el código. En particular, menciona algunas formas de optimizar el protocolo HTTP, el servidor web, la base de datos, el lenguaje de programación y el código del lado del servidor y cliente para mejorar el rendimiento. También destaca la importancia del alto rendimiento para reducir los costos y el tiempo de lanzamiento de nuevas funcionalidades.
Este documento resume los conceptos básicos de los lenguajes de programación. Explica que un lenguaje de programación es un lenguaje formal que permite dar instrucciones a una computadora para ejecutar un programa. Luego clasifica los lenguajes en de bajo y alto nivel, y describe algunos lenguajes populares como Java, C++ y Python. Finalmente, distingue entre compiladores e intérpretes como métodos para traducir el código fuente a un programa ejecutable.
El documento habla sobre el desarrollo web con herramientas libres. Explica que el software libre ofrece alternativas gratuitas que pueden ahorrar costos a las empresas. Describe algunas de las herramientas libres más populares como Linux, Apache, MySQL, PHP y cómo se usan juntas en un entorno LAMP. Resalta las ventajas del código abierto y la libertad que ofrecen estas herramientas.
Las tecnologías de software libre y código abierto han pasado de ser una iniciativa de un grupo de hackers en centros de investigación a formar parte de soluciones innovadoras que ya son tomadas en cuenta en la industria a nivel global. Esta charla explora los principios, alcances e implicancias de dichas tecnologías en el mundo actual y hace hincapié en la importancia de contar con profesionales conocedores de sus posibilidades.
Este documento describe una práctica de campo realizada por estudiantes en el Ayuntamiento de Ensenada para analizar su red informática. Se describe la topología de la red, que consiste en varias LAN separadas conectadas por un anillo, y los componentes como switches, routers y servidores. La red utiliza protocolos TCP/IP en una configuración broadcast de 100 Mbps a través de cableado categoría 6. Los servidores funcionan con sistemas operativos Linux y Windows, y proveen servicios de correo, web y archivos.
Conceptos básicos y metodología de la programaciónjusto morales
El documento resume los conceptos básicos de programación, incluyendo las definiciones de computadora, datos, información y algoritmos. Explica las diferentes etapas del desarrollo de software como el análisis, diseño, codificación, pruebas y mantenimiento. También describe los diferentes tipos de lenguajes de programación como los lenguajes de máquina, ensamblador y de alto nivel.
Sartu Álava es un centro de nuevas tecnologías en Álava que usa software libre. Ofrece formación para la ciudadanía y colectivos, y crea sitios web y cartelería para colectivos. Usa 30 ordenadores con Ubuntu para impartir cursos y gestionarlos con su aplicación Kudesare. Programación web se hace con PHP, MySQL, jQuery y Wordpress. Diseño se hace con Gimp e Inkscape. Usa servicios como Cfengine, Redmine y Nagios.
Cómo programar C++, 9na Edición - Paul Deitel.pdfMonica277891
Este documento presenta un libro sobre programación en C++. El libro utiliza el método de código activo de Deitel, donde los conceptos se presentan en el contexto de programas completos en lugar de fragmentos de código. El libro cubre temas como programación orientada a objetos, el estándar C++11, apuntadores inteligentes y la biblioteca estándar de C++. El documento también proporciona información sobre cómo acceder a capítulos adicionales del libro en línea.
Los lenguajes de programación se clasifican en tres tipos principales: lenguajes de máquina, lenguajes de bajo nivel como ensambladores, y lenguajes de alto nivel. Los lenguajes de alto nivel son más fáciles de usar, portables entre sistemas, pero menos eficientes que los lenguajes de bajo nivel y máquina. Java es un lenguaje de programación orientado a objetos, interpretado, portable y de código abierto.
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
En esta charla se pretenden tocar todas las cosas que debemos tener en cuenta para sacar el máximo rendimiento y poder escalar usando Symfony2.
Se toca desde parámetros de configuración de PHP y APC, optimización de Composer, dónde optimizar, quick wins varios, cómo hacer profiling correctamente, BBDD NoSQL vs SQL y por supuesto lecciones aprendidas en mis anteriores trabajos
Conceptos básicos y metodología de la programaciónMarco Chunab
Una computadora es una máquina capaz de procesar datos y entregar resultados. Los programas indican a la computadora qué hacer mediante instrucciones. Existen diferentes tipos de datos como números, caracteres y lógicos, y lenguajes de programación como el lenguaje máquina, ensamblador y de alto nivel para codificar algoritmos que resuelven problemas de forma estructurada.
Este documento describe las ventajas de usar plataformas GNU/Linux para el desarrollo de software, incluyendo una variedad de lenguajes de programación compatibles, herramientas para todo el ciclo de desarrollo, entornos integrados de desarrollo, y la habilidad de crear aplicaciones multiplataforma. También discute brevemente algunas desventajas como la curva de aprendizaje para algunas herramientas y falta de documentación.
Similar a Erlang/OTP - V Taller de Programación Funcional (20)
2. ¿Quién soy?
○ Programador desde los 12 años... unos 20 años programando en: Perl,
Python, Ruby, PHP, Java, C/C++, JavaScript, Pascal, Modula-2, Basic y
Erlang.
○ Administrador de sistemas desde los 22 años... unos 10 años administrando
Windows, GNU/Linux y BSD.
○ En definitiva... DevOps.
○ Fundador de AltenWald y Freelance.
○ Contacto:
○ Blog: http://bosqueviejo.net
○ Twitter: @MRonErlang
5. Caso
○ En 2005, sistemas C++ y MySQL
○ Máx. 80 usuarios concurrentes
○ Crashes son muy frecuentes
○ En 2006, sistemas C++, Python y MySQL
○ Máx. 1.000 usuarios concurrentes
○ Requiere reinicios, el código es difícil de mantener... muchos errores
○ En 2007, sistemas Erlang, Python y MySQL
○ De 20.000 a 1.000.000 de usuarios concurrentes en Call of Duty 4
○ De 500 a 50.000 peticiones por segundo
○ De 50 a 1.850 servidores
15. Mensajería Instantánea
○ Android y PHP (vía HTTP)
○ Falta de instantaneidad en los mensajes
○ Hace falta una gran infraestructura además de ayudas:
■ Memcache
■ APC
■ FPM, FastCGI, Ngnix, ...
○ Android, iOS y Java (vía XMPP)
○ OpenFire no sirve para una cantidad alta de usuarios concurrentes
○ Los deadlocks de Java hacen que todo caiga
○ Android, iOS, BlackBerry, Windows Phone y Erlang (vía XMPP)
○ Escalabilidad asegurada
○ Más de 2 millones de usuarios con alto grado de concurrencia
17. ¿Por qué Erlang?
○ Lenguaje y Plataforma maduras
○ Distribución y Concurrencia nativas
○ Modelo Actor
○ Paradigma funcional
○ Construído e ideal para la programación en la nube de:
○ Sitios web
○ Aplicaciones móviles
○ Aplicaciones de mensajería y telefonía
○ Videojuegos
21. Agradecimientos
○ Comité del TPF 2013
○ Universidad Complutense de Madrid
○ Congreso Español de Informática (CEDI)
○ ¡y a todos vosotros por asistir!