アマゾンの創業者ジェフ・ベゾスの定義するアマゾンとは?
- 顧客を最優先に考え、そこから逆算して何ができるかを考える。そのために必要な技能を取り入れ、必要な技術を開発する
- 私たちは、開拓者だ
- 長期的な視野に立つ努力を惜しまない
-
「Cupidは愛のいたずらをするけれど、-
わたしのKewpieには愛だけを運んでほしい」
ローズ・オニール
data Particle = Particle { pos, vel :: {-# UNPACK #-} !Vector3, mass, rho, prs :: {-# UNPACK #-} !Scalar }のようにします。
output $ take (read (n!!0)) $ simulation ps0の部分です。
[Particles]->[[Particles]]となっていて、粒子の初期状態を引数にとり、各ステップでの粒子の状態をリストで返します。
display $ simulation ps0
for ( int i = 0 ; i < n; i++ ) { output_particles( p_ps, i ); simulation( p_ps ); }のように、forループの中にシミュレーションと出力を書くことになり、お互いが強く結びついてしまいます。遅延ストリームをなら、このように強く結びつくことを避けられます。
open Lazy;; type 'a stream = Nils | Cons of 'a * 'a stream lazy_t;; let rec stream_take (n : int) (s : 'a stream) : 'a stream = match (n,s) with | (_,Nils) -> Nils | (0,Cons(x,_ )) -> Nils | (n,Cons(x,xs)) -> Cons(x, lazy(stream_take (n-1) (force xs)));; let rec simulation ps = let ps' = calc_amount ps (mk_neighbor_map ps) in let ps'' = advance ps' (mk_neighbor_map ps') in Cons(ps, lazy(simulation ps''));; let main = let n = int_of_string (Sys.argv.(1)) in print_number_of ps0; stream_output (stream_take n (simulation ps0));;のように書くことができます。
思考をそのまま落とせるHaskellでプロトタイプを作る→速度の速いC++で書き直すというフローを組みたいんだけど、それにしても遅すぎる。せめてC++の3倍くらいで済んで欲しいなぁ。あと、Haskellの書きやすさを損なうような方法はとりたくない。(けど、レンダリングの時間も含めて考えたら、シミュレーションは速くても遅くても関係ない、というケースはあるなぁ)
M-x goto-line 行番号とする。
(global-set-key "\C-x\C-g" 'goto-line)と書いておくと\C-x \C-gで行ジャンプできるのですごく便利。
$ ghc --make -O sph.hs
$ ./sph 300
$ ocamlopt -pp 'camlp4o -parser Camlp4ListComprehension' -o sph sph.ml
$ ./sph 300
$ g++ -O2 -o sph sph.cpp
$ ./sph 300
▼C++
$ time ./sph 30
real 0m6.367s
user 0m4.916s
sys 0m0.157s
▼OCaml
$ time ./sph 30
real 0m11.718s
user 0m9.461s
sys 0m0.241s
→ cppの約2倍
▼Haskell
$ time ./sph 30
real 1m23.961s
user 1m2.786s
sys 0m2.169s
→ cppの約15倍
On PowerBook G4 1.5GHz (Mac OSX 10.4.11)
p = k(ρ - ρ0)としている(kは定数)。ρ0を引く理由としてMullerらは、
... Since pressure forces depend on the gradient of the pressure field, the offset mathematically has not effect on pressure forces. However, the offset does influence the gradient of a field smoothed by SPH and makes the simulation numerically more stable. ...と述べている。
... In astrophysics applications, pressure forces were often combined with gravitational forces balancing the expansion phenomenon.とある。
In contrast, we would like to animate materials with constant density at rest. Consequently, the material sould exhibit some internal cohesion, resulting in attraction-repulsino forces as in the Lennard-Jones model. ...
おととい入れてみたClickTale。
2日で1週間分のレコーディング数を使い切ってしまった…。これじゃ使えないなぁ。
1人1人のユーザの動きを追える素晴らしいツールなんだけど、月$99は払えないや。
自分で作ろうか??
ClickTaleはユーザのマウスの動きをレコーディングしてくれるアクセス解析ツールで、レコーディングされたマウスの動きを再生できる。
再生機能で1つ気になったのが、再生したときのページ読み込みが解析対象ページに埋まっているGoogle Analyticsで計測されてしまわないかという点。
Analyticsで確認してみると、ClickTaleからのアクセスは計測されないみたいでよかった。
▼変え方
- サムネイルにしたいタイミングでムービーを停止する
- ムービーを右クリック
- 「ポスターフレームを設定」を選ぶ
紀元前265年、シチリア半島の東端に位置するメッシーナは、南に位置するシラクサから攻め込まれていた。次はいよいよポエニ戦役の始まり!
メッシーナは、海峡を挟んで対岸にあるローマへ救援を求める。頼られたローマは迷ったあげく、クラウディウス率いる軍を派遣した。
ローマはシラクサ、カルタゴを撃破。シラクサとは同盟関係を結ぶことでシチリア島に影響力を伸ばすことに成功する。
しかし、これによってカルタゴの勢力圏と直接接することになり、その後のポエニ戦役へと繋がっていく…