<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns="http://purl.org/rss/1.0/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/">

	<channel rdf:about="http://blog.bornneet.com/RSS/100/">
		<title>Born Neet</title>
		<link>http://blog.bornneet.com/</link>
		<description>- The Emotional Programmer -</description>
		<dc:language>ja</dc:language>
		<items>
		<rdf:Seq>
			<rdf:li rdf:resource="http://blog.bornneet.com/Entry/268/" />
			<rdf:li rdf:resource="http://blog.bornneet.com/Entry/267/" />
			<rdf:li rdf:resource="http://blog.bornneet.com/Entry/266/" />
			<rdf:li rdf:resource="http://blog.bornneet.com/Entry/265/" />
			<rdf:li rdf:resource="http://blog.bornneet.com/Entry/264/" />
			<rdf:li rdf:resource="http://blog.bornneet.com/Entry/263/" />
			<rdf:li rdf:resource="http://blog.bornneet.com/Entry/262/" />
			<rdf:li rdf:resource="http://blog.bornneet.com/Entry/261/" />
			<rdf:li rdf:resource="http://blog.bornneet.com/Entry/260/" />
			<rdf:li rdf:resource="http://blog.bornneet.com/Entry/259/" />
		</rdf:Seq>
		</items>
	</channel>

	<item rdf:about="http://blog.bornneet.com/Entry/268/">
		<link>http://blog.bornneet.com/Entry/268/</link>
		<title>node.websocket.jsで超適当ホワイトボードアプリ</title>
		<description>
今週は仕事とドラクエVIが忙しくて全然勉強の時間がとれませんでした。
（モンスターが仲間に入らないのと難易度が下がってるのにはがっかりしましたが、やっぱり6はいいですね。）
というわけで週末、しかも2日目に慌ててやってみます。

触るのは、引き続きWeb Socket(s)。
前回ので...</description>
		<content:encoded><![CDATA[<p>
今週は仕事と<a href="http://www.amazon.co.jp/gp/product/B000UTH1XK?ie=UTF8&tag=tnantoka-22&linkCode=as2&camp=247&creative=7399&creativeASIN=B000UTH1XK" target="_blank">ドラクエVI</a><img src="http://www.assoc-amazon.jp/e/ir?t=tnantoka-22&l=as2&o=9&a=B000UTH1XK" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />が忙しくて全然勉強の時間がとれませんでした。<br />
（モンスターが仲間に入らないのと難易度が下がってるのにはがっかりしましたが、やっぱり6はいいですね。）<br />
というわけで週末、しかも2日目に慌ててやってみます。<br />
<br />
触るのは、引き続きWeb Socket(s)。<br />
前回のでAPI（クライアントサイド。つまりJS。sがつく方）は何となくイメージできたかなぁという感じ。<br />
しかし、プロトコル（Web Socket protocol。こっちはsがつかない）はイマイチ理解できてません。<br />
<br />
こういう時はやっぱり手を動かすのが一番ということでとりあえず何か作ってみます。<br />
※ ほんとはパケットキャプチャ取りたかったんですがうまくいかなかったので断念<br />
<br />
それでは始めましょう。<br />
<br />
まずは参考記事探しから。<br />
<br />
<a href="http://d.hatena.ne.jp/ymotongpoo/20091005/1254750201" class="external" target="_blank" title="新しいウィンドウで開きます">Web Socket ProtocolのRFC和訳 - YAMAGUCHI::weblog</a><br />
ないと思ってたプロトコルの日本語訳がありました。感謝です。<br />
ただこの仕様短いのはいいんだけど、細かい説明が全然ない・・・。<br />
websoket-protcol:ヘッダって何の意味があるんだー。<br />
（node.websokcet.jsではまだ未実装って書いてあるし）<br />
<br />
<a href="http://www.infoq.com/jp/news/2008/12/websockets-vs-comet-ajax" class="external" target="_blank" title="新しいウィンドウで開きます">InfoQ: HTML 5 Web Sockets vs. Comet and Ajax</a><br />
仕様のこととかは詳しく書いてませんがおもしろかったです。<br />
<br />
<a href="http://ido.nu/kuma/2009/08/25/pubsubhubbub-web-sockets-client-side-javascript/" class="external" target="_blank" title="新しいウィンドウで開きます">PubSubHubbubとWebSocketsとクライアントサイドのjavascript « ku</a><br />
こちらも他の実現方法との比較。読みやすいです。<br />
<br />
<a href="http://www.slideshare.net/tottyjp/html5-web-applications" class="external" target="_blank" title="新しいウィンドウで開きます">Html5 Web Applications</a><br />
<a href="http://www.slideshare.net/tottyjp/html5-web-applications-2" class="external" target="_blank" title="新しいウィンドウで開きます">Html5, Web Applications 2</a><br />
HTML5のWebアプリ関連仕様をサクっとまとめた素晴らしいプレゼンです。<br />
<br />
[追記（2010/1/31 14:15）]<br />
おっと、忘れてた。<br />
<a href="http://www.studyinghttp.net/rfc_ja/rfc2817" class="external" target="_blank" title="新しいウィンドウで開きます">HTTP/1.1 から TLS へのアップグレード</a><br />
<a href="http://suika.fam.cx/~wakaba/wiki/sw/n/Upgrade" class="external" target="_blank" title="新しいウィンドウで開きます">Upgrade</a><br />
HTTPのUpgradeについて。さっぱりわからん。<br />
[/追記]<br />
<br />
やっぱまだ日本語のソースは少ないですねぇ。<br />
<br />
ネットサーフィンはこれぐらいにして、<br />
うーん・・・Cometアプリの代表例ホワイトボードでも作ってみますか。<br />
<br />
というわけで、できたのがこちら。<br />
<br />
ソースはいつも通りご自由に。<br />
説明はコメントで。そんな難しいことはやってません。<br />
（セキュリティ0なので間違っても公開しないで下さいね）<br />
<br />
<img src="http://file.blog.bornneet.com/wb.png" /><br />
<br />
うーん、一応思った通りに動いたけど、サーバ側でsetIntervalやるのは綺麗じゃないなー。<br />
このコード量、しかもJSだけでこういうアプリが作れるのはちょっとした衝撃でした。
</p>
<h3>サーバ（node.websocket.js/modules/wb.js）</h3>
<pre class="source"><code>var Module = this.Module = function(){
	// グローバルにしとくと楽
	sys = require('sys');
};

Module.prototype.onData = function(data, connection) {
	// 初期化
	if (data == 'start'){
	
		// 定期的にファイルをcatして変わってたらクライアントに送る
		this.interval = setInterval(function(){
			var self = this;
			sys.exec('cat temp').addCallback(function(stdout, stderr) {
				if (self.temp != stdout) {
					connection.send(stdout);
				}
				self.temp = stdout;
			});
		}, 100);
		
	} 
	// データを受信したらtempファイルに書き込む（超脆弱！！）
	else {
		sys.exec('echo "' + data +'" > temp');
	}
};

// 後始末
Module.prototype.onDisconnect = function(connection){
	clearInterval(this.interval);
};</code></pre>

<h3>クライアント（apache/htdocls/wb.html）</h3>
<pre class="source"><code>&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;whiteboard demo&lt;/title&gt;
	&lt;style&gt;
canvas {
	border: 1px solid black;
	position: relative;
}
	&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;h1&gt;whiteboard demo&lt;/h1&gt;

&lt;canvas width="300" height="200"&gt;&lt;/canvas&gt;&lt;br /&gt;
&lt;input type="button" value="clear" /&gt;

&lt;script&gt;

// node.websocket.js/modules/wb.jsに繋ぐ
var webSocket = new WebSocket('ws://localhost:8000/wb');

/* お絵かき処理ここから */

var canvas = document.getElementsByTagName('canvas')[0];
var ctx = canvas.getContext('2d');

var isDraw = false;
var x, y;

canvas.addEventListener('mousedown', function(e) {
	ctx.moveTo(x, y);
	isDraw = true;
}, 'false');

canvas.addEventListener('mousemove', function(e) {
	x = e.layerX;
	y = e.layerY;
	if (isDraw) {
		ctx.lineTo(x, y);	
		ctx.stroke();
	}
}, 'false');

canvas.addEventListener('mouseup', function(e) {
	isDraw = false;
	webSocket.send(canvas.toDataURL());
}, 'false');

/* お絵かき処理ここまで */

// サーバ側に初期化を知らせる
webSocket.onopen = function(event){
	webSocket.send('start');
};

// データ受信時は問答無用でcanvasを更新
webSocket.onmessage = function(event){
	var img = new Image();
	img.onload = function() {
		ctx.clearRect(0, 0, canvas.width, canvas.height);
		ctx.drawImage(img, 0, 0);
	};
	img.src = event.data;
};

// 白紙に戻す
document.querySelector('input[value=clear]').addEventListener('click', function() {
	ctx.clearRect(0, 0, canvas.width, canvas.height);
	webSocket.send(canvas.toDataURL());
}, 'false');

&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
]]></content:encoded>
		<dc:subject>html5</dc:subject>
		<dc:date>2010-01-31T13:32:04+09:00</dc:date>
		<dc:creator>t*</dc:creator>
		<dc:publisher>NINJA BLOG</dc:publisher>
		<dc:rights>t*</dc:rights>
	</item>
	<item rdf:about="http://blog.bornneet.com/Entry/267/">
		<link>http://blog.bornneet.com/Entry/267/</link>
		<title>HTML5に追いつこう！Pure JSでWeb Socketsを動かしてみる</title>
		<description>
HTML5の仕様も、コミュニティの皆さんも動きが速すぎてすっかり置いてかれています。
とはいえ、HTML5は勉強しておいて絶対損はないはずなので、
マイペースで頑張りたいと思います。。

そんな中、今日、
噂のnode.websocket.jsでサーバサイドJSとHTML5 WebSo...</description>
		<content:encoded><![CDATA[<p>
HTML5の仕様も、コミュニティの皆さんも動きが速すぎてすっかり置いてかれています。<br />
とはいえ、HTML5は勉強しておいて絶対損はないはずなので、<br />
マイペースで頑張りたいと思います。。<br />
<br />
そんな中、今日、<br />
<a href="http://d.hatena.ne.jp/download_takeshi/20091215/1260903057" class="external" target="_blank" title="新しいウィンドウで開きます">噂のnode.websocket.jsでサーバサイドJSとHTML5 WebSocketを体験してみたの巻 - ダウンロードたけし（寅年）の日記</a><br />
<a href="http://blog.new-bamboo.co.uk/2009/12/7/real-time-online-activity-monitor-example-with-node-js-and-websocket" class="external" target="_blank" title="新しいウィンドウで開きます">Real time online activity monitor example with node.js and WebSocket @ Bamboo Blog</a><br />
なんていう素敵な記事を見つけました。<br />
Apacheは好きだけどPythonはちょっと・・・な僕でもこれならできるはず！と<br />
初めてのWeb Socketsに挑戦してみました。<br />
<br />
というわけで、改めてお勉強。<br />
<br />
まずはAPI仕様。（プロトコルは長いし英語なのでまた今度）<br />
<a href="http://www.html5.jp/trans/w3c_websockets.html" class="external" target="_blank" title="新しいウィンドウで開きます">W3C - 『The Web Sockets API』日本語訳 - HTML5.JP</a><br />
うん、これだけじゃわからんですね^^<br />
<br />
デモとか見て勉強しよう。<br />
<br />
<a href="http://blog.livedoor.jp/kotesaki/archives/1355651.html" class="external" target="_blank" title="新しいウィンドウで開きます">こてさきAjax:apache+mod_pywebsocetを用いたliteなwebsocketsチャットサンプル - livedoor Blog（ブログ）</a><br />
pywebsocketの例。サーバサイドの処理の説明がわかりやすいです。<br />
<br />
<a href="http://blog.livedoor.jp/kotesaki/archives/1357005.html" class="external" target="_blank" title="新しいウィンドウで開きます">こてさきAjax:apache + web sockets (pywebsocket) tips #0 - livedoor Blog（ブログ）</a><br />
<a href="http://blog.livedoor.jp/kotesaki/archives/1362401.html" class="external" target="_blank" title="新しいウィンドウで開きます">こてさきAjax:lite websocket チャットサンプルを更新しました。 - livedoor Blog（ブログ）</a><br />
引き続きpywebsocket。<br />
Origin checkとHeartBeatがキーワードというかいつかハマリそうな予感。<br />
覚えておこう。<br />
<br />
<a href="http://blog.livedoor.jp/kotesaki/archives/1369902.html" class="external" target="_blank" title="新しいウィンドウで開きます">こてさきAjax:websocketでは、encodeURIComponet()は使うべきではない - livedoor Blog（ブログ）</a><br />
データはUTF-8で送受信するので、encodeURI()しなくても良いと、ふむふむ。<br />
<br />
なんとなくイメージが湧いてきた。<br />
プレゼン資料とかも漁ってみる。<br />
（やっぱシーケンスがあるとわかりやすいですね！）<br />
<br />
<a href="http://docs.google.com/present/view?id=dddvzhrc_3frv8djhr" class="external" target="_blank" title="新しいウィンドウで開きます">WebSocketでリアルタイムWeb</a><br />
かなり噛み砕いた説明でわかりやすいです。<br />
<br />
<a href="https://docs.google.com/present/view?id=0AeBWWQgzzR2xZGNyM3h3MnNfOWM4NXpocDN2&hl=en" class="external" target="_blank" title="新しいウィンドウで開きます">100113_opera webkit勉強会(websocket)</a><br />
<a href="http://blog.livedoor.jp/kotesaki/archives/1377879.html" class="external" target="_blank" title="新しいウィンドウで開きます">こてさきAjax:websocket関連の説明png - livedoor Blog（ブログ）</a><br />
図がいっぱい。素敵。<br />
<br />
<a href="http://journal.mycom.co.jp/special/2009/html5-2/009.html" class="external" target="_blank" title="新しいウィンドウで開きます">【特集】詳解! HTML 5と関連APIの最新動向 - Webアプリ開発編 (10) Web Sockets | エンタープライズ | マイコミジャーナル</a><br />
Kaazingを使ったデモ。初心者を切り捨てない感じで助かります。<br />
<br />
そろそろ良いかな…よし、やってみよう！
</p>
<h3>node.jsのインストール</h3>
<p>
<a href="http://nodejs.org/" class="external" target="_blank" title="新しいウィンドウで開きます">node.jsのサイト</a>からnode-v0.1.26.tar.gzをダウンロード。<br />
<pre class="source"><code>cd node-v0.1.26/
./configure —prefix=/Users/t/node.js/
※ prefix指定はできない？

./configure
※ 諦めてそのままインストールする。

make
sudo make install

which node
/usr/local/bin/node

</code></pre>
<p>何事もなく終了。<br />
※ ホントはユーザ権限でインストールしたかったけど・・・</p>

<h3>Hello, node.js</h3>
<p>とりあえず、指定ディレクトリをlsして返すプログラムを書いてみました。<br />
queryから取ろうと思ったけど、うまく動かないメソッドとかもあったのでやめときました。</p>
<pre class="source"><code>vi ls.js

var sys = require('sys');

var filename = process.ARGV[2];

var http = require("http");
http.createServer(function(req, res){
	res.sendHeader(200,{"Content-Type": "text/html; charset=UTF-8"});
	sys.exec('ls -alF ' + filename).addCallback(function _exec(stdout, stderr) {
		res.sendBody(stdout);
		res.finish();
	});  
}).listen(8000);
:wq

<strong>node ls.js .</strong>

[別ターミナルで]
telnet localhost 8000
GET / HTTP/1.1
host:localhost

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Transfer-Encoding: chunked

1cc
total 80
drwxr-xr-x   9 t  staff   306  1 25 00:17 ./
drwxr-xr-x+ 47 t  staff  1598  1 24 23:27 ../
-rw-r--r--@  1 t  staff  6148  1 25 00:17 .DS_Store
-rwxr-xr-x@  1 t  staff   304  1 24 23:42 example.js*
-rwxr-xr-x@  1 t  staff   329  1 24 23:49 log.txt*
-rwxr-xr-x@  1 t  staff   334  1 25 00:17 ls.js*
drwxr-xr-x@ 20 t  staff   680  1 24 23:35 node-v0.1.26/
drwxr-xr-x   5 t  staff   170  1 25 00:17 old/
-rwxr-xr-x@  1 t  staff   601  1 24 23:50 tail.js*
こんな感じで返ってきます。
</code></pre>
<h3>Hello, Web Sockets</h3>
<p>ようやく本題・・・ですが眠いので既存サンプルを動かすだけにしときます。</p>

<pre class="source"><code>git clone git://github.com/Guille/node.websocket.js.git
<a href="http://github.com/guille/node.websocket.js/" class="external" target="_blank" title="新しいウィンドウで開きます">node.websocket.js at master</a>をチェックアウト

cd node.websocket.js

cp test/test.html ~/apache/htdocs/
apache上にクライアントを配置 

vi ~/apache/htdocs/test.html
<strong>var webSocket = new WebSocket('ws://localhost:8000/time');</strong>
ポートを8000に変更（apacheと競合してたので）

node runserver.js --port="8000"
Web Socketsサーバを起動

apachectl start
apacheを起動（8080を使ってます）

</code></pre>
<p>Google Chrome 4+からlocalhost:8080/test.htmlにアクセスすると、<br />
時刻がリアルタイムで更新されるサンプルが表示されます。<br />
（地味ですが確かにpullではなくpushで実現されています。）<br />
<br />
<img src="http://file.blog.bornneet.com/hello_websocket.png" alt="" />
</p>

<h3>まとめ</h3>
<p>
思っていたより手軽に触れそうです。<br />
僕程度のスキルでも2時間程度で動かすとこまではできました。<br />
<br />
さて、なんか面白いことできないかなー。
</p>]]></content:encoded>
		<dc:subject>html5</dc:subject>
		<dc:date>2010-01-25T00:51:48+09:00</dc:date>
		<dc:creator>t*</dc:creator>
		<dc:publisher>NINJA BLOG</dc:publisher>
		<dc:rights>t*</dc:rights>
	</item>
	<item rdf:about="http://blog.bornneet.com/Entry/266/">
		<link>http://blog.bornneet.com/Entry/266/</link>
		<title>今更ながら、人工無脳なTwitterボット作ってみた</title>
		<description>
Perlの勉強の為、久々に人工無脳を作ってみました。

説教っぽく聞こえなくもない言葉を30分に1回つぶやきます。

迷言ボット (bornneet) on Twitter

興味のある方はfollowしてみて下さい。
精度は全然ですが、まぐれで良いこというかもしれませんよ^^
...</description>
		<content:encoded><![CDATA[<p>
Perlの勉強の為、久々に人工無脳を作ってみました。<br />
<br />
説教っぽく聞こえなくもない言葉を30分に1回つぶやきます。<br />
<br />
<a href="http://twitter.com/bornneet/" class="external" target="_blank" title="新しいウィンドウで開きます">迷言ボット (bornneet) on Twitter</a><br />
<br />
興味のある方はfollowしてみて下さい。<br />
精度は全然ですが、まぐれで良いこというかもしれませんよ^^<br />
<br />
<br />
最初は、以下の記事を参考にNet::Twitterでやろうとしたのですが、<br />
Macにうまくインストールできなかったので、断念。<br />
<a href="http://www.otchy.net/20090629/making-of-twitter-bot-1/" class="external" target="_blank" title="新しいウィンドウで開きます">Twitter ボットの作り方 Perl 編 (1) – OTCHY.NET</a><br />
<br />
cpanをupdate（cpan > install Bundle::CPAN）とかやってみるも、状況変わらず。<br />
（<a href="http://technolo-walk.blogspot.com/2009/08/perlnettwittercpan.html" class="external" target="_blank" title="新しいウィンドウで開きます">テクノロ散策: PerlでNet::Twitterがインストールできない時はcpanをアップデート</a>）<br />
<br />
xreaにはNet::Twitterが入ってるので、使いたかったんですが、<br />
仕方なく生Perlで書くことにしました。<br />
<br />
参考にしたのはこちらの3記事。<br />
<a href="http://blog.livedoor.jp/dankogai/archives/51220581.html" class="external" target="_blank" title="新しいウィンドウで開きます">404 Blog Not Found:API - Twitterfeed から Hatena::Bookmark Web Hookへ</a><br />
<a href="http://www.naney.org/diki/dk/Net::Twitter.html" class="external" target="_blank" title="新しいウィンドウで開きます">nDiki: Net::Twitter - Net::OAuth を使って Twitter からフィードを取得 (2009-12-30)</a><br />
<a href="http://www.akatsukinishisu.net/itazuragaki/perl/basic_auth_post_by_lwp_useragent.html" class="external" target="_blank" title="新しいウィンドウで開きます">LWP::UserAgentで基本認証とPOSTを - 徒書</a><br />
<br />
最後の最後、xreaでの動作確認でさらにはまりました。<br />
Storableに「Byte order is not compatible at blib/lib/Storable.pm」と言われてもうお手上げ。<br />
<br />
またまた先人の力をお借りして何とか解決しました。<br />
（storeを使わず、nstoreを使用）<br />
<a href="http://blog.livedoor.jp/dankogai/archives/50490051.html" class="external" target="_blank" title="新しいウィンドウで開きます">404 Blog Not Found:perl - 勝手に添削 - Storable</a><br />
<a href="http://www.xdelta.net/wiki/WiKicker.html#h5" class="external" target="_blank" title="新しいウィンドウで開きます">Perl  5.6.2→5.8.7移行メモ</a><br />
<br />
いやぁ、相変わらず、Perlには慣れませんねぇ…orz<br />
<br />
※ おまけでxrea無料版ではcronが動かせないという罠も。（何を今さら）<br />
　 というわけでcore serverのアカウントで稼働させてます。
</p>]]></content:encoded>
		<dc:subject>Perl</dc:subject>
		<dc:date>2010-01-24T19:37:03+09:00</dc:date>
		<dc:creator>t*</dc:creator>
		<dc:publisher>NINJA BLOG</dc:publisher>
		<dc:rights>t*</dc:rights>
	</item>
	<item rdf:about="http://blog.bornneet.com/Entry/265/">
		<link>http://blog.bornneet.com/Entry/265/</link>
		<title>Firefox3.6がリリースされたので、canvas作品をFile API(とDrag&amp;Drop)に対応させてみた</title>
		<description>
お久しぶりです。

僕がインターネットのない生活を送っている間に、
待望のFirefox3.6がリリースされましたね！

これでFirefoxがターゲットのサイトなら、FireAPIを使い放題です！！
（今まではβ版だったので、開発者しか使ってませんでしたからね・・・）

という...</description>
		<content:encoded><![CDATA[<p>
お久しぶりです。<br />
<br />
僕がインターネットのない生活を送っている間に、<br />
待望のFirefox3.6がリリースされましたね！<br />
<br />
これでFirefoxがターゲットのサイトなら、FireAPIを使い放題です！！<br />
（今まではβ版だったので、開発者しか使ってませんでしたからね・・・）<br />
<br />
というわけで、以下の2作品をFile API対応させときました。<br />
<br />
ダイアログを使うか、選択欄にdrag&dropすればローカルファイルを指定できます。<br />
<br />
<a href="http://tnantoka.net/canvas/editor/">錯覚エディター by HTML5 Canvas</a><br />
<a href="http://tnantoka.net/canvas/glass/">canvasで画像拡大鏡</a><br />
<br />
何かたまにおかしくなりますが、サンプルということで許して下さい^^<br />
あと、巨大ファイルや画像じゃないファイルを指定すると壊れますのでご注意を。<br />
<br />
File API、面白いので皆さん是非試してみて下さい！<br />
<br />
※ 以前File APIの簡単な使い方をLTしたのでよろしければどうぞ。
</p>
<div style="width:425px;text-align:left" id="__ss_2750248"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/tnantoka/file-api-in-firefox36" title="File API in Firefox3.6">File API in Firefox3.6</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mozillatokyo-091219104028-phpapp02&stripped_title=file-api-in-firefox36" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mozillatokyo-091219104028-phpapp02&stripped_title=file-api-in-firefox36" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/tnantoka">tnantoka</a>.</div></div>
]]></content:encoded>
		<dc:subject>html5</dc:subject>
		<dc:date>2010-01-22T19:04:44+09:00</dc:date>
		<dc:creator>t*</dc:creator>
		<dc:publisher>NINJA BLOG</dc:publisher>
		<dc:rights>t*</dc:rights>
	</item>
	<item rdf:about="http://blog.bornneet.com/Entry/264/">
		<link>http://blog.bornneet.com/Entry/264/</link>
		<title>htmlのキーワード一覧</title>
		<description>
htmlも。

HTML Elements Index – Jens Meiert
index of HTML5 elements
HTML5 Elements and Attributes
各HTMLバージョンのDOCTYPE宣言のサンプル集

最後の方、ちょっと投げました。
...</description>
		<content:encoded><![CDATA[<p>
htmlも。<br />
<br />
<a href="http://meiert.com/en/indices/html-elements/" class="external" target="_blank" title="新しいウィンドウで開きます">HTML Elements Index – Jens Meiert</a><br />
<a href="http://www.akatsukinishisu.net/itazuragaki/data/html/index_of_html5_elements/html5elements.html" class="external" target="_blank" title="新しいウィンドウで開きます">index of HTML5 elements</a><br />
<a href="http://simon.html5.org/html5-elements" class="external" target="_blank" title="新しいウィンドウで開きます">HTML5 Elements and Attributes</a><br />
<a href="http://www.animegif.net/tips/html/doctype-html-public.html" class="external" target="_blank" title="新しいウィンドウで開きます">各HTMLバージョンのDOCTYPE宣言のサンプル集</a><br />
<br />
最後の方、ちょっと投げました。<br />
<br />
っていうかタグと属性識別すんの忘れた…orz<br />
cssもプロパティとvalue一緒にしちゃったし…。
</p>
<pre class="source"><code>!--
!DOCTYPE
--
-//W3C//DTD HTML 4.01 Frameset//EN
-//W3C//DTD HTML 4.01 Transitional//EN
-//W3C//DTD HTML 4.01//EN
-//W3C//DTD XHTML 1.0 Frameset//EN
-//W3C//DTD XHTML 1.0 Strict//EN
-//W3C//DTD XHTML 1.0 Transitional//EN
-//W3C//DTD XHTML 1.1//EN
?xml
abbr
accept
accept-charset
access
accesskey
acronym
action
address
align
alink
alt
applet
archive
area
aria-
article
aside
audio
axis
background
base
basefont
bdo
bgcolor
big
blockcode
blockquote
body
border
br
button
canvas
caption
cellpadding
cellspacing
center
char
charoff
charset
checkbox
checked
cite
class
classid
clear
code
codebase
codetype
col
colgroup
color
cols
colspan
command
compact
content
contenteditable
contextmenu
coords
data
data-
datalist
date
datetime
datetime-local
dd
declare
defer
del
delete
details
dfn
di
dir
disabled
dispatch
div
dl
draggable
dt
em
email
embed
encoding
enctype
EUC-JP
ev:listener
face
fieldset
figure
file
font
footer
for
form
frame
frameborder
frameset
group
h1
h1, h2, h3, h4, h5, and h6
h2
h3
h4
h5
h6
handler
head
header
headers
height
hgroup
hidden
hr
href
hreflang
hspace
html
http-equiv
http://www.w3.org/1999/xhtml
http://www.w3.org/TR/html4/frameset.dtd
http://www.w3.org/TR/html4/loose.dtd">
http://www.w3.org/TR/html4/strict.dtd
http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd
id
iframe
image
img
input
ins
insert
isindex
ismap
itemid
itemprop
itemref
itemscope
itemtype
ja
kbd
keygen
label
lang
language
legend
li
link
listing
load
longdesc
map
marginheight
marginwidth
mark
marquee
maxlength
media
menu
message
meta
meter
method
model
month
multiple
name
nav
nl
noframes
nohref
noresize
noscript
noshade
nowrap
number
object
ol
onabort
onblur
oncanplay
oncanplaythrough
onchange
onclick
oncontextmenu
ondblclick
ondrag
ondragend
ondragenter
ondragleave
ondragover
ondragstart
ondrop
ondurationchange
onemptied
onended
onerror
onfocus
onformchange
onforminput
oninput
oninvalid
onkeydown
onkeypress
onkeyup
onload
onloadeddata
onloadedmetadata
onloadstart
onmousedown
onmousemove
onmouseout
onmouseover
onmouseup
onmousewheel
onpause
onplay
onplaying
onprogress
onratechange
onreadystatechange
onreset
onscroll
onseeked
onseeking
onselect
onshow
onstalled
onsubmit
onsuspend
ontimeupdate
onunload
onvolumechange
onwaiting  
optgroup
option
output
param
password
plaintext
pre
profile
progress
prompt
PUBLIC
radio
range
rb
rbc
readonly
rebuild
recalculate
refresh
rel
repeat
reset
rev
revalidate
role
rows
rowspan
rp
rt
rtc
ruby
rules
samp
scheme
scope
script
scrolling
search
secret
section
select
select1
selected
send
separator
setfocus
setindex
setvalue
shape
Shift_JIS
size
small
source
span
spellcheck
src
standby
start
strike
strong
style
sub
sub and sup
submit
summary
sup
switch
tabindex
table
target
tbody
td
tel
text
textarea
tfoot
th
thead
time
title
tr
trigger
tt
type
ul
upload
url
usemap
UTF-8
valign
value
valuetype
var
version
video
vlink
vspace
week
width
xml:lang 
xmlns
xmp</code></pre>]]></content:encoded>
		<dc:subject>html/css</dc:subject>
		<dc:date>2010-01-17T11:30:49+09:00</dc:date>
		<dc:creator>t*</dc:creator>
		<dc:publisher>NINJA BLOG</dc:publisher>
		<dc:rights>t*</dc:rights>
	</item>
	<item rdf:about="http://blog.bornneet.com/Entry/263/">
		<link>http://blog.bornneet.com/Entry/263/</link>
		<title>cssのキーワード一覧も集めてみた</title>
		<description>
前回に引き続いて、cssです。
jsに比べればリソースがたくさんあって楽でした。

hail2u.net - Weblog - CSSのプロパティをソートするPerlスクリプト
CSS Properties Index – Jens Meiert
プロパティはこの2つで完璧。

C...</description>
		<content:encoded><![CDATA[<p>
前回に引き続いて、cssです。<br />
jsに比べればリソースがたくさんあって楽でした。<br />
<br />
<a href="http://hail2u.net/blog/coding/perl-sort-css-properties.html" class="external" target="_blank" title="新しいウィンドウで開きます">hail2u.net - Weblog - CSSのプロパティをソートするPerlスクリプト</a><br />
<a href="http://meiert.com/en/indices/css-properties/" class="external" target="_blank" title="新しいウィンドウで開きます">CSS Properties Index – Jens Meiert</a><br />
プロパティはこの2つで完璧。<br />
<br />
<a href="http://www.elizabethcastro.com/html/extras/cssref.html" class="external" target="_blank" title="新しいウィンドウで開きます">CSS HTML XHTML Reference Book</a><br />
<a href="http://www.evotech.net/blog/2009/05/css-properties-values-and-browser-support/" class="external" target="_blank" title="新しいウィンドウで開きます">» 90 CSS Properties, Values and Browser Support :: CSS, JavaScript and XHTML Explained</a><br />
<a href="http://www6.plala.or.jp/go_west/nextcss/ref/slctr/at_rule.htm" class="external" target="_blank" title="新しいウィンドウで開きます">@規則 一覧 - CSS Dencitie</a><br />
valueとかはここらへんから頑張って（適当に）抽出。<br />
<br />
できたのがこれ。<br />
うん、自信ない。
</p>
<pre class="source"><code>-moz-appearance
-moz-background-clip
-moz-background-inline-policy
-moz-background-origin
-moz-background-size
-moz-binding
-moz-border-bottom-colors
-moz-border-bottom-right-radius
-moz-border-end
-moz-border-end-color
-moz-border-end-style
-moz-border-end-width
-moz-border-image
-moz-border-left-colors
-moz-border-radius
-moz-border-radius-bottomleft
-moz-border-radius-bottomright
-moz-border-radius-topleft
-moz-border-radius-topright
-moz-border-right-colors
-moz-border-start
-moz-border-start-color
-moz-border-start-style
-moz-border-start-width
-moz-border-top-colors
-moz-border-top-left-radius
-moz-border-top-right-radius
-moz-box-align
-moz-box-direction
-moz-box-flex
-moz-box-flexgroup
-moz-box-ordinal-group
-moz-box-orient
-moz-box-pack
-moz-box-shadow
-moz-box-sizing
-moz-column-count
-moz-column-gap
-moz-column-rule
-moz-column-rule-color
-moz-column-rule-style
-moz-column-rule-width
-moz-column-width
-moz-float-edge
-moz-force-broken-image-icon
-moz-image-region
-moz-margin-end
-moz-margin-start
-moz-outline-radius
-moz-outline-radius-bottomleft
-moz-outline-radius-bottomright
-moz-outline-radius-topleft
-moz-outline-radius-topright
-moz-padding-end
-moz-padding-start
-moz-stack-sizing
-moz-transform
-moz-transform-origin
-moz-user-focus
-moz-user-input
-moz-user-modify
-moz-user-select
-moz-window-shadow
-ms-background-position-x
-ms-background-position-y
-ms-filter
-ms-ime-mode
-ms-interpolation-mode
-ms-layout-flow
-ms-layout-grid
-ms-layout-grid-char
-ms-layout-grid-line
-ms-layout-grid-mode
-ms-layout-grid-type
-ms-overflow-x
-ms-overflow-y
-ms-scrollbar-3dlight-color
-ms-scrollbar-arrow-color
-ms-scrollbar-base-color
-ms-scrollbar-darkshadow-color
-ms-scrollbar-face-color
-ms-scrollbar-highlight-color
-ms-scrollbar-shadow-color
-ms-text-align-last
-ms-text-autospace
-ms-text-justify
-ms-text-kashida-space
-ms-text-overflow
-ms-text-underline-position
-ms-word-break
-ms-word-wrap
-ms-writing-mode
-ms-zoom
-o-background-size
-o-table-baseline
-webkit-animation
-webkit-animation-delay
-webkit-animation-direction
-webkit-animation-duration
-webkit-animation-iteration-count
-webkit-animation-name
-webkit-animation-play-state
-webkit-animation-timing-function
-webkit-appearance
-webkit-backface-visibility
-webkit-background-clip
-webkit-background-composite
-webkit-background-origin
-webkit-background-size
-webkit-border-bottom-left-radius
-webkit-border-horizontal-spacing
-webkit-border-image
-webkit-border-radius
-webkit-border-vertical-spacing
-webkit-box-align
-webkit-box-direction
-webkit-box-flex
-webkit-box-flex-group
-webkit-box-lines
-webkit-box-ordinal-group
-webkit-box-orient
-webkit-box-pack
-webkit-box-reflect
-webkit-box-shadow
-webkit-box-sizing
-webkit-column-break-after
-webkit-column-break-before
-webkit-column-break-inside
-webkit-column-count
-webkit-column-gap
-webkit-column-rule
-webkit-column-rule-color
-webkit-column-rule-style
-webkit-column-rule-width
-webkit-column-width
-webkit-columns
-webkit-dashboard-region
-webkit-line-break
-webkit-margin-bottom-collapse
-webkit-margin-collapse
-webkit-margin-start
-webkit-margin-top-collapse
-webkit-marquee
-webkit-marquee-direction
-webkit-marquee-increment
-webkit-marquee-repetition
-webkit-marquee-speed
-webkit-marquee-style
-webkit-mask
-webkit-mask-attachment
-webkit-mask-box-image
-webkit-mask-clip
-webkit-mask-composite
-webkit-mask-image
-webkit-mask-origin
-webkit-mask-position
-webkit-mask-position-x
-webkit-mask-position-y
-webkit-mask-repeat
-webkit-mask-size
-webkit-nbsp-mode
-webkit-padding-start
-webkit-perspective
-webkit-perspective-origin
-webkit-rtl-ordering
-webkit-tap-highlight-color
-webkit-text-fill-color
-webkit-text-security
-webkit-text-size-adjust
-webkit-text-stroke
-webkit-text-stroke-color
-webkit-text-stroke-width
-webkit-touch-callout
-webkit-transform
-webkit-transform-origin
-webkit-transform-origin-x
-webkit-transform-origin-y
-webkit-transform-origin-z
-webkit-transform-style
-webkit-transition
-webkit-transition-delay
-webkit-transition-duration
-webkit-transition-property
-webkit-transition-timing-function
-webkit-user-drag
-webkit-user-modify
-webkit-user-select
100
200
300
400
500
600
700
800
900
:active
:after
:before
:first
:first-child
:first-letter
:first-line
:focus
:hover
:lang
:left
:link
:right
:visited
@charset
@font-face
@import
@media
@page
above
absolute
alignment-adjust
alignment-baseline
always
angle
animation
animation-delay
animation-direction
animation-duration
animation-iteration-count
animation-name
animation-play-state
animation-timing-function
appearance
armenian
attr
aural
auto
auto,
avoid
azimuth
backface-visibility
backgroun-position-y
background
background-attachment
background-break
background-clip
background-color
background-image
background-origin
background-position
background-position-x
background-repeat
background-size
baseline
baseline-shift
below
bidi-override
binding
blink
block
bold
bolder
bookmark-label
bookmark-level
bookmark-target
border
border-bottom
border-bottom-color
border-bottom-left-radius
border-bottom-right-radius
border-bottom-style
border-bottom-width
border-break
border-collapse
border-color
border-image
border-image-outset
border-image-repeat
border-image-slice
border-image-source
border-image-width
border-left
border-left-color
border-left-style
border-left-width
border-length
border-radius
border-right
border-right-color
border-right-style
border-right-width
border-spacing
border-style
border-top
border-top-color
border-top-left-radius
border-top-right-radius
border-top-style
border-top-width
border-width
both
bottom
box-align
box-break
box-direction
box-flex
box-flex-group
box-lines
box-ordinal-group
box-orient
box-original-group
box-pack
box-shadow
box-sizing
braille
capitalize
caption
caption-side
center
circle
clear
clip
cm
code
collapse
color
color-profile
colorName
column-break-after
column-break-before
column-count
column-fill
column-gap
column-rule
column-rule-color
column-rule-style
column-rule-width
column-span
column-width
columns
content
counter
counter-increment
counter-reset
counterName
crop
cross
crosshair
cue
cue-after
cue-before
cursor
dashed
decimal
decimal-leading-zero
default
deg
digits
direction
disc
display
display-model
display-role
dominant-baseline
dominate-baseline
dotted
double
drop-initial-after-adjust
drop-initial-after-align
drop-initial-before-adjust
drop-initial-before-align
drop-initial-size
drop-initial-value
e-resize
elevation
em
emboss
empty-cells
ex
expression
fast
faster
fit
fit-position
fixed
fixed,
float
float-offset
font
font-1
font-family
font-size
font-size-adjust
font-stretch
font-style
font-variant
font-weight
fStyle
georgian
grad
grid-columns
grid-rows
groove
handheld
hanging-punctuation
height
help
hidden
hide
hyphenate-after
hyphenate-before
hyphenate-character
hyphenate-lines
hyphenate-resource
hyphens
Hz
icon
identifier
image-orientation
image-rendering
image-resolution
ime-mode
in
inherit
inline
inline-block
inline-box-align
inline-table
inset
inside
integer
invert
italic
justify
kHz
landscape
large
larger
left
left-side
leftwards
length
letter-spacing
lighter
line-height
line-stacking
line-stacking-ruby
line-stacking-shift
line-stacking-strategy
line-through
list-item
list-style
list-style-image
list-style-position
list-style-type
local
loud
lower
lower-alpha
lower-greek
lower-latin
lower-roman
lowercase
ltr
margin
margin-bottom
margin-left
margin-right
margin-top
mark
mark-after
mark-before
marks
marquee-direction
marquee-loop
marquee-play-count
marquee-speed
marquee-style
max-height
max-width
medium
menu
middle
min-height
min-width
mm
move
move-to
ms
multiple
n-resize
nav-down
nav-index
nav-left
nav-right
nav-up
ne-resize
no-open-quote
no-repeat
none
normal
nowrap
number
nw-resize
oblique
once
opacity
open-quote
or
orphans
outline
outline-color
outline-offset
outline-style
outline-width
outset
outside
overflow
overflow-style
overflow-x
overflow-y
overline
padding
padding-bottom
padding-left
padding-right
padding-top
page
page-break-after
page-break-before
page-break-inside
page-policy
pause
pause-after
pause-before
pc
percent
percentage
perspective
perspective-origin
phonemes
pitch
pitch-range
play-during
pointer
pointer-events
portrait
position
pre
pre-line
pre-wrap
presentation-level
print
progress
projection
pt
punctuation-trim
px
quotes
rad
rect
relative
rendering-intent
repeat
repeat-x
repeat-y
resize
rest
rest-after
rest-before
rgb
rgba
richness
ridge
right
right-side
rotation
rotation-point
rtl
ruby-align
ruby-overhang
ruby-position
ruby-span
run-in
s-resize
screen
scroll
se-resize
separate
show
silent
singleFontFamily
size
slow
small
small-caps
small-caption
soft
solid
speak
speak-header
speak-numeral
speak-punctuation
specificVoice
speech-rate
spell-out
square
src
static
stress
string
string-set
sub
super
sw-resize
tab-side
table
table-caption
table-cell
table-column
table-column-group
table-header-group
table-layout
table-row
target
target-name
target-new
target-position
text
text-align
text-align-last
text-bottom
text-decoration
text-emphasis
text-height
text-indent
text-justify
text-outline
text-rendering
text-replace
text-shadow
text-top
text-transform
text-wrap
thick
thin
time
top
transform
transform-origin
transform-style
transition
transition-delay
transition-duration
transition-property
transition-timing-function
transparent
tty
tv
type
underline
unicode-bidi
unicode-range
upper-alpha
upper-latin
upper-roman
uppercase
url
vertical-align
visibility
visible
voice-balance
voice-duration
voice-family
voice-pitch
voice-pitch-range
voice-rate
voice-stress
voice-volume
volume
w-resize
wait
white-space
white-space-collapse
widows
width
word-break
word-spacing
word-wrap
x-high
x-loud
x-low
xx-large
xx-small
z-index</code></pre>
]]></content:encoded>
		<dc:subject>html/css</dc:subject>
		<dc:date>2010-01-17T10:54:30+09:00</dc:date>
		<dc:creator>t*</dc:creator>
		<dc:publisher>NINJA BLOG</dc:publisher>
		<dc:rights>t*</dc:rights>
	</item>
	<item rdf:about="http://blog.bornneet.com/Entry/262/">
		<link>http://blog.bornneet.com/Entry/262/</link>
		<title>JavaScriptのキーワードとか予約語をかき集めてみた</title>
		<description>
jsの定義済みメソッドやプロパティの一覧欲しいなぁと思うことがあるんだけど、
意外となかったりするので、いろいろなサイトから集めて1ファイルにまとめてみた。

インプットはこちら。
Emeditorのjavascript自動補完を強化する - prog*sig
Vim用の辞書ファイル ...</description>
		<content:encoded><![CDATA[<p>
jsの定義済みメソッドやプロパティの一覧欲しいなぁと思うことがあるんだけど、<br />
意外となかったりするので、いろいろなサイトから集めて1ファイルにまとめてみた。<br />
<br />
インプットはこちら。<br />
<a href="http://efcl.info/adiary/09" class="external" target="_blank" title="新しいウィンドウで開きます">Emeditorのjavascript自動補完を強化する - prog*sig</a><br />
<a href="http://d.hatena.ne.jp/tyru/20090408/1239149707" class="external" target="_blank" title="新しいウィンドウで開きます">Vim用の辞書ファイル - おつあり</a><br />
<a href="http://shjs.sourceforge.net/doc/gplv3.html" class="external" target="_blank" title="新しいウィンドウで開きます">SHJS - License</a><br /><br />
<a href="http://plugins.jquery.com/project/JUSH" class="external" target="_blank" title="新しいウィンドウで開きます">Plugins | jQuery Plugins</a><br />
<a href="http://www.html5.jp/canvas/ref.html" class="external" target="_blank" title="新しいウィンドウで開きます">Canvasリファレンス - HTML5.JP</a><br />
<a href="http://demos.hacks.mozilla.org/openweb/FileAPI/" class="external" target="_blank" title="新しいウィンドウで開きます">File API & Firefox 3.6</a><br />
<br />
これらをjs1.js, js2.jsみたいなファイル名で保存。<br />
で、以下の超適当なシェルでマージ。<br />
（こういう作業はやっぱりunixなmacだとすぐできて楽ですね。）
</p>
<pre class="source"><code>#!/bin/sh

rm temp.js js.js
cat js*.js &gt; temp.js
sort -f temp.js | uniq &gt; js.js
rm temp.js
wc -l js.js</code></pre>

<p>ちなみに、macのuniqコマンドはsortしてからじゃないと使えないらしいです。<br />
（っていうかsort -uで良かったことに今気づいた。）</p>
<pre class="source"><code>cat js.js | uniq
→ダメ

sort js.js | uniq
→OK</code></pre>

<p>
完成したファイルがこちら。<br />
<br />
これ足りないんじゃない？とかあったら、コメントいただけると助かります。<br />
特にhtml5関連のメソッドとか。<br />
（現状、canvasとfileapiとdragdropしか入れてません）
</p>

<dl>
<dt>2009/1/22</dt>
<dd>drag&drop関連のeventを追加。<br />
参考にしたのはこちら。<br />
<a href="https://developer.mozilla.org/En/DragDrop/Drag_and_Drop" class="external" target="_blank" title="新しいウィンドウで開きます">Drag and drop - MDC</a></dd>
</dl>

<pre class="source"><code>abort
abs
abstract
acceptCharset
acos
action
ActiveXObject
addColorStop
addEventListener
alert
align
alinkColor
altKey
anchors
appendChild
appendData
applets
applicationCache
apply
arc
arcTo
arguments
Array
asin
atan
atan2
atob
attributes
availHeight
availLeft
availTop
availWidth
azimuth
back
background
backgroundAttachment
backgroundColor
backgroundImage
backgroundPosition
backgroundPositionX
backgroundPositionY
backgroundRepeat
beforeunload
beginPath
bezierCurveTo
bgColor
blur
body
Boolean
boolean
border
borderBottom
borderBottomColor
borderBottomStyle
borderBottomWidth
borderCollapse
borderColor
borderLeft
borderLeftColor
borderLeftStyle
borderLeftWidth
borderRight
borderRightColor
borderRightStyle
borderRightWidth
borderSpacing
borderStyle
borderTop
borderTopColor
borderTopStyle
borderTopWidth
borderWidth
bottom
break
btoa
bubbles
button
byte
call
cancelable
cancelBubble
caption
captionSide
captureEvents
case
catch
ceil
cellPadding
cellSpacing
change
char
characterSet
charAt
charCodeAt
childNodes
class
className
clear
clearInterval
clearRect
clearTimeout
click
clientHeight
clientLeft
clientTop
clientWidth
clientX
clientY
clip
cloneNode
close
closed
closePath
color
colorDepth
compatMode
Components
concat
confirm
console.debug
console.dir
console.dirxml
console.error
console.info
console.log
console.traceInfinity
console.warn
const
content
contentType
contextmenu
continue
controllers
cookie
cos
counterIncrement
counterReset
createAttribute
createAttributeNS
createCaption
createCDATASection
createComment
createDocument
createDocumentFragment
createDocumentType
createElement
createElementNS
createEntityReference
createEvent
createImageData
createLinearGradient
createNSResolver
createPattern
createProcessingInstruction
createRadialGradient
createRange
createTextNode
createTFoot
createTHead
createTreeWalker
crypto
cssFloat
cssRules
cssText
ctrlKey
cue
cueAfter
cueBefore
currentTarget
cursor
data
dataTransfer
Date
dblclick
debugger
decodeURI
decodeURIComponent
decordURI
decordURIComponent
default
defaultStatus
defaultView
delete
deleteCaption
deleteData
deleteRow
deleteRule
deleteTFoot
deleteTHead
designMode
detail
dialogArguments
dir
direction
directories
dispatchEvent
display
do
doctype
Document
document
documentElement
domain
double
drag
dragdrop
dragenter
dragleave
dragover
dragstart
drawImage
drop
dropdataTransfer
dump
E
Elements
elements
elevation
else
embeds
emptyCells
encodeURI
encodeURIComponent
encoding
enctype
enum
Error
error
escape
eval
EvalError
evaluate
eventPhase
exec
execCommand
exp
explicitOriginalTarget
export
extends
false
fgColor
FileReader
files
fill
fillRect
fillStyle
fillText
filter
final
finally
find
firstChild
float
floor
focus
font
fontFamily
fontSize
fontSizeAdjust
fontStretch
fontStyle
fontVariant
fontWeight
for
forms
forward
frame
frameElement
frames
fromCharCode
fullScreen
Function
function
getAsDataURL
getAttention
getAttribute
getAttributeNode
getAttributeNodeNS
getAttributeNS
getComputedStyle
getContext
getDate
getDay
getElementById
getElementsByClassName
getElementsByName
getElementsByTagName
getElementsByTagNameNS
getFullYear
getFullYear 
getHours
getImageData
getMilliseconds
getMilliseconds 
getMinutes
getMonth
getNamedItem
getNamedItemNS
getResponseHeader
getSeconds
getSelection
getTime
getTimezoneOffset
getUTCDate
getUTCDate 
getUTCDay
getUTCDay 
getUTCFullYear
getUTCFullYear 
getUTCHours
getUTCHours 
getUTCMilliseconds
getUTCMilliseconds 
getUTCMinutes
getUTCMinutes 
getUTCMonth
getUTCMonth 
getUTCSeconds
getUTCSeconds 
getYear
globalAlpha
globalCompositeOperation
globalStorage
goto
hasAttribute
hasAttributeNS
hasAttributes
hasChildNodes
hasFeature
height
History
history
home
id
if
images
implementation
implements
import
importNode
in
indexOf
Infinity
initEvent
initKeyEvent
initMouseEvent
initUIEvent
innerHeight
innerHTML
innerWidth
insertBefore
insertData
insertRow
insertRule
instanceof
int
interface
isChar
isFinite
isNaN
isPointInPath
isSupported
item
JavaArray
JavaClass
JavaObject
JavaPackage
join
keydown
keypress
keyup
lang
lastChild
lastIndexOf
lastModified
layerX
layerY
left
length
letterSpacing
lineCap
lineHeight
lineJoin
lineTo
lineWidth
linkColor
links
listStyle
listStyleImage
listStylePosition
listStyleType
LN10
LN2
load
loaded
loadend
loadOverlay
localeCompare
localName
Location
location
locationbar
log
LOG10E
LOG2E
long
margin
marginBottom
marginLeft
marginRight
marginTop
markerOffset
marks
match
Math
max
maxHeight
maxWidth
measureText
menubar
metaKey
method
Microsoft.XMLHTTP
min
minHeight
minWidth
miterLimit
mousedown
mousemove
mouseout
mouseover
mouseup
moveBy
moveTo
Msxml2.XMLHTTP
name
namespaceURI
NaN
native
Navigator
navigator
new
nextSibling
nodeName
nodeType
nodeValue
normalize
null
Number
Object
offsetHeight
offsetLeft
offsetParent
offsetTop
offsetWidth
onabort
onbeforeunload
onblur
onchange
onclick
onclose
oncontextmenu
ondblclick
ondrag
ondragdrop
ondragenter
ondragleave
ondragover
ondragstart
ondrop
onerror
onfocus
onkeydown
onkeypress
onkeyup
onload
onloadend
onmousedown
onmousemove
onmouseout
onmouseover
onmouseup
onpaint
onprogress
onreadystatechange
onreset
onresize
onscroll
onselect
onsubmit
onunload
open
openDialog
opener
originalTarget
orphans
outerHeight
outerWidth
outline
outlineColor
outlineStyle
outlineWidth
overflow
overrideMimeType
ownerDocument
ownerElement
package
Packages
padding
paddingBottom
paddingLeft
paddingRight
paddingTop
page
pageBreakAfter
pageBreakBefore
pageBreakInside
pageX
pageXOffset
pageY
pageYOffset
paint
parent
parentNode
parse
parseFloat
parseInt
pause
pauseAfter
pauseBefore
personalbar
PI
pitch
pitchRange
pixelDepth
pixelHeight
pixelLeft
pixelTop
pixelWidth
pkcs11
playDuring
plugins
pop
popupNode
posHeight
position
posLeft
postMessage
posTop
posWidth
pow
prefix
preventDefault
previousSibling
print
private
progress
prompt
protected
prototype
public
push
putImageData
quadraticCurveTo
queryCommandEnabled
queryCommandIndeterm
queryCommandState
queryCommandValue
quotes
random
RangeError
readAsBinaryString
readAsDataURL
readAsText
readyState
rect
ReferenceError
referrer
RegExp
relatedTarget
releaseEvents
removeAttribute
removeAttributeNode
removeAttributeNS
removeChild
removeEventListener
removeNamedItem
removeNamedItemNS
replace
replaceChild
replaceData
reset
resize
resizeBy
resizeTo
responseText
responseXML
restore
result
return
returnValue
reverse
richness
right
rotate
round
rows
rules
save
scale
screen
screenX
screenY
scroll
scrollbars
scrollBy
scrollByLines
scrollByPages
scrollHeight
scrollIntoView
scrollLeft
scrollMaxX
scrollMaxY
scrollTo
scrollTop
scrollWidth
scrollX
scrollY
search
select
self
send
sessionStorage
setAttribute
setAttributeNode
setAttributeNodeNS
setAttributeNS
setDate
setFullYear
setFullYear 
setHours
setInterval
setMilliseconds
setMilliseconds 
setMinutes
setMonth
setNamedItem
setNamedItemNS
setRequestHeader
setSeconds
setSeconds 
setTime
setTime 
setTimeout
setTransform
setUTCDate
setUTCDate 
setUTCFullYear
setUTCFullYear 
setUTCHours
setUTCHours 
setUTCMilliseconds
setUTCMilliseconds 
setUTCMinutes
setUTCMinutes 
setUTCMonth
setUTCMonth 
setUTCSeconds
setUTCSeconds 
setYear
shadowBlur
shadowColor
shadowOffsetX
shadowOffsetY
shift
shiftKey
short
showModalDialog
sidebar
sin
size
sizeToContent
slice
sort
speak
speakHeader
speakNumeral
speakPunctuation
specified
speechRate
splice
split
splitText
sqrt
SQRT1_2
SQRT2
static
status
statusbar
stop
stopPropagation
stress
String
stroke
strokeRect
strokeStyle
strokeText
style
styleFloat
styleSheets
submit
substr
substring
substringData
summary
super
supports
switch
synchronized
SyntaxError
tabIndex
tableLayout
tagName
tan
target
tBodies
test
textAlign
textBaseline
textContent
textDecoration
textDecorationBlink
textDecorationLineThrough
textDecorationNone
textDecorationOverline
textDecorationUnderline
textIndent
textShadow
textTransform
tFoot
tHead
this
throw
throws
timeStamp
title
toDataURL
toDateString
toExponential
toFixed
toGMTString
toLocaleDateString
toLocaleLowerCase
toLocaleString
toLocaleTimeString
toLocaleUpperCase
toLowerCase
toolbar
tooltipNode
top
toPrecision
toString
total
toTimeString
toUpperCase
toUpperCaseXMLHttpRequest
toUTCString
toUTCString 
transform
transient
translate
true
try
type
TypeError
typeof
undefined
unescape
unicodeBidi
unload
unshift
updateCommands
URIError
URL
UTC
value
valueOf
var
verticalAlign
view
visibility
vlinkColor
voiceFamily
void
volatile
volume
which
while
whiteSpace
widows
width
Window
window
with
wordSpacing
write
writeln
XMLHttpRequest
zIndex</code></pre>
]]></content:encoded>
		<dc:subject>JavaScript</dc:subject>
		<dc:date>2010-01-17T09:59:47+09:00</dc:date>
		<dc:creator>t*</dc:creator>
		<dc:publisher>NINJA BLOG</dc:publisher>
		<dc:rights>t*</dc:rights>
	</item>
	<item rdf:about="http://blog.bornneet.com/Entry/261/">
		<link>http://blog.bornneet.com/Entry/261/</link>
		<title>canvasで虫めがね風に画像を拡大する</title>
		<description>
今日のセミナー中にできるかも・・・と思いついたので作ってみました。
意外と簡単に、1時間程度でできました。

canvasで画像拡大鏡

マウスカーソルのある部分を拡大して表示できます。
ただ、単純に引き伸ばしているだけなので、荒くなっちゃいます。

一応倍率も変えられますよ。...</description>
		<content:encoded><![CDATA[<p>
今日のセミナー中にできるかも・・・と思いついたので作ってみました。<br />
意外と簡単に、1時間程度でできました。<br />
<br />
<a href="http://tnantoka.net/canvas/glass/">canvasで画像拡大鏡</a><br />
<br />
マウスカーソルのある部分を拡大して表示できます。<br />
ただ、単純に引き伸ばしているだけなので、荒くなっちゃいます。<br />
<br />
一応倍率も変えられますよ。<br />
<br />
bookmarkletとかにしたらおもしろいかもですね。<br />
<br />
あ、<a href="http://tnantoka.net/canvas/showcase/">tnantoka's Canvas Showcase</a>と2重更新するのが既に面倒だ。<br />
どうしよう？？<br />
</p>]]></content:encoded>
		<dc:subject>Canvas</dc:subject>
		<dc:date>2010-01-17T01:47:38+09:00</dc:date>
		<dc:creator>t*</dc:creator>
		<dc:publisher>NINJA BLOG</dc:publisher>
		<dc:rights>t*</dc:rights>
	</item>
	<item rdf:about="http://blog.bornneet.com/Entry/260/">
		<link>http://blog.bornneet.com/Entry/260/</link>
		<title>今まで作ったcanvas作品を集めてみた</title>
		<description>
そろそろ本格的にhtml5やcanvasが流行り始めるかもしれない、
そんな予感というか妄想をして、今まで作ったcanvasプログラムを集めてみた。

ちょっとしたポートフォリオですね。

tnantoka&#039;s Canvas Showcase

2年前から触ってるのに、進歩してない...</description>
		<content:encoded><![CDATA[<p>
そろそろ本格的にhtml5やcanvasが流行り始めるかもしれない、<br />
そんな予感というか妄想をして、今まで作ったcanvasプログラムを集めてみた。<br />
<br />
ちょっとしたポートフォリオですね。<br />
<br />
<a href="http://tnantoka.net/canvas/showcase/">tnantoka's Canvas Showcase</a><br />
<br />
2年前から触ってるのに、進歩してない・・・orz<br />
むしろ小ネタに走ってる傾向にあることがわかりました。<br />
<br />
これからも思いつきを大事にしていきたいです。<br />
<br />
※ 実は結構アーリーアダプターだったんだぜ？
</p>
]]></content:encoded>
		<dc:subject>Canvas</dc:subject>
		<dc:date>2010-01-17T00:17:46+09:00</dc:date>
		<dc:creator>t*</dc:creator>
		<dc:publisher>NINJA BLOG</dc:publisher>
		<dc:rights>t*</dc:rights>
	</item>
	<item rdf:about="http://blog.bornneet.com/Entry/259/">
		<link>http://blog.bornneet.com/Entry/259/</link>
		<title>HTML5 TechTalk#3＆ハンズオンセミナーに行ってきた</title>
		<description>
「canvas初心者」という条件に該当しないと思われることをわかっていながら、
行ってきました。
（googleの食堂以外の場所に入ってみたかっただけ、というわけではないですよ^^）

簡単にまとめると、こういうことをしようというセミナーでした。







嘘です、も...</description>
		<content:encoded><![CDATA[<p>
「canvas初心者」という条件に該当しないと思われることをわかっていながら、<br />
行ってきました。<br />
（googleの食堂以外の場所に入ってみたかっただけ、というわけではないですよ^^）<br />
<br />
簡単にまとめると、こういうことをしようというセミナーでした。<br />
<br />
<canvas width="150" height="150" style="border: 1px solid black;" id="rotate"></canvas><br />
<br />
<input type="button" value="rotate" onclick="(function() {
var canvas = getElementById('rotate');
var ctx = canvas.getContext('2d');
var cw = canvas.width;
var ch = canvas.height;
var x = parseInt(cw / 2);
var y = parseInt(ch / 2);
var deg = 0;

rotateTimerId = setInterval(function() {
	ctx.clearRect(0, 0, cw, ch);
	ctx.save();
	ctx.translate(x, y);
	ctx.rotate(deg * Math.PI / 180);
	ctx.fillRect(-x, -y, cw, ch);
	ctx.restore();
	deg += 2;
	deg = deg % 360;
}, 60);
})();" />
<input type="button" value="stop" onclick="(function() {
	clearInterval(rotateTimerId);
})();" />
<br />
<br />
嘘です、もっとためになる話がたくさんありました。<br />
内容については、公開されてる資料とかをご参照下さい。<br />
※ ハッシュタグ<a href="http://search.twitter.com/search?q=%23html5j" class="external" target="_blank" title="新しいウィンドウで開きます">#html5j</a>とかから辿れば見つかると思います。<br />
<br />
で、今日の話を聞いてて気づいたのは、結構前からcanvasを触ってきたけど、<br />
初心者とあんまり変わんないなーということ。<br />
つまり、canvasを使うのに知識なんていらなくて、<br />
<strong>アイディアと気合と<a href="http://www.html5.jp/canvas/ref.html" class="external" target="_blank" title="新しいウィンドウで開きます">リファレンス</a>さえあれば、なんだってできる</strong>んですよね。<br />
（と、珍しくポジティブシンキンしてみる）<br />
<br />
ただ、非プログラマ層（デザイナーさんとかエンドユーザ）に広めるのって難しそう、<br />
と今更ながらに思ったりもした。<br />
確かにjsプログラマな僕達にとっては画期的なんだけれど、<br />
デザイナーさんにとってはASでやれば良いのでわざわざ覚える必要もないし、<br />
ユーザにとってはFlashだろうとcanvasだろうと動けばいいんですもんねー。<br />
※ これはHTML5の他の仕様にも言えて、cometだろうとwebsocketだろうと<br />
　　動けば（例えば、ホワイトボードを共有できれば）なんだって良い。<br />
<br />
とかごちゃごちゃ考えずに、<strong>「こんな便利なことできるぜ！」</strong>ってサービスを作って、<br />
<strong>「これどうやってんの？」「HTML5だよ！」「すげー！！」</strong>って広めていけば良いんでしょうね。<br />
そして、最終的には<strong>「標準仕様だから、全部のブラウザで動くんだぜ！！！」</strong>って胸をはって言いたい。<br />
（Google Waveもそういう方針？）<br />
<br />
ということで、皆さん頑張りましょう。<br />
僕も微力ながら、今後もhtml5な作品を公開していきたいと思います。<br />
<br />
<br />
・・・あ、あと、属性値の引用符の省略ってどこまで推奨してよいものやら、<br />
と思うのは僕だけでしょうか？<br />
htmlってやっぱプログラムで（ユーザ入力データを使って）生成されることが多いから、<br />
引用符で囲んでおいた方が安全なんじゃないかと思ってしまうんですよねー。<br />
<br />
まぁそもそも仕様的にスペースやタグ、引用符が入る場合は、省略×なわけだから、<br />
ちゃんとエスケープしなさいってことなんだろうけど。<br />
<br />
<br />
とまぁいろいろ考えさせられて良い刺激になりました。<br />
やっぱりセミナー・勉強会っていいですね。<br />
<br />
最後になりましたが、セミナーを主催していただいた、白石さんや羽田野さんにお礼を申し上げます。<br />
ありがとうございましたm(_ _)m<br />
</p>
]]></content:encoded>
		<dc:subject>Canvas</dc:subject>
		<dc:date>2010-01-16T18:55:27+09:00</dc:date>
		<dc:creator>t*</dc:creator>
		<dc:publisher>NINJA BLOG</dc:publisher>
		<dc:rights>t*</dc:rights>
	</item>
</rdf:RDF>
