<?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>SteveLove.org &#187; tutorial</title>
	<atom:link href="http://stevelove.org/tag/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://stevelove.org</link>
	<description>Code, Literature and Other Worthless Pursuits</description>
	<lastBuildDate>Mon, 28 Jun 2010 21:53:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>How to install and set up Adobe Flex SDK on Ubuntu linux</title>
		<link>http://stevelove.org/2009/05/14/how-to-install-and-set-up-adobe-flex-sdk-on-ubuntu-linux/</link>
		<comments>http://stevelove.org/2009/05/14/how-to-install-and-set-up-adobe-flex-sdk-on-ubuntu-linux/#comments</comments>
		<pubDate>Fri, 15 May 2009 03:41:14 +0000</pubDate>
		<dc:creator>Steve Love</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://stevelove.org/?p=31</guid>
		<description><![CDATA[With the open source Adobe Flex SDK, developers using any operating system and any text editor or IDE can create rich Internet applications that compile into SWF files. This guide is for those wanting to install and set up the Flex SDK on Ubuntu linux. What do you need to install Flex on Ubuntu? The [...]]]></description>
			<content:encoded><![CDATA[<p>With the open source <a href="http://en.wikipedia.org/wiki/Adobe_Flex">Adobe Flex</a> SDK, developers using any operating system and any text editor or IDE can create rich Internet applications that compile into SWF files. This guide is for those wanting to install and set up the Flex SDK on Ubuntu linux. <span id="more-31"></span></p>
<h3>What do you need to install Flex on Ubuntu?</h3>
<ol>
<li>The <a href="http://www.adobe.com/products/flex/flexdownloads/">Flex SDK</a></li>
<li>Sun Java (needed for compiling the SWF binaries)</li>
</ol>
<h3>Set up and install Flex</h3>
<p>Step 1. If you haven&#8217;t already, install Java. (If you aren&#8217;t sure, go ahead and try this step anyway.) First open up a terminal (Accessories menu > Terminal) and type the following:</p>
<p>[text]sudo apt-get install java-package sun-java6-jdk[/text]</p>
<p>This will take several minutes while the packages download and install. You&#8217;ll also need to agree to Sun&#8217;s license.</p>
<p>Step 2. Download the <a href="http://www.adobe.com/products/flex/flexdownloads/">Flex SDK</a>. The rest of this guide will assume you saved the SDK to your desktop: <span class="code">~/Desktop</span>.</p>
<p>Step 3. We need to create a directory for the Flex SDK. In a terminal window, enter the following:</p>
<p>[text]sudo mkdir /opt/flex[/text]</p>
<p>The &#8220;opt&#8221; directory is generally where optional application software packages live. (More info on the <a href="http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard">linux file system</a>.) All we did here is make a new &#8220;flex&#8221; directory inside &#8220;opt&#8221;.</p>
<p>Step 4. Now we need to unzip the Flex SDK. Type the following in a terminal window:</p>
<p>[text]<br />
cd ~/Desktop<br />
unzip flex_sdk_4.zip -d tempflex<br />
[/text]</p>
<p>What this does is unzip the contents of your download into a new and temporary directory on your Desktop called &#8220;tempflex&#8221;.</p>
<p>Step 5. After that&#8217;s complete, we need to move these files to &#8220;opt/flex&#8221; which we&#8217;ve already prepared for the SDK. Type the following in a terminal window:</p>
<p>[text]sudo mv tempflex/* /opt/flex/[/text]</p>
<p>This will move the contents of &#8220;tempflex&#8221; into &#8220;opt/flex&#8221;. If you want to make sure you moved everything, you can type the following into a terminal window:</p>
<p>[text]<br />
cd /opt/flex<br />
ls<br />
[/text]</p>
<p>You should see a list of all the files in the directory.</p>
<p>Step 6. Last step. All we need to do now is let Ubuntu know where the new Flex compiler lives. Type the following in a terminal window to open up &#8220;~/.bashrc&#8221; in a text editor:</p>
<p>[text]gedit ~/.bashrc[/text]</p>
<p>The text editor will open your ~/.bashrc profile and we only need to add one line (I added it at the bottom of the file, but I&#8217;m not sure it matters).</p>
<p>[text]export PATH=/opt/flex/bin:$PATH[/text]</p>
<p>Save the file and close the text editor. Then exit all open terminal windows before opening a new one. This should ensure that your terminal loads the path that we just added.</p>
<p>You should now be able to compile your Flex projects with the &#8220;mxmlc&#8221; compiler command. To make sure, type the following in a terminal window to bring up the &#8220;help&#8221;:</p>
<p>[text]mxmlc &#8211;help[/text]</p>
<p>Looks good? Great. You&#8217;re all set. Happy Flex-developing.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevelove.org/2009/05/14/how-to-install-and-set-up-adobe-flex-sdk-on-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Simple OpenID updated: Now supports Google accounts and Attribute Exchange</title>
		<link>http://stevelove.org/2008/12/21/simple-openid-updated-now-supports-google-accounts-and-attribute-exchange/</link>
		<comments>http://stevelove.org/2008/12/21/simple-openid-updated-now-supports-google-accounts-and-attribute-exchange/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 03:12:36 +0000</pubDate>
		<dc:creator>Steve Love</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[attribute exchange]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://stevelove.org/?p=21</guid>
		<description><![CDATA[At the request of a reader, I&#8217;ve updated Simple OpenID by adding support for Google&#8217;s OpenID implementation for Gmail users, as well as some other changes. Download the latest version here. After a couple months, Google is finally publishing its XRDS document (like Yahoo does) from www.gmail.com. So what I&#8217;ve done is add a line [...]]]></description>
			<content:encoded><![CDATA[<p>At the request of a reader, I&#8217;ve updated Simple OpenID by adding support for Google&#8217;s OpenID implementation for Gmail users, as well as some other changes. Download the latest version <a href="http://stevelove.org/projects/dope-openid/">here</a>.<span id="more-21"></span></p>
<p>After a couple months, Google is finally publishing its XRDS document (like Yahoo does) from www.gmail.com. So what I&#8217;ve done is add a line that checks for &#8220;google&#8221; or &#8220;gmail&#8221; in the user&#8217;s OpenID, and if found, standardizes the input as &#8220;http://gmail.com&#8221;, at which point we can use Yadis to discover the server location. I implemented it this way because I figure users might be confused whether their provider URL is &#8220;http://google.com&#8221; or &#8220;http://gmail.com&#8221;. As an added bonus, it also allows people to enter &#8220;username@gmail.com&#8221; and it will still work. I don&#8217;t know of any clear guidelines on this, so if anyone knows of a better way to implement it, please let me know.</p>
<p>This brings us to Attribute Exchange (AX) and Simple Registration (SREG) info. Simple OpenID now supports both. Just use the <span class="code">SetRequiredFields</span> and <span class="code">SetOptionalFields</span> methods as before. Some OpenID providers use AX info, some use SREG, and some ignore both. Google, for example, will only return the user&#8217;s email address, and only if you specify it as a required field.</p>
<p>Other changes: I&#8217;ve added the ability to set PAPE auth policies and a time limit on authentication (max_auth_age). I haven&#8217;t tested these to see if they work though. If you&#8217;re interested, try it out and let me know the results. I commented out the section that deals with standardizing XRI strings after I noticed it&#8217;s only half implemented. I&#8217;ll work on both of these parts as time permits.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevelove.org/2008/12/21/simple-openid-updated-now-supports-google-accounts-and-attribute-exchange/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To: WordPress.com and the Simple OpenID PHP Class</title>
		<link>http://stevelove.org/2008/08/25/how-to-wordpresscom-and-the-simple-openid-php-class/</link>
		<comments>http://stevelove.org/2008/08/25/how-to-wordpresscom-and-the-simple-openid-php-class/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 02:22:29 +0000</pubDate>
		<dc:creator>Steve Love</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://stevelove.org/?p=19</guid>
		<description><![CDATA[[Note: This post contains outdated information. Please visit the project page here for the latest information.] In my previous post, I told you how to get the Simple OpenID PHP Class working with Yahoo. Now we&#8217;re going to focus on WordPress.com. This turned out to be very easy once I realized the problem. The Problem: [...]]]></description>
			<content:encoded><![CDATA[<p><big><b>[Note: This post contains outdated information. Please visit the project page <a href="http://stevelove.org/projects/dope-openid/">here</a> for the latest information.]</b></big></p>
<p>In my <a href="http://www.stevelove.org/2008/08/how-to-yahoo-and-the-simple-openid-php-class/">previous post</a>, I told you how to get the Simple OpenID PHP Class working with Yahoo. Now we&#8217;re going to focus on WordPress.com. This turned out to be very easy once I realized the problem. <span id="more-19"></span></p>
<p>The Problem:<br />
When you try to authenticate a WordPress OpenID using Simple OpenID you&#8217;re redirected to the correct URL, but it just displays your blog page rather than asking you to log in.</p>
<p>The Solution:<br />
After a closer look at the URL we find the problem. The WordPress OpenID server URL takes the form <span class="code">http://<em>username</em>.wordpress.com/?openidserver=1</span>. Fair enough. But the query string that we&#8217;ve appended with our request parameters also begins with a <span class="code">?</span> to set it apart from the rest of the URL. So, all we need to do is check the OpenID server URL we found during discovery for an existing query string. If it already has one, we&#8217;ll append our parameters with an <span class="code">&#038;</span>, otherwise we&#8217;ll use the <span class="code">?</span> as usual.</p>
<p><!--more--></p>
<p>Let&#8217;s change the <span class="code">GetRedirectURL</span> method to the following.</p>
<p>[php]<br />
function GetRedirectURL(){<br />
    $params = array();<br />
    $params['openid.return_to'] = urlencode($this-&gt;URLs['approved']);<br />
    if($this-&gt;version == &quot;2.0&quot;){<br />
        $params['openid.ns'] = urlencode($this-&gt;openid_ns);<br />
        $params['openid.claimed_id'] = urlencode($this-&gt;openid_url_identity);<br />
        $params['openid.realm'] = urlencode($this-&gt;URLs['trust_root']);<br />
    }else{<br />
        $params['openid.trust_root'] = urlencode($this-&gt;URLs['trust_root']);<br />
    }<br />
    $params['openid.mode'] = &#8216;checkid_setup&#8217;;<br />
    $params['openid.identity'] = urlencode($this-&gt;openid_url_identity);</p>
<p>    if (isset($this-&gt;fields['required'])<br />
      &amp;&amp; (count($this-&gt;fields['required']) &gt; 0)) {<br />
        $params['openid.sreg.required'] = implode(&#8216;,&#8217;,$this-&gt;fields['required']);<br />
    }<br />
    if (isset($this-&gt;fields['optional'])<br />
      &amp;&amp; (count($this-&gt;fields['optional']) &gt; 0)) {<br />
        $params['openid.sreg.optional'] = implode(&#8216;,&#8217;,$this-&gt;fields['optional']);<br />
    }<br />
    if(strstr($this-&gt;URLs['openid_server'], &quot;?&quot;)){<br />
        $urlJoiner = &quot;&amp;&quot;;<br />
    }else{<br />
        $urlJoiner = &quot;?&quot;;<br />
    }<br />
    return $this-&gt;URLs['openid_server'] . $urlJoiner . $this-&gt;array2url($params);<br />
}<br />
[/php]</p>
<p>And that&#8217;s it! Our WordPress OpenID should now authenticate properly with Simple OpenID. If it still doesn&#8217;t seem to work right, you can <a href="http://www.stevelove.org/projects/openid/class.openid.phps">download</a> the version that I&#8217;m using and see if that helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://stevelove.org/2008/08/25/how-to-wordpresscom-and-the-simple-openid-php-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

