|
質問です。CGIプログラムから別のCGIプログラムは実行できますか? リンクチェッカーをCGIで作ったのですが、ブラウザ上から実行できる ようにしようと思ってボタンを作ったのですが、全くだめでした。 誰か知っている人がいたらおしえてください。お願いします。 |
|
>>1701 TK > 質問です。CGIプログラムから別のCGIプログラムは実行できますか? 情報が何も書いてないので、できます、としか言いようがないです。 |
|
以前に 4-stable は不安定と言いましたが、 最近は安定していますね。少なくともうちでは安定しています。 新しいデバイスドライバ試す程度なら、大丈夫でしょう。 ただし、2/1 から 2/4 までの間のソースは ipfw にバグが あるのでその期間のソースからはビルドしない方が良いです。 |
|
>>1703 rosegarden > 以前に 4-stable は不安定と言いましたが、最近は安定していますね。 もう SNAPSHOT ってなくなったんでしたっけ。freebsd-stable も 流し読みなので (読まずに捨てているとも言う)、最近は恐くて cvsup できません。 |
|
はじめまして。 Sakiikaと申します。 長文失礼します。 このたび、UNIX_Cを触ることになってHPを参考に させていただいているのですが、ライブラリルーチンの opendirを使ったプログラムを書いたのですが、 while ((dir = readdir(dp)) != NULL ){ でコンパイラエラーが出てしまい、うまく動作しませんでした。 原因を調査したところ、 struct direct *dir; を struct dirent *dir; に変更したら動作するようになりました。 これは、UNIX環境によって、 struct directとstruct direntの2つが定義されているのでしょうか。 初歩的な質問ですが宜しくお願いします。 |
|
>>1704 68user >もう SNAPSHOT ってなくなったんでしたっけ。 いや、まだあります。ただここ数日ビルドに失敗していますね。 したのは jpSNAP からのログです。 >===> etc/sendmail >rm -f freebsd.cf >(cd /usr/src/etc/sendmail && \ > m4 -D_CF_DIR_=/usr/src/etc/sendmail/../../contrib/sendmail/cf/ \ > /usr/src/etc/sendmail/../../contrib/sendmail/cf/m4/cf.m4 \ > freebsd.mc ) > freebsd.cf >chmod 444 freebsd.cf >+ touch /.buildworld_done >+ tar cyf /4.2-STABLE-20010205-JPSNAP.tar.bz2 -C /usr/obj . >tar: can't exec bzip2 : No such file or directory >release releng4 ends at 2001/02/05 04:32:32 これ見ると、make buildworld は成功しているようです。ただ、 /usr/obj のパック(これは通常 make world する際には関係ありません。 jpSNAP サービス独自の処理でしょう)に失敗しているだけです。 これはメールしておきました。 >freebsd-stable も流し読みなので 最近はとくに留意する点はありません。昨年暮れと同様の方法で make world 出来ると思います。一方 -current はちょっと、devfs がデフォルトで 採用されるようになったので、devfs 関係の記事を追ってないと 辛いかも知れません。ま、辛いとは言っても、ないデバイスは rc.devfs の 中でシンボリックリンク張れば良いだけですが。 |
|
雪ん子と申します。 初めて質問させていただきます。 CGI初心者ですが、参考書とWEBを参考にデーターベース(検索)なるのを 作成しています。 データはCSV形式で作成しており、ある条件に合致したものを表示する ようにしています。 表示されたものにはリンクを貼りそれぞれのページを表示するように しました。 しかし、情報が更新になる度に、リンク先のページのhtmlとデータの CSVファイルの両方を更新しないといけないという二重でまになって しまいます。 そこで、直接データベースからデータを引っ張り出して、リンク先の ページを作成することは可能でしょうか。 因みに、こちらにテスト環境があります。 http://www.oitamirai.co.jp/cgi/search.html |
|
プロセス間で共有できるメモリの使い方を教えてください。 (システムコールshmget、shmat、shmdt以外で。) |
|
>>1705 Sakiik direct は dirent の typo です。こういうときは、man readdir しましょう。正しい引数の数、型、戻り値、必要な include file などの情報が書いてあります。 >>1706 rosegarden ああ、なるほど。http://www.jp.freebsd.org/snapshots/ ですね。 僕の言った snapshot は、 「stable の中で、比較的安定していた時点のものにタグを打ったもの」 という意味だったのですが、昔はそういうのがありません でしたか? (記憶違いかな…) >>1707 雪ん子 > 表示されたものにはリンクを貼りそれぞれのページを > 表示するようにしました。 テスト環境ではリンク先に飛ぶことはできないのですね。リンク先の HTML がどれだけの情報を含んでいるのか判断できないので、どういう ふうにするのが最適なのかはわかりません。 とりあえず検索時に必要なデータと、リンク先にあるデータを全て 1つの CSV に突っ込んで、検索も表示も両方とも CGI でやってみては どうですか。 # というような回答でよいのかな? >>1708 はじめ > プロセス間で共有できるメモリの使い方を教えてください。 > (システムコールshmget、shmat、shmdt以外で。) shmget、shmat、shmdt 以外に共有メモリと呼ばれるものは 存在しないと思うんですが、もしかしてあったりするんでしょうか。 |
|
>>1709 68user > 僕の言った snapshot は、 > 「stable の中で、比較的安定していた時点のものにタグを打ったもの」 > という意味だったのですが、 ああ、そういう意味でしたか。失礼しました。 そうなるとちょっと分かりませんです。すみません。 |
|
>>1708 はじめ mmap(2)は共有メモリと呼べるかもしれません(現象的には共有ファイルになりますが)。 共有するには実ファイルが必要なことと、排他制御があるわけではないので、ひとつだけが書き込み、残りプロセスは読み込み専用、という場面でしか使えないかもしれませんが。 > direct は dirent の typo です。 Unixの生き字引みたいに、ここで名前は挙げられませんが、struct directがあるUnixはあったんじゃないですか? |
|
>>1711 gixs >Unixの生き字引みたいに、ここで名前は挙げられませんが、 > struct directがあるUnixはあったんじゃないですか? 言われて見れば、そんな感じしますね。 ちなみに FreeBSD の sys/dir.h みたらこんなのありました。 /* * Backwards compatibility. */ #define direct dirent #define DIRSIZ(dp) _GENERIC_DIRSIZ(dp) |
|
FreeBSD3.2を使用していますが,ノートのPCカードのSCSIでCD−ROMを認識させたいです.カードはIODATAのPCSC−Fを使用しています. |
|
>>1713 nori > FreeBSD3.2を使用していますが, FreeBSD 3.2-RELEASE は以前に使っていたのですが、その IODATA のカードって新しいのでしょうか? 新しいとしたら、絶望的です。 3.2-RELEASE で PC card 類を使うには、PAO patch あてないと 無理だと思いました。もっとも、カードの抜き差しをあきらめることにして 起動時の userconfig や visualconfig 使えば、とりあえず 認識させることは出来ます。irq とか io アドレス類を指定すれば 無理矢理に使うことは場合によっては出来ます。 ただし、CD-ROM ドライブ使うごとに shutdown/boot の繰り返しになりますが。 それに、3.2-RELEASE 用の patch が今でも手に入るかどうか謎です。 都合もあるでしょうが、システム自体アップグレードするのが一番です。 3.2-RELEASE だと、fix されていないセキュリティホールも多いし、 (リリースされた後に発見された security hole のことです。) 3.2-RELEASE がでた当時の PAO patch じゃ USB デバイスの対応も そんなに進んでいません。 (それとも RELEASE independent にパッチを当てられるのかな?) もっとも、pccard のデータベースを自分で編集して使えるように することは出来るでしょうし、以前にそれで乗り切った経験もあります。 しかし、トータルで見ていまさら、3.2-RELEASE なんて使うこと自体 お勧めできません。だいたい、ports なんかもほとんど使える状態じゃないし、 ports tree を更新したとしても、upgrade kit をインストールしないと 使えません。 よほどのマニアか腕前のある人でない限り 3.2-RELEASE はお勧めできません。 # でた当時は、何もかも、画期的で、安定していて、素晴らしかったんですが、 # 時間の推移というのは恐ろしいものです。 |
|
>>1711 gixs > struct directがあるUnixはあったんじゃないですか? それは知りませんでした。確かに 386BSD 0.0 では direct ですが、 http://www.freebsd.org/cgi/man.cgi?query=opendir&manpath=386BSD+0.0&format=html 4.4BSD Lite2 では dirent になってますね。 http://www.freebsd.org/cgi/man.cgi?query=opendir&manpath=4.4BSD+Lite2&format=html 参考: BSD の系譜 http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/share/misc/bsd-family-tree?rev=1.38 |
|
>Readdir ありがとうございました。 私の使用しているものでは、 struct dirent *readdir_r(DIR *dirp, struct dirent *entry); でした。 日本語のヘルプとして参考にしたものも同じく、direntでした。 調べ方が足りなかったようです。 ありがとうございました。 参考にしたページ。 http://www.linux.or.jp/JM/html/LDP_man-pages/man2/readdir.2.html |
|
>>1709 68user 早速の回答、ありがとうございました。 >テスト環境ではリンク先に飛ぶことはできないのですね。 私のミスでした。リンクを貼るためのソースが欠落していました。 http://www.oitamirai.co.jp/cgi/search.html >とりあえず検索時に必要なデータと、リンク先にあるデータを全て >1つの CSV に突っ込んで、検索も表示も両方とも CGIで 検索結果後のリンク先の表示体系は基本的に全て同じとし、店舗名や 住所の所のみを変更するようにしたいと考えています。 そこで、検索結果に表示されるものからのリンク先へのリンクの させ方と言うか表示をさせる時のCGI(引数?)がよく分かりません。 データベースから検索結果を表示させるまでは何とか自力で出来ま したがその後の処理がうまく出来ません。 お力添えをよろしくお願いします。 |
|
>>1717 雪ん子 おすすめは、search.cgi が 《検索結果》 3 件検索しました <a href="pickup.cgi?shopid=1>●1号店</a><br> <a href="pickup.cgi?shopid=3>●3号店</a><br> <a href="pickup.cgi?shopid=11>●11号店</a><br> というような出力をして、pickup.cgi 側は QUERY_STRING を 解析し、shopid を取得する。それに従って CSV から該当する 行を抽出し、それを出力する、というものです。 |
|
始めまして ちょっと質問して良いでしょうか? perlでtime()等が有りますが、これだとコンマ何秒の数値が取得できないですよね? 相対的な速度を計算したいんですが何かいいモジュールが有りましたら教えてください 検索エンジン等色々探して見たんですが見つかりませんでした |
|
>>1719 hiroshi 試してませんが Time::HiRes というのがそれっぽいです。 http://www.cpan.org/modules/by-module/Time/ http://www.engelschall.com/ar/perldoc/pages/module/Time::HiRes.html (*1) > 検索エンジン等色々探して見たんですが見つかりませんでした http://www.google.com/ で「perl time usec」で調べると 一番目に *1 のサイトが引っかかりました。 |
|
あ、即レスすみません ちょっとキーが思い当たらなかったですね perl time 時間関数 なんてやってたんですけど さっそく組み込んで見ます それでは今後ともよろしくお願いします |
|
($seconds, $microseconds) = gettimeofday; この部分がそうみたいですね 今ちょっと試してます |
|
私は細かい字が見えないのでUNIXを使うときに困っています. ウィンドウズは簡単にフォントの大きさを変えられますがUNIXでフォントの大きさを変える方法がわかりません.xterm,ktermにフォントのオプションがあるようですが,どのフォントが適しているかわかりません. 単に大きくなればよいです.全体的に大きくなる簡単な方法はないでしょうか? NETSCAPE(3.x)は設定するところがありますが,私の場合アルファベットが小さくてなぜか真っ黒になっていて見えませんどうしてでしょうか? |
|
あと,Xウィンドウをインストールして立ち上げても~/に.XdefaultsなどのXの設定ファイルがありません.どこにあるのでしょうか? NETSCAPEのアルファベットが小さいのは解消されました.しかし,リンク部分などが真っ黒に塗られているのは解消できません. |
|
xterm,ktermのフォントの大きさを変えることができました. またわからないことがでてきたのですが,cshからtcshにログイン時に変えたいのですがなんかコマンドがあった気がします.忘れてしまいました. |
|
>>1718 68user 68userが言われるようにしたところ、受け側のCGIの QUERY_STRING で 渡った項目を取得することが出来ました。 あとは、受け取った項目をもとに検索表示する機能を作成したいと思います。 ありがとうございました。 |
|
>>1725 のり > xterm,ktermのフォントの大きさを変えることができました. 自己解決したとしても、掲示板に書き込んだ以上は 何をどうしたらうまくいったかを簡単に書きましょう。 > cshからtcshにログイン時に変えたいのですがなんかコマンドが > あった気がします.忘れてしまいました. passwd -e や chsh など。OS によって違います。 |
|
>> xterm,ktermのフォントの大きさを変えることができました. > 自己解決したとしても、掲示板に書き込んだ以上は > 何をどうしたらうまくいったかを簡単に書きましょう。 のり氏ではないですが。 単にコントロールキー+右クリックに気づいただけでしょう。 # 論点が掲示版での礼儀作法なら、部外者なのでノーコメント。 |
|
始めまして。 earthlinkのFTPツールで問題が発生したため、やむなくホームページ用データのアップロードをDOSプロンプトで行うことにしましたが、mput の確認を はずす方法がわからなくて困っていました。 Yahoo!で検索したところこちらのマニュアルを見る事ができたので 大変助かりました。どうもありがとうございました。 クロ |
|
はじめまして。 ソケット通信についての質問ですが、 クライアントとサーバの間の回線が何らかの障害によって切れた 場合、それを知る方法を教えてください。 会社ではポート情報を取得すればいいと言われたのですが よろしくお願いします |
|
68userさん,他の皆さん,こんばんは。 さて,ローカルでメーリングリストの過去ログを閲覧するための便利なツールはないでしょうか。 今はメーラ(Becky)に取り込むことを考えていて,展開・取込スクリプトも完成したのですが,まだ本番の作業に移っていません。 この方式での閲覧には難点が幾つかあって, (1) 1,000メール程度ごとに分割しなければ表示が遅くなるので,スレッドがつながらないことがままある。 (2) Plain Textで保管されるのでディスク容量が圧迫される。 (3) メモリが少ないことも影響してか,はたまたWindows上でのtar操作だからか,ログアーカイブの展開・取込に異常に時間がかかる。(これが本番の作業に至っていない理由。) 理想を言えば,あらかじめインデックスを作成しておき,閲覧分だけ逐次展開するツールがあれば便利なのですが,あるのでしょうか。Windows使いなので,Windows(含DOSプロンプト)か,cygwinか,perl・ruby等で動作することが条件です。ローカルhttpサーバを立てることも可能です。 情報調査力の足りない私にどんなことでもご教示いただけるなら幸いです。 |
|
お世話になります。 uptimeをcronで動かしてマシン負荷を記録するスクリプトを作りました。 ところが生成されたログの起動時刻が同じ時間になってしまうという 状態がみつかりました。 ログ生成スクリプトの該当部分(bashスクリプト) export LOAD=`uptime` 〜処理〜 echo $LOAD >> $LOG ← ログファイル 生成されたログの一部 12:59am up 11:36, 1 user, load average: 0.00, 0.00, 0.00 1:00am up 11:37, 1 user, load average: 0.00, 0.00, 0.00 1:00am up 11:38, 1 user, load average: 0.00, 0.00, 0.00 1:02am up 11:39, 1 user, load average: 0.00, 0.00, 0.00 これは1秒未満の実行タイミングの誤差から来ているのでしょうか? もしそれが原因ならば、起動時に数秒waitを掛けてからuptimeを実行 することでこの現象を回避できるでしょうか? cronは毎分実行にしていますが、毎回起こるのではなく1日の内1〜2 度程度、多分負荷の掛かっている時刻の0分に記録されているようです。 ぜひご意見をお聞かせください。 |
|
>>1731 CZ > さて,ローカルでメーリングリストの過去ログを > 閲覧するための便利なツールはないでしょうか。 有名どころでは mhonarc がありますね。こんなの。 http://his.luky.org/ML/linux-users.5/msg05835.html ただ、個人的にはあのインタフェースは大嫌いなので、mhonarc を 使うのなら自作します。前準備としては - 各メールの Subject、From、Date、Message-Id、In-Reply-To を拾い、DB 化 - Date 順 (あるいは X-Sequence 順) に In-Reply-To がないメールはツリーの起点メール In-Reply-To があるメールは他のメールの子 として、ツリー構造を作成 (1ツリー=1ファイルにする。遅いかな?) - Date 順 (あるいは X-Sequence 順) で、月ごと (100通単位) のツリーの起点 一覧をリストアップ とし、閲覧時に CGI で - 指定された月 (指定された 100通) のツリーの起点一覧を表示しつつ、 対応するツリー表示 てなところでしょうか。 # って、自分で作る方法を聞いておられるのではないような気もしますが。 出来合いのものを使うなら Java House のが好きですが、 http://java-house.etl.go.jp/ml/archive/j-h-b/037476.html これって配布されてるものなんでしょうか。 > tar操作だからか,ログアーカイブの展開・取込に異常に時間がかかる。 tar は、先頭のインデックスを見て、目的のファイルが何バイト目から 始まるかを知ることができません (違ったっけ) ので、ランダムアクセス には向きません。圧縮しないなら、100通単位でディレクトリを掘って 1メール=1ファイルにしておく方が案外速かったりするかもしれません。 >>1732 すな > uptimeをcronで動かしてマシン負荷を記録するスクリプトを作りました。 > ところが生成されたログの起動時刻が同じ時間になってしまうという > 状態がみつかりました。 とりあえず date で秒単位まで記録して、何秒に実行されているか 調べてみてはどうですか。cron は、0秒きっかりに実行してくれる 保証がなく、結構ばらつきがあるのかもしれません。 で、もし重くて遅れがでてしまうなら、それはそれで仕方がない のかもしれません。 >>1730 purine > クライアントとサーバの間の回線が何らかの障害によって切れた > 場合、それを知る方法を教えてください。 物理的な切断については http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=1299-1302 てのがありますけど、一般的には http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-2.html#ss2.8 ですね。 |
|
> とりあえず date で秒単位まで記録して 確かにそのとおりですね。 で、早速そのようにして観察した所1時間もしないうちに、やはり前 後1秒程度の誤差が確認されました。 +1秒の時はいいのですが、-1秒の時は「xx:59:59」などとなってしま いますので、負荷が高い時を考えて5秒程度 sleep をかます事で対 処してみます。 ありがとうございました。 cronは結構誤差があるものなのですね。 今後cronを使うときの参考になりました。 関係ない話題ですが 午前0時と正午の表記は 00:00pm という表 記が正しいと思っていましたが、uptimeの出力では、12:00am と 12:00pm と表示されるのですね。 |
|
>>1733 68userさん お返事ありがとうございます。 > 出来合いのものを使うなら Java House のが好きですが、 > http://java-house.etl.go.jp/ml/archive/j-h-b/037476.html > これって配布されてるものなんでしょうか。 私もなかなか閲覧しやすいと思います。「Underconstruction」なのが残念ですが。 > tar は、先頭のインデックスを見て、目的のファイルが何バイト目から > 始まるかを知ることができません (違ったっけ) ので、ランダムアクセス > には向きません。圧縮しないなら、100通単位でディレクトリを掘って > 1メール=1ファイルにしておく方が案外速かったりするかもしれません。 そうですか。SEGA BBS 過去ログ<http://x68000.startshop.co.jp/~68user/index-segabbs.html>が「データは圧縮して保管しており、リクエストがあるたびに CGI で随時展開して」いることを覚えていたので,圧縮して随時展開という手法に期待をおいていたりしました。 今は他のことにかかりきりなので,できあいのものを探していたのですが,設計の考え方は参考になりました。そのうち時間があればログをメーラに取り込んで,そのうちさらに時間があれば自作も検討します。メーラのプラグインとして作成する手もありますが,いずれにせよ今は無理です。 ところで,今さっき「tar」で全文検索したときに発見したのですが,結果画面でNo.531だけが正常に表示されませんでした。ご報告まで。 |
|
テープにbackupしたデータを、復元させたいのですが コマンドの打ち方がわかりません。 教えて下さい。 UNIX若葉マークです。 |
|
68userさんお返事ありがとうございます。参考になりました。 |
|
ソケット通信でマルチクライアントサーバを作っているのですが お手本にできるソースってどこかにありませんか? プログラミング初心者ですが、要求がかなり厳しいので困ってます。 |
|
>>1735 CZ > 「Underconstruction」なのが残念ですが。 ってどこに書いてありました? > 結果画面でNo.531だけが正常に表示されませんでした。 http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=531 のことでしたら、あれで正しい表示です。CZ さんが見られたときは 変な表示になってましたか? >>1736 SASA > テープにbackupしたデータを、復元させたいのですが > コマンドの打ち方がわかりません。 バックアップしたときにどういうコマンドを使ったのですか? mt? tar? dd? >>1738 purine > ソケット通信でマルチクライアントサーバを作っているのですが > お手本にできるソースってどこかにありませんか? まずは http://X68000.startshop.co.jp/~68user/net/ を見て、どこが足りないのか書きましょう。 # …についてもっと詳しく書いてあるソースがほしい、perl # じゃなくて C 言語のソースがほしい、などなど。でも # OS のソース以外のお手本は知らないなぁ。 >>1734 すな > で、早速そのようにして観察した所1時間もしないうちに、 > やはり前後1秒程度の誤差が確認されました。 ほうほう、cron が1秒早く起動されましたか。結構いいかげん なんですかね。お使いの OS は何でしょうか? |
|
お世話になっておりますpurineです。 C言語で書かれたソケット通信によるマルチクライアントサーバの お手本のソースを見たいのでご存知でしたら教えていただけませんか お手本だけじゃなくC言語のソケット通信に使う関数について書かれたページなどもありましたらよろしくお願いします |
|
purineさん> 職場の同僚がマルチクライアントサーバを作る時に調べていてみつけた便利そうなサイトへのリンク集だそうです。 http://www.geocities.co.jp/SiliconValley-Oakland/6682/link/LinksForWork_Edu01.html この同僚は検索サイトで探し出したそうですから あなたももっと探してみてはいかがでしょう。 |
|
追加です。 こちらのサイトへのリンクもあるそうです。 http://www.geocities.co.jp/SiliconValley-Oakland/6682/link_work.html |
|
こんばんわ、初めまして。 以前から、UNIXのページなど凄く参考にさせてもらってます。ども。。 いきなり、質問なのですが。 あやまって/usr/share/locale/ja_JP.EUCを削除してしまいました。 これを元にもどしたいのですが、どんな方法があるでしょうか。 すみませんが、よろしくお願いします。 FreeBSD 4.2-RELEASEです。 |
|
>>1743 なお FreeBSD 4.2-BETA では % ls -ld /usr/share/locale/ja_JP.EUC drwxr-xr-x 2 root wheel 512 Jan 8 14:18 /usr/share/locale/ja_JP.EUC/ % ls -l /usr/share/locale/ja_JP.EUC lrwxr-xr-x 1 root wheel 25 Jan 8 14:18 LC_COLLATE@ -> ../la_LN.ASCII/LC_COLLATE -rw-r--r-- 1 root wheel 5391 Jan 15 22:09 LC_CTYPE -rw-r--r-- 1 root wheel 304 Jan 8 14:18 LC_TIME です。まぁおそらく 4.2-RELEASE と内容は同じでしょう。 というわけで、src を展開しているなら、 # mkdir /usr/share/locale/ja_JP.EUC # ln -s ../la_LN.ASCII/LC_COLLATE /usr/share/locale/ja_JP.EUC/LC_COLLATE # mklocale /usr/src/share/mklocale/ja_JP.EUC.src > /usr/share/locale/ja_JP.EUC/LC_CTYPE # grep -v '^#' /usr/src/share/timedef/ja_JP.EUC.src > /usr/share/locale/ja_JP.EUC/LC_TIME です。src がなければ http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/share/ から拾ってきてください。 うちでは # cd /usr/src/share/mklocale # make すると、/obj/usr/src/share/mklocale/ja_JP.EUC.out が出力されますが、 この方法で locale/ja_JP.EUC だけインストールするのはどうやれば いいんだろう? もちろん CD-ROM があれば、mount して、 # cd / # cat /cdrom/bin/bin.?? | tar zxvfp - usr/share/locale/ja_JP.EUC/\* でも OK です。 cvsweb を見ていて気がついたのですが、current では、LC_MONETARY、 LC_NUMERIC を設定する http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/share/monetdef/ http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/share/numericdef/ てなのができたようですね。 |
|
過去ログみたら、マルチポストについての指摘が(^^; すみません、マルチポストです。 www.linux.co.jp FreeBSDで質問出来るような場所が見つからず linux板に書き込んでしまいましたが、 68userさんのサイトを思い出し、投稿させて頂きました。 linux.co.jpのほうはレスしてもうらうと悪いので 解決したと書いておきましたが、実はまだです。(^^; 反省と謝罪までに、、、、でわでわ、すみません。 下記のほうよろしくお願いします。 |
|
>1744 68userさん ありがとうございます。 srcからうまくいきました。 locale一つでも、色々方法があるみたいですね、、 まだ知識が追いついてないですが、書いてくださった他の方法も試してみます。 でわ、解答ありがとうございました。 |
|
>>1744 68user > うちでは > # cd /usr/src/share/mklocale > # make > すると、/obj/usr/src/share/mklocale/ja_JP.EUC.out が出力されますが、 > この方法で locale/ja_JP.EUC だけインストールするのはどうやれば > いいんだろう? -current の make world の際のログがありましたけど、 単純にコピーでいいようですね。 > ===> share/mklocale > install -c -m 644 -o root -g wheel el_GR.ISO_8859-7.out /usr/share/locale/el_GR.ISO_8859-7/LC_CTYPE > install -c -m 644 -o root -g wheel ja_JP.EUC.out /usr/share/locale/ja_JP.EUC/LC_CTYPE > install -c -m 644 -o root -g wheel ja_JP.SJIS.out /usr/share/locale/ja_JP.SJIS/LC_CTYPE [snip] /usr/obj の下のファイルが使えるなら、多少の無駄があるけど、 make installworld するのも手です。 > cvsweb を見ていて気がついたのですが、current では、LC_MONETARY、 > LC_NUMERIC を設定する > http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/share/monetdef/ > http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/share/numericdef/ > てなのができたようですね。 これが結構間があいて commit されていたので、make world が 途中でこけるのが二三日続いたことがありました。それで覚えてます。 |
|
>>1739 68userさん > > 「Underconstruction」なのが残念ですが。 > ってどこに書いてありました? スレッド一覧の最下部の「Mail converted by HyperThreads v0.9.1」のリンク先です。作者のウェブサイト<http://www.etl.go.jp/~takagi/>からも参照できます。 > > 結果画面でNo.531だけが正常に表示されませんでした。 > http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=531 > のことでしたら、あれで正しい表示です。CZ さんが見られたときは > 変な表示になってましたか? Namazuの検索結果画面での表示のことです。「オペランド」等で検索してみるとお分かりになるはずです。 さて,いろいろと探していたら,<http://blade.nagaokaut.ac.jp/>で使われているbladeシステムがかなり気に入りました。bladeクローンの<http://www.rr.iij4u.or.jp/~hideto-i/rb/yaiba/>が開発されています。rubyは分かるのでいいのですが,これをWindowsで動かそうとしたらかなり労力が要りそうで,ちょっと躊躇しています。 # そのうちに常時接続になることだし,そろそろ家庭内サーバを立てるか。 ## でも騒音と夏の空調とセキュリティの確保が大変そう。 ### ひょっとして常時接続になればローカルで閲覧する意味もなくなるか? 独り言を書き連ねてしまいました。 ではでは,これからもよろしくお願いします。 |
|
>>1725のりさん 解決したようですが、ちょっとXのリソースについて 私も今勉強中なのですが、、editresコマンドなどあるみたいです。 http://www.linux.or.jp/JF/JFdocs/XWindow-User-HOWTO-8.html http://www.ainet.or.jp/~inoue/athena/index.html |
|
>>1748 CZ > 「Mail converted by HyperThreads v0.9.1」のリンク先です。 なるほど、あれは高木さんの自作でしたか。公開してほしいなぁ。 > bladeクローンの<http://www.rr.iij4u.or.jp/~hideto-i/rb/yaiba/>が開発されています。 あ、これまた嫌いなインタフェース (^^; # これは、単に慣れてないだけという可能性もありますので、 # 本当の評価は保留中です。 > 「オペランド」等で検索してみるとお分かりになるはずです。 うーん、わからんです。どの辺でしょう。 http://X68000.startshop.co.jp/~68user/tmp/wwwboard-531.gif ちなみにメールアドレスが先頭に出るのは、僕の namazu 用 フィルタの書き方が悪いせいです。 あと、この BBS で <http://blade.nagaokaut.ac.jp/> という書き方をすると <http://blade.nagaokaut.ac.jp/> → <A HREF="<http://blade.nagaokaut.ac.jp/>"> と置換されていましたが、さきほど直しました。こういうバグを 見つけるたびに、自分の想像力のなさを思いしらされますね。 >>1745 なお > www.linux.co.jp 質問者が知らないのは仕方がないし、間違った回答をしてしまうのも 仕方がないですが、その間違った答えにツッコミ入れる回答者がいない コミュニティというのは悲惨ですね。 http://www.linux.co.jp/bbs/bbs1/bbs.cgi?num=2721&ope=sel http://www.linux.co.jp/bbs/bbs3/bbs.cgi?num=855&ope=sel |
|
おっと書き忘れ。 >>1747 rosegarden > -current の make world の際のログがありましたけど、 > 単純にコピーでいいようですね。 なるほど。手動でやる場合は、 ftp://current.jp.FreeBSD.org/pub/FreeBSD/snapshots/i386/log/ を見ればよかったわけですね。 |
|
>>1750 68userさん > > bladeクローンの<http://www.rr.iij4u.or.jp/~hideto-i/rb/yaiba/>が開発されています。 > あ、これまた嫌いなインタフェース (^^; そうですか? スレッド表示など特に秀逸だと思ったのですが。 <http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-list/22494?22494-23482> > うーん、わからんです。どの辺でしょう。 | ……wwwboard.cgi?log=531">名前を「やまい」元(山井・孝雄)に変えましたー/a></strong> (スコア: 1) Internet Explorerやw3m等から見るとソースがこんな具合になっています。で,見かけ上Aエレメントが閉じられていないために問題が起きるわけです。Lynxもそうですが,HTML解釈上は正しくDDエレメントの手前でアンカーを切っています。 原因は半角の「。」のようです。当方ではNetscape Navigator(4.7/2.0)だけが文字化けせずにAエレメントが閉じられていました。十分に検証せずに一方的に報告してしまったことをお詫びします。最初からNetscape Navigatorで確かめておけば原因もすぐに判明したと思います。 > あと、この BBS で <http://blade.nagaokaut.ac.jp/> という書き方をすると > <http://blade.nagaokaut.ac.jp/> > → <A HREF="<http://blade.nagaokaut.ac.jp/>"> > と置換されていましたが、さきほど直しました。こういうバグを > 見つけるたびに、自分の想像力のなさを思いしらされますね。 私の自作BBSでも同じ問題が発生していることを以前から認識していました。68userさんの掲示板ソースも参考にした覚えがあるので,ひょっとするとURL置換処理をコピーしていたのかも知れません。そのうち暇があれば直しておきます。 # 睡眠は大事です。かくいう私も最近……。 |
|
お邪魔致します。このサイトの情報はPerlでのネットワークプログラム作成時に 大変参考にさせて頂いております。以前も一度この掲示板にてお世話になりました。 本日はFTPとHTTPの比較について質問がありやって来ました。 昨日書店で立ち読みした、発売したばかりの ASCII NETWORK MAGAZINE4月号 http://biz.ascii24.com/biz/n-mag/article/2001/02/23/623348-000.html に、比較的初心者向けのFTPプロトコルの解説記事があったのですが、その冒頭に 「FTPはHTTPよりわずかに速いため、現在もよく利用される」 という(言い回しが違うかもしれません)記述がありました。これは本当でしょうか? CやPerlでsocket関数を使いTCPのアプリケーション層のプログラムを作っている と、プロトコルがFTPであるのかHTTPであるのか(もしくはSMTPやPOP3なのか)は データを受信(または送信)するアプリケーションが判断することで、ネットワーク上 では区別されないように思えました。 ポート番号で区別できるという考えもありますが、もちろんWell-Knownポート以 外を使ったHTTPやFTPでの通信も可能ですよね。 IPパケットレベルでHTTPとFTPのパケットが区別され、FTPの方がわずかに速く通 信が可能という事はあるのでしょうか?いきなりで申し訳ありませんが、お答え頂ければ 幸いです。 |
|
>>1752 CZ > そうですか? スレッド表示など特に秀逸だと思ったのですが。 あ、アイコンがわかりにくいので拒否反応を示しただけですから、 聞き流してくださいまし。 > Internet Explorerやw3m等から見るとソースがこんな具合に > なっています。 IE5.5 で確認しました。原因究明はウチに帰って元データを 見てからにします。 >>1753 金床 > FTPはHTTPよりわずかに速いため FTP はコントロールコネクションとデータコネクションがありますが、 HTTP はコネクションは1本しか張らないので、FTP の方がわずかに 速い *かも* しれません。でも、誤差の範囲内だと思います。 なので、(この部分を見る限りでは) 不適切な解説だと僕は思います。 > IPパケットレベルでHTTPとFTPのパケットが区別され、FTPの方が > わずかに速く通信が可能という事はあるのでしょうか? アプリケーションゲートウェイ (delegate とか) で帯域制限でも しない限り ありえないです。金床さんが書かれている考え方は 正しいです。 |
|
お答え頂きありがとうございます。 >FTP はコントロールコネクションとデータコネクションがありますが、 >HTTP はコネクションは1本しか張らないので、FTP の方がわずかに >速い *かも* しれません。でも、誤差の範囲内だと思います。 これは、FTPのデータコネクションでは目的のデータ(ファイルやファイルリストなど)しかネットワーク上を 転送されないのに対し、HTTPでは最初にHTTPリクエストがネットワーク上を通るので、その分という事でしょうか。 それとも、データコネクションでのデータ受信(送信)中も、コントロールコネクションが何らかの役割を果たして いるという意味でしょうか。つまり、転送されるデータが巨大になればなるほどFTPとHTTPで差がでてくるような 現象が存在するのでしょうか? 最初に書くべきでしたが、私がここで対象にしている「FTPとHTTPの転送速度の差」は、 数Kb〜数百Kb程度の小さなファイルでのやりとりではなく、巨大なデータ(少なくとも10Mb程度) で現れる(かもしれない)差の事です。 >アプリケーションゲートウェイ (delegate とか) で帯域制限でも >しない限り ありえないです。 なるほど、やはりそうですよね。少し安心しました。 |
|
# おぉすごい書き込み…うちとは大違い(笑) 68user>お使いの OS は何でしょうか? はい、初心者入門用?(笑)VineLinux1.1CRです。 ちなみに5秒sleepした結果以下のようなログが生成されています。 2001-02-28 00:59:06 12:59am up 13:13, 1 user, load average: 0.00, 0.00, 0.00 2001-02-28 01:00:02 1:00am up 13:14, 1 user, load average: 0.00, 0.00, 0.00 2001-02-28 01:01:03 1:01am up 13:15, 1 user, load average: 0.00, 0.00, 0.00 2001-02-28 01:02:06 1:02am up 13:16, 1 user, load average: 0.00, 0.00, 0.00 〜略〜 2001-02-28 03:57:05 3:57am up 16:11, 1 user, load average: 0.00, 0.00, 0.00 2001-02-28 03:58:06 3:58am up 16:12, 1 user, load average: 0.00, 0.00, 0.00 2001-02-28 03:59:06 3:59am up 16:13, 1 user, load average: 0.00, 0.00, 0.00 2001-02-28 04:00:05 4:00am up 16:14, 1 user, load average: 0.00, 0.00, 0.00 2001-02-28 04:01:06 4:01am up 16:15, 1 user, load average: 0.00, 0.00, 0.00 2001-02-28 04:02:06 4:02am up 16:16, 1 user, load average: 0.08, 0.02, 0.01 2001-02-28 04:03:06 4:03am up 16:17, 1 user, load average: 0.72, 0.21, 0.07 2001-02-28 04:04:07 4:04am up 16:18, 1 user, load average: 1.08, 0.40, 0.14 2001-02-28 04:05:07 4:05am up 16:19, 1 user, load average: 1.21, 0.56, 0.21 2001-02-28 04:06:05 4:06am up 16:20, 1 user, load average: 0.60, 0.50, 0.21 2001-02-28 04:07:05 4:07am up 16:21, 1 user, load average: 0.22, 0.41, 0.19 2001-02-28 04:08:06 4:08am up 16:22, 1 user, load average: 0.08, 0.33, 0.18 このマシンは試験用のマシンで、ペンティアム166です。 ちなみに、マシンフル稼働状態だとloadの数値は最大いくつ位になるのでしょう? 金床>FTPはHTTPよりわずかに速いため、 これ、自分も以前も気になっていましたが、回線トラフィックの方が 影響が大きそうなのと、特に支障がなさそう(知らなくても)なので、 ほったらかしの疑問にしていました(^^; httpと違ってftpはデーターコネクションとコントロールコネクションが 独立している為に僅かに早いのかな?なんて勝手に想像しています。 # 無駄な反応してすいません。 |
|
あら?いろいろと書いているうちに、前後してしまった…(^^; |
|
金床> 私も詳細は判りません(手抜き)ですが、調べるなら参考まで。 日本語RFC(FTP) http://hp.vector.co.jp/authors/VA002682/rfc959j.htm |
|
>>1755 金床 ああ、逆でした。 FTP はコネクションを 2本張るので、3way handshake が2回行われ、 その分 HTTP の方がわずかに速い *かも* しれません。 あと、FTP だと USER/PASS/TYPE/PORT などのコマンドを発行した 後はレスポンスを待たなければいけませんが、HTTP だと最初に リクエストを送って、あとは受け取るだけなので、そういう点でも HTTP の方が速い *かも* しれません。 それらの差が *仮に* あったとして、なおかつ数十 KB 程度の 小さいデータの転送時には *仮に* 体感できたとしても、 > 巨大なデータ(少なくとも10Mb程度)で現れる(かも > しれない)差の事です。 データの転送自体の仕組みは全く変わらないため、転送データの サイズが大きくなればなるほど、差は目立たなくなるでしょう。 |
|
>データの転送自体の仕組みは全く変わらないため、転送データの >サイズが大きくなればなるほど、差は目立たなくなるでしょう。 納得行く答えを頂きました。ありがとうございます。 >すなさん RFC情報、どうもありがとうございます。 |
|
>>1756 すな > 2001-02-28 01:00:02 5秒 sleep したのですから、00:59:57 あたりに cron から 起動されているわけですか。手元の FreeBSD 4.1-RELEASE と Solaris2.6 で負荷をかけて試してみましたが、1秒程度遅く なることはあっても、早く起動されることは一度もありません でした。 となると、Vine の cron が腐ってるということになりませんかね。 > マシンフル稼働状態だとloadの数値は最大いくつ位になるのでしょう? とりあえず http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=1119 を読んでください。理論的には、load average はどこまででも 増やすことができます。 |
|
68user>となると、Vine の cron が腐ってるということになりませんかね。 なるほど、と言う事はcronの実装も結構ディストリビューションで違うのですね。 というか、さすがSolarisと言うべきなのか… # マシンの内臓タイマーの精度とかも関係有るのかな? # このマシンはかなり時間が狂うので…(1日数秒はあたりまえ) >http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=1119 なるほど、これも大変勉強になりました。 最初は単純にシステム負荷を100で割った(理由不明)数値なのかと思っていました。 Windows等のシステム負荷表示とはまったく違って、100%以上の負荷まで表示 している訳ですね。(待ちプロセスを負荷と言うかは別として) 説明も大変判りやすかったです。 |
|
>>1750 68userさん > あと、この BBS で <http://blade.nagaokaut.ac.jp/> という書き方をすると > <http://blade.nagaokaut.ac.jp/> > → <A HREF="<http://blade.nagaokaut.ac.jp/>"> > と置換されていましたが、さきほど直しました。 自作BBSを見ると正規表現部分*だけ*はほぼ同じでした。やはりここの掲示板のソースを引き写していたようです。(perlではなくrubyですが。)で,直していて気が付いたことですが, s!<A HREF="(.*?)>">(.*?)<</A>!<A HREF="$1">$2</A><!g; も加えておいた方がよいのでは。 |
|
<<1763 ん? 訂正。 s!<A HREF="(.*?)>">(.*?)></A>!<A HREF="$1">>$2</A>>!g; s!<A HREF="(.*?)<">(.*?)<</A>!<A HREF="$1"><$2</A><!g; こうですね。 |
|
<<1764 ん?? 何やってるんだろう。 s!<A HREF="(.*?)>">(.*?)></A>!<A HREF="$1">$2</A>>!g; s!<A HREF="(.*?)<">(.*?)<</A>!<A HREF="$1">$2</A><!g; これでいいんですね。 <<1762 はタイプミス <<1763 は勘違いでした。 板汚しですみません。 |
|
あっ、ウチも同じバグがある(^^; でも、書き戻しですね…、ちょっとテストさせてくださいm(_o_)m <http://x68000.startshop.co.jp/~68user/><http://www2s.biglobe.ne.jp/~cru/library/> |
|
おー、これってきっちりやると結構面倒かも。で、30分あれこれ やった結果…これでどだ! $_='hoge<http://x68000.startshop.co.jp/~68user/><http://www2s.biglobe.ne.jp/~cru/library/>fuga'; s/&/&/g; s/\"/"/g; s/</</g; s/>/>/g; $http_pattern = '((http|https)://[a-zA-Z0-9\.\/\~\:\?\#\@\&\-\+\=;%_]+)'; $out = ''; while (1){ if ( ! s!(.*?)($http_pattern)!! ){ $out .= $_; last; } $out .= $1; $buf = $2; $buf =~ s/((<|>|").*)//; $rest = $1; $buf =~ s!$http_pattern!<A HREF="$1">$1</A>!; $out .= $buf; $_ = $rest . $_; } print "$out\n"; 無限ループが恐いので (^^;、まだ wwwboard.cgi には組み込んでません。 |
|
無茶苦茶効率悪そうだし、未定義変数使用の警告が出るけど…(^^; $_='hoge<http://x68000.startshop.co.jp/~68user/><http://www2s.biglobe.ne.jp/~cru/library/>fuga'; $http_pattern = '(http|https)(://)(([a-zA-Z0-9\.\/\~\:\?\#\@\&\-\+\=;%_]+?)(>|<|")|([a-zA-Z0-9\.\/\~\:\?\#\@\&\-\+\=;%_]+))'; s/&/&/g; s/\"/"/g; s/</</g; s/>/>/g; s!$http_pattern!<A HREF="$1$2$4$6">$1$2$4$6</A>$5!g; |
|
>>1767 68userさん おはようございます。 > おー、これってきっちりやると結構面倒かも。 こんなに奥が深いものとは想像もつきませんでした。以前これに着手しかけて断念した覚えはあったのですが,なぜ断念したかは覚えていません。 > 無限ループが恐いので (^^;、まだ wwwboard.cgi には組み込んでません。 早速ruby文に変換して実働掲示板に使っています。無限ループになっても利用者が二人しかいないサーバだし,HTTPならすぐ切れそうだということで,心配はしていません。 そんなわけで,いつもありがとうございます。これからもお世話になります。 |
|
こんなのも。 $_='hoge<http://x68000.startshop.co.jp/~68user/><http://www2s.biglobe.ne.jp/~cru/library/>fuga'; $http_pattern = '((http|https)://[a-zA-Z0-9\.\/\~\:\?\#\@\&\-\+\=;%_]+)'; s/&/&/g; s/\"/"/g; s/</</g; s/>/>/g; @items = split(/(<|>|")/, $_); foreach (@items){ s|$http_pattern|<A HREF="$1">$1</A>|g; } $_ = join('', @items); print "$_\n"; アルゴリズム・正規表現が複雑にならないという点で、これが 一番よさげかなぁ。でも動作チェックと速度計測をしなくては。 もっとよいのを思いついた方は教えてください。 |
|
>>1770 68user commit しました。とか言ってみたり。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/wwwboard.cgi |
|
>>1770 68userさん いいですねぇ。 これ頂きます。perl4でも動くし(^^; |
|
質問したいことがあります。それはあるプログラムでPIDを変数として 持っているときに、その変数のPIDのプロセスを殺す方法があれば教えて欲しいのですが。 よろしくお願いします |
|
>>1773 purine 必ず OS 名や使用している言語を書いてください。 kill コマンドか、システムコール kill を使います。 http://X68000.startshop.co.jp/~68user/unix/pickup?keyword=kill&target=command&partial=on |
|
japu さん (http://www.japu.org/) より、source.cgi に関して CGI Security Advisoriy をいただきました。 これは他サイトに HTTP でアクセスし、GET した結果を表示 するもので、 「CGI の小部屋」http://X68000.startshop.co.jp/~68user/Cgi-room/ からは <!-- --> でコメントアウトしてあったものです (なぜコメントアウトしたかは忘れた)。 # また、昔利用していた http proxy 経由でアクセスするため、 # X68000.startshop.co.jp からは正しく動作しませんでした。 しかし、トップページからはスクリプトのソースを見ることができ、 source.cgi 自体も実行可能なままになっていました。これに対して http://X68000.startshop.co.jp/~68user/Cgi-room/source.cgi?url=http://www.yahoo.co.jp';ls%20*' といったアタックが可能でした。これは open(IN,"$httptalker -get '$url'|"); の部分で open(IN,"$httptalker -get 'http://www.yahoo.co.jp';ls *''|"); と解釈されます。open の引数に ; ? * | などを渡すと、perl は /bin/sh を起動し、/bin/sh がコマンドを実行しますので、任意の コマンドが実行可能です。 で、SA を受けて open(IN, "-|") or exec($httptalker, '-get', $url); と修正しました。この場合は perl が直接 fopen(3) を呼ぶため、' ; * など が特別扱いされることなく、$httptalker の引数にそのまま渡ります。 source.cgi の更新履歴: http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/Cgi-room/source.cgi セキュリティホールを指摘して下さった japu さんに感謝いたします。 んで、 「CGI の小部屋」http://X68000.startshop.co.jp/~68user/Cgi-room/ ですが、もうメンテする気力がないし、技術的な興味もないし (nslookup とか whois コマンド呼ぶだけのスクリプト見てもおもしろくないでしょ)、例えば ドメイン名検索とかならもっと便利なサイトがあるので、この掲示板で誰からも 反応がなければ近日中に消すつもりです。 |
|
>>1775 68user > open(IN, "-|") or exec($httptalker, '-get', $url); > と修正しました。この場合は perl が直接 fopen(3) を呼ぶため 訂正。perl が直接 pipe(2)、fork(2)、exec(2) するため、でした。 |
|
CGIの小部屋は消さないで欲しいです. メンテ終了ページは倉庫ディレクトリなどに 移設するのみにしていただけると嬉しいです. 簡単な内容のものでも,知らない人に説明するとき サンプル的に便利に利用させていただいております. |
|
>>1777 Netboy > CGIの小部屋は消さないで欲しいです. 了解いたしました。と決まれば、見られても恥ずかしくない 程度に brush up せねば。 |
|
いつも質問ばかりですいませんのふくしです。 Perl で use strict 'vars'; とすると、変数を使うときは パッケージを明示するか、my 宣言しないと怒られますが、 $a、$b という変数は怒られないで、%main:: シンボルテーブルに 追加されますね。$aa だとダメ。$c もダメ。なぜでしょう? 恐れ入りますがご存知の方はご教示ください。 |
|
>>1779 ふくし 想像でモノを言いますが、sort でセットされるのが $a と $b だから特別扱いされているんじゃないでしょうか。 # Ex. sort { $a cmp $b } |
|
ああ〜そかそかそかそか。使いますねえ sort で $a と $b。 すっきりしました。いつもありがとうございます!(^^) |
|
はじめまして。Telと申します。 以前、こちらで共有メモリについて少し触れられていたようなので、質問をしてみようと思いました。 現在、共有メモリ上にフラグの役割をもつ変数を用意し、複数のプロセス間でそのフラグを参照し、フラグの状態によって処理の分岐をするというプログラムを書いています。 そこでわからない点が出てきました。 共有メモリに変数を用意する方法の記述についてはサンプル等を見て作成することができると考えています。 しかし、それを参照する各プロセス側での記述方法について、サンプルが少なくよくわからないのです。 たとえば int flag; char data[datalength]; という2つの変数が共有メモリにある場合、flagの内容によってdataに書き込む内容を分けるという処理は具体的には、どう記述すれば良いのでしょうか。 プログラムAは flag==1 ならば"good morning." flag==2 ならば"good afternoon." flag==3 ならば"good evening." をdataに書き込む。 プログラムBは flag==1 ならば"beakfast." flag==2 ならば"lunch." flag==3 ならば"dinner." をdataに書き込む。 上記のような場合、AとBそれぞれではどう宣言してからflagやdataを使うのでしょうか。 勉強不足からくる質問だと思いますがUNIXの知識がない為なのか、書籍の選びかたが悪い為なのか、難しくて具体的な記述方法がわからないためにこちらにきてみました。 どうかご指導願います。よろしくおねがいします。 |
|
UNIXでパーミッションを変更しようとしたのですが 以下のメッセージで変更できません。どうしてですか? 502 SITE command not implemented. |
|
>>1783 ゆう > 以下のメッセージで変更できません。どうしてですか? > 502 SITE command not implemented. サーバ側でサポートしていないからでしょう。 SITE コマンドと言うのは標準的でないコマンドのことです。 だから、理屈の上では ftp>SITE SHUTDOWN NOW なんて出来ても別に不思議ではないと思います。 それでは身も蓋もないので、ためしに、 ftp>SITE CHMOD 600 とか win98 の ftp.exe だと ftp>literal SITE CHMOD 600 (だったかな?) とかしてみて駄目だったら、駄目なんだと思います。 どっちにしても、管理者に聞いてみないと、はっきりしたことは 分からないと思います。 |
|
>>1782 Tel 書き込み拝見しましたが、どうも共有メモリ云々でつまずいて おられるのではなく、単純に C 言語で目的を 達成するプログラムを書く方法について悩まれているように思えます。 # もしも違いましたら、ごめんなさい。 # 何をどうされたいのかが、不明で推測で書いていますので、 # 御理解ください。 shared memory を使ったプログラミングは経験が無いんですが、 ちょっと本を見たら、初期化やセットアップは別として メモリへのアクセスは普通に配列や malloc したバッファへの アクセスと変わらないようでした。 失礼を承知で書きますが、共有メモリを使わないで、固定したファイルに flag と data を書き込んで、プログラム A と プログラム B で やりとりをするようなものは、お書きになられますか? もしそれが可能なら、似たような手順で出来そうです。 # もしも、既にそんなことは可能であると言うのでしたら、 # 失礼お許しください。 ちなみに、私の場合には 「UNIX ネットワークプログラミング」という本を参考にしました。 トッパンからでている本です。ちょっと眺めた程度だと、 共有メモリの部分は結構丁寧に書いてあって、 サーバとクライアントのサンプルもありました。 ざっと見たかんじでは、分かりにくいと言う感じは無かったですね。 # これって、ここで紹介されている本の旧版なのでしょうか? # 今は二分冊になっているのですね。私のには IPv6 のことは # 書いてないです。 |
|
ちょっと、すごい初歩的な質問なのですが、 一般に top コマンドの出力でメモリの状況が出力されますよね。 last pid: 20294; load averages: 0.19, 0.11, 0.04 up 1+08:42:31 19:52:21 30 processes: 1 running, 29 sleeping CPU states: % user, % nice, % system, % interrupt, % idle Mem: 35M Active, 6528K Inact, 12M Wired, 3448K Cache, 14M Buf, 3228K Free Swap: 128M Total, 6588K Used, 121M Free, 5% Inuse 上のような奴です。Mem のところの Active, Inact, Wired, Chache, Buf, Free の合計ってだいたい搭載された物理メモリの量に近いものだと思っていたのですが、 これはあたっていますか? (ただし、10% 程度の増減は許容するものとします。) 実は、3 月 1 日前後に CVSup した current なのですが、 top の表示が次のようになっています。 last pid: 7969; load averages: 0.94, 0.74, 0.40 up 0+00:11:35 19:59:58 22 processes: 2 running, 20 sleeping CPU states: % user, % nice, % system, % interrupt, % idle Mem: 2927K Active, 12M Inact, 6285K Wired, 2K Cache, 35M Buf, 41M Free Swap: 256M Total, 256M Free 最初の top コマンドの表示は別マシンなのですが、上のマシンは 搭載している物理メモリは 256 MB なのに上のようになっています。 大雑把に計算しても Mem の合計値は 150MB 行っていません。 何か、私は勘違いでもしているのでしょうか? # というか make world 中に何度も kernel panic 起こすし。 # fsck は大活躍だし。さっきは自動修復が効かずに # /dev/ad0s2f: UNEXPECTED SOFT UPDATE INCONSISTENCY; RUN fsck MANUALLY. # なんていうメッセージもでました。 # こういうことがしょっちゅう起こると、もう笑いしかでませんね。 |
|
>>1784 rosegarden >> 502 SITE command not implemented. は、SITE コマンドは未実装だよ、という FTP サーバ側の メッセージなので、chmod は無理です。 > ftp>literal SITE CHMOD 600 ほほー、literal というのがありますか。僕が知っていたのは quote site chmod 600 です。 あと、前にここで書いたかもしれませんが、site index ちうのが 便利です。例えば ftp://ftp3.jp.FreeBSD.org にログインして、 ftp> site index perl-5 などなど。 >>1785 rosegarden > 「UNIX ネットワークプログラミング」という本を参考にしました。 > トッパンからでている本です。 > # これって、ここで紹介されている本の旧版なのでしょうか? > # 今は二分冊になっているのですね。 確か三分冊になったのですが、トッパンはなくなったので、ピアソン エデュケーションが版権を引き継ぎました。 http://www.mmjp.or.jp/pearsoned/washo/network/wa_net28-j.html http://www.mmjp.or.jp/pearsoned/washo/network/wa_net27-j.html 洋書の Vol.3 が出ているのかどうかはわかりません。 作者が亡くなったので、永遠に出ないのかもしれません。 >>1786 rosegarden > Mem のところの Active, Inact, Wired, Chache, Buf, Free の > 合計ってだいたい搭載された物理メモリの量に近いものだと > 思っていたのですが 僕もそのように認識しています。current ですからちょっと 様子を見てはどうでしょう。 # VM まわりなんてとても僕の手に負えないので、役に立たない # 返事しかできないです。ごめんなさい。 |
|
今日は。 本来のLOGIN パスワードを忘れてしまった場合はOSからインストールし直すしかないのでしょうか? |
|
>>1788 ミング > 本来のLOGIN パスワードを忘れてしまった場合はOSから > インストールし直すしかないのでしょうか? root でログインして、passwd コマンドで該当ユーザの パスワードを再設定します。root のパスワードも忘れて しまったのなら、 http://www.jp.FreeBSD.ORG/QandA/HTML/464.html http://www.jp.FreeBSD.ORG/QandA/HTML/1638.html 的なことをしますが、あなたの使っている OS が何なのか 全くわからないので、これ以上はなんとも。もし Windows なら僕にはわかりません。 |
|
>>1787 68user > > ftp>literal SITE CHMOD 600 > ほほー、literal というのがありますか。僕が知っていたのは > quote site chmod 600 です。 良く分からないのですが、使ってみた感じだと telnet コマンドを ftp クライアント代わりに使うような場合に打ち込むコマンド類が これで打てるようになるみたいですね。 > あと、前にここで書いたかもしれませんが、site index ちうのが > 便利です。例えば ftp://ftp3.jp.FreeBSD.org にログインして、 > ftp> site index perl-5 > などなど。 ああ、これ便利ですね。ls-lR でも検索しているのでしょうか? > > # 今は二分冊になっているのですね。 > 確か三分冊になったのですが、トッパンはなくなったので、ピアソン > エデュケーションが版権を引き継ぎました。 まさか三分冊というのまでは知りませんでした。 色々ありがとうございます。 > > Mem のところの Active, Inact, Wired, Chache, Buf, Free の > > 合計ってだいたい搭載された物理メモリの量に近いものだと > > 思っていたのですが > 僕もそのように認識しています。current ですからちょっと > 様子を見てはどうでしょう。 結局、アドバイス頂いてから、ソースを色々調べて見たら、 kernel ではなくて top コマンドの表示に問題があることが分かりました。 ページ数で取得したメモリの量を KB 単位に変換してないので 変な結果になるようです。 ちょっとまだ断定的なことは言えないのですが、 とりあえず、バグリポートしておきました。 |
|
68Userさん 回答ありがとうございます。 OSはSolaris7です。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー root でログインして、passwd コマンドで該当ユーザの パスワードを再設定します。root のパスワードも忘れて しまったのなら、 http://www.jp.FreeBSD.ORG/QandA/HTML/464.html http://www.jp.FreeBSD.ORG/QandA/HTML/1638.html 的なことをしますが、あなたの使っている OS が何なのか 全くわからないので、これ以上はなんとも。もし Windows なら僕にはわかりません。 本来のLOGIN パスワードを忘れてしまった場合はOSからインストールし直すしかないのでしょうか? |
|
>>1791 ミング >OSはSolaris7です。 Solaris 7 なら シングルユーザモードで起動してから、/etc/shadow を 編集して OK です。 インストール CD からでも出来ますが、 シングルユーザモードでの起動の方が簡単ですね。 忘れたけど、恐らく、そのままでファイルの書き換えが 出来たと思います。 FreeBSD だと mount -u / しないと書き込めませんが。 #vi は使えますよね? |
|
>>1792 rosegarden あ、 Solaris はシングルユーザモードで起動する時でも パスワードを聞いて来ることを思い出しました。 やっぱりインストール CD から起動して、ファイルシステムを マウントして書き換えるより無いですね。 |
|
>あ、 >Solaris はシングルユーザモードで起動する時でも >パスワードを聞いて来ることを思い出しました。 >やっぱりインストール CD から起動して、ファイルシステムを >マウントして書き換えるより無いですね ありがとうございます。 ところでもう一つ質問があります。 directoryでls −alすると6行目に各ファイルやdirectoryの容量が表示されますが、そこによく512という数字が出てきます。そのdirectory下のファイルの容量が512以上なので512は容量ではないのかなと思ったのですが、なにか特別な意味があるのでしょうか? よろしくお願いします。 |
|
>>1794 ミング > そのdirectory下のファイルの容量が512以上な > ので512は容量ではないのかなと思ったのですが、 ディレクトリもファイルですから、ディレクトリ自体のサイズです。 ディレクトリに書いてあるのは大雑把に言って、ファイル名と i ノード番号です。うーん、他にも書いてあるかも知れない。 要するにファイルのリストです。最初はだいたい 512 バイトで ファイルが沢山になった場合には適当に 512 バイト単位で大きくなって 行きます。手元の FreeBSD だとエディタでディレクトリを見ることも できて、次のような感じです。 % ls IPv6 d200006c.html daytime6.pl ipv6_1.html d6.c ipv6.html ipv6_2.html % cat IPv6 | hexdump -C 00000000 84 5e 00 00 0c 00 04 01 2e 00 00 00 80 26 03 00 |.^...........&..| 00000010 0c 00 04 02 2e 2e 00 00 97 27 03 00 14 00 08 09 |.........'......| 00000020 69 70 76 36 2e 68 74 6d 6c 00 1e c0 a0 27 03 00 |ipv6.html....'..| 00000030 14 00 08 0b 69 70 76 36 5f 31 2e 68 74 6d 6c 00 |....ipv6_1.html.| 00000040 a1 27 03 00 14 00 08 0b 69 70 76 36 5f 32 2e 68 |。'......ipv6_2.h|、&......|そのディレクトリにあるファイルの名前だけ保持できれば いいので、ファイルの数が少なければ、512 バイトということが ありえます。 |
|
>>1795 rosegarden hexdump のところが表示が変になってしまいましたね。 ソースの方を見てもらえれば分かりやすいかも。 |
|
>>1795 rosegarden > ディレクトリに書いてあるのは大雑把に言って、ファイル名と > i ノード番号です。うーん、他にも書いてあるかも知れない。 ちょっと不正確なので、正しい説明をします。 FreeBSD な人は /usr/src/sys/ufs/ufs/{ufs_vnops.c,ufs_lookup.c,dir.h} あたりを見ると分かります。 ディレクトリは可変長レコードのデータベースみたいになっていて、 *BSD の ufs の場合一つのデータは (1) i node 番号 (4bytes) (2) レコード自体の長さ (2bytes) (3) ファイルのタイプ (1bytes) (4) ファイル名の長さ (1bytes) (5) ファイル名(ただし 4 bytes 単位で切り上げ) となっています。これは dir.h の direct 構造体で定義されています。 struct direct { u_int32_t d_ino; /* inode number of entry */ u_int16_t d_reclen; /* length of this record */ u_int8_t d_type; /* file type, see below */ u_int8_t d_namlen; /* length of string in d_name */ char d_name[MAXNAMLEN + 1];/* name with length <= MAXNAMLEN */ }; さっきの例で見ると >>1795 rosegarden 00000000 84 5e 00 00 0c 00 04 01 2e 00 00 00 というのがありますが、 84 5e 00 00 : i node 番号 0x5e84 なので 24196 0c 00 : レコードの長さ 12 バイト 04: ファイルのタイプ 04 なのでディレクトリ 01: ファイル名の長さ 1 バイト 2e 00 00 00 : 2e がファイル名 "." あとはつめもの つまり、これは % ls -ai IPv6 24196 ./ 206736 d6.c 206752 ipv6_1.html 206464 ../ 206478 daytime6.pl 206753 ipv6_2.html 206500 d200006c.html 206743 ipv6.html としたときの "." のデータです。 little endian なので例によってバイトオーダがひっくりかえります。 ファイルのタイプは /usr/src/sys/ufs/ufs/dinode.h にあって /* File types. */ #define IFMT 0170000 /* Mask of file type. */ #define IFIFO 0010000 /* Named pipe (fifo). */ #define IFCHR 0020000 /* Character device. */ #define IFDIR 0040000 /* Directory file. */ #define IFBLK 0060000 /* Block device. */ #define IFREG 0100000 /* Regular file. */ #define IFLNK 0120000 /* Symbolic link. */ #define IFSOCK 0140000 /* UNIX domain socket. */ #define IFWHT 0160000 /* Whiteout. */ となっています。これを見るとディレクトリは 0x04 です。 桁数があわないのは、パーミッションも一緒に保持させるためで、 下四桁はパーミッション用です。ファイルのパーミッションは ディレクトリではなく別のところに保持されています。 |
|
はじめあして。 この掲示板スクリプト、すばらしいです。いつも参考にしてます。 いきなりなんですけど、 2ちゃんねるみたいにレス式にするつもりないですか。 今のままだと、レスが分散してみにくいし、 それゆえ1つの話題に(2chみたいに)何百とレスつけるのは無理だし。 とゆーことで。 |
|
2ちゃんねるみたいに 「あげ」だの「さげ」だの「逝け」だの「氏ね」だのという書き込みは 見たくないです。 2ちゃんねるの何百というレスの半数は、そういった 「意味不明の書き込み」のように思えます。 そのようなレスを数多く書き込むよりも、今までのように 要点を的確に書いて頂いた方が、情報を得る側としてはありがたいです。 ここには検索機能もありますから、自分に必要な情報は 検索して探し出せば良いことですし、それで見つからなかった場合は 質問をすれば良いと考えています。 今のままでかまわないと思うのですが、常連の皆様方はどうですか? |
|
>>1797 rosegarden rosegardenさんには自明のことかもしれませんが。 ls -lで見えるサイズが、各ファイル(ディレクトリもファイル) に対応するi-node内のサイズ情報を見ているのは、 rosegardenさんの説明のとおりです。 ディスク上の割り当てが(効率の為に)ブロック単位で行われるのも rosegardenさんの言うとおりです。 普通ファイルの場合、i-node内のサイズ情報はファイルの末尾への書き込みの オフセットで決まります。 8192バイトseekして1バイト書き込むとサイズは8193バイトです。 seek部分がカラだとブロックは割り当てられません。 俗に穴のあるファイルと呼ばれます。 ディレクトリの場合、i-node内のサイズ情報は割り当てられたブロックサイズ そのものです。 理由は単に、本当のサイズ(が定義できたとしても)たいして意味がないからでしょう。 |
|
白状してしまうと、スレッド表示が欲しい、と前から思ってました。 >>1799 通行人ですが、一言。 2chのような書き込みがされることと、掲示板のユーザインターフェースは 全く別だと思います。 書き込みの内容や質は、場の雰囲気で決まるだけだと思います。 |
|
たけし怪獣記を、霊能力者から、もらいました。怖いよー。 |
|
>>1800 gixs > 普通ファイルの場合、i-node内のサイズ情報はファイルの末尾への書き込みの > オフセットで決まります。 > 8192バイトseekして1バイト書き込むとサイズは8193バイトです。 > seek部分がカラだとブロックは割り当てられません。 > 俗に穴のあるファイルと呼ばれます。 穴のあるファイルという言葉ははじめて伺いました。 実はかなり無知な方なので、こうやって教えて頂くと助かります。 参考になる書き込みどうもありがとうございました。 |
|
>>1803 rosegarden > 穴のあるファイルという言葉ははじめて伺いました。 では、ついでに。 穴あきファイルの作り方。 % perl -e 'open(OUT,">tmp");seek(OUT,1000000,0);print OUT "a"' 穴あき部分のデータは HDD には存在しません。ですから、 % ls -s tmp で使用ブロック数を見ると、16 となっています。 しかし、穴あき部分を read(2) すると、最初から 0x00 が 入っているかのように扱われます。ですから、 % cp tmp tmp2 % ls -s tmp tmp2 16 tmp 992 tmp2 と、ファイルをコピーしただけで一気にファイルサイズが膨らみ、 file system full になってしまう可能性がありますので、注意が必要です。 |
|
>>1798 筋肉。 >>1799 通行人ですが、一言。 >>1801 gixs ここが 2ch 的な場になるのと、2ch 的システムを取り入れるのは、 gixs さんの言われる通り別問題でしょう。2ch 的システムは結構 使いやすいと思います。 で、これまでスレッドタイプは特に検討していなかったのですが、 ツリー型 http://www.so-net.ne.jp/ClubHouse/room/pc_scramble/pc_scramble.html と 非ツリー型 http://www.wakusei.ne.jp/twn/lng/green/wwwlng.cgi http://cocoa.2ch.net/unix/index2.html がありますね (とほほラウンジも 2ch も、データ構造としては 同じでしょうから、両方の形式で表示できるようにしてもいいし)。 どちらがよいですか。また、その理由があれば教えて下さい。 ちなみに、なぜ現在のようなウナギの寝床式掲示板にしたかと いうと、管理者が楽だからです。「新しい話題だから新しいスレッドを 立てろ」だの「クソスレ立てんなゴルア」とか「1の主治医です」とか 書かなくて済むし ;-) でも、情報が混ざって探しづらいということならば検討はしてみます。 # それを補うつもりで >>数字 形式のリンクを導入してみました。 # 将来的にはその情報からツリー形式を抽出できないかな、と。 あと、できればご自分が使いにくいと思う理由を分析していただ けるととってもありがたいです (それが一番難しいんですけれども)。 使いやすい掲示板というのは永遠の課題ですので、今回のような 大規模な改変や、こまかなユーザインタフェースまわりまで、提案 していただけるのはありがたいことです。 しかし、最近これまでにも増して忙しくなってしまったので、 あまり期待はしないで下さいね。 |
|
>>1804 68user >穴あきファイルの作り方。 > % perl -e 'open(OUT,">tmp");seek(OUT,1000000,0);print OUT "a"' ああ、わかりました。lseek はファイルサイズを越えても seek できるという性質を使っているんですね。 古い UNIX のシステムコールの本で見たことあるのですが、 その時には何が何だかさっぱり分かりませんでした。 man lseek しても出てますね。 >The lseek() function allows the file offset to be set beyond the end of >the existing end-of-file of the file. If data is later written at this >point, subsequent reads of the data in the gap return bytes of zeros (un- >til data is actually written into the gap). 色々とありがとうございます。勉強になります。 >>1805 68user >ちなみに、なぜ現在のようなウナギの寝床式掲示板にしたかと >いうと、管理者が楽だからです。「新しい話題だから新しいスレッドを >立てろ」だの「クソスレ立てんなゴルア」とか「1の主治医です」とか >書かなくて済むし ;-) これは確かにそうですね。スレッド式にしても書き込む方が神経を 使わないとスレッドの意味が無くなるでしょうし。 個人的にはどちらでも構わないのですが、スレッド式にしたときに 68user さんがどんなスクリプトを書かれるのかは興味のあるところです。 |
|
ツリー式だと、レスのレスのレスの・・・ってやってくとどんどん 右端によってって、めちゃ見にくいと思う。 とほほラウンジは、スレ見る度にいちいちマウスうごかすのがめんどう。 ということで、2chは、やはりすばらしいと思う。 |
|
>>1770 68user http://yamama.51.net/cgi-bin/minibbs.cgi?log=395 うひひひ。 えっと、自動リンクのところを、 こんな感じにしてみた。$strは、もうURLエンコードされてるっていうことで。 &以外は、はっちゃいけないんだから、、、。 $str =~ s#(s?https?://(?:[\-_.!~*'()a-z0-9;/?:\@=+\$,%\#]|&)+)#<a href="$1">$1</a>#ig; |
|
Xlibでの質問です。 日本語文字列をウィンドウの左上(x:0,y:0)に表示するのを書いています。 ソースコードはこれです。 http://homepage1.nifty.com/tyuuki/tmp/Makefile http://homepage1.nifty.com/tyuuki/tmp/drawstr.c 実行結果は(うちのtwmだと)このようになります。 http://homepage1.nifty.com/tyuuki/tmp/drawstr.jpeg なぜか上の方に隠れてしまいます。 本当は、 http://homepage1.nifty.com/tyuuki/tmp/drawstr2.jpeg のようになってほしいんです。 # これは、多分タイトルバー(?)の長さを求めてやればいいんでしょうけど…。 XCopyAreaで0, 0を指定してるのにこうなってしまうのは、どうしてなんでしょうか? 教えてください。 |
|
>>1807 ひろし。 > ツリー式だと、レスのレスのレスの・・・ってやってくとどんどん > 右端によってって、めちゃ見にくいと思う。 それは同感ですね。あと、現 SEGA BBS のような、ツリーを一括して 表示するのは最悪だと思います。とにかく見にくい。 >>1808 やまま > こんな感じにしてみた。 どうもです。参考になります。 >>1809 Yuuki > なぜか上の方に隠れてしまいます。 XDrawString/XmbDrawString に与える原点 x,y は、文字列の左下の 座標を与えます。本当はもうちょっと複雑で、原点に 10,10 を与えた としても、フォントの lbearing, descent の値によっては、9,10 や 10,11 にドットが描画される可能性はあります。そこらへんの情報は XmbTextExtents で取得できます。 |
|
このサイトのUNIXシステムコールのopendirの説明にあったサンプルコードを打ち込んでみたのですが、 ファイル名の頭2文字が欠けてしまいます。dir->d_nameに-2すればファイル名の頭を指してくれるのですが 何故なんでしょう。OSは SunOS 5.5.1です。sys/dir.hを見てもちゃんとファイル名エントリがd_nameで定義されているのに。何か障害になるものがあるのでしたらお教え下さい。 |
|
>>1811 Donchan SunOS上でファイル名2文字切り落としが発生するということであれば、 おそらく使用されているコンパイラに問題があるものと思われます。 以下のアナウンスが参考になるのではないでしょうか。 http://www.sun.co.jp/tech/faq/solaris2_ja/Q6.19.html 以上、通りすがりの者でした。 |
|
>>1810 68user > XDrawString/XmbDrawString に与える原点 x,y は、文字列の左下の > 座標を与えます。 今まで左上にだと思いこんでました…。 > そこらへんの情報はXmbTextExtents で取得できます。 これで解決しました。 http://homepage1.nifty.com/tyuuki/tmp/drawstr.c このようになりました。 ありがとうございます。 |
|
>>1813 Yuuki > これで解決しました。 > http://homepage1.nifty.com/tyuuki/tmp/drawstr.c http://homepage1.nifty.com/tyuuki/tmp/drawstr2.c ですよね。 誠に勝手ながら、後から見た人のために drawstr2.c を貼っておきます。 行数短縮のため、少々コードスタイルをいじらせていただきました。 もしまずければ削除いたします。 ---- #include <stdio.h> #include <locale.h> #include <X11/Xlib.h> #include <X11/Xutil.h> static XFontSet load_font( Display *display, const char *font_names ){ char **miss_str; int miss_cnt; char *def_str; return XCreateFontSet( display, font_names, &miss_str, &miss_cnt, &def_str ); } static int ask_text_height( XFontSet font, const char *str ){ XRectangle rect; XmbTextExtents( font, str, strlen( str ), &rect, NULL ); return rect.height; } int main( int argc, char **argv ){ Display *display; Window window; GC gc, gc_clr; unsigned long background, foreground; XFontSet font; Pixmap pixmap; const int width = 640; const int height = 480; const char *message = "こんにちは。"; if ( setlocale( LC_CTYPE, "" ) == NULL ){ printf( "setlocale error\n" ); exit( 0 ); } display = XOpenDisplay( NULL ); font = load_font( display, "-misc-fixed-medium-r-normal--14-*-*-*-*-*-*-*,*" ); background = WhitePixel( display, 0 ); foreground = BlackPixel( display, 0 ); window = XCreateSimpleWindow( display, DefaultRootWindow( display ), 0, 0, width, height, 0, 0, background ); pixmap = XCreatePixmap( display, window, width, height, DefaultDepth( display, 0 ) ); gc = XCreateGC( display, window, 0, 0 ); XSetBackground( display, gc, background ); XSetForeground( display, gc, foreground ); gc_clr = XCreateGC( display, window, 0, 0 ); XSetBackground( display, gc_clr, background ); XSetForeground( display, gc_clr, background ); XMapRaised( display, window ); XSelectInput( display, window, ExposureMask ); while ( 1 ){ XEvent event; XNextEvent( display, &event ); switch ( event.type ){ case Expose : XFillRectangle( display, pixmap, gc_clr, 0, 0, width, height ); XmbDrawString( display, pixmap, font, gc, 0, ask_text_height( font, message ), message, strlen( message ) ); XCopyArea( display, pixmap, window, gc, 0, 0, width, height, 0, 0 ); break; } } } |
|
>>1814 68user > http://homepage1.nifty.com/tyuuki/tmp/drawstr2.c ですよね。 すいません。 間違えていました…。 > もしまずければ削除いたします。 全然まずくないです。 今までのファイルをまとめておきました。 http://homepage1.nifty.com/tyuuki/archive/drawstr.tar.gz |
|
FreeBSD4.2R をインストールしたのですが、サウンドの設定がよくわからずつ まずいてしまいました。いろいろHPや書籍を調べて以下のような処理を行いま したが、以前としてサウンドが鳴りません。設定で間違っている箇所が あれば指摘して頂きたいです。ちなみに、サウンドカードはYamahaのYMF740です。 1. カーネルの再構築 # cd /usr/src/sys/i386/conf/ # cp GENERIC MY_KERNEL # vi MY_KERNEL ------------------------- 以下の内容を追加 # For PnP/PCI sound cards device pcm ------------------------- # config MY_KERNEL # cd ../../compile/MY_KERNEL # make depend # make install 2. デバイスファイルの作成 # cd /dev # ./MAKEDEV snd0 以下は関係ありそうなエラーログです。 > dmesg | grep pcm pcm0: <Yamaha DS-1 (YMF740?)> irq 9 at device 10.0 on pci0 pcm0: unable to map register space device_probe_and_attach: pcm0 attach returned 6 > cat /dev/sndstat cat: /dev/sndstat: Device not configured |
|
>>1816 taka > FreeBSD4.2R をインストールしたのですが、サウンドの設定が > よくわからずつまずいてしまいました。 えっと、サウンド・PnP まわりはいまだに何がなにやらわかりません。 うちでは device pcm を追加し、OS ブート時に boot -cv でコンフィグ モードにして > pnp 1 0 bios enable irq0 5 drq0 1 port0 0x220 port1 0x0 port2 0x388 と設定しました。 なんで IRQ が 5 なのか、なんで PnP なのに手動で設定しないと いけないのかさっぱりわかりません。pnpinfo(8) の出力も全く理解 できないし…。 僕は、IRQ って ISA のみにしかない概念? PCI のサウンドカードって あるの? …てな知識レベルなので、FreeBSD-users-jp などで質問された 方が早いかもしれません。 どこかにわかりやすい解説はないかなぁ。 |
|
>>1816 taka 私の場合次のようになっています。もっとも 4.3-BETA ですが、 要領は同じだと思います。 # For non-pnp sound cards with no bridge drivers only: device pcm0 at isa? irq 10 drq 1 flags 0x0 # # For PnP/PCI sound cards device pcm # The bridge drivers for sound cards. These can be seperately configured # for providing services to the likes of new-midi (not in the tree yet). # When used with 'device pcm' they also provide pcm sound services. # # sbc: Creative SoundBlaster ISA PnP/non-PnP # Supports ESS and Avance ISA chips as well. # gusc: Gravis UltraSound ISA PnP/non-PnP # csa: Crystal Semiconductor CS461x/428x PCI # For non-PnP cards: device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15 #device gusc0 at isa? port 0x220 irq 5 drq 1 flags 0x13 sbc ドライバか gusc ドライバのいずれかを有効にしてみてください。 このへんは試行錯誤がいるかもしれません。 LINT から関係する部分を copy&paste してきて 自分に関係ない部分をコメントアウトすると面倒ないです。 |
|
>>1812 通行人 パスの先頭に/opt/SUNWspro/bin/を追加することで正常に動作しました。互換性の問題だったのね……。 |
|
いきなりの質問でごめんなさい。 こちらの掲示板にはかなり詳しい方がいらっしゃるようなので、 教えて頂きたいのです。 今、UNIX上で動くクライアントサーバをC言語で作っています。 (ほとんど経験がないので、勉強しながらという感じです。) ちょうど、こちらに参考になるサンプルがあったので、それを元に 作っているところです。 自分の環境で、クライアントとサーバ間のソケット通信をすることが できることを確認したところです。 ここからが良くわからないところなのですが、 クライアントが複数あって、それぞれが別の処理を行う時、 サーバ側としては、そのクライアントをどう区別したら良いのでしょうか? selectを使って、任意のソケットに対して任意のデータを送信することは わかるのですが、では、任意のクライアントプロセスを区別するのは どうすれば良いのかが、いまひとつ、ぴんとこないのです。 たとえば、サーバ側の処理として、 クライアントA:サーバに「aaa」→「AAA」と変換してecho。 クライアントB:サーバに「bbb」→「BBBBB」と変換してecho。 クライアントC:サーバに「ccc」→「C」と変換してecho。 というのがあるとします。 各クライアントが順不同のタイミングで接続してきた場合、 どのクライアントがどのソケットに接続しているのかを知るのには、 どのような方法があるのでしょうか? ついでですが、クライアントは、おなじ内容のものが複数接続してくる 場合もあります。(AとA'とA''、みたいに。) つまり、ソケットディスクリプタのID(と言って良いのでしょうか? よく、 sd[0]とかsd[i]とかと書かれているものです。)と クライアントをどうリンクさせれば良いのかがわからない、んです。 C言語で処理するレベルでの話だろうとは思うのですが、 具体的なサンプルがなくて、方法を理解することもできず、困っています。 どうぞ、知恵をお貸しください。 いきなり現れて勝手なお願いをしていますが、よろしくお願いします。 |
|
>>1820 みみ > 各クライアントが順不同のタイミングで接続してきた場合、 > どのクライアントがどのソケットに接続しているのかを知るのには、 > どのような方法があるのでしょうか? http://X68000.startshop.co.jp/~68user/net/c-echo-2.html を見てください。 getpeername(sock, (struct sockaddr *)&peer_sin, &len) でソケットの接続先のアドレス (IP アドレス+ポート番号の 情報) が peer_sin に格納されます。 - IP アドレス … inet_ntoa(peer_sin.sin_addr) - ホスト名 … gethostbyaddr - ポート番号 … ntohs(peer_sin.sin_port) でそれぞれ取得できます。 そのページのサンプルの echo-server-select.c では、 accept したときに struct CLIENT_INFO という構造体に ホスト名・IP アドレス・ポート番号を格納し、その後 クライアントの情報が必要になったら struct CLIENT_INFO を 参照していますが、毎回ソケットに対して getpeername しても動作はします。 |
|
素早い解答、ありがとうございます。 確認の意味で、質問をさせて頂きます。 そうすると、サーバ側の処理としては、下記のように なるということでしょうか? ・クライアントからの接続がある。 (sd[i]がインクリメントされる。) ・接続してきたクライアントからの処理要求がある。 (ここで、クライアント側のプロセスが何なのかが判明する。) ・getpeername を行うことで、sd[i]の”i”の値を得る。 (これにより、接続元クライアントのプロセスとを リンクさせることができる。) 上記のような解釈で、誤りがありませんでしょうか? getpeername については、もう少し勉強をしてみます。 (実は、サンプルプログラムで良く理解できていなかった部分です。 クライアント情報を格納しているのは判ったのですが。 付け焼き刃のかなしさです。でも頑張ります。) 本当に、ありがとうございます。 後程、結果を報告に来ます。 |
|
>>1822 みみ > ・クライアントからの接続がある。 > (sd[i]がインクリメントされる。) > ・接続してきたクライアントからの処理要求がある。 > (ここで、クライアント側のプロセスが何なのかが判明する。) > ・getpeername を行うことで、sd[i]の”i”の値を得る。 > (これにより、接続元クライアントのプロセスとを > リンクさせることができる。) うーん、説明が難しいですね。一度わかってしまえば何てことはない のですが…。 クライアントとサーバとの接続点がソケットです。複数のソケットが あるとき、それらを識別するのはソケットディスクリプタ (3 とか 4 などの整数値) です。別のソケットには、必ず別のソケットディスク リプタが割り振られます。 http://X68000.startshop.co.jp/~68user/net/c-echo-2.html で言うと、 for ( i=0 ; i<FD_SETSIZE ; i++ ){ if ( FD_ISSET(i, &target_fds) ){ if ( i == listening_socket ){ accept して、新クライアントのソケットディスクリプタを取得 } else { ソケットディスクリプタ i からデータが送られてきた } } } という感じです。例えば i==5 のとき FD_ISSET が真ならば、 今からやりとりしたいのは「ソケットディスクリプタ 5」です。 このクライアントとの接続が切れない限り、この番号は不変です。 データを読みたいなら read(5, buf, sizeof(buf)) すればよいし、 データを送りたいなら write(5, "hoge", sizeof("hoge")-1) とします。 if ( i == listening_socket ){ accept して、新クライアントのソケットディスクリプタを取得 } else { len = read(5, buf, sizeof(buf)); write(5, buf, len); } とすれば、それで echo サーバのでき上がりです。ソケット ディスクリプタ 5 からデータを読んで、ソケットディスクリプタ 5 にデータを書いているので、echo した結果が別クライアントに 送られることはありません。 つまり、ソケットがいくつあっても「ソケットディスクリプタが 確定している=クライアントが識別できる」と言えます。 getpeername は、相手側の IP アドレスやポート番号を知りたい 場合に使いますが、根本的にはそれらの情報がなくてもどの クライアントとやりとりしているのか区別できます。 |
|
あ、また書き込んでくださったのですね。 重ね重ね、ありがとうございます。 >>1823の内容からすると、 「selectにより、各クライアントを固有のものとして認識できる為、 サーバ側でプログラム的に管理しなくても大丈夫。」 ということなのでしょうか? (うう、一所懸命にプログラム書いちゃいましたけど。) 昨日の書き込み(1822)の内容の処理を行うプログラムは、 意図した通りの動作をしていることは、確認できました。 が。 システムコールに依存した方が信頼性は高いので、 もう一度、見直すことにします。 ありがとうございました。 また、報告に伺います。 |
|
最初のご質問では >>1820 みみ > どのクライアントがどのソケットに接続しているのかを知るのには とありましたので、IP アドレスやポート番号などの情報が 得たいのかと思い getpeername を使えばよいという回答を しましたが、どうやらそうではないのですね。 TCP で、複数のクライアントが接続してきたときに、クライアントを 区別するために、サーバ側で何か処理を行う必要があるか、という 意味ならば、 >>1824 みみ > 「selectにより、各クライアントを固有のものとして認識できる為、 > サーバ側でプログラム的に管理しなくても大丈夫。」 という認識でよろしいかと思います。 |
|
せっかく指摘して頂いたのに返答遅れてすいませんでした。 >>1818 rosegarden 指摘して頂いたとおり、LINTを見ると関係ありそうなものはいかの 通りでした。 # snd: Voxware sound support code # sb: SoundBlaster PCM - SoundBlaster, SB Pro, SB16, ProAudioSpectrum # sbxvi: SoundBlaster 16 # sbmidi: SoundBlaster 16 MIDI interface # pas: ProAudioSpectrum PCM and MIDI # gus: Gravis Ultrasound - Ultrasound, Ultrasound 16, Ultrasound MAX # gusxvi: Gravis Ultrasound 16-bit PCM (do not use) # mss: Microsoft Sound System # css: Crystal Sound System (CSS 423x PnP) # sscape: Ensoniq Soundscape MIDI interface # sscape_mss: Ensoniq Soundscape PCM (requires sscape) # opl: Yamaha OPL-2 and OPL-3 FM - SB, SB Pro, SB 16, ProAudioSpectrum # uart: stand-alone 6850 UART for MIDI # mpu: Roland MPU-401 stand-alone card sbcドライバかguscドライバのいずれかを有効にすればよいとの後指摘でした が、私の使用しているドライバはYamahaのYMF740なので上記のうち 「opl」を有効にするのかなと初心者なりに考えて見たのですが。 >>1817 68user まだ、勉強不足でよくわからないのですが、コンフィグモードというもので 設定すると何らかの設定ファイルが書き変わるのでしょうか? まだ、恐くて試していません。 |
|
>>1826 taka > 指摘して頂いたとおり、LINTを見ると関係ありそうなものはいかの > 通りでした。 > > # snd: Voxware sound support code > # sb: SoundBlaster PCM - SoundBlaster, SB Pro, SB16, ProAudioSpectrum > # sbxvi: SoundBlaster 16 4.2-RELEASE でサウンドを利用する場合 2 通りの方法があります。 (1) pcm ドライバを使う (2) snd ドライバを使う 4.2-RELEASE までなら、snd ドライバが使えます。 で、taka さんが関係ありそうとおっしゃっている opl ドライバは snd ドライバを使う際に使います。 これは pcm ドライバとは一緒に使えません。 (忘れたのですが、指定しても片方が無効になるのだと思いました。) pcm ドライバを使うのなら前の私の書き込みのように sbc ドライバか gusc ドライバあたりを有効にします。 一方, snd ドライバを使うのなら、taka さんの場合なら、 おそらく snd, sb, sbxvi, sbmidi, opl あたりを有効にするのだと 思います。sbxvi あたり存在しないというメッセージが出るかも知れませんが、 そのへんは試行錯誤でやってみてください。 どうしても opl がよさそう、あるいは、簡単そうというのなら、 snd ドライバを有効にして pcm ドライバは使いません。 余談ですが、snd ドライバを使う方法は「FreeBSD 徹底入門」あたりに 書かれている方法ですが、このドライバ自体かなり古いので、 現在では起動時に warning が出ます。 この warning が出ても害はないので心配はいりません。 ところが、snd ドライバは今年に入ってからなくなったと思うので、 4.3-RELEASE からは snd ドライバは使えません。 |
|
>>1827 rosegarden 親切に説明して頂きありがとうございます。 >4.2-RELEASE でサウンドを利用する場合 2 通りの方法があります。 >(1) pcm ドライバを使う >(2) snd ドライバを使う 早速、上記(1)の方法でカーネルの再構築を行ってみました。 以前の書き込みを参考にして # For non-pnp sound cards with no bridge drivers only: device pcm0 at isa? irq 10 drq 1 flags 0x0 # # For PnP/PCI sound cards device pcm を追加し、sbcドライバ、guscドライバを交互に有効にしてみました。 dmesgの関係ありそうなログは前と変わらず、下記の通りでした。 pcm0: <Yamaha DS-1 (YMF740?)> irq 9 at device 10.0 on pci0 pcm0: unable to map register space % cat /dev/sndstat cat: /dev/sndstat: Device not configured どちらのドライバを用いても認識していないみたいでした。 --- ところで、話は変わるのですがやはり初心者にはFreeBSDは敷居が高いものな のでしょうか?Linuxなどは書籍などが豊富で分かりやすく書かれたものが多 い印象を受けます。一方、FreeBSDは書籍も少なく、またある程度の知識を もっていないと私の場合のようにすぐつまづくように感じました。 |
|
>>1828 taka > mesgの関係ありそうなログは前と変わらず、下記の通りでした。 > pcm0: <Yamaha DS-1 (YMF740?)> irq 9 at device 10.0 on pci0 > pcm0: unable to map register space うーん、4.2-RELEASE だとまだ pcm ドライバが完全じゃないからかな? いま出張中で、-current のソースしかてもとに無いし、 cvsweb で時間をかけて調べられる状態でもないので、 はっきりしたことは言えませんが、 ds1.c: $FreeBSD: src/sys/dev/sound/pci/ds1.c,v 1.21 2000/12/25 01:42:13 cg Exp $ となっていますので、snd ドライバを使うしかないのかも知れません。 上の 2000/12/25 という日付は 4.2-RELEASE が出た後の日付ですから。 あと変だなと思う点は port アドレスが認識されていない点です。 >pcm0: <Yamaha DS-1E (YMF744)> port 0xfc8c-0xfc8f,0xfcc0-0xfcff \ >mem 0xfedf8000-0xfedfffff irq 9 at device 9.0 on pci0 ちゃんと認識されている場合、こんな感じになると思うのですが。 私の知っている範囲で言えば、サウンドドライバの設定には問題無いので、 他の設定、例えば PnP BIOS とかノートパソコンなら PCCARD の設定なんかの問題も考えられるように思います。 |
|
>>1829 rosegarden 度々すいません。 >ds1.c: > $FreeBSD: src/sys/dev/sound/pci/ds1.c,v 1.21 2000/12/25 01:42:13 cg Exp $ 確認して見たところ ds1.c : $FreeBSD: src/sys/dev/sound/pci/ds1.c,v 1.8.2.4 2000/10/05 05:12:31 cg Exp $ となっていて、随分古いような気がしました。 そこで、良く分からないのですが単純に「ds1.c」だけ currentから最新のものをダ ウンロードしてカーネルを再構築するという方法でよろしいのでしょうか? いろいろ関連するソースもあると思うので、単純にそのようにしてよいものか 分かりませんが |
|
いつもこのページを参照させていただいております。 今回初めて書きこませていただきます。 Linux上のTrueColorのディスプレイで実験データ表示用の カラー等高線の図を書くXプログラミングの必要に迫られました。 当初は等高値に値するRGBの各256値を配列に入れて、 XlibのXCreateImage()を使って画面表示すればOKと思っておりました。 しかし、どうやらXウインドウにRGBAフォーマットで渡さなければうまく 表示出来ないようで、単色の色をRGB値で設定してもアルファー値の設定 方法がわからないために「砂あらし」画面の様な画面しか表示されません。 (白、黒などはRGB=各0、256、アルファー=0,256とすれば表示できる) 設定を変えて何とかしても良いのでしょうが、RGBAについて理解して おきたいために、RGBAでの表示にこだわりたいと思います。 何らかのX11上のライブラリ、もしくはRGBA規格についてご存じのお方 ご教授お願いいたします。 |
|
>>1830 taka > そこで、良く分からないのですが単純に「ds1.c」だけ currentから最新のものをダ > ウンロードしてカーネルを再構築するという方法でよろしいのでしょうか? > いろいろ関連するソースもあると思うので、単純にそのようにしてよいものか > 分かりませんが いま自宅に戻ったので、ソースを見比べてみたのですが、だいぶ変わっていますね。 このソースの感じをみると ds1.c の入れ換えだけでは無理だと思います。 4.2-RELEASE 相当のソースと最新のソースを比べると激しく変化しています。 結局、カーネルのソース全体を入れ換えねばならず、そうすると今度は 全部の基本コマンドと /etc 以下のファイルの入れ換えが必要になってきます。 あと数日で 4.3-RELEASE が出るので、新しくしたい場合にはそれを 待った方が良いです。急ぐのなら、4.3-BETA というのが ftp://current.jp.FreeBSD.org/pub/FreeBSD/snapshots/i386/4-LATEST/ にあります。マシンが 2 台あるのなら、片方にこのファイルをダウンロードして 目標とするマシンにインストールすることも可能です。これは かなり 4.3-RELEASE に近い物になるはずです。 しかしながら、初心者の方にこれを使うことはお勧めできません。もっと厄介な 問題を抱える可能性があります。 話を原点に戻しましょう。 サウンドを使うという場合には次のことをまず考慮した方が良いと思います。 (1) snd ドライバの使用。 (2) PnP が有効になっているか (3) ノートパソコンだと PCCARD 関係の設定。PCCARD のドライバが 使う irq とサウンド関係はバッティングしがちです。 (4) PnP を止めて、Legacy モードでマシンを起動するようにして、 Windows (同じマシンに入っていれば) の デバイスドライバのところをみて irq とか iomem などを メモして、それをカーネルの設定ファイルに指定して再構築します。 (3) までやってだめなら、FreeBSD-users-jp というメーリングリスト があるのでそれに参加して質問してみた方が私なんかを相手にするよりも良いかも しれません。メーリングリストの購読の案内は http://www.jp.freebsd.org/ml.html#FreeBSD-users-jp にあります。その際には、カーネルの設定ファイル全部と dmesg の出力 「全部」を添付してください。理想的なのは /boot/loader.conf に kernel_options="-v" というのをいれて再起動し dmesg をとってください。より詳細な情報が dmesg でみられます。みる人がみれば、普通の dmesg よりも アドバイスしやすいはずです。 どうも、サウンドの設定には問題がないようなので、 他のものと衝突しているような気がします。この場合に重要なのは ノートパソコンで PCCARD を使っているかどうかです。 あとは普通に質問を書けば良いかと思います。検索をしましたが、YMF740 の 報告は見当たらず、資料さえ全部添付すれば、 そのまま質問をしても怒られるようなことはないと思います。 それで駄目なら、ソースの問題ということになります。 ファイルの入れ換えは本当に最後の手段です。 |
|
>>1832 rosegarden > マシンが 2 台あるのなら、片方にこのファイルをダウンロードして > 目標とするマシンにインストールすることも可能です。これは > かなり 4.3-RELEASE に近い物になるはずです。 補足です。サイズは X 抜きで、200MB 弱です。通常のアナログ回線での ダウンロードだと 17 時間程みてください。専用線なら、30 分程度で すむ場合もあります。ISDN なら 14 時間程度ですむかも知れません。 インストールフロッピィのイメージだけダウンロードして ftp でインストール という手段もありますが、これはもう絶望的に時間がかかります。 やるのなら、別マシンにダウンロードしてから、そのマシンから ftp インストール というのが実際的です。 どちらにしても、初心者の方がするのはきつすぎます。 ともかく、入れ換えを検討する前に出来ることはあると思いますから、 考えてください。 |
|
>>1832 rosegarden 毎回の早い返答ありがとうございます。 >サウンドを使うという場合には次のことをまず考慮した方が良いと思います。 >(1) snd ドライバの使用。 「4.3-RELESEからsndドライバは使用されない」とおっしゃっていたので 将来性を考えて(?)pcmドライバのみ試してみました。 >(2) PnP が有効になっているか BIOSセットアップでプラグ&プレイが有効になっていることを確認しました。 >(3) ノートパソコンだと PCCARD 関係の設定。PCCARD のドライバが > 使う irq とサウンド関係はバッティングしがちです。 デスクトップで、またPCCARDもないのでこれは関係ないかも(?) >(4) PnP を止めて、Legacy モードでマシンを起動するようにして、 > Windows (同じマシンに入っていれば) の > デバイスドライバのところをみて irq とか iomem などを > メモして、それをカーネルの設定ファイルに指定して再構築します。 ハードウェア関係の設定(irq,iomemなど)は、自分の勉強不足のせいもあって よくわからないのが現状です。これから、ハード関係の勉強をして最低限の ことは覚えて行こうと思います。とりあえず、マシンも1台しかないので 雑誌などに4.3-RELEASEが添付されたときにOSを再インストールしてみようと 思います。 初心者の私に丁寧に解説して頂いてどうもありがとうございました。 |
|
>>1831 sakachan > 何らかのX11上のライブラリ、もしくはRGBA規格についてご存じのお方 > ご教授お願いいたします。 少なくとも X11R6.3 では RGBA には対応していないような気がします。 # 根拠は cd /usr/X11R6/include; grep -i rgba *,*/*。 gtk+、Qt、OpenGL あたりにそれらしき関数があったので それを使うか、 あるいはアルファ値を自前で計算することになると思います。 |
|
たまに出てきてアホな質問で住みません。 Perl で質問です。 (1) $path = '/usr/local/nantoka/us/us/file'; の /us/ を /jp/ に変えようと思ったら、 $path = s|/us/|/jp/|g; ではうまくいきません。 $path =~ s|/us/|/jp/| while $path =~ m|/us/|; ではうまくいったのですが、こんなんでいいんでしょうか。 (2) コマンドラインの mkdir -p で中間的なディレクトリをイッキに 作ってくれますが、Perl の mkdir では作ってくれません。 いまは `` でコマンドを呼んでいますが、これもしょうがないでしょうか。 |
|
>>1836 ふくし > $path = s|/us/|/jp/|g; > ではうまくいきません。 = じゃなくて =~ という話でしょうか。 > コマンドラインの mkdir -p で中間的なディレクトリをイッキに > 作ってくれますが、Perl の mkdir では作ってくれません。 perl5 の標準モジュール File::Path にある mkpath がご希望の ものでしょう。使い方は perldoc File::Path をご覧下さい。 |
|
>= じゃなくて =~ という話でしょうか。 あっすいません、これは掲示板の書き違いです。 正しく動かないスクリプトはちゃんと =~ と書いています。 ../us/us/.. の場合、先頭の /us/ を置換したら続きの us/ から 処理するので s///g ではいかない、という話のようです。 File::Path はありがとうございました! |
|
>>1838 ふくし > ../us/us/.. の場合、先頭の /us/ を置換したら続きの us/ から > 処理するので s///g ではいかない、という話のようです であれば、man perlre に \G … Match only where previous m//g left off (works only with /g) とありますので、 $path =~ s|\G/us/|/jp/|g; ではどうでしょうか。 >>1836 ふくし > $path =~ s|/us/|/jp/| while $path =~ m|/us/|; でもいいのですが、定番の書き方としては、 1 while ($path =~ s|/us/|/jp/|); というのがありますね。 |
|
>>1839 68user > $path =~ s|\G/us/|/jp/|g; > ではどうでしょうか。 ありゃ、全然ダメだ。というか、意味が全く逆ですね。 こういうときに使う perl の regexp ってなかったっけなぁ。 |
|
にゃるほど、1 while でがんばります。(ヘンな日本語) ありがとうございました。 もいっこズにのって質問。 stat や split をリストに代入して1番目と5番めと7番目を 使いたい、とかいうとき、ぼくは他のを $dummy というので 受けていますが、たまに -w で、1回しか使ってないけど 書き間違えてませんかと言われます。 これを言われないような /dev/nul みたいな変数ってないんでしょうか。 |
|
>>1834 taka > >(1) snd ドライバの使用。 > 「4.3-RELESEからsndドライバは使用されない」とおっしゃっていたので > 将来性を考えて(?)pcmドライバのみ試してみました。 ええ、出来ればその方が良いのですが、しかし、鳴らないものを使っても いまの taka さんの needs にはあわないだろうということで、 snd ドライバをお勧めしたのです。 しかし、最初は設定ファイルのレベルだと思ったので、 お節介をしたのですが、 まったく役に立たず、時間ばかりとってしまいました。 申し訳ありませんです。 |
|
>>1841 ふくし ($dummy, $dummy, $dummy, $num1, $num2) = (0,1,2,3,4,5); と、一度に複数回 $dummy を使えば used only once: possible typo の warning は抑止できます。あと、 ($num1, $num2, $num3) = (split(/ /))[1,5,7]; という手もありますが、可読性が低下しますね。 本質的には 「1番目と5番めと7番目を使いたい」という 使い方をせずに $foo = $o->getFoo; $bar = $o->getBar; $baz = $o->getBaz; などと書くように努めるべきだと思いますが、全ての場面で それができるわけでもなく、悩ましい限りです。 |
|
はじめまして。 いきなりですが、 >これを言われないような /dev/nul みたいな変数ってないんでしょうか。 (undef, undef, undef, $num1, $num2)=(0,1,2,3,4); こんなのでどうですか? |
|
>>1841 ふくし >>1843 68user >>1844 ふじ つぎのようにすれば文句をいわれませんでした。 #!/usr/bin/perl -w my ($login, $pass, $uid, $gid) = getpwnam('root'); print "$login:(password):$uid:$gid\n"; exit; my をとったものと、較べてください。 ちなみに動作環境は perl 5.00503 ないしは perl 5.6.0 です。 |
|
>>1845 rosegarden この他にも #!/usr/bin/perl -w use vars qw($login $pass $uid $gid); ($login, $pass, $uid, $gid) = getpwnam('root'); print "$login:(password):$uid:$gid\n"; exit; などと、use vars で宣言しておけば文句を言われないようです。 詳しくは、perldoc vars してみてください。 |
|
にゃるほど、 ふじさん> リスト要素にすれば undef を左辺に持っていけるんですね。 undef = 3; だと怒られますけどね。(当たり前) これは言いたいことを強烈に表現できているような気がします。 rosegarden さん> my や use vars を使った方法もいいですね。 この問題がよく出てくるのはファイルの stat を受けるときなんですが、 こういう意味のある変数のときは変数名をつけておいて使わない (そのうち使うかもしれないので) というのが便利なので、使わせていただきます。 みなさんどうもありがとうございました。勉強になるー |
|
いつも拝見しながら勉強させていただいています。 Perlを使ったソケット通信について質問があります。 HTTPSサーバに対してのソケット通信です。 http://X68000.startshop.co.jp/~68user/net/http-2.html にあるように、通常のソケット通信はできたのですが、 相手がHTTPSになるとヘッダの都合か、まったくうまくいきません。 たとえば、 自分のサーバ →POST→ 相手のCGIのあるサーバ(https) ↓ ブラウザ上にデータを表示 ← 相手が出力したデータを取得 このようなイメージです。 通常のHTTPでのソケット通信の場合、出力するヘッダは、 "POST /sample.cgi HTTP/1.0\r\n" "\r\n(空行)" "(POSTで送信するデータ群)" このような感じだと思うのですが、HTTPS相手だと まったく受け付けてくれません・・・。 これってSSLを相手が利用している以上、不可能なことなのでしょうか? 皆様の知識と知恵を貸してください、お願いします。 |
|
>>1848 d-jiro > このような感じだと思うのですが、HTTPS相手だと > まったく受け付けてくれません・・・。 としたいなら、自前で相手サーバのポート 443 (https の ポート番号) に繋げて、自前でデータを暗号化してから ソケットに送り、受け取ったデータは復号化する必要が あります。これを全部やるのはとてもとても面倒なので、 モジュールを使いましょう。 まず、OpenSSL (http://www.openssl.org) をインストール してください。で、 http://www.cpan.org/modules/by-module/Net/ から Crypt-SSLeay モジュールを入れて下さい。これは LWP を 使うことを前提としたもののようです。 あるいは、Crypt-SSLeay モジュールの代わりに Net::SSLeay というモジュールもあり、socket like に使えますが、現在は 保守されていないのかもしれません。 # http://www.cpan.org/modules/by-module/Net/Crypt-SSLeay-0.23.readme # http://www.cpan.org/modules/by-module/Net/Net_SSLeay.pm-1.05.readme なお、どちらも使ったことがないので、上に書いたことは 全て想像です。成功したか失敗したか結果を教えて下さい。 >>1844 ふじ そうか、undef っちゅうのがありましたね…。 >>1846 rosegarden これとは逆に、use vars すると warning が出なくなって 困ったことがあります (そのときは warning を出してほしかった)。 |
|
whoisのプログラムをプログラムソースを探しているのですが、 どちらにあるかご存知ありませんか? できればperlがいいのですが。 よろしくお願いいたします。 |
|
>>1850 whoisおしえてください > whoisのプログラムをプログラムソースを探しているのですが、 perl 版 http://ring.asahi-net.or.jp/pub/lang/perl/CPAN/authors/id/D/DH/DHUDES/ ついでに C言語版 (FreeBSD の whois。最近のは IPv6 化されています) http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/usr.bin/whois/whois.c whois プロトコル http://ring.asahi-net.or.jp/pub/doc/RFC/rfc1834.txt てなところでしょうか。 |
|
>>1849 68user >http://www.cpan.org/modules/by-module/Net/ >から Crypt-SSLeay モジュールを入れて下さい。これは LWP を >使うことを前提としたもののようです。 こちらの方法で試してみることにします。 おそらく数日後に結果が報告できると思います。 つまづきながらですが、また質問させていただくかもしれません。 ありがとうございました。 |
|
こんばんは、現在検索エンジンを作成中ですが、キーワード入力の所で いきなりつまずいています。 良く検索エンジン(goo,infoseek)等で検索文字を複数キーワード入力 し、キーワード間はスペースもしくは”|”パイプで区切る事をします。 単一キーワードは簡単に出来るのですが、このスペース区切りで 複数キーワードを引数にする方法がわかりませんが、宜しければお教え いただけないでしょうか? |
|
先日HTTPS接続のことで質問したものです。 HTTPS相手のPOSTでのCGI接続は、 Crypt-SSLeayモジュールを導入し、 LWPを使うことで解決しました。 部分的な引用でわかりにくいかもしれませんが、 $req = HTTP::Request->new( POST => "$url" ); $req->content_type('text/plain'); $req->content('$postdata'); とすることで、HTTPSだと意識することなく レスポンスをもらうことができました。 本当にありがとうございました。 |
|
>>1854 d-jiro > HTTPS相手のPOSTでのCGI接続は、Crypt-SSLeayモジュールを導入し、 > LWPを使うことで解決しました。 それはよかった。こちらの環境でも試してみましたが、 うまくいったようです。 >>1853 PHP > 一キーワードは簡単に出来るのですが、このスペース区切りで > 複数キーワードを引数にする方法がわかりません 複数キーワードに分割というのは $keyword = 'foo bar baz'; @keywords = split(/\s+/, $keyword); といったことですか? あるいは、複数のキーワードで検索するという ことですか? 後者ならば http://wakusei.cplaza.ne.jp/twn/wwwsrch.htm というのが参考になるかもしれません。 この CGI スクリプトは素直な書き方になっていますが、サーバへの 負荷はかなりのもので、実用には向きません。 最初のとっかかりとして、参考程度にとどめておくのがいいでしょう。 高速化のヒントは eval です。 |
|
http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse に ・環境はできるだけ詳しく ・マルチポスト禁止 ・回答をもらったら結果を報告する という注意点を追加しました。この場でいちいち注意したくはないので、 質問する前に是非ご一読下さい。 また、各メッセージの「No.1504 # 68user」などという表示の「#」を クリックすると、 http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=1500-1600#1504 というリンクに飛ぶようにしました。 # 更新履歴: # http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/wwwboard.cgi やはり設計が甘かったようで、この掲示板に美しく機能拡張するのは もう無理みたいです。スクラッチから書き直したいけど、きれいに 書ける自信がない…。 |
|
初めて書き込みをします。 早速ですが質問があります。 現在osをredhat6.2Jでsendmail8-9-3を使いメールサーバーを構築中です。 そこでcgiを使いメールを発信させると受信したメールのヘッダーのRecievedの部分の Fromがnobody@localhostとなってしまいます。。 こちらとしてはホストのアドレスを載せたいのですが・・・。 cgiは、 #! /usr/bin/perl $toname = 'xxx@aaa.bbb'; $fromname = 'yyy@ccc.ddd'; open(MAIL, "| /usr/lib/sendmail -t -i -f yyy") || die; print MAIL "from:$fromname\n"; print MAIL "to:$toname\n"; print MAIL "Subject: TEST\n"; print MAIL "Content-Type: text/plain;\n\n"; print MAIL "TEST\n"; close(MAIL); print "Content-type: text/html\n\n"; print <<END_OF_DATA; <HTML> <BODY>SendMail $err</BODY></HTML> END_OF_DATA exit; fromで指定したほうがもちろんサーバー側で,toで指定した方がクライアント側です。 sendmail.cfの編集にはsendmail.defを使っています。 はたしてcgiが悪いのかsendmailの設定がまずいのでしょうか? sendmail.defの設定がまずいなら一体どこを変えればいいのか。 ご教授の程をお願いいたします。 |
|
>>1857 ケンMK2 > Fromがnobody@localhostとなってしまいます。。 これってやっぱりまずいのかなぁ? Received に名前解決不可能な サーバ名が書いてあるメールって結構ありますよね。でも、それは ファイアウォールの中からだから許されるのかな。さすがに localhost はまずいかもしれない。 sendmail をまともに管理したことがないため正しい解決策はわかり ませんが、手元にある sendmail.def (sendmail-v8.def をいじった もの) には、 OFFICIAL_NAME='foo.bar.com' とあります。その他は特に設定していません。それを元に生成した /etc/sendmail.cf には Djfoo.bar.com と書いてあります。 Dj(サーバの FQDN) ですね。 あと、ユーザ名が nobody になるのもどうなんでしょうねぇ。 他の行に envelope from yyy などと -f で指定したユーザ名が 書いてあると思うので、それはそれでよいような気もするんですが…。 ちなみに手元の環境でも envelope from nobody となりますが、 僕がいいかげんに管理している sendmail なので、正しいか どうかはかなり怪しいです。 |
|
ケンさん> わーい。回答が書けるー わたしは、このようにしています。 $from = "kaori.iida\@morning.musume"; $to = "natsumi.abe\@morning.musume"; open MAIL, "|/usr/local/bin/nkf -j |/usr/sbin/sendmail -t -f $from" or die $!; print MAIL <<EOM; To: $to From:$from Subject: こんにちはー 元気だべさ。 EOM close MAIL; これで、次のようなメールが届きます。 To: natsumi.abe@morning.musume From: kaori.iida@morning.musume Subject: こんにちはー 元気だべさ。 ポイントは、-f パラメタで渡すのはエラーのときの戻りメールの宛て先で、 From: フィールドをメールの中に再度書かないといけないようです。 なお、スクリプトは EUC で、メールは JIS でないと文字化けするので、 nkf -j をかましています。 |
|
>>1858 68user >> Fromがnobody@localhostとなってしまいます。。 > これってやっぱりまずいのかなぁ? Received に名前解決不可能な > サーバ名が書いてあるメールって結構ありますよね。でも、それは > ファイアウォールの中からだから許されるのかな。さすがに > localhost はまずいかもしれない。 jp.FreeBSD.org の sendmail 君が付けた received も localhost に なっていました。少なくともあそこは変な設定になってはいない だろうということで、問題ないんじゃないでしょうか。 |
|
質問では有りませんが、気になったもので・・・ 自分の借りているレンタルサーバーのログに以下のような行がありました。 xxx.xxx.xxx.xxx - - [28/Mar/2001:20:00:52+0900] "GET http://www.intel.com/ HTTP/1.1" 200 1846 "-" "Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)" これってどう解釈すればいいのでしょう? 当然ですが該当するURLにファイルはありません。 試しに自己保有のLinux版Apacheに telnet でいろいろ試してみましたが、 ステータス 200 が出ることは有りませんでした。 単にサーバーのログ記録ミス(エラー?)なのでしょうか? こちらでも、こんなログが残る事は有りましたでしょうか? なんとなく気持ちが悪いので、判る方がいらっしゃれば教えてください。 |
|
>>1861 すな > 試しに自己保有のLinux版Apacheに telnet でいろいろ試してみましたが、 > ステータス 200 が出ることは有りませんでした。 FreeBSD 4.1-RELEASE + apache-1.3.12 で、 GET http://www.intel.com/ HTTP/1.0 でステータス 200 が出ました。ブラウザを普通に使っていれば、 PATH は必ず / から始まるはずですが、先頭が / でない PATH を 要求すると 200 が返るんですね。これって仕様かしら? |
|
>>1862 68user あら・・・ 環境が関係するようですねぇ。 Vine Linux 1.1CR Server version: Apache/1.3.3 (Unix) (Red Hat/Linux) な環境で、 $ telnet localhost 80 GET http://www.yahoo.co.jp/ HTTP/1.0 とすると、 HTTP/1.1 302 Found が返り… GET http://www.yahoo.co.jp/ HTTP/1.1 とすると、 400 Bad Request が返りました。 最初のログでは、HTTP/1.1 となっていたのに何故? アクセス元は、JPNICとINTERNICで調べられなかったので、新手の 攻撃かとも考えましたが違うようですね。 このログが出たApacheのバージョンは、Server: Apache/1.3.6 (Unix) でした… さらに上のサーバーで、 GET http://www.yahoo.co.jp HTTP/1.0 としたら、/ にした際のドキュメントが返って来ました。 もう一つおまけにWin版1.3.12のApacheでもステータス200で同じ動作でした。 #この動作は何??? う〜ん、すっきりしないなぁ… ともあれ試してもらってありがとうございました。 # サーバーの管理者に聞けば判るのかなぁ… |
|
>>1863 すな > GET http://www.yahoo.co.jp/ HTTP/1.1 > とすると、 400 Bad Request が返りました。 HTTP/1.1 では、Host ヘッダが必須ですが、これは大丈夫ですか? http://X68000.startshop.co.jp/~68user/net/http-4.html なお、HTTP/1.1 を使う場合は Host ヘッダを必ず付けなくてはいけません。 > / にした際のドキュメントが返って来ました。 うちもそうでした。 apache のバージョンに依存するようなので、本当のところを 調べたければ http://www.apache.org/websrc/viewcvs.cgi/ で 更新履歴を調べるのがよさげですが、時間がとれない…。 あるいは src/CHANGES に、変更理由が書いてあったりするかも しれません。 |
|
初めまして。 UNIXは、初めて触ってたのですが、本やHPで調べても答えがわからないので、質問させてください。 リモートで、クライアントのWin98にX for Windowsをインストールしましたが、文字化けを起こしました。FON形式に変換されています。 相手のソラリスにはOpen WindowとX Windowがインストールされてます。 クライアントがアクセスするとOpen Windowが立ち上がるよう、設定されていましたので、 /usr/openwin /bin/openwin を /usr/openwin /bin/Xに書き換えたんですが、状態は相変わらずです。 文がおかしいのでしょうか? よろしくお願いします。 |
|
はじめまして。突然ですが、ポート番号の対応表について質問させ てください。 こちらのサイトに「Windows なら C:\windows\services です。 ここに載っているプロトコルは「well-known port」と言えるでし ょう。」とあります。 しかし、C:\windows\servicesが見当たりません。なお私はwin NTを主に使用しています、バージョンによって異なるものなんで しょうか!? |
|
>>1864 68user >HTTP/1.1 では、Host ヘッダが必須ですが、これは大丈夫ですか? あたたた… 忘れていました。 で、host www.yahoo.co.jp:80 として再度やってみましたが同じ結果でした。 サーバー管理者へメールで問い合わせてみましたので解決したら報告します。 ・・・と書いている所へ管理者からメールが。 クライアントがURL欄に「http://www.intel.com/http://www.intel.com/」 と誤って記入すると、そのようなログが記録されます。 との返答。「えっ?」と思いながらやってみると、 GET http://www.yahoo.co.jp HTTP/1.1 host www.yahoo.co.jp:80 ログ内容 "GET http://www.yahoo.co.jp HTTP/1.1" 400 387 "-" "-" / からはじまらないパスを記録させる事は出来ましたが、やはり ステータス 400 でした・・・ う〜ん、眠れなくなりそうなんでこの件は諦めます(笑) >http://www.apache.org/websrc/viewcvs.cgi/ ↑これは知りませんでした。時間があるときにじっくり見てみます。 # いつもながら何かしら勉強させて頂いてますm(_ _)m >>1866 なべぞう WinNTの場合は、C:\WinNT\system32\drivers\etc\SERVICES です。このフォルダには、HOSTS や LMHOSTS も存在します。 スタートメニューの「検索」を最大限に活用すると便利ですよ。 |
|
/~68user/unix/pickup に早稲田大学からの連続アクセスがあり、OS の リソースを食い潰して open・fork などに失敗してサーバエラーが頻発 していました。load average が 20 近くまで上がってました。 とりあえず pickup は使用不可としましたので、あしからず。 同時に実行するプロセス数を制限する機能を追加したら使用可能に します。 >>1867 すな > host www.yahoo.co.jp:80 ではなく、host: www.yahoo.co.jp:80 です。`:' が足りません。 > クライアントがURL欄に「http://www.intel.com/http://www.intel.com/」 > と誤って記入すると、そのようなログが記録されます。 > との返答。「えっ?」と思いながらやってみると、 apache-1.3.12 では、ログに "GET /http://www.yahoo.co.jp HTTP/1.0" 404 と吐かれていました。その管理者の返答はほんとかなぁ? もし本当 ならば、apache にバグがあって、apache-1.3.12 では修正されて いるということですね。 > WinNTの場合は、C:\WinNT\system32\drivers\etc\SERVICES です。 なるほど。この文章をそのまま該当部分に追加してよいですか? >>1865 はてな > リモートで、クライアントのWin98にX for Windowsをインストール > しましたが、文字化けを起こしました。FON形式に変換されています。 文字化けの件はわかりませんが、これは X for Windows という商品名の Windows 用 X サーバですか? Windows 側で X サーバが起動しているなら、 Solaris 側で openwin や X を実行する必要はありません。なぜなら、 openwin や X は X サーバだからです。Solaris 側で実行すべきなのは kterm などの X クライアントです。 でなくて、なにかしらの仕組みがあって Solaris 側で X サーバを 実行すれば Windows 側で表示されるようなアプリケーションで あるなら失礼。そのようなアプリは さらに輪をかけてわかりません。 |
|
>>1868 68user >ではなく、host: www.yahoo.co.jp:80 です。`:' が足りません。 ステータス 400 はこれが原因でした。嘘書いてごめんなさい。m(_ _)m で、該当サーバーに GET http://www.yahoo.co.jp:80 HTTP/1.1 host: www.yahoo.co.jp:80 とした所、 "GET http://www.yahoo.co.jp:80 HTTP/1.1" 200 1934 "-" "-" のログが記録された事を確認しました。 この結果は、68userさんと同じくドキュメントルートが出力されました。 Apache1.3.3の方も同じ結果でした。 >>1862 68user >PATH は必ず / から始まるはずですが、先頭が / でない PATH を >要求すると 200 が返るんですね。これって仕様かしら? 動作からするとその様ですね。 >>1868 68user >その管理者の返答はほんとかなぁ? Apacheの出力結果を見ると管理者の言っている事は間違っているようです。 管理者といってもテクニカルサポートの「誰か」だし、適当にあしらわれ たのかも? >なるほど。この文章をそのまま該当部分に追加してよいですか? もし、サービスパックなどにより変更される場合は判りませんが、 少なくとも自分の環境では上記のフォルダに存在します。 WinNT 4.00.1381 SP5 ちなみに、このフォルダには以下のファイル群が含まれます。 HOSTS LMHOSTS NETWORKS PROTOCOL SERVICE drivers\etc というフォルダに格納するあたり、UNIXを意識しつつドライバーでは 無い内容を格納するのは、M$の苦しい所でしょうか…読みすぎ?;-p |
|
>>1869 すな > Apacheの出力結果を見ると管理者の言っている事は間違っているようです。 おそらくそのユーザは、外部利用可能なプロキシを探して そのサーバにアクセスしたんじゃないでしょうか。 例えばIEにプロキシとしてそのサーバのIPアドレスと ポート80をセットして、適当なサーバにアクセスしてみると リクエストラインはこういう感じ↓になるので、 GET http://www.yahoo.co.jp/ HTTP/1.0 そう言うログが残ることになると思います。 |
|
>>1869 すな はじめまして>hsjさん >おそらくそのユーザは、外部利用可能なプロキシを探して おぉ!なるほど。 IE5でプロキシ設定を施してアクセスした所、最初に疑問になったログ 結果と、ブラウザバージョン以外同じ結果となりました。 はぁ、なんかすっきりしました(笑) 片っ端からアクセスして調べているんでしょうか? ご苦労様なことです(^^; 自分はフレッツISDN接続なんですが、ここ3〜4ヶ月ルーターのログに 明らかにアタックと思われる攻撃が増えたので、過敏になっていました。 情報ありがとうございました。>hsjさん |
|
どうもレスが遅くなり申し訳御座いません。 >>1860 68user >jp.FreeBSD.org の sendmail 君が付けた received も localhost に >なっていました。少なくともあそこは変な設定になってはいない >だろうということで、問題ないんじゃないでしょうか。 へ〜そうなんですか・・・。 私もあれから試行錯誤しましたが、どうにもならず、結局気にしないこと にしました(笑)。 と言っても諦めるわけでなく、sendmail.cfを直接弄って何とかできるの では・・・と思いたちましたので、そちらの方法をしばらく模索していこ うと思います。 それではご迷惑をお掛けいたしました。 |
|
こんにちは、初めまして。 排他処理のことを読ませていただきまして、 フリーのCGIスクリプトに自分でシグナルに関する部分を追加しようと思いました。 ここでは $SIG{PIPE} = \&lock_off; というようにしておられますが、他のところでは、 $SIG{'PIPE'} = 'lock_off'; といった感じに書いていました。 これらは同じ意味なのでしょうか?(\&というのがよくわかりません) それから、こういったハンドラの定義は、ソース中のどの位置に書いても 同じなのでしょうか。最初の方に書いた方がいいのでしょうか? そして、ハンドラの中で変数の値を参照する場合、 その変数の初期化前にそのハンドラを書いて問題ないでしょうか? sub lock_off { if ($lockkey) { &unlock; } exit; } ・・・ $lockkey = 1; といった感じで。 Perlはまだよくわかっていないので、常識なことなのかもしれないですが、 よろしくご教授お願いします。 |
|
はじめまして。 CGIで環境変数を取得していると、「(compatible; MSIE 5.5; 〜〜」等で表示されるはずが、「好きな名前〜〜〜」でアクセスす人がまれにいるのです。これはどううことなのでしょうか? |
|
>CGIで環境変数を取得していると、「(compatible; MSIE 5.5; 〜〜」 >等で表示されるはずが、「好きな名前〜〜〜」でアクセスす人がまれにい >るのです。これはどううことなのでしょうか? クライアント(ブラウザ)がサーバに送るUser Agent 文字列を自由に設定できるソフトを使っているからではないでしょうか。 私の使っているフリーのタブブラウザ、「DonutR」でも、UserAgentを 自由に設定できます。 |
|
>>1873 dio > $SIG{PIPE} = \&lock_off; \& は関数へのリファレンスです。ちなみに $SIG{PIPE} = sub { unlink($lock_file); exit; } と等価です。 > $SIG{'PIPE'} = 'lock_off'; これだと、シグナルハンドラ lock_off の関数定義が同一ファイル 内にないといけません。別ファイルに sub lock_off を書いて、 それを require している場合は動かないということです。 関数へのリファレンスを使えば、どこで関数が定義されて いようと動きます。 これらの事柄はラクダ本に書いてありますので、もちお持ちで ないなら、購入されることをお薦めします。 > ハンドラの中で変数の値を参照する場合、その変数の初期化前に > そのハンドラを書いて問題ないでしょうか? これは、ハンドラ特有の問題ではなく、関数一般の話になります。 #!/usr/bin/perl &lock_off; sub lock_off { print $lockkey } $lockkey = 1; exit; と #!/usr/bin/perl $lockkey = 1; &lock_off; sub lock_off { print $lockkey } exit; では、前者はよろしくないことはわかりますね。 シグナルハンドラの場合も、%SIG にセットしてしまうとその後いつ シグナルハンドラが呼ばれるかわからないので、%SIG にセットする 前に必要な変数を全て設定しておきましょう。 |
|
>\& は関数へのリファレンスです。ちなみに >・・・・・・ >関数へのリファレンスを使えば、どこで関数が定義されて >いようと動きます。 なるほど そういう違いなのですか。 >シグナルハンドラの場合も、%SIG にセットしてしまうとその後いつ >シグナルハンドラが呼ばれるかわからないので、%SIG にセットする >前に必要な変数を全て設定しておきましょう。 わかりました。 どうもありがとうございます。 |
|
http://messages.yahoo.co.jp/bbs?.mm=CP&action=m&board=1835092&tid=echoa4ka4da4a4a4f&sid=1835092&mid=4 > ↓には、「ping への応答」と書いてます。 > http://www.nspl.co.jp/Solaris/Security/inetd.html 誤りです。ping に応答するのは ICMP reply です。TCP/UDP の echo は、 http://ring.ocn.ad.jp/pub/doc/RFC/rfc862.txt を参照のこと。 A very useful debugging and measurement tool is an echo service. ってことですね。人様が直接使うものです。 …と yahoo BBS に書こうと思ったけどできなかったので、どなたか 伝えて下さい。 |
|
>>1868 68user > とりあえず pickup は使用不可としましたので、あしからず。 > 同時に実行するプロセス数を制限する機能を追加したら使用可能にします。 使用可能になりました。ちゃんと制限が効いてるかどうかは 試してませんが。 >>1878 68user > …と yahoo BBS に書こうと思ったけどできなかったので、 > どなたか伝えて下さい。 どもです>dio さん (ですよね?) |
|
>どもです>dio さん (ですよね?) あ、はい このページ参考にさせてもらったり、 お世話になったので。 |
|
ご存知であれば 教えてください psコマンド(ps -l)を実行したときの C 項目の数値の意味 なんですけどマイナス値のプロセスがあったのですが どのような状態を意味するのでしょうか? |
|
教えていただきたいことがあります。 UNIXについてはほとんど初心者なのですが、あるとき急に管理をしろ! と言われてしまいました。はじめはなんのトラブルもなかったのですが、 何日か前に急に他のマシンから自マシンへtelnet接続ができなくなって しまいました。 原因はなんなのでしょう? 機種は SUN ULTRA60 Solaris2.6が入ってます。もちろん自マシンにログイン後 自マシンの他のユーザへのtelnetでのログインもできないのです。 お願いします。 |
|
はじめまして、YOUKOと申します。 C-ISAMを使ってAPLを作成したいのですが 初めてで右も左もわかりません。 どこか初心者用のHPありませんか? OS:Solaris7です。 |
|
>>1881 akihiro > psコマンド(ps -l)を実行したときの C 項目の数値の意味 > なんですけどマイナス値のプロセスがあったのですが OS は何ですか? FreeBSD には C という項目はないように 思えます。Solaris2.6 では「スケジューリングのための プロセッサ利用率、ただし obsolete」と man に書いて あったような気がしますが、それ以上の事はわかりません。 >>1882 クワ > 何日か前に急に他のマシンから自マシンへtelnet接続が > できなくなってしまいました。もちろん自マシンにログイン後 > 自マシンの他のユーザへのtelnetでのログインもできないのです。 それは、問題のマシンで % telnet localhost でログインできないということですね? 全体的に情報が不足しています。「できない」とはどういう意味ですか? 何かエラーメッセージが出ますか? 何秒か待たされたりしますか? login: プロンプトは出ますか? 一般的には inetd が telnet ポートを見張り、接続があると inetd が telnetd を実行し、telnetd が認証を行います。もし % netstat -a | grep telnet tcp4 0 0 *.telnet *.* LISTEN という出力が出ないならば、telnet ポートを監視するサーバがいない ということなので、inetd の問題です。/etc/inetd.conf をチェック しましょう。 他にも tcpwrapper が接続を弾いている、などの可能性もありますが、 そこらへんは /var/log/ の下のログを見ましょう。telnet した後、 ls -lt /var/log すれば、最終更新時刻順にファイル一覧が表示 されますので、最も最近に更新されたログファイルの中を見れば 何かメッセージが書いてあるかもしれません。 >>1883 YOUKO > C-ISAMを使ってAPLを作成したいのですが C-ISAM という物を知らないのですが、Informix の DB 関係の ライブラリか何かでしょうか。そういうものは Informix の出して いるマニュアルを読むのが早道かと思います。 # 同様に、個人が提供している Oracle の情報も少ないですね。 |
|
>> psコマンド(ps -l)を実行したときの C 項目の数値の意味 >> なんですけどマイナス値のプロセスがあったのですが >OS は何ですか? ..(略)..、それ以上の事はわかりません。 HP-UNIXです。私なりに調査していますので解りましたら 載せさせていただきます。 |
|
排他処理のページを見て質問なのですが、シグナル処理でCGIを終了 させたくない場合はどうすればよいのでしょうか? シグナルを無視みたいなことはできないんでしょうかね?? よろしくお願いします。 |
|
>>1886 chie > シグナルを無視みたいなことはできないんでしょうかね?? perl なら $SIG{QUIT} = 'IGNORE'; などとすれば無視できます。ただし、SIGKILL と SIGSTOP だけは無視できません (ハンドラの設定も不可)。 |
|
>ただし、SIGKILL と SIGSTOP >だけは無視できません (ハンドラの設定も不可)。 横からすみませんが、無視できずハンドラの設定不可な シグナルは、どのような意味があるのでしょうか? (なぜ送られてくるのでしょうか?) |
|
>>1888 dio > 無視できずハンドラの設定不可なシグナルは、 > どのような意味があるのでしょうか? シグナルをブロックしたプログラムが誤って無限ループしてしまったら 止める術がなくなります。 なので、プロセス側から制御できない SIGKILL や SIGSTOP という シグナルを飛ばすことで、OS に強制的にプロセスを殺したり、動作を 止めたりするわけです。例をあげると、 #!/usr/bin/perl $SIG{TERM} = sub { print "TERM!\n" }; # kill コマンド対策 $SIG{INT} = sub { print "INT!\n" }; # Ctrl-C 対策 while (1){ printf("%d\n", $i++); sleep 1; } というプログラムを実行すると、Ctrl-C や kill プロセス番号 で 終了させることはできません。しかし Ctrl-Z で動作を止めたり、 kill -9 (=kill -KILL) でプロセスを殺すことはできます。 # 実際は他にもシグナルはありますので、kill -HUP などで # 殺すことが可能ですが、全てプログラム側でブロック可能です。 なお、SIGINT や SIGTERM を受けると、ファイルなどの後始末を 行ってから終了するプログラムは多いです。なので、いきなり SIGKILL で強制終了させるのはおすすめできません。まず SIGTERM や SIGINT を試して、それでも死ななければ SIGKILL を使うように して下さい。 |
|
えーと、私は何か勘違いをしていたかもしれません; >なので、プロセス側から制御できない SIGKILL や SIGSTOP という >シグナルを飛ばすことで、OS に強制的にプロセスを殺したり、動作を >止めたりするわけです。 これはわかります。SIGKILL、SIGSTOPの必要性はわかるのですが、 プロセスから制御できない物をなぜシグナルとして送る 必要があるのだろうかと思ったのです。 私はOSがプロセスにSIGKILL や SIGSTOPをとりあえず送って、 強制終了させる物と思っていたのですが、この考えが方が間違いでしょうか? |
|
>>1890 dio ん〜、SIGKILL, SIGSTOP の必要性はわかるが、ブロックできないんだから 「シグナル」として扱うのは変ではないか。SIGKILL, SIGSTOP と同等の 機能を持たせたシステムコールを新設した方がよいのではないか、という ことでしょうか? じゃなくて、OS が SIGKILL や SIGSTOP を送るのはわかるが、 コマンドラインで kill コマンドを使って SIGKILL, SIGSTOP を 送れるのは変ではないか、ということですか? |
|
前者のほうにちかいです プロセスを殺すのはOSなのですよね? プロセスにSIGKILLやSIGSTOPが送られても プロセスはそれに対して何も出来ないのなら、 なぜ送られてくるのかな?と。 プロセスはSIGKILLやSIGSTOPを認識出来ないのではないのですか? |
|
>>1892 dio > プロセスはSIGKILLやSIGSTOPを認識出来ないのではないのですか? できないです。 OS はプロセスごとにシグナルのテーブルを保持しています。例えば SIGTERM を無視する場合はテーブルの SIGTERM の項目を 1 に、 シグナルハンドラをセットする場合は、SIGTERM の項目にシグナル ハンドラ (関数) のアドレスをセットする、というふうに。 で、シグナルが飛んできたら、OS は対象のプロセスのテーブルを 参照し、無視すべきか、ハンドラを実行すべきかなどを決めます。 しかし SIGKILL/SIGSTOP は、 - テーブルの書き換えができない - シグナル発生時に OS がテーブルを参照することなくプロセスを操作する のどちらかの理由のため (どっちが本当かは知りません)、プロセス からブロックすることはできません。 だから、実際に OS が何かをプロセスに送っているわけではありません。 …で、回答になりましたか? ちなみにシグナルは FreeBSD なら ここらへんで処理してます。 http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/sys/kern/kern_sig.c?rev=1.115 |
|
>で、シグナルが飛んできたら、OS は対象のプロセスのテーブルを >参照し、無視すべきか、ハンドラを実行すべきかなどを決めます。 なるほど、シグナルを受け取るのはOSなんですか。 >だから、実際に OS が何かをプロセスに送っているわけではありません。 そうでしたか。 私の考え方がWindows的でした。 (WindowsのMessageのような物と考えてました;) >…で、回答になりましたか? はい、どうもありがとうございました。 |
|
>>1884 68user >それは、問題のマシンで > % telnet localhost >でログインできないということですね? お返事が遅くなってしまいました。すみません。 上記のように入力すると、 SunOS5.6 ....(省略)普通といっしょ。 connection closed by foreign host. といわれます。 UNIXの相当詳しい人に見てもらったのですが、ぜんぜんおかしい 部分がないとのことでした。 来週OSをインストールしなおすとその方がおっしゃっておりました。 ご迷惑をおかけしました。 また分からないことがありましたらよろしくお願いします。 |
|
初めまして。 現在文字コードの変換について色々と模索中です。で、 このページの過去ログを見つけたのですが、情報を うまく理解することができなかったので質問させて ください。 まずバックグラウンドとして、Solaris2.6のWebサーバを 今まで他の人が管理してきたものの引継ぎで管理する事 になったのですが、そのWebサーバは文字の変換に /bin/iconvを利用しています。htmlファイルはeucJPで かかれていました。さらにソースの中でMETAタグに 「charset=x-euc-jp」という記述がありました。 またユーザからの情報をCGIからOracle(Solaris2.6上)に データを格納しています。この際CGIではeucからUTF-8に 変換を行なう記述がなされています。 # DBは個人的に触ることができない状態です。Solaris2.6 # の/bin/iconvを利用するところも変えられません。 通常インターネットを意識した時にはWindows環境(もち ろんこの中にも色々ありますが)だけを意識するのではなく、 色々な環境を意識してhtmlファイルを書くべきなのだと 思うのです(私見?)。 前置きが長くなりましたが質問です。 1.ソースの中でMETAタグに「charset=x-euc-jp」という 記述がある場合、ブラウザのエンコードで「自動認識」を 指定していれば、ソースは読める状態で表示され、かつ フォームに入力した文字列はeucJPでWebサーバに送信されて くるものだと信じているのですが正しいのでしょうか。 2.また正しい場合、表示を強引にSJISなどにしてフォーム に入力した場合にはeucJPで送られてくるのでしょうか。 それともSJISなのでしょうか。(まだ環境を自由にできない ので自分では確認できません。) 3.半角が入力されてきた場合にはどのように対処すれば いいのでしょうか。 4.JIS X 0208の13区、89〜92区、115区〜119区(換算)の 文字を入力するとエラーで返すようにしたいのですが、CGI でどのように記述すればいいのでしょうか。EUCコードで ADA1〜ADFE、F9A1〜F9FE、FAA1〜FAFE、FBA1〜FBFE、FCA1〜 FCFE(全て16進数) は不可、のように文字コードそのもので 制限をかけるのでしょうか。Perlでこういった内容を書き たいのですが、何か参考になるようなものがありましたら お知らせください。 長い文章になりましたが、ご助力お願いいたします。 |
|
>>1896 りんたろお。 > 色々な環境を意識してhtmlファイルを書くべきなのだと > 思うのです(私見?)。 このような考えの人が多ければ、UNIX 使いのような マイノリティはもっと幸せになれるのですが、なかなか そうもいかないようで…。 > 1 エンコーディング指定 x-euc-jp というのは、まだ EUC-JP というエンコーディング名が IANA に登録されていなかった頃の暫定エンコーディング名ですので、 現在は EUC-JP とするのが適当です。 ただし、Netscape Navigator 3.x などの古いブラウザでは EUC-JP を 認識できないという問題がありますが、「新しめのブラウザを使え」と 言えるような立場なら EUC-JP にする方がよろしいです。 なお、META でなく、CGI プログラムが出力するヘッダで Content-type: text/html; charset=EUC-JP とした方がよいです。META は、ヘッダにエンコーディングを 明示できない場合の代替手段ですので。 ただし、ブラウザは間抜けなので、エンコーディングを明示しても 自動認識に失敗することはあります。 > 2 フォームのエンコーディング 基本的に、フォームのあるページのエンコーディングで フォームのデータが送られてきます。少なくとも Netscape Navigator と Internet Explorer はEUC-JP なページの フォームで入力すると、入力内容を EUC-JP で送ります。 ただし、規格として決まっているわけではありませんので、 そうでないブラウザもあります (Lynx がそうかな)。 なので、入力データは jcode.pl などで EUC-JP や Shift_JIS に 変換するのがよいでしょう。1行追加するだけなので、たいした 手間ではないです。 > 3 半角入力 これは、半角カナということですか? なら 4 へ。 > 4 機種依存文字 http://X68000.startshop.co.jp/~68user/webcgi/char-code-2.html が参考になるかと思います。この掲示板では機種依存文字を自動変換 していますが、「機種依存文字があればエラー」とするのは簡単です。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/wwwboard.cgi の、sub conv_wrong_char あたりをどうぞ。 |
|
ずっと以前から悩んでいたことなのですが、どこで聞いていいかわからず、 ここで書きます。よろしくお願いします。 会社の FreeBSD で Perl を使っていますが、nfs mount でいろんな マシンで同じスクリプトを使えるようになっていますが、 あるスクリプトが急に text file busy と言われます。 語感からするとエディット中に実行したとか、 複数の人が一つのスクリプトを実行しているとか いう感じですが、そうなっていても実行できるスクリプトは 実行できますし、どう考えてもヒマなファイルが同様の原因で 怒られます。 で、こうなってしまったら、件のスクリプトのディレクトリに行き % cp busyscript foo % rm busyscript % mv foo busyscript % chmod 755 busyscript これで百発百中修復します。 なぜなんでしょう。どなたかご教示をお願いします。 |
|
つい最近、perlを勉強しはじめた者です。本に掲載されているごく 簡単な例を実際サーバにUPして試しているのですが、 エラーメッセージが出てしまい、困り果てています。 よろしければ、アドバイスをお願い致します。 #!/usr/local/bin/perl5 print "what is your name?"; $name = <STDIN>; chomp($name) ; If ($name eq "kate") { print "Hello,kate! How good of you to be here!\n"; } else { print "Hello, $name\n"; } 以上です。 エラーメッセージは syntax error at test.cgi line 7, near "}" Execution of test.cgi aborted due to compilati on errors. です。 |
|
>>1899 kate (あれ、使い方がわからない…。(>_<)) kateさんのPerlの質問ですが、5行目の「If」を「if」にすると できますよ。あとついでなのですが、 "what is your name?\n"; とすると良いですね!(^^ゞ |
|
>>1897 68user ありがとうございます。これから試してみますので、結果が出たらまた ご報告いたします。→みなさま。 |
|
1900 りんたろお。さんありがとうございました。 ケアレスミスというか、本当にしょうもないミスだったの ですね・・(^-^; アドバイスありがとうございました!また、ヨロシクお願いします。 |
|
はじめまして。 Perlのネットワークプログラムについての質問なのですが、 あるサーバからあるサーバへデータをそのまま送るだけなのですが、 while (<$sock_recv>){ print $sock_send $_; } このときに受信側がユーザー操作によって受信をキャンセルされると、 >Can't use an undefined value as a symbol reference at ./test.pl line 46, <CLIENT> chunk 8322. と、エラーが出てプログラムが強制終了してしまいます。 強制終了せずに、受信側の受信キャンセルを検出する方法がありましたら 是非おしえてください。よろしくお願いします。 |
|
sendmaiを使用して2カ所にメールを送るにはどうすれば良いのでしょうか? open 〜 close を2度記述してもダメなのでしょうか。1度の記述だと正常に処理できるのですが2度の記述ですとうまくいきません。宜しくお願い致します、 open(MAIL, "| /usr/sbin/sendmail -t"); ・〜・ close(MAIL); |
|
>>1898 ふくし samba を使っていませんか? よく知りませんが samba はファイルを 読み込み禁止でロックしっぱなし (?) にするようで、そのとき ファイルを読もうとすると「Text file busy」となります。もし そうなら http://www.samba.gr.jp で検索すると解決策が見つかると 思います。 もし NFS しか使っていないなら、解決策はわかりません。 >>1903 しの print したデータを受け取る先のプロセスがいないと、print した 側には SIGPIPE が飛んできます。シグナルハンドラを設定して、 適切なエラー処理を行いましょう。 >>1904 くみ > open 〜 close を2度記述してもダメなのでしょうか。 それでもよいですし、2箇所に送ったことが相手先に知られても いいなら、 print MAIL "To: foo@hoge, bar@fuga\n"; でもいいです。 |
|
「ネットワークプログラミングの基礎知識」 http://X68000.startshop.co.jp/~68user/net/ を CVS に追加しました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/ $Id:$ を挿入しまくったので、もしソースと解説の行番号がずれて いるかもしれません。見つけられた方はご指摘いただけると幸いです。 |
|
2カ所への送信はうまくいきました、有り難う御座いました。 ところが またまたしつもんです。sendmailで指定する件名が送信先によって文字化けしてしまいます。日本語文字コードによるものでしょうが、対策は具体的にどのようにしたらよいのでしょうか。 $sb='あいうえお'; print MAIL "Subject: $sb\n"; |
|
>>1907 くみ MIME encode する必要があります。 http://X68000.startshop.co.jp/~68user/webcgi/mail-2.html#2 をどうぞ。 |
|
はじめまして CGIを学んで1ヶ月の者です。 実は、仕事で少し面倒な依頼を受けて困っております。 内容はCSV形式のデータをPerlで読み取ってそれを HTMLのテーブルに流し込むスクリプトなのですが、 慣れていないので思考停止をして進みません。 具体的なCSVデータの例ですが、 10,果物,りんご,ringo.html,ぶどう,budou.html,ばなな,banana.html,10,野菜,かぼちゃ,kabotya.html,なす,nasu.html,きゅうり,kyuri.html,魚,まぐろ,maguro.html,さけ,sake.html,10,肉,牛,usi.html,麺,ラーメン,ra-men.html,そば,soba.html,うどん,udon.html まず、先頭に10があり、これは分類の区切りを示すヘッダーです。 次に果物でこれは、分類名です。 次にりんご、これは分類詳細名です。 つぎにringo.htmlでこれは分類詳細名のリンク先アドレスです。 このようなデータの並びですが、各分類と詳細項目は変動しますので このテーブルのあるWEBページを毎回読み直す必要があります。 どうのようにしたらよいのでしょうか。 お助けください。 |
|
>>1909 hooma どういう HTML を出力したいかが書いてないので、誰にも 正解は答えられないと思いますよ。CSV から読み込むだけなら、 「,」で split して、「10」が出てきたら新しいを配列を用意し、 次の「10」が出てくるまでその配列に push。そしたら1つの配列には 「ヘッダ,分類名,分類詳細名1,リンク先1,分類詳細名2,リンク先2...」 という値が入るでしょうから、後は適当に処理すればよいでしょう。 |
|
fgetsとsscanfの使いかたがまったくわかりません。 誰か教えて下さい。 下のような問題をといています。 誰でもいいのでできれば解いてもらえませんか?? 問題 1.ユーザーに1つの数の入力を求め、入力された数字を8進数表示、16進数表示するプログラムを作りなさい。 条件:main関数1つで作成する。 gets(),scanf()は利用しないこと。 扱う数字のさいだいは、int型で良い。 printf()は用いてもよい。 |
|
>>1911 HELP 宿題なのでしょうから、自分でやりましょう。 「ここまで自分でやりましたが、〜がわかりません」なら ともかく、「全くわかりません」では問題外です。 # 2ch に行けば、お姉さんやギコ猫が答えてくれますけどね。 |
|
確かに宿題みたいなものなんですが、ほんとに全然さっぱりなんです。 fgetsとsscanfがどういうものなのかだけでも教えてもらえませんか? 参考書など読んだのですが、どのように使えばいいのかわからないんです。 問題のプログラムは一応できたんですが、あっているのかもわからないし、 自分で作ったプログラムなのに理解できないんです^^; 誰かお願いしますm(_ _)m |
|
>>1913 HELP では、自分の書いたプログラムを見せて、「こことここがわからん」 「ここは、こういう意味だろうか?」と質問してみてはどうでしょうか。 課題のプログラムについて、知るべきポイントや勉強すべきポイントは たくさんあります。だから世の中にはたくさん C の参考書が出回って いる。それら全てを回答者に解説させようとせず、自分がどこまで 理解しているかを明らかにした上で、ポイントをしぼって質問する のが「うまい質問の仕方」というものです。 |
|
次の問題のプログラムを作ってみましたが、コンパイルできません。 どこが間違っているのか教えて下さい。 入力された数字を2進数表示するプログラムを作成しなさい。 条件:main関数、2進数の文字列を返す関数の2つの関数で作成する。 扱う数の最大は、int型でよい。 #include <stdio.h> int sinnkeisann(int k); main () { char buff[32+1]; int k ,kotae; printf("整数値を入力して下さい>>>"); fgets(buff,sizeof(buff),stdin); sscanf(buff,"%d",&k); kotae = sinnkeisann( k ); printf("2進数表記>>>%d",kotae); } int sinnkeisann(int k) { int a,i,answer; char retu[32+1]; a=k; retu[32] = '\0'; for(i = 0; i < 32; i++){ if(i != 0 && a == 0){ break; } if(a %2 == 0){ retu[(32-1) - i] = '0'; } else{ retu[(32-1) - i] = '1'; } a = a / 2 ; } answer = retu[0]+(32-1)-i+1 ; return answer ; } |
|
>>1915 HELP FreeBSD 4.2-RELEASE ではコンパイルできましたよ。コンパイル できない場合は、どういうエラーメッセージが出たかを書きましょう。 ところで、条件では「文字列を返す関数」となっているので、 char *sinnkeisann(int k) とすべきですね。 ただし、インデントだけはきっちりつけましょう。そのソースを 見る他人のためでもあり、3日後にソースを見直すかもしれない 自分のためでもあります。 |
|
元質問 >>1861 すな >>1870 で hsjさんに教えてもらった件ですがやはりそのようですね。 http://homepage1.nifty.com/yito/namazu/gbook/20010423.0840.html といった記事を見つけました。よって、 >>1864 でのレンタルホスト管理者からのメールで >クライアントがURL欄に「http://www.intel.com/http://www.intel.com/」 > と誤って記入すると、そのようなログが記録されます。 はやはり間違いですね。 参考までに…(参考にもならないかな?) # しかし最近不正な(と思われる)アクセス増えたなぁ… |
|
>>1915HELP 文法的には間違ってないし、アルゴリズムも基本的には正しいです。(だけどね(^_^)ニヤリ’ あとはintの符号有り、符号無しの違いに注意したほうがいいです。 |
|
プログラムを以下の様に直してみました。しかしコンパイルができません。 #include <stdio.h> char *sinnkeisann(int k); main () { char buff[32+1]; int k ,kotae; printf("整数値を入力して下さい>>>"); fgets(buff,sizeof(buff),stdin); sscanf(buff,"%d",&k); kotae = *sinnkeisann( k ); printf("2進数表記>>>%d",kotae); } char *sinnkeisann(int k) { int a,i,answer; char retu[32+1]; a=k; retu[32] = '\0'; for(i = 0; i < 32; i++){ if(i != 0 && a == 0){ break; } if(a %2 == 0){ retu[(32-1) - i] = '0'; } else{ retu[(32-1) - i] = '1'; } a = a / 2 ; } answer = &retu[0]+1 ; return answer ; } エラーメッセージ 2sinn.c: In function `sinnkeisann': 2sinn.c:46: warning: assignment makes integer from pointer without a cast 2sinn.c:48: warning: return makes pointer from integer without a cast |
|
>>1919HELP answerがint型なのにchar型を渡してるって事ですね。 答えの返し方は、関数を void function(int n,char* s) というように、返してほしい配列のポインタを引数にすればいいですよ。 |
|
>>1919 HELP コンパイルは成功していますよ。Warning がどれだけ起ころうが、 Error が出ない限り実行ファイルが生成されているはずです。 ところで、戻り値の返し方について >>1916 68user > char *sinnkeisann(int k) とすべき、と言いましたが、 >>1920 紅の猫 > void function(int n,char* s) の方がよいですね。 |
|
毎回適当にいじって、毎回忘れてしまう GD-1.33 & gd-1.8.4 & libpng-1.0.10 の インストールメモメモ。 libpng: % cp scripts/makefile.std Makefile % diff scripts/makefile.std Makefile < prefix=/usr/local --- > prefix=/home/68user/install/libpng % make && make install gd: % diff Makefile.org Makefile 15c15,16 < CFLAGS=-O -DHAVE_LIBPNG -DHAVE_LIBJPEG --- > CFLAGS=-O -DHAVE_LIBPNG 48c49 < INCLUDEDIRS=-I. -I/usr/include/freetype2 -I/usr/include/X11 -I/usr/X11R6/include/X11 -I/usr/local/include --- > INCLUDEDIRS=-I. -I/usr/include/freetype2 -I/usr/include/X11 -I/usr/X11R6/include/X11 -I/usr/local/include -I/home/68user/install/libpng/include 58c59 < LIBDIRS=-L. -L/usr/local/lib -L/usr/lib/X11 -L/usr/X11R6/lib --- > LIBDIRS=-L. -L/usr/local/lib -L/usr/lib/X11 -L/usr/X11R6/lib -L/home/68user/install/libpng/lib 61c62 < INSTALL_LIB=/usr/local/lib --- > INSTALL_LIB=/home/68user/install/libgd/lib 64c65 < INSTALL_INCLUDE=/usr/local/include --- > INSTALL_INCLUDE=/home/68user/install/libgd/include 67c68 < INSTALL_BIN=/usr/local/bin --- > INSTALL_BIN=/home/68user/install/libgd/bin % make && make install GD: % diff Makefile.PL.org Makefile.PL 6,7c6,7 < my @INC = qw(-I/usr/local/include -I/usr/local/include/gd); < my @LIBPATH = qw(-L/usr/lib/X11 -L/usr/X11R6/lib -L/usr/X11/lib -L/usr/local/lib ); --- > my @INC = qw(-I/usr/local/include -I/usr/local/include/gd -I/home/68user/install/libgd/include -I/home/68user/install/libpng/include); > my @LIBPATH = qw(-L/usr/lib/X11 -L/usr/X11R6/lib -L/usr/X11/lib -L/usr/local/lib -L/home/68user/install/libgd/lib -L/home/68user/install/libpng/lib); % perl Makefile.PL LIB=~/p5-module/ INSTALLMAN1DIR=~/p5-module/man1/ INSTALLMAN3DIR=~/p5-module/man3/ % make && make install 動作チェック: % perl -e 'use lib "/home/68user/p5-module"; use GD' |
|
新たにプログラムを作り直してみました。 コンパイルできますが、実行結果が全て0になってしまいます。 どこを直せばいいのか教えて下さい。 #include<stdio.h> void swap(int *bin) { char buff[32+1],answer[32+1]; int count; buff[32] = '\0'; for(count = 0; count < 32; count++) { if(count != 0 && *bin == 0) { break; } if (*bin % 2 == 0 ) { buff[(32-1)-count] = '0'; } else { buff[(32-1)-count] = '1'; } *bin = *bin / 2 ; } buff[32+1] = *bin; } int main() { int hoge,hairetu[32+1]; char buf[32+1]; printf("数を入力してください>>>"); fgets(buf,sizeof(buf),stdin); sscanf(buf,"%d",&hoge); swap(&hoge); printf("2進数>>>%d\n",hoge); } |
|
こういう形のやりとりはあまり効率的とは思えませんが、 納得できるまで付き合いますか。 >>1923 HELP swap に hoge のアドレスを渡し、swap の中で *bin を2で 割っていって、0になったらループを抜けているので、 最終的には必ず *bin == 0、つまり hoge も 0 になります。 buff の中に結果を入れているのに、最終的にどこにも 反映していないので、呼び出し側では結果を受けとれません。 で、2進数の結果を int で返してもらっても、大抵の場合 うれしくないので、void int2bin(int n,char* s) という 形にしましょう。 呼び出し側では char answer[256], buf[256]; int input_num; printf("数を入力してください>>>"); fgets(buf, sizeof(buf), stdin); sscanf(buf, "%d", &input_num); int2bin(input_num, answer); printf("2進数>>>%s\n", answer); として、変換側では void int2bin(int num, char *answer) と受け、num の値を 2進数に変換して answer に格納、 とするのがよいでしょう。 |
|
この問題はなんとか解決できました。 最後までつきあっていただいて本当にありがとうございました。 またよろしくおねがいします。 |
|
しゅいましぇん Perl で質問です〜 らくだの本を読んでいて、 *dick = *richard; という代入を行なうと $richard も @richard も %richard も &richard も エイリアシングされてしまうけど、 *dick = \$richard; だと $richard だけがエイリアシングされてしまう、というのがどうもよくわかりません。 あと、 *PI = \3.14159265358979; と書くと $PI は「定数スカラー」になっていじれなくなる、というのも、 これ、左辺はリテラルのリファレンスなんでしょうか?? |
|
Awkを練習しています。 目的; Data1というファイルに4ポイントの座標が書き込んであります。 c1 10 10 c2 20 20 c3 30 30 c4 40 40 この4ポイントを4x4=16個ある箱の一番左下とし、これを元に、残り15箱にはいる15x4=60ポイントの座標を求める。offset値はx=y=100とします。 コマンドラインで awk '{for (i=0;(i,4);i=i+1) print $1"-"i+1, $2+"100"*i, $3}' data1 > out1 で一番したの4箱ぶんをだし、 out1; c1-1 10 10 c1-2 110 10 c1-3 210 10 c1-4 310 10 c2-1 20 20 c2-2 120 20 c3-3 220 20 .......... awk' '{temp=substr($1, 1,4);for (i=0;(i,4);i=i+1) print temp, i+"1", $2, $3+"100"*i}' out1 > out2 out2 c1-1 1 10 10 c1-1 2 110 10 c1-1 3 210 10 c1-1 4 310 10 c1-2 1 10 110 c1-2 2 110 110 c1-2 3 210 110 .................. で全てを出す方法で目的は達成したのですが,それを一度で出したいと思い、下の様にしてみました。 "test.awk" {for (i=0;(i<4);i++) print ($1"-"i+"1", $2+"100"*i, $3) >> "out1"} close ("out1") {getline < "out1" temp=substr($1, 1,4);for (j=0;(ij,4);j=j+1) print temp, ij+"1", $2, $3+"100"*j} #awk -f test.awk < data1 > out3 しかし、data1のFNR=4の場合out3は16行まででとまってしまうので、わざわざdata1のFNRを64にしてし、全ての値をだしました。 まだよく理解できていないので、どうしてなのかがわかりません。ご指導 お願い致します。 |
|
>>1926 ふくし > *dick = \$richard; > だと $richard だけがエイリアシングされてしまう、 > というのがどうもよくわかりません。 dick という名前には、スカラー、配列、ハッシュ、関数 などがあり、それぞれ $dick、@dick、%dick、&dick として アクセス可能です。名前と実データのアドレスの間は、 シンボルテーブルにより対応づけられています。で、 *dick = *richard; は、それらシンボルテーブルを一括して書き換えるもので、一方 *dick = \$richard; は $richard 用シンボルテーブルだけを書き換えるもの、 と解釈してはどうでしょうか。 実際にそういう作りになっているかどうかはわかりません。 ところで、 $fuga='fuga'; local(*hoge) = *fuga; print "\$hoge=$hoge\n"; は OK でも、 @fuga=('a', 'b', 'c'); local(*hoge) = *fuga; print "\@hoge=@hoge\n"; とすると In string, @hoge now must be written as \@hoge なんですねぇ。美しくないなぁ。 >>1927 ミング うーむ、awk 以前に、ちょっと問題の意味が理解できません。 # でも、for (j=0;(ij,4);j=j+1) という書き方もわかんないなぁ。 ファイルに書き込んで close し、それを読み出す、ということを されたいのでしょうが、もっとよいアルゴリズムがあるんじゃないか とは思います。他の方、わかりますか? |
|
>>1447 nac ! で fold しているのは sendmail くんだそうで。 http://script.lovely.to/bbs/infolng.cgi?print+200104/01040037.txt |
|
はじめまして。XRDといいます。 ただいま、C言語でCGIを作成しようと勉強中の身です。 そこでインプレスより販売しているCGIブックを購入したのですが、 コンパイルがうまくいきませんでした。 ソース内容は以下の通りです。 http://home.impress.co.jp/books/ietech/cgi.code/7.2.html 動作環境:TurboLinux6 tmp/ccuVjNj9.o: In function `main': /tmp/ccuVjNj9.o(.text+0x10b): undefined reference to `splitword' /tmp/ccuVjNj9.o(.text+0x122): undefined reference to `unescape_url' /tmp/ccuVjNj9.o(.text+0x14a): undefined reference to `splitword' /tmp/ccuVjNj9.o: In function `GetUserID': /tmp/ccuVjNj9.o(.text+0x76c): undefined reference to `dbm_open' /tmp/ccuVjNj9.o(.text+0x7bf): undefined reference to `dbm_fetch' /tmp/ccuVjNj9.o(.text+0x886): undefined reference to `dbm_store' /tmp/ccuVjNj9.o(.text+0x894): undefined reference to `dbm_close' /tmp/ccuVjNj9.o: In function `GetOrderRecord': /tmp/ccuVjNj9.o(.text+0x8c3): undefined reference to `dbm_open' /tmp/ccuVjNj9.o(.text+0x915): undefined reference to `dbm_fetch' /tmp/ccuVjNj9.o: In function `UpdateOrderRecord': /tmp/ccuVjNj9.o(.text+0x9ba): undefined reference to `dbm_store' /tmp/ccuVjNj9.o: In function `CloseDatabase': /tmp/ccuVjNj9.o(.text+0x9ce): undefined reference to `dbm_close' collect2: ld returned 1 exit status 自分なりの解釈としては、コンパイラのせいではなく、リンクの失敗ではないかと思っています。そこで、ndbm.hというファイルで宣言する際に必要なライブラリを指定すれば正常にコンパイルができるものだと思ったのですが、方法もしくはファイルがどこにあるかがわかりません。 manで調べたり、ndbm.hのファイルを開いて調べてみたのですが、それに関する情報がありませんでした。解釈がまちがっているのかもしれません。なにとぞ、ご指導おねがいします。 |
|
>>1930 XRD > 自分なりの解釈としては、コンパイラのせいではなく、リンクの > 失敗ではないかと思っています。 その通りです。 コンパイル済の dbm_open の実体 (=オブジェクト) が、標準 C ライブラリの libc.so.* に含まれていないのでリンク時にエラーに なっているわけです。なので、dbm 関係のライブラリ名を指定しないと いけません。探し方はこちら。 http://www.jp.FreeBSD.org/QandA/HTML/1609.html というわけで、手元の LASER5 Linux で % nm -o /lib/*.so.* /usr/lib/*.so.* | grep ' T ' | grep dbm_open 試すと、 /lib/libdb1.so.2:00009d70 T dbm_open /lib/libdb.so.2:00009d70 T dbm_open /usr/lib/libgdbm.so.2:00002230 T dbm_open /usr/lib/libgdbm.so.2.0.0:00002230 T dbm_open となりますので、cc -ldb -L/lib とか、cc -lgdbm -L/usr/lib すれば よいことがわかります。libdb の方は ndbm で、libgdbm の方は gdbm でしょうが、どちらがよいかはわかりません。 で、splitword と unescape_url の方は http://home.impress.co.jp/books/ietech/CGI.contents.html の ソースコードのリスト → cgiutils.h, cgiutils.c のところにあります。これをリンクするよう記述があったのでしょうが 見落としておられるのではないでしょうか。 |
|
>>1927 ミングさん >で全てを出す方法で目的は達成したのですが,それを一度で出したいと思い、下の様にしてみました。 実用的には、まずパイプで繋ぐことを検討すべきです。 1つのスクリプトにするにしても、元の2つがデータの行ごとの処理なので、 close や getline を使う必要がよく分かりません。 awkの勉強ということであれば、もっと単純な課題を使うべきでしょう。 スクリプトを拝見する限り、awkの文法を十分に理解されてるとは思えないもんで… |
|
>>1927 ミング 私の勘違いでなければ #!/usr/bin/awk -f { for (i = 0; i < 4; ++i) for (j = 0; j < 4; ++j) print($1 "-" i + 1, j + 1, $2 + 100 * j, $3 + 100 * i) } で済む話だと思うんですが... 今の問題は、制御の流れを追って考えれば分かるのでは。 (1) 暗黙にstdinから1行入力 (2) 最初のアクションで、out1に4行出力 (3) 2番目のアクションで、out1から1行入力 stdoutに4行出力後、(1)へ (3)のgetlineで1行しか読んでいないので、(1)で EOFが来る頃には、まだout1の1/4しか処理していない訳です。 |
|
68userさん、ありがとうございました。 まだ、うまくはできていませんが、がんばってみます。 splitword、cgiutils.cは見落としてました。 幸い本に掲載されていましたので、解決できそうです。 まだ、未熟者なので、わからないことが多々あると思います。 そのときは、お手数ですがよろしくお願いいたします。 |
|
なるべく早くGOOやinfoseek にかからないようにしてほしいのですけど… 特にSEGA BBSは… |
|
>>1935 ED > GOOやinfoseekにかからないようにしてほしいのですけど… なぜですか? (何となく想像できますけど) ちなみに、そうするかどうかは考えておきます。 > 特にSEGA BBSは… SEGA BBS 以外でもロボットの検索対象から外したほうがよい コンテンツがありますか? |
|
とある(無料)サーバに ~hogehoge というファイルをFTP転送しました が,これは作業中のバックアップ用ファイルを誤って転送したものです。 そこでWindows用FTPソフトを使って削除しようとすると, >DELE ~hogehoge 550 ~hogehoge: No such file or directory という結果になります。ちなみに相手方は ProFTPD です。 まあ当然といえば当然の結果かも知れませんが,いったいどうすれば削除で きるでしょうか。コマンドを手動入力することは可能です。恐らくは ~ を 別の形式で表現すればいいのだと思いますが,どうも分からないのです。 ファイルが残っていても実害はないのですが,何となく気持ち悪いので, よろしくご教示ください。 |
|
UNIX同士の通信で、TCP/IPのソケットを使ってHTTPのPOSTでデータのやり取りをしたいのですが、どのようにすればいいのでしょうか?? 理解不足でもしかしたらわけわかんない質問をしているかもしれませんが、お願いします。 ソケットでのデータのやりとりだと思ってください。 また、TCP/IPプロコトルとHTTPは別もの??これもわけわかんないですか? |
|
>>1937 CZ そのファイルをフルパスで指定すれば消せませんか? DELE /home/hoge/~hogehoge みたいに。 >>1938 ほいほい http://x68000.startshop.co.jp/~68user/net/ 68userさんがせっかくこういう物を提供してくださってるんですから 読みましょうよ・・・。 |
|
>>1939 hsj たすかりました。 なんかいろいろ見てて混乱してました。 いまみたら、理解しました。どうもすいません・・・・・ |
|
メールでいただいた質問ですが、勉強になったのでこちらでお返事。 > http://x68000.startshop.co.jp/~68user/net/perl4.html > にも書かれていますが > Perl4では SOCK_STREAM の値を直接指定しなければならない > となっておりますが、Perl4の場合 > require 'sys/socket.ph'; > とするのでは無いでしょうか? > (perl4環境が無く、人づてなので当てずっぽうです。) なるほど、既に perl4 のラクダ本も手元になく、常用環境には perl5 しかないので知りませんでした。あのページには perl4 なら sys/socket.ph を使うよう追記しておきます。 > また、サンプルの > > socket(SOCKET,PF_INET,SOCK_STREAM,0); > ですが、protocol だけが直接、値を指定しているのは > 何故でしょうか? TCP や UDP を使う場合は 0 でよいです。/etc/protocols には ip 0 IP # internet protocol, pseudo protocol number tcp 6 TCP # transmission control protocol udp 17 UDP # user datagram protocol となっていますので、TCP を使う場合は socket(SOCKET, PF_INET, SOCK_STREAM, 6); socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')); などと明示的に指定してもいいです (可読性と、NIS への対応 という面から見ると後者がよい)。 しかし、アドレスファミリ(PF_*) とソケットタイプ (SOCK_*) の 値が決まると、プロトコルは一意に定まります (なぜかはよく わかりません)。なので、プロトコルに 0 を指定すれば、自動的に 適切なプロトコルが決定されます。 FreeBSD なら socket(2) の下請け関数である socreate で http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/sys/kern/uipc_socket.c?rev=1.97 int socreate(dom, aso, type, proto, p) if (proto) prp = pffindproto(dom, proto, type); else prp = pffindtype(dom, type); と検索を行う関数 pffindtype が呼ばれています。 なお、ICMP をしゃべったり、IP データグラムを直接生成する ために raw ソケットを生成したい場合は 非 0 を指定します。 |
|
>>1939 hsj > そのファイルをフルパスで指定すれば消せませんか? > DELE /home/hoge/~hogehoge > みたいに。 FTP サーバの実装依存でしょうが、FreeBSD 4.3-RELEASE 付属の ftpd だと、カレントディレクトリに ~hogehoge がある状態で > rm ~hogehoge DELE ~hogehoge となり消せました。 ただ、 > rm ./~hogehoge > rm /home/user/~hogehoge は同じく 4.3-RELEASE 付属の ftp コマンドが何を勘違いしたのか RMD ./~hogehoge RMD /home/user/~hogehoge とディレクトリを削除しようとして失敗していました。 > quote DELE ./~hogehoge DELE ./~hogehoge と、直接 FTP コマンドを送ると OK でした。 UNIX 界では、~hoge が「hoge ユーザのホームディレクトリ」と 解釈されるのは ~ が先頭にあるときのみですから、フルパスで 書いたり ./~hoge などとすればよいです。ただし、 % perl Makefile.PL INSTALLMAN3DIR=~/install のように、アプリケーション側 (この場合は ExtUtils::MakeMaker) で 展開してくれるものもあります。 |
|
>>1941 68user > アドレスファミリ(PF_*) プロトコルファミリでした。 ちなみに、うちの web ではアドレスファミリ (AF_*) と プロトコルファミリ (PF_*) の使い分けがいいかげんだった ような気がします。いまだに違いがよくわからんなぁ。 |
|
68userさん> SEGA BBS以外は問題ないです。 理由はまあ掲示板の中身です… 友人が私の名前を使って書いたものなのですが。 部分的に消去とかはできるのでしょうか? |
|
>>1939 hsj >>1942 68user 無事削除できました。回答してくださったお二方に感謝します。 そのサーバ(ProFTPD 1.2.0rc3)では >DELE /user/www/~hogehoge.html 250 DELE command successful. および >DELE ./~hogehoge.html 250 DELE command successful. のどちらでも成功しました。 で,実験していて気が付いたのですが, >STOR ~hogehoge 550 ~hogehoge: No such file or directory はダメで, >STOR ~hogehoge.html 150 Opening ASCII mode data connection for ~hoge.hoge. 226 Transfer complete. のように拡張子が付くとOKというのは何だか不思議な仕様だと思いました。 |
|
>>1944 ED > 友人が私の名前を使って書いたものなのですが。 > 部分的に消去とかはできるのでしょうか? 基本的には消したくありません。それをやり出すと、「恥ずかしいので 昔書いた私の発言を消して」というような要望にまで対応しなければ いけないからです。 また、これはこっちの都合ですが、消去は手作業になります。URL を 入力してボタン一発で消去というわけにはいかないので、この作業に 時間を取られるようなら SEGA BBS 過去ログの公開は中止となります。 とは言っても、やはり見られては困る場合もあるでしょうし、こちらも 公開している以上はちゃんと管理する責任がありますので、「どうしても 困る」ということであれば消します。 あるいは、goo などのロボットよけを書いておけば OK ということで あれば、そっちの方向で対処するかもしれません。 というわけで、質問です。 Q1. できればやりたくないのですが、どうしても消さなければいけませんか? Q2. 発言を消さずに、ロボットよけを書くという対処でも OK ですか? |
|
68userさん> 個人的には消してほしいです。 その箇所は http://x68000.startshop.co.jp/~68user/segabbs/bbs4/vol10/home.html の53行目あたり オススメの曲を教えて! - 朝生 浩 97/9/17 00:07:22 Re: オススメの曲を教えて! - ふらんこ 97/9/17 01:28:34 THANK YOU! - ヨ−タ 97/9/18 20:45:33 THANK YOU! - ヨ−タ 97/9/18 20:46:14 今は「硝子の少年」のよーだが - もひろ 97/9/18 21:19:01 結果は? - ヨ−タ 97/9/22 22:51:31 私のお薦めはコレです〜♪ - MINAMI 97/10/09 09:15:05 です。この部分を消してほしいです。 ロボット検索にひっかからないようにでもいいのですが Web上に自分の名前があるのはどうも落ち着かなくて。 |
|
風光るの沖田さんとせいちゃんがすきなひといませんか?それと京都にあるという沖田さんの肖像画見た人だれかいませんか?私は、沖田さんの子孫をモデルにして書いたものなら見た事があるんですが・・・・・。 |
|
>>1947 ED > ロボット検索にひっかからないようにでもいいのですが ということであれば、ロボットよけを書くことで対処させて いただきます。 |
|
>>1941 68user メールで質問した者です。(名前違うけど・・・) 68userさん。ご回答ありがとうございます。 > perl4 なら sys/socket.ph を使うよう追記しておきます。 歌代さんの tcpconnect-1.0 ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/tcpconnect-1.0 にて ;# require 'sys/socket.ph'; unless (do 'sys/socket.ph') { #print "File sys/socket.ph is not found. Using default...\n"; eval 'sub SOCK_STREAM {1;} sub AF_INET {2;} sub PF_INET {2;}'; } というコードを発見しました。 同じ「自分で直接 値を書く」でも、ここまですれば 許されそうな気がします(笑) > TCP や UDP を使う場合は 0 でよいです。 > … > プロトコルに 0 を指定すれば、自動的に > 適切なプロトコルが決定されます。 > … > なお、ICMP をしゃべったり、IP データグラムを直接生成する > ために raw ソケットを生成したい場合は 非 0 を指定します。 なるほど、socket の説明の際によく書かれている 「普通は 0 でいいです」 的な言葉の意味が、ようやくわかりました。 # 危うく 0 を指定したいが為に getprotobyname('ip') とか # 書くところだった… (本末転倒) ところで、基本的な事がよく分かっていないので、勘違いの可能性大ですが > socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')); これだとリストで渡されませんか? > プロトコル |
|
loggerコマンドで、-p"(priority)というのがあるのですが、 ここには、何を設定したらよいのですか。 ”man logger”で見てもそれほど詳しくでできません。 設定する内容が詳しく書かれているものはないですか。 |
|
コマンドを使用して結果を出力せたた場合、1行ごとに改行と空白行 を含んで表示されます。 空白行を削除して詰めた結果を取得したいのですが、シェルスクリプト でどう記述すればよいですか。 |
|
こんちわっす! APACHEに繋ぐにはどうしたらいいのでしょうか?? このホームページは一通りよんだのですが、頭が悪いせいかよく理解できませんでした。どうかお願いします。ちなみにUNIX on APACHEです。 ソケットで繋いだらいいのでしょうか?? |
|
68userさん> ロボットよけじゃなくて やっぱ その部分だけ消してもらえませんか? よろしくお願いします |
|
かきこみ |
|
ちょっと趣旨が違うかもしれないのですが、同じパソコン上でCGIが動くかを試したいのですが(ソケット通信)どのようにすればいいかわかりません。 で、そのCGIが動くパソコンにはAPACHEが入っててそのAPACHEを通してデータのやり取りをしたいのですがいまいちよく分かりません・・・ どなたかURLだけでもいいのでお教えしていただけないでしょうか??? |
|
困っています。"ln"コマンドでリンクを張ろうとし、誤ってしまいました。 >ls -la lrwxrwrxrwx 1 haru 2 May 15 02:35 -s -> -s となってしまいました。ファイルを消したくてrmを打ってみても >rm -rf *s usage: rm [-rif] file ... と出てきて消せません。何方か消し方わかる方いらっしゃいますか? |
|
>>1957 はる > ファイルを消したくてrmを打ってみても > >rm -rf *s > usage: rm [-rif] file ... > と出てきて消せません。 rm ./-s で消せませんか? |
|
/tkさん 本当にありがとうございます。 消えました。 |
|
はじめまして。炭酸といいます。 HTTPプロトコルでファイルを転送するプログラムを作成しています。 HTTP/1.1で部分的なPUTを行うためのヘッダの記述方法がわからないので、 教えていただけないでしょうか? 「あいうえおかきくけこ」 ↑このようなファイルを10バイトずつ2回に分けてPUTしたいのです。 以下のようにやってみました。 一回目 PUT /test.txt HTTP/1.1 Host: Content-Length: 10 Content-Range: 0-9/20 あいうえお 二回目 PUT /test.txt HTTP/1.1 Host: Content-Length: 10 Content-Range: 10-19/20 かきくけこ これではうまくいかないようです。 ほかに必要なヘッダなどありましたらお教えいただけませんでしょうか。 長々と失礼いたしました。 |
|
>>1956 ひろさん WinでApacheなら、<http://tohoho.wakusei.ne.jp/wwwxx048.htm> ソケット通信は、localhostか直結してるなら自身のIPアドレスで 普通にアクセスすればいいです。 >rm ./-s unixは使ったことないけど、 rm -- -s でもいいのかな? |
|
>>1961 mm > unixは使ったことないけど、 > rm -- -s > でもいいのかな? rm なら良いみたいです。 http://pipi.iis.u-tokyo.ac.jp/~miyoshi/QandA/unix/file/15.html ちょこっとテストした結果では touch, cp, mv にも「--」オプションは有効でした。 # 調べものすると、自分の為になるなぁ… |
|
>>1962 /tk さん >touch, cp, mv にも「--」オプションは有効でした。 getopt.cを使う古くからのコマンドや上位互換のライブラリを 使うものなら、たぶん有効だと思ってました。 けど、リンク先を見ると、./-s の方も覚えておいた方がいいようですね。 ありがとうございます。 |
|
>>1950 /tk >> socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')); > これだとリストで渡されませんか? > プロトコル スカラーコンテキストなので、スカラー値が返ります。 socket(SOCKET, PF_INET, SOCK_STREAM, @a=getprotobyname('tcp')) || warn "$!"; print "@a\n"; と socket(SOCKET, PF_INET, SOCK_STREAM, $a=getprotobyname('tcp')) || warn "$!"; print "$a\n"; を試してみるとわかると思います。 >>1951 斎藤 syslog.conf(5) に解説がありませんか? >>1952 鈴木 状況がよくわかりません。command | grep -v '^$' とか? ところで、 >>1951 斎藤 >>1952 鈴木 REMOTE_HOST が同じですが、同じ方ですか? >>1953 後藤 どういう意味で「apache に繋ぐ」と言っているのかよくわかりません。 「〜はわかったが、〜の部分がわからない」という質問の仕方をして下さい。 >>1956 ひろ http://X68000.startshop.co.jp/~68user/net/ を読んで、 「〜はわかったが、〜の部分がわからない」という質問の仕方をして下さい。 ところで、 >>1953 後藤 >>1956 ひろ REMOTE_HOST が似ていますが、同じ方ですか? >>1954 ED わかりました。しかし、時間が取れないのですぐに作業することは できません。ご了承下さい。 >>1960 炭酸 ちょっと時間が取れないので、土日にでも調べてみます。 > これではうまくいかないようです。 どううまくいかないのか、エラーメッセージは出るのか、 PUT 一つだとどうなるか、などを書くと回答をもらいやすい かもしれません。 |
|
はじめまして。PERL版HTTPクライアントのページが、大変役に立ちました。ありがとうございます。 最近、会社のフィルタリング(^^;が厳しくなっきた為、ちょうど、作っていたところでした。STDOUTへ バーナーを挿入する無料サーバー(*1)を経由して、画像ファイル(*2)をGETする場合、一旦、 *2を*1へ保存してから、*2の埋め込みページを出力する、以外の面白いアイデアがあれは、お 聞かせ下さい。 #ウェブメールクライアントも作らないと(^^; |
|
レス、ありがとうございます。>68userさん。 言葉が足りませんでした。補足させてください。 RFC2616 の14.16あたりを読んでやってみています。 ■リクエスト 1回目 PUT /test.txt HTTP/1.1 Host: Content-Length: 10 Content-Range: bytes 0-9/20 あいうえお 2回目 PUT /test.txt HTTP/1.1 Host: Content-Length: 10 Content-Range: bytes 10-19/20 かきくけこ ■結果 レスポンスヘッダには Content-Range ヘッダがありません。 リクエストに Content-Range ヘッダがないときと同じように 動作しているようです。 サーバには「かきくけこ」というデータが上がった状態になります。 (2回目のリクエストで上書きされているようです。) サーバーのバージョンは、 Apache/1.3.12(Unix) (Red Hat/Linux) tomcat/1.0 DAV/1.0.0 mod_perl/1.21 です。ひょっとしてサーバーがレンジに対応していないのでしょうか? ネットワークプログラムの初心者なので、リクエストに問題があるのかと不安に 思い、質問させていただきました。 |
|
>>1964 68user > スカラーコンテキストなので、スカラー値が返ります。 うう。やはり基本的な事がわかってなかった。 何でスカラーコンテキストになるのかが 理解出来てなかったです。 今回の件で青ラクダ本のコンテキストの項や サブルーチン(プロトタイプ)の項を読んで 自作の関数に getprotobyname() 渡して その中で print したりして 何となく理解出来たつもりになりました。 # 今まで引数の型の宣言なんて知らなかった。 68userさん。ご回答ありがとうございました。 で、お礼の後の質問で恐縮なんですけど 自分なりに分かったつもりなった結果 > socket(SOCKET, PF_INET, SOCK_STREAM, @a=getprotobyname('tcp')) || warn "$!"; これの警告が出る理由は getprotobyname('tcp') の リストの要素数が 3つだからだとと思うのですが 実のところどうなんでしょう? # またもや間違っている可能性大 |
|
>68userさん ありがとうございます。 助かります。 |
|
>>1966 炭酸 http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.6 によると >If the Request-URI refers to an already existing resource, the enclosed entity SHOULD be considered as a modified version of the one residing on the origin server. とあるので、 >サーバには「かきくけこ」というデータが上がった状態になります。 >(2回目のリクエストで上書きされているようです。) というのは仕様上正しい動作だと思います。 >>1960 炭酸 を読むと、おそらく「レジュームの逆」を行いたいのだと思うのですが、それは PUT ではできないと思います。 # FTP の PUT でもできないですよね? |
|
>>1967 /tk > これの警告が出る理由は getprotobyname('tcp') の > リストの要素数が 3つだからだとと思うのですが そうですね。 socket(SOCKET, PF_INET, SOCK_STREAM, @a=getprotobyname('tcp')) は Protocol not supported at -e line 1. となりますが、これは ('tcp','TCP',6) というスカラーが返って、 先頭の 'tcp' の値が使われるのでエラーになると思っていましたが、 勘違いでした。 ('tcp','TCP',6) というリストをスカラーコンテキストで評価 したため 3 が返り、 socket(SOCKET, PF_INET, SOCK_STREAM, 3) と等価になってしまったということですね。 >>1966 炭酸 すいません。今 apache で PUT メソッドを有効にするには どうすればいいんだっけ? と調べているところです。 # apache 単体では無理で、mod_put か DAV あたりを入れないと # ダメみたいですね。 また PUT や Content-Range は実際に使ったことがないので、 あまり期待しないで下さい。 |
|
>>1969 The WAY > http://way.direct.ne.jp/HTTP/ RFC2616 は流し読んだ程度なので、僕も勉強しないと。というわけで、 http://X68000.startshop.co.jp/~68user/net/rfc.html からリンクを張らせていただきました。 # http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/rfc.html |
|
大変勉強になり感謝しています。(本当だよ) パールの関数で $port = getservbyname('http','tcp'); の出力がなくて 悩んでいたのですが、今日その理由がわかりました。 プロバイダーの /etc/services に http tcp/80 のエントリが 無いのです。(-_-;) 試しに自分のPCの C:\windows\services を覗いたら ここにもエントリがありません。 他のウェルノゥンポートはエントリがあるのに 何故 HTTP のみがエントリされてないのでしょうか。 セキュリティーの関係なのでしょうか。 |
|
>>1972 moto > プロバイダーの /etc/services に http tcp/80 のエントリが > 無いのです。(-_-;) 例えば Solaris2.6 などは http tcp/80 がありませんね。 > 試しに自分のPCの C:\windows\services を覗いたら > ここにもエントリがありません。 生まれて初めて C:\windows\services を見ましたが、http の エントリってないのですね (Windows Me)。 Solaris は最小限のエントリのみ書いておくから、必要なら勝手に 追加してね、という思想じゃないかと想像します。Windows Me は なぜでしょうね? わかりません。 なお、UNIX では NIS というシステム情報を共有する仕組みがあります。 もしそれを使っているなら % ypcat services とすれば出てくる場合もあるでしょう。NIS 使用時には getservbyname は /etc/services を見ません。 |
|
どうもありがとうございます。>68userさん The Wayさん サーバーにはDAVが入ってるので、普通のPUTはできます。 もういちどRFCをよく見直してみます。 ほんとにありがとうございました。 |
|
はじめまして、ENOと申します。 質問その1: FreeBSD4.2で、ENIのatmアダプタを認識させ、 en0というインタフェースが出来たのですが、 これをmulticastに対応させたいのですが、 en0=841<UP,RUNNING,SIMPLEX>mtu 9180 となっていて、対応してくれません、 ここに<....,MULTICAST>となるようにするに は、どうしたらよいのでしょうか・・・どな たか教えてください その2: その1のマシンで、mroutedを動かして、マル チキャストルータとしたいのですが、webのあ ちこちにある資料にあるように、デフォルトで mrouted_enable="YES"としても、動いてくれま せん。mroutedを動く状態にするまでにどうした らよいのか教えてください 宜しくお願いいたします |
|
はじめて質問させていただきます。 本ページで色々勉強させて頂いてます(感謝) 当方のレベル)初心者 winsockを用いたマルチスレッドクラサバ作成調査中 クライアント・サーバ間の通信確立方法の基本は理解(してるつもり) 内容) クライアントからの接続要求が複数同時に(理論的に全く同時はありえないかもしれませんが)サーバにきた場合、サーバ側のリクエスト待ちプロセス内のlisten関数は、どのようにこの要求を処理するのでしょうか?つまり、全く同時のアクセスに対して、listen関数が作る待ち行列(キュー)にはどう格納されるのでしょうか? 要求受付後は、各クライアント毎に処理を並行に行う(マルチスレッド) ことができますが、要求受付部のlisten関数はマルチ対応なのかどうか 、前出の全く同時の接続要求はどう処理されるのかが分からないので、ご存知の方が、是非ご教授いただければありがたいです。 質問内容が初歩的かもしれませんが、よろしくお願いしますm(__)m |
|
>>1975 ENO マルチポストは禁止です。 http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse >>1976 isaq 要は、listen が thread safe かどうか、ということでしょうか? 複数のスレッドが同時にクライアントとの接続を取り合ったりしないのか? と いう意味かと思いますが、listen は OS へ「クライアントからの接続を受け 付けなさいと」命令するだけです。それに対して、accept は OS がキュー イングしておいた待ち行列から、先頭のクライアントを取り出す命令。 というわけで、listen や accpet のマニュアルを見て、thread safe か どうかを確かめましょう。 FreeBSD ならばマニュアルに http://www.jp.FreeBSD.org/cgi/mroff.cgi?subdir=man&man=listen&dir=jpman-4.3.0%2Fman 非スレッドライブラリ listen() は listen システムコールとして実装されています。 スレッドライブラリでは、 listen システムコールは _thread_sys_listen() に アセンブルされ、 listen() は読み書きについて s をロックしてから、 _thread_sys_listen() を呼び出す関数として実装されています。戻る前に listen() は s をアンロックします。 とあります。Windows は知りませんが、マニュアルに書いてあるのでは ないでしょうか。 あるいは、「スレッド」という用語を、pthread などの thread でなく、 単に「並行動作」という意味で使ってますか? |
|
skel.103Mです。いつもお世話になっております。 さて、 http://X68000.startshop.co.jp/~68user/Cgi-room/ の「MXレコードのお話」についてですが、質問させていただきたい ことがあります。 メールアドレスは、「{ユーザー名}@{ホスト名}」という構成をし ていますが、この{ホスト名}の部分に記述されたホストが実際に存 在する場合、即座に(MXレコードを参照せずに)そのホストに送ら れるのでしょうか。それとも、{ホスト名}に記述されたホストが実 際に存在したとしても、存在しないホストと同様に、まずMXレコー ドを参照し、その結果現れたホストに送られるのでしょうか。 先述したページを読むと、{ホスト名}の部分が存在しない場合に*のみ*、 MXレコードを参照し、その結果現れたホストに送られるものである、 と書いてあるように思えました。実際、これは(少なくとも私にとっ ては)直感に反しないことで、そうなのかなと納得してました。と ころが、某メーリングリスト宛てのメールが私に届きまして、ヘッ ダを見ると、To: の欄のメールアドレスのホスト名の部分(@より右側)が 実際に存在するホスト名であるにもかかわらず、Received: にその ホスト名が載ってない?!…ということがありましたので。 |
|
68user殿 ご指摘の通り、listenがthread safeかどうかが知りたかったわけです。 教えていただいたURL参考にさせていただき、もう一度調べ直してみて、分からなければ質問させていただきます。 また分かりましたら、報告させていただきます。 分かりにくい質問を投げてしまったけれど、お返事ありがとうございました。 ちなみに、OS:Windows 2000 でクラサバ開発しているのですが、私が使っているwinsock関連書籍で ”WinSock2.0プログラミング 発行:ソフトバンクパブリッシング” というのがあリます。もしwinsockを初めて使おうとしている方がいましたら一読すると良いかもしれません。 |
|
>>1978 skel.103M > この{ホスト名}の部分に記述されたホストが実際に存在する場合、 > 即座に(MXレコードを参照せずに)そのホストに送られるのでしょうか。 1. IP アドレス直接指定なら、直接 IP アドレス宛に送信 (Ex. To: foo@<127.0.0.1>) 2. 1 がダメで、MX が引けたなら、優先順位を考慮して MX 宛に送信 3. 2 がダメで、A レコードが引けたなら (=正引きできた)、A レコード宛に送信 という順序だと思います。なので、MX が優先ですね。 多分、ここらへんは RFC 2821 に書いてあると思います。 # http://ring.riken.go.jp/pub/doc/RFC/rfc2821.txt |
|
どうも、skel.103Mです。ご返答どうもです。 メールアドレスと送信先ホストの件、了解しました。私なりに調べた ところ、RFC2821の「5. Address Resolution and Mail Handling」で、 > are generally discouraged. The lookup first attempts to locate an MX > record associated with the name. If a CNAME record is found instead, > the resulting name is processed as if it were the initial name. If > no MX records are found, but an A RR is found, the A RR is treated as > if it was associated with an implicit MX RR, with a preference of 0, > pointing to that host. If one or more MX RRs are found for a given > name, SMTP systems MUST NOT utilize any A RRs associated with that > name unless they are located using the MX RRs; the "implicit MX" rule > above applies only if there are no MX records present. If MX records > are present, but none of them are usable, this situation MUST be > reported as an error. とありますね。なるほど。ちなみに、RFC974にも似たような記述があり ましたね(現在はHISTORICですけど) ただ、分からないのは、なぜこのように定められているのか、その理 由が私にはよく分かりません。。私には直感に反するように思うんで すが…… |
|
「ソースを表示してみよう」で、 http://www.chailien.com/ が、正常表示されません。 |
|
>>1981 skel.103M たとえば UNIX マシンが数百台あるような環境があるとして、 % hostname host123.example.ac.jp % whoami user のとき % echo | mail foo@bar などとすると、 From: user@host123.example.ac.jp なメールが foo@bar 宛に届きます。 このままリプライをすると host123.example.ac.jp 宛に メールが送られますが、数百台全てのマシンに SMTP サーバを立ち上げておくのは現実的ではありません。 で、それらの MX を mail.example.ac.jp に指定しておけば、 From: user@host123.example.ac.jp であっても MX 宛に届きます。もちろんその際には MX レコードが A レコードより優先されなければいけません。 …という感じで僕は理解しておりますが、いかがでしょうか。 >>1982 匿名 どうもです。直しました。 |
|
skel.103Mです。68user様、ご返答どうもです。 >>1983 68user なるほど!よく分かりました。 そこで、実際にそうなっていることを確かめるために、某ネットの (すなわち大学以外の)マシンを使って以下の要領で実験を行って みました。 ・送信元ホスト:test.bounet.net ・宛先メールアドレス:s1080224@exist.u-aizu.ac.jp 正式なメールアドレスではなく、@の右側を実際に存在するホスト 名に改竄。 結果は以下のようになりました: ---------- 1. まずMXレコードを調べておく。 →@exist.u-aizu.ac.jpのアドレスに対応するMXレコードは mailhost.u-aizu.ac.jpである。 [bounet] % nslookup Default Server: localhost Address: 127.0.0.1 > set q=mx > exist.u-aizu.ac.jp. Server: localhost Address: 127.0.0.1 Non-authoritative answer: exist.u-aizu.ac.jp preference = 10, mail exchanger = mailhost.u-aizu.ac.jp Authoritative answers can be found from: …(省略)… [bounet] % 2. メールを送信。 [bounet] % telnet localhost 25 Trying 127.0.0.1... Connected to localhost.bounet.net. Escape character is '^]'. 220 test.bounet.net ESMTP Sendmail 8.11.3/***************; Thu, 24 May 2001 20:47:40 +0900 (JST) EHLO localhost 250-test.bounet.net Hello localhost.bounet.net [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-SIZE 250-DSN 250-ONEX 250-ETRN 250-XUSR 250 HELP MAIL FROM: testerz@bounet.net 250 2.1.0 testerz@bounet.net... Sender ok RCPT TO: s1080224@exist.u-aizu.ac.jp 250 2.1.5 s1080224@exist.u-aizu.ac.jp... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Subject: test X-Mailer: telnet JiKaUcHi (^^;;; This is a test mail. . 250 2.0.0 f4OBm4K02587 Message accepted for delivery quit 221 2.0.0 test.bounet.net closing connection Connection closed by foreign host. [bounet] % 3. 送信ログを確認する。 →配送先はexist.u-aizu.ac.jpでは*なく*、MXレコードとして指定され ているホストmailhost.u-aizu.ac.jpに配送された。 May 24 20:50:34 test sendmail[2587]: f4OBm4K02587: from=testerz@bounet.net, size=**, class=0, nrcpts=1, msgid=<200105241149.f4OBm4K02587@test.bounet.net>, proto=ESMTP, daemon=Daemon0, relay=localhost.bounet.net [127.0.0.1] May 24 20:50:41 test sendmail[2596]: f4OBm4K02587: to=s1080224@exist.u-aizu.ac.jp, ctladdr=testerz@bounet.net (****/****), delay=00:01:22, xdelay=00:00:07, mailer=esmtp, pri=30069, relay=mailhost.u-aizu.ac.jp. [163.143.1.43], dsn=2.0.0, stat=Sent (UAA23329 Message accepted for delivery) ---------- たしかに、MXレコードがAレコードより優先されていますね。 どうもありがとうございました。 これからもよろしくお願いします! |
|
お久しぶりです。 ちょっと思うところがあって、掲示板の検索をしたのですが、ふと疑問が出てきました。 http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard/namazu.cgi?query=http&whence=0&max=20&result=normal&sort=score とかしますと、>とか<とか"とかが、>とか<とか"e;と表示 されるみたいです。これは、仕様ですか? あと、同じページの最後に、webmaster@www2.startshop.co.jp と ありますが、このwww2は、http://x68000.startshop.co.jp/~68user/ から推測するに、間違いなのではないですか? 違ったら済みません。 |
|
初めて書き込みさせていただきます。 和文で,改行を空白に置換する方法を ご存知の方はいないでしょうか。 例) おはよう こんにちは こんばんは ↓ おはよう こんにちは こんばんは 目的は,ウェブページのフォームから送られた文章を, 表示するページの都合で,改行無しの文に変更することです。 よろしくお願いいたします。 |
|
>>1986 椎 HTMLならば加工するまでも無く改行が無視されますが? |
|
>>1985 へにか > >とか<とか"e;と表示されるみたいです。これは、仕様ですか? いえ、正しくは < > " と表示されるべきです。この掲示板の データ用の文書フィルタ http://www.namazu.org/doc/manual.html#doc-filter を作成したのですが、それが不十分な状態です。 > あと、同じページの最後に、webmaster@www2.startshop.co.jp と > ありますが こちらも正しくは 68user@X68000.startshop.co.jp です。これは… どこで設定するんだっけ。なんかコンパイル時に埋め込まれるような 気がしないでもないなぁ。 両方とも調べて直しておきます。ご指摘ありがとうございました。 >>1986 椎 > 目的は,ウェブページのフォームから送られた文章を, > 表示するページの都合で,改行無しの文に変更することです。 ちゃんと使っている環境を書きましょう。perl なら $str =~ s/\r\n|\n/ /g (半角空白に置換したい場合) $str =~ s/\r\n|\n/ /g (全角空白に置換したい場合) でしょうか。 |
|
初めて書き込みします。 UNIXのシステム音のビープ音の音量を大きくしたいのですが、どうすれば いいのでしょう。CDEデスクトップツールでビープ音の調整というのがあっ たのですが、その最大値よりもさらに大きくしたいと思ってます。 このビープ音は内部スピーカーから鳴っている様で、もし音量を調整でき ないのであれば内部スピーカーを外部スピーカーに切り替える方法を知り たいのですが、誰か分かる人いませんか。 どうぞよろしくお願いします。 |
|
いつも困ったときばかり相談ですみません。 #! perl ... for (sort {&year($b) <=> &year($a)} glob './bank*.txt') { my $foooo = &year($_); warn ":::: [$idat2] vs [$foooo]"; if ($idat >= $foooo) { warn "!!!!:::: [$idat2] >= [$foooo]"; open BANK, $_ or die "can't open $_ because $!"; last; } } という文が CGI の中にあって、 エラーログに :::: [20010730] vs [20010701] at /html/cgi-bin/foo.cgi line 319. :::: [20010730] vs [20010601] at /html/cgi-bin/foo.cgi line 319. :::: [20010730] vs [00000000] at /html/cgi-bin/foo.cgi line 319. !!!!:::: [20010730] >= [00000000] at /html/cgi-bin/foo.cgi line 321. と出ます。 20010730 対 20010701 の時点で 20010730 が勝つと思うのに納得いきません。 助けてください〜 |
|
試みに s/>=/ge/ してみたら(ゼロづめなので文字として比較しても同じかと思って)、 :::: [20010530] vs [20010701] at /html/cgi-bin/foo.cgi line 319. !!!!:::: [20010530] ge [20010701] at /html/cgi-bin/foo.cgi line 321. だそうです。(T.T) |
|
すっすいませんでした。 過去の2発言、忘れてください。 (文字面で、もういきなりバグってます) |
|
>>1987 通りすがり > HTMLならば加工するまでも無く改行が無視されますが? すみません。意味がわかりませんでした。 >>1988 68user > ちゃんと使っている環境を書きましょう。 すみません,忘れていました。 使い方も読んでいなくて,申し訳ありませんでした。今後は気を付けます。 ご推察の通り,環境はperlです。 $str =~ s/\\n/ /g なんて自分で書いて試してみたらできなかったので 書き込ませていただいたのです。 今回, $str =~ s/\r\n|\n/ /g で,試してみたのですが,上手くいきませんでした。 でも,基本的に考え方は間違っていなかったようだと わかったので助かりました。 もしかしたら,プログラムの他の部分に問題があるのかもしれません。 チェックし直してから,報告させていただきます。 |
|
このページは、めちゃくちゃためになりますね。 今後も参考になることをやってくれるとありがたいっす。 |
|
このページのおかげで,ネットワーク全体が見えてきました. 本当にありがとうございます. これからも参考にさせていただきたいので, このHPがずっとなくならないことを心よりお願いいたします. これからも頑張ってください. |
|
どうも忙しくて回答さえ満足にできませんな。いかんことです。 >>1989 gooo > もし音量を調整できないのであれば内部スピーカーを外部スピーカーに > 切り替える方法を知りたいのですが、 最大限に上げたのならもう音量は調節できないでしょう。 後はハード工作になるんですかね。その方面は全くわからないので、 すいませんがわかりません。 >>1990 ふくし >>1991 ふくし >>1992 ふくし えっと、解決したんですよね? >>1994 PC歴5ヶ月 >>1995 といも どもども。とはいえ時間がなくて更新も満足にできないのですが。 |
|
>68userさん Sega BBSの件なんですけど、 消去が時間かかりそうだったら、 とりあえずロボット検索に 引っかからないように、しといてほしいのですが… 早めにお願いします。 http://www.google.com/intl/ja/faq.html お忙しいところすいません。 よろしくお願いします。 |
|
初めまして。質問です。 ホームページ本体を置くサーバー(A)とCGIサーバー(B)が別になっていて、 サーバーAにあるHTMLファイルからサーバーBにあるCGIを呼び出し、 サーバーAにある別のファイルの情報を取得するため、以下のように記述しました。 open FH ,"http://www.abc.co.jp/xyz/index.html" or die "open失敗:$!"; しかし、うまくファイルをオープンすることができませんでした。 パスを相対的に指定すれば成功するのですが、絶対的に指定すると、 CGIサーバー内であってもオープンできません。 これはこういう仕様なのでしょうか。 そうだとすれば、他にいい方法はあるのでしょうか。(被参照ファイルをサーバーBに置く以外で) ご回答をよろしくお願いいたします。 |
|
>>1997 ED ロボットよけ META タグを追加しました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/view-segabbs.cgi.diff?r1=1.3&r2=1.1&f=h 時間が取れたらコンテンツ自体を削除します。 >>1998 田中 > open FH ,"http://www.abc.co.jp/xyz/index.html" or die "open失敗:$!"; open というのはファイルをオープンするもので、ファイルいうのは マシンに接続されている HDD や CD-ROM に格納されているものを 指します。 # っていうととても語弊がありますけど。将来的にはそういう指定の # 仕方ができるようになるんじゃないかと思います。 なので、それをしたければサーバ B で動かすプログラムから サーバ A の web サーバにアクセスして http://www.abc.co.jp/xyz/index.html を取得しなければいけません。仕組みについてはここらへんを。 http://X68000.startshop.co.jp/~68user/net/ 実際は wget, fetch などのコマンドや、(perl なら) LWP, IO::Socket などのモジュールを使ってサーバ A から /xyz/index.html を 取得するのがお手軽です。 |
|
68userさん、素早い回答をありがとうございました。 教えて頂いたやり方は、私にはまだ高度すぎるようです。 もう少し勉強してみます。 |
|
はじめまして。初男と申します。 質問があります。 あるシェルスクリプトを実行し成功するのですが、 remshを使って、 remsh 自分のサーバ名 -n スクリプト名 として、実行すると、sortの処理でエラーが出てしまいます。 sortは、remshを使うとどうしてエラーになってしまうのでしょうか? ご存知の方は教えていただきたいと思います。 よろしくお願いします。 |
|
>>2001 初男 具体的にどういう書き方をしていて、どういうエラーが出ていますか? |
|
68userさん、お返事ありがとうございます。 あのあと、調査して、原因がわかりました。 ありがとうございました。 |
|
はじめまして!僕はUNIXなどのプログラム関係は全く理解できなかったのですがこちらのサイトではとてもわかりやすく説明されているため大変勉強させていただきまことに感謝いたしております。これからも応援いたしますのでがんばってください。 |
|
はじめまして。初訪問で初投稿です.宜しくお願いします. 現在、[A装置]−[Router]−[B装置](簡単に記述)で接続した環境で、RouterにてIP Filteringの設定を追加しようとがんばっています。[A]→[B」は、RCPによるファイルの送受信を行っているため、RCP以外のアプリケーションプロトコル(Telnetとか)を遮断する方法を探しております。 まずは、「全アプリケーションプロトコル遮断」として、「RCPだけ通過」という方法を取ろうと思っているのですが、【RCPのポート番号】が不明です.【RCP】は、Welknown-portではないのでしょうか?UNIXがその都度ポート番号を取得してしまうのでしょうか?ご存知の方教えて下さい. |
|
>>2005 ネットワークセキュリティ > 【RCPのポート番号】が不明です shell 514/tcp です。 こういう場合はサイズの大きなファイルを rcp しておいて、 その間に netstat -a を実行すればよいでしょう。 |
|
>>2005 ネットワークセキュリティ 蛇足ですがセキュリティを気にするのなら r系のコマンド自体使わない方が良いかと思いますが・・・。 |
|
はじめまして。もっちと申します。 いつも参考にさせていただいています。 はじめて投稿させていただきます。 http⇔https(https⇔https)のsocket通信をC言語で実現させたいのですが、 情報が無い為、何をどうすれば良いのかわかりません。 http⇔httpの通信はこちらのホームページを参考にさせていただいて、 実現することが出来ました。(ありがとうございます) いろいろ情報を検索して、opensslを使用すれば良いということまでは わかったのですが、それをどの様に使用すれば、暗号化が行われ、 通信を行い、受信データを複合できるのかわからず、悩んでおります。 情けないのですが、私には余りC言語での開発経験がありません (普段はPerlを使用しています) ですので、余計に訳がわからなくなってきております。 どなたか、この問題に関する情報をお持ちの方、いらっしゃらないでしょうか? 開発環境は、Solaris SunOSです。 opensslなど、必要と思われるものは準備されております。 (他に必要なものなどあれば、それも併せて教えていただければ幸いです) どうぞ、よろしくお願い致します。 |
|
>>2008 もっち 僕には難しいことはわかりませんが、とりあえず OpenSSL のマニュアル http://www.openssl.org/docs/ssl/ssl.html OpenSSL 和訳サイト。古いかも。 http://www.infoscience.co.jp/technical/openssl/docs/ssl.html SSLを使った暗号化通信のやり方 http://stingray.sfc.keio.ac.jp/security/ssl/ssl.html RFC 2246 TLS-1.0 (≒ SSL-3.0) http://ring.asahi-net.or.jp/archives/doc/RFC/rfc2246.txt ここらへんを参考にしてみて下さい。 |
|
>>2009 68user 68user様、早速のご返答ありがとうございます!! >OpenSSL のマニュアル の方は、私のほうでも見つけていたのですが、何を書いているのか 理解出来ず、挫折していました。 >SSLを使った暗号化通信のやり方 早速行ってきました。 まだ、詳細まで読んでいませんが、説明がスゴク丁寧で、 私の知りたかった関数の説明までされていて、私のようなC言語未熟者にも 理解できそうな気がします。 教えていただいたサイトを参考にして、実現できる様、頑張って見ます。 実現出来次第、報告に伺います!! |
|
「ネットワークセキュリティ」の件 >>2007 hsj hsjどの ご指摘の通り、R系のコマンドを使用している時点でセキュリティに問題ありとは認識しています。。。先にこっちを対応すべきかもしれませんね。参考にさせていただきます。 >>2006 68user 68userどの ポート番号の件ありがとうございます。 さっそく、設定値反映して確認します。確認結果は後日ご報告します。 |
|
初めまして、すごく初心者の者です。 早速質問なのですが、HTTPでは要求などを文字列として送ってるだけなのでしょうか。つまり GET /test/test.html HTTP/1.0 などの文字列を相手に送ってるだけでしょか。 相手側では、その文字列を受け取って、Javaのtokenizerとかで、文字を切り出して s1="GET" s2="/test/test.html" s3="HTTP/1.0" if(s1.equals("GET"){} でプログラムで処理して結果をクライアントに文字列で返して、 またブラウザが文字列を切り出して、レイアウトしているだけでしょか。 だから、自分でも送られてくる文字列を受けることができて、文字列を見れて、また、HTTPで文字列を返すプログラムが書けるのでしょうか。 また、こんな質問を受け付けてる掲示板をご存知でしたら教えてください。 |
|
こんにちは、お邪魔します。 >HTTPでは要求などを文字列として送ってるだけなのでしょうか。 そうです。人間が見て理解できるので楽しいですよ。 >相手側では、その文字列を受け取って、Javaのtokenizerとかで、文字を切り出して 相手側=WWWサーバーと考えると、おっしゃる通りだと思います。 受け取った文字を解釈して、レスポンスを(画像だったりもしますので全て文字列とは限りませんが)ブラウザに送ります。 ブラウザは、受け取ったデータがHTMLの場合はそれを解釈して(文字列を切り出して)レイアウトして表示します。 >だから、自分でも送られてくる文字列を受けることができて、文字列を見れて、また、HTTPで文字列を返すプログラムが書けるのでしょうか。 書けます。 偶然、先日「まさにそれ」というような物を書いたので、良かったら見てみて下さい(だからノコノコ出てきてしまいました)。 http://www.gyosatu.com/jumper/software/MHTTPD/MHTTPD.java http://www.gyosatu.com/jumper/cgi-bin/bbs/bbs2.pl?bbs=jumper&i=110#3 に、コンパイルと起動の仕方をごく簡単に書いてあります。 #もし分からなくてかつ動かしたかったら言って下さい。 まさに >if(s1.equals("GET"){} のような処理をしている筈です。 受け取った文字列を見えるように改造するのも簡単だと思います。 >また、こんな質問を受け付けてる掲示板をご存知でしたら教えてください。 ここが適切だと思います。 |
|
またまたお世話になります。 bash上で以下のようにすると、 # tail -f anylog.log ログに追加される内容が逐次見られますが、コレをちょっと変更して # tail -f anylog.log | grep "extract_keyword" > /dev/tty0 & として、ログインしていないコンソールに表示させようとしましたが、 jobs で表示されないため、停止が出来なくなりました。 ps で見てみると、プロセスの親子関係が無くなっているように見えます。 これはどうしてなんでしょうか? また、このコマンドを実行したコンソールがログアウトした時に 同時に終了させたいのですが、どう指定すればいいでしょうか。 アドバイスをよろしくお願いします。 |
|
こんにちは。 私は今ソケットを使ったプログラムを作成していて、 いろいろ調べてたら、このサイトが見つかり非常に助かってます。 そこで質問なのですが以下のURLよりDLしたものをコンパイルし、 実行するとコアダンプしませんか? http://www2.startshop.co.jp/~68user/net/sample/http-client-2.c 私はWindows2000(Cygwin)でもSolarisでも コアダンプしました。 最初は自分でかなりいじってしまったので、 そのせいかなぁとも思ったのですが、 DLしたものをそのまま使ってもなっちゃいました。 今、修正しようと思ってるのですが、 なかなかうまくいきません。 どなたか知ってる方いらっしゃいませんか? 教えて下さい。 よろしくお願いします。 |
|
>>2014 スナフキン > # tail -f anylog.log | grep "extract_keyword" > /dev/tty0 & > として、ログインしていないコンソールに表示させようとしましたが、 > jobs で表示されないため、停止が出来なくなりました。 こちらの環境の bash では、jobs で表示できました。 関係ないかもしれませんが、 % (tail -f anylog.log | grep "extract_keyword" > /dev/tty0) & だとどうなりますか? > また、このコマンドを実行したコンソールがログアウトした時に > 同時に終了させたいのですが、どう指定すればいいでしょうか。 bash で & を付けると、SIGHUP をブロックしてしまったような 気がしますが…。違ったっけ。回避策は知りません。bash 使いの 方、いらっしゃいますか? >>2015 nana > 以下のURLよりDLしたものをコンパイルし、実行するとコアダンプ > しませんか? こちらの FreeBSD, Solaris, Linux 環境ではコアダンプしません でした。引数はどのように指定しましたか? また、-g を付けて コンパイルして、gdb で backtrace するとどう表示されますか? % gcc -g -o http-client-2 http-client-2.c % gdb http-client-2 (gdb) run http://www.yahoo.co.jp/index.html Starting program: http-client-2 http://www.yahoo.co.jp/index.html Program received signal SIGSEGV, Segmentation fault. 0xef5a4674 in strlen () from /usr/lib/libc.so.1 (gdb) backtrace #0 0xef5a4674 in strlen () from /usr/lib/libc.so.1 #1 0xef776b74 in _doprnt () from /usr/ucblib/libucb.so.1 #2 0xef777aa4 in printf () from /usr/ucblib/libucb.so.1 #3 0x11320 in main (argc=2, argv=0xeffffac4) at http-client-2.c:108 # 今気づきましたが、引数に「http://」を指定したときに # エラーで弾かないのはバグですね。 |
|
早速質問なのですが、 MACアドレスとIPアドレスの両方が必要な理由を教えてください。 あと、windowsのDOSでarp -aとタイプしてもNO ARP Entries Foundと出てしまうのは、なぜですか。どういったときに、テーブルにMAC,IPの対応がたされるのですか。www.goo.ne.jpとかにアクセスしただけではだめなのですか。 通信するときに,最初IPアドレスでその通信相手のマシンからMACアドレスの情報を得て、それからまた、パケットにIP,MAC両方のアドレスをつけて、また、その相手のマシンにパケットを送るのは、無駄じゃないですか。 あと、初心者がネットワークエンジニアになるための勉強に、お勧めの参考書、ホームページ、どのようなステップをふめばいいか、皆さんの意見、経験を教えて下さい。 |
|
>>2017 aiko > windowsのDOSでarp -aとタイプしてもNO ARP Entries Foundと > 出てしまうのは、なぜですか。 Ethernet カード (=ネットワークカード=NIC) を使っていますか? MAC アドレスは Ethernet カードに対して割り振られるもので、もし ダイヤルアップ PPP を利用していたら arp テーブルは全く利用されません。 > MACアドレスとIPアドレスの両方が必要な理由を教えてください。 IP データグラムの最大長は 64K バイトですが、Ethernet フレームの 最大長は 1500 バイト程度です。64K バイトの IP データグラムを Ethernet 上で送信する場合、数十個の Ethernet フレームに分割 しなければいけません。 宛先 IP アドレスが書いてあるのは IP データグラムの先頭だけなので、 分割した途中の Ethernet フレームを見ても、宛先 IP アドレスは わかりません。つまり Ethernet というレイヤでは、通信先を特定 のに IP アドレスが使えないわけです。ここに MAC アドレスの 存在理由があります。 より根本的には、Ethernet というのは IP に特化したものではないから、 というのが説明になるでしょう。例えば ADSL で使われている PPPoE (PPP over Ethernet) がその一例です。 # http://www.rtpro.yamaha.co.jp/RT/docs/pppoe/ |
|
>>2018 68user >64K バイトの IP データグラムを >Ethernet 上で送信する場合、数十個の Ethernet フレームに分割 >しなければいけません。 結局は、分割したEthernetフレームの1個1個にMACアドレスがたされるということですか。もしかして、そのEthernetフレームにIPアドレスを1個1個つけてもいいけど、IPアドレスの大きさが保証されてないから(IPv6に変わったり)、Ethernetフレームのアドレス用の領域分(フレーム構成)が、IPアドレスの大きさが変わった場合に影響受けるのは、階層的?にまずいということですか。 だから、IP(プロトコル)とは別に、LAN上では、独自のプロトコルでフレーム構成を決めて、MACアドレスで配信してるということですか。 >Ethernet カード (=ネットワークカード=NIC) を使っていますか? 自分の環境って関係ないんじゃないですか。だって相手のMACアドレスが知りたいわけだから。自分は、Laneed LD-10/100AWLとかいうカードで、ハブにつないで、LANに接続してます。 あと、MACアドレスを問い合わせない通信ってあるんですか。 IPデータグラムって、自分のマシンから出て行くときに絶対Ethernetフレームに分解されて出て行くんですか。 ネットワークって難しいですね。是非、勉強方法など教えてください。 |
|
>>2019 aiko > 結局は、分割したEthernetフレームの1個1個にMACアドレスが > たされるということですか。 そうです。IP データグラムのヘッダに送信先 IP アドレスと 送信元 IP アドレスがあるように、Ethernet フレームのヘッダにも 送信先 Mac アドレスと送信元 Mac アドレスが付いています。 > IPアドレスの大きさが保証されてないから (IPv6に変わったり)、 > Ethernetフレームのアドレス用の領域分(フレーム構成)が、 > IPアドレスの大きさが変わった場合に影響受けるのは、 > 階層的?にまずいということですか。 まぁそうですね。もし Ethernet が IPv4 べったりな規格だったら IPv6 は実現しなかったでしょう。各レイヤ間ができるだけ依存 しないように考えた結果、柔軟性が生まれたのです。ちなみに Ethernet の上に載せられるプロトコルには、IP の他に Xerox XNS や Novell IPX などもあります。 > 自分の環境って関係ないんじゃないですか。だって相手の MAC > アドレスが知りたいわけだから。 Ethernet を使っていないなら Mac アドレスは全く使いません。 arp -a でテーブルが空だった理由はわかりません。時間が 経過したためキャッシュを破棄したのかもしれないし、そうで ないかもしれない。 > あと、MACアドレスを問い合わせない通信ってあるんですか。 IP データグラムを送るという前提なら、必ず Mac アドレスを 知らなくてはいけないでしょう。 # 強いて言えば、ARP プロトコルは Mac アドレスを問い # 合わせるためのプロトコルだから、ARP を投げる前に # Mac アドレスを問い合わせることはありませんね。 > IPデータグラムって、自分のマシンから出て行くときに絶対 > Ethernetフレームに分解されて出て行くんですか。 Ethernet を利用していないなら、それは間違いです。もし Ethernet を利用しているならば、IP データグラムは必ず Ethernet フレームに載せられて流れていきますが、サイズが 小さければ分割はされません。 > 是非、勉強方法など教えてください。 概要を知るにはこれ http://www.ohmsha.co.jp/data/books/contents/4-274-06257-0.htm プログラミングするならこれ http://www.mmjp.or.jp/pearsoned/washo/network/wa_net28-j.html がお勧めではないかと思います。 |
|
>>2019 aiko あと、Ethernet と IP では、役割が違います。Ethernet はセグメント内 (ルータから先は別セグメント) の通信を保証するレイヤ (データリンク層)。 ルータから先は Ethernet の管轄外です。 で、IP はエンドツーエンドの通信を保証するレイヤ (ネットワーク層)。 ついでに言うと、TCP は IP のような細切れなパケットでなく、連続した ストリームを送ることを保証するレイヤ (トランスポート層)。 バカ HUB やツイストペアケーブルは、端点 (って言うのかな?) から 端点へ正常な信号を送ることを保証するレイヤ (物理層)。 # ここで書いた各層の役割は、僕が勝手に考えたもので、OSI 参照 # モデルの定義とは違います。 # http://home7.highway.ne.jp/dayan/tips/unix/tcp.html |
|
>>2016 68user 何の事は無い、あっさり解決しました。()の動作はperlと同じなのですね。 (というよりperlがシェルに似せたのだと思うけど) ps での表示で親子関係表示されました。 今後詰まった時、とりあえずperlでの記述を真似てみます(笑) 同時に終了の件は、考えてみればそこまでやるなら各種デーモン類の 起動法を真似ればいいかも、なのでとりあえずコレで良しとします。 ともかく、ありがとうございました。 ちなみにこのスクリプトは、自宅で公開しているサーバーでのログ監視 に利用しています。 ついでに、といってはなんですが、このマシンはサーバーとして利用して いるので、通常はリモートログインでコンソールからの操作は滅多に行わ ないため、アイドルが続くとディスプレーが非表示モード(でいいのかな) になります。 BIOS関係かなとも思いますが、Windowsも同居しているのでできればOS側で 対処できないかと考えています。 変更箇所もしくはポインターを教えてもらえれば幸いです。 |
|
こちらでは、お久しぶりです。 >>2016 68user 68user さんは、お気づきだろうと思うので、蛇足ですが。 私の方では core を吐きました。多分、path とか URL の長さチェックを していないからだと思います。 /* genx.c */ #include <stdio.h> int main(int argc, char *argv[]) { int i; for (i = 0; i < 1000; i++) putchar('x'); return 0; } こんなプログラムを作って、 % ./http-client-2 http://www.yahoo.co.jp/`./genx`.html としたら signal 10 を受けて core を吐きました。 # 個人的にはこの程度のサンプルで、長さチェックまでやるのは # 本質的な部分が見えなくなるので、今のままで良いかと思います。 # せいぜい、注意をひとこと書けば良いだけだと思います。 >>2015 nana 上記の通りなので、こういうバグ報告の際には引数に与えた文字列とか 環境変数を参照するものは環境変数とかを明示しないと意味がないです。 上記のは core を吐かせるための一例なので、原因は他にもあるかも 知れませんが。 |
|
>>2022 スナフキン > 何の事は無い、あっさり解決しました。 そうですか、() で囲めば解決しましたか。プロセスグループとか tty とか、さっぱりわかってないので適当に言ってみたのですが。 > ()の動作はperlと同じなのですね。 open(IN, "(cd dir; foo | bar) |") みたいなのを言ってますか? perl では、open の引数の先頭か末尾に `|' を付けると、構文 解析なども行わず 丸ごと /bin/sh に投げます。なので、perl の 作りが sh に似ているのではなく、単に sh を利用しているだけです。 > アイドルが続くとディスプレーが非表示モード(でいいのかな) > になります。 XFree86 ならば xset -dpms とするか、/etc/XF86Config で BlankTime, StandbyTime, SuspendTime, OffTime などを設定 します。詳しくは XF86Config(5) をどうぞ。 ただのコンソールならば FreeBSD 4.3-RELEASE なら /etc/rc.conf に saver="NO" です。それ以外の環境はわかりません。 >>750 を見ると Vine Linux をお使いのようですが、毎回必ず 環境を書いた方がよいでしょう。 |
|
>>2023 rosegarden > 68user さんは、お気づきだろうと思うので、蛇足ですが。 > 私の方では core を吐きました。多分、path とか URL の > 長さチェックをしていないからだと思います。 全然お気づきではなかったです。お恥ずかしい。 「C で書くならここまでちゃんとやらないと」と言えるような サンプルにしたいので、直しておきます。 |
|
PerlのCGIで記入した文章において, 改行をスペースに変換する方法を以前お尋ねしました。 その後,いろいろ試してみたのですが, 日本語コード変換直後に $val =~ s/\r\n|\r|\n/ /g; を記入することで上手くいきました。 どうもありがとうございました。 |
|
>>2024 68user プロセスグループというのですか、時間があれば調べてみます。 しかし、ホントに良くできていますよね、M$とは大違いだ(笑) >open(IN, "(cd dir; foo | bar) |") みたいなのを言ってますか? いえいえ、全体的にです。 自分は、今の所bashしか使っていませんが、スクリプト言語全体に 同じような構文が多いように感じます。(意識的なんでしょうか?) >環境を書いた方がよいでしょう。 そうですね、これからそう心がけます。 VineLinuxには /etc/rc.conf は無く、/etc/rc.d/ 関係にもそれらしい 記述は見つけられませんでした。いろいろ調べてみます。 ありがとうございました。 |
|
>>2022 スナフキン > 何の事は無い、あっさり解決しました。 すいません、上記の発言は正確では有りませんでした。 正確には、ps での表示にはちゃんと親子関係が表示されましたが、 コマンド jobs には表示されませんでした。 ん〜、親PIDが判る(killできる)のでこれでも可です。 >プロセスグループ コレ、特有の呼び名かと思いましたが、単純に自分の言っていた親子 関係にあるプロセス群のことを指していたのですね(^^; |
|
すみません。ネット初心者です。 くだらないことをおききしたいのですが、、、。 いろいろなホームページをみていたら、かってに 何かわからないのですが、「無料のダウンロードを行いました」 といって、なんだか何もしていないにもかかわらず、 なにかが、ダウンロードされてしまったみたいです。 これによって、個人情報が流れてしまったり、することはあるのでしょうか?なんだか不安です。 アドバイスお願いします。 いろいろ不安になります。 |
|
koni と申します。 (環境: ActivePerl v5.6.0 + WinNT) ワンタイムパスワードについて質問があります。 MD5 を使い認証をしてくるサーバーに Net::FTP を使用して自動 FTP をし たいのですが、うまく行きません。 詳細は以下です。 ※この件に明るくないため、言葉の使用法が誤っているかも知れません。 == まずは、 # start ----- use Net::FTP; $ftp = Net::FTP->new("ftp-server-name.co.jp", Debug => 1); $ftp->login('user', 'pass'); $ftp->quit; # end ------- などとしたところ、PASS を送信したところで、はじかれてしまいました。 ちなみにこれを ffftp などの MD5 対応のクライアントを使うと、 FFFTP Ver.1.80 Copyright(C) 1997-2001 Sota. ---------------------------- ホスト ftp-server-name.co.jp を探しています. ホスト ftp-server-name.co.jp (***.***.***.*** (21)) に接続しています. 接続しました. :(省略) >USER user 331 * * * MD5を使用します. >PASS [xxxxxx] 230 User user logged in. >TYPE A 200 Type set to A. ダウンロードのためにホスト ***.***.***.*** (*****) に接続しています. 接続しました. >NLST -alL 150 Opening ASCII mode data connection for /bin/ls. 226 Transfer complete. ファイル一覧の取得は正常終了しました. (124 Bytes) (* の部分は伏せてあります。) などとなり、接続できました。 個人的には、Net::FTP にこの MD5 を実装するには、上記の USER user をし たあと、331 の後の値を、Digest::MD5 のメソッドにかませて、戻り値をパ スワードとして送信すれば OK なのか、と考え、やってみたのですがダメそ うでした。 もしご存知のかたがいらっしゃいましたら、ご教授願います。 |
|
>>2030 koni > ワンタイムパスワードについて質問があります。 > MD5 を使い認証をしてくるサーバーに Net::FTP を使用して自動 FTP をし > たいのですが、うまく行きません。 一口にワンタイムパスワードといってもいくつかあるので、 これだけでは分かりません。 しかし、md5 が云々と言うことから、opie じゃないかと思いますが。 私自身 opie も S/key も使ったことがないので、分かりませんが、 > 個人的には、Net::FTP にこの MD5 を実装するには、上記の USER user をし > たあと、331 の後の値を、Digest::MD5 のメソッドにかませて、戻り値をパ > スワードとして送信すれば OK なのか、と考え、やってみたのですがダメそ > うでした。 多分 password を md5 でハッシュしても駄目でしょう。 ワンタイムパスワードの意味がないです。 CPAN に http://search.cpan.org/search?mode=module&query=opie という module があるのでトライしてはどうでしょうか? とにかく、認証方法がワンタイムパスワードとしか分からないので、 これでうまくいくかどうかは保証できません。 上記サイトの module search で S/key とか MD5 とか MD4 で それらしきものを検索してはどうですか? でも良いことを聞きました。ありがとうございました。 # web サーバで ftp 使わせているのですが、 # パスワードの保護がどうにかならないかと # 頭を抱えていたところです。 |
|
はじめまして、C言語でFTPクライントを作ろうとここのページを参照させて いただいたのですが、以下の部分のソースがよくわかりません。 87: while (1){ 88: char c; 89: c = getopt(argc, argv, "d"); 90: if ( c == -1 ) break; 91: switch (c){ 92: case 'd': 93: debug_flg = 1; 94: argc--; 95: argv++; 96: break; 97: default: 98: break; 99: } 100: } getoptは調べたところint型だと思うのですが、なぜchar型の変数に値を 代入しているのでしょうか? また、いろいろ調べてみたんですが、このgetoptで何をしているのかもよく わかりませんでした。よろしければこの部分についての解説もお願いいたし ます。m(_ _)m |
|
>>2030 koni そういう FTP サーバを使ったことがないので試すこともできないのですが、 これって APOP みたいな感じなんですかね? どこかで公開されている FTP サーバはないものでしょうか。 >>2032 snow > getoptは調べたところint型だと思うのですが、なぜchar型の変数に > 値を代入しているのでしょうか? これは僕のミスで、正しくは int です。直しておきます。 > このgetoptで何をしているのかもよくわかりませんでした。 引数解析です。 for ( i=1 ; i<argc ; i++ ){ if ( argv[i][0] == '-' ){ switch (argv[i][1]){ case 'd': debug_flg = 1; break; } } } みたいなもんですが、自分で書くのもめんどくさいのでライブラリを 使いました。 詳しくはここらへんをどうぞ。 http://www.jp.FreeBSD.org/cgi/mroff.cgi?subdir=man&man=getopt&dir=jpman-3.1.0%2Fman§=3 |
|
>>2033 otp-md5 google 君に教えてもらいました。なるほど、こんな感じの流れになるのか。 http://www.jaist.ac.jp/~uchida-t/otp/ |
|
>>2033 68user ご回答ありがとうございます。 ですが、このままint型に変えただけだと、エラーがなければCに入るのは 通常「100」ですよね?ということは case 100: とすれば良いのですよね? そこを修正して、先ほどのプログラムを例に従って実行してみたのですが、 どうもどこかでループにはまっているようで、ファイルの取得ができません。 う〜ん・・・(汗 |
|
>68userさん http://x68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/view-segabbs.cgi.diff?r1=1.3&r2=1.1&f=h ロボット検からまだ引っかかるので上記ページを確認したのですが <head>の部分が</head>になっているのがちょっと変かなっと思ったのですが…どうなんでしょうか。 |
|
>>2035 snow > エラーがなければCに入るのは通常「100」ですよね? 'd' の character code は 100 なので、100 でも 'd' でも動作は 同じですけど、可読性やメンテナンス性を考えて 'd' と書きましょう。 > どうもどこかでループにはまっているようで、ファイルの取得ができません。 できる限り余分な部分を削ったソースを見せて下さい。 >>2036 ED > <head>の部分が</head>になっているのがちょっと変かな プログラムのソースでなく実物を見て下さい。 http://X68000.startshop.co.jp/~68user/segabbs/bbs3/vol5/5_97.html > ロボット検からまだ引っかかるので META タグを追加してからまだ15日しか経過していません。例えば google なら、クロール頻度は最低1ヵ月に1回だそうです。 http://www.google.com/intl/ja/faq.html |
|
>>2037 68user >> エラーがなければCに入るのは通常「100」ですよね? >'d' の character code は 100 なので、100 でも 'd' でも動作は >同じですけど、可読性やメンテナンス性を考えて 'd' と書きましょう。 そうなんですか。すいません、'd'で大丈夫だとは知りませんでした。 >> どうもどこかでループにはまっているようで、ファイルの取得ができま >>せん。 >できる限り余分な部分を削ったソースを見せて下さい。 いえ、前回のcの型の変更以外の変更は行っていません。 それでできないのですが・・・ |
|
>68useさん すいません。プログラムのほうしか見てませんでした。 |
|
お礼です。 「ネットワークプログラミングの基礎知識」を参考にさせて頂きました。 とても分かりやすく私にとって大変役に立ちました。 自分はDOSやWindowsのアプリ、ドライバを作ることが主な仕事ですが この度、サーバ側のプログラムを作ることになり、こちらのHPを参考に させていただきました。 特に「ネットワークプログラミングの基礎知識」と「簡易版コマンド マニュアル」内のcrontabを読ませていただき、大いに参考になりました。 普段はC(ドライバ作成用)とDelphi(クライアント側アプリ作成用) を使っていますが、こちらでPerlの使い方までも教えてもらいました。 ただただお礼を言うばかりです。 素晴らしいHPを提供してくださって、こころから感謝申し上げます。 有り難うございました。 |
|
>>2038 snow > いえ、前回のcの型の変更以外の変更は行っていません。 > それでできないのですが・・・ 動かないというのは、 http://X68000.startshop.co.jp/~68user/net/c-ftp-1.html の ftp-client.c ですか? コマンドラインからは何とタイプしましたか? % ./ftp-client -d anonymous your@mail.address ftp.jp.FreeBSD.org /pub/FreeBSD/README.TXT のように -d を付けるとデバッグ情報が表示されますが、どこで 止まっていますか? もし NAT 環境で試しておられるなら、 --> PORT 192,168,0,7,9,58 <-- 500 Illegal PORT range rejected. などとプライベート IP アドレスを送ってしまい、エラーと なります。しかしこのプログラムではエラーチェックを行って いないので、構わず RETR を送ってしまいうためファイルを 取得できません。この点は説明を付けておくべきでしたね。 getopt の件は修正しておきました。ご指摘ありがとうございました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/sample/ftp-client.c >>2039 ED というわけで、しばらくお待ち下さい。 >>2040 Moo どもども。わかりにくい点がありましたら ご指摘お願いします。 |
|
>>2041 68user > この点は説明を付けておくべきでしたね。 NAT 環境では動かない旨、追加しました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/c-ftp-1.html.diff?r1=1.1&r2=1.2&f=h |
|
>>1691 紅の猫 >>2023 rosegarden http-client, http-client-2 のバッファオーバーランの修正と、 bzero,bcopy の説明の追加を行いました。ご指摘ありがとうございました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/sample/http-client.c http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/org/c-http-1.html |
|
このようなことでもアドバイスもらえるのかな? えっと、CGIでHTMLの一部(5行目から7行目)までとかをログとして取得し、その部分を出力することはできるんでしょうか? |
|
>>2044 幸江 質問の意味がわからないです。 > HTMLの一部(5行目から7行目)までとかを この HTML はどこにあるんですか? どこかから取得するんですか? > ログとして取得し、その部分を出力 「ログとして取得」とはどういう意味でしょうか? HTML から 特定の範囲を切り出し、ブラウザ上に出力し、さらにそれを ログに記録しておくのですか? |
|
>>2041 68user 以下のようにコマンドを打ったところ、 ./ftp-client -d userid passwd hogehoge.com index.html 以下のようなデバッグ情報が出力されました。(一部文字化けしてますが) <-- 220-************************************************ <-- 220- 洩T[o[韃ヲ虧 誉芒鋤天B <-- 220-OS ・indows98SE 費 怒莉(19)髟・・ 房-- 220 ************************************************ --> USER userid <-- 331 Give me your password --> PASS passwd <-- 530 Not authorized. --> PORT 172,18,168,100,4,19 <-- 5--> RETR index.html で止まってしまいました。 NAT環境では使用していないので、ご指摘いただいた問題はないと思います。 |
|
あと、今確認したところUSER,PASS,PORTというファイルが残ってました。 下の書き込みで文字化け対象を記入してしまって、申し訳ありません。 |
|
>>2046 snow > --> PASS passwd > <-- 530 Not authorized. ということは、ユーザ名かパスワードが間違ってませんか? >>2047 snow > 今確認したところUSER,PASS,PORTというファイルが残ってました。 「--> PASS」というのを誤って copy & paste してしまったんじゃ ないでしょうか。このプログラムにはファイルを生成するコードは 入っていないです。 |
|
>質問の意味がわからないです ごめんなさい。 >> HTMLの一部(5行目から7行目)までとかを >この HTML はどこにあるんですか? どこかから取得するんですか? HTMLはYahoo!のトップなどです。 >> ログとして取得し、その部分を出力 >「ログとして取得」とはどういう意味でしょうか? HTML から >特定の範囲を切り出し、ブラウザ上に出力し、さらにそれを >ログに記録しておくのですか? そのようにしたいのですが可能なのでしょうか? |
|
>>2048 68user 再度実行したところ、USER,PASS,PORTは出てきませんでしたので、 私の間違いだったようです。すいません。 >> --> PASS passwd >> <-- 530 Not authorized. >ということは、ユーザ名かパスワードが間違ってませんか? 間違ってないんですが・・・(汗 普通にftpコマンドで繋げるとちゃんとつながりますし。 なぜでしょう。。。 下では書きませんでしたが、パスワードをacerolaとしているのですが、 どうもパスワードでNGになっているようです。 なぜだかわかりますでしょうか? |
|
すいません、追記です。 どうしてパスワードでNGになったかわかったかと言うと、 サーバー側のログを見て、パスワードでNGになっていることを確認 しております。 |
|
>>2049 幸江 > HTMLはYahoo!のトップなどです。 可能です。HTTP をしゃべりたいなら http://X68000.startshop.co.jp/~68user/net/ を参考に自分でダウンローダを作るか、wget、fetch、lynx などの ダウンローダを使うとよいでしょう。 例として Yahoo! を出しているのならよいのですが、もし他人の ページの一部を持ってこようとしておられるなら、相手の許可を 得てからにしましょう。 >>2050 snow > 普通にftpコマンドで繋げるとちゃんとつながりますし。 なるほど。 o ftp コマンドではログインできる o -d オプションによるデバッグ表示を見ても、正しいパスワードを 送信しているように見える o パスワードには * や ? などの文字は含まれていない (シェルがワイルドカードを解釈しているわけではない) ということですね。謎です。 ftp コマンドで debug モードを ON にしてみると何かわかりませんか? % ftp ftp> debug Debugging on (debug=1). ftp> open hostname Connected to hostname 220 hostname FTP server (Version 6.00LS) ready. Name (hostname:username): username ---> USER username 331 Password required for username. Password: ---> PASS password などと表示されると思います (ftp クライアントによっては、 PASS **** などと何を送っているか見せてくれないかも しれませんが)。 また、認証までなら telnet でもできますので、試してみて下さい。 % telnet hostname 21 Connected to hostname. Escape character is '^]'. 220 hostname FTP server (Version 6.00LS) ready. USER username 331 Password required for username. PASS password |
|
お世話になっています。本当、UNIXの部屋を良く、使っています。 ところで、コマンドを自分のUNIX環境で有効にするには、どうしたら いいですか?使えないコマンドがたくさんあるのですが・・・ぜひ、 教えて下さい。先輩に聞いたら、いろいろと設定しなければならない とかで・・・詳しくは、教えて貰えませんでした。どうぞ、教えて 下さい。 |
|
>>2053 ゆうすけ 回答を出しやすくするために、 - OS は何か (uname -a の結果) - 例えばどんなコマンドが使えないか を挙げて下さい。 |
|
早速の返答ありがとうございます。uname -aの結果は、 SunOS std2ss42 5.6 Generic_105181-23 sun4u sparc SUNW,Ultra-5_10と出て来ました。 コマンドは、ジャンル別検索のゲーム(rainなど、他にもたくさん)です。 よろしく、お願いします。 |
|
フラットヘッド型スキャナについての機能と仕組みはなんですか?フラットヘッド型スキャナの製品の一例を紹介してください。また工夫されている点を解説してください。 |
|
ネットワークプログラミングの初心者です。今、仕事で始めたばかりなのですが、inet_atonを使う場合のライブラリは、何を指定すればいいのでしょうか?-lnsl -lsocketではダメなようで。。。教えていただけると、大変たすかります。よろしくお願いします。 |
|
>>2057 たかし > inet_atonを使う場合のライブラリは、何を指定すればいいのでしょうか? > -lnsl -lsocketではダメなようで。。。 こういう場合には OS とそのバージョンを書かないと無意味です。 inet_aton はない場合もあるので、inet_addr でも使って下さい。 例えば、Solaris 2.5.1 には inet_aton はありませんでした。 (でも、inet_ntoa はあるけど…。) 詳しいことは man inet_addr してください。 #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main(int argc, char *argv[]) { printf("%x\n", inet_addr("192.168.0.1")); return 0; } |
|
>>2052 68user 回答遅れてすいません。 >ftp コマンドで debug モードを ON にしてみると何かわかりませんか? passwdの部分がXXXXになってしまい、よくわかりません。 それに、ftpコマンドは通常どおり通るので、プログラムでどこが正常で ないのかはちょっとわかりません。 再度プログラムをダウンロードしてトライしてみます。 |
|
>>2055 ゆうすけ > uname -aの結果は、SunOS std2ss42 5.6 Solaris2.6 ですね。「UNIX の部屋」は基本的に FreeBSD に ついて書いてますので、Solaris にないコマンドはいっぱいあります。 基本的にインストールしたいものがあれば、ソースを持ってきて 自分でコンパイルします。ソースのありかは http://ftpsearch.lycos.com/?form=medium で調べるとよいでしょう。例えば foo-1.1.tar.gz を取得したら % gzip -dc foo-1.1.tar.gz | tar zxvf - で展開し、 % cd foo-1.1 % ./configure % make % make install という流れになります (これほど簡単にはいかない場合がほとんどですが)。 また、sunsite というコンパイル済みのものを配布している ところがありますが、あまり数は多くないです。 http://sunsite.sut.ac.jp/sun/solaris-binaries/sparc/ >>2058 rosegarden > Solaris 2.5.1 には inet_aton はありませんでした。 Solaris2.6 にも Solaris7 にも inet_aton はありませんでした。 >>2010 もっち https でのアクセスは実現できましたか? 結果報告をお待ちして おります。 |
|
いつもお世話になっております。 今度はSMTPについての質問なのですが…… SMTPサーバに接続した後最初にクライアント側で行うことは、HELO(またはEHLO) を送ることですよね。でも、なぜこういうことをするようRFCで定められている のでしょうか?これがなければ生じる不具合はどういったものが考えられるので しょうか?「SMTP EHLO 解説」をキーワードにしてGoogleで検索しましたが、 決定的なものが見つかりませんでした…。他に「オライリー・ジャパン」から 出版されている「Sendmail システム管理」なる本も読みましたが、なんかこの 部分だけ意図的に説明を避けているみたいで… (^^;; 何とぞよろしくお願いします。 |
|
>>2061 skel.103M とりあえずこちらを。 http://djbdns.jp.qmail.org/djb/smtp.html 知りませんでしたが、envelope がクリアされるらしいですね。 |
|
>>2061 skel.103M > SMTPサーバに接続した後最初にクライアント側で行うことは、 > HELO(またはEHLO)を送ることですよね。 とは限りません。うちなんかだと次のようしても メールが送れるようになっています。 % telnet mail 25 Trying xxx.xxx.xxx.xxx... Connected to mail.hogehoge.co.jp. Escape character is '^]'. 220 mail.hogehoge.co.jp ESMTP Postfix MAIL from:<rosegarden@hogehoge.co.jp> 250 Ok RCPT TO:<rosegarden@isp.net.ne.jp> 250 Ok DATA 354 End data with <CR><LF>.<CR><LF> This is a test. . 250 Ok: queued as 9CEF017A4A quit 221 Bye Connection closed by foreign host. > でも、なぜこういうことをするようRFCで定められている > のでしょうか? RFC 821 や RFC 2821 をざっと見た限りだと MUST とか SHOULD とかいう表現はありませんね。 それから、sendmail の operation guide をみると PrivacyOptions の項に public Allow open access needmailhelo Insist on HELO or EHLO command before MAIL needexpnhelo Insist on HELO or EHLO command before EXPN noexpn Disallow EXPN entirely, implies noverb. needvrfyhelo Insist on HELO or EHLO command before VRFY とあるので、このことからも、HELO や EHLO をどうするかには 任意性があるように思えます。 Postfix でも main.cf.default をみると smtpd_helo_required = no なんていう設定項目があります。 ということは、設定の際に任意性があるわけです。 おそらく、デフォルトでインストールすれば、HELO なしで 通る場合が多いでしょう。 |
|
>>2062 68user > とりあえずこちらを。 > http://djbdns.jp.qmail.org/djb/smtp.html > 知りませんでしたが、envelope がクリアされるらしいですね。 失礼しました。蛇足の書き込み申し訳ありません。 |
|
「ネットワークプログラミングの基礎知識」 http://X68000.startshop.co.jp/~68user/net/ に「SSL でアクセスしてみよう」 http://X68000.startshop.co.jp/~68user/net/ssl.html を追加しました。 サンプルソースがほとんど http://stingray.sfc.keio.ac.jp/security/ssl/ssl.html のパクリというのが情けない…。 |
|
ときに、UNIX+Java+Java servlet+JDBC+Postgres+ XML+XSLT な解説って需要ありますか? 書きたくはあるけれど、普通の ISP では Java servlet なんて 使えないだろうなぁ…。 |
|
どうも、skel.103Mです。 素早いフォローありがとうございます。>68user様・rosegarden様 >>2063 rosegarden > > でも、なぜこういうことをするようRFCで定められている > > のでしょうか? > > RFC 821 や RFC 2821 をざっと見た限りだと MUST とか SHOULD > とかいう表現はありませんね。 RFC2821には MUST や SHOULD なる表現があります。RFC2821の 4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)の第2段落にある以下の記述が これに該当すると思います: > A client SMTP SHOULD start an SMTP session by issuing the EHLO > command. & > In any event, a > client MUST issue HELO or EHLO before starting a mail transaction. RFC2821はRFC821を破棄したわけですから、クライアントによるHELO(また はEHLO)コマンドの発行が新しく*必須*となったと考えてよいと思われ ます。その理由っていったい何なんでしょう??私にはさっぱり想像 できないんですけど……。そこで、 >>2062 68user > とりあえずこちらを。 > http://djbdns.jp.qmail.org/djb/smtp.html を見てみましたが、これによると、「サーバ 実装者には HELOなしの世 界への将来の転換をサポートするように、 クライアント が HELOを省略 させるようにしむけることを推奨します。」という記述があるんです けど。…これってHELO(またはEHLO)の存在意義はないと言ってるよう にとれるんですけど……私だけ? (^^;;; > 知りませんでしたが、envelope がクリアされるらしいですね。 ご紹介いただいたWebページはqmailの実装をもとにして記述されたもの のようですが、RFC2821にはそれを示唆する部分は見つけられませんでし た。 う〜む…… |
|
>>2067 skel.103M > > > でも、なぜこういうことをするようRFCで定められている > > > のでしょうか? > > > > RFC 821 や RFC 2821 をざっと見た限りだと MUST とか SHOULD > > とかいう表現はありませんね。 > RFC2821には MUST や SHOULD なる表現があります。RFC2821の > 4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)の第2段落にある以> 下の記述が > これに該当すると思います: なるほど、おっしゃる通りです。 私は 3.2 を見ていました。 かえって勉強になりました。ありがとうございます。 |
|
はじめまして。 いつも勉強させていただいています。 質問なのですが、 UNIXでファイルのバージョンを管理するコマンド(TOOL!?)って デフォルトであるのでしょうか? ちなみに、 # $Id: echo-server-select.pl,v 1.1 2001/04/21 18:56:41 68user Exp $ ↑は、どのようにやっているのでしょうか? (※勝手に引用させてもらいすいません。) |
|
>>2067 skel.103M うーむ、私のレベルではちょっとついていけませんです。無念。 >>2069 @km > UNIXでファイルのバージョンを管理するコマンド(TOOL!?)って > デフォルトであるのでしょうか? UNIX と言ってもいろいろあります。何をお使いですか? # 上の「使い方」のところにも書いてあるように、OS やバージョンを # 必ず書いて下さい。 無料で利用できるものならば、RCS と CVS があります (SCCS はよく知らない のでパス。今でも現役なのかしら)。FreeBSD, NetBSD, OpenBSD なら両方デフォ ルトで入っています。Solaris なら両方ともデフォルトでは用意されていませ ん (当然ですがインストールすれば使えます)。Linux はわかりません。 両者の特徴はこのページをどうぞ。 http://www2.noritz.co.jp/anchor/ashp/peggy/cvs/cvs_rcs.html このサイトのコンテンツは CVS で管理しています。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/ http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/wwwboard.cgi http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/cgi-bin/wwwboard.cgi.diff?r1=1.1&r2=1.2&f=h のように、ファイルの修正履歴が残ること、変更点を容易に把握できること、 ネットワーク経由でアクセスできることが利点です。 > $Id: echo-server-select.pl,v 1.1 2001/04/21 18:56:41 68user Exp $ > ↑は、どのようにやっているのでしょうか? $Id:$ という文字列を埋め込んでおけば、勝手にバージョンや更新時刻や更新 者名が埋め込まれます。この機能は CVS, RCS 両方に備わっています。 CVS については書籍も4冊ほど出ていますし、解説しているサイトもたくさん ありますので、興味があれば google などで検索してみて下さい。 |
|
>>2070 68user > >>2067 skel.103M > うーむ、私のレベルではちょっとついていけませんです。無念。 68user様が >>2062 68user で紹介されていたサイトは http://www.google.com/search?as_q=SMTP&num=10&btnG=Google+%8C%9F%8D%F5&as_epq=&as_oq=HELO+EHLO&as_eq=&lr=lang_ja&as_occt=any&as_dt=i&as_sitesearch= などでヒットしたサイトのうち最初に出てきたものですよね。上記検索 結果の4つ目付近にある http://spica.u-aizu.ac.jp/study/material/2000-10-17/neo-study3.pdf の7ページ目には次のように書かれていました: 「sender-SMTPとreceiver-SMTPを識別するためのコマンド」 …これは正しいのでしょうか? これに関する質問は今回限りということで何とぞよろしくお願いします。 m(__)m |
|
どなたかご存じでしたら教えて下さい。 当方、Cygwin on Win95 な環境で Wanderlust on XEmacs として mail 環境を 構築しています。 今回、更に fetchmail & Maildrop を使用して、mail を local に取り込もうと しています。 Maildrop で local spool に取り込み、Wanderlust で読むとすれば、Maildir 形式になるかと思い、試行錯誤の上、何とか Maildir 形式で取り込めたのですが、 Wanderlust で読み込む段になって困ってしまいました。 Maildir 形式だと、new/ -> cur/ の mail 移動を行う際に、path にl `:' を 含めてしまうんですね。 Windwos では、path に `:' を含めることが出来ないため、ここから先に進む ことが出来ません。 どなたかこの様な状況を解決された方はいらっしゃいませんでしょうか。 |
|
はじめまして、いつも参考にさせてもらっております。 どなたかご存知でしたら教えてください。 指定ディレクトリ以下のファイルで、ディレクトリのみ表示する ことは可能ですか? ちなみにla -dでは出来ませんでした。 |
|
>>2073 harap find <DIR> -type d で可能だと思います。詳細は「man find」で。 |
|
>>2074 skel.103M ありがとうございました。 うまくできました。 |
|
たびたびすいません。 現在Cシェルにてプログラムを作成中なのですが echoで表示している文字列にカラー設定することは可能でしょうか? |
|
>>2071 skel.103M > 「sender-SMTPとreceiver-SMTPを識別するためのコマンド」 > …これは正しいのでしょうか? ん〜、HELO で envelope がクリアされるなら、中継サーバは HELO をしゃべっちゃいけないので、結果として識別できるの かなぁとは思うのですが…。どうなんでしょう。 >>2076 harap > echoで表示している文字列にカラー設定することは可能でしょうか? 端末に依存しますが、可能です。 perl -e 'print "\x1b[31m"' (赤) perl -e 'print "\x1b[32m"' (緑) perl -e 'print "\x1b[30m"' (黒) などなど。kterm や TeraTerm などならこれで OK でしょう。 echo ^[[32m でもいいです (^[ の部分は直接 ESC 文字を打ち込みます。tcsh 上なら C-v ESC、emacs 上なら C-q ESC)。 perl -e 'print "\x1b[31mhoge\x1b[32mfuga\x1b[30m"' などと続けて書いてもいいです。 # 他にコントロールコードを直接出力できるコマンドって # ありましたっけ? (stty とか tset の方面で) google で「エスケープシーケンスード ESC 色」などで検索して みて下さい。 >>2072 Ten うーむ、Windows でメールを読まないので…。 |
|
>>2077 68user ありがとうございました。 お礼が遅くなってすいませんでした。 やってみます。 |
|
はじめまして。 最近UNIX-CでNetwork Programmingを始めた者です。よろしくお願いします。 こちらに掲載されているC言語のechoプログラム(echo-server-1.c)を そのまま書き写して実行したのですが、先頭の1文字しか返ってきません。 read_line()の戻り値が [0 or 1] なので、 94行目で、文字列が1文字だけになってしまいます。 read_line()の戻り値を [0 or 文字数] に修正すればよいと思います。 私の勘違いでしたらすみません(^^; |
|
>>2079 るは ありがとうございます。テスト不足で失礼しました。修正しておきます。 最初はちゃんと動いていた気がするんだけど、いつエンバグしたのかなぁ? |
|
いつもお世話になってるskel.103Mです。 >>1978 skel.103M >>1980 68user >>1981 skel.103M このことについて、news:fj.mailに記事が投稿されているのを(今さらなが ら)発見!: Message-ID: <tzzlmmezl9x.fsf@nightmare.hm.taito.co.jp> …投稿日は2001/06/27(水)となってますね。 |
|
はじめまして。 perlを勉強中の者です。 いきなりで恐縮ですが、質問です。 perlのIO::SOCKETモジュールを使ったhttpクライアントを作っているのですが 画像を読み込めないんです。ちなみに、htmlはうまくいっています。 今作っている物では、他サーバーからファイルを読みとり 自分のサーバーに保存という作業をやらせたいんです。 しかし、画像ファイルを読み込むと改行が不要な位置に 改行入ってしまいます。 画像も読み込めるようにするにはどう作りかえたら良いのでしょうか? ソース http://uchu.hypermart.net/image.txt |
|
>>2082 猫じゃらし ちゃんと環境を書きましょう。Windows ですか? 1. ヘッダもそのまま 2.gif に出力してしまう。 2. 改行が入ってしまうなら、Windows でテキストモードになっているのかも。 ということで、 # ヘッダまでを読み飛ばす while (<$remote>){ last if ( $_ eq "\n" || $_ eq "\r\n" ); } # ここからが画像データ while (<$remote>){ $outdata .= $_; } open(OUT, "> 2.gif"); binmode(OUT); print OUT "$outdata"; close(OUT); でどうでしょう。 foreach を使わず while を使うのは、foreach の () 内はリストを要求する ので、<$remote> はリストコンテキストで評価され、 foreach ("1行目のデータ", "2行目のデータ", ..., "最終行のデータ"){ と展開されてしまうからです。よって、 foreach (<$remote>){ last if ( $_ eq "\n" || $_ eq "\r\n" ); } の時点でファイルハンドル <$remote> から全てのデータを読み 切ってしまうので、last で抜けた後には <$remote> という ファイルハンドルにはデータが残っていません。 foreach (scalar(<$remote>)){ で強制的にスカラーコンテキストにするならいいんですが、 この場合は素直に while を使った方がよいでしょう。 |
|
>>68user 環境を書き忘れてすいません、マナー違反でしたね、、、 ちなみに、環境はWinMEでActivePerlを動かしている状態です。 さて、68userさんのレスにあったものをペーストして ソースは下のようになりました。 http://uchu.hypermart.net/image2.txt これで無事動かすことができました。ありがとうございます。 このHPは、これからも勉強参考にさせてもらいますね。 ではでは、、 |
|
はじめまして超初心者の者です。 質問なのですけど会社で渡されたCシェルのプログラムに mailx -s というコマンドがありまして調べても見つかりません。 UNIXのことなどさっぱり分からないので困っています。 知っている人がいたら教えてください。 お願いします。m(__)m |
|
>>2085 kazu ちゃんと OS 名やバージョンなどの情報を書きましょう。 > mailx -s mailx は SystemV 系 UNIX のコマンドです。Linux にも あるようですが、*BSD にはないはずです (FreeBSD なら ports で mail/mailx がありますが)。 まぁメールの送信だけなら mail も mailx も同じようなもの なので、そのまま mail に読み変えればよいでしょう。 |
|
はじめまして。早速なんですが、UNIXの運用について質問があります。ログインユーザーごとに使用したい文字コードが違うんですが、どのように設定したらよいのでしょうか?教えてください。 |
|
>>2087 sato.k ログインユーザごとに ~/.cshrc や ~/.profile で setenv LANG ja_JP.eucJP とか LANG=ja_JP.eucJP; export LANG とか書くか、/etc/profile や /etc/csh.cshrc でユーザ名をみて 適切な locale を設定するのはどうでしょうか。 具体的な locale 名や、/etc/ の下のファイル名などは OS によって違いがあるので、お使いのシステムではどうなって いるか確認して下さい。 FreeBSD なら /etc/login.conf に各ロケール分のログイン クラスを作るのもいいかな。 |
|
>>2079 るは > こちらに掲載されているC言語のechoプログラム(echo-server-1.c)を > そのまま書き写して実行したのですが、先頭の1文字しか返ってきません。 遅くなりましたが、さきほど直しました。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/net/sample/echo-server-1.c ご指摘ありがとうございました。 |
|
UNIX の部屋をやっと CVS に突っ込みました。悲願達成。 http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/public_html/unix/ これで思う存分更新ができます。 - コンテンツをローカルでも修正し、web サーバでも修正して、 どっちが最新版かわからなくなる - 前回から更新した部分はどこだったろうか? と忘れてしまう という経験がある方は、CVS で管理してみてはどうでしょうか。 僕はもう CVS なしでは生きていけません。 なお、普通は http://X68000.startshop.co.jp/~68user/cgi-bin/cvsweb.cgi/ のように cvsweb でリポジトリ公開なんてことはしません (笑) 公開しなくても CVS で管理できます。 |
|
>> こちらに掲載されているC言語のechoプログラム(echo-server-1.c)を >> そのまま書き写して実行したのですが、先頭の1文字しか返ってきません。 >遅くなりましたが、さきほど直しました。 \nの所に\0を書き込んでる気がします。 |
|
#2091 >\nの所に\0を書き込んでる気がします。 よく見たら、そんなこと有りませんでした。 訂正します。 |
|
かなりどうでもいい話題なんですが、UNIX の部屋の検索で一件もヒットしな かったキーワードを調べてみました。対象は 2001 年。括弧内は検索回数。 なんとなく現在足りない情報がわかって興味深かったです。 今後の参考にさせていただきます。 Solaris or SystemV 系 … 特に管理系がいまいち弱くて申し訳ない。 useradd(541) sar(378) ufsdump(161) pkgadd(146) mailx(145) dbx(95) groupadd(88) usermod(74) ufsrestore(60) usradd(55) nawk(54) userdel(54) pkginfo(54) vfstab(50) sjtoeuc(40) こんなのふつー載ってるだろ系 … なるべく早く書きます ssh(242) expr(172) scp(149) a2ps(108) iconv(95) chroot(57) pushd(52) ulimit(49) slogin(39) rcs(38) bz2(36) Windows の用語をそのまま打ち込んだ系? rename(171) mv のところに「Win で言うところの rename」と書いておけばよい? tracert(36) traceroute のところに「Win で言うところの tracert」と書いておけばよい? tree(46) これは find かなぁ。 68user の弱い方面系 … 申し訳ない。満足な解説書けません。 lpr(328) arp(194) cpio(177) iostat(102) rsync(79) バックアップ(73) lpq(64) プリンタ(58) restore(56) mkfs(55) mknod(54) こんなの検索するんだ… sccs(53) プリント(50) lpstat(43) snmp(39) パーティション(39) これ何? 系 … 誰か教えて。 snoop(161) ipcs(112) fdisk(90) filec(66) ndd(43) showrev(52) ipconfig(53) ioscan(51) mpstat(44) substr(45) perl? 入力が不適切系 … 全角アルファベットはないのですよ。半角に自動置換しようかしら。 ls(196) ユーザー(166) ユーザならあるんですけど 解凍(150) 展開で統一してます。改善予定 ftp(127) cp(106) ln(90) ps(85) rm(54) リダイレクション(49) その後「リダイレクト」で検索してくれただろうか df(48) クーロン(43) これは改善予定 mv(40) csh(35) その他: select(91) bdf(88) atol(85) ファイル検索(70) logger(68) 需要あるのかなぁ。 pdf(63) ファイル名変更(54) flock(54) htpasswd(53) うーん samba(43) jar(42) なぜ jar が gateway(41) access(36) ちなみに検索にヒットしたキーワードのトップ20はこちら (リンクを たどったものは除く。訪問者が入力したキーワードのみ)。 tar(7512) grep(3832) find(3219) ftp(2502) ls(2490) vi(2370) cp(2215) ps(1799) rm(1773) chmod(1677) gzip(1528) cron(1511) ln(1368) mount(1352) crontab(1330) sed(1257) make(1188) awk(1150) mail(1034) date(1047) |
|
>>2093 68user 『誰か教えて』の意味勘違いしているかもしれませんが…。 > これ何? 系…誰か教えて。 > snoop(161) Solaris 標準コマンド tcpdump のような用途で使う Sniffer ですね。 > filec(66) > ndd(43) Solaris 標準コマンド。主に、TCP/IP 関係のデバイス 制御に使います。たとえば、TCP ヘッダのシーケンス番号 の生成法もこれで変えられたかとおもいます。 FreeBSD の sysctl に似た感じで使います(不正確ですが)。 > showrev(52) Solaris の標準コマンド。pkg 管理用です。 showrev -p なんてすると、どんなパッチが当たっているかが わかります。 > ipconfig(53) これは多分 win のコマンドじゃないかな? ifconfig に似た感じの情報を表示します。 このコマンドを ifconfig みたいにインタフェースの 変更用に使えないんでしょうか? 試したけど、うまくいかなかった。 > mpstat(44) これは Solaris で man mpstat したら出てきましたよ。 |
|
>>2094 rosegarden >> filec(66) おっと、これは消し忘れていました。これは無視してください。 |
|
いつもお世話になっているので、少しでも協力できれば… >>2093 68user > fdisk(90) これって、Linux系だけなのですか? パーティーションテーブルを操作するコマンドですが… >>2094 rosegarden > ipconfig(53) >変更用に使えないんでしょうか? 表示だけみたいですね。 「Win系はあくまでGUIなんでCUIインターフェースツールは、ホント におまけ」みたいなポリシーのようです。 てか、あまり役に立ってなさそう…とほほ ところで「UNIX の部屋」は、管理者向けの意味合いが大きいのでしょ うか?それとも一般向け?>68userさん |
|
>>2096 スナフキン > > fdisk(90) > これって、Linux系だけなのですか? > パーティーションテーブルを操作するコマンドですが… *BSD 系の OS ならあると思います。少なくとも、 FreeBSD/i386, OpenBSD/i386, NetBSD/i386 ならあります。 Solaris も x86 系のならあるかと思います。 今見たところ、SPARC 用の Solaris でも マニュアルはインストールされていますね。 > >>2094 rosegarden > > ipconfig(53) > >変更用に使えないんでしょうか? > 表示だけみたいですね。 そうですか、いや、自分のやり方が悪かったかと、 思っていたのですが、そういう仕様なんですね。 ありがとうございました。 >>2093 68user それから、いま man したら ipcs は Solaris にはあるようですね。 |
|
IPアドレスとホスト名の説明中にある文章に関して >しかしその逆の、FQDN はあるが IP アドレスはない、というマシンは >存在しません。 ネットワークに接続されている全てのマシンには IP >アドレスが付けられています。 FQDNはあってもIPアドレスがないマシンは存在します。UUCP接続の場合 にはネットワークに接続されていないのでIPアドレスを割当てる必要が ないからです。 |
|
>これ何? 系 … 誰か教えて。 > ioscan(51) HP-UXで使いますね。cd-romの装置番号を調べたり、周辺機器の SCSI IDを調べたりするときに使いました。 参考: http://www.calpoly.edu/cgi-bin/man-cgi?ioscan |
|
>>2094 rosegarden > 『誰か教えて』の意味勘違いしているかもしれませんが…。 いえ、そういう意味です。みなさまどうもありがとうございます。 >>2096 スナフキン > ところで「UNIX の部屋」は、管理者向けの意味合いが大きいのでしょ > うか?それとも一般向け? 両方です。大学などの UNIX ならともかく、PC-UNIX では利用者=管理者な場 合がほとんどでしょうから、両方の知識を身に付ける必要があると思います。 >>2098 whois > UUCP接続の場合にはネットワークに接続されていないのでIPアドレスを > 割当てる必要がないからです。 なるほど。しかし、 UUCP はメール・ニューズ限定のプロトコルである。UUCP の上には HTTP も POP も載せることができない。つまり、UUCP はトランス ポート層・ネットワーク層に相当し、TCP/IP とは並列関係にある。 http://X68000.startshop.co.jp/~68user/net/net-1.html は、TCP/IP の初歩を解説しているページなので、そこで UUCP に 言及することは混乱を招く。 と思うのですが、いかがでしょうか。UUCP は使ったことも設定したこともな いので、間違っていたら指摘お願いします。 |