Home > Archives > 2009年12月

2009年12月

富士山を拝みに帰るが

裾野の実家に帰ってきた.富士山見えるかなと期待してたけど厚い雲の傘をかぶってた.残念.

初日の出と部分月食(ほんのり)に期待しよう.

あうち

taskset のマスク指定に10進数が使えるだろとか勝手に思っていたために実験失敗.16進しか解釈してくれないのね… 

今日は帰らず実験をやり直す.

FireFoxが遅いのでRamDiskにプロファイルを移動

データベースファイル(*.sqlite)へのアクセスが遅すぎる気がするのでプロファイルごとRamDiskに移すことにした.ただ,シャットダウンする時にはデータを HDD に退避しなきゃならないし,スタートアップ時には退避したデータをコピーし直さなきゃ使い物にならない.

で,タスクスケジューラでどうにか出来るかなと思ったけどスタートアップ時は良いとしてシャットダウン時のスケジューリングの仕方がわからず…

結局グループポリシで動かすことにした: gpedit.msc (ローカル グループ ポリシー エディタ)を実行.コンピュータの構成 → Windowsの設定 → スクリプト(スタートアップ/シャットダウン)で以下のバッチファイルの実行を追加.Rドライブが RamDisk で E ドライブがHDDという.

スタートアップ時:
xcopy E:\Backup\FireFox1.5 R:\FireFox1.5\ /D /S /E /H /C /Y /R
シャットダウン時:
xcopy R:\FireFox1.5 E:\Backup\FireFox1.5 /D /S /E /H /C /Y /R

さて,ちゃんと動くのだろうか? →(二回再起動後)問題なく動いているらしい

明日から休み.でもやること終わってない.

うーん,並列計算資源が足りなかったらまずは spawn した式の計算に突入するとか誰が考えた仕様だよ….直感的には spawn したのは後回しだろうに.まあ,ソースコード上に書いてある順に実行した方が分り易いというメリットがあるといえばあるのだけど.そしてスレッドの wait がモロにスピンロックなのは何の嫌がらせなんだ? 普通に sleep してくれることを願って自前のスピンロックで待つプログラムを書き換えたのに… そして自前のスピンロックの方が計算が効率的だという結果に絶望.

ということで,今日進めるはずだった部分が全然進んでないので明日以降もプログラム書かんとな.そして明日からは大学もお休みなので建物に入るには申請が必要ですよという… 面倒なので家からリモートで仕事するか.

年末といえば

アリスソフトのゲームをやらなければならない気がする.

ということで,わいどにょをコツコツと開始.まだまだ欲しいキャラが揃わない.120キャラ位あるそうだから集めきるまでにどれだけかかるのやら.そしてやっぱりアイテム捨てまくるとタイガージョーが現れるのね.

airpenを試した

ときどきメモ書きがデジタルデータになっていてくれると嬉しいときがある.ただの画像情報だけでなく,文字の認識もしてくれて検索ができるとなお便利.

ぺんてるがairpenというボールペンの動きをデジタルに拾ってくれるツールを出しているので試してみた.文字認識機能も付いてるらしい.小型の受信機兼メモリを紙の上部にセットして,あとは専用の発振器付のペンで物を書けば良いらしい.

で,とりあえずストロークを拾ってくれる&文字認識もしてくれることがわかった.が,実際に使うにはいくつかの問題があることもわかった.

問題点1: 発振器とノートの位置関係が途中でズレると…

問題点2: ノートの枠いっぱいに文字を書こうとすると拾ってくれない…

問題点3: 文字が汚すぎて文字認識が…

問題点4: 専用ボールペンが太すぎて…

問題点の大半が自分の筆記の習慣に起因しているのだけど… なんかスキャナで取り込むだけの方が問題が少ない気がしてきたかも.

cachegrind... 遅い…

valgrind --tool=cachegrind でキャシュミスを調べようと思ってプログラムを走らせたのだが… 計算が終了する気配が無い.データサイズ小さくすりゃ速くなるだろうけど,そしたらデータがキャッシュ乗り切ってしまうので本末転倒.

まあ,キャッシュ効きまくり状態でも50秒かかるのだからシミュレーションでキャッシュの計測とかしてたらなかなか終わらんか.うーん,この実験を繰り返すのは苦痛だなぁ.

.info ドメイン10円とか

お名前.com のクリスマスセールで .info ドメインが1年10円とか(最大10年までの一括契約で10円 + 二年目以降920円/年).メールとURLの転送サービスも只になるっぽい.

とりあえず幾つか捨てドメインとして取得 → 1年後に気に入ったものだけさくらに移管,かな.でも「キャンペーン期間中に登録したドメインは以後の更新料金も920円/年となります。」ってのが本当ならさくら(1800円)より安いなぁ.不安なのは試しに更新のページに行ってみたら3000円オーバーの金額が書かれていたことだけど….とりあえず一年後に考えよう.

find コマンドで特定の時刻より新しいファイルを探す

エクスプローラでの検索方がわからないので find に逃げた.オプションの -newer を使えば,指定したファイルより新しいファイルを列挙してくれる.そしてファイルの時間を変えるには touch コマンド使えば良いと.

ということで,find と touch のコンボで特定時刻より新しいファイルを探す(2009/12/24 19:15より新しいの):

touch -t 200912241915 timebase; find . -newer timebase

ひょっとしたら touch なんかいらずに find だけで出来るかもしれないけど man find が動かず find --help しか見れない今の状況では上の方法で必要十分.

そして firefox のディスクアクセスをRamDiskに押し付けたいが *.sqlite とかどうしようかと悩むところ.

はぢめてのRAID

HDDひとつの容量が2TBとかに増えたのは良いけれど,容量増加は不慮の事故によるデータ喪失の被害量も多くしてしまう.臆病者としてはこの状況には耐えられえない.

ということで,2TB x4 で RAID5 を組んだ:

使った箱は裸族のインテリジェントビルで,HDDにはHITACHIの13k円のやつを使った.2TB x4 の RAID5 なので,使える容量は 6TB になっている.

どう考えても臆病者の使う機材ではない気もするけれど…

そしてCrystalDiskMark2.2.0での計測結果を.以下,HDD単体,4台でのRAID5,RAMDISKの順番:


RAIDのシーケンシャルの読み書き速ェー(2倍出てるね).でもそれ以外遅ェ―(512kランダムリードで同じくらい.他は性能ダウン).まあ,RAID5なので書き込みが遅いのは仕方がない.そしてやっぱRAMはケタが違う.


ついでにもう一つ.テストサイズを小さくしてやった結果.HDD/RAID/RAMの順:


まあ,基本何も変わらない.1000MBの結果と違ってRAIDのランダムリードが速いのは,多分HDDのキャッシュの総計が大きくなってるからだろう.それにしてもRAMDISKが速すぎる…

黒酢酢豚弁当

久々に大学の前のほっともっとで弁当を買った.今月の新メニューの黒酢酢豚弁当.

うん,酢豚自体は美味しい.

が,見た目のチープさにより美味しさ半減なのが残念な気がする….弁当の容器が共通だからボリューム足りないように見えたり,ご飯がどこかの容器で固めたのを嵌め込みましたという形をしていたり.

見た目を良くするぐらいなら味と価格の改善をしてほしいと思うのが普通だが,できればメニュー表とかPOPの写真からのギャップは少なくしていただきたい.

そしてオリジンの酢豚弁当(黒酢風味)とどっちが美味しいかはオリジンの方を食べてないので分からない.でも値段はオリジンの圧勝だったはず → 490円 vs. 390円で100円安いらしい.言い換えるとほっともっとの方が25%高い値段.その差が味に現れるか量に現れるか値段だけなのかは分からない.

久々にSRMに出てみたら

250点問題のシステムテストでコケた.途中でキーボードが言うこと効かなくなった.二分探索が再帰関数の中に入った.そして1500に下がった.

Go-lf!

ということで,せっかくGoを勉強したのでゴルフ場で(頭と指の)運動をしてみた.

大人気なく問題を解きまくってGoで解いた人ランキング一位になった.

以下,ショートコーディングのための技術.

  • Raw String Literal を使うべし. 特に,改行にエスケープがいらないため,
    s:="hoge\nhuga"
    s:=`hoge
    huga`
    でいいので1Bの短縮.他にもバイナリデータを文字列として埋め込んでしまうという…

  • 外部パッケージをローカルの名前空間に展開すべし.

    インポート時の束縛名にドットを使うと,他パッケージの関数などをローカルの名前空間に展開出来る.なので,
    import"fmt"func m(){fmt.Print(“c")}
    import."fmt"func m(){Print(“c")}
    に短縮できる.複数のパッケージをローカルに展開できるが,同一名があると衝突するので,解決に短い名前を付ける必要がある.ついでにインポートのファイル名の後には空白がいらないという…

  • 関数変数を使うべし.

    関数も変数に入れられる.なので,
    x:=Sprintf("%c",c);y:=Sprintf("%c",d);
    f=Sprintf;x:=f("%c",c);y:=f("%c",d);
    に短縮できる.でもprintlnとかの特別な関数は束縛出来ないという…

  • 依存の無い(初期値)代入はまとめるべし.

    変数への値代入は,型に関係なくカンマでつないで一気に書ける.なので,
    x:=1;y:="str";z:=2
    x,y,z:=1,"str",2
    に短縮できる.でも,複数の値を返す式が右辺にあると怒られるという… (複数値のコンテキストのネストが出来ないらしい) ついでに,複数値の代入文は右辺が全て評価されてから左辺へと代入されるので,
    t:=x;x=y;y=t
    変数のスワップなどは複数値の代入を使って
    x,y=y,x
    のように短く書ける.

  • Sliceは上手に作るべし.

    Sliceの生成にはmakeを使う方法とcomposite literalを使う方法がある.なので,小さなsliceをつくるなら
    b:=make([]byte,1)
    でなく
    b:=[]byte{1}
    にする.また,大きなsliceも
    b:=make([]byte,10000)
    でなく
    b:=make([]byte,1e4)
    にする.

そして微妙な謎は,手元のコンパイラではプログラムの最後に改行が必須だったりブロックの閉じカッコの直後に文を書くにはセミコロンが間に必須だったりするのだけど… ゴルフ場だと必要ないらしい.ちょっと手元でプログラム書くときに気を使う.
それにしても全体的に短く出来ない言語だなぁという感想.入出力が一苦労だったりするし.もう少し入力を簡単に取れると良いのだけど… 現状では必ず[]byteを介さねばならないのでメンド臭い&長すぎる.

Skypeが置換コマンド(s///)を理解してくれた!

チャットしてるときに発言を間違えたら,

s/間違い/正しいの/

と書いてあげると直前の発言を修正してくれる.いちいちマウスとかでクリックして発言の修正とかしなくていい.

例えば,「先生を的に回すね」と間違って書いてエンターを押してしまったら,続けて「s/的/敵/」と入力してエンターしてあげればいい.そうすると,「先生を敵に回すね」に修正してくれる.

Ubuntu hardy 用のバージョン 2.1.0.47 で発見したけれど,Windows版の4.1.0.179では無理だった.Linux版だけの機能なのかね?

TOEICの点が出た

760点とか.9年前に一度受けたときが730点だったから… 何にも成長してないという.

いや,前回はまともに勉強してから受けたのに対して今回は何もせずに行っただけだから… まあ,どちらにせよ恥ずかしいのでどうにかせんとな.

リスニング345点のリーディング415とかなので,とりあえずリスニングどうにかしようぜという話.さすがに耳を慣らしておかないとリスニングは聞き逃しちゃうし,現実世界ではもう一度聞けばいいけどテストでは聞き返せないし,むしろ何て言ってたっけとか考えてると次の問題聞き逃すし….一度でちゃんと聞き取れるように頑張りましょうということか.

エアハブに感動した!

自転車のハブにエアポンプつけて常に適正圧力になるように空気を供給し続けるという.中野鉄工所の発明品.2004年からあったそうだけど全然知らんかった…

タイヤの空気が減らないので,常にタイヤの転がり抵抗が小さいままで楽に乗れる(ポンプ動かす分の微妙な負荷はあるだろうけど,そんなのより空気が減ったタイヤの転がり抵抗の方がものすごく大きい).ついでに,空気を入れる手間が省けるし,空気が減ったことによるパンクのリスクも減る.

是非とも自分の自転車にも欲しい機能.任意のハブに後付出来る仕組みとか作ってくれないかなぁ?

Go に手を出す(並列計算)

並列に動くっぽいけど本当にそうなのか気になったので,色々書けるようにと勉強してみた.

セミコロン少なめだし,カッコ少なめだし,型を書くのも少なめだし,タプルあるし,型システム単純だし,例外ないし,オーバーロードないし,generics 入ってないし,GCだし,メソッド定義にはレシーバ書くし,継承ないし,interface とかメソッドさえ揃っていれば継承したことになるし,embedded types とか楽すぎだし,宣言したのに使ってない変数があるとコンパイルしてくれないし,スコープ上書きしたときに何も言ってくれないし,速度も十分速いし.スクリプト言語の気分で速いプログラムが書けるような気がする.一方で,generic types がないので高レベルな汎用ルーチンが書きづらい.

で,そんなことはさておきとりあえずベンチマークということで,n-queen問題のプログラムを書いてみた:

package main
import ("fmt"; "flag")
 
func nqueen(n, i, u, l, r int) int {
  if i==n { return 1 } 
  nl := (l << 1) | 1;
  nr := ((r|(1<<uint(n))) >> 1);
  ni := i + 1;
  p := u & nl & nr;
  c := 0;
  for p!=0 {
    lb := (-p) & p;
    p ^= lb;
    c += nqueen(n, ni, u ^ lb, nl ^ lb, nr ^ lb)
  }
  return c
}
 
type State struct { n, i, u, l, r int }
func nqueenRes(ch chan int, n, i, u, l, r int) { 
  ch <- nqueen(n, i, u, l, r)
 }
 
func gentasks(cs *[] chan int, lim, n, i, u, l, r int) {
  if i==lim {
    lx := len(*cs);
    *cs = (*cs)[0:lx+1];
    (*cs)[lx] = make (chan int);
    go nqueenRes((*cs)[lx], n, i, u, l, r);    
    return;
  }
  nl := (l << 1) | 1;
  nr := ((r|(1<<uint(n))) >> 1);
  ni := i + 1;
  p := u & nl & nr;
  for p!=0 {
    lb := (-p) & p;
    p ^= lb;
    gentasks(cs, lim, n, ni, u ^ lb, nl ^ lb, nr ^ lb)
  }
}
 
func nqueensGo(n int) int {
  b := (1<<uint(n)) - 1;
  cs := make( [] chan int, 0, n * n * n);
  gentasks(&cs, 3, n, 0, b, b, b);
 
  sum := 0;
  for _, c := range cs { sum += <- c }
 
  return sum;
}
 
var n = flag.Int("n", 16, "n")
 
func main() {
  flag.Parse();
  fmt.Println(nqueensGo(*n));
}

ついでに比較対象のC++プログラム(OpenMP使用):

#include<iostream>
#include<vector>
#include<omp.h>
#include<stdlib.h>
 
using namespace std;
 
int nqueen(int n, int i, int u, int l, int r) 
{
  if(i==n) return 1; 
  const int nl = (l << 1) | 1;
  const int nr = ((r|(1<<n)) >> 1);
  const int ni = i + 1;
  int p = u & nl & nr;
  int c = 0;
  while(p!=0) {
    const int lb = (-p)&p;
    p ^= lb;
    c += nqueen(n, ni, u ^ lb, nl ^ lb, nr ^ lb);
  }
  return c;
}
struct state {
  int n, i, u, l, r;
  state(int n, int i, int u, int l, int r) : n(n), i(i), u(u), l(l), r(r) {}
};
int nqueen_res(const state &st) { return nqueen(st.n, st.i, st.u, st.l, st.r); }
 
void gentasks(vector<state> &xs, int lim, int n, int i, int u, int l, int r) 
{
  if(i==lim) {
    xs.push_back(state(n, i, u, l, r));
    return;
  }
  const int nl = (l << 1) | 1;
  const int nr = ((r|(1<<n)) >> 1);
  const int ni = i + 1;
  int p = u & nl & nr;
  int c = 0;
  while(p!=0) {
    const int lb = (-p)&p;
    p ^= lb;
    gentasks(xs, lim, n, ni, u ^ lb, nl ^ lb, nr ^ lb);
  }
}
 
int nqueensOMP(int n)
{
  int b = (1<<n) - 1;
  vector<state> xs;
  gentasks(xs, 3, n, 0, b, b, b);
 
  int nx = xs.size();
  int sum = 0;
#pragma omp parallel for reduction(+:sum)
  for(int i = 0; i < nx; i++) {
    sum = sum + nqueen_res(xs[i]);
  }
  return sum;
 
}
 
int main(int argc, char *argv[])
{
  int n = argc > 1 ? atoi(argv[1]) : 16;
  int c = nqueensOMP(n);
  std::cout << n << " " << c << std::endl;
  return 0;
}

とりあえず実験結果.OpenMPのスケジューリングを変更して性能を改善したものの結果は下のほう.

8コアのマシン(Xeon E5430 @ 2.66GHz x2)での実験結果(n=17).C++ はg++4.5.0 (exeperimental) に -O3,Go は 6g/6l でコンパイル.OMP_NUM_THREADS と GOMAXPROCS でスレッド数を指定.speedup は C++ の1スレッドに対する速度比.

スレッド数C++ [秒]C++ [speedup] Go [秒] Go [speedup]
1 105.594 1.00000 140.792 0.75
2 52.717 2.00304 70.811 1.49121
3 40.357 2.61650 47.447 2.22551
4 29.754 3.54890 35.652 2.9618
5 24.524 4.30574 28.414 3.71627
6 20.513 5.14766 23.712 4.45319
7 17.643 5.98504 20.349 5.18915
8 15.398 6.85764 17.929 5.88956

どうやらC++の1.3倍程度の遅さらしい.問題が問題だけに台数効果はほぼリニアに出ている(スレッド数増やした時のC++の伸び具合が今ひとつだが… スケジューリング変えるべきか?).Goは性能的に何の問題もなく優秀だねぇ.まあ,この手の極単純なループの並列化に関してはOpenMPの方が楽ではあるけれど.

ついでに,24コア(Xeon X7460 @ 2.66GHz x4)のマシンでの実験結果(n=17).C++ はg++4.3.2 に -O3,Go は 6g/6l でコンパイル.OMP_NUM_THREADS と GOMAXPROCS でスレッド数を指定.speedup は C++ の1スレッドに対する速度比.
スレッド数C++ [秒]C++ [speedup] Go [秒] Go [speedup]
1 123.353 1.00000 144.181 0.85554
2 61.897 1.99288 71.764 1.71887
3 47.255 2.61037 47.722 2.58482
4 35.073 3.51704 35.823 3.4434
5 28.474 4.33213 28.741 4.29188
6 23.761 5.19141 23.846 5.1729
7 20.539 6.00579 20.491 6.01986
8 18.019 6.84572 17.954 6.8705
9 16.112 7.65597 15.965 7.72646
10 14.372 8.58287 14.394 8.56975
11 13.065 9.44148 13.109 9.40979
12 12.051 10.2359 12.007 10.2734
13 11.322 10.8950 11.091 11.1219
14 10.270 12.0110 10.299 11.9772
15 9.579 12.8774 9.619 12.8239
16 9.055 13.6226 9.014 13.6846
17 8.440 14.6153 8.500 14.5121
18 8.081 15.2646 8.014 15.3922
19 7.652 16.1204 7.611 16.2072
20 7.333 16.8216 7.225 17.0731
21 7.025 17.5591 6.904 17.8669
22 6.646 18.5605 6.587 18.7267
23 6.419 19.2169 6.296 19.5923
24 6.359 19.3982 6.274 19.661

スレッド数増やしたときにGoの方が速くなっているのはスケジューリングがうまいからだろうなぁ.OpenMPもラウンドロビンとかにすれば改善するかも?


ということで,サイズ1でラウンドロビンするように

#pragma omp parallel for reduction(+:sum) schedule(dynamic)

に変えてC++の実験を取り直した.

8コアマシンで.

スレッド数C++ [秒]C++ [speedup] Go [秒] Go [speedup]
1 106.079 1.00000 140.792 0.75344
2 53.386 1.98702 70.811 1.49806
3 35.603 2.97950 47.447 2.23574
4 26.741 3.96690 35.652 2.97540
5 21.373 4.96322 28.414 3.73334
6 17.901 5.92587 23.712 4.47364
7 15.329 6.92015 20.349 5.21298
8 13.513 7.85014 17.929 5.91662

24コアマシンで.

スレッド数C++ [秒]C++ [speedup] Go [秒] Go [speedup]
1 123.471 1.00000 144.181 0.85636
2 62.137 1.98708 71.764 1.72051
3 41.452 2.97865 47.722 2.58730
4 31.043 3.97742 35.823 3.44670
5 24.837 4.97125 28.741 4.29599
6 20.711 5.96161 23.846 5.17785
7 17.849 6.91753 20.491 6.02562
8 15.546 7.94230 17.954 6.87707
9 13.785 8.95691 15.965 7.73386
10 12.434 9.93011 14.394 8.57795
11 11.309 10.9179 13.109 9.41880
12 10.360 11.9181 12.007 10.2833
13 9.562 12.9127 11.091 11.1325
14 8.882 13.9013 10.299 11.9886
15 8.302 14.8724 9.619 12.8362
16 7.772 15.8866 9.014 13.6977
17 7.317 16.8745 8.500 14.5260
18 6.914 17.8581 8.014 15.4069
19 6.552 18.8448 7.611 16.2227
20 6.227 19.8283 7.225 17.0894
21 5.923 20.8460 6.904 17.8840
22 5.663 21.8031 6.587 18.7446
23 5.431 22.7345 6.296 19.6110
24 5.474 22.5559 6.274 19.6798

うん,常にC++の方が速い結果になったので問題なし.スケジューリングのオーバヘッドが無視出来る問題だから,スケジューリングの柔軟さがやっぱ効いてくるねと.

PowerPoint (2003) のアニメーションの設定

画面内に吹き出しを順番に出したいとかいうときに,吹き出しを全部選択しておいてアニメーションの設定をやると,ひとつひとつ順番に現れるようにいっぺんに設定できた.これまで一つ一つやっていたのに比べれば格段のスピードアップ… これまでが馬鹿すぎたともいう.

オブジェクトたくさん選択した上でそれらに一度の操作で同じプロパティ設定をするってのは必須技能かもしれない.

また佐川か…

今日が配達日に指定されているはずの荷物が届いていない.不在票も無い.オンラインでも配達に出たきり.毎度のことといえば毎度のこと.

なんで佐川なんか使うんだか.(安いからだろうけど)

やっぱ佐川を使わない店で注文しなきゃだめだな.

emacs23 でフォント設定を新しいフレームにも適用しよう

立ち上がった直後のフレームのフォント設定はできてたんだけど,C-x 5 2 とかで新しいフレームを作った時にはフォント設定がデフォルトになるのが微妙だった.で,それなら新しいフレームの作成時に現在のフレームのフォント設定をコピーできりゃいいんじゃないかと思って色々調べてみたら… 結局 modify-all-frames-parameters という現在及び将来のフレームの設定を変更する関数に行き着いた.

で,最初のフレームのフォント設定が終わったところでその関数に設定したフォントの設定を投げてあげると幸せになる.

(modify-all-frames-parameters (list (assq 'font (frame-parameters))))

そして assq とかいうクエリ関数があることを初めて知った.自分で書こうとしたのは馬鹿だった.

リモートペアプログラミング via WebEx

音声を双方向にやり取りできて,相手のデスクトップをリアルタイムに見られるならば,リモートでペアプログラミングができる.

ということで,研究室で契約しているWeb会議システムのWebEx経由でリモートペアプロした.ペつにWeb会議システムのデスクトップ共有とか使わなくても eclipse + プラグインとかでどうとでもなるかもしれないけど… emacsとか使ってるとデスクトップ共有とかの方が楽っぽいし音声のやりとりもやってくれるしで楽.

そして相手のキーボードさばきが速いとリモートだとちょっと苦しい時がある.画面更新というかカーソルの動きがたまにぎこちない.それ以外は問題なかった.

emacsについて今日学んだこと

1.tramp でリモートのファイルを開いているときに M-x shell でシェルを立ち上げると,ちゃんとトンネル掘ってリモートのシェルが立ち上がってくれる.もうターミナルソフト要らない.

2.M-x shell で ls とか打つと色付のためのエスケープシーケンスが酷いことになるが,次を.emacsに書いておくと幸せになれる.

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

山猫に手を出す

Lucid Lynx の Alpha1 が先週出てたそうなので,live CD で試してみた.

結果:画面真っ黒.研究室のマシンも自宅のマシンも.

やっぱりaplha1だから動かないのかなぁと思いつつhttp://www.ubuntu.com/testing/を良く眺めてみたらKnown issues に vn ドライバがコケるよと書いてあった → 立ち上げ時にセーフグラフィックスモードとかにしてみたら問題なく立ち上がった.

そしてインストールするのは微妙に怖いからインストールはしていない.インストールはあと4ヶ月待とう.

コアラを見限り鷺に戻る

必要なものがコアラでうまく動かないので,もとの鷺さんの環境に戻ることにした.VNCとVMwareとcompizがまともに動かない(動くけど面倒も含む)環境とか使い勝手が悪すぎてストレスが溜まる.

次の山猫さんに大きく期待.

いつも分からなくなるので書いておく:Max OS X で isoイメージを焼く

ディスクユーティリティでisoイメージを選択した状態で,メニューの「イメージ」の「ディスクの作成」にすすむ(新しいisoイメージは,一回ダブルクリックしてマウントしておくとディスクユーティリティの一覧に登録される).とりあえずこれで焼けるらしい.

Macだとメニューが各ウィンドウに付いてくれないのでメニューの存在を忘れてしまう.大抵の場合においてこのメニューが意識外になるのが大問題.

つーか,何でMacはメニューを共通に置くようになったん?

使ってきたPCの移り変わり

これまでに使ったGPUって何だっけ? という疑問から,ついでなので使ってきたPCの履歴を作ってみた.ぶっちゃけ Intel の CPU に NVidia の GPU という構成しか使ってないねぇ.チップセットも Intel 製だし.

  • 1993/8 NEC PC-9821Ce (最初のPC)
     CPU: i486SX(25MHz)
     MEM: 8MB?
     FDD: 3.5 x 2 (3 mode)
     他 : CD-ROM(x1)
          15インチCRT
    
  • 1998/3 Gateway 2000 GP6-400 に移行
     CPU: Pentium II 400MHz
     MEM: 64MB
     HDD: 6.4GB(Ultra ATA)
     VGA: STB nVIDIA RIVA128 AGP(4MB)
     M/B: 440BX AGP
     他 : CD-ROM (x32)
          17インチCRT
          adaptec製 AHA-2940UW UltraWide SCSI
    
  • 2000/10? ビデオカードをアップグレード
     カノープス SPECTRA F11 (AGP 32M) (GeForce2 MX)
    
  • 2002/1? Celeron (Tualatin) の自作マシンに移行 (うろ覚え)
     CPU: Celeron 1.20? GHz (Tualatin)
     MEM: 512MB(256MBx2)?
     M/B: i815 (B0)?
     VGA: カノープス SPECTRA F11 (AGP 32M) (GeForce2 MX)
    
  • 2003/1? ビデオカードをアップグレード
     WinFast A180 DDR TDH MyVIVO (GeForce4 MX440, 64MB)
    
  • 2004/1 Pentium 4 の自作マシンに移行
     CPU: Pentium 4 2.6C (Northwood)
     MEM: DDR 400 1.5G DUAL (512MBx2 + 256MBx2)
     M/B: ASUS P4P800 (865PE + ICH5R )
     VGA: Leadtek WinFast A350XT TDH 128M (GeForce FX5900XT)
    
  • 2004/5 最初のノートPC
     Panasonic Let'snote W2D
    
  • 2004/10? 最初の液晶ディスプレイ
     Nanao FlexScan S170
    
  • 2007/3 Core 2 Duo の自作マシンに移行
     CPU: Core 2 Duo E6600
     MEM: UMAX DDR2 800 2G DUAL (1GBx2)
     M/B: ASUS P5B Deluxe (P965 + ICH8R)
     VGA: Leadtek WinFast PX7900GS TDH 256M
    
  • 2007/4 液晶ディスプレイを追加
     NEC MultiSync LCD2690WUXi
    
  • 2007/11 ノートPC追加
     Panasonic Let'snote W7B
    
  • 2009/3 Core i7 の自作マシンに移行
     CPU: Core i7 920
     MEM: CAK2GX3-D3U1333 (2GBx3)
     M/B: P6T Deluxe V2 (X58 + ICH10R)
     VGA: WinFast GTS250 512MB
    
  • 2009/8 最初のネットブック
     Eee PC 1008HA
    
  • 2009/10 最初のMID
     NetWalker
    

うーん,最近のはAsusのマザーにLeadtekのグラボで安定してるなぁ.そしてCPUもGPUもハイエンドとミドルエンドの中間という中途半端が好きらしい.新しいマシンへの移行も2年か3年ごとの年末ないし年度末らしい.

次のマシンは NVidia の Fermi 待ちだな.

Ubutnu 9.10 (amd64) で VMwarePlayer を動かすための紆余曲折

VMwarePlayer 2.5.1 → インストールは出来た.起動時にこける(メインウィンドウすら出ずに).

VMwarePlayer 2.5.2 → インストールは出来た.起動時にモジュールのコンパイルをしようとしてこける.

VMwarePlayer 2.5.3 → インストールの最終段階で止まる.

このように色々動かないので絶望してたけど,Arch linux の wiki エントリの Installing VMwareに対処法が書かれていることを見つけた.いくつかのバージョンのカーネルに対してはモジュールのコンパイルに問題があるらしい.コアラのカーネルは2.6.31なので,パッチを当ててやる必要があったそうな.

で,パッチを当てるにもインストールが成功してくれないと何もできないので,とりあえず VMwarePlayer 2.5.2 をインストール.そして,普通に起動するとモジュールのコンパイルを始めてコケるので,そのまえにwikiにあった指示どおりにモジュールのソースにパッチを当ててモジュールをコンパイル&インストール.この後VMwarePlayerの起動をしてみたら,問題なくVMの起動まできた.

これでメインマシンで出来る仕事の範囲が広がった.つーかIEしか受け付けないサイトとか無くなればいいのに.

(後日談) 起動できたけど操作できない罠が待っていた.どうもキー入力とかマウス入力とかのイベントのやり取りがおかしいらしい.カーソル動かないし押したボタン違うしキー入力出来ないしキーが無限に入力され続けるし.だめだこりゃ.

液晶ディスプレイをテレビにする

家には,サーバに接続しっぱなしで殆どの時間を省電力モードで過ごしているサブの19インチSXGAディスプレイと,しばしば地デジの電波の入らないUHF局を見るため&ゲームをやるために使われる23インチ平面ブラウン管テレビとがある.狭い空間にこの二つが同居するのは空間の無駄としかいえない.

ということで,テレビを捨てディスプレイのみで生きるため,プリンストンのTVチューナ付きアップスキャンコンバータ PTV-TVBOX2 を購入した.これとディスプレイのみでTVが見られる.もうテレビいらない.ちなみに,USBのTVキャプチャデバイスを既に持っていたのだけれど,こいつらはPCを介すため純粋なテレビに比べてレスポンスが悪い(低い能力のPCでは顕著にレスポンスが悪い).TVを見るだけならPCを介さない接続の方がストレスがなくてありがたい.

まだそれほど使ったわけではないけれど,今のところストレスなく使えている状況.使ってたテレビとの使用感の違いは,チャンネルの切り替えの仕方くらい.テレビの方は12個のボタンでダイレクトにチャンネル移動できるけど,TVBOX2のほうはチャンネル番号を入力する必要がある.一応,よく使うチャンネルを登録しておいてボタン一つで順繰りに巡れる機能はあるけれど,目的のチャンネルに行くまでのボタン押下数がよく使うチャンネルの数に比例するので… 押下1回でよく使うチャンネルに移動できるショートカットが複数欲しい気がする.あとは,PinPでPCの画面の中にTVの画面を表示できるとか,逆向きにTVのなかにPCの画面を表示とか,便利なのか便利じゃないのか分からないけど遊びたくなる機能が付いている.ぶっちゃけもう一枚ディスプレイがある環境には必要ない機能かもしれない.

アナログ電波が2年以内になくなることなど気にしない.

テレビの処分自体も面倒だなぁ… タダで引き取ってくれるとこに送ろうかな

Thunderbird 3 へ移行

気づいたら正式バージョンになっていたのでアップグレードした@Vista.

パスワード入力ダイアログが一斉に立ち上がるせいか,パスワードを入れた後にフォーカスが次のパスワードフィールド(ダイアログ)に移らない… 複数アカウントのパスワード入力がちょっと面倒になった.

メーラーにタブって必要なのかな? 今ひとつ使いきれない機能となっている.

その他は問題なし.

Googleマップの「徒歩で行く」検索

数日前にベータ機能として経路検索の「徒歩」版が追加されたらしいので試してみたら… 歩道橋渡るわ公園内突っ切るわ,まさに徒歩ルート! でも不忍池の弁天堂を通った横断はまだできないらしい.

N-02Bに移行

秋葉のヨドバシ行ったら普通に売ってたので買ってきた.色は白.アクセントに入ってる緑しか印象になく店員とのやりとりに戸惑ったのは言うまでもない.

動作はN905iに比べて特にもっさりしているという感じはない.メールを見るときとかのレイアウト切り替えが僅かに引っかかるかな程度.許容範囲内.

タッチスクリーンはNetWalkerと違って尖ったものでは反応しにくくある程度太い刺激で反応するらしい.

WLAN接続でのフルブラウザ使用も問題なかった.まあ,強いて文句をいうならば,WEPキーとかをメールとかからコピー&ペーストできないのは場合によっては面倒極まりないということくらい.WPS使えるなら面倒はない.残念ながら家の無線基地(WHR-G)はファームウェアのアップデートをしないとうまくWPSが動いてくれなかったけれど.

どうでもいいけどサードパーティ製のUSBケーブル使ったらデバイス認識が不安定すぎて使い物にならなかった.結局,動作の安定するdocomo純正のUSBケーブルを新たに購入して使うことにした.純正バンザイ.

さらにどうでもいいが,WLAN接続時にはタダではGoogleマップのiアプリが動かず,フルブラウザでのGoogleマップの利用も困難すぎる.iモード通信が出来ないからiアプリが動かないのはしょうがないのだけど,WLAN接続時にサクサクのGoogleマップ使いたいなぁ.

総じて,ニューロポインタ・T9入力・タッチスクリーン・WLANと揃っているので大変満足.起動の速いカメラ? そんなんどうでもいい.

「プログラミングHaskell」買ってきた

立ち読みして,とりあえず始まりにprintと叫ばないところに好感が持てたので買ってきた.最後にequational reasoningについて書いてある点も面白い.そして参考文献に見たことあるのが沢山あるのも親しみが持てて良い感じ.

この本から始めたプログラマはきっと綺麗なプログラマになるに違いない.プログラマはいつになったらプログラムカウンタの呪縛から解放されるのか?

このライトノベルがすごい2010!とか

本屋で見つけたので買ってきた.

去年に引き続き,バカテスの秀吉がキャラクターランキングの男性・女性両部門でトップテンに入ってるという… 面白いからいいけど&世間の認知だからいいけど&秀吉部門とか作れないからいいけど.そしてバカテス自体は作品ランキングの1位になりましたとさ.

んで,バカテス1位の自然な流れとして作者のインタビューが載っていたからなんの気構えもなしに読もうとした → 出だしで吹いた! 冒頭の振りの時点で気づくべきだった… 馬鹿なこと書かないわけがない.そして問題集の新たな読み方を理解した.ボケ問答作るのも大変そうだなぁ.

さて,化物語シリーズの既刊は読みきったからそろそろ戯言シリーズに進もうかね.そしてBDドライブもさっさと買わないとなぁ.

ダメだこりゃ

コンビニでの支払いで出す金の量を素で間違えた.頭の中でどんな計算が走ったのか覚えてない…

冬眠が足りなかったか冬眠ボケか.

そしてDPが理解されないのはどこに問題があるのだろう?

そしてAcademic Open Licenseで買ったOfficeにはWork at Homeの特典が付いてるのかどうか明記されてないような.FAQにはOffice製品は家でも使えると書いてあるけど… ま,買ってから考えるか

死んだ…

喉と鼻をやられて一回休み.何となく頭と体が重い気もするので冬眠する.

そしてAcademic Open LicenseってSAつけるとアカデミックパッケージに比べて劇的には安く見えないのが良くないなぁ.まぁ,新しいバージョンが出ることを知っている場合には新しいバージョンを新たに買うよりかは激安なのだけど.

NTEmacsの23に移行

IMEとかのパッチを当てたバイナリが2ちゃんねるのNTEmacsスレに上がってたそうで,そのバイナリを手に入れて22から23に移行.Vistaと7で使っているけど今のところ問題無し.

さて、話は通じたのだろうか?

議論15分の予定 → 語り150分の実際.

思考の整理って会社勤めでも必要だよね? 大丈夫なのかしら.答えそのものでなく答えに至る道を理解してほしいのだけど…

ま,話が通じたかどうかは現状を整理した明日の発表を聞けば分かるかな.

天気がいいのでカメラを持って東大へ

昨日の雨のせいかだいぶ葉っぱが落とされたようで,石畳が黄色い絨毯になっていた.休日なのでちょっと人が多すぎるのがカメラ構えるには微妙… でも平日だと掃除されちゃうし…

そして安田講堂前というか中央食堂の屋根たる芝生.だいぶ前から青々と茂って綺麗だから撮ろう撮ろうと考えていたのだけど… たしか先週辺りに刈り揃えられてしまっているのを見た気がする.葉先が伐られてしまっていてものすごく残念.

引きこもる

先週末は外乱により引きこもるのに失敗したので,今日は早朝に35kmほど自転車で散歩してから一日引きこもってBALDR SKYをやった.

とりあえず,気づいたら日がかわりそうな勢いではあったけど空ルートのエンディング一つまで達成.はなし的にはマブラヴ? 平行世界ネタは尽きないけどキッカケと現象に共通点が… 繰り返しゲーの意味付け的には妥当なのかなぁ? YU-NOみたいにアクティブに動ける方が面白いのだけど.

そして武装がまだまだ育っていないし最後に手に入ったプラグインが何のためにあるのかよく解らんしもうしばらく遊ばないとならないらしい.

Google 日本語入力を入れてみた

とりあえずインストールが簡単でよい.

そして,「このはなの」で木花之佐久夜姫が候補に出てしまうサジェスト機能がすばらしい(姫が毘売でないのが微妙だけど).

携帯には予測入力が大分前から普及してたけどPCでは見たことなかった気がする.まあ,PCだとキーボードがまともだから予測入力とか必要ないとされてたのだろうけど.でも,よく打つ単語とか変換しにくい単語とかは予測入力できるとPCでも楽.

Googleのだと情報抜かれまくるんじゃないかとかものすごく心配になるけど暫く使ってみようかと思う.

ちなみに,富士山の8合目より上は浅間大社の境内である(登山道と富士山測候所は別らしい.広さ的には約120万坪だとか).そして浅間大社は静岡県富士宮市にある.なので富士山は静岡のもの.

めるせんぬついすたを理解した?

擬似乱数の生成でよく使われる方法は,過去の乱数のいくつかから次の乱数を作るという生成法.至って自然な考え方だけど,質の良い擬似乱数を作るには過去の乱数から次を作るところに沢山の工夫が必要になる.

n個前までの値を足し合わせて新しい値を作るだけだと,n次の原始多項式に対応した足し合わせをしても所詮 2^n-1 周期のM系列にしかならない.ワードサイズがいくつであろうが,ワード内の各ビットは独立にM系列なだけで,ワードサイズに依存せず 2^n-1 周期にしかならない(実際に乱数として出力する際にビットをごちゃ混ぜにする調律が行われるが,あくまで出力時に混ざるだけであって再帰部分では混ざらない).これがいわゆるGFSRというやつ.

で,単純に足し合わせるのではなく,ビットの系列を再帰時にごちゃ混ぜにしてしまう(定式化上はワードに対して行列をかける操作)のがTwisted GFSRとかいうやつ.こいつはワードサイズを w とすると,w本のビット系列がくっついでしまっているので,全体としては nw 次の多項式で次のビットを計算していることになる.なので,この多項式が原始多項式であれば,2^nw-1周期とかいうむちゃくちゃなM系列になる.

が,適当に考えた混ぜ方が原始多項式に対応するかどうかの判定がむちゃくちゃ難しいところに問題がある.

で,それを早く判定できる方法を考えて,実際に良い混ぜ方を提案したのがメルセンヌツイスタ.ぶっちゃけメルセンヌツイスタの貢献ってのは,原始多項式の高速な判定法の提案と,それを上手く利用できる生成式のクラスを与えたことだと思う.MT19937作りましたじゃない.

だがしかし,原始多項式の高速な判定法は理解して(見て)いない… これではメルセンヌツイスタを理解したことにはならないね.

VNCで画面更新されない@Ubuntu 9.10

視覚効果を有効にするとVNC接続時にクライアント側の画面更新がされてくれない….イベントの処理はされているようで,アイコンクリックしてサーバ側でちゃんとソフトが立ち上がったりはする.でもその結果がクライアント側に表示されない.

視覚効果をなしにすると問題なくクライアント側の画面が更新されるので,効果なし状態で使い続ければよいのだけど… それはなにか負けた気分なのでどうにかしたい.

うーん,8.04の時にはcompiz動かしっぱなしでも問題なかったんだけどなぁ… ちょっと原因不明.nvidiaのドライバのバージョン変えても駄目だしクライアントソフト変えても駄目だし.あー,遠隔で作業しづらい.

うーん,vnc4serverで別のセッションを立ち上げてそこに接続する分には問題ないから独立したリモート作業自体はできる.が,門がしまるから帰ろうとかやったときに中断した作業をリモートで継続するのは難しいなぁ.

一応,イベントは転送されているのだから,リモートから接続して視覚効果を切り替えて接続し直せば問題ない気もしてきた… でも視覚効果を切り替えるには普通には手間がかかるので,簡単に切り替えられる方法を見つけなければ.

で,普段はcompiz使っておいて,デスクトップへのリモート接続が必要な時にリモートからデスクトップの視覚効果をなしにする,泥臭い方法を編み出した.下の 1 と 2 が前準備で,3 と 4 をリモート接続が必要な時に行う.

  1. 適当なvnc serverでデスクトップとは別のスクリーン1を起動しておく.
  2. gconf-editor でショートカットキーの設定を入れる.
    • /apps/metacity/keybinding_commands/command_1 の値を gnome-appearance-properties --display=:1 にする.
    • /apps/metacity/global_keybindings/run_command_1 の値を <Control>F1 にする.
  3. リモートからデスクトップに VNC で接続し,スクリーンのロックを外してから Ctrl+F1 のショートカットキーを発行.
  4. スクリーン1にVNC接続して,立ち上がっているはずの外観の設定で視覚効果を「なし」にする.最初から「なし」になってたら,別の選択をして,エラーが出たら「なし」に再度設定しなおす.

これでデスクトップ側の視覚効果がなしに切り替わって,VNCの画面更新ができるようになる.やってることは,デスクトップの外観の設定の変更をvnc serverで用意した別のスクリーンでやっているだけ.vncserverで用意したスクリーン上で起動した外観の設定では,デスクトップ側の設定を変更できない.なので,デスクトップ側で外観の設定を起動しつつ,その操作を別スクリーンでやるという手段に出た.とりあえずこれで目的は達した.問題があるとすれば,これをやった後にcompizを再設定するのが面倒だということくらい.

こんな回りくどいことせずにショートカットキー一発で外観の設定をなしに出きると楽なんだけどなぁ.gnome-appearance-properties のソースとか読めば分かるのかなぁ?

忘れがちなこと~署名のセパレータ

メールにつける署名と本文とのセパレータは "-- " (RFC3676).

これで区切っておくと,まともなメーラなら引用時に署名を省いてくれる.

DSの海腹川背を買った

研究室のRAIDのHDDがひとつ壊れてくれたので付っきりでリペアとバックアップをしましょうねと思ったけれどあまりにも暇なのでDSの海腹川背を買ってきた.夜遅く(10時)までやってるヨドバシえらい.

感想:DSliteでは操作しにくい.

どれくらい操作しにくいかというと,三連リュックは余裕だけど難しいほうのオタマジャクシで死にまくるぐらい.旬のほうはまだまだ.

れべるあっぷ

(ちゃららららっちゃんちゃーん) emokenは助教にレベルアップした.

演習の講義を受け持つことになった.

名刺を作り直す必要が生じた.

年末が忙しくなった.

給料が(ry.

Home > Archives > 2009年12月

Search
Feeds

Page Top