|
|
|
|
|
Introduction
to Perl 6 (half day)
Speaker: Allison Randal |
|
|
This talk is an introduction to
Perl 6, the next major version of Perl. The primary focus is
on the syntax of Perl 6, but beyond the syntax, we'll briefly
look at the some of reasons behind the changes. What makes one
feature more desirable than another? What makes it Perlish?
What makes it DWIM? How on earth does Larry decide? You'll leave
with a better understanding of the changes in Perl 6, and the
fundamental nature of Perl itself. |
|
|
|
|
|
Parrot
and the Perl 6 Compiler (half day)
Speaker: Allison Randal |
|
|
Parrot is the virtual machine
that will run Perl 6, as well as Python, Ruby, PHP, and a host
of other dynamic languages. But more than that, it's a suite
of tools for compiler writers. It boasts its own object-oriented
assembly language, which is a breath of fresh air to anyone
who's worked with XS. It even plays Tetris! This talk is an
introduction to Parrot: what it is, how it works, and what you
can do with it today. We'll also dig into the implementation
of the Perl 6 compiler as a standard compiler module in Parrot. |
|
|
|
|
|
Regular
Expression Mastery (half day)
Speaker: Mark Jason Dominus |
|
|
Almost everyone has written
a regex that failed to match something they wanted it to,
or that matched something they thought it shouldn't, and often
it can be hard to predict what a regex will do. This class
will fix that.
The first section will explore the algorithm that perl uses
internally to do regex matching. Understanding this algorithm
will allow us to predict whether a regex will match, which
of several matches Perl will find, and which regexes will
be faster than others. During this discussion we'll pause
to discuss practical applications that illustrate features
of the algorithm. We'll examine the essential but frequently
misunderstood concept of 'greed', and we'll learn why commonly-used
regex symbols like '.', '$', and '\1' might not mean what
you thought they did.
In the second section, we'll apply our knowledge of the internals,
examining at several common disasters, a few practical parsing
applications, and some new features such that would have been
hard to understand before. We'll see an example of every regex
metacharacter and modifier. We'll finish with a discussion
of some of the new optimizations that were added in Perl 5.6,
and why you should avoid the '/i' modifier.
• Inside the Regex
Engine
• Regular Expressions are Programs
• Backtracking
• Quantifiers
• Greed
• Anti-greed
• Anchors and assertions
• Backreferences •
Disasters and Optimizations
• Where machines come from
• Disaster examples
• Regex modifiers
• Tokenizing
• New optimizations
• Matching strings with balanced
parentheses |
|
|
|
|
|
Programming
with Iterators and Generators (half day)
Speaker: Mark Jason Dominus |
|
|
Sometimes you'll write a function
that takes too long to run because it produces too much useful
information. A search function might locate ten thousand matches.
A database query might return ten million records. What can
you do?
Perl provides a simple and familiar model for dealing with
such problems: The filehandle! Instead of reading every file
in one giant gulp, we can use filehandles to staunch the flow
of information, trickling it into the program in manageable
gulps.
In this class, we'll see several important modules, such as
File::Find and DBI, which use this approach. We'll go inside
these modules and see how to implement filehandle-like data
structures and objects ourselves. We'll see how to write functions
that suspend themselves and then pick up later where they
left off. We'll learn how to take long-running slow functions
and convert them into speedy filehandle-like data generator
objects.
This fundamental technique is a mainstay of programmers in
other languages, but isn't as well-known as it should be.
You'll be amazed at how many difficult problems become simple
when you unleash the power of filehandles.
• Introduction
• Filehandles are Iterators
• Iterators are Objects
• Common Examples of Iterators:
readdir, each, and DBI
• Building iterators
and Examples
• File tree scanning
• Permutations
• Genomic Sequence Generator
• Filehandle Iterators
• A Flat-File Database
• Searching Databases Backwards
• Random Number Generation
• Alternatives to Iterators
• Filters and Transforms:
'map' and 'grep' for iterators
• Recursively-Constructed
Iterators
• The Semipredicate
Problem
• Alternative Interfaces
to Iterators: Tied scalars and handles
• An Extended Example:
Web Spiders |
|
|
|
|
|
Introduction
to PostgreSQL (quarter day)
Speaker: Andrew Dunstan |
|
|
How and why to get PostgreSQL
up and running. Designed for those who don't know much about
databases, and those who know about databases but don't know
much about PostgreSQL. Bring laptops — we might include
an installfest if time permits.
• What is a database?
Why use one? Why PostgreSQL?
• Installing PostgreSQL
• Introduction to PostgreSQL
Server and Client programs
• Configuring PostgreSQL
• Using the psql client
• Adminstrative GUIs
• PostgreSQL directions
(or why I helped on the Windows port even though I'm a Linux
fan) |
|
|
|
|
|
PostgreSQL
and Database Basics
(quarter day)
Speaker: Andrew Dunstan |
|
|
Introductory or refresher session
covering the major concepts that underlie most database systems.
If you don't know or can't remember what a LEFT OUTER JOIN
is, or what the difference is between a UNION and a JOIN,
this session is for you.
• Relations (a.k.a.
tables)
• PostgreSQL data types
• The four basic operations
(SELECT INSERT UPDATE DELETE)
• Functions and expressions
• Table JOINs and their
flavors
• Table UNIONs
• Indexes
• Foreign keys
• Constraints
• Sequences and ID
fields |
|
|
|
|
|
PostgreSQL:
Advanced Topics (half day)
Speaker: Andrew Dunstan |
|
|
The advanced facilties of PostgreSQL
can make your applications work efficiently and securely.
We explore what those facilities are, and how to make sure
they are working well. This seminar will be very useful for
database administrators, systems administrators, data architects,
application architects and application programmers.
• Composite types,
nested types,
domains, and arrays
• Views
• Permissions and Security
• Schemata
• Rules
• Triggers
• Stored Procedures
and Functions
• Transactions
• Tuning PostgreSQL
• Configuration parameters
• Statistics
• Using EXPLAIN ANALYSE
• Vacuuming
• Connection pooling
• Replication
• Backup and Restoration
|
|
|
|
|
|
|
|
Creating
Applications with PostgreSQL
and Perl (half day)
Speaker: Andrew Dunstan |
|
|
In this seminar learn to use
the features of PostgreSQL in an application — with
the emphasis on Perl-based applications. This session is about
putting the knowledge from the previous sessions to practical
use. Especially suitable for data architects, application
architects, and application programmers.
• Using layered application
design
• ServerSide vs. ClientSide
programming
• Loading serverside
language(s)
• Trusted and Untrusted
languages
• Simple functions
• Triggers
• Returning a record
• Returning a set of
things
• Calling back to the
database
• PL/Perl limitations,
and future plans
• Getting and installing
the client libraries
• libpq — what
it is, who uses it and
who doesn't
• Using DBI with PostgreSQL
• PostgreSQL programming
for web apps (including mod_perl)
• Prepared Statements,
and why you should use them whenever possible
• Other client interfaces
(perl and non-perl).
• Case Studies from
the speaker's experience
• Best Practice tips
|
|
|
|
|
|
Testing
Perl (half day)
Speaker: brian foy |
|
|
Learn how to test your scripts
and modules using Perl's test harness, Test::More, Test::Simple,
and the popular Test modules available from CPAN. You don't
have to be a Perl expert to start testing your creations. Spend
a little time with testing and spend a lot less time debugging.
Attendees should know how to create and run Perl scripts, and
experience using Perl modules is helpful but not necessary.
If you want to make your Perl more robust and have more confidence
in your work, this course is for you. |
|
|
|
|
|
Creating
Perl Distributions (half day)
Speaker: brian foy |
|
|
Learn how to put together a Perl
distribution, including an installer, a test suite, documentation,
and all of the other \things that go into sharing your creations
with the world. Learn how to use Module::Release to distribute
your Perl creations. Attendees should know how to create and
run Perl scripts, and experience creating Perl modules is helpful
but not necessary. If you want to share your Perl code with
the world, this course is for you. |
|
|
|
|
|
When
Perl is Not Quite Fast Enough (half day)
Speaker: Nicholas Clark |
|
|
This is a tutorial on how make
Perl run faster, without having to use C or XS. In it you will
learn ways I've found to make your troublesome slow scripts
go faster, and how you can try to avoid some problems in the
first place. The
tutorial starts with ways to cheat and duck the whole optimising
problem, as that's usually a much better solution. I present
a systematic approach to optimising in general, and show the
Perl tools available to help you carry it out. By explaining
why the cause of slowness in Perl programs often differs from
your experience of compiled languages, you will gain a better
feel for the right types of trade-offs to make to gain speed.
The second
half presents a smorgasbord of optimising ideas to try out,
and speed traps to locate and avoid. From clean grand plans
to messy micro-optimising hacks, there is something for everyone.
There's bound to be at least one approach you've never seen
before that will set your mind racing, thinking about how your
own code will benefit. The
tutorial will demonstrate the techniques using specific real
code as examples, showing code before and after. Running this
interactively will give a feel for what sort of results can
be achieved. Health
warning — after
attending this tutorial you may have trouble sleeping
as you brain explores how to apply these ideas to your own code. |
|
|
|
|
|
An
Introduction to Voice- and Video-Over-IP
(half day)
Speaker: maddog |
|
|
Tired of paying those phenomenal
phone bills? Tired of paying for every little service that
the telephone company deems you should have? Want to save
your business heaps of money, yet still get the type of phone
service you dream of? Then welcome to the wonderful world
of OpenVoIP. Through projects like Bayonne, GnomeMeeting and
Asterisk people can finally do the things that were demonstrated
at the 1969 World's Fair, at a price they can afford. By the
end of this half-day session you WILL be able to:
• make a long distance
phone call from PC to PC for free
• make a long distance
phone call from PC to any phone for pennies
• make a video call
PC to PC for free
• learn about various
low-cost devices to enhance your VoIP experience
and many more things. This talk
will be aimed at a minimum of "technobabble" and
a maximum of "here is how you do it, and here is where
you get more information". Remember, the author wrote
the first edition of "Linux for Dummies". |
|
|
|
|
|
Introduction
to Mod_perl 2.0 (half day)
Speaker: Randal Schwartz |
|
|
Learn about the heavy-lifting
mod_perl interface for Perl embedded in the popular Apache web
server in this introduction. We'll go over the API, including
sample code, and installation instructions. A light introduction
to the emerging mod_perl 2.0 for Apache2 will also be included. |
|
|
|
|
|
Developing
Web Applications using CGI::Prototype (half day)
Speaker: Randal Schwartz |
|
|
Randal presents an introduction
to what Captain Neil calls "the most significant web application
module since CGI.pm", the recently released CGI::Prototype
module.
Learn how every CGI application
can be reduced to "figure out what state we're in ... what
got sent ... what to respond", and how to represent that in
this flexible framework. The framework maximizes code re-use
through easy creation of data accessors and methods in a hierarchical
class structure, including trivial one-off lightweight object
classes for unusual situations or exceptions. The framework
also leverages the industrial-strength Template Toolkit for
generating output.
Full and robust "MVC" applications
can be created using CGI::Prototype for the Controller,
Template Toolkit for the View, and Class::DBI for the
Model data. And although the name begins with CGI,
this module is also fully compatible with mod_perl as well,
either as a direct handler or as an Apache::Registry "script".
Even in CGI mode, many things are lazy-loaded and can be cached,
for rapid response!
The last half of the class will
be spent building a complete application using CGI::Prototype,
including deployed Class::DBI classes using DBD::SQLite for
the database. |
|
|
|
|
|
Debugging
Web Applications (quarter day)
Speaker: Randal Schwartz |
|
|
Debugging web applications
can be annoying at best, and virtually impossible if you don't
follow some basic guidelines. Randal talks about his methodologies
of debugging web applications, starting with the basics of
avoiding those "500 errors" through a simple placement of
CGI::Carp. He then shows how to use a death handler that incorporates
Data::Dumper as a means of placing a breakpoint in your web
code to reveal the state of the application at any selected
point. Randal also talks about using Devel::Cover and good
web tests with WWW::Mechanize (and its cousin, CGI::Prototype::Mecha)
to ensure that the testing covers your code, so you won't
have as many surprises in the field once your code is deployed. |
|