<?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:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>Larry Ullman&#039;s Blog &#187; Flex</title>
	<atom:link href="http://blog.dmcinsights.com/category/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dmcinsights.com</link>
	<description>flotsam and jetsam abounds</description>
	<lastBuildDate>Tue, 27 Jul 2010 16:27:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Adobe Flex 5 Adding Mobile Features</title>
		<link>http://blog.dmcinsights.com/2010/07/10/adobe-flex-5-adding-mobile-features/</link>
		<comments>http://blog.dmcinsights.com/2010/07/10/adobe-flex-5-adding-mobile-features/#comments</comments>
		<pubDate>Sat, 10 Jul 2010 06:49:26 +0000</pubDate>
		<dc:creator>Larry</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://blog.dmcinsights.com/?p=1170</guid>
		<description><![CDATA[Somewhat ironically, considering the recent spat between Adobe and Apple, the next major version of Flex, codenamed &#8220;Hero&#8221;, will have specific support for developing Flash applications intended for mobile devices. Accomplishing this involves both adding new components and skins as well as making some modifications to existing components. Although Flash content can already run on [...]]]></description>
			<content:encoded><![CDATA[<p>Somewhat ironically, considering the recent spat between Adobe and Apple, the next major version of Flex, codenamed &#8220;Hero&#8221;, will have specific support for developing Flash applications intended for mobile devices. Accomplishing this involves both adding new components and skins as well as making some modifications to existing components. Although Flash content can already run on some mobile devices, the smaller screen sizes can have unfortunate consequences. This new version of Flex, due out in beta version later this year, will address that issue by allowing for smarter scaling of the application&#8217;s size.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmcinsights.com/2010/07/10/adobe-flex-5-adding-mobile-features/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Using Flash with Yii</title>
		<link>http://blog.dmcinsights.com/2010/07/08/using-flash-with-yii/</link>
		<comments>http://blog.dmcinsights.com/2010/07/08/using-flash-with-yii/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 06:38:31 +0000</pubDate>
		<dc:creator>Larry</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.dmcinsights.com/?p=1151</guid>
		<description><![CDATA[On my most recent Yii-based Web site, I decided to use a custom Flash application for part of the back-end administration of the site. The justification was simple: what the administrator needed to do was a bit complicated; lots of information had to be available but the user interface had to remain uncluttered and natural. [...]]]></description>
			<content:encoded><![CDATA[<p>On my most recent <a href="http://www.yiiframework.com">Yii</a>-based Web site, I decided to use a custom Flash application for part of the back-end administration of the site. The justification was simple: what the administrator needed to do was a bit complicated; lots of information had to be available but the user interface had to remain uncluttered and natural. The specific Web site provided a way to create and take online quizzes. In a separate process, the administrator could add and edit questions. In the Flash-based process, the administrator could associate any number of questions with a quiz (actually, a pool of questions would be associated with a quiz and X number of random questions would be pulled from that pool). The main issue, from a user interface perspective, was how to display the questions in an intelligent way. With other examples, I might create a form for adding or editing quizzes and within that form, the questions would be listed within a dropdown menu (actually a SELECT menu that displayed and allowed for the selection of multiple options). However, with this particular example, there was no good way to display the questions in a SELECT menu. Each question had a unique primary key, of course, but that&#8217;s not very useful to the administrator. The questions did not have unique names (what name do you give a question?) and the best indicator of a question was its prompt, which would be HTML, possibly containing images and videos. So, again, how do I display possibly hundreds of questions in a meaningful way?</p>
<p>My solution was to show the list of questions by number and, when the admin clicks on a specific question, they&#8217;d see a preview of that question&#8217;s prompt (i.e., the HTML) in a separate interface. Now I&#8217;ve got three areas in my UI: one for adding or editing the other quiz attributes, one for listing every question, and a third for displaying the particulars of a single question. Given all this, I thought having the admin drag the questions from one area to another would be the best way to associate a question with a quiz. I could have done all this using <a href="http://www.jquery.com">jQuery</a> (the JavaScript framework Yii uses by default), but that would have taken me days to figure out how to use jQuery in this way. On the other hand, I knew I could develop this using <a href="http://www.adobe.com/go/flex">Flex</a> (a framework for creating Flash applications) in no time. I just didn&#8217;t know how to get Yii and Flash to play ball. It turns out not to be that hard&#8230;<span id="more-1151"></span></p>
<p>From a client-server perspective, the application required three services:</p>
<ul>
<li>The client fetches a list of questions from the server.</li>
<li>The client fetches a list of quizzes from the server (so that the user can update existing quizzes).</li>
<li>The client sends to the server a quiz-questions combination to be stored in the database.</li>
</ul>
<p>To keep things relatively simple, I decided to go with basic <strong>HTTPService</strong> calls rather than AMF (Action Message Format). AMF is better and preferred in many ways, but it introduces some logistical issues I wasn&#8217;t prepared to deal with yet. So the first thing I had to do was create Controller and View code for returning lists of information (the Models were already defined and, as should be the case, were untouched by this new functionality). In my QuestionController file, I created this method:</p>
<pre>public function actionXml() {
    $this-&gt;renderPartial('xml', array('models'=&gt;Question::model()-&gt;findAll()));
}</pre>
<p>All this function does is render the <em>xml</em> View, passing to it all of the <strong>Question</strong> Models. The View itself has to output XML data. For that reason, I use <strong>renderPartial()</strong> instead of <strong>render()</strong>, as I just want the individual View file to be rendered without the rest of the layout (i.e., without all the HTML, CSS, and JavaScript). I&#8217;ve seen some examples online where people just outputted the XML from within the Controller, but you really shouldn&#8217;t do that as it breaks the MVC architecture.</p>
<p>The <strong>xml.php</strong> View file looks like this:</p>
<pre>&lt;?php header("Content-Type: text/xml");
echo '&lt;?xml version="1.0" encoding="utf-8" ?&gt;'; ?&gt;
&lt;questions&gt;
&lt;?php foreach ($models as $model):?&gt;
    &lt;question&gt;
        &lt;id&gt;&lt;?php echo $model-&gt;id; ?&gt;&lt;/id&gt;
        &lt;prompt&gt;&lt;![CDATA[&lt;?php echo $model-&gt;prompt; ?&gt;]]&lt;/prompt&gt;
        &lt;answer1&gt;&lt;?php echo $model-&gt;answer1; ?&gt;&lt;/answer1&gt;
    &lt;/question&gt;
&lt;?php endforeach; ?&gt;
&lt;/questions&gt;</pre>
<p>The first line sends a <em>Content-Type</em> header to tell the client that the content is XML. Then the XML declaration is printed. Then the opening root tag is created, called <em>questions</em>. Next a <strong>foreach</strong> loop goes through each received Model. Within the loop I print whatever content needs to be sent to the client. This would be the question&#8217;s ID, its prompt, its possibly answers, etc. If the content might include any characters that are problematic in XML, including the ampersand, I would use this syntax, as in the <em>prompt</em> value:</p>
<pre>&lt;something&gt;&lt;![CDATA[&lt;?php echo $model-&gt;something; ?&gt;]]&gt;&lt;/something&gt;
</pre>
<p>The <strong>CDATA</strong> tags prevent text from being parsed as XML, thereby preventing problems with certain characters.</p>
<p>After I wrote this code for both of the services (the XML for the quizzes is quite similar), I tested the services in my Web browser by just going to <strong>http://<em>hostname</em>/question/xml </strong>and <strong>http://<em>hostname</em>/quiz/xml</strong>. By using a browser that understands XML, I can see the proper output before attempting to use my Flash client to connect to the service.</p>
<p>For the third service, data will be posted to the Yii-based site. In my <strong>QuizController</strong> file, I created a new method for this:</p>
<pre>public function actionFlash() {
}</pre>
<p>What this method really does is the same thing as the auto-generated <strong>actionUpdate()</strong> and <strong>actionCreate()</strong> methods, but some of the code will be different based upon how I&#8217;m sending data here from the Flash client, so I decided to create a new method instead. All this method needs to do is receive the data, associate it with a <strong>Quiz</strong> Model, then save the Model and report upon the results. One complication, however, is that when Yii creates a form for a Model, it&#8217;ll use names such as <strong>Quiz['prompt']</strong>. I didn&#8217;t know of an easy way to accomplish this when sending the data from Flash, so I just modified how the creation and updating happens. The first thing the method does is confirm that all of the values are received. In this hypothetical example, the values should be a quiz ID, a quiz name, and a list of questions associated with that quiz. So the method starts off with:</p>
<pre>if (isset($_POST['id'], $_POST['name'], $_POST['questions'])) {</pre>
<p>Next, the method checks if this is a new quiz (the Flash application allows for the creation of new quizzes) or an existing one. A new Model variable or existing Model is created depending upon this:</p>
<pre>if ($_POST['id'] == 0) {
    $model=new Quiz;
} else {
    $model=Quiz::model()-&gt;findbyPk($_POST['id']);
}</pre>
<p>Next, associate the incoming quiz name with the Model:</p>
<pre>$model-&gt;name = $_POST['name'];</pre>
<p>You would do this for any Model attribute that might have changed or be created for the first time. When using just Yii, the equivalent takes place using the Model&#8217;s attributes:</p>
<pre>$model-&gt;attributes=$_POST['Quiz']; // Or whatever Model.</pre>
<p>Then you save the Model:</p>
<pre>if ($model-&gt;save()) {</pre>
<p>This line will only work if all of the Model&#8217;s rules (i.e., its validations) are passed, so you don&#8217;t have to worry about invalid data getting into the system. Still, validation in the Flash client is a good idea, too.</p>
<p>The rest of the method just echo&#8217;s out messages based upon what happened:</p>
<ul>
<li><em>The quiz has been created.</em></li>
<li><em>The quiz has been updated.</em></li>
<li><em>The quiz could not be updated because of invalid data.</em></li>
<li>And so forth.</li>
</ul>
<p>There&#8217;s a bit more code in it as I the database has a <strong>QuizzesQuestions</strong> table which acts as an intermediary for the many-to-many relationship between the quizzes and the questions. (If you want to see the whole method, let me know.) This service, when called from the Flash client, will return a plain text message, which is why I just have the method echo out simple messages. Technically this also breaks the MVC architecture, but I didn&#8217;t feel like creating a new file that just said <em>The quiz has been created.</em></p>
<p>At this point I&#8217;ve created three Controller methods that send and receive the necessary data. Next up, I created the Flash client using the Flex framework and the Flash Builder IDE. The client interface was pretty basic Flex stuff. I created a <strong>DataGrid</strong> for displaying the quizzes. When a quiz is selected in the <strong>DataGrid</strong>, its particulars are displayed and become editable in a form. The form includes a <strong>List</strong> into which questions can be dropped. The existing questions are displayed in a separate <strong>List</strong>. When a question is selected in that <strong>List</strong>, its particulars are displayed in a separate <strong>Panel</strong>.</p>
<p>When the application first loads, the two XML services are called to populate the quiz <strong>DataGrid</strong> and the questions <strong>List</strong>. When the quiz form Button is clicked, the <strong>actionFlash()</strong> service is invoked, saving or creating the quiz accordingly. (The Flex side of this only took me an afternoon to complete, by the way.)</p>
<p>The most interesting thing about all this was tapping into Yii&#8217;s access control rules. The way the entire Web site is written, only logged-in administrators can do things such as create or update quizzes. So how do I ensure that only logged-in administrators can use the Flash application? Tapping into Yii&#8217;s authentication from Flash isn&#8217;t easy but it turns out not to be necessary. To start, in the <strong>QuizController</strong> file, I restrict access to the Flash application&#8217;s View file to only logged-in administrators. This, though, does not prevent the Flash application from doing anything (in theory, someone could load the Flash application separately, if they knew of its existence). What I do as well is restrict access to the XML and Flash actions (in the appropriate Controller files) to only logged-in administrators. This will also automatically prevent the Flash application, if being run by a non-administrator somehow, from accessing those services. Here&#8217;s why this works: the Flash application is running within a Yii-based page, so any request that the Flash application makes is the same as any request the browser itself makes (this is also true for Ajax requests). So Yii-related cookies that are stored in the browser after the user logs in are also passed along as part of the request. Tada! By just using the access control rules in the Controller, the Flash application can only invoke those services if the user is logged in as an administrator. Very simple! The only catch was that when developing the Flex application in Flash Builder, I wouldn&#8217;t be running and testing the Flash application as a logged-in administrator, so I had to make the Controller&#8217;s actions public during that time.</p>
<p>So there&#8217;s that experience, then! I was pleased with how easy this was to pull off (i.e., I was pleased how little thinking I had to do to make this work) and my client was pleased with the result. I hope this helps you in your Flash+Yii projects. Thanks for reading and please let me know if you have any questions or comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmcinsights.com/2010/07/08/using-flash-with-yii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Five Flex/Flash Builder Tips in Five Days</title>
		<link>http://blog.dmcinsights.com/2010/06/24/five-flexflash-builder-tips-in-five-days/</link>
		<comments>http://blog.dmcinsights.com/2010/06/24/five-flexflash-builder-tips-in-five-days/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 14:53:34 +0000</pubDate>
		<dc:creator>Larry</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://blog.dmcinsights.com/?p=1138</guid>
		<description><![CDATA[Peachpit Press, on their Web site, is in the process of publishing two series of “Five Tips in Five Days” blog posts that I have written. One is on the Flex 4 framework and the other is on the Flash Builder IDE. As of this writing, nine of the ten posts have gone live with [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.peachpit.com/">Peachpit  Press</a>, on their Web site, is in the process of publishing two  series of “Five Tips in Five Days” blog posts that I have written. One  is on the Flex 4 framework and the other is on the Flash Builder IDE. As  of this writing, nine of the ten posts have gone live with the other one  expected tomorrow. All of the posts are written for  those with an understanding of Flex 4 and Flash Builder, respectively,  highlighting new or less-known features and concepts. But even if you  aren&#8217;t familiar with either, you may want to take a gander at them to  get a sense of what Flex 4 and Flash Builder are capable of doing. The  best way to access them is through <a href="http://www.peachpit.com/blogs/author.aspx?a=2a14d669-06f6-48cf-a5b8-907169808b9f">my  reference page</a> at Peachpit&#8217;s site.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmcinsights.com/2010/06/24/five-flexflash-builder-tips-in-five-days/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>&#8220;Effortless Flex 4 Development&#8221; Released!</title>
		<link>http://blog.dmcinsights.com/2010/06/22/effortless-flex-4-development-released/</link>
		<comments>http://blog.dmcinsights.com/2010/06/22/effortless-flex-4-development-released/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 22:29:49 +0000</pubDate>
		<dc:creator>Larry</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[book]]></category>

		<guid isPermaLink="false">http://blog.dmcinsights.com/?p=1136</guid>
		<description><![CDATA[I am very pleased to announce that my latest book, &#8220;Effortless Flex 4 Development&#8221;, came out today. Well, kind of. I received my copies today, which means that the book does exist in physical format, although it may be a couple/few days before it&#8217;s on bookshelves. Amazon has it listed as being available on July [...]]]></description>
			<content:encoded><![CDATA[<p>I am very pleased to announce that my latest book, &#8220;Effortless Flex 4 Development&#8221;, came out today. Well, kind of. I received my copies today, which means that the book does exist in physical format, although it may be a couple/few days before it&#8217;s on bookshelves. Amazon has it listed as being available on July 5, 2010 and <a href="http://www.amazon.com/Effortless-Flex-Development-Larry-Ullman/dp/0321705947/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1277245626&amp;sr=1-1">currently sells it for $29.69</a> (the MSRP is $44.99). I will also be giving away a few copies to people <a href="http://www.dmcinsights.com/lists/">subscribed to my newsletter</a>.</p>
<p>As always, my thanks to those interested in my work!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmcinsights.com/2010/06/22/effortless-flex-4-development-released/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Second Excerpt from &#8220;Effortless Flex 4 Development&#8221; Posted Online</title>
		<link>http://blog.dmcinsights.com/2010/05/13/second-excerpt-from-effortless-flex-4-development-posted-online/</link>
		<comments>http://blog.dmcinsights.com/2010/05/13/second-excerpt-from-effortless-flex-4-development-posted-online/#comments</comments>
		<pubDate>Thu, 13 May 2010 06:07:19 +0000</pubDate>
		<dc:creator>Larry</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://blog.dmcinsights.com/?p=1051</guid>
		<description><![CDATA[Peachpit Press, publisher of my forthcoming &#8220;Effortless Flex 4 Development&#8221; book, has published another excerpt of the book online, free for anyone to read. (Technically New Riders is the publisher, but New Riders is owned by Peachpit.) This article represents a few pages from Chapter 4 of the book, &#8220;Event Management&#8221;. It follows the previous [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.peachpit.com">Peachpit Press</a>, publisher of my forthcoming &#8220;Effortless Flex 4 Development&#8221; book, has <a href="http://www.peachpit.com/articles/article.aspx?p=1577444">published another excerpt of the book online</a>, free for anyone to read. (Technically New Riders is the publisher, but New Riders is owned by Peachpit.) This article represents a few pages from Chapter 4 of the book, &#8220;Event Management&#8221;. It follows the <a href="http://www.peachpit.com/articles/article.aspx?p=1577443">previous excerpt</a> (also from Chapter 4), which you should probably read first if you haven&#8217;t. The first excerpt largely discusses event handling theory; in this excerpt you&#8217;ll see how to turn that theory into actual code. Even if you don&#8217;t yet know <a href="http://www.adobe.com/go/flex">Flex</a> and ActionScript, you should still be able to follow along. Most importantly, Flex is largely an event-driven approach to application development (conversely, Flash Professional is primarily a timeline-driven approach), so this section is really a key insight into what it&#8217;s like to use Flex.</p>
<p>I&#8217;m just about to do two &#8220;5 Tips in 5 Days&#8221; blog posts for Peachpit&#8217;s site. One will be specifically on the Flex 4 framework and the other will be on <a href="http://www.adobe.com/go/flashbuilder">Flash Builder</a>. Flash Builder, in case you&#8217;re not familiar with it, used to be called Flex Builder and is just a commercial IDE for developing using Flex. You don&#8217;t have to use Flash Builder as the Flex 4 framework and its SDK are available for free, but it does ease the process significantly. The book does not assume you&#8217;re using Flash Builder, either. There are specific instructions for how to create Flex applications using a text editor and the command-line IDE, but there are also areas that cover how you would do X or Y using Flash Builder. Most of the book focuses on the Flex framework, so it doesn&#8217;t matter what development tools you&#8217;re using.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmcinsights.com/2010/05/13/second-excerpt-from-effortless-flex-4-development-posted-online/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>First Draft of &#8220;Effortless Flex 4 Development&#8221; Book Complete!</title>
		<link>http://blog.dmcinsights.com/2010/05/11/first-draft-of-effortless-flex-4-development-book-complete/</link>
		<comments>http://blog.dmcinsights.com/2010/05/11/first-draft-of-effortless-flex-4-development-book-complete/#comments</comments>
		<pubDate>Wed, 12 May 2010 01:00:43 +0000</pubDate>
		<dc:creator>Larry</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://blog.dmcinsights.com/?p=1046</guid>
		<description><![CDATA[I&#8217;m pleased to say that the first draft of my latest book, &#8220;Effortless Flex 4 Development&#8221;, is now complete. In fact, I&#8217;ve already done the rewrites on half the book and should complete those this week. The final table of contents is below. The table lists all of the top level sections, but doesn&#8217;t reflect [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to say that the first draft of my latest book, &#8220;Effortless Flex 4 Development&#8221;, is now complete. In fact, I&#8217;ve already done the rewrites on half the book and should complete those this week. The final table of contents is below. The table lists all of the top level sections, but doesn&#8217;t reflect specifics covered in subsections or addressed in sidebars. There are a couple of minor topics that I wanted to get in there if there was room, such as effects, and I&#8217;ll write those up in this blog instead.<span id="more-1046"></span></p>
<ul>
<li><span class="title">Introduction</span></li>
<hr />
<li><strong>Part 1: </strong><span class="title">The Fundamentals</span><br />
<hr /></li>
<li><strong>Chapter 1: </strong><span class="title">Building Flex Applications</span>
<ul>
<li>A Survey of the Land</li>
<li>Basic MXML</li>
<li>Using Flash Builder</li>
<li>A Cheaper, Slower Alternative</li>
<li>Creating Desktop Applications</li>
<li>Getting Help</li>
</ul>
</li>
<li><strong>Chapter 2: </strong><span class="title">User Interface Basics </span>
<ul>
<li>Things to Know</li>
<li>Customizing the Application</li>
<li>Simple Controls</li>
<li>Controlling the Layout</li>
<li>Creating Forms</li>
<li>Putting It All Together</li>
</ul>
</li>
<li><strong>Chapter 3: </strong><span class="title">The ActionScript You Need to Know </span>
<ul>
<li>Data Binding</li>
<li>OOP Fundamentals</li>
<li>ActionScript and MXML</li>
<li>ActionScript Comments</li>
<li>Simple Data Types</li>
<li>Creating Functions</li>
<li>Looking Ahead: the Click Event</li>
<li>Control Structures</li>
<li>Arrays</li>
<li>Loops</li>
<li>Manipulating Components</li>
<li>Debugging Techniques</li>
</ul>
</li>
<li><strong>Chapter 4: </strong><span class="title">Event Management </span>
<ul>
<li>Fundamental Concepts</li>
<li>Inline Event Handling</li>
<li>Functions as Event Handlers</li>
<li>System Events</li>
<li>User Events</li>
<li>Managing Event Handlers with ActionScript</li>
<li>Creating a Hash</li>
<li>Common Hash Methods</li>
</ul>
</li>
<hr />
<li><strong>Part 2: </strong><span class="title">Data and Communications</span><br />
<hr /></li>
<li><strong>Chapter 5: </strong><span class="title">Displaying Data </span>
<ul>
<li>Representing Data</li>
<li>Providing Data to Components</li>
<li>ComboBox and DropDownList Components</li>
<li>The List Components</li>
<li>The DataGrid Component</li>
<li>The AdvancedDataGrid Component</li>
</ul>
</li>
<li><strong>Chapter 6: </strong><span class="title">Formatting, Rendering, and Validating Data </span>
<ul>
<li>Formatting Data</li>
<li>Using Label Functions</li>
<li>Item Renderers</li>
<li>The DataGroup Component</li>
<li>Customizing the AdvancedDataGrid</li>
<li>Validating Data</li>
<li>Changing the Editor</li>
</ul>
</li>
<li><strong>Chapter 7: </strong><span class="title">Common Data Formats </span>
<ul>
<li>The Client-Server Relationship</li>
<li>Four Data Formats</li>
<li>Data Formats in PHP</li>
<li>Data Types in ActionScript</li>
<li>Debugging</li>
</ul>
</li>
<li><strong>Chapter 8: </strong><span class="title">Using Simple Services </span>
<ul>
<li>Flash Security Model</li>
<li>Setting Up a Local Environment</li>
<li>Creating the PHP Scripts</li>
<li>Flex Networking Components</li>
<li>The HTTPService Component</li>
<li>Sending Data to a Server</li>
<li>Flash Builder Data Wizards</li>
<li>Using the Network Monitor</li>
</ul>
</li>
<li><strong>Chapter 9: </strong><span class="title">Using Complex Services </span>
<ul>
<li>Connecting to Web Services</li>
<li>Setting Up a Local Environment</li>
<li>Using RPC</li>
<li>Data Management in Flash Builder</li>
<li>Paginating Results</li>
<li>Creating Value Objects</li>
<li>Adding Authentication</li>
</ul>
</li>
<hr />
<li><strong>Part 3: </strong><span class="title">Application Development</span><br />
<hr /></li>
<li><strong>Chapter 10: </strong><span class="title">Creating Custom Code</span>
<ul>
<li>Simple Custom Components</li>
<li>A Wee Bit More OOP</li>
<li>Using ActionScript in Components</li>
<li>Custom Events</li>
<li>Custom Editors</li>
</ul>
</li>
<li><strong>Chapter 11: </strong><span class="title">Improving the User Experience </span>
<ul>
<li>Establishing Menus</li>
<li>Adding Navigation</li>
<li>Using View States</li>
<li>Adding Deep Linking</li>
<li>More on ToolTips</li>
</ul>
</li>
<li><strong>Chapter 12: </strong><span class="title">Alerts and Popups </span>
<ul>
<li>Working with Alerts</li>
<li>Creating Popup Windows</li>
<li>Communicating Between Windows</li>
</ul>
</li>
<li><strong>Chapter 13: </strong><span class="title">Improving the Appearance </span>
<ul>
<li>Creating Graphics</li>
<li>Styling Applications</li>
<li>Skinning Applications</li>
<li>Working with Fonts</li>
<li>Using Themes</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmcinsights.com/2010/05/11/first-draft-of-effortless-flex-4-development-book-complete/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security is Next to Godliness</title>
		<link>http://blog.dmcinsights.com/2010/05/01/security-is-next-to-godliness/</link>
		<comments>http://blog.dmcinsights.com/2010/05/01/security-is-next-to-godliness/#comments</comments>
		<pubDate>Sun, 02 May 2010 00:33:53 +0000</pubDate>
		<dc:creator>Larry</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.dmcinsights.com/?p=1031</guid>
		<description><![CDATA[I&#8217;ve been trying to write more about Web development security lately, in part because I&#8217;m going to be writing an &#8220;E-Commerce with PHP and MySQL&#8221; book this summer, so security is at the top of my mind. , I made some suggestions as to how one develops and tests a site from a security perspective. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been trying to write more about Web development security lately, in part because I&#8217;m going to be writing an &#8220;E-Commerce with PHP and MySQL&#8221; book this summer, so security is at the top of my mind. <a href="http://blog.dmcinsights.com/2010/04/17/a-simple-approach-to-site-security/">In a previous post</a>, I made some suggestions as to how one develops and tests a site from a security perspective. Here I want to cover security as a general philosophy, so you understand that approach I take (and, therefore, the approach I would recommend you take). When I explain things, I think in terms of analogies. I&#8217;m pretty sure they don&#8217;t always work or help, but still, it&#8217;s what I do. And the analogy I have for Web site (or application) security is: <em>Security is Next to Godliness</em>. Which is to say, think of security the way you might think about cleanliness.<span id="more-1031"></span>Say you go to eat at a restaurant&#8230;the restaurant may or may not <strong>look</strong> clean and it may or may not <strong>be</strong> clean. But if the restaurant doesn&#8217;t look clean, then it probably isn&#8217;t actually clean and you don&#8217;t want to eat there. The same goes for a Web site&#8217;s security: if it doesn&#8217;t give the appearance of being secure, it probably isn&#8217;t secure, and users won&#8217;t want to use the site (or shouldn&#8217;t). A Web site can look secure by looking professional, giving proper error messages, and by not looking obviously unsecure. This last quality is really the most important, as the common person may not really know the difference between a secure looking and unsecure looking site. But if they go to a site and get alerts from their browser due to a lack of a good certificate, or whatever, that&#8217;s like seeing a rodent go across the restaurant floor.</p>
<p>The second part of this analogy is that while it&#8217;s important for a restaurant to look clean (so people will eat there), it&#8217;s more important that it&#8217;s actually clean (so that diner&#8217;s don&#8217;t get sick, so that the inspector doesn&#8217;t shut you down, etc.). And so your Web site must actually be secure, so that nothing bad can happen to the users, your clients, the Easter bunny, and so forth.</p>
<p>The final reason I think this analogy works is that like security, like cleanliness, isn&#8217;t an absolute and the amount of effort you put into it should depend upon the situation. Your front porch doesn&#8217;t need to be that clean, but your bathrooms and kitchens sure do. And maybe you&#8217;re the kind of person that would thoroughly clean monthly, weekly, or daily. Maybe you&#8217;re the kind that will take cleaning to the disinfecting level. There&#8217;s no right answer in these situations: there&#8217;s better and there&#8217;s worse and there&#8217;s what&#8217;s right for you and your situation. The same goes for security. A site that handles no money has one level of security requirements; a site that performs online banking has a totally different level. Most importantly, just because you cleaned today, doesn&#8217;t mean your place will stay clean forever. And the Web site or application you ship today without any issues could become vulnerable tomorrow (most likely because of a found concern with underlying software or third-party applications).</p>
<p>So there&#8217;s my simple, yet overly-described, analogy for Web site or application security. Hopefully it&#8217;ll help you in the way you think about your Web site (or the next meal out!).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmcinsights.com/2010/05/01/security-is-next-to-godliness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excerpt from &#8220;Effortless Flex 4 Development&#8221; Posted Online</title>
		<link>http://blog.dmcinsights.com/2010/04/20/excerpt-from-effortless-flex-4-development-posted-online/</link>
		<comments>http://blog.dmcinsights.com/2010/04/20/excerpt-from-effortless-flex-4-development-posted-online/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 15:41:05 +0000</pubDate>
		<dc:creator>Larry</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[book]]></category>

		<guid isPermaLink="false">http://blog.dmcinsights.com/?p=1020</guid>
		<description><![CDATA[Peachpit Press, publisher of my forthcoming &#8220;Effortless Flex 4 Development&#8221; book, has published an excerpt of the book online, free for anyone to read. (Technically New Riders is the publisher, but New Riders is owned by Peachpit.) The article represents the first several pages from Chapter 4 of the book, &#8220;Event Management&#8221;. Even if you [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.peachpit.com">Peachpit Press</a>, publisher of my forthcoming &#8220;Effortless Flex 4 Development&#8221; book, has <a href="http://www.peachpit.com/articles/article.aspx?p=1577443">published an excerpt of the book online</a>, free for anyone to read. (Technically New Riders is the publisher, but New Riders is owned by Peachpit.) The article represents the first several pages from Chapter 4 of the book, &#8220;Event Management&#8221;. Even if you don&#8217;t yet know <a href="http://www.adobe.com/go/flex">Flex</a> and ActionScript, you should still be able to follow along. Most importantly, Flex is largely an event-driven approach to application development (conversely, Flash Professional is primarily a timeline-driven approach), so this section is really a key insight into what it&#8217;s like to use Flex.</p>
<p>I believe another excerpt from the book will be published soon, and I&#8217;m currently working on two &#8220;5 Tips in 5 Days&#8221; blog posts for Peachpit&#8217;s site. One will be specifically on the Flex 4 framework and the other will be on <a href="http://www.adobe.com/go/flashbuilder">Flash Builder</a>. Flash Builder, in case you&#8217;re not familiar with it, used to be called Flex Builder and is just a commercial IDE for developing using Flex. You don&#8217;t have to use Flash Builder as the Flex 4 framework and its SDK are available for free, but it does ease the process significantly. The book does not assume you&#8217;re using Flash Builder, either. There are specific instructions for how to create Flex applications using a text editor and the command-line IDE, but there are also areas that cover how you would do X or Y using Flash Builder. Most of the book focuses on the Flex framework, so it doesn&#8217;t matter what development tools you&#8217;re using.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmcinsights.com/2010/04/20/excerpt-from-effortless-flex-4-development-posted-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Time Flies: Flex Book Update</title>
		<link>http://blog.dmcinsights.com/2010/04/13/time-flies-flex-book-update/</link>
		<comments>http://blog.dmcinsights.com/2010/04/13/time-flies-flex-book-update/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 16:27:39 +0000</pubDate>
		<dc:creator>Larry</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[book]]></category>

		<guid isPermaLink="false">http://blog.dmcinsights.com/?p=1007</guid>
		<description><![CDATA[For those of you that read this blog regularly (-ish), my apologies for the lack of posts last week. I&#8217;m continuing to work my way through my new book, &#8220;Effortless Flex 4 Development,&#8221; and it&#8217;s taking up all of my time. But I&#8217;m over two-thirds of the way through the book now, having just completed [...]]]></description>
			<content:encoded><![CDATA[<p>For those of you that read this blog regularly (-ish), my apologies for the lack of posts last week. I&#8217;m continuing to work my way through my new book, &#8220;Effortless Flex 4 Development,&#8221; and it&#8217;s taking up all of my time. But I&#8217;m over two-thirds of the way through the book now, having just completed the second section. That&#8217;s the heart of the book, focusing on data and communications. The last third of the book will be written over the next couple of weeks. It covers &#8220;finishing touches&#8221; types of concepts, such as styling applications, effects, using popup windows, and so forth. These will be shorter chapters and involve information that you wouldn&#8217;t necessarily use on every project.</p>
<p>I believe the book will be published in July. The list price is about $45 (US), but you can normally get books for much cheaper than that. <a href="http://www.amazon.com/Effortless-Flex-Development-Larry-Ullman/dp/0321705947/ref=sr_1_14?ie=UTF8&amp;s=books&amp;qid=1271175748&amp;sr=1-14">Amazon currently has it at $33.44</a>. You can also read the book as I&#8217;m writing it via <a href="http://my.safaribooksonline.com/9780131389465">Safari Books Online</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmcinsights.com/2010/04/13/time-flies-flex-book-update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Effortless Flex 4 Development Available to Read Online</title>
		<link>http://blog.dmcinsights.com/2010/03/24/effortless-flex-4-development-available-to-read-online/</link>
		<comments>http://blog.dmcinsights.com/2010/03/24/effortless-flex-4-development-available-to-read-online/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 15:26:32 +0000</pubDate>
		<dc:creator>Larry</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[book]]></category>

		<guid isPermaLink="false">http://blog.dmcinsights.com/?p=990</guid>
		<description><![CDATA[My forthcoming book, Effortless Flex 4 Development, is now available to be read online through Safari Books Online. The direct URL is http://my.safaribooksonline.com/9780131389465. Through that site you&#8217;ll be able to read the book as I write it and make comments on the work. Frequently those comments can be used to fix or improve the finished [...]]]></description>
			<content:encoded><![CDATA[<p>My forthcoming book, <em>Effortless Flex 4 Development</em>, is now available to be read online through Safari Books Online. The direct URL is <a href="http://my.safaribooksonline.com/9780131389465">http://my.safaribooksonline.com/9780131389465</a>. Through that site you&#8217;ll be able to read the book as I write it and make comments on the work. Frequently those comments can be used to fix or improve the finished version of the book. Note that Safari Books Online is a paid service but there is a free 10 day/100 page trial.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.dmcinsights.com/2010/03/24/effortless-flex-4-development-available-to-read-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
