| CPAN Ratings (Gamma) Reviews by Mark Stosberg | |
| Home | Search | About | Login |
RSS | Module Info | Add a review of
8 out of 14 found this review helpful:
The documentation is sparse is feels incomplete. For example, from the CPAN listing you can't even see that it ships with a "shipwright" binary, because there is no POD in it. The source code points you to Shipwright::Script, which has no real documentation either. From there, you might try "Shipwright::Script::Help", but the only documentation for that is: "shipwright help COMMAND show help".
It appears that it would support additional backends besides SVN and SVK, but Shipwright::Backend provides no documentation of the API for adding a new backend.
I think Perl really needs this kind of packaging and deployment solution, and I'm glad some people are working on it and releasing it as open source. This one just doesn't feel ready yet.
Mark Stosberg - 2008-06-27 17:12:20
Was this review helpful to you?
Yes
No
This is a handy module for determining the the file type of a file by examining its contents. However, it some serious bugs (currently 19 are open), and hasn't been updated in two years. I personally ran into problems with bad results under mod_perl.
I would strongly suggest looking for alternatives before using this module. If you just need to check common web image formats, File::Type::WebImages is a simple module for that purpose. It was written precisely because File::MMagic had problems in mod_perl.
Mark Stosberg - 2008-06-21 20:30:12
Was this review helpful to you?
Yes
No
I co-authored this one, so I'm avoiding a formal rating.
When it was written in 2005, it provided a much nicer interface to HTML::FillInForm. However, those warts were all addressed in the HTML::FillInForm 2.00 release. The remaining value this adds to CGI::Application is defaulting to $self->query for the data source, and automatically ignoring "rm" as a form field. If those features aren't important to you, it would be simpler to use HTML::FillInForm 2.x directly.
Mark Stosberg - 2008-04-22 08:33:25
Was this review helpful to you?
Yes
No
This module is decent, and I have used it in production myself. However, it seems the primary benefit of it is to add the feature to get rows as hashrefs to Text::CSV_XS, and that feature has been added to Text::CSV_XS as of the 0.40 release today. So at this point I would advocate just using Text::CSV_XS directly instead of this module.
Mark
Mark Stosberg - 2008-04-07 09:34:33
Was this review helpful to you?
Yes
No
This is yet-another templating system, without any real tests, no POD documentation, and no mention of already existing templating systems to mention which this wheel re-invention would be any better than all the pre-existing templating systems.
Mark Stosberg - 2008-02-16 08:44:54
Was this review helpful to you?
Yes
No
I"m alreaady been a long-time user and fan of HTML::FillInForm, so it's easy to recommend a version which drops the baggage of the older syntax, and is reportedly markedly faster. While it looks like it has a number of automated tests, it would be more confidence inspiring if the test suite from HTML::FillInForm was ported over to run for this as well, removing or translating any tests for it that used the older syntax.
Mark Stosberg - 2008-02-06 11:59:02
Was this review helpful to you?
Yes
No
This module to help speed up test suites is a welcome addition to the Perl quality assurance toolkit.
The documentation is clear and easy to follow. I like that you can switch tests over to this system incrementally, easing migration.
Mark Stosberg - 2007-12-29 17:55:32
Was this review helpful to you?
Yes
No
A neat idea to clean up repeating the same long name space frequently.
My only gripe is that it provides multiple similar syntaxes for doing the same thing, when I think one option would be sufficient, and make for simpler, clearer documentation.
Mark Stosberg - 2007-12-28 07:46:16
Was this review helpful to you?
Yes
No
I'm going to consider using this because I'm tired of writing "my $self = shift" myself.
The code itself looked fairly clean and simple. No filters or deep magic.
In the most recent releases, 'self' is customizable, and it now works inside of 'eval'.
Mark Stosberg - 2007-12-18 14:16:11
Was this review helpful to you?
Yes
No
While there may be some useful code in here, this distribution has very few tests and includes the red flag of a module named simply "Utils".
I wouldn't consider deploying this without thorough review and testing.
Mark Stosberg - 2007-12-13 08:56:03
Was this review helpful to you?
Yes
No
A worth successor to Data::Dumper.
Where "warn Dumper(\@a)" would produce a list like this:
$VAR1 = 1;
$VAR2 = [
2,
3
];
$VAR3 = {
'4' => 5
};
With this module, you could write just "pp(\@)" and get a much
tidier result:
(1, [2, 3], { 4 => 5 })
And while Data::Dumper::Names is nice, it requires Perl 5.8.2. This module requires just 5.6, making it likely it work on nearly all Perl installations you encounter.
(To respond to David Garamond's rating: the "dump" and "pp" commands are the same. Also, I've submitted a patch to improve the docs).
Mark Stosberg - 2007-12-05 19:18:10
Was this review helpful to you?
Yes
No
It's helpful to have this example code which shows how a view CGI::Application plugins can fit together. It could be improved with a little more documentation to walk through the code, although it is already rather straightforward.
Mark Stosberg - 2007-09-13 14:24:54
Was this review helpful to you?
Yes
No
It's an interesting and useful idea, but I question the implementation. This fixes the args passed into new() in away that isn't changeable, surely dis-allowing some preference options some people will want.
I would prefer to see this implemented as a sub-class or plugin.
I'm sure a new() trigger in HTML::Template::Pluggable could be added to support this.
I took off another star for the lack of a "Changes" file.
Mark Stosberg - 2007-08-29 07:53:44
Was this review helpful to you?
Yes
No
Nice. It's like a polished version of the old "Larry's File name fixer" script:
http://www.unix.org.ua/orelly/perl/cookbook/ch09_10.htm
Mark
Mark Stosberg - 2007-08-13 09:25:51
Was this review helpful to you?
Yes
No
With an easy to use binary included, htmlcopy removes one more reason to use Dreamweaver. Now HTML files can moved around easily on the command line, keeping relative references within the HTML intact.
Mark Stosberg - 2007-08-10 18:54:28
Was this review helpful to you?
Yes
No
Module authors are interested to know when (or if) a module was in the core to decide what dependencies to use, and which ones to declare. You can't get any easier than "corelist Module::Foo".
It worked great for me.
Mark Stosberg - 2007-07-28 05:28:15
Was this review helpful to you?
Yes
No
In the past I had written my own simple "elide" functions for different projects, but no more! This module looks to have to clear docs, and sufficient tests.
However, I have to tone down my enthusiasm for it became of the dependency chain. It depends on Sub::Exporter, which depends on Data::OptList, which had a "pod.t" that failed when I tried to install it:
"Insecure dependency in chdir while running with -T switch at /usr/local/lib/perl5/5.8.0/File/Find.pm line 807."
This might be a side-effect of trying to install the modules as a non-root user.
For similar, simpler module with no dependencies, see Text::Truncate instead.
Mark Stosberg - 2007-07-03 08:48:57
Was this review helpful to you?
Yes
No
The concept is a step forward in making Perl projects easier to deploy. There remains a bootstrapping problem: You can't give an end-user a 'pip' file to install, because they won't have 'pip' to install it with.
Mark Stosberg - 2007-05-01 07:57:30
Was this review helpful to you?
Yes
No
I agree, it's a horrible choice of a package name.
Mark Stosberg - 2007-05-01 07:44:12
Was this review helpful to you?
Yes
No
This is a nice little .htpasswd management application. I was able to deploy it for a project today fairly easily. It could be more versatile by supporting other config backends besides Config::Tiny, but that's a relatively minor issue-- Config::Tiny is small and has no dependencies of its own. Overall: recommended.
Mark
Mark Stosberg - 2007-02-15 12:54:29
Was this review helpful to you?
Yes
No
Perhaps there is something useful in here, but I can't tell from the largely absent documentation in the top level module.
The description "classes for multiuser web applications" could use clarifying as well, since I thought websites were generally expected to have more than one person use them....
A "SEE ALSO" section comparing this web framework to existing popular ones would also be very useful.
Mark Stosberg - 2007-02-01 05:39:16
Was this review helpful to you?
Yes
No
I needed to test that a large arrayref of hashrefs contained a couple elements somewhere in a couple different hashrefs in the structure.
By combining cmp_deeply(), supersetof() and superhashof() from this module, I was able to solve the problem elegantly.
Highly recommended for data structure testing. Don't wait for a complex data structure to try it.
Functions like superhashof() also make it even easier than is_deeply() to write tests for some simple cases.
Mark Stosberg - 2007-01-23 11:12:04
Was this review helpful to you?
Yes
No
It's a nice system for handling exceptions in larger systems-- it's what I'm using now.
I have some sense there's a way to make it simpler, but it certainly works well enough.
Mark Stosberg - 2007-01-12 08:03:02
Was this review helpful to you?
Yes
No
A useful module, but its origins as a feed management tool show through too much. The documentation refers to the content that is fetched as "feed" sometimes, even when it doesn't need to a feed at at all.
It's currently not an attractive tool to mirror image files (or other sizable files with), because it would put the whole file into a Perl data structure and serialize it and cache it that way. Something like mirror() from LWP::UserAgent may be more interesting in that case.
Still, it has some neat features like Gzip support and comprehension of cache-related HTTP headers, and may be worth a look for inspiration, even if it doesn't exactly match your needs.
Mark Stosberg - 2006-11-17 09:52:30
Was this review helpful to you?
Yes
No
This CGI::App plugin makes easy work of dumping CSV data to the web. This more recent release adds iterator support so data can be streamed to the web without being held in memory all at once. With this feature addition, I consider this plugin "complete".
Good docs and a number of automated tests.
Mark Stosberg - 2006-10-13 07:41:38
Was this review helpful to you?
Yes
No
A helpful and frequently useful simplification for CGI::App projects. The stability and functionality is worthy of 1.0, rather than 0.1 for this simple plugin.
Perhaps this functionality should even be in the core of CGI::Application.
Recommended.
Mark Stosberg - 2006-10-11 12:40:14
Was this review helpful to you?
Yes
No
Excellent. Clear docs and code, and plenty of tests. Recommended.
Mark Stosberg - 2006-09-27 08:39:34
Was this review helpful to you?
Yes
No
I found the documentation confusing and there are no real tests beyond trying to "use" the module. A SEE ALSO section was also missing, which could explain why this module is considered better than the existing alternatives.
I highly recommend the "Data::Page" and "Data::Pageset" family of paging modules instead, which are mature, well-tested and well-documented.
Mark Stosberg - 2006-09-19 11:58:16
Was this review helpful to you?
Yes
No
I gave this distribution fives for everything but a 2 overall, because I dont' recommend it, at least for CGI.pm users. You could do this instead:
%h = $self->query->Vars;
or
$href = $self->query->Vars;
It is annoying that CGI.pm gives you back null-separated values instead of an arrayref, but multi-valued params needed be handled speciallly anyway (since they are an arrayref and not a scalar). So, it's easy to just use:
@values = $self->query->param('field')
in those cases.
This would be better implemented as a generic mix-in style plugin for query objects, since it works on with any object with a compatible param method. Doing so would require only a couple of lines of code changes and would make the moodule useful beyond CGI::Application.
Mark Stosberg - 2006-09-13 14:23:30
Was this review helpful to you?
Yes
No
I tried it on a 70,000 line CSV file and it works great. Fast and easy to use. My only complaint was that I still had to load Text::CSV_XS directly to call the "combine" method, so I could spit back out a CSV row in a munged format. Seems more like a "1.0" release than an "0.02".
Mark Stosberg - 2006-09-06 08:46:27
Was this review helpful to you?
Yes
No
I could never wrap my head around HTML::Parser, but I found this alternative easy to use and sufficient for several HTML parsing tasks.
Mark Stosberg - 2006-08-25 09:41:58
Was this review helpful to you?
Yes
No
Every new templating module should be required to have a "Justification for Existence" section, like this one does. I appreciate that. Overall, the docs are helpful and the justification is somewhat reasonable, but there are no substantial tests for the module right now. I would stick with one of the more established templating systems until that changes.
Mark Stosberg - 2006-08-21 10:19:34
Was this review helpful to you?
Yes
No
I disagree with David Cantrell's harsh review. The code is OK, although stylized in a uncommon way. There are some tests.
The Synopsis shows how this can be used as part of a simple internationalization system.
The project could definitely use more documentation to explain what it's particularly great it, but I found it decent and novel.
Mark Stosberg - 2006-07-25 13:24:28
Was this review helpful to you?
Yes
No
Exciting project, but it currently doesn't directly support basic things like a hash definition. However, the pace of progress seems to quick, and I expect we'll see details like that repaired soon. (Hashes are a known issue on the TODO list).
I hope to use it see what's involved in porting Perl5 modules to Perl6.
Mark Stosberg - 2006-07-12 12:11:54
Was this review helpful to you?
Yes
No
A welcome addition to my toolkit. In the past I've written the kind of code that this module abstracts to load the "best" of two modules, like YAML::Syck and YAML.
It's boring code to write, and more difficult to get right on the first try than I suspected. The next time I need to do this, I'll reach for Best.pm instead!
Mark Stosberg - 2006-07-02 12:05:05
Was this review helpful to you?
Yes
No
Works great, and is used by other testing modules like Test::WWW::Mechanize, which uses it to test web page content.
Mark Stosberg - 2006-06-21 11:04:32
Was this review helpful to you?
Yes
No
Mark Stosberg - 2006-06-10 13:23:43
Was this review helpful to you?
Yes
No
I agree with Leo that I would rather this module implemented as an extension to Data::Page. However, I really like that it helps to generate HTML, while still allowing you complete control over final HTML if you want that.
I added an example to Annocpan that demostrates that the interface is flexible enough to allow you to use it in conjunction with a templating system to provide the final logic and HTML code.
http://www.annocpan.org/~BERIKV/Data-Page-Set-0.04/lib/Data/Page/Set.pm#note_863
It's unfortunate that it isn't named Data::Page::Link, as the current name makes it sound like it is purely an alternative to Data::Pageset, when the focus is somewhat different.
Mark Stosberg - 2006-06-08 08:24:38
Was this review helpful to you?
Yes
No
The module does its own HTML parsing instead of farming out that task, which I see as a weakness. It also has no tests, and hasn't been updated in four years.
I recommend HTML::FillInForm instead, which serves the same purspose, uses HTML::Parser for parsing, has many tests, is widely used and has been updated to handle various edge cases.
Mark Stosberg - 2006-05-23 12:57:40
Was this review helpful to you?
Yes
No
In isolation, this module looks OK. The interface is decent, although including "return_" in the method names adds little. The docs and automated tests look good enough.
But this module does not exist in insolation. There are many date/time modules to come before it, including the excellent DateTime suite.
Considering DateTime handles this task and more and is well tested through wide-use, it's hard for me to recommend this one.
The idea of focusing just on returning the current date is interesting, but really what most of this module does is try to make formatting a date easy, and the current date is just a special case of that.
I would rather see the effort applied to this module go into a DateTime formatting module, although I'm not convinced another one is needed.
Mark Stosberg - 2006-04-06 13:41:19
Was this review helpful to you?
Yes
No
This is a welcome addition to the CGI::Application tool chest, allowing for easier testing and work offline without a full Apache server. Despite the "0.01" release, there looks to be solid tests and documentation and tests for the code that is present, which is already useful.
Mark Stosberg - 2006-03-15 19:33:20
Was this review helpful to you?
Yes
No
MIME::Lite has been my standard e-mail generation solution for years. I use it for tasks from simple to complex. Today I noticed another small but important benefit it offers: It strips headers of newline characters, preventing a "header injection attack" when e-mails are generated from values gathered from untrusted sources.
Mark Stosberg - 2006-03-15 06:37:21
Was this review helpful to you?
Yes
No
This scraping tool is to nice to have in the toolbox, but's no substitute for a deeper understanding of Perl REs. Having been a convenient solution in the past, today Template::Extract fell flat on its face when I tried to use it. Even with the DEBUG option turned on, it just churned for a long time with no useful result.
Accomplishing the same task using regular pattern matching turned out to be simple to write:
my @custs;
while ($html =~ m{/custs.cgi\?id=(\d+)'.*?(PROSPECT|LEAD)-(.*?)\s*</td>}gs) {
push @custs, {
cust_id => $1,
stage => $2,
status => $3,
};
}
And it ran noticeably faster! Having compared both styles, sometimes the "old fashioned" way turns out to be simpler and clearer.
But yes, Template::Extract is certainly a neat idea and fun to play with.
Mark Stosberg - 2006-03-03 11:34:20
Was this review helpful to you?
Yes
No
A welcome addition to the "FindBin" idea. I primily use FindBin for the purpose addressed here -- to find a perl library directory relative to the script being called. This module allows me to replace:
use FindBin (qw/$Bin/);
use lib ("$Bin/../../perllib");
With
use FindBin::libs qw(base=perllib);
Mark Stosberg - 2006-02-28 12:11:30
Was this review helpful to you?
Yes
No
It works as advertised to integrate the TT dot notation in HTML::Template::Plugin::Dot into CGI::Application.
However, I'm taking a star off as the implemention is now out date with CGI::Application. I submitted a patch to address that last November, which can be tracked here:
http://rt.cpan.org/Public/Bug/Display.html?id=17732
Mark
Mark Stosberg - 2006-02-18 14:52:28
Was this review helpful to you?
Yes
No
I had a hand in this one, so I won't give a formal rating.
This module provides an internal redirect, and I now consider it an integral part of the CGI::Application framework.
It's added value is that it keeps track of the "current run mode" when making internal redirects in CGI::Application.
It works well in combination with the newer feature of load_tmpl() to have a default template name based on the current run mode.
Without the forward() feature, the calculation of the template name after the internal redirect wouldn't work.
It's not essential depending on your application, but for cases like the above, it's exactly the right tool for the job. Some other plugins may already use it internally whether you it directly or not.
Mark Stosberg - 2006-02-18 14:40:08
Was this review helpful to you?
Yes
No
This plugin for CGI::Application allows to you skip the step of declaring a "setup()" routine, by making use of subroutine attributes to label run modes instead. I find it to be more concise and clearer as well.
Unfortunately, when using it on amore complex project, I ran into a problems. The first what that it doesn't play well with standard export/importing, but uses its own "Delegate" system to essentially re-implement this. This functionality involves passing an argument to the delegate routines, which I didn't want and had to workaround.
Worse, when I switched to modperl, none of run modes declared this way worked. Perhaps it works for others, but it became clear my own time savings with using this module evaporated, and I took it out of my code.
I love the idea of this module and hope some of the hassles I ran into will be addressed in a future version.
Mark Stosberg - 2006-02-18 14:26:40
Was this review helpful to you?
Yes
No
I evaluated this solution carefully and so far have decided not to use it. As with Cees' other published work, it generally feels well designed, documented and tested. For simple authentication, I felt like it was overkill. (It has whole modules to wrap the "uc" and "lc" functions!)
It seems like better fit when authentication needs or more complex, such as supporting multiple authentication methods.
It could also be a nice solution if you haven't designed an authentication system before and want a documented framework for it that illustrates all the parts of it.
The project is admittedly early in its lifecycle, and I look forward to seeing how it evolves.
Mark Stosberg - 2006-02-18 14:12:48
Was this review helpful to you?
Yes
No
I'm using this in a project and like the overall design. I currently give it a middle of the road rating because I think it should offer a little more functionality. (See bug reports 17479 and 17480 for details).
I would recommend trying it to help with authorization on a CGI::App based project, as the code is accessible and easy to extend if it doesn't have a driver or feature you need.
Mark Stosberg - 2006-02-18 14:02:04
Was this review helpful to you?
Yes
No
This distribution tries to provide an all-in-one solution for user, group, session, authentication and authorization handling in web applications. Such an all-in-one solution appeals to me, but I have trouble feeling better than so-so about this distribution it its current state.
It suffers from some issues I would expect from an 0.01 release, like missing documentation for the "login" method. However, it does contain a sizeable test suite.
I was interested to see that it used DBIx::Migration, another newer distro which looks interesting, but I was dismayed to find this meant that there were 19 seperate SQL scripts used to set up the schema! This seemed excessive, and made it difficult to browse the data model to get an overview of what was happening at that layer.
One concept concerted me: 'A "Group" is just a user with it's "is_group" flag set.' This looks me like it could lead to a muddled data model once users and groups have a few attributes of their own.
I think the most compelling part of the distribution is the logic developed around managing groups and permissions-- areas which seem less well covered by other modules.
I'd like to see this distribution evolve to focus on this in a way that's easy to integrate with solutions that already cover the rest of the features, such as CGI::Applications Authentication and Authorization plugins.
Mark Stosberg - 2006-02-18 13:54:05
Was this review helpful to you?
Yes
No
From the volume of documentation, clearly a lot of work has gone into this web/database solution. However, my first impression of the documentation that was full of details, explaining what flags like "-recDel1C" should do, while being short on overview or "marketing" documentation to draw the user in. This, combined with the missing the "Changes" file and lack of substantial tests, I'm not inclined to explore further.
The source code seems to model the verbose but cryptic documentation, making heavy use of difficult to grok arguments-by-index, like this:
length($_[1]) <$NLEN ? ($_[2]||'0') x ($_[3] ||$NLEN -length($_[1])) .$_[1] : $_[1];
Overall, I find this module inaccessible.
Mark Stosberg - 2006-02-18 10:23:46
Was this review helpful to you?
Yes
No
This module appears address authenication and authorization for db-backed websites, but has a lot of problems. It only has one test, to load the module, and it will fail because the module name in the test is wrong.
The interface uses "auth" to means "authentication" at times, and "authorization" at other times.
It requires a specific data model, but it doesn't document what the data model is.
It also uses the remote machine address for authenication, which will fail with proxies such as AOL uses. There are no options to /not/ use the IP as part of the process.
I would suggest instead exploring CGI::Session and the Authorization and Authenication and session plugins that are part of the CGI::Application or Catalyst frameworks, or perhaps Authen::Simple.
Mark Stosberg - 2006-02-14 08:25:31
Was this review helpful to you?
Yes
No
This release includes no documentation, no substantial tests, and from reading the source, it's functionality is largely to re-implement basic templating functionality that is already available in a dozen different ways on CPAN.
For this module to become in a worthwhile CPAN addition in my book, I'd like to see not just test and docs, but a clear statement of its value and niche as a newcomer to a field with so many established alternatives.
Mark Stosberg - 2006-02-14 06:56:12
Was this review helpful to you?
Yes
No
This is a helpful, well-documented tool, but it is not robust-- It supports only a subset of what YAML and HTML can do. For example, it currently lacks HTML table support. I would like to see it develop in the direction of CGI.pm's tag support: Allowing you to create a tag "on the fly". I look forward to seeing it develop further.
Mark Stosberg - 2006-02-01 07:38:00
Was this review helpful to you?
Yes
No
This module creates ordinal numbers from plain ones ( "3 -> 3rd" ).
I was a little surprised not to find this functionality in DateTime or even the strftime man page. However, I suppose the sticking point is that is language-specific.
Whatever the reason, this module provided a simple function that did the job for me. Except for the long name I'll have difficulty remembering, I'm happy.
Mark Stosberg - 2006-01-27 07:16:36
Was this review helpful to you?
Yes
No
This is a very useful module-- I integrated support for it into Data::FormValidator.
However, the overly comprehensive test suite is a pain to wait for. My impression is that the tests go beyond testing this project, and are re-validating that the underlying regular expression of Perl actually works. That seems unnecessary. While I'm for comprehensive testing, I think some simpler is possible here.
Mark Stosberg - 2006-01-12 08:12:44
Was this review helpful to you?
Yes
No
I see little reason to use this when Module::ScanDeps already tackles the same problem space well, including some built-in known exceptions, and the ability to do static scanning or execute the script as well as simpling compiling it.
For this module to be worthwhile for me, it at least needs to explain in "SEE ALSO" why people should bother it instead of the more established Module::ScanDeps.
Mark Stosberg - 2006-01-05 09:16:51
Was this review helpful to you?
Yes
No
So far I have found this module to be a nice introduction to the Prototype library for Perl users. However, I have removed most of the calls to this module that I used. I find it clearer to call the prototype functions directly.
Mark Stosberg - 2006-01-01 17:27:34
Was this review helpful to you?
Yes
No
This will be a nice del.icio.us backup utility, but it needs some polish. It's missing a Config::Auto dependency, so it doesn't install cleanly. For me it generated an empty file, which illustrates that it needs some better feedback functionality.
I look forward an updated version of this module.
Mark Stosberg - 2005-12-23 18:36:28
Was this review helpful to you?
Yes
No
HTML::FillInForm is a huge time saver for form refilling. It's a key part of the CGI::Application::Plugin::ValidateRM for form validation and re-display.
I give the interface and and ease-of-use some points off because there are simple things to do make it easier to use. In part of because of these weaknesses, the DWIM functionality has been duplicated in plugins for CGI::App and Catalyst which use it.
I explain the details of that here:
http://rt.cpan.org/NoAuth/Bug.html?id=13913
Mark Stosberg - 2005-12-23 08:03:36
Was this review helpful to you?
Yes
No
This module computes DateTime sets based on the Ical spec and it does it well. It saved me hours of work with tedious recurrence handling on a calendar project. If you need to handle event recurrence, I recommend following the Ical spec and using this module as part of the solution.
I do have a small niggle with the interface:
http://rt.cpan.org/NoAuth/Bug.html?id=16619
But I expect that will be addressed soon.
Mark Stosberg - 2005-12-23 06:08:26
Was this review helpful to you?
Yes
No
First impression: Very, very nice. I looked through the source and docs to see if there was source filtering to work this magic, but I found none. (Great!). I'm curious to see if there might be a noticeable performance hit compared to Params::Validate or other oddities, but this is definitely a welcome addition to CPAN in my book.
Mark Stosberg - 2005-12-23 05:53:01
Was this review helpful to you?
Yes
No
It's an interesting idea, but it not yet in a state I can recommend. It doesn't have an option to import specific things from plugins, which seems necessary. It also works by modifying @ISA, which is not the usual way that CGI::App plugins work, leading to potentially unexpected results.
Mark Stosberg - 2005-12-21 15:17:23
Was this review helpful to you?
Yes
No
This is a novel and well-implemented development aid for CGI::Application users. This most recent release adds the ability to easily review the POD as HTML for loaded modules. By integrating with the DevPopup plugin, it's easy to review the documentation for the run modes that are executing. Well worth a try!
Mark Stosberg - 2005-12-20 16:42:23
Was this review helpful to you?
Yes
No
A super easy to use replacement for the "Internal Server Error" screen for CGI::App users. This alternative provides a back trace with context, making it easy what led up to the error. The design of the page can be changed through a template. This latest version integrates with the ViewCode plugin. When a pending patch is applied, you'll be able to jump directly to a syntax-highlighted view of the code and go right the failing line. I'm bumping up my rating to five stars.
(disclaimer: I wrote that pending patch...)
Mark Stosberg - 2005-12-19 19:59:28
Was this review helpful to you?
Yes
No
Huh? I'm not sure I feel about having interviews distributed as Perl modules, I couldn't find a transcription in this documentation anyway. It seems like there's been a mistake...
Mark Stosberg - 2005-12-10 08:05:55
Was this review helpful to you?
Yes
No
I have a very favorable first impression of this module. It deviates from HTML::Template's API in a few ways, such as removing die_on_bad_params and adding a dot notation like TT's. I like those changes. I ran the included "bench.pl" script and found that on my system it was repoted to be about 5 times faster than plain HTML::Template, and about 10 times faster than Template Toolkit. (Others have reported that with some tweaks the advantage may be merely 3 times faster under mod_perl).
Mark Stosberg - 2005-12-07 17:32:39
Was this review helpful to you?
Yes
No
At first glance this module suite may be appear to be overkill for the simple task of configuring a database connection. For building one static connection, it is.
However, I think it has a place within frameworks and distributed software that needs to configure connections in several different ways.
I would consider it improvement if it dropped the 'connect' and 'form_data' methods, as the real meat is in the connect_data() routine.
Mark Stosberg - 2005-10-22 11:41:32
Was this review helpful to you?
Yes
No
The easy benefit this module offers is providing a backtrace with filenames and line numbers when your code warns or dies in an eval block.
However the current API is only suitable for development work in many cases, because it globally overrides the 'warn' and 'die' signal handlers.
A more production-compatible solution can be accomplished with the Carp module, and localized handlers like this:
use Carp;
{
local $SIG{__DIE__} = \&confess;
eval { ... }
}
Unless you really prefer how this module formats the output, I recommend the safer syntax of Carp above.
Mark Stosberg - 2005-09-03 07:13:36
Was this review helpful to you?
Yes
No
No documentation, no tests, and a name that leaves you guessing what the heck it does. I checked the source of one of the modules, and there were no useful comments, either.
Mark Stosberg - 2005-09-02 20:34:22
Was this review helpful to you?
Yes
No
HTML::Template::Pluggable bring extensibility to HTML::Template that should allow for more compatible extensions.
HTML::Template::Plugin::Dot adds support for Template Toolkit's dot notation, taking a way a major reason why HTML::Template users make the switch.
The project is not done yet, though-- some more hooks need to be added to complete the plugin system.
The interface is easy to use, and already has attracted third-party support for two different CGI::Application plugins for even easier integration.
( disclaimer: I contributed some to this project although I think Rhesa has done most of the work. )
Mark Stosberg - 2005-08-26 09:01:25
Was this review helpful to you?
Yes
No
This module claims to be a "lightweight" alternative to existing templating system, but doesn't bother with many details of why they are overkill, and why the other lightweight options are insufficient.
At the same time, it adds some less common features: defaults, "override values", sprintf formatting, and a special exception handling system.
In whole, it is Yet Another Templating System with it's own benefits and drawbacks, which in my opinion we sorely don't need without a clearer understanding of what's wrong with the existing alternatives.
I would rate this module higher if it had an expanded SEE ALSO section that better explained when it is expected to be a better choice over the the established alternatives.
Mark Stosberg - 2005-08-25 07:07:23
Was this review helpful to you?
Yes
No
An excellent example of a "plug-in" for Data::FormValidator, this module helps
to validate dates in common formats and return them as a useful DateTime
object, making it potentially more useful than the built-in date validation
routines.
It provides a great example of the more pleasant 'constraint_methods' syntax
available with DFV 4.0.
(disclaimer: I maintain DFV, but am not directly involved with this module's
development).
Mark Stosberg - 2005-08-24 09:44:53
Was this review helpful to you?
Yes
No
This was the perfect tool to help test the upcoming HTML::Template::Plugin::Dot module, which allows chained accessor calls to be referenced in a template, like TT does.
We needed to test lots of method calls, but not for any particular module. Making generic fake objects was very handy and fast with this module.
Mark Stosberg - 2005-08-06 11:07:49
Was this review helpful to you?
Yes
No
This module was easy to install and configure and worked as documented. I find it very useful. My favorite shortcut was this one:
pod: http://search.cpan.org/perldoc?
Which allows me to link with perl documentation for a module with just:
{pod:CGI::Application}
Mark Stosberg - 2005-08-01 09:58:30
Was this review helpful to you?
Yes
No
I was able to parse my config file easily enough with it, but the ability to write files is missing, severely hampering the usefulness of the module. Considering it hasn't been updated since 2001, I'm not going to hold my breath. It also doesn't have any real automated tests.
I'm currently evaluating Apache::Admin::Config as alternative which at least appears to have the ability to write files includes a test suite as well.
Mark Stosberg - 2005-07-28 14:51:28
Was this review helpful to you?
Yes
No
This module "just worked" for me. I realized I had a testing library that was creating a database handle for every test script whether it was needed or not. With Data::Lazy, it was easy to only create the handle if it was needed by making the a change in one place.
Mark Stosberg - 2005-07-27 09:38:00
Was this review helpful to you?
Yes
No
It's a nice module, but has an old and simple bug that will prevent it from working for many people. There is a name conflict with "Pod::Find", also located in the "Pod::Parser" distribution. Until one of them renames their module to avoid this issue, the 'podtohtml' script won't run.
Mark Stosberg - 2005-05-19 16:53:20
Was this review helpful to you?
Yes
No
It's not especially useful without a synopsis or a description.
Mark Stosberg - 2005-03-24 16:24:53
Was this review helpful to you?
Yes
No
Image::Magick is a powerful image processing tool and handles many formats. I have used it for making thumbnails and rounding the corners of images.
On the downside, it is significantly under-documented, and the ChangeLog file in the distribution stopped recording recent changes many versions ago. I have also experienced a number of a regressions with Image::Magick-- features quit working after an upgrade. Twice the functionality to created rounded corners has silently broken. Another time a particular kind of JPEG starting Image::Magick to run indefinitely. Yet another time, a trivial syntax change was needed after an upgrade which could have been avoided. Perhaps most seriously, it appears that after upgrading to 6.1.9, there was a bad memory leak that effectively took down a busy mod_perl enabled website which used it.
For these reasons, unless you need some cutting edge feature of Image::Magick, I recommend the Graphics::Magick fork. In my own testing, no code changes were needed besides the name change. Graphics::Magick has a focus on being more stable, and I believe it includes more automated tests in it's distribution.
Graphics::Magick is not on CPAN yet, but there are pre-made packages for many platforms that include the Perl module has part of the package.
Mark Stosberg - 2005-02-09 06:28:16
Was this review helpful to you?
Yes
No
Using bind variables is important when creating SQL statements because they provide protection against SQL injection attacks. SQL::Abstract made a worthy effort to generate SQL and bind variables, but failed to handle complex cases, as well as using a syntax that could be unintuitive.
SQL::Interpolate is a next-generation solution for SQL generation with a perfect balance of expression between direct SQL manipulation and Perlish shorthands. You can use as much direct SQL wherever you like with SQL::Interpolate, making easy work complex 'WHERE' clauses with combinations of nested 'AND' and 'OR' bits.
It has abstraction levels to suit most anyone's tastes. You can simply generate SQL and bind variables if you like. You may also use it as a value-added wrapper around DBI. For the adventurous, a source filtering option is available, providing the easiet interface, at the risk of difficult to track bugs.
David Manura has been very thoughtful about the design and production of this module. Although this is the first release, I would declare it a "1.0" release myself, rather than the modest "0.3" David has assigned it.
Highly recommended for SQL generation.
(disclaimer: I contributed to this module, and to SQL::Abstract before I found this one. )
Mark Stosberg - 2005-01-15 13:20:25
Was this review helpful to you?
Yes
No
This module has poor security that can be avoided. It makes system calls from the user input without any validation:
`createdb $db_name >& /dev/null`;
The same thing could accomplished easily without using a system call. ("CREATE DATABASE" can issued from within DBI and has a chance of being portable).
Mark Stosberg - 2005-01-03 10:16:48
Was this review helpful to you?
Yes
No
This module helps with the slightly tedious task of streaming files to the browser with CGI::Application. (An example would be a PDF you generate on the fly). It makes two key parts dead simple: It takes care of streaming the file in little chunks, and figuring out the MIME type to send as the header for the file.
(I contributed some code to this module).
Mark Stosberg - 2004-12-24 14:07:16
Was this review helpful to you?
Yes
No
This module offers a simple and consistent file upload interface that works with CGI.pm, CGI::Simple, and potentially other CGI.pm-like modules. It also offers an easy interface to the mime-type of the uploaded file, detected using File::MMagic.
Recently, a strong test suite has added as well.
I think it's most useful for people who are writing file upload systems that they might want to work with multiple CGI.pm-like modules.
Otherwise, it may be simpler to use use the upload routines already built-in to those modules, and call File::MMagic directly.
Mark Stosberg - 2004-06-08 11:19:17
Was this review helpful to you?
Yes
No
This module doesn't really do anything. It's supposed to be used as a placeholder until you decided on a "real" CGI::Session interface to use. This would make sense if you had to set up a complicated database or other backend to store sessions. However, by default CGI::Session easily stores files in a "tmp" directory. Usually, zero configuration is required for this. As a CGI::Session user myself, I just don't see the need for this module.
Mark Stosberg - 2004-05-08 16:52:18
Was this review helpful to you?
Yes
No
Insufficient documentation is provided to actually use the module (without reading the source code).
Mark Stosberg - 2004-04-21 07:59:42
Was this review helpful to you?
Yes
No
The functions seems somewhat useful, but a "misc utils" collection is often hard to find, and well, collections of mostly unrelated functions don't seem that useful to me. I would much rather see these functions added to existing modules, or exist as their own specialized utility modules.
The 'mkdirs' function re-implements functionality which has been provided by File::Path::mkpath, which has been in the Perl core since 5.005. I figured that out by searching for 'mkdir' on search.cpan.org and reviewing the first 3 pages of results.
Mark Stosberg - 2004-04-13 13:35:42
Was this review helpful to you?
Yes
No
This module worked great for me. I was easily able to use it to generate a PDF file. I was also happy to see that that the documentation contained a tip to allow it work under mod_perl. Before I found this I made system calls to the 'htmldoc' binary. With this module I no longer have to bother with managing temporary files myself.
Mark Stosberg - 2004-04-08 19:53:01
Was this review helpful to you?
Yes
No
The module appears to offer no significant benefit over the much more established HTML::FillInForm. FillInForm also has a much more thorough test suite as well.
This module makes the claim that it doesn't have the dependencies on "CGI/modperl" that HTML::FillInForm does. This is a false claim. FillInForm does not require CGI or mod_perl to be installed to install or use the module-- A vanilla hash will work just fine as data source. In fact, FillInForm only requires Perl 5.5 to work, while this one requires 5.6. It also depends on HTML::Parser and HTML::Entities, which were not properly declared in the Makefile.PL. I recommend using the old standby, HTML::FillInForm instead.
Mark Stosberg - 2004-04-08 19:48:24
Was this review helpful to you?
Yes
No
All I wanted to do was to turn a CVS file into an array of hashes. Seems simple enough. This module performed the task as easily as I could have hoped. I first wrestled with DBD::CSV and then tried Tie::Handle::CSV. The latter didn't work because the hashes it produced were really blessed objects. By contrast, this simple module 'just worked'.
It's a good thing, though, because it doesn't many options to configure how it works.
Mark Stosberg - 2004-04-01 13:17:32
Was this review helpful to you?
Yes
No
This is my favorite paging module. Before I found it, I had rolled my own, and tried to use HTML::Pager a few times. Realize that most of the time, you probably want to use "Data::Pageset", a sub-class which handles the notion of dealing with groups of pages. At first I thought the module was "too simple". Once I tried it, I found the level of functionality it provided was "just right".
Mark Stosberg - 2004-03-29 13:10:04
Was this review helpful to you?
Yes
No
Creating a 'light' CGI.pm without the HTML generation functions is a an admirable goal. However, it seems CGI::Simple has already done an excellent job at this. CGI::Simple runs much of the original CGI.pm test suite, insuring a high degree of compatibility. CGI::Utils, by constrast, has relatively few tests, and appears to be using none of the original CGI.pm tests. It appears some function names are different without great reason. For example, The "escape" function from CGI.pm is named: "urlEncode". So I would consider using CGI::Simple instead.
Mark Stosberg - 2004-03-29 12:57:22
Was this review helpful to you?
Yes
No
I don't think this module adds sufficient additional value to merit using. It requires CGI.pm, which already has an https() check built in. It's primary function is just a simple wrapper around that:
sub cgi_is_via_SSL {
return 1 if $query->http('HTTPS');
return;
}
I believe with CGI.pm, taking action based on whether or not HTTPS is in effect is quite easy:
if ($q->https()) {
}
It's actually less to type than using the wrapper. :)
croak_unless_via_SSL()
could just be:
croak unless $q->https();
Mark Stosberg - 2004-02-02 11:50:03
Was this review helpful to you?
Yes
No
This module installs with a very handy tool called "hypertoc", which is useful for generating automatic Table of Contents for HTML files. It makes a nice complement to the "podtohtml" utility (Not be be confused with pod2html). PodtoHtml does a good job of processing whole directories of files, but the resulting pages don't include their own Table of Contents pages. It's easy to add them with hypertoc:
find /doc/output/dir -name '*.html' -exec hypertoc --gen_anchors --gen_toc --overwrite --inline {} \;
Mark Stosberg - 2004-01-11 09:00:59
Was this review helpful to you?
Yes
No
It Just Worked. I couldn't really ask for more. Actually, I could ask for a little less. :) It provides an OO interface, which just makes method names from the hash keys that IPN has returned.
It seems to me that this could be removed from the docs and code without a loss of functionality-- accessing the hash directly is easy enough.
Mark Stosberg - 2003-12-31 13:24:50
Was this review helpful to you?
Yes
No
This module has a vague and name description. It says it offers "several extensions..." to Perl, but all the functionality it offers is from a single function with one active line.
Mark Stosberg - 2003-12-12 11:56:20
Was this review helpful to you?
Yes
No
I'm improving my rating of this module because some documentation appeared. I would change the overall rating to be "undef" if I could...because I haven't tried it out directly myself. I'll leave it at 3 instead.
Mark Stosberg - 2003-12-05 10:23:19
Was this review helpful to you?
Yes
No
I've been using DBI/DBD::Pg exclusively for years as my Postgres access method for Perl. It works and works well. (Disclaimer: I'm a minor contributor to the module).
A new release of DBD::Pg is out and I'm upgrading my rating from 4 stars to 5. It has a number of bug fixes, performance improvements and feature additions, as well as stronger documentation, and about 100 new tests since the last release, if I recall.
I'm very happy with it.
Mark Stosberg - 2003-11-18 19:34:04
Was this review helpful to you?
Yes
No
I love the new 'prove' testing tool. It's a great help when developing and testing. For example, it makes it easy to be "verbose" when making tests, and to pick out just a few tests to run. Like this:
prove -v -b t/01setup.t t/15specific_test.t t/99cleanup.t
It's much more convenient for me than trying to do the same thing with "make test".
Mark Stosberg - 2003-11-15 10:04:25
Was this review helpful to you?
Yes
No
A well documented and easy-to-use module for comparing arrays. Even if this module doesn't do what you want, It's thorough review of similar modules in the documentation will send you in a useful direction.
Mark Stosberg - 2003-11-07 07:34:37
Was this review helpful to you?
Yes
No
This module supplies the 'cpantest' binary, which makes it incredibly easy to submit test results to the CPAN testers project. I think the documentation could be a little more explicit, providing a direct example of the process, but it's still quite reasonable to figure out as it is.
I look forward to this tool being more widely used, so we can better guage the overall quality of modules on CPAN.
Mark Stosberg - 2003-09-28 08:56:17
Was this review helpful to you?
Yes
No