Discover millions of ebooks, audiobooks, and so much more with a free trial

Only $11.99/month after trial. Cancel anytime.

SQL Server 2016 Reporting Services Cookbook
SQL Server 2016 Reporting Services Cookbook
SQL Server 2016 Reporting Services Cookbook
Ebook936 pages5 hours

SQL Server 2016 Reporting Services Cookbook

Rating: 5 out of 5 stars

5/5

()

Read preview

About this ebook

This book is for software professionals who develop and implement reporting solutions using Microsoft SQL Server. It is especially relevant for professionals who are software engineers, software architects, DW/BI engineers, and DW/BI architects who perform simple to complex report authoring implementations.
This book is also suitable for those who develop software solutions that integrate reporting solutions and are keen to learn about Microsoft SQL Server 2016’s features and capabilities.
LanguageEnglish
Release dateNov 29, 2016
ISBN9781786467997
SQL Server 2016 Reporting Services Cookbook

Related to SQL Server 2016 Reporting Services Cookbook

Related ebooks

Databases For You

View More

Related articles

Reviews for SQL Server 2016 Reporting Services Cookbook

Rating: 5 out of 5 stars
5/5

1 rating0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    Book preview

    SQL Server 2016 Reporting Services Cookbook - Dinesh Priyankara

    Table of Contents

    SQL Server 2016 Reporting Services Cookbook

    Credits

    About the Authors

    About the Reviewers

    www.Packtpub.com

    Why subscribe?

    Preface

    What this book covers

    What you need for this book 

    Who this book is for 

    Sections

    Getting ready

    How to do it…

    How it works…

    There's more…

    See also

    Conventions

    Reader feedback

    Customer support

    Downloading the example code

    Downloading the color images of this book

     Errata

    Piracy

    Questions

    1. Getting It Ready – Configuring Reporting Services

    Introduction

    Selecting the edition

    Getting ready

    How to do it...

    How it works...

    See also

    Installing Reporting Services with default configurations

    Getting ready

    How to do it...

    How it works...

    There's more...

    See also

    Installing Reporting Services-related tools

    Getting ready

    How to do it...

    How it works...

    There's more...

    See also

    Accessing Reporting Services Configuration Manager

    Getting ready

    How to do it...

    How it works...

    There's more...

    See also

    Configuring the service account of Reporting Services

    Getting ready

    How to do it...

    How it works...

    There's more...

    Configuring Reporting Services URLs

    Getting ready

    How to do it...

    How it works...

    There's more...

    Configuring the Reporting Services database

    Getting ready

    How to do it...

    How it works...

    There's more...

    See also

    Executing post-installation tasks

    Getting ready

    How to do it...

    How it works...

    There's more...

    2. Authoring Reports with SQL Server Data Tools

    Introduction

    The designer tool - exploring SSDT

    Getting ready

    How to do it...

    How it works...

    Visual Studio 2015 support

    Getting ready

    How to do it...

    How it works...

    Creating reports with a table data region

    Getting ready...

    How to do it...

    How it works...

    There's more...

    Creating reports with a matrix data region

    Getting ready

    How to do it...

    How it works...

    Creating reports with a chart data region

    Getting ready

    How to do it...

    How it works...

    There's more....

    Managing and configuring parameters

    Getting ready

    How to do it...

    How it works...

    3. Advanced Report Authoring with SQL Server Data Tools

    Introduction

    Creating reports with multiple axis charts

    Getting ready

    How to do it...

    How it works...

    Creating reports with multiple data regions

    Getting ready

    How to do it...

    How it works...

    Creating reports with nested data regions

    Getting ready

    How to do it...

    How it works...

    Creating reports with a map data region

    Getting ready

    How to do it...

    How it works...

    Creating reports with cascading parameters

    Getting ready

    How to do it....

    How it works...

    Creating reports with dynamic datasets

    Getting ready

    How to do it...

    How it works...

    How to publish reports

    Getting ready

    How to do it...

    How it works...

    How to view the XML code related to reports

    Getting ready

    How to do it...

    How it works...

    4. Authoring Reports with Report Builder

    Introduction

    Is this for a developer or business user?

    Getting ready...

    How to do it...

    How it works...

    Enhancements to Report Builder

    Getting ready...

    How to do it...

    How it works...

    Connecting Report Builder to Reporting Services

    Getting ready

    How to do it...

    How it works...

    How to design reports with the wizard

    Getting ready

    How to do it...

    How it works...

    There's more...

    How to design reports manually

    Getting ready...

    How to do it...

    How it works...

    Working with published data sources

    Getting ready

    How to do it...

    How it works...

    Working with published datasets

    Getting ready

    How to do it...

    How it works...

    How to publish reports to Reporting Services

    Getting ready

    How to do it...

    How it works...

    Working with published report parts

    Getting ready

    How to do it...

    How it works...

    Changing reports published in Reporting Services

    Getting ready

    How to do it...

    How it works...

    5. Improving User Experience – New Designing and Visualization Enhancements

    Introduction

    Positioning parameters

    Getting ready

    How to do it...

    How it works...

    Visualizing data with modern styles

    Getting ready

    How to do it...

    How it works...

    There's more...

    Visualizing data with the TreeMap data region

    Getting ready

    How to do it...

    How it works...

    Visualizing data with the Sunburst data region

    Getting ready

    How to do it...

    How it works...

    There's more...

    Integrating R with Reporting Services

    Getting ready

    How to do it...

    How it works...

    There's more...

    See also

    6. Authoring Reports with the Mobile Report Publisher

    Introduction

    Understanding the new Mobile Report Publisher

    Getting ready

    How to do it...

    How it works...

    How to create a mobile report

    Getting ready

    How to do it...

    How it works...

    Using simulated data

    Getting ready

    How to do it...

    How it works...

    Setting up data sources

    Getting ready

    How to do it....

    How it works...

    How to use datasets for mobile reporting

    Getting ready

    How to do it...

    How it works...

    Understanding mobile report graphical elements

    Getting ready

    How to do it...

    How it works...

    Understanding the mobile report layout

    Getting ready

    How to do it...

    How it works...

    Configuring navigators

    Getting ready

    How to do it...

    How it works...

    Configuring parameters for drill-through reports

    Getting ready

    How to do it...

    How it works...

    7. Consuming Reports – Report Access Enhancement

    Introduction

    Exploring the new Web Portal

    Getting ready

    How to do it...

    How it works...

    There's more...

    Managing reports with the Web Portal

    Getting ready

    How to do it...

    How it works...

    There's more...

    Viewing reports on any web browser

    Getting ready

    How to do it...

    How it works...

    There's more...

    Caching the report

    Getting ready

    How to do it...

    How it works...

    There's more...

    Refreshing the cache

    Getting ready

    How to do it...

    How it works...

    There's more...

    Creating a KPI with predefined values

    Getting ready

    How to do it...

    How it works...

    There's more...

    Creating a KPI with shared datasets

    Getting ready

    How to do it...

    How it works...

    There's more...

    Customizing the look-and-feel of the Web Portal

    Getting ready

    How to do it...

    How it works...

    There's more...

    Printing reports with the PDF rendering extension

    Getting ready

    How to do it...

    How it works...

    There's more...

    Embedding reports in other applications

    Getting ready

    How to do it...

    How it works...

    There's more...

    See also

    8. Reporting Solutions for BI – Integration

    Introduction

    Making Reporting Services as a part of BI

    Getting ready

    How to do it...

    How it works...

    There's more...

    See also

    Creating a report using Multidimensional models

    Getting ready

    How to do it...

    How it works...

    There's more...

    Getting formatting from the Multidimensional model

    Getting ready

    How to do it...

    How it works...

    There's more...

    Getting aggregated values from the Multidimensional model

    Getting ready

    How to do it...

    How it works...

    There's more...

    Creating a report using Tabular models

    Getting ready

    How to do it...

    How it works...

    Connecting to the HDInsight cluster and getting unstructured data

    Getting ready

    How to do it...

    How it works...

    There's more...

    See also

    9. SharePoint Integration

    Introduction

    Configuring SharePoint for Reporting Services

    Getting ready

    How to do it...

    How it works...

    Handling security with SharePoint

    Getting ready

    How to do it...

    Adding a user to your SharePoint site

    Altering permissions to a document library

    Altering permissions to a specific report item

    Removing a user's permissions from a report

    How it works...

    There's more...

    Creating dashboards using Reporting Services

    Getting ready

    How to do it...

    How it works...

    Configuring e-mail with SharePoint

    Getting ready

    How to do it...

    How it works...

    There's more...

    Configuring subscriptions

    Getting ready

    How to do it...

    How it works...

    Configuring data alerts

    Getting ready

    How to do it...

    How it works...

    10. Administering and Managing Reporting Services

    Introduction

    Managing data sources

    Getting ready

    How to do it...

    How it works...

    There's more...

    Assigning configured data sources to published reports

    Getting ready

    How to do it...

    How it works...

    There's more...

    Caching reports

    Getting ready

    How to do it...

    How it works...

    There's more...

    Creating snapshots of reports

    Getting ready

    How to do it...

    How it works...

    Backing up Reporting Services

    Getting ready

    How to do it...

    How it works...

    There's more...

    Monitoring Reporting Services

    Getting ready

    How to do it...

    How it works...

    There's more...

    11. Securing Reports in Reporting Services

    Introduction

    Authenticating users for Reporting Services

    Getting ready

    How to do it...

    How it works...

    Becoming a Report Portal System Administrator

    Getting ready

    How to do it...

    How it works...

    Authorizing users for accessing reports via SSRS roles

    Getting ready

    How to do it...

    How it works...

    There's more...

    Creating new roles in Reporting Services

    Getting ready

    How to do it...

    How it works...

    Editing existing roles in Reporting Services

    Getting ready

    How to do it...

    How it works...

    Filtering data for the current user

    Getting ready

    How to do it...

    How it works...

    There's more...

    Handling security on shared data sources

    Getting ready

    How to do it...

    How it works...

    There's more...

    Securing the channel using certificates

    Getting ready

    How to do it...

    How it works...

    12. Custom Programming and Integration to .NET Applications

    Introduction

    Adding embedded codes to reports

    Getting ready

    How to do it...

    How it works...

    There's more...

    Referencing external .NET assemblies

    Getting ready

    How to do it...

    How it works...

    Opening reports using URL access

    Getting ready

    How to do it...

    How it works...

    There's more...

    Using ReportViewer control for accessing reports

    Getting ready

    How to do it...

    How it works...

    There's more...

    SQL Server 2016 Reporting Services Cookbook


    SQL Server 2016 Reporting Services Cookbook

    Copyright © 2016 Packt Publishing

    All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

    Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

    Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

    First published: November 2016

    Production reference: 1211116

    Published by Packt Publishing Ltd.

    Livery Place

    35 Livery Street

    Birmingham 

    B3 2PB, UK.

    ISBN 978-1-78646-181-0

    www.packtpub.com

    Credits

    About the Authors

    Dinesh Priyankara  is an experienced professional and database enthusiast with skills in database management systems and business intelligence, especially on the Microsoft SQL Server product suite. Possessing over 16 years of experience on data related technologies, he does training, consulting, and is a top contributor to the local SQL Server community. In recognition of his contributions and expertise he has demonstrated, he was awarded the Microsoft Most Valuable Professional (MVP) award for SQL Server for 11 consecutive years since 2006.

    Dinesh is the Founder/Principal Architect of dinesQL (Pvt) Ltd (http://dinesql.com), a company that provides services on database, business intelligence, and training. In his spare time, he runs a blog at http://dinesql.blogspot.com  with a follower base of over 100,000 from around the world and is a co-organizer of SQL Server Sri Lanka User Group (http://www.meetup.com/ssslug/).

    Even though he has written many articles on the database area, this is his first official book as a co-author.

    I would like to especially thank my daughter, Minupama Dulnethmi, who always encouraged me to complete my book with her fullest support. And I would also like to thank all of my family members and friends who helped on this in many ways.

    My sincere appreciation to the entire team at Packt Publishing, with special thanks to Amrita Noronha and Vinay Argekar.

    Robert C. Cain (http://arcanecode.com) is a Microsoft MVP, MCTS Certified in BI, and is the owner of Arcane Training and Consulting, LLC. He is also a course author for Pluralsight, with over 11 courses to his credit. Robert is a team mate at Linchpin People, and co-author of four books.

    A popular speaker, Robert has presented at events such as the SQL PASS Summit, IT/Dev Connections, TechEd, CodeStock, and numerous SQL Saturdays. Robert has over 25 years’ experience in the IT industry, working in a variety of fields including manufacturing, insurance, telecommunications and nuclear power.

    I would like to thank my wife and daughters for their patience as I worked on this book. I also wish to thank my coauthor, Dinesh. Without his help, this book would not have been possible. My editor, Amrita, needs special thanks; this book would not be what it is without her patience and guidance.

    I would also like to thank two long-time mentors. The first is Adam Curry. From his humble beginnings as a radio personality and MTV VJ, Adam became a pioneer in the early days of the Internet. In addition, his implementation of the podcasting platform opened a wealth of knowledge to both myself and many others.

    I would also be remiss not to acknowledge John C. Dvorak. From his early columns in PC Magazine to his various TV shows and podcasts, John provided a wealth of information that guided my career.

    Finally, I would like to thank the pair of them for their work on The No Agenda Show ( http://noagendashow.com ). I spent many late nights working on the demos for this volume listening to their entertaining and informative podcast.

    About the Reviewers

    Gogula Aryalingam is a database and business intelligence professional with more than 11 years of experience in the field. He is a Microsoft MVP for 9 years on the data platform and SQL Server, and PASS Regional Mentor for South Asia. His passion is in building business intelligence solutions, writing about the things he works with and talking about them. He is actively involved with the technical community; he co-runs the SQL Server user group in Colombo, Sri Lanka, speaks at local and international technical events and blogs his experiences. Gogula possesses an MSc and is a Microsoft Certified Solutions Expert, while also having played a part in developing exams for Microsoft certifications.

    Dave Wentzel is a Data Solutions Architect at Microsoft with the Azure Enablement Team.  He helps customers with their Digital Transformation, focused on all things data science, big data, and SQL Server. He knows how to converge big, fast, and unstructured data with traditional relational data to create actionable intelligence. He takes his customer experiences and feedback back to the product groups at Microsoft to make better solutions. Dave has been working with SQL Server for, let’s just say, a long time, and with SSRS since its infancy. Dave shares his experiences at http://davewentzel.com/.  He’s always looking for new customers. Would you like to engage?

    www.Packtpub.com

    For support files and downloads related to your book, please visit www.PacktPub.com.

    Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at service@packtpub.com for more details.

    At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

    https://www.packtpub.com/mapt

    Get the most in-demand software skills with Mapt. Mapt gives you full access to all Packt books and video courses, as well as industry-leading tools to help you plan your personal development and advance your career.

    Why subscribe?

    Fully searchable across every book published by Packt

    Copy and paste, print, and bookmark content

    On demand and accessible via a web browser

    Preface

    SQL Server 2016 Reporting Services is truly revolutionary. SQL Server Reporting Services saw few enhancements since the SQL Server 2008R2 release. With SQL Server 2016, all of that has changed.

    Many longstanding complaints of users have been addressed. Reports now render in HTML 5, allowing compatibility across a multitude of platforms. The old Report Manager has received a major overhaul, and with that a new name, the Report Portal.

    The Report Portal provides many new capabilities. It will, of course, host the traditional SSRS reports (now renamed Paginated Reports). Now, though, it can host a variety of other items, such as KPIs and PowerBI Desktop reports.

    An exciting new addition is the Mobile Report Publisher, allowing you to create reports that can easily be viewed across computers, tablets, and phones.

    The installation and configuration has been enhanced and streamlined to make setting up a new instance of Reporting Services even easier. Management tools have been updated as well, providing an easier to use experience for administrators.

    In this book, we’ll explore all the new, exciting enhancements that come with SQL Server 2016 Reporting Services. The recipes have been designed to get you up to speed quickly, allowing you to jump right in to all the great features included in SSRS 2016.

    What this book covers

    Chapter 1, Getting It Ready  – Configuring Reporting Services, will show you how to plan for and install Reporting Services. We’ll see how to configure SSRS for Native mode, as well as gain an understanding of backend databases.

    Chapter 2, Authoring Reports with SQL Server Data Tools, will begin your authoring of reports by working with SQL Server Data Tools (SSDT). You’ll see how to create a variety of reports using tables, matrixes, as well as charts. Finally, you’ll see how to publish reports to the SSRS server from within SSDT.

    Chapter 3, Advanced Report Authoring with SQL Server Data Tools, will continue your education on SSDT by moving into some advanced report topics. You’ll learn how to use multiple datasets in the same report, and create charts and tables with multiple axis. You’ll also get a view of SSRS behind the scenes, looking at the XML code used within an SSRS report file.

    Chapter 4, Authoring Reports with Report Builder, will focus on the newly revamped Report Builder tool. You’ll see how an end user could leverage this tool to create a variety of objects. Not just reports, but data sources and data sets.

    Chapter 5, Improving User Experience – New Designing and Visualization Elements, will focus on the new visualization and design elements introduced with SSRS. You’ll see the new Sunburst and Treemap charts, as well as learning how to integrate the R language into your reports.

    Chapter 6, Authoring Reports with the Mobile Report Publisher, explains that Microsoft addresses the need for reporting on mobile devices, such as phones and tablets, through the addition of the Mobile Report Publisher. In this chapter, you’ll learn how to use this brand-new tool to create reports customized for a variety of platforms.

    Chapter 7, Consuming Reports – Report Access Enhancement, will explore the new Report Portal, the redesigned Report Manager. You’ll see how to manage reports and data caching. You’ll also see how to create the new KPIs, as well how to customize the portal for your environment.

    Chapter 8, Reporting Solutions for BI – Integration, shows that Reporting Services is not the only tool in a BI developer’s tool box. In this chapter, you’ll see how to integrate other tools, such as PowerBI and SQL Server Analysis Services, into your SSRS reports.

    Chapter 9, SharePoint Integration, explains that, in addition to the Report Portal, SharePoint can also act as a host for your SSRS reports. In this chapter, you’ll see how to configure SharePoint and SSRS to work together.

    Chapter 10, Administering and Managing Reporting Services, reveals that as good as Reporting Services is just out of the box, understanding how to manage key components will make the experience even better. In this chapter, you’ll learn how to manage data sources, history, caching, scheduling, and other key topics that will create a better experience for your users.

    Chapter 11, Securing Reports in Reporting Services, highlights that it is critical to protect your data from unauthorized eyes. In this chapter, you’ll learn how to secure your server and its reports. In addition, you’ll find recipes explaining how to secure the data within your reports.

    Chapter 12, Custom Programming and Integration to .NET Applications, explains that .NET developers often have need to integrate reporting into their application. In this chapter, we’ll see the various techniques developers can use leverage the power of SSRS within their programs.

    What you need for this book 

    To work through the recipes in this book, you will, of course, need a copy of SQL Server 2016. If you don’t have one, Microsoft has now released the SQL Server 2016 Developer Edition as a free download, and it will work just fine for working through the recipes.

    You can download the developer edition at:

    https://www.microsoft.com/en-us/sql-server/sql-server-editions-developers

    or use the shortcut:

    http://bit.ly/sql2016dev

    In addition, you will want a copy of the brand-new SQL Server 2016 sample database, WideWorldImporters. Specifically, the data warehouse version of the sample, WideWorldImportersDW, was used for the examples in this book. You can find the samples on GitHub, at:

    https://github.com/Microsoft/sql-server-samples/tree/master/samples/databases/wide-world-importers

    or use the shortcut:

    http://bit.ly/wwisample

    You also need AdventureWorks 2014 multi-dimensional and tabular databases since they were used with some examples. You can find the samples database at: https://msftdbprodsamples.codeplex.com/releases/view/125550

    Who this book is for 

    A wide variety of users will find this book valuable. Naturally, IT Professionals whose chief duties are the development of reports will find these recipes useful.

    In today’s world, many end users are also developing their own reports, using tools such as Report Builder and the Mobile Report Publisher. They will find the recipes quite useful as they continue to develop their own reports.

    Additionally, system administrators who are responsible for installation, security, and maintaining Reporting Services will find valuable information herein to guide them as the manage SSRS.

    Finally, we’ve included a whole chapter aimed at .NET developers, showing how to integrate SSRS directly into their applications.

    Sections

    In this book, you will find several headings that appear frequently (Getting ready, How to do it, How it works, There's more, and See also).

    To give clear instructions on how to complete a recipe, we use these sections as follows:

    Getting ready

    This section tells you what to expect in the recipe, and describes how to set up any software or any preliminary settings required for the recipe.

    How to do it…

    This section contains the steps required to follow the recipe.

    How it works…

    This section usually consists of a detailed explanation of what happened in the previous section.

    There's more…

    This section consists of additional information about the recipe in order to make the reader more knowledgeable about the recipe.

    See also

    This section provides helpful links to other useful information for the recipe.

    Conventions

    In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.

    Code words in text, database table names, folder names, filenames, file extensions, path names, dummy URLs, user input, and Twitter handles are shown as follows: We can include other contexts through the use of the include directive. 

    A block of code is set as follows:

    [default]

    exten => s,1,Dial(Zap/1|30)

    exten => s,2,Voicemail(u100)

    exten => s,102,Voicemail(b100)

    exten => i,1,Voicemail(s0)

    When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:

    [default]

    exten => s,1,Dial(Zap/1|30)

    exten => s,2,Voicemail(u100)

    exten => s,102,Voicemail(b100)

    exten => i,1,Voicemail(s0)

    Any command-line input or output is written as follows:

    # cp /usr/src/asterisk-addons/configs/cdr_mysql.conf.sample      /etc/asterisk/cdr_mysql.conf

    New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: clicking the Next button moves you to the next screen.

    Note

    Warnings or important notes appear in a box like this.

    Tip

    Tips and tricks appear like this.

    Reader feedback

    Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

    To send us general feedback, simply send an e-mail to feedback@packtpub.com, and mention the book title via the subject of your message.

    If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on https://www.packtpub.com/books/info/packt/authors.

    Customer support

    Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

    Downloading the example code

    You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

    You can download the code files by following these steps:

    Log in or register to our website using your e-mail address and password.

    Hover the mouse pointer on the SUPPORT tab at the top.

    Click on Code Downloads & Errata.

    Enter the name of the book in the Search box.

    Select the book for which you're looking to download the code files.

    Choose from the drop-down menu where you purchased this book from.

    Click on Code Download.

    Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:

    WinRAR / 7-Zip for Windows

    Zipeg / iZip / UnRarX for Mac

    7-Zip / PeaZip for Linux

    The code bundle for the book is also hosted on GitHub at https://github.com/PacktPublishing/SQL-Server-2016-Reporting-Services-Cookbook. We also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishing/. Check them out!

    If you are using Tableau Public, you’ll need to locate the workbooks that have been published to Tableau Public. These may be found at the following link: http://goo.gl/wJzfDO.

    Downloading the color images of this book

    We also provide you a PDF file that has color images of the screenshots/diagrams used in this book.

    Enjoying the preview?
    Page 1 of 1