2007/10/02(火) [n年前の日記]
#1 Vine Linux 4.1 の ProFTPD設定でハマる
新サーバ機にftpでアップロードしたら時刻がずれてることに気づいた。なんでや。TimesGMT off は指定してるのだけど。
とりあえず、Vine Linux 4.1 + proftpd-1.2.10-0vl5.5 では、
◎ _15: ftpファイルの時刻について :
_Vine Linux errata [proftpd のバグ修正]
_No.4981 ProftpdでTimesGMTが有効にならない
_FTPサーバ(ProFTPD)の構築(SuSE9.3編)
_アップロードしたファイルのタイムスタンプのクライアントでの表示やログがGMT(9時間前)になってしまう。
_T-4の整備日誌v2: ProFTPdの時刻がずれる問題
たしかにFTPサーバのログも時間がずれていた。なんだかやっかいだな…。
proftpd サーバは、クライアントに返すファイル/ディレクトリの MDTM (更新日時) を、proftpd が動作しているマシンのローカルタイムに 準じて返しています。 (/etc/proftpd.conf で TimesGMT FALSE となっている場合) しかし、多くの FTP クライアントは、FTP サーバが返す MDTM を GMT と期待して動作しており、例えば lftp でファイルを取得すると、 サーバ上の日付より進んだ更新日時となってしまいます。アップストリームでこの件について議論が行われ、 MDTM は常に GMT で返した方が良いだろうという結果になり、 バージョン 1.3.1rc1 に修正が入りました。
_No.4981 ProftpdでTimesGMTが有効にならない
_FTPサーバ(ProFTPD)の構築(SuSE9.3編)
SuSE9.3(9.2も発生)では、localtimeを使用するように指定(TimesGMT off)していても、uploadしたファイル自体の更新時刻はlocaltimeになるが、クライアントでの表示やProFTPDのログがGMTになってしまう問題が発生する。これはchrootすると、/etc/localtimeが読めなくなることに起因するようなので対策が必要である。
_アップロードしたファイルのタイムスタンプのクライアントでの表示やログがGMT(9時間前)になってしまう。
この問題は、chrootする時に発生するが、原因はglibc-2.3のバグによるものである。
_T-4の整備日誌v2: ProFTPdの時刻がずれる問題
しかしながら、この現地時間設定ファイルはユーザディレクトリの外にあるため、アクセス出来ません。本来はアクセス出来る権限のあるプロセスが行うので問題ないのですが、glibc-2.3のバグによって出来なくなっていました。長く書きましたが、これによってログに吐き出されるアクセス時刻がGMT(世界協定時)のままログに書き出されてしまっていました。私(管理者)はFTPでアクセスしても自由にディレクトリを移動出来るようにしているので、現地時間設定ファイルにもアクセス出来、気がつきませんでした。そのためログの時系列が目茶目茶になった挙句、ログが飛んでしまっていました。
たしかにFTPサーバのログも時間がずれていた。なんだかやっかいだな…。
◎ _ITmedia エンタープライズ : Linux Tips「ProFTPDでタイムスタンプが9時間ズレてしまう」 :
少なくとも、この記事にあるような「TimesGMT off」指定はもう古いということなんだろうか。…よくわからん。
◎ _TimesGMT off と TimesGMT FALSE では動作が違っていたらしい :
proftpd の localtime がGMTになってしまうというのは検索すると/etc/proftpd.confに「TimesGMT off」と記述するように書いてある。「TimesGMT off」と記述して正常な時間を表示するようになったのだが、またおかしくなって直す方法が分からなかった。今日、vine の proftpd は正常な時間を表示するので /etc/proftpd.conf を見ると「TimesGMT FALSE」になっていた。CentOSも「TimesGMT FALSE」するとOKになった。off と FALSE が同様に扱われない状況もありうるのか…。したり顔(?)で「offもFLASEも同じですよ」とは言えなくなってるのだな。
TimesGMT off # 誤り
TimesGMT FALSE # 正しい
いつから変わったんだ?
◎ _satospo - ProFTPDのGMT問題 :
方法1 : proftpd.confでSetEnvディレクティブを用いてTZ環境変数を定義します。これだ! つーかこんな指定ができるのか。
proftpd.confで、
SetEnv TZ JST-9
とします。
とりあえず、Vine Linux 4.1 + proftpd-1.2.10-0vl5.5 では、
#TimesGMT FALSE TimesGMT off SetEnv TZ JST-9 DefaultRootの記述でなんとか。
- FFFTP で、タイムゾーンを「GMT+9:00(日本)」にしてアクセスしてる分には、日本時間でファイルのタイムスタンプが表示できてるように見える。
- ftpサーバのログも日本時間で記録されてるように見える。
この記事へのツッコミ
[ ツッコミを読む(1) | ツッコむ ]
#2 [web] _mixiの新デザインに文句を言う人は、自分がすでにmixiのターゲットユーザではないことに気づくべきだ
名言(?)のような気がしました。
[ ツッコむ ]
#3 [web][pc] _IPAが日本語フォント「IPAフォント」を一般に配布:ITpro
[ ツッコむ ]
#4 [cg_tools] _アルファチャンネルにアンチエイリアスを書けているから無問題
透明との境界は事前に透明度が100%以外のとこのRGBを最寄の不透明部分の色データで埋めて=縁取りしてアルファも一緒に暈せば大概OKはてなブックマーク - mieki256's diary - アニメ作成ソフトはどの段階でジャギ消し・アンチエイリアスをかけるんだろう より
アルファチャンネルにアンチエイリアスを書けているから無問題なるほど、そんな技(?)が! 勉強になるであります。はてなブックマーク - mieki256's diary - アニメ作成ソフトはどの段階でジャギ消し・アンチエイリアスをかけるんだろう より
やはり合成前の素材に対して処理ができる・処理をしているのか…。
[ ツッコむ ]
#5 [prog] _Rubyコーディング規約
プログラムを読みやすくするため、インデントを適宜行う。インデント 幅は2とする。また、インデントにはスペースのみを使用し、タブは使用 しない。(環境によりタブ幅が異なるため。)メモ。Rubyコーディング規約 より
◎ _ インデント - ただのにっき (2003-02-13) :
はっきりいって、空白を使った固定インデントにはどうしても馴染めないのだよ。インデント幅なんて、見る人がいちばん気持ちがいい値に合わせられた方がいいに決まってるじゃないか。TABでインデントしておけばエディタの設定で自由に調整できるのに、なんで空白使って自分のインデント幅を強要するのが流行ってんのか、どうしても理解できん。
ちなみに初めてPascalのコードを書き始めた時、インデントは4だった(もちろんTABによる)。その後CやC++でも4で(途中で2に浮気したことも)、Rubyでは3が気持ちがいいことに気づいてからは、~/.vimrcにはがっちり「set ts=3」って書いてある(笑)。今ではすっかり3の間合いが染みついた。だが、ずーとTABを使ってきたおかげで、昔のソースを開いてもストレスなく今の間合いで読むことができる。なんと幸せな習慣であろうか。インデント より
_最速インターフェース研究会 :: タブとスペースと萌ディタの話
タブの幅を自分好みにしたいっていうと解決策は色々あるんだろうけど、一番手っ取り早いのはタブを使うことなんじゃないの?タブを使ってインデントしてればエディタの設定だけでファイルの内容に手を加えずに見た目だけ変えられるから楽。なるほど。それもアリのような…。
なんかそもそもタブを使わずにスペース4で統一せよってのはフォントサイズをピクセル単位で指定したがるデザイナの言い分みたいで気に食わない。そういうことをプログラマが(多様性が美徳のPerlプログラマが)、言うことに、なんか引っかかりを感じる。行頭以外の箇所でタブを使ってるとひどいことになるけれど、それさえしなければ後は個人が好きにできるようにタブでインデントした方が良いんじゃないの?って思うんだけど。
[ ツッコむ ]
#6 [xyzzy] xyzzyで特定種類のファイルの文字コードを指定
_xyzzyの使い方が分からぬやし 励ましあえ その8
146名無しさん@お腹いっぱい。sage2005/11/22(火) 10:13:29 ID:TbvdOM8t0 find-fileでファイルを開くとき、既存のファイルならそのままの文字コードで開き、 新しいファイルなら拡張子ごとに文字コードを設定することはできますか? 前スレにあったやつでは既存のファイルの文字コードも変更されてちょっと不便なので。
149名無しさん@お腹いっぱい。sage2005/11/22(火) 13:31:44 ID:dESgBXzK0 >>146 template-insert.l と前スレを参考に書いてみた (add-hook '*find-file-hooks* (lambda () (let* ((name (get-buffer-file-name)) (type (pathname-type name))) (when (and name (not (file-exist-p name))) (cond ((string-equal "rb" type) (set-buffer-fileio-encoding *encoding-euc-jp*)) ((string-equal "java" type) (set-buffer-fileio-encoding *encoding-utf8*)) (t (set-buffer-fileio-encoding *encoding-sjis*)))))))
160名無しさん@お腹いっぱい。sage2005/11/24(木) 04:44:40 ID:H6yp41CN0 >>149 ついでにお願いなんですが、拡張子を「.html.ja」のような形式にも 対応させてほしいのです。
161149sage2005/11/24(木) 07:42:35 ID:blL6ydov0 >>160 ((string-equal "java" type) (set-buffer-fileio-encoding *encoding-utf8*)) の下あたりで ((pathname-match-p name "*.html.ja") (set-buffer-fileio-encoding *encoding-utf8*)) とかやればいいはず。おお。
◎ _ManNaka: xyzzyで保存したRuby CGIがエラーを吐く件 :
utf8じゃなくてutf8nを使ったほうがいいのか…。
[ ツッコむ ]
#7 [prog] xyzzy + ruby-modeで実行できなくて悩む
環境変数 RUBYOPT に -Ku を指定してる状態で、DOS窓から下のスクリプトを実行すると両方動いてくれるのだけど。(DOS窓内なので、上は文字化けするが、実行はされる。)
_ruby-mode for xyzzy で、C-c C-x (editor::ruby-run-script-immediate) をしても、前者は動くが、後者はエラーが出る。こんな感じのメッセージが。
#!/usr/bin/ruby puts '終了'
#!/usr/bin/ruby require "tk" TkLabel.new { text 'こんにちは' }.pack TkButton.new { text '終了' command 'exit' }.pack Tk.mainloop
_ruby-mode for xyzzy で、C-c C-x (editor::ruby-run-script-immediate) をしても、前者は動くが、後者はエラーが出る。こんな感じのメッセージが。
C:/home/prg/ruby/__temp_u4kp.rb:10: Invalid char `\217' in expression C:/home/prg/ruby/__temp_u4kp.rb:10: syntax error text '終了' ^ C:/home/prg/ruby/__temp_u4kp.rb:10: Invalid char `\227' in expression C:/home/prg/ruby/__temp_u4kp.rb:10: Invalid char `\271' in expression C:/home/prg/ruby/__temp_u4kp.rb:11: syntax error command 'exit' ^ C:/home/prg/ruby/__temp_u4kp.rb:11: unterminated string meets end of file C:/home/prg/ruby/__temp_u4kp.rb:11: syntax error何故。utf8nで保存してるんだけどなぁ…。
◎ スクリプトファイルを直接保存して実行するようにしたら動いた。 :
ruby-mode for xyzzy によるスクリプト実行は、標準設定なら仮ファイルを保存して、その仮ファイルを実行するのだけど。
~/.xyzzy に、
おそらく、仮ファイルを保存する際に、元ファイルの文字コードによってはおかしな状態で保存・実行されてしまうのでは。と根拠のない想像を。
~/.xyzzy に、
(setq *ruby-save-bufer-before-run* t)と書くと、編集中のファイルを保存→実行するように処理が変わるようで。それならエラーを出さずに実行できた。
おそらく、仮ファイルを保存する際に、元ファイルの文字コードによってはおかしな状態で保存・実行されてしまうのでは。と根拠のない想像を。
◎ _ [Ruby] Windowsのメモ帳によるUTF-8エンコーディング - Day by day (2007-03-05) :
関係あるかどうかわからないけどメモ。UTF8はBOMが入るのでよろしくないという話。
◎ _Rubyist Magazine - 標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconv :
[ ツッコむ ]
以上、1 日分です。
TimesGMT off
SetEnv TZ JST-9
DefaultRoot
で直りました。