The document discusses dependency injection (DI) and how Dagger can be used to implement DI. It begins with an example Android application that manages a lock dashboard. The code to create dependencies is complex and error-prone. Dagger addresses this by generating code to manage object creation and injection. It works by analyzing how objects relate via a directed acyclic graph (DAG) of their dependencies. Modules provide object instances to the graph, and components inject them where needed. This allows clean, testable separation of concerns and simplifies object creation.
This document provides an overview of Groovy and Grails. It begins with introductions from the presenter and asks who is familiar with Groovy and Grails. It then outlines some of the key features of Groovy, such as its Java-like syntax, dynamic typing, closures, and meta-programming capabilities. Several examples are provided that demonstrate converting Java code to Groovy. The document also discusses how Groovy can be used to build domain-specific languages, with examples using the AntBuilder and MarkupBuilder. It briefly mentions additional Groovy features and provides positive information about its adoption and support.
This document provides an overview and introduction to Groovy and Grails. It begins with an introduction by the presenter and then provides information on Groovy, including how to write a simple "Hello World" program in Groovy and examples demonstrating Groovy features like closures and metaprogramming. It also covers Grails and what is included in a basic Grails application like generators, domain models, views, controllers, and tag libraries. Key benefits are highlighted but also some risks and limitations.
The document discusses SOLID principles of object-oriented design. It provides examples of code that demonstrate poor adherence to SOLID and ways the code can be refactored to better follow SOLID. Specifically, it shows how to apply the single responsibility principle, open/closed principle, Liskov substitution principle, interface segregation principle and dependency inversion principle to structure code for flexibility, reusability and maintainability.
The document discusses Android Data Binding, which is an official Google library that allows binding UI components in XML layouts to data sources in code. It was introduced in 2015 and is currently in version 1.0-rc4. The document provides examples of using Data Binding to avoid findViewById(), bind views to models, include layouts, use expressions, handle null values, create custom bindings, and convert between types. It recommends references for further reading on Data Binding.
Java. Explicit and Implicit Wait. Testing Ajax ApplicationsМарія Русин
This document provides information on explicit and implicit waits in Selenium. It discusses the differences between explicit and implicit waits, provides code examples for each, and covers related topics like WebDriverWait and ExpectedConditions. Key points include:
- Explicit waits are code defined waits for a certain condition, like using Thread.sleep(). Implicit waits set a default wait time for finding elements.
- WebDriverWait can be used with ExpectedConditions to wait for elements to meet a certain condition like being clickable.
- Implicit waits set a default timeout for finding elements across all searches during the WebDriver session.
- There are convenience methods like elementToBeClickable to avoid writing custom ExpectedCondition classes.
- Screenshots can be
Let's Build A Blockchain... in 40 minutes!Michel Schudel
The document describes how to build a blockchain in 40 minutes by implementing blocks, transactions, mining, consensus, and propagation. It outlines 4 steps: 1) create the initial blockchain and transactions, 2) mine new blocks by adding transactions and a reward, 3) reach consensus by comparing blockchains' validity, and 4) decentralize by propagating transactions and blocks between nodes. The blockchain can be built following instructions in the linked GitHub repository.
Let's build a blockchain.... in 40 minutes!Michel Schudel
This presentation explains blockchain fundamentals, and contains sheets of java code (demoed live during the original presentation) that show you how to build a blockchain in java.
This document provides an overview of Groovy and Grails. It begins with introductions from the presenter and asks who is familiar with Groovy and Grails. It then outlines some of the key features of Groovy, such as its Java-like syntax, dynamic typing, closures, and meta-programming capabilities. Several examples are provided that demonstrate converting Java code to Groovy. The document also discusses how Groovy can be used to build domain-specific languages, with examples using the AntBuilder and MarkupBuilder. It briefly mentions additional Groovy features and provides positive information about its adoption and support.
This document provides an overview and introduction to Groovy and Grails. It begins with an introduction by the presenter and then provides information on Groovy, including how to write a simple "Hello World" program in Groovy and examples demonstrating Groovy features like closures and metaprogramming. It also covers Grails and what is included in a basic Grails application like generators, domain models, views, controllers, and tag libraries. Key benefits are highlighted but also some risks and limitations.
The document discusses SOLID principles of object-oriented design. It provides examples of code that demonstrate poor adherence to SOLID and ways the code can be refactored to better follow SOLID. Specifically, it shows how to apply the single responsibility principle, open/closed principle, Liskov substitution principle, interface segregation principle and dependency inversion principle to structure code for flexibility, reusability and maintainability.
The document discusses Android Data Binding, which is an official Google library that allows binding UI components in XML layouts to data sources in code. It was introduced in 2015 and is currently in version 1.0-rc4. The document provides examples of using Data Binding to avoid findViewById(), bind views to models, include layouts, use expressions, handle null values, create custom bindings, and convert between types. It recommends references for further reading on Data Binding.
Java. Explicit and Implicit Wait. Testing Ajax ApplicationsМарія Русин
This document provides information on explicit and implicit waits in Selenium. It discusses the differences between explicit and implicit waits, provides code examples for each, and covers related topics like WebDriverWait and ExpectedConditions. Key points include:
- Explicit waits are code defined waits for a certain condition, like using Thread.sleep(). Implicit waits set a default wait time for finding elements.
- WebDriverWait can be used with ExpectedConditions to wait for elements to meet a certain condition like being clickable.
- Implicit waits set a default timeout for finding elements across all searches during the WebDriver session.
- There are convenience methods like elementToBeClickable to avoid writing custom ExpectedCondition classes.
- Screenshots can be
Let's Build A Blockchain... in 40 minutes!Michel Schudel
The document describes how to build a blockchain in 40 minutes by implementing blocks, transactions, mining, consensus, and propagation. It outlines 4 steps: 1) create the initial blockchain and transactions, 2) mine new blocks by adding transactions and a reward, 3) reach consensus by comparing blockchains' validity, and 4) decentralize by propagating transactions and blocks between nodes. The blockchain can be built following instructions in the linked GitHub repository.
Let's build a blockchain.... in 40 minutes!Michel Schudel
This presentation explains blockchain fundamentals, and contains sheets of java code (demoed live during the original presentation) that show you how to build a blockchain in java.
Vaadin 7 is an introduction to the Vaadin framework. Key ideas of Vaadin 7 include rich components, a server+client architecture that runs entirely on the Java server, and embracing the Java programming language. New features in Vaadin 7 include a renewed JavaScript architecture, Sass support, redesigned forms, and built-in high level view management. The roadmap for Vaadin 7.1 includes server push using Atmosphere, a new calendar component, and limited IE 10 support.
These are the slides from a talk I gave at Rubyconf 2014 in San Diego. The talk looks at how we think (or don't think) about the messages passed between objects when we write software and suggests a method for improving them by stealing the idea of interfaces from languages such as Go or Java.
Paintfree Object-Document Mapping for MongoDB by Philipp KrennJavaDayUA
This document summarizes a talk on using Morphia, an object-document mapping library for MongoDB. Morphia allows mapping Java objects to MongoDB documents using annotations, providing an object-relational mapping-style interface for MongoDB. The talk covers Morphia features like collections, indexes, queries, and patterns for normalization and inheritance. While Morphia simplifies development, the speaker notes it does not provide transactions or joins like traditional ORMs.
The document provides an overview of rule engines and the Drools rule engine. It discusses rule formats including Drools Rule Language (DRL), domain-specific languages (DSL), and decision tables. It also covers the ReteOO algorithm, using rules with Java objects, and developing rules using the Drools Eclipse IDE and Guvnor rule management system.
This document provides instructions for setting up a Maven project in Eclipse that uses JSF, RichFaces, JDBC, and the JXL API for Excel export. It includes details on creating the Maven POM file, configuring web.xml, adding dependencies, and includes code snippets for controllers and other classes needed for the project functionality.
Drools was originally created as a rule engine but has expanded to be a full business modeling platform through the integration of business rule management (Drools Expert), business process management (Drools Flow), and complex event processing (Drools Fusion). Drools 5 provides a single platform for developing business logic applications using these complementary techniques. It allows modeling problems as rules, processes, events, and more through tools like Drools Guvnor for managing knowledge bases.
The document describes a presentation by Massimiliano Dessì and Alberto Quario for the Google Technology User Group Sardegna on Scala web frameworks Play, Scalatra, and Spray. The agenda includes an overview of Scalatra, Play Framework, and Spray as well as REST, JSON, routing, templates, actors, sessions, deployment, and testing.
Repository of Presentation:
https://github.com/ArturSkowronski/naivechain-java
Presented:
Bielsko-Biała Java User Group (Bielsko-Biała JUG), Kraków, 22.02.2018 (https://www.meetup.com/pl-PL/Bielsko-Biala-JUG/events/247764157/)
Biorąc pod uwagę szalone skoki (i spadki) wszelkich kryptowalut, Blockchain jest na językach wszystkich developerów. Jednocześnie ilość mitów, klechd i legend jakimi obrósł osiągnęła już rozmiary które warto nieco uporządkować. W ramach tej prezentacji postaram się rozwiać niektóre z nich, a dodatkowo pokazać Blockchain od strony stricte programistycznej - w ramach sesji Live Codingu zaimplementujemy uproszczony, ale kompletny wariant Blockchaina, zbliżony do tego znanego z Bitcoina. Wszystko to używając naszej ulubionej Javy. Dodatkowo, postaram się wskazać jej wady i zalety i wytłumaczyć, dlaczego jak grzyby po deszczu zewsząd wyrastają alternatywne implementacje mające być lekiem na całe zło (i dlaczego zwykle nie są). Mam nadzieje uczynić całość interaktywną - jeżeli ktoś ma jakieś pytania będę się starał na nie odpowiedzieć podczas prezentacji. Moim celem jest żeby każdy wyszedł z lepszą świadomością tego czym Blockchain jest, a co nawet najważniejsze - czym z pewnością Blockchain nie jest. ___
Artur to developer z serduchem rozdartym między JVM (całościowo) i nowoczesnym JavaScript - przy czym. z bardziej dojrzałymi planami matrymonialnymi związanymi z tą pierwszą platformą.
Nie może się powstrzymać przed testowaniem nowych technologii, nawet jeśli czasem wybuchają mu w twarz w wyniku nadużycia w projektach szpachli i taśmy klejącej.
Obecnie członek zespołu VirtusLab realizujący projekty dla Tesco Technology.
Część Dynamicznego Duetu którego lepszą połową jest pluszowa foka (ᵔᴥᵔ).
Get Back in Control of Your SQL with jOOQ at #Java2DaysLukas Eder
Get Back in Control of Your SQL with jOOQ, at #Java2Days.
SQL is a powerful and highly expressive language for queries against relational databases. SQL is established, standardised and hardly challenged by alternative querying languages. Nonetheless, in the Java ecosystem, there had been few relevant steps forward since JDBC to better integrate SQL into Java. All attention was given to object-relational mapping and language abstractions on a higher level, such as OQL, HQL, JPQL, CriteriaQuery. In the mean time, these abstractions have become almost as complex as SQL itself, regardless of the headaches they're giving to DBAs who can no longer patch the generated SQL.
jOOQ is a dual-licensed Open Source product filling this gap. It implements SQL itself as an internal domain-specific language in Java, allowing for the typesafe construction and execution of SQL statements of arbitrary complexity. This includes nested selects, derived tables, joins, semi-joins, anti-joins, self-joins, aliasing, as well as many vendor-specific extensions such as stored procedures, arrays, user-defined types, recursive SQL, grouping sets, pivot tables, window functions and many other OLAP features. jOOQ also includes a source code generator allowing you to compile queries in modern IDEs such as Eclipse very efficiently.
jOOQ is a good choice in a Java application where SQL and the specific relational database are important. It is an alternative when JPA / Hibernate abstract too much, JDBC too little. It shows, how a modern domain-specific language can greatly increase developer productivity, internalising SQL into Java.
An idea of how to make JavaScript testable, presented at Stir Trek 2011. The world of JavaScript frameworks has changed greatly since then, but I still agree with the concepts.
Venturing Into The Wild: A .NET Developer's Experience As A Ruby DeveloperJon Kruger
This document contains information about Ruby on Rails and comparisons to .NET from an independent consultant. It includes code samples in both Ruby on Rails and C#/.NET, as well as recommendations for learning resources. Quotes from developers discuss benefits of Ruby like test-driven development and less restrictive coding.
Drupal has some interesting ways to control access for content. I was forced to learn about all of them to be able to implement a custom security widget. Once you know how everything fits into each other it is fun to work with, but it took me more effort than I expected. I bumped into many walls. This is why I like to guide you through this proccess.
I will talk about all the wrong paths I took to get where I had to be. This way I will cover multiple use cases. If you are a developer and want to know more about security, this could be an interesting session for you.
The main topics I will talk about are node_access and node_grants. I also added a custom layer for my project. If you know more about this it could be fun to open a discussion about different implementations.
MySQL Without the SQL - Oh My! -> MySQL Document Store -- Confoo.CA 2019Dave Stokes
MySQL an be used as a NoSQL JSON Document Store as well as its well known ability as a SQL Relational Data Base. This presentation covers why you would want to use NoSQL and JSON and how to combine it what the relational data you already have
This document discusses HTML5 security threats and defenses. It covers the history of HTML standards, new HTML5 features, and vulnerabilities like XSS, cookie/storage stealing, SQL injection, and more. It also provides tools for analyzing HTML5 threats and examples of real attacks exploiting features like WebSQL, local storage, and cross-origin requests. Defenses include input validation, avoiding sensitive data storage, and configuring CORS headers appropriately.
After enormous cryptocurrencies value gains this year, Blockchain - their underneath algorithm is a topic that gets both a lot of exposure and confusion among developers. In this presentation, I’m going to create a glossary that will guide you in further exploration and sort out your knowledge.
We will discuss not only what Blockchain is but also why it is (or isn’t) the big thing. Everything using easy to grasp JavaScript code examples.
Prepare yourself for surfing on dangerous hype-wave - it’s easy to drown.
Repository of Presentation:
https://github.com/ArturSkowronski/naivechain
Presented:
4Developers Łódź (https://lodz.4developers.org.pl), Kraków, 09.11.2017
KrakowJS (http://conf.krakowjs.pl/), Krakow, 29.09.2017
JBoss Drools - Open-Source Business Logic Platformelliando dias
Drools is an open-source business rules management system. It includes Drools Expert for rule engines, a Drools Eclipse IDE for rule authoring and debugging, Drools Guvnor for web-based rule management, Drools Flow for combining business processes and rules, and Drools Fusion for complex event processing. The Drools rule language allows specifying conditional patterns and actions in a declarative way. A rule engine uses a Rete algorithm to efficiently match rules against working memory facts.
This talk will look at the features and changes in the Node Access system for Drupal 7.
Out of the box, Drupal is a great system for creating and managing content. However, there are cases where your needs require additional requirements for which users can create, view, edit and delete content. To solve this problem, Drupal provides its Node Access system.
Node Access provides an API for determining the grants, or permissions, that a user has for each node. By understanding how these grants work, a module developer can create and enforce complex access rules.
We will cover some (or all) of the following topics.
- Node Access compared to user_access() and other permission checks.
- How Drupal grants node permissions.
- The node_access() function.
- hook_node_access() compared to {node_access}.
- Controlling permission to create content.
- Using hook_node_access().
- When to write a Node Access module.
- The {node_access} table and its role.
- Defining your moduleâs access rules.
- Using hook_node_access_records().
- Using hook_node_grants().
- Rebuilding the {node_access} table.
- Modifying the behavior of other modules.
- Using hook_node_access_records_alter().
- Using hook_node_grants_alter().
- Testing and debugging you module.
- Using Devel Node Access
- Roadmap for Drupal 8
Ken Rickard is the maintainer of the Domain Access module and wrote several of the patches for Node Access in Drupal 7.
Hacking MongoDB at RelateIQ, A Salesforce CompanyMongoDB
Learn how RelateIQ takes advantage of MongoDB's tooling and oplog to drive near-realtime features and infrastructure for their customers. In this session we will cover how we exploit Morphia to make at-rest encryption of critical data both DRY and easy. We will also be covering our consumption of MongoDB's unsung hero, the oplog, which drives a significant portion of our back-end computing systems. While both projects are simple enough to be the product of Hackdays (a time-honored tradition at RelateIQ), they've blossomed into critical components of our infrastructure.
An introduction to Figaro, the XML Database for the .NET Framework, and a solution overview of an ASP.NET MembershipProvider built with the XML database.
The document discusses an Android code puzzles presentation. It includes:
- Biographies of two presenters and their paths working with Android.
- An introduction saying the presentation will show code snippets that may or may not work correctly, and to look out for hidden issues. All puzzles will run on Android 4.1 Jelly Bean.
- The first code puzzle which adds a fragment but returns null from onCreateView, causing an empty screen initially but a crash after rotation.
- Additional puzzles and discussions about fragment lifecycles, platform dependencies, and async tasks and the activity lifecycle.
Is your web app drowning in a sea of JavaScript? Has your client-side codebase grown from "a snippet here and there" to "more JavaScript than HTML"? Do you find yourself writing one-off snippets instead of generalized components? You're not the only one. Learn about a handful of strategies you can use to keep your JavaScript codebase lean, modular, and flexible. We'll cover all the major pain points — MVC, templates, persisting state, namespacing, graceful error handling, client/server communication, and separation of concerns. And we'll cover how to do all this incrementally so that you don't have to redo everything from scratch.
Vaadin 7 is an introduction to the Vaadin framework. Key ideas of Vaadin 7 include rich components, a server+client architecture that runs entirely on the Java server, and embracing the Java programming language. New features in Vaadin 7 include a renewed JavaScript architecture, Sass support, redesigned forms, and built-in high level view management. The roadmap for Vaadin 7.1 includes server push using Atmosphere, a new calendar component, and limited IE 10 support.
These are the slides from a talk I gave at Rubyconf 2014 in San Diego. The talk looks at how we think (or don't think) about the messages passed between objects when we write software and suggests a method for improving them by stealing the idea of interfaces from languages such as Go or Java.
Paintfree Object-Document Mapping for MongoDB by Philipp KrennJavaDayUA
This document summarizes a talk on using Morphia, an object-document mapping library for MongoDB. Morphia allows mapping Java objects to MongoDB documents using annotations, providing an object-relational mapping-style interface for MongoDB. The talk covers Morphia features like collections, indexes, queries, and patterns for normalization and inheritance. While Morphia simplifies development, the speaker notes it does not provide transactions or joins like traditional ORMs.
The document provides an overview of rule engines and the Drools rule engine. It discusses rule formats including Drools Rule Language (DRL), domain-specific languages (DSL), and decision tables. It also covers the ReteOO algorithm, using rules with Java objects, and developing rules using the Drools Eclipse IDE and Guvnor rule management system.
This document provides instructions for setting up a Maven project in Eclipse that uses JSF, RichFaces, JDBC, and the JXL API for Excel export. It includes details on creating the Maven POM file, configuring web.xml, adding dependencies, and includes code snippets for controllers and other classes needed for the project functionality.
Drools was originally created as a rule engine but has expanded to be a full business modeling platform through the integration of business rule management (Drools Expert), business process management (Drools Flow), and complex event processing (Drools Fusion). Drools 5 provides a single platform for developing business logic applications using these complementary techniques. It allows modeling problems as rules, processes, events, and more through tools like Drools Guvnor for managing knowledge bases.
The document describes a presentation by Massimiliano Dessì and Alberto Quario for the Google Technology User Group Sardegna on Scala web frameworks Play, Scalatra, and Spray. The agenda includes an overview of Scalatra, Play Framework, and Spray as well as REST, JSON, routing, templates, actors, sessions, deployment, and testing.
Repository of Presentation:
https://github.com/ArturSkowronski/naivechain-java
Presented:
Bielsko-Biała Java User Group (Bielsko-Biała JUG), Kraków, 22.02.2018 (https://www.meetup.com/pl-PL/Bielsko-Biala-JUG/events/247764157/)
Biorąc pod uwagę szalone skoki (i spadki) wszelkich kryptowalut, Blockchain jest na językach wszystkich developerów. Jednocześnie ilość mitów, klechd i legend jakimi obrósł osiągnęła już rozmiary które warto nieco uporządkować. W ramach tej prezentacji postaram się rozwiać niektóre z nich, a dodatkowo pokazać Blockchain od strony stricte programistycznej - w ramach sesji Live Codingu zaimplementujemy uproszczony, ale kompletny wariant Blockchaina, zbliżony do tego znanego z Bitcoina. Wszystko to używając naszej ulubionej Javy. Dodatkowo, postaram się wskazać jej wady i zalety i wytłumaczyć, dlaczego jak grzyby po deszczu zewsząd wyrastają alternatywne implementacje mające być lekiem na całe zło (i dlaczego zwykle nie są). Mam nadzieje uczynić całość interaktywną - jeżeli ktoś ma jakieś pytania będę się starał na nie odpowiedzieć podczas prezentacji. Moim celem jest żeby każdy wyszedł z lepszą świadomością tego czym Blockchain jest, a co nawet najważniejsze - czym z pewnością Blockchain nie jest. ___
Artur to developer z serduchem rozdartym między JVM (całościowo) i nowoczesnym JavaScript - przy czym. z bardziej dojrzałymi planami matrymonialnymi związanymi z tą pierwszą platformą.
Nie może się powstrzymać przed testowaniem nowych technologii, nawet jeśli czasem wybuchają mu w twarz w wyniku nadużycia w projektach szpachli i taśmy klejącej.
Obecnie członek zespołu VirtusLab realizujący projekty dla Tesco Technology.
Część Dynamicznego Duetu którego lepszą połową jest pluszowa foka (ᵔᴥᵔ).
Get Back in Control of Your SQL with jOOQ at #Java2DaysLukas Eder
Get Back in Control of Your SQL with jOOQ, at #Java2Days.
SQL is a powerful and highly expressive language for queries against relational databases. SQL is established, standardised and hardly challenged by alternative querying languages. Nonetheless, in the Java ecosystem, there had been few relevant steps forward since JDBC to better integrate SQL into Java. All attention was given to object-relational mapping and language abstractions on a higher level, such as OQL, HQL, JPQL, CriteriaQuery. In the mean time, these abstractions have become almost as complex as SQL itself, regardless of the headaches they're giving to DBAs who can no longer patch the generated SQL.
jOOQ is a dual-licensed Open Source product filling this gap. It implements SQL itself as an internal domain-specific language in Java, allowing for the typesafe construction and execution of SQL statements of arbitrary complexity. This includes nested selects, derived tables, joins, semi-joins, anti-joins, self-joins, aliasing, as well as many vendor-specific extensions such as stored procedures, arrays, user-defined types, recursive SQL, grouping sets, pivot tables, window functions and many other OLAP features. jOOQ also includes a source code generator allowing you to compile queries in modern IDEs such as Eclipse very efficiently.
jOOQ is a good choice in a Java application where SQL and the specific relational database are important. It is an alternative when JPA / Hibernate abstract too much, JDBC too little. It shows, how a modern domain-specific language can greatly increase developer productivity, internalising SQL into Java.
An idea of how to make JavaScript testable, presented at Stir Trek 2011. The world of JavaScript frameworks has changed greatly since then, but I still agree with the concepts.
Venturing Into The Wild: A .NET Developer's Experience As A Ruby DeveloperJon Kruger
This document contains information about Ruby on Rails and comparisons to .NET from an independent consultant. It includes code samples in both Ruby on Rails and C#/.NET, as well as recommendations for learning resources. Quotes from developers discuss benefits of Ruby like test-driven development and less restrictive coding.
Drupal has some interesting ways to control access for content. I was forced to learn about all of them to be able to implement a custom security widget. Once you know how everything fits into each other it is fun to work with, but it took me more effort than I expected. I bumped into many walls. This is why I like to guide you through this proccess.
I will talk about all the wrong paths I took to get where I had to be. This way I will cover multiple use cases. If you are a developer and want to know more about security, this could be an interesting session for you.
The main topics I will talk about are node_access and node_grants. I also added a custom layer for my project. If you know more about this it could be fun to open a discussion about different implementations.
MySQL Without the SQL - Oh My! -> MySQL Document Store -- Confoo.CA 2019Dave Stokes
MySQL an be used as a NoSQL JSON Document Store as well as its well known ability as a SQL Relational Data Base. This presentation covers why you would want to use NoSQL and JSON and how to combine it what the relational data you already have
This document discusses HTML5 security threats and defenses. It covers the history of HTML standards, new HTML5 features, and vulnerabilities like XSS, cookie/storage stealing, SQL injection, and more. It also provides tools for analyzing HTML5 threats and examples of real attacks exploiting features like WebSQL, local storage, and cross-origin requests. Defenses include input validation, avoiding sensitive data storage, and configuring CORS headers appropriately.
After enormous cryptocurrencies value gains this year, Blockchain - their underneath algorithm is a topic that gets both a lot of exposure and confusion among developers. In this presentation, I’m going to create a glossary that will guide you in further exploration and sort out your knowledge.
We will discuss not only what Blockchain is but also why it is (or isn’t) the big thing. Everything using easy to grasp JavaScript code examples.
Prepare yourself for surfing on dangerous hype-wave - it’s easy to drown.
Repository of Presentation:
https://github.com/ArturSkowronski/naivechain
Presented:
4Developers Łódź (https://lodz.4developers.org.pl), Kraków, 09.11.2017
KrakowJS (http://conf.krakowjs.pl/), Krakow, 29.09.2017
JBoss Drools - Open-Source Business Logic Platformelliando dias
Drools is an open-source business rules management system. It includes Drools Expert for rule engines, a Drools Eclipse IDE for rule authoring and debugging, Drools Guvnor for web-based rule management, Drools Flow for combining business processes and rules, and Drools Fusion for complex event processing. The Drools rule language allows specifying conditional patterns and actions in a declarative way. A rule engine uses a Rete algorithm to efficiently match rules against working memory facts.
This talk will look at the features and changes in the Node Access system for Drupal 7.
Out of the box, Drupal is a great system for creating and managing content. However, there are cases where your needs require additional requirements for which users can create, view, edit and delete content. To solve this problem, Drupal provides its Node Access system.
Node Access provides an API for determining the grants, or permissions, that a user has for each node. By understanding how these grants work, a module developer can create and enforce complex access rules.
We will cover some (or all) of the following topics.
- Node Access compared to user_access() and other permission checks.
- How Drupal grants node permissions.
- The node_access() function.
- hook_node_access() compared to {node_access}.
- Controlling permission to create content.
- Using hook_node_access().
- When to write a Node Access module.
- The {node_access} table and its role.
- Defining your moduleâs access rules.
- Using hook_node_access_records().
- Using hook_node_grants().
- Rebuilding the {node_access} table.
- Modifying the behavior of other modules.
- Using hook_node_access_records_alter().
- Using hook_node_grants_alter().
- Testing and debugging you module.
- Using Devel Node Access
- Roadmap for Drupal 8
Ken Rickard is the maintainer of the Domain Access module and wrote several of the patches for Node Access in Drupal 7.
Hacking MongoDB at RelateIQ, A Salesforce CompanyMongoDB
Learn how RelateIQ takes advantage of MongoDB's tooling and oplog to drive near-realtime features and infrastructure for their customers. In this session we will cover how we exploit Morphia to make at-rest encryption of critical data both DRY and easy. We will also be covering our consumption of MongoDB's unsung hero, the oplog, which drives a significant portion of our back-end computing systems. While both projects are simple enough to be the product of Hackdays (a time-honored tradition at RelateIQ), they've blossomed into critical components of our infrastructure.
An introduction to Figaro, the XML Database for the .NET Framework, and a solution overview of an ASP.NET MembershipProvider built with the XML database.
The document discusses an Android code puzzles presentation. It includes:
- Biographies of two presenters and their paths working with Android.
- An introduction saying the presentation will show code snippets that may or may not work correctly, and to look out for hidden issues. All puzzles will run on Android 4.1 Jelly Bean.
- The first code puzzle which adds a fragment but returns null from onCreateView, causing an empty screen initially but a crash after rotation.
- Additional puzzles and discussions about fragment lifecycles, platform dependencies, and async tasks and the activity lifecycle.
Is your web app drowning in a sea of JavaScript? Has your client-side codebase grown from "a snippet here and there" to "more JavaScript than HTML"? Do you find yourself writing one-off snippets instead of generalized components? You're not the only one. Learn about a handful of strategies you can use to keep your JavaScript codebase lean, modular, and flexible. We'll cover all the major pain points — MVC, templates, persisting state, namespacing, graceful error handling, client/server communication, and separation of concerns. And we'll cover how to do all this incrementally so that you don't have to redo everything from scratch.
The document discusses several software design patterns and concepts used in Zend Framework 3 including singleton, dependency injection, factory, data mapper, caching, and logging. It provides definitions and examples of how each pattern addresses issues like high cohesion, loose coupling, and testability. Key benefits are outlined such as reusability, reduced dependencies, and more readable code.
Singletons in PHP - Why they are bad and how you can eliminate them from your...go_oh
While Singletons have become a Pattern-Non-Grata over the years, you still find it surprisingly often in PHP applications and frameworks. This talk will explain what the Singleton pattern is, how it works in PHP and why you should avoid it in your application.
Learning jQuery made exciting in an interactive session by one of our team me...Thinqloud
- jQuery is a JavaScript library that simplifies HTML document traversal and manipulation, event handling, animation, and Ajax interactions for rapid web development. It works across all major browsers.
- jQuery UI provides interactive widgets, effects, and themes that can be used to build highly interactive web applications. It is built on top of the jQuery library and uses JavaScript, CSS, and HTML. Popular widgets include accordion, autocomplete, datepicker, dialog, and slider.
- To use jQuery UI, developers include the jQuery-ui.js and jquery-ui.css files in their web pages. It offers interactions, widgets, effects, themes and utilities that enhance the user experience of applications.
The document provides an overview of the Android infrastructure and development environment. It discusses:
- The layers of an Android application including presentation, application logic, and domain layers.
- Key aspects of the Android runtime including the Dalvik VM, app lifecycle, resources and context handling.
- Libraries that help with common tasks like compatibility, fragments, networking and dependency injection including the Android Support Library, ActionBarSherlock, Retrofit, Dagger and RoboGuice.
- Alternatives for data storage like SQLite and ORM libraries like ORMLite and GreenDAO.
- Options for testing Android apps using the DVM, JVM, Robotium and Robolectric.
The document provides an overview of the Android infrastructure and key concepts:
(1) It describes the layers of an Android application including the presentation layer, application logic layer, and domain layer.
(2) It explains important Android concepts such as the Android runtime environment, Dalvik virtual machine, application lifecycle and activities, and use of contexts.
(3) It discusses alternatives for common tasks like dependency injection with RoboGuice and Dagger, handling resources and views with ButterKnife and AndroidAnnotations, and accessing data with SQLite and ORMLite.
(4) It also briefly covers testing approaches on the DVM and JVM using AndroidTestCase, Robotium, and Robolectric
The cost of learning - advantage of mixer2Y Watanabe
Mixer2 is a template engine for Java that allows developers to build user interfaces using plain HTML and CSS while keeping the view logic in Java code. This reduces the learning curve compared to other template languages. Mixer2 uses a convention over configuration approach and leverages technologies developers already know like Java, HTML/CSS, and Thymeleaf attributes to make templates easier to write and maintain.
This document discusses using Groovy to build domain-specific languages (DSLs) for creating complex object graphs, as demonstrated through a case study of rewriting a Chicago budget book generation application. Groovy is well-suited for DSL development due to its dynamic and metaprogramming features. The document presents increasingly Groovy-centric approaches to building the budget book, culminating in a DSL implemented with a Groovy Builder that allows generating the book object model declaratively through closures in a natural and readable manner.
Java EE 6 CDI Integrates with Spring & JSFJiayun Zhou
This document discusses integrating Java Contexts and Dependency Injection (CDI) with other Java technologies like Spring and JavaServer Faces (JSF). It covers CDI concepts like the Inversion of Control pattern and dependency injection. It also provides examples of using CDI with Spring, integrating CDI and JSF, and using CDI interceptors. The document recommends some libraries for CDI integration and provides sample code links.
The document discusses test integration and provides examples of how to use the jIntegrity library to simplify database integration testing. It shows how jIntegrity can load test data from XML files, execute SQL statements to insert, update, delete and clean data, and be configured through properties files. jIntegrity aims to provide flexibility, organization and reuse through its API and helper classes to help automate common database operations for integration testing.
Single page webapps & javascript-testingsmontanari
This document discusses testing single page web applications built with AngularJS. It covers using fixtures to stub HTTP responses during functional testing. Static fixtures can return pre-defined responses from files, while dynamic fixtures allow generating responses programmatically. The jasmine.test.SinonFakeServer wrapper facilitates advanced dynamic fixtures by intercepting AJAX requests and returning fake responses, simulating network delays. This allows testing the application without changing code to use stubbed responses during tests.
SQLAdria 2009 presentation's slides about our experience with Maven and SQLJ. It delves in some details about SQLJ and performance comparion between SQLJ and JDBC with prepared statements. It also shows surprising results for what concerns performances of (DB2) SQL PL procedures
Improving android experience for both users and developersPavel Lahoda
Android UI and User Experience has changed dramatically in the recent version(s) and while users generally enjoy the new features, there are still several areas that are left to application-level-DIY-patterns. For developers, this is double challenge, they want to provide users with the bleeding edge UI patterns and at the same time, they have to deal with evolving API, that sometimes changes dramatically.
Presentation covers the gotchas developer might face dealing with ever-moving Android API, and how to utilize Java language and the tools it have to make the experience for developer more pleasant. Typical trends in the API will get analyzed and divided into several areas or "patterns", discussing typical scenarios how these components are designed and implemented.
This talk will propose several such UI patterns, that will compete to become "de facto" standards and details on the implementation, including possible impact on existing API as we have both end users and developers in mind.
The list of patterns/areas discussed in the talk include following :
ActionBar
ListView
TimePicker
KineticGestureComponent
The document discusses opportunities to improve the Android user experience through more flexible and responsive layouts, improved action bar designs, and innovative input methods like gesture and sensor-based interactions. It presents examples of custom view groups and adapters that provide flexible resizing and binding of data to views. The talk argues the action bar could be improved through more consistent behavior and use of available screen space. Ideas for new date/time pickers and gesture-based interactions are also proposed to enhance the Android experience.
The document discusses domain-driven design concepts such as domain models, entities, value objects, repositories, and services. It provides examples of how to model an IP address as a value object and a user as an entity. It emphasizes that domain models express the core domain concepts and that business logic should not be placed in controllers or entities, but rather in services and repositories.
Backbone is a JavaScript framework that provides models, collections, and views for building single-page web applications. Models contain key-value data and custom events, and collections provide a rich API for working with collections of models. Views handle user interface elements and connect events to methods. The document describes how Backbone components like models, collections, routers and views work together to build a simple todo list application.
Gradient descent is the algorithm at the heart of many machine learning problems. In this talk, I’ll introduce the algorithm and code it up from scratch to apply it to a toy linear regression problem on the relationship between videogame metacritic scores and sales.
The document discusses the complexity of setting up dependency injection with Dagger and presents a hypothetical scenario where a developer needs to inject an AnalyticsHelper class. It raises numerous questions that the developer would need to consider such as what module the class belongs to, how to scope it, whether qualifiers or late binding are needed, and ensures related dependencies are provided. It emphasizes that dependency injection with Dagger can quickly become complicated and problematic to set up correctly.
The document provides an introduction to RxJava, a library for composing asynchronous and event-based programs using observable sequences for the Java VM. It discusses how RxJava allows for declaratively composing sequences of data and/or events in a way that is similar to functional programming concepts like map, filter, and reduce. This enables concise yet powerful representations of asynchronous data streams and event processing.
This document discusses improving testability of Android applications by reducing coupling between components. It presents an example of an Android MapActivity that is tightly coupled to MapFragment and Toast, making it difficult to test. The document then introduces an OnPermissionResultListener class that receives permission results and calls methods on a PermittedView interface, decoupling the logic from specific views and allowing it to be more easily tested. This improves testability by removing direct dependencies between classes.
The document discusses how to write testable code through the use of seams. It explains that seams allow code to be altered without changing the code itself, improving testability. Dependency injection creates object seams by decoupling classes, and model-view-presenter architecture leverages this. Build variants introduce link seams. Without seams, it can be difficult to arrange objects and assert outcomes in tests. Examples show refactoring code to introduce seams, like using interfaces, which allows dependencies to be mocked and behavior verified.
Slides from a talk I gave at a recent react orlando meetup. We talked about Wix's "greybox" testing library for react native called "detox."
We'll also be covering testing practices like mocking, stubbing, and the page object pattern. Even if you're not working with react native, these patterns and practices are good to know!
Tested android apps are better apps, but building them is tough. This talk is about how to write testable Android applications. Testable apps have seams, which you can get using DI and Build Variants.
What to do when you have a perfect model for your software but you are constrained by an imperfect business model?
This talk explores the challenges of bringing modelling rigour to the business and strategy levels, and talking to your non-technical counterparts in the process.
Orca: Nocode Graphical Editor for Container OrchestrationPedro J. Molina
Tool demo on CEDI/SISTEDES/JISBD2024 at A Coruña, Spain. 2024.06.18
"Orca: Nocode Graphical Editor for Container Orchestration"
by Pedro J. Molina PhD. from Metadev
Streamlining End-to-End Testing Automation with Azure DevOps Build & Release Pipelines
Automating end-to-end (e2e) test for Android and iOS native apps, and web apps, within Azure build and release pipelines, poses several challenges. This session dives into the key challenges and the repeatable solutions implemented across multiple teams at a leading Indian telecom disruptor, renowned for its affordable 4G/5G services, digital platforms, and broadband connectivity.
Challenge #1. Ensuring Test Environment Consistency: Establishing a standardized test execution environment across hundreds of Azure DevOps agents is crucial for achieving dependable testing results. This uniformity must seamlessly span from Build pipelines to various stages of the Release pipeline.
Challenge #2. Coordinated Test Execution Across Environments: Executing distinct subsets of tests using the same automation framework across diverse environments, such as the build pipeline and specific stages of the Release Pipeline, demands flexible and cohesive approaches.
Challenge #3. Testing on Linux-based Azure DevOps Agents: Conducting tests, particularly for web and native apps, on Azure DevOps Linux agents lacking browser or device connectivity presents specific challenges in attaining thorough testing coverage.
This session delves into how these challenges were addressed through:
1. Automate the setup of essential dependencies to ensure a consistent testing environment.
2. Create standardized templates for executing API tests, API workflow tests, and end-to-end tests in the Build pipeline, streamlining the testing process.
3. Implement task groups in Release pipeline stages to facilitate the execution of tests, ensuring consistency and efficiency across deployment phases.
4. Deploy browsers within Docker containers for web application testing, enhancing portability and scalability of testing environments.
5. Leverage diverse device farms dedicated to Android, iOS, and browser testing to cover a wide range of platforms and devices.
6. Integrate AI technology, such as Applitools Visual AI and Ultrafast Grid, to automate test execution and validation, improving accuracy and efficiency.
7. Utilize AI/ML-powered central test automation reporting server through platforms like reportportal.io, providing consolidated and real-time insights into test performance and issues.
These solutions not only facilitate comprehensive testing across platforms but also promote the principles of shift-left testing, enabling early feedback, implementing quality gates, and ensuring repeatability. By adopting these techniques, teams can effectively automate and execute tests, accelerating software delivery while upholding high-quality standards across Android, iOS, and web applications.
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...The Third Creative Media
"Navigating Invideo: A Comprehensive Guide" is an essential resource for anyone looking to master Invideo, an AI-powered video creation tool. This guide provides step-by-step instructions, helpful tips, and comparisons with other AI video creators. Whether you're a beginner or an experienced video editor, you'll find valuable insights to enhance your video projects and bring your creative ideas to life.
Enhanced Screen Flows UI/UX using SLDS with Tom KittPeter Caitens
Join us for an engaging session led by Flow Champion, Tom Kitt. This session will dive into a technique of enhancing the user interfaces and user experiences within Screen Flows using the Salesforce Lightning Design System (SLDS). This technique uses Native functionality, with No Apex Code, No Custom Components and No Managed Packages required.
How GenAI Can Improve Supplier Performance Management.pdfZycus
Data Collection and Analysis with GenAI enables organizations to gather, analyze, and visualize vast amounts of supplier data, identifying key performance indicators and trends. Predictive analytics forecast future supplier performance, mitigating risks and seizing opportunities. Supplier segmentation allows for tailored management strategies, optimizing resource allocation. Automated scorecards and reporting provide real-time insights, enhancing transparency and tracking progress. Collaboration is fostered through GenAI-powered platforms, driving continuous improvement. NLP analyzes unstructured feedback, uncovering deeper insights into supplier relationships. Simulation and scenario planning tools anticipate supply chain disruptions, supporting informed decision-making. Integration with existing systems enhances data accuracy and consistency. McKinsey estimates GenAI could deliver $2.6 trillion to $4.4 trillion in economic benefits annually across industries, revolutionizing procurement processes and delivering significant ROI.
The Rising Future of CPaaS in the Middle East 2024Yara Milbes
Explore "The Rising Future of CPaaS in the Middle East in 2024" with this comprehensive PPT presentation. Discover how Communication Platforms as a Service (CPaaS) is transforming communication across various sectors in the Middle East.
Consistent toolbox talks are critical for maintaining workplace safety, as they provide regular opportunities to address specific hazards and reinforce safe practices.
These brief, focused sessions ensure that safety is a continual conversation rather than a one-time event, which helps keep safety protocols fresh in employees' minds. Studies have shown that shorter, more frequent training sessions are more effective for retention and behavior change compared to longer, infrequent sessions.
Engaging workers regularly, toolbox talks promote a culture of safety, empower employees to voice concerns, and ultimately reduce the likelihood of accidents and injuries on site.
The traditional method of conducting safety talks with paper documents and lengthy meetings is not only time-consuming but also less effective. Manual tracking of attendance and compliance is prone to errors and inconsistencies, leading to gaps in safety communication and potential non-compliance with OSHA regulations. Switching to a digital solution like Safelyio offers significant advantages.
Safelyio automates the delivery and documentation of safety talks, ensuring consistency and accessibility. The microlearning approach breaks down complex safety protocols into manageable, bite-sized pieces, making it easier for employees to absorb and retain information.
This method minimizes disruptions to work schedules, eliminates the hassle of paperwork, and ensures that all safety communications are tracked and recorded accurately. Ultimately, using a digital platform like Safelyio enhances engagement, compliance, and overall safety performance on site. https://safelyio.com/
Ensuring Efficiency and Speed with Practical Solutions for Clinical OperationsOnePlan Solutions
Clinical operations professionals encounter unique challenges. Balancing regulatory requirements, tight timelines, and the need for cross-functional collaboration can create significant internal pressures. Our upcoming webinar will introduce key strategies and tools to streamline and enhance clinical development processes, helping you overcome these challenges.
Boost Your Savings with These Money Management AppsJhone kinadey
A money management app can transform your financial life by tracking expenses, creating budgets, and setting financial goals. These apps offer features like real-time expense tracking, bill reminders, and personalized insights to help you save and manage money effectively. With a user-friendly interface, they simplify financial planning, making it easier to stay on top of your finances and achieve long-term financial stability.
In this infographic, we have explored cost-effective strategies for iOS app development, focusing on building high-quality apps within a budget. Key points covered include prioritizing essential features, leveraging existing tools and libraries, adopting cross-platform development approaches, optimizing for a Minimum Viable Product (MVP), and integrating with cloud services and third-party APIs. By implementing these strategies, businesses and developers can create functional and engaging iOS apps while minimizing development costs and time-to-market.
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISTier1 app
Are you ready to unlock the secrets hidden within Java thread dumps? Join us for a hands-on session where we'll delve into effective troubleshooting patterns to swiftly identify the root causes of production problems. Discover the right tools, techniques, and best practices while exploring *real-world case studies of major outages* in Fortune 500 enterprises. Engage in interactive lab exercises where you'll have the opportunity to troubleshoot thread dumps and uncover performance issues firsthand. Join us and become a master of Java thread dump analysis!
Flutter vs. React Native: A Detailed Comparison for App Development in 2024dhavalvaghelanectarb
Choosing the right framework for your cross-platform mobile app can be a tough decision. Both Flutter and React Native offer compelling features and have earned their place in the development world. Here is a detailed comparison to help you weigh their strengths and weaknesses. Here are the pros and cons of developing mobile apps in React Native vs Flutter.
Building API data products on top of your real-time data infrastructureconfluent
This talk and live demonstration will examine how Confluent and Gravitee.io integrate to unlock value from streaming data through API products.
You will learn how data owners and API providers can document, secure data products on top of Confluent brokers, including schema validation, topic routing and message filtering.
You will also see how data and API consumers can discover and subscribe to products in a developer portal, as well as how they can integrate with Confluent topics through protocols like REST, Websockets, Server-sent Events and Webhooks.
Whether you want to monetize your real-time data, enable new integrations with partners, or provide self-service access to topics through various protocols, this webinar is for you!
11. class Human {
private final Water water;
Human(Water water) {
this.water = water;
}
}
12. What is DI?
Why would I want DI?
Why would I want Dagger to do DI?
How do I Dagger?
How can Dagger help me keep up?
13. What is DI?
Why would I want DI?
Why would I want Dagger to do DI?
How do I Dagger?
How can Dagger help me keep up?
14.
15. 1. Leverage OO for faster, cleaner implementation
2. Leverage tests to ensure changes didn’t break anything
16. 1. Leverage OO for faster, cleaner implementation
2. Leverage tests to ensure changes didn’t break anything
17. –Alan Kay, The Computer Revolution
hasn’t Happened Yet
“any particular implementation
is making pragmatic choices
and these…choices are likely
not to be able to cover all of
the cases at the level of
efficiency and…richness
required…this is standard OOP
lore…we need to have
different ways of dealing with
the same concepts in a way
that does not distract the
programmer”
27. 1. Leverage OO for faster, cleaner implementation
2. Leverage tests to ensure changes didn’t break anything
28. 1. Leverage OO for faster, cleaner implementation
2. Leverage tests to ensure changes didn’t break anything
29. …The trick now was to make
space for the new functionality
without breaking anything that
already worked…After the
addition of a few
unimplemented operations…
the bulk of the tests passed. By
the end of the day, all of the
tests were passing…In two days,
the potential market was
multiplied several fold…”
–Kent Beck, TDD By Example
30.
31. What is DI?
Why would I want DI?
Why would I want Dagger to do DI?
How do I Dagger?
How can Dagger help with testing?
32. What is DI?
Why would I want DI?
Why would I want Dagger to do DI?
How do I Dagger?
How can Dagger help me keep up?
38. class LockDashboard extends Fragment {
Presenter locklistPresenter;
@Override public View onCreateView(
LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final Context context = getContext();
Database database = new Database(context);
LocksRepository locksRepository =
new LocksRepository(database, getLoaderManager());
lockListPresenter =
new Presenter(locksRepository);
}
}
39. class LockDashboard extends Fragment {
Presenter locklistPresenter;
@Override public View onCreateView(
LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final Context context = getContext();
Database database = new Database(context);
LocksRepository locksRepository =
new LocksRepository(database, getLoaderManager());
lockListPresenter =
new Presenter(locksRepository);
}
}
40. class LockDashboard extends Fragment {
Presenter locklistPresenter;
@Override public View onCreateView(
LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final Context context = getContext();
Database database = new Database(context);
LocksRepository locksRepository =
new LocksRepository(database, getLoaderManager());
lockListPresenter =
new Presenter(locksRepository);
}
}
41. class LockDashboard extends Fragment {
Presenter locklistPresenter;
@Override public View onCreateView(
LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final Context context = getContext();
Database database = new Database(context);
LocksRepository locksRepository =
new LocksRepository(database, getLoaderManager());
lockListPresenter =
new Presenter(locksRepository);
}
}
42. class LockDashboard extends Fragment {
Presenter locklistPresenter;
@Override public View onCreateView(
LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final Context context = getContext();
Database database = new Database(context);
LocksRepository locksRepository =
new LocksRepository(database, getLoaderManager());
lockListPresenter =
new Presenter(locksRepository);
}
}
43. static class Factory {
Presenter makePresenter() {
final Context context = getContext();
Database database = new Database(context);
LocksRepository locksRepository =
new LocksRepository(database, getLoaderManager());
return new Presenter(locksRepository);
}
}
44. –Dagger Docs
“Dagger is a replacement for
these FactoryFactory classes that implements
the dependency injection design pattern
without the burden of writing the boilerplate.”
45. class LockDashboard extends Fragment {
Presenter locklistPresenter;
@Override public View onCreateView(
LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final Context context = getContext();
Database database = new Database(context);
LocksRepository locksRepository =
new LocksRepository(database, getLoaderManager());
lockListPresenter =
new Presenter(locksRepository);
}
}
46. class LockDashboard extends Fragment {
@Inject Presenter presenter;
@Override public View onCreateView(
LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
AndroidInjection.inject(this);
// ...
}
}
47. What is DI?
Why would I want DI?
Why would I want Dagger to do DI?
How do I Dagger?
How can Dagger help with testing?
48. What is DI?
Why would I want DI?
Why would I want Dagger to do DI?
How do I Dagger?
How can Dagger help me keep up?