2007年11月30日金曜日

program.c:3: error: stray '\241' in program

少し悩まされた。
その理由は、はじめてみるエラーだったということと、コードを見直しても間違いが見えなかったからだ。

googleで検索すると、このエラーメッセージが教えてくれているのは

全角が混ざっている

ということのようだ。そこでスペースを調べると全角の空白が混ざっていた。コードを見直しても気がつかないわけだ。

2007年11月29日木曜日

~/.ssh/known_hosts

 Linuxからあるマシンにsshで接続しようとした際の話。

$ssh -X [ユーザー名]@[サーバ名]

として、接続しようとしたが以下のようなエラーメッセージがでた。

------------------エラーメッセージ--------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the DSA host key has just been changed.
The fingerprint for the DSA key sent by the remote host is
18:86:0b:ec:64:34:b1:c3:37:49:61:9c:ed:80.
Please contact your system administrator.
Add correct host key in /home/staff/hoge/.ssh/known_hosts to get rid of this message.
Offending key in /home/staff/hoge/.ssh/known_hosts:6
DSA host key has changed and you have requested strict checking.
Host key verification failed.
----------------------------------------------------

 エラーメッセージの最初に出力されているように、これは

接続先サーバーと通信するための暗号の鍵が変更されたため

に起こったもの。
 鍵は最初に通信した際にクライアント側に保存されており、今回はそれが変更されたとのこと。サーバ管理者に問い合わせたところ、マシンが変わったとか。

そこでクライアント側では、

~/.ssh/known_hostsにおいて、接続先ホストの公開鍵が記述されている部分を削除する

必要があったのだ。

2007年11月28日水曜日

scim-launcherがCPUを100%使用してしまう

vinelinux4.1で作業をしているときの話し。
 PCのハードディスク容量が満杯になったため突然、GNOMEの動作が鈍る。
そこでctrl+alt+f1によりコンソールを変え、不要なファイルを削除した後にrebootをかける。

 reboot後、再度ログインして作業をしようと思い、gnome-terminalを起動しようとするが起動しない。gnome-terminalに不具合があると思い、apt-getでgnome-terminalを一度removeした後にinstallする。しかし、問題は解決しなかった。

 そこでlaucherのメニューからRoot Terminalを起動してみる。すると、これは起動できた。その後、システムモニタも起動できたのでCPU使用率を見ると100%になっている。どのジョブがCPUを喰い尽くしているのかを調べると、

scim-launcherがCPUを喰い尽くしていた。

原因を探るため、

# ps -ef | grep scim-launcher

としてscim-launcherのプロセスIDを調べる。次に、lsofコマンド(デフォルトでなかったのでインストールした)を用いて、scim-launcherが開いているファイルを調べてみた。

# lsof -p プロセスID

すると、ライブラリやバイナリファイル以外で

~/.anthy/last-record2_defaultを開いている

とあった。調べてみると、このファイルの末尾がおかしいと、無限ループに陥るらしい。そのため、このファイルを削除した。

そして再起動すると、scim-launcherがCPUを喰い尽くすことなく、めでたくgnome-terminalを起動できた。

2007年11月18日日曜日

perlで文字列置換

HTMLファイルに記すタイムスタンプを更新する必要があった。
その際にファイルを1つずつ手書きで修正するのは大変なので、スクリプトを書いてみた。

#############################################################################
#!/usr/bin/perl
###--- HTMLファイルの文字列修正を行うPerlスクリプト ---###

### カレントディレクトリ(ディレクトリハンドルDIR)をオープンする ###
opendir(DIR,".") || die "cannot open a current directory:\n";

### カレントディレクトリのファイルを@files配列に格納する ###
@files = readdir(DIR);

### ディレクトリハンドル(DIR)を解放する ###
closedir(DIR);

### ファイルのリスト(@files)の要素を1つずつ$oldfileに読み込み操作する ###
foreach $oldfile (@files){
#.htmlという要素を含むファイルだけ操作する
if($oldfile =~/.html/) {
#$oldfileを読み取り専用に開く(ファイルハンドルはFHOLD)
if ( ! open ( FHOLD, "< $oldfile") ) {
print "File not found.\n";
exit(-1);
}
#$newfileを修正後のファイルの書き込み用に開く。ここで適当にファイル名を”temp"として与える
$newfile="temp";
if ( ! open ( FHNEW, "> $newfile") ) {
print "Cannot make file.\n";
exit(-1);
}
#修正するファイルを1行ずつ読み込み(特殊変数$_に格納される)文字列置換する
while (<FHOLD >){
$_ =~ s/置換したい文字列/新たに置き換えられる文字列/g;
#$newfileに一行ずつ書き込んでいく
print FHNEW $_;
}
#開けたら閉じる、ファイルハンドル
close(FHOLD);
close(FHNEW);
#元のファイル名の末尾に.origをつけて元のファイルを保存する
rename($oldfile,"$oldfile.orig");
#置換後の新しいファイルを元のファイル名に変更して保存する
rename($newfile,$oldfile);
}
}

2007年11月15日木曜日

Technical Log start

このページは作者が、PCの勉強を進めていく過程で思ったこと、分かったことを書き留めていくページです。