68user's page 掲示板

Prev< No. 3521〜3560> Next  [最新発言に戻る] [過去ログ一覧]
No. 3521 # yabu 2004/01/20 (火) 22:42:46
unixのfindコマンドについて教えて下さい。
findを使用するとファイルの検索ができますが、
自分がいるカレントのみを検索し、その配下にあるディレクトリ
を検索したくないのですが、どうすれば可能でしょうか。

例えば、
現在位置
cd /tmp/tool/bin
/tmp/tool/bin 入るとします。
find .. -name ".log" -type f -print
と行うと、tool及び、bin配下やよのたのディレクトリを検索

find .. ! -depth -name "*.log" -print
と行うと検索しない。
1つもだった、ところのファイルのみを検索したい

No. 3522 # 68user 2004/01/20 (火) 23:34:40
>>3521 yabu
-maxdepth 1 でいけるでしょうが、-maxdepth に対応
していない find もあります。

単にファイル名でマッチさせたいだけあれば、
        % echo *.log
でもいいでしょう。

No. 3523 # moko 2004/01/21 (水) 00:08:04
Sunでaliasの設定でつまづいてます。。(alias rm="rm -i")
シェルはshなので.profileに記述しましたが効きません。

ネット検索しましたがshでのalias設定なしとありました。

shでのalias設定はどう行えばいいでしょうか?
ご教授お願いします

No. 3524 # yabu 2004/01/21 (水) 13:17:13
>>3522 68user

>-maxdepth 1 でいけるでしょうが、-maxdepth に対応
>していない find もあります。
HP-UX、SunOSともに対応していませんでした。

>単にファイル名でマッチさせたいだけあれば、
> % echo *.log
>でもいいでしょう。
でやらせていただきました。

No. 3525 # external 2004/01/22 (木) 16:39:29
IE などブラウザ上のボタンなどの操作を外部からしたいのですがしたいのですが、可能でしょうか?

例、VC++ のソフトで、Yahoo の検索を検索キーワードを入力や検索ボタンを押したい。
例、証券会社のHPで定期的に株価更新のため株価ボタンを押す。

などです。
ここの主旨から外れるかも知れませんが、宜しくお願いします。

No. 3526 # 68user 2004/01/23 (金) 02:53:00
>>3523 moko
まずは
      $ . $HOME/.profile
としましょう。それで alias が効かないなら .profile
の書き方が悪い。alias が効くなら .profile が読み込まれ
ていないか、.profile 読み込み後に unalias されている
んでしょう。

>>3525 external
詳しいところは知らないので、キーワードだけ並べておきます。
      COM (Component Object Model)
      OLE (Object Linking and Embedding)
      ActiveX

No. 3527 # yuki 2004/01/26 (月) 17:55:06
初歩的な質問ですが、Solarisのhostsについて教えて下さい。
他の端末と通信する為には/etc/inet/hostsにIPを書くと思っています。
でも、/etc/hostsにも同じhostsがあり、両方直しています。
/etc/hostsには/etc/inet/hostsと違った意味があるのでしょうか。
宜しくお願いします。

No. 3528 # 68user 2004/01/26 (月) 18:04:45
>>3527 yuki
http://www.freebsd.org/cgi/man.cgi?query=hosts&manpath=SunOS+5.9
    NOTES
        /etc/inet/hosts is the official SVR4 name of the hosts file.
        The symbolic link /etc/hosts exists for BSD compatibility.

というわけで、同じでしょう。

No. 3529 # kai 2004/01/26 (月) 18:58:03
Volumeの初期化に関して,どうのような操作をすれば良いか教えてください。digital unix 4.0

No. 3530 # momo 2004/01/27 (火) 16:07:08
crontabを実行した時間がわかるようにするためにはどのような書き方をしたらよいかわかりません。教えていただけないでしょうか。
よろしくお願いいたします。

No. 3531 # ken 2004/01/27 (火) 23:04:41
こんばんは。
Perlのほうが文字列処理などが書きやすい、でもCのほうが速度が速かったりするなどの理由から、XSを使用して二つの言語を合わせてみようと思いました。
そこで、CのヘッダをXSにかけてからPerlを実行したのですが、
"Your vendor has not defined Prime macro Prime"
というエラーが出てしまいます。

XSによって生成されたのはPrimeというディレクトリで、その中にあるPrime.pmに、Perlから第一引数として数字を渡すものでした。
Perlのほうからは、
Prime::Prime($ARGV[0])
として呼び出しましたが、何がいけなかったのか、教えていただきたく思います。
よろしくお願いします。

No. 3532 # Hiro 2004/01/28 (水) 00:54:41
AIXに付いて教えて!
AIXマシンでは、gettimeofday()関数が使えない!
よくよく調べると、コンパイル時、XOPEN_SOURCEを指定している為
である事が判ったが、XOPEN_SOURCEを外す訳にもいかず困ってます。
gettimeofday()関数と同じ機能で、置き換えられる関数ってないでしょうか?

No. 3533 # 68user 2004/01/28 (水) 02:06:01
>>3529 kai
Volume ってなんですか? 音量のことですか? であれば
わかりません (ioctl とか使うんですかね)。

>>3530 momo
1. cron から実行するスクリプト内でファイルに時刻を記録する
2. * * * * * date>>/foo/bar/log; command とする。
3. /var/cron/logs などにあるログを見る。

>>3531 ken
XS はよく知りませんが、perl のバージョンも、何をどうやったの
かも書かれていないので何ともいえません。

下記は perl 5.005_03 の例ですが、まずはここからでしょう。

    % h2xs -A -n Prime
    % cd Prime
    int
    Prime(num)
            int num;
    CODE:
            RETVAL = 2*num;
    OUTPUT:
                RETVAL
    % perl Makefile.pl
    % make
    hoge.pl を作成
    % cat hoge.pl
    use ExtUtils::testlib;
    use Prime;
    print Prime::Prime(123),"\n";
    % perl hoge.pl
    246

>>3532 Hiro
なぜ XOPEN_SOURCE が指定されていると gettimeofday が使えない
のかよくわかりませんが、古い形のプロトタイプ宣言が〜とかいう
話ではないかと思うので、mygettimeofday.c を作って、
        #include <sys/time.h>
        int gettimeofday (struct timeval *, void *) #undef XOPEN_SOURCE

        int mygettimeofday (struct timeval *Tp, void *Tzp){
                return gettimeofday(Tp, Tzp);
        }
とするとか。

No. 3534 # 68user 2004/01/28 (水) 02:10:03
>>3533 68user
> int gettimeofday (struct timeval *, void *) #undef XOPEN_SOURCE
        int gettimeofday (struct timeval *, void *);
        #undef XOPEN_SOURCE
のタイプミスです。

No. 3535 # ken 2004/01/28 (水) 02:15:32
さきほどXSのことを質問させていただいたのですが、なんとか解決しました(汗
どうやら、根本的に思い違いをしていたのが原因のようで...。
わざわざのご回答、ありがとうございます。
もう少しぼくが早く解決して書き込んでいれば良かったのですけどね。

No. 3536 # yuki 2004/01/28 (水) 13:36:44
>>3528 68user
The symbolic linkでしたか。
ぜんぜん気がつきませんでした。有難うございました。

No. 3537 # タカ 2004/01/29 (木) 14:52:55
はじめまして。タカと申します。
Perl関連について御教授ください。
Windows端末にてActivePerl-5.8.2.808-MSWin32-x86をインストールし
Perlを作成しております。
そこで、PerlでExcelファイルに出力するプログラムを
作ろうと思っております。
その為、Spreadsheet-WriteExcel-0.42モジュールを、
ダウンロードしました。
本モジュールはWindowsでも機能すると表示されているのですが、
どうやって使用すればいいのか分かりません。
Spreadsheet::WriteExcel version 0.33(日本語訳)の
HPを見ているのですが、私の知識不足で不明です。

もしご存知であれば御教授いただきたいのですが、
よろしくお願いいたします。

No. 3538 # 68user 2004/01/29 (木) 15:15:28
>>3537 タカ
http://member.nifty.ne.jp/hippo2000/perltips/module_install.htm
によると、ActivePerl の場合は PPM なるものを使うそうです。

# わたしは使ったことはありません。

No. 3539 # タカ 2004/01/29 (木) 15:56:06
ありがとうございました。
ちょっと試してみます。

No. 3540 # has 2004/01/29 (木) 17:02:12
クッキーに関する↓の冒頭でRFCに盛り込まれていないとありますが、
どうも2109で触れているそうですよ。
http://x68000.startshop.co.jp/~68user/webcgi/cookie.html

参考にさせていただいたサイト:
http://www.nonki.net/technical/report/http-cookie/
http://www.ietf.org/rfc/rfc2109.txt

No. 3541 # 68user 2004/01/29 (木) 18:48:20
>>3540 has
ありがとうございます。とりあえずそこだけ直しておきます。

> どうも2109で触れているそうですよ。
RFC 2109 は obsolete で、今は RFC 2965 です。
      http://www.studyinghttp.net/rfc_ja/rfc2965_ja.html

でもまぁ、Set-Cookie2 は全然流行っていませんけどね。

No. 3542 # 右院堂 2004/02/01 (日) 21:42:44
はじめまして 右院堂 と申します。
いきなり質問で エゴ丸出しで申し訳ないですが
ASP には Response.Buffer = True というのがあって、
ある html の form から 呼ばれた asp が 呼び元へ 自分の form を
Response.Redirect で 返す時、Response.Redirect が実行されるまで HTMLヘッダーの出力を引き伸ばすことが出来ます。
これをやらないと HTMLヘッダーが 自分自身として Redirectされる前に出力されてしまうからです。
Perl では これに相当する記述はあるんでしょうか。

No. 3543 # 68user 2004/02/01 (日) 22:11:49
>>3542 右院堂
ASP はよく知りませんが、素の perl を使う場合は (そういう機能を
持つモジュールを使わない限りは) 相当する機能はないです (そういう
機能を持つモジュールの存在は知りません)。

      $buf .= "出力文字列1";
      $buf .= "出力文字列2";
      ...
      print $buf;

や、

      open(STDOUT, "> /foo/bar/tmp.$$");
      print "出力文字列1";
      print "出力文字列2";
      ...
      close(STDOUT);

      open(IN, "/foo/bar/tmp.$$");
      print <IN>;
      close(IN);

などと自分でバッファに保存し、最終的に出力するのが
よいと思われます。

No. 3544 # yuki 2004/02/04 (水) 17:58:59
ポートに関しては初心者です。
すいませんが、ポート番号について教えて下さい。

Solarisを使用していますが、ポート番号は任意の決め事ですか?
現在使用しているSolarisは下記設定になっているようです。
WEBサーバはポート=80、FTP=20、プリントサーバ=9100

これらは、標準で決まっているのでしょうか?
また、相手側を意識せず勝手にきめてもよいのでしょうか?

他に、ポートの設定をみる方法とかありましたらご教授下さい。
宜しくお願いします。

No. 3545 # 68user 2004/02/04 (水) 18:10:08
>>3544 yuki
> Solarisを使用していますが、ポート番号は任意の決め事ですか?
おおまかな指針はありますが、任意です。

> WEBサーバはポート=80、FTP=20、プリントサーバ=9100
デフォルトではそのような設定になっていますが、ほとんどの
場合は (サーバソフトウェアが対応していれば) ポートは変更
できるでしょう。ポート変更方法は各サーバソフトウェアの
マニュアルに書いてあるはずです。

> また、相手側を意識せず勝手にきめてもよいのでしょうか?
標準的でないポートを使用するよう設定変更してもいいですが、
利用者に通知しないと使うことができません。

例えば web サーバであれば
        http://www.example.co.jp/
ではなく
        http://www.example.co.jp:8080/
にアクセスするようアナウンスしないといけませんし、プリンタで
あれば自組織の環境設定手順書に
    「プリンタの設定時に、ポート xxxx を使用するように設定してください」
と書いておく必要がある、といった感じです。

というわけで、標準的でないポートを使うことはできますが、
なにかとめんどくさい、という感じです。また、外部向けの
サービスであれば、ファイアウォールで弾かれたりする危険性は
高まりますね。

No. 3546 # yosi [E-mail] 2004/02/06 (金) 12:22:43
irix使ってますが、ls -lでfileの詳細を見ると、拡張子の後に*が表示されてます。これはなにを意味するのでしょうか?

No. 3547 # 68user 2004/02/06 (金) 22:17:48
>>3546 yosi
実行ファイルと思われます。ls の -F オプションの説明を読んでください。

No. 3548 # つくも 2004/02/07 (土) 15:13:42
UNIXのCシェル2点につてい教えて下さい。

1点目
以下の、a.txtファイルから第1フィールドの値を
先頭の'0' or "> 0 "のゴミを取って、10桁(先頭0なし)だけを
また、第1フィールドの文末の半角スペースや’|’を取ってとり
だしたいのですが、第1フィールはawkを使って取得できますが、
その後に編集ができません。たしか、sedの何かを使えば数字のみ
だけを取り出せたと思うのですが、浮かんできません。
教えていただけないでしょうか。

cat a.txt | awk -F"," '{ print $1 }' | sed

a.txt
09012345678,aaaa
07055593850,bbbb
9098765432,cccc
7012345678,ddddd
> 07012345679 | ,eeeee
07012345670 ,ffff

出力結果
9012345678
7055593850
9098765432
7012345678
7012345679
7012345670

2点目
Cシェルで定義ファイルに設定してある項目を読み込むには
どうしたらよいのですか。
定義ファイル
MN=ABCDEFG
FILE=/work/temp.txt

set PARM1 = `grep ^MN 定義ファイル| awk -F"=" '{ print $1 }'`
set PARM2 = `grep ^FILE 定義ファイル| awk -F"=" '{ print $1 }'`
と繰り返すかないのでしょうか。
また、何も、タブとか半角スペースから始まっている場合もあると思うの
ですが、どうすればよいのですか。

No. 3549 # zsh 2004/02/09 (月) 08:22:34
>>3548 つくも
1点目はawkのみで可能。
(古いawkではダメとかあるかも知れないけど。)
------
awk 'BEGIN {
                FS = "," ;
} {
                i = match($1,"[1-9]");
                print substr($1,i,10);
}' a.txt
------

2点目は、こんな事が許されるのか判りませんが
------
eval `awk 'BEGIN{ FS="=" }{ if(NF != 0) print "set " $1 " " $2}' param.txt`
------
大人しく定義ファイルで「set A=val」と書いて
sourceすべきだと思いますが・・・

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 3550 # zsh 2004/02/09 (月) 08:28:33
>>3549 zsh
2点目は以下の間違い。
------
eval `awk 'BEGIN{ FS="=" }{ if(NF != 0) print "set " $1 "=" $2 }' param.txt`
------

>68user様
半角カナ失礼しました。

No. 3551 # つくも 2004/02/09 (月) 13:54:08
>>3549 zsh
>>3550 zsh
ありがとうございました。
両方ともできました。

ただ、2点目については、定義ファイルでの変数名とシェル内での設定
する変数名がことなっていたので最初は誤ってしまいました。

No. 3552 # 恵美 2004/02/12 (木) 19:48:32
はじめまして、恵美といいます。
いろいろ検索していましたら、このページにたどり着きました。
私は某会社のSE見習いなのですけれど、perlのリファレンスでつまづき悩んでいます。
ハッシュのリファレンスを上手にコピーする方法がよく、...いえ...さっぱりわからないです。
会社の人にきいたら、リファレンスは知らないと言われ、ダブルショックでした。

リファレンスを、1つ1つコピーすると

$hash->{'str'} = $hash2->{'str'};

これだけなのですが、複数の値を同時にコピーするといつも失敗してます。

普通のハッシュでスライスを使うと、

my %hash = (a=>1,b=>2,c=>3);
my %hash2 = (x=>11,y=>12,z=>13);

@hash{'a','c'} = @hash2{'x','z'};

print $hash{'a'},$hash{'c'},"\n";

  11 13 となるのですけれど、同じことをリファレンスでやると失敗するんですよ。

$hash = {a=>1,b=>2,c=>3};
$hash2 = {x=>11,y=>12,z=>13}

このとき、
print $hash->{'a'},$hash->{'c'},"\n";

の答えはどうしたら、 11 13 になるのでしょうか。

よろしくお願いします。

No. 3553 # 68user 2004/02/12 (木) 23:04:41
>>3552 恵美
    - ($x{'k1'}, $x{'k2'}) は @x{'k1','k2'} と等価 (*1)。
    - ハッシュのリファレンス $y のデリファレンスは $$y{'k1'}
        ($y->{'k1'} と同じ)。

をふまえた上で、今回は ($$y{'k1'}, $$y{'k2'}) を代入したい
ので、*1 を素直に置き換えると
        @$hash{'a','c'} = @$hash2{'x','z'};
となります。

てゆーか、ハッシュスライスは使わない方がいいですよ。配列と
間違えやすいので、可読性低すぎです。わたしなら 2 項目であれば
      $hash->{'a'} = $hash2->{'x'};
      $hash->{'c'} = $hash2->{'z'};
と 2行で書きます。

どうしても短く書きたい場合でも
      ($hash->{'a'}, $hash->{'c'}) = ($hash2->{'x'}, $hash2->{'z'});
とします。

項目数が多いなら
      my %map_table = ('x'=>'a', 'z'=>'c');
      while (my ($fromkey, $tokey) = each %map_table){
            $hash->{$tokey} = $hash2{$fromkey};
      }
とか。長くはなりますが、項目の対応がもっともわかりやすく、タイプ
ミス ($hash と $hash2 を書き間違えるとか) の可能性も減ります。

No. 3554 # 恵美 2004/02/13 (金) 01:33:24
こんにちは恵美です。
どうもありがとうです(^^)v
すっかり解決して嬉しいです。
リファレンスはいまいちよくわかってないけど...

複数行で記述するのを1行でって思ってずっと悩んでいたんだけど、心の中を読まれちゃったかな...

なんか、すごすぎるページなのでちょくちょく見に来ます。

おやすみなさい。
今日はありがとう(^^)

No. 3555 # 瀧上 2004/02/15 (日) 21:46:41
はじめまして、瀧上と申します。
現在UNIX環境でのバッチ処理方式・環境設計を行っています。
開発経験はあるのですが、環境構築からやるのは初めてで頭を悩ましています。宜しければ下記の点についてご教授下さい。

デバッグメッセージの出力有無の切替について教えて下さい。
開発言語はCシェル&Cです。
以前のプロジェクトではC言語におけるデバッグメッセージを出力するしないを、環境変数で設定してしました。おそらく、これを見る事によりデバッグメッセージ出力用の共通関数にデバッグのON/OFFを切り替えさせていたのだと思います。
もし、上記以外に一般的な(適切)な方法があるなら教えて下さい。
レベルの低い質問で申し訳ないのですが、よろしくお願い致します。

※UNIXの環境構築や、ジョブスケジューラにおけるNET設計の参考となる
    URLをご存知であれば教えていただきたいです。
    

No. 3556 # 68user 2004/02/16 (月) 10:23:10
>>3555 瀧上
> 上記以外に一般的な(適切)な方法があるなら教えて下さい。
しょせん決め事なので、一般解はありませんが、
      - コマンドオプション (--debug や -d など) を指定する
      - make debug で、デバッグ用バイナリを生成する
      - make install すると ~/bin/ に通常バイナリを、~/bin/debug/
          にデバッグ用バイナリを格納する
などの方法があります。

どれでもいいので、いずれかをプロジェクトのルールとして決定して
おくのがよいでしょう。

わたしの場合、
        「デバッグモードは開発時のためのモードではなく、通常運用時や
            後々のバグ追及時にこそ有用なもの」
という考え方なので、わたしが好む方法は以下の通りです。

      - デバッグモードを実装する。デバッグモードの場合、rollback
          するなどして、データを一切更新しないようにする (まわりの環境に
          一切影響を与えない)
      - デバッグモードとは別に、冗長なメッセージを出すだけの冗長
          モード (verbose モード) を実装する。冗長モードの場合は、
          通常どおりデータを更新する。
      - エラー発生に気づきやすいよう、ログに吐いたメッセージは
          標準出力・標準エラー出力にも吐くようにする。
      - オプションでデバッグモード・冗長モードを切り替えられること。
          例えば --debug でデバッグモード、--verbose で冗長モード、など。
          デバッグモードの場合、自動的に冗長モードも有効にするようにする。

コード例は以下の通り。

          int debug_flg = 0;
          int verbose_flg = 0;
          for ( i=1 ; i<argc ; i++ ){
                  if ( strcmp(argv[i], "--debug") == 0 ){
                          debug_flg = 1;
                          verbose_flg = 1;
                  }
                  if ( strcmp(argv[i], "--verbose") == 0 ){
                          verbose_flg = 1;
                  }
          }

          /* こんな感じで各種情報を出力 */
          verbose("ほげほげ foo=[%d]", foo);

          ....
          if ( debug_flg ){
                  EXEC SQL ROLLBACK RELEASE WORK;
          } else {
                  EXEC SQL COMMIT RELEASE WORK;
          }

          void
          verbose(char *fmt, ... ){
                  va_list ap;
                  char buf[8192];

                  /* verbose モードでなければ、何もしない */
                  if ( ! verbose_flg ){ return; }

                  va_start(ap, fmt);
                  vsnprintf(buf, sizeof(buf-1), fmt, ap);
                  va_end(ap);

                  fprintf(stderr, "debug: %s", buf);
          }

使い方としては、
      - 単に詳細なメッセージを表示したい場合は冗長モードを使う。
      - まわりの環境に影響を与えず、とりあえずうまく動くか確かめたい
          場合はデバッグモードを使う。
となります。


> UNIXの環境構築
UNIX の環境構築と言っても範囲が広すぎるので、なんともいえません。

> ジョブスケジューラにおけるNET設計
これは何でしょうか? JP1 とかの話?

No. 3557 # 瀧上 2004/02/16 (月) 12:32:15
大変参考になります。
方式だけでなく、考え方とコードまで載せていただいたのは恐縮です。
参考例を深慮して方式を定めます。
ありがとうございました。

> UNIXの環境構築
UNIX の環境構築と言っても範囲が広すぎるので、なんともいえません。
→そうですね、すみません、主にUNIX環境でのバッチ処理におけるShellの置き場所や構成の最適な方式を調査できるHPを探していました。「コンパイラ等、ツールの環境(変数)設定ファイルは全て別で持つのが好ましいのか」、、とか、「バッチ処理起動shellでsourceする環境設定ファイルにディレクトリとOracleSIDを考えているが、これが最適なのか?」等です。。。開発、本番時に必要な要件を洗い出していけばおのずと出てくると思うので、考えてみます。 開発とUNIXでの開発経験が乏しいので、自分の知っている方式を、プロジェクトの標準として使っていいのか不安なのです(^^;)

> ジョブスケジューラにおけるNET設計
これは何でしょうか? JP1 とかの話?
そうです。本日書籍購入しました。上記と同じで、もし有効なHP等ご存知であれば教えてもらいたいと思ったので。。。。
    

No. 3558 # 68user 2004/02/16 (月) 15:45:23
>>3557 瀧上
> 主にUNIX環境でのバッチ処理におけるShellの置き場所や
> 構成の最適な方式を調査できるHPを探していました。
そういうことを書いている web は見たことないですね。基本的に趣味で
やってる人には関係ないし、それを知ってる企業は「ノウハウ」として
隠してしまいますので。

# しょーもないやり方を「ノウハウ」などと称しているところも
# 多いわけですが。

ちょっと長くなりますが、まぁひととおり書いてみます。


まず、ユーザを複数作ります。例えばユーザ名が hoge なら、
      hogedevel (開発環境)
      hogesi (SI (結合テスト) 環境)
      hogert (RT (受入テスト) 環境)
の 3つくらい。それぞれのホームディレクトリは /home/hogedevel,
/home/hogesi, /home/hogert などとします。

さらに DB が必要であれば、これも 3つ (hogedevel, hogesi,
hogert) 作ります。

通常の開発は hogedevel を使います。hogesi や hogert は
テストの段階で初めて使います。
      「開発者は基本的に hogedevel しか使ってはいけない」
というシバリを入れるのもよいでしょう。


各ホームディレクトリの下には
        src/ ソース置き場。CVS などでソース管理すること。
        conf/ 手で管理する設定ファイルなどを置く場所。
        bin/ バイナリ置き場。src で make install すると作成される。
        lib/ バイナリ以外の設定ファイルやデータファイルなど。
                  src で make install すると作成されるものに限る。
        log/ ログファイル置き場
        dat/ 生成するデータファイル・他から送られてきたデータファイル
とします。

つまり src/ で make install すると bin/, lib/ が作成される
わけなので、bin/ や lib/ は消しても src/ を元に再作成する
ことができます。

しかし conf/ は手動管理の設定ファイル群なので、こちらは
消してはいけません (conf/ も CVS などで管理するのがよい
でしょう)。

lib/ には、プログラムで生成する雛型のファイルとか、SQL*Loader
用に喰わせるファイルなど、devel, si, rt で共用のファイルを置き
ます (実行形式のバイナリではないけど、プログラムの一部と見なして
よいものを置く)。


で、環境変数は
      /home/hogedevel/conf/env.sh
      /home/hogesi/conf/env.sh
      /home/hogert/conf/env.sh

      ORACLE_SID=hogedevel
      HOME=/home/hogedevel
      PATH=/home/hogedevel/bin
      ORACLE_HOME=...
書きます。

これを source して各アプリが起動し、
      - DB の接続先は $ORACLE_SID とする
      - $HOME/log/ にログを吐く
      - $HOME/data/ にデータファイルを作成する
とします。


というわけで、基本的には
> バッチ処理起動shellでsourceする環境設定ファイルにディレクトリと
> OracleSIDを考えているが、これが最適なのか?
それでよいと思います。

> コンパイラ等、ツールの環境(変数)設定ファイルは全て別で持つのが
> 好ましいのか
どういうファイルのことを指しているのかよくわかりませんが、
      $ORACLE_HOME/precomp/lib/env_precomp.mk
とかですか?

基本的に、この辺は共通でよいのではないでしょうか。もし、一部の
プログラムで特殊なことをしたければ Makefile 内で上書きすればよい
わけで。

あと、いくつか気をつけるポイントをあげておきます。

      - ディレクトリやファイルは絶対に手で作成しない。

          手で作成するとかならずミスするので、全て Makefile に
          記述する。

      - CVS などのソース管理ツールを活用する。

          /home/hoge{si,rt}/src/ に手でソースを配置し、手で make install
          する、というやり方は極力避ける。CVS などでマスタ管理し、
                  毎日朝 AM6:00 に、自動的に ~hoge{si,rt}/src にソースを
                  checkout し、make install
          などと、全てを自動化するのがベスト。

この他に何か質問があれば、もう少しポイントを絞って、具体例を
あげてください。

>> これは何でしょうか? JP1 とかの話?
> そうです。本日書籍購入しました。
非オープン系なアプリの場合、web 上からの情報収集は厳しいかと
思います。

JP1 は使ったことがないのでわかりません (わたしは cron の代替品、程度の
認識しかありませんが)。やっぱり便利なんですかねぇ。

No. 3559 # 68user 2004/02/16 (月) 15:54:18
>>3558 68user
> しかし conf/ は手動管理の設定ファイル群なので、こちらは
> 消してはいけません (conf/ も CVS などで管理するのがよい
> でしょう)。
lib/ との違いがわかりづらい気がするので補足。

hoge{devel,si,rt} で異なる設定ファイルは conf/ に、そうでない
ものは lib/ に置く、という意味です。

もちろん make 時に環境によって異なるファイルを lib/ にインス
トールできれば conf/ などいらないのですが、それを実現するためにMakefile に複雑な細工をしなければいけないケースがあったりするので。

No. 3560 # ふくし [E-mail] 2004/02/17 (火) 19:43:42
おひさしぶりです。困ったときばっかり登場してすみません。
たぶんあけましておめでとうございます。

ここ5年ぐらいメンテしてる CGI なんですが、
根本的な改革を迫られました。

A.cgi が生成するページにおいて、
ボタンを押したら(可変パラメータ付きで)
B.cgi が生成するページに進み、
リンクを押したら(可変パラメータなしで)
C.cgi が生成するページに進むという実装になっています。

ところが、ここで C.cgi にも
A.cgi で選択入力する可変パラメータを渡さなければ
ならなくなったのです。

A、B、C 非常に肥大化していて、安易な解決法が欲しい状況です。
CGI のみで解決できればうれしいですが、
場合によっては JavaScript でもかまいません。
なにかあればご教示願えれば幸甚です。よろしくお願いします。

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