2014年10月7日火曜日

海外で失敗する日本人のたったひとつのキーワード

それは「ソファー」だとおもっています。

東南アジアへ来た初日にソファーへ座らされたなら、それはかなりの確率で、あなたが単なる「カモ」であることを示しています。

また、ソファーにみずから座ってしまうようなひとが、現場の何を見れるのか?
この点について、多くを語るまでもありません。

東南アジアを訪れる、あるいは東南アジアに在る日本人として、ソファーとは、ほとんど宗教的に避けるべき存在であると、僕はおもっています。

「私は何を残しただろう」と問うならば、その答えが得られるのは、日本史でいえば天武天皇と徳川家康ぐらいである。何が残るかを我々は制御できない。だからこそ我々は子孫から愛される

のだとおもう。

僕らは、残したくないことを隠す。
残したいことを喧伝する。

しかし、僕らの子供は馬鹿じゃないのだ。
かつ、僕らの子供は冷血漢じゃないのだ。

僕らが隠したかったこと。
それをこそ、僕らの子供は愛してくれるだろう。

だから、生きよう。
自分を。

青色ダイオード等で日本人3人にノーベル賞

素晴らしい!

突き詰める姿勢、を教えることの大切さですね。
突き詰める姿勢を堅持するひとをネクラとかオタクとか馬鹿にする風潮がありますが、そういった落ちこぼれどもからの雑音を意に介さないひとを育てるには、教育が何より大切ですね。

未来はオタクが創っていく!
思い知れリア充ども。

同年代から年下と思われることが多いことの是非

オーン(弟)
と同年代のカンボジア人から呼ばれることの多い俺です。

若々しさがよいか?
年輪を重ねることがよいか?

価値観の相違もあるようにおもいます。

いつまでもオーンと呼ばれたい。
僕はどっちかというとそっちです。

エボラ様症状の日本人女性、これまでに日本・シンガポール・マレーシア・ミャンマー・インドを訪問

Japanese tourist with suspected Ebola symptoms kept in JNIMS isolation ward | KanglaOnline

現在、女性から採取した検体がエボラ検査に送られています。
エボラ検査の結果は通常、48時間以内に出る見通しです。

エボラ様症状を発症した女性は現在、インパールのジャワハルラル=ネルー病院に収容されていますが、同病院は隔離体制が不十分なため、エボラと判明したら、隔離体制が整った病院へ送られる見通しです。

ミャンマーとインドではこの事態を受け、エボラ感染への恐怖が国民のあいだに高まっており、インド政府は、インパールを訪れる観光客全員に対しエボラ検査を行う構えです。

ミャンマーでエボラ様症状の日本人女性バックパッカー、これまで5ヶ国を訪問

というニュースです。

エボラと似た症状の各種病気についてはすでにすべて検査結果ノーと出ており、残るはエボラ検査結果待ちのみとなっています。

Hubotスクリプトでやけに長時間の処理をさせてしまうとその間経過報告ができなさげ

WinSCPを、
(1) Hubot→win32ole→WinSCP .NET AssemblyのCOMライブラリ→WinSCP .NET Assembly→WinSCPによって操作する
のでなく、
(2) Hubotのchild_process.spawn→winscp.exe /command "get ~~~" "exit"によって操作する
ことを検討している。

(1)の操作法で今まで開発してきたが、無理があることがわかった:

  • JScript用の方法でWinSCPイベントのリッスンを試みたが、反応なし。WSHでなくnode.js上だからだろう。
  • OLEコレクションをゲットできない。win32oleに未実装なため。
  • WinSCP操作(ダウンロード等)が終わるまでHubotスクリプトが終われない。Hubotイベントを発しても、実験の結果、リスナが発動されるのはスクリプトが終わった後になっているようなので、経過報告ができない。操作開始前にイベントフックしてリスナでsetInterval()してコールバックでプログレス出力させ、操作終了後にイベントフックしてリスナでclearInterval()してみたが、なんも出力されない。たぶん上記のようなわけで、インターバル設定が活きてる時間がゼロ時間みたくなってしまうのだろう。この実験結果から見るかぎりは、リスナは別.coffeeにいさせとけば並行して動いてくれるだろうというのは僕の思い込みだったように思われる。


(2)の方法は、WinSCPでのダウンロードや、Explzhでの解凍など、動作が長時間ならば、child_process.spawnでdetachedオプションを設定してWinSCPにコマンドラインでダウンロードを命じたあとchild.unref()。
これにより、親プロセスが child を待機することを防ぐことができる。
child_process.execFile・execではdetachedオプションがリファレンスに記載ない。

もちろん、(2)のWinSCPをコマンドラインで呼ぶ方法では、WinSCPイベントをリッスンして経過報告することはあいかわらずできない。
だが、刻々大きくなっていくはずの転送先ファイルサイズをHubotのインターバルで別途ポーリングするというF5アタック的な手が使えないわけではない。
お行儀よくやろうとすれば、WSHかC#で作ったプログラムを(2)の方法で呼び、そのプログラムからWinSCP .NET Assemblyをたたくほうがよいだろう。WSHだとCOM経由になって公式でもハックみたいになっちゃってるので、この際C#が正道ですね。

なお、ZIP解凍についても同様にspawnで
Explzh.exe /e "Archive file"
ZIP圧縮についても同様にspawnで7-Zipを働かせればよさげ。
※解凍も7-Zipのコマンドラインで解凍でもよいかもしれないが、いちおうExplzhは長い間使っていてファイル名文字化けなど生じてないという安心感があるので、乗り換えないほうが無難なような気がするので(7-Zipも、ファイル名文字化けは起こらないようよく工夫はされているようだが)。
※圧縮は、元のファイル名文字コードは必ず手元のWindowsなので不安はないし、7-Zipは同じ.zipを作るのでも圧縮率がより高い由。

一方、ファイルリスト取得など動作が短時間、かつ結果がほしいならば、child_process.execFileを用いればよいだろう。



↓今後の開発方針

(1)
Hubotから、
(a) filename・loginid・passwordなどから構築したURL
(b) チケットID
などをコマンドラインオプションとして、C#プログラムを呼ぶ。
具体的には、child_process.spawnでdetachedオプションを設定してC#プログラムを呼び出しchild.unref()。
これにより、親プロセスが child を待機することを防ぐことができる。

(2)
C#プログラムで、WinSCP .NET Assemblyにより、filenameがサーバ上に存在するかを確認。
存在しないなら
HubotにHTTPリクエストでNot foundと伝達してIRCに通知させ、
WinSCP .NET Assemblyでファイル一覧を取得し、
Redmine REST APIで所在フィールドにNot foundと書き込み、システムメッセージフィールドにファイル一覧を表示。
存在するなら
HubotにHTTPリクエストでダウンロード中と伝達してIRCに通知させ、
Redmine REST APIで所在フィールドにダウンロード中と書き込む。
WinSCP .NET Assemblyでダウンロード。
ダウンロード中は、WinSCP .NET Assemblyの進捗イベントのリスナがRedmine REST APIで経過報告用フィールド群に経過報告。
ダウンロード完了したら、HubotにHTTPリクエストでダウンロード完了と伝達してIRCに通知させ、
Redmine REST APIで所在フィールドにダウンロード完了と書き込む。



以上はげしくチラ裏

クレカサイン芸


レジでクレジットカードを出すと、サインを求められる場合が多いですね。

この映像は、サインがクレジットカード上のサインと一致していない場合にどうなるか、という実験です。

それどころか、まるで違う名前を書いてしまったりしています。

それでも、レジ係は、全く問題視しません。

クレジットカードのサインって、何の意味があるんですか、とレジ係に聞いてしまったりしています。

レジ係によれば、恐竜や犬の絵を描いてしまうひともいるそうです。

結局、誰一人として、一致しないサインや、一致しない名義や、ふざけたサインでは支払いはできませんよ、とお客を止めるレジ係には、出会えませんでした、という結果でした。

下の、おなじひとによる、「ハンバーガーが広告写真と違うので、同じ見た目にしてくれと言ってみた」映像にしてもそうですが、なにごとも、やってみる、言ってみる、という姿勢が、人生においては大切だよね、と学ばせてくれる映像でした。