<?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>rtraction - London, Ontario - Web Design, Web Development and Strategic Consulting &#187; David Millar</title>
	<atom:link href="http://www.rtraction.com/blog/author/devit/feed" rel="self" type="application/rss+xml" />
	<link>http://www.rtraction.com/blog</link>
	<description>rtraction blog - Web Design, Web Development and Strategic Consulting</description>
	<lastBuildDate>Fri, 25 Nov 2011 15:08:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Filter your SharePoint List (Easily!)</title>
		<link>http://www.rtraction.com/blog/devit/filter-your-sharepoint-list-easily.html</link>
		<comments>http://www.rtraction.com/blog/devit/filter-your-sharepoint-list-easily.html#comments</comments>
		<pubDate>Thu, 31 Mar 2011 14:30:18 +0000</pubDate>
		<dc:creator>David Millar</dc:creator>
				<category><![CDATA[Devit!]]></category>
		<category><![CDATA[filters]]></category>
		<category><![CDATA[lists]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://www.rtraction.com/blog/?p=2563</guid>
		<description><![CDATA[If you take a tour over to google or any other search engine to try and find the best way to filter a SharePoint list you will find many results that only provide partial success.  If you want to accomplish the following then this walk through is for you.

filter a SharePoint list (using a TextBox)
filter [...]]]></description>
			<content:encoded><![CDATA[<p>If you take a tour over to google or any other search engine to try and find the best way to filter a SharePoint list you will find many results that only provide partial success.  If you want to accomplish the following then this walk through is for you.</p>
<ul>
<li>filter a SharePoint list (using a TextBox)</li>
<li>filter multiple columns</li>
<li>only show a limited number of results on the page, however still have the filter apply to the whole list</li>
</ul>
<p>Let&#8217;s do this &#8211; step by step instructions:</p>
<ol>
<li>Go to your List</li>
<li>Select Settings -&gt; List Settings</li>
<li>Create view
<ol>
<li>Select your default view (will be listed under &#8220;Start from an existing view&#8221;)</li>
<li>Call it Filtered[ListName] (Ex: FilteredCompanies)</li>
<li>If desired make this the default view (CheckBox below View Name)</li>
<li>Click OK</li>
</ol>
</li>
<li>Go back to List Settings</li>
<li>Create Column -&gt; Call it FilteredCompany (or something logical)
<ol>
<li>Select Calculated</li>
<li>In the Formula box add an = to start and then add every column that you want to search with a &amp;&#8221;#&#8221;&amp; in between. <strong>The &#8220;#&#8221; plays an important role!</strong></li>
<li>Uncheck &#8220;Add to default view&#8221; at the bottom</li>
<li>Click OK</li>
</ol>
</li>
<li>Open the site in Microsoft Office SharePoint Designer</li>
<li>Go to Lists</li>
<li>Go to your List (Ex: Companies)</li>
<li>Open FilteredCompanies.aspx (or whatever you called your new list)</li>
<li>Above your list add a ASP.NET TextBox to the page<br />
&lt;asp:TextBox runat=&#8221;server&#8221; id=&#8221;txtSearch&#8221; AutoPostBack=&#8221;true&#8221; CausesValidation=&#8221;false&#8221;&gt;&lt;/asp:TextBox&gt;</li>
<li>Select the list (Design View)</li>
<li>Right Click -&gt; Select &#8220;Convert to XSLT Data View&#8221;</li>
<li>Click &#8220;Filter&#8221; on the menu that pops up.
<ol>
<li>Select your new Column (Ex:FilteredCompany)</li>
<li>Set Comparison to &#8220;Contains&#8221;</li>
<li>For Value go to the bottom and select &#8220;Create a new parameter&#8230;&#8221;</li>
<li>On the right hand side set &#8220;Parameter Source:&#8221; to Control</li>
<li>On the right hand side set &#8220;Control ID:&#8221; to txtSearch (note: you may see some blank values &#8211; just scroll down)</li>
<li>On the right hand side <strong>set # as the &#8220;Default Value&#8221;</strong><br />
Note: This is done so if we have no search value we still get all of the results back!</li>
<li>Click OK</li>
<li>Click OK once more</li>
</ol>
</li>
<li>Save the page</li>
<li>Success!</li>
</ol>
<p>I hope this saves you both some time, energy and frustration.  Sometimes SharePoint is amazing and other times you&#8217;ll find that a simple functionality change can be a nightmare.</p>
<p>Please let me know if you have any other tips or if you&#8217;re having any issues getting this working.</p>
<p>Good luck,</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rtraction.com/blog/devit/filter-your-sharepoint-list-easily.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drupal Views: Reading arguments from the URL on a block view</title>
		<link>http://www.rtraction.com/blog/devit/drupal-views-reading-arguments-from-the-url-on-a-block-view.html</link>
		<comments>http://www.rtraction.com/blog/devit/drupal-views-reading-arguments-from-the-url-on-a-block-view.html#comments</comments>
		<pubDate>Fri, 18 Mar 2011 13:23:43 +0000</pubDate>
		<dc:creator>David Millar</dc:creator>
				<category><![CDATA[Devit!]]></category>
		<category><![CDATA[arguments]]></category>
		<category><![CDATA[block]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[views]]></category>

		<guid isPermaLink="false">http://www.rtraction.com/blog/?p=2533</guid>
		<description><![CDATA[Recently we needed to read an argument into a view so we could provide a more customized view when content was being displayed.  After some research and testing we got things working although must of the online resources we could find only had a piece of the puzzle.  Basically we&#8217;re looking at a five step [...]]]></description>
			<content:encoded><![CDATA[<p>Recently we needed to read an argument into a view so we could provide a more customized view when content was being displayed.  After some research and testing we got things working although must of the online resources we could find only had a piece of the puzzle.  Basically we&#8217;re looking at a five step simple process to get a view to read an argument from the URL.  For the purpose of this blog post I will be looking in the URL for 1 to many Taxonomy: Term IDs.</p>
<p>Step 1:</p>
<ul>
<li>Edit your block (the block that your view has created)</li>
<li>Under &#8220;Page specific visibility settings&#8221; put a new line under the existing entry with &#8220;mypage/*&#8221;</li>
<li>Now your block will still load when you pass additional URL parameters</li>
</ul>
<p>Step 2:</p>
<ul>
<li>Go to your existing view</li>
<li>Add a new Argument &#8211; &#8220;Taxonomy: Term ID&#8221; &lt;&#8211; you could add a different argument here to meet your needs</li>
<li>Select only the checkbox &#8220;Allow multiple arguments to work together.&#8221;</li>
<li>Save your changes</li>
</ul>
<p>Step 3:</p>
<ul>
<li>Now adjust the argument under &#8220;Action to take if argument is  not present&#8221; and select &#8220;Provide default argument&#8221;</li>
<li>Now select &#8220;PHP Code&#8221; and paste the following code:</li>
</ul>
<blockquote>
<pre style="padding-left: 30px;">$path = drupal_get_path_alias( $_GET["q"]);
$path = explode("/", $path);
$retval = "";
for ($i = 0; $i &lt; sizeof($path); $i++)
{
     if ($i &gt; 0)
     {
          if (strlen($retval) &gt; 0) { $retval .= '+'; }
          $retval .= $path[$i];
     }
}
if (strlen($retval) == 0) { $retval = 0; }
return $retval;
</pre>
</blockquote>
<p>Step 4:</p>
<ul>
<li>Change the drop down on your view under &#8220;Action to take if argument does not validate&#8221; = &#8220;Display all values&#8221;</li>
<li>Save your changes</li>
</ul>
<p>Step 5:</p>
<ul>
<li><strong>Success!</strong></li>
</ul>
<p>This should hopefully keep things moving for you whenever you need to read in a value on a view that exists on a page as a block.</p>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rtraction.com/blog/devit/drupal-views-reading-arguments-from-the-url-on-a-block-view.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint permissions broken? Site is read only?!? (WSS 3.0)</title>
		<link>http://www.rtraction.com/blog/devit/sharepoint-permissions-broken-site-is-read-only-wss-3-0.html</link>
		<comments>http://www.rtraction.com/blog/devit/sharepoint-permissions-broken-site-is-read-only-wss-3-0.html#comments</comments>
		<pubDate>Fri, 25 Feb 2011 16:49:17 +0000</pubDate>
		<dc:creator>David Millar</dc:creator>
				<category><![CDATA[Devit!]]></category>
		<category><![CDATA[locked]]></category>
		<category><![CDATA[permissions]]></category>
		<category><![CDATA[readonly]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://www.rtraction.com/blog/?p=2428</guid>
		<description><![CDATA[Recently we discovered a interesting issue with SharePoint that will cause you copious amounts of grief if your not aware of this &#8216;functionality&#8217;.
What you may be experiencing:

my site seems to have broken permissions
administrator can&#8217;t make changes
I can&#8217;t seem to restore a copy of my site
nothing is working properly and there&#8217;s no errors in any log [...]]]></description>
			<content:encoded><![CDATA[<p>Recently we discovered a interesting issue with SharePoint that will cause you copious amounts of grief if your not aware of this &#8216;functionality&#8217;.</p>
<p>What you may be experiencing:</p>
<ul>
<li>my site seems to have broken permissions</li>
<li>administrator can&#8217;t make changes</li>
<li>I can&#8217;t seem to restore a copy of my site</li>
<li>nothing is working properly and there&#8217;s no errors in any log files</li>
</ul>
<p><strong>What is going on?</strong></p>
<p>Basically your site has been locked. What!?! To fix this issue just take a peak below at &#8220;How can this be fixed?&#8221;.</p>
<p><strong>What caused this?</strong></p>
<p>A new feature in service pack 2 for Windows SharePoint Services (WSS 3.0) by default locks &amp; unlocks your site when backups are performed.  The problem is if anything fails your site will remain locked.  This is in essence a good feature unfortunately there&#8217;s no obvious log or indications anywhere.  A giant red banner on the administration site would be a simple and effective way to bring attention to this &#8216;feature&#8217; so anyone trying to get things working again has some direction.  Additionally the site lock feature when auto enabled or left on by the system should provide a clear list of the reasons this might occur so any individual monitoring a SharePoint site knows what to look for.</p>
<p>One of the following issues may be the cause to this &#8216;feature&#8217; kicking in:</p>
<ul>
<li>backup failed (as of Service Pack 2)</li>
<li>restore failed</li>
<li>there&#8217;s more reasons &#8211; feel free to add the in the comments!</li>
</ul>
<p>As of service pack 2 for Windows Sharepoint Services 3.0 (WSS 3.0) if your nightly backup fails your site will be locked!  In some cases you will see no errors in any logs and have no indication (depending where the backup failure occurred) that anything has failed.  In the instance we ran into the backup successfully completed but failed to exit causing the site to remain locked with no error messages.</p>
<p><strong>How can this be fixed?</strong></p>
<p>To get the system back into a normal state simply follow these steps:</p>
<ul>
<li>open Central Administration on your server</li>
<li>select &#8220;Application Management&#8221;</li>
<li>under &#8220;SharePoint Site Management&#8221; select &#8220;Site collection quotas and locks&#8221;</li>
<li>using the drop down titled &#8220;Site Collection&#8221; move through each site and check the &#8220;Lock status for this site&#8221;</li>
<li>change the offending site(s) to &#8220;Not locked&#8221; and click ok</li>
<li>Success!</li>
</ul>
<p>Additionally if you&#8217;d like your site to remain in a normal state if a backup fails then you can adjust your backup script to include the following setting &#8220;-nositelock&#8221; when using stsadm.</p>
<p>Please let us know if you have any other tips or tricks related to these issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rtraction.com/blog/devit/sharepoint-permissions-broken-site-is-read-only-wss-3-0.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source and Governments: The White House and Bank of Canada</title>
		<link>http://www.rtraction.com/blog/devit/open-source-and-governments-the-white-house-and-bank-of-canada.html</link>
		<comments>http://www.rtraction.com/blog/devit/open-source-and-governments-the-white-house-and-bank-of-canada.html#comments</comments>
		<pubDate>Tue, 04 May 2010 14:32:26 +0000</pubDate>
		<dc:creator>David Millar</dc:creator>
				<category><![CDATA[Devit!]]></category>
		<category><![CDATA[OurTraction]]></category>
		<category><![CDATA[bankofcanada]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[whitehouse]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.rtraction.com/blog/?p=1913</guid>
		<description><![CDATA[There have been a couple of high profile announcements about government institutions using open source products in place of proprietary systems.
One of the biggest announcement came from the White House and they have released some great new modules for Drupal.  All three modules work well to fill noticeable voids and provide a better browsing experience. One [...]]]></description>
			<content:encoded><![CDATA[<p>There have been a couple of high profile announcements about government institutions using open source products in place of proprietary systems.</p>
<p><a rel="attachment wp-att-1967" href="http://www.rtraction.com/blog/devit/open-source-and-governments-the-white-house-and-bank-of-canada.html/attachment/us-whitehouse-logo-jpg-2"><img class="alignleft size-medium wp-image-1967" style="margin-left: 0px; margin-right: 10px; float: left;" title="US-WhiteHouse-Logo.jpg" src="http://www.rtraction.com/blog/wp-content/uploads/2010/05/US-WhiteHouse-Logo.jpg1-300x204.png" alt="" width="177" height="120" /></a>One of the biggest announcement came from the <a href="http://www.whitehouse.gov/">White House</a> and they have released some great new modules for Drupal.  All three modules work well to fill noticeable voids and provide a better browsing experience. One module, &#8220;Context HTTP Headers&#8221;, allows developers or system administrators to customize caching for pages based on type.  This means is that you can have your news pages cached for five minutes on a high traffic website and have your &#8217;standard content pages&#8217; such as About Us cached for sixty minutes.  Another module release is called Akamai and helps target scalability as well by enabling  integration into a their Content Delivery Network. Another module called GovDelivery makes it a lot easier to send out tailored emails to the governments email list.</p>
<p>The White House also released one of the most desired modules for any developer who is working hard to build accessibility complaint websites. Dubbed &#8220;Node Embed&#8221; the module helps deliver rich content (photos and videos) with all of the appropriate meta data that makes them fully accessible by screen reading software.</p>
<p><a rel="attachment wp-att-1970" href="http://www.rtraction.com/blog/devit/open-source-and-governments-the-white-house-and-bank-of-canada.html/attachment/007824"><img class="alignleft size-full wp-image-1970" style="float: left; margin-left: 0px; margin-right: 10px;" title="007824" src="http://www.rtraction.com/blog/wp-content/uploads/2010/05/007824.gif" alt="" width="137" height="137" /></a><a href="http://www.bankofcanada.ca/en/index.html">The Bank of Canada</a> has also made some contributions back to the open source community. They released three WordPress plugins that were developed for their website.  The AJAX Scroll plugin adds a graceful fade in and fade out for next/previous links when a user is navigating content.   Another recently releases plugin is called PBox and it allows a developer to create custom content widgets and standardize the display of the content within them.  This is very useful as it helps ensure all information will have the same look and feel across a site.</p>
<p>The Bank of Canada has also released a WordPress plugin that helps remove the handcuff&#8217;s when it comes to widgets and customizing them.  The plugin called XWidgets allows for a page-by-page customization of any widget which means you can have a news feed or any type of widget customized to fit any specific pages layout or design needs.  This means you can easily have your about us page display a Flickr feed and the same widget could display a twitter feed on your contact us page.</p>
<p>All these announcements are great news for all types of internet users, from casual surfers, to content producers and developers. Its great to see political offices getting on board with open source and we hope that this is just the start to many more contributions from all levels of government.</p>
<p>What online government features would you like to see made available to the general public?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rtraction.com/blog/devit/open-source-and-governments-the-white-house-and-bank-of-canada.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Things To Do Before You Start Coding</title>
		<link>http://www.rtraction.com/blog/devit/10-things-to-do-before-you-start-coding.html</link>
		<comments>http://www.rtraction.com/blog/devit/10-things-to-do-before-you-start-coding.html#comments</comments>
		<pubDate>Fri, 06 Nov 2009 16:21:33 +0000</pubDate>
		<dc:creator>David Millar</dc:creator>
				<category><![CDATA[Devit!]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[planning]]></category>
		<category><![CDATA[specifications]]></category>
		<category><![CDATA[top10]]></category>

		<guid isPermaLink="false">http://www.rtraction.com/blog/?p=776</guid>
		<description><![CDATA[Building on our experiences over the years we&#8217;ve developed a list of key tasks required to complete prior to developers writing a single line of code.  We hope these tips will save you some time on your next project.
1. Review everything
When it comes to any project its important to review all the material that [...]]]></description>
			<content:encoded><![CDATA[<p>Building on our experiences over the years we&#8217;ve developed a list of key tasks required to complete prior to developers writing a single line of code.  We hope these tips will save you some time on your next project.</p>
<p><strong>1. Review everything</strong></p>
<p>When it comes to any project its important to review all the material that your sales team and project manager are handing you.  Make sure you take the time to sit in a quiet area and read through all of the material making notes as you go.</p>
<p><strong>2. Ask Questions</strong></p>
<p>Following up on the first task its very important to ask lots of questions.  Even if the answers to every question is a simple yes, never underestimate the importance of asking questions and clarifying your understanding of functionality.</p>
<p><strong>3. Review proposed technology</strong></p>
<p>Anytime someone makes a decision to use a specific technology to solve a problem its always useful to review the technology proposed and ensure there are no missed opportunities.  More often then not the person who is recommended the technology is doing so on tried and true past project successes.  This however does not mean that new cutting edge technology wouldn&#8217;t be a better fit.</p>
<p><strong>4. Talk with your development team</strong></p>
<p>Even if you deployed every piece of functionality on previous projects it&#8217;s important to talk through what your going to be doing at a high level with your development team.  It&#8217;s especially important to discuss functionality you&#8217;ve never deployed such as a twitter feed or other new technology solutions. Someone more often then not has a good idea to save you time, or recently solved a very time consuming problem with one of the technologies you&#8217;ll be deploying.</p>
<p><strong>5. Plan your attack</strong></p>
<p>Take the time to sit in a quiet area, think about how you&#8217;ll be developing this solution and then write it down!  We can&#8217;t stress this enough as to how important it is to document what will be done first, second and so on.  On top of that it&#8217;s important to have this information available to your project manager, after all he&#8217;s going to want reassurance you can hit and deliver on the clients time lines.  Try using a <a title="Gantt Chart" href="http://www.google.ca/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;ved=0CAgQFjAA&amp;url=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FGantt_chart&amp;rct=j&amp;q=wikipedia+gantt+chart&amp;ei=1Cn0SvnlFcPX8Abz88zzCQ&amp;usg=AFQjCNGPgpcTN31kjmjYV37AeWRWfKguxg" target="_blank">gantt chart</a> to create your plan as this is a simple yet effective way to dip your toes into this process.</p>
<p><strong>6. Review your plan</strong></p>
<p>Remember that even if you&#8217;ve spent two hours or six hours planning out what you&#8217;ll be developing first and second and what you&#8217;ll be developing last it&#8217;s important to review this with the project manager.  They&#8217;ll be able to provide necessary feedback on concerns about client expectations and potentially bottlenecks you may not have considered.</p>
<p><strong>7. Comp out functionality</strong></p>
<p>At this point you should already have a design for your application however this design won&#8217;t illustrate every piece of functionality, and it&#8217;s not important to illustrate how a simple page will look before you get started.  Any functionality that isn&#8217;t 100% cut and dry should be laid out.  You can do this by hand, with many free layout tools or simply work with a designer to create rough composites that you can show to the client for sign-off.</p>
<p><strong>8. Review everything with a team member</strong></p>
<p>Take the time to review your plan and comps with another developer.  It&#8217;s always easier to have a mistake or suggestion pointed out to you know before your 50% down the project.  Have the other developer review your plan, your comps and talk him through everything so he understands what&#8217;s going to be developed without reading all of the information for the entire project.</p>
<p><strong>9. Use pseudocode</strong><a title="Pseudocode" href="http://en.wikipedia.org/wiki/Pseudocode" target="_blank"></a></p>
<p>Unless you&#8217;re the only developer in the world that doesn&#8217;t make mistakes or logic errors then this step is essentially for success.  Layout your functionality in <a title="Pseudocode" href="http://en.wikipedia.org/wiki/Pseudocode" target="_blank">pseudocode</a> being as detailed as possible.  Overtime you&#8217;ll learn where details need to be very specific and where they can be a little less detailed.  This process will help you stop logic problems within your code every single time.</p>
<p><strong>10. Start coding!</strong></p>
<p>By putting some planning upfront you&#8217;ve just saved yourself lots pain and suffering moving forward.</p>
<p>Good luck &#8211; we hope this will save you some time and ensure things move smoothly for you on your next development project. Please share any tips you have for improving the development process in the comments.</p>
<hr /><img style="margin-right: 5px; margin-bottom: 5px;" title="Millar Golfing" src="http://www.rtraction.com/blog/wp-content/uploads/2009/09/millar.jpg" alt="Millar Golfing" width="91" height="122" align="left" /><a title="David Millar's Profile" href="http://www.rtraction.com/about-us/team-bios.htm#millar"><strong>David Millar</strong></a>, <em>Lead Developer</em><br />
<span style="font-family: Trebuchet MS,Georgia,Verdana,Sans-Serif; font-size: 12px;">Millar, as he is known around the office, is a rock-solid, workhorse coder. If anyone really understands what a chunk of code is doing it&#8217;s him. Family, friends, sports, and his wife are the most important things in life to him. He plays sports weekly and golf in the summer when he&#8217;s not busy hanging out with friends and family. Recently he got married to his wife Kate in a beautiful ceremony surrounded by friends and family on a perfect summer day. A humanitarian at heart, his positive demeanour is rattled most when &#8220;society makes decisions without considering more relevant information from the present&#8221;, and people &#8220;make self indulgent decisions that hurt society and everyone else&#8221;.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rtraction.com/blog/devit/10-things-to-do-before-you-start-coding.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crystal Reports Images not showing up</title>
		<link>http://www.rtraction.com/blog/devit/crystal-reports-images-not-showing-up.html</link>
		<comments>http://www.rtraction.com/blog/devit/crystal-reports-images-not-showing-up.html#comments</comments>
		<pubDate>Thu, 24 Sep 2009 18:49:43 +0000</pubDate>
		<dc:creator>David Millar</dc:creator>
				<category><![CDATA[Devit!]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[crystal reports]]></category>
		<category><![CDATA[Crystal Reports Image Handler]]></category>
		<category><![CDATA[handler]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[windows server 2003]]></category>

		<guid isPermaLink="false">http://www.rtraction.com/blog/?p=500</guid>
		<description><![CDATA[When deploying a .NET web application with Crystal Reports you will need to install the appropriate crystal reports library on the server to use any reports you&#8217;ve built.
I recently ran into an issue where Crystal Reports Images (images in a report) would not show up on a new Windows 2003 Server.  After extensive web research [...]]]></description>
			<content:encoded><![CDATA[<p>When deploying a .NET web application with Crystal Reports you will need to install the appropriate crystal reports library on the server to use any reports you&#8217;ve built.</p>
<p>I recently ran into an issue where Crystal Reports Images (images in a report) would not show up on a new Windows 2003 Server.  After extensive web research with no solution in sight I decided to try to solve the problem on my own.</p>
<blockquote><p>Note:  If you&#8217;re having problems with the images in the header bar (BusinessObjects toolbar) then please see this site below:<br />
- <a title="Issues and Fixes" href="http://www.gutgames.com/post/Crystal-Reports2c-issues2c-and-fixes.aspx" target="_blank">http://www.gutgames.com/post/Crystal-Reports2c-issues2c-and-fixes.aspx</a><br />
-  or simply google &#8220;toolbar images for crystal reports not showing up&#8221;</p></blockquote>
<p>To resolve my error I went into the Web Server(IIS) manager and performed the following steps:</p>
<p><img class="size-full wp-image-502" title="handler" src="http://www.rtraction.com/blog/wp-content/uploads/2009/09/handler.png" alt="Image showing the configuration variables entered into new Handler" width="219" height="182" align="right" />1) Clicked on &#8216;My Website&#8217; where I was using crystal reports<br />
2) Clicked on &#8216;Handler Mappings&#8217;<br />
3) On the right side under &#8216;Actions&#8217; I selected &#8216;Add Managed Handler&#8217;<br />
4) Request Path: CrystalImageHandler.aspx<br />
5) Type: CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions&#8230;&#8230;.<br />
6) Crystal Reports Image Handler<br />
7) Press OK<br />
<strong>Success!</strong></p>
<p><strong><br />
</strong></p>
<p>I was able to track down this issue by looking at the URL for non-working images.  All pointed to the following:<br />
http://www.MySite/CrystalImageHandler.aspx?*****useless info******</p>
<p>As you can see, the system is trying to access a handler to read out images specified in the report.</p>
<p>I hope this solution can save you hours of potentially wasted time and frustration.</p>
<hr /><img style="margin-right: 5px; margin-bottom: 5px;" title="Millar Golfing" src="http://www.rtraction.com/blog/wp-content/uploads/2009/09/millar.jpg" alt="Millar Golfing" width="91" height="122" align="left" /><a title="David Millar's Profile" href="http://www.rtraction.com/about-us/team-bios.htm#millar"><strong>David Millar</strong></a>, <em>Lead Developer</em><br />
<span style="font-family: Trebuchet MS,Georgia,Verdana,Sans-Serif; font-size: 12px;">Millar, as he is known around the office, is a rock-solid, workhorse coder. If anyone really understands what a chunk of code is doing it&#8217;s him. Family, friends, sports, and his wife are the most important things in life to him. He plays sports weekly and golf in the summer when he&#8217;s not busy hanging out with friends and family. Recently he got married to his wife Kate in a beautiful ceremony surrounded by friends and family on a perfect summer day. A humanitarian at heart, his positive demeanour is rattled most when &#8220;society makes decisions without considering more relevant information from the present&#8221;, and people &#8220;make self indulgent decisions that hurt society and everyone else&#8221;.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rtraction.com/blog/devit/crystal-reports-images-not-showing-up.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>WSS 403 Forbidden &amp; DCOM Errors in Eventlog</title>
		<link>http://www.rtraction.com/blog/devit/wss-403-forbidden-dcom-errors-in-eventlog.html</link>
		<comments>http://www.rtraction.com/blog/devit/wss-403-forbidden-dcom-errors-in-eventlog.html#comments</comments>
		<pubDate>Wed, 24 Jun 2009 13:52:55 +0000</pubDate>
		<dc:creator>David Millar</dc:creator>
				<category><![CDATA[Devit!]]></category>
		<category><![CDATA[403]]></category>
		<category><![CDATA[DCOM]]></category>
		<category><![CDATA[WSS]]></category>

		<guid isPermaLink="false">http://www.rtraction.com/blog/?p=382</guid>
		<description><![CDATA[One thing that can be frustrating for any developer is when you run into a problem and despite millions of search results when searching for a resolution nothing seems to solve the issue.  I thought I would share some simple solutions to two very frustrating WSS issues we&#8217;ve run into this past year.
The first issue [...]]]></description>
			<content:encoded><![CDATA[<p>One thing that can be frustrating for any developer is when you run into a problem and despite millions of search results when searching for a resolution nothing seems to solve the issue.  I thought I would share some simple solutions to two very frustrating WSS issues we&#8217;ve run into this past year.</p>
<p>The first issue is intermittent 403 Forbidden errors on a WSS (Windows Sharepoint Services) site.  We were seeing  anonymous users in our test environment who couldn&#8217;t use the website at all until an admin logged in.  After someone had logged in then anyone could use the website with or without a login.  What ended up being the problem was a permissions issue on the bin folder for the website.  To fix this problem please follow the simple steps below.</p>
<ol>
<li>Ensure all sub folders that are virtual directories on the site are using the same application pool as the root site.  (This didn&#8217;t help me as everything was set properly, however I read countless posts of this causing problems for others)</li>
<li>Add read access on the bin folder for the account IUSR.  (You don&#8217;t need to add read access to the files, which is somewhat confusing but none the less that protects the files from being downloaded)</li>
<li>Success!</li>
</ol>
<p>If you have any other problems please post your questions/solutions below.</p>
<p>Continuing on, I also ran into a strange DCOM error popping up in Eventlog on most of our servers with WSS sites running.  The error looks like this&#8230;</p>
<blockquote><p><span style="color: #ff0000; font-size: x-small;">The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID {61738644-F196-11D0-9953-00C04FD919C1} to the user &lt;serverName&gt;\networkservice SID (S-1-5-21-&lt;serviceSID&gt;). This security permission can be modified using the Component Services administrative tool.</span></p></blockquote>
<p>Needless to say, getting this error several hundred times a day in Eventlog is not ideal.  The resolution is rather simple but not overly easy to explain.  Please carefully follow the steps below.</p>
<ol>
<li>Copy the GUID (In my case it was {61738644-F196-11D0-9953-00C04FD919C1})</li>
<li>Open the registry editor by running regedit</li>
<li>Click on &#8216;My Computer&#8217; at the top then select Edit -&gt; Find and Paste the Guid (remove the {})</li>
<li>You should see an application name in the right pane when the Guid is found &#8211; in my case this was &#8220;IIS WAMREG admin service&#8221;</li>
<li>Close the registry editor and open Component Services from Control Panel -&gt; Administrative Tools</li>
<li>Expand Component Services, My Computer, DCOM Config and find the application name discovered above in step #4.</li>
<li>Right click on the the application name and select &#8220;Properties&#8221; then select the Security tab</li>
<li>The first block should be set to Customize &#8211; select edit on the right side.</li>
<li>Now add the service account (in my case this was network service) and add the appropriate access which in my case was &#8220;Local Activiation&#8221; (which you can see in the error above)</li>
<li> Success!</li>
</ol>
<p>Please share this information as both of these errors can be both frustrating and a waste of time.</p>
<p>Good luck and happy coding!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rtraction.com/blog/devit/wss-403-forbidden-dcom-errors-in-eventlog.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Howto Setup PHP (Apache, Mysql) on Windows</title>
		<link>http://www.rtraction.com/blog/devit/howto-setup-php-apache-mysql-on-windows.html</link>
		<comments>http://www.rtraction.com/blog/devit/howto-setup-php-apache-mysql-on-windows.html#comments</comments>
		<pubDate>Tue, 26 May 2009 13:31:41 +0000</pubDate>
		<dc:creator>David Millar</dc:creator>
				<category><![CDATA[Devit!]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.rtraction.com/blog/?p=259</guid>
		<description><![CDATA[First Grab the latest copies of the following:
Apache (MSI with OpenSSL): http://httpd.apache.org/download.cgi
PHP Windows Binary (Zip Package): http://www.php.net/downloads.php 
MySql Community Engine (MSI): http://dev.mysql.com/downloads/mysql/5.1.html#win32
MySql Tools (MSI): http://dev.mysql.com/downloads/gui-tools/5.0.html
Once you&#8217;ve downloaded the latest files follow these steps below:
 ol li { margin-bottom: 0; } 

Install Apache

Network Domain: it doesn&#8217;t matter
Server Name: it doesn&#8217;t matter


Unzip PHP into c:\php
Install MySql
Install MySql [...]]]></description>
			<content:encoded><![CDATA[<p>First Grab the latest copies of the following:</p>
<p>Apache (MSI with OpenSSL): <a title="Apache (MSI with OpenSSL)" href="http://httpd.apache.org/download.cgi" target="_blank">http://httpd.apache.org/download.cgi</a><br />
PHP Windows Binary (Zip Package): <a title="PHP Windows Binary (Zip Package)" href="http://www.php.net/downloads.php" target="_blank">http://www.php.net/downloads.php </a><br />
MySql Community Engine (MSI): <a title="MySql Community Engine (MSI)" href="http://dev.mysql.com/downloads/mysql/5.1.html#win32" target="_blank">http://dev.mysql.com/downloads/mysql/5.1.html#win32</a><br />
MySql Tools (MSI): <a title="MySql Tools" href="http://dev.mysql.com/downloads/gui-tools/5.0.html" target="_blank">http://dev.mysql.com/downloads/gui-tools/5.0.html</a></p>
<p>Once you&#8217;ve downloaded the latest files follow these steps below:</p>
<style> ol li { margin-bottom: 0; } </style>
<ol>
<li>Install Apache
<ol>
<li>Network Domain: it doesn&#8217;t matter</li>
<li>Server Name: it doesn&#8217;t matter</li>
</ol>
</li>
<li>Unzip PHP into c:\php</li>
<li>Install MySql</li>
<li>Install MySql Tools</li>
<li>Create a folder c:\websites (or call it what you want)</li>
<li>Go to My Computer -&gt; Right Click Properties -&gt; Advanced -&gt; Environment Variables
<ol>
<li>Select Path -&gt; Click Edit</li>
<li>Add a ;c:\php on the end</li>
</ol>
</li>
<li>Restart your computer!</li>
<li>Browse to the Apache Folder (Should be in Program Files\Apache Software Foundation\Apache
<ol>
<li>Go into conf and open httpd.conf</li>
<li>Change the following and Save
<ol>
<li>ServerRoot (Should be set to your Apache folder &#8211; nothing should be changed here)</li>
<li>Listen (In the event you want your Apache WebServer to not run at localhost:80 &#8211; you can specify a specific ip/port here</li>
<li>In the LoadModule section you might want to enable rewriter_module (not necessary!)</li>
<li>DocumentRoot &quot;C:\websites&quot;</li>
<li>&lt;Directory &quot;C:\websites&quot;&gt; &lt;&#8211; This is about ~15lines below the document root (REQUIRED CHANGE)</li>
<li>Under the DirectoryIndex save yourself some time and add index.php after index.html with a space separating them</ol>
</li>
</ol>
</li>
<li>All Done making configuration changes to Apache</li>
<li>Copy the index.html file in htdocs to c:\websites</li>
<li>Click on the Apache Server Monitor in your TaskBar and restart Apache (if you have any problems check the logs folder in the Apache directory)</li>
</li>
<li>Open your Web Browser and Browse to http://localhost &#8211; You should see &#8216;It Works&#8217;
<ol>
<li>If this failed to work &#8211; check the settings you&#8217;ve changed (typo&#8217;s will break things) also check the error logs in the apache\logs folder (Post any problems you can&#8217;t resolve in the comments)</li>
</ol>
</li>
<li>Now that you have Apache working &#8211; lets get PHP working so you can start coding with php/mysql</li>
<li>Rename php.ini-distribution to php.ini</li>
<li>Open php.ini</li>
<li>Change the following and Save
<ol>
<li>max_execution_time (Suggested for development to increase to 60)</li>
<li>max_input_time (Suggested for development to increase to 120)</li>
<li>memory_limit (Suggested for development to increase to 256M &#8211; great for any type of video conversion)</li>
<li>error_reporting = E_ALL &amp; ~E_NOTICE (Un-comment this and ensure other error_reporting lines are commented</li>
<li>display_errors = On</li>
<li>log_errors = On</li>
<li>session.save_path = &quot;c:\tmp&quot;</li>
<li>post_max_size = 16M (Suggested for development)</li>
<li>doc_root = (You can leave this blank)</li>
<li>extension_dir = &quot;c:\php\ext&quot; (Required)</li>
<li>upload_max_filesize = 16M (Suggested for development)</li>
<li>Un-comment the following extensions:
<ol>
<li>extension=php_curl.dll</li>
<li>extension=php_gd2.dll</li>
<li>extension=php_mbstring.dll</li>
<li>extension=php_mcrypt.dll</li>
<li>extension=php_mssql.dll</li>
<li>extension=php_mysql.dll</li>
<li>extension=php_openssl.dll</li>
</ol>
</li>
<li>If you have access to an SMTP server configure SMTP</li>
</ol>
</li>
<li>Re-open the httpd.conf for apache and add the following lines after the end of the LoadModule section
<ol>
<li>LoadModule php5_module &quot;C:/php/php5apache2_2.dll&quot;</li>
<li>AddType application/x-httpd-php .php</li>
<li>PHPIniDir &quot;C:/php&quot;</li>
</ol>
</li>
<li>Restart Apache</li>
<li>Create a file in c:\websites called test.php</li>
<li>Put &lt;?php phpinfo(); ?&gt; in the file and save</li>
<li>Access http://localhost/test.php</li>
<li>You should see a dump of all the information &#8211; All the extensions you&#8217;ve loaded above should have a section within the information displayed (If you can&#8217;t find mysql on the page for example then the .dll did not load properly &#8211; Verify your Environment Path variable (restart if you change it) and try again)</li>
<li>Don&#8217;t forget to look at your log files if you&#8217;re having problems &#8211; and if php says it can&#8217;t load a module that exists in a specific path then it&#8217;s likely an Environment Path issue.</li>
<li>Happy Coding!</li>
</ol>
<p><code></code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rtraction.com/blog/devit/howto-setup-php-apache-mysql-on-windows.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Gumblar.cn &#8211; Virus in the wild</title>
		<link>http://www.rtraction.com/blog/devit/gumblarcn-virus-in-the-wild.html</link>
		<comments>http://www.rtraction.com/blog/devit/gumblarcn-virus-in-the-wild.html#comments</comments>
		<pubDate>Mon, 18 May 2009 11:52:39 +0000</pubDate>
		<dc:creator>David Millar</dc:creator>
				<category><![CDATA[Devit!]]></category>

		<guid isPermaLink="false">http://www.rtraction.com/blog/?p=249</guid>
		<description><![CDATA[We&#8217;ve been noticing a lot of traffic related to a new virus that has been attacking users/websites recently.
The virus works to exploit your system is several distinct ways.

An infected PC transmits FTP information to Gumblar.cn
Gumblar.cn connects to FTP&#8217;s submitted from infected pc&#8217;s and injects code into any php/html pages it finds
Any user visiting a site [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been noticing a lot of traffic related to a new virus that has been attacking users/websites recently.</p>
<p>The virus works to exploit your system is several distinct ways.</p>
<ol>
<li>An infected PC transmits FTP information to Gumblar.cn</li>
<li>Gumblar.cn connects to FTP&#8217;s submitted from infected pc&#8217;s and injects code into any php/html pages it finds</li>
<li>Any user visiting a site will have JavaScript run in their browser that does the following:
<ol>
<li>Loads obfuscated JavaScript to connects to gumblar.cn if your running windows and not infected</li>
<li>This in turn loads a nice piece of JavaScript that will load an SWF file</li>
<li>This SWF file is the virus payload &#8211; it contains a byteArray that will inject a virus onto the computer (I believe it&#8217;s another SWF file being loaded as the byteArray)</li>
</ol>
</li>
<li>If this computer is running windows and has flash it will become infected</li>
<li>See Step #1</li>
</ol>
<p>The JavaScript code you&#8217;re looking for will look something like this:</p>
<pre lang="text/javascript"><script type="text/javascript"><!--mce:0--></script></pre>
<p>One thing to note in the above code is the words gumblar in plain text.</p>
<p>When it comes to cleaning your webhost up you should take the following steps.</p>
<ol>
<li>Take your website down (turn the web server off &#8211; stop infecting your users)</li>
<li>Remove the FTP information from your PC</li>
<li>Change the FTP username/password on your webhost</li>
<li>Look for new files created (image.php, etc&#8230;) that shouldn&#8217;t be there</li>
<li>Now that you&#8217;ve removed the backdoor &amp; changed the password you need to perform cleanup</li>
<li>Find any PHP or HTML pages injected with the virus code and remove it</li>
</ol>
<p>Once you&#8217;ve done this &#8211; everything should start getting back to normal.</p>
<p>There have been some useful scripts posted in the comments about this virus at <a title="unmaskparasites" href="http://blog.unmaskparasites.com/2009/05/07/gumblar-cn-exploit-12-facts-about-this-injected-script/" target="_blank">blog.unmaskparasites.com</a>.</p>
<p>If you&#8217;ve had any success or troubles with this virus please post your comments below.</p>
<p>If anyone knows of an easy way to convert a byteArray that&#8217;s being passed to an ActionScript Loader back into readable text please leave me a comment below.</p>
<p>Good Luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rtraction.com/blog/devit/gumblarcn-virus-in-the-wild.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Konami Code &#8211; Cheat Code &#8211; Easter Egg</title>
		<link>http://www.rtraction.com/blog/devit/konami-code-cheat-code-easter-egg.html</link>
		<comments>http://www.rtraction.com/blog/devit/konami-code-cheat-code-easter-egg.html#comments</comments>
		<pubDate>Fri, 15 May 2009 15:23:46 +0000</pubDate>
		<dc:creator>David Millar</dc:creator>
				<category><![CDATA[Devit!]]></category>

		<guid isPermaLink="false">http://www.rtraction.com/blog/?p=245</guid>
		<description><![CDATA[Have you ever thought about adding a Easter Egg to your website?
Using a Cheat Code such as the Konami Code you can now easily add one to your website using jQuery and the plugin that Trevor Morris developed.  Get the plugin here.
The code is simple and easy to follow.  Here&#8217;s a snippet to demonstrate how [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever thought about adding a Easter Egg to your website?</p>
<p>Using a Cheat Code such as the <a title="Konami Code" href="http://en.wikipedia.org/wiki/Konami_code" target="_blank">Konami Code</a> you can now easily add one to your website using <a title="jquery" href="http://jquery.com/" target="_blank">jQuery</a> and the plugin that <a title="Trevor Morris" href="http://www.trovster.com/about/" target="_blank">Trevor Morris</a> developed.  Get the plugin <a title="Cheat Code" href="http://www.trovster.com/lab/plugins/cheat-code/" target="_blank">here</a>.</p>
<p>The code is simple and easy to follow.  Here&#8217;s a snippet to demonstrate how simple it is to perform a basic javascript action.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">	$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		$<span style="color: #009900;">&#40;</span>document<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">cheatCode</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>
			code <span style="color: #339933;">:</span> <span style="color: #3366CC;">'38,38,40,40,37,39,37,39,66,65'</span><span style="color: #339933;">,</span>
			activated <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
				<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Hidden'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Don&#8217;t forget you&#8217;ll need to grab a copy of <a title="jquery" href="http://jquery.com/" target="_blank">jQuery</a> if you don&#8217;t already have it loaded up!</p>
<p>Please let us know if you like our Easter Egg.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rtraction.com/blog/devit/konami-code-cheat-code-easter-egg.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

