Multimedia Systems

Total Page:16

File Type:pdf, Size:1020Kb

Multimedia Systems MVC Design Pattern Introduction to MVC and compare it with others Gholamhossein Tavasoli @ ZNU Separation of Concerns o All these methods do only one thing “Separation of Concerns” or “Layered Architecture” but in their own way. o All these concepts are pretty old, like idea of MVC was tossed in 1970s. o All these patterns forces a separation of concerns, it means domain model and controller logic are decoupled from user interface (view). As a result maintenance and testing of the application become simpler and easier. MVC Pattern Architecture o MVC stands for Model-View-Controller Explanation of Modules: Model o The Model represents a set of classes that describe the business logic i.e. business model as well as data access operations i.e. data model. o It also defines business rules for data means how the data can be created, sotored, changed and manipulated. Explanation of Modules: View o The View represents the UI components like CSS, jQuery, HTML etc. o It is only responsible for displaying the data that is received from the controller as the result. o This also transforms the model(s) into UI. o Views can be nested Explanation of Modules: Controller o The Controller is responsible to process incoming requests. o It receives input from users via the View, then process the user's data with the help of Model and passing the results back to the View. o Typically, it acts as the coordinator between the View and the Model. o There is One-to-Many relationship between Controller and View, means one controller can handle many views. Sequence Diagram Decoupling views and models o MVC decouples views and models by establishing a subscribe/notify protocol between them. o Whenever the model's data changes, the model notifies views that depend on it. o This approach lets you attach multiple views to a model to provide different presentations. Decoupling views and controllers o Single presentation different response strategies o Single View different controller o The View-Controller relationship -> Strategy pattern Advantages of MVC o Since MVC handles the multiple views using the same enterprise model it is easier to maintain, test and upgrade the multiple system. o It will be easier to add new clients just by adding their views and controllers. o Since the Model is completely decoupled from view it allows lot of flexibilities to design and implement the model considering reusability and modularity. This model also can be extended for further distributed application. oIt is possible to have development process in parallel for model, view and controller. Disadvantages of MVC o This design approach is not suitable for smaller applications o In case of complicated user interface with states of views related to each other o Possible workflow models, this information though not business functionality related o Has to be in the Model layer. In very large systems this may be beneficial, otherwise it is usually transferred to the control layer, somewhat breaching the pattern. Introduction to django o Django is a free and open source web application framework, written in Python, which follows the Model–View–Controller architectural pattern. o It is maintained by the Django Software Foundation (DSF), an oindependent organization. Perhaps You’ve Heard Of... o Pinterest o Instagram o Disqus o OpenStack o Mozilla o Bitbucket Features oObject Relational Mapper – ORM oMVC (MVT) Architecture oTemplate System oOut of the box customizable Admin Interface, makes CRUD easy oBuilt-in light weight Web Server oElegant URL design oAuthentication / Authorization oInternationalization support oFast Development oFree, and Great Documentation oCache framework, with multiple cache mechanisms Back to Django: How does Django work? Is Django MVC? o Yes and No! o Model-Template-View (MTV) o The database interfacing classes (Model) o Request-processing classes (View) o A templating language for the final presentation (Template) o MVC o Model: Django's Models o View: Django's Templates o Controller: the framework itself that processes an incoming HTTP request and routes it to the correct view function ORM? o Relational Database o Objects o Mapping between Objects & Relational Database Why ORM? o Leverages existing knowledge and skills related to OOP o Level of abstraction o Saves programmer time CRUD Some ORM in Python o SQLObject o Storm o Django's ORM o peewee o SQLAlchemy o PonyORM Some ORM in Python o SQLObject o Storm o Django's ORM o peewee o SQLAlchemy o PonyORM o compare Some ORM in Python o SQLAlchemy o not limited to ORM. It is a DB manipulation framework o connection management & expression framework + ORM o can handle raw SQL o sanitize value (security) o Documentation is somewhat difficult to understand Some ORM in Python o Pony ORM o A very convenient syntax for writing queries o Automatic query optimization o Simplified setup and usage o Not designed to process hundreds of thousands or millions of records Some ORM in Python o Pony ORM o A very convenient syntax for writing queries o Automatic query optimization o Simplified setup and usage o Not designed to process hundreds of thousands or millions of records simultaneously o Tool: Database Designer sample Some ORM in Python o Pony ORM o A very convenient syntax for writing queries o Automatic query optimization o Simplified setup and usage o Not designed to process hundreds of thousands or millions of records simultaneously o Tool: Database Designer sample MVP Pattern o Model-View-Presenter (MVP) is a variation of the Model-View-Controller (MVC) pattern but specifically geared towards a page event model. o The model stores the data o The view shows a representation of the model o The presenter coordinates communications between the layers MVP Pattern o Model, like model in MVC o Presenter o handle user input and use this to manipulate the model data o There is One-to-One relationship between View and Presenter o View o Receive input and updated based on changes in model. It does not contain any logic implemented. Sequence Diagram for MVP MVVM Pattern o The Model-View-ViewModel (MVVM or ViewModel) is a pattern for separating concerns in technologies that use data- binding oTwo-way data binding between View and View-Model o This allows automatic propagation of changes, inside the state of View-Model to the View o Generally, the View-Model utilizes the observer pattern to inform changes in the View-Model to the Model MVVM Pattern o The View holds a reference to the View Model o The View Model has no information about the View o ViewModel o It has a collection which contain the data from the model currently needed for the view oThe bindings between view and ViewModel are simple to construct because a ViewModel object is set as the Data Context of a view. o If property values in the ViewModel change, those new values automatically propagate to the view via data binding. MVVM Architecture References Data bindings Notify property changed Sequence Diagram for MVVM Summary Summary.
Recommended publications
  • Declarative Languages for Big Streaming Data a Database Perspective
    Tutorial Declarative Languages for Big Streaming Data A database Perspective Riccardo Tommasini Sherif Sakr University of Tartu Unversity of Tartu [email protected] [email protected] Emanuele Della Valle Hojjat Jafarpour Politecnico di Milano Confluent Inc. [email protected] [email protected] ABSTRACT sources and are pushed asynchronously to servers which are The Big Data movement proposes data streaming systems to responsible for processing them [13]. tame velocity and to enable reactive decision making. However, To facilitate the adoption, initially, most of the big stream approaching such systems is still too complex due to the paradigm processing systems provided their users with a set of API for shift they require, i.e., moving from scalable batch processing to implementing their applications. However, recently, the need for continuous data analysis and pattern detection. declarative stream processing languages has emerged to simplify Recently, declarative Languages are playing a crucial role in common coding tasks; making code more readable and main- fostering the adoption of Stream Processing solutions. In partic- tainable, and fostering the development of more complex appli- ular, several key players introduce SQL extensions for stream cations. Thus, Big Data frameworks (e.g., Flink [9], Spark [3], 1 processing. These new languages are currently playing a cen- Kafka Streams , and Storm [19]) are starting to develop their 2 3 4 tral role in fostering the stream processing paradigm shift. In own SQL-like approaches (e.g., Flink SQL , Beam SQL , KSQL ) this tutorial, we give an overview of the various languages for to declaratively tame data velocity. declarative querying interfaces big streaming data.
    [Show full text]
  • Python Programming
    Python Programming Wikibooks.org June 22, 2012 On the 28th of April 2012 the contents of the English as well as German Wikibooks and Wikipedia projects were licensed under Creative Commons Attribution-ShareAlike 3.0 Unported license. An URI to this license is given in the list of figures on page 149. If this document is a derived work from the contents of one of these projects and the content was still licensed by the project under this license at the time of derivation this document has to be licensed under the same, a similar or a compatible license, as stated in section 4b of the license. The list of contributors is included in chapter Contributors on page 143. The licenses GPL, LGPL and GFDL are included in chapter Licenses on page 153, since this book and/or parts of it may or may not be licensed under one or more of these licenses, and thus require inclusion of these licenses. The licenses of the figures are given in the list of figures on page 149. This PDF was generated by the LATEX typesetting software. The LATEX source code is included as an attachment (source.7z.txt) in this PDF file. To extract the source from the PDF file, we recommend the use of http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ utility or clicking the paper clip attachment symbol on the lower left of your PDF Viewer, selecting Save Attachment. After extracting it from the PDF file you have to rename it to source.7z. To uncompress the resulting archive we recommend the use of http://www.7-zip.org/.
    [Show full text]
  • Kodai: a Software Architecture and Implementation for Segmentation
    University of Rhode Island DigitalCommons@URI Open Access Master's Theses 2017 Kodai: A Software Architecture and Implementation for Segmentation Rick Rejeleene University of Rhode Island, [email protected] Follow this and additional works at: https://digitalcommons.uri.edu/theses Recommended Citation Rejeleene, Rick, "Kodai: A Software Architecture and Implementation for Segmentation" (2017). Open Access Master's Theses. Paper 1107. https://digitalcommons.uri.edu/theses/1107 This Thesis is brought to you for free and open access by DigitalCommons@URI. It has been accepted for inclusion in Open Access Master's Theses by an authorized administrator of DigitalCommons@URI. For more information, please contact [email protected]. KODAI: A SOFTWARE ARCHITECTURE AND IMPLEMENTATION FOR SEGMENTATION BY RICK REJELEENE A THESIS SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENTS OF MASTER OF SCIENCE IN COMPUTER SCIENCE UNIVERSITY OF RHODE ISLAND 2017 MASTER OF SCIENCE THESIS OF RICK REJELEENE APPROVED: Thesis Committee: Major Professor: Joan Peckham Lisa DiPippo Ruby Dholakia Nasser H Zawia DEAN OF GRADUATE COMMITTEE UNIVERSITY OF RHODE ISLAND 2017 ABSTRACT The purpose of this thesis is to design and implement a software architecture for segmen- tation models to improve revenues for a supermarket. This tool supports analysis of su- permarket products and generates results to interpret consumer behavior, to give busi- nesses deeper insights into targeted consumer markets. The software design developed is named as Kodai. Kodai is horizontally reusable and can be adapted across various indus- tries. This software framework allows testing a hypothesis to address the problem of in- creasing revenues in supermarkets. Kodai has several advantages, such as analyzing and visualizing data, and as a result, businesses can make better decisions.
    [Show full text]
  • DARPA and Data: a Portfolio Overview
    DARPA and Data: A Portfolio Overview William C. Regli Special Assistant to the Director Defense Advanced Research Projects Agency Brian Pierce Director Information Innovation Office Defense Advanced Research Projects Agency Fall 2017 Distribution Statement “A” (Approved for Public Release, Distribution Unlimited) 1 DARPA Dreams of Data • Investments over the past decade span multiple DARPA Offices and PMs • Information Innovation (I2O): Software Systems, AI, Data Analytics • Defense Sciences (DSO): Domain-driven problems (chemistry, social science, materials science, engineering design) • Microsystems Technology (MTO): New hardware to support these processes (neuromorphic processor, graph processor, learning systems) • Products include DARPA Program testbeds, data and software • The DARPA Open Catalog • Testbeds include those in big data, cyber-defense, engineering design, synthetic bio, machine reading, among others • Multiple layers and qualities of data are important • Important for reproducibility; important as fuel for future DARPA programs • Beyond public data to include “raw” data, process/workflow data • Data does not need to be organized to be useful or valuable • Software tools are getting better eXponentially, ”raw” data can be processed • Changing the economics (Forensic Data Curation) • Its about optimizing allocation of attention in human-machine teams Distribution Statement “A” (Approved for Public Release, Distribution Unlimited) 2 Working toward Wisdom Wisdom: sound judgment - governance Abstraction Wisdom (also Understanding:
    [Show full text]
  • The Turbogears Toolbox and Other Tools
    19 The TurboGears Toolbox and Other Tools In This Chapter ■ 19.1 Toolbox Overview 372 ■ 19.2 ModelDesigner 373 ■ 19.3 CatWalk 375 ■ 19.4 WebConsole 377 ■ 19.5 Widget Browser 378 ■ 19.6 Admi18n and System Info 379 ■ 19.7 The tg-admin Command 380 ■ 19.8 Other TurboGears Tools 380 ■ 19.9 Summary 381 371 226Ramm_ch19i_indd.indd6Ramm_ch19i_indd.indd 337171 110/17/060/17/06 111:50:421:50:42 AAMM urboGears includes a number of nice features to make your life as a de- Tveloper just a little bit easier. The TurboGears Toolbox provides tools for creating and charting your database model, adding data to your database with a web based GUI while you are still in development, debugging system problems, browsing all of the installed widgets, and internationalizing your application. 19.1 Toolbox Overview The TurboGears Toolbox is started with the tg-admin toolbox command. Your browser should automatically pop up when you start the Toolbox, but if it doesn’t you should still be able to browse to http://localhost:7654, where you’ll see a web page with links for each of the tools in the toolbox (as seen in Figure 19.1). FIGURE 19.1 The TurboGears Toolbox home page Each of the components in the Toolbox is also a TurboGears application, so you can also look at them as examples of how TurboGears applications are built. 372 226Ramm_ch19i_indd.indd6Ramm_ch19i_indd.indd 337272 110/17/060/17/06 111:50:431:50:43 AAMM 19.2 ModelDesigner 373 Because there isn’t anything in TurboGears that can’t be done in code or from the command line, the use of the Toolbox is entirely optional.
    [Show full text]
  • STORM: Refinement Types for Secure Web Applications
    STORM: Refinement Types for Secure Web Applications Nico Lehmann Rose Kunkel Jordan Brown Jean Yang UC San Diego UC San Diego Independent Akita Software Niki Vazou Nadia Polikarpova Deian Stefan Ranjit Jhala IMDEA Software Institute UC San Diego UC San Diego UC San Diego Abstract Centralizing policy specification is not a new idea. Several We present STORM, a web framework that allows developers web frameworks (e.g., HAILS [4], JACQUELINE [5], and to build MVC applications with compile-time enforcement of LWEB [6]) already do this. These frameworks, however, have centrally specified data-dependent security policies. STORM two shortcomings that have hindered their adoption. First, ensures security using a Security Typed ORM that refines the they enforce policies at run-time, typically using dynamic (type) abstractions of each layer of the MVC API with logical information flow control (IFC). While dynamic enforcement assertions that describe the data produced and consumed by is better than no enforcement, dynamic IFC imposes a high the underlying operation and the users allowed access to that performance overhead, since the system must be modified to data. To evaluate the security guarantees of STORM, we build a track the provenance of data and restrict where it is allowed formally verified reference implementation using the Labeled to flow. More importantly, certain policy violations are only IO (LIO) IFC framework. We present case studies and end-to- discovered once the system is deployed, at which point they end applications that show how STORM lets developers specify may be difficult or expensive to fix, e.g., on applications diverse policies while centralizing the trusted code to under 1% running on IoT devices [7].
    [Show full text]
  • FOSS Philosophy 6 the FOSS Development Method 7
    1 Published by the United Nations Development Programme’s Asia-Pacific Development Information Programme (UNDP-APDIP) Kuala Lumpur, Malaysia www.apdip.net Email: [email protected] © UNDP-APDIP 2004 The material in this book may be reproduced, republished and incorporated into further works provided acknowledgement is given to UNDP-APDIP. For full details on the license governing this publication, please see the relevant Annex. ISBN: 983-3094-00-7 Design, layout and cover illustrations by: Rezonanze www.rezonanze.com PREFACE 6 INTRODUCTION 6 What is Free/Open Source Software? 6 The FOSS philosophy 6 The FOSS development method 7 What is the history of FOSS? 8 A Brief History of Free/Open Source Software Movement 8 WHY FOSS? 10 Is FOSS free? 10 How large are the savings from FOSS? 10 Direct Cost Savings - An Example 11 What are the benefits of using FOSS? 12 Security 13 Reliability/Stability 14 Open standards and vendor independence 14 Reduced reliance on imports 15 Developing local software capacity 15 Piracy, IPR, and the WTO 16 Localization 16 What are the shortcomings of FOSS? 17 Lack of business applications 17 Interoperability with proprietary systems 17 Documentation and “polish” 18 FOSS SUCCESS STORIES 19 What are governments doing with FOSS? 19 Europe 19 Americas 20 Brazil 21 Asia Pacific 22 Other Regions 24 What are some successful FOSS projects? 25 BIND (DNS Server) 25 Apache (Web Server) 25 Sendmail (Email Server) 25 OpenSSH (Secure Network Administration Tool) 26 Open Office (Office Productivity Suite) 26 LINUX 27 What is Linux?
    [Show full text]
  • Industrialization of a Multi-Server Software Solution DEGREE FINAL WORK
    Escola Tècnica Superior d’Enginyeria Informàtica Universitat Politècnica de València Industrialization of a multi-server software solution DEGREE FINAL WORK Degree in Computer Engineering Author: Víctor Martínez Bevià Tutor: Andrés Terrasa Barrena Jaume Jordán Prunera Course 2016-2017 Acknowledgements To my tutors, Andrés and Jaume, for their care, attention and continued help through the execution of this Degree Final Work. To Encarna Maria, whose support knows no end. iii iv Resum L’objectiu del Treball de Fi de Grau és reescriure el procés de desplegament per a una solució de programari multiservidor per ser conforme amb el programari d’orquestració i automatització i redissenyar un flux de treball seguint pràctiques d’integració contínua i proves automàtiques. El projecte també inclou la implementació dels instal·ladors de ca- da component per a les arquitectures Windows i Linux emprant la infraestructura pròpia de l’empresa. Paraules clau: Industrialització, integració contínua, instal·ladors, testing, vmware orc- hestrator, jenkins, robot, gitlab Resumen El objetivo del Trabajo de Fin de Grado es reescribir el proceso de despliegue para una solución software multiservidor para estar en conformidad con el software de orquesta- ción y automatización y rediseñar un flujo de trabajo siguiendo prácticas de integración continua y pruebas automáticas. El proyecto también incluye la implementación de los instaladores de cada componente para las arquitecturas Windows y Linux usando la in- fraestructura propia de la empresa. Palabras clave: Industrialización, integración continua, instaladores, testing, vmware or- chestrator, jenkins, robot, gitlab Abstract The goal of the Final Degree Work is to rewrite the deployment process for a multi- server software solution in order to be compliant with the company’s orchestration and automation software while redesigning a development workflow following continuous integration and continuous automated testing principles.
    [Show full text]
  • HOWTO Use Python in the Web Release 2.7.9
    HOWTO Use Python in the web Release 2.7.9 Guido van Rossum and the Python development team December 10, 2014 Python Software Foundation Email: [email protected] Contents 1 The Low-Level View 2 1.1 Common Gateway Interface.....................................2 Simple script for testing CGI.....................................2 Setting up CGI on your own server..................................3 Common problems with CGI scripts.................................3 1.2 mod_python..............................................4 1.3 FastCGI and SCGI..........................................4 Setting up FastCGI..........................................5 1.4 mod_wsgi...............................................5 2 Step back: WSGI 5 2.1 WSGI Servers.............................................6 2.2 Case study: MoinMoin........................................6 3 Model-View-Controller 6 4 Ingredients for Websites 7 4.1 Templates...............................................7 4.2 Data persistence............................................8 5 Frameworks 8 5.1 Some notable frameworks......................................9 Django.................................................9 TurboGears..............................................9 Zope.................................................. 10 Other notable frameworks...................................... 10 Index 11 Author Marek Kubica Abstract This document shows how Python fits into the web. It presents some ways to integrate Python with a web server, and general practices useful for developing web
    [Show full text]
  • After the Storm After the Storm the Jobs and Skills That Will Drive the Post-Pandemic Recovery
    After the Storm After the Storm The Jobs and Skills that will Drive the Post-Pandemic Recovery February 2021 © Burning Glass Technologies 2021 1 After the Storm Table of Contents Table of Contents 1. Executive Summary pg 3 2. Introduction pg 6 3. The Readiness Economy pg 14 4. The Logistics Economy pg 16 5. The Green Economy pg 19 6. The Remote Economy pg 22 7. The Automated Economy pg 24 8. Implications pg 27 9. Methodology pg 29 10. Appendix pg 30 By Matthew Sigelman, Scott Bittle, Nyerere Hodge, Layla O’Kane, and Bledi Taska, with Joshua Bodner, Julia Nitschke, and Rucha Vankudre ©© BurningBurning GlassGlass TechnologiesTechnologies 20212021 22 After the Storm Executive Summary 1 Executive Summary The recession left in the wake of the • These jobs represent significant fractions COVID-19 pandemic is unprecedented. of the labor market: currently 13% of The changes have been so profound that demand and 10% of employment, but fundamental patterns of how we work, in addition they are important inflection produce, move, and sell will never be the points for the economy. A shortage same. of talent in these fields could set back broader recovery if organizations can’t If the U.S. is going to have a recovery that cope with these demands. not only brings the economy back to where • Jobs in these new “economies” are it was but also ensures a more equitable projected to grow at almost double the future, it is crucial to understand what jobs rate of the job market overall (15% vs. and skills are likely to drive the recovery.
    [Show full text]
  • Turbogears Has a Command Line Tool with a Few Features That Will Be Touched Upon in This Tutorial
    The 20 Minute Wiki by Kevin Dangoor There is a printable version of this document. This is the text version of the "20 Minute Wiki" video (40MB QuickTime). (See video help for more information about viewing the videos.) To go through this tutorial, you'll want: 1. docutils 0.3.9 or later, which is used for formatting. You could get away with not having docutils, but it's not as much fun. easy_install docutils should get you what you need. 2. A web browser 3. Your favorite editor 4. Two command line windows (you only need one, but two is nicer.) 5. A database. If you don't have one, your best bet is sqlite 3.2+ with pysqlite 2.0+. This tutorial doesn't cover Python at all. Check the docs section for more coverage of Python. The Quickstart TurboGears has a command line tool with a few features that will be touched upon in this tutorial. The first is "quickstart", which will get us up and running quickly. tg-admin quickstart You'll be prompted for the name of the project (this is the pretty name that human beings would appreciate), and the name of the package (this is the less-pretty name that Python will like). For this tutorial, we'll be using these values: Enter project name: Wiki 20 Enter package name [wiki20]: wiki20 Do you need Identity (usernames/passwords) in this project? [no] no This creates a few files in a directory tree just below your current directory. Let's go in there and you can take a look around.
    [Show full text]
  • What's New in Omnis Studio 8.1.7
    What’s New in Omnis Studio 8.1.7 Omnis Software April 2019 48-042019-01a The software this document describes is furnished under a license agreement. The software may be used or copied only in accordance with the terms of the agreement. Names of persons, corporations, or products used in the tutorials and examples of this manual are fictitious. No part of this publication may be reproduced, transmitted, stored in a retrieval system or translated into any language in any form by any means without the written permission of Omnis Software. © Omnis Software, and its licensors 2019. All rights reserved. Portions © Copyright Microsoft Corporation. Regular expressions Copyright (c) 1986,1993,1995 University of Toronto. © 1999-2019 The Apache Software Foundation. All rights reserved. This product includes software developed by the Apache Software Foundation (http://www.apache.org/). Specifically, this product uses Json-smart published under Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) The iOS application wrapper uses UICKeyChainStore created by http://kishikawakatsumi.com and governed by the MIT license. Omnis® and Omnis Studio® are registered trademarks of Omnis Software. Microsoft, MS, MS-DOS, Visual Basic, Windows, Windows Vista, Windows Mobile, Win32, Win32s are registered trademarks, and Windows NT, Visual C++ are trademarks of Microsoft Corporation in the US and other countries. Apple, the Apple logo, Mac OS, Macintosh, iPhone, and iPod touch are registered trademarks and iPad is a trademark of Apple, Inc. IBM, DB2, and INFORMIX are registered trademarks of International Business Machines Corporation. ICU is Copyright © 1995-2003 International Business Machines Corporation and others.
    [Show full text]