This slide telling what "adaptive streaming" is. In the beginning, it explains how content(media) is prepared to fit adaptive needs, then talking about yapi.js - which is the web player used by KKTV(VOD service) in Taiwan.
Introduce yapi.js, an adaptive streaming web player.
This slides has 3 main topics:
1. How yapi.js implement adaptive streaming with HTML5 media element and MSE (Media Source Extension).
2. How to create ui for playback with native javascript.
3. Compare jasmine and mocha, and some tips about unit test.
This topic introduces tools to automate the development and deployment workflow of a WordPress web application.
I am showing the main benefits of such a workflow and how it allows making the installation and update of the project fully automatic, predictable, versioned, and ready to be integrated into a continuous deployment system. Tools like Docker and WP-CLI, will be introduced to implement that process along with a simple tool that I have developed to automatically deploy the basic data that a project needs to be up and running.
My mantra? No manual clicks whatsoever in the web interface for configuring WordPress!
A presentation covering three new services from Amazon Web Services: the new Application Load Balancer (ALB), recent updates to the EC2 Container Service (ECS), and the new Kinesis Analytics.
Gem Session on scaling AEM (CQ5). Topics include:
High Volume and High Performance Delivery
High Frequency Input Feed
High Processing Input Feed
High Volume Input Feed
Many Editors
Geo-distributed Editors
Many DAM assets
Geo-distributed disaster recovery
This slide telling what "adaptive streaming" is. In the beginning, it explains how content(media) is prepared to fit adaptive needs, then talking about yapi.js - which is the web player used by KKTV(VOD service) in Taiwan.
Introduce yapi.js, an adaptive streaming web player.
This slides has 3 main topics:
1. How yapi.js implement adaptive streaming with HTML5 media element and MSE (Media Source Extension).
2. How to create ui for playback with native javascript.
3. Compare jasmine and mocha, and some tips about unit test.
This topic introduces tools to automate the development and deployment workflow of a WordPress web application.
I am showing the main benefits of such a workflow and how it allows making the installation and update of the project fully automatic, predictable, versioned, and ready to be integrated into a continuous deployment system. Tools like Docker and WP-CLI, will be introduced to implement that process along with a simple tool that I have developed to automatically deploy the basic data that a project needs to be up and running.
My mantra? No manual clicks whatsoever in the web interface for configuring WordPress!
A presentation covering three new services from Amazon Web Services: the new Application Load Balancer (ALB), recent updates to the EC2 Container Service (ECS), and the new Kinesis Analytics.
Gem Session on scaling AEM (CQ5). Topics include:
High Volume and High Performance Delivery
High Frequency Input Feed
High Processing Input Feed
High Volume Input Feed
Many Editors
Geo-distributed Editors
Many DAM assets
Geo-distributed disaster recovery
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloudJohn Donaldson
The airline company was trying to create a new mobile check-in solution hosted on the cloud, to improve availability in peak usage check-in times which are unpredictable during any given time in the week. They saw the cloud as the way to accomplish this without maintaining costly disaster recovery centers.
You will learn:
• How to use Elastic Beanstalk
• How to run Single and Multi-Container Docker with AWS Elastic Beanstalk
• Best Practices running AWS Elastic Beanstalk
Balaji Parimi VMware R&D describes best practices when using the vSphere APIs. The VMware vSphere APIs can be used to build VMware vSphere management solutions. Virtual Machines, Host Management, Performance Monitoring. To learn more visit our community. http://developer.vmware.com
Ansible is a Configuration Management System that is very simple to use, because of its straightforward and robust model for managing automation and it’s low barrier to entry for ease of use in both development and production.
During OpenStack development, Ansible can be used in conjunction with Vagrant and Devstack to manage complex, multi-node development environments with relative ease.
In this presentation, Juergen Brendel and David Lapsley review Ansible and provide some sample playbooks to get developers up and running quickly. They also describes how to use Ansible, Vagrant, Devstack, and OpenStack to accelerate OpenStack development cycles.
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)Roman Kharkovski
Presented at InterConnect 2016 in Las Vegas, this presentation provides a view on the differences between WebSphere Application Server and Liberty Profile vs. competitive offerings, such as Apache Tomcat, Red Hat JBoss and Oracle WebLogic. It covers both the technical (feature/function) as well as cost considerations (TCA, TCO).
Adobe AEM Maintenance - Customer Care Office HoursAndrew Khoury
This presentation covers how to maintain Adobe Experience Manager 6.x (AEM / CQ / Communiqué) environments.
See the presentation video here:
https://helpx.adobe.com/experience-manager/kt/eseminars/ccoo-aem-Aug-recording.html
When a website is static, but needs authoring ability to change its content quickly, deploying a solution like AEM would involve the overhead of managing all the publish instances, dispatchers and their configuration.
The solution could be simplified to have AEM only for authoring and extract the authored content as HTML and their dependent resources and host it on a standard webserver.
This Article discusses the different approaches for doing this.
Etude Rovi sur le comportement des consommateurs en matière de streaming en F...Cedric Buisson
étude menée par Rovi auprès d’un échantillon de 13 700 personnes en Europe (Royaume-Unis, Allemagne, France, Espagne, Italie) dont 3500 répondants en France. Son objectif est d’analyser les comportements et les habitudes des consommateurs européens dans leur utilisation du streaming
Migrating from Pivotal tc Server on-prem to IBM Liberty in the cloudJohn Donaldson
The airline company was trying to create a new mobile check-in solution hosted on the cloud, to improve availability in peak usage check-in times which are unpredictable during any given time in the week. They saw the cloud as the way to accomplish this without maintaining costly disaster recovery centers.
You will learn:
• How to use Elastic Beanstalk
• How to run Single and Multi-Container Docker with AWS Elastic Beanstalk
• Best Practices running AWS Elastic Beanstalk
Balaji Parimi VMware R&D describes best practices when using the vSphere APIs. The VMware vSphere APIs can be used to build VMware vSphere management solutions. Virtual Machines, Host Management, Performance Monitoring. To learn more visit our community. http://developer.vmware.com
Ansible is a Configuration Management System that is very simple to use, because of its straightforward and robust model for managing automation and it’s low barrier to entry for ease of use in both development and production.
During OpenStack development, Ansible can be used in conjunction with Vagrant and Devstack to manage complex, multi-node development environments with relative ease.
In this presentation, Juergen Brendel and David Lapsley review Ansible and provide some sample playbooks to get developers up and running quickly. They also describes how to use Ansible, Vagrant, Devstack, and OpenStack to accelerate OpenStack development cycles.
WebSphere App Server vs JBoss vs WebLogic vs Tomcat (InterConnect 2016)Roman Kharkovski
Presented at InterConnect 2016 in Las Vegas, this presentation provides a view on the differences between WebSphere Application Server and Liberty Profile vs. competitive offerings, such as Apache Tomcat, Red Hat JBoss and Oracle WebLogic. It covers both the technical (feature/function) as well as cost considerations (TCA, TCO).
Adobe AEM Maintenance - Customer Care Office HoursAndrew Khoury
This presentation covers how to maintain Adobe Experience Manager 6.x (AEM / CQ / Communiqué) environments.
See the presentation video here:
https://helpx.adobe.com/experience-manager/kt/eseminars/ccoo-aem-Aug-recording.html
When a website is static, but needs authoring ability to change its content quickly, deploying a solution like AEM would involve the overhead of managing all the publish instances, dispatchers and their configuration.
The solution could be simplified to have AEM only for authoring and extract the authored content as HTML and their dependent resources and host it on a standard webserver.
This Article discusses the different approaches for doing this.
Etude Rovi sur le comportement des consommateurs en matière de streaming en F...Cedric Buisson
étude menée par Rovi auprès d’un échantillon de 13 700 personnes en Europe (Royaume-Unis, Allemagne, France, Espagne, Italie) dont 3500 répondants en France. Son objectif est d’analyser les comportements et les habitudes des consommateurs européens dans leur utilisation du streaming
Streaming Api Design with Akka, Scala and SprayNatalino Busa
An introduction on how to design APIs, followed by a recipe using scala, and a REST server implementation in Akka and Spray.
This presentation looks at API design from two different angles. Firstly, from a API developer/user point of view, we define the API developer journey, we introduce and craft meaningful REST url paths and RESTful resources. Secondly, from an API implementation point of view, we dive into the mechanics of akka, and spray.
During the first part we highlight the process of value creation from idea to API design, which translate into the definition of fluent API paths where resources are concatenated, rendering in facts the elements of a streaming analytical pipeline into a set of concatenated resources accessible via the api. We highlight the importance of a meaningful semantic for the API design process and a good match between the value proposition and the resources exposed by the api itself. To render the concept clearer we take the example of a streaming api which collects and gathers readings from a set of jogging wrist bands connected to internet.
During the second part of the presentation, we focus on scalability, resiliency and availability of the solution. We introduce the concept of actor as basic processing element. We introduce the concept of location transparencies and hierarchical supervision when mapping actors to a cluster of computing resources. Finally we describe how to translate a url path into a set of routes, and how to dispatch and process the incoming json readings to the right analytical actors. This short overview gives an idea on the mechanics behind a real time, streaming api. And on how to implement api resources as asynchronous communicating actors, in order to provide a rudimental but effective streaming analytical engine.
Introduction to Amazon Kinesis Firehose - AWS August Webinar SeriesAmazon Web Services
Streaming data applications can deliver compelling, near real-time user experiences, but building the back-end infrastructure to collect and process streaming data is difficult. Amazon Kinesis Firehose makes it easy for you to load streaming data into AWS without having to build custom stream processing applications. In this webinar, we will introduce Amazon Kinesis Firehose and discuss how to ingest streaming data into Amazon S3, Amazon Redshift, and Amazon Elasticsearch Service using Amazon Kinesis Firehose. We will also highlight key use cases based on real-world examples from IoT, AdTech, E-Commerce, and Gaming. Join us to: - Get an introduction to streaming data and an overview of Amazon Kinesis Firehose - Learn about common streaming data use cases from IoT, Ad Tech, E-Commerce, and Gaming - Understand how to use Amazon Kinesis Firehose to load streaming data into Amazon S3, Amazon Redshift, and Amazon Elasticsearch Service Who should attend: Developers, data analysts, data engineers, architects
Google company Profile
Introduction
Mission and Vision
Product offerings
Industry analysis
SWOT analysis
competitor analysis
marketing Mix
Google Management
Current Events
Conclusion
Netflix’s unique DVD rental service has revolutionized the industry. They successfully took the best of traditional conventions (like physical media, the U.S. Postal Service) and mixed them with new world internet-conventions. They have also effectively managed to discourage competition from both more established businesses and new entrants. The future growth of Netflix as it expands into streaming media, poses challenges in legal, infrastructure/technology, and through additional costs. In order to remain competitive, it is imperative that Netflix partner with companies with global reach to overcome these challenges. This presentation was part of an MBA class assignment to audit and industry in the the technology sector. The presentation has multiple authors listed on the title page. If you would like copies of the executive summary, complete S.W.O.T. analysis, and/or the transcript of the presentation please PRIVATE MESSAGE ME and I will email it to you.
ZENITH TECHNOLOGIES provides innovative, reliable and technically advanced process measurement, automation and MES solutions to the process, pharma/biotechnology, food and electronic sectors.
Developing the right solution requires a special mix of engineering and application expertise. Our team of experienced professionals delivers tangible results right through the project lifecycle.
Craft 2019 - “The Upside Down” Of The Web - Video technologiesMáté Nádasdi
Video technologies are "The Upside Down” of the web for sure. Being a frontend engineer writing HTML5 video players, WebRTC broadcast clients, supporting 360/VR videos or maybe writing interactive movies like Bandersnatch is just like to live in a parallel universe where everything and nothing is the same. Working with video is an exciting combination of all the trendy stuff out there like new Web APIs, ByteArrays, Workers, WebRTC, WebGL, etc.
In this talk, Mate would like to share important insights of video specific frontend engineering nowadays. The purpose of sharing this adventure is to give you some sense of this universe, to explain how a web video player works, to talk about the key layers and challenges and to point out that every frontend engineer has the power in their hands to utilize this knowledge to boost the user experience in any kind of product.
Windows Server AppFabric Caching - What it is & when you should use it?Robert MacLean
This is from my Tech-Ed Africa 2010 talk. For more information see: http://www.sadev.co.za/content/teched-africa-2010-slides-scripts-and-demos-my-talks
This session looks at what AppFabric Caching is from start to deep dive.
In this lecture, I provide an overview of what it takes to create amazing Web Apps : rich media, the Canvas API, local storage and offline persistence are covered.
Intro to Windows Server AppFabric
by Ron Jacobs, Senior Technical Evangelist at Microsoft
Windows Server AppFabric is a set of integrated technologies that make it easier to build, scale and manage Web and composite applications that run on IIS.
This presentation will help SQL Server developers and DBAs get up to speed on AppFabric. You'll also learn how Windows AppFabric caching can help you scale your Data Tier.
You will learn:
•The core capabilities of Windows Server AppFabric
•How the distributed nature of AppFabric’s cache allows large amounts of data to be stored in-memory for extremely fast access and help you scale your SQL Data Tier
•How to get started with Windows Server AppFabric
Learn how to avoid downtime by tracking system drifts, how to increase the robustness and security of your system, and make sure you adhere to compliance standards using CFEngine. This slide deck accompanied our "Getting Started with CFEngine" webinar, where we covered how to achieve all those benefits using CFEngine policies, promises, and sketches. Use the examples in these slides to start your own CFEngine implementation. A recording of the webinar can be found at http://www.youtube.com/watch?v=riMkdQKBI0M&feature=share&list=UUAiKge7NwhuWi-KNKt3U4HA
Web developers now have a large number of APIs available allowing them to harness complex functionality via JavaScript and produce ever more interesting web experiences. This presentation looks at where we can from, where APIs are going in the future, and what problems we are currently in the process of solving. This includes Multimedia, Offline, device hardware access, internationalization, and more.
Getting Started With CFEngine - Updated VersionCFEngine
Learn how to avoid downtime by tracking system drifts, how to increase the robustness and security of your system, and make sure you adhere to compliance standards using CFEngine. This slide deck accompanied our "Getting Started with CFEngine" webinar, where we covered how to achieve all those benefits using CFEngine policies, promises, and sketches. Use the examples in these slides to start your own CFEngine implementation. A recording of the webinar can be found at http://youtu.be/i82tPVpQcfc
Developing for Leap Motion
DotnetConf session here: http://www.youtube.com/watch?v=YixzSUxyGKU ( 1 hour)
Video tutorial can be found here:
Developing for Leap Motion in C# Part 1: http://www.youtube.com/watch?v=1Rn3q75mdns
Developing for Leap Motion in C# Part 2: http://www.youtube.com/watch?v=-r_cAtHQzy8
GitHub repository for the Leap Motion demo app: https://github.com/IrisClasson/Leap-Motion/
Slides: http://www.slideshare.net/irisdanielaclasson/developing-for-leap-motion/
Whether you are building an e-commerce site or a business application, security is a key consideration when architecting your website or application. In this session, you will learn more about some of the things CloudFront does behind the scenes to protect the delivery of your content such as OCSP Stapling and Perfect Forward Secrecy. We will also share best practices on how you can use CloudFront to securely deliver content end-to-end, control who accesses your content, how to shield your origins from the Internet, and getting a A+ on SSL labs.
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...Amazon Web Services
Through a combination of Amazon ECS and open source technologies, customers are able to build portable CI/CD pipelines on AWS. As container based deployments become more complex, they require additional rigging for integration. In this session, we show how popular Apache products like Kakfa, Storm, and Zookeeper are being deployed on top of Amazon ECS. We hear from HERE, a provider of mapping data, technologies, and services to the automotive, consumer, and enterprise sectors about an approach that leverages Consul from Hashicorp and Amazon ECS clusters for short-cycle deployments and tag-based environment promotion.
TECHNICAL TRAINING MANUAL GENERAL FAMILIARIZATION COURSEDuvanRamosGarzon1
AIRCRAFT GENERAL
The Single Aisle is the most advanced family aircraft in service today, with fly-by-wire flight controls.
The A318, A319, A320 and A321 are twin-engine subsonic medium range aircraft.
The family offers a choice of engines
Forklift Classes Overview by Intella PartsIntella Parts
Discover the different forklift classes and their specific applications. Learn how to choose the right forklift for your needs to ensure safety, efficiency, and compliance in your operations.
For more technical information, visit our website https://intellaparts.com
Explore the innovative world of trenchless pipe repair with our comprehensive guide, "The Benefits and Techniques of Trenchless Pipe Repair." This document delves into the modern methods of repairing underground pipes without the need for extensive excavation, highlighting the numerous advantages and the latest techniques used in the industry.
Learn about the cost savings, reduced environmental impact, and minimal disruption associated with trenchless technology. Discover detailed explanations of popular techniques such as pipe bursting, cured-in-place pipe (CIPP) lining, and directional drilling. Understand how these methods can be applied to various types of infrastructure, from residential plumbing to large-scale municipal systems.
Ideal for homeowners, contractors, engineers, and anyone interested in modern plumbing solutions, this guide provides valuable insights into why trenchless pipe repair is becoming the preferred choice for pipe rehabilitation. Stay informed about the latest advancements and best practices in the field.
Student information management system project report ii.pdfKamal Acharya
Our project explains about the student management. This project mainly explains the various actions related to student details. This project shows some ease in adding, editing and deleting the student details. It also provides a less time consuming process for viewing, adding, editing and deleting the marks of the students.
Vaccine management system project report documentation..pdfKamal Acharya
The Division of Vaccine and Immunization is facing increasing difficulty monitoring vaccines and other commodities distribution once they have been distributed from the national stores. With the introduction of new vaccines, more challenges have been anticipated with this additions posing serious threat to the already over strained vaccine supply chain system in Kenya.
Democratizing Fuzzing at Scale by Abhishek Aryaabh.arya
Presented at NUS: Fuzzing and Software Security Summer School 2024
This keynote talks about the democratization of fuzzing at scale, highlighting the collaboration between open source communities, academia, and industry to advance the field of fuzzing. It delves into the history of fuzzing, the development of scalable fuzzing platforms, and the empowerment of community-driven research. The talk will further discuss recent advancements leveraging AI/ML and offer insights into the future evolution of the fuzzing landscape.
Courier management system project report.pdfKamal Acharya
It is now-a-days very important for the people to send or receive articles like imported furniture, electronic items, gifts, business goods and the like. People depend vastly on different transport systems which mostly use the manual way of receiving and delivering the articles. There is no way to track the articles till they are received and there is no way to let the customer know what happened in transit, once he booked some articles. In such a situation, we need a system which completely computerizes the cargo activities including time to time tracking of the articles sent. This need is fulfilled by Courier Management System software which is online software for the cargo management people that enables them to receive the goods from a source and send them to a required destination and track their status from time to time.
Welcome to WIPAC Monthly the magazine brought to you by the LinkedIn Group Water Industry Process Automation & Control.
In this month's edition, along with this month's industry news to celebrate the 13 years since the group was created we have articles including
A case study of the used of Advanced Process Control at the Wastewater Treatment works at Lleida in Spain
A look back on an article on smart wastewater networks in order to see how the industry has measured up in the interim around the adoption of Digital Transformation in the Water Industry.
Event Management System Vb Net Project Report.pdfKamal Acharya
In present era, the scopes of information technology growing with a very fast .We do not see any are untouched from this industry. The scope of information technology has become wider includes: Business and industry. Household Business, Communication, Education, Entertainment, Science, Medicine, Engineering, Distance Learning, Weather Forecasting. Carrier Searching and so on.
My project named “Event Management System” is software that store and maintained all events coordinated in college. It also helpful to print related reports. My project will help to record the events coordinated by faculties with their Name, Event subject, date & details in an efficient & effective ways.
In my system we have to make a system by which a user can record all events coordinated by a particular faculty. In our proposed system some more featured are added which differs it from the existing system such as security.
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...Amil Baba Dawood bangali
Contact with Dawood Bhai Just call on +92322-6382012 and we'll help you. We'll solve all your problems within 12 to 24 hours and with 101% guarantee and with astrology systematic. If you want to take any personal or professional advice then also you can call us on +92322-6382012 , ONLINE LOVE PROBLEM & Other all types of Daily Life Problem's.Then CALL or WHATSAPP us on +92322-6382012 and Get all these problems solutions here by Amil Baba DAWOOD BANGALI
#vashikaranspecialist #astrologer #palmistry #amliyaat #taweez #manpasandshadi #horoscope #spiritual #lovelife #lovespell #marriagespell#aamilbabainpakistan #amilbabainkarachi #powerfullblackmagicspell #kalajadumantarspecialist #realamilbaba #AmilbabainPakistan #astrologerincanada #astrologerindubai #lovespellsmaster #kalajaduspecialist #lovespellsthatwork #aamilbabainlahore#blackmagicformarriage #aamilbaba #kalajadu #kalailam #taweez #wazifaexpert #jadumantar #vashikaranspecialist #astrologer #palmistry #amliyaat #taweez #manpasandshadi #horoscope #spiritual #lovelife #lovespell #marriagespell#aamilbabainpakistan #amilbabainkarachi #powerfullblackmagicspell #kalajadumantarspecialist #realamilbaba #AmilbabainPakistan #astrologerincanada #astrologerindubai #lovespellsmaster #kalajaduspecialist #lovespellsthatwork #aamilbabainlahore #blackmagicforlove #blackmagicformarriage #aamilbaba #kalajadu #kalailam #taweez #wazifaexpert #jadumantar #vashikaranspecialist #astrologer #palmistry #amliyaat #taweez #manpasandshadi #horoscope #spiritual #lovelife #lovespell #marriagespell#aamilbabainpakistan #amilbabainkarachi #powerfullblackmagicspell #kalajadumantarspecialist #realamilbaba #AmilbabainPakistan #astrologerincanada #astrologerindubai #lovespellsmaster #kalajaduspecialist #lovespellsthatwork #aamilbabainlahore #Amilbabainuk #amilbabainspain #amilbabaindubai #Amilbabainnorway #amilbabainkrachi #amilbabainlahore #amilbabaingujranwalan #amilbabainislamabad
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Dr.Costas Sachpazis
Terzaghi's soil bearing capacity theory, developed by Karl Terzaghi, is a fundamental principle in geotechnical engineering used to determine the bearing capacity of shallow foundations. This theory provides a method to calculate the ultimate bearing capacity of soil, which is the maximum load per unit area that the soil can support without undergoing shear failure. The Calculation HTML Code included.
15. prepare
different qualities
of content
on server
MODERN WAY
adaptive streaming
Player plays
best quality
depends on
network status
Keep requesting
rest part of
video during
playback
16. HOW ABOUT WE SPLIT FILE
• split file into segments, described by manifest
• manifest tells
- available bitrates
- how file is fragmented
- other information, e.g encryption
+
+
17. knows how to
get fragments
ADAPTIVE STREAMING
IN SHORT
fragments
manifest
file
20. PROS OF DASH
• open source, with industry standard, which means
more universal usage
• support 2 types of containers, the MPEG-4 file
format or the MPEG-2Transport Stream
21. GET FILES IN SMART WAY
• manifest parser - able to read different type of
manifest
• adaptive bitrate - able to decide which quality to
load
22. OUR PLAYER FOCUS ON (2)
.mp4 / .ts file
get files
in smart way
protection
logic
extract content
from container
a/v sync
codec decode
and
display
23. DRM ?
(DIGITAL RIGHTS MANAGEMENT)
Content provider /
DRM provider likes it
For end user
24. CLIENT SIDE PROTECTION
• Client get a license instead of a key from DRM
service
• A blackbox or sandbox get the key by processing
license
• That blackbox / sandbox decrypt content and
directly output it to display
26. PROTECTION LOGIC
• give what DRM server needs and retrieve license
• negotiate with browser in order to implement
protection on client side
• deal with different browsers
knows how to
30. INTRODUCE MSE
• Given different bitrate segments and it helps
html5 video element to play smoothly
• SourceBuffer provide video and audio buffer
condition
Media Source Extension
32. HOW BROWSER ADOPT DRM
• For browser, that blackbox called CDM
(Content Decrypt Module)
• Each browser support different DRM
context - “a blackbox or sandbox get the key by
processing license”
34. INTRODUCE EME
• Even though browser support its own DRM,
W3C defines a EME spec, in order to expose
same api for client
• prefixed api was implemented on earlier version
of chrome(smart tv)
Encrypted Media Extension
38. OUR GOAL
• play not single file but sequence of segments,
with different bitrate, a.k.a adaptive streaming
• play protected stuffs, for content providers’ goods
a player able to
58. DEPENDENCY INJECTION
• not necessary in the beginning, but became very
important after it went much more complex
• use dijon.js as di framework
59. INTRODUCE DIJON.JS
• a system holds all dependencies, after mapping
modules to it
• an object get dependencies after injection
60. DEFINE DEPENDENCIES
// A dep
function A() {}
// B requires A
function B() {
this.a = undefined; // how dijon knows where to inject
}
// instantiate dijon
var system = new dijon.System();
61. 3 KINDS OF MAPPING
var a = new A();
system.mapValue(‘aValue’, a);
// system.getObject(‘a’) would return an ‘a’ instance
system.mapSingleton(aSingleton,A);
// system.getObject(‘aSingleton’) would return a singleton a
system.mapClass(bClass, B);
// system.getObject(‘bClass’) would return a new inited B
62. OUTLET MAPPING
// map outlet to make dependency work
// @param sourceKey {String} - the key mapped to system would be
injected
// @param targetKey {String|'global'} - the key outlet is assigned to
// @param outletName {String|sourceKey} - the name of property used as
an outlet
system.mapOutlet('aSingleton', 'bClass',‘a');
var b = system.getObject(‘bClass’);
// b.a is aSingleton
63. DIRECTLY INJECTION
var b = new B();
system.injectInto(b);
// b WOULDN’T have dependency singleton A
// b/c we only mapOutlet to key bClass of system
// map outlet to global
system.mapOutlet(‘aSingleton’,‘global’,‘a’);
system.injectInto(b); // this would work
64. AUTO MAP OUTLET
function B(){
this.aSingleton = undefined;
this.c = undefined;
}
function C(){}
// auto mapped outlet would assign to ‘global’
// and outlet name is the same as mapped key (before mapping)
system.autoMapOutlets = true;
system.mapClass(‘bClass’, B); // map again b/c B is changed
system.mapClass(‘c’, C);
// system.getObject(‘b’) would have c dep
65. COMMUNICATE IN BETWEEN
Now B has dependencies of A and C
How would you do in this scenario:
A is doing something
when it’s done, invoke a method of B
–this is a very common situation in player
66. MAP HANDLER AND NOTIFY
function A() {
this.say = function() {
system.notify(‘aDoneSaying’);
};
}
function B() {
this.a = undefined;
this.afterAsays = function(){
// do something
};
}
system.mapSingleton(‘a’,A); system.mapSingleton(‘b’, B);
system.mapHandler(‘aDoneSaying’, ’b’,‘afterAsays’);
// system.getObject(‘b’).a.say() would invoke b.afterAsays
67. NOTIFYING CLASS
system.mapSingleton(‘a’,A);
system.mapClass(‘b’, B); // map class here
var b1 = system.getObject(‘b’);
// b1.say() would invoke a newly instantiated b.afterAsays
// instead of b1.afterAsays
system.mapValue(‘b1’, b1);
system.unmapHandler(‘aDoneSaying’,‘b’,‘afterAsays’)
system.mapHandler(‘aDoneSaying’,‘b1’,‘afterAsays’)
// b1.say() would invoke b1.afterAsays
68. function E() {
this.a = undefined;
this.setup = function () {};
}
var e = new E();
system.injectInto(e);
// e.setup invoked
CONVENTION
setup method of module would be invoked
after getObject or injectInto
70. function A() {}; function B() {}
function Dep() {
return {
system: undefined,
setup: function () {
this.system.autoMapOutlets = true;
// map dep here
this.system.mapSingleton('a',A);
this.system.mapClass('b', B);
}
};
}
function App() {
var b;
var system = new dijon.System();
system.mapValue('system', system);
system.mapOutlet('system');
var dep = new Dep();
system.injectInto(dep); // inject system to dep and invoke setup function, which map all deps
return {
system: undefined,
a: undefined,
setup: function () {
b = system.getObject('b');
},
init: function () {
system.injectInto(this); // after init, app.a exists
}
};
}
// after new App().init(), app get all dep setup in Dep
71. SUMMARY OF DIJONJS
• 3kb
• very little convention
• focus on di and notify / handler
72. BUILD PROJECT
• list all source files in index.html of testing page
• grunt as task manager
• concat and minify scripts with grunt-usemin
• export to dist/player.min.js
73. ONE LAST NOTICE
• ui should be totally separated
• ui <-> player -> videoElement
• ui order player by api, respond to player behavior
by event
player
videoElement
ui