||*--------           At Tonight's Meeting...             ------*|| 
||*--------      Bozeman Linux User Group Meeting         ------*|| 
||*--------             January 30, 2003                  ------*|| 
||*--------                                               ------*|| 
||*--------             Ken Dyke, editor                  ------*|| 
||*--------                                               ------*|| 

Howdy folks, and welcome to another edition of "At Tonight's Meeting..."

||*--------           At Tonight's Meeting...             ------*|| 
||*--------              by Ken Dyke                      ------*||

Mike Stone, Ryan Gantt, Kyle Cunningham, Chad Armstrong, Ron Newman,
Stephen Durbin, Neal Richter, Patrick Pitman, Dustin Lee, Sheri Hall,
David Ford, and six others whose names I failed to write down.  (That 
is what happens when we don't have a meeting for so long. :-)  )
Thank you to these fine folk for coming and making it a great meeting.

||*--------                The Meeting...                 ------*||

Since there was a large number of people attending a LUG meeting for 
the first time Ken went over the book review process (see details 
regarding this in the "Books Available for Review" section).  Then he 
gave away five books from O'Reilly.  These are essentailly 'no strings 
attached' books.  If a receipent wants to write a review that is great and 
Ken will be happy to forward it to O'Reilly (hint - it will probably make 
it much easier to get a review copy of a highly desirable book).

The BozemanLUG now has a calendar of upcoming meetings. (Yea! Yea!)  This 
is great as it will share the duties around and give everyone plenty of 
time to be prepared.  Which means better quality presentations. (Yea! Yea!)

Ken will post the calendar to the site in the next day or two.  In the 
meantime, here is a brief once over:

February - Python for Fun and Profit by Dustin Lee
March - The (not so) Brief History of Linux by Ken Dyke
April - The Zend Engine: Powering PHP by Ryan Gantt
May - HtDig: Indexing Websites by Neal Richter
June - Web of Trust and Key Signing Party by Ken Dyke

Ken then introduced David Ford, local consultant and self-described 
computer geek, who stated at Bell Labs in 1977.  David presented a fast 
paced "Essential Cryptography".  It was fast paced to cover a lot of 
ground and it was a solid two hours because it was thorough.

That's right folks, two highly interesting hours of crypto fun.  The 
highlight was colorful diagraming of interactions between Alice and 
Bob.  The final case study was a walk through of the handshaking between 
client and server for a Secure Sockets Layer (SSL) session.

||*------                  Tool Tip                      -------*|| 
||*------                by Ken Dyke                     -------*|| 

`fmt' is a command line tool to format text files.  I find it useful 
for many files I receive from others or when I convert PDF files to 
text.  Basically, any time I have a text file where the line wrap is 
the wrong length, the file has excessive amounts of blank lines, and 
similar problems.  As always see the man page or info for additional 
details and usage.

||*------                  PHP News                      -------*|| 
||*------                by Ryan Gantt                   -------*|| 

[ken_i_m: Please note:  Ryan has been writing a regular PHP news page 
that appears on the BozemanLUG website.]

-- PHP News, Week of January 30, 2003 --

Not too many goings on in the php world this week, at least not with 
the official packages. Even php.net's subprojects saw a bit of a slow 
down, with no new developments in Smarty, and little activity on the 
cvs. Pear, as always, saw some action, but no major developments; they 
are still nursing their 1.0 release wounds.

....:::: Pear Activity, Week of Jan 30, 2003 ::::....

The international editon of the php-magazine (http://www.php-mag.net) 
has been released. This new issue features an overview of the Pear::MDB 
class, and an introduction on how to write your own php modules/extensions 
by Zeev.

The Deutsch edition of 'php-magazin' for Jan. 2003 contains an article by
Alexander Merz who explains in a useful introduction how to setup, 
administrate and use PEAR. Hartmut Holzgraefe shows us how to use the 
PEAR::HTTP_WebDAV_Server and Richard Samar introduces XML databases XPath 
and XQuery as well as using PEAR::XDB modules, especially the Tamino 
driver. Note that Alexander Merz now has a permanent column in the
magazine (beginning with the 1/03 issue), where he will write about PEAR.

:: Points of interest and new packages on the cvs for pear ::

~~ Archive_Tar ~~
This class provides handling of tar files in PHP.
It supports creating, listing, extracting and adding to tar files.
Gzip support is available if PHP has the zlib extension built-in or

~~ HTTP_Request ~~
Supports GET/POST/HEAD/TRACE/PUT/DELETE, Basic authentication, Proxy,
Proxy Authentication, SSL, redirection etc.

~~ PhpDocumentor ~~
The phpDocumentor tool is a standalone auto-documentor similar to JavaDoc.
It differs from PHPDoc in that it is much faster, parses a much wider range 
of php files, and comes with many customizations including 10 HTML templates,
windows help file CHM output, PDF output, and XML DocBook peardoc2 output
for use with documenting PEAR.

Due to interest from PEAR programmers, there is a new beta-quality 
XML:DocBook converter with peardoc2 templates. This converter could also 
generate other DocBook formats, if desired, but does not generate indexing 
for this release.

The PDF Converter has stepped up to beta-quality, is fully templatable, and
has most bugs completely fixed. The CHM converter has also taken major 
strides and is close to beta quality.

As predicted, the Smarty template engine is the primary template engine for
all converters.

For users new to phpDocumentor, phpDocumentor uses an event-driven parser
and intermediary data structures that allow it to perform at a level other
automatic documentors for PHP cannot achieve:
--parsing any php file, with multiple classes and functions in the same file
--fully compliant with even the most esoteric php syntax
  ($string = <<< EOF, for example)
--ability to generate multiple output formats
--extremely fast parsing
--error/warnings by line number and file to allow for debugging of
  documentation tags
--multiple output templates to easily customize the look of generated
--extensive documentation of the package, including a detailed specification
  for tags and the included template engine
--open source, GPL

That's all for this week, and as usual, you can find all of the info in this 
document on php.net and it's project subsites.
http://www.php.net (PHP)
http://gtk.php.net (GUI for GTK)
http://chora.php.net (CVS Repos.)
http://pear.php.net (Pear Classes)
http://bonsai.php.net (Simple CVS)
http://smarty.php.net (Smarty Template Engine)
http://www.zend.com (Zend Engine)

||*------                  Doghouse                      -------*|| 

The Shapphire MS-SQL worm ravaged the Internet this past week.  Simply 
blocking outbound connections from database servers (which have zero 
business being able to connect to the 'net) would have prevented` the 
collateral damage from this one.  In fact, the collateral damage was 
the only damage done by this particular worm.  The folks in the 
Doghouse are the SysAdmins who don't lock their firewalls down tight and 
then allow only what is required.

||*-----                  Book Reviews                    ------*|| 

PHP Cookbook - Solutions and Examples for PHP Programmers
Sklar, David & Adam Trachtenberg
O'Reilly and Associates
ISBN 1-56592-681-1

Review by Ryan Gantt

First of all, for anyone who doesn't know what PHP is, or what sets
it apart from Perl or Python, here is a short introduction: If you
come from a Perl background, you might relate PHP to maybe Perl using
Mason. If you are coming from Python for CGI, you might think of PHP
as Python with easier access to http variables, and without required
use of a cgi-bin. As http://www.php.net puts it, "PHP is a widely-used
general-purpose scripting language that is especially suited for Web
development and can be embedded into HTML." If that doesn't just about
sum it up, then I suggest you do some surfing around PHP.net, because
the true meaning of PHP is beyond the scope of this review (shameless
reference to a comment in the next paragraph).

Second of all, I would like to define what I feel is a good book. A
good book is one that is worth it's weight in gold, a book that get's
it's edges worn, and it's binding marred by excessive overuse, a book
that you see your friend carrying down the street, even though you know
for a fact that he's read it a million times. I think that for a book
to be useful, it *must* not spoon-feed information, it must not make
allusions to "key" concepts and then say something along the lines of,
"but this concept is beyond the scope of this book," and then allude
to it several more times, even on the same page. If there going to
talk about something, they better make it understandable, because I
don't ever remember hearing about book reading prerequisites. A good
book must give examples to show their meaning, and even in some cases,
apply that information to a common problem.

PHP Cookbook is a good book. This is one of the most intriguing books
I've had the chance to read, because of it's odd nature. It contains all
of the qualities of a reference book, while maintaining a small learning curve
for those who maybe aren't as 'into' PHP as the author. As a recipe book it 
is laid out by 'locale origin', the PHP Cookbook is laid out by
concepts, such as xml, or databases, and then ordered into 'recipies'
that build off of that base concept, and concepts that have been presented
in the previous chapters. No allusions are made that can't be referenced
back to an earlier point in the book, and even if you have no clue what
the recipe is talking about or 'calling for', you rarely finish reading
it with a defeated "hoomph" or a quick scratch to the head.

The first half of the book is focused on giving easy-to-use,
easy-to-apply solutions for everyday (easy-to-solve) PHP problems. After
reading some of the solutions, I get the feeling that one or both of
the authors has spent many hours scanning PHP forums and mailing list
archives to seek out common problems, and incorporate solutions to many
of those problems into the book. One of the most concise solutions in the
book includes a completely, 100% hands free automated Calendar script,
which I'm sure has been/will be utilized by the many of the books' readers. He
takes PHP's broad and often dull time functions, and zips them together
to create an excellent script.

The final half of the book focuses on PHP's more advanced, and less
used concepts. Client-Scripting for PHP-GTK? This is a really neat
concept, which is hardly mentioned (in depth) in many PHP books,
but is covered broadly in the Cookbook. Other concepts include XML,
HTTP-Request, XML-RTC, Regular Expressions, and Class/OO Programming
in PHP (the author makes it clear that Object Oriented (OO) 
will be improved in PHP 5, because of Zend's new engine, which shows 
that the authors really care about getting their information correct, 
and preparing their readers for eminent (and massively huge) changes).

One thing that I found odd was the fact that the author of this book has
this really almost 'odd' obsession with the Pear libraries (definitely
not a bad thing), and he tends to call them for his examples more often
than he ought to. The Pear libraries are good, but sometimes PHP has
built-in functions that can do the same tasks (althought perhaps with
somewhat less customization) in far less steps. For the beginner or even
intermediate coder, this may seem unnatural and even confusing at times,
since Pear was only recently taken out of it's baby beta stages, and is
generally not even mentioned in PHP tutorial books, and sometimes not
even in reference books (heaven forbid). The last chapter of the book
(one of the longest) focuses mainly on Pear's application and distribution
throughout your scripts. He introduces Pear's database abstraction and
error-handling, and many other underutilized concepts in surprising
depth. He just makes it look so darn easy. =]

As far as experience goes, I would definitely recommend this book
only to someone who has done substantially more than a "hello world"
script with PHP. Although clear, concise, and down-to-the-point, this
book could prove overwhelming for someone new to programming. However,
judging from the concepts laid out in the book, I'm sure that anyone
with reasonable amounts of previous CGI or almost any kind of programming
would have less or perhaps no trouble with it. What this book *isn't*
is a regurgitation of the online documentation. The author seems to
make sure of that, by implementing concepts not even found in the
documentation. Altough sometimes the best reference is to be had at
http://www.php.net/FUNCTION_NAME, but even PHP's own documentation falls
short at times.

Although this book is severely and painfully excellent, and I will no
doubt buy the second, third, fourth and all editions thereafter, there is
one large quirk that I have with the book; lack of a function reference.
There is no function reference in this book. I looked all over the back
for it, and in the front, and all locations between, and it's nowhere to
be found. Alright, I will admit that probably every single function in
the PHP library is used, explained, and applied somewhere in the book,
and you can just look up the name of the function in the index, but what
if you don't know the name of the function? A good clean function list
ordered by category is what I longed for most when reading this book. Oh
well, even without the function reference, this is definately one of my
top 5 all-time favorite books (it's third only to The Lord of the Rings,
and Tom Clancy's Net Force =]... that has to say something about quality,
if nothing else in this review).

On a final note: this is the most PHP you'll ever find for $39.95,
unless you like arguing with disgruntled Perl hackers on PHP.net's
function reference comments. =]

||*-----           Books Available for Review              -----*|| 

Due to the great response/demand for this feature I have been working
with publishers to increase the selection of books available.  I have
succeeded in establishing a couple of relationships for keeping book
reviewers busy.  The guidelines given to me by these publishers vary
somewhat but the the following outline encompasses behavior that will
avoid feelings of abuse and exploitation all around.

Please read and follow these guidelines in ordering review copies of

1) Limit one book per month. 
2) Publish a review before ordering another book. 
3) When selecting a book for review choose one that has been 
   published within the past year or so. 
4) We are a Linux User Group.  Please keep this in mind when 
   selecting titles.  (For example, Photoshop does not run on 
   Linux so it would be inappropriate to ask for "Photoshop 7: 
   The Complete Reference") 
5) If there were a fifth item it would go here. 

We have not developed a guide for the review itself so until then you
might give Slashdot's book review guide a look see: 

Send reviews to Ken to be published in the next issue of "At Tonight's 
Meeting...".  Please make the files ascii text only with lines wrapped
at 75 characters (to fit an 80 character wide screen).  Check out the 
fmt command.  I will use 'fmt -u foo.bar' to format files that do not 
fit an 80 character screen.  This will likely result in mangling of any 
layout you desire.  As noted in the Slashdot guideline, do not fear of 
making your review too long.  You have taken the time to read the book 
don't wimp out and write a too short a review that does not tell the rest 
of us fully what you think of the book. 

The following books are available for review: 
New Riders Press
Addison Wesley
[ken_i_m:  If there is a publisher whose books you have enjoyed for 
their quality please let me know and I will try to work out an 
arrangment with them for obtaining review copies.]

||*-----                     EOF                           -----*|| 

previous newsletter || index of newsletters || next newsletter