2015/08/20

脳紋

特定の言葉に対するEEGの反応を使って、指紋のように個人認証ができるようになる可能性があるそうだ。
ただし、現時点での精度はまだまだである。

Armstrong et. al., "Brainprint: Assessing the uniqueness, collectability, and permanence of a novel method for ERP biometrics," Volume 166, Pages 59-67, 2015
(http://www.sciencedirect.com/science/article/pii/S0925231215004725)

記事
http://www.itmedia.co.jp/news/articles/1506/04/news081.html

2015/07/30

磁気センサー

磁場の強さは、
http://www.nips.ac.jp/~nagata/MEG/MEGoutline.pdf
によると、

10^-4 〜 10^-5 地磁気
10^-5 〜 10^-7 都市雑音
10^-9 〜 10^-10 心臓
10^-10 〜 10^-11 筋肉
10^-11 〜 10^-12 脳(α波)
10^-12 〜 10^-13 脳(視覚反応)

とのこと。そのため、用途によってセンサーにも低感度から高感度まで色々とあるようだ。


1. 地磁気
検索すると色々と出てくるが、例えば
YAS532B (http://www.yamaha.co.jp/product/lsi/magnetic_sensor/)
だと、分解能が0.15μTであるので、地磁気から都市雑音まで検出できそうだ。


2. 脳(α波)
NISTで開発されているセンサーの感度は1pTとのこと。
プレスリリースと関連記事が以下。
http://www.nist.gov/pml/div688/brain-041912.cfm
http://www.medtecjapan.com/ja/news/2012/05/08/221
http://sustainablejapan.net/?p=1486

他にも東北大学, コニカミノルタ株式会社, 科学技術振興機構
で開発されているセンサーがあり、こちらも
http://www.jst.go.jp/pr/announce/20150723/
の図から読み取るとpTレベルの感度があるようだ。


3. 脳(視覚反応)
SQUIDと呼ばれるデバイスがある。感度はfTレベル。
ただし、磁気シールドルームや液体ヘリウムが必要。
以下を参考。
https://en.wikipedia.org/wiki/SQUID
http://www.yokogawa.co.jp/me/meg/whatmeg/me-whatmeg1-ja.htm

2015/07/19

Kurz Gesagt にシドニアが!?

科学の様々な分野における基礎的な内容を概説する動画が公開されています。
Kurz Gesagt - In a Nutshell
http://kurzgesagt.org
https://www.youtube.com/channel/UCsXVk37bltHxD1rDPwtNM8Q


そのなかのひとつの動画に
The Fermi Paradox
https://www.youtube.com/watch?v=sNhhvQGsMEc
がありますが、なんと 00:57〜01:07 にシドニアとおぼしき宇宙船が出現。
こういう形の宇宙船は一般的な形なのか、それとも、製作者がファンなのか、
どっちなのでしょうね。

http://animeanime.jp/article/2014/06/19/19150.html
によると、2014年に北米やヨーロッパでNetflixが配信したようですので、
後者なのかもしれません。

鳥獣戯画制作キットで遊んでみた

鳥獣戯画制作キットbeta
http://gigamaker.jimdo.com/
で鳥獣戯画が簡単に作製できるとのことで、
試しにてきとーに作ってみた。

スタンプで絵を描くのと同じですな。

来年の干支は申(さる)なので、年賀状にちょうどよさそう。

2014/12/11

SOLID 原則

ソフトウェアの設計の5つの原則。
ときどき、それぞれの名前を忘れるのでメモ。

1. SRP : Single Responsibility Principle (単一責任の原則)
2. OCP : Open-Closed Principle (オープン・クローズドの原則)
3. LSP : Liskov Substitution Principle (リスコフの置換原則)
4. ISP : Interface Segregation Principle (インターフェイス分離の原則)
5. DIP : Dependency Inversion Principle (依存関係逆転の原則)

(参考:ISBN4-7973-2336-1, ISBN978-4-87311-614-3)

2014/08/03

ask のイメージ

askの日本語訳を調べると、
1. 尋ねる
2. 依頼する
3. 請求する
4. 招待する
5. 必要とする
が書かれているが、いずれも日本語の観点では類似性が乏しい。
askが表す意味の範囲と、日本語訳の個々の単語が表す意味の範囲が
うまい具合にずれているためであろう。

日本語訳から想起すると、ask x は、
「相手または何かからxに関する何かを引き出すようなイメージ」
に近いのではないだろうか。
さらに、引き出す行為に対して「お願いする」という雰囲気がくっついている。

こう考えると、
1. 尋ねる ← 相手からxに関する情報を引き出す。
2. 依頼する ← 相手からxに関する行動を引き出す。
3. 請求する← 相手から代金(=x)を引き出す。
4. 招待する ← xを自分のところに引き出す。
5. 必要とする ← xを自分のところに引っ張ってくる。
のようになり、範囲は広いが1つの単語で表せてもおかしくはない。

例えば、
I ask a job of you
は、
あなたに属する、仕事に対する行動を引き出す。→ あなたに仕事を依頼する。
となり、
I ask a question of him
は、
彼に属する、質問に関する情報を引き出す。→ 彼に質問する。
となる。

ところで、「〜に」を表すためにtoではなくてofを使うが、
これは、上の例にあるように「〜に属している何か」を引き出すので、
ofになるのだと理解することができる。

仮にtoを用いると、引っ張り出した「何か」の行き先がわからなくなり、
意味不明な文章となる。


………


ほんとかな!?

2014/07/21

電磁波が渡り鳥の磁気コンパスに影響を与えているかも?

メモ。
doi:10.1038/nature.2014.15176
doi:10.1038/nature13334

人間の脳にも磁鉄鉱(Fe3O4)があるそうだ。
Joseph L. Kirschvink et al. "Magnetite biomineralization in the human brain," 1992
(http://www.pnas.org/content/89/16/7683.full.pdf)

2014/01/26

buildbot + mercurial の使い方

次のような設定を行うと、リポジトリ変更時に自動的にビルドされるようになる。
buildbotはver.0.8.6を使用した。
buildbot関連のファイルを置くディレクトリを$workとする。

1. マスター用の設定ファイルを作る

cd $work
buildbot create-master master
cd master
cp master.cfg.sample master.cfg

2. master.cfg を変更する

2.1. CHANGESOURCES を変更する

もともとあったGitPollerを削除し、次の2行を追加する。
from buildbot.changes import pb
c['change_source'] = pb.PBChangeSource(port=9988, user='changeuser', passwd='password_xxx')
ただし、port, user, passwdは適切な値に変更する。

2.2. SCHEDULERS を変更する

SingleBranchScheduler の引数を変更する。
c['schedulers'].append(SingleBranchScheduler(
                         name="all",
                         branch="default",
                         builderNames=["runtests"]))
ブランチを使っていないなら、branchにはdefaultと指定する。
branch名の指定を誤ると、mercurialからアップデートが 通知されるだけになり、ビルドは実行されなくなる。

2.3. BUILDERS を変更する

git関連を削除して、次の行を追加する。
from buildbot.steps.source.mercurial import Mercurial
factory.addStep(Mercurial(repourl='/xxx/yyy/bb-test', mode='full',
                          method='fresh', branchType='inrepo'))
factory.addStep(ShellCommand(command=["./make.sh"]))
repourl はリポジトリのパス。
make.sh はビルドするためのスクリプト。
Makefileを使用しているなら、単にmakeでもよい。

2.4. リポジトリの設定をする

.hg/hgrc に次の内容を追加する。
[hooks]
changegroup.buildbot = python:buildbot.changes.hgbuildbot.hook

[hgbuildbot]
master = localhost:9988
auth = changeuser:password_xxx

3. slave を作る

cd $work
buildslave create-slave slave master example-slave pass

4. 動作させる

cd $work
buildbot start master
buildslave start slave
これで、リポジトリに変更をpushするだけで、変更が反映されたソースコードで 自動的にビルドされるようになる。

2013/11/16

bash で二重に trap

Q. 最初のスクリプトでtrapを呼び、そこから呼び出したスクリプト内でもtrapを呼ぶとどうなるのか?

A. 両方が呼び出される。以下、実験結果。

[test.sh]
#!/bin/bash
trap "echo xxx" 2
./sub.sh
sleep 5

[sub.sh]
#!/bin/bash
trap "echo yyy" 2
sleep 5

test.shを実行して、5秒以内にCtrl+Cを押すと、端末に
^Cyyy
xxx
が表示される。

5秒から10秒の間にCtrl+Cを押すと、端末に
^Cxxx
が表示される。



ここにtrapの解説がある。
http://shellscript.sunone.me/signal_and_trap.html

2013/10/19

perl で連想配列に配列を記録する方法

いつも忘れるのでメモ。

%x2y = ();
# 読み込み
while(<>)
{
    $_ =~ s/[\r\n]//g;   # 改行除去
    @c = split / /;   # スペースで分割
    push(@{$x2y{$c[0]}}, $c[1]); # キーが$c[0]の配列に$c[1]を追加
}
# 表示
while(($k,$v)=each(%x2y))
{
    print $k." --> ".join(", ",@$v)."\n";
}

このスクリプトに標準入力から

a a
b b
b c
c d
c e
c f

を入力すると、

c --> d, e, f
a --> a
b --> b, c

が得られる。

Brzozowski さんの読み方

http://d.hatena.ne.jp/m-hiyama/20131017/1381998987
によると、「ゾゾウスキイ」とのこと。

しかしよくよく音声を
http://ja.forvo.com/word/brzozowski/
で聞いてみると最初のzが発音されず、

ブロゾウスキー
プロゾウスキー
ブロゾフスキー
プロゾフスキー

のどれかに近いように聞こえる。

「ゾ」にアクセントをおいて発音すると
forvoにある音声と似たような発音ができそうだ。

2013/05/30

読めない苗字

こんな苗字を見つけた。

Ljolje

ここにたくさんある。
http://www.linkedin.com/pub/dir/+/Ljolje

どうやらクロアチア語圏かそのあたりの苗字のようだ。

http://croatia.kororo.jp/lang/01accent.html
によると、Ljは「リュ」の音が近いようなので、
仮にクロアチア語だとしてカタカナ読みをすると、

「リョーリュェ」とか「リョーレ」

と読めばいいのだろうか。

2013/04/21

RVOと右辺値参照

C++11のお話。

RVO(Return Value Optimization)と右辺値参照が競合する場合は、
RVOが優先される。

#include <iostream>
class test
{
public:
  test(void) : val(0)
  {
    std::cout << "ctor with no args" << std::endl;
  }
  ~test(void)
  {
    std::cout << "dtor : " << val << std::endl;
  }
  test(int a) : val(a)
  {
    std::cout << "ctor : " << a << std::endl;
  }
  test(const test &) = delete; // undef copy constructor
  test(test &&a) : val(a.val)
  {
    std::cout << "move ctor : " << val << std::endl;
    a.val = -val;
  }
  const test& operator=(test &&a)
  {
    std::cout << "move oper= " << a.val << std::endl;
    val = a.val;
    a.val = -val;
    return *this;
  }
  
private:
  int val;
};

test ret_test(int a)
{
  test t(a);
  return t;
}

int main(void)
{
  {
    test t1 = ret_test(1); // RVO
    t1 = ret_test(2); // rvalue reference
  }
  std::cout << "---" << std::endl;
  {
    test t3 = std::move(ret_test(3)); // rvalue reference by std::move
  }
  return 0;
}



処理した結果は次のようになる。g++ ver.4.7.2 と Debian clang version 3.0-6.2
のどちらでも同じ結果となった。

ctor : 1
ctor : 2
move oper= 2
dtor : -2
dtor : 2
---
ctor : 3
move ctor : 3
dtor : -3
dtor : 3

2013/03/25

LibreOffice で条件付き書式

条件付き書式で数値ではなく文字列を指定するには、

[セルの値が] [次の値に等しい] "ABC"

のようにすればよい。この例の場合、セルの値がABCの場合に
条件を満たす。指定したい文字列を " で括る必要がある。
' で括っても動作しないし、単に文字列を書いただけでも動作しない。

2013/02/08

[Python] numpy の行列

numpy の行列の各要素へのアクセス方法をいろいろと試した。
まず、numpyを読み込んで、npという名前でアクセスできるようにする。

>>> import numpy as np
さらに、行列Mを作成する。
>>> M=np.matrix([[1,2,3],[4,5,6],[7,8,9]])
1行目1列目が1、1行目2列目が2である。


2行目を表示する。
>>> print M[1]
[[4 5 6]]

2行目3列目の値を表示する。
>>> print M[1,2]
6

以降、i行列j列目を(i,j)と書くこととする。

(3,2)と(1,2)の成分を取り出す。
>>> print M[[2,0],[1,1]]
[[8 2]]
(3,1)と(2,2)の成分を取り出すわけではないことに注意。

(1,3)と(2,2)、(3,1)の成分を取り出す。
>>> print M[[0,1,2],[2,1,0]]
[[3 5 7]]

(2,3)と(2,2)、(2,1)の成分を取り出す。
>>> print M[[1,1,1],[2,1,0]]
[[6 5 4]]
省略して書くこともできる。
>>> print M[1,[2,1,0]]
[[6 5 4]]
これも同様。
>>> print M[[1],[2,1,0]]
[[6 5 4]]

次の書き方はエラーとなる。
>>> print M[[1,2],[2,1,0]]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/pymodules/python2.7/numpy/matrixlib/defmatrix.py", line 305, in __getitem__
    out = N.ndarray.__getitem__(self, index)
ValueError: shape mismatch: objects cannot be broadcast to a single shape

(3,2)と(2,2)、(1,2)の成分を取り出す。
>>> print M[[2,1,0],[1,1,1]]
[[8 5 2]]

同様に省略できるが、形式が変わる。
>>> print M[[2,1,0],1]
[[8]
 [5]
 [2]]

次の3つはすべて同じ結果となる。
>>> print M[[2],1]
[[8]]
>>> print M[[2],[1]]
[[8]]
>>> print M[2,[1]]
[[8]]

しかし、[]が[]内にないと、スカラーの値が表示される。
>>> print M[2,1]
8

次の2つは同じ。
>>> print M[np.arange(3),np.arange(3)]
[[1 5 9]]
>>> print M[[0,1,2],[0,1,2]]
[[1 5 9]]

1行目と2行目を取り出す。
>>> print M[[0,1]]
[[1 2 3]
 [4 5 6]]

転置をとる。
>>> print M.T
[[1 4 7]
 [2 5 8]
 [3 6 9]]

2013/02/01

mnist.pkl.gz の読み込み方

http://deeplearning.net/tutorial/gettingstarted.html
に記載されている MNIST Dataset
http://deeplearning.net/data/mnist/mnist.pkl.gz
のデータ構造は次のようになっている。

[mnist.pkl] = [[train_set], [valid_set], [test_set]]
[*_set] = [[*_setの入力], [*_setの正解]]
[*_setの入力] = [[784個の浮動小数点の配列], ... ]
[*_setの正解] = [[0〜9の整数], ... ]

ここで、[784個の浮動小数点の配列]は28x28の手書き数字画像、
*_setはtrain_set、valid_set、test_setのいずれかである。

読み込んで端末に表示してみるコード(load.py)は次の通り。

import cPickle, gzip, numpy, sys
if len(sys.argv) != 2:
  quit()
data_index=int(sys.argv[1])
f=gzip.open('../data/mnist.pkl.gz','rb')
train_set, valid_set, test_set=cPickle.load(f)
train_set_x, train_set_y=train_set # setの中身が
for i in range(data_index,data_index+1):
  for y in range(0,28):
    for x in range(0,28):
      if train_set_x[i][y*28+x]<0.5:
        sys.stdout.write(" ")
      elif train_set_x[i][y*28+x]<0.8:
        sys.stdout.write("+")
      else:
        sys.stdout.write("*")
    sys.stdout.write("\n")
  print "correct =",train_set_y[i]
  print "--------------------------------"


8番目のデータを表示する実行例は次の通り。
$ python load.py 7





              ******+
          +**********+
         +************
          ***+++++****
                  ***+
                  ***+
                 +***
               *****+
           +++*****
         *********+
         **********
                +**
                 **
                 **
                ***
      +*       ****
     ***++++++***+
     ***********+
      +*******+
        **+



correct = 3
--------------------------------
データを読めていることが確認できる。

2013/01/30

[Python] theano.tensor.grad

theano.tensor で書いた関数を自動的に微分することができる。
ただし、関数で計算した結果得られる値はスカラーでなければならない。
ベクトルや行列になっているとエラーとなる。

gradを使った例を次に示す。

import numpy
import theano
import theano.tensor as T

x=T.dscalar('x')
v=T.dvector('v')
M=T.dmatrix('M')

y1=x**3
y2=T.dot(v,v)*x
y3=T.sum(T.dot(M,M))

gy1=T.grad(y1,x)
gy2=T.grad(y2,v)
gy3=T.grad(y3,M)

f1=theano.function([x],gy1)
f2=theano.function([x,v],gy2)
f3=theano.function([M],gy3)

print "f1  :",theano.pp(f1.maker.fgraph.outputs[0])
print "f2  :",theano.pp(f2.maker.fgraph.outputs[0])
print "f3  :",theano.pp(f3.maker.fgraph.outputs[0])

print "f1(2) =",f1(2)
print "f2(2,[3,5]) =",f2(2,[3,5])
print "f3([[1,2],[3,4]]) =",f3([[1,2],[3,4]])

実行すると、
f1  : Elemwise{Composite{[mul(i0, sqr(i1))]}}(TensorConstant{3.0}, x)
f2  : Elemwise{Composite{[add(*1 -> mul(i0, i1), *1)]}}(x, v)
f3  : gemm_inplace(_dot22(alloc(TensorConstant{(1, 1) of 1.0}, Shape_i{0}(M), Shape_i{1}(M)), M.T), TensorConstant{1.0},
 M.T, alloc(TensorConstant{(1, 1) of 1.0}, Shape_i{0}(M), Shape_i{1}(M)), TensorConstant{1.0})
f1(2) = 12.0
f2(2,[3,5]) = [ 12.  20.]
f3([[1,2],[3,4]]) = [[  7.  11.]
 [  9.  13.]]
が得られる。f1 の出力を見ると、mul が掛け算で sqr が2乗、i0=TensorConstant{3.0}、
i1=x であるから、y1 を x で微分した結果である 3*x^2 が得られていることがわかる。
f2 と f3 は複雑すぎて読み方がわからないが、具体的な値を入れた結果は
正しく出力されている。



エラーが出る例として、ベクトルが戻り値になるような関数を試してみる。
import numpy
import theano
import theano.tensor as T

x=T.dscalar('x')
v=T.dvector('v')
y=v*x
gy=T.grad(y,x)
すると、
Traceback (most recent call last):
  File "test.py", line 8, in <module>
    gy=T.grad(y,x)
  File "/usr/local/lib/python2.7/dist-packages/theano/gradient.py", line 411, in grad
    raise TypeError("cost must be a scalar.")
TypeError: cost must be a scalar.
といわれて微分できない。

2013/01/24

[Python] theano.tensor.fill

fill の挙動がわからないので調べてみた。

import numpy
import theano
import theano.tensor as T

x=T.dscalar('x')
xc=T.dscalar('xc')
y1=3*x
y2=xc*x
y3=T.fill(xc,3)*x

f1=theano.function([x],y1)
f2=theano.function([x,xc],y2)
f3=theano.function([x,xc],y3)

print "x=",theano.pp(x)
print "y1=",theano.pp(y1)
print "y2=",theano.pp(y2)
print "y3=",theano.pp(y3)
print "f1=",theano.pp(f1.maker.fgraph.outputs[0])
print "f2=",theano.pp(f2.maker.fgraph.outputs[0])
print "f3=",theano.pp(f3.maker.fgraph.outputs[0])
print "f1(2)=",f1(2)
print "f2(2,3)=",f2(2,3)
print "f3(2,3)=",f3(2,3)
print "f3(2,100)=",f3(2,100)

実行すると、
x= x
y1= (TensorConstant{3} * x)
y2= (xc * x)
y3= (fill(xc, TensorConstant{3}) * x)
f1= (TensorConstant{3.0} * x)
f2= (xc * x)
f3= (TensorConstant{3.0} * x)
f1(2)= 6.0
f2(2,3)= 6.0
f3(2,3)= 6.0
f3(2,100)= 6.0
が得られた。

f3(2,3)もf3(2,100)も同じ値を返していることから、
fill は第1引数を第2引数の値に固定した結果を返しているように見える。
何に使うのだろうか。

ところで、
f3=theano.function([x,xc],y3)
f3=theano.function([x],y3)
に置き換えると
theano.gof.fg.MissingInputError: ('An input of the graph, used to compute Elemwise{second,no_inplace}(xc, TensorConstant{3}), was not provided and not given a value', xc)
というエラーが出力される。
値が与えられてない変数が残っていると、たとえfillを使って値を与えていても
関数化するのは無理なようだ。

2013/01/20

流行のDNN

なんか、DNNが流行っているらしい。
というわけで、探してみると日本語の概要があった。
http://www.slideshare.net/mokemokechicken/pythondeep-learning
http://www.slideshare.net/tushuhei/121227deep-learning-iitsuka

Python+Theanoを使うと簡単なそうな。
実装例が
http://deeplearning.net/tutorial/
にあるので、まずは準備で、
http://deeplearning.net/tutorial/gettingstarted.html
に書いてあるとおり、githubからcloneでソースを取得する。

チュートリアルどおり、実験用の手書き数字画像としてMNIST datasetをダウンロードする。
gitで取ってきたなかの、
data/download.sh
を実行するとデータがダウンロードされる。

また、

$ cd doc
$ make
を実行すると チュートリアルのpdf版が html/deeplearning.pdf に作成される。

使い方はまだよく調べていないが、次のように実行すると、
とりあえずテスト実行できるようだ。
$ python
>>> import test
>>> test.speed()


実行した結果は、以下。一部省略。
-- logistic_sgd のログの一部(float64) --
epoch 30, minibatch 83/83, validation error 8.031250 %
     epoch 30, minibatch 83/83, test error of best model 7.843750 %
Optimization complete with best validation score of 8.031250 %,with test performance 7.843750 %
The code run for 30 epochs, with 1.299264 epochs/sec
The code for file logistic_sgd.pyc ran for 23.1s

-- logistic_cg のログの一部(float64) --
validation error 7.927083 %
Optimization complete with best validation score of 7.927083 %, with test performance 8.041667 %
The code for file logistic_cg.pyc ran for 53.4s

-- mlp のログの一部(float64) --
epoch 5, minibatch 2500/2500, validation error 7.300000 %
     epoch 5, minibatch 2500/2500, test error of best model 7.590000 %
Optimization complete. Best validation score of 7.300000 % obtained at iteration 14999, with test performance 7.590000 %
The code for file mlp.pyc ran for 2.88m

-- convolutional_mlp のログの一部(float64) --
epoch 5, minibatch 100/100, validation error 6.430000 %
     epoch 5, minibatch 100/100, test error of best model 6.920000 %
Optimization complete.
Best validation score of 6.430000 % obtained at iteration 599,with test performance 6.920000 %
The code for file convolutional_mlp.pyc ran for 2.26m

-- dA のログ(float64) --
... loading data
Training epoch 0, cost  63.2891694201
Training epoch 1, cost  55.7866565443
The no corruption code for file dA.pyc ran for 2.05m
Training epoch 0, cost  81.7714190632
Training epoch 1, cost  73.4285756365
The 30% corruption code for file dA.pyc ran for 2.06m

-- SdA のログ(float64) --
... loading data
... building the model
... getting the pretraining functions
... pre-training the model
Pre-training layer 0, epoch 0, cost  194.503144937
Pre-training layer 1, epoch 0, cost  695.507788509
Pre-training layer 2, epoch 0, cost  529.03645135
The pretraining code for file SdA.pyc ran for 6.89m
... getting the finetuning functions
... finetunning the model
epoch 0, minibatch 166/166, validation error 14.868687 %
     epoch 0, minibatch 166/166, test error of best model 15.727273 %
epoch 1, minibatch 166/166, validation error 11.595960 %
     epoch 1, minibatch 166/166, test error of best model 11.717172 %
Optimization complete with best validation score of 11.595960 %,with test performance 11.717172 %
The training code for file SdA.pyc ran for 6.70m

-- DBN のログ(float64) --
... loading data
... building the model
... getting the pretraining functions
... pre-training the model
Pre-training layer 0, epoch 0, cost  -165.566548661
Pre-training layer 1, epoch 0, cost  -620.030667461
Pre-training layer 2, epoch 0, cost  -133.876169806
The pretraining code for file DBN.pyc ran for 7.84m
... getting the finetuning functions
... finetunning the model
epoch 1, minibatch 166/166, validation error 28.373737 %
     epoch 1, minibatch 166/166, test error of best model 29.848485 %
epoch 2, minibatch 166/166, validation error 20.272727 %
     epoch 2, minibatch 166/166, test error of best model 21.424242 %
Optimization complete with best validation score of 20.272727 %,with test performance 21.424242 %
The fine tuning code for file DBN.pyc ran for -64.90m

-- rbm のログ(float64) --
... loading data
WARNING (theano.tensor.opt): Your current code is fine, but Theano versions prior to 0.5rc2 might have given an incorrect result. To disable this warning, set the Theano flag warn.subtensor_merge_bug to False.

Training epoch 0, cost is  -53.1045703345
Training took 17.727500 minutes
WARNING (theano.tensor.opt): Your current code is fine, but Theano versions prior to 0.5rc2 might have given an incorrect result. To disable this warning, set the Theano flag warn.subtensor_merge_bug to False.
 ... plotting sample  0
['logistic_sgd', 'logistic_cg', 'mlp', 'convolutional_mlp', 'dA', 'SdA', 'DBN', 'rbm']
float64 times [   24.00578618    55.60583591   175.75342607   136.53151321   248.71974111
   823.29348183   874.02775431  1079.12984514]
float64 expected [10.300000000000001, 23.699999999999999, 78.099999999999994, 73.700000000000003, 116.40000000000001, 346.89999999999998, 381.89999999999998, 558.10000000000002]
float64 % expected/get [ 0.42906322  0.42621426  0.44437256  0.53980212  0.46799663  0.42135643
  0.43694265  0.51717595]

-- float32の場合の最後の方のログ --
 ... plotting sample  0
['logistic_sgd', 'logistic_cg', 'mlp', 'convolutional_mlp', 'dA', 'SdA', 'DBN', 'rbm']
float32 times [   21.94568563    49.98527789   177.91128731   136.48723054   291.68081236
  1048.11308694  1128.05673623  1302.78659558]
float32 expected [11.6, 29.600000000000001, 47.200000000000003, 66.5, 71.0, 191.19999999999999, 226.80000000000001, 432.80000000000001]
float32 % expected/get [ 0.5285777   0.59217436  0.26530076  0.48722507  0.24341677  0.18242306
  0.20105372  0.33221097]
float64/float32 [ 1.09387269  1.11244427  0.98787114  1.00032445  0.85271204  0.78550062
  0.77480833  0.82832434]

Duplicate the timing to have everything in one place
['logistic_sgd', 'logistic_cg', 'mlp', 'convolutional_mlp', 'dA', 'SdA', 'DBN', 'rbm']
float64 times [   24.00578618    55.60583591   175.75342607   136.53151321   248.71974111
   823.29348183   874.02775431  1079.12984514]
float64 expected [10.300000000000001, 23.699999999999999, 78.099999999999994, 73.700000000000003, 116.40000000000001, 346.89999999999998, 381.89999999999998, 558.10000000000002]
float64 % expected/get [ 0.42906322  0.42621426  0.44437256  0.53980212  0.46799663  0.42135643
  0.43694265  0.51717595]
float32 times [   21.94568563    49.98527789   177.91128731   136.48723054   291.68081236
  1048.11308694  1128.05673623  1302.78659558]
float32 expected [11.6, 29.600000000000001, 47.200000000000003, 66.5, 71.0, 191.19999999999999, 226.80000000000001, 432.80000000000001]
float32 % expected/get [ 0.5285777   0.59217436  0.26530076  0.48722507  0.24341677  0.18242306
  0.20105372  0.33221097]
float64/float32 [ 1.09387269  1.11244427  0.98787114  1.00032445  0.85271204  0.78550062
  0.77480833  0.82832434]
expected float64/float32 [ 0.46934054  0.47413961  0.43898283  0.53997725  0.39906636  0.33097574
  0.3385468   0.42838942]
ERROR (theano.sandbox.cuda): nvcc compiler not found on $PATH. Check your nvcc installation and try again.

 ... plotting sample  0
['logistic_sgd', 'logistic_cg', 'mlp', 'convolutional_mlp', 'dA', 'SdA', 'DBN', 'rbm']
gpu times [   23.64237881    50.57395744   185.60482621   139.12935448   289.82814217
  1050.09374905  1123.013515    1268.43072391]
gpu expected [3.0766348799999998, 7.5552349100000002, 18.992267850000001, 9.5999999999999996, 24.130070450000002, 20.399999999999999, 56.0, 302.60000000000002]
gpu % expected/get [ 0.1301322   0.14938983  0.10232637  0.06900054  0.08325648  0.01942684
  0.04986583  0.2385625 ]
float64/gpu [ 1.01537102  1.09949545  0.94692272  0.98132787  0.85816284  0.78401903
  0.77828783  0.85075978]

Duplicate the timing to have everything in one place
['logistic_sgd', 'logistic_cg', 'mlp', 'convolutional_mlp', 'dA', 'SdA', 'DBN', 'rbm']
float64 times [   24.00578618    55.60583591   175.75342607   136.53151321   248.71974111
   823.29348183   874.02775431  1079.12984514]
float64 expected [10.300000000000001, 23.699999999999999, 78.099999999999994, 73.700000000000003, 116.40000000000001, 346.89999999999998, 381.89999999999998, 558.10000000000002]
float64 % expected/get [ 0.42906322  0.42621426  0.44437256  0.53980212  0.46799663  0.42135643
  0.43694265  0.51717595]
float32 times [   21.94568563    49.98527789   177.91128731   136.48723054   291.68081236
  1048.11308694  1128.05673623  1302.78659558]
float32 expected [11.6, 29.600000000000001, 47.200000000000003, 66.5, 71.0, 191.19999999999999, 226.80000000000001, 432.80000000000001]
float32 % expected/get [ 0.5285777   0.59217436  0.26530076  0.48722507  0.24341677  0.18242306
  0.20105372  0.33221097]
gpu times [   23.64237881    50.57395744   185.60482621   139.12935448   289.82814217
  1050.09374905  1123.013515    1268.43072391]
gpu expected [3.0766348799999998, 7.5552349100000002, 18.992267850000001, 9.5999999999999996, 24.130070450000002, 20.399999999999999, 56.0, 302.60000000000002]
gpu % expected/get [ 0.1301322   0.14938983  0.10232637  0.06900054  0.08325648  0.01942684
  0.04986583  0.2385625 ]
float64/float32 [ 1.09387269  1.11244427  0.98787114  1.00032445  0.85271204  0.78550062
  0.77480833  0.82832434]
expected float64/float32 [ 0.46934054  0.47413961  0.43898283  0.53997725  0.39906636  0.33097574
  0.3385468   0.42838942]
float64/gpu [ 1.01537102  1.09949545  0.94692272  0.98132787  0.85816284  0.78401903
  0.77828783  0.85075978]
expected float64/gpu [ 0.43565836  0.46862063  0.42078647  0.52972286  0.40161731  0.33035146
  0.34006715  0.4399925 ]
float32/gpu [ 0.92823509  0.98836003  0.95854882  0.98100959  1.00639231  0.99811382
  1.00449079  1.02708534]
expected float32/gpu [ 0.49064437  0.58528147  0.25430373  0.47797246  0.24497276  0.18207898
  0.20195661  0.34120902]
speed_failure_float64=8
speed_failure_float32=8
speed_failure_gpu=8



仮想マシン上のlinuxなので、CUDAが使えない…

2012/10/14

男性2人の脳地図

成人の男性2人の脳の解剖と解析をしたとのこと。
doi:10.1038/nature11405
http://www.nature.com/nature/journal/v489/n7416/abs/nature11405_ja.html

データは
http://www.brain-map.org
で公開されている。

2012/10/13

Linuxのターミナルが文字化けしたら

元に戻す方法が
http://wiliki.zukeran.org/index.cgi?Linux%a4%ce%a5%bf%a1%bc%a5%df%a5%ca%a5%eb%a4%ac%ca%b8%bb%fa%b2%bd%a4%b1%a4%b7%a4%bf%a4%c8%a4%ad%a4%ce%c2%d0%bd%e8
に載っている。これによると、

[Screenを使っているとき]
screenのコマンドキー(デフォルトならCtrl+a)を押してから
:encoding utf8
とか
:encoding euc
などと入力。

[Screenを使っていないとき]
echo "^V^O"

を入力すればよい。

ついでに、
[端末の画面が固まってしまったら]
おそらくCtrl+sを誤って押してしまっているので、
Ctrl+qで解除できる。

2012/06/19

脳のカラムの作られ方

解説記事
Nature 486, 41-42 doi:10.1038/486041a

LETTER
(1)Nature 486, 113-117 doi:10.1038/nature10958
(2)Nature 486, 118-121 doi:10.1038/nature11110

脳のカラムの作られ方は、解説記事の図1そのままではあるが、
1. 胚発生時、分裂したニューロンが皮質の表面に向かって並んでいく。
こうして並んだニューロンが兄弟ニューロン。
2. 出生後の発達時、兄弟ニューロンはギャップ結合と呼ばれる穴でつながり
(樹状突起同士でつながる)、互いに電流が流れるようになる
3. その後、ギャップ結合は消失し、兄弟ニューロン間でシナプスが形成される。
4. 最終的に、兄弟ニューロンが類似の応答をするようになる。
ということである。

ギャップ結合をなくすことで3.が起きないことは(1)が示し、
4.が起きないことは(2)が示した。

ギャップ結合の阻害はレトロウィルスを使った変異を利用するか、
ギャップ結合遮断薬を用いることで実現している。

2.は阻害せず、3.を阻害すると4.はなくなるのだろうか?
気になる。


なお、上記の話は全てマウスに関するものである。

2012/06/02

工業から情報産業へ

「情報の文明学」(ISBN4-12-203398-5) pp.244-245 に
こんなことが書いてあった。

<引用>
工業社会はまだ、情報産業を競争相手とはみていない。
生産の原理が、工業から情報産業にうつりつつあることを
認識したときに、工業はどういう態度をとるであろうか。
そこで「工業こそは国の礎」という反動イデオロギーが
発生する可能性がある。それはおそらく、農本主義に
ならって工本主義と名づけられるであろう。
</引用>

これが書かれたのは1988年3月である。

最近、いろいろなところで「ものづくり」や
「ものづくり大国日本」などという言葉をよく見聞きする。

たとえば、関東経済産業局のページ
http://www.kanto.meti.go.jp/seisaku/seizousangyou/monodukuri/index_mono.html
には冒頭に

<引用>
「ものづくり」は我が国の国際競争力の源泉であり、
</引用>

と書かれている。こういったものは先の引用文にあった
反動イデオロギーのように思えてならない。
「ものづくり」の連呼はいつ終わるのだろうか。

2012/04/15

仮想PC

VirtualBoxとVirtual PCの両方を動作させると
ホストOSがブルースクリーンになる。

なにかが干渉するのだろう。

2011/12/25

天の川銀河の棒状構造の進化

http://www.nature.com/nature/journal/v477/n7364/full/477286a.html
http://www.nature.com/nature/journal/v477/n7364/full/nature10417.html

Chris W. Purcell et al., Nature 477, pp301-303,
The Sagittarius impact as an architect of spirality and outer rings in the Milky Way

いま現在、銀河中心に対してちょうど地球と反対側に位置している
Sagittarius Dwarf Elliptical Galaxy (Sgr)が銀河の円盤の進化に
影響を与えていることが数値計算によりわかったとのこと。

例えば、Sgrの質量が小さめの場合と大き目の場合で銀河中心に
ある棒状構造が強くなったり弱くなったりするという結果がでている。

数値計算には ChaNGa
http://www-hpcc.astro.washington.edu/tools/changa.html
を使っている。CUDAもサポートしていて、並列実行もできるそうな。
実験で使った粒子数は3000万とのこと。

さらに並列実行には
http://charm.cs.uiuc.edu/
を使っているそうな。

頭皮に電流を流すと…

記憶や言語機能を上げたり下げたり、痛みを軽減したり
笑い出したり沈黙させたりできるらしい。
たった9Vの電池で。
どこに電極をあててどの向きに流すかで
効果が変わるらしい。

副作用があることもあり、電流を流すのをやめても
効果がすぐに切れるというわけではないようなので、
やらないほうが身のためですね。

Nature 472, 156-159 (2011-04-14); doi:10.1038/472156a
Nature digest Jul 2011, Vol. 8 No. 7, pp24-27

2011/12/09

マウスの視覚皮質のニューロンの接続の形

解説記事
doi:10.1038/4641290b

論文
Nature 464,1307-1312,(29 April 2010), Jia et al.
doi:10.1038/nature08947

視覚皮質には目から入ってきた画像に含まれる線の傾きを
検出する部分があり、特定の傾き(方向)にのみ反応する
ニューロンがある。ニューロンへの入力信号と出力信号
には方向性があるが、反応する傾きの範囲は入力に比べて
出力の方がとても狭いことがこれまでに分かっている。

入力信号が発生する傾きの範囲が広いのは、反応する傾きは広いが
同じような傾きに反応する入力信号を選択しているからではなく、
反応する傾き自体は狭いが各シナプスが反応する向きが
幅広いからだと考えられている。

そうすると、どの樹状突起にどこから来た軸索がつながっている
のだろうか?

Jia et al.によると、枝分かれしている樹状突起のそれぞれの
枝につながっている軸索が類似の方向性をもっているのではなく
全体にさまざまな方向性のものがつながっているということが
わかったとのこと。

ただし、実験はマウスの一次視覚皮質のニューロンで行われており、
他のニューロンやほかの種のでは違うかもしれない。


観測のための道具は蛍光Ca2+インジケータと高速二光子顕微鏡と
細胞内電極で、膜電位の変化とCa2+信号を同時に記録している。
本文には撮影された画像が数多く掲載されている。

2011/11/20

ラットの記憶の強化

http://www.nature.com/news/2011/110126/full/news.2011.49.html
日本語 doi:10.1038/ndigest.2011.110407

ラットの脳の海馬にインスリン様成長因子II(IGF-II)を
直接注入すると記憶が強化されたという。
仕組みはまだ明確ではなく、癌のリスク増大の
可能性があるが、記憶関連障害の治療に結びつく
可能性があるとのこと。

2011/08/28

Coffee-ring effect

水道水とかコーヒーとかの水滴が蒸発すると丸い形の跡が残るあれ、
「Coffee-ring effect」というそうだ。

この効果を抑制する方法が
Peter J. Yunker et al. "Suppression of the coffee-ring effect by shape-dependent capillary interactions",
http://www.nature.com/nature/journal/v476/n7360/abs/nature10344.html
に掲載されている。解説記事はこちら。
http://www.nature.com/nature/journal/v476/n7360/full/476286a.html

この論文によると、球形粒子の場合はコーヒーリング効果が
発生するが、粒子が楕円体だとその効果が生じず均一に堆積する
とのこと。条件をうまく設定すると、球形粒子に少量の楕円体の
粒子を混ぜたものでも均一に堆積させることができるらしい。

水道水の水滴の跡が残らないようにできるなら身近なところで
嬉しいわけだが、丸い跡が残らなくても結局均一に堆積することから、
見た目は変わっても残念ながら跡そのものは残りそうだ。

2011/08/21

続 CG-PC4KVMCA

この切り替え器、少なくともPC側のキーボード接続を
USBにしていると説明書に見当たらない
次の機能があることがわかった。

Ctrl+1 : 音量ダウン
Ctrl+2 : 音量アップ
Ctrl+3 : ミュートのON/OFF切り替え

便利なときもあるのだろうが、これとかぶる
ショートカットキーを使うアプリやゲームを
使うときにとても不便である。

この機能を無理矢理切るには
[デバイスマネージャー]→[ヒューマンインターフェイスデバイス]
とたどり、
[HID準拠コンシューマー制御デバイス]
を無効にすればよい。

2011/08/06

CG-PC4KVMCA

4ポート切り替え器 corega CG-PC4KVMCA を購入してみた。
使えるキーボードとマウスがUSBでもPS/2でも大丈夫だと
いうことだったが、実際に使ってみるといくつか問題があった。

[PS/2マウス]
(1) PS/2マウス→[切り替え器]→PS/2接続
マウスカーソルの移動の読み取り精度が荒い。
右に1回移動:3ピクセル右へ移動
左に1回移動:4ピクセル左へ移動
下に1回移動:3ピクセル下へ移動
上に1回移動:4ピクセル上へ移動

(2) PS/2マウス→[切り替え器]→USB接続
こちらもマウスカーソルの移動の読み取り精度が荒い。
右に1回移動:2or3ピクセル右へ移動
左に1回移動:4ピクセル左へ移動
下に1回移動:2or3ピクセル下へ移動
上に1回移動:4ピクセル上へ移動

(3) PS/2マウス→[切り替え器]→PS/2→[別の変換器]→USB接続
これもだめ。2〜4ピクセル一度に移動する。
状況によって移動量が変化する。

(4) PS/2マウス→[別の変換器]→USB→[切り替え器]→USB接続
問題なし。1ピクセルずつ移動できる。

(5) PS/2マウス→[別の変換器]→USB→[切り替え器]→PS/2接続
大部分は1ピクセルずつ移動できる。例外は、
* 右に動かした後に左に動かす1回目のみ2ピクセル移動。
* 下に動かした後に上に動かす1回目のみ2ピクセル移動。

(「別の変換器」はArvelの型番AU02PSを使用)

[LogicoolのワイヤレスUSBマウス]
左右に動かない…。移動が上下だけになる。
したがって使い物にならない。

[PS/2キーボード]
(1) PS/2キーボード→[切り替え器]→PS/2接続
PS/2キーボード→[別の変換器]→USB→[切り替え器]→PS/2接続
キーを押し続けた時のリピート速度がとても遅い。

(2) PS/2キーボード→[切り替え器]→USB接続
PS/2キーボード→[別の変換器]→USB→[切り替え器]→USB接続
通常速度でリピートする。

まとめると、使える組み合わせは
USB接続のキーボード/マウス→[切り替え器]→USB接続
のみで、PS/2系統の接続はおまけだと思ったほうがよい。

2011/07/16

Windows7のファイアウォール

Windows7のファイアウォールの設定がなぜかいつの間にか変更される。
確認できているのは、
  ファイルとプリンターの共有
が含まれる名前の規則。
受信の規則、送信の規則ともに無効にしてもいつの間にか有効にされてしまう。

全体のルールで
  規則に一致しない受信/送信接続はブロック
するようにしているので、規則が無効になっていれば
ブロックされるはずなのだが、いつの間にか有効にされるので
意味がない。

とりあえず回避するには、
  各規則のプロパティ→全般→操作→「接続をブロックする」
を選択しておけばよさそうである。
少なくとも「ブロック」が勝手に「許可」になることは
ないようである。

2011/04/13

フランスIRSNのシミュレーション結果

今回の原発事故に関するフランスIRSNによる情報が
http://www.irsn.fr/EN/news/Pages/201103_seism-in-japan.aspx
に書かれている。

「福島第一原発事故の放射能放出が及ぼす超遠距離に
おいての影響 - 2011年3月30日」のpdfファイル
によると、4月1日時点で北半球のほとんど全体に拡散
していることがわかる。外国に居ても日本に居ても
大気中のセシウム137の濃度(Bq/m^3)に大きな違いは
ないようである。

この資料には大気中核実験が行われていた1960年代の
フランスでの大気中セシウム137の濃度が示されていて、
図(4月1日)からは今の濃度はそのころの濃度の1/10〜10倍
程度であることが分かる。

チェルノブイリ事故後のフランスでの濃度に比べると
1/10000〜1/100くらい小さい。

この結果はあくまでシミュレーションによる結果であるので、
細かい値が正しいとはいえないが傾向を知るには十分である。

また、このくらいの濃度なら、日本国内はともかく、
諸外国が気にする必要はなさそうである。
少なくとも核実験を行っていた国が気にするような
レベルではない。

2011/03/17

グローバルホーク

福島第一原発の撮影に米軍のグローバルホークを
ようやく使用するとのこと。
http://www.47news.jp/CN/201103/CN2011031601001241.html

グアムの機体だそうなので、少し前にグアムに配属された
機体なのかもしれない。

大学とか企業とかで遠隔操作できるロボットがあるなら
それも投入して欲しいところだが、安全のためには
何十kmも離れた所から操作ができる必要があるので、
今となっては難しいだろう。

無人という意味では、以前打ち上げてた日本の情報収集衛星
http://ja.wikipedia.org/wiki/%E6%83%85%E5%A0%B1%E5%8F%8E%E9%9B%86%E8%A1%9B%E6%98%9F
が活用できそうだが、これは公開されないので一般人には残念ながら全く分からない。

一方、陸域観測技術衛星「だいち」は使われていてJAXAで公開されている。
http://www.eorc.jaxa.jp/ALOS/img_up/jdis_pal_tohokueq_110315.htm
しかし、撮影画像を見る限り原発の状況を観測するには解像度が足りなさそうだ。

2011/03/16

ひたちなか市堀口のデータ(2)

8時間前の続き。

前と同様、上のグラフは
http://www.houshasen-pref-ibaraki.jp/present/19HP30grf.html
から引用したもので、2011年3月16日 8時10分までの
24時間分のデータである。

感雨程度では反応しないが、雨が降ると線量率が
増加するように見える。

しかしながら、正常時かつ降雨時の過去のデータがないため、
これが雨に反応したものか、風に乗って新たに放射性物質が
運ばれてきた結果なのか区別がつかない。

ひたちなか市堀口のデータ

なかなかアクセスできない茨城県のモニタリングポストのデータであるが、
ようやく1つアクセスできた。

上のグラフは
http://www.houshasen-pref-ibaraki.jp/present/19HP30grf.html
から引用したもので、2011年3月16日 0時10分までの
24時間分のデータである。

グラフの一番左側の値が通常の値である。
いったん上昇して元のレベルに戻るかと思いきや
ピーク時の1/3程度にまでしか下がっていない。
また、減衰が妙にゆるやかだ。

一時雨が降っていたようだが、影響がこのグラフからは
読み取れない。


通常値に戻らない理由としては
(1) 空気中に放射性物質が滞留
(2) 原発から流れ続けてきている
(3) 放射性物質が地表に滞留している
(4) 測定器が不調
(5) 放射性物質が測定器に付着しているだけ
くらいが思いつくが、何時間も無風とは考えられないので(1)はなし。
値が妙に安定しているので(2)もなさそう。
したがって(3),(4),(5)のどれかっぽい。

他の地点のデータにアクセスできれば比較して
判断できそうだ。

2011/03/15

吸収線量の計算

川崎市役所付近のデータがあるので大雑把に
吸収線量の計算をしてみる。

4:40分くらいから始まった上昇が2時間後(6:40)に
下降して元と同じくらいに戻るまでの吸収線量は
上昇して下降するまでの形状が三角形で150nGy/hが
ピーク値(値は?)と通常値(40nGy/hとする)の
中間値だとすると、三角形の部分が
(150nGy/h-40nGy/h)×2h = 110×2=220nGy
となり、通常値の部分が
40nGy/h×2h = 80nGy
になる。足すと、300nGyである。

もしこの増加している時間帯に2時間外に出てたとすると、
通常よりも300/80=3.75倍の放射線を受けた事になる。

増加分が220nGyなので、これを等価線量に換算する。
放射線の全てがβ線かγ線だとすると放射線荷重係数は
1なので、単純に単位を変えるだけになる。つまり、
増加分は220nSv。

http://www.city.saitama.jp/www/contents/1189641690509/index.html
によると胸部レントゲン1回につき0.061mSvであるので、
0.061mSv=61μSv=61000nSv
なので、増加分は無視できる。

もし、40nGy/hから150nGy/hに増えたままの状態が
1年間続いたと仮定すると、増加分はおおよそ
110nGy/h × 365日 × 24時間 = 963600nGy/年 = 963.6μSv/年
となる。その場合、1年間で胸部レントゲン15.8回分増える
ということになる。

ということで、増加しっぱなしはあんまりよくない
ことがわかる。

もうちょっと南の値

茨城よりもかなり南だが、川崎市役所付近(大島局観測)のデータがあった。
http://www.atom.pref.kanagawa.jp/cgi-bin2/telemeter_dat.cgi?Area=5&Type=W

なかなかアクセスできないので画像を引用する。
このグラフによると3月15日5時40分前後と
10時40分前後に何かが発生しているようだ。
グラフの上限値を越えているが、少なくとも150nGy/h以上の
線量が観測されている。

東京都日野市で個人測定されている方
http://park18.wakwak.com/~weather/
のデータだと同日12時20分頃に通常の4倍程度の線量を観測されている。
また、5時20分前後に線量が多少増加している。

関東の広い範囲にわたって到達しているのだろう。

風まかせなのでどの地点にいつ頃届くのかを予測するのは
困難だろうが、多少なりとも届くことがあるということは分かった。

茨城県のモニタリングポスト

東電がモニタリングポストの値をなぜか更新しないので、
茨城県のモニタリングポストの値を見てみる。

データが消えてしまうかもしれないのでコピーしておく。
今日になってから放射線量がどんどん増えている。
おいおい。

----------------------------------
日時 北茨城市 高萩市 大子町
13日 9:30 50 — —
〜 〜 — —
14日20:30 51 — —
20:40 50 — —
20:50 50 — —
21:00 49 — —
21:10 50 — —
21:20 49 — —
21:30 49 — —
21:40 49 — —
21:50 49 — —
22:00 50 40 —
22:10 50 41 —
22:20 50 40 —
22:30 50 41 —
22:40 50 40 —
22:50 50 39 —
23:00 50 40 —
23:10 50 39 —
23:20 50 40 —
23:30 50 39 —
23:40 50 40 —
23:50 50 39 66
15日0:00 49 39 66
0:10 52 36 65
0:20 144 40 66
0:30 278 40 65
0:40 375 39 66
0:50 313 40 65
1:00 216 40 65
1:10 169 40 66
1:20 170 40 65
1:30 173 42 65
1:40 168 48 66
1:50 201 55 66
2:00 200 51 64
2:10 227 46 65
2:20 305 45 65
2:30 373 43 65
2:40 391 41 65
2:50 332 43 65
3:00 416 49 64
3:10 908 53 64
3:20 1190 60 65
3:30 1600 68 65
3:40 2910 87 64
3:50 4120 112 64
4:00 4870 204 64
----------------------------------

なお、3月13日、女川原発では福島第一原発の1号機の爆発で
21,000nGy/hを検出したらしい。

放射性物質が風にのって…

関東地域の人にとってはあんまりうれしくない事態のようだ。
気象庁の3月15日08時の風向・風速データによると、
風向きが福島付近から関東平野までおおよそ北東の風が
吹いている。

今、放射性物質が原発から漏れていたら
ゆらゆらと関東平野にまで到達するかもしれない。

朝日新聞社の2011年3月14日20時27分の記事
http://www.asahi.com/international/update/0314/TKY201103140372.html
によると14日に米軍が一時退避しているらしい。
航空機や救援活動をしていたヘリコプターの乗員から
低レベルの放射性物質が検出されたからだそう。

数字が出ているところは引用。
<引用>
# 空母ロナルド・レーガンは福島第一原発から
# 北東約185キロの洋上に展開していたが、
# 他の艦船群とともに原発の風下から逃れた。
# 米紙ニューヨーク・タイムズによると、
# 試料の採取は福島第一原発から約100キロ
# 離れたところで行われており、放射能汚染が風で
# かなり広がっている可能性を示唆している。
</引用>

185km離れてても米軍が風下から移動していたところを
考えると、福島から200km程度の距離の関東平野だと
風次第では到達しかねないな。

モニタリングポスト

福島第一原子力発電所付近のモニタリングポストの値
http://www.tepco.co.jp/fukushima1-np/monitoring/monita2.html
が地震の後から更新されてない。

いま表示されている範囲は
3/9 14:40 〜 3/11 14:40
である。

福島第二原子力発電所付近のモニタリングポストの値
http://www.tepco.co.jp/fukushima2-np/monitoring/monita2.html
は多少更新されているが頻度が低い。

いま表示されている範囲は
3/11 7:50 〜 3/13 7:50
である。グラフから読むと3/12 9:00前後に
通常の値の2倍程度の値が検出されている。
通常が〜40nGy/hなのがそのときだけ〜80nGy/hになっている。

何があったのだろうか。

いずれにせよ、こういうときにデータが更新されてこそ
モニタリングポストとしての意味があるのではないだろうか。

2011/02/07

英単語の上にルビで日本語訳を表示するサービス

「ずるっこ」(http://zurukko.jp)というサービスおもしろい。
見たいページのURLの後ろにzurukko.jpって追加するだけ。
いちいち辞書を引かなくていい!

2010/11/14

万有引力定数

万有引力定数Gの値は現在のところ3桁の精度しかないようだ。
MKS単位系で、

6.67428 (0.00067) x10^-11 : Wikipedia(JP)
6.674215(0.00009) x10^-11 : J. H. Gundlach and S. M. Merkowitz
6.67234 (0.00014) x10^-11 : H. V. Parks and J. E. Faller
6.67349 (0.00017) x10^-11 : J. Luo et al.

括弧内は1σ。

4桁目で異なるのがなんとも。
各々測定方法が違っているので誤差があるのだろうが、
Gを元に計算する必要のある値は3桁目+α程度の
精度でしか信用できないということになりそうだ。

2010/10/24

csrss.exe + XS35GT に不可解が現象が発生

XS35GTにインストールしたWindows7で動作しているプロセスの一つである
「csrss.exe」 の"I/O write bytes"がどんどん増加するという
現象が起きていることに、数日前気が付いた。

マウスかキーボードを操作すると、
I/O write bytes deltaが50GBとか意味のわからん値を叩きだしていた。
実際に何かを書き込んでいるわけではなさそう。
そもそもこんな速度で書き込めるわけがない。

調べて見ると同じではないが類似の症状の人が海外にいた。
http://blog.tatham.oddie.com.au/2007/07/28/strange-server-behavior-huge-io-other-count-for-csrssexe/
まさしく「the values skyrocketed.」と表現されている通りの現象が起きている。
この人は"I/O Other Bytes" に起きており、
マウスやキーボードの操作で発生しているわけでもなさそうだが、
現象だけは似ている。


ウィルスかスパイウェアかとも考えたがウィルススキャンにも
引っかからない。セーフモードで起動するとこの問題がなくなる。

結局、2日間調べた挙句、原因が突き止められないので
再インストールしながら調べることにした。やれやれだ orz

Windows7 をインストールした直後にはこの問題は発生しない。
マザーボード付属のドライバをインストールすると発生することが判明。
一つずつアンインストールと再起動を繰り返して調べたところ、
「Driver 1.2」が原因であることが判明。
「Install Control AP」のインストール中に一緒に
インストールされるドライバのようで、
とりあえずなくても動きそうなのでアンインストールすることにする。

というわけで、XS35GTにWindows7 Professionalをインストール
するときの手順は次のようになる。

-----
1. Win7をふつーにインストール。
既にWin7がインストール済みだとパーティションが2つ見えるが
2つとも削除してからインストールする。

2. XS35GTについてきてたドライバをインストール
Install Control APのところで
- Cisco EAP-FAST Module
- Cisco LEAP Module
- Cisco PEAP Module
- ControlAP 1.2
- Driver 1.2
の5つがインストールされる。

3. 再起動する。再起動後、I/O write bytesの値
(タスクマネージャだとI/O書き込みバイト数の値)が
どんどん増えていく。

4. Driver1.2をアンインストールして再起動。
たぶんControl APが正常に使えなくなるだけで
それ以外は問題はないと思われる(ほんとかな?)。
I/O write bytesの値が0であることが確認できる。

5. ついでにNTI Backup Now EZをアンインストール。
30日間しか使えないので。
一応、再起動しておく。

6. NVIDIAのドライバをインストールし、再起動
-----
これでOK。I/O write bytesは0のまま。

さて、ここから以前の状態に復旧するのが大変だ。
先が長い…

2010/10/10

細菌が協力して抗生物質に対抗

「Bacterial charity work leads to population-wide resistance」
doi:10.1038/nature09354
によると、抗生物質への耐性が高い菌が耐性の低い菌の
生存を助けているらしい。
また、抗生物質にさらされている中では
高耐性の菌だけで構成されたグループよりも
それらとそうでない菌を混ぜたグループのほうが
増殖率が高いということだ。

低耐性の菌が死滅して高耐性の菌が残りそれらが
増殖して耐性菌だらけになると思っていたが、
どうやらそう単純ではないらしい。

ちなみに、実験で使われた抗生物質は
norfloxacin(ノルフロキサシン)とgentamicin(ゲンタマイシン)で
細菌には大腸菌(Esherichia coli)が使われているとのこと。

2010/10/09

CPU の温度

XS35GTのCPUの温度を「Core Temp」で調べてみた。
他の測定ソフトもたくさんあるのだが、Windows7で
動作するものが意外と少ない。

その温度だが、負荷なしで
室温 25℃
CPU 63℃
SSD 41℃
となった。ファンレスだとどうしても
温度が高くなるようだ。

2010/09/30

IMAX 3D

バイオハザード4を観てきました。
内容は、ゾンビが出てくるマトリックス風味の
アクション映画となっておりました。
もう、ホラーじゃないよ、これは。

それよりもIMAX 3D全然だめ。
シャッター方式でなく偏光方式の3Dのためなのか
3D眼鏡を付けても画面は明るい。
あと、眼鏡の上に3D眼鏡をかけてもずり落ちにくい。

しかーし、黒地に白の字幕が3重に見える。その理由は
左目に右目用の光の一部が漏れ、右目に左目用の光の一部が漏れているから。
そんなわけで常に字幕の左右にゴーストのように文字が分裂します。
背景が明るいときは気になりませんが、
コンテンツがねぇ、暗めですし。

さらにわずかにでも首を傾けると光の漏れが大きくなって
まるっきり3Dにならなくなる。これは、疲れる。

画面全体が横に流れるようなシーンでは全くフレームレートが
足りてません。カクカクしてます。

音に関しては低音が強く、身体にとても響きます。
音量が大きすぎて耳が痛くなるくらい。
もしかすると耳栓持ってったほうがいいかもしれません。
難聴になるよ、こんなのずっと聴いてると。

というわけで、たっかい金額払って
わざわざIMAXで3D映画を見るようなことは
全くもってお勧めできません。
上映される映画の内容によらず、ですよ。

それはともかく、バイオハザード4の3D自体の
できもお粗末でした。
無駄に3Dにしたくてしたくてたまりませんっといった感じ。
風景が写ってるシーンなんて、手前の山が
すごく立体的なのに、奥の山などはただの平面の壁に
絵が描いてあるように見えてしまう。

飛行機がおもちゃに見えるとか、
妙に近いところに見えるようにしてみるとか、
意味がわかりません。

ところどころまともなシーンもあったので、
きちんと作りこめてないってことでしょう。
3Dなんかで観ずに、DVDでも借りて2Dで観るほうが
楽しめるんじゃないでしょうか。
コストも安上がりですしね。

結局のところ、「アバター」のときとは
何もかもが大違いでした。

2010/09/25

FF XIV BENCHMARK

無謀にもFF XIVのオフィシャルベンチマークを実行してみた。

ミコッテ&解像度1280x720で実行した。
結果、
Score : 161
Load Time : 45132ms
となった。

いやぁ、無理でしょう、無理無理。
大体、実行中に画面が秒間数枚しか書き換わらないし。

HDBENCHの結果

XS35GTをHDBENCH 3.3.0.4 で測定してみた

CPU Int181369
CPU Float127253
MemoryR99646
MemoryW94639
MemoryRW174418
DirectDraw37
Rectangle1137
Text719
Ellipse567
BitBlt35

Rectangle, Text, Ellipse, BitBltが
非常に低い。なんだこれ?
最近のGPUの2D描画性能が低いというのは
こういうことなのか。

2010/09/24

XS35GT の消費電力

ワットチェッカーで測定してみた。
とても低い。

起動中 : 21W
ログイン画面 : 17W (29VA, PF=0.55〜0.59)
USB接続のDVDドライブ使用中 : 21W 最大26W
ログイン後の通常状態 : 18W
スリープ : 1W未満(表示は0W)

ちなみにACアダプタの温度は非接触温度計の表示が
正しいなら、熱い部分は通常状態で43〜45℃、
消費電力が増えると48℃くらいまで上昇。

2010/09/22

gccでライブラリ

gccで使えるライブラリ(.a)の作成方法のメモ。
以下、cygwinで試した結果。

-- a1.c --
int AAA=123;
----------
コンパイルする。
$ gcc -c a1.c

できあがった内容を見る。
$ nm -g a1.o
00000000 D _AAA

ライブラリをarで作る。
$ ar -r a.a a1.o
ar: creating a.a

できた内容をチェック。
$ nm -sg a.a
Archive index:
_AAA in a1.o

a1.o:
00000000 D _AAA

インデックスを作ったほうがリンクが速くなるらしい。
既にインデックスができてそうだが、調べた範囲では
ar -r に続いて ar -s を実行するのが通常のようだ。

そこで一応、実行して見る。インデックスを作るには、
ranlib か ar -s を実行する。この2つのコマンドは
等価とのこと。
http://www.linux.or.jp/JM/html/GNU_binutils/man1/ar.1.html

実行してみる。
$ ar -s a.a
$ nm -sg a.a
Archive index:
_AAA in a1.o

a1.o:
00000000 D _AAA

変化なし。必要なのだろうか?

最後に、できあがったa.aをリンクする。
-- main.c --
#include <stdio.h>
int main(void)
{
printf("%d\n",AAA);
}
というファイルを作って、コンパイル&リンク&実行すると、
$ gcc main.c a.a
$ ./a.exe
123

となる。

2010/09/20

ファンレス&スピンレスPC

XS35GTを入手してきました。
http://www.shuttle-japan.jp/barebone/XS35GT/

ベアボーンなので、メモリとHDDをそろえるだけ。
メモリはバルク品のSO-DIMM DDR2-800 2GB。5000円弱。
HDDは使わずSSDを使用。偶然見つけたTrim対応の
東芝製SSD THNS128GG4BBAA を3万円弱で入手。

この2つを組み込んで、ファンレス&スピンレスなPCが出来上がりました。
ACアダプタがちっこくて、だいたい 85mm×35mm×27mm の大きさです。
緑色のパイロットランプ(?)が付いてます。
体温よりは熱くなりますが、手で握ってみると
冬場ならいい感じのあったかさになってます。
温度計がないので何度なのかは不明です。


ファンレスなのでOSインストール中に固まるかもしれないと
予想してましたが、そんなことは全然なくスムーズに
Windows7 Proをインストールできました。
インストール直後の時点でディスクが10GBほど消費されてました。
OSだけで10GB程度というのは予想外に小さいですね。


とりあえずインストール直後のWindowsエクスペリエンスインデックスは

プロセッサ : 3.3
メモリ : 4.7
グラフィックス : 1.0
ゲーム用グラフィックス : 1.0
プライマリハードディスク : 7.1

ベアボーンにくっついてきたドライバをインストールすると

プロセッサ : 3.3
メモリ : 4.7
グラフィックス : 3.3
ゲーム用グラフィックス : 4.6
プライマリハードディスク : 7.1

となり、ウィンドウが半透明で表示されるようになりました。

一時、エクスプローラでファイルなどのD&Dができなくなりましたが、
原因不明のままなぜか直りました。唯一不思議な現象でした。

このベアボーンは、見た目が網網なのでちょっと気色悪いです。
見えないところに押し込めば大丈夫でしょうが、
通気は確保しなければなりません。

ディスクアクセスランプの色は青で、
電源ランプは白色です。正面からみると眩しいです。

LANが100BASE-Tなので、ファイルサーバのようなことには
不向きです。

DVDドライブは付属ではないので、持ってないなら購入しないと
OSのインストールが苦しいです。
今回は外付けのUSB接続のDVDドライブを使いました。

SSDの温度は39℃。
そんなもんかな? ファンなしだし。

2010/07/10

Axonal hotspot

脳みそにあるニューロンの話。
ニューロンのシグナルは軸索起始部(Axon Initial Segment, AIS)で
発生するが、そのAISの領域が移動したり広がったりするらしい。
http://www.nature.com/nature/journal/v465/n7301/full/4651022a.html
(Nature Vol.465, pp.1022-1023, doi:10.1038/4651022a)

ニューロンの中心からAISが遠くなると入力に対する
出力が出にくくなり、AISの領域が広がると入力に対する
出力が出やすくなるそうだ。

あるニューロンにどの軸索が接続しているか、と
それらの軸索がニューロンのどの場所につながっているか
で入力シグナルに対する出力シグナルがおおよそ
決まるのだと思っていたが、他の要因もあるとは。
まだまだ分からないことだらけだ。

2010/07/05

脳波でコミュニケーション?

プレスリリース
http://www.aist.go.jp/aist_j/press_release/pr2010/pr20100329/pr20100329.html
によると、脳波で話せる機械ができたらしい。
言葉ほど速くコミュニケーションできるわけではないし、
伝えられる種類も512種類なので言葉にしゃべらなくても
いいようになるわけでもないので、話せる人には
意味はないかもしれんが、パーキンソン病みたいに
筋肉が動かせない人には朗報かもしれん。

黙読したら別の人にその内容が伝わるくらいになったら
すごいかもしれんが、まだまだ先のことだろう。

2010/05/30

cmake その1

いろんな環境でビルドできるようにするツール、"cmake" を使ってみる。
UNIXのMakefileやVisualStudioのプロジェクトファイルなどを
作成してくれるツールである。メタメイクともいえるかもしれない。
LinuxとWindowsの両方でのビルドやVisualStudioの色々なバージョンに
同時に対応するなどを行いたいときに便利だろう。
ここではWindows環境であると想定して説明する。

まずはここからダウンロード。
http://www.cmake.org/

cygwinを使うならパッケージに含まれているので
そちらからダウンロードする。

ベースになるディレクトリをbasedirとする。
ここに test.cpp を作成する。内容は、

#include <iostream>
int main(int argc, char *argv[])
{
std::cout << "test" << std::endl;
return 0;
}
とする。同じディレクトリに CMakeLists.txt を作成する。
ファイル名はこれでなければならない。内容は、

cmake_minimum_required (VERSION 2.6)
project (Test)
add_executable(Test test.cpp)

とする。1行目はなくてもよい。
2行目はプロジェクト名に Test という名前を指定してる。
Test というプロジェクトに test.cpp というファイルを
追加するのが3行目である。

これで最小限の準備が完了した。

これらをビルドするために、Visual Studio 2010 を使うとする。
ディレクトリ basedir/vc10 を作成し、
そこにカレントディレクトリを移す。
その後、cmakeでプロジェクトファイルを生成する。

> cd vc10
> cmake -G "Visual Studio 10" ..

version 2.8.1の場合、次のファイルがカレントディレクトリに
生成される。

> dir
CMakeFiles (ディレクトリ)
ALL_BUILD.vcxproj
ALL_BUILD.vcxproj.filters
CMakeCache.txt
cmake_install.cmake
Test.sln
Test.vcproj
Test.vcproj.filters
ZERO_CHECK.vcxproj
ZERO_CHECK.vcxproj.filters

CMakeFilesの下にも多くのファイルが生成される。

Test.sln を VS2010で開いて、ビルドする。
ビルドターゲットはデフォルトで次の4つが作成される。

Debug
MinSizeRel
Release
RelWithDebInfo

ターゲットをDebugにして ALL_BUILD プロジェクトをビルドすると、

Debug/Test.exe

が生成される。これを実行すると、
test

が表示される。


同様にVisual Studio 2008用のプロジェクトファイルも簡単に
作成できる。さっきと同じようにvc9ディレクトリを作成して、
cmakeを実行する。なお、cmake実行前にVS2010は終了しておく。

> cd ..
> mkdir vc9
> cd vc9
> cmake -G "Visual Studio 9 2008" ..

VS2008で同じようにTest.slnを開いてビルドして実行すると、

> Debug\Test.exe
test

となる。

今回はここまで。

2010/04/04

シャワーヘッドに細菌が

昨年のnatureの記事
http://www.nature.com/nature/journal/v461/n7262/full/461360a.html
によると、シャワーヘッドに細菌がいることがあるらしい。
塩素殺菌されてるだろうと思いきや、塩素耐性菌が生き残るとのこと。
弱っている人は日和見感染してしまうので、気を付けよう。

2010/03/07

変な形のゆでたまご

ゆでたまごがクレーターのようになってしまった。

☆作り方☆
湯にいれるときに殻にうまい具合にひびを入れる。
白身がすこし出てくる程度にする。
白身がまとわりついて卵が浮くが、そのまま茹でる。
茹で上がったら殻をむくだけ。
(湯が卵に入り込むのでちょっと水っぽくなる)

ちなみに左は普通のゆでたまご。

2010/01/27

アバター

話題の「アバター」観てきた。
(1)3D
3Dの眼鏡がずり落ちる。眼鏡の上にかけてるからだろうけど。
もう少し、考慮してもらえるとありがたい。

普通の眼鏡でいうレンズの部分を眼鏡拭きで拭いても
油がとれない。どうなってんだか。

映像のフレームレートが低い。動きの激しいシーンでは
3Dに見えない。なにか映像がちらちらしているようになる。
今の4倍くらいはフレームレートが欲しい所。

スクリーンは大きいはずなのに、原寸大のような感じがした。
人間はそれっぽい大きさに、アバターもそれっぽい大きさに。
不思議だ。

字幕を読むのは大変。特に原住民の字幕は右端にでるので、
読みにくい。そのうえ眼鏡のせいか像が2重に見える。
字幕が映像のど真ん中に表示されてたことがあったが、
これは読みやすかった。

(2)内容?
2足歩行メカのデザインがMATRIXに出てきたやつに似てた。
だれがデザインしてもあんな感じになるのかなぁ。

髪の毛の束なのか触覚なのか触手なのかよくわからんが、
それをつなげることで原住生物間でコミュニケーションが
とれるようだ。言葉よりもっと直感的な。
攻殻機動隊の首にケーブルをさしてデータのやり取りを
するのとおんなじだね。機械的でなくて生物的だけど。

自分自身をアバターに移動させることもできるようだ。
木を介して。
肉体という入れ物があったら移れるとは…戻れそうには
なかったけど。

原住民の死んだら先祖の元に戻るって思想は
なんだか「プロバビリティー・ムーン」で出てくる
世界(ワールド)人のようだ。

透明のディスプレーいいな。かっこいいな。欲しいな。
たしかCESかどこかで展示されていたはず。
数年後にでも市場に出てきたらうれしいな。

あ、ストーリーはありきたりだよ。上で挙げた要素も
突飛すぎるアイデアでもないし。ゆえに安心してみてられる。
ゲームをこんな風に3Dでできるときっと面白いと思う。

ちなみに、スタッフロールのなかに日本人の名前を2人、日系人の名前を1人
見つけた。もっといるだろうけど、数が多すぎてギブアップ!

なにはともあれ、見る価値はあるよ、面白い。

2009/10/27

Haskell その2

今度はリストを逆順にする関数を作る。

module Main where
import Text.Printf

main = do print (reverse([1,2,3,4,5]))
print (reverse1([1,2,3,4,5]))
print (reverse2([1,2,3,4,5]))
print (reverse3([1,2,3,4,5]))
print (reverse4([1,2,3,4,5]))

reverse1 x | length x == 1 =x
| length x > 1 =reverse1(tail x) ++ head x:[]
reverse2 (x:xs) | length xs == 1 =xs++x:[]
| length xs > 1 =reverse2(xs)++x:[]
reverse3 x=foldl (flip (:)) [] x
reverse4 =foldl (flip (:)) []
最初のreverseは最初から定義されている関数で、その名の通りリストを逆順にする。
reverse1 x | length x == 1 =x
| length x > 1 =reverse1(tail x) ++ head x:[]
これは引数xの長さが1ならxをそのまま返し、xが1より大きければxの先頭の要素を除いたリストを逆順にしたリストにxの先頭の要素を連結した結果を返す関数である。
++はリストの連結を行う演算子で:はリストの先頭に要素を追加する演算子である。
[]は空リストである。
reverse2 (x:xs) | length xs == 1 =xs++x:[]
| length xs > 1 =reverse2(xs)++x:[]
この関数は、リストを引数に取り、その先頭をxに、それ以外をxsとする。
xsの長さが1のとき、xsとxを連結したリストを返す。xsの長さが1より大きいとき、xsを逆順にしたリストにxを連結したリストを返す。
xsのsは英語の複数形で、こういう命名規則なのだそうだ(がどこで見たのかは忘れた…)。
別に従わないとコンパイルが通らないというわけではない。
reverse3 x=foldl (flip (:)) [] x
この関数も引数にリストを取り、それをxとする関数である。
これもリストxを反転した結果を返す関数であるが、少しややこしい。
foldlは引数を3つ取り、第3引数のリストの左側の要素から順に処理を行う関数である。
その処理をC言語風に書くと、第1引数を+、第2引数をa、第3引数のi番目の要素をx[i]、処理結果をrとして、
r = a
for(i=0; i<length x; ++i)
r = r + x[i]
return r
のようになる。

flipは2引数関数の引数を入れ替える関数である。f(x,y)ならf(y,x)になる。
:は右側(第2引数)にリスト、左側(第1引数)に追加する要素を書くが、そのままではfoldlが演算子:を呼び出すときに左右が逆になってしまう。そこで、flipを使って逆向きにする。

以上より、引数で与えられたリストの先頭の要素から順に新しいリストの左側に追加していくという処理になっており、リストの順序が逆向きになることがわかる。

reverse4 =foldl (flip (:)) []
この関数は、foldlの第3引数が指定されていない関数になっている。つまり、reverse4は引数を1つ取る関数である。
foldlの第1,第2引数が指定されている関数であるともいえる。

ああ、ややこしい。

2009/10/25

Haskell その1

erlangはネイティブのバイナリファイルが生成できなかったので、
今度はそれができるHaskellを試してみた。

C++系統の言語とは異なりすぎているので、
なかなか慣れるまでに時間がかかる。
とりあえず、絶対値を求める関数を作った。

module Main where
import Text.Printf

main = do printf "abs -10 is %d\n" (10::Int)
printf "abs -10 is %d\n" ((abst (-10)) ::Int)
printf "abs -20 is %d\n" (absi (-20))

abst x = if x < 0 then -x else x

absi :: Int -> Int
absi x = if x < 0 then -x else x

順に説明する。調べ始めたばかりなので、
間違いが混じっているかもしれない。

 module Main where
はプログラムのエントリポイントを指定している。
C++で言うところのmain関数の名前を指定している。
 import Text.Printf
printfを使うために必要
 main = do
これ以降にメイン関数の定義を書く。
printfは書式付の関数。10::IntはInt型の数字として10を使用することを明示している。明示しないとコンパイルエラーになる。
先に、abstとabsiについて説明する。
abst x = if x < 0 then -x else x
これは、引数xを取る関数abstの定義であって、もしxが0より小さければ-xを、そうでなければxを返すことを表している。
absi :: Int -> Int
これはabsiの関数の宣言でInt型の引数を取り、戻り値の型もIntであることを宣言している。
absi x = if x < 0 then -x else x
はabsiの定義であり、内容はabstと同じ。
printfの説明に戻る。
printf "abs -10 is %d\n" ((abst (-10)) ::Int)
abstに-10を引数として渡して、得られる値を出力するということである。
-10を()で囲っているが、囲まないと-と10が分かれてしまってエラーとなる。
さらに::Intで戻り値の型を指定している。
abstは関数の定義だけを行って、型がどうなっているかの宣言を記載していないので、ここで明示しないと型が曖昧だと言われ、エラーとなる。
printf "abs -20 is %d\n" (absi (-20))
こちらは::Intが不要である。関数の宣言で戻り値がIntであることを明示しているためである。

その他、コードを書くときのルールであるが、インデントによってブロックの範囲が決められる。
タブの使用には注意が必要である。
うっかりスペース4個のタブを使うとコンパイルエラーになる。
スペース8個のタブなら問題ない。

2009/10/18

サイレンサー(ただし戦車砲の)

http://gigazine.net/index.php?/news/comments/20091018_tank_silencer/
(笑)
砲身の先にながーいのがくっつくのかと思いきや、
ぶっとい!
こんなの↓

    ■■■
    ■■■
    ■■■
■■■■■■■  □□□
■■■■■■■――□□□
■■■■■■■  □□□
    ■■■
    ■■■
    ■■■
□:戦車本体
―:砲身
■:サイレンサー

実験用らしい。当然だが。

2009/10/10

世界の大学ランキング

今年の世界の大学ランキングが出ていた。
http://www.topuniversities.com/university-rankings/world-university-rankings/2009/results

上位の大部分はアングロサクソン系。
日本の大学で100位以内を抜き出すと、
=====
東京大学 22位
京都大学 25位
大阪大学 43位
東京工業大学 55位
名古屋大学 92位
東北大学 97位
=====

時系列で、総合ランキングの順位の変化を見てみた。
下位の大学(といっても、世界で見てだが)が徐々に
順位を上げている。

分野別のデータもあったので、それらもグラフにしてみた。
まずは、自然科学。総合順位とあまり大差ない。


次に工学とITのランキング。工業大学というだけあって、
東京工業大学が順位を伸ばしている。

最後に、ライフサイエンス系。
上位3大学とそれ以外の差が大きい。
なぜだろう。資金力の差なのか!?

2009/09/23

温室効果ガス25%削減

日本は温室効果ガスを1990年を基準に25%削減するらしい。
いつも思うのだが、
(1)なぜ1990年を基準とするのか。
(2)25%削減するとどうなるのか。
の2つが報道されない。

(1)は1人あたりの排出量のほうが公平だし、
(2)は達成できても今より温暖化は進む。

もちろん、1人あたりで計算すると先進国が極めて
不利だからだろうし、達成基準なんて「えいやっ」
って決めてるだけだろう。
どうなるかの予測はしてるだろうが。

2009/02/14

テトぐるみ

消波ブロック(「テトラポッド」は商標)のぬいぐるみ。
猫の枕にいいらしい。
数十個あれば、部屋の中が海岸っぽくなるかも!?

テトぐるみの写真
http://blog.livedoor.jp/sohsai/archives/51464356.html

ここで買えるらしい。
http://www.syumatutanken.net/200810/cgi-bin/shop/main.cgi?class=all&word=%83e%83g%82%AE%82%E9%82%DD

2009/02/11

C++0xの右辺値参照

右辺値参照の詳しい説明がここに。
http://blogs.msdn.com/vcblog/archive/2009/02/03/rvalue-references-c-0x-features-in-vc10-part-2.aspx

そしてありがたいことに日本語訳がここに。
http://d.hatena.ne.jp/ntnek/20090210/p1

これでもわからなければ、記事を参照しながら
gccで色々試せばよさそうだ。

2008/12/01

円グラフの見せ方

http://www.voltagecreative.com/blog/2008/11/scary-bailout-money-info-graphic/

め、目立つ。
やってることは簡単。

1位の項目が50%を占めていて、2位以下が残りを分け合っているときには、
円グラフを二つ書いて、片方は全て同じ色に塗りつぶして1位のみに割り当てて、
もう片方は2位以下のものを記入する。
1位の円グラフの色は目立つ色がよさそうだ。

まぁ、1位が50%になるように調整するのが難しいだろうが。

2008/10/23

ARM

ARMプロセッサの概略記事があった。
http://techtarget.itmedia.co.jp/tt/news/0810/23/news03.html

かいつまんでみると、

- 命令セット(アーキテクチャ)の名前の数字とプロセッサの名前の数字が
リンクしていない。
- バージョンが上がるほどパイプラインの段数が増えている。
ARMv3のころは3段、ARMv7では13段。
- パイプラインの段数増加に伴い、分岐予測機能が追加されている。
- ARMv6以降にはSIMD命令がある。
- Javaのバイトコードをネイティブ実行できる。

といったところだ。

2008/10/19

quilt

パッチ管理用スクリプト quilt というのがある。
https://savannah.nongnu.org/projects/quilt

使い方については、このページのDownloadから一番新しい
バージョンを取得し、それを展開するとドキュメントがdoc/以下に
できるので、それを参照すればよい。


ところで、googleでquiltで調べたのではなかなか
このページには行き着けない。
本当のキルトのページに行き着いてしまう…

2008/09/30

「食指」と「触手」

http://www.asahi.com/international/update/0930/TKY200809290353_01.html
タイトルが「…に仏も触手。」なんだが、
触手?食指?後ろがないといまいち分かりづらい。

gooの辞書によれば、
# 食指が動く:興味・関心をもつ。してみたい気持ちが起こる。
# 触手を伸ばす:自分のものにしようとして近づく。
だそうで、意味が似ているし、どっちでもよさそう。

2008/09/24

ホウレンソウ

そうかぁ、「ホウレンソウ」の意味は
「優柔不断に決断を先伸ばすこと」なのか。
http://www.doblog.com/weblog/myblog/17090/2615719#2615719

笑える。
確かに、報告して、連絡して、相談、するだけだったら、
何も決まらんもんな。

2008/07/20

WinXP SP3

SP3を当ててみた。
関連付けをことごとく壊してくれた。

.aviや.mpegの関連付けmplayer2にしていたのに
Windows Media Player 9 に再度割り当てられた。

そのうえ、Explorerの関連付けの設定からでは
どうやっても変更できず、mplayer2の関連付けの
設定部分でしか関連付けの変更ができない。


いったいどういう神経してんだか…
しょうもないところでいらん変更するなっつーに。

2008/07/19

ナノテクと電波で癌治療

新しい癌の治療方法が研究されているようだ。
http://wiredvision.jp/news/200807/2008071821.html
http://peswiki.com/index.php/Directory:John_Kanzius_Produces_Hydrogen_from_Salt_Water_Using_Radio_Waves

これまでは、放射線治療や化学療法や外科的な
処置が行われていたが、この方法が治療として
認められれば、かなり画期的なのではないだろうか。

その方法とは、ナノ粒子を癌細胞まで血液に乗せて運び、
そこに電波を当てることで、電子レンジのように
癌細胞を加熱して死滅させる方法だ。

ナノ粒子を使わない方法であれば、日本でも研究はされているとのこと。
http://www.okayama-u.ac.jp/user/ra1/forefront_rfa.htm

この方法については既に米CBSテレビで取り上げられている。
http://www.cbsnews.com/sections/i_video/main500251.shtml?id=4011961n?source=mostpop_video

2008/06/15

XAML でのアニメーション

XAMLのアニメーションについて分かったことをまとめる。

(1)
アニメーションには TargetProperty の型ごとに種類がある。
 DoubleAnimation : 型がDouble用
 SingleAnimation : 型がSingle用
 Int32Animation : 型がInt32用
 Int16Animation : 型がInt16用
 ColorAnimation : 型がColor用

基本的な型に対してこれ以外にも同様に存在する。

これらは AnimationTimeline を継承しているので
以下、各型に対するアニメーションの総称として
AnimationTimeline を用いる。

(1)
AnimationTimeline を管理するオブジェクトは<BeginStoryboard>である。
これが DoubleAnimation 等で指定する TargetProperty とリンクする。

リンク前の値を AnimationTimeline は憶えていて、
AnimationTimeline が破棄されると TargetProperty は元の値に戻る。

(2)
AnimationTimeline の FillBehavior に "HoldEnd" が指定されていると、
アニメーションが終わっても TargetProperty の値は最後の値が保持される。

"Stop"が指定されていると、アニメーションが終わると
該当する AnimationTimeline が破棄され TargetProperty は元の値に戻る。

デフォルトは"HoldEnd"

(3)
同じプロパティに対してEventTrigger と DataTrigger の両方を
設定し、さらにどちらにも FillBehavior="HoldEnd" としておくと、
EventTrigger の AnimationTimeline が優先される。

一度 EventTrigger によるアニメーションが発生すると、
そのままでは DataTrigger の AnimationTimeline は実行されない。

EventTrigger同士であれば、AnimationTimeline は
新しいものに書き換えられる。

(4)
EventTrigger によるアニメーション実行後に同じ TargetProperty に対して
DataTrigger によるアニメーションを有効に機能させるには、EventTrigger による
アニメーションを StopStoryboard によって破棄する必要がある。


具体的には次のようにすれば EventTrigger と DataTrigger が共存できる。

<EventTrigger RoutedEvent="Mouse.MouseEnter">
<BeginStoryboard Name="Test1">
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
To="1.0" Duration="0:0:1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<DataTrigger Binding="{Binding XPath=@AAA}" Value="XXX">
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="Test1"/>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
To="0.5" Duration="0:0:1"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>

2008/06/07

ListBoxでのホイールイベント (XAML)

マウスホイールのイベントをListBoxで取得するには、
  MouseWheel
ではなく
  PreviewMouseWheel
を使う。

MouseWheelはボタンなど他のコントロールでは有効だが、
ListBoxに関してはなぜか反応しないためである。


具体的には、
<ListBox Width="100" Height="100"
PreviewMouseWheel="MouseWheelHandler">
<ListBoxItem Content="AAA" />
<ListBoxItem Content="BBB" />
</ListBox>

のようにする。MouseWheelHandlerはC#で次のようなものを書けばよい。
private void MouseWheelHandler(object sender,
MouseWheelEventArgs e)
{
if(e.Delta > 0)
{
//前方に回転
}
if(e.Delta < 0)
{
//後方に回転
}
}

2008/06/03

ガソリン価格

街中のガソリンスタンドの価格を見てると、
ガソリン価格がどんどん上がっている。
店頭で1Lあたり170円くらいかな?
このまま行くと200円を超えそうだ。

でも、もっともっと上がればいい。
そうすればCO2の排出量が減って長期的には環境にはよいだろう。
市場原理で環境負荷が下がるなんて、なんてうまいシステムなんだ。

さらに毎年ガソリン税を上げていったほうがいいのではないだろうか。
加速度的に環境負荷を下げれるかもしれない。

今のシステムorフレームワークで商売をしている人たちには痛い話かもしれんが、
新しく台頭してくる企業もあるだろう。

車の使用コストが上がると、車がないと生活できない田舎が問題になる。
これは解決が難しいかもしれない。

2008/05/25

プラスチック分解バクテリア

http://www.technobahn.com/cgi-bin/news/read2?f=200805242225&page=2

プラスチックを分解するバクテリアの分離ができたらしい。
こんなのが空中浮遊して大量拡散したらまるで、

「終末のプロメテウス」 ISBN-10: 4150112339

のような話になるなぁ。
この小説の内容は確か記憶では、

1. 原油流出事故が発生
2. 原油を分解するためのバクテリアを散布
3. 予想外に拡散して、車がガス欠し始める。
4. ガソリンスタンドなどからもガソリンなどが消える。
5. プラスチック製品が分解され始める。
6. ほとんどの工業製品が動かなくなる。
7. みんな原始的な生活に…

とかいう話だったはず。

2008/05/17

米国税関、PCのデータをまるまるコピー

http://www.technobahn.com/news/2008/200805161507.html
より。

米国入国時にPCを持っていると、HDDの内容を全てコピーされるようになるらしい。
もしHDDの容量が1GBくらいあったら、コピーされるまでずーっと待たされる
ことになるのだろうか。何時間もかかりそうなんだが…


そもそも、この大量のストレージを準備する予算っていくらくらいなんだろう?

というわけで調べてみた。

http://www.dhs.gov/ximgtn/statistics/publications/YrBk06NI.shtm
の"Nonimmigrant Admissions: Fiscal Years 1997 to 2006"によると

Year Total nonimmigrant admissions
1997 2億3590万人
1998 2億3570万人
1999 2億4070万人
2000 2億4750万人
2001 2億3140万人
2002 1億9320万人
2003 1億8050万人
2004 1億8020万人
2005 1億7530万人
2006 1億7510万人

なので、仮にこのうち1%がPCを持ち込むとしても、
2006年なら1,7510,0000×0.01=175,1000台

1台あたり100GB搭載しているとすると、
175,1000台×100GB=1,7510,0000GB=17,5100TB

保存期間を1ヶ月とすると、
17,5100TB/12=1,4592TB

http://gigazine.net/index.php?/news/comments/20080329_1tb_hdd/
によると、1TBのHDDが2万円を切ったとのことなので、
仮に1TBあたり1万円とすると、
1,4592万円=1.5億円。

意外と安い…
多めに考えて10倍くらい必要になっても15億円か。

2008/04/25

ハイスピードカメラ

別に宣伝するつもりはないが、
1200fps, 336×96pixel で動画の撮影ができるデジタルカメラ。
価格は10万円前後。
http://dc.casio.jp/product/exilim/ex_f1/hispeed_mov.html

なかなか面白い映像が撮れそうだ。

2008/04/19

C++考案者Stroustrup氏のインタビュー記事

「言語の進化について語る Bjarne Stroustrup 氏」
http://msdn2.microsoft.com/ja-jp/magazine/cc500572.aspx

この記事、投稿日時がどこにもないが、多分今年だろう。

<引用>
Q. C++0x の設計の進捗状況はいかがですか。
A. 現在の予定では、新しい完全な標準を6月の公式発表に向けて
決定することになっています。
12〜18か月後に新しい正式な標準が完成するでしょう。
</引用>

てことは、あと2ヵ月後くらいに公式発表されて、
来年の今頃から9月ごろにはC++0xがC++09として発表されるということだ。

対応したコンパイラがいつ出てくるのか分からんが、
当初は変な実装が溢れるのだろうなぁ…

農業ビル

http://labs.cybozu.co.jp/blog/akky/archives/2008/04/vertical-farm.html
経由で
http://www.treehugger.com/files/2008/04/vertical-diagonal-farm-in-new-york.php

いろんな農業ビルのアイデア。
重なった部分の太陽光をどうするのかわからんが、
緑化と食料生産が一緒にできるのはよさげだ。

でもビルに食料生産機能をいれるだけなら、
「もやしビル」でもよさそう。
元々工場で作ってるし。

http://www.moyashi.or.jp/mamechisiki/02/02.htm
http://www.asahibsn.co.jp/info/fac_utihara.html

2008/03/30

2.5inch HDD

空間効率を上げるために、GB単価を無視して
BAFFALOの2.5インチのディスク(HD-PS500U2-BK)
を購入。

入っていたHDDの型番は
「Hitachi HTS545050KTA300」

価格は37620円。
バルクの3/29時点のkakaku.comでの最安値は32,800円なので、まぁまぁの値段だろう。

購入時のFAT32フォーマットでのサイズは 499,983,122,432 バイト。
NTFSにすると500,022,378,496バイトになった。

2008/03/22

携帯電話の持ち手

携帯電話をどちらの手で使っているのだろうと
いろんな人を観察していたのだが、
どうやら右手で操作する人が多いようだ。

日本では右利きが多くを占めているので、
そこから類推するに

右利きの人→携帯の操作は右手
左利きの人→携帯の操作は左手

となりそうだ。


意外だ…


電話の延長で考えると、利き手はメモを取ったりするのに使うので
電話(受話器)は左手で持つと思われる。
だから携帯電話は左手で操作する人が多いと思っていたのだが、
多くの人はそういう考え方ではないらしい。


ということは、電話に出るときは左手で持って、
端末として使うときは右手で持つということか。
なんとまぁ忙(せわ)しない!

2008/03/15

液体アタック

どうやら液体アタックは生産を停止したようだ。
在庫限りの模様。
近くの店にはもうない…

似たのを探すため&花王のサイトに細かい表示がないので、
とりあえず現物の容器等に記載の成分等をメモしておく。

-----[液体アタック つめかえ用]-----
品名:洗濯用合成洗剤
用途:綿・麻・合成繊維用
液性:弱アルカリ性
成分:界面活性剤[41%、ポリオキシエチレンアルキルエーテル]
   安定化剤
   抗菌剤
   分散剤
   アルカリ剤
   pH調整剤
   酵素
使用量の目安:洗たく機/水30Lに20ml(キャップ30Lの線まで)
       手洗い/水5Lに3ml(料理用小さじ1杯弱)

正味量:500ml
蛍光増白剤、漂白剤は入っていない。

別の欄には、
・ニオイの原因となる汗・皮脂汚れを落とし、イヤなニオイを残しません。
・抗菌剤配合。菌の繁殖を抑え、タオルや衣類のイヤなニオイを防ぎます。
・蛍光増白剤が入っていないので、きなりや淡色衣料も安心。
・色あせ防止成分が濃色・色柄も大切に洗います。
-------------------------------------

最初に買ったいれものの表示もメモ
-----[液体アタック]----------------
品名:洗濯用合成洗剤
用途:綿・麻・合成繊維用
液性:弱アルカリ性
成分:界面活性剤[44%、ポリオキシエチレンアルキルエーテル]
   安定化剤
   分散剤
   アルカリ剤
   pH調整剤
   酵素
正味量:640ml

別の欄には、
・ニオイの原因となる汗・皮脂汚れを落とし、イヤなニオイを残しません。
・防臭成分配合。菌の繁殖を抑え、タオルや衣類のイヤなニオイを防ぎます。
・蛍光増白剤が入っていないので、きなりや淡色衣料も安心。
・色あせ防止成分が濃色・色柄も大切に洗います。
-------------------------------------

途中で界面活性剤の割合が44%から41%に減っている。

あと「防臭成分」がいつのまにか「抗菌剤」に変わっている。
きっと中身は同じで表現を変えたのだろう。

2008/03/12

ゴンドラの飾り

昨日の続き…

前から調べたところ、ゴンドラの両脇についている飾りは
ARIA 6巻の扉絵と裏表紙の晃の乗っているゴンドラが最初っぽい。
両脇に白い馬が付いている。

他にも見ていると、どうやらゴンドラによってデザインが違うらしい。
灯里のゴンドラはARIA 8巻のNavigation 36で新しいゴンドラに
代わっているが、このときにデザインが代わっていて、
両側に狐みたいなのがついている。

気がつかなかったなぁ。
他にもあるかもしらん。

2008/03/11

狐?

昨日(10日)がARIAコミック最終巻の発売日。
そして初めて気が付いた。
黒いゴンドラの両脇に狐のような飾りがつけてあることに。

いったい、いつから付いたのだろう。

2008/02/23

ノルウェーで地震

http://www.reuters.com/article/scienceNews/idUSL2173668320080221

ノルウェーのSvalbard列島で地震があった。
記事によるとノルウェーでは史上最大規模の地震だったが
被害はなかったとのことだ。

とはいってもマグニチュード6.2だから
日本からすると大きな地震というほどでもなさそう。

Svalbardの場所は
http://maps.google.co.jp/maps?f=q&hl=ja&geocode=&q=Svalbard&ie=UTF8&ll=78.716316,19.335938&spn=4.428642,30.102539&t=h&z=5

ノルウェーからずいぶん北のほうの島だ。
寒そう…

暗号化ディスクのキーを奪う方法があるらしい

http://blog.livedoor.jp/dankogai/archives/51006737.html 経由で見つけた。

概要と動画
http://citp.princeton.edu/memory/

Full paper, "Lest We Remember: Cold Boot Attacks on Encryption Keys"
http://citp.princeton.edu.nyud.net/pub/coldboot.pdf

これによると、
1. 電源コードを引っこ抜いてPCの電源を切る
2. すぐに冷却する。これでメモリの内容が10分程度では消えなくなる。
(冷却しなくても数分は保持される)
3. USBディスクなどから別のOSを起動し、メモリの内容を全て記録する
4. そこから暗号化キーを探し出す
5. 見つけた暗号化キーを使って暗号化されたディスクの内容を読む

これが数分でできるらしい。
有名どころのディスク暗号化ツールにも有効らしい。
メモリにも重要な情報は記録してはいけないということか…

2008/02/13

bird flu in Bangladesh

http://www.reuters.com/article/scienceNews/idUSDHA28533120080211

バングラデシュでまだ鳥インフルエンザが拡がっているようだ。
いまのところ鳥→鳥のインフルエンザだが、鳥→人が起きる前に終息してほしいな。

2008/02/08

boostライセンスがOSIに承認されました

boost libraryに適用されているBoost Software License (BSL1.0)がOSIに登録になりました。
http://opensource.org/licenses/alphabetical

アナウンスメールはBoost Digest, Vol 2088, Issue 4 Message 8の
Wed, 06 Feb 2008 14:02:04(-0500)にDavid Abrahams氏より投稿されています。
http://lists.boost.org/Archives/boost/2008/02/133103.php

申請から登録まで数年かかったようです。

2008/01/20

コンタクトレンズ型ディスプレイ

ディスプレイを目につけるみたいなものだな。
http://www.technobahn.com/cgi-bin/news/read2?f=200801181400

しかし目に付けるわけだから、静止画を表示した場合には
網膜上の同じところに常に同じ光が当たってしまうことになる。

そうすると固視微動が機能しなくなるので、
静止画は見えなくなってしまうのではないだろうか?

2008/01/06

HDD

購入HDDの中のHDDの型番調査
どちらも HD-HS500U2

価格は8月は21400円、12月は17800円でずいぶん値下がりしている。
型番は
8月 ST350063 0AS
12月 SAMSUNG HD501LJ
だった。
やはり毎回毎回中身が変わる。

2008/01/04

MercurialをWindowsで

分散リポジトリのバージョン管理システム
Mercurial ( http://www.selenic.com/mercurial/wiki/ )
がWindowsのExplorerから直接使えるようになるようだ。

TortoiseHg
http://tortoisehg.sourceforge.net/

TortoiseCVSやTortoiseSVNと同系統のものだが
開発者が同じかどうかまでは未調査…

2007/12/09

英語の冠詞の使い方

英語の冠詞の使い方の分かりやすい説明があったので、メモ。

http://code.nanigac.com/source/wiki/view/398
http://diary.hykw.tv/index.php/category/english/
これによると、
> a,an : インスタンス生成
> the : 既存のインスタンスへのポインタ
> 冠詞なし : クラス
と考えればよいらしい。

OOPなプログラミング言語を知っている人には
分かりやすいのでは?

2007/11/22

バイオハザード3

邦題「バイオハザード3」を観た。
これまでと同じく雰囲気はゲームのそれと同じ。
日本風のじめじめとした怖さでもなく、
いわゆるホラーという怖さでもない。
変化の激しさとでもいうのだろうか、
扉を開けると…、暗い部屋を少しずつ進むと…
何か出てきそうとつい身構えてしまう。
それがはずれのときもあれば、そうでないときもあるし、
思わぬタイミングのときもある。
そういう怖さは十分あった。

ただ、アリスの設定はどうかと思う。
なんというか、「Matrix」を髣髴とさせるというか。
観ていて、「えーそんなんありかよ」と言いたくなる。

また、最後の盛り上がりが欠けていた。
息切れしたのか一定の時間に収めようとしたのかネタ切れなのか分からんが。
次に何が起きるか簡単に読めてしまったら
「怖さ」が出ないじゃないか!!

まぁ全体的にみれば、十分面白いんじゃないかな。
少なくともゲームをやったことがある人なら。

2007/11/18

ランダムウォークで目的地にたどり着くのは何時?

複雑媒質中の平均初到達時間(First-passage time)の評価ができる一般理論が開発された.
(First-passage times in complex scale-invariant media, Nature 450, 77-80)
http://www.nature.com/nature/journal/v450/n7166/full/nature06201.html

この理論では不規則媒質(disordered media),フラクタルや
スケールフリーネットワークに適用できるらしい。

これよりも平均で早く到達するなら適当に移動するより効率が良いということが分かるわけかな。

2007/11/04

生物系でのLevy flightの存在に疑問が

ワタリアホウドリ(wandering albatross)と鹿(deer)とマルハナバチ(bumblebee)の
探索戦略がlevy flight(http://en.wikipedia.org/wiki/L%C3%A9vy_flight)に従う
との証拠に疑問が呈されている.
http://www.nature.com/nature/journal/v449/n7165/full/nature06199.html

この調査では1992年に行われた調査よりも高精度にアホウドリの飛行時間を
記録できる装置を使用している.その結果,飛行時間の確率分布が
shifted gamma distribution :
f(t)=r^s y^(s-1) e^(-ry)/Γ(s)
に従うことが示された.
指数項は,飛行時間が十分に長くなるとその確率分布が
ポアソン分布に従うことを示している.

2007/11/03

マインスイーパーのチート

WinXPのマインスイーパーのチート。

http://www.geekpage.jp/blog/?id=2006/12/17
によると、
1. マインスイーパーを起動
2. 「xyzzy」と入力
3. シフトキーを1秒以上押す。

これで爆弾のないところにマウスカーソルを持っていくと、
"デスクトップ"の左上に1ドットの白い点が表示される。
爆弾があると白い点は表示されない。

2007/10/27

近接連星系での最大の質量を持つブラックホール見つかる

太陽質量の15.65(±1.45)倍のブラックホールが近接連星系で発見された。
http://www.nature.com/nature/journal/v449/n7164/full/nature06218.html
これまでに知られている中では最大の質量のもので、
近傍銀河のMessier 33(M33)の連星系M33 X-7に存在している。
連星系を構成するもう一方の星(伴星)の質量は太陽質量の70.0±6.9倍であり、
ブラックホールはこの星の周りを3.45日周期で回っている。
ブラックホールの質量が観測できたのは、この連星系が食連星であったためである。
つまり、連星系が回転している平面をほぼ真横から観測しているということになる。

なお、単に質量の大きいブラックホールであれば他にも存在が予想されており、
例えば、銀河中心に存在していると考えられているものがある。
その質量は太陽質量の10の6乗倍から9乗倍にもなる。

2007/09/05

トランスフォーマー

ハリウッド映画のトランスフォーマーを見てきた。
内容は金のかかったコメディといえそうだ。

CGの出来はなかなかのものだし、
米軍機がいくつもでてくる。F22やAC130などなど。

ただ、ストーリーが軽い。とっても軽い。
そう感じる原因は、おそらくあのちっちゃい
ディセプトロンのロボットだろう。
動きもしゃべり方もどこかでいそうな
ノリの軽いやつだからだ。

というわけで、きれいなCGを見たければ価値があるかも。