Author: spadkins
Date: Sun Sep 3 18:34:29 2006
New Revision: 6834
Added:
p5ee/trunk/App-Context/lib/App/quickstart.pod
Log:
new
Added: p5ee/trunk/App-Context/lib/App/quickstart.pod
==============================================================================
--- (empty file)
+++ p5ee/trunk/App-Context/lib/App/quickstart.pod Sun Sep 3 18:34:29 2006
@@ -0,0 +1,243 @@
+#!perl -w
+# run this document through perl to check its syntax
+use Pod::Checker;
+podchecker(\*DATA);
+__END__
+
+=head1 NAME
+
+App::quickstart - App::Context Developer's Quick-Start Guide
+
+=head1 INTRODUCTION
+
+This is the Developer's Quickstart Guide to the App::Context Framework.
+Its focus is to give a minimum amount of theoretical or explanatory
+background and get right into learning by example.
+
+=head1 DOCUMENTATION OVERVIEW
+
+That having been said, it is also important to let you know
+what documentation exists and what state it is in.
+
+I got started building the App::Context framework a while ago.
+The documentation is very limited. This is an effort to bring it all together.
+This list shows how all of the documentation fits together and in what state
+it is [???=unknown,RED=incomplete,YEL=ok,GRN=complete].
+
+=head2 PURE DOCUMENTATION
+
+The following documentation is in good shape.
+To get started, read them more or less in the order shown.
+
+=over
+
+=item * L<App::quickstart> - This quick start guide.
+
+=item * L<App::installguide::hosted> - Installing the App::Context Framework
on a non-root web hosting account
+
+=back
+
+The following documentation also is in good shape.
+It is background reference material.
+
+=over
+
+=item * L<App::datetime> - Guidance on date, time, and datetime types in perl.
+
+=item * L<App::exceptions> - Guidance on exceptions in perl.
+
+=back
+
+The following documentation is in a state that needs review, modification, or
completion.
+
+=over
+
+=item * L<App::perlstyle> - A perl style guide that builds minimally on
L<perlstyle>.
+
+=item * L<App::faq> - Questions about P5EE.
+
+=item * L<App::installguide> - Installing the App::Context Framework on Unix.
+
+=item * L<App::installguide::win32> - Installing the App::Context Framework on
Windows.
+
+=item * L<App::devguide> - Developers' Guide.
+
+=item * L<App::devguide> - Developers' Guide.
+
+=item * L<App::adminguide> - Administrators' Guide.
+
+=item * L<App::adminguide::cvs> - Admin Guide, setting up CVS source control.
+
+=back
+
+=head2 CLASS/MODULE DOCUMENTATION (indented entries are subclasses)
+
+Most of this documentation needs review, modification, and completion.
+
+=over
+
+=item * L<App> - The module that bootstraps the use of the App::Context
Framework.
+
+=item * L<App::Context> - Abstract class representing the the runtime context
of the program.
+
+=item * +-- L<App::Context::Cmd> - A program running in a command-line
context.
+
+=item * +-- L<App::Context::HTTP> - A program running in a CGI/mod_perl
context.
+
+=item * +-- L<App::Context::Server> - A program running in a multi-process
server context.
+
+=item * +-- L<App::Context::ClusterController> - Running in a multi-node
cluster context.
+
+=item * +-- L<App::Context::ClusterNode> - Running on a single node of a
cluster.
+
+=item * +-- L<App::Context::NetServer> - Another flavor of server context
(not yet implemented).
+
+=item * L<App::Exceptions> - Defines the exceptions used in the framework.
+
+=item * L<App::UserAgent>
+
+=item * L<App::Request>
+
+=item * +-- L<App::Request::CGI>
+
+=item * L<App::Response>
+
+=item * L<App::Session>
+
+=item * +-- L<App::Session::HTMLHidden>
+
+=item * +-- L<App::Session::Cookie>
+
+=item * L<App::Reference>
+
+=item * +-- L<App::Conf>
+
+=item * +-- L<App::Conf::File>
+
+=item * L<App::Service>
+
+=item * +-- L<App::Serializer>
+
+=item * +-- L<App::Serializer::Properties>
+
+=item * +-- L<App::Serializer::Ini>
+
+=item * +-- L<App::Serializer::Perl>
+
+=item * +-- L<App::Serializer::Xml>
+
+=item * +-- L<App::Serializer::Yaml>
+
+=item * +-- L<App::Serializer::OneLine>
+
+=item * +-- L<App::Serializer::TextArray>
+
+=item * +-- L<App::Serializer::Storable>
+
+=item * +-- L<App::SessionObject>
+
+=item * +-- L<App::Authentication>
+
+=item * +-- L<App::Authorization>
+
+=item * +-- L<App::ValueDomain>
+
+=item * +-- L<App::SharedDatastore>
+
+=item * +-- L<App::MessageDispatcher>
+
+=item * +-- L<App::CallDispatcher>
+
+=item * +-- L<App::CallDispatcher::HTTPSimple>
+
+=item * +-- L<App::ResourceLocker>
+
+=item * +-- L<App::ResourceLocker::IPCSemaphore>
+
+=item * +-- L<App::ResourceLocker::IPCLocker>
+
+=item * L<Apache::Framework::App>
+
+=back
+
+=head1 INSTALLATION
+
+You can go through one of the installation guides.
+Installing the App::Context Framework generally involves several distributions
+and should just work when installed from CPAN.
+
+ perl -MCPAN -e shell
+ cpan> install App::Options
+ cpan> install App::Context
+ cpan> install App::Repository
+ cpan> install App::Widget
+ cpan> exit
+
+If it's not this easy, I need to work on making it easier.
+
+=head1 QUICK START TO COMMAND LINE APPLICATIONS
+
+At the moment, the biggest advantage of using the App::Context Framework for
+programs which are not web applications is in developing a suite of database
programs
+(particularly for a MySQL database).
+
+Choose a root directory for your system, assigning it to the PREFIX variable.
+
+vi ~/.bash_profile
+
+ export PREFIX=/usr/mycompany/prod
+
+vi $PREFIX/etc/app.conf
+
+ dbhost = localhost
+ dbname = test
+ dbuser = scott
+ dbpass = tiger
+
+vi $PREFIX/etc/app.pl
+
+ $conf = {
+ Repository => {
+ default => { alias => "db", },
+ db => {
+ class => "App::Repository::MySQL",
+ },
+ };
+
+vi $PREFIX/bin/prog
+
+ #!/usr/bin/perl -w
+ use strict;
+ use App::Options (
+ options => [qw(dbhost dbname dbuser dbpass)],
+ option => {
+ dbhost => {
+ description => "database host",
+ default => "localhost",
+ },
+ dbname => {
+ description => "database name",
+ default => "test",
+ },
+ dbuser => {
+ description => "database user",
+ default => "scott",
+ },
+ dbpass => {
+ description => "database password",
+ },
+ },
+ );
+ use App;
+ use App::Repository;
+ {
+ my $context = $App->context();
+ my $db = $context->repository();
+ # perform database ops like ...
+ # my $rows = $db->get_rows("customer", { last_name => "Smith" },
["first_name", "last_name", "birth_dt"]);
+ # my $hashes = $db->get_hashes("customer", { "birth_dt.le" =>
"2000-01-01" }, ["first_name", "last_name", "birth_dt"]);
+ # my $age = $db->get("customer", { customer_id => 45 }, "age");
+ }
+
+=cut
+