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フレームワークで商売をしている人たちには痛い話かもしれんが、
新しく台頭してくる企業もあるだろう。

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