コグノスケ


2007年 11月 1日

もー!変なことするからこんがらがるんだよ!

GNU netcat 0.7.1(※)でポートの listen はできるのに、別のホストに connect しようすると無視されてしまいます。PC でコンパイルすると動くので、環境依存かなあ?と思って printf デバッグしていたら、複雑といえば複雑だけどしょうもない問題だったことに気づいてがっくり…。

以下は flagset.c の 135行目あたりにある int netcat_flag_count(void) という関数内の処理です。


char c;
int ret = 0;

while (c) {
  ret -= (c >> 7);
  c <<= 1;
}

この処理は c の中の 1 になっているビットを数える処理です。ret には 1 だったビットの数が格納されます。例えば c = 3 だったら ret = 2 です。

ぱっと見 ret -= とマイナスするの部分が奇妙に見えます。理由としては c の最上位ビットが 1(つまりマイナスの値)ならば、c >> 7 としたときに符号が維持されたままシフトされ、-1 になるためです。もし最上位ビットが 1 でなければ c >> 7 は 0 になります。つまり c >> 7 は -1 or 0 になるので、ret -= で符号を反転させて足してあげています。
極めてわかりづらいです。なんでこんなことするんでしょうか。

それはさておき、このコードの何が問題かというと、char = signed char だと決めつけていることです。世の中には char = unsigned char とするコンパイラもあります。というか実際、そういうコンパイラが目の前にあります。しかし大抵の人が char = signed char だと思っていることを踏まえると、char = unsigned char という設計は避けるべきだと思います。
このコンパイラを作った人は意地悪というか…ちょっとひねくれてたんでしょうね。

C 言語では char が signed char であるという決まりも、そもそも 8ビットであるという決まりすらないので、こういうコードを書くと変な環境に持って行ったときにはまります。え、変な環境を作る方が悪い?ま、それも一理あります。

ちなみに unsiged char のときは、c >> 7 の計算で符号拡張されませんので、c >> 7 が -1 or 0 になって欲しいはずが 1 or 0 になってしまい、ret が減算されてしまいます。すると正負が逆になってしまって、結果 netcat は引数がねーよ、と判断してしまうわけです。こんなことになるくらいならいっそ signed char なんて使わずに unsigned char を使った処理の方が感覚的にわかりやすいと思うのは私だけでしょうか?
GNU の中の人も変わってるわねえ。

まとめると GNU netcat は char = signed char と仮定した処理が入っていたので、char = unsigned char の環境に持って行くとおかしくなりますよ、って話でした。

それにしてもコンパイラ作者、GNU の中の人と、世の中にはひねくれ者が多いですなあ…。プログラムに限らず何事をやるにしても変な思いこみをしないように気をつけたいものです。

(※)FreeBSD や Debian GNU/Linux は違う netcat を使っているようです。GNU netcat を採用しているディストリビューションは少ないと思われます。

編集者: すずき(更新: 2007年 11月 2日 19:21)

コメント一覧

  • hdk 
    むかし使ってた LSI C-86 試食版も unsigned でしたね。SJIS を扱うには好都合でした。そのプログラムは... 自分でかくと &1 と >>=1 で書きそうだ。(当然 unsigned じゃないとおかしくなりますねw) x86 アセンブリで書くとキャリーフラグを使ってコンパクトにかけます。 
    (2007年11月02日 21:05:11)
  • すずき 
    LSI C もかー。もしや DOS 時代って unsigned が普通?
    上記のプログラムですが、自分も書けと言われたら、素直に unsigned と、右シフト、(c & 1) で書きます。
    アセンブリかあ、x86 のことだから、一発でビット数える命令があってがっくり…なんてありそうですね。 
    (2007年11月02日 23:19:25)
  • hdk 
    MS-C は違ったと思うけど... 忘れました。さすがに一発で数えるのはないですよね。8bit の 1 のビットが偶数個か奇数個かの判断ならパリティビットで一発ですが。普通に書けばこんな感じかなあ。
    xor eax,eax
    l1: shr cl,1
    jnc l2
    inc eax
    l2: jnz l1
     
    (2007年11月02日 23:51:33)
  • すずき 
    >ビット数える命令
    さすがの x86 にもないすか。
    >パリティ
    そういやそんなビットが flags の中にありましたねえ。ARM にもあるかなーと思ったけど、なかったです。
    x86 ってほとんど使わない機能が満載ですね…。 
    (2007年11月03日 01:42:46)
  • hdk 
    縮めようとしたけど縮まらなかった... 32bit 版 (入力ecx,出力eax):
    sub eax,eax
    L1:
    stc
    adc ecx,ecx
    adc eax,0
    loop L1 
    (2007年11月04日 14:01:36)
  • すずき 
    短くないけど、テスト対象の両端に近いビットだけが 1 だと速いコード。
    xor %%eax, %%eax
    bc_again:
    bsf %%ecx, %%edx
    jz bc_end
    btr %%edx, %%ecx
    adc $0, %%eax
    jmp bc_again
    bc_end:
    (入力 ecx, 出力 eax, 破壊 edx, 長さ 15byte) 
    (2007年11月05日 22:33:19)
  • すずき 
    参考までに、hdk 氏の 1番目のは 9byte で、2番目のは 10byte でした。 
    (2007年11月05日 23:02:49)
open/close この記事にコメントする



2007年 11月 2日

どうせやるならとことんやろう

今日はコードを 2つ紹介(出典: ハッカーのたのしみ, Henry S. Warren, Jr., 滝沢ら訳)しますがどれもメチャクチャわかりづらいです。どちらも可読性なんかかなぐり捨ててとにかく効率を追った、ある意味潔いコードです。GNU netcat も中途半端に読みづらい変なコードを書くくらいなら、このくらいやって欲しかったなあ。

本についてですけど、前半はまだわかる気がしますが、後半はあまりにも頑張りすぎていて全然わからんです…。こういうコードを読んでいると、根性っていうか、ハッカー達の職人魂みたいなものを感じますよ。

ビット計算は奥は深い

さて 1 になっているビットを数える処理ですが、比較的わかりやすいコードを一つ例にとってみようと思います。


unsigned int x;
int count;

x = (x & 0x55555555) + ((x >>  1) & 0x55555555);
x = (x & 0x33333333) + ((x >>  2) & 0x33333333);
x = (x & 0x0f0f0f0f) + ((x >>  4) & 0x0f0f0f0f);
x = (x & 0x00ff00ff) + ((x >>  8) & 0x00ff00ff);
x = (x & 0x0000ffff) + ((x >> 16) & 0x0000ffff);

count = x;

以上は 32ビット用のコードです。ぱっと見だと、なんじゃこりゃ?って感じですね。このコードでは隣り合う桁を足していきます。最初は隣の 1桁、次は 2桁、次は 4桁という風に倍々ゲームにしていきます。
では 8ビットで検証してみます。

 x           = [   1][   0][   1][   1][   0][   1][   0][   0]
 1ビット毎の :     1,    0,    1,    1,    0,    1,    0,    0
 1 の個数    :

 x           = [   1][   0][   1][   1][   0][   1][   0][   0]
 x>>1        =       [   1][   0][   1][   1][   0][   1][   0][   0]
 0x55        = [   0][   1][   0][   1][   0][   1][   0][   1]
 
 x&0x55      = [   0][   0][   0][   1][   0][   1][   0][   0]
 (x>>1)&0x55 =       [   1][   0][   1][   0][   0][   0][   0][   0]
 x           = [   0     1][   1     0][   0     1][   0     0]
 2ビット毎の :   1 + 0 = 1,  1 + 1 = 2,  0 + 1 = 1,  0 + 0 = 0
 1 の個数    :

 x           = [   0     1][   1     0][   0     1][   0     0]
 x>>2        =             [   0     1][   1     0][   0     1][   0     0]
 0x33        = [   0][   0][   1][   1][   0][   0][   1][   1]

 x&0x33      = [   0     0][   1     0][   0     0][   0     0]
 (x>>2)&0x33 =             [   0     1][   0     0][   0     1][   0     0]
 x           = [   0     0     1     1][   0     0     0     1]
 4ビット毎の :               1 + 2 = 3,              1 + 0 = 1
 1 の個数    :

 x           = [   0     0     1     1][   0     0     0     1]
 x>>4        =                         [   0     0     1     1][   0     0     0     1]
 0x0f        = [   0][   0][   0][   0][   1][   1][   1][   1]

 x&0x0f      = [   0     0     0     0][   0     0     0     1]
 (x>>4)&0x0f =                         [   0     0     1     1][   0     0     0     1]
 x           = [   0     0     0     0     0     1     0     0]
 8ビット毎の :                                       3 + 1 = 4
 1 の個数    :
 よって x には 1 が 4つ含まれていた。

このように検証してみますと、1 の数を倍々でまとめていって最後には x の右端にビットの個数が集約されて計算されることが分かります。凄いんですけど、なんともトリッキーですねえ。

もう一つ似たようなコードで、パリティを求める処理が書けます。単純にパリティを求めるならば、全てのビットの xor を取れば良いのですが、この本では以下のように書きます。


unsigned int x, y;
int parity;

y = x ^ (x >> 1);
y = y ^ (y >> 2);
y = y ^ (y >> 4);
y = y ^ (y >> 8);
y = y ^ (y >> 16);

parity = y & 1;

以上は 32ビット用のコードです。やはりこれもぱっと見では、なんじゃこりゃ?って感じです。これも 2進数の 1桁分, 2桁分, 4桁分…と xor を取っていって最後に 32桁分の xor が y の右端に来るという仕掛けです。
では 8ビットでの計算の結果をご覧下さい。

 x    = [   7][   6][   5][   4][   3][   2](   1)(   0)
                                                `-----| xor
 x>>1 =       [   7][   6][   5][   4][   3][   2](   1)[   0]
 
 y    = [   7][ 7,6][ 6,5][ 5,4][ 4,3]( 3,2)[ 2,1]( 1,0)
                                          `-----------| xor
 y>>2 =             [   7][ 7,6][ 6,5][ 5,4][ 4,3]( 3,2)[ 2,1][ 1,0]
 
 y    = [   7][ 7,6][ 7-5]( 7-4)[ 6-3][ 5-2][ 4-1]( 3-0)
                              `-----------------------| xor
 y>>4 =                         [   7][ 7,6][ 7-5]( 7-4)[ 6-3][ 5-2][ 4-1][ 3-0]
 
 y    = [   7][ 7,6][ 7-5][ 7-4][ 7-3][ 7-2][ 7-1]( 7-0)
                                                  ~~~~~~

このように検証してみますと、うまく各桁が一回ずつ xor されるようにずらしながら計算していることがわかります。最後に y の右端に全てのビットの xor が計算されているのが見事ですね。

今時トリッキーなコードは嫌われる

現在はコンピュータが十分高速化していて、ソフトウェアの規模も大きくなっているため、速度より保守性を重視します。要は遅くて良いから誰もが読める普通のコードが求められます。どんなに速くても誰も理解できないトリッキーなコードは歓迎されません。

ただしそれは商業サーバー用のプログラムとか PC 用のプログラムでの話。もっと特殊な分野、例えば究極の速度を求める超高性能計算(計算用のライブラリとか)や、ハードがショボショボな組み込み機器などは、無駄に使える CPU やメモリがありません。というわけで、まだまだトリッキーなコードも出番があるんじゃないかなあ?

編集者: すずき(更新: 2007年 11月 6日 20:17)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 3日

.NET 1.1 の亡霊

何度インストールしてもまたインストールしろと言われる KB928366(Microsoft .NET Framework, Version 1.1 Service Pack 1 用セキュリティ更新プログラム)ですが、やっと黙らせることができました。

まずは Windows Installer Clean Up というツールをインストールして、起動します。


Windows Installer Clean Up

こんな画面が出ますので、.NET 1.1 と名の付く項目を全部 remove します。そのあと、.NET 1.1 と .NET 1.1 SP1 をインストールしてから、Microsoft Update で KB928366 をインストールすると成功しました。

にしても Microsoft Update はトラブルが多い。何でもかんでも一カ所でアップデートできるようにしたせいでしょうか。人ごとながら MS も検証大変そうだなあと思う…。

編集者: すずき(更新: 2007年 11月 3日 16:23)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 4日

奈良

奈良に行って唐招提寺の金堂(修理中)を見てきました。触れるくらい目の前に屋根瓦があるのはなんとも不思議な気分です。

行きは迷いました。名神高速 -> 近畿道 -> 第二阪奈道という道順のはずが、なぜか神戸の三宮に居ました。関西の高速道路は意味が分からん。

帰りも迷いました。R24 -> R163 -> R170 のはずが、突然コースアウトしていて県道 16号に入っていました。関西の下道は意味が分からん…。

関東では旅行先でもなければこんなに迷わなかったが、関西だと近所でなぜこんなに迷うのか。地図もあったし、4人も居たのに…。

複雑かつ不親切

帰り道、迷う理由を考えていたら、R170 からコースアウトしたわけですが、そこで一つ気がつきました。青看板が出現するタイミングが非常に遅いのです。

大抵の道では、分岐する地点の真上に看板があり、看板が見えたらもう手遅れです。本来行くはずだった道を悲しく見送るだけしかできません。

そして本日走った R170 はさらに上の作りでして、陸橋に完全に乗った後に「陸橋の下に」看板が出ます(※)。
「正解は『陸橋の手前で左に降りて、右折。』でした。残念っ…!」ってか。
道案内はクイズじゃねーぞ、いい加減にしろこの野郎が。

まあ、半分冗談で半分本気です。

(※)実は手前にも青看板はあるんですが「陸橋から左に抜けて、その後右折」なんて情報は読み取れません。無理言うな。

編集者: すずき(更新: 2007年 11月 6日 20:15)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 5日

全て記録される

会社でネットを見ているときに変なリンクをクリックすると、プロキシが検知して、業務に関係ないページは見んな、みたいなメッセージが出ます。ご丁寧にもシステムが「こいつ仕事してませんよ!」って上司にチクってくれるそうです。全自動でね。

どうせ仕事しない奴は何言ったって仕事しないんだから、ネット封鎖なんて意味がないような…。ま、それはさておき、プロキシの運用ポリシーは普通で、HTTP, FTP, HTTPS が通ります。大抵は正常に動いてますが、突然白紙のページを返したりしてくるお茶目さんなときもあります。過負荷かしら?

今は亡き

プロキシからの HTTP レスポンスを見て、どこの製品か見当付けたは良いものの、去年辺りに他社に売却されたらしくて情報がありません。そんな素敵なシステムを一体いくらで売りつけられ売ってくださっているのか知りたかったんですけど…残念ねえ。

編集者: すずき(更新: 2007年 11月 8日 21:25)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 6日

screen

今更ですが screen を使い始めました。Windows のタスクバーが仮想ターミナル 5〜6 個で埋まる(グループ化は嫌い)のも、それはそれで一興なんですけど。screen は研究室に居たときに hdk 氏が絶賛していたというか、氏の一部となっていましたね。

早速使ってみると、特殊なことをしなくてもスクロールして履歴を検索して、コピーペーストできたりしてナイスです。Ctrl+A が押しづらくて、bash と被ってるのがイライラします。早いところ変えなきゃ…と思いつつ変えてません。今はプログラム書いたりしていないので、それほど必要ないのです。

しかも使ってるサーバが毎日シャットダウンされるので、attach/detach という screen の本領が発揮できません。使い始める時期も場所も間違えた気がする…。いつか引っ越して自宅鯖を復活させるまでは、練習しとくか。

編集者: すずき(更新: 2007年 11月 8日 21:51)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 7日

十分は厳しい

高校の数学で習った「必要条件、十分条件」って覚えてますか?
x = 0 は xy = 0 の何条件か?
という奴です。いきなり言われても、ん、どっちがどれだっけ?ってなりますね。

ネットに丁寧な解説がたくさんありますが、自分はこのサイトでわりとすんなり理解できました。「十分から必要に流れる」という覚え方は良いね。

そして必要十分条件を誤解していた事もわかりました。語感からか厳しさの順が「必要十分>十分>必要」と感じるのでしょう、世の中では必要十分が間違って使われまくりですね。人のことは言えませんけどね。

上記サイトのベン図を見れば厳しさの順(つまり条件の狭さ)が「十分>必要十分>必要」ってことが分かると思います。既におわかりのことと思いますが、冒頭の問題は「十分条件」です。

編集者: すずき(更新: 2007年 11月 8日 22:14)

コメント一覧

  • hdk 
    不等号でかくと十分のほうが大きい感じがして、その不等号の向きがそのまま、A ならば B の記号になるという感じで覚えました。そのおかげで今でもすぐわかったよ! まあ「必要条件」はそのまま理解しようと思えばできなくもないですが。(x=0 が xy=0 に「必要」ではないですよね。) 十分のほうはわからんなぁ。 
    (2007年11月08日 23:53:30)
  • すずき 
    ああーなるほど、不等号の向きって覚え方もありですね。
    不等号とベン図の広さは逆になってしまいますけど、そもそも必要十分をベン図で考たことなかったの気にならないっすね…。 
    (2007年11月09日 19:55:27)
open/close この記事にコメントする



2007年 11月 8日

そういえば

高校、中学のときには語呂合わせとか、替え歌に乗せて覚えたなあ。世界史の時間にアルプス一万尺の替え歌で、中国歴代国家なんてのを教えてもらったっけ。懐かしいなあ…。

人身事故?

踏切に人が倒れていたとかで、50分くらい電車が止まっていました。今日に限らず JR 西日本は頻繁に遅れます。5〜6月には 2週間に 1回くらい遅れてました。

長距離運行の結果

Wikipedia 曰く、JR 西日本の路線は私鉄が併走している区間が多いので、より良いサービスを展開しようとしてかなり無理しているようです。確かに私鉄より速いし、列車も綺麗だし、一本で行ける距離が長いです。

じゃあ東と西はどのくらいロングランに差があるんでしょうか?ってことで、まずは JR 東日本の路線長(出典 Wikipedia)です。都心を突っ切るタイプを挙げておきます。

  • 埼京線(大崎 <-> 川越: 52.2キロ)
  • 京浜東北線(大宮 <-> 横浜: 59.1キロ)
  • 根岸線(横浜 <-> 大船: 22.1キロ)
  • 中央線(東京 <-> 高尾: 53.1キロ)

以上が都内を突っ切る長い路線です。中でも京浜東北線(直通根岸線)が長いかな?両者を足すと 80キロくらいです。大船って遠いんだなあ…。

対する JR 西日本はかなり長い距離を走ってきます。普通列車の西明石 <-> 京都ですとほぼ 100キロですね。

  • JR 神戸線(西明石 <-> 大阪: 55.9キロ)
  • JR 京都線(大阪 <-> 京都: 42.8キロ)

しかし JR 西日本にはもう一つ、新快速という編成があります。調べてみると、姫路 <-> 敦賀といった特急顔負けのロングランです。以下、始発から終点までのキロ数を計算してみました。

姫路 <- 東海道本線経由 -> 敦賀: 244.3キロ
JR 山陽本線(姫路 <-> 神戸: 54.8キロ)
JR 神戸線(神戸 <-> 大阪: 33.1キロ)
JR 京都線(大阪 <-> 京都: 42.8キロ)
JR 琵琶湖線(京都 <-> 米原: 67.7キロ)
JR 北陸本線(米原 <-> 敦賀: 45.9キロ)
姫路 <-> 近江塩津: 229.8キロ
JR 山陽本線(姫路 <-> 神戸: 54.8キロ)
JR 神戸線(神戸 <-> 大阪: 33.1キロ)
JR 京都線(大阪 <-> 京都: 42.8キロ)
JR 琵琶湖線(京都 <-> 米原: 67.7キロ)
JR 北陸本線(米原 <-> 近江塩津: 31.4キロ)
姫路 <- 湖西線経由 -> 敦賀: 224.8キロ
JR 山陽本線(姫路 <-> 神戸: 54.8キロ)
JR 神戸線(神戸 <-> 大阪: 33.1キロ)
JR 京都線(大阪 <-> 京都: 42.8キロ)
JR 東海道本線(京都 <-> 山科: 5.5キロ)
JR 湖西線(山科 <-> 近江塩津: 74.1キロ)
JR 北陸本線(近江塩津 <-> 網干: 14.5キロ)
網干 <-> 長浜: 216.4キロ
JR 山陽本線(網干 <-> 神戸: 65.1キロ)
JR 神戸線(神戸 <-> 大阪: 33.1キロ)
JR 京都線(大阪 <-> 京都: 42.8キロ)
JR 琵琶湖線(京都 <-> 米原: 67.7キロ)
JR 北陸本線(米原 <-> 長浜: 7.7キロ)
姫路 <-> 長浜: 206.1キロ
JR 山陽本線(姫路 <-> 神戸: 54.8キロ)
JR 神戸線(神戸 <-> 大阪: 33.1キロ)
JR 京都線(大阪 <-> 京都: 42.8キロ)
JR 琵琶湖線(京都 <-> 米原: 67.7キロ)
JR 北陸本線(米原 <-> 長浜: 7.7キロ)
播州赤穂 <-> 野洲: 191.6キロ
JR 赤穂線(播州赤穂 <-> 相生: 10.5キロ)
JR 山陽本線(相生 <-> 神戸: 75.5キロ)
JR 神戸線(神戸 <-> 大阪: 33.1キロ)
JR 京都線(大阪 <-> 京都: 42.8キロ)
JR 琵琶湖線(京都 <-> 野洲: 29.7キロ)
姫路 <-> 野洲: 160.4キロ
JR 山陽本線(姫路 <-> 神戸: 54.8キロ)
JR 神戸線(神戸 <-> 大阪: 33.1キロ)
JR 京都線(大阪 <-> 京都: 42.8キロ)
JR 琵琶湖線(京都 <-> 野洲: 29.7キロ)

最優先のくせに長距離だから、遅れると他の列車に多大な影響を及ぼすんですね。こんなのが 1時間に 4本も走ってるんだから、時間通りに来る方が奇跡なのかもしれない。今後 10分くらいは遅れても温かい目で見守ろうと思います。

編集者: すずき(更新: 2007年 11月 9日 22:00)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 12日

ぎりぎり復活

土日は風邪を引いて非常に調子が悪かったです。せっかくの土日なのに何も出来なかった、もったいない…。今日は熱はなんとかなりましたが、腹が痛い。

腹に来る風邪はあまり引いたことがないので、非常に参っております。同期に「目が死んでるぞ、大丈夫か?」って言われました。会社に来るくらいは大丈夫だったつもりなんですが、僕の気持ちは周りには伝わっていなかったようです。

ああ、さっさと帰りたいような、腹が痛いから動かずじっとしていたいような…。

編集者: すずき(更新: 2007年 11月 13日 21:00)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 13日

アンドロイド

例の Google Phone じゃなかった、Google Android を試してみました。といっても実機はこの世に存在しないので SDK 付属のエミュレータです。

とりあえず Hello, World 的なアプリをチュートリアル通りに作ったは良いものの、赤い丸が左右に揺れるだけで、何も画面が出ません。何でじゃろ?と思ってたら、あっさり動きました。Hello, Android. と画面に出ております。

やはり会社(昼休みにやったよ)、つまり直接外と繋げない環境でやったのが良くなかったのかも知れない。けど、それしきで動かなくなるものかね?

オレのそばに近寄るなああーーーー!

既にかなり有名かも知れませんが「ディアボロの大冒険」というフリーのゲームを見つけて遊んでいます。

ゲームシステムは簡単に言うと風来のシレンと同じです。ただし主人公は第五部のボス・ディアボロで、出てくるキャラも全部ジョジョ由来です。風来のシレンよりアイテムの種類が多いかな?

ディアボロが主人公である理由は、第五部の最後でゴールドエクスペリエンス・レクイエムにやられて「ボスが永遠に死に続ける」っていうところをパロったからみたいです。もちろん既に一発芸の域を遙かに超えていて、しっかり遊べるゲームです。一度遊んでみてはいかが?

編集者: すずき(更新: 2007年 11月 13日 21:52)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 14日

じゃば

アプレットで何か作ってこのページに置いてみようとか思ったんですが、特に何も思いつかず。ミニゲームでも作れれば一番なんだけどなあ。時間があまり無いのがきついな…。

やる気でねえ

以前から Java で何か作るとかなんとかいって全然モノになってないんですが、創作意欲が沸かない理由にやっと気づきました。

辞めてしまったパターンを思い出してみると、些細なことも逐一調べつつ書かなければならず、段々面倒くさくなってきてやめてしまうことが多いんですね。面倒くさくなる原因は Java に慣れていないせいですが、Java の便利なクラスライブラリも原因の一つではなかろうか。ライブラリが巨大すぎて何がどうなってるのかさっぱりよ。

そんな当たり前な事に、いまさら気づいている自分って一体…。何年プログラム組んでるんだよ…。

編集者: すずき(更新: 2007年 11月 18日 01:48)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 15日

すくりーーーん

最近少し screen の機能が見えてきたような気がします。便利なんですが、やはり Ctrl+A だと emacs の行頭コマンドと被っていて使いづらいです。

そこで screen 側のエスケープのキー割り当てを変えようと、.screenrc に書いたものの、華麗にスルーされております。書き方を間違ったのかなあ?

今は screen 用、そうでないターミナルを二個立ち上げて使っています。無駄なことしているのは重々承知してますよ…ええ。いつか直しますとも。

編集者: すずき(更新: 2007年 11月 18日 01:32)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 16日

歓迎会

配属されてからちょっと時間が空いてしまいましたが、職場のみなさんに歓迎会を開いていただきました。

仕事の愚痴は良い酒の肴になるようで。皆さんの話を聞いていると、職場の人間関係とか要注意人物の情報がゲットできた気がします。とはいえ話題に上る人たちには会ったこともなけりゃ顔すら知らないのでなんとも言えませんけど。

編集者: すずき(更新: 2007年 11月 18日 01:48)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 17日

バッテリーは死んだのだ

一ヶ月以上乗らずに放っておいたらうちの車さんが拗ねてしまって、全く動かなくなってしまいました。わかりやすく言うとバッテリー上がりなんですけど。普通はセルが弱く回ったりするもんですが、今回はセルどころか室内灯すら光りません。完っ全に死んでます。

バッテリーってご臨終させてしまうと内部がかなり傷むらしいので、近いうちに交換しなきゃいけません。あのバッテリー新品だったのにもったいねええぇぇぇ…。

原因はレーダー(速度取り締まり機発見器)がスイッチ ON のままになっていたせいだと思います。大学んときも、2週間くらい放置したらバッテリーが上げかけててあせったことがあったのに、全く学習してません。

放っておいたら絶対またやるから、いっそエンジン連動に改造するか、できないなら外すか…。

これがいわゆる

友人に誘われ神戸港の船上クルーズに行きました。見知らぬ男女が集っていたので、これがいわゆる合コンってやつ?といっても 150人くらい居たのでコンパというより、でっかいパーティーでしたね。

何より驚いたのは、女性陣は主催者の方が人脈で集めた(もちろん 50人以上)って話を聞いたときですよ。男性陣は会社の寮の人だからまだしも、女性陣をどうやって集めたんだろうか…?主催者の方の人脈に感服するのみです。

編集者: すずき(更新: 2007年 11月 18日 02:28)

コメント一覧

  • hdk 
    レーダー探知器、シガーライターソケットにさすタイプではないんですか? 今時の車でそこまで上がってしまうとMTの押しがけもできないな... 
    (2007年11月18日 10:23:39)
  • すずき 
    元々はシガーソケットに刺してました。使っていたらシガーソケットのヒューズが飛んじゃったので、文句言ったらどっかに直結されました。
    本体側に電源スイッチがあるけどつい切り忘れて年中電源ONになってしまうんだよなあ…。 
    (2007年11月18日 15:50:05)
open/close この記事にコメントする



2007年 11月 18日

予想外デス

昨日予想していた原因(レーダーのつけっぱなし)ではなく室内灯が付けっぱなしだったせいでした。うちの車はライトというライトが全て暗くて、忘れても全く気づきません。良くない作りです。

バッテリー交換

JAF に来てもらってエンジンかけてもらいました。5分くらいのアイドリング後にバッテリーが回復したかどうか確かめましたが、やはりセルが回りません。もはや補充電もできないくらいバッテリーが死んでいる模様です。

しゃーないのでオートバックスへバッテリー買いに出かけましたが、どうも車がおかしい。赤信号で止まると回転数が 500切ってライトが一瞬消えます。発電がおいついてないのかと思ってライトを消したり、N レンジに入れて吹かしこんでも全く安定しません。

思い返せば以前バッテリー交換したときもこんな症状が出てました。これは故障ではなく、バッテリーを外したせいでコンピュータの学習が飛んでしまって、アイドリングの制御が不安定になるんだとか。最近の車はほとんど同じ症状が出ると思います。

そのうち再学習すれば直るんですけども、今はバッテリーがご臨終しているので非常に困ったことになります。ちょっと間違えてエンストされると、もう二度とかからないんだからね。

R171 のど真ん中で立ち往生なんてアホ車に絶対追突されるので、左足ブレーキ&常にアクセル微弱解放しながらエンスト阻止して走ってました。変に緊張する運転でした。もうやりたくないな…。

もひとつ予想外デス

なぜかうちの車のバッテリー端子が交換されていて、純正のバッテリーよりかなりでかいバッテリーじゃないとはまらないという罠が仕掛けられておりました。バッテリー一個で 20,000円ですよ?泣きそうです。

自分でバッテリー端子なんか変えないし、以前は純正の端子だったはずなんだけどなあ?誰が変えたんだろうか?心当たりがない。

編集者: すずき(更新: 2007年 11月 18日 22:14)

コメント一覧

  • hdk 
    寒冷地仕様?ww 
    (2007年11月19日 01:36:26)
  • つかだ 
    うちのクルマはバッテリーを長く外したあとは、エンジンのかかりが悪くなりましたが、アイドリングは不安定にはならなかったね。最近の車じゃないからかっ。 
    (2007年11月19日 02:02:15)
  • すずき 
    〉hdk さん
    寒冷地仕様のバッテリーよりでかいやつでした。一体いつ変わったのやら?
    〉つかださん
    車の作りによっても違うかも。キャブレター車でもないかぎり症状が出るはず。
    コンピュータ制御も便利だけど、肝心の電気がないと困っちゃうねえ。 
    (2007年11月19日 21:27:40)
open/close この記事にコメントする



2007年 11月 20日

あっというまに冬

少し前まではいつ寒くなるんだろうと思っていたのですが、いきなり寒くならないで欲しいな。しかもなぜかマフラーと手袋が見あたらなくて困ってます。寒い…。

Kconfig

Linux カーネル 2.6 系のコンフィグに使われている Kconfig の説明書 kconfig-language.txt を訳してみた。超意訳です、恐らく間違ってます。

link kconfig-language-en-jp.txt(日本語訳-英語同時掲載)
link kconfig-language-jp.txt(訳文のみ)

このようなめちゃくちゃなクオリティでも、誰も責められないのがオープンソースの特徴ですね。しかし質が低いものを乱発していればいずれ誰も使わなくなって滅びる、という特徴もありますね。

編集者: すずき(更新: 2023年 2月 3日 13:15)

コメント一覧

  • hdk 
    ファイル名間違いw 
    (2007年11月23日 11:31:46)
  • すずき 
    あれま。直しました。 
    (2007年11月26日 00:36:22)
open/close この記事にコメントする



2007年 11月 22日

定時退社日

定時に帰る日でしたが、英語の研修によってそうもいかず。研修は仕事じゃないので休みになったりもしませんし。なんか間が悪いねえ…。

同期飲み

同期の人たちと高槻の KICHIRI で飲み会です。雰囲気重視の良い店です。その分はお値段に跳ね返ってきているのが難点かなあ。同期の人曰く「合コン向けの店」だそうです。うーん、そんな感じかもね。

9時くらいから始めたので帰りは 11時過ぎになっていました。

編集者: すずき(更新: 2007年 11月 26日 01:29)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 23日

箱根旅行 1日目

寝坊してどう考えても間に合わない状態になりました。とりあえず新幹線で小田原まで。途中で連絡して、先に食事していてもらうことにしました。

記念に一駅分だけ(小田原 -> 箱根湯本)ロマンスカーに乗りました。座っていたら座るなってアナウンスが流れていて嫌な感じだったので、立って外の景色を見ていました。しかし列車は遅い、周りは普通の民家、しまいに変なところで信号待ちで全然面白くねえ。

バスで箱根元町まで行って箱根神社に行きました。三連休ともあって、箱根はどこも混んでいますね。バスも例外ではありません。唯一の例外は箱根神社かな。

その後は芦ノ湖の海賊船(←こういう名前の遊覧船なんです)で遊覧です。湖の上を軽快に流してくれるのは良いのですが、非常に寒い。寒すぎる。そしてやはり人だらけ。

バスで下って今夜の宿の近江屋旅館へ。チェックイン後は近所の温泉に行って、宿で食事、飲み会です。宿の人が良きに計らってくれて、食事する部屋を飲み会スペースとして解放してくれました。すばらしいサービスね。

編集者: すずき(更新: 2007年 11月 26日 01:46)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 24日

箱根旅行 2日目

宿をチェックアウトして、箱根登山鉄道で強羅駅(終点)まで。登山鉄道はスイッチバックを駆使して急斜面をゆっくり上がっていく風情ある電車…なんですけど、今日は混みすぎです。後ろから押してくる空気読めないおばちゃんに、ひたすら抵抗してたら終点でした。

さらにケーブルカーで登る予定でしたが、クソ混んでいたので予定変更して、彫刻の森に行きました。だだっ広い広場に彫刻が置いてある斬新な美術スペースでした。まさに森。特設の美術館はなぜかピカソだらけでした。あとはステンドグラスの塔が高すぎて怖かったな…。ちょっと寒かったけど、面白かった。

その後はユネッサンで風呂に入り、帰りのバスが渋滞のせいで 2時間かかる(通常は 30分)と聞いて、歩きで下りました。途中でカツカレー食って登山鉄道の彫刻の森、小田急の箱根湯本、と経由して新宿まで。

新宿で解散して、ちかふみさんとつくばまで。盛りだくさんな旅行でした。

編集者: すずき(更新: 2007年 11月 26日 01:46)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 25日

つくば

大下さん、結城さんが出演するつくば薪踊りを見に行きました。

日本舞踊をやったことない人に、半年くらいの稽古を付けたそうです。今日の薪踊りがその成果発表という位置づけです。つくば市の教育企画(?)の一環なのだとか。

初めは半年の練習で公演なんて大丈夫なのか?と思っていたのですが、いらん心配だったようです。日本舞踊をバリバリやっていた人が見たら別でしょうけど、我々素人目には良かったと思います。

最後まで見たかったところですが、今日中に帰れなくなってしまうので途中で抜け出して大阪へ。楽しい連休でした。

ドラクエ IV

早速、帰りの新幹線の中でやってみました。1章でリムル南東の洞窟に突っ込んでいったら瞬殺されたので、もしや難しいのか?と思って、金貯めて最強装備で挑んだら敵が弱すぎでボスすら瞬殺。1章が終わってしまった…。

2章も同じ調子で突っ込んだら、カメレオンマンに瞬殺されました。アリーナが殴ってダメージ 2じゃ勝てんわ。1章のライアンは 1人で闘うので意外と強く(あるいは敵が弱く)設定してあったようです。

なんてやってたら京都に着いてしまったので、続きはまた今度です。

編集者: すずき(更新: 2007年 11月 26日 01:46)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 26日

コンビニ

駅にくっついてるコンビニの話。面積が狭いので品揃えに関しては言いませんが、店員がいまいちです。狭いからやること無いんでしょうけど、客の目の前で店員同士でグダグダしゃべってるのはいかがなもんかなあ。

この世から消えることが真のエコだと思う

巷にはエコという言葉が蔓延しております。電気代を減らす工夫としてこんな製品もあるようです。ワットチェッカーで数十円の電気代を節約するだけでエコってか?エキサイトビットがそう思ってるならそれでいいけどさ…。

ま、エコとか何とかはほっといて。この製品を「小型ワットチェッカー」と見ると 3,000円というのお値段は魅力的です。その値段だけに誤差が 10%もあって、3桁表示のうち 1桁は信用するに値しませんけど、家電の電力消費量が数 W 間違って表示されたところで何も起きません。個人で使う電機おもちゃとして楽しめると思います。

逆に、企業が省電力製品のデモをするときにこんな電力計を使って、しかも誤差(10%)程度の差を強調していたら、スタイルだけの技術力ゼロ企業だと疑って良いと思います。

参考として、恐らく安物の部類に入るであろうサンワサプライの TAP-TST5(6,500円くらい)の誤差は Max 2%です。
業務用と思われる横河電機の PR300(誤差 0.5%、5万円以上)なんてのもあります。一般人にはまず必要ないですね。

編集者: すずき(更新: 2007年 11月 26日 23:13)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2007年 11月 30日

リクルータ

今年の出身大学リクルータになりました。さすがにまだ細かいことは決まってませんけど、いずれ就活時期に筑波大学に訪れるでしょう。

風邪が長引くのはきっと部屋のせい

鼻&のどが調子悪いのがなかなか直りません。部屋が異常に乾燥しているせいだと思うのですが、加湿器はどこか見えないところがカビそうで嫌なんだよなあ…。

編集者: すずき(更新: 2007年 12月 2日 21:12)

コメント一覧

  • kawasaki 
    お待ちしています。
    時間があったら研究室にも顔を出してください。 
    (2007年12月03日 17:57:22)
  • すずき 
    時間があったらどころか、ぜひぜひ寄らせてもらいますー。 
    (2007年12月03日 20:59:51)
open/close この記事にコメントする



こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報