月別アーカイブ: 2006年4月

できたー

自転車組み上がりました。
ペダルとか全部込みの総重量は 9.5kg 。
(自転車持って体重計に乗って測ったんだから、適当なもんですが)
まあ、いいんじゃないですかね。
メーターは結局、いろいろあってシマノのやつになりました。ちゃんとギア比とかがでるのが面白い。
写真はまた後日。

東大戦とか

昨日は昼間に神宮球場いって、東京六大学野球の慶應ー東大戦の応援。そりゃ勝ちましたよ。
教職員証でもちゃんと学生券買えるのな。まあ、見た目が学生証とあんまり変わらないので、球場の人にはわからないだけなのかもしれないんだけど…
こんどはもうちょい人数連れて行きたい。なにしろ明治戦だし。やっぱり勝ちたいし。
(相変わらず慶應は明治に弱いのだ)
夜は前川君の結婚式2次会。中学とか高校の同級生にいっぱい会えた。みんな元気で何より。
おめでとう、お幸せに。

自転車進捗 (2)

主要部品の取り付けがおわって、あとはチェーンを掛けてワイヤを通すだけ。
と書くと簡単そうなのだけれど、変速系や制動系のワイヤの調整が一番大変なのよね。
チェーンは、購入時の状態だと粘性の高いオイルがついていて、これはさび止めなんかにはいいのだけれど、このまま使うよりは一度脱脂して粘性の低いオイルで潤滑してやるのがよい。チェーンの脱脂には油性あるいは水性の脱脂洗浄剤を使うとか灯油を使うとか、いろいろやりかたがあるが、僕は手が荒れやすいのでいつも水性の脱脂洗浄剤を使っている。普段の洗車なんかには薄めて使えるし、原液で使えば超強力だ。プラスチックのトレーにチェーンを置いて脱脂洗浄剤を流し、ゆすったりしながらしばらく浸けてやるとチェーンのオイルが抜けて白濁してくる。これを3,4回繰り返せばだいたい OK だ。仕上げにちゃんと水ですすいで、雑巾で拭いて終了。
あと、使おうと思っていた CATEYE の double wireless な speed/cadence メーターは、センサがクランクと干渉して取り付けられないことが判明。ふつうのケイデンスつきの有線式メーターにするか…
いろいろがんばる。月曜にはこれに乗って出勤だ。

6600 Ultegra

さっきセキヤから電話があって、注文していたものが揃ったそうだ。いつ取りに行けるかな…
遅くても日曜の午後にはいけるので、日曜の夜までに組み上げて、週明けには多摩川サイクリング道路あたりでシェイクダウンです。

Bessa

後輩がもってる、Bessa なんとか、という距離計連動式のカメラを触らせてもらった。
ファインダーの作り込みがいまひとつなのだが、等倍、というか、ただの透過式のファインダーは、レンジファインダーのカメラの存在意義的にはいいのかもね。空気のような存在感。
けっこういい感じの重さだった。惚れちゃうかも。
でもね、FE2 買ったばっかりだし(笑)。

自転車進捗

– サドルバッグと携帯用の工具類
– 前後の灯火類
– メーター
– ボトルケージ
などを揃えた。ボトルケージと工具以外は、ほとんど余っているものを流用する感じ。はやく部品そろわないかなー。
あと、バーテープなんかも買ってきた。
WH-R550 で 10s のスプロケ使うにはスペーサーがいるのかー。ううむ。
カンパのホイールはどうなんだろう…

FreeBSD で空きメモリ容量を取得

FreeBSD は sysctl でいろいろわかる。top のソース (machine.c) とか読めば簡単。

#include <sys/types.h>
#include <sys/resource.h>
#include <sys/sysctl.h>
#include <sys/vmmeter.h>
#include <stdio.h>
#include <unistd.h>
#define UNIT (1024*1024)
int getsysctl(char* name){
int mib[4];
size_t len = 4;
int size;
sysctlnametomib(name, mib, &len);
if (sysctl(mib, 4, &size, &len, NULL, 0) != -1)
return size;
return 0;
}
int main(){
int pagesize = getpagesize();
int pa, pi, pw, pc, pf;
pa = getsysctl("vm.stats.vm.v_active_count");
pi = getsysctl("vm.stats.vm.v_inactive_count");
pw = getsysctl("vm.stats.vm.v_wire_count");
pc = getsysctl("vm.stats.vm.v_cache_count");
pf = getsysctl("vm.stats.vm.v_free_count");
printf("active: %d\n",   pa * pagesize / UNIT);
printf("inactive: %d\n", pi * pagesize / UNIT);
printf("wired: %d\n",    pw * pagesize / UNIT);
printf("cache: %d\n",    pc * pagesize / UNIT);
printf("free: %d\n",     pf * pagesize / UNIT);
return 0;
}

MacOS X で空きメモリ容量を取得

MacOS X の top とかで表示される空きメモリ容量を、自分のプログラムからシステムコールとか使って取得したいなー、と思ってたのだけれど、どうも sysctl ではダメらしい。で、いろんなフリーのツールのソースを読んだりしてびびっときたのが host_statistics() というやつだ。Mach のシステムコールらしい。

直接参考になったのはこれ。ユーザランドは BSD だけど、カーネルは Mach なんだよなー、なるほどなー、という感じだ。

C のプログラムにするとこんな感じ。

#include <stdio.h>
#include <mach/mach_init.h>
#include <mach/host_info.h>
#include <mach/mach_host.h>
int main(){
vm_statistics_data_t page_info;
vm_size_t pagesize;
mach_msg_type_number_t count;
kern_return_t kret;
pagesize = 0;
kret = host_page_size (mach_host_self(), &pagesize);
count = HOST_VM_INFO_COUNT;
kret = host_statistics (mach_host_self(), HOST_VM_INFO,
(host_info_t)&page_info, &count);
if (kret == KERN_SUCCESS){
unsigned int pw, pa, pi, pf;
pw = page_info.wire_count*pagesize;
pa = page_info.active_count*pagesize;
pi = page_info.inactive_count*pagesize;
pf = page_info.free_count*pagesize;
printf("wired %d\n", pw);
printf("active %d\n", pa);
printf("inactive %d\n", pi);
printf("free %d\n", pf);
}
return 0;
}

実行すればこうだ。

% ./a.out
wired 136630272
active 330928128
inactive 348598272
free 526020608

めでたい。FreeBSD では sysctl でいけるんだけど、Linux は procfs みるしかないのかな?