<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Rapid Development Group</title>
	
	<link>http://blog.rapiddg.com</link>
	<description>Blog</description>
	<lastBuildDate>Mon, 02 Jan 2012 23:29:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/rapiddg" /><feedburner:info uri="rapiddg" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Building a flexible layout with jQuery splitters and accordions</title>
		<link>http://feedproxy.google.com/~r/rapiddg/~3/n_WJxtIMMjQ/</link>
		<comments>http://blog.rapiddg.com/2012/01/building-a-flexible-layout-with-jquery-splitters-and-accordions/#comments</comments>
		<pubDate>Mon, 02 Jan 2012 23:29:14 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Technical Articles]]></category>

		<guid isPermaLink="false">http://blog.rapiddg.com/?p=314</guid>
		<description><![CDATA[This is part 1 of a series: The Learning jQuery code browser. This article series explores the construction of the code browser tool that accompanies the book Learning jQuery, Third Edition. The first challenge in building the code browser was finding a way to present all of the information required simultaneously. We need to be [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is part 1 of a series: <a href="http://blog.rapiddg.com/2011/12/the-learning-jquery-code-browser/">The Learning jQuery code browser</a>. This article series explores the construction of the <a href="http://book.learningjquery.com/6549/codebrowser/">code browser</a> tool that accompanies the book <a href="http://www.packtpub.com/learning-jquery-for-interaction-design-web-development-with-javascript/book">Learning jQuery, Third Edition</a>.</em></p>
<p>The first challenge in building the code browser was finding a way to present all of the information required simultaneously. We need to be able to see the JavaScript code side-by-side with the finished product, while at the same time having easy access to the associated HTML and CSS for reference. In addition, we need controls for navigating among code samples easily.</p>
<p>The finished product uses a combination of accordion and splitter widgets to accomplish this.<br />
<a href="http://blog.rapiddg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-31-at-5.48.10-PM.png"><img src="http://blog.rapiddg.com/wp-content/uploads/2011/12/Screen-Shot-2011-12-31-at-5.48.10-PM-300x144.png" alt="" title="jQuery Code Browser Layout" width="300" height="144" class="aligncenter size-medium wp-image-315" /></a></p>
<p>A combination of HTML, CSS, and JavaScript is needed to put this together. First, the HTML.</p>
<pre class="brush: html">
&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;utf-8&quot;&gt;
    &lt;title&gt;Learning jQuery Code Listing Browser&lt;/title&gt;

    &lt;link rel=&quot;stylesheet&quot; href=&quot;jquery-ui/css/smoothness/jquery-ui-1.8.9.custom.css&quot; media=&quot;screen&quot;&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;browse.css&quot; media=&quot;screen&quot;&gt;
    &lt;script src=&quot;jquery-1.5.js&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;jquery-ui/js/jquery-ui-1.8.9.custom.min.js&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;jquery.history.js&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;splitter.js&quot;&gt;&lt;/script&gt;

    &lt;script src=&quot;browse.js&quot;&gt;&lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div id=&quot;container&quot;&gt;
      &lt;div id=&quot;navigation&quot;&gt;
        &lt;h1&gt;Learning jQuery, Third Edition&lt;/h1&gt;
        &lt;label for=&quot;chapter&quot;&gt;Chapter&lt;/label&gt;
        &lt;select name=&quot;chapter&quot; id=&quot;chapter&quot; size=&quot;1&quot;&gt;&lt;/select&gt;

        &lt;label for=&quot;step&quot;&gt;Code Listing&lt;/label&gt;
        &lt;div class=&quot;ui-state-default ui-corner-all&quot;&gt;&lt;a href=&quot;#prev&quot; id=&quot;prev&quot; class=&quot;ui-icon ui-icon-triangle-1-w&quot;&gt;Prev&lt;/a&gt;&lt;/div&gt;
        &lt;input type=&quot;text&quot; name=&quot;step&quot; value=&quot;1&quot; id=&quot;step&quot;&gt;
        &lt;div class=&quot;ui-state-default ui-corner-all&quot;&gt;&lt;a href=&quot;#next&quot; id=&quot;next&quot; class=&quot;ui-icon ui-icon-triangle-1-e&quot;&gt;Next&lt;/a&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;content&quot;&gt;
        &lt;div id=&quot;splitter&quot;&gt;
          &lt;div id=&quot;left-pane&quot;&gt;
            &lt;h3&gt;&lt;a href=&quot;#html&quot;&gt;HTML&lt;/a&gt;&lt;/h3&gt;
            &lt;div class=&quot;panel&quot; id=&quot;html&quot;&gt;&lt;/div&gt;
            &lt;h3&gt;&lt;a href=&quot;#css&quot;&gt;CSS&lt;/a&gt;&lt;/h3&gt;
            &lt;div class=&quot;panel&quot; id=&quot;css&quot;&gt;&lt;/div&gt;
            &lt;h3&gt;&lt;a href=&quot;#javascript&quot;&gt;JavaScript&lt;/a&gt;&lt;/h3&gt;
            &lt;div class=&quot;panel&quot; id=&quot;javascript&quot;&gt;&lt;/div&gt;
          &lt;/div&gt;
          &lt;div id=&quot;right-pane&quot;&gt;
            &lt;div&gt;
              &lt;iframe id=&quot;result&quot;&gt;&lt;/iframe&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>This HTML 5 code sets up divisions for the navigation area, the left pane, and the right pane. Within the left pane we have subdivisions for HTML, CSS, and JavaScript code.</p>
<p>There is obviously a significant amount of CSS involved here. The following is the portion of the CSS required for the basic page structure.</p>
<pre class="brush: css">
#navigation {
  padding: 10px 0;
  height: 20px;
  background-color: #000;
  color: #fff;
}

#left-pane {
  width: 250px;
}
#right-pane {
}

#splitter {
  clear: left;
  height: 100%;
  overflow: hidden;
}
#right-pane &gt; div {
  padding-left: 20px;
  height: 100%;
}
#result {
  width: 100%;
  height: 100%;
  border: none;
}
</pre>
<p>With this HTML and CSS in place, we have a start at our page layout. There is still more work to do in styling the page, but in this instance we won&#8217;t care about graceful degradation for users without JavaScript enabled, since all of the code examples rely on JavaScript anyway. So, we&#8217;ll leave the rest of the styling work to the jQuery plugins we&#8217;ve been using.</p>
<p><strong>The accordion widget</strong></p>
<p>An accordion widget is pretty simple. we simply need to expand one item while collapsing the others. A basic approach is easy to outline:</p>
<pre class="brush: js">
$(document).ready(function() {
  $(&#039;#left-pane h3&#039;).click(function() {
    $(&#039;#left-pane div:visible&#039;).slideUp();
    $(this).next().slideDown();
  });
});
</pre>
<p>This gets the very rudimentary job done, but there are lots of details left untended. For example:</p>
<ul>
<li>Setting up the initially-visible item</li>
<li>Gracefully handling clicks on the currently-active item</li>
<li>Keyboard support</li>
<li>Visual feedback that the titles are clickable</li>
<li>Expanding the active item to take up as much vertical space as possible</li>
<li>Various styling enhancements</li>
</ul>
<p>These are all things we could take care of ourselves, but there&#8217;s no need to when the jQuery UI project has done the job for us. The <a href="http://jqueryui.com/demos/accordion/">jQuery UI accordion widget</a> is simple to use, and very powerful.</p>
<pre class="brush: js">
$(document).ready(function() {
  $(&#039;#left-pane&#039;).accordion({
    fillSpace: true,
    active: 2
  });
]);
</pre>
<p>A call to .accordion() does almost all the work. The only parameters we have to provide are fillSpace, which makes sure the accordion uses all the vertical space available to it, and active, which lets us tell the widget to reveal the third item (the one containing JavaScript code) initially and to hide the other two.</p>
<p><strong>The splitter widget</strong></p>
<p>The accordion conserves vertical space in the left column. We also want to give the user flexibility, though, in deciding how much of the screen to devote to the source code and how much to the rendered output. A splitter widget will accomplish this.</p>
<p>Again, using a jQuery plugin is much more efficient than trying to write the code ourselves. The jQuery UI project doesn&#8217;t have a candidate to try, but <a href="http://methvin.com/splitter/">Dave Methvin&#8217;s splitter plugin</a> will fit the bill nicely.</p>
<p>Again, using the plugin couldn&#8217;t be very much simpler.</p>
<pre class="brush: js">
$(document).ready(function() {
  $(&#039;#splitter&#039;).splitter({
    type: &#039;v&#039;,
    anchorToWindow: true,
    cursor: &#039;col-resize&#039;
  });
});
</pre>
<p>We are using three parameters in our call to .splitter() to reach the desired effect. The type parameter lets us specify that the splitter will run vertically (splitting the content horizontally). The anchorToWindow parameter ensures that the splitter fills up the entire window height, even when the window is resized. Finally, the cursor parameter allows us to choose an appearance for the mouse cursor while it is over the splitter, to give the user extra feedback.</p>
<p>With these two plugins in place and active, users can now switch between the three source code viewing areas at will using the accordion widget, and resize the source code and output areas using the splitter widget. Next up, we&#8217;ll be looking at how we populate these areas with real content.</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2012%2F01%2Fbuilding-a-flexible-layout-with-jquery-splitters-and-accordions%2F&amp;linkname=Building%20a%20flexible%20layout%20with%20jQuery%20splitters%20and%20accordions" title="Digg" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/digg.png" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2012%2F01%2Fbuilding-a-flexible-layout-with-jquery-splitters-and-accordions%2F&amp;linkname=Building%20a%20flexible%20layout%20with%20jQuery%20splitters%20and%20accordions" title="Delicious" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/delicious.png" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2012%2F01%2Fbuilding-a-flexible-layout-with-jquery-splitters-and-accordions%2F&amp;linkname=Building%20a%20flexible%20layout%20with%20jQuery%20splitters%20and%20accordions" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/msdn?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2012%2F01%2Fbuilding-a-flexible-layout-with-jquery-splitters-and-accordions%2F&amp;linkname=Building%20a%20flexible%20layout%20with%20jQuery%20splitters%20and%20accordions" title="MSDN" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/msdn.png" alt="MSDN"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2012%2F01%2Fbuilding-a-flexible-layout-with-jquery-splitters-and-accordions%2F&amp;linkname=Building%20a%20flexible%20layout%20with%20jQuery%20splitters%20and%20accordions" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/google.png" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/gmail?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2012%2F01%2Fbuilding-a-flexible-layout-with-jquery-splitters-and-accordions%2F&amp;linkname=Building%20a%20flexible%20layout%20with%20jQuery%20splitters%20and%20accordions" title="Gmail" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/gmail.png" alt="Gmail"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2012%2F01%2Fbuilding-a-flexible-layout-with-jquery-splitters-and-accordions%2F&amp;linkname=Building%20a%20flexible%20layout%20with%20jQuery%20splitters%20and%20accordions">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://blog.rapiddg.com/2012/01/building-a-flexible-layout-with-jquery-splitters-and-accordions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.rapiddg.com/2012/01/building-a-flexible-layout-with-jquery-splitters-and-accordions/</feedburner:origLink></item>
		<item>
		<title>The Learning jQuery code browser</title>
		<link>http://feedproxy.google.com/~r/rapiddg/~3/ltTVOWaL5g0/</link>
		<comments>http://blog.rapiddg.com/2011/12/the-learning-jquery-code-browser/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 22:08:35 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Technical Articles]]></category>

		<guid isPermaLink="false">http://blog.rapiddg.com/?p=311</guid>
		<description><![CDATA[This year, Karl and I completed the third edition of Learning jQuery. We&#8217;re very excited about the updates, which bring the book in line with the newest features of the library. We also used this opportunity to take our reader feedback into account. Exercises were added to the end of each chapter. The examples readers [...]]]></description>
			<content:encoded><![CDATA[<p>This year, Karl and I completed the third edition of <a href="http://www.packtpub.com/learning-jquery-for-interaction-design-web-development-with-javascript/book">Learning jQuery</a>. We&#8217;re very excited about the updates, which bring the book in line with the newest features of the library. We also used this opportunity to take our reader feedback into account. Exercises were added to the end of each chapter. The examples readers found confusing were elaborated on or rewritten. The biggest change, though, related to the structure of the second half of the book and the code examples therein.</p>
<p>Readers liked the first seven chapters of the earlier editions, which build up the basic concepts of the jQuery library. Each uses a self-contained web page, with all the code examples in the chapter relating to that page. In the second half of the book, though, all of the examples referred to the same fictional web site. While this gave a nice &#8220;real-world&#8221; feel to these examples, in practice readers were confused by multiple chapters requiring the same code base. It was also difficult for readers to view the effect of just one example in isolation from everything else that was going on. In addition, to accurately represent the code to the user, many pages at the end of the chapter needed to be devoted to code listings that were largely repetitive—pages that could instead be used for more explanatory prose.</p>
<p>To remedy this, the second half of the book was completely rewritten. Rather than being structured around concepts such as &#8220;tables&#8221; and &#8220;forms,&#8221; the chapters now mirror the structure of the first half of the book, stepping through the basic jQuery building blocks, but this time from a more advances perspective. This approach allowed us once again to use small web pages for each chapter, with all code examples for a chapter working on the same content.</p>
<p>What remained was the problem of handling the large code listings. A code download is provided with the book, so we felt a printed copy of all code was not particularly helpful to the reader. Instead, we wanted a way for the reader to be able to execute and experiment with the code at any stage of its development in a chapter. We also wanted to present this in a visually helpful way.</p>
<p>The result is the <a href="http://book.learningjquery.com/6549/codebrowser/">Learning jQuery Code Browser</a>. This tool allows readers to view any listing in the book in the context of the rest of the code. They can see exactly which lines of code have changed, view the HTML and CSS the script applies to, and view the result of that code when run against the page.</p>
<p>This tool was built quite quickly, and is hardly a paragon of engineering, but nonetheless readers have found it very useful already. Creating it required work in HTML, CSS, PHP, and JavaScript, including the incorporation of several third-party libraries. This makes it worthy of some study as an example. In an upcoming series of articles, I&#8217;ll be breaking down the pieces and parts of the code browser, discussing how each component works. Topics will include:</p>
<ul>
<li>Building a flexible layout with jQuery splitters and accordions</li>
<li>Combining HTML, CSS, and JavaScript on demand</li>
<li>Simple navigation UI widgets</li>
<li>Managing browser history and the back button</li>
<li>Syntax highlighting with GeSHi</li>
<li>Writing a simple &#8220;diff&#8221; script to highlight changed lines of code</li>
</ul>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F12%2Fthe-learning-jquery-code-browser%2F&amp;linkname=The%20Learning%20jQuery%20code%20browser" title="Digg" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/digg.png" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F12%2Fthe-learning-jquery-code-browser%2F&amp;linkname=The%20Learning%20jQuery%20code%20browser" title="Delicious" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/delicious.png" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F12%2Fthe-learning-jquery-code-browser%2F&amp;linkname=The%20Learning%20jQuery%20code%20browser" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/msdn?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F12%2Fthe-learning-jquery-code-browser%2F&amp;linkname=The%20Learning%20jQuery%20code%20browser" title="MSDN" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/msdn.png" alt="MSDN"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F12%2Fthe-learning-jquery-code-browser%2F&amp;linkname=The%20Learning%20jQuery%20code%20browser" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/google.png" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/gmail?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F12%2Fthe-learning-jquery-code-browser%2F&amp;linkname=The%20Learning%20jQuery%20code%20browser" title="Gmail" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/gmail.png" alt="Gmail"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F12%2Fthe-learning-jquery-code-browser%2F&amp;linkname=The%20Learning%20jQuery%20code%20browser">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://blog.rapiddg.com/2011/12/the-learning-jquery-code-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.rapiddg.com/2011/12/the-learning-jquery-code-browser/</feedburner:origLink></item>
		<item>
		<title>How to Configure BlackBerry Simulators and MDS on Windows 7 x64</title>
		<link>http://feedproxy.google.com/~r/rapiddg/~3/gzFbahA5oh8/</link>
		<comments>http://blog.rapiddg.com/2011/09/how-to-configure-blackberry-simulators-and-mds-on-windows-7-x64/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 14:41:04 +0000</pubDate>
		<dc:creator>Jonathan Pichot</dc:creator>
				<category><![CDATA[Technical Articles]]></category>
		<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[MDS]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://blog.rapiddg.com/?p=274</guid>
		<description><![CDATA[When building mobile websites, it can still be necessary to test on the BlackBerry mobile platform to ensure wide-spread compatibility.  This has become more difficult than it should be, particularly if you&#8217;re testing older versions of BlackBerry OS on Windows 7 x64. BlackBerry releases a separate simulator for each OS release, including minor-versions (ex. 5.0.0.484 and [...]]]></description>
			<content:encoded><![CDATA[<p>When building mobile websites, it can still be necessary to test on the BlackBerry mobile platform to ensure wide-spread compatibility.  This has become more difficult than it should be, particularly if you&#8217;re testing older versions of BlackBerry OS on Windows 7 x64.</p>
<p>BlackBerry releases a separate simulator for each OS release, including minor-versions (ex. 5.0.0.484 and 5.0.0.451 are separate simulators).  Also, BlackBerry simulators are strictly Windows-based, so no Mac OS X versions here.  (I ran my simulators on Windows 7 Pro x64, running through Parallels 7 on Mac OS X Lion).</p>
<p>What contributes to the difficulty of mobile web testing on older BlackBerry simulators (OS 5 or older) is the need for a BlackBerry Mobile Data Service simulator (MDS).  The simulator for the latest version of BlackBerry OS, v7 (I did not test v6), does not need this extra simulator.  Here&#8217;s what you&#8217;ll need (these instructions are specifically for Windows 7 x64):</p>
<ul>
<li>A BlackBerry Developer Zone account (free).  <a href="http://us.blackberry.com/developers/">Get one here</a>.</li>
<li>Java JDK 6 (not JDK 7 or greater).  <a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u27-download-440405.html" target="_blank">Get it here</a>.</li>
<li>BlackBerry Email and MDS Services Simulator Package v4.1.4.  <a href="https://swdownloads.blackberry.com/Downloads/contactFormPreload.do?code=00EC53C4682D36F5C4359F4AE7BD7BA1&amp;dl=A863E2C10B7E517A09C80F83418E8B2D" target="_blank">Get it here</a>.  You&#8217;ll need a BlackBerry Developer Zone account.</li>
<li>Any BlackBerry simulator you need to test on (I tested with versions 4.7.0.148 and 5.0.0.419).  <a href="http://us.blackberry.com/developers/resources/simulators.jsp" target="_blank">Get them here</a>.  You&#8217;ll need a BlackBerry Developer Zone account.</li>
</ul>
<p>1. Install Java JDK 6.  A standard installation is fine.</p>
<p>2. Install the BlackBerry Email and MDS Services Simulator Package.</p>
<p>3. With Windows 7 x64, there are a few changes that you will have to make for MDS to work.  If you ran the standard installation, you should find the MDS files here: C:\Program Files (x86)\Research In Motion\BlackBerry Email and MDS Services Simulators 4.1.4.  Otherwise, navigate to the folder where you installed MDS.  You&#8217;ll need to change the user permissions so that your account can write as well as execute files within it.  If you know how to do this, you can ignore the detailed instructions below.  Once you&#8217;ve found the MDS folder, right click it and select &#8216;Properties&#8217;.  In the popup, select the &#8216;Security&#8217; tab (1), then click &#8216;Edit&#8217; under the list of groups and users (2).</p>
<p><a href="http://blog.rapiddg.com/wp-content/uploads/2011/09/Permissions.jpg.jpg"><img class="alignnone size-full wp-image-278" src="http://blog.rapiddg.com/wp-content/uploads/2011/09/Permissions.jpg.jpg" alt="" width="566" height="464" /></a></p>
<p>Another popup will open.  Select the Users group (1).  Below, you&#8217;ll see the list of permissions for the Users group.  Click &#8216;Full control&#8217; (2).  Click &#8216;Apply&#8217; (3), then &#8216;OK&#8217; (4).  You may see a few popups asking for permission, click Yes through all of them.  You should now be able to edit, write, and execute within the MDS folder.</p>
<p><a href="http://blog.rapiddg.com/wp-content/uploads/2011/09/full-control.jpg"><img class="alignnone size-full wp-image-279" src="http://blog.rapiddg.com/wp-content/uploads/2011/09/full-control.jpg" alt="" width="566" height="492" /></a></p>
<p>4. Batch file tokens in Windows 7 are different then those in previous versions of Windows.  Because of this, we&#8217;ll have to edit the run.bat file in the MDS folder.  You should be able to find the file here: C:\Program Files (x86)\Research In Motion\BlackBerry Email and MDS Services Simulators 4.1.4\MDS\run.bat.  When you find it, right click on the file, and select edit.  Notepad, or your favorite text editor, should open.  You should see text that looks like this (highlighting is mine):</p>
<pre class="brush: php">
@echo offcall
setBMDSEnv
if [&quot;%JAVA_HOME%&quot;] == [&quot;&quot;] goto noJavaHomeSet
start cmd /v:on /c &quot;%JAVA_HOME%\bin\java&quot; -classpath !BMDS_CLASSPATH!;!BMDS_CLASSPATH2! -Xmx512M -DKeystore.Password=password net.rim.application.ipproxyservice.IPProxyServiceApplication -log.console.dump
goto end
:noJavaHomeSet
start cmd /v:on /c java -classpath !BMDS_CLASSPATH!;!BMDS_CLASSPATH2! -Xmx512M -DKeystore.Password=password net.rim.application.ipproxyservice.IPProxyServiceApplication -log.console.dump
goto end
:end
</pre>
<p>You&#8217;ll want to replace both instances of<br />
<pre>!BMDS_CLASSPATH!;!BMDS_CLASSPATH2!</pre><br />
with<br />
<pre>%BMDS_CLASSPATH%;%BMDS_CLASSPATH2%</pre><br />
Save the file, overriding the old version, and exit Notepad.</p>
<p>Now try running MDS by navigating to the Start menu and finding MDS.</p>
<p><a href="http://blog.rapiddg.com/wp-content/uploads/2011/09/MDS-start.jpg"><img class="alignnone size-full wp-image-285" src="http://blog.rapiddg.com/wp-content/uploads/2011/09/MDS-start.jpg" alt="" width="415" height="560" /></a></p>
<p>A Command Prompt should open and begin booting up the MDS server.  Once MDS is ready, you should see this:</p>
<p><a href="http://blog.rapiddg.com/wp-content/uploads/2011/09/web-server-started.jpg"><img class="alignnone size-full wp-image-286" src="http://blog.rapiddg.com/wp-content/uploads/2011/09/web-server-started.jpg" alt="" width="542" height="274" /></a></p>
<p>To test that the MDS server is in fact up and running and is connected to the Internet, open your browser, and navigate to localhost:8080.</p>
<p><a href="http://blog.rapiddg.com/wp-content/uploads/2011/09/localhost.jpg"><img class="alignnone size-full wp-image-287" src="http://blog.rapiddg.com/wp-content/uploads/2011/09/localhost.jpg" alt="" width="536" height="402" /></a></p>
<p>5. Now that MDS is working, you should be able to connect to the internet through a simulator.  Run the simulator you need to test on, and navigate to the browser.  You should now be connected to the internet.</p>
<p><a href="http://blog.rapiddg.com/wp-content/uploads/2011/09/finished.jpg.jpg"><img class="alignnone size-full wp-image-293" src="http://blog.rapiddg.com/wp-content/uploads/2011/09/finished.jpg.jpg" alt="" width="560" height="428" /></a></p>
<p><strong>HOW TO RESET THE SIMULATOR: </strong>To reset the simulator in the event you get stuck on an error (as I did), simply delete the configuration files located at: C:\Users\USER\net\rim.  The &#8216;Reset&#8217; menu item in the &#8216;Files&#8217; dropdown never worked for me.</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F09%2Fhow-to-configure-blackberry-simulators-and-mds-on-windows-7-x64%2F&amp;linkname=How%20to%20Configure%20BlackBerry%20Simulators%20and%20MDS%20on%20Windows%207%20x64" title="Digg" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/digg.png" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F09%2Fhow-to-configure-blackberry-simulators-and-mds-on-windows-7-x64%2F&amp;linkname=How%20to%20Configure%20BlackBerry%20Simulators%20and%20MDS%20on%20Windows%207%20x64" title="Delicious" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/delicious.png" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F09%2Fhow-to-configure-blackberry-simulators-and-mds-on-windows-7-x64%2F&amp;linkname=How%20to%20Configure%20BlackBerry%20Simulators%20and%20MDS%20on%20Windows%207%20x64" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/msdn?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F09%2Fhow-to-configure-blackberry-simulators-and-mds-on-windows-7-x64%2F&amp;linkname=How%20to%20Configure%20BlackBerry%20Simulators%20and%20MDS%20on%20Windows%207%20x64" title="MSDN" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/msdn.png" alt="MSDN"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F09%2Fhow-to-configure-blackberry-simulators-and-mds-on-windows-7-x64%2F&amp;linkname=How%20to%20Configure%20BlackBerry%20Simulators%20and%20MDS%20on%20Windows%207%20x64" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/google.png" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/gmail?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F09%2Fhow-to-configure-blackberry-simulators-and-mds-on-windows-7-x64%2F&amp;linkname=How%20to%20Configure%20BlackBerry%20Simulators%20and%20MDS%20on%20Windows%207%20x64" title="Gmail" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/gmail.png" alt="Gmail"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F09%2Fhow-to-configure-blackberry-simulators-and-mds-on-windows-7-x64%2F&amp;linkname=How%20to%20Configure%20BlackBerry%20Simulators%20and%20MDS%20on%20Windows%207%20x64">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://blog.rapiddg.com/2011/09/how-to-configure-blackberry-simulators-and-mds-on-windows-7-x64/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.rapiddg.com/2011/09/how-to-configure-blackberry-simulators-and-mds-on-windows-7-x64/</feedburner:origLink></item>
		<item>
		<title>Music: Own vs. Stream</title>
		<link>http://feedproxy.google.com/~r/rapiddg/~3/fK_naKhd6_4/</link>
		<comments>http://blog.rapiddg.com/2011/08/music-own-vs-stream/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 01:26:03 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Music & Media]]></category>
		<category><![CDATA[Technical Articles]]></category>

		<guid isPermaLink="false">http://blog.rapiddg.com/?p=263</guid>
		<description><![CDATA[To begin, I&#8217;m someone who loves music.  And while there are some bands I can never grow tired of, I really like discovering new music and keeping up with the latest trends in a variety of genres.  I have a vast catalog of music on my computer(s) that amounts to around 11,000 songs.  30+ days [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://blog.rapiddg.com/wp-content/uploads/2011/08/music-logos.gif"><img class="aligncenter size-full wp-image-264" title="music-logos" src="http://blog.rapiddg.com/wp-content/uploads/2011/08/music-logos.gif" alt="" width="600" height="149" /></a></p>
<p style="text-align: left;">To begin, I&#8217;m someone who loves music.  And while there are some bands I can never grow tired of, I really like discovering new music and keeping up with the latest trends in a variety of genres.  I have a vast catalog of music on my computer(s) that amounts to around 11,000 songs.  30+ days according to iTunes.  I have been wrestling with the idea of music ownership for a while now and thought I would write up a post discussing the direction of music to streaming services, possibly moving away from owning a copy on ones hard drive.</p>
<p style="text-align: left;">There isn&#8217;t any doubt that with the dawn of Spotify in the U.S. and the appearance of Rdio in the last year that the trend is moving toward streaming.  My biggest hurdle&#8230; does subscribing to one of these services make my music collection amounting to thousands of dollars worth pretty much nothing?  That&#8217;s a tough pill to swallow.  But I&#8217;m not sure I have a choice. On average I would say I buy 3 or 4 albums a month.  I usually try and wait for good deals on Amazon, but don&#8217;t always.  So let&#8217;s say I spend roughly $25 / month on music.  This typically satisfies my craving for new music, but not always.  And I rarely buy just one song which means I rarely own the latest pop hit.  So where am I going with this?  The typical all access streaming service costs about $10 / month, and gives you access to just about everything, even the guilty pleasures you wouldn&#8217;t dare spend your hard earned money on.  Seems as though moving to a service like this is a no brainer.</p>
<p style="text-align: left;">A common question when it comes to streaming music is access.  Meaning will I be able to play my music wherever I am, even if there is no internet access.  The simple answer is yes.  These streaming services have a number of pricing tiers, and while about $5 / month gets you unlimited streaming, $10 / month provides you with the ability to download music and play when your offline (using approved applications and devices).  So if you own a smart phone you are good to go as that will usually allow you to play on most modern music playing devices.</p>
<p style="text-align: left;">So what are the down sides?  There are a few.  If your someone who still has a 5 disc carousel in the living room, and relies on the CD player in the car you pretty much out of luck.  You can&#8217;t burn any of this music to a disc, at least not legally.  Another down side is the player.  I personally like iTunes as a media player, and there are other good ones out there as well.  With these services you typically won&#8217;t be able to use this familiar software, which means the software provided needs to be really good since it will be all you can use.  If you regularly use AirPlay as a means of broadcasting audio, not having iTunes is a real problem.  There are alternatives though.  You can purchase for about $25 an application called <a href="http://www.rogueamoeba.com/airfoil/" target="_blank">AirFoil</a>.    This does a really slick job of replacing the AirPlay feature within iTunes, as a matter of fact I think it may be better.  So there is a little start up cost but this makes up for the money you&#8217;ll likely save not buying albums.</p>
<p style="text-align: left;">Music as a service likely won&#8217;t interest someone who is content listening to their existing collection and seldom buys new music.  So going this route isn&#8217;t for everyone, and I don&#8217;t think buying music outright will go away any time soon. An audiophile may not be interested in this approach either as the music is typically 128 and up bitrate quality.  It isn&#8217;t loss-less, though technically neither are compact discs.  Still, shrinking 800 Mb down to 80 is going to sacrifice some music quality.  While I can tell a difference it isn&#8217;t too big of an issue.  Plus a keen ear will only be able to hear a difference on really high end speakers.  Probably 95+% of listeners have average speakers or headphones, so this won&#8217;t matter.  Additionally I expect the quality of these services to only increase as time goes on.</p>
<p style="text-align: left;">Listeners with a unique taste in music not found in most stores will still have options if they can&#8217;t find their interests online.  Services like Spotify take your existing purchased library and integrates the music into the provided player.  This is a nice feature, though not all services do this.</p>
<p style="text-align: left;">I expect there to be a lot of development in this area of technology in the upcoming year.  There are small inconveniences with the various services that will hopefully be worked out.  As of writing this article only Rdio has an iPad app, and devices like Apple TV do not natively support browsing and playing these collections.  You do have the option of Air Play as I mentioned previously which is a big help for those with an iPad, Laptop, and in some cases a smart phone. Apple has iCloud coming out around the corner.  This makes use of your purchased music, and Apple has a lot of interest in selling albums via iTunes at fairly high rates, so I don&#8217;t know how much cooperation there will be from them.  But they have surprised me before.</p>
<p style="text-align: left;">Lastly, I&#8217;ll briefly touch on the music industry.  These kind of services will certainly cut down on pirated music which is a big plus.  Though the amount the artists are receiving is drastically smaller.  A while back I saw <a title="How Much to Music Artists Make?" href="http://www.informationisbeautiful.net/2010/how-much-do-music-artists-earn-online/" target="_blank">this info graphic</a> which pretty much says it all. Bands trying to make it will need a fair amount of plays to be able to support themselves.  Though, I will say that in general I am a fan of the free market when it comes to these kind of things and I think the best bands will prevail.  It just means that some people who may have been able to get by before may have to get real jobs that the rest of us.</p>
<p style="text-align: left;">I have personally tried a few of these services.  I will be comparing a few of these services in an upcoming post.</p>
<p style="text-align: left;">&nbsp;</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fmusic-own-vs-stream%2F&amp;linkname=Music%3A%20Own%20vs.%20Stream" title="Digg" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/digg.png" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fmusic-own-vs-stream%2F&amp;linkname=Music%3A%20Own%20vs.%20Stream" title="Delicious" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/delicious.png" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fmusic-own-vs-stream%2F&amp;linkname=Music%3A%20Own%20vs.%20Stream" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/msdn?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fmusic-own-vs-stream%2F&amp;linkname=Music%3A%20Own%20vs.%20Stream" title="MSDN" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/msdn.png" alt="MSDN"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fmusic-own-vs-stream%2F&amp;linkname=Music%3A%20Own%20vs.%20Stream" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/google.png" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/gmail?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fmusic-own-vs-stream%2F&amp;linkname=Music%3A%20Own%20vs.%20Stream" title="Gmail" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/gmail.png" alt="Gmail"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fmusic-own-vs-stream%2F&amp;linkname=Music%3A%20Own%20vs.%20Stream">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://blog.rapiddg.com/2011/08/music-own-vs-stream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.rapiddg.com/2011/08/music-own-vs-stream/</feedburner:origLink></item>
		<item>
		<title>Redirecting for a mobile site</title>
		<link>http://feedproxy.google.com/~r/rapiddg/~3/RMoFgYMG7Qo/</link>
		<comments>http://blog.rapiddg.com/2011/08/redirecting-for-a-mobile-site/#comments</comments>
		<pubDate>Sat, 20 Aug 2011 15:16:53 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Technical Articles]]></category>

		<guid isPermaLink="false">http://blog.rapiddg.com/?p=256</guid>
		<description><![CDATA[An extremely common requirement for a website is to redirect to an alternative site or page when visiting on a mobile application.  So how does one quickly implement a proven solution without reinventing the wheel and wondering if it even does everything it is supposed to?  I recently decided the last time I needed to [...]]]></description>
			<content:encoded><![CDATA[<p>An extremely common requirement for a website is to redirect to an alternative site or page when visiting on a mobile application.  So how does one quickly implement a proven solution without reinventing the wheel and wondering if it even does everything it is supposed to?  I recently decided the last time I needed to implement this feature that I would make a simple portable solution available here for others to use.</p>
<p>What I came up with is a simple php class that will handle everything.  You just need to include some code referencing this class on your index page as well as the main page of your mobile site.  Here is an example index page&#8230;</p>
<pre class="brush: php">
&lt;?php
include_once(&#039;mobile_redirect.class.php&#039;);
$redirect = new mobile_redirect();
$redirect-&gt;homepage = &#039;index.php&#039;;
$redirect-&gt;mobile_redirect = &#039;mobile.php&#039;;
$redirect-&gt;detect();
?&gt;
&lt;h1&gt;INDEX page&lt;/h1&gt;
&lt;?php
print &#039;device: &#039;.$redirect-&gt;device;
if ($redirect-&gt;device != &#039;normal&#039;) {
print &#039;&lt;br /&gt;&lt;a href=&quot;mobile.php?mobi=1&quot;&gt;View Mobile Site&lt;/a&gt;&#039;;
}
?&gt;
</pre>
<p>If you want to force the user into mobile mode you can pass the mobi querystring parameter.  The same can be done to force the user back into regular mode (or disable the mobile version) by using the nomobi parameter.  Once a page has been initialized with one version or another it will stay that way until it is forced back into another mode.</p>
<pre class="brush: php">
&lt;?php
include_once(&#039;mobile_redirect.class.php&#039;);
$redirect = new mobile_redirect();
$redirect-&gt;homepage = &#039;index.php&#039;;
$redirect-&gt;mobile_redirect = &#039;mobile.php&#039;;
$redirect-&gt;detect();
?&gt;
&lt;h1&gt;MOBILE page&lt;/h1&gt;
&lt;?php
print &#039;device: &#039;.$redirect-&gt;device;
print &#039;&lt;br /&gt;&lt;a href=&quot;mobile.php?nomobi=1&quot;&gt;Disable Mobile Site&lt;/a&gt;&#039;;
?&gt;
</pre>
<p>You can find the code here on GitHub: <a href="https://github.com/mbopp/PHP-Mobile-Redirect">https://github.com/mbopp/PHP-Mobile-Redirect</a>  The only file you are required to use is the <a href="https://github.com/mbopp/PHP-Mobile-Redirect/blob/master/mobile_redirect.class.php">.class.php</a> file.</p>
<p>Let me know if you see ways to improve this.</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fredirecting-for-a-mobile-site%2F&amp;linkname=Redirecting%20for%20a%20mobile%20site" title="Digg" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/digg.png" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fredirecting-for-a-mobile-site%2F&amp;linkname=Redirecting%20for%20a%20mobile%20site" title="Delicious" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/delicious.png" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fredirecting-for-a-mobile-site%2F&amp;linkname=Redirecting%20for%20a%20mobile%20site" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/msdn?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fredirecting-for-a-mobile-site%2F&amp;linkname=Redirecting%20for%20a%20mobile%20site" title="MSDN" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/msdn.png" alt="MSDN"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fredirecting-for-a-mobile-site%2F&amp;linkname=Redirecting%20for%20a%20mobile%20site" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/google.png" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/gmail?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fredirecting-for-a-mobile-site%2F&amp;linkname=Redirecting%20for%20a%20mobile%20site" title="Gmail" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/gmail.png" alt="Gmail"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F08%2Fredirecting-for-a-mobile-site%2F&amp;linkname=Redirecting%20for%20a%20mobile%20site">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://blog.rapiddg.com/2011/08/redirecting-for-a-mobile-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.rapiddg.com/2011/08/redirecting-for-a-mobile-site/</feedburner:origLink></item>
		<item>
		<title>Rapid Development Group Adds New Developers</title>
		<link>http://feedproxy.google.com/~r/rapiddg/~3/k05qf7oRyCQ/</link>
		<comments>http://blog.rapiddg.com/2011/05/rapid-development-group-adds-new-developers/#comments</comments>
		<pubDate>Mon, 02 May 2011 18:42:19 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Company News]]></category>

		<guid isPermaLink="false">http://blog.rapiddg.com/?p=249</guid>
		<description><![CDATA[It&#8217;s a big day for our company. Today marks the start of our third year together, as well as the addition two new RDG developers. Jonathan Pichot and Ross Hunter both have joined Rapid Development Group, bringing additional Drupal development expertise to our team. Jonathan has been building websites on the LAMP stack for over six years [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a big day for our company. Today marks the start of our third year together, as well as the addition two new RDG developers. Jonathan Pichot and Ross Hunter both have joined Rapid Development Group, bringing additional Drupal development expertise to our team. Jonathan has been building websites on the LAMP stack for over six years and has experience with several CMS frameworks including Drupal, WordPress, and Joomla.  Jonathan is passionate about clean and accessible design, using industry best practices and open source software. Ross honed his developer chops at Grand Valley State University&#8217;s School of Computing &amp; Information Systems and as a freelance Drupal developer.</p>
<p>The addition of Jonathan and Ross to the RDG development team of Mike Bopp, Jonathan Chaffer, Sam Oltz and Brett Chaffer further solidifies RDG&#8217;s position as the leading Drupal development firm in West Michigan.</p>
<p><img class="alignnone size-full wp-image-253" title="Rapid Development Group" src="http://blog.rapiddg.com/wp-content/uploads/2011/05/rdg-5-2011.jpg" alt="" width="600" height="360" /></p>
<p><em>Rapid Development Group is a lightweight and nimble web development team focused on high-quality implementations of complex web sites, content-managed mobile apps and web applications. Rapid Development Group actively serves over 50 West Michigan companies and non-profit organizations.</em></p>
<p>&nbsp;</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F05%2Frapid-development-group-adds-new-developers%2F&amp;linkname=Rapid%20Development%20Group%20Adds%20New%20Developers" title="Digg" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/digg.png" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F05%2Frapid-development-group-adds-new-developers%2F&amp;linkname=Rapid%20Development%20Group%20Adds%20New%20Developers" title="Delicious" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/delicious.png" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F05%2Frapid-development-group-adds-new-developers%2F&amp;linkname=Rapid%20Development%20Group%20Adds%20New%20Developers" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/msdn?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F05%2Frapid-development-group-adds-new-developers%2F&amp;linkname=Rapid%20Development%20Group%20Adds%20New%20Developers" title="MSDN" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/msdn.png" alt="MSDN"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F05%2Frapid-development-group-adds-new-developers%2F&amp;linkname=Rapid%20Development%20Group%20Adds%20New%20Developers" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/google.png" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/gmail?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F05%2Frapid-development-group-adds-new-developers%2F&amp;linkname=Rapid%20Development%20Group%20Adds%20New%20Developers" title="Gmail" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/gmail.png" alt="Gmail"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F05%2Frapid-development-group-adds-new-developers%2F&amp;linkname=Rapid%20Development%20Group%20Adds%20New%20Developers">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://blog.rapiddg.com/2011/05/rapid-development-group-adds-new-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.rapiddg.com/2011/05/rapid-development-group-adds-new-developers/</feedburner:origLink></item>
		<item>
		<title>Reference Application Data files when creating a Titanium Desktop Application</title>
		<link>http://feedproxy.google.com/~r/rapiddg/~3/CRZYKk_JXBs/</link>
		<comments>http://blog.rapiddg.com/2011/04/reference-application-data-files-when-creating-a-titanium-desktop-application/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 19:39:17 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Technical Articles]]></category>
		<category><![CDATA[Appcelerator]]></category>
		<category><![CDATA[Appcelerator Titanium]]></category>
		<category><![CDATA[Application Data]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Titanium]]></category>
		<category><![CDATA[Titanium Desktop]]></category>

		<guid isPermaLink="false">http://rapidblog.dev.rapiddg.com/?p=237</guid>
		<description><![CDATA[As part of a recent project we were tasked with creating a desktop application in addition to an iPad application.  As we have in the past we used Appcelerator Titanium as the platform for building these applications.  A project with a lot of potential, but it currently has very poor documentation. In short Titanium allows [...]]]></description>
			<content:encoded><![CDATA[<p>As part of a recent project we were tasked with creating a desktop application in addition to an iPad application.  As we have in the past we used <a href="http://developer.appcelerator.com" target="_blank">Appcelerator Titanium</a> as the platform for building these applications.  A project with a lot of potential, but it currently has very poor documentation. In short Titanium allows the development of iOS and desktop application with the use of HTML and Javascript.</p>
<p>A mac or iOS application has a Application Data directory stored (in the Library directory on a mac).  This is really the only place one has the ability to write files within the application being developed.  However, when developing a page in javascript (and generated HTML) there isn&#8217;t a documented way to reference one of these files.  This is a problem for anyone who wants to update their application via the web.</p>
<p>After digging in the Titanium Desktop SDK we located the solution.  The location (src attribute for an image) needs to be prefixed with <strong>file:///</strong>. This is similar to using the <strong>app://</strong> prefix which refers to the location of the application resources itself.</p>
<p>So for an example, an image tag would look like the following&#8230;</p>
<pre class="brush: html">

&lt;img src=&quot;file:///Users/me/Library/Application%20Support/Titanium/appdata/com.company.project.desktop/image.jpg&quot; title=&quot;test image&quot; /&gt;
</pre>
<p>There may be other undocumented prefixes as well, but this get&#8217;s us where we need to be.  If anyone else has any similar undocumented hints leave a comment.</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F04%2Freference-application-data-files-when-creating-a-titanium-desktop-application%2F&amp;linkname=Reference%20Application%20Data%20files%20when%20creating%20a%20Titanium%20Desktop%20Application" title="Digg" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/digg.png" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F04%2Freference-application-data-files-when-creating-a-titanium-desktop-application%2F&amp;linkname=Reference%20Application%20Data%20files%20when%20creating%20a%20Titanium%20Desktop%20Application" title="Delicious" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/delicious.png" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F04%2Freference-application-data-files-when-creating-a-titanium-desktop-application%2F&amp;linkname=Reference%20Application%20Data%20files%20when%20creating%20a%20Titanium%20Desktop%20Application" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/msdn?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F04%2Freference-application-data-files-when-creating-a-titanium-desktop-application%2F&amp;linkname=Reference%20Application%20Data%20files%20when%20creating%20a%20Titanium%20Desktop%20Application" title="MSDN" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/msdn.png" alt="MSDN"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F04%2Freference-application-data-files-when-creating-a-titanium-desktop-application%2F&amp;linkname=Reference%20Application%20Data%20files%20when%20creating%20a%20Titanium%20Desktop%20Application" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/google.png" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/gmail?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F04%2Freference-application-data-files-when-creating-a-titanium-desktop-application%2F&amp;linkname=Reference%20Application%20Data%20files%20when%20creating%20a%20Titanium%20Desktop%20Application" title="Gmail" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/gmail.png" alt="Gmail"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F04%2Freference-application-data-files-when-creating-a-titanium-desktop-application%2F&amp;linkname=Reference%20Application%20Data%20files%20when%20creating%20a%20Titanium%20Desktop%20Application">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://blog.rapiddg.com/2011/04/reference-application-data-files-when-creating-a-titanium-desktop-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.rapiddg.com/2011/04/reference-application-data-files-when-creating-a-titanium-desktop-application/</feedburner:origLink></item>
		<item>
		<title>DrupalCon Chicago</title>
		<link>http://feedproxy.google.com/~r/rapiddg/~3/PD6R55ff_Ys/</link>
		<comments>http://blog.rapiddg.com/2011/03/drupalcon-chicago/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 14:55:00 +0000</pubDate>
		<dc:creator>Hoagy</dc:creator>
				<category><![CDATA[Company News]]></category>
		<category><![CDATA[Bunch of geeks]]></category>
		<category><![CDATA[Meat]]></category>
		<category><![CDATA[The things I put up with]]></category>

		<guid isPermaLink="false">http://blog.rapiddg.com/?p=234</guid>
		<description><![CDATA[So the guys are off to something called DrupalCon in Chicago for a few days, leaving me to hold down the fort. Can you believe that? I mean, what is Chicago known for anyway? In my book, it&#8217;s three things: Meat, meat and more meat. Here&#8217;s a bright idea&#8230; howsabout you send the real expert [...]]]></description>
			<content:encoded><![CDATA[<p>So the guys are off to something called <a href="http://chicago2011.drupal.org" target="_blank">DrupalCon</a> in Chicago for a few days, leaving <em>me </em>to hold down the fort. Can you believe that? I mean, what is Chicago known for anyway? In my book, it&#8217;s three things: <a href="http://www.80stees.com/prodImageDisplay.asp?prodid=FBDO001&amp;image=FBDO001_SM2.jpg&amp;lgimage=FBDO001_LG2.jpg&amp;gender=Mens" target="_blank">Meat</a>, <a href="http://whippedtheblog.com/2010/03/30/chicago-paulinas-meat-market/" target="_blank">meat</a> and <a href="http://en.wikipedia.org/wiki/The_Jungle" target="_blank">more meat</a>.</p>
<p>Here&#8217;s a bright idea&#8230; howsabout you send the <em>real expert</em> to Chicago, and you guys stay home and type on your fancy-pants computer-dealies and build your little websites and iPhone apps? I&#8217;ll even drop by your little <a href="http://chicago2011.drupal.org/chicago/drupal-tower" target="_blank">geek-jamboree</a>, just to keep things nice and legit for the IRS.</p>
<p>I am <em>so </em>out of here when I&#8217;m old enough to drive&#8230;</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F03%2Fdrupalcon-chicago%2F&amp;linkname=DrupalCon%20Chicago" title="Digg" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/digg.png" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F03%2Fdrupalcon-chicago%2F&amp;linkname=DrupalCon%20Chicago" title="Delicious" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/delicious.png" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F03%2Fdrupalcon-chicago%2F&amp;linkname=DrupalCon%20Chicago" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/msdn?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F03%2Fdrupalcon-chicago%2F&amp;linkname=DrupalCon%20Chicago" title="MSDN" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/msdn.png" alt="MSDN"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F03%2Fdrupalcon-chicago%2F&amp;linkname=DrupalCon%20Chicago" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/google.png" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/gmail?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F03%2Fdrupalcon-chicago%2F&amp;linkname=DrupalCon%20Chicago" title="Gmail" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/gmail.png" alt="Gmail"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F03%2Fdrupalcon-chicago%2F&amp;linkname=DrupalCon%20Chicago">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://blog.rapiddg.com/2011/03/drupalcon-chicago/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.rapiddg.com/2011/03/drupalcon-chicago/</feedburner:origLink></item>
		<item>
		<title>Adding “hidden” checkbox to node menu edit fieldgroup</title>
		<link>http://feedproxy.google.com/~r/rapiddg/~3/cpuXrZE5_IM/</link>
		<comments>http://blog.rapiddg.com/2011/01/adding-hidden-checkbox-to-node-menu-edit-fieldgroup/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 14:39:17 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Technical Articles]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[drupal menu api]]></category>
		<category><![CDATA[form_alter]]></category>
		<category><![CDATA[hook_form_alter]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.rapiddg.com/?p=222</guid>
		<description><![CDATA[Quick tip on showing the one menu field not displayed in the node edit form.  If you want to display a field for hiding a menu item for a particular node you need to create a form_alter hook.  In this hook you simply create a field named &#8220;hidden&#8221; using the standard form api underneath the [...]]]></description>
			<content:encoded><![CDATA[<p>Quick tip on showing the one menu field not displayed in the node edit form.  If you want to display a field for hiding a menu item for a particular node you need to create a<strong> form_alter</strong> hook.  In this hook you simply create a field named &#8220;hidden&#8221; using the standard form api underneath the &#8220;menu&#8221; fieldgroup.</p>
<p>And that&#8217;s it.  No submit handler needs to be added or changed.  The existing submit handler already handles saving the hidden field if it is available.</p>
<pre class="brush: php">
/**
* Implementation of hook_form_alter
*/
function custom_menu_form_alter(&amp;$form, &amp;$form_state, $form_id) {
 if (isset($form[&#039;#node&#039;]) &amp;&amp; $form[&#039;#node-&gt;type .&#039;_node_form&#039; == $form_id) {

 $item = $form[&#039;#node&#039;]-&gt;menu;
 $form[&#039;menu&#039;][&#039;hidden&#039;] = array(
 &#039;#type&#039; =&gt; &#039;checkbox&#039;,
 &#039;#title&#039; =&gt; t(&#039;Hidden&#039;),
 &#039;#default_value&#039; =&gt; $item[&#039;hidden&#039;],
 &#039;#description&#039; =&gt; t(&#039;Menu items that are hidden will not be listed in any menu.&#039;),
 );
 }  
}
</pre>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F01%2Fadding-hidden-checkbox-to-node-menu-edit-fieldgroup%2F&amp;linkname=Adding%20%26%238220%3Bhidden%26%238221%3B%20checkbox%20to%20node%20menu%20edit%20fieldgroup" title="Digg" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/digg.png" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F01%2Fadding-hidden-checkbox-to-node-menu-edit-fieldgroup%2F&amp;linkname=Adding%20%26%238220%3Bhidden%26%238221%3B%20checkbox%20to%20node%20menu%20edit%20fieldgroup" title="Delicious" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/delicious.png" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F01%2Fadding-hidden-checkbox-to-node-menu-edit-fieldgroup%2F&amp;linkname=Adding%20%26%238220%3Bhidden%26%238221%3B%20checkbox%20to%20node%20menu%20edit%20fieldgroup" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/msdn?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F01%2Fadding-hidden-checkbox-to-node-menu-edit-fieldgroup%2F&amp;linkname=Adding%20%26%238220%3Bhidden%26%238221%3B%20checkbox%20to%20node%20menu%20edit%20fieldgroup" title="MSDN" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/msdn.png" alt="MSDN"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F01%2Fadding-hidden-checkbox-to-node-menu-edit-fieldgroup%2F&amp;linkname=Adding%20%26%238220%3Bhidden%26%238221%3B%20checkbox%20to%20node%20menu%20edit%20fieldgroup" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/google.png" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/gmail?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F01%2Fadding-hidden-checkbox-to-node-menu-edit-fieldgroup%2F&amp;linkname=Adding%20%26%238220%3Bhidden%26%238221%3B%20checkbox%20to%20node%20menu%20edit%20fieldgroup" title="Gmail" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/gmail.png" alt="Gmail"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2011%2F01%2Fadding-hidden-checkbox-to-node-menu-edit-fieldgroup%2F&amp;linkname=Adding%20%26%238220%3Bhidden%26%238221%3B%20checkbox%20to%20node%20menu%20edit%20fieldgroup">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://blog.rapiddg.com/2011/01/adding-hidden-checkbox-to-node-menu-edit-fieldgroup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.rapiddg.com/2011/01/adding-hidden-checkbox-to-node-menu-edit-fieldgroup/</feedburner:origLink></item>
		<item>
		<title>IE7 HREF Normalization and AJAX</title>
		<link>http://feedproxy.google.com/~r/rapiddg/~3/rC5GLtLMjEM/</link>
		<comments>http://blog.rapiddg.com/2010/08/ie7-href-normalization-and-ajax/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 16:21:46 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Technical Articles]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.rapiddg.com/?p=193</guid>
		<description><![CDATA[I have often relied on jQuery&#8217;s awesome cross-browser compatibility tricks. One of these is fixing an inconsistency with how link HREFs are reported in IE compared to other browsers. In most browsers, when asking for the HREF of a link, JavaScript sees what is actually in the document source. In IE, however, the HREF attribute [...]]]></description>
			<content:encoded><![CDATA[<p>I have often relied on jQuery&#8217;s awesome cross-browser compatibility tricks. One of these is fixing an inconsistency with how link HREFs are reported in IE compared to other browsers. In most browsers, when asking for the HREF of a link, JavaScript sees what is actually in the document source. In IE, however, the HREF attribute is &#8220;normalized&#8221; into a fully-qualified URL. This can be a problem.</p>
<p>Generally, jQuery fixes this for you when you use the .attr() method to retrieve the &#8220;href&#8221; attribute. The returned value is whatever is in the source code, not the normalized URL, regardless of browser. Success!</p>
<p>Unfortunately, I discovered today that is not always the case. In this specific scenario the normalization still happens:</p>
<ol>
<li>Open IE7.</li>
<li>Use AJAX to load some content into the page that contains links.</li>
<li>Examine the link HREF using .attr(&#8216;href&#8217;).</li>
<li>See that the result is a normalized URL. Oops.</li>
</ol>
<p>I haven&#8217;t yet performed reductions to see if the problem is the AJAX load or the DOM insertion, but it only affects IE7, not IE8. At this point, my workaround is to do the regexes manually to extract the part of the HREF I want, rather than relying on jQuery. Clumsy, but it works!</p>
<a href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2010%2F08%2Fie7-href-normalization-and-ajax%2F&amp;linkname=IE7%20HREF%20Normalization%20and%20AJAX" title="Digg" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/digg.png" alt="Digg"/></a> <a href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2010%2F08%2Fie7-href-normalization-and-ajax%2F&amp;linkname=IE7%20HREF%20Normalization%20and%20AJAX" title="Delicious" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/delicious.png" alt="Delicious"/></a> <a href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2010%2F08%2Fie7-href-normalization-and-ajax%2F&amp;linkname=IE7%20HREF%20Normalization%20and%20AJAX" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" alt="StumbleUpon"/></a> <a href="http://www.addtoany.com/add_to/msdn?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2010%2F08%2Fie7-href-normalization-and-ajax%2F&amp;linkname=IE7%20HREF%20Normalization%20and%20AJAX" title="MSDN" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/msdn.png" alt="MSDN"/></a> <a href="http://www.addtoany.com/add_to/google_bookmarks?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2010%2F08%2Fie7-href-normalization-and-ajax%2F&amp;linkname=IE7%20HREF%20Normalization%20and%20AJAX" title="Google Bookmarks" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/google.png" alt="Google Bookmarks"/></a> <a href="http://www.addtoany.com/add_to/gmail?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2010%2F08%2Fie7-href-normalization-and-ajax%2F&amp;linkname=IE7%20HREF%20Normalization%20and%20AJAX" title="Gmail" rel="nofollow" target="_blank"><img src="http://blog.rapiddg.com/wp-content/plugins/add-to-any/icons/gmail.png" alt="Gmail"/></a> <a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fblog.rapiddg.com%2F2010%2F08%2Fie7-href-normalization-and-ajax%2F&amp;linkname=IE7%20HREF%20Normalization%20and%20AJAX">Share/Save</a>]]></content:encoded>
			<wfw:commentRss>http://blog.rapiddg.com/2010/08/ie7-href-normalization-and-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.rapiddg.com/2010/08/ie7-href-normalization-and-ajax/</feedburner:origLink></item>
	</channel>
</rss>

