2008年9月23日火曜日

ページのデザイン



記事は左、プロフィール欄なんかは右。
理由はブックマーク開きっぱなしだと、記事が真ん中に来るから。





極座標変換



メモ。
というより、パワポの数式モードを使いたくなかったので、
ここで編集して、画像形式でコピペしたかっただけ。

デカルトxy座標から極座標に変換(対象の座標をxy座標ではなく、原点からの角度と距離で表す)

rを求める。
x = rcos¥theta
y = rsin¥theta

cos¥theta = ¥frac{x}{r}
sin¥theta = ¥frac{y}{r}

cos^2¥theta + sin^2¥theta = (¥frac{x}{r})^2 + (¥frac{y}{r})^2 = 1
x^2 + y^2 = r
r = ¥sqrt{x^2+y^2}
-----------------
¥thetaを求める

tan¥theta = ¥frac{y}{x}
¥theta = arctan(¥frac{y}{x})

ただし、画像は左上端の座標が[0,0]で、y軸の方向が下向きなので、
画像変換の場合はyの符号を反転させる。
arctan(¥frac{-y}{x})





2008年9月18日木曜日

firemacsアドオン



https://addons.mozilla.org/ja/firefox/addon/4141

欲しいと思っていたものが!!!!
もうこれ無しでネットはできない。
C-f,C-b,C-a,C-e,C-k,C-y辺りがないと死んでしまう。

ただエントリーやmixiを書いてたら、反射的にC-x C-sしてしまうw
コード書いてるときから自動バックアップにしてこの癖自体を治したほうが良いのかな。

あと、C-vで1ページ分下にスクロール、M-vで上にスクロールが非常にやり難いと思っていたけれど、下スクロールはスペースキーにするとM-vで上スクロールがとても快適だった。
(Altは無変換と交換)





2008年9月16日火曜日

計算機プログラムの構造と解釈 問題1.8



立方根をとるNewton法の手続きを作成
立方根の近似は¥frac{x/y^2+2y}{3}の繰り返しで獲られる。



(define (cube-root-iter guess x)
(print guess)
(if (good-enough? guess x)
guess
(cube-root-iter (improve guess x) x)))


(define (good-enough? guess x)
( < (abs (- guess (improve guess x) )) (* guess 0.001)))


(define (improve guess x)
(/
( + (/ x (square guess)) (* 2 guess) )
3))

(define (square x)
(* x x))

(cube-root-iter 1.0 8)



square root -> sqrt は数学用語でもあるから良いけど、cube root -> curt はどうかと思ふ。

追記
(/ x (square guess))

(/ x guess guess)
でも良い。
ちょっと新鮮。





計算機プログラムの構造と解釈 問題1.7




非常に大きいxや、小さいxに対して、平方根をとる場合の対策。
(大きすぎる値は無限ループになる)
(平方根に近づいていく)予測値guessの次の予測値との差をとる。
このときしきい値をguess*0.001と、guessを基準にして相対値で比較しないと、非常に小さい数に対応できない。



(define (sqrt-iter guess x)
(print guess)
(if (good-enough? guess x)
guess
(sqrt-iter (improve guess x) x)))


(define (good-enough? guess x)
( < (abs (- guess (improve guess x) )) (* guess 0.001)))




追記
(if (good-enough? guess x)

(if (good-enough? guess (improve guess x))
にして、
(define (good-enough? guess x)
( < (abs (- guess (improve guess x) )) (* guess 0.001)))

(define (good-enough? guess next-guess)
( < (abs (- guess next-guess )) (* guess 0.001)))
にしたほうが解りやすいか。

こういう配慮が上手くできるようになりたいなぁ。



(define (sqrt-iter guess x)
(print guess)
(if (good-enough? guess x);(if (good-enough? guess (improve guess x))
guess
(sqrt-iter (improve guess x) x)))


(define (good-enough? guess x);(define (good-enough? guess next-guess)
( < (abs (- guess (improve guess x) )) (* guess 0.001)));( < (abs (- guess next-guess )) (* guess 0.001)))





計算機プログラムの構造と解釈 問題1.6



特殊形式ifを使わずに、condでnew-ifを定義した場合、
以下のニュートン法の手続きはどうなる?


ニュートン法


xの平方根の予測値yがある場合、yとx/yの平均を採る。
これを繰り返すことで、平方根の値に近づく。
x=2,y=1のとき

x/y = 2/1 = 2
y'=(y+x/y)/2 = (1+2)/2 = 1.5


x/y' = 2/1.5 = 1.3333
y''=(1.5+1.33333)/2 = 1.4167


x/y''=2/1.4167=1.4118
y'''(1.4167+1.4118)/2= 1.4142


new-ifを用いたニュートン法



(define (sqrt-iter guess x)
(new-if (good-enough? guess x);good-enough?の真偽に関わらず偽の場合のsqrt-iterが展開される
guess
(sqrt-iter (improve guess x);ここが無限展開ループ
x)))

(define (new-if predicate then-clause else-clause)
(cond (predicate then-clause)
(else else-clause)))

(define (good-enough? guess x)
( < (abs (- (square guess ) x )) 0.001))



作用的順序では、まず引数をすべて展開するので、good-enough?の真偽に関わらず、
sqrt-iterが展開され続けて無限ループに陥る。





2008年9月14日日曜日

家族用にEeePC4G購入



色はピンクです。
重量は1.1kgで、思ったより軽かったです。たぶんサイズが小さいくて厚めなせいもあると思います。(大きいとテコの原理で重い)

んで、他は悪いとこのほうが多かったです。
・まず処理速度は至って普通。ほんとに普通。
・んで、爆熱。
・そしてキーボードが小さいので打ちにくい。
・液晶サイズもやっぱ7インチはきつい。

でもエクセルとワードをたまにしか使わない家族用で36,800円なら十分、といった感じ。

EeePCを元に、やっぱ自分は10インチ以上は欲しいな、と思いました(ぶっちゃけ、人柱)




2008年9月13日土曜日

アニメでハマる→原作で萎える



ソウルイーターが面白いのでアニメの最新話まで全部みました。
途中で面白くない回もあるのですが、まぁそれはいいんです。
んで、原作のマンガのほうなんですが、

絵が・・・・

カラーはいいんですが、なんでモノクロになった途端にあんなに軽くなるんだろう。
amazonみたら酷評されてました。


あと絶望先生もアニメのほうが面白い。
マンガのほうは、パラパラみてるだけで、気が向いたら真面目に読んでます。





2008年9月11日木曜日

計算機プログラムの構造と解釈 1.1.6 問題1




問題1.4


以下の挙動の確認



(define (a-plus-abs-b a b)
((if (> b 0) + - ) a b ))

(a-plus-abs-b 5 -5)
10

(a-plus-abs-b -5 5)
0



問題1.5


現在使用している処理系が作用的順序の評価なのか、正規順序の評価なのかをテストする手続き。



(define (p) (p))

(define (test x y))
(if (= x 0)
0
y))

(test 0 (p))



わからん・・・・・。
SICP解答

あ、なるほど。
作用的の場合、演算子、非演算子を先に評価するので(p)が評価されるけれども、
(p)は再帰呼び出しになってるので無限ループして処理が終わらないと。

んで、正規順序。
「完全に展開し、簡約する」と覚えていたんですが、いざ展開しようとするとできませんでした。
自分的には「その値が必要になるまで、被演算子を評価しない」のほうが頭の中で使いやすいようです。
(test 0 (p))

(if (= x 0) 0 (p))
となって、ifが評価されて、(p)の出番がないまま答えがでる、と。

なるほど、なるほど。





2008年9月8日月曜日

夏服はポケットがなくて困る



もう夏も終わるのに何いってるんだという感じのエントリーですが、まぁ毎年やってくるので良し。
で、本題。
ポケットがある服を着ればいい、と言われてしまえばそれまでなんですが、
そうじゃない服もあるし、いろいろ詰めるとパンパンになってかっこ悪い。
(これが冬服だと、ポケットに詰め込んでも外見に変化がない)


解決策は、
・ポケットの代わりにカバンを持つ
・所持品の軽量化
が考えられます。


カバン編


自分はとてもカバン嫌いなのですが、便利なものがあるなら使ってみたいです。
で、以下が要求スペック。


・サイズはB5未満とB5サイズ(本を持ち運ぶときと、そうでない時の使い分け)
・肩に掛けるタイプは、紐が気になって仕方ないので×
・リュック系はダサいので×
・手提げはダルいので×
・ハンカチ、ティッシュなどの取り出しが簡単なこと
・カバンの口が閉まること


うーん、これは、腰固定型のポシェットってことになるのかなぁ??
あれもファッション的には好きではないのですが。


所持品の軽量化編


自分が普段持ち歩いているのは、
鍵(家、研究室、チャリ)と財布と、携帯電話です。
これを順に、ズボンの右後ろポケット、左後ろポケット、左前ポケットに入れています。
パンパンなので、座ったときや階段を登るときなどに邪魔です。


軽量財布にはJimi walletがありますが、自分には容量が少ない。
しかし、こういうデッドスペースがない財布というのは良いと思います。
一番大きい1万円札は寸法 縦76mm、横160mmなので、これを半分に折ったら縦76mm、横80mm。
カードはもう少し大きいので縦76mm,横90mmの財布をJimi Walletと同じ素材でかっちり作ったら便利そう。


携帯電話も薄くて小さいやつありますから、Jimi Wallet風財布の中に携帯電話も入るようにしておく。
取り出しはワンプッシュで飛び出すタイプがいいかな。


鍵も財布に入れたい。
まぁ鍵はストラップみたいにすればいいのかな。でもkey-portみたいな発想でもありかも。


番外編


デッド…スペース?





2008年9月2日火曜日

Ruby-RHG



RHGという単語がわからなかったので、検索。
Ruby Hacking Guideの略だった。へぇー。

Rubyはとても読みやすいし、日本語が充実してるんですが、Perlの方が好きなのであんま使いません。
Perlのほうが混沌としてて、好きなんです。あの無駄なものを日夜生成し続ける文化が。
Rubyは優等生って感じ。

あくまで好みの問題なんでしょうねー。
そう思うと、LispがNo.1言語だ!って書いてたあの本は、壮大な釣りだったような気がする。