Squatting
view release on metacpan or search on metacpan
lib/Squatting.pm view on Meta::CPAN
L<Squatting::On::Continuity>, L<Squatting::On::Catalyst>, L<Squatting::On::CGI>,
L<Squatting::On::MP13>, L<Squatting::On::MP20>,
L<Squatting::With::AccessTrace>, L<Squatting::With::Log>,
L<Squatting::With::Coro::Debug>
L<Squatting::On::PSGI>,
L<Squatting::On::Mojo>,
L<Squatting::On::HTTP::Engine>
=item B<Squatting's superclass>:
L<Class::C3::Componentised>
=item B<Squatting apps you can find on CPAN>:
L<Pod::Server> - a nice way to browse through the POD for your locally
installed perl modules.
L<Stardust> - a simple COMET server. (DEPRECATED. Use Web::Hippie or Plack::Middleware::SocketIO instead.)
L<Rhetoric> - a simple CPAN-friendly blogging system for Perl.
=back
=head2 Google Group: squatting-framework
A Google Group has been setup so that people can discuss Squatting.
If you have questions about the framework, this is the place to ask.
L<http://groups.google.com/group/squatting-framework>
=head2 Squatting Source Code
The source code is short and it has some useful comments in it, so this might
be all you need to get going. There are also some examples in the F<eg/>
directory.
L<http://github.com/beppu/squatting/tree/master>
=head2 Bavl Source Code
We're going to throw Squatting (and Continuity) into the metaphorical deep end
by using it to implement the L<http://towr.of.bavl.org/>. It's a site that
will help people learn foreign languages by letting you hear the phrases you're
interested in learning as actually spoken by fluent speakers. If you're
looking for an example of how to use Squatting for an ambitious project, look
at the Bavl code.
L<http://github.com/beppu/bavl/tree/master>
=head2 Continuity and Coro
When you want to start dabbling with RESTless controllers, it would serve you
well to understand how Continuity, Coro and Event work. To learn more, I
recommend reading the POD for the following Perl modules:
L<Continuity>,
L<Coro>,
L<AnyEvent>.
Combining coroutines with an event loop is a surprisingly powerful technique.
=head2 Camping
Squatting is descended from Camping, so studying the Camping API
will indirectly teach you much of the Squatting API.
L<http://github.com/why/camping/tree/master>
=head2 Prototype-based OO
There were a lot of obscure Ruby idioms in Camping that were damn near
impossible to directly translate into Perl. I got around this by resorting to
techniques that are reminiscent of prototype-based OO. (That's why controllers
and views are objects instead of classes.)
=head3 Prototypes == Grand Unified Theory of Objects
I've been coding a lot of JavaScript these days, and it has definitely
influenced my programming style. I've come to love the simplicity of
prototype-based OO, and I think it's a damned shame that they're introducing
concepts like 'class' in the next version of JavaScript. It's like they missed
the point of prototype-based OO.
If you're going to add anything to JavaScript, make the prototype side of it
stronger. Look to languages like Io, and make it easier to clone objects and
manipulate an object's prototype chain. The beauty of prototypes is that you
can combine it with slot-based objects to unify the functionality of objects,
classes, and namespaces into a surprisingly simple and coherent system. Look
at Io if you don't believe me.
L<http://iolanguage.com/>
=head1 AUTHOR
John BEPPU E<lt>beppu@cpan.orgE<gt>
Scott WALTERS (aka scrottie) gets credit for the name of this module.
=head1 COPYRIGHT
Copyright (c) 2008-9 John BEPPU E<lt>beppu@cpan.orgE<gt>.
=head2 The "MIT" License
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
( run in 0.627 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )