>>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?) といった、エラーが出ます。どうしたらよいでしょう。 |