せっかくなので、 >>1509 68user のソースを書き直して 「C 言語で echo サーバを作ってみよう (2)」 http://X68000.startshop.co.jp/~68user/net/c-echo-2.html を作ってみました。C言語+select によるタイムアウト機能付き echo サーバです。 # 一応バグは潰したつもり。 あと、これまでご指摘を頂いた >>1389 Yuuki の accept のバグ、 >>1215 UNIX見習い >>1216 68user の LocalAddr のバグを修正しました。お二人に感謝。 |
>>1520 rosegarden おろ、/etc/login.conf には passwd_format=md5 で、/etc/auth.conf には crypt_default = md5 des で、libutil で、libcrypt ですか。全然なにが なんだかわかってませんが、手元にソースがないので調べにくい。MFC を待つか…。 # 軟弱なので、うちは今朝の 4-STABLE です。 |
>>1522 68user 言葉が足りないようですみません。 4-stable では /etc/login.conf に passwd_format=md5 と明示的に 指定することによって passwd コマンドなどで 使用するハッシュ関数は変更できますが、perl などで使用している crypt(3) などのハッシュ関数はそのまま des だったりします。 解禁以降、大抵の人はそのまま des 入れているでしょうから。 一方、5-current だと /etc/login.conf でのハッシュ関数の 指定は passwd コマンドでは有効になりますが、それとは別に crypt(3) のハッシュ関数を /etc/auth.conf で指定できます。 これはさっき CVSup して確かめましたが、4-stable には反映されていません。 http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/lib/libcrypt/crypt.c ソースはここで確かめられます。 CGI で差分も見れます。 > # 軟弱なので、うちは今朝の 4-STABLE です。 いや、あまり関係ないかと思います。去年の暮れに 4-stable が page fault 頻発して 放棄せざるを得ない状態まで追い込まれたことあります。結局 kernel panic 起こしながら、数個ずつ kernel のファイルをコンパイルして、 安定した kernel をインストールし、それで回復させましたが。 同じ時期の 5-current はすごく安定していました。 ハード構成いかんではそういうことも起こり得ます。 |
初めまして。 FreeBSD 3.5.1と、それに付属のperlを使っています。 そこでソケットに関するプログラムを組みましたが、ちょっと問題が出てきました。 下記のソースを見てください。 HTTPサーバに接続して、メッセージを受け取り、一定時間何も受信できないと プログラムを終了しようとしています。 (本当は、相手のサーバからコネクションを切られたら終了するようにしたいんです。) サーバと接続されいる状態では、selectは期待した値を戻してくれるのですが、 接続が切断されたあとも、selectの戻り値が 0以外で、いつまでたっても、 ループから抜けられません。 なにか解決方法はないでしょうか? (大抵のサンプルはwhile (<SOCK>) って感じでやってるみたいですが、 バイナリファイルが対象でもうまくいくのでしょうか?) ## ソケットを開いて、ポート80)に繋ぐ。 ## send(SOCK,"GET /index.html HTTP1.0\r\n",0); $rin=''; vec($rin,fileno(SOCK),1)=1; while (1) { $ret = select($rout=$rin,undef,undef,1); if ($ret == 0 ) { last; } #タイムアウト recv(SOCK,$x,1,0); print $x; } |
>>1524 みかん ちろっと見た感じでは 1. \r\n が一個足りません。 2. 相手側がコネクションを切断したときも select は 1 を返します。 その際、recv すると1バイトも読めず、0を返しているはずなのに 無視しているので永遠に終わらないのです。 # http://X68000.startshop.co.jp/~68user/net/echo-4.html |
>>1523 rosegarden > 言葉が足りないようですみません。 いや、解説を催促するつもりはなかったのですが、恐縮です。 login.conf ということはユーザごとに DES か MD5 を定義 できて、しかも各ユーザは ~/.login_conf で上書き自由、 ということだと思うんですが、それが出来て何がうれしい んだろう…ってのが疑問なんです。 # NIS 使用時に幸せ? > 去年の暮れに 4-stable が page fault 頻発して > 放棄せざるを得ない状態まで追い込まれたことあります。 恐いですねぇ。僕は FreeBSD-stable も流し読みだし、make world で こけたとき直すスキルもないので、ビクビクしながらやってます。 4-STABLE じゃなくて 4.2-RELEASE にしとけばよかったな。 >>1524 みかん > 大抵のサンプルはwhile (<SOCK>) って感じでやってるみたいですが、 > バイナリファイルが対象でもうまくいくのでしょうか? <> は C でいうところの fgets 相当 (+バッファサイズが無限長) なので うまくいきます。 うまくいきますが、改行コードが1つもないデータを読もうとすると 一度に多くのバッファ (=メモリ) を消費するので、 sysread(SOCK, $buf, 8192); read(SOCK, $buf, 8192); while ( read(SOCK, $buf, 8192) ){ print $buf } などの方がよいです。 ついでに言っておくと、状況にもよりますが、select に <> や read を使うのは不適切です。select で読み込み 可能だからといって、「改行コードを含むデータ」や 「指定したサイズのデータ」が読み込めるとは限らない ので (データの前半部分だけが先に到着しているかも しれない) からです。せっかく select でブロッキングを 回避しているのに、<> や read の部分でブロッキング してしまうかもしれない。 # ここでいう read は read(2) でなく perl の read (fread(3)) です。 |
>>1517 68user > ところで > my_memcpy(void *dst, void *src, size_t len){ > とすると gcc に invalid use of void expression と怒られるんですが、 > 引数を void * で受けるのってできないんでしたっけ? おや? 68userさんにしては珍しい。 # まあ、プログラミング言語って(自然言語も同じようなものですが)、 # ちょっと離れるだけで勘がにぶって、ポカをやらかしてしまいますが。 そのエラーは、引数で受けた部分ではなく、 dst++などの演算のところのエラーですね。 逆に、char*で受けた場合、gcc -Wallのwarningを黙らすために、 (char*)&test1のようなキャストが必要です。 # gccはいつも-Wall。これでポカミスを結構見付けられます。 |
>>1526 68user > それが出来て何がうれしい うーん、それはそうですね。ただ、人によってこだわりは あるでしょうから。本当の理由は私も良く分かりませんが、 des インストールしても md5 で crypt できるのはやはり 嬉しいです。 |
>>1527 gixs > そのエラーは、引数で受けた部分ではなく、 > dst++などの演算のところのエラーですね なるほどなるほど。 void my_memcpy(void *dst, char *src, size_t len){ (char *)src += len-1; while (len--){ *((char *)dst)++ = *((char *)src)--; } } てな感じでしょうか。 > おや? 68userさんにしては珍しい。 僕は元々ヘボです。-Wall は付けてますが、いつも warning が出る ものの、キャストの仕方がわからず、大抵「まぁ動いているからいいや」で 済ましてしまうレベル (^^; >>1528 rosegarden > des インストールしても md5 で crypt できるのはやはり > 嬉しいです。 ちと考えてみましたが、例えば apache+suExec で CGI を動かす とき、「俺は前の環境で作成したパスワードがあるので DES」 とか「私はセキュリティ重視で MD5」などと、ユーザごとに DES/MD5 を選べたりする、ってな場合があるかもしれませんね。 全然関係ありませんが、掲示板の使い方 http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse を作りました。上の [使い方] から飛べます。 |
こんにちは、UNIX1年生のみかんと申します。 文字列置換のsedコマンドを使って変数の中の文字列を置換して 別の変数に入れたいと考えております。このようなことは可能でしょうか? sed -e "s/aaa/bbb/g" ${ABC} ここで変数${ABC} の中に入っている値(例えばaaa)を置換して 変数${CBA}に挿入したいと考えております。 大変に恐縮ですが、ご存知の方がいらっしゃいましたらご教授いただけませんでしょうか。よろしくお願いします。 |
>>1505 inpaku あー、もう解決してらっしゃるかもしれませんが、 だいぶ前にこう言うものをつくりました。 http://www.geocities.co.jp/MotorCity/5319/deception_doc.txt http://www.geocities.co.jp/MotorCity/5319/deception.txt 暇つぶしにつくった趣味のソースなんで、ぼく自身が忘れないための やる気のないコメントしか入ってません(苦笑 自ホストのNICからMACアドレスを引っぱってきてるのは、 gethwaddr()関数のあたりです。 あて先ホストのMACはlookup_mac()関数で持ってきてます。 ARPリクエストを流してから、自分のNICにキャッシュされたか 確認することで取得しています。 今見ると、ところどころマヌケできったないソースですが 参考になれば。 |
68userさん、rosegardenさん、gixsさん、 回答、ありがとうございます。 今から、読みながら、また勉強します。 本当に、ありがとうございました。 やってみて、また、わからなかったら質問すると思いますが、 また、よろしくお願いします。 |
はじめまして. IPアドレスとポート番号で,サーバーとそこで動いているサーバープログラムが特定できる所までは理解できました. では,あるマシンで2つWWWブラウザーを立ち上げて,その両方とも同じHTTPサーバーにアクセスした場合,サーバはどちらのブラウザーにHTMLを送り返すか分からないと思うのですが,それはどうやって識別しているのでしょうか. |
>>1530 みかん > こんにちは、UNIX1年生のみかんと申します。 >>1524 みかん の方とは別の方ですか? sh・bash なら CBA=`echo $ABC | sed 's/aaa/bbb/g'` csh・tcsh なら set CBA=`echo $ABC | sed 's/aaa/bbb/g'` set CBA=$ABC:s/aaa/bbb/g (これって SunOS の csh でも使えるのか〜) てな感じでしょうか。他にも方法があると思いますが、 僕はこれだけしか知りません。 >>1533 とも > では,あるマシンで2つWWWブラウザーを立ち上げて,その両方とも > 同じHTTPサーバーにアクセスした場合 2つのブラウザは、それぞれソケットを生成しますが、それぞれ 同じサーバに connect したとき、自動的に OS が選んだポート 番号が割り振られますので、それで識別できます。 ブラウザが1つであっても、HTML とその中に貼られている画像を 平行して読み出すときなどはソケットを複数使いますが、これも 別のポート番号が割り当てられます。 クライアントは、getsockname すれば自分に割り当てられた ポート番号がわかりますし、サーバからは getpeername すればクライアント側のポート番号がわかります。 ちなみに IP データグラムのヘッダには始点 IP アドレス、 始点ポート番号、終点 IP アドレス、終点ポート番号が 記録されています。 |
>No. 1534 68user 68userさん、ご教授ありがとうございます! >>>1524 みかん >の方とは別の方ですか? いいえ、みかんという方が他にもいらっしゃったんですね。 これからはみかん(一年生)と名乗ることにします。 68userさんのご教授いただいた内容にて、問題が解決いたしました。 非常に感謝しております。ありがとうございました。 今後ともよろしくお願いいたします。 ・・・質問ばかりしていてはだめだとは思っているのですが(>_<) |
初めて書き込みします。 質問なのですが、ローカルマシンからリモートマシンへコピー(移送)した場合、コピーしたファイルやディレクトリのユーザーID/グループIDがその時の実行ユーザーID/グループIDに変わってしまいます。 これをそのままの設定のままコピーする事はできないでしょうか? ちなみにrcpとftp(ディレクトリのコピー(移送)自体が既に無理)では無理でした。 出来ればUNIXコマンドかPerlで可能な方法があれば教えて下さい。 これらでは無理でも他の方法でなら可能だと言うご意見でも構いませんので、よろしくお願いします。 使用環境:solaris8 使用言語:Perl5.0、csh |
>>1534 68user > sh・bash なら > CBA=`echo $ABC | sed 's/aaa/bbb/g'` sh・bash で他の方法があったら教えてください。 >>1536 ゆきえ > ユーザーID/グループIDがその時の実行ユーザーID/グループIDに > 変わってしまいます。 というのが既に誤解ではないかと思います。 % rcp ~/a.txt userA@host:~/b.txt … host:~userA/b.txt のオーナーは userA % rcp ~/a.txt userB@host:~/b.txt … host:~userB/b.txt のオーナーは userB となります。 ですから、ファイルのオーナー/グループが誰になるかは 「その時の実行ユーザID/グループID」 で決まるのでなく、 「rcp するとき どのユーザで認証を行うか」 によります。ftp も同じで、ログイン時にどのユーザ名で 認証を行うかで決まります。 |
お答えありがとうございます。 >「rcp するとき どのユーザで認証を行うか」 ですと、認証したユーザーに結局は変更されてしまいますよね? ディレクトリの配下には色々なユーザーIDやグループIDが存在していますのでそれを変更したくはないのです。 調べていますとfilename.tar.zをrcpで移送して、rshでuncompress、tar -xvfpをすろ事でこの問題が回避されそうなのですが、tar -xvfpがうまくいきません。 マシンAのルートディレクトリにある./usr.tarをマシンBからrshで rsh A tar xvfp ./usr.tar rsh A tar xvfp ./usr.tar ./. rsh A tar xvfp ./usr.tar -C ./. いずれの場合も展開されませんでした。 どうすればtarファイルを展開できるのでしょうか? |
>>1538 ゆきえ > tar -xvfpがうまくいきません f の直後に tar ファイル名を指定しないといけません。 だから、いつも f は最後と覚えてください。 tar -xvpf hogehoge.tar |
>>1538 ゆきえ > ディレクトリの配下には色々なユーザーIDやグループIDが > 存在していますのでそれを変更したくはないのです。 ああ、なるほど。理解しました。 1. ファイルのオーナーを調べ、その権限で rcp する foreach file (*) set owner=`ls -l $file | awk '{print $3}'` rcp $file ${owner}@host:~ end 2. root で tar xvfp する。 ただし、展開時のファイルのオーナーは、ユーザ名でなく uid に 従うので、ローカルとリモートの uid の割り振り (/etc/passwd) が 同じである必要がある。 てなところですか。 > マシンAのルートディレクトリにある./usr.tarをマシンBからrshで > rsh A tar xvfp ./usr.tar rsh の前に マシンA に rcp で usr.tar をコピーしましたか? >>1539 rosegarden > f の直後に tar ファイル名を指定しないといけません。 今回は問題ないんじゃないですかね。x,v,p とも引数を取らないので。 |
>>1540 68user >> マシンAのルートディレクトリにある./usr.tarをマシンBからrshで >> rsh A tar xvfp ./usr.tar > rsh の前に マシンA に rcp で usr.tar をコピーしましたか? ああ失礼、マシンAにファイルはあるのね。で、「ルート ディレクトリ」は「ホームディレクトリ」の間違いですか? % rsh A tar xvfp ./usr.tar だと、~/usr.tar を読みにいってしまいますので。 # root 権限でやってるならルートディレクトリでいいのかも。 |
初めて書き込みします。 質問なのですが、DBの接続はDBIで行っています。使用言語はPERLです。 DBへの接続は通常DBIの場合、connectにより行っていますが、 現時点でconnectがされているか、されていないかをコーディング上で 確認する方法はありますでしょうか? ご存知の方がいらっしゃいましたらご回答のほうをお願いします。 |
>>1542 の > 現時点でconnectがされているか、されていないかを > コーディング上で確認する方法はありますでしょうか? ping ちうのがありますね。$rc = $dbh->ping; |
>>1538 ゆきえ 断りなしにマルチポストする人は、うちの掲示板に 書き込まないで下さい。 http://www.parkcity.ne.jp/~chaichan/qanda/qa539.htm?01-01-11-10-57 今後は向こうでどうぞ。 |
>>1540 68user > > f の直後に tar ファイル名を指定しないといけません。 > 今回は問題ないんじゃないですかね。x,v,p とも引数を取らないので。 はずかしながら今まで、知りませんでした。 御指摘ありがとうございます。 |
> > > f の直後に tar ファイル名を指定しないといけません。 > > 今回は問題ないんじゃないですかね。x,v,p とも引数を取らないので。 > はずかしながら今まで、知りませんでした。 たびたびすみません。知らなかったのは事実なのですが、GNU tar だと ハイフン付けて tar するとだめみたいです。 GNU tar 1.13 の場合 % tar -xvfp hoge.tar tar: Cannot open p: ファイルもディレクトリもありません。 tar: Error is not recoverable: exiting now 一方、Solaris の /bin/tar は 68user さんのおっしゃるとおり 関係なくファイルを取り出せます。これも知りませんでした。 |
>>1543 68user >> 現時点でconnectがされているか、されていないかを >> コーディング上で確認する方法はありますでしょうか? > ping ちうのがありますね。$rc = $dbh->ping; ご回答ありがとうございます。 実際に試してみたんですが、disconnectされている状態で $rc = $dbh->ping;を実行すると以下のようなエラーが出力されました。 DBD::Oracle::db ping failed: ERROR Database disconnected at ****.pl line ****. For help, please send mail to this site's webmaster, giving this error message and the time and date of the error. 続けて処理をすることはできないのでしょうか? それとも根本的に何かが違うのでしょうか? よろしくお願いします。 |
>>1543 68user >> 現時点でconnectがされているか、されていないかを >> コーディング上で確認する方法はありますでしょうか? > ping ちうのがありますね。$rc = $dbh->ping; ご回答ありがとうございます。 実際に試してみたんですが、disconnectされている状態で $rc = $dbh->ping;を実行すると以下のようなエラーが出力されました。 DBD::Oracle::db ping failed: ERROR Database disconnected at ****.pl line ****. For help, please send mail to this site's webmaster, giving this error message and the time and date of the error. 続けて処理をすることはできないのでしょうか? それとも根本的に何かが違うのでしょうか? よろしくお願いします。 |
同じ内容を2度送信してしまいました。 どうもすみません。 |
>>1546 rosegarden > % tar -xvfp hoge.tar > tar: Cannot open p: ファイルもディレクトリもありません。 なるほど。tar -x -v -f p hoge.tar と同じ扱いになるわけですね。 いつも - を付けないので知りませんでした。 >>1547 の うーん、SunOS5.6 + perl-5.004_04 + DBD-Oracle-1.06 + Oracle8.0.5.0.0(?) では use DBI; $o_DB = DBI->connect("dbi:Oracle:", "username", "passwd") or die "connect error"; $o_DB->{RaiseError} = 0; $o_DB->disconnect; if ( $o_DB->ping ){ print "connect!\n"; } else { print "not connect!\n"; } で、not connect! と表示されました。標準エラー出力には DBD::Oracle::db ping failed: ERROR Database disconnected at a line 7. と表示されますが、その後も処理は続けることができました。 > 同じ内容を2度送信してしまいました。 > どうもすみません。 いえいえ。 おそらくどこかのロボットが がんがんアクセスしているので、 OS の最大数以上のディスクリプタを開こうとして OS や apache や perl がこけまくってるようです (だからサーバエラーが頻発している)。 普通は二度書きチェックを行っていますが、ちょうど二度書き チェック用ファイルのオープンに失敗したくさいですね。 |
>>1547 68user 回答ありがとうございます。 私もif文で確かめてみましたが、not connect! と表示されず、 処理が途中で止まってしまいました。 やはり、記述の通り環境の問題があると思われます。 ただ、確認の方法が分かったので助かりました。 ありがとうございました。 |
>>1551 の > 私もif文で確かめてみましたが、not connect! と表示されず、 > 処理が途中で止まってしまいました。 なるほど。うちの環境では、他のエラーは全てトラップできるのに、 ブレースホルダ `?' の数より多く bind_columns すると、エラーと なって perl が終了してしまうという問題があります。 perl や DBI/DBD のバージョンによっては、ping も同様に トラップできないエラーを発生することがあるのかも しれませんね。 # perl+DBI 暦は3ヶ月程度なので、全体的によくわかってません。 ## が、Pro*C や PL/SQL より100倍使いやすいということは ## よく理解できました。 |
apacheのlogを見ていたのですが、 ほとんどのlogがGETやPOSTの中で 192.168.1.1 - - [11/Jan/2001:04:27:16 +0900] "HEAD / HTTP/1.0" 403 0 っていうlogがありました。 このHEADってなんでしょうか? |
はじめまて。 http://x68000.startshop.co.jp/ これ、かっこいいんですけど・・・・ .htaccessでできるんですか? よかったらやりかた教えてください・・・ |
No. 1555は参照元のページの著作権のルールにのっとって いなかったようなので、もう一度書き込みます。 # 1555は消しておいて下さい>68user >>1553 CoreFighter HEADはその名の通り、 HTTP/1.1 200 OK Date: Fri, 12 Jan 2001 15:34:47 GMT Server: Apache/1.3.12 (Unix) mod_ssl/2.6.5 OpenSSL/0.9.5a Last-Modified: Wed, 12 Apr 2000 09:18:00 GMT ETag: "a7f83-3e0-38f43f48" Accept-Ranges: bytes Content-Length: 992 Connection: close Content-Type: text/html など、HTTPのヘッダ情報だけを返すMETHODのようです。 参照元:丸山不二夫著「WWWサーバー管理」(稚内北星ビブリオン内) http://www.wakhok.ac.jp/~maruyama/W3serv/document/node95.html # wakhokは講義テキストを公開しているそうで、参考になります |
>>1554 ぽよぞー > http://x68000.startshop.co.jp/ > これ、かっこいいんですけど・・・・ > .htaccessでできるんですか? 無償でこのサーバを提供していただいている Netboy さんが 作成されたものをそのまま使っています。apache のデフォルト設定では - HEADER というファイルに書いたものは、ディレクトリ一覧の先頭に表示される - README というファイルに書いたものは、ディレクトリ一覧の最後に表示される で、さらに - HEADER, README だとプレインテキスト扱いで、(< > & が置換される) - HEADER.html、README.html だと HTML 扱い (< > & はそのまま出力) という扱いがされます。というわけで、 http://X68000.startshop.co.jp/~68user/tmp/HEADER.html http://X68000.startshop.co.jp/~68user/tmp/README.html てな感じのものを置いとけばいいです。細かなカスタマイズは IndexIgnore、 IndexOptions、IndexOrderDefault で。詳しくはこちらをどうぞ。 http://httpd.apache.org/docs/mod/mod_autoindex.html >>1556 has > # 1555は消しておいて下さい>68user へい、消しました。 >>1553 CoreFighter > このHEADってなんでしょうか? 質問する前に、一通り眺めてくれるとうれしいです。 http://X68000.startshop.co.jp/~68user/net/http-3.html#5 |
>>1430 68user > おお、化けてる。 - s|^( +)|' ' x length($1)|e; + s|^(( )+)|' ' x length($1)|e; というバグが原因でした。 |
通りすがってみました。(意味不明) @HEAD こういう奴もあったりする。 telnet www.yahoo.com 80 Trying 204.71.200.68... Connected to www.yahoo.akadns.net. Escape character is '^]'. HEAD / HTTP/1.0 HTTP/1.0 200 OK Content-Length: 15629 Content-Type: text/html <html><head><title>Yahoo!</title> 以下略 |
はじめまして。ちょっとわからなくてききたいのですが・・・。 crontabに登録しようとしているのですがうまくいきません。 10 * * * * /home/〜(実行形式ファイルのフルパス) と登録したところ、 >UX:crontab:警告:コマンドは /usr/bin/sh で実行されます. というメッセージが出てきてしまいます。 どうしたらよいのでしょうか? |
>>1560 debra > >UX:crontab:警告:コマンドは /usr/bin/sh で実行されます. > というメッセージが出てきてしまいます。 SHELL=/bin/sh とかいれてもだめですか? /usr/bin/sh なんていう sh をもつシステムが思い当たらないので、 詳しいこと言えませんが。 man 5 crontab (*BSD, Linux) あるいは man -s 5 crontab (Solaris の場合) すると書き方が大抵の場合かいてあります。 あるいは man crontab して SEE ALSO を見るとセクション番号が 分かるはずです。 |
4-stable のビルドしてますが、 make release の最中にまた page fault 起こしました。make world しなきゃよかった。:-< 今回のは悪質で、backtrace がとれないです。 まあ、page fault なんで、もはや素人の出られる幕はありませんが。 % uname -v FreeBSD 4.2-STABLE #0: Fri Jan 12 21:43:37 JST 2001 一回だけなので、年末のよりはましですが、私の環境で安定していたのは FreeBSD 4.2-STABLE #0: Tue Jan 9 00:25:52 JST 2001 の奴ですね。これは、ちょうど、この前 68user さんが make world した 前後のと kernel はそんなに変わらないとおもいます。 当分の間 4-stable の make world は見合わせた方がいいです。 それから g++ も不安定ですね。ランダムに compiler internal error が出ます。top コマンド見ているとメモリが少なくなった状況で このエラーが出るようです。だから、libstdc++ とか groff の make でこけることが多いです。しかも、失敗してから、もう一度 make すると通ることもあるので、嫌になってきます。 次に多いのが、perl の library の make の失敗。これは原因がかなり はっきりしていて、make world 始める前に /usr/obj 消しておくと 出食わしません。 # 三月に 4.3-RELEASE でるんだろうか? # どうも 4.1-RELEASE よりは不安定になっている様な気がする。 # -current の方がよほど安定しているし ;-< |
お世話様です。 perl に ついてお伺いしたいのですが何方かご存知でしたら教えてください。 文字置換で下記のような物を実行するとエラー(ドキュメントにデータが無い) とエラーが出て動作しません。どうも”ー”のキャラクターが原因のようです。 kk,mmの変数でtest変数文章を部分変換したいのですがココでつまずいています。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; $test = "ホームページの更新"; $kk = "ホームページ"; $mm = "掲示板"; $test =~ s/$kk/$mm/; print $test; -----------------------eof------------------------- |
>>1562 rosegarden 最近の stable では、thread まわりのバグが fix されて、 mozilla5 が動くようになったそうですが、cvsup するのは やめときます (笑) >>1560 debra >UX:crontab:警告:コマンドは /usr/bin/sh で実行されます. 「警告」っつーのが謎ですね。動作には影響ない? >>1563 yoshi CGI 経由でデバッグするのはやめましょう。まずはコマンドライン からです。さすれば /z[y[W/: unmatched [] in regexp at a line 6. か /ホームページ/: unmatched [] in regexp at a line 6. というエラーが表示されることが確認できるでしょう。 というわけで「ホームページ」という文字列をダンプすると 203 z 201 [ 203 200 203 y 201 [ 203 となります。「ー」の2バイト目が `[' と同じコードのため、 [] が正規表現として正しくない (']' で閉じていない) ということです。 対処法としては 1. SJIS を使わない。スクリプトの文字コードを EUC にする。 2. jperl を使う http://www.jp.FreeBSD.ORG/QandA/HTML/1218.html です。他にも \Q〜\E で囲むだとか、quotemeta を使うなどの手は ありますが、所詮小細工のレベルです。根本的には上のいずれかを 選びましょう。 |
ぽよぞーです。 さっそくやってみたのですが、、 http://www.kensu.com/zzztest/ できないっす、、なぜだ、、 HEADER.html、README.html置いてあるのに、 一覧には表示されてないし、、。(直指定で見れまぷ) 原因おわかりでしたらご教授くださいませ・・・ |
あ、すんません、追加で。 もしできたとして、 全部のディレクトリにこれ反映させるにはどうしたらいいですか?? mod_rewrite入ってるみたいなのでそれでできますか?? よろしくどうもー。 |
>>1564 68user スクリプトの文字コードを EUCにします。ありがとうございました |
いろいろやってたら解決できました! HeaderName /lib/HEADER.html ReadmeName /lib/README.html <FilesMatch "^(HEADER|README)\.html$"> ForceType text/html </FilesMatch> http://www.kensu.com/.htaccess 強制的にtext/htmlにしたらうまくいきました。 全部のディレクトリに反映させるのも、上のとおり ディレクトリも含めて指定したらすんなりできました。 img/,doc/など掘ってありますので見てみてください。 http://www.kensu.com/img/ 何度も投稿して板汚してすんません、、>68userさん ではでは |
>>1568 けんす > <FilesMatch "^(HEADER|README)\.html$"> > ForceType text/html > </FilesMatch> これは多分デフォルトで設定されていると思います (というか、 .html だから text/html になっているんじゃないかなぁ)。 > HeaderName /lib/HEADER.html > ReadmeName /lib/README.html 書いてませんでしたが、HEADER/README は、一覧表示させたい ディレクトリに置いて下さい。もちろん HEADER/README を 一ヶ所に集めたいなら今の設定で OK です。もしかして > HEADER.html、README.html置いてあるのに、 同じディレクトリに置いてもダメでしたか? あと質問なんですが、www.kensu.com の Server: Apache/1.3.12 (Unix) OCTO_3.0 PHP/4.0.0 FrontPage/4.0.4.3 OCTO って何ですか? |
すみません。 また教えて欲しいのですが、これは、Cの質問だと思うのですが、 もしかすると、関数自体が間違っているのかもしれないので、 どうか、教えてください。 下記のような関数を使いたいのです。 int write_sock( int sockfd, char *str ) { int write_len = 0; int count = 0; size_t bytes_sent = 0; char *buf; char str_buff[1024]; sprintf( str_buff, "\r%s", str ); count = strlen( str_buff ); if( count <= 0 ){ return( NG ); } buf = str_buff; while( bytes_sent < count ){ do{ write_len = write( sockfd, buf, count - bytes_sent ); } while( ( write_len < 0 ) && ( errno == EINTR ) ); if( write_len <= 0 ){ return( NG ); } bytes_sent += write_len; buf += write_len; } return( OK ); } この関数を呼び出して使うと、 write_sock( sd, "test strings.\n" ); これはうまくいきました。 だから、ちゃんと動く関数かなと思っていました。 でも、こういう構造体を作って、 struct test_s { unsigned long test1; unsigned short test2; unsigned short test3; unsigned short test4; unsigned short test5; } tes_s; このようにデータをいれました。 tes_s.test_1 = Data_1; tes_s.test_2 = Data_2; tes_s.test_3 = Data_3; tes_s.test_4 = Data_4; tes_s.test_5 = Data_5; データはちゃんと入っているのを、printf()で確認しました。 この後、 write_sock( sd, tes_s ); のように呼び出してみましたが、うまくいきませんでした。 char型のデータでないとソケットでは送れないので、なんとか 文字列にしようとしてみたのですが、文字列の連結として 構造体の各データをつなげる方法がうまくいきません。 memcpy( tes_s, tes_s.test_1, sizeof(tes_s.test_1) ); memcpy( &tes_s[4], tes_s.test_2, sizeof(tes_s.test_2) ); のようにやっても、tes_sの文字列に入っていないし、 sprintf( tes_s[0], "%04d", tes_s.test_1 ); とやると、coreを出してとまってしまいました。 正しいやり方というのはあるのですか? それとも、やっぱり関数が間違っているんですか? どうかよろしくお願いします。 |
>>1569 68user > これは多分デフォルトで設定されていると思います (というか、 > .html だから text/html になっているんじゃないかなぁ)。 > 同じディレクトリに置いてもダメでしたか? http://apacheml.ecc.u-tokyo.ac.jp/cgi-bin/namazu.cgi?key=readme&submit=Search%21&whence=0&max=20&format=long&sort=score なんかバグらしいです、、どうなんだろう、、。 > あと質問なんですが、www.kensu.com の > Server: Apache/1.3.12 (Unix) OCTO_3.0 PHP/4.0.0 FrontPage/4.0.4.3 > OCTO って何ですか? http://www.oc.to/ ここのサーバー借りてるのでちょっとわからないです、、 ついでに、、 ディレクトリーリストに表示されるアイコン集、みたいなページ ご存知ないですか?? php,log,cgiとかが「?」じゃかっこわるいので・・・・ |
68USERさん、すばらしいサイトを公開なされていて本当に感謝しております。ネットワークプログラミングの基礎知識はWINDOWSのCHMファイルにコンパイルして手元に置いて大変参考にさせていただいております。(LWPメインの「WEBクライアントプログラミング」の百倍くらい助けていただいております。) 本日書き込みさせていただいたのは、質問と言うよりは要望なのですが、PERL5でHTTPクライアントを作る際、SSLで接続する方法を解説頂いたページを掲載して欲しいのです。お忙しいとは思いますがぜひ実現いただけましたら大変助かります。 それではお体にお気をつけて。 今後のご活躍を期待しております。 |
char TempBuf[10+5+5+5+5+1]; /* TempBufを初期化 */ memset(TempBuf, 0x00, sizeof(TempBuf)); /* TempBufに設定 */ sprintf(TempBuf, "%d%d%d%d%d", tes_s.test_1, tes_s.test_2, tes_s.test_3, tes_s.test_4, tes_s.test_5); この時TempmBufの大きさは longを整数にした時の最大桁数 + shortを整数にした時の最大桁数 shortを整数にした時の最大桁数 + shortを整数にした時の最大桁数 shortを整数にした時の最大桁数 + 改行(\r) です。 |
すいません。訂正です。 >この時TempmBufの大きさは >longを整数にした時の最大桁数 + shortを整数にした時の最大桁数 + >shortを整数にした時の最大桁数 + shortを整数にした時の最大桁数 + >shortを整数にした時の最大桁数 + 改行(\r) >です。 改行(\r)でなくてNULL文字(\0)でした。 |
> sprintf(TempBuf, "%d%d%d%d%d", > tes_s.test_1, tes_s.test_2, tes_s.test_3, tes_s.test_4, tes_s.test_5); この方針は、 >>1512 gixs の最後で書いた、数値を文字列として渡す方法ですね。 (つまり、数値10を0x31 0x30のバイト列にしてしまう方法です) 受け手は、自前のパーサなりsscanf(3)なりで、パースして数値に戻します。 でも、"%d%d%d%d%d"ではパースできません。 ゼロ詰めで桁数を決め打ちするか、空白で区切るべきでしょう。 このように文字列で渡す方針が簡単なので、実用アプリならこうすべきですが、どうしても数値のままネットワーク上に流したいとのことなら、ネットワークバイトオーダに変換しながらmemcpy(3)(or memmove(3))します。 # 動かないコードでもいいように、疑似コード(エラー処理なし)。 # および、勝手に、uint32_t tes_s.test1; uint16_t tes_s.test2;ということにします。 char *p = buf; uint32_t x32 = htons(tes_s.test1); memcpy(p, &x32, sizeof(uint32_t)); p += sizeof(uint32_t); uint16_t x16 = htons(tes_s.test2); memcpy(p, &x16, sizeof(uint16_t)); p += sizeof(uint16_t); ... write(sock, buf, p - buf); 受け手は、どういうbit数の数値がどう並んでいるかを知った上で、受けたバッファから数値を切り出していきます。 |
ひとつ訂正。 最初のhtons()はhtonl()。 # 掲示板への書き込みは難しいですね。他にもミスがあるかも。 |
Perlで system関数||die"$!\n"||exit(0); を使用すると「ファイル番号が違います」とエラーメッセージがでて以上終了を起こします。 こういったエラーの理由が分かるサイトなどありましたら教えて下さい。 またこのエラーの原因をご存知の方がいましたら原因を教えて下さい。 お願いします。 |
はじめまして。 perlで、メール本文の内容を分析し、 mimeまたは、プレーンテキストの初めの文書の最終行番号、 mimeのときにテキストがなければ、最初の本文の行番号というように 調べたいのですが、どうすればよいのかわからなくて困っています。 なにか便利なツール、パッケージなどあれば教えてください。 それか調べるポイントでもあれば教えてください。 どうかよろしくお願いします。 |
>>1553 CoreFighter CoreFighter さんへ。質問に対する回答をもらっても、 何の反応も示さないなら、質問するのはご遠慮下さい。 >>1570 E田 > char型のデータでないとソケットでは送れないので わかっておられるのかもしれませんが、それは write_sock が そういう書き方になっているからで、本来はソケット経由で バイナリデータを送れます。 >>1571 けんす > なんかバグらしいです、、どうなんだろう、、。 なるほど。 # しかし素晴らしい検索能力ですね。バグだとは想像も # しませんでした。 >> OCTO って何ですか? > http://www.oc.to/ ここのサーバー借りてるので ただ単にドメイン名入れてみただけなんでしょうか。 > ディレクトリーリストに表示されるアイコン集、みたいなページ > ご存知ないですか?? ちろっと探してみましたが、見つかりませんでした。 20x22 だし、適当にでっち上げるのが簡単かもしれませんね。 >>1572 rocky > PERL5でHTTPクライアントを作る際、SSLで > 接続する方法を解説頂いたページを掲載して欲しいのです。 SSL のライブラリを使わず、ですか? そりゃまた難しそうだなぁ。 興味はあるので書きたいところですが、あまり期待しないで下さいね。 >>1577 rererenore さようなら、断りなしにマルチポストする無礼なひと。 >>1578 たろ 「mimeまたは、プレーンテキスト」とか「mimeのときにテキストが なければ」とかの条件がよく理解できませんでしたが、とりあえず >>700 68user が一番お手軽だと思います。 |
68USERさん、お返事ありがとうございます。 レンタルサーバーなのでMAKEを使うライブラリのインストールができなくて何でも自力でやっております。 SSLの件、気長にお待ちしておりますのでどうかよろしくお願い申し上げます。 |
こちらのサイトで得た知識を、下記するところに記入いたしました。 http://www.tnetbbs.com/phorum/read.php?f=4&i=575&t=406 事後報告、かつ、つたない紹介となりましたことをお許しください。 とりいそぎ、ご挨拶まで。 |
>>1579 68user お返事ありがとうございます。 >「mimeまたは、プレーンテキスト」とか「mimeのときにテキストが > なければ」とかの条件がよく理解できませんでしたが、とりあえず マルチパートかシングルパートか、でした。失礼しました。 マルチパートで最初のテキストタイプの箇所に文言を追加したいと 思っています。 マルチパートで、文書がないときには、テキストパートを追加します。 ネットワークの知識が少ないのが悲しいところです。 |
>>1582 たろ >ネットワークの知識が少ないのが悲しいところです。 誤解を招くかもしれないので、補足します。もちろん自分のことです。 |
はじめまして。 突然何? という感じかもしれませんが、このサイトは非常にすばらしいと思います。 自分はPerl屋なのですが、ここほど為になるサイトは今まで見たことがありません。 HTTPクライアントは特に参考になりました。 ありがとうございます。 すばらしい情報が得られる貴重なサイトですね。 あまりの感動につい書き込んでしまいました。 掲示板の趣旨に反していましたら、お詫び致します。 |
みなさん、回答をありがとうございます。 やってみて、うまく格納できているみたいです。 今は、read()の方をうまくできていないので、ちゃんと 受け取りの構造体に格納できないので、これからなんとか 受け取り側で見れるようにします。 でも、うまくCを書けていなかったのがわかりました。 本当にありがとうございました。 |
以前は、uptimeの質問に対してレスありがとうございました また、質問があるのですが、 現在サーバ間(UNIX/AIX)でNISの設定をしようとしています。 今回、NISを設定してあるもののバージョンを上げるために、一度NISの設定 を解除して、バージョンをあげて、再設定しようと思っています。 一度試しで行なって見たのですが、Clientのほうで、Server側でマップを更新した後に、ログインができなくなってしまったのです。 (whoamiコマンドで反応がなくなってしまいます) それで、一度NISを外しまして、再設定を行なった際に、 マップの更新後に、stopsrc -s ypbind startsrc -s ypbind -a "ypsetme" ypset (ServerのIPアドレス) を行なったところ、無事に設定する事が出来ました。 ここで、質問なのですが、今度違う場所で同じ作業があるのですが、 マップ更新後に、whoamiコマンドで行けるか確認して stopsrc…などのコマンドを打って設定する他にいい方法があるのでしょうか? 私的にはNISの解除の方法がおかしいのかなと思っています。 (1./etc/passwdを戻す、2.smitでNISを解除する) よろしければ、皆様のご意見を頂きたく思います。 都合上レスが明日になるかもしれませんがよろしくお願い致します |
初めまして。 現在UNIXでのSocket通信プログラムを書いているのですが selectシステムコールとFD_ISSETマクロとの 関係がよくわからずにコードを書いていたところ バグに悩まされています。 select()を使いタイマで割り込み動作を監視しながら recv()で受信を行うというプログラムを書いています FD_ZERO( &fdset ); FD_SET( m_Sockfd, &fdset ); while(recv_size != 0) { work_fdset = fdset; ret = select( 64, &work_fdset, NULL, NULL, &time_out ); if( ret == -1) { 異常処理 } =============================== 割り込み監視 =============================== if( FD_ISSET( m_Sockfd, &work_fdset )) { data_size = recv( m_Sockfd, (void*)(m_pData + m_DataSize)) } m_DataSize += data_size; recv_size -= data_size; } ソースはだいたいこのような感じなのですが、 割り込み監視部分等でコネクションの切断 コネクションの再接続等を行っていると select()の返り値は0でタイムアウトなのですが FD_ISSET()マクロの方は返り値が真になってしまい recv()の発行を行うけれども実際はデータはきておらず recv()で処理がとまってしまい、割り込みの監視ができなくなって しまうというようなバグが発生しています。 ならばselectとFD_ISSETの返り値が真である場合にのみ recv()を発行すればよいと思うのですが なぜこういうケースがでるのかわからなければ 信用し得る修正にならないので書きこみさせてもらいました。 過去ログなどを検索して調べてみましたが 自分なりのなっとくいく回答がえられませんでした。 よければこういうケースになる条件、回避方法等 お教えいただければと思います。 |
追記ですが、下記のプログラムは 1ポート1コネクションのプログラムです |
>>1553 CoreFighter > CoreFighter さんへ。質問に対する回答をもらっても、 > 何の反応も示さないなら、質問するのはご遠慮下さい。 すいませんでした。以後気をつけます。 |
自己回答。先ほど質問を書きこんだものですが、 あれからいろいろサイトなどを再びまわって 間違いに気づきました。 お騒がせしました。 ようは 1ポート1コネクションなら select()の第一引数に取得したソケット記述子+1を指定すれば よかったんですね。 |
>>1590 mak(spriggan > 1ポート1コネクションなら select()の第一引数に取得した > ソケット記述子+1を指定すればよかったんですね。 ん〜、 ret = select( 64, &work_fdset, NULL, NULL, &time_out ); であっても、事前に FD_ZERO(&fdset); FD_SET(m_Sockfd,&fdset); してるんだから、select は m_Sockfd しかチェックしないと 思うんだけどなぁ…。 あと気になるのは、select が 0 を返したとき、FD_ISSET 得られる 値は有効な値なのかかどうか (select が 0 を返したときは FD_ISSET してはいけないのではないか)、ってところですけど、どうなんでしょう。 >>1586 YAGI > 現在サーバ間(UNIX/AIX)でNISの設定をしようとしています。 僕は NIS の設定をしたことがないので、ちょっとわかりません。 >>1582 たろ > マルチパートかシングルパートか、でした。失礼しました。 なるほど。で、 >>700 68user はどうでしたか。僕は multipart をばらすところまでしか やってませんので、(必要かどうかわかりませんが) 編集後に 再構成できるのかはわかりません。 # まぁ、できなくはないと思いますけれど。 >>1584 arche > 自分はPerl屋なのですが、ここほど為になるサイトは今まで > 見たことがありません。 どもです。ですが、http://www.din.or.jp/~ohzaki/perl.htm くらい 役立つレベルになりたいものです。 |
変な名前ですいません。 SystemVと呼ばれるOSがあるそうなのですが、 'システムブイ'か、'システムファイブ' どちらが正しい言い方なんでしょう? |
>>1592 バス酔いで思わずコアダンプ SystemIII の後継なので、システムファイブです。個人的には 話すときはシスブイと呼びますし、一応まわりには通じているようですが、 世間一般の人にシスブイと言ってわかってもらえるかは謎です。 # 検索すると http://www.system-v.org/ ってのが引っかかった。 |
>>1591 68user >はどうでしたか。僕は multipart をばらすところまでしか > やってませんので、(必要かどうかわかりませんが) 編集後に > 再構成できるのかはわかりません。 どうもです。 MIME-TOOLSのexampleを見て、今手探り中です。 一度、multipart をばらして、対象のテキストパートから数えた行数を 取得後、multipartをばらしていない本文より行数を取ろうと思います。 ばらしたものよりの再構成は、(むずかしそうなので)とりあえず避けます。 |
今課題で、UNIXにApacheを入れ、フリーの掲示板をダウンロードして とりつける課題をしています。 しかし、ウィンドウズで作られたperlのプログラムなので改行コード の違いからか、エラーが出てInternal Server Error が出ます。 ダウンロードしたプログラムをperlで動かしてみても Illegal character \015 (carriage return) at aska.cgi line 2. (Maybe you didn't strip carriage returns after a network transfer?) といった、エラーが出ます。どうしたらよいでしょう。 |
cronを実行していたのですが、 マシンの時間を修正した後、cronが実行されなくなりました。 何が原因か、どうすれば実行するようになるのか、 どうか教えていただきたいです。 |
cronを実行していたのですが、 マシンの時間を変更した後、 実行されなくなってしまいました。 どうしたらよいのでしょうか? |
>>1595 じゅじゅ > 今課題で、UNIXにApacheを入れ、フリーの掲示板を > ダウンロードしてとりつける課題をしています。 最近どうして こんな変なのばっかりわいてくるんだろう。 マルチポストする人はさようなら。 >>1596 クーロン > cronを実行していたのですが、 理由はわかりませんが、cron daemon を再起動するのがお手軽で しょう。特にサーバマシンに言えますが、なるべく時刻は date や ntpdate を使わず、xntpd などで設定しましょう。 |
はじめまして。 UNIXのことあんまり知らない初心者のものです。 先日TELNETが使えるレンタルサーバを借りたはいいけど、なんとその2週間後! TELMETが禁止に、、、ってことで、ついでにCORNTABも禁止に。。。 こんな悲しいことってアリッ!!?TELNETが使えるから借りたのに!!!ガビーーン! ・・・ぐちっぽくなってゴメンなさい。 そんなこんなで、質問をさせてください。 TELNETが禁止のサーバで、CRONTABみたいに定期的にパールスクリプト実行できるテクニックってありますか? よい方法を知っている方がいたら、なにとぞ教えてくださいませ☆ |
ごめんなさい、マルチポストの意味がよく わかりません。とりあえず、ご迷惑をおかけしたようなので 他のところへ聞いてみたいと思います。 もう来ませんので許してください。 悪気は一つもなかったんですから。 |
>>1577 rererenore >さようなら、断りなしにマルチポストする無礼なひと。 >>1595 じゅじゅ >> 今課題で、UNIXにApacheを入れ、フリーの掲示板を >> ダウンロードしてとりつける課題をしています。 >最近どうして こんな変なのばっかりわいてくるんだろう。 >マルチポストする人はさようなら。 本当に困っているから複数のサイトで質問しているだけで何が無礼なのか分かりませんが。 全てのレスに対してお礼を書けば問題ないと思いますが? 何に対してむかつかれているのか全然分かりません。 嫌なら掲示板のどこかに書いておけばいいと思いますが「使い方」の方にすら書かれてもいないようですし。 あなたの方がよほど無礼だと思いますが。 |
>>1586 YAGI氏 最近、AIXもNISもごぶさたしていますが。 AIXのコツは、「なんでもsmit」、なので、 > 私的にはNISの解除の方法がおかしいのかなと思っています。 > (1./etc/passwdを戻す、2.smitでNISを解除する) は、O.K.だと思います。 ただ、「/etc/passwdを戻す」はちょっと意味が取れません。 この「NISの解除」と言っているのは、「NISサーバをアップデートする前に、NISサーバを停止すること」の意味ですよね? だとしたら、その間、/etc/passwdをいじる必要はありません。 NISサーバ側の作業は、 1. smitでNISサーバを停止 2. smitでNISサーバのアップデート 3. smitでNISサーバの起動 NISは(確か)statelessなので、クライアント側は何もせずにサーバに繋げると思います(ぼくなら、ypcat passwdで確認します)。 しかし、まあ、AIXは色々あるので、ダメならクライアント側(ypbind)もsmitで再起動するしかないでしょう。 # 余談ながら、通(つう)はsmitではなく、tty版のsmittyを使います。 # 走る男が見たいから、という理由でsmit(X版)を使い続ける人もいますが。 # 分からない人向けへの補足。 # smitは、AIXのGUI設定ツールなのですが、Windowsで砂時計がでるような状況で、 # 走る男のアニメーションがあります。 # しかも、設定が失敗すると、男がこけます。 # AIXがSolarisより優れているのは、これだけ。 |
>>1600 じゅじゅ >>1601 rererenore あなたがたに欠けているのは情報を共有しようという精神です。 あなたがたは自分一人情報を得て満足かもしれませんが、 少なくとも僕は、あなたがたを助けるため *だけ* に わざわざ 時間を割いて、検索したりソース見たりして回答しているわけでは ありません。みんなで知恵を出しあって情報を共有するのが 掲示板を開設している第一の目的です。 たとえば僕は >>1595 じゅじゅ を読んで「それは ftp で ascii モードで転送してないからでしょう」と (実際はもっと長文) 投稿しようとしましたが、その前に http://www.parkcity.ne.jp/~chaichan/qanda/qa539.htm?01-01-17-09-06 を見たところ、同じ質問が書いてあり、 じゅじゅ [WriteDate : Thu Jan 18 16:56:31 2001] まで書きこんでありました。 すでに解決していたことを、僕はいちいち細かく解説しようとして いたわけで、全くの無駄な行為です。あなたがたは、他の掲示板の 全ての閲覧者に対して、よーいドンで競わせて、だれが早く回答 するか待っているようなものです。無礼な行為だとは思いませんか? 他の掲示板に書き込んで既に情報を得ているのに、親切な誰かが >>1577 rererenore を見て、いちから説明しようとするかもしれない。おかしいとは おもいませんか? 本当に緊急のトラブルで困っているなら、「申し訳ありませんが、 緊急の事態なので、こことこことここに書き込みました」と 一言添えて、最後には全ての掲示板で得られた情報をまとめて、 こういう結果になりました、とサマリを書き込むべきでしょう。 > 全てのレスに対してお礼を書けば問題ないと思いますが? ダメです。情報の共有化がされていない。情報が集まるのは あなたのところだけ。 > 嫌なら掲示板のどこかに書いておけばいいと思いますが「使い方」の > 方にすら書かれてもいないようですし。 こんなことは、ちょっと答える側の立場に立ってみればわかると 思いますが、いちいち書かないと理解できませんか。それとも 僕の主張自体が理解できませんか。 http://www.parkcity.ne.jp/~chaichan/qanda/qa579.htm?01-01-18-16-56 http://script.lovely.to/bbs/infolng.cgi?print+200101/01010026.txt http://script.lovely.to/bbs/infolng.cgi?print+200101/01010016.txt |
おっとリンクミス。 >>1603 68user (実際はもっと長文) 投稿しようとしましたが、その前に http://www.parkcity.ne.jp/~chaichan/qanda/qa579.htm?01-01-18-16-56 を見たところ、同じ質問が書いてあり、 でした。 |
>No. 1603 68user 2001/01/18 (木) 22:15:59 おっしゃる事は理解できますし、言われてみればもっともな考えだとは思います。 しかし、それはあなたがたのこういった世界に付いて詳しい方々の考え方であってわれわれの様な素人や、始めたばかりの人には情報の共有と言った概念は言われなければ無いと思います。 一言書かれていればこういう事態も避けられると思います。 今後は私も気を付けます。 |
>>1605 rererenore そうですか。では、使い方のところに その旨書いて おくことにします。 |
はじめて発言します。 実はUNIXはまだ初心者ですが・・ 下記のようなツール(C言語用ライブラリでも可)を探しています。 ・コマンド型ツールでメール層送受信が可能なもの かつ、添付ファイルが遅れるもの かつ、Solarisで動作するもの ・・って、ありますか? どなたか知っている方いましたら教えてください! (できれば、メールアドレスに送付してくれれば、なお可) |
先ほどの発言にて誤字・脱字が多いので再送します。 下記のようなツール(C言語用ライブラリでも可)を探しています。 ・コマンド型ツールでメール送受信が可能なもの かつ、添付ファイルが送れるもの かつ、Solarisで動作するもの ・・って、ありますか? どなたか知っている方いましたら教えてください! (できれば、メールアドレスに送付してくれれば、なお可) |
この掲示板を利用しているみなさん、ほんとうに私事で ご迷惑をおかけしました。実際私が投稿したことは 自分本位であり、みなさんの迷惑にしかならず 間違っていたことと理解しています。 しかし課題の締め切りが迫ってしまい、日々の勉強している ことの範囲外の課題であったために、調べる時間も少なく このような事態を引き起こしてしまいました。 本当にご迷惑をおかけしました。 しかし、管理者さんのこの掲示板の意図を知ることが できたので自分ではとても勉強になりました。 知識不足、常識不足ですいませんでした。 結局掲示板の設置の方は、その改行コードの変更の仕方が よくわからなかったので、あらかじめ改行コードが UNIXで設定されているものをダウンロードし、 confファイルを手直しして、設置することができました。 ありがとうございました。 |
あえて、クロスポストに答える形で書き込みます。 ちょっと面白いこと(だから内容はマニア向け)があり、 それを書いてみたいので...。 >>1609 じゅじゅ > 結局掲示板の設置の方は、その改行コードの変更の仕方が > よくわからなかったので、 ftp での転送が悪かったからだろうという回答は出ているので、 直接改行コードの変更の話にしましょう。 改行コードを変えるのには、例えば、perl などで % perl -pni.bak -e 's/^M$//' hoge.cgi 等とすれば良いのです。上で、^M は表現上 2 文字になっていますが、 この部分はコントロールキーを押しながら M を入力します。 ところが、困ったことにもろに打ち込むとリターンを打ったのと同じで、 これを打ち込めません。これは初心者の FAQ で、通常コントロール V を打ってからコントロール M を打ちます。(以下、CTRL-M 等と書きます。) すると文字通り ^M が打てるんですが、カスタマイズされている場合もあります。 あるいは、カスタマイズしたい場合もあるでしょう。 そう言った場合には stty(1) を使うんですが、 % stty -a speed 9600 baud; 25 rows; 80 columns; (中略) cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>; eol2 = <undef>; erase = ^H; intr = ^C; kill = ^U; lnext = ^V; min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T; stop = ^S; susp = ^Z; time = 0; werase = ^W; となったときの lnext に「次の一文字を文字通り引用」(literal char???) する キーが割り当ててあります。上の場合には、だから ^V です。このコマンドは ^H に 「前の文字の削除」を割り当てたい場合にも使います。通常 ~/.login に stty erase ^H とか stty erase ^? (^? は DEL キー) をいれておけば、それぞれ、CTRL-H や DEL に前の文字の削除を割り当てられます。 これも初心者の FAQ で DEL キーで前の文字を消すにはどうしたら良いのか? なんて嫌なるくらいに聞かれます。答えは、上のようにすれば良いんですが、 問題はどうやって ^H だとか ^? をいれるかです。この答えも、ここまで 読んだ人なら明らかで、lchar キーを使えば言い訳ですね。上の場合すなわち ^V です。 ちなみに、上の perl のコマンド実行をする場合には tcsh だと ^M が ^J に 変わるので、ash なんかを起動してやった方が良いです。また、^V はコマンドラインや ed あるいは vi なら有効ですが、emacsen の場合 CTRL-Q が lchar もどきの動作を します(デフォルトなら)。 ここから本題にはいりますが、上の stty -a の出力は FreeBSD 4-stable のものです。 実は、5-current だと speed 9600 baud; 25 rows; 80 columns; (中略) cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>; eol2 = <undef>; erase = ^H; erase2 = ^H; intr = ^C; kill = ^U; lnext = ^V; min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T; stop = ^S; susp = ^Z; time = 0; werase = ^W; となります。良く見ると、erase2 というのがありますが、これは BS と DEL 両方に前の一文字削除を割り当てられるようにするためです。一般に、 % stty erase ^H ^? なんてできませんから。こういった需要は多いはずなのに今までサポートされて なかったんでしょうね。ちなみに、この erase2 については man stty しても 説明がみあたらず、-current の RELNOTES.TXT に書いてあります。 というわけで、FreeBSD には release ごとに結構な相違があります。 # これは昨日見つけて、どこかにこの発見(?)を書きたかった(笑)。 # ところで 3.x-RELEASE にはないが、4.x-RELEASE にはある # du や df コマンドの -h (human friedly) オプションというのはご存知でしょうか? # まあ、皆さん知っているでしょうね。この程度なら。 # 長くなりすみません。 |
>>rosegardenさん 教えてくださってありがとうございます。 残念ながら今すぐ自分ではまだ理解はできていませんが いまから勉強して覚えたいとおもいます。 ありがとうございました。 |
>gixs様 レスありがとうございます。 当人まだ、知識が乏しく本にsmitとsmittyが書いてあったりもするのですが 区別が分からずsmitでやってました^^; 「NISの解除」はその通りです。 私も、その手順で実際に行なってバージョンアップしたClientをもう一度 NISの再設定を行ってServerのマップをmakeし直すと 接続できなくなってしまうのです。 なお、smitのコマンド類はWinNTのTera Termより発行しています。 (接続できなくなってしまう→Tera TermでClientのサーバに接続できない) 以前にNISの設定を行なった作業がありまして、その時に障害を起こしてしまい(私はその時は作業はしていませんが^^;)、今回はそれをさけたいので色々と方法を模索しているところです。 一度、/etc/netsvc.confを作り hosts=local,nisを作成してやって見たのですが 今回同様の現象となってしまいました。 また復旧は stopsrc -s ypbind startsrc -s ypbind -a "-ypsetme" ypset (ServerのIP)を打ちました。 もし、これに関しても何か思い当たる点があれば、教えていただけたらうれしいです。 よろしくお願い致します |
こんにちは。 こんなことをお聞きするのは失礼かもしれませんが、 他になかったので失礼します。 よく企業のホームページなどで入力した数字をもとにシミュレーションをし、 計算結果を出力するようなページって多く有りますよね。 私もそのようなページをCGIで作製したいと思いいろいろな参考ページを見ましたが、 思うように解説ページが見つかりませんでした。 もし、入力した数値を計算し、結果を出力するようなサンプルを置いてあるページについて 何か思い当たる点があれば教えていただけないでしょうか。 本当にこんなしょうもない質問ですみません。 よろしくお願いします。 |
>>1610 rosegarden まず訂正です。 > となったときの lnext に「次の一文字を文字通り引用」(literal char???) する うえのは literal next と書こうとしたのでした。 > 読んだ人なら明らかで、lchar キーを使えば言い訳ですね。上の場合すなわち ^V です。 あと上のような、lchar というのはぜんぶ lnext に読み変えてください。 それから、 > ちなみに、この erase2 については man stty しても > 説明がみあたらず、-current の RELNOTES.TXT に書いてあります。 このくだりを書いた時に見たのは 4-stable box の man stty でした。 5-current box だと説明はないことはないんですが、 > erase VERASE ERASE character > erase2 VERASE2 ERASE2 character > werase VWERASE WERASE character 等と言った感じで、表があるだけで、ちょっと不親切ですね。 この部分はあまり変化が無いですね。 http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/bin/stty/cchar.c ここには説明がありますね。 > 1.10 Tue Nov 28 19:48:06 2000 UTC by jkh と書いてあるので、つい最近ですね。 http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/release/texts/i386/RELNOTES.TXT?rev=1.190 こちらは RELNOTES.TXT です。 ところで、 http://www.FreeBSD.org/cgi/man.cgi?query=stty&apropos=0&sektion=1&manpath=FreeBSD+5.0-current&format=html ここで見ることができますね。 http://www.FreeBSD.org/cgi/man.cgi Plan9 とか Sun OS なんかのマニュアルもここから見ることができるんですね。 今まで、知らなかった。ライセンスはどうやってクリアしたんだろう? FreeBSD 1.0-RELEASE とか 386BSD とかのマニュアルもありますね。 すごいですね。 |
>>1591 68user レスどもです。 ret = select( 64, &work_fdset, NULL, NULL, &time_out ); と指定していたので、ファイルディスクリプタ 0〜64までをチェックしかselectはチェックしていなかったので selectはタイムアウトを返し、実際取得したファイルディスクリプタは 64を超えた数になっていたのでFD_ISSETは反応を返した。 というふうになっていた模様です。 ちなみに、ファイルディスクリプタの番号を ここからここまでの番号しか取得しない。とか制限かける方法とか ないのでしょうか? |