Por qué usar Spock en lugar de JUnit / Mockito para tus tests Java - Codemoti...Andrés Viedma Peláez
Puede que hayas oído hablar de Spock, el framework basado en Groovy que te permite hacer tus tests Java más legibles y expresivos. Pero seguramente no hayas visto una comparación de código real de tests hechos en librerías de test típicas como son JUnit y Mockito y cómo se harían en Spock, algo que realmente te haga consciente de lo que ganas, y lo que pierdes, al hacer tus tests con Spock.
En esta charla no solo mostraremos eso, sino que repasaremos algunas recomendaciones de buenas prácticas típicas para los tests unitarios o de integración en Java, y veremos cómo se ven afectadas al usar Spock. Cómo algunas pierden importancia y hasta sentido, y otras nuevas aparecen para reemplazarlas. Cómo ahora puedes pensar más en el qué que en el cómo, cómo todo es más sencillo. Y cómo pierdes también cosas por el camino.
¿Te atreves a cambiar la forma de hacer tus tests?
We focus the programming of an artificial intelligence (AI) player for a communication game called “Are You a Werewolf?” (AIWolf). We present the Werewolf game as a standard game problem in the AI field, and it is similar to game problems such as Chess, Shogi, Go, and Poker. Compared to the previous game-related challenges, the communication or communicative intelligence skills that are commonly used in board games and card games have not been examined. When people play board games and card games, they converse with other players, and some games are advanced through conversation as so-called communication games. Few studies in the literature have analyzed artificial intelligence in relation to such communication games. “Are You a Werewolf?” is one of these communication games.
This game is a communication game that requires several AI technologies such as multi-agent coordination, intentional reading, and understanding of the theory of mind. Analyzing and solving the Werewolf game as a standard problem will provide useful results for our research field and its applications. Similar to the RoboCup project, the goal of this project is to determine new themes while creating a communicative AI player that can play the Werewolf game with humans. As an initial step, we designed a platform to develop a game-playing AI for a competition.
Unit testing in iOS featuring OCUnit, GHUnit & OCMockRobot Media
This document provides an overview and introduction to unit testing in iOS. It discusses OCUnit, GHUnit and OCMock, which are common frameworks for unit testing, mock objects, and assertions in Objective-C and iOS. The key points covered include:
- OCUnit is the default unit testing framework for Objective-C, with built-in support in Xcode.
- GHUnit is an alternative open source framework that provides a GUI runner and additional macros.
- OCMock allows mocking objects to control and isolate dependencies in tests.
- Examples are provided of writing tests with OCUnit, GHUnit and using mock objects with OCMock.
- Reasons for unit testing like fixing bugs early and easier
The document discusses building multiplayer worlds using Node.js and HTML. It describes the stack used including Node.js for the server, Socket.IO for cross-browser sockets, Now.js for namespaces and chat rooms, and Express for static files and pages. It then provides code snippets for implementing player movement, gravity, floors, lasers, and the animation loop to move everything.
UEI Headquarters provides company and product information. It is an open source software company founded in 2003 with headquarters in Tokyo, Japan and 130 employees. The company's legal capital is 35 million yen. UEI distributes its software under open source licenses and it is cross-platform. The software uses a class-based programming model and has many plugins. UEI believes open source is best for debugging, learning, and improving the library as HTML5 source code cannot be hidden. HTML5 also allows each browser to compete in improving performance.
This was a talk given at HTML5DevConf SF in 2015.
Ever wanted to write your own Browserify or Babel? Maybe have an idea for something new? This talk will get you started understanding how to use a JavaScript AST to transform and generate new code.
1. The document contains details of Pranav Ghildiyal, a class XII student. It includes a table of contents listing 24 programs with page numbers.
2. The programs cover concepts like arrays, structures, classes, inheritance, file handling, stacks, queues and more. Algorithms covered include sorting, searching and linked lists.
3. The document serves as an index for various C++ programs written by the student to demonstrate different concepts and data structures.
The document compares and contrasts the programming languages Java and C#. It outlines similarities and differences in their program structure, data types, operators, loops, arrays, strings, exception handling, namespaces/classes, constructors/destructors, objects, properties, structs, console I/O, and file I/O. Key differences include C# using namespaces instead of packages and optional destructors instead of finalize methods. Both support similar basic programming concepts but with some syntactic variations.
Por qué usar Spock en lugar de JUnit / Mockito para tus tests Java - Codemoti...Andrés Viedma Peláez
Puede que hayas oído hablar de Spock, el framework basado en Groovy que te permite hacer tus tests Java más legibles y expresivos. Pero seguramente no hayas visto una comparación de código real de tests hechos en librerías de test típicas como son JUnit y Mockito y cómo se harían en Spock, algo que realmente te haga consciente de lo que ganas, y lo que pierdes, al hacer tus tests con Spock.
En esta charla no solo mostraremos eso, sino que repasaremos algunas recomendaciones de buenas prácticas típicas para los tests unitarios o de integración en Java, y veremos cómo se ven afectadas al usar Spock. Cómo algunas pierden importancia y hasta sentido, y otras nuevas aparecen para reemplazarlas. Cómo ahora puedes pensar más en el qué que en el cómo, cómo todo es más sencillo. Y cómo pierdes también cosas por el camino.
¿Te atreves a cambiar la forma de hacer tus tests?
We focus the programming of an artificial intelligence (AI) player for a communication game called “Are You a Werewolf?” (AIWolf). We present the Werewolf game as a standard game problem in the AI field, and it is similar to game problems such as Chess, Shogi, Go, and Poker. Compared to the previous game-related challenges, the communication or communicative intelligence skills that are commonly used in board games and card games have not been examined. When people play board games and card games, they converse with other players, and some games are advanced through conversation as so-called communication games. Few studies in the literature have analyzed artificial intelligence in relation to such communication games. “Are You a Werewolf?” is one of these communication games.
This game is a communication game that requires several AI technologies such as multi-agent coordination, intentional reading, and understanding of the theory of mind. Analyzing and solving the Werewolf game as a standard problem will provide useful results for our research field and its applications. Similar to the RoboCup project, the goal of this project is to determine new themes while creating a communicative AI player that can play the Werewolf game with humans. As an initial step, we designed a platform to develop a game-playing AI for a competition.
Unit testing in iOS featuring OCUnit, GHUnit & OCMockRobot Media
This document provides an overview and introduction to unit testing in iOS. It discusses OCUnit, GHUnit and OCMock, which are common frameworks for unit testing, mock objects, and assertions in Objective-C and iOS. The key points covered include:
- OCUnit is the default unit testing framework for Objective-C, with built-in support in Xcode.
- GHUnit is an alternative open source framework that provides a GUI runner and additional macros.
- OCMock allows mocking objects to control and isolate dependencies in tests.
- Examples are provided of writing tests with OCUnit, GHUnit and using mock objects with OCMock.
- Reasons for unit testing like fixing bugs early and easier
The document discusses building multiplayer worlds using Node.js and HTML. It describes the stack used including Node.js for the server, Socket.IO for cross-browser sockets, Now.js for namespaces and chat rooms, and Express for static files and pages. It then provides code snippets for implementing player movement, gravity, floors, lasers, and the animation loop to move everything.
UEI Headquarters provides company and product information. It is an open source software company founded in 2003 with headquarters in Tokyo, Japan and 130 employees. The company's legal capital is 35 million yen. UEI distributes its software under open source licenses and it is cross-platform. The software uses a class-based programming model and has many plugins. UEI believes open source is best for debugging, learning, and improving the library as HTML5 source code cannot be hidden. HTML5 also allows each browser to compete in improving performance.
This was a talk given at HTML5DevConf SF in 2015.
Ever wanted to write your own Browserify or Babel? Maybe have an idea for something new? This talk will get you started understanding how to use a JavaScript AST to transform and generate new code.
1. The document contains details of Pranav Ghildiyal, a class XII student. It includes a table of contents listing 24 programs with page numbers.
2. The programs cover concepts like arrays, structures, classes, inheritance, file handling, stacks, queues and more. Algorithms covered include sorting, searching and linked lists.
3. The document serves as an index for various C++ programs written by the student to demonstrate different concepts and data structures.
The document compares and contrasts the programming languages Java and C#. It outlines similarities and differences in their program structure, data types, operators, loops, arrays, strings, exception handling, namespaces/classes, constructors/destructors, objects, properties, structs, console I/O, and file I/O. Key differences include C# using namespaces instead of packages and optional destructors instead of finalize methods. Both support similar basic programming concepts but with some syntactic variations.
This document discusses using ScriptableObjects in Unity to enable rapid prototyping. It begins by explaining what ScriptableObjects are and how they can be created and used. It then discusses how ScriptableObjects can make game development easier by allowing designers to configure variables and events without code changes. Several examples are provided, such as pluggable enums, variables, and events. The document concludes by discussing how ScriptableObjects enable better organization, reuse, testing, and collaboration compared to traditional MonoBehaviour approaches.
The Challenge of Bringing FEZ to PlayStation PlatformsMiguel Angel Horna
This presentation explores the process of bringing FEZ to the Sony PlayStation platforms. Beginning with the conversion from the existing C# codebase to C++ native code, the talk will then cover memory management without a garbage collector, tuned optimization techniques for each platform, and will finish with special features added to PlayStation builds
The document provides an overview of new features introduced in C# 6.0, including static using, string interpolation, dictionary initializers, auto-property initializers, nameof expression, await in catch/finally blocks, null conditional operator, expression-bodied members, and extension methods used with static using. Code examples are provided to demonstrate the usage of each new feature.
PHP 8.0 is expected to be released by the end of the year, so it’s time to take a first look at the next major version of PHP. Attributes, union types, and a just-in-time compiler are likely the flagship features of this release, but there are many more improvements to be excited about. As PHP 8.0 is a major version, this release also includes backwards-incompatible changes, many of which are centered around stricter error handling and more type safety.
This talk will discuss new features already implemented in PHP 8, backwards-compatibility breaks to watch out for, as well as some features that are still under discussion.
PHP 8.0 is expected to be released by the end of the year, so it’s time to take a first look at the next major version of PHP. Attributes, union types, and a just-in-time compiler are likely the flagship features of this release, but there are many more improvements to be excited about. As PHP 8.0 is a major version, this release also includes backwards-incompatible changes, many of which are centered around stricter error handling and more type safety.
Presentation from phpfwdays 2020.
This document introduces component-based game engine design. It discusses how an engine is made up of systems like graphics, physics and game logic. Game objects are composed of components that define their behavior and functionality. Components and systems communicate via messages. Serialization allows saving game state by writing components to files and reconstructing game objects from those files. The document provides examples of core engine classes like systems, game objects, components and messaging to illustrate the component-based design.
This document provides instructions for creating a basic HTML5 canvas game. It includes steps to set up the canvas, load background and character images, define game objects like the hero and enemies, handle keyboard controls, continuously update and render the game, and reset when the hero catches an enemy. The game framework supports different levels that add additional enemies to catch. Overall it outlines a full game loop and core mechanics for a simple catch-the-enemy style HTML5 game.
Secret unit testing tools no one ever told you aboutDror Helper
There are more to unit testing than using a unit testing framework – in order to succeed you want to use the right tools for the job. There are a few tools that almost no one talks about – some enabling creating of top-notch, robust unit tests. Some will help you run your tests better and faster.
In this session I’ll explain about the inevitable maintainability problems developers face when writing and maintaining huge unit testing suits and how unit level BDD, AutoMocking, and Continuous Execution can help take control over your tests.
The document discusses dynamic programming in C# and compares static and dynamic languages. It provides examples of how dynamic features like method missing in Ruby can be achieved in C#. It also summarizes the Dynamic Language Runtime (DLR) and how it allows multiple languages to run on the Common Language Runtime (CLR). Key people who worked on DLR implementations for languages like IronRuby are mentioned.
The document discusses the Dynamic Language Runtime (DLR). The DLR was created by Jim Hugunin to enable dynamic languages like IronPython to run on the .NET Common Language Runtime (CLR). It provides features needed for dynamic languages like a script engine, dynamic typing, metaprogramming, and interoperability between dynamic languages. The DLR also includes expression trees that allow expressions to be compiled at runtime and late binding.
Matteo Vaccari - TDD per Android | Codemotion Milan 2015Codemotion
This document discusses test-driven development (TDD) for Android applications. It begins by explaining the benefits of testing such as helping design code, checking code works, and delivering software faster. It then discusses different types of tests and how to structure tests for Android applications using techniques like model-view separation, presenter-first, and mocking Android APIs. The document provides examples of unit tests, acceptance tests, and how to separate an Android app from core logic. It emphasizes programming skill over libraries and delivering valuable software sustainably through TDD.
This document provides an introduction and overview of the Java programming language. It discusses key Java concepts like classes, objects, inheritance, packages, exceptions, threads, and the producer-consumer problem. It explains how Java programs are written, variables declared, methods defined, and control structures specified. It also covers Java features, environments, compilers, virtual machines, and resources for learning more. The document is intended to give readers a basic understanding of the Java language.
This document discusses principles of object oriented programming including encapsulation, abstraction, inheritance, polymorphism, and decoupling. It provides examples of classes, objects, methods, and interfaces. It also explains SOLID principles such as the single responsibility principle, open/closed principle, Liskov substitution principle, interface segregation principle, and dependency injection.
TDD and mobile development: some forgotten techniques, illustrated with AndroidCodemotion
"TDD and mobile development: some forgotten techniques, illustrated with Android" by Matteo Vaccari
Delivering updates with confidence; shortening time to market; writing clean and correct code every day: this is the promise of Test-Driven Development. But, it’s not easy to do TDD in Android. You have to run the tests on the device, or install a complex framework that mimics the Android APIs. Both options slow you down. In this session we’ll get back to the roots of TDD and show how to deal with this problem. We’ll learn time-tested techniques that reduce the need to run tests on the device. The good side-effect is that our code becomes simpler and better.
This document provides an overview of key object-oriented programming concepts including classes and objects, inheritance, encapsulation, polymorphism, interfaces, abstract classes, and design patterns. It discusses class construction and object instantiation. Inheritance is described as both exposing implementation details and potentially breaking encapsulation. Composition is presented as an alternative to inheritance. The document also covers method overriding, overloading, and duck typing as forms of polymorphism. Finally, it briefly introduces common design principles like SOLID and patterns like delegation.
Flutter is a new cross-platform mobile app development framework created by Google. It allows building high-performance native apps for Android and iOS from a single codebase using the Dart programming language. The document discusses Flutter's advantages like reactive views without a JavaScript bridge, native performance through AOT compilation, rich customizable widgets, and hot reload capabilities. It provides a quick overview of setting up Flutter development environments and building a basic "Hello World" app. The presenter demonstrates building a simple counter app widget in both Flutter and React Native. He closes by discussing some use cases for Flutter and pointing to further reading resources.
Lors de cette présentation, nous apprendrons à créer des applications Web plus rapidement et avec moins d'erreurs en utilisant un langage de programmation puissant et amusant.
Agenda
- Installer TypeScript et configurer un nouveau projet.
- Tirer avantage des types de données.
- Développer en Objets avec TypeScript
- Ecrire de meilleures fonctions
- Retrouver vos données avec LINQ
- Programmer de manière asynchrone
- Bonnes pratiques
- Avantages et inconvénients des projets TypeScript
- Conclusion et Discussion
This document discusses how Code Hunt crowdsources code and processes through an educational gaming platform. It began as dynamic symbolic execution tool Pex that was adapted into a game called Coding Duel. This evolved into Code Hunt, an online platform where users write code in the browser to solve puzzles. Code Hunt provides test cases to give feedback until the user's code matches the secret implementation. It has been used by hundreds of thousands of students to learn programming in a game-like environment. The document argues that Code Hunt can scale crowdsourcing of code and processes while identifying top coders through competitive coding contests hosted on the platform. Code Hunt data from these contests has been publicly released to further research.
The document discusses software testing and game development best practices. It emphasizes the importance of testing for clarity, adherence to SOLID principles, speed, no crashes, and memory management. It also mentions state machines, effects, game units, controllers, views, and the importance of separating concerns. Live coding is shown as an effective way to demonstrate these concepts.
Artem Bykovets: Чому люди не стають раптово кросс-функціональними, хоча в нас...Lviv Startup Club
Artem Bykovets: Чому люди не стають раптово кросс-функціональними, хоча в нас Agile? (UA)
Kyiv PMDay 2024 Summer
Website – www.pmday.org
Youtube – https://www.youtube.com/startuplviv
FB – https://www.facebook.com/pmdayconference
More Related Content
Similar to Анатолій Ландишев - “Незв’язний код у Unity” GameCC 2017
This document discusses using ScriptableObjects in Unity to enable rapid prototyping. It begins by explaining what ScriptableObjects are and how they can be created and used. It then discusses how ScriptableObjects can make game development easier by allowing designers to configure variables and events without code changes. Several examples are provided, such as pluggable enums, variables, and events. The document concludes by discussing how ScriptableObjects enable better organization, reuse, testing, and collaboration compared to traditional MonoBehaviour approaches.
The Challenge of Bringing FEZ to PlayStation PlatformsMiguel Angel Horna
This presentation explores the process of bringing FEZ to the Sony PlayStation platforms. Beginning with the conversion from the existing C# codebase to C++ native code, the talk will then cover memory management without a garbage collector, tuned optimization techniques for each platform, and will finish with special features added to PlayStation builds
The document provides an overview of new features introduced in C# 6.0, including static using, string interpolation, dictionary initializers, auto-property initializers, nameof expression, await in catch/finally blocks, null conditional operator, expression-bodied members, and extension methods used with static using. Code examples are provided to demonstrate the usage of each new feature.
PHP 8.0 is expected to be released by the end of the year, so it’s time to take a first look at the next major version of PHP. Attributes, union types, and a just-in-time compiler are likely the flagship features of this release, but there are many more improvements to be excited about. As PHP 8.0 is a major version, this release also includes backwards-incompatible changes, many of which are centered around stricter error handling and more type safety.
This talk will discuss new features already implemented in PHP 8, backwards-compatibility breaks to watch out for, as well as some features that are still under discussion.
PHP 8.0 is expected to be released by the end of the year, so it’s time to take a first look at the next major version of PHP. Attributes, union types, and a just-in-time compiler are likely the flagship features of this release, but there are many more improvements to be excited about. As PHP 8.0 is a major version, this release also includes backwards-incompatible changes, many of which are centered around stricter error handling and more type safety.
Presentation from phpfwdays 2020.
This document introduces component-based game engine design. It discusses how an engine is made up of systems like graphics, physics and game logic. Game objects are composed of components that define their behavior and functionality. Components and systems communicate via messages. Serialization allows saving game state by writing components to files and reconstructing game objects from those files. The document provides examples of core engine classes like systems, game objects, components and messaging to illustrate the component-based design.
This document provides instructions for creating a basic HTML5 canvas game. It includes steps to set up the canvas, load background and character images, define game objects like the hero and enemies, handle keyboard controls, continuously update and render the game, and reset when the hero catches an enemy. The game framework supports different levels that add additional enemies to catch. Overall it outlines a full game loop and core mechanics for a simple catch-the-enemy style HTML5 game.
Secret unit testing tools no one ever told you aboutDror Helper
There are more to unit testing than using a unit testing framework – in order to succeed you want to use the right tools for the job. There are a few tools that almost no one talks about – some enabling creating of top-notch, robust unit tests. Some will help you run your tests better and faster.
In this session I’ll explain about the inevitable maintainability problems developers face when writing and maintaining huge unit testing suits and how unit level BDD, AutoMocking, and Continuous Execution can help take control over your tests.
The document discusses dynamic programming in C# and compares static and dynamic languages. It provides examples of how dynamic features like method missing in Ruby can be achieved in C#. It also summarizes the Dynamic Language Runtime (DLR) and how it allows multiple languages to run on the Common Language Runtime (CLR). Key people who worked on DLR implementations for languages like IronRuby are mentioned.
The document discusses the Dynamic Language Runtime (DLR). The DLR was created by Jim Hugunin to enable dynamic languages like IronPython to run on the .NET Common Language Runtime (CLR). It provides features needed for dynamic languages like a script engine, dynamic typing, metaprogramming, and interoperability between dynamic languages. The DLR also includes expression trees that allow expressions to be compiled at runtime and late binding.
Matteo Vaccari - TDD per Android | Codemotion Milan 2015Codemotion
This document discusses test-driven development (TDD) for Android applications. It begins by explaining the benefits of testing such as helping design code, checking code works, and delivering software faster. It then discusses different types of tests and how to structure tests for Android applications using techniques like model-view separation, presenter-first, and mocking Android APIs. The document provides examples of unit tests, acceptance tests, and how to separate an Android app from core logic. It emphasizes programming skill over libraries and delivering valuable software sustainably through TDD.
This document provides an introduction and overview of the Java programming language. It discusses key Java concepts like classes, objects, inheritance, packages, exceptions, threads, and the producer-consumer problem. It explains how Java programs are written, variables declared, methods defined, and control structures specified. It also covers Java features, environments, compilers, virtual machines, and resources for learning more. The document is intended to give readers a basic understanding of the Java language.
This document discusses principles of object oriented programming including encapsulation, abstraction, inheritance, polymorphism, and decoupling. It provides examples of classes, objects, methods, and interfaces. It also explains SOLID principles such as the single responsibility principle, open/closed principle, Liskov substitution principle, interface segregation principle, and dependency injection.
TDD and mobile development: some forgotten techniques, illustrated with AndroidCodemotion
"TDD and mobile development: some forgotten techniques, illustrated with Android" by Matteo Vaccari
Delivering updates with confidence; shortening time to market; writing clean and correct code every day: this is the promise of Test-Driven Development. But, it’s not easy to do TDD in Android. You have to run the tests on the device, or install a complex framework that mimics the Android APIs. Both options slow you down. In this session we’ll get back to the roots of TDD and show how to deal with this problem. We’ll learn time-tested techniques that reduce the need to run tests on the device. The good side-effect is that our code becomes simpler and better.
This document provides an overview of key object-oriented programming concepts including classes and objects, inheritance, encapsulation, polymorphism, interfaces, abstract classes, and design patterns. It discusses class construction and object instantiation. Inheritance is described as both exposing implementation details and potentially breaking encapsulation. Composition is presented as an alternative to inheritance. The document also covers method overriding, overloading, and duck typing as forms of polymorphism. Finally, it briefly introduces common design principles like SOLID and patterns like delegation.
Flutter is a new cross-platform mobile app development framework created by Google. It allows building high-performance native apps for Android and iOS from a single codebase using the Dart programming language. The document discusses Flutter's advantages like reactive views without a JavaScript bridge, native performance through AOT compilation, rich customizable widgets, and hot reload capabilities. It provides a quick overview of setting up Flutter development environments and building a basic "Hello World" app. The presenter demonstrates building a simple counter app widget in both Flutter and React Native. He closes by discussing some use cases for Flutter and pointing to further reading resources.
Lors de cette présentation, nous apprendrons à créer des applications Web plus rapidement et avec moins d'erreurs en utilisant un langage de programmation puissant et amusant.
Agenda
- Installer TypeScript et configurer un nouveau projet.
- Tirer avantage des types de données.
- Développer en Objets avec TypeScript
- Ecrire de meilleures fonctions
- Retrouver vos données avec LINQ
- Programmer de manière asynchrone
- Bonnes pratiques
- Avantages et inconvénients des projets TypeScript
- Conclusion et Discussion
This document discusses how Code Hunt crowdsources code and processes through an educational gaming platform. It began as dynamic symbolic execution tool Pex that was adapted into a game called Coding Duel. This evolved into Code Hunt, an online platform where users write code in the browser to solve puzzles. Code Hunt provides test cases to give feedback until the user's code matches the secret implementation. It has been used by hundreds of thousands of students to learn programming in a game-like environment. The document argues that Code Hunt can scale crowdsourcing of code and processes while identifying top coders through competitive coding contests hosted on the platform. Code Hunt data from these contests has been publicly released to further research.
The document discusses software testing and game development best practices. It emphasizes the importance of testing for clarity, adherence to SOLID principles, speed, no crashes, and memory management. It also mentions state machines, effects, game units, controllers, views, and the importance of separating concerns. Live coding is shown as an effective way to demonstrate these concepts.
Similar to Анатолій Ландишев - “Незв’язний код у Unity” GameCC 2017 (20)
Artem Bykovets: Чому люди не стають раптово кросс-функціональними, хоча в нас...Lviv Startup Club
Artem Bykovets: Чому люди не стають раптово кросс-функціональними, хоча в нас Agile? (UA)
Kyiv PMDay 2024 Summer
Website – www.pmday.org
Youtube – https://www.youtube.com/startuplviv
FB – https://www.facebook.com/pmdayconference
Natalia Renska & Roman Astafiev: Нарциси і психопати в організаціях. Як це вп...Lviv Startup Club
Natalia Renska & Roman Astafiev: Нарциси і психопати в організаціях. Як це впливає на розробку продуктів та реалізацію інноваційних рішень (UA)
Kyiv PMDay 2024 Summer
Website – www.pmday.org
Youtube – https://www.youtube.com/startuplviv
FB – https://www.facebook.com/pmdayconference
Igor Protsenko: Difference between outsourcing and product companies for prod...Lviv Startup Club
Igor Protsenko: Difference between outsourcing and product companies for product managers and related challenges (UA)
Kyiv PMDay 2024 Summer
Website – www.pmday.org
Youtube – https://www.youtube.com/startuplviv
FB – https://www.facebook.com/pmdayconference
Kseniya Leshchenko: Shared development support service model as the way to ma...Lviv Startup Club
Kseniya Leshchenko: Shared development support service model as the way to make small projects with small budgets profitable for the company (UA)
Kyiv PMDay 2024 Summer
Website – www.pmday.org
Youtube – https://www.youtube.com/startuplviv
FB – https://www.facebook.com/pmdayconference
Anna Kompanets: Проблеми впровадження проєктів, про які б ви ніколи не подума...Lviv Startup Club
Anna Kompanets: Проблеми впровадження проєктів, про які б ви ніколи не подумали (UA)
Kyiv PMDay 2024 Summer
Website – www.pmday.org
Youtube – https://www.youtube.com/startuplviv
FB – https://www.facebook.com/pmdayconference
Anton Hlazkov: Впровадження змін – це процес чи проєкт? Чому важливо розуміти...Lviv Startup Club
Anton Hlazkov: Впровадження змін – це процес чи проєкт? Чому важливо розуміти різницю і як це впливає на результат (UA)
Kyiv PMDay 2024 Summer
Website – www.pmday.org
Youtube – https://www.youtube.com/startuplviv
FB – https://www.facebook.com/pmdayconference
Chapter wise All Notes of First year Basic Civil Engineering.pptxDenish Jangid
Chapter wise All Notes of First year Basic Civil Engineering
Syllabus
Chapter-1
Introduction to objective, scope and outcome the subject
Chapter 2
Introduction: Scope and Specialization of Civil Engineering, Role of civil Engineer in Society, Impact of infrastructural development on economy of country.
Chapter 3
Surveying: Object Principles & Types of Surveying; Site Plans, Plans & Maps; Scales & Unit of different Measurements.
Linear Measurements: Instruments used. Linear Measurement by Tape, Ranging out Survey Lines and overcoming Obstructions; Measurements on sloping ground; Tape corrections, conventional symbols. Angular Measurements: Instruments used; Introduction to Compass Surveying, Bearings and Longitude & Latitude of a Line, Introduction to total station.
Levelling: Instrument used Object of levelling, Methods of levelling in brief, and Contour maps.
Chapter 4
Buildings: Selection of site for Buildings, Layout of Building Plan, Types of buildings, Plinth area, carpet area, floor space index, Introduction to building byelaws, concept of sun light & ventilation. Components of Buildings & their functions, Basic concept of R.C.C., Introduction to types of foundation
Chapter 5
Transportation: Introduction to Transportation Engineering; Traffic and Road Safety: Types and Characteristics of Various Modes of Transportation; Various Road Traffic Signs, Causes of Accidents and Road Safety Measures.
Chapter 6
Environmental Engineering: Environmental Pollution, Environmental Acts and Regulations, Functional Concepts of Ecology, Basics of Species, Biodiversity, Ecosystem, Hydrological Cycle; Chemical Cycles: Carbon, Nitrogen & Phosphorus; Energy Flow in Ecosystems.
Water Pollution: Water Quality standards, Introduction to Treatment & Disposal of Waste Water. Reuse and Saving of Water, Rain Water Harvesting. Solid Waste Management: Classification of Solid Waste, Collection, Transportation and Disposal of Solid. Recycling of Solid Waste: Energy Recovery, Sanitary Landfill, On-Site Sanitation. Air & Noise Pollution: Primary and Secondary air pollutants, Harmful effects of Air Pollution, Control of Air Pollution. . Noise Pollution Harmful Effects of noise pollution, control of noise pollution, Global warming & Climate Change, Ozone depletion, Greenhouse effect
Text Books:
1. Palancharmy, Basic Civil Engineering, McGraw Hill publishers.
2. Satheesh Gopi, Basic Civil Engineering, Pearson Publishers.
3. Ketki Rangwala Dalal, Essentials of Civil Engineering, Charotar Publishing House.
4. BCP, Surveying volume 1
How to Build a Module in Odoo 17 Using the Scaffold MethodCeline George
Odoo provides an option for creating a module by using a single line command. By using this command the user can make a whole structure of a module. It is very easy for a beginner to make a module. There is no need to make each file manually. This slide will show how to create a module using the scaffold method.
This document provides an overview of wound healing, its functions, stages, mechanisms, factors affecting it, and complications.
A wound is a break in the integrity of the skin or tissues, which may be associated with disruption of the structure and function.
Healing is the body’s response to injury in an attempt to restore normal structure and functions.
Healing can occur in two ways: Regeneration and Repair
There are 4 phases of wound healing: hemostasis, inflammation, proliferation, and remodeling. This document also describes the mechanism of wound healing. Factors that affect healing include infection, uncontrolled diabetes, poor nutrition, age, anemia, the presence of foreign bodies, etc.
Complications of wound healing like infection, hyperpigmentation of scar, contractures, and keloid formation.
This presentation was provided by Steph Pollock of The American Psychological Association’s Journals Program, and Damita Snow, of The American Society of Civil Engineers (ASCE), for the initial session of NISO's 2024 Training Series "DEIA in the Scholarly Landscape." Session One: 'Setting Expectations: a DEIA Primer,' was held June 6, 2024.
How to Make a Field Mandatory in Odoo 17Celine George
In Odoo, making a field required can be done through both Python code and XML views. When you set the required attribute to True in Python code, it makes the field required across all views where it's used. Conversely, when you set the required attribute in XML views, it makes the field required only in the context of that particular view.
How to Add Chatter in the odoo 17 ERP ModuleCeline George
In Odoo, the chatter is like a chat tool that helps you work together on records. You can leave notes and track things, making it easier to talk with your team and partners. Inside chatter, all communication history, activity, and changes will be displayed.
it describes the bony anatomy including the femoral head , acetabulum, labrum . also discusses the capsule , ligaments . muscle that act on the hip joint and the range of motion are outlined. factors affecting hip joint stability and weight transmission through the joint are summarized.
বাংলাদেশের অর্থনৈতিক সমীক্ষা ২০২৪ [Bangladesh Economic Review 2024 Bangla.pdf] কম্পিউটার , ট্যাব ও স্মার্ট ফোন ভার্সন সহ সম্পূর্ণ বাংলা ই-বুক বা pdf বই " সুচিপত্র ...বুকমার্ক মেনু 🔖 ও হাইপার লিংক মেনু 📝👆 যুক্ত ..
আমাদের সবার জন্য খুব খুব গুরুত্বপূর্ণ একটি বই ..বিসিএস, ব্যাংক, ইউনিভার্সিটি ভর্তি ও যে কোন প্রতিযোগিতা মূলক পরীক্ষার জন্য এর খুব ইম্পরট্যান্ট একটি বিষয় ...তাছাড়া বাংলাদেশের সাম্প্রতিক যে কোন ডাটা বা তথ্য এই বইতে পাবেন ...
তাই একজন নাগরিক হিসাবে এই তথ্য গুলো আপনার জানা প্রয়োজন ...।
বিসিএস ও ব্যাংক এর লিখিত পরীক্ষা ...+এছাড়া মাধ্যমিক ও উচ্চমাধ্যমিকের স্টুডেন্টদের জন্য অনেক কাজে আসবে ...
हिंदी वर्णमाला पीपीटी, hindi alphabet PPT presentation, hindi varnamala PPT, Hindi Varnamala pdf, हिंदी स्वर, हिंदी व्यंजन, sikhiye hindi varnmala, dr. mulla adam ali, hindi language and literature, hindi alphabet with drawing, hindi alphabet pdf, hindi varnamala for childrens, hindi language, hindi varnamala practice for kids, https://www.drmullaadamali.com
Reimagining Your Library Space: How to Increase the Vibes in Your Library No ...Diana Rendina
Librarians are leading the way in creating future-ready citizens – now we need to update our spaces to match. In this session, attendees will get inspiration for transforming their library spaces. You’ll learn how to survey students and patrons, create a focus group, and use design thinking to brainstorm ideas for your space. We’ll discuss budget friendly ways to change your space as well as how to find funding. No matter where you’re at, you’ll find ideas for reimagining your space in this session.
Leveraging Generative AI to Drive Nonprofit InnovationTechSoup
In this webinar, participants learned how to utilize Generative AI to streamline operations and elevate member engagement. Amazon Web Service experts provided a customer specific use cases and dived into low/no-code tools that are quick and easy to deploy through Amazon Web Service (AWS.)
26. Singleton
• Represents GLOBAL STATE in your code
• Programs using global state are VERY
difficult to test and debug
• Programs relying on global state HIDE their
dependencies
27. class X {
…
public X() { … }
public int DoSomething() { … }
}
int a = new X().DoSomething();
int b = new X().DoSomething();
Global State
28. class X {
…
public X() { … }
public int DoSomething() { … }
}
int a = new X().DoSomething();
int b = new X().DoSomething();
Global State
Does a == b or a != b?
31. Global State
int a = new X()
.DoSomething()
X
Y
Q
Z
int b = new X()
.DoSomething()
X
Y
Q
Z
a == b
32. Global State
int a = new X()
.DoSomething()
X
Y
Q
Z
int b = new X()
.DoSomething()
X
Y
Q
Z
a != b
GS
33. Same in Unity
class X : MonoBehaviour {
public int DoSomething() { … }
}
X x1 = new GameObject().AddComponent<X>();
int a = x1.DoSomething();
X x2 = new GameObject().AddComponent<X>();
int b = x2.DoSomething();
Does a == b or a != b?
40. Deceptive API
[SerializeField] GameObject _enemyPrefab;
[SerializeField] PlayerHealth _player;
void Awake() {
GameManager.Instance.Player = _player;
var enemy = Instantiate(_enemyPrefab);
}
41. Deceptive API
[SerializeField] GameObject _enemyPrefab;
[SerializeField] PlayerHealth _player;
void Awake() {
GameManager.Instance.Player = _player;
var enemy = Instantiate(_enemyPrefab);
}
42. Deceptive API
[SerializeField] GameObject _enemyPrefab;
[SerializeField] PlayerHealth _player;
void Start() {
GameManager.Instance.Player = _player;
var enemy = Instantiate(_enemyPrefab);
}
43. Deceptive API
A a = new A();
B b = new B();
a.x();
b.z();
a.y(b);
B b = new B();
b.z();
A a = new A();
a.x();
a.y(b);
• Code should be commutative (a*b = b*a)
• The above code will fail if there’s Global State
44. Singleton
public class GameSettings : MonoBehaviour {
public static GameSettings Instance;
private GameObject _state1;
private GameObject _state2;
private GameObject _state3;
void Awake() {
if (Instance == null)
Instance = this;
else if (Instance != this)
Destroy(this);
}
45. Singleton
public class GameSettings : MonoBehaviour {
private GameObject _state1;
private GameObject _state2;
private GameObject _state3;
void Awake() {}
• Class no longer enforces its “singletoness”
• Application code creates only one instance
46. Better API – Method Injection
[SerializeField] GameObject _enemyPrefab;
[SerializeField] PlayerHealth _player;
void Start() {
var enemy = Instantiate(_enemyPrefab);
var enemyMovement =
enemy.GetComponent<EnemyMovement>();
enemyMovement.Init(_player, …);
}
47. Better API – Property Injection
[SerializeField] GameObject _enemyPrefab;
[SerializeField] PlayerHealth _player;
void Start() {
var enemy = Instantiate(_enemyPrefab);
var enemyMovement =
enemy.GetComponent<EnemyMovement>();
enemyMovement.Player = _player;
}
57. X x = new GameObject().AddComponent<X>();
x.Init(a, b, c);
Y y = new GameObject().AddComponent<Y>();
y.x = x;
Z z = Instantiate(_zPrefab);
z.Init(x, y);
Dependency Injection in Unity
60. Dependency Injection done wrong
public class DoorNap {
public DoorNap(Color color) {…}
}
public class Door {
public Door(Color color, Color doorNapColor) {
…
_doorNap = new DoorNap(doorNapColor);
}
}
61. Dependency Injection done wrong
public class House {
public House(Color wallsColor,
Color doorColor, Color doorNapColor) {
…
_door = new Door(doorColor, doorNapColor);
}
}
62. Dependency Injection done right
public class DoorNap {
public DoorNap(Color color) {…}
}
public class Door {
public Door(Color color, DoorNap doorNap) {
…
_doorNap = doorNap;
}
}
63. Dependency Injection done right
public class House {
public House(Color wallsColor, Door door) {
…
_door = door;
}
}
64. Dependency Injection done right
public class HouseFactory {
public House CreateHouse() {
var doorNap = new DoorNap(Color.yellow);
var door = new Door(Color.brown, doorNap);
var house = new House(Color.white, door);
return house;
}
}
65. Composition Root
public class HouseFactory {
public House CreateHouse() {
var doorNap = new DoorNap(Color.yellow);
var door = new Door(Color.brown, doorNap);
var house = new House(Color.white, door);
return house;
}
}
76. • Rely on interface, not implementation
How to decouple code?
public interface IXHandler {
void DoSomething();
}
class X {
public X(IXHandler handler) {…}
}
77. • Rely on interface, not implementation
How to decouple code?
class Y : IXHandler {
public void DoSomething() {…}
}
class Z : IXHandler {
public void DoSomething() {…}
}
78. • Use delegates
How to decouple code?
class X {
public X(Action doSomething) {…}
…
}
void DoSomething() {…}
var x = new X(DoSomething);
79. • Use events
How to decouple code?
class X {
public event Action OnX;
}
void DoSomething() {…}
var x = new X();
x.OnX += DoSomething;
80. • Use UnityEvent
How to decouple code?
class X {
public UnityEvent OnX;
}
void DoSomething() {…}
var x = new X();
x.OnX.AddListener(DoSomething);
82. • Supports methods, properties, events
• Best performance
• Supported by DI Containers
• Supported by Moq frameworks
• Unsupported in Unity Inspector
Using C# interfaces is preferred
86. Component + UnityEvent
instead of Interface
public class XHandler : MonoBehaviour {
public UnityEvent OnDoSomething;
public void DoSomething() {
OnDoSomething.Invoke();
};
}
public XHandler Handler;
Handler.DoSomething();
87. Component + UnityEvent
instead of Interface
public class XHandler : MonoBehaviour {
public UnityEvent OnDoSomething;
public void DoSomething() {
OnDoSomething.Invoke();
};
}
[SerializeField] XHandler _handler;
_handler.DoSomething();
90. Component + UnityEvent
instead of Interface
• Supports methods, properties, events
• Supported by some DI Containers
• Supported by Moq frameworks
• Supported in Unity Inspector
• Lower performance due to UnityEvent
91. Conclusion
• Singletons and Global State cause problems
• Dependency Injection is better
• Interfaces, Delegates, Events,
Component + UnityEvent are the ways to
decouple your module from rest of code