Here’s the blogjam random kitten generator – lots and lots of photos of cute kittens! π
Author Archives: Donncha
BlogShares Gift – thanks!
Thank you Chelle Bell for the gift of shares in Musings. Not sure what I did to deserve it, but thanks again!
Graphics from the command line
Good introduction to ImageMagick from ibm. You’ve probably seen this already as it was mentioned on /. this afternoon. It’s a good read nevertheless!
Service tunes 56Kbps modems up to 784Kbps
The Register reports on a new patented technology that compressing Internet data for modem users. It sounds like mod_gzip though.. π
The State of the Economy
(Thanks Colm!)
Kittens
I visited Mel and Sharon last night to see the 2 new members of their family. Aren’t they cute? π

GTK2/XFT Mozilla Firebird Linux/x86 – redux
I’m now using the latest nightly GTK2/XFT build of Mozilla/Firebird that I linked to before and it’s very, very nice!
I did use an earlier build of this before but for some reason started using these ones instead.
The latest nightly build is a *lot* more responsive than the one I just moved from! π
Caching Smarty Database Templates
The Smarty manual explains how to use Templates from other sources such as databases. It doesn’t however give an example of caching templates from these sources. I ran into a spot of trouble when I tried to be clever about checking the freshness of a db based template.
I didn’t want to interogate the db on every request just to check if a template is stale or not. Why have caching when you have to hit the db anyway? The db_get_timestamp() function has to be modified to check the freshness in some other way then.
I used a 0-byte file in a web-server writeable directory. Unfortunately it didn’t work. The is_cached() function would return false and I’d assign Smarty variables to prepare a new version of the web page, but when I called the display() function it displayed the last cached version!
It took me a while to figure out that both is_cached() and display() call the db_get_timestamp() function. As the file I used to flag a refresh was deleted on the first run I had to retain the timestamp somehow. That’s where the global $filetimestamp array comes in.
- is_cached() checks the freshness of the cache and returns false.
- I prepare the new Smarty variables.
- The page is displayed using the Smarty display() function
- Use
touch scratch/index.tplto update the template cache.
function db_get_timestamp($tpl_name, &$tpl_timestamp, &$smarty_obj)
{
global $filetimestamp;
if( is_file( 'scratch/' . $tpl_name ) == false )
{
if( $filetimestamp[ $tpl_name ] != '' )
{
$tpl_timestamp = $filetimestamp[ $tpl_name ];
}
else
{
$tpl_timestamp = mktime (0,0,0,date("m")-1,date("d"), date("Y"));
}
return true;
}
else
{
$tpl_timestamp = filemtime( 'scratch/' . $tpl_name );
$filetimestamp[ $tpl_name ] = $tpl_timestamp;
unlink( 'scratch/' . $tpl_name );
}
return true;
}
if( $smarty->is_cached( 'db:index.tpl' ) == false )
{
print "regenerating cache!<br>";
$smarty->assign( 'date', time() );
}
$smarty->display("db:index.tpl");
Bug in PHP 4.3.2?
I don’t think this is much of a bug really.
String indexes of arrays should always be quoted and when they appear as part of a larger string it’s faster to seperate the strings with the dot operator. See my comment on Keith’s post above for more.
Ascii Matrix
Maximise your browser window and take a look at this animation of a famous scene from The Matrix. Be warned that the animation is 4MB in size so it might be wiser to wget it first!
