AFPBB Newsの「拡大写真を見る」ボタンをクリックしたら、ウィンドウ全面に会員登録画面が表示されてブラウザを落とす以外になくなった[Permanent Link]
- 2008年12月30日 11時37分
- news
- No Comments
腹立つ(誇張)、って話。
ブラウザクラッシャーの類だな、これ。
Ctrl+Wで消せるけどさ。
ちなみにFx3.0.5/Ubuntuでの話。
強制全画面ブラウザウィンドウ表示っての、まだあったのね。
Cut and Try
PrintPreview
WordPress
maaguu.com
maaguu.comのお知らせとかとりとめのない話題とか
腹立つ(誇張)、って話。
ブラウザクラッシャーの類だな、これ。
Ctrl+Wで消せるけどさ。
ちなみにFx3.0.5/Ubuntuでの話。
強制全画面ブラウザウィンドウ表示っての、まだあったのね。
JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティスを何の気なしに買ってみてちらっと目を通したけれど、ちんぷんかんぷんです。
つまりあれだ、オレはプログラミングがわかりません。プログラミングがわからないオレが読んでちんぷんかんぷんなので、これはプログラミングがわからない人が読む本ではありません。
JavaScriptの関数は、(大部分は)レキシカルなスコープを持つファーストクラスオブジェクトである。JavaScriptはメインストリームに登場した最初のラムダ言語だ。実際には、JavaScriptはJavaよりもLispやSchemeとよく似ている。JavaScriptはCの皮を被ったLispなのである。この性質のおかげでJavaScriptは非常に強力な言語になっている。
JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
ひとまず用語の意味だけはメモしておこう。
レキシカル
以下のようにあったので、多分レキシカル
はローカル変数のローカルと同じ意味だろう。
クロージャはある関数全体が他の関数(以下、エンクロージャ)の内部で宣言されたときに発生し、内部の関数はエンクロージャのローカル変数(レキシカル変数)を参照する。
スコープ
上記引用に続いて以下のようにある。
実行時に外部の関数が実行された際、クロージャが形成される。クロージャは内部の関数のコードとエンクロージャのスコープ内の必要なすべての変数への参照からなる。
また、
プログラミングでのスコープとは、ある変数や関数が特定の名前で参照される範囲のこと。ある範囲の外に置いた変数等は、通常、その名前だけでは参照できない。このときこれらの変数はスコープ外である、「見えない」といわれる。
ファーストクラスオブジェクト
第一級オブジェクトで引けた。
第一級オブジェクト(ファーストクラスオブジェクト、first-class object)は、あるプログラミング言語において、その言語における他のものと比べて制限なしに使用できる物体のことである。第一級オブジェクトは「第一級データ型に属す」という。
この言葉は1960年代にChristopher Stracheyによって「functions as first-class citizens」という文脈で初めて使われた。
言語によって、第一級オブジェクトは次のような性質をもつ。
- 匿名のリテラルとして表現可能である。
- 変数に格納可能である。
- データ構造に格納可能である。
- それ自体に独自性を内在する(名前とは独立している)。
- 他のものとの等値性の比較が可能である。
- プロシージャや関数のパラメータとして渡すことができる。
- プロシージャや関数の戻り値として返すことができる。
- 実行時に構築可能である。
- 表示可能である。
- 読み込むことができる。
- 分散したプロセス間で転送することができる。
- 実行中のプロセスの外に保存することができる。
専門用語を調べるとその専門用語の説明に別の専門用語があってまた専門用語を調べなければなりませんね(^^ゞ
クロージャ (クロージャー、Closure) は、プログラミング言語において引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決する関数のことである。関数とそれを評価する環境のペアであるともいえる。
Schemeは完全な静的スコープのクロージャを持つ最初の言語として登場した。実質的にすべての関数型言語(Scala、Haskell、OCamlなど)とSmalltalkに由来するオブジェクト指向言語は何らかの形でクロージャを持っている。 その他のクロージャを持つ言語に、Groovy、ECMAScript(JavaScriptを含む)、Perl、Python、Ruby、Lua、C#などがある。
PHPが入っていませんね(5.3から実装されるらしいです)。
コンピュータプログラミングにおいてリテラルは、ソースコード内に値を直接表記したものをいう。数値、文字列、関数などさまざまな型のものが存在し、それぞれの表記方法も言語によって異なる。
リテラルを記述できることは、第一級オブジェクトを構成するための要件として見なされる場合もある。
だめだこりゃ、勉強しないと。
人を教える能力があるかどうかはさておき、オレは後者、経験の積み方を教えるほう。
私に技術的なものごとを教えて下さる方が主に二人いる。一人はその方が今まで積んできた経験を教えて下さる。一人は経験の積み方を教えて下さる。とてもとてもありがたい。(中略)ここで前者をAさん、後者をBさんと呼びたい。
(中略)
Aさんはとても親切な方だ。何かわからないことを訊ねると、すぐに適切な答えを教えてくださる。そして更に、何でその答えになるのかということも教えてくださる。そのなぜその答えになるのかという考え方にその方が積まれてきた経験がある。それを学ばせていただけるのが非常にありがたい。
(中略)
Bさんはちょっとぶっきらぼうな方だ。何かわからないことを訊ねると、その答えの調べ方だけ教えて下さる。答えを直接教えて下さることは滅多にない。けれども、教えて下さったことを元に答えを探すと必ず答えに行き尽くし、その答えに行き着く過程で何をどう調べたらいいのかということや、その答えの周辺知識も身に付く。そうして経験を積んでいくのだ、ということを学ばせていただけるのが非常にありがたい。
Aさんはとても親切
だけれども、Bさんはそうではありません。親切ではありません。教えられているこの人はまず、Aさんには「親切ないい人だ」というよい感情を抱き、Bさんには「不親切で感じが悪い」とよくない感情を抱いています。
Aさんは第一印象がよく、Bさんは第一印象が悪い。
なるほど、オレは今まで相手にぶっきらぼうなよくない印象を与えていたのか……というのは分かっていましたけれども、答えに辿り着くまでの道筋(調べ方
)を知らせないのは非常に勿体ないと思います。と言うのも、オレ自身が調べ方
を身に付けて技術を習得してきているからです(習得レベルはここでは置いておきますね)。それがオレの経験
だから、その核心を伝えずに何を教えられるのでしょうか。
……ということを今までオレは伝え切れていなかったのかなあ。調べ方
が大事なんだって言ってきたけれど、伝わり切らなかった。なにせ、調べ方
とその大事さを教えても、最後まで不満な顔をしている人ばかりにしか出会って来ませんでした。「こいつ自分で調べるのが面倒くさいから手っ取り早く答えが欲しいんだな」なんて勘ぐってみたりもしました。「いやいや、そうではないんだ、答えに辿り着くまでの試行錯誤が大事なんだ。練習しなければ身につかない」と言うことが伝わっていなかったのでしょう。
非常にありがたい
と言うこの人は、オレにとっては神様のようです。