Este documento habla sobre integración continua y Rails. Explica qué es la integración continua, sus beneficios como reducir riesgos y errores. Detalla los pasos para configurar un servidor de integración continua como Hudson o CruiseControl y automatizar tareas como pruebas, despliegues y feedback.
Desenredando el toolchain de JavascriptSoftware Guru
Si eres un desarrollador con experiencia en otros lenguajes y estás comenzando a hacer desarrollo con Javascript, posiblemente te intimide la enorme cantidad y variedad de herramientas que típicamente se usan en los proyectos: transpilers, module bundlers, task runners, linters, etc. En esta sesión explicaremos el propósito de cada una, y las opciones más comunes.
Sesión presentada por Jeduan Cornejo en SG Next 2017
Breve introducción práctica al DevOps - (es) 2021_03_18Young Suk Ahn Park
DevOps es un cambio de cultura que acelera el ciclo de desarrollo de software sin comprometer la calidad. Esta diapositiva hace una breve introducción al DevOps con ejemplos concretos de proceso y herramientas.
Introducción a la automatización de pruebas con tecnologías .NetAbel Quintana Lopez
La automatización de pruebas es esencial para probar nuestros proyectos de manera eficiente, por lo que es fundamental conocer las herramientas y tecnologías que nos permiten automatizar.
Una de las tecnologías más usadas y populares en el desarrollo del software es .Net, debido a esto es sumamente importante en el área de testing conocer las herramientas disponibles en el mercado que nos permiten la automatización de pruebas con esta tecnología.
Por lo que en este taller estaremos viendo 3 temas fundamentales:
Que es la automatización de pruebas,
Que ventajas tiene la automatización para nuestros proyectos,
y como podemos automatizar pruebas usando tecnologías de .Net
Desenredando el toolchain de JavascriptSoftware Guru
Si eres un desarrollador con experiencia en otros lenguajes y estás comenzando a hacer desarrollo con Javascript, posiblemente te intimide la enorme cantidad y variedad de herramientas que típicamente se usan en los proyectos: transpilers, module bundlers, task runners, linters, etc. En esta sesión explicaremos el propósito de cada una, y las opciones más comunes.
Sesión presentada por Jeduan Cornejo en SG Next 2017
Breve introducción práctica al DevOps - (es) 2021_03_18Young Suk Ahn Park
DevOps es un cambio de cultura que acelera el ciclo de desarrollo de software sin comprometer la calidad. Esta diapositiva hace una breve introducción al DevOps con ejemplos concretos de proceso y herramientas.
Introducción a la automatización de pruebas con tecnologías .NetAbel Quintana Lopez
La automatización de pruebas es esencial para probar nuestros proyectos de manera eficiente, por lo que es fundamental conocer las herramientas y tecnologías que nos permiten automatizar.
Una de las tecnologías más usadas y populares en el desarrollo del software es .Net, debido a esto es sumamente importante en el área de testing conocer las herramientas disponibles en el mercado que nos permiten la automatización de pruebas con esta tecnología.
Por lo que en este taller estaremos viendo 3 temas fundamentales:
Que es la automatización de pruebas,
Que ventajas tiene la automatización para nuestros proyectos,
y como podemos automatizar pruebas usando tecnologías de .Net
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!Iván López Martín
Slides de mi charla de Codemotion 2014: "Spring ha muerto... ¡Larga vida a Spring Boot!"
El codigo está disponible en: https://github.com/lmivan/codemotion-madrid-2014-examples
--------------
Actualmente se necesita un tiempo nada despreciable para configurar la arquitectura de tu aplicación y empezar a desarrollar. Y si hablamos de Spring esto pueden ser horas o incluso días...
¿Qué tal si tardases menos de 5 minutos?
Spring Boot permite de manera fácil y rápida la creación de aplicaciones basadas en Spring Framework eliminando toda la configuración XML. No se trata de generación de código sino que proporciona configuraciones por defecto a la vez que permite de manera muy sencilla sobreescribir estas configuraciones según nuestras necesidades. Con él podemos crear aplicaciones "production-ready" proporcionando adicionalmente y de manera automática métricas, health-checks y configuración externalizada.
En la charla verás, entre otros, ejemplos introductorios, la creación de un pequeño API Rest, el uso de Websockets... y ¡muchos más!
Todos los ejemplos que verás estarán escritos en Groovy, pero eso no te impedirá sacar todo el provecho a la charla aunque tu lenguaje favorito sea Java o Scala.
Jenkins - don't break my builds! is an introductory talk in spanish I gave at the PHP Conference 2013 in Argentina. I spoke about how I met Contintinuous Integration at Google in 2005, and how my experience has been since. I also gave tips on how to start using it in projects that have no "integration" to speak of (such as most PHP projects).
En la charla estaremos conversando sobre las buenas prácticas de testing que podemos aplicar en la cultura de DevOps. Veremos como la automatización de pruebas es un peldaño fundamental para construir los pipelines de continuous delivery y continuous integration usando herramientas como Docker, Jenkins y Selenium. Compartiremos nuestra experiencia trabajando con Microservicios y con el desarrollo de herramientas de automatización de pruebas para apoyar en las tareas de DevOps.
Cómo iniciarme en el mundo de la automatización de pruebasAbel Quintana Lopez
Aprender a automatizar pruebas nos puede llevar tiempo, horas de dedicación y se nos pueden presentar ciertas dificultades en el camino del aprendizaje, pero teniendo una guía y un camino bien definido con recursos que están a nuestro alcance podemos iniciarnos en el mundo de la automatización de pruebas.
Casper JS - Asegurando la calidad en front-end DrupalDavid Gil Sánchez
En esta sesión presentaremos como estamos utilizando CasperJS (http://casperjs.org/) para asegurar la calidad de algunos de nuestros desarrollos y evitar los tan temidos (y comunes) bugs de regresión.
Mostraremos el uso básico de CasperJS y veremos un caso real en el que estamos testando la lógica principal de un portal con procesos complejos que involucran submits de formularios multipaso, testeo con multiples roles, etc...
Curso de test driven development usando AngularJS, Jasmine, Karma, Protractor, y Gulp para automatizar todo.
Codigo del proyecto de ejemplo:
https://github.com/rodrigopivi/angularComponentStarter
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de PruebasGlobant
Puedes encontrar el video de la charla acá: https://youtu.be/Dq48oJfv_3U
Cypress es una herramienta de automatización similar a Selenium, TestCafe entre otros, creada por desarrolladores Front End para desarrolladores Front End. En esta sesión aprenderemos conceptos básicos para que los Test Automation Engineer puedan beneficiarse de ella.
----------------------------------------------------------------------------------------------------------------------
Descúbre todas nuestras oportunidades acá: https://mycareer.globant.com/
Siguenos en:
Facebook: https://www.facebook.com/Globant/
Twitter: https://twitter.com/Globant
Instagram: https://www.instagram.com/globantpics/
Linkedin: https://www.linkedin.com/company/globant/
Sesión de la DrupalCamp Jerez 2015 sobre Drupal + Capistrano.
En esta sesión presentaremos de forma práctica como estamos realizando nuestros despliegues de proyectos Drupal en entornos clusterizados en Amazon AWS usando una combinación de Capistrano 3 (http://capistranorb.com/) y una política de ramas en GIT.
La sesión combinará una parte teórica con una parte de demo real. El objetivo es que en media hora se tengan los conceptos clave para que a partir de ahora os olvidéis de la subida a producción usando sFTP, scripts de shell o cualquier medio no automatizado. Además “destriparemos” las recetas ruby que estamos usando y las publicaremos para vuestro uso y disfrute!.
Codemotion Madrid 2014 - Spring ha muerto... ¡larga vida a spring boot!Iván López Martín
Slides de mi charla de Codemotion 2014: "Spring ha muerto... ¡Larga vida a Spring Boot!"
El codigo está disponible en: https://github.com/lmivan/codemotion-madrid-2014-examples
--------------
Actualmente se necesita un tiempo nada despreciable para configurar la arquitectura de tu aplicación y empezar a desarrollar. Y si hablamos de Spring esto pueden ser horas o incluso días...
¿Qué tal si tardases menos de 5 minutos?
Spring Boot permite de manera fácil y rápida la creación de aplicaciones basadas en Spring Framework eliminando toda la configuración XML. No se trata de generación de código sino que proporciona configuraciones por defecto a la vez que permite de manera muy sencilla sobreescribir estas configuraciones según nuestras necesidades. Con él podemos crear aplicaciones "production-ready" proporcionando adicionalmente y de manera automática métricas, health-checks y configuración externalizada.
En la charla verás, entre otros, ejemplos introductorios, la creación de un pequeño API Rest, el uso de Websockets... y ¡muchos más!
Todos los ejemplos que verás estarán escritos en Groovy, pero eso no te impedirá sacar todo el provecho a la charla aunque tu lenguaje favorito sea Java o Scala.
Jenkins - don't break my builds! is an introductory talk in spanish I gave at the PHP Conference 2013 in Argentina. I spoke about how I met Contintinuous Integration at Google in 2005, and how my experience has been since. I also gave tips on how to start using it in projects that have no "integration" to speak of (such as most PHP projects).
En la charla estaremos conversando sobre las buenas prácticas de testing que podemos aplicar en la cultura de DevOps. Veremos como la automatización de pruebas es un peldaño fundamental para construir los pipelines de continuous delivery y continuous integration usando herramientas como Docker, Jenkins y Selenium. Compartiremos nuestra experiencia trabajando con Microservicios y con el desarrollo de herramientas de automatización de pruebas para apoyar en las tareas de DevOps.
Cómo iniciarme en el mundo de la automatización de pruebasAbel Quintana Lopez
Aprender a automatizar pruebas nos puede llevar tiempo, horas de dedicación y se nos pueden presentar ciertas dificultades en el camino del aprendizaje, pero teniendo una guía y un camino bien definido con recursos que están a nuestro alcance podemos iniciarnos en el mundo de la automatización de pruebas.
Casper JS - Asegurando la calidad en front-end DrupalDavid Gil Sánchez
En esta sesión presentaremos como estamos utilizando CasperJS (http://casperjs.org/) para asegurar la calidad de algunos de nuestros desarrollos y evitar los tan temidos (y comunes) bugs de regresión.
Mostraremos el uso básico de CasperJS y veremos un caso real en el que estamos testando la lógica principal de un portal con procesos complejos que involucran submits de formularios multipaso, testeo con multiples roles, etc...
Curso de test driven development usando AngularJS, Jasmine, Karma, Protractor, y Gulp para automatizar todo.
Codigo del proyecto de ejemplo:
https://github.com/rodrigopivi/angularComponentStarter
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de PruebasGlobant
Puedes encontrar el video de la charla acá: https://youtu.be/Dq48oJfv_3U
Cypress es una herramienta de automatización similar a Selenium, TestCafe entre otros, creada por desarrolladores Front End para desarrolladores Front End. En esta sesión aprenderemos conceptos básicos para que los Test Automation Engineer puedan beneficiarse de ella.
----------------------------------------------------------------------------------------------------------------------
Descúbre todas nuestras oportunidades acá: https://mycareer.globant.com/
Siguenos en:
Facebook: https://www.facebook.com/Globant/
Twitter: https://twitter.com/Globant
Instagram: https://www.instagram.com/globantpics/
Linkedin: https://www.linkedin.com/company/globant/
Sesión de la DrupalCamp Jerez 2015 sobre Drupal + Capistrano.
En esta sesión presentaremos de forma práctica como estamos realizando nuestros despliegues de proyectos Drupal en entornos clusterizados en Amazon AWS usando una combinación de Capistrano 3 (http://capistranorb.com/) y una política de ramas en GIT.
La sesión combinará una parte teórica con una parte de demo real. El objetivo es que en media hora se tengan los conceptos clave para que a partir de ahora os olvidéis de la subida a producción usando sFTP, scripts de shell o cualquier medio no automatizado. Además “destriparemos” las recetas ruby que estamos usando y las publicaremos para vuestro uso y disfrute!.
Este archivo fue presentado en el Linux Week 2010 en la Pontificia Universidad Católica del Perú. Muestra una posible solución para resolver los problemas relacionados con la alta disponibilidad de Bases de Datos MySQL
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
Continous Delivering a PHP applicationJavier López
For the last few months we've been implementing a Continuous Delivery pipeline for the redesign of Time Out. In this talk I will demonstrate a real life example of what our pipeline looks like, the different tools we've used to get it done (phing, github, jenkins, ansible, AWS S3, ...), and peculiarities for PHP and Symfony2 projects. Most importantly, I'll be looking at things we've struggled with along the way and the lessons we've learnt.
Transparencias de la charla con la que participamos en las III Jornadas de Java de Alicante.
En las transparencias se muestran algunas herramientas para implantar metodologías ágiles en Java y se comentan algunas anécdotas e historias de diferentes implantaciones.
Presentacion Ruby on Rails en Universidad Autónoma 2009Nelson Rojas Núñez
Diapositivas de la presentación del fabuloso framework de desarollo Ruby On Rails usando la versión 2. Exposición realizada en el encuentro de Software Libre realizado por la Universidad Autónoma en Talca, Chile
Estas son las slides que utilicé en la charla de la reunión de Septiembre de 2014 del GDG de Madrid.
Desde hace tiempo, los desarrolladores venimos utilizando scripts para automatizar y facilitarnos la construcción automática de nuestros proyectos.
En los intentos de estandarización de esos Scripts, la primera herramienta fue Ant, muy flexible, pero muy tediosa por lo verboso y por que siempre había que empezar desde cero.
La llegada de Maven supuso una cierta convención en las tareas y fases de construcción de un proyecto. Pero también incluía una tremenda facilidad para la gestión de librerías y dependencias. A cambio, impone una cierta rigidez en la estructura del script.
Gradle ha venido a buscar lo mejor de los dos mundos: la fexibilidad de Ant, la convención de Maven, la gestión de librerías de Ivy o Mvn.... y todo ello con un lenguaje de scripting más parecido al código que al XML en el que se basan las dos precedesoras.
Desde hace meses, Google ya ha apostado por Gradle como sistema de construcción de proyectos para Android en su Android Studio.
En esta charla, haremos una introducción a Gradle como herramienta de construcción de proyectos.
Calidad de código en Chamilo: Behat, Travis-CI y Scrutinizer-CIYannick Warnier
En esta presentación, se muestran ejemplos de los esfuerzos realizados y de las herramientas usadas para mejorar la calidad del código de Chamilo (en particular a partir de la versión 1.11)
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...Plain Concepts
A lo largo de esta charla intentaremos presentar como hemos afrontado la migración de nuestro producto multiplataforma a .NET Core, las piedras que hemos pasado en el camino, las ventajas e inconvenientes de esta aventura que hemos vivido en PlasticSCM.
Programación de apps multiplataforma con Apache Cordova
(parte 2 de 2).
Explicación de qué es y cómo desarrollar aplicaciones con AngularJS e Ionic Framework. Controllers, services, filters, directives, etc.
Í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
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...espinozaernesto427
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta intensidad son un tipo de lámpara eléctrica de descarga de gas que produce luz por medio de un arco eléctrico entre electrodos de tungsteno alojados dentro de un tubo de alúmina o cuarzo moldeado translúcido o transparente.
lámparas más eficientes del mercado, debido a su menor consumo y por la cantidad de luz que emiten. Adquieren una vida útil de hasta 50.000 horas y no generan calor alguna. Si quieres cambiar la iluminación de tu hogar para hacerla mucho más eficiente, ¡esta es tu mejor opción!
Las nuevas lámparas de descarga de alta intensidad producen más luz visible por unidad de energía eléctrica consumida que las lámparas fluorescentes e incandescentes, ya que una mayor proporción de su radiación es luz visible, en contraste con la infrarroja. Sin embargo, la salida de lúmenes de la iluminación HID puede deteriorarse hasta en un 70% durante 10,000 horas de funcionamiento.
Muchos vehículos modernos usan bombillas HID para los principales sistemas de iluminación, aunque algunas aplicaciones ahora están pasando de bombillas HID a tecnología LED y láser.1 Modelos de lámparas van desde las típicas lámparas de 35 a 100 W de los autos, a las de más de 15 kW que se utilizan en los proyectores de cines IMAX.
Esta tecnología HID no es nueva y fue demostrada por primera vez por Francis Hauksbee en 1705. Lámpara de Nernst.
Lámpara incandescente.
Lámpara de descarga. Lámpara fluorescente. Lámpara fluorescente compacta. Lámpara de haluro metálico. Lámpara de vapor de sodio. Lámpara de vapor de mercurio. Lámpara de neón. Lámpara de deuterio. Lámpara xenón.
Lámpara LED.
Lámpara de plasma.
Flash (fotografía) Las lámparas de descarga de alta intensidad (HID) son un tipo de lámparas de descarga de gas muy utilizadas en la industria de la iluminación. Estas lámparas producen luz creando un arco eléctrico entre dos electrodos a través de un gas ionizado. Las lámparas HID son conocidas por su gran eficacia a la hora de convertir la electricidad en luz y por su larga vida útil.
A diferencia de las luces fluorescentes, que necesitan un recubrimiento de fósforo para emitir luz visible, las lámparas HID no necesitan ningún recubrimiento en el interior de sus tubos. El propio arco eléctrico emite luz visible. Sin embargo, algunas lámparas de halogenuros metálicos y muchas lámparas de vapor de mercurio tienen un recubrimiento de fósforo en el interior de la bombilla para mejorar el espectro luminoso y reproducción cromática. Las lámparas HID están disponibles en varias potencias, que van desde los 25 vatios de las lámparas de halogenuros metálicos autobalastradas y los 35 vatios de las lámparas de vapor de sodio de alta intensidad hasta los 1.000 vatios de las lámparas de vapor de mercurio y vapor de sodio de alta intensidad, e incluso hasta los 1.500 vatios de las lámparas de halogenuros metálicos.
Las lámparas HID requieren un equipo de control especial llamado balasto para funcionar
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
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.
14. “ practica de reunir el código
que estamos desarrollando
frecuentemente, para
verificarlo y evitar errores
”
David Calavera
15. “ Continuous Integration is a software development
practice where members of a team integrate their work
frequently, usually each person integrates at least daily
- leading to multiple integrations per day. Each
integration is verified by an automated build (including
test) to detect integration errors as quickly as possible.
Many teams find that this approach leads to significantly
”
reduced integration problems and allows a team to
develop cohesive software more rapidly.
Martin Fowler
25. reducir su duración
• usar una máquina dedicada para CI
• mejorar el rendimiento de nuestros tests
• separar los tests por categorías
• ejecutar el build por etapas
26. ejecutar los test en
paralelo
• sudo gem install deep_test
DeepTest::TestTask.new 'deep_test:functionals' do |t|
t.pattern = quot;test/functional/**/*_test.rbquot;
t.number_of_workers = 2
end
27. ejecutar los test en
paralelo
• también para RSpec
Spec::Rake::SpecTask.new 'deep_spec:functionals' do |t|
t.spec_files = FileList['spec/functional/**/*_spec.rb']
t.deep_test :number_of_workers => 2
end
28. ejecutar los test en
paralelo
• ¡con una base de datos para cada worker!
DeepTest::TestTask.new 'deep_test:functionals' do |t|
t.pattern = quot;test/functional/**/*_test.rbquot;
t.worker_listener = 'DeepTest::Database::MysqlSetupListener'
end
29. usar un servidor de CI
• preguntar por cambios en el repositorio
• realizar acciones en horarios determinados
• soportar diferentes herramientas
• mostrar builds históricos
• soportar diferentes tipos de informes
• soportar diferentes tipos de notificaciones
31. CruiseControl.rb
• muy POCO “user friendly”
• plugins perdidos por internet
• pero muy fáciles de desarrollar
• http://cruisecontrolrb.thoughtworks.com
35. Run Code Run
• de momento solo proyectos open source
• de momento solo se integra con github
• soporte de CI para la última Rails Rumble
• http://runcoderun.com
47. lo que hay que hacer
• automatizar los cambios de la base de datos
• crear la base de datos
• modificar la base de datos
• testing e inspección
48. Migraciones
• muchas mejoras desde Rails 2.1
create db/migrate/20081112232842_modify_user.rb
class ModifyUser < ActiveRecord::Migration
def self.up
change_table :user do |user|
t.rename :surname, :last_name
t.remove :age
...
end
end
end
50. test unitarios
• enfocados en un objeto
• comprobar installes totalmente unitario
que
•
sudo gem unit_record
ActiveRecord::Base.disconnect!
• usar mocks en lugar de fixtures
51. test unitarios
• ¡¡hay que hacerlos para cualquier clase!!
•sudo gem install unit_controller
def setup
@controller = UserController.new
@controller.do_not_render_vew
end
52. test funcionales
• usa factories en lugar de fixtures
•
sudo gem install thoughtbot-factory_girl
Factory.define :user do |u|
u.first_name 'Joe'
u.last_name 'Doe'
u.email {|att| quot;#{att.first_name}@example.comquot;.downcase }
end
53. test funcionales
• ¡¡hay que hacerlos modelotodas lasde datos
para clases!!
• interacción entre el y la base
• interacción entre el modelo y el controlador
• interacción entre el controlador y la vista
55. reducir la complejidad
• Flog
def flog(output, *directories)
`find #{directories.join(quot; quot;)} -name *.rb|xargs flog
> #{RAILS_ROOT}/tmp/flog/#{output}.txt`
end
desc quot;Flog models, controller, helpers and libquot;
task :flog do
flog quot;allquot;, *%w[app/models app/controllers app/helpers lib]
end
56. eliminar código
duplicado o sin usar
• Dust
def unused_lvar
a = 1
1 + 2
end
d = Dust::LocalVariableDuster.new(Object, :unused_lvar)
d.dust!
d.warnings
57. eliminar código
duplicado o sin usar
• PMD-CPD
def cpd(*directories)
`java net.sourceforge.pmd.cpd.CPD --minimum-tokens 100 -files
#{directories.map(quot; --files quot;)} --language ruby`
end
task :cpd do
cpd *%w[app/models app/controllers app/helpers lib]
end