mvc open pdf in browser : Convert pdf to jpg application software utility html windows web page visual studio Expert_.NET_Delivery_Using_NAnt_and_CruiseControl_.NET_20053-part1078

CI itself has issues. We will look at these in Chapter 6 when we consider the principles,
techniques, and tools in more detail. The primary issue is that it cannot necessarily go far
enough to provide a full delivery process. This is simply because you would not want it to:
automating production releases is dangerous and could lead to a great deal of trouble, per-
haps even in nonproduction environments. It is best to have a human in the way as a final
safeguard.
Thus CI is a goal for building and integration only—or so it seems. Perhaps the true point
of CI is that you can build and integrate when you want. In that case, we want to be able to do
the same thing with deployment, but just not continuously. The purpose of CI is to reduce
integration problems through a reproducible build, and therefore this purpose is aligned with
reducing deployment problems through a reproducible release.
Thoughts on Delivery
Apart from process problems, a variety of problems from other sources cause headaches for
delivery. Once again, on the face of it each problem may not seem very significant, or at least
asolution might be obvious. But in a real situation, these problems can be difficult to solve
owing to the fluid nature of the business. As we have seen with the Etomic scenario, the situa-
tion has developed over time: small-scale decisions have led to situations that are difficult to
clarify. We can explore the form these take here. The majority of these issues relate to server-
based projects representing the bread and butter of Etomic, although some are applicable to
any piece of software.
The Environment
The environment is a core aspect for a successful, standard, automated delivery process. The
environment affects the individual coding effort, the testing capabilities, and the manner in
which a system is deployed and stored. The core problem with the environment is that the
lesseffort that is put into “doing it well” will directly translate as more coding, scripting, and
process effort because of the variety of environmental workarounds that will present them-
selves. The risk is that this list will become unwieldy and in fact mean that there is no standard
way of automating the process. The efforts are then back to square one. It is worth trying to get
the environment right.
Standardization
Standardization is going to be crucial for all of the work to provide a satisfactory process and
capability for volumes of applications. Although I have placed standardization within envi-
ronmental concerns, it equally applies to all considerations for our efforts.
Standards within the environment matter to ensure several things:
They ensure that the same mechanisms can be used across many systems to move and
deploy assets.
They ensure that the environment remains the same when a system is moved or deployed
into a different location. 
They provide a mechanism for checking and enforcing that standard practices are being
used within the environment: it becomes more obvious when something is amiss.
CHAPTER 1 A CONTEXT FOR DELIVERY
9
Convert pdf to jpg - Convert PDF to JPEG images in C#.net, ASP.NET MVC, WinForms, WPF project
How to convert PDF to JPEG using C#.NET PDF to JPEG conversion / converter library control SDK
conversion pdf to jpg; best pdf to jpg converter for
Convert pdf to jpg - VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.net, ASP.NET MVC, WinForms, WPF project
Online Tutorial for PDF to JPEG (JPG) Conversion in VB.NET Image Application
convert multiple pdf to jpg online; reader convert pdf to jpg
Providing standardization can be a significant issue, though. If we think about the desk-
top environment for a moment, we can consider ourselves very lucky. In the magical .NET
world, a significant number of developers are able to use the Visual Studio environment to
operate within. It is highly likely that teams will standardize on this platform. In doing so, a
small amount of standardization is achieved. But even then, there can be many “power toys”
or other widgets with which developers may enhance their desktop environment. 
This is no bad thing—we are going to enhance our desktop with NAnt very soon—until a
developer loses track of upgrades and updates, tools and widgets, and the web of dependen-
cies that can quickly grow. On the other hand, rigidly controlling available environments is
likely to provoke a backlash from a development team and genuine concern over the stifling
of creativity could grow.
A middle ground that is a useful approach is the use of virtual environments for develop-
ment activities. In this way, a developer is free to use widgets and tools providing that
The tool is easily deployed to the environment or other developers and plugs into the
automated framework.
It does not impact the operating system configuration. This is controlled by the creators
of the virtual environment.
They destroy and re-create their desktop every time a new piece of work is begun.
Note
I have used virtual environments in a team situation.It provides an immediate boon to environ-
mental standards for a team and allows the implementation of various policies and practices—standard
network shares and the like—that are usually difficult to enforce to be implemented quite easily.
The use of a standard desktop environment allows the team to become comfortable mov-
ing from system to system, and even reviewing another developer’s screen. The psychological
impact of this kind of organization must not be underestimated either: if it feels more profes-
sional, then things might just turn out to be more professional. Practically all developers have
a standard set of core tools they are familiar with that can and should be used for a variety of
development tasks.
Moving on to the server environment, it should be obvious why standardization matters.
Clearly, the progression of a system through the various testing and staging environments
relies on server configurations that are the same. In addition to the technology platform,
though, other aspects of servers should be the same. For example:
There should be a standard method for accessing a server.
The layout and nomenclature of server storage should be the same.
Where automation is used to move assets and deploy systems, it is important to be able to
derive locations and apply logic in the creation of new storage in a simple way. To be effective,
this requires a good deal of standardization, which may not be easy to achieve in an environ-
ment that has evolved over time. 
CHAPTER 1 A CONTEXT FOR DELIVERY
10
Online Convert Jpeg to PDF file. Best free online export Jpg image
Online JPEG to PDF Converter. Download Free Trial. Convert a JPG to PDF. You can drag and drop your JPG file in the box, and then start
convert pdf file to jpg on; conversion of pdf to jpg
Online Convert PDF to Jpeg images. Best free online PDF JPEG
Download Free Trial. Convert a PDF File to JPG. Easy converting! We try to make it as easy as possible to convert your PDF files to JPG.
convert multi page pdf to jpg; change pdf file to jpg file
We will be exploring some specific environmental solutions as we work with NAnt
throughout the rest of the book.
Simulation
Apart from the standardization of the environment, some thought needs to be given to the
simulation of the production environment within the development and other progression
environments.
Issues here are likely to be less significant than wholesale environmental differences, but
they can still cause problems. In these days of remoting and web services, it can be a chore to
ensure the production environment is fully simulated thanks to the number of boxes, hosts,
connections, and compromises that need to be made to achieve the simulation.
The knock-on effect for delivery is an increased risk of failure (as usual) of an individual
delivery, and also the branching of the delivery plan: in development do this, in test do that,
instaging do something else, and so on. This is a problem for a delivery, because it means that
the production delivery is never truly tested.
There are likely always going to be compromises in this area since it can be very hard to
truly simulate environments. When considering where to comprise, from a delivery perspec-
tive, ensure that the delivery mechanism does not branch.
Rigidity
If the team does not have complete confidence that it can build a system from scratch rather
than restoring from a backup (or similar approach), then the result can be a rigid environment
incapable of change.
For example, if the database scripts are not up-to-date in the source control repository, or
there is no confidence that they are up-to-date, then it is likely that the development database
will be left active on a SQL Server. Something similar can occur with other environments too.
After a while it can become unclear which is the “real” database. They may all differ, very
slightly. Certainly the loaded reference and test data will be out of sync. The environment then
becomes rigid.
Management
Management of the environment can be a concern. Even a bright new shiny environment
built entirely to standards to facilitate automated delivery can become a mess very quickly if
care is not taken to look after it. 
Management of the environment must begin with the denizens of the environment: the
developers. Developers need to understand that they are trashing their own house, not some-
one else’s house.
Tip
“Clean As You Go”was a mantra I used to hear constantly in my time working in kitchens as a
student.There is a lot of strength in this simple principle.Busy kitchens cannot operate if there is mess.
Apart from the hygiene issues,there is a lack of equipment and space,and usually an abundance of hungry
mouths to feed.I will leave it to you to create your own analogy.My point here is that these simple disci-
plines can reap significant dividends.
CHAPTER 1 A CONTEXT FOR DELIVERY
11
C# Image Convert: How to Convert Adobe PDF to Jpeg, Png, Bmp, &
This demo code just converts first page to jpeg image. String inputFilePath = @"C:\input.pdf"; String outputFilePath = @"C:\output.jpg"; // Convert PDF to jpg.
convert pdf pages to jpg; change pdf to jpg file
C# Image Convert: How to Convert Tiff Image to Jpeg, Png, Bmp, &
RasterEdge.XDoc.PDF.dll. This demo code will convert first page to jpeg image. C:\input.tif"; String outputFilePath = @"C:\output.jpg"; // Convert tiff to jpg.
convert pdf to jpg 100 dpi; convert pdf into jpg
Beyond individual management, controls and processes must be in place to ensure that
the environment at large is managed. The processes should cover the following:
Cleaning/archiving the environment.Periodically, the environment should be cleaned
up. By this I mean the environment-at-large: the areas used for development, as reposito-
ries, and for testing, management of documentation, and delivery of the finished systems
are all susceptible to the build-up of waste produced from development. Ideally, this can
be automated.
Upgrading components.Ensure that the approved third-party controls and components
are available in the correct locations and are up-to-date.
System placement.Decisions on the location of systems in the available development
environment should not be arbitrary, but locations should be selected and approved
intelligently.
Caution
The first time that during a cleanup of the environment someone says,“Do not delete that,just
in case,”then the environment is in trouble.Do not ignore this.Act upon it.
Configuration Management
Poor configuration management (CM) can hamper delivery efforts. A lack of quality CM can
lead to many of the other problems listed in this chapter. Even with the best of intentions, fail-
ing to have a strong CM policy will lead to issues. CM is not easy and there are many books
and schools of thought on what CM actually is. It is the sort of subject that people think they
understand but generally do not. CM is probably a much more significant subject than, say,
the use of a source control database—which may be where most developers’ knowledge of CM
begins to get a little hazy. Borrowing and paraphrasing from Alexis Leon’s book (see Further
Reading at the end of this chapter), a definition of CM is as follows:
Configuration management is a set of processes to minimize the confusion of a
team project.CM is about identification,organization and control of software
to maximize productivity by minimizing mistakes.
As you might see already, an individual’s understanding of CM may only extend as far as
“control,” and even then this may not be a full understanding of control. Broadly then, CM
interms of an activity or process should encompass the following areas:
Configuration identification.Identification is about considering what constitutes a
“configuration item.” An obvious example is a piece of source code, but what about test
data—is this a configuration item? What about the technical specification for a software
system? Identification is about considering the criteria for identification, listing and nam-
ing the identified configuration items, and then choosing a method for acquiring the
configuration items.
CHAPTER 1 A CONTEXT FOR DELIVERY
12
C# Create PDF from images Library to convert Jpeg, png images to
Batch convert PDF documents from multiple image formats, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and REImage.
convert multi page pdf to single jpg; change from pdf to jpg on
VB.NET PDF Convert to Images SDK: Convert PDF to png, gif images
Resize converted image files in VB.NET. Convert PDF to Jpg, Png, Bmp, Gif, Tiff and Bitmap in ASP.NET. Embed PDF to image converter in viewer.
convert pdf into jpg online; changing pdf to jpg on
Configuration control.Control concerns the processes supporting the need to change
asystem. Configuration control addresses such questions as: How is change initiated?
How is the impact of change evaluated? How is it approved and who approves it? How is
change then implemented?
Configuration status control.Status control involves making information available on
the status of CM, what this information should be, when it should be available, and to
whom it should be available. This also covers information such as release control.
Configuration auditing.Finally, auditing is about ensuring the success of the other areas
of CM by evaluating each area to ensure compliance and then performing follow-up
activities to ensure compliance in retrospect and/or adjust CM policies.
So there is a bit more to configuration management than using a source control database!
Rest assured, configuration management is not easy to do. It requires specialist skills and a lot
of effort to comply with the more significant standards—possibly more effort than time allows
on fast-moving and cost-conscious development teams, though if a team does not care about
its assets, then why should it care about cost could be a reasonable counterargument. By nature,
development teams are more concerned about practical activities and so may be uncomfort-
able with some of the theoretical CM activities themselves. If we play to the strengths of the
people we have and translate this into what we need to consider specifically for the delivery
process, the areas that we should consider as a priority are as follows.
Assets and Source Control
It is easy for a lack of control of all crucial information and assets to exist. The important word
here is all. Generally speaking, a development team can be relied on to store core coding assets
in the source control database (Visual SourceSafe [VSS] in our case), but that approach can be
attributed to the links to Visual Studio as much as it can to the developers’ own sense of good
CM. VSS can easily become nothing more than a dump for source code. 
Note
It can be easily argued that a system such as VSS does not provide CM in the way that a system
such as CVS,or Subversion,or Borland StarTeam does.In many ways,VSS is just a dump for source code.
Ithas some of the features that you would expect from a proper CM system such as branching and merging
but nothing like the feature set of some of its cousins.On the other hand,VSS is simple for developers to
use.What is possibly worse than poor CM is CM handled incorrectly!
Assets not linked to VSS by a tool such as database scripts can quickly become out-of-
date, or fail to make it into VSS. Unfortunately, if one set of key assets is missing, then it does
not matter whether or not the others are stored well. It can be a lot riskier for an asset to be
present in an out-of-date state than not at all. The upshot, though, is a total lack of confidence
in the assets for a system.
Additionally, it can be easy for a team to fail to understand what an asset is and why, or
how they should be storing it. As we mentioned earlier, while we may assume that everyone
sees the value in these processes, that may not be the case. Guidance needs to be offered to
CHAPTER 1 A CONTEXT FOR DELIVERY
13
C# TIFF: C#.NET Code to Convert JPEG Images to TIFF
Use C# Code to Convert Jpeg to Tiff. string[] imagePaths = { @"C:\demo1.jpg", @"C:\demo2.jpg", @"C:\demo3.jpg" }; // Construct List<REImage> object.
c# pdf to jpg; convert online pdf to jpg
VB.NET PDF - Convert PDF with VB.NET WPF PDF Viewer
4. To Image. Convert PDF to image formats, such as PNG, JPG, BMP and GIF. Copyright © <2000-2015> by <RasterEdge.com>. All Rights Reserved.
convert pdf page to jpg; pdf to jpg converter
demonstrate a good process in this area. A description of how to organize these assets in a
physical sense within the source control environment is also a boon. This enables rapid
inspection of assets for a system to ensure general compliance. It also facilitates the introduc-
tion of new developers to new systems; they come to expect certain features in much the
same way as coding to a standard architecture facilitates the same process.
It is natural that if you cannot be sure that assets will be available, or that the assets avail-
able are the correct ones, and if you cannot be sure what represents an asset for the system,
then of course you are not likely to trust any kind of process or even the physical assets laid
out before you. The danger is that developers then concoct their own ways of handling this
uncertainty to cover their own backs. This may work temporarily for a piece of work on a sys-
tem, but it will not translate across multiple systems, developers, or tasks. The rot has already
set in.
Management
Related to the general problems of managing system assets is the management of the overall
CM process. If this is a shared responsibility, then it will quickly degrade in much the same
way as directories become generally untidy: developers have that hoarding mentality.
Nominating certain team members as responsible for and enforcers of the standards
ensures that evaluation and monitoring of the process occurs.
Monitoring and management of source control can be automated if you have the time to
invest in, for example, wrapping the Visual SourceSafe API. Some useful management activi-
ties for source control include the following:
Access.A single-point method for enabling/disabling access to VSS databases should be
in place for developers.
Reporting.Useful reports include checkout reports, maintenance reports, and activity
reports.
Backups.Automating backups and archiving of VSS can be valuable for business continuity.
Cleaning.It is useful to be notified of folders that do not comply to a set standard, e.g.,
someone dumping a database backup in the VSS folder for “safekeeping.”
There may be no need to reinvent the wheel here. Many productivity enhancers for VSS,
as well as for other source control systems, are available if you look around. 
Planning
This type of problem represents the softer side of delivery processes. I have seen many situa-
tions where inadequate planning for delivery has led to shortcuts and botched jobs during
theimplementation of a system. Inevitably this leads to more frequent failures because of the
increased risk. The problem of failure at this point is compounded by the fact that the delivery
stage is the most visible aspect of development for the customer. The customer’s perception of
project success can be badly affected by a failure to implement.
CHAPTER 1 A CONTEXT FOR DELIVERY
14
Note
There is no shame in regression! If a delivery fails,then it can be allowed to fail providing lessons
are learned about the reason for failure.I would much rather see a successful regression with minimal loss
to the business than a botched delivery.
Consideration
The first problem with planning for delivery is that the delivery mechanism and effort is not
properly taken into account at the outset of a system design. There can be considerable focus
on the system itself for obvious reasons, and the supporting activities can fall by the wayside
quite easily. This is as true of a one-person effort as it is of a team effort.
Where it is easy for a lone developer to lose focus, or become passionately focused on a
particular issue and thus lose the impetus to consider delivery, it is true of a team as well. The
problem of delivery is in the hands of the delivery team and thus the same impetus does not
exist in the planning phase to label it as “someone else’s problem.”
Through the production of a clear framework, or guidelines, or standards, consideration
of delivery is pushed onto the agenda at an early stage. Deliverables are required as part of the
system build and they can be estimated in terms of time and cost. A much greater chance
exists that delivery requirements will have an impact on the overall system design.
Implementation
Apart from the consideration of delivery, the actual implementation must also be completed.
In this instance, a developer may be focused on the delivery, and may have thought it out it
appropriately and then, at the last minute—perhaps as the pressure is on to achieve comple-
tion—does not actually implement the agreed delivery process.
The .NET platform has eased delivery significantly in various ways and therefore it is usually
possible to botch together a release or the like given a little bit of time. If this is not then addressed
at a later date, this botch likely becomes more “Technical Debt” (see Further Reading).
This kind of debt is the least likely to be addressed at a later stage, since it is very unlikely
the customer will seek to address internal issues of which they are not aware. Therefore, this
debt hangs around causing problems for the development team for, perhaps, the rest of the
project life cycle.
The problems stemming from implementation details, or a lack thereof, directly create
the problems of fear and rigidity.
Fear
Fear is a natural reaction to anything that is unknown. In the world of development, this may
be a simple sentiment if a developer cannot figure out how to set up a new development envi-
ronment for a system on his/her laptop.
Fear manifests itself physically in a number of ways. Fear of an aspect of a system in code
terms usually results in development going awry: the developer will code around the feared
aspect. This can potentially damage the architecture of an application, or just the code quality.
From the point of view of delivery, fear leads to rigidity.
CHAPTER 1 A CONTEXT FOR DELIVERY
15
A Solution for Delivery
Delivery is one of those activities with the potential to work very well but that is never easy to
address adequately. The result is that delivery will tend to be “brute-forced”: in other words,
delivery is attempted until something works. Earlier we looked at potential manual processes
for delivery. As these become more sophisticated, they create more administrative overhead.
The risks are then that there simply is not enough management capacity to enforce and ensure
the process, and also that there is not enough understanding among the development team to
maintain the process, or to understand the process in the first place.
Much is made of standardization of various aspects of delivery and CM. In later chapters
we will see how these approaches are practically applied as we begin to automate delivery. For
now, let us consider a general solution: automation.
Automation
The most obvious step-change in delivery process is that of automation. 
This is of course a major task for the remainder of the book. Being able to build and
rebuild at will means that we can clean and trim the physical environments to only the parts
necessary on a day-to-day and month-to-month basis. The effects are the reduction of admin-
istration overhead of the environment, the decoupling of a specific physical environment
from the system assets, improved chances of the architecture and code quality standing the
test of time, and reduced stress on the development team.
Removing the ability of a developer to take part in a system release means that there can
be no more last-minute heroic efforts to ensure success. When we are working with a customer
deadline, this kind of effort is frequently needed to ensure that the customer perception of
product success is positive, but in doing this the team is simply hiding the truth of the situa-
tion. The real problem is that this truth is hidden internally as well. By making it more awkward
to perform last-minute heroics, we encourage a gradual cultural change to being prepared and
consistently successful throughout development.
Note
It is easy to reward heroic effort.It is harder to view it as a failure,for that is what it is in the context
of confidently delivering multiple systems smoothly.Essentially,I think that this is because there is a very
human element to heroic effort:how can you criticize Bob when he pulled a 48-hour shift to ensure the
customer deadline was met after the third party widget went belly-up on the production server? 
This question has no easy answer.A dissociation needs to exist between the human effort that
deserves reward and the circumstances that have led to the troublesome delivery.
The effort involved in automation should not be underestimated. One of the main prob-
lems is that simple automation does not require a huge effort and can easily be achieved on a
single project; however, this automation does not provide significantly visible results.
CHAPTER 1 A CONTEXT FOR DELIVERY
16
Caution
Actually,there is a lot of bravado in that statement.“Simple”problems can quickly escalate and
frustrate.
If the results are not significant, then enthusiasm from others to solve the problems and
invest the time in cracking the problem can be limited. Unfortunately, as the more significant
action items to achieve automation begin to appear you will rely on others to assist or man-
date the required actions.
For this reason, we are going to describe our automation efforts under an umbrella initia-
tive. We will describe the initiative in pattern-like terms to achieve a common vocabulary and
common understanding of the automation efforts. With this as a basis, everyone affected
willat least have heard of the initiative and everyone has the opportunity to understand the
mechanics and consequences.
Design to Deliver
My description of the automation effort is “Design to Deliver.” It is catchy (perhaps) and also
defines the underlying theme of standardization and consideration that form some of the core
pillars of success for the automation effort.
We are defining a process pattern to mitigate the risks and address the problems high-
lighted in our earlier discussions. The pattern does not describe the nitty-gritty mechanics of
achieving “better quality of delivery” at this point; in the general manner of patterns, the
implementation may vary depending on the circumstances. However, we now have a com-
mon vocabulary for the work we are attempting, and a focus for what represents success in
this work.
Context 
Improving the delivery of a software system by ensuring successful build and deployment
features is a focus from the beginning of the coding phase, as is automating these features
throughout the system life cycle.
Motivation
For any successful development team involved in medium-sized projects of several months’
development, the number of systems to manage will eventually become cumbersome.
Failing to address delivery as a specific, controlled activity leads to a degradation in the
delivery processes (whatever form they take) and also increases the risk of failure for a system
at a crucial point in its implementation. 
Through the implementation of a framework for delivery and the automation of that
framework, enabling a confident repeatable delivery process has the potential to 
• Improve software quality through increased value to supporting activities such as unit
testing
• Improve customer satisfaction through increased levels of delivery success
• Reduce overhead in administration of delivery
CHAPTER 1 A CONTEXT FOR DELIVERY
17
Mechanics
The broad mechanics for the implementation of Design to Deliver include the following:
Decide on the desired delivery process for build and deployment.Many things can be
covered as part of an automated delivery solution. Listing the initial priorities provides
focus for the first attempt. At this point, the automation does not necessarily have to pro-
duce a richly developed process. Aiming too high initially does not aid the exploration
activities.
Identify the tools to achieve the processes.There are a variety of possibilities for the
automation itself and also the technologies used to complete aspects of the automated
process. Providing a list of initial tools ensures that, in a world of limitless possibility, a
constrained approach is followed to ensure the continued focus and simplicity of the
delivery process.
Identify an initial candidate for automation.An ideal candidate is a system that is stand-
alone and that does not have too many areas of complexity, such as a database. A good
candidate could be a console utility or a shared assembly.
Prototype the process with the candidate.The candidate should then be automated fol-
lowing the steps defined in the initial process. At this point, as more required steps are
found, they can be added to the overall process or held over for verification.
Identify more candidates for automation.Following a successful implementation, more
candidates can be identified for inclusion in the process. Once more, it is useful to group
similar systems to better achieve automation.
Utilize and refactor the initial automation to provide standard scripts.The new candi-
dates should reuse the scripts from the first prototype, but the emphasis should be on
refactoring, the reduction of duplicated effort, and the identification of complexity where
each project has specific needs not present in the others. Refactoring should also occur in
the systems themselves to provide a standard environment and system structure to facili-
tate the automation; that is, not only should the scripts adapt to the system but also the
system should fall into line with requirements.
Publish standards for the up-front implementation of automation.Scripted solutions
for problems should be maintained in a library of solutions. Where systems have been
amended to facilitate the automation, these amendments and standard requirements
should be published and enforced in the development team at large.
All systems need to be brought into line with delivery standards.Now outside of the
realm of research and development, the published standards should be introduced as
part of all new systems, and at the opportunities that maintenance cycles afford. It is criti-
cal to release responsibility for implementation of standards to the development team at
a finely balanced point in time as it will then slow down progress on automation as a
result of the time taken to implement any new refactorings and standards across multiple
systems. At this point, an assessment is needed to determine whether there is scope for a
full-time role or roles to handle the ongoing maintenance of this and other CM activities.
In my opinion, this role will be needed.
CHAPTER 1 A CONTEXT FOR DELIVERY
18
Documents you may be interested
Documents you may be interested