Bigtop is a language for describing the data of a web application.
Usually this data will be stored in a relational database. Once you
have a description of your data, you can generate a web application
from it. This includes all the pieces you need like: the sql
statements ready for feeding to your database command line tool, the
httpd.conf you need to Include in the httpd.conf on your system, the
modules that will handle the web requests, the models that make the
database tables look like classes, etc.
If you need to alter the data model in the future, you can change your
original description to match the new reality, then regenerate the
application without fear of losing hand written code (though you may
have to modify some of it to reflect the new reality).
MasonX::WebApp works with Mason to let you do processing before Mason is ever
invoked. There are a number of things that one might want to do:
* Argument munging
You might want to make sure all incoming arguments are UTF-8 encoded.
Or you might want to create some objects which Mason will see as
incoming arguments. For example, a "user_id" parameter could be turned
into a user object.
* Handle requests without Mason
If you're not generating output for the browser other than a redirect,
then there's no reason to use Mason. You can use a MasonX::WebApp
subclass to handle all form submissions, for example.
This has the added benefit of making it easier to preload this code
once during server startup.
* And others ...
Tclwebtest is a tool to write automated tests for web applications.
It provides a simple API for issuing http requests, dealing with the
result and assume specific response values, while taking care of the
details such as redirects and cookies.
It has some basic html parsing functionality, to provide access to
elements of the result html page that are needed for testing.
TclWebtest should be suitable for testing larger chains of user
interaction on a web application, for example a full ecommerce
ordering session.
Tclwebtest could visit an ecommerce site as
anonymous user, add some products to its shopping cart, check out
the cart, register itself as user and enter a test address etc.
The test script could also include the administration part of the
interaction, by explicitely logging in as site admin, reviewing and
processing the order, nuking the test user etc.
Turn tabs of your choice into permanent tabs. PermaTabs can't be closed
accidentally no matter what you click (even actions like "Close other tabs"
will not affect them) and will stick around between sessions.
Ideal for keeping URLs you use often, always one tab away. Also, ideal
for picking up specific articles where you left off during a previous session.
From first installation PermaTabs includes three random sample tabs
(from a built in list) to get you started. Maybe you'll discover a useful site
you never knew about?
Adding or removing a permatab is simple - right click a site's tab,
and check/uncheck "Permanent Tab".
Must read: one of the default permatabs installed on first installation
is an affiliate URL to eBay.com. You can of course remove this and the other
sample permatabs, and create your own (which is the whole idea).
Under Linux there aren't many freely available vector graphics editors and
as far as I know there are none that can edit EPS (encapsulated postscript)
and PDF (portable document format) files. I produce lots of these files in
my day-to-day work and I would like to be able to edit them. The best vector
graphics editor I have found so far is Inkscape but it only reads SVG
files... (Note: the upcoming v0.46 should be able to read PDFs!)
To overcome this problem I have written a very small utility to convert PDF
files to SVG files using Poppler and Cairo. Version 0.2.1 is available here
(with modifications by Matthew Flaschen and Ed Grace). This appears to work
on any PDF document that Poppler can read (try them in XPDF or Evince since
they both use Poppler).
So now it is possible to easily edit PDF documents with your favourite SVG
editor! One other alternative would be to use pstoedit but the commercial
SVG module costs (unsurprisingly!) and the free SVG module is not very good
at handling text...
This module strips scripting constructs out of HTML, leaving as
much non-scripting markup in place as possible. This allows web
applications to display HTML originating from an untrusted source
without introducing XSS (cross site scripting) vulnerabilities.
You will probably use HTML::StripScripts::Parser rather than using
this module directly.
The process is based on whitelists of tags, attributes and attribute
values. This approach is the most secure against disguised scripting
constructs hidden in malicious HTML documents. As well as removing
scripting constructs, this module ensures that there is a matching
end for each start tag, and that the tags are properly nested.
Previously, in order to customise the output, you needed to subclass
HTML::StripScripts and override methods. Now, most customisation
can be done through the Rules option provided to new(). (See
examples/declaration/ and examples/tags/ for cases where subclassing
is necessary.) The HTML document must be parsed into start tags,
end tags and text before it can be filtered by this module. Use
either HTML::StripScripts::Parser or HTML::StripScripts::Regex
instead if you want to input an unparsed HTML document.
The LWP::Protocol::https module provide support for using https schemed URLs
with LWP. This module is a plug-in to the LWP protocol handling, so you don't
use it directly. Once the module is installed LWP is able to access sites using
HTTP over SSL/TLS.
If hostname verification is requested by LWP::UserAgent's ssl_opts, and neither
SSL_ca_file nor SSL_ca_path is set, then SSL_ca_file is implied to be the one
provided by Mozilla::CA. If the Mozilla::CA module isn't available SSL requests
will fail. Either install this module, set up an alternative SSL_ca_file or
disable hostname verification.
This module used to be bundled with the libwww-perl, but it was unbundled in
v6.02 in order to be able to declare its dependencies properly for the CPAN
tool-chain. Applications that need https support can just declare their
dependency on LWP::Protocol::https and will no longer need to know what
underlying modules to install.
* This module contains several useful routines for interpolating
data sets and finding where a given value lies in a sorted list.
The first is a subroutine used to locate a position in an array
of values where a given value would fit using bisection. It has
been designed to be efficient in the common situation that it is
called repeatedly. The user can supply a different set of comparison
operators to replace the standard < and <=. For example, given a
list (1, 2, 5, 8, 15) and the number 9.5 it would return 3.
* The remaining routines all are related to interpolating sets of
(x,y) data pairs. They all take a list of (x,y) data pairs given
another x value, return a sensible y value using the list of (x,y)
data pairs. Three different interpolating functions are provided.
The first, called a constant interpolator, assumes that the
function being interpolated moves in non-linear jumps from one
value to another. The interpolated value for some value x is the
y value of the neighboring (x,y) to the left of the given x. The
second interpolator performs a linear interpolation between the
neighboring points. The third interpolator is called the robust
interpolator and interpolates a smooth curve between all of the
(x,y) pairs. To do the interpolation, it first calculates some
reasonable derivatives at the (x,y) pairs. The robust interpolator
can also use derivative information supplied by the user.
pgpool-II allows multiple PostgreSQL servers (DB nodes) to be
connected, which enables queries to be executed simultaneously on all
servers.
It enables "parallel query" processing. Also, pgpool-II can be started
as pgpool-I by changing configuration parameters. pgpool-II that is
executed in pgpool-I mode enables multiple DB nodes to be connected,
which was not possible in pgpool-I.
pgpool-II allows multiple PostgreSQL servers (DB nodes) to be
connected, which enables queries to be executed simultaneously on all
servers.
It enables "parallel query" processing. Also, pgpool-II can be started
as pgpool-I by changing configuration parameters. pgpool-II that is
executed in pgpool-I mode enables multiple DB nodes to be connected,
which was not possible in pgpool-I.