68user's page 掲示板

Prev< No. 18〜34> Next  [最新発言に戻る] [過去ログ一覧]
No. 18 # 68user 1998/10/29 (木) 02:55
> ってことで、この部分は全面的に改良して、非圧縮でやるとこを
> 目標としときます。

ん〜、圧縮しないと1MB近くになりますよ。

> なるほど。requireでインクルードしてくるファイルが2つあるので
> pushも二つある訳ですな。

ちゃいます。timelocalはシステム標準のディレクトリ
(/usr/local/lib/perl5/とか/usr/share/perl/など)に
あるので、そのままrequireするだけでOKです。

pushが2つあるのは、このCGIをwww.cs.gunma-u.ac.jpと
www.cc.gunma-u.ac.jpのどちらでも動作させるためのものです。
# まぁあれは僕の環境に合わせるための記述なので、
# 深く考えなくてもいいです。

> timelocal.pl

というわけで、サーバがUNIXならまずそこに置いてあると
思うのですが、一応 http://X68000.startshop.co.jp/~68user/tmp/timelocal.pl
に置いておきます。

> nkfこれが問題。

nkfはコマンドです。まず
    http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#nkf
を読んで、nkfの機能を知ってください。

で、DOSで
    A:\>type hogehoge | more
などとパイプを使ったことあります? これは
more < hogehogeと等価ですよね(多分…DOSは忘れた)。
それと同じで、
    % nkf -e < hogehoge

    % cat hogehoge | nkf -e (UNIXのcat=DOSのtype)
と同じです。

つまり、落としたファイルはSJISなので、nkfを使って
EUCに変換しているわけです。
# ところで、open(IN,"hoge|")とかopen(OUT,"|hoge")
# という意味はわかりますか?

httpdownについてはまた後で書きます。とりあえず、
UNIXで実際にhttpdownを動かしてみるのが一番わかりやすい
ことは確かです。

それからtarですけど、
    tar zxf hoge.tgz = lha e hoge.lzh
    tar zcf hoge.tgz *.shtml = lha a hoge.lzh
という説明ではダメでしょうか。一応
    http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#tar
も読んでください。


> 2つめ…2000年問題!!!

ふふ…、いまだに2000年問題が残ってたら、強者揃いの
UNIXハッカー連中がよってたかって直しにかかるでしょう。

localtimeが返す年は西暦-1900です。2000年なら100を返します。
なんで-1900かっていうと、やはり昔は2000年問題が残っていたので、
それとの整合性を取るためでしょうね。

あと一部のUNIXには2038年問題があります。1970年1月1日からの
経過秒数が、2038年あたりでlongでは表現できなくなるので。

> あぁ、やっぱりラクダ本買わないとだめだな…

別に質問するなって言ってるわけじゃないですけど
(僕がお願いしたんだし)、-wなどマニュアルを見れば
載っていることは手元のラクダ本を調べた方が早いですよ。
僕に聞くと1日かかることも、ラクダ本があれば数分で
片付きます。

あと、過去ログ閲覧用スクリプトも設置する必要がありますが、
そこには
    s|$&|<a href="$toppage_url">$link_message</a>|;
    s|\Q$&\E|$tmp|;
    if ( m|<a href=.*?noteky_base\.cgi.*?>(.*?)</a>| ){
などが出て来ます。

$&、\Q〜\E、.*?など、ラクダ本がないとかなり困ることに
なると思いますので、購入されることをお勧めします。

一応perl5のマニュアルは
    http://www.bekkoame.or.jp/~syunji/perl/man/index.html
にありますが、最初は本で読む方がいいんじゃないかと
思います。

No. 19 # ROL [E-mail] 1998/10/29 (木) 19:39
昨日のおさらい…
>ん〜、圧縮しないと1MB近くになりますよ。
BIGのサーバーレンタルは50MBもらえるので
容量的には問題ないですね、というか、画像なしでどうやってこの容量をうめるかが問題だな(笑)

>nkf
了解しました。
今までそういった文字コードの変換には「jcode.pl」を使ってたんですよ。
このコマンドがあれば「jcode.pl」いらないな。
そのわりにはCGIの本にはこれで文字コードを変換するようになってるんだけど、
なぜそんなことが必要なんだろう?
nkfって特殊なコマンドなんでしょうか?

># ところで、open(IN,"hoge|")とかopen(OUT,"|hoge")
># という意味はわかりますか?
「パイプ」とか「リダイレクションパイプ」ですよね。
一応本読んでますけど、自分が作るCGIでは使った事ないんですよ。<へぼプログラマー
この例だと、ファイルハンドルINやOUTにパイプを結び付けているってとこまではわかります。
open(OUT…)の場合、今後ファイルハンドルになにか出力すると、hogeにそのデータがわたされる…であってますか?

>tar
説明が非常にわかりやすいです(笑)
ただ、こういったプログラムをレンタルサーバー上で動かしてもいいのかなと思っちゃたりするんですけど…
いいのかな?>サポートに連絡してみよう。

>ふふ…、いまだに2000年問題が残ってたら、強者揃いの
>UNIXハッカー連中がよってたかって直しにかかるでしょう。
ぎゃぁぁぁぁぁ!
めっちゃ恥ずかしい…(笑)
そうなってたのかぁ、勉強になるなぁ(笑)<UNIXについての知識の少なさを露呈してますな(爆)

>購入されることをお勧めします。
今日は忙しくて本屋に行く暇もなかったので、明日買ってきます。

ってわけで、今日はここまで。
仕事が忙しいの…(涙)

No. 20 # 68user 1998/10/30 (金) 00:36
> BIGのサーバーレンタルは50MBもらえるので

まぁ今のところ他に使い道がないなら圧縮しないのも
いいでしょう。

> そのわりにはCGIの本にはこれで文字コードを変換するように
> なってるんだけど、なぜそんなことが必要なんだろう?

nkfはただのUNIXコマンドなので、CGIの本の範疇を越えている
ということでjcode.plを使っているんでしょうね。

僕はnkfの方が慣れてるのと、nkf使った方が多分速いから
使ってるだけですので、代わりにjcode.pl使ってもいいですよ。

> サポートに連絡してみよう。

どちらかと言えば(あくまでも「どちらかと言えば」ですけど)
CPUパワー喰うので、嫌がるところは嫌がるでしょう。
んが、僕は
    「CGIはperlの中で完結しなければならないということは
        ない。UNIXのコマンド使って何が悪い」
という人なので、僕的には完全にOKです。

> 「パイプ」とか「リダイレクションパイプ」ですよね。

です。openの最初や最後に|を付けると、コマンドとして
解釈されてそのコマンドが実行されるわけです。

No. 21 # ROL [E-mail] 1998/11/04 (水) 00:04
BIGのサーバーどうやらnkf使わせてもらえないみたい。
しかも実験の結果、「system」もだめみたいです。
あかん、結構書き直しですな…(苦笑)

No. 22 # 68user 1998/11/04 (水) 02:56
> しかも実験の結果、「system」もだめみたいです。

え〜そんなことは…。もしsystemがダメならperlからは
子プロセス生成できないってことですよ。CGIとして動かすなら
    #!/path-of-perl
    $|=1; # これ大事。
    print "Content-type: text/plain\n\n";
    system("/bin/ls");
でうまくいくはずです。

> BIGのサーバーどうやらnkf使わせてもらえないみたい。

じゃあソース持ってってコンパイルしませう(70%本気)。

No. 23 # ミー [E-mail] 1998/11/25 (水) 20:43
はじめまして。ミーという者です。

FreeBSDについてちょっと質問があるんですが、
私のパソコンでpppとやって、termでモデムとお話をしようとすると、
そこのところが御亡くなりになります。
あまり良く分からないので詳しく状況を書けないのですが、
考えられる原因を教えていただきたく思いまして、書きました。
よろしくお願いします。

No. 24 # 68user 1998/11/26 (木) 00:03
ども、68userです。

僕もよく知らないんですが、
    ppp ON X68000> term
    Working in interactive mode
    Entering terminal mode.
    Type `~?' for help.
となったら、C-cもC-zも効かなくなるんですけど、
    「そこのところが御亡くなりになります」
というのは、このことでしょうか?

「Type `~?' for help.」とある通りに、「~?」とタイプすると、
簡単なヘルプが表示されます。そこにも書いてありますが、
term modeを抜けるには「~.」と打ちます。packet modeに
戻るには、「~p」です。

で、
    ppp ON X68000> term
    Working in interactive mode
    Entering terminal mode.
    Type `~?' for help.
    at(とタイプする。ここは表示されない)
    OK(と表示されたら、少なくともモデムは認識されているはず)
    atdt電話番号(とタイプする。ここは表示されない)
    CONNECT …
とするらしいです。僕の環境ではこれでモデムが電話をかけて
くれるんですが、手動でユーザ認証させる方法を知らないので、
ここまでしかわかりません。

あとは、環境(アナログモデム/ISDN)、ログの内容(/var/log/ppp.log)、
/etc/ppp/ppp.conf、/etc/ppp/ppp.linkupの内容などがわからないと
なんとも言えないと思います。

No. 25 # ミー 1998/11/26 (木) 11:04
>あとは、環境(アナログモデム/ISDN)、ログの内容
>(/var/log/ppp.log)、
>/etc/ppp/ppp.conf、/etc/ppp/ppp.linkupの内容などがわからな
>いとなんとも言えないと思います。
そうでしたね。すみません。
ですが、ppp.confは、サンプルをデバイス部分だけかえているんですよ。
ppp ON mee>term
Working in interactive mode
Entering terminal mode.
Type"~?"for help

は出ます。
この時点で何も打てなくなります。
でないだけかと思って
at [Enter]
と打ってみても反応しません。
とりあえず、もう一回自分で調べてみます。
ありがとうございました。

No. 26 # ミー 1998/11/26 (木) 12:29
やってみると、
~.
~?
は実行できました。~?は文字が化けていましたが...
ただ、at
は反応しません。モデムってカーネルの再構築必要なんでしたっけ?

No. 27 # 68user 1998/11/26 (木) 17:12
モデムは、sioデバイスで認識されます。なお、PCのシリアルポートも
sio?で認識されます。僕の場合は、dmesgで
    sio0 at 0x3f8-0x3ff irq 4 on isa
    sio0: type 16550A
    sio1 at 0x2f8-0x2ff irq 3 on isa
    sio1: type 16550A
となっていますが、sio0がシリアルポート、sio1がモデムです。
この場合、/etc/ppp/ppp.confには
    set device /dev/cuaa1
と書けばいいです。

PCによってはシリアルポートが2つ付いてる場合がありますが、
デフォルトのカーネルコンフィグは
    device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr
    device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr
    device sio2 at isa? disable port "IO_COM3" tty irq 5 vector siointr
    device sio3 at isa? disable port "IO_COM4" tty irq 9 vector siointr
となっているので、モデムが認識されません。
disableを削ってカーネルの再構築をするか、ブート時に
    boot: -cv
で、sio2をenableにするといいでしょう。

# PCのBIOS設定で、シリアルポートを殺すこともできます。
# 僕のマシンはシリアルポートが2個なのですが、BIOSで
# 1つ殺してあります。

pppのtermモードとは別に、cuで調べることもできます。
モデムが認識されてるなら、
    % cu -l cuaa1
    Connected.
    at(と入力)
    OK
    atdt電話番号(と入力)
    CONNECT 9600/ARQ/V34/LAPM/V42BIS
で、モデムが電話をかけてくれます。

    % cu -l cuaa0
    % cu -l cuaa2
などとして、モデムが認識されているか確認してみてください。

もしsio?のいずれもモデムを認識していなかったら、PnPの問題ですかねぇ。
モデムカードの型番を元に、http://www.jp.freebsd.org/で調べてみると
いいと思います。

No. 28 # ミー 1998/11/26 (木) 18:35
ありがとうございました。
試してみると
sio1

type 16550A
とでないで、たしか開けなかったと思います。
(sio0はちゃんと16550Aでした。)
さっそく試してみます。

No. 29 # ミー@超初心者 1998/11/26 (木) 18:43
あの....非常に言いにくいのですが、
実はフロッピーディスクの使い方を知りません。
ひぃぃぃぃ。本当に素人なんです。
あの....フロッピーの使い方をある程度教えてもらえませんか?
(もちろんFreeBSDでです。さすがに、Winでは使えます。)
あ〜、恥ずかしかった...

No. 30 # 68user 1998/11/27 (金) 02:46
http://www.jp.freebsd.org/~yuki/FreeBSD/search.html
から、「QandA」を対象に「フロッピー」をキーワードに検索すると
情報が得られますよ。

MS-DOSフォーマットのフロッピーならここ。
http://www.jp.FreeBSD.ORG/%7Eryuchi/QandA/HTML/640.html

ufs(UNIX方式のフォーマット)のフロッピーならここ。
http://www.jp.FreeBSD.ORG/%7Eryuchi/QandA/HTML/350.html

まずはQandAで探してみる癖を付けると、効率良く探しものが
できると思います。

あと、一応僕もQandA projectに参加してますので「ここが
わかりにくい」など意見を言ってくだされば、できるだけ
反映するように努力します。

No. 31 # みー 1998/11/28 (土) 19:18
なるほど。
フロッピーが使えました。
あの検索を使えばいいんですか。
ありがとうございました。
モデムは認識してくれないようだから
ひとまず休憩としようと思っています。
つぎはgccです。
GNU GCCでしたっけ?これだとWin32のが作れるんですよね。
検索してみました。
良く分かっていないんですがね

No. 32 # 68user [URL] 1998/11/30 (月) 18:18
ちょうどFreeBSD-users-jpで同じ質問が流れてました。
# 上の名前のリンクから辿れます。

結論としては、
    FreeBSDのGCCを使ってWin32アプリを作れないことはないけど、
    普通はやらない。Win用のGCCを使うか、Visual C++を使った方が簡単。
ってところでしょうか。

No. 33 # HARUKO 1998/12/03 (木) 11:20
初めて利用させていただきます。よろしくお願いします。

passwdコマンドを実行すると、ユーザーが存在しないという
メッセージが返ってきて、パスワードを変更することができません。
passwd: user-name dose not exist
/etc/passwdにもユーザはいるし、fingerでも確認できます。
passwdコマンドが壊れているのでしょうか?

No. 34 # 68user 1998/12/04 (金) 01:55
ども、初めまして。

OSはFreeBSDですか? だったら/etc/master.passwdが本当の
パスワードファイルなので、そちらをまず確認されてはいかがでしょう?

それから、passwd実行時には/etc/pwd.db、/etc/spwd.dbも同時に
参照されると思うので、そちらも壊れていないかチェックした
方がいいかもしれません。といっても、これらはテキスト形式では
ないので、/usr/sbin/pwd_mkdbを使って作成しなおす、という
ことになりますでしょうか。

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