■ 9/1
2T の HDD が安くなってきたみたいなので、そろそろ買おうかなと値段を調べて
いた。2T の HDD が出てだいぶ経つので、そろそろ 4T とかも当たり前に出て
いるものだと思ったけど、まだ時代はそんなに進んでないのね。で、買うのは
良いけど、内蔵にしようか、外付けにしようか、どうしようかと悩んでいる。
外付けは、別途箱を買わないといけないし、もうこれ以上机の上にものを置き
たくないし。内蔵にすると電源が入れっぱなしになるので、寿命とか熱とか、
消費電力が気になる。フロント 3.5インチベイにスイッチ1つ付ければ解決かと
おもったけど、SATA って 3.3V もあるので3回路スイッチが必要みたいだし、
えらい線が細かそうだし。ちょっと保留だな。
■ 9/2
久しぶりに秋月電子のページなんかを見ていたら、今は 3W ぐらいのパワー LED
が売っていて、ウィンカーに使えるかもな、と考えていたりした。でも、放熱器
つきなので、だいぶ熱がこもりそうだし、そもそも熱が出るということは効率が
悪いってことだよなぁ。それと、昔は高かった青とか白の LED が、今は赤色と
値段が変わらなくなってきてる。たまには、電気モノでもやろうかな。
■ 9/3
7月に旅行していたときに、ヘルメットのスピーカがえらい聞こえ辛いので、何か
聞き取りやすくて面白い製品はないのか調べていたら、骨伝導のものがあった。
そう言えば、昔少し流行った気がするけど。で、色々製品を見てみたけど、えらい
値段が高いんだよね。多分、特許がらみなのかな、と思うけど。5千円ぐらいで
何か良い製品あればなぁ。
■ 9/4
旅行に行って、頼みの綱の携帯電話が電池切れ。PHS も入らないし、公衆電話を
探すという20世紀の生活をしていた。なんだか、携帯電話を持っている意味が
ないので、バイクに充電器を付けようかなと考えた。と行っても、7805 と2つ
ぐらいのコンデンサだけど。いっそのこと、USB の口にしたらよいのだけど、
防水型のがあるのかな、と探したらあるんだね。L-com の WPUSBAF という製品。
日本だと、小売しているところがなさそうだけど。おとなしくシガーソケットを
付けようかな。
■ 9/5
コンテナ船の情報を調べていたら、aprs.fi というサイトで船の場所がわかる
しくみがあった。調べていたら、aprs というアマチュア無線のパケット通信と、
GPS とを組み合わせて自局位置の相互認識に使われるみたい。ブログとかとは
違って、リアルタイムなのでこれはこれで面白そう。例えば、北海道で旅をして
いて、知り合いは今どこにいるのか、近くにいれば連絡する、みたいな使い方が
できるし。問題は、電波が届くかどうか、というところだけど。今度、もう少し
調べてみよう。
■ 9/6
昨日の APRS を調べていたのだけど、船にアマチュア無線局があるのも変だな、
と思って調べてみると、昨日のページの船舶の位置はAIS(自動船舶識別装置)と
いう仕組みを使っているらしい。2つほど、知っている船の名前を調べてみた。
さんふらわーふらの
http://aprs.fi/?call=i%2F431800070
ナッチャンWorld
http://aprs.fi/?call=i%2F431000445
wikipedia の AIS のページを読んでいたのだけど、位置がわかると、船の場所を
海賊に教えてしまうようなもんだし、海上保安庁の船は取り締まりもできないし、
漁船は秘密の漁場も教えてしまうものだし、運用するのは難しいものみたい。
確かになぁ、と思ってしまった。
■ 9/7
Skype のベータ版 5.0.0.123 が出ていたので、インストールしてみた。いつもの
ようにエモーティコンに追加がないか見てみたけど、どうもいつもと様子が違う。
エモーティコンの文字列が実行ファイルにないのである。周辺のファイルも見て
みたけど、やはりない。前のバージョンに比べて、バイナリが10M以上も小さく
なったので、圧縮しているのか、ネットワーク越しに取得しているのでしょう。
困ったな、ということで別な方法で調べた。結果、特に新しいエモーティコンは
増えてなかった。折角調べたのに、残念。
■ 9/8
昨日の Skype の件、バイナリに直接格納されていないものをどうやって検索した
のかと言うと、実行中のメモリをダンプして、その内容を検索した。使ったのは
Microsoft の User Mode Process Dumper というツールで、ダンプしたファイルを
バイナリエディタで確認した、という単純なこと。User Mode Process Dumper を
初めて使ったけど、意外と面白くて便利かもしれない。
■ 9/9
ちょっと gcc 4.1.2 on Linux な環境で C のプログラムを書いていて、バグが
出た。元々のコードは。
for(i=0; i<strlen(buf); i++){
sprintf(ret, "%s%02x", ret, buf[i]);
}
になっていて、あらあらサイズのチェックをしましょうよ、な感じで。16進数の
形式変換がなければ strlcat(無ければ strncat)で対処するけど、ここは。
for(i=0; i<strlen(buf); i++){
snprintf(ret, sizeof(ret), "%s%02x", ret, buf[i]);
}
と単純に置き換えたら、動かなくなった。元々の sprintf 自体、あまりお行儀が
良くない気がするけど、これを snprintf にしたたけで動かなくなったので、
原因特定に時間がかかってしまった。結局、もう1つバッファを作って、一度
そこに流してから、なんてことになったけど。とりあえず、2つの関数の違いを。
int i;
char ret0[16];
char ret1[16];
char buf[] = "abcde";
memset(ret0, 0, sizeof(ret0));
memset(ret1, 0, sizeof(ret1));
for(i=0; i<strlen(buf); i++){
sprintf(ret0, "%s%02x", ret0, buf[i]);
snprintf(ret1, sizeof(ret1), "%s%02x", ret1, buf[i]);
}
printf("%s %s\n", ret0, ret1);
こんなコードの結果は。
[toyota@zonama]$ ./test
6162636465 65
となる。知らないで使うと、大変なことになる、という教訓になった。
■ 9/10
家で使っている椅子が壊れたみたい。ダンパー式の上下するものなのだけど、
いつの間にか、座面が下がっているのである。調節して高さをあげてみても、
1週間もすると、下がってしまっているのである。多分、少しずつ下がって
いるので、なんとなくすぐには気が付かないみたい。ちょっと、ダンパー部分を
見てみたら、オイルが漏れている様子。モーターサイクルのフロントフォークの
オイル漏れのような感じ。フロントフォークならオイルシールとダストシールを
交換すれば済むのだけど、椅子のシールなんて売ってないだろうし。そもそも
このオイルって何のオイルだろう。お金がないので、しばらくこのまま使うけど
時間を見つけて家具屋で物色してみようかな。
■ 9/11
最近使っている CentOS 5.4 な環境で。複数のファイルがあって、それぞれの
日本語のコードが異なっている。vim でそのファイルを開けば、全て自動判別
してくれるので、変換する必要はないけど、vim だとちょっと重い。できれば
less で見たい。less は man less すると jam less のものが出るのだけど、
utf8 以外の文字コードのファイルは文字化けしていて見られないし(LANG が
ja_JP.UTF-8 の環境)。それが cat だと何故か JIS コードのファイルが見られ
たりする。
[toyota@zonama]$ ls -l
合計 16
-rw-rw-r-- 1 toyota toyota 167 9月 11 13:43 euc.txt
-rw-rw-r-- 1 toyota toyota 173 9月 11 13:43 jis.txt
-rw-rw-r-- 1 toyota toyota 167 9月 11 13:43 sjis.txt
-rw-rw-r-- 1 toyota toyota 250 9月 11 13:44 utf8.txt
[toyota@zonama]$ cat utf8.txt
日本國民は、正義と秩序を基調とする國際平和を誠實に希求し、國權の發動たる
戰爭と、武力による威嚇又は武力の行使は、國際紛爭を解決する手段としては、
永久にこれを放棄する。
[toyota@zonama]$ cat jis.txt
日本國民は、正義と秩序を基調とする國際平和を誠實に希求し、國權の發動たる
戰爭と、武力による威嚇又は武力の行使は、國際紛爭を解決する手段としては、
永久にこれを放棄する。
cat って coreutils に含まれているみたいで、CentOS の SRPM をダウンロード
してきて中を見たけど、よくわからず(真剣に見てないだけ)。大量の patch が
当たっているので、その patch を見たけど、日本語関係のものはなさそうだし。
個人的には、cat はそのまま表示してもらいたいのと、less になんとか日本語の
自動判別と表示をして欲しいのだけど、以前あった jam less のページは既に
消えてしまっていて、昔の patch でさえ入手が危うい感じ。その昔の patch に
しても UTF-8 は扱えないし。なぁんか、中途半端なんだよなぁ。lv を使えと
いうのもあるけど、手が less のタイプに慣れてるし、PAGER 変数を使っている
ものからも呼び出したりするし。悩みどころ。
■ 9/12
去年買った手元のドライブ Optiarc AD-7240S の対応メディアを調べていたら、
DVD+R9 と書いてあった。この R9 って何?と思って調べてみたら、DVD+R DL の
ことみたい。英語版の wikipedia にはちゃんと also called DVD+R9 と書かれて
いた。なんだか、ちょっと片面2層の色を見たことないので、今度買ってきて
試してみようかな。
■ 9/13
Gmail でメールを送信しようとしたら、見慣れぬウィンドウが出た。
https://mail.google.com のページから:
ファイルは添付しましたか?
メッセージに「添付」と書かれていますが、ファイルが添付されていません。
このまま送信しますか?
こんな機能があったのね。でも、私の文章には添付なんて言葉は入ってないし
(相手の前のメールには入っていた)、昨日同じメールに返信したときには、
何も出なかったし。なんだか、変な感じ。色々条件があるのでしょう。ちょっと
余計な機能のような気もするけど、添付忘れする人には便利かも。
■ 9/14
とある人に ssh でログインできるかやってみて、と言われて slogin コマンドで
ログインしてみたが、駄目だった。それを見ていたその人は、「いや、ssh で」
って言っている。同じです、と私は言ったけど、どうにも怪しい顔をしている。
slogin が ssh のシンボリックリンクになっているのを見せたが、なんとなく
まだ納得してない顔していた。無視したけど。私は、rlogin/rsh/rcp で慣れて
いたので、ssh も slogin も同じだけど、なんとなくログインは slogin で、
コマンドは ssh コマンドでと分けて使っている。多分その人は r 系のコマンドを
知らないんだろうなぁ、なんて思いながら。
■ 9/15
今日も CentOS 5.4 の話。
FILENAME_MAX の値を調べていたて、stdio.h(本当は bits/stdio_lim.h) の中を
見ていたら、FOPEN_MAX を見つけた。こんな感じ。
#if defined __need_FOPEN_MAX || defined _STDIO_H
# undef FOPEN_MAX
# define FOPEN_MAX 16
#endif
この値、OS で16のファイルじゃ少ないだろうから、1プロセスあたり16ファイル
だろうな、と思ったけどそれでも少ない気がする。man stdio.h をしてみた。
{FOPEN_MAX}
Number of streams which the implementation guarantees can be open
simultaneously. The value is at least eight.
だって。同時に open できる保障する値、らしい。ちょっとプログラムを書いて
100のファイルを open しても余裕だった。man stdio.h には FILENAME_MAX も。
{FILENAME_MAX}
Maximum size in bytes of the longest filename string that the
implementation guarantees can be opened.
とあって、保障する最大値。じゃこっちも、./././././a みないに 4096 文字の
ファイルを open してみたら、errno 36(File name too long) があっさり返って
きた。こっちはきちんと守らないと駄目みたい。
■ 9/16
久しぶりに湯船に浸かろうと、湯を入れた。が、数秒で給湯器が止まってしまう。
ガスのメーターのところの機械を見ると、流量オーバーと出ている。その機械の
リセットボタンを押すと、復帰したのだけど、給湯器を使うとまたガスが止まって
しまう。仕方なくガス屋に電話して聞いてみたら、急にガスの使用量が増えた
ので、ストップする機能が働いたとのこと。もう2、3回リセットすれば多分
使えるらしいので、やってみたら問題なく使えるようになった。どうやら小さな
マイコンが入っているらしく、使っていると学習するとか言っていた。それに
今週はそんなお客様が多いって。みんな考えることが一緒なのかな。で、この
ガスメーター、見ると電源を取っていないので、どっから取っているのかを設置
しているときに聞いたら電池なんだと。それも10年もつんだって。流量の統計を
取っているだろうから記憶領域もあるだろうし、学習しているのでそこそこの
計算はしているだろうし、PIC ぐらいの能力なんだろうけど、それで10年持つ
のは優秀だなぁ。リチウム電池なのかね。
■ 9/17
Dovecot v2.0.3 がリリースされた。このページ見たら、v2.0.2 を見落として
いたみたい。v2.0.0 のリリースからちょっと早めのペースでバージョンアップ
している感じだな。落ち着いたら、入れ替えしてみようかな。
■ 9/18
デジカメの写真を整理していたら、ドット欠けした写真が見つかった。気になった
ので、調べてみたら北海道旅行中の7月19日以降の写真に全てドット欠けがおきて
いる。カメラはオリンパスの μTOUGH-6000 で、メールを調べたら購入したのは
10月3日になっている。これは、保障期間内だ、と思って手元の領収書を調べて
みたが見つからず。もう一度メールをよく読むと、代引きで買っている。という
ことは、運送会社の領収書か。そんなの捨てちゃっただろうなぁ、なんて思って
もったいないけど、あきらめることにする。
■ 9/19
半分頼まれ事で、デジカメの写真のプリントをする必要があった。ちょっと、
値段の相場を web で調べてみたけど、1枚4円~35円と値段の差が結構あって。
細かいサービス内容を色々見てみたけど、安いところは基本料金が高かったり、
送料がかかったり、安いペーパーを使っていたり。なんだか、まとまった枚数じゃ
ないと安くならないし、相応な感じみたい。問題が一つあって、今回プリントする
写真はハガキサイズの KG 版にしたい。その大きさだと、やってないところが
あったり、L版だと安い所が KG 版だと高かったり。なんだか、調べ疲れて、適当な
ところでお願いしてみた。基本料金なしで、1枚20円しなかった。あとは手元に
きたとき、仕上がりがどうなっているか、だな。
■ 9/20
普段は見ない内側のサーバで dmesg したら。
arp info overwritten for 192.168.11.1 by 00:07:ba:xx:xx:xx
arp info overwritten for 192.168.11.1 by 00:0f:a3:xx:xx:xx
のようなログがあった。なんだこれは、と思ってログを確認すると、先月末の
ADSL モデムを取り替えたりしていた時期のものだった。と言っても、同じ機械
なので何で MAC アドレスがこんなに大幅に違うのか気になって確認してみた。
00-07-BA (hex) UTStarcom, Inc.
0007BA (base 16) UTStarcom, Inc.
1275 Barbor Bay PKWY
Alameda CA 94502
UNITED STATES
00-0F-A3 (hex) Alpha Networks Inc.
000FA3 (base 16) Alpha Networks Inc.
No.8 Li-shing 7th Rd.,Science-based Industrial Park
Hsinchu 300
TAIWAN, REPUBLIC OF CHINA
らしい。同じ企業名かと予想していたけど、違うみたい。そもそも、Yahoo は
MAC アドレスを持っているのか気になって見てみたけど、持っていなかった。
つまり、上のアドレスは製造元か販売元なんでしょう。よくわからないけど。
■ 9/21
昔、ワンセグの携帯電話を借りて家で見たとき、全く見れなかった。どこかに
中継局ができていないか見てみたら、今月大船に中継局が出来ているのを発見。
エリアを確認してみたら、微妙にエリア外っぽい。それに、NHK と TBS のみの
中継だし、垂直偏波だし。使えない。総務省のページで確認してみたら、今年
戸塚にも中継局ができる予定みたい。そっちに期待かな。
それにしても、中継局って神奈川県だけでも20局以上あるんだ。なんとなく、
無駄なような気も少しする。一般人の家の屋根に15エレ2列2段スタックとか、
現実的じゃないので、中継局がこんなにできるのでしょうかね。
■ 9/22
他人のプログラムを見ていたら、printf で \b を連発していた。これは一体何を
しているのだろうと調べると \b って backspace で、ASCII コードで 0x08 の
ことみたい。C 言語の教科書の最初の方に載ってたかもしれないけど、使った
ことがなかったから、すっかり忘れているようである。それはそれで良かったの
だけど、どうもうまく動いていないみたい。ちょっと試してみると、printf での
最後の \b が駄目っぽい。テストしてみた。
[toyota@zonama]% cat test.c
#include<stdio.h>
int main(){
printf("colou\br\n");
printf("programme\b\b\n");
}
[toyota@zonama]% gcc test.c
[toyota@zonama]% ./a.out
color
programme
\b は、1文字消すのじゃなくて1文字戻るということみたい。元のプログラムを
作った人は、勘違いしているみたい。私も勘違いしていたけど。そもそも \b で
対応ってちょっと苦しいよなぁ。ということで、\b を使わないように全体的に
書き換えてしまった。
■ 9/23
18日に書いたμTOUGH-6000 のドット欠けの件、駄目もとでオリンパスに送って
みることにした。買ったときのお店のメールと保証書を付けて、買った日にちと
いうことにして。駄目だったら、修理扱いでお金を払えば良いし。ここのところ
ちょっと貧乏なので、なんとか保証範囲内でやってくれれば、と願って。
■ 9/24
先週からデジカメのデータの整理をしている。これまで EXIF に GPS のデータ
なんかいらないよ、と思っていたのだけど、整理をしていると、場所があったら
あったで便利かも、と思うようになった。特に海外に行ったとき、これどこだった
かなぁ、なんて写真が結構あって。GPS 機能で電池の持ちが半分ぐらいになる
ぐらいだったら不要だけど、電池の消費が気にならないのだったら、次期デジカメ
候補の片隅に GPS のことを考えておこうと思った。
■ 9/25
テレビの上下に、地デジに変えろとうざいし、10分ほど時間があったので、近くの
大型電気店でテレビを見て、とりあえずアンテナかな、とアンテナの種類を確認
すると、アンテナ不要の OCN なんとかがお得ですよ、と言われる。ちょっとだけ
話を聞いたけど、とてもお得とは思えないんだよね。工事とかも家のテレビ線に
割り込ませたりして。面倒臭さそうだったので、聞くのをあきらめたぐらい。
どこがお得なんだか、という気持ちだけが残った。
■ 9/26
実家にちょっと寄ったら、親父の PC の調子が悪いとか。どうも、ドライバが
うまく入っていないみたい。CD-ROM から入れようとしたけど、このドライブも
認識してなくて。あーあ、ということで普段は XP しか触らないし、Vista も
触ったことのない私が、Windows7 を触ったりして。勝手がちょっと違うので、
どうもよくわからなかった。時間のあるときに USB 接続のドライブ持って、もう
一回行くことにした。
■ 9/27
ある外国の人からバイクの質問に、webike.net というバイク用品通販のページの
リンクが貼られていた。webike は海外用のページも持っているみたい。で、その
ページを見ていたら、"Akira Makoto" というものが出てきた。その他の英語も
かなり怪しい。元のページを見つけて見てみたら、Akira Makoto の元の単語は
「純正」だった。どこをどう読んだら、Akira Makoto になるのだろう。少し気に
なったので、検索していると rakuten の翻訳エンジンも Akira Makoto と訳して
いるみたい。なんか、不正使用を検出する変なトラップなのかな。考えすぎか。
■ 9/28
dovecot v2.0.4 がリリースされた。先月から、あのいつものバージョンアップの
ペースが続いている。最新版を追っている人には、ちょっと辛いかな、という
ぐらいのペース。multi-dbox を使っている人は、INDEX が変わるそうなので、
気をつけないといけないみたい。いつものように、dovecot.jp の更新だけ。
■ 9/29
仕事場所で。一斉に色々な席から警告音が。ただし、私の席では何も鳴らず。
携帯電話かとも思ったけど、一斉に鳴ることはないので、PC がウィルスでも検出
したのかな、と思った。が、実際は携帯電話が緊急地震速報を受信した音だった。
実際に聞いたのは初めてだし、もっている人も最初困惑していた。私は都内に
いたのだけど、結局揺れは感じず。揺れる前に来たら、感動するんだろうなぁ。
ま、私の PHS と SoftBank の携帯電話は、速報を受信できないけど。
■ 9/30
なんだか、basename 関数を使っているところの動作が怪しかったので、ちょっと
man 3 basename をして眺めていた。そこで、使えないことが。そもそも、2つの
関数があるみたい。以下、日本語の man 。
basename() には 2種類の異なるバージョンがある。一つは既に説明した POSIX
バージョンでであり、もう一つは GNU バージョンで以下のようにして使用する。
#define _GNU_SOURCE
#include <string.h>
GNU バージョンは引き数を変更することはなく、 path の末尾が ’/’の場合は
空の文字列を返す。特に path が "/" の場合も空文字列を返す。 dirname() には
GNU バージョンはない。
glibc では、 <libgen.h> をインクルードすると POSIX バージョンの basename()
が使用され、それ以外の場合は GNU バージョンとなる。
そもそも、basename が引数を変更することに驚いた。適当なポインタの位置を
返してくれれば良いものを、なんて思う。libgen.h を確認してみた。
[toyota@zonama]$ less /usr/include/libgen.h
#define basename __xpg_basename
__xpg_basename を define しているみたい。ちょっと、動作の違いをみるため、
テストプログラムを描いてみた。
[toyota@zonama]$ cat basenametest.c
#define _GNU_SOURCE
#include <string.h>
#include <stdio.h>
int main(){
char file[][10] = {".", "/", "./", "//", "ls", "/ls", "//ls", "./ls",
"/bin/ls", "bin/ls", "/bin/ls/", "/usr\\/ls"};
int i;
for(i = 0; i < 12; i++){
printf("%s[%s]\n", file[i], basename(file[i]));
printf("%s[%s]\n", file[i], __xpg_basename(file[i]));
}
}
[toyota@zonama]$ gcc basenametest.c
[toyota@zonama]$ ./a.out
.[.]
.[.]
/[]
/[/]
./[]
.[.]
//[]
//[/]
ls[ls]
ls[ls]
/ls[ls]
/ls[ls]
//ls[ls]
//ls[ls]
./ls[ls]
./ls[ls]
/bin/ls[ls]
/bin/ls[ls]
bin/ls[ls]
bin/ls[ls]
/bin/ls/[]
/bin/ls[ls]
/usr\/ls[ls]
/usr\/ls[ls]
GNU 版の違いは、最後に / が入っていた時の結果で、POSIX 版はそのとき引数を
書き換えてしまう。結果と動作を見る限り、GNU 版の方が使い勝手が良いなぁ。
元の引数を書き換えないので、strdup とかしないで済むし。
|