tag:blogger.com,1999:blog-43496032177783875292024-03-14T15:43:16.372+09:00MeSH日記MeSHは、Multimedia e-Learning based on Simulator for Higher educationの略です。シミュレータをベースとしたe-Learning環境構築のためのフレームワークを開発しています。Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.comBlogger35125tag:blogger.com,1999:blog-4349603217778387529.post-59993919269396104042012-11-26T01:39:00.001+09:002012-11-26T01:44:21.790+09:00JSXでグローバル変数を扱う際に気をつけることここで言うグローバル変数
一口にグローバル変数と言っても言語や環境によって意味が異なりますが,ここではWebブラウザ上でJavaScriptを扱う場合のグローバル変数を指すこととします.もう少し具体的に言えば,JavaScriptに於いてvarを付けずに利用した変数で,内部的にはwindow.変数名です.そして,JSXでグローバル変数を扱う場合には「js.jsx」をインポートした上で「var foo = js.global["foo"] as number;」のようにして使います(使用するグローバル変数がfooで,その型がnumberの場合).なので,グローバル変数fooを取得してコンソールに表示するプログラムは以下のようになります.
<![CDATA[
import "js.jsx";
class glb {
static function main() : void {
Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-60623719990422398132012-07-01T15:05:00.000+09:002012-07-01T15:36:24.179+09:00MacOS XにJSX環境を構築する方法セカンドマシンにJSX
これまでに,MacOS Xに様々なソフトウェアを導入する記事を書いてきましたが,すでに情報が古くなっているのと,本日のJSX推しとして,マッサラな状態からJSXを導入する方法をまとめました.ほぼそのままのインストールログをつけておきますので,参考になれば幸いです.なお,ホスト名は「sahara」,ユーザ名は「suda」です.背景が濃いグレーの箇所が実際に入力する行です.
本日インストールするソフトウェアは,
homebrew 0.9.1
git 1.7.11.1
node.js 0.8.1
npm 1.1.35
JSX 0.0.1
です.
関連ファイルのインストール
まずはXcodeをインストールします.Lionを使用している人はMac App Storeからどうぞ.LeopardやSnowLeopardの人は付属CD-ROMに入っているようです.なお,Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-12321288719375855602012-06-29T16:58:00.000+09:002012-06-29T16:58:03.864+09:00JSXによるガジェット開発 ー時計編ーガジェット開発にもJSX
JSXでのプログラミングにもだいぶ慣れてきたので,今回はちょっとしたアプリを作ってみたいと思います.俗に言うガジェットですね.手始めにガジェットの中でも定番と言える,時計を紹介します.
時計を作ろうとして,こちら*1のtimer.jsx(タグ)を見ながらTimerを試し,その勢いでWeb版を開発しました.あまりに簡単で拍子抜けしました.これだけだと面白く無いので,さらに勢いに乗ってアナログ時計も開発しました.
ディジタル時計
<![CDATA[
import "timer.jsx";
import "js/web.jsx";
class Application {
static function main( elm_id: string ): void {
var elm = dom.id( elm_id ) as HTMLElement;
varAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-40668758299999430362012-06-27T01:33:00.000+09:002012-06-27T04:05:30.115+09:00GUI版DFT by JSXやはりグラフが必要
コマンドライン版のDFTがとりあえず完成したのを受け,次はGUI版だと意気込んでみたものの,なかなか時間が取れなくて公開が遅くなってしまいました.数値を表示するだけのDFTは,表示が寂しいとかそう言うレベルではなく,分析結果が全く分かりません.やはりグラフィック表示が必要です.
どこに時間が掛かっていたかと言うと,グラフ表示するための「仮想座標をサポートした描画領域」のクラスを作成したからです.こちらのクラスはまだ完成度が低く公開するには時期尚早ですが,githubには上げておきます.使い方の説明は,その内このブログで公開する予定です.
そんなこんなで,ようやく公開するに耐えるDFTアプリができました.今のところ,分析できる波形が「単純なsin波」「位相が30度ずれたsin波」「矩形波」のみです.もっと色々と機能をつけることもできますが,まずは公開を優先したのでご容赦Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-64636616628213007142012-06-15T16:19:00.000+09:002012-06-15T16:19:29.373+09:00JSXでDFT(改訂版)DFTの改訂版
以前の記事を書いた際には,まだまだJSXのことがよく分かっておらず,変な記述が多かったのと,一部バグがあったのでソースコードを改訂しました.とりあえずソースをご覧ください.
<![CDATA[
class _Main {
static function main( args: string[] ): void {
var p = 10;
var spectrum = new dft();
var fn = ( x: number ):number -> {
return( 3.0*Math.sin(x) + 7.0*Math.cos(3.0*x) );
};
var wave = FG.sampling( fn, p );
spectrum.dft( wave );
var ar = spectrum.get_ar();
varAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-71976257189297450202012-06-15T15:55:00.000+09:002012-06-15T16:19:42.191+09:00JSXの関数あれこれ関数の定義方法
素のJavaScriptでは,関数を定義する方法が4つありました.それぞれ使いどころが異なるのですが,細かい説明は省略します.以下,2つのパラメータを受け取り,それらの積を返す関数を考えます.
Function foo( x, y ) { return x * y; }
function bar( x, y ) { return x * y; }
baz = function( x, y ) { return x * y; };
qux = new Function( "x", "y", "return x * y;" );
一方,JSXでは以下の方法で関数を定義できます.JavaScriptではクラスの概念があやふやですが,JSXではクラスメソッドとインスタンスメソッドと単なるメソッドに区別されます.以下の中では,1がインスタンスメソッド(インスタンスを作成して「Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-30481419565615927632012-06-08T19:27:00.000+09:002012-06-30T20:18:18.285+09:00JSXによるマウスでお絵描きようやくソースコードの整理が終わったので,恥ずかしながら公開します.マウスでお絵描きするサンプルプログラムです.ペンの色や太さを変更する機能や,保存機能など全く実装していません.あくまで,マウスの座標を取得したり,Canvasを使うサンプルとして御覧ください.
pen.html
<![CDATA[
<html>
<head>
<title>Mouseでお絵描き</title>
<style>
body {
background-color: #7f7f7f;
}
#myCanvas {
position: absolute;
top: 0;
left: 0;
background-colorAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-59721171808674425462012-06-08T14:21:00.004+09:002012-06-14T11:51:29.829+09:00メモ:JSXの配列の扱いJSXの基本的な文法
JSXはJavaに近い書式です.また,詳しくは知りませんがActionScriptにも近いようです.とは言え,新しい言語と出会った際にやってみる「配列に値を代入して,表示してみる」という簡単なプログラムを作ろうとしても,細かい文法の違いで苦労しました.と言うわけで配列に関する基本的な文法についてメモしておこうと思います.
配列の初期化
最初は,こんな簡単なことでも迷ってしまったので書いておきます.簡単なのは直接値を代入する場合で,以下のプログラムの2行目のように書きます.他の言語のように,「まずは配列を宣言して・・・」と考える場合は同5行目のように書きます.
<![CDATA[
// 直接値を代入する
var array1 = [ 1, 3, 5 ];
// 空の配列を作成する
var array2 = [] : Array.;
// 空の配列を作成する そのAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-2711113660991074192012-06-07T10:30:00.003+09:002012-06-19T20:22:38.638+09:00メモ:Macのターミナルの設定.bashrcの話
このブログを読む方はすでに承知のことと思いますが,Mac OS Xの中枢部はBSD Unixの系統です.なので,ターミナルをひらくと見慣れた画面が開き,いつものコマンドを使うことができます.その割に,ホームディレクトリに.bashrcや.bash_profileが見当たりません.検索してみると,.bash_profileを作ってそこから.bashrcを読み込ませれば良いとのことなので,さっそく指示に従ってみます.
まずは.bash_profileです.
<![CDATA[
if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi
]]>
続いて.bashrcです.かなり偏った内容なので,各自好きな設定をどうぞ.
<![CDATA[
alias ls='ls -F'
alias javac='javac -J-Dfile.encodingAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-20984329500203790762012-06-06T20:37:00.000+09:002012-06-14T12:28:34.703+09:00JSXでDFTJSXという言語
JSXという言語が彗星のごとく現れました.この言語を使ってプログラムを書くと,ギンギンに最適化されたJavaScriptに変換できるということで興味を持ちました.ドキュメントを読んでいくと,文法がJavaに近いこととJava並に型チェックにうるさいことなどが分かりました.
これまでMeSHやNylonの開発にJavaScriptを使ってきたのですが,thisが何を指すか不明確であることや,変数のチェックがないことによるエラーに悩まされてきました.そこに現れたのがJSXです.言語仕様はJavaのように窮屈ですが,今後ライブラリやサービスを提供していくにあたり,妙なエラーに悩まされたくないので,まずは試してみることにします.
DFTのソースコード
DFTは,言わずと知れた離散フーリエ変換(Discrete Fourier Transform)です.周波数分析の強い味方です.Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com1tag:blogger.com,1999:blog-4349603217778387529.post-24487649292684163592012-02-13T05:55:00.002+09:002012-02-13T05:55:46.261+09:00Audio Data APIのサンプルJavaScriptでサウンド合成
HTML5のおかげでFlashが不要になると言われています.では,これまでFlashを使わなければならなかった用途に何があるでしょうか?グラフィックス描画,フォント,アニメーション,通信などがメジャーなところですが,それ以外にもサウンド出力があります.合成した波形を音として出力する機能は,特に欲しい機能でした.厳密には,Javaでも合成サウンドの出力は可能だったのですが,それだけのためにJavaを使う人は私以外にいないはずなので,Flashの独壇場と言えるでしょう.
ところが,HTML5の旗印のもと,様々な機能がJavaScriptから利用できる時代になりました.Firefoxに実装された,Audio Data APIもその一つです.Audio Data APIとは何かと言うと,合成した波形を音として出力するAPIです.と言う訳で,今回はAudio Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-4181856624664657482012-02-03T18:08:00.000+09:002012-02-03T18:08:40.235+09:00最近のツイートのまとめ 20120203Twitterでつぶやいたことを後々探そうとしても出てこないことが多いので,このページにまとめておきます.内容はブログ用に編集しています.リツイートは元情報の方のお名前を付けておきます.リンク集+αと思ってください.
JavaScriptでPhotoshopファイルを解析する「psd.js」
http://dothtml5.com/archives/20120201_psdjs.html
データを読み込んで利用することは,プログラム言語よりもデータ構造を知ることができるか否かにかかっています.とは言え,まさかJavaScriptでPhotoshopのデータを読み込めるようになるとは思っていませんでした.@RSS_hateb_Roy 様より.
Node.js 日本ユーザグループ
http://nodejs.jp/
node.jsのバージョンアップを受け,ドキュメントが最新開発版(Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-48099431278036901222012-01-27T21:58:00.002+09:002012-02-02T05:44:47.552+09:00Mac OS Xにnode.jsなどをインストールパッケージ管理システム
Macでは,macportsと言うパッケージ管理システムが有名だったのですが,root権限が必要などの理由により,最近はhomebrewが勢力を伸ばしてきました.そこで,homebrewを使用してnode.js関係のインストールを行う方法を示します.せっかくなので,インストールログをつけておきます.なお,ホスト名は「sahara」,ユーザ名は「suda」です.背景が濃いグレーの箇所が実際に入力する行です.
本日インストールするものは,
homebrew
node.js
mongoDB
npm
です.
インストール
まずはXcodeをインストールします.Lionを使用している人はMac App Storeからどうぞ.LeopardやSnowLeopardの人は付属CD-ROMに入っているようです.なお,Javaも必要なようなのでインストールしておいてください.
Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-81855850609241713992012-01-25T23:48:00.000+09:002012-01-25T23:48:05.607+09:00Nylon iframeNylon iframeとは
昨日の日記に続いてXDMの話です.Nylonの仕組みを拡張して,iframeを超えてメッセージセンディングを行うモジュールを開発しました.プログラムはgithubで公開しています.
Nylon iframeの使い方
まずはNylonとnylon.iframe_parentを初期化します.idがdestFrameのiframeに,localhost配下のhtmlを読み込んでいるものとします.その場合の初期化は以下のように行います(変数名は手抜きです).通常,onloadイベント内に記述してください.
<![CDATA[
var a = nylon.client.create();
var b = nylon.iframe_parent.create( document.getElementById('destFrame'), 'http://Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-6192155588767087232012-01-24T21:39:00.000+09:002012-01-24T21:39:27.264+09:00XDMの基礎知識XDM - Cross Document Messaging -
AJAXでは,セキュリティの都合により,そのWebページが格納されているサーバとしか通信を行えませんでした.これに対してJSONPを使って回避することも可能ですが,JSONPはscriptタグによるJavaScriptのロードそのものであり,トリッキーなコードになることは否定できません(jQueryを使うことで回避できますが,ここでは置いておきます).そんな時に使われるのが,XDMです.
XDMとは,大雑把にいってしまうと,iframeを作う技術です.そうです.frameは抹殺されたのですが,iframeは残っています.それで,iframeの特性として「表示上は同一ページだが,セキュリティ上の扱いは親フレームとは別に扱う」ことになっています.すなわち,親フレームとは異なるサーバに置いてあったとしても,子フレームは自身が格納Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-68697299226000267172011-11-09T03:56:00.000+09:002011-11-09T03:56:40.546+09:00Nylon WebWorkersについてWebWorkers
HTML5で導入されたWebWorkersは,JavaScriptで書かれたプログラムをバックグラウンドで動作させるAPIです.これがまたシンプルなAPIで,(1)Worker(バックグラウンドで動作するプログラム)を起動する,(2)Workerにメッセージを送る(postMessageメソッド),(3)Workerからメッセージが届いた際に実行する処理を記述する(onmessageやaddEventListener)のみでWorkerを制御します.メッセージがほとんど行き交わないような単純な処理であれば混乱は少ないのですが,メッセージが行き交うような処理になると,届いたメッセージの内容を元に処理を分岐させるなどの記述が多くなり,プログラム全体の見通しが悪くなります.
この問題点に対応したフレームワークとして,すでにAlexServiceが公開されています.(Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-69082090858022634852011-10-30T00:21:00.000+09:002011-10-30T00:23:46.130+09:00NylonサーバについてNylonサーバの役割
Nylonサーバは,あるWebブラウザから送られてきた通信内容を解析して,キーワードに「broadcast」が含まれていた場合には他のWebブラウザに転送する機能と,その他特定のキーワードに対応した処理を行う機能を持つものです.
理論上,言語は問いませんが,Socket.IOが便利なのでJavaScriptで記述するのが自然だと思います.実際,クライアント側の通信モジュール「nylon.coe.js」がSocket.ioを前提として組んでいます.
Nylonサーバのソースコード
以下にNylonサーバのソースコードを示します.できるだけコメントを付けているので,コメントを追いかけていけばなんとなく動作がわかると思います.21行目から31行目がメインの処理(=キーワードの解析・通信内容の転送など)となります.
<![CDATA[
var express = Anonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com1tag:blogger.com,1999:blog-4349603217778387529.post-9136720282197706792011-10-28T00:46:00.000+09:002011-10-29T23:56:05.861+09:00Nylon入門Nylonによるイベント送受信の流れ
前回はNylonの書き方について簡単に紹介しました.今回は,Webブラウザ間のやりとりについて,実際のコードを踏まえて説明したいと思います.下図のように,nylonサーバに複数のクライアント(Webブラウザ)が接続している状態です.ここで,obj_aは任意のオブジェクトです.COeはnylonサーバと通信するnylonモジュールで,正式なファイル名はnylon.coe.jsです.
Nylonのモジュールは,キーワードに従ってイベントを待つことができます.COeは,「broadcast」と「server」と言うキーワードで待ち受けをして,イベントの内容をnylonサーバに送ります.nylonサーバではキーワードを判別し,「broadcast」だった場合には,送られてきたイベントの内容を他のWebブラウザに送ります.「server」だった場合にはAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com1tag:blogger.com,1999:blog-4349603217778387529.post-23344364454747495392011-10-22T23:02:00.001+09:002011-10-22T23:02:44.455+09:00NylonNylonとは何か?
MeSHの開発に当たり,すべての機能を盛り込んだシステムとして開発すると,その後の変更作業が地獄と化すことが分かっています.そこで,e-Learningシステムを,個々の機能ごとに分割して開発し,統合する仕組みが必要となりました.その際,単にiframeなどで統合するのではなく,個別の機能を融合しつつ統合する仕組みが望まれました.今回は,その仕組として開発されたNylonについて説明します.
具体的に何が困るのか?
MeSHで目指しているWebによるリアルタイムe-Learningを実現することは,node.jsとsocket.ioのおかげで用意になりました.しかし,全ての機能を盛り込んだシステム(=モノリシックなシステム)を開発すると,機能追加や変更が面倒です.どこにバグが潜んでいるかヒヤヒヤです.
では,リアルタイムe-Learningを実現する機能をバラバラAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com1tag:blogger.com,1999:blog-4349603217778387529.post-667678791209541432011-08-27T01:16:00.002+09:002011-08-27T01:19:02.580+09:00JavaScriptとC#の連携方法(2)ずっと前にJavaScriptとC#の連携について投稿しました.まずはDOM要素にアクセスするところだけ投稿して,その後C#からJavaScriptの関数を呼んだり,その逆を投稿しようとして後回しにしたまま忘れていました.と言うことで,C#からJavaScriptの関数を呼ぶ方法および,JavaScriptからC#の関数を呼ぶ方法について説明します.
今回は「Microsoft Visual Web Developer 2010 Express」(以下VWD)を使用して,C#を使ってSilverlight3アプリケーションを作成しました.HTMLファイルはVWDによって自動生成されたものに若干手を入れています.
また,ものすごく単純化して,以下の2つの機能を持つ一つのアプリケーションを作成します.Silverlight→JavaScriptの例として,Silverlightで一つのAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com1tag:blogger.com,1999:blog-4349603217778387529.post-30439341849240820682011-04-08T23:53:00.000+09:002011-04-08T23:53:22.145+09:00OS Xでpowを使ってみる今回も、MeSHから離れた話題です。
powとは何か?平たく言うと、Mac OS X上で動作する、Rackサーバです。Rackとは何かと言うと、ruby言語を利用して作成したアプリケーションとWebサーバとのインタフェース統一するためのライブラリです。SinatraもRailsも、Rackを介して動作するようになっています。powは、Rackの仕組みに沿って開発されたプログラムを、お手軽に試す際に有効です。
例えば、Webアプリケーションを試しに作ってみようとして、ホワーンとアイディアが浮かんでいる段階を想像してください。Railsなら、とりあえずプロジェクトを作成して、DBの構造を決めて、scaffoldして・・・mongrelなどを動かして、Webブラウザから確認するという流れになります。Sinatraだと、DBにテーブルを作って、app.rbを作って、mongrelなどを動かしAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-88424706886322768982011-02-28T19:34:00.000+09:002011-02-28T19:34:31.967+09:00RubyとOLEでPowerPointを遠隔操作してみるMeSHの枠組みを拡張する?MeSHは、これまでWebブラウザ上で様々なものを動作・同期させることを念頭に置いてきました。しかし、「様々な」という概念を拡張していくと、ネイティブアプリケーションまで辿り着きます。せっかくプラットフォームに依存しないよう開発してきたのですが、「できない理由を説明するより、できることを証明してから悩もう」の精神に則り、ネイティブアプリケーションを操作してみたいと思います。今回は技術検証なので、Windows上にWeb簡易サーバを構築し、ネイティブアプリケーションを制御してみます。
RubyとOLEOLEはObject Linking and Embeddingの略で、簡単に言うとWindowsアプリの連携を図るための根幹です。対応したプログラムであれば、プログラムを制御したり、プログラム中のイベントに応じて自作プログラム中のメソッドを実行することができますAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-27447538441677200112011-02-12T01:06:00.000+09:002011-11-09T03:57:13.400+09:00Mac OS XのApache設定MacBook Airちょっと前になりますが、MacBook Air 11'モデルを入手しました。System7以来、久しぶりにMacに回帰しました。CPUなどのスペックには特筆すべきことはない、いや、むしろ今のご時世では貧弱と言わざるをえないのですが、予想外にキビキビ動作します。特にスリープへの移行と復帰は感動ものです。しかも、OS XはBSD UNIXの血を受け継いでいるので、Macは立派なUNIXマシンです。これまでWindows環境上でプログラミングしようとして、数々の苦労をしてきた経験からすると、様々な言語や環境がプリインストールされ、まともに動作することだけで嬉しくなってしまいました。(私とWindowsの相性がわるいことは否定しません。Apacheの設定がうまくいかないとか、Rubyでソケットを使うとうまくいかないとか、CGIの設定がうまくいかないとか、MySQLの設定がAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-71288025552475349992010-11-19T00:50:00.000+09:002010-11-19T00:50:41.330+09:00WebSocketを試すWebSocket最近、WebサーバからWebクライアントにデータをPushする技術としてWebSocketが脚光を浴びています。従来だと、Comet(AJAXの返答を引き延ばす技法=ロングポーリング)を用いて擬似的にPushしていたのですが、(サーバサイドもクライアントサイドも)プログラムが面倒だったり、クロスドメインへの対応がイマイチだったり、リアルタイム性が乏しかったりなどの理由で、だんだんとWebSocketに移ってきています。気づくと、サーバ側ではpywebsocketやnode.websocket.js、Jetty、mojoなどの実装が出てきましたし、クライアント側ではChromeやFirefoxが対応しており、そろそろ手を出してみても良い頃合いになってきました。ruby好きなので、サーバ側にrev-websocketを使ってみたいと思います。
rev-websocketのAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com0tag:blogger.com,1999:blog-4349603217778387529.post-37350400547608161982010-10-20T23:46:00.002+09:002010-10-21T00:05:03.948+09:00メモ: クロージャの書き方クロージャとは?JavaScriptに触れていると、クロージャという書き方に突き当たります。それ何?って思って検索しても、難しいことばかりで本質はなかなか分かりません。しかも、他の言語でどう書くかも掲載されないことが多いです。元々慣れない言語(JavaScript)を勉強しているときに、概念もあやふやで、他の言語の例もない・・・ってことで使えるようになるまで苦労しました。確かに、他の言語では書き表しにくい書き方です。
そうは言っても、避けてばかりでは進歩しないので、自己流で解説してみます。サンプルは、node.jsなどを想定して書いています。Debianのsqueeze(2010/10/20時点でtesting)では、すでにnode.jsが標準パッケージに入っているので、敷居はかなり低くなっています。
まずはJavaScriptでクロージャゴタゴタ書くと、難しいという先入観が形成されてAnonymoushttp://www.blogger.com/profile/06251973252679876036noreply@blogger.com1