El documento introduce el concepto de property based testing, una técnica de pruebas que define propiedades generales que un sistema debe cumplir y luego genera valores aleatorios para probar dichas propiedades de forma exhaustiva. Explica cómo definir propiedades, generar datos de prueba y validar que las propiedades se cumplen para diferentes lenguajes como JavaScript y Clojure. Finalmente, destaca que esta técnica permite probar un sistema en más estados que los unit tests tradicionales y complementa otros enfoques como los tipos.
Este documento proporciona una introducción a JavaScript (JS). Explica que JS es un lenguaje de programación interpretado, orientado a objetos y débilmente tipado que se ejecuta en el lado del cliente. Describe características como su sintaxis, tipos de datos, operadores, estructuras de control de flujo, funciones predefinidas y de usuario, y el ámbito de las variables. También cubre temas como la interpretación, imperatividad, orientación a objetos, prototipado, tipado débil y dinamismo de JS.
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
Este documento presenta conceptos sobre programación funcional y orientada a objetos, incluyendo paradigmas de programación, objetos inmutables, lambdas, traits, mixins, comunicación entre procesos asíncrona y síncrona, y el patrón promesa. También describe técnicas de programación funcional como traits, mixins y lambdas en varios lenguajes de programación como Java, C#, C/C++.
El documento presenta 4 ejercicios de programación concurrente en Java que involucran la entrada de datos desde el teclado, el uso de funciones por valor y referencia, y el manejo de excepciones. Los ejercicios capturan datos de entrada, realizan operaciones matemáticas como sumas y restas, y demuestran la diferencia entre pasar parámetros por valor y referencia. El último ejercicio muestra el uso de bloques try-catch para manejar excepciones al convertir una cadena a entero.
El documento describe una aplicación para gestionar información de alumnos, incluyendo altas, bajas y modificaciones. La interfaz tendrá tres pestañas y los datos se almacenarán en una tabla de una base de datos. Se definen las clases Alumno y Dirección para almacenar los datos, y la clase ConexionDDBB para conectarse a la base de datos.
Programa Java que gestiona los productos que comercializan varios viverosjubacalo
El documento describe un programa Java para gestionar los productos y trabajadores de varios viveros. Se crearán clases para representar productos (plantas y árboles), trabajadores y viveros, con sus atributos y métodos correspondientes. El programa permitirá registrar información de dos viveros con sus productos y trabajadores, regar automáticamente los productos de un vivero calculando la cantidad de agua necesaria, y mostrar datos específicos de los viveros y sus productos.
El documento describe las especificaciones para desarrollar un programa que simule el interfaz de entrada de una tarjeta de red. La entrada se implementa mediante dos buffers: un primer buffer de 4 tramas y un segundo buffer de espacio ilimitado con 3 puertos. Cuando el primer buffer se llena, envía las 2 tramas de mayor prioridad al segundo buffer. Se creará una clase para instanciar el sistema de entrada y enviar 6 tramas.
El documento presenta una introducción a las pruebas unitarias. Explica que las pruebas unitarias automatizan la validación de unidades de código para verificar su funcionamiento. Luego describe algunos frameworks populares como JUnit, tipos comunes de pruebas, y patrones como el uso de dobles para aislar dependencias. Finalmente, identifica algunos desafíos comunes como el estado global, las APIs engañosas y el código no testable, y ofrece soluciones como inyección de dependencias.
El documento presenta ejemplos de programación concurrente en Java utilizando hilos, interfaces, herencia, sobrecarga de métodos y matrices. Incluye ejemplos de creación e implementación de hilos, interfaces, clases heredadas, métodos sobrecargados y operaciones con matrices como mostrar y recorrer arrays multidimensionales. El objetivo es mostrar diferentes conceptos básicos de programación concurrente en Java a través de pequeños ejemplos prácticos.
Este documento proporciona una introducción a JavaScript (JS). Explica que JS es un lenguaje de programación interpretado, orientado a objetos y débilmente tipado que se ejecuta en el lado del cliente. Describe características como su sintaxis, tipos de datos, operadores, estructuras de control de flujo, funciones predefinidas y de usuario, y el ámbito de las variables. También cubre temas como la interpretación, imperatividad, orientación a objetos, prototipado, tipado débil y dinamismo de JS.
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
Este documento presenta conceptos sobre programación funcional y orientada a objetos, incluyendo paradigmas de programación, objetos inmutables, lambdas, traits, mixins, comunicación entre procesos asíncrona y síncrona, y el patrón promesa. También describe técnicas de programación funcional como traits, mixins y lambdas en varios lenguajes de programación como Java, C#, C/C++.
El documento presenta 4 ejercicios de programación concurrente en Java que involucran la entrada de datos desde el teclado, el uso de funciones por valor y referencia, y el manejo de excepciones. Los ejercicios capturan datos de entrada, realizan operaciones matemáticas como sumas y restas, y demuestran la diferencia entre pasar parámetros por valor y referencia. El último ejercicio muestra el uso de bloques try-catch para manejar excepciones al convertir una cadena a entero.
El documento describe una aplicación para gestionar información de alumnos, incluyendo altas, bajas y modificaciones. La interfaz tendrá tres pestañas y los datos se almacenarán en una tabla de una base de datos. Se definen las clases Alumno y Dirección para almacenar los datos, y la clase ConexionDDBB para conectarse a la base de datos.
Programa Java que gestiona los productos que comercializan varios viverosjubacalo
El documento describe un programa Java para gestionar los productos y trabajadores de varios viveros. Se crearán clases para representar productos (plantas y árboles), trabajadores y viveros, con sus atributos y métodos correspondientes. El programa permitirá registrar información de dos viveros con sus productos y trabajadores, regar automáticamente los productos de un vivero calculando la cantidad de agua necesaria, y mostrar datos específicos de los viveros y sus productos.
El documento describe las especificaciones para desarrollar un programa que simule el interfaz de entrada de una tarjeta de red. La entrada se implementa mediante dos buffers: un primer buffer de 4 tramas y un segundo buffer de espacio ilimitado con 3 puertos. Cuando el primer buffer se llena, envía las 2 tramas de mayor prioridad al segundo buffer. Se creará una clase para instanciar el sistema de entrada y enviar 6 tramas.
El documento presenta una introducción a las pruebas unitarias. Explica que las pruebas unitarias automatizan la validación de unidades de código para verificar su funcionamiento. Luego describe algunos frameworks populares como JUnit, tipos comunes de pruebas, y patrones como el uso de dobles para aislar dependencias. Finalmente, identifica algunos desafíos comunes como el estado global, las APIs engañosas y el código no testable, y ofrece soluciones como inyección de dependencias.
El documento presenta ejemplos de programación concurrente en Java utilizando hilos, interfaces, herencia, sobrecarga de métodos y matrices. Incluye ejemplos de creación e implementación de hilos, interfaces, clases heredadas, métodos sobrecargados y operaciones con matrices como mostrar y recorrer arrays multidimensionales. El objetivo es mostrar diferentes conceptos básicos de programación concurrente en Java a través de pequeños ejemplos prácticos.
Este documento presenta varias clases en Java que prueban diferentes componentes gráficos de interfaz de usuario (GUI) en Swing, incluyendo marcos, paneles de flujo, diseños de borde, campos de texto, etiquetas, botones, listas desplegables y más. Cada clase crea una ventana que prueba y demuestra el uso de un componente GUI específico.
Este documento describe un proyecto de programación concurrente con tres jugadores (objetos) que se mueven de forma aleatoria a través de una tabla de 24 celdas. Se crean clases para cada jugador y un formulario principal con una tabla general y tablas individuales para cada jugador que muestran su progreso. Al presionar "Play", los tres jugadores comienzan a moverse a través de la tabla general de forma concurrente hasta que uno llega a la celda 24, ganando el juego.
El documento presenta un ejemplo de sincronización de hilos en Java. Se propone crear una clase Contenedor que actúe como buffer para almacenar un número entero de forma que sólo un hilo pueda escribir o borrar el valor a la vez. Se implementan clases ThreadEscribir y ThreadBorrar para gestionar los hilos y una clase TestSincroThreads con el método main para iniciarlos.
El documento resume los conceptos básicos del lenguaje de programación Java, incluyendo tipos de datos, operadores, estructuras de control de flujo, funciones y procedimientos, y arreglos. Describe los tipos de datos primitivos en Java, las clases de operadores aritméticos, relacionales y lógicos, y el orden de precedencia de los operadores. También explica las estructuras de control secuenciales, condicionales y repetitivas, así como la sintaxis básica para funciones y procedimientos.
1. El documento discute posibles soluciones para implementar un chat por HTTP como Iframe scripting y propone que AJAX es una solución elegante. 2. Explica el esquema de funcionamiento de AJAX donde el navegador realiza peticiones asíncronas al servidor y actualiza el DOM sin recargar la página. 3. Revisa herramientas para desarrollo AJAX como Firebug que permiten debuggear aplicaciones AJAX.
Este documento describe los pasos para construir un experimento usando el software E-Prime. Explica que primero se define la estructura del experimento usando procedimientos, luego se agregan listas de bloques y ensayos, y finalmente se configuran las propiedades de los objetos. El experimento resultante podrá visualizarse en código fuente o ejecutarse en tiempo real.
1) Se crea la clase Pr que contiene el método main.
2) En main se crea un objeto de la clase Pr pasándole los parámetros "qw" y 2 al constructor.
3) El constructor asigna los valores "qw3" a la variable de instancia y y el valor 1 a la variable de instancia x.
Slides de la quinta clase del curso de Java SCJP dictado en la Universidad Nacional de Centro de La Provincia de Buenos Aires.
Contenido:
1. if, while, for, enhanced for.
2. break y continue
3. Exceptions
4. Assertions
El documento describe los comandos de Java y las sentencias if-else y switch en Java. Explica los comandos de Java utilizados en la línea de comandos y sus funciones. También explica las sentencias if-else y cómo se utilizan para la selección condicional, y la sentencia switch y cómo se utiliza para la selección múltiple.
Este documento describe varios comandos de Java y sentencias como if-else y switch. Explica comandos como -Xmx para establecer el tamaño máximo de memoria y -Xms para establecer el tamaño inicial de memoria. También describe las sentencias if-else para selección condicional y switch para selección múltiple según el valor de una variable.
Este documento presenta información sobre clases internas en Java. Explica las diferencias entre clases internas regulares, locales a un método y anónimas. También cubre temas como cómo instanciar clases internas, el uso de this y cómo pueden acceder a miembros de la clase externa. Por último, introduce el concepto de clases internas estáticas anidadas y sus características.
El documento describe el proceso de desarrollo guiado por pruebas (Test-Driven Development, TDD). TDD implica escribir las pruebas antes que el código para validar los requisitos. El proceso consiste en 1) escribir un test que falle, 2) escribir el código mínimo para que pase el test, y 3) refactorizar el código. Se explican ventajas como mejorar la calidad y reducir costes, aunque requiere más esfuerzo inicial. Se incluyen ejemplos de TDD con la clase Money.
El documento contiene varias clases en Java que simulan una aplicación de cajero automático. La clase principal Cajero contiene botones para consultar saldo, consignar, retirar y salir. Al presionar cada botón se abre una nueva ventana para realizar esa acción. Las clases Consulta_Saldo, Consulta_Consignar y Retirar contienen botones adicionales para completar esas transacciones.
El documento introduce Groovy, un lenguaje dinámico para la JVM que mejora Java eliminando código boilerplate y agregando características como tipado dinámico, closures, DSL y metaprogramación. Explica las ventajas de Groovy sobre Java y proporciona ejemplos que muestran cómo Groovy simplifica tareas comunes como iteración, cadenas y colecciones.
El documento describe diferentes características de Transact SQL como identificadores de objetos de base de datos, tipos de datos definidos por el usuario, variables locales y globales, variables de tipo tabla, procedimientos almacenados, restricciones de integridad, sentencias de control de flujo como IF y WHILE, cursores, y triggers.
Slides de la tercera clase del curso de Java SCJP dictado en la Universidad Nacional de Centro de La Provincia de Buenos Aires.
Contenido:
1. Unidad 3: Asignaciones
This document discusses the field of pedestrian engineering and its importance in urban planning and design. Pedestrian engineering aims to create a safe, fluid, and comprehensible environment for pedestrians by considering pedestrian flows, behavior, and needs. Elements of pedestrian engineering include predicting pedestrian behavior, wayfinding, and staging construction projects to protect pedestrians. The document argues that approaches like grade separation can be integrated instead of just separated to create seamless pedestrian connections and minimize disorientation.
The document discusses various solutions for reducing water usage at Amherst College, including foam flushing toilets that use less water, installing solar heating systems on dormitories to reduce energy usage and greenhouse gas emissions, implementing "navy showers" and new shower controls to decrease water usage from showers, fixing leaky faucets and adding motion sensor faucets, and installing "smart sprinkler controls" to reduce overwatering of lawns and plants. Many of the solutions could result in substantial water, energy, and cost savings but also have some upfront costs or drawbacks like potential frustration with use.
Smallpox was an infectious disease caused by a virus that was inhaled and localized in small blood vessels, causing a high fever, muscle aches, nausea, and an extensive rash with blisters on the skin that could cause blindness or be fatal in 30% of cases. It was eradicated globally in 1979 through widespread vaccination programs. While there is no drug treatment for smallpox, wound care was used. Famous historical figures who suffered from or survived smallpox include Ramses V, Peter II of Russia, Anne of Cleves, Elizabeth I, Mozart, Beethoven, George Washington, Abraham Lincoln, Joseph Stalin, and Mary Queen of Scots.
Este documento presenta varias clases en Java que prueban diferentes componentes gráficos de interfaz de usuario (GUI) en Swing, incluyendo marcos, paneles de flujo, diseños de borde, campos de texto, etiquetas, botones, listas desplegables y más. Cada clase crea una ventana que prueba y demuestra el uso de un componente GUI específico.
Este documento describe un proyecto de programación concurrente con tres jugadores (objetos) que se mueven de forma aleatoria a través de una tabla de 24 celdas. Se crean clases para cada jugador y un formulario principal con una tabla general y tablas individuales para cada jugador que muestran su progreso. Al presionar "Play", los tres jugadores comienzan a moverse a través de la tabla general de forma concurrente hasta que uno llega a la celda 24, ganando el juego.
El documento presenta un ejemplo de sincronización de hilos en Java. Se propone crear una clase Contenedor que actúe como buffer para almacenar un número entero de forma que sólo un hilo pueda escribir o borrar el valor a la vez. Se implementan clases ThreadEscribir y ThreadBorrar para gestionar los hilos y una clase TestSincroThreads con el método main para iniciarlos.
El documento resume los conceptos básicos del lenguaje de programación Java, incluyendo tipos de datos, operadores, estructuras de control de flujo, funciones y procedimientos, y arreglos. Describe los tipos de datos primitivos en Java, las clases de operadores aritméticos, relacionales y lógicos, y el orden de precedencia de los operadores. También explica las estructuras de control secuenciales, condicionales y repetitivas, así como la sintaxis básica para funciones y procedimientos.
1. El documento discute posibles soluciones para implementar un chat por HTTP como Iframe scripting y propone que AJAX es una solución elegante. 2. Explica el esquema de funcionamiento de AJAX donde el navegador realiza peticiones asíncronas al servidor y actualiza el DOM sin recargar la página. 3. Revisa herramientas para desarrollo AJAX como Firebug que permiten debuggear aplicaciones AJAX.
Este documento describe los pasos para construir un experimento usando el software E-Prime. Explica que primero se define la estructura del experimento usando procedimientos, luego se agregan listas de bloques y ensayos, y finalmente se configuran las propiedades de los objetos. El experimento resultante podrá visualizarse en código fuente o ejecutarse en tiempo real.
1) Se crea la clase Pr que contiene el método main.
2) En main se crea un objeto de la clase Pr pasándole los parámetros "qw" y 2 al constructor.
3) El constructor asigna los valores "qw3" a la variable de instancia y y el valor 1 a la variable de instancia x.
Slides de la quinta clase del curso de Java SCJP dictado en la Universidad Nacional de Centro de La Provincia de Buenos Aires.
Contenido:
1. if, while, for, enhanced for.
2. break y continue
3. Exceptions
4. Assertions
El documento describe los comandos de Java y las sentencias if-else y switch en Java. Explica los comandos de Java utilizados en la línea de comandos y sus funciones. También explica las sentencias if-else y cómo se utilizan para la selección condicional, y la sentencia switch y cómo se utiliza para la selección múltiple.
Este documento describe varios comandos de Java y sentencias como if-else y switch. Explica comandos como -Xmx para establecer el tamaño máximo de memoria y -Xms para establecer el tamaño inicial de memoria. También describe las sentencias if-else para selección condicional y switch para selección múltiple según el valor de una variable.
Este documento presenta información sobre clases internas en Java. Explica las diferencias entre clases internas regulares, locales a un método y anónimas. También cubre temas como cómo instanciar clases internas, el uso de this y cómo pueden acceder a miembros de la clase externa. Por último, introduce el concepto de clases internas estáticas anidadas y sus características.
El documento describe el proceso de desarrollo guiado por pruebas (Test-Driven Development, TDD). TDD implica escribir las pruebas antes que el código para validar los requisitos. El proceso consiste en 1) escribir un test que falle, 2) escribir el código mínimo para que pase el test, y 3) refactorizar el código. Se explican ventajas como mejorar la calidad y reducir costes, aunque requiere más esfuerzo inicial. Se incluyen ejemplos de TDD con la clase Money.
El documento contiene varias clases en Java que simulan una aplicación de cajero automático. La clase principal Cajero contiene botones para consultar saldo, consignar, retirar y salir. Al presionar cada botón se abre una nueva ventana para realizar esa acción. Las clases Consulta_Saldo, Consulta_Consignar y Retirar contienen botones adicionales para completar esas transacciones.
El documento introduce Groovy, un lenguaje dinámico para la JVM que mejora Java eliminando código boilerplate y agregando características como tipado dinámico, closures, DSL y metaprogramación. Explica las ventajas de Groovy sobre Java y proporciona ejemplos que muestran cómo Groovy simplifica tareas comunes como iteración, cadenas y colecciones.
El documento describe diferentes características de Transact SQL como identificadores de objetos de base de datos, tipos de datos definidos por el usuario, variables locales y globales, variables de tipo tabla, procedimientos almacenados, restricciones de integridad, sentencias de control de flujo como IF y WHILE, cursores, y triggers.
Slides de la tercera clase del curso de Java SCJP dictado en la Universidad Nacional de Centro de La Provincia de Buenos Aires.
Contenido:
1. Unidad 3: Asignaciones
This document discusses the field of pedestrian engineering and its importance in urban planning and design. Pedestrian engineering aims to create a safe, fluid, and comprehensible environment for pedestrians by considering pedestrian flows, behavior, and needs. Elements of pedestrian engineering include predicting pedestrian behavior, wayfinding, and staging construction projects to protect pedestrians. The document argues that approaches like grade separation can be integrated instead of just separated to create seamless pedestrian connections and minimize disorientation.
The document discusses various solutions for reducing water usage at Amherst College, including foam flushing toilets that use less water, installing solar heating systems on dormitories to reduce energy usage and greenhouse gas emissions, implementing "navy showers" and new shower controls to decrease water usage from showers, fixing leaky faucets and adding motion sensor faucets, and installing "smart sprinkler controls" to reduce overwatering of lawns and plants. Many of the solutions could result in substantial water, energy, and cost savings but also have some upfront costs or drawbacks like potential frustration with use.
Smallpox was an infectious disease caused by a virus that was inhaled and localized in small blood vessels, causing a high fever, muscle aches, nausea, and an extensive rash with blisters on the skin that could cause blindness or be fatal in 30% of cases. It was eradicated globally in 1979 through widespread vaccination programs. While there is no drug treatment for smallpox, wound care was used. Famous historical figures who suffered from or survived smallpox include Ramses V, Peter II of Russia, Anne of Cleves, Elizabeth I, Mozart, Beethoven, George Washington, Abraham Lincoln, Joseph Stalin, and Mary Queen of Scots.
The document summarizes aspects of sorority life in Delta Zeta. It discusses that the sorority supports children with hearing and speech impairments and raises money for charity groups that help these children. It also mentions some symbols that represent the sisterhood, including the Golden Lamp and Calarnie Rose. Additionally, it provides details about Big/Little Night, where members get assigned a "big sister" and describes sorority life as providing opportunities for friendship, personal growth, and community service.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
Lelylan is a project that takes life to connect your house to the web, with the goal to solve the main problems domotics is facing today. It wants to do this defining REST web services, allowing every device talk to each other and enabling everybody to build new services and speed up innovation. Lelylan, reThink your house.
Michael Fishman (principal in charge) Sam Schwartz Engineering (lead)
Urban Question: How to immediately respond to the unprecedented events of 9/11/01 and provide access, egress and circulation for the largest crime scene in
history?
Urban Answer: Working with the NYPD, FDNY, PAPD, NYCDOT, NYSDOT and the Federal Government, immediate solutions were developed to provide access
for emergency vehicles, equipment and personnel while maintaining security and circulation for the general public. This included:
- Realigning streets and sidewalks to provide staging areas and access points for heavy equipment and personnel.
- Designing temporary pedestrian walkways and bikeways to reconnect neighborhoods.
Andrea Reginato presented on a home automation system called "Housy" that uses RESTful web services to control devices and aspects of the home. Housy allows you to get information about devices by writing URLs and control devices by writing URLs that can turn devices on and off or change device settings. The system architecture includes REST wrappers that allow different protocols and standards to connect devices. Housy also implements rules to automatically control devices based on triggers from other devices.
¿En qué la estamos regando en pruebas de software?Agustin Ramos
El documento discute diferentes tipos y técnicas de pruebas de software, incluyendo pruebas basadas en valores de entrada, condiciones de frontera, valores no esperados, combinaciones de pruebas, rutas de ejecución, cobertura de código, pruebas guiadas por datos, pruebas pairwise, y pruebas basadas en riesgos. El autor argumenta que la cobertura de código por sí sola no es suficiente y que se deben considerar factores como los valores de entrada y las rutas de ejecución para realizar pruebas efectivas.
Este documento resume los siguientes temas sobre programación paralela en C#:
1) Paralelización de código imperativo usando Parallel.Invoke, Parallel Loops, y manejo de excepciones y particionamiento.
2) Programación paralela con tareas usando Task, tiempos de espera, cancelación, excepciones y retorno de valores.
3) Colecciones de concurrencia como ConcurrentQueue y estructuras para coordinar datos.
Este documento describe los objetos globales de JavaScript, dividiéndolos en tres grupos: objetos contenedores de datos como Array y Object, objetos de utilidades como Math y Date, y objetos de errores como Error. Explica las características y métodos de objetos como Array, Function, String, Boolean y Number.
Este documento proporciona una introducción a JDBC y las bases de datos en Java. Explica los conceptos clave como conexiones a bases de datos, ejecución de sentencias SQL, tipos de statements, prepared statements, stored procedures, transacciones y más. También incluye ejemplos de código para establecer conexiones, consultas, inserciones, actualizaciones y eliminaciones de datos.
El documento describe un sistema llamado [TO]miner que realiza análisis de sentimiento en tweets para recomendar películas. Explica las etapas de recolección de datos, preprocesamiento, clasificación con algoritmos como SMO y BayesNet, y la aplicación FilmAdvisor. Las pruebas muestran que el clasificador SMO obtiene una precisión superior al 72% utilizando atributos unigramas y una lista stopword específica.
El documento describe diferentes estructuras de control repetitivas o iterativas en Java, incluyendo bucles while, for y do while. Estos bucles permiten ejecutar código de forma repetida mientras se cumpla una condición. Se proveen ejemplos de cómo calcular tablas de multiplicar, sumatorias y factoriales usando estos bucles.
Este documento proporciona información sobre pruebas unitarias en Ruby utilizando la biblioteca Test::Unit. Explica los elementos básicos como test cases, test fixtures, test suites y aserciones. También cubre cómo se utiliza Test::Unit en Ruby on Rails, incluidos los entornos de prueba, la estructura de pruebas y las tareas Rake para ejecutar pruebas.
Este documento describe conceptos básicos sobre pruebas unitarias y el framework JUnit. Explica que las pruebas unitarias sirven para probar módulos de código de forma aislada y automatizada. También describe requisitos como la automatización, completitud e independencia de las pruebas. Finalmente, introduce conceptos de JUnit como la creación de clases de prueba que heredan de TestCase y la ejecución de las pruebas a través de un TestRunner.
Este documento presenta una introducción a la industria de tarjetas de crédito y propone una estrategia funcional para el desarrollo de una aplicación que cumpla con los estándares de seguridad PCI DSS de forma más eficiente. La estrategia consiste en utilizar tokenización para evitar almacenar información sensible directamente y reducir así el alcance de la certificación PCI. Se describe un diseño basado en Akka y Camel para implementar dicha estrategia de forma escalable y tolerante a fallos.
¿Cómo mantener tu javascript?: Buenas prácticasjaespinmora
Buenas práctias en el desarrollo de software con javascript. Código limpio, mantenible, escalable, tests,... Charla perteneciente al evento Betabeers Murcia del día 9 de Mayo de 2014
Este documento resume tres capítulos de un libro sobre desarrollo de software limpio. El Capítulo 9 discute las pruebas unitarias, incluidas las leyes del desarrollo guiado por pruebas y ejemplos de código de pruebas limpias y no limpias. El Capítulo 10 cubre temas de diseño de clases como tamaño, encapsulamiento, responsabilidad única y cohesión. El Capítulo 11 trata sobre sistemas.
Este documento habla sobre las técnicas de desarrollo Test Driven Development (TDD) y Clean Code. Explica que TDD involucra escribir pruebas unitarias primero y luego el código mínimo necesario para que pasen, y que esto permite que el diseño emerja del código. También describe principios de Clean Code como tener nombres significativos, funciones pequeñas, y formato uniforme. El documento concluye que usar TDD y Clean Code trae beneficios como seguridad, mantenibilidad y trabajo en equipo efectivo.
El ResultSet representa los resultados de una consulta SQL. Permite acceder a los datos de las filas devueltas mediante métodos como next(), getString(), getInt() que navegan por las filas y recuperan los valores de las columnas. Los métodos next() se utilizan para mover el cursor entre las filas, mientras que los métodos getXXX() extraen los valores de las columnas de la fila actual.
Este documento proporciona una introducción a las pruebas unitarias. Explica la definición de pruebas unitarias, los marcos de prueba como JUnit, cómo escribir una primera prueba unitaria, diferentes tipos de pruebas, cómo usar Mockito para pruebas con dependencias, y cómo escribir código que sea fácil de probar mediante técnicas como inyección de dependencias. También discute excusas comunes para no escribir pruebas unitarias y cómo detectar código que no es fácil de probar.
Este documento describe diferentes tipos de pruebas de software como pruebas unitarias, de integración, de sistema y de aceptación. También cubre técnicas como pruebas de caja negra, caja blanca y ad-hoc. Explica frameworks de pruebas unitarias como JUnit y Mockito para Java. Finalmente, presenta herramientas como Arquillian para facilitar las pruebas de integración en Java EE.
JAVA es un lenguaje orientado a objetos, multiplataforma e interpretado que se compila a código de máquina independiente de la plataforma. Los programas en JAVA se escriben en clases que contienen métodos como main que se ejecutan cuando se invoca el intérprete de JAVA. JAVA soporta tipos de datos primitivos como enteros, reales y caracteres, así como declaraciones, expresiones, instrucciones de control de flujo y conversiones de tipos.
Este documento presenta una introducción a Scala, un lenguaje de programación funcional y orientado a objetos creado en 2003 por Martin Odersky. Scala compila a la máquina virtual de Java y tiene influencias de lenguajes como Java y Haskell. El documento describe características clave de Scala como su tipado estático, inferencia de tipos, sintaxis, objetos, clases, herencia, estructuras de control y funciones.
El documento presenta las estructuras iterativas, en particular el ciclo for. Explica que el ciclo for consta de tres partes: la expresión de inicio, la expresión de condición y la expresión de incremento/decremento. Además, provee ejemplos detallados del uso del ciclo for en Java para iterar sobre un rango de números e imprimirlos.
Una introducción a Clojure y por qué usar programación funcional.
Mi experiencia al conocer Clojure luego de haber sido desarrollador de aplicaciones con Java, Grails y Rails.
Similar a Property Based Testing usando QuickCheck (20)
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...micarnavaltupatrimon
Mi Carnaval es la plataforma que permite conectar al usuario con la cultura y la emoción del Carnaval de Blancos y Negros en la ciudad de Pasto, esta plataforma brinda una amplia oferta de productos, servicios, tiquetería e información relevante para generarle valor al usuario, además, la plataforma realiza un levantamiento de datos de los espectadores que se registran, capturando su actividad e información relevante para generar la analítica demográfica del evento en tiempo real, con estos datos se generan modelos predictivos, que permiten una mejor preparación y organización del evento, de esta manera ayudando a reducir la congestión, las largas filas y, así como a identificar áreas de alto riesgo de delincuencia y otros problemas de seguridad.
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...micarnavaltupatrimon
Mi Carnaval es la plataforma que permite conectar al usuario con la cultura y la emoción del Carnaval de Blancos y Negros en la ciudad de Pasto, esta plataforma brinda una amplia oferta de productos, servicios, tiquetería e información relevante para generarle valor al usuario, además, la plataforma realiza un levantamiento de datos de los espectadores que se registran, capturando su actividad e información relevante para generar la analítica demográfica del evento en tiempo real, con estos datos se generan modelos predictivos, que permiten una mejor preparación y organización del evento, de esta manera ayudando a reducir la congestión, las largas filas y, así como a identificar áreas de alto riesgo de delincuencia y otros problemas de seguridad.
9. Cuál es la mejor forma de
demostrar que nuestros
sistemas son correctos?
(O sea que hacen lo que tienen que hacer)
10. Cuál es la mejor forma de
demostrar que nuestros
sistemas son correctos?
(O sea que hacen lo que tienen que hacer)
11. Types
• Sirven como parte de la especificación
• Ayudan durante el diseño
• Ayudan a capturar requerimientos
12. Tests
• Sirven como parte de la especificación
• Sirven como “comentarios ejecutables”
• Ayudan durante el diseño
• Ayudan a capturar requerimientos
23. Joe Armstrong
(Erlang)
Átomos en la tierra:
1.33 x 10^50
2^k=10^50
k=50log(10)/log(2)
k=166.09
k/32=5.18https://www.youtube.com/watch?v=lKXe3HUG2l4
24.
25. Un programa en C con 6 enteros
tiene más estados posibles que
átomos hay en el planeta…
26. Un programa en C con 6 enteros
tiene más estados posibles que
átomos hay en el planeta…
?
27.
28. Digital computers are more complex than most things that
people build. They have large numbers of states. Software
systems have orders of magnitude more states than
computers do.
Fred Brooks
No Silver Bullet
Essence and Accidents of Software Engineering
29. Definir propiedades que tiene
que cumplir nuestro sistema
para cierto dominio de valores.
Property based testing
30. Poner al sistema en la
mayor cantidad de
estados posibles
Property based testing
33. QuickCheck
• C
• C++
• Chicken Scheme
• Clojure
• Common Lisp
• D
• Elm
• Erlang
• F#
• Factor
• Io
• Java
• Javascript
• Node.js
• Objective-C
• OCaml
• Perl
• Prolog
• Python
• R
• Ruby
• Scala
• Scheme
• Smalltalk
• Standard ML
34. function sort(values) {
var length = values.length - 1;
do {
var swapped = false;
for(var i = 0; i < length; ++i) {
if (values[i] > values[i+1]) {
var temp = values[i];
values[i] = values[i+1];
values[i+1] = temp;
swapped = true;
}
}
}
while(swapped == true)
};
sort([7, 4, 5, 2, 9, 1]);
35. En un array ordenado el primer elemento
es siempre menor que el último.
Cómo se define una
propiedad?
Ejemplo:
36. En un array ordenado el primer elemento
es siempre menor que el último.
Cómo se define una
propiedad?
Promueve una visión de más alto nivel con
restricciones que se deben satisfacer de manera
universal.
Ejemplo:
37. JSC.reps(10);
JSC.test(
"First is lower than last after sort",
function (verdict, v) {
var sorted = v.sort();
return verdict(sorted[0] < sorted[sorted.length - 1]);
},
[
JSC.array([JSC.integer()]])
]
);
(def prop-sorted-first-less-than-last
(prop/for-all [v (gen/vector gen/int)]
(let [s (sort v)]
(< (first s) (last s)))))
(tc/quick-check 10 prop-sorted-first-less-than-last)
Javascript
Clojure
38. JSC.reps(10);
JSC.test(
"First is lower than last after sort",
function (verdict, v) {
var sorted = v.sort();
return verdict(sorted[0] < sorted[sorted.length - 1]);
},
[
JSC.array([JSC.integer()]])
]
);
(def prop-sorted-first-less-than-last
(prop/for-all [v (gen/vector gen/int)]
(let [s (sort v)]
(< (first s) (last s)))))
(tc/quick-check 10 prop-sorted-first-less-than-last)
Javascript
Clojure
Un nombre para la propiedad…
39. JSC.reps(10);
JSC.test(
"First is lower than last after sort",
function (verdict, v) {
var sorted = v.sort();
return verdict(sorted[0] < sorted[sorted.length - 1]);
},
[
JSC.array([JSC.integer()]])
]
);
(def prop-sorted-first-less-than-last
(prop/for-all [v (gen/vector gen/int)]
(let [s (sort v)]
(< (first s) (last s)))))
(tc/quick-check 10 prop-sorted-first-less-than-last)
Javascript
Clojure
Un generador de valores
para la función a testear…
40. JSC.reps(10);
JSC.test(
"First is lower than last after sort",
function (verdict, v) {
var sorted = v.sort();
return verdict(sorted[0] < sorted[sorted.length - 1]);
},
[
JSC.array([JSC.integer()]])
]
);
(def prop-sorted-first-less-than-last
(prop/for-all [v (gen/vector gen/int)]
(let [s (sort v)]
(< (first s) (last s)))))
(tc/quick-check 10 prop-sorted-first-less-than-last)
Javascript
Clojure
Invocar a la función para el
valor generado…
41. JSC.reps(10);
JSC.test(
"First is lower than last after sort",
function (verdict, v) {
var sorted = v.sort();
return verdict(sorted[0] < sorted[sorted.length - 1]);
},
[
JSC.array([JSC.integer()]])
]
);
(def prop-sorted-first-less-than-last
(prop/for-all [v (gen/vector gen/int)]
(let [s (sort v)]
(< (first s) (last s)))))
(tc/quick-check 10 prop-sorted-first-less-than-last)
Javascript
Clojure
Validar que la propiedad
se cumple…
42. JSC.reps(10);
JSC.test(
"First is lower than last after sort",
function (verdict, v) {
var sorted = v.sort();
return verdict(sorted[0] < sorted[sorted.length - 1]);
},
[
JSC.array([JSC.integer()]])
]
);
(def prop-sorted-first-less-than-last
(prop/for-all [v (gen/vector gen/int)]
(let [s (sort v)]
(< (first s) (last s)))))
(tc/quick-check 10 prop-sorted-first-less-than-last)
Javascript
Clojure
Ejecutar 10 casos…
43. JSC.reps(10);
JSC.test(
"First is lower than last after sort",
function (verdict, v) {
var sorted = v.sort();
return verdict(sorted[0] < sorted[sorted.length - 1]);
},
[
JSC.array([JSC.integer()]])
]
);
(def prop-sorted-first-less-than-last
(prop/for-all [v (gen/vector gen/int)]
(let [s (sort v)]
(< (first s) (last s)))))
(tc/quick-check 10 prop-sorted-first-less-than-last)
Javascript
Clojure
55. Property Based Testing
• Es complementario con unit tests y/o type systems.
• Promueve una visión de más alto nivel sobre las
definiciones en nuestras pruebas.
• Permite poner a nuestro sistema en una cantidad de
estados solo alcanzable de forma computacional.
• Antes que los errores ocurran para prevenir
• Después que ocurran para diagnosticar