Russ Allbery: Pod::Thread 1.01 and faq2html 1.32
Julien LIE pointed out a rendering problem with one of my pages, and some
further investigation revealed that the changes that I made to faq2html
when moving away from Subversion caused all sorts of problems. I started
testing a new version of it, and then found a bunch of other problems with
pod2thread. One I already knew about, but others I'd not seen before.
Since I was working on this anyway, I decided to fix all the problems I
knew about.
Pod::Thread 1.01 now correctly encodes its output for UTF-8, which will
fix some long-standing problems with ISO 8859-1 characters used to render
non-breaking spaces. It also fixes some minor formatting issues and adds
a workaround for the inability to format formatting codes in headings when
generating an artificial table of contents.
faq2html 1.32 now supports multiple subheadings at the top of a page
provided that the start of the second subheading is still a centered
line. I use this format in a bunch of my package README files, all of
which had been misformatted due to not having this support. I did a large
test generation of my web pages, and I don't think I added any new
problems. (faq2html is inherently tricky, since it's converting plain
text to HTML and has to do a bunch of markup guessing. I suppose one of
these days I should just give up and switch over to writing README files
in Markdown or something.)
While I was at it, I also modernized Pod::Thread's module packaging and
switched it to Module::Build, which is the direction I'm (slowly) going
for all of my Perl module work. The generic parts of the test suite also
got a refresh to the latest versions of my generic test suite code (which
I'm currently maintaining in rra-c-util
for lack of a better location).
That had one interesting wrinkle. Pod::Thread was the one Perl
distribution where I'd played with using a module filter program
(something ExtUtils::MakeMaker supports) to set the module
$VERSION
automatically during the build. This had the advantage of letting me
maintain the distribution version in one place (Makefile.PL) no
matter how many Perl modules there are. However, Module::Build doesn't
support that.
So, this afternoon I wrote Module::Build::SetVersion, which overrides the
processing of *.pm files to set the $VERSION string to whatever one
sets dist_version to in Build.PL. This lets you just put
placeholder strings in all of the modules, and the process of building
them into blib will substitute in the current distribution version.
Currently, this module is only in this package and subclasses
Module::Build (it really should be a mixin of some kind, but I didn't work
out a good way of doing that). I'm going to experiment with copying it
into my various module packages, but I suppose at some point I should wrap
it up in its own distribution, add a test suite, and release it properly.
(If you would find this useful, drop me email and I'll prioritize
releasing it properly on CPAN somewhat higher.) Note that you can do the
same thing with the existing Module::Build::PM_Filter module, as well as a
bunch of other things, but that requires you write and maintain a Perl
script at the top level of the distribution that does the desired
transformations and seemed unnecessarily complex for what I was trying to
do. I really wanted something I could just drop in and forget about.
You can get the latest releases of Pod::Thread and faq2html from my
web tools distribution page.
It's 9 in the evening. Do you know if your backups work? Do you know
when you last made a successful backup of all of your data? Do you
know whether you can restore from that backup? If not, how well can
you sleep?
You should verify your backups, and do it regularly, not just when you
first set up the backup system. Verification means doing whatever you
need to do to ensure all of your precious data has been backed up
and can be correctly restored from the backups.
The simplest way to do that is to restore all your data, and compare it
with your live data, and note any differences. That requires you have
enough free disk space to restore everything, but it's the almost the
only way to be really sure.
It's also a great way to ensure the restoring actually works. If
you don't test that, don't be sure you can do it when needed.
Some backup software has a verification mode, which doesn't actually
write the restored data to disk, but compares it with live data
directly. This can save space, and can be a reasonable compromise,
but you should test actual restoring as well. You could do that
by restoring only some of the live data, perhaps choosing files
randomly for each test.
If you have the disk space to do a complete restore, doing so is a
great way to excercise your disaster recovery process in general.
Here's one way of doing it:
So I have a new desktop computer. I installed Wheezy on it via a USB stick, and everything worked. All the hardware. Yay. I guess we take it for granted when things like sound, disks, and network cards just work these days. I remmeber fighting with distros in the past, where such things were not necessarily straightforward.
The only minor complication is the graphics card. I bought a cheap/random GeForce card for the new machine ( 30):
A few months ago, I was looking for a piece of software to spawn
long-running tasks on behalf of some daemon with the benefit of
the tasks not being interrupted when this daemon is restarted. Here
are the specifications:
Once again, it's been some time since the last FusionForge update in
here. The main explanation is that news is slow on that front.
Debian Wheezy was released without FusionForge packages, as previously
announced, and even Sid hadn't seen any update on the package for way
too long. The latter has just been fixed though: the freshly-released
5.2.2 upstream version is on its way to Sid (via NEW, since it adds a
new plugin to allow authenticating against a CAS server). If and when
it reaches Debian Jessie (the current testing ), I'll work on
backporting it for Wheezy.
At some point I'll also start uploading snapshots of the upstream
master branch to experimental , to give adventurous users a glimpse
of what is to come in the future releases, although I'll stick to only
uploading when the automated tests all pass.