C#の[Oneway]

以前書いた.NET Remotingでの双方向通信Link 、サーバ側からクライアントにイベントを飛ばすという形で逆方向通信を行うものでした。

そこではクライアント側にあるイベントハンドラには[Oneway]修飾子を付けるように書いたのですが、実は意味が分かっていませんでした。文字通り一方通行であるということを指示するものでして、呼び出し側には返値・例外が返ってきません。まぁイベントですから返り値を求めることも少ないでしょうし、多くの場合では付けて問題ないかと。

余談。返り値のあるイベントハンドラを作ると最後に実行された(最後に追加された?)イベントハンドラの返り値がイベント発信側に渡るようです。 [参考] C# - 複数のイベントハンドラをセットしたメソッドを呼び出したときの戻り値 (おのでら氏)Link

ただ副作用あり。イベントハンドラが呼び出される前にサーバ側は次の処理にかかるようです。イベントが受け取られなくてもエラーを出しても知らん振りなのですから、次の処理にすぐさまかかった方がサーバ側のパフォーマンスは上がる。実際のイベントを.NET Remoting越しに処理するのは別のスレッド、おそらくスレッドプールに任されるのでしょう。

ここで短時間にたくさんのイベントを発信すると、イベントハンドラが呼び出される順番が変わることがありえると分かったのが昨日。スレッドプールのキューには順番通りに入っているのでしょうが、実行中に追い越しが発生すると思ってます。

[Oneway]と外すと全てのイベントハンドラが処理を終えるまで次の処理に進まないため、イベント発信を単一スレッドにやらせている限りは順番が入れ替わるということは防げます(受信終わるまで次のイベントが発信できない)。

ただしサーバ側パフォーマンスは落ちるでしょうし、クライアント側が死んでしまった場合サーバは延々と返り値を待つことになりますので、

  • クライアント側は受信したらすぐに処理を返して、実際の処理はバックグラウンドで行う
  • サーバ側はイベント発信処理をタイムアウト付き非同期処理する

などの対策が要るでしょう。[Oneway]付けとけばやってくれる非同期処理を自分でやることになる…

— posted by mu at 05:06 pm   commentComment [0]  pingTrackBack [0]

写真集: HYPER ANGLE

blog20110522-HyperAngle

ここ1~2年数は少ないもののアニメ調の絵を描いてたりしますが、以前にも書いたLink 通り、構図を兼ねてポーズを取った裸体を下描きし、それに服を着せていく描き方をしています。というか、私にはいきなり服を着た状態では描けない。

いつもはドロー系ソフトウェアで手足・頭・胴体の大きさに相当する楕円を回転させながら目的のポーズに配置、ベジェ曲線でそれらをつないでボディラインにしていき下描きとします。しかしこの方法、正面投影図以外への適用がかなり難しい。カメラで言えば水平から望遠で撮る構図に限定され、至近距離から見上げるなんてのには全然役に立たない。

Easter bunnyLink もカクテルってことで上から見下ろす構図にすべく下描きを描こうとし、うまくいかないので3Dグラフィック(下描きにw)まで使おうとしたのですが、結局諦めて水平に見てます。

というわけで本日買ってきた書籍、HYPER ANGLE。ひとりの女性Link が裸でいろんなポーズを取っているのを俯瞰・仰視・正面から撮影した写真集です。裸といえど卑猥なものではなく、漫画・イラストで取りそうなポーズが主体。この手の写真集は他にもあるのですが、こいつは広角レンズによる俯瞰・仰視も収めてある上、CD-ROMが付属していて便利そう。

続編も出ているようなのですが、使用頻度の少なそうなポーズが増えているっぽかったので、1巻を購入。Easter bunnyポーズを上から見下ろすような写真もちゃんとありました。さて次回はこれ使って正面以外の視点に挑戦するかなっと。

[2011/5/23] 鳥瞰→仰視に訂正。俯瞰と鳥瞰は同義語でした。寝ぼけていたらしい…

— posted by mu at 11:47 pm   commentComment [0]  pingTrackBack [0]

健康診断

blog20110516-HealthCheck

会社で決められている健康診断を受診。長年の懸案だった体重と便潜血、それなりに対策してたので結果で現れたのは喜ばしい限り。対策と言ってもごまかし作業をやったわけではなく、体重は食事の管理、便潜血は出血原因(要するに痔だw)を半年かけて治療してきたので。

食事はメニューのカロリー見て高いもの(具体的には1kcal、フライ系は多くが撃沈)を避ける、ハンバーガーはポテトを頼まない&0calコーラというくらいで外食生活は相変わらず。これでも体重減らせるのは、片道30分の自転車通勤やってるからだろうな。

BMIもついに22↓。て、この歳でまた身長伸びてるって、なにかおかしくないか?

内視鏡は去年辺りから選択できるようになった鼻から入れるものを選択。技術が進んで内視鏡が細くなったので実現できたこの方式、利点は嘔吐(えず)きにくいこと。口から入れるやつは舌の根元を圧迫するので嘔吐き易いのだそうで。

私はそれよりも口から入れるタイプは、麻酔にいい思い出がないからという理由が強い。喉にゼリー状の麻酔薬を入れられるのですが、それを出来る限り飲み込まずに上を向いて10分耐えなけりゃいけないわ、内視鏡入れている時は口から唾液がだらだら出るわでどうも苦手。鼻タイプはそこまで辛くない(個人的には)

が、私は鼻の奥が狭く内視鏡を通すのが難しいらしい。医師も困りながらなんとか通してもらったのですが、麻酔しているにもかかわらず痛かったな。う~む、やっぱり口から入れるしか無いのか?

あぁ、あと虫歯ができたらしい orz

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

OpenVPN設定備忘録

blog20110507-VPNMap

OpenVPNを使って出先から自宅へアクセスするときの設定。

  • 基本的にはOpenVPN 2 HOWTO 日本語訳Link 通りに進める
  • IPアドレス
    • 出先からアクセスしたい自宅マシンたちには固定IPアドレスを割り当てる。必須ではないがDHCPだとかなり面倒になる。
    • 自宅と出先で異なるアドレス空間にする。でないと出先で192.168.0.cにアクセスしようとしても、出先ルータ直下の192.168.0.cへアクセスを試み、VPNが使用されない。
    • 自宅ルータが出先と同じアドレス空間を張っていてもよい。自宅マシンたちが出先とはかぶらないアドレス空間に属するIPアドレスを持っていればよい。図のように各マシンに複数のIPアドレスを割り当てるのがひとつの方法。
  • 自宅ルータの設定
    • 外部からのOpenVPN接続に対してOpenVPNサーバの適切なポート(通常1194)へフォワードする。
    • インターネット側のIPアドレス(my.global.ip.address)が固定で無い場合は、DDNSサービスなどを使用する。
  • 自宅OpenVPNサーバの設定
    • ファイアーウォールがOpenVPNの受信を妨げないように設定する。
    • Server系以外のWindows (XP, Vista, 7など)はIPルーティングを有効にするLink 。具体的にはレジストリHKEY_LOCAL_MACHINE のSYSTEM¥CurrentControlSet¥Services¥Tcpip¥Parameters¥IPEnableRouterの値を1にしてWindows再起動。これをやらないとOpenVPNサーバ(10.8.0.1)にしかアクセスできなくなる。
  • OpenVPNサーバ設定ファイル
    • push "route 192.168.1.0 255.255.255.0"を設定することで、自宅の192.168.1.0/24のマシンたちにアクセス可能。
    • port 1194
      proto tcp
      dev tun
      dev-node Tap1
      ca ca.crt
      cert myhome.crt
      key myhome.key
      dh dh1024.pem
      server 10.8.0.0 255.255.255.0
      ifconfig-pool-persist ipp.txt
      push "route 192.168.1.0 255.255.255.0"
      keepalive 10 120
      comp-lzo
      persist-key
      persist-tun
      status openvpn-status.log
      verb 3
      
  • OpenVPNクライアント設定ファイル
    • client
      dev tun
      proto tcp
      remote myhome.global.ip.address 1194
      resolv-retry infinite
      nobind
      persist-key
      persist-tun
      ca ca.crt
      cert mycert.crt
      key myhome.key
      comp-lzo
      verb 3
      

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

暴君ハバネロ

blog20110501-Habanero

久々に見つけたので購入。最近激辛ムーチョしか売ってなくて探してたのよ。どうやら3月にリニューアルされたLink らしい。

ちなみに私はこの2品とデスレインハバネロは特に苦も無く食べられます。サイトによってはデスレインハバネロの方が辛いLink という評価らしいですが、あまり違いを感じませんでした。個人的には暴君のほうが美味しい。

でも辛くないとは言わないですし、会社には私より一桁耐性が上の人がいるので自慢にはならず。さらに言うとタイ人と中国人には勝負にもならず。

しかしこれ、小さい袋なのに300kcalもあるのか。かなりカプサイシン(辛さ成分)を油膜で包み込んでマイルドにしてるっぽい。

— posted by mu at 11:28 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0140 sec.
prev
2011.5
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