<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Brandon Checketts &#187; Websites</title> <atom:link href="http://www.brandonchecketts.com/archives/category/websites/feed" rel="self" type="application/rss+xml" /><link>http://www.brandonchecketts.com</link> <description>Web Programming, Linux System Administation, and other geeky stuff</description> <lastBuildDate>Sun, 25 Jul 2010 00:50:58 +0000</lastBuildDate> <generator>http://wordpress.org/?v=2.9.1</generator> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Script to Import Static Pages into GetSimple CMS</title><link>http://www.brandonchecketts.com/archives/script-to-import-static-pages-into-getsimple-cms</link> <comments>http://www.brandonchecketts.com/archives/script-to-import-static-pages-into-getsimple-cms#comments</comments> <pubDate>Thu, 13 May 2010 04:30:52 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[General]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Websites]]></category><guid
isPermaLink="false">http://www.brandonchecketts.com/?p=457</guid> <description><![CDATA[I&#8217;ve recently been impressed with a very simple Content Management System called GetSimple.  It provides just the very basics that allows a user to edit their own website content.  For brochure sites with owners who don&#8217;t want the complexity of a larger CMS, I think it is pretty ideal.
When I develop a site [...]]]></description> <content:encoded><![CDATA[<p>I&#8217;ve recently been impressed with a very simple Content Management System called <a
href="http://get-simple.info/">GetSimple</a>.  It provides just the very basics that allows a user to edit their own website content.  For brochure sites with owners who don&#8217;t want the complexity of a larger CMS, I think it is pretty ideal.</p><p>When I develop a site though, I typically have a header and footer, and then all of the content pages exist as PHP files that simply include that header and footer.  Converting a static site like that into the CMS takes a bunch of copy/pasting.  I always try to avoid such tedious jobs, and so developed a script  that will import those static pages into a GetSimple installation.</p><p>To run this script, I wanted to import a bunch of files in a &#8217;static&#8217; directory where I had moved all of the static files to.  I then ran this from the command line to import all of the content into GetSimple</p><pre>
# for file in `find static -type f`
> do
> ./getsimple_import_file.php $file
> done
</pre><p>The script is available as <a
href="http://www.brandonchecketts.com/downloads/getsimple_import_file.php">getsimple_import_file.php</a></p><p>It takes a little configuration before running it.   It works by simulating the data that you would submit when creating the page through the web interface, so we have to fake the necessary session cookie.  Uncomment the bit in the middle that will display your cookie and run the script once.  You&#8217;ll need to copy your cookie name and value into the script before doing any actual imports.</p><p>Once you&#8217;ve done that, you will probably want to change the regular expression that attempts to grab the page title from your file.  You may also want to manipulate how it figures the URL to use.</p><p>Feel free to post comments here if  you found this useful, or made any changes  you&#8217;d like to share with other users</p> ]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/script-to-import-static-pages-into-getsimple-cms/feed</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Enabling HTTP Page Caching with PHP</title><link>http://www.brandonchecketts.com/archives/enabling-http-page-caching-with-php</link> <comments>http://www.brandonchecketts.com/archives/enabling-http-page-caching-with-php#comments</comments> <pubDate>Thu, 29 Apr 2010 16:54:30 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Websites]]></category><guid
isPermaLink="false">http://www.brandonchecketts.com/?p=454</guid> <description><![CDATA[I&#8217;ve been doing a lot of work on BookScouter.com lately to reduce page load time and generally increase the performance of the website for both users and bots.  One of the tips that the load time analyzer points out is to enable an expiration time for static content.  That is easy enough for [...]]]></description> <content:encoded><![CDATA[<p>I&#8217;ve been doing a lot of work on <a
href="http://bookscouter.com/">BookScouter.com</a> lately to reduce page load time and generally increase the performance of the website for both users and bots.  One of the tips that the <a
href="https://addons.mozilla.org/en-US/firefox/addon/3371">load time analyzer</a> points out is to enable an expiration time for static content.  That is easy enough for images and such by using an Apache directive such as:</p><pre>
    ExpiresActive On
    ExpiresByType image/gif A2592000
    ExpiresByType image/jpg A2592000
    ExpiresByType image/png A2592000
</pre><p>But pages generated with PHP by default have the Pragma: no-cache header set, so that the users&#8217; browsers do not cache the content at all.  In most cases, even hitting the back button will generate another request to the server which must be completely processed by the script.  You may be able to cache some of the most intensive operations inside your script, but this solution will eliminate that request completely.  Simply add this code to the top of any page that contains semi-static content.  It effectively sets the page expiration time to one hour in the future.  So if a visitor hits the same URL within that hour, the page is served locally from their browser cache instead of making a trip to the server.  It also sends an HTTP 304 (Not Modified) response code if the user requests to reload the page within the specified time.  That may or may-not be desired based on your site.</p><pre>
$expire_time = 60*60; // One Hour
header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + $expire_time));
header("Cache-Control: max-age={$expire_time}");
header('Last-Modified: '.gmdate('D, d M Y H:i:s \G\M\T', time()));
header('Pragma: public');

if ((!empty($_SERVER['HTTP_IF_MODIFIED_SINCE'])) &#038;&#038; (time() - strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) < = $expire_time)) {
    header('HTTP/1.1 304 Not Modified');
    exit;
}
</pre></pre> ]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/enabling-http-page-caching-with-php/feed</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>KnitMeter is now a Facebook App</title><link>http://www.brandonchecketts.com/archives/knitmeter-is-now-a-facebook-app</link> <comments>http://www.brandonchecketts.com/archives/knitmeter-is-now-a-facebook-app#comments</comments> <pubDate>Fri, 29 May 2009 15:04:24 +0000</pubDate> <dc:creator>Brandon</dc:creator> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Websites]]></category><guid
isPermaLink="false">http://www.brandonchecketts.com/?p=360</guid> <description><![CDATA[KnitMeter.com is a site that I wrote quickly for my wife to keep track of how much she has knit.  It generate a little &#8216;widget&#8217; image that can be placed on blogs, forums, etc and says how many miles of yarn you have knit in some period.  The site has been live for [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://knitmeter.com/">KnitMeter.com</a> is a site that I wrote quickly for my wife to keep track of how much she has knit.  It generate a little &#8216;widget&#8217; image that can be placed on blogs, forums, etc and says how many miles of yarn you have knit in some period.  The site has been live for about a year and a half now and has a couple thousand registered users.</p><p>I have been receiving an increasing number of requests to add a method for adding a KnitMeter it to Facebook.  I&#8217;ve experimented with a couple of other ideas on Facebook and found that it was pretty straightforward to write an app.   KnitMeter seems like a decent candidate for a social app, so I started working on it about a week ago.  And I&#8217;m happy to say that I just made the application live late last night.  It is available at <a
href="http://apps.facebook.com/knitmeter/">http://apps.facebook.com/knitmeter/</a>.</p><p>Features include:</p><ul><li>Ability to add projects and add knitted lengths to a project (or not)</li><li>Settings for inputting lengths in feet, yards, or meters</li><li>Display how much you&#8217;ve knit in feet, yards, meters, kilometers, or miles</li><li>When entering a new length, you can choose to have it publish a &#8217;story&#8217; on your profile page</li><li>You can add a tab on your profile page that shows each of your projects as well as a total</li><li>You can add a KnitMeter &#8216;box&#8217; to the side of your profile page, or on your &#8216;boxes&#8217; tab.</li></ul><p>I recreated the database from scratch and defined it a little better, so I have a little bit of work to do in migrating the existing site and database over to the new structure.  Once that is done users will be able to import their data from the existing KnitMeter.com by providing their email/password.</p> ]]></content:encoded> <wfw:commentRss>http://www.brandonchecketts.com/archives/knitmeter-is-now-a-facebook-app/feed</wfw:commentRss> <slash:comments>3</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (user agent is rejected)
Database Caching 1/12 queries in 0.009 seconds using disk

Served from: www.brandonchecketts.com @ 2010-09-08 07:57:55 -->