|
> ってことで、この部分は全面的に改良して、非圧縮でやるとこを > 目標としときます。 ん〜、圧縮しないと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 にありますが、最初は本で読む方がいいんじゃないかと 思います。 |
|
昨日のおさらい… >ん〜、圧縮しないと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についての知識の少なさを露呈してますな(爆) >購入されることをお勧めします。 今日は忙しくて本屋に行く暇もなかったので、明日買ってきます。 ってわけで、今日はここまで。 仕事が忙しいの…(涙) |
|
> BIGのサーバーレンタルは50MBもらえるので まぁ今のところ他に使い道がないなら圧縮しないのも いいでしょう。 > そのわりにはCGIの本にはこれで文字コードを変換するように > なってるんだけど、なぜそんなことが必要なんだろう? nkfはただのUNIXコマンドなので、CGIの本の範疇を越えている ということでjcode.plを使っているんでしょうね。 僕はnkfの方が慣れてるのと、nkf使った方が多分速いから 使ってるだけですので、代わりにjcode.pl使ってもいいですよ。 > サポートに連絡してみよう。 どちらかと言えば(あくまでも「どちらかと言えば」ですけど) CPUパワー喰うので、嫌がるところは嫌がるでしょう。 んが、僕は 「CGIはperlの中で完結しなければならないということは ない。UNIXのコマンド使って何が悪い」 という人なので、僕的には完全にOKです。 > 「パイプ」とか「リダイレクションパイプ」ですよね。 です。openの最初や最後に|を付けると、コマンドとして 解釈されてそのコマンドが実行されるわけです。 |
|
BIGのサーバーどうやらnkf使わせてもらえないみたい。 しかも実験の結果、「system」もだめみたいです。 あかん、結構書き直しですな…(苦笑) |
|
> しかも実験の結果、「system」もだめみたいです。 え〜そんなことは…。もしsystemがダメならperlからは 子プロセス生成できないってことですよ。CGIとして動かすなら #!/path-of-perl $|=1; # これ大事。 print "Content-type: text/plain\n\n"; system("/bin/ls"); でうまくいくはずです。 > BIGのサーバーどうやらnkf使わせてもらえないみたい。 じゃあソース持ってってコンパイルしませう(70%本気)。 |
|
はじめまして。ミーという者です。 FreeBSDについてちょっと質問があるんですが、 私のパソコンでpppとやって、termでモデムとお話をしようとすると、 そこのところが御亡くなりになります。 あまり良く分からないので詳しく状況を書けないのですが、 考えられる原因を教えていただきたく思いまして、書きました。 よろしくお願いします。 |
|
ども、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の内容などがわからないと なんとも言えないと思います。 |
|
>あとは、環境(アナログモデム/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] と打ってみても反応しません。 とりあえず、もう一回自分で調べてみます。 ありがとうございました。 |
|
やってみると、 ~. ~? は実行できました。~?は文字が化けていましたが... ただ、at は反応しません。モデムってカーネルの再構築必要なんでしたっけ? |
|
モデムは、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/で調べてみると いいと思います。 |
|
ありがとうございました。 試してみると sio1 が type 16550A とでないで、たしか開けなかったと思います。 (sio0はちゃんと16550Aでした。) さっそく試してみます。 |
|
あの....非常に言いにくいのですが、 実はフロッピーディスクの使い方を知りません。 ひぃぃぃぃ。本当に素人なんです。 あの....フロッピーの使い方をある程度教えてもらえませんか? (もちろんFreeBSDでです。さすがに、Winでは使えます。) あ〜、恥ずかしかった... |
|
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に参加してますので「ここが わかりにくい」など意見を言ってくだされば、できるだけ 反映するように努力します。 |
|
なるほど。 フロッピーが使えました。 あの検索を使えばいいんですか。 ありがとうございました。 モデムは認識してくれないようだから ひとまず休憩としようと思っています。 つぎはgccです。 GNU GCCでしたっけ?これだとWin32のが作れるんですよね。 検索してみました。 良く分かっていないんですがね |
|
ちょうどFreeBSD-users-jpで同じ質問が流れてました。 # 上の名前のリンクから辿れます。 結論としては、 FreeBSDのGCCを使ってWin32アプリを作れないことはないけど、 普通はやらない。Win用のGCCを使うか、Visual C++を使った方が簡単。 ってところでしょうか。 |
|
初めて利用させていただきます。よろしくお願いします。 passwdコマンドを実行すると、ユーザーが存在しないという メッセージが返ってきて、パスワードを変更することができません。 passwd: user-name dose not exist /etc/passwdにもユーザはいるし、fingerでも確認できます。 passwdコマンドが壊れているのでしょうか? |
|
ども、初めまして。 OSはFreeBSDですか? だったら/etc/master.passwdが本当の パスワードファイルなので、そちらをまず確認されてはいかがでしょう? それから、passwd実行時には/etc/pwd.db、/etc/spwd.dbも同時に 参照されると思うので、そちらも壊れていないかチェックした 方がいいかもしれません。といっても、これらはテキスト形式では ないので、/usr/sbin/pwd_mkdbを使って作成しなおす、という ことになりますでしょうか。 |