Tclのイベント処理が止まる

Tclにはイベントドリブンで処理を行う方法が用意されています。
proc record1 { } {
  global s
  gets $s data
  set f [open "c:/temp/record.txt" a+]
  puts $f $data
  close $f
}

set s [socket 127.0.0.1 8097]
fconfigure $s -blocking 0 -buffering line -translation auto
fileevent $s readable record1
vwait a

こういうコードを書くと、サーバ(この場合localhost)のポート8097に接続しサーバから送られてくるデータをファイルに保存していきます。fileeventがTclのイベント処理に登録するコマンドで、読み取り可能なデータが入ってくると関数record1が呼び出されるようにしています。vwaitが変数aに値がセットされるまでイベント処理を続けるコマンドですが、このコードには変数aをセットするところがありませんので延々とイベント処理が続きます。

一方Tcl環境をC#等Managedな環境と一緒に使う場合Tcl/CSharpLinkEagleLink といった間を取り持つ層を用いますが、Tcl/CSharpを用いて以下のことをやるとします。

  1. C#側でソケット接続を受け付けるようにする
  2. C#側で同じプロセスの別スレッドからTcl interpreterを作成する
  3. 作成したTcl interpreterから先ほどのC#で作ったソケットサーバに接続する
  4. Tcl側で上のようなfileeventを使う方法で、C#側とソケット通信する

なぜこんな変なことをするのかは聞かないで(^^;) 実際には通信を開始する前にTcl interpreterにはコマンド追加などさまざまな操作をしており、それが今回の問題を引き起こしているかもしれないのですが、その内容はここには書けませんw

ここで問題が発生しまして、

  • Tcl側でデータを一切受信しない。上の例で言えばrecord1が呼ばれません。
  • ソケット接続は行われるのでTcl側が全く動いていないわけではない。
  • telnetや即席のソケット通信プログラムを使用する限りC#側のソケットサーバーはデータを送信しているので、C#側に問題はない模様。
  • ソケット通信TclスクリプトをC#とは別プロセス(別途起動したtclshやwish)から立ち上げるとちゃんと通信する。
これを解決するためTclスクリプト側に以下を追加しました。
proc EventKeepAlive { } {
  after 100 EventKeepAlive
}
after 100 EventKeepAlive
(ここまでvwaitより前に)
100msecごとにEventKeepAlive関数が延々と呼ばれると言うだけで全く仕事をしないこの部分、これを追加するとC#と同じプロセスで作られたTclインタープリタでもちゃんと通信するようになりました。

理由、分かりません。こうやってTclのイベントを絶えず使っておかないと止まってしまうようです。ここLink 書いてあるスレッドが止まると言うことと原因は同じなのかなぁ。

この解決を見つけるまで.NET Frameworkのマルチスレッド処理がおかしいのではないかとかいろいろ大変でした。ただあまりに特殊なことをやっているためここに書いても同じ状況にぶつかる人がいるのか疑問ですがw

— posted by mu at 12:35 pm   commentComment [0]  pingTrackBack [0]

帰国

blog20090507-FluInspection

アメリカのメイド&腐女子Link を見れないのを残念がりつつ帰国。夜7時くらいに家に着いてご飯食べたら眠くなって(機内で数独ばっかりやってて寝ないからだw)、目が覚めたら夜中の3時。時差ぼけとの戦いとなります。

さて今アメリカから帰るといえば旬のネタ、A型N1H1亜型ウィルス通称豚インフルエンザ。写真の通りしっかり検疫を受けてきました。

アメリカからの帰国で思えば10年ほど前にメキシコ(ガダラハラ)に出張している最中に湾岸戦争に突入。日本への直行便がないためロサンゼルス経由で帰国となるのですが、その経由国アメリカが戦争当事国のため(テロなど)危険性が高まったとして会社から通達が出ました。それを受けての当時の上司からの言葉が「気をつけて帰って来なさい」。いったいどうしろとw

他の出張先国はアメリカより行く回数ははるかに多く過去それなりに事件もあったのですが、なぜかそちらには出くわしません。これで911までアメリカで経験していれば偶然とは思えなくなってきますが、このときは日本でした。

検疫の内容は以下の通り、全体で1時間くらい。
  • 飛行中に機内で質問表を渡されるので記入。住所・氏名・連絡先・体調に関する質問3問ほど、そして10日前までの全滞在国およびこれから10日間の移動予定を記入。
  • 着陸後検疫官待ち。最初に始めるファーストクラスが見えないのでいつ始まったか分かりませんでしたが、20分くらい検疫官待ちですというアナウンスが流れてました。
  • 機内での携帯電話使用許可。あくまで特別措置とのこと。
  • 検疫官到着。
    • サーモグラフィ(温度の高低が画像化されるカメラ)で体温を測定する方が一人。乗客が着席の状態で巡回し、体温の高い人を探す。
    • 他数名で質問表を回収。問題なければ引き換えに別の紙をくれる。これがないと入国できない。
    • 体調に異常が見られる人がいた場合、その周り(前後左右3シート分くらいが目安)の座席に赤丸のシールが貼られ、そこの乗客は異常があった人の簡易検査の結果を待たないといけない。
    • 簡易検査の結果が陽性の場合、シールが貼られた座席の人はそのまま指定のホテルに直行、隔離。
さらに機内でマスクが配布され、人ごみの中にいる間は着用するように指示されました。

— posted by mu at 02:54 am   commentComment [0]  pingTrackBack [0]

レンタカー交換

blog20090504-Mazda3Damaged

ヨセミテ国立公園Link の帰り、車を破損してしまいました。山道を進んでいる途中ナビの示す道とは違う道に。山道の場合間違った方向に進むととんでもない場所に行きかねないので、ちょっと道幅が広くなっているところを見つけて切り返しをやっていたところ、ガコッ Σ(@_@) バック中に岩壁に当たってしまいました。

まぁここまで誤魔化しようのないほどへこむと開き直るもので、人身・損壊事故でなかっただけラッキー、却って引き締まった気持ちでホテルに戻ったのが当日。(余談ですが、その帰りに2回ほど鹿を轢きかけました^^;)

実は去年、駐車場でお互いバックの車同士でぶつかって、共にバンパーの軽微な傷ということでその場でさようなら、何食わぬ顔で返却したことあるのですが(^^;) さすがにこれはねw 海外初の車両損壊事故にぐるぐる回る頭。日曜なので会社の同僚にも相談できないし・・・結局レンタカー屋(Hertz)のオフィスに出向いたら、どこも日曜休みかオフィス自体廃止って、おい。

翌月曜になって改めてレンタカー屋に行ったら、空港に行けと。後で分かったのですが街中のオフィスと空港ではサービス体制が全然違うそうで、借りたサンフランシスコ空港じゃなく最寄のサンノゼ空港でもOKとのこと。

いやぁ、車両保険(LDW: Loss Damage Weber)に入っていたおかげで話の早いこと早いこと。向こうから「保険あるから心配するな、次の車要るか?」って聞いてきて、報告書に住所・氏名・連絡先とサインを書き込んでおしまい。その書類もって貸し出しオフィス行ったらあっさり次の車渡してくれました。LDWは毎回よく分からずに「まぁ会社が払ってくれるし」と付けていましたが、自損もあっさり保障してくれるとは知らなかったのです。これ、かけておいた方がいいですよ。

ちなみにサンノゼ空港のHertz、従業員のほとんどがターバン巻いたインド人。なぜここまで同じ人種集めるのかなぁ。

— posted by mu at 01:42 pm   commentComment [0]  pingTrackBack [0]

FanimeCon

blog20090503-FanAnimeCon

SanJose市の繁華街を走っていると、写真の広告が目に飛び込んできてちと驚く。北米最大のアニメ関係の祭典FanimeConLink が2009/5/22~25に開催されるというのを初めて知りました。

WEBサイトを見ると最初に目に飛び込んでくるのが、メイドカフェ。日本人のメイドをつれてくるのかと思いきや、メイド募集中とのこと。つまりアメリカ人のメイドだw 2007年のレポートLink を見ると、衣装としてのインパクトはあるもののサービスや設置場所はまだまだのようです。(怖いもの見たさで)見てみたいw

あと夜中の企画としてMadnessとかHentai animeとか。前者は歌う忍者とか低音のちび少女合唱とかパロディものみたいですが、後者はエロとは分かるもののレベルが気になる。アメリカ人、加減知らないだろうからなぁ。

さてコミケにも行ったことのない私がこれに興味を示したのは訳が。去年ノーベル賞を受賞した益川敏英氏は外国語が苦手ということでも有名ですが、彼の言葉で日本語の論文を世界中の人間に読ませたいというのがありました。これ日本人で理系の私にはぜひ実現して欲しい話。アインシュタインの論文はドイツ語なわけですが、各国語に翻訳されて読まれている。それは翻訳してでも読む価値があると思われてるからこそのこと。

FanimeConのページを見る限り、日本がアメリカ受けするように内容を変えているわけじゃなく、向こうが日本を真似しています。写真の場所は美術館の催事・企業の広告・選挙の告知などに使われるもの。一流ホテルも近くに建っておりまして、そんなところに広告が打てるということはそれなりの規模・資金力があるはず。分野は違えどそれなりの規模で海外を歩み寄らせたアニメ、日本発の文化として誇って良いんじゃないかと思う。

個人的にはこの日にシリコンバレーにいることは絶望的なので、残念(まぁ素直にコミケ行ったほうが質・量共に上かw)。このブログを時々読んでいるらしい(本人談)メイドカフェ好き(本人絶賛否定中)IC○さん(一応3文字目は伏せておこう)、興味があるならご連絡を。サンフランシスコ空港からの行きかた教えますよ~。

— posted by mu at 09:09 am   commentComment [0]  pingTrackBack [0]

 

ヨセミテ国立公園

前週の下調べLink を経て、ヨセミテ国立公園(Yosemite national park)に。ここはカリフォルニア州にありサンフランシスコのほぼ東、車で3~4時間かかります。写真は現地で空にしてサンノゼに持ち帰ったペットボトル。公園は高地にありまして、気圧の差が分かると思います。3000m級の山々から来る雪解け水が作った渓谷が美しい場所でして、世界遺産ともなってます。

今回初めて行った訳ですが、どうやらここは二種類の楽しみ方に分かれるようです。
谷底に留まる
車など乗り物でやってくるとここに到着し、子供もお年寄りも楽しめる観光地として整備されています。無料の巡回バスや自分の車で名所を回れますし、鹿などのいる広場もあります。ホテルやロッジなど宿泊設備もありまして、実際家族連れがたくさんいました。
山に登る
谷底に来るまでは同じですが、そこから出ている歩行コース(Treking cource)に繰り出します。谷底からでは見られない景色や滝、より自然に近いものが体験できます。高低差1000mのコースもざらで、各コースが一日がかりの内容となってます。Yosemite.jpLink で主に扱っている内容はこちらになるようです。
日本の例で例えると富士山でしょうか。河口湖・山中湖など観光地や5合目まで車で登っておしまいにするか、頂上まで登るかということに思えます。

というわけで、今回私が取ったのは河口湖で遊んで、6合目くらいまで登ってきたという感じでしょうか。しかも日帰りコースw 以下、記事を分けてお届けいたします・・・

[参考]

— posted by mu at 04:19 am   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0228 sec.
prev
2025.7
next
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31