2008年10月28日火曜日

マルチスレッド・2

ネットワーク関係の例を出して説明してください

メール送信システムを用いて解説する。DMやメルマガ,情報通知等、大量のメールを送信するシステムについて、実例を基にした話。


■ 概要

ネットワークのイメージをかなり単純化してみた。本質としてはこんな感じ。

4つの SMTP サーバは負荷分散のためでは無く「特定の携帯電話キャリアに特化したSMTP(+普通の)」と考えて欲しい。実際には到達率を高めるために外部のサーバを利用している。


さて、例によって設計を描く前に調査。ここで言う「調査」とは分析結果を見て、軽くテストアプリを作ってみること。
いきなり設計書をバリバリ書く人もいるけどね。凄いな…自分には無理なので、先にこういうもので色々やってみる(それから設計する)。


■ セッションタイムアウト

設計前のテストアプリ開発スタート!

まずはWebサービスから。配信先リストをクライアントから受け取り、ドメイン名からPC用とキャリア毎のメールアドレスを分離。すぐに出来たね。テストデータを用意して送信!

[HttpException]: 要求がタイムアウトしました

あ、そうか。Webサービスと言っても、クライアントからリモートメソッドを実行しているだけで、完了を待っている間にタイムアウトした。スレッド化して、出来るだけ早くメソッドの完了を通知してやるべきか。


■ プロセス分離

そうそう。こういう要件があった。

深夜にメールが届くと困るという人がいる。
特定グループのユーザーは夜間帯のメールを保留し、朝にまとめて送信する。

それならスレッドよりも、別プロセスの方が向いている。送信リストを XML でローカルに保存し、.EXE に引数(パス)を渡す設計にしよう。遅延についてはOSのタスク機能を使えば良い。

SMTPサーバの数× 100件(計400件)のテストデータを作って、送信実行!
クライアントにはすぐに完了が通知されるし、タイムアウトしない。でも、延々テストメールが届く…送信ウェイトが原因だ。
「同一のSMTPサーバから、連続して○○件以上のメールが送信された場合は受け取りを拒否する」なんていうメールサーバもあり、数件送る毎に数秒間ウェイト(休憩)を入れている。


■ スレッド

やっぱりスレッドも使おう。先に各SMTP用のコレクションを作っているわけで、この送信メソッドをスレッドプールで実行。


取り合えず速くなった。でも、これで数万件を扱うのは問題がありそう。
これはもうアプリ側の改善よりも「多くのサーバに分散する」というアプローチが必要。ついでにアプリ側で分散用のコレクションを作る際に、宛先ドメインがばらける仕様にしておくと良いね。


ネットワーク関係の例として。こんな感じで。
 

2008年10月26日日曜日

重耳(ちょうじ)

今日も合間に「ちょっと読もうかな」と、書棚から出してしまい…何回読んでも面白い。


春秋期の晋。分家(曲沃)が本家(翼)を滅ぼす上巻。
特に気に入っているのは君主の密命をうけ、王都(周)に留学する士蔿と、それを陰で助ける丕鄭や趙の親子が描かれた部分。


「自分の努力の虚しさを大いに嗤い、また嘆いたあとの姿」

こういう気持ちになった経験と重ね合わせ、共感できるというか。ここは何度読んでも「はぁー」という気分になる。

面白いのは後に戦国七雄と呼ばれる内、三国(魏・趙・韓)の先祖となる人々が曲沃の臣下として登場すること。
先にこれを読んでおくと、同作者の春秋・戦国期を舞台に書かれた作品が面白く読める。「重耳」からの派生作品は幾つもあり、中でも「沙中の回廊」と「孟夏の太陽」は傑作! 同様に戦国期については「孟嘗君」「楽毅」「奇貨居くべし」と三部作の様で、続けて読むとそれぞれを単体で読むよりも楽しいと思う。

何だかこの作者の本ばかり読んでいる。他のを読むとすぐこのシリーズを読んで、また別のを読んで…の繰り返し。
 

2008年10月25日土曜日

マルチスレッド

スレッド(Thread, ThreadPool)って、どういう時に使うんですか?

新人SEに聞かれたことがある。良い質問。技術を学ぶには「何でこんなものが必要なんだろう?」という疑問が不可欠。

さて、業務系ソフト開発でスレッド(非同期処理)を使う場面といえば…適当な例が見当たらない。ぱっと浮かぶのは「大量の帳票出力処理をスレッド化しておくと、出力中もオペレーション出来る」なんて事くらい。
あとはタイマー処理かな。スレッドでカウントしておいて、一定時間毎に画面のリフレッシュとか。あまり良い例では無いね。

こういう時は実例で説明するのが一番。下記は実例を基にした話。


■ 要件と問題

製造業の「発注先選定システム 企業評価編」といったところ。

原材料の仕入先や加工等の外注先(見積依頼先)を絞り込むシステム。
諸条件から検索を行うが、この時、結果リストは評価点(X)の高いものが上位に表示される。X は品質評価(A),納期評価(B),価格評価(C)の立方根とする。A,B,C は過去数年間のデータを、X は各評価の結果を基に日次算出する。

要件を確認したとき「各評価の算出式だけ分かってしまえば楽勝!」と、簡単に考えていた。

ところが実際にテストアプリを作って分かったのが「各評価算出には非常に時間が掛かる」ということ。各1時間かかるとして大体3時間。夜間バッチとは言え、販売管理の集計等が終わってから評価処理を開始すると…始業に間に合わない。

DBバックアップの時間も関係してくるし、どうしよう。週次にしようか?


■ スレッド利用

とにかくロジックの見直し。個々の評価算出については後にして、取りあえず全体最適化に注力。あれ? 各評価って、互いに関連していないね。非同期で算出しても良いのか。むむっ!


それから、ハードウェア仕様を確認すると、評価算出に使うアプリケーションサーバの CPU は Xeon(Irwindale)で Hyper-Threading 対応。「せっかくのHT。活かさないと勿体無い」ということで、設計を見直し。

A,B,C 個々の評価算出メソッドをスレッドプールで実行し、結果を DataTable に書き込む形に変更。
処理が全部終わった時点で、この DataTable の企業コードをループ(評価点の計算)し、結果全体を一度に書き戻すことにした。

この結果、評価算出処理は本当に 1/3 の時間で完了。始業に間に合う。

これを応用すれば各評価算出をWebサービス経由で別サーバに任せ、結果セットを受け取って処理する様なことも可能。10倍の規模なら、そうするかも。100倍規模なら企業コード単位で評価算出サーバに渡す形として、1評価につき複数台をロード・バランシング! ふぅー…カッコイイ


何の話だっけ? マルチスレッド?
新人SEにはこの例を解説し「複数の結果セットで集計を行う場合、過程は非同期で算出して良く、スレッド利用が適している」と回答したかな。
 

2008年10月24日金曜日

大王具足虫

ダイオウグソクムシ
学名
Bathynomus giganteus
英名
Giant isopod
節足動物門 甲殻綱 等脚目
スナホリムシ科
大西洋、インド洋の水深170〜2,500mに生息

“深海の掃除屋” とも呼ばれる。
この生物をモチーフとした「お掃除ロボット」が発売されないものか…(欲しい)

新江ノ島水族館
http://www.enosui.com/animalsentry.php?eid=00031
 

2008年10月23日木曜日

Windows Vista で DVD

Windows Vista Business で DVD 書込み環境を用意した際の話。

DVD-R ドライブが少し古いもので、付属の PowerDVD や Nero が Vista では動作しなかった。バージョンアップも面倒なので、何か適当なものが無いか探してみた。

【使用したソフトウェア】
 MPEG2 コーデック
 プレーヤー
 DVD ライティング

非常に良い感じ。

ImgBurn は比較的新しいドライブや Windows-64bit に対応するため「サーバからログを直接 DVD-R に退避したいよ」なんて時にも使えそう。
 

2008年10月22日水曜日

オキザリス

観賞用のかたばみで「ハナカタバミ」という名称でも知られている。以前、ホームセンターで球根を買ってきて植えてみた。唯一のガーデニング。


水と太陽で育ち、手間いらずのなのが良いところ。冬には枯れてしまうので、枯葉を取り除き、春に水をやるとまた生えてくる。球根が残っているんだね。何年もこんな感じで育ててきた。
ところが昨年は葉の色が薄く、ヒョロヒョロとしていて元気が無かった。葉を虫に食われたり、うどん粉病にかかったり…土がもうダメなのかな。あ、肥料不足か?

そこで今年はハイポネックスを使用。N-P-K=6-10-5 窒素たっぷり、確かな満足! ジャスコの「おいしい水」で、1000倍に希釈。これを週に1回、あげてみると


アフロだ…。効果がありすぎた。なんだか葉っぱばかりだし、おそらく窒素過剰。暫く肥料を控えないと。

2008年10月21日火曜日

ハニホー・ヘニハー

2002年7月23日14時54分配信 読売新聞
栄養剤CM出演のイラン人を不法残留で逮捕

警視庁高島平署と東京入国管理局は23日、自称イラン国籍で東京都板橋区徳丸1、ハニホー・ヘニハーことカリリ・ファ・エブラヒム容疑者(35)を入管難民法違反(不法残留)の疑いで逮捕した。
調べによると、エブラヒム容疑者は、1991年2月に観光目的で入国。在留期間は90日間だったにもかかわらずビザを更新せず、11年以上も不法に残留した疑い。

エブラヒム容疑者は、田辺製薬の栄養ドリンク「アスパラドリンク」のテレビコマーシャルに「アスパラマン」として1999年から出演。筋肉隆々でボディービルダーを連想させるスタイルや、「1本いっとく?」とドリンクをすすめるコピーが話題となっている。

同社広報部は「事実関係を確認中」としている。

「えぇーっ! あの、アスパラドリンクの!?」と、衝撃を受けた。
有名になりすぎちゃったんだね、ハニホー…

この後、何年もの間「もうハニホー・ヘニハーはイランに強制送還されたよ」と思い込んでいた。

ふと思い出して、その後どうなったのかを調べてみると

2002年9月16日00時17分配信 時事通信
入管難民法違反のイラン人タレントに執行猶予判決

「ハニホー・ヘニハー」の名でテレビコマーシャルに出演したイラン人タレントで、約11年間不法残留していたとして入管難民法違反の罪に問われたカリリファル・エブラヒム被告(35)に対し、東京地裁は13日、懲役2年8月、執行猶予5年(求刑懲役2年8月)の判決を言い渡した。
川口政明裁判官は判決理由で「長期間の不法残留で悪質だが、その間のまじめな働きぶりは周囲に評価されている」と述べた。
判決によると、同被告は1991年2月、観光ビザで入国。在留期間は同年5月までだったのに不法残留を続けた。
同被告は判決後、東京入国管理局の施設に収容された。弁護人によると、逮捕後の7月末、日本人女性と結婚しており、在留特別許可を申請するという。

そうだったのか。在留特別許可を申請したんだね。
しかも、結婚していたんだね。

今更だけど、おめでとう!ハニホー
 

2008年10月20日月曜日

キノコに注意


キノコ狩りのシーズン。しかし、素人に天然ものの識別は難しすぎる。どうして毎年同じ様な事故が起こるのか。「危険を伴うから余計に美味しい」という冒険心からか。

以前、プロジェクトで関わった会社の社長が「近くの山で採ってきたきた。食べてみろ」と謎のキノコをたくさん焼いてくれた。その人が席を外している隙に、トイレに流し「ごちそうさまでした!」と…。

あれは危なかった気がする。


■ スギヒラタケ

ところで、未だはっきりと毒性が確認されてはいないものの、厚生労働省及び農林水産省が各都道府県等にあて、スギヒラタケの摂取について注意喚起を行っている。味が良いらしいので、未だに食用として採取する人がいるかも知れない。

Wikipedia

果たして本当にこのキノコが急性脳症の原因なのか。はっきりしないが、やはり危険が伴う以上は食用キノコと考えない方が良い。
 

2008年10月18日土曜日

国内農業の危機

今日はちょっと真面目に。

http://diamond.jp/series/inside/06_14_004/

リン鉱石の輸入がストップすることにより、肥料生産が困難となる。
化学肥料を一切使わずに農業生産を行う方法はあるものの、これだけでは十分な供給を行うことは出来ず、結果的に国内産農産物の価格高騰につながるであろう。


■ 化学肥料

化学肥料の主成分となるのは窒素・リン・カリウム。

この内、窒素については空気中に存在するものを固定する技術が確立されており、国内で生産することが可能である。しかし、この生産には大量のエネルギーが必要で、資源の大半を輸入に頼り続ける限り、今後も肥料価格高騰の要因となりうる。
勿論、代替エネルギーの利用や根粒菌による生物固定など、窒素に関する対策は徐々にとられていくと思われる。

問題はリンやカリウムといった鉱石を輸入に頼っているものであり、これらについても何らかの形で国内生産を行い、輸入量を減らしていく努力が必要となる。
例えばリンについては下記の記事にある様に、リサイクルが本格化されつつある。しかし、現時点で確保できる量は僅かでしかない。



■ 資源確保と環境浄化

先に述べたリサイクルは「下水道汚泥」に限った話で、より多くの汚泥(ヘドロ)を確保することで必然的に多くのリンを採取出来るはずだ。

例えば海底に堆積しているヘドロは微生物の死骸を多く含み、これを「リン酸塩鉱床」とみることも可能ではないか。また、以前ホテイアオイについて述べたことがあるが、富栄養化し赤潮が発生する様な湖沼から植物を用いてリンや石油代替燃料を得ることは出来ないか。

この問題については単純に肥料不足を解決するだけでなく、環境浄化との両立を考える必要があると感じている。
 

2008年10月17日金曜日

ババアゾーン(他)


ソフトハウスに居た頃、お客さんを待たせる際など「今準備してきますので、ちょっとこれでも観ていて下さいね」という感じで流していたのを思い出す。

いい事務所だったね。

 

2008年10月16日木曜日

Google Chrome

軽い! 使いやすい!

未だ BETA ながら、完成度は非常に高い。Gmail もブログの更新も、軽くて作業しやすくなった。

もう、標準ブラウザもこれで。




2008年10月15日水曜日

後部座席シートベルトの着用義務

http://www.gov-online.go.jp/pr/media/paper/tsukidashi/747.html


意外と忘れがち。

タクシーで「お客さん、後部座席もシートベルトをして下さいね」など言われてしまう。

運転席も助手席も後部座席でも、車に乗ったらシートベルトを必ず着用しよう。









ohaguroboy が何処かで拾ってきた画像

2008年10月14日火曜日

スズメバチ

連休を利用してちょっとお出かけ。

オオスズメバチがブンブン飛び回る中でラーメンを食べた。危険だし、ラーメンは美味しくないし、何なんだこれは。







ところで「2回目のハチ刺傷でアナフィラキシーショック」というのは本当なのだろうか? 以前、キイロスズメバチにやられたことがあって、何となく気にはなっている。


■ 都市のスズメバチ

http://www2u.biglobe.ne.jp/~vespa/

エピペンの投与対象者は,ハチ刺傷によるアナフィラキシーの既往のある人,またはアナフィラキシーを発現する可能性の高い人(ハチ刺傷時に全身症状が見られ,かつ抗体価が高い人)です 。

このサイトのエピペン(自己注射器)に関する記述を読むと「過去に一度刺されて痛かった」」程度の場合はアナフィラキシー発現の可能性は低いのかな…と、時間のあるときに具体的なところを調べてみようと思う。


■ スズメバチ逆襲し寺全焼

そういえば9月にすごいニュースが!

9月3日17時42分配信 時事通信

3日午前9時半ごろ、新潟県小千谷市岩沢の寺「和光院」から出火、木造約130平方メートルを全焼した。県警小千谷署は、佐藤篤副住職(41)がスズメバチの巣を焼き払おうとし、火が燃え移ったのが原因とみて調べている。佐藤副住職は顔などをやけどしたが、命に別条はないという。
調べによると、佐藤副住職は竹の棒の先に火を付け、寺の食堂の押し入れ内にあったスズメバチの巣を焼き払おうとした。しかし、スズメバチの逆襲に遭い、火が付いたままの棒をその場に投げ捨てて避難。火が寺に燃え移ったという。 

副住職の殺生が発端とは言え、寺を焼くとは…。
恐るべし、スズメバチ。
  

2008年10月13日月曜日

parhelical days

子供の頃、空に2つの太陽があるのを見たことがある。
ひとつは半ば雲に隠れた本物の太陽。もうひとつは何だかはっきりとしない、弱々しいものだった。

幻日


ブログをはじめたときに、自分にとって「日々」とは輪郭のはっきりしない薄淡いものだと感じた。太陽をあらわす「日」の連なりと言えるほど確かなものでは無く、どちらかと言うと幻日に近いのかも知れない。

そんなことを思い、このタイトルをつけてみた。
 

2008年10月11日土曜日

三国志 第七巻

出てたー!

前の巻から1年。2004年の発売以来、新しい巻が出る度に最初から読んでしまうことを繰り返している。もう4年も経つのか…と、まだまだ完結しそうに無い。

一般に良く知られている三国志よりも古い時代の事から始まっていて、前半のテーマは楊震の名言「四知」。5巻でついに曹操が立ち、官渡の戦いとなる。
この7巻は「劉備、蜀を平定す」


話のペースや史書記述の多さにより、好みがはっきり分かれてしまいそうだけど、個人的には非常に好き。早く次が出ないかな。

文藝春秋書誌ファイル
http://www.bunshun.co.jp/book_db/3/27/40/9784163274003.shtml
 

2008年10月9日木曜日

Чебурашка

「チェブラーシカ」と読むんだね。














オレンジの木箱に閉じ込められて、遠い南の国からやってきた、大きな耳の小さないきもの。起こしてもすぐに倒れてしまうので「チェブラーシカ(ばったりたおれ屋さん)」と名づけられたこの正体不明のいきものは、動物園にも受け入れを拒否され、都会の片隅の電話ボックスで暮らしていた。そんな彼が出会ったのは、動物園で働く、一人暮らしの孤独なワニ・ゲーナだった。

http://www.ghibli-museum.jp/cheb/
 

2008年10月8日水曜日

仕切り直し

一年以上ブログを放置していた。良く残っていたものだと感心。

色々あったな…と思い出そうとしても、何だか記憶が断片的。
それは思い出せたときでいいや。また再開しよう。

この「仕切り直し」という言葉は結構好き。
どんなプロジェクトでも、必ず状況とのずれが生じる。原点と現状を冷静に比較して、仕切り直せる勇気を持って行こう。