68user's page 掲示板

Prev< No. 4005〜4368> Next  [最新発言に戻る] [過去ログ一覧]
No. 4005 # アンドロメダ 2004/10/19 (火) 15:15:24
みなさんアドバイスありがとうございました。
tarでまとめてリモートコピーする方法でテストしたところ
うまくできました。
ありがとうございました。\(^O^)/

No. 4006 # くろ 2004/10/21 (木) 23:18:25
はじめまして、くろと申します。

ここのサイトのネットワークプログラミング[ SSL/TLS でアクセスしてみよう (1) ]の
サンプルを元に、https接続で、メソッドをGETではなくPOSTで、データを送信したところ
HTTPステータス[400 Bad Request]が戻ってきてしまいます。

リクエストのヘッダーがおかしいのかな?と思い、下記のようにしたのですが、
POST プログラム名 HTTP/1.0
User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0)
Content-Length: 270
Content-type: text/xml; charset=utf-8

上手くいきませんでした。(改行コードは、\r\nです)

このステータスが戻ってくる原因として、他にどんなことが考えられますでしょうか?
正直、今の私にはここまで限界で・・・

どなたかご存知の方がいらっしゃいましたら、教えていただけませんでしょうか?

宜しくお願い致します。

No. 4007 # 68user 2004/10/22 (金) 01:39:07
>>4006 くろ
> POST プログラム名 HTTP/1.0
プログラム名って何ですか? https でなく http ならうまくいくんですか?
POST でなく GET ならうまくいくんですか?

POST を受けてくれる SSL/TLS サーバが手元にないので、
        https://www.rsasecurity.com/solutionsPrimary.asp
に対して以下のリクエストを送信してみましたが、正常なレスポンスを
取得できました。

        POST /solutionsPrimary.asp HTTP/1.0
        Host: www.rsasecurity.com
        Content-Length: 2

        ab

No. 4008 # くろ 2004/10/22 (金) 13:47:15
>>4007 68user

説明に至らない点があったみたいで、すみません。

>プログラム名って何ですか?
これは、POSTをするプログラム名を指しています。

教えて頂いたURLに、POSTしてみたのですが、
サーバーからのレスポンスとして、「HTTP/1.1 400 Bad Request」
が戻ってきました。。。

68userさんでは、上手くいっているようなので、
私のプログラムの問題のようですね。。。

既に6日間も悪戦苦闘しますので、
なにか助言などありましたら、お手数ですが宜しくお願いします。

No. 4009 # 68user 2004/10/22 (金) 13:54:22
>>4008 くろ
> これは、POSTをするプログラム名を指しています。
だからプログラム名って具体的に何ですか?
      POST hoge HTTP/1.0
とかしてたりしませんか? ちゃんと
      POST /hoge HTTP/1.0
としていますか?

んなこたわかっとると思われるかもしれませんが、あなたのレベルが
わからないので、こういうところから確認しているんですよ。

No. 4010 # 68user 2004/10/22 (金) 14:08:46
>>4008 くろ
> 教えて頂いたURLに、POSTしてみたのですが、
> サーバーからのレスポンスとして、「HTTP/1.1 400 Bad Request」
> が戻ってきました。。。
ああ、これを見落としていました。

ではリクエストのやり方が悪いのでしょう。ソースを提示してください。

No. 4011 # くろ 2004/10/22 (金) 15:14:32
>>4010 68user

ご迷惑をお掛けしまして、大変申し訳ありません。
プログラム名ですが、[POST hoge HTTP/1.0] という感じで、
設定しております。

以下がソースになります。

+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>

#include <openssl/crypto.h>
#include <openssl/x509.h>
#include <openssl/pem.h>
#include <openssl/ssl.h>
#include <openssl/err.h>

#define EXT_OK 0
#define EXT_ERR -1
#define LINE_MAX_LEN 512
#define FILE_PATH_LEN 256
#define SEND_XML_LEN 640
#define RECV_VAL_LEN 256

#define SEND_VALUE "xml=送信データ"

int main(int argc ,char *argv[])
{
    int ierr = 0;
    int isockt = 0;
    int read_size = 0;
    struct hostent *servhost; // サーバ情報構造体
    struct sockaddr_in server; // ソケット構造体
    struct servent *service; // サービス構造体
    
    SSL *ssl;
    SSL_CTX *ctx;
    
    char *str;
    char send_buf[SEND_XML_LEN + 1]; // 送信データ
     char request[SEND_XML_LEN + 1]; // ヘッダー
    char total_buf[RECV_VAL_LEN + SEND_XML_LEN + 1]; // 送信データ(ヘッダー + データ)
    char *host = "接続先ホスト名"; // サーバ名セット
    char *path = "CGIパス"; // CGI名セット
    char buf[RECV_VAL_LEN];
    
    memset(send_buf,'\0',sizeof(send_buf));
    memset(request,'\0',sizeof(request));
    memset(total_buf,'\0',sizeof(total_buf));
    
    servhost = gethostbyname(host);
    
    if ( servhost == NULL )
    {
        fprintf(stderr, "[%s] から IP アドレスへの変換に失敗しました。\n", host);
        
        exit( EXT_ERR );
    }
    
    bzero((char *)&server, sizeof(server));
    
    server.sin_family = AF_INET;
    
    bcopy(servhost->h_addr, (char *)&server.sin_addr, servhost->h_length);
    
    service = getservbyname("https", "tcp"); // ポート番号取得
    
     if ( service != NULL )
    {
         server.sin_port = service->s_port;
    }
    else
    {
         server.sin_port = htons(443); // 取得できなかったら、ポート番号を 443 に決め打ち
    }
    
     isockt = socket(AF_INET, SOCK_STREAM, 0);
    
    if ( isockt < 0 )
    {
         fprintf(stderr, "ソケットの生成に失敗しました。\n");
        
        exit( EXT_ERR );
    }
    
    if ( connect(isockt, (struct sockaddr*) &server, sizeof(server)) == -1 )
    {
         fprintf(stderr, "connect に失敗しました。\n");
        
        exit( EXT_ERR );
    }
    
    SSL_library_init(); // SSLのライブラリを初期化
    
    SSL_load_error_strings(); // SSLエラーメッセージ Catch
    
    ctx = SSL_CTX_new(SSLv23_client_method()); // SSLv2を使用
    
    ssl = SSL_new(ctx);
    
    SSL_set_fd(ssl, isockt); // SSLとソケットの関連付け
    
    ierr = SSL_connect(ssl);
    
    sprintf(send_buf,"%s",SEND_VALUE);
    
    sprintf(request, "POST %s.cgi HTTP/1.0\r\n"
                "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0)\r\n"
                "Content-Length: %d\r\nContent-type: text/xml; "
                "charset=utf-8\r\n\r\n",argv[0],strlen(send_buf));
    
    sprintf(total_buf,"%s%s",request,send_buf);
    
    ierr = SSL_write(ssl, total_buf, strlen(total_buf));
    
    printf("サーバからのレスポンス\n");
    
    while (1)
    {
        memset(buf,'\0',sizeof(buf));
        
        read_size = 0;
        
         read_size = SSL_read(ssl, buf, sizeof(buf)-1);
        
        buf[read_size] = '\0';
        
        if ( read_size > 0 )
        {
            write(1, buf, read_size);
        }
        else
        {
             break;
         }
     }
    
    SSL_shutdown(ssl);
    
     close(isockt); // ソケットクローズ
    
    SSL_free(ssl);
    
    SSL_CTX_free(ctx);
    
     exit( EXT_OK );
}
+−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+

申し訳ありませんが、ご教授ください。
宜しくお願いします。

No. 4012 # 68user 2004/10/25 (月) 10:06:59
>>4011 くろ
SSL/TLS 以前の問題に見えます。http://X68000.q-e-d.net/~68user/net/
    HTTP クライアントを作ってみよう(1)〜(4)
を読んでください。

No. 4013 # くろ 2004/10/25 (月) 17:16:29
>>4012 68user

ご指摘ありがとうございました。

なんと接続することができました。
ご迷惑をお掛けしまして、申し訳ありません。

No. 4014 # どんぐ 2004/10/25 (月) 20:25:48
環境変数にセットする値をConfigFileから読み込む仕様のシェルがあります。

しかし今その環境変数の値にスペースがある場合にうまく動きません。

具体的には

configFile内に
T_DATE=`date +'%Y%m%d%H%M%S'`

と記述して実際のBシェルの中で
for var in `cat ${CONFIG}`
do
export $var

done
としています。

想定としては
export T_DATE=`date +'%Y%m%d%H%M%S'`
となってほしいのですが

実際には
export T_DATE=`date

export +'%Y%m%d%H%M%S'`=+'%Y%m%d%H%M%S'`
という2つの変数として扱われてしまいます。
これを回避する方法はありませんでしょうか。
使用している環境はHP-UX B.11.11 です。

No. 4015 # 68user 2004/10/25 (月) 21:35:35
>>4014 どんぐ
while read line; do
    eval $line
done < ${CONFIG}

てな感じでどうでしょうか。

No. 4016 # Lococo 2004/10/26 (火) 10:33:08
Vacancies in SUN China
In 1982 Sun Microsystems created a business vision named “The Network is the Computer”. In the same year Sun initiated R&D on Java Technology. Today Sun is recognized by all as the Premier Network Enterprise Computing Vendor and have a global presence in over 100 countries. In 1987, Sun entered China market and has been dedicated to the technology and customer solution development in China.

Customer Solution Center in Beijing expand repidly to provide technical hot line suppot to mission critical customers. We invite top nortch engineers to join our champion team in Beijing to provide world-class customer services.

Solution Center Engineer (GC0201938) (53 Vacancies)
UNIX generalist responsible for providing system support that includes hardware, software, software applications, and networking to customers via telephone support. Incumbent must be university graduate in Computer Science / Electronic Engineering, knowledgable in O/S like Unix, Linux or Solaris systems, fluent in written and spoken Japanese and with minimum 3 years of Unix Sever Support, System Integration or internal MIS support of Unix Sever.

Solution Center Manager (GC0201941) (2 Vacancies)
Manages and directs the activities of the Solution Center teams to provide customer facing technical post sales support of both hardware and software issues. Accountable for meeting operational excellence, customer satisfaction and people management goals of Solution Center. Liaise closely with the product technical support group for technical escalation as well as the local field operations. Incumbent must be Universtiy graduate in Computer Science / Electronics Engineering, 10 years customer support experience with 5 years in managerial capacity and fluent in written and spoken Japanese, good English is a plus.


To apply this position, Please send your resume in English, Mandarin or Japanese and marked with position code to Lisa.wu@multimage.com.cn.
Contact:
Tel: +86 10-65057881-17 Lisa
                              84580901-17 Lisa
Mob: 13501160969
Fax: +86 10-65057880/84583069

No. 4017 # さいさん 2004/10/26 (火) 20:42:17
duコマンドで、ディスクの使用率をバイトで表示しようと以下の
コマンドを実施したのですが、サイズとディレクトリ名との間に
改行が入り、一行で表示できません。
サイズとディレクトリ名を一行で表示し、その後、改行したいの
ですがどうすればよいですか。

5295104
        .
2594816
        ./tmp1
1864704
        ./tmp2
821248
        ./tmp3
10240
        ./tmp4
      

5295104 .
2594816 ./tmp1
1864704 ./tmp2
  821248 ./tmp3
    10240 ./tmp4

としたいのですが。

du -k $1 | sort -n -r | awk '{ system("echo "$1"*1024 | bc"); printf(" %s\n", $2) }'

No. 4018 # 68user 2004/10/26 (火) 21:05:45
>>4017 さいさん
> du -k $1 | sort -n -r | awk '{ system("echo "$1"*1024 | bc"); printf(" %s\n", $2) }'
改行コードが余分なわけなので
    du -k | sort -nr | awk '{ system("echo "$1"*1024 | bc | tr -d \\\\n"); printf(" %s\n", $2) }'
    du -k | sort -nr | awk '{ system("echo -n `echo "$1"*1024 | bc`"); printf(" %s\n", $2) }'
とか。

わたしなら「わかりづらい」「無駄なプロセス生成が嫌」という理由から、
    du -k | sort -nr | awk '{ printf("%6d %s\n",$1*1024,$2)}'
などとします。

No. 4019 # さいさん 2004/10/26 (火) 23:04:36
>>4018 68user

>du -k | sort -nr | awk '{ printf("%10d %s\n",$1*1024,$2)}'
と最初はやっていたのですが、$1に設定されるブロックサイズが大きい
と「$1*1024」でオーバーフローを起こし、正しい計算ができないので
systemで、bcで計算をするようなことに

No. 4020 # NL 2004/10/26 (火) 23:08:07
>>4017 さいさん
>>4018 68user

>du -k | sort -nr | awk '{ system("echo -n `echo "$1"*1024 | bc`"); printf(" %s\n", $2) }'

サーバとかOSのバーションとか記述されてませんでしたけど、
「echo -n」は、依存しませんでしたか。

No. 4021 # さいさん 2004/10/27 (水) 09:50:10
>>4107 68user

>>4018 68user
>du -k | sort -nr | awk '{ system("echo -n `echo "$1"*1024 | bc`"); printf(" %s\n", $2) }'

shかcshで異なるみたいです。

バークレイ版では、「\c」 エスケープを「-n」オプションで代用することができます。
echo が csh(1) の組み込み関数として用いられている場合には、バークレイ方式に
従っています。

#du -k $1 | sort -nr | awk '{ system("echo `echo "$1"*1024 | bc` \\\\c"); printf(" %s\n", $2) }'
で、できました。

No. 4022 # ken [URL] [E-mail] 2004/10/27 (水) 23:42:33
こんにちは

kenといいます。

Winsockを使ってネットワークの勉強してまして大変勉強になりました。
ソケットプログラミングを進めていくうちにどうしてもわからない点が発生
したので、もしよろしければとおもいメールしました。

問題はSend()/Recv()でパケットサイズを超えるデータを連続で
送受信させたいのです。
パケットを超える送信をするにはsend()の引数にバッファ、サイズを
そのままのっければ、自動でパケットサイズに切り分けて送信してる
のを確認しました。ですが、受信終了を示す返り値のlengs=0を受信
できませんでした。どうも送ってないようです。httpサーバーに接続して
受信をためしたのですが、lengs=0を確認でき連続で受信することができました。
recv()での受信lengs:0はシャットダウンを意味するとの記述も見つけたのですが、
shutdown()では送信復帰ができないので、使えません。

パケットサイズを超えるデータを連続で送信し受信する時、
受信データの終了を送信したり、受信するにはどうすればいいので
しょうか?
サーバーがファイルの終了を示すleng=0を送信するのは
なにか命令があるのでしょうか?
ソケットをシャットダウンするとleng=0を送信できますが
シャットダウンを復帰できないはずですがしてるのでしょうか?

よかったらレスお願いしますm(__)m
page:homepage3.nifty.com/MIDI-EDITOR/
mail:NQD00781@nifty.com
ken

No. 4023 # 68user 2004/10/28 (木) 03:18:37
>>4022 ken
TCP ですか? それとも UDP ですか?

> パケットサイズを超えるデータ
パケットサイズって具体的に何のことを指していますか?

> 受信終了を示す返り値のlengs=0を受信できませんでした。
送信側で close か shutdown しましたか?

> shutdown()では送信復帰ができないので、使えません。
送信復帰って何ですか?

No. 4024 # どっかん 2004/10/28 (木) 13:12:28
sedを使用して先頭1行目のみ置換を行い、
すべてを出力させたいのですが、どうすれば
よいですか。

sed 's/o=test$/o=honban/g'
とすると置換は行われますが、先頭1行目のみ
だけしたいのです。

CM1: id=00001,nm=test,o=aaa,o=test
CM2: mod
CM3: option
-
CM4: ftp
CM5: get


CM1: id=00001,nm=test,o=aaa,o=honban
CM2: mod
CM3: option
-
CM4: ftp
CM5: get

No. 4025 # ken 2004/10/28 (木) 16:41:37
>TCP ですか? それとも UDP ですか?
TCPです。

>> パケットサイズを超えるデータ
>パケットサイズって具体的に何のことを指していますか?
send()/recv()での送信、受信レングスです。
この場合では、Recv時のレングスです。

>> 受信終了を示す返り値のlengs=0を受信できませんでした。
>送信側で close か shutdown しましたか?
サーバー側でデータを送信し、終了したらshutdown/closeを行うべき
なのでしょうか? 確かにレングス0を受信できますが、その後に
送受信を必要な場合はどうすればいいのでしょうか?
httpサーバーにアクセスした時はレングス0が帰ってきたのですが、
shutdownしていたのでしょうか?


>> shutdown()では送信復帰ができないので、使えません。
>送信復帰って何ですか?
送信の終了を示す、レングス0を送るためにclose/shutdownを使うと、
その後にアクセスができなくなる。
shutodownしたソケットを再使用は危険とMSDNにでてます。

No. 4026 # zsh 2004/10/28 (木) 18:59:37
>>4024 どっかん
sed -e '1s/o=test$/o=honban/'

No. 4027 # 68user 2004/10/28 (木) 19:21:13
>>4025 ken
要は、ピアが送信したデータが全部届いたことを確認したいのですか?
それならば、TCP/IP のレベルではなくアプリケーションのプロトコル
レベルで実現するのが普通です。

例:
    - 送信側は「データ長 + データ」を送信。受信側は最初に受け取った
        データ長の分だけデータを受信したら、全データ到着とみなす。
    - 改行コードをプロトコルのひとまとまりとみなす。送信側は
        データの末尾に改行コードをつけて送信。受信側は改行コードを
        受け取ったら全データ受信とみなす。

端的に言うと、
    recv の戻り値が 0 = FIN が届いたとき
です (ノンブロッキングモードなどの例外はあるかと思いますが)。

で、FIN を投げるには close か shutdown する必要があるということです。

No. 4028 # ken 2004/10/29 (金) 11:47:04
レスありがとうございました。m(__)m
>要は、ピアが送信したデータが全部届いたことを確認したいのですか?
はい。
>それならば、TCP/IP のレベルではなくアプリケーションのプロトコル
>レベルで実現するのが普通です。
httpサーバーにつなげてhtmlを受信した場合に受信終了時にrecv()戻り値が
0を送っていたのは、shutdown()がかかっていたと判断していいのでしょうか?
だとすれば、再度htmlを受信する場合は、再度acceptでsocketを作成して受信
開始する必要があるのかテストする必要を感じました。

何度もレスいただきましてありがとうございました。

No. 4029 # 68user 2004/10/29 (金) 12:37:29
>>4028 ken
> shutdown()がかかっていたと判断していいのでしょうか?
http サーバが shutdown か close したと判断してよいです。

> 再度htmlを受信する場合は、再度acceptでsocketを作成して受信
> 開始する必要があるのかテストする必要を感じました。
再度接続する場合は、クライアント側は socket を生成して connect
しなおす必要があります。サーバ側はリスニングソケットは listen
しっぱなしなので、クライアントが接続しなおしてきたら accept すれば
よいです。

ただし毎回接続・切断を繰り返していては性能が出ないため、HTTP/1.1 に
おいて keep-alive やパイプラインなどの、コネクションを切断せずに
複数のデータを取得するための仕組みが考案されているわけです (これも
アプリケーション層での工夫です)。

No. 4030 # sugimoto 2004/11/01 (月) 19:46:38
>>4001 68user
2週間程前PEM形式ファイルの読み込みで質問した者です。
なんとか手元を離れたので簡単に報告です。
処理は68user様のご指摘の通り行う事で全て対応できました。
色々ありがとうございました。
行ったのは以下の3処理です。
・PEM_read_RSAPrivateKey()でPEM形式ファイルを読み込む処理
    パスワード付きの場合の処理で少し苦労・・・
・RSA_private_encrypt()で暗号化する処理
・Base64エンコードの要求があったので、EVP_EncodeBlock()でエンコー
    ド処理
出来上がれば単純なのですが、着手した時は全くの白紙状態でしたので
本当に助かりました。有難うございました。

No. 4031 # 上田 [E-mail] 2004/11/02 (火) 15:36:15
いつも参考にさせていただいております。
初めて投稿します。
上田といいます。
よろしくお願いします。

『echo サーバを作ってみよう (3)』を参考にして、echoサーバを作成してみました。
概ねはうまくいきました。
しかし、おそらく子プロセスのものだと思うのですが、defunct(ゾンビ)が残ってしまいます。
このdefunct(ゾンビ)をうまく消す方法はないものでしょうか?

ちなみに、私の環境は
Cobalt LINUX 5.0
です。

もし、私の勘違いでしたらすみません。お許し下さい。
以上、よろしくお願いいたします。

上田

No. 4032 # 68user 2004/11/02 (火) 16:30:46
>>4031 上田
> このdefunct(ゾンビ)をうまく消す方法はないものでしょうか?
サンプルプログラムでは wait をさぼっているためゾンビが残ります。
サンプルを直そうと思いつつ、はや 2年近く経ってしまいました。

ひとつのやり方として、
>>2584 persianopeh
のように SIGCHLD をキャッチする方法があります。あるいは WNOHANG を
指定して waitpid してもよいです。

No. 4033 # 上田 [E-mail] 2004/11/03 (水) 12:09:01
>>4032 68user

68userさん、ありがとうございます。
教えていただいた $SIG{CHLD} = sub { wait }; ですが、不勉強なもので、記述する場所に若干の不安が残っています。
一応、43行目と44行目の間に記述したところ、次の3つは達成できました(目的は達成できました)。
・サーバ機能
・複数同時アクセス
・defunctの消去
もし記述する場所が間違っていれば、またご連絡いただけないでしょうか?

      36: # forkで子プロセスを生成
      37: if ( $pid = fork() ){
      38: # こちらは親プロセス
      39: print "親プロセス($$): 引続きポート $port を見張ります。\n";
      40: print "親プロセス($$): クライアントの相手はプロセス $pid が行います。\n";
      41:
      42: # 親プロセスはソケットをクローズ
      43: close(CLIENT);

                              $SIG{CHLD} = sub { wait };  #←←←ここに追加しました。

      44: next;

以上、ありがとうございました。
今後ともよろしくお願いいたします。

上田

No. 4034 # noza [E-mail] 2004/11/04 (木) 16:21:49
Cシェルの中で、sqlplusに接続してsqlを実行して結果を表示したいのですが、どのようにすればよいですか?
皆さん、教えてください。よろしくお願いします。

No. 4035 # アトヌル 2004/11/04 (木) 19:26:06
始めまして。
sedコマンドで、改行を含む文字列へ変換したいのですが、どのようにすればいいですか?

abcde
------
fgh
ijk

たとえば、abcdeをfgh(改行)ijkとしたい場合、

sed "s/abcde/fghijk/g" file1 > file2
これでは改行無しで置換されてしまいます。
\n,\r\nなど埋め込んでみましたがうまくいきませんでした。

皆さん教えてください、宜しくお願いします。

No. 4036 # 2004/11/04 (木) 19:34:08
Cシェルの中で、コマンドオプションの有無を判断するのには、どのようにIF文を書けば良いですか?
教えてください、よろしくお願いします。

No. 4037 # zsh 2004/11/06 (土) 19:36:04
>>4034 noza
ヒアドキュメントを使うとできた筈ですが
sqlplusの引数でユーザ名とパスワードが必要になるため
お勧めしません。

>>4035 アトヌル
sedでは確か無理だったと思います。
(嘘ついてたらごめんなさい。)

>>4036
コマンドオプションって何ですか?引数の事?

No. 4038 # 68user 2004/11/08 (月) 13:49:29
>>4033 上田
fork の前にシグナルハンドラを設定するのが普通かと思います。でないと、
設定前にシグナルが飛んできたら困りますので。

ただしシグナルハンドラは子プロセスに引き継がれるので、fork 後に
シグナルハンドラを戻すなどの対処が必要です (この例では子プロセスが
SIGCHLD を受けることはないので、どちらでも構わないのですが)。

>>4037 zsh
> ヒアドキュメントを使うとできた筈ですが
ヒアドキュメントでもいいし、別ファイルにしておいて
      sqlplus $user/$pass @hoge.sql
としてもよいです。

> sqlplusの引数でユーザ名とパスワードが必要になるためお勧めしません。
これはまぁいいんじゃないですかね。Perl で Oracle に接続しても
スクリプト中にパスワードを書きますし、Pro*C でもバイナリを
strings すればわかりますし。

No. 4039 # yamaさん [E-mail] 2004/11/08 (月) 21:26:09
yahooオークションの自動ログインシステムをプログラムしていますが、ログインできません。
どなたかご教授願います。以下にソースを掲載しておきます。

import java.net.*;
import java.io.*;

public class post {
    public static void main(String[] args) {
        try {
            int start = 0;
            PrintWriter pw = new PrintWriter
                        (new BufferedWriter(new FileWriter("post.html")));

            // URLクラスのインスタンスを生成
            URL helloURL =
                        new URL("http://login.yahoo.co.jp/config/login");

            // 接続します
            URLConnection con = helloURL.openConnection();
            // 出力を行うように設定します

            con.setDoOutput(true);
            con.setDoInput(true);

            con.setRequestProperty("Cookie","B=banotfp0orfbj&b=2");

            con.setRequestProperty("Accept-Language", "ja");
            con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");

            // 出力ストリームを取得
            PrintWriter out = new PrintWriter(con.getOutputStream());

            out.print(".tries=1");
            out.print(".done=http://page7.auctions.yahoo.co.jp/jp/auction/g25311966?");
            out.print(".src=auc");
            out.print("lg=jp");
            out.print(".intl=jp");
            out.print("login=********");
            out.print("passwd=*******");
            out.close();


            // 入力ストリームを取得
            BufferedReader in = new BufferedReader(
                                                                new InputStreamReader(
                                                                con.getInputStream(),"JISAutoDetect"));

            // 一行ずつ読み込みます
            String line;
            while ((line = in.readLine()) != null) {
                // 表示します
                pw.println(line);


            }


            // 入力ストリームを閉じます
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

post.htmlにはログインされた後の商品ページが表示されます(ログインできれば)

No. 4040 # やまさん [E-mail] 2004/11/08 (月) 21:45:49
yahooオークションの自動ログインプログラムを開発していますが、どーしてもログイン
できません。どなたかご教授願います。以下にソースを掲載します。

import java.net.*;
import java.io.*;

public class post {
    public static void main(String[] args) {
        try {
            int start = 0;
            PrintWriter pw = new PrintWriter
                        (new BufferedWriter(new FileWriter("post.html")));

            // URLクラスのインスタンスを生成
            URL helloURL =
                        new URL("http://login.yahoo.co.jp/config/login");

            // 接続します
            URLConnection con = helloURL.openConnection();
            // 出力を行うように設定します

            con.setDoOutput(true);
            con.setDoInput(true);

            con.setRequestProperty("Cookie","B=banotfp0orfbj&b=2");

            con.setRequestProperty("Accept-Language", "ja");
            con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");

            // 出力ストリームを取得
            PrintWriter out = new PrintWriter(con.getOutputStream());

            out.print(".tries=1");
            out.print(".done=http://page7.auctions.yahoo.co.jp/jp/auction/g25311966?");
            out.print(".src=auc");
            out.print("lg=jp");
            out.print(".intl=jp");
            out.print("login=******");
            out.print("passwd=*****");
            out.close();


            // 入力ストリームを取得
            BufferedReader in = new BufferedReader(
                                                                new InputStreamReader(
                                                                con.getInputStream(),"JISAutoDetect"));

            // 一行ずつ読み込みます
            String line;
            while ((line = in.readLine()) != null) {
                // 表示します
                pw.println(line);
    

            }


            // 入力ストリームを閉じます
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

なお、post.htmlには正常にログインできれば商品ページのソースを書き込みます。

No. 4041 # waka 2004/11/09 (火) 01:01:14
はじめまして、こんばんは.

http://x68000.q-e-d.net/~68user/net/c-http-1.html
http://x68000.q-e-d.net/~68user/net/c-http-2.html 関連で、
URL の解釈について、
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/pbrowser.html
のような記事を見つけました.
正規表現でも見かけられるやりかたでできるのだなぁと目が覚めました.

質問でもなんでもないのですが、お邪魔しましたm(_ _)m

No. 4042 # 68user 2004/11/09 (火) 01:42:56
>>4040 やまさん
Java の実行環境がないので検証できませんが、普通にブラウザでアクセスし、
ethereal などでパケットダンプしましょう。さらに自作プログラムのやりとりも
同様にパケットダンプして見比べてみましょう。

>>4041 waka
http://www.din.or.jp/~ohzaki/perl.htm#httpURL というのもあります。

scanf 系で %[..] として文字集合が使えるのは初めて知りました。

No. 4043 # クライアント 2004/11/09 (火) 18:21:04
FTPクライアントで分割ダウンロードする場合、
どんなプログラムになるのでしょうか?
HTTPクライアントで分割アップロードする場合、
どんなプログラムになるのでしょうか?
教えて頂けませんか?

No. 4044 # 68user 2004/11/09 (火) 19:45:26
>>4043 クライアント
> FTPクライアントで分割ダウンロードする場合、
> どんなプログラムになるのでしょうか?
REST を使います。

> HTTPクライアントで分割アップロードする場合、
> どんなプログラムになるのでしょうか?
分割アップロードが PUT を指すのか POST を指すのか知りませんが、
規格としては分割アップロードなるものは規定されていないと思います。

サーバ側の CGI なり Servlet なりで引数を解釈するようなつくりに
すれば、なんだって可能です。

No. 4045 # やまさん [E-mail] 2004/11/09 (火) 20:34:29
68userさんご教授ありがとうございます。言われたとおりにパケットダンプしてソースを
書き直したところ、今度はcookieが無効であると言う画面がでました。
書き直したソースは以下の通りです。
import java.net.*;
import java.io.*;

public class post {
    public static void main(String[] args) {
        try {
            int start = 0;
            PrintWriter pw = new PrintWriter
                        (new BufferedWriter(new FileWriter("post.html")));

            // URLクラスのインスタンスを生成
            URL helloURL =
                        new URL("http://login.yahoo.co.jp/config/login");

            // 接続します
            URLConnection con = helloURL.openConnection();
            // 出力を行うように設定します


            con.setDoOutput(true);
            con.setDoInput(true);

            con.setRequestProperty("Accept","image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*");
            con.setRequestProperty("Accept-Language", "ja");
            con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            con.setRequestProperty("Accept-Encoding", "gzip, deflate");
            con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
            con.setRequestProperty("Host","login.yahoo.co.jp");
            con.setRequestProperty("Content-Length","145");
            con.setRequestProperty("Connection","Keep-Alive");
            con.setRequestProperty("Cache-Control","no-cache");






            // 出力ストリームを取得
            PrintWriter out = new PrintWriter(con.getOutputStream());

            out.print(".tries=1&.done=http%3A%2F%2Fpage7.auctions.yahoo.co.jp%2Fjp%2Fauction%2Fg25311966%3F&.src=auc&lg=jp&.intl=jp&login=formulaatsushi&passwd=formula3");

            out.close();



            // 入力ストリームを取得
            BufferedReader in = new BufferedReader(
                                                                new InputStreamReader(
                                                                con.getInputStream(),"JISAutoDetect"));

            // 一行ずつ読み込みます
            String line;
            while ((line = in.readLine()) != null) {
                // 表示します
                pw.println(line);


            }


            // 入力ストリームを閉じます
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
etherealのログ
POST /config/login HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: ja
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Host: login.yahoo.co.jp
Content-Length: 145
Connection: Keep-Alive
Cache-Control: no-cache

HTTP/1.1 302 Found
Date: Tue, 09 Nov 2004 10:41:26 GMT
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Location: http://login.yahoo.co.jp/config/verify?.done=http%3a//page7.auctions.yahoo.co.jp/jp/auction/g25311966%3f&.src=auc
Cache-Control: private
Pragma: no-cache
Expires: Thu, 05 Jan 1995 22:00:00 GMT
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=euc-jp
Set-Cookie: B=0jed4t90p17mm&b=2; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp
Set-Cookie: F=a=2AxMxi8sve2gE8jFN9rJ0gWrAAvZQREqLtzb2_UZvSzjM5JqtaIqse_xaCta&b=pEuj; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp
Set-Cookie: Y=v=1&n=2q7rnefmn4krh&l=5ehckb00jiki78/o&p=m2avvjp403000400&r=bk&lg=jp&intl=jp&np=1; path=/; domain=.yahoo.co.jp
Set-Cookie: T=z=W7JkBBWBfkBBIROI05ItUNi&a=YAE&sk=DAA.hvzZ6s/ztd&d=YQFZQUUBb2sBWlcwLQF0aXABYm4ySnNEAXp6AVc3SmtCQmdXQQ--; path=/; domain=.yahoo.co.jp

GET /config/verify?.done=http%3a//page7.auctions.yahoo.co.jp/jp/auction/g25311966%3f&.src=auc HTTP/1.1
User-Agent: Java1.4.0
Host: login.yahoo.co.jp
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

HTTP/1.1 200 OK
Date: Tue, 09 Nov 2004 10:41:26 GMT
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Refresh: 900; URL=http://www.yahoo.co.jp/
Cache-Control: private
Pragma: no-cache
Expires: Thu, 05 Jan 1995 22:00:00 GMT
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=euc-jp
Set-Cookie: B=c0ev5h10p17mm&b=2; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp


/config/verify?.done=http%3a//page7.auctions.yahoo.co.jp/jp/auction/g25311を
getする際にヘッダー情報が変わってしまいます。
どなたかご教授願います。

No. 4046 # 68user 2004/11/10 (水) 14:48:48
>>4045 やまさん
正解は ethereal が教えてくれているはずですので、こういう質問は回答
する側としては非常につまらないのです。だから、質問する側も、もう
ちょっと努力する姿勢を見せてください。

> 今度はcookieが無効であると言う画面がでました
などというわけのわからんことを言っていないで、

    「IE では〜というリクエストを送っているが、Java だと〜という
        リクエストを送信してしまう。IE と同じリクエストを送信するには
        どうしたらよいか」

くらいの質問にブレイクダウンしてください。リクエストとレスポンスを
見比べるだけの注意力があれば簡単なはずです。

あと、HTTP の基本的な知識があるのかないのかさっぱりわからないので、
    http://x68000.q-e-d.net/~68user/net/
        HTTP クライアントを作ってみよう(1)〜(4)
を読んだ上で、telnet を使って接続してみてください。それに成功してから
初めて Java で実現するにはどうすればいいか、という話になるわけです。

一応ヒントだけは出しておきます。
      - /config/verify に cookie なしでリクエストしているのは誰か? まだ
          提示していないソースがあるのか? URLConnection クラスが自動的に
          再接続しているのか?
      - URLConnection が自動的に再接続しているのであれば、
          HttpURLConnection クラスを使って setInstanceFollowRedirects
          メソッドで再接続を抑止し、自前で cookie 付きで再接続してみては。

No. 4047 # 68user 2004/11/10 (水) 14:52:48
>>4046 68user
> 一応ヒントだけは出しておきます。
試したわけではないので、ヒントが的確かどうかは知りません。念のため。

No. 4048 # 68user 2004/11/12 (金) 02:28:59
当分の間、本掲示板での UNIX・ネットワークに関する一般的な質問の受け付けを
中止します。理由は
      http://X68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?howtouse
さえ読まないマルチポスト馬鹿のせいで不愉快な思いをするのがアホらしくなった
からです。UNIX・ネットワークに関する一般的な質問がなされた場合、その書き込みを
削除することがあります。

今後は当ページのコンテンツに対するご意見・ご指摘のみ受け付けます。
あと、雑談も OK です。

これまで回答してくださった方々、まともな質問者の方々には深く感謝
いたします。ありがとうございました。

No. 4049 # has 2004/11/13 (土) 22:08:37
>>4048 68user
懇切丁寧な回答、いままでどうもお疲れ様でした。
なんだかんだ結局見てるだけで力になれず、すんません。

ところで、コンテンツに関するご意見・ご指摘は歓迎とのことですし、このまま
何もやりとりが亡くなるのも寂しいので、ちょっと一言。

「POP3クライアントを作ってみよう」で、APOPではサーバ側に生パスワードを
持っていないといけないという点でセキュリティ上イマイチである、と
書かれていますが、それではどんな方法だと納得できそうですか?
(crypt等したパスワードを使うというイメージ or もっとよい案?)

No. 4050 # 上田 2004/11/15 (月) 14:28:33
>>4038 68user
68userさんありがとうございます。返事が遅れてすみません。

実は『シグナルハンドラを戻すなどの対処』部分がよく分かりませんでした。
もしよろしければこの部分のコードを教えていただけないでしょうか?
本当は自分なりに勉強してこの部分のコードを書き、このサイトにアップしたいという気持ちはあるのですが、なにぶん初心者なもので。。。

実際のテストでうまくいっているということと、この例では子プロセスがSIGCHLDを受けることはないとのことですので、当面はとりあえず現在の位置で対応させていただきます。
もし『シグナルハンドラを戻すなどの対処』を私なりに見つけることができたら、本サイトで報告させていただきます。

上田

No. 4051 # 68user 2004/11/15 (月) 20:21:20
>>4049 has
その文章を書いたのは 5〜6年前なのでもう忘れてしまいましたが、
改めて考えてみました。

まず、
    - ファイルに生パスワードを保存しておくのはよいことではない
というのは納得していただけるかと思われます。

もちろん、デメリットを上回るメリットがあれば生パスワードを保存
してもよいのでしょうが、APOP については特にメリットらしきものは
見当たりません。

また、管理面からいっても、UNIX のシャドウパスワードと別管理でも
よい場合もあるでしょうし、別管理になっても構わない場合もあるでしょう。
しかし、APOP では別管理にせざるをえません (選択の余地がない)。

> それではどんな方法だと納得できそうですか?
APOP はサーバがクライアントにタイムスタンプを通知する際、サーバが
保持しているパスワードが
    - 生パスワード
    - パスワードの MD5 値
    - パスワードの SHA-* 値
のいずれであるかを通知する、というのがわたしの考えです。

そうすれば、クライアント側はそれに応じて入力されたパスワードをそのまま
送るか、MD5 値を送るかを決定できます。また、サーバ管理者の方針により、
生パスワードで管理することもできるし、シャドウパスワードと共用にする
こともできます。


なお、この部分はどうも叩かれ所のようで、この APOP 批判の文章を読んで
「こいつはわかってない」と評価している人を掲示板などで見かけます
(わたしは何がどうわかってないのかが理解できないので、何ともいえない
のですが)。

>>4050 上田
> 実は『シグナルハンドラを戻すなどの対処』部分がよく分かりませんでした。
> もしよろしければこの部分のコードを教えていただけないでしょうか?
$SIG{CHLD} = 'DEFAULT';
です。

No. 4052 # has 2004/11/16 (火) 23:49:40
>>4051 68user
> 管理面からいっても、UNIX のシャドウパスワードと別管理でも
> よい場合もあるでしょうし、別管理になっても構わない場合もあるでしょう。
> しかし、APOP では別管理にせざるをえません (選択の余地がない)。
そうですね。使う側がやりたいように出来るよう、自由度を持たせておくという
考え方のツールは多い気がしますし。

> サーバが保持しているパスワードが
> - 生パスワード
> - パスワードの MD5 値
> - パスワードの SHA-* 値
> のいずれであるかを通知する
同感です。

> なお、この部分はどうも叩かれ所のようで、この APOP 批判の文章を読んで
> 「こいつはわかってない」と評価している人を掲示板などで見かけます
そうなんですか。私にもよくわかっていないようなので誰かに教えて欲しいです。

RFC2195とかにはchallenge-response authentication protocolを使うと
サーバにパスワードを*平文で保存せずに済む*とあるようです。
ひょっとしてパスワードとは別の、もっと重要なことが理解できてない
ということなのかもしれないですね…。

No. 4053 # 68user 2004/11/17 (水) 14:33:25
>>4052 has
> RFC2195とかにはchallenge-response authentication protocolを使うと
> サーバにパスワードを*平文で保存せずに済む*とあるようです。
なるほど。

    http://www.lins.jp/~obata/imap/rfc/rfc2195ja.html
        鍵付き MD5 ダイジェストを利用し、サーバ上に平文で秘密鍵が保管
        される必要はないので、RFC 1734 で規定される POP3 の使用のための
        APOP より改善されたものからなるともいえる。

ということで、APOP はイマイチと自信を持っていえるようになりました。
該当ページもそのうち加筆・修正しておきます。

ところで RFC 2195 は IMAP と POP に CRAM を導入しよう、というものですが、
IMAP では CRAM-MD5 や CRAM-SHA に対応した実装がいろいろありますけど、
POP の方は普及してるんですかねぇ。

http://risky.cs.inf.shizuoka.ac.jp/~ynoguchi/index.php?POP%20(%20courier-pop%20)
には
      (courier-pop は) courier-imap と同様,CRAM-MD5, CRAM-SHA に対応可能
      だが,結局,そのプロトコルに対応するクライアントがない
とありますし。

No. 4054 # 68user 2004/11/17 (水) 20:04:11
>>4053 68user
更新しました。
    http://x68000.q-e-d.net/~68user/net/pop3-3.html

「シャドウパスワードと共通化できない」という批判は、CRAM-MD5 でも
共通化できないような気がしたので (crypt には salt があるけど、
CRAM-MD5 にはないし、CRAM-MD5 には ipad とか opad とかがあるけど、
crypt にはないから)、とりあえず削除してあります。

No. 4055 # やまさん 2004/11/18 (木) 22:50:36
>>4047 やまさん
68userさんお返事遅くなりました。四苦八苦しましたけど
ヒントいただいた通りプログラムを組みなおしたところ、
無事ログインできました。ありがとうございました。

No. 4056 # 68user 2004/11/20 (土) 04:12:12
なんとなくアンケートをとってみることにしました。
      http://X68000.q-e-d.net/~68user/tmp/questionnaire.cgi

No. 4057 # 68user 2004/11/24 (水) 00:24:59
「UNIX の部屋」を更新しました。
      http://X68000.q-e-d.net/~68user/unix/

No. 4058 # へにか [URL] 2004/11/24 (水) 07:42:01
http://x68000.q-e-d.net/~68user/unix/pickup?freebsd-update
注意点は以下の通り。とある文言の、
<li>freebsd-updateの<li>、
HTTP 経由でファイルを\取得するので、の\、
これらは、誤植でしょうか? でも、ソースを見ると<LI>と大文字で書かれてるし・・・

No. 4059 # 68user 2004/11/25 (木) 01:15:20
>>4058 へにか
ありがとうございます。修正しました。

誤植って言いはると void 氏みたいなので、タイプミスということでひとつ。

No. 4060 # へにか 2004/11/25 (木) 08:29:07
>>4059 68user
> 誤植って言いはると void 氏みたいなので、タイプミスということでひとつ。
了解しました。気になったので、検索かけたら・・・ 何て言っていいのやら。

No. 4061 # 68user 2004/11/28 (日) 04:14:13
日記。

    % mkdir dir
    % touch dir/file
    % chmod 400 dir
    % ls -l dir

としたとき、dir/file を stat(2) する権限がないわけなので、Permission
denied となる (Linux・Solaris では実際にそうなる)。
# http://x68000.q-e-d.net/~68user/unix/pickup?chmod

ところが FreeBSD では何も表示されず (エラーも出ず)、exit status も 0
で正常終了してしまっている。

これを調べようと、FreeBSD 5.2.1-RELEASE の ls ソースを見てみる。
# http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/ls/

ずっと ls ってのは opendir して readdir して stat するものだと信じていたが、
実際には
      fts(3) -- traverse a file hierarchy
      http://www.freebsd.org/cgi/man.cgi?query=fts&manpath=FreeBSD+5.3-RELEASE+and+Ports&format=html
を使っていて、上記のシステムコールは間接的にしか使用していなかった。

>>3773 68user
で買った本を読むと、しっかり書いてあった。
      この人の書く文章にはおもしろみのかけらもなく
なんて文句言う前に、ちゃんと目を通すべきということか (全然読んでなかった)。

fts(3) は 4.4BSD から実装され、GNU 方面では glibc2 で採用された。glibc の
マニュアルには
        BSD 4.4. fts ユーティリティは、将来の St -p1003.1-88 リビジョンに
        含まれると期待されている。
と威勢のいいことが書いてあるが、少なくとも Solaris9 には実装されていない。


はじめて fts(3) を使ってみる。以下のプログラムで、stat できない場合エラーと
判断できている。FreeBSD の ls にはそれっぽい箇所があるにはあるが、その処理が
うまく機能していないのか、あるいは謎の仕様なのか…。

-----
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fts.h>

main(){
        FTS *ftsp;
        char *path[2]={"dir", NULL};
        ftsp = fts_open(path, FTS_PHYSICAL | FTS_NOCHDIR, NULL);
        if ( ftsp == NULL ){
                perror("fts_open");
                exit(1);
        }
        FTSENT *ftsentp;
        while (1){
                ftsentp = fts_read(ftsp);
                if ( ftsentp == NULL ){
                        break;
                }

                struct stat *sp = ftsentp->fts_statp;

                printf("%c", sp->st_mode&S_IRUSR ? 'r' : '-');
                printf("%c", sp->st_mode&S_IWUSR ? 'w' : '-');
                printf("%c", sp->st_mode&S_IXUSR ? 'x' : '-');
                printf("%c", sp->st_mode&S_IRGRP ? 'r' : '-');
                printf("%c", sp->st_mode&S_IWGRP ? 'w' : '-');
                printf("%c", sp->st_mode&S_IXGRP ? 'x' : '-');
                printf("%c", sp->st_mode&S_IROTH ? 'r' : '-');
                printf("%c", sp->st_mode&S_IWOTH ? 'w' : '-');
                printf("%c", sp->st_mode&S_IXOTH ? 'x' : '-');
                printf(" %d %s\n", sp->st_mode, ftsentp->fts_path);

                if ( ftsentp->fts_info == FTS_NS ){
                        perror("stat failed");
                        exit(1);
                }
        }
        exit(0);
}
------

あと、
      http://www.freebsd.org/cgi/man.cgi
にて FreeBSD 5.3-RELEASE からは ports マニュアルも検索できるように
なっていることに気づいた。これは大変素晴らしい。

No. 4062 # 68user 2004/12/05 (日) 04:03:48
>>4056 68user
> なんとなくアンケートをとってみることにしました。
アンケートの受付を (11/27 の時点で) 終了しました。結果をお知らせします。

[質問]
68user's page で今後読みたいコンテンツがあれば選択してください (複数選択可)。

[選択肢]
1. UNIX コマンドのコンテンツ充実
2. UNIX howto (「〜するには?」集のようなもの)
3. UNIX インストール・サーバ構築
4. ネットワークプログラミングのコンテンツ充実
5. web と CGI についてのコンテンツ充実 (含 Java Servlet・EJB)
6. C 言語講座的なもの
7. 業務系システム構築講座 (設計・コーディング・DB)
8. プログラマや SE の仕事について思うことをつらつらと

[結果]
回答総数 67

1. 36(17%) ************************************
2. 42(20%) ******************************************
3. 27(13%) ***************************
4. 29(14%) *****************************
5. 13(06%) *************
6. 14(06%) **************
7. 18(08%) ******************
8. 25(12%) *************************

[感想]
1・2 が多いのは予想していましたが、5・6 が少ないのは予想外でした。

5 は書きかけのコンテンツのまま放置してあるので、その辺の情報を今ほしい
人はここにはいないってことでしょうか。6 は世の中は意外と保守的で、仕事で
いまだに C でごりごり書いている (書かされている) 人が多数いるに違いない
と予想したのですが、はずれたようで。

あと、7 より 8 の方が多いのもちょっと不思議です。


頂いたコメントについてですが、
> div 開始タグより div 終了タグが圧倒的に多い
とりあえず気づいたところは直しました。自分で確認して、あまりにも
閉じ側が多いので笑ってしまいました。

あと、
>>3951 ほんたか
> 1.「h 1文字左に移動」がリストからはみ出ています。
も直しました。

アンケート結果は今後の参考にさせていただきます。ありがとうございました。

No. 4063 # 68user 2004/12/06 (月) 02:27:19
「ネットワークプログラミングの基礎知識」に
      HTTP クライアントを作ってみよう(5) - 認証編 -
          http://X68000.q-e-d.net/~68user/net/http-auth-1.html
を追加しました。

No. 4064 # sqh00 [E-mail] 2004/12/19 (日) 13:12:22
こんにちは。 こちらのサイトに来るのは今日が初めてですが、内容が充実していて大変参考になるサイトですね。 今後も利用させて頂こうと思います。さっそくですが、xlibについて質問をさせてください。http://x68000.q-e-d.net/~68user/xprogram/xlib-1.html のxlib-1.c を
cc -o xlib-1 xlib-1.c -I /usr/X11R6/include -lX11 -L /usr/X11R6/li のように実行したら、何にも出て来なかった。私が使っているのは red hat linux 8.0です。宜しくお願いします。

No. 4065 # 68user 2004/12/20 (月) 00:08:34
>>4064 sqh00
カレントディレクトリに xlib-1 というバイナリが生成されているか、
あるいは何かしらのエラーメッセージが出力されていると思いますので
確認してみてください。

No. 4066 # sqh00 [E-mail] 2004/12/20 (月) 22:17:10
カレントディレクトリに xlib-1 というバイナリが生成されているが、実行できない。このように、実行したら、何にも出て来なかった。
  
      [root@dm1511 xlib]# xlib-1
        bash: xlib-1: command not found

No. 4067 # 68user 2004/12/20 (月) 22:35:27
>>4066 sqh00
カレントディレクトリにあるバイナリは
    % ./xlib-1
と実行してください (% はプロンプト)。

No. 4068 # sqh00 2004/12/22 (水) 14:30:39
実行ができました。ありがとうございます。

No. 4069 # 68user 2004/12/23 (木) 06:52:27
「ネットワークプログラミングの基礎知識」に
      HTTP クライアントを作ってみよう(6) - Digest 認証編 -
            http://X68000.q-e-d.net/~68user/net/http-auth-2.html
を追加しました。

ところで cnonce は選択平文攻撃への耐性を高める効果があるとかなんとか
知ったかぶって書いてしまいましたが、cnonce がないと具体的にどういう
攻撃ができるんでしょうかね。

差分解読法かなぁと思ったんですが、MD5 に差分解読法って有効なんでしょうか。
あるいは salt 的な意味合いがあるんでしょうか?

いまいちイメージがわかない。

No. 4070 # たなか 2004/12/28 (火) 00:04:48
「ネットワークプログラミングの基礎知識」で勉強させていただいています。
kqueue の説明をみて早速いぢってみました。
サンプルでは kqueue() の戻り値に対して、終了時の処理が何もされていません。
man で調べたたところ、kqueue() の戻り値はファイルデスクリプタと記されています。
init kq = kqueue();
close(kq);
としても、close の戻り値が -1 で閉じることができませんでした。
なので、
init kq = kqueue();
close(kq);
init kq = kqueue();
close(kq);
とすると、kq は 1 回目が 9、2 回目が 10 といったようにインクリメントされてしまいました。
fcntl で kq の情報を取得しようとしてもすべての戻り値は -1 でした。
なんとなく、ファイルデスクリプタとして扱えていないような気がします。
当方は Mac OS X 10.3.7(BSD 4.4 ベースの Darwin) です。
本当の BSD なら、close できるものなのでしょうか。
もし、kqueue の説明を追加する予定があるようでしたら、close または、それに代わる処理も追加してもらえると大変助かります。

No. 4071 # 68user 2004/12/30 (木) 03:31:09
>>4070 たなか
> 本当の BSD なら、close できるものなのでしょうか。
FreeBSD 5.2-RELEASE では close(2) できました。ちなみに
カーネルには queue 用を close するコードも含まれています。

詳しくないので事情はわかりませんが、Mac OS X (Darwin?) の
問題ではないかと思います。

> close または、それに代わる処理も追加してもらえると大変助かります。
echo サーバばかり作っていると終了処理がおろそかになっていけませんね。
「quit」を送ると終了するようにするなど、何かしら考えたいと思います。

No. 4072 # たなか 2004/12/30 (木) 09:44:40
>>4071 68user

どうもありがとうございます。

>> 本当の BSD なら、close できるものなのでしょうか。
> FreeBSD 5.2-RELEASE では close(2) できました。ちなみに
> カーネルには queue 用を close するコードも含まれています。

手元に BSD が動作するマシンがないので、実験できませんでした。
Darwin の問題ですね。Apple に連絡してみます。
下のコードを実行すると次のような結果となります。

kqueue : 3
close(3) : -1
close: Bad file descriptor
kqueue : 4
close(4) : -1
close: Bad file descriptor

------------------------------------------------
#include <stdio.h>

#include <sys/types.h>
#include <sys/event.h>
#include <sys/time.h>

#include <unistd.h>

int
main() {

        int kq;
        int ret;

        kq = kqueue();
        printf("kqueue : %d?n", kq);
        if (kq == -1) {
                perror("kqueue");
        } else {
                ret = close(kq);
                printf("close(%d) : %d?n", kq, ret);
                if (ret == -1) {
                        perror("close");
                }
        }

        kq = kqueue();
        printf("kqueue : %d?n", kq);
        if (kq == -1) {
                perror("kqueue");
        } else {
                ret = close(kq);
                printf("close(%d) : %d?n", kq, ret);
                if (ret == -1) {
                        perror("close");
                }
        }

        return 0;
}
------------------------------------------------

No. 4073 # さいさん 2004/12/30 (木) 18:01:49
サーバがHP-UX11.00で、Bシェルでシェルを書いています。
シェル中で、「ls *.txt」を実行しています。

"*.txt"が存在しない場合、エラーが出力されるので、
「ls *t.xt > /dev/null 2>&1」で、エラーを出さないよう
にしました。

そこで、lsの処理に"grep -v"を追加し、"*.txt"がない
状態にすると「*.txt がみつかりません。」がでます。

ls *t.xt | grep -v "kekka" > /dev/null 2>&1

エラーがでないようにするにはどうしたらよいのですか。

No. 4074 # zsh 2004/12/31 (金) 18:57:02
ここで質問する人のブラウザには、
「UNIX・ネットワークに関する一般的な質問は受け付けていません。」
という一文は映らないのだろうか?

>>4073 さいさん
最終的にどうしたいのか良く判らないが、取りあえずはこれで。
ls *txt 2>/dev/null | grep -v "kekka"

No. 4075 # さいさん 2005/01/01 (土) 16:34:07
>>4074 zsh

ありがとうございます。

実際にしたいことは、
シェルを実行した際、「*.txt がみつかりません。」を
標準出力したくないのと、戻り値の判定をしたいのです。

ls *.ldif | grep -v "kekka" > /dev/null 2>&1
if [ $? -ne 0 ] ; then
        echo "Text File Nothing Today"
        exit 0
fi

No. 4076 # さいさん 2005/01/01 (土) 16:36:28
>>4075 さいさん

すみません。
間違いがありました。


実際にしたいことは、
シェルを実行した際、「*.txt がみつかりません。」を
標準出力したくないのと、戻り値の判定をしたいのです。

ls *.txt | grep -v "kekka" > /dev/null 2>&1
if [ $? -ne 0 ] ; then
                echo "Text File Nothing Today"
                exit 0
fi

No. 4077 # zsh 2005/01/03 (月) 00:17:18
>>4076 さいさん
結果的にファイルの有無を確認したいんですよね?
だとすれば、戻り値のチェックよりも下記のようにしては如何でしょうか?

set -- `ls *txt 2>/dev/null | grep -v "kekka"`
if [ $# -eq 0 ] ; then
        echo "no file."
fi

※:シェルに引数を与えている場合等は考慮が必要です。

No. 4078 # さいさん 2005/01/04 (火) 15:57:43
>>4077 zsh

ありがとうございます。

set -- `ls *txt 2>/dev/null | grep -v "kekka"`

「set -- `ls 」
の使い方教えてください。
どのような意味なのですか

No. 4079 # zsh 2005/01/05 (水) 10:38:55
set --
で引数(定位置パラメタだっけ?)を書き換えることが出来ます。

今回の場合は、
ls *txt 2>/dev/null | grep -v "kekka"
の出力で置き換える事になりますので、
$#で上記コマンドの結果出力されたファイル数を参照できます。

No. 4080 # さいさん 2005/01/09 (日) 14:24:11
>>4079 zsh

お礼遅くなって申し訳ありません。
ありがとうございます。

>set --
>で引数(定位置パラメタだっけ?)を書き換えることが出来ます。

参考本とかで調べてます。

No. 4081 # しょしん [E-mail] 2005/01/21 (金) 14:40:41
ご存知の方おられましたら、ご教授ください。
環境OSは、Win2000です。
OpenSSLライブラリを利用したDER形式の鍵ファイルの読み書き方法を実装方法が
わかりません。i2d_RSAPrivateKey、d2i_RSAPrivateKeyを利用し、ファイル出力
をしてみましたが、_fp付きはエラーです。(_bio付きはOK)
また、ここで出力された鍵ファイルは、OpenSSLでは、暗号/復号可能です。
しかし、他社製品(RSA BSAFE)では、鍵ファイル読み込みエラーとなります。
rsaコマンド等で変換作業を行うと読み込み可能となり、暗号・復号ができます。
なんだか理解できません。
以上、宜しくお願い致します。

No. 4082 # 68user 2005/01/21 (金) 15:17:49
>>4081 しょしん
暗号に関する一般的な質問も受け付けていません。

    ■暗号技術【ROUND2】■
    http://pc5.2ch.net/test/read.cgi/tech/1088530204/l50

などで質問してください。

- OpenSSL のバージョンくらい書きましょう。
- 何を知りたいのか不明。_bio 付きで出力して、rsa コマンド等で
    変換して、RSA BSAFE で読み込めているんなら別にいいのでは。
    例えば「rsa コマンドに頼りたくない」「なぜ rsa コマンドを
    使わなければいけないのかわからないので、解説してほしい」
    などと書くべき。
- 単に _fp 付きはエラーと言われても、「コーディングミスでは?」
    くらいしか返す言葉はありません。つーか、ソースくらい提示しましょう。

No. 4083 # >>4082 2005/01/21 (金) 16:20:40
内容不備&質問場所違いでした。
大変失礼しました。
撤収します。

No. 4084 # yoshiki 2005/01/25 (火) 09:47:00
CGIでmkdirとかmountとかを呼び出す方法をご教授願います。
サーバー上でプログラムを実行させたいのですが、動作しませんでした。

C言語にてCGIプログラムを作っています。
execveを使用してもうまく動作しませんでした。


------- test.c (test.cgi) -----------------------
#include <stdio.h>

int main()
{
    char *argv[3];
    argv[0]="/bin/mkdir";
    argv[1]="test";
    argv[2]=NULL;

    int pid=fork();
    if(pid==0){
        execve(argv[0],argv,NULL);
        perror("execve");
        exit(0);
    }
    return 0;
}

No. 4085 # yoshiki 2005/01/25 (火) 09:48:43
↓↓
#include <unistd.h>

が抜けていました。
よろしくお願いします。

No. 4086 # たらい 2005/01/26 (水) 18:10:01
はじめまして。
いつも「UNIXの部屋」を利用させていただいています。

awkコマンドのところですが、誤字がありましたのでお知らせさせていただきました。
****************************************************************
特殊なパターンとして BEGIN と END がある。BEGIN は最初に実行され、END は最後に実行される。
% ls -l | awl 'BEGIN { print "START!"} {total+=$5; print $9} END {print "size total="total} '
****************************************************************
1つ目のパイプの後の「awk」が「awl」になっています。

「awkのエイリアスです。」なんていわれたら、どうしようもありませんが…。

取り急ぎ、ご連絡までに…

No. 4087 # 68user 2005/01/26 (水) 19:11:43
>>4086 たらい
修正いたしました。ご指摘ありがとうございました。
    http://X68000.q-e-d.net/~68user/unix/pickup?awk

No. 4088 # tansy [URL] 2005/01/27 (木) 04:45:52
ライセンスについて質問です。
このサイトにあるコードはフリーソフトウェアと考えてよいでしょうか。
チュートリアルサイトなのでコードを自由に利用してよいだろうとは思ったのですが、
念のため確認させてください。

具体的にはecho-server-select.cを参考にしながらプログラムを書いたのですが、
将来それをフリーソフトウェアとして配布したいと考えています。
問題ないですよね?
問題あるなら空で書けるように修行してやり直すことになるのですが…。

ちなみに作っているものはこれ
  http://humming.dip.jp/bardic/
でネットゲームのようなものです。

よろしくお願いします。

No. 4089 # 68user 2005/01/27 (木) 13:10:16
>>4088 tansy
> 将来それをフリーソフトウェアとして配布したいと考えています。
> 問題ないですよね?
はい、問題ありません。ただしエラーチェックが甘めなので、それを踏まえた上で
お使いください。


ついでなのでライセンスを明確にしたいと思います。

わたしが書いたプログラムは、特に明記していない場合は修正 BSD ライセンスと
します (現時点で修正 BSD ライセンス以外のライセンスを適用しているプログラム
はありません)。

わたしが書いた文章は、フリーではありません。ただし (言うまでもありませんが)
著作権法における引用は可です。

No. 4090 # tansy [URL] 2005/01/27 (木) 15:53:06
>>4089 68user
修正BSDライセンスであること了解しました。
> ただしエラーチェックが甘めなので、それを踏まえた上でお使いください。
了解です。

ありがとうございました。

No. 4091 # 亜紀 2005/02/06 (日) 14:14:32
はじめまして。今卒業研究に必死に取り組んでいるんですけども、
ソケットプログラミングがよく分かりません・・・

sendやrecvなどを使って、更新されていくデータを一定時間
ずーっと送信、もしくは受信ってできますか?

研究室も誰もいないし、聞けるのはみなさんしかいません。うう。
どうかお願いします。

PS.焦っているので、他の掲示板などでも同様の書き込みをするかもしれません。
      ここが最初ですが、もし他の掲示板から何かいいアドバイスをいただけましたら、
      すぐに反映させていきたいと思います。よろしくお願いします。

No. 4092 # のぷお 2005/02/07 (月) 22:55:00
亜紀さん

質問の内容が漠然としているので、ちょっと答えずらいのですが。。。
一定時間ずっと、送信もしくは受信することはできますよ。
まあ、ソケットはありふれたものなので、インターネット上を検索すれば、
ソースコードの例は簡単に見つかると思いますよ。
ソケット、socket、ソースなどのキーワードで検索すれば簡単に見つかるかも。

焦る気持ちはわかりますが、同じ質問を複数の掲示板に書き込む行為は良く
ないので、やめたほうがいいですね。

では。

No. 4093 # tanaka 2005/02/15 (火) 16:44:32
JAVA から cシェルを実行したいのですが どのように記述すればよいのでしょうか。

Runtime rt = Runtime.getRuntime();
String[] command = {"/root/scripts/t.csh"} ;
Process process = rt.exec(command);

と記述しておりますが、実行できず困っています。

No. 4094 # とも 2005/02/16 (水) 03:03:50
UNIXのシェルスクリプトについて教えて下さい。
OSは、HP-UX11.00です。

ファイル中に存在するある文字列をsedを使用して置換して
いるのですが、sedで置換を行うとき条件を指定して実行する
ことはできるのでしょうか。

id: u=aaaa.bbbb,o=co.jp,o=1234,code=vip
aaaaaa,bbbb,code=vip,code=ip
bbbbb,bbbb
id: u=aaaa.bbbb,o=co.jp,o=1234,code=vip
aaaaaa,bbbb,code=vip,code=ip
bbbbb,bbbb
id: u=aaaa.bbbb,o=co.jp,o=1234,code=vip
aaaaaa,bbbb,code=vip,code=ip
bbbbb,bbbb
id: u=aaaa.bbbb,o=co.jp,o=1234,code=vip

sed 's/code=vip$/code=normal/g' ファイル名
とすると「code=vip」がある行に対して置換が行われます。

先頭が、"id: "から始まる行のみ「code=vip」を「code=normal」に
置換したいのですが、sed1回で可能でしょうか。
それとも、作り込みが必要でしょうか。

No. 4095 # ばんじょう 2005/02/17 (木) 18:20:35
Solaris8のcshについて教えて下さい。

nawkを使用しているのですが、1行での表記が長いので手頃なところで改行
して見易いように複数行にしたいのですが、その場合、これは、1行の処理
ですと認識させたいのですが、どのようにすればよいのですか。

¥、&、$とかつけてみたのですが、「Unmatched '」がでてしまいます。
お願いします。

#!/usr/bin/csh
#

set sys_no = "99"

set aaa=`nawk -v NO=$sys_no -F":" '/^[ \t]*#START/,/^[ \t]*#END/ \
            { if (substr($1,1,1) != "#" && substr($1,1,2) == NO) print $2 }' list.txt`

echo $aaa

No. 4096 # zsh 2005/02/17 (木) 19:00:58
>>4094 とも
sed -e 's/^\(id.*code=\)vip/\1nomal/' file
とか
sed -e '/^id/ { s/code=vip$/code=normal/
}' file
あたりでできます。

>>4095 ばんじょう
「\\」でいけたと思います。
・・・正直cshはやめた方が良いと思いますが・・・

No. 4097 # ばんじょう 2005/02/17 (木) 22:24:13
>4096

>「\\」でいけたと思います。
でやってみましたが無理でした。
動きはしましたが、nawk内の条件が無視され全て取り出されました。
ふと、もう1個ふやしたらどうなるのだろうと、「\\\」でやって
みたところ上手くいきました。いった模様です。
しかし、変ですね。怖い環境、怖いcshだと。

>・・・正直cshはやめた方が良いと思いますが・・・
ということは、shとかbashですか。
Solarisは、bashが多いですが・

No. 4098 # とも 2005/02/17 (木) 22:39:34
>>4096 zsh

>sed -e 's/^\(id.*code=\)vip/\1nomal/' file
では、上手く行きました。

>sed -e '/^id/ { s/code=vip$/code=normal/ }' file
では、
sed: 関数 /^id:/ { s/code=vip$/code=normal/ } はパースできません。
となりました。

No. 4099 # やまげん 2005/02/17 (木) 22:47:30
>> 4096


参考に、sedで使用している
「's/^\(id.*code=\)vip/\1nomal/' 」
「'/^id/ { s/code=vip$/code=normal/ }' 」
の使い方について教えて下さい。

No. 4100 # zsh 2005/02/18 (金) 16:09:22
>>4098 とも
}の前に改行を入れないと動作しません。
(実装しているsedの違いかもしれませんが。)

>>4099 やまげん
説明下手なので、この辺を参考にしてください。
ttp://pegasus.rutgers.edu/~elflord/unix/sed.html

No. 4101 # やまげん 2005/02/19 (土) 15:01:47
>>4100 zsh

>説明下手なので、この辺を参考にしてください。
>ttp://pegasus.rutgers.edu/~elflord/unix/sed.html
英語なんですね。

No. 4102 # zsh 2005/02/21 (月) 09:40:16
>>4101 やまげん
それじゃあ簡単に。

"\("と"\)"で囲まれた部分にマッチした文字列は、
変数に格納され、順番に\1,\2で取り出す事が可能です。

/Pattern/ {
  command
}
でPatternに一致した行に対してcommandを実行します。

こんな感じですかね。
正直、自分の解釈が間違っている可能性があるので、
あまり人に教えることはしないのですが。。。

No. 4103 # 高嶋屋 2005/02/21 (月) 11:03:35
はじめまして、高島屋です。
solarisでC言語にてアプリケーションを作成する際の、1プロセスが可能なファイルオープンのMAX値について教えていただけないでしょうか?
実際にopen可能な、、と言う意味ではなく、「メーカで保障されている」MAX値を調査しています。
利用しているコンパイラは「SunOneStudio8」。
まず、当方で調査した結果を報告致します。

・ANSI規格の規格では8以上とされている。(「新ANSIC言語辞典」技術評論社→コンパイラに対して8以上を保障しなさいと言う意味だと思います)
    ただし、/usr/include/isostdio_iso.hでは、FOPEN_MAX=20と設定されている。(CPU=SPARK)
・solris
limit,sysdefコマンドで確認した所、
limitコマンドでのファイル記述子の最大数は256。
sysdefコマンドのfile descriptorsに関する、"process Resource Limit"の値も共に256。
実際に1プロセスで256ファイル以上をオープンすると、それ以降のファイルオープンが失敗しました。

・その他 システム全体で同時open可能なファイルの最大数があるのかは不明(調査不足)
なお、sysdefコマンドで確認した所、maximum number of process = 30000
maximum processes per user id = 29995の制限値が設定されていました。

ただ、上記はあくまで、実際に設定されている値で、それぞれのメーカーが保障している値ではありません。
SunOneのマニュアルからも最大値の記述は読み取れませんでした。(調査不足?)

Q1.FOPEN_MAXの20と言うのは何に利用されているかご存知ですか?CPUにより異なる様なのですが。。
プロセスを最大数立ち上げた際にオープン出来るファイルの最大数と言う事なのしょうか?


Q2.コンパイラごとに異なるものなのでしょうか?OSやCで決まるものなのでしょうか?
何を基準に(c?solaris?コンパイラ?)マックス値を調査すればよいのでしょう?

Q3.漠然とした質問で申し訳無いのですが、上記の様なファイルオープン数のメーカーからの保障について、どなたかご存知ですか?
    
以上、拙文で申し訳ないのですが、ご存知の方ご教授下さい。

No. 4104 # 68user 2005/02/21 (月) 23:44:19
質問は受け付けないって書いてあるのに、変わった人たちですね。
まぁいいですけど。

> Q1.FOPEN_MAXの20と言うのは何に利用されているかご存知ですか?
Solaris8 の stdio(3) には以下のように記述されています。
      The integer constant FOPEN_MAX specifies the minimum number
      of files that the implementation guarantees can be open
      simultaneously.

JIS X 3010 (C99 相当) には以下のように記述されています。
      FOPEN_MAX は、同時にオープンできることを処理系が保証するファイル
      数の最小値をあらわす整数定数式に展開する。

なお、FOPEN_MAX は最大値ではなく最小値です。「少なくともこれだけは
オープンできる」という値です。


FOPEN_MAX が具体的にどう使われているか、という話であれば、処理系
依存です。たとえば FreeBSD であれば libc において
      static FILE usual[FOPEN_MAX - 3];
などと使われており、リソースを確保しなおすことなくオープンできる
ファイル数が FOPEN_MAX である、という形になっているようです。

Linux などで使われている glibc においては FOPEN_MAX を一切使用して
おらず、意味のない値になっています。Solaris はソースを持ってないので
知りません。

> Q2.コンパイラごとに異なるものなのでしょうか?OSやCで決まる
> ものなのでしょうか?
何がですか? FOPEN_MAX が?

> Q3.漠然とした質問で申し訳無いのですが、上記の様なファイルオープン数の
> メーカーからの保障について、どなたかご存知ですか?
「保証する値」にこだわるのであれば、メーカーに問い合わせるのが
一番かと思います。

No. 4105 # tkb 2005/02/23 (水) 10:30:53
http://x68000.q-e-d.net/~68user/net/http-auth-2.html
にある「クライアント対応状況」ですが、apache本体(2.0.51以降)に
パッチが取り込まれています。

http://httpd.apache.org/docs-2.0/mod/mod_auth_digest.html#msie

ご参考まで。

いつも勉強させてもらってます。
これからもすばらしいコンテンツ期待しています。

No. 4106 # さいさん 2005/02/23 (水) 22:51:54
Solaris8のshについて教えて下さい。

shでシェルを書いています。
もともとは、HP-UX11.00で動かしていたのをSoralisに移しました。

位置パラメータを使ってlsの結果(個数)を取得し、ファイルが存在
しているか、存在しないかのチェックをしています。
ファイルが存在しないときは、不要なメッセージを出力しないように
もしています。
その際、ファイルが存在しなった場合、0件として終了してくれません。
位置パラメータの個数が"1"で取得されます。
引数で、チェックするディレクトリを判断するためのパラメータを渡して
いるのですが、どうやらこの引数や値が引き継がれているみたです。
上手く処理するにはどうしたらよいのですか。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
#!/bin/sh
#

PATH=${PATH}:/usr/bin:/etc:/usr/ccs/bin:/usr/local/bin:.; export PATH
TZ=JST-9; export TZ

if [ $# -lt 1 ] ; then
        echo "Parameter Error"
        echo "$0 Processing MODE [R:real/B:batch]"
        exit 1
fi

mode=$1

if [ ${mode} = "R" ] ; then
        DIR="/tmp/real"
elif [ ${mode} = "B" ] ; then
        DIR="/tmp/batch"
else
        echo "Processing MODE Error"
        echo "Processing MODE = [R:rela/B:batch]"
        exit 1
fi

cd ${LDIF_DIR}

set -- `ls *.txt 2>/dev/null | grep -v "_kekka_"`
if [ $# -eq 0 ] ; then
        echo "Ldif File Nothing Today"
        exit 1
fi
echo $*
cnt=$#
echo ${cnt}

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

No. 4107 # 68user 2005/02/23 (水) 23:17:10
>>4105 tkb
> 「クライアント対応状況」ですが、apache本体(2.0.51以降)に
> パッチが取り込まれています。
これは知りませんでした。早速追記しました。
      http://x68000.q-e-d.net/~68user/net/http-auth-2.html

ご教示ありがとうございました。

No. 4108 # zsh 2005/02/25 (金) 11:06:34
>>4106 さいさん
> 引数で、チェックするディレクトリを判断するためのパラメータを渡して
> いるのですが、どうやらこの引数や値が引き継がれているみたです。
位置パラメタは「set --」でクリアできますが、本当に引数を引き継いでいますか?
(「echo $*」部分で引数が出力されてますか?)

No. 4109 # さいさん 2005/02/25 (金) 12:54:44
>>4108 zsh

>(「echo $*」部分で引数が出力されてますか?)
起動時に渡した、RまたはBが表示されます。
「echo #?」も1と表示されます。

No. 4110 # 68user 2005/02/28 (月) 01:36:04
「UNIX の部屋」を更新しました。
    http://X68000.q-e-d.net/~68user/unix/

No. 4111 # んー 2005/02/28 (月) 23:55:22
>> 4109
#!/bin/sh -> #!/bin/ksh

man sh
man ksh

No. 4112 # zsh 2005/03/01 (火) 13:02:26
>>4112 zsh
Solaris8入ってるマシン3台くらいで確認したんですけど
shでも通常はそんな動作にはならないんですよ。
一度
set --
でリセットした方が確実かなと思います。

No. 4113 # zsh 2005/03/01 (火) 13:03:24
×
>>4112 zsh


>>4111 んー

失礼しました。

No. 4114 # 野暮天 2005/03/03 (木) 19:58:03
Tee の説明文中
find . -name a\* だと a から始まるファイル名が返って来ますよね.

No. 4115 # さいさん 2005/03/03 (木) 22:28:31
>>4112 zsh

>一度
>set --
>でリセットした方が確実かなと思います。

とやってみたんですが、かわりなしです。

No. 4116 # 68user 2005/03/03 (木) 22:34:21
>>4114 野暮天
ご指摘ありがとうございます。修正しました。
http://X68000.q-e-d.net/~68user/unix/pickup?Tee

No. 4117 # zsh 2005/03/05 (土) 10:55:05
>>4115 さいさん
じゃあshiftで一つずらしてください。

No. 4118 # ヘルプ 2005/03/05 (土) 12:21:11
質問はダメみたいですが、どうしてもできないので、誰か教えてください。。
http://x68000.q-e-d.net/~68user/net/pop3-1.html
を実際にやってみたんですが、
POP3サーバ名、ポート番号で、接続できました。
そして、USERも接続できたんですが、PASSだけが接続できません。
ちゃんと手順通り(パスは合ってる)にやっているんですが、、なぜでしょうか?
誰か教えてください。POP3サーバー名は、pop.mail.yahoo.co.jpです。
エラー内容は、-ERR invalid user/password
もう1個えらー内容がでました。
-ERR command valid only in authorization state.

No. 4119 # T.Kobayashi 2005/03/06 (日) 05:52:24
>>4118 ヘルプ
私は Yahoo! のメイルアカウントを持ってないので何ともですが、
http://help.yahoo.co.jp/help/jp/mail/pop/pop-03.html
を参考にしてありがちなミスを考えると、USER 名が小文字になってないとか。

No. 4120 # 68user 2005/03/07 (月) 00:36:25
ネットワークプログラミングの基礎知識
      http://X68000.q-e-d.net/~68user/net/

    Java で HTTP クライアントを作ってみよう (1)
        http://X68000.q-e-d.net/~68user/net/java-http-socket-1.html
    Java で HTTP クライアントを作ってみよう (2)
        http://X68000.q-e-d.net/~68user/net/java-http-url-connection-1.html
    Java で HTTP クライアントを作ってみよう (3)
        http://X68000.q-e-d.net/~68user/net/java-http-url-connection-2.html
を追加しました。

No. 4121 # さいさん 2005/03/08 (火) 00:55:35
>>4117 zsh
原因わからずです。
バグということはないですかね。

>じゃあshiftで一つずらしてください。
shiftとって使ったことないのですが、
ループと合わせてつかうものなのですか。
終わりとかどう判断するのですか。
使い方教えてください。

No. 4122 # たか 2005/03/08 (火) 01:00:53
Solari8iについて教えて下さい。

UNIXにログインする時、共通のデフォルトの初期化ファイルと
ユーザのホームディレクトリにある初期化ファイルが読み込まれ
ますが、共通のデフォルトのファイルはどこにあるのですか。
sttyの設定を変更したいのですが、分からずに困ってます。

syslogのファイルはどこに存在するのですか。
HP-UXでいるsyslogというファイルは存在しないのでしょうか。
messageというそれらしいファイルが存在するのですが、これが
syslogなのでしょうか。
Solarisでいうsyslogとはどこを含めているのでしょうか。

No. 4123 # おいどん 2005/03/08 (火) 19:21:18
>>4121 さいさん

num=`ls *.txt 2>/dev/null | grep -v "_kekka_" | wc -l`
でファイル数を取得では。

No. 4124 # zsh 2005/03/09 (水) 09:59:13
皆さんmanコマンドって使わないんですかね・・・

>>4122 たか
Solari8iって一体・・・

Bシェル・・・/etc/profile
Cシェル・・・/etc/.login
man shとかで出てきます。

>>4121 さいさん
例えば、位置パラメタが
$1=a, $2=b, $3=c
の時にshiftを実行すると
$1=b, $2=c
と一つずつずれます。
$#の値も一つ減るので、対処できるかなと。
取りあえず、man shift

No. 4125 # 68user 2005/03/22 (火) 00:58:41
ネットワークプログラミングの基礎知識 に
    SSL/TLS の導入 (1)〜(4)
        http://x68000.q-e-d.net/~68user/net/ssl-setup-1.html
        http://x68000.q-e-d.net/~68user/net/ssl-setup-2.html
        http://x68000.q-e-d.net/~68user/net/ssl-setup-3.html
        http://x68000.q-e-d.net/~68user/net/ssl-setup-4.html
を追加しました。

No. 4126 # 68user 2005/03/27 (日) 07:44:15
libevent http://www.monkey.org/~provos/libevent/ について
調べているんですが、いまいちわかりません。

マルチスレッドの echo サーバのサンプルプログラム
    http://x68000.q-e-d.net/~68user/tmp/libevent-sample.c
を作ったのですが、1つ目のクライアントからの接続は正常に処理できる
ものの、さらに 2つ目のクライアントが接続すると sockread_callback 内の
    if ( fd == listening_socket ){
が真にならず、accept できません。

1つ目のクライアントが接続してきたときに sockread_callback 内で
行っている event_add・ev_set のやり方がまずいんだろうと思うん
ですが、どこが間違っているんでしょうか。

No. 4127 # 68user 2005/03/27 (日) 23:13:38
そういえばこの掲示板で質問を受け付けていないことを忘れて
いました。管理人が自分でルールを破るのはよくないので、
>>4126 68user
は無視してください。

No. 4128 # panzer979 2005/04/07 (木) 11:03:56
社会暦1ヶ月のものです。LINUX関連仕事をやってます。
偶然、このサイトを見つけていろいろ助かりました。
ありがとうございます。
これからもよろしくお願いします。

No. 4129 # バル 2005/04/11 (月) 18:51:04
すいません、場違いだとは思うのですが、GlancePlusについて、
御存知の方がいらっしゃいましたら教えていただけないでしょうか?

現在業務上でGlancePlusをつかっての性能測定をしているのですが、
この結果を『-p』オプションでファイルに出力していると、
「Maximum of 200 pages of output reached, printing disabled」
と出てきて、200回目の出力でストップしてしまいます。

MAX200の出力が、GlancePlusの仕様という事ならあきらめるのですが、
設定ファイルor設定方法等があるのでは?と思っています。

どなたか教えて下さい。
よろしくお願い致します。

No. 4130 # よっちゃん [E-mail] 2005/04/22 (金) 20:49:01
いつのまにか私が使っているAIXでログイン後共通ディスク端末エミュレータを選ぶと
「アクション "Dtterm" が見つかりません」で端末エミュレータが開けなくなり、
ログアウトしようとすると「アクション "ExitSession" が見つかりません」でログアウト
できなくなっていました。いつもはTelnetで処理をしていてLogin,Exit等を行っても
なんの問題もありません。原因を考えるのですが心当たりないので困っています。
気がかりなのは/varの使用率が100%になっているくらいですが以前はそれでもちゃんと
動いていました。対策方法をご存知のかたはご伝授ください。

No. 4131 # んー 2005/04/23 (土) 23:04:22
>>4130 よっちゃん
「AIXでログイン後」とはCDEログイン(?)
と仮定して...

> /varの使用率が100%
ネタですか?

CDEは/var/dt以下を使用します。
まず/varのディスクスペースを確保しなきゃです。
※そのまま放置するとCDEからのloginそのものが出来なくなります。

No. 4132 # SUNNY 2005/04/25 (月) 20:20:06
WAS上のアプリケーションから起動された
unixコマンドをkillしたいのですが、
1発でできる方法はないでしょうか?

分けると、
”ps -eaf | grep java”

1:root 323700 1 0 14:41:32 pts/2 4:37 /XXXX/XXXX/XXX
を取得して、
”ps -ef | grep vmstat”

1:root 430138 442550 1 20:19:55 pts/2 0:00 grep vmstat
2:root 524402 323700 0 19:31:41 pts/2 0:00 /bin/vmstat 1
↑と取得できた場合に、親のPIDに323700を持っているコマンド
(2行目)をkillする、ということをやりたいのですが・・・。
やっぱり分けないと無理でしょうか?

No. 4133 # 2005/04/25 (月) 22:34:50
Solaris8なのですが、Bシェルでnawkを使用して処理を
しています。
nawk内で関数を呼び出して処理をしているのですが、
その際、最終レコードかをNFで判断しているのですが、
上手く、判断してくれずに無限ループになってしまい
ます。

#/bin/sh

for FILE in `ls *.txt"`
do
    nawk -F" " '
    BEGIN {
        count = 0+0 ;
    }
    function sub() {
        while (NF>0) {
            if ($1 == "") {
                    処理
            } else {
                    処理
            }
            getline ;
        }
        return 0;
    }
    {
        if (NF == 0) next ;
        ret=sub() ;
    }
    END {
            printf("%d\n",ret) ;
    }' ${FILE}
done

No. 4134 # zsh 2005/04/27 (水) 16:23:53
>>4133
NFはフィールド数が格納されるのであって
最終レコードかどうかを確認する事はできないと思いますが。。。
こういうことがしたいのですか?

------
while ( getline ) {
    ...
}

No. 4135 # kevin 2005/04/28 (木) 15:14:29
お世話になっております。初心者で大変申し訳ございませんが、
教えていただけますでしょうか?

以下の https-client-2 で、ライン:362 SSL_get_verify_resultで
エラーと扱われてしまいます。対象となる rootCA 証明書をどのように
反映すれば宜しいのでしょうか?

http://x68000.q-e-d.net/~68user/net/ssl-2.html

申し訳ございませんが宜しくお願い致します。

No. 4136 # kevin 2005/04/28 (木) 15:37:44
>No. 4135
に追加で、中間認証局の証明書はどのように設定するのでしょうか?
または、必要ないのでしょうか?

度々申し訳ございませんが宜しくお願い致します。

No. 4137 # 68user 2005/05/01 (日) 20:52:50
>>4135 kevin
そのページは書きかけでわかりづらいため、それについてのみ説明します。

> 対象となる rootCA 証明書をどのように反映すれば宜しいのでしょうか?
ページ最下部に記述してあります。

なお、https://www.rsasecurity.com/ は成功しますが、
https://www2.ggn.net/cgi-bin/ssl は期限切れのため必ずエラーと
なります。

その他については SSL/TLS の一般的なことがらなので回答しません。
OpenSSL の本を買うとよいでしょう。

No. 4138 # たなか 2005/05/05 (木) 13:52:22
>>4070 たなか
>>4071 68user
>>4072 たなか

ご無沙汰しております。
Apple に連絡後、返事はもらえませんでしたが、進展がありましたのでご報告いたします。
Mac OS 10.4(Tiger) で kqueue の戻り値(ファイルデスクリプタ)を close できるようになりました。

No. 4139 # has 2005/05/05 (木) 23:57:25
トップページについて、ご自分でも感じてらっしゃるかと思うのですが…。
ぼちぼち更新履歴が長くてアレな気がするので、できればトップは最近の
いくつかだけにして、過去のぶんは別ページに、とできないでしょうか。
# それともCGI/Servletでblogを作ってからにしようとしてるとか?(^^)

No. 4140 # へにか [URL] 2005/05/06 (金) 04:14:49
>>4139 has
手前味噌ですが、
http://www3.to/henika/browsers/
(http://thunder.prohosting.com/~henika/japanese/browsers.shtml)
みたいに、最近の数個を上に、それ以降を後ろに持っていくと、ファイル1個内に閉じたカット&ペーストで済ますことができます。
#他人様のサイトですので、あくまでも1例を提案させていただいている、という程度の意見でございます。

No. 4141 # mnt 2005/05/12 (木) 11:33:49
参考にさせていただいております。

ご質問があるのですが、OpenSSLをインストールした状態のPC(A、B、C)で
HTTPS通信とHTTP通信を使い分けるということは可能なのでしょうか。
(A-B間はHTTPでA-C間はHTTPSでといった具合です。)

現在手元に環境が無いためテストすることができずに困っております。
誠に申し訳ありませんが、ご存知の方がおられましたらご教示しては頂けないでしょうか。

No. 4142 # はんす 2005/05/15 (日) 21:21:04
カンマで区切られたデータのある位置にある内容と同じ
ものが他のレコードに存在しなかチェックを行い、存在
した場合、それぞれのレコード番号を出力したいのですが
どのよにすれば上手くできますか。

-- ファイル -----
001,みかん,N001,N,Y,10,,
002,りんご,N002,Y,N,30,,
003,ばなな,N003,Y,Y,20,,
004,ジュース,N001,N,N,,,
005,いちご,N004,,,,,
006,なし,N004,,,,,
007,かき,,,,,,
008,くり,,,,,,

--- 結果 -----
1行目と4行目
5行目と6行目

ただし、必ずしも設定されているとは限らずNULLの場合も
あります。
環境は、Soralis8、Bシェルです。


考えとしては、
#!/bin/sh
#

FILE=file.csv

while read LINE
do
        val=`echo ${LINE} | cut -d , -f 3`

        nawk -v KEYWORD=${val} =F"," '

        ' ${FILE}
done < ${FILE}
と思ってはいるのですが。

No. 4143 # Enagy 2005/05/16 (月) 21:03:31
こんにちは〜^^
ネットワーク関係のソフトウェアをC言語で作っているんですけど
WAN側のIPの調べ方がわからなくて困ってます>_<
簡単にでいいので、教えていただけると助かりますm(_ _)m

No. 4144 # 68user 2005/05/19 (木) 20:39:51
>>4138 たなか
なるほど、バグでしたか。ご連絡ありがとうございました。

>>4139 has
>>4140 へにか
ご意見ありがとうございます。トップページから「古い更新記録」に
移動するのをさぼっていただけなので、遅ればせながらごそっと移して
みました。

No. 4145 # 高橋 2005/05/27 (金) 20:15:50
初めまして、高橋です。
突然で申し訳ありませんが、とても困っています。解決方法をご存知の方がいらっしゃいましたら教えてください。

solarisでcronでシェルを起動する際に自分自身が立ち上がっていないかのチェックを行っています。
下記「(1)コマンド」で立ち上がっているプロセス件数をチェックしているのですが、稀に「(2)実行結果」の様な結果が返ってきて件数を正しく判定できません。
※本来は(2)の一行目のみで、一件と返ってくる。
(1)コマンド↓」
set PRCCOUNT = `ps -efl|grep ${PROGRAM_FILE}|tee aaaa.grep|wc -l`
(2)実行結果↓」
  8 S sm 2136 2128 0 60 20 ? 212 ? 19:45:36 pts/15 0:00 /bin/csh -f ABC.csh ABC
  8 R sm 2128 1704 0 70 20 ? 212 19:45:36 pts/15 0:00 /bin/csh -f ABC.csh ABC

Rステータスが実行待ちという事らしいのです。``で子プロセスが立ち上がる弊害のようです。
何か自分が起動していない事を確認する良い方法はないのでしょうか?
ご存知の方ご教授下さい。

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

No. 4146 # hoge 2005/05/28 (土) 19:17:39
ps -efl の結果を中間ファイルに記録する様にすれば、ps 実行時に `` を
使わなくて済みますよね? 駄目?

No. 4147 # has 2005/05/29 (日) 00:28:32
あまり深い意味はないのですが、なんか頭をぐるぐるしているので、
もし気が向いた方がいればご意見聞かせてください。

この掲示板の送信ボタンのすぐ下には
    「UNIX・ネットワークに関する一般的な質問」
っていうくだりがあります。
この言葉に限らず、言葉には前置きを付けると、意味合いがいろいろ変化する
ということはわかっているのですが、例えば単純にこの部分だけを見た場合、
これは一体どういった捉え方ができるんでしょうか。

さっき思いついてちょっと考えていたのですが、フレーズだけが響いてしまい、
もはやちっとも考えが前に進みません。

No. 4148 # へにか [URL] 2005/05/29 (日) 07:44:57
>>4147 has
>例えば単純にこの部分だけを見た場合、
>これは一体どういった捉え方ができるんでしょうか。

ここが良く理解できなかったのですが、いかなる状況での
「単純にこの部分だけ」と言うことでしょうか?
送信するとき? それとも読むとき? はたまたもっと違う状況?

>なんか頭をぐるぐる
余談ですが、僕なんか、毎日のように頭がぐるぐるしてます。
この件じゃなくて色々ですが。
ぐるぐるすると、辛いですよね。どうか、ご自愛ください。

No. 4149 # hoge 2005/05/30 (月) 18:08:05
> >例えば単純にこの部分だけを見た場合、
> >これは一体どういった捉え方ができるんでしょうか。
>
> ここが良く理解できなかったのですが、いかなる状況での
> 「単純にこの部分だけ」と言うことでしょうか?

『UNIX・ネットワークに関する一般的な質問は受け付けていません』と
明記してあって、なおかつ『当ページの内容に関するご意見・ご指摘は
歓迎します。』なんだから typo の指摘や記事の内容から発展させて
一定レベル以上のネタの窓口に決まってるやん...っていうのを暗に
言いたかっただけとチャウんかと.

> 僕なんか、毎日のように頭がぐるぐるしてます。

私なんて頭だけでなく, 腹の方までグルグルしてます.
呑み過ぎて腹出して寝てるせいなのか, 神経性なのか
両方に心当たりがあって困ったモンです.

No. 4150 # へにか [URL] 2005/05/30 (月) 19:58:01
>>4149 hoge
>一定レベル以上のネタの窓口に決まってるやん...っていうのを暗に
>言いたかっただけとチャウんかと.
なるほど。でも、その意図は汲み取り難いのかもしれません。むしろ、
「一般的な」という一文が、「特殊な」との対となし、自分の質問が
一般的ではなく、ごくごく限られた状況ならOKとみなされているのか
もしれません。

例えば、「shってなんですか」は一般的で、「これこれこういう時は
どうなんですか」は、そうではない、という捉え方をされているのか
も知れません。

と言うことで、僕は「UNIX・ネットワークに関する質問は受け付けて
いませんが、当ページの内容に関するご意見・ご指摘は歓迎します。」
と書き換えたほうが良いと提案します、という結論に落ち着きました。

>神経性なのか
心療内科の受診をお勧めします。相性が合うDr.が見つかれば良いですね。

No. 4151 # 68user 2005/05/31 (火) 00:28:57
わたしが思うに、以下の 3パターンに分類されると考えています。

パターン1:
    そもそも注意書きを読んでいない。
パターン2:
    とても困っているので、回答をもらえる可能性は低くても質問しておこう、と思っている。
    実際に誰かが答えてくれる場合もあるため、あながち間違った作戦とは言い切れない。
パターン3:
    自分の質問が「一般的な質問」であると認識しておらず、「特殊」なものである、
    と考えている。4150 での考察に同じ。

>>4150 へにか
> と言うことで、僕は「UNIX・ネットワークに関する質問は受け付けて
> いませんが、当ページの内容に関するご意見・ご指摘は歓迎します。」
別に質問されて困っているわけではないのですが、せっかくなのでご提案の
とおりに書き換えてみました。

> 頭がぐるぐるしてます。
最近日本酒を飲みだしたため、毎日頭がぐるぐるしています。4日で一升空けるのは
飲みすぎなんでしょうかね。

No. 4152 # has 2005/05/31 (火) 01:04:11
皆さん、私のしょうもない書き込みにつきあっていただき
ありがとうございます。

>>4148 へにか
>>4149 hoge
ご指摘の通りです。
もっと平和に表現できればよかったんですが、私には無理でした。
スミマセン。

>>4150 へにか
そうですね。私もそれなのかなぁ、と思っていました。

>>4151 68user
具体的に表現してもらうと確かにそんな気がします。

>別に質問されて困っているわけではないのですが
そ、そうでしたか…。

>4日で一升空けるのは飲みすぎなんでしょうかね。
健康診断とかではよく、1日1合まで、と言われますよ。
そのうちまた、新潟のおいしいお酒が飲めるよう、体には気をつけましょう。

No. 4153 # hoge 2005/05/31 (火) 02:07:59
>>4151 68user
> せっかくなのでご提案のとおりに書き換えてみました。
リンクに関する注意書きの所にも『一般的な』が有りますね.

> 4日で一升空けるのは飲みすぎなんでしょうかね。
一瓶なら大丈夫でしょうけど, そのペースで空き瓶を大量生産してるなら
少しペースを落とした方が良いかも知れませんね.
そんな事言ってる私の部屋には空き缶が大量発生してますけどね.

>>4152 has
> もっと平和に表現できればよかったんですが
充分に平和的だと思っています.
『チャウんかと.』のくだりは吉野家コピペ風に書きたかったってだけで
他意は有りません.

No. 4154 # へにか [URL] 2005/05/31 (火) 02:16:44
>>4151 68user
採用いただき、恐縮です。
確かに、読んでいない、というパターンが一番多いと思いますが、
こういうのも、httpのヘッダ解析でできたらいいのにな、と、
ふと思いました(素面なのに)。

>>4152 has
>>別に質問されて困っているわけではないのですが
>そ、そうでしたか…。
上に同じ・・・

>>4151 68user
>>4152 has
お酒のうまさがわかるなんて、羨ましい限りです。
人生の楽しみの半分を失ってる、と言われた事があります。
ビールに換算すると、10[杯/年]かな? しかも年2〜3回:)

No. 4155 # へにか 2005/05/31 (火) 02:22:54
>>4153 hoge
う、ニアミス・・・
お酒のうまさにかんしては、同じく羨ましいですね。

>>4152 has
ニアミスついでに。
>確かに、読んでいない、というパターンが一番多いと思いますが、
は、正しくは、
>読んでいない、というパターンが一番多いと思いますが、
ですね。「確かに、」は余分でした。

No. 4156 # 68user 2005/05/31 (火) 02:23:50
>>4152 has
> 健康診断とかではよく、1日1合まで、と言われますよ。
なんと、そんなに少ないのですか。今日は日本酒は飲みませんでしたが、ビール
(発泡酒・その他の雑種含む) を 3リットルほど消費しました。少し控えた方が
よいのかもしれませんね。といっても控える気はあまりないのですが。

>>4153 hoge
> リンクに関する注意書きの所にも『一般的な』が有りますね.
ありがとうございます。明日修正します。


ちなみに、わたし個人は UNIX・ネットワークに関する質問を受け付けていませんが、
他の誰かが回答することについて邪魔をしたいわけではありません。この掲示板で
誰かが質問し、それに対して誰かが回答しても、それはアリかと思います。

ただ、そういう場を積極的に提供する気は今のところないので、引き続き「質問は
受け付けていません」と明記させていただきます。

No. 4157 # へにか 2005/05/31 (火) 06:40:35
>>4155 へにか

>>4152 has
ニアミスついでに。
は、
>>4154 へにか
の、ポイント間違いです。

掲示板を汚して申し訳ありません。素面でこれなんだから、全くもう・・・
頭がぐるぐるどころか、頭がどろどろしているのかもしれません。

No. 4158 # 68user 2005/06/03 (金) 01:58:38
「雑談も可」と明記してみました。

ところで、どこかにわたしの中途半端な技術力を生かせて、元請中心で、上流〜下流の
どこでも口と手を出せるような社員数数十〜数百人程度の小さな会社が関東南部周辺に
ないですかねぇ、とネタふりしてみたりして。

No. 4159 # へにか [URL] 2005/06/03 (金) 06:57:31
>>4158 68user
一件、心当たりがありますが、僕も狙っているので、ここでは公言できないです。
もし、68userさんしか投稿内容を見ることができないシステムがあれば、そちら
に書き込みします。例えば、以前のアンケートシステムみたいに。

No. 4160 # hoge 2005/06/03 (金) 12:32:54
中途半端って、謙遜が過ぎるような気がするが...
五反田で良ければ心当たりがありますけど.

No. 4161 # 68user 2005/06/04 (土) 21:19:51
>>4159 へにか
>>4160 hoge
早速作りました。よい情報があればよろしくお願いします。
    http://X68000.q-e-d.net/~68user/tmp/job.cgi

No. 4162 # 68user 2005/06/06 (月) 20:54:44
へにかさん、hoge さん、hoge さんのお知り合いの方、ありがとうございます。
しばらく検討させてください。今後メールするかもしれませんが、そのときは
よろしくお願いします。

引き続き情報をお待ちしています。

No. 4163 # 68user 2005/06/12 (日) 04:32:41
      ネットワークプログラミングの基礎知識
            http://X68000.q-e-d.net/~68user/net/

      TCP/IP エラー処理 connect 編
            http://X68000.q-e-d.net/~68user/net/tcp-connect-1.html
を追加しました。

ところで転職の方は、現時点で 10社ご紹介いただきました。
今、かなり悩みつつ検討中です。

まずはメールで質問させていただくことがあると思いますが、
そのときはよろしくお願いします。

No. 4164 # mm070324 [E-mail] 2005/06/15 (水) 00:47:33
すみません、基本的な質問してもよろしですか?友達にFTPのアドレスを教えてもらいいろいろなコピーを貰っています。こちらからからはその方に、メールなどを転送できないのでしょうか?申し訳ありません。私はまったく理解していない初心者なので。お礼のメールをしたいのですが〜

No. 4165 # has 2005/06/18 (土) 04:41:25
>>4164 mm070324
その人がみんなのために公開してるならお礼をしても差し支えないと思いますが、
個人用のデータ置き場がたまたま見えているだけなら、お礼という形は微妙だと
思います。けど、メールする方法はわかりません。
ちなみに、FTPもメールもWebも、UNIXとネットワークに関する技術の代表的存在です。
基本から頑張って理解していってください。

No. 4166 # saito 2005/06/20 (月) 18:04:41
はじめまして。
UNIXの部屋をいつもありがたく使わせていただいているものです。

一点気づいたのでご報告です。

TOP >> UNIX の部屋 >> 検索
lessコマンドの解説ページ

-fのオプションの解説のところで
”less でバイナリファイルを見ようとすると”
の部分がテーブル内に表示されているのは正常ですか?

No. 4167 # 68user 2005/06/21 (火) 22:28:18
>>4166 saito
正常ではないです。近日中に直します。
ご指摘ありがとうございました。

No. 4168 # 68user 2005/06/22 (水) 20:37:19
>>4166 saito
修正いたしました。ありがとうございました。

転職活動は少しずつ進めております。大体方向性が固まって
きましたので、トップページなどからのリンクは外しました
(CGI 自体は生きていますが)。情報をお寄せくださった皆様、
ありがとうございました。

No. 4169 # saito 2005/06/23 (木) 18:22:03
>>4168 68user
修正ありがとうございました。

良い転職先が見つかると良いですね。

また何かありましたらご報告いたします。

No. 4170 # 68user 2005/06/23 (木) 22:51:12
最近お願いばかりで恐縮ですが、世の人がすなるという mixi と Gmail
なるものを一度この目で見てみたいと思っています。ネット上に友達が
いないかわいそうなわたしを、どなたかお誘いいただけませんでしょうか。

一時的なメールアドレス
    mixi-gmail-68user@q-e-d.net
を作りましたので、よろしければお願いします。

>>4169 saito
ありがとうございます。今後ともよろしくお願いします。

No. 4171 # 68user 2005/06/23 (木) 23:08:55
>>4170 68user
すいません、Gmail は
    http://www.freebbs.biz/yy2ch/yy2ch.cgi?id=admin
で取れてしまいました。

Gmail って Ajax を使った画面遷移のない web メーラーだと思ってたので一度
使ってみたかったのですが、単なる勘違いであったことがわかりました。うーむ。

No. 4172 # 68user 2005/06/27 (月) 02:02:06
「UNIX の部屋」を更新しました。
      http://X68000.q-e-d.net/~68user/unix/

No. 4173 # zsh 2005/06/27 (月) 07:19:17
>>4172 68user
いつもご苦労様です。

cronの欠点の一番最後の部分で
> 重複起動を避けたい場合は、個々のプログラムで排他制御をする必要がある。
> で実現できる。
とあり、日本語がおかしいと思います。

後、UNIXの部屋の各ページから転職先募集のCGIへのリンクが残っているようですが
これは想定通りでしょうか?

No. 4174 # 68user 2005/06/27 (月) 11:42:03
>>4173 zsh
> 日本語がおかしいと思います。
修正いたしました。

> UNIXの部屋の各ページから転職先募集のCGIへのリンクが
> 残っているようですがこれは想定通りでしょうか?
想定外です。こちらも修正しました。
ご指摘ありがとうございました。


あと、へにかさんへ。

6/22 に送信したメールに対するエラーメールが今日届きました。
    Sorry, I wasn't able to establish an SMTP connection. (#4.4.1)
    I'm not going to try again; this message has been in the queue too long.
だそうです。内容は雑談なので別に構わないんですが、到達可能な
メールアドレスを例の CGI 経由で教えていただければ再送いたします。

No. 4175 # へにか 2005/06/29 (水) 06:53:50
>>4174 68user
へにかです。
例のCGI経由で、お伝えしました。お時間が許せばで結構ですので、
再送の程、宜しくお願いいたします。

No. 4176 # 68user 2005/06/29 (水) 23:29:00
転職活動は終了しましたので、転職先募集のページは閉じました。

最初はただの雑談のつもりだったのですが、結果的には希望通りの
転職先が見つかり、満足しています。情報を寄せていただいた
みなさまには本当に感謝しております。ありがとうございました。

自分の web 上で転職活動をするとどうなるか興味があるかたも
いらっしゃるかと思うので、結果を簡単に。

頂いた情報は 18日間で 17件でした。内訳は以下の通りです。
    - この会社はよさそうでは?: 3件
    - 知り合いがここに勤めてます: 3件
    - ウチくる?: 8件
    - 転職紹介サイトなど紹介: 2件
    - ここはやめとけ: 1件

あと、どこかの blog で「はてなとかどう?」というコメントを
見かけました。


よかったところ、悪かったところは以下の通り。

よかったところ:
    - 「上流から下流まで全てを手がけたい」「自社システム開発あるいは元請」
        など、希望条件を明確に提示できる。普通の人材募集のページには
            「〜以下の工程を担当可能です。それより上は元請会社の仕事です」
            「うちは下請けばっかりです」
        なんてことは書いてない。
    - 予想以上の情報が集まった (2〜3件程度かと思っていた)
    - 事前に web を見てもらっているので、技術面での力量をかなり正確に
        把握してもらえる
    - まずはメールで質問できるので、情報収集には苦労しない (通常は
        履歴書送付から始まるので、質問できる段階に行き着くまでが長い)
    - このページを見ている人は技術者が大半と思われるので、現場の
        雰囲気や作業内容など、細かな情報も聞くことができる
    - 運がよかった

悪かったところ:
    - (面接に行くと) 顔バレ・名前バレ (仕方ないけど)
    - (転職すると) web バレ (これも仕方ない)
    - 大きな会社に行きたい場合は向かない (わたしは小さなところを
        希望していたのでデメリットではないんですが)

お返事を差し上げなかった方についてはまことに申し訳なく思って
おります。勤務場所・仕事内容・会社の規模 (大きすぎる) などで
希望条件と合致いたしませんでした。なにとぞご容赦ください。

>>4175 へにか
メール送ります。

No. 4177 # 68user 2005/06/29 (水) 23:57:50
というわけで、お礼がわりと言うのもおこがましいですが、当掲示板
での質問受け付けを再開します。痛い質問者によって精神的に疲弊
してしまったら、またクローズして充電します :-)

今後ともよろしくお願いします。

No. 4178 # あんどろめだ 2005/07/04 (月) 14:53:52
すみません、どなたかご教授ください。
HP-UNIXであるコマンド(シェルで起動したC)の出力結果の一部日本語出力が文字化けします。
teratermで接続していますが、teratermの設定をSJISからEUCに変更すると見えるようになります。
UNIXは元々SJISですので、
setenv LANG ja_JP.EUCを入れて実行したのですが、結果は同じです。
どなたか解決策を授けてください。お願いします。

No. 4179 # シロネコ [E-mail] 2005/07/04 (月) 16:40:10
ftp上のlsの挙動に関する質問です。
ftpサーバはsolaris8とsolaris10です。
(両方OS標準のftpサーバです。)
クライアントはwindows98です。
solaris8に接続してlsをフルパスですると、
結果がファイル名だけ帰ってきます。
例)
ftp> ls /etc
結果
vfstab
しかし
solaris10に接続してlsをフルパスですると、
結果がフルパスで帰ってきます。
例)
ftp>ls /etc
結果
/etc/vfstab
solaris10の結果をsolaris8にあわすことが出来ないでしょうか?
結果ファイルを使って後の処理をしているので違う結果になると
いままで作ったプログラムを手直ししないといけないのでなんとかしたいです。
よろしくお願いします。

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

No. 4180 # 68user 2005/07/04 (月) 17:04:27
>>4178 あんどろめだ
1. C のプログラムが Shift_JIS 文字列を吐くよう修正する。普通に
      printf などで出力しているなら、ソースを Shift_JIS に変更して
      から再コンパイル (それで動作するかどうかは要検証)。
2. 出力を Shift_JIS に変換してから受け取る
        Ex: result=`command | iconv -f eucJP -t sjis`

>>4179 シロネコ
Solaris9 以降は wu-ftpd ベースらしいので、
>>3374 とーりすがり
のように /bin/ls に変更してやれば変わるかもしれません (デフォルトでは
/bin/ls を使っていないようなので)。それでもダメなら、ディレクトリ名を
削除する以下のような自作の ls を作って指定するとか (あまりに場当たり的
ではありますが)。
      #!/bin/sh
      /bin/ls "$@" | sed 's|/.*/||'"

あと、結果ファイル処理プログラムを書き換えないまでも、リクエストの
出し方を変えてよいのであれば
    - cd /etc してから ls する (まぁそれができるならわざわざ質問
        しないでしょうけど)
    - ls /etc "| sed 's|/.*/||'" と、別プログラムをかませる
        (Windows98 に sed はないので適当に工夫する。ただし Windows の
          ftp.exe で "| ..." が効くかどうかは不明)
とか。

No. 4181 # 68user 2005/07/04 (月) 17:06:22
>>4180 68user
> #!/bin/sh
> /bin/ls "$@" | sed 's|/.*/||'"
最後の " は余計でした。

No. 4182 # あんどろめだ 2005/07/04 (月) 17:38:04
68userさん
2の方法でうまくいきました。(iconvコマンド初めて知りました)
ありがとうございました!!

No. 4183 # シロネコ 2005/07/04 (月) 18:25:21
ありがとうございました。
でも、やってみましたが、
/bin/lsを変更する方法も、
自作のlsを使う方法もだめでした。
やり方が悪かったのでしょうか?

No. 4184 # 68user 2005/07/04 (月) 23:26:14
>>4183 シロネコ
FreeBSD に wu-ftpd-2.6.2 を入れて試してみましたが、そもそも
> 結果がフルパスで帰ってきます。
となりませんでした。

手元に Solaris10 がないのでこれ以上はわかりません。いまさらでは
ありますが、ftp サーバが wu-ftpd なのかを調べた方がよいと思います。

No. 4185 # りゅう 2005/07/05 (火) 11:06:28
こんにちは。お世話になります。
すいませんが質問させてください。

メーリングリストサーバのfmlで、特定のアドレスから来たメールや、
特定のサブジェクトのメールをメーリングリストに流さないように
したいのですが、どのようにすれば良いでしょうか。

具体的な資料があれば、教えていただけると助かります。
唐突ですいません。

No. 4186 # 68user 2005/07/05 (火) 11:18:01
>>4185 りゅう
http://www.fml.org/software/fml/variable-list.ja.html#Section-Misc-Misc
の $REJECT_ADDR

http://www.fml.org/software/fml/Japanese/examples/spam_check.ph
の &DEFINE_FIELD_PAT_TO_REJECT

などでしょうか。

No. 4187 # りゅう 2005/07/05 (火) 13:25:24
>>4186 68user
どうもありがとうございます。
参考にして、試してみます。

No. 4188 # りゅう 2005/07/05 (火) 14:16:44
>>4186 68user
試してみたら、うまくスパムメールを弾いてくれました。
ありがとうございました。

No. 4189 # 68user 2005/07/06 (水) 22:40:26
68user's page の正式なサーバ名は X68000.q-e-d.net ですが、
これまでは他の CNAME や IP アドレスを指定した場合でも閲覧
できていました。
    Ex: www.usami.com/~68user/cgi-bin/wwwboard.cgi

さきほどホスト名が m/^X68000\.q-e-d\.net$/i にマッチしない
場合はエラーとするよう修正しました。もし問題がある場合は
教えてください。

と言っても、問題があったらこの掲示板にはたどり着けないのですが。

# http://x68000.q-e-d.net/~68user/cgi-bin/cvsweb.cgi/public_html/.htaccess

No. 4190 # 68user 2005/07/10 (日) 19:14:24
PHP の習作として、バグ管理ツール bugnote を作ってみました。
    http://X68000.q-e-d.net/~68user/bugnote/

自分でバグを登録して自分で直すだけの、ただのメモ代わりの
ツールですが、せっかく作ったので公開します。

もし以前指摘したのに直ってない、bugnote にも載ってない、
という問題がありましたらお教えてください。

No. 4191 # 無題 2005/07/11 (月) 18:51:24
お世話になっています。
管理人様へ質問なのですが、プログラムなどの著作権はどうなっているのでしょうか?
もし、明示されている場所があれば教えてください。

No. 4192 # 68user 2005/07/11 (月) 19:15:05
>>4191 無題
著作権は放棄することができないのでわたしに属しますが、ライセンスに
ついては
    http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=4089
をどうぞ。近日中にわかりやすいところにも明記いたします。

No. 4193 # 無題 2005/07/11 (月) 19:55:11
>>4192 68user
早速の回答ありがとうございます。
プログラムを参考にさせていただきますね。

No. 4194 # 68user 2005/07/15 (金) 23:28:35
いまさらですが、昨日ある方に mixi に誘っていただきましたので、
>>4170 68user
のメールアドレスは使えないようにしました。

No. 4195 # ド素人 2005/07/18 (月) 14:47:31
すみませんが、どなたか『VC++(6.0)』でOpenSSLを使うための
設定法を教えていただきたいのですが……

No. 4196 # 68user 2005/07/18 (月) 21:08:31
>>4195 ド素人
- OpenSSL に同梱されている INSTALL.W32 を読んで、OpenSSL をビルド
- プロジェクト (と言うのはどうか知りませんが) の設定で、以下の項目を追加
        - インクルードパス
        - ライブラリパス
        - ライブラリ名

でいけるはずです。

No. 4197 # アメリカ在住 2005/07/20 (水) 01:59:48
同一PC上(UNIX)でサーバー、クライアントを作りSocket通信をしています。
send→select→FD_ISSET→Recvを行い、データのやりとりをしています。
何回かうまく送受信できるのですが、突然止まってしまいます。
sendはうまくいっているみたい(sendの返り値は正常)なのですが、
Recvをしてくれません。
netstatでSocket状態を確認すると以下のようになります。

tcp4 922 0 192.168.0.69.24019 192.168.0.69.61361 ESTABLISHED
tcp4 0 0 192.168.0.69.61361 192.168.0.69.24019 ESTABLISHED
tcp4 0 0 192.168.0.69.24019 *.* LISTEN

どうもRecv-Qに送信されたデータが溜まっているみたいです。
色々調べてみたのですが、よく分かりません。
どなたか救いの手を差し伸べていただけないでしょうか。

No. 4198 # 68user 2005/07/20 (水) 03:47:34
>>4197 アメリカ在住
OS 名とソースを提示してください。

No. 4199 # 中川 2005/07/26 (火) 14:34:29
dblinkについての質問なのですが、dblinkで他のデータベースのテーブルと結合させる
テーブルを作りたいのですが、CREATE文でFOREIGN KEYを使う事が前提となっていて、
どうやって記述すればうまくいくのかがわからず、困っています。うまくいったとして、
結合させる処理も考え付きません。
ビューを使えば結合はできたのですが、ビューはFOREIGN KEY には使えないのでだめで
した。
create table DB1_T1(
A1 char(3),B char(3),C char(3),primary key(A),foreign key(C)
REFERENCES データベース DB2のテーブル2(C);
という風にしたくて、foreign(C) REFERENCES dblink(
'dbname=DB2','select * from DB_T2')
AS DB2_T2(C char(3),NAME varchar(50))(C)
としてみたのですが、dbname=DB2 でエラーが起こってしまいます。
何かいい方法があればどうかお願いします。
バージョン Postgres7.3.3

No. 4200 # 68user 2005/07/26 (火) 16:18:44
>>4199 中川
PostgreSQL の dblink がいつのまに DB2 に対応したのかと 1時間
悩んでしまいました。

dblink は result set を返すものですが、foreign key は
テーブル名・項目名を記述するものなので、無理じゃないですかね。

# Oracle なら foreign key(C) references DB_T2@dblinkname (c)
# でいけそうですが。

やるなら DB1_T1 にトリガを設定して、UPDATE・INSERT・DELETE された
ときに DB_T2 を見にいくとか。

No. 4201 # 中川 2005/07/26 (火) 17:17:23
大変早いお返事本当にありがとうございます。
とても悩んでいたので助かりました。
一番上にPostgreSQL と書くべきでした。
PostgresでdblinkとForeign keyを使うのは無理でしたか。
dblink以外を使って他のデータベースのテーブルをForeign key制約
に指定する方法はないのでしょうか?
上司に無理です。と言い切るしかないかもしれません。

No. 4202 # 68user 2005/07/26 (火) 17:57:28
>>4201 中川
外部キーにこだわるなら、
    - 定期的に他データベースからデータを取得してローカルのテーブルに入れる
    - 他データベースからトリガでローカルのテーブルに反映する
くらいしかないのでは、とわたしは思います。

No. 4203 # 中川 2005/07/26 (火) 19:13:54
大変早いお返事本当にありがとうございます。
とても悩んでいたので助かりました。
一番上にPostgreSQL と書くべきでした。
PostgresでdblinkとForeign keyを使うのは無理でしたか。
dblink以外を使って他のデータベースのテーブルをForeign key制約
に指定する方法はないのでしょうか?
上司にForeign keyにdblinkは無理です。と言ったところ、

データベースA データベースB  

テーブルT_A テーブルT_B

    A B C A B C

    1 0 0
    2 0 0
    3 0 0
        
データベースAのテーブルT_Aの列E_1の選択した値だけ(1だけ や 2だけ)を
データベースBのテーブルT_Bの列 Aに、INSERTする。
そのときテーブルT_Bの列BにはデータベースBのテーブルT_Cの列BをINSERT
し、Cにはすきな値を入れる。

という処理をする事になりました。
dblinkとビューを使ってデータベースBのテーブルT_Bに変わるものを作れば
いいと思ったのですが、selectした値をそれぞれの列に入れ込む処理が見当
たらず停滞しています。

いい案がありましたらよろしくお願いします

No. 4204 # 68user 2005/07/27 (水) 00:53:28
>>4203 中川
- 最終的に何をしたいのか
- 現状のどこが問題なのか

を読み取ることができません。

No. 4205 # 中川 2005/07/27 (水) 10:43:24
わかりづらくて申し訳ありませんでした。
やりたい処理は

テーブル1の列Aには、テーブル2の列A
テーブル1の列Bには、テーブル3の列B
テーブル1の列Cには、その場で作った
値をINSERTさせる という処理がした
いのですが、解決策が見つかりません。
副問いで、SELECTした値をINSERTさせ
ようとしたのですが、SELECTは一つし
か使えないようなので複数SELECTして
それぞれの列にINSERTさせるというの
は無理なのでしょうか。

No. 4206 # 68user 2005/07/27 (水) 11:00:31
>>4205 中川
INSERT INTO T1 (A, B, C)
    SELECT T2.A, T3.B, 'HOGE'
        FROM T2, T3
      WHERE (T2 と T3 に関する条件)

ということですか?

手元に PostgreSQL はないので確認できませんが、Oracle では一応動きました。

No. 4207 # 中川 2005/07/27 (水) 21:54:05
何度もありがとうございました。大変助かりました。
SQL初心者なのでこれを機にテクニカルを身に付けようと思います。

度々すみませんが、また質問です
昨日の質問なのですが、データベースの異なるテーブル
にトリガーを使って外部キーをつけるという処理を
今日一日悩んだのですが、トリガーを使ったことがなく、
少しも理解できていません。
トリガーを使って異なるデータベースのテーブルに外部キ
ー制約を行う方法を教えていただけないでしょうか。

No. 4208 # 68user 2005/07/27 (水) 23:36:50
>>4207 中川
またそこから始めるんですか? 全然 4202 から状況が変わってないように見えますが、
4203-4206 のやりとりは何だったんでしょうか。

まぁ、それはそれとして、トリガを使う案は

    - DB1 にテーブル T1、DB2 にテーブル T2 がある
    - DB1 の T1 のカラム A には、DB2 の T2 のカラム A に存在する値しか入れたくない
    - しかし PostgreSQL の外部キーでは、dblink を使えないようだ
    - ならば DB2 の T2 と同じ内容のテーブル T2 を DB1 にも作って、そこに外部キーを設定しては
    - となると DB2 の T2 と、DB1 の T2 の間でテーブル内容の同期をとる必要がある
    - では DB2 の T2 にトリガをセットして、T2 に対する INSERT・UPDATE・DELETE が
        発生したら、自動的に DB1 の T2 に同じデータを反映するようにするのがいいのでは

というものです。DB2 の T2 がごくまれにしか更新されないテーブルであれば、
トリガを使う必要はないかもしれません (30分に一回 INSERT INTO SELECT
で DB2 の T2 の内容を DB1 の T2 にコピーするとか)。

別の案としては、DB1 の T1 に INSERT・UPDATE がかかったときに、トリガで
DB2 の T2 のカラム A を見にいって、データが存在しなかったら RAISE して
エラーにする、というのもあります。
    http://www.postgresql.jp/document/pg803doc/html/plpgsql-errors-and-messages.html

いずれも何も試さずに言ってます。念のため。

No. 4209 # まつ 2005/07/29 (金) 18:18:09
皆様こんにちは。
ここはcshの質問をしても宜しいのでしょうか?
sedを使ってCSVファイルをTSVファイルに変換しようとしているのですが
変換元と変換先のファイル名にシェルの引数を認識してくれません。


if ($4 == CSV) then
        #TSVに変換
        sed -e 's/","/ /g' $LOG_DIR/$1.bad | sed -n -e 's/"//gw $LOG_DIR/$1.bad'
endif

アクセス権がありませんとか、オープンできませんというエラーになります。
下記のようにフルパスにすると正常に処理してくれます。
sed -e 's/","/ /g' /disk1/FNC021.bad | sed -n -e 's/"//gw /disk1/FNC021.bad'

ファイル名を「`」でくくったり\でエスケープ?してみましたがダメでした。
sedを知らないので頓珍漢なことをしているのかもしれません。
有識者の皆様、助けて下さい。m(_ _)m

No. 4210 # まつ 2005/07/29 (金) 18:46:39
すみません!!!
過去ログを眺めていて、適当に
sed -e 's/","/ /g' $LOG_DIR/$1.bad | sed -n -e 's/"//gw '$LOG_DIR/$1.bad''
と’’をつけたら動いてしまいました。。

どうもお騒がせしました。m(_ _)m m(_ _)m

No. 4211 # 68user 2005/07/29 (金) 23:03:10
>>4210 まつ
今後は
    #!/bin/csh -fx
などと -x オプションを付けてデバッグすることをお勧めします。

No. 4212 # まつ 2005/07/30 (土) 12:51:12
こんにちわ。

スクリプト内1行目に-fxオプションをつければよいのでしょうか?
知りませんでした。。御恥ずかしい。
どのような結果になるのか月曜にでも確認してみます。

どうもありがとうございました! m(__)m

No. 4213 # 68user 2005/08/01 (月) 01:26:00
UNIX の部屋を更新しました。
    http://X68000.q-e-d.net/~68user/unix/

未稿の部分が多くて恐縮ですが、書けども書けども終わりが見えないので、
いったん公開することにします。

No. 4214 # seki [E-mail] 2005/08/02 (火) 13:19:58
はじめまして、sekiと申します。

ftpに関しまして、分からない事があり質問させて頂きます。
どなたかご存知の方おられましたら、ご教示をお願い致します。

【環境】
・Solaris8
・in.ftpdを使用

【問題】
・バッチ処理にて、バーチャルIPでftpを行い、他ホストに作成された
    ファイルを取得する。
    ネットワーク障害時や他ホストdown時、バーチャルIPが見えなくなる場合、
    ftpのconnect:接続の時間切れとなるが、その場合約4分も待たされる。
    
【知りたい事】
・上記のような障害時、1ノードで約4分も待たされるのは長いので、設定で
    短く出来るのであれば短くしたい。

【検証】
    (1) OSパラメータのtcp_time_wait_interval=240000(4分)になっていたので、
     ftpがconnect_timeoutになるのは、上位のTCPのタイマーに引っかかるのでは
         と思い、nddコマンドにて60000(1分)にしてinetdデーモンを、kill -HUPした。
         変更後、バーチャルIPが見えないHostに対しftpを行なったが、以前4分で
         ftp_connect:接続の時間切れとなる。

    (2) /etc/inet/inetd.confの、ftp記述部分を下記のように-tオプションにて
         タイムアウトを設定し、inetdデーモンを、kill -HUPした。
         こちらも変更後、バーチャルIPが見えないHostに対しftpを行なったが、
         以前4分でftp_connect:接続の時間切れとなった。

    ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -t20 -l -d

※ 下記のURLを参考にさせて頂きましたが、FTPクライアントがFTP サーバに
        PORTコマンドを投げて応答なしで、データ用コネクションも張れない場合は
        どこの設定でクライアントはtimeoutを判断するのでしょうか?
        私の推測のようにTCPに依存するものなのでしょうか?

        http://x68000.q-e-d.net/~68user/net/ftp-1.html

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

No. 4215 # seki [E-mail] 2005/08/02 (火) 13:30:18
はじめまして、sekiと申します。

ftpに関しまして、分からない事があり質問させて頂きます。
どなたかご存知の方おられましたら、ご教示をお願い致します。

【環境】
・Solaris8
・in.ftpdを使用

【問題】
・バッチ処理にて、バーチャルIPでftpを行い、他ホストに作成された
    ファイルを取得する。
    ネットワーク障害時や他ホストdown時、バーチャルIPが見えなくなる場合、
    ftpのconnect:接続の時間切れとなるが、その場合約4分も待たされる。
    
【知りたい事】
・上記のような障害時、1ノードで約4分も待たされるのは長いので、設定で
    短く出来るのであれば短くしたい。

【検証】
    1 OSパラメータのtcp_time_wait_interval=240000(4分)になっていたので、
     ftpがconnect_timeoutになるのは、上位のTCPのタイマーに引っかかるのでは
         と思い、nddコマンドにて60000(1分)にしてinetdデーモンを、kill -HUPした。
         変更後、バーチャルIPが見えないHostに対しftpを行なったが、以前4分で
         ftp_connect:接続の時間切れとなる。

    2 /etc/inet/inetd.confの、ftp記述部分を下記のように-tオプションにて
         タイムアウトを設定し、inetdデーモンを、kill -HUPした。
         こちらも変更後、バーチャルIPが見えないHostに対しftpを行なったが、
         以前4分でftp_connect:接続の時間切れとなった。

    ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -t20 -l -d

※ 下記のURLを参考にさせて頂きましたが、FTPクライアントがFTP サーバに
        PORTコマンドを投げて応答なしで、データ用コネクションも張れない場合は
        どこの設定でクライアントはtimeoutを判断するのでしょうか?
        私の推測のようにTCPに依存するものなのでしょうか?

        http://x68000.q-e-d.net/~68user/net/ftp-1.html

No. 4216 # 68user 2005/08/02 (火) 13:49:52
>>4215 seki
> tcp_time_wait_interval=240000(4分)になっていたので、
tcp_time_wait_intrval は TIME_WAIT な時間を設定するものなので、
関係ありません。
    http://docs.sun.com/app/docs/doc/816-0607/6m735r5ga?a=view

> ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -t20 -l -d
タイムアウト設定をしたいのは ftp であり、ftpd ではないので
関係ありません。そもそもネットワーク障害や他ホストが down して
いるのであれば、ftpd まで行き着いていません。

今回設定したいのは、
    http://X68000.q-e-d.net/~68user/net/tcp-connect-1.html
における connect のタイムアウト時間と思われますが、OS の設定で
変更できるかどうかは知りません。ただし、普通は OS の設定は変更
しません。たとえば今後、
    - FTP 接続だけは 10秒でタイムアウトさせたい
    - それ以外のプログラムでは 4分待たせたい
というときにどうしようもなくなるからです。

対策としては、
    - ftp に -T [タイムアウト秒数] オプションを付ける (試していませんが)
    - ftp の前に ping してみる (タイムアウト秒数を指定)
    - 監視用プロセスをたて、一定時間反応がなければ ftp を kill する
てな感じでしょうか。

No. 4218 # seki [E-mail] 2005/08/02 (火) 16:31:10
>>4216 68user
> たとえば今後、
> - FTP 接続だけは 10秒でタイムアウトさせたい
> - それ以外のプログラムでは 4分待たせたい
> というときにどうしようもなくなるからです。

→ 誠に早急なご返答、及びご教示の程、ありがとうございます。
        上記の返答、ごもっともです。
        - ftp に -Tをつけるのは、一つの手だと思いますが、APLに手を
        入れる事なく設定変更で済ませれるのであれば済ませたいです。

        申し訳ございませんが、ftpのソースコードなどは開示されていないので
        しょうか??
        (4分でタイムアウトするという事は必ずどこかを見て判断しているはずですので
         ソースにじか書きしている可能性もある?かと思われるため確認したいです。)

No. 4219 # Netboy 2005/08/02 (火) 18:51:38
>>4218 seki
横からすみません.
ftpのポート21でconnectできるかチェックするPerlスクリプトを
書いてみました.試していただけますか?

use Socket;

$SIG{'ALRM'} = sub { close(SOCK); $sTimeout='(timeout)'; };

# ConnectTest(IPアドレス,ポート,タイムアウト秒数)

if (!&ConnectTest('192.168.x.x',21,5)){
    print "cannot make a ftp connection.\n";
    exit;
}

# 正常ならばftpコマンドを実行
system ('ftp hogehoge');

exit;

sub ConnectTest
{
    local($sIP,$nPort,$nTimeout)=@_;
    local($iaddr,$paddr,$flag,$protoTCP,$sTimeout);

    $iaddr = inet_aton($sIP) || die "no host: $sIP";
    $protoTCP = getprotobyname('tcp');

    $paddr = sockaddr_in($nPort, $iaddr);
    $flag=socket(SOCK, PF_INET, SOCK_STREAM, $protoTCP);

    if (!$flag){ goto J1_1; }

    $flag=0;$sTimeout='';

    eval {
        alarm($nTimeout);
        $flag=connect(SOCK, $paddr);
        alarm(0);
    };

    if (!$flag){ goto J1_1; }
    if ($sTimeout){ goto J1_1; }

    close (SOCK);
    return 1;
J1_1:
    close (SOCK);
    return 0;
}

No. 4220 # 68user 2005/08/02 (火) 21:19:51
>>4218 seki
> ftpのソースコードなどは開示されていないのでしょうか??
Solaris8 のソースは配られていたかどうかは忘れましたが、いずれにせよ
ソース中には 4分という記載はありません (見てませんが)。connect(2) の
タイムアウトを決めるのはカーネルの仕事です。

で、
    http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-3.html#ss3.5
によると、
    # ndd -set /dev/tcp tcp_ip_abort_cinterval 180000
で変更可能なようです。

> APLに手を入れる事なく設定変更で済ませれるのであれば済ませたいです
プログラムに手を入れるよりもカーネルの設定を変える方がよいというのは
間違った判断だと思います。

まぁ客や上司の意向とか、ソース触ったら契約がどうこうとか、世の中には
うっとうしいことがいろいろあるので別にいいですが。

>>4219 Netboy
ウチの環境では動きました。

No. 4221 # 68user 2005/08/03 (水) 23:28:20
usen-221x242x135x85.ap-US01.usen.ad.jp (221.242.135.85) の方、
    /~68user/net/sample/http-auth/secret.html
に 21分間で 25万回アクセスするのは、ぜひともやめていただきたい。

って言っても、どうせ見てないんだろうし、deny したところでおそらく動的に
IP アドレスを振ってるだろうし、こういう輩はどうしたらいいんですかねぇ。

No. 4222 # へにか [URL] 2005/08/06 (土) 03:07:46
>>4221 68user
いや、もう、それは管理部門に連絡するのが良いでしょう。
満足いく内容かどうかはともかく、大抵は何らかの返答はありますよ。

#釈迦に説法のような気がしてなりませんが。

No. 4223 # 68user 2005/08/06 (土) 04:18:05
>>4222 へにか
なるほど、そういうものですか。usen ならここらへんでしょうか。
    http://www.fttx.co.jp/jp/contact/abuse.html

ただ、マシンが落ちるなどの実害はなかったことと、usen の web によると
実名を書けだの、仲介しかしないだの、めんどくさそうなので今回は
放置します。

ちなみに「どうしたらいいのか」というのは技術的な解決方法はないですかねぇ、
という意味でした。たとえば一定時間に指定の閾値を超えた IP アドレスは deny
するような apache のモジュールがどこかにありそうですよね。

というわけで探したらありました。
    http://www.netnice.org/pukiwiki.php?%B4%FB%C2%B8%A4%CEApache%A5%C8%A5%E9%A5%D5%A5%A3%A5%C3%A5%AF%C0%A9%B8%E6%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB

まぁほんとにしつこくやってくるようなら usen ごと deny するので
別にいいんですけどね。

No. 4224 # へにか 2005/08/06 (土) 05:58:59
あぁ、技術的な話でしたか。
それに似た話は、某掲示板群で話題になってますね。
http://qb5.2ch.net/operate/kako/1113/11135/1113508190.html
http://qb5.2ch.net/test/read.cgi/operate/1113647422/
しつこいクローラー&過剰リロード対策についての議論です。ご参考までに。

因みに、他の業者に対しては本名を名乗ったことはありません(へにかのまま)。
usenも変な話で、被害をこうむったほうの名前は聞くけど、被害を出したほうの
名前は出さないっていうことですよね? その辺を突っついてみると、なんらか
の回答が出るかもしれません。・・・が、放置されるとの事ですので、補足意見
とさせてください。

No. 4225 # mmm 2005/08/08 (月) 22:27:24
"ネットワークプログラミングの基礎知識"等にある
サンプルプログラムのライセンスはどうなっているのでしょうか?

No. 4226 # 匿名 2005/08/09 (火) 01:42:54
>>4222 へにか
危ない
その輩は
server:os-ns01.usen.ad.jp
address:61.122.127.122
name:221x242x135x85.ap.221.ftth.ucom.ne.jp
address:221.242.135.85

私は
server:os-ns01.usen.ad.jp
address:61.122.127.122
name:*******
address:61.116.228.135
なんですけどサーバーが同じだと危ないのですかね?

No. 4227 # zsh 2005/08/09 (火) 08:05:37
>>4225 mmm
過去ログ読んでから質問した方がいいですよ。
ライセンスについては
>>4089 68user
にあります。

No. 4228 # りゅう 2005/08/09 (火) 16:14:15
すいません、質問させてください。

UNIX上で、ファイルをmac用にstuffit形式に圧縮できるツールを探しているのですが、
ありますでしょうか。

No. 4229 # しず 2005/08/09 (火) 16:48:11
素人ですが質問させてください。
solaris9 cにて開発しています。
クライアントサーバ間を常駐プロセス1:1(クライアント1、サーバ1プロセス)にて
TCP/IPソケット通信しようと考えています。
1接続毎にconnect/closeするのではなく、常にconnectionし続けようと考えています。
そこで、質問ですが、通信中にサーバ側がなんらかの理由により切断された場合、クライアント側は
connectからやり直す必要があるのでしょうか?
それともsendを行えば内部的にconnectを行って、sendしてくれるんでしょうか?
質問が下手ですみません。

No. 4230 # まつ 2005/08/09 (火) 20:29:19
環境はSunOS 5.8です。

------------------------
#!/bin/csh -fx
setenv LANG ja_JP.PCK
・・・
------------------------
というrootから起動されるshellスクリプトを実行すると
(あるバッチ処理管理ソフトを使って起動するとrootから起動されるのです)

setenv LANG ja_JP.PCK
Locale could not be set properly

というエラーになってしまうのですが、何故か分からず困っています。
助けて下さい。 m(_ _)m

telnetでuser01でログインしてsetenvを実行すると
LANG=ja_JP.PCK
となっていますが、上記スクリプトにsetenvを記述すると
LANGは表示されません。

スクリプトにsetenv LANG ja_JP.PCKを記述しないと
echo チェックリスト作成処理(/disk1/hoge/hoge01/sh/AAA001.csh) 開始
Unmatched `
というエラーになります。
telnetでuser01でログインして実行するとsetenv LANG ja_JP.PCKが
なくても正常終了します。

どうぞ宜しくお願い致します。

No. 4231 # へにか 2005/08/09 (火) 21:53:25
>>4226 匿名
> なんですけどサーバーが同じだと危ないのですかね?
う〜ん、僕には力不足で答えられないです。ところで危ないって、どういう局面を想定されていますか?

しかし、その輩、ftth.ucom.ne.jpって、FTTH! うらやましいなぁ。そんな贅沢な帯域があるんだったら、有効に使ってほしい今日この頃です。

No. 4232 # 68user 2005/08/09 (火) 23:45:17
>>4224 へにか
なるほど、そちらも参考にさせていただきます。

>>4226 匿名
> server:os-ns01.usen.ad.jp
というのは、あなたが使用している DNS サーバが os-ns01.usen.ad.jp
であることを示しているだけです。普通は、どの IP アドレス・FQDN に
ついて正引きや逆引きをしても、「server」の部分は変化しません。

>>4228 りゅう
シェアウェアっぽいですが、
    http://www.stuffit.com/unix/index.html
など。あと、
    http://www.asl.ee.meisei-u.ac.jp/kaken/stuffit.j.html
によると netatalk にも含まれているとか。

>>4229 しず
> connectからやり直す必要があるのでしょうか?
コネクションが切れた場合は、connect しなおす必要があります。

>>4230 まつ
よくわかりませんが、手元の Solaris8 でも同様の結果になりました。setenv が
呼ばれると、シェルは putenv(3) するだけではなく setlocale(3) あたりも呼ぶ
必要があるような気がしますが、Solaris8 の csh はそこの処理にバグがあるのでは
ないかと思います。

csh をやめて sh・tcsh・ksh などに切り替えるか、あるいは
    #!/bin/sh
    exec env LANG=ja_JP.PCK 実行したいスクリプト名
というような wrapper スクリプトをかませてはどうでしょうか。

No. 4233 # まつ 2005/08/10 (水) 00:29:48
>>4232 68user
他のサーバー(同じくSunOS5.8だったはずです)では同じように
rootから実行できているのです。何かが違うのでしょうね。。

両サーバーのrootの環境を比較するなりしてみます。
#サーバー管理者へ依頼する必要があるのですが・・・

社内の人より下記で逃げられるという指摘もありました
が、他サーバーで出来ているので腑に落ちません。
-----------------------------
unsetenv LC_ALL
setenv LANG ja_JP.PCK
setenv PATH .:$PATH

/usr/bin/env

set echocmd=/usr/bin/echo
$echocmd 'チェックリスト作成処理($0) 開始'
-----------------------------


それでも分からなければwrapperスクリプトをかませてみます。

他に何かありましたらご教示下さい。

No. 4234 # 68user 2005/08/10 (水) 04:49:13
>>4233 まつ
> が、他サーバーで出来ているので腑に落ちません。
想像ですが、OS インストール時に ja_JP.PCK を選択すると
うまく動くのかもしれません。

No. 4235 # zsh 2005/08/10 (水) 08:46:36
>>4233 まつ
問題のあるサーバだけLC_ALLが設定されていませんか?
localeコマンドの結果を比較してみてください。

どちらのサーバでも設定されているのであれば
導入されているロケールパッケージ(?)の差だと思います。

No. 4236 # まつ 2005/08/10 (水) 10:37:03
>>4235 zsh
お察しの通り、問題のあるサーバだけLC_ALLが設定されていました!

--動かないサーバー-----------
LANG=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=JA16SJIS
--問題ないサーバー-----------
LANG=ja_JP.PCK
LC_CTYPE="ja_JP.PCK"
LC_NUMERIC="ja_JP.PCK"
LC_TIME="ja_JP.PCK"
LC_COLLATE="ja_JP.PCK"
LC_MONETARY="ja_JP.PCK"
LC_MESSAGES="ja_JP.PCK"
LC_ALL=
-----------------------------

1、rootでLC_ALLが設定されているという事でしょうか?
2、問題ないサーバーと同じ環境にするには何処を直せば良いのでしょうか?
3、2がサーバー管理方針などで変更できない場合、C-Shellで
            unsetenv LC_ALL
            setenv LANG ja_JP.PCK
        とすれば良いのでしょうか?

宜しくお願い致します。

No. 4237 # しず 2005/08/10 (水) 11:05:30
>>4232 68user
>コネクションが切れた場合は、connect しなおす必要があります。
コレクションが切れているか否かの検知ですが、クライアントからsendを
行ったときのタイムアウトを検知したときが一般的でしょうか
(むしろこれしかない?)

宜しくお願いします。

No. 4238 # まつ 2005/08/10 (水) 11:28:44
>>4235 zsh
試しに下記を実行してみましたが、元に戻ってしまいました。。
echo内の日本語が文字化け?して「`」になっている為でしょうが
何故未だ日本語が表示できないのでしょうか?
問題ないサーバーではダブルコーテーションで囲まれてるのに
下記結果では囲まれてないのがダメなのでしょうか?
----------------------------------------------------
#!/usr/bin/csh -fx

locale
unsetenv LC_ALL
setenv LANG ja_JP.PCK
setenv LC_CTYPE ja_JP.PCK
setenv LC_NUMERIC ja_JP.PCK
setenv LC_TIME ja_JP.PCK
setenv LC_COLLATE ja_JP.PCK
setenv LC_MONETARY ja_JP.PCK
setenv LC_MESSAGES ja_JP.PCK
locale
echo "ロードエラーチェックリスト作成処理($0) 開始"
----------------------------------------------------
locale
LANG=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=JA16SJIS
unsetenv LC_ALL
setenv LANG ja_JP.PCK
setenv LC_CTYPE ja_JP.PCK
setenv LC_NUMERIC ja_JP.PCK
setenv LC_TIME ja_JP.PCK
setenv LC_COLLATE ja_JP.PCK
setenv LC_MONETARY ja_JP.PCK
setenv LC_MESSAGES ja_JP.PCK
locale
LANG=ja_JP.PCK
LC_CTYPE=ja_JP.PCK
LC_NUMERIC=ja_JP.PCK
LC_TIME=ja_JP.PCK
LC_COLLATE=ja_JP.PCK
LC_MONETARY=ja_JP.PCK
LC_MESSAGES=ja_JP.PCK
LC_ALL=
echo [hG[`FbNXg(/disk18/acua/acua01/sh/FNC07998.csh) Jn
不整合 - `
----------------------------------------------------

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

No. 4239 # 68user 2005/08/10 (水) 11:53:31
>>4238 まつ
実験してみましたが、うまくいかないサーバには ja_JP.PCK の
ロケールがインストールされていないようです。
>>4232 68user
で「csh のバグでは」と言いましたがこれは誤りで、csh だけが
真面目にエラーチェックしているような感じです。

動かないマシン (Solaris8) の /usr/lib/locale/ja_JP.PCK/:
    LC_MESSAGES/

動くマシン (Solaris2.6) の /usr/lib/locale/ja_JP.PCK/:
    LC_CTYPE/
    LC_MESSAGES/
    LC_TIME/
    ja_JP.PCK.so.1
    locale_description
    methods_ja_JP.PCK.so.1

そして ja_JP.PCK ロケールが含まれているマシンであっても、
    #!/bin/csh
    setenv LANG ja_JP.PCK
    echo "ロードエラーチェックリスト作成処理($0) 開始"
このスクリプトは動作しませんでした。おそらく、ja_JP.PCK にした
時点では、既にスクリプトの字句解析は終了しているからだろうと思います。

対策案は 3つ。

案1.
    - ja_JP.PCK ロケールをインストールする。インストール方法は知りませんが、
        以前他のマシンから /usr/lib/locale/ja_JP.PCK/ をぶっこ抜いてきたことが
        あったっけ。
    - さらに wrapper スクリプトを作る

案2.
    Shift_JIS の「チ」の 2バイト目が ` であることが直接の原因なわけで、
          echo 'ロードエラーチェックリスト作成処理('$0') 開始'
    などと '' で囲んで ` を解釈させないようにする。

案3.
    一番いいのは、スクリプトを EUC-JP に変えて、ロケールを混在
    させないこと。

あと、
> LC_ALL=JA16SJIS
というロケールは存在しないので、おそらく無効なロケール扱いされて
いるでしょう。JA16SJIS って Oracle 的なロケール表記ですから。

LANG と LC_* の関係は以下の URL をどうぞ。
    http://www.jp.freebsd.org/QandA/HTML/2199.html
    http://www.jp.freebsd.org/QandA/HTML/2200.html

No. 4240 # 68user 2005/08/10 (水) 12:32:18
>>4237 しず
send はローカルの mbuf にデータをコピーしたら正常終了と
みなすので、エラーになりません。

recv でエラーになるか、次回の send で EPIPE が発生するかの
いずれかです。

No. 4241 # まつ 2005/08/10 (水) 13:47:41
>>4239 68user
/usr/lib/locale/ja_JP.PCK/:を両サーバーで比較しましたが同じでした。

そして上手く行くサーバーでは
        #!/bin/csh
        setenv LANG ja_JP.PCK
        echo "ロードエラーチェックリスト作成処理($0) 開始"
も動作しました。

LANG と LC_* の関係、有り難うございます。勉強になります。
#!/bin/csh -fx
locale
unsetenv LC_ALL
setenv LC_ALL ja_JP.PCK
setenv LANG ja_JP.PCK
unsetenv LC_ALL
locale
env
として、うまくいくサーバーと同じlocaleに出来ましたがそれでも不整合になります。

env実行結果
--上手く行くサーバー-----------------------------------------
HOME=/export/home/adm
HZ=100
LANG=ja_JP.PCK
LOGNAME=adm
MAIL=/var/mail/adm
PATH=/opt/oracle/product/8.1.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:
PS1=#
PWD=/opt/netos/bin
SHELL=/bin/csh
TERM=vt100
TZ=Japan
USER=adm
_INIT_NET_STRATEGY=none
_INIT_PREV_LEVEL=S
_INIT_RUN_LEVEL=3
_INIT_RUN_NPREV=0
_INIT_UTS_ISA=sparc
_INIT_UTS_MACHINE=sun4u
_INIT_UTS_NODENAME=isv1dm10
_INIT_UTS_PLATFORM=SUNW,Ultra-Enterprise-10000
_INIT_UTS_RELEASE=5.8
_INIT_UTS_SYSNAME=SunOS
_INIT_UTS_VERSION=Generic_108528-16
--上手く行かないサーバー-----------------------------------------
HOME=/
HZ=100
LOGNAME=root
PATH=/usr/sbin:/usr/bin:/opt/EMCpower/bin:/etc:/usr/ccs/bin:/usr/local/bin
SHELL=/sbin/sh
TERM=vt100
TZ=Japan
PWD=/opt/netos5/bin
USER=root
LANG=ja_JP.PCK
-----------------------------------------------------------------
この辺の環境が違うのがダメなのでしょうか?

案1はja_JP.PCK ロケールはインストールされており上記でLANGの設定も
出来たので、案からは外れたと思います。

案2ですが、echoをダブルコーテーションで囲むのとシングルコーテーションで
囲むのでは解釈が異なるのですね??  知りませんでした。。

案3ですが、うまくいくサーバーではShift_JISで動作しているので
腑に落ちません。。envの結果に差があるのが原因でしょうか??

文字コードって奥が深いというか複雑というか厄介ですね。。(^^;

No. 4242 # 68user 2005/08/10 (水) 14:07:10
>>4241 まつ
> /usr/lib/locale/ja_JP.PCK/:を両サーバーで比較しましたが同じでした。
そうですか、謎ですね。

> そして上手く行くサーバーでは
>  #!/bin/csh
>  setenv LANG ja_JP.PCK
>  echo "ロードエラーチェックリスト作成処理($0) 開始"
> も動作しました。
それは最初から LC_CTYPE が ja_JP.PCK になっているからではないですか?
LANG・LC_* を全部クリアして、このスクリプトが動きますか? うちの ja_JP.PCK
ロケールがインストールされている Solaris2.6 ではエラーになりました。

> 案3ですが、うまくいくサーバーではShift_JISで動作しているので
> 腑に落ちません。。envの結果に差があるのが原因でしょうか??
ロケールを統一ってのは、例えばログのエンコーディングがばらばら
だったりすると grep するにも面倒でしょ、というレベルの話です。

うまくいかないサーバで、
    #!/bin/csh -f
    echo "ロードエラーチェックリスト作成処理($0) 開始"
のスクリプトを root で
    % env LANG=ja_JP.PCK [スクリプト名]
とすると動くのですよね?

あと、うまくいかないサーバで、
    - root で実行するとエラー
    - user01 で実行するとうまく動く
ということですよね?

root と user01 のログイン後の env 結果を比較してみてはどうですか?

No. 4243 # まつ 2005/08/10 (水) 14:39:48
>>4242 68user
上手く行くサーバーで
----------------
unsetenv LC_ALL
unsetenv LANG
locale
env
echo "ロードエラーチェックリスト作成処理($0) 開始"
----------------
としたら
-----------------------------------------
LANG=
LC_CTYPE="C"
・・・
_INIT_UTS_VERSION=Generic_108528-16
(/data/keisu/ffile/shell/Data_Unqget.sh)
-----------------------------------------
となりました。。二バイト文字が無視されている??

> うまくいかないサーバで、
> #!/bin/csh -f
> echo "ロードエラーチェックリスト作成処理($0) 開始"
> のスクリプトを root で
> % env LANG=ja_JP.PCK [スクリプト名]
> とすると動くのですよね?
私にはrootで実行する権限がなく、あるバッチ管理ツール経由で
起動させているのですが、そのツールに
env LANG=ja_JP.PCK /disk01/hoge/hoge.csh
と記述して起動させると
stat: No such file or directory
となってしまいました。。

> あと、うまくいかないサーバで、
> - root で実行するとエラー
> - user01 で実行するとうまく動く
> ということですよね?
そうです。
バッチ管理ツールはそのツールプロセスを起動させた時点の
起動したユーザ環境が引き継がれるのですが、rootでその
ツールを起動させています。
telnetでuser01でログインして実行すると上手く動くのです。

> root と user01 のログイン後の env 結果を比較してみてはどうですか?
以下のとおりです。
------------root-------------------------------------------------
#スクリプトにenvを書いてツールから実行させて吐き出した結果です
HOME=/
  HZ=100
  LOGNAME=root
  PATH=/usr/sbin:/usr/bin:/opt/EMCpower/bin:/etc:/usr/ccs/bin:/usr/local/bin
  SHELL=/sbin/sh
  TERM=vt100
  TZ=Japan
  PWD=/opt/netos5/bin
  USER=root
  LANG=ja_JP.PCK
------------user01-------------------------------------------------
HOME=/export/home/user01
PATH=/opt/ora8i/app/oracle/product/8.1.7/bin:/usr/bin:/usr/ccs/bin:/usr/ucb:/bin:/usr/bin:/usr/ucb:
/etc:.
LOGNAME=user01
HZ=100
TERM=vt100
TZ=Japan
SHELL=/bin/csh
MAIL=/var/mail/user01
LANG=ja_JP.PCK
_INIT_NET_STRATEGY=none
_INIT_PREV_LEVEL=S
_INIT_RUN_LEVEL=3
_INIT_RUN_NPREV=0
_INIT_UTS_ISA=sparc
_INIT_UTS_MACHINE=sun4u
_INIT_UTS_NODENAME=atras01
_INIT_UTS_PLATFORM=SUNW,Sun-Fire-480R
_INIT_UTS_RELEASE=5.8
_INIT_UTS_SYSNAME=SunOS
_INIT_UTS_VERSION=Generic_108528-22
PWD=/export/home/user01
USER=user02
ORACLE_BASE=/opt/ora8i/app/oracle
ORACLE_HOME=/opt/ora8i/app/oracle/product/8.1.7
ORACLE_SID=SID_A
NLS_LANG=Japanese_Japan.JA16SJIS
ORA_NLS33=/opt/ora8i/app/oracle/product/8.1.7/ocommon/nls/admin/data
LD_LIBRARY_PATH=/opt/ora8i/app/oracle/product/8.1.7/lib
-----------------------------------------------------------------
何が悪いのか分かりますか??

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

No. 4260 # みのさん 2005/08/16 (火) 01:52:27
>>4259 68user
お礼だけで、確認結果を報告せず申し訳ありません。

> とするのが一般的。しかし手抜きするなら以下のような方法も。
> % find . -type f -ls | grep "`date '+%b %d'`"
で試してみました。
確かに、本日作成のファイルが表示されました。
date '+%b %d'でgrepをしているため、1年前の同じ日付のものが表示
されます。

No. 4261 # 68user 2005/08/16 (火) 02:32:19
>>4260 みのさん
> date '+%b %d'でgrepをしているため、1年前の同じ日付のものが表示
> されます。
なるほど。
    本日の分は Aug 16 02:16
    昨年以前は Aug 16 2004
などと表示されるので、
    % find . -type f -ls | grep "`date '+%b %d'` [0-9][0-9]:[0-9][0-9]"
とかですかね。

とはいえ所詮は手抜きな方法なのでおすすめはしません。

No. 4262 # みのさん 2005/08/17 (水) 10:35:25
>>4261 68user

>とはいえ所詮は手抜きな方法なのでおすすめはしません。
> % find . -type f -ls | grep "`date '+%b %d'` [0-9][0-9]:[0-9][0-9]"
>とかですかね。

手抜きとは言っても期待した結果は得られました。

No. 4263 # まつ 2005/08/18 (木) 14:32:11
今日から仕事復帰しました。m(_ _)m

>>4250 68user

>unsetenv LC_ALL には意味がないので、
> env LC_ALL= LANG=ja_JP.PCK ...
> とすれば直ると思います。

確認させて下さい。
具体的には、下記のようにすれば良いという事でしょうか?

-----wrapper.sh------------------
#!/bin/sh -fx
exec env LC_ALL= LANG=ja_JP.PCK /disk01/hoge/hoge01/sh/FNC0123.csh
-----FNC0123.csh------------------
#!/usr/bin/csh
#コメントアウトunsetenv LC_ALL
・・・
----------------------------------

以上、宜しくお願い致します。

No. 4264 # 68user 2005/08/19 (金) 15:45:20
>>4263 まつ
> 具体的には、下記のようにすれば良いという事でしょうか?
その通りです。

No. 4265 # まつ 2005/08/22 (月) 15:10:13
こんにちわ。19日はお休みを頂いておりました。
>>4264 68user
御礼が遅くなりました。
有り難う御座いました。m(_ _)m

No. 4266 # 2005/09/03 (土) 15:56:14
リダイレクションの操作について教えて下さい。
環境は、Solaris8、シェルは、shです。

file1.txtファイルは存在。
file2.txtファイルは存在しません。
の状況で、lsの結果をリダイレクションを使ってファイルに出力
しています。

ls -l text1.txt text2.txt > kekka.txt 2>&1
標準出力と標準エラーを、kekka.txtファイルに出力。

ls -l text1.txt text2.txt 2>&1 > kekka.txt
標準出力のみ、kekka.txtに出力。

ls -l text1.txt text2.txt 2>&1 2> kekka.txt
標準エラーのみ、kekka.txtに出力。


ls -l text1.txt text2.txt 2>&1 >&kekka.txt
標準出力と標準エラーを、kekka.txtファイルに出力。
何故なのでしょうか。

ls -l file1.txt file2.txt 1>&2 2>&kekkat.xt
sh kekka.txt: ambiguous redirect
何故なのでしょうか。

No. 4267 # つよし 2005/09/03 (土) 16:00:54
>>4266

No.4266の書込み内容が間違っていました。名前も中途半端です。
訂正も含め再書込みします。

リダイレクションの操作について教えて下さい。
環境は、Solaris8、シェルは、shです。

file1.txtファイルは存在。
file2.txtファイルは存在しません。
の状況で、lsの結果をリダイレクションを使ってファイルに出力
しています。

ls -l file1.txt file2.txt > kekka.txt 2>&1
標準出力と標準エラーを、kekka.txtファイルに出力。

ls -l file1.txt file2.txt 2>&1 > kekka.txt
標準出力のみ、kekka.txtに出力。

ls -l file1.txt file2.txt 2>&1 2> kekka.txt
標準エラーのみ、kekka.txtに出力。


ls -l file1.txt file2.txt 2>&1 >&kekka.txt
標準出力と標準エラーを、kekka.txtファイルに出力。
何故なのでしょうか。

ls -l file1.txt file2.txt 1>&2 2>&kekkat.xt
sh kekka.txt: ambiguous redirect
何故なのでしょうか。

No. 4268 # とおりすがり 2005/09/03 (土) 16:49:30
便利なページありがとうございます。

http://x68000.q-e-d.net/~68user/net/http-auth-2.html

> 「A1のMD5値 + nonce値 + ":" + nc値 + ":" cnonce値 + ":" + qop値 + A2のMD5値」の MD5 値
ですが、
正しくは、
「A1のMD5値 + ":" + nonce値 + ":" + nc値 + ":" cnonce値 + ":" + qop値 + ":" + A2のMD5値」の MD5 値
だと思います。

No. 4269 # 68user 2005/09/03 (土) 17:47:56
>>4267 つよし
とりあえずこれを読んでください。
    http://X68000.q-e-d.net/~68user/unix/pickup?%A5%EA%A5%C0%A5%A4%A5%EC%A5%AF%A5%C8

以下、手元に bash しかないため、sh では試していません。
間違いがあれば補足願います>Solaris な方

> ls -l file1.txt file2.txt 2>&1 >&kekka.txt
> 標準出力と標準エラーを、kekka.txtファイルに出力。
> 何故なのでしょうか。
そもそもこれは冗長です。
    >&kekka.txt
だけで標準出力と標準エラー出力が kekka.txt にリダイレクトされます。
sh において (csh も同じですが)、
    >&ファイル名
は、標準出力と標準エラー出力をまとめてファイルにリダイレクトするもの
だからです。

> ls -l file1.txt file2.txt 1>&2 2>&kekkat.xt
> sh kekka.txt: ambiguous redirect
> 何故なのでしょうか。
ファイルへのリダイレクトは「>&」ではなく「>」を使うべきだからです。

sh のリダイレクトには以下の 2パターンがあると考えるとよいでしょう。
    1. >ファイル名
    2. [数字]>&[数字]

さらにタイプ量を減らすため、
    3. >&ファイル名 (>ファイル名 2>&1 と同じ)
という syntax sugar があります。よって、

    [数字]>&ファイル名

はおかしいです。とはいえ 1>&ファイル名 は通ってしまいますが。

>>4268 とおりすがり
> 正しくは、
> 「A1のMD5値 + ":" + nonce値 + ":" + nc値 + ":" cnonce値 + ":" + qop値 + ":" + A2のMD5値」の MD5 値
ごもっともであります。遅くとも明日までには修正します。

No. 4270 # 68user 2005/09/04 (日) 06:36:46
>>4268 とおりすがり
修正いたしました。ご指摘ありがとうございました。

http://X68000.q-e-d.net/~68user/net/http-auth-2.html
http://X68000.q-e-d.net/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/http-auth-2.html

No. 4271 # つよし 2005/09/04 (日) 11:09:38
>>4267 つよし

>りあえずこれを読んでください。
>http://X68000.q-e-d.net/~68user/unix/pickup?%A5%EA%A5%C0%A5%A4%A5%EC%A5%AF%A5%C8
参考になります。
特に「2>&1」の説明については、「2 の出力先を 1 にマージする」で覚えと説明している
本もありました。

>&kekka.txt
については、冗長なんですね。
本来なら、エラーになるはずなの実際には動いているので、おかしいとは
思っていました。
使わない方がよさそうですね。

No. 4272 # 68user 2005/09/04 (日) 13:14:05
>>4271 つよし
> 本来なら、エラーになるはずなの実際には動いているので
冗長ですが、エラーではありません。
      2>&1 >&kekka.txt

      2>&1 >kekka.txt 2>&1
と同じですが、ひとつのディスクリプタについての複製を複数回行っても
別にエラーにはなりません。

この例では最初の 2>&1 で 2 の出力先が stdout になりますが、後の
2>&1 で 2 の出力先が kekka.txt になり、意味がないだけです。

No. 4274 # つよし 2005/09/05 (月) 21:33:59
>>4272 68user

解説、アドバイスありがとうございます。

No. 4275 # ひで 2005/09/06 (火) 12:43:52
初めて質問させて頂きます。
Solaris9のサーバからmailxコマンド(sendmailを設定済み)を使用してメールサーバ経由で
クライアントにE-MAILを送信しようとしています。

問題が一つありまして、クライアントのOUTLOOKで見たとき件名が文字化け
してしまいます。

色々調べたところ、sendmailでは文字化けしてしまうのはどうしようもないと
聞きました。

Solaris9でメールを送信できるソフトウェアで件名が文字化けしないようなもの
を知っていたら教えて頂けませんか?
(メールサーバ側クライアントのメールの設定は変更できません)

No. 4276 # 68user 2005/09/06 (火) 23:21:58
>>4275 ひで
普通はプログラム側で MIME エンコードして、sendmail に渡します。
試していませんが、mailx に渡しても多分うまくいくでしょう。

詳しくは
    http://X68000.q-e-d.net/~68user/webcgi/mail-1.html
    http://X68000.q-e-d.net/~68user/webcgi/mail-2.html
を読んでください。

No. 4277 # ろく [E-mail] 2005/09/08 (木) 11:08:08
UNIX 上のPDFファイルをftp転送してPC上で読み込みたいのですが、
転送後にファイルが壊れているとのことで読み込めません。
何かいい方法はありますでしょうか

No. 4278 # zsh 2005/09/08 (木) 13:04:24
>>4277 ろく
バイナリモードで転送してますか?

No. 4279 # ひで 2005/09/08 (木) 17:47:12
>>4276 # 68user

回答有難うございます。
試してみます。

No. 4280 # くま 2005/09/09 (金) 01:17:16
Solaris8i、shシェルで以下のような処理をしようとしています。
番号が同じもの同士の値を足し算してその和を求めています。

ファイルフォーマット
番号,値
001,10
001,20
001,30
002,5
003,15
003,20
004,100

結果
001,60
002,5
003,35
004,100

としたいのですが、どうすればよいですか。

No. 4281 # zsh 2005/09/09 (金) 13:45:10
>>4280 くま
Solarisi・・・って部分は置いといて。

shというかnawkですが、以下のようにやればできます。
(awkでは動きません。)
------------------------
$ nawk -F, '
        /^[0-9]+,[0-9]+$/ {
                var[$1] = $2;
        } END {
                for (i=0; i<=999; ++i) {
                        j = sprintf("%03d",i);
                        if (j in var) print j "," var[j];
                }
        }' data.txt
------------------------

No. 4282 # zsh 2005/09/09 (金) 17:58:45
>>4281 zsh
>Solarisi・・・って部分は置いといて。
間違えた・・・Solaris8iだ・・・

No. 4283 # nagadomi [E-mail] 2005/09/09 (金) 22:41:30
はじめまして。ネットワークプログラミングのページを参考にさせてもらっています。
で、以下の部分、
>>DNS クライアントを作ってみよう (3)
>リソースデータは「&Sorry, no version string is available」と表示されるが、
>dig や nslookup は「Sorry, no version string is available」となります (& がない)。
>先頭の & を削るような規則があるようだが、それが何なのかはわからなかった。

これ、'&'=38で、リソースのlengthみたいです。
きちんとした資料では、まだ見つけられていないのですが、
djbdnsのソースコード(dns_txt.c)上では、ドメイン名と同じように、
[length][data][length][data]と見ているようです。
リソースをいくつかのブロック(例えばライン毎など)に分けているのかなーと。

んん。標準な資料を探し中です。

No. 4284 # nagadomi [E-mail] 2005/09/09 (金) 22:44:42
>>4280 くま
Solaris8iは手元にないので試していないですが、shで。

---------------------------
#!/bin/sh

# デリミタを[,]に
IFS=,

# キーのリスト
list=""

# 計算
while read key value; do
                eval "if test -z \$array$key;then array$key=0; fi"
                eval \array$key=`eval "expr \\$array\$key + \$value"`
                list=$list,$key
done < data.txt

# 重複したキーを削除する
clone=`echo "$list" | sed 's/^,//'`
for key in $clone; do
                list=`echo "$list" | sed "s/$key//g" | sed 's/,[,]*/,/g'`
                list=$list,$key
done

# 表示
list=`echo "$list" | sed 's/^,//'`
list=`echo "$list" | sed 's/,$//'`

for key in $list; do
                echo -n $key,
                eval echo \$array$key
done
---------------------------
$ sh test.sh
001,60
002,5
003,35
004,100
---------------------------

効率悪そうだ..。

No. 4285 # シャチ 2005/09/10 (土) 10:00:34
>>4280 くま
以下ので出来ると思います。

----------------------------------
#!/bin/sh

nawk -F"," '
        BEGIN {
        }
function syukei() {
        total=0+0;
        no=$1;

        while (NF>0) {
                if (no == $1) {
                        total = total + $2;
                } else {
                        printf("%03d:%d\n",no,total);
                        no=$1;
                        total=$2;
                }
                getline;
        }
        printf("%03d:%d\n",no,total);
}
{
        if (NF == 0) next ;
        syukei() ;
}' file.txt

exit 0

No. 4286 # nagadomi 2005/09/10 (土) 22:58:12
続々と投稿されているので投稿してみます。

>>4280 くま
awkなら、
$ nawk -F, '{v[$1]+=$2;}END{for(k in v) print k","v[k]}' data.txt | sort
とできると思います。
/+ data.txt -> データファイル +/

No. 4287 # シャチ 2005/09/11 (日) 15:03:55
>>4286 nagadomi

nagadomiさんのコード凄いですね。
1行で実現してしまうなんて。
自分も、1行で実現できないかと試みてはみたのですが、良い案が浮かび
ませんでした。

向学として教えていただきたいのですですが、
番号の比較、判断していませんが、何故、上手く出来ているのですか。

>'{v[$1]+=$2;}END{for(k in v) print k","v[k]}'
宜しくお願いします。

No. 4288 # zsh 2005/09/11 (日) 20:20:12
>>4286 nagadomi
うわー、awkってforでその表記できるんだっけー。
すっかり忘れてました。
最近awk触っていなかったとは言え、恥ずかしい・・・

>>4287 シャチ
>for(k in v)
は、配列vの値を一つ一つ変数kに代入してループするという意味です。

No. 4289 # zsh 2005/09/11 (日) 23:44:55
>>4288 zsh
×配列vの値を一つ一つ変数kに代入してループする
○配列vの添字を一つ一つ変数kに代入してループする

No. 4290 # nagadomi 2005/09/12 (月) 03:38:59
>>4287 シャチ
zshのおっしゃるとおりです。
Perlでいうforeach的な使い方です。

>>4288 zsh
awkは、1年ほど前に1日(プログラム一個..)使ったことがあるだけだったので、
実はリファレンスをちょっと見ました。
そこでforeachあるじゃんと..。知らない分、確認するのでうまくいった感じですかね..。

zshさんのコードは、ソートを考えて、あのような書き方をしているのかと思っていました。
私は普段、こういうのにはPerlを使っています。

No. 4291 # シャチ 2005/09/12 (月) 11:55:17
>>4288 zsh

番号の比較、判断していませんが、前後が同じかどうかの判断は
どこでしているのですか。
>{v[$1]+=$2;}
で判断しているのですか。
お願いします。

>>4290 nagadomi
Perlを使うのが便利なのですか。
Perlは、人が作ったのをメンテナンスするため1日調べたのみです。

No. 4292 # シャチ 2005/09/12 (月) 13:52:41
>>4288 zsh

配列vの添え字が、番号なんですね。
だから、番号の配列要素に割り当てられた値が使用できるから
番号の比較、チェックが不要なんですね。

添え字には、数値しか使用できなと思っていました。
文字列も使えるんですね。

No. 4293 # 68user 2005/09/13 (火) 00:28:29
>>4283 nagadomi
なるほど、length ですか。RFC をあさってみましたが、まだ見つけられません。
発見したらぜひ教えてください。

関係あるかな? と思いつつ、まだちゃんと読んでいない資料:
    http://www.cs.utah.edu/~danderse/adns/arch.html
    http://www.zeroconf.org/Rendezvous/txtrecords.html

No. 4294 # hagu 2005/09/16 (金) 02:32:13
Solaris8で、Bシェル(sh)で以下のことを行いたいのですが、
良い方法を教えてください。

2つのファイルの中身を比較し、その結果を表示したいのです。
--- file1.txt -----
hanako.sato
jiro.yamamoto
taro.yamada
taro-1.yamada
tsuyoshi.saito


--- file1.txt -----
jiro.yamamoto
taro-1.yamada
taro-2.yamada
gou.yamashita

結果
file1 Only, hanako.sato
match,jiro.yamamoto
file1 Only,taro.yamada
match,taro-1.yamada
file1 Only,tsuyoshi.saito
file2 Only,taro-2.yamada
file2 Only,gou.yamashita
と出力したいのです。

お願いします。

No. 4295 # 68user 2005/09/16 (金) 03:18:00
>>4294 hagu
案1. file1.txt を while で 1行ずつ読み込み、読み込んだ行が
          file2.txt に含まれるかを grep で調べる。
案2. file1.txt と file2.txt をそれぞれ sort し、diff をとって、
          行頭が < か、> かを調べる。重複する行は…どうしましょうねぇ。
案3. perl でハッシュに突っ込む。3行くらいで書けそうな気がします。

No. 4296 # hagu 2005/09/16 (金) 08:40:58
>> 4295

perl使用したことありません。
書くとしたらどうなりますか。

案1ですと、file1.txtで調べたあと、file2.txtのみで存在する物も調べるので
同様の処理が必要になります。重複する行が2回でることになります。

No. 4297 # 68user 2005/09/16 (金) 10:06:43
>>4296 hagu
Perl クックブック VOLUME 1 のレシピ 4.8・4.9 あたりを立ち読みして、
なんとかなりそうなら手を出してみるとよいでしょう。

> 重複する行が2回でることになります。
file2.txt を while で 1行ずつ読み込み、読み込んだ行が file1.txt に
含まれていれば何も表示しない、でいいのでは。

> 案2. file1.txt と file2.txt をそれぞれ sort し、diff をとって、
> 行頭が < か、> かを調べる。重複する行は…どうしましょうねぇ。
GNU diff があるなら (unified diff を出力できる diff があるなら)、
    % diff -u -U 10000 file1.txt file2.txt
として (10000 はファイルの行数を超える数)、
    ・行頭が - なら file1.txt のみ
    ・行頭が + なら file2.txt のみ
    ・行頭がスペースなら重複行
ですかね。

No. 4298 # シャチ 2005/09/17 (土) 11:00:02
>>4294 hagu

1.file1.txtとfile2.txtを辞書順にソートする。
2.diffコマンドで、file1.txtとfile2.txtの差異を表示する。
diffコマンドの出力結果の見方は、ご存じですよね。
">"は、右側に指定したファイル内に差異があることを示す。
"<"は、左側に指定たファイルにある差異があることを示す。

3.grepとかcutを使用して見やすいように編集。
4.file1.txtかfile2.txtをキーにして、grepで存在する文字列だけを抽出。

で、出来ると思います。

No. 4299 # has 2005/09/20 (火) 23:20:36
>>4294 hagu
動作未確認ですが、こういうのはダメですかね。

sort file1 | uniq > file1-2
sort file2 | uniq > file2-2
comm -23 file1-2 file2-2 | sed 's/^/file1 Only,/'
comm -13 file1-2 file2-2 | sed 's/^/file2 Only,/'
comm -12 file1-2 file2-2 | sed 's/^/common,/'

順序よく並んでしまいますが。

No. 4300 # hagu 2005/09/21 (水) 23:45:22
>> 4299
ありがとうございます。
確認してみます。

No. 4301 # hagu 2005/09/22 (木) 09:55:59
>>4299 has

ありがとうございます。
期待していた結果が得られました。

commというコマンドがあるのですね。
知りませんでした。
勉強になりました。

No. 4302 # tana 2005/10/01 (土) 17:56:09
突然すみません。私は、いま卒業研究で動画像を処理しようとしてるものです。bmpファイルからppmやpgmへの一括変換はできたのですが、それらが生(raw)なので、つまりP6なので処理に困ってます。P3にしたいのですが大量のPPM、PGMをまとめてASCIIに変換することは可能でしょうか?よろしければ教えていただけると助かります。

No. 4303 # 68user 2005/10/01 (土) 19:00:45
>>4302 tana
試してませんが、ppmtogif して giftoppm で戻すとか。

No. 4304 # tana 2005/10/01 (土) 22:40:59
giftoppmって一度に多数のファイルを変換できますか?

No. 4305 # 68user 2005/10/02 (日) 15:35:18
>>4304 tana
知りませんが、もしできないとしても
      for i in *.ppm; do ppmtogif < $i | giftoppm > out/$i; done
とか、
      ls *.gif | sed 's/\(.*\)/ppmtogif < \1 | gitoppm > out\/\1/' | sh
とか。

拡張子は適当に変更するということで。

No. 4306 # 68user 2005/10/02 (日) 15:37:52
blog なるものを始めてみました。
    http://68user.blog27.fc2.com/

入力が非常に面倒なのですが (HTML 手打ちと変わらない)、世の人たちは
使いこなしているんですかねぇ…。

No. 4307 # へにか [URL] 2005/10/03 (月) 06:52:49
日記を書く習慣の無い僕にとっては、blogを使う利点が未だに理解できないです。
もし、68userさんの視点でその利点を見出せたら、是非とも教えていただきたく、
宜しくお願いいたします。

追伸
FreeBSDでの活動は、今でもされているのですか?

No. 4308 # 68user 2005/10/03 (月) 15:43:22
>>4307 へにか
技術的なことは、最終的に web にまとめたいと思っています。しかしそれを
行うにはある程度の時間と労力がかかります。よって、とりあえず殴り書きを
するネタ帳として blog を活用できないかと考えました。

また、
    http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=4061
    http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=3774
のような、ひとつのコンテンツとしてまとめづらいメモを書く場所として
適切ではないだろうか、と思っています。

それと、コメントやトラックバックという仕組みがあるため、web よりは
フィードバックが得られるのではないかと。


しかし、perl+DBI のネタを書いてみてわかったのですが、わたしは完璧主義者
なので、結局はエディタで下書き・推敲しないと気がすまないようです。あまり
blog 向きではないのかもしれません。

あとこれは愚痴ですが、入力が非常に面倒です。まず、WRAP="OFF" 属性が付いて
いない TEXTAREA 要素の相手をすることが苦痛です。

また、ソースを張る際に <PRE>〜</PRE> で囲んでみましたが、行間に変な間が
空いてしまい、結局スペースを &nbsp; に置換して張っていたりします。
「blog は更新が簡単」と世の人は言いますが、fc2 に限れば嘘です。

> FreeBSDでの活動は、今でもされているのですか?
最近はしていませんが、するべき立場にあります。すべてはモチベーションの
問題です。

No. 4309 # へにか [URL] 2005/10/03 (月) 18:58:36
>>4308 68user
なるほど。コメントがつけられる掲示板のような使い方+トラックバックですね。
コメント:誰でも簡単に書きやすい。
トラックバック:細かい指摘事項が伝わりやすい。
ってところでしょうか。仕組みとしては、やりたいことに一番近そうに見えますが、
>「blog は更新が簡単」と世の人は言いますが、fc2 に限れば嘘です。
恐らく、今流行っているタイプのblogの使用目的に合致していない、と思います。
・・・と言いつつ、実はblogを理解して無いので、間違った事を言っているかもしれませんが。

>すべてはモチベーションの問題です
それはいえるかもしれませんね。元同僚は、とある部分のソースを書くという
立場にいるそうですが、結構(手続きが?)大変だ、といってましたし。
自分の時間がとれて、収入に余裕があって、FreeBSDに絶対に貢献したいという
意思が無ければ、なかなか腰が上がらないのだと、勝手ながら推測しております。

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

No. 4310 # UNIX初心者 2005/10/06 (木) 00:40:29
突然ですみません、UNIX初心者です。
UNIXにて以下の様な事がしたいのですが、よい方法があれば教えて下さい。
随時追加されるあるファイル(aaa.txt)の内容を行単位ででCプログラムで読込みたい。
条件)
1.aaa.txtは行単位に随時追加される。
2.Cプログラムに渡すのはある文字が含まれる行のみ。

以下の様なことを試したのですが、うまくいきませんでした。
tail -f aaa.txt | grep ABC | Cプログラム
※Cプログラムは今の所、標準入力(gets)から読み込むだけのプログラムです。

No. 4311 # 68user 2005/10/06 (木) 00:57:33
>>4309 へにか
> なるほど。コメントがつけられる掲示板のような使い方+トラックバックですね。
そうですね。ただ、コメントやトラックバックより、思いついたことを
すぐに書くための場所、という方がわたしにとっては重要かなと思っています。

> 恐らく、今流行っているタイプのblogの使用目的に合致していない、と思います。
いや、ただインタフェースがイマイチなだけだと思います。空白を &nbsp; に
変換してくれればそれで解決する話ですから。

>>4310 UNIX初心者
こちらを。
http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=2800

No. 4312 # UNIX初心者 2005/10/06 (木) 23:11:25
>tail -f log | perl -ne '$|=1;print if m/foo/' >> log2
で試してみたのですが、perlがインストールされていない為、エラーとなってしまいました。
今回は急ぐので、プログラムで対応してしまいました。
また、利用させて下さい、ありがとうございました。

No. 4313 # 68user 2005/10/07 (金) 02:17:15
>>4312 UNIX初心者
解決したとのことなので返信不要ですが、perl がないなら
    % tail -f aaa.txt | awk '/ABC/{print;system("")}' | Cプログラム
ですかね。FreeBSD 5.2.1-RELEASE ではうまくいきました。

No. 4314 # hagu 2005/10/15 (土) 19:06:52
Solaris8のBシェルで、CSV形式のデータのソートを行っています。
数字順にソートしたいのですが、ソート対象の列が半角英数のため
数字順になりません。うまい方法はないでしょうか。
英字が先頭にある場合は、英字を取り除いて数字順にしたいのです。
うまい方法はないでしょうか。

sortコマンドだけでは、だめでした。

--データ
山本 こうたろう,企画,100
山下 大介,企画,A101
山田 太郎,営業,80
山田 花子,営業,A92
山田 一郎,営業,A82
鈴木 一郎,販売,85
鈴木 一郎,海外,1001
松井 英樹,海外,2001
斉藤 次郎,製造,125
佐藤 三郎,組立,A124
武藤 五郎,検査,130

--結果
山田 太郎,営業,80
山田 一郎,営業,A82
鈴木 一郎,販売,85
山田 花子,営業,A92
山本 こうたろう,企画,100
山下 大介,企画,A101
佐藤 三郎,組立,A124
斉藤 次郎,製造,125
武藤 五郎,検査,130
鈴木 一郎,海外,1001
松井 英樹,海外,2001




sortコマンドの「-n」を付けてやってみたのですが、数値として判断するため
上手くできません。
また、付けないと、数値順に並んでくれません。

No. 4315 # hagu 2005/10/15 (土) 19:19:00
>>4314 hagu
訂正です。
名前の前に社員IDがあり、
半角英数字でソートし、社員IDでソートとなります。
データは、「社員ID、名前、仕事、コード」
コードの半角英数字で数字順に並び替えで、
コードが同じな場合は、社員IDで並び替えです。
英字が先頭にある場合は、英字を取り除いて数字順にしたいのです。
No.4314の結果にしたいのです。

No. 4316 # 68user 2005/10/15 (土) 19:51:38
>>4314 hagu
101 と A101 という社員 ID が存在する可能性があるか、存在するならソート順は
どうするかという仕様が不明確ですが、それは置いておくとして。

> 山本 こうたろう,企画,100
> 山下 大介,企画,A101
> 山田 太郎,営業,80
> 山田 花子,営業,A92
わたしなら一度 sed などで
    山本 こうたろう,企画,,100
    山下 大介,企画,A,101
    山田 太郎,営業,,80
    山田 花子,営業,A,92
と別項目にし、sort して、再度 sed で元に戻します。

No. 4317 # hagu 2005/10/15 (土) 23:47:12
>>4316 68user

ありがとうございます。
一度、コードの値を分解しには、気がつきませんでした。
いいかも知れません。

>101 と A101 という社員 ID が存在する可能性があるか、存在するならソート順は
>どうするかという仕様が不明確ですが、それは置いておくとして。
コードでソートした後、同じコードないで、社員IDをソートします。
ただし、数字のコードは、数字のコード内で、
英字付きのコードは、英字付きコード内で、
社員IDを並びかえます。

No. 4318 # 匿名希望 2005/10/18 (火) 19:47:44
お世話になります。
C言語でHTTPクライアントを作成しています。ここのサイトもありますが、自作で行いました。
AのHPを取得してうまく表示されますが、BのHPを取得すると、表示されません。
取得したページのヘッダ情報はどっちも異常はありませんでした。
デバックではどっちでも表示されます。でも、BのHPが取得しても表示されません。
何か助言をして頂けたら幸いです。よろしくお願い致します。

No. 4319 # 68user 2005/10/18 (火) 23:11:48
>>4318 匿名希望
- 現象が再現する最小限まで削ったソースを提示してください。
- A と B の URL を提示してください。
- そちらで実行した結果を提示してください (ヘッダ情報とかデバッグを含む全部)
- OS・コンパイラなどの情報を提示してください。

なお、UNIX 以外であれば、わたしはコンパイル環境がないのでわかりません。

No. 4320 # SSL初心者 2005/10/19 (水) 16:09:35
初めて投稿します。
自分はSSLを組み込もうとしていろいろ調べているんですが、
調べていると、WindowsでのSSLの設置方法がかかれてないんです。
やっっぱりリナックスで設置したほうがいいのでしょうか?

No. 4321 # 68user 2005/10/20 (木) 01:13:13
>>4320 SSL初心者
まずは検索を。
http://www.google.co.jp/search?q=windows+apache2+ssl&hl=ja&lr=lang_ja&ie=utf-8&oe=utf-8

No. 4322 # マッケーブ 2005/10/20 (木) 15:39:43
お世話になります。
「マッケーブの循環的複雑度」を出力するツールを探しており、
当ホームページから コマンドcccc(C言語・C++・Java のソース
コードのステップ数を調べるツール。)を探し当てました。
ところが、身近にあるサーバで試してみると、
$ cccc hoge.java
-bash: cccc: command not found
と出力されます。

コマンドccccを実行するための条件等、ありますでしょうか。
ご教示、よろしくお願いします。

No. 4323 # ミケフォ [E-mail] 2005/10/20 (木) 18:12:00
初めまして。
『UNIXの部屋』の localtime(3) のサンプルコードにある
tm_timeの一連の変数参照が間違っています。

No. 4324 # hoge 2005/10/20 (木) 22:15:02
>> 4322
http://x68000.q-e-d.net/~68user/unix/pickup?Command+not+found

2 又は 6 では無かろうか.

No. 4325 # Netboy 2005/10/22 (土) 14:28:50
サーバーの件でメールをお送りしました

No. 4326 # SSL初心者 2005/10/26 (水) 12:59:02
すみません。SSLをWindowsで設定しているんですが、
Apacheのインストールで下記のエラーが出ます。

(OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、
たはポートのどれか 1 つ のみを使用できます。 : make_sock: could not bind to
dress 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

これは、どういった意味のエラーなのかさっぱりわかりません。
自分で調べてもどの方面から調べるのかわからずじまいで投稿しました。
環境は以下のとうりです。

OS - Windows98
Apache - Apache_2.0.55-Openssl_0.9.8a-Win32をダウンロード
OpenSSL - Win32OpenSSL-v0.9.8を使用

参考HP - www.rinzo2.jp/~rinzo/apache_ssl/apache_and_ssl_00.htm

ご意見お待ちしております

No. 4327 # awk初体験。 2005/10/26 (水) 14:54:35
シェル内にて以下の記述を入れるとエラーが発生します。

■エラー発生箇所
cat ./temp.txt | awk 'BEGIN{FS=","}{if(match($1,"^${_XXX_}")!=0){print $0}}' > ./test.csv

■出力エラー
awk: There is a regular expression error.
                ?, *, or + not preceded by valid regular expression
  The source line number is 1.
  The error context is
                                  >>> BEGIN{FS=","}{if(match($1,"^${_XXX_}") <<<

"^${_XXX_}"の部分がエラーとなっているようですがここでは変数は使用できないのでしょうか?

No. 4328 # 68user 2005/10/27 (木) 11:45:32
>>4326 SSL初心者
「OS 10048」で検索した結果の 1番目に出てくるのがおそらく答えです。
    http://www.google.co.jp/search?q=OS+10048&start=0&start=0&hl=ja&lr=lang_ja

>>4327 awk初体験。
ウチの環境ではエラーにならないのでよくわかりませんが、
    ${_XXX_}
って変数のつもりで書いてるんですよね? どこで ${_XXX_} に値をセット
しているのですか?

もしシェルスクリプトでシェル変数や環境変数にセットしているのなら、
引数全体を '' で囲んでいるので置換されません。というわけで

    cat ./temp.txt | awk 'BEGIN{FS=","}{if(match($1,"^'${_XXX_}'")!=0){print $0}}' > ./test.csv

などと ${_XXX_} を外に出します。

No. 4329 # 68user 2005/10/27 (木) 11:58:11
>>4323 ミケフォ
> 『UNIXの部屋』の localtime(3) のサンプルコードにある
> tm_timeの一連の変数参照が間違っています。
ありがとうございます。bugid 18 として登録しました。
    http://x68000.q-e-d.net/~68user/bugnote/viewbug.php?projectid=1&bugid=18

# 登録する暇があるなら、さっさと直せと。

No. 4330 # Netboy 2005/10/27 (木) 12:02:11
すみません,昨日18時頃から本日11時まで
サーバーの通信が切れていました.

昨日13時頃に回線工事があって無事完了したのですが,
終端装置の接続が雑だったらしく,17時頃に突然接続が落ちました.

すぐ業者に連絡したのですが既に営業時間外で,
朝まで修理を呼べませんでした.
本日11時に業者が来て直りました.

ご報告まで.

No. 4331 # キック 2005/10/27 (木) 16:56:13
お世話になります。

C言語でHTTPクライアントを作成してますが、HTTPSの場合のポート番号が
サイトを探しても見つからないですが、ご存知でしょうか?
よろしくお願い致します。

No. 4332 # 68user 2005/10/27 (木) 17:12:26
>>4330 Netboy
対処いただきありがとうございます。IP アドレスの件はもう少々お待ちください。

>>4331 キック
「https ポート番号」で検索したら一番最初に出てきます。
    http://www.google.co.jp/search?q=https+%E3%83%9D%E3%83%BC%E3%83%88%E7%95%AA%E5%8F%B7&hl=ja&lr=lang_ja

No. 4333 # キック 2005/10/27 (木) 17:19:59
>>4332 68user

ありがとうございます。
初歩的ですみません(^ ^;)>

No. 4334 # hagu 2005/10/28 (金) 10:37:09
シェルで、ftpを自動で実行しています。
ftpの接続、ログインの判定や、ファイルのput/getの判定
ができたか判断したいのですが、できるのでしょうか。
エラーが発生したら、「exit 1;」などで終了させて、その
ステータスを判断するといったことはできないのでしょうか。

-----------------
ftp -v -n ${SERVER} <<END >/dev/null
user ${FTP_USER_ID} ${FTP_PASSWORD}
cd ${FTP_DIRECTORY}
lcd ${LOCAL_DIRECTORY}
get ${GET_FILE}
bye
END

環境:
    Solaris8i
    Bシェル

No. 4335 # awk初体験。 2005/10/28 (金) 17:15:32
No. 4327 で質問させていただきました。
変数はシェル内で実行していました。
そのため""で括った所上手くいきました。
ご回答ありがとうございます。

さらに別の質問させてください。
カンマ及びスラッシュを区切り文字としたいのですが…
-FオプションやFS=の指定で複数の区切り文字を指定することはできるのでしょうか?

No. 4336 # zsh 2005/10/30 (日) 11:51:51
>>4335 awk初体験。
区切り文字に正規表現を使用できるawkであれば可能です。
(gawkやnawkなら使用可能ですが、Solaris標準のawk等では使用できません。)

$ nawk -F"[,/]" '{ .... }' file
$ nawk 'BEGIN{ FS="[,/]" } { .... }' file

No. 4337 # 68user 2005/10/30 (日) 15:35:42
2005/10/29(金) 00:00:00 ごろから IP アドレスの変更・それに伴う DNS 設定変更を
行いました。Refresh とか Retry とか Expire などを理解していないので、何も対策
せずいきなり切り替えました。そのせいで つながらなかった人もいると思いますが、
ご迷惑をおかけしました (わたしも数時間つながらなかった)。

ご協力ありがとうございました>Netboy さん

>>4323 ミケフォ
遅くなりましたが、修正しました。
ご指摘ありがとうございました。

# http://x68000.q-e-d.net/~68user/bugnote/viewbug.php?projectid=1&bugid=18

>>4334 hagu
わたしなら Perl の Net::FTP モジュールなどできっちりエラーチェックしますが、
どうしても ftp コマンドを使わざるをえないなら、
    - ftp コマンドに -d オプションなどをつけて実行結果のログをとる。最後に
        ログを解析してステータスコードに 4xx 系・5xx 系 がないことをチェックする。
    - 接続した時点でリモートに同名のファイル名がないならば、get/put を行って、
        最後に ls して、結果をログに保存する。ls の結果を解析し、ファイル一覧・
        ファイルサイズ・ファイル個数などのチェックを行う。
くらいしかないような気がします。

No. 4338 # 68user 2005/10/30 (日) 15:41:23
>>4337 68user
> 2005/10/29(金) 00:00:00 ごろから
2005/10/29(土) 00:00:00 の誤りでした。

No. 4339 # TKG 2005/10/31 (月) 21:57:21
A君とB君(ユーザーIDはそれぞれAとB)は同じグループG(グループIDはG)に属しているとします。
A君は、自分のホームディレクトリ(~A)にあるディレクトリDの中の全てのファイルを、B君など同じ
グループに属する人にだけ閲覧可能にしたいと考えました。ただし、A君はディレクトリD以外の
ファイル・ディレクトリは(それらのリストを取る(lsコマンド)ことも許可したくありません。
A君はどのようなパーミッションを設定すればよいでしょうか?

No. 4340 # 68user 2005/11/01 (火) 01:23:05
>>4339 TKG
    ~A/ 710
    ~A/D/ 750
    ~A/X/ (D 以外) 700
でしょうか。

No. 4341 # 2005/11/02 (水) 11:36:55
Solarisでシェルスクリプトを起動する場合。
$ csh script.cshと入力しなければなりませんが、
最初のcsh を省略して$ script.cshで起動する方法を教えて下さい。
宜しくお願いします。

No. 4342 # zsh 2005/11/02 (水) 17:49:42
> 68user様
http://x68000.q-e-d.net/~68user/unix/genre.html#genre22
にheadが二つ表示されています。

>>4341
UNIXの部屋を読めば判ると思いますが・・・
  1.スクリプトの一行目にシェルのパスを指定する。
  2.環境変数PATHを設定する。
  3.スクリプトに実行権をつける。
といったところでしょうか。
http://x68000.q-e-d.net/~68user/unix/pickup?Command+not+found

No. 4343 # hoge 2005/11/02 (水) 18:54:10
>> 誠さん

4342 で言われている PATH の設定は csh が置かれている場所にパスを通すって
意味であって、PATH に "."(カレントディレクトリ) を加えるって話では無い筈です。
従って、 単に script.csh ではなく ./script.csh って起動方法になると思います。

PATH に "." を加える事の問題とか、csh スクリプトを覚えるよりも sh 系の
スクリプトを覚えた方が良いって話は検索すれば出てきますので読んでみましょう。

No. 4344 # zsh 2005/11/03 (木) 13:34:58
>>4343 hoge
スクリプト専用のの格納ディレクトリがあるのかと思い
PATHの設定が必要と書きました。
・・・・ちょっと意地悪したくなったのも事実ですが。

No. 4345 # hagu 2005/11/04 (金) 17:19:50
>>4337 68user
返事が遅くなって申し訳ありません。
アドバイスありがとうございます。
ログに出力し、ログをチェックする方法でやってみます。

No. 4346 # hagu 2005/11/04 (金) 17:23:52
sedを使用して大文字から小文字に変換したいのですが、
なかなか上手くいきません。
例えば、「YAMADA」を「Yamada」と先頭の1文字目は大文字で、
2文字目以降を小文字に変換したいのですが、以下の様にsed
を使ってやったのですが上手く行きません。
sedでは、無理なのでしょうか。
環境は、Solaris8、Bシェルです。

----------------------
NM=Ya1AMADA
echo $NM | sed 's/[A-Z].*/[a-z]/g'

NM=YAMADA
echo $NM | sed 's/\(.\)[A-Z]*/\1/g'

No. 4347 # 2005/11/04 (金) 18:25:03
>>4346 hagu
多分、sedだけでは無理だと思います。

sedを使わなくても、awkだけでも可能です。

echo $NM | nawk '{for(j=i=1;i<=length($0); i++) if(i==1) {NM[i]=substr($0,i,1)} else {NM[i]=tolower(substr($0,i,1))}} END{for(count in NM) printf("%c",NM[count]); printf("\n")}'

No. 4348 # hagu 2005/11/04 (金) 21:58:31
>>4347

試してみましたが、出方が変です。
amadaY となります。

No. 4349 # マーブル 2005/11/05 (土) 08:16:10
始めまして、ネットワークプログラミング周辺読ませて頂きました。
簡潔なソースで読みやすかったです。
お礼に掲示板カキコ、それにしてもみなさん勉強熱心ですね(笑

----------------------------------------
echo $NM | \
sed -e h -e 's/^\(.\)\(.*\)/\1/g' \
-e 'y/[abcdefghijklmnopqrstuvwxyz]/[ABCDEFGHIJKLMNOPQRSTUVWXYZ]/' \
-e x \
-e 's/^.\(.\)/\1/g' \
-e 'y/[ABCDEFGHIJKLMNOPQRSTUVWXYZ]/[abcdefghijklmnopqrstuvwxyz]/' \
-e H \
-e g \
-e 's/\n//'
----------------------------------------

なんとなしsedの勉強してしまった、本買う気にはならないけどね。
http://web.archive.org/web/19961202111128/http://yase.yajima.kuis.kyoto-u.ac.jp/staffs/sengoku/sedlec/

No. 4350 # has 2005/11/05 (土) 11:03:28
>>4346 hagu
もしperlならこんな感じなんでしょうか?
echo $NM | perl -ple 'y/A-Z/a-z/;substr($_,0,1)=~y/a-z/A-Z/;'

No. 4351 # 2005/11/05 (土) 13:43:04
>>4347
>>4348 hagu

連想配列の場合、表示の順序は、ハッシュ法に従うのでランダムとなります。
すみません。

echo $NM | nawk '{for(i=1;i<=length($0); i++) if(i==1) {NM[i]=substr($0,i,1)} else {NM[i]=tolower(substr($0,i,1))}} END{for(j=1; j<i; j++) printf("%c",NM[j]); printf("\n")}'

No. 4352 # hagu 2005/11/05 (土) 13:58:38
>>4349 マーブル
凄い。
sedだけでですね。
でも、凄く、複雑すぎます。

>>4351
今度は、期待したいた結果が得られました。
awkを使っているのも複雑ですね。

No. 4353 # zsh 2005/11/05 (土) 14:28:08
>>4352 hagu
これじゃだめ?

$ echo $NM | nawk '{ a=toupper(substr($0,1,1)); b=tolower(substr($0,2)); printf "%s%s\n",a,b; }'

No. 4354 # 2005/11/05 (土) 23:53:05
>>4353 zsh

そうですよね。
substr()で2文字目以降すべてを変換してしまえばいんですよね。
何、ループで1文字ずつ変換し、表示しているんだろう。

No. 4355 # マーブル 2005/11/06 (日) 02:06:34
あまり知られていないscanfの用法。
既出でしたか残念。>>4041>>4042
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/scanf.3.html

以下同意
-------------------------------------
sscanf(host_path,"%[^/]%s",host,path);
-------------------------------------
p = strchr(host_path, '/');
if ( p != NULL ){
    strcpy(path, p);
    *p = '\0';
    strcpy(host, host_path);
} else {
    strcpy(host, host_path);
}
-------------------------------------

No. 4356 # マーブル 2005/11/08 (火) 01:39:16
fdopen()で作成されたストリームが閉じられたときにファイル記述子も 閉じられる。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/fdopen.3.html
よって以下のページのL:125は不要です。
http://x68000.q-e-d.net/~68user/net/c-http-2.html

No. 4357 # 68user 2005/11/08 (火) 02:42:15
>>4356 マーブル
ありがとうございます。とりあえず POSIX を確認させてください (明日以降)。
    http://www.opengroup.org/onlinepubs/009695399/functions/fdopen.html

No. 4358 # 68user 2005/11/08 (火) 02:51:42
>>4357 68user
明日以降と言いつつ今確認してみましたが、POSIX にはそういう記述は
ないように見えます。また、Solaris9 のマニュアルにも書いてないように
見えます。
    http://www.freebsd.org/cgi/man.cgi?query=fdopen&sektion=3C&manpath=SunOS+5.9

しかし BSD ならば、4.4BSD-Lite2 にはそのような記述があります。
    http://www.freebsd.org/cgi/man.cgi?query=fdopen&manpath=4.4BSD+Lite2&format=html

Solaris や HP-UX が手元にある方にお願いなのですが、fdclose して fclose した
ときにソケットディスクリプタがクローズされるかどうか truss コマンドなどで
確認していただけないでしょうか (わたしのまわりは FreeBSD と Linux しかないので)。

いずれにせよ何かしらの補足は追記したいと考えています。

No. 4359 # 68user 2005/11/08 (火) 03:00:02
>>4358 68user
> fdclose して fclose したときに
「fdopen して fclose したときに」の誤りでした。

ちなみに「UNIX ネットワークプログラミング第2版」からは、この件についての
記述を読み取ることはできませんでした。

No. 4360 # マーブル 2005/11/08 (火) 04:30:12
>>4359 68user
機種依存等深く考えずに書き込んでしまって申し訳ございません。
また知合いに話せる人がいない為に決めつけたような書き込みになってしまったこともお詫びします。

基本的にFILE構造体にfileディスクリプタが含まれているものと理解していたもので、
fclose時に連動してcloseされるかな?と単純に考えてしまいました。

trussで確認した結果が以下でcloseされているようでした(これおもしろいですね)
SunOS eibw23 5.9 Generic_112233-03 sun4u sparc SUNW(Solaris8か9)
-----------------------------------------------------------
read(0, 0xFF3414EC, 1024) (sleeping...)
read(0, "\n", 1024) = 1
llseek(3, 0, SEEK_CUR) = 0
close(3) = 0
read(0, 0xFF3414EC, 1024) (sleeping...)
read(0, "\n", 1024) = 1
_exit(0)

No. 4361 # マーブル 2005/11/08 (火) 04:33:00
>>4360 マーブル
うゎ、アドレス込みで貼っちまった、ハズカシィ

No. 4362 # マーブル 2005/11/08 (火) 04:48:39
>>4360 マーブル
opensolarisがsolarisとどれだけ違うかわかりませんが、
http://cvs.opensolaris.org/source/xref/on/usr/src/lib/libc/port/stdio/fdopen.c#64
fdの値は単純に渡されているように見えます。
(↑のサイト使い安くて良く使ってます、BSDでこのような感じのページご存知ですか?)

No. 4363 # 68user 2005/11/08 (火) 13:23:30
>>4360 マーブル
昨日は変なことを書いてしまいました。fclose したんだから close するのは
当然ですよね。まぁ fdopen したものはフラッシュだけ行って close しない
実装があっても不思議ではないですが、素直に考えれば close するはず。

よって、125行目の close は削除します。

>>4362 マーブル
> (↑のサイト使い安くて良く使ってます、BSDでこのような感じのページご存知ですか?)
普通の cvsweb でよければ、以下のものが cvsgraph が組み込まれているのでよく使います。
    http://cvsweb.allbsd.org/cvsweb.cgi/src/lib/libc/stdio/fdopen.c
ソース閲覧なら GLOBAL を使ったFreeBSD Source Code Tour が便利ですが、ファイル名が
ころころ変わるので URL を保存しておいても役に立たないのがが困りものです。
    http://snapshots.jp.freebsd.org/tour/
    http://snapshots.jp.freebsd.org/tour/current/userland/cgi-bin/global.cgi?pattern=fdopen&id=&type=definition
    http://snapshots.jp.freebsd.org/tour/current/userland/S/9687.html#53

OpenSolaris のソースを見られるところは知りませんでした。今後活用させて
いただきます。

No. 4364 # がちゃぴ 2005/11/08 (火) 15:45:39
初めましてWindowsユーザですが、仕事上 LinuxやCVSを使うことがあります。
コマンドをなかなか覚えられなくて、いつも参考にさせて頂いています。

No. 4365 # hagu 2005/11/08 (火) 18:05:43
>>4353 zsh

凄いです。
変換されました。

No. 4366 # anonymous 2005/11/08 (火) 22:03:49
よくパーミッションでrは読む権利を、wは書く権利を、
xは実行する権利を与えるといいますが、それぞれの権利が
与えられている時、いない時は具体的にどのようなコマンド
が有効であるのか、いまいちはっきり理解できません。
どなたか詳しくをしえてください。

No. 4367 # has 2005/11/09 (水) 00:01:04
>>4366 anonymous
> それぞれの権利が与えられている時、いない時は具体的にどのようなコマンドが
> 有効であるのか
何か哲学的なニオイがするので(?)、そもそも私が答えられる内容でも無い気は
しますがそれでもよければ教えてください。
ええと、ちょっと見た限りでは書き込み中の「有効」の意味がよくわかりません。
もしかしたら具体的に何か目的があるんでしょうか。
あと、パーミッションが与えられているのはプログラム?読み書きするファイル?

No. 4368 # 68user 2005/11/09 (水) 00:14:27
>>4364 がちゃぴ
ありがとうございます。ご意見・ご指摘がありましたら遠慮なくどうぞ。

なお、世の中いろんな人がいますので、文章の一部を削除させていただきました。
削除した部分に関する話題はご遠慮いただきたく思います。ご理解ください。

>>4366 anonymous
紛らわしいのでハンドルを「68user」から「anonymous」と変更しました。
今後は適切なハンドルを使用してください。

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