This document discusses different types of electromagnetic radiation and their use in imaging. It introduces the electromagnetic spectrum, explaining that while humans can only see visible light, other types of radiation like X-rays and infrared can also be used for imaging. It then covers the relationships between wave speed, frequency, and wavelength, noting that all electromagnetic waves travel at the same speed. Finally, it touches on pixels and resolution in digital images, how pixels are arranged in rows and columns, and how higher resolution allows for more detail to be seen.
Materials react differently under stress depending on their composition and structure. A match will snap if sat on but a chair made of the same material as a match can hold weight since it is constructed differently and on a larger scale than a single match. How materials handle stress depends on both the material and the object's form.
This document discusses how lenses and light work together in the eye to allow vision. It explains that light enters the eye and the lens focuses it onto the retina, where rods and cones detect light and color. The document also introduces how lenses are used to focus light rays and can be characterized by their focal length and power, and how the lens equation relates object and image distances to focal length and magnification.
Phasors can be used to model and explain the behavior of light during reflection and refraction. Phasors represent the phase and probability of photons as they travel. During reflection, while classical optics shows a light ray reflecting off a mirror at a single point, the phasor model accounts for the possibility of multiple photon paths reflecting at different points, with the probability of detection determined by the alignment of phasors. Refraction can similarly be modeled by considering the change in phase and alignment of phasors as light passes from one medium to another at different angles.
Este documento compara datos económicos del gobierno del PP entre 2000-2003 y del PSOE en 2008. Señala que cuando el PP gobernaba y la economía crecía al 2.9% con una tasa de paro de 11.2%, decían que España iba bien, pero ahora critican al PSOE a pesar de que la economía crece al 3.8% con la tasa de paro más baja de la democracia. También muestra que la inflación fue más alta y frecuente durante el gobierno del PP.
This document discusses how light behaves when passing through different materials and apertures. It covers how light exhibits superposition when passing through two slits or a diffraction grating. It also discusses how single slit diffraction causes light to spread out in characteristic patterns and how this differs from the patterns seen from light passing through a grating. Finally, it touches on how spectra can be used to analyze light from stars and how the concept of resolution is important for distinguishing between close light sources.
The document discusses how to calculate the data capacity and transfer rates needed for storing and transmitting images. It explains that the data capacity required to store an image is calculated by multiplying the number of pixels by the number of bits per pixel. It also provides an example showing how to calculate the number of images that could be stored on a 20GB disc. Finally, it notes that the time to transfer data depends on the data transfer rate.
This document discusses different types of electromagnetic radiation and their use in imaging. It introduces the electromagnetic spectrum, explaining that while humans can only see visible light, other types of radiation like X-rays and infrared can also be used for imaging. It then covers the relationships between wave speed, frequency, and wavelength, noting that all electromagnetic waves travel at the same speed. Finally, it touches on pixels and resolution in digital images, how pixels are arranged in rows and columns, and how higher resolution allows for more detail to be seen.
Materials react differently under stress depending on their composition and structure. A match will snap if sat on but a chair made of the same material as a match can hold weight since it is constructed differently and on a larger scale than a single match. How materials handle stress depends on both the material and the object's form.
This document discusses how lenses and light work together in the eye to allow vision. It explains that light enters the eye and the lens focuses it onto the retina, where rods and cones detect light and color. The document also introduces how lenses are used to focus light rays and can be characterized by their focal length and power, and how the lens equation relates object and image distances to focal length and magnification.
Phasors can be used to model and explain the behavior of light during reflection and refraction. Phasors represent the phase and probability of photons as they travel. During reflection, while classical optics shows a light ray reflecting off a mirror at a single point, the phasor model accounts for the possibility of multiple photon paths reflecting at different points, with the probability of detection determined by the alignment of phasors. Refraction can similarly be modeled by considering the change in phase and alignment of phasors as light passes from one medium to another at different angles.
Este documento compara datos económicos del gobierno del PP entre 2000-2003 y del PSOE en 2008. Señala que cuando el PP gobernaba y la economía crecía al 2.9% con una tasa de paro de 11.2%, decían que España iba bien, pero ahora critican al PSOE a pesar de que la economía crece al 3.8% con la tasa de paro más baja de la democracia. También muestra que la inflación fue más alta y frecuente durante el gobierno del PP.
This document discusses how light behaves when passing through different materials and apertures. It covers how light exhibits superposition when passing through two slits or a diffraction grating. It also discusses how single slit diffraction causes light to spread out in characteristic patterns and how this differs from the patterns seen from light passing through a grating. Finally, it touches on how spectra can be used to analyze light from stars and how the concept of resolution is important for distinguishing between close light sources.
The document discusses how to calculate the data capacity and transfer rates needed for storing and transmitting images. It explains that the data capacity required to store an image is calculated by multiplying the number of pixels by the number of bits per pixel. It also provides an example showing how to calculate the number of images that could be stored on a 20GB disc. Finally, it notes that the time to transfer data depends on the data transfer rate.
This document discusses work, energy, forces, and motion. It explains how to calculate changes in kinetic and potential energy, how Newton's laws of motion can be used to calculate braking forces and distances, and how forces acting at angles can be resolved into components. Examples are provided on calculating the tension in a cable attached to a helicopter and car, as well as the air resistance and stopping distance for a moving car.
The document summarizes the key characteristics of four main material classes - metals, ceramics, polymers, and composites. It discusses how materials behave differently under stress depending on their properties. It also describes an experiment using springs to illustrate Hooke's Law, which states that the extension of a spring is proportional to the load applied.
This document provides an overview of electrical conductivity and resistance in materials. It explains that materials with free electrons allow electrical current to flow easily, making them good conductors. Materials with high resistance that restrict current flow are insulators. Resistance is measured in ohms and depends on a material's resistivity, length, and cross-sectional area. Conductivity is the inverse of resistivity and relates to how easily a material allows electrons to flow. Ohm's law defines the relationship between voltage, current, and resistance in a circuit.
1) Light can be represented as both a wave and particle. Photons carry light energy, with higher frequency photons having more energy.
2) Energy of a photon is calculated using Planck's constant and frequency, with E=hf. For small energies, electron volts (eV) provide a more useful unit than joules.
3) Measuring the striking voltage of LEDs of different colors allows calculating the corresponding photon energies in eV. A graph of energy versus frequency can then be made.
This document discusses information storage and image manipulation techniques. It covers the following key points in 3 sentences:
Information like images and text can be stored digitally using binary numbers, with each bit representing a value of 0 or 1 to encode information. Pixels in images require bytes of memory, with more bytes needed for color images versus grayscale. Common image manipulation techniques include smoothing to reduce noise, edge detection to find boundaries, and adjusting pixel values through median filtering or subtraction operations.
The document discusses bandwidth and how it relates to transmitting signals through communication channels. It defines bandwidth as the range of frequencies a signal or channel can carry. For an analog signal, bandwidth is the maximum frequency minus the minimum frequency. The bandwidth required for a digital signal is 2 times the highest signaling rate. Time division multiplexing allows multiple calls to be transmitted simultaneously by dividing the channel into time slots.
The document provides an overview of key concepts relating to mapping space and time, including maps and vectors, distance-time graphs, speed and velocity, Pythagoras' theorem, and velocity-time graphs. It defines vectors as having magnitude and direction, and explains how to calculate resultant vectors. It also discusses using graphs to determine instantaneous and average speed/velocity, and how distance traveled relates to the area under graphs. Worked examples are provided for practice questions.
The document discusses edge enhancement in the retina through a series of visual comparisons asking the reader to observe how two grey squares appear different when placed next to each other or moved closer together, with one square appearing darker than the other due to contrast enhancement of edges in human vision.
This document discusses pixel resolution and how images can be gathered using pulses of sound or radiation. It defines a pixel as the smallest element of a reconstructed image. Resolution is defined as the smallest detectable difference or feature in an image. An example calculates the resolution of a 15cm by 10cm image containing 15,000 pixels as 1mm. It also discusses using ultrasound pulses to form images by timing reflections and avoiding signal interference.
The document discusses the potential of virtual worlds as learning spaces in line with Web 2.0 principles. It notes that today's students are digital natives who are used to social networking, user-generated content, and online games. As such, virtual worlds allow for collaboration, creativity, and community engagement through avatar representation and role-playing. The document advocates for adopting virtual worlds and other multi-user virtual environments to engage today's students in a way that mirrors activities they already engage in outside the classroom.
Este documento proporciona consejos sobre cómo mejorar la calidad y venta de pieles de chinchilla. Aborda factores como la genética, el manejo del criadero, la estrategia de ventas y la presentación a los compradores. También incluye un cuadro para calificar el criadero e identificar posibles problemas, así como instrucciones para el estaqueado y envío correctos de las pieles a la curtiembre.
This document discusses how analog signals are converted to digital signals through the process of sampling. It explains that sampling involves taking the value of an analog signal at discrete points in time and converting it to a digital code. The key variables in sampling are the sampling frequency, or how many samples are taken per second, and resolution, or the number of bits used to record each sample value. The sampling frequency needs to be more than double the highest frequency of the analog waveform to avoid aliasing and get an accurate digital reconstruction of the original signal. More bits of resolution provide more possible sample values and a more accurate digital representation.
The document discusses refraction and how light behaves when passing from one medium to another with different densities. It defines refraction as light bending or changing speed due to traveling through different mediums. Snell's law is introduced to relate the angle of incidence and refraction based on the refractive indices of the materials. The critical angle is defined as the angle at which total internal reflection occurs, with the refractive index calculated from it. Homework questions ask about using fiber optics instead of copper wires for communication and drawing a diagram showing how signal intensity changes with distance.
El documento describe los objetivos de formación de la carrera de Tecnología en Sistemas de la Facultad de Ciencias y Tecnologías. Busca formar profesionales con valores éticos capaces de analizar, diseñar, desarrollar e implementar sistemas de información que contribuyan a resolver problemas del entorno. El programa académico consolidará profesionales de calidad que potencialicen el mercado laboral en áreas como programación de sistemas, análisis de sistemas e implementación de sistemas.
The document discusses the atomic structure and properties of metals, insulators, and semiconductors. Metals conduct electricity well due to their free electrons, are shiny as electrons scatter light, and are stiff yet ductile from electron bonding. Insulators like ceramics and polymers do not conduct as their electrons are locked in ionic or covalent bonds, making them stiff or brittle. Semiconductors have properties between metals and insulators with fewer free electrons. Their conductivity increases with temperature unlike metals but can also be controlled through doping with other atoms to donate or accept free electrons.
The document discusses concepts related to stress, strain, Young's modulus, and material properties. It provides examples of calculations for stress, strain, force, area, and Young's modulus. It also discusses key characteristics of materials, including brittle, hard, strong, tough, elastic limit, yield point, and breaking stress. Example materials discussed include steel, nylon, cast iron, glass fiber, plastic, and rubber bands.
The document discusses how forces affect the velocity and acceleration of objects. It introduces concepts of work, potential energy, kinetic energy, and conservation of energy. It provides equations for work, potential energy, kinetic energy, power, and efficiency. It explains that acceleration depends on both force and mass, as shown in the equation Force = Mass x Acceleration. The document also discusses gravitational field, noting that gravitational field strength and acceleration due to gravity are the same and can be derived from F = ma. It presents equations relating potential energy, kinetic energy, and velocity during energy changes.
The document discusses various factors to consider when choosing materials for different applications. It lists mechanical, optical, aesthetic and cost properties as important characteristics to evaluate. The document also discusses classifying materials into groups like ceramics, metals, polymers and composites based on their properties, giving examples of each type. Students are assigned to research these material classes and describe examples and characteristics.
El documento describe dos métodos para crear una webquest: 1) Usando un creador de webquest en línea que guía el proceso paso a paso. 2) Editando una plantilla HTML existente reemplazando el texto de ejemplo con el contenido propio. En ambos casos se debe completar secciones como introducción, tarea, recursos, evaluación, conclusión y créditos.
Este documento describe diferentes herramientas y métodos para crear una webquest. Explica cómo usar un creador de webquest en línea para completar secciones como título, descripción y recursos. También cubre cómo editar una plantilla HTML existente reemplazando el texto de ejemplo con el propio para crear una webquest personalizada. Resalta la importancia de no eliminar códigos HTML para mantener el formato correcto.
This document discusses work, energy, forces, and motion. It explains how to calculate changes in kinetic and potential energy, how Newton's laws of motion can be used to calculate braking forces and distances, and how forces acting at angles can be resolved into components. Examples are provided on calculating the tension in a cable attached to a helicopter and car, as well as the air resistance and stopping distance for a moving car.
The document summarizes the key characteristics of four main material classes - metals, ceramics, polymers, and composites. It discusses how materials behave differently under stress depending on their properties. It also describes an experiment using springs to illustrate Hooke's Law, which states that the extension of a spring is proportional to the load applied.
This document provides an overview of electrical conductivity and resistance in materials. It explains that materials with free electrons allow electrical current to flow easily, making them good conductors. Materials with high resistance that restrict current flow are insulators. Resistance is measured in ohms and depends on a material's resistivity, length, and cross-sectional area. Conductivity is the inverse of resistivity and relates to how easily a material allows electrons to flow. Ohm's law defines the relationship between voltage, current, and resistance in a circuit.
1) Light can be represented as both a wave and particle. Photons carry light energy, with higher frequency photons having more energy.
2) Energy of a photon is calculated using Planck's constant and frequency, with E=hf. For small energies, electron volts (eV) provide a more useful unit than joules.
3) Measuring the striking voltage of LEDs of different colors allows calculating the corresponding photon energies in eV. A graph of energy versus frequency can then be made.
This document discusses information storage and image manipulation techniques. It covers the following key points in 3 sentences:
Information like images and text can be stored digitally using binary numbers, with each bit representing a value of 0 or 1 to encode information. Pixels in images require bytes of memory, with more bytes needed for color images versus grayscale. Common image manipulation techniques include smoothing to reduce noise, edge detection to find boundaries, and adjusting pixel values through median filtering or subtraction operations.
The document discusses bandwidth and how it relates to transmitting signals through communication channels. It defines bandwidth as the range of frequencies a signal or channel can carry. For an analog signal, bandwidth is the maximum frequency minus the minimum frequency. The bandwidth required for a digital signal is 2 times the highest signaling rate. Time division multiplexing allows multiple calls to be transmitted simultaneously by dividing the channel into time slots.
The document provides an overview of key concepts relating to mapping space and time, including maps and vectors, distance-time graphs, speed and velocity, Pythagoras' theorem, and velocity-time graphs. It defines vectors as having magnitude and direction, and explains how to calculate resultant vectors. It also discusses using graphs to determine instantaneous and average speed/velocity, and how distance traveled relates to the area under graphs. Worked examples are provided for practice questions.
The document discusses edge enhancement in the retina through a series of visual comparisons asking the reader to observe how two grey squares appear different when placed next to each other or moved closer together, with one square appearing darker than the other due to contrast enhancement of edges in human vision.
This document discusses pixel resolution and how images can be gathered using pulses of sound or radiation. It defines a pixel as the smallest element of a reconstructed image. Resolution is defined as the smallest detectable difference or feature in an image. An example calculates the resolution of a 15cm by 10cm image containing 15,000 pixels as 1mm. It also discusses using ultrasound pulses to form images by timing reflections and avoiding signal interference.
The document discusses the potential of virtual worlds as learning spaces in line with Web 2.0 principles. It notes that today's students are digital natives who are used to social networking, user-generated content, and online games. As such, virtual worlds allow for collaboration, creativity, and community engagement through avatar representation and role-playing. The document advocates for adopting virtual worlds and other multi-user virtual environments to engage today's students in a way that mirrors activities they already engage in outside the classroom.
Este documento proporciona consejos sobre cómo mejorar la calidad y venta de pieles de chinchilla. Aborda factores como la genética, el manejo del criadero, la estrategia de ventas y la presentación a los compradores. También incluye un cuadro para calificar el criadero e identificar posibles problemas, así como instrucciones para el estaqueado y envío correctos de las pieles a la curtiembre.
This document discusses how analog signals are converted to digital signals through the process of sampling. It explains that sampling involves taking the value of an analog signal at discrete points in time and converting it to a digital code. The key variables in sampling are the sampling frequency, or how many samples are taken per second, and resolution, or the number of bits used to record each sample value. The sampling frequency needs to be more than double the highest frequency of the analog waveform to avoid aliasing and get an accurate digital reconstruction of the original signal. More bits of resolution provide more possible sample values and a more accurate digital representation.
The document discusses refraction and how light behaves when passing from one medium to another with different densities. It defines refraction as light bending or changing speed due to traveling through different mediums. Snell's law is introduced to relate the angle of incidence and refraction based on the refractive indices of the materials. The critical angle is defined as the angle at which total internal reflection occurs, with the refractive index calculated from it. Homework questions ask about using fiber optics instead of copper wires for communication and drawing a diagram showing how signal intensity changes with distance.
El documento describe los objetivos de formación de la carrera de Tecnología en Sistemas de la Facultad de Ciencias y Tecnologías. Busca formar profesionales con valores éticos capaces de analizar, diseñar, desarrollar e implementar sistemas de información que contribuyan a resolver problemas del entorno. El programa académico consolidará profesionales de calidad que potencialicen el mercado laboral en áreas como programación de sistemas, análisis de sistemas e implementación de sistemas.
The document discusses the atomic structure and properties of metals, insulators, and semiconductors. Metals conduct electricity well due to their free electrons, are shiny as electrons scatter light, and are stiff yet ductile from electron bonding. Insulators like ceramics and polymers do not conduct as their electrons are locked in ionic or covalent bonds, making them stiff or brittle. Semiconductors have properties between metals and insulators with fewer free electrons. Their conductivity increases with temperature unlike metals but can also be controlled through doping with other atoms to donate or accept free electrons.
The document discusses concepts related to stress, strain, Young's modulus, and material properties. It provides examples of calculations for stress, strain, force, area, and Young's modulus. It also discusses key characteristics of materials, including brittle, hard, strong, tough, elastic limit, yield point, and breaking stress. Example materials discussed include steel, nylon, cast iron, glass fiber, plastic, and rubber bands.
The document discusses how forces affect the velocity and acceleration of objects. It introduces concepts of work, potential energy, kinetic energy, and conservation of energy. It provides equations for work, potential energy, kinetic energy, power, and efficiency. It explains that acceleration depends on both force and mass, as shown in the equation Force = Mass x Acceleration. The document also discusses gravitational field, noting that gravitational field strength and acceleration due to gravity are the same and can be derived from F = ma. It presents equations relating potential energy, kinetic energy, and velocity during energy changes.
The document discusses various factors to consider when choosing materials for different applications. It lists mechanical, optical, aesthetic and cost properties as important characteristics to evaluate. The document also discusses classifying materials into groups like ceramics, metals, polymers and composites based on their properties, giving examples of each type. Students are assigned to research these material classes and describe examples and characteristics.
El documento describe dos métodos para crear una webquest: 1) Usando un creador de webquest en línea que guía el proceso paso a paso. 2) Editando una plantilla HTML existente reemplazando el texto de ejemplo con el contenido propio. En ambos casos se debe completar secciones como introducción, tarea, recursos, evaluación, conclusión y créditos.
Este documento describe diferentes herramientas y métodos para crear una webquest. Explica cómo usar un creador de webquest en línea para completar secciones como título, descripción y recursos. También cubre cómo editar una plantilla HTML existente reemplazando el texto de ejemplo con el propio para crear una webquest personalizada. Resalta la importancia de no eliminar códigos HTML para mantener el formato correcto.
El documento describe las etiquetas HTML y cómo se usan para crear páginas web. Explica que las etiquetas siempre van entre los símbolos < y > y pueden tener atributos. También cubre la estructura básica de una página que incluye las etiquetas <html>, <head>, <title> y <body>. Finalmente, explica cómo insertar imágenes usando la etiqueta <img> y sus atributos src, alt, width y height.
El documento explica las etiquetas HTML y cómo se utilizan para crear páginas web. Las etiquetas siempre van entre los símbolos < y > y pueden tener atributos. Las imágenes se insertan con la etiqueta <img> que requiere los atributos src para la ubicación de la imagen y alt para el texto alternativo.
Este documento proporciona información sobre cómo crear y dar formato a páginas web. Explica las diferentes herramientas que se pueden usar para crear páginas web, como editores HTML y programas de diseño gráfico. También describe los elementos básicos de una página web como la estructura HTML, cómo agregar títulos, texto, imágenes y enlaces. Además, proporciona consejos sobre la organización del contenido y el diseño de páginas web.
Charla de introducción a zope3: Qué es Zope 3 - Propositos de la plataforma, Aplicación, Qué es Grok, como desarrollar una aplicación con Grok, vistas, zcmls, expresiones tal, generando html desde python, formularios, almacenamiento de datos, contenedores,
El documento proporciona una introducción al uso de WordPress. Explica que WordPress no solo se usa para blogs, sino también como herramienta flexible. Luego describe los pasos para instalar WordPress, incluida la configuración del archivo wp-config.php y la base de datos. También explica cómo configurar categorías, entradas y páginas, y la estructura básica de una plantilla de WordPress incluyendo los archivos index.php, header.php y otros.
Este documento describe los elementos básicos para crear una página web en HTML, incluyendo la estructura general con las etiquetas <html>, <head>, <body>, así como etiquetas y atributos específicos como <title>, <meta>, <br>, y cómo establecer colores de fondo y márgenes. Explica la finalidad de cada elemento y proporciona ejemplos de su sintaxis.
Este documento describe la implementación de cuadros de diálogo en una aplicación jQuery Mobile. La aplicación contiene dos páginas HTML que muestran dos tipos de cuadros de diálogo: uno enlazado a una página externa y otro enlazado internamente con un tema personalizado. Los cuadros de diálogo se abren usando data-rel="dialog" y permiten mostrar información de forma modal sin cambiar de página principal.
Dreamweaver CS6 es un software fácil de usar para crear páginas web profesionales sin necesidad de programar código HTML manualmente. Sus funciones de edición visual permiten agregar rápidamente diseño y funcionalidad a las páginas mediante la creación de tablas, edición de marcos, capas e inserción de comportamientos JavaScript de forma sencilla. Incluye también un cliente FTP para actualizar el sitio web en el servidor sin salir del programa.
Este documento presenta una introducción a la programación para la web. Explica la estructura básica de un documento HTML, incluyendo las etiquetas <html>, <head>, <body>, <title> y <meta>. También cubre elementos como <link> y <script> para incorporar hojas de estilo y scripts. El documento proporciona ejemplos de código HTML bien estructurado de acuerdo con las mejores prácticas actuales.
Dreamweaver 8 es un software de diseño de páginas web que permite crear sitios web de forma visual sin necesidad de escribir código HTML a mano. Ofrece funciones para agregar diseño y funcionalidad a páginas web de manera sencilla a través de una interfaz gráfica. También incluye herramientas para trabajar con FTP y publicar páginas web en un servidor.
Este documento describe la estructura básica de una página web en HTML. Explica las principales etiquetas como <html>, <head>, <title>, <body>, y <meta>. También cubre elementos como el título de la página, color de fondo, margen, y representación de colores en hexadecimal.
Este documento proporciona instrucciones para instalar templates en Blogger, reemplazar las URLs de los gráficos y crear un menú superior. Explica cómo descargar el archivo XML y las imágenes del template, subirlos a su propio servidor para mayor seguridad, y luego cambiar las URLs de las imágenes. También describe cómo encontrar y reemplazar las URLs de los gráficos existentes y cómo crear un menú superior en Blogger agregando enlaces y submenús.
Este documento proporciona instrucciones paso a paso para crear una página web básica en HTML, incluyendo cómo agregar un título, imagen, enlace, párrafos de texto y estilo CSS. Explica las etiquetas HTML básicas y herramientas adicionales para edición de páginas web.
El documento describe las diferentes herramientas y funciones disponibles en un blog y plataformas para compartir contenido en línea como SlideShare y Issuu. Incluye instrucciones para publicar contenido, agregar formato a las entradas del blog, cambiar el diseño y configuración, y cómo subir y descargar archivos. También explica algunas etiquetas básicas de HTML.
Este documento explica cómo crear una página web básica en HTML. Primero, se debe abrir un editor de texto y escribir el código básico que incluye las etiquetas <!DOCTYPE HTML>, <HTML>, <HEAD>, <TITLE> y <BODY>. Luego, se puede comenzar a agregar contenido entre las etiquetas <BODY>, incluyendo texto con etiquetas como <b>, <i> y <br>, y también imágenes usando la etiqueta <img>. El documento también cubre cómo cambiar el color, tipo y tamaño de fuente del texto.
El documento describe los conceptos básicos de HTML para crear páginas web, incluyendo la estructura básica de un documento HTML, cómo agregar encabezados, párrafos, imágenes, enlaces, tablas y listas. Explica cómo crear y modificar archivos HTML y aplicar formato de texto y color en las páginas web.
Este documento proporciona una introducción al diseño de páginas web con HTML. Explica conceptos básicos como etiquetas, navegadores, editores y la estructura básica de una página. También cubre elementos como texto, encabezados, listas, tablas, imágenes y enlaces hypertextuales, proporcionando ejemplos de código HTML para cada uno. El documento es una guía práctica para el diseño de páginas web utilizando este lenguaje de marcado.
The document discusses test driven development (TDD) and adopting TDD for mobile apps. It presents a 5-level framework for adopting TDD, from level 1 "younglings" just starting to level 5 "grand masters" with full TDD practices. Key aspects of each level are described, including recommended testing approaches, tools, and team roles. The benefits of TDD include more maintainable code through refactoring and catching errors earlier in the development cycle. The document advocates starting with unit testing and then expanding to broader end-to-end tests.
Creencias y cultura popular para armar el equipo de un StartupRoberto Allende
Este documento ofrece consejos sobre cómo armar un equipo exitoso para una startup. Enfatiza la importancia de tener el número justo de personas en el equipo inicial (generalmente 2-3), seleccionar personas con habilidades complementarias en quienes se puede confiar, y establecer reglas claras por escrito desde el principio sobre temas como dedicación, toma de decisiones, incentivos y salida de la empresa. También destaca la necesidad de considerar las diferencias culturales entre latinoamericanos y estadounidenses al asociarse o hacer negocios.
Esta charla presenta una selección de distintas charlas de Droidcon NYC, realizada en New York a fines de Agosto de 2015. La selección está orientada a desarrolladores Android y a desarrolladores en general, puesto que las lecciones probablemente trasciendan a la plataforma.
Microservices y la era Post Industrial de la WebRoberto Allende
5 años después del keynote de Jacob Kaplan-Moss en PyConAr, la web ha evolucionado y su desarrollo ha mejorado significativamente siendo mucho menos "difícil, repetitivo y aburrido". En la charla se presentarán avances recientes y se argumentará por qué y cómo el desarrollo web está abandonado su estadío "Industrial" y se está dirigiendo hacia uno "Post-industrial", donde los servicios y el "outsourcing computacional" están ganando protagonismo, proponiendo nuevas herramientas y formas de desarrollar. Más concretamente, se presentarán patrones de arquitectura y diseño junto con implementaciones de aplicaciones en Python.
Emprender en Argentina: 8 creencias y algunas experienciasRoberto Allende
La charla se centra en dos preguntas a las cuales se intenta responder desde la perspectiva de un emprendedor cordobes: Que significa emprender en Argentina. Que habilidades tiene que tener un emprendedor.
Qué es innovar y cuan importante es saber comunicar una propuesta de valor. Cómo comunicar propuestas de valor - Material de soporte de la charla basada en el artículo disponible en http://robertoallende.com/es/como-comunicar-propuestas-de-valor
El documento presenta información sobre el enfoque Lean Startup para la gestión de emprendimientos. Explica conceptos como ciclo de construir-medir-aprender, producto mínimo viable, métricas de aprendizaje e innovación, y pivoteo. Incluye casos de startups como Webvan que ilustran estos conceptos y las dificultades de crecimiento. Finalmente, destaca aspectos culturales como orientación a objetivos frente a afiliación y la importancia de validar hipótesis con clientes antes de escalar.
La gamificación es el uso de mecánicas de juegos para influir en el comportamiento de las personas. Los elementos clave de los juegos incluyen desafíos, recompensas, competencia y cooperación. La gamificación se puede aplicar a recursos humanos y para motivar cambios de comportamiento como bajar de peso a través de tareas y metas.
PloneGov: Cooperación, participación y Software Libre en Gobierno Roberto Allende
PloneGov es un proyecto que reune organizaciones gubernamentales europeas, americanas y africanas que logran cooperación intergubernamental y participación ciudadana implementando estrategias y herramientas tecnológicas basadas de Software Libre en gobierno. En la charla se presentarán tecnologías, herramientas, experiencias, casos de éxitos y oportunidades para entidades Latinoamericanas.
Menttes: exportando servicios basados en Software LibreRoberto Allende
The document discusses menttes, a company that exports services based on free and open source software. Menttes is led by Roberto Allende and provides services using PloneGOV.org. It also mentions Fairsource, a content management system for dividing and conquering websites.
Plone es un producto que provee una plataforma para el desarrollo de aplicaciones web centradas en contenidos. Plone es software libre y está desarrollado sobre Zope, un servidor de aplicaciones web programado en Python. En el desarrollo de aplicaciones web orientadas a contenido convergen varias tecnologías con las que el programador debe estar familiarizado. En esta charla se hará una breve reseña de las tecnologías involucradas en el desarrollo web usando Plone; se darán ejemplos de tareas típicas que debe enfrentar el desarrollador de una aplicación web construida sobre Plone; y se expondrán ejemplos del uso de Plone en proyectos reales.
Qué es catedral y bazaar, promesas, reusabilidad, caso de linux, debian y plone, requerimientos, comparación con XP, ecosistema, planificación o ciclos de lanzamientos, pep, plep
Plone visto desde el ZMI. Instalación paso a paso de Plone 2.5 en windows. Como configurar puntos de montaje. zope.conf. Zope Management Interface - zmi. Estructura de un sitio, portlets, tipos de contenido. Arquitectura de plone, Zope desde el sistema de archivos, portal_workflow, error_log, portal_catalog, usuarios, roles y grupos,
Desarrollo de Productos con Archetypes y ArchGenXMLRoberto Allende
Curso introductorio de desarrollo de productos archetypes para plone. Herramientas UML, introducción a diagramas uml para desarrollo archetypes, ArgoUml, archgenxml, vocabularios, workflow.
El documento explica cómo usar zc.buildout para configurar un entorno de desarrollo Plone de forma automatizada. Se crea un archivo buildout.cfg que define las partes para instalar Zope, crear una instancia y agregar Plone. Esto permite generar nuevos entornos de forma rápida y consistente en comparación con hacerlo manualmente.
AJAX a cuerda
Lo básico sobre AJAX y su funcionamientoRoberto Allende
El documento proporciona una introducción a AJAX y describe sus principales tecnologías subyacentes como XML, DOM, CSS, XMLHttpRequest y JavaScript. Explica cómo AJAX permite la comunicación asíncrona entre el navegador y el servidor sin recargar la página, lo que hace posible aplicaciones web dinámicas e interactivas. También muestra cómo construir una clase AJAX en JavaScript para realizar solicitudes y procesar las respuestas de forma asíncrona.
PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...Roberto Allende
12 Comunas belgas y 2 Mairies francesas participan en el proyecto CommunesPlone. De forma similar el proyecto UdalPlone reune a municipios del País Vasco, PloneGov.ch en Suiza. Recientemente estos tres proyectos se fucionaron en PloneGov.org. La iniciativa tiene como objetivo ganar independencia de proveedores IT desarrollando ellos mismos y de forma cooperativa, aplicaciones y sitios web para su propio uso y el de sus ciudadanos. PloneGov está desarrollado sobre dos renombradas herramientas libres: Zope (http://www.zope.org) y Plone (http://www.plone.org). En la charla se describirá en que consiste el proyecto, como así tambien proyectos similares que están integrándose a este junto con las oportunidades de participación para municipios latinoamericanos.
Este documento proporciona una introducción a Python, incluyendo sus características principales, tipos de datos, controles de flujo y manejo de excepciones. También describe la biblioteca estándar de Python y algunas de sus aplicaciones populares como Django y NumPy.
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)AbrahamCastillo42
Power point, diseñado por estudiantes de ciclo 1 arquitectura de plataformas, esta con la finalidad de dar a conocer el componente hardware llamado tarjeta de video..
SOPRA STERIA presenta una aplicació destinada a persones amb discapacitat intel·lectual que busca millorar la seva integració laboral i digital. Permet crear currículums de manera senzilla i intuitiva, facilitant així la seva participació en el mercat laboral i la seva independència econòmica. Aquesta iniciativa no només aborda la bretxa digital, sinó que també contribueix a reduir la desigualtat proporcionant eines accessibles i inclusives. A més, "inCV" està alineat amb els Objectius de Desenvolupament Sostenible de l'Agenda 2030, especialment els relacionats amb el treball decent i la reducció de desigualtats.
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaAMADO SALVADOR
Descubre el catálogo general de la gama de productos de refrigeración del fabricante de electrodomésticos Miele, presentado por Amado Salvador distribuidor oficial Miele en Valencia. Como distribuidor oficial de electrodomésticos Miele, Amado Salvador ofrece una amplia selección de refrigeradores, congeladores y soluciones de refrigeración de alta calidad, resistencia y diseño superior de esta marca.
La gama de productos de Miele se caracteriza por su innovación tecnológica y eficiencia energética, garantizando que cada electrodoméstico no solo cumpla con las expectativas, sino que las supere. Los refrigeradores Miele están diseñados para ofrecer un rendimiento óptimo y una conservación perfecta de los alimentos, con características avanzadas como la tecnología de enfriamiento Dynamic Cooling, sistemas de almacenamiento flexible y acabados premium.
En este catálogo, encontrarás detalles sobre los distintos modelos de refrigeradores y congeladores Miele, incluyendo sus especificaciones técnicas, características destacadas y beneficios para el usuario. Amado Salvador, como distribuidor oficial de electrodomésticos Miele, garantiza que todos los productos cumplen con los más altos estándares de calidad y durabilidad.
Explora el catálogo completo y encuentra el refrigerador Miele perfecto para tu hogar con Amado Salvador, el distribuidor oficial de electrodomésticos Miele.
HPE presenta una competició destinada a estudiants, que busca fomentar habilitats tecnològiques i promoure la innovació en un entorn STEAM (Ciència, Tecnologia, Enginyeria, Arts i Matemàtiques). A través de diverses fases, els equips han de resoldre reptes mensuals basats en àrees com algorísmica, desenvolupament de programari, infraestructures tecnològiques, intel·ligència artificial i altres tecnologies. Els millors equips tenen l'oportunitat de desenvolupar un projecte més gran en una fase presencial final, on han de crear una solució concreta per a un conflicte real relacionat amb la sostenibilitat. Aquesta competició promou la inclusió, la sostenibilitat i l'accessibilitat tecnològica, alineant-se amb els Objectius de Desenvolupament Sostenible de l'ONU.
La inteligencia artificial sigue evolucionando rápidamente, prometiendo transformar múltiples aspectos de la sociedad mientras plantea importantes cuestiones que requieren una cuidadosa consideración y regulación.
KAWARU CONSULTING presenta el projecte amb l'objectiu de permetre als ciutadans realitzar tràmits administratius de manera telemàtica, des de qualsevol lloc i dispositiu, amb seguretat jurídica. Aquesta plataforma redueix els desplaçaments físics i el temps invertit en tràmits, ja que es pot fer tot en línia. A més, proporciona evidències de la correcta realització dels tràmits, garantint-ne la validesa davant d'un jutge si cal. Inicialment concebuda per al Ministeri de Justícia, la plataforma s'ha expandit per adaptar-se a diverses organitzacions i països, oferint una solució flexible i fàcil de desplegar.
1. menttes
corporate training
Zope Page Templates
y metal macros
Pablo Ambrosio pandres@menttes.com
Emanuel Sartor emanuel@menttes.com
2. Función
Zope favorece la separación entre presentación y lógica proveyendo objetos destinados
expresamente a la presentación.
Definimos como presentación la tarea de de definir dinámicamente la estructura de las
páginas web. Los objetos de presentación generan código HTML.
Zope provee dos métodos para presentación Zope Page Templates (ZPT) y Document
Template Markup Language (DTML).
ZPT apunta a directamente a generar código HTML válido insertando código XML para
definir el comportamineto dinámico.
DTML tambien permite generar páginas web insertando tags especiales, pero estas no son
HTMl válido.
menttes
4. Creando un Page Template
Crear una carpeta “Demo” en el root.
Ingesar a “Demo” y crear un Page Template
eligiendo el item en la lista desplegable de
arriba a la derecha.
Elegir el id (ej: demo) y hacer click en
Add o Add and Edit para acceder al
cuadro de edición.
menttes
5. Editando un Page Template
Luego de hacer click en “Add and Edit”, o haciendo click sobre un page template preexistente en la folder donde se esta
trabajando ingresamos a la pantalla de edición web. Si no se ha ingresado código luego de la creación la interfaz mostrará
un esqueleto de código básico sobre el que se puede comenzar a trabajar.
Una vez realizados los cambios que se requieran hacer click en el botón “Save Changes” para que estos tengan efecto.
menttes
6. Ejercicio: Editar un Page Template
●
Crear un nuevo Page Template.
●
Editarlo, reemplazando el texto por defecto por algún código HTML simple, como el siguiente:
<html>
<body>
<h1>¡Hola Mundo!</h1>
</body>
</html>
menttes
7. Subiendo un Page Template
Si se quiere editar un template desde un editor externo o simplemente cargar el código del
template desde el sistema de archivos, desde la página de creación se puede hacer click en el
botón “Browse“, desde donde elegiremos el archivo a agregar.
menttes
8. Subiendo un Page Template
En la parte inferior de la página de edición se puede acceder a la opción de navegar el sistema de
archivos desde donde elegiremos de donde tomar el código para el template, una vez elegido se
debe hacer click en “Upload File”.
menttes
9. Ejercicio: Subir un Zope Page Template
Crear con su editor preferido el siguiente archivo demoUno.pt:
<html>
<head>
<title tal:content=quot;template/titlequot;>The title</title>
</head>
<body>
Este es el Page Template <span tal:content=quot;template/idquot;>id</span>.
</body>
</html>
y subirlo al sitio Plone en la carpeta /demo.
menttes
10. Vista de un Page Template
Un Page Template puede ser visto haciendo click en la pestaña (tab) Test desde la pantalla de edición del
template.
Tambien puede ser visto visitando su URL de Zope asociado, ej:
http://misitio/puntodemontaje/miportal/micarpeta/mitemplate .
menttes
11. Algunas propiedades de los Page Template
El mecanismo de XML y HTML de Zope:
●
conserva el template como código XML bien formado
●
intenta ser no invasivo usando atributos registrados como namespaces (TAL)
●
provee soporte para macros (METAL)
●
provee soporte de para internacionalización
menttes
12. Template Attribute Language (TAL)
El Template Attribute Language (TAL) es un lenguaje expresado como atributos en las
etiquetas (tags) HTML.
Las etiquetas tienen la forma:
<p tal:comando=quot;expresionquot;>Texto</p>
Todas las declaraciones en TAL consisten de atributos en etiquetas cuyos nombres
comienzan con “tal:” , y todas tienen valores asociados, que siempre van entre comillas.
Estas etiquetas son código HTML válido, o sea que estos documentos se pueden editar
con cualquier editor de HTML.
menttes
13. Template Attribute Language Expression Syntax (TALES)
Las expresiones TALES evalúan código de un tipo específico y devuelven su resultado.
Las distíntas expresiones son manejadas por el motor de TALES. En una expresión
TALES su tipo se especifica al comienzo. Estas son algunas de las expresiones mas
comunes:
●
“path: ” Toma una cadena con pinta de URL para evaluarla y recorrerla hasta obtener un
objeto. Es la expresión por defecto en el motor de TALES.
●
“string: ” Devuelve un string, pero tambien puede interpretar un path interpolado.
●
“python: ” Devuelve el resultado de una expresión python.
●
“not: ” Si el resultado de la expresion evaluada es un booleano, niega ese resultado.
●
“exists: ” Determina si un objeto existe dado un path.
menttes
31. Repetición Avanzada
Las variables de repetición vienen incorporadas al mecanismo de template y proveen información sobre la iteración actual.
Son:
●
index – índice de la repetición, empezando de cero.
●
number – índice (o número) de la repetición, empezando desde uno.
●
even – verdadera para iteraciones con índice par (0, 2, 4, ...).
●
odd verdadera para iteraciones con índice impar (1, 3, 5, ...).
●
start – verdadera para la repetición inicial (índice 0).
●
end – verdadera para la última repetición.
●
length – longitud de la secuencia, que es el número total de repeticiones.
●
letter/Letter – cuenta las repeticiones con letras en minúscula/mayúscula respectivamente (quot;aquot; quot;zquot;, quot;aaquot; quot;azquot;, quot;baquot;
quot;bzquot;, ...)
menttes
33. Omitiendo Tags
Se puede remover un tag con la declaración tal:omittag. Esta remueve los tags que abren u cierran el
elemento, sin afectar su contenido:
<b tal:omittag=quot;quot;><i>esto</i> queda</b>
Renderiza como: <i>esto</i> queda
Usado así tal:omittag funciona casi como un tal:replace=quot;defaultquot;. Sin embargo, tal:omittag tambien puede
swer usado con una expresión de verdad, en cuyo caso sólo remueve los tags si la expresión evalúa a
verdader. Por ejemplo:
Comidas: <span tal:repeat=quot;comida comidasquot;>
<b tal:omittag=quot;not:comida/preferidaquot;
tal:content=quot;comida/nombrequot;>Spam</b>
</span>
Esto devuelve una lista de comidas, con el nombre de la preferida en negrita.
menttes
37. Control de Atributos Avanzado
La declaracion tal:attributes se puede usar para reemplazar dinámicamente atributos. Se
puede reemplazar mas de un atributo a la vez separándolos con una “;”.
<a href=quot;linkquot; tal:attributes=quot;href here/getLink;
class here/getClassquot;>link</a>
Ejercicio: Insertar el siguiente código en un template y probar el resultado. “here” hace
referencia al lugar desde donde es llamado el template.
<a tal:attributes=quot;href here/absolute_urlquot;>enlace</a>
menttes
38. Adquisición y navegación de URLs
Zope separa un URL y lo compara con la jerarquía de objetos, recorriéndola hasta que encuentra
una coincidencia para cada parte. Este proceso se conoce como caminata de URL. Por ejemplo,
cuando Zope recibe el URL “Zoo/Animales/leon/alimentar”, comienza desde el directorio raíz
buscando un objeto llamado Zoo. Luego se mueve a la carpeta Zoo y busca un objeto llamado
Animales. Se mueve a la carpeta Animales y busca un objeto llamado leon. Se mueve dentro de
leon y busca el objeto llamado alimentar. Supongamos que el script alimentar no se encuentra en
el objeto leon y es encontrado en la carpeta Zoo usando el mecanismo de adquisicion. Zope
siempre comienza a buscar un objeto comenzando por el último objeto recorrido, en este caso
leon, Como leon no contiene nada, Zope vuelve al contenedor de leon, Animales. El script
alimentar no esta allí, asi que Zope vuelve un paso mas en la jerarquía hasta el contenedor Zoo,
donde encuentra el script.
menttes
39. Adquisición y navegación de URLs
Ahora Zope ha alcanzado el final del URL y ha encontrado coincidencias de objetos para
los elementos del URL. Zope reconoce que el último objeto hallado, alimentar, se puede
llamar (es una función o método), y lo llama en el contexto del anteúltimo objeto
encotnrado, leon. Asi es como el script alimentar es invocado para el objeto leon.
Asi mismo se podría llamar al método bañar en el objeto leon visitando el URL
“Zoo/Animales/leon/bañar”. Este método podría adquirirlo de la carpeta Animales.
menttes
40. Adquisición y Navegación de URLs
La adquisición un asunto de contenedores
El concepto detras de la adquisición es:
●
Los objetos estan situados dentro de otros objetos. Estos objetos actúan como sus “contenedores”.
●
Los objetos pueden adquirir el comportamiento de sus contenedores.
Ejercicio:
●
Correr los templates de prueba desde los URLs de “/demo” y de “/demo/1” y observar las diferencias.
●
En el template de repetición cambiar “container/objectValues” por “here/objectValues” y correrlo en las
carpetas indicadas arriba.
menttes
46. Interacciones Entre Comandos TAL
Cuando hay una declaración TAL por elemento, el orden en el que se ejecutan es simple.
Comenzando desde la raíz, la declaración de cada elemento es ejecutada y luego la de
sus elementos hijos siguiendo el orden en que aparecen.
Sin embargo, es posible tener mas una declaración TAL en un mismo elemento. Cualquier
combinación de declaraciones puede aparecer en un mismo elemento, con la excepción
de tal:content y tal:replace, que nunca pueden estar juntos.
menttes
47. Interacciones Entre Comandos TAL
Cuando un elemento tiene múltiples declaaciones, se ejecutan en el siguiente orden:
1. define
2. condition
3. repeat
4. content o replace
5. attributes
6. omittag
Dado que la declaración tal:onerror sólo se invoca si ocurre un error, no aparece en la lista.
menttes
48. Interacciones Entre Comandos TAL
El razonamiento en este orden es algo así: a menudo se desea asignar variables para su
uso en otras declaraciones, asi que define va primero. Lo próximo por hacer es decidir si
el elemento se incluirá o no, así que sige el condicional; dado que la condición puede
depender de las variables seteadas. Puede ser útil poder reemplazar las distíntas partes
de un elemento con valores en cada iteración de un repeat, asi que éste viene antes de
content, replace y attributes. Content y replace no pueden ser usados juntos así que
ocupan el mismo lugar en la jerarquía. Omittag viene último dado que ningúna otra
declaración depende de ella y que debe aparecer luego de define y de repeat.
menttes
49. Interacciones Entre Comandos TAL
Hay tres restricciones de las que hay que estar conciente al combinar declaraciones TAL
en elementos:
●
Solo un tipo de cada declaración puede ser usada en cada tag. Dado que HTML no
permite atributos múltiples con el mismo nombre.
●
Tanto tal:content como tal:replace no pueden ser usadas en el mismo tag, dado que
sus funcionalidades conflictúan.
●
El orden en el que se presentan los atributos TAL en un tag no afecta su orden de
ejecución.
menttes
51. Expresiones
●
options: los argumentos que han sido pasados al template por teclado (si los hay). No
se puede usar a traves de la web. Solo está disponible si se llama desde Python, por
ejemplo, si el template “t” es llamado desde una expresión Python t(foo=1), el path
“options/foo” equivale a 1.
●
attrs: un diccionario de atributos del actual tag en el template. Las claves son los
nombres de los atributos y los valores son los orginales de los atributos. No es una
variable muy usada.
●
root: el objeto raíz de Zope. Se usa para obtener objetos Zope desde distíntas
ubicaciones, sin importar desde donde se este llamando al template.
menttes
52. Expresiones
●
here: el objeto desde donde el template esta siendo llamado. A menudo esto es lo mismo
que container, pero puede variar si se esta usando adquisición. Se usa para obtener objetos
Zope que se espera econtrar en distíntos lugares dependiendo de donde se llame el
template. Es igual a la variable context que se usa en scripts Python.
●
container: el contenedor (usualmente una carpeta) en donde se encuentra el template. Se
usa para obtener objetos Zope desde ubicaciones relativas a la posción del template. Las
variables container y here se refieren al mismo objeto cuando un template es llamado desde
su ubicación normal. Sin embargo cuando el template es aplicado a otro objeto (por ejemplo
en un método ZSQL) ambas variables se referirán a distíntos objetos.
●
modules: la colección de módulos Python disponibles en los templates.
menttes
66. Expresiones Python: Otros Tipos De Expresiones
Se pueden usar otros tipos de expresiones dentro de una expresión Python. Cada tipo
expresión tiene una función correspondiente con el mismo nombre, incluyendo: path(),
string(), exists(), and nocall(). Esto permite escribir expresiones como:
quot;python:path('here/%s/thing' % foldername)quot;
quot;python:path(string('here/$foldername/thing'))quot;
quot;python:path('request/form/x') or defaultquot;
El último ejemplo tiene un significado levemente distínto a la expresión path quot;request/form/
x | defaultquot;, dado que usa el texto default si quot;request/form/xquot; no existe o si es falso.
menttes
67. Expresiones Python: Objetos Zope
Buena parte del potencial de Zope involucra lograr que interactúen objetos especializados.
Nuestros Page Templates pueden usar scripts, métodos SQL, catálogos y objetos de
contenido customizados. Para poder usar todos estos objetos tenemos que saber como
accederlos dentro de los Page Templates.
Las propiedades de los objetos son atributos, luego podemos acceder el título de un
template con la expresión quot;template.titlequot;. La mayoría de los objetos Zope soportan
adquisición, lo que nos permite obtener atributos desde objetos “padre” (anteriores en la
jerarquía). Esto significa que la expresión “here.Control_Panel” traerá el objeto “Control
Panel” desde la carpeta raíz. Los métodos de los objetos son atributos, como
“here.objectIdsquot; y quot;request.setquot;.
menttes
68. Expresiones Python: Objetos Zope
Los objetos contenidos en una carpeta pueden ser accedidos como atributos de la carpeta, pero como a
menudo tienen Ids que no son identificadores Python válidos, no se puede usar la notación habitual.
Por ejemplo, no se puede acceder el objeto “penguin.gif” con la siguiente expresión:
quot;python:here.penguin.gifquot;
en su lugar se debe usar:
quot;python:getattr(here, 'penguin.gif')quot;
dado que Python no reconoce nombres de atributos con puntos '.' en ellos.
menttes
69. Expresiones Python: Objetos Zope
Algunos objetos, como request, módulos, y carpetas Zope proveen soporte para acceso
de items a la Python, por ejemplo:
request['URL']
modules['math']
here['thing']
Cuando se usa el acceso de items en una carpeta, no intenta usar adquisición sobre el
nombre, luego solo tendrá éxito en la búsqueda si hay un objeto con ese identificador en la
carpeta.
menttes
78. Detalles de los Macros
Las declaraciones metal:definemacro y metal:usemacro son bastante simples. Sin embargo, hay
algunas sutilezas que cabe mencionar.
El nombre de un macro debe ser único dentro del page template en el que es definido. Se pueden
definir varios macros en un mismo documento pero todos deben tener distíntos nombres.
Normalemente nos referiremos a un macro en una declaración metal:usemacro con una
expresión path. Sin embargo, se puede usar una expresión de cualquier tipo mientras que ésta
devuelva un macro. Por ejemplo:
<p metal:usemacro=quot;python:here.getMacro()quot;>
Reemplazado por un macro determinado dinámicamente,
que está ubicado en el script getMacro.
</p>
menttes
79. Detalles de los Macros
Se puede usar la variable default con la declaración metal:usemacro:
<p metal:usemacro=quot;defaultquot;>
Este contenido permanece – ninguna macro es usada
</p>
El resultado es el mismo que usar default con tal:content o tal:replace. El conteido por
defecto del tag no cambiará cuando sea renderizado. Esto puede ser útil si se necesita
usar un macro condicionalmente o respaldarse en el contenido por defecto si el macro no
existe.
menttes
80. Detalles de los macros
Si se intenta usa la variable nothing con metal:usemacro se obtendrá un error, dado que
nothing no es un macro. Si se desea usar nothing para incluir condicionalemente un
macro, en su lugar se debe enmarcar la declaración metal:usemacro con una declaración
tal:condition.
Zope gestiona los macros primero cuando renderiza los templates. Luego Zope evalúa las
expresiones TAL. Por ejemplo, considérese este macro:
<p metal:definemacro=quot;titlequot;
tal:content=quot;template/titlequot;>
Título del template
</p>
menttes
81. Detalles de los Macros
Cuando se use este macro insertará el título del template en el que el macro está siendo
usado, no el título del template en el que el macro está definido. En otras palabras, cuando
se usa un macro es como copiar el texto del macro dentro del nuevo template y
renderizarlo en ese template.
menttes
86. Personalizando la Presentación por Defecto
Un uso común de slots es proveer la presentación por defecto que se puede personalizar. En el ejemplo
anterior la definición del slot era un elemento vacío. Sin embargo se puede poner contenido dentro de la
definicón. Por ejemplo, consideremos el macro de barra lateral revisado:
<div metal:definemacro=quot;sidebarquot;>
<div metal:defineslot=quot;linksquot;>
Enlaces
<ul>
<li><a href=quot;/quot;>Home</a></li>
<li><a href=quot;/productsquot;>Productos</a></li>
<li><a href=quot;/supportquot;>Soporte</a></li>
<li><a href=quot;/contactquot;>Contactenos</a></li>
</ul>
</div>
<span metal:defineslot=quot;info_adicionalquot;></span>
</div>
menttes
87. Personalizando la Presentación por Defecto
Ahora la barra lateral es completamente personalizable. Se puede llenar el slot de “links”
para redefinir los enlaces. Si se elige no ocupar el slot se devolverá el contenido por
defecto.
menttes
88. Combinando TAL y METAL
Se pueden usar declaraciones TAL y METAL en un mismo elemento:
<ul metal:definemacro=quot;linksquot;
tal:repeat=quot;link here/getLinksquot;>
<li>
<a href=quot;link urlquot;
tal:attributes=quot;href link/urlquot;
tal:content=quot;link/namequot;>nombre del link</a>
</li>
</ul>
En este caso, getLinks es un script que arma una lista de objetos (podría usar una
consulta a Catalog).
menttes
89. Combinando TAL y METAL
Como las declaraciones METAL son evaluadas antes que las TAL, no hay conflctos. Este
ejemplo también es interesante dado que personaliza un macro sin usar slots. El macro
llama al script getLinks para determinar cuales son los enlaces. Luego se puede cambiar
el resultado redefiniendo getLinks para distíntas ubicaciones del sitio.
No siempre es fácil determinar la mejor forma de personalizar un el aspecto de las
diferentes partes de un sitio. En general se usan slots para sobreescribir elementos de
presentación, y se usan scripts para proveer contenido dinámicamente. Para los casos
donde es difícil determinar la situación, los script proveen una solución mas flexible.
menttes
90. Macros de Página Completa
En lugar de usar macros para porciones de presentación compartidas entre páginas, se pueden usar macros para definir
páginas completas. Esto es posible con slots. Un ejemplo:
<html metal:definemacro=quot;mipaginaquot;>
<head>
<title tal:content=quot;here/titlequot;>título</title>
</head>
<body>
<h1 metal:defineslot=quot;headlinequot;
tal:content=quot;here/titlequot;>title</h1>
<p metal:defineslot=quot;bodyquot;>
body
</p>
<span metal:defineslot=quot;footerquot;>
<p>Copyright 2001</p>
</span>
</body>
</html>
menttes
91. Macros de Página Completa
Luego se puede usar ese macro en templates para distíntos tipos de contenido, o diferentes partes del sitio.
Por ejemplo, este es un template para noticias que puede usar el macro:
<html metal:usemacro=quot;container/master/macros/mipaginaquot;>
<h1 metal:fillslot=quot;headlinequot;>
Prensa:
<span tal:replace=quot;here/getHeadlinequot;>Titular</span>
</h1>
<p metal:fillslot=quot;bodyquot;
tal:content=quot;here/getBodyquot;>
Cuerpo de la noticia aca.
</p>
</html>
menttes
92. Macros de Página Completa
Este template redefine el slot “headline” para incluir las palabras quot;Prensaquot; y llama al método
getHeadline en el objeto actual. Tambien redefine el slot “body” llamando al método getBody.
El poder de este enfoque es que ahora se puede cambiar el macro “page” y la página de noticias
será automáticamente actualizada. Por ejemplo se podría poner el cuerpo de la página en una
tabla y agregar una barra lateral a la izquierda y estos elementos pasarían a formar parte de todo
el sitio donde se use este macro.
Ejercicio: crear un page template que use el macro “mipagina”, reemplazando contenido en los
slots.
Ejercicio: Plone provee un template principal con el cual formar las páginas identificar cual es el
archivo donde está, partiendo desde “portal_skins”.
menttes
97. Obteniendo Grandes Cantidades de Información por
Tandas
Cuando un usuario consulta una base de datos y obtiene un resultados con muchos de
items, a menudo es mejor mostrarlo en varias páginas de, digamos, veinte items en lugar
de mostrar todo en una sola. Al proceso de separar una lista por tandas de le llama
“batching”. Page templates soporta la separación por tandas usando un objeto especial
Batch, provisto por el módulo ZTUtils. Un ejemplo:
<ul tal:define=quot;lots python:range(100);
batch python:modules['ZTUtils'].Batch(lots, size=10, start=0)quot;>
<li tal:repeat=quot;num batchquot;
tal:content=quot;numquot;>0
</li>
</ul>
menttes
98. Obteniendo Grandes Cantidades de Información por
Tandas
Este ejemplo muestra una lista con diez elementos (desde el 0 al 9). El objeto Batch corta una
lista en tandas. Este ejemplo parte una lista de cien objetos en diez tandas de diez.
Se puede mostrar una tanda distínta de diez items pasando como parámetro un número distínto
en start:
<ul tal:define=quot;lots python:range(100);
batch python:modules['ZTUtils'].Batch(lots,
size=10, start=13)quot;>
Esta tanda comenzará desde el item catorce y seguira hasta el item veintitres. Es decir, muestra
desde el númerpo 13 hasta lel 22. Notemos entonces que el argumento de inicio de la tanda
(start) es el index del primer item. El index comienza desde cero. Python usa índices para
referirse a los elementos de una lista.
menttes
99. Obteniendo Grandes Cantidades de Información por
Tandas
Normalmente cuando usamos tandas queremos incluir elementos de navegación que nos
permitan movernos de una tanda hacia otra. Este es un ejemplo:
<html>
<head>
<title tal:content=quot;template/titlequot;>The title</title>
</head>
<body tal:define=quot;empleados here/getEmpleados;
start python:int(path('request/start | nothing') or 0);
batch python:modules['ZTUtils'].Batch(empleados,
size=3,
start=start);
previous python:batch.previous;
next python:batch.nextquot;>
menttes
100. Obteniendo Grandes Cantidades de Información por
Tandas
<p>
<a tal:condition=quot;previousquot;
tal:attributes=quot;href string:${request/URL0}?start:int=${previous/first}quot;
href=quot;previous_urlquot;>previo</a>
<a tal:condition=quot;nextquot;
tal:attributes=quot;href string:${request/URL0}?start:int=${next/first}quot;
href=quot;next_urlquot;>proximo</a>
</p>
<ul tal:repeat=quot;empleado batchquot; >
<li>
<span tal:replace=quot;empleado/namequot;>Juan</span>
recibe $<span tal:replace=quot;empleado/salaryquot;>100,000</span>
al año.
</li>
</ul>
</body>
</html>
menttes
101. Obteniendo Grandes Cantidades de Información por
Tandas
Copiar este código en un script “getEmpleados”:
return [ {'name': 'Chris McDonough', 'salary':'5'},
{'name': 'Guido van Rossum', 'salary': '10'},
{'name': 'Casey Duncan', 'salary':'20' },
{'name': 'Andrew Sawyers', 'salary':'30' },
{'name': 'Evan Simpson', 'salary':'35' },
{'name': 'Stephanie Hand', 'salary':'40' }, ]
menttes
102. Obteniendo Grandes Cantidades de Información por
Tandas
Si vemos la declaración tal:define en el elemento body, define un conjunto de variables
para la tanda. La variable “empleados” es una lista de objetos devuelta por el script.
La segunda variable, “start”, es o bien configurada con el valor de “request/start” o a cero
si no hay una variable start en el request. La variable start lleva la cuenta de la posición
actual en la lista de empleados. La tanda comienza en la posición especificada por la
variable “start”.
Las variables “previous” y “next” se refieren a la pasada y a la próxima tanda
respectivamente si existen. Todas estas variables quedan disponibles dentro del elemento
body.
menttes
103. Obteniendo Grandes Cantidades de Información por
Tandas
Veamos los enlaces de navegación. Se crean enlaces para navegar hacia atras y hacia
adelante en la sucesión de tandas. La declaración tal:condition primero prueba si existen
las respectivas tandas, si es asi, se renderiza el enlace (no aparece de lo contrario).
La declaración tel:attributes crea un enlace a las respectivas tandas. Elenlace es el URL
de la página actual (request/URL0) junto con un string de consulta indicando el índice
“start” de la tanda.
menttes
105. Manipular objetos de contenido
Llamamos objetos de contenido a los objetos que agregamos a través de la interfaz de
Plone para manter el contenido del portal: documentos, imágenes, enlaces, carpetas,
eventos, noticias y archivos.
Los objetos de contenido pueden ser manipulados por medio de scripts escritos en
Python. Es decir, se pueden crear, modificar y borrar objetos de contenido; puede
modificar el estado de un objeto de contenido; y se puede acceder a la información que
cada objeto de contenido contiene.
menttes
106. Acceder Objetos De Contenido Desde Un Script
Vamos a crear un objeto de contenido usando la interfaz de Plone y luego lo vamos a
acceder desde un script siguiendo los siguientes pasos:
●
Agregamos un documento (página) a nuestro sitio Plone cuyo identificador sea mi
documento. En Plone 2.1.1 sólo escribimos el título “Mi documento” y el identificador
se genera automáticamente.
menttes
107. Acceder Objetos De Contenido Desde Un Script
●
A través del ZMI vamos a portal_skins/custom y agregamos un objeto script (Python) cuyo contenido
sea:
from Products.CMFCore.utils import getToolByName
urltool = getToolByName(context, 'portal_url')
portal = urltool.getPortalObject()
document = getattr(portal, 'midocumento')
print document.Title()
print document.CookedBody()
return printed
menttes
108. Acceder Objetos De Contenido Desde Un Script
En el script se observa el uso de las funciones getToolByName y getattr, y de los métodos
getPortalObject, Title y CookedBody. Veamos cómo se usa cada uno.
●
getToolByName(obj, name, default=[]) Se importa desde un módulo CMF. Devuelve la
herramienta (tool) dada por name (string) dentro del objeto obj.
●
getattr(object, name) es una función de Zope. Devuelve el valor del atributo nombrado
de object. name tiene que ser string. Si name es uno de los atributos de object, el
resultado es el valor de ese atributo. Por ejemplo, getattr(x, foobar) es equivalente a
x.foobar. Si el atributo no existe, se devuelve default, de otra forma se lanza
AttributeError.
menttes
109. Acceder Objetos De Contenido Desde Un Script
●
hasattr(object, name) es una función de Zope. Los argumentos son un objeto y un
string. El resultado es 1 si el string es el nombre de alguno de los atributos del objeto,
y es 0 en caso contrario. (Esto se implementa llamando a gettattr(object, name) y
checando si lanza una excepción o no).
●
getPortalObject(self) es un método de la clase Products.CMFCore.URLTool.URLTool
que devuelve el objeto Portal.
menttes
110. Modificar El Contenido De Un Documento Por Medio De Un
Script
Antes de las sentencias print en el script del ejemplo anterior, agregamos:
document.edit(text_format='html', text='<div>
<b>Cambiamos el texto...</b></div>')
Se utiliza el método edit, que describimos a continuación:
●
edit(self, text_format, text, file='', safety_belt='') es un método de la clase
CMFDefaults.Document.Document. text_format puede valer html, structuredtext o
'plain'; text es el cuerpo del documento.
menttes
111. Copiar Y Pegar Objetos De Contenido
●
Crear una carpeta con identificador micarpeta.
●
El script que se muestra abajo, copia el documento creado en el ejemplo y lo pega dentro de la carpeta
recientemente creada:
from Products.CMFCore.utils import getToolByName
urltool = getToolByName(context, 'portal_url')
portal = urltool.getPortalObject()
cb_copy_data = portal.manage_copyObjects(['midocumento'])
folder = getattr(portal, 'micarpeta')
folder.manage_pasteObjects(cb_copy_data)
menttes
112. Copiar Y Pegar Objetos De Contenido
Aquí vemos la utilización de dos métodos: manage_copyObjects y manage_pasteObjects,
ambos se explican a continuación junto con manage_cutObjects.
* manage_copyObjects(self, ids=None, REQUEST=None, RESPONSE=None) es un
método de la clase OFS.CopySupport.CopyContainer. Pone una referencia a los objetos
nombrados en ids en el portapapeles.
menttes
113. Copiar Y Pegar Objetos De Contenido
●
manage_cutObjects(self, ids=None, REQUEST=None) es un método de la clase
OFS.CopySupport.CopyContainer.Pone una referencia a los objetos nombrados en
ids en el portapapeles.
●
manage_pasteObjects(self, cb_copy_data=None, REQUEST=None) es un método de
la clase OFS.CopySupport.CopyContainer. Pega los objetos previamente copiados en
el objeto actual. Si es llamado desde código Python, se debe pasar el resultado de
una llamada previa a manage_cutObjects o manage_copyObjects como primer
argumento.
menttes
114. Borrar Objetos De Contenido
El siguiente script borra el documento que creamos en el ejemplo:
from Products.CMFCore.utils import getToolByName
urltool = getToolByName(context, 'portal_url')
portal = urltool.getPortalObject()
portal.manage_delObjects(['midocumento'])
Aquí usamos el método manage_delObjects:
●
manage_delObjects(self, ids=[], REQUEST=None) es un método de la clase
CMFPlone.PloneFolder.BasePloneFolder. Elimina todos aquellos elementos cuyos identificadores aparezcan en ids.
menttes
115. Crear Documentos, Carpetas Y Eventos Desde Un Script
from Products.CMFCore.utils import getToolByName
urltool = getToolByName(context, 'portal_url')
catalogtool = getToolByName(context, 'portal_catalog')
portal = urltool.getPortalObject()
# Creando un documento
doc = portal.invokeFactory('Document', 'testdoc')
document = getattr(portal, 'testdoc')
document.editMetadata(title='Documento de prueba', description='Esta es una descripción',
subject='')
document.edit(text_format='html', text='<b>Documento de prueba</b>')
menttes
116. Crear Documentos, Carpetas Y Eventos Desde Un Script
# Creando una carpeta
portal.invokeFactory('Folder', 'testfolder')
folder = getattr(portal, 'testfolder')
folder.setTitle('Mi Carpeta')
folder.setDescription('Esta es la descripción de la carpeta.')
catalogtool.refreshCatalog()
# Creando un evento
folder.invokeFactory('Event', id='event')
event = getattr(folder, 'event')
event.edit(start_date='20030918', end_date='20030919', location='home', description='Este es
un evento de prueba.')
event.editMetadata(title = 'Foo', subject='Appointment')
menttes
117. Crear Documentos, Carpetas Y Eventos Desde Un Script
●
editMetadata(self, obj, allowDiscussion=None, title=None, subject=None, description=None,
contributors=None, effective_date=None, expiration_date=None, format=None, language=None,
rights=None, **kwargs) definido en la clase CMFPlone.PloneTool.PloneTool
●
invokeFactory(self, type_name, id, RESPONSE=None, args, *kw): type_name es el nombre del tipo de
contenido que se quiere crear. Notar que este es el id del objeto que está en la herramienta
portal_types, el cual puede no ser el mismo que aparece en la interfaz de usuario de Plone, la cual usa
el título del tipo, si está disponible. id es el identificador (short name) del nuevo objeto, el que aparecerá
en la URL. invokeFactory también acepta otros parámetros, los cuales se pasan al constructor del
objeto, se pueden usar si se conoce el constructor; uno muy común es title.
●
refreshCatalog(self, clear=0) reindexa todos los objetos que encuentra.
menttes
118. Cambiar El Estado De Un Documento A Privado
from Products.CMFCore.utils import getToolByName
urltool = getToolByName(context, 'portal_url')
portal = urltool.getPortalObject()
document = getattr(portal, 'testdoc')
rev_state = document.portal_workflow.getInfoFor(document, 'review_state', '')
print 'El estado inicial era: ' + rev_state + 'n'
if not review_state in ('rejected', 'retracted', 'private'):
document.portal_workflow.doActionFor(document, 'hide', comment='')
rev_state = document.portal_workflow.getInfoFor(document, 'review_state', '')
print 'El estado final es: ' + rev_state + 'n'
return printed
menttes
119. Cambiar El Estado De Un Documento A Privado
Ejercicio: buscar en el ZMI el portal_workflow, identificar allí plone_workflow y verificar que la acción “hide” va
de visible a private.
En este script se observa el uso de dos métodos: getInfoFor y doActionFor, veamos en más detalle cada uno
de ellos:
●
getInfoFor(self, ob, name, default=[], wf_id=None, args, *kw) es un método de la clase
CMFCore.WorkflowTool.WorkflowTool. Devuelve una propiedad específica (dada por name), relativa al
workflow para un objeto ob.
●
doActionFor(self, ob, action, wf_id=None, args, *kw) es un método de la clase
CMFCore.WorkflowTool.WorkflowTool. Ejecuta la acción de workflow dada por action para el objeto ob.
menttes
120. Usando El Catálogo De Plone
Plone provee una herramienta, el catálogo, a la cuál se le puede consultar sobre los
objetos de contenido dentro del portal.
En esta sección veremos el uso del método searchResults:
searchResults(self, REQUEST=None, **kw)
Este método está definido en CMFCore.CatalogTool.CatalogTool, hace una llamada
ZCatalog.searchResults con argumentos extra que limitan el resultado de lo que al usuario
le está permitido ver.
menttes
121. Usando El Catálogo De Plone
Los términos de búsqueda pueden ser pasados en el REQUEST o como argumentos de palabras
clave (keywords).
Una consulta de búsqueda consiste en un mapeo de nombres de índices (como aparecen en
“portal_catalog”) a parámetros de búsqueda.
Se puede pasar un diccionario a searchResults como la variable REQUEST o se pueden usar
palabras clave como argumentos para el método. Ejemplo:
searchResults(title='Uso del Catalogo', creator='Juancito')
es lo mismo que:
searchResults({'title': 'Uso del Catalogo', 'creator': 'Juancito'})
menttes