Webrtc Meeting Portal

Total Page:16

File Type:pdf, Size:1020Kb

Webrtc Meeting Portal Masaryk University Faculty of Informatics WebRTC Meeting Portal Bachelor’s Thesis Václav Štěbra Brno, Spring 2016 Declaration Hereby I declare that this paper is my original authorial work, which I have worked out on my own. All sources, references, and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source. Václav Štěbra Advisor: doc. RNDr. Tomáš Pitner, Ph.D. i Acknowledgement I am very thankful to my colleagues from SDE for their great and valuable feedback on the implementation of the portal. I would also like to thank my parents for their endless support. iii Abstract The goal of the thesis is to build online meeting portal. The portal should be built using the WebRTC technology which enables real-time communication in the web browser. The thesis should also investigate already existing applications that can be used for video conferences. iv Keywords online audio communication, online video communication, WebRTC, Javascript, NodeJS, HTML5 v Contents 1 Introduction ............................1 1.1 Motivation ..........................1 1.2 Goal of the thesis .......................2 2 Online communication .....................3 2.1 Real-time communication applications ............3 2.1.1 Desktop applications . .4 2.1.2 Web applications . .4 2.2 WebRTC ............................5 3 Portal requirements .......................7 3.1 Functional requirements ...................7 3.2 Nonfunctional requirements .................7 3.2.1 Used technologies . .9 4 Architecture and implementation ............... 15 4.1 Authentication ........................ 15 4.2 Meeting planning ....................... 15 4.3 Meetings ........................... 15 4.4 Architecture .......................... 16 4.4.1 Routing . 16 4.4.2 Models . 19 4.4.3 WebSocket server . 20 4.4.4 WebRTC . 21 5 Deployment of the portal .................... 27 6 Conclusion ............................. 31 6.1 Evaluation ........................... 31 6.2 Possible extensions ...................... 31 Bibliography . 33 A Attachment ............................ 35 vii List of Figures 3.1 Use case diagram for the portal 8 3.2 WebRTC architecture [12] 13 4.1 Classes representing application controllers 18 4.2 Sequence diagram for making WebRTC call 25 5.1 Deployment diagram for the portal 29 ix 1 Introduction 1.1 Motivation The Internet is everywhere in today’s society. It can be found in our homes, coffee shops, buses and even in our mobile phones. Internet has created a brand new way of communication between people in the whole world. It does not matter if you are in the Czech Republic, in the United States or in the Australia – there is still Internet connection available. And with that comes the opportunity to communicate with other people. The internet browser has become one of the most used application in almost all devices. It became an indispensable part of our life. Some of the computer users do not even use any other application than the browser. It became gate to their digital lives. Even though Internet originally served for publishing static con- tent, Rich Internet Applications have begun to spread recently. These applications look like old fashioned desktop applications and pro- vide web pages with interactivity – moving objects on the page, better graphics, asynchronous reloading of information on the web page, playing multimedia, etc. Also real-time applications have begun to ex- pand. These applications make communication from server to clients possible. Instead of just clients sending requests to the server, the server can now provide all connected clients with fresh information as soon as it is available. Real-time technologies made the creation of multimedia communication applications directly in the browser possible. They are also used mostly for applications like social media, or online games, where the freshness of the data is very important. In the past plugins were used for creating real-time applications. These plugins were needed to install in the browser in order for the page to work correctly. This solution is not ideal, because it forces users to become maintainers of their own browser. It also forces them to install and check for updates of these plugins for which some users may not have the necessary knowledge. Some of these plugins do not necessarily have to be safe and they open backdoors to user’s com- puter. Examples of these plugins are Flash and Silverlight. Because 1 1. Introduction of these shortcomings HTML51 and Javascript have been spreading more. These technologies provide way to create interactive applica- tions without the need of using yet another modules. They are using native capabilities of the browser and therefore there is no need to install and maintain plugins. 1.2 Goal of the thesis This bachelor thesis is concerned with creation of internet portal which will be used for making audio and video conferences. Most of today’s solutions for online conferences is in the form of desktop applications which forces users to download, install and maintain this installation on their own computers. Usage of these application may also not be free for larger group of people in simultaneous call. The portal is based on WebRTC2 technology. This technology provides interfaces for real- time communication directly between browsers. It contains functions for sending audio, video and also files. This interface is becoming part of almost all browsers. Therefore there is no need of any interference from user in order to use this portal. When WebRTC will be available in all browsers, the portal will be available to all users no matter what device they use. Management of the users participating in given conference is vital part of this portal. When creating a conference there is possibility to pick a list of users who will participate in this conference. Theoretical part of this thesis is researching applications that are currently used for online conferences. Next part contains the descrip- tion of available technologies that can be used for creating Rich Internet Applications. Main content is the description of WebRTC technology and interfaces it provides for programmers. Practical part is describ- ing the implementation of the portal and the resulting application. It sums the decisions made during the development of the portal including its deployment. In the next chapter of the practical part is the implementation evaluated and the problems and shortcomings that appeared during the development are mentioned. Possibilities of further extension are summarized in the conclusion. 1. HyperText Markup Language 2. Web Real-Time Communication – https://webrtc.org/ 2 2 Online communication With the development of the internet there has been a big expansion of communication over internet. Advantages of online communication are high availability and that this communication is mostly free of charge – included in the cost of internet connection. In the time of writing this thesis 72,97 percent of population of Czech Republic has Internet connection [3]. In the world it is 35 percent of all population [3]. This high percentage of availability makes internet great platform for everyday communication with family, friends, coworkers and also with clients. Online communication can be divided based on the type of trans- ferred messages. The most widely used form of communication nowa- days is text communication. Examples of this communication are email, social networks and chat portals. The main advantage of this form of communication is that the recipient of the message does not have to be online and can read the messages later. Another advantage is that it is easier to store the history of the communication. Next form of communication is multimedia communication. This commu- nication transfers audio, video or combination of both between the participants in the real-time. The main advantage is the possibility of immediate reaction like in the personal communication. Disadvan- tages are bigger data flow and need of bigger storage in order to store the history of communication. This thesis is concerned with creating online portal for video conferences. 2.1 Real-time communication applications This section describes various applications that can be used for any form of real-time communication. It lists both desktop and web appli- cations. Web applications are easier to use because they do not usually need any setup. On the other hand desktop applications often offers richer functions and higher quality of audio and video transfer. It is up to the individual to select which solution suits his needs. 3 2. Online communication 2.1.1 Desktop applications ∙ Skype1 – communication application owned by Microsoft. It supports both chat messages and audio and video calls. It also supports calls to mobile phones and group calls. ∙ Pidgin2 – chat application that can use various chat networks such as ICQ, Google Talk, XMPP, IRC. It is also extensible with plugins, which can add support for other networks and proto- cols. ∙ ICQ3 – instant messaging software using OSCAR protocol. Some of it’s features are group chats, video chats and file trans- fers. ∙ Miranda4 – lightweight instant messaging software which sup- ports multiple communication protocols. It is also extensible via plugins which can add support for other most used protocol that are not included in the base distributions. 2.1.2 Web applications ∙ Oracle Beehive Conferencing5 – web conferencing software used mostly by Oracle
Recommended publications
  • Document Object Model
    Document Object Model CITS3403: Agile Web Development Semester 1, 2021 Introduction • We’ve seen JavaScript core – provides a general scripting language – but why is it so useful for the web? • Client-side JavaScript adds collection of objects, methods and properties that allow scripts to interact with HTML documents dynamic documents client-side programming • This is done by bindings to the Document Object Model (DOM) – “The Document Object Model is a platform- and language-neutral interface that will allow programs and scripts to dynamically access and update the content, structure and style of documents.” – “The document can be further processed and the results of that processing can be incorporated back into the presented page.” • DOM specifications describe an abstract model of a document – API between HTML document and program – Interfaces describe methods and properties – Different languages will bind the interfaces to specific implementations – Data are represented as properties and operations as methods • https://www.w3schools.com/js/js_htmldom.asp The DOM Tree • DOM API describes a tree structure – reflects the hierarchy in the XTML document – example... <html xmlns = "http://www.w3.org/1999/xhtml"> <head> <title> A simple document </title> </head> <body> <table> <tr> <th>Breakfast</th> <td>0</td> <td>1</td> </tr> <tr> <th>Lunch</th> <td>1</td> <td>0</td> </tr> </table> </body> </html> Execution Environment • The DOM tree also includes nodes for the execution environment in a browser • Window object represents the window displaying a document – All properties are visible to all scripts – Global variables are properties of the Window object • Document object represents the HTML document displayed – Accessed through document property of Window – Property arrays for forms, links, images, anchors, … • The Browser Object Model is sometimes used to refer to bindings to the browser, not specific to the current page (document) being rendered.
    [Show full text]
  • Learning HTML5 Game Programming Addison-Wesley Learning Series
    Learning HTML5 Game Programming Addison-Wesley Learning Series Visit informit.com/learningseries for a complete list of available publications. The Addison-Wesley Learning Series is a collection of hands-on programming guides that help you quickly learn a new technology or language so you can apply what you’ve learned right away. Each title comes with sample code for the application or applications built in the text. This code is fully annotated and can be reused in your own projects with no strings attached. Many chapters end with a series of exercises to encourage you to reexamine what you have just learned, and to tweak or adjust the code as a way of learning. Titles in this series take a simple approach: they get you going right away and leave you with the ability to walk off and build your own application and apply the language or technology to whatever you are working on. Learning HTML5 Game Programming A Hands-on Guide to Building Online Games Using Canvas, SVG, and WebGL James L. Williams Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Cape Town • Sydney • Tokyo • Singapore • Mexico City Many of the designations used by manufacturers and sellers to distinguish their products Associate are claimed as trademarks. Where those designations appear in this book, and the publish- Publisher er was aware of a trademark claim, the designations have been printed with initial capital Mark Taub letters or in all capitals. Senior Acquisitions The author and publisher have taken care in the preparation of this book, but make no Editor expressed or implied warranty of any kind and assume no responsibility for errors or omis- Trina MacDonald sions.
    [Show full text]
  • Framework for Developing Offline HTML5 Applications
    MASARYK UNIVERSITY FACULTY}w¡¢£¤¥¦§¨ OF I !"#$%&'()+,-./012345<yA|NFORMATICS Framework for Developing Offline HTML5 Applications DIPLOMA THESIS Petr Kunc Brno, 2013 Declaration Hereby I declare, that this paper is my original authorial work, which I have worked out by my own. All sources, references and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source. Advisor: doc. RNDr. Tomás Pitner, PhD. ii Acknowledgement Above all, I would like to thank my advisor doc. RNDr. Tomáš Pitner, PhD. for leading not only this diploma thesis but also for leading me during my studies. I would also like to thank my colleagues in Laboratory of Software Architectures and Information Systems, especially Mgr. Filip Nguyen and Mgr. Daniel Tovarˇnákfor priceless advice on implementation and for providing their knowledge. Nevertheless, I would like to thank my colleagues in Celebrio Software company. iii Abstract The aim of this thesis is to provide detailed information about developing offline web ap- plications. The thesis presents important technologies in the development and mostly deals with Application cache technology. It summarizes advantages and also disadvantages and problems of the technology. Then, it offers solutions to some of the problems and introduces framework for build- ing offline web applications more sophisticatedly. At last, demonstration application is pre- sented which shows the benefits of proposed technology. iv Keywords HTML5, offline, web applications, application
    [Show full text]
  • Web Tracking: Mechanisms, Implications, and Defenses Tomasz Bujlow, Member, IEEE, Valentín Carela-Español, Josep Solé-Pareta, and Pere Barlet-Ros
    ARXIV.ORG DIGITAL LIBRARY 1 Web Tracking: Mechanisms, Implications, and Defenses Tomasz Bujlow, Member, IEEE, Valentín Carela-Español, Josep Solé-Pareta, and Pere Barlet-Ros Abstract—This articles surveys the existing literature on the of ads [1], [2], price discrimination [3], [4], assessing our methods currently used by web services to track the user online as health and mental condition [5], [6], or assessing financial well as their purposes, implications, and possible user’s defenses. credibility [7]–[9]. Apart from that, the data can be accessed A significant majority of reviewed articles and web resources are from years 2012 – 2014. Privacy seems to be the Achilles’ by government agencies and identity thieves. Some affiliate heel of today’s web. Web services make continuous efforts to programs (e.g., pay-per-sale [10]) require tracking to follow obtain as much information as they can about the things we the user from the website where the advertisement is placed search, the sites we visit, the people with who we contact, to the website where the actual purchase is made [11]. and the products we buy. Tracking is usually performed for Personal information in the web can be voluntarily given commercial purposes. We present 5 main groups of methods used for user tracking, which are based on sessions, client by the user (e.g., by filling web forms) or it can be collected storage, client cache, fingerprinting, or yet other approaches. indirectly without their knowledge through the analysis of the A special focus is placed on mechanisms that use web caches, IP headers, HTTP requests, queries in search engines, or even operational caches, and fingerprinting, as they are usually very by using JavaScript and Flash programs embedded in web rich in terms of using various creative methodologies.
    [Show full text]
  • Security Considerations Around the Usage of Client-Side Storage Apis
    Security considerations around the usage of client-side storage APIs Stefano Belloro (BBC) Alexios Mylonas (Bournemouth University) Technical Report No. BUCSR-2018-01 January 12 2018 ABSTRACT Web Storage, Indexed Database API and Web SQL Database are primitives that allow web browsers to store information in the client in a much more advanced way compared to other techniques such as HTTP Cookies. They were originally introduced with the goal of enhancing the capabilities of websites, however, they are often exploited as a way of tracking users across multiple sessions and websites. This work is divided in two parts. First, it quantifies the usage of these three primitives in the context of user tracking. This is done by performing a large-scale analysis on the usage of these techniques in the wild. The results highlight that code snippets belonging to those primitives can be found in tracking scripts at a surprising high rate, suggesting that user tracking is a major use case of these technologies. The second part reviews of the effectiveness of the removal of client-side storage data in modern browsers. A web application, built for specifically for this study, is used to highlight that it is often extremely hard, if not impossible, for users to remove personal data stored using the three primitives considered. This finding has significant implications, because those techniques are often uses as vector for cookie resurrection. CONTENTS Abstract ........................................................................................................................
    [Show full text]
  • Web Technologies VU (706.704)
    Web Technologies VU (706.704) Vedran Sabol ISDS, TU Graz Nov 09, 2020 Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 09, 2020 1 / 68 Outline 1 Introduction 2 Drawing in the Browser (SVG, 3D) 3 Audio and Video 4 Javascript APIs 5 JavaScript Changes Vedran Sabol (ISDS, TU Graz) Web Technologies Nov 09, 2020 2 / 68 HTML5 - Part II Web Technologies (706.704) Vedran Sabol ISDS, TU Graz Nov 09, 2020 Vedran Sabol (ISDS, TU Graz) HTML5 - Part II Nov 09, 2020 3 / 68 Drawing in the Browser (SVG, 3D) SVG Scalable Vector Graphics (SVG) Web standard for vector graphics (as opposed to canvas - raster-based) Declarative style (as opposed to canvas rendering - procedural) Developed by W3C (http://www.w3.org/Graphics/SVG/) XML application (SVG DTD) http://www.w3.org/TR/SVG11/svgdtd.html SVG is supported by all current browsers Editors Inkscape and svg-edit (Web App) Vedran Sabol (ISDS, TU Graz) HTML5 - Part II Nov 09, 2020 4 / 68 Drawing in the Browser (SVG, 3D) SVG Features Basic shapes: rectangles, circles, ellipses, path, etc. Painting: filling, stroking, etc. Text Example - simple shapes Grouping of basic shapes Transformation: translation, rotation, scale, skew Example - grouping and transforms Vedran Sabol (ISDS, TU Graz) HTML5 - Part II Nov 09, 2020 5 / 68 Drawing in the Browser (SVG, 3D) SVG Features Colors: true color, transparency, gradients, etc. Clipping, masking Filter effects Interactivity: user events Scripting, i.e. JavaScript, supports DOM Animation: attributes, transforms, colors, motion (along paths) Raster images may be embedded (JPEG,
    [Show full text]
  • Web-Based Fingerprinting Techniques
    Web-based Fingerprinting Techniques V´ıtor Bernardo and Dulce Domingos LaSIGE, Faculdade de Ciencias,ˆ Universidade de Lisboa, Lisboa, Portugal Keywords: Browser Fingerprinting, Cross-browser Fingerprinting, Device Fingerprinting, Privacy, Fingerprint. Abstract: The concept of device fingerprinting is based in the assumption that each electronic device holds a unique set of physical and/or logical features that others can capture and use to differentiate it from the whole. Web-based fingerprinting, a particular case of device fingerprinting, allows website owners to differentiate devices based on the set of information that browsers transmit. Depending on the techniques being used, a website can track a device based on its browser features (browser fingerprinting) or based on system settings (cross-browser fingerprinting). The latter allows identification of the device even when more than one browser is used. Several different works have introduced new techniques over the last years proving that fingerprinting can be done in multiple ways, but there is not a consolidated work gathering all of them. The current work identifies known web-based fingerprinting techniques, categorizing them as which ones are browser and which are cross-browser and showing real examples of the data that can be captured with each technique. The study is synthesized in a taxonomy, which provides a clear separation between techniques, making it easier to identify the threats to security and privacy inherent to each one. 1 INTRODUCTION far more upsetting than simple cookies. In most cases, web-based fingerprinting is used to Device fingerprinting is based on the assumption that track users activity in sites and bind a device finger- no two devices are exactly alike and that profiles can print to a user profile (together with its preferences, be created by capturing the emanation patterns sent tastes and interests).
    [Show full text]
  • Sessionstorage
    Offline First HTML5 technologies for a faster, smarter, more engaging web © 2014 John Allsopp, Web Directions draft 1 intro-1 Offline Apps with HTML5 What if I told you that you don’t have to be online to use the Web? There’s a general (and understandable) belief by many developers, not to mention most users, that websites and web applications have a very serious limitation – they can only be used when the browser has a web connection. Indeed, this is routinely cited as one of the real advantages of so-called native apps over the Web. As counter-intuitive as it sounds, in almost every modern browser on any device (including IE10 and up), it’s no longer the case that users need to be connected to the Web to use our websites and applications, provided we developers do a little extra work to make our site or application persist when a browser is offline. This opens up a whole range of opportunities, leveling the field with native apps that can be installed on the user’s phone, tablet, laptop or desktop computer, or indeed any other device capable of running apps. But there are many more benefits to offline technologies than simply allowing websites and apps to work offline, as we’ll soon discover. Offline First Recently the team behind the “Hoodie” framework published “Offline first”1 a new way of thinking about developing for the Web. They observe that even in the developed world, mobile bandwidth and connectivity, increasingly the primary way in which people connect to the Web, are not always guaranteed to be there, or be reliable, and, they state: “We can’t keep building apps with the desktop mindset of permanent, fast connectivity, where a temporary disconnection or slow service is regarded as a problem and communicated as an error.” And when we think of offline and online, we typically only focus on the client, but servers go offline as well, both for routine maintenance, or in times of crisis, or under heavy stress.
    [Show full text]
  • HTML5 Web Storage
    HHTTMMLL55 -- WWEEBB SSTTOORRAAGGEE http://www.tutorialspoint.com/html5/html5_web_storage.htm Copyright © tutorialspoint.com HTML5 introduces two mechanisms, similar to HTTP session cookies, for storing structured data on the client side and to overcome following drawbacks. Cookies are included with every HTTP request, thereby slowing down your web application by transmitting the same data. Cookies are included with every HTTP request, thereby sending data unencrypted over the internet. Cookies are limited to about 4 KB of data . Not enough to store required data. The two storage's are session storage and local storage and they would be used to handle different situations. The latest versions of pretty much every browser supports HTML5 Storage including Internet Explorer. Session Storage The Session Storage is designed for scenarios where the user is carrying out a single transaction, but could be carrying out multiple transactions in different windows at the same time. Example For example, if a user buying plane tickets in two different windows, using the same site. If the site used cookies to keep track of which ticket the user was buying, then as the user clicked from page to page in both windows, the ticket currently being purchased would "leak" from one window to the other, potentially causing the user to buy two tickets for the same flight without really noticing. HTML5 introduces the sessionStorage attribute which would be used by the sites to add data to the session storage, and it will be accessible to any page from the same site opened in that window i.e session and as soon as you close the window, session would be lost.
    [Show full text]
  • Webgl Based 3D Game Engine
    WebGL based 3D Game Engine Master thesis Morten Nobel-Jørgensen [email protected] Supervisors Mark Jason Nelson / Daniel Povlsen ITU – Games Marts 2012 WebGL based 3D Game Engine 1 Abstract With the introduction of WebGL Web browsers became capable of using hardware accelerated 3D graphics, which opened up the possibility of creating a wide range of applications including 3D games. In this thesis I will investigate how a 3D game engine can be implemented in a browser using WebGL and JavaScript. First I will take a look at the characteristics of JavaScript and JavaScript engines, by investigating some techniques and software patterns for writing high performance JavaScript, and then examine some of the challenges there are when comes to creating 3D games. To get hands-on experience I have implemented KickJS – a WebGL based 3D game engine. KickJS is a shader-based engine with a range of built-in shaders. Using the KickJS engine I have also created a shader editor, a scene editor and several small 3D demos. Finally I have benchmarked the raw performance of JavaScript and WebGL. I have approached this problem from two sides: First comparing JavaScript performance with C++ performance and then seeing how the rendering performance of KickJS compares with the Unity game engine. In general I found that the JavaScript CPU performance is around 2-4 times slower than C++ based applications. Since much of the calculations are pushed to the GPU, this may not be an issue for small and medium sized games. The availability of WebGL makes the WebGL browsers a very attractive platform.
    [Show full text]
  • HTML5 and Java Technologies
    HTML5 and Java Technologies Peter Doschkinow Senior Java Architect The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. Agenda . Motivation . HTML5 Overview – Related Java Technologies . Thin Server Architecture . Demo Motivation . Need for clarification Gartner’s 2012 Emerging Technologies Hype Cycle – What is behind the hype . Architectural consequences of new trends . What does the Java platform offer to meet the new challenges . Building of common understanding Web Technology History . 1991 HTML . 1995 JavaScript @ Netscape . 1994 HTML2 . 1996 ECMAScript 1.0, 1.1 . 1996 CSS1 . 1997 ECMAScript 1.2 . 1997 HTML4 . 1998 ECMAScript 1.3 . 1998 CSS2 . 2000 ECMAScript 3 . 2000 XHTML1 . 2010 ECMAScript 5 . 2002 Tableless Web Design . Next: ECMAScript 6 Harmony . 2005 AJAX . 2009 HTML5: as of Dec 2012 W3C CR HTML5 Features W3C / Web Hypertext Application Technology Working Group(WHATWG) . Markup – Semantic markup replacing common usages of generic <span>, <div> . <nav>, <footer>,<audio>, <video>, ... API – Canvas 2D (for immidate mode 2D drawing),Timed media playback – Offline Web Applications, Local Srorage and Filesystem, Web Storage – Geolocation, Web Storage, IndexedDB – File API, Drag-and-Drop, Browser History – ... HTML5 Features Offloaded to other specs, originally part of HTML5 . WebSocket API, Server-Sent Events(SSE), Web Messaging, Web Workers, Web Storage (Web Apps WG ) .
    [Show full text]
  • Building Single Page Applications in .NET Core 3
    Building Single Page Applications in .NET Core 3 Jumpstart Coding Using Blazor and C# — Michele Aponte Building Single Page Applications in .NET Core 3 Jumpstart Coding Using Blazor and C# Michele Aponte Building Single Page Applications in .NET Core 3: Jumpstart Coding Using Blazor and C# Michele Aponte Torre del Greco (NA), Italy ISBN-13 (pbk): 978-1-4842-5746-3 ISBN-13 (electronic): 978-1-4842-5747-0 https://doi.org/10.1007/978-1-4842-5747-0 Copyright © 2020 by Michele Aponte This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made.
    [Show full text]