<?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/"
		xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Through My Lenses &#187; coldfusion</title>
	<atom:link href="http://www.ericstoike.com/wp/tag/coldfusion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ericstoike.com/wp</link>
	<description>A look into the world as I see it...</description>
	<lastBuildDate>Mon, 16 Jan 2012 19:05:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
	<copyright>Copyright &#xA9; Through My Lenses 2011 </copyright>
	<managingEditor>eric@gvfootball.com (Through My Lenses)</managingEditor>
	<webMaster>eric@gvfootball.com (Through My Lenses)</webMaster>
	<image>
		<url>http://www.ericstoike.com/wp/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Through My Lenses</title>
		<link>http://www.ericstoike.com/wp</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>A look into the world as I see it...</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>Through My Lenses</itunes:author>
	<itunes:owner>
		<itunes:name>Through My Lenses</itunes:name>
		<itunes:email>eric@gvfootball.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.ericstoike.com/wp/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>#cfunited Notes &#8211; &#8220;Intro to jQuery&#8221;</title>
		<link>http://www.ericstoike.com/wp/2009/08/15/cfunited-notes-intro-to-jquery/</link>
		<comments>http://www.ericstoike.com/wp/2009/08/15/cfunited-notes-intro-to-jquery/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 15:54:34 +0000</pubDate>
		<dc:creator>cowboyEric</dc:creator>
				<category><![CDATA[#cfunited]]></category>
		<category><![CDATA[#cfunited2009]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[notes]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://www.ericstoike.com/wp/?p=794</guid>
		<description><![CDATA[Javascript is NOT the enemy. You can find peace. Why jQuery? powerful, wide support, works for me (after initial period of grumpy old man whining) History 3 years old high compatibility free minified, gziped or full fat available on Google CDN What does it do? finds stuff changes stuff loads stuff and more stuff Signs [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Javascript is NOT the enemy. You can find peace.</strong></p>
<p><strong>Why jQuery?</strong></p>
<p>powerful, wide support, works for me (after initial period of grumpy old man whining)</p>
<p><strong>History</strong></p>
<ul>
<li>3 years old</li>
<li>high compatibility</li>
<li>free</li>
<li>minified, gziped or full fat</li>
<li>available on Google CDN</li>
</ul>
<p><strong>What does it do?</strong></p>
<ul>
<li>finds stuff</li>
<li>changes stuff</li>
<li>loads stuff</li>
<li>and more stuff</li>
</ul>
<p><strong>Signs that you may be looking at jQuery</strong></p>
<ul>
<li>$ is jQuery</li>
<li>lots and lots and lots of stuff chained together because everything returns itself</li>
</ul>
<p><strong>Selectors</strong></p>
<ul>
<li>find soemthing</li>
<li>follows CSS rules</li>
<li>Basic &#8211; $(&#8220;#someId&#8221;) $(&#8220;.someClass&#8221;) $(&#8220;p&#8221;)</li>
<li>$(&#8220;#parent p&#8221;) &#8211;&gt; all paragraphs under #parent</li>
<li>$(&#8220;something:not(somethingelse)&#8221;)</li>
<li>also has ^ $ for beginning and end</li>
<li>$(&#8216;a[href*=cnn]&#8216;) &#8211;&gt; all links to anything containing cnn</li>
<li>$(&#8216;a[href$=pdf]&#8216;) &#8211;&gt; all links whtat end in pdf</li>
<li>$(&#8216;#favThings &gt; li:even and <img src='http://www.ericstoike.com/wp/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> dd</li>
<li>:eq</li>
<li>contains</li>
<li>form related (checked, selected, en/disabled)</li>
<li>next, prev, parent, children, and siblings</li>
<li>filter (custom JS code)</li>
</ul>
<p><strong>Manipulation</strong></p>
<ul>
<li>adding, removing classes</li>
<li>setting, getting attributes</li>
<li>prepending and appending</li>
<li>changing contents</li>
</ul>
<p><strong>Events</strong></p>
<ul>
<li>what you expect (click, change, etc)</li>
<li>special ones (hover, toggle)</li>
<li>$(document).ready</li>
</ul>
<p><strong>Effects</strong></p>
<ul>
<li>tick me off</li>
<li>&#8220;will my client want to see this 50 times?&#8221;</li>
<li>hiding/showing</li>
<li>fading</li>
<li>bouncing</li>
<li>http://docs.jquery.com/effects</li>
</ul>
<p><strong>Ajax</strong></p>
<ul>
<li>load</li>
<li>get (has length restriction)</li>
<li>post</li>
<li>getJSON</li>
<li>getScript</li>
</ul>
<p><strong>Plugins</strong></p>
<ul>
<li>over 2,400</li>
<li>wide range of areas: ui, form, widgets, etc</li>
<li>quality also covers a wide range</li>
</ul>
<p><strong>Favorites</strong></p>
<ul>
<li>Validate</li>
<li>ThickBox</li>
<li>jqGrid</li>
<li>jQuery Select</li>
</ul>
<p><strong>jQuery+CF</strong></p>
<p>Helpful<strong><br />
</strong></p>
<ul>
<li>still<strong> </strong>the glue</li>
<li>native JSON format</li>
<li>returnFormat</li>
<li>XML generation</li>
</ul>
<p>Not So Helpful</p>
<ul>
<li>onRequest (EVIL++) fixed in CF9</li>
<li>whitepsace</li>
<li>debugging</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ericstoike.com/wp/2009/08/15/cfunited-notes-intro-to-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#cfunites Notes &#8211; &#8220;Advanced Custom Tags&#8221;</title>
		<link>http://www.ericstoike.com/wp/2009/08/15/cfunites-notes-advanced-custom-tags/</link>
		<comments>http://www.ericstoike.com/wp/2009/08/15/cfunites-notes-advanced-custom-tags/#comments</comments>
		<pubDate>Sat, 15 Aug 2009 13:33:02 +0000</pubDate>
		<dc:creator>cowboyEric</dc:creator>
				<category><![CDATA[#cfunited]]></category>
		<category><![CDATA[#cfunited2009]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[notes]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://www.ericstoike.com/wp/?p=792</guid>
		<description><![CDATA[What is a custom tags? CF custom tags are user created tags to extend the tag set written in CF executed on CF server used along side standards tags locally available Why use them? code reuse encapsulation abstraction simplification customized control flow packaging What about CFC? yes everything you can do everything in CFCs but [...]]]></description>
			<content:encoded><![CDATA[<p><strong>What is a custom tags?</strong></p>
<ul>
<li>CF custom tags are user created tags to extend the tag set</li>
<li>written in CF</li>
<li>executed on CF server</li>
<li>used along side standards tags</li>
<li>locally available</li>
</ul>
<p><strong>Why use them?</strong></p>
<ul>
<li>code reuse</li>
<li>encapsulation</li>
<li>abstraction</li>
<li>simplification</li>
<li>customized control flow</li>
<li>packaging</li>
</ul>
<p><strong>What about CFC?</strong></p>
<ul>
<li>yes everything you can do everything in CFCs but sometimes cust tags can sometimes offer a more natural feeling</li>
</ul>
<p><strong>Basics</strong></p>
<ul>
<li>stored anywhere the server has access to</li>
<li>invoking: cf_, cfModule, cfImport</li>
<li>execution: open, close, self-close</li>
<li>scopes: attributes, thisTag, caller, variables</li>
<li>passing data to/from:</li>
</ul>
<p><strong>Gathering and consuming data</strong></p>
<ul>
<li>using custom tags as functional facades</li>
<li>implicit execution</li>
</ul>
<p><strong>Leverage Relative Addressing of Template</strong></p>
<ul>
<li>use custom tag as a proxy to CFC creation</li>
<li>CFC names as relative to tag proxy location</li>
</ul>
<p>Can be recursive!</p>
<p><strong>Examples</strong></p>
<p>regEx Loop  (cf_reLoop) &#8211; loop tag to easily access Java&#8217;s regular expression matching functionality (faster/more robust than CF)</p>
<p>template mailer (cf_mail) &#8211; tag to encapsulate passed in data into a template and then mailed</p>
<p>navigation/navigationItem &#8211; set of tags to create a navigation with as many items as needed. handles hover functionality. decouples where a link is going from how it works to get there makes it easier to change either property later.</p>
<ul>
<li>cfAssociate is used to pass attributes from parent into the child</li>
<li>cfExit method=&#8221;exittag&#8221; is used at the bottom to only let the tag be called once regardless of if it is a self-closed ta</li>
</ul>
<p>switchLoop &#8211; works like cfSwitch but allows for &#8220;resetting&#8221; of expression. allows for two different cases to be hit.</p>
<p>randomSwitch &#8211; works like cfSwitch but a random case is selected.</p>
<p>renderXml &#8211; recursive tag to loop through an XML document.</p>
<p><strong>Resources</strong></p>
<p><a href="http://www.bennadel.com/">http://www.bennadel.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericstoike.com/wp/2009/08/15/cfunites-notes-advanced-custom-tags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#cfunited Notes &#8211; &#8220;Create a Public Facing API&#8221;</title>
		<link>http://www.ericstoike.com/wp/2009/08/14/cfunited-notes-create-a-public-facing-api/</link>
		<comments>http://www.ericstoike.com/wp/2009/08/14/cfunited-notes-create-a-public-facing-api/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 19:59:36 +0000</pubDate>
		<dc:creator>cowboyEric</dc:creator>
				<category><![CDATA[#cfunited]]></category>
		<category><![CDATA[#cfunited2009]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://www.ericstoike.com/wp/?p=789</guid>
		<description><![CDATA[APIs &#8211; The Basics application programming interface 2 types &#8211; RESTful and RPC offers ability to share data and functionality centralize functionality Possible Problems poor planning can cause poor usability needs to be accessible across multiple langauges variable scope may not exist / be accurate documentation needs to be extensible security can be tested/attacked The [...]]]></description>
			<content:encoded><![CDATA[<p><strong>APIs &#8211; The Basics</strong></p>
<ul>
<li>application programming interface</li>
<li>2 types &#8211; RESTful and RPC</li>
<li>offers ability to share data and functionality</li>
<li>centralize functionality</li>
</ul>
<p><strong>Possible Problems</strong></p>
<ul>
<li>poor planning can cause poor usability</li>
<li>needs to be accessible across multiple langauges</li>
<li>variable scope may not exist / be accurate</li>
<li>documentation needs to be extensible</li>
<li>security can be tested/attacked</li>
</ul>
<p><strong>The biggest security threat to your API</strong></p>
<ul>
<li>you!</li>
</ul>
<p><strong>Documentation</strong></p>
<p>description, parameters, example call, example response, error code</p>
<p><strong>Great Examples</strong></p>
<p>twitter, flickr, digg, openOffice<strong> </strong></p>
<p><strong>Development Process of an API (ideal)</strong></p>
<ol>
<li>create use case</li>
<li>document</li>
<li>test documentation</li>
<li>code API</li>
<li>test</li>
<li>hack</li>
<li>go to 4</li>
</ol>
<p><strong>Creating a RESTful-ish API</strong></p>
<ul>
<li>URL parsing</li>
<li>request type parsing</li>
<li>XML responses</li>
<li>requires authentication</li>
<li>error handling</li>
</ul>
<p><strong>Resources</strong></p>
<p>InfoQ article &#8211; REST Intro &#8211; <a href="http://www.infoq.com/articles/rest-introduction">infoq.com/articles/rest-introduction</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericstoike.com/wp/2009/08/14/cfunited-notes-create-a-public-facing-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#cfunited Notes &#8211; &#8220;Extending CFBuilder w/ CFML&#8221;</title>
		<link>http://www.ericstoike.com/wp/2009/08/14/cfunited-notes-extending-cfbuilder-w-cfml/</link>
		<comments>http://www.ericstoike.com/wp/2009/08/14/cfunited-notes-extending-cfbuilder-w-cfml/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 16:18:59 +0000</pubDate>
		<dc:creator>cowboyEric</dc:creator>
				<category><![CDATA[#cfunited]]></category>
		<category><![CDATA[#cfunited2009]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[notes]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://www.ericstoike.com/wp/?p=785</guid>
		<description><![CDATA[http://labs.adobe.com/technologies/coldfusion9/ What can extensions do? Anything CF can! •    written w/ CFML and XML •    runs on a CF server Common Uses •    code generation •    framework scaffolding •    server management / probes •    code analysis •    reporting Add New Context Menus •    RDS View (databasees and tables) •    Outline View •    Resource View (projects [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.adobe.com/technologies/coldfusion9/">http://labs.adobe.com/technologies/coldfusion9/</a></p>
<p><strong>What can extensions do?</strong><br />
<strong>Anything CF can!</strong><br />
•    written w/ CFML and XML<br />
•    runs on a CF server<br />
<strong>Common Uses</strong><br />
•    code generation<br />
•    framework scaffolding<br />
•    server management / probes<br />
•    code analysis<br />
•    reporting<br />
Add New Context Menus<br />
•    RDS View (databasees and tables)<br />
•    Outline View<br />
•    Resource View (projects and files)<br />
Workspace Events<br />
<strong>Installing a CFBuilder Extension</strong><br />
Preferences -&gt; CF -&gt; Extensions<br />
Good practice to put extensions folder under CFIDE so they are separate from applications</p>
<p><strong>ide_config.xml</strong></p>
<ul>
<li>application details</li>
<li> extensions are a simple zip archive</li>
<li> optional collection of data during install</li>
<li> responding to workspace events &#8211; onProjectCreate</li>
<li> adding context menus</li>
<li> filter with regEx to optionally appear</li>
</ul>
<p><strong>Collecting User Input</strong><br />
static input w/ native eclipse controls<br />
<strong>types</strong></p>
<ul>
<li> string</li>
<li> dir</li>
<li> boolean</li>
<li> file</li>
<li> password</li>
<li> list</li>
</ul>
<p><strong>attributes</strong></p>
<ul>
<li> name</li>
<li> label</li>
<li> tooltip</li>
<li> required</li>
<li> default</li>
<li> checked</li>
<li> pattern</li>
<li> errorMessage</li>
<li> helpMessage</li>
</ul>
<p><strong>keywords for default values</strong><br />
{$projectLocation}</p>
<ul>
<li> projectLocation</li>
<li> projectName</li>
<li> serverHome</li>
<li> wwwroot</li>
</ul>
<p><strong>Handler Communication</strong></p>
<ul>
<li>sends info via XML</li>
</ul>
<p><strong>Dynamic Input</strong></p>
<ul>
<li>XML, HTML, AJAX, Flex, Eclipse SWT</li>
<li>showResponse=&#8221;yes&#8221;</li>
<li>response can be HTML or XML</li>
</ul>
<p><strong>Tips</strong></p>
<ul>
<li>You can reload from prefs if you make changes to the xml</li>
<li>Errors output to Eclipse logs (windows &gt; show view &gt; other &gt; general &gt; error log)</li>
<li>You can also write your own log with cfLog</li>
<li>Use CF to generate CF (use generated code as &lt;:cf and rip out the :&#8217;s later)</li>
<li>Adam&#8217;s Ext-Util.cfc</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ericstoike.com/wp/2009/08/14/cfunited-notes-extending-cfbuilder-w-cfml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#cfunited Notes &#8211; &#8220;Facebook applications with a CF Backend&#8221;</title>
		<link>http://www.ericstoike.com/wp/2009/08/14/cfunited-notes-facebook-applications-with-a-cf-backend/</link>
		<comments>http://www.ericstoike.com/wp/2009/08/14/cfunited-notes-facebook-applications-with-a-cf-backend/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 14:03:58 +0000</pubDate>
		<dc:creator>cowboyEric</dc:creator>
				<category><![CDATA[#cfunited]]></category>
		<category><![CDATA[#cfunited2009]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[notes]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://www.ericstoike.com/wp/?p=782</guid>
		<description><![CDATA[Workings of a Facebook App Facebook -&#62; your website -&#62; Facebook API -&#62; your website -&#62; Facebook They scan for &#8220;bad&#8221; stuff before displaying it. Good though because its all secure for you. Setup name your application (read the terms &#8211; good bathroom reading) make note of your API key and secret (needed for all [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Workings of a Facebook App</strong></p>
<ul>
<li>Facebook -&gt; your website -&gt; Facebook API -&gt; your website -&gt; Facebook</li>
<li>They scan for &#8220;bad&#8221; stuff before displaying it.</li>
<li>Good though because its all secure for you.</li>
</ul>
<p><strong>Setup</strong></p>
<ol>
<li>name your application (read the terms &#8211; good bathroom reading)</li>
<li>make note of your API key and secret (needed for all API calls)</li>
<li>setup a facebook URL (unique) and the callback URL (your server and should be directory only as they will append different files)</li>
<li>settings page to set sandbox, app type, sms integration and iphone</li>
</ol>
<p><strong>1st Roadblock</strong></p>
<ul>
<li>validation is carried out on form fields that have specified names (pre cf9)</li>
<li>fb_sig is in the wrong format and will never validate. set to another field and clear that field.</li>
</ul>
<p><strong>A Look at FBML</strong></p>
<ul>
<li>tag system that handles output of data</li>
<li>tags display data just as the website does</li>
<li>tags are mostly used for UI/layout</li>
<li>conditional logic tags do exist (if/else)</li>
</ul>
<p><strong>Digging into the API</strong></p>
<ul>
<li>RESTful-ish API</li>
<li>dot delimited methods</li>
<li>methods are grouped in actions</li>
<li>returns XML/JSON/PHP</li>
<li>access to FQL (SQL-like)</li>
<li>API Key, Call Id, MD5 Hash of secret and Version needed on EVERY request</li>
</ul>
<p>CF is your glue</p>
<ul>
<li>Use API to get data</li>
<li>parse and loop over data with CF</li>
<li>output using FBML</li>
<li>store data associated with uid w/ CF + SQL</li>
<li>do not use cfLocation but rather fb:redirect and you can only redirect to FB</li>
</ul>
<p><strong>? Can you limit who can add your applciation by FB network?</strong></p>
<p>After they allow it, you would have access to all that information. If they are not in the network that you wanted then you could just show a denied message or there may be API functionality to kick them oput of the application.</p>
<p><a href="http://www.simonfree.com/presentations">simonfree.com/presentations</a></p>
<p><a href="http://www.twitter.com/simonfree">twitter.com/simonfree</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericstoike.com/wp/2009/08/14/cfunited-notes-facebook-applications-with-a-cf-backend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#360Flex Notes &#8211; &#8220;Flex, CF, and LCDS Magic&#8221; &#8211; Nick Kwaitkowski</title>
		<link>http://www.ericstoike.com/wp/2009/05/20/360flex-notes-flex-cf-and-lcds-magic-nick-kwaitkowski/</link>
		<comments>http://www.ericstoike.com/wp/2009/05/20/360flex-notes-flex-cf-and-lcds-magic-nick-kwaitkowski/#comments</comments>
		<pubDate>Wed, 20 May 2009 21:03:46 +0000</pubDate>
		<dc:creator>cowboyEric</dc:creator>
				<category><![CDATA[360flex]]></category>
		<category><![CDATA[cf]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[lcds]]></category>
		<category><![CDATA[magic]]></category>

		<guid isPermaLink="false">http://www.ericstoike.com/wp/?p=738</guid>
		<description><![CDATA[Magic you say? 4 lines of code to get data from app server to clients CF &#8211;&#62; Adobe CF 7+ works but 8+ has LCDS baked in. No Railo/BlueDragon/etc. LCDS &#8211;&#62; middleware app designed to move data Flex &#8211;&#62; 2.0.1+ Data &#8211;&#62; any serializable data including DB, LDAP, email, FTP, mapping software, web services, etc. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Magic you say?</strong><br />
4 lines of code to get data from app server to clients</p>
<p>CF &#8211;&gt; Adobe CF 7+ works but 8+ has LCDS baked in. No Railo/BlueDragon/etc.<br />
LCDS &#8211;&gt; middleware app designed to move data<br />
Flex &#8211;&gt; 2.0.1+<br />
Data &#8211;&gt; any serializable data including DB, LDAP, email, FTP, mapping software, web services, etc.</p>
<p>LCDS &#8211; expensive? yes and no.<br />
BlazeDS is light, open source version without data management<br />
LCDS ES &#8211; J2EE app that Adobe sells that includes all the features of BlazeDS, plus DM, NIO messaging, etc.<br />
LCDS ES Single CPU License (was Express Edition) &#8211; free version that works on 1 CPU and will not cluster. Can be used for dev/testing/production environments. based into CF8 download. MSU has done 3-400 clients on this free version.</p>
<p>Flex SDK &#8220;Next&#8221; will be offering client side data management. Why should I care?<br />
great for small data but not much else.<br />
no data sync, data caching, or conflict resolution</p>
<p><strong>Data Management</strong><br />
pass data to LCDS and let it handle passing it to the client. You can control how it passes including pagination and data sync.<br />
LCDS assumes its the only one interacting with the DB.</p>
<p><strong>Data Messaging</strong><br />
allows flex clients to communicate with each other without tying up resources on the app server<br />
over TCP, HTTP polling, etc.</p>
<p><strong>Data Proxying</strong><br />
you can proxy your web sevice or remoting calls through the LCDS to help get around restrictions in firewalls and policies</p>
<p><strong>Example of data management</strong><br />
2 clients. change data on one and see the changes on another. reduce the chances of clients having conflicting data. Revert is built-in with hardly any code.</p>
<p><strong>Coding the Flex Side</strong><br />
create a new collection to store the data<br />
create a value object so the data serializes properly<br />
utilize the DataService MXML tag and call the fill function</p>
<p><strong>Why it works?</strong><br />
data is packaged up into value objects or packages of data<br />
each VO is tracked separately as to who is viewing, editing, etc.<br />
users then subscribe to a set of data<br />
LCDS will &#8216;listen&#8217; to any changes made to the data in the client<br />
if the collection that holds the data is changed, LCDS will take change, change VO in memory, send change to app server and update clients<br />
when an update is sent to other clients, it will check its local copy to make sure it hasn&#8217;t changed. if it has, it will issue &#8220;conflict&#8221; event and allow the client to choose.<br />
on the client, 95% of work is handled by collection class<br />
handles updating LCDS with changes and notifying other visual components of the change<br />
when a dataGrid broadcast the change event, the collection hears, updates its own data and passes on the change.</p>
<p><strong>Blackbox of LCDS</strong><br />
config files in wwwroot<br />
master is services-config.xml<br />
other files include channel info (services), messaging config (messaging), DM (data-management) and flash remoting (remoting)</p>
<p><strong>Channels</strong><br />
Default Channels:<br />
my-cfamf &#8211;&gt; does AMF endpoints. binary over HTTP. firewalls might break it but normally a good way to go.<br />
cf-polling-amf &#8211;&gt; works well with nasty firewall. every X seconds ask server if there is new data<br />
air-rtmp (Nick will provide downloads) &#8211;&gt; direct connection through tcp socket which stays open. offloads some i/o from your application server. port 2050<br />
cf-rtmp &#8211;&gt; port 2048<br />
port range recommendation: typically stay around 2048. that is registered by Adobe for RTMP. above 1024 because below that is well defined ports. it will all depend on the client firewalls.</p>
<p><strong>Destinations</strong><br />
a destination needs an endpoint which is used to encapsulate your data based on server.<br />
multiple channels are allowed as fall backs. if the first is not available, the next in the list is used after a &#8220;reasonable amount of time&#8221;. limit of 16 channels.</p>
<p><strong>Properties</strong><br />
component: cfc that does the data handling<br />
scope: how long the data lives<br />
access: remote (default) corresponds to the access of the cfc<br />
property-case: change the case of functions/variables<br />
metadata: identity &#8211; normally ID of the table ie PARKNAME, query-row-type &#8211; path to value object</p>
<p>Documentation in default file contains all the options/values.</p>
<p><strong>Lots of channel options</strong><br />
AMF typically run over HTTP. Tend to be slower or designed for one time polls and can be combined with HTTPS.<br />
RTMP typically run over 2048. real-time, quick, easy but firewalls have been known to block on occasion.</p>
<p>Don&#8217;t worry about selecting a single channel. Normally RTMP and then polling is a good option.<br />
Each destination can define channels which it wants to use<br />
Each destination is just a name but must be unique to the server.</p>
<p><strong>CF Fun!</strong><br />
final part of this puzzle is the CF side. could be any language by why? <img src='http://www.ericstoike.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
traditional CRUD<br />
fill() &#8211; think of this as the get all<br />
get() &#8211; this is to get a single item<br />
sync() this performs create, delete, and update<br />
count() &#8211; this needs to return the number of records for pagination, finding updates, etc</p>
<p><strong>Unsolicited Updates</strong><br />
one of the coolest features is the fact that you can push unsolicited updates to clients<br />
examples: non-flex client update data, customer buys something from your store, or new email comes in</p>
<p><strong>Creating unsolicited updates</strong><br />
3 easy steps:<br />
create event gateway of type &#8220;DateManagement&#8221;<br />
create some sort of VO<br />
pass this VO to the event gateway &#8211; the update will be pushed to your clients.</p>
<p>With FB/RDS, there is a wizard for creating the value object/cfc. Flex 4 will include more wizards.</p>
<p><strong>Examples of uses:</strong><br />
CRUD for DB<br />
Directory watcher<br />
collaborative doc management<br />
email client<br />
collaborative GIS app</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericstoike.com/wp/2009/05/20/360flex-notes-flex-cf-and-lcds-magic-nick-kwaitkowski/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#360Flex Notes &#8211; &#8220;Building real time applications with Blaze DS/LCDS&#8221; &#8211; Dan Blackman</title>
		<link>http://www.ericstoike.com/wp/2009/05/20/360flex-notes-building-real-time-applications-with-blaze-dslcds-dan-blackman/</link>
		<comments>http://www.ericstoike.com/wp/2009/05/20/360flex-notes-building-real-time-applications-with-blaze-dslcds-dan-blackman/#comments</comments>
		<pubDate>Wed, 20 May 2009 19:57:13 +0000</pubDate>
		<dc:creator>cowboyEric</dc:creator>
				<category><![CDATA[360flex]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[cf]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[lcds]]></category>
		<category><![CDATA[note]]></category>
		<category><![CDATA[notes]]></category>

		<guid isPermaLink="false">http://www.ericstoike.com/wp/?p=733</guid>
		<description><![CDATA[The why?!? CF request/response applications Flex RIA persisted data is not refreshed automatically stateful approach to managing data &#8211; no more sessions refreshed through manual client interactions or AS Flex Real-time Apps persisted data is refreshed via interactions w/ server stateful approach w/ server side sync refreshed through polling, long polling, or RTMP data management [...]]]></description>
			<content:encoded><![CDATA[<p><strong>The why?!?</strong><br />
CF request/response applications<br />
<strong>Flex RIA</strong><br />
persisted data is not refreshed automatically<br />
stateful approach to managing data &#8211; no more sessions<br />
refreshed through manual client interactions or AS<br />
<strong>Flex Real-time Apps</strong><br />
persisted data is refreshed via interactions w/ server<br />
stateful approach w/ server side sync<br />
refreshed through polling, long polling, or RTMP<br />
data management service &#8211; life cycle service &#8211; provides data sync between clients</p>
<p><strong>Intro to LCDS</strong><br />
consists of: flex messaging service, flex data management, flex proxy service, and remote object service</p>
<p><strong>Push vs Pull</strong><br />
pull is client asks server for data<br />
push is server actually pushing data to client</p>
<p><strong>Types<br />
Simple AMF</strong> &#8211; stateful approach<br />
<strong>RTMP</strong> &#8211; real time messaging protocol<br />
maintains persistent connection<br />
allows real time<br />
uses java-nio facilities<br />
<strong>Polling</strong><br />
flex client sends requests for messages periodically</p>
<p><strong>Configuring channel/destination</strong><br />
-CFGateway: messages sent between cf8/flex<br />
-JMS Adapter: allows to use both JMS/Flex clients to communicate<br />
-AS Adapter: flex default allows only flex clients to participate in communication</p>
<p><strong>Channels</strong><br />
my-cf-amf<br />
cf-polling-amf<br />
cf-long-polling-amf<br />
cf-streaming-amf<br />
cf-rtmp</p>
<p>Examples using LCDS (chat) and then CFGateway (Facebook notifications)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ericstoike.com/wp/2009/05/20/360flex-notes-building-real-time-applications-with-blaze-dslcds-dan-blackman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.319 seconds -->

