Saturday, January 07, 2017

「豊穣の海」の「昴」の黒子について

学生の頃、三島由紀夫の豊穣の海4部作を読んで、内容以前に気になったことがありました。この物語は主人公の松枝清顕の転生が主題になっていますが、転生した人物の脇腹にある「昴(スバル)のような3つの黒子(ホクロ)」がカギとなっています。

気になったのは「スバル」で、スバルってのはこれです。プレアデス星団です。


3つではないのです。ちょうど今の季節、夜中に天頂付近に見えていると思いますが、もやっとした塊に見えます。

3つの星、ということだと、オリオン座の三つ星のことじゃないかなあと思うのですね。オリオンのベルトの位置の3つの星です。


スバルの場所はオリオンの右斜め上あたり。

無粋なことのようですが、物語の中で「昴」は何度も出てくる大事なことで、学生時分の私はこのことが非常に気になっていました。

その後、もう25年も前のことですがアメリカにいた頃、地元の日本語誌に、日本文学を英語で紹介されている翻訳家の方が、日米の編集者のチェックの仕方の違いを書かれていました。アメリカの編集者の権限は大きく、誤りやわかりづらい点を作家に指摘してくる、翻訳についても例外でなく、翻訳のみならず原作にさかのぼる指摘があって翻訳者としては困ることがある、とのことでした。例として三島由紀夫の小説(どの本だったかは失念)が挙がっていました。一方、日本では大作家の作品に編集者が口を挟むことはないので、結果として全責任は作家にあることになる、という話です。

この記事を読んでこの翻訳家の方に、スバルについて御存知ですか、という内容の手紙を書いたところ丁寧な返事を貰いました。翻訳家の方から別の文学者の方に照会してくださり、その方の手紙のコピーが同封されていました。それによると「土屋氏が指摘の箇所は、私も前々から気になっていたところです。.... 編集者がチェックし、勇気をもって作家に注意を促すべき事柄だったのではないでしょうか」とのことでした。ということで私の気は済んだのです。

実家で片付けをしていたら、この手紙が出てきたので、ブログを書きました。

最近この翻訳家の方がJapan Timesに記事を書かれているのを見つけました。御健在なようですね。

Sunday, December 18, 2016

RaspberryPiの軽量分散処理

うちに2台のRPiがあり、FreeBSD11.0で動いています。これを両方同時に使ってみたい。

分散データ処理というと、Hadoopを思い浮かべることが多いのですが、RaspberryPiではどうでしょうか。うちの初代RPiでJavaがそもそも動くか疑わしいしいですね。また「Interface」誌の11月号のラズパイ特集にMPIを使った例があるのですが、ちょっと大変だなあという感じ。

つらつらと考えていて、SunのRPCというものがあったのを思い出します。Remote Procedure Callです。今でもNFSでは使っている。サーバ側で定義したサービスを、クライアントから呼び出せるものです。

もっと安直な方法があるんではないか。調べるとPython3ではXMLRPCというものがあるじゃないですか。何故にXMLかというと、関数名とパラメータをXMLでフォーマットするから。RPCが呼び出せます。(Python2ではモジュール名が少し違う)

多重化はどうするか。Pythonではmultiprocessing。プロセスで多重化します。クライアントで処理を多重化して、mapで複数のサーバを呼び出して、結果をreduceする感じになります。まあこれでなんちゃってMapReduceができる。

試しに、以前ここに書いた数独のソルバを使ってみました。クライアントで問題を半分に分割して、2台のRPiに投げます。まあ普通に動きますね。

課題はいくつもあります。

  • XMLPRCで渡せる型に制限がある。
  • multiprocessingやXMLRPCで渡す関数が固定的。RPCの方はサーバで定義した関数のみ。これは仕方ない。multiprocessingにラムダ式を渡そうとすると怒られるようだった。
  • クライアント側はプロセスで多重化するので、あまりスケーラブルではない。まあうちの場合は2台だし、困るほど大きな問題はやってないので問題ないが。
  • ノードの管理と、エラー処理。もちろん数独がこけても構わないですが。

数独はクライアントと複数サーバで実装しましたが、IoTぽいものの場合はサーバ同士でお話しするパターンもありでしょうし、サーバで判断した情報をブラウザでまとめて見るということもできそう。

Saturday, December 10, 2016

平均寿命の国際比較

平均寿命というものが、個々人にとってどういう意味があるのかははっきりしないですが、平均寿命の国際比較(厚生労働省)というのがあります。

ニュースでは「日本が一位」「長寿日本」という報道の仕方をするので、なんとなく日本の医療のお陰かなと思っているのです。上の厚生省のデータを見ると、確かに日本は順序の上で一位が続いているのですが、実際の意味はあるんでしょうか。

例えば、男の平均は80歳程度なわけですが、自分がどうかというと、70で死ぬかもしれないし、90まで生きるかもしれないと思う。少なくとも±5歳くらいの誤差というか幅があるように感じますね。

そこで他の国を見ると、先進国、少なくともヨーロッパとは大差ないじゃないですか。どうしたニッポン。だいたいが男の場合70後半。誤差の範囲ですよね。まあロシアは低そうですね。不摂生だからでしょうか。アメリカも少し低いようです。

Aの平均と、Bの平均を比べる時に、AとBの差に比べてAやBの分散が大きいと、A、Bの区別はつかないというのが統計学のココロのはず(分散分析)。平均寿命に対する分散が幾つなのかは知りませんが、直感的に誤差の範囲と言って良いんじゃないでしょうか。

ヨーロッパのある国では、病院が混雑していて、救急車で運ばれないかぎりお医者さんにj見てもらえないだの、待合室で待っている間に死んだだのと悪口を聞きますが、その国の寿命も特に低くないですね。不思議です。イギリスの話として聞きましたが、ブリティッシュジョークなのかな。

もう一つは、寿命ってのは人種と関係ないように思えますね。体の大きさや肌の色は違うのに、寿命ってのは人間の仕組みが持ってる根源的なものなのですかね。


Monday, November 14, 2016

オンキョー

BoseのWave(2007年!)を使っていたのだけど、当初からCDが出てこなくなる症状があって、最近の一体型の機種を物色した結果、オンキョーになりました。Marantzの似た製品も検討していましたが、たまたま店頭で聞いた女性ボーカルの音が良かったでのオンキョーにしました。

CR-N765という「レシーバー」と、D-212EXというスピーカーです。我が家のオーディオはだんだん安くなってゆくなあ‥

Waveは子供に与えました。

そろそろ2ヶ月くらいになるけど、まあ良かったかな。音はWaveと似たような感じかなあ。スピーカーが離して置けるので、良くなったかも。あまり気にしすぎないようにしてます。

iPadやインターネットにはまだつないでないです。面倒だからやってないだけ。

Monday, October 31, 2016

Python3とPython2違いメモ

join
Python2では";".join(['a','b'])という奇怪な文法だったが、Python3ではは以下のようになっている。
 
>>> str.join(',', ['a','b'])
'a,b'
strはbuiltinのクラスなのでインポートする必要はない。

reduce
Python3ではfunctoolsの一部になった。functoolsをインポートする必要がある。
 
>>> from functools import reduce
>>> reduce(lambda x,y:x+y, [1,2,3])
6
map
mapが返すのはiteratorに変わった。listが欲しい場合はlistで囲む。
>>> map(str, [1,2,3])
<map 0x205b20b0="" at="" object="">
>>> list(map(str, [1,2,3]))
['1', '2', '3']
>>> 

多次元配列のsort
やりたいことは2つ目の要素でソートする、などのこと。Python2について昔ここに書いたことがあったのだけど、Python3ではkeyで渡すように変わっている。関数の書き方も変わったようだ。
>>> a = [[1,2],[3,0]]
>>> a.sort()
>>> a
[[1, 2], [3, 0]]
>>> a.sort(key=lambda x: x[1])
>>> a
[[3, 0], [1, 2]]
数の型
$ python2.7
Python 2.7.10 (default, Jul 30 2016, 18:31:42) 
>>> type(1)

>>> type(1.2)

>>> 
$ python3.5
Python 3.5.2 (default, Aug 16 2016, 05:35:40) 
>>> type(1)

>>> type(1.5)


Friday, October 07, 2016

Freebsd/RaspberryPi + golangでサーバを書く




マイクロSDカードのコネクタがダメになったと思ったRaspberryPi B+なのだけど、カードをしっかり固定さえすれば使えることが判明しました。ホチキスの針で固定している画像をどこかで見て、真似してみたけどやっぱりダメなようなので、結束バンドで固定しました。上の写真がそれ。もうひとつはちゃんとしたヤツも欲しいなあと思ってもう一個買ってしまったもの。どちらもB+です。

特に使い方を考えていないのだけど、前やってたみたいにファイルサーバにするのが一案。どちらのラズパイもFreeBSD10.3なのですが、以前あった草の根パッケージがなくなってるようで、pythonも入れられず困ったなあと考えていたのです。多分11.0が正式にリリースされたらパッケージもダウンロードできるのでしょう。しかし、今日現在は11.0 RC3なのです。

そこで何らかのサーバを書いてGolangクロスコンパイルするのはどうだろうかと。
golangのwikiのチュートリアルを見てやってみました。クロスコンパイルの方法はB+の場合、GOARM=6 (Pi2は7らしい) 。MacOSXでコンパイルしてます。
$ GOOS=freebsd GOARCH=arm GOARM=6 go build wiki.go 
でバイナリが出来ます。

できたバイナリをRPi B+にscpして8080にアクセスすると、ちゃんと動きました。
チュートリアルを見てコピペしたソースは以下です。

もっと単純なファイルサーバはここにありますね。こっちを先にやるべきだったなあ。



Sunday, August 14, 2016

chromebookの故障と復活、iPad mini2

iPhoneもiPadも持ってなかったで、旅行に行くにあたって、chromebookを持って歩けばいいやと思っていたのでした。壊れても惜しくないし、データの問題もないなどと。MacbookAirを持って歩いて壊れたら一大事だなあということで。

ところが、旅行の前の週になってchromebookが立ち上がって来なくなったのでした。画面が真っ暗で、何もできない。ASUSのカスタマサービスに連絡したら、代引きで送れば修理するということになりました。結局旅行後に治って戻ってきたので、問題なかった。マザーボードを交換したらしいです。

それで、旅行中の道具としてiPad mini2の調整品を買いました。だってしょうがないじゃん、という理由で。

今って、コンピュータがなくても大概のことができるんだなあということが再確認できた次第。

Saturday, August 13, 2016

イタリア

下の子供と奥さんが先に出発して、ナポリ、ミラノなどに行きました。私は一週間遅れで参加し、San Gimignano、Siena、Firenze、ローマに行きました。ちょうど上の子が夏休みでCambridgeに語学留学していて、帰りにローマで我々に合流しました。そこから8年まえに訪れたScauriと、今回初めてMontelibrettiに行き、それぞれ以前我が家にホームステイした人達と再会しました。




Siena


Scauri 


Montelibretti 

San Gimigniano

Tuesday, July 05, 2016

matplotlib入門:アニメーション。バブルソート

バブルソートって、なんだっけ?と思ってwikipediaを見てて、右下の方のアニメーションがいい感じで、自分でも作ってみたくなった。

matplotlibでやってみようと思った。いろいろ調べてこんな感じになった。
100個の乱数を並べてゆく。バブルソートは一番右(か左)から席が確定してゆくので面白いことになる。



ちなみに肝心のバブルソートのアルゴリズムはgen_points()の中の4行くらいの箇所。

できたmp4のアニメをyoutubeにアップロードした。


Sunday, June 19, 2016

北西線工事現場

うちの近所に横浜環状北西線(ほくせいせん)のトンネルの入り口ができるらしい。

北西線マップ(リンク)の「北八朔換気所」の少し上のあたりで赤と黄色の境目のあたりにトンネルの入り口ができるようなのだが、その写真が以下のもの。写真の真ん中あたりに入り口ができるようだ。右手の方のジャンクションから下ってくる橋脚(工事中)が3つばかり見えている。



これはその橋脚の写真。手前のものの方が低い。


特に工事現場が好きなわけではないのだけど、ここにトンネルができるというのが不思議な感じがする。