<?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>DigiTechLog Dot Com &#187; オープンソース</title>
	<atom:link href="http://digitechlog.com/tag/%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e3%82%bd%e3%83%bc%e3%82%b9/feed" rel="self" type="application/rss+xml" />
	<link>http://digitechlog.com</link>
	<description>Adobe AIR、Flex、Flash、Java</description>
	<lastBuildDate>Tue, 08 Nov 2011 12:46:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>オープンソースソフトウェアPHP ScrewでPHPスクリプトを暗号化する</title>
		<link>http://digitechlog.com/2011/11/08/php-screw.html</link>
		<comments>http://digitechlog.com/2011/11/08/php-screw.html#comments</comments>
		<pubDate>Tue, 08 Nov 2011 12:38:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[オープンソース]]></category>

		<guid isPermaLink="false">http://digitechlog.com/?p=1158</guid>
		<description><![CDATA[PHP Screwとは、PHPのソースコードを暗号化するオープンソースのソフトウェアです。
開発元からすれば、PHPのようなスクリプト言語での開発の欠点としては、ソースがそのまま見えてしまう事です。心無い従業員が盗み取ったり、サーバの設定をミスしてソースが丸見えになってしまう可能性もあります。HP ScrewはPHPの機能拡張として利用しています。利用は今まで通り使う事が出来ます。
HP Screwを利用すれば人間には読めなくしてみれば、不安も減るだろうということだろう。PHPを利用した商用パッケージを開発している場合も、低コストで財産を守ることができます。
ここはPHP Screwについてドキュメント：
http://www.pm9.com/newpm9/itbiz/php/phpscrew/phpscrew.txt
インストール方法：

(1) php_screw-1.5.tgz を展開して下さい。

(2) ディレクトリ php_screw-1.5 にて下記のコマンドを実行して下さい。
      phpize
      ./configure

(3) 暗号化・復号化モジュールのカスタマイズを行って下さい。

      vi my_screw.h
         -- 暗号化SEEDキー(pm9screw_mycryptkey)をお好みの値に変更して下さい。
            暗号化SEEDキーは長いほうが暗号化強度は高まります。
    [...]]]></description>
			<content:encoded><![CDATA[<p>PHP Screwとは、PHPのソースコードを暗号化するオープンソースのソフトウェアです。</p>
<p>開発元からすれば、PHPのようなスクリプト言語での開発の欠点としては、ソースがそのまま見えてしまう事です。心無い従業員が盗み取ったり、サーバの設定をミスしてソースが丸見えになってしまう可能性もあります。HP ScrewはPHPの機能拡張として利用しています。利用は今まで通り使う事が出来ます。</p>
<p>HP Screwを利用すれば人間には読めなくしてみれば、不安も減るだろうということだろう。PHPを利用した商用パッケージを開発している場合も、低コストで財産を守ることができます。<br />
<span id="more-1158"></span>ここはPHP Screwについてドキュメント：</p>
<p><a href="http://www.pm9.com/newpm9/itbiz/php/phpscrew/phpscrew.txt">http://www.pm9.com/newpm9/itbiz/php/phpscrew/phpscrew.txt</a></p>
<p><strong>インストール方法：</strong></p>
<blockquote>
<pre style="line-height: normal; word-wrap: break-word; white-space: pre-wrap;">(1) php_screw-1.5.tgz を展開して下さい。

(2) ディレクトリ php_screw-1.5 にて下記のコマンドを実行して下さい。
      phpize
      ./configure

(3) 暗号化・復号化モジュールのカスタマイズを行って下さい。

      vi my_screw.h
         -- 暗号化SEEDキー(pm9screw_mycryptkey)をお好みの値に変更して下さい。
            暗号化SEEDキーは長いほうが暗号化強度は高まります。
            しかし、キーの長さは復号処理の時間とは関係有りません。
            なるべくキーを長くとって下さい。

      ※ ソースを読んでご理解いただけるなら、
         独自の暗号化ロジックに修正することが可能です。

(4) コンパイルして下さい。
      make

(5) modules/php_screw.so を extension用のディレクトリにコピーして下さい。
      例) cp modules/php_screw.so  /usr/lib/php/modules/php_screw.so

(6) ソース暗号化ツール(screw)を作成します。次のコマンドを実行して下さい。
      cd tools
      make

(7) screw を適当なディレクトリにリネームしてコピーして下さい。

(8) php.iniに次の行を追加して下さい。
      extension=php_screw.so

(9) apacheを再起動して下さい。</pre>
</blockquote>
<p><strong><a href="http://www.pm9.com/newpm9/itbiz/php/phpscrew/phpscrew.txt"></a>利用方法：</strong></p>
<blockquote>
<pre style="line-height: normal; word-wrap: break-word; white-space: pre-wrap;">(1) PHPスクリプトの暗号化
　  次のコマンドを実行して下さい。

      screw  暗号化対象のスクリプトファイルのパス

　  コマンドを実行すると、同一の名前で暗号化されたスクリプトファイルが
    作成されます。
　  また同一のディレクトリにスクリプトファイル名.screwという名前で
    バックアップが作成されます。
    パッケージングを行うときには、.screwファイルを忘れずに消して下さい。

(2)PHPスクリプトの実行
    暗号化されていないスクリプトファイルを実行するときと同じように
    暗号化されたスクリプトファイルを規定のディレクトリに置いて実行して下さい。</pre>
</blockquote>
<p>公式サイト：<br />
<a href="http://sourceforge.net/projects/php-screw/">http://sourceforge.net/projects/php-screw/</a></p>
<p>Office Site：<br />
<a href="http://www.pm9.com/newpm9/itbiz/php/phpscrew/">http://www.pm9.com/newpm9/itbiz/php/phpscrew/</a><br />
<h3>Related Posts</h3>
<ul class="related_post">
<li><a href="http://digitechlog.com/2009/08/25/phpobject-is-a-flash-remoting-alternative-for-php.html" title="PHPObject: PHPとFlashのActionScript連携パッケージ">PHPObject: PHPとFlashのActionScript連携パッケージ</a></li>
<li><a href="http://digitechlog.com/2010/05/17/open-source-library-betweenas3-tutorials.html" title="オープンソースのASライブラリBetweenAS3のチュートリアル">オープンソースのASライブラリBetweenAS3のチュートリアル</a></li>
<li><a href="http://digitechlog.com/2010/04/19/fzip-actionscript-3-open-source-class-library.html" title="FZip: ZIP読込み、作成用AS3のライブラリ">FZip: ZIP読込み、作成用AS3のライブラリ</a></li>
<li><a href="http://digitechlog.com/2010/03/22/actionscript3-utils-classes-to-extend-http-https-flash-player-9.html" title="as3httpclient: オープンソースのHTTP/HTTPS AS3クライアント">as3httpclient: オープンソースのHTTP/HTTPS AS3クライアント</a></li>
<li><a href="http://digitechlog.com/2010/03/12/7-asynchronous-processing-open-source-actionscript-library.html" title="７+ AS3で非同期処理のオープンソースのライブラリ一覧">７+ AS3で非同期処理のオープンソースのライブラリ一覧</a></li>
<li><a href="http://digitechlog.com/2010/02/28/as3soundeditorlib-actionscript-3-library-for-sound-playback-spectrum-display-and-cue-point-display.html" title="as3soundeditorlib: オープンソースのActionScript 3サウンド編集ライブラリ">as3soundeditorlib: オープンソースのActionScript 3サウンド編集ライブラリ</a></li>
<li><a href="http://digitechlog.com/2010/02/21/sazamek-flash-based-online-audio-manipulating-platform-with-as3-open-source-library.html" title="Sazameki: Flashを使ったオーディオ操作のためのオンラインプラットホーム">Sazameki: Flashを使ったオーディオ操作のためのオンラインプラットホーム</a></li>
<li><a href="http://digitechlog.com/2010/02/13/as3unit-actionscript-3-junit-for-flash.html" title="AS3Unit: ActionScript 3.0上JUnit4の移植、単体テストを行うためのフレームワーク">AS3Unit: ActionScript 3.0上JUnit4の移植、単体テストを行うためのフレームワーク</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://digitechlog.com/2011/11/08/php-screw.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>オープンソースのASライブラリBetweenAS3のチュートリアル</title>
		<link>http://digitechlog.com/2010/05/17/open-source-library-betweenas3-tutorials.html</link>
		<comments>http://digitechlog.com/2010/05/17/open-source-library-betweenas3-tutorials.html#comments</comments>
		<pubDate>Sun, 16 May 2010 15:20:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[BetweenAS3]]></category>
		<category><![CDATA[オープンソース]]></category>
		<category><![CDATA[チュートリアル]]></category>

		<guid isPermaLink="false">http://digitechlog.com/2010/05/17/open-source-library-betweenas3-tutorials.html</guid>
		<description><![CDATA[BetweenAS3とは、Tweener ユーザが Tweener に不満になってきたので開発されたオープンソースの高速＆省メモリのAS3ライブラリです。BetweenAS3の実行パフォーマンスは高いし、使用方法も簡単、いじりやすいから、Flash開発者によく使われています。
 

BetweenAS3 入門

入門用チュートリアルです。初めてBetweenAS3を使う方、特に英語が嫌悪感を抱いている方はここから始めたほうがいいよ。
&#160;
ITweenインタフェース

事例でBetweenAS3のインタフェースを紹介しました。
&#160;
ITweenGroup インタフェース

複数のトゥイーンのコンテナチュートリアルです。
&#160;
BetweenAS3で時間軸を制御! ActionScriptでタイムリマップを試してみる

ActionScript3.0の新種のトゥイーンライブラリ「BetweenAS3」を使ってPapervision3Dを動かしたデモ・チュートリアルです。
&#160;
BetweenAS3を使ってカスタムイージングの始まりと終わりに別のイージング関数を指定する方法

BetweenAS3を使ってカスタムイージングの始まりと終わりに別のイージング関数を指定する方法を図例、ソースコードで説明されました。
&#160;
そのたチュートリアル

他のチュートリアルのいくつがあります。公式サイトの例でソースとデモが挙げられたけど、説明はあまりないのはちょっと大変だね。
Related Posts

FZip: ZIP読込み、作成用AS3のライブラリ
as3httpclient: オープンソースのHTTP/HTTPS AS3クライアント
APE(ActionScript Physics Engine): FlashやFlexで利用できるAS3で書かれたオープンソースの2D物理エンジン
Flexcover: Flex／AIR／AS3用のオープンソースのコードカバレッジ（テストのコード網羅チェック）ツール
オープンソースソフトウェアPHP ScrewでPHPスクリプトを暗号化する
AS3のTween系ライブラリ「TweenLite」の紹介の纏め
Photoshop チュートリアル：液体テキスト効果(2011/02/20)
Photoshop チュートリアル：ポスターの集（2011/02/08）

]]></description>
			<content:encoded><![CDATA[<p>BetweenAS3とは、Tweener ユーザが Tweener に不満になってきたので開発されたオープンソースの高速＆省メモリのAS3ライブラリです。BetweenAS3の実行パフォーマンスは高いし、使用方法も簡単、いじりやすいから、Flash開発者によく使われています。</p>
<p> <span id="more-955"></span>
</p>
<p><a href="http://mrhdms.iixx.jp/2010/01/31/begin-betweenas3-overwrite/" target="_blank"><strong>BetweenAS3 入門</strong></a></p>
<hr />
<p>入門用チュートリアルです。初めてBetweenAS3を使う方、特に英語が嫌悪感を抱いている方はここから始めたほうがいいよ。</p>
<p>&#160;</p>
<p><a href="http://oshige.com/flash/as3study/2009/09/itween.html" target="_blank"><strong>ITweenインタフェース</strong></a></p>
<hr />
<p>事例でBetweenAS3のインタフェースを紹介しました。</p>
<p>&#160;</p>
<p><a href="http://oshige.com/flash/as3study/2009/09/itweengroup.html" target="_blank"><strong>ITweenGroup インタフェース</strong></a></p>
<hr />
<p><code>複数のトゥイーンのコンテナチュートリアルです。</code></p>
<p>&#160;</p>
<p><a href="http://clockmaker.jp/blog/2009/07/betweenas3/" target="_blank"><strong>BetweenAS3で時間軸を制御! ActionScriptでタイムリマップを試してみる</strong></a></p>
<hr />
<p>ActionScript3.0の新種のトゥイーンライブラリ「BetweenAS3」を使ってPapervision3Dを動かしたデモ・チュートリアルです。</p>
<p>&#160;</p>
<p><a href="http://clockmaker.jp/blog/2009/11/betweenas3-custom/" target="_blank"><strong>BetweenAS3を使ってカスタムイージングの始まりと終わりに別のイージング関数を指定する方法</strong></a></p>
<p>
<hr />BetweenAS3を使ってカスタムイージングの始まりと終わりに別のイージング関数を指定する方法を図例、ソースコードで説明されました。</p>
<p>&#160;</p>
<p><a href="http://wonderfl.net/tag/BetweenAS3Tutorial" target="_blank"><strong>そのたチュートリアル</strong></a></p>
<hr />
<p>他のチュートリアルのいくつがあります。公式サイトの例でソースとデモが挙げられたけど、説明はあまりないのはちょっと大変だね。</p>
<h3>Related Posts</h3>
<ul class="related_post">
<li><a href="http://digitechlog.com/2010/04/19/fzip-actionscript-3-open-source-class-library.html" title="FZip: ZIP読込み、作成用AS3のライブラリ">FZip: ZIP読込み、作成用AS3のライブラリ</a></li>
<li><a href="http://digitechlog.com/2010/03/22/actionscript3-utils-classes-to-extend-http-https-flash-player-9.html" title="as3httpclient: オープンソースのHTTP/HTTPS AS3クライアント">as3httpclient: オープンソースのHTTP/HTTPS AS3クライアント</a></li>
<li><a href="http://digitechlog.com/2009/05/05/ape-actionscript-physics-engine-is-an-as3-open-source-2d-physics-engine-for-use-in-flash-and-flex.html" title="APE(ActionScript Physics Engine): FlashやFlexで利用できるAS3で書かれたオープンソースの2D物理エンジン">APE(ActionScript Physics Engine): FlashやFlexで利用できるAS3で書かれたオープンソースの2D物理エンジン</a></li>
<li><a href="http://digitechlog.com/2009/01/20/flexcover-an-open-source-code-coverage-tool-for-flex-air-and-as3.html" title="Flexcover: Flex／AIR／AS3用のオープンソースのコードカバレッジ（テストのコード網羅チェック）ツール">Flexcover: Flex／AIR／AS3用のオープンソースのコードカバレッジ（テストのコード網羅チェック）ツール</a></li>
<li><a href="http://digitechlog.com/2011/11/08/php-screw.html" title="オープンソースソフトウェアPHP ScrewでPHPスクリプトを暗号化する">オープンソースソフトウェアPHP ScrewでPHPスクリプトを暗号化する</a></li>
<li><a href="http://digitechlog.com/2011/02/27/as3%e3%81%aetween%e7%b3%bb%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa%e3%80%8ctweenlite%e3%80%8d%e3%81%ae%e7%b4%b9%e4%bb%8b%e3%81%ae%e7%ba%8f%e3%82%81.html" title="AS3のTween系ライブラリ「TweenLite」の紹介の纏め">AS3のTween系ライブラリ「TweenLite」の紹介の纏め</a></li>
<li><a href="http://digitechlog.com/2011/02/20/photoshop-tutorial-liquid-text-effect-20110220.html" title="Photoshop チュートリアル：液体テキスト効果(2011/02/20)">Photoshop チュートリアル：液体テキスト効果(2011/02/20)</a></li>
<li><a href="http://digitechlog.com/2011/02/09/photoshop-tutorial-poster-20110208.html" title="Photoshop チュートリアル：ポスターの集（2011/02/08）">Photoshop チュートリアル：ポスターの集（2011/02/08）</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://digitechlog.com/2010/05/17/open-source-library-betweenas3-tutorials.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FZip: ZIP読込み、作成用AS3のライブラリ</title>
		<link>http://digitechlog.com/2010/04/19/fzip-actionscript-3-open-source-class-library.html</link>
		<comments>http://digitechlog.com/2010/04/19/fzip-actionscript-3-open-source-class-library.html#comments</comments>
		<pubDate>Sun, 18 Apr 2010 15:09:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash Project]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[FZip]]></category>
		<category><![CDATA[ZIP]]></category>
		<category><![CDATA[オープンソース]]></category>
		<category><![CDATA[ライブラリ]]></category>

		<guid isPermaLink="false">http://digitechlog.com/2010/04/19/fzip-actionscript-3-open-source-class-library.html</guid>
		<description><![CDATA[Flash技術はウェブ上に良く使われているのです。データ量が大きい場合、圧縮しなくてそのまま送受信するとネットの効果に影響があります。その前、Adobe AIRアプリケーション中に圧縮機能（ZIP:ByteArray）を利用してデータを通信(ActionScriptとJava)しますにアドビAIRアプリケーション中に使える圧縮機能を紹介しました。今回紹介するのはZIPファイルを読み込み、作成用AS3のオープンソースライブラリです。
  
実はnochumpにも一つのAS3 zipライブラリをリリースしていました、そのライブラリの圧縮スピードは結構早そうですが、FZipならファイルをロードしながら中身をアクセスできます。
2009の年末にリリースしたFZip 1.5バージョンには、Mac OS XにSWCs, JARsなども解析できました。
使い方は簡単です。
１、パッケージ導入
import deng.fzip.FZip;
import&#160;deng.fzip.FZipFile;
２、圧縮ファイルロードで展開できる
zip = new FZip();
zip.load(new&#160;URLRequest(&#34;sample.zip&#34;));
３、圧縮ファイルにファイル追加API
addFile(name:String, content:ByteArray = null):FZipFile&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; 
addFileAt(index:uint, name:String, content:ByteArray = null):FZipFile&#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; 
addFileFromString(name:String, content:String, charset:String = &#34;utf-8&#34;):FZipFile&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160; 
addFileFromStringAt(index:uint, name:String, content:String, charset:String = &#34;utf-8&#34;):FZipFile
もっと詳しい情報はFZipの公式サイトにアクセスしてください。
Related Posts

AS3のTween系ライブラリ「TweenLite」の紹介の纏め
オープンソースのASライブラリBetweenAS3のチュートリアル
as3httpclient: オープンソースのHTTP/HTTPS AS3クライアント
７+ AS3で非同期処理のオープンソースのライブラリ一覧
as3soundeditorlib: [...]]]></description>
			<content:encoded><![CDATA[<p>Flash技術はウェブ上に良く使われているのです。データ量が大きい場合、圧縮しなくてそのまま送受信するとネットの効果に影響があります。その前、<a href="http://digitechlog.com/2008/11/01/how-to-use-zip-compression-in-adobe-air-with-actionscript-and-java.html">Adobe AIRアプリケーション中に圧縮機能（ZIP:ByteArray）を利用してデータを通信(ActionScriptとJava)します</a>にアドビAIRアプリケーション中に使える圧縮機能を紹介しました。今回紹介するのはZIPファイルを読み込み、作成用AS3のオープンソースライブラリです。</p>
<p><span id="more-948"></span>  </p>
<p>実はnochumpにも<a href="http://nochump.com/blog/?p=15" target="_blank">一つのAS3 zipライブラリ</a>をリリースしていました、そのライブラリの圧縮スピードは結構早そうですが、FZipならファイルをロードしながら中身をアクセスできます。</p>
<p>2009の年末にリリースしたFZip 1.5バージョンには、Mac OS XにSWCs, JARsなども解析できました。</p>
<p>使い方は簡単です。</p>
<p>１、パッケージ導入</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">import</span><span style="color: Gray;"> </span><span style="color: Blue;">deng</span><span style="color: Gray;">.</span><span style="color: Blue;">fzip</span><span style="color: Gray;">.</span><span style="color: Blue;">FZip</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">deng</span><span style="color: Gray;">.</span><span style="color: Blue;">fzip</span><span style="color: Gray;">.</span><span style="color: Blue;">FZipFile</span><span style="color: Gray;">;</span></li></ol></div>
<p>２、圧縮ファイルロードで展開できる</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">zip</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">FZip</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">zip</span><span style="color: Gray;">.</span><span style="color: Teal;">load</span><span style="color: Olive;">(</span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">URLRequest</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">sample.zip</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li></ol></div>
<p>３、圧縮ファイルにファイル追加API</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">addFile</span><span style="color: Olive;">(</span><span style="color: Teal;">name</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;">, </span><span style="color: Blue;">content</span><span style="color: Gray;">:</span><span style="color: Blue;">ByteArray</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Olive;">)</span><span style="color: Gray;">:</span><span style="color: Blue;">FZipFile</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span></li>
<li><span style="color: Blue;">addFileAt</span><span style="color: Olive;">(</span><span style="color: Teal;">index</span><span style="color: Gray;">:</span><span style="color: Blue;">uint</span><span style="color: Gray;">, </span><span style="color: Teal;">name</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;">, </span><span style="color: Blue;">content</span><span style="color: Gray;">:</span><span style="color: Blue;">ByteArray</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Olive;">)</span><span style="color: Gray;">:</span><span style="color: Blue;">FZipFile</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span></li>
<li><span style="color: Blue;">addFileFromString</span><span style="color: Olive;">(</span><span style="color: Teal;">name</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;">, </span><span style="color: Blue;">content</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;">, </span><span style="color: Blue;">charset</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">utf-8</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">:</span><span style="color: Blue;">FZipFile</span><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; </span></li>
<li><span style="color: Blue;">addFileFromStringAt</span><span style="color: Olive;">(</span><span style="color: Teal;">index</span><span style="color: Gray;">:</span><span style="color: Blue;">uint</span><span style="color: Gray;">, </span><span style="color: Teal;">name</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;">, </span><span style="color: Blue;">content</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;">, </span><span style="color: Blue;">charset</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">utf-8</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">:</span><span style="color: Blue;">FZipFile</span></li></ol></div>
<p>もっと詳しい情報は<a href="http://codeazur.com.br/lab/fzip/" target="_blank">FZipの公式サイト</a>にアクセスしてください。</p>
<h3>Related Posts</h3>
<ul class="related_post">
<li><a href="http://digitechlog.com/2011/02/27/as3%e3%81%aetween%e7%b3%bb%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa%e3%80%8ctweenlite%e3%80%8d%e3%81%ae%e7%b4%b9%e4%bb%8b%e3%81%ae%e7%ba%8f%e3%82%81.html" title="AS3のTween系ライブラリ「TweenLite」の紹介の纏め">AS3のTween系ライブラリ「TweenLite」の紹介の纏め</a></li>
<li><a href="http://digitechlog.com/2010/05/17/open-source-library-betweenas3-tutorials.html" title="オープンソースのASライブラリBetweenAS3のチュートリアル">オープンソースのASライブラリBetweenAS3のチュートリアル</a></li>
<li><a href="http://digitechlog.com/2010/03/22/actionscript3-utils-classes-to-extend-http-https-flash-player-9.html" title="as3httpclient: オープンソースのHTTP/HTTPS AS3クライアント">as3httpclient: オープンソースのHTTP/HTTPS AS3クライアント</a></li>
<li><a href="http://digitechlog.com/2010/03/12/7-asynchronous-processing-open-source-actionscript-library.html" title="７+ AS3で非同期処理のオープンソースのライブラリ一覧">７+ AS3で非同期処理のオープンソースのライブラリ一覧</a></li>
<li><a href="http://digitechlog.com/2010/02/28/as3soundeditorlib-actionscript-3-library-for-sound-playback-spectrum-display-and-cue-point-display.html" title="as3soundeditorlib: オープンソースのActionScript 3サウンド編集ライブラリ">as3soundeditorlib: オープンソースのActionScript 3サウンド編集ライブラリ</a></li>
<li><a href="http://digitechlog.com/2010/01/28/box2dflashas3-open-source-physics-library-box2d.html" title="Box2DFlashAS3: 物理演算シミュレーションを可能にするActionScriptライブラリ">Box2DFlashAS3: 物理演算シミュレーションを可能にするActionScriptライブラリ</a></li>
<li><a href="http://digitechlog.com/2010/01/26/flartoolkit-open-source-augmented-reality-in-flash.html" title="FLARToolKit: AR（拡張現実）ってのをFlashで簡単に作ることができるライブラリ">FLARToolKit: AR（拡張現実）ってのをFlashで簡単に作ることができるライブラリ</a></li>
<li><a href="http://digitechlog.com/2010/01/25/wow-engine-free-as3-open-source-physics-engine.html" title="WOW-Engine: オープンソースのActionScript3用3D物理エンジンライブラリ">WOW-Engine: オープンソースのActionScript3用3D物理エンジンライブラリ</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://digitechlog.com/2010/04/19/fzip-actionscript-3-open-source-class-library.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>as3httpclient: オープンソースのHTTP/HTTPS AS3クライアント</title>
		<link>http://digitechlog.com/2010/03/22/actionscript3-utils-classes-to-extend-http-https-flash-player-9.html</link>
		<comments>http://digitechlog.com/2010/03/22/actionscript3-utils-classes-to-extend-http-https-flash-player-9.html#comments</comments>
		<pubDate>Mon, 22 Mar 2010 13:21:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[オープンソース]]></category>

		<guid isPermaLink="false">http://digitechlog.com/2010/03/22/actionscript3-utils-classes-to-extend-http-https-flash-player-9.html</guid>
		<description><![CDATA[Bloglinesの様のAPIを利用するとき、HTTP/GETを基づいてHTTPの認証機能が必要となりますが、Adobe Flash Player 9のURLLoaderクラスはそれがサポートされていません。

as3httpclientとは、該当問題を解決するためActionScript 3のオープンソースのHTTP/HTTPSライブラリクラスです。
  
as3httpclientは次の特徴があります。

●HTTP/GET経由してHTTPベースの認証をサポートする
●違う方法でHTTPステータスメッセージを取れる
●HTTPSをサポートする

使用例：
&#60;mx:Application xmlns:mx=&#34;http://www.macromedia.com/2005/mxml&#34; creationComplete=&#34;onAppInit()&#34;&#62;
&#60;mx:Script&#62;
import&#160;flash.net.URLRequest;
import&#160;flash.net.URLRequestHeader;
import&#160;com.abdulqabiz.net.HTTPURLLoader;
import&#160;com.abdulqabiz.crypto.Base64;
private&#160;var loader:HTTPURLLoader;
private&#160;var END_POINT:String = &#34;http://rpc.bloglines.com/&#34;;
//you need to set your email/password required for Bloglines access.
private&#160;var email:String = &#34;YOUR_EMAIL_FOR_BLOGLINES&#34;;
private&#160;var password:String = &#34;YOUR_BLOGLINES_PASSWORD&#34;;
private&#160;function onAppInit()
{
loader = new&#160;HTTPURLLoader();
loader.addEventListener(&#34;complete&#34;, onComplete);
loader.addEventListener(&#34;httpStatus&#34;, onHTTPStatus);
loader.addEventListener(&#34;progress&#34;, onProgress);
//for simplicity,not handling following three events.
//loader.addEventListener(&#34;close&#34;, onClose);
//loader.addEventListener(&#34;ioError&#34;, onIOError);
//loader.addEventListener(&#34;securityError&#34;,onSecurityError);
}
private&#160;function onComplete(event:Event)
{
//headers stroed as name-value(hash map)
var&#160;rh:Object = HTTPURLLoader(event.target).responseHeaders;
var&#160;str:String = &#34;&#34;;
for(var&#160;p:String in rh)&#160; &#160; str+= p [...]]]></description>
			<content:encoded><![CDATA[<p>Bloglinesの様のAPIを利用するとき、HTTP/GETを基づいてHTTPの認証機能が必要となりますが、Adobe Flash Player 9のURLLoaderクラスはそれがサポートされていません。</p>
<p>
as3httpclientとは、該当問題を解決するためActionScript 3のオープンソースのHTTP/HTTPSライブラリクラスです。</p>
<p><span id="more-941"></span>  </p>
<p>as3httpclientは次の特徴があります。</p>
<blockquote><p>
●HTTP/GET経由してHTTPベースの認証をサポートする<br />
●違う方法でHTTPステータスメッセージを取れる<br />
●HTTPSをサポートする
</p></blockquote>
<p>使用例：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">&lt;</span><span style="color: Teal;">mx</span><span style="color: Gray;">:</span><span style="color: Teal;">Application</span><span style="color: Gray;"> </span><span style="color: Blue;">xmlns</span><span style="color: Gray;">:</span><span style="color: Teal;">mx</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://www.macromedia.com/2005/mxml</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Blue;">creationComplete</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">onAppInit()</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Gray;">&lt;</span><span style="color: Teal;">mx</span><span style="color: Gray;">:</span><span style="color: Blue;">Script</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Teal;">flash</span><span style="color: Gray;">.</span><span style="color: Teal;">net</span><span style="color: Gray;">.</span><span style="color: Blue;">URLRequest</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Teal;">flash</span><span style="color: Gray;">.</span><span style="color: Teal;">net</span><span style="color: Gray;">.</span><span style="color: Blue;">URLRequestHeader</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">com</span><span style="color: Gray;">.</span><span style="color: Blue;">abdulqabiz</span><span style="color: Gray;">.</span><span style="color: Teal;">net</span><span style="color: Gray;">.</span><span style="color: Blue;">HTTPURLLoader</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">import</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">com</span><span style="color: Gray;">.</span><span style="color: Blue;">abdulqabiz</span><span style="color: Gray;">.</span><span style="color: Blue;">crypto</span><span style="color: Gray;">.</span><span style="color: Blue;">Base64</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">loader</span><span style="color: Gray;">:</span><span style="color: Blue;">HTTPURLLoader</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">END_POINT</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://rpc.bloglines.com/</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//you need to set your email/password required for Bloglines access.</span></li>
<li><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">email</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">YOUR_EMAIL_FOR_BLOGLINES</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Teal;">password</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">YOUR_BLOGLINES_PASSWORD</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">onAppInit</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">loader</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">HTTPURLLoader</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">loader</span><span style="color: Gray;">.</span><span style="color: Blue;">addEventListener</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">complete</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Teal;">onComplete</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">loader</span><span style="color: Gray;">.</span><span style="color: Blue;">addEventListener</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">httpStatus</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Teal;">onHTTPStatus</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">loader</span><span style="color: Gray;">.</span><span style="color: Blue;">addEventListener</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">progress</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Teal;">onProgress</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//for simplicity,not handling following three events.</span></li>
<li><span style="color: #ffa500;">//loader.addEventListener(&quot;close&quot;, onClose);</span></li>
<li><span style="color: #ffa500;">//loader.addEventListener(&quot;ioError&quot;, onIOError);</span></li>
<li><span style="color: #ffa500;">//loader.addEventListener(&quot;securityError&quot;,onSecurityError);</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Teal;">onComplete</span><span style="color: Olive;">(</span><span style="color: Blue;">event</span><span style="color: Gray;">:</span><span style="color: Blue;">Event</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: #ffa500;">//headers stroed as name-value(hash map)</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">rh</span><span style="color: Gray;">:</span><span style="color: Teal;">Object</span><span style="color: Gray;"> = </span><span style="color: Blue;">HTTPURLLoader</span><span style="color: Olive;">(</span><span style="color: Blue;">event</span><span style="color: Gray;">.</span><span style="color: Teal;">target</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">responseHeaders</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">str</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">p</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;"> </span><span style="color: Green;">in</span><span style="color: Gray;"> </span><span style="color: Blue;">rh</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">str</span><span style="color: Gray;">+= </span><span style="color: Blue;">p</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">:</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">rh</span><span style="color: Olive;">[</span><span style="color: Blue;">p</span><span style="color: Olive;">]</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Navy;">\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">console</span><span style="color: Gray;">.</span><span style="color: Teal;">text</span><span style="color: Gray;">+=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Response Headers: </span><span style="color: Navy;">\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">str</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Navy;">\n\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//data property holds the content</span></li>
<li><span style="color: Blue;">console</span><span style="color: Gray;">.</span><span style="color: Teal;">text</span><span style="color: Gray;">+=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Body Content:</span><span style="color: Navy;">\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">HTTPURLLoader</span><span style="color: Olive;">(</span><span style="color: Blue;">event</span><span style="color: Gray;">.</span><span style="color: Teal;">target</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Teal;">data</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Navy;">\n\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Teal;">onProgress</span><span style="color: Olive;">(</span><span style="color: Blue;">event</span><span style="color: Gray;">:</span><span style="color: Blue;">ProgressEvent</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: #ffa500;">//bytesTotal is not accurate, and its 0 if server doesn't send Content-Length header.</span></li>
<li><span style="color: Blue;">console</span><span style="color: Gray;">.</span><span style="color: Teal;">text</span><span style="color: Gray;">+= </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Event: progress:-</span><span style="color: Navy;">\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">bytesLoaded: </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">event</span><span style="color: Gray;">.</span><span style="color: Teal;">bytesLoaded</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Navy;">\n\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Teal;">onHTTPStatus</span><span style="color: Olive;">(</span><span style="color: Blue;">event</span><span style="color: Gray;">:</span><span style="color: Blue;">HTTPStatusEvent</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: #ffa500;">//if httpStatus is 401, 403, 404, 500, 501, socket is closed.</span></li>
<li><span style="color: Blue;">console</span><span style="color: Gray;">.</span><span style="color: Teal;">text</span><span style="color: Gray;">+= </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Event: httpStatus (</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">event</span><span style="color: Gray;">.</span><span style="color: Teal;">status</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">)</span><span style="color: Navy;">\n\n</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">loadURL</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">request</span><span style="color: Gray;">:</span><span style="color: Blue;">URLRequest</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">URLRequest</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//call listsubs method of Bloglines</span></li>
<li><span style="color: Blue;">request</span><span style="color: Gray;">.</span><span style="color: Teal;">url</span><span style="color: Gray;"> = </span><span style="color: Blue;">END_POINT</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">listsubs</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">credentials</span><span style="color: Gray;">:</span><span style="color: Teal;">String</span><span style="color: Gray;"> = </span><span style="color: Blue;">Base64</span><span style="color: Gray;">.</span><span style="color: Blue;">encode</span><span style="color: Olive;">(</span><span style="color: Blue;">email</span><span style="color: Gray;"> + </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">:</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Teal;">password</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//create HTTP Auth request header</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">authHeader</span><span style="color: Gray;">:</span><span style="color: Blue;">URLRequestHeader</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">URLRequestHeader</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Authorization</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">,</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">Basic </span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> + </span><span style="color: Blue;">credentials</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//add the header to request</span></li>
<li><span style="color: Blue;">request</span><span style="color: Gray;">.</span><span style="color: Blue;">requestHeaders</span><span style="color: Gray;">.</span><span style="color: Teal;">push</span><span style="color: Olive;">(</span><span style="color: Blue;">authHeader</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//make the request.</span></li>
<li><span style="color: Blue;">loader</span><span style="color: Gray;">.</span><span style="color: Teal;">load</span><span style="color: Olive;">(</span><span style="color: Blue;">request</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&lt;</span><span style="color: #8b0000;">/</span><span style="color: Red;">mx:Script&gt;</span></li>
<li><span style="color: Red;">&lt;mx:Button label=&quot;Load URL&quot; click=&quot;loadURL()&quot;</span><span style="color: #8b0000;">/</span><span style="color: Gray;">&gt;</span></li>
<li><span style="color: Gray;">&lt;</span><span style="color: Teal;">mx</span><span style="color: Gray;">:</span><span style="color: Blue;">TextArea</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">console</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Teal;">width</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">100%</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Teal;">height</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">100%</span><span style="color: #8b0000;">&quot;/</span><span style="color: Red;">&gt;</span></li>
<li><span style="color: Red;">&lt;</span><span style="color: #8b0000;">/</span><span style="color: Teal;">mx</span><span style="color: Gray;">:</span><span style="color: Teal;">Application</span><span style="color: Gray;">&gt;</span></li></ol></div>
<p><strong>公式サイト：</strong> </p>
<p><a title="http://code.google.com/p/as3httpclient/" href="http://code.google.com/p/as3httpclient/">http://code.google.com/p/as3httpclient/</a></p>
<h3>Related Posts</h3>
<ul class="related_post">
<li><a href="http://digitechlog.com/2010/05/17/open-source-library-betweenas3-tutorials.html" title="オープンソースのASライブラリBetweenAS3のチュートリアル">オープンソースのASライブラリBetweenAS3のチュートリアル</a></li>
<li><a href="http://digitechlog.com/2010/04/19/fzip-actionscript-3-open-source-class-library.html" title="FZip: ZIP読込み、作成用AS3のライブラリ">FZip: ZIP読込み、作成用AS3のライブラリ</a></li>
<li><a href="http://digitechlog.com/2009/05/05/ape-actionscript-physics-engine-is-an-as3-open-source-2d-physics-engine-for-use-in-flash-and-flex.html" title="APE(ActionScript Physics Engine): FlashやFlexで利用できるAS3で書かれたオープンソースの2D物理エンジン">APE(ActionScript Physics Engine): FlashやFlexで利用できるAS3で書かれたオープンソースの2D物理エンジン</a></li>
<li><a href="http://digitechlog.com/2009/01/20/flexcover-an-open-source-code-coverage-tool-for-flex-air-and-as3.html" title="Flexcover: Flex／AIR／AS3用のオープンソースのコードカバレッジ（テストのコード網羅チェック）ツール">Flexcover: Flex／AIR／AS3用のオープンソースのコードカバレッジ（テストのコード網羅チェック）ツール</a></li>
<li><a href="http://digitechlog.com/2011/11/08/php-screw.html" title="オープンソースソフトウェアPHP ScrewでPHPスクリプトを暗号化する">オープンソースソフトウェアPHP ScrewでPHPスクリプトを暗号化する</a></li>
<li><a href="http://digitechlog.com/2011/02/27/as3%e3%81%aetween%e7%b3%bb%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa%e3%80%8ctweenlite%e3%80%8d%e3%81%ae%e7%b4%b9%e4%bb%8b%e3%81%ae%e7%ba%8f%e3%82%81.html" title="AS3のTween系ライブラリ「TweenLite」の紹介の纏め">AS3のTween系ライブラリ「TweenLite」の紹介の纏め</a></li>
<li><a href="http://digitechlog.com/2010/03/12/7-asynchronous-processing-open-source-actionscript-library.html" title="７+ AS3で非同期処理のオープンソースのライブラリ一覧">７+ AS3で非同期処理のオープンソースのライブラリ一覧</a></li>
<li><a href="http://digitechlog.com/2010/02/28/as3soundeditorlib-actionscript-3-library-for-sound-playback-spectrum-display-and-cue-point-display.html" title="as3soundeditorlib: オープンソースのActionScript 3サウンド編集ライブラリ">as3soundeditorlib: オープンソースのActionScript 3サウンド編集ライブラリ</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://digitechlog.com/2010/03/22/actionscript3-utils-classes-to-extend-http-https-flash-player-9.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>７+ AS3で非同期処理のオープンソースのライブラリ一覧</title>
		<link>http://digitechlog.com/2010/03/12/7-asynchronous-processing-open-source-actionscript-library.html</link>
		<comments>http://digitechlog.com/2010/03/12/7-asynchronous-processing-open-source-actionscript-library.html#comments</comments>
		<pubDate>Fri, 12 Mar 2010 08:58:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[オープンソース]]></category>
		<category><![CDATA[ライブラリ]]></category>
		<category><![CDATA[非同期処理]]></category>

		<guid isPermaLink="false">http://digitechlog.com/2010/03/12/7-asynchronous-processing-open-source-actionscript-library.html</guid>
		<description><![CDATA[以前発表した「ActionScript Libraryリスト」には、「Thread – 疑似スレッド」、「ASDeferred – JSDeffered の AS3 版」、「Chain – 非同期処理をカンタンに」と「Command – fladdict 製 Command ライブラリ」の四つを紹介しましたね。
今回では、まず「非同期処理」ってなんということを簡単で記述します。簡単でといえば、
・「同期処理」とは一つの処理が終わるまで次の処理が行われない処理のことです。   ・「非同期処理」とは前の処理とは関係なく次の処理が行われることです。
 
非同期処理はリッチクライアントのUIのプロセスバーが重いのはデータを取得・更新の時、毎回Valueを更新する時よく使われています。
次はAS3で非同期処理のオープンソースのライブラリ一覧です。
１）、flashrod Job
非同期処理の同期化を助ける非常にシンプルな方法です。引数なしのstartメソッドで実行が開始され、完了時にfinishedを送出するものを Jobとし、全てのクラスはJobを実装します。たとえ同期処理でも、完了時にfinishedを送出することが求められます。

合成可。SequenceやConcurrentはJobインターフェースを実装している。 
並列実行可。Concurrentクラスを使う。 
エラーについては扱っていない。 
続行可。たとえエラーが発生しても、finishedイベントを送出するようJobを実装すればよい。 
中止は扱っていない。 
値の受け渡しは不可。Job側で結果を保持しておく、などの必要があり。 
traceすらもJobの実装クラスになる。クロージャ渡せるようにしたい人は各自でといった感じ。 
非同期処理の構築はコンストラクタでのみ行われ、その後の変更は不可。 
Job#start()で明示的な実行を行う。 
WaitやURLGetを除いた複合非同期処理は再実行不可。一度完了した頃には配列が空になるため。 
進捗は通知されない。 
完了通知はAS3のイベントモデルに準拠している。イベントからJobを作る汎用メソッドは特にない。 

２）、fladdict Command
引数なしのexecuteメソッドで実行が開始され、完了時にcompleteを送出するものをICommandとし、全てのクラスは ICommandを実装します。たとえ同期処理でも、完了時にcompleteを送出することが求められますが、単に同期処理を追加したいだけであればわざわざクラスを作らずとも、Commandというクラスのコンストラクタにスコープと関数と引数を指定してやるだけで済みます。一方の非同期処理は AsyncCommandでラップでき、Commandと同様のコンストラクタ引数に加えて、イベントディスパッチャと完了を通知するイベント名を指定して作成します。

合成可。SerialCommandやParallelCommandはICommandインターフェースを実装している。 
並列実行可。ParallelCommandクラスを使う。 
エラーについては扱っていない。 
続行可。たとえエラーが発生しても、completeイベントを送出するようなCommandを実装すればよい。AsyncCommandを利用する場合、ディスパッチャのエラーイベントについて関知しないことに注意。 
ICommand.asを見るに、中止は予定しているように見えるが、未実装と思われる。 
値の受け渡しは不可。Command側で結果を保持しておく、などの必要あり。 
複合非同期処理の基底クラスであるBatchCommandには各種ショートカットメソッドがあり、後続の処理の追加を簡単にしている。 
非同期処理の追加を実行中にもできるが、実行後に追加した処理は開始されないと思われる。 
ICommand#execute()で明示的な実行を行う。 
複合非同期処理の進捗状況を保存する_indexというカウンタがリセットされないため、再実行は想定していない操作と思われる。 
進捗は通知されない。 
完了通知はAS3のイベントモデルに準拠している。メソッドとその完了を告げるイベントをワンセットとして非同期処理を表現する AsyncCommandが提供されている。 

３）、Mochikit Deferred
JSになってしまいますが、ASへの移植も容易なため紹介します。MochikitのDeferredは以下が大変参考になります。   http://d.hatena.ne.jp/brazil/20080721/1216580402

合成可。コールバックの戻り値がDeferredの場合、チェーンの実行は一時停止され、子チェーンの完了を待機。 
並列実行可。DeferredListを使う。 [...]]]></description>
			<content:encoded><![CDATA[<p>以前発表した「<a href="http://digitechlog.com/2008/10/19/the-list-of-actionscript-library.html">ActionScript Libraryリスト</a>」には、「Thread – 疑似スレッド」、「ASDeferred – JSDeffered の AS3 版」、「Chain – 非同期処理をカンタンに」と「Command – fladdict 製 Command ライブラリ」の四つを紹介しましたね。</p>
<p>今回では、まず「非同期処理」ってなんということを簡単で記述します。簡単でといえば、</p>
<p>・「同期処理」とは一つの処理が終わるまで次の処理が行われない処理のことです。   <br />・「非同期処理」とは前の処理とは関係なく次の処理が行われることです。</p>
<p> <span id="more-940"></span>
<p>非同期処理はリッチクライアントのUIのプロセスバーが重いのはデータを取得・更新の時、毎回Valueを更新する時よく使われています。</p>
<p>次はAS3で非同期処理のオープンソースのライブラリ一覧です。</p>
<p>１）、<a href="http://d.hatena.ne.jp/flashrod/20070815#1187191083"><strong>flashrod Job</strong></a></p>
<p>非同期処理の同期化を助ける非常にシンプルな方法です。引数なしのstartメソッドで実行が開始され、完了時にfinishedを送出するものを Jobとし、全てのクラスはJobを実装します。たとえ同期処理でも、完了時にfinishedを送出することが求められます。</p>
<ol>
<li>合成可。SequenceやConcurrentはJobインターフェースを実装している。 </li>
<li>並列実行可。Concurrentクラスを使う。 </li>
<li>エラーについては扱っていない。 </li>
<li>続行可。たとえエラーが発生しても、finishedイベントを送出するようJobを実装すればよい。 </li>
<li>中止は扱っていない。 </li>
<li>値の受け渡しは不可。Job側で結果を保持しておく、などの必要があり。 </li>
<li>traceすらもJobの実装クラスになる。クロージャ渡せるようにしたい人は各自でといった感じ。 </li>
<li>非同期処理の構築はコンストラクタでのみ行われ、その後の変更は不可。 </li>
<li>Job#start()で明示的な実行を行う。 </li>
<li>WaitやURLGetを除いた複合非同期処理は再実行不可。一度完了した頃には配列が空になるため。 </li>
<li>進捗は通知されない。 </li>
<li>完了通知はAS3のイベントモデルに準拠している。イベントからJobを作る汎用メソッドは特にない。 </li>
</ol>
<p>２）、<a href="http://fladdict.net/blog/2008/01/as3commands.html"><strong>fladdict Command</strong></a></p>
<p>引数なしのexecuteメソッドで実行が開始され、完了時にcompleteを送出するものをICommandとし、全てのクラスは ICommandを実装します。たとえ同期処理でも、完了時にcompleteを送出することが求められますが、単に同期処理を追加したいだけであればわざわざクラスを作らずとも、Commandというクラスのコンストラクタにスコープと関数と引数を指定してやるだけで済みます。一方の非同期処理は AsyncCommandでラップでき、Commandと同様のコンストラクタ引数に加えて、イベントディスパッチャと完了を通知するイベント名を指定して作成します。</p>
<ol>
<li>合成可。SerialCommandやParallelCommandはICommandインターフェースを実装している。 </li>
<li>並列実行可。ParallelCommandクラスを使う。 </li>
<li>エラーについては扱っていない。 </li>
<li>続行可。たとえエラーが発生しても、completeイベントを送出するようなCommandを実装すればよい。AsyncCommandを利用する場合、ディスパッチャのエラーイベントについて関知しないことに注意。 </li>
<li>ICommand.asを見るに、中止は予定しているように見えるが、未実装と思われる。 </li>
<li>値の受け渡しは不可。Command側で結果を保持しておく、などの必要あり。 </li>
<li>複合非同期処理の基底クラスであるBatchCommandには各種ショートカットメソッドがあり、後続の処理の追加を簡単にしている。 </li>
<li>非同期処理の追加を実行中にもできるが、実行後に追加した処理は開始されないと思われる。 </li>
<li>ICommand#execute()で明示的な実行を行う。 </li>
<li>複合非同期処理の進捗状況を保存する_indexというカウンタがリセットされないため、再実行は想定していない操作と思われる。 </li>
<li>進捗は通知されない。 </li>
<li>完了通知はAS3のイベントモデルに準拠している。メソッドとその完了を告げるイベントをワンセットとして非同期処理を表現する AsyncCommandが提供されている。 </li>
</ol>
<p>３）、<a href="http://mochikit.com/doc/html/MochiKit/Async.html"><strong>Mochikit Deferred</strong></a></p>
<p>JSになってしまいますが、ASへの移植も容易なため紹介します。MochikitのDeferredは以下が大変参考になります。   <br /><a href="http://d.hatena.ne.jp/brazil/20080721/1216580402">http://d.hatena.ne.jp/brazil/20080721/1216580402</a></p>
<ol>
<li>合成可。コールバックの戻り値がDeferredの場合、チェーンの実行は一時停止され、子チェーンの完了を待機。 </li>
<li>並列実行可。DeferredListを使う。 </li>
<li>エラーハンドラはaddErrBackで追加できる。ただし、ErrorEventが送出されたときにerrbackを呼ぶように作っておく必要はある。ハンドラ内で非Errorを返した場合、回復したものとしてコールバックチェーンを再開。 </li>
<li>続行可。addBothで、エラーが起こるにせよ起こらないにせよ実行したい後続の処理を追加すればよい。 </li>
<li>中止は可。何もしないと、現在の処理を終えてからようやく中止されるが、コンストラクタに適切なキャンセル関数を指定してやれば即座に中止する Deferredを作ることも可。 </li>
<li>値はコールバック関数の引数で受け取り、戻り値で後続の処理に引き継ぐ。 </li>
<li>クロージャを追加できる。第2引数以降を指定すれば、引数を束縛した関数を追加することもできる。 </li>
<li>非同期処理の追加をいつでもできる。実行後であれば、追加した瞬間実行される。ただし、子チェーンであると判明したDeferredには以後コールバックの追加は許されない(Chained Deferreds can not be re-used)。Mochikitの実装でそれを許すと、処理の流れは2本に分岐してしまうからか？ </li>
<li>Deferredを返す関数を呼び出して、非同期処理の実行を開始すると同時に、後追いでチェーンを構築するケースが多いと思う(暗黙的開始)。あるいは事前にチェーンを構築してcallbackを呼び出す(明示的開始)。 </li>
<li>Deferredは1回しかcallbackが許されない(AlreadyCalledError)。Deferredを返す関数は毎回フレッシュなDeferredを使うのが原則と思われ、そのように実装している限りにおいて再実行は可能といえなくもないが、オブジェクトは再利用できていない。 </li>
<li>進捗は通知されない。 </li>
<li>完了通知をイベントに戻したければ、誰かにdispatchEventしてもらうことになる。イベントを一度だけリッスンしてDeferredを返す関数を定義しておけば、いろいろと便利になると思われる。 </li>
</ol>
<p>４）、<a href="http://coderepos.org/share/wiki/JSDeferred"><strong>cho45 JSDeferred</strong></a></p>
<p>Mochikitの実装をもっとシンプルにできそうなので作ったとのライブラリです。こちらもJSですが、AS3へ移植したものもあるようです(並列処理を直列に繋ぐためのショートカットメソッドDeferred#parallelが加えられている点を除き同じかと思わる)。Mochikitとの違いとして、単方向リストを使用したミニマルな実装であること、nextをメソッドチェーンすると最後に追加された Deferredを指すこと、上の例のように開始は即座でなく同期処理の後に先送りされること(さもないとチェインの構築が間に合わない？)、callや failによるチェーンの再実行が許可されていること、チェーンの実行後にハンドラを追加しても自動的には実行されないこと、などがあると思います。</p>
<ol>
<li>合成可。コールバックの戻り値がDeferredの場合、このようにチェーンを繋ぎなおす。 </li>
<li>並列実行可。Deferred.parallelを使う。 </li>
<li>エラーハンドラはerrorで追加できる。ただし、ErrorEventが送出されたときにfailを呼ぶように作っておく必要はある。ハンドラの中で改めてthrowしなければ、回復したものとしてコールバックチェーンを再開。 </li>
<li>続行可。エラーが起こる可能性がある処理の後に、何もしないエラーハンドラを追加すればよい。 </li>
<li>中止は可。ただし、直列化された非同期処理の中止は、現在実行中のDeferredをライブラリ側で関知してくれないため、少々やりにくいと思われる。 </li>
<li>値はコールバック関数の引数で受け取り、戻り値で後続の処理に引き継ぐ。 </li>
<li>クロージャを追加できる。引数を束縛させる機能はないので、やりたければ自前でやる。 </li>
<li>非同期処理の追加を実行中にもできるが、実行後に追加した処理は開始されないと思われる。 </li>
<li>先頭のnextがディレイを噛ませた隙にチェーンを構築するケースが多いと思う(暗黙的開始)。あるいは事前にチェーンを構築してcallを呼び出す(明示的開始)。 </li>
<li>チェーン先頭のDeferredを保持しておいて必要なときにcallすれば可。 </li>
<li>進捗は通知されない。 </li>
<li>完了通知をイベントに戻したければ、誰かにdispatchEventしてもらうことになる。イベントを一度だけリッスンしてDeferredを返す関数を定義しておけば、いろいろと便利になると思われる。 </li>
</ol>
<p>５）、<a href="http://void.heteml.jp/blog/archives/2008/01/chain.html"><strong>voidelement Chain</strong></a></p>
<p>JSDeferredのAS実装であるASDeferredをベースに、よく使う処理を簡単に書けるような工夫が施されています。直列処理の追加は、next(function() {&#8230;})のような基本的なメソッドに加え、イベントを一度だけ待つlistenや、アニメーションを行うtweenerといった各種ショートカットメソッドを直にメソッドチェーンできるようになっています。並列処理の追加は、辞書を渡すようになっており、それぞれの非同期処理にラベルをつけて結果を後から参照しやすくするついでに、定型的な処理であればそれも辞書で書いてしまおう、といった感じになっています。</p>
<ol>
<li>合成可。コールバックの戻り値がChainの場合、このようにチェーンを繋ぎなおす。 </li>
<li>並列実行可。parallelを使う。 </li>
<li>エラーハンドラはerrorで追加できる。ライブラリで提供されているChainは、ErrorEventが送出されたときにエラーハンドラが呼ばれるようになっている。ハンドラの中で改めてthrowしなければ、回復したものとしてコールバックチェーンを再開。 </li>
<li>続行可。エラーが起こる可能性がある処理の後に、何もしないエラーハンドラを追加すればよい。 </li>
<li>中止は可。ただし、直列化された非同期処理の中止は、現在実行中のChainをライブラリ側で関知してくれないため、少々やりにくいと思われる。 </li>
<li>値はコールバック関数の引数ではなく、this.dataで受け取り、戻り値で後続の処理に引き継ぐ。戻り値のない処理がチェーンの途中に挟まっても、最後に得たdataを辿れるよう双方向リストになっている。多分。 </li>
<li>nextやerrorでクロージャを追加できる他、よく使う処理の追加は専用メソッドで行える。 </li>
<li>非同期処理の追加を実行中にもできるが、実行後に追加した処理は開始されないと思われる。 </li>
<li>先頭のChain.hogehogeがディレイを噛ませた隙にチェーンを構築するケースが多いと思う(暗黙的開始)。あるいは事前にチェーンを構築してexecuteを呼び出す(明示的開始)。 </li>
<li>チェーン先頭のChainを保持しておいて必要なときにexecuteすれば可。 </li>
<li>進捗は通知されない。 </li>
<li>完了通知をイベントに戻したければ、誰かにdispatchEventしてもらうことになる。ListenerChainを利用すると、イベントから簡単にChainを作れる。 </li>
</ol>
<p>６）、<a href="http://subtech.g.hatena.ne.jp/secondlife/20080127/1201359890"><strong>secondlife Chain</strong></a></p>
<p>AS3 でイベントチェインでよしなにしたい時って、結局非同期な並列処理の時が多い。それ以外は普通に関数で回すとわかりにくくなるので OO った方がよいかなー、と自分の中では落ち着いてる。特に無名関数の適用は、関数の引数を予めきちんと書かなくてはならなくて(&#8230;restでもいいけど)面倒だったりする。 </p>
<p>AS3 では無名関数を使うところでJSより便利だなー、というところはあまり無い。そもそも組み込みの引数に無名関数渡すAPIが使いにくい。Array#forEach なんかは三つも引数書くのが冗長…。for each あるしね。実装側も無名関数が渡ってきて apply で適用しようとしても引数の型があわないとエラーになるし。無名関数の引数の数とかいちいち重いE4Xリフレクション使わないでも解りたい。あとバインドメソッドという無名関数とは違うメソッドクロージャ(this が確実にそのインスタンスに束縛される)を意識せずに使うことが出来るので、これでまた無名関数の利用価値が減ってしまった。唯一意識的に使うのはスコープあたりでゴニョゴニョしたい時かな。 </p>
<p>話は飛んで Deferred の概念的なものは Event/EventDispatcher で代用することができて。AS3 では EventDispatcher が組み込みであって、かつだいたいの非同期処理はイベント終了時に大概なんらかのイベントを送出する。ほとんどの場合は Event.COMPLETE だ。足りないのは DeferredList 的なもの。並列処理をスムーズに行いたいよね。 </p>
<p>で、組み込みの Event/EventDispatcher を使ってなんかうまく DeffererdList っぽいこと出来ないかな、と思ってて以前作ってほったらかしにしていた Chain クラスがあったのでちょっと書き直してそれなりに使えるようにしてみた。</p>
<p>７）、<a href="http://www.libspark.org/wiki/Thread"><strong>beinteractive Thread</strong></a></p>
<p>addEventListenerを隠蔽し、非同期処理を同期処理の感覚で書けるライブラリということですが、むしろ状態遷移の多いリアルタイム処理をスマートに書けるようにするためのフレームワークといった感じで、今までのものとはちょっと異質です。個々のThreadは自分の依存するリソースやイベントのことだけ考えればよく、それらの待機は同期処理の感覚で行えるため、時間的しがらみを超えてコントローラを分割できるようになります。また、ロード中やオーバー待ちといった状態を一つのメソッドと対応付けできるので、状態遷移図を素直にコードに落とし込むようにしてプログラムが書けるのもメリットの一つかと思います。</p>
<ol>
<li>合成可。SerialExecutorやParallelExecutorはThreadを継承している。 </li>
<li>並列実行可。ParallelExecutorを使う。 </li>
<li>エラーハンドラはerrorで追加できる。第一引数には補足するエラーの型を、第二引数にハンドラを指定。ハンドラが設定されていなかったり、ハンドラ中にさらにエラーが起きれば、親スレッドに伝播。ハンドラが無事終了すると回復したものとしてエラーが発生する前に実行されていた実行関数から再開するが、ハンドラ内でnextを呼び出した場合はそこから再開。 </li>
<li>続行可。<a href="http://www.libspark.org/svn/as3/Thread/tags/v1.0/samples/flickrsphere/src/org/libspark/flickrsphere/threads/flickr/LoadFlickrPhotoImagesThread.as">このように</a>する。SerialExecutorが途中でこけたとき、無視して続行するにはどうするんだろう？ </li>
<li>中止はinterruptで可。ただし、割り込みハンドラを設定していない状態で待機中のThreadを中止しようすると InterruptedErrorとなる。自作Threadを中止に対応させるにはcheckInterruptedで割り込みされたか調べて行う。 </li>
<li>値の受け渡しというか保持は、Threadごとの実装となる。例えば、URLLoaderThreadはloaderを保持する。それとは別に、遅延リソースの生産者と消費者を結合させないためにMonitorが使える。 </li>
<li>スレッドを使うためのスレッドを書かなければいけないケースがほとんどだと思われる。まるでネズミk(ry </li>
<li>だんだん質問に答える意味がよく分からなくなってきたが、SerialExecutorのaddThreadは実行中にもできると思うけど実行後に追加した処理は開始されないと思われる。 </li>
<li>Thread#startで開始。 </li>
<li>startは一度しか呼び出せないので、新規のスレッドを作って再実行する。 </li>
<li>進捗はIProgressを実装した各種Threadからイベントで通知される。それらのトータルの進捗を通知してほしければ、それぞれを MultiProgressにaddProgressしてやる。ただし、重みを指定する必要があるので、ファイルサイズの比は事前に調べておく。 </li>
<li>Threadを使っていろいろと処理した後に、続きの処理はイベントドリブンにしたいとか万が一あれば、 EventDispatcherThreadを継承してdispatchEventする感じになると思われる。eventメソッドで特定のイベントが起きるまでThreadを待機させることができる。ただし、nextメソッドによって次の実行関数が設定された場合は待機しない。これをうまく利用して、読みやすい状態マシンを書くこともできるようだ。 </li>
</ol>
<h3>Related Posts</h3>
<ul class="related_post">
<li><a href="http://digitechlog.com/2009/05/11/tweener-is-a-class-used-to-create-tweenings-via-actionscript-code-on-flash-platform.html" title="Tweener: 画像を簡単に演出をつけるActionScriptのアニメーション用オープンソースのライブラリ">Tweener: 画像を簡単に演出をつけるActionScriptのアニメーション用オープンソースのライブラリ</a></li>
<li><a href="http://digitechlog.com/2009/05/02/casa-lib-is-a-flexible-actionscript-library-designed-to-streamline-common-chores-and-act-as-a-solid.html" title="CASA Lib: 柔軟なActionScript共通基盤としてオープンソースのライブラリ">CASA Lib: 柔軟なActionScript共通基盤としてオープンソースのライブラリ</a></li>
<li><a href="http://digitechlog.com/2009/04/10/as3cannonball-dom-html-css-browser-library-for-actionscript-3.html" title="as3cannonball: DOM+HTML+CSS+BrowserのActionScript 3ライブラリ">as3cannonball: DOM+HTML+CSS+BrowserのActionScript 3ライブラリ</a></li>
<li><a href="http://digitechlog.com/2010/04/19/fzip-actionscript-3-open-source-class-library.html" title="FZip: ZIP読込み、作成用AS3のライブラリ">FZip: ZIP読込み、作成用AS3のライブラリ</a></li>
<li><a href="http://digitechlog.com/2010/02/28/as3soundeditorlib-actionscript-3-library-for-sound-playback-spectrum-display-and-cue-point-display.html" title="as3soundeditorlib: オープンソースのActionScript 3サウンド編集ライブラリ">as3soundeditorlib: オープンソースのActionScript 3サウンド編集ライブラリ</a></li>
<li><a href="http://digitechlog.com/2010/02/13/as3unit-actionscript-3-junit-for-flash.html" title="AS3Unit: ActionScript 3.0上JUnit4の移植、単体テストを行うためのフレームワーク">AS3Unit: ActionScript 3.0上JUnit4の移植、単体テストを行うためのフレームワーク</a></li>
<li><a href="http://digitechlog.com/2010/02/07/foam-as3-2d-rigid-body-physics-engine.html" title="FOAM-AS3: ActionScript 3で開発されたオープンソースの２D物理エンジン">FOAM-AS3: ActionScript 3で開発されたオープンソースの２D物理エンジン</a></li>
<li><a href="http://digitechlog.com/2010/01/28/box2dflashas3-open-source-physics-library-box2d.html" title="Box2DFlashAS3: 物理演算シミュレーションを可能にするActionScriptライブラリ">Box2DFlashAS3: 物理演算シミュレーションを可能にするActionScriptライブラリ</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://digitechlog.com/2010/03/12/7-asynchronous-processing-open-source-actionscript-library.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

