El documento describe un libro titulado "MBA del Siglo XXI" y su sitio web asociado. El libro está dirigido a personas interesadas en aprender sobre tendencias empresariales emergentes, redes sociales, emprendimiento y gestión. El contenido del libro cubre 7 áreas y 30 capítulos sobre estos temas. El sitio web complementa el libro con blogs, noticias, herramientas y recursos adicionales para los lectores.
Sustainable Times Issue 7
According to Kyocera’s latest Sustainability survey, office
workers printed 40% fewer pages last year – the first fall
since the survey began in 2007. This is impressive, but not
unexpected: indeed, it’s more surprising that this is the first time a fall has been registered.
This document discusses compound interest over the course of a 30-year mortgage. It shows the breakdown of principal, interest, and balance owed monthly and yearly. It illustrates that with a $200,000 loan at 6% interest, the total repayment would be $431,677, with $231,677 of that being interest paid. The document notes that compound interest, also called the "eighth wonder of the world," can significantly increase the total cost of loans over time if interest is allowed to compound. It emphasizes the importance of making prepayments or paying off principal early to reduce the total interest paid over the life of the loan.
El documento describe un equipo neumático para sangrar frenos de Würth. El equipo permite cambiar el líquido de frenos de forma rápida y económica, y purgar el aire del circuito de frenos mediante aspiración. El equipo se puede usar en todos los vehículos con sistemas de frenos, incluidos los de turismos, motocicletas y embragues hidráulicos. Se explica el procedimiento para usar el equipo para vaciar y purgar el aire del sistema de frenos.
The document discusses integers and operations on integers. It defines integers as the set of whole numbers and their opposites, including negative numbers. It introduces the concepts of the additive inverse and absolute value of integers. The four basic operations on integers - addition, subtraction, multiplication and division - are then explained through their properties and rules. Addition and subtraction of integers follows rules about keeping or changing signs based on the signs of the integers. Multiplication and division may result in changing the sign of the product or quotient depending on the signs of the integers.
This document is a resume for Roberto Villalobos Jiménez, a graphic designer from Costa Rica. He has experience in editorial design, branding, 3D modeling, animation, and UI/UX design. His past work includes designing characters, environments, and animations for video games. He has also worked as an art director and graphic designer for various companies. His skills include design software like Illustrator and Photoshop as well as 3D software like 3ds Max. He has created augmented reality games, educational games, and weather apps for different clients.
El documento habla sobre la renovación térmica de la envolvente de edificios mediante el aislamiento con poliuretano. Explica que la renovación del parque de viviendas existentes es crucial para alcanzar objetivos de eficiencia energética y ahorro. El poliuretano es una solución ideal para el aislamiento debido a su baja conductividad térmica, facilidad de instalación, durabilidad y capacidad de aislamiento con espesores más finos. Finalmente, detalla los diferentes tipos de poliuretano como esp
Gerakan perlawanan masyarakat terhadap negara di Rote diteliti dengan pendekatan sejarah lisan. Rote terbagi atas 19 kerajaan setelah dikuasai Belanda abad 17-19. Penelitian ini mengkaji perlawanan rakyat Rote terhadap negara dengan menggali kenangan masa lalu dari warga setempat.
El documento describe un libro titulado "MBA del Siglo XXI" y su sitio web asociado. El libro está dirigido a personas interesadas en aprender sobre tendencias empresariales emergentes, redes sociales, emprendimiento y gestión. El contenido del libro cubre 7 áreas y 30 capítulos sobre estos temas. El sitio web complementa el libro con blogs, noticias, herramientas y recursos adicionales para los lectores.
Sustainable Times Issue 7
According to Kyocera’s latest Sustainability survey, office
workers printed 40% fewer pages last year – the first fall
since the survey began in 2007. This is impressive, but not
unexpected: indeed, it’s more surprising that this is the first time a fall has been registered.
This document discusses compound interest over the course of a 30-year mortgage. It shows the breakdown of principal, interest, and balance owed monthly and yearly. It illustrates that with a $200,000 loan at 6% interest, the total repayment would be $431,677, with $231,677 of that being interest paid. The document notes that compound interest, also called the "eighth wonder of the world," can significantly increase the total cost of loans over time if interest is allowed to compound. It emphasizes the importance of making prepayments or paying off principal early to reduce the total interest paid over the life of the loan.
El documento describe un equipo neumático para sangrar frenos de Würth. El equipo permite cambiar el líquido de frenos de forma rápida y económica, y purgar el aire del circuito de frenos mediante aspiración. El equipo se puede usar en todos los vehículos con sistemas de frenos, incluidos los de turismos, motocicletas y embragues hidráulicos. Se explica el procedimiento para usar el equipo para vaciar y purgar el aire del sistema de frenos.
The document discusses integers and operations on integers. It defines integers as the set of whole numbers and their opposites, including negative numbers. It introduces the concepts of the additive inverse and absolute value of integers. The four basic operations on integers - addition, subtraction, multiplication and division - are then explained through their properties and rules. Addition and subtraction of integers follows rules about keeping or changing signs based on the signs of the integers. Multiplication and division may result in changing the sign of the product or quotient depending on the signs of the integers.
This document is a resume for Roberto Villalobos Jiménez, a graphic designer from Costa Rica. He has experience in editorial design, branding, 3D modeling, animation, and UI/UX design. His past work includes designing characters, environments, and animations for video games. He has also worked as an art director and graphic designer for various companies. His skills include design software like Illustrator and Photoshop as well as 3D software like 3ds Max. He has created augmented reality games, educational games, and weather apps for different clients.
El documento habla sobre la renovación térmica de la envolvente de edificios mediante el aislamiento con poliuretano. Explica que la renovación del parque de viviendas existentes es crucial para alcanzar objetivos de eficiencia energética y ahorro. El poliuretano es una solución ideal para el aislamiento debido a su baja conductividad térmica, facilidad de instalación, durabilidad y capacidad de aislamiento con espesores más finos. Finalmente, detalla los diferentes tipos de poliuretano como esp
Gerakan perlawanan masyarakat terhadap negara di Rote diteliti dengan pendekatan sejarah lisan. Rote terbagi atas 19 kerajaan setelah dikuasai Belanda abad 17-19. Penelitian ini mengkaji perlawanan rakyat Rote terhadap negara dengan menggali kenangan masa lalu dari warga setempat.
Questo l'ho fatto (anche) io.
Dieci settimane di tempo per sperimentare il proprio progetto d’impresa: poca teoria in aula, solo il giovedì e venerdì, e tanta pratica per strada ad incontrare clienti, partner commerciale o industriali ed anche competitor! Dal 9 ottobre al 13 dicembre 2014
El documento presenta un resumen de la novela Werther de Johann Wolfgang von Goethe. Narra la historia de Werther, un hombre que se enamora perdidamente de Carlota pero ella ya está comprometida. A causa de su amor no correspondido, Werther cae en una profunda depresión que lo lleva al suicidio.
Este documento presenta los principios fundamentales del método crítico en la historia. Explica que la crítica histórica busca distinguir entre testimonios verdaderos y falsos mediante la comparación de fuentes y la detección de contradicciones. También describe cómo la similitud entre fuentes puede usarse para validar testimonios, mientras que las diferencias o contradicciones suelen invalidar uno de los testimonios. Finalmente, señala que la aplicación precisa de estos principios requiere un análisis detallado de cada caso particular
Este documento resume los capítulos 9 y 10 del libro de Job, en los que Job cuestiona a Dios por su sufrimiento y dice que Dios lo está castigando a pesar de ser inocente. El pastor explica que Dios permite las pruebas para probar el corazón de las personas y revelar su propósito, no por diversión. Aconseja mantener la perspectiva de Dios y no perder la seguridad en Él a pesar de las dificultades.
This White Paper discusses the state-of-the-art of diagnosing PROFIBUS networks and provides
helpful hints for avoiding a communication breakdown and resulting unplanned production
downtimes
Huye Hombre, Huye Diario de un preso Fíesnuestrocanto
Xosé Tarrío González nace en1968 en La Coruña. A los once años es encerrado en un internado; pasando luego por reformatorios hasta llegar a la prisión a los 17 años, donde contrae el virus del VIH/SIDA. En la prisión se involucra con el anarquismo y la rebelión, llevando a cabo varios intentos de fuga, practicando la real solidaridad entre los presos, luchando enérgicamente contra la cárcel y los carceleros; actitudes que lo llevan a recibir numerosas torturas, humillaciones y aislamientos. En el año 2004 tiene una grave recaída por su enfermedad, y el 2 de enero de 2005 finalmente fallece víctima de la institución carcelaria y la sociedad que la sostiene.
La informática estudia métodos para procesar y transmitir información digitalmente. Se ha desarrollado rápidamente desde la segunda mitad del siglo XX con tecnologías como el circuito integrado e Internet. Al principio, la informática solo facilitaba tareas administrativas repetitivas, pero ahora converge disciplinas como las ciencias de la computación, programación, arquitectura de computadoras y redes. Microsoft Windows domina el mercado de escritorio personal con más del 90% de cuota. Mac OS X es la décima versión del sistema operativo de Apple, mientras que Linux fue
El desarrollo tecnológico de la humanidad está estrechamente ligado al contexto social, económico, político, religioso y cultural, e incluso climático, de cada sociedad.
La tecnología influye notablemente en nuestra sociedad.
Hemos conocido cuáles son los principales periodos históricos y su relación con la tecnología, así como en qué época se han desarrollado los inventos más importantes para la humanidad y cuáles han sido las consecuencias sociales de la aparición de algunos inventos.
Los alumnos/as de 4º de E.S.O. proponemos un viaje por esta línea del tiempo a través del cual descubriremos los hitos tecnológicos.
George H. Mead fue un filósofo, sociólogo y psicólogo estadounidense conocido por su teoría del yo o "self". Aunque no publicó libros en vida, sus obras póstumas incluyen Mente, yo y sociedad, donde explica que el yo emerge a través de la interacción social y el lenguaje. Propuso que los niños adoptan roles sociales al jugar, lo que les ayuda a comprender la sociedad. Su teoría influyó en el desarrollo de la ciencia social en Estados Unidos y enfatizó que la
Este documento presenta una sesión sobre el emprendimiento internacional. Los objetivos son analizar el fenómeno del rápido crecimiento internacional de pequeñas empresas recién creadas, identificar ejemplos significativos de estas empresas, definir el concepto de emprendimiento internacional y sus desarrollos teóricos y empíricos, e identificar los factores clave y características de estas empresas de crecimiento internacional precoz. La sesión cubrirá marcos conceptuales, estudios empíricos, y nuevos retos e implicaciones para la investig
Este documento describe el proceso de creación de una edición de cubos de piedra de la Gomera con imágenes serigráficas. Incluye detalles sobre el tratamiento de la piedra, la digitalización e impresión de las imágenes, los materiales de acabado y presentación de la edición.
Phehlane Semenya & Morgan (Pty) Ltd is a multi-disciplinary construction consultancy firm specializing in construction cost consulting, construction support services and property development and management services. It was established in 2014 by directors Mr. Tshepo Phehlane and Mr. Kagiso Semenya. The firm provides services including construction cost consulting, construction support services, property development and management. Phehlane Semenya & Morgan strive for excellence through continuous improvement, professionalism, ethics, and quality customer service.
How to assess the risks in your SAP systems at the push of a buttonVirtual Forge
This presentation was held by Stephen Lamy, Virtual Forge, at the Basis & SAP Administration 2015 Conference in Las Vegas, March 2015.
Stephen Lamy explained important elements of crucial testing included in a risk assessment of SAP system configurations and custom (and third-party) ABAP code. What strategies exist for identifying the types of testing to perform as well as ensuring SAP systems remain safe and secure through the building of automated processes.
Key Takeaways:
- Why automated risk assessments can benefit you in a cost-effective way
- How to ensure security and compliance without losing quality in SAP systems and applications
- How to lower the risk of vulnerabilities by implementing a code or system scanning solution to test for security, compliance and quality
The Rockwheel electric unicycle is the lightest, fastest, and most powerful self-balancing electric unicycle in the world, with a top speed of 25km/h, a climbing angle of 45 degrees, and a weight of only 8.6kg. It has a range of 30km on a single charge and fixes issues with other electric unicycles of falling over at higher speeds or lacking power.
La piedra pómez es una roca volcánica ligera con una estructura porosa y vacuolar rica en burbujas que la hacen menos densa que el agua. Se forma durante erupciones explosivas cuando la lava es expulsada violentamente y se enfría rápidamente, dejando vacuolas y canales. Es común en volcanes ácidos y se utiliza como abrasivo y en la construcción debido a su ligereza y dureza.
This document discusses setting up a low-cost and secure VPN using MikroTik SSTP over the Indonesian Internet infrastructure. It describes how SSTP uses SSL encryption to pass through firewalls and establish secure tunnels between MikroTik routers. The solution avoids expensive dedicated VPN links by using domestic Internet exchanges to connect branch offices to the head office while maintaining security with SSTP encryption and MikroTik configuration.
Growth measurements are needed to monitor athletes' maturity levels so training can be tailored to their developmental age. Early and late maturers experience advantages and disadvantages due to differences in physical development. Tracking measurements like height, sitting height, and arm length allows coaches to determine a growth velocity curve and account for windows of optimal trainability related to physical maturation.
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPChristian Guenther
Software Architecture Design Patterns für Cloud Service Entwicklungen
Domain Principles für Cloud Services und Cloud Anwendungsentwicklung
In den letzten zehn bis fünfzehn Jahren haben sich eine Reihe von Architekturparadigmen etabliert, die heute die Grundlage für Unternehmensanwendungen definieren und in vielfältigen Standards, Frameworks und Best Practices so fest verankert sind, dass man kaum noch darüber nachdenkt.
Wendet man diese Paradigmen unreflektiert auf Cloud-Anwendungen an, führt das in der Regel zu ernüchternden Resultaten. Insbesondere die für Cloud Computing wichtigen Eigenschaften Skalierbarkeit, Elastizität und Robustheit sind auf diese Weise nicht erreichbar.
Ein Umdenken ist also notwendig, um die Potenziale der Cloud freizusetzen.
Die COMLINE Cloud Computing Platform (CSP) ist die Antwort hierauf, sie ist eine moderne Plattform für Cloud-Computing und wurde als reaktives System konzipiert.
Reaktive Systeme müssen stets antwortbereit, widerstandsfähig, elastisch und nachrichtenorientiert sein. Systeme und Plattformen, die nach diesen Anforderungen entwickelt werden, erweisen sich als anpassungsfähiger, mit weniger starr gekoppelten Komponenten und in jeder Hinsicht skalierbarer. Sie sind einfacher weiterzuentwickeln und zu verändern. Sie reagieren zuverlässiger und eleganter auf Fehler und vermeiden so desaströse Ausfälle. Reaktive Systeme bereiten dem Anwender durch ihre fortwährende Antwortfreudigkeit eine interaktive und höchst befriedigende Erfahrung.
All diese Anforderungen erfüllt die COMLINE Cloud Service Plattform.
Aus Sicht der COMLINE eine PaaS (Platform as a Service) dar, auf der COMLINE Cloud-Dienste entwickelt.
Betrieben wird die CSP auf einem IaaS Modell in COMLINE-eigenen Rechenzentren in Berlin
Die Cloud-Dienste werden zu Anwendungen zusammengefasst, die von Kunden der COMLINE im Sinne eines SaaS (Software as a Service) Modells gemietet und genutzt werden können.
Sowohl die Plattform selber, als auch die Services und Anwendungen werden entlang einer Reihe von Guidelines entwickelt und betrieben. Diese Guidelines bilden die Grundlage aller Aktivitäten (von Design, über Konzeption bis hin zu Entwicklung und Betrieb) auf der CSP
Die Folien auf Slideshare zeigen die Prinzipien, Paradigmen und Design Patterns auf, nach denen wir sowohl die CSP selber betreiben, als auch die Anwendungen auf ihr entwickeln und betreiben.
Die CSP wurde massgeblich von Christian Günther konzipiert und stellt heute die DeFacto Entwicklungsplattform für COMLINE dar.
In einem DeepDive zeigen euch Lars Heinrich und Peggy Reuter den Umgang mit Expression Blend für Silverlight, Windows Phone 7 und WPF. Damit ihr am Ende des Abends auch handfestes Wissen mit nach Hause nehmt, werden die beiden mit euch einige kleine Applikationen erarbeiten. Angedacht sind für den gemeinsamen Abend: eine Formular-Applikation, ein SketchFlow Prototyp und das Designen dessen, sowie ein kleines 3D-WPF-Projekt. Im Verlauf der drei kleinen Arbeiten werdet ihr die relevanten Features von Blend und den Basis-Umgang mit Blend erlernen. Die großen Neuerungen von Blend 4, sowie eine Windows Phone App werden wir, wenn Zeit bleibt, auch noch demonstrieren. Es wird ein codefreier Abend werden, da wir uns an diesem Abend vorwiegend auf der WYSIWYG-Oberfläche bewegen werden.
Questo l'ho fatto (anche) io.
Dieci settimane di tempo per sperimentare il proprio progetto d’impresa: poca teoria in aula, solo il giovedì e venerdì, e tanta pratica per strada ad incontrare clienti, partner commerciale o industriali ed anche competitor! Dal 9 ottobre al 13 dicembre 2014
El documento presenta un resumen de la novela Werther de Johann Wolfgang von Goethe. Narra la historia de Werther, un hombre que se enamora perdidamente de Carlota pero ella ya está comprometida. A causa de su amor no correspondido, Werther cae en una profunda depresión que lo lleva al suicidio.
Este documento presenta los principios fundamentales del método crítico en la historia. Explica que la crítica histórica busca distinguir entre testimonios verdaderos y falsos mediante la comparación de fuentes y la detección de contradicciones. También describe cómo la similitud entre fuentes puede usarse para validar testimonios, mientras que las diferencias o contradicciones suelen invalidar uno de los testimonios. Finalmente, señala que la aplicación precisa de estos principios requiere un análisis detallado de cada caso particular
Este documento resume los capítulos 9 y 10 del libro de Job, en los que Job cuestiona a Dios por su sufrimiento y dice que Dios lo está castigando a pesar de ser inocente. El pastor explica que Dios permite las pruebas para probar el corazón de las personas y revelar su propósito, no por diversión. Aconseja mantener la perspectiva de Dios y no perder la seguridad en Él a pesar de las dificultades.
This White Paper discusses the state-of-the-art of diagnosing PROFIBUS networks and provides
helpful hints for avoiding a communication breakdown and resulting unplanned production
downtimes
Huye Hombre, Huye Diario de un preso Fíesnuestrocanto
Xosé Tarrío González nace en1968 en La Coruña. A los once años es encerrado en un internado; pasando luego por reformatorios hasta llegar a la prisión a los 17 años, donde contrae el virus del VIH/SIDA. En la prisión se involucra con el anarquismo y la rebelión, llevando a cabo varios intentos de fuga, practicando la real solidaridad entre los presos, luchando enérgicamente contra la cárcel y los carceleros; actitudes que lo llevan a recibir numerosas torturas, humillaciones y aislamientos. En el año 2004 tiene una grave recaída por su enfermedad, y el 2 de enero de 2005 finalmente fallece víctima de la institución carcelaria y la sociedad que la sostiene.
La informática estudia métodos para procesar y transmitir información digitalmente. Se ha desarrollado rápidamente desde la segunda mitad del siglo XX con tecnologías como el circuito integrado e Internet. Al principio, la informática solo facilitaba tareas administrativas repetitivas, pero ahora converge disciplinas como las ciencias de la computación, programación, arquitectura de computadoras y redes. Microsoft Windows domina el mercado de escritorio personal con más del 90% de cuota. Mac OS X es la décima versión del sistema operativo de Apple, mientras que Linux fue
El desarrollo tecnológico de la humanidad está estrechamente ligado al contexto social, económico, político, religioso y cultural, e incluso climático, de cada sociedad.
La tecnología influye notablemente en nuestra sociedad.
Hemos conocido cuáles son los principales periodos históricos y su relación con la tecnología, así como en qué época se han desarrollado los inventos más importantes para la humanidad y cuáles han sido las consecuencias sociales de la aparición de algunos inventos.
Los alumnos/as de 4º de E.S.O. proponemos un viaje por esta línea del tiempo a través del cual descubriremos los hitos tecnológicos.
George H. Mead fue un filósofo, sociólogo y psicólogo estadounidense conocido por su teoría del yo o "self". Aunque no publicó libros en vida, sus obras póstumas incluyen Mente, yo y sociedad, donde explica que el yo emerge a través de la interacción social y el lenguaje. Propuso que los niños adoptan roles sociales al jugar, lo que les ayuda a comprender la sociedad. Su teoría influyó en el desarrollo de la ciencia social en Estados Unidos y enfatizó que la
Este documento presenta una sesión sobre el emprendimiento internacional. Los objetivos son analizar el fenómeno del rápido crecimiento internacional de pequeñas empresas recién creadas, identificar ejemplos significativos de estas empresas, definir el concepto de emprendimiento internacional y sus desarrollos teóricos y empíricos, e identificar los factores clave y características de estas empresas de crecimiento internacional precoz. La sesión cubrirá marcos conceptuales, estudios empíricos, y nuevos retos e implicaciones para la investig
Este documento describe el proceso de creación de una edición de cubos de piedra de la Gomera con imágenes serigráficas. Incluye detalles sobre el tratamiento de la piedra, la digitalización e impresión de las imágenes, los materiales de acabado y presentación de la edición.
Phehlane Semenya & Morgan (Pty) Ltd is a multi-disciplinary construction consultancy firm specializing in construction cost consulting, construction support services and property development and management services. It was established in 2014 by directors Mr. Tshepo Phehlane and Mr. Kagiso Semenya. The firm provides services including construction cost consulting, construction support services, property development and management. Phehlane Semenya & Morgan strive for excellence through continuous improvement, professionalism, ethics, and quality customer service.
How to assess the risks in your SAP systems at the push of a buttonVirtual Forge
This presentation was held by Stephen Lamy, Virtual Forge, at the Basis & SAP Administration 2015 Conference in Las Vegas, March 2015.
Stephen Lamy explained important elements of crucial testing included in a risk assessment of SAP system configurations and custom (and third-party) ABAP code. What strategies exist for identifying the types of testing to perform as well as ensuring SAP systems remain safe and secure through the building of automated processes.
Key Takeaways:
- Why automated risk assessments can benefit you in a cost-effective way
- How to ensure security and compliance without losing quality in SAP systems and applications
- How to lower the risk of vulnerabilities by implementing a code or system scanning solution to test for security, compliance and quality
The Rockwheel electric unicycle is the lightest, fastest, and most powerful self-balancing electric unicycle in the world, with a top speed of 25km/h, a climbing angle of 45 degrees, and a weight of only 8.6kg. It has a range of 30km on a single charge and fixes issues with other electric unicycles of falling over at higher speeds or lacking power.
La piedra pómez es una roca volcánica ligera con una estructura porosa y vacuolar rica en burbujas que la hacen menos densa que el agua. Se forma durante erupciones explosivas cuando la lava es expulsada violentamente y se enfría rápidamente, dejando vacuolas y canales. Es común en volcanes ácidos y se utiliza como abrasivo y en la construcción debido a su ligereza y dureza.
This document discusses setting up a low-cost and secure VPN using MikroTik SSTP over the Indonesian Internet infrastructure. It describes how SSTP uses SSL encryption to pass through firewalls and establish secure tunnels between MikroTik routers. The solution avoids expensive dedicated VPN links by using domestic Internet exchanges to connect branch offices to the head office while maintaining security with SSTP encryption and MikroTik configuration.
Growth measurements are needed to monitor athletes' maturity levels so training can be tailored to their developmental age. Early and late maturers experience advantages and disadvantages due to differences in physical development. Tracking measurements like height, sitting height, and arm length allows coaches to determine a growth velocity curve and account for windows of optimal trainability related to physical maturation.
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPChristian Guenther
Software Architecture Design Patterns für Cloud Service Entwicklungen
Domain Principles für Cloud Services und Cloud Anwendungsentwicklung
In den letzten zehn bis fünfzehn Jahren haben sich eine Reihe von Architekturparadigmen etabliert, die heute die Grundlage für Unternehmensanwendungen definieren und in vielfältigen Standards, Frameworks und Best Practices so fest verankert sind, dass man kaum noch darüber nachdenkt.
Wendet man diese Paradigmen unreflektiert auf Cloud-Anwendungen an, führt das in der Regel zu ernüchternden Resultaten. Insbesondere die für Cloud Computing wichtigen Eigenschaften Skalierbarkeit, Elastizität und Robustheit sind auf diese Weise nicht erreichbar.
Ein Umdenken ist also notwendig, um die Potenziale der Cloud freizusetzen.
Die COMLINE Cloud Computing Platform (CSP) ist die Antwort hierauf, sie ist eine moderne Plattform für Cloud-Computing und wurde als reaktives System konzipiert.
Reaktive Systeme müssen stets antwortbereit, widerstandsfähig, elastisch und nachrichtenorientiert sein. Systeme und Plattformen, die nach diesen Anforderungen entwickelt werden, erweisen sich als anpassungsfähiger, mit weniger starr gekoppelten Komponenten und in jeder Hinsicht skalierbarer. Sie sind einfacher weiterzuentwickeln und zu verändern. Sie reagieren zuverlässiger und eleganter auf Fehler und vermeiden so desaströse Ausfälle. Reaktive Systeme bereiten dem Anwender durch ihre fortwährende Antwortfreudigkeit eine interaktive und höchst befriedigende Erfahrung.
All diese Anforderungen erfüllt die COMLINE Cloud Service Plattform.
Aus Sicht der COMLINE eine PaaS (Platform as a Service) dar, auf der COMLINE Cloud-Dienste entwickelt.
Betrieben wird die CSP auf einem IaaS Modell in COMLINE-eigenen Rechenzentren in Berlin
Die Cloud-Dienste werden zu Anwendungen zusammengefasst, die von Kunden der COMLINE im Sinne eines SaaS (Software as a Service) Modells gemietet und genutzt werden können.
Sowohl die Plattform selber, als auch die Services und Anwendungen werden entlang einer Reihe von Guidelines entwickelt und betrieben. Diese Guidelines bilden die Grundlage aller Aktivitäten (von Design, über Konzeption bis hin zu Entwicklung und Betrieb) auf der CSP
Die Folien auf Slideshare zeigen die Prinzipien, Paradigmen und Design Patterns auf, nach denen wir sowohl die CSP selber betreiben, als auch die Anwendungen auf ihr entwickeln und betreiben.
Die CSP wurde massgeblich von Christian Günther konzipiert und stellt heute die DeFacto Entwicklungsplattform für COMLINE dar.
In einem DeepDive zeigen euch Lars Heinrich und Peggy Reuter den Umgang mit Expression Blend für Silverlight, Windows Phone 7 und WPF. Damit ihr am Ende des Abends auch handfestes Wissen mit nach Hause nehmt, werden die beiden mit euch einige kleine Applikationen erarbeiten. Angedacht sind für den gemeinsamen Abend: eine Formular-Applikation, ein SketchFlow Prototyp und das Designen dessen, sowie ein kleines 3D-WPF-Projekt. Im Verlauf der drei kleinen Arbeiten werdet ihr die relevanten Features von Blend und den Basis-Umgang mit Blend erlernen. Die großen Neuerungen von Blend 4, sowie eine Windows Phone App werden wir, wenn Zeit bleibt, auch noch demonstrieren. Es wird ein codefreier Abend werden, da wir uns an diesem Abend vorwiegend auf der WYSIWYG-Oberfläche bewegen werden.
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Bernd Zuther
Immer mehr Unternehmen zerschlagen ihre Software-Systeme in kleine Microservices. Wenn das passiert, entstehen mehrere Deployment-Artefakte, was nicht nur das Deployment des Gesamtsystems komplexer macht. Um diese Komplexität beherrschen zu können und die Auslieferungsmöglichkeiten einer Software zu verbessern, ist der Einsatz von Werkzeugen zur Infrastruktur-Automatisierung unumgänglich.
Ein Blick in die Kristallkugel mit dem Ziel spannende und relevante Online-Trends für das Jahr 2001 hervorzusagen. Auf der Liste sind:
- UML
- .NET/C#
- SOAP
- P2P
- DivX ;-)
- UMTS
- RDF
- Micropayments
- XForms
- Spracherkennung/VoiceXML
Eine Sammlung von Best Practices für Applikationen mit AngularJS. Der Vortrag stellt Strukturen und Konventionen vor, mit denen sich auch umfangreiche Applikationen wartbar und erweiterbar halten lassen.
LAIK: A Library for Fault Tolerant Distribution of Global DataDai Yang
LAIK is an ongoing library for proactive and reactive fault tolerance in HPC applications. It provides index space management and load balancing for existing and new HPC applications.
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...Oliver Hader
Bei der Entwicklung von Web Applikationen führt die zunehmende Verlagerung von ursprünglich serverseitiger Logik in den Web-Browser zu neuen Herausforderungen und neuen Lösungsansätzen. Dieser Beitrag vergleicht das JavaScript Framework AngularJS mit dem noch relativ neuen Web Components Standard unter Einbeziehung des Polymer Frameworks. Zur Bewertung werden alltägliche und durchschnittliche Aufgaben aus der Web- Entwicklung betrachtet und für die beiden zu untersuchenden Projekte bewertet. Der Fokus liegt dabei auch auf Individualisierbarkeit, Verlässlichkeit und Alltagstauglichkeit für Web-Entwickler.
Angular ist die Komplettlösung für die Umsetzung von Webapplikationen im Frontend. Ein so umfassendes Werkzeug hat allerdings auch seine Schattenseiten: Die Einstiegshürde ist relativ hoch. Dieser Vortrag stellt die wichtigsten Elemente des Frameworks wie Komponenten, Direktiven und Services vor. In einem praktischen Beispiel werden die verschiedenen Elemente von Angular Schritt für Schritt zu einer kompletten Applikation zusammengefügt. Damit lernen Sie nicht nur die Elemente des Frameworks kennen, sondern gleichzeitig die wichtigsten Architekturpatterns und zahlreiche Best Practices.
1. 70 9. SCHLUSSBEMERKUNGEN
Umgebung platziert, dann erfüllen die Kontrollmöglichkeiten durch die Regeln sicher die
Erwartungen eines Benutzers. Aber, wie oben schon erwähnt, zur Planung von realen Städten
eignet sich die Strassennetzwerke nur in der ersten Entwurfsphase.
Das grösste Problem bei der Entwicklung von Regeln ist, dass auf dem Gebiet der Städtepla-
nung wenig entsprechende Modelle existieren oder aber diese nicht allgemeingültig sind.
Deshalb mussten die Modelle, die die Zusammenhänge zwischen Strasse und Umgebung
abstrahieren, zuerst entwickelt werden. Da in der Literatur natürlich keine statistische Werte für
die Parameter dieser Modelle existieren, mussten diese hergeleitet werden.
9.1.2 Gebäudegenerierung
Die Shape Grammar wurde so entworfen, dass Gebäudeformen unabhängig von der Form des
zugehörigen Grundrisses beschrieben werden können. Es existiert ein guter Mix aus einge-
schränkten (relativen) Befehlen und unabhängigen (absoluten) Befehlen. Das Vokabular der
CityEngine Shape Grammar kann in drei Klassen aufgeteilt werden: Turtle-, Grundriss- und
Geometrie-Befehle. Obwohl dieses Vokabular der Shape Grammar sehr einfach gehalten
wurde, können erstaunlich viele bestehende Gebäude mit ihr beschrieben werden. L-Systeme
wurden zur Generierung der Shape Strings benutzt, weil diese sehr flexibel sind, da nach
Belieben Module hinzugefügt oder entfernt werden können.
Der Entscheid, Geometrien im Maya Ascii Format (.ma) abzuspeichern, erwies sich als
ungünstig. Obwohl dieses Format gleich wie das .obj-Format aufgebaut ist, dauert in Maya das
Laden einer .ma-Datei viel länger als das Laden einer.obj-Datei mit dem gleichen Inhalt.
9.1.3 Implementation
Die Kombination von C++ und Tcl/Tk erwies sich als gute Lösung: Die Implementation der
CityEngine Pipeline ist einfach organisiert, das resultierende Programm läuft stabil und schnell,
und das User Interface ist übersichtlich und intuitiv. Die modulare Struktur, welche in Imple-
mentation und User Interface verwendet wird, ermöglicht eine unkomplizierte Weiterentwick-
lung des Programms.
Das User Interface könnte im Bezug auf das Editieren der Regeln verbessert werden
(beispielsweise das Positionieren eines Gitters durch die Maus) und das Arbeiten mit der City-
Engine Shape Grammar müsste graphisch besser unterstützt werden (beispielsweise mit einem
Shape Grammar Modeler). Da sich die CityEngine in der Entwicklung befindet, sind die Para-
meter nicht fest im System implementiert und auch nicht allzu benutzerfreundlich im User
Interface angeordnet.
9.2 Ausblick
9.2.1 Strassenetzwerkerzeugung
Möchte man noch andere Arten von Städten erzeugen, müssten weitere Rules gefunden werden.
Will man beispielsweise kleinere Städte oder Vororte erzeugen, müsste dem erweiterten L-
System die Residential Rule hinzugefügt werden. Diese generiert Strassennetze mit einer ver-
zweigenden Struktur (siehe Abbildung 4.2) und die Verhaltensweise gleicht dem der Wurzeln
in Kapitel 2.7.
Anstatt die Resultate mehrerer Rules durch lineare Gewichtung zu vereinigen, könnte die
dominierende Rule durch Verhaltensmodelle (Inhibition, Level-Of-Interest) aus dem “Virtual-
Reality”-Bereich Action Selection bestimmt werden [2].
2. 9.2 AUSBLICK 71
Methoden der Verkehrsplanung und -analyse wie Transportsimulation könnten im L-System
bzw. in den Rules implementiert werden. Auf diese Weise könnten realistischere Strassen-
netzwerke erzeugt werden.
9.2.2 Gebäudegenerierung
Neben den schon erwähnten möglichen Erweiterungen der Shape Grammar (eine Extrusion mit
mehr Parametern), könnte der Shape Grammar eine neue Klasse von Befehlen hinzugefügt wer-
den: die Material-Befehle. Der Interpreter wüsste immer, ob es sich nun um eine Fassade, ein
Dach, einen Eingang oder eine Antenne handelt.
Um die Gebäude realistischer und besser kontrolliert zu generieren, könnte ein umgebungs-
sensitives L-System benutzt werden. Die dreidimensionale Umgebung beinhaltet beispiels-
weise Baugesetze wie das New Yorker Zoning Law, welches ab einer gewissen Höhe eine
gewisse Verjüngung der Gebäude verlangt (in [8]).
Eine total andere Methode der Generierung von Strings wäre folgende: Man definiere einen
String eines Gebäudes dessen Stil gefällt. Da die Shape Strings eine verzweigende Struktur
haben, könnte der String, der Genotyp, nun mutiert werden [28].
Da die Gebäudegeometrien mit Shape Grammar Elementen zusammengesetzt wurde, eignet
sich die Geometrie auch zur Darstellung in verschiedenen Level of Details. Abbildung 9.1 zeigt
verschiedene ‘Level of Detail’-Auflösungsstufen eines Gebäudes.
Abbildung 9.1: Level of Detail: Links die simpelste Darstellung (Bounding Box) für
Gebäude in weiter Entfernung zur Kamera. Nach rechts nimmt die
Komplexität der Geometrie zu, bzw. der Abstand zur Kamera ab.
Sehr schwierig zu rendern sind verglaste Fassaden, die nicht verspiegelt sind (z.B. Abend-
dämmerung und in den Büros sind die Lichter an), da man das Interieur des Gebäudes erkennen
kann. Benutzt man frontal aufgenommene Fotos als Texturen, fehlt die Tiefenwirkung. Deshalb
könnte ein Shader implementiert werden, der wie in Abbildung 9.2 frontale Interieuraufnahmen
zweidimensional verzerrt, indem der Mittelpunkt im Texturraum verschoben wird.
Abbildung 9.2: Warping Facades. Die Textur (linkes Bild) dieses ebenen Polygons
wurde durch Verschieben des Mittelpunkt verzerrt.
3. 72 9. SCHLUSSBEMERKUNGEN
9.3 Danksagungen
Ich möchte mich bei folgenden Personen bedanken: Mein Betreuer Yoav ‘Yogi’ Parish, der
immer an mich geglaubt hat und mir stets freundschaftlich mit Rat und Tat zur Seite stand; Pro-
fessor Markus Gross, dass ich die Diplomarbeit in seinem Institut durchführen durfte; meiner
Praktikumsfirma Eyetronics, dass ich mir dort das programmiertechnische Knowhow aneignen
konnte um ein gesamtes Framework aufzustellen; Daniel Von Büren für seine Tcl/Tk Tipps;
und Hanspeter Brunner und Christian Iten für die Mithilfe am Siggraph-Paper.
4. AImplementation
A.1 Programm-Design
Nachdem der Aufbau der Pipeline festgelegt war, wurde ein der Pipeline entsprechendes mod-
ulares Programmkonzept gewählt. Es entstanden fünf Module namens Base, LSystem, Streets,
Allotments und UI (siehe Abbildung A.1).
Abbildung A.1: Das Programmdesign der CityEngine.
Die ersten vier Module sind hauptsächlich in C++ programmiert und jedes bildet eine
Library. Im UI-Modul, das hauptsächlich in Tcl/Tk programmiert ist, befindet sich unter
anderem der Source-Code (Main.c++) für das Executable der CityEngine. Diese Routine ist ver-
antwortlich für die Kommunikation zwischen C++ und Tcl, welche über Wrapper vonstatten
geht und folgendermassen funktioniert: Jedes Modul hat eine Klasse namens Wrapper.c++, in
der die Wrapper definiert sind. Als Wrapper kann man eine Routine bezeichnen, die zwar in C++
definiert wurde, aber auch von Tcl aufgerufen werden kann. In Main.c++ wird nun ein Tcl/Tk
Interpreter gestartet, sämtliche Wrapper-Aufrufe beim neuen Interpreter registriert und Main.tcl
gestartet. Letzteres kontrolliert den Aufbau von dem User-Interface. Sind die Wrapper-Aufrufe
erst einmal registriert, können sie in Tcl wie jeder andere Tcl-Befehl verwendet werden
Die Organisation der Entwicklungsumgebung (im Ordner dev/) ist in Abbildung A.2 darges-
tellt. In diesem Ordner befindet sich die Datei Makefile, welche die Makefiles der einzelnen
Module aufruft (Kommandos: make all, make allclean, make base etc.) und ein Makefile-Tem-
plate das von den Makefiles der Module importiert wird. Im Ordner bin/ befindet sich das Exe-
cutable. Die Libraries der Module Base, LSystem, Streets und Allotments sind in lib/ zu finden.
73
5. 74 A. IMPLEMENTATION
Die beispielsweise vom Base-Modul erzeugten .o-Files werden in obj/base/ abgespeichert.
Jedes Modul hat eine eigene Verzeichnisstruktur, indem sich wiederum ein Makefile befindet.
In diesen Makefiles werden nur Variablen bestimmt und anschliessend wird Makefile_template
aufgerufen, das die Kompilierung und das Linken ausführt.
Abbildung A.2: Die Verzeichnisstruktur der Entwicklungsumgebung.
Die folgenden Abschnitte beschreiben kurz die wichtigsten Eigenschaften der verschiedenen
Module. Details zur Implementation findet man im dokumentierten Sourcecode.
A.2 Das Modul Base
Das Modul Base enthält Tools und Datenstrukturen, die jedes Modul benutzt: Die Graphen-
klasse, die Parameterverwaltung und das Image-Handling. Jedes der anderen Module linkt diese
diese Library (libbase.a) dazu.
Die Klasse Graph bestitzt Methoden zum Lesen und Speichern des Graphen (siehe B.3),
sowie Einfüge- und Löschoperationen für Punkte und Kanten. Für Kanten existiert eine Inter-
section-Abfrage und für Punkte ist eine Nearest-Neighbour-Abfrage implementiert. Die Punkte
und Kanten werden in Listen verwaltet, wobei die Liste der Kanten ungeordnet und die Liste
der Punkte nach x-Koordinate sortiert ist (d.h. Reduktion vom zweidimensionalen Raum in den
eindimensionalen Raum). Zusätzlich zur Punkteliste wird ein Bucketarray verwaltet. Ein
Bucket zeigt auf den ersten Punkt in dem entsprechenden Bereich (falls ein Punkt vorhanden
ist). Beispiel: Man sucht den Punkt mit Koordinate (5634,3012). Bei einer Bucketlänge von
beispielsweise 200 muss nun die Punkteliste ab dem Eintrag in Bucket[28] sequentiell durch-
sucht werden. Die Bucket-Methode ist in jeder Hinsicht ideal, da Punkte sowohl schnell
eingefügt, wie auch schnell gesucht werden können. Vor allem Range-Queries können gleich
schnell wie die einfache Suche durchgeführt werden, was nur bei sehr komplexen räumlichen
Datenstrukturen wie MX-Quadtrees oder Bit-Interleaving möglich wäre [17]. Da Kanten auf
ihre beiden Endpunkte zeigen und Punkte wiederum auf ihre Kanten, können auch Kanten über
die Punktdatenstruktur gesucht werden.
Die Klasse Parameter liest und speichert ein Parameterfile (siehe B.1), stellt Methoden zum
Abfragen und Ändern der Parameter zur Verfügung und liefert Tcl entsprechende Wrapper. In
C++ wie auch in Tcl können die Parameter mit dem Parameternamen, der im Parameterfile
angegeben ist, abgefragt werden. In Tcl sind die Parameter in einem eigenen Namespace
abgespeichert. Will ein Modul nun seine Parameter im User-Interface anzeigen, baut eine Rou-
tine im Parameter-Namespace das entsprechende Widget auf. Verändert man einen Eintrag,
6. A.3 DAS MODUL LSYSTEM 75
werden Events aufgerufen, die wiederum die entsprechenden Wrapper aufrufen, welche dafür
sorgen, dass die Parameterwerte in C++ und Tcl konsistent sind.
Die abstrakte Klasse Heightfield dient zum Lesen von 2D-Daten jeglicher Art. Die Klasse
ist abstrakt, da vor allem Digital Elevation Maps in diversen Formaten existieren. Bisher
können jedoch nur TIFF-Bilder gelesen werden. Von diesem Typ existieren im Modul Base
mehrere globale Variablen wie gPopulationDensityHF oder gElevationHF (diese werden in
jedem Modul immer wieder benötigt). Das Pendant in Tcl/Tk ist der Namespace ImageViewer,
welcher verantwortlich für das Anzeigen der Bilder im User-Interface ist (vollständig in Tk).
Da Tk keine TIFF-Bilder lesen kann, wurde das Img-Package von Jan Nijtmans benutzt.
A.3 Das Modul LSystem
Das Modul LSystem ist verantwortlich für die Strassennetzwerkgenerierung. Es beinhaltet den
Parser samt Wachstumsregeln und Diffusionssystem. Den Klassen dieses Moduls werden
Lookuptables für trigonometrische Funktionen zur Verfügung gestellt, da effizienter Code hier
sehr wichtig ist.
Die Klasse LSystem beinhaltet den Parser für das L-System, welcher die Wachstumsregeln
aufruft und, falls mehrere Wachstumsregeln aktiv sind, die Vorschläge in einem vereinigt
(Blending). Anschliessend wird der Environmentcheck (durch Klasse Environment) aus-
geführt. Danach wird die (eventuell) resultierende Strasse im Graphen eingefügt und im Diffu-
sionssystem findet ein Update statt. Die Ersetzungsregeln im L-System sind fest implementiert,
d.h. es können keine neuen Ersetzungsregeln eingebaut werden wie im L-System, das die
Gebäude erzeugt. Dies ist auch nicht nötig, da das Wachstumsverhalten komplett mit den
Wachstumsregeln kontrolliert werden kann.
Die abstrakte Klasse GrowingRule dient als Basisklasse für jede Wachstumsregel. Momen-
tan sind vier Wachstumsregeln implementiert. Diese Klasse stellt einerseits den abgeleiteten
Klassen relevante globale Parameter auf lokaler Basis zur Verfügung (schneller als über
Parameter-Klasse) und stellt andererseits sicher, dass neue Wachstumsregeln kompatibel sind.
Eine Wachstumsregel muss zwei Funktionen implementieren: road(…) und highway(…). Die
beiden Funktionen erhalten als Übergabewerte den aktuellen Turtlestatus und die letzte
eingefügte Strasse (Street resp. Highway). Dann erfolgt das eigentliche Wachstum, was in max-
imal 3 neuen Strassen resultiert. Die Klasse GrowingRule besitzt nun 3 Highway- und 3 Street-
Branches als Member. In diesen (public) Members werden die neuen Strassen abgespeichert
und können bis zum nächsten Aufruf von road(…) resp. highway(…) gelesen werden. Weiter
hat jede Wachstumsregel eine Parameter-Klasse und eine Heightfield-Klasse als Member.
In der Klasse Cells ist das Diffusionssystem implementiert. Das Diffusionssystem stellt
Funktionen für das Abfragen (benutzt von Wachstumsregeln) und Absaugen (benutzt vom
Parser) von Zellen zur Verfügung, wobei diese Funktionen auf der Finiten-Differenzen-
Methode basieren. Wenn Highways die Richtung der grössten Population suchen, tritt die radi-
ale Abfragefunktion in Kraft. Diese wurde sehr effizient programmiert, indem im Konstruktor
der Klasse angegeben werden kann, wieviele Strahlen zur Berechnung benutzt werden sollen,
und wie lang diese sein sollen. Noch im Konstruktor werden nun sämtliche Indexoffsets der
Zellen mitsamt den Gewichten (je weiter weg, desto kleiner) berechnet. Wird die Funktion nun
aufgerufen, findet bloss noch eine kleine Anzahl Multiplikationen und Additionen statt. Als
Resultat liefert diese Funktion ein Array von Floats, welche eine 360°-Sicht repräsentieren (die
Werte zwischen den Strahlen werden linear interpoliert). Zusätzlich können TIFF-Bilder
abgespeichert werden, welche den Zustand der Zellen visualisieren.
7. 76 A. IMPLEMENTATION
Die Klasse LSystemGraph ist eine Subklasse der Klasse Graph aus dem Modul Base und
besteht nur aus einer Funktionendefinition. Diese Funktion namens insertModuleInGraph(…)
(‘Module’ in L-System-Terminologie) stellt die Kommunikation zwischen L-System und
Graph dar. Sie wird aufgerufen sobald das L-System ein Strasse definitiv einfügen will. Danach
teilt der Graph (via Insertion-Module) dem L-System mit, ob das Einfügen erfolgreich war. Das
Zeichnen des Graphen führt ein Wrapper (in LSystemWrapper.c++) aus. Dazu wurde die X-Lib
benutzt, welche Linien schneller als Tk zeichnet.
Der einzige Tcl-Code in diesem Modul ist der Namespace RuleParameter. Dieser ist eine
leicht abgeänderte Version des Namespaces Parameter aus dem Modul Base. Letzterer konnte
nur ein Parameterfile verwalten, während RuleParameter mehrere Parametersets kontrollieren
kann (pro Wachstumsregel ein Ruleparameterfile).
A.4 Das Modul Streets
Das Modul Streets ist das kleinste Modul. Da dieses Modul für die Funktionalität des Strassen-
editors verantwortlich ist, besteht es bloss aus Wrapper-Definitionen und der Klasse
StreetGraph, welche eine Subklasse von Graph aus dem Modul Base ist. Die Klasse Street-
Graph erweitert die Graphenklasse um zwei Funktionen: smoothGraph(…) (siehe 4.4) und
saveAATIFF(…), welche den Graphen als TIFF-Bild abspeichert. Die Kanten der gezeichneten
Strassen werden dabei geglättet. Die Wrapper sind verantwortlich für Funktionsaufrufe wie
selectEdge(…), moveVertex(…), deleteEdge(…) oder drawGraph(…). Das Zeichnen des
Graphen erfolgt auf ähnliche Weise wie im Module LSystem, nur sind hier mehrere Darstellung-
sarten möglich und Selektion wird unterstützt.
A.5 Das Modul Allotments
Das Modul Allotments ist verantwortlich für die Konvertierung des Graphen in Polygone
(Blocks), deren Subdivision in kleinere Polygone (Grundstücke) und das Erzeugen und Ver-
walten von Gebäudegeometrie. Allen Klassen in diesem Modul stehen Polygon-Datenstruk-
turen (mit Funktionen) zur Verfügung. Die Punkte aller Polygone sind stets im
Gegenuhrzeigersinn angeordnet.
Die Klasse AllotmentGraph ist eine Subklasse der Graphenklasse aus dem Modul Base und
extrahiert aus dem Graphen die der Suchtiefe entsprechenden Polygone. D.h. alle Zyklen im
Graphen, die keinen anderen, kürzeren Zyklus enthalten, sind gesucht. Dazu wurde folgender
Algorithmus verwendet: In jedem Knoten des Graphen wird nacheinander eine rekursive Suche
nach Zyklen begrenzter Länge (Suchtiefe) durchgeführt. War die Suche erfolgreich, d.h. der
letzte Knoten entspricht wieder dem Ausgangsknoten, indem die Suche gestartet wurde, muss
der gefundene Zyklus überprüft werden:
• Wurde bereits ein kürzerer oder gleich langer Zyklus gefunden, der Teil des neuen Zyk-
lus ist, ist der neue Zyklus überflüssig und kann verworfen werden.
• Ist der neue Zyklus Teil eines bereits gefundenen längeren Zyklus, kann der alte Zyklus
verworfen werden.
• Befindet sich innerhalb des Zyklus ein Knoten, kann dieser verworfen werden.
Die Klasse PolygonContainer besteht aus einer Polygonliste und Funktionen zum Lesen und
Schreiben von Polygonfiles (siehe B.4 und B.5). Weiter werden in dieser Klasse auch MEL-
Dateien erzeugt (siehe B.8). Die Funktion cutEdges() verkleinert die Polygone, indem an jeder
Kante die halbe Strassenbreite subtrahiert wird. Konkave Polygone werden durch diesen Proz-
ess in konvexe Polygone verwandelt. Dies vereinfacht das Exportieren von Geometrie in 3D-
8. A.6 DAS MODUL UI 77
Programme (diese haben oft Mühe mit konkaven Polygonen). Das Subdividieren der Polygone
wird wie in 5.1 beschrieben durchgeführt. Ist die Subdivision beendet und ein Grundstück
gefunden, werden dessen sämtliche Eigenschaften bestimmt. D.h. alle Attribute eines Gebäudes
wie Grundfläche, Höhe, Alter oder Funktion sind ab diesem Zeitpunkt festgelegt. Nur dem
Shapestring-Attribut ist noch kein String zugeordnet. Das Pythonscript LSystemControl.py
ruft nun für jedes Gebäude das L-System auf, das entsprechende Shapestrings generiert und
diese in einzelnen Dateien abspeichert. Mit Hilfe des Wrapperaufrufs attachStringToPoly-
gon(…) werden diese Files eingelesen und in den Polygonen als Shapestring-Attribut abgespe-
ichert. Ebenfalls in AllotmentsWrapper.c++ befindet sich ein Wrapper, der die Polygone im
User-Interface zeichnet. Auch hier wurde wieder die X-lib benutzt.
In der Klasse Geometry befindet sich der Parser, der die Shapestrings der Polygone interpre-
tiert. Die daraus resultierende Geometrie wird in Objekten mit je einer Liste für Vertices, Tex-
tures, Edges und Faces verwaltet. Der Zweck dieser Listen ist, dass die Geometrie in ein
bekanntes 3D-Format exportiert werden kann, weshalb auch die Beziehung zwischen den
Komponenten mit Indexeinträgen abgebildet werden (zur Beschreibung eines Meshes listen die
meisten Formate zuerst die Vertices auf und anschliessend werden deren Indexe weiterverwen-
det um Faces etc. zu definieren). Die Funktion exportGeometryToMaya(…) schreibt die Geom-
etrie im Maya Ascii Format in eine Datei (siehe B.9).
A.6 Das Modul UI
Bis auf das oben erwähnte Main.c++ ist das Modul UI vollständig in Tcl/Tk programmiert.
Main.tcl importiert zuerst das Img-Package und das BWidgets-Package. Letzteres stellt ver-
besserte Widgets zur Verfügung, ist aber komplett in Tcl/Tk programmiert. Anschliessend
werden globale Variablen wie Modulnamen definiert und das User Interface mit den Menuein-
trägen wird aufgebaut. Das User Interface selbst wurde ebenfalls modular entworfen, d.h. belie-
big viele Module können dem User-Interface hinzugefügt werden. Entscheidend ist die Liste
der Modulnamen. Jedem darin aufgeführten Modul wird ein Widget zur freien Verfügung bereit
gestellt.
Die drei Module LSystem, Streets und Allotments benötigen im Gegensatz zum Modul Base
ein User Interface. Die Definitionen dessen findet man in den Dateien LSystemUI.tcl, Street-
sUI.tcl und AllotmentsUI.tcl in diesem Modul. Jeder Namespace muss eine Prozedur namens
CreateMainFrame besitzen, die den Aufbau des von Main.tcl zur Verfügung gestellten Widgets
übernimmt. Jedes Modul kann Teile des Widgets dem ImageViewer zur Verfügung stellen.
Falls das Modul dann eine eigene Zeichenroutine benützen will, kann es diese beim ImageV-
iewer registrieren (drawStreetGraphWrapper ist beispielsweise die Zeichenroutine vom Modul
Streets). Die Gestaltung der Widgets der Module kann sich unterscheiden: Das L-System-
Modul hat beispielsweise einen multifunktionalen Timeslider, der im Allotments-Modul nicht
vorkommt.
Der Namespace FileTransfer ist verantwortlich für das Laden und Speichern sämtlicher
Daten. Je nach Dateityp führt er die entsprechenden Operationen aus. Wird ein Parameterfile
geladen, werden zuerst die Parameter in C++ gelesen, dann Tcl übergeben, welches darauf die
offenen Parameterfenster neu zeichnet. Anschliessend werden die in Tcl/Tk mit dem ImageV-
iewer-Namespace und in C++ mit der Heightfield-Klasse die Bilder geladen . Danach werden
die Ruleparameterfiles gelesen und wiederum ausgewertet (in Tcl/Tk Regel-Kontrollbild laden
und in C++ Instanz einer GrowingRule erzeugen). Die anderen Dateitransferoperationen bes-
chränken sich meist auf einen Wrapper-Aufruf und ein ImageViewer-Update.
10. BDateitypen
B.1 Parameterfile (.par)
Eine Parameterdatei beinhaltet alle Daten eines CityEngine-Projektes, wie UI-Einstellungen,
Dateipfade zu den entsprechenden Bildern, Dateipfade zu den Parameterdateien der L-System
Regeln (siehe nächsten Abschnitt) und Parameter jeglicher Art. Im Unterschied zu den anderen
Dateitypen beinhaltet eine Parameterdatei nicht nur die Werte der Parameter sondern auch
deren Definition und UI-Informationen. Das Format einer Zeile (entspricht einer Parameter-
definition) sieht folgendermassen aus, wobei in Klammern immer der Typ des jeweiligen Ein-
trags angegeben ist (B für Boolean, I für Integer, F für Float, C für Char und S für String):
Typ(C) Name(S) Wert(Typ) Standardwert(Typ) UI-Info(C)
Der erste Eintrag einer Zeile definiert den Typ des Parameters (B, I, F oder S). Das Zeichen ‘_’
im Parameternamen wird zur Anzeige im User Interface mit einem Leerzeichen ersetzt. Der
letzte Eintrag einer Zeile kontrolliert den Ort der Anzeige im User Interface: P für das Fenster
mit den Einstellungen; L, S oder A für den Parameterteil des jeweiligen Moduls oder H um den
Parameter nicht anzuzeigen (angewendet bei On/Off-Buttons, die über Menüs wesentlich
besser zu kontrollieren sind). Die Reihenfolge der Darstellung der Parameter im jeweiligen
Fenster entspricht der Reihenfolge ihrer Definition in der Parameterdatei. Ein Ausrufezeichen
zu Beginn der Zeile nach der letzten Parameterdefinition markiert das Ende der Datei.
B.2 Ruleparameterfile (.rp)
Die Parameterdatei einer Regel für das Strassennetzwerk generierende L-System hat dasselbe
Format wie eine Parameterdatei. Der Unterschied liegt einzig im Inhalt: Wie der Name schon
verrät, beinhaltet sie sämtliche Parameter zur individuellen Steuerung einer L-System-Regel.
Der Typ der Regel (Western, Grid, Radial, Topological) wird durch den Prefix im Dateinamen
bestimmt (zum Beispiel: Western.version2.rp). Die UI-Information wird hier nicht verwendet.
B.3 Graphfile (.gra)
Eine Graphendatei beschreibt ein (generiertes) Strassennetzwerk samt Strasseninformationen.
Eine Datei sieht folgendermassen aus:
79
11. 80 B. DATEITYPEN
#VERTICES: nbrOfVertices(I)
valence(I) x(F) y(F)
…
#EDGES: nbrOfEdges(I)
index1(I) index2(I) creationStep(I) nbrOfTracks(I) streetType(S)
…
Die Kopfzeile beschreibt die Anzahl der Punkte (respektive Kreuzungen) und auf den darauf
folgenden nbrOfVertices Zeilen sind die Daten der Punkte aufgelistet. Der Eintrag valence
beschreibt die Anzahl der sich in diesem Punkt treffenden Kanten (entspricht Strassen). Danach
folgt die Definition der Kanten (Anzahl: nbrOfEdges). Die ersten beiden Indexeinträge ver-
weisen auf die beiden Endpunkte der Kante und die letzten drei Einträge repräsentieren die
Attribute einer Strasse: creationStep beschreibt den Zeitpunkt der Generierung durch das
L-System, nbrOfTracks die Anzahl Spuren und streetType den Typ der Strasse (H für Highway,
S für Street und falls die Strasse eine Brücke ist: BH respektive BS).
B.4 Blockfile (.p)
Dieser Dateityp wird verwendet, um Blockdaten (Polygone) abzuspeichern und zu lesen. Eine
Datei dieses Typs beinhaltet die eigentliche Definition der Polygone und für jede Kante die
Strassenattribute (siehe Graphfile). Jede Zeile beschreibt ein Polygon und eine Null am Anfang
der letzten Zeile markiert das Ende der Datei. Das Format einer Zeile sieht folgendermassen
aus:
valence x1 y1 … xvalence yvalence streetAttr1 … streetAttrvalence
B.5 Lotfile (.p+)
Dieser Dateityp wird verwendet um Gebäudegrundstücke (Polygone) abzuspeichern und zu
lesen. Auch das gebäudegenerierende L-System liest diese Polygondatei um die Shapestrings
zu generieren. Die ersten Einträge einer Zeile sind dieselben wie im Blockfile und die restlichen
Einträge sind Parameter für das auf diesem Grundstück zu bauende Gebäude. Eine Null am
Anfang der letzten Zeile markiert das Ende der Datei. Eine Zeile hat folgende Einträge:
valence,x1,y1,…,xvalence ,yvalence ,streetAttr1,…,streetAttrvalence ,
elevation(F),height(F),length(F),width(F),shapeType(C),
creationStep(I),zoneID(I),blockID(I),houseID(I),
buildingType(C),objectID(I),age(I),floorHeight(F),windowWidth(F)
Der Eintrag elevation entspricht der Höhe über Meer (minimale Y-Koordinate aller Punkte), die
nächsten drei Einträge stellen die Bounding Box dar und shapeType den Typ des Polygons (R
für Rechtecke und I für alle anderen Formen). Die weiteren Attribute und ihre Bedeutung:
• creationStep: maximaler creationStep aller Kanten von dem Polygon.
• zoneID: Identifikationsnummer der rechteckigen Zone, in der sich das Polygon befindet.
• blockID: Identifikationsnummer des Blockes, in dem sich das Polygon befindet.
• houseID: eindeutige Hausnummer.
• buildingType: R für Residential, C für Commercial und I für Industrial (dieser Wert wird
für das Gebäude-L-System und die prozeduralen Shader benötigt).
• objectID: Identifikationsnummer für das Geometrieobjekt, zu dem dieses Gebäude hin-
zugefügt werden soll (werden prozedurale Shader verwendet, so ist diese Identifikations-
nummer irrelevant, da nur je ein Objekt erzeugt wird).
12. B.6 BUILDINGRULEFILE (.LSYS) 81
• age: Erbauungsjahr des Gebäudes.
• floorHeight: Stockwerkhöhe (für L-System und nicht-prozeduralen Shader);
• windowWidth: Fensterabschnittsbreite (für L-System und nicht-prozeduralen Shader).
B.6 Buildingrulefile (.lsys)
Die Regelwerke für das L-System, das die CityEngine Shape Grammar Strings erzeugt, werden
in diesem Dateityp verfasst. Da dieser auf XML basiert und sich streng an die L-System-Syntax
hält, ist dessen Anwendung leicht nachvollziehbar und bedarf keiner weiteren Erklärung.
B.7 Shapestringfile (.str)
Diese Dateien werden vom Gebäudegenerierenden L-System erzeugt und jede Datei beinhaltet
einen CityEngine Shape Grammar String, der die Form eines Gebäudes beschreibt. Der Datein-
ame beinhaltet die eindeutige Gebäudenummer (houseID), wodurch jedem Gebäude die
entsprechende Shapestringdatei zugeordnet werden kann. Die Shape Grammar ist in Kapitel 6
beschrieben.
B.8 MEL Code (.mel)
Dieser einfache MEL (Maya Embedded Language) Code ist vor allem zu Testzwecken
geeignet, um Polygone in Maya zu betrachten. Der Code liest Polygone (MEL-Befehl: create-
Facet) jeglicher Art (Blocks und Lots) und anschliessend werden diese Polygone extrudiert
(MEL-Befehl: extrude), wobei keine Texturinformationen hinzugefügt werden.
B.9 Maya Ascii (.ma)
Maya Szenen können als Binary oder Ascii Files abgespeichert werden. Letztere bestehen aus
einem reduzierten Set von MEL-Kommandos, mit denen Geometrie direkt in Maya eingelesen
werden kann (ähnlich wie zum Beispiel das .obj Format). Die CityEngine kann drei Arten von
Maya Ascii Dateien schreiben:
1. Untexturierte Extrusionen: Der Unterschied zum erzeugten MEL-Code ist, dass
dieses Format wesentlich schneller in Maya eingelesen ist und nur ein Objekt erzeugt,
was viele Transform-Nodes erspart und die resultiernde Maya-Szene um einiges
schneller macht.
2. Gebäude für prozedurale Shader: Es wird pro Shader (Residential, Commercial und
Industrial) ein Objekt generiert. Jedem Face werden Attribute wie Gebäudenummer,
Alter oder Fassadengrösse zugeordnet, welche von den prozeduralen Shadern gelesen
werden können. Die Texturkoordinaten der Faces können in Maya normalisiert wer-
den.
3. Gebäude für nicht-prozedurale Shader: Für jeden Gebäudetyp (objectID) existieren
zwei Shader: ein Fassadenshader und ein Dachshader. Es wird also pro Fassaden-
Shader ein Objekt und pro Dachshader ein Objekt generiert. Fassadenshader sind fol-
gendermassen aufgebaut: Ein Fensterabschnitt mit Höhe floorHeight und Breite win-
dowWidth entspricht im Texturraum U von 0 bis 1 und V von 0 bis 1. In Maya
bedeutet dies nun nicht, dass alle Fenster gleich aussehen müssen, denn es gibt die
Möglichkeit Shader über mehrere Fensterabschnitte zu definieren (Coverage-Para-
meter von 2DTexturePlacement). Die Texturkoordinaten der Dachobjekte können in
Maya normalisiert werden.
14. CReferenzen
[1] C. Alexander, S. Ishikawa, M. Silverstein, M. Jacobson, I. Fiksdahl-King and S. Angel.
A Pattern Language. Oxford University Press, New York, 1977.
[2] B. M. Blumberg and T. A. Galyean. Multi-Level Direction of Autonomous Creatures for
Real-Time Virtual Environments. In SIGGRAPH Conference Proceedings, pages 47-54,
August 1995.
[3] E. Catmull and J. Clark. Recursively generated B-spline surfaces on arbitrary topological
meshes. Computer Aided Design, 10(6):350-355, 1978.
[4] D. Davis, W. Ribarsky, T.Y. Jiang, N. Faust and S. Ho. Real-Time Visualization of scal-
ably large collections of heterogeneous objects. IEEE Visualization ‘99, pp. 437-440,
October 1999.
[5] X. Decoret, G. Schauffler, F. Sillion and J. Dorsey. Multi-layered impostors for acceler-
ated rendering. Eurographics 18(3), 1999.
[6] O. Deussen, P. Hanrahan, B. Lintermann, R. Mêch, M. Pharr and P. Prusinkiewicz. Real-
istic modeling and rendering of plant ecosystems. In SIGGRAPH 98 Conference Proceed-
ings, pages 275-286, August 1998.
[7] K. Dietrich, M. Rotach, E. Boppart. Strassenprojektierung. Zurich 1993.
[8] H. Ferris. The Metropolis of Tomorrow. I.Washburn, New York, 1929.
[9] C. Focas (ed.) The Four World Cities Transport Study. London Research Centre, The Sta-
tionery Office, London 1998.
[10] K. Fuesser. Stadt, Strasse & Verkehr (City, Roads and Traffic), Vieweg Verlag, 1997.
[11] T. Fujii, K. Imamura, T. Yasuda, S. Yokoi and J. Torikawi. A virtual scene simulation
system for city planning. Computer Graphics International, 1995.
[12] D. Zorin, P. Schröder. Subdivision for Modeling and Animation. Siggraph Course Notes,
ACM SIGGRAPH, Course 36, 1998.
[13] O. Henricsson, A. Streilein and A. Gruen. Automated 3-D reconstruction of buildings and
visualization of city models. Bonn. Oct. 1996.
83
15. 84 C. REFERENZEN
[14] B. Hillier. Space is the Machine: A Configurational Theory of Architecture. Cambridge
University Press, Cambridge, UK, 1997.
[15] B. Hillier, A. Penn, J. Hanson, Grajewski and J. Xu. Natural Movement: or, Configura-
tion and Attraction in Urban Pedestrian Movement. Environment and Planning B, Vol.
20, pp. 29-66, 1993.
[16] A.B. Jacobs. Great Streets.The MIT Press, Cambridge Massachusetts. 1993.
[17] H. Samet. The Design and Analysis of Spatial Data Structure. Addison-Wesley, Reading,
MA, 1990.
[18] R. Mêch and P. Prusinkiewicz. Visual models of plants interacting with their environ-
ment. In SIGGRAPH 96 Conference Proceedings, pages 397-410, August 1996.
[19] V. Meier. Realistic Visualization of Abdominal Organs and its Application in Laparo-
scopic Surgery Simulation. Disseration, ETH Zurich, 1999.
[20] W.J. Mitchell. Computer-Aided Architectural Design. Van Nostrand Reinhold, New
York, 1977.
[21] F.K. Musgrave, C.E. Kolb and R.S. Mace. The Synthesis and Rendering of Eroded Fractal
Terrains, In SIGGRAPH 89 Proceedings, pp. 41-50, July 1990.
[22] Peponis J., Zimring C. and Choi Y. K. Finding the Building in Wayfinding. In Environ-
ment and Behavior, Vol. 22, pp. 555-590., 1990.
[23] K. Perlin. An Image Synthesizer. Computer Graphics (SIGGRAPH 85 Proceedings),
19(3): 287-296, 1985.
[24] P. Prusinkiewicz and A. Lindenmayer. The algorithmic beauty of plants, Springer, 1990.
[25] P. Prusinkiewicz, M. James and R. Mêch. Synthetic Topiary. In SIGGRAPH 94 Confer-
ence Proceedings, pages 351-358, July 1994.
[26] W.T.Reeves and R.Blau. Approximate and probabilistic algorithms for shading and ren-
dering structured particle systems. Computer Graphics (SIGGRAPH 85 Proceedings),
19(3): 313-322, 1985.
[27] S. M. Rubin and T. Whitted. A 3-dimensional representation for fast rendering of complex
scenes. Computer Graphics 14(3), pages 110-116, 1980.
[28] K. Sims. Evolving Virtual Creatures. Computer Graphics (SIGGRAPH 94 Proceedings),
1994.
[29] G. Stiny. Pictorial and Formal Aspects of Shapes and Shape Grammars. Birkhauser,
Basel, Switzerland, 1975.
[30] M. Wegener. Operational Urban Models: State of the Art. In Dortmunder Beitrage zur
Raumplanung No. 84, University of Dortmund, 1998.
[31] G. Schmitt. Architectura et Machina. Vieweg Verlag, Wiesbaden, 1993.
[32] R. Woodbury. Layouts, Solids, Grammar Interpreters and Fire Stations. In: CAAD
Futures ‘93, Pittsburgh, 1993.
[33] I. Sutherland. Sketchpad, A Man-Machine Graphical Communication System. In: Pro-
ceedings 1963 Spring Joint Computer Conference AFIPS, Vol. 23, 1963.
18. scales. Roads are the transportation medium for the urban popu- • Geographical Maps
lation distributed over the area. L-systems have been used in a - Elevation maps
similar application [20], support branching very well and have - Land/water/vegetation maps
the advantage of database amplification [30]; this suggests their • Sociostatistical maps
potential use to generate convincing large-scale road patterns. - Population density
We have adapted the model of L-systems to enable the creation - Zone maps (residential, commercial or mixed zones)
of large cities, based on the data that has been collected in [11] - Street patterns (control behavior of streets)
on four huge cities around the world, i.e. New York, Paris, Tokyo - Height maps (maximal house height)
and London.
Control of the various parameters within the particular tools can
Although we simplified the underlying model of the virtual city, be changed by the user interactively or by providing parameter
the main design goal for the system is easy extensibility. We files. For example, statistical measures such as the approximate
want to be able to add new subsystems, such as different trans- area size of a block or the average number of intersections per
portation networks (underground, train) and alternative land square mile, such as in [18] can be used to change the resulting
uses. To achieve this, we extended the L-system with a higher- street map. In figure 2 the top pictures are examples of a geo-
level mechanism that makes the addition of new rules very easy. graphical image showing land-water boundaries and another
1.3 Overview image depicting the distribution of the population over the area.
In Chapter 2 we describe the concept and the pipeline of the
CityEngine system, and the methods used therein. In Chapter
3 the idea of extended L-systems, which allow the implementa-
tion of global goals and local constraints is introduced. We dem-
onstrate the use of this extended concept on the creation of the
roadmap. Chapter 4 gives a brief overview of the generation of
allotments and buildings and explains our proposed mechanism
to simplify the texturing of facades. Finally, the results we
achieved are shown and discussed in Chapter 5.
2 SYSTEM ARCHITECTURE
The CityEngine system consists of several different tools
which form the pipeline that is shown in figure 1. In a first step,
the input data is fed to the road-generation system, using an
extended L-system described in 3.4. The areas between the roads
are then subdivided to define the allotments the buildings are Figure 2: Left column: Water, elevation and population density
placed on. In a third step, by applying another L-system, the maps of an imaginary virtual city of 20 miles diameter. Right:
buildings are generated as a string representation of boolean One possible roadmap generated from this input data.
operations on simple solid shapes. Finally, a parser interprets all
the results for the visualization software. The visualization soft- Two different L-systems are invoked for the creation of the com-
ware should be able to process polygonal geometry and texture plete city, one for street, the other for building generation. The
maps. This is the case for practically any 3D renderer. Addition- population density of a city is influenced by the creation of
ally, most scanline renderers support procedural textures, so the streets. Through streets, people are transported by the system to
proposed mechanism to generate facades of buildings can be the next highway [12]. We reflect this by using an approach sim-
incorporated into the pipeline. ilar to the Open L-system model [20] when creating streets. The
L-system mechanism has been modified in such a way that vari-
Geographical
ous different road patterns can be visualized using the same pro-
Sociostatistical duction rules.
Image Maps
According to [12], not all roads change the population density of
Roadmap creation their immediate local surroundings, e.g. roads connecting two
Extended L-System cities. We therefore chose to consider two types of roads: high-
Roadmap
Division into lots
Graph ways and streets. They differ in their purpose and behavior:
Subdivision Highways connect areas with highly concentrated population
Allotments
Polygons Facade elements globally, by scanning the population density input map for
Building generation Image Maps peaks. Streets cover the areas between highways according to
L-System Buildings local population density, giving all neighborhoods transportation
Strings Texture Engine
Geometry Grid creation access to the nearest highway. Together, these two classes form
Parser Geometry Shaders the road map of the virtual city.
Polygons Procedural Once the road map is generated, the land is divided into smaller
Renderer areas surrounded by streets. These areas can be geometrically
subdivided to define the allotments for the individual buildings.
Output
Images The buildings themselves are generated by a stochastic, paramet-
ric L-system. In our system the buildings are composed by
Figure 1: The pipeline of the city creation tool. The dark boxes extruding and transforming an arbitrary outline.
list the results and data structures of the indiviual tools in the For the final visualization in the renderer facade textures are gen-
white rectangles. erated using a semi-procedural approach. Every facade is tiled
Most of the input data to build up the virtual city is represented into superimposed and nested grid structures. The grid cells
by 2D image maps which control the behavior of the system. resulting from this subdivision can then be assigned textures or
Those images can be easily generated either by drawing them or procedural textures.
by scanning from statistical and geographical maps, as found in
[11]. The data can be categorized into two general classes:
302