<?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>Stormware Studios &#187; Articles</title>
	<atom:link href="http://stormwarestudios.com/category/articles/feed/" rel="self" type="application/rss+xml" />
	<link>http://stormwarestudios.com</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Wed, 19 Jan 2011 03:03:05 +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>How to Migrate a Subversion Repository</title>
		<link>http://stormwarestudios.com/articles/migrate-subversion-repository/</link>
		<comments>http://stormwarestudios.com/articles/migrate-subversion-repository/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 11:14:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articles]]></category>

		<guid isPermaLink="false">http://stormwarestudios.com/?p=551</guid>
		<description><![CDATA[Moving a repository from one server to another is not something one typically does, so it&#8217;s good to know the (few) steps involved to make migration a smooth transition. On the source computer: svnadmin dump /path/to/repository &#62; repository-name.dump tar zcf repository-name.tgz repository-name.dump scp repository-name.tgz hostname:/path/to/new/repository On the destination computer: cd /path/to/new/repository svnadmin create repository-name tar zxf [...]]]></description>
			<content:encoded><![CDATA[<p>Moving a repository from one server to another is not something one typically does, so it&#8217;s good to know the (few) steps involved to make migration a smooth transition.</p>
<p>On the source computer:</p>
<blockquote><p>svnadmin dump /path/to/repository &gt; repository-name.dump<br />
tar zcf repository-name.tgz repository-name.dump<br />
scp repository-name.tgz hostname:/path/to/new/repository</p></blockquote>
<p>On the destination computer:</p>
<blockquote><p>cd /path/to/new/repository<br />
svnadmin create repository-name<br />
tar zxf repository-name.tgz<br />
svnadmin load repository-name &lt; repository-name.dump</p></blockquote>
<p>Once complete, disable the old repository before testing, to ensure all linkage to the new repository is updated.</p>
]]></content:encoded>
			<wfw:commentRss>http://stormwarestudios.com/articles/migrate-subversion-repository/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MS SQL Server &#8211; &#8220;Named Pipes Provider, error: 40 &#8211; Could not open a connection to SQL Server&#8221;</title>
		<link>http://stormwarestudios.com/articles/ms-sql-server-named-pipes-provider-error-40-open-connection-sql-server/</link>
		<comments>http://stormwarestudios.com/articles/ms-sql-server-named-pipes-provider-error-40-open-connection-sql-server/#comments</comments>
		<pubDate>Sun, 19 Sep 2010 16:24:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Could not open a connection to SQL Server]]></category>
		<category><![CDATA[error: 40]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Microsoft Windows Server 2008]]></category>
		<category><![CDATA[MS SQL Server Management Studio]]></category>
		<category><![CDATA[Named Pipes Provider]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://stormwarestudios.com/?p=538</guid>
		<description><![CDATA[When setting up a Microsoft Windows Server 2008 system, I went through the motions to set up IIS, MS SQL Server 2008, and Visual Studio 2010 to use as a test-bed. One of the immediate benefits of setting up such a system is that most development can be done remotely: MS SQL Server Management Studio, [...]]]></description>
			<content:encoded><![CDATA[<p>When setting up a Microsoft Windows Server 2008 system, I went through the motions to set up IIS, MS SQL Server 2008, and Visual Studio 2010 to use as a test-bed.</p>
<p>One of the immediate benefits of setting up such a system is that most development can be done remotely: MS SQL Server Management Studio, Visual Studio&#8217;s Web development suite, as well as file shares, remote desktop, etc, make for a great way to remotely develop in &#8216;pristine&#8217; conditions.</p>
<p>But there are drawbacks, too, such as needing to deal with firewall issues, not being able to penetrate past a router or the requirement of setting up a VPN.</p>
<p>One of the problems I encountered when trying to remote into the MS SQL Server 2008 that I&#8217;d set up was the following error:</p>
<blockquote><p>Named Pipes Provider, error: 40 &#8211; Could not open a connection to SQL Server</p></blockquote>
<p>I followed the below steps, and was able to connect to the server after just a few moments of tinkering:</p>
<p>1. From the server in question, surf to <a href="http://support.microsoft.com/kb/968872" target="_blank">this</a> Microsoft article, and download and install the Firewall rules modification program. <em>Never </em>drop your firewall, even on a development machine, unless you have a really good reason to.</p>
<p>2. Launch SQL Server Configuration Manager. Navigate to SQL Server Network Configuration, then Protocols for <em>your server name</em>. Enable TCP/IP and Named Pipes by right-clicking and choosing Enable for each given Protocol Name.</p>
<p>3. Restart the SQL Server service from Services (or from command line, subsequently run &#8220;net stop mssqlserver&#8221; then &#8220;net start mssqlserver&#8221;.</p>
<p>4. Try your remote connection once more, and you should be able to connect.</p>
<p>It&#8217;s not a terribly difficult concept, but one of the more challenging tasks developers face is dealing with environment setup. And while there is a certain blurred-line overlap between software development and server administration, sometimes the latter is daunting, especially given that you might set up only a handful of servers during your career.</p>
]]></content:encoded>
			<wfw:commentRss>http://stormwarestudios.com/articles/ms-sql-server-named-pipes-provider-error-40-open-connection-sql-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leverage PHP and ImageMagick to create PDF thumbnails</title>
		<link>http://stormwarestudios.com/articles/leverage-php-imagemagick-create-pdf-thumbnails/</link>
		<comments>http://stormwarestudios.com/articles/leverage-php-imagemagick-create-pdf-thumbnails/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 18:24:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[thumbnail]]></category>

		<guid isPermaLink="false">http://stormwarestudios.com/?p=526</guid>
		<description><![CDATA[In this article, we discuss using PHP and ImageMagick to generate thumbnails from a given PDF, storing them in a temporary (or &#8220;cache&#8221;) directory, and serving them up to the web. One of our more recent clients made a request to display PDF thumbnails published through the Joomla CMS that we&#8217;d deployed for them. The [...]]]></description>
			<content:encoded><![CDATA[<p>In this article, we discuss using PHP and ImageMagick to generate thumbnails from a given PDF, storing them in a temporary (or &#8220;cache&#8221;) directory, and serving them up to the web.<span id="more-526"></span></p>
<p>One of our more recent clients made a request to display PDF thumbnails published through the Joomla CMS that we&#8217;d deployed for them.</p>
<p>The requirement was fairly simple, but the execution was a little more involved. After installing ImageMagick, ImageMagick PHP bindings (which incidentally aren&#8217;t working, and a workaround was devised), and sleuthing some code, the following solution was determined:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
function thumbPdf($pdf, $width)
{
	try
	{
		$tmp = 'tmp';
		$format = &quot;png&quot;;
		$source = $pdf.'[0]';
		$dest = &quot;$tmp/$pdf.$format&quot;;

		if (!file_exists($dest))
		{
			$exec = &quot;convert -scale $width $source $dest&quot;;
			exec($exec);
		}

		$im = new Imagick($dest);
		header(&quot;Content-Type:&quot;.$im-&gt;getFormat());
		echo $im;
	}
	catch(Exception $e)
	{
		echo $e-&gt;getMessage();
	}
}

$file = $_GET['pdf'];
$size = $_GET['size'];
if ($file &amp;&amp; $size)
{
	thumbPdf($file, $size);
}
?&gt;
</pre>
<p>The above code assumes that you&#8217;ve provided appropriate permissions to the temporary directory (usually chmod 755 or chmod 777, depending on your level of courage), that you&#8217;ve saved the above code snippet in a file called thumbPdf.php, and placed this somewhere visible on your web server.</p>
<p>After obtaining parameters from GET, the code checks the destination temporary directory, and if the desired image is not present, it uses ImageMagick&#8217;s convert program to generate the PDF thumbnail, sized down to the appropriate proportion, and saves the image in the temporary directory. Finally, it reloads the thumbnail into an ImageMagick PHP object, and outputs the content to the browser.</p>
<p>Invoking the above code is done fairly easily; simply call the PHP script from inside an image tag, like so:</p>
<pre class="brush: xml; title: ; notranslate">

&lt;img src=&quot;/path/to/thumbPdf.php?pdf=your.pdf&amp;size=200&quot; /&gt;
</pre>
<p>The above code would generate a thumbnail from the first page of &#8220;your.pdf&#8221;, sized 200 pixels wide by an appropriately-proportioned height.</p>
<p>Good luck, and happy webmastering!</p>
]]></content:encoded>
			<wfw:commentRss>http://stormwarestudios.com/articles/leverage-php-imagemagick-create-pdf-thumbnails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5 Feature Round-Up</title>
		<link>http://stormwarestudios.com/articles/html5-feature-roundup/</link>
		<comments>http://stormwarestudios.com/articles/html5-feature-roundup/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 20:20:17 +0000</pubDate>
		<dc:creator>peter.kingsbury</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[2d]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[rdbms]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[websocket]]></category>

		<guid isPermaLink="false">http://stormwarestudios.com/?p=419</guid>
		<description><![CDATA[The specification for HTML5 has a lot of new and exciting features, blurring the line between desktop and cloud applications. This article strives to describe some of these new features, and provide sample usage of each. The full HTML5 specification is documented on WHATWG&#8217;s website, and may be found here. Audio Audio introduces an extremely [...]]]></description>
			<content:encoded><![CDATA[<p>The specification for HTML5 has a lot of new and exciting features, blurring the line between desktop and cloud applications. This article strives to describe some of these new features, and provide sample usage of each.<span id="more-419"></span></p>
<p>The full HTML5 specification is documented on WHATWG&#8217;s website, and may be found <a href="http://whatwg.org/html5" target="_blank">here</a>.</p>
<h2>Audio</h2>
<p>Audio introduces an <em>extremely</em> simple method by which audio file content may be delivered to a web audience. In a nutshell:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;audio src=&quot;http://address.to/some-sound-file.ogg&quot; controls=&quot;controls&quot; autoplay=&quot;autoplay&quot; preload=&quot;preload&quot;&gt;&lt;/audio&gt;
</pre>
<p>With this, the web audience is provided with simple player controls, giving them familiar controls like pause, play, set track position, and so on. The major limitations are technical in nature; the web audience&#8217;s browser must support the provided file format (Ogg Vorbis, WAV PCM, or MP3, depending on how you roll).</p>
<h2>Video</h2>
<p>Video, similar to Audio, opens the floodgates for a host of new possibilities with regard to video authoring. Adobe&#8217;s Flash player is no longer required for displaying .flv content, and instead, we author video using one of the supported formats (WebM, H.264, VP8, or Ogg Theora), and expose the content using a DOM tag.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;video controls&gt;
  &lt;source src=&quot;http://address.to/some-video-file.ogg&quot; type=&quot;video/ogg; codecs=dirac, speex&quot;&gt;
&lt;/video&gt;
</pre>
<p>In this example, video is provided with player controls, the type of video is specified, and we tell the browser what CODECs to load.</p>
<h2>Canvas</h2>
<p>Quite possibly the most exciting feature in the HTML5 specification, Canvas enables the web developer to render objects using 2D and 3D contexts.</p>
<p>Simply enough, we include a &lt;canvas&gt; object in the DOM:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;canvas id=&quot;some-canvas-id&quot; width=&quot;320&quot; height=&quot;240&quot;&gt;&lt;/canvas&gt;
</pre>
<p>The next step is to expose a 2D or 3D context of the &lt;canvas&gt; object:</p>
<pre class="brush: jscript; title: ; notranslate">
var canvas = document.getElementById(&quot;some-canvas-id&quot;);
var ctx2d = canvas.getContext('2d');
//or, we could get a 3D context, if the option is supported
var ctx3d = canvas.getContext('3d');
</pre>
<p>Finally, we can perform any number of operations with the 2D or 3D context:</p>
<pre class="brush: jscript; title: ; notranslate">
// Fill in a blue rectangle
ctx2d.fillStyle = &quot;rgb(64, 128, 255)&quot;;
ctx2d.fillRect(5, 5, 25, 75);

// Draw a rectangle
ctx2d.fillRect(25,25,100,100); // draw a filled rectangle
ctx2d.clearRect(45,45,60,60); // clears the spec ified rectangular area
ctx2d.strokeRect(50,50,50,50); // draws an outlined (non-filled) rectangle

// Load image data
var img = new Image();   // Allocate an Image object

img.onload = function(){
    // perform this function once the image data is loaded
    // Draw a 100x100 rectangle at position 40,50 on the context, using data from our allocated image, starting at 0, 0 on the source image.
    var sourceX = 0;
    var sourceY = 0;
    var sourceWidth = 100;
    var sourceHeight = 100;
    var destX = 40;
    var destY = 50;
    var destWidth = 100;
    var destHeight = 100;

    ctx2d.drawImage(img, sourceX, sourceY, sourceWidth, sourceHeight, destX, destY, destWidth, destHeight);
}

// Set the URI source of the Image, which loads the content into the Image object
img.src = 'some-image.png';
</pre>
<p>There are many other options for 2D rendering, such as drawing lines and curves, and filling shapes with RGBA colors. Coupled with the 3D rendering options, the web as a whole will become a much more visually impacting place in the years to come.</p>
<h2>Database</h2>
<p>The <strong>Database</strong> component enables the developer to generate and interact with locally-managed databases and tables using SQL syntax to store and retrieve data. If you&#8217;ve used a RDBMS system in the last century, you will be quite familiar and comfortable with its usage.</p>
<pre class="brush: jscript; title: ; notranslate">
var dbname = &quot;database name&quot;;
var dbversion = &quot;1.0&quot;;
var sql = &quot;SELECT * FROM SomeTable&quot;;
var database = openDatabase(dbname, dbversion);
database.executeSql(sql,
    function(result)
    {
        // Perform results testing
    });
</pre>
<p>Potential usefulness includes enabling developers to extend &#8220;flat-file&#8221; cookie functionality to databases, giving faster and more robust access to data that must be stored on the client-side.</p>
<h2>Websocket</h2>
<p>The WebSocket interface seems very promising, and web applications that utilize it will far surpass their AJAX brethren in form and function.</p>
<p>A socket connection is a term used to describe a network connection between a client (i.e. you) and a server (i.e. google.com). Your web browser makes these connections constantly, over TCP, for each send (e.g. clicking Submit on a form) and receive (e.g. loading a web page) operation it performs.</p>
<p>WebSockets allow the web developer to leverage this sort of communication by exposing a &#8220;send/receive&#8221; interface via JavaScript. Invocation of the WebSocket interface is done as follows:</p>
<pre class="brush: jscript; title: ; notranslate">
// TCP connection on port 1234
var ws = new WebSocket(&quot;ws://websocket.server.com:1234&quot;);

ws.send(); // Send the plain-text string to the server

ws.onmessage = function(msg){

    // This function is triggered when TCP data is sent to the web browser
    var data = msg.data; // The actual data sent from the server

}
</pre>
<p>All of this means a real-time data connection between the web-browser and a host, similar to what game-, chat-, and file-servers do already.</p>
<h2>Cache</h2>
<p>A major concern with remotely-hosted resources, whether web-applications, web sites, or other kinds of resources, lies in the disconnect. What happens to the cloud application when the cloud is not available?</p>
<p>Browser caching manifests are one of the developments that strive to provide a solution to this problem. By specifying to the DOM what files are necessary for the web audience to view a web page or utilize a web application, the web developer enables a browser to locally cache parts of content, and serve them up when an internet service is not present.</p>
<p>Caching is exposed via the DOM:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;!DOCTYPE HTML&gt;
&lt;html manifest=&quot;site.manifest&quot;&gt;
    &lt;head&gt;
        &lt;title&gt;Cache Example&lt;/title&gt;
        &lt;script src=&quot;script.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
    &lt;/head&gt;
    &lt; body&gt;
    &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>A cache manifest (in the example above, the &#8220;site.manifest&#8221; file) is a script-file which tells the web-browser what files can be cached, and which ones should remain &#8220;over the wire&#8221;-only.</p>
<pre class="brush: xml; title: ; notranslate">
CACHE MANIFEST
# the above line must appear first in the document
# comments are prefixed with a hash symbol

# cache-enabled files can appear here, or under a CACHE: segment as below
index.html
images/some-file.png

# files under the NETWORK: segment will never be cached
NETWORK:
app.cgi

# files under CACHE: will similarly be cached in the browser
CACHE:
css/style.css
</pre>
<p>The Cache feature-set shows great promise for truly delivering web applications to the masses; by downloading application media once, and only downloading application modules (logic, authentication, etc), Cache enables the web developer to control how much or little is stored in the browser.</p>
<p>HTML5 promises to provide web developers with numerous means by which to narrow the gap between desktop- and online-applications. Expect to see further evolution in favor of cloud-based programs, online games, and web-based media in the coming months and years.</p>
]]></content:encoded>
			<wfw:commentRss>http://stormwarestudios.com/articles/html5-feature-roundup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How the HST Affects Web Design in Ontario and BC</title>
		<link>http://stormwarestudios.com/articles/hst-affects-web-design-ontario-bc/</link>
		<comments>http://stormwarestudios.com/articles/hst-affects-web-design-ontario-bc/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 00:35:04 +0000</pubDate>
		<dc:creator>peter.kingsbury</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[bc]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[hst]]></category>
		<category><![CDATA[ontario]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://stormwarestudios.com/?p=390</guid>
		<description><![CDATA[On July 1st, 2010, the Federal Government is introducing the concept of a Harmonized Sales Tax (or HST), which replaces the familiar PST + GST system, in Ontario and BC. The HST will be applied on most supplies of goods and services made in Ontario at a rate of 13%, consisting of the 5% federal [...]]]></description>
			<content:encoded><![CDATA[<p>On July 1st, 2010, the Federal Government is introducing the concept of a Harmonized Sales Tax (or HST), which replaces the familiar PST + GST system, in Ontario and BC.<span id="more-390"></span></p>
<blockquote><p>The HST will be applied on most supplies of goods and services made in Ontario at a rate of 13%, consisting of the 5% federal portion and an 8% provincial portion. (<a href="http://www.cra-arc.gc.ca/gncy/hrmnztn/on/menu-eng.html" target="_blank">cra-arc.gc.ca</a>)</p></blockquote>
<p>Previously, web designers would not be required to charge clients (hence not remit) PST, as web design work falls under <a href="http://www.procurement.utoronto.ca/policy/pst.cfm#internet" target="_blank">exemption stipulations</a>. Exceptions exist, of course, when physical counterparts to web-work (e.g. DVDs provided to clients) or executable programs come into play, but as a general rule, &#8220;if it&#8217;s digital, no PST required&#8221;.</p>
<p>Web design in Ontario and BC has had a decent gig; no requirement to charge a total higher tax amount (PST+GST) means happier clients. But with the new taxes in play, web designers will be required to swallow a tougher pill, potentially billing their clients an additional 8%.</p>
<p>For more information, please visit the Canada Revenue Agency <a href="http://www.cra-arc.gc.ca/tx/bsnss/tpcs/gst-tps/gnrl/txbl/menu-eng.html" target="_blank">website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://stormwarestudios.com/articles/hst-affects-web-design-ontario-bc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Add An Image Rotator In Magento</title>
		<link>http://stormwarestudios.com/articles/add-image-rotator-magento/</link>
		<comments>http://stormwarestudios.com/articles/add-image-rotator-magento/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 15:07:03 +0000</pubDate>
		<dc:creator>peter.kingsbury</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[eCommerce]]></category>
		<category><![CDATA[image rotator]]></category>
		<category><![CDATA[magento]]></category>

		<guid isPermaLink="false">http://stormwarestudios.com/?p=258</guid>
		<description><![CDATA[On one of our recent projects, the client requested an image-rotator to display catalog images on their Magento eCommerce site. Since we wanted a simple-to-update solution, after some diligent searching, we came across a fairly obvious one. This article will discuss how to add an image rotator to a Magento eCommerce store. Required Files and [...]]]></description>
			<content:encoded><![CDATA[<p>On one of our recent projects, the client requested an image-rotator to display catalog images on their Magento eCommerce site. Since we wanted a simple-to-update solution, after some diligent searching, we came across a fairly obvious one. This article will discuss how to add an image rotator to a Magento eCommerce store.</p>
<p><span id="more-258"></span><a href="http://stormwarestudios.com/wp-content/uploads/2010/02/magento-site-3d1.png"><img src="http://stormwarestudios.com/wp-content/uploads/2010/02/magento-site-3d1.png" alt="magento site 3d1 How To Add An Image Rotator In Magento" title="magento-site-3d" width="187" height="351" class="alignright size-full wp-image-278" /></a><strong>Required Files and Tools</strong></p>
<p>1. A working installation of Magento. This is beyond the scope of this article, but once you have it up and running, all the work we will be doing will be under CMS | Manage Pages from the Admin Panel.</p>
<p>2. The Free XML Banner Rotator from <a href="http://www.flabell.com/flash/XML-Banner-Rotator-233">Flabell</a>. You will need to register an account on the site, which is strongly encouraged, as Flabell is an excellent source for free and commercial Flash utilities.</p>
<p>3. A combination of text editor and FTP client. Respectively, <a href="http://notepad-plus.sourceforge.net/">Notepad++</a> and <a href="http://filezilla-project.org/">FileZilla</a> make a good team for this, since you can navigate to a remote folder, right-click on the file you wish to edit, select &#8220;View/Edit&#8221;, and have the file open in Notepad++; saving and returning to FileZilla automatically causes FZ to prompt you to upload the changes to the site. To configure your preferred editor, in Notepad++ navigate to Edit | Settings | File Editing, and configure the &#8220;Use custom editor&#8221; option.</p>
<p><strong>Required Steps</strong></p>
<p>1. Unzip the contents of the Free XML Banner Rotator, and from <strong>XML Banner Rotator_update02\project\deploy</strong>, upload <strong>preview.swf</strong>, <strong>banner/</strong>, and <strong>js/</strong>, to your Magento site&#8217;s root folder. Open the <strong>index.html</strong> file, and copy the contents of this file between the &lt;body&gt; and &lt;/body&gt; (but not including those) tags.</p>
<p>2. Back in the Magento CMS static page editor, edit the Home page, then paste the HTML copied from #1 into the Content text area found under the General Information tab. Save your work.</p>
<p>3. Now that the Home page of the CMS is set up, if you visit your site URL, you should see the stock images and text begin to load.</p>
<p>4. Using your FTP client, navigate to <strong>ftp://<em>your-site</em>/xml/</strong>, and edit <strong>banner.xml</strong> to the desired effect. Refer to Flabell&#8217;s <a href="http://www.flabell.com/flash/XML-Banner-Rotator-233">documentation</a> under the Help section for this topic.</p>
<p>5. Finally, upload your desired images, via FTP, to <strong>ftp://<em>your-site</em>/banner/content/images/</strong>.</p>
<p>6. Visit your site once more, and you should begin to see your images rotate.</p>
<p>Happy web-mastering!</p>
]]></content:encoded>
			<wfw:commentRss>http://stormwarestudios.com/articles/add-image-rotator-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Embed Fonts Using CSS</title>
		<link>http://stormwarestudios.com/articles/embed-fonts-css/</link>
		<comments>http://stormwarestudios.com/articles/embed-fonts-css/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 03:06:37 +0000</pubDate>
		<dc:creator>peter.kingsbury</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[css font]]></category>
		<category><![CDATA[embed font]]></category>
		<category><![CDATA[web font]]></category>

		<guid isPermaLink="false">http://stormwarestudios.com/?p=226</guid>
		<description><![CDATA[Embedding fonts; the holy grail of web designers. Microsoft, since 1997, has enabled web designers to embed fonts in websites, with some caveats. First, the utility they provide to convert .ttf files to .eot, is dated to function in Windows 98. Fast forward 13 years, I have been unable to get this tool to not [...]]]></description>
			<content:encoded><![CDATA[<p>Embedding fonts; the holy grail of web designers.</p>
<p>Microsoft, since 1997, has enabled web designers to embed fonts in websites, with some caveats. First, the utility they provide to convert .ttf files to .eot, is dated to function in Windows 98. Fast forward 13 years, I have been unable to get this tool to <em>not</em> crash in Windows 7. Second, this utility <em>seems</em> to want to connect to an IIS server (which is useful for <a href="http://news.netcraft.com/" target="_blank">about one-quarter of websites</a>).</p>
<p>For Firefox, Safari, Chrome, and Opera, .eot files are not required, and web developers may instead utilize the standard .ttf file format &#8230; except CSS rules involving .ttf files don&#8217;t work in Internet Explorer!</p>
<p>Fortunately, with some craftiness, it is possible to solve both these problems, as explained below.</p>
<p><span id="more-226"></span><a href="http://stormwarestudios.com/wp-content/uploads/2010/02/examples-composite.png"><img src="http://stormwarestudios.com/wp-content/uploads/2010/02/examples-composite-300x197.png" alt="examples composite 300x197 Embed Fonts Using CSS" title="examples-composite" width="300" height="197" class="alignright size-medium wp-image-272" /></a>First, we will need to gather some tools:</p>
<ul>
<li>A font, in .ttf format, of your choice (head over to <a href="http://dafont.com" target="_blank">dafont.com</a>; this site has plenty of free, even for commercial use, .ttf files). For purposes of this article, we will assume the font of your choice is called myfont.ttf.</li>
<li>A <a href="http://code.google.com/p/ttf2eot/" target="_blank">utility</a> to convert the .ttf file (usable by browsers other than IE) to a .eot file (which IE can use).</li>
<li>Some simple CSS knowledge.</li>
</ul>
<p>1. Once you&#8217;ve got myfont.ttf, you will need to convert it to myfont.eot file, using a handy utility called, appropriately enough, <a href="http://code.google.com/p/ttf2eot/" target="_blank">ttf2eot</a>.</p>
<p>(This process is outside of the scope of this article, however the developers of ttf2eot have provided <a href="http://code.google.com/p/ttf2eot/wiki/Demo" target="_blank">documentation</a> on their website.)</p>
<p>2. Place myfont.ttf and myfont.eot in your web root.</p>
<p>3. We will need 3 .css stylesheets and one .html markup document, so create these in your web root. The first stylesheet we will simple call &#8216;style.css&#8217;. The second will be called font.css, and the third will slightly deviate from this; call it &#8216;font-ie.css&#8217;. Finally, call the markup document, index.html.</p>
<p>4. Open up font.css in your favorite web document editor, and paste the following code:</p>
<div class="code">@font-face<br />
{<br />
    font-family: &#34;myFont&#34;;<br />
    src: url(&#34;myfont.ttf&#34;);<br />
}</div>
<p>5. Open up font-ie.css, and paste the following code:</p>
<div class="code">@font-face<br />
{<br />
    font-family: &#34;myFont&#34;;<br />
    src: url(&#34;myfont.eot&#34;);<br />
}</div>
<p>6. In style.css, paste the following code:</p>
<div class="code">body<br />
{<br />
    font-family: &#34;myFont&#34;;<br />
}</div>
<p>7. Finally, in index.html, paste the following code:</p>
<div class="code">&lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#34;&gt;<br />
&lt;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34;&gt;<br />
&lt;head&gt;<br />
    &lt;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=utf-8&#34; /&gt;<br />
    &lt;title&gt;&lt;/title&gt;<br />
    &lt;link rel=&#34;stylesheet&#34; href=&#34;css/font.css&#34; /&gt;<br />
    &lt;!&#8211;[if IE]&gt;<br />
        &lt;link rel=&#34;stylesheet&#34; href=&#34;css/font-ie.css&#34; /&gt;<br />
    &lt;![endif]&#8211;&gt;<br />
   &lt;link rel=&#34;stylesheet&#34; href=&#34;css/style.css&#34; /&gt;<br />
    &lt;/head&gt;<br />
    &lt;body&gt;<br />
        Hello, world!<br />
    &lt;/body&gt;<br />
&lt;/html&gt;
</div>
<p>Save each file, and preview your website in a few different browsers. In each case, you&#8217;ll see &#8220;Hello, World!&#8221; rendered in all the splendor of your chosen font!</p>
<p>In conclusion, what exactly did we do? First, we separated each font styling (e.g. .ttf vs. .eot) into its own stylesheet. Second, we defined a third stylesheet which brings the two disparate font types together. And finally, we defined in the markup document, to (1) specify a custom font style (e.g. &#8216;myFont&#8217;), (2) if the browser is Internet Explorer, overwrite &#8216;myFont&#8217; with styles specific to Internet Explorer, and (3) load the stylesheet for the rest of the site.</p>
<p>I&#8217;ve uploaded the code for the above example, you can download it <a href='http://stormwarestudios.com/wp-content/uploads/2010/02/embedded-font-example.zip'>here</a>.</p>
<p>Happy web-mastering!</p>
]]></content:encoded>
			<wfw:commentRss>http://stormwarestudios.com/articles/embed-fonts-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to HTML Canvas</title>
		<link>http://stormwarestudios.com/articles/html-canvas/</link>
		<comments>http://stormwarestudios.com/articles/html-canvas/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 20:16:31 +0000</pubDate>
		<dc:creator>peter.kingsbury</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html canvas]]></category>
		<category><![CDATA[html5 canvas]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://stormwarestudios.com/?p=159</guid>
		<description><![CDATA[New technology typically is met with mixed emotions and conflicting, often polar, opinions. This is definitely in the realm of HTML version 5&#8242;s new Canvas element, which threatens to open a wide variety of Pandora boxen for all to enjoy. What is HTML Canvas? Canvas is a standard feature of the latest iteration of HTML [...]]]></description>
			<content:encoded><![CDATA[<p>New technology typically is met with mixed emotions and conflicting, often polar, opinions. This is definitely in the realm of HTML version 5&#8242;s new Canvas element, which threatens to open a wide variety of Pandora boxen for all to enjoy.<span id="more-159"></span></p>
<p><strong>What is HTML Canvas?</strong></p>
<p>Canvas is a standard feature of the latest iteration of HTML (now in version 5), originally developed by Apple for Safari, and eventually implemented in Chrome by Google, Firefox by Mozilla, and Opera by Opera Software.</p>
<p>Its namesake closely matches its intent: provide JavaScript developers with access to a canvas upon which to paint lines and shapes, blit bitmaps (translucency supported), print fonts, and render 3D objects.</p>
<p>Consider vastly different web-applications of (1) business software which draws charts and graphs in a real-time dashboard, (2) a blog site with subtly-animating background effects overlaid by HTML/CSS, or (3) a 2D- or 3D-graphics system which enables visitors to play online games.</p>
<p>In the case of the business software, one would typically purchase and use one of the many <a href="http://www.google.ca/search?q=web+based+spreadsheets">web-based spreadsheets</a> packages available. For the blog site, perhaps a rich-media Flash+AJAX+PHP or Silverlight+AJAX+ASP.NET application would be the solution. And in the final case of a web-based game, the answer has typically been Flash, Silverlight, Java, or a technology-specific plugin like <a href="http://unity3d.com/">Unity3D</a>.</p>
<p>But in each case, Canvas has the ability to take the reins and deliver rich content, regardless of whether it does <a href="http://www.filamentgroup.com/lab/jquery_visualize_plugin_accessible_charts_graphs_from_tables_html5_canvas/">spreadsheets and charts</a>, <a href="http://code.google.com/p/canvas-for-wordpress/">blogs</a>, or <a href="http://www.benjoffe.com/code/demos/canvascape/">games</a>.</p>
<p><strong>Why is Canvas important?</strong></p>
<p>The above three examples possess common traits:</p>
<ul>
<li>Traditionally, they involve expensive licensing fees for authoring software.</li>
<li>Also traditionally, they tie both end-user and designer/developer to a particular authoring product, plugin, or method of delivery.</li>
<li>End-users must be tech-savvy enough (and have enough OS-level permissions) to manage plugin installation themselves.</li>
</ul>
<p>With absolutely zero installation required, its accessibility instantly surpasses that of Flash or Silverlight, which both require end-users to install and maintain updates for compatibility reasons. Since Canvas is a standard feature with generalized implementation instead of a browser add-on married to a particular authoring package, there comes into play a shift in focus from single-product-specific professionals to implementation-specific ones.</p>
<p><strong>Who are the competition?</strong></p>
<p>Like any new technology, Canvas is bound to go through growing pains. While it has a strong potential for penetration due to its install-less nature, it has some serious <a href="http://www.riastats.com/">statistics</a> to overcome. The current market-giant is Adobe&#8217;s Flash (formerly Macromedia Flash), with a staggering 99% worldwide browser penetration. Microsoft&#8217;s Silverlight has an admirable market penetration, weighing in at just under half of internet-connected computers. And Java, whose presence predates either competitor, maintains a steady presence on three-quarters of desktops.</p>
<p><strong>What obstacles yet exist?</strong></p>
<p>Microsoft Internet Explorer (in version 8 at the time of this writing, and still the default browser on many computers) doesn&#8217;t support Canvas (hence the advent of <a href="http://code.google.com/p/explorercanvas/">work-arounds</a>), and I will be surprised if it ever does. Microsoft has more interest invested in cultivating Silverlight than it does in euthanizing it, so don&#8217;t count upon Canvas adoption anytime soon.</p>
<p>Because Canvas is young (and equally because of Flash&#8217;s venerability and Silverlight&#8217;s market penetration), designers and developers alike will have a difficult time dropping their preferred RIA authoring programs.</p>
<p>Since there are currently no public-ready front-end authoring solutions, which makes both Adobe Flash CS4 and Microsoft Expression Studio that much more attractive. Count on one of Canvas&#8217; proponents &#8212; Mozilla with their upcoming <a href="https://wiki.mozilla.org/Labs/Thunderhead">Thunderhead</a> &#8212; to develop a front-end authoring application suitable enough for designers and developers alike to jump-ship on Adobe or Microsoft. But Canvas is still new, and Thunderhead has a long way to go in terms of competing with Flash (now in its 13th year) in terms of usability.</p>
<p><strong>What&#8217;s next?</strong></p>
<p>Spread the word. If anything, competition is good for innovation, which only benefits end-users and customers. Keep a close eye on the evolution of Canvas. Talk about it!</p>
<p>And stay tuned for the second part of this series on using Canvas to achieve unusual results&#8230;</p>
<p><strong>Links</strong></p>
<p>For any technical information regarding HTML 5 Canvas, please view one of the following:</p>
<p><a href="http://www.whatwg.org/specs/web-apps/current-work/#the-canvas-element">http://www.whatwg.org/specs/web-apps/current-work/#the-canvas-element</a> (careful; long loading time!)</p>
<p><a href="http://en.wikipedia.org/wiki/Canvas_%28HTML_element%29">http://en.wikipedia.org/wiki/Canvas_%28HTML_element%29</a></p>
]]></content:encoded>
			<wfw:commentRss>http://stormwarestudios.com/articles/html-canvas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Version Cue CS4</title>
		<link>http://stormwarestudios.com/articles/adobe-version-cue-cs4/</link>
		<comments>http://stormwarestudios.com/articles/adobe-version-cue-cs4/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 19:07:27 +0000</pubDate>
		<dc:creator>peter.kingsbury</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[cs4]]></category>
		<category><![CDATA[drive]]></category>
		<category><![CDATA[version cue]]></category>

		<guid isPermaLink="false">http://stormwarestudios.com/?p=117</guid>
		<description><![CDATA[What is Adobe Version Cue? Quite simply, Adobe Version Cue (along with its partner-in-crime, Adobe Drive) is a different method of managing your CS-created files. Version Cue enables the Project Manager, Graphic Designer, Web Developer, and Web Designer to coexist in the same project workspace. One of the challenges of working with others (and indeed, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>What is Adobe Version Cue?</strong></p>
<p>Quite simply, Adobe Version Cue (along with its partner-in-crime, Adobe Drive) is a <em>different</em> method of managing your CS-created files. Version Cue enables the Project Manager, Graphic Designer, Web Developer, and Web Designer to coexist in the same project workspace.</p>
<p>One of the challenges of working with others (and indeed, even when flying solo) is the difficulty of managing projects, and files within projects. How many different versions of folders, PSDs, CSSs, etc, <em>from the same project</em> do you have stored on your desktop or laptop? I&#8217;m willing to bet your answer is somewhere north of &#8220;just one&#8221;!</p>
<p><span id="more-117"></span><strong>Old School Methodology</strong></p>
<p>Typically, when working on a project, one might create one root folder in which to store all project files, perhaps create multiple folders to organize files by file-type, and old versions of files either zip-compressed or renamed with some arbitrary prefix or suffix (think homepage_version1_2009-11-24.psd and so on). But what happens when you work between home and the office, or between a work computer and a laptop, or between the hard drive on your only PC/laptop and a portable USB drive? It&#8217;s quite possible that many users have encountered publishing old versions of images, out-of-date CSS rulesets, or stale HTML templates. Add the possibility of collaboration with a second (or more) professional, and suddenly one&#8217;s personal file &#8220;organization&#8221; becomes exponentially chaotic. Lose your portable USB drive, and your day goes from &#8220;great&#8221; to &#8220;I should have stayed in bed&#8221;.</p>
<p>Version Cue attempts to eliminate the version shuffle, as well as introduce the idea of <em>organized collaboration</em>, with the arrival of its Version Cue+Drive combination of software.</p>
<div id="attachment_123" class="wp-caption alignleft" style="width: 268px"><img class="size-full wp-image-123 " title="Adobe Version Cue - Service Panel" src="http://stormwarestudios.com/wp-content/uploads/2009/11/adobe_version_cue.png" alt="adobe version cue Adobe Version Cue CS4" width="258" height="195" /><p class="wp-caption-text">Adobe Version Cue - Service Panel</p></div>
<p><strong>Adobe Version Cue</strong></p>
<p>The first, and most important, piece of software is Version Cue. This is <em>not</em> an application one should typically use locally on their desktop or laptop; instead, it is intended to be installed on a <em>network file server</em> which acts as a <em>repository</em> for all media files edited by a team of collaborators.</p>
<p>Version Cue is installed and configured by a <em>System Administrator</em>, (typically someone who has little-to-no business using other Adobe applications!), and is configured with one <em>user account</em> per collaborator (whether Designer or Developer), and each <em>user account</em> is given one of two levels of permission (either <em>standard user</em> or <em>system administrator</em>). More often than not, users would receive <em>standard user</em> permissions (for security reasons, as well as to avoid &#8216;accidents&#8217; if <em>system administrators</em> are unsure of what they are doing).</p>
<p>Additionally, one <em>project</em> is created per collaborative effort, and <em>user accounts</em> have the ability to create, edit, delete, <em>check-in</em>, and <em>check-out</em> files stored inside the <em>project</em>.</p>
<p>But how does a collaborator actually utilize these <em>projects</em>? Enter Adobe Drive&#8230;</p>
<div id="attachment_125" class="wp-caption alignright" style="width: 403px"><img class="size-full wp-image-125 " title="Adobe Drive CS4 - Client Application" src="http://stormwarestudios.com/wp-content/uploads/2009/11/adobe_drive.png" alt="adobe drive Adobe Version Cue CS4" width="393" height="235" /><p class="wp-caption-text">Adobe Drive CS4 - Client Application</p></div>
<p><strong>Adobe Drive</strong></p>
<p>Collaborators of <em>projects</em> must first connect to a Version Cue <em>network file server</em> using Adobe Drive. Once connected, Adobe Drive creates a <em>network drive entry</em> inside your system&#8217;s file manager (for Windows users, this equates to a network drive inside Windows Explorer. For Mac, look for a network drive mounted on your desktop).</p>
<p>Once this <em>network drive </em>is visible, it can be manipulated almost exactly the same way other files on the computer can be manipulated. Almost&#8230;</p>
<p><strong>Check In and Check Out</strong></p>
<p>With the advent of Version Cue comes the introduction of a small measure of discipline. The basic premise of this discipline is: &#8220;if you want access to a file, perform a Check Out on it. When you&#8217;re done, perform a Check In&#8221;. The idea is the same as renting movies from a video store: if someone has rented-out the only copy of Breakfast At Tiffany&#8217;s, no one else may rent-out this movie until the original copy is returned to the video store. (Unless, of course, one tracks down the initial customer, and strikes a deal to watch the movie with them&#8230;)</p>
<div id="attachment_123" class="wp-caption alignleft" style="width: 268px"><img class="size-full wp-image-123 " title="Adobe Version Cue - Service Panel" src="http://stormwarestudios.com/wp-content/uploads/2009/11/adobe_version_cue.png" alt="adobe version cue Adobe Version Cue CS4" width="258" height="195" /><p class="wp-caption-text">Adobe Version Cue - Service Panel</p></div>
<p>Check Out effectively makes a given file <em>unavailable </em>for other users. Check In does the opposite, and returns a Checked-Out file back to an <em>available </em>state.</p>
<p><strong>Working from home, or from Starbucks</strong></p>
<p>One of the nice things about this sort of software is that, even though your files might be stored away neatly on a <em>network file server</em> at the office (for example), this doesn&#8217;t limit you to only working <em>at</em> the office. When configured correctly, a company&#8217;s network may be set up such that Version Cue collaborators can connect from <em>anywhere</em> there is an internet connection: at home, at Starbucks, in the library, and so on. The responsibility of configuring this situation lies, again, with the <em>System Administrator</em>. (And for the SysAdmins out there, for CS4: TCP ports 3703 and 5353, SSL requires 3704, and for CS3: TCP port 51000, SSL requires 51001. See Adobe&#8217;s <a title="Adobe Version Cue CS4" href="http://help.adobe.com/en_US/Bridge/3.0/WSDBA24A9B-D001-423b-87BB-F29A4E2E70A6.html" target="_blank">documentation</a> to this regard.)</p>
<p><strong>Integration with other CS4 Applications</strong></p>
<p>Another well-thought-out feature of Adobe Version Cue and Adobe Drive, is that of its integration with other CS4 applications. For example, when working in Photoshop CS4 on a file stored in a Version Cue folder, one has the ability to Check In a file being edited (i.e. committing local file changes to the <em>network file server</em>); Photoshop prompts for additional notes on the file to be entered. These changes may be viewed in your system&#8217;s file explorer by right- or alternate-clicking on the file, choosing Adobe Drive CS4, and clicking &#8220;Show Versions&#8230;&#8221;; a window will appear displaying all available versions.</p>
<p><strong>Pros and Cons</strong></p>
<p>Pros:</p>
<ul>
<li><em>Very</em> simple to install and configure. Users with little-to-no experience with administering projects, user accounts, and files, can jump in fairly easily without difficulty.</li>
</ul>
<p>Cons:</p>
<ul>
<li>Since files are stored on a <em>network file server</em>, access to them may be perceived as slow at times. This is a typical issue with files <em>on</em> a network, but since Version Cue files have some extra features not found in simpler network configurations (specifically, the addition of versioning, check-in/out, and so on), this added layer of functionality unfortunately costs users access-time.</li>
<li>Backup and restore, while extremely useful, may be cumbersome and time-consuming to perform for System Administrators who are unfamiliar with the technology employed by Adobe.</li>
<li>Accessing files which are stored remotely, during times when an internet connection may be down or a network file server may be down for maintenance (or, goodness forfend, hardware failure), means <em>zero productivity</em>. This is part-and-parcel for any networked file server situation, and whose down-sides are drastically outweighed by its up-sides.</li>
</ul>
<p><strong>Conclusion</strong></p>
<p>The days of <em>organized collaboration</em> in a single user-space is very likely coming to an end in the near future. With many large corporations moving applications and interactivity to the collective fondly referred to as The Cloud, users will find many old methods of computing returning back to a set of features originally found at the genesis of thin-client/application-server computing as far back as halfway through the last century.</p>
<p>Fortunately, the apps are cooler nowadays.</p>
]]></content:encoded>
			<wfw:commentRss>http://stormwarestudios.com/articles/adobe-version-cue-cs4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

