2007年4月30日

サーバ移行作業中

 ただいませっせと,自宅サーバから共用サーバへの移行作業をやっているのですが,不思議な現象がちらほら・・・

 まず,自宅サーバ上では動いていたcgiのうち,時々動かないものがある・・・
 エラーとしては,#!ではじまるperlのパスがおかしいよ・・と表示されるのですが,これは合っている・・というか,同じ表記で動くものもある・・
 原因は,改行コードでした。
 unix系の改行コードはLF,dos+windowsはCR+LF

FTPのアスキーモードでの転送は,この辺を処理した上で行っているはずなのですが,うまく動かないものもあるようで,インタープリタがパスの表記ではなく,コマンドの呼び出しと解釈してしまい,エラーが出る,ということのようです・・・

 それなりのエディタを使用しないと,改行コードの違いはわかりません・・・
 (ローカルのファイルの大きさと違うものがあることに気づいて,やっと,ああそうだった,と思い出しました・・・)
 参考 http://www.rescue.ne.jp/cgi/crlf/
 
 次は,cgiのはき出すhtmlコードの中で,時々,ファイル名やフォルダ名が大文字になるものがあること。
 これは未だに原因不明
 どうしてCGIも動いて,フォルダ構成も同じく揃えているのに,ファイルへのリンクが切れるのか,とはき出されたソースを表示していたら,フォルダ名:IMG ファイル拡張子:JPGが大文字ではき出されている。でも,すべてがそうではない・・・
 原因追及は,現時点では放棄して,IMGとimgの両方のフォルダを作成しました。

 一方,*.JPGは,今のところ,お手上げです・・・ (ブログ版の日記が,この症状です・・)
 
 もっとも,dos系のファイルシステムは,大文字小文字を区別しないので,もしかしたら,今までもそうだった可能性は残っています・・

 しかし,いろいろと楽しませてくれるなぁ・・
 
 (雑学)
 最初に作ったお仕事用のプログラムは,レセプトにデータを印刷するための,ドッドプリンタ制御用のプログラムでした。
 で,CRはキャリッジリターン,LFはラインフィードの意味で,つまりCRでプリンタのヘッドを行頭に戻し,LFで紙を1行送る,という動作を表します。
 つまり,改行とは,ヘッドを行頭に移動し,さらに次の行に移動する動作のことです。
 出力先がプリンタでもディスプレイでも動作は同じなので(現実の動作は,デバイス側が処理すればよい),DOS系の方が,忠実ではあると思います。まあ,Z80のアセンブラ並みに古めかしい雑学ではありますが・・)