2008年12月23日火曜日

遂にとらえたカワセミ!



昨日来の強い風もおさまり、20℃近かった気温も急激に下がった今日でしたが、日差しが快く
二重川沿いの散歩コースに行く。
鎌ヶ谷付近から川を下り、ゴルフ練習場を過ぎた地点で、小鳥の飛ぶ気配がする。
よもや、と思い目をこらすと、居ましたカワセミが!
カメラでは中々捉えられませんでした。
とにかく、連射モードに設定し撮りまくりました。
その一枚が、この写真です。
ピントが甘くボケていますが、もうこれがコンデジの限界です。

2008年12月20日土曜日

神崎川にカワセミ!

清水口調整池から神崎川を下る。河原子を通り過ぎ、市民プールを左に見て、木下街道方面に少し歩いた地点に、カワセミがいました。
場所は、「カワセミ発見場所」を参照してください。

カメラを向けようとした瞬間、下流方向に飛び去ってしまいました。
運が良ければ、再度見れるだろうと200m程歩くと居ました。
今度こそとカメラを向けるも、先程とは逆の上流方向に逃げられてしまいました。

羽が水色で、雀ほどの大きさでした。
多分カワセミに間違いないと思いますが、如何せん鳥には全く疎いので自信はありません。

2008年12月5日金曜日

Rubyのyield

「Rubyと云う言語をご存知ですか?」

「はい。少々の知識ならあります。」

「では、yieldについて説明してください。」

「・・・・・」

コールバック関数同様、分かった様な分からない様な代物。
(勿論、私だけのことかもしれませんが・・・)
そこで、白黒をつけようと、納得いくまで調べることに。

分かったことは、「主客を逆転して考えること」でした。
例えば、以下のコードを見てください。

def  bar
yield 10
end

bar {|v|
p v + 3
}

(これはRuby本家からの引用です。)

bar {・・・} が主(呼ぶ側(メイン))で、def ~end が客(呼ばれる側(関数))ですが、
誤解を懼れずに、yieldを単なる関数名として書き換えてみると、理解し易くなります。

def  yield(v)
p v + 3 # メイン内のブロック
end

yield(10) # 関数内の yield 10
どうでしょう。関数からメインをコールするように主客が逆転しています。
要するに、コールバック関数(メイン内のブロック)をコールするのがyieldです。
これでスッキリ。頭の中のモヤモヤが取り払われませんか。
唐突に、メインに出現する変数 v の意味も、漸く理解できたのではないでしょうか。

確認のため、もう1例(「Rubyプログラミング入門」から)。

def  foo(x,y)
x + yield(6,y)
end

bar (1, 3){|a,b|
a / b
} #=> 3

この場合、 x=1, y=3 なので

def  yield(a,b)
a / b
end

yield(6, 3) #=> 2
と、書き換えることができます。
結果は

x + yield(6,y) = 1 + yield(6,3) = 1 + 2 = 3

になります。

2008年12月3日水曜日

Ajaxにおけるコールバック関数

コールバック関数、とりわけAjaxに関してのものが、分かったような分からないようなモヤモヤ状態が漸く解消しました。
Itproの記事、「第3回 基本的なAjaxアプリケーションを作成してみよう(中編)」にありました。一部を転載しておきます。

<------ (以下が引用部分) ------>

 コールバック関数は,HTTP通信の状態が変化したタイミングで内部的に呼び出される関数です。コールバック関数を利用することで,以下のような処理を定義することが可能になります。

・応答待ちの状態を画面上に表示する
・サーバーから正常な応答を受け取ったタイミングでページの内容を更新する
・サーバーからエラーを受け取った場合にエラー・メッセージを表示する

 コールバック関数を定義するのは,onreadystatechangeプロパティの役割です。onreadystatechangeプロパティでは,

  xmlReq.onreadystatechange = showResponse;

のように,別に定義した関数名(ここではshowResponse)を指定することもできますが,本サンプルではよりシンプルに匿名関数を利用しています。匿名関数とは,その名の通り名前のない関数のことで,以下のようにプロパティ値に直接格納することもできます。

  xmlReq.onreadystatechange = function() {


...関数定義...


}

<------ (以上が引用部分) ------>

要は、onreadystatechangeプロパティに、関数名(関数のアドレス?)を設定することにより、その関数が
サーバからコールバックされるということ。

ただいま作業中

2022/04/13 MySTの翻訳環境作り サイドメニューをプログラムで変換可能にすること 作業の中心場所 – jupyter notebook : g:\jupyter\python pythonをwebでも可能に – g:\webapp\Doc-tools ...