> Windows で mkdir が失敗するとは初耳ですが、本当でしょうか? > どういう風に書いてるんですか? 申し訳ありません、気を取り直してもう一度試してみるとうまくいきました(^^; と言うかmkdirで失敗する現象が再現しません。 またWindowsのファジーさにやられた気がする・・・ お騒がせしました。 一応、 mkdir "./dir", 0604; と言う感じで書いてます。 以前はエラーメッセージは出ないものの、ディレクトリが作成されていない と言うような状況でした。 > それはそれとして、perl5 なら深い階層のディレクトリを > 一発で mkdir してくれる File::Path という標準モジュールが おぉ、見てみます。 ありがとうございます。 と、言うわけで、失礼しました。 |
先日はジンソクな対応ありがとうございました。 grep について質問なのですが、analog で apache のログを解析するとき /member/ 以下が邪魔なので grep などにて `/member/' の文字が入った行を 取り除きたいのです。が、マヌアルを見てもそれらしきオプションが見当たりません。 もしなにか方法があったら教えてくださいませ。 |
grep -v /member/ filename でいいですか? |
> grep -v /member/ filename あ〜〜〜〜できましたわぁ〜〜感謝感激 よく読んでなかったですね… ありがとうございましたー |
はじめまして。 「他では役に立たないスクリプト&ファイル」のうち、 nslookup.cgiは、他の方のものと比べ複数入力が可能な点でいいなと思い、 何とかこちらの環境でも使えるように試行錯誤したのですが、 結果表示の際に「ホスト名」「IPアドレス」と表示されるべき部分が、 うまく表示できません(ナカグロ=黒点になる→文字化け?)。 実質的な実りの部分は全然問題ないのですが。 ソース中、put_data のサブルチに渡している引数だと思いますが、 $desc のローカル変数部分の文字化けが絡むのでしょうか。 Windowsの環境でメモ帳などでつくるため、nkfのオプションは -s に しました。nkfより遅いと言われる jcode.pl も試しましたが不発でした。 あるいはやり方(書き方)が間違っているのでしょうか、 何かアドバイスをいただければ幸いです。 |
> 結果表示の際に「ホスト名」「IPアドレス」と表示されるべき > 部分が、うまく表示できません 余計な部分をどんどんコメントアウトしていって、 実質 print "ホスト名\nIPアドレス" だけのスクリプトに しても化けますか? またヘッダを Content-type: text/html; charset=Shift_JIS Content-type: text/html; charset=ISO-2022-JP などと出力して、ブラウザに明示的に文字コードを伝えても ダメですか? それでもダメならソースそのものを見せて下さい。 # どこかにそのまま置いてもらえると、文字コードなどが # わかるので調べやすいです。 > $desc のローカル変数部分の文字化けが絡むのでしょうか。 ということはないと思います。 > Windowsの環境でメモ帳などでつくるため、nkfのオプションは > -s にしました。 nkf は、CGI の出力を JIS にするために使っているだけです。 ・スクリプトを SJIS にして、出力も SJIS ・スクリプトを EUC にして、出力も EUC などという場合は、nkf は不要です。 |
はじめまして、yujiといいます。 たびたび参考にさせていただいています。(^^) アクセス状況チェックでは、1時間おきに更新されていますが、 これは、どのようにして定期的にプログラムを 実行させているのでしょうか? サーバー上では、cronが利用できると思うのですが、 プロバイダのほうで提供されてたりするのでしょうか。 それとも他のサーバー上で実行されているのでしょうか。 あと、linux上でPerlを書いているのですが、 LANカードとPPP接続を行った場合に、gethostbyname, inet_ntoa(inet_aton())のどちらを使ってもLANカードの アドレスが取得されてしまうのですが、 PPP接続のアドレスを取得する方法というのは、なにか ありますでしょうか? ifconfigでpppの部分だけ切り出そうかとも思ったのですが、 exec('ifconfig''); の出力をどうやって拾うのかがわかりません。(^^; なにかアドバイスなどありましたら、どうぞよろしくお願いします。 |
> アクセス状況チェックでは、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 を再送、という挙動をすると思います。 申し訳ないのですが、このあたりは、まだよくわからないので、確かめられません。 今後の課題・勉強材料とさせてください。 |