The document discusses single page applications (SPAs) and their advantages over traditional multi-page applications. It notes that SPAs allow users to view and interact with content without page reloads, improving the user experience. SPAs separate client and server responsibilities, can be made to work offline, and are responsive across devices. Popular JavaScript frameworks that can be used to build SPAs are presented, along with examples and demos.
Nesta sessão iremos entender o conceito de Single Page Application, analisar algumas das suas vantagens e desvantagens e em que contextos, na minha opinião, fará sentido usar uma solução como esta face a uma aplicação web de múltiplas páginas.
No final veremos uma pequena demo de uma Single Page Application em Angular versão 1.
This document discusses the SOLID principles of object-oriented design:
- The Single Responsibility Principle states that a class should have one, and only one, reason to change.
- The Open/Closed Principle specifies that software entities should be open for extension but closed for modification.
- The Liskov Substitution Principle dictates that subclasses should behave in the same way as their parent classes.
- The Interface Segregation Principle indicates that client classes should not depend on interfaces they do not use.
- The Dependency Inversion Principle asserts that high-level modules should not depend on low-level modules, but both should depend on abstractions.
The presentation provides examples of
O documento discute modelos mentais, definindo-os como premissas fortemente enraizadas que influenciam como entendemos o mundo. Ele lista quatro tipos de modelos mentais baseados na biologia, linguagem, cultura e experiência pessoal e conclui que os modelos mentais definem nossa capacidade de agir e reagir na vida.
This document provides an overview of the actor model for concurrency. It discusses some key concepts like messages, actors that can send messages, create other actors, and change behavior. It describes issues with shared state concurrency and how the actor model addresses this by avoiding shared state. Actors communicate asynchronously by message passing and have location transparency. The document uses examples of money transfers between bank accounts to illustrate how this can be done safely and efficiently with the actor model compared to traditional shared state approaches. It also discusses capabilities like supervisor hierarchies and managed references in actor systems.
This document discusses microservices architecture and principles. It notes that a monolithic design leads to tight coupling that prevents independent scaling of modules. Microservices architecture aims to allow individual parts of a system to scale independently through looser coupling, autonomous services, and clear separation of concerns. Key principles for microservices include that they should be independently deployable, communicate through events and APIs, and that each service handle a specific task rather than representing an entire business entity.
This document discusses microservices architecture. It begins by outlining challenges with monolithic systems, such as everything failing if one part fails and inability to scale the database. The goals of microservices are then presented as scaling individual parts, reducing hardware costs, eliminating expensive support contracts, and allowing quick evaluation of new ideas. Several inspirations for microservices are cited from the 1960s onward. Key principles discussed include having independent, loosely coupled services that communicate through clean interfaces. The document also covers event storming, autonomous components, and other microservices patterns and best practices.
The document discusses Wercker's experience with adopting the Go programming language. It describes how Wercker was initially excited by Go's design goals for building mission critical systems at scale. Go was easy to set up and had built-in support for testing. However, Wercker also encountered challenges with Go's package management and its unfriendliness to code forking. Overall though, Wercker found that Go was a good fit despite some downsides.
This document provides tips and lessons for developers, including stopping focusing on steps and starting pomodoro time blocking, reading email once per day, logging work, reading code, automating tasks, contributing to open source, investigating the past, learning new languages, understanding customers, communicating state, joining communities, and letting others experience your work. It also contains an inappropriate analogy about Java and anal sex.
This document provides an introduction and overview of CQRS (Command Query Responsibility Segregation). It discusses typical N-layer architectures and how CQRS changes the architecture by separating read and write operations. The key points are that CQRS moves the system from an N-layer to separating read and write concerns, with commands handling changes, events capturing changes, and read models optimized for queries and kept in sync with events. The document outlines the full flow from commands to events to updating read models and queries against the read models.
The document provides 14 lessons for developers, including stopping focusing on steps, investigating the past, learning new languages, not accepting everything, prototyping, automating, understanding customers, reading, speaking the customer's language, backward chaining, modeling, communicating state, joining communities, letting others experience, and being a good audience. It also makes an inappropriate analogy about Java and anal sex.
The document discusses CQRS (Command Query Responsibility Segregation), an architectural pattern that separates read and write operations into different models. It outlines the benefits of CQRS such as encapsulating domain logic, optimized querying, and improved testability and auditing. The key aspects of CQRS covered include commands, events, read models, write models, and event sourcing. While CQRS has advantages, it also has learning challenges and overhead for simple applications. Food for thought questions are also raised about requirements, outsourcing, and database administration with this pattern.
This document discusses concepts related to domain-driven design including value objects, entities, identity, aggregate roots, validation, repositories, services, and domain-driven architecture. It provides examples of a student entity and domain model, discusses validatable vs invariant objects, and debates the pros and cons of including service layers. It also provides an overview of different approaches to domain-driven design bootstrapping including layering the domain, services, and data access.
This document provides an overview of Spec#, a programming language extension developed by Microsoft Research that allows developers to add formal specifications and contracts to .NET programs. Some key points:
- Spec# adds preconditions, postconditions, and object invariants that define contracts between method implementations and callers. These specifications can be checked to find errors.
- It supports Visual Studio and emits checks to downstream tools like Boogie to perform formal verification of Spec# programs.
- Spec# aims to eliminate null reference errors by distinguishing non-null (!) and possibly null (?) reference types and enforcing these properties.
- Examples are provided showing how method specifications, modifiers, and object invariants are defined in Spec#
The document discusses parallel computing and multi-core CPUs. It presents an example of manually parallelizing a matrix multiplication algorithm using threads. It then shows how the Parallel Extensions in .NET simplify this by using Parallel.For. The document also discusses specification languages like Spec# that allow pre- and post-conditions to be specified, catching errors earlier.
The document discusses domain-driven design (DDD) and how it can be applied to building a solar system simulation using C# 3.0 features. It presents the problem of simulating a solar system with configurable planets and physics-based movement. It then outlines a domain model with entities like Universe, Gravity, and Planet. Finally, it shows how C# 3.0 features like lambda expressions, LINQ queries, extension methods, and events can be used to implement the domain and interface.
This document discusses microservices architecture. It begins by outlining challenges with monolithic systems, such as everything failing if one part fails and inability to scale the database. The goals of microservices are then presented as scaling individual parts, reducing hardware costs, eliminating expensive support contracts, and allowing quick evaluation of new ideas. Several inspirations for microservices are cited from the 1960s onward. Key principles discussed include having independent, loosely coupled services that communicate through clean interfaces. The document also covers event storming, autonomous components, and other microservices patterns and best practices.
The document discusses Wercker's experience with adopting the Go programming language. It describes how Wercker was initially excited by Go's design goals for building mission critical systems at scale. Go was easy to set up and had built-in support for testing. However, Wercker also encountered challenges with Go's package management and its unfriendliness to code forking. Overall though, Wercker found that Go was a good fit despite some downsides.
This document provides tips and lessons for developers, including stopping focusing on steps and starting pomodoro time blocking, reading email once per day, logging work, reading code, automating tasks, contributing to open source, investigating the past, learning new languages, understanding customers, communicating state, joining communities, and letting others experience your work. It also contains an inappropriate analogy about Java and anal sex.
This document provides an introduction and overview of CQRS (Command Query Responsibility Segregation). It discusses typical N-layer architectures and how CQRS changes the architecture by separating read and write operations. The key points are that CQRS moves the system from an N-layer to separating read and write concerns, with commands handling changes, events capturing changes, and read models optimized for queries and kept in sync with events. The document outlines the full flow from commands to events to updating read models and queries against the read models.
The document provides 14 lessons for developers, including stopping focusing on steps, investigating the past, learning new languages, not accepting everything, prototyping, automating, understanding customers, reading, speaking the customer's language, backward chaining, modeling, communicating state, joining communities, letting others experience, and being a good audience. It also makes an inappropriate analogy about Java and anal sex.
The document discusses CQRS (Command Query Responsibility Segregation), an architectural pattern that separates read and write operations into different models. It outlines the benefits of CQRS such as encapsulating domain logic, optimized querying, and improved testability and auditing. The key aspects of CQRS covered include commands, events, read models, write models, and event sourcing. While CQRS has advantages, it also has learning challenges and overhead for simple applications. Food for thought questions are also raised about requirements, outsourcing, and database administration with this pattern.
This document discusses concepts related to domain-driven design including value objects, entities, identity, aggregate roots, validation, repositories, services, and domain-driven architecture. It provides examples of a student entity and domain model, discusses validatable vs invariant objects, and debates the pros and cons of including service layers. It also provides an overview of different approaches to domain-driven design bootstrapping including layering the domain, services, and data access.
This document provides an overview of Spec#, a programming language extension developed by Microsoft Research that allows developers to add formal specifications and contracts to .NET programs. Some key points:
- Spec# adds preconditions, postconditions, and object invariants that define contracts between method implementations and callers. These specifications can be checked to find errors.
- It supports Visual Studio and emits checks to downstream tools like Boogie to perform formal verification of Spec# programs.
- Spec# aims to eliminate null reference errors by distinguishing non-null (!) and possibly null (?) reference types and enforcing these properties.
- Examples are provided showing how method specifications, modifiers, and object invariants are defined in Spec#
The document discusses parallel computing and multi-core CPUs. It presents an example of manually parallelizing a matrix multiplication algorithm using threads. It then shows how the Parallel Extensions in .NET simplify this by using Parallel.For. The document also discusses specification languages like Spec# that allow pre- and post-conditions to be specified, catching errors earlier.
The document discusses domain-driven design (DDD) and how it can be applied to building a solar system simulation using C# 3.0 features. It presents the problem of simulating a solar system with configurable planets and physics-based movement. It then outlines a domain model with entities like Universe, Gravity, and Planet. Finally, it shows how C# 3.0 features like lambda expressions, LINQ queries, extension methods, and events can be used to implement the domain and interface.