コグノスケ


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/02 19:21)

コメント一覧

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

編集者:すずき(2023/07/11 15:46)

コメント一覧

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



2007年11月4日

奈良

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

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

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

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

複雑かつ不親切

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

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

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

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

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

編集者:すずき(2007/11/06 20:15)

コメント一覧

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



2007年11月5日

全て記録される

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

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

今は亡き

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

編集者:すずき(2007/11/08 21:25)

コメント一覧

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



2007年11月6日

screen

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

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

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

編集者:すずき(2007/11/08 21:51)

コメント一覧

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



2007年11月7日

十分は厳しい

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

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

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

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

編集者:すずき(2007/11/08 22:14)

コメント一覧

  • hdkさん(2007/11/08 23:53)
    不等号でかくと十分のほうが大きい感じがして、その不等号の向きがそのまま、A ならば B の記号になるという感じで覚えました。そのおかげで今でもすぐわかったよ! まあ「必要条件」はそのまま理解しようと思えばできなくもないですが。(x=0 が xy=0 に「必要」ではないですよね。) 十分のほうはわからんなぁ。
  • すずきさん(2007/11/09 19:55)
    ああーなるほど、不等号の向きって覚え方もありですね。
    不等号とベン図の広さは逆になってしまいますけど、そもそも必要十分をベン図で考たことなかったの気にならないっすね…。
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/09 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人以上)って話を聞いたときですよ。男性陣は会社の寮の人だからまだしも、女性陣をどうやって集めたんだろうか…?主催者の方の人脈に感服するのみです。

編集者:すずき(2023/09/30 14:45)

コメント一覧

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



2007年11月18日

バッテリー上がりの予想外の原因

目次:

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

バッテリー交換

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

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

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

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

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

もひとつ予想外デス

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

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

編集者:すずき(2023/09/30 16:15)

コメント一覧

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

コメント一覧

  • hdkさん(2007/11/23 11:31)
    ファイル名間違いw
  • すずきさん(2007/11/26 00:36)
    あれま。直しました。
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/02 21:12)

コメント一覧

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



こんてんつ

open/close wiki
open/close Linux JM
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 2024年
open/close 過去日記について

その他の情報

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