ClockworkPenguin (18138) の日記
2005 年 02 月 16 日
午後 12:58
rootでもX Windowsを
SuSE Linuxを使っている。
しかし、SuSEでは、suをつかってrootになった場合、
X Windowsを利用できないという仕様(?)になっているようだ。
これは、rootの.Xauthorityにlocalのディスプレイが
登録されていないため、xhostが接続を撥ねているのが原因。
よって、以下で解決する。
1) 非特権ユーザーで、% xauth list を実行
2) 出てきた情報の中から、localに関するものを切り取って、
root コンソールから % xauth add を実行
参考:
http://www.stackasterisk.jp/tech/engineer/xwindow01_03.jsp
- コメント無効
2004 年 12 月 10 日
午後 04:21
CVSWEB
http://www.freebsd.org/ja/projects/cvsweb.html
ただし、FreeBSD用だからか、そのままでは動かない。 Perlのライブラリが足りないと文句を言われるので、
http://www.movabletype.org/cpan/cpan-IPC-Run.tar.gz
をとってきて、この中の「Run.pm」と「Run/」を
/usr/lib/perl5/5.8.0/IPC/
以下あたりに置けばいい。
さらに、cvsweb.confのいじり所については、
・CSSファイルを指す$cssurlに関しては、URLを書くこと。
・CSSファイルがちゃんとテキストとして見えるように、httpd.confを直しておくこと
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
AddHandler txt/html .html .htm .css
</Directory>
こんなかんじの記述をかいておけばいい。
- コメント無効
2004 年 05 月 14 日
午後 08:14
Multicard Reader on Linux
結局、見つけたページはここ。
$ cdrecord -scanbus
でカードリーダーのSCSIバス上での位置を見つけたら、 (例えば、" 1,0,0 0) 'DMI ' 'MultiFlash ' '3.00' Removable Disk" と出ているのなら 1 0 0 0 だ)/proc/scsi/scsiに対して以下のような書き込みをすればいいらしい。
echo "scsi add-single-device 1 0 0 0" > /proc/scsi/scsi
echo "scsi add-single-device 1 0 0 1" > /proc/scsi/scsi
すると、カードリーダーが複数のスロットを持っていることを認識して、cat /proc/scsi/scsiすると複数のデバイスが見える。 そうなると通常のカードリーダーとかわらなくて、 SDのスロットは/dev/sdbにマッピングされていた。
午前 01:57
C and C++ Standards
ANSIの正式な規格書は紙もPDFも有料で、簡単には手に入らない。 しかし、 ジャック・クラインというひとがまとめているCやC++に関する 情報のページで、1999年にC言語の規格をアップデートする ことを検討した時に公開された "Final Committee Draft"がウェブからPDFで 入手できることが書いてあった。どうやらこれで事足りそうだ。
そういえば、最近のg++では、 stdio.hやstdlib.hをincludeしている部分があると コンパイル時にワーニングが出る。 要はcstdio, cstdlibをincludeしてusing namaspace stdを 宣言せよ、ということなんだけれど、 そのワーニングの中で、「C++の規格書の○章○節を見よ」みたいな ことが書かれているので「そんなこと言われてもなぁ」と 困ったことがあった。そのときも、結局は C++ の final draftがウェブに転がっているのを 参考にしたように覚えている。
2004 年 05 月 10 日
午後 12:36
Mozillaのsplash screen
2004 年 05 月 07 日
午前 12:38
#pragma
#pragmaの使用法を私は全く知らなかったので、さっそく調べてみた。
#pragma pack(1)
struct SPerson
{
char szName[21]; // 名前 int nAge; // 年齢 char nBirthmonth; // 誕生月 char fSex; // 性別 }; #pragma pack()
というふうに構造体をくるむらしい。 packの後の括弧内にはバイト単位でアラインメントの 最大サイズを指定する。指定できるのは1,2,4,8,16の 5種らしい。
私は仕事柄ファイルシステムの「フォーマッタ」を書くことが しばしばあるが、管理領域の情報を(アラインメントをつめた) 構造体で宣言しておくと、なにかと実装がしやすい。 GNUのmkdosfsのソースでは__attribute((packed))を使っており、 私もこれを見習っている。もちろん、この実装法は、 ファイルフォーマットに関するプログラミングをするときも 便利だ。MPEGやWAVなどのヘッダ部分を構造体で宣言すると、 読み書きをするときになにかと楽できる。
2004 年 05 月 05 日
午前 01:03
Cプログラミング専門課程
でもこのG.W.中なにもしないのもどうかと思ったのを機に手にとり、昨日から寝る前にチョビチョビと読むことにした。確かに、他の本ではあまり見られない視線が徹底されているので面白い。プログラムが動作中にどうメモリが割り当てられていくなんて、普通の入門書では触れないものだ。C言語が高級言語の皮をかぶった低級言語だということは、入門書では隠蔽されるものだから。
個人的には、大学で多少はコンピュータアーキテクチュアの知識も仕入れたので知らないことが書かれていることは少ない。だけど、専門がコンピュータ自体だったわけじゃないので、実はこの本に書かれているようなことを系統だって学んだことがない。それは現在の仕事においてそれなりにコンプレックスになっていることも事実なので、この本をやり遂せればコンプレックスからも多少は脱却できるか。
ただし、多少この本に文句をいうとすれば、コンパイラに依存した具体的なテクニックの記述をもうちょっとしたほうが親切じゃないの、ってことか。「プリプロセッサの出力をちゃんと見ろ」っていうんなら、gcc(もちろん、正確にはcpp)でプリプロセッサ出力を得るオプションを一言書いてくれてもよかった。「構造体のメンバのメモリ上での割り当て」について触れるのなら、__attribute((packed))でそれが解除できることにも触れるべきでは? そういうリファレンスとしても使えるようになってたらさらに便利なのにね。
| 一覧