Programming with Wt a C++ Library for Developing Stateful and Highly Interactive Web Applications

Total Page:16

File Type:pdf, Size:1020Kb

Programming with Wt a C++ Library for Developing Stateful and Highly Interactive Web Applications Programming with Wt A C++ library for developing stateful and highly interactive web applications A RMIN S OBHANI ( ASOBHANI @ SHARCNET. CA) SHARCNET U NIVERSITY OF O NTARIO INSTITUTE OF TECHNOLOGY J UNE 2 4 , 2 0 1 5 Outline • Library Overview • A typical web application developed using Wt • Installation • Hello World! • Signals and Slots • Interactive Hello World • Widget Gallery • Wt Variants June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 2 Library Overview June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 3 What is Wt (‘witty’) C++ library and application server for developing web applications Free and open source (http://www.webtoolkit.eu/) Widget-centric rather than page-centric web toolkit Brings desktop programming model to web development Similar in concept to Qt and wxWindows Supports fallback mechanism for maximum browser compatibility Mature, robust, feature reach, well documented and well supported June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 4 Core Library Supports major browsers (Firefox/Gecko, Internet Explorer, Safari, Chrome, Konqueror, Opera and Wt Features web crawlers) Develop and deploy on Unix/Linux/Mac or at a Glance Microsoft Windows (Visual Studio) environments . Core Library Equal behavior with or without support for . Event Handling JavaScript or Ajax . Native Painting System Efficient rendering and (sub-) millisecond latency . Built-in Security . Object Relational Integrated Unicode support and pervasive Mapping Library localization . Unit Testing Support for browser history navigation . Deployment (back/forward buttons and bookmarks) June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 5 Event Handling Type safe signal/slot API for responding to events Listens for keyboard, mouse, focus, scroll or Wt Features drag’n’drop events at a Glance Automatically synchronizes form field data from . Core Library browser to server and tracks server-side changes to be rendered in browser . Event Handling . Native Painting System Integrate with JavaScript libraries . Built-in Security Timed events and server-initiated updates . Object Relational ("server push") Mapping Library . Unit Testing Uses plain HTML CGI, Ajax or WebSockets . Deployment June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 6 Native Painting System Unified 2D painting API which uses the browsers native (vector) graphics support (inline VML, inline SVG, or HTML5 canvas), or renders to Wt Features common image formats (PNG, GIF, ...) or vector at a Glance formats (SVG, PDF) . Core Library Unified GL-based 3D painting API which uses WebGL in the browser or server-side OpenGL . Event Handling (fallback) . Native Painting System Rich set of 2D and 3D charting widgets . Built-in Security . Object Relational Mapping Library . Unit Testing . Deployment June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 7 Built-in Security Kernel-level memory protection Supports encryption and server authentication using Secure Sockets Layer (SSL) or Transport Layer Security (TLS) through Wt Features HTTPS Enables continuous use of HTTPS through low bandwidth at a Glance requirements (fine-grained Ajax) . Core Library Built-in Cross-Site Scripting (XSS) prevention . Event Handling Not vulnerable to Cross-site Request Forgery (CSRF) . Native Painting System Not vulnerable to breaking the application logic by skipping to a . Built-in Security particular URL . Object Relational Session hijacking mitigation and risk prevention Mapping Library DoS mitigation . Unit Testing A built-in authentication module implements best practices for . Deployment authentication, and supports third party identity providers using OAuth 2.0, and (later) OpenID Connect June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 8 Object Relational Mapping Library (Wt::Dbo) Maps Many-to-One and Many-to-Many relations to STL- compatible collections Provides schema generation (aka DDL: data definition Wt Features language) and CRUD operations (aka DML: data at a Glance manipulation language) . Core Library Each session tracks dirty objects and provides a first- level cache . Event Handling . Native Painting System Flexible querying which can query individual fields, objects, or tuples of any of these (using Boost.Tuple) . Built-in Security . Object Relational Comes with Sqlite3, Firebird, MariaDB/MySQL and Mapping Library PostgreSQL backends . Unit Testing . Deployment June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 9 Unit Testing Event handling code constructs and manipulates a widget tree, which can easily be inspected by Wt Features test code Wt::Test::WTestEnvironment allows application to at a Glance be instantiated and events to be simulated in . Core Library absence of a browser . Event Handling . Native Painting System . Built-in Security . Object Relational Mapping Library . Unit Testing . Deployment June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 10 Deployment Built-in httpd (libwthttp) . Simple, high-performance web application server (multi- threaded, asynchronous I/O) based on the C++ asio library Wt Features . Supports the HTTP(S) and WebSocket(S) protocols . Supports response chunking and compression at a Glance . Single process (convenient for development and debugging), . Core Library and embeddable in an existing application . Available for both UNIX and Win32 platforms . Event Handling . Native Painting System FastCGI (libfcgi) • Integrates with most common web servers (apache, lighttpd) . Built-in Security • Different session-to-process mapping strategies . Object Relational • Available only for UNIX platforms Mapping Library . Unit Testing ISAPI • Integrates with Microsoft IIS server . Deployment • Uses the ISAPI asynchronous API for maximum performance • Available for the Win32 platform June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 11 Wt Licensing OPEN SOURCE COMMERCIAL GNU General Public License (GPL) The source code must be available to anyone who you give the application to install the application on its own server. June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 12 Sample Public Web Application Developed using Wt http://pele.bsc.es June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 13 Installation June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 14 System Requirements (Mandatory) CMake cross-platform make utility ( >= 2.6 is preferred ) boost C++ library ( >= 1.41 is preferred) Installation Boost.Date_Time • System Requirements Boost.Regex . Mandatory . Optional Boost.Program_options . Connectors Boost.Signals • Unix • Windows Boost.Random Boost.System Boost.Thread June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 15 System Requirements (Optional) OpenSSL For HTTPS protocol by the web client (Http::Client) and web server (wthttp connector) Libharu Installation Rendering support for PDF documents • System Requirements . Mandatory GraphicsMagick . Optional For outputs to raster images like PNG or GIF . Connectors • Unix Pango For text rendering of TrueType fonts in • Windows WPdfImage and WRasterImage PostgreSQL, MySQL, and Firebird For the ORM library (Wt::Dbo) June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 16 System Requirements (Connectors) FastCGI (Unix only) • Apache 1 or 2, or any web server which supports the FastCGI protocol Installation • Apache mod_fastcgi • System Requirements . Mandatory . Optional Built-in http deamon, wthttpd . Connectors • libz (for compression-over-HTTP) • Unix • OpenSSL (for HTTPS support) • Windows ISAPI (Win32 only) June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 17 Unix Ubuntu $ sudo apt-get install witty witty-dev witty-doc witty-dbg witty-examples Installation Others (Linux, MacOS) $ git clone git://github.com/kdeforche/wt.git • System Requirements $ cd wt . Mandatory $ mkdir build . Optional $ cd build . Connectors $ cmake ../ $ ccmake . • Unix $ make • Windows $ sudo make install June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 18 Windows Binary builds: http://sourceforge.net/projects/witty/files/wt/ Installation • System Requirements . Mandatory . Optional . Connectors • Unix • Windows June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 19 Hello World! June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 20 #include <QApplication> #include <QPushButton> int main(int argc, char **argv) { QApplication app(argc, argv); QPushButton button("Hello world!"); Qt button.show(); Hello World! return app.exec(); } June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 21 hello.cpp #include <Wt/WApplication> #include <Wt/WPushButton> using namespace Wt; class HelloApplication : public WApplication { public: HelloApplication(const WEnvironment& env); Wt }; • hello.cpp HelloApplication::HelloApplication(const WEnvironment& env) : WApplication(env) • Compiling / Linking { root()->addWidget(new WPushButton("Hello World!")); • Program Options } WApplication* createApplication(const WEnvironment& env) • Running { return new HelloApplication(env); } int main(int argc, char** argv) { return WRun(argc, argv, &createApplication); } June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 22 Compiling / Linking $ g++ hello.cpp -o hello -lwt -lwthttp Wt • hello.cpp • Compiling / Linking • Program Options • Running June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 23 Program Options $ ./hello --help Wt • hello.cpp • Compiling / Linking • Program Options • Running June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI 24 Running $ ./hello --docroot . --http-address 0.0.0.0 --http-port 8080 Wt • hello.cpp • Compiling / Linking • Program Options • Running June 24, 2015 PROGRAMMING WITH WT - ARMIN SOBHANI
Recommended publications
  • Open Source Web GUI Toolkits
    Open Source Web GUI Toolkits "A broad and probably far too shallow presentation on stuff that will probably change 180 degrees by the time you hear about it from me" Nathan Schlehlein [email protected] 1 Why Web Developers Drink... Can't get away with knowing one thing A Fairly Typical Web App... ➔ MySQL – Data storage ➔ PHP – Business logic ➔ Javascript - Interactivity ➔ HTML – Presentation stuff ➔ CSS – Presentation formatting stuff ➔ Images – They are... Purdy... ➔ httpd.conf, php.ini, etc. Problems are liable to pop up at any stage... 2 The Worst Thing. Ever. Browser Incompatibilities! Follow the rules, still lose Which is right? ➔ Who cares! You gotta make it work anyways! Solutions More work or less features? ➔ Use browser-specific stuff - Switch via Javascript ➔ Use a subset of HTML that most everyone agrees on 3 Web Application? Web sites are... OK, but... Boring... Bounce users from page to page Stuff gets messed up easily ➔ Bookmarks? Scary... ➔ Back button 4 Why A Web Toolkit? Pros: Let something else worry about difficult things ➔ Layout issues ➔ Session management ➔ Browser cross-compatibility ➔ Annoying RPC stuff 5 >INSERT BUZZWORD HERE< Neat web stuff has been happening lately... AJAX “Web 2.0” Google maps Desktop app characteristics on the web... 6 Problem With >BUZZWORDS< Nice, but... Lots of flux ➔ Technology ➔ Expectations of technology Communications can get tricky Yet another thing to program... ➔ (Correctly) 7 Why A Web Toolkit? Pros: Let something else worry about difficult things ➔ Communications management ➔ Tested Javascript code ➔ Toolkit deals with changes, not the programmer 8 My Criteria Bonuses For... A familiar programming language ➔ Javascript? Unit test capability ➔ Test early, test often, sleep at night Ability to incrementally introduce toolkit Compatibility with existing application Documentation Compelling Examples 9 Web Toolkits – Common Features ■ Widgets ■ Layouts ■ Manipulation of page elements DOM access, etc.
    [Show full text]
  • Hybrid Mobile Application for Project Planning System
    Master Thesis Czech Technical University in Prague Faculty of Electrical Engineering F3 Department of Computers Hybrid mobile application for project planning system Bc. Jan Teplý Supervisor: Mgr. Miroslav Blaško May 2017 ii Acknowledgements Declaration I would like to thank Mgr. Miroslav I declare that this work is all my own work Blaško and Ing. Jindřich Hašek for guid- and I have cited all sources I have used in ance in work on this thesis. And finally the bibliography. I would like to thank the CTU in Prague Prague, May 25, 2017 for being a very good alma mater. Prohlašuji, že jsem předloženou práci vypracoval samostatně, a že jsem uvedl veškerou použitou literaturu. V Praze, 25. května 2017 ..................................................... Bc. Jan Teplý iii Abstract Abstrakt Plantac is the proprietary web application Plantac je proprietární webová aplikace for project time and cost planning. Cur- pro plánování času a nákladů projektů na rently written on Java EE framework with platformě Java EE a grafickým uživatel- ZK framework for graphical user interface. ským rozhraním v frameworku ZK. Cí- The goal of this thesis is to explore the lem práce je prozkoumat možnosti pro vy- possibility of the creation of alternative tvoření alternativního multiplatformního multi-platform user interface, that enables uživatelského rozhraní, které zpřístupní chosen functions of Plantac on mobile de- vybrané funkce systému Plantac na mobil- vices even without internet connection. ních zařízeních i bez přístupu k internetu. Keywords: web, mobile, hybrid, offline, Klíčová slova: web, mobil, hybridní, Angular, Progressive apps, Cordova offline, Angular, Progressive apps, Cordova Supervisor: Mgr. Miroslav Blaško Překlad názvu: Hybridní mobilní aplikace pro systém plánování projektů iv Contents 1 Introduction 1 4.2.9 Development .
    [Show full text]
  • Top 10 Vulnerabilities OWASP
    OWASP Top 10 Vulnerabilities 2019 The de facto list of critical threats to your website. Learn what they are and how to protect your website.* *Based on the latest OWASP Top Ten list from 2017 2 The Top 10 OWASP vulnerabilities are OWASP stands for the Open Web Application 1. Injection 3 Security Project, that produces articles, 2. Broken Authentication 4 methodologies, documentation, tools, and technologies 3. Sensitive data exposure 5 4. XML External Entities (XXE) 8 in the field of web application security. 5. Broken Access control 9 6. Security misconfigurations 11 OWASP Core Purpose: Be the thriving global 7. Cross-Site Scripting (XSS) 13 community that drives visibility and evolution in 8. Insecure Deserialization 15 the safety and security of the world’s software. 9. Using Components with Known Vulnerabilities 16 10. Insufficient Logging and Monitoring 17 © 2019 Sucuri. All Rights Reserved. This ebook, “OWASP Top Ten Vulnerabilities 2019”, cites information and examples found in “Top 10-2017 Top Ten” by OWASP, used under CC BY-SA. 1. Injection An injection of code happens when an attacker sends invalid data to the web application Here is another example of an SQL injection that affected over half a million websites. with the intention to make it do something different from what the application was This code is part of the function get_products(). If attackers set arbitrary values for the designed/programmed to do. variable $limit they can modify the query in a way that can lead to a full compromise on some servers. Perhaps the most common example around this security vulnerability is the SQL query consuming untrusted data.
    [Show full text]
  • Eclipse: Разработка RCP-, Web-, Ajax- И Android-Приложений На Java
    Тимур Машнин Санкт-Петербург «БХВ-Петербург» 2013 УДК 681.3.06 ББК 32.973.26-018.2 М38 Машнин Т. С. М38 Eclipse: разработка RCP-, Web-, Ajax- и Android-приложений на Java. — СПб.: БХВ-Петербург, 2013. — 384 с.: ил. — (Профессиональное программирование) ISBN 978-5-9775-0829-2 Книга посвящена разработке в среде Eclipse широкого круга Java-приложений. Рассмотрены основы работы в среде Eclipse, использование инструментов отладки, тестирования и рефакторинга кода. Описана командная разработка приложений, их интернационализация и локализация, создание GUI-интерфейса на основе биб- лиотеки SWT и набора Java-классов JFace. Показаны особенности разработки при- ложений RCP и Android, а также Web- и Ajax-приложений на основе Eclipse- проектов RAP, GWT, Riena, SCA, Scout, WTP, DTP, BIRT. Материал книги сопро- вождается большим количеством примеров с подробным анализом исходных кодов. Для программистов УДК 681.3.06 ББК 32.973.26-018.2 Группа подготовки издания: Главный редактор Екатерина Кондукова Зам. главного редактора Игорь Шишигин Зав. редакцией Екатерина Капалыгина Редактор Анна Кузьмина Компьютерная верстка Ольги Сергиенко Корректор Зинаида Дмитриева Дизайн серии Инны Тачиной Оформление обложки Марины Дамбиевой Подписано в печать 30.09.12. 1 Формат 70 100 /16. Печать офсетная. Усл. печ. л. 30,96. Тираж 1200 экз. Заказ № "БХВ-Петербург", 191036, Санкт-Петербург, Гончарная ул., 20. Первая Академическая типография "Наука" 199034, Санкт-Петербург, 9 линия, 12/28 ISBN 978-5-9775-0829-2 © Машнин Т. С., 2013 © Оформление, издательство "БХВ-Петербург",
    [Show full text]
  • A Framework for Online Investment Algorithms
    A framework for online investment algorithms A.B. Paskaramoorthy T.L. van Zyl T.J. Gebbie Computer Science and Applied Maths Wits Institute of Data Science Department of Statistical Science University of Witwatersrand University of Witwatersrand University of Cape Town Johannesburg, South Africa Johannesburg, South Africa Cape Town, South Africa [email protected] [email protected] [email protected] Abstract—The artificial segmentation of an investment man- the intermediation of human operators. As a result, workflows, agement process into a workflow with silos of offline human at least in finance, lack sufficient adaption since the update operators can restrict silos from collectively and adaptively rates are usually orders of magnitude slower that the informa- pursuing a unified optimal investment goal. To meet the investor objectives, an online algorithm can provide an explicit incremen- tion flow in actual markets. tal approach that makes sequential updates as data arrives at the process level. This is in stark contrast to offline (or batch) Additionally, the compartmentalisation of the components processes that are focused on making component level decisions making up the asset management workflow poses a vari- prior to process level integration. Here we present and report ety of behavioural challenges for system validation and risk results for an integrated, and online framework for algorithmic management. Human operators can be, both unintentionally portfolio management. This article provides a workflow that can in-turn be embedded into a process-level learning framework. and intentionally, incentivised to pursue outcomes that are The workflow can be enhanced to refine signal generation and adverse to the overall achievement of investment goals.
    [Show full text]
  • Release 0.11 Todd Gamblin
    Spack Documentation Release 0.11 Todd Gamblin Feb 07, 2018 Basics 1 Feature Overview 3 1.1 Simple package installation.......................................3 1.2 Custom versions & configurations....................................3 1.3 Customize dependencies.........................................4 1.4 Non-destructive installs.........................................4 1.5 Packages can peacefully coexist.....................................4 1.6 Creating packages is easy........................................4 2 Getting Started 7 2.1 Prerequisites...............................................7 2.2 Installation................................................7 2.3 Compiler configuration..........................................9 2.4 Vendor-Specific Compiler Configuration................................ 13 2.5 System Packages............................................. 16 2.6 Utilities Configuration.......................................... 18 2.7 GPG Signing............................................... 20 2.8 Spack on Cray.............................................. 21 3 Basic Usage 25 3.1 Listing available packages........................................ 25 3.2 Installing and uninstalling........................................ 42 3.3 Seeing installed packages........................................ 44 3.4 Specs & dependencies.......................................... 46 3.5 Virtual dependencies........................................... 50 3.6 Extensions & Python support...................................... 53 3.7 Filesystem requirements........................................
    [Show full text]
  • Software Engineer – Wt and Jwt
    Software Engineer – Wt and JWt Emweb is a software engineering company specialized in the development of innovative software. We are located in Herent (Leuven, Belgium) and serve customers all over the world. Emweb's major products are Wt, an open source library for the development of web applications, and Genome Detective, a software platform for microbial High Throughput Sequencing analysis. Our solutions excel in quality and efficiency, and are therefore applied in complex applications and environments. As we continuously grow, we are currently looking for new colleagues with the following profile to join our team in Herent. Your responsibility is to develop our own products, as well as to work on challenging customer projects and integrations. We are active in multiple applications domains: Web applications Bio-informatics, computational biology and molecular epidemiology Embedded software development Data Analysis, Modeling, Statistical Analysis, Digital Signal Processing Your responsibilities are: The design, development and maintenance of Wt and JWt You will regularly participate in development of our own software products, as well as projects for our customers Maintaining the quality, performance and scalability of the software Provide support and training to customers with respect to the use of Wt and JWt in their own applications (architectural questions, security analysis, bug reports, new features, …) With the following skills, you are the perfect match to complete our team: Master degree in informatics or computer
    [Show full text]
  • Jsp and Spring Mvc Skills
    edXOps BOOTCAMP edXOps.COM JSP AND SPRING MVC SKILLS 04 WEEKS PROGRAM Production-like Project 18 January 2021 Effective Date Version Change Description Reason Author Sep 18 2019 1.0.0 First version New Sato Naoki Jan 18 2021 1.0.1 Revised version Update Alex Khang Production-like Project edXOps® Bootcamp WEEK ➂ - INTEGRATION OF FRONT-END AND BACK-END DAY ➊ - INTEGRATE FRONT-END TO BACK-END CODE Move the Front-End Web pages and the Framework to the Spring MVC project. Integrate the Front-End Web pages to the Spring MVC Project. GWT and JWT Programming - Ajax Toolkit - Json Web Token - Google Web Toolkit OUTCOME: Knows how to install and use the Web toolkit of at least one of above kits and proficiency to integrate them to the front-end project. DAY ➋ - IMPLEMENTATION OF REPORT FUNCTIONALITY Install and Design Report by one of following the report platform. - JasperReport Design and Viewer. - CrystalReport Design and Viewer. Create and Run smoke test: All test cases are accepted for the the Reporting functionalities. OUTCOME: Knows how to design the Web Reports with at least one Report platform such the JasperReports software or the Crystal Reports software and integrate reports into the Web Application. DAY ➌ - IMPLEMENTATION OF EXPORT FUNCTIONALITY Design and Programming to Export the data to one of following format. - Excel Format / PDF Format / CSV Format. Create and Run smoke test: All test cases are accepted for the the Exporting functionalities. OUTCOME: Knows how to define code to export data from the Web Reports or the Web Pages to Excel or PDF format and integrate these functionality on online hosting server.
    [Show full text]
  • Add Header to Request Ajax
    Add Header To Request Ajax Roughish and teenier Rolando evidence his perisperm restrings alining taperingly. Harwell still ached molecularly while undelaying Linoel blinker that effortlessness. Swallowed Ransell pauperizing or stub some bewitchery reposefully, however English Toby dramatise famously or dissolve. The content type and customize ajax request headers indicating the ajax to request header sent message to the proper cors Controlling AJAX calls Breeze JS. If can Accept header has powerful set using this appeal Accept header with expenditure type is consecutive with the paper when virtue is called For security. I am superior to cater custom header to my jquery ajax call this pure html it works fine to add the when in aspnet project it instead working header not. This site uses internally, asynchronous computer programming and add authorization header be transmitted through monkey patch or adds cors. So we create through that specific on hand call parsing that deaf and set it in comparison easy-to-use object embedded to the jqXHR ajaxPrefilterfunction. How do airline get Ajax response? Custom jQuery AJAX Headers Zino UI. How each override the adapter headers that link sent now the ajax. Readonly attribute unsigned short readyState request undefined open. The world to add a practical advice to add condition checks if asynchronous. How we captured AJAX requests from a website tab with a. AJAX No 'Access-Control-Allow-Origin' header error despite. How both add something custom HTTP header to ajax request with. A bad check to collect custom methods in the adapter since my article. If counsel want to plague a custom header or lens of headers to an individual request body just left the headers property Request with custom header ajax url 'foobar' headers 'x-my-custom-header' 'some value' false you anytime to yield a default header or privacy of headers to every crime then use.
    [Show full text]
  • Impact Accounting for Product Use: a Framework and Industry-Specific Models
    Impact Accounting for Product Use: A Framework and Industry-specific Models George Serafeim Katie Trinh Working Paper 21-141 Impact Accounting for Product Use: A Framework and Industry-specific Models George Serafeim Harvard Business School Katie Trinh Harvard Business School Working Paper 21-141 Copyright © 2021 by George Serafeim and Katie Trinh. Working papers are in draft form. This working paper is distributed for purposes of comment and discussion only. It may not be reproduced without permission of the copyright holder. Copies of working papers are available from the author. Funding for this research was provided in part by Harvard Business School. Impact Accounting for Product Use: A Framework and Industry-specific Models George Serafeim and Katie Trinh∗ Harvard Business School Impact-Weighted Accounts Project Research Report Abstract This handbook provides the first systematic attempt to generate a framework and industry-specific models for the measurement of impacts on customers and the environment from use of products and services, in monetary terms, that can then be reflected in financial statements with the purpose of creating impact-weighted financial accounts. Chapter 1 introduces product impact measurement. Chapter 2 outlines efforts to measure product impact. Chapter 3 describes our product impact measurement framework with an emphasis on the choice of design principles, process for building the framework, identification of relevant dimensions, range of measurement bases and the use of relative versus absolute benchmarks. Chapters 4 to 12 outline models for impact measurement in nine industries of the economy. Chapter 13 describes an analysis of an initial dataset of companies across the nine industries that we applied our models and constructed product impact measurements.
    [Show full text]
  • Design and Evaluation of Interactive Proofreading Tools for Connectomics
    Design and Evaluation of Interactive Proofreading Tools for Connectomics Daniel Haehn, Seymour Knowles-Barley, Mike Roberts, Johanna Beyer, Narayanan Kasthuri, Jeff W. Lichtman, and Hanspeter Pfister Fig. 1: Proofreading with Dojo. We present a web-based application for interactive proofreading of automatic segmentations of connectome data acquired via electron microscopy. Split, merge and adjust functionality enables multiple users to correct the labeling of neurons in a collaborative fashion. Color-coded structures can be explored in 2D and 3D. Abstract—Proofreading refers to the manual correction of automatic segmentations of image data. In connectomics, electron mi- croscopy data is acquired at nanometer-scale resolution and results in very large image volumes of brain tissue that require fully automatic segmentation algorithms to identify cell boundaries. However, these algorithms require hundreds of corrections per cubic micron of tissue. Even though this task is time consuming, it is fairly easy for humans to perform corrections through splitting, merging, and adjusting segments during proofreading. In this paper we present the design and implementation of Mojo, a fully-featured single- user desktop application for proofreading, and Dojo, a multi-user web-based application for collaborative proofreading. We evaluate the accuracy and speed of Mojo, Dojo, and Raveler, a proofreading tool from Janelia Farm, through a quantitative user study. We designed a between-subjects experiment and asked non-experts to proofread neurons in a publicly available connectomics dataset. Our results show a significant improvement of corrections using web-based Dojo, when given the same amount of time. In addition, all participants using Dojo reported better usability. We discuss our findings and provide an analysis of requirements for designing visual proofreading software.
    [Show full text]
  • S41467-019-12388-Y.Pdf
    ARTICLE https://doi.org/10.1038/s41467-019-12388-y OPEN A tri-ionic anchor mechanism drives Ube2N-specific recruitment and K63-chain ubiquitination in TRIM ligases Leo Kiss1,4, Jingwei Zeng 1,4, Claire F. Dickson1,2, Donna L. Mallery1, Ji-Chun Yang 1, Stephen H. McLaughlin 1, Andreas Boland1,3, David Neuhaus1,5 & Leo C. James1,5* 1234567890():,; The cytosolic antibody receptor TRIM21 possesses unique ubiquitination activity that drives broad-spectrum anti-pathogen targeting and underpins the protein depletion technology Trim-Away. This activity is dependent on formation of self-anchored, K63-linked ubiquitin chains by the heterodimeric E2 enzyme Ube2N/Ube2V2. Here we reveal how TRIM21 facilitates ubiquitin transfer and differentiates this E2 from other closely related enzymes. A tri-ionic motif provides optimally distributed anchor points that allow TRIM21 to wrap an Ube2N~Ub complex around its RING domain, locking the closed conformation and promoting ubiquitin discharge. Mutation of these anchor points inhibits ubiquitination with Ube2N/ Ube2V2, viral neutralization and immune signalling. We show that the same mechanism is employed by the anti-HIV restriction factor TRIM5 and identify spatially conserved ionic anchor points in other Ube2N-recruiting RING E3s. The tri-ionic motif is exclusively required for Ube2N but not Ube2D1 activity and provides a generic E2-specific catalysis mechanism for RING E3s. 1 Medical Research Council Laboratory of Molecular Biology, Cambridge, UK. 2Present address: University of New South Wales, Sydney, NSW, Australia. 3Present address: Department of Molecular Biology, Science III, University of Geneva, Geneva, Switzerland. 4These authors contributed equally: Leo Kiss, Jingwei Zeng. 5These authors jointly supervised: David Neuhaus, Leo C.
    [Show full text]