This document provides an overview of OCL syntax for navigating objects and collections. It discusses how to access attributes of an object using "self.attribute" and navigate to the opposite end of an association using role names. It provides examples of navigating from a Company context to retrieve employees and from a Person context to retrieve their employer. It also discusses OCL types like PrimitiveType, CollectionType, and operations available on collections like select, reject, collect, iterate, and examples of using these operations.
Guava Overview. Part 1 @ Bucharest JUG #1 Andrei Savu
Guava is a Java library developed by Google that includes common libraries such as collections, caching, primitives support, concurrency libraries, and generalized utility classes. The talk covered the basic utilities in Guava including using and avoiding null, preconditions, common object utilities, ordering, and primitive array utilities. It also discussed the collections in Guava including immutable collections, new collection types like multisets and multimaps, collection utilities, and ways to extend the collections framework with decorators.
This document discusses property-based testing using ScalaCheck. It introduces ScalaCheck as a tool for checking properties on random datasets generated by generators. Properties are logical statements that functions must satisfy, expressed using quantifiers and assertions. Generators are used to generate random test data, and built-in generators as well as custom generators are described. The document provides examples of using generators to test properties and discusses features like collecting generated values, classifying results, and stateful testing. Advantages and limitations of property-based testing are also summarized.
ScalaDays 2013 Keynote Speech by Martin OderskyTypesafe
Scala gives you awesome expressive power, but how to make best use of it? In my talk I will discuss the question what makes good Scala style. We will start with syntax and continue with how to name things, how to mix objects and functions, where (and where not) to use mutable state, and when to use which design pattern. As most questions of style, the discussion will be quite subjective, and some of it might be controversial. I am looking forward to discuss these topics with the conference attendees.
The document discusses stacks and queues as fundamental data structures. It covers stack and queue operations like push, pop, enqueue, and dequeue. It presents implementations of stacks and queues using both arrays and linked lists. It discusses dynamic resizing of arrays to allow for efficient pushing and popping. The document also covers using generics to create parameterized data structures like Stack<Item> that avoid casting. Several applications of stacks are described, including evaluating arithmetic expressions using a two-stack algorithm and modeling function calls in a compiler using a run-time stack.
The document discusses Scala and why some developers think it could replace Java on the JVM. It provides quotes from several influential developers, including the creator of Java and Groovy, expressing their view that Scala is the best candidate to replace Java in the long run. Specifically, James Gosling says that if he had to pick another language on the JVM besides Java, it would be Scala. Charlie Nutter describes Scala as the current heir apparent to the Java throne and the momentum behind Scala is now unquestionable. James Strachan says that if he had seen the Programming in Scala book in 2003, he may have never created Groovy and that his tip for a long term replacement for Java is
Scala: Object-Oriented Meets Functional, by Iulian Dragos3Pillar Global
A presentation from Iulian Dragos of Typesafe that gives an overview of the Scala programming language. The presentation was given at a Functional Angle conference in Timisoara, Romania sponsored by 3Pillar. Iulian Dragos has been working on Scala since 2004. He currently works for Typesafe, a start-up that was co-founded by Scala’s creator, Martin Odersky.
This document describes stacks and queues data structures and their application programming interfaces (APIs). It defines the common operations for stacks and queues, including push, pop, enqueue, and dequeue. It provides examples of using stacks and queues to evaluate postfix expressions and read input from a queue. Stacks and queues are widely used in applications like browsers, interpreters, and printing. The document also covers generics, autoboxing/unboxing, and real-world examples of stacks in programming languages and PostScript.
Guava Overview. Part 1 @ Bucharest JUG #1 Andrei Savu
Guava is a Java library developed by Google that includes common libraries such as collections, caching, primitives support, concurrency libraries, and generalized utility classes. The talk covered the basic utilities in Guava including using and avoiding null, preconditions, common object utilities, ordering, and primitive array utilities. It also discussed the collections in Guava including immutable collections, new collection types like multisets and multimaps, collection utilities, and ways to extend the collections framework with decorators.
This document discusses property-based testing using ScalaCheck. It introduces ScalaCheck as a tool for checking properties on random datasets generated by generators. Properties are logical statements that functions must satisfy, expressed using quantifiers and assertions. Generators are used to generate random test data, and built-in generators as well as custom generators are described. The document provides examples of using generators to test properties and discusses features like collecting generated values, classifying results, and stateful testing. Advantages and limitations of property-based testing are also summarized.
ScalaDays 2013 Keynote Speech by Martin OderskyTypesafe
Scala gives you awesome expressive power, but how to make best use of it? In my talk I will discuss the question what makes good Scala style. We will start with syntax and continue with how to name things, how to mix objects and functions, where (and where not) to use mutable state, and when to use which design pattern. As most questions of style, the discussion will be quite subjective, and some of it might be controversial. I am looking forward to discuss these topics with the conference attendees.
The document discusses stacks and queues as fundamental data structures. It covers stack and queue operations like push, pop, enqueue, and dequeue. It presents implementations of stacks and queues using both arrays and linked lists. It discusses dynamic resizing of arrays to allow for efficient pushing and popping. The document also covers using generics to create parameterized data structures like Stack<Item> that avoid casting. Several applications of stacks are described, including evaluating arithmetic expressions using a two-stack algorithm and modeling function calls in a compiler using a run-time stack.
The document discusses Scala and why some developers think it could replace Java on the JVM. It provides quotes from several influential developers, including the creator of Java and Groovy, expressing their view that Scala is the best candidate to replace Java in the long run. Specifically, James Gosling says that if he had to pick another language on the JVM besides Java, it would be Scala. Charlie Nutter describes Scala as the current heir apparent to the Java throne and the momentum behind Scala is now unquestionable. James Strachan says that if he had seen the Programming in Scala book in 2003, he may have never created Groovy and that his tip for a long term replacement for Java is
Scala: Object-Oriented Meets Functional, by Iulian Dragos3Pillar Global
A presentation from Iulian Dragos of Typesafe that gives an overview of the Scala programming language. The presentation was given at a Functional Angle conference in Timisoara, Romania sponsored by 3Pillar. Iulian Dragos has been working on Scala since 2004. He currently works for Typesafe, a start-up that was co-founded by Scala’s creator, Martin Odersky.
This document describes stacks and queues data structures and their application programming interfaces (APIs). It defines the common operations for stacks and queues, including push, pop, enqueue, and dequeue. It provides examples of using stacks and queues to evaluate postfix expressions and read input from a queue. Stacks and queues are widely used in applications like browsers, interpreters, and printing. The document also covers generics, autoboxing/unboxing, and real-world examples of stacks in programming languages and PostScript.
This document discusses core concepts in Smalltalk including conditionals, loops, collections, common object behavior, and copying objects. It covers boolean logic and conditional expressions, the collection hierarchy with 80+ classes including Array, OrderedCollection, Dictionary, and Set. Common methods for collections like do:, select:, collect: are also summarized, as well as printing, reading, copying and notifying objects in the programming environment.
The document discusses various collection types in Java including arrays, iterators, and common collection interfaces like Collection, Set, List, and Map. It describes the key characteristics of arrays, iterators, and common implementations of collection interfaces like ArrayList, LinkedList, HashSet, and TreeMap. The interfaces define common operations while classes implement the interfaces, providing different performance characteristics depending on the underlying data structure used.
Collections in Java include arrays, iterators, and interfaces like Collection, Set, List, and Map. Arrays have advantages like type checking and known size but are fixed. Collections generalize arrays, allowing resizable and heterogeneous groups through interfaces implemented by classes like ArrayList, LinkedList, HashSet and HashMap. Common operations include adding, removing, and iterating over elements.
Collections in Java include arrays, iterators, and interfaces like Collection, Set, List, and Map. Arrays have advantages like type checking and known size but are fixed. Collections generalize arrays, allowing resizable and heterogeneous groups through interfaces implemented by classes like ArrayList, LinkedList, HashSet and HashMap. Common operations include adding, removing, and iterating over elements.
02._Object-Oriented_Programming_Concepts.pptYonas D. Ebren
This document discusses object-oriented programming concepts and provides an example of analyzing a software development process using object-oriented principles. It describes a typical 5-step software development process of analysis, design, implementation, testing, and maintenance. It then introduces object-oriented programming concepts like modeling a problem as a set of collaborating objects and components. As an example, it analyzes the classic game Tetris in terms of its objects like pieces and boards, their properties and capabilities.
UML OCL : An Expression Language - Core -- 29megaplanet20
Introduction to the Object Constraint Language (OCL) of UML.
Here we just present this language as an expression language with the different operators and this independently from UML.
This document discusses stacks and queues as abstract data types (ADTs). It defines stacks as last-in, first-out (LIFO) collections where elements are added and removed from the top. Queues are first-in, first-out (FIFO) collections where elements are added to the back and removed from the front. Examples of using stacks and queues in computer science are provided. The key operations for each - push, pop for stacks and add, remove for queues - are also summarized.
While Google is adding Kotlin as an official Android language, we're also expanding our research on this language. It’s developed by JetBrains, and the fact that these are the people behind a suite of IDEs, such as IntelliJ and ReSharper, really shines through in Kotlin. It’s pragmatic and concise and makes coding a satisfying and efficient experience.
Although Kotlin compiles to both JavaScript and soon machine code, I’ll focus on its prime environment, the JVM.
Please see my presentation to learn more!
Slides from Scala workshop held at Schibsted Tech Polska office in Krakow October 2017. Covers topics like basic language features, expressions, methods, functions, collections, pattern matching, laziness, implicits, DSLs and more.
Introduction to web programming for java and c# programmers by @drpicoxDavid Rodenas
(better presented by @drpicox)
Slides of an introductory course for web programming focusing in basic Javascript and CSS concepts. It assumes knowledge of programming, Java or C#.
.Net Collection Classes Deep Dive - Rocksolid Tour 2013Gary Short
This document discusses various collection classes in .NET and their performance characteristics. It provides examples and recommendations for choosing the right collection class based on usage needs. List is generally good but can be slow for many additions due to capacity growth requiring copying. LinkedList is better for fast insertion/removal but slower for lookups. Dictionary enables fast lookups but only allows a single value per key. Lookup supports multiple values per key. Concurrent collections provide thread-safety for multi-threaded applications. The document demonstrates examples and provides best practices for optimizing performance with different collection classes.
This document summarizes Kotlin lambda basics and advanced topics:
1. Lambdas allow defining anonymous functions that can be passed as parameters or returned as values. They simplify code by removing the need for anonymous classes.
2. The Kotlin standard library provides many higher-order functions that operate on collections using lambdas, such as filter, map, reduce, and more.
3. Advanced lambda topics include higher-order functions, using lambdas with Java interfaces, closure, and applying lambdas in design patterns like the strategy pattern.
Arrays allow storing and accessing multiple data elements using numeric indices. Arrays can be one-dimensional or multidimensional. One-dimensional arrays are linear arrays while multidimensional arrays include jagged arrays where each sub-array can have a different length. Arrays are declared using keywords like Dim and can be reinitialized using ReDim which resizes the array. Control structures like If/Then, Do/Loop, and For/Next are used to control program flow.
The document discusses linear regression and maximum likelihood estimation in EViews. It provides an overview of the linear regression model and ordinary least squares (OLS) estimation. It then discusses how to perform OLS regression and test linear restrictions in EViews. Finally, it introduces maximum likelihood estimation and how it provides an alternative framework for estimation when the data is assumed to follow a particular probability distribution.
C# is an object-oriented programming language derived from C, C++ and Java. The document discusses various C# concepts including control structures like decision statements (if, if-else, switch) and iteration statements (for, foreach, while, do-while loops). It also covers arrays, generics, and namespaces. Generics provide type safety and flexibility by separating the logic from data type. Namespaces help organize code and avoid class name clashes.
Watch video (in Hebrew): http://parleys.com/play/53f7a9cce4b06208c7b7ca1e
Type classes are a fundamental feature of Scala, which allows you to layer new functionality on top of existing types externally, i.e. without modifying or recompiling existing code. When combined with implicits, this is a truly remarkable tool that enables many of the advanced features offered by the Scala library ecosystem. In this talk we'll go back to basics: how type classes are defined and encoded, and cover several prominent use cases.
A talk given at the Underscore meetup on 19 August, 2014.
DotNet Programming & Practices discusses various best practices for .NET development including:
1. Using proper naming conventions like PascalCasing for classes and methods and camelCasing for variables.
2. Properly documenting code with XML comments and avoiding inline comments. Only using regions for private fields, nested classes, and interface implementations.
3. Methods should perform a single task, not combine multiple jobs, and generally not exceed 25 lines. This increases maintainability.
4. Properties should be used over methods when the work is expensive or represents a conversion, and methods should be used when the result changes or causes side effects beyond the property.
Ruby is a dynamically typed, object-oriented scripting language that is interpreted. It was created by Yukihiro Matsumoto in 1995 and influenced by Smalltalk, Perl, Lisp and Python. Some key features of Ruby include being garbage collected, supporting inheritance and mixins, and being suitable for meta-programming. It gained popularity through frameworks like Ruby on Rails. The core data types in Ruby are implemented as objects and include integers, floats, strings, arrays, hashes, symbols, booleans and nil. Classes and modules provide namespaces and support object-oriented programming principles like inheritance. Ruby supports functional programming patterns through blocks, procs and lambdas.
This document discusses stacks and queues as data structures. It begins by introducing stacks and their LIFO (last-in, first-out) operation. Common applications of stacks are then described, such as function calls, calculators, mazes, and undo functions. Static and dynamic stack implementations using arrays and linked lists are covered. The document then introduces queues and their FIFO (first-in, first-out) operation. Example applications of queues like print jobs and round robin scheduling are provided. Finally, the operations and implementations of queues are discussed at a high level.
Front end fundamentals session 1: javascript coreWeb Zhao
This document provides an overview of JavaScript fundamentals presented in a session on JavaScript core concepts. It defines what JavaScript is, demonstrates basic syntax and data types including numbers, strings, Booleans, objects and arrays. It also covers control structures, functions, scope, and built-in objects like Date. The document contains examples and links to interactive demos of JavaScript concepts.
The document provides best practices for developing code generators using Acceleo. It covers topics such as naming conventions, project architecture, writing good modules, using Java services, and testing generators. Specific recommendations include using camel case for names, organizing packages by functionality, preferring polymorphism over long if/else chains, wrapping Java services in queries, and having a single entry point for generations. The best practices aim to help developers structure Acceleo projects effectively and avoid common issues.
Este documento presenta una guía sobre CSS. Explica tres formas de escribir código CSS: dentro del archivo HTML, en un archivo CSS externo o dentro de una etiqueta HTML. Luego describe conceptos como selectores, IDs, clases y cómo usar propiedades CSS como color, tipografía, tamaño de fuente, alineación de texto y estilos de lista y borde. El objetivo es enseñar los fundamentos de CSS para dar estilo a páginas web.
This document discusses core concepts in Smalltalk including conditionals, loops, collections, common object behavior, and copying objects. It covers boolean logic and conditional expressions, the collection hierarchy with 80+ classes including Array, OrderedCollection, Dictionary, and Set. Common methods for collections like do:, select:, collect: are also summarized, as well as printing, reading, copying and notifying objects in the programming environment.
The document discusses various collection types in Java including arrays, iterators, and common collection interfaces like Collection, Set, List, and Map. It describes the key characteristics of arrays, iterators, and common implementations of collection interfaces like ArrayList, LinkedList, HashSet, and TreeMap. The interfaces define common operations while classes implement the interfaces, providing different performance characteristics depending on the underlying data structure used.
Collections in Java include arrays, iterators, and interfaces like Collection, Set, List, and Map. Arrays have advantages like type checking and known size but are fixed. Collections generalize arrays, allowing resizable and heterogeneous groups through interfaces implemented by classes like ArrayList, LinkedList, HashSet and HashMap. Common operations include adding, removing, and iterating over elements.
Collections in Java include arrays, iterators, and interfaces like Collection, Set, List, and Map. Arrays have advantages like type checking and known size but are fixed. Collections generalize arrays, allowing resizable and heterogeneous groups through interfaces implemented by classes like ArrayList, LinkedList, HashSet and HashMap. Common operations include adding, removing, and iterating over elements.
02._Object-Oriented_Programming_Concepts.pptYonas D. Ebren
This document discusses object-oriented programming concepts and provides an example of analyzing a software development process using object-oriented principles. It describes a typical 5-step software development process of analysis, design, implementation, testing, and maintenance. It then introduces object-oriented programming concepts like modeling a problem as a set of collaborating objects and components. As an example, it analyzes the classic game Tetris in terms of its objects like pieces and boards, their properties and capabilities.
UML OCL : An Expression Language - Core -- 29megaplanet20
Introduction to the Object Constraint Language (OCL) of UML.
Here we just present this language as an expression language with the different operators and this independently from UML.
This document discusses stacks and queues as abstract data types (ADTs). It defines stacks as last-in, first-out (LIFO) collections where elements are added and removed from the top. Queues are first-in, first-out (FIFO) collections where elements are added to the back and removed from the front. Examples of using stacks and queues in computer science are provided. The key operations for each - push, pop for stacks and add, remove for queues - are also summarized.
While Google is adding Kotlin as an official Android language, we're also expanding our research on this language. It’s developed by JetBrains, and the fact that these are the people behind a suite of IDEs, such as IntelliJ and ReSharper, really shines through in Kotlin. It’s pragmatic and concise and makes coding a satisfying and efficient experience.
Although Kotlin compiles to both JavaScript and soon machine code, I’ll focus on its prime environment, the JVM.
Please see my presentation to learn more!
Slides from Scala workshop held at Schibsted Tech Polska office in Krakow October 2017. Covers topics like basic language features, expressions, methods, functions, collections, pattern matching, laziness, implicits, DSLs and more.
Introduction to web programming for java and c# programmers by @drpicoxDavid Rodenas
(better presented by @drpicox)
Slides of an introductory course for web programming focusing in basic Javascript and CSS concepts. It assumes knowledge of programming, Java or C#.
.Net Collection Classes Deep Dive - Rocksolid Tour 2013Gary Short
This document discusses various collection classes in .NET and their performance characteristics. It provides examples and recommendations for choosing the right collection class based on usage needs. List is generally good but can be slow for many additions due to capacity growth requiring copying. LinkedList is better for fast insertion/removal but slower for lookups. Dictionary enables fast lookups but only allows a single value per key. Lookup supports multiple values per key. Concurrent collections provide thread-safety for multi-threaded applications. The document demonstrates examples and provides best practices for optimizing performance with different collection classes.
This document summarizes Kotlin lambda basics and advanced topics:
1. Lambdas allow defining anonymous functions that can be passed as parameters or returned as values. They simplify code by removing the need for anonymous classes.
2. The Kotlin standard library provides many higher-order functions that operate on collections using lambdas, such as filter, map, reduce, and more.
3. Advanced lambda topics include higher-order functions, using lambdas with Java interfaces, closure, and applying lambdas in design patterns like the strategy pattern.
Arrays allow storing and accessing multiple data elements using numeric indices. Arrays can be one-dimensional or multidimensional. One-dimensional arrays are linear arrays while multidimensional arrays include jagged arrays where each sub-array can have a different length. Arrays are declared using keywords like Dim and can be reinitialized using ReDim which resizes the array. Control structures like If/Then, Do/Loop, and For/Next are used to control program flow.
The document discusses linear regression and maximum likelihood estimation in EViews. It provides an overview of the linear regression model and ordinary least squares (OLS) estimation. It then discusses how to perform OLS regression and test linear restrictions in EViews. Finally, it introduces maximum likelihood estimation and how it provides an alternative framework for estimation when the data is assumed to follow a particular probability distribution.
C# is an object-oriented programming language derived from C, C++ and Java. The document discusses various C# concepts including control structures like decision statements (if, if-else, switch) and iteration statements (for, foreach, while, do-while loops). It also covers arrays, generics, and namespaces. Generics provide type safety and flexibility by separating the logic from data type. Namespaces help organize code and avoid class name clashes.
Watch video (in Hebrew): http://parleys.com/play/53f7a9cce4b06208c7b7ca1e
Type classes are a fundamental feature of Scala, which allows you to layer new functionality on top of existing types externally, i.e. without modifying or recompiling existing code. When combined with implicits, this is a truly remarkable tool that enables many of the advanced features offered by the Scala library ecosystem. In this talk we'll go back to basics: how type classes are defined and encoded, and cover several prominent use cases.
A talk given at the Underscore meetup on 19 August, 2014.
DotNet Programming & Practices discusses various best practices for .NET development including:
1. Using proper naming conventions like PascalCasing for classes and methods and camelCasing for variables.
2. Properly documenting code with XML comments and avoiding inline comments. Only using regions for private fields, nested classes, and interface implementations.
3. Methods should perform a single task, not combine multiple jobs, and generally not exceed 25 lines. This increases maintainability.
4. Properties should be used over methods when the work is expensive or represents a conversion, and methods should be used when the result changes or causes side effects beyond the property.
Ruby is a dynamically typed, object-oriented scripting language that is interpreted. It was created by Yukihiro Matsumoto in 1995 and influenced by Smalltalk, Perl, Lisp and Python. Some key features of Ruby include being garbage collected, supporting inheritance and mixins, and being suitable for meta-programming. It gained popularity through frameworks like Ruby on Rails. The core data types in Ruby are implemented as objects and include integers, floats, strings, arrays, hashes, symbols, booleans and nil. Classes and modules provide namespaces and support object-oriented programming principles like inheritance. Ruby supports functional programming patterns through blocks, procs and lambdas.
This document discusses stacks and queues as data structures. It begins by introducing stacks and their LIFO (last-in, first-out) operation. Common applications of stacks are then described, such as function calls, calculators, mazes, and undo functions. Static and dynamic stack implementations using arrays and linked lists are covered. The document then introduces queues and their FIFO (first-in, first-out) operation. Example applications of queues like print jobs and round robin scheduling are provided. Finally, the operations and implementations of queues are discussed at a high level.
Front end fundamentals session 1: javascript coreWeb Zhao
This document provides an overview of JavaScript fundamentals presented in a session on JavaScript core concepts. It defines what JavaScript is, demonstrates basic syntax and data types including numbers, strings, Booleans, objects and arrays. It also covers control structures, functions, scope, and built-in objects like Date. The document contains examples and links to interactive demos of JavaScript concepts.
The document provides best practices for developing code generators using Acceleo. It covers topics such as naming conventions, project architecture, writing good modules, using Java services, and testing generators. Specific recommendations include using camel case for names, organizing packages by functionality, preferring polymorphism over long if/else chains, wrapping Java services in queries, and having a single entry point for generations. The best practices aim to help developers structure Acceleo projects effectively and avoid common issues.
Este documento presenta una guía sobre CSS. Explica tres formas de escribir código CSS: dentro del archivo HTML, en un archivo CSS externo o dentro de una etiqueta HTML. Luego describe conceptos como selectores, IDs, clases y cómo usar propiedades CSS como color, tipografía, tamaño de fuente, alineación de texto y estilos de lista y borde. El objetivo es enseñar los fundamentos de CSS para dar estilo a páginas web.
Este diagrama muestra las relaciones entre países, provincias, ciudades y continentes. Indica que los países contienen provincias y ciudades, las provincias limitan con otros países y provincias y contienen ciudades, y las ciudades están dentro de provincias.
Esta figura describe las propiedades básicas de varias formas geométricas comunes como triángulos, elipses, cuadrilateros, rectángulos, cuadrados y círculos. También incluye polígonos más generales y define los conceptos fundamentales de puntos y lados que comparten todas las figuras.
El documento presenta una discusión sobre el concepto de administración. Define administración desde la perspectiva de varios autores y destaca que involucra procesos como la planeación, organización, ejecución y control para lograr los objetivos de una organización de manera eficiente a través del uso de personas y recursos. Explica que la administración es importante para optimizar recursos, maximizar la productividad, eficiencia y calidad, y mejorar la competitividad de una organización.
Este documento resume los conceptos clave sobre la administración y los roles de los gerentes. Explica que los gerentes coordinan y supervisan el trabajo de los empleados para lograr los objetivos de la organización, mientras que los empleados realizan tareas directas sin supervisar a otros. Además, describe las funciones de los gerentes según Fayol y los roles interpersonales, informativos y decisorios de los gerentes según Mintzberg, así como las habilidades gerenciales clave según Katz.
La planeación es el proceso de establecer objetivos y estrategias para lograrlos en el futuro. Incluye definir una misión, visión, objetivos, metas, estrategias, políticas, programas, procedimientos y presupuestos. Requiere tomar decisiones sobre cursos de acción futuros. La planeación da sentido de dirección, facilita el control y reduce la incertidumbre. Existen planes estratégicos, operacionales, por alcance, horizonte temporal, especificidad y frecuencia de uso.
This document discusses proper sentence structure when writing research papers in English. It explains that sentences can have smaller clauses or "boxes" within the overall structure. Two examples are provided to illustrate sentences with one or two subjects. The first has a single clause with the structure of subject + verb + predicate. The second contains a second, smaller subject + verb + predicate clause within the main predicate. Proper referents are emphasized to clearly link clauses without ambiguity.
Poultry interventions have the potential to improve livelihoods for poor women in developing nations. Poultry production provides an entry point for accumulating social and financial capital. This can help women and their families escape the "deprivation trap" of multidimensional poverty. Improved poultry production also enhances family nutrition by providing micronutrients through consumption of meat, eggs, and liver. A research project in Tanzania and Zambia aims to reduce childhood undernutrition by analyzing opportunities to strengthen household nutrition through more efficient integration of poultry and crop production.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
“An Outlook of the Ongoing and Future Relationship between Blockchain Technologies and Process-aware Information Systems.” Invited talk at the joint workshop on Blockchain for Information Systems (BC4IS) and Blockchain for Trusted Data Sharing (B4TDS), co-located with with the 36th International Conference on Advanced Information Systems Engineering (CAiSE), 3 June 2024, Limassol, Cyprus.
1. LANGUAGE SYNTAX: NAVIGATION
• Context instance
– context Person
• Accessing attributes
– self.age
• Association ends
– Navigate to the opposite association end using role names
self.employer – Return value is of type Company
– Navigation often results into a set of objects – Example
context Company
self.employees – Return value is of type Set (Person)
Person
age : int
Company
employees employer
* 1
What does c.employees.employer return?
2. EXAMPLE 1: NAVIGATION (1)
• self.persons {Person p1, Person p2}
• self.persons.name {jack, lisa}
• self.persons.age {30, 22}
Person
name: String
age: int
parent
children
1
0..*
p1:Person
name = „jack“
age = 30
Administration
2
*
persons
p2:Person
name = „lisa“
age = 22
v:Administration
context Administration:
3. EXAMPLE 1: NAVIGATION (2)
• self.persons.children {p3, p4,p3, p4} // returned as
flattened bag
• self.persons.children.parent {p1, p2,p1, p2, ...}
• self.persons.car.type {“audi“}
Person
name: String
age: int
parent
children
1
0..*
p1:Person
name = „jack“
age = 30
Administration
2
*
persons
p2:Person
name = „lisa“
age = 22
v:Administration
context Administration:
p3:Person
name = „mick“
age = 1
p4:Person
name = „paul“
age = 2
Car
type: String
*
1
a1:Car
type=„audi“
Kinder:
Eltern:
8. OPERATIONS FOR OCLANY
Operation Explanation of result
=(obj2:OclAny):Boolean True, if obj2 and obj reference the same object
oclIsTypeOf(type:OclType):Boolean
oclIsKindOf(type:OclType):
Boolean
oclAsType(type:Ocltype):
Type
The result is obj of type type, or undefined, if the current
type of obj is not type or a direct or indirect subtype of it
(casting).
• OclAny - Supertype of all primitive types
• Operations are inherited by all other types.
• Operations ofOclAny (extract)
• Receiving object is denoted by obj
9. OPERATIONS FOR OCLANY
• oclIsKindOf vs. oclIsTypeOf
9
Person
Student Professor
context Person
self.oclIsKindOf(Person) : true
self.oclIsTypeOf(Person) : true
self.oclIsKindOf(Student) : false
self.oclIsTypeOf(Student) : false
context Student
self.oclIsKindOf(Person) : true
self.oclIsTypeOf(Person) : false
self.oclIsKindOf(Student) : true
self.oclIsTypeOf(Student) : true
self.oclIsKindOf(Professor) : false
self.oclIsTypeOf(Professor) : false
Can you guess the difference?
10. OCLVOID
• OCLVoid includes the null value (and therefore all supertypes of
OCLVoid)
• Examples
null:OCLVoid
ada.discount=null : Boolean
branch42.address=null : Boolean
1/0=null : Boolean
(1/0).oclIsUndefined=true : Boolean
42.oclIsUndefined=false : Boolean
Set{’800-275-2273’,’800-694-7466’,null} : Set(String)
12. OPERATIONS FOR COLLECTIONS
Operation Explanation of result
size():Integer Number of elements in coll
includes(obj:OclAny):Boolean True, if obj exists in coll
isEmpty:Boolean True, if coll contains no elements
sum:T
Sum of all elements in coll
Elements have to be of type Integer or Real
• Collection is an abstract supertype for all set types
• Specification of the mutual operations
• Set, Bag, Sequence, OrderedSet inherit these operations
• Caution: Operations with a return value of a set-valued type create a new collection (no side effects)
• Syntax: v -> op(…) – Example: {1, 2, 3} -> size()
13. OPERATIONEN FOR SET/BAG
Operation Explanation of result
union(set2:Set(T)):Set(T) Union of set and set2
intersection(set2:Set(T)):Set(T) Intersection of set and set2
difference(set2:Set(T)):Set() Difference set; elements of set, which do not consist in set2
symmetricDifference(set2:Set(T)):
Set(T)
Set of all elements, which are either in set or in set2, but do
not exist in both sets at the same time
• Set and Bag define additional operations
• Generally based on theory of set concepts
• Operations of Set (extract)
• Receiving object is denoted by set
Operations of Bag (extract)
Operation Explanation of result
union(bag2:Bag(T)):Bag(T) Union of bag and bag2
intersection(bag2:Bag(T)): Bag(T) Intersection of bag and bag2
A∩B
B
A
AB BA
14. OPERATIONS FOR
ORDEREDSET/SEQUENCE
Operation Explanation of result
first:T First element of orderedSet
last:T Last element of orderedSet
at(i:Integer):T Element on index i of orderedSet
subOrderedSet(lower:Integer,
upper:Integer):OrderedSet(T)
Subset of orderedSet, all elements of orderedSet including
the element on position lower and the element on position
upper
insertAt(index:Integer,object:T)
:OrderedSet(T)
Result is a copy of the orderedSet, including the element
object at the position index
• OrderedSet and Sequences define additional operations
• Allow access or modification through an Index
• Operations of OrderedSet (extract)
• Receiving object is denoted by orderedSet
• Operations of Sequence
• Analogous to the operations of OrderedSet
0 1 2 3 … n
15. ITERATOR-BASED OPERATIONS
• OCL defines operations for Collections using Iterators
– Projection of new Collections out of existing ones
– Compact declarative specification instead of imperative algorithms
• Predefined Operations
– select(exp) : Collection
– reject(exp) : Collection
– collect(exp) : Collection
– forAll(exp) : Boolean
– exists(exp) : Boolean
– isUnique(exp) : Boolean
• iterate(…) – Iterate over all elements of a Collection
– Generic operation
– Predefined operations are defined with iterate(…)
15
16. SELECT / REJECT
• Select and Reject return subsets of collections
• Iterate over the complete collection and collect elements
• Select
• Result: Subset of collection, including elements where
booleanExpr is true
• Reject
• Result: Subset of collection, including elements where
booleanExpr is false
collection -> select( v : Type | booleanExp(v) )
collection -> select( v | booleanExp(v) )
collection -> select( booleanExp )
collection-> reject(v : Type | booleanExp(v))
Do we need a reject operation?
17. SELECT OPERATION
context Company inv:
self.employee -> select(e : Employee | e.age>50) ->
notEmpty()
List persons<Person> = new List();
for ( Iterator<Person> iter = comp.getEmployee();
iter.hasNext() ){
Person p = iter.next();
if ( p.age > 50 ){
persons.add(p);
}
}
Java 5
OCL
18. COLLECT OPERATION
• Collect-Operation returns a new collection from an existing one.
• Result of collect always Bag<T>.T defines the type of the property to be collected
• Example
• self.employees -> collect(age) – Return type: Bag(Integer)
• Short notation for collect: self.employees.age
collection -> collect( v : Type | exp(v) )
collection -> collect( v | exp(v) )
collection -> collect( exp )
19. SEMANTICS OF THE COLLECT
OPERATION
context Company inv:
self.employee ->collect(birthdate) -> size() > 3
List birthdate<Integer> = new List();
for ( Iterator<Person> iter = comp.getEmployee();
iter.hasNext() ){
birthdate.add(iter.next().getBirthdate());
}
Java 5
OCL
context Company inv:
self.employee -> collect(birthdate) -> asSet()
OCL
Bag
(with duplicates)
Set
(without
duplicates)
20. ITERATOR-BASED OPERATIONS
• ForAll checks, if all elements of a collection evaluate to true. Example:
self.employees -> forAll(age > 18)
• Nesting of forAll-Calls (Cartesian Product)
• Alternative: Use of multiple iteratores
• Exists checks, if at least one element evaluates to true
• Self.employees -> exists(e: Employee | e.isManager = true)
collection -> forAll( v : Type | booleanExp(v) )
collection -> forAll( v | booleanExp(v) )
collection -> forAll( booleanExp )
context Company inv:
self.employee->forAll (e1 | self.employee -> forAll (e2 |
e1 <> e2 implies e1.id <> e2.id))
context Company inv:
self.employee -> forAll (e1, e2 | e1 <> e2 implies e1.id <> e2.id))
21. ITERATE
• Iterate is the generic form of all iterator-based operations
• Syntax
collection -> iterate( elem : Typ; acc : Typ =
<initExp> | exp(elem, acc) )
• Variable elem is a typed Iterator
• Variable acc is a typed Accumulator
• Gets assigned initial value initExp
• exp(elem, acc) is a function to calculate acc
• collection -> collect( x : T | x.property )
-- semantically equivalent to:
collection -> iterate( x : T; acc : T2 = Bag{} | acc -> including(x.property) )
23. TUPLE TYPES
• Tuple types are structured created with the keyword
Tuple and by additionally specifying part names and part
values.
• Tuples and collections are orthogonal
Set{Tuple{name:’Ada’,emails:Set{’ada@acm’,’ada@i
bm’}},Tuple{name:’Bob’,emails:Sequence{’bob@o
mg’,’bob@sun’}}} :
Set(Tuple(emails:Collection(String),name:String))
23
24. NULL VALUES
• 0<>null ?
• ’’<>null ?
• ’null’<>null ?
• ’NULL’<>null ?
• ’Null’<>null ?
24
All true, null is a value different from all the others