68user's page 掲示板

Prev< No. 820〜910> Next  [最新発言に戻る] [過去ログ一覧]
No. 820 # Yuuki [URL] 2000/03/24 (金) 09:38:40
> あと、Windows+perl を使うときの参考ということでリンクを
> 張りましたが、よいですか?>Yuuki さん
はい。大丈夫です。

No. 821 # 68user 2000/03/25 (土) 07:13:21
> はい。大丈夫です。
了解です。

> 自分で組むと全く動かないです(w
CGI ってのはデバッグしにくい環境なので、いろいろと
がんばってみて下さい。

いろいろとありまして、転載についての説明を
    http://X68000.startshop.co.jp/~68user/
に加えました。ご一読下さい。

予告通り、4月中旬まで掲示板は閉めます。ではまた。

No. 822 # ftptransのforkのところをselectで書くと [E-mail] 2000/04/18 (火) 10:13:19
68user様
突然掲示板に書き込む無礼をお許しください。
私はネットワークの勉強をし始めたばかりの薩摩という者です。
こちらのページは大変奥深く、いつきても感動してしまいます。

ところで、今回意を決して掲示板に書き込むことに決めたのは、
ftptransのforkの部分を4引数selectを用いたらどうなるかを
知りたかったためです。

自分で考えてみたのですが、ソースが汚くなってしまい、
もし68user様ならどのように書かれるのか気になって
しまったのです。本当ならこういうソースはメール等で
お送りすべきとは思うのですが、こちらの方でするように
とありましたので、いかに書きます。なお、ftptrans内で
用いられているサブルーチンはそのまま使わせて頂きました。

if ($passive){
    &client_work(DATA,$data_connection_host,$data_connection_port);
}

$rin = &set_bits(COMMAND,DATA,DATA_WAITING);

while(1){
    $ret = select($rout=$rin,undef,undef,undef);

    if(fileno(COMMAND) && vec($rout,fileno(COMMAND),1)){
        $ret = &read_response;
        if ( $ret =~ m/^5/ ){
            print STDERR $ret;
            close(DATA);
            close(DATA_WAITING);
            exit;
        }elsif( $ret =~ m/^1/ ){
            if ($mode eq put){
                open(IN,$infile) || die "$infile: $!";
                while (<IN>){
                 print DATA $_;
                }
                close(IN);
            }
        }elsif( $ret =~ m/^2/ ){
            close(DATA);
        }
    }elsif(fileno(DATA_WAITING) && vec($rout,fileno(DATA_WAITING),1)){
        accept(DATA,DATA_WAITING);
        $rin = &set_bits(COMMAND,DATA,DATA_WAITING);
        close(DATA_WAITING);
    }elsif(fileno(DATA) && vec($rout,fileno(DATA),1)){
        open(OUT,">$outfile") || die "$outfile: $!";
        print OUT <DATA>;
        close(OUT);
        close(DATA);
        exit;
    }
}

sub set_bits {
    @sockets = @_;

    $rin="";
    foreach $sock (@sockets){
        if(fileno($sock)){
            vec($rin,fileno($sock),1)=1;
        }
    }
         return $rin;
}

sub to_bin {
    return unpack "B*",$_[0];
}

以上です。投稿が非常に長くなってしまいましたが、
気付いた点がありましたら御指摘いただけると幸いです。
また、68user様がかかれた物も拝見できましたら
ありがたいのですが。

以上、よろしくお願いします。

No. 823 # 薩摩 [E-mail] 2000/04/18 (火) 11:31:09
ごめんなさい。下の投稿をしたのは僕です。
名前が抜けていました。どうも削除はできないようなので、
もう一度投稿しました。
本当にごめんなさい。

No. 824 # へにか [URL] 2000/04/18 (火) 21:52:16
どうも、おひさしぶりです。再開おめでとうございます。
散々アドバイス頂いて、スクリプトも頂いて、そのおかげでなんとか
perl proxyを作れました。本当にどうもありがとうございます!
sysreadの返値がundefかどうかを判定するところではまってました。

これでやっと当初の目的(漢字変換および80桁で折り返す、ヘブライ語
のテキストをiso-8859-8-iからiso-8859-8)に取り掛かれます・・・

No. 825 # 68user 2000/04/18 (火) 22:44:09
ふう、やっとネットワークに繋がった。

> perl proxyを作れました。
あれを完成させてコメント付けて解説付けて公開するつもりでしたが、
全然進んでないので、置いておきます。
    http://X68000.startshop.co.jp/~68user/tmp/2nd-proxy.pl
へにかさんのが これより高機能なら公開して下さいね。

# 不具合:
#  POST の長さについて、実際のデータより少し多めに送ってしまう
#  ような気がする & たまに永遠にソケットを読みに行ってしまう
#  ことがある & ブラウザ側が途中で切断しても proxy 側が感知できない。
#  perl5.004 だと動かないような気がする。perl5.005_05 以降
#  ということで。

>薩摩さん
これって動いているんですよね。ならいいんじゃないでしょうか。
でもまぁ、せっかく select を使っているんだから、
> while (<IN>){
>  print DATA $_;
> }
せずに、read して 再度 select で待つとよいかもしれません。
そうすれば、「現在 〜% 読み込み中、あと何秒、(〜bytes/sec)」
なんてのを刻々と表示できますし。表示するかどうかは別としても、
僕ならそうすると思います。

No. 826 # 薩摩 [E-mail] 2000/04/19 (水) 09:11:08
68user様

有難うございました。なるほど、readを使うとは
思い当たりませんでした。これから挑戦してみます。

有難うございました。

No. 827 # UNIX初心者 [E-mail] 2000/04/20 (木) 10:42:14
68userさんへ

どうも、はじめまして UNIX初心者です。
私はUINXの勉強をし始めたばかりの岡野という者です。
こちらのページはいつもお世話になっています。

実は、userさんにgzipがなぜ使えないのか??
どうしても知りたかったため 投稿をしました。
gzipをインストールをして、pathで環境設定をしたんですが・・・・
バイナリーファイルを実行できません。

gzip -d bash-2.03-sol7-sparc-local.gz
と打ったのですが、
/GNUzip/root/usr/local/bin/gzip:execフォーマットエラー
こう出てきました。
なぜでしょう? OSはsolaris5.7です。

No. 828 # 68user 2000/04/20 (木) 12:50:37
exec フォーマットエラーという意味がわからんので確認して下さい。

適当なファイル foo を用意して、gzip foo で
foo.gz が作成されますか? できるなら、
bash-2.03-sol7-sparc-local.gz が壊れているんでしょう。

gzip foo でも exec フォーマットエラーとなるなら
gzip 自体がおかしいんでしょう。どうやってgzip を
インストールしましたか?

No. 829 # has 2000/04/20 (木) 17:27:53
>68user
こんちは。いろいろおつかれさまです。
もうおともだちはできましたか?

さて、早速ですが、以前作っていただいた掲示板のCGI、
実はダウンロードしたつもりで忘れていたみたいです。
いろいろ探してみたんですが、見つかりませんでした。
なので、お手数ですが、もっかいどっかにアップしてやって下さい。

No. 830 # tototo [E-mail] 2000/04/20 (木) 20:00:27
はじめましてこんにちは。
diffコマンドで質問があるのです。

最終行にnewlineがあるファイルとないファイルを比較したとき、
newline以外の部分が同じでも、その行は違うよと答えてきます。
newlineあるなしに関わらず内容部分だけでdiffするにはどうしたら良いでしょうか。
どうか教えてください。よろしくお願いします。

No. 831 # 68user 2000/04/20 (木) 21:45:07
> diff
うちの GNU diff-2.7 では、-b オプションで
お望みの動作をしているようです。

> もうおともだちはできましたか?
まぁ、それなりに。というより、ずっと一緒に研修受けてるから
自然に仲良くなるって感じですかね。

> もっかいどっかにアップしてやって下さい。
すんませんが、もうちょいデバッグしてから送ります。
どういうバグが残ってたのかも忘れてしまったので。

週末に仕上げる予定。

No. 832 # tototo [E-mail] 2000/04/20 (木) 22:12:52
68userさん、お返事ありがとうございます。

>うちの GNU diff-2.7 では、-b オプションで
>お望みの動作をしているようです

ぼくが使ってるやつで-bオプションを使ってもゆうこときいてくれないです。
何か他の方法あれば教えてください。お願いします。

No. 833 # 68user 2000/04/21 (金) 00:46:31
-y とか -B などはどうですか。なお、FreeBSD の diff では
    http://www.jp.FreeBSD.org/cgi/mroff.cgi?subdir=man&man=diff&dir=jpman-3.4.0%2Fman
という意味です。ご自分の環境の diff のマニュアルを見て、
同じようなのを探して下さい。

なお、SunOS などに付いてくる低機能な diff じゃ無理かもしれません。

あとは perl などで最後の改行を削除してから diff、くらいしか
思い付きませんねぇ。

No. 834 # tototo [E-mail] 2000/04/21 (金) 09:26:10
68userさんへ
お返事ありがとうございます。

ぼくの使っているSunOS環境のdiffではダメなようですね。トホホ。
どうやら末尾のスペースまたはタブしか無視してくれないようです。
perlもつかえる環境ではないのです。仕事先なのでインストールもできないです。
またいろいろとチャレンジしてみます。

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

No. 835 # UNX初心者 [E-mail] 2000/04/21 (金) 10:13:01
65userさんへ
お返事ありがとうございます。

いろいろ調べてみたのですが、SPARC と INTEL
を間違えていたみたいです。
間違えてINTELをダウンロードしてしまったみたいです・・・・

bash-2.03-sol7-sparc-local.gzを展開したら
bash-2.03-sol7-sparc-localになってこれは展開できてるんですよね
でもその後にどうやってインストールしていいかわかりません。
お願いします 教えてください。

No. 836 # 68user 2000/04/21 (金) 13:09:08
> でもその後にどうやってインストールしていいかわかりません。
http://hiroyuki.oresama.org/tech/solaris/install.solaris.html
など。僕は package から入れたことがないので、詳しいことは
わかりません。

> ぼくの使っているSunOS環境のdiffではダメなようですね。
GNU の diffutils を入れるのは? SunOS のコマンドは
貧弱すぎて、僕はほとんど使ってないです。

No. 837 # へにか [URL] 2000/04/22 (土) 22:52:36
>へにかさんのが これより高機能なら公開して下さいね。

僕のproxyは、
1) 1st-proxy.plに対し、
    a) sysreadの返値をdefinedでチェックするところ、
    b) フィルタをかけられるようにしたところ、
    c) 環境変数を配列に貯えたるところ、
    以外は、あまり変わらないところ、
2)68userさんが示された、2nd-proxy.plの不具合の内容に対するような
    観点ではチェックしていない(というか、僕が遊べる程度でしかチェック
    していない)ところ、
という事で、まだまだ公開できるレベルではないです。

すいません・・・

No. 838 # CADファン 2000/04/23 (日) 23:36:33
疑問が何点かあります。
アスキー形式ファイルとは具体的に言えばどういう事なのでしょうか。
それと、中間ファイル、圧縮形式、プロッタ言語の意味がわかりません。
どうか、お教え下さい。困っています。
よろしくお願い致します。

No. 839 # 68user 2000/04/23 (日) 23:50:58
何の話かわからないです。CAD ですか?

> プロッタ言語
HPGL とかのこと? プロッタに座標 (10,20-200,300) の
直線を書かせるには (HPGL を解するプロッタならば)
PD10,20;PA200,300; (だったっけな?) という文字列を送れば、
あとはプロッタが適切に解釈して線を引いてくれるってこと。

アスキーと圧縮形式はコンピュータ一般の用語ですが、
CAD 界ではどうなのか知りませんので何とも言えません。
中間ファイルは CAD の処理系依存でしょう。多分。

なお、僕は CAD を全く知りません。

> 週末に仕上げる予定。
すまんす。仕上りませんでした>has

No. 840 # コペン 2000/04/24 (月) 17:09:22
SFCのドラクエ3ですが、
最後のゾーマにあえません。
のぼっても、もぼっても、くだっても、くだってもおなじ階段とかって、
関係あります????

No. 842 # かくた@ちばし [E-mail] 2000/04/25 (火) 17:42:58
こんにちは。cgi-mlの記事を見て、このサイトの存在を知りました。
大変参考になります。
ところで、
http://x68000.startshop.co.jp/~68user/net/pop3-2.html
に書かれている「Linux や Solaris の /etc/services には……」の部分で、
手元のSolaris2.5.1(x86)及びFreeSolaris7(x86)、Linux(Slackware,Plamo/98)を調べてみましたが、
pop3 110/tcp の記述になっていました。

Solaris2.5.1はわかりませんが、他の環境は私がデフォルト設定でそうなっているのを確認しましたので、
間違いないと思います。
68userさんが見られた設定は、管理者が書き換えたものではないでしょうか?

No. 843 # 68user 2000/04/25 (火) 22:29:32
> Solaris2.5.1(x86)及びFreeSolaris7(x86)、Linux(Slackware,Plamo/98)を
> 調べてみましたが、pop3 110/tcp の記述になっていました。
情報どうもです。僕が調べたのは Solaris 2.5.1 と 2.6 だったかなぁ?
Linux はバージョンはおろか、ディストリビューション名さえ覚えていません。
# NIS で Solaris2.3 から services を引っ張っていた可能性もあるなぁ…。

> 管理者が書き換えたものではないでしょうか?
片方の Solaris は わかっている人が管理してたから書き換えるような
ことはしないと思うし、もう一方の Solaris は素人が管理してたから
多分書き換えるようなことはしないと思いますが、既に確認できないです。

どなたか、この辺の情報をお持ちでないですか? 「うちの Solaris も
pop3 110/tcp」だった、と言っていただければ、その記述は削除しておきます。

No. 844 # かくた@ちばし [E-mail] 2000/04/26 (水) 09:25:37
> # NIS で Solaris2.3 から services を引っ張っていた可能性もあるなぁ…。
古いSolaris(2.5.1も十分古いか?(^^;)だと、pop-3とかで書いてある
可能性が高いですね。pop2だと、以下の記述になってます。

Solaris2.5.1(x86) /etc/services
pop-2 109/tcp # Post Office

Solaris7(x86) /etc/services
#pop2 109/tcp pop-2 # Post Office Protocol - V2
#pop-2 109/tcp # Post Office
(あ、さすがに7まで来るとコメントアウトになってる<デフォルト)

ということで、Solaris2.3からそのままservicesをもってきている場合は、pop-3の
記述であるのも頷けますね。

No. 845 # まめねこ 2000/04/26 (水) 11:55:05
ただいまWAPのペ−ジを作成していますが、どうも文字のエンコ−ドがうまくいかずいきづまっています。
誰か助けてください。

No. 846 # かくた@ちばし [E-mail] 2000/04/26 (水) 16:27:30
> ただいまWAPのペ−ジを作成していますが、どうも文字のエンコ−ドがうまくいかずいきづまっています。
> 誰か助けてください。
環境がどうなのか全く分からないので、的外れかもしれませんが、
HDMLの文字コードに関する問題ならば、
http://www.houshinji.org/hdml.html
のサイトが参考になるかもしれません。

No. 847 # 68user 2000/04/27 (木) 21:38:16
> Solaris2.3からそのままservicesをもってきている場合は、
> pop-3の記述であるのも頷けますね。
では、次回更新時に「古い Solaris (おそらく Solaris 2.3 あたり)
では、pop-3 となっている可能性があります。最近のものだと
大丈夫でしょう。」としておきます。

そういえば、あのときの Linux は…Netboy さんのとこだったかなぁ。
確認しておこう。

No. 848 # 68user 2000/04/28 (金) 01:10:48
Netboy さんに聞いてきました。
    http://www.lunartecs.ne.jp/~segabito/cgi/bbs/minibbs.cgi
debian 系が pop-3 なのではないか、だそうです。
# Linux ってのは Slackware/Redhat/debian 系の3本柱があるんですよね?
# で、Vine は debian 系…?

No. 849 # Netboy [E-mail] 2000/04/28 (金) 07:25:58
失礼します.

>Vine は debian 系…?
いえ,Redhat系です.
設定ファイル作成部分のみDebian系の(古めの?)スクリプトを元に
独自のものを用意した...のかな,という感じです.
インストーラは配色がいい感じの独自のものでした.

Linux関連で'pop-3'になっているものは,どこか当時の
Debianの香がする,ということだけ判りました.

今のDebian(2.2?)は判りません.
おじゃましました〜.

No. 850 # 68user 2000/05/01 (月) 19:45:41
どうもです。

というわけで、やはり pop-3 な環境もあるようだ、ということを
追記しておきます。

No. 851 # 薩摩 2000/05/03 (水) 17:12:32
68user様

こんにちは。
以前お世話になりました薩摩です。
その節はありがとうございました。

実は、68user様のecho-serverプログラムを参考にしまして
ローカルで動くftpproxyを作ったのですが、echo-server
プログラムにftp処理をくっつけただけのプログラムになって
しまいまして、知り合いに配布しようかと考えているのですが、
CGIの引用は自由とは書いてありましたが、これは許可を
取らなくてはと思い、書き込みをしました次第です。

配布してもよろしいでしょうか?

No. 852 # 68user 2000/05/04 (木) 21:00:02
無償配布ならば (メディア代などは受け取っていいです)、
プログラムの再配布・改変はご自由にどうぞ。

ちゃんと決めないといた方がいいかなぁ。とりあえず GNU の
精神を尊重して、GPL チックに扱っていただけると
うれしいです (いいかげんだなぁ)。

No. 853 # 68user 2000/05/04 (木) 21:01:25
テステス。曜日を直したつもり。すいませんが、また cookie が
クリアされてるかもしれません。

No. 854 # 薩摩 2000/05/05 (金) 18:53:53
68user様

配布の許可ありがとうございます。

GNUの精神を尊重して、GPLチックに扱わせていただきます。

これからGNUとGPLを調べなきゃ。

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

No. 855 # へにか [URL] 2000/05/08 (月) 14:49:30
お久しぶりです。

前回、公開しないと言ってしまいましたが、virtual host対応にして、外部フィルタを
使用できるようにしたので、公開したいかと存じます(実はヘブライ語が表示できたので、
嬉しくって嬉しくって仕方が無い←68user様のおかげです、ありがとうございます)。

現在、 http://henika.virutalave.net/japanese/proxy.htm で、仮公開(どこからも
linkしていない)しています。
正式な公開(linkを僕のサイトから張る)に先立ち、説明の書き方等で問題があるか
どうか、是非ともご確認して頂きたいと存じます。お手数ですが、宜しくお願い
致します。いつになるか分かりませんが、同じような文面で、他言語にも翻訳しようかな、
とも、もくろんでいます。

因みに、
1)正規表現が分かってない and/or 恥ずかしいなぁ。
2)よっくもまぁ、ここまで支離滅裂に改造したなぁ。
3)たまに再起動しないと、clientからの新しいrequestを受け付けてくれない。
4)clientからのrequestが増えると、clientはrequestした状態で停止したように
    なってしまうらしく、proxyのlogを見ると、clientからrequestされているはずの
    URIがrequestされていない(Netscape Navigator 4.04[ja]で確認)。
5)変数名を短く、しかも4tabにしました。
6)日本語で掲示板に書き込む際には、その掲示板がjcode.plなどで日本語を処理して
    いないと、文字化けする可能性がある(だから、先ほどview-script.cgiで中身を確認
    しようとしたのですが、失敗したので、やむをえず、MSIEで書き込んでいます)。
という、特徴があります。

追伸:
68user様の掲示板、cookieはクリアされてないみたいです。
あと、曜日は、以前のbugがあったままのほうが、嬉しいです・・・

No. 856 # へにか [URL] 2000/05/08 (月) 18:14:27
タイプミスしました。

誤 : やむをえず、MSIEで

正 : やむをえず、proxyを経由しないで

すみません・・・

No. 857 # ハリー 2000/05/11 (木) 12:04:22
すいません、ちょっとお聞きしたいのですが、viの設定はどこでどのように
すればよいのですか?今の設定では画面の半分くらいまでしか文字が表示さ
れないのですが。
ちなみにテラタームでそのマシンにつなぎに行ってます。

No. 858 # 薩摩 [URL] 2000/05/11 (木) 12:50:34
>68users様
以前配布の許可について質問させていただきました薩摩です。

このたびホームページを開設したしましたので、
展示しているスクリプトについてご意見を伺えると
幸いです。

よろしくお願いします。

http://koten.hypermart.net/

No. 859 # 68user 2000/05/12 (金) 01:05:28
> 正式な公開(linkを僕のサイトから張る)に先立ち、説明の書き方等で問題があるか
> どうか、是非ともご確認して頂きたいと存じます。
別に問題ないです (特に確認を求める必要はないですよ。念のため)。
時間がないので、すいませんがスクリプトは読んでません。

> http://koten.hypermart.net/
うちの NN4.61 で見ると、何も表示されないです。

> 今の設定では画面の半分くらいまでしか文字が
> 表示されないのですが。
環境変数 TERM で何とかなりませんか。env TERM=cons25 vi とか
env TERM=VT100 vi とか。あるいは TeraTerm の設定かも
しれませんが、使ってないので詳しくはわかりません。

No. 860 # へにか [URL] 2000/05/12 (金) 08:01:24
68user様;
どうもありがとうございます。では、近日中に公開いたします。

ハリー様;
ウィンドウサイズの縦が50行くらいで半分くらいになっているなら、
以下の方法がよいかもしれません。うまくいかなかったらすみません。
Setup->Terminalで、開いた画面で、
Terminal sizeのTerm size=win sizeのチェックボックスにチェック
すると、うまくいきませんか? 因みに、Tera Term Pro version 2.3です。
僕は、これでうまくいっています(環境変数は特に設定していなかった
ような気がします)。

No. 861 # 薩摩 [URL] 2000/05/12 (金) 09:13:26
>68users様
大変申し訳ございません。僕はIE5を使っているのですが、
見れていたので問題ないと思っていました。
自分自身の未熟さを知りました。すみません。

少し手直しをしたのですが、見れますでしょうか?

http://koten.hypermart.net/

No. 862 # 68user 2000/05/14 (日) 02:47:58
> 少し手直しをしたのですが、見れますでしょうか?
見られました。

個人的な意見ですが、串や鯖などの言葉は好きになれません。
もちろん薩摩さんのページですので、どういう言葉を使うかは
薩摩さんの自由なんですが。
# スクリプト自体に関する感想でなくてすいません。

No. 863 # 砒(ひ) 2000/05/14 (日) 10:25:53
トップページの 他では役に立たないスクリプト&ファイル が全て
500 エラーで見られないんです。
申しわけありませんが直して頂ければ...

No. 864 # 薩摩 [URL] 2000/05/14 (日) 15:14:03
68user様
>見られました。
ありがとうございます。

>個人的な意見ですが、串や鯖などの言葉は好きになれません。
>もちろん薩摩さんのページですので、どういう言葉を使うかは
>薩摩さんの自由なんですが。
いえいえ、私の方こそ気分を害させてしまいまして、すみませんでした。
本来ならば、来ていただけるだけでも光栄でしたのに、
このようなことになってしまい、私も反省しています。
こういった言葉を使うことがあまりよくないということが
わかりました。勉強になりました。

># スクリプト自体に関する感想でなくてすいません。
言葉の方も、手直しいたしましたので、今度来ていただける
機会がありましたときにお願いします。
それまで僕も精進して少しでも68user様に追いつけるように
なりたいです。

本当にありがとうございました。そして、すみませんでした。

No. 865 # 68user 2000/05/14 (日) 15:27:41
> トップページの 他では役に立たないスクリプト&ファイル が全て
> 500 エラーで見られないんです。
ご報告ありがとうございます。直しました。

No. 866 # 琢磨 2000/05/15 (月) 04:24:12
はじめまして。
いつも参考にさせていただいています。

いきなりな質問でなんなんですが、私は現在PerlでのWebオートパイロット
スクリプトを開発中でして、ちょっとお聞きしたいことがあります。
作業ディレクトリが./として、ダウンロードしてきたファイルを
./dir/fileに保存しようとしたとき、open(FH, ">./dir/file")
ではdieしてしまうんです。
原因は./dirが無いからだ、というのは分かるんですが、ではその都度
mkdirしていかないとだめなんでしょうか?
このmkdirも当方の環境がWindowsのせいかうまくいきません。
`md dir`とかは汎用性が著しく無くなるので避けたいです。
打開策があるなら是非ご教示ください。

上でも少し触れましたが、当方の環境はWindows98+ActivePerlです。

No. 867 # 68user 2000/05/15 (月) 06:24:44
> ではその都度 mkdirしていかないとだめなんでしょうか?
そうです。

> このmkdirも当方の環境がWindowsのせいかうまくいきません。
Windows で mkdir が失敗するとは初耳ですが、本当でしょうか?
どういう風に書いてるんですか?
# Windows + perl の環境がないので試せませんが。

それはそれとして、perl5 なら深い階層のディレクトリを
一発で mkdir してくれる File::Path という標準モジュールが
あります。詳しくは perldoc File::Path で。

No. 868 # 琢磨 2000/05/15 (月) 08:49:53
> Windows で mkdir が失敗するとは初耳ですが、本当でしょうか?
> どういう風に書いてるんですか?
申し訳ありません、気を取り直してもう一度試してみるとうまくいきました(^^;
と言うかmkdirで失敗する現象が再現しません。
またWindowsのファジーさにやられた気がする・・・
お騒がせしました。
一応、
mkdir "./dir", 0604;
と言う感じで書いてます。
以前はエラーメッセージは出ないものの、ディレクトリが作成されていない
と言うような状況でした。

> それはそれとして、perl5 なら深い階層のディレクトリを
> 一発で mkdir してくれる File::Path という標準モジュールが
おぉ、見てみます。
ありがとうございます。

と、言うわけで、失礼しました。

No. 869 # 砒(ひ) 2000/05/15 (月) 22:54:58
先日はジンソクな対応ありがとうございました。

grep について質問なのですが、analog で apache のログを解析するとき
/member/ 以下が邪魔なので grep などにて `/member/' の文字が入った行を
取り除きたいのです。が、マヌアルを見てもそれらしきオプションが見当たりません。
もしなにか方法があったら教えてくださいませ。

No. 870 # 68user 2000/05/15 (月) 23:02:52
grep -v /member/ filename でいいですか?

No. 871 # 砒(ひ) 2000/05/16 (火) 01:07:12
> grep -v /member/ filename

あ〜〜〜〜できましたわぁ〜〜感謝感激
よく読んでなかったですね…
ありがとうございましたー

No. 872 # 入海 2000/05/19 (金) 18:35:37
はじめまして。

「他では役に立たないスクリプト&ファイル」のうち、
nslookup.cgiは、他の方のものと比べ複数入力が可能な点でいいなと思い、
何とかこちらの環境でも使えるように試行錯誤したのですが、
結果表示の際に「ホスト名」「IPアドレス」と表示されるべき部分が、
うまく表示できません(ナカグロ=黒点になる→文字化け?)。
実質的な実りの部分は全然問題ないのですが。

ソース中、put_data のサブルチに渡している引数だと思いますが、
$desc のローカル変数部分の文字化けが絡むのでしょうか。
Windowsの環境でメモ帳などでつくるため、nkfのオプションは -s に
しました。nkfより遅いと言われる jcode.pl も試しましたが不発でした。

あるいはやり方(書き方)が間違っているのでしょうか、
何かアドバイスをいただければ幸いです。

No. 873 # 68user 2000/05/20 (土) 23:29:19
> 結果表示の際に「ホスト名」「IPアドレス」と表示されるべき
> 部分が、うまく表示できません
余計な部分をどんどんコメントアウトしていって、
実質 print "ホスト名\nIPアドレス" だけのスクリプトに
しても化けますか?

またヘッダを
    Content-type: text/html; charset=Shift_JIS
    Content-type: text/html; charset=ISO-2022-JP
などと出力して、ブラウザに明示的に文字コードを伝えても
ダメですか? それでもダメならソースそのものを見せて下さい。
# どこかにそのまま置いてもらえると、文字コードなどが
# わかるので調べやすいです。

> $desc のローカル変数部分の文字化けが絡むのでしょうか。
ということはないと思います。

> Windowsの環境でメモ帳などでつくるため、nkfのオプションは
> -s にしました。
nkf は、CGI の出力を JIS にするために使っているだけです。
    ・スクリプトを SJIS にして、出力も SJIS
    ・スクリプトを EUC にして、出力も EUC
などという場合は、nkf は不要です。

No. 874 # yuji 2000/05/21 (日) 12:33:32
はじめまして、yujiといいます。
たびたび参考にさせていただいています。(^^)
アクセス状況チェックでは、1時間おきに更新されていますが、
これは、どのようにして定期的にプログラムを
実行させているのでしょうか?
サーバー上では、cronが利用できると思うのですが、
プロバイダのほうで提供されてたりするのでしょうか。
それとも他のサーバー上で実行されているのでしょうか。

あと、linux上でPerlを書いているのですが、
LANカードとPPP接続を行った場合に、gethostbyname,
inet_ntoa(inet_aton())のどちらを使ってもLANカードの
アドレスが取得されてしまうのですが、
PPP接続のアドレスを取得する方法というのは、なにか
ありますでしょうか?
ifconfigでpppの部分だけ切り出そうかとも思ったのですが、
exec('ifconfig'');
の出力をどうやって拾うのかがわかりません。(^^;
なにかアドバイスなどありましたら、どうぞよろしくお願いします。

No. 875 # 68user 2000/05/21 (日) 14:34:37
> アクセス状況チェックでは、1時間おきに更新されていますが、
cron でやってます。
    http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/.crontab
のようなファイルを
    % crontab ~/.crontab
として設定します。

> LANカードのアドレスが取得されてしまうのですが、
外部にソケットで接続して、getsockname で取得できるませんか?
(試してません)

> exec('ifconfig'');
Linux の ifconfig がどういう出力をするのかわからないのですが、
    open(IN,"ifconfig |");
    while (<IN>){
        if ( m/ppp.*(\d+\.\d+\.\d+\.\d+\)/ ){
            $ip = $1;
        }
    }
    close(IN);
という感じでしょうか。

No. 876 # yuji 2000/05/22 (月) 03:21:49
お返事、どうもです。(^^)
そうなんですか。>cron
ちなみに、cronは、
どこのプロバイダでも利用できるものなんでしょうか?
telnetができるところなどに限定されるんでしょうか。
>%crontab ~/.crontab

外部に接続すると、そのソケットのアドレスは、
グローバルなIPアドレスでないと困りますから、
それをgetsocknameで取得するということですよね。
ばっちりでした。(^^)

Linuxのifconfigは、
(略 lo eth0など)
ppp0 Link encap:Point-to-Point Protocol
                    inet addr:*.*.* P-t-P:*.*.*.*
(略)
のようなカタチでして、水平タブなどを取り除いて、
.*?の最小マッチングを試してみたところ、取得できました。
外部コマンドの出力は、パイプを利用して取得すると。(メモメモ)

長くなってすいません。(^^;
今後とも、どうぞよろしくお願いします。

No. 877 # 68user 2000/05/22 (月) 05:02:11
> ちなみに、cronは、どこのプロバイダでも利用できるものなんでしょうか?
普通の UNIX なら、おそらく使えます。ただし、
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=73
のように、cron を使えないようにしているプロバイダもあります。なお、
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=74
では、ソースをコンパイルすれば使えるかのような発言をしてますが、
ソースをコンパイルしても無理です。
# /var/cron をいじるために、root の権限で suid を
# 立てなければいけないので。

> telnetができるところなどに限定されるんでしょうか。
そう思って下さい。crontab コマンド自体が使えるなら CGI や
~/.forward 経由でできるかもしれませんが、管理者に断らず
勝手にやるのはお勧めしません。

# CGI が nobody 権限で動いているサーバなら、nobody 権限で
# cron のデータが設定されるわけで。

No. 878 # hiroko amada [E-mail] 2000/05/22 (月) 14:45:03
unixで、sqlファイルを開き、中のコードを見れる状態にしただけでは、
書きこみモードにしない限り、
SQL文の書きこみ、変更はできないようになっているのでしょうか?

No. 879 # goto [E-mail] 2000/05/23 (火) 09:19:44
HP-UX9.06の内蔵HD(/ディスク)がfsckに引っ掛かってしまい、
立ち上がらない現象が発生しています。
ついては、CD-ROMからブートして上記HDをfsckに掛ける必要があるかと
思われますが。
そこで、実際にどのメディアを使い、どのような操作をすべきか
教えて下さい!

No. 880 # 入海 2000/05/23 (火) 18:29:49
> ブラウザに明示的に文字コードを伝えても
> ダメですか? それでもダメならソースそのものを見せて下さい。
> # どこかにそのまま置いてもらえると、文字コードなどが
> # わかるので調べやすいです。
ヘッダ対策はしてたのですが。
ご迷惑をおかけしますが、ソースをアップしてみましたので、
ご覧いただけますか。
http://www.hatsumei.psiweb.com/IPconvert_3.cgi.txt

> nkf は、CGI の出力を JIS にするために使っているだけです。
>  ・スクリプトを SJIS にして、出力も SJIS
>  ・スクリプトを EUC にして、出力も EUC
> などという場合は、nkf は不要です。
知識不足でお恥ずかしいです。勉強になりました。

No. 881 # 入海 2000/05/23 (火) 18:33:26
すいません。アドレス間違えました。
正 → http://www.hatsumei.ab.psiweb.com/IPconvert_3.cgi.txt

No. 882 # 68user 2000/05/23 (火) 21:58:14
http://www.wakusei.ne.jp/twn/lng/red/wwwlng.cgi?show+200005/00050026.txt
と同じですかね。SJIS の全角空白の2バイト目が
@ のコードと同じなので、
        print "  $desc = $after<br>\n";
で化けているんでしょう。例えば、SJIS で
    @a=(1,2,3);
    print " a";
とすると、@a と書いてないのに 1 2 3 と表示されるはずです。

対策としては、スクリプトを EUC にするか、
    print '  '; # 全角空白2つ
    print "$desc = $after<br>\n";
がお手軽でしょうか。

> HP-UX9.06の内蔵HD(/ディスク)がfsckに引っ掛かってしまい、
> SQL文の書きこみ、変更はできないようになっているのでしょうか?
HP-UX も SQL も使ったことがないので わからないです。

No. 883 # 入海 2000/05/24 (水) 16:49:05
68user様。
やはり文字化けでしたか、ありがとうございました。
SJIS での一部の漢字と @ の文字化けは知ってましたが、
全角空白2つでも化けるとは知りませんでした。

教えていただいた「対策」もいいと思いましたが、
  print " \ $desc = $after<br>\n";
と、全角空白の一つ目と二つ目の間に、
エスケープ用にメタキャラクタ \ を置いてみると
ソース的にすっきりするかなと思い、
やってみたらこれでうまく表示されました。

いやぁ、とほほさんのところも覗いてきましたが、
漢字コードひとつとっても、奥深いですね。
ほんとにお世話になりました。ありがとうございました。

No. 884 # 68user 2000/05/24 (水) 20:14:00
別に全角空白が2個だからまずいわけではなく、
    \x81 @ $ d e s c
となるので、@$desc という配列 (シンボリックリファレンス)
を表示しようとしているのでしょうから、
> 全角空白の一つ目と二つ目の間に、エスケープ用に
> メタキャラクタ \ を置いてみると
で本当にうまくいくのか疑問です。確かでしょうか?
それとも jperl だからうまくいく、ということでしょうか。

なお、FreeBSD+perl5.00503 では
    $desc = 'abc';
    print " \ $desc\n";
ではダメでした。

No. 885 # 入海 2000/05/25 (木) 12:22:06
> で本当にうまくいくのか疑問です。確かでしょうか?
再度確認しましたら、文字化けはしていないのですが、
インデント、つまり空白2文字分の字下げはうまくいっていませんでした。
その分が、つめられて行頭に配置されます。

> それとも jperl だからうまくいく、ということでしょうか。
ローカルでなく、プロバイダの Appacheサーバ上ではありますが。

でも、疑問が。
>  print '  '; # 全角空白2つ
>  print "$desc = $after<br>\n";
これでやってみましたが、syntax errorを返してきました。
上の2行目が next token ??? なのだそうです。
エンジンで検索してみましたが、意味がわかりませんでした。
セミコロンは打ってるし・・・。

No. 886 # ヘルツォーカー [URL] [E-mail] 2000/05/26 (金) 13:14:20
はじめまして。
ヘルツォークで検索したら、貴サイトにたどりつきました。

最近私はヘルツォークツヴァイのようなゲームを
自作してみようという主旨のサイトをつくりました。
まだ内容はないのですが、よかったら見て下さい。

トップページから最強の敵を創造る会へどうぞ。

メイリングリストも参加募集中です。
プログラミング好きの方でツヴァイ好きの方、
共にヘルツォークの続編(みたいなもの)を作りませんか。

No. 887 # 68user 2000/05/27 (土) 23:52:32
> インデント、つまり空白2文字分の字下げはうまくいっていませんでした。
半角空白になってませんか?

> これでやってみましたが、syntax errorを返してきました。
> 上の2行目が next token ??? なのだそうです。
タイプミスだと思いますが、直らなければ再度
どこかに置いて、見せて下さい。

> 最近私はヘルツォークツヴァイのようなゲームを
> 自作してみようという主旨のサイトをつくりました。
ゲームをやらないのでよくわかりませんが、最強の
思考ルーチンを作ろう的なページですか。いろんな
思考ルーチン同士を戦わせると面白そうですね。

昔 I/O でそういう記事があったっけなぁ。

No. 888 # yuji 2000/05/29 (月) 01:03:24
どうも、yujiです。(^^)
今、いろいろなサーバーにアクセスして、
HTMLファイルをダウンロードするというプログラムを作成しているのですが、その中にダウンしていると思われるサーバーなどが
ありますと、そこで処理が中断されてしまいます。
そこで、タイムアウト処理のようなものを実装して、
ある程度経過してもダウンロードできないようなら、
次のURLに進むようにしたいと考えています。
こういった場合、どのようにして、
タイムアウト処理を実装したらよいのでしょうか?
forkなどで子プロセスを作成するのでしょうか。
アドバイスなどありましたら、どうぞよろしくお願いします。(^^)

No. 889 # 68user 2000/05/29 (月) 05:19:17
fork するなら、子プロセスで
    $SIG{ALRM} = \&timed_out;
    sub timed_out {
        die 'TIMED OUT';
    }
    alarm(10);
    while (<SOCKET>){
        print $_;
    }
    alarm(0);
などとすればいいでしょう。また、die したくなければ
    $SIG{ALRM} = \&timed_out;
    sub timed_out {
        die 'TIMED OUT';
    }
    eval {
        alarm(10);
        $buf=<SOCKET>;
        alarm(0);
    }
    if ( $@ =~ /TIMED OUT/ ){
        タイムアウトになった
    }
と eval で囲めばよいです。

4引数 select を使う方法もありますが、gethostbyname や
connect で時間がかかると対応できません。
# connect はノンブロッキング IO を使う方法がある。

並行して gethostbyname するにはどうしたらいいのかなぁ?

No. 890 # yuji 2000/05/29 (月) 13:49:39
すばやいお返事とサンプルコード、
ありがとうございます。
$SIG{ALRM}とevalを用いることで、
うまくできました。(^^)
DNSサーバーエラーなどで、
connectで時間がかかる場合があるということで、
connectと<SOCKET>の部分をalarmで
囲むカタチで利用させていただきました。
connectの部分については、
最初にIO::SocketのTimeoutを指定してみたのですが、
うまくいきませんでしたので。(^^;
$SIG{ALRM}=\&timed_out;の\は大切なのですね。
意味合いについて、調べてみたいと思います。
今後とも、よろしくお願いします。(^^)

No. 891 # 入海 2000/06/02 (金) 13:15:22
68user様、遅ればせながら、
>> インデント、つまり空白2文字分の字下げはうまくいっていませんでした。
> 半角空白になってませんか?
どうやら、そのようでした。
ただ、ウインドウズ環境のテキストエディタでは、
全角空白というのが打ちにくいように思いました。
半角空白二つならべて、それで同じかなんて思ってました。
私の知識不足なのかもしれませんが。

ちなみに、下のように書いて、やっとインデントができました。

        print ' '."$desc = $after<br>\n";

No. 892 # 68user 2000/06/03 (土) 18:14:21
> 半角空白二つならべて、それで同じかなんて思ってました。
半角空白を2つ並べてもブラウザに反映されないのは、
perl とは全く関係なくて、出力しているのが HTML だからです。
HTML 的に言えば &nbsp; で空白を表現する方がいいでしょう。

わかっておられるかもしれませんが、念のため。

No. 893 # yuji 2000/06/04 (日) 04:01:52
どうも、yujiです。(^^)
Web上でアカウント発行がいろいろなところで行われていますが、
いたずら防止などもあり、入力したメールアドレスに、
登録内容の確認のメールを送って、再度返信してもらうなど
さまざまな方法がありますが、こういったプログラムは、
どのような仕組みになっているのでしょうか?
かなり漠然とした質問で申し訳ないですが、(^^;
なにかご存知でしたら、どうぞよろしくお願いします。

No. 894 # 68user 2000/06/04 (日) 05:45:40
0. メールが返ってきたらメール処理プログラムが実行されるよう、
    ~/.forward で設定しておく
1. CGI でメールアドレスを入力してもらう。
   適当なファイルにメールアドレスを記録して、メール送信
   この時点で CGI プログラムは終了。
2. 訪問者がメールを受け取り、再度返送
3. メールが届き、~/.forward で設定したプログラムが実行される
   記録しておいたメールアドレスと照合して、正しければ OK。

…てな感じでしょうか。

No. 895 # yuji 2000/06/05 (月) 01:11:43
またまたすばやいお返事、どうもです。(^^)

なるほど。>0,1,2,3
~/.forwardについては、初耳でして、勉強になります。

あと、メールのヘッダやフッタに自動的に広告などをいれている
メールを見かけますが、ああいうものは、
どういったカタチで実現しているんでしょうか?
CGIなどを使って、というカタチでしょうか。

No. 896 # CZ 2000/06/05 (月) 01:18:34
こんばんは。某ラウンジで何度かお世話になりました。

さて、さっそく質問なのですが、ファイルマウントについて教えてください。サーバを一台まるごと借りたはいいのですが、なかなかUNIXが理解できずにいます。

/etc/fstabの中身は一部次のようになっています。

/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /var ext2 defaults 1 2
/dev/hda3 swap swap defaults 0 0

この/dev/hda2を/homeにし、/varは/dev/hda1内に移したいのですが、果たしてできるのでしょうか。ハードディスクのフォーマットなどをしないで行ないたいのですが。/varを一瞬でも消せればいいのですが、/varの中は常駐プログラムなどが収まっているので無理なように思えます。回線経由ですので、telnetなどは起動したままでなければいけません。

ちなみにOSはTurboLinux Server 1.0Jです。何かいいアイディアや参考になるウェブサイト・本があればご教示ください。情報が足りなければご指摘ください。

No. 897 # 68user 2000/06/05 (月) 03:37:00
> この/dev/hda2を/homeにし、/varは/dev/hda1内に移したいのですが、
> 果たしてできるのでしょうか。
できなくはないでしょうが、かなり怖い作業ですね。
特にリモートでの作業になってしまう、というのが。

    1. cd /var
    2. シングルユーザモードに移行
    3. 不必要なプロセスを全て殺す
    4. /etc/fstab から /var のエントリを削除
    5. mkdir /newvar
    6. cd /var; tar zcvf - . | (cd /newvar; tar zxvfp -)
    7. mv /var /oldvar
    8. mv /newvar /var
    9. システムをリブート

かなぁ。7 から 8 の間で、/var 以下のファイルをオープンしようと
するプロセスがあれば、その動作は失敗します。また、(おそらく)
最初に /var 以下のオープンしているプロセスは、7 を行っても
引続き /oldvar 以下のファイルをオープンし続けているので、
最後にリブートが必要です。

/home については、上の作業をした後、

    A. シングルユーザモードに移行
    B. /etc/fstab に /dev/hda2 /home ext2 なエントリを追加
    C. /dev/hda2 を /newhome としてマウント
    D. rm -rf /newhome/* (フォーマット。newfs を使った方がよいけど)
    E. cd /home; tar zcvf - . | (cd /newhome; tar zxvfp -)
    F. mv /home /oldhome
    G. リブート
    H. rm -rf /oldhome

でしょうか。

僕は Linux を触ったことがないので、コマンド名やオプションが
Linux でも通用するかどうかはわかりません。事前に十分シミュ
レーションしてから行って下さい。できれば Linux-users-jp や
fj などで、
    「…という作業手順でいのでしょうか?」
と質問した方がよいと思います。
# もし「それではうまくいかない」「こうすれば簡単だ」という回答を
# もらったら、僕にも教えて下さい :-)

なお、上記の通りにやってうまくいくかどうかは保証できません。


> あと、メールのヘッダやフッタに自動的に広告などをいれている
> メールを見かけますが、ああいうものは、
> どういったカタチで実現しているんでしょうか?
> CGIなどを使って、というカタチでしょうか。
CGI は web の仕組みであって、メールとは全く関係ありません。
# web 上でボタンを押すとそういうメールが送られる、
# というなら関係ありますけど。

確か、そういう機能を持ったメーリングリストプログラムが
あったように思いますし、常に一箇所からしかメールが発信
されないなら、その部分でヘッダやフッタを追加してもいいです。

No. 898 # 68user 2000/06/05 (月) 03:43:52
> 7. mv /var /oldvar
おっと。マウント中のマウントポイントは mv できないかも
(FreeBSD ではそうでした)。

一度 /dev/hd2 を umount すればいいですが、もし device busy
などと怒られたら、umount -f で強制アンマウントできます。
本当は fstat や fuser で、/var 以下のファイルを使用している
プロセスを調べて、それを殺してから umount するのが筋ですけど。

No. 899 # yuji 2000/06/05 (月) 13:27:56
いつもお返事、ありがとうございます。(^^)
表現が悪かったですね。>CGI(^^;
おっしゃるように、この場合は、必ずしもWWWサーバーと
やりとりするわけではないですから。

perlやCによるプログラム
でヘッダやフッターを処理したメールを、SMTPサーバーで
送信しているのか、それともSMTPサーバーのどこかで、
ヘッダやフッターを設定できるのかな、と思いまして。

今のところは、他の場所で使う予定はないですので、
自分で付加するプログラムを実験してみようと思っています。
下のメーリングリスト関連のリンク集を参考に、
いろいろなメーリングリストの特徴を勉強してみようと思います。(^^)
http://yamanoya.ecs.cst.nihon-u.ac.jp/patio/ml/makeml/mllinks.html

No. 900 # CZ 2000/06/05 (月) 21:19:42
お返事ありがとうございます。

早速Linuxのメーリングリストに入る準備をしましたが、業務用に使っているわけではないし、物は試しと思って一発勝負をかけてみました。

% /usr/local/apache/bin/apachectl stop
% fuser -k -m /dev/hda2
| /etc/fstab から /var のエントリを削除

ここで`umount /var`としたら'device busy'が出たので、深く考えずに再度`fuser -k -m /dev/hda2`としたら見事telnetが死にました。そこで
% umount -f /var
% mv /newvar /var
% reboot
この作業を管理会社の方にお願いしました。

| /etc/fstab に /home 追加
% mkdir /newhome
% mount /dev/hda2 /newhome
% rm -rf /newhome/*
% cd /home; tar zcvf - . | (cd /newhome; tar zxvfp -)
ここで何かエラーが出たのですが、読み飛ばし。
% mv /home /oldhome
% reboot

再起動したらさっきのエラーが原因らしく/newhomeの中が空で、かつ/homeができていなかったので、

% cp -a /oldhome/* /newhome
% mkdir /home
% reboot

再起動中に混乱してきました。(そういえばさっきの/newhomeはどうなるんだ? `mkdir /home`は不要だったか?)

% mount
(あ、ちゃんと/dev/hda2 on /home type ext2 (rw)になってる。)
% ls /home
(中身もある。ひょっとして成功か?)

というわけで、成功しました。(あるいは成功したように見えています。)一つ間違えば追加料金を払って再設定してもらうところでした。今までもこんな具合に、システムをほとんど理解しないまま手探りで運用してきました。もっとしっかり身に着けようと、本などを買って勉強してはいるのですが。

ただ、/newhomeと/homeが両方存在しています。/newhomeは消しても構わないと判断できるでしょうか。

No. 901 # 68user 2000/06/06 (火) 01:01:56
> ただ、/newhomeと/homeが両方存在しています。/newhome は
> 消しても構わないと判断できるでしょうか。
多分よいと思いますが、df -k して、別パーティションで
あることを確認して下さい。また、本当にコピーできたか
どうか du や diff などで確認して下さい。

> `mkdir /home`は不要だったか?
/dev/hda2 を /home にする、ということなのでマウントポイント
/home はマウントする前に mkdir で作成しなければなりません。

なお、マシンが手元にあるなら、シングルユーザモードで起動してから
作業をするのが正しいやり方です。


> perlやCによるプログラムでヘッダやフッターを処理したメールを、
> SMTPサーバーで送信しているのか、それともSMTPサーバーのどこかで、
> ヘッダやフッターを設定できるのかな、と思いまして。
SMTP サーバがヘッダやフッタに関与することはないと思います
(そういうサーバが世の中に絶対ないとは言い切れませんが)。

ちなみにメーリングリストサーバの fml なんかは、ポリシー
として、フッタを付けるような機能は実装しない方針だった
ように思います (今はどうか知りません)。

No. 902 # mac 2000/06/07 (水) 07:04:04
はじめまして。

pl(cgi)で
    $A="abc";
この$Aに入っている“abc”をクリプト化したいのですが
どのようにすればよろしいですか?

No. 903 # james [E-mail] 2000/06/07 (水) 16:25:30
Xwindowのソフト開発をやらなければいけません。が、まったく分かっていない状態だと思います。
サンプルプロを入力して起動させると、画面は表示されないままだんまり状態になります。
fputsのstdoutで処理通過点を表示させると、XtMainLoop()のところでだんまりになってる様です。
しかし、どのように原因を究明していいのか、ディバッグツールは何があるのか全く分かりません。
古いUNIXの本にadbと言うディバッグツールが乗っていたのでmanで説明を見て(と言っても英文なので見たつもり)
いろいろ表示させて見ましたが、内容を見ても分からない状態です。
一体何をどうすれば、いやいや、何からどう始めれば、はたまたどんなマニュアルを購入すれば、少しはましな状態になるでしょうか?
どうかお願いします。どんなヒントでもいいので教えてください。
順序が後先になりましたが、OSはSolaris7、言語はC、マシンはSUNです。
掲示板に書き込むのは初めてなのですが、これでよろしいでしょうか?
でれでは・・・。

No. 904 # 68user 2000/06/08 (木) 02:32:14
> この$Aに入っている“abc”をクリプト化したいのですが
お望みのものかどうかわかりませんけど、
http://X68000.startshop.co.jp/~68user/webcgi/cryptogram.html など。

> fputsのstdoutで処理通過点を表示させると、
> XtMainLoop()のところでだんまりになってる様です。
僕は Xt のプログラムを作ったことがないのですけど、
XtMainLoop で戻ってこないのは正しいのではないですか?
その中でイベント待ちをしているわけだから。

No. 905 # james [E-mail] 2000/06/08 (木) 09:35:05
お返事どうもありがとうございます。

確かにおっしゃる通りです。正確に自分のQを伝えていません。ごめんなさい。
XtMainLoopでだんまりになっているのに、画面が表示されないのです。
色々悩んでリソースファイルと言う物が間違っているのかとか思うのですか・・
自分が起動かけてる状態で、どのリソースファイルを見にいってるのかも分からないんです。
だから、本当にリソースファイルが問題なのかどうかも???
マニュアルによると、/usr/lib/X11/app−defaults
と言うファイルだと書いてありますが/usr/libの下にはX11なるディレクトリはありません。
ではapp−defaultsはというと、いくつものフォルダーに存在しています。(ざっと40個位)
はたしてどのファイルなのやら・・・・
こんな状態ではいつになったらソフトが完成するのやら・・と思うと気がめいってきます。
が、やらねば。
何かヒントをお願いします。

No. 906 # レイズナービデオに取って見ていた女 2000/06/08 (木) 11:33:48
「僕の血の半分は地球人の血です!僕の父は地球人です!」「目を覚ませ!エイジ!」「基地の中には僕と同じ位の年の人もいるのです!」・・・レイズナーは一部が面白かったですね。エイジが全裸でカプセルに閉じ込められてる姿はドキドキものでした!二部のエイジはなんかオヤジっぽくてイマイチだと思ったのは私だけ?

No. 907 # 68user 2000/06/08 (木) 20:59:16
> レイズナービデオに取って見ていた女
すいません、おそらく あなたが見たコンテンツは SEGA BBS の過去ログです。
SEGA BBS は http://www.sega.co.jp/sega/p_cafe/bbs.html でやってますので、
そこに書き込んでみて下さい。

  > XtMainLoopでだんまりになっているのに、画面が表示されないのです。
つまり、ボタンなどの簡単な部品を表示するだけのプログラムが
動作しない、と解釈していいですか? ソースが短いなら、見せて
もらえばわかるかもしれませんが、わからないかもしれません。

> 自分が起動かけてる状態で、どのリソースファイルを見に
> いってるのかも分からないんです。
truss コマンドで、どのファイルを open(2) しているか
わかるでしょう。

> /usr/libの下にはX11なるディレクトリはありません。
ディレクトリは環境依存なので /usr/X11R6/lib/X11、/usr/X/lib/X11 など
に置いてある場合もあります。

> ではapp−defaultsはというと、いくつものフォルダーに
> 存在しています。(ざっと40個位) はたしてどのファイルなのやら・・・・
app-defaults/KTerm は何のファイルかご存知ですか? kterm が
起動時に読み込むリソースファイルです。

なんで kterm が app-defaults/KTerm を読むかというと、kterm の
クラス名が KTerm だからです。そのクラス名というのは、
XtAppInitialize (古い Xt なら XtInitialize) の引数で指定します。

なので、「app-defaults/あなたの作ったプログラムのクラス名」という
ファイルが存在すればそれが読み込まれますし、存在しなければリソースが
空になるだけです。

> はたまたどんなマニュアルを購入すれば
Xt の本は結構あります。秋葉原などが近いなら、ちょっと覗いてみれば
結構見付かります。ただし、古い本が多いので、既に obsolete な関数
(例えばさっきの XtInitialize とか) を紹介していたりするのが難点。
あと、少し前の UNIX USER で、数回 Xt の説明が載ってました。

No. 908 # 68user 2000/06/08 (木) 23:49:29
> XtAppInitialize (古い Xt なら XtInitialize)
違った。XtAppInitialize も obsolete でした。少なくとも
X11R6.3 なら XtOpenApplication を使いましょう。

# From XtOpenApplication(3Xt)
#  XtAppInitialize and XtVaAppInitialize have been superceded
#  by XtOpenApplication and XtVaOpenApplication respectively.
#
# be supereded ≒ be obsolete と解釈してよいのだろうか?

No. 909 # james [E-mail] 2000/06/09 (金) 17:55:20
毎日どうもありがとうございます。感謝感謝です。

たくさんのコメントどうもです。
まず、app-defaultsファイルの件はtrussと言うコマンドで分かりました。


次に、XtOpenApplicationを使ってコーディングしてみましたが、(以下)
    disp=XtOpenApplication(app1,"xmfonts",NULL,0,&argc,argv,NULL,
        applicationShellWidgetClass,NULL,0);
パラメータの値がよく分かりません。でもこれでコンパイルしたところ
以下のようなエラーでコンパイル出来ません。
内のX11のバージョンは分かりません。
cc /export/home1/sakou/srclib/cstlib/xmfonts.c -c -g -I /usr/openwin/include -I /usr/dt/include
"/export/home1/sakou/srclib/cstlib/xmfonts.c", line 78: warning: improper pointer/integer combination: op "="
cc -o xmfonts xmfonts.o -lXm -lXt -lX11 -lm
Undefined first referenced
  symbol in file
XtOpenApplication xmfonts.o
ld: fatal: Symbol referencing errors. No output written to xmfonts
*** エラーコード 1
make: 致命的エラー: ターゲット `xmfonts' の構築用コマンドが失敗しました。

最後に、マニュアルは、地方にいるので書店にいってもX-windowsのマニュアル
なんてほとんど皆無です。
どんなマニュアルがあるかも分からないのでネット上で一生懸命探しているのですが
内容が分からないのと、価格がPCの物と比べて高価なのとでなかなか
自分では決められない状況です。

もう一つ、自分の無知さがまた一つ分かりました。
X-windowsのプログラムはXlibだけでもコーディング出来るのですか?
XツールキットとかMotifルーチンとかが無くても出来るのですか?
XツールキットとかMotifルーチンは簡単にコーディングするための
ライブラリーなのですか?
ほかにOpenGLとかXveiwとかも聞きますがそれらの位置関係が全く
分かっていない事が分かりました。(今まではすべて使って初めてプログラムが
完成する。と思っていました。それなのにサンプルプロは様々な関数を
使ってあるのでなぜ???って)

ではまた。byebye。です。

No. 910 # 68user 2000/06/09 (金) 22:35:15
すいません、Xt のつもりで書いてました。Motif なんですよね。
Xt* のくだりは無視して下さい。その他は後ほどまた書きます。

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