Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/indispensable.git
#LyX 1.6.7 created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass scrbook
\begin_preamble
\input{preamble.tex}
\end_preamble
\options singleside
\use_default_options true
\language english
\inputencoding utf8
\font_roman lmodern
\font_sans helvet
\font_typewriter courier
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100

\graphics default
\float_placement H
\paperfontsize default
\spacing single
\use_hyperref true
\pdf_bookmarks true
\pdf_bookmarksnumbered false
\pdf_bookmarksopen false
\pdf_bookmarksopenlevel 1
\pdf_breaklinks false
\pdf_pdfborder false
\pdf_colorlinks false
\pdf_backref false
\pdf_pdfusetitle true
\papersize letterpaper
\use_geometry false
\use_amsmath 2
\use_esint 1
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 2
\tocdepth 2
\paragraph_separation indent
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 2
\paperpagestyle default
\bullet 0 5 11 -1
\bullet 1 5 24 -1
\bullet 2 0 0 -1
\tracking_changes false
\output_changes false
\author "" 
\author "" 
\end_header

\begin_body

\begin_layout Standard
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
input{chapter.tex}
\end_layout

\end_inset


\end_layout

\begin_layout Chapter
Introduction
\end_layout

\begin_layout Standard
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
epigraph{Imagination is more important than knowledge.
 For knowledge is limited, whereas imagination embraces the entire world,
 stimulating progress, giving birth to evolution.}{Albert Einstein}
\end_layout

\end_inset


\end_layout

\begin_layout Standard
In this chapter:
\end_layout

\begin_layout Itemize

\series bold
Structure.

\series default
 How the manual is organized.
\end_layout

\begin_layout Itemize

\series bold
Audience.

\series default
 Indicates whether this manual is for you or someone you know.
 
\end_layout

\begin_layout Itemize

\series bold
Expectations.

\series default
 What you will learn from reading this manual.
\end_layout

\begin_layout Itemize

\series bold
Duplication.

\series default
 Forms of redundant effort you might encounter while developing reports.
 
\end_layout

\begin_layout Itemize

\series bold
Scenario.

\series default
 An example situation to avoid when developing reports.
\end_layout

\begin_layout Section
Structure
\end_layout

\begin_layout Standard
The manual is divided as follows:
\end_layout

\begin_layout Itemize

\series bold
Refrain.

\series default
 The word refrain, in music, is part of a song that repeats.
 Outside of music, the word means
\emph on
 to resist doing something
\emph default
.
 The first part of this manual describes ways resist repeating yourself
 (that is, how to avoid duplicating effort) when developing reports.
 The goal of this part is to provide you with strategies and tactics for
 using 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
corpjaspersoft{}
\end_layout

\end_inset

's tools to maximize your productivity.
\end_layout

\begin_layout Itemize

\series bold
Fusion.

\series default
 The word fusion, in physics, describes the nuclear reaction in which parts
 of an atom combine to form more massive nuclei with the simultaneous release
 of energy.
 The second part of this manual describes the steps to fuse (that is, integrate)
 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appjasperreports{}
\end_layout

\end_inset

 with common web-based application frameworks.
 The goal of this part is to provide you with comprehensive instructions
 for different integrations.
 The part concludes with an overview of a data dictionary that relates human-rea
dable text to database column names.
\end_layout

\begin_layout Itemize

\series bold
Catalyst.

\series default
 The word catalyst, in chemistry, is a substance that initiates or accelerates
 a chemical reaction (a change in chemical composition) without itself being
 affected.
 The third part of this manual introduces a mechanism for changing typical
 analyses into predictive analyses.
 The goal of this part is to show you how to transform bland statistical
 analyses into succinct, eye-catching results by combining 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appjasperreports{}
\end_layout

\end_inset

 with the 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appr{}
\end_layout

\end_inset

 programming language.
\end_layout

\begin_layout Section
Audience
\end_layout

\begin_layout Standard
This manual describes techniques that require readers to be familiar with
 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
corpjaspersoft{}
\end_layout

\end_inset

's software suite of reporting tools and uses some features available only
 after the 3.7 series release.
\end_layout

\begin_layout Subsection
Required Knowledge
\end_layout

\begin_layout Standard
Readers must have a basic understanding of the following:
\end_layout

\begin_layout Itemize
Software development concepts
\end_layout

\begin_layout Itemize
SQL programming language
\end_layout

\begin_layout Itemize
Relational databases
\begin_inset Foot
status collapsed

\begin_layout Plain Layout
The manual uses 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
apppostgres{}
\end_layout

\end_inset

 for examples, but the concepts apply equally to Oracle, MySQL, and others.
\end_layout

\end_inset


\end_layout

\begin_layout Itemize
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appireport{}
\end_layout

\end_inset

 and 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appjasperreports{}
\end_layout

\end_inset


\end_layout

\begin_layout Subsection
Optional Knowledge
\end_layout

\begin_layout Standard
While not absolutely essential, readers should be comfortable with:
\end_layout

\begin_layout Itemize
Batch and shell scripting
\end_layout

\begin_layout Itemize
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appjava{}
\end_layout

\end_inset

, 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appphp{}
\end_layout

\end_inset

, and 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appr{}
\end_layout

\end_inset


\begin_inset Foot
status collapsed

\begin_layout Plain Layout
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appr{}
\end_layout

\end_inset

 is a programming language that exists predominately for perfoming complex
 statistical analysis, but encompasses much, much more.
 Although prior experience with 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appr{}
\end_layout

\end_inset

 is not necessary to follow the examples used in this manual, I hope that
 the brief introduction you will encounter here will be impetus enough for
 you to explore 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appr{}
\end_layout

\end_inset

 on your own.
\end_layout

\end_inset


\end_layout

\begin_layout Itemize
Statistics
\end_layout

\begin_layout Section
Expectations
\end_layout

\begin_layout Standard
This manual covers a broad range of topics.
 It is my desire that you will take away from it the following items:
\end_layout

\begin_layout Itemize
How to eliminate multiple forms of duplication from your report systems.
\end_layout

\begin_layout Itemize
How to produce a data dictionary that can be used to translate database
 column names to human-readable names.
\end_layout

\begin_layout Itemize
How to integrate 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appr{}
\end_layout

\end_inset

 and 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appjasperreports{}
\end_layout

\end_inset

 to produce graphs with extrapolated trend lines.
\end_layout

\begin_layout Standard
After reading the manual, you will understand how to:
\end_layout

\begin_layout Itemize
Eliminate nearly all forms of duplication from reports.
\end_layout

\begin_layout Itemize
Create reports that are easy to maintain.
\end_layout

\begin_layout Itemize
Integrate 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appjasperreports{}
\end_layout

\end_inset

 with common web development platforms.
\end_layout

\begin_layout Itemize
Organize directory structures for harmonious development practices.
\end_layout

\begin_layout Itemize
Leverage the 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appr{}
\end_layout

\end_inset

 programming language for statistical analysis and prediction.
\end_layout

\begin_layout Section
Duplication
\end_layout

\begin_layout Standard
At risk of contradicting the Don't Repeat Yourself (DRY) principle by paraphrasi
ng 
\shape italic
The Pragmatic Programmer
\shape default
,
\begin_inset Foot
status collapsed

\begin_layout Plain Layout
Andrew Hunt and David Thomas.
 Published by Addison-Wesley, October 1999.
 ISBN: 020161622X.
\end_layout

\end_inset

 its authors describe the following categories of duplication:
\end_layout

\begin_layout Itemize

\series bold
Imposed.

\series default
 Software developers believe there is no choice, due to environmental constraint
s.
\end_layout

\begin_layout Itemize

\series bold
Inadvertent.

\series default
 Software developers are not cognisant of the repetition.
\end_layout

\begin_layout Itemize

\series bold
Impatient.

\series default
 Development by 
\emph on
copy and paste
\emph default
 seems like less work, at least initially.
\end_layout

\begin_layout Itemize

\series bold
Interdeveloper.

\series default
 People on the same (or related) projects produce redundant information.
\end_layout

\begin_layout Standard
If you find yourself creating many reports that are similar in form or function,
 set aside some time to think how best to avoid duplication.
 The 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appireport{}
\end_layout

\end_inset

 tool has many features to avoid duplication.
 Unfortunately, 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
appireport{}
\end_layout

\end_inset

 also makes it easy to create cookie-cutter copies of a basic report that
 serves as a template for new reports.
\end_layout

\begin_layout Section
Scenario
\end_layout

\begin_layout Standard
Consider the following situation: developers have finished creating one
 hundred different reports, spending untold hours to do so.
 Management reviews the reports and then makes a few suggestions:
\end_layout

\begin_layout Itemize
Move the company logo to the top-right corner.
 
\end_layout

\begin_layout Itemize
Printed reports should use Times New Roman, not Arial.
\end_layout

\begin_layout Itemize
Change the text 
\emph on
Emplid
\emph default
 to 
\emph on
Employee ID
\emph default
.
\end_layout

\begin_layout Standard
The developers tell you it will take 5 minutes to move the logo, 2 minutes
 to change the font to Arial, and 2 minutes to update the text.
 
\emph on
Per report
\emph default
.
 That is over 11 hours of effort, when it ought to take fewer than 10 minutes.
\end_layout

\begin_layout Standard
Arguably, this scenario could be considered the result of a flawed software
 development methodology.
 An Agile approach would have the first few reports reviewed upon creation.
 In the best case scenario, 
\emph on
search and replace
\emph default
 or an extensible stylesheet language (XSL) transformation of the 
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
filename{
\backslash
fileextjrxml}
\end_layout

\end_inset

 files would be possible.
 Yet 
\emph on
search and replace
\emph default
 does not guarantee that all instances will be changed correctly.
 If the company has no XSL experience, learning XSL would take as much time
 as making the changes by hand (if not longer).
\end_layout

\begin_layout Standard
This manual describes how to avoid the problem in the first place.
 With the proper infrastructure, such sweeping changes will take minutes,
 not hours (or even weeks), to implement.
 Of course, if such an infrastructure took longer to implement than the
 time it saves, then the extra prepatory work is not worthwhile.
 As you will see, this is not the case.
\end_layout

\begin_layout Section
Summary
\end_layout

\begin_layout Standard
The quote at the start of Part I is from 
\emph on
The Pragmatic Programmer
\emph default
.
 The point of Part I (and in some ways Part II) is to show the power behind
 ensuring every bit of knowledge in a system exists in a single location;
 the ability to make broad, sweeping changes to a system with little effort.
 This is one of the goals of software development.
\end_layout

\begin_layout Standard
Albert Einstein's quote provides a view that, on the surface, might appear
 to downplay the importance of isolating knowledge by stressing creativity.
 Insofar as reports are concerned, it is only when elements have become
 completely isolated that creativity can flourish.
 If a developer needs to spend hours changing fonts, the possibility of
 replacing Arial with Helvetica is diminished, and perhaps eliminated (for
 all practical purposes).
 If the layout for all the reports is copied a hundred times, the difficulty
 of rivising that layout simultaneously for all reports is increased a hundred-f
old.
 You simply cannot be creative if changes take too long to make.
\end_layout

\end_body
\end_document