サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
d.hatena.ne.jp/lyokato
OAuth::Lite 1.25変更点 今までのget_access_token my $access_token = $consumer->get_access_token( url => $access_token_url, token => $request_token, verifier => $verification_code, ); tokenリクエストトークンを渡さなかったり verifierを渡さなかったりしたら、エラーとして扱っていました。 これはOAuth 1.0 Rev a で必ず必要なパラメータだったためです。 またメソッドの返り値として得られるのはOAuth::Lite::Tokenオブジェクトでした。 しかしSession Extensionや、先日のxAuthなどでは、token以外の情報も レスポンスに含まれるようになってきました。 また、xAuthでは、
最近twitter APIまわりで話題に出てきているようなので。 ちゃんと追いかけきれてないけど、恐らくこれのことですね。 http://tools.ietf.org/html/draft-dehora-farrell-oauth-accesstoken-creds-00 OAuth WRAPではUsername and Password Profileとして組み込まれてます。 http://d.hatena.ne.jp/lyokato/20091118/1258524429 WRAP/2.0が来るまでにOAuth1.0aで使いたい時に。 利用状況 ブラウザがない、あるいはブラウザを使うのが適切ではない状況での いわゆるデスクトップアプリのためのもの。 組み込みだったり、搭載されているブラウザが貧弱だったりとか。 ブラウザと連携させたくない、あるいは出来ないとき。 仕様 まず始めにクライア
ActionScriptのByteArrayクラスにはreadMultiByteとwriteMultiByteというメソッドがあり、 こいつを使えば、日本語の文字コードも変換できます。 ということになっているのですが、環境によって動作が不安定なようです。 実際に、自分もこれらのメソッドを利用していて、 Leopardで通ってたテストがSnow Leopard(64bitモード)で実行したらこけるという場面に遭遇しました。 原因(SDKのバージョンとか, JDKが64bitだとどうとか)はまだ探りきれてません。 さらに、半角カナの扱いなど、日本語独特の問題もありますし、今後も適切なメンテが行われるか分かりません。 (というかそもそも、バイト列を扱う機能と、文字コードの変換を扱う機能を同じクラスにしてしまうのはいかがなものか) そんなわけで、as3jcodeを書いてみました。 http://g
ActionScriptはE4Xを実装してるので、メモリ食ってもいい環境で DOM操作をしたいときは(名前空間が絡まなければ)比較的簡単なのですが、 ストリームの処理をしたいときには困ります。 最近のリアルタイム系コンテンツで使いたいということで、as3saxparserというのを書きました。 http://github.com/lyokato/as3saxparser ハンドラの準備 ハンドラはIXMLSAXParserインタフェースを実装している必要があります。 IXMLSAXParserインタフェースを直接実装するか、 XMLSAXDefaultHandlerを継承するかします。 IXMLSAXParserインタフェースを直接実装する場合は次のようになります。 import org.coderepos.xml.sax.IXMLSAXParser; import org.coderep
alchemyについて C/C++で書かれたコードをActionScript Byte Codeに変換することによって、 AS3とC/C++で連携が可能になる。 注意点 C/C++で書かれてgccでコンパイル済みのネイティブコードとリンクするわけではなく、C/C++コードをllvmを仲介してAction Script Bytecodeにするだけ。 なのでネイティブコード程、実行速度は速くはない でもPure AS3よりは速い。最適化とかの影響。 Flash Playerのサンドボックスで動くので、threadやIOに制限がある。 なので、そのへんに転がってるC/C++のコードがなんでも動くわけではない。 参考 公式 http://labs.adobe.com/technologies/alchemy/ 公式C API http://labs.adobe.com/wiki/index.php
as3ds as3dsというライブラリがあります。 http://lab.polygonal.de/ds/ ActionScriptでは、C++のSTLやJavaが最初から同梱しているような データ構造を簡単に扱うライブラリがコアには含まれません。 このライブラリを使えば各種データ構造を扱えるようになります。 for Game Developerと書いてありますが、ゲーム以外でも使えると思います。 [追記:2009/11/23] コメントを頂いて気づいたのですが、 作者がhaXe版を作り、as3版のメンテを止めてしまっているようです。 google codeのプロジェクトページもなくなっていてダウンロードできません。 githubにforkされているようなので、そちらから入手するとよいです。 http://github.com/jaybaird/as3ds/ 利用できるデータ構造 Link
DI - 依存性の注入 DIについては以下のようなエントリを見ておくといいです。 ファウラーの記事の訳 http://kakutani.com/trans/fowler/injection.html perlを使った分かりやすいDIの解説 http://dann.g.hatena.ne.jp/dann/20080911/p1 http://dann.g.hatena.ne.jp/dann/20080913/p1 ASでのDIコンテナ ActionScriptでDIを行いたいときに次のようなDIコンテナが存在するようです。 参考: FlexのDIコンテナ比較 - よねのはてな http://d.hatena.ne.jp/yone098/20090704/1246846080 Prana Framework SmartyPants-IoC swizframework ということで、Google
http://developers.facebook.com/news.php?blog=1&story=335 SixApartからFacebookに移籍したDavid Recordonのエントリ。 次のOAuthの進化として、OAuth WRAPというものが提案されているようです。 http://oauth-wrap-wg.googlegroups.com/web/WRAP-v0.9.7.2.pdf とりあえずざっくり読んだまとめ。 現時点での、OAuth Core 1.0a からの変更点を中心に。 用語 Consumer -> Client Service Provider -> Authroization Server ConsumerからClientへの変更に従って、 consumer keyは、client identifierになります。 consumer secretは、c
PerlのOpenIDクライアントであるOpenID-Liteをデベロッパリリースしました。 http://search.cpan.org/~lyokato/OpenID-Lite/ OpenID Enabledのruby-openidを参考に、OpenID2.0に準拠させてあります。 http://openidenabled.com/ 特徴 用語を2.0のspecに出来るだけ合わせた。 DH-SHA256, HMAC-SHA256の対応 Crypt::DH::GMPの採用(http://mt.endeworks.jp/d-6/2008/04/crypt-dh-gmp.html) XRI::Resolution::LiteによるXRI inameでのディスカバリのサポート(http://d.hatena.ne.jp/ZIGOROu/searchdiary?word=%2a%5bXRI%5d
22日に行われたYokohama.pm#2にて ActionScript3で実装中の、いたるところにPerlっぽさが 溢れるORマッパであるas3ormについて話をさせて頂きました。 デジハリ横浜校万歳 発表について 次のような構成でas3ormを紹介 ORMとは何か、Perl実装について かなり略して、参照先だけの紹介 FlashとAIRについて どんなシーンで利用されているか as3orm SYNOPSISを紹介 といった感じでまとめました。 実装中のコードはCodeReposに置いてあります。 http://coderepos.org/share/browser/lang/actionscript/as3orm 発表資料どこかに置こうと思ったんですけど、 クレジットカードの有効期限がいつの間にか切れてて レンタルサーバー失効してしまっていたので、 そのうち何とかします。 もしくは別エ
OAuth Consumer Request 前回も簡単に触れましたが、OAuth Consumer Requestという拡張仕様があり、 これは二者間でのやり取りを行うためのものでした。OAuthのプロトコル中で 重要なパラメータは、トークンとシグネチャ(署名)です。トークンは、ある エンドユーザーがサービスプロバイダ上に持っているリソースに対して、 特定のコンシューマがアクセスしてもよいという認可を与えたという証明となります。 また、コンシューマはリクエスト毎に共有鍵、もしくは秘密鍵で署名をつけることにより、 不正なコンシューマの偽装を防ぐことが出来ます。 二者間でやりとりを行う場合、エンドユーザは登場しません。なので、トークンを 扱う必要がなく、署名の検証のみで認証を行うことになります。 事前にリクエストトークンの発行、エンドユーザをリダイレクトさせて承認をもらう、 承認済のリクエス
OAuthプロトコル上でのプレイヤー数について 三者間のやりとり OAuthは基本的に、サービスプロバイダ、コンシューマ、エンドユーザの、 三者間でのやりとりのためのプロトコルです。(3-leggedと呼ばれます。) 二者間でのやりとり また、サービスプロバイダとコンシューマがダイレクトにやり取りを行う OAuth Consumer Requestという拡張仕様もあります。(こちらは2-legged OAuthと呼ばれます。)トークンを使わずに署名だけでやり取りを行います。 元々は、コンシューマが、エンドユーザーでなく自分自身のデータを取得 したいときに利用されるためのものでしたが、OpenSocialにおいて、複雑な やり取りを行うときに、エンドユーザーの混乱を防ぐために用いられるシーン があります。こちらについては後日説明します。 その他 OAuthのプロトコルでは、上に挙げた、3-l
あるサービスプロバイダが、OpenID、OAuthを利用したデータの提供の両方に対応している場合、 そのどちらもRP,Consumerとして利用したいというサービスがあった場合、OpenIDのために、 エンドユーザーをOPにリダイレクト、そしてまた、データを取得するAPIを叩きたいときに、 OAuthのフローに従って、エンドユーザーがプロバイダにリダイレクトさせて認可を求めなければ なりません。 二つの異なるプロトコルで、共にエンドユーザーの承認を求める画面出すこのフローは、 エンドユーザーを混乱させるものになります。 「なんで何回も飛ばすんだ。まとめて一度に認証させればいいだろ。」ってことですね。 それを可能にするためのOpenIDの拡張仕様として提案されているのが、 OpenID OAuth Extensionのようです。 http://step2.googlecode.com/svn
http://oembed.com/ eEmbedというのは、あるリソースのURL(例えばFlickrの特定の写真のページのURL)を サードパーティ上で、写真自体の埋め込みに変換したいときに、 埋め込みに必要なパラメータを取得するためのプロトコルみたいです。 mixiのデコリンク機能がイメージとして近いかもしれません。 http://alpha.mixi.co.jp/blog/?p=38 宮川さんが既にPerl Moduleにしてますね。 http://search.cpan.org/~miyagawa/Web-oEmbed-0.01/ 仕様を適当に訳したので載せておきます。 Spec oEmbedは、サードパーティのサイトのURLを埋め込み表現するためのフォーマットです。 これによって、ユーザーがそのリソースへのリンクをポストしたときに、 リソースをパースすること無しに、 写真や動画の
前回の記事で少し紹介したas3flexunitlibについてもう少し詳しく説明します。 Google Codeのプロジェクトページはこちら。 http://code.google.com/p/as3flexunitlib/ as3flexunitlibはAdobe Labsによって提供されている、 as3用のUnitTestのためのライブラリです。 as3corelibなどの他のライブラリでも、テストのためにflexunitが使用されています。 TestCase、TestSuiteを作成し、TestRunnerを埋め込んだmxmlによる GUIを起動してテストを走らせ、結果を見ることが出来ます。 成功例 失敗例 まずはmxmlを書いてGUIを用意します。 TestRunnerの準備 <?xml version="1.0" encoding="utf-8"?> <mx:Application
まだ完成では無いですが、だいぶ揃ってきたのでCodeReposに上げておきました。 http://coderepos.org/share/browser/lang/objective-c/Atompub SenTestingKitでの非同期のテストの仕方がどうも分からないので クライアントのほうががまだ全然です。 実際にアプリ作りながらデバッグしていこうかなと思ってます。 Feedのパース NSString *feedXMLString = @"<feed xmlns=\"\">...</feed>"; AtomFeed *feed = [ AtomFeed feedWithXMLString: feedXMLString ]; NSString *title = [ feed title ]; NSCalendarDate *updated = [ feed updated ]; Ent
前回リリースしたRubyのatomutil同様、PerlのAtom系ライブラリと できるだけ同じような感覚で操作できるように。 とりあえずcodereposに上げてありますので次のように取得できます。 まだGETしかテストしてないので全然robustじゃないですが。 svn co http://svn.coderepos.org/share/lang/actionscript/as3atompub 依存 次のライブラリに依存しています。 それぞれのソース、もしくはswcファイルを用意して、適切なディレクトリに 配置する必要があります。 as3corelib as3flexunitlib as3crypto as3httpclientlib HTTPの処理 WEB上でHTMLに貼付けたswfから直接APIを叩くこともないでしょうから、 AIRでの利用を想定しています。 as3httpclie
DJabberdに足りない機能 現在のDJabberdは旧Jabber仕様のまま、XMPP1.0に準拠していない部分が見られるのですが、 そのうち大きなものは次の機能になります。 SASLによる認証 リソースバインディング セッション プライバシーコントロール このあたりの実装を進めようと考えています。 XMPP Core, IM, その他主要な各種extensionの仕様をだいたい読み進め、 DJabberdのソースも一通り読んだので、ゆっくりと始めていこうかと思って一度まとめ。 Jabber/XMPPの認証 現在はSASLによる認証がXMPPの仕様で要求されています。 DJabberdでは、今までのJabberで使われていたiq-authのみがサポートされていて、 こちらの認証方式は、現在Non-SASL-Authenticationというextensionとして定義されているので こ
Life is beautiful: WSSEのセキュリティリスクとその対処法に関する一考察 このやり方では、SHA1というアルゴリズムをパスワード管理に使っているという事実を 公開してしまうことになるので、それもあまり嬉しくないかと思います。 もちろん、生でパスワードを保存しているより遥かにマシですが。 OAuthを使えば、必ずブラウザ上でログイン画面を通すことにより、 認証方式はサービス次第、パスワードをどのように管理してるかを 漏らすこともなくなります。 また、OpenIDのRPであるサービスが認証付きのAPIを提供したいと考えたとき、 エンドユーザのパスワードを持っていないわけですから、 WSSEやBasic認証は使えないのでOAuthが良い選択肢の一つになるでしょう。 (APIを利用したいユーザーにはそのためのIDとパスワードを別途登録させる、という選択肢もあります) ネガティブ
APML(Attention Profiling Markup Language)というのは、特定のユーザーの 興味の対象や、その度合いなどを表すためのマークアップです。 仕様 Bloglinesが採用を発表するなどして、 注目が高まってきています。 <APML xmlns="http://www.apml.org/apml-0.6" version="0.6"> <Head>...</Head> <Body>...</Body> </APML> このように、ルートエレメントはAPMLタグになります。 現在の最新バージョンは0.6ですので、それにあわせて ネームスペースとversionを指定しておきます。 そしてAPMLエレメントは、HeadとBodyエレメントを含まないといけません。 それぞれのエレメントについて解説していきます。 Head <Head> <Title>Example A
PerlのXML::Atom, XML::Atom::Service, XML::Atom::Ext::Threading, AtompubをRubyにportingしてみました。 atompubというネームスペースは既に確保されてた(ネームスペースだけ8月に確保されてて、具体的なファイルやリポジトリは何も無い…)ので atomutilという名前にしておきました。 RubyForge RDoc gem install atomutil まだDocumentやTestが足りず、非常にバギーだと思いますが、試してみたい方はどうぞ。 使い方はPerlのものとほぼ一緒です。詳しくは上のリンクからRDocを参照して下さい。 entry = Atom::Entry.new entry.title = 'My Entry' entry.summary = 'Summary' entry.updated
色々なテンプレートエンジンの記法が使える&軽量化&高速化をうたっている Template::Alloyを試してみました。 [% message | html %] [% FOR obj IN objs %] [% obj.key1 %] [% obj.key2 %] [% obj.key3 %] [% END %] こんなテンプレート(hello.tmpl)を用意 #!/usr/bin/perl use strict; use Benchmark qw/timethese cmpthese/; use Template; use Template::Alloy; use Template::Alloy::XS; my $message = '<b>Hello World!</b>'; my $objs = [ { key1 => 'foo', key2 => 'bar', key3 =>
Papervision3Dの行列操作クラスを使ってみる コンストラクタ var matrix:Matrix3D = new Matrix3D([ a, b, c, d, e, f, g, h, i, j, k, l ]); 同次座標を使うので4x4の行列になるが 最後の行は 0, 0, 0, 1 で固定。 したがって、コンストラクタでは 最初の3行4列のそれぞれの値を指定すればいい。 よく使う行列の取得 Identity Matrix var identity:Matrix3D = Matrix3D.IDENTITY; 1000 0100 0010 0001 X軸の回転行列 X軸で30度回転するMatrixを取得する var xMat:Matrix3d = Matrix3D.rotationX( 30 * Math.PI / 180 ); 1000 0cosθ-sinθ0 0sinθcos
http://crypto.hurlant.com/の暗号まわりのフレームワークがよさげです。 Base64や16進数とByteArrayとの変換に使うutilityがあります。 暗号化前、暗号化後のデータ変換で便利そげ。 Base64 import com.hurlant.util.Base64; // 文字列をBase64エンコード var encoded:String = Base64.encode('ほげ'); // ByteArrayをBase64エンコード var bytes:ByteArray = new ByteArray(); bytes.writeUTFBytes("ほげほげ"); var encoded2:String = Base64.encodeByteArray(bytes); // Base64にエンコードされた文字列をデコードして元の文字列に var dec
作ってみた。 ステージをドラッグするとカメラが移動します。 実物は後でどっかに設置する。 ------ [追記] 設置した -> http://lost-season.jp/papervision3d/cubecat/ ソースとか素材とか package { import flash.display.*; import flash.events.*; import org.papervision3d.scenes.*; import org.papervision3d.cameras.*; import org.papervision3d.materials.*; import org.papervision3d.objects.*; import mx.core.BitmapAsset; [SWF(backgroundColor=0x000000, width=300, height=3
Papervision3Dには座標変換のために ベクトルを操作する org.papervision3d.core.Number3D、 行列を操作するorg.papervision3d.core.Matrix3Dクラスがある。 それぞれ、FlashのビルトインであるPointやMatrixの3D版だと思っておけばいい。 Matrix3Dにはオイラーやクォータニオンの変換機能も実装されているので これらを使えば、3Dでのワールド座標におけるオブジェクトの移動、回転、拡大が簡単にできる。 さらにテクスチャマッピングのときのUV展開時に使われるNumberUVなどもあるが これはまた別途説明。 まずはNumber3D。ベクトルまわりの演算はこのクラスを使う。 import org.papervision3d.core.Number3D; var vec:Number3D = new Number3
レーティングです。5つ星のアレです。 YouTubeなんかでは、Ajaxでグリグリして画面遷移なしに その場でレートをつけられるアレです。 簡単に生成できるのを作っておいたので公開しときます。 http://code.google.com/p/ratingstars/ チェックアウト svn checkout http://ratingstars.googlecode.com/svn/trunk/ ratingstars このスクリプトを読み込みます。 <script type="text/javascript" src="ratingstars.js"></script> あらかじめ、星を挿入するためのHTML elementを用意する必要があります。 <div id="elementName"></div> 次のようにコンテナを生成し、あらかじめ作っておいたelementに セットアッ
以前作ったライブラリを、ドキュメントやら整備しつつ 少しずつ出していきます。 てことでGoogle Codeにあげてみた。 http://code.google.com/p/tagcloud/ JavaScriptでTagCloud生成するライブラリ Subversionでチェックアウト svn co http://tagcloud.googlecode.com/svn/trunk/ tagcloud ドキュメント http://tagcloud.googlecode.com/svn/trunk/doc/index.html 基本サンプル http://tagcloud.googlecode.com/svn/trunk/examples/basic.html インクリメンタルサーチサンプル http://tagcloud.googlecode.com/svn/trunk/examples/
このページを最初にブックマークしてみませんか?
『d.hatena.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く