Home > Archives > 2006年04月

2006年04月

ハルヒの憤慨読了

世の中平和だなぁ.

いまだ

200keys/min にとどかない.間違いを無くす方向で練習しないとダメなきがする.はぁ

自転車届く

とりあえず注文しといたのが届いたのでそのうち慣らしで遠出してみるか.サスペンションにもさっさと慣れないと危ないかも知れない… 変にはねまくるから.

Dvorak配列へレジストリ変更

とりあえず KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts 以下のエントリ内で 「Microsoft IME Standard 2003」 と 「日本語」 の Layout File に DVORAK のDLL(kbddv.dll) を指定してみた.たいていのソフトは「Microsoft IME Standard 2003」 だけを指定しなおせば問題なさげだったのだがMicrososft Office を使う場合には 「日本語」のDLLも差し替えないとうまくいかなかった.なかなか不思議な処理になっているらしい.あと,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters でPS/2 のドライバ設定(?)のところでDVORAKに変更できる気もするけどOverrideKeyboardSubtype とかがわからず断念.これを変えればログイン時の配列も変わるのだろうか?

プログラム書くのが遅い…

Dvorak でも英単語はそれなりに打ててきたけどプログラムを書くのはまだまだ遅かった.くだらない探索問題を書くのに一時間半もかかるとは… 特にデバッグ出力を吐くコードの埋めこみが遅くてこまる.もう少しプログラムを書いて練習せねば.

ハブを分解…

しようとしたけど薄い15mmのスパナ(ハブスパナ)が無くて無理だった.別の厚さはあるのだが… ロックリングをまわすやつと併せて買っておこうかなぁと思わなくない.

自転車壊れる

朝通学中に自転車の後輪に何か違和感があると思っていたら昼に乗ったとき軸が壊れた.5年間乗ってきたがさすがに寿命なのだろう.まあ,乗り方結構荒かったからなぁ… とりあえず新調せねば.

一週間で150keys/min

Dvorak にして一週間ちょっと経ったけど一向に速度は上がらず… まあ,ほとんど練習してないから早くなる理由は無いのだけど.

今日も今日とて

秋葉へ出向く.毎週行かなきゃならないのは少々面倒な気がしてきた.まあ,今までと違う内容が聞ける輪講は悪くないのだが…

ループしないでソート

入力の要素数 n が与えられたとき,n 個の要素をループなしでソートするプログラムは簡単にかける(挿入ソートとか).特に,n! 個の出力命令と二要素の大小比較を条件文に持つ if-else のみでかける.では,この条件下で O(n log(n)) のソートはかけるだろうか? マージソートなら書ける気がするけど面倒なので放ってく.

新宿へ

クレジットカードの手続きをしにいったら予想通り迷ってみたり.とりあえず駅でかすぎ.

どぼらっく

130くらい… とりあえずプログラムを書くのにものすごくストレスを感じる.コードを打つ練習をしないと話しにならん.

f(f(x)) = -x となる実関数 f を求めよ

複素関数であれば f(x) = ix で f(f(x)) = -x となって簡単(虚軸を経由して回転すりゃいい).今は実関数しばりなので,とりあえず区間単位のシフトと反転を組み合わせる.適当な l > 0 に対して

f(x) = 0        if x = 0
       x+l      if x ∈ ( 2nl, (2n+1)l ]
       -(x-l)   if x ∈ ( (2n+1)l, (2n+2)l ]
       x-l      if x ∈ [ -(2n+1)l, -2nl )
       -(x+l)   if x ∈ [ -(2n+2)l, -(2n+1)l )
                        (n = 0, 1, ...)

イメージとしては実軸の半分を虚軸の代わりにして90度回転.f^m(x) = -x (m > 2) に用意に拡張可能.

そして今日の記録は 127keys/min.

今日は

110程度で.速く打とうとすると qwerty になってしまうためここから伸びない… あと,o と e,t と n,c と r がよく逆さまになってしまう(混線してるらしい)

とりあえず

94まで記録更新.ほんの少しずつ速くなってるような.

Dvorak配列

おもむろにキーボードの配列を Dvorak にしてみた.しかし,キー配置は覚えたけどタイピングスピードが 80keys/min しかでない.しばらくプログラムが書けないような…

マリブ

とりあえず飲めん.マリブミルクにして一杯飲んだが私には合わん.ということでダウン.

剰余の最適化

2^n で割ったあまりを求めるには 2^n -1 との AND をとる方が一般には速い.んで,コンパイラもそこらへんがわかっているので AND 演算に置き換えてくれるのだが… 以下の二つのプログラム

int main(int argc, char *argv[])
{
    int k = 0;
    for(int i = 0; i < 100000000; i++){
        k = k % 4;
    }
    return k;
}

int main(int argc, char *argv[])
{
    int k = 0;
    for(int i = 0; i < 100000000; i++){
        k = k % 4U;
    }
    return k;
}

では後者のほうが3倍くらい速くなる(倍率は環境によるかもしれないけど).両者のアセンブリコードを比べると

	xorl	%edx, %edx
	movl	$99999999, %ecx
	jmp	L6
	.p2align 4,,7
L5:
	andl	$-4, %eax
	subl	%eax, %edx
	decl	%ecx
	movl	%edx, %eax
	js	L10
L6:
	testl	%edx, %edx
	movl	%edx, %eax
	jns	L5
	leal	3(%edx), %eax
	andl	$-4, %eax
	subl	%eax, %edx
	decl	%ecx
	movl	%edx, %eax
	jns	L6
L10:
	leave
	ret

	xorl	%ecx, %ecx
	movl	$99999999, %edx
	.p2align 4,,15
L5:
	movl	%ecx, %eax
	andl	$3, %eax
	decl	%edx
	movl	%eax, %ecx
	jns	L5
	leave
	ret

のようになっており(gcc3.4.4),後者のほうが分岐が無いし速いのは当たり前.とりあえず問題点は「符号付の剰余は負数のときにめんどくさい」という点にある.その面倒な処理が分岐を必要として遅くなってしまうと.

ということで,負数なんて知らんという場合には明示的に符号なしであることを指定しておくべし.

TLCとかHID class とか

よくわからないけど Raw Input 使うのに必要そうなので必要なことだけ調べてみたり.とりあえず Top-Level Collections Opened by Windows for System Use やら Hardware IDs for HID Devices やらにより,RowInputDeviceの登録に必要な情報がとりあえず判明.

Device Type 	Usage Page 	Usage ID
Mouse           0x01             0x02
Keyboard        0x01             0x06

しかし,これらを RAWINPUTDEVICE 構造体に入れて RegisterRawInputDevices してもパラメータが違うとエラーが返ってる… なぞだ.とりあえず http://www.usb.org/developers/hidpage/ とか http://www.usb.org/developers/docs/ とかを眺めようか?

遠隔地からの起動成功

というわけで,遠隔地から自宅のマシンをWOLでうまく起動できた.これでPC内に忘れ物してもすぐに取りに行ける(ネットワークさえあれば).まあ,まだシャットダウンがうまくいくか試してないけど.とりあえず頭痛いので寝よう.

複数のキーボード制御

をしようと思ったら Row Input の API を叩けば良いらしい.これ使って入力がどのキーボードからきたかに応じてレイアウトを切り替えればキーボードごとにレイアウトを変えて使えそうだが… できるかどうかよくわからん.

静的NAPT + SSH x 2

内部のサーバ2台のSSHを異なるポートで外部からアクセスしようとしたら同じIPで異なるキーだからと SSHクライアントに文句を言われた… 言いたいことはわかるけどどうにかならんのか?

Basic認証

とりあえず,

echo -n "user:pass" | nkf -MB

とかしてユーザ名とパスワードをコロンでつないだ文字列をBase64コーディングして,それを

Authorization: Basic dXNlcjpwYXNz

とかして送ればいいと.echo に -n 付け忘れると少々痛い目に… どうでもいいけど本当にパスワード垂れ流しなのであまり使いたくないな.

WOL?

家のPCにデータを置き忘れることがあるので遠隔地からPCの電源を入れたい.ということで,WOLの実験をしてメインマシンがマジックパケットでたたき起こせることまで確認できた.あとはルータの動的なWAN側IPを補足してパケットを投げる仕組みを作れば…

ハイネ・ボレルの定理

マンガでわかるフーリエ解析 なるものがあると教えられ,内容を覗いたら「関数の直交」なる言葉が書かれていた.そこからの連想で,直交を扱うということは内積があるわけで,完備な内積空間はヒルベルト空間なわけで,さらにひとつ手前で完備なノルム空間はバナッハ空間だったな… と考え,そこで突然ハイネ・ボレルの定理って何だっけという疑問にぶつかった.定理自体は通常の位相を入れた R^n では有界閉区間であることとコンパクトであることが等価であることをいっているのだが,その証明を完璧に忘れていてとても気になったので調べてみたりした.

とりあえずコンパクトって何だっけとかいうとこから始め,開被服があったらそのうちの有限個で被服出来ることだったなと思い出しつつ,PlanetMath: proof of Heine-Borel theorem を追って証明を納得.さすがに3年以上もたってると結構忘れてるもんだなぁと再認識して終了.

涼宮ハルヒの憂鬱

これは何も知らずに視た人はどんな感想を持つのだろうか? 知ってる人間としてはOPからの丸々30分間のグダグダっぷりにころげ回らんと視てられんかった.とりあえずすばらしい出来になりそうな予感(京都アニメーションだし).

土産に栗せん茶せん

沼津の銘菓となっているのかなっていないのかよくわからないが,とりあえずここのところとか東海地方で売っている栗せんはおいしい.茶せんより栗せんのほうがよく売れたのでもう少し栗せんを増やしたほうがよかったか?

雨が怖いので…

新幹線で東京にかえる.箱根さえ越えてしまえば雨のせいで東海道本線が止まることも無いけど前に箱根の手前で止められたからなぁ.とりあえず明日の資料というかコメント入れの続きをやらねば.

久々に

綺麗な富士山を見れた気がする.静岡側を約半周したけどやはり裾野からの眺めが一番よいと思う.

Home > Archives > 2006年04月

Search
Feeds

Page Top