/var/log/hdk.log

2014 年 10 月下旬


20 (月)

%1 vbox

innotek が Sun Microsystems に買収される前から VirtualBox のユーザーであるが、某電子掲示板で最近不安定だという話が話題なので、自宅の Windows PC で試してみた。 そしたら、やはり、バージョン 4.3.14 ではエラーになって VM を開始できない。 へぇー。Web 検索したら、バグ報告が見つかった:

#13187 (VirtualBox 4.3.14 can't start VMs on certain Windows hosts) - Oracle VM VirtualBox

これを見ると 4.3.16 や 4.3.18 でも動かないという書き込みもあるし、4.3.16 はだめだったけど 4.3.18 は大丈夫だという書き込みもある。 自宅の PC では 4.3.14 だけがだめなパターンである。 なお、4.3.6 くらいから全然アップデートしていなくて (そもそも使ってなくて)、アップデートの確認を実行して出てきたのは 4.3.12 だったw

Sun Microsystems も買収されたので、VirtualBox はいまや Oracle 提供のフリーソフトウェア製品のひとつとなっているが、多少不安定なままでも頻繁に新バージョンが提供されるのは相変わらずである。 前よりは開発ペースは落ちたかな? 品質的には良くも悪くも変わらないというか...

2014/10/20 のコメントを読む・書く


21 (火)

%1 円周率

最近なぜか円周率を求める方法を考えていた。 何とか級数とかそういうのは使わず、もっとも基本的な円の方程式 x^2+y^2=r^2 を利用し、ラスターグラフィックスで円を描く要領で、円の内側の画素数を数え、面積を求めれば、みんな知ってる円の面積の公式 pi*r^2 から、円周率を求められるという風に考えた。 プログラムとしては、円の 1/4 の面積を整数演算で求めるものを作ってみた。 半径を 10 の倍数の 2 倍とすることで、円周率に 10 の倍数をかけた数字が見えるというわけ。 あと、誤差を考えて、絶対にこれより小さくはならないという最小値と、これより大きくはならないという最大値を求める。

function hoge(n)
{
    var rr = n * n;
    var y1 = 0, y2 = 0, y3 = 0;
    var sum1 = 0, sum2 = 0, sum3 = 0;
    var x1 = n - 1, x2 = n - 1, x3 = n - 1;
    while (y1 <= x1 || y2 <= x2 || y3 <= x3) {
	if (y1 <= x1) {
	    sum1 += x1 + 1, y1++;
	    if (x1 * x1 + x1 + y2 * y2 + y2 >= rr)
		x1--, sum1 += y1;
	}
	if (y2 <= x2) {
	    sum2 += x2 + 1, y2++;
	    if (x2 * x2 + y2 * y2 >= rr)
		x2--, sum2 += y2;
	}
	if (y3 <= x3) {
	    sum3 += x3, y3++;
	    if ((x3 + 1) * (x3 + 1) + (y3 + 1) * (y3 + 1) > rr)
		x3--, sum3 += y3;
	}
    }
    print ("1 "+(sum1 - y1)+" "+ x1+" "+ y1);
    print ("2 "+(sum2 - y2)+" "+ x2+" "+ y2);
    print ("3 "+(sum3 - y3)+" "+ x3+" "+ y3);
}
hoge (scriptArgs[0]);

SpiderMonkey 用。 性能も何も考えてない大変いい加減な実装で、まだ間違えている気がするが、一応それっぽい感じの答えが出る。

$ smjs aa.js 200000000
1 31415926652204720 141421355 141421357
2 31415926735023224 141421355 141421357
3 31415926193626148 141421354 141421356

1 が近似値のつもり、2 は最大値、3 は最小値。 ただ、このやり方は、桁が増えるごとに大きな値を扱わなければならなくなるので、無理数を求める方法としては大変いけてない感じである。 でも平方根だって、開平法で求めるとどんどん桁が増えるんだったっけ。

2014/10/21 のコメントを読む・書く


22 (水)

%1

以前書いた円を描くプログラムは普通にかけ算をやっていたが、(x+1)^2=x^2+2*x+1 を使って計算を簡単にすれば、かけ算は不要になる。 いや、てっきり最初にかけ算は必要なんだと思い込んでいたが、完全に不要だった。

<!DOCTYPE html>
<canvas id=a width=500 height=500><script>
function p(x,y){document.getElementById('a').getContext('2d').
fillRect(250+x,250+y,1,1);x>0&&p(-x,y);y>0&&p(x,-y)}
for(a=x=r=200,y=0;x>=y;){
a-=y+y+1;
p(x,y),p(y++,x);
if(a<0)a+=x--+x-1;
}
</script>

開始時点では r*r==x*x なので、大小比較にあたっては r*r を計算する必要はない。 以前思いついたアルゴリズムでも r*r をやっていたので、それよりいい感じ、っていうか、この時のコンピュータグラフィックス基礎の授業で習ったアルゴリズムはかけ算使ってなかったかな... たぶん 2 乗はしてなかったんだろうな... やっぱり自分で導き出した方法のほうが頭にこびりつくようだw

2014/10/22 のコメントを読む・書く


23 (木)

%1

今日の最高気温は摂氏 15 度にも達しなかったみたいで、肌寒い日。 東京電力のでんき家計簿を見れば、あと 1 か月くらいはエアコンを使わずに生活するであろうことが予想できる。

電気使用量グラフ!

%2 Pi 遊び

おとといの奴をちょっと直して、90 度までの代わりに 30 度まで求めて 3 倍するようにとか、きのうの話を絡めて計算量を減らしたりとかした。

function hoge (n)
{
    var rr = 0;
    var sum1 = 0, sum2 = 0, sum3 = 0;
    var x1 = n - 1, x2 = n - 1, x3 = n - 1;
    var xx1 = -2 * n + 1 + x1, xx2 = -2 * n + 1, xx3 = 0;
    var hn = n / 2;
    for (var y = 0; y < hn; y++) {
	if (xx1 >= rr - y)
	    xx1 -= x1-- * 2;
	sum1 += x1 + 1;
	if (xx2 >= rr)
	    xx2 -= x2-- * 2 - 1;
	rr -= 2 * y + 1;
	sum2 += x2 + 1;
	if (xx3 > rr)
	    xx3 -= x3-- * 2 + 1;
	sum3 += x3;
    }
    print ("1 "+(sum1-x1*y/2)*3+" "+x1);
    print ("2 "+(sum2-x2*y/2)*3+" "+x2);
    print ("3 "+(sum3-x3*y/2)*3+" "+x3);
}
hoge (scriptArgs[0]);

実行結果はこんな感じで、JavaScript の変数って C の double 型相当の浮動小数点なんだっけ? 下のほうの桁に限界が見えてきている。

$ smjs b.js 200000000
1 31415926663219030 173205080
2 31415926703398370 173205081
3 31415926323022200 173205079

2014/10/23 のコメントを読む・書く


24 (金)

%1 まったり休暇

休暇。 自宅でまったり過ごした。

以前逆流性食道炎に似た症状が出たことがあったが、最近再発している感じである。 寝る時に頭を高くしてればいいという対処法がわかってしまっているので、吐いたりはしなくて済んでいるけど、仮に逆流性食道炎 - Wikipedia だとすればストレス以外に原因はないっていうね...

%2 Pi

誤差を減らすには、長方形じゃなくて台形の面積にすればいいんじゃないか? 端っこの 1 より小さい部分を t とすれば、(半径^2-y^2)-x^2=(x+t)^2-x^2=2*t*x+t*t となって、2*x で割ることで近似できるんじゃないか? 小数になっちゃうけど誤差は減らせそう、と思って試したら、円周率より小さくなければならない数字が大きくなっていて少し悩んだ。 最後の三角形の引き算が足りなかったようで、それは直せた。

function f(x,xx,r,d)
{
    var t=(r-xx+d)/(2*x);
    return t<0?x:x+t;
}
function hoge(n)
{
    var r=n*n,hn=n/2,x=n,xx=n*n,b1,b2,s1=0,s2=0;
    var a1=f(x,xx,r,-1),a2=f(x,xx,r,0);
    for(var y=0;y<hn;y++){
	r-=2*y+1;
	if(xx>r)xx-=x--*2-1;
	b1=f(x,xx,r,-1),b2=f(x,xx,r,0);
	s1+=(a1+b1)*3/2,s2+=(a2+b2)*3/2;
	a1=b1,a2=b2;
    }
    print("1 "+(s1-a2*y*3/2));
    print("2 "+(s2-a1*y*3/2));
    print("x "+x);
}
hoge (scriptArgs[0]-0);

実行結果はこんな感じ。

$ smjs c.js 2000000
1 3141592653588.8916
2 3141592653590.0996
x 1732050

後は浮動小数点の誤差が出るので、足す時の数字が大きくなりすぎないよう、確定した桁の分を引きながら求めていけば、もうちょっと先まで計算できそうである。 とはいっても、引く数にも誤差が出てしまうわけで、こんな単純なアルゴリズムでは結局多倍長演算とかやらないと何桁もは計算できないのかも知れない。

2014/10/24 のコメントを読む・書く


25 (土)

%1 登山?

山に登ることを登山って言うんだよな? というわけで、一度登ってみたいと思っていた、近所の山に登ってきた。

登山道? 頂上

標高 79.6m の浅間山 (せんげんやま) である。 麓からの高さは約 30m とのことで、当然のことながら楽勝である。 公園になっていてきちんと整備されているが、若干滑りやすい場所があるので、歩き回るなら靴くらいはまともなものがあるといいかも知れない。 山は 3 つくらいに分かれているので、案内図をろくに見ないで入ったら、どっちが頂上かわからなくなってうろうろした。 てっぺんまで一番近い入り口は、どうやら、浅間山通りの近くのランニングコースのスタート地点あたりらしい。 たぶんあそこからなら、サンダルでも楽にいける。

Google Maps で見ると多磨霊園のすぐ隣まで浅間山公園になってしまうが、実際は浅間山通りの西側まで。 東側は多磨霊園の一部らしい。 公園内には鎌倉時代末期の人見四郎の墓跡とやらもあって、案外歴史のある場所なのか? 暗くなると何も見えなくなるような場所なので、夕方だったし人も少なく、静かな公園である。

公園の南西側あたり? 福祉何とかの隣に謎の廃墟みたいな場所がある。 何だろう、ここも国有地跡だったりするんだろうか? 浅間町の国有地・アメリカ軍の無線関係の施設に比べて多少新しそうな感じもするが。

%2 映画

テレビでやってた映画「レッド」(原題: Red)。2010 年のアメリカ映画。

どうやら出演しているのは有名どころの俳優達のようで、ストーリーは簡単に書くと、過去に CIA でいろいろとやって今は引退している主人公達が、命を狙われて反撃するという物語である。 コミカルな感じの演出もあるし、派手にやって/やられても、この主人公なら大丈夫だな、っていう、安心感とともに気楽に楽しめる映画であった。

2014/10/25 のコメントを読む・書く


26 (日)

%1 E233 系

そういえば、中央線 (快速) を走っている快速電車はすべて E233 系というやつで、一か月に 10 回弱くらい乗ってたりするんだが、あまりうるさいとか感じないなーと思った。 冷静に考えたら、いつも若干空いてる端っこの車両に乗るから、そもそもモーター車じゃないんだな。 おまけにほとんどまっすぐな区間だから、揺れも少ないし車輪からの音も静かなわけである。 運転士がマスターコントローラーを操作するカチカチ音は聞こえたりする。

%2 BS アニマックス 10 日間無料放送

だそうで。

「まじっく快斗」のアニメの 8〜12 話あたりを見た。 まじっく快斗と言えば、2 月頃からしばらく弁当屋で漫画を読んだやつだ。 名探偵コナンと同じ作者の漫画だが、アニメも名探偵コナンのキャラクターが出演していたり、next hint の代わりに次のマジックのキーワードが出てくるなど、基本的に名探偵コナンと同じ作りになっている。

たまたま原作を読んだところの話では、あぁこんなのあったな、って感じだし、そうじゃないところやアニメオリジナルの回はもっと新鮮な感じだが、漫画で想像してたのと声が違っていて最初は変な感じだった。2010 年から 2012 年にかけて放送されたものらしく、CG もたくさん使われていて現代的である。

マジックと盗みがメインの作品なので、あ、いや、高校生の一人二役がメインか?、とにかく、コナンとは違ってどっちかというとルパン三世的な感じで、殺人事件とかそういうのはなく、コミカルで軽い感じは原作と一緒。

2014/10/26 のコメントを読む・書く


27 (月)

%1 電車ネタ

やっぱり抵抗切り替えは電流計の針の位置基準 (?) でされてるっぽい。 変電所から離れると電圧が 1.1kV ぐらいまで下がることがあるが、それでも進段は 0.5kA ぐらいでされるから、60km/h ぐらいで最終段まで行ってしまう。 たまに基準となる電流値が違うことがあるのは何なんだろう。

ブレーキの時は、直列とか並列とかの表示が、というか、進段がされてから電気制動となる。 ところが、ブレーキが解除された時には、電気制動の表示が消えるのとともに、いったん直列の表示が消えるっぽい。 しかし、一方向にしか進まないカム軸が、元の位置まで進む間に、最終の表示が出て、それから、並列、並列 + 最終、界磁弱め、界磁弱め + 最終、と、いつものサイクルが表示される。 なんかピッコピッコと切り替わって見えるのはいったん消えるせいっぽい。 並列まで進んでいた場合は消えないっぽいのが以下の YouTube で確認できる。

西武多摩湖線 後方展望 国分寺⇒萩山 クハ1261@SONY WX10 - YouTube

2 号車の床下からの音は、真ん中の扉の付近からカム軸っぽい音がするが、1 号車寄りの扉の付近からはリレーか何か、モーターへの電気が切れるタイミングでバコンと音がする。 加速の時も聞こえてるんだと思うが、発電ブレーキの掛かり始めは特に何も聞こえないのがおもしろい。 ただ、もしかして、発電ブレーキのタイミングでどこからか若干エアーの音が聞こえてる? ような気がした。 ただの運転士の操作によるものかも知れないけど。

発電ブレーキってやつはモーターで発電をさせるってわけだが、界磁は電磁石ってことは電気を流すのかな。 でも電機子巻線と直列ってことは、界磁巻線に電気を流したら電機子巻線にも電気が流れてしまわないのかな。 それとも、一瞬流したらあとは自分で発電する電気で磁界は発生し続けるのかな。 でも計器の様子を見てたら、低速での発電ブレーキは並列とかまで進段してから電流計が動くから、低速・並列で電気を流したら大電流が流れてしまわないか。 あと、発電される電圧は回転数によって変化するんだろうけど、計器で確認できるのは電流計だけってのもおもしろい。

2014/10/27 のコメントを読む・書く


28 (火)

%1 松屋の限定メニュー

松屋に店舗限定の豚しゃぶ鍋定食みたいなのがあって、食べてみたら意外とうまかった。 他のメニューとは違い、みそ汁がないし、大盛りにしても、ご飯の量は変わらず、肉の量だけが増える。 豚しゃぶ鍋といっても、簡単に言えば、ゆでられた野菜と肉がお皿に盛られてくるだけである。 それをしゃぶしゃぶのたれに漬けて食す、という感じ。 野菜はおそらくサラダに使われるのと同じ千切りキャベツ。 見た目はアレだが、味はキャベツである。

牛丼屋の鍋メニューといえば、すき家でやたら仕込みに手間のかかるメニューがあってアルバイトが逃げ出した (?) みたいな話が今年あったのを思い出す。 それに比べて、この豚しゃぶ鍋定食は大変潔い。 何しろ、ゆでた薄切り肉と千切りキャベツ、どこをどう見ても仕込みの手間など掛かっていない。 それでいて豚肉好きの心にヒットする豚しゃぶの味。 カレーライスやライス単品にさえ付いてくるみそ汁も省略されてるし、ちゃんと儲かるようになってそう。 ぜひ通常メニューに入れて 1 年中食べられるようにしてほしいものである。

%2 東京ラーメンショー

あさってから。 鹿児島ラーメンが初出店だとか。 同級生がいるので、食べに行く予定である。

2014/10/28 のコメントを読む・書く


29 (水)

%1 ガスター 10

仮に逆流性食道炎ならガスター 10 という薬でとりあえず症状が抑えられるらしいという話を見つけてドラッグストアに行ったが売られてない。 代わりにキャベジンとやらを買ってみたがあんまり効いた感じがなく、相変わらずゲップがちょっと多め。 やっぱりガスター 10 か?

ドラッグストアの店員に聞くと、薬剤師がいないと販売できなくてその店では扱ってないとか。 ふうううん。 第一類医薬品というのはそういうものか。 いったいどこで扱ってるんだよ... ウエルシア系列の店はウェブサイトで第一類医薬品の取り扱いを条件に入れて店舗検索ができて、さらに、調剤の営業時間まで載ってるから、その時間内なら買えるだろうと見込んで、わざわざ駅から離れている店舗まで行ってみたら、買えた。 飲み続けるつもりもないので小さい 6 錠のやつ。 来週も変だったら病院に行くつもり。 薬剤師からは、この薬は初めてですかとか聞かれたのと、飲み方の説明が一言二言あったくらい。

何年か前に、対面販売じゃないと云々みたいなことで話題になってたのがこれだったんだなーと。 なんで第一類医薬品の取り扱い有無で検索できたり、取り扱い時間がわかるところが少ないんだろうな。 これならケンコーコムなりビックカメラなり、通販のほうがよっぽど楽だと思うし、ビックカメラなんて、薬剤師とメールで、すなわち文面でのやりとりをしなければならないらしく、よっぽど丁寧だし、っていうか時間があるなら取り扱い薬局探すより病院行ったほうが楽なんじゃないかとか思ったりして。

そんなわけだが、薬の効果のほどは明朝のお楽しみ。

%2 映画

映画「イコライザー」(原題: The Equalizer)。PG12。 アメリカ映画。

何者だかわからない主人公が、ホームセンター的なところで働くところあたりからスタートだった気がする。 そしてその同僚が警備員 (security guard) の資格か何かを取る手伝いをしているのだが、何がなんだか... っていう感じのスタートだったんだけど、深夜に 24 時間営業の diner (レストラン) で本を読んでいて、そこで娼婦との会話があって、というふうに話が進んでいく。 スティーヴン・セガールみたいな無敵の男を中心に、結構アクションが多くて楽しめる。 敵に狙われてハラハラドキドキというシーンも長い。

最後スクロールが始まるところまで見たんだけど、結局この無敵の人物は何者だったのか、はっきりとはわからなかった。 何か元 CIA がどうとか... あれ? 土曜日に見た Red って映画もそんな設定だったような? 偶然か。

2014/10/29 のコメントを読む・書く


30 (木)

%1

の前に、昨夜、寝る時すでにゲップが明らかに出なくなっているのを実感していた。 未明にトイレに行きたくなって一度起きたんだが、むかつき感や胸焼けみたいな感じが全くなかった。 ガスター 10 すげぇ。

朝になったら、8 時間経っていなかったにもかかわらず、ちょっと効きが弱まっている感じはしたが、それでもこれは明らかに効く薬だなぁ。

%2 BD-R DL

昨夜、Windows 7 の標準機能で BD-R DL への書き込みを開始。 未明にそれは完了しており、今朝は、別のファイルを同じように BD-R DL に書き込み開始。 しかし数分後、なぜか書き込みウィザードのウィンドウが勝手に消滅し、美しいコースターが完成していた... なんでだよwww

別のディスクでもう一度、と思ったら、手持ちの BD-R DL の在庫がなくなっていた。 買ってこないと。

%3 Windows

ネタで Windows 10 TP を実マシンに入れてみるのはおもしろそうなのだが、楽するなら VHD 起動だろうな。 差分イメージにしておけば巻き戻しも簡単である。

自宅の Windows PC は、Windows 7 と一緒に買った 500GB HDD がネック。 今となっては 500GB は少々物足りないんだが、Windows 7 の DSP 版は何かと一緒に買って使わなければならないライセンスのため、この HDD を買い換えるのは OS を買い換える時である。

自宅の Ubuntu PC は、HDD 容量は十分だけど、中身のほとんどを Linux LVM パーティションにしてしまった上、GPT と UEFI ブートに移行してはいない。 まぁ... /boot と LVM で確か基本パーティションは余っているはずだから、LVM を小さくすれば NTFS パーティションを確保することは可能かも知れない。 そこに Windows のブートローダーと VHD を入れれば... そんなことは可能なんだろうか。 荒技としては、無料の Hyper-V Server をインストールして、ブートローダーだけ使うという手はあり得る。UEFI だったら相当楽なんだけど。 どうせ LVM を縮めるなら、GPT に移行したほうがいいな。 パーティション数の制約がかなり緩くなるし、UEFI ブートにすれば、マルチブートに関する MBR や PBR やブートローダーなどの苦労はすべてなくなるので。

2014/10/30 のコメントを読む・書く


31 (金)

%1 BIOS→UEFI

とりあえず Ubuntu PC の起動を BIOS から UEFI に移行する。1 台目の HDD は /boot と LVM、2 台目は /boot の古いコピーと LVM にしてあったので、2 台目の /boot をつぶして FAT32 でフォーマットし /boot/efi にマウント。 んで grub-efi を入れたが、まだ BIOS 起動のため grub-install はできない。

そこで USB メモリーに Debian のインストール CD から GNU GRUB をコピーして、その GNU GRUB を利用して HDD から起動することを試みた。 そしたら、モジュール類がほとんど読み込まれていないまま GNU GRUB のシェルが出てきてしまった。 適当に ext2 とかいくつか読み込ませて Linux 起動させたが、グラフィックスのモジュールがなくてコンソールが見えないまま、起動は始まったものの画面が出てこない。 何か起きているんだろうが原因がわからない。 もう一度やり直して、HDD にある configfile を食わせてエラーになる名前のモジュールをすべて読み込ませていったら (依存関係もうまく見てくれないのでエラーが出るたびにその名前のモジュールを insmod)、うまく起動できた。 起動中に止まった原因は、/boot/efi の fstab をデバイス名で書いたのだが、USB メモリーを接続したためにデバイス名が変わってしまい、マウントできないよということで止まっていた。S キーでスキップ。 起動できたところで grub-install を行い再起動。 うまくいった。

えっ、EFI System Partition はどうしたかって? このファームウェアではいらなかった。 そもそも MBR のままだし、パーティションをひとつ FAT32 でフォーマットしただけで、パーティションタイプも 83 (Linux) のままだけど、この PC の ファームウェアはこのファイルシステムにアクセス可能であり、このままで UEFI のブートエントリーを登録することができた。

%2 MBR→GPT

次に gdisk を使ってパーティションテーブルを GPT にする。1 台目は EFI パーティションはないので gdisk が変換してくれる内容のままでもよい。 番号が飛んでるのが気になったのでふり直したのと、ついでに pvresize をやってあったので、LVM のサイズを縮めるなどした。 それで再起動したら起動しない。 あああ、パーティションテーブルの変更で /boot の参照ができなくなったようだ。

いろいろやってる間に作成しておいた Debian GNU/Linux の DVD からレスキューモードで起動し、grub-install をやり直す。 最初 EFI じゃないほうで起動してしまうミスをやらかしたが、EFI でやり直して成功。 これで再起動したらうまく起動したので、2 台目も gdisk。 こっちは FAT32 パーティションのタイプを EFI System に変更しておく。 別に変更しなくてもいいんだろうけど、Windows とか別の OS を入れるなら変更しておくほうがいいんじゃないかと思って。 そして今度こそ忘れずに grub-install を実行。 完了。 空き領域も作れたし Windows 10 TP 等で遊べそうな感じになった。

2014/10/31 のコメントを読む・書く


Powered by Tomsoft Diary System 1.7.4

/var/log/hdk.log コメント一覧

トップ / 日記索引 / 日記 (2014 年 10 月下旬)

Hideki EIRAKU