This document discusses window management in an operating system. It proposes using a manager pattern with multiple independent instances (AppWindows) to control windows. Key points:
1. An AppWindowManager would manage the lifecycles of multiple AppWindow instances, handling launch/kill requests.
2. AppWindows would be minimal units wrapping a web browser iframe. Each would maintain their own states like visibility independently.
3. Multiple patterns are used, including manager pattern to coordinate instances, observer pattern for events, and finite state machine for transitions.
4. A hierarchy of managers would control interactions across windows, handling visibility, orientation, layout for different "levels" like system dialogs vs apps.
Webinar: This Launch Will Self-Destruct in 3...2...1Optimizely
Splashy, big-bang launches used to be the gold standard for software releases. But for every successful big bang launch, there were many failed launches that either never gained traction or that were so harmful, they actually caused successful companies to stumble or crash.
Join Jon Noronha, Senior Director of Product at Optimizely, to learn why you should stop launching and start rolling out products in order to ship faster and reduce risk.
Attend this webinar to learn:
- Lessons from failed product launches
- How to use feature flags to release new features safer
- How to start small and validate your product with different audiences before releasing to everyone
My perspective on MVP and architecture discussionsPaul Blundell
Talk about what MVP means to different people and how using MVP doesn't even matter. It's about the discussion.
I've hacked an app together with MVP, I want to show my findings and opinions about the most over defined term for a pattern ever.
Webinar: This Launch Will Self-Destruct in 3...2...1Optimizely
Splashy, big-bang launches used to be the gold standard for software releases. But for every successful big bang launch, there were many failed launches that either never gained traction or that were so harmful, they actually caused successful companies to stumble or crash.
Join Jon Noronha, Senior Director of Product at Optimizely, to learn why you should stop launching and start rolling out products in order to ship faster and reduce risk.
Attend this webinar to learn:
- Lessons from failed product launches
- How to use feature flags to release new features safer
- How to start small and validate your product with different audiences before releasing to everyone
My perspective on MVP and architecture discussionsPaul Blundell
Talk about what MVP means to different people and how using MVP doesn't even matter. It's about the discussion.
I've hacked an app together with MVP, I want to show my findings and opinions about the most over defined term for a pattern ever.
Toronto User groups workshop - 2013-03-10 - HTML5 & Windows 8, friends with b...Frédéric Harper
What would you say if I told you that you can use your actual HTML, CSS, and JavaScript skills to create an amazing Windows 8 application? That all the lovely features that you like so much about HTML5, can be used to create your next masterpiece? That you can use the magical JavaScript libraries you use everyday to get in the game more quickly? Be honest, you would say that I'm crazy... Maybe, or maybe not, only the attendees to this session will know!
Android: the Single Activity, Multiple Fragments pattern | One Activity to ru...olrandir
Description: We will discuss the Single Activity, Multiple Fragments architectural pattern, its uses and misuses. We will see what benefits it provides and what kinds of apps can benefit from its provisions. Finally, we will outline an implementation and highlight some features and pitfalls in practice.
Building Beautiful and Interactive Metro apps with JavaScript, HTML5 & CSS3Doris Chen
This session outlines some of what you can do with new HTML5 and CSS3 features introduced in Internet Explorer 10. Internet Explorer 10 is the browser for rendering modern (HTML5/CSS3) standards-compliant websites. It is also one of the foundations for Metro style app development on Windows 8.
Get started writing Metro style apps using your HTML5, JavaScript, and CSS skills today! You already have a Web app on the Internet and want to reach customers with a new, targeted experience on Windows 8. Come get practical guidance and best practices on how to reuse your Web assets. Come dive into the specifics of this exciting platform and see how you can use your Web skills to build deeply-integrated Windows apps.
• You’ll discover how this mirrors or differs from traditional Web programming and how to harness the rich capabilities of Windows 8 through JavaScript and the Windows Runtime.
• You'll learn techniques for turning your HTML5, CSS and JavaScript into a great Windows app including touch-enablement, adopting the Windows look and feel, and system integration.
This session will arm you with everything you need to know to start building Metro style apps with the skills you already have.
This presentation has been prepared by Oleksii Prohonnyi for internal Angular.js training to improve skills of newbies in JS/Angular.
Part 1 (Introduction): http://www.slideshare.net/oprohonnyi/dive-into-angular-part-1-introduction
Part 2 (Architecture): http://www.slideshare.net/oprohonnyi/dive-into-angular-part-2-architecture
Part 3 (Performance): http://www.slideshare.net/oprohonnyi/dive-into-angular-part-3-performance
Part 4 (Angular 2.0): http://www.slideshare.net/oprohonnyi/dive-into-angular-part-4-angular-20
Introduction to Magento 2 module development - PHP Antwerp Meetup 2017Joke Puts
This presentation was given at a PHP Antwerp Meetup: https://www.meetup.com/phpantwerp/events/237632633/
Magento 2 is a commerce platform released since November 2015. In this introduction I’ll focus on the open source version, Magento Community and show you how easy it is to start creating modules for this platform. These modules can be used to customize your store or to publish on the Magento Marketplace.
Seminar with a bunch of tips and tricks and lessons learned regarding windows 8 modern UI app developement.
Topics include: Blend/design time data, view states, touch, navigation and Windows Store.
Online aptitude test management system project report.pdfKamal Acharya
The purpose of on-line aptitude test system is to take online test in an efficient manner and no time wasting for checking the paper. The main objective of on-line aptitude test system is to efficiently evaluate the candidate thoroughly through a fully automated system that not only saves lot of time but also gives fast results. For students they give papers according to their convenience and time and there is no need of using extra thing like paper, pen etc. This can be used in educational institutions as well as in corporate world. Can be used anywhere any time as it is a web based application (user Location doesn’t matter). No restriction that examiner has to be present when the candidate takes the test.
Every time when lecturers/professors need to conduct examinations they have to sit down think about the questions and then create a whole new set of questions for each and every exam. In some cases the professor may want to give an open book online exam that is the student can take the exam any time anywhere, but the student might have to answer the questions in a limited time period. The professor may want to change the sequence of questions for every student. The problem that a student has is whenever a date for the exam is declared the student has to take it and there is no way he can take it at some other time. This project will create an interface for the examiner to create and store questions in a repository. It will also create an interface for the student to take examinations at his convenience and the questions and/or exams may be timed. Thereby creating an application which can be used by examiners and examinee’s simultaneously.
Examination System is very useful for Teachers/Professors. As in the teaching profession, you are responsible for writing question papers. In the conventional method, you write the question paper on paper, keep question papers separate from answers and all this information you have to keep in a locker to avoid unauthorized access. Using the Examination System you can create a question paper and everything will be written to a single exam file in encrypted format. You can set the General and Administrator password to avoid unauthorized access to your question paper. Every time you start the examination, the program shuffles all the questions and selects them randomly from the database, which reduces the chances of memorizing the questions.
Toronto User groups workshop - 2013-03-10 - HTML5 & Windows 8, friends with b...Frédéric Harper
What would you say if I told you that you can use your actual HTML, CSS, and JavaScript skills to create an amazing Windows 8 application? That all the lovely features that you like so much about HTML5, can be used to create your next masterpiece? That you can use the magical JavaScript libraries you use everyday to get in the game more quickly? Be honest, you would say that I'm crazy... Maybe, or maybe not, only the attendees to this session will know!
Android: the Single Activity, Multiple Fragments pattern | One Activity to ru...olrandir
Description: We will discuss the Single Activity, Multiple Fragments architectural pattern, its uses and misuses. We will see what benefits it provides and what kinds of apps can benefit from its provisions. Finally, we will outline an implementation and highlight some features and pitfalls in practice.
Building Beautiful and Interactive Metro apps with JavaScript, HTML5 & CSS3Doris Chen
This session outlines some of what you can do with new HTML5 and CSS3 features introduced in Internet Explorer 10. Internet Explorer 10 is the browser for rendering modern (HTML5/CSS3) standards-compliant websites. It is also one of the foundations for Metro style app development on Windows 8.
Get started writing Metro style apps using your HTML5, JavaScript, and CSS skills today! You already have a Web app on the Internet and want to reach customers with a new, targeted experience on Windows 8. Come get practical guidance and best practices on how to reuse your Web assets. Come dive into the specifics of this exciting platform and see how you can use your Web skills to build deeply-integrated Windows apps.
• You’ll discover how this mirrors or differs from traditional Web programming and how to harness the rich capabilities of Windows 8 through JavaScript and the Windows Runtime.
• You'll learn techniques for turning your HTML5, CSS and JavaScript into a great Windows app including touch-enablement, adopting the Windows look and feel, and system integration.
This session will arm you with everything you need to know to start building Metro style apps with the skills you already have.
This presentation has been prepared by Oleksii Prohonnyi for internal Angular.js training to improve skills of newbies in JS/Angular.
Part 1 (Introduction): http://www.slideshare.net/oprohonnyi/dive-into-angular-part-1-introduction
Part 2 (Architecture): http://www.slideshare.net/oprohonnyi/dive-into-angular-part-2-architecture
Part 3 (Performance): http://www.slideshare.net/oprohonnyi/dive-into-angular-part-3-performance
Part 4 (Angular 2.0): http://www.slideshare.net/oprohonnyi/dive-into-angular-part-4-angular-20
Introduction to Magento 2 module development - PHP Antwerp Meetup 2017Joke Puts
This presentation was given at a PHP Antwerp Meetup: https://www.meetup.com/phpantwerp/events/237632633/
Magento 2 is a commerce platform released since November 2015. In this introduction I’ll focus on the open source version, Magento Community and show you how easy it is to start creating modules for this platform. These modules can be used to customize your store or to publish on the Magento Marketplace.
Seminar with a bunch of tips and tricks and lessons learned regarding windows 8 modern UI app developement.
Topics include: Blend/design time data, view states, touch, navigation and Windows Store.
Online aptitude test management system project report.pdfKamal Acharya
The purpose of on-line aptitude test system is to take online test in an efficient manner and no time wasting for checking the paper. The main objective of on-line aptitude test system is to efficiently evaluate the candidate thoroughly through a fully automated system that not only saves lot of time but also gives fast results. For students they give papers according to their convenience and time and there is no need of using extra thing like paper, pen etc. This can be used in educational institutions as well as in corporate world. Can be used anywhere any time as it is a web based application (user Location doesn’t matter). No restriction that examiner has to be present when the candidate takes the test.
Every time when lecturers/professors need to conduct examinations they have to sit down think about the questions and then create a whole new set of questions for each and every exam. In some cases the professor may want to give an open book online exam that is the student can take the exam any time anywhere, but the student might have to answer the questions in a limited time period. The professor may want to change the sequence of questions for every student. The problem that a student has is whenever a date for the exam is declared the student has to take it and there is no way he can take it at some other time. This project will create an interface for the examiner to create and store questions in a repository. It will also create an interface for the student to take examinations at his convenience and the questions and/or exams may be timed. Thereby creating an application which can be used by examiners and examinee’s simultaneously.
Examination System is very useful for Teachers/Professors. As in the teaching profession, you are responsible for writing question papers. In the conventional method, you write the question paper on paper, keep question papers separate from answers and all this information you have to keep in a locker to avoid unauthorized access. Using the Examination System you can create a question paper and everything will be written to a single exam file in encrypted format. You can set the General and Administrator password to avoid unauthorized access to your question paper. Every time you start the examination, the program shuffles all the questions and selects them randomly from the database, which reduces the chances of memorizing the questions.
KuberTENes Birthday Bash Guadalajara - K8sGPT first impressionsVictor Morales
K8sGPT is a tool that analyzes and diagnoses Kubernetes clusters. This presentation was used to share the requirements and dependencies to deploy K8sGPT in a local environment.
We have compiled the most important slides from each speaker's presentation. This year’s compilation, available for free, captures the key insights and contributions shared during the DfMAy 2024 conference.
2. Window Manager
A core module in an operating system, which is
responsible to display and maintain the window
based UI.
3. Window Mgmt. at FxOS
● A clustor of modules mainly serves to create
web apps.
● A re-implementation of a browser.
● Ability to handle WebAPI request between
apps.
12. AppWindow
● The basic unit which wraps the mozbrowser
iframe.
● (Mostly) Standalone library to create a
webapp instance.
● Each appWindow instance maintains its own
states and display proper UI according to
these states.
16. App Visibility
● Active app is basically foreground, but we
are having some more complex rules; for
instance, a chaining activities are all
foreground.
● Page visibility is particially impacting the
process priority.
● The timing of visibilitychange was bind to
transition states.
17. App Orientation
● Passive orientation requested in manifest
● Active orientation requested by
screen.lockOrientation()
o System app does not being involed too
much in this progress but is expected to.
o What if lock orientation during
transitioning?
● Query by screen.mozOrientation
18. App has no knowledge about (x, y),
but (w, h) is affecting app by window.innerHeight,
window.innerWidth, and reflow/resize if that changed.
Layout = (x, y,
w, h)
19. Use small piece of codes
doing limited tasks
AppWindow: Submodule
To avoid a giant AppWindow class..
20. AppWindow Submodules
AppWindow
Each submodule is responsible to handle a specific request
from the appWindow. Their only dependency is the
appWindow who launches/instantiates them.
M
M
M
M
M
MHW
M
M
M
M
M M
At
W
M
M
M
M
M
M
submodule
22. Developing Submodules
var MyModule = function(app) {
this.app = app;
this.app.element.addEventListener(‘_opened’, this);
};
MyModule.prototype = {
handleEvent: function() {
// ...
}
};
AppWindow.SUB_MODULES = {
‘myModule’: window.MyModule
};
var a = new AppWindow();
typeof(a.myModule) // === MyModule
23. Transition Finite State Machine
● A submodule to process transition related
events to maintain the state and perform the
transition.
● States: opened/opening/closed/closing
● Transition state should be standalone from
other states.
26. Interactions between AppWindows..
We are living in a world of multiple apps. An
appWindow should not do anything it wants to
do.
Request before permitted!
30. LifeCycle Management
● Maintain a list of alive windows
● Manage the interaction between window
instances
● Events happens inside an appWindow is
delegated to the appWindow itself.
● Interactions involved multiple appWindows
needs the manager to decide what to do.
31. Life cycle - launch
● AppWindowManager has an appWindow
factory to deal with launch request from the
gecko(system message) or the user.
● Each AppWindow instances has a child
window factory to deal with launch request
from the app.
33. Life cycle - kill
● active kill
o window.close()
o ParentWindow is killed
o The user kills it from task manager.
● When an appWindow is killed inactively by
gecko due to OOM or crash, it will enter
suspend state.
37. *WindowManager
*Window *Window (active)
Modules affecting
transition
*Window
Transition
FSM
*Window
request to open
close the active instance
Basically only the same
type window will be taken
into account.
39. MultiTasking - Nested Windows
Dialer App Gallery AppHomescreen App Contact App
Contact Activity
Gallery Activity
Camera Activity
Camera App
40. MultiTasking - Nested Windows
AppWindow
AppWindowAppWindow
AppWindow
ActivityWindow
Activity
Window
ActivityWindow
AppWindow
FrontWindow is rendered inside BottomWindow’s container.
41. AppWindow#1
Activity
Window#A
Nested Window
Activity
Window#B
● AppWindow#1 manages ActivityWindow#A
● ActivityWindow#A manages ActivityWindow#B
● Only parentWindow/childWindow refers each
other; the grandparentWindow(AppWindow#1)
does not need to know the state of the
grandchildWindow(ActivityWindow#B)
● However, kill a parentWindow will kill the
childWindow which causes a chaining kill.
42. We are having a principal pattern now.
AppWindowManagerAppWindow AppWindow
Application Core
AppWindow AppWindow
AppWindow
One Manager + Instances Pattern fits usual webapp
management requirements.
43. Hierarchy
In an operation system, there would be some
system level user interface which are not usual
applications but has certain interaction with
applications.
Lockscreen, Attention, SystemDialog,
Rocketbar...
44. We are having a principal pattern now.
Scale this design.
59. Look at the Transition FSM closely
● statechange will trigger the inner handler
o Enter closed state: send to background
o Enter opened state: request to foreground
60. Develop a window manager
● What windows to manage/create?
● Reuse/Inherit AppWindow
● Make HierachyManagement Modules know
your existence
61. Best Practice: Rocketbar
● Search app is different from a normal
appWindow.
● Implement SearchWindow
● Implement
SearchWindowManager(rocketbar.js)
● Modify HierachyManagement Modules
64. Manager(Mediator) Pattern
● A manager is usually a singleton.
● What to manage? Interactions between
instances.
● A manager is expected to maintain a list
multiple instances coming from the same
class.