Archives: September 2008

Swish3 Status 19 Sept 2008

A long hiatus for a full summer and then some contract work.

Some benchmarks of the latest tokenization algorithm shows that pure-ASCII tokenization is about 20% faster and UTF-8 tokenization is about 2% slower. So I’ll take it.

Benchmark was performed by using perl/docmaker.pl to generate 100 random “docs” in both encodings (ASCII and random UTF-8) and then timed using swish_lint with and without the -t option.

Also recently fixed some failing tests on Linux and a memory warning.

Tests

Swish3 has a lot more tests that Swish-e (not counting Josh Rabinowitz’s excellent testing package). And as of tonight all Swish3 tests are passing under both Linux 2.6 (CentOS 5) and OS X 10.4. \o/

CRUD

A year ago I announced the idea of a new Catalyst CRUD framework based on my previous work with Catalyst::Controller::Rose. The basic design hasn’t changed much, and a year later, CatalystX::CRUD (CXCRUD) 0.30 hit CPAN today, along with a bunch of related modules.

Here’s the rundown:

CatalystX::CRUD
The core API and base classes. There’s a RPC-style Controller, a REST-style Controller, a Model, a ModelAdapter, and some support for those, especially for testing. There’s been some misunderstanding about what CXCRUD is. It’s not a scaffolding creator. It’s not a code generator. It’s not even really a framework. It’s an API and some base classes that help implement the API. That’s about it. CXCRUD makes it easier to get your form code and your model code into HTTP-land with Catalyst.
CatalystX::CRUD::Controller::RHTMLO
This base controller assumes you are using Rose::HTML::Form as your form class. The .pm file is only 200 lines long, most of which is documentation. The point is that CatalystX::CRUD::Controller (the base class) implements everything, and the RHTMLO version just adapts it a little to Rose::HTML::Form.
CatalystX::CRUD::Model::RDBO
Brings your RDBO and RDBO::Manager classes into the Catalyst::Model namespace. Mostly this class just implements the core API methods for searching and fetching objects.
CatalystX::CRUD::ModelAdapter::DBIC
Makes it easy to use your existing Catalyst::Model::DBIC::Schema code with CXCRUD. I want to thank Zbigniew Lukasiak for pushing me toward this particular implementation and away from the earlier (and now deprecated) CatalystX::CRUD::Model::DBIC. I’ve been using this particular module lately on a project so it has gotten some needed attention.
CatalystX::CRUD::View::Excel
The core API is silent with regard to the View. That’s because the View is properly outside the concern of the create, read, update and delete actions. But that doesn’t mean the View is irrelevant. The Excel View lets you return CRUD results as an Excel file since that seems to be a useful format for manipulating data on the desktop, outside the HTTP sphere — and because it allows a far richer array of presentiation options that anything the core API could define.
CatalystX::CRUD::YUI
Six months ago I announced Rose::DBx::Garden::Catalyst, which continued to evolve as part of a project I was working on. It got to the point where I had put so much effort into the Template Toolkit design and Javascript (built on top of the Yahoo! User Interface library) that I felt it deserved to be split out into its own package and made independent of Rose::DB::Object.

CatalystX::CRUD::YUI 0.004 hit CPAN today. It conforms entirely to the core 0.30 CXCRUD API, which means that it is model-agnostic. You can use it with RDBO, DBIC and (hopefully soon) LDAP. Or whatever your model is. It just needs to implement the CatalystX::CRUD::Model or ModelAdapter API.

CatalystX::CRUD::YUI offers an easy way to do web-based administration of a database. It supports one2many and many2many relationships.

Rose::HTMLx::Form::Related
This package extends Rose::HTML::Form to perform model introspection. It currently has drivers for both RDBO and DBIC. It also comes out of the Rose::DBx::Garden::Catalyst project. Each model driver requires a helper package, either Rose::DBx::Object::MoreHelpers for RDBO or DBIx::Class::RDBOHelpers for DBIC. These helper packages implement the same methods and (in the case of RDBOHelpers in particular) aid in relationship introspection.
Rose::HTMLx::Form::Field::Serial
A new field type for RHTMLO for auto-increment fields.
Search::QueryParser::SQL
This is my latest project. It turns free-text queries into something that CXCRUD can use. There are methods for DBI, RDBO and DBIC, as well as raw SQL. Search::QueryParser is a great package, and it was fun to build on top of.
Rose::DBx::Garden::Catalyst
This package is now mostly a thin wrapper around CatalystX::CRUD::YUI and Rose::HTMLx::Form::Related, with the added features of code scaffolding generation. It’s sort of like a Catalyst Helper on steroids. Version 0.09 has been a long time (well, months) in development, and now includes real tests thanks to the contribution of a schema from Laust Frederiksen.