<?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>Simon Whatley &#187; web application</title>
	<atom:link href="http://www.simonwhatley.co.uk/tag/web-application/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simonwhatley.co.uk</link>
	<description>The opposite of every great idea is another great idea</description>
	<lastBuildDate>Wed, 02 Nov 2011 09:28:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Canonical URLs &#8211; What Are They All About?</title>
		<link>http://www.simonwhatley.co.uk/canonical-urls-what-are-they-all-about</link>
		<comments>http://www.simonwhatley.co.uk/canonical-urls-what-are-they-all-about#comments</comments>
		<pubDate>Wed, 07 Oct 2009 09:34:23 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Canonical]]></category>
		<category><![CDATA[Duplicate content]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[search engine optimisation]]></category>
		<category><![CDATA[Search engine optimization]]></category>
		<category><![CDATA[search engines]]></category>
		<category><![CDATA[search results]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Uniform Resource Identifier]]></category>
		<category><![CDATA[url]]></category>
		<category><![CDATA[web application]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=2043</guid>
		<description><![CDATA[Carpe diem on any duplicate content worries: Google, Yahoo and Microsoft now support a format that allows you to publicly specify your preferred version of a URL. If your site has identical or vastly similar content that’s accessible through multiple URLs, this format provides you with more control over the URL returned in search results. It also helps to make sure that properties such as link popularity are consolidated to your preferred version.]]></description>
			<content:encoded><![CDATA[<p>Google announced as long ago as February, in their official <a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html" title="" target="_blank" rel="nofollow ">Webmaster Central Blog</a> a new canonical <abbr title="Universal Resource Locator">URL</abbr> tag:</p>
<blockquote><p>Carpe diem on any duplicate content worries: we now support a format that allows you to publicly specify your preferred version of a URL. If your site has identical or vastly similar content that&#8217;s accessible through multiple URLs, this format provides you with more control over the URL returned in search results. It also helps to make sure that properties such as link popularity are consolidated to your preferred version.</p></blockquote>
<p>But what do they mean by <q>canonical</q>? One of the definitions of <q>canonical</q> is <q>reduced to the simplest and most significant form possible without loss of generality.</q></p>
<p>What this means is that if you have a page&#8211;let&#8217;s take an e-commerce product page&#8211;and the simplest <abbr title="Universal Resource Locator">URL</abbr> that you want it accessible by is:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">http://www.site.com/category/product.html</pre></div></div>

<p>you can add the canonical tag to that specific product. Google, Yahoo and Microsoft use this tag to tell their search engines which <abbr title="Universal Resource Locator">URL</abbr> it should have for the current page.</p>
<p>Now, let&#8217;s say that the particular software you use <strong>also</strong> allows you to access the same product using:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">http://www.site.com/company/product.html</pre></div></div>

<p>and</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">http://www.site.com/different_category/product.html</pre></div></div>

<p>Perhaps this one product is in multiple categories. With this tag in place when any of the alternate pages are loaded this tag notifies any search engine that this is really the same product as the page you defined in the canonical tag. So, you are still allowed to have the content available as generally needed (by categories, tags, or some other organisation system) and still avoid having the content duplicated and penalised.</p>
<p>To implement the canonical <abbr title="Universal Resource Locator">URL</abbr> tag in your web application, you simply need to do the following inside the <code>&lt;head&gt;</code> section of the duplicate content URLs:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">&lt;link rel=&quot;canonical&quot; href=&quot;http://www.site.com/category/product.html&quot; /&gt;</pre></div></div>

<p>As Google mention, this tag is a hint that they <q>honour strongly</q>. Google will take your preference into account, in conjunction with other signals, when calculating the most relevant page to display in search results.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/canonical-urls-what-are-they-all-about/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secure Your Application &#8211; PCI DSS Specifications</title>
		<link>http://www.simonwhatley.co.uk/secure-your-application-pci-dss-specifications</link>
		<comments>http://www.simonwhatley.co.uk/secure-your-application-pci-dss-specifications#comments</comments>
		<pubDate>Mon, 26 Jan 2009 11:19:37 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[American Express]]></category>
		<category><![CDATA[anti-virus software]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[BlueDragon]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion Administrator]]></category>
		<category><![CDATA[company processing]]></category>
		<category><![CDATA[compliance]]></category>
		<category><![CDATA[control measures]]></category>
		<category><![CDATA[Data Security Standard]]></category>
		<category><![CDATA[database server]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Discover Financial Services]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JCB International]]></category>
		<category><![CDATA[Manitoba]]></category>
		<category><![CDATA[Mastercard Worldwide]]></category>
		<category><![CDATA[Payment Card Industry]]></category>
		<category><![CDATA[Payment Card Industry Security Standards Council]]></category>
		<category><![CDATA[payment card processing]]></category>
		<category><![CDATA[Payment Processors]]></category>
		<category><![CDATA[PCI DSS]]></category>
		<category><![CDATA[public networks]]></category>
		<category><![CDATA[Railo]]></category>
		<category><![CDATA[raw processing]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[regulations]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[secure systems]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Security Standards Council]]></category>
		<category><![CDATA[security systems]]></category>
		<category><![CDATA[Server Side]]></category>
		<category><![CDATA[software developers]]></category>
		<category><![CDATA[software releases]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SSC]]></category>
		<category><![CDATA[the Council]]></category>
		<category><![CDATA[Visa]]></category>
		<category><![CDATA[Visa Inc .]]></category>
		<category><![CDATA[web application]]></category>
		<category><![CDATA[web application developers]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[web code]]></category>
		<category><![CDATA[Web Servers]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=1785</guid>
		<description><![CDATA[PCI DSS stands for Payment Card Industry Data Security Standard, and is a worldwide security standard assembled by the Payment Card Industry Security Standards Council (PCI SSC). The PCI security standards are technical and operational requirements that were created to help organizations that process card payments prevent credit card fraud, hacking and various other security vulnerabilities and threats. The standards apply to all organizations that store, process or transmit cardholder data – with guidance for software developers and manufacturers of applications and devices used in those transactions. A company processing, storing, or transmitting cardholder data must be PCI DSS compliant.]]></description>
			<content:encoded><![CDATA[<p>PCI DSS stands for <a href="https://www.pcisecuritystandards.org/" title="Payment Card Industry Data Security Standard website" target="_blank" rel="nofollow">Payment Card Industry Data Security Standard</a>, and is a worldwide security standard assembled by the Payment Card Industry Security Standards Council (<abbr title="Payment Card Industry">PCI</abbr> <abbr title="Security Standards Council">SSC</abbr>). The <abbr title="Payment Card Industry">PCI</abbr> security standards are technical and operational requirements that were created to help organizations that process card payments prevent credit card fraud, hacking and various other security vulnerabilities and threats. The standards apply to all organizations that store, process or transmit cardholder data – with guidance for software developers and manufacturers of applications and devices used in those transactions. A company processing, storing, or transmitting cardholder data must be <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standard">DSS</abbr> compliant.</p>
<p><a href="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2009/01/payment-card-data.png"><img src="http://www.simonwhatley.co.uk/blog/wp-content/uploads/2009/01/payment-card-data.png" alt="Types of Data on a Payment Card" title="Types of Data on a Payment Card" width="600" height="255" class="aligncenter size-full wp-image-1815" /></a></p>
<p>The <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Security Standards Council">SSC</abbr> (<q>Council</q>) is responsible for managing the security standards, while compliance with the <abbr title="Payment Card Industry">PCI</abbr> set of standards is enforced by the founding members of the Council: <a href="http://www.americanexpress.com/datasecurity" title="American Express" target="_blank" rel="nofollow">American Express</a>, <a href="http://www.discovernetwork.com/fraudsecurity/disc.html" title="Discover Financial Services" target="_blank" rel="nofollow">Discover Financial Services</a>, <a href="http://www.jcb-global.com/english/pci/index.html" title="JCB International" target="_blank" rel="nofollow">JCB International</a>, <a href="http://www.mastercard.com/sdp" title="MasterCard Worldwide" target="_blank" rel="nofollow">MasterCard Worldwide</a> and <a href="http://www.visa.com/cisp" title="Visa" target="_blank" rel="nofollow">Visa Inc</a>. Non-compliant companies who maintain a relationship with one or more of the card brands, either directly or through an acquirer risk losing their ability to process credit card payments and being audited and/or fined.</p>
<p>All in-scope companies must validate their compliance annually. This validation can be conducted by Qualified Security Assessors, i.e. companies that have completed a <a href="https://www.pcisecuritystandards.org/qsa_asv/become_qsa.shtml" title="PCI: Becoming a Qualified Security Assessor" target="_blank" rel="nofollow">three-step certification process</a> by the <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Security Standards Council">SSC</abbr> which recognises them as being qualified to assess compliance to the <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standard">DSS</abbr> standard. However, smaller companies have the option to use a <a href="https://www.pcisecuritystandards.org/saq/index.shtml" title="PCI Self-Assessment Questionnaire" target="_blank" rel="nofollow">Self-Assessment Questionnaire</a>. Whether this questionnaire needs to be validated by a <abbr title="Qualified Security Assessors">QSA</abbr> depends on the requirements of the card brands in that merchant&#8217;s region.</p>
<p>The current version of the standard specifies 12 requirements for compliance, organised into 6 logically related groups, which are called &#8220;control objectives.&#8221;</p>
<ol>
<li>Build and Maintain a Secure Network
<ul>
<li>Requirement 1: Install and maintain a firewall configuration to protect cardholder data</li>
<li>Requirement 2: Do not use vendor-supplied defaults for system passwords and other security parameters</li>
</ul>
</li>
<li>Protect Cardholder Data
<ul>
<li>Requirement 3: Protect stored cardholder data</li>
<li>Requirement 4: Encrypt transmission of cardholder data across open, public networks</li>
</ul>
</li>
<li>Maintain a Vulnerability Management Program
<ul>
<li>Requirement 5: Use and regularly update anti-virus software</li>
<li>Requirement 6: Develop and maintain secure systems and applications</li>
</ul>
</li>
<li>Implement Strong Access Control Measures
<ul>
<li>Requirement 7: Restrict access to cardholder data by business need-to-know</li>
<li>Requirement 8: Assign a unique ID to each person with computer access</li>
<li>Requirement 9: Restrict physical access to cardholder data</li>
</ul>
</li>
<li>Regularly Monitor and Test Networks
<ul>
<li>Requirement 10: Track and monitor all access to network resources and cardholder data</li>
<li>Requirement 11: Regularly test security systems and processes</li>
</ul>
</li>
<li>Maintain an Information Security Policy
<ul>
<li>Requirement 12: Maintain a policy that addresses information security</li>
</ul>
</li>
</ol>
<p>Compliance with these requirements can be summarized into 3 main stages:</p>
<ul>
<li>Collecting and storing: Secure collection and tamper-proof storage of all log data so that it is available for analysis.</li>
<li>Reporting: Being able to prove compliance on the spot if audited and present evidence that controls are in place for protecting data.</li>
<li>Monitoring and alerting: Have systems in place such as auto-alerting, to help administrators constantly monitor access and usage of data. Administrators are warned of problems immediately and can rapidly address them. These systems should also extend to the log data itself –- there must be proof that log data is being collected and stored.</li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>What does this actually mean for web application developers?</h3>
<p>It is considerably more expensive and more time-consuming to recover from a security incident than to take preventative measures ahead of time. If you follow the guidelines below, you will go along way to securing you application in line with the <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standards">DSS</abbr> regulations. Many of the measures apply to general application security, but since <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standards">DSS</abbr> is all about security, they are worth mentioning.</p>
<p>Server-level Security:</p>
<ul>
<li>Separate web- and database-servers on to different physical machines.</li>
<li>Secure the web- and database-servers with traditional techniques. Only authorised accounts should have the capabilities to run tasks on the machine. That means not giving admin-rights to the user account.</li>
<li>Keep servers up-to-date with the latest patches and software releases.</li>
<li>Minimise the number of services running on the server. This means limiting the services to only those required for the web- or database-servers to function.</li>
<li>Secure information in transit between servers. This may mean physically securing the network to prevent evesdropping via encryption or obfuscating the data amongst innocuous &#8216;noise&#8217;.</li>
<li>Secure the database server behind a firewall.</li>
</ul>
<p>Application-level Security:</p>
<ul>
<li>Separate ColdFusion, the webserver and database server user accounts. They should never be under the same system account.</li>
<li>Create a database user specifically for your ColdFusion datasource and restrict it to only the activities required for the application. The user should not have database-owner rights, access to databases not relating to the application or access to the system tables.</li>
<li>Revoke privileges in the ColdFusion datasource definition to prevent the <abbr title="Structured Query Language">SQL</abbr> commands <code>CREATE</code>, <code>DROP</code>, <code>GRANT</code>, <code>REVOKE</code> and <code>ALTER</code>.</li>
<li>General settings in the ColdFusion Administrator:
<ul>
<li>Check the <em>Disable access to internal ColdFusion Java components</em> option.</li>
<li>Check the <em>Enable Global Script Protection</em> option.</li>
<li>Add a <em>Missing Template Handler</em>.</li>
<li>Add a <em>Site-wide Error Handler</em>.</li>
<li>Reduce the <em>Maximum size of post data</em> from 100<abbr title="megabytes">MB</abbr>.</li>
<li>Enable <em>Timeout Requests</em>, and set to 60 seconds or less.</li>
<li>Disable <em>Robust Exception Handling</em> on production servers.</li>
</ul>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Web Application-level Security:</p>
<ul>
<li>Use secure HTTP to transfer data and/or when logged into &#8216;administration&#8217; secutions of your web application.</li>
<li>Timeout sessions after 15 minutes and on browser close.</li>
<li>Provide multi-level login processes. For example, lock the application after 3 failed attempts for a period of 10 minutes.</li>
<li>Do not identify whether the username or password are incorrect, simply notify the user that their login failed and that they must try again.</li>
<li>Encrypt passwords stored in the database with a standard such as <a href="http://en.wikipedia.org/wiki/SHA_hash_functions" title="Wikipedia: SHA cryptographic has function" target="_blank" rel="nofollow">SHA-256</a> or &#8216;stronger&#8217;.</li>
<li>Use <a href="http://en.wikipedia.org/wiki/Captcha" title="Wikipedia: CAPTCHA" target="_blank" rel="nofollow">CAPTCHA</a>s (textual and aural) to prevent automated robots hacking into your application.</li>
<li>Run regular penetration tests on your application to identify potential problems.</li>
<li>Encrypt credit card information held in the database or other storage mechanism. Only store credit card data in line with the <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standards">DSS</abbr> regulations.</li>
</ul>
<p>Code-level Security:</p>
<ul>
<li>Application.cfc &#8211; Set the <code>scriptProtect</code> Application variable to <code>true</code> to enable application-wide cross-site script protection.
</li>
<li>CFQueryParam &#8211; This tag, importantly, verifies the data type of a query parameter and, for <abbr title="Relational Database Management Systems">RDBMS</abbr>s that support bind variables, enables ColdFusion to use bind variables in the <acronym title="Structured Query Language">SQL</acronym> statement. Bind variable usage enhances performance when executing a <code>cfquery</code> statement multiple times. There are limitations to the use of the <code>cfqueryparam</code> tag. In ColdFusion 7 for example, you cannot use them in queries using the <code>cachedWithin</code> attribute. Similarly, they cannot be used in <code>ORDER BY</code> clauses, although the use of conditional logic should resolve the need for order by variables.
</li>
<li>Functions &#8211; As a rule of thumb, validate <em>all</em> the data being passed into a query prior to it being used. ColdFusion MX 7 saw the introduction of the <code>isValid()</code> function. This function tests whether a value meets a validation or data type rule and can be used to replace a large number of type-specific functions such as <code>isArray()</code>, <code>isBinary()</code>, <code>isBoolean()</code>, <code>isDate()</code>, <code>isNumeric()</code> and <code>isSimpleValue()</code> etc.
</li>
<li>Stored Procedures &#8211; I often favour the use of stored procedures over standard queries. Not only do they add an additional level of performance, they provide an additional level of security; ColdFusion does not do any raw processing of queries in the web code, it simply passes variables down the wire to the database server.</li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Conclusion</h3>
<p>The goal of the <abbr title="Payment Card Industry">PCI</abbr> Data Security Standard is to protect cardholder data that is processed, stored or transmitted by merchants. The security controls and processes required by <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standards">DSS</abbr> are vital for protecting cardholder account data, including the <abbr title="primary account number">PAN</abbr> &#8211; the primary account number printed on the front of a payment card. Merchants and any other service providers involved with payment card processing must never store sensitive authentication data after authorisation. This includes sensitive data that is printed on a card, or stored on a card’s magnetic stripe or chip &#8211; and personal identification numbers entered by the cardholder.</p>
<p>By following the points made above, you will go a long way to meeting the <abbr title="Payment Card Industry">PCI</abbr> <abbr title="Data Security Standards">DSS</abbr> guidelines, whilst also securing your infrastructure and applications in a more general sense.</p>
<p><strong>Caveat:</strong> The views and comments written in this article are provided as a guideline. I hold no responsibility for the security of your applications and data based upon the information provided.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/secure-your-application-pci-dss-specifications/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Silverlight? Microsoft Explains&#8230;</title>
		<link>http://www.simonwhatley.co.uk/why-silverlight-microsoft-explains</link>
		<comments>http://www.simonwhatley.co.uk/why-silverlight-microsoft-explains#comments</comments>
		<pubDate>Thu, 13 Dec 2007 22:12:00 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Accelerator board]]></category>
		<category><![CDATA[ad-insertion solutions]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe Integrated Runtime]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[application hosting solution]]></category>
		<category><![CDATA[author content]]></category>
		<category><![CDATA[back-end Web environment]]></category>
		<category><![CDATA[browser-based]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[designers]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[Emmy Award]]></category>
		<category><![CDATA[Escient VC-1 Player]]></category>
		<category><![CDATA[Expression Studio]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[interactive applications]]></category>
		<category><![CDATA[Internet Applications]]></category>
		<category><![CDATA[Internet Information Services]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[media content]]></category>
		<category><![CDATA[media experiences]]></category>
		<category><![CDATA[media format]]></category>
		<category><![CDATA[media rich experiences]]></category>
		<category><![CDATA[media tools]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Silverlight]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[moonlight]]></category>
		<category><![CDATA[MP3]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[proprietory]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Rich Internet Applications]]></category>
		<category><![CDATA[Role-specific tools]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Society of Motion Picture and Television Engineers]]></category>
		<category><![CDATA[software features]]></category>
		<category><![CDATA[software services]]></category>
		<category><![CDATA[Sun Microsystems]]></category>
		<category><![CDATA[vector graphics]]></category>
		<category><![CDATA[video playback]]></category>
		<category><![CDATA[Visual Basic]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[web application]]></category>
		<category><![CDATA[Web Consortium]]></category>
		<category><![CDATA[Web designers]]></category>
		<category><![CDATA[Web experiences]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[Web technologies]]></category>
		<category><![CDATA[Windows Media technologies]]></category>
		<category><![CDATA[windows presentation foundation]]></category>
		<category><![CDATA[with your existing infrastructure]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=391</guid>
		<description><![CDATA[Silverlight aims to compete with Adobe Flash and the presentation components of Ajax. It also competes with Sun Microsystems' JavaFX, which was launched a few days after Silverlight.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.silverlight.net" title="Silverlight" rel="nofollow">Silverlight</a> aims to compete with Adobe <a href="http://www.adobe.com/products/flash" title="Adobe Flash" rel="nofollow">Flash</a> and the presentation components of <acronym title="Asynchronous JavaScript and XML">AJAX</acronym>. It also competes with Sun Microsystems&#8217; <a href="http://www.sun.com/software/javafx/" title="JavaFX" rel="nofollow">JavaFX</a>, which was launched a few days after Silverlight.</p>
<p>Microsoft Silverlight is a proprietary runtime for browser-based Rich Internet Applications, providing a subset of the animation, vector graphics, and video playback capabilities of Windows Presentation Foundation. The runtime is available for Microsoft Windows and Mac OS X, with Linux support under development via the third-party <a href="http://www.mono-project.com/Moonlight" title="Moonlight project" rel="nofollow">Moonlight</a> runtime.</p>
<p>Microsoft describes its advantages as follows:</p>
<p><strong>Compelling Cross-Platform User Experiences</strong></p>
<ul>
<li>Deliver media experiences and rich interactive applications for the Web that incorporate video, animation, interactivity, and stunning user interfaces.</li>
<li>Seamless, fast installation for users, thanks to a small, on-demand, easy-to-install plug-in that is under 2 megabytes (<acronym title="Megabyte">MB</acronym>) in size and works with all leading browsers.</li>
<li>Consistent experiences between Windows-based and Macintosh computers without any additional installation requirements.</li>
<li>Create richer, more compelling Web experiences that take greater advantage of the client for increased performance.</li>
<li>Stunning vector-based graphics, media, text, animation, and overlays that enable seamless integration of graphics and effects into any existing Web application.</li>
<li>Enhance existing standards/<acronym title="Asynchronous JavaScript and XML">AJAX</acronym>-based applications with richer graphics and media, and improve their performance and capabilities by using Silverlight.</li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><strong>Flexible Programming Model with Collaboration Tools</strong></p>
<ul>
<li>Based on the Microsoft <a href="http://msdn2.microsoft.com/en-us/netframework/default.aspx" title="Microsoft .NET Framework" rel="nofollow">.NET Framework</a>, Silverlight enables developers and designers to easily use existing skills and tools to deliver media experiences and rich interactive applications for the Web.</li>
<li>Simple integration with existing Web technologies and assets means Silverlight works with any back-end Web environment or technology. No &#8220;rip and replace&#8221; required.
</li>
<li>Silverlight integrates with your existing infrastructure and applications, including Apache, <acronym title="PHP: Hypertext Preprocessor">PHP</acronym>, as well as JavaScript and <acronym title="Extensible HyperText Markup Language">XHTML</acronym> on the client.</li>
<li>Choice of development languages including JavaScript, Ruby, Python, C#, Visual Basic .NET, and more.</li>
<li>Role-specific tools for both designers and developers that take advantage of Web standards and the breadth of the Microsoft .NET connected software features.</li>
<li>For designers: Microsoft Expression Studio for creating interactive user interfaces and media rich experiences, preparing media for encoding and distribution, and creating World Wide Web Consortium (<acronym title="World Wide Web Consortium">W3C</acronym>) standards-compliant sites using modern <acronym title="Extensible HyperText Markup Language">XHTML</acronym>, <acronym title="Extensible Markup Language">XML</acronym>, <acronym title="Extensible Stylesheet Language Transformation">XSLT</acronym>, <acronym title="Cascading Style Sheet">CSS</acronym>, and <acronym title="Active Server Pages">ASP</acronym>.NET.</li>
<li>For developers: Microsoft Visual Studio for developing client and server code with full Microsoft IntelliSense, powerful cross-platform debugging, rich language support, and more.</li>
<li>Consistent presentation model by using <acronym title="Extensible Application Markup Language">XAML</acronym>, the declarative presentation language used in Windows Vistaâ€“based applications. Controls, visual designs, media, and other elements can be presented with full design fidelity in both Silverlight and Windows-based applications.</li>
<li>Extensible control model makes it easy to add rich content and behaviors while enabling efficient code-reuse and sharing.</li>
<li>Dramatically improved performance for <acronym title="Asynchronous JavaScript and XML">AJAX</acronym>-enabled Web sites with the power, performance, and flexibility of Silverlight and .NET-connected software.</li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><strong>High Quality, Low Cost Media</strong></p>
<ul>
<li>Unified media format that scales from high definition (<acronym title="High Definition">HD</acronym>) to mobile with Windows Media Video (<acronym title="Windows Media Video">WMV</acronym>), the Microsoft implementation of the Society of Motion Picture and Television Engineers (<acronym title="Society of Motion Picture and Television Engineers">SMPTE</acronym>) <a href="http://en.wikipedia.org/wiki/VC-1" title="VC-1" rel="nofollow">VC-1</a> video standard, as well as support for Windows Media Audio (<acronym title="Windows Media Audio">WMA</acronym>) and MP3 audio.</li>
<li>Add vector-based graphics and overlays to media with support for integration of graphics that scale to any size and broadcast-style overlays for tickers and closed captioning.</li>
<li>Flexible ad-insertion solutions with video and animation, including the ability to deliver fluid, broadcast-style video or animated advertisements without loss of visual fidelity or motion quality.</li>
<li>Lower-cost media streaming with Emmy Award winning Windows Media technologies that can lower the cost of streaming delivery by up to 46%, and enjoy the flexibility to work with your existing Windows Media streaming deployments. Even further cost reductions are possible with the upcoming Microsoft Internet Information Services (<acronym title="Internet Information Services">IIS</acronym>) Media Pack for Microsoft Windows Server 2008.</li>
<li>Broad ecosystem of media tools, servers, and solutions compatible with the Windows Media operating system.</li>
<li>Microsoft PlayReady content-access technology that delivers a single solution for digital rights management support on both Windows-based and Macintosh computers for content providers (coming in Silverlight 1.1)</li>
<li>Powerful encoding tools for live and on-demand publishing of media experiences with Microsoft Expression Encoder, including hardware-accelerated encoding of <acronym title="Windows Media Video">WMV</acronym> and <a href="http://en.wikipedia.org/wiki/VC-1" title="VC-1" rel="nofollow">VC-1</a> at up to 15 times the performance of software alone when paired with a Tarari Encoder Accelerator board.</li>
</ul>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><strong>Connected to Data, Servers, and Services</strong></p>
<ul>
<li>Mash-up and incorporate services and data from the Web by taking advantage of the Silverlight support for <a href="http://en.wikipedia.org/wiki/Language_Integrated_Query" title="Language Integrated Query" rel="nofollow">LINQ</a> while accessing that data with common protocols like <acronym title="JavaScript Object Notation">JSON</acronym>, <acronym title="Really Simple Syndication">RSS</acronym>, <acronym title="Plain Old XML">POX</acronym>, and <acronym title="Representational State Transfer">REST</acronym>.</li>
<li>Increase discoverability of rich interactive application (<acronym title="Rich Internet Application">RIA</acronym>) content that can be indexed and searched due to the text-based <acronym title="Extensible Application Markup Language">XAML</acronym> format that describes interface and content in a Silverlight-based application.</li>
<li>Rapidly scale applications with Silverlight Streaming by Windows Live to host and integrate software services and media content.</li>
</ul>
<p><strong>Streaming audio and video</strong></p>
<ul>
<li>Silverlight Streaming by Windows Live offers a free streaming and application hosting solution for delivering high-quality, cross-platform, cross-browser, media-enabled rich interactive applications (<acronym title="Rich Internet Application">RIA</acronym>s). With the ability to author content in Microsoft Expression Encoder and other third-party editing environments, Web designers maintain complete control of the user experience.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/why-silverlight-microsoft-explains/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eliminating Whitespace in ColdFusion</title>
		<link>http://www.simonwhatley.co.uk/eliminating-whitespace-in-coldfusion</link>
		<comments>http://www.simonwhatley.co.uk/eliminating-whitespace-in-coldfusion#comments</comments>
		<pubDate>Fri, 26 Oct 2007 09:29:35 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Application Servers]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion Administrator]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[page processing]]></category>
		<category><![CDATA[servlets]]></category>
		<category><![CDATA[tags]]></category>
		<category><![CDATA[WAP]]></category>
		<category><![CDATA[web application]]></category>
		<category><![CDATA[Web Servers]]></category>
		<category><![CDATA[WEB-INF folder]]></category>
		<category><![CDATA[WEB-INF/lib folder]]></category>
		<category><![CDATA[web.xml]]></category>
		<category><![CDATA[web.xml file]]></category>
		<category><![CDATA[whitespace]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=351</guid>
		<description><![CDATA[ColdFusion has never satisfactorily removed whitespace from generated content, however, removing this whitespace can dramatically improve your website's performance. Take a 100KB page for example. If 20% of the page is made up of whitespace, that is 20% that is unneccessary and 20% bandwidth cost that can be saved.]]></description>
			<content:encoded><![CDATA[<p>ColdFusion has never satisfactorily removed whitespace from generated content, however, removing this whitespace can dramatically improve your website&#8217;s performance. Take a 100KB page for example. If 20% of the page is made up of whitespace, that is 20% that is unneccessary and 20% bandwidth cost that can be saved.</p>
<p>Currently there are two main ways a ColdFusion developer can prevent whitespace; via the ColdFusion Administrator and by including certain tags in their code:</p>
<p><strong>1. ColdFusion Administrator</strong></p>
<p>Under the <em>Server Settings &gt; Settings</em> menu item there is a checkbox called &#8216;Enable Whitespace Management&#8217;. This checkbox should always be checked. According to the description, checking this checkbox <em>&#8220;reduces the file size of the pages that ColdFusion returns to the browser by removing many of the extra spaces, tabs, and carriage returns that ColdFusion might otherwise persist from the CFML source file.&#8221;</em> I am yet to be convinced, but it is worthwhile enabling it.</p>
<p><strong>2. ColdFusion Tags</strong></p>
<p><code>&lt;cfsetting enablecfoutputonly="true"&gt;&lt;/cfsetting&gt;</code></p>
<p>The <code>cfsetting</code> tag controls aspects of page processing, such as the output of <acronym title="HyperText Markup Language">HTML</acronym> code in pages (inside and outside the <code>cfsetting</code> tag body). If <code>enablecfoutputonly</code> is set to <code>true</code>, <acronym title="HyperText Markup Language">HTML</acronym> output is blocked if it is not wrapped in a <code>cfoutput</code> tag. Therefore, this tag &#8216;can&#8217; be used to minimise the amount of generated whitespace.</p>
<p><code>&lt;cfsilent&gt;&lt;/cfsilent&gt;</code></p>
<p>The <code>cfsilent</code> tag supresses output produced by <acronym title="ColdFusion Markup Language">CFML</acronym> within a tag&#8217;s scope. Therefore, you simply need to wrap the tag around anything you don&#8217;t want to output to the browser. As it does not return anything from with in it, so you have to be a little be careful when debugging.</p>
<p><code>&lt;cfprocessingdirective supresswhitespace="true"&gt;&lt;/cfprocessingdirective&gt;</code></p>
<p>One of the <code>cfprocessingdirective</code>&#8216;s purposes is to remove excess whitespace from ColdFusion generated content in the tag body. However, it does not affect any whitespace in <acronym title="HyperText Markup Language">HTML</acronym> code. You can nest the tags and toggle <code>supresswhitespace</code> on and off, not that I ever identify a good reason to do so.</p>
<p><strong>But there is a little known third way, using a servlet filter called Trim Filter.</strong></p>
<p>Servlet filters are tools available to web application developers. They are designed to be able to manipulate a request and response (or both) that is sent to a web application.</p>
<p>Trim Filter lets you decrease the size of file your server will send to all clients. The filter removes extra spaces and line breaks from outputted documents. This can be especially useful for <acronym title="Wireless Application Protocol">WAP</acronym>/<acronym title="Wireless Markup Language">WML</acronym> developers working with mobile devices, where the size for transferred documents is limited.</p>
<p>S<strong>etting up the servlet filter in ColdFusion</strong></p>
<p>Using the Trim Filter servlet filter found at the following URL:</p>
<p><a rel="nofollow" href="http://www.servletsuite.com/servlets/trimflt.htm" title="TrimFilter jar File">http://www.servletsuite.com/servlets/trimflt.htm</a></p>
<ul>
<li>Download the <a rel="nofollow" href="http://www.servletsuite.com/servlets/trimflt.jar" title="trimflt.jar">trimflt.jar</a></li>
<li>Save trimflt.jar in the WEB-INF/lib folder in the ColdFusion Server wwwroot.</li>
<li>Edit the web.xml file in the WEB-INF folder in the ColdFusion Server wwwroot with the following code:</li>
</ul>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">&lt;filter-mapping&gt;
	&lt;filter-name&gt;trimFilter&lt;/filter-name&gt;
	&lt;url-pattern&gt;*.cfm&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;
&nbsp;
&lt;filter&gt;
	&lt;filter-name&gt;trimFilter&lt;/filter-name&gt;
	&lt;filter-class&gt;com.cj.trim.trimFilter&lt;/filter-class&gt;
&lt;/filter&gt;</pre></div></div>

<ul>
<li>Restart the ColdFusion Service</li>
</ul>
<p>And now, when a ColdFusion page is invoked, the whitespace is suppressed and wow does it do a good job.</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/eliminating-whitespace-in-coldfusion/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Poor Man&#039;s HTTP Compression with ColdFusion</title>
		<link>http://www.simonwhatley.co.uk/poor-mans-http-compression-with-coldfusion</link>
		<comments>http://www.simonwhatley.co.uk/poor-mans-http-compression-with-coldfusion#comments</comments>
		<pubDate>Sat, 17 Mar 2007 15:11:23 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Application Servers]]></category>
		<category><![CDATA[Coldbeans]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[HTTP protocol]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Server Side]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[web application]]></category>
		<category><![CDATA[web applications]]></category>
		<category><![CDATA[Web Browser]]></category>
		<category><![CDATA[Web Servers]]></category>
		<category><![CDATA[WEB-INF folder]]></category>
		<category><![CDATA[WEB-INF/lib folder]]></category>
		<category><![CDATA[web.xml]]></category>
		<category><![CDATA[web.xml file]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=260</guid>
		<description><![CDATA[Almost every web application will benefit from the compression of content. A compression filter optimises the size of the content that is sent from a webserver to a web browser via the Internet. Since generating content and serving pages via the World Wide Web is the core behind web applications, it is simple components that aid these processes that are incredibly useful. This is where servlet filters come into play.]]></description>
			<content:encoded><![CDATA[<p>An interesting article I read in the CFDJ recently was entitled Poor Man&#8217;s HTTP Compression with ColdFusion. Almost every web application will benefit from the compression of content. A compression filter optimises the size of the content that is sent from a webserver to a web browser via the Internet. Since generating content and serving pages via the World Wide Web is the core behind web applications, it is simple components that aid these processes that are incredibly useful. This is where servlet filters come into play.</p>
<p>Servlet filters are tools available to web application developers. They are designed to be able to manipulate the request and responses that are sent to a web application, without manipulating the servlets, static pages like HTML and, in this case, CFM pages that are being used by the web application (unless of course that is the desired response). Servlet filters act like a chain of steps that a request and response must go through before reaching the page in the application.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<h3>Compressing Content Using a Servlet Filter</h3>
<p>Compression is a process that reduces the number of bytes required to define a document in order to save disk space or transmission time. It is extremely useful for sending information across the web, because the speed at which people receive information from a web application is dependent upon how much data you are trying to send. The smaller the amount of information that is to be sent, the faster it can be sent. Therefore, compression and the associated responsiveness is a key component to retaining users and generating revenue from those retained users.</p>
<p>Compression can be effectively achieved by having a servlet filter conditionally pipe the produced content to a GZip-compressed file. GZip is supported by the HTTP protocol and almost all modern browsers (hence the servlet filter conditionally compresses the content).</p>
<p>GZip compression usually results in a 6:1 compression ratio, although this depends on how much content is being sent and what the content is.</p>
<h3>Setting up the Servlet Filter in ColdFusion</h3>
<p>Using the ColdBeans servlet filter found at the following URL:</p>
<p><a href="http://www.servletsuite.com/servlets/gzipflt.htm" rel="nofollow">http://www.servletsuite.com/servlets/gzipflt.htm</a></p>
<ul>
<li>Download the <a href="http://www.servletsuite.com/servlets/gzipflt.jar" rel="nofollow">GZipFilter.jar</a></li>
<li>Save GZipFilter.jar in the WEB-INF/lib folder in the ColdFusion Server wwwroot.</li>
<li>Edit the web.xml file in the WEB-INF folder in the ColdFusion Server wwwroot with the following code:

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">&lt;filter&gt;
&lt;filter-name&gt;GzipFilter&lt;/filter-name&gt;
&lt;filter-class&gt;com.cj.gzipflt.GzipFilter&lt;/filter-class&gt;
&lt;/filter&gt;
&lt;filter-mapping&gt;
&lt;filter-name&gt;GzipFilter&lt;/filter-name&gt;
&lt;url-pattern&gt;*.cfm&lt;/url-pattern&gt;
&lt;/filter-mapping&gt;</pre></div></div>

</li>
<li>Restart the ColdFusion Service</li>
</ul>
<p>Now, when you invoke any <code>.cfm</code> page the GzipFilter will check out client&#8217;s browser settings. If the browser does not support gzip, the filter invokes resource normally. If the browser does support gzip, output will be compressed.<br />
<script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/poor-mans-http-compression-with-coldfusion/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>ColdFusion &amp; Lucene</title>
		<link>http://www.simonwhatley.co.uk/coldfusion-lucene</link>
		<comments>http://www.simonwhatley.co.uk/coldfusion-lucene#comments</comments>
		<pubDate>Sun, 09 Apr 2006 22:54:09 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Aaron Johnson]]></category>
		<category><![CDATA[Aaron Johnson Inspired]]></category>
		<category><![CDATA[alternative]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Apache Lucene Java library]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[author]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[dynamic Web applications]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[Full-Text Search]]></category>
		<category><![CDATA[indexing]]></category>
		<category><![CDATA[Jakarta]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Lucene Java library]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[relational database]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[search capabilities]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[text search engine library]]></category>
		<category><![CDATA[Verity]]></category>
		<category><![CDATA[web application]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=75</guid>
		<description><![CDATA[One of the many reasons to use ColdFusion MX is that it has a large, standard toolset that enbales the creation of full-featured, dynamic Web applications. The tag-based language makes it relatively simple to query a relational database and send e-mail. In a similar way, you can create and search Verity full-text indexes.]]></description>
			<content:encoded><![CDATA[<p>One of the many reasons to use ColdFusion MX is that it has a large, standard toolset that enables the creation of full-featured, dynamic Web applications. The tag-based language makes it relatively simple to query a relational database and send e-mail. In a similar way, you can create and search Verity full-text indexes.</p>
<p>However, there are situations where you cannot use the full-text searching capabilities of Verity. For example, Verity only runs on Windows, Linux and Solaris, therefore the ability to run ColdFusion MX on the Apple OS X operating system, whilst advantageuos to developers who code on the Apple platform, does not include the ability to use Verity. Furthermore, programmers who work in a hybrid J2EE/ColdFusion MX environment cannot natively use the Verity search capabilities in the J2EE environment. Finally, programmers who need customized searching and indexing capabilities may find the standard Verity integration limiting. There are work-arounds include installing Verity on a Windows, Linux, or Solaris server and configuring your ColdFusion server to use the remote Verity server, however these may not only be impractical, but cost-prohibitative.</p>
<p>Enter Lucene, an open source full-text searching framework from the Apache Jakarta project, which, when combined with ColdFusion MX, can be run on Apple OS X, can be programmatically accessed by both J2EE and ColdFusion MX developers, and can be fully customized and extended.Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform.</p>
<p>Apache Lucene is an open source project available for <a title="Download Apache Lucene" target="_blank" href="http://www.apache.org/dyn/closer.cgi/lucene/java/">free download</a>.</p>
<p><strong>Features</strong></p>
<ul>
<li>Lucene offers powerful features through a simple API.</li>
</ul>
<p><strong>Scalable, High-Performance Indexing</strong></p>
<ul>
<li>Over 20MB/minute on Pentium M 1.5GHz</li>
<li>Small RAM requirements &#8212; only 1MB heap</li>
<li>Incremental indexing as fast as batch indexing</li>
<li>Index size roughly 20-30% the size of text indexed</li>
</ul>
<p><strong>Powerful, Accurate and Efficient Search Algorithms</strong></p>
<ul>
<li>Ranked searching &#8212; best results returned first</li>
<li>Many powerful query types: phrase queries, wildcard queries, proximity queries, range queries and more</li>
<li>Fielded searching (e.g., title, author, contents)</li>
<li>Date-range searching</li>
<li>Sorting by any field</li>
<li>Multiple-index searching with merged results</li>
<li>Allows simultaneous update and searching</li>
</ul>
<h2>ColdFusion &#038; Lucene Implementations</h2>
<p>If you don&#8217;t fancy attempting the task of writing your own ColdFusion implementation of Lucene, below are a couple of projects that will give you a kick-start along the road to indexing database content.  With the addition of other Java projects such as <a title="PDF Box" target="_blank" href="http://www.pdfbox.org/">PDFBox</a> the textual content of a pdf can also be extracted and indexed.</p>
<h2>Aaron Johnson</h2>
<p>Inspired by Lindex, Aaron Johnson has created a CFX Tag called CFX_Lucene that closely mimics the ColdFusion cfsearch tag, but uses Lucene rather than Verity.</p>
<p><a target="_blank" title="cfx_lucene" href="http://cephas.net/blog/lucene/index.html">http://cephas.net/blog/lucene/index.html</a></p>
<h2>CFLucene</h2>
<p>CFLucene is an open source project that attempts to provide developers an easy way to integrate the indexing and searching functions of the Apache Lucene Java library with a ColdFusion web application. The CFLucene is a collection of ColdFusion Components that natively call the Lucene Java classes to index and search any sort of textual data.</p>
<p><a title="CFLucene" target="_blank" href="http://www.cflucene.org/">http://www.cflucene.org/</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/coldfusion-lucene/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The ColdFusion Podcast Episode 18 &#8211; Project Management</title>
		<link>http://www.simonwhatley.co.uk/the-coldfusion-podcast-episode-18-project-management</link>
		<comments>http://www.simonwhatley.co.uk/the-coldfusion-podcast-episode-18-project-management#comments</comments>
		<pubDate>Mon, 13 Mar 2006 19:45:35 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Bryan Kaiser]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion Administrator]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Jesse James Garrett]]></category>
		<category><![CDATA[Michael Haynie]]></category>
		<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Raymond Camden]]></category>
		<category><![CDATA[web application]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=58</guid>
		<description><![CDATA[Bryan Kaiser &#038; Michael Haynie discuss managing a ColdFusion project in terms of client expectations, project goals and actual development. They also discuss some methodologies to help maximize your development and client relation skills.]]></description>
			<content:encoded><![CDATA[<p>Bryan Kaiser &#038; Michael Haynie discuss managing a ColdFusion project in terms of client expectations, project goals and actual development. They also discuss some methodologies to help maximize your development and client relation skills.</p>
<p>Links:</p>
<ul>
<li><a href="http://www.designovermatter.com/">design over matter</a></li>
<li><a href="http://ajaxian.com/archives/adobe-announces-a-flex-ajax-bridge">Ajaxian Â» Adobe Announces a Flex / Ajax Bridge</a></li>
<li><a href="https://gettingreal.37signals.com/">Getting Real: The smarter, faster, easier way to build a successful web application</a></li>
<li><a href="http://www.jjg.net/elements/">Jesse James Garrett: The Elements of User Experience</a></li>
<li><a href="http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=aae43964">Macromedia &#8211; ColdFusion TechNote : ColdFusion MX 7.0.1 Cumulative Hot Fix 2</a></li>
<li><a href="http://weblogs.macromedia.com/cantrell/archives/2006/03/free_open-sourc.cfm">Christian Cantrell: Free, Open-source ActionScript 3.0 Libraries</a></li>
<li><a href="http://www.coldfusioncookbook.com/entry/68/How-do-I-reset-the-ColdFusion-Administrator-password?">Recipe of the Week &#8211; How do I reset the ColdFusion Administrator password?</a></li>
<li><a href="http://ray.camdenfamily.com/index.cfm/2006/3/1/Happy-Canvas-Day-CanvasWiki-Released">Happy Canvas Day (CanvasWiki Released!) : Raymond Camden&#8217;s ColdFusion Blog</a></li>
<li><a href="http://www.remotesynthesis.com/blog/index.cfm/2006/2/17/Getting-Started-with-Reactor">Remote Synthesis: Getting Started with Reactor</a></li>
</ul>
<p><a href="http://media.libsyn.com/media/coldfusionpodcast/ep018.mp3">Listen</a> to the podcast or get the feed at feedburner: <a title="ColdFusion Podcast" href="http://feeds.feedburner.com/coldfusionpodcast">http://feeds.feedburner.com/coldfusionpodcast</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/the-coldfusion-podcast-episode-18-project-management/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://media.libsyn.com/media/coldfusionpodcast/ep018.mp3" length="23453447" type="audio/mpeg" />
		</item>
	</channel>
</rss>

