2007年9月30日日曜日

人間ドックに行ってきた

今年も人間ドックに行ってきた。
結構酷い貧血らしい。去年は軽い貧血って言われたので、鉄分とか多少意識して採ってたつもりなんだけど。
あと、初めて"やせ"ってかかれた。あと1Kg足りない。
それ以外は特に問題なしらしい。

採血した後、だるかったのは、貧血のせいなんだろうか?



2007年9月29日土曜日

jdk1.6.0_03

なんかきた。


$ java -version
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode)

nioのSelectorで、Linuxのepollをつかう方法

java -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider



2007年9月22日土曜日

java genericsの型パラメータ

Collections.emptyList()の戻り値を、そのまま別のメソッドに渡そうとしたら駄目だった。
面倒くさいなー。戻り値が使われるメソッドの引数の型から、型を推論できないものかな?
下に書いたとおり、returnなら大丈夫なのに。

import java.util.*;
public class Main {
  static class A {}
    public static void test(List<A> a) {}
    public static List<A> getEmptyList() {
      return Collections.emptyList();
    }
    public static void main(String[] args) {
      test(Collections.emptyList());            // これはList<Object>と判断されるので駄目
      List<A> a = Collections.emptyList(); // 一回代入して推論させれば出来る。
      test(a);                                              // 最適化されるだろうけど書くのが面倒くさい
      test(getEmptyList());                        // こんなのはできる
    }
}



2007年9月16日日曜日

ゲーム機分解

たまってたメールを消化していたら、NEニュースに東京ゲームショウにNE分解班が出展しますっていうのがあった。
良さそうな企画。おもしろそう。

私も、小学生ぐらいの頃は、ファミコンの本体とかカセットとかばらしてたなぁ。適当にLEDつけてみたりしてた。
結局ソフトの方に興味を持って、そっちに進んだけど。



PythonでH2を使ってみる(on Windows)

たまに使ってる、H2をPythonから使えるか試してみた(使い始めた頃は、PureJavaなSQLiteがあるの知らなかった)。

H2が自前ODBCを捨てて、postgresqlのODBCドライバを使えるようにしたって言うニュースをみて、
やろうと思ってて、ずっと忘れてた。
とりあえず何の問題もなく使えるので、まああんまり書くことはないけど、
ちょっと検索してみても見あたらなかったので、メモっておく。

  1. H2をダウンロードしてきて入れる。Windows用インストーラーでも、Platform-Independentなzipでも。
  2. PyGreSQLlibpq.dllを探してきて入れる。8.2.4のlibpq.dllを見つけたのでそれにした。
  3. H2起動。h2.batかjava -cp h2.jar org.h2.tools.Serverでok。
  4. Pythonから使う

>>> import pgdb
>>> con = pgdb.connect(host="localhost:5435", database="test", user="sa", password="sa")
>>> cur = con.cursor()
>>> cur.execute("select * from INFORMATION_SCHEMA.USERS")
>>> for r in cur.fetchall():
    print r

['SA', 'true', '', '15']

portがPostgreSQL標準の5432じゃなくて、5435なのだけ注意すれば特に問題ないんじゃないかな。
現状の制限とか、接続情報も書いてあるので、見ておいた方がよさそう。



2007年9月14日金曜日

tab-widthは8に限る

tab-width=4の人が周りには多い気がするけど、やっぱり8に限る。
python, Javascript, R他のコードを書くときは、スペース2つでインデントして、スマートタブ。ぎっしり。たまに1スペースにしたりするけど。
java, C/C++, sh scriptはほとんどスペース4つで、スマートタブかな。残念ながらshellは書かないよ。
たまに、インデントをタブのみにすると、結構スカスカになって、なんか気持ちがいい。



2007年9月13日木曜日

日経NETWORK「ネットワーク検定2007」の結果

すっかり忘れていたが、結果がきてた。
正解と解説はあったけど、去年のみたいに、問題は公開されてないのかな?

30点満点で27点だった。なんだかわからんが、一問は無回答になってた。
3点落としたのは、全部、「ネットワーク機器を選択する力」で、5点中2点。

NICの写真を見てバスの種類を当てるやつは、無回答にするとは思えないんだけど、まあなんかミスったんだろう…

無線LANのは、IEEE802.11e/EDCAがなんだかわからなかったのが敗因かな。

  • IEEE802.11n
  • WDS
  • 宛先MACアドレスフィルタ
  • 電力線
  • QoS
IEEE802.11n、WDS、電力線はすぐ除外出来たのに、なぜかわからないけど、電力線通信を選んでる…PoEと勘違いしたのかなぁ。

ちょっと悩んだ記憶があるのが、IPSecのパススルーとは何かって問題で、やっぱり間違ってた。
選択肢は、

  • アグレッシブモード
  • NAT-T
  • 暗号化
  • パススルー
  • キープアライブ
NAT-Tと、暗号化と、キープアライブが違うことはすぐわかったけど、なんでアグレッシブモードを選んだんだろう…



2007年9月11日火曜日

最近の気になるもの

東銀座の駅で見かけた。電源ケーブルかなんか(電話線かも)のカバーに「マサル」と書いてあった。

マサル

製品のページを教えてもらった。やっぱり会社名だった。4号は分かったけど、58は何だろう?


東横/みなとみらい線の横浜駅にて、なんか変な画面だなと思って見に行ったら、エラーが出ていた。
延々と、ダイアログが出たり消えたりしていた。Windows2000らしい。ワトソン博士ひさしぶり。
トラブル対応集のPDFが気になる。

Quick

台風一過

台風が通り過ぎた9/7に、仕事場の近くで木が傾いてるのを見かけた。
折れてるのは、台風の後とかで見ることもあるけど、初めて傾いてる実物を見た。

台風

2007年9月6日木曜日

net-snmpのembeded-perlとld --as-needed

net-snmpのconfigureが、eval_pv, perl_eval_pv, Perl_eval_pvを見つけられなかった。
原因はLDFLAGSの--as-neededでした。

hideaki@akane ~ $ gcc pt.c
/tmp/cc2wn2PW.o: In function `main':
pt.c:(.text+0xd): undefined reference to `Perl_eval_pv'
/tmp/cc2wn2PW.o:(.data+0x0): undefined reference to `Perl_eval_pv'
collect2: ld はステータス 1 で終了しました
hideaki@akane ~ $ gcc -lperl -L/usr/lib64/perl5/5.8.8/x86_64-linux/CORE pt.c
hideaki@akane ~ $ gcc -Wl,--as-needed -lperl -L/usr/lib64/perl5/5.8.8/x86_64-linux/CORE pt.c
/tmp/ccu1yJt3.o: In function `main':
pt.c:(.text+0xd): undefined reference to `Perl_eval_pv'
/tmp/ccu1yJt3.o:(.data+0x0): undefined reference to `Perl_eval_pv'
collect2: ld はステータス 1 で終了しました


hideaki@akane ~ $ gcc -Wl,--as-needed -L/usr/lib64/perl5/5.8.8/x86_64-linux/CORE pt.c -lperl

はいける。

把握している範囲では、PHPとwiresharkでもはまる。



2007年9月4日火曜日

pyExcelerator

いままでCSVで出していたプログラムをいじって、pyExceleratorを使ったxls出力が出来るようにしてみた。
スタイルの設定が面倒だけど、それ以外は自分が使う範囲では、とても便利に使える。日本語も問題ない。

スタイルの設定が面倒なのは、writeでrowを作ってしまうと、あとからrowにset_styleしても、row全体にstyleが適用されない点。
先にrowにset_styleして、そのあとのwriteでもset_styleでつかったstyleを使えば、row全体が同じスタイルになる。

row = sheet.row(row_no)
row.set_style(style)
row.write(0, "aaa", style)
row.write(1, "bbb", style)



JFSのmountが出来なくなってはまった

会社の自分のマシン(兼NFSサーバ)が、sshで入れなくなった。コンソールから入ろうとしたら、パスワードを聞くところまでこないで刺さってるっぽい。NFS, httpdは問題なく動いてた。

Magic-Sys-Rqでsync後rebootしたら、/がrwでmount出来ない。
init=/bin/shで起動させても、mount出来ないので、FSが壊れたかとかなり焦る。

mount: / not mounted already, or bad option

上司の持っていたFedora7の起動できるDVDから起動して、mountさせても同じ。
gentoo 2007.0のlivecdでも同じだった。

やっぱりFSが壊れているのかと思い、jfs_fsckかけたら特に問題ない。
で、もう一回mountしてみたら、何事もなかったかのようにmount出来た。
cleanじゃないとmount出来ないのはいいけど、もう少しまともなメッセージを出してくれないと困る。



2007年9月2日日曜日

Dovecot+sieve+quota

新しいサーバのDovecotに入れてある、dovecot-sieveを新しくしてみた。

MANAGESIEVEのパッチを持ってきて適用。dovecot入れ替え。
で、dovecotのリポジトリから、新しめのをdovecot-sieveを取り出して入れた(どうせなら、1.1系と同じCMU sieve 2.3.8相当にしたかったから)

とりあえず簡単に書いて、フィルタリングさせてみたけど、これは便利。
mailerでの振り分けは止めた(休み明けとかで、3000通とかあると、振り分けに時間かかりすぎる)
Dovecot-LDA(postfix経由)は今まで使ってなかったから、みんなが使い出したときの性能が心配ではあるけど。

ついでにQuotaも設定した。IMAPで容量が見られるのは便利。
ただ、他にも使用量を見られる方法を考えておかないといけないな。


MANAGESIEVEのパッチを探しているときに、OpenSolarisでCPU使用率が高い問題の解決策を見かけた。
Solaris10だけど、確かに負荷が高くて、コンパイラもSunStudio12なので、これかもと思って-fast外したら
嘘のようにシステム全体が軽くなった。SunのForumにも記述を発見した。



ゼルダの伝説 夢幻の砂時計をクリアした

2週間ぐらいでクリアした。土日に集中してやる以外は、ほとんどやってないけど、まあ満足。

今までに、まともにやったゼルダ(初代、リンクの冒険、夢をみる島、時のオカリナ、風のタクト、4つの剣+)の中では、一番簡単だったと思う。4剣+はちょっと違うけど。
新しい操作系なのと、DSで新規の人が取り込みたいから、ぬるめなのかな。
まあ、謎解き自体もそんなに難しくない気がしたけど。最後まで、ヒントが親切だからかも。

わかっている取り逃しは、ハートx2、ちからのみなもとx1, ちえのみなもとx1、ゆうきのみなもとx5。
クリアしたんで、攻略サイトを見たけど、どれを取り逃したかわからん。ハートは、魚釣りと、射的だな。



gentoo hardened 2007.0

glibcのemergeがこけてはまった。

Gentoo SELinux 2007.0 Upgrade Guideにしたがって、

FEATURES="-selinux" PORTAGE_T="portage_t" emerge -u1 libsepol libselinux libsemanage checkpolicy policycoreutils selinux-base-policy

したら、glibcも更新対象になっていて、まずglibcのemergeから始まった。
コンパイルが終わって、ファイルのインストールが始まったと思ったら、
最後に、segmentation faultで落ちた。

実際には、新しいファイルが入っていないので、たぶんebuild installの処理で落ちたんだろう。

自動に選択されていたのが、glibc-2.6.1だったので、とりあえず、

FEATURES="-selinux" PORTAGE_T="portage_t" emerge -av1 =glibc-2.5-r4

してみた。HardenedのMLで、2.5がstableとか書いてあったので。
でも、同じところで落ちた(っぽい)。

SELinuxに直接関係あるlibselinuxとか以外なら関係ないかと思って、

emerge -av1 =glibc-2.5-r4

にしたら、うまくいった。

そのあとは、問題なく動いてるっぽい。