68user's page 掲示板

Prev< No. 4244〜4259> Next  [最新発言に戻る] [過去ログ一覧]
No. 4244 # 68user 2005/08/10 (水) 14:48:11
>>4243 まつ
わたしが言いたいのは
    - スクリプトの先頭で LANG を設定しても、既に字句解析は
        終了しているのだから意味がないのでは。
    - うまく動く環境では、元々 ja_JP.PCK が設定されていただけでは。
ということです。

> stat: No such file or directory
これは別問題ですよね。
    #!/bin/csh -f
    echo "チェック"
が動くかどうかを確認すべきです。

No. 4245 # 68user 2005/08/10 (水) 14:52:25
あと、
    Locale could not be set properly
についてはわかりません。

こちらの環境では、ja_JP.PCK ロケールがない場合のみ
このエラーが出て、ロケールがある環境ではうまく動きました。

No. 4246 # zsh 2005/08/11 (木) 08:16:27
>>4243 まつ
メッセージの意味としては、選択されたロケールが使用できない状態(つまりインストールされていない)
である事を示しています。

恐らく今の状態は
1./etc/profile か /.profileで LC_ALL を設定している。(且つ間違い)
2.当然 root から生成された子プロセスにも LC_ALL が設定されている(且つ間違い)
3.LANG を変更する際に( LC_ALL が空ではないので) LC_ALL のロケールについても
    チェックされる
        →存在しないロケールなので「Locale could not be set properly」を出力
            (ただし LANG は変更されている筈)
だと思います。
一般ユーザで動作するのであれば、PCK ロケールはインストールされているので
文字化けの原因は、親プロセスの環境変数の違いによるのかも知れません。つまり
>>4244 68user
ではないかと。
(確認するためには wrapper スクリプトかますのが簡単だと思います。)

No. 4247 # 68user 2005/08/11 (木) 10:03:09
>>4246 zsh
> 3.LANG を変更する際に( LC_ALL が空ではないので) LC_ALL のロケールに
> ついてもチェックされる
なるほど、それは気がつきませんでした。

ja_JP.PCK ロケールがインストールされている Solaris2.6 で、LC_ALL に
JA16SJIS をセットして、さらに LANG に ja_JP.PCK をセットすると、
      Locale could not be set properly
となりました。

No. 4248 # まつ 2005/08/12 (金) 11:43:03
68user様、zsh様、返事が遅くなり大変申し訳ございません。m(_ _)m

>>4246 zsh
とてもよく分かりました。
.profileは / にも /etc にもありませんでしたが、子プロセス起動時に
間違ったLC_ALLを設定しているのが原因なのですね。

子プロセスを再起動すれば解決するのでしょうね。
開発依頼者へお願いしても中々動いてくれません・・(T^T)

なので、このスクリプトのみをEUC-JPに変えてunsetenv LC_ALLしたところ
正常に実行できました。

ということで、wrapperスクリプトをかまして確認してませんが、お二人の
仰ることに間違いはないですから、その旨開発依頼者へ報告しておきます。

色々有り難うございました。助かりました。m(_ _)m
これで心置きなくお盆休みに入れます(^^)

No. 4249 # まつ 2005/08/12 (金) 14:28:36
スクリプトをシフトJISへ戻してwrapperスクリプトをかませて
テストしてみました。

-----wrapper.sh------------------
#!/bin/sh -fx
exec env LANG=ja_JP.PCK /disk01/hoge/hoge01/sh/FNC0123.csh
-----FNC0123.csh------------------
#!/usr/bin/csh
unsetenv LC_ALL
・・・
-----ツールから実行した結果------------------
couldn't set locale correctly
+ exec env LANG=ja_JP.PCK /disk01/hoge/hoge01/sh/FNC0123.csh
・・・
-----------------------

のように最初に変なメッセージが表示されますが、それ以降は
文字化けもなく理想どおりの結果が得られました。

最初の変なメッセージは間違ったLC_ALLを設定している為でしょうか?

何はともあれ、これで子プロセスを再起動してもしなくても正常に
動作しそうです。

どうも有り難う御座いました。m(._.)m

No. 4250 # 68user 2005/08/14 (日) 04:11:57
たわむれに Ajax で遊んでみました。RFC のタイトルから検索を行います。
    http://X68000.q-e-d.net/~68user/rfc/

以下のような URL も有効です。
    http://X68000.q-e-d.net/~68user/rfc/?key=821
    http://X68000.q-e-d.net/~68user/rfc/?key=http

XMLHttpRequest をひとつしか生成しないタイプではなく、ばしばし XMLHttpRequest を
作る、富豪版です (google タイプ)。ソースはこちら。
    http://X68000.q-e-d.net/~68user/cgi-bin/cvsweb.cgi/public_html/rfc/

>>4294 hagu
> 最初の変なメッセージは間違ったLC_ALLを設定している為でしょうか?
unsetenv LC_ALL には意味がないので、
    env LC_ALL= LANG=ja_JP.PCK ...
とすれば直ると思います。

No. 4251 # みのさん 2005/08/14 (日) 16:20:35
findコマンドでファイルが今日(本日)作成されたものだけを
抽出したいのですが、以下でよいのでしょうか;

find . -name '*.*' -mtime -1 -print

他に別の方法がありますか。

No. 4252 # zsh 2005/08/14 (日) 20:52:40
>>4251 みのさん
・ファイル名で絞り込まないのであれば -name オプションは不要です。
・-mtime -1 では「本日作成」ではなく、「24時間以内に変更」されたものが対象となります。
    (作成日をみるようなオプションは無いと思います。)
・-print オプションは無くても出力されます。
・ファイルに限定したいのであれば -type f が必要です。

こんなもんでしょうか。

No. 4253 # 68user 2005/08/14 (日) 22:20:56
>>4251 みのさん
追加。

- 一般的な UNIX のタイムスタンプには、厳密な意味でのファイル作成時刻は
    存在しない。ctime は、例えばパーミッションを変更すると更新される。
- 「24時間以内」ではなく「本日」にしたいなら、適当なファイルを
      作って、touch で mtime を前日 23:59:59 にして、
          find -newer [適当なファイル]
      とするのが一般的。しかし手抜きするなら以下のような方法も。
          % find . -type f -ls | grep "`date '+%b %d'`"

>>4252 zsh
BSD や GNU の find には -ctime オプションがあります。-cnewer ってのも
あるようですね (基準ファイルの mtime と検索対象の ctime を比較)。


今日の発見その 1

touch(1) などが使うシステムコール utimes(2) って、ctime を更新できない
んですねぇ。atime・ctime・mtime いずれも変更可能だとずっと思っていました。

今日の発見その 2

FreeBSD 5.x 以降で対応された UFS2 では本当の生成時刻 (inode 作成時刻) が
保存されていて、struct stat の st_birthtime で参照可能なようです。へぇ。
    http://www.usenix.org/events/bsdcon03/tech/full_papers/mckusick/mckusick_html/
    http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=stat&dir=jpman-5.2.0%2Fman&sect=2

No. 4254 # 68user 2005/08/15 (月) 00:05:35
>>4250 68user
RFC のタイトルだけでなく、全文検索もできるようにしました
(namazu を使っているので Ajax には向かないですが)。
      http://X68000.q-e-d.net/~68user/rfc/

結構使えるかも、と思うのはわたしだけですかそうですか。

No. 4255 # へにか [URL] 2005/08/15 (月) 07:21:28
>>4254 68user
JavaScript必須というのが、いきなり敷居が高いと申しますか、何と申しますか・・・
今みたいに、帰省先でpoorな環境で使っていると、その時点で引いてしまっております。

>>4250 68user
ここでポイントしている>>4294が、4294まで投稿が伸びたときに、どうなるか、気になるところです。

No. 4256 # みのさん 2005/08/15 (月) 15:23:21
> 4523
ありがとうございます。

別なんですが、
カンマ区切りのCSV形式のデータを読み込み
nawkのsub関数を使用して文字列の置換をやっています。
フィールド2番目のみを入れ替えようとして以下の様に
しました。
置換は行われたのですが、カンマが半角スペースに置換え
られて出力されてしますのです。
カンマのまま出力させるには、どうすればよいのですか。


nawk -F"," -v OUT=${OUT_FILE} -v OLD=${OLD_STR} -v NEW=${NEW_STR} '
BEGIN {
          output=sprintf("%s",OUT);
}
function func(OLD,NEW) {
        (処理)

        sub($2,NEW,$2) ; print >> output ;

        (処理)
}
        func(OLD,NEW);
}' $IN_FILE

No. 4257 # zsh 2005/08/15 (月) 18:18:37
>>4253 68user
フォローありがとうございます。
-ctime オプションは使ったことが無いですね。
(使う場面もない・・・)

>>4254 68user
Ajax を弄ってみたいと思っていたので、
サンプルとして参考にさせて頂きます。

>>4256 みのさん
変数OFSで出力用の区切り文字を指定できます。

No. 4258 # みのさん 2005/08/15 (月) 20:35:01
>>4257 zsh

>変数OFSで出力用の区切り文字を指定できます。
ありがとうございます。
上手くいきました。

No. 4259 # 68user 2005/08/15 (月) 21:48:19
>>4255 へにか
> JavaScript必須というのが、いきなり敷居が高いと申しますか
RFC の検索がやりたかったわけではなく、Ajax で遊んでみたかった
だけなので、Javascript 必須なのはなにとぞご勘弁を。

>>4256 みのさん
お礼だけではなく、結果報告をしていただけるとうれしいです。
    http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?howtouse

>>4257 zsh
> Ajax を弄ってみたいと思っていたので、
> サンプルとして参考にさせて頂きます。
学習目的ならば
    http://chasen.org/~taku/software/ajax/ime/
の方がシンプルでよいと思います。ただし上記 URL の
    if (oldkey != key) {
        oldkey = key;
        if (xmlhttp.readyState == 1 ... ){ return; }
は、正しくは
    if (oldkey != key) {
        if (xmlhttp.readyState == 1 ... ){ return; }
        oldkey = key;
です (とわたしは思っています)。


ところで、「RFC 検索」に RFC の日本語訳へのリンク機能を追加しました。
    http://X68000.q-e-d.net/~68user/rfc/?key=http&target=title

Prev< No. 4244〜4259> Next  [最新発言に戻る] [過去ログ一覧]