|
> アクセス状況チェックでは、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); という感じでしょうか。 |
|
お返事、どうもです。(^^) そうなんですか。>cron ちなみに、cronは、 どこのプロバイダでも利用できるものなんでしょうか? telnetができるところなどに限定されるんでしょうか。 >%crontab ~/.crontab 外部に接続すると、そのソケットのアドレスは、 グローバルなIPアドレスでないと困りますから、 それをgetsocknameで取得するということですよね。 ばっちりでした。(^^) Linuxのifconfigは、 (略 lo eth0など) ppp0 Link encap:Point-to-Point Protocol inet addr:*.*.* P-t-P:*.*.*.* (略) のようなカタチでして、水平タブなどを取り除いて、 .*?の最小マッチングを試してみたところ、取得できました。 外部コマンドの出力は、パイプを利用して取得すると。(メモメモ) 長くなってすいません。(^^; 今後とも、どうぞよろしくお願いします。 |
|
> ちなみに、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 のデータが設定されるわけで。 |
|
unixで、sqlファイルを開き、中のコードを見れる状態にしただけでは、 書きこみモードにしない限り、 SQL文の書きこみ、変更はできないようになっているのでしょうか? |
|
HP-UX9.06の内蔵HD(/ディスク)がfsckに引っ掛かってしまい、 立ち上がらない現象が発生しています。 ついては、CD-ROMからブートして上記HDをfsckに掛ける必要があるかと 思われますが。 そこで、実際にどのメディアを使い、どのような操作をすべきか 教えて下さい! |
|
> ブラウザに明示的に文字コードを伝えても > ダメですか? それでもダメならソースそのものを見せて下さい。 > # どこかにそのまま置いてもらえると、文字コードなどが > # わかるので調べやすいです。 ヘッダ対策はしてたのですが。 ご迷惑をおかけしますが、ソースをアップしてみましたので、 ご覧いただけますか。 http://www.hatsumei.psiweb.com/IPconvert_3.cgi.txt > nkf は、CGI の出力を JIS にするために使っているだけです。 > ・スクリプトを SJIS にして、出力も SJIS > ・スクリプトを EUC にして、出力も EUC > などという場合は、nkf は不要です。 知識不足でお恥ずかしいです。勉強になりました。 |
|
すいません。アドレス間違えました。 正 → http://www.hatsumei.ab.psiweb.com/IPconvert_3.cgi.txt |
|
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 も使ったことがないので わからないです。 |
|
68user様。 やはり文字化けでしたか、ありがとうございました。 SJIS での一部の漢字と @ の文字化けは知ってましたが、 全角空白2つでも化けるとは知りませんでした。 教えていただいた「対策」もいいと思いましたが、 print " \ $desc = $after<br>\n"; と、全角空白の一つ目と二つ目の間に、 エスケープ用にメタキャラクタ \ を置いてみると ソース的にすっきりするかなと思い、 やってみたらこれでうまく表示されました。 いやぁ、とほほさんのところも覗いてきましたが、 漢字コードひとつとっても、奥深いですね。 ほんとにお世話になりました。ありがとうございました。 |
|
別に全角空白が2個だからまずいわけではなく、 \x81 @ $ d e s c となるので、@$desc という配列 (シンボリックリファレンス) を表示しようとしているのでしょうから、 > 全角空白の一つ目と二つ目の間に、エスケープ用に > メタキャラクタ \ を置いてみると で本当にうまくいくのか疑問です。確かでしょうか? それとも jperl だからうまくいく、ということでしょうか。 なお、FreeBSD+perl5.00503 では $desc = 'abc'; print " \ $desc\n"; ではダメでした。 |
|
> で本当にうまくいくのか疑問です。確かでしょうか? 再度確認しましたら、文字化けはしていないのですが、 インデント、つまり空白2文字分の字下げはうまくいっていませんでした。 その分が、つめられて行頭に配置されます。 > それとも jperl だからうまくいく、ということでしょうか。 ローカルでなく、プロバイダの Appacheサーバ上ではありますが。 でも、疑問が。 > print ' '; # 全角空白2つ > print "$desc = $after<br>\n"; これでやってみましたが、syntax errorを返してきました。 上の2行目が next token ??? なのだそうです。 エンジンで検索してみましたが、意味がわかりませんでした。 セミコロンは打ってるし・・・。 |
|
はじめまして。 ヘルツォークで検索したら、貴サイトにたどりつきました。 最近私はヘルツォークツヴァイのようなゲームを 自作してみようという主旨のサイトをつくりました。 まだ内容はないのですが、よかったら見て下さい。 トップページから最強の敵を創造る会へどうぞ。 メイリングリストも参加募集中です。 プログラミング好きの方でツヴァイ好きの方、 共にヘルツォークの続編(みたいなもの)を作りませんか。 |
|
> インデント、つまり空白2文字分の字下げはうまくいっていませんでした。 半角空白になってませんか? > これでやってみましたが、syntax errorを返してきました。 > 上の2行目が next token ??? なのだそうです。 タイプミスだと思いますが、直らなければ再度 どこかに置いて、見せて下さい。 > 最近私はヘルツォークツヴァイのようなゲームを > 自作してみようという主旨のサイトをつくりました。 ゲームをやらないのでよくわかりませんが、最強の 思考ルーチンを作ろう的なページですか。いろんな 思考ルーチン同士を戦わせると面白そうですね。 昔 I/O でそういう記事があったっけなぁ。 |
|
どうも、yujiです。(^^) 今、いろいろなサーバーにアクセスして、 HTMLファイルをダウンロードするというプログラムを作成しているのですが、その中にダウンしていると思われるサーバーなどが ありますと、そこで処理が中断されてしまいます。 そこで、タイムアウト処理のようなものを実装して、 ある程度経過してもダウンロードできないようなら、 次のURLに進むようにしたいと考えています。 こういった場合、どのようにして、 タイムアウト処理を実装したらよいのでしょうか? forkなどで子プロセスを作成するのでしょうか。 アドバイスなどありましたら、どうぞよろしくお願いします。(^^) |
|
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 するにはどうしたらいいのかなぁ? |
|
すばやいお返事とサンプルコード、 ありがとうございます。 $SIG{ALRM}とevalを用いることで、 うまくできました。(^^) DNSサーバーエラーなどで、 connectで時間がかかる場合があるということで、 connectと<SOCKET>の部分をalarmで 囲むカタチで利用させていただきました。 connectの部分については、 最初にIO::SocketのTimeoutを指定してみたのですが、 うまくいきませんでしたので。(^^; $SIG{ALRM}=\&timed_out;の\は大切なのですね。 意味合いについて、調べてみたいと思います。 今後とも、よろしくお願いします。(^^) |
|
68user様、遅ればせながら、 >> インデント、つまり空白2文字分の字下げはうまくいっていませんでした。 > 半角空白になってませんか? どうやら、そのようでした。 ただ、ウインドウズ環境のテキストエディタでは、 全角空白というのが打ちにくいように思いました。 半角空白二つならべて、それで同じかなんて思ってました。 私の知識不足なのかもしれませんが。 ちなみに、下のように書いて、やっとインデントができました。 print ' '."$desc = $after<br>\n"; |
|
> 半角空白二つならべて、それで同じかなんて思ってました。 半角空白を2つ並べてもブラウザに反映されないのは、 perl とは全く関係なくて、出力しているのが HTML だからです。 HTML 的に言えば で空白を表現する方がいいでしょう。 わかっておられるかもしれませんが、念のため。 |
|
どうも、yujiです。(^^) Web上でアカウント発行がいろいろなところで行われていますが、 いたずら防止などもあり、入力したメールアドレスに、 登録内容の確認のメールを送って、再度返信してもらうなど さまざまな方法がありますが、こういったプログラムは、 どのような仕組みになっているのでしょうか? かなり漠然とした質問で申し訳ないですが、(^^; なにかご存知でしたら、どうぞよろしくお願いします。 |
|
0. メールが返ってきたらメール処理プログラムが実行されるよう、 ~/.forward で設定しておく 1. CGI でメールアドレスを入力してもらう。 適当なファイルにメールアドレスを記録して、メール送信 この時点で CGI プログラムは終了。 2. 訪問者がメールを受け取り、再度返送 3. メールが届き、~/.forward で設定したプログラムが実行される 記録しておいたメールアドレスと照合して、正しければ OK。 …てな感じでしょうか。 |
|
またまたすばやいお返事、どうもです。(^^) なるほど。>0,1,2,3 ~/.forwardについては、初耳でして、勉強になります。 あと、メールのヘッダやフッタに自動的に広告などをいれている メールを見かけますが、ああいうものは、 どういったカタチで実現しているんでしょうか? CGIなどを使って、というカタチでしょうか。 |
|
こんばんは。某ラウンジで何度かお世話になりました。 さて、さっそく質問なのですが、ファイルマウントについて教えてください。サーバを一台まるごと借りたはいいのですが、なかなか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です。何かいいアイディアや参考になるウェブサイト・本があればご教示ください。情報が足りなければご指摘ください。 |
|
> この/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 上でボタンを押すとそういうメールが送られる、 # というなら関係ありますけど。 確か、そういう機能を持ったメーリングリストプログラムが あったように思いますし、常に一箇所からしかメールが発信 されないなら、その部分でヘッダやフッタを追加してもいいです。 |
|
> 7. mv /var /oldvar おっと。マウント中のマウントポイントは mv できないかも (FreeBSD ではそうでした)。 一度 /dev/hd2 を umount すればいいですが、もし device busy などと怒られたら、umount -f で強制アンマウントできます。 本当は fstat や fuser で、/var 以下のファイルを使用している プロセスを調べて、それを殺してから umount するのが筋ですけど。 |
|
いつもお返事、ありがとうございます。(^^) 表現が悪かったですね。>CGI(^^; おっしゃるように、この場合は、必ずしもWWWサーバーと やりとりするわけではないですから。 perlやCによるプログラム でヘッダやフッターを処理したメールを、SMTPサーバーで 送信しているのか、それともSMTPサーバーのどこかで、 ヘッダやフッターを設定できるのかな、と思いまして。 今のところは、他の場所で使う予定はないですので、 自分で付加するプログラムを実験してみようと思っています。 下のメーリングリスト関連のリンク集を参考に、 いろいろなメーリングリストの特徴を勉強してみようと思います。(^^) http://yamanoya.ecs.cst.nihon-u.ac.jp/patio/ml/makeml/mllinks.html |
|
お返事ありがとうございます。 早速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は消しても構わないと判断できるでしょうか。 |
|
> ただ、/newhomeと/homeが両方存在しています。/newhome は > 消しても構わないと判断できるでしょうか。 多分よいと思いますが、df -k して、別パーティションで あることを確認して下さい。また、本当にコピーできたか どうか du や diff などで確認して下さい。 > `mkdir /home`は不要だったか? /dev/hda2 を /home にする、ということなのでマウントポイント /home はマウントする前に mkdir で作成しなければなりません。 なお、マシンが手元にあるなら、シングルユーザモードで起動してから 作業をするのが正しいやり方です。 > perlやCによるプログラムでヘッダやフッターを処理したメールを、 > SMTPサーバーで送信しているのか、それともSMTPサーバーのどこかで、 > ヘッダやフッターを設定できるのかな、と思いまして。 SMTP サーバがヘッダやフッタに関与することはないと思います (そういうサーバが世の中に絶対ないとは言い切れませんが)。 ちなみにメーリングリストサーバの fml なんかは、ポリシー として、フッタを付けるような機能は実装しない方針だった ように思います (今はどうか知りません)。 |
|
はじめまして。 pl(cgi)で $A="abc"; この$Aに入っている“abc”をクリプト化したいのですが どのようにすればよろしいですか? |
|
Xwindowのソフト開発をやらなければいけません。が、まったく分かっていない状態だと思います。 サンプルプロを入力して起動させると、画面は表示されないままだんまり状態になります。 fputsのstdoutで処理通過点を表示させると、XtMainLoop()のところでだんまりになってる様です。 しかし、どのように原因を究明していいのか、ディバッグツールは何があるのか全く分かりません。 古いUNIXの本にadbと言うディバッグツールが乗っていたのでmanで説明を見て(と言っても英文なので見たつもり) いろいろ表示させて見ましたが、内容を見ても分からない状態です。 一体何をどうすれば、いやいや、何からどう始めれば、はたまたどんなマニュアルを購入すれば、少しはましな状態になるでしょうか? どうかお願いします。どんなヒントでもいいので教えてください。 順序が後先になりましたが、OSはSolaris7、言語はC、マシンはSUNです。 掲示板に書き込むのは初めてなのですが、これでよろしいでしょうか? でれでは・・・。 |
|
> この$Aに入っている“abc”をクリプト化したいのですが お望みのものかどうかわかりませんけど、 http://X68000.startshop.co.jp/~68user/webcgi/cryptogram.html など。 > fputsのstdoutで処理通過点を表示させると、 > XtMainLoop()のところでだんまりになってる様です。 僕は Xt のプログラムを作ったことがないのですけど、 XtMainLoop で戻ってこないのは正しいのではないですか? その中でイベント待ちをしているわけだから。 |
|
お返事どうもありがとうございます。 確かにおっしゃる通りです。正確に自分のQを伝えていません。ごめんなさい。 XtMainLoopでだんまりになっているのに、画面が表示されないのです。 色々悩んでリソースファイルと言う物が間違っているのかとか思うのですか・・ 自分が起動かけてる状態で、どのリソースファイルを見にいってるのかも分からないんです。 だから、本当にリソースファイルが問題なのかどうかも??? マニュアルによると、/usr/lib/X11/app−defaults と言うファイルだと書いてありますが/usr/libの下にはX11なるディレクトリはありません。 ではapp−defaultsはというと、いくつものフォルダーに存在しています。(ざっと40個位) はたしてどのファイルなのやら・・・・ こんな状態ではいつになったらソフトが完成するのやら・・と思うと気がめいってきます。 が、やらねば。 何かヒントをお願いします。 |
|
「僕の血の半分は地球人の血です!僕の父は地球人です!」「目を覚ませ!エイジ!」「基地の中には僕と同じ位の年の人もいるのです!」・・・レイズナーは一部が面白かったですね。エイジが全裸でカプセルに閉じ込められてる姿はドキドキものでした!二部のエイジはなんかオヤジっぽくてイマイチだと思ったのは私だけ? |
|
> レイズナービデオに取って見ていた女 すいません、おそらく あなたが見たコンテンツは 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 の説明が載ってました。 |
|
> 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 と解釈してよいのだろうか? |
|
毎日どうもありがとうございます。感謝感謝です。 たくさんのコメントどうもです。 まず、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。です。 |
|
すいません、Xt のつもりで書いてました。Motif なんですよね。 Xt* のくだりは無視して下さい。その他は後ほどまた書きます。 |
|
> X-windowsのプログラムはXlibだけでもコーディング出来るのですか? > XツールキットとかMotifルーチンとかが無くても出来るのですか? > XツールキットとかMotifルーチンは簡単にコーディングするための > ライブラリーなのですか? 答えは全て YES です。Xt も Motif も最終的には Xlib の API を呼びます。 http://www.ainet.or.jp/~inoue/im/basic.html#api が参考になるでしょうか。ただし、Xlib だけでやろうとすると 入力フォーム一つ作るのにも相当苦労するでしょう。 # この方のページはとても質が高いので、UNIX を使う人は # 一通り目を通しておいた方がよいと思います。 ちなみに、 > 極端な話、Xlibを使わずソケットプログラミングで直接 X protocol を > 話すXクライアントアプリケーションを作ることも原理的には可能です。 というのは、/tmp/.X11-unix/X0 に対して UNIX ドメインソケット経由で X プロトコルを話すとか、ポート 6000 に対して X プロトコルを話す、 ということです。 > ほかにOpenGLとかXveiwとかも聞きますがそれらの位置関係が全く 僕もわかってません。なので、偉い人に聞いてきました。 http://www.energy.ee.ehime-u.ac.jp/~flathill/FreeBSD/chat/log/200006/20000610.html の (Jun 10 00:26)[go] を読んで下さい。 # …全然わかってなかったんだなぁ。 あと、OpenGL は 3D を描画するためのライブラリです。 > 最後に、マニュアルは、地方にいるので書店にいってもX-windowsの > マニュアルなんてほとんど皆無です。 こっちも http://www.energy.ee.ehime-u.ac.jp/~flathill/FreeBSD/chat/log/200006/20000611.html をどうぞ (6/11 07:00 あたりにならないと作成されません)。 > 次に、XtOpenApplicationを使ってコーディングしてみましたが やはり Motif であっても XtOpenApplication を使うべきだとは 思いますが、お使いの openwin が X11R6.3 より古い規格に準拠して いるのではないかと思います。 > 内のX11のバージョンは分かりません。 man X とすると、最後に X Version 11 Release 6.3 などと書いてあると思います。 以下、ひとりごと。Perl/Tk 800.xxx 系の日本語化パッチ。 http://opinion.nucba.ac.jp/~tsutomu/perltk/jp-patch.html やっと見付けられた…。 |
|
グラデゥウスの基盤手に入ったがどうしても無敵技で来ません 教えてください 4面でフォースフィールドつけながらクリアーして そのあとまたはりなおすんですか?? |
|
私は課題研究という授業で ゲーム業界についてというテーマで いろいろ調べています。 その中で、ここが検索に引っかかりました。 日付から見てかなり前のものだったようですが、 中古ゲーム販売についての論争、 とても参考になりました。 当然、こんなテーマで調べているのですから 私自身ゲームもやりますし、 中古店も利用しています。 いろいろ考えさせられました。 参考といってもあの内容をそのまま引用したり するわけではありません。 調べる範囲に中古市場を加えることを 視野に入れて・・・変な文章・・ とにかく、それを加えることを決めました。 報告書作成まで、日にちが余りないのですが がんばってみようと思います。 勝手ながら少しばかりご挨拶をさせて いただきました。 |
|
おひさしぶりです。いつぞやは、お世話になり、ありがとうございます。 早速ですが、質問がございます。 echo-3.htmlには、 > このように SOMAXCONN を指定すると、 OS が許す最大値を意味します。 とあって、且つ、 > FreeBSD2.2.7 では /usr/include/sys/socket.h で > #define SOMAXCONN 128 >と定義されているので、 とあります。 で、以下の1)と2)のどちらに解釈していいのか悩んでいます。 1) この例の128は、クライアントや言語に依らず(?)、OSによって 一意に決定されるもの。 2) この例の128は、クライアントや言語に依って、決定されるもの。 (∵128と書くということは、減らすのはもちろん、増やすのも可能?) (これが真なら、いじる方法はありうるでしょうか?) なぜ、このような質問をするかというと、 a) 事の発端は、自作proxy( http://henika.virtualave.net/view.cgi?0 ) で、 http://henika.virtualave.net/japanese/browsers.htm を (厳密に言うとローカルマシン上でテストしてます)見に行くと、画像の 枚数が多いせいか、全ての要求を受付てくれない(logで確認済み)。 b) でも、自作proxyを経由しないと、ちゃんと表示される。 c) そこで、SOMAXCONNをいじれないか? と、思ったからです。 多分、いじれそうにないな、とは思っているのですが、もし、いじる 方法(perlのコンパイルを除く)をご存知でしたら、ご教授願いたく、 よろしくお願いします。 因みに、環境はwindows98, perl -vでは、 This is perl, version 5.005_03 built for MSWin32-x86-object と表示されます(失礼ながら、windowsをご存知ではないのは、過去ログ から、承知しておりますので、perlでいじれる方法、ということで、 お願いします)。 ・・・とかいいつつ、delegateのように、delimiter(但し/-_-ではなく/)で imgタグをproxy経由させないように改定してしまいましたが、気になって 気になって仕方がない・・・ |
|
すいません、先の自作proxyは、あれ単体では動作しないので、 もし、眺めるのでしたら、お手数ですが、 http://henika.virtualave.net/view.cgi?0 を適当な名前に、 http://henika.virtualave.net/view.cgi?1 をfilter.plに、 http://henika.virtualave.net/view.cgi?2 をhtrans.plに してください。 宜しくお願いいたします。 参照 http://henika.virtualave.net/japanese/proxy.htm |
|
> グラデゥウスの基盤手に入ったがどうしても無敵技で来ません わからないです。というか、無敵技があったのか。 # ちなみに基盤じゃなくて基板です。 > 参考になりました。 と言っても、僕が書いた文章ではないので扱いには お気をつけ下さい。まぁ、 > 参考といってもあの内容をそのまま引用したりするわけではありません。 ということなので、心配はしておりませんけど。 > 1) この例の128は、クライアントや言語に依らず(?)、OSによって > 一意に決定されるもの。 です。 (FreeBSD では) この数はカーネル内部に書かれており、動的に数を 変更する仕組みもないので、一般ユーザでも root でも変えられません。 どうしてもというならカーネルの再コンパイルでしょうか。 とはいえ、他の UNIX 系 OS では動的に変更できたりする *可能性* はあります。 # ioctl とかで変更できても不思議ではないけど、できなくても不思議ではない。 > 画像の枚数が多いせいか、全ての要求を受付てくれない(logで確認済み)。 なお、FreeBSD では SOMAXCONN は128で、128*1.5=192 なので、待たせて おけるクライアント数は最大 192 になります。しかし、本当にそれくらいの コネクションが張られているのでしょうか? netstat で見ると ESTABLISHED に なっているのが そんなにたくさんありますか? あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん 接続してみればわかると思います。 なお、http://X68000.startshop.co.jp/~68user/net/echo-3.html には > もし backlog 以上のクライアントが同時に connect してきた場合は、 > サーバは接続を拒否するか、何もレスポンスを返しません。 とありますが、おそらくこれは間違いで、拒否することはありません。 カーネルレベルで無視するだけで、サーバプログラム側はクライアントが やってきたことすら検知できません。 一方クライアントからは TCP の 3way handshake の1発目の SYN に対する 返事が返ってこないので、そのうち SYN を再送、という挙動をすると思います。 |
|
> ioctl とかで変更できても不思議ではないけど、できなくても不思議ではない。 ioctl はありえないですね。デバイスじゃないんだから。 |
|
ご回答、ご指導、どうもありがとうございます。 >カーネルの再コンパイルでしょうか。 こ、この時点で、止めが刺された気がしました。A^^; 多分、windowsでもあてはまるのでしょう。 >しかし、本当にそれくらいのコネクションが張られているのでしょうか? > netstat で見ると ESTABLISHED になっているのが そんなにたくさんありますか? 早速、試してみました。 netstatで、ESTABLISHEDとなった本数(数回やった場合の最大)を以下に示します。 Local Address = n:80 は、 2 Local Address = n:8080 は、 5 Local Address = n:15xx は、 7 (15xx=1500番台) http://henika.virtualave.net/japanese/browsers.htm には、このページ+36枚画像 あるので、ブラウザと思われる1500番台が、想像ですが、20近くないとおかしいような 気がします。この時点で、SOMAXCONNの値は1桁台と推測しました。 この時点で、自動的に、 >あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん >接続してみればわかると思います。 を、満たしてしまっているような気がします・・・ 因みに、SOMAXCONNをperlで表示させると、 5 でした(以下を実行)。 use IO::Socket; print SOMAXCONN; (思いつきで試したので、あまり意味がないかもしれません・・・) これが正しければ、待たせておけるクライアント数は、5+alphaで、先の推測には 合致してるなぁ、と思い込んでいます。 う〜ん、windowsって、少ないのかなぁ? なんかうそっぽいなぁ。 >カーネルレベルで無視するだけで、サーバプログラム側はクライアントが >やってきたことすら検知できません。 なるほど。windowsでも同様であれば、当方の現象(全ての要求を受付てくれない) も納得いきます(logにクライアントから要求されるはずのイメージ・ファイルが 要求されていないようになっている)。 >一方クライアントからは TCP の 3way handshake の1発目の SYN に対する >返事が返ってこないので、そのうち SYN を再送、という挙動をすると思います。 申し訳ないのですが、このあたりは、まだよくわからないので、確かめられません。 今後の課題・勉強材料とさせてください。 |
|
> これが正しければ、待たせておけるクライアント数は、5+alphaで、 > ... > う〜ん、windowsって、少ないのかなぁ? なんかうそっぽいなぁ。 うーん、ちょっとうそっぽいですねぇ。いくらなんでも一桁ってのは…。 SOMAXOCNN が誤って5になってしまったから、それ以上接続できない という可能性はないですか? backlog に 10 や 100 を渡すと どうなりますか? 僕はこれ以上わかりませんが、もし Winsock に詳しい方が おられましたら教えて下さい。 |
|
お久しぶり(?)です。 色々情報をもらって少し頑張って見たつもりですが、もーイヤ!と言う感じです。 やっぱり自分にはX−windowのプログラム作成は無理なんでしょうか? そんなに簡単に出来るとは思っていませんが、でもいまの状態では全く持って・・ でも一つだけ決めた事があります。それは、Xlibだけで作成するのはやめよう と言う事。馬鹿げた事を、と思わないでください。この結論を出すのもとっても 大変な位にX−windowに関して無知なんです。 まだ迷っているのはMotifを使うか使わないかと言う事。 で、とりあえず何かを始めないと、と思い、XtとMotifをこだわらずに( これがまた問題なのですが)サンプルプロをアレンジして、自分の作りたいアプリ に近づけようと努力しました。が、もーイヤと言うかダメと言う感じです。 Xlibだけを使用したサンプルプロにイベント処理(具体的にはPointerMotionMask) があったので、そのサンプルを加工して、画面に現在のカーソル座標を表示させる 所はOKになったのです。でもXtで作り直そうと思って関数を探して(これも 大変な作業です 自分には)XtAddCallback、XtAddEventHandlerを使おうと思ったまでは 良かったのですが、パラメータ中のイベントマスク名が何を見ても一部しか載って いないのです。PointerMotionMaskに相当するベントマスク名が・・・・・・・!! これじゃー全然はかどらないよ!!って訳です。 やっぱり絶対にマニュアル不足ですかね? それともマニュアル以前の問題ですかね? どう思われます? 率直な意見を教えてください。 (でも「あなたには無理です」と言う究極の意見は勘弁してください。首が かかっているんです) 愚痴になってしまいました。ごめんなさい。 ここしか頼るところ無くって、申し訳無いと思っているのについ書かずに いられないんです。 また来週元気出して頑張るぞ!! じゃあまたネ!! |
|
はじめまして。 ずっとROMオンリーだったのですが、書きこんでみます:) @へにかさん >因みに、SOMAXCONNをperlで表示させると、 5 でした winsock-ver1のSOMAXCONNはホントに5です。ネタじゃなく。 winsock-ver2になってはじめて0x7fffffffになりました。 思うに、perlはwinsock-ver1のヘッダを使っているのではないでしょうか。 さらに、テストされているブラウザはIEかネスケだと思いますが、 どうもブラウザ側が、5より多くのコネクションを張らないようですね。 これはおそらく、前述のwinsock-ver1にも対応させるためだと思われます。 #自信は無いです(笑 なので、プロキシ側でいくらbacklogを増やしても、 ブラウザ側が接続しに来てくれないんだと思います。 @jamesさん XとMotifを使っての開発は、かなり昔にHPとSolarisで行った事があるのみなのですが、 #もうほとんど忘れています(苦笑 その時に非常に役に立った書籍として、 ・日刊工業新聞社「X-Window Ver.11 プログラミング」 ・日刊工業新聞社「OSF/Motifプログラミング 」 の2冊をあげてみます。 見た目がかなり初心者向けっぽいのですが、 なにもわからなかった頃から、だいぶ理解できてきた頃まで、 ずっと役に立ってくれました。 オススメです。 #ちょっと検索かけたら片方だけでてきました↓ #http://www.pro.or.jp/~fuji/computerbooks/unix-x/osfmotif.nikkan.html @68userさん どうも、はじめまして。 いきなりでアレなのですが、:) httpサーバがContent-Lengthを返してくれないコンテンツには、 クライアント側からどのように対処するべきでしょうか。 現状の自作proxy(この書き込みもコレ経由です)では、 サーバ側からの切断を待っている状態ですが、 どうもこちら側から切らなければいけないようで、 毎回タイムアウトで自分から切るハメになっています。 #例えば、下でへにかさんが示しておられるURLから示されているGIF画像もそうですね。 IEやらネスケやらのブラウザはやってくれているようなので方法はあると思うのですが、 探し方が悪かったのか見つかりませんでした。 なにか、普通こうするだろ、って言うような方法というのは有るのでしょうか? もし知っていらっしゃったら、ぜひ教えてください。 よろしくおねがいします。 ・・・でも、画像ファイルの中を見て長さを取得してたりしたらイヤだなぁ(笑 |
|
68user様、hsj様、ご教授、どうもありがとうございます。 68user様>backlog に 10 や 100 を渡すとどうなりますか? backlogを、思い切って128に増やして、netstat 1 で、1秒刻みで出力した結果を 以下に示します。 前回、netstatを、(間抜けなことに)手動で何回も実行した結果を示しましたが、 そのためか、前回とは異なる結果になってしまいました。すみません・・・ backlog = 128 Local Address = n:80 は、 7 Local Address = n:8080 は、 5 Local Address = n:14xx は、 12 (14xx=1400番台) backlog = SOMAXCONN Local Address = n:80 は、 8 Local Address = n:8080 は、 5 Local Address = n:15xx は、 12 (15xx=1500番台) Local Address = n:ingreslock は、 1 (←ほとんど出ない) 上記の結果から、backlogを増やしても、大差ないみたいです。 hsj様のご示唆から考えて、proxyを経由しない場合を調査しましたので、以下に 示します(上記の結果に対応しています)。 Local Address = n:80 は、 5 Local Address = n:16xx は、 5 (16xx=1600番台) (但し、Netscape3.0) 確かに、おっしゃるとおり、 hsj様> 5より多くのコネクションを張らない ようですね。 でも、proxy経由しないほうが、ちゃんと画像が表示されるので、今、僕は 混乱の極みです(今までも混乱してますが)。 proxy経由すると、コネクションが張られっぱなしみたいなので、どうも、 backlogが怪しいわけではない??? となると、proxyが黒ですね。 hsj様>httpサーバがContent-Lengthを返してくれないコンテンツには、 hsj様>クライアント側からどのように対処するべきでしょうか。 このご質問が、良い示唆になって、ありがたいです。ここを対処すれば、 >へにか@箇条書き [URL] 2000/06/14 (水) 23:02:08 >a) 事の発端は、 {略} >全ての要求を受付てくれない(logで確認済み)。 が、うまく解決できそうな予感がします。 追伸1: だんだん、わかってきたような気がして(実際にわかってるかどうかはおいといて)、 嬉しいです。こちらの掲示板でお世話になって、よかった、と思っています。 追伸2: 明日(日曜)から、1週間(弱?)程度、出張に行ってきますので、書き込みが 遅れるかも知れません。色々アドバイス頂いているのに、大変申し訳ないです。 |
|
@james さん > それは、Xlibだけで作成するのはやめようと言う事。 賢明な選択でしょう。 > やっぱり絶対にマニュアル不足ですかね? だと思います。この前のチャットのログや hsj さんの情報を 元にして何か本を買わないと苦しいと思います。 UNIX で GUI アプリを作るなら、Gtk+、Qt、Perl/Tk などの 選択肢もあります。入門書は結構出てます。ただ「困っても その本を読めば絶対にわかる」といったレベルまで 徹底的に 解説した本はないですね。 ただ、仕事に使えるほど熟成しているかというと、ちょっと不安ですが。 # Gtk+ や Qt って、もう API の仕様は固まったのかしら? @hsj さん > winsock-ver1のSOMAXCONNはホントに5です。ネタじゃなく。 > winsock-ver2になってはじめて0x7fffffffになりました。 なるほど。どうもです。 > サーバ側からの切断を待っている状態ですが、 > どうもこちら側から切らなければいけないようで、 HTTP/1.0 なら常にサーバ側から切ってくれますので、 while (<SOCKET>){ print } でいけるはずです。 マルチスレッドなら select で待って、 $len = read(SOCKET,$buf,8192); if ( ! $buf ){ 切断された } # $len==0 の方が better かな? てな感じでどうでしょうか。 @へにかさん > proxy経由すると、コネクションが張られっぱなしみたいなので、どうも、 > backlogが怪しいわけではない??? となると、proxyが黒ですね。 ですね。本来、proxy がやってきたクライアントをさくさく accept していれば、SOMAXCONN が 1 でも影響は出ないはずですから。 うまくマルチスレッド化できているかどうか調べてみて下さい。 なお、 > Local Address = n:8080 は、 5 というのは accept 済のコネクションと accept 前の OS がキューイング しているコネクション、両方の合計が 5 ということです。なので、 この調べ方はあくまでも目安にしかなりません。念のため。 厳密に調べたければ > あと、お使いの環境での最大接続数を調べるには、1つのポートにがんがん > 接続してみればわかると思います。 をやってみてください。 |
|
@68userさん >HTTP/1.0 なら常にサーバ側から切ってくれますので はい、そのハズなのでそれを待っているのですが、 #ちなみにCでつくっています どうも、なかなか切ってくれないようなのです・・・ ・・・というのが疑問だったのですが、解決しました:) つくった機能のうち、環境変数の追加と削除で、 深い考え無しに、「Connection: Keep-Alive」を追加していました。 さらに追い撃ちで、HTTP/1.0にもかかわらず、 httpdによってはコレを解釈してくれているようで。 基本に戻ってrfc2616ながめてて気が付きました・・・あぁマヌケ。 そこで、この環境変数を「Connection: close」に修正したところ、 期待通り、httpd側からサクサク切ってくれるようになりました。 なにはともあれ、ありがとうございました。 @へにかさん もしかして、へにかさんのおっしゃっておられる、 「プロキシを通すとコネクションが張られっぱなしになる」というのも、 この辺りと関係がないでしょうか? |
|
はじめて書き込みます.UNIX初心者のものです. ソース環境がひとつで2つのアプリを作っているのですが, 毎回できたオブジェクトを手作業で退避・圧縮しています. この作業をmakefileに記述したいのですが,次の記述でよい でしょうか. BAKDIR2 = /tmp/backup2/ test2.o.gz: test2.o cp -p test2.o $(BAKDIR2) gzip $(BAKDIR)/test2.o ご指導よろしくお願いします. |
|
> 深い考え無しに、「Connection: Keep-Alive」を追加していました。 なるほど。HTTP/1.1 まわりではまるのは よくありますよね。 # Host ヘッダを付けず HTTP/1.1 を使ってはまるとか。 > この作業をmakefileに記述したいのですが,次の記述でよいでしょうか. よいように見えますが、そちらではうまく動いていないんですか? |
|
どっかのホームページを読み込んできて タグ以外と、コメントを削除する ということをやりたいんですが、 http://www.din.or.jp/~ohzaki/perl.htm で タグを削除する というのがあったので、これをタグ以外を削除 にしてみたのですが、 コメントタグが消えてくれません、、 <!-- -->で囲まれている中身と、<!--、-->も消えてほしい。。 消したいんですが、どのように改造するといいで しょうか? ---ソース--- $tag_regex_ = q{[^"'>]*(?:"[^"]*"[^"'>]*|'[^']*'[^"'>]*)*}; #'}}}} $comment_tag_regex = '<!(?:--[^-]*(?:(?!--)-[^-]*)*--(?:(?!--)[^>])*)*(?:>|(?!\n)$|--.*$)'; $tag_regex = qq{$comment_tag_regex|<$tag_regex_>}; $text_regex = q{[^<]*}; $result = ''; while ($str =~ /($text_regex)($tag_regex)?/gso) { last if $1 eq '' and $2 eq ''; $result .= $2; } ------ あ、本当はとほほラウンジに書きたかったのですが、 書き込みできなかったので、、 |
|
こちらで質問をさせて頂きたいのですが、unix commandで、OS及びHWが 32bitか64bitと知るにはどの様なコマンドを打てばよろしいのでしょうか? 教えていただきたいと思います。 |
|
> <!-- -->で囲まれている中身と、<!--、-->も消えてほしい まずタグ以外を消して、再度 <!-- --> を消すような正規表現を 使うというのはダメですか。 # ちょっとその正規表現を読む気力がないので…。 > OS及びHWが32bitか64bitと知るにはどの様なコマンドを > 打てばよろしいのでしょうか? 思い付くのは printf("%d\n",sizeof(int)); くらいですかねぇ。 これが「OS及びHW が32bitか64bit」という判断の基準として ふさわしいかどうかはわかりません。 |
|
68userさん、 回答ありがとうございました。 |
|
初めましてです。このサイトはとてもわかりやすく書かれていて嬉しいです。 ところでHTTPクライアントを作りたいのですが、その前にブラウザがどんな環境変数やデータを吐いてるか尻たいです。 tcpdump -i ul0 などとやってみましたが意味不明でしたです。 GET / HTTP/1.0 Referer: http://hoge/hoge っていうようなテキストベースでのデータや相手の送信内容を知るにはどしたらいですか? |
|
http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=658 でいいですか。 あと、tcpdump の吐く hex データから tcp 部分を抽出する スクリプトを作るというのも、TCP と IP の勉強になります。 |
|
質問させて下さい。 こちらのホームページで、アクセス状況をグラフ表示していますが、 これはどうやったら出来るのでしょうか。 DBからデータを取得し、グラフ表示をしたいのですが、具体的な 方法が分かりません。 何か参考に出来るのではと思い、お尋ね致します。 宜しくお願いします。 |
|
1時間に一度 (cron で実行) http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/countup.hour で http://X68000.startshop.co.jp/~68user/count/total.top にその時点でのカウンタ値を追加し、さらに1時間に一度 http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/make-count で http://X68000.startshop.co.jp/~68user/count/out/day.top を作成してます。 画像表示用 CGI は http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/view-count.cgi です。 GIF の生成には fly コマンドを使っていますが、例の GIF 圧縮の 特許の問題で Unisys からクレームが付く可能性があります。png 版に 入れ換えようと思ってはいるのですが、なかなか時間が取れず ほったらかしになってます。 画像データ生成が面倒なら、 http://www2s.biglobe.ne.jp/~cru/library/zddbbs/cgi-bin/wwwboard.cgi の投稿コードの画像のように、xbm (モノクロ) や xpm (カラー) 形式を 使う手もあります。xbm も xpm もただのテキストファイルです。 |
|
68userさん、ご丁寧に回答いただき感謝します。 参考にさせていただきます。 どうもありがとうございました。 |
|
初めて書き込みます。 皆さんにひとつ教えていただきたいことがあります。 実は、ある会社でメールサーバーを作ってるのですが外部からのリレー を許可したいのです。 ところがSPAM対策も大事ということで行き着いた答えは 「POP before SMTP」です。 http://www.venus.dti.ne.jp/~phashim/fmv/POPbeforeSMTP.html を参考にと思ったのですが、私のQpopperは バージョン3.02すでにPOP認証のログを吐き出しています これを利用すると書いてあるのですが どのようにすればいいのでしょうか どなたか、アドバイスお願いします |
|
はじめまして、UNIX始めて2週間くらいたちました。 で、いきなり躓いてしまい先輩方に教えていただきたい事が在ります。 cシェルで、複数件のファイルを一つずつ読みたいのですが、 どうしてもうまく行きません。 とりあえず、リストファイルを作ったまでは良いのですが、 ls -1 > TAR.list awk 'substr($1,8,3)~ /tar/ {print}' TAR.list> TAR.result そのファイルを頭から一件づつ読むやり方がわかりません。 何か良い方法が在ったら教えてください。 |
|
@ookubo さん > バージョン3.02すでにPOP認証のログを吐き出しています という意味がわからないです。3.02 なので修正点が違うから 困っているということですか? 既に認証リストはあるので POP before SMTP 用の無駄なログを吐きたくないということですか? @sawaさん > awk 'substr($1,8,3)~ /tar/ {print}' TAR.list> TAR.result awk なんてすっかり忘れてしまったなぁ。最初見たとき 書き間違いかと思った。 > そのファイルを頭から一件づつ読むやり方がわかりません。 foreach fn (`cat TAR.list`) ls -l $fn end てな感じでいいですか? ファイル名に空白や *、? などを 許すなら、事前に sed あたりで変換しておく必要があります。 # まぁ、csh スクリプトでこだわっても仕方ないですけどね。 |
|
突然ですが質問させてください 初心者なんで的外れかもしれませんが・・・ あるサーバソフトを作成中ですが、そのサーバソフトが起動時に 読込む設定ファイルのパスってどうすればいいんですかねぇ・・・ fopenする時ってフルパス指定するじゃないですか(違います?) でサーバソフトはInetdで起動されるんです。 だから何処で動いているかわかりませんよね どーすればいいのかなぁ・・・ 教えてくださーい inetd.confの起動時オプションですか??? |
|
お聞きしたい事があるのですが、 使っているOSは、FreeBSDで viで作成したファイルをフロッピーディスクに 保存したいのですが、どのようにすればよろしいのですか? あと、その保存したフロッピーをWin98でも見れるように するには? よろしくお願いします。 |
|
> fopenする時ってフルパス指定するじゃないですか(違います?) フルパス指定でもいいし、カレントディレクトリからの 相対パスでもいいです。 > だから何処で動いているかわかりませんよね getcwd(3) でカレントディレクトリを取得して、 どこかに出力させてみればわかるでしょう。 > その保存したフロッピーをWin98でも見れるようにするには? - Windows98 でフォーマットして、mount_msdos して cp して umount - Windows98 でフォーマットして、mcopy file a: どちらでもよいです。 http://www.jp.FreeBSD.ORG/QandA/HTML/640.html FreeBSD で DOS フォーマットしたいなら http://www.jp.FreeBSD.org/QandA/HTML/350.html |
|
こんにちは。初めて書き込みするtakuroという者です。 このbbsでは、ユーザー同士の疑問や知識の交換がされていると知って書き込みしたんですが、ページの趣旨にあっていない質問だったら、無視して下さい。 winzipの事なんですが、解凍する時に、パスワードを入れるように設定して圧縮したんです。そしたら、長い間そのファイルをほうっておいたせいで、パスワードを忘れてしまい、解凍できなくなってしまったんです。 中身は重要な物が入っているんですが、必要なときに取り出せなくなってしまって、大変なんです。どなたか、解決の方法を教えて下さる方、いらっしゃいませんか?メールでも何でもいいので、どうか連絡をよろしくお願いします。 |
|
>takuro PikaZipとか?? http://nagoya.cool.ne.jp/pusa/ パスワードはどのくらいの長さ? ローマ字の小文字なら、、速いかな、、(謎 |
|
航空機事故で検索していたらこの掲示板にたどり着きました。 「日航機墜落事故 東京大阪123便 新聞見出しに見る15年間の記録」 のホームページです。 |
|
ネットワークに関して教えてください。 ホームルータ経由でISDN回線に接続し、モデムとつながれている端末にアクセスすることはできるのですが、モデムでつながれている端末はホームルータないの端末にアクセスすることができません。 ルーティングテーブルの設定が必要なのかと思いますが、どのように設定したらよいかわかりません。 ホームルータのグローバルアドレスとかみることとかできるのでしょうか。 これについて詳しい人がいたら、教えてください。よろしくお願いします。 |
|
つまらない質問でごめんなさい。 perl 5.004_04について教えてください。 スクリプトの最初にifを書くと、その後のスクリプトが どうであろうがCompilation errorになって実行できないのですが、 これはバグなんでしょうか? もしバグだとしたら、広く知られたものなんでしょうか? 以下余分に長いサンプル(split.pl)です。 #!/usr/local/bin/perl if(#$ARGV != 1) { die "Usage: split.pl keyword file\n"; } $keyword = $ARGV[0]; $infile = $ARGV[1]; open(IN, $infile); $prefix = "$infile-split-"; $suffix = "000"; $file = ">$prefix$suffix"; open(OUT, $file); while($line = <IN>) { print OUT $line; if($line =~ /^\s*$keyword\s*$/) { $suffix = sprintf "%03d", $suffix+1; $file = ">$prefix$suffix"; open(OUT, $file); } } |
|
@has > if(#$ARGV != 1) { #$ じゃなくて $# っすね。 > これはバグなんでしょうか? ちなみに (言うまでもないかもしれませんが) ちょっと前までの stable は 5.005_03 です。今の perl5.6 はかなり buggy だとか # と perl の偉い人が fj で言ってた。 あと、7/22 か 8/12 か 8/20 あたりにそちらに寄りますので、 もし居るならよろしく。 @流れ星 > ネットワークに関して教えてください。 NAT もルーティングも、ソフトウェア (FreeBSD) でしか やったことがないので、アドバイスできません。 NAT かましてるかどうか、ルータの型番、モデムの端末が LAN 内にあるのか外にあるのか、などを書いて fj.net.lan など に投稿するといいでしょう。 # でも、最近のってほとんど http://ルータのIPアドレス/ で # 設定できるんでないの? |
|
はじめまして perl(CGI)でAccessLogを取るScriptを 作っています。 HTTP以外の情報って取得できるのですか? 例えば、FTPなどのAccessLogとか... |
|
> 例えば、FTPなどのAccessLogとか... 無理です。FTP と HTTP は別物だから。 |
|
@68user >#$ じゃなくて $# っすね。 ふぇえ、おはずかしい。 真っ先に人のせいにしてしまうなんて…。 >今の perl5.6 はかなり buggy だとか 冷静に人のシステムを批判できる人って やっぱ偉いですよね〜。 |
|
68userさん皆さんはじめまして 早速なんですが、CGIを自分のNTマシンで開発してUNIXの本番環境でTESTしているのですが、 先頭行の#!〜の記述がNTとUNIXで違うので毎回直しているのですが 面倒なのでNT側のアパッチで自己完結型を使わないでCGIを動かしたいのですが なにか方法をご存知無いでしょうか? |
|
> 先頭行の#! Windows 使ってないのでわからないです。 多分 Windows では #!/bin/sh というような書き方ができない、って ことなんだろうと思いますが、もし単にパスが違うだけならやりようは あります。もしそうなら再度質問して下さい。 |
|
> もし単にパスが違うだけならやりようはあります。 > もしそうなら再度質問して下さい。 すみません、おっしゃる通です Windowsが #!C:/Perl/bin/perl で UNIXが #!/usr/local/bin/perl です どうにかなるでしょうか? |
|
よしださん Win機の 1.Apacheをインストールしたのと同じドライブに 2.\usr\local\bin\を掘って 3.Perl一式(Perl.exeとDLL類)を入れれば #!/usr/local/bin/perlで参照できると思います. お試しください. |
|
UNIX,CGI,ネットワークについての事ではないので、この掲示板の趣旨に合わない かも知れませんが、下記の事についてどなたか知っていましたらお教え下さい。 実はMOについてですが、これまで認識していたメディアが急に認識されな くなり、他のメディアで試しても同じ現象が出るようになりました。 クリーニングしても直りません。たまに認識する事もあり、なにがおかしい のか見当もつかず、途方に暮れています。 何か方法があるでしょうか。 |
|
YOSHIさん 次のようなページをご紹介します. MO掲示板: http://www.zob.ne.jp/%7Ekanai/mo/bbs/bbs.pl MOにこだわるページ: http://www.zob.ne.jp/~kanai/mo/ MOS331E 遍歴: http://www1.sphere.ne.jp/squilla/comp/mos331al.html 悪名高いオリンパスドライブの清掃方法です. # 私もジャンクの331(Logitec LMO-230H)を手に入れ, # 清掃して問題なく使っています. 参考まで. |
|
現在、さくらインターネット<http://www.sakura.ad.jp>で専用サーバを借りています。OSはFreeBSD 3.4です。大した知識もないのに大丈夫かな、と思っていたところ、ついに困った事態になりました。 chsh -s でログインシェルを変更したのですが、誤った名前を指定してしまったのです。それからというもの、スーパーユーザになろうとしても su: +++: No such file or directory と出てしまい、rootによる作業が一切できない状況です。 root権限で chsh -s /bin/sh でも実行できれば済むのですが、どうすればいいものやら。セキュリティホールを利用できないか、などと本気で考えましたが、そんな技量もありませんでした。 きちんと業者に頼むべきなのでしょうが、Telnetでできる作業は1万円、Telnetでできない作業は2万円と、勉強料としても学生にはかなり惜しくなる出費なのです。 何かいい方法があるなら教えていただけないでしょうか。 |
|
> su: +++: No such file or directory むぅ…多分無理だと思います。一旦 shutdown して シングルユーザモードで再起動するしかないので 2万円コースだと思います。 あきらめきれなければ、 http://www.energy.ee.ehime-u.ac.jp/~flathill/FreeBSD/chat/chat.html で聞いてみて下さい。そこの方々が無理だと言ったら絶対無理です。 あと、回答してもらっても返答する気がないなら、最初から 書き込まないで下さい>返答する気のない人々 |
|
またまたperlについてお聞きします。 連想配列をうまく使って、キーに対して文字列リストを 保持したいと思うのですが、何かよい方法はありますでしょうか。 現在は、文字列を共通のリスト配列に順に格納して、 キーに対する文字列リストの中の最初の文字列へのインデックスを 連想配列に格納する、という方法をとっています。 うまく伝わらないかもしれませんので、少々サンプルを書きます。 $store = 0; foreach $file (@files) { open(IN, $file); @contents = <IN>; $index{$file} = $store; $numlines{$file} = $#contents + 1; @lines[$store..$store+$#contents] = @contents; $store += $#contents + 1; } |
|
要は、ファイル名と行番号を与えると、その行が得られるデータ 構造は?、ということでいいですか? なら、 while (<IN>){ $data{$file}{$line}=$_; $line++; } とやってもいいし (perl4 的にするなら $data{"$file$line"})、 あるいは @contents=<IN>; $index{$file}=\@contents; と、配列へのリファレンスをハッシュに入れてもいいと思います。 参照するときは $file = 'abc.txt'; $line = 123; print ${$index{$file}}[$line]; とか (abc.txt の 123行目を表示。先頭が0行目)。 |
|
Netboyさんありがとうございました > #!/usr/local/bin/perlで参照できると思います. > お試しください. 試してみたんですが、 #!E:/usr/local/bin/perl だと動くんですが、 #!/usr/local/bin/perl だと駄目なので どうもapachの自己完結型がドライブ名の指定が必要みたいでした、 結果は残念でしたけど、どうもありがとうございました。 >あと、回答してもらっても返答する気がないなら、最初から > 書き込まないで下さい>返答する気のない人々 すみません、原因が解ったら書き込もうと思っていたので 返答が遅くなってしまいました 以後気をつけます。 |
|
よしださん 次のようなショートカットからApacheを実行してみてください. '作業フォルダ'のパスにあるドライブ名が,Perlの参照先ドライブになります. 動作を確認後にオプションを追加して,サービスとして実行させてください. リンク先: e:\usr\local\sbin\apache\Apache.exe -f e:\usr\local\etc\apache\conf\httpd.conf -s 作業フォルダ: e:\usr\local\sbin\apache # 2つとも,Apache.exeがe:\usr\local\sbin\apacheにあるとき - - - - - - - - - - - - - - - 参考になるURLをご紹介します: NTでIISやApacheのPerlの参照の設定: http://www.hi-ho.ne.jp/lina/httpd.html#apache-pl Apacheのレジストリ操作,NTサービスとしての実行など: http://www.apache.org/docs/windows.html |
|
Netboyさん ありがとうございます ApachとPERLのドライブを合わせる必要があったんですね、 おかげさまで思いどおりの動作をしてくれるようになりました 本当に色々とありがとうございました。 |
|
@68user どうもありがとうございました。 リファレンスというのを勉強しときます。 それと、こちらに来られるかもということですが、 予定を確認しておきます。 |
|
@よしださん > すみません、原因が解ったら書き込もうと思っていたので > 返答が遅くなってしまいました 別に1週間くらいはいいと思いますよ。「わかりました。試してみます」 と書くより、試してから結果を書こう、というタイプの人もいるでしょうから。 それ以前の人に向けていったことなので、気になさらないで下さい。 > もし単にパスが違うだけならやりようは > あります。もしそうなら再度質問して下さい。 cygwin 入れて #!/bin/sh で振り分け、とか言わなくてよかった (笑) @has > リファレンスというのを勉強しときます。 赤ラクダ本には載ってません (念のため)。でもって、青ラクダ本の 説明はわかりにくいです。ちなみに $hoge{fuga}{ura} ってのも 実はリファレンスです。 > 予定を確認しておきます。 いや、いつ行くかも未定なので、いつも通りに過ごしてて下さい。 雨降ったら行けないし :-) |
|
>あと、回答してもらっても返答する気がないなら、最初から >書き込まないで下さい>返答する気のない人々 ・・・すみません。 以前、telnetで30個ほど繋げたら、フリーズしてしまったので、 perlで繋げる方法を考えつつ、先に進んでいないのと、まだ、 bugの原因が不明(というか、お手上げに近い)ので、返事できない 状態でした。 返答が遅れてすみません。 |
|
へにかさんに向けて言ったのでもありません :-) |
|
ご無沙汰しております、以前にお世話になったyujiです。(^^) 現在、FreeBSD 2.2.8-RELEASEのカーネルなどをPentium3に最適化させたいと 考えているのですが、この場合、どういった部分を変更すべき なのでしょうか? 自分で調べてみたところ、 http://www.goof.com/pcg/index.html に、Pentium用パッチ(pgcc)があるのですが、 gccが現在2.7.2.1でして。(^^; portsコレクションを探してみたのですが、 pgcc2.95.1のものがあるみたいですが、 プルダウンメニューが3.0以上のみになっています。 PGCCは、EGCSのパッチということで、 2.7.2.1のような古いバージョンには、 使えないのかもしれませんが。(^^; FreeBSD 2.2.8-RELEASEを用いて、 マシンの能力を最大限に引き出す方法はなにかありませんでしょうか? どうぞよろしくお願いします。 |
|
お返事ありがとうございました。 >> su: +++: No such file or directory >むぅ…多分無理だと思います。一旦 shutdown して >シングルユーザモードで再起動するしかないので >2万円コースだと思います。 管理会社に連絡したところ、今回のように原因がはっきりしていて復旧が容易な場合は1万円だそうです。まあ仕方がないと思います。これからはもっと慎重に作業をしなければ……。 |
|
携帯電話に対してこちらの電話番号を表示しないためにはどうすればいいですか? |
|
perlでのサブルーチンの質問です。 お願いします。 #!/usr/local/bin/perl $Z = 1; &abc(); print "$Z$Y"; sub abc{ &A(); &B(); &C(); } sub A{ if($Z == 1){ $Z = $Z + 1; &C(); } } sub B{ $Z = $Z + 5 ; } sub C{ $Y = "!"; } こんなカンジなのですが結果を"2!"になるようにしたいのですが どうすればよろしいでしょうか? このまま実行すると"7!"になってしまいます。 教えてください。 |
|
@yujiさん > 現在、FreeBSD 2.2.8-RELEASEのカーネルなどをPentium3に最適化させたいと > 考えているのですが すみませんが、http://www.jp.FreeBSD.org/search.html#doc で キーワード pgcc で検索する、以上の情報はわかりません。 cvsweb で ports/lang/pgcc を見ると、2.2.8 時代は (pgcc 側の) gcc->egcs の切り替え時期なようで、その時代の gcc 対応 pgcc は ないと思います。最新の egcs を入れて pgcc パッチを当てるのは ダメかなぁ。いろんなところではまりそうですけど。 # あ、最近のは a.out 形式吐けないんだっけ。 @STさん > これからはもっと慎重に作業をしなければ……。 telnet 2つ開いて、片方はつなぎっぱなしにして いつでも /etc/master.passwd を修正できるようにしておくとよかったですね。 @mmさん # biglobe な mm さんとは別の mm さんですか? > 結果を"2!"になるようにしたいのですがどうすればよろしいでしょうか? sub B{ $Z = $Z + 5 ; } の部分で $Z==7 になってほしい、でも &B から戻ると $Z==2 としたい、 ということなら、呼び出し側で &B($Z) として引数を渡して sub B{ my ($abc)=@_; $abc = $abc + 5 ; } とか ($abc は $Z としても同じ)、単順に変数名を変えて sub B{ $X = $Z + 5 ; } とか、って感じでいいですか。 望んでる答えじゃないかもしれないけど、なぜ 2! にしたいのか、 &A と &B ではどういう違いがあるのかを説明してもらわないと、 これ以上はなんとも言えません。 |
|
私にも意味が分からないので、別人かと思われます。 ひょっとして、sub A {...} 中で &C(); を呼び出したら、 sub abc{...} 中の &C(); に帰って来る、と誤解されてるとか…? # goto &NAME に関係あるのかとも思ったけど… |
|
># biglobe な mm さんとは別の mm さんですか? mm@biglobeさん、失礼しました。 説明不足ですみませんでした。 sub A の処理で $Z == 1 の場合sub C へ行きたいのです。 その後、sub B へは行かずに処理を終了させたいのですが、、、 |
|
もしかして #!/usr/local/bin/perl $Z=1;&abc;print "$Z$Y"; sub abc{ if (!&A){ &B; } &C; } sub A{ if ($Z==1){ $Z++;return 1; } 0; } sub B{ $Z+=5; } sub C{ $Y="!"; } な感じですか...? 文章のままだと sub abc{ if (!&A){ &B;&C; }} sub A{ if ($Z==1){ $Z++;&C;return 1; } 0; } な感じです.関数の戻り値を使わないなら sub abc{ &A; if ($Z!=2){ &B; } &C; } sub A{ if ($Z==1){ $Z++; }} 延々と続きそうですね.こんな話題じゃ無さそうな気も... |
|
あれ?mmさんの反応がないなぁ… Netboyさんの回答で、出尽くしてると思うんだけど。 |
|
そーいや、名前に機種依存文字を入れると、何かが起こったっけ。 多分まだ なおしてなかったなぁ。 # 現在機種依存文字が見えない環境なので、勘で入力。 |
|
そうか、名前の欄が <INPUT ... VALUE="<FONT COLOR="red">(6)(8)</FONT>user"> となってしまうんだった。今度直そう。 ところで、LASER5 Linux 6.0 でも /etc/services は pop-3 でした。 |
|
@68user 名前に機種依存文字入れたときの不具合、 直ったら修正部分をおしえてください。 #うちのにも同じ不具合があるってことですよね? |
|
了解。でも、ちと忙しい日が続きそうなので9月頃になるかも…。 |
|
こんばんわ。ちょっとお聞きしたいことがありまして。。。 うちの掲示板はmmさん(ここにいる人かどうかはわかりませんが)が作った掲示板を使っているんですが、 crypt関数が使えなくて削除パスとかが出てこないんです。それで、サーバ管理者に連絡しましたら、 >弊社サーバーでも、crypt関数はもちろんご利用頂けます。 >ただし、サーバーの暗号処理にMD5方式を搭載しておりますので >MD5以外のサルト係数を使用したスクリプトでは、そのままでは動作致しません。 >(cryptはサーバーのライブラリに依存している為) >cryptをMD5方式のサーバーでお使いになるには、salt係数をMD5の >$1$ 固定で指定する必要がありますので、スクリプト内の >該当部分を書き換えてご利用ください。 と教えていただきました。でもどこをどう直せばいいのかさっぱりなんです。 忙しいと言っていますけどもし時間が空きましたら、教えていただけますでしょうか。お願いします。 ちなみにhttp://whitenight.org/etc/bbs/Readme/crypt.cgiにcryptを実行するCGIがあります。 ソースはhttp://whitenight.org/etc/bbs/Readme/crypt.txtにありますんで、どうかみてやってください。 長文すいませんでした。 |
|
あっ、crypt.cgi はMD5には対応してないですね(^^; MD5を使える環境にないので、詳しくは、68userさんのご助言を頂きたいのですが、 とりあえず、ソースの以下の行を削除して、 if ( $salt !~ m%^[\./0-9A-Z]{2}$%i ) { print "<H2>エラー</H2>\n"; print "SALTが不正です\n"; exit(0); } SALTの入力欄の2文字の前に「$1$」を挿入して実行してみて頂けます? |
|
まず OS 名は何ですか? >>(cryptはサーバーのライブラリに依存している為) 僕の知る限りでは (少なくとも FreeBSD では) 誤りです。 なんにも考えずに salt を渡せば、ライブラリ (libcrypt) の 方で DES でも MD5 でも勝手に処理してくれます。 # ただ、FreeBSD 以外の環境 (例えば Linux で MD5 な環境) だと、 # ライブラリがそこまで対応しているかどうかはよくわからんなぁ。 # 明日試してみよう。 しかし、http://whitenight.org/etc/bbs/Readme/crypt.cgi の 結果が $PassWord = ''; と空になるのは謎ですね。 > print crypt( $pwd, $salt ); これを print crypt( $pwd, "\$1\$$salt\$" ); とするとどうですか。あるいは print crypt('secret','ab'); だとどうなりますか。 |
|
おっと少々かぶりぎみ。 crypt.cgi は FreeBSD (MD5) 上ではうまく動きました。FreeBSD の libcrypt では crypt('secret','xx') と crypt('secret','$1$xx$hogehoge') は同じものとして扱われるからです。 ということは、智慧さんの環境ではそうではないということで しょうから、$1$..$ を追加すればいけるんじゃないかと思います。 |
|
あっ、なるほど。(最後の $ も忘れてた) 68user さんの指示に従って対処して下さい>智慧さん |
|
>mm@biglobeさん >68userさん あ、ごめんなさい。 こんなに早くお返事してもらえるとは思ってもいませんで・・・。 じゃ今から早速やってみます。 レスありがとうございました。 |
|
あ、順々にやらせてもらったんですが、もう最初のmm@biglobeさんの言ったとおりに、 一部分削除して、 >$1$ これを前に入れて5文字で実行したらちゃんと生成されました! >まず OS 名は何ですか? あとこれは結局わからないです・・・(汗) お手間を取らせまして・・・。ほんとどうもありがとうございました。 |
|
ラウンジでは、いつもお世話になっていました。ありがとうございました。 ラウンジで質問ができないので、こちらへ質問させてもらいます。 UNIXにおいてflockを使用するデメリットを教えて下さい。 また、flock使用のCGIを見つけるコマンドなど存在しますか? 自サイトでCGIをフリー配布していますが、使っている人から、プロバイダでflockは、やめてくださいと通知されたそうです。 よろしくおねがいいたします。 |
|
ついでに、もうひとつ。 私の vi では、テキストファイルに一行 1024バイト以上の行があるとき 途中で切れて、全部見れません。 このような場合、「編集できない」と「多少のデータ欠落」はOKですが、 とにかく、全体を見れて、検索できるような、コマンドってないですか? |
|
LASER5 Linux (標準で MD5) では、 crypt('secret','$1$xx$') -> $1$xx$r/r0qx2Q7FpBQWOTZk2Nc. (MD5) crypt('secret",'xx') -> xxWAum7tHdIUw (DES) となりました。こういう環境があるとは知らなかった。 > UNIXにおいてflockを使用するデメリットを教えて下さい。 NFS 環境下で flock が動作しないそうですが、僕のまわりでは NFS 環境でも正常にロックできていたように見えました。 それ以外はわかりません。プロバイダが「使うな」と言うほどの デメリットはないように思います。 > また、flock使用のCGIを見つけるコマンドなど存在しますか? これは質問の意図がわかりません。 > 私の vi では、テキストファイルに一行 1024バイト以上の行があるとき > 途中で切れて、全部見れません。 nvi という vi ファミリのエディタでは、その手の制限はなかった ように思います。ちなみに FreeBSD の vi は nvi だったりします。 > とにかく、全体を見れて、検索できるような、コマンドってないですか? nvi 以外だと less かなぁ。less で 1024バイト/行なファイルを 見られるかどうかは確かめてませんが。まぁ、fold してその出力を 眺めるっつーのもアリかもしれません。 |
|
大学では、UNIXを使っているので、いつもこのHPにはお世話になっております。 それで、質問があるのですが。 UNIXでは、Windowsなどから送られてくる添付ファイルを 受けとる事はできますか? また、添付ファイルを送る事はできますか? よろしければ、そのやりかたも教えて頂けると嬉しいです。 ちなみに、使用機種は、SunOS 5.6です。 |
|
>68userさんへ foldコマンドでいけました! ありがとうございました。 >>また、flock使用のCGIを見つけるコマンドなど存在しますか? >これは質問の意図がわかりません。 ただ、プロバイダがどうやってflock使用のプロセスを見つけたのかなぁっておもったもので...。 では、これで、失礼いたします...。 |
|
> プロバイダがどうやってflock使用のプロセスを > 見つけたのかなぁっておもったもので...。 grep? > UNIXでは、Windowsなどから送られてくる添付ファイルを > 受けとる事はできますか? また、添付ファイルを送る事はできますか? メーラー次第です。Mew や Wanderlust あたりなら できますが、emacs の rmail とか mail コマンドでは 難しい…というか多分無理でしょう。 # Mew ... http://www.mew.org/index-j.html # Wanderlust ... http://www.gohome.org/wl/index.ja.html |
|
NFS上のファイルをflockすると,複数マシンから 同時にロックできてしまう(場合がある)と思いますが... Perlで普通にflockを使っていると,たいがい まともにロックできないうえ処理速度が遅くなります. open (LOCK, "> $file")||&error flock (LOCK,2)||&error とか書いた時点で終わってます.2箇所直せば使えますけど 普通そんなこと気付きません. あと,デッドロックの発生を検知するのが難しいです. |
|
68userさん> 御回答ありがとうございました。 僕のメーラーはemacsのrmailなので、受けとれないみたいですね。 文章の添付ファイルならば、その文章は一応表示されますが。 それで、御紹介頂いた Mew と Wanderlust のHPに行ってみたのですが、 その2つの違いというものがよく解りません。 よろしければ教えて頂けますか。 用途は、添付ファイルを受けとるだけなので、それに適しているのは どちらなのかというのも教えて頂けると嬉しいです。 あと、もう一つ質問なのですが、 あるファイルのシンボリックリンクを作った時に、 そのシンボリックリンクの元となるファイルから、 そのファイルのシンボリックリンクがどこに作られているかを 見つけ出す事はできますか? なんか解りにくい文章ですみません。 |
|
> それで、御紹介頂いた Mew と Wanderlust のHPに行ってみたのですが、 > その2つの違いというものがよく解りません。 両方ともメーラーなわけで、できることは自然と似てきます。 一応僕の思う特徴をあげると Wanderlust のいいところ ・見栄えがきれい (スクリーンショット参照) ・IMAP4 対応 ・ニュースリーダの機能もある Mew のいいところ ・im と mew を入れるだけなので、インストールが簡単 (Wanderlust だと semi やら apel やら入れて、さらに それぞれのバージョンにも気をつけなくてはいけない) てな感じ。インストールに自信がないなら Mew の方がいいかも しれません。 ちなみに「添付ファイルを受け取る」という一点に関して言うと、 Mew の方が使いやすいように感じます。 > そのファイルのシンボリックリンクがどこに作られているかを > 見つけ出す事はできますか? 無理です。全ファイルを調べるしかないです。これはハード リンクも同じです。 > NFS上のファイルをflockすると,複数マシンから > 同時にロックできてしまう(場合がある)と思いますが... んー、なるほど。複数マシンからの flock というのは全く 思いつきませんでした。一つの NFS クライアントマシンから flock して、「ああ、NFS でもうまくロックできるのね」と 思ってました。 試してみたいけど、NFS 環境がないなぁ・・・ |
|
はじめまして。 勉強になるのでちょくちょく見させてもらっています。 crypt化した文字を復元することはできるのですか? |
|
申し訳ないです。先ほどの追加です。 crypt化するのにperlでやっています。 #!/usr/bin/perl $A ="AAAAAA"; #←crypt化する文字 $B ="BB"; #←KeyWord print crypt ($A,$B); |
|
> crypt化した文字を復元することはできるのですか? できないです。復元ができないようなアルゴリズムを採用している からです。なので、辞書を使ったり、総当りで調べるしかありません。 ちなみに keyword じゃなくて salt と言います。 |
|
unixはぜんぜん知らないのですが、 flockに関しては以前から疑問があったので、 ちょっとお伺いします。 >とか書いた時点で終わってます.2箇所直せば使えますけど >普通そんなこと気付きません. open の時点で $file が破壊されるってことですね。 これは、確かにしっかりしたドキュメントが必要だと思います。 >あと,デッドロックの発生を検知するのが難しいです. flock でデッドロックが発生したら、意味ないのでは…? flock がセマフォを使ってるのか、別の何かを使ってるかは知りませんが、 デッドロックを回避できるからこそ flock の価値があるんではないでしょうか? それとも、セマフォとかの待ち行列の状態が検知できないという意味でしょうか? >Perlで普通にflockを使っていると,たいがい >まともにロックできないうえ処理速度が遅くなります. こういう文章を読んで、flockはダメだと勝手に判断して、 もっと酷い、訳の分からない排他制御手段を考える人が出て来るような気が… ただ、flockを使えばOSが対象ファイルごとに待ち行列を 用意することになるんでしょうから、チャット等が沢山使われるサーバーでは、 リソースを大量に消費して、レスポンスも悪くなるような気はします。 先のプロバイダの制限は、そういうことを嫌ったのではないでしょうか? |
|
>open の時点で $file が破壊されるってことですね。 はい,あと引数'2'だと,待っている間何も出来なくなるので マズイ,ということで2箇所...としました. シグナル起こしはあてにならないということで. >デッドロックを回避できるからこそ flock の価値があるんではないでしょうか? デッドロックは起きます. flockには価値なんかありません.BSDでの互換性だけです. 言葉遊びでなく,確率というか危険度と考えてください. flockして成功したプロセスが無限ループに入ったとき, 解除にはたいがいプロセス殺しが必要です.うまく殺せるか どうかは不確実なので,この時点でデッドロックといえます. symlinkやmkdirでの排他処理だとまだ通常のファイル操作で済みます. >それとも、セマフォとかの待ち行列の状態が検知できないという意味でしょうか? はい,検知と制御ができません.同じ意味でfcntlやセマフォも 使うのは難しいです.OSリソースを隠れて消費し,工夫しないと システム全体の速度が低下します. OSに付属する排他処理機構を,よく検証せずに使うのはまずいです. 私の経験だと, - いつどのプロセスが何をロックして - それを参照する何個のプロセスがどれくらいの時間待機しているか 外から判るようにしなければだめな感じです. >訳の分からない排他制御手段を考える人が出て来るような気が 他人の手法を参考のうえ,排他処理の仕組みを自分で考えるのは 結構なことだと思います. |
|
>解除にはたいがいプロセス殺しが必要です.うまく殺せるか >どうかは不確実なので,この時点でデッドロックといえます. なるほど、もし解除できないということが起こるなら、 確かにデッドロックですね。 unixを触ったことがないため、そのヘンは、何となくシステムを 信頼していました(^^; >flockには価値なんかありません.BSDでの互換性だけです. う〜ん、それが現状だとすると、問題ありそう… >言葉遊びでなく,確率というか危険度と考えてください. 確かに、私の先の書き込みは、スパゲッティを食べる哲学者のレベルでの 話かも知れません(^^; >OSに付属する排他処理機構を,よく検証せずに使うのはまずいです. 検証する能力がない人間が下手なことをするよりは、 システムが用意した機能をそのまま利用した方がマシ、 というスタンスでいたのですが、少なくともflockに関しては、 考え直さないといけないみたいですね。 >symlinkやmkdirでの排他処理だとまだ通常のファイル操作で済みます. 今後は、作成時からの経過時間検査による解除機能付きsymlink/mkdirあたりで 検討してみたいと思います。 >他人の手法を参考のうえ,排他処理の仕組みを自分で考えるのは >結構なことだと思います. これは、あくまでもっと低次元の話です。 「他人の手法」を正確に理解し、問題点を的確に把握した上で、 「自分で考える」のであれば、仰る通りすばらしいことだと思います。 |
|
Netboy さんは、ノンブロッキングの flock なら OK、 という立場ですよね? で、いくつか疑問があります。 > flockには価値なんかありません. fcntl には価値がある、という話でしょうか。それとも 両方価値がない、という話ですか? > flockして成功したプロセスが無限ループに入ったとき, という状況って、起こり得ますか? (現象事態は root が SIGSTOP 送れば容易に発生しますが) Netboy さんは、どういうプログラムを想定しておられます? ちなみに僕が考えたのは、カウンタとか web BBS とかです。 > Perl で普通にflockを使っていると,たいがいまともに > ロックできないうえ処理速度が遅くなります. 僕の環境では「まともにロックできない」というのは 経験したことはありません (1000回カウントアップしたつもりが、 カウンタデータファイルを見ると998回しか実行されていない というのはあった。原因は不明)。 それと flock は、symlink・mkdir よりは速かったです。 しつこいですが、僕の環境では、です。 # あと、排他処理はいつも symlink でやるので、flock を # 使いこんだことはないです。 > 訳の分からない排他制御手段を考える人 http://www2q.biglobe.ne.jp/~terra/cgi/lockfile.htm (笑) |
|
>http://www2q.biglobe.ne.jp/~terra/cgi/lockfile.htm (笑) あはは、どもです。どこだったか忘れてました。 |
|
>Netboy さんは、ノンブロッキングの flock なら OK、 >という立場ですよね? はい. 動作環境を知っていて,使えると判断した用途にはOKです. 例えば常駐動作のサーバー用のスクリプトなんかにはいいですよね. >それとも 両方価値がない、という話ですか? いいえ,fcntlは意味があると思います. POSIX準拠(?)+NFS対応だそうですし. あれはOSの内部操作をそのまま出してくれているんですよね? でもWin環境で互換性が無いので,あまり使いません. >> flockして成功したプロセスが無限ループに入ったとき, >という状況って、起こり得ますか? (現象事態は >root が SIGSTOP 送れば容易に発生しますが) 次のようなものです. - スクリプトの単なるバグ - 作成中のスクリプトのテスト時 - 予期しないデータを与えられたスクリプト - Perlインタプリタがコケたとき.OSリソース逼迫下. - インタプリタのバグ. - Apacheの設定ミス,管理者の不注意な設定変更. - クラッキングを受けたサーバー >Netboy さんは、どういうプログラムを想定しておられます? >ちなみに僕が考えたのは、カウンタとか web BBS とかです。 私も同じです. スクリプトのバグでは,機種/環境依存文字の訂正で ある予期しない文字列のとき置換操作が止まらなくなる...など. >僕の環境では「まともにロックできない」というのは >経験したことはありません それは68userさんだから(笑). 普通の人は下で書いたスクリプトみたいな感じです. NFSを使っているプロバイダの場合,もっと状況は複雑になります. >それと flock は、symlink・mkdir よりは速かったです。 う〜ん,負荷が掛かった時なんです,問題は. デッドロックの自動検出と,flockの解除のための pidの保存操作や予防措置も含めてください. MMX233+FreeBSDで1000個の掲示板が同時動作で平均待ちプロセスが2〜4個 の状況('97のテレホ時)でflockを使うかどうか,です. >訳の分からない排他制御手段を考える人 いや,いいんじゃないですか.誰もが通る出発点だと思います. 68userさんだって,miniBBSのアレとか,ほら,悪い思い出(笑). 混雑時の実用性や設置性を検証すると,面白いことになります. |
|
はじめに、flockについて質問した者です。 CGIをダウンロードした人にプロバイダ来たメールで、 やはり、「NFSがらみで、flockが利用不可能な状態」とのことでした。 CGIの方は、WIN95も考慮して、ロックファイルの有無で対処いたしました。 話は、変りますが、DNSサーバーについて知識として教えて下さい。 rlogin,ftp,telnetなどで、ホスト名を指定した時に、どのようにして、 DNSサーバーとやり取りをしているのですか? DNSサーバーはhttpみたいなデーモンが動いているですか?(私の買った本には、この辺書いていなかった) ちょっと、気になったので、よろしくお願い致します。 |
|
flock の件は後程。 > rlogin,ftp,telnetなどで、ホスト名を指定した時に、どのようにして、 > DNSサーバーとやり取りをしているのですか? rlogin/ftp/telnet などは、ユーザからホスト名を受け取ると gethostbyname(3) などを使って、ホスト名から IP アドレスを 得ようとします。 gethostbyname の内部では、ソケットを使って DNS サーバに アクセスします。で、DNS サーバは UDP の port 42 を listen していて (UDP だから listen という表現は変?)、 クライアントからの問い合わせに応じて IP アドレスを 教えたり、他の DNS サーバに問い合わせたり、見付から ないよと答えたりします。 こういう問い合わせを行う DNS クライアント (この例では gethostbyname) のことを resolver と言います。resolver は 概念的なもので、問い合わせを一手に引き受ける resolver サーバのようなものがあるわけではありません。ただのライブラリです。 なので、自分で外部の 42/udp にアクセスする DNS クライアントを 書く事もできます。 > DNSサーバーはhttpみたいなデーモンが動いているですか? UNIX 界で DNS サーバとして有名なのは bind です。 プログラム名は named。 # apache と httpd の関係と似ています。 |
|
> こういう問い合わせを行う DNS クライアント (この例では > gethostbyname) のことを resolver と言います。 いや、違うか。 res_query, res_search, res_mkquery, res_send, res_init, dn_comp などの DNS サーバへ問い合わせを行うライブラリ 関数群のことを resolver といいます。gethostbyname などは これらの関数を孫請けとして呼んでいます、かな。 # See resolver(3). |
|
回答ありがとうございます。 では、DNSクライアントとnamedデーモンが、 UDPプロトコルでportの42番でやり取りすると理解してよろしいですね。 すっきりしました。 ありがとうございました。 |
|
はじめまして、gongoと申します。 いきなりで申し訳ありませんが質問があります。 私はXアプリケーションの勉強を始めたばかりなのですが XライブラリとXツールキットを用いたプログラムを書こうとして 行き詰まってしまいました。 と言いますのは、例えばXツールキットを用いて表示させた窓に Xライブラリを用いて直線を引いたりする方法がわかりません。 XDrawLine(XtDisplay(w),XtWindow(w),gc,x1,y1,x2,y2); といった感じでプログラムの中に書き込みますとコンパイルは できるのですが、実行させるときにXDrawLineのところで Segmentation faultで止まってしまいます。 本もいろいろと読みましたがどうにもうまくいきません。 作成途中のプログラムは以下のところにあります。 http://www.din.or.jp/~gongo/xtshirt.c(本体) http://www.din.or.jp/~gongo/color.dat(色の数値) どうか宜しくお願い致します。 |
|
> では、DNSクライアントとnamedデーモンが、 > UDPプロトコルでportの42番でやり取りすると理解してよろしいですね。 その通りです。 > 例えばXツールキットを用いて表示させた窓に > Xライブラリを用いて直線を引いたりする方法がわかりません。 非常に興味のある分野なので答えたいのはやまやまなのですが、 Xt を触ったことがないのでわかりません。でも、DrawLineOnWidget 内で drawgc を使ってますが、DrawLineOnWidget を呼び出す前に drawgc に GC をセットし忘れているように見えます。 あと、戻り値を見ると XtWindow(w) で NULL が返ってるのが 問題…なのかなぁ。解決法がわかったら教えて下さい。 |
|
> 非常に興味のある分野なので答えたいのはやまやまなのですが、 素早いご返答ありがとうございます。 > drawgc を使ってますが、DrawLineOnWidget を呼び出す前に > drawgc に GC をセットし忘れているように見えます。 本によると、ウィジェットをリアライズした後にGCを 設定するようなことがかいてありましたもので XtRealizeWidget(toplevel); よりも後にdrawgcをセットすることにしたのです。 もう少し調べてみます。 > あと、戻り値を見ると XtWindow(w) で NULL が返ってるのが すみません、これはどういうことなのでしょうか。 NULLが返ってくるというのはどのように調べたらよろしいのでしょうか。 NULLが返ってるとなるとおそらくここが悪いのだと思います。 う〜ん、もう少し調べてみます。 |
|
> XtRealizeWidget(toplevel); > よりも後にdrawgcをセットすることにしたのです。 うーん、XDrawLine を呼んだ時点で X サーバとの通信が 行われると思うんで、やっぱりセットしておかないと いけないんじゃないかなぁ…。GC は typedef struct _XGC * GC; なので、GC の中身がゴミ (初期化してないので) だと まずいと思うのです。 > NULLが返ってくるというのはどのように調べたらよろしいのでしょうか。 printf("%d\n",XtWindow(w)) としました。他の部分で同じことを すると何か値が入っているのですが、XDrawLine の前で表示させると 0 となってしまうので、XtWindow がこけてるのかと思いました。 まぁ、知識がないのに推測を重ねるのもアレなので、 会社にある本を読んで調べてみます。 |
|
> 他の部分で同じことをすると何か値が入っているのですが、 > XDrawLine の前で表示させると 0 となってしまうので、 > XtWindow がこけてるのかと思いました。 例えばDrawLineOnWidget(label)の書いてあった手前に printf("XtDisplay(label) = %d\n",XtDisplay(label)); printf("XtWindow(label) = %d\n",XtWindow(label)); と書いたところ、XDrawLine の前で表示させるのと同様に 次のようになってしまいました。 XtDisplay(label) = 67584 XtWindow(label) = 0 やはり0というのはまずいのでしょうか。labelを使い回して いくつかの窓を表示させようとしているのがまずいのか・・・。 あとdrawgcのセットをDrawLineOnWidget(w)の中で下記のように 行ってみたところ、 drawgc=XCreateGC(XtDisplay(w),XtWindow(w),0,NULL); XSetForeground(XtDisplay(w),drawgc,pixel[1]); XSetBackground(XtDisplay(w),drawgc,pixel[0]); DrawLineOnWidget(label)は抜け出て、ok6までは到達したのですが X Error of failed request: BadDrawable (invalid Pixmap or Window parameter) Major opcode of failed request: 55 (X_CreateGC) Resource id in failed request: 0x0 Serial number of failed request: 35 Current serial number in output stream: 48 となってしまいました。 お手数お掛け致しまして申し訳ございません。 |
|
> labelを使い回していくつかの窓を表示させようとしているのがまずいのか・・・。 各窓がだぶらないようにlabel1,label2,・・・といったように してみましたが結果的にうまくいきませんでした。 |
|
根本的には何がまずいかと言うと、 1. GC をセットしていない (その結果 core dump) 2. Window がマッピングされる前に XtWindow を実行している (その結果 X Error) だと思います。1は先に述べた通り。2は XtWindow の前に XtRealizeWidget が必要なんでしょう。 で、そういえば一応 Xt の本を持ってたな〜と思い出したので読んでみると、 a. Form ウィジェットの上に Simple ウィジェットを作成 b. Simple ウィジェットに、Exposure イベントへの コールバック関数を設定 c. XtAppMainLoop でイベント待ち d.コールバック関数が呼ばれて、その中で XDrawLine という手順を踏んでました。 実際には何も試してませんが、上の通りにやってみては いかがでしょう。なお、a は必須かどうかわかりません。 Label ウィジェットに直接 XDrawLine できるのかもしれません。 flock の件はまたまた後程。うーん、調べる時間がない…。 |
|
> 実際には何も試してませんが、上の通りにやってみては > いかがでしょう。なお、a は必須かどうかわかりません。 ありがとうございます。いろいろ試してみます。 |
|
> a は必須かどうかわかりません。 必須ではありませんでした。以下のような感じで一応描画はできました。 正しいかどうかはわかりませんが。 void repaint(){ XDrawLine(XtDisplay(label),XtWindow(label),gc,0,0,100,100); } main(){ ... XtAddEventHandler(label,ExposureMask,FALSE,repaint,NULL); XtRealizeWidget(toplevel); ... } 現実的には、Pixmap に書いておいて、Expose が発生するたびに Pixmap から Window にコピーするのが効率的です。 # それ用の Widget が Xt にあったりするんだろうか。 うーん、やっぱり UNIX 使いとしては、基礎知識として、Xt は 抑えておかねばなぁ…。 |
|
はじめまして。初心者にもわかりやすいUNIXのHPでよく利用させて頂いていま す。早速ですが、質問があります。kinput2をバックグラウンドで起動した後、 netscapeを起動しようとすると以下のようなメッセージを残してすぐに落ちて しまいました。どのようにすれば解消できるでしょうか? % kinput2 -canna -jserver remotehost & % netscape & [2] Bus error netscape(core dumped) (↑このメッセージを残してnetscapeが落ちます。) |
|
@68userさん すみません、ちょっと横から質問です。 >> では、DNSクライアントとnamedデーモンが、 >> UDPプロトコルでportの42番でやり取りすると理解してよろしいですね。 >その通りです。 ぼく、ずっとUDPの「53」番(ゾーン転送のときはTCPも)だと思っていたんですが、 これは間違ってたんでしょうか? #うーむ、心配になってきました・・・確認しよっと。 |
|
> 68user様 窓の表示とともにただ線を引くというのが イベントなのかどうかわからなかったため、 今までイベント処理でやろうとは思っていませんでした。 これから試してみます。 |
|
> ずっとUDPの「53」番(ゾーン転送のときはTCPも)だと思っていたんですが、 うぅ、tcpdump で見ると確かに 53 でした。調べもせずに いいかげんなことを言ってはいけない…。 なぜかとてもとても忙しいぞー。なんでだ。 なので、その他については明日に持ち越し。 |
|
現在 Xt の勉強中。 @gongoさん > 窓の表示とともにただ線を引くというのが > イベントなのかどうかわからなかったため、 ご存知かもしれませんが一応説明しておきますと、X では ウィンドウの最初の map 時や、他のウィンドウに隠れていた ものが露出した場合に Expose イベントが飛んできます。 なので、X クライアントは Expose イベントが飛んでくるか どうかを見張っていて、飛んできたら描画/再描画しなくては いけません。これをしないと、ウィンドウ内が真っ白になります。 X サーバ側が再描画をしてはくれませんから (とりあえず バッキングストアのことはおいとくとして)。 なお、最初の Expose が飛んでくる前 (Map する前) に描画 しようとすると、core 吐くか、X Protcol Error になった ような記憶が。 # ↑Xlib のレイヤの話。Xt だけを使っているなら、 # イントリンシクスがよきにはからってくれます。 # http://X68000.startshop.co.jp/~68user/xprogram/xlib-1.html @gaoさん > kinput2をバックグラウンドで起動した後、 netscape を > 起動しようとすると以下のようなメッセージを残してすぐに > 落ちてしまいました。 > % kinput2 -canna -jserver remotehost & canna の場合は、-cannaserver じゃなかったかなぁ。 -jserver は Wnn 用だったような。 # でも kterm などで漢字変換できているのなら、 # これでいいのかも。 > % netscape & > [2] Bus error netscape(core dumped) OS 名と、Netscape をどうやってインストールしたか、 X のリソース設定 (~/.Xdefaults の中身や xrdb -query の 結果) を書いて下さい。 というより、FreeBSD/NetBSD/OpenBSD/Linux あたりなら 日本語リソース付のパッケージが用意されているでしょうから、 それを使うのが簡単です。もしパッケージを使っているのに こういう結果になるなら、変なリソース設定をしている or リソース設定が足らない、あたりが怪しいかと。 |
|
また、質問させてもらいます。 $aaa = 20000728; $datedata=substr($aaa,0,4) . "/" . substr($aaa,4, 2) . "/" . substr($aaa,6, 2); print "datedata=$datedata\n"; のように、20000728 を 2000/07/28のようにyyyy/mm/ddに変換していますが、 上記以外のスマートな方法を教えて下さい。 「perlでVBのFormat関数みたいのはないですか」って質問されたもので...。 よろしくお願い致します。 |
|
スマートでないやり方です. 修飾子での簡単な型式変換をつけました. print &format('20000728','yyyy mm dd',"yyyy/mm/dd\n"); print &format('20000728','y1 y2 mm dd',"'y2年mm月dd日\n"); print &format('20000726','yyy! m! d!',"m!月d!日\n"); $M{'m#07'}='July'; print &format('20000726','yyyy m# d!',"m# d!, yyyy\n"); sub format{ local($src,$format,$template)=@_; local(@format,$ptr,$s,$d,$len); @format=split(/ /,$format); $ptr=0; foreach $s(@format){ $len=length($s); $d=substr($src,$ptr,$len); if ($s=~/!/){$d+=0;} if ($s=~/#/){$d=$M{"$s$d"};} $template=~s/$s/$d/g; $ptr+=$len; } return $template; } |
|
> VBのFormat関数 というものを知らないので外しているかもしれませんが、普通は $date = 20000728; printf "%04d/%02d/%02d",$date=~m/^(\d\d\d\d)(\d\d)(\d\d)$/; か $date = 20000728; $date =~ s|^(\d\d\d\d)(\d\d)(\d\d)$|$1/$2/$3|; printf $date あたりかなぁ。 もし表示形式を指定できるようにするなら、date コマンドと同じ書式の http://www.jp.FreeBSD.org/cgi/mroff.cgi?subdir=man&man=strftime&dir=jpman-3.1.0%2Fman#toc0 にするかも。 |
|
すいません、返答がずいぶん遅れてしまいました。 68userさん、いろいろアドバイスありがとうございます。 それで、いろいろMewについて見ていったのですが、 たまたま見ていたEmacsのINFOの中にMewという単語を見つけ、 中を見ていったら、何と既にMewがインストールされていました。 色々お手数おかけしてすいませんでした。 ただ、色々試みているのですが、いまだにMewを起動させる事ができません。 M-x Mew と入力すると起動すると書いてあるのですが、 これをどこで(どういう場面で)入力すればいいのかが解りません。 教えて頂けますか? それから、最近、Netscape をkill した時に Bus error という表示が出て、.netscape フォルダの中に、 lock ファイルができてしまいます。 以前はこんな事はなく、Done という表示が出て lock ファイルも作られませんでした。 僕は最近、不必要だと思われるファイルを色々消していっているのですが、 その過程で、何か必要なファイルまで消していってしまったのでしょうか? |
|
@68user様 > X ではウィンドウの最初の map 時や、他のウィンドウに隠れていた > ものが露出した場合に Expose イベントが飛んできます。 ここら辺はなんとなくわかっていたのですが、 最終的にできてほしいプログラムのことを考えるあまり 頭の中でごちゃごちゃになっていました。 まだ線をひくのを確認していないのでやってみます。 |
|
@68user様 度々すみません。27日のご説明でイベントハンドラを 用いていましたが、呼び出されるイベントハンドラは あらかじめ決められた関数の形式(XtEventHandler型)で なくてもよろしいのでしょうか。 |
|
>68userさんへ 確認し、理解できました。ありがとうございました。 >Netboyさんへ 確認し、ちょっと理解できないところがありましたが、ありがとうございました。 引数2と引数3の関係がイマイチわかりません。 とりあえず、これで、失礼いたします。 ありがとうございました。 |
|
>引数2と引数3の関係がイマイチわかりません。 引数2は,引数1の切り分け方の指定です. print &format('28/07/2000','dd x mm x yyyy',"yyyy年mm月dd日\n"); のように使えます. 混乱させてしまって済みません. 関数名に予約語(format)を使ったのもまずかったです... |
|
@68userさん >うぅ、tcpdump で見ると確かに 53 でした ぼくも確認しなおしました。 記憶違いでなくてよかった・・・。 #68userさんが断言してらっしゃると、 #自分の記憶に自信があっても、ビビッちゃいます(笑 |
|
@gongo さん > 呼び出されるイベントハンドラはあらかじめ決められた > 関数の形式(XtEventHandler型)でなくてもよろしいのでしょうか。 void repaint(void) としたのは、てきとーに書いただけで、 void handler(Widget,XtPointer,XEvent*,Boolean*) が正しいです。まぁ XtEventHandler は typedef void (*XtEventHandler)( Widget /* widget */, XtPointer /* closure */, XEvent* /* event */, Boolean* /* continue_to_dispatch */ ); なので、void repaint(void) でも動くはずです。C言語では 呼び出し側が渡した引数を、呼び出された関数側で受けなくても 構わないからです (…ほんとかなぁ。動くかどうかは環境依存かも)。 @ちゃいぱさん > 「perlでVBのFormat関数みたいのはないですか」 ちなみに、この問いが「perl に strftime のような関数はないのか」 という意味なら、答えは「perl5 標準では、ない」です。 ただし Time::CTime モジュールをインストールすれば strftime 関数が使えるようになります。 @いちさん > M-x Mew と入力すると起動すると書いてあるのですが、 > これをどこで(どういう場面で)入力すればいいのかが解りません。 emacs を起動して、ESC キーを押して、x を押して、 mew とタイプして Enter です。コマンドラインから % emacs -f mew としても同じことになります。 > Netscape をkill した時に Bus error という表示が出て、 > .netscape フォルダの中に、lock ファイルができてしまいます。 常套手段として、rm -rf ~/.netscape で設定ファイルをクリア してから、再度 netscape を立ち上げて下さい。preferences.js、 bookmarks.html などのバックアップは忘れずに。 |
|
@68userさん ありあまる回答をして頂き、感謝いたします。 あがとうございました。 ただ、元々の質問者のレスがなく、ちょっと残念...。 @Netboyさん 理解できました! 関数名を変えれば、結構使えそうですね。 ありがとうございました。 |
|
需要があるかどうかは知らないけど、BBS の全文検索の試運転。 http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard/namazu.cgi namazu-2.0.4 でやってますが、replace に正規表現使えるし、 filter いじれば この BBS のデータ形式にも対応できるし、 いい感じ。 まだ自動更新はされません。 @hsj さん > #68userさんが断言してらっしゃると、 > #自分の記憶に自信があっても、ビビッちゃいます(笑 僕はかなりいいかげんな回答をしてます。 そもそも DNS サーバの設定をしたことがないくらいだし :-) |
|
> http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard/namazu.cgi あら、検索すると、データファイル中の remote host が丸見え。 filter で削るように設定したつもりだったんだが。というわけで、 いったん引っ込めます。 |
|
68userさん> 御回答ありがとうございます。 仰せのとおり Mew を起動させようとしましたができませんでした。 どうやら、Mew の help があるものの、Mew 自体はインストールされてないみたいです。 そこで、Mew と im をインストールしました。 次に、アーカイブを展開するというように説明に書いてあったのですが、 これって、圧縮されたファイルを解凍するという事ですよね。 そう思って、gzip で圧縮されていたので、gunzip で解凍しようとするのですが、 gzip: mew-1.94.2.tar.gz: unexpected end of file という表示が出て、うまくいきません。 どうしたらよいのでしょうか? それと、.netscape/ のことについてですが、 その中にあるファイルの bookmarks.html は何となく解りますが、 preferences.js はどういうファイルなのですか? その他の、cache/(ディレクトリ)内にある index.db そして、archive/(ディレクトリ)、cert7.db 、history.dat、 history.list 、key3.db 、plugin-list 、plugin-list.BAK、 registry 、secmodule.db はそれぞれどういったファイルなのでしょうか? 教えて下さい。 それから僕は、ディスク容量を節約するために、cache/ フォルダの中に、 99/ というフォルダを作り、その中に必要なキャッシュファイルを移動し、 他のキャッシュファイルは、全て自動削除するように設定しているのですが、 その 99/ フォルダに入れたキャッシュファイルの効果があるか、良く解らないのです。 (どうやらキャッシュフォルダは 00〜0f、10〜1f までしか作られないみたいなので、 99にする必要は別段ないのですが) これって、意味ありますか? もしくは、もっといい方法がありましたら教えて下さい。 |
|
FTPについての質問なのですが、 FTPでデータを転送するさい、失敗することはありえるのでしょうか ある場合、正しく転送されたか、チェックすることは可能なのでしょうか? ネットワーク関係は初心者なもので、よくわからないのですが FTPはTCPの上位プロトコルなので、 データのチェックはTCPレベルでやっているのでしょうか? 突然の質問、失礼しました。 |
|
返答ありがとうございます。 >> % netscape & >> [2] Bus error netscape(core dumped) >OS 名と、Netscape をどうやってインストールしたか、 >X のリソース設定 (~/.Xdefaults の中身や xrdb -query の >結果) を書いて下さい。 ~/.Xdefaults の内容は以下のようになっています。 kterm,netscape当りの設定内容のみを書き出してみました。 設定ミスなどがありそうですか? ---------------------------------------------------------------- kterm*VT100.translations: #override \ Shift <Key>space: begin-conversion(_JAPANESE_CONVERSION) KTerm*KanjiMode: euc KTerm*SaveLines: 1000 KTerm*ScrollBar: on KTerm*IMProtocl: kinput2 KTerm*Modifiers: @im=kinput2 *inputMethod:kinput2 *VT100*translations: #override\ Shift<Key>space: begin-conversion(_JAPANESE_CONVERSION) Netscape*useStderrDialog: False Netscape*international: True Netscape*inputMethod: kinput2 Netscape*XmTextField.fontList:\ -*-courier-medium-r-*--14-*-*-*-*-*-iso8859-1;\ -*-*-medium-*-*--14-*-*-*-*-*-jisx0208.1983-0;\ -*-*-medium-*-*--14-*-*-*-*-*-jisx0201.1976-0;\ -*-*-medium-*-*--14-*-*-*-*-*-jisx0212.1990-0: ---------------------------------------------------------------- xrdb -query ↑このコマンドは意味がわからないのですが、何を行うのでしょうか? |
|
> gzip: mew-1.94.2.tar.gz: unexpected end of file mew-1.94.2.tar.gz のダウンロードに失敗したんでしょう。 ブラウザで落としたなら、別の HTTP/FTP クライアントを試す。 ftp の ascii モードで落としたのなら、binary モード。 > それと、.netscape/ のことについてですが、 自分でエディタなどを使って覗いてみましたか? > その 99/ フォルダに入れたキャッシュファイルの効果があるか、 > 良く解らないのです。これって、意味ありますか? ls -lud 99/ で、最終アクセス時刻が得られます。その結果で 判断できるでしょう。 > FTPでデータを転送するさい、失敗することはありえるのでしょうか ユーザ認証の失敗とか、コネクションが張れないとか、ascii/binary の 設定ミス以外にビット化けするか、ということですか? IP データグラムでは、そもそもデータ部のチェックサムが存在しませんので、 ノーチェックです。一方、TCP データグラムはチェックサムがありますが、 「化けてもチェックサムが同じで、検出できない」ということがどれくらいの 確率で起こるのかはわかりません。おそらく論文のネタになっているでしょうね。 |
|
僕の回答を再掲します。 > OS 名と、Netscape をどうやってインストールしたか ちゃんと読んでますか? あと、原因の切り分けを行ってください。~/.Xdefaults の 各行をコメントアウト (リソースのコメント開始は `!' ) して動けば、原因はリソースなんでしょう。rm -rf ~/.netscape して動けば、原因は netscape の設定ファイルがおかしくなって しまったんでしょう。 |
|
> TCP データグラム TCP セグメントでした。 |
|
どうも、ご無沙汰しております、yujiです。(^^) 今、指定されたディレクトリ以下のファイル一覧を表示させたい、 と考えているのですが、再帰関数を使った場合、 ファイルハンドルがグローバルのため、値の上書きになって しまい、うまくいかないようです。ローカルなファイルハンドルというのは、できるんでしょうか?myやlocalで試してはみたのですが。(^^; なにかよい方法は、ないでしょうか。 また、$home/$fileのカタチで出力する場合、どのようにするのがよいでしょうか? "$home/$file"とすると、/$で変数ではなく文字として解釈されると 思うのですが。"$home/".$fileとして逃げたりしているんですが。(^^; こちらのほうでも、別の方法などありましたら、よろしくお願いします。 #!/usr/bin/perl GetFiles("."); exit(0); sub GetFiles(){ local($dir)=@_; print "In $dir\n"; opendir(DIR,$dir); while($file=readdir(DIR)){ if(-d $file && $file ne '.' && $file ne '..'){ &GetFiles($file); }else{ if($file ne '.' && $file ne '..'){print "$file\n";} } } close(DIR); } |
|
@68user様 ご回答、ありがとうございました。 もう少しTCP/IPについて勉強してみます。 |
|
local(*DIR); とします。なお、ハンドル DIR だけでなく $DIR も @DIR も %DIR も 全て localize されます。あるいは $handle = 'unique string'; opendir($handle,'.'); とか。あと、こういう疑問が出てくるなら、 http://www.oreilly.co.jp/BOOK/adperl/ をお勧めしておきます。 > "$home/$file"とすると、/$で変数ではなく文字として解釈される /$ でも問題ないです。\$ と勘違いされてませんか? |
|
すばやいお返事、どうもありがとうございました。 おかげさまで、うまくいきました。(^^) 書籍の情報、参考にさせていただきますので。 そうですね。すいません。(^^; >勘違い スラッシュとバックスラッシュを使っていまして。 FTPで、指定したディレクトリ以下を決まった時間に、 指定したFTPサーバーのディレクトリに、自動的にアップロードするスクリプトを 作成していまして。これで次のステップに進めそうです。(^^) 今後とも、どうぞよろしくお願いします。 #!/usr/bin/perl GetFiles("."); exit(0); sub GetFiles(){ local($dir)=@_; local(*DIR); local($file); print "In $dir\n";#ディレクトリの作成などに。 opendir(DIR,$dir); while($file=readdir(DIR)){ if(-d "$dir/$file" && $file ne '.' && $file ne '..'){ &GetFiles("$dir/$file"); }else{ if($file ne '.' && $file ne '..'){print "$file\n";}#ファイルごとの処理 } } close(DIR); } |
|
近況報告ですが、回線が専用線になりまして。(^^) 今後は、apache+php+データベースに取り組んでいきたいと考えております。 Xt、おもしろいですよね。以前、ちょっとだけ取り組みました。 ディレクトリには、1個以上のファイルが含まれることが 多いですから、こっちのほうがスマートでしたね。(^^; それでは、また。 #!/usr/bin/perl GetFiles("."); exit(0); sub GetFiles(){ local($dir)=@_; local(*DIR); local($file); print "In $dir\n"; opendir(DIR,$dir); while($file=readdir(DIR)){ if(-d "$dir/$file"){ if($file ne '.' && $file ne '..'){ &GetFiles("$dir/$file"); } }else{ print "$file\n"; } } close(DIR); } |
|
御回答ありがとうございます。 ちなみに僕の使っているOSはSunOS 5.6で、 Netscape はバージョン4.7です。 HTTP/FTP クライアントについては、 ネットワークプログラミングの基礎知識で今勉強中なのですが、 ftp の ascii モードと binary モード というのがなんなのか良く解りません。 .netscape/ については less で覗いてみて、 bookmarks.html は、ブックマークに登録してあるもの、 history.list は、 URLを入力する所の右の下向き矢印をクリックすると表れるURL一覧、 preferences.js は、設定ファイルだと思うのですが、 plugin-list 、plugin-list.BAK については解りません。 その他のファイルについては、見ようとすると "ファイル名" may be a binary file. See it anyway? という表示が出てきて、yesと答えても意味の解らないものが出てくるだけでした。 netscapeのキャッシュの事に関しては、 ls -lud 99/ と入力すると、99/ディレクトリにアクセスされていましたが、 その99/ディレクトリの中のファイルに関して、そのコマンドを入力すると、 アクセスされていませんでした。 これって、だめなのでしょうか? あと、umask というコマンドについてなのですが、 ファイル、ディレクトリ作成時に、 ファイルのパーミッションを -rw------- ディレクトリのパーミッションを drwx------ としておきたく、umask の値を変更したいのです。 umask が0の時のパーミッションは、 ファイルが -rw-rw-rw- で、 ディレクトリが drwxrwsrwx なのです。 groupの部分に s の表示があるため、umask 2067 としたらうまくいかないので、umask 77 としたら、 ディレクトリのパーミッションは drwx--l--- となりました。 groupの l も消すようにしたいのですが、どうしたらいいですか? |
|
@いちさん > ftp の ascii モードと binary モード > というのがなんなのか良く解りません。 http://X68000.startshop.co.jp/~68user/unix/pickup?ftp のように どこかの ftp サイトから mew-1.94.2.tar.gz をダウンロードして下さい。 get の前に binary とタイプすればいいです。 > .netscape/ については less で覗いてみて、 ね、自分で調べればそれなりにわかるでしょ。まずは 自力で調べて、それでもわからなければ質問して下さい。 その他については、strings で見ればわかるかもしれません。 それでもわからないものについては、多分僕にもわからないです。 > 99/ディレクトリの中のファイルに関して、そのコマンドを > 入力すると、アクセスされていませんでした。 > これって、だめなのでしょうか? ダメなんでしょう。ということは、おそらく % strings ~/.netscape/cache/index.db で、ファイル名が出ないでしょうから、そもそも URL と キャッシュファイルとのマッピングが出来ていないということです。 > あと、umask というコマンドについてなのですが、 umask 77 で、mkdir でディレクトリを作成したら drwx--l--- になりますか? SunOS 環境が今手元に ないので試せませんが、本当ですか? # l の意味は ls のマニュアルを参照のこと。 @yujiさん > 近況報告ですが、回線が専用線になりまして。(^^) 実はうちも専用線になったので Postgres をいじって遊ぼうと 思ってたら、仕事のせいで暇が全くなかったりします。 機能仕様書や詳細設計書を書いたり、Word や Excel に 苦しむ生活はもう嫌 (-_-# |
|
はじめまして。 私は今プログラマーの仕事をしております。 今回の質問というのはcronについてです。 現在、UNIXを使って「指定した時間にプログラムを実行させる」 ということをしようとしています。 crontabに日時などの情報とコマンドを記述するらしいということは わかったのですが、どうも思ったようにいきません。 crontabに日時、echoコマンドを記述したところ mailで返ってきました。 インターネットからの情報ではechoコマンドやエラーが出たときは mailで返って来るということなので、それはそれでよかったのです。 しかし、いざ実行したいシェルを書きますと、 シェルが起動してくれませんでした。 cronはシェルを起動することもできるんですよね? シェルはフルパスで指定しましたし、chmodで実行を許可しておきました。 そして、何せシェル単独では動くのです・・・。 cronを使ってシェルを起動させるのに、ほかに何か注意する点はありますか? お忙しいところすいません。 もし何かわかることがございましたら、お答えいただきたく思います。 それでは、よろしくお願いいたします。 |
|
> ほかに何か注意する点はありますか? 必要な環境変数が設定されているか、例えば PATH は 通っているか、などをチェックしましょう。cron で env コマンドを実行すればわかるでしょう。 |
|
この掲示板を観ていて、 ソース類を頻繁に書き込む掲示板では、独自タグでtextareaを表示できるようにすると 1.ドラッグによるテキスト選択がやりやすい(普通の表示だと異様にやりずらいブラウザがあります) 2.1ページのログの縦幅が減る という利点があると思ったのですがどうでしょうか。 #独自タグは人によって意見が全然違うのでしょうが ##「違うのでしょうが」っていうのは日本語としておかしいのでしょうが |
|
はじめまして、教えて下さい。 Apache 1.3.12 TurboLinux 6.1 の環境で cgi-bin フォルダがあります。 .cgi のファイルは正しく実行されるのですが、 .html のファイルまで実行しようとする様子で、エラーになってしまいます。 多分、Apache の設定だと思うのですが、資料がなくてわかりません。 ご教授よろしくお願いします |
|
perlでローカルタイムと標準時との間の相互変換をする方法について 質問です。 $t = time; ($sec,$min,$hour,$day,$mon,$year,$wday) = gmtime($t); または ($sec,$min,$hour,$day,$mon,$year,$wday) = localtime($t); とすると、現在の時刻に関する情報(秒、分、時、日、年、月、曜日)が 得られますが、この($sec,$min,$hour,$day,$mon,$year,$wday)がわかっているときに $tを得るにはどうしたらよいのでしょうか。 |
|
@じょんさん > .html のファイルまで実行しようとする様子で、エラーになってしまいます。 おそらく http:// hostname/~foo/cgi-bin/ でなくて、 http:// hostname/cgi-bin/ の話だろうと思いますが、デフォルトでは httpd.conf で ScriptAlias /cgi-bin /usr/local/www/cgi-bin などとなっているので、全てのファイルが CGI プログラムとして 認識されます。なので、 Alias /cgi-bin /usr/local/www/cgi-bin にすればよいです。ただし根本的には /usr/local/www/cgi-bin に CGI プログラムしか置かないというのが (apache の思想としては) 正しいです。 @Syuichi.K さん > ソース類を頻繁に書き込む掲示板では 空白の話ですよね。空白を に変換しようかなと考えて いたのですが、それだと > 1.ドラッグによるテキスト選択がやりやすい(普通の表示だと > 異様にやりずらいブラウザがあります) > 2.1ページのログの縦幅が減る というのは解消できないのでしょうか? 「ドラッグしづらい」 「縦幅が減る」の意味がちょっとわからないです。 @has > この($sec,$min,$hour,$day,$mon,$year,$wday)が > わかっているときに $tを得る Time::Local モジュールを使います。perldoc Time::Local を 参照のこと。perl4 なら require 'timelocal.pl' です。 ところで、お盆には行けない可能性が大になりました>has 今の状況だと、夏休みを取れるかどうかも怪しいという…。 |
|
@68user ありがとうございました。 調べてみますです。 お仕事大変そうですな。 時間のとれたときにでも、 ゆっくりお話ししましょう。 |
|
68user さんありがとうございます。 アドバイスを元に、試行錯誤してうまくいきました Apache って面倒ですね (^^;) 今後も、よろしくお願いします。 m(_'_)m |
|
@68user様 どうも、ご無沙汰しております。Xアプリケーション作成中のgongoです。 前回68user様に教えていただいた通り、イベントハンドラを用いて 線を描くことができました。そこで今度はXDrawLineだけではなく、 他のXlibの関数を用いて絵を描こうと思い実行してみたのですが 問題が生じてしまいました。前回のプログラムからちょこっと直したので 次のようになっております。 http://www.din.or.jp/~gongo/xtshirts.c (プログラム本体) http://www.din.or.jp/~gongo/color.dat (色設定) http://www.din.or.jp/~gongo/outline.dat (絵の輪郭のための座標) http://www.din.or.jp/~gongo/polygon.dat (絵を塗り潰すための座標) 今回やろうとしたのは、 1.絵を描くための窓を白で塗りつぶす(最初のみ) 2.窓に影をつける(見た目を格好よくしたかったため) 3.全ての窓に同じ絵を描く 4.その絵に輪郭をつける です。で、問題というのはこれらすべてはExposeイベントによって 処理されるようにしたのですが、どうも窓の名前(window1,window2など) が表示されてしまいます。窓に何も描いていない場合でない限り 窓の名前は表示されないものと思っていたのですが、今回絵を描いても 窓の名前が表示されたりされなかったりします。Exposeを何度も起こして (上に他の窓を持って来たりして)動作を確認していたのですが 窓の名前が表示されるときもさればそうでないときもあるため 原因がいまいちわかりません。 どうかよろしくお願い致します。 |
|
まず、 - Window?? というのは Xt のラベル - その下の服やらなんやらは Xlib です。 Xlib の方は Expose が発生すると再描画するように EventHandler を 設定しています。しかし、Xt の方は Xt が勝手に Expose を取得し、 再描画しています。 で、表示される/されないの現象を見るに、 - Xlib の方は、ウィンドウの一部が露出しただけで常に 再描画するようになっています。なぜならウィンドウ全体である form に Expose イベントハンドラとして、全ての Xlib な画像を 再描画するように設定されているからです。 - Xt のウィジェットの方は、自分自身のウィジェットが 露出しない限り、再描画しません なので、xtshirts のウィンドウの半分を別のウィンドウで覆い、 その後 xtshirts ウィンドウを露出させると、隠れていなかった 部分のラベルが消えます。これは、隠れていなかった部分の ウィジェットは再描画しなかったのに、Xlib の方が再描画 してしまったからでしょう。 対策としては、 - Xlib の方でも本当に関係ある Expose だけを拾うようにする。 - Xlib の方で Expose を受けたら再描画し、その後 XClearArea (だったかなぁ?) で隠れてしまったウィジェットの方に Expose イベントを送る でしょうか。あるいは重ね合わせを簡単に指定できる方法が あるのかもしれません。 以上、Xt 素人の意見でした。大外しの可能性もありますので、 盲目的に信用しないで下さい。 ちなみに initflag の部分は - 結局一度しか実行されない (main だから) - コールバックやイベントハンドラは一度設定したら、ずっと その設定が残る (再設定しない限り) なので、意味はないと思います。 |
|
@68user様 本当にありがとうございます! どうしてあのような状況になったのかだいたい理解できました。 >form に Expose イベントハンドラとして、全ての Xlib な画像を これについては最初は各ウィジェットごとにExposeイベント処理をしよう かとも思っていたのですが、アプリケーションの見た目のために 意味もなくつけた影となる窓もXlibを用いて色を塗っていたため 全部のウィジェットについてExposeを設定するよりもformの方が 簡単かなぁと思ってしまったためです。 ご提案してくださった対策法につきましては2つ目の方がちょっと まだわからないところがあるのでいろいろやってみたいと思います。 基本的にはXtのラベルには出てきてほしくないものなのですが・・・。 |
|
@68user様 Xtのラベルを表示させないようにするのは成功しました。 結局各ウィジェットごとにExposeイベントの処理を行うことにしました。 そこで次に各ウィジェットごとに服の色を変えようかと思い、 DrawOnWidgetの中でdrawgcの属性値を変えようとしたのですが どうもうまくいきません。1つのGCを各ウィジェットに対して 属性値を変えつつ使い回すのは無理なのでしょうか。 どうしても最初の窓用に設定した色で全て塗りつぶされてしまいます。 プログラムはこちらです↓ http://www.din.or.jp/~gongo/xtshirts.c http://www.din.or.jp/~gongo/color.dat http://www.din.or.jp/~gongo/fixedcolor.dat http://www.din.or.jp/~gongo/polygon.dat http://www.din.or.jp/~gongo/outline.dat まだ先の話ですが、いずれは1つの窓をクリックすることで 全ての服の色に影響を与え、再描画するようにしたいと考えております。 どうか宜しくお願い致します。 |
|
たぶん、DrawOnWidget の fscanf で、バッファオーバーランを 起こしています。そのため windownum が上書きされ、値が常に 0になってます。例えば POLNUM の数を増やすと動作しました。 開発初期段階のうちから if ( j >= sizeof(polpoints)/sizeof(polpoints[0]) ){ オーバーラン } というような自動チェックのコードを仕込んでおくこと をお勧めします。 あと、デバッグは、もうちょっと注意深くやってみましょう。 XChangeGC 周辺で windownum や pixelnum[windownum] の 値を表示させるだけで、おそらく気づいたことでしょうから。 |
|
ちゃうな。POLNUM は正しいのか。というわけで、 誤: fscanf("%d%*c%d%*c",&polpoints[j].x,&polpoints[j].y); 正: fscanf("%hd%*c%hd%*c",&polpoints[j].x,&polpoints[j].y); ですかね。XPoint のメンバ x,y は int でなく short int です。 |
|
@68user様 お手数おかけ致しまして申し訳ございませんでした。 DrawOnWidgetに入った時点でwindownumがきちんと受け渡されて 表示されていたので、てっきり大丈夫なのだと思いこんでいました。 以後もう少し気をつけてデバック致します。 |
|
よく参考にさせてもらってるのですが、発言ははじめてです。 よろしくお願いします。 今環境変数に興味を持っているのですが UGTOPの「確認くん」で一部の携帯電話で クライアントの電話番号が取得できる欄が ありました。この環境変数名(HTTP_???)は何かご存知ですか? もしかしてCLIENT_IPとかでしょうか? |
|
> この環境変数名(HTTP_???)は何かご存知ですか? http://www.zdnet.co.jp/news/0003/29/ido.html HTTP_X_UP_SUBNO だそうで。まぁおそらくデータの流れは 携帯←→センタ←→WWWサーバ でしょうから (かな?)、今はセンタ側で対応されてて、電話番号は 取れないのかも。 ところで、相変わらず http://www.ugtop.com/ って、Shift-JIS なのに Content-Type: text/html; charset=iso-2022-jp を を出してますな。なので、うちでは化け化け。何か意図があるんだろうか。 |
|
はじめまして perlで以下のことをやりたいのですが教えてください。 $aaa = 10000000; これを 10,000,000 というようにしたいのですか? 1000の場合は、1,000 です。 どうすればよいですか? よろしくお願いします。 |
|
> どうすればよいですか? どうすればよいと思いますか? # 考えるのがめんどくさい人はこちら。 # http://www.din.or.jp/~ohzaki/perl.htm#NumberWithComma |
|
どうも、おひさしぶりです! wrapperを使って色々テストしていたのですが、wrapperではエラー表示がなく 実際に実行すると得意の500 Internal Server Errorがでます。 ちょっと変なことをやってるんですが...。 (日付を数値で保存して差をみたかった) #!/usr/local/bin/perl $temp0 = 966500000; $temp1 = localtime($temp0); $temp2 = localtime(966000000); print "$temp1/$temp2"; 以上がテストした全文です。(属性は755) この調子だとプログラムに組みこんでもエラーですよね? 日付表示もしたいのでlocaltime($temp0)とかしてみたんですが...。 何処がマズイのでしょうか? |
|
> 空白の話 それはどういう不都合なのでしょうか? ドラッグというのは、マウスでソースを選択する時の事です。 |
|
@R-N さん > wrapperを使って色々テストしていたのですが、wrapperではエラー表示がなく > 実際に実行すると得意の500 Internal Server Errorがでます。 Content-type ヘッダを出力していない、ってことかな。 @Syuichi.K さん > ドラッグというのは、マウスでソースを選択する時の事です。 これはちょっと後ほど。というか、空白はなにかしらの 方法で画面に反映するようにするつもりではいます。 |
|
ぐはっ、そうでした...。 あいかわらず基本がおろそかでもうしわけない...。 ありがとうございました、でなおしてきまする。 |
|
@68user様 どうも、gongoです。 前回発言したときよりさらに進めて、今度は真ん中に表示される服を除く 服が選択されたときに、選択された服の色によって選択されなかった 他の服の色を塗りなおすということをやろうとしています。 そこで、あるウィジェットがマウスでクリックされるとWidgetChoice という関数に入るようにして、その中でChangeColorという関数を 呼び出すことで色のRGB値を書いたファイルcolor.datを書き直すことに しました。そして新たな色で再描画するようにExposeイベントを送る ことにしました(ただし、まだ実験段階なのでlabel1だけ 書き直そうとしています)。 ところが、Exposeイベントを送っても新たなカラーで描き直されません。 XtRealizeWidgetではだめで、XtUnmapWidgetをやってからXtMapWidget をやるとマウスでクリックした時に一瞬label1がチラッとするので Exposeイベントは送られているような気がします。しかし、新たな色が 有効になりません。また、XClearWindowをやってみたりもしましたが これだと服が消えてしまったままで再描画されません。 こういった場合は、DrawOnWidgetと同様のことをChangeColorの後に 書くべきなのでしょうか。できればExposeイベントを意図的に 起こすことで再描画してほしいのですが・・・。 どうか宜しくお願い致します。 |
|
@68user様 よくよく考えると、maninに入ってすぐにColor()を呼び出したっきり だからまずいのでしょうか。そうなるとExpose云々よりもまず クリックしてcolor.datが書き直された後にColor()を呼び出すべき なのでしょうか。う〜ん、お盆あけないと確認できません・・・。 |
|
ここでははじめましてです。どぞよろしく。 早速質問ですみませんが、 ・Cygwinで動くApacheのバイナリーパッケージを見かけた方か、 ・CygwinでApacheのコンパイルに成功した方か ・Windows用ApacheでCygwinのPerlのスクリプトを動かす方法を知っている方は いらっしゃいますか? いつもは会社でFreeBSDでCGIの開発、メンテをしているのですが、 (一般ユーザーで管理者ではなく、UNIXくわしくありません) 夏休み家人のWindows98マシンで作業をしなければならなくなり、 Cygwin、Perl、Meadow(Emacsですな)は入れて快適に使えているのですが、 肝心のApacheがどうしてもインストールできません。 具体的な現象でいうと、makeで「no rule for targat all. stop」とか言われます。 成功した人のページ(男塾の塾長さんらしいです ^^;)のマネをしているのだが、、。 ActivePerlを使うのが常道らしいですが、会社に最終的には持っていくのでUNIX互換にしたいし、 DOS窓とかWindowsのエディターは慣れてないので憂鬱です。 ぶしつけで申し訳ありませんがよろしくお願いします、、。 ああっでもペケロクの部屋なのにPCの質問ですいませんっ ではでは。 |
|
すいません、解決しちまいました、、。 pastyというフランス人のサイト(http://persoweb.francenet.fr/~pasty/cygport/)に B20(というCygwinのバージョン)用のバイナリーがあって、ぼくのはv1.1なんだけど、 動かしてみたら、動いた。 http://localhost/index.htmlに自分が書いたページ置いたら見えます。イエー! ただ、ここでまた問題がー。 /usr/local/apache/cgi-bin/の下に自作のcgi、hello.cgiを #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<html><body>聞こえますか</body></html>\n"; とか書いて動かしてみたんですが、奇怪な現象が、、。 ブラウザがページを一生懸命ロードするんですけど、 いつまでたってもロードがおわりません。 で、停止ボタンを押すと 聞こえますか> ================================================ 転送を中断しました! とか表示されて、ページのソースを見ると、 <html><body>聞こえますか</body></html> と書いてある。ううん、動いてはいるようなんだけどなー。 コマンドラインで hello.cgi を動かしても、 Content-Type: text/html <html><body>聞こえますか</body></html> と出てくるし、Content-type のあとの改行を1個減らすと ちゃんと Internal Server Error になるんですけど。(^^;;; どなたか同様の経験を克服された方はいらっしゃいますか? 何回も聞いてすいません。 うーん、惜しい。惜しいんだけどなー、、、。 |
|
ホームページ開設のお知らせ・・・ ■残暑お見舞い申しあげます。さて、一風変わったサボテンホームページができましたのでご参笑ください。これで子供たちやご婦人方のサボテンファンがひとりでも増えれば幸いです。どうか今後ともいろいろご教示くださいね。 |
|
はじめまして、skel.103Mです。いつもこのホームページを参考にさせて いただいてます。 @ふくし さん >print "Content-type: text/html\n\n"; print "Content-type: text/html\r\n"; か print "Content-type: text/html\n\r"; にすれば動くかも、と思ったりしました。 |
|
IP unreachable な環境にいたので、しばらく書き込め ませんでした。で、ネット外でいろいろあって、これから しばらくは書き込まないと思います。ご了承ください。 とりあえずはこの掲示板はそのまま置いておきますが、 一時的に書き込み不可にするかもしれないし、しないかも しれないです。要は未定ってことです。 |
|
はじめまして。にゃと申します。 @ふくし さん おそらく接続がKeep-aliveのままに なっているのではないかと思います。 Connection: close というヘッダを追加して試してみてください。 ローカルでCGIのテストをするときはLinuxでApacheを動かしていますが、 こちらではCGIを動かすと自動的にこのヘッダを付けてくれるようです。 あとskel.103M さんも指摘されてますがヘッダの部分は 改行コードを"\r\n"にしたほうが良いかもしれません。 ヘッダの部分だけ書くとこんな感じかな? print "Connection: close\r\nContent-type: text/html\r\n\r\n" |
|
skel.103Mさん、にゃさん、お返事ありがとうございました。 \r\n も、\n\r も、\r\n\r\n も、\n\r\n\r もダメでした。(;.;) ちなみに httpd.conf で KeepAlive Off にしています。 Telnet でたたいてみると(この発想がなぜかありませんでした ^^;)、 $ telnet localhost 80 Trying 127.0.0.1... Connected to tokumei.kibou.catv.ne.jp. Escape character is '^]'. GET http://localhost/cgi-bin/test.cgi HTTP/1.0 HTTP/1.1 200 OK Date: Fri, 18 Aug 2000 13:25:42 GMT Server: Apache/1.3.12 (Cygwin) Connection: close Content-Type: text/html <html>どうなんでしょうね</html> とここまで表示して端末の動きが固まってしまい、 Ctrl-Z を押すと、 Connection closed by foreign host. $ と出て終わります。 (ふつうの html を表示させるときは固まりません) また、上のように、Connection: close は Cygwin でも挿入されるようですねー。 (KeepAlive On にしてみても挿入されました) とまれ、どうもありがとうございます。 引き続き何かありましたらよろしくおねがいします。 ちなみに、勉強用に使っているのはオライリーの「ねずみの本」ですが、 これでは \n\n になっているんですが、\r\n が正式なんでしょうか? あるいは Cygwin だから Windows 改行にした方がいいということですか? これも合わせてよろしくおねがいします。 質問ばかりで申し訳ありませんが、ご無理のない範囲でどうぞよろしくお願いします。 |
|
> これからしばらくは書き込まないと思います。 と言いながら、早々に復帰してみたり。 Windows も cygwin も詳しくありませんが、スクリプトの最後に close(STDOUT); を入れるとどうなりますか? でもまぁ、どの方法で解決したとしても挙動が変なわけで、 > 肝心のApacheがどうしてもインストールできません。 > 具体的な現象でいうと、makeで「no rule for targat all. stop」 をなんとかするか、別の WWW サーバを入れるのが 正しい道のような気もします。 |
|
68userさん> お忙しいところ、お返事ありがとうございます。 close(STDOUT); を早速入れてみましたが、ダメでした。 うーむぅApache以外のhttpdかー、考えませんでした。 どんなもんがあるんでしょうね(自分でも調べますが) とまれ、どうもありがとうございましら。 |
|
@gongo さん 作成したプログラムをそのまま投げてデバッグしてもらおうと するのはやめましょう。回答者の負担が大きすぎます。 例えば、color.dat を書き換えるとか、10個のウィジェットを使う、 なんてのは Xt の理解とは関係ないはずです。問題が発生する 最小限のプログラムを作ってから質問して下さい。 また、最小限のプログラムを作る過程で、自力で解決してしまう ともあるはずです。例えば前の fscanf の件は、ファイル操作部分を 切り離して定数化しようとしていたなら、自力で原因を突き止められて いたかもしれません。 あと、web にプログラムを置く際、改行コードを 0x0D に直しておくとか、 文字コードを EUC にしておくなどの気遣いがあるといいですね。 本題ですが、WidgetChoice の中に DrawOnWidget(label1,client_data,NULL); と書いてみるといかがですか。当方の環境では、選択したウィジェットの 色が label1 に反映されていました。 |
|
@68user様 本当に面倒ばかりおかけして申し訳ございませんでした。 今まで状況をどうやって伝えたらよいのかわからず 全部お見せするという形をとってしまいましたが、 これからは良く考えます。 で、プログラムについてですが、結局、68user様のご返事を いただく前に自分で試した方法でなんとかなりました。 方法としてはWidgetChoice()内でChangeColor()をやった後に Color()をやって、あとは再描画したいウィジェットについて XtUnmapWidget()とXtMapWidget()を行いました。 これによって新しい色が有効になってExposeイベントが 発生し再描画できました。 68user様がご提案してくださった方法についても実行してみます。 とにかく本当に御忙しいところすみませんでした。 何卒これからも宜しくお願い致します。 |
|
Yuukiです。 ふくしさん > 肝心のApacheがどうしてもインストールできません。 > 具体的な現象でいうと、makeで「no rule for targat all. stop」 ここのバイナリを使うっていうのはどうですか? 一番楽だと思います。 http://www.apache.org/dist/binaries/win32/ http://www.apache.org/dist/binaries/win32/apache_1_3_12_win32.exe |
|
>Yuukiさん 情報ありがとうございます。 これも知っていて、インストールしてみたんですが、結局Cygwinとは共存できないんですよね? (Cygwin の / から始まるファイルシステムにDocumentRootを乗せてCygwinのPerlを実行することができない) 会社でFreeBSDのApacheを使っていて、もうだいぶUNIX用のCGIスクリプトを書いていて、 プログラム内のパス名とか全部UNIX風に書いてしまっているし、flockやsystemなどのUNIXコマンドも使っているので、 できればCygwinにApacheを入れたいんです。 あるいは、Windows用のApacheをCygwinで使う方法があるんでしょうか? 今は別のPCにLinuxを入れてハブでつないで作業してるんですけど、 やっぱりどうしてもノートに入れて出先でデバッグとかしたいので、 またmakeから再挑戦しています。 いずれにせよ、ありがとうございます。 |
|
はじめまして > 肝心のApacheがどうしてもインストールできません。 > 具体的な現象でいうと、makeで「no rule for targat all. stop」 この件ですが、試しにソース(1.3.12)を持ってきてコンパイルしてみました。 結果、多少の問題があるものの、以下手順でインストールまで出来ました。 ・./configure --prefix=/usr/local/apache ・以下のパッチを当てる ・make EXTRA_LIBS=-lcrypt ・make install INSTALL=install.exe ただ、「no rule for targat all. stop」ってエラーには遭遇しませんでした。 Makefileの作り方を間違えていませんか? >ふくしさん また、下のhello.cgiも動いているようです。(^^; ---- ▽パッチ ここから diff -ru old/apache_1.3.12/src/main/http_main.c new/apache_1.3.12/src/main/http_main.c --- old/apache_1.3.12/src/main/http_main.c Sat Feb 5 21:01:54 2000 +++ new/apache_1.3.12/src/main/http_main.c Sat Aug 19 07:29:30 2000 @@ -116,7 +116,7 @@ #endif #ifdef WIN32 #include "../os/win32/getopt.h" -#elif !defined(BEOS) && !defined(TPF) && !defined(NETWARE) && !defined(OS390) +#elif !defined(BEOS) && !defined(TPF) && !defined(NETWARE) && !defined(OS390) && !defined(__CYGWIN__) #include <netinet/tcp.h> #endif #ifdef HAVE_BSTRING_H diff -ru old/apache_1.3.12/src/support/logresolve.c new/apache_1.3.12/src/support/logresolve.c --- old/apache_1.3.12/src/support/logresolve.c Wed Jan 26 13:36:02 2000 +++ new/apache_1.3.12/src/support/logresolve.c Sat Aug 19 09:09:00 2000 @@ -101,7 +101,7 @@ * statistics - obvious */ -#ifndef h_errno +#if !defined(h_errno) && !defined(__CYGWIN__) extern int h_errno; /* some machines don't have this in their headers */ #endif ---- △ここまで |
|
@ふくしさん ううっ、外してましたか。 一応答えられるところだけ。 >ちなみに、勉強用に使っているのはオライリーの「ねずみの本」ですが、 >これでは \n\n になっているんですが、\r\n が正式なんでしょうか? 確か調べたことのある範囲ではHTTPの1.0と1.1で ヘッダの改行はCR LF(\r\n)が正式だったと思います。 ただ改行が\nで不具合を起こした経験はないですし 多分問題はないと思います。 |
|
> 確か調べたことのある範囲ではHTTPの1.0と1.1で > ヘッダの改行はCR LF(\r\n)が正式だったと思います。 ですね。 > ただ改行が\nで不具合を起こした経験はないですし > 多分問題はないと思います。 ですね。WWW サーバ君が勝手に変換してくれます。 でも、少し前の apache ではどうやっても (\r\n を 出力しても) \n になってしまって、なんでかなぁと 思った記憶があるんですが、今やってみたら再現しない。 記憶違いか。 ところで、勝手に他人のリンク集にリンクチェック かけてしまうという、かなり無礼なページを作りました。 http://X68000.startshop.co.jp/~68user/links/ しかし、よいリンク集ってのは簡単には見付からないものだなぁ。 |
|
T.T.さん、ありがとうございました! 教えていただいた通りにビルドしたら、インストールできました!(^o^)/ ただし、CGI がなかなか表示されない問題はそのままです。まとめると、 ・普通の HTML を表示すると、すぐ表示され、流星もすぐ止まる。 ・CGI で text/plain だと(cgi-bin に入ってる TEST-CGI とか) 表示はされるものの、流星は止まらない。 ・CGI で text/html だと、表示じたい待たされる です。 \r\n問題、Connection: close 問題、KeepAlive 問題も試しましたが、無効だったようです。 あと、apachectl stop でたまに死んでくれず、そうするとapachectl start で生き返ってくれない問題がありました。 これは、apache/logs/httpd.pid が消えずに残っているせいで、手動でぶち消してやると再度生き返りましたが、 同様の問題に遭遇された方はいらっしゃいますか? ときに、T.T.さんはhello.cgiを無事動かされたそうですが、 WindowsはNTですか、98ですか? CygwinはB20ですか、v1.1ですか? 教えていただけると幸いです。 なんだか掲示板を私物化しているようで心苦しいですが、CygwinでApacheが動くと使い道があると思うので御寛恕ください。 あらためてみなさんありがとうございます。(_ _) |
|
@ふくし さん 私の環境は Windows2000 + Cygwin-1.1.4 です Cygwinを使うなら、NT系の方がいいですよ。 特に、外部プロセスの呼び出し辺りは95/98だと怪しいから... おそらく、ふくしさんの問題も外部プロセス呼び出しに起因する問題でしょう。 Windows98で作業を行いたいのであれば、割り切って使うしかないと思います。 Netscape6だと</html>までを読み込んだ時点で表示してくれるようなので、 読み込みが完了しないことさえ気にしなければどうにかなるでしょう。 |
|
うーん、そうかぁ、、。 NTも2000も持ってないし、使いたいマシンはノートなんで、 あんまりネイティブ インストールしにくいものがあるんですよね。 (ハイバネの設定とかいろんなドライバーなど、めんどくさいので、、。 メーカー、サポートしてくんないし。 最近のノートは「プロダクト リカバリー ディスク」とか入ってるけど OSのディスクじたいついてこないんだもんなー、、、) プロセスの問題というのは納得がいきますね。 ということでどうやらCygwin固有の問題でだらだらと引っ張ってきたようですね。 どうもすいません。(_ _) NC6 を入れてみます。重ねてどうもありがとうございました。 |
|
たびたびすみません。 CGIがなかなか出てこない問題で、10分ぐらいたつと表示されると書いていたのは、 ApacheのTimeoutで表示が中断させられていたということがわかりました。 Timeoutをデフォルトの300(秒)から1とかにすると、見かけ上は1秒で表示されます。(^^;;; |
|
T.T.さま> NC6試してみました。いいビルドに当たったのか、意外と安定しててビックリ。 ということで今回のソリューションとしては 「NC6でみて納得したら読み込み停止」で納得することにします。 すいません、今回の情報の公開について打ち合わせしたいことがあるので、 わたしあてに E-Mail いただけるでしょうか。お手間は取らせません。 他のみなさんも、情報をいただき大変ありがとうございました。 ここ数日でずいぶん物知りになりました。 今後もよろしくお願いいたします。 |
|
全然関係ない話題ですが、FYI ということで。 > NC6試してみました。いいビルドに当たったのか、意外と安定しててビックリ。 僕も数日間使いましたが、一度も落ちませんでした。 1998 年の末に、NC4 のコードを捨てて再出発したときは どうなることかと思いましたが、まぁよくもここまできたもんだ。 Mozilla5 の最新 Milestone は M17。Netscape Communicator 6 PR2 は、 これに Netscape 社が Plug in などの付加機能を付けたもの。 Mozilla5 は http://www.mozilla.gr.jp/download.html から自分の OS 用アーカイブを落としてきて、 % tar zxvf mozilla-*-M17.tar.gz % cd package % ./run-mozilla.sh これだけで動きます。mozilla5 は ~/.mozilla を使うので、 ~/.netscape の退避は必要ありません。 mozilla を使って http://www.mozilla.gr.jp/jlp/ を見て、 M17-langjajp-ja.xpi か M17-langjajp.xpi をクリックするだけで、 メニューなどが日本語化 (これをしなくても日本語ページは閲覧可)。 FreeBSD ユーザは (ports-current を追っかけているなら) ports で入れるのもいいでしょう。 # http://www.gnome.gr.jp/~yatt/mozilla/index.html まぁ元々重い上にデバッグ情報を吐くので、かなり重いです。 自分で build するなら HDD を 1GB くらいは 空けておいた 方がいいかもしれない。 興味を持ったなら、 http://www.mozilla.gr.jp/ からいろいろ辿って下さい。 |
|
ふくしさん 全然解決にはなってませんが、一応参考までに。 Content-Lengthヘッダ等でサイズを指定してやれば ブラウザの方で接続を切ってくれるようです。 まあ、あまり役には立たないかもしれませんが・・ |
|
> Content-Lengthヘッダ等でサイズを指定してやれば またまた全然関係ないんですけど、頭の体操でも。 お手軽に Content-length を出すにはどうすればいいかなと 考えてみて、 http://X68000.startshop.co.jp/~68user/tmp/content-length.txt というスクリプトを書きました。BEGIN と END の部分を挿入すれば、 どんな CGI スクリプトでも Content-length が出せるはずでした。 コマンドラインからだとうまく動きます。でも、web 経由だと http://X68000.startshop.co.jp/~68user/tmp/content-length.cgi と、Content-length が後に出力されてしまいます。 暇な人は原因を考えてみてください。僕は1時間悩みました。 Windows だとちゃんと動くのかもしれない。UNIX だと 動く環境もありますが、動かない環境の方が多いと思います。 |
|
>にゃさん をーホントだ(^^)。 ではじぜんに Content-length を計測して、それをはさむ仕組みを考えればいいですね。 どうもありがとうございました。 |
|
@68userさん >暇な人は原因を考えてみてください。 perlは「何となく読める」ぐらいしかわからないのですが、 考えてみました。 原因がわかったとき脱力しました(笑 |
|
@68user様 Xウィンドウでの色の扱い方についての質問です。 Xアプリケーション工房のXlib編(3)で、RGBの値を0から255の範囲で指定して いらっしゃいますが、これはどうしてなのでしょうか。 XColor構造体のred、green、blueのメンバは色のRGB値が入りますよね。 そして実際これらのメンバはunsigned shortのはずだから0から65535までの 値になるはずなのになぜ0から255の範囲で指定していらっしゃるのでしょうか。 試しに自分で簡単なプログラムを作ってみて、 同じように値(例えば"rgb:00/00/F0")をいれて見たのですが、 結果的にXAllocNamedColor後に各RGB値を見たところ、Red=0 Green=0 Blue=63420 となっていたので、きちんとunsinged shortになっています。 よって動作としては問題ないと思うのですが、どうして0から255の範囲で指定して いたものが勝手に0から65535の範囲に直されたのかがよくわかりません。 それとXAllocNamedColorの一番後ろの引数には指定した色の正確なRGB値が入る とのことなので調べたところ、Red=0 Green=0 Blue=61680 となっていました。 ということは指定した色に最も近いRGB値が入ったということなのでしょうか。 (厳密に同じRGB値になってほしいのですが) そもそも自分の環境が一体何万色中何色同時発色できるのかというのが いまいちよくわかりません。RGBの各々の強度を8ビットで表現すると 組合せとして約1677万色(フルカラーというのでしょうか)になりますが 実際はどうなのでしょう。前述のようにXColor構造体のRGBの各メンバは unsigned shortです。ということはRGBそれぞれが16ビットで表現されるので 組合せとしては大変な数になってしまいます。 また同時発色についてはカラーマップが問題となってくる(?)のでしょうか。 本には、同時に画面に表示できる色の数はプレーン数から決まる と書いてありました。で、私の使用しているディスプレイの情報を調べたところ --------------------------------------------------- *Information of Visual Class* -visual class : TrueColor -red_mask : 00007c00 -green_mask : 000003e0 -blue_mask : 0000001f -bits_per_rgb : 5 -map_entries : 64 *Other Informations* -depth :16 -the number of cells in the colormap : 64 -the number of planes : 16 --------------------------------------------------- となりました。プレーン数が16ということはカラーマップのエントリは 最大65536色まで作れる(ということは65536色同時発色できる!?)とも 思ったのですが、カラーマップのセルの数は64という情報まで出てきました。 いくらなんでも64色ということはないと思うのですが・・・。 色に関してかなり頭の中が混乱しているのですが 何卒宜しくお願い致します。 |
|
質問なのですが… 皆様はじめまして。今回初歩的な質問なのですが、 どうしてもわからなく投稿させて頂きます。 UNIXコマンドでuptimeがあると思うのですが ロードアベレージ部の1分、5分、15分のところに表示される 0.09などといった値は何を基準に表示されるのでしょうか? 申し訳ありませんがお答え頂きたく思います。 よろしくお願いいたします |
|
@hsj さん > 原因がわかったとき脱力しました(笑 僕と同じ思いをしていただいたようで、なによりです :-) @gongo さん > Xアプリケーション工房のXlib編(3)で、RGBの値を0から255の範囲で指定して > いらっしゃいますが、これはどうしてなのでしょうか。 一言で言えば X の仕様です。X(1) に rgb:<red>/<green>/<blue> <red>, <green>, <blue> := h | hh | hhh | hhhh h := single hexadecimal digits とあります。たぶん、rgb:f/f/0 = rgb:ff/ff/00 = rgb:ffff/ffff/0000 ですね。 ちなみに rgb 表記は X の色が指定できるところならどこでも使えます。 # Ex. kterm -background rgb:00/33/55 > 本には、同時に画面に表示できる色の数はプレーン数から決まる > と書いてありました。で、私の使用しているディスプレイの情報を調べたところ > -depth :16 depth って、1色ごとの bit 数じゃなかったかなぁ。 なので、この環境だと 256*256*256 で 1677万色 出…ないかなぁ。違うかなぁ。 正直カラーマップのことはわかってないので、ちょっと調べて みますが、あまり期待しないで下さい。 @YAGI さん > ロードアベレージ部の1分、5分、15分のところに表示される > 0.09などといった値は何を基準に表示されるのでしょうか? これは後ほど。というか、正しい & わかりやすい説明をする 自信がないので、誰か答えていただけるとありがたいです。 |
|
>68userさん あれー、会社のApache1.3.9と自宅に構築中のApache1.3.12は 期待通り(というか期待を裏切ってというか)Content-length:13 を返しますねー。 これって最近話題になった改○○ー○を勝手に変えてくれる問題ですか? |
|
@68user様 カラーマップについては私も調べているのですが、 どうもよくわかりません。ただ、少なくとも私の環境では ビジュアルクラスがTrueColorとなっているため カラーマップを書き換える事ができないようです。 >とあります。たぶん、rgb:f/f/0 = rgb:ff/ff/00 = >rgb:ffff/ffff/0000 ですね。 >ちなみに rgb 表記は X の色が指定できるところならどこでも使えます。 〜省略〜 >なので、この環境だと 256*256*256 で 1677万色 ということはrgbを二桁(00やF0)で表せば必ず指定した通りの色が でるのでしょうか。そうなるとなぜ四桁(FFFFなど)で表現する方法も あるのでしょうか。逆に四桁だとカラーマップにないという事態に なる確立が高まってしまうのでしょうか。 それと256*256*256というのはどこからわかるのでしょうか。 う〜ん、もう少し考えてみます。 |
|
いつもながらおかしな質問だったらごめんなさい。 perlでプログラムを作っていて、whileの中に置いたdo-whileの中で ある条件のときはlastでdo-whileを抜けようとしていたのですが、 うまくいきませんでした。 結局いろいろ調べているうちに、lastはdo-whileをループと見なして いないらしく、その外にあるwhileを抜けてしまっているということが わかったのですが、これはそういうものなのですか? |
|
@ふくしさん > 改○○ー○ ではないんです。答えを書いちゃうと - $tmp = "tmpfile.$$"; + $tmp = "/tmp/tmpfile.$$"; です。あほらしくて泣きそうです。 @has そういうものだと思います。perl では do { block } while (expr) の do は直後のブロックを実行するための命令で、 while は修飾子です。要は foo if ( expr ); と同じ形なわけですね。これはループではないので last も next も redo も使えません。まぁ、 { do { block } while (expr) } とすれば大丈夫ですが、そこまでして do〜while を 使いたいかという話になりますか。 @gongo さん > ということはrgbを二桁(00やF0)で表せば必ず指定した > 通りの色がでるのでしょうか。 じゃなくて、X の内部では RGB それぞれ16ビットだけど、 16ビット×3なんていちいち指定するのがめんどくさいだろうから、 1. ユーザは色名 (red とか) で指定できる 2. ユーザは rgb:x/x/x rgb:xx/xx/xx rgb:xxx/xxx/xxx という 簡略化した形式で色を指定できる とした、ということだと思います。どの指定方法でも XAllocNamedColor の内部で RGB それぞれ 16ビットの 色情報に展開されると。 # X のソースを持ってるなら GetColor.c あたりを # 追っかけると、展開方法はわかると思います。 > XAllocNamedColorの一番後ろの引数には指定した色の > 正確なRGB値が入るとのことなので調べたところ、 > Red=0 Green=0 Blue=61680 となっていました。 ということは、rgb:00/00/f0 は rgb:0000/0000/f0f0 に 展開されたということですね。 で、その 16ビットに展開した色情報が本当に使えるかどうかは、 カラーマップや X サーバ次第、ということです。 > ビジュアルクラスがTrueColorとなっているため > カラーマップを書き換える事ができないようです。 TrueColor だと XAllocColorCells でプライベートカラーセルを 取得できないんでしたっけ? もしできないとしたら XCreateColormap と XInstallColormap を使うんですかね (わかってない)。 > depth って、1色ごとの bit 数じゃなかったかなぁ。 これは違いました。多分。depth は1ドットごとのビット数です。 ところで、gongo さんはカラーセルを使って何をしようと 思っておられるんですか? |
|
>68userさん あそっかぁ、、ぼくはこれを動かすために cgi-bin を 733 にしました。(^^; >has さん 68user さんも書かれてますが、do の外側をさらに { } で囲むとあら不思議、 実行できるようです。 |
|
68user & ふくしさん、どうもありがとうございました。 {}でくくればいいなんて、なんか不思議な感じがします。 |
|
@68user様 > じゃなくて、X の内部では RGB それぞれ16ビットだけど、 > 16ビット×3なんていちいち指定するのがめんどくさいだろうから、 ということは二桁で表現するというのは本来0から65535なものを 大雑把にわけているということでしょうか。だとしたら大雑把に 分けているやつぐらいカラーマップに必ずあってほしいものですが・・・。 > # X のソースを持ってるなら GetColor.c あたりを こ、これってどこにあるのでしょうか。 > 取得できないんでしたっけ? もしできないとしたら XCreateColormap > と XInstallColormap を使うんですかね (わかってない)。 確かプライベートカラーセルは取得できなかったような気がします。 XCreateColormap や XInstallColormap についてはまだちょっと 詳しいことがわかりませんので本を見てみます。 > ところで、gongo さんはカラーセルを使って何をしようと > 思っておられるんですか? 色を正確なRGB値で自由自在に扱いたいと思っております。 そして最終的には色の探索をするようなプログラムを作りたいと考えております。 以前お見せしたプログラムでは中央に窓を1個、 周りに10個の窓を表示しました。 で、各窓にはいろいろな色の服を表示しました。 具体的には中央の窓の服をターゲットとして、 周りの10個の服からユーザーがターゲットに最も近いと思われる 1つの服を選び、それによってあるアルゴリズムを通して 10個の服の色のRGB値をターゲットの色に近づけるように 改善したいと考えております。 1.服の提示(各窓の描画) 2.ユーザーによる選択 3.あるアルゴリズムを通して10個の服の色のRGB値を改善 この1から3の操作を繰り返すことで、提示されている10個の服の色が ターゲットの服の色に収束していくようにしたいと考えております。 また実験段階なのでターゲットを表示しますが、 最終的にはターゲットの表示をやめ、ユーザーが心に思い描いた色へ 収束するようなアプリケーションを作りたいと考えております。 ここで問題なのは正確なRGB値を入れてもその色がカラーマップにない場合です。 近い色で勝手に代用されてしまうと、3で用意したアルゴリズムでの有効性 (いかによりよい色へどのくらいの回数で収束するかなど)を確認したいのに 別のところで収束する要因がうまれてしまうことになってしまいかねないからです。 |
|
@68user様 カラーマップの内容を知るための例みたいなのが本に載っていたので 試してみました。以下のtmp[k]はXColor構造体です。 尚、この例はRGB各32階調カラーマップのカラーセル内の表示色値を得る といったものだそうです。 ----------------------------------------------------------------------------- cmap = DefaultColormap(dummy_dpy,dummy_screen); for(k=0; k<32; k++) { tmp[k].pixel = k | k << 5 | k << 10; tmp[k].pad = 0; tmp[k].flags = DoRed | DoGreen | DoBlue; XQueryColor(dummy_dpy,cmap,&tmp[k]); } ----------------------------------------------------------------------------- で、結果的に ----------------------------------------------------------------------------- Red=0 Green=0 Blue=0 Pixel=0 Red=2114 Green=2114 Blue=2114 Pixel=1057 Red=4228 Green=4228 Blue=4228 Pixel=2114 Red=6342 Green=6342 Blue=6342 Pixel=3171 〜省略〜 Red=61306 Green=61306 Blue=61306 Pixel=30653 Red=63420 Green=63420 Blue=63420 Pixel=31710 Red=65535 Green=65535 Blue=65535 Pixel=32767 ----------------------------------------------------------------------------- といったようにPixel値が32767まできました。 ということは私の環境では 32*32*32=32768色 が カラーマップにエントリされているようです。 実際 Red=61306 Green=4228 Blue=6342 などのように 色を指定したところ、XAllocColorを通してもRGB値が 変化しませんでした。 TrueColorということでカラーマップを書き換えられないので この範囲内でうまくやりくりするしかないのでしょうか・・・。 XCreateColormap と XInstallColormap について 本を見てみましたが、まだよくわかりません。 |
|
>あほらしくて泣きそうです。 なるほど。やはりopenの返り値は常にチェックすべきなのですね。(^_^; しかし、こういうライブラリを作っておくと便利そうですね。 勉強になりました。 |
|
えっと、手短に返答をば。 @has > {}でくくればいいなんて、なんか不思議な感じがします。 そうか、よく考えてみれば、変な仕様なんだな。 でも、ちょっと試してみましたが、next/last/redo が そのまんま使えるわけでもないようで。 @gongo さん > ということは二桁で表現するというのは本来0から65535なものを > 大雑把にわけているということでしょうか。 です。ちと調べてみたところ、rgb:e/8/2 ってのは e は 14/15 なので、ffff の 14/15 = 61166 8 は 8/15 なので、ffff の 8/15 = 34952 2 は 2/15 なので、ffff の 2/15 = 8738 で、rgb = 61166/34952/8738 になるようです。 > 確かプライベートカラーセルは取得できなかったような気がします。 これはやはりできないようですね。 > こ、これってどこにあるのでしょうか。 例えば http://www.ring.gr.jp で「R6.4」などというキーワードで 探せば、http://ring.etl.go.jp/pub/X/opengroup/R6.4/tars/ に 行けます。 XFree86 など各種 X サーバというのは、(基本的には) これに X サーバの 実装を追加したものです。こっちのソースは例えばここ。 http://ring.etl.go.jp/pub/XFree86/ > 近い色で勝手に代用されてしまうと、3で用意したアルゴリズムでの有効性 > (いかによりよい色へどのくらいの回数で収束するかなど)を確認したいのに > 別のところで収束する要因がうまれてしまうことになってしまいかねないからです。 なるほど。でも、色が足りないのは根本的には仕方がないですよねぇ。 @にゃ さん >なるほど。やはりopenの返り値は常にチェックすべきなのですね。(^_^; ですね。ちなみにこれまでで一番はまったのは CGI やりはじめの頃。 open(IN,"foo |"); ってのが動かない。理由は foo が core dump してたから、ってのです。 コマンドラインからは動くし、nobody 権限で動いていたから core が できないので core 吐いてることがわからないという…。 @YAGI さん > ロードアベレージ部の1分、5分、15分のところに表示される > 0.09などといった値は何を基準に表示されるのでしょうか? FreeBSD の w(1) から引用すると、 平均負荷は、最近の1分、5分、15分間における実行キュー内の ジョブ数の平均値を表します。 です。すいませんが、わからなければ再度質問して下さい。 # これを説明し出すと長いんだわ、これが。 |
|
@68user様 いろいろありがとうございました。 >なるほど。でも、色が足りないのは根本的には仕方がないですよねぇ。 なので、カラーマップに存在する色だけを使って動くように 頑張ってみます。今後とも宜しくお願い致します。 |
|
>> なるほど。でも、色が足りないのは根本的には仕方がないですよねぇ。 > なので、カラーマップに存在する色だけを使って動くように 最初は TrueColor でも XCreateColormap/XInstallColormap で いけるんじゃないか思いました。でも、手元のサンプルプログラムが ことごとく動かないので、やっぱり TrueColor でもダメなのかと あきらめかけました。ところが、X の設定を 8bpp (depth8) に 変えて PseudoColor にしても同じくサンプルプログラムが動きませんでした。 というわけで、サンプルプログラムがダメなのか、もともと TrueColor だと不可能なのかはわかりませんでした。 ちなみに何をしたかったかと言うと、 - netscape の起動時に -install オプションを付けると、 マウスが netscape の中に入ったときだけカラーマップが 変更され、netscape だけが色を独占できる - その代わり、netscape 以外の部分の色はちょっと変になる。 - マウスを netscape から外すと、netscape の中の色が変になり、 それ以外の色が正常に戻る というようなやつです。 |
|
@68user様 > 最初は TrueColor でも XCreateColormap/XInstallColormap で > いけるんじゃないか思いました。 私も本をみて XCreateColormap/XSetWindowColormap/XInstallColormap といった感じで動かしてみようと思いましたが、うまくいきませんでした。 本の例をまねてXCreateColormapの2番目の引数(window)を DefaultRootWindowにしたがまずかったのか、実行すると窓が画面左上に出て 動かせなくなってしまいました(ウィンドウマネージャが動いていない!?)。 窓の表示位置がおかしいのはともかくとして、肝心のRGB値がどうなったかというと XAllocColorの後にやはり近い値に置き換えられたと思います。 しかも、プログラムを終了して、そのプログラムを書き換えようとmuleで 開いたらmuleが勝手に画面左上に行って動かせなくなってしまいました。 で、あわててXUninstallColormapをプログラムに書き加えて 再度実行したら元の状態に戻りました。 う〜ん、難しいです・・・。 それとちょっと思ったのですが、showrgbで表示される全ての色は本当に カラーマップに存在するのでしょうか。結構数値が細かく変わっている ところもあるので、本当にあるのかなぁと疑問に思いました。 それとも256*256*256を本当に表示できる環境を想定して 細かく用意されているのでしょうか。 |
|
>68user様 レスありがとうございます。 大体のイメージは浮かぶ事が出来ました。 ただ、また質問となってしまうのですが、 その数値(0.01)はどれくらいの値になっていれば 高負荷がかかっているといえるのでしょうか? やはり、1.00以上だと高負荷なのでしょうか? |
|
以下の説明には多分何個・何十個もの嘘がありますが、「ここは 嘘かもしれない」と注釈を付け出すと、全部に注釈を付けるはめに なるので、略。ツッコミは歓迎します。 まずは基礎知識。 プロセスにはいくつかの状態がありますが、簡略化して、以下の4つを考えます。 実行状態 … まさに CPU がそのプロセスの処理をおこなっている状態 実行可能状態 … CPU は同時に複数の処理をできないので、CPU が現在 実行しているプロセスの処理を終えるまで待っている状態 入出力待ち … ディスクに書き込む/読み込む命令を出した後、ディスク コントローラからの「終わったよ」という知らせを 待っている状態 sleep 状態 … sleep を使っているか、デバイスやソケットを見張っている (listen や select や read している) が、まだデータが 届いていない) 状態 プロセスは必ず上記のうち1つの状態を取ります。 さて、本題。 load average というのは、ある瞬間の「実行可能状態のプロセスの個数」 の平均です。個数ですから整数なんですが、平均を取るので、0.12 などと いった小数になります。 例えば 0:00:00 の時点での実行可能状態のプロセス数が3 0:00:01 の時点での実行可能状態のプロセス数が0 0:00:02 の時点での実行可能状態のプロセス数が1 なら、load average は 4/3 = 1.33 です。これは3秒間だけプロセス数を 数えましたが、最近1分、5分、10分のそれぞれのプロセス数の平均を 取ったものが、top や uptime で表示される load average です。 つまり、 - load average が 1 なら、常に CPU が何かしらの処理をしている。 CPU が遊んでいる時間がない。 - load average が 1 未満なら、実行可能状態のプロセスがない 瞬間がある。その間、CPU は遊んでいる。 - load average が 1 超なら、実行可能状態のプロセスが多く、 待たされているプロセスがある。 ということです。 # あくまでも平均なので、本当はそうでない瞬間が多くあるでしょう。 だからといって、1 を閾値 (いきち) として負荷が低い/高いと 言っていいかというと、多分違うと思います。 なお、 A.「変数を1ついじくって 1秒 sleep する」という処理を永遠に繰り返す というプロセスと、 B.「変数の内容を1増やし続ける」という処理を永遠に繰り返す というプロセスでは、負荷が全く違います。 A は、実行可能状態から実行状態に移ると、変数を1ついじくって、 すぐに sleep 状態に入ります (実行可能状態でなくなる)。1秒経つと 再度 実行可能状態に移ります。 B は、実行可能状態から実行状態になると、変数の内容を1増やし 続けます。一定時間が経過すると、カーネルが強制的にプロセスを 実行状態から実行可能状態に戻します。 B のようなプロセスを実行すると、load average は大体 1 だけ 上がるはずです。なぜなら、B のプロセスは入出力待ちも sleep も しないため、「常に実行可能状態になり得るプロセス」だからです。 たとえば C でもシェル上でもいいので、無限ループするだけの プログラム % while (1) while ? end を実行すると、load average が大体 1 上がり、もう1つ同じのを 実行すると さらに 1 上がるでしょう。 |
|
つかぬことをお聞きしますが,"リンク集のリンク集"のSSIはいつ動作するようになるのでしょうか。 |
|
おろ、いつのまにか止まってやがる (笑)。というか、SSI が効いてないのか…。 ウチに帰ったら直します。御指摘どうもです。 |
|
> SSI が効いてないのか…。 8/28 AM8:30 ごろから5時間ほど、SEGA BBS の過去ログの CGI に 199.172.149 あたりから怒涛のアクセスがあったようです。 apache のログを見ると、500 エラーが 9000件ほど記録されてました。 # トップページのカウンタも、壊れてもうた。 どうもそれ以来 apache の動作がおかしく、一部のページで SSI が 動作していないようです CGI 側で同時起動の制限が必要なのかもしれませんね。 ま、こういうこともあるということで。 |
|
皆様 始めまして。 ともと申します。 UNIX暦 3ヶ月の超初心者です。 スクリプトを書いておりますが、そのスクリプトのあるステップでどうしてもユーザーをスイッチしなくてはいけない事になってしまいました。 現在 su コマンドを使ってその部分だけわざわざパスワードを入れて、またスクリプトを実行するという 2スクリプト制になってます。 もしユーザーの変更も自動的にスクリプト上でできればとても楽なんですが、よい方法ありませんでしょうか? 当分はスクリプト自体にパスワードをハードコードしてもいいと思ってます。 どなたか お知恵をお貸しください! とも |
|
最も簡単なのは root 権限でスクリプトを動かし、適時 su で 特定のユーザ権限を得るか、su username command とすることです。 それが無理なら、suid なプログラムを作ればよいです。 http://X68000.startshop.co.jp/~68user/unix/pickup?setuid > 当分はスクリプト自体にパスワードをハードコードしてもいいと思ってます。 su は端末 (/dev/tty) からパスワードを読もうとするので、 標準入力などからデータを流し込むことは不可能です。 |
|
> 8/28 AM8:30 ごろから5時間ほど、SEGA BBS の過去ログの CGI に > 199.172.149 あたりから怒涛のアクセスがあったようです。 今日も同じ時間帯に同じところから。うっとうしいのので、 SEGA BBS の CGI をしばらく止めます。 ところで、またカウンタが壊れました。/var/log/messages を 見るに、オープンしたファイル数が OS の最大値を越えたため だと思われます。 # よく見ると、カウンタで open のエラーチェックを # 全くしてなかった。そりゃ壊れるわな。 > su username command とすることです。 su username -c command でした。 |
|
シェルを創っているのですがSyslog(/var/log/messages) にログを出力したいのですがコマンドでできないのでしょうか?教えてください。 よろしくお願いします |
|
以前から気になっていたことなんですが、 NTじゃなく一般のWindowsがTCP上で行っているサービスには、 どんなものがあるんでしょうか。 もし知っておられたら教えて下さい。 また、こういった類の情報はどうやったら入手できるものなのか、 よろしければあわせて教えて下さい。 |
|
眠い。ので、手短に。 netstat -a とか。少なくとも Win98 にはあります。 標準では netbios 関係くらいしか listen してないと思います。 logger(1) など。 |
|
「httptalker(http-client)について」 とてもわかりやすいサイトで unixでいろいろできるんだなぁ、と感心してます 使い始めて三ヶ月位です(vinelinuxを使ってます httptalkerでうまくget出来ないところがあるので 質問させてください httptalker.pl -getに続けて 1:news.yahoo.co.jp/headlines/top/ 2:username.hypermart.net/hoge/huga.html この二つに関してですが1,2とも wgetでは問題無く取れますが httptalkerでは404や「そのページは存在しない」 となります。サイトにある telnetでgetする方法だとでは1のみ問題無し 2ではやはり404となります 何か別の(httpdなどの)知識 が必要なのでしょうか? 何かアドバイスがあれば よろしくお願いします |
|
> なむさむ さん うーむ、ハイマは、バーチャルホストがなんたら.. Host: username.hypermart.net(CRLF) つければいいのかな。。 |
|
>やままさん アドバイスありがとうございます バーチャルホストについて勉強してみます 確かにhost付けてなかった・・・ ところで(CRLF)っていうのは \r\nとか、そんな意味ですか? |
|
バーチャルホストについては。 http://x68000.startshop.co.jp/~68user/net/http-4.html ここにあったよ。 CRLFはUNIXなら\r\nでいいみたいです。 |
|
hypermart は Host ヘッダです。 > 1:news.yahoo.co.jp/headlines/top/ こっちは yahoo の WWW サーバが悪いです。 WWW サーバの返すヘッダとボディの間のセパレータが CR LF LF (もしくは CR LF で、最後の LF はボディの 一部かもしれない) となっているので、httptalker が ボディ部もヘッダの一部だと解釈しています。 まぁ、セパレータが CR でも LF でも CR LF でも 認識できるようにするのがダウンローダとしては正しい道でしょう。 |
|
su についてのご返答ありがとうございました。 早速挑戦してみます。 |
|
あ゛・・・きちんと読んでなかった 取り敢えずhost付けてやってみたら 上手く行きました yahooの方はちょとむつかしくて ヘッダーの役割とかがいまいち解ってないので、 もう一度きちんと読んでからやってみます 取り敢えずありがとうございました |
|
@68user > netstat -a とか。 > 標準では netbios 関係くらいしか listen してないと思います。 なるほど、どうもありがとうございました。 |
|
ところで やままさんへ。 1時間に一度くらいこのページにリンクチェックをかけておられる ようですが、このページは Last-modified を GMT で出しています。 しかし、そちらのページでは JST として扱っているようで、 常に 9時間前に更新されたものと見なされています。 |
|
はじめまして、カワエといいます。今受験生です。 私は将来プログラマーになりたいのですが、PCを買ってまだ半年、まともに触ったこともない超初心者です。 プログラマーの具体的なことについても知らず、ネットで検索したりしているのですが、 他の掲示板で「大変だ」「引退が早い」「プログラミングは趣味にしておくべきだ」等の発言をよく見ましたが、実際のところどうなのでしょうか? それと、やはり女性差別があったりするのでしょうか? 68user様、プログラマーの方、教えてください。 |
|
あらら、進路相談ですか。 ゲームプログラマになりたいのなら、ここより http://www.lares.dti.ne.jp/~yagiyama/ で聞くのがいいでしょう。 でなくて、いわゆる SE を目指すならば http://village.infoweb.ne.jp/~watany/selink/index.htm を読むといいかもしれません。 僕は一応 SE ですが、社会人一年目なので、軽々しくアドバイス するのはやめておきます。 |
|
有り難うございます。 では、そっちに行ってみることにします。 |
|
すみませんが、HPの紹介をさせてください。 ゲーセンはゲーマーだけの物って誰が決めた!! もっとゲーセンを楽しもう!!をテーマに ゲームセンターのゲームをゲーマーのみならず カップルや女の人も楽しめるように、 情報をセレクト&紹介するページです。 内容は音ゲーの手ほどきや僕のホームグラウンドの ゲーセンの最新機種入荷情報などです。 是非おいでください。 この書き込みが掲示板の意に反する内容でしたら、 お手数ですが削除してください。 |
|
はじめまして。 インフォシークからとんできました。 今、一生懸命UNIXのことを書いたHPを作っています。 ここに書いてあることがとっても役立ちました。 また参考にさせていただきます。 学校でunixを使っていて、けっこうはまってきました。 家はまだウィンドウズですが・・・ もしよろしかったら私のHPにも足を運んでください。 けっこう頑張って勉強しています。 |
|
> 今、一生懸命UNIXのことを書いたHPを作っています。 ほほぅ、一番オジサンっぽいコマンドが cal ですか (笑) 僕は cpio と vi じゃないかと思います。なんとなく。 |
|
@68user様 どうも、gongoです。 Xウィンドウ・システムのことで質問があります。 以前見ていただいたプログラムなどで画面に表示される窓を なんらかの形で保存して、texなどにはりつけたいと考えております。 そこで画面を保存するにはどのようにしたらよいのでしょうか。 xwd というコマンドを用いると窓の内容を保存できるようなのですが 自分の環境ではこの方法で保存した .xwd ファイルを xv で 表示しようとすると真っ黒になっていました。 で、他のマシンでもやってみたところ、中には窓を取り込めるものも ありました。しかし、そのマシンだと今度は以前見ていただいたプログラムが 期待通りに動きません(カラーマップのインデックスがすくない模様)。 自分のマシンと xwd がうまくいったマシンでは OSは一緒です。 ちなみにOSはFreeBSD 2.2.8Rです。インストールした人間が違うので ひょっとすると何かX関連で細かい設定がまずいのかもしれませんが そこら辺の確認の仕方もよくわかりません。 なにか良い方法はないでしょうか。 また xwd 以外に窓を取り込む良い方法はないでしょうか。 よろしくお願い致します。 |
|
@68user様 度々すみません、gongoです。 >また xwd 以外に窓を取り込む良い方法はないでしょうか。 自分で書いておいてあれなのですが、xvの機能でGrabというのが あるようなので試してみます。 |
|
> 自分の環境ではこの方法で保存した .xwd ファイルを xv で > 表示しようとすると真っ黒になっていました。 原因や正しい回避方法は知りません。ただ、display や xwud で 見ると正しく表示されるので、僕は特に困ってないです。 おそらく xwd 形式で保存しておく必要はないのではないでしょうから、 (TeX に貼るということなので) % convert foo.xwd foo.eps しておけばいいでしょう。 > xvの機能でGrabというのがあるようなので試してみます。 あと、import ってのもあります。display, convert, import は ImageMagick に含まれています。 |
|
@68user様 xvのGrabで保存でき、表示もうまくできました。 >% convert foo.xwd foo.eps こちらについても試させていただきます。 >ImageMagick に含まれています。 このImageMaickというのは何なのでしょうか。 標準でインストールされるもの(?)なのでしょうか。 何はともあれなんとかTexにはれそうです。 ありがとうございました。 |