68user's page 掲示板

Prev< No. 964〜1064> Next  [最新発言に戻る] [過去ログ一覧]
No. 964 # has 2000/07/05 (水) 14:22:25
@68user
どうもありがとうございました。
リファレンスというのを勉強しときます。

それと、こちらに来られるかもということですが、
予定を確認しておきます。

No. 965 # 68user 2000/07/06 (木) 01:11:33
@よしださん
> すみません、原因が解ったら書き込もうと思っていたので
> 返答が遅くなってしまいました
別に1週間くらいはいいと思いますよ。「わかりました。試してみます」
と書くより、試してから結果を書こう、というタイプの人もいるでしょうから。

それ以前の人に向けていったことなので、気になさらないで下さい。

> もし単にパスが違うだけならやりようは
> あります。もしそうなら再度質問して下さい。
cygwin 入れて #!/bin/sh で振り分け、とか言わなくてよかった (笑)


@has
> リファレンスというのを勉強しときます。
赤ラクダ本には載ってません (念のため)。でもって、青ラクダ本の
説明はわかりにくいです。ちなみに $hoge{fuga}{ura} ってのも
実はリファレンスです。

> 予定を確認しておきます。
いや、いつ行くかも未定なので、いつも通りに過ごしてて下さい。
雨降ったら行けないし :-)

No. 966 # へにか [URL] 2000/07/06 (木) 08:08:50
>あと、回答してもらっても返答する気がないなら、最初から
>書き込まないで下さい>返答する気のない人々

・・・すみません。
以前、telnetで30個ほど繋げたら、フリーズしてしまったので、
perlで繋げる方法を考えつつ、先に進んでいないのと、まだ、
bugの原因が不明(というか、お手上げに近い)ので、返事できない
状態でした。

返答が遅れてすみません。

No. 967 # 68user 2000/07/07 (金) 00:41:37
へにかさんに向けて言ったのでもありません :-)

No. 968 # yuji 2000/07/07 (金) 03:28:41
ご無沙汰しております、以前にお世話になったyujiです。(^^)
現在、FreeBSD 2.2.8-RELEASEのカーネルなどをPentium3に最適化させたいと
考えているのですが、この場合、どういった部分を変更すべき
なのでしょうか?

自分で調べてみたところ、
http://www.goof.com/pcg/index.html
に、Pentium用パッチ(pgcc)があるのですが、
gccが現在2.7.2.1でして。(^^;
portsコレクションを探してみたのですが、
pgcc2.95.1のものがあるみたいですが、
プルダウンメニューが3.0以上のみになっています。
PGCCは、EGCSのパッチということで、
2.7.2.1のような古いバージョンには、
使えないのかもしれませんが。(^^;

FreeBSD 2.2.8-RELEASEを用いて、
マシンの能力を最大限に引き出す方法はなにかありませんでしょうか?
どうぞよろしくお願いします。

No. 969 # ST 2000/07/09 (日) 20:43:16
お返事ありがとうございました。

>> su: +++: No such file or directory
>むぅ…多分無理だと思います。一旦 shutdown して
>シングルユーザモードで再起動するしかないので
>2万円コースだと思います。

管理会社に連絡したところ、今回のように原因がはっきりしていて復旧が容易な場合は1万円だそうです。まあ仕方がないと思います。これからはもっと慎重に作業をしなければ……。

No. 970 # ユウヤ 2000/07/09 (日) 22:17:58
携帯電話に対してこちらの電話番号を表示しないためにはどうすればいいですか?

No. 971 # mm 2000/07/10 (月) 18:30:29
perlでのサブルーチンの質問です。
お願いします。

#!/usr/local/bin/perl

$Z = 1;
&abc();
print "$Z$Y";

sub abc{
        &A();
        &B();
        &C();
}
sub A{
        if($Z == 1){
                $Z = $Z + 1;
                &C();
        }
}
sub B{
        $Z = $Z + 5 ;
}
sub C{
        $Y = "!";
}

こんなカンジなのですが結果を"2!"になるようにしたいのですが
どうすればよろしいでしょうか?
このまま実行すると"7!"になってしまいます。
教えてください。

No. 972 # 68user 2000/07/10 (月) 23:12:29
@yujiさん
> 現在、FreeBSD 2.2.8-RELEASEのカーネルなどをPentium3に最適化させたいと
> 考えているのですが
すみませんが、http://www.jp.FreeBSD.org/search.html#doc
キーワード pgcc で検索する、以上の情報はわかりません。

cvsweb で ports/lang/pgcc を見ると、2.2.8 時代は (pgcc 側の)
gcc->egcs の切り替え時期なようで、その時代の gcc 対応 pgcc は
ないと思います。最新の egcs を入れて pgcc パッチを当てるのは
ダメかなぁ。いろんなところではまりそうですけど。
# あ、最近のは a.out 形式吐けないんだっけ。

@STさん
> これからはもっと慎重に作業をしなければ……。
telnet 2つ開いて、片方はつなぎっぱなしにして いつでも
/etc/master.passwd を修正できるようにしておくとよかったですね。

@mmさん
# biglobe な mm さんとは別の mm さんですか?
> 結果を"2!"になるようにしたいのですがどうすればよろしいでしょうか?
    sub B{
        $Z = $Z + 5 ;
    }
の部分で $Z==7 になってほしい、でも &B から戻ると $Z==2 としたい、
ということなら、呼び出し側で &B($Z) として引数を渡して
    sub B{
        my ($abc)=@_;
        $abc = $abc + 5 ;
    }
とか ($abc は $Z としても同じ)、単順に変数名を変えて
    sub B{
        $X = $Z + 5 ;
    }
とか、って感じでいいですか。

望んでる答えじゃないかもしれないけど、なぜ 2! にしたいのか、
&A と &B ではどういう違いがあるのかを説明してもらわないと、
これ以上はなんとも言えません。

No. 973 # mm@biglobe 2000/07/11 (火) 01:23:29
私にも意味が分からないので、別人かと思われます。

ひょっとして、sub A {...} 中で &C(); を呼び出したら、
sub abc{...} 中の &C(); に帰って来る、と誤解されてるとか…?
# goto &NAME に関係あるのかとも思ったけど…

No. 974 # mm 2000/07/11 (火) 09:23:05
># biglobe な mm さんとは別の mm さんですか?
mm@biglobeさん、失礼しました。

説明不足ですみませんでした。

sub A の処理で $Z == 1 の場合sub C へ行きたいのです。
その後、sub B へは行かずに処理を終了させたいのですが、、、

No. 975 # Netboy [E-mail] 2000/07/11 (火) 17:29:50
もしかして

#!/usr/local/bin/perl

$Z=1;&abc;print "$Z$Y";

sub abc{ if (!&A){ &B; } &C; }
sub A{ if ($Z==1){ $Z++;return 1; } 0; }
sub B{ $Z+=5; }
sub C{ $Y="!"; }

な感じですか...? 文章のままだと

sub abc{ if (!&A){ &B;&C; }}
sub A{ if ($Z==1){ $Z++;&C;return 1; } 0; }

な感じです.関数の戻り値を使わないなら

sub abc{ &A; if ($Z!=2){ &B; } &C; }
sub A{ if ($Z==1){ $Z++; }}

延々と続きそうですね.こんな話題じゃ無さそうな気も...

No. 976 # mm@biglobe 2000/07/13 (木) 01:27:06
あれ?mmさんの反応がないなぁ…
Netboyさんの回答で、出尽くしてると思うんだけど。

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

No. 977 # (6)(8)user 2000/07/13 (木) 01:32:32
そーいや、名前に機種依存文字を入れると、何かが起こったっけ。
多分まだ なおしてなかったなぁ。
# 現在機種依存文字が見えない環境なので、勘で入力。

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

No. 978 # 68user 2000/07/13 (木) 01:41:20
そうか、名前の欄が
    <INPUT ... VALUE="<FONT COLOR="red">(6)(8)</FONT>user">
となってしまうんだった。今度直そう。

ところで、LASER5 Linux 6.0 でも /etc/services は pop-3 でした。

No. 979 # has 2000/07/14 (金) 20:06:55
@68user
名前に機種依存文字入れたときの不具合、
直ったら修正部分をおしえてください。
#うちのにも同じ不具合があるってことですよね?

No. 980 # 68user 2000/07/18 (火) 00:12:35
了解。でも、ちと忙しい日が続きそうなので9月頃になるかも…。

No. 981 # 智慧 2000/07/18 (火) 22:55:44
こんばんわ。ちょっとお聞きしたいことがありまして。。。
うちの掲示板はmmさん(ここにいる人かどうかはわかりませんが)が作った掲示板を使っているんですが、
crypt関数が使えなくて削除パスとかが出てこないんです。それで、サーバ管理者に連絡しましたら、

>弊社サーバーでも、crypt関数はもちろんご利用頂けます。
>ただし、サーバーの暗号処理にMD5方式を搭載しておりますので
>MD5以外のサルト係数を使用したスクリプトでは、そのままでは動作致しません。
>(cryptはサーバーのライブラリに依存している為)
>cryptをMD5方式のサーバーでお使いになるには、salt係数をMD5の
>$1$ 固定で指定する必要がありますので、スクリプト内の
>該当部分を書き換えてご利用ください。

と教えていただきました。でもどこをどう直せばいいのかさっぱりなんです。
忙しいと言っていますけどもし時間が空きましたら、教えていただけますでしょうか。お願いします。
ちなみにhttp://whitenight.org/etc/bbs/Readme/crypt.cgiにcryptを実行するCGIがあります。
ソースはhttp://whitenight.org/etc/bbs/Readme/crypt.txtにありますんで、どうかみてやってください。
長文すいませんでした。

No. 982 # mm@biglobe 2000/07/19 (水) 00:39:40
あっ、crypt.cgi はMD5には対応してないですね(^^;
MD5を使える環境にないので、詳しくは、68userさんのご助言を頂きたいのですが、
とりあえず、ソースの以下の行を削除して、

     if ( $salt !~ m%^[\./0-9A-Z]{2}$%i ) {
         print "<H2>エラー</H2>\n";
         print "SALTが不正です\n";
         exit(0);
     }

SALTの入力欄の2文字の前に「$1$」を挿入して実行してみて頂けます?

No. 983 # 68user 2000/07/19 (水) 00:53:19
まず OS 名は何ですか?

>>(cryptはサーバーのライブラリに依存している為)
僕の知る限りでは (少なくとも FreeBSD では) 誤りです。
なんにも考えずに salt を渡せば、ライブラリ (libcrypt) の
方で DES でも MD5 でも勝手に処理してくれます。

# ただ、FreeBSD 以外の環境 (例えば Linux で MD5 な環境) だと、
# ライブラリがそこまで対応しているかどうかはよくわからんなぁ。
# 明日試してみよう。

しかし、http://whitenight.org/etc/bbs/Readme/crypt.cgi
結果が $PassWord = ''; と空になるのは謎ですね。

> print crypt( $pwd, $salt );
これを
    print crypt( $pwd, "\$1\$$salt\$" );
とするとどうですか。あるいは
    print crypt('secret','ab');
だとどうなりますか。

No. 984 # 68user 2000/07/19 (水) 00:59:14
おっと少々かぶりぎみ。

crypt.cgi は FreeBSD (MD5) 上ではうまく動きました。FreeBSD の
libcrypt では
    crypt('secret','xx')

    crypt('secret','$1$xx$hogehoge')
は同じものとして扱われるからです。

ということは、智慧さんの環境ではそうではないということで
しょうから、$1$..$ を追加すればいけるんじゃないかと思います。

No. 985 # mm@biglobe 2000/07/19 (水) 02:05:30
あっ、なるほど。(最後の $ も忘れてた)
68user さんの指示に従って対処して下さい>智慧さん

No. 986 # 智慧 2000/07/19 (水) 03:22:16
>mm@biglobeさん
>68userさん
あ、ごめんなさい。
こんなに早くお返事してもらえるとは思ってもいませんで・・・。
じゃ今から早速やってみます。
レスありがとうございました。

No. 987 # 智慧 2000/07/19 (水) 03:42:20
あ、順々にやらせてもらったんですが、もう最初のmm@biglobeさんの言ったとおりに、
一部分削除して、
>$1$
これを前に入れて5文字で実行したらちゃんと生成されました!

>まず OS 名は何ですか?
あとこれは結局わからないです・・・(汗)

お手間を取らせまして・・・。ほんとどうもありがとうございました。

No. 988 # ちゃいぱ [URL] [E-mail] 2000/07/19 (水) 10:19:01
ラウンジでは、いつもお世話になっていました。ありがとうございました。
ラウンジで質問ができないので、こちらへ質問させてもらいます。

UNIXにおいてflockを使用するデメリットを教えて下さい。
また、flock使用のCGIを見つけるコマンドなど存在しますか?

自サイトでCGIをフリー配布していますが、使っている人から、プロバイダでflockは、やめてくださいと通知されたそうです。
よろしくおねがいいたします。

No. 989 # ちゃいぱ [URL] [E-mail] 2000/07/19 (水) 10:28:30
ついでに、もうひとつ。
私の vi では、テキストファイルに一行 1024バイト以上の行があるとき
途中で切れて、全部見れません。

このような場合、「編集できない」と「多少のデータ欠落」はOKですが、
とにかく、全体を見れて、検索できるような、コマンドってないですか?

No. 990 # 68user 2000/07/19 (水) 15:00:23
LASER5 Linux (標準で MD5) では、
    crypt('secret','$1$xx$') -> $1$xx$r/r0qx2Q7FpBQWOTZk2Nc. (MD5)
    crypt('secret",'xx') -> xxWAum7tHdIUw (DES)
となりました。こういう環境があるとは知らなかった。


> UNIXにおいてflockを使用するデメリットを教えて下さい。
NFS 環境下で flock が動作しないそうですが、僕のまわりでは
NFS 環境でも正常にロックできていたように見えました。

それ以外はわかりません。プロバイダが「使うな」と言うほどの
デメリットはないように思います。

> また、flock使用のCGIを見つけるコマンドなど存在しますか?
これは質問の意図がわかりません。

> 私の vi では、テキストファイルに一行 1024バイト以上の行があるとき
> 途中で切れて、全部見れません。
nvi という vi ファミリのエディタでは、その手の制限はなかった
ように思います。ちなみに FreeBSD の vi は nvi だったりします。

> とにかく、全体を見れて、検索できるような、コマンドってないですか?
nvi 以外だと less かなぁ。less で 1024バイト/行なファイルを
見られるかどうかは確かめてませんが。まぁ、fold してその出力を
眺めるっつーのもアリかもしれません。

No. 991 # いち 2000/07/19 (水) 15:18:25
大学では、UNIXを使っているので、いつもこのHPにはお世話になっております。
それで、質問があるのですが。

UNIXでは、Windowsなどから送られてくる添付ファイルを
受けとる事はできますか?
また、添付ファイルを送る事はできますか?
よろしければ、そのやりかたも教えて頂けると嬉しいです。

ちなみに、使用機種は、SunOS 5.6です。

No. 992 # ちゃいぱ 2000/07/19 (水) 17:05:05
>68userさんへ
foldコマンドでいけました!
ありがとうございました。

>>また、flock使用のCGIを見つけるコマンドなど存在しますか?
>これは質問の意図がわかりません。
ただ、プロバイダがどうやってflock使用のプロセスを見つけたのかなぁっておもったもので...。

では、これで、失礼いたします...。

No. 993 # 68user 2000/07/20 (木) 01:07:22
> プロバイダがどうやってflock使用のプロセスを
> 見つけたのかなぁっておもったもので...。
grep?

> UNIXでは、Windowsなどから送られてくる添付ファイルを
> 受けとる事はできますか? また、添付ファイルを送る事はできますか?
メーラー次第です。Mew や Wanderlust あたりなら
できますが、emacs の rmail とか mail コマンドでは
難しい…というか多分無理でしょう。

# Mew ... http://www.mew.org/index-j.html
# Wanderlust ... http://www.gohome.org/wl/index.ja.html

No. 994 # Netboy 2000/07/21 (金) 13:55:51
NFS上のファイルをflockすると,複数マシンから
同時にロックできてしまう(場合がある)と思いますが...

Perlで普通にflockを使っていると,たいがい
まともにロックできないうえ処理速度が遅くなります.

open (LOCK, "> $file")||&error
flock (LOCK,2)||&error

とか書いた時点で終わってます.2箇所直せば使えますけど
普通そんなこと気付きません.
あと,デッドロックの発生を検知するのが難しいです.

No. 995 # いち 2000/07/21 (金) 19:14:34
68userさん>

御回答ありがとうございました。
僕のメーラーはemacsのrmailなので、受けとれないみたいですね。
文章の添付ファイルならば、その文章は一応表示されますが。

それで、御紹介頂いた Mew と Wanderlust のHPに行ってみたのですが、
その2つの違いというものがよく解りません。
よろしければ教えて頂けますか。
用途は、添付ファイルを受けとるだけなので、それに適しているのは
どちらなのかというのも教えて頂けると嬉しいです。

あと、もう一つ質問なのですが、
あるファイルのシンボリックリンクを作った時に、
そのシンボリックリンクの元となるファイルから、
そのファイルのシンボリックリンクがどこに作られているかを
見つけ出す事はできますか?

なんか解りにくい文章ですみません。

No. 996 # 68user 2000/07/22 (土) 13:34:09
> それで、御紹介頂いた Mew と Wanderlust のHPに行ってみたのですが、
> その2つの違いというものがよく解りません。
両方ともメーラーなわけで、できることは自然と似てきます。
一応僕の思う特徴をあげると
    Wanderlust のいいところ
    ・見栄えがきれい (スクリーンショット参照)
    ・IMAP4 対応
    ・ニュースリーダの機能もある

    Mew のいいところ
    ・im と mew を入れるだけなので、インストールが簡単
        (Wanderlust だと semi やら apel やら入れて、さらに
        それぞれのバージョンにも気をつけなくてはいけない)
てな感じ。インストールに自信がないなら Mew の方がいいかも
しれません。

ちなみに「添付ファイルを受け取る」という一点に関して言うと、
Mew の方が使いやすいように感じます。

> そのファイルのシンボリックリンクがどこに作られているかを
> 見つけ出す事はできますか?
無理です。全ファイルを調べるしかないです。これはハード
リンクも同じです。

> NFS上のファイルをflockすると,複数マシンから
> 同時にロックできてしまう(場合がある)と思いますが...
んー、なるほど。複数マシンからの flock というのは全く
思いつきませんでした。一つの NFS クライアントマシンから
flock して、「ああ、NFS でもうまくロックできるのね」と
思ってました。

試してみたいけど、NFS 環境がないなぁ・・・

No. 997 # hum 2000/07/22 (土) 16:42:52
はじめまして。
勉強になるのでちょくちょく見させてもらっています。

crypt化した文字を復元することはできるのですか?

No. 998 # hum 2000/07/22 (土) 16:52:27
申し訳ないです。先ほどの追加です。

crypt化するのにperlでやっています。

#!/usr/bin/perl

$A ="AAAAAA"; #←crypt化する文字
$B ="BB"; #←KeyWord
print crypt ($A,$B);

No. 999 # 68user 2000/07/22 (土) 21:10:41
> crypt化した文字を復元することはできるのですか?
できないです。復元ができないようなアルゴリズムを採用している
からです。なので、辞書を使ったり、総当りで調べるしかありません。

ちなみに keyword じゃなくて salt と言います。

No. 1000 # mm@biglobe 2000/07/23 (日) 23:37:53
unixはぜんぜん知らないのですが、
flockに関しては以前から疑問があったので、
ちょっとお伺いします。

>とか書いた時点で終わってます.2箇所直せば使えますけど
>普通そんなこと気付きません.
open の時点で $file が破壊されるってことですね。
これは、確かにしっかりしたドキュメントが必要だと思います。

>あと,デッドロックの発生を検知するのが難しいです.
flock でデッドロックが発生したら、意味ないのでは…?
flock がセマフォを使ってるのか、別の何かを使ってるかは知りませんが、
デッドロックを回避できるからこそ flock の価値があるんではないでしょうか?
それとも、セマフォとかの待ち行列の状態が検知できないという意味でしょうか?

>Perlで普通にflockを使っていると,たいがい
>まともにロックできないうえ処理速度が遅くなります.
こういう文章を読んで、flockはダメだと勝手に判断して、
もっと酷い、訳の分からない排他制御手段を考える人が出て来るような気が…

ただ、flockを使えばOSが対象ファイルごとに待ち行列を
用意することになるんでしょうから、チャット等が沢山使われるサーバーでは、
リソースを大量に消費して、レスポンスも悪くなるような気はします。
先のプロバイダの制限は、そういうことを嫌ったのではないでしょうか?

No. 1001 # Netboy 2000/07/24 (月) 04:32:13
>open の時点で $file が破壊されるってことですね。
はい,あと引数'2'だと,待っている間何も出来なくなるので
マズイ,ということで2箇所...としました.
シグナル起こしはあてにならないということで.

>デッドロックを回避できるからこそ flock の価値があるんではないでしょうか?
デッドロックは起きます.
flockには価値なんかありません.BSDでの互換性だけです.
言葉遊びでなく,確率というか危険度と考えてください.

flockして成功したプロセスが無限ループに入ったとき,
解除にはたいがいプロセス殺しが必要です.うまく殺せるか
どうかは不確実なので,この時点でデッドロックといえます.
symlinkやmkdirでの排他処理だとまだ通常のファイル操作で済みます.

>それとも、セマフォとかの待ち行列の状態が検知できないという意味でしょうか?
はい,検知と制御ができません.同じ意味でfcntlやセマフォも
使うのは難しいです.OSリソースを隠れて消費し,工夫しないと
システム全体の速度が低下します.

OSに付属する排他処理機構を,よく検証せずに使うのはまずいです.

私の経験だと,
- いつどのプロセスが何をロックして
- それを参照する何個のプロセスがどれくらいの時間待機しているか
外から判るようにしなければだめな感じです.

>訳の分からない排他制御手段を考える人が出て来るような気が
他人の手法を参考のうえ,排他処理の仕組みを自分で考えるのは
結構なことだと思います.

No. 1002 # mm@biglobe 2000/07/24 (月) 22:32:46
>解除にはたいがいプロセス殺しが必要です.うまく殺せるか
>どうかは不確実なので,この時点でデッドロックといえます.
なるほど、もし解除できないということが起こるなら、
確かにデッドロックですね。
unixを触ったことがないため、そのヘンは、何となくシステムを
信頼していました(^^;

>flockには価値なんかありません.BSDでの互換性だけです.
う〜ん、それが現状だとすると、問題ありそう…

>言葉遊びでなく,確率というか危険度と考えてください.
確かに、私の先の書き込みは、スパゲッティを食べる哲学者のレベルでの
話かも知れません(^^;

>OSに付属する排他処理機構を,よく検証せずに使うのはまずいです.
検証する能力がない人間が下手なことをするよりは、
システムが用意した機能をそのまま利用した方がマシ、
というスタンスでいたのですが、少なくともflockに関しては、
考え直さないといけないみたいですね。

>symlinkやmkdirでの排他処理だとまだ通常のファイル操作で済みます.
今後は、作成時からの経過時間検査による解除機能付きsymlink/mkdirあたりで
検討してみたいと思います。

>他人の手法を参考のうえ,排他処理の仕組みを自分で考えるのは
>結構なことだと思います.
これは、あくまでもっと低次元の話です。
「他人の手法」を正確に理解し、問題点を的確に把握した上で、
「自分で考える」のであれば、仰る通りすばらしいことだと思います。

No. 1003 # 68user 2000/07/25 (火) 00:31:46
Netboy さんは、ノンブロッキングの flock なら OK、
という立場ですよね?

で、いくつか疑問があります。

> flockには価値なんかありません.
fcntl には価値がある、という話でしょうか。それとも
両方価値がない、という話ですか?

> flockして成功したプロセスが無限ループに入ったとき,
という状況って、起こり得ますか? (現象事態は
root が SIGSTOP 送れば容易に発生しますが)

Netboy さんは、どういうプログラムを想定しておられます?
ちなみに僕が考えたのは、カウンタとか web BBS とかです。

> Perl で普通にflockを使っていると,たいがいまともに
> ロックできないうえ処理速度が遅くなります.
僕の環境では「まともにロックできない」というのは
経験したことはありません (1000回カウントアップしたつもりが、
カウンタデータファイルを見ると998回しか実行されていない
というのはあった。原因は不明)。

それと flock は、symlink・mkdir よりは速かったです。
しつこいですが、僕の環境では、です。

# あと、排他処理はいつも symlink でやるので、flock を
# 使いこんだことはないです。

> 訳の分からない排他制御手段を考える人
http://www2q.biglobe.ne.jp/~terra/cgi/lockfile.htm (笑)

No. 1004 # mm@biglobe 2000/07/25 (火) 00:56:39
>http://www2q.biglobe.ne.jp/~terra/cgi/lockfile.htm (笑)
あはは、どもです。どこだったか忘れてました。

No. 1005 # Netboy 2000/07/25 (火) 04:54:43
>Netboy さんは、ノンブロッキングの flock なら OK、
>という立場ですよね?
はい.
動作環境を知っていて,使えると判断した用途にはOKです.
例えば常駐動作のサーバー用のスクリプトなんかにはいいですよね.

>それとも 両方価値がない、という話ですか?
いいえ,fcntlは意味があると思います.
POSIX準拠(?)+NFS対応だそうですし.
あれはOSの内部操作をそのまま出してくれているんですよね?
でもWin環境で互換性が無いので,あまり使いません.

>> flockして成功したプロセスが無限ループに入ったとき,
>という状況って、起こり得ますか? (現象事態は
>root が SIGSTOP 送れば容易に発生しますが)
次のようなものです.

- スクリプトの単なるバグ
- 作成中のスクリプトのテスト時
- 予期しないデータを与えられたスクリプト
- Perlインタプリタがコケたとき.OSリソース逼迫下.
- インタプリタのバグ.
- Apacheの設定ミス,管理者の不注意な設定変更.
- クラッキングを受けたサーバー

>Netboy さんは、どういうプログラムを想定しておられます?
>ちなみに僕が考えたのは、カウンタとか web BBS とかです。
私も同じです.
スクリプトのバグでは,機種/環境依存文字の訂正で
ある予期しない文字列のとき置換操作が止まらなくなる...など.

>僕の環境では「まともにロックできない」というのは
>経験したことはありません
それは68userさんだから(笑).
普通の人は下で書いたスクリプトみたいな感じです.
NFSを使っているプロバイダの場合,もっと状況は複雑になります.

>それと flock は、symlink・mkdir よりは速かったです。
う〜ん,負荷が掛かった時なんです,問題は.
デッドロックの自動検出と,flockの解除のための
pidの保存操作や予防措置も含めてください.

MMX233+FreeBSDで1000個の掲示板が同時動作で平均待ちプロセスが2〜4個
の状況('97のテレホ時)でflockを使うかどうか,です.

>訳の分からない排他制御手段を考える人
いや,いいんじゃないですか.誰もが通る出発点だと思います.
68userさんだって,miniBBSのアレとか,ほら,悪い思い出(笑).
混雑時の実用性や設置性を検証すると,面白いことになります.

No. 1006 # ちゃいぱ [URL] 2000/07/25 (火) 15:19:18
はじめに、flockについて質問した者です。

CGIをダウンロードした人にプロバイダ来たメールで、
やはり、「NFSがらみで、flockが利用不可能な状態」とのことでした。
CGIの方は、WIN95も考慮して、ロックファイルの有無で対処いたしました。

話は、変りますが、DNSサーバーについて知識として教えて下さい。
rlogin,ftp,telnetなどで、ホスト名を指定した時に、どのようにして、
DNSサーバーとやり取りをしているのですか?
DNSサーバーはhttpみたいなデーモンが動いているですか?(私の買った本には、この辺書いていなかった)

ちょっと、気になったので、よろしくお願い致します。

No. 1007 # 68user 2000/07/25 (火) 16:27:35
flock の件は後程。

> rlogin,ftp,telnetなどで、ホスト名を指定した時に、どのようにして、
> DNSサーバーとやり取りをしているのですか?
rlogin/ftp/telnet などは、ユーザからホスト名を受け取ると
gethostbyname(3) などを使って、ホスト名から IP アドレスを
得ようとします。

gethostbyname の内部では、ソケットを使って DNS サーバに
アクセスします。で、DNS サーバは UDP の port 42 を
listen していて (UDP だから listen という表現は変?)、
クライアントからの問い合わせに応じて IP アドレスを
教えたり、他の DNS サーバに問い合わせたり、見付から
ないよと答えたりします。

こういう問い合わせを行う DNS クライアント (この例では
gethostbyname) のことを resolver と言います。resolver は
概念的なもので、問い合わせを一手に引き受ける resolver
サーバのようなものがあるわけではありません。ただのライブラリです。
なので、自分で外部の 42/udp にアクセスする DNS クライアントを
書く事もできます。

> DNSサーバーはhttpみたいなデーモンが動いているですか?
UNIX 界で DNS サーバとして有名なのは bind です。
プログラム名は named。
# apache と httpd の関係と似ています。

No. 1008 # 68user 2000/07/25 (火) 16:57:08
> こういう問い合わせを行う DNS クライアント (この例では
> gethostbyname) のことを resolver と言います。
いや、違うか。

res_query, res_search, res_mkquery, res_send, res_init,
dn_comp などの DNS サーバへ問い合わせを行うライブラリ
関数群のことを resolver といいます。gethostbyname などは
これらの関数を孫請けとして呼んでいます、かな。
# See resolver(3).

No. 1009 # ちゃいぱ [URL] 2000/07/25 (火) 17:01:14
回答ありがとうございます。

では、DNSクライアントとnamedデーモンが、
UDPプロトコルでportの42番でやり取りすると理解してよろしいですね。

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

No. 1010 # gongo [E-mail] 2000/07/25 (火) 23:48:36
はじめまして、gongoと申します。
いきなりで申し訳ありませんが質問があります。
私はXアプリケーションの勉強を始めたばかりなのですが
XライブラリとXツールキットを用いたプログラムを書こうとして
行き詰まってしまいました。
と言いますのは、例えばXツールキットを用いて表示させた窓に
Xライブラリを用いて直線を引いたりする方法がわかりません。

XDrawLine(XtDisplay(w),XtWindow(w),gc,x1,y1,x2,y2);

といった感じでプログラムの中に書き込みますとコンパイルは
できるのですが、実行させるときにXDrawLineのところで
Segmentation faultで止まってしまいます。
本もいろいろと読みましたがどうにもうまくいきません。

作成途中のプログラムは以下のところにあります。
http://www.din.or.jp/~gongo/xtshirt.c(本体)
http://www.din.or.jp/~gongo/color.dat(色の数値)
どうか宜しくお願い致します。

No. 1011 # 68user 2000/07/26 (水) 00:48:58
> では、DNSクライアントとnamedデーモンが、
> UDPプロトコルでportの42番でやり取りすると理解してよろしいですね。
その通りです。

> 例えばXツールキットを用いて表示させた窓に
> Xライブラリを用いて直線を引いたりする方法がわかりません。
非常に興味のある分野なので答えたいのはやまやまなのですが、
Xt を触ったことがないのでわかりません。でも、DrawLineOnWidget 内で
drawgc を使ってますが、DrawLineOnWidget を呼び出す前に
drawgc に GC をセットし忘れているように見えます。

あと、戻り値を見ると XtWindow(w) で NULL が返ってるのが
問題…なのかなぁ。解決法がわかったら教えて下さい。

No. 1012 # gongo [E-mail] 2000/07/26 (水) 01:39:54
> 非常に興味のある分野なので答えたいのはやまやまなのですが、

素早いご返答ありがとうございます。

> drawgc を使ってますが、DrawLineOnWidget を呼び出す前に
> drawgc に GC をセットし忘れているように見えます。

本によると、ウィジェットをリアライズした後にGCを
設定するようなことがかいてありましたもので
XtRealizeWidget(toplevel);
よりも後にdrawgcをセットすることにしたのです。
もう少し調べてみます。

> あと、戻り値を見ると XtWindow(w) で NULL が返ってるのが

すみません、これはどういうことなのでしょうか。
NULLが返ってくるというのはどのように調べたらよろしいのでしょうか。
NULLが返ってるとなるとおそらくここが悪いのだと思います。
う〜ん、もう少し調べてみます。

No. 1013 # 68user 2000/07/26 (水) 09:20:32
> XtRealizeWidget(toplevel);
> よりも後にdrawgcをセットすることにしたのです。
うーん、XDrawLine を呼んだ時点で X サーバとの通信が
行われると思うんで、やっぱりセットしておかないと
いけないんじゃないかなぁ…。GC は
    typedef struct _XGC * GC;
なので、GC の中身がゴミ (初期化してないので) だと
まずいと思うのです。

> NULLが返ってくるというのはどのように調べたらよろしいのでしょうか。
printf("%d\n",XtWindow(w)) としました。他の部分で同じことを
すると何か値が入っているのですが、XDrawLine の前で表示させると
0 となってしまうので、XtWindow がこけてるのかと思いました。

まぁ、知識がないのに推測を重ねるのもアレなので、
会社にある本を読んで調べてみます。

No. 1014 # gongo [E-mail] 2000/07/26 (水) 19:38:45
> 他の部分で同じことをすると何か値が入っているのですが、
> XDrawLine の前で表示させると 0 となってしまうので、
> XtWindow がこけてるのかと思いました。

例えばDrawLineOnWidget(label)の書いてあった手前に

printf("XtDisplay(label) = %d\n",XtDisplay(label));
printf("XtWindow(label) = %d\n",XtWindow(label));

と書いたところ、XDrawLine の前で表示させるのと同様に
次のようになってしまいました。

XtDisplay(label) = 67584
XtWindow(label) = 0

やはり0というのはまずいのでしょうか。labelを使い回して
いくつかの窓を表示させようとしているのがまずいのか・・・。

あとdrawgcのセットをDrawLineOnWidget(w)の中で下記のように
行ってみたところ、

drawgc=XCreateGC(XtDisplay(w),XtWindow(w),0,NULL);
XSetForeground(XtDisplay(w),drawgc,pixel[1]);
XSetBackground(XtDisplay(w),drawgc,pixel[0]);

DrawLineOnWidget(label)は抜け出て、ok6までは到達したのですが

X Error of failed request: BadDrawable (invalid Pixmap or Window parameter)
    Major opcode of failed request: 55 (X_CreateGC)
    Resource id in failed request: 0x0
    Serial number of failed request: 35
    Current serial number in output stream: 48

となってしまいました。

お手数お掛け致しまして申し訳ございません。

No. 1015 # gongo [E-mail] 2000/07/26 (水) 20:03:01
> labelを使い回していくつかの窓を表示させようとしているのがまずいのか・・・。

各窓がだぶらないようにlabel1,label2,・・・といったように
してみましたが結果的にうまくいきませんでした。

No. 1016 # 68user 2000/07/27 (木) 02:42:45
根本的には何がまずいかと言うと、
    1. GC をセットしていない (その結果 core dump)
    2. Window がマッピングされる前に XtWindow を実行している
         (その結果 X Error)
だと思います。1は先に述べた通り。2は XtWindow の前に
XtRealizeWidget が必要なんでしょう。

で、そういえば一応 Xt の本を持ってたな〜と思い出したので読んでみると、
    a. Form ウィジェットの上に Simple ウィジェットを作成
    b. Simple ウィジェットに、Exposure イベントへの
         コールバック関数を設定
    c. XtAppMainLoop でイベント待ち
    d.コールバック関数が呼ばれて、その中で XDrawLine
という手順を踏んでました。

実際には何も試してませんが、上の通りにやってみては
いかがでしょう。なお、a は必須かどうかわかりません。
Label ウィジェットに直接 XDrawLine できるのかもしれません。

flock の件はまたまた後程。うーん、調べる時間がない…。

No. 1017 # gongo [E-mail] 2000/07/27 (木) 05:23:23
> 実際には何も試してませんが、上の通りにやってみては
> いかがでしょう。なお、a は必須かどうかわかりません。

ありがとうございます。いろいろ試してみます。

No. 1018 # 68user 2000/07/27 (木) 09:35:55
> a は必須かどうかわかりません。
必須ではありませんでした。以下のような感じで一応描画はできました。
正しいかどうかはわかりませんが。
    void repaint(){
        XDrawLine(XtDisplay(label),XtWindow(label),gc,0,0,100,100);
    }
    main(){
        ...
        XtAddEventHandler(label,ExposureMask,FALSE,repaint,NULL);
        XtRealizeWidget(toplevel);
        ...
    }
現実的には、Pixmap に書いておいて、Expose が発生するたびに
Pixmap から Window にコピーするのが効率的です。
# それ用の Widget が Xt にあったりするんだろうか。

うーん、やっぱり UNIX 使いとしては、基礎知識として、Xt は
抑えておかねばなぁ…。

No. 1019 # gao 2000/07/27 (木) 13:24:20
はじめまして。初心者にもわかりやすいUNIXのHPでよく利用させて頂いていま
す。早速ですが、質問があります。kinput2をバックグラウンドで起動した後、
netscapeを起動しようとすると以下のようなメッセージを残してすぐに落ちて
しまいました。どのようにすれば解消できるでしょうか?

% kinput2 -canna -jserver remotehost &
% netscape &
[2] Bus error netscape(core dumped)
(↑このメッセージを残してnetscapeが落ちます。)

No. 1020 # hsj 2000/07/27 (木) 14:17:21
@68userさん
すみません、ちょっと横から質問です。
>> では、DNSクライアントとnamedデーモンが、
>> UDPプロトコルでportの42番でやり取りすると理解してよろしいですね。
>その通りです。
ぼく、ずっとUDPの「53」番(ゾーン転送のときはTCPも)だと思っていたんですが、
これは間違ってたんでしょうか?
#うーむ、心配になってきました・・・確認しよっと。

No. 1021 # gongo [E-mail] 2000/07/27 (木) 16:52:00
> 68user様
窓の表示とともにただ線を引くというのが
イベントなのかどうかわからなかったため、
今までイベント処理でやろうとは思っていませんでした。
これから試してみます。

No. 1022 # 68user 2000/07/27 (木) 19:51:17
> ずっとUDPの「53」番(ゾーン転送のときはTCPも)だと思っていたんですが、
うぅ、tcpdump で見ると確かに 53 でした。調べもせずに
いいかげんなことを言ってはいけない…。

なぜかとてもとても忙しいぞー。なんでだ。
なので、その他については明日に持ち越し。

No. 1023 # 68user 2000/07/28 (金) 01:20:21
現在 Xt の勉強中。

@gongoさん
> 窓の表示とともにただ線を引くというのが
> イベントなのかどうかわからなかったため、
ご存知かもしれませんが一応説明しておきますと、X では
ウィンドウの最初の map 時や、他のウィンドウに隠れていた
ものが露出した場合に Expose イベントが飛んできます。

なので、X クライアントは Expose イベントが飛んでくるか
どうかを見張っていて、飛んできたら描画/再描画しなくては
いけません。これをしないと、ウィンドウ内が真っ白になります。
X サーバ側が再描画をしてはくれませんから (とりあえず
バッキングストアのことはおいとくとして)。

なお、最初の Expose が飛んでくる前 (Map する前) に描画
しようとすると、core 吐くか、X Protcol Error になった
ような記憶が。

# ↑Xlib のレイヤの話。Xt だけを使っているなら、
# イントリンシクスがよきにはからってくれます。
# http://X68000.startshop.co.jp/~68user/xprogram/xlib-1.html


@gaoさん
> kinput2をバックグラウンドで起動した後、 netscape を
> 起動しようとすると以下のようなメッセージを残してすぐに
> 落ちてしまいました。
> % kinput2 -canna -jserver remotehost &
canna の場合は、-cannaserver じゃなかったかなぁ。
-jserver は Wnn 用だったような。
# でも kterm などで漢字変換できているのなら、
# これでいいのかも。

> % netscape &
> [2] Bus error netscape(core dumped)
OS 名と、Netscape をどうやってインストールしたか、
X のリソース設定 (~/.Xdefaults の中身や xrdb -query の
結果) を書いて下さい。

というより、FreeBSD/NetBSD/OpenBSD/Linux あたりなら
日本語リソース付のパッケージが用意されているでしょうから、
それを使うのが簡単です。もしパッケージを使っているのに
こういう結果になるなら、変なリソース設定をしている
or リソース設定が足らない、あたりが怪しいかと。

No. 1024 # ちゃいぱ [URL] 2000/07/28 (金) 10:20:30
また、質問させてもらいます。

$aaa = 20000728;
$datedata=substr($aaa,0,4) . "/" . substr($aaa,4, 2) . "/" . substr($aaa,6, 2);
print "datedata=$datedata\n";

のように、20000728 を 2000/07/28のようにyyyy/mm/ddに変換していますが、
上記以外のスマートな方法を教えて下さい。

「perlでVBのFormat関数みたいのはないですか」って質問されたもので...。
よろしくお願い致します。

No. 1025 # Netboy 2000/07/28 (金) 12:46:58
スマートでないやり方です.
修飾子での簡単な型式変換をつけました.

print &format('20000728','yyyy mm dd',"yyyy/mm/dd\n");
print &format('20000728','y1 y2 mm dd',"'y2年mm月dd日\n");
print &format('20000726','yyy! m! d!',"m!月d!日\n");

$M{'m#07'}='July';
print &format('20000726','yyyy m# d!',"m# d!, yyyy\n");

sub format{
    local($src,$format,$template)=@_;
    local(@format,$ptr,$s,$d,$len);

    @format=split(/ /,$format);
    $ptr=0;
    foreach $s(@format){
                $len=length($s);
                $d=substr($src,$ptr,$len);

                if ($s=~/!/){$d+=0;}
                if ($s=~/#/){$d=$M{"$s$d"};}

    $template=~s/$s/$d/g;
                $ptr+=$len;
    }
    return $template;
}

No. 1026 # 68user 2000/07/28 (金) 13:54:57
> VBのFormat関数
というものを知らないので外しているかもしれませんが、普通は
    $date = 20000728;
    printf "%04d/%02d/%02d",$date=~m/^(\d\d\d\d)(\d\d)(\d\d)$/;

    $date = 20000728;
    $date =~ s|^(\d\d\d\d)(\d\d)(\d\d)$|$1/$2/$3|;
    printf $date
あたりかなぁ。

もし表示形式を指定できるようにするなら、date コマンドと同じ書式の
    http://www.jp.FreeBSD.org/cgi/mroff.cgi?subdir=man&man=strftime&dir=jpman-3.1.0%2Fman#toc0
にするかも。

No. 1027 # いち 2000/07/28 (金) 14:41:26
すいません、返答がずいぶん遅れてしまいました。
68userさん、いろいろアドバイスありがとうございます。

それで、いろいろMewについて見ていったのですが、
たまたま見ていたEmacsのINFOの中にMewという単語を見つけ、
中を見ていったら、何と既にMewがインストールされていました。
色々お手数おかけしてすいませんでした。

ただ、色々試みているのですが、いまだにMewを起動させる事ができません。
M-x Mew と入力すると起動すると書いてあるのですが、
これをどこで(どういう場面で)入力すればいいのかが解りません。
教えて頂けますか?

それから、最近、Netscape をkill した時に
Bus error という表示が出て、.netscape フォルダの中に、
lock ファイルができてしまいます。
以前はこんな事はなく、Done という表示が出て
lock ファイルも作られませんでした。
僕は最近、不必要だと思われるファイルを色々消していっているのですが、
その過程で、何か必要なファイルまで消していってしまったのでしょうか?

No. 1028 # gongo [E-mail] 2000/07/28 (金) 16:27:57
@68user様
> X ではウィンドウの最初の map 時や、他のウィンドウに隠れていた
> ものが露出した場合に Expose イベントが飛んできます。

ここら辺はなんとなくわかっていたのですが、
最終的にできてほしいプログラムのことを考えるあまり
頭の中でごちゃごちゃになっていました。
まだ線をひくのを確認していないのでやってみます。

No. 1029 # gongo [E-mail] 2000/07/28 (金) 16:38:57
@68user様
度々すみません。27日のご説明でイベントハンドラを
用いていましたが、呼び出されるイベントハンドラは
あらかじめ決められた関数の形式(XtEventHandler型)で
なくてもよろしいのでしょうか。

No. 1030 # ちゃいぱ 2000/07/28 (金) 17:14:01
>68userさんへ
確認し、理解できました。ありがとうございました。

>Netboyさんへ
確認し、ちょっと理解できないところがありましたが、ありがとうございました。
引数2と引数3の関係がイマイチわかりません。

とりあえず、これで、失礼いたします。
ありがとうございました。

No. 1031 # Netboy 2000/07/28 (金) 20:40:59
>引数2と引数3の関係がイマイチわかりません。
引数2は,引数1の切り分け方の指定です.

print &format('28/07/2000','dd x mm x yyyy',"yyyy年mm月dd日\n");
のように使えます.

混乱させてしまって済みません.
関数名に予約語(format)を使ったのもまずかったです...

No. 1032 # hsj 2000/07/28 (金) 21:21:48
@68userさん
>うぅ、tcpdump で見ると確かに 53 でした
ぼくも確認しなおしました。
記憶違いでなくてよかった・・・。
#68userさんが断言してらっしゃると、
#自分の記憶に自信があっても、ビビッちゃいます(笑

No. 1033 # 68user 2000/07/29 (土) 13:00:58
@gongo さん
> 呼び出されるイベントハンドラはあらかじめ決められた
> 関数の形式(XtEventHandler型)でなくてもよろしいのでしょうか。
void repaint(void) としたのは、てきとーに書いただけで、
    void handler(Widget,XtPointer,XEvent*,Boolean*)
が正しいです。まぁ XtEventHandler は
    typedef void (*XtEventHandler)(
        Widget /* widget */,
        XtPointer /* closure */,
        XEvent* /* event */,
        Boolean* /* continue_to_dispatch */
    );
なので、void repaint(void) でも動くはずです。C言語では
呼び出し側が渡した引数を、呼び出された関数側で受けなくても
構わないからです (…ほんとかなぁ。動くかどうかは環境依存かも)。


@ちゃいぱさん
> 「perlでVBのFormat関数みたいのはないですか」
ちなみに、この問いが「perl に strftime のような関数はないのか」
という意味なら、答えは「perl5 標準では、ない」です。

ただし Time::CTime モジュールをインストールすれば strftime
関数が使えるようになります。


@いちさん
> M-x Mew と入力すると起動すると書いてあるのですが、
> これをどこで(どういう場面で)入力すればいいのかが解りません。
emacs を起動して、ESC キーを押して、x を押して、
mew とタイプして Enter です。コマンドラインから
    % emacs -f mew
としても同じことになります。

> Netscape をkill した時に Bus error という表示が出て、
> .netscape フォルダの中に、lock ファイルができてしまいます。
常套手段として、rm -rf ~/.netscape で設定ファイルをクリア
してから、再度 netscape を立ち上げて下さい。preferences.js、
bookmarks.html などのバックアップは忘れずに。

No. 1034 # ちゃいぱ [URL] 2000/07/29 (土) 14:58:38
@68userさん
ありあまる回答をして頂き、感謝いたします。
あがとうございました。
ただ、元々の質問者のレスがなく、ちょっと残念...。

@Netboyさん
理解できました!
関数名を変えれば、結構使えそうですね。
ありがとうございました。

No. 1035 # 68user 2000/07/30 (日) 10:03:27
需要があるかどうかは知らないけど、BBS の全文検索の試運転。
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard/namazu.cgi
namazu-2.0.4 でやってますが、replace に正規表現使えるし、
filter いじれば この BBS のデータ形式にも対応できるし、
いい感じ。

まだ自動更新はされません。

@hsj さん
> #68userさんが断言してらっしゃると、
> #自分の記憶に自信があっても、ビビッちゃいます(笑
僕はかなりいいかげんな回答をしてます。
そもそも DNS サーバの設定をしたことがないくらいだし :-)

No. 1036 # 68user 2000/07/30 (日) 23:32:28
> http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard/namazu.cgi
あら、検索すると、データファイル中の remote host が丸見え。
filter で削るように設定したつもりだったんだが。というわけで、
いったん引っ込めます。

No. 1037 # いち 2000/07/31 (月) 16:02:04
68userさん>

御回答ありがとうございます。
仰せのとおり Mew を起動させようとしましたができませんでした。
どうやら、Mew の help があるものの、Mew 自体はインストールされてないみたいです。

そこで、Mew と im をインストールしました。
次に、アーカイブを展開するというように説明に書いてあったのですが、
これって、圧縮されたファイルを解凍するという事ですよね。
そう思って、gzip で圧縮されていたので、gunzip で解凍しようとするのですが、

gzip: mew-1.94.2.tar.gz: unexpected end of file

という表示が出て、うまくいきません。 どうしたらよいのでしょうか?


それと、.netscape/ のことについてですが、
その中にあるファイルの bookmarks.html は何となく解りますが、
preferences.js はどういうファイルなのですか?
その他の、cache/(ディレクトリ)内にある index.db
そして、archive/(ディレクトリ)、cert7.db 、history.dat、
history.list 、key3.db 、plugin-list 、plugin-list.BAK、
registry 、secmodule.db はそれぞれどういったファイルなのでしょうか? 教えて下さい。

それから僕は、ディスク容量を節約するために、cache/ フォルダの中に、
99/ というフォルダを作り、その中に必要なキャッシュファイルを移動し、
他のキャッシュファイルは、全て自動削除するように設定しているのですが、
その 99/ フォルダに入れたキャッシュファイルの効果があるか、良く解らないのです。
(どうやらキャッシュフォルダは 00〜0f、10〜1f までしか作られないみたいなので、
99にする必要は別段ないのですが)
これって、意味ありますか? もしくは、もっといい方法がありましたら教えて下さい。

No. 1038 # B-MAX [E-mail] 2000/07/31 (月) 17:54:57
FTPについての質問なのですが、
FTPでデータを転送するさい、失敗することはありえるのでしょうか
ある場合、正しく転送されたか、チェックすることは可能なのでしょうか?
ネットワーク関係は初心者なもので、よくわからないのですが
FTPはTCPの上位プロトコルなので、
データのチェックはTCPレベルでやっているのでしょうか?
突然の質問、失礼しました。

No. 1039 # gao 2000/08/01 (火) 00:57:00
返答ありがとうございます。

>> % netscape &
>> [2] Bus error netscape(core dumped)
>OS 名と、Netscape をどうやってインストールしたか、
>X のリソース設定 (~/.Xdefaults の中身や xrdb -query の
>結果) を書いて下さい。

~/.Xdefaults の内容は以下のようになっています。
kterm,netscape当りの設定内容のみを書き出してみました。
設定ミスなどがありそうですか?

----------------------------------------------------------------
kterm*VT100.translations: #override \
    Shift <Key>space: begin-conversion(_JAPANESE_CONVERSION)
KTerm*KanjiMode: euc
KTerm*SaveLines: 1000
KTerm*ScrollBar: on
KTerm*IMProtocl: kinput2
KTerm*Modifiers: @im=kinput2


*inputMethod:kinput2
*VT100*translations: #override\
    Shift<Key>space: begin-conversion(_JAPANESE_CONVERSION)
Netscape*useStderrDialog: False
Netscape*international: True
Netscape*inputMethod: kinput2
Netscape*XmTextField.fontList:\
    -*-courier-medium-r-*--14-*-*-*-*-*-iso8859-1;\
    -*-*-medium-*-*--14-*-*-*-*-*-jisx0208.1983-0;\
    -*-*-medium-*-*--14-*-*-*-*-*-jisx0201.1976-0;\
    -*-*-medium-*-*--14-*-*-*-*-*-jisx0212.1990-0:
----------------------------------------------------------------
xrdb -query
↑このコマンドは意味がわからないのですが、何を行うのでしょうか?

No. 1040 # 68user 2000/08/01 (火) 01:07:49
> gzip: mew-1.94.2.tar.gz: unexpected end of file
mew-1.94.2.tar.gz のダウンロードに失敗したんでしょう。
ブラウザで落としたなら、別の HTTP/FTP クライアントを試す。
ftp の ascii モードで落としたのなら、binary モード。

> それと、.netscape/ のことについてですが、
自分でエディタなどを使って覗いてみましたか?

> その 99/ フォルダに入れたキャッシュファイルの効果があるか、
> 良く解らないのです。これって、意味ありますか?
ls -lud 99/ で、最終アクセス時刻が得られます。その結果で
判断できるでしょう。


> FTPでデータを転送するさい、失敗することはありえるのでしょうか
ユーザ認証の失敗とか、コネクションが張れないとか、ascii/binary の
設定ミス以外にビット化けするか、ということですか?

IP データグラムでは、そもそもデータ部のチェックサムが存在しませんので、
ノーチェックです。一方、TCP データグラムはチェックサムがありますが、
「化けてもチェックサムが同じで、検出できない」ということがどれくらいの
確率で起こるのかはわかりません。おそらく論文のネタになっているでしょうね。

No. 1041 # 68user 2000/08/01 (火) 01:12:43
僕の回答を再掲します。
> OS 名と、Netscape をどうやってインストールしたか
ちゃんと読んでますか?

あと、原因の切り分けを行ってください。~/.Xdefaults の
各行をコメントアウト (リソースのコメント開始は `!' )
して動けば、原因はリソースなんでしょう。rm -rf ~/.netscape
して動けば、原因は netscape の設定ファイルがおかしくなって
しまったんでしょう。

No. 1042 # 68user 2000/08/01 (火) 01:14:56
> TCP データグラム
TCP セグメントでした。

No. 1043 # yuji 2000/08/02 (水) 09:15:28
どうも、ご無沙汰しております、yujiです。(^^)
今、指定されたディレクトリ以下のファイル一覧を表示させたい、
と考えているのですが、再帰関数を使った場合、
ファイルハンドルがグローバルのため、値の上書きになって
しまい、うまくいかないようです。ローカルなファイルハンドルというのは、できるんでしょうか?myやlocalで試してはみたのですが。(^^;
なにかよい方法は、ないでしょうか。

また、$home/$fileのカタチで出力する場合、どのようにするのがよいでしょうか?
"$home/$file"とすると、/$で変数ではなく文字として解釈されると
思うのですが。"$home/".$fileとして逃げたりしているんですが。(^^;
こちらのほうでも、別の方法などありましたら、よろしくお願いします。

#!/usr/bin/perl

GetFiles(".");
exit(0);

sub GetFiles(){
local($dir)=@_;

print "In $dir\n";
opendir(DIR,$dir);
while($file=readdir(DIR)){
    if(-d $file && $file ne '.' && $file ne '..'){
    &GetFiles($file);
    }else{
    if($file ne '.' && $file ne '..'){print "$file\n";}
    }
}
close(DIR);
}

No. 1044 # B-MAX [E-mail] 2000/08/02 (水) 09:19:37
@68user様
ご回答、ありがとうございました。
もう少しTCP/IPについて勉強してみます。

No. 1045 # 68user 2000/08/02 (水) 09:52:14
    local(*DIR);
とします。なお、ハンドル DIR だけでなく $DIR も @DIR も %DIR も
全て localize されます。あるいは
    $handle = 'unique string';
    opendir($handle,'.');
とか。あと、こういう疑問が出てくるなら、
    http://www.oreilly.co.jp/BOOK/adperl/
をお勧めしておきます。

> "$home/$file"とすると、/$で変数ではなく文字として解釈される
/$ でも問題ないです。\$ と勘違いされてませんか?

No. 1046 # yuji 2000/08/02 (水) 11:41:15
すばやいお返事、どうもありがとうございました。
おかげさまで、うまくいきました。(^^)
書籍の情報、参考にさせていただきますので。
そうですね。すいません。(^^; >勘違い
スラッシュとバックスラッシュを使っていまして。

FTPで、指定したディレクトリ以下を決まった時間に、
指定したFTPサーバーのディレクトリに、自動的にアップロードするスクリプトを
作成していまして。これで次のステップに進めそうです。(^^)

今後とも、どうぞよろしくお願いします。

#!/usr/bin/perl

GetFiles(".");
exit(0);

sub GetFiles(){
local($dir)=@_;
local(*DIR);
local($file);

print "In $dir\n";#ディレクトリの作成などに。
opendir(DIR,$dir);
while($file=readdir(DIR)){
    if(-d "$dir/$file" && $file ne '.' && $file ne '..'){
    &GetFiles("$dir/$file");
    }else{
    if($file ne '.' && $file ne '..'){print "$file\n";}#ファイルごとの処理
    }
}
close(DIR);
}

No. 1047 # yuji 2000/08/02 (水) 12:18:15
近況報告ですが、回線が専用線になりまして。(^^)
今後は、apache+php+データベースに取り組んでいきたいと考えております。
Xt、おもしろいですよね。以前、ちょっとだけ取り組みました。

ディレクトリには、1個以上のファイルが含まれることが
多いですから、こっちのほうがスマートでしたね。(^^;
それでは、また。

#!/usr/bin/perl
GetFiles(".");
exit(0);

sub GetFiles(){
local($dir)=@_;
local(*DIR);
local($file);

print "In $dir\n";
opendir(DIR,$dir);
while($file=readdir(DIR)){
    if(-d "$dir/$file"){
        if($file ne '.' && $file ne '..'){
        &GetFiles("$dir/$file");
        }
    }else{
    print "$file\n";
    }
}
close(DIR);
}

No. 1048 # いち 2000/08/02 (水) 18:27:43
御回答ありがとうございます。

ちなみに僕の使っているOSはSunOS 5.6で、
Netscape はバージョン4.7です。

HTTP/FTP クライアントについては、
ネットワークプログラミングの基礎知識で今勉強中なのですが、
ftp の ascii モードと binary モード
というのがなんなのか良く解りません。


.netscape/ については less で覗いてみて、
bookmarks.html は、ブックマークに登録してあるもの、
history.list は、
URLを入力する所の右の下向き矢印をクリックすると表れるURL一覧、
preferences.js は、設定ファイルだと思うのですが、
plugin-list 、plugin-list.BAK については解りません。
その他のファイルについては、見ようとすると

"ファイル名" may be a binary file.
See it anyway?

という表示が出てきて、yesと答えても意味の解らないものが出てくるだけでした。


netscapeのキャッシュの事に関しては、
ls -lud 99/ と入力すると、99/ディレクトリにアクセスされていましたが、
その99/ディレクトリの中のファイルに関して、そのコマンドを入力すると、
アクセスされていませんでした。
これって、だめなのでしょうか?


あと、umask というコマンドについてなのですが、
ファイル、ディレクトリ作成時に、
ファイルのパーミッションを -rw-------
ディレクトリのパーミッションを drwx------
としておきたく、umask の値を変更したいのです。

umask が0の時のパーミッションは、
ファイルが -rw-rw-rw- で、
ディレクトリが drwxrwsrwx なのです。
groupの部分に s の表示があるため、umask 2067
としたらうまくいかないので、umask 77 としたら、
ディレクトリのパーミッションは drwx--l--- となりました。
groupの l も消すようにしたいのですが、どうしたらいいですか?

No. 1049 # 68user 2000/08/02 (水) 23:32:28
@いちさん
> ftp の ascii モードと binary モード
> というのがなんなのか良く解りません。
http://X68000.startshop.co.jp/~68user/unix/pickup?ftp のように
どこかの ftp サイトから mew-1.94.2.tar.gz をダウンロードして下さい。
get の前に binary とタイプすればいいです。

> .netscape/ については less で覗いてみて、
ね、自分で調べればそれなりにわかるでしょ。まずは
自力で調べて、それでもわからなければ質問して下さい。

その他については、strings で見ればわかるかもしれません。
それでもわからないものについては、多分僕にもわからないです。

> 99/ディレクトリの中のファイルに関して、そのコマンドを
> 入力すると、アクセスされていませんでした。
> これって、だめなのでしょうか?
ダメなんでしょう。ということは、おそらく
    % strings ~/.netscape/cache/index.db
で、ファイル名が出ないでしょうから、そもそも URL と
キャッシュファイルとのマッピングが出来ていないということです。

> あと、umask というコマンドについてなのですが、
umask 77 で、mkdir でディレクトリを作成したら
drwx--l--- になりますか? SunOS 環境が今手元に
ないので試せませんが、本当ですか?
# l の意味は ls のマニュアルを参照のこと。

@yujiさん
> 近況報告ですが、回線が専用線になりまして。(^^)
実はうちも専用線になったので Postgres をいじって遊ぼうと
思ってたら、仕事のせいで暇が全くなかったりします。

機能仕様書や詳細設計書を書いたり、Word や Excel に
苦しむ生活はもう嫌 (-_-#

No. 1050 # my [E-mail] 2000/08/04 (金) 11:39:12
はじめまして。
私は今プログラマーの仕事をしております。

今回の質問というのはcronについてです。
現在、UNIXを使って「指定した時間にプログラムを実行させる」
ということをしようとしています。
crontabに日時などの情報とコマンドを記述するらしいということは
わかったのですが、どうも思ったようにいきません。
crontabに日時、echoコマンドを記述したところ
mailで返ってきました。
インターネットからの情報ではechoコマンドやエラーが出たときは
mailで返って来るということなので、それはそれでよかったのです。
しかし、いざ実行したいシェルを書きますと、
シェルが起動してくれませんでした。
cronはシェルを起動することもできるんですよね?
シェルはフルパスで指定しましたし、chmodで実行を許可しておきました。
そして、何せシェル単独では動くのです・・・。
cronを使ってシェルを起動させるのに、ほかに何か注意する点はありますか?

お忙しいところすいません。
もし何かわかることがございましたら、お答えいただきたく思います。

それでは、よろしくお願いいたします。

No. 1051 # 68user 2000/08/04 (金) 13:14:22
> ほかに何か注意する点はありますか?
必要な環境変数が設定されているか、例えば PATH は
通っているか、などをチェックしましょう。cron で
env コマンドを実行すればわかるでしょう。

No. 1052 # Syuichi.K [E-mail] 2000/08/06 (日) 05:20:18
この掲示板を観ていて、
ソース類を頻繁に書き込む掲示板では、独自タグでtextareaを表示できるようにすると
1.ドラッグによるテキスト選択がやりやすい(普通の表示だと異様にやりずらいブラウザがあります)
2.1ページのログの縦幅が減る
という利点があると思ったのですがどうでしょうか。

#独自タグは人によって意見が全然違うのでしょうが
##「違うのでしょうが」っていうのは日本語としておかしいのでしょうが

No. 1053 # じょん 2000/08/07 (月) 15:56:49
はじめまして、教えて下さい。

Apache 1.3.12
TurboLinux 6.1
の環境で cgi-bin フォルダがあります。
.cgi のファイルは正しく実行されるのですが、
.html のファイルまで実行しようとする様子で、エラーになってしまいます。
多分、Apache の設定だと思うのですが、資料がなくてわかりません。

ご教授よろしくお願いします 

No. 1054 # has 2000/08/07 (月) 16:27:37
perlでローカルタイムと標準時との間の相互変換をする方法について
質問です。

$t = time;
($sec,$min,$hour,$day,$mon,$year,$wday) = gmtime($t);
または
($sec,$min,$hour,$day,$mon,$year,$wday) = localtime($t);

とすると、現在の時刻に関する情報(秒、分、時、日、年、月、曜日)が
得られますが、この($sec,$min,$hour,$day,$mon,$year,$wday)がわかっているときに
$tを得るにはどうしたらよいのでしょうか。

No. 1055 # 68user 2000/08/07 (月) 17:46:23
@じょんさん
> .html のファイルまで実行しようとする様子で、エラーになってしまいます。
おそらく
    http:// hostname/~foo/cgi-bin/
でなくて、
    http:// hostname/cgi-bin/
の話だろうと思いますが、デフォルトでは httpd.conf で
    ScriptAlias /cgi-bin /usr/local/www/cgi-bin
などとなっているので、全てのファイルが CGI プログラムとして
認識されます。なので、
    Alias /cgi-bin /usr/local/www/cgi-bin
にすればよいです。ただし根本的には /usr/local/www/cgi-bin に
CGI プログラムしか置かないというのが (apache の思想としては)
正しいです。

@Syuichi.K さん
> ソース類を頻繁に書き込む掲示板では
空白の話ですよね。空白を &nbsp; に変換しようかなと考えて
いたのですが、それだと
> 1.ドラッグによるテキスト選択がやりやすい(普通の表示だと
> 異様にやりずらいブラウザがあります)
> 2.1ページのログの縦幅が減る
というのは解消できないのでしょうか? 「ドラッグしづらい」
「縦幅が減る」の意味がちょっとわからないです。

@has
> この($sec,$min,$hour,$day,$mon,$year,$wday)が
> わかっているときに $tを得る
Time::Local モジュールを使います。perldoc Time::Local を
参照のこと。perl4 なら require 'timelocal.pl' です。

ところで、お盆には行けない可能性が大になりました>has
今の状況だと、夏休みを取れるかどうかも怪しいという…。

No. 1056 # has 2000/08/07 (月) 20:39:23
@68user
ありがとうございました。
調べてみますです。

お仕事大変そうですな。
時間のとれたときにでも、
ゆっくりお話ししましょう。

No. 1057 # じょん 2000/08/08 (火) 12:06:08
68user さんありがとうございます。
アドバイスを元に、試行錯誤してうまくいきました
Apache って面倒ですね (^^;)

今後も、よろしくお願いします。 m(_'_)m 

No. 1058 # gongo [E-mail] 2000/08/08 (火) 20:14:01
@68user様
どうも、ご無沙汰しております。Xアプリケーション作成中のgongoです。
前回68user様に教えていただいた通り、イベントハンドラを用いて
線を描くことができました。そこで今度はXDrawLineだけではなく、
他のXlibの関数を用いて絵を描こうと思い実行してみたのですが
問題が生じてしまいました。前回のプログラムからちょこっと直したので
次のようになっております。
http://www.din.or.jp/~gongo/xtshirts.c (プログラム本体)
http://www.din.or.jp/~gongo/color.dat (色設定)
http://www.din.or.jp/~gongo/outline.dat (絵の輪郭のための座標)
http://www.din.or.jp/~gongo/polygon.dat (絵を塗り潰すための座標)
今回やろうとしたのは、
1.絵を描くための窓を白で塗りつぶす(最初のみ)
2.窓に影をつける(見た目を格好よくしたかったため)
3.全ての窓に同じ絵を描く
4.その絵に輪郭をつける
です。で、問題というのはこれらすべてはExposeイベントによって
処理されるようにしたのですが、どうも窓の名前(window1,window2など)
が表示されてしまいます。窓に何も描いていない場合でない限り
窓の名前は表示されないものと思っていたのですが、今回絵を描いても
窓の名前が表示されたりされなかったりします。Exposeを何度も起こして
(上に他の窓を持って来たりして)動作を確認していたのですが
窓の名前が表示されるときもさればそうでないときもあるため
原因がいまいちわかりません。

どうかよろしくお願い致します。

No. 1059 # 68user 2000/08/08 (火) 22:51:30
まず、
    - Window?? というのは Xt のラベル
    - その下の服やらなんやらは Xlib
です。

Xlib の方は Expose が発生すると再描画するように EventHandler を
設定しています。しかし、Xt の方は Xt が勝手に Expose を取得し、
再描画しています。

で、表示される/されないの現象を見るに、
    - Xlib の方は、ウィンドウの一部が露出しただけで常に
        再描画するようになっています。なぜならウィンドウ全体である
        form に Expose イベントハンドラとして、全ての Xlib な画像を
        再描画するように設定されているからです。
    - Xt のウィジェットの方は、自分自身のウィジェットが
        露出しない限り、再描画しません
なので、xtshirts のウィンドウの半分を別のウィンドウで覆い、
その後 xtshirts ウィンドウを露出させると、隠れていなかった
部分のラベルが消えます。これは、隠れていなかった部分の
ウィジェットは再描画しなかったのに、Xlib の方が再描画
してしまったからでしょう。

対策としては、
    - Xlib の方でも本当に関係ある Expose だけを拾うようにする。
    - Xlib の方で Expose を受けたら再描画し、その後 XClearArea
        (だったかなぁ?) で隠れてしまったウィジェットの方に
        Expose イベントを送る
でしょうか。あるいは重ね合わせを簡単に指定できる方法が
あるのかもしれません。

以上、Xt 素人の意見でした。大外しの可能性もありますので、
盲目的に信用しないで下さい。

ちなみに initflag の部分は
    - 結局一度しか実行されない (main だから)
    - コールバックやイベントハンドラは一度設定したら、ずっと
        その設定が残る (再設定しない限り)
なので、意味はないと思います。

No. 1060 # gongo [E-mail] 2000/08/09 (水) 03:23:55
@68user様
本当にありがとうございます!
どうしてあのような状況になったのかだいたい理解できました。

>form に Expose イベントハンドラとして、全ての Xlib な画像を

これについては最初は各ウィジェットごとにExposeイベント処理をしよう
かとも思っていたのですが、アプリケーションの見た目のために
意味もなくつけた影となる窓もXlibを用いて色を塗っていたため
全部のウィジェットについてExposeを設定するよりもformの方が
簡単かなぁと思ってしまったためです。

ご提案してくださった対策法につきましては2つ目の方がちょっと
まだわからないところがあるのでいろいろやってみたいと思います。

基本的にはXtのラベルには出てきてほしくないものなのですが・・・。

No. 1061 # gongo [E-mail] 2000/08/09 (水) 21:13:23
@68user様
Xtのラベルを表示させないようにするのは成功しました。
結局各ウィジェットごとにExposeイベントの処理を行うことにしました。
そこで次に各ウィジェットごとに服の色を変えようかと思い、
DrawOnWidgetの中でdrawgcの属性値を変えようとしたのですが
どうもうまくいきません。1つのGCを各ウィジェットに対して
属性値を変えつつ使い回すのは無理なのでしょうか。
どうしても最初の窓用に設定した色で全て塗りつぶされてしまいます。
プログラムはこちらです↓
http://www.din.or.jp/~gongo/xtshirts.c
http://www.din.or.jp/~gongo/color.dat
http://www.din.or.jp/~gongo/fixedcolor.dat
http://www.din.or.jp/~gongo/polygon.dat
http://www.din.or.jp/~gongo/outline.dat

まだ先の話ですが、いずれは1つの窓をクリックすることで
全ての服の色に影響を与え、再描画するようにしたいと考えております。
どうか宜しくお願い致します。

No. 1062 # 68user 2000/08/09 (水) 21:54:47
たぶん、DrawOnWidget の fscanf で、バッファオーバーランを
起こしています。そのため windownum が上書きされ、値が常に
0になってます。例えば POLNUM の数を増やすと動作しました。

開発初期段階のうちから
    if ( j >= sizeof(polpoints)/sizeof(polpoints[0]) ){
        オーバーラン
    }
というような自動チェックのコードを仕込んでおくこと
をお勧めします。

あと、デバッグは、もうちょっと注意深くやってみましょう。
XChangeGC 周辺で windownum や pixelnum[windownum] の
値を表示させるだけで、おそらく気づいたことでしょうから。

No. 1063 # 68user 2000/08/09 (水) 22:16:39
ちゃうな。POLNUM は正しいのか。というわけで、
    誤: fscanf("%d%*c%d%*c",&polpoints[j].x,&polpoints[j].y);
    正: fscanf("%hd%*c%hd%*c",&polpoints[j].x,&polpoints[j].y);
ですかね。XPoint のメンバ x,y は int でなく
short int です。

No. 1064 # gongo [E-mail] 2000/08/10 (木) 00:16:58
@68user様
お手数おかけ致しまして申し訳ございませんでした。
DrawOnWidgetに入った時点でwindownumがきちんと受け渡されて
表示されていたので、てっきり大丈夫なのだと思いこんでいました。
以後もう少し気をつけてデバック致します。

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