<?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>Excentrix Web</title>
	<atom:link href="http://www.excentrixweb.com/excentrix-home/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.excentrixweb.com/excentrix-home</link>
	<description>Enterprise, RIA/Web 2.0, and I.T. Management Solutions</description>
	<lastBuildDate>Wed, 24 Jun 2009 05:19:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Making Links Work in VSFTPD on Linux</title>
		<link></link>
		<comments>http://www.excentrixweb.com/excentrix-home/?p=246#comments</comments>
		<pubDate>Wed, 24 Jun 2009 04:16:34 +0000</pubDate>
		<dc:creator>Tami Wright</dc:creator>
				<category><![CDATA[Architecture & Best Practices]]></category>
		<category><![CDATA[How To's]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Platforms]]></category>
		<category><![CDATA[Unix/BSD]]></category>

		<guid isPermaLink="false">http://www.excentrixweb.com/excentrix-home/?p=246</guid>
		<description><![CDATA[I wanted to setup access to my chrooted FTP users to specific directories under my web server.  There didn&#8217;t seem to be a streamlined way to use symbolic or &#8220;sym&#8221; links.  I discovered that utilizing the &#8220;mount &#8211;bind&#8221; command seems to do the trick.  (Don&#8217;t use &#8220;rm&#8221; to remove these mounted directories or you&#8217;ll erase [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: sans-serif;"><img class="alignleft" title="Making VSFTPD Links Work" src="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/sample11.jpg" alt="" width="200" height="200" />I wanted to setup access to my chrooted FTP users to specific directories under my web server.  There didn&#8217;t seem to be a streamlined way to use symbolic or &#8220;sym&#8221; links.  I discovered that utilizing the &#8220;mount &#8211;bind&#8221; command seems to do the trick.  (Don&#8217;t use &#8220;rm&#8221; to remove these mounted directories or you&#8217;ll erase the actual target directory.  For removing these mounted links, use &#8220;umount&#8221;.)</span></p>
<p><span style="font-family: sans-serif;">Here is a way to utilize this temporarily (this will go away on reboot, scroll down for how to make this permanent):<br />
</span><span style="font-family: sans-serif;"><span style="font-family: monospace;">&#8220;mkdir /home/myuser/www.website.com&#8221;</span></span><br />
<span style="font-family: sans-serif;"> <span style="font-family: monospace;">&#8220;mount &#8211;bind /var/www/www.website.com /home/myuser/www.website.com&#8221;</span></span></p>
<p><span style="font-family: sans-serif;">To remove this mount, type the following:<br />
<span style="font-family: monospace;">&#8220;umount /home/myuser/www.website.com&#8221; </span></span></p>
<p><span style="font-family: sans-serif;">To make your mount permanent&#8211;so it doesn&#8217;t go away on server reboot&#8211;add this to your fstab file (often found at /etc/fstab):</span><code><br />
"/var/www/dev  /home/ftp_user/www_dev    none    bind    0       0"</code></p>
<p>References<br />
http://www.ducea.com/2006/07/27/allowing-ftp-access-to-files-outside-the-home-directory-chroot/<br />
https://help.ubuntu.com/community/Mount<br />
<span style="font-family: sans-serif;"><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.excentrixweb.com/excentrix-home/?feed=rss2&amp;p=246</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Update the Airport Express Access Control List (ACL)</title>
		<link></link>
		<comments>http://www.excentrixweb.com/excentrix-home/?p=237#comments</comments>
		<pubDate>Fri, 19 Jun 2009 06:59:52 +0000</pubDate>
		<dc:creator>Tami Wright</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[How To's]]></category>
		<category><![CDATA[Mac OSX]]></category>
		<category><![CDATA[Airport]]></category>
		<category><![CDATA[Airport Express]]></category>
		<category><![CDATA[Airport Extreme]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Configure]]></category>
		<category><![CDATA[Home]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://www.excentrixweb.com/excentrix-home/?p=237</guid>
		<description><![CDATA[ I just purchased an Airport Express to boost the signal of my Airport Extreme because my Airport Extreme is a full floor away from my machines.  Within about 8 hours of having gotten *everything* up and running with the new network configuration I noticed my WiFi was lagging.  Understanding that people are dishonest because [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="This way to enlightenment" src="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/sample13.jpg" alt="" width="200" height="200" /> I just purchased an Airport Express to boost the signal of my Airport Extreme because my Airport Extreme is a full floor away from my machines.  Within about 8 hours of having gotten *everything* up and running with the new network configuration I noticed my WiFi was lagging.  Understanding that people are dishonest because of what I call &#8220;WiFi swinging&#8221; (ie. which is really WiFi slurping) I decided to tighten the access control of my little network.</p>
<p>I got everything set up on the Airport Extreme for timed WiFi access.  However, I noticed in the Aiport Utility that there was not a similar interface for managing timed access control (ACLs) on the Airport Express.  I did a little digging around through Google and found this <strong><a href="http://discussions.apple.com/thread.jspa?messageID=8466128" target="_blank">Apple Support forum thread</a></strong>.  So, taking the advice found therein, I opted to configure my Airport Extreme &#8220;manually&#8221;, then I selected &#8220;File&#8221; -&gt; &#8220;Save as&#8230;&#8221; and saved a *.baseconfig file of the Airport Extreme which also includes its ACLs.  Then I did a &#8220;manual&#8221; setup of the Airport Express and selected &#8220;File&#8221; -&gt; &#8220;Import&#8221;.  In the &#8220;Import&#8221; dialog, I unchecked all but one of the device configuration options: the &#8220;Timed Access Control&#8221; option.  I clicked the &#8220;OK&#8221; button, rebooted the network device/Airport Express and&#8230;voila!  All my ACLs that were configured in the Airport Extreme were now configured in my Airport Express.  NICE!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.excentrixweb.com/excentrix-home/?feed=rss2&amp;p=237</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cairngen with Flex Builder 3 Eclipse Plugin on Mac OSX Leopard</title>
		<link></link>
		<comments>http://www.excentrixweb.com/excentrix-home/?p=209#comments</comments>
		<pubDate>Sun, 24 May 2009 03:54:03 +0000</pubDate>
		<dc:creator>Tami Wright</dc:creator>
				<category><![CDATA[Expertise & Services]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Flex & Flash]]></category>
		<category><![CDATA[RIA Development]]></category>
		<category><![CDATA[Technologies]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[cairngen]]></category>
		<category><![CDATA[cairngorm]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Enterprise Architecture]]></category>
		<category><![CDATA[Enterprise Solutions]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[open source software]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.excentrixweb.com/excentrix-home/?p=209</guid>
		<description><![CDATA[At Excentrix Web, we are avid users and proponents of Open Source Software (OSS).  Consequently, we are always looking for &#8220;what&#8217;s out there&#8221; instead of &#8220;reinventing the wheel&#8221;: we do this in order to increase ROI for our clients&#8217; projects.  When we decided to port a fairly complex Flex project to Cairngorm we decided to [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Cairngen" src="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/sample10.jpg" alt="" width="200" height="200" />At Excentrix Web, we are avid users and proponents of Open Source Software (OSS).  Consequently, we are always looking for &#8220;what&#8217;s out there&#8221; instead of &#8220;reinventing the wheel&#8221;: we do this in order to increase ROI for our clients&#8217; projects.  When we decided to port a fairly complex Flex project to Cairngorm we decided to find something to help us avoid doing the initial coding of our stubbed classes by hand&#8230;Enter stage-right Cairngen!</p>
<p>We love Macs so naturally all our dev machines are Mac OSX Leopard.  However, there have been times when we&#8217;ve been stung with intermittent compatibility issues between vanilla OSS-based projects and Leopard.   One of those times was today when we attempted to get our Cairngen build working inside of the Flex Builder 3 Eclipse plugin IDE.  (We practice what we preach with OSS so we do our Flex Builder dev in Eclipse.)  We thought it would be simple to just right click on the build.xml, select &#8220;Run as -&gt; Ant Build&#8221;  and &#8220;voila!&#8221; Cairngen would work its magic&#8230;Well, that expectation was shot down quickly.</p>
<p>We noticed two errors.  The original was:</p>
<p>1) <strong> “Unable to load a script engine manager”</strong> and&#8230;</p>
<p>After going down the path to resolve error #1 by downloading, installing, and configuring the Mac OSX  JRE 1.6.0 with Eclipse we started receiving the next error:</p>
<p>2)  <strong>&#8220;</strong> <strong><span class="h3">java.lang.UnsatisfiedLinkError: no swt-carbon-3349 or swt-carbon&#8221;</span></strong></p>
<p>Doing further trouble-shooting of error #2 we figured out that error #2 resulted from the fact that JRE 1.6 does not work with the carbon-swt because Apple&#8217;s release of JRE 1.6 is purely 64-bit AND not backwards compatible with 32-bit based carbon-swt.</p>
<p>Through our trial and error we were able to get Cairngen working right.  Simply take the following steps and your Cairngen will work:</p>
<ol></ol>
<ul>
<li>Download Cairngen from <a href="http://cairngen.googlecode.com/files/cairngen-2.1.1.zip" target="_blank">http://cairngen.googlecode.com/files/cairngen-2.1.1.zip</a></li>
<li>Go to this page, <a href="http://code.google.com/p/cairngen/wiki/GettingStarted" target="_blank">http://code.google.com/p/cairngen/wiki/GettingStarted</a>, to learn how to get Cairngen into your Eclipse Flex Builder 3 project</li>
<li>Configure your Ant Home to point to the Ant 1.7 release:<br />
*Go to Eclipse -&gt; Preferences -&gt; Ant,<br />
*Expand &#8220;Ant&#8221; and then click on &#8220;Runtime&#8221;<br />
*Under &#8220;Classpath&#8221; click on &#8220;Ant Home Entries&#8221; and then click on the button &#8220;Ant Home&#8230;&#8221;<br />
*Navigate to where the root of your Ant 1.7 directory is then hit the &#8220;Choose&#8221; button</li>
<li>Once your Ant Home is set, download the following jars&#8217; zip files (the following is thanks to contributor &#8220;Darren&#8221; on Eric Feminella&#8217;s blog <a href="http://www.ericfeminella.com/blog/2007/11/19/cairngen-21/" target="_blank">here</a>):<br />
*BSF: <a href="http://jakarta.apache.org/site/downloads/downloads_bsf.cgi" target="_blank">http://jakarta.apache.org/site/downloads/downloads_bsf.cgi</a><br />
*Mozilla Rhino: <a href="http://www.mozilla.org/rhino/download.html" target="_blank">http://www.mozilla.org/rhino/download.html</a><br />
*Commons-logging: <a href="http://commons.apache.org/downloads/download_logging.cgi" target="_blank">http://commons.apache.org/downloads/download_logging.cgi</a></li>
<li>Extract the zips to your Mac&#8217;s java directory (I put any 3rd party, non-Apple-sponsored jars under /opt/local/share/java/)</li>
<li>Go back to your Eclipse IDE, and once again get to your Ant configuration (refer back to step #3), then do the following once you see the Ant &#8220;Runtime&#8221; screen again:<br />
*Click on &#8220;Global Entries&#8221; then click the button &#8220;Add External JARs&#8230;&#8221;<br />
*Navigate to and select your jar<br />
*Repeat the previous steps for each of the jars downloaded in step #4<br />
*Hit &#8220;Apply&#8221; and then &#8220;OK&#8221;</li>
<li>Quit and restart Eclipse</li>
</ul>
<ol></ol>
<p>You should now be able to right-click on Cairngen&#8217;s &#8220;build.xml&#8217; file and select &#8220;Run As -&gt; Ant Build&#8221; and everything will run like a charm!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.excentrixweb.com/excentrix-home/?feed=rss2&amp;p=209</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What Types of Blogs Do You Like?</title>
		<link></link>
		<comments>http://www.excentrixweb.com/excentrix-home/?p=198#comments</comments>
		<pubDate>Fri, 15 May 2009 07:05:22 +0000</pubDate>
		<dc:creator>Tami Wright</dc:creator>
				<category><![CDATA[Analysis & Reviews]]></category>
		<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://www.excentrixweb.com/excentrix-home/?p=198</guid>
		<description><![CDATA[Will you take 30 seconds to take this poll, please?
This is for a friend for whom I&#8217;m doing a little market research.  Go here to take it.
]]></description>
			<content:encoded><![CDATA[<p>Will you take 30 seconds to take this poll, please?<img class="alignright" title="Market Survey" src="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/sample11.jpg" alt="" width="200" height="200" /></p>
<p>This is for a friend for whom I&#8217;m doing a little market research.  Go <strong><a href="http://tinyurl.com/q8l8po" target="_blank">here</a></strong> to take it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.excentrixweb.com/excentrix-home/?feed=rss2&amp;p=198</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Overcome Flex Fonts Encoding Issues</title>
		<link></link>
		<comments>http://www.excentrixweb.com/excentrix-home/?p=193#comments</comments>
		<pubDate>Tue, 12 May 2009 19:20:46 +0000</pubDate>
		<dc:creator>Tami Wright</dc:creator>
				<category><![CDATA[Expertise & Services]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Flex & Flash]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[RIA Development]]></category>
		<category><![CDATA[Technologies]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[switch]]></category>
		<category><![CDATA[transcoding]]></category>

		<guid isPermaLink="false">http://www.excentrixweb.com/excentrix-home/?p=193</guid>
		<description><![CDATA[Hi Everyone,
Just to help anyone who may not be able to find the solution to fixing Flex Builder font transcoding errors, go to flexfreaks.com&#8217;s forum.  You basically have to add the compile switch &#8220;-managers flash.fonts.AFEFontManager&#8221; in the &#8220;Additional compiler arguments&#8221; field under &#8220;Project&#8221; -&#62; &#8220;Properties&#8221; -&#62; &#8220;Flex Compiler&#8221;.  Let me know whether or [...]]]></description>
			<content:encoded><![CDATA[<p>Hi Everyone,</p>
<p><img class="alignright" title="HowTo" src="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/sample4.jpg" alt="" width="310" height="240" />Just to help anyone who may not be able to find the solution to fixing Flex Builder font transcoding errors, go to<strong> <a href="http://www.flexfreaks.com/forums/viewtopic.php?id=96" target="_blank">flexfreaks.com&#8217;s forum</a></strong>.  You basically have to add the compile switch &#8220;-managers flash.fonts.AFEFontManager&#8221; in the &#8220;Additional compiler arguments&#8221; field under &#8220;Project&#8221; -&gt; &#8220;Properties&#8221; -&gt; &#8220;Flex Compiler&#8221;.  Let me know whether or not this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.excentrixweb.com/excentrix-home/?feed=rss2&amp;p=193</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We Are Growing&#8211;And Need Talent!</title>
		<link></link>
		<comments>http://www.excentrixweb.com/excentrix-home/?p=175#comments</comments>
		<pubDate>Sun, 03 May 2009 00:08:49 +0000</pubDate>
		<dc:creator>Tami Wright</dc:creator>
				<category><![CDATA[Info]]></category>
		<category><![CDATA[Jobs]]></category>

		<guid isPermaLink="false">http://www.excentrixweb.com/excentrix-home/?p=175</guid>
		<description><![CDATA[We are in need of a Web Developer and Web Designer.
See our
CraigsList Web Developer Posting:  http://saltlakecity.craigslist.org/eng/1151489301.html
CraigsList Web Designer Posting: http://saltlakecity.craigslist.org/web/1151470910.html
Or go to our &#8220;Contact Us&#8221; page.
]]></description>
			<content:encoded><![CDATA[<p>We are in need of a Web Developer and Web Designer.<img class="alignright" title="Job News" src="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/sample6.jpg" alt="" width="310" height="240" /></p>
<p>See our</p>
<p>CraigsList Web Developer Posting:  http://saltlakecity.craigslist.org/eng/1151489301.html</p>
<p>CraigsList Web Designer Posting: http://saltlakecity.craigslist.org/web/1151470910.html</p>
<p>Or go to our <a href="http://www.excentrixweb.com/excentrix-home/?p=155">&#8220;Contact Us&#8221; page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.excentrixweb.com/excentrix-home/?feed=rss2&amp;p=175</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>General Contact Information</title>
		<link></link>
		<comments>http://www.excentrixweb.com/excentrix-home/?p=146#comments</comments>
		<pubDate>Sat, 02 May 2009 13:10:57 +0000</pubDate>
		<dc:creator>Tami Wright</dc:creator>
				<category><![CDATA[Address]]></category>
		<category><![CDATA[Info]]></category>

		<guid isPermaLink="false">http://www.excentrixweb.com/excentrix-home/?p=146</guid>
		<description><![CDATA[Excentrix Web, Inc.
Address
1818 W 950 S
Springville, UT 84663
Phone
Main:   801-709-4401
Fax:      801-515-8818
]]></description>
			<content:encoded><![CDATA[<p><strong><span>Excentrix Web, Inc.</span></strong></p>
<p><strong><span><a href="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/sample2.jpg"><img class="alignright" title="Contact" src="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/sample2.jpg" alt="" width="310" height="240" /></a></span><img class="alignleft" title="Arrow" src="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/list.gif" border="0" alt="" width="15" height="15" />Address<br />
</strong>1818 W 950 S<br />
Springville, UT 84663</p>
<p><strong><img class="alignleft" title="Arrow" src="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/list.gif" border="0" alt="" width="15" height="15" /></strong><strong>Phone<br />
</strong>Main:   801-709-4401<br />
Fax:      801-515-8818</p>
]]></content:encoded>
			<wfw:commentRss>http://www.excentrixweb.com/excentrix-home/?feed=rss2&amp;p=146</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A MySQL Update with a Sub-Select</title>
		<link></link>
		<comments>http://www.excentrixweb.com/excentrix-home/?p=169#comments</comments>
		<pubDate>Wed, 15 Apr 2009 20:55:43 +0000</pubDate>
		<dc:creator>Tami Wright</dc:creator>
				<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Quick Tips]]></category>
		<category><![CDATA[Relational Databases]]></category>

		<guid isPermaLink="false">http://www.excentrixweb.com/excentrix-home/?p=169</guid>
		<description><![CDATA[Here&#8217;s a MySQL scriptlet you won&#8217;t want to forget:
&#8220;select child.id from child left join parent on (child.parent_id=parent.id) where child.id is not null and parent.id is null;&#8221;

According to Dennis Haney, the original poster of this scriptlet (as found in his comment on this MySQL dev page here) you will get the error &#8220;ERROR 1216: Cannot add [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a MySQL scriptlet you won&#8217;t want to forget:</p>
<p><strong>&#8220;select child.id from child left join parent on (child.parent_id=parent.id) where child.id is not null and parent.id is null;&#8221;</strong></p>
<p><img class="alignright" title="MySQL Update via Sub-select" src="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/sample1.jpg" alt="MySQL Update Via Sub-Select" width="310" height="240" /></p>
<p>According to Dennis Haney, the original poster of this scriptlet (as found in his comment on this MySQL dev page <strong><a href="http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html" target="_blank">here</a></strong>) you will get the error &#8220;ERROR 1216: Cannot add or update a child row: a foreign key constraint fails&#8221;, if a foreign key you are attempting to add is referencing a parent id that is NULL.  So, this scriptlet helps you find the problematic NULL identities.  Once the NULL is replaced with a valid value you can proceed to finish putting your foreign keys in place.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.excentrixweb.com/excentrix-home/?feed=rss2&amp;p=169</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welcome</title>
		<link></link>
		<comments>http://www.excentrixweb.com/excentrix-home/?p=64#comments</comments>
		<pubDate>Wed, 15 Apr 2009 06:43:30 +0000</pubDate>
		<dc:creator>Tami Wright</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Introduction]]></category>

		<guid isPermaLink="false">http://www.thompson-technical.com/excentrix-home/?p=64</guid>
		<description><![CDATA[Please pardon our dust as we as a company just came into existence and consequently are still in mid-implementation of our new website.  We are excited to offer current and future clients our expertise in various fields of Information Technology.  The purpose of this website will be to distill the knowledge we&#8217;ve garnered over the [...]]]></description>
			<content:encoded><![CDATA[<p>Please pardon our dust as we as a company just came into existence and consequently are still in mid-implementation of our new website.  We are excited <a href="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/sample6.jpg"><img class="alignright" title="Welcome Home" src="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/sample6.jpg" alt="" width="310" height="240" /></a>to offer current and future clients our expertise in various fields of Information Technology.  The purpose of this website will be to distill the knowledge we&#8217;ve garnered over the last fifteen years.  We invite you to return intermittently or subscribe to our RSS feed as we will be posting articles, how-to&#8217;s, white papers, and general analysis on various topics in our exhaustive spectrum of expertise in the following areas:</p>
<ul>
<li><strong>Web 2.0 and Rich Internet Application (RIA) Development</strong>
<ul>
<li>AJAX, Ext.js</li>
<li>Flex, Flash</li>
<li>CSS/DHTML</li>
</ul>
</li>
<li><strong>Major Programming Languages and Platforms(Web and non-Web) </strong>
<ul>
<li>Java/J2EE: Grails, Seam, Spring, Hibernate, JBoss, Tomcat, Jetty</li>
<li>Objective C/Cocoa/iPhone Development</li>
<li>PHP/LAMP</li>
<li>Perl</li>
<li>Ruby/Rails</li>
<li>.NET: C#, VB.NET, WFC, ASP.NET</li>
</ul>
</li>
<li><strong>Enterprise Software Standards, Integration, Architecture &amp; Best Practices </strong>
<ul>
<li>XML</li>
<li>XHTML</li>
<li>JSon</li>
<li>REST</li>
<li>SOAP/RPC</li>
<li>BPML and Enterprse Service Bus</li>
<li>SaaS (Software as a Service) Design and Implementation</li>
<li>Object-oriented Design and UML</li>
<li>Unit Testing/SCRUM/Continuous Builds</li>
<li>Extreme Programming/Agile</li>
</ul>
</li>
<li> <strong>Search Engine Optimization, All major search engines</strong></li>
<li> <strong>User Experience and Usability Design Expertise</strong></li>
<li><strong>Technology Assets Management and Procurement</strong>
<ul>
<li> Enterprise Resource Planning</li>
<li>Software Project Management</li>
<li>Cloud Computing Solutions: Planning, Design and Implementation
<ul>
<li>Cloud APIs:  Google, Yahoo, YouTube, Flickr, Twitter, Facebook, MySpace, LinkedIn, Ribbit, PayPal</li>
</ul>
</li>
<li>Remote Project and Technical Resources Management</li>
<li>Technology Solutions Analysis</li>
</ul>
</li>
<li><strong>Database Architecture, Design, Monitoring/Management</strong>
<ul>
<li>SQL Server 2000 and higher</li>
<li>MySql 4.0 and higher</li>
<li>Oracle 9i and higher</li>
<li>Postgres SQL</li>
<li>Data Storage: LDAP and Active Directory</li>
</ul>
</li>
<li><strong>Server Management and Monitoring</strong>
<ul>
<li>Linux: Redhat ES/Fedora, Ubuntu/Debian</li>
<li>Unix: SCO and FreeBSD</li>
<li>Mac OSX (Tiger and Leopard)</li>
<li>Windows Server 2000 and higher</li>
</ul>
</li>
</ul>
<p>And this list is in no way exhaustive&#8230;</p>
<p>We abscribe to the philosophy that &#8220;actions speak louder than words&#8221; so don&#8217;t take our word for it&#8211;see for yourself.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.excentrixweb.com/excentrix-home/?feed=rss2&amp;p=64</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Grails, RESTful Services Update</title>
		<link></link>
		<comments>http://www.excentrixweb.com/excentrix-home/?p=61#comments</comments>
		<pubDate>Tue, 31 Mar 2009 06:11:25 +0000</pubDate>
		<dc:creator>Tami Wright</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[J2EE & Grails]]></category>
		<category><![CDATA[Quick Tips]]></category>

		<guid isPermaLink="false">http://www.thompson-technical.com/excentrix-home/?p=61</guid>
		<description><![CDATA[Greetings Grail&#8217;ngs,
I have been SO, SO, SO impressed with Grails since I started learning it less then two weeks ago.  It&#8217;s almost as easy to learn and implement as PHP.  Of course, it lends itself well to the Java/J2EE paradigm since it is a subset of the Java language&#8211;just in the form of a scripting [...]]]></description>
			<content:encoded><![CDATA[<p>Greetings Grail&#8217;ngs,<img class="alignright" title="Grails Gewdness" src="http://www.excentrixweb.com/excentrix-home/wp-content/themes/office_10/images/sample3.jpg" alt="" width="310" height="240" /></p>
<p>I have been SO, SO, SO impressed with Grails since I started learning it less then two weeks ago.  It&#8217;s <em>almost<strong> </strong></em>as easy to learn and implement as PHP.  Of course, it lends itself well to the Java/J2EE paradigm since it is a subset of the Java language&#8211;just in the form of a scripting language&#8211;but in so doing it still brings along some of the complexity inherent in moving a J2EE project.</p>
<p>At any rate, I wanted to cut to the chase about the main thrust of this post:  Grails and RESTful services through content negotiation.</p>
<p>From the start of using Grails, I wanted to expose my service layers as a group of Grails RESTful services so that various types of clients&#8211;Flex/Flash, PHP, JSP, and the like&#8211;can get what they need in a uniform manner.  So, I found this article <a href="http://fbflex.wordpress.com/2008/05/15/rest-service-xml-output-in-grails-via-content-negotiation/" target="_blank"><strong>here</strong></a> which gave me a good start.  However, it was outdated insofar as content negotiation and the scaffolding goes.  I&#8217;ve attached an updated Controller.groovy file (that, after you do &#8220;grails install-templates&#8221;, comes under src/templates/scaffolding/).  It&#8217;s <em>not exactly</em> like what Tomas has written as I had to do some debugging/updating of his code to get it to work with Grails 1.0.x and later.</p>
<p>Let me know if it works for you!</p>
<p><strong><a href="http://www.excentrixweb.com/excentrix-home/wp-content/uploads/2009/03/controller.groovy">Controller.groovy</a><br />
*My ISP is having perm problems so I&#8217;ve cut/pasted Controller.groovy below:</strong><br />
<code><br />
/**********BEGIN CODE*************/<br />
import grails.converters.*</code></p>
<p>&lt;%=packageName ? &#8220;package ${packageName}\n\n&#8221; : &#8221;%&gt;class ${className}Controller {</p>
<p>def index = { redirect(action:list,params:params) }</p>
<p>// the delete, save and update actions only accept POST requests<br />
// static allowedMethods = [delete:'POST', save:'POST', update:'POST']<br />
def list = {<br />
params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)<br />
withFormat{<br />
html{ [ ${propertyName}List: ${className}.list( params ), ${propertyName}Total: ${className}.count() ] }<br />
xml{ render ${className}.list( params ) as XML  }<br />
}<br />
}</p>
<p>def show = {<br />
withFormat{<br />
html{<br />
def ${propertyName} = ${className}.get( params.id )<br />
if(!${propertyName}) {<br />
flash.message = &#8220;${className} not found with id \${params.id}&#8221;<br />
redirect(action:list)<br />
}<br />
else { return [ ${propertyName} : ${propertyName} ] }<br />
}<br />
xml{<br />
if(params.id &amp;&amp; ${className}.get(params.id)) {<br />
def c = ${className}.get( params.id )<br />
render c as XML<br />
}<br />
else {<br />
def all = ${className}.list( params )<br />
render all as XML<br />
}<br />
}<br />
}<br />
}</p>
<p>def delete = {<br />
def ${propertyName} = ${className}.get( params.id )<br />
if(${propertyName}) {<br />
try {<br />
${propertyName}.delete()<br />
flash.message = &#8220;${className} \${params.id} deleted&#8221;<br />
redirect(action:list)<br />
}<br />
catch(org.springframework.dao.DataIntegrityViolationException e) {<br />
flash.message = &#8220;${className} \${params.id} could not be deleted&#8221;<br />
redirect(action:show,id:params.id)<br />
}<br />
}<br />
else {<br />
flash.message = &#8220;${className} not found with id \${params.id}&#8221;<br />
redirect(action:list)<br />
}<br />
}</p>
<p>def edit = {<br />
def ${propertyName} = ${className}.get( params.id )</p>
<p>if(!${propertyName}) {<br />
flash.message = &#8220;${className} not found with id \${params.id}&#8221;<br />
redirect(action:list)<br />
}<br />
else {<br />
return [ ${propertyName} : ${propertyName} ]<br />
}<br />
}</p>
<p>def update = {<br />
def ${propertyName} = ${className}.get( params.id )<br />
if(${propertyName}) {<br />
if(params.version) {<br />
def version = params.version.toLong()<br />
if(${propertyName}.version &gt; version) {<br />
&lt;%def lowerCaseName = grails.util.GrailsNameUtils.getPropertyName(className)%&gt;<br />
${propertyName}.errors.rejectValue(&#8221;version&#8221;, &#8220;${lowerCaseName}.optimistic.locking.failure&#8221;, &#8220;Another user has updated this ${className} while you were editing.&#8221;)<br />
render(view:&#8217;edit&#8217;,model:[${propertyName}:${propertyName}])<br />
return<br />
}<br />
}<br />
${propertyName}.properties = params<br />
if(!${propertyName}.hasErrors() &amp;&amp; ${propertyName}.save()) {<br />
flash.message = &#8220;${className} \${params.id} updated&#8221;<br />
redirect(action:show,id:${propertyName}.id)<br />
}<br />
else {<br />
render(view:&#8217;edit&#8217;,model:[${propertyName}:${propertyName}])<br />
}<br />
}<br />
else {<br />
flash.message = &#8220;${className} not found with id \${params.id}&#8221;<br />
redirect(action:edit,id:params.id)<br />
}<br />
}</p>
<p>def create = {<br />
def ${propertyName} = new ${className}()<br />
${propertyName}.properties = params<br />
return ['${propertyName}':${propertyName}]<br />
}</p>
<p>def save = {<br />
def ${propertyName} = new ${className}(params)<br />
if(!${propertyName}.hasErrors() &amp;&amp; ${propertyName}.save()) {<br />
flash.message = &#8220;${className} \${${propertyName}.id} created&#8221;<br />
redirect(action:show,id:${propertyName}.id)<br />
}<br />
else {<br />
render(view:&#8217;create&#8217;,model:[${propertyName}:${propertyName}])<br />
}<br />
}<br />
}<br />
/*********END CODE**********/</p>
<p><strong>NOTE:</strong> Please keep in mind there are no guarantees with this software.  Use at your own risk!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.excentrixweb.com/excentrix-home/?feed=rss2&amp;p=61</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
