|
はじめまして、こんばんは。 LINUX, Apache, PHP, MySQL、HTMLでのシステムを考えているのですが、 ちょっと行き詰まってしまって、、、よろしくお願いいたします。 ページがジャンプした瞬間に、あるフィールドをいきなり入力待ち状態にしたいのです。 通常はページに移動後マウスなどで入力したいフィールドを一度クリックする必要があります。 現在フィールドはフォーム<input>タグで作成しています。 カスタマーは(バーコードを使って>マウス1クリック無しで) いきなり入力したい!というのがご要望です。 関連のページのご紹介でも何でもかまいませんので、 是非、よろしくお願いいたしますm(_ _)m |
|
>>3697 うほほ たとえば http://www.google.co.jp/ がその技を使っています。 ソースを見ていただければわかりますが、 <body onload="document.hoge.fuga.focus()"> <form name=hoge> <input type=text name=fuga> </form> </body> とします。 |
|
>>3696 68user >なるほど、ありがとうございます。Debian の ping は、 > Do you want to ping broadcast? Then -b >というエラーは出さないようですね。 そーゆーことですか、了解です。ならredhat9では次の通りになりました。 % strings /bin/ping | grep Then Do you want to ping broadcast? Then -b % |
|
ファイルをダウンロードするスクリプトを作成していますが、 ファイルサイズが大きいとファイル内容は一部しかダウンロードできません。 sysreadの戻り値$Ret_Lenは、正しい値が返ってきます。 最後のprint文で、全てを出力していません。あるいは、$INBUFに全てが 格納されてないかです。 全ての内容をダウンロードするには、どうすべきなのでしょうか? $size = -s $dl_file; open(INF, $dl_file) or &CgiError( "Error: Unable to open file $dl_file: $!\n" ); binmode(INF); $Ret_Len = sysread(INF, $INBUF, $size); if (defined $Ret_Len) { #エラーではない if ($Ret_Len >0) { #読み取りの成功 ; } else { #EOF close(INF); } } elsif ($! == EAGAIN) { #ブロックエラー $Ret_Len = sysread(INF, $INBUF, $size); } else { die "sysread() error: $!"; } $NowMime = substr( $f_name, rindex($f_name, ".")+1, length($f_name) ); $NowMime =~ tr/a-z/A-Z/; $RetMime = ""; # 2001.12.19 added by ishikawa -> #$mimeMach = 'dummy'; # 2001.12.19 added end ishikawa <- if( $NowMime ne "" ){ if( open(CB, "./lib/mime.types") ){ @mimein = <CB>; close( CB ); foreach( @mimein ){ if(/^[^#\n\r]/){ s/[\t]+/\t/; ($MimeHead,$MimeBody) = split(/\t/); # 2001.12.19 added by ishikawa -> if( defined $MimeBody ){ # 2001.12.19 added end ishikawa <- foreach $mimeMach ( split( /\s/, $MimeBody ) ){ $mimeMach =~ s/\s//g; $mimeMach =~ tr/a-z/A-Z/; if( $mimeMach eq $NowMime ){ $RetMime = $MimeHead; last; } } # 2001.12.19 added by ishikawa -> } # 2001.12.19 added end ishikawa <- if( $RetMime ne "" ){ last; } } } } } if( $RetMime eq "" ){ print "Content-Type: application/octet-stream\n"; print "Content-Disposition: inline; filename=\"$f_name\"\n\n"; } else{ print "Content-Type: $RetMime\n"; print "Content-Disposition: inline; filename=\"$f_name\"\n\n"; } binmode(STDOUT); print $INBUF; |
|
>>3700 sagara - 「ファイルサイズが大きい」とは具体的に何バイトですか? - あるバイト数以上のファイルの場合、常にダウンロードできないのですか? - 大きいファイルを処理するのに何秒かかりますか? - length($INBUF) の値は? - $INBUF の内容をファイルに出力すると、正常に出力できますか? - 「sysreadの戻り値は正しい」というのは「正常にダウンロード できなかった場合でも、sysread の戻り値は正しい」ということ ですか? - sysread ではなく read を使うとどうなりますか? - OS 名・OS のバージョン・perl のバージョンは何ですか? あと、コメント部分や関係ない箇所は極力削ってから投稿しましょう。 仕事のソースであれば特に。 |
|
>68USER様 早々のお返事をありがとうございました。 やってみたら、ばっちりでした〜! 本当にありがとうございました♪ |
|
はじめまして。よろしくお願いします。 環境:NetBSD1.5.2、Apache2.0.49 以下に示す接続が、4日くらいたっても消えません。 これは、クライアントがhttpで何かをダウンロード中の状態の1つということでしょうか? ずっとこの状態のままなのはどういう原因が考えられますでしょうか? Apacheのログには、このクライアントからのアクセスログは存在しませんでした。 FIN_WAIT_2の状態が終了した後で書き込まれるのでしょうか? %netstat -an (一部抜粋) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 15964 210.*.*.*.80 133.*.*.*.15241 FIN_WAIT_1 tcp 0 16460 210.*.*.*.80 133.*.*.*.6322 FIN_WAIT_1 tcp 0 16500 210.*.*.*.80 133.*.*.*.19339 FIN_WAIT_1 |
|
>>3703 lock サーバ側から close すると (正確にはアクティブクローズ すると) FIN_WAIT_1 になります。普通はこの後にクライアント から ACK・FIN が帰ってきて FIN_WAIT_2 に遷移しますが、 この辺がうまくいっていないものだと思われます。 > ずっとこの状態のままなのはどういう原因が考えられますでしょうか? わかりません。普通は FIN_WAIT_1 のままにならないように タイマか何かがあると思いますが、FIN_WAIT_1 タイマって 存在するのかな? (FIN_WAIT_2 タイマはあるけど) > FIN_WAIT_2の状態が終了した後で書き込まれるのでしょうか? これまたわかりません。apache のソースを読みましたが、どこで ログを吐いてるのかすらわかりませんでした。 とまぁ何の役にも立たない回答になってしまいましたが、 数日様子を見てはいかがでしょうかね。 |
|
数日前、FreeBSD 5.2Rをインストールしたのですが、起動時(ログイン前)に Configuring syscons: keymap blanktime と表示され、長時間とまってしまって困っています。 その後ログインプロンプトが表示され、ログイン可能ですし、 その他の操作に問題も無い感じなのですが、毎度の事なので釈然としません。 解決方法は無いものでしょうか?それともこういうものなんのでしょうか? よろしくお願いいたします。 |
|
>>3705 hash > Configuring syscons: keymap blanktime の後の sendmail 起動時に固まっているものと思われます。 内容は若干グダグダですが、こちらをどうぞ。 http://home.jp.freebsd.org/cgi-bin/thread?mesid=%3c200308030422%2eAA02439%40nt%2em8%2edion%2ene%2ejp%3e てゆーかうちのマシンも sendmail 起動時に固まりますが、 めんどくさいので止まったら Ctrl-C を押してます。 |
|
>> 3706 早速のお返事ありがとうございます。 ご指摘頂いた通り、原因はメッセージの後のsendmailの起動でした。 > Configuring syscons: keymap blanktime のメッセージから検索しても、解決法が見つからないのはあたりまえでしたね。 ご紹介いただいたウェブサイトに目を通すのに時間がかってしまいましたが、 解決することができました。 私の場合はDNSサーバの指定部分で、ADSLモデムの提供しているDNSで解決しようとしていたのですが、 モデムのDNSサービスがIPv6に対応していない為、名前解決できずTime outを待っていたようです。 DNSサーバの指定をプロバイダーのアドレスにしたら解決しました。 起動する度に気になっていたので、すっきりしました。 どうも、ありがとうございます。 |
|
DESについて質問させて下さい。 OpensslコマンドでDESを使っているのですが、間違った鍵で復号しようとすると bad decryptというエラーがでます。パリティチェックはOKとします。 これはDESの仕様上、エラーが検出できるということなのでしょうか? DESというと単にビット単位の置換だと思っているので、エラーが検出できるのが ちょっと不思議です。 TripleDESの中ででも、いきなり関係無い鍵で復号したりしてますから、さらに 不思議です。 なにか根本的に理解が違っている気もするので、宜しければご教授ください。 |
|
>>3708 Sjr `bad decrypt' を出しているのは多分 rypto/evp/evp_enc.c の int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl){ b=ctx->cipher->block_size; n=ctx->final[b-1]; if (n > b){ EVPerr(EVP_F_EVP_DECRYPTFINAL,EVP_R_BAD_DECRYPT); だと思います。PKCS#5 で定義されている操作に矛盾が発生すると このエラーが発生すると思っています。 ところで PKCS#5 の日本語訳のありかをご存知の方いらっしゃい ませんか? (解説している書籍でも可) 以前自分で訳してみたものの、 よく理解していないため何が何だかわからない日本語ができあがって しまいました。 |
|
68userさん、ご回答有難うございました。 恥ずかしながらPKCSというのは知りませんでした。PKCS#5というのは、 簡単に言うと文字列を鍵とする場合の決まりごと、みたいなものでしょうか? 頂いたソースやPKCS#5を斜め読みしてもまだ今一つピンときていません。 勉強したいと思います。 今のところなんとなく、PKCS#5でのPS(Padding String)についての記述を 見て、Padding ruleによってはエラーが検出できるのではと予想しています。 やっぱりアルゴリズムを見ていくしかないですねぇ… |
|
>>3710 Sjr > 簡単に言うと文字列を鍵とする場合の決まりごと、みたいなものでしょうか? 決まりごとというか、RSA が作った決めごとですね。 DES は 64bit のデータを暗号化・復号化する機能しか持っていません (だから DES は 64bit ブロック暗号)。 これでは 64bit を超えるデータを暗号化できないので、データを分割して 暗号化する方法の一つが CBC モード (FIPS PUB 81 で規定)。一方、データ 列が 64bit に満たない場合のパディング方法などを規定しているのが PKCS#5 です。 PKCS#5 でのパディングは データ1バイトの場合: A -> A 07 07 07 07 07 07 07 としてから暗号化 データ2バイトの場合: A B -> A B 06 06 06 06 06 06 としてから暗号化 : データ7バイトの場合: A B C D E F G -> A B C D E F G 01 としてから暗号化 データ8バイトの場合: A B C D E F G H -> A B C D E F G H 08 08 08 08 08 08 08 08 としてから暗号化 としていますね。 と書いているうちにわかったような気がしますが、 http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/crypto/openssl/crypto/evp/evp_enc.c?rev=1.1.1.1.2.4 の EVP_DecryptFinal_ex が呼ばれるときの流れは 残りブロックサイズ = ctx->cipher->block_size; if (残りブロックサイズ > 1){ /* 残りはパディング部分のみ */ n=ctx->final[b-1]; /* 最後の 1バイトを読む。その値はパディング長であるはず */ if (n > b) /* パディング長が残りブロックサイズを超えているならエラー */ for (i=0; i<n; i++) パディング部分の値が全て n であることをチェック /* ここまできたら、パディング部分が正しいことがわかる */ n=ctx->cipher->block_size-n; /* パディング部分を除いたブロックサイズを取得 */ for (i=0; i<n; i++) /* パディング部分より前のデータについて出力バッファに書き出す */ out[i]=ctx->final[i]; てな感じでしょうか。 |
|
一応補足。 >>3708 Sjr > DESというと単にビット単位の置換だと思っているので、エラーが検出できるのが > ちょっと不思議です。 DES 自体は、鍵に含まれるパリティを以外の誤り検出機能はない、という 理解で正しいと思います。 しかし、PKCS#5 においては誤った鍵を使うと >>3711 68user > データ1バイトの場合: A -> A 07 07 07 07 07 07 07 としてから暗号化 > データ2バイトの場合: A B -> A B 06 06 06 06 06 06 としてから暗号化 この最後のデータ列 (06 06 06 06 06 06 など) がめちゃくちゃになって しまうため、パディングチェック時にエラーとなる、ということですね。 なお、PKCS#5 は DES に限らず、ブロック暗号一般に適用できます。ただし PKCS#5 は 64bit 暗号に特化した書き方がされているので、64bit 超暗号に 一般化したものが PKCS#7 に規定されています。 # と言っても、mod 8 とか書いてあるか、mod k と書いてあるかの違いしか # ないような気がしますけど。 |
|
x168userさん、詳細な説明ありがとうございます。 誤りの検出については、ほぼ理解できたと思います。 >データ8バイトの場合: A B C D E F G H -> A B C D E F G H 08 08 08 08 08 08 08 08 としてから暗号化 のところは意外でした。データが増えてしまうのでしょうか。 確かにこうしないとパディングされているのかされていないのかが 分からない、ということなのでしょうけど。 よくよく見ていくと色々と考えられていて面白いですね。 |
|
初歩的な質問です。 複数ファイルを1ファイルにcatで結合しようとしたところ次の問題が発生しました。 各ファイルのファイル名は20文字程あり、それら10ファイルをまとめて作成したい ファイル名も20文字程あります。cat以下コマンドを入力していくと、255文字で 入力不能となります。環境はSolarisへのTelnet接続、シェルはkshを使っています。 また、結合したい10ファイルは1つのディレクトリにある全てのファイルです。 ファイル名を短くするとか一度にやらないとか方法はあるでしょうが、画期的な方法が あれば宜しくお願いします。 |
|
>>3714 SS さん、 ファイル名に共通点ありますか? $ cat aaa.txt a b c $ cat bbb.txt 1 2 3 $ cat ccc.txt x y z $ cat *.txt a b c 1 2 3 x y z |
|
>>3714 SS Solaris8 では sh・ksh・csh いずれも 255 文字の制限があるようで、極めて 不愉快ですね。 ワイルドカード (glob) を使う以外の別解としては、文字数の制限がある のはコマンドラインからの入力時だけのようなので、シェルスクリプト内で #!/bin/ksh cat file-a file-b ..... > result などとすれば OK なようです。 あとは、tcsh や bash を使うとか。 |
|
シェルスクリプトで実現することにしました。ありがとうございました。 |
|
>>3717 SS 3716で68user様もさらっと書いてますが、ワイルドカードをを使用する事でも回避可能です。 % cat * > outfile それにしてもこんな制限があるとは知りませんでした。 で、確認してみたところ、255文字ではなく257文字まで入力できました。 ・・・・・・なんでこんなに中途半端なんでしょう? |
|
>>3074 68user 返事遅れて申し訳ありません。 回答ありがとうございます。 状況は、全く変化せずFIN_WAIT1の状態のまま残っています。 タイマーはないようです。 OSを再起動すればなくなるのでしょうが、それは出来ないので困っています。 強制的にクローズする方法はありませんでしょうか? apacheを再起動しても変化なしでした。 |
|
>>3719 lock であれば、NetBSD のバグだと思われます。 http://www.netbsd.org/Misc/query-pr.html#search と http://www.netbsd.org/MailingLists/ で検索してみましたが、 それっぽいものはありませんでした。 # FIN_WAIT_1 が残るというメールはありましたが、NetBSD 1.3.1 # 以前の問題のようです。 これ以上はわたしには全くわからないので、netbsd.org の メーリングリストで質問してみてはいかがでしょうか。 |
|
初めてメールします。CGIを用いてGREE.jpのようなものを作りたいと考えているのですが、何かいい案はございませんか? |
|
>>3721 大谷 現状何が問題なのかを提示せずに いきなり「何かいい案は?」と 問われても、何と答えればよいのかわかりません。 |
|
シェルスクリプト内の変数の使い方について教えて下さい。 環境は、HP-UX11.00で、Cシェルです。 a.cshとb.cshの2つのシェルがあり、 b.cshは、a.cshから呼ばれる動きです。 この時、a.csh内で設定した変数を、b.csh内でもしたいのですが 上手くいきません。 - a.csh ----------- #!/bin/csh set title = "test log" ./b.csh - b.csh ------ #!/bin/csh echo "Subject: $title" >> kekka.log echo "" >> kekka.log というように使いたいのですが、上手くできません。 よろしくお願いします。 |
|
>>3723 つる setenvしてください。 |
|
留学歴を調べててわかったんですが、 あべ晋三さんって Mac のノート(G4 パワーブック?)で Unix を使って日本を動かしてるらしい。 http://www.s-abe.or.jp/image/pc_desk.gif 「./configure; make new_japan; make install」ってのがすごいですね。 実装が知りたい (^^) ★ さて質問です。tcup という有名なレンタル掲示板に 「プログラム書き込みを禁止する」という設定項目があり、 これを有効にするといわゆるエロ広告がカットできるようなんですが、 どういう実装になってるんでしょうか。 HTTP-AGENT 環境変数とかだったらフツー偽装しますよね。 (いぜん PC を docomo の携帯に偽装して「グリコの抽選の応募」を 連続応募する裏ワザというのがあった) ていうか、Internet Explorer だってコンピューターのプログラムには 違いないわけで。どうやって判別できるんでしょう? |
|
>>3275 kotaro > 「./configure; make new_japan; make install」ってのがすごいですね。 何ヶ月か前にほうぼうでネタにされてましたね。configure と make は ; で なくて && でつなぐべきだとか、いったい何を grep してるんだとか、パス ワード入力時に何で * がエコーバックされるんだとか。 http://www.s-abe.or.jp/ の web も XOOPS を使っているようで、ページ 運営者がそういう系統の人なんでしょうね。 > 「プログラム書き込みを禁止する」 http://www.teacup.com/gbbs/l1new.shtml の「プログラム投稿(迷惑投稿)禁止」 のことですね。 http://8520.teacup.com/pon/bbs あれれ? 投稿者:PON 投稿日:10月10日(金)00時00分26秒 以降の発言を見るに、cookie を食べてくれるかとか、referer を 渡してくるかとか、Javascript を正しく解析してくれるかとか、 そういう感じの判定をしているものと思われます。 |
|
質問です。 Solaris8で、バックアップからのフルリカバリを行う際、 パーティションを作成した後にnewfsでファイルシステムの作成を行いますが、 このときSWAP領域にも、newfs /dev/rdsk/.....というようにファイルシステムを 作成するものなのでしょうか? vfstabファイルによると、SWAPはファイルシステムがufsでなくswapですので、どうなのかと思いまして。 googleで解説ページを検索すると、SWAPにnewfsを行っているサイトもあるのですが、 自分の持っている書籍では行っていません。 ちょっと分からなくなってしまったので、宜しくお願い致します。 |
|
>>3727 tt ufs ファイルシステムを作るわけではないので、newfs は不要です。 ファイルを swap として追加する場合も、 # mkfile 512m /foo/bar/swap512m # swap -a /foo/bar/swap512m と、ゼロ埋めのファイルを用意して swap -a するだけですので。 |
|
>>3728 68user様 ご回答ありがとうございます。 やはり不要なのですね。 ただ、それでもnewfsを行った場合、何か不具合が出るのでしょうか? 「不要」とは、「行っても問題無いが、する必要が無い」と言った意味になりますでしょうか。 swapをnewfsしている方は、その後問題無いのかなと思いまして。。 |
|
>>3729 tt newfsしても問題ないと思います。 ただし、実際にswapを使い始めると(書き込みが行われると) ufsとして書き込みに行かないので、結局ファイルシステムは破壊はされます。 よって、newfsする意味がありません。 |
|
C言語版FTPクライアントを実行させたところ、RETR後、レスポンスが2回続けて ありますが(150、226)、226のレスポンスが異常に遅いです(6分後)。 Solaris8、ProFTP(関係ないとおもいますが。。。)の構成です。 |
|
HP-UX11.00で、Bシェルなのですが、 awkで表示された内容をある数分出力したら別ファイルに 入れたいのですが、 --------------------------------------- #!/bin/sh # FILE="test.txt" OUTPUT="output.txt" awk -F" " ' BEGIN { count = 0+0 ; } function func() { if (・・・・) { printf("%s\n",$0) ; printf("\n") ; return 0; } else { return 1; } } { if (NF == 0) next ; if (NF == 2 && $1 == "dn:") { ret=func() ; if (ret == 0) count++ ; } if (count == 1000) { count = 0+0 ; } }' ${FILE} > ????? ------------------------------------ 1000件ごとに出力するファイル名を変えたい 「output_nnn.txt」ということはできるでしょうか。 |
|
>>3731 marlboro ご報告ありがとうございます。 調べてみますが、 - どこからどこ宛の接続なのか (Solaris8 から localhost 宛?) - OS 付属の FTP クライアントでは問題ないのか - (インターネット上に公開されているサーバであれば) 相手のサーバ名 を教えていただけると助かります。 >>3732 すすむ HP-UX11.11 の /bin/awk で、 out="output_nnn.txt"; print "hoge"> out などと出力ファイルを指定できるようです。後は out の内容を 動的に変えていけばよいでしょう。 対象ファイルを切り替えるときは close(out) すればリソースの 無駄が省けてよいかもしれません。 |
|
>>3733 68user ありがとうございます。 >HP-UX11.11 の /bin/awk で、 > out="output_nnn.txt"; > print "hoge"> out >などと出力ファイルを指定できるようです。後は out の内容を >動的に変えていけばよいでしょう。 >対象ファイルを切り替えるときは close(out) すればリソースの >無駄が省けてよいかもしれません。 確認できる環境が近くにないので確認ができませんが、 以下の様なことなのでしょうか。 ------------------------ #!/bin/sh # FILE="test.txt" OUTPUT="output.txt" awk -F" " ' BEGIN { count = 0+0 ; num = 1; output="output_num.txt" } function func() { if (・・・・) { printf("%s\n",$0) >> output ; printf("\n") >> output ; return 0; } else { return 1; } } { if (NF == 0) next ; if (NF == 2 && $1 == "title:") { ret=func() ; if (ret == 0) count++ ; } if (count == 1000) { count = 0+0 ; num++ ; output="output_num.txt" } }' ${FILE} |
|
>>3731 marlboro 手元の複数の環境で実験した限りでは再現しませんでした。 >>3733 68user をご参照の上、より詳細なご報告いただければ幸いです。 >>3734 すすむ ご自分で動作確認して、わからなければ再度質問してください。 |
|
>>3735 68user >ご自分で動作確認して、わからなければ再度質問してください。 失礼しました。 ありがとうございました。 希望通りの動きをしました。 |
|
>> 「./configure; make new_japan; make install」ってのがすごいですね。 > 何ヶ月か前にほうぼうでネタにされてましたね。configure と make は ; で > なくて && でつなぐべきだとか、 ごめんなさい、教えてください。 ;ではなく&&でつなぐとどうなるのですか? |
|
>>3737 kentarou 例として、「cmd1 && cmd2」とした場合は、 cmd1の戻り値が0の場合のみcmd2を実行します。 |
|
>>3738 zsh そして、make は成功時には 0 を、失敗時には 1 を返します。 # http://x68000.startshop.co.jp/~68user/unix/glossary.html#%CC%E1%A4%EA%C3%CD よって && でつなぐことで、 - configure でこけたら make 以降は行なわない - make でこけたら make install は行なわない という効果があるわけです。 |
|
Perl&CGIで授業の出席フォームを作成しようとしています。Perlは初心者です。 サーバーは、Windows2000+IIS+ActivePerl5.6.0で、ブラウザはIE6.0です。 クライアントマシンのIPアドレスを取得するPerlのコードでつまずきました。 inet_aton、gethostbyaddr、inet_ntoaの各関数を使ってIPアドレスを取得する コードを試しましたが、ブラウザIE6.0のプロキシ設定をしていれば、プロキシ のIPアドレスが取得でき、クライアントのIPアドレスが取得できません。もちろん プロキシの設定を外せば、クライアントのIPアドレスが取れます。プロキシを設定 した状態で、クライアントのIPアドレスを取得できる方法がありましたら、ご教示 ください。 |
|
>>3740 瓜倉 茂 > クライアントマシンのIPアドレスを取得するPerlのコードでつまずきました。 IP アドレスは $ENV{REMOTE_ADDR} で取得できますよね。FQDN (ホスト名) の 取得が目的ですか? それはそれとして、 > プロキシを設定した状態で、クライアントのIPアドレスを取得できる方法が > ありましたら、ご教示ください。 については >>3450 68user の「理屈的には、100% の精度の proxy 判定は不可能です」のくだりを 読んでください。 100% は無理と書きましたが、学内限定でなおかつあなたが管理者の立場なの であれば、必ず HTTP_X_FORWARDED_FOR を設定させるように proxy サーバの 設定変更するなどの手はあります。 ただ、根本的に信頼性がないので「web で出席を取る」という仕組みが妥当か どうかは微妙な気がします。 |
|
>>3733 68user 遅くなりました。すでに確認していただいているのですが。 >調べてみますが、 > - どこからどこ宛の接続なのか (Solaris8 から localhost 宛?) > - OS 付属の FTP クライアントでは問題ないのか > - (インターネット上に公開されているサーバであれば) 相手のサーバ名 >を教えていただけると助かります。 あて先は、同じネットワーク内に存在するサーバです。同じくSolaris8です。 UNIXのftpコマンド、Windowsのツール(FFFTP)では問題なく動作します。 #ftpコマンドでPASVで送受信する方法を知らないんですね。。。 サーバ側の問題とも考えにくいです。 |
|
コマンドを&&でつなぐ件、勉強になりました。 ありがとうございます。 |
|
68user様 早速のご回答ありがとうございます。Perlの使い方で問題が解決するのかと 思ってましたが、ネットワーク経由だと他のところも絡んでくるのですね。 Webにこだわらないで、出席を取る問題を再考してみます。 |
|
marlboro様 先ほどのNo.3744の内容は、No. 3742のmarlboro様へのお礼でした。 あて先を間違い失礼しました。改めてmarlboro様の回答にお礼申し 上げます。 |
|
>>3742 marlboro ProFTPD を相手にすると再現することがわかりました (一番 最初に試すべきことでしたね)。 % time ./ftp-client -d anonymous foo@example.com ftp.proftpd.org /MIRMON.PROBE <-- 220 ProFTPD 1.2.10rc2 Server (proftpd.org Project) [81.223.20.36] --> USER anonymous <-- 331 Anonymous login ok, send your complete email address as your password. --> PASS foo@example.com <-- 230 Anonymous access granted, restrictions apply. --> PORT aaa,bbb,ccc,ddd,16,36 <-- 200 PORT command successful --> RETR /MIRMON.PROBE 1085749801 <-- 150 Opening ASCII mode data connection for /MIRMON.PROBE (11 bytes) (ここで6分待たされる) <-- 226 Transfer complete. --> QUIT <-- 221 Goodbye. 0.000u 0.005s 6:03.75 0.0% 0+0k 0+0io 0pf+0w 対策ですが、 http://x68000.startshop.co.jp/~68user/net/c-ftp-1.html の while (1){ int read_size; read_size = read(data_socket, buf, BUF_LEN); ... } の後に close(data_socket); を入れることで直るようです。 データコネクションはサーバ側から切ってくれると認識して いたのですが、間違いなのかもしれません。調査します。 ご指摘いただきありがとうございました。 > #ftpコマンドでPASVで送受信する方法を知らないんですね。。。 Solaris8 の ftp はカスなので、passive モードにできない と認識しています。GNU モノや BSD モノなら、passive でできます。 |
|
はじめまして。 ミラーリングの質問をさせていただきたいの ですが、solaris8 10/01で 内蔵ディスクをRAID1は一般的でしょうが、 RAID1+0(ミラー+ストライピング)を構成 するのはアリなのでしょうか? そもそもできるのでしょうか?? 危険・・・? ソフトはVeritasCSです。 VxVM VxFSも購入予定 標準内蔵DISKは73GBが6個で、 現状下記で振り分けようとしています。 disk1スライス: /(usr opt含む) , swap disk2スライス: /export/home , /work disk3,4でRAID1ミラーを予定だが、 RAID0+1が実は実現できそう・・・ |
|
LAN内だけで有効なドメイン名(hogehoge.example等)を使いたいのですが、 そういったことは可能でしょうか? 具体的にはLAN内のWEBサーバに名前でアクセスしたり、 LAN内のメールアドレスを作りたいのです。 なんだか、漠然とした質問で申し訳ありません。 このようなことができるのであれば、解説しているサイトや、 検索に有効なキーワードでも教えていただけると幸いです。 サーバ構成は以下のようになっています。 ・OS RedHat Linux8 ・MTA sendmail 8 ・DNS bind 9 ・MUA OutLook Express 6(Windows2000, XP Pro) WEBサーバにはローカルIPアドレスでアクセスし、 メールはWEBアプリからpostmaster@host.localdomainのように送信して、 POPはOutlook Expressで受信しています。 |
|
>>3748 hash > WEBサーバにはローカルIPアドレスでアクセスし、 > メールはWEBアプリからpostmaster@host.localdomainのように送信して、 > POPはOutlook Expressで受信しています。 度々すいません。 なんだか、意味のわからない文章になっていました。 現在は引用部分のように利用しているということです。 いろいろと面倒なので、何とかしたいと思って色々調べているのですが、 今のところ手がかりも見つからず質問させていただいた次第です。 |
|
>>3746 68user 興味があったので調べてみました。 現状のftp-client.cはデータコネクションでのデータ転送終了時にソケットのcloseを行っていないため、 サーバー側からのFIN-ACKパケットに対してFIN-ACKを送り返しません。 このため、データコネクションの切断について、クライアントからのFIN-ACKパケットを待つProFTPDと、 FIN-ACKパケットを特に待たない他のFTPDとの実装の差が、今回の問題であるプログラムの動作の差になっている ようです。 >データコネクションはサーバ側から切ってくれると認識していたのですが、間違いなのかもしれません。 データコネクションの切断はサーバー側から行います。原理的に考えても、ファイルやファイルリストのサイズを 送信前に調べることはできませんので、これは間違いありません。 「サーバー側から切断」とはつまりサーバー側からFIN-ACKパケットが送信されるということです。 この際にreadが0を返すので、プログラムはwhileループを抜けます。 ここにclose(data_socket);を追加するとFIN-ACKを返信するようになり、ProFTPDはデータコネクションの切断が 正常に行われたと考え、処理が進みます。 つまり、close(data_socket);を追加することは「切断をクライアント側から行う」ことにはなりません。 以上、まとまりがなく申し訳ありませんが、参考になれば幸いです。 |
|
初めて投稿します。 現在、sendmail 8.12.9 でSTARTTSLコマンドを有効にしてSSL接続を行っています。 デフォルトでは、SSLプロトコルバージョンは3.1です。これを、SSLプロトコル バージョン3.0にする必要があるため、プロトコルバージョンが3.1の実行ファイル と、3.0の実行ファイルを両方作成し、必要に応じて、実行ファイルを置き換えて、 sendmail を起動しなおして、sendmail に接続しています。 プロトコルバージョン3.0のものをコンパイルし、インストールした直後では、 正常にSSLプロトコルバージョンは3.0で通信できました。しかし、一旦、 SSLプロトコルバージョン3.1の実行ファイルに置き換えて起動し、数時間後に、 再度プロトコルバージョン3.0の実行ファイルで起動したところ、プロトコルバー ジョン3.0では通信できないというおかしな状況になってしまいました。 プロトコルバージョン3.0で、通信できずにエラーとなった時の、 /var/log/syslog に出力された、sendmail のエラーメッセージは以下の とおりです。 Jun 4 13:52:27 xxxx sm-mta[7195]: STARTTLS=server: 7195:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:290: プロトコルバージョン3.0にする方法は、SSL_CTX_new() の引数に、 サーバの時はSSLv3_server_method()、クライアントの時は、SSLv3_client_method()を指定するという方法で行っています。 SSLライブラリは、OpenSSL 0.9.6c[engine] を使用しています。 どなたか、原因や対応方法などわかる人がいたら、ご教示していただきたいと 思います。 よろしくお願いします。 |
|
お世話になります。 solaris9のx86版で、syslogの設定について質問なのです。 inetdから起動されるデーモンで、 クライアントのIP等の情報を/var/adm/messagesに出力させるには、 /etc/init.d/inetsvc内の最後を、「/usr/sbin/inetd -s -t」として、 マシンを再起動すれば良いらしいのですが、そのようにしてからtelnetで試したところ、 どうしてもログに出力されません。 /etc/syslog.confの設定はデフォルトのままで、 「*.err;kern.debug;daemon.notice;mail.crit /var/adm/messages」 の設定はコメントアウト等されていません。 他に何か設定すべき場所等ありますでしょうか? 宜しくお願い致します。 |
|
>>3752 bon /etc/default/inetdに ENABLE_CONNECTION_LOGGING=YES の指定が必要です。 |
|
>>3748 hash >WEBサーバにはローカルIPアドレスでアクセスし、 >メールはWEBアプリからpostmaster@host.localdomainのように送信して、 >POPはOutlook Expressで受信しています。 これが今の運用だとすると、 postmaster@host.localdomain と指定している時点でローカルのドメインを使えているように見えますが・・・ クライアントからホスト名でアクセスするだけだったら hostsファイルに指定してやれば良い気がします。 |
|
>> 3753 zsh様 やっと動きました! ありがとうございました。 |
|
>>3746 68user ありがとうございました。 動作確認できました。やはり6分待たされるんですよね。 >ProFTPD を相手にすると再現することがわかりました (一番 >最初に試すべきことでしたね)。 最初にお伝えするべきでした。 |
|
>>3747 kouzu > RAID1+0(ミラー+ストライピング)を構成するのは > アリなのでしょうか? わかりません。RAID1 しかやったことがないです。 システム領域は RAID1 しか対応していないミドルウェアも あるようですのでね。どう考えてもお仕事なようですから、 素人のアドバイスなど聞かず、まずは Veritas 社に問い 合わせることをお勧めします。 >>3750 金床 なるほど、勉強になります。サーバプログラムの書き方の違いとしては、 クライアントの FIN-ACK を待たない ⇒ close か、shutdown(fd, SHUT_RDWR) クライアントの FIN-ACK を待つ ⇒ shutdown(fd, SHUT_WR) して、read が 0 を返すのを待つ てな感じなんでしょうかねぇ。 >>3751 TSURU 単に 3.0 サーバに 3.1 プロトコルでお話しているということは ないですよね? tcpdump や ethereal などでプロトコルバージョンを 確認しても間違いはありませんか? SMTP over TLS は使ったことがないため、たいしたことは言えなくて 申し訳ないです。 |
|
>>3751 TSURU こんばんは。 V3.0で通信できない、という件ですが、設定方法を変えたら、正常にV3.0で通信 できるようになりました。 具体的には、sendmail.cfにて、CipherList を設定する方法で、できるように なりました。 お騒がせしました。 68userさん、レスをいただきありがとうございます。 ありがとうございました。 |
|
>>3758 TSURU V3.0 と V3.1 で sendmail.cf を共用にしていたため、 V3.1 でしか使用できない Cipher を V3.0 で使おうとして エラーになっていた、ということでしょうか? |
|
>>3759 68user いや、それはないと思います。 sendmail.cfファイルも、V3.0用とV3.1用で別々に作成して、置き換えて使っています。 僕も、それほどSSLについて詳しいわけではありませんが、 SSLプロトコルバージョンと暗号化アルゴリズム(Cipher)は、直接は関連性はないように 思います。 おそらく、この認識で合っているとは思いますが。 |
|
>>3760 TSURU SSL3.0 と TLS1.0 (≒SSL3.1) の仕様上は、使用できる暗号 スイートに違いがあります。たとえば SSL3.0 では FORTEZZA が使用できましたが、TLS1.0 では削除されました。また、AES 関連の暗号スイートについては、TLS のみに追加されました。 今後も新規暗号スイートは TLS のみに追加されていくでしょう。 http://www21.ocn.ne.jp/~k-west/SSLandTLS/rfc2246-Ja.txt http://www21.ocn.ne.jp/~k-west/SSLandTLS/draft302-Ja.txt http://www21.ocn.ne.jp/~k-west/SSLandTLS/rfc3268-Ja.txt # ただし実装においては SSL3.0 と TLS1.0 はコードを共有して # いるでしょうから、もしかしたら SSL3.0 で AES が使用できる # ような実装もあるのかもしれません。 よって、暗号スイートの違いから接続がうまくいかなかったのでは ないかと考えた次第です。 後学のために教えていただきたいのですが、 >>3758 TSURU > sendmail.cfにて、CipherList を設定する方法 何と書くとうまくいかなくて、何と書くとうまくいったのか お教えいただけますか? |
|
>>3761 68user 1.通信できなかった場合 sendmail.cfで、CipherList は特に設定していない。 また、SSL_CTX_new() の引数にSSLv3_server_method()、 又は、SSLv3_client_method()を指定する。 この方法だと、通信できなくなった。 2.通信できた場合 sendmail.cfで、CipherList に、DEFAULT:+SSLV3 を指定する。 また、SSL_CTX_new() の引数にSSLv23_server_method()、 又は、SSLv23_client_method()を指定する。 (つまり、sendmail のソースコードをいじらないままの状態です。) この方法で、正常に通信できるようになりました。 |
|
どなたかご教授下さい。 すでに動いているSolaris8の機器に新規Diskを追加し、Formatコマンドでパーティション切って、 labelしたあとにリブートする必要はありますか? リブートしないと反映しないのですかね? リブートは必要ないと思っていますが。。 |
|
>>3762 TSURU ありがとうございます。暇を見つけて試してみたいと思います。 >>3763 aits リブートして /etc/vfstab の内容が正しいことを検証しておく 方がよいと思われますが、リブートが必須かどうかと問われれば、 必須ではありません。リブートせずに、そのまま mount できます。 |
|
>>3757 68user >サーバプログラムの書き方の違いとしては、 > クライアントの FIN-ACK を待たない > ⇒ close か、shutdown(fd, SHUT_RDWR) > クライアントの FIN-ACK を待つ > ⇒ shutdown(fd, SHUT_WR) して、read が 0 を返すのを待つ > てな感じなんでしょうかねぇ。 ProFTPDのソースを見てみました。ご指摘の通り、 shutdown(fd, SHUT_WR) になっていました。 #実際にはSHUT_WRはハードコーディングされて1になっていましたが shutdown後にreadしているかどうかまでは追えていません。 時間があるときにコードを書いてshutdownの動作を確かめてみたいと思ってます。 ちなみにProFTPDのこの部分を shutdown(fd, SHUT_RDWR) に変えてみたところ、closeを追加しないftp-client.cでも処理が止まらずに進むことを確認できました。 |
|
unix上でzip圧縮した際にパスワードを設定したいのですが、 どなたかご存知な方いらっしゃいいますか? windowsだと基本的にzip圧縮の際にパスワードを設定できるように なっているのですが・・・。 一応manコマンドで調べると-eという暗号化のオプションが存在する ようなのですが出来ません。 環境はsolarisです。よろしくお願いします。 |
|
>>3754 zsh > クライアントからホスト名でアクセスするだけだったら > hostsファイルに指定してやれば良い気がします。 お返事ありがとうございます。 全クライアント(Win2000)のhostsファイルを変更するのは 大変(そんなに数はないのですが)なのでDNSにローカルのbindを指定して使っています。 ということは、bindのゾーン設定が悪いんですね。 とりあえず切り分けができたのでもう少し試行錯誤してみます。 報告できるようなことがあれば、また報告させていただきたいと思います。 ありがとうございました。 |
|
>>3766 初心者 $zip -e out.zip target.o Enter password: Verify password: adding: target.o (stored 80%) で出来ました。 RedHatですが、同じだと思います。 |
|
>>3766 初心者 > unix上でzip圧縮した際にパスワードを設定したいのですが、 Solaris 標準の zip は、おそらく暗号化ライブラリなしで コンパイルされていると思うんですよね。たぶん。 FreeBSD の ports http://www.jp.freebsd.org/cgi/cvsweb.cgi/ports/archivers/zip/Makefile?rev=1.29 を参考に、zcrypt29-exportable.zip を持ってきたり、 -DUSE_CRYPT を指定したりして自分でソースからコンパイル すれば大丈夫でしょう。 もしかしたら SunSite http://sunsite.tus.ac.jp/sun/solbin/ のバイナリパッケージが暗号化機能付きでコンパイルされて いるかもしれません (試していません)。 |
|
>>3769 68user Solaris標準・SunSiteのバイナリパッケージ共に暗号機能なしのようです。 |
|
Servlet を C の exe からソケットを使って起動させようとしているのですが うまく起動しません。 どなたかわかる方はいませんか? |
|
>>3771 den 情報不足です。 http://www.hyuki.com/writing/techask.html を読んでください。 |
|
日記。 今日は http://www.amazon.co.jp/exec/obidos/ASIN/475614389X/qid%3D1087134585/249-1275008-5298706 プログラミングテクニック - UNIXコマンドのソースコードにみる実践プログラミング手法 (UNIX MAGAZINE COLLECTION) を買いました。UNIX MAGAZINE に連載されていた記事をそのまま まとめただけですが、これでたまっていた UNIX MAGAZINE を捨て られるので、部屋が狭い人にはお勧めです。 ただ、この人の書く文章にはおもしろみのかけらもなく、全く読む 気にならないのが残念なところ。プログラミングって こんなに つまらないものだったかなぁ、と思えることうけあいです。 |
|
日記 2。 久々に whois.cgi なぞを触っていたら、FreeBSD 5.2.1-RELEASE の /usr/bin/whois は、いちいち NIC (Network Information Center) を 指定しなくても、 % whois u-tokyo.ac.jp で情報を参照できる。昔は % whois -h whois.nic.ad.jp u-tokyo.ac.jp としなくてはならなかったはずなのに何故? と思ってソースを読んだ 結果、 xxx.whois-servers.net (例えば TLD が jp だったら jp.whois-servers.net)。 の CNAME を引っ張ると、whois.nic.ad.jp が返ってくるので、 そこに再接続すればよいらしい。 あるいは % whois -h jp.whois-servers.net u-tokyo.ac.jp とすると whois-servers.net が proxy となって whois.nic.ad.jp から勝手に情報を取得してくれるようだ。 whois-servers.net に対応したのは、FreeBSD 4.0-RELEASE・ FreeBSD 3.4-RELEASE から。 http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/whois/whois.c |
|
dateコマンドでは、最大何日前までの日付計算が行えるのでしょうか? 教えてください。 |
|
Solaris(UNIX)でフォルダの削除が行えません。 rmdir フォルダ名のコマンドでは「ディレクトリが存在しません。」 のメッセージがでます。CPコマンドで同じフォルダを同じ場所にコピーすると 同じ名前のファルダが2つできてしまいます。 このフォルダの消し方をどなたか教えていただけないでしょうか。 |
|
>>3776 yoko こんばんは。 rm -r <ディレクトリ名> で削除できませんか? |
|
ソースを載せます。 //*************************************************************** // From the book "Win32 System Services: The Heart of Windows 95 // and Windows NT" // by Marshall Brain // Published by Prentice Hall // // Copyright 1995, by Prentice Hall. // // This code implements a TCP sender. //*************************************************************** // ssipsend.cpp #include <windows.h> #include <iostream.h> #include <winsock.h> #define NO_FLAGS_SET 0 #define PORT (u_short) 8080 #define DEST_IP_ADDR "127.0.0.1" #define MAXBUFLEN 256 INT main(VOID) { WSADATA Data; SOCKADDR_IN destSockAddr; SOCKET destSocket; unsigned long destAddr; int status; int numsnt; char toSendtxt[3][256]; int numrcv; char buffer[MAXBUFLEN]; strcpy( toSendtxt[0], "GET http://localhost:8080/example00/HitTime?userid=1207&date=20004/06/11%2008:30:00 HTTP/1.1\r\n" ); strcpy( toSendtxt[1], "Host: localhost:8080\r\n" ); strcpy( toSendtxt[2], "\r\n" ); /* initialize the Windows Socket DLL */ status=WSAStartup(MAKEWORD(1, 1), &Data); if (status != 0) cerr << "ERROR: WSAStartup unsuccessful" << endl; /* convert IP address into in_addr form */ destAddr=inet_addr(DEST_IP_ADDR); /* copy destAddr into sockaddr_in structure */ memcpy(&destSockAddr.sin_addr, &destAddr, sizeof(destAddr)); /* specify the port portion of the address */ destSockAddr.sin_port=htons(PORT); /* specify the address family as Internet */ destSockAddr.sin_family=AF_INET; /* create a socket */ destSocket=socket(AF_INET, SOCK_STREAM, 0); if (destSocket == INVALID_SOCKET) { cerr << "ERROR: socket unsuccessful" << endl; status=WSACleanup(); if (status == SOCKET_ERROR) cerr << "ERROR: WSACleanup unsuccessful" << endl; return(1); } cout << "Trying to connect to IP Address: " << DEST_IP_ADDR << endl; /* connect to the server */ status=connect(destSocket, (LPSOCKADDR) &destSockAddr, sizeof(destSockAddr)); if (status == SOCKET_ERROR) { cerr << "ERROR: connect unsuccessful" << endl; status=closesocket(destSocket); if (status == SOCKET_ERROR) cerr << "ERROR: closesocket unsuccessful" << endl; status=WSACleanup(); if (status == SOCKET_ERROR) cerr << "ERROR: WSACleanup unsuccessful" << endl; return(1); } cout << "Connected..." << endl; int idx = 0; while(1) { Sleep(1000); cout << "Sending..." << endl; numsnt=send(destSocket, toSendtxt[idx], strlen(toSendtxt[idx]) + 1, NO_FLAGS_SET); if (numsnt != (int)strlen(toSendtxt[idx]) + 1) { cout << "Connection terminated" << endl; status=closesocket(destSocket); if (status == SOCKET_ERROR) cerr << "ERROR: closesocket unsuccessful" << endl; status=WSACleanup(); if (status == SOCKET_ERROR) cerr << "ERROR: WSACleanup unsuccessful" << endl; return(1); } idx++; if(idx>2){ break; } /* Wait before sending the message again */ //Sleep(4800); } /* while */ return 0; } それほど難しいことはしていないはずなのですが... よろしくお願いします。 |
|
>> 3771 Servletって、JavaのServletのことですよね? なぜ、わざわざCのプログラムからServletを起動する必要があるのですか? そこが分かりません。 |
|
>>3776 yoko ディレクトリを作成した時にディレクトリ名にスペースとか コントロールコード(^hとか)が入ってしまったってことはないですか? とりあえず そのディレクトリ上位の階層でls -l > hoge.lst としてvi hoge.lst を表示もしくはod -x hoge.lstあたりで 確認されてみてはいかがでしょうか? 外してしたらスミマセン |
|
>> 3779 TSURU なぜ、わざわざといわれるとどう答えていいのかわからないのですが。 サーブレットは、起動されるとデータベースに時刻を登録するようにできています。 それでタイムカードのように出社時間と退社時間を記録してゆこうとしているのです。 そのときにわざわざブラウザを立ち上げてフォームのボタンを押してサーブレットを 起動するのは面倒らしいので、スタートアップにEXEをと登録して、 パソコンが起動するとサーブレットを呼び出すようにしようとしています。 という回答でよいでしょうか。 よろしくお願いします。 |
|
>> 3779 TSURU ちなみになぜ、Cでやろうとしているかというと、Java だと各パソコンに JREをインストールしてやらなければならないかなと思っているので それが面倒なのでCを使おうとしています。 |
|
>>3775 kiyo > dateコマンドでは、最大何日前までの日付計算が行えるのでしょうか? FreeBSD の date は 1900 年まででした。他の OS でも、time_t の仕組みに のっけているなら、同じでしょうね。てゆーか OS 名くらい書きましょうね。 >>3776 yoko > Solaris(UNIX)でフォルダの削除が行えません。 ファイルの特定方法もいろいろあるので参考にしてください。 http://www.jp.freebsd.org/QandA/HTML/1671.html >>3778 den > ソースを載せます。 どこでどういうふうにエラーになるんですか? 「うまく起動しません」 とはどういう意味ですか? OS は? ブラウザで該当 URL を見ると正しく 記録されるのですか? …などという点が情報不足なのですよ。期待した結果と実際の結果を書けと http://www.hyuki.com/writing/techask.html にもあったはずです。 ソースをざっと見た感じでは怪しげなところはないように見えますが、 わたしの手元に Windows 開発環境がなくコンパイルできないので、 どなたかコンパイルして検証できる環境をお持ちの方がいらっしゃい ましたらよろしくお願いします。 >>3779 TSURU > なぜ、わざわざCのプログラムからServletを起動する必要があるのですか? C で HTTP クライアントを作るって話なので、別に変ではないです。 |
|
OS は、クライアント、サーバともに Windows 2000 Professtional 又は Windows XP Professtional です。 Tomcat は、Tomcat/4.1.27 です。 サーブレットに動作したことがわかるようにコンソールへの出力が組み込んであるので 起動したことは、コンソールを見るとわかるようになっています。 ブラウザでサーブレットの URL をたたいた場合は、ちゃんとコンソールへの 出力がでて、起動していることがわかります。 |
|
>> 3783 HTTP は、ここで改行しないとダメだとかこういう順番でテキストを 送らないとダメだとかどういうルールがあるのでしょうか? |
|
>> 3783 改行を入れるようにしたらレスポンスは返すようになってのですが、 やはりサーブレットは起動しません。 OS は、サーバ、クライアントともに Windows 2000 Professtional か Windows XP Professtional です。 Tomcat は、Apache Tomcat/4.1.27 です。 起動するというのは、コンソールに文字が出力されるということです。 ブラウザで同じことをした場合は、ちゃんと起動します。 |
|
>> 3783 レスポンスは、 HTTP/1.1 505 HTTP Version Not Supported Content-Type: text/plain Date: Tue, 15 Jun 2004 06:24:28 GMT Server: Apache Coyote/1.0 Connection: close ・・・・・・ です。 |
|
>> 3783 リクエストの2行目の strcpy( toSendtxt[1], "Host: localhost:8080" ); を削除したらうまく行きました。 どうもありがとうございました。 |
|
>>3786 den > 改行を入れるようにしたらレスポンスは返すようになってのですが、 全くついていけません。具体的にどこをどういうふうに修正したんですか? ふと思いましたが、 >>3778 den > numsnt=send(destSocket, toSendtxt[idx], > strlen(toSendtxt[idx]) + 1, NO_FLAGS_SET); この +1 は不要では? |
|
はじめまして。まだ初めて1ヶ月の初心者です。 すいませんがどうしてもエラーメッセージの意味がわからないので、教えていただかないでしょうか? OSはSolarisの5.8です。 -------------------------------------------------------------------------------- ucbcc: 警告: ld が起動される場合は、オプション -YP,:/usr/ucblib:/opt/SUNWspro/WS 6U2/bin/../lib:/opt/SUNWspro/WS6U2/bin:/usr/ccs/lib:/usr/lib は ld に渡されます 。それ以外は無視されます ld: 警告: オプション -YP が複数回存在します。最初の設定で行います。 -------------------------------------------------------------------------------- というものでした。特にldというものがいまいち理解できないのですが、ぜひとも教えてただければと思います。よろしくお願いします。 |
|
>> 3786 HTTP 1.0 以降では、ヘッダと本文を空行で分けているらしく、その空行が ないためにレスポンスがないことがわかりました。 その後、HTTP Version Not Supported というレスポンスが返されるだけ だったのですが、リクエストを "POST <<URL>> HTTP1.1" と空行だけに したところちゃんとしたレスポンスを返すようになりました。 |
|
>>3783 68user >C で HTTP クライアントを作るって話なので、別に変ではないです。 いえ、僕は、サーバ上にある、Servletのプロセスを起動する処理を Cのプログラムの中で実装する話だと思ってしまったので、 おかしいと思ったんですよ。 |
|
denさんへ 根本的な話をしていいですか? >>3781 den の発言を読むかぎりでは、denさんのやりたいことは、 出社時間と退社時間を記録したいということですよね。 それだけのために、なぜサーブレットが必要になるんですか? そこが分からないんですよ。 出社時間と退社時間を記録するだけだったら、別にサーブレット を使わなくても、方法はいくらでもありますよね。 どうしてもサーブレットじゃないとだめなんですか? でも、もうできたんですよね。 だったら、無理に他の方法でやれとは言いませんが、 ただ気になったので、書いてみました。 |
|
denさんへ >>3793 TSURU の書き込みは、べつにあげあしとりとか、意地悪をするために書いたのではありません。 あくまで、単に疑問に思ったことを書いただけですので、くれぐれも誤解なきよう お願いします。 |
|
>> 3793 話がややこしくなりそうなのであまり追求しようとは思わないのですが、 サーブレット以外にもやり方はあると思います。 ただインターネットエクスプローラから時間の記録ができたら便利かなと思って そのようにしました。 でも仮で運用しているとそれでは使いづらいといわれてしまったので、 既存のサーブレットを利用して、C で起動する処理を作って済まそうと 思ったわけです。 サーブレットは、HTTPのリクエストをサーブレットコンテナが受信すれば 起動されるのでサーブレットを起動するには、HTTPクライアントとして リクエストを送るだけでいいのです。 どうもありがとうございました。 |
|
>>3795 den なるほど。 細かい事情は分かりませんが、サーブレットを起動することで 済ませたかった訳ですね。 ゼロから実装するより、既存のもので済ませた方がずっど楽ですからね。 分かりました。 |
|
>>3776 yoko 返事遅くなりました。No.3776 yokoです。 No. 3783 # 68user No. 3780 # とーりすがり No. 3777 # TSURU さん、レスありがとう。 ls -l > hoge.lst で調べるとtest^Mといった(^M)がついていました。 原因は分かりましたが、まだ格闘中です。 rm -r test^M rm -r 'test^M' rmdir 'test^M' でも消えないんですよね。 rm-r |
|
>>3776 yoko 3776で投稿した yokoです。 rm -r test^Mで消えませんでしたがrm -r test*で消す事ができました。 皆さん、 ありがとうございました。 |
|
RSA暗号についての質問なんですが、公開鍵とモジュロは分かるんですよね。 それならば、どういう頻度で循環しているか分かってしまうのではないでしょうか? 循環する頻度と公開鍵があれば秘密鍵も分かってしまうのでは・・? |
|
>>3790 どら まず、以下の質問に答えてください。 - gcc をインストールしていますか? - Sun のコンパイラをインストールしていますか? (/opt/SUNWspro/bin/cc などが存在しますか?) - which cc と which ld の結果は? - echo $PATH の結果は? - 「あなたは」どのコンパイラを使ってコンパイルしようとしていますか? (gcc or Sun の cc) - 実際に使用されていると思われるのはどのコンパイラですか? また、その根拠は? >>3797 yoko > ls -l > hoge.lst で調べるとtest^Mといった(^M)が > ついていました。 ^M はエスケープシーケンス \r (0x0d) です。シェルから 入力する場合は sh なら % rm test(Ctrl-v Ctrl-m) tcsh なら % rm test(Ctrl-v Ctrl-j) とします。csh はどっちだか知りません。 ところでなぜ tcsh は Ctrl-j が ^M で、Ctrl-m が ^J なんでしょうね? >>3799 kou > RSA暗号についての質問なんですが、公開鍵とモジュロは分かるんですよね。 > それならば、どういう頻度で循環しているか分かってしまうのではないでしょうか? えーと、そういうことはないんですが、何と説明すればよいか わかりません。 秘密鍵: e, n 公開鍵: d, n 暗号化: (平文^e)%n 復号化: (暗号文^d)%n として、今、平文と e が不明だとします。何をどうすると、 何がどういうふうに循環すると考えておられますか? なお、(平文^e)%n という操作は単射です。つまり異なる平文が 同じ値になることはありません。 もし数学的に厳密な証明を期待しておられるなら、わたしには その能力がないので、 http://www.faireal.net/ での質問をお勧めします。 |
|
>>3800 68user 68userさん、レスありがとうございます。 質問に答えさせていただきます。 (1)gcc をインストールしていますか? gccというもの自体はわかりませんが、fccとccはインストールしてあるみたいです。(すいません、学校のものなので・・・) (2)Sun のコンパイラをインストールしていますか? (/opt/SUNWspro/bin/cc などが存在しますか?) /opt/SUNWspro/bin/ccはディレクトリの中にありました。 (3)which cc と which ld の結果は? which cc:/usr/ucb/cc which ld:/usr/ucb/ld という結果でした。 (4)echo $PATH の結果は? /bin /usr/bin /usr/ucb /etc /opt/SUNWspro/bin /opt/FSUNf90/bin /disk2/user/md/gnuplot という結果でした。 (5)「あなたは」どのコンパイラを使ってコンパイルしようとしていますか? (gcc or Sun の cc) いままでの練習ではccでコンパイルしていました。これからもccでコンパイルするつもりです。 (6)実際に使用されていると思われるのはどのコンパイラですか? また、その根拠は? 上にも書きましたが、いままではccのコンパイラでコンパイルしていたので、ccのコンパイラだと思います。 さきほどgccについて調べた所、GNUが関連しているみたいでした。これから先にGNUplotを使用してグラフも書きたいと思っているのですが、 それについても何かアドバイスをいただければありがたいと思います。よろしくお願いします。 |
|
>>3801 どら あらそうですか。予想と外れていたのでもうひとつ追加で質問。 >>3790 どら > ucbcc: 警告: ld が起動される場合は、オプション -YP,:/usr/ucblib:... ここだけでなく、コンパイルしてからコンパイルが終わるまで全ての 部分を見せてください。Makefile を使っているにせよ、自分でタイプ したにせよ、とにかく全部見せてください。 > これから先にGNUplotを使用してグラフも書きたいと思っているのですが、 紛らわしいですが、gnuplot は GNU とは関係ありません。 GNU というのは、フリーなソフトウェアが大好きな FSF という団体が提唱するソフトウェアのライセンス方式の ことを指します。gcc も GNU ライセンスで配布されています。 しかし gnuplot はそうではありません。 あと、gcc と gnuplot は関係ないです。gcc はコンパイラ。 gnuplot はグラフ描画ソフト。 |
|
はじめまして、こんにちは。いきなりで非常に申し訳ないのですが、socketのインクルードファイルはどこでダウンロードしたらいいのでしょうか?もしくは、どのOSになら入っているのでしょうか? |
|
>>3803 鼈 わたしの知る限りでは、UNIX 系であれば標準で入っています。 Windows 系であれば、VC++ や C++ Builder などのコンパイラに 添付されているのかな? |
|
UNIXの<sys/socket.h>の様なファイルは windowsでどこにあるのですか windowsで<sys/socket.h>をインクルードしてもファイルが開けない というようなメッセージがでてしまいます。 |
|
> 秘密鍵: e, n > 公開鍵: d, n > 暗号化: (平文^e)%n > 復号化: (暗号文^d)%n > >として、今、平文と e が不明だとします。何をどうすると、 >何がどういうふうに循環すると考えておられますか? nを生成するのがp,qで、それらの最小公倍数がe,dだという私の認識自体が間違っていたのでしょうか^^; 一定の頻度で循環しているから、それ以内の適当な数eでべき乗しても補完関係にあるd(最小公倍数-e)で復号化できる。 平文に「1,2,3・・」といった具合に数を代入していけば循環周期が分かるのでは?と思ったのです |
|
>>3805 蒲鉾 > UNIXの<sys/socket.h>の様なファイルはwindowsでどこにあるのですか winsock.h ですが、Windows の場合は他にもいろいろと書き方が 異なります。「winsock」で検索して、よさそうなサンプルを 探してください。 もっとも信頼できると思われるサンプルは http://www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/basics/ でしょうが、ライブラリ化してあるのでわたしは初心者には わかりやすいとは思いませんが、もし理解できるならこれを 参考にするのがよいでしょう。 >>3806 kou > nを生成するのがp,qで、それらの最小公倍数がe,d 誤りと思われます。 http://x68000.startshop.co.jp/~68user/net/crypt-2.html の「RSA の本当のところ」を読んでください。 もう少し正確に、かつ数学的に書くと、 p,q: 素数 n: n=pq e: 1<e<(p-1)(q-1) かつ gcd(e, (p-1)(q-1))=1 を満たす自然数 d: 1<d<(p-1)(q-1) かつ de≡1 (mod (p-1)(q-1)) を満たす自然数 として求めます。 # gcd(e, (p-1)(q-1))=1 は、e と (p-1)(q-1) が共通の約数を持たないということ。 # de≡1 (mod (p-1)(q-1)) は、d*e を (p-1)(q-1) で割った余りが 1 であるということ。 |
|
>>68user 何度もありがとうございます。 “ex3-2.c”というファイルを“keisan3-2”としてコンパイルした結果を載せさせていただきます。 -------------------------------------------------------------------------------- tds1% cc -o keisan3-2 ex3-2.c ucbcc: 警告: ld が起動される場合は、オプション -YP,:/usr/ucblib:/opt/SUNWspro/WS 6U2/bin/../lib:/opt/SUNWspro/WS6U2/bin:/usr/ccs/lib:/usr/lib は ld に渡されます 。それ以外は無視されます "ex3-2.c", 16 行目: 警告: ファイルの最後に改行文字がありません ld: 警告: オプション -YP が複数回存在します。最初の設定で行います。 --------------------------------------------------------------------------------- 以前実行した時はうまくいったのですが、いつの間にかできなくなりました。 あと、上の文章の中で“16行目:〜ありません”という警告文もどのプログラムにも発生するみたいです。(この警告も以前はありませんでしたし、ファイルの中身はかえてないはずです。) 一応、簡単な文章でもうしわけないのですが、プログラムも載せさせていただきます。(教科書のコピーです…) --------------------------------------------------------------------------------- /* 【例題3.2】 rei3_2 */ #include <stdio.h> main() { int a,b; printf("異なる2つの整数を入力してください--->"); scanf("%d %d",&a,&b); if(a > b) printf("%d --- BIG\n",a); else printf("%d --- BIG\n",b); return(0); } ----------------------------------------------------------------------------------- よろしくお願いします。 |
|
>>3808 どら たびたびすみませんが、 % sh -x /usr/ucb/cc -v -o keisan3-2 ex3-2.c の結果 (全文) を教えてください。 あと、env の結果も教えてください。ホスト名やログイン名などを 公開するのが嫌なら、適当に削ってから提示してください。 これ以上引っ張ると怒られそうなので、一部回答しておきますが、 > ucbcc: 警告: ld が起動される場合は、... 無視されます > ld: 警告: オプション -YP が複数回存在します。最初の設定で行います。 これは警告なので、実行には支障がないはずです。keisan3-2 が 生成されていませんか? > "ex3-2.c", 16 行目: 警告: ファイルの最後に改行文字がありません これは文字通り、ファイルの最終行が改行コードが付いて いないのでしょう。ファイルの最終行の末尾で改行してください。 ファイル末尾に改行がないとその行を読んでくれないプログラムも あるので、改行をつける癖をつけておくことをお勧めします。 |
|
>>3809 68user 何度もありがとうございます。このミスが見つからないと先に進みづらいので、教えていただけるのなら、どれだけ質問されても怒ったりしません。むしろどれだけでも聞いてください。お願いします。 % sh -x /usr/ucb/cc -v -o keisan3-2 ex3-2.cの結果を下に書きます。 ------------------------------------------------------------------------------ + [ -f /usr/ccs/bin/ucbcc ] + [ 4 -eq 0 ] UCB_LIB_DIR=/usr/ucblib CCS_LIB_DIR=/usr/ccs/lib USR_LIB=/usr/lib TYPE= dopt= cgdir= + [ x = x ] LD_RUN_PATH=/usr/ucblib + export LD_RUN_PATH + [ = -Bstatic ] LIBS=-lucb -lsocket -lnsl -lelf -laio + + awk/usr/bin/ls -ln /usr/ccs/bin/ucbcc{print $11} cclink=/opt/SUNWspro/WS6U2/bin/acc + /usr/bin/dirname /opt/SUNWspro/WS6U2/bin/acc ccdir=/opt/SUNWspro/WS6U2/bin + [ != ] nccdir=/opt/SUNWspro/WS6U2/bin/../lib:/opt/SUNWspro/WS6U2/bin LD_LIBRARY_PATH=/usr/ucblib:/usr/ccs/lib:/usr/lib + export LD_LIBRARY_PATH + /usr/ccs/bin/ucbcc -Xs -YP,:/usr/ucblib:/opt/SUNWspro/WS6U2/bin/../lib:/opt/SU NWspro/WS6U2/bin:/usr/ccs/lib:/usr/lib -v -o keisan3-2 ex3-2.c -I/usr/ucbinclude -lucb -lsocket -lnsl -lelf -laio ucbcc: 警告: ld が起動される場合は、オプション -YP,:/usr/ucblib:/opt/SUNWspro/WS 6U2/bin/../lib:/opt/SUNWspro/WS6U2/bin:/usr/ccs/lib:/usr/lib は ld に渡されます 。それ以外は無視されます ### コマンド行ファイルおよびオプション (展開済み): ### -v -o keisan3-2 ex3-2.c -I/usr/ucbinclude -lucb -lsocket -lnsl -lelf -laio ### ucbcc: 注釈: LM_LICENSE_FILE = (null) ### ucbcc: 注釈: NLSPATH = /opt/SUNWspro/WS6U2/bin/../lib/locale/%L/LC_MESSAGES/ %N.cat:/opt/SUNWspro/WS6U2/bin/../../lib/locale/%L/LC_MESSAGES/%N.cat /usr/ccs/lib/cpp -undef -D__SunOS_5_8 -D__SUNPRO_C=0x510 -Dunix -D__unix -Dsun - D__sun -D__BUILTIN_VA_ARG_INCR -D__SVR4 -Dsparc -D__sparc -I/usr/ucbinclude ex3- 2.c >/tmp/cpp.20856.0.i /opt/SUNWspro/WS6U2/bin/acomp -Qy -y-o -yex3-2.o -I/usr/ucbinclude -g "/opt/SUNW spro/WS6U2/bin/acc -Xs -YP,:/usr/ucblib:/opt/SUNWspro/WS6U2/bin/../lib:/opt/SUNW spro/WS6U2/bin:/usr/ccs/lib:/usr/lib -v -I/usr/ucbinclude -c" -b -y-fbe -y/opt/ SUNWspro/WS6U2/bin/fbe -y-xarch=generic -y-xmemalign=4s -y-verbose -Xs -D__SunOS _5_8 -D__SUNPRO_C=0x510 -Dunix -Dsun -Dsparc -D__unix -D__sun -D__sparc -D__BUIL TIN_VA_ARG_INCR -D__SVR4 -y-s -I/opt/SUNWspro/WS6U2/include/cc -i /tmp/cpp.20856 .0.i "ex3-2.c", 16 行目: 警告: ファイルの最後に改行文字がありません rm /tmp/cpp.20856.0.i ### ucbcc: 注釈: LD_LIBRARY_PATH = /usr/ucblib:/usr/ccs/lib:/usr/lib ### ucbcc: 注釈: LD_RUN_PATH = /usr/ucblib ### ucbcc: 注釈: LD_OPTIONS = (null) /usr/ccs/bin/ld -o keisan3-2 /opt/SUNWspro/WS6U2/lib/crti.o /opt/SUNWspro/WS6U2/ lib/crt1.o /opt/SUNWspro/WS6U2/lib/values-xs.o -Y P,/opt/SUNWspro/WS6U2/lib:/usr /ccs/lib:/usr/lib -YP,:/usr/ucblib:/opt/SUNWspro/WS6U2/bin/../lib:/opt/SUNWspro/ WS6U2/bin:/usr/ccs/lib:/usr/lib ex3-2.o -lucb -lsocket -lnsl -lelf -laio -lc /op t/SUNWspro/WS6U2/lib/crtn.o ld: 警告: オプション -YP が複数回存在します。最初の設定で行います。 rm ex3-2.o ret=0 + exit 0 ------------------------------------------------------------------------- envの結果も書かせていただきます。 ------------------------------------------------------------------------- HOME=/disk2/user/md PATH=/bin:/usr/bin:/usr/ucb:/etc:/opt/SUNWspro/bin:/opt/FSUNf90/bin:/disk2/user/ md/gnuplot:. LOGNAME= HZ=100 TERM=vt100 TZ=Japan SHELL=/bin/csh MAIL=/var/mail/md LANG=ja _INIT_NET_STRATEGY=none _INIT_PREV_LEVEL=S _INIT_RUN_LEVEL=3 _INIT_RUN_NPREV=0 _INIT_UTS_ISA=sparc _INIT_UTS_MACHINE=sun4u _INIT_UTS_NODENAME= _INIT_UTS_PLATFORM=SUNW,Sun-Blade-1000 _INIT_UTS_RELEASE=5.8 _INIT_UTS_SYSNAME=SunOS _INIT_UTS_VERSION=Generic_108528-27 PWD=/disk2/user/md USER=md LD_LIBRARY_PATH=/opt/FSUNf90/lib:/opt/SUNWspro/lib MANPATH=/opt/FSUNf90/man:/opt/SUNWspro/man ------------------------------------------------------------------------- という結果でした。 >>ucbcc: 警告: ld が起動される場合は、... 無視されます >>ld: 警告: オプション -YP が複数回存在します。最初の設定で行います。 >これは警告なので、実行には支障がないはずです。keisan3-2 が >生成されていませんか? はい、ファイルはできています。実行すれば結果も出力されています。ただ、毎回この警告文がでていて、どれぐらい問題なのかどうかもわからないので、できるかぎり問題を取り除くことと、その理由が知りたいので… >ファイル末尾に改行がないとその行を読んでくれないプログラムも >あるので、改行をつける癖をつけておくことをお勧めします。 初めてしりました。ありがとうございます。気をつけます。 あと、もしお手数でなければ、今までされた質問の意図を教えていただければありがたいと思うのですが…手間がかかるようでしたら全然かまいませんので、よろしくお願いします。 それではまたよろしくお願いします。 |
|
>>3810 どら 結局、よくわかりませんでした。 Solaris の /usr/ucb/cc はシェルスクリプトで、/usr/ccs/bin/ucbcc を起動しています。/usr/ccs/bin/ucbcc は /opt/SUNWspro/WS6U2/bin/acc へのシンボリックリンクになっているはず。ですから、 ucbcc: 警告:... というのは acc が出力しているわけです。 コンパイラは http://x68000.startshop.co.jp/~68user/unix/pickup?gcc にあるように、プリプロセス・コンパイル・アセンブル・リンクという ステップを踏みます。提示していただいた例だと、最初に /usr/ccs/bin/ucbcc (実体は /opt/SUNWspro/WS6U2/bin/acc) が実行され、それが /usr/ccs/lib/cpp (プリプロセッサ) /opt/SUNWspro/WS6U2/bin/acomp (コンパイラ) /usr/ccs/bin/ld (リンカ) を順次起動しています。 # この場合、アセンブルはコンパイラの中で行われています。 で、 ucbcc: 警告: ld が起動される場合は、オプション .. は ld に渡されます。... というのは、最初に起動された ucbcc が -YP,.. というオプションを 理解できなかったため、 「わたしの知らないオプションだけど、今から起動する ld ならこの オプションを理解できるかもしれないので、ld に -YP を渡します」 と言っているわけです。ただし、cc に -c オプションをつけたりすると リンクは行われないため、そういうときに備えて 「ld を実行しないようなオプションを指定された場合は ld が 実行されないので、結果的に -YP オプションは無視されます」 とも言ってます。 で、 > ld: 警告: オプション -YP が複数回存在します。最初の設定で行います。 についてですが、-YP オプションは ld に渡されます。実行結果を 見るとなぜか /usr/ccs/bin/ld に -YP が 2つ渡されてしまって います。-YP オプションは、ライブラリを検索するディレクトリを 指定するものなので、ld は 「ライブラリを検索するディレクトリが 2つ指定されているので、 後の方を無視して、最初の方を使います」 と警告しています。 なぜ -YP オプションが複数渡されるのかを知りたいため、-v オプションを つけてもらったり、env で環境変数を見せてもらったりしましたが、怪しげ なものを見つけることはできませんでした。 > 特にldというものがいまいち理解できないのですが ld はリンカです。例えば >>3868 jeiu で printf や scanf などの関数を使っていますが、これらの関数は OS の機能として用意されているものではありませんし、コンパイラが 内蔵している機能でもありません。 /usr/lib/ の下に *.a や *.so などのファイルがあると思いますが、 ここにコンパイル済の printf や scanf が入っており、それと結合 しているわけです。それらのライブラリ関数と、あなたが作った プログラムを結合するのがリンカの仕事で、コンパイル済の printf や scanf はどのディレクトリに置いてあるかを指定するのが -YP オプションです。 だらだらと書いてきましたが、ぶっちゃけて言うと一般的な解決方法は Solaris では /usr/ucb/cc を使わず、/opt/SUNWspro/bin/cc を 使う。できれば PATH から /usr/ucb/cc を削除した方がよい というもので、これはよく知られたノウハウです。/usr/ucb は SunOS4 時代 (20年くらい前) との互換性のためのディレクトリで あって、今どき積極的に使う必要性はありません。 ただ、わたしは根本的な原因を知りたかったので しつこく聞いて みたのですが、実を結ばなかったようで誠に残念です。 以下は余談ですが、あなたの環境のコンパイラはおそらく Forte C update 2 という Sun の製品です。わたしの手元には Solaris2.6 + Sun Workshop (Forte C の前バージョン。Sun の製品) がありますが、いくら頑張っても 同じエラーメッセージを出すことができませんでした。 よって、多分 Forte C の不具合ではないかと予想しています。 |
|
>>3811 68user >>3810 どら 富士通のコンパイラも入っていそうだという事が気になるのですが・・・ /usr/ccs/bin/ucbcc は Forte へのシンボリックリンクになってますか? |
|
>>3812 zsh > 富士通のコンパイラも入っていそうだという事が気になるのですが・・・ /opt/FSUNf90/bin とかですか? Fortran のコンパイラと見たので 特に関係はないかと判断したのですが、どうなんでしょうね。 |
|
>>3811 68user お手数をおかけしてすいませんでした。 説明がわかりやすくてうれしかったです!! PATHから/usr/ucb/ccを削除してみました。 そしたらいままでの警告文はなくなりました!!ありがとうございました。 しかし今までになかった警告文がでました。 ------------------------------------------------------------------- "ex3-1.c", 3 行目: 警告: 指令中に無効な空白文字があります ------------------------------------------------------------------- というものでした。今まではこんな警告もなかったし、3行目の空白も見当たりません。 この前載せたプログラムと同じものなのですが、#includeと<stdio.h>の間の空白を消してみましたが同じでした。 またなにか問題なのでしょうか?他の例題に関してもまったくおんなじ警告文がでます… この形の警告文はたいていプログラムの問題だったので、プログラムをいじれば解決していたのですが… あと、もしよろしければ、gnuplotの使い方も教えていただければうれしいのですが… いろいろなホームページ上の例題をやってみたのですが、どれもうまくいかなくて… (特に、Cのプログラムをgnuplotに出力させたいのですが、gnuplot本体を置くディレクトリの場所とか、リンクの仕方とか…) もし時間があればでけっこうですので、少し教えていただけないでしょうか。よろしくお願いします。 |
|
>>3814 どら > "ex3-1.c", 3 行目: 警告: 指令中に無効な空白文字があります ソースを少しずつ削って、この警告が出る場所を特定してください。 問題の行を特定したけれども原因がわからない場合は、 % od -cx < ex3-1.c (最小限まで削ったファイル) として、変な文字が入っていないか確認してください。 > もしよろしければ、gnuplotの使い方も教えていただければうれしいのですが… 質問がある場合は http://www.hyuki.com/writing/techask.html を熟読した上でお願いします。ただしこの掲示板ではこれまで gnuplot の話題が 出たことはないので、 Gnuplot Q&A 掲示板 http://ayapin.film.s.dendai.ac.jp/cgi-bin/trees.cgi などで聞いた方がよいかもしれません。適切な答えをもらうにはどこで 質問するのが効果的かを見極めた上でどうぞ。 それはそれとして > Cのプログラムをgnuplotに出力させたいのですが やればできるでしょうけど、gnuplot の使い方としては適切ではないような気がします。 |
|
>>3815 68user >> "ex3-1.c", 3 行目: 警告: 指令中に無効な空白文字があります >ソースを少しずつ削って、この警告が出る場所を特定してください。 includeの文を1行全部削ってみた所、正常に動きました。 しかし、includeの文はプログラムには絶対必要なものと思っていたのですが… include文が無くても動くということはありえるのですか? 下に正常に動いたプログラムを書きます。 ----------------------------------------------------------------------- /* 【例題3.1】 rei3_1 */ main() { int a,b; printf("異なる2つの整数を入力してください--->"); scanf("%d %d",&a,&b); if(a > b) printf("%d --- BIG\n",a); } ------------------------------------------------------------------------ |
|
>>3816 どら > includeの文を1行全部削ってみた所、正常に動きました。 逆です。動くように削っていくのではなく、動かない最小限の部分を 突き止め、その原因を探る方法を教えたつもりです。 つまり #include に原因があることがはっきりしたので、 % grep include ex3-1.c | od -cx として、なぜ警告が出るのかを調べるべきです。 > include文が無くても動くということはありえるのですか? いろいろありますが、初心者のうちは include 文は書くべきと 思っておく方がよいでしょう。 |
|
>>3817 68user この前のプログラムから、#includeと<stdio.h>の間の空白を削除してみましたが、やはり同じ警告が出ました。 それで、そのプログラムにgrepをかけてみました。どこに空白文字があるのかがわかりません… あるとしても最後の“\d\n”ぐらいだと思うのですが、これは指令とは関係ないし、必要なもののはずなのですが… 下に“grep include ex3-1.c | od -cx”の結果を書きますので、終えてください。よろしくお願いします。 -------------------------------------------------------------------------- 0000000 # i n c l u d e < s t d i o . h 2369 6e63 6c75 6465 3c73 7464 696f 2e68 0000020 > \r \n 3e0d 0a00 0000023 ------------------------------------------------------------------------- |
|
>>3818 どら > 0000020 > \r \n 改行コードが CR LF になっています。UNIX の改行コードは LF です。 CR が空白文字扱いされているのでしょう。 とりあえず CR を削るだけなら tr コマンドが使えます。 http://x68000.startshop.co.jp/~68user/unix/pickup?tr Windows で作ったソースを ftp などで UNIX 上に持ってきて いるなら、アスキーモードで転送しましょう。ただし、全て UNIX 上で開発するのがスキルアップへの道だと思います。 |
|
>>3819 68user trコマンドで\r\nを\nに変えてみるとうまく作動しました。 ためしに、ftpでの転送もアスキーモードに変えると うまく作動しました。 原因が改行コードとは…気づきませんでした。 いろいろとありがとうございました。 |
|
初めて掲載しますが....、 ソケット通信で、select()を使用した非同期通信をさせているのですが、 select()で検知した当該FDを(例としてFD=10と設定)recv()したら、 FD=10のrecv()返値が0(CLOSE?)となることがあります。 recv()返値が0の場合は、相手側がCLOSEしたものと認識はできるのですが、 疑問に思う動作でそれは、通常FD=10ならFD=10を介して送受信を行い、 select()監視しさせて、何かイヘ゛ント発生があればrecv()の動作に遷移する 動きを正常にしているのですが、突然的に(不規則と言うか、不確定と言うか) FD=10で送信後そのFD=10で受信するのに、select()からの戻りが数十秒 (ほとんど決まって、24〜25秒経って)経って検知され、recv()したら 返値が0であると言う動作があります。 このような動作になる原因が解らず、何かヒントや調べる手立てとかありませんか???。 (これって、ネットワーク障害/ネットワーク負荷とか、相手側マシンのHW的障害 などの影響も考えられますか....???) ...記述表現が的確でありませんが、ご了承ください。 |
|
いまここのHTTPクライアントを参考にして POSTをCGIへ仲介するCGIを作っているのですがうまくいきません; GETのところを print SOCKET "POST / HTTP/1.0\r\n"; print SOCKET "Content-Length: $size\r\n"; print SOCKET "\r\n"; print SOCKET "$buffer\r\n"; として $buffer = $ENV{ 'QUERY_STRING' }; $size = length $buffer; を追加してみたのですが・・・。お知恵を拝借できませんでしょうか? |
|
>>3821 マツマツ > FD=10で送信後そのFD=10で受信するのに、select()からの戻りが数十秒 > (ほとんど決まって、24〜25秒経って)経って検知され、recv()したら > 返値が0であると言う動作があります。 よく理解できませんが、 1. send し、select で待つ。 2. 相手側はデータを受信後、すぐに close しているはず。 3. ところが select で 24〜25 秒待たされ、その後に読み込み可能になる。 4. recv すると 0 が返ってくる。 ということであれば、 a. ネットワークの質が悪く、TCP の再送タイマが働いている b. 2 で相手が 24〜25 秒かけて何かを処理してから close している くらいしか思いつきませんでした。パケットダンプしてみては。 >>3822 ユウキ そんな複雑なプログラムを書くのはやめて、まずは単純に POST する プログラムを書くべきでしょう。もし、そういうプログラムは既に作成済 ということであれば、うまくいく場合とうまくいかない場合のリクエストを 見比べればわかるでしょう。 あと、質問をする前に http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse を読んでください>質問者の方々 自分の使っている環境すら書かない人、回答してもわかったのかどうか返事さえ 書かない人が多くて、少々うんざりです。 |
|
申し訳ないです;少し安易に書き込んでしまいました。。。 単純にPOSTしてみます。深夜なのに申しわけなかったッス |
|
●コメント/アドバイスの程ありがとうございます。 (個人的に多忙な面もあり、有意な内容が書かれていることに対して、 返事が遅れた点は、お許しください) 後追いの記載ですいませんが、使用しているマシンはSUNのSC2000 (OS:Solaris2.4)と、SVR4ベースOSを使ったマシン(ここでは相手側) です。(LANのスペックは10BASE) <=両者とも今ではかなり古いものですが...。 またあえて言わしていただきますと、下記の3,4が発生するのは SVR4ベースOSを使ったマシン側です。 > FD=10で送信後そのFD=10で受信するのに、select()からの戻りが数十秒 > (ほとんど決まって、24〜25秒経って)経って検知され、recv()したら > 返値が0であると言う動作があります。 よく理解できませんが、 1. send し、select で待つ。 2. 相手側はデータを受信後、すぐに close しているはず。 3. ところが select で 24〜25 秒待たされ、その後に読み込み可能になる。 4. recv すると 0 が返ってくる。 ということであれば、 a. ネットワークの質が悪く、TCP の再送タイマが働いている b. 2 で相手が 24〜25 秒かけて何かを処理してから close している くらいしか思いつきませんでした。パケットダンプしてみては。 ●まずは、LANアナライザーを噛まして見たいと思います。 ちなみにTCPの再送タイマってものが働いている場合、そのタイマは 24〜25秒の値なのでしょうか。 >>3822 ユウキ そんな複雑なプログラムを書くのはやめて、まずは単純に POST する プログラムを書くべきでしょう。もし、そういうプログラムは既に作成済 ということであれば、うまくいく場合とうまくいかない場合のリクエストを 見比べればわかるでしょう。 ●そうですね。(基本的なことから行うべきですね) |
|
>>3825 マツマツ > ちなみにTCPの再送タイマってものが働いている場合、そのタイマは > 24〜25秒の値なのでしょうか。 「詳解 TCP/IP Vol.1」によれば、RTT (往復時間) がほぼ 0 な LAN 上では、 再送間隔は 1秒・3秒・6秒・12秒・24秒… で、これを最初の送信からの経過時間で表すと 1秒・4秒・10秒・22秒・46秒… だそうです。 ただし RTT にそれなりの時間がかかる場合は、上記の通りには なりません (計算式が難しくてよくわかりませんが)。 なお、上記の事柄が Solaris 2.4 や、同時代の SVR4 にも当て はまるかどうかはわかりません。 |
|
> ちなみにTCPの再送タイマってものが働いている場合、そのタイマは > 24〜25秒の値なのでしょうか。 「詳解 TCP/IP Vol.1」によれば、RTT (往復時間) がほぼ 0 な LAN 上では、 再送間隔は 1秒・3秒・6秒・12秒・24秒… で、これを最初の送信からの経過時間で表すと 1秒・4秒・10秒・22秒・46秒… だそうです。 ●ありがとうございます。 (TCP/IPプロトコルについて、技術的な専門知識が分っていないため、 今後は勉強したいと思います。) で、少々また不仕付けなお話ですみませんが、再送タイマが発生していると した場合に、その原因/要因には、何があるでしょうか。 ”ネットワークの質が悪く、TCP の再送タイマが働いている” の部分で気になり、どちらかのマシンのHW不調(LAN・I/Fカードや CPUボード等)とか、LANケーブル、HUB、トランシーバなどの 不調の影響で発生することとか考えられるでしょうか?。 (パケットトレースで確認することは必要なのですが、発生していると 分った時の発生原因を特定する上で、まず想定できる可能性のものがあれば と思った次第からです) (HW回りを疑って見るべきかどうか、何とも言えないのですが...) ただし RTT にそれなりの時間がかかる場合は、上記の通りには なりません (計算式が難しくてよくわかりませんが)。 なお、上記の事柄が Solaris 2.4 や、同時代の SVR4 にも当て はまるかどうかはわかりません。 |
|
>>3827 マツマツ パケットを送信した後、一定時間が経過しても ACK が返ってこなければ 再送するわけなので、 > どちらかのマシンのHW不調(LAN・I/FカードやCPUボード等)とか、 > LANケーブル、HUB、トランシーバなどの不調の影響で発生することとか > 考えられるでしょうか?。 これらすべてがパケット再送の原因となりえます。 |
|
この土日で当ページの引越しを予定しています。しばらく繋がらなかったり するかもしれませんが、あらかじめご了承ください。 |
|
というわけで引っ越しました。 現時点でわかっている問題点は、 - 掲示板の全文検索が動かない (準備中) - SEGA BBS 過去ログの全文検索が動かない (準備中) です。この他に変なところがあればご指摘いただけると幸いです。 |
|
>>3830 68user > - 掲示板の全文検索が動かない (準備中) 一応検索できるようになりました。 |
|
日記。 FreeBSD 5.2.1-RELEASE の /usr/bin/sort は NetBSD の sort から GNU の textutils の sort に変わってしまったらしい。sort -c で件数を数えることができなくなってしまった。ショック。 |
|
>>3832 68user > sort -c で件数を数えることができなくなってしまった。 間抜けな勘違いをしていました。uniq -c と混同してただけでした。 sort も uniq もこれまで通り普通に使えますね。 |
|
最近になってTCP/IPの勉強を始めましたが、 データリンク層 トランスポート層 ネットワーク層 の役割に反する実装の実例を挙げろって言われても…… 何の事だかさっぱりです。 誰かわかるひといませんか? |
|
>>3834 マオ猫 > …の役割 は何なのかをまず考えてみるべきでしょう。 ところで素朴な疑問ですが、これってどんな本 or 人 or 試験 からの出題ですか? |
|
いつも参考にさせてもらってます。 この度、仕事でSSL/TSLに対応したバッチ用のFTPクライアントが必要になったのですが、 Perlで実現できますでしょうか? いろいろ検索してみたのですが、これといったのが見つからなくて・・・ もし何か知っていましたら、ご教授お願いします。 |
|
ちなみに使用するサーバはRedHat Linux9.0です。 |
|
>>3836 う > この度、仕事でSSL/TSLに対応したバッチ用のFTPクライアントが必要になったのですが、 > Perlで実現できますでしょうか? Perl で「簡単に」行うモジュールはまだないと思います。Perl にこだわるなら http://perldoc.jp/docs/modules/IO-Socket-SSL-0.91/SSL.pod などを使ってがんばるしかないでしょう。 あるいは http://www.perldiscuss.com/thread.php?group=perl.libnet の 「Net::FTP versus TLS」のスレッドの人たちに「サンプルくれ!」とお願いする 手もあるかも (もらえたらわたしにもください)。 上記のスレッドでも出ていますが、手抜きするなら lftp (http://lftp.yar.ru/) が SSL/TLS に対応しているようなので、これを system なりで呼び出すのが楽だと思われます。 |
|
FreeBSD 5.2.1-RELEASE に TLS な proftpd をインストールし、lftpd で 接続してみるメモ。OpenSSL は標準でインスールされているが、なぜか proftpd を make -DWITH_OPENSSL install すると ports の OpenSSL が要求 されるので、まずそれを入れる。 # cd /usr/ports/security/openssl && make install # cp /usr/local/openssl/openssl.cnf.sample /usr/local/openssl/openssl.cnf # mkdir /usr/local/openssl/proftpd 鍵作成 (パスフレーズなし)。CSR を作成し、自己認証。 # cd /usr/local/openssl/proftpd # openssl genrsa > key.pem # openssl req -new -days 365 -key key.pem -out csr.pem # openssl x509 -in csr.pem -out cert.pem -req -signkey key.pem -days 365 ProFTPD のインストール。 # cd /usr/ports/ftp/proftpd # make -DWITH_OPENSSL install # mkdir /var/run/proftpd # cat <<END >> /usr/local/etc/proftpd.conf <IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd-tls.log TLSProtocol TLSv1 TLSRequired off TLSRSACertificateFile /usr/local/openssl/proftpd/cert.pem TLSRSACertificateKeyFile /usr/local/openssl/proftpd/key.pem TLSVerifyClient off </IfModule> ProFTPD 起動。rc まわりが rcNG になったので、proftpd_enable が必要 (?) # echo 'proftpd_enable="YES"' >> /etc/rc.conf # /usr/local/etc/rc.d/proftpd.sh start lftpd で接続テスト。 # cd /usr/ports/ftp/lftpd && make install % lftp -d hoge@localhost Password: *** lftp hoge@localhost:~> ls ---- Connecting to localhost () port 21 <--- 220 ProFTPD 1.2.10rc1 Server (ProFTPD Default Installation) [hostname] ---> AUTH TLS <--- 234 AUTH TLS successful Certificate depth: 0; subject: /C=JP/ST=XX/O=Internet Widgits Pty Ltd; issuer: /C=JP/ST=XX/O=Internet Widgits Pty Ltd WARNING: Certificate verification: self signed certificate ---> USER hoge <--- 331 Password required for hoge. ---> PASS XXXX <--- 230 User hoge logged in. ---> PWD <--- 257 "/usr/home/hoge" is current directory. ---> PBSZ 0 <--- 200 PBSZ 0 successful ---> PRET LIST <--- 500 PRET not understood ---> PASV <--- 227 Entering Passive Mode (127,0,0,1,192,51). ---- Connecting data socket to () port 49203 ---> LIST <--- 150 Opening ASCII mode data connection for file list ---- Closing data socket <--- 226 Transfer complete. (略) lftp hoge@localhost:~> |
|
どうでもいいんですが、ここ数年モチベーションが低下して、web の 更新が非常に少なくなっていました。 そこで数日前からトップページなどにバナー広告を付けてみました。 バナー広告を貼る → 収入がっぽり → 更新する気力がわく ということを夢見ていましたが、3日での収入はなんとびっくり 15円でした。 つまり 1日 5円。月に150円。年に 1800円。 5,000円以上にならないとお金が振り込まれないので、あと 2年半くらい 経ったらわたしは 5,000円手にすることになります。いやーここまで 儲からないものとは。 しかしわたしは変なところで前向きなので、今の 100倍の人が見にきて くれれば毎日 500円、月に 15,000円も儲かるかと思うと、モチベーション あがりっぱなしです。というわけで、訪問者を 100倍にする第一歩として、 web と CGI のひみつ (http://X68000.q-e-d.net/~68user/webcgi/) の 全文検索 (http://X68000.q-e-d.net/~68user/webcgi/search-1.html) を全面的にリライトしました。 |
|
サイト更新ありがとうございます。参考にしてます。 全文検索できないのですが。(実行に必要な権限がない。とのこと) テスト中でしたらすみません。 |
|
>>3841 naisttn > 全文検索できないのですが。(実行に必要な権限がない。とのこと) 掲示板の全文検索ですね? namazu.cgi の存在をすっかり忘れてしまい、cgi-bin/wwwboard/ 以下を 閲覧不可に設定してしまいました。本日中に直します。 |
|
>>3841 naisttn 直しました。ご指摘ありがとうございました。 結局 .htaccess を # namazu.cgi 以外はアクセス拒否 SetEnvIf Request_URI "namazu.cgi" IS_NAMAZU order deny,allow allow from env=IS_NAMAZU deny from all としたのですが、他にわかりやすい書き方ないですかねぇ? <Files !~ "namazu.cgi"> deny from all </Files> とか <Files "namazu.cgi"> <Else> deny from all </Else> </Files> とか <FilesMatch "(?:(?!namazu.cgi).)*"> deny from all </FilesMatch> とか書けないもんでしょうか。 てゆーか、apache の書式は絶対に腐ってると思う。 |
|
UNIX の部屋 http://x68000.q-e-d.net/~68user/unix/ を更新しましたが、たいしたことは書いていません。 |
|
OpenSSLを使ってC言語でHttpClientを実装する方法を参考にさせて頂きました。 ですがサンプル通りでは、SSL_connect()で-1が返ってきます。 ずっと調べてまして、乱数を作成する時の種を設定しないと行けないみたいです。 それもある程度の長さの種じゃないと駄目なようです。(私の環境では32以上) 今、自宅なのでOpenSSLのバージョンはどれなのか判りませんが、 SSL_connect()するまでに以下の関数のどれかを使うと良い様です。 1、RAND_load_file() 2、RAND_seed() 3、RAND_poll() 一番楽なのは3を使うのが楽ですし、一般的で確実かもしれません。 ちなみにマスタリングTCP/IP SSL/TSL編のサンプルでは1が使われてました。 できれば、「SSL/TLS でアクセスしてみよう」に追記して頂ければ、 今後同じ所で嵌る人が困らないと思います。 お忙しいと思いますが、宜しくご検討下さい。 |
|
>>3845 ニッタン 質問ですが、 http://search.luky.org/obu/msg02180.html http://search.luky.org/obu/msg02181.html と同じく、/dev/random が存在しない環境でしたか? |
|
UNIX の部屋 http://x68000.q-e-d.net/~68user/unix/ を更新しましたが、苦労したわりに内容はいまいちです (m4 とか)。 あと、見栄えをいじりましたが、もし見づらかったら文句言ってください。 |
|
ネームサーバはプライマリとセカンダリを置いて、プライマリが障害の場合セカンダリが応答しますよね。 この仕組みはどのように実現されているのでしょうか? 仮にプライマリがダウンした直後に、プライマリに問い合わせたクライアントがあったとすると、 応答待ちでしばらくするとエラーになりますよね?(自身なし) しかし、しばらくすると、すべてのクライアントが障害のないセカンダリにのみ問い合わせるようになりますよね?(自身なし) この間はどのくらいの時間なのでしょうか? どこかで調整できるのでしょうか? |
|
68userさん、お返事ありがとうございます。 実は、今日会社を休んだ為、OpenSSLのバージョンはまだ判っていませんが、 /dev/randomの件は、マスタリングTCP/IP SSL/TSL編には 少し紹介されてました。 結論から言いますと、多分/dev/randomは存在しない環境かと。 サンプルのソースだとOpenSSLのライブラリー部分で、 /dev/randomに標準でアクセスしに行く様になっているでしたら 現状のサンプルのままでも問題ないかと思います。 (でも一文位あったら親切だな〜っと思ったりもします。お忙しいと思いますが) プロキシー接続だったので、過去ログではプロキシーでしか検索していませんでした。 結局、プロキシー云々は関係なかったですが。 |
|
>>3848 bindユーザ > プライマリが障害の場合セカンダリが応答しますよね。 これは誤りで、セカンダリは常にリクエスト・レスポンスの送受信を しています。 > 仮にプライマリがダウンした直後に、プライマリに > 問い合わせたクライアントがあったとすると、 タイムアウトすると即座にセカンダリにリクエストを投げると思います。 > すべてのクライアントが障害のないセカンダリにのみ > 問い合わせるようになりますよね? ならないです。プライマリにもアクセスし続けます。 以上はキャッシュサーバについての説明です。 通常のマシンはキャッシュサーバにアクセスするだけで、コンテンツ サーバ (プライマリ DNS サーバやセカンダリ DNS サーバ) に直接 アクセスすることはない、ということに注意してください。 とか言いつつ、わたしは DNS サーバの運営をしたことがないので、 嘘をついているかもしれません。 http://dns.qmail.jp/server/ をご一読ください。 >>3849 ニッタン ソースが不十分であることは認識していますので、直します。 # ついでにエラーメッセージの出力が不十分なので、これも # 直します。 ただ、なぜ RAND_load_file()/RAND_seed()/RAND_poll() しなければ ならないのかを正確に書きたかったので、質問させていただきました。 今気づきましたが、FAQ にも書いてありますね。 http://www.openssl.org/support/faq.html#USER1 1週間ほど時間をください。 |
|
>>3847 68user チェックボタンをonにする、ラベル用途のJavaScriptでエラーが出ます。 数年前からだと思うのですが… 私は、Windows2K & ie6ユーザーです。 |
|
>>3851 hash ありがとうございます。丸一年気づいていませんでした。 さきほど修正しました。 どうでもいいんですが、こういう用途に使える label 要素 ってのがあることをつい先日知りました。 http://tohoho.wakusei.ne.jp/html/label.htm |
|
この掲示板の全文検索 (namazu.cgi) ですが、問題が発生したため 再び休止します。 |
|
お聞きしたいのですが、 Linuxでのbashシェルを使った 環境変数PATHの順番を変更するやり方を教えてください。 |
|
>>3854 tototo お望みの PATH をそのまま設定する方が自然だと思われます。 どうしても「順番の変更」でなくてはならない理由はありますか? |
|
68userさん、 お忙しいとは思いますが、よろしくお願い致します。 とっても有益な情報が沢山載っているので、 今後も役立つと思いますので、頑張ってください。 私の方でももう一度、調べてみましたが RAND_poll()が、自動的に呼ばれる様になっていますね。 (FAQにもそれらしい事が書いてあるような気もしますね。) 私の使っている環境に移植してきた担当者が RAND_poll()を空関数に実装し直していました。 出来れば、ERR_print_errors_fp()の存在も追記して頂けると重宝すると思います。 |
|
はじめまして。大学生をやっていますつばきです。 Unixのコマンドの意味でわからないことがありました。 学校の課題で「ftp」と「rcp」の違いを説明せよ、というものがありまして、 こちらのサイトでコマンドを検索してみたのですが、 「ftp」はファイルを置いてくる/持ってくる、「rcp」はファイルをコピーする、という説明が出てきました。 この二つ、特に持ってくるとコピーするの部分は同じ意味のような気がするのですが 具体的な違いは何なのでしょうか。 できれば、でよろしいのでご回答お願いします。 |
|
>>3856 ニッタン > 出来れば、ERR_print_errors_fp()の存在も追記して頂けると重宝すると思います。 了解です。 >>3857 つばき > この二つ、特に持ってくるとコピーするの部分は同じ意味のような気がするのですが 同じです。 - ftp なら get するか、put するか - rcp なら rcp ./file host: するか rcp host:file . するか の違いです。 わたしの思う大きな違いは Anounymous ftp という仕組みでファイルを 配布できるのが ftp、そうでないのが rcp。 後は些細な違いしかないと思いますが、それでも 10 や 20 はあげられる かと思います。課題ということなのでいろいろ調べてみてください。 |
|
はじめまして、ネットワークプログラミングの勉強をしています。 Windows上でネットワーク関連のソフトウェアを作成したことはあるのですが、 ライブラリを使用していた為、SocketAPI等はあまり深い知識がありません。 そこで教えていただきたい事があるのですが、ここの掲示板でよろしいでしょうか? 1.WindowsのSocketとUNIXのSocketで関数の違い等あるのでしょうか? 2.UNIXのSocketでも、Linux、FreeBSD、Solaris等で違いがあるのでしょうか? 参考情報等教えていただきたいと思ってます。宜しくお願い致します。 |
|
順番変更しなければならない理由はないのですが、 PATHの順番を変更するやり方 はあるのかが気になったのため、お聞きしました。 |
|
>>3859 samsara > 1.WindowsのSocketとUNIXのSocketで関数の違い等あるのでしょうか? http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/bsd-compatibility.html など。 > 2.UNIXのSocketでも、Linux、FreeBSD、Solaris等で違いがあるのでしょうか? たとえば http://x68000.q-e-d.net/~68user/net/echo-3.html#6 の backlog とか、UDP で受信できる最大サイズを超えた場合の 処理などですかね。より詳しいことを知りたいなら http://x68000.q-e-d.net/~68user/net/link-book.html 「UNIX ネットワークプログラミング第2版 Vol.1」 をどうぞ。後は http://apr.apache.org/ などのライブラリのソースの #if 部分をとことん読む、などなど。 >>3860 tototo > PATHの順番を変更するやり方 PATH=`echo $PATH | sed 's@/usr/bin:@@'`':/usr/bin' とか for i in `echo $PATH | tr ':' ' '`; do いろいろ done とかですかねぇ。 |
|
ここ数ヶ月 (web 引越し前)、マルチポストしたり回答しても返事すら 書かない質問者が多く、困っていました。困るだけならまぁいいんですが、 わたしの web 更新のモチベーションを大いに下げてくれました。 というわけで、↑に書いたとおり、 http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?howtouse を読まない・読んでも守りたくない人は質問しないでください。 もちろん、これらのルールを守っておられる方々の質問は引き続き 歓迎いたします。 これはマナーではなく、この掲示板のルールであることに注意して 下さい。これが気にいらない方は (当然ながら) この掲示板を見ない 自由があります。 web 引越し後は以前のような不届きな質問者はいなくなったようで、 とてもうれしく思っています。 |
|
68userさま、回答ありがとうございます。 教えていただいたページをじっくり読んでみます。 |
|
>>3845 ニッタン 自分用のメモ。ソースが SSL_CTX *ctx = SSL_CTX_new(SSLv23_client_method()); SSL ssl = SSL_new(ctx); SSL_connect(ssl); となっていたとして、 SSL_CTX *SSL_CTX_new(SSL_METHOD *meth){ ret->method=meth; SSL_METHOD *SSLv23_client_method(void){ SSLv23_client_data.ssl_connect=ssl23_connect; int ssl23_connect(SSL *s) ret=ssl23_client_hello(s); static int ssl23_client_hello(SSL *s) RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE); int RAND_pseudo_bytes(unsigned char *buf, int num) const RAND_METHOD *meth = RAND_get_rand_method(); return meth->pseudorand(buf,num); /* (*1) */ const RAND_METHOD *RAND_get_rand_method(void) default_RAND_meth = RAND_SSLeay(); /* (*2) */ return default_RAND_meth; static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num){ ret = RAND_bytes(buf, num); static int ssleay_rand_bytes(unsigned char *buf, int num) if (ok){ ... } else { RANDerr(RAND_F_SSLEAY_RAND_BYTES,RAND_R_PRNG_NOT_SEEDED); ときて「PRNG not seeded」エラーになる、てな感じですかね。 (*1) RAND_METHOD rand_ssleay_meth={ ssleay_rand_seed, ssleay_rand_bytes, ssleay_rand_cleanup, ssleay_rand_add, ssleay_rand_pseudo_bytes, ssleay_rand_status }; typedef struct rand_meth_st { void (*seed)(const void *buf, int num); int (*bytes)(unsigned char *buf, int num); void (*cleanup)(void); void (*add)(const void *buf, int num, double entropy); int (*pseudorand)(unsigned char *buf, int num); int (*status)(void); } RAND_METHOD; (*2) RAND_METHOD *RAND_SSLeay(void) return(&rand_ssleay_meth); |
|
68user様。回答ありがとうございました。 自分なりに調べまして解決しました。助言を下さってありがとうございます。 |
|
To UNIXの部屋管理者様 もしかすると変なことを行ってるかもしれませんが。 cp -r の項目で以下の解説が有りますが。 -R ディレクトリを再帰的にコピーする ディレクトリ dir1 以下に、ファイル foo・bar があった場合、 % cp -R dir1 dir2 は、ディレクトリ dir2 の下にディレクトリ dir 1をコピーする。つまり dir2/dir1/foo、dir2/dir1/foo <<<<<<<<<の二項目はdir2/dir1/barではないでしょうか というファイルが新たに作成される。一方、 % cp -R dir1/ dir2 とすると(`/'を付けると)、dir2 の下に dir1 以下のファイル・ディレクトリをコピーする。つまり dir2/foo、dir2/foo <<<<<<<<<同様にの二項目はdir2/barではないでしょうか というファイルができる。 |
|
68userさん、はいそうです。 ここまで調べるのは苦労しませんでしたか? 私はマスタリングTCP/IP SSL/TLS編がなければ 未だに判らなかったと思います。 |
|
ただいまSLL勉強中です。このHPも参考にさせて頂いています。 つまらない質問ですが初心者の至りということでお許しください。 ネットワークプログラミングの基礎知識 >> RSA で暗号化してみよう (1)に 暗号化のサンプルがありますが、これらの作業はOpenSSLのライブラリの中で 行われている事なのでしょうか。 たとえば、ネットワークプログラミングの基礎知識 >> SSL/TLS でアクセスしてみよう (1) には暗号化の記述はありませんが実際には指定したプロトコルで暗号化が行われている と思います。どこで実装されるものなのでしょうか? |
|
>>3866 鶏 ご指摘のとおりかと思います。というわけで、修正しました。 http://X68000.q-e-d.net/~68user/unix/pickup?cp ありがとうございました。 >>3867 ニッタン > ここまで調べるのは苦労しませんでしたか? 調べるのに 3日かかってますので、苦労しました。 でも、なぜ RAND_poll() したらエラーにならないのかいまいち わかっていません (別にこれがわからなくても構わないんですが、 気になるもので)。 >>3868 jeiu > どこで実装されるものなのでしょうか? OpenSSL のライブラリの中です。 SSL/TLS はクライアントが利用可能な暗号 (正しくは暗号スイート) を 提示し、サーバがその中から選びます。よって常に RSA が使用される わけではありません (DH を使う場合もある)。 で、暗号スイートを提示したり、RSA で暗号化・復号化したり、 DH で鍵交換したり、プレマスターシークレットを送ったり、 ということはすべて OpenSSL のライブラリ中で記述されています。 |
|
>調べるのに 3日かかってますので、苦労しました。 でしたら、やはりお持ちのマスタリングTCP/IP SSL/TLS編を 辞書的に使いながら追いかける方がいいかもしれませんよ。 >でも、なぜ RAND_poll() したらエラーにならないのかいまいち わかっていません 結局、RAND_poll()内で乱数の種をプロセスIDや/dev/randomなどを使って作成して RAND_add()しているからだと思います。 RAND_seed()も結局、RAND_add()をしていますし。 |
|
>>3870 ニッタン /dev/random や /dev/urandom がない環境ではエラーになるが、 RAND_poll() を呼ぶとうまくいくと。 ということはおそらく RAND_poll() を呼ぶと http://snapshots.jp.freebsd.org/tour/current/userland/S/7348.html#145 に処理が移ると思います。 # このソースは OpenSSL 0.9.7d です。 ここでは /dev/random や /dev/urandom を読んでいろいろやって ますが、/dev/random や /dev/urandom がない環境なので、結局は unsigned long l; l=curr_pid; RAND_add(&l,sizeof(l),0); l=getuid(); RAND_add(&l,sizeof(l),0); l=time(NULL); RAND_add(&l,sizeof(l),0); だけが実行されると思います。ここで 第三引数の entropy には全て 0 を 渡しています。 RAND_add を呼ぶと ssleay_rand_add が呼ばれ、 http://snapshots.jp.freebsd.org/tour/current/userland/S/7341.html#190 が実行されます。 if (ok) return(1); else RANDerr(RAND_F_SSLEAY_RAND_BYTES,RAND_R_PRNG_NOT_SEEDED); とあるのがエラーになっている箇所かと思います。つまり RAND_poll() を 呼ぶと ok が真になり、RAND_poll() を呼ばないと偽になる、と。ここで ok とは何かというと ok = (entropy >= ENTROPY_NEEDED); です。ENTROPY_NEEDED は ./crypto/rand/rand_lcl.h:#define ENTROPY_NEEDED 32 /* require 256 bits = 32 bytes of randomness */ なので、entropy <= 32 なときに RPNG_NOT_SEEDED でエラーになる。 逆に言えば、RAND_poll() を呼ぶと entropy >= 32 になるためうまく いくようになる、ということです。しかし entropy を増やしているのは entropy += add; しかないような気がします。でも、add は RAND_add() の第三引数で、 今回はすべて 0 が渡されています。よって、 entropy += 0; となるわけです。それなのになぜ entropy が増えて >=32 になるのか わからないなぁ、といったところで止まっています。 「マスタリングTCP/IP SSL/TLS編」は調べましたが、内部構造には 触れていようで見つけられませんでした。もしどこかに載っていたら 教えてください。 |
|
>>3872 68user 続きです。 こちらには /dev/random・/dev/urandom が存在しない環境がないため、 FreeBSD で OpenSSL のソースをいじって、無理矢理 /dev/random・ /dev/urandom が存在しない状況を作ってみました。その結果、 PRNG not seeded なエラーが発生しました。 しかし SSL_connect() の直前に RAND_poll() を挿入しても、同じく PRNG not seeded となりました。そこで確認させていただきたいのですが、 >>3845 ニッタン > SSL_connect()するまでに以下の関数のどれかを使うと良い様です。 > 3、RAND_poll() > 一番楽なのは3を使うのが楽ですし、一般的で確実かもしれません。 はそちらの環境では正常に動作しているのですよね? |
|
回答ありがとうございます。 もうひとつ教えてください。 >SSL/TLS はクライアントが利用可能な暗号 (正しくは暗号スイート) を >提示し、サーバがその中から選びます。よって常に RSA が使用される >わけではありません (DH を使う場合もある)。 クライアントから提示する暗号方式とはなにをもとに決められるのでしょうか? たとえば、SSL V2に対応したアプリケーションとかV3に対応した アプリケーションとかで決まることなのでしょうか? または、Open SSL等で自力でSLLを実装するような場合は、対応できる暗号方式が 特定される(できる?)のであれば、それだけでは決まらないような気もしますが...。 |
|
>>3873 jeiu > クライアントから提示する暗号方式とはなにをもとに決められるのでしょうか? クライアント作成者が勝手に決めます。例えば 3DES と RC4 はいいけど DES は暗号強度が気に入らないから使わないとか、MD5 より強固な SHA-1 を 使うとか。 OpenSSL であれば SSL_CTX_set_cipher_list() を使って好きな暗号 スイートをセットすればよいでしょう。 暗号スイートは具体的には http://www21.ocn.ne.jp/~k-west/SSLandTLS/rfc2246-Ja.txt の TLS_RSA_WITH_3DES_EDE_CBC_SHA TLS_DH_anon_WITH_3DES_EDE_CBC_SHA などを指します。 上記 RFC の ClientHello がクライアントからの暗号スイートの提示、 ServerHello がサーバからの暗号スイート決定通知、です。 > または、Open SSL等で自力でSLLを実装するような場合は、対応できる暗号方式が > 特定される(できる?)のであれば、それだけでは決まらないような気もしますが...。 これは意味がわかりませんでした。 |
|
誤解を招くような書き方をしてしまいました。 申し訳ありません。 まず、RAND_poll()はRAND_byte()やRAND_status()の始めての呼び出しの際に 一度だけ呼ばれていると思われます。 RAND_poll()内では/dev/random・/dev/urandomを使用して 乱数の種を作っています。 /dev/random・/dev/urandomが存在しない環境でも 上記の様にRAND_poll()は呼ばれていますが、 No.3871の通り 乱数の種は作られません。 そこで、RAND_poll()を自前で呼び出しても同じ結果になります。 つまり、RAND_F_SSLEAY_RAND_BYTES,RAND_R_PRNG_NOT_SEEDEDのエラーが 発生した時は RAND_poll()で乱数の種を作成するのに失敗しているので、 自前で乱数の種を作らないといけない と言った説明を追記して頂ければいいと思います。 自前で乱数の種を作るのが 1、RAND_load_file() や 2、RAND_seed() と言う訳です。 貴重な時間を割かせてしまいまして、申し訳ありませんでした。 |
|
>>3875 ニッタン 更新しました。長らくお待たせしてすいません。 http://X68000.q-e-d.net/~68user/net/ssl-1.html 詳しく説明しようとして、ドツボにはまった感がありますが、 いかがでしょうか。 RAND_status を呼べばその中から RAND_poll が呼ばれるのですが、 あえて RAND_poll を呼んでいるのは、マニュアルに書いてないこと はなるべく前提としないでおこう、という方針だからです。 最初のサンプルプログラムがこれではわかりづらすぎるかなぁ。 |
|
ありがとうございます。 色々と勉強したので、私には理解できますが、 今後、初心者が読んだ場合に理解できるかはどうかは、 この掲示板にでも書き込んでくれる事を期待して、 この話題は一旦終了しましょう。 >最初のサンプルプログラムがこれではわかりづらすぎるかなぁ。 結局、/dev/randomがない環境では、種を作らないとエラーになるので 仕方ないと思います。 一応、/dev/randomがある環境では必要ないと補足してありますし。 今までありがとうございました。今後も参考にさせて頂きます。 |
|
>> または、Open SSL等で自力でSLLを実装するような場合は、対応できる暗号方式が >> 特定される(できる?)のであれば、それだけでは決まらないような気もしますが...。 >これは意味がわかりませんでした。 わけのわからない質問をしてすみません。 聞きたかったのは、クライアントが決める暗号化方式はどこで定義するのか? とういうことでした。 あるHPでは、「暗号化に関する特許などが絡んでいるため、わけのわからないものは コンパイルオプションを使って使用しないほうがよいでしょう」と書かれていたり、 ちょっと混乱状態です。 も少し勉強が必要かなと思います。 |
|
68user殿 No.3874の >OpenSSL であれば SSL_CTX_set_cipher_list(ctx,ciphers) を使って好きな暗号 >スイートをセットすればよいでしょう。 のciphersには具体的にはどのような設定をすればよいのでしょうか? いずれにしても、どの暗号化方式を利用するかは上記のようにプログラミング依存 ということになるんでしょうか?(とすると、No.3878にも書かせていただきましたが 「コンパイルオプションを使って...」は何を意味するのでしょう。ご存知でしたら教 えてください)。 |
|
>>3879 jeiu > ciphersには具体的にはどのような設定をすればよいのでしょうか? 概念は 3874で書いたとおり > 例えば 3DES と RC4 はいいけどDES は暗号強度が気に入らないから使わない などです。 ソースでどう書くかという意味なら SSL_CTX_set_cipher_list(ctx, "3DES:RC4"); や SSL_CTX_set_cipher_list(ctx, "ALL:-DES"); などです。書き方は OpenSSL のマニュアル ciphers(1) に載っています。 > 「コンパイルオプションを使って...」は何を意味するのでしょう。 「あるHPでは」などと曖昧なことを書かずに http://www.ryouto.jp/linux/linux_22.html とはっきり書いてください (上記の URL であってるかはわかりませんが)。 文脈を無視して一文を切り出されても、答える方は推測しなければ いけないのでつらいです。たとえば上記の web であれば config で no-rc5 no-idea と指定しているので、このページの作者は RC5 と IDEA の特許について 危惧しているのだなということがわかるわけです。クイズじゃないんです から、はっきり質問したいことを書きましょう。 IDEA については SSL/TLS 上で使えますし、普通に OpenSSL をコンパイル した場合は有効になっています。ただし FreeBSD の OpenSSL では IDEA が 使用できないようにコンパイルされていました。他の厳しめの OS (Debian とか) でも同様かと思われます。SSL/TLS で使用できるようになっているか どうかは % openssl ciphers でわかります。 RC5 は SSL/TLS で使用できる暗号スイートに入っていないので、 問題ないでしょう。 SSL/TLS ではなく、共通鍵暗号方式として IDEA や RC5 を使いたくない (openssl enc -e idea や openssl enc -e rc5 とできないようにしたい) ということであれば、上記のページのようにコンパイルオプションを 設定すればよいでしょう。使用中の OpenSSL で使えるかどうかを知りたい なら % openssl enc -h で表示される Cipher Types を見ればよいです。 なお、サーバ側で制御したいのであれば、Apache などの設定ファイルで http://httpd.apache.org/docs-2.0/mod/mod_ssl.html#sslciphersuite を設定してください。 今後質問される場合は、質問の背景と、何が知りたいのかを明確にする ことをお勧めします。 例: - SSL/TLS クライアントを作っている - 〜というページに〜という記述があり、特許を侵害してしまわないか心配だ。 - クライアント側で特定の暗号を使用しないように制御する方法はあるか? |
|
RSAもいいけど楕円曲線暗号もね。 というわけで、Rubyで素数位数の群をもつ楕円曲線を生成するスクリプトを組んでみました。 |
|
まだまだSSLを思考錯誤中です。 「SSL/TLS でアクセスしてみよう (2)」に記載されているサンプルについて 注意して頂きたい事があります。 HTTPSに接続後のサーバ証明書のsubjectとissuerを出力する部分で、 メモリーリークが発生する様です。 具体的には、 132: str = X509_NAME_oneline(X509_get_subject_name(server_cert), 0, 0); と 135: str = X509_NAME_oneline(X509_get_issuer_name(server_cert), 0, 0); の返り値strそれぞれを OPENSSL_free( str )すればメモリーリークは直りました。 OpenSSLのバージョンは0.9.7aです。 OpenSSLドキュメントを見ても該当関数の事が記載されていなかったので 内部でアロケートしているかどうかソースを追っかけないと判りませんでした。 |
|
>>3882 ニッタン > HTTPSに接続後のサーバ証明書のsubjectとissuerを出力する部分で、 > メモリーリークが発生する様です。 ありがとうございます。 The functions X509_NAME_oneline() and X509_NAME_print() are legacy functions ということなので、X509_NAME_oneline() を使うのはやめて、 X509_NAME_print_ex() に変更しました。XN_FLAG_RFC2253 に したのは特に意味はありません。 # http://x68000.q-e-d.net/~68user/net/ssl-2.html |
|
ごもっとなご意見です。いろいろ推測させてしまったようです。 すみませんでした。 68userさんの推測とおり、 ・SSL対応のWebクライアントを作っています。 ・(Open)SSLの実装では特定の暗号化ロジックを使わないようしたい。 公開鍵の暗号化としてRSAを使いたいが有効鍵ビットは512としたい 共有鍵の暗号化としてRC4を使いたいが有効鍵ビットは40としたい これまでに以下の情報をご提供いただきました。 1.使用したい暗号化ロジックは SSL_CTX_set_cipher_list()で指定 2.暗号化方式として特定のロジックを使用禁止にしたいのであれば コンパイルオプションを設定すればよい について、有効鍵ビットを意識した設定は可能なのでしょか いろんなサンプルを見ましたが、方式の設定はあっても鍵長まで意識 したものが見つかりませんでした。 また、SSL_CTX_set_cipher_list()での設定は必須になるのでしょうか。 なかなかイメージがわきません。よろしくお願いします。 |
|
>>3884 jeiu > 公開鍵の暗号化としてRSAを使いたいが有効鍵ビットは512としたい > 共有鍵の暗号化としてRC4を使いたいが有効鍵ビットは40としたい では http://www21.ocn.ne.jp/~k-west/SSLandTLS/rfc2246-Ja.txt の RSA_EXPORT_WITH_RC4_40_MD5 で決まりでしょう。RSA かつ RC4 の 40bit となればこれしか選択肢がありません。 「RSA の鍵長 512bit 以下」という要件についてですが、これは 上記 RFC の 7.4.3. ServerKeyExchangeメッセージ ServerKeyExchangeメッセージは (略) 以下の鍵交換方式で使用される。 RSA_EXPORT (サーバ証明書の公開鍵が512ビットより長いとき) (略) 注: 現在の米国輸出法では、米国から輸出したソフトウェアにおいては、512 ビットより長いRSAのモジュラスを鍵交換において使用してはならない ことになっている。このメッセージを送信した場合、証明書内に含まれ ている512ビットより長いRSA鍵は、RSA_EXPORT鍵交換方式用の、512ビット 以下の長さを持つ一時的RSA鍵に署名するのに使用される。 で自然とクリアできます。 結局、ciphers(1) に SSL_RSA_EXPORT_WITH_RC4_40_MD5 EXP-RC4-MD5 とあるので SSL_connect() の前に if ( SSL_CTX_set_cipher_list(ctx, "EXP-RC4-MD5") == 0 ){ /* error */ } という処理を入れればよいでしょう。 |
|
68userさんのサイトで勉強させてもらってます。 http://x68000.q-e-d.net/~68user/net/rfc.html こちらのページの、POPの「日本語訳」のところがリンクが失敗してる ようですので、お知らせしておきます。 |
|
>>3886 kawa > http://x68000.q-e-d.net/~68user/net/rfc.html > こちらのページの、POPの「日本語訳」のところがリンクが失敗してる > ようですので、お知らせしておきます。 修正しました。ご連絡ありがとうございました。 |
|
自前parseルーチンで以下の様な処理をしています。 foreach(split(/&/, $query)){ my($name, $value) = split(/=/, $_); 〜日本語処理とかお約束の処理〜 # %FORMに格納 if(exist $FORM{$name}){;#既に以前の$nameが有れば(2回目以降) push($FORM{$name}, $value);#@{$FORM{$name}}の配列に格納 }else{ $FORM{$name} = $value;#初めての出現ならば通常通りに格納 } } 細かい部分は省略してますが、例えば checkbox などで、 chbox1&val1&chbox1&val2&chbox1&val3 の様なデータが来た場合、 $ALL_VALUE = $FORM{chbox} . " @{$FORM{chbox}}"; として、 $ALL_VALUE = 'val1 val2 val3' となる事を確認しています。 しかしなぜか、元のデータが複数の時の動作が理解できないのですが、 自分の理解が甘いような気もするので、ぜひとも動作の解説をしもらえない でしょうか? 以下は確認用のサンプルです。2行目のコメントを外して違いを確認ください。 データの内容によって結果が違います。 変数の内容が判りやすいように print 文を入れています。 $query=qq(cbox1=1&cbox1=2&cbox1=3&cbox2=1&cbox2=2&cbox2=3); #$query=qq(cbox1=1&cbox1=2&cbox1=3&cbox2=a&cbox2=b&cbox2=c); foreach(split(/&/, $query)){ my($name, $value) = split(/=/, $_); print qq($name=[$value]\n); if(exists $FORM{$name}){ push(@{$FORM{$name}}, $value); print qq( ->push:<$name>=[$value] count:). $#{$FORM{$name}} . qq(\n); }else{ $FORM{$name} = $value; } } print qq(Result1:[$FORM{'cbox1'} @{$FORM{'cbox1'}}]\n); print qq(Result2:[$FORM{'cbox2'} @{$FORM{'cbox2'}}]\n); 無名配列が $value の内容によって識別できていないように見えます。 Windows版とLinux版のそれぞれ 5.6.1 で確認しました。 |
|
書き忘れましたが perl でのお話です。 |
|
>>3888 スナフキン $query=qq(cbox1=1&cbox1=2&cbox1=3&cbox2=1&cbox2=4&cbox2=5); foreach (split(/&/, $query)){ my($name, $value) = split(/=/, $_); print qq($name=[$value]\n); if (exists $FORM{$name}){ push(@{$FORM{$name}}, $value); print "\@{$FORM{$name}}=@{$FORM{$name}}\n"; } else { $FORM{$name} = $value; } } print "\@1=@1\n"; cbox1=[1] cbox1=[2] @{1}=2 cbox1=[3] @{1}=2 3 cbox2=[1] cbox2=[4] @{1}=2 3 4 cbox2=[5] @{1}=2 3 4 5 @1=2 3 4 5 というわけで、最初のループで $FROM{$name} には 1 が入り、 @{$FORM{$name}} はシンボリックリファレンスと解釈され、結局 @1 に push しているわけです。 結局は一度目のループとそれ以降のループを分けず、常に push(@{$FORM{$name}}, $value); すればよいと思いますが、そもそも何をやりたかったのかによりますかね。 |
|
!!!なんとなるほど!シンボリックリファレンスと解釈されたとは・・・ すばやい回答大変助かりました。ありがとうございます。 このルーチンはいくつかある他のプログラムの一部なんですが、既に$FORM{〜} でアクセスする箇所が沢山有ったので、それらを変更する事なくという部分に こだわりすぎました。 cgi-lib.pl とかを見るとparse時に \0 をセパレータにしてスカラーに入れて いますが、そうではなく同名変数の配列にぶち込んじゃおうと思ったのですが 他の方法をかんがえてみます。 |
|
超初心者の質問でごめんなさい。 コマンドを入力すると、Command not found って、表示されるんです。 スペルは間違っていないのに。何が原因なのでしょうか? また、コマンドを入力した時に、値段のような文字が、ずらっと表示される事が あります。例:\245\242\245\257\245\273\245\271\270\242\244\254\244\242。 このようなことが起きる原因は、何でしょうか? 対処方法を教えて下さい。お願い致します。 |
|
>>3892 じぇぃじぇぃ ネット上の文字のやりとりだけで環境を把握するのがちょっと大変そうですが…。 > コマンドを入力すると、Command not found って、表示されるんです。 結論から言うと、path変数が正しく設定されていないのが原因とは思いますが…。 とはいえ即解決には至れないので、まず回答にあたって次を教えてもらえますか? ・コマンドを入力するまでにどんな手順を踏むように指示されている? ・それに対しコマンドを入力するまでに実際にはどんな手順を踏んでいる? ・コマンド名は何? > コマンドを入力した時に、値段のような文字が、ずらっと表示される事があります。 これも次を教えてください。 ・使っている機器はPC? ・WindowsからTelnetやTeraTermなどを実行して開いたウィンドウで起こっている? ・それともPC上では直接Solarisやlinuxが動いていてそこで起こっている? ・機器はPCではなく大学の研究室かどこかのワークステーション? ・機器はワークステーションではなくX端末? なお、この書き込みに関係なくすでに解決した場合でも、何をどうしたらうまく できたのか、必ずここに書き込みしてください。 とりあえず今回は、質問するというだけでも一苦労だったとは思いますが、 回答する側もスムーズかつ効率的に解決する技術を習得しようとしている面も あるので、質問する側としてもその時点でわかっていることをできるだけ きちんと伝えることが大切かと思います。ぜひ実践していってください。 # まあそうは言っても、何が前提で、伝えるべき情報がどれなのかがわからなくて # 余計困っているんだとは思いますが |
|
ネットワークプログラミングの基礎知識に 「*BSD で kqueue・kevent を使ってみよう」 http://X68000.q-e-d.net/~68user/net/c-kqueue-1.html を追加しました。 >>3892 じぇぃじぇぃ > コマンドを入力すると、Command not found って、表示されるんです。 こちらもご参考に。 http://X68000.q-e-d.net/~68user/unix/pickup?Command+not+found |
|
has 様。 ご丁寧なお返事ありがとうございます。 ・コマンドを入力するまでにどんな手順を踏むように指示されている? ・それに対しコマンドを入力するまでに実際にはどんな手順を踏んでいる? →サーバーにログインして、プロンプトを表示させる。 (ここまではOK)その後、以下のような操作(コマンドの入力)を 実行しています。 nslookup www.○○○○○○.ne.jp ↓ (見つからない) ↓ find /usr/bin -name nslookup -print ↓ (見つからない) ↓ find /usr -name nslookup -print ↓ (見つからない) ・コマンド名は何? →nslookup ・使っている機器はPC? →Windows Xp |
|
追記。 ・機器はPCではなく大学の研究室かどこかのワークステーション? →自宅PCです。 ・機器はワークステーションではなくX端末? →ワークステーション・X端末とは何でしょうか?? ほんとに、まぬけな答えをしてたら、ごめんなさい。 よろしくお願い致します。 |
|
>>3896 じぇぃじぇぃ 困っている内容: Windows XPのPCから[telnet等のソフト]で[UNIX系のOS]マシンにログインし 「nslookup www.○○○○○○.ne.jp」を実行したが「Command not found」 と表示され正しく実行できない([]内は未だ不明)。 さらに教えてください。 1.nslookupが実行できない理由を調べる (ログイン先のマシンにnslookupコマンドが存在するか) (a)OSに依存しない確認 ・ログイン先のマシンはどこのもの?(学校?自宅?レンタル?) ・ログイン先のマシンでnslookupが実行できた人は?できないのは1人だけ? (b)OSを特定してどこにあるか推定 ・「uname -a」の実行結果は? 2.メッセージが正しく表示できない原因を調べる (1)文字コード種類を推定する 「\???」は3桁の8進数であり、質問されたメッセージはEUCと思われる。 (アクセス権があ) (2)リモートマシンでの言語設定を確認する 「env | grep LANG」の実行結果は? なおワークステーション・X端末については、別の機会としましょう。 我慢できなければ是非google等で調べてみてください。 |
|
>>3895 じぇぃじぇぃ findコマンドでnslookupコマンドを検索されたようですが、 ここでの「見つからない」は、findコマンドが見つからなかったのか findの結果、nslookupが見つからなかったのか判らないですね。 こういう場合は、実行ログを貼り付けた方が伝わり易いですよ。 |
|
68user殿 ご回答ありがとうございます。返事がおくれて失礼しました。 しつこいようですがまた質問をさせてください(これで最後にします)。 教えていただいた暗号スイートですが、SSL_CTX_set_cipher_listで 複数指定はできないのでしょうか(リストというからには複数できるような...)。 |
|
>>3899 jeiu > SSL_CTX_set_cipher_listで複数指定はできないのでしょうか できます。マニュアル読んでますか? >>3880 68user で複数指定する例をあげていますし、さらにそこで > 書き方は OpenSSL のマニュアル ciphers(1) に載っています。 とも書きました。ciphers(1) には The cipher list consists of one or more cipher strings separated by colons. とあります。 なのにこういう質問が出てくるのはなぜですか? |
|
不要かもしれませんが結果報告です。 受け取ったデータを一次ファイルに格納して再読み込みする仕組みだったので、 配列に格納せず他のデータをタブで区切って追加させて、再読み込み時に my($name, $value)=split("\t", $record, 2); と split オプションを追加して、複数のデータを処理させましました。 cgi-lib.pl では \0 で、この掲示板では "," で区切っているので、別の方法を と思いましたが、変更箇所を最小限にするために結局この形にしました。 リファレンスは苦手なんで敬遠してましたが、これをきっかけにまじめに勉強 しようと思います。助言ありがとうございました。 |
|
68user殿 失礼しました。 日本語訳のページをのぞいていました。 「コロンで分離する」と理解しました。 |
|
こんにちは暑中お見舞い申し上げます。 覚えているかどうかは分かりませんが 今から7年前くらいにNETで多大な迷惑を おかけしたものでございます。当時CGIって何ですか? とか言っていた私も今では大手プロバイダでシステム いじってたりします・・・。玉に誰にも聞けない初歩的(?) な事があると、何故か68user様のサイトを参考にしてしまい 頭をすっきりさせているしだいであります。ずっと変わらず 存在しているサイトというのは私にとってとても貴重な物でして 上手く言えなくて申し訳ございませんが どうもありがとうございます。これからも利用させていただきたく存じます。 掲示板の書き込み内容としてそぐわないのは重々承知でございますが 他にコンタクトをかける手段を持ち合わせておりませんもので ご迷惑をおかけいたします。 失礼いたします。ニンニン。 |
|
>>3903 かりり お久しぶりです。お元気そうでなによりです。SEGA BBS で 遊んでたのは 7年も前なんですねぇ。 > CGIって何ですか? は忘れましたが、「タバコを吸って地球温暖化になったらどう するんですか?」と言われて困ってしまったのはよく覚えています。 IT 関連の職につかれましたか。ちなみにわたしは SE なのか プログラマなのかよくわからんのですが、とりあえず Perl や C や Oracle や Pro*C や PL/SQL や Java などと たわむれる 毎日です。 「ここが間違ってる」というご指摘や「もっとここを詳しく説明しろ」 とかいうリクエストがありましたら、遠慮なくどうぞ。 |
|
「UNIX の部屋」 http://X68000.q-e-d.net/~68user/unix/ を更新しました。 |
|
>>3892 じぇぃじぇぃ その後いかがでしょうか。 >>3893 has にも書いたとおり、他の人に聞いてなんとかなったのならそれはそれで まったく構わないのですが、何をどうしたかの報告が欲しいんです。 |
|
HP-UX11.00でPerlでシェルスクリプトを書いています。 Perl4なのですが、Perlでの置換について教えてください。 不等号で囲まれた文字列「<aaa.bbb@test.co.jp>」から 不等号だけを取り除いた文字列を取り出したいのですが 上手くいきません。 -------------- #!/usr/contrib/Q4/bin/perl # $addr="\<aaa.bbb\@test.co.jp\>"; $addr=~ s/<//g; $addr=~ s/>//g; print "$addr\n"; exit 0; ---------- この場合だと、置換処理を2回行わなければなりません。 1回で終わらせたいのですがごうすればよいでしょうか。 -------------- #!/usr/contrib/Q4/bin/perl # $addr="\<aaa.bbb\@test.co.jp\>"; $To=~ s/([^<>]?)+?/$1/g; とか $addr=~ s/^<([^<>]?)+?/$1/g; exit 0; ---------- |
|
>>3907 さいさん > HP-UX11.00でPerlでシェルスクリプトを書いています。 Perl で書いたスクリプトは Perl スクリプトと呼びます。sh や csh などのシェルが解釈するスクリプトがシェルスクリプトです。 > 1回で終わらせたいのですがごうすればよいでしょうか。 perl4 で動くかどうかはわかりませんが、perl5 では以下の どれを使ってもうまくいきました。 $addr =~ s/(^<|>$)//g; $addr =~ s/[<>]//g; $addr =~ s/^<(.*)>$/$1/; $addr =~ s/<(.*)>/$1/; |
|
いつもこのHPにお世話になっている者です。 この6月に会社の社内ネット担当になり、NW1年生になりました。 今はコマンドプロンプトやらTelNetをいじりながら勉強中です。 今日も自宅に戻ってから、 Windows98環境のコマンドプロンプトでパチョパチョ叩いて勉強していました。 画面がスクロールできなく小さいなと思い、 ツールバーの画面最大化ボタンを押してみたら、大変なことに!! 最大化の画面からツールバーが表示できる術を知らず、画面が戻らなくなりました。 EXITで一度ログアウトしてから再立上してみたのですが、 最大画面のままで、、 元の画面に戻すコマンドや、又はコマンド指示以外に元に戻す方法を教えて下さい。 どうぞ宜しくお願い致します。 |
|
Windows には詳しくないので「コマンドプロンプト 最大化 戻す」で 検索したところ、 http://forum.nifty.com/fpcu/top/doslog01/0896.htm > 通常、Alt+Enter(Altキーを押しながらEnterキーを押す)で戻ります。 だそうです。試してみてください。 |
|
alt+enterはコマンドプロンプトというよりも 最大化した状態のアプリケーションを戻すようなイメージで使えます。 |
|
>>3908 68user >> 1回で終わらせたいのですがごうすればよいでしょうか。 >perl4 で動くかどうかはわかりませんが、perl5 では以下の >どれを使ってもうまくいきました。 > $addr =~ s/(^<|>$)//g; > $addr =~ s/[<>]//g; > $addr =~ s/^<(.*)>$/$1/; > $addr =~ s/<(.*)>/$1/; Perl4でも上記のどれを使っても上手くいきました。 |
|
はじめまして 最近、UNIXをさわるようになって、勉強中の身です。 このページでいろいろ勉強させて戴いています。 クーロンの設定で教えて頂きたいのですが、 (1)0 0 * * * /opt/cs/bin/logdel.sh > /dev/null 2>&1 (2)0 0 * * * /opt/cs/bin/logdel.sh > /dev/null (1)と(2)の動作の違いは、なんのなのでしょうか? 標準出力と標準エラー出力の部分を調べたのですが、イマイチ 理解できていません。 こんな質問で申しわけないのですが、ご教授願います。 |
|
はじめまして。 Apacheについて質問といいますが疑問なのですが、mod_sslを使用してssl化した場合 と、そうで無い場合で、Apache(厳密にはブラウザからの表示)が極端に遅くなると 言うことは考えられるでしょうか? 現在はDebian GNU/Linux にてApt-getでインストールしたApacheを使用している のですが、Solarisにソースコードからmod_sslを使用してssl化したApacheを 導入したところ、ローカルからの表示が極端に遅くなりました。(表示に1分以上かかる) Debian GNU/Linuxで使用時と最も違う点はssl化した点と、VirtualHostの数を2つから 4つに増やしたことの2点なのですが、あまりに遅いためお尋ねする次第です。 Solaris側のApacheはSSLを有効にしての起動ではありません。 環境は以下になります。 Debian GNU/Linux(woody)+Apache(apt-getにてインストール) Solaris9_x86+Apache1.3.31+mod_ssl 基本的に両方ともDSOを有効にし、現在は全く同じモジュールをロードして使用して います。httpd.confはVirtualHostの記述、およびSolaris側にはssl関連の記述が ある以外はほぼ同じと思われます。 また、errorlogを確認したのですが、特になにも記述はありませんでした。 何か情報等ございましたらお教えいただきたい次第です。 |
|
はじめまして。。 簡単かもしれませんが是非、識者の方のご助言をお願いします。 AIX4.3.2でlhaコマンドを利用出来るようにしたいのですが 方法を教えて下さい。 AIX4.3.3では利用できるものを見つけたのですが、、、 宜しくお願いします。 |
|
はじめまして。 68user様のPerlでFTPクライアントを作るページを参考にさせていただき、 FTP転送するプログラムを書いたりしています。 その中でFTPコマンドの NLST のレスポンスで 550 が返ってくるかどうかで ファイル存在チェックなどしたりしているのですが、 最近、OSをLinuxのRedHat7JからRedHat9へ変えた所、 FTPサーバが vsftpd-1.1.3-8 になり、NLST の結果が 5 で始まらない結果しか 返って来なくなりました。 Windows2k付属ftpのデバッグモードでサーバレスポンスを見ると次のような感じです。 ftp> ls aaa ---> PORT ###,###,###,###,###,### 200 PORT command successful. Consider using PASV. ---> NLST aaa 150 Here comes the directory listing. 226 Directory send OK. ftp> ※aaaは適当な存在しない適当なファイル名です。 これを見る限り vsftp サーバ側の反応が前と異なるということですよね。 この為ファイルの存在チェックができなくなってしまいました。 私の思いつく対策としては、 1.レスポンスコード(550)で判別ではなく、データポートに入ってくる値で存在チェックに変える。 2.NLST でなく quot SIZE や quot MDTM で判定(この場合 * ワイルドカードが使えなくなります) 3.vsftp のソースから変えてコンパイルする。 (該当個所がみつかるかどうか、変えて他に影響がないかどうかが問題です) 4.wuftp に戻す。 やっぱりワイルドカードは使いたいので4が一番手っ取り早いでしょうか。 サーバ側のconfファイルの設定などで前のNLSTのレスポンスに戻せたら一番いいのですが、 マニュアルを見た感じでは無理そうですし(英語は苦手なので間違いがあるかもしれませんが) サーバのレスポンスが変わってしまった理由や本来はどうあるべきなのかなど なんでもいいですので、この件についてご意見をお聞かせ願いたいと思います。 よろしくお願いします。 |
|
早速ご返答頂きまして、まことに有り難うございます。 実行したところ、最大化した画面が戻りました。 (もう一回実行すると最大化しました。) とても助かりました有り難うございます。 これからも宜しくお願い致します。 -------------------------------------------------------------------------------- No. 3911 # sorame 2004/08/04 (水) 00:56:13 alt+enterはコマンドプロンプトというよりも 最大化した状態のアプリケーションを戻すようなイメージで使えます。 -------------------------------------------------------------------------------- No. 3910 # 68user 2004/08/03 (火) 23:07:49 Windows には詳しくないので「コマンドプロンプト 最大化 戻す」で 検索したところ、 http://forum.nifty.com/fpcu/top/doslog01/0896.htm > 通常、Alt+Enter(Altキーを押しながらEnterキーを押す)で戻ります。 だそうです。試してみてください。 |
|
>>3913 初心者 > (1)0 0 * * * /opt/cs/bin/logdel.sh > /dev/null 2>&1 > (2)0 0 * * * /opt/cs/bin/logdel.sh > /dev/null (1) は標準出力と標準エラー出力を /dev/null に捨てます。 (2) は標準出力だけ /dev/null に捨てます。 cron とからめて考えると、(実装にもよるでしょうが) 標準出力に 出力されたものはメールで通知、標準エラー出力への出力はログに 記録されるので、メールで通知せず、ログにも記録しない場合は (1) がよいでしょう。 なお、> /dev/null 2>&1 は 1>/dev/null 2>&1 と等価であり、 - 2>&1 で 2 (標準エラー出力) を 1 (標準出力) に - 1>/dev/null で 1 (標準出力と標準エラー出力) を /dev/null に と考えるとわかりやすいかもしれません。 >>3914 立神梢一 とりあえず Solaris9_x86+Apache1.3.31 だけで試してみるべきでしょう。 もしそれが遅ければ名前解決が原因かも、などと切り分けられるので。 後は LogLevel や SSLLogLevel を debug にして、どこで止まっているのか 確認してみるのもよいかもしれません。 >>3915 いはら > AIX4.3.2でlhaコマンドを利用出来るようにしたいのですが よくわかりませんが、AIX4.3.3 の lha はどうやって入手したのですか? AIX は知りませんが、フリーソフトのバイナリを配布しているサイトが あるのならそこから入手、なければソースからコンパイルとなるでしょう。 http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/ というのがありますが、どの程度信用できるサイトなのかはわかりません。 >>3916 コノテガシワ > FTPサーバが vsftpd-1.1.3-8 になり、NLST の結果が 5 で始まらない結果しか > 返って来なくなりました。 > サーバのレスポンスが変わってしまった理由や本来はどうあるべきなのかなど わかりません。ftp は実装依存部分が多く、どれが正しいのか悩む部分は多いで しょうが、調べてみても明文化された規格が存在しないというケースが多く、 わたしは深く考えないように努めています (世の ftp クライアントの作者の 方々はよくやるよなぁと感心します)。 例えば最近の ProFTPD なぞ NLST のオプションを弾くようになりましたし。 http://www.miloweb.net/pastbbs/0008/2281.html 対処は目的にもよりますが、汎用的なつくりを優先させるなら レスポンスコード (550) で判別し、もしエラーでないならデータポートに 入ってくる値で存在チェックする がよいと思います。自分用のお手軽ツールで、とりあえず動けばいいや的な考えで あれば、それこそ一番お手軽と思う方法がよろしいかと。 |
|
>> 3918 ご返答ありがとうございます。 他のサイトでもFTPクライアントのトラブルも拝見してきました。 どうやらサーバによって NSLT に使えるパラメータやそのレスポンスが違うのは、 RFC に定められた動き以外は FTPD(サーバプログラム)独自の+α機能 ということのようですね。(違っていたらご指摘下さい) だから、クライアントを作る人も応用が利くように 色んなサーバを調べて対応した方が良い物が出来るということですね。 今回の場合、実はあるプロジェクトの開発用のマシンでの話でした。 開発環境だから本番と同じにした方がいいかもしれない・・・ でも、今後のことを考えると新しいOSで新しいFTPサーバでも 対応した存在チェックが出来るようにした方がいいかもしれない・・・ と少し悩んでいました。 今回の場合、それほど汎用的な作りを重視する必要は無いのですが、 自分の技術向上のためにも汎用的な作りにする方向で検討してみます。 ありがとうございました。 |
|
回答ありがとうございました。 > > AIX4.3.2でlhaコマンドを利用出来るようにしたいのですが > よくわかりませんが、AIX4.3.3 の lha はどうやって入手したのですか? レスして頂いた内容のサイトより入手しました。 > AIX は知りませんが、フリーソフトのバイナリを配布しているサイトが > あるのならそこから入手、なければソースからコンパイルとなるでしょう。 > http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/ > というのがありますが、どの程度信用できるサイトなのかはわかりません 頑張って捜してみます。 |
|
ご回答ありがとうございました。 >>とりあえず Solaris9_x86+Apache1.3.31 だけで試してみるべきでしょう。 ですよね。 ただ、現在のところどうもDNS関連での名前解決の問題っぽいです。 ローカルではDNSを立てていないため、その辺も関連しているのかなという感じです。 クライアントマシンをサーバーのhostsファイルに記述していないのでそれも無関係で はないかもというところです。 というわけで現在作業中です。解決もしくは問題の切り分けができましたら、 またご報告に参上したいと思います。ありがとうございました。 |
|
はじめまして、少し教えて欲しいのですが、ルータの設定画面などにアクセスする際にポップアップで 表示される認証を自動的に行えないでしょうか?少し古いルータを使ってまして、接続先を自動的に切 り替えるプログラムを作りたいのですが。 |
|
初めまして。質問があります。 僕は掲示板で書き込みをしていたら、まったく同じIPの方がいて、その方にとっても ご迷惑をかけてしまいました。 そこで質問です。 同じIPがあるのって、不可能なんですか?? |
|
初めまして。UNIXのみならず、ネットワークについて色々お世話になってます。 NW内で近いコンピュータと通信するというエニーキャストアドレスが在りますが、 何を以って【近い】というのか解りません。 部の勉強会で、近いとは遅延のことか?と発言したところ、 次回発表に「CSMA/CDのキーワードで、NW内近いというものを発表しろ」と 課題が出されました。 調べたところ、CSMA/CDの他、CSMA/CA、ホットポテトルーティング、近隣探索機能(v6)等々出てきました。 しかし、何を以って近いと言うのか、よく解っていません。 ・NW内で【近い】とは何か? ・CSMA/CD、CSMA/CA、ホットポテトルーティング、近隣探索、がどのような仕組みか? 上記について、参考になる資料やサイトがあれば是非とも教えて下さい。宜しくお願い致します。 |
|
どうも初めまして。ネットワークプログラミング始めたばかりの者です。 ちょっと前までは決まりきったものだと特に気に止めずに流していたのですが、 connect()関数の第2引数が connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) というふうに普通していますが、どういう意味なんでしょうか? servaddrのアドレスさえ渡してやればいいように思うのですが。(ん?その前にC言語の 文法がまだ完全に理解できていなのかも?)servaddr構造体のアドレスをsockaddr構造体 のポインタでキャストしてる?なんかよく分かりません。 助言をお願いします。 |
|
>>3922 社長の猿 おそらく BASIC 認証と呼ばれるものだと思いますので、 >>2612 68user を参考にしてください。 >>3923 優 proxy サーバを経由しないと学校や会社の外に出られない環境とか (proxy サーバの IP アドレスは 1つ)、一度 IP アドレスが割り当て られたものの、しばらくアクセスしなかったので他の人に同じ IP アドレスが割り当てられた、という可能性があります。 >>3924 ネットワーク1年生 わたしはネットワークの仕組みはよく知らないのですが、 > CSMA/CDの他、CSMA/CA、ホットポテトルーティング、近隣探索機能(v6) CSMA/CD・CSMA/CA は近いという概念とはまったく関係なく、LAN 内での コリジョンを防止するための仕組みだと思っています。 http://e-words.jp/w/CSMA2FCD.html http://e-words.jp/w/CSMA2FCA.html ホットポテトルーティングはわかりません。Anycast もよくわかりませんが、 どこが違いかどうかはルータが判断するものではないかなぁと思っています (末端のアプリが判断する必要はない)。で、ルータがどういう基準で近さを 判断しているかはわかりません。 >>3925 hex > servaddrのアドレスさえ渡してやればいいように思うのですが 根本的にはその通りです。ただ、connect(2) は struct sockaddr_in の アドレスを受け取ったり (インターネットのアドレスの場合)、struct sockaddr_un のアドレスを受け取ったりしなければいけません (UNIX ドメインのアドレスの場合)。 しかし C 言語ではいろいろな型を受け取る関数を作ることはできないため (Java や C++ のように関数のオーバーロードができないため)、struct sockaddr という汎用的な構造体を定義し、それにキャストすることで connect(2) に struct sockaddr_in も struct sockaddr_un も渡せるようにしています。 まぁ C の言語上の制約を回避するための汚い手ですね。コンパイラに警告を くらってもいいなら、キャストなしでも動くと思います (C++ でなく C を使って いるならば)。 |
|
>>3921 立神梢一 だいぶ時間が空いてしまいましたが、sslをはずしてコンパイルしてみましたが 変化なく、その後名前解決をもう一度見直したところどちらの状態(ssl有り/無し) でも問題ない速度で動作しました。やはり名前解決周りだったようです。 ご報告が遅くなりました。ありがとうございました。 |
|
/etc/passwdファイルからグループIDがゼロになっているユーザを出力する場合、 「grep ':00*:' /etc/passwd」とすると rootだけが以下のような内容で引っかかります。 「root:x:0:1:Super-User:/:sbin/sh」 しかし、何故これがひっかかるのかがわかりません。 grepの条件で「:00*:」としているのに、なぜこれを含んでいないrootの 行がひっかかるのでしょうか?ご存知の方、教えていただけませんでしょうか。 OSはSolaris7を使用しています。 |
|
/etc/passwdファイルからグループIDがゼロになっているユーザを出力する場合、 「grep ':00*:' /etc/passwd」とすると rootだけが以下のような内容で引っかかります。 「root:x:0:1:Super-User:/:sbin/sh」 しかし、何故これがひっかかるのかがわかりません。 grepの条件で「:00*:」としているのに、なぜこれを含んでいないrootの 行がひっかかるのでしょうか?ご存知の方、教えていただけませんでしょうか。 OSはSolaris7を使用しています。 |
|
>>3929 yoshitani > grepの条件で「:00*:」としているのに :00*: は、 コロンがあって、その後に 0 があって、その後に 0個以上の 0 があって、その後にコロンがある という正規表現ですので、 > 「root:x:0:1:Super-User:/:sbin/sh」 の :0: の部分にマッチします。 GID が 0 のものを引っ張りたいなら、 % grep ':[0-9][0-9]*:0:' /etc/passwd % awk -F: '$4~/^0$/ {print}' /etc/passwd などとすればよいかと思います。 |
|
>>3924 ネットワーク1年生 ネットワーク的に近いとは同一ネットワーク内のことを指します。 まぁ、普通ならルーターを挟まない通信と言うこと |
|
>>3930 68user ありがとうございました。 正規表現、もっと勉強してみます。 |
|
はじめて書き込みをさせていただきます。たろーと申します。 OpenSSLで単純なHTTPSクライアントのプログラミングをしているのですが、 SSL_connect(ssl)関数のタイムアウトの設定の仕方がわかりません。 もしご存知でしたら、教えていただけないでしょうか。 宜しくお願いします。 |
|
>>3933 たろー > SSL_connect(ssl)関数のタイムアウトの設定の仕方がわかりません。 関数名しか見てませんが SSL_set_timeout や SSL_CTX_set_timeout じゃ ないですかねぇ。ぜひ結果を教えてください。 |
|
こんばんは。TSURUです。 久しぶりです。 また、皆さんのお力を貸して欲しいと思います。 sendmail を久しぶりにコンパイルしようとしたのですが、 以下のようなメッセージが大量に出力されてしまい、コンパイル できません。 unknown flag -lang-c unknown flag -Asystem(unix) unknown flag -Asystem(svr4) unknown flag -Acpu(sparc) unknown flag -Amachine(sparc) 環境は、以下のとおりです。 OS : Soraris 2.5.1 sendmail : sendmail-8.12.11 以前は問題なくコンパイルできていたのですが、久しぶりに実行したら、いきなり コンパイルできなくなってしまいました。環境は、以前と特に変えていません。 コンパイラは gcc ですが、かなり古いです。 % l /usr/local/bin/gcc -rwxr-xr-x 1 root other 118928 9月 1日 1996年 /usr/local/bin/gcc* コンパイラが古いとコンパイルできなくなるということはあるのでしょうか? ちなみに、sendmail だけでなく、UW-IMAP など他の製品をコンパイルしようとした 時にも、同様な現象となります。 gcc が正しくインストールされていないのが原因なのでしょうか?(だとしても、 以前は正常にコンパイルできていました。) どなたか、解決方法を教えていただきたいと思います。 よろしくお願いします。 |
|
以下のカンマで区切られたデータをフィールド1をキーにして、フィールド3を 1行に編集しようとしたのですが、処理が終了してくれません。 無限ループの状態になってしまいます。 上手くファイルの終了を判断していません。 ファイルの終わり(EOF)を判断するにはどうしたらできますか。 --データ-------------- A001,商品番号,0001 A001,商品番号,0002 A001,商品番号,0003 A002,商品番号,0001 : : Annn,商品番号,0001 Annn,商品番号.0002 --結果-------------------- A001,0001,0002,0003 A002,0001 : : Annn,0001,0002 ---------------------------------- #!/bin/sh # SORT_FILE="/tmp/sort_csv.log" OUT_FILE="/tmp/kekka.log" rm ${OUT_FILE}* > /dev/null 2>&1 echo "*** start ***" awk -v OUT=${OUT_FILE} -F"," ' BEGIN { count = 0+0 ; output=sprintf("%s",OUT) ; } function edit_proc() { cnt = 0+1 ; dumy = $1 ; printf("%s",$1) >> output ; while( NF>0 ) { if (dumy != $1) { printf("\n") >> output ; dumy = $1 ; printf("%s",$1) >> output ; cnt++ ; } printf(",%s",$3) >> output ; getline ; } printf("\n") >> output ; return cnt ; } { count=edit_proc() ; } END { close(output) ; printf("syori count [ %d ] ken\n",count) ; }' ${SORT_FILE} echo "*** end ***" |
|
>>3931 MERCY MERCYさま。ご回答有り難うございます。お礼が遅くなってごめんなさい。 これからもその他、下らないことで質問すると思われますので、 是非とも宜しくお願い致します。 有り難うございました。 |
|
>>3926 68user 管理者さま。大変お世話になっております。 くだらない質問にも、いつも一番にご回答下さり大変嬉しいです。 本当に有り難うございます。 >> CSMA/CDの他、CSMA/CA、ホットポテトルーティング、近隣探索機能(v6) >CSMA/CD・CSMA/CA は近いという概念とはまったく関係なく、LAN 内での >コリジョンを防止するための仕組みだと思っています。 はい。まさにその通りでした。。 課題を出した上司はNWがどの様に通信しているのかを勉強させたく、 CSMA/CD・CSMA/CAの課題を持ち出したものでした。 コリジョン防止がNW内通信の速さだと思っていた先輩が誤って、 「NW内の近さ」と関連付けアドバイスしてくれたものですから混乱してました。 「UNIXと言うものが、サーバ向が主体」とどこかで思っているので、 こちらでNWの質問までしてしまって申し訳けございませんでした。 とにかく本当に有り難うございました! |
|
はじめまして。 よろしくお願いいたします。 現在HP-UX11.00、Bシェルでログの監視ツールを作っています。 早速質問させていただきたいのですが、 たとえば、以下のようなログがあったとします。 ------------------------------------------ 1:I have a error. You have a worning. 2:I have a worning. You have a error. ------------------------------------------ 変数にワイルドカードを使用して ------------------------------------------ pattern="*error*worning*" ------------------------------------------ とパターン定義しておいて、ログファイルを一行ずつ読み込み この場合ですと、一行目のみ出力させるということは可能でしょうか? 現在 ------------------------------------------ message=`echo $line | sed -n /$pattern/p` if [ "x$message" = "x" ] ; then exit 0 else echo $message exit 1 fi #($lineはログファイルの読み取り行) ------------------------------------------ というようなことが、やりたいのですが、うまくいきません。 ご教授のほどお願いいたします。 |
|
>>3936 一人 こんな感じでどうですか? ------ awk 'BEGIN { FS=","; dummy=""; } { if ( $1 != dummy ) { if ( NR > 1 ) printf "\n"; printf "%s,%s",$1,$3; dummy=$1 } else { printf ",%s",$3 } } END { printf "\n"; }' infile ------ >>3939 カトウ pattern='.*error.*worning.*' では駄目ですか? |
|
>>3940 zsh ありがとうございます。 上手くいきました。 こんな簡単な方法でできるのですね。 考えすぎですね。 |
|
>>3935 TSURU > sendmail を久しぶりにコンパイルしようとしたのですが、以下のような > メッセージが大量に出力されてしまい、コンパイルできません。 http://mm.apache.or.jp/pipermail/apache98-99/1999-August/001431.html のスレッドを参考にしてください。 gcc をインストールしなおさないといけないのか、PATH の設定次第で何とか なるものなのかはわかりません。 > コンパイラが古いとコンパイルできなくなるということはあるのでしょうか? あります。しかし今回は環境の問題でしょう。 >>3939 カトウ > message=`echo $line | sed -n /$pattern/p` 質問内容とは関係ありませんが、$line にワイルドカードなどが入っていると シェルが展開してしまうので、ログ内容をシェル変数に格納するやり方はお勧め しません。 |
|
始めまして、こんにちは。 UNIX講習を受けてから5年以上も経つのに、ほとんど初心者です。 基本的な質問ですみません。 tar xvf *.tar で展開して、ファイル情報を表示させたとき、 その内容をファイルに落とすにはどうしたらいいでしょうか? この展開ですべてのファイルがきちんと展開されたか確認したいのです。 (実は1つだけ展開されていない・・・) 本当に、基本的な質問ですみません。 よろしくお願いいたします。 |
|
初めまして。ポチ公と申します。 ネットワークの勉強中ですがちょっと質問があります。 今、httpの仕組みを勉強中でこちらのサイトにたどり着きました。 以下のページで公開されているtcpdump-filter.plで ttp://x68000.q-e-d.net/~68user/net/tcpdump.html 書かれていたとおりに実行して 見事パケットが整形されて表示されました。 以下のようなコマンドです。 tcpdump -l -s 1600 -x -i lo0 | tcpdump-filter.pl | grep http >> packet.txt xxx.com/ HTTP/1.0 Accept: image/gif, image/x-xbitmap, xxx.com/ HTTP/1.0 Accept: image/gif, image/x-xbitmap, xxx.com/ HTTP/1.0 Accept: image/gif, image/x-xbitmap, zation Required ... それで思ったのですが、どうもログを見ると 先頭の3行くらいが全て省略されているようでした。 環境はredhat9/perl5.8です。 何故、先頭の数文字が省略されているのが 疑問でしたので、投稿してみました。 もし何か解りましたら教えて頂けたら幸いです。 宜しくお願いします。 |
|
>>3943 初心者? > tar xvf *.tar > で展開して、ファイル情報を表示させたとき、 > その内容をファイルに落とすにはどうしたらいいでしょうか? tar xvf *.tar > out.txt 2>&1 (sh・bash の場合) tar xvf *.tar >& out.txt (csh・tcsh の場合) とします。ただ、 > この展開ですべてのファイルがきちんと展開されたか確認したいのです。 という目的であれば、 - v オプションをつけない。これで何か出力されれば それはエラーメッセージのはず。 - tar のステータスコード ($? や $status) を確認。 エラーが発生しているならステータスコードが 1 以上のはず。 という手もあります。 >>3944 ポチ公 > それで思ったのですが、どうもログを見ると > 先頭の3行くらいが全て省略されているようでした。 すいません、ちょっと時間と気力不足により、スクリプトの 確認は後日行います。申し訳ないです。 もし正しい出力がほしいなら、tcpdump の -X オプションを 使うとか (Ethernet フレームまで出力されてしまいますが)、 ethereal や ethereal に付属する CUI の tethereal の使用を 検討してみてください。 |
|
「ネットワークプログラミングの基礎知識」の「リンク集・参考書籍」に OpenSSL - 暗号・PKI・SSL/TLS ライブラリの詳細 を追加しました。 http://X68000.q-e-d.net/~68user/net/link-book.html#4274065731 去年頃から、OpenSSL に一番詳しい日本語の解説を書くことを 目指してがんばってきましたが、夢破れました。この本がもっと 前に出ていれば、あんなことやこんなことで悩む必要はなかった のに、と理不尽な怒りすら覚えます。 今後は OpenSSL に一番詳しい日本語のサイトを目指すことにします。 |
|
お初です。 最近このHPにも大変お世話になってます。 組み込みLinuxでクレジットカードリーダーを試作することになり、 PPPでインターネット経由でサーバと通信するって感じです。 手順その他は私に任せられてたので、独自のプロトコルを考えるのが 面倒だし、ゆくゆくはセキュリティーも対策しないといけないので サーバ側をApache+modsslを使うことにしたのですが、このサイトの情報が 非常に参考になりました。クライアントソフトを解説してあるサイトは 非常に少ないので、大変助かります。 SSLサーバ認証なしで、実験ソフトが動作するところまでは行きました!! でも私のカードを使ってインターネット経由ってのは、まだ怖いので、 クライアント認証に挑戦したいと思います。 そんな記事を書かれるご予定はありませんか?(^^; (クライアント側でクライアントの証明書をリストに追加するだけの ような気がしてますが・・・) これからもがんばってください。 |
|
>>3947 だんだん 書く気はありますが、もし書く場合は「クライアント認証とは何か」 から始めるつもりなので、いつ書きあがるかは何ともいえません。 要は SSL_CTX_use_certificate_chain_file() などを使ってクライ アント証明書を使えばいいわけですが、詳しいやり方は >>3946 68user の本に書いてあります。 また、概念からして怪しい場合は、 - 自前で CA (認証局) をたてる - クライアントが CSR (証明書発行要求) を作成する - それを受けて CA が証明書を発行する - IE などのブラウザに証明書を組み込む としてまず理解を深めることをお勧めします (ここらへんの手順は 検索すればたくさん見つかります)。 |
|
はじめまして。 UNIX の部屋 -> コマンド -> cpp にて、 型の別名の定義方法で typedef MYCHAR_P char *; が正しいと紹介されていますが、これは typedef char *MYCHAR_P; の間違いではないでしょうか? |
|
>>3949 T.Kobayashi > typedef char *MYCHAR_P; > の間違いではないでしょうか? ごもっともであります。修正しました。 http://X68000.q-e-d.net/~68user/unix/pickup?cpp ご指摘ありがとうございました。 |
|
はじめまして。 いつもコマンドの参考にさせて貰っております。 説明している数や例がわかりやすくて重宝してます。 大した事ではありませんが、気になった部分を2点ほど ■いずれも【TOP >> UNIX の部屋 >> ジャンル別コマンド一覧 >> vi】にて 1.「h 1文字左に移動」がリストからはみ出ています。 2.「編集モード中に"ESC"」=「編集モードに移行」 であれば、リストに入れてはいかがでしょうか。 リストにあれば、閲覧2度目以降の人はそれだけ参考にすればよいので見やすいかと。 (個人的にですが) |
|
はじめまして。 ソケット通信について教えてください。 Severプログラムでクライアントから ConnectしてきたクライアントがClose処理を行ったかわかりますでしょうか? Connect時は、接続元のIPアドレス・ポートがわかると思いますが クライアントがCloseを行ったかどうかを知りたいのですが? よろしく御願いいたします。 |
|
>>3951 ほんたか ご意見ありがとうございます。 > 1.「h 1文字左に移動」がリストからはみ出ています。 これは HTML 生成スクリプトの不具合で、認識しているの ですが、美しい直し方はないかなぁと考えているところです。 いましばらくお待ちください。 > 2.「編集モード中に"ESC"」=「編集モードに移行」 > であれば、リストに入れてはいかがでしょうか。 ごもっともです。そのように修正しました。 http://X68000.q-e-d.net/~68user/unix/pickup?vi >>3952 shima > ConnectしてきたクライアントがClose処理を行ったかわかりますでしょうか? 簡単に言うと (shutdown の存在を除外して言うと)、サーバが read してクライアントから 0 か SIGPIPE が返ってこれば、 クライアントが close を行ったか、クライアントプログラムが 終了した (close or exit or core dump) ということです。 ただしクライアントのマシンが落ちたり、ネットワークケーブルが 切断された場合は… read が ETIMEOUT を返すんでしたっけ? この辺 あやふやなので、間違ってたらご指摘ください>誰となく |
|
初めまして、 ここのサイトの主旨にあった質問かどうかわからないのですが、 質問させて頂きます。 今、開発作業を以下の構成で実施しているのですが、 Webサーバ:Netscape-Enterprise/3.6 SP3 ブラウザ:Internet Explorer 5.5 SP2 Internet Explorer 6.0 言語:Server Side JavaScript(Livewire) ※サーバ側で動作するJavaScript言語です。 正常にHTML画面が表示されているのに、 パケットの最後に、"400 Bad Request"が入ってしまい、 次の画面で、 "あなたのブラウザがサーバに送ったリクエストはサーバが理解できないリクエストです" のエラー画面が表示されてしまいます。 この現象は必ず発生するわけではなく、 2人のひとが同時に同じ作業をした場合にも、 片方の人は発生し、もう片方の人には発生しないことがあります。 (パケットの例) : </HTML> HTTP/1.1 400 Bad Request Server: Netscape-Enterprise/3.6 SP3 ............ ただ、この問題は Netscape Navigater Ver7.1 では発生せず、 また IE の設定を、 「HTTP 1.1を使用する」 → 「HTTP 1.1を使用しない」 に変更するとこちらも問題が発生しなくなります。 そして、telnet を使用しリクエストした場合には、 必ずこの形(Bad Request)で出力されています。 プロトコルかNetscapeサーバが原因と考えているのですが、 うまく問題を切り分けることができません。 わかるかたがいましたら、すみませんがご教授願います。 |
|
> 3948 . 68user > 要は SSL_CTX_use_certificate_chain_file() などを使ってクライ > アント証明書を使えばいいわけですが、詳しいやり方は あっさり動作しました。 ご指摘ありがとうございます。 |
|
>>3954 則巻せんべい そういう事象は知らないので何とも言えませんが、とりあえず ethereal などで IE5.5 と NN7.1 のそれぞれのリクエストと レスポンスを観察してみることをお勧めします。 |
|
お久しぶりです。 その節はお世話になりました。 現在、再びSSLの改造に着手しています。 OpenSSLを使用してクライアントからサーバに HTTP KEEP ALIVE(パーシステントコネクション)を行いたいのですが、 上手く行きません。 HTTPリクエスト時に Getで最初と異なるHTMLファイルを指定し、 Connection: Keep-Alive を要求した後に、 SSL_read()をしても異なるHTMLファイル を読み込む事ができません。 ちなみに、平文のhttpでは読み込む事が出来たのですが、 この辺りの情報が皆無に近くて苦労しています。 OpenSSLの場合は何か特別な事を行なわないと実装できないのでしょうか? 参考URLや書籍など、ご存知な方が居られましたら ご教授下さい。 |
|
>>3957 ニッタン > OpenSSLの場合は何か特別な事を行なわないと実装できないのでしょうか? 特にないと思っています。 https://www.rsasecurity.com/ と https://www.rsasecurity.com/solutionsPrimary.asp を keep-alive で読むサンプルを http://x68000.q-e-d.net/~68user/tmp/https-client-keep-alive.c に置きました。 このサンプルではレスポンスに </html> が含まれていればレスポンスの 受信が完了したものとみなして次のリクエストを送信する、という手抜き処理を していますが、本来は Content-Length の値などを見るべきです。 |
|
バンガードです。 以下の機能の実現方法が分からず困っています。 --------- rep_file ------------ $SERVER1 $SERVER2 $SERVER3 ------------------------------- 上記のファイルが存在する状態で、以下の定義を行います。 ------------------------------- SERVER1="server01" SERVER2="server02" SERVER3="server03" ------------------------------- この状態で、rep_fileを読み込み各行が表す変数の中身(server01,server02,server03) を表示させたい。 以下のスクリプトを組んで見ましたが、 -------------------------------- while read REP do echo \$$REP done < $REP_LIST -------------------------------- 結果は以下の通りでした。 -------------------------------- $SERVER1 $SERVER2 $SERVER3 -------------------------------- 環境はAIX5.2です。 出来れば、kshで実現したいと考えています。 |
|
>>3959 バンガード > echo \$$REP eval "echo $REP" としてみてください。 |
|
>>3960 68user >eval "echo $REP" としてみてください。 うまく行きました。 ありがとうございました。 |
|
はじめまして。最近Unix系OSをいじりはじめたものです。 このサイトのおかげですごい助かってるぜーと隣の人間に話していたら、 そういうのは掲示板に書き込んだほうが管理者の人が元気になるよー、と 教えてもらったので、感謝報告書き込みさせてください。 これからもリファレンスのお世話になりそうなのでまた利用させて下さい。 お邪魔しましたm(__)m |
|
>>3956 68user ご指摘、ありがとうございます。 教授の内容を試行させて頂きます。 |
|
初めまして。 最近C言語でCGIプログラミングを始めました。 そこで、crypt関数によるMD5暗号化を行う(掲示板のため、所謂トリップのため)ことにしたのですが、 #include <stdio.h> #include <unistd.h> int main(void) { char *salt = "Salt"; char *pass = "pass"; printf("Content-type:text/html\n\n"); crypt_set_format("des"); printf("DES: %s\n", crypt(pass, salt)); crypt_set_format("md5"); printf("MD5: %s\n", crypt(pass, salt)); crypt_set_format("blf"); printf("Blowfish: %s\n", crypt(pass, salt)); return 0; } というソースを見つけたので、動作確認のためgcc3.2、Kernel2.6.5のFedoraCore2ディストリ環境でコンパイルしてみました。 しかし、[-lcrypt]オプションを指定しても解決していない旨のエラーメッセージが表示され、コンパイルできません。 配布も予定しているものなので、httpdを直接書き換える設定は不可能なので、どのようにMD5に指定したらよいか、何方かご教授をお願いします。 |
|
>>3962 タコ見習 ありがとうございます。間違いやわかりにくい表現などありましたら、 ぜひご指摘ください。 >>3964 侍刀 > というソースを見つけたので、動作確認のためgcc3.2、 > Kernel2.6.5のFedoraCore2ディストリ環境でコンパイル > してみました。 http://www.jp.freebsd.org/QandA/HTML/1944.html でしょうか。 この crypt(3) の動作を切り替える仕組みは、わたしの知る限り FreeBSD のみに実装されています。Linux にこういう仕組みがあるかどうかはわかり ません (もしあったとしてもインタフェースは異なる可能性が高いと思われます)。 OpenSSL 必須でよいなら、EVP_Digest* などの仕組みを使うのがよいでしょう。 それがダメなら、*BSD や RFC1321 のソースを同梱して配布することをお勧め します (md5 のソースはそれほど長くないので)。 |
|
>>3965 68user あ、あらららら・・・・・・・そうだったんですか・・・・・ Linux互換じゃないとは知りませんでした・・・・・・ では、RFC1321のソースでも探して見ます・・・・ |
|
HP-UX11.00なのですが、telnetやrlogin、remshなどで、リモートログイン してくるあるユーザ(一般ユーザ)をログインできないようアクセスの拒否 をしたいのですが、実現可能なのでしょうか。 状況としては、UNIX同士、PCからUNIXとあり、同一LAN上にあります。 ftpのアクセス拒否と同じように定義ファイルがあり、ユーザ名を記述 すればアクセス拒否ができるのかと調べてはみたのですが、該当する ようなファイルはなく、実際にはどうなのでしょうか。 |
|
>>3967 でぶ > telnetやrlogin、remshなどで、リモートログインしてくるある > ユーザ(一般ユーザ)をログインできないようアクセスの拒否 > をしたい 以下のような案でどうでしょうか。 - telnetd や remshd を止める (全ユーザが利用不可) - そのユーザのパスワードやログインシェルを変更する (su にも有効。実装によるかもしれないが ftp が使えなくなるかも) - .login や .profile に logout と書いておく (タイミングよく Ctrl-c を押せばよいので気休め程度。su には効かない) |
|
UNIX上のC言語でCGIを作っています、複数のデータを画面に表示する。 沢山データあるので、改ページの機能もあります 1つ悩みがあります。 ページを変わると、タイトルの表示位置も変えてしまう。 タイトルはTPLファイルで定義しています、以下のように <HR width=98%> <TABLE width=98% cellpadding="2" cellspacing="0" border="0"> <TR> <TH width="30">選択</TH> <TH width="170">サービス名</TH> <TH width="170">グループ名</TH> <TH width="170">コンテンツ<BR>タイトル名</TH> <TH width="170">コンテンツ<BR>ファイル名</TH> <TH width="100">ファイル<BR>サイズ<BR>(byte)</TH> <TH width="50">更新日時</TH> <TH width="58">無償フラグ</TH> </TR> データ出力はC言語で書いています、以下のように printf("<TR bgcolor=%s><TD align=\"center\" width=\"30\">",html_work2); printf("<INPUT type=\"radio\" name=\"CONTENT_ID\" %s value=\"%s%s%s\">\n",html_work1,recode.my_content_id.arr,recode.my_service_id,recode.my_group_id); printf("</TD><TD width=\"170\">%s</TD><TD width=\"170\">%s</TD><TD width=\"170\">%s</TD><TD width=\"170\">%s</TD><TD width=\"100\">%s</TD><TD width=\"53\">%s</TD><TD width=\"58\">%s</TD>\n", service_name, group_name, recode.my_content_title.arr, recode.my_content_filename.arr, recode.my_file_size, recode.my_update_date.arr, html_work3); widthは%の形で定義して見た、それでもページを変わると、タイトルの表示位置をずれてしまう。 誰か教えていただけないでしょうか? |
|
>>3969 田 CGI が出力した HTML のソースを参照し (IE なら「表示->ソース」)、 以下の HTML と比較して、おかしいところはないか調べてみて下さい (例えば </TR> が抜けていないか、など)。 <HTML><BODY> <HR width="98%"> <TABLE width="98%" cellpadding="2" cellspacing="0" border="0"> <TR> <TH width="30">選択</TH> <TH width="170">サービス名</TH> <TH width="170">グループ名</TH> <TH width="170">コンテンツ<BR>タイトル名</TH> <TH width="170">コンテンツ<BR>ファイル名</TH> <TH width="100">ファイル<BR>サイズ<BR>(byte)</TH> <TH width="50">更新日時</TH> <TH width="58">無償フラグ</TH> </TR> <TR> <TD align="center" width="30"> <INPUT type="radio" name="CONTENT_ID" value="xxx"> </TD> <TD width="170">a</TD> <TD width="170">b</TD> <TD width="170">c</TD> <TD width="170">d</TD> <TD width="100">e</TD> <TD width="53">f</TD> <TD width="58">g</TD> </TR> <TR> <TD align="center" width="30"> <INPUT type="radio" name="CONTENT_ID" value="xxx"> </TD> <TD width="170">A</TD> <TD width="170">B</TD> <TD width="170">C</TD> <TD width="170">D</TD> <TD width="100">E</TD> <TD width="53">F</TD> <TD width="58">G</TD> </TR> </TABLE></BODY></HTML> |
|
こんにちは。 今あるプログラムの不具合調査をしておりまして、 RAND_add() がキーとなった不具合が発生しております。 とても情けない質問になるのですが、 RAND_add とは何を行っている関数なのでしょうか。 |
|
68USER様:貴重な提案をいただきました、ありがとうございます。 試して見ましたが、問題解決まだできません |
|
<HTML> <HEAD> <TITLE>・ウ・鵐ニ・鵐トク。コ�掘�フイ靂フ</TITLE> <META http-equiv="Content-Style-Type" content="text/css"> <META http-equiv="Content-Script-Type" content="text/javascript"> <Script Language = "JavaScript" SRC="./js-lib/comfunc.js"></Script> <Script language ="JavaScript"> <!-- function disp(){ parent.buttonFrame.location="Pscc_content_infobutton.cgi"; } //--> </SCRIPT> </HEAD> <BODY bgcolor="#FFFFFF"> <CENTER> <IMG src="../images/title_contentsSearch.gif" width="175" height="27"> <FORM NAME="CONTSHOW" METHOD="POST" ACTION="Pscc_content_infobody.cgi" TARGET="_self"> <HR width=98%> <TABLE width=98% cellpadding="2" cellspacing="0" border="0"> <TR> <TH width="30">チェツ・/TH> <TH width="170">・オ。シ・モ・ケフセ</TH> <TH width="170">・ー・・シ・ラフセ</TH> <TH width="170">・ウ・鵐ニ・鵐ト<BR>・ソ・、・ネ・・セ</TH> <TH width="170">・ウ・鵐ニ・鵐ト<BR>・ユ・。・、・・セ</TH> <TH width="100">・ユ・。・、・・BR>・オ・、・コ<BR>(byte)</TH> <TH width="50">ケケソキニ・�</TH> <TH width="58">フオス�・ユ・鬣ー</TH> </TR> <TR bgcolor=#FFCC99><TD align="center" width="30"><INPUT type="radio" name="CONTENT_ID" checked value="0000100050001"> </TD><TD width="170"> </TD><TD width="170"> </TD><TD width="170">premium</TD><TD width="170">ez.amc</TD><TD width="100"> 67,269 </TD><TD width="53">2023/10/03 00:00:00</TD><TD width="58">、ハ、キ</TD> </TR> <TR bgcolor= ><TD align="center" width="30"><INPUT type="radio" name="CONTENT_ID" value="0000100060001"> </TD><TD width="170"> </TD><TD width="170"> </TD><TD width="170">abc</TD><TD width="170">ez.amc</TD><TD width="100"> 67,269 </TD><TD width="53">2024/08/04 00:00:00</TD><TD width="58">、ハ、キ</TD> </TR> <TR bgcolor=#FFCC99><TD align="center" width="30"><INPUT type="radio" name="CONTENT_ID" value="0000100070001"> </TD><TD width="170"> </TD><TD width="170"> </TD><TD width="170">ST_KC_EZ。ハ」ナ」レ・爍シ・モ。シ。ヒ</TD><TD width="170">ez.amc</TD><TD width="100"> 67,269 </TD><TD width="53">2019/08/04 00:00:00</TD><TD width="58">、ハ、キ</TD> </TR> <TR bgcolor= ><TD align="center" width="30"><INPUT type="radio" name="CONTENT_ID" value="0000100110001"> </TD><TD width="170"> </TD><TD width="170"> </TD><TD width="170">ST_PRE_EZ。ハ」ナ」レ・爍シ・モ。シ。ヒ</TD><TD width="170">ez.amc</TD><TD width="100"> 67,269 </TD><TD width="53">2013/11/03 00:00:00</TD><TD width="58">、ハ、キ</TD> </TR> <TR bgcolor=#FFCC99><TD align="center" width="30"><INPUT type="radio" name="CONTENT_ID" value="0000100170001"> </TD><TD width="170"> </TD><TD width="170"> </TD><TD width="170">ST_MUSYO_EZ。ハEZ・爍シ・モ。シ。ヒ</TD><TD width="170">ez.amc</TD><TD width="100"> 67,269 </TD><TD width="53">2015/11/03 00:00:00</TD><TD width="58">、ハ、キ</TD> </TR> <input type="hidden" name="TOTAL_PAGE" value ="2"> <input type="hidden" name="SERVICE_ID" value =""> <input type="hidden" name="GROUP_ID" value =""> <input type="hidden" name="CON_TITLE" value =""> <input type="hidden" name="CON_FILE" value =""> <input type="hidden" name="DATA_TYPE" value =""> <input type="hidden" name="CUR_PAGE" value ="2"> <input type="hidden" name="CONTENT_ID" value =""> <input type="hidden" name="MOTO" value ="S"> <Script Language = "JavaScript" SRC="./js-lib/comfunc.js"></Script> <Script language ="JavaScript"> <!-- disp() //--> </SCRIPT> </TABLE><BR> </FORM></CENTER></BODY></HTML> |
|
ソース表示するとき、文字化けになった、設定の仕方がわからなくて、そのまま下に貼ります |
|
>>3973 田 文字化け部分を適当に直して IE6 で見てみましたが、特にテーブル構成が崩れることは ありませんでした。ブラウザ名とバージョンを確認してください。また、3973 で提示した HTML をファイルに保存し、そのファイルをブラウザで開き、本当にテーブル構成が崩れる かどうかを確認してください。 >>3971 吉 まず http://X68000.q-e-d.net/~68user/net/ssl-1.html を読んで、RAND_seed() が「PRNG に乱数の種となるランダムデータを蓄積するためのもの」 であることを理解してください。 RAND_seed() は 「10 バイトのデータを乱数の種として蓄積」 ということしかできません。 しかし RAND_add() は 「10 バイトのデータを乱数の種として蓄積するが、本当にランダムな部分は 5バイト分しかない」 などと、ランダムさを指定することができます。それ以外に RAND_seed() と RAND_add() の 違いはありません。 |
|
68user様:貴重な助言、ありがとうございます。 いま私は使っているブラウザ名とバージョンは ブラウザ:Microsoft Internet Explorer バージョン:4.0 (compatible; MSIE 6.0; Windows NT 5.0) です、 3973 で提示した HTML をファイルに保存し、そのファイルをブラウザで開き、本当にテーブル構成が崩れる かどうかを確認しました。文字化け以外、異常がありませんでした |
|
>>3976 田 > ブラウザ:Microsoft Internet Explorer > バージョン:4.0 (compatible; MSIE 6.0; Windows NT 5.0) これは IE6 のことを指します。ブラウザのメニューバーの ヘルプ->バージョン情報 で確認するのが確実です。 > 3973 で提示した > HTML をファイルに保存し、そのファイルをブラウザで開き、本当にテーブル構成が崩れる > かどうかを確認しました。文字化け以外、異常がありませんでした そもそも >>3973 で提示した HTML は、実際に表示が崩れている HTML の ソースを表示した結果ですか? 表示が崩れていない HTML のソースであれば、当然ながら HTML を見ても原因は わかりません。 表示が崩れている HTML のソースであれば、Javascript が悪さをしているのかも しれませんが、現物がないことには何ともいえません。少しずつ出力するタグを 削っていき、原因がどこにあるのか調べましょう。 |
|
AIXでのcsh実行でよく分からない点があり、初めて投稿させて頂きました。 AIX5.2で以下のcshを実行するとエラーは起きません。 #!/bin/csh if ( '07' >= '01' ) then endif exit しかし、if文内の'07'を'08'or'09'にすると 「if:数値の形式が正しくありません.」 とエラーになります。 ('10'や'11'などでは問題ありません。) HP-UXではエラーにならないのですが、理由がお分かりになる方が いらっしゃったら御教えください。 |
|
>>3978 もの知らず? おそらく、>= は両辺を数値として比較するため、0 から始まる文字列は 8進数と解釈されてしまうのでしょう。 もし /bin/test が存在するなら test '07' -ge '01' if ( $status == 0 ) then 処理 endif とか test '07' -ge '01' && 処理 などとする手があります。 |
|
>>3979 68user 68userさん。早速の御解答有難う御座いました。 8進数として解釈され、8進数に09などという数値が 存在しないのでエラーとなったということですね。 大変勉強になりました。 |
|
はじめまして。 ネットワークプログラミングのことを検索すると、いつもこちらのページがヒットするので、 いろいろと勉強させていただいてます。 さて、↓の UDP の説明ですが、 http://x68000.q-e-d.net/~68user/net/udp-2.html クライアントプログラムのリンクはあるのに、サーバの方がない(?)ようです。 で、もしかしたらと思って↓この URL を開いてみたら当たりました(笑)。 http://x68000.q-e-d.net/~68user/net/sample/udp-server-1.pl なので、こちらの方も本文からのリンクがあるとわかりやすいかなと思います。 |
|
>>3981 とおる。 リンクの張り忘れですので、さっそくリンクを追加いたしました。 ご指摘ありがとうございました。 |
|
68user様:貴重な助言、ありがとうございます。 最近手は回らなくて、返事を遅れて、すみません。 いま私は使っているブラウザ名とバージョンは ブラウザ:Microsoft Internet Explorer Version:6.0.2800.1106 データと関連しているような気がします、4ページから5ページ遷移するとき、問題ない、5ページから6ページ遷移するとき問題が起きる 以下は5ページ表示しているときのソース <HTML> <HEAD> <TITLE>・ウ・鵐ニ・鵐トク。コ�掘�フイ靂フ</TITLE> <META http-equiv="Content-Style-Type" content="text/css"> <META http-equiv="Content-Script-Type" content="text/javascript"> <Script Language = "JavaScript" SRC="./js-lib/comfunc.js"></Script> <Script language ="JavaScript"> <!-- function disp(){ parent.buttonFrame.location="Pscc_content_infobutton.cgi"; return true; } //--> </SCRIPT> </HEAD> <BODY bgcolor="#FFFFFF" text="#000000" Onload="return disp()"> <CENTER> <IMG src="../images/title_contentsSearch.gif" width="175" height="27"> <FORM NAME="CONTSHOW" METHOD="POST" ACTION="Pscc_content_infobody.cgi" TARGET="_self"> <HR width=98%> <TABLE width=98% cellpadding="2" cellspacing="0" border="0"> <TR> <TH width=3%>チェツ・/TH> <TH width="14%">・オ。シ・モ・ケフセ</TH> <TH width="14%">・ー・・シ・ラフセ</TH> <TH width="14%">・ウ・鵐ニ・鵐ト<BR>・ソ・、・ネ・・セ</TH> <TH width="14%">・ウ・鵐ニ・鵐ト<BR>・ユ・。・、・・セ</TH> <TH width="13%">・ユ・。・、・・BR>・オ・、・コ<BR>(byte)</TH> <TH width="13%">ケケソキニ・�</TH> <TH width="8%"> <CENTER> フオス�<BR>・ユ・鬣ー </CENTER> </TH> </TR> <TR bgcolor=#FFCC99><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" checked value="0000909630002"> </TD><TD width="14%">フ�掘� </TD><TD width="14%">baseballgrpdir2 </TD><TD width="14%">base2-9 </TD><TD width="14%">cameratuika.gif </TD><TD width="13%"> 1,794 </TD><TD width="13%">2004/09/16 11:36:11 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor= ><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000810110001"> </TD><TD width="14%">00001 </TD><TD width="14%">00001 </TD><TD width="14%">8 </TD><TD width="14%">cameratuika.gif </TD><TD width="13%"> 1,794 </TD><TD width="13%">2004/10/05 19:01:42 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor=#FFCC99><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0001009630002"> </TD><TD width="14%">フ�掘� </TD><TD width="14%">baseballgrpdir2 </TD><TD width="14%">base2-10 </TD><TD width="14%">cancel.gif </TD><TD width="13%"> 1,529 </TD><TD width="13%">2004/09/16 11:36:23 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor= ><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000910110001"> </TD><TD width="14%">00001 </TD><TD width="14%">00001 </TD><TD width="14%">9 </TD><TD width="14%">cancel.gif </TD><TD width="13%"> 1,529 </TD><TD width="13%">2004/10/05 19:02:18 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor=#FFCC99><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000106410001"> </TD><TD width="14%">aaaa </TD><TD width="14%">aaaa </TD><TD width="14%">aaaa </TD><TD width="14%">chekouttest.txt </TD><TD width="13%"> 41 </TD><TD width="13%">2004/05/14 13:32:57 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor= ><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000509630002"> </TD><TD width="14%">フ�掘� </TD><TD width="14%">baseballgrpdir2 </TD><TD width="14%">base2-5 </TD><TD width="14%">close_new.gif </TD><TD width="13%"> 1,351 </TD><TD width="13%">2004/09/16 11:35:17 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor=#FFCC99><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0001010110001"> </TD><TD width="14%">00001 </TD><TD width="14%">00001 </TD><TD width="14%">10 </TD><TD width="14%">close_new.gif </TD><TD width="13%"> 1,351 </TD><TD width="13%">2004/10/05 19:02:33 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor= ><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0001308020001"> </TD><TD width="14%">EZ・爍シ・モ。シ </TD><TD width="14%">ez_grp </TD><TD width="14%">sdfafasaasd </TD><TD width="14%">config.gif </TD><TD width="13%"> 1,163 </TD><TD width="13%">2004/08/24 18:37:39 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor=#FFCC99><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0001908020001"> </TD><TD width="14%">EZ・爍シ・モ。シ </TD><TD width="14%">ez_grp </TD><TD width="14%">syu_test </TD><TD width="14%">contract_change.gif </TD><TD width="13%"> 1,175 </TD><TD width="13%">2004/09/14 17:17:44 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor= ><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000300020001"> </TD><TD width="14%">test </TD><TD width="14%">test </TD><TD width="14%">sdsa </TD><TD width="14%">dec.amc </TD><TD width="13%"> 130,749 </TD><TD width="13%">2003/12/12 12:26:18 </TD><TD width="8%">、ハ、キ</TD> <input type="hidden" name="TOTAL_PAGE" value ="28"> <input type="hidden" name="MOTO" value ="S"> <input type="hidden" name="SERVICE_ID" value =""> <input type="hidden" name="GROUP_ID" value =""> <input type="hidden" name="CON_TITLE" value =""> <input type="hidden" name="CON_FILE" value =""> <input type="hidden" name="DATA_TYPE" value =""> <input type="hidden" name="CUR_PAGE" value ="5"> </TABLE><BR> </FORM></CENTER></BODY></HTML> 以下は6ページ表示しているときのソース <HTML> <HEAD> <TITLE>・ウ・鵐ニ・鵐トク。コ�掘�フイ靂フ</TITLE> <META http-equiv="Content-Style-Type" content="text/css"> <META http-equiv="Content-Script-Type" content="text/javascript"> <Script Language = "JavaScript" SRC="./js-lib/comfunc.js"></Script> <Script language ="JavaScript"> <!-- function disp(){ parent.buttonFrame.location="Pscc_content_infobutton.cgi"; return true; } //--> </SCRIPT> </HEAD> <BODY bgcolor="#FFFFFF" text="#000000" Onload="return disp()"> <CENTER> <IMG src="../images/title_contentsSearch.gif" width="175" height="27"> <FORM NAME="CONTSHOW" METHOD="POST" ACTION="Pscc_content_infobody.cgi" TARGET="_self"> <HR width=98%> <TABLE width=98% cellpadding="2" cellspacing="0" border="0"> <TR> <TH width=3%>チェツ・/TH> <TH width="14%">・オ。シ・モ・ケフセ</TH> <TH width="14%">・ー・・シ・ラフセ</TH> <TH width="14%">・ウ・鵐ニ・鵐ト<BR>・ソ・、・ネ・・セ</TH> <TH width="14%">・ウ・鵐ニ・鵐ト<BR>・ユ・。・、・・セ</TH> <TH width="13%">・ユ・。・、・・BR>・オ・、・コ<BR>(byte)</TH> <TH width="13%">ケケソキニ・�</TH> <TH width="8%"> <CENTER> フオス�<BR>・ユ・鬣ー </CENTER> </TH> </TR> <TR bgcolor=#FFCC99><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" checked value="0000409510001"> </TD><TD width="14%">・ウ・鵐ニ・鵐ト・ニ・ケ・ネ(」ナ」レ・爍シ・モ。シ) </TD><TD width="14%">content_ezmovie_grp </TD><TD width="14%">02.3.14-005-6_title </TD><TD width="14%">dlcsv.gif </TD><TD width="13%"> 1,483 </TD><TD width="13%">2004/09/02 20:45:25 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor= ><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000509510001"> </TD><TD width="14%">・ウ・鵐ニ・鵐ト・ニ・ケ・ネ(」ナ」レ・爍シ・モ。シ) </TD><TD width="14%">content_ezmovie_grp </TD><TD width="14%">2.3.14-007_title </TD><TD width="14%">dllimit.gif </TD><TD width="13%"> 1,410 </TD><TD width="13%">2004/08/31 14:07:51 </TD><TD width="8%">、「、・/TD> <TR bgcolor=#FFCC99><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0001509510001"> </TD><TD width="14%">・ウ・鵐ニ・鵐ト・ニ・ケ・ネ(」ナ」レ・爍シ・モ。シ) </TD><TD width="14%">content_ezmovie_grp </TD><TD width="14%">0902_title </TD><TD width="14%">dummy.html </TD><TD width="13%"> 53 </TD><TD width="13%">2004/09/02 20:47:46 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor= ><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000109780002"> </TD><TD width="14%">grp_test </TD><TD width="14%">grp_test </TD><TD width="14%">grp_test </TD><TD width="14%">dummy.html </TD><TD width="13%"> 53 </TD><TD width="13%">2004/09/16 13:43:11 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor=#FFCC99><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000200020001"> </TD><TD width="14%">test </TD><TD width="14%">test </TD><TD width="14%">abc </TD><TD width="14%">ez.amc </TD><TD width="13%"> 67,269 </TD><TD width="13%">2004/05/25 17:43:13 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor= ><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000100050001"> </TD><TD width="14%">premiumPPV </TD><TD width="14%">ppv </TD><TD width="14%">premium </TD><TD width="14%">ez.amc </TD><TD width="13%"> 67,269 </TD><TD width="13%">2003/10/23 10:51:38 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor=#FFCC99><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000100060001"> </TD><TD width="14%">kccsppv </TD><TD width="14%">a </TD><TD width="14%">abc </TD><TD width="14%">ez.amc </TD><TD width="13%"> 67,269 </TD><TD width="13%">2004/08/24 10:58:05 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor= ><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000100110001"> </TD><TD width="14%">ST_PRE_EZ。ハ」ナ」レ・爍シ・モ。シ。ヒ </TD><TD width="14%">ST_PRE_EZ。ハ」ナ」レ・爍シ・モ。シ。ヒ </TD><TD width="14%">ST_PRE_EZ。ハ」ナ」レ・爍シ・モ。シ。ヒ </TD><TD width="14%">ez.amc </TD><TD width="13%"> 67,269 </TD><TD width="13%">2003/11/13 18:00:54 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor=#FFCC99><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000100840001"> </TD><TD width="14%">ppv_EZmovie_pre </TD><TD width="14%">ppv_EZmovie_pre </TD><TD width="14%">ppv_EZmovie_pre </TD><TD width="14%">ez.amc </TD><TD width="13%"> 67,269 </TD><TD width="13%">2003/11/16 16:52:26 </TD><TD width="8%">、ハ、キ</TD> <TR bgcolor= ><TD align="center" width="3%"><INPUT type="radio" name="CONTENT_ID" value="0000102520001"> </TD><TD width="14%">マ「キネ。ハEZMOVIE_PREM_PPV) </TD><TD width="14%">マ「キネ。ハEZMOVIE_PREM_PPV) </TD><TD width="14%">マ「キネ。ハEZMOVIE_PREM_PPV) </TD><TD width="14%">ez.amc </TD><TD width="13%"> 67,269 </TD><TD width="13%">2003/11/18 20:42:19 </TD><TD width="8%">、ハ、キ</TD> <input type="hidden" name="TOTAL_PAGE" value ="28"> <input type="hidden" name="MOTO" value ="S"> <input type="hidden" name="SERVICE_ID" value =""> <input type="hidden" name="GROUP_ID" value =""> <input type="hidden" name="CON_TITLE" value =""> <input type="hidden" name="CON_FILE" value =""> <input type="hidden" name="DATA_TYPE" value =""> <input type="hidden" name="CUR_PAGE" value ="6"> </TABLE><BR> </FORM></CENTER></BODY></HTML> 問題を見つからないです。 |
|
akuroと申します。 MACの改行コード(CR)の扱いについておうかがしたいことがございます。 RedHat8.0上コマンドラインより、 vi lunux.txt ------------- aiueo kakikukeko sasisuseso というファイルを作成し、これの改行コードを¥r→¥nに変換しました。 perl -pe 's/¥n/¥r/' linux.txt > mac.txt このファイルをWindows2000クライアントPCにDLしメモ帳で表示したところ。 -------- aiueo■kakikukeko■sasisuseso■ (実際は■は半分くらいの大きさです) となり、¥rが存在する事が確認できます。 自動で改行コードを認識するエディタで表示させると改行されて表示されます。 (サクラエディタ使用) この処理を、Vine2.6R4上で実行し、メモ帳、サクラエディタで見たところ ------- aiueokakikukekosasisuseso 両エディタでみてもこのようになっておりました。 ただ、¥r自体は存在するようなのですが、うまく反映されないのです。 (この結果はFreeBSD5.2でも同様でした。) 色々とこの現象について調べてはいるのですが、原因不明です。 どなたかおわかりの方がいらっしゃいましたらよろしくお願いします。 それと、情報が足りない点がありましたらご指摘お願いいたします。 |
|
>>3983 田 こちらの環境ではいずれも正常に表示されたので、解決方法は わかりませんでした。少しずつ出力を削り、どこがまずいのか 調べましょう。 もし他の掲示板で質問する場合は、これまでに述べた環境に 加え、テーブルのどの部分がどういうふうに崩れるのかを 書くとよいでしょう。 >>3984 akuro まずは問題が発生している箇所を切り分けましょう。 perl 実行後に od -cx などでファイルの内容を確認しましょう。 \r になっているなら、Windows 側かファイル転送時の問題です。 \r になっていないなら、Linux 側の問題です。 |
|
>>3985 68user 返信ありがとうございます。 早速ファイルを確認してみましたところ、 (Vine,redhat8.0での確認) →FREEBSDの方は今起動できないため後でテストしてみます。 0000000 a i u e o \r k a k i k u k e k o 6961 6575 0d6f 616b 696b 756b 656b 6f6b 0000020 \r s a s i s u s e s o \r 730d 7361 7369 7375 7365 0d6f 0000034 と同じ結果となり、¥rは存在する事が判明しました。 という事は、”Windows 側かファイル転送時”の問題のようです。 ファイルの取得方法はRedHatもVineもWinSCPを使用して受けとりました。 受け取ったクライアントPCは同じなので原因は転送時の気がします。 となると、SSHの設定かもしれないです。 まだ、原因はわかりませんが引き続き調査してみます。 |
|
>>3986 akuro 原因は、WinSCPでの転送中にファイルが加工されていたためでした。 一度ローカルにDLした後に、再度サーバーへUPしたところ ファイルのダンプデータが異なりました(ファイルサイズも)。 0000000 a i u e o \r k a k i k u k e k o 6961 6575 0d6f 616b 696b 756b 656b 6f6b 0000020 \r s a s i s u s e s o \r 730d 7361 7369 7375 7365 0d6f ↓DL、UP後 0000000 a i u e o k a k i k u k e k o s 6961 6575 6b6f 6b61 6b69 6b75 6b65 736f 0000020 a s i s u s e s o \0 7361 7369 7375 7365 006f 0000031 sshd_configを調べてみても、転送モードらしきものは見つかりませんでした。 なにかよい方法はありませんでしょうか。 (FTPでバイナリモードにするしかないのでしょうか) FTPを使用してバイナリ転送したところ、問題なく転送できました。 |
|
>>3987 akuro WinSCP は知りませんが、 http://itc.sfc.keio.ac.jp/ml/ の「2-6. 転送モードで[テキスト(T)] を選択します」という設定画面で モード切替を行なえるように見えます。 > sshd_configを調べてみても、転送モードらしきものは見つかりませんでした。 わたしの知る限り、UNIX 的な ssh・scp は改行コード置換は行ないません。 WinSCP 独自のおせっかいな機能でしょう。 |
|
>>>3987 akuroと申します。なんども申し訳ありません。 先ほどは、改行コードを¥n→¥r変換しましたが。 ¥nのままでもファイルに異常が生じるかテストしてみました所、 ¥nの場合は問題なく転送できました。 |
|
>>3988 68user 返信ありがとうございます。akuroです。 問題解決いたしました。 ご指摘いただいたWinSCPの転送をバイナリにしたところ 問題なく転送できました。 ありがとうございました。 |
|
sugimotoと申します。 OpenSSLとRSA暗号を調べていてここに辿りつきました。 あるユーザ様とCGIを介してデータ通信を行おうとしているのですが、ユーザ 様の指定で、データはRFC2313に準拠したRSA暗号化して送るという事になって ます。 暗号化/復号については68user様のネットワークプログラミングの基礎を参考 に作れそうなのですが、唯一解決できない問題がありまして、ここに質問して おります。 【問題点】 ユーザ様から提示された仕様には暗号化キー/復号キーがそれぞれ1つしか 無い。 RSAはモジュラスと私有指数,公開指数で暗号化/復号を行えるという理解な のですが、ユーザ様の仕様ではモジュラスに該当する仕様が無いのです。 RSAにおいて、このような事は可能なのでしょうか? 例えば、opessl genrsaコマンドで作成したRSAキーなら、関数を使えば指数 とモジュラスに分割できるよ。など情報がありましたら教えて下さい。 ※ユーザ様にも問い合わせ中なのですが、レスポンスの問題がありまして、 こちらにも質問した次第です。 よろしくお願いいたします。 |
|
>>3991 sugimoto > RSAはモジュラスと私有指数,公開指数で暗号化/復号を行えるという理解な > のですが そのとおりです。 > ユーザ様の仕様ではモジュラスに該当する仕様が無いのです。 これは定義の問題ではないでしょうか? 仕様にある「暗号化キー」は、 実は「モジュラスと公開指数」を意味する、ということはないですか? # 「暗号化キー/復号キー」が具体的に何を指すのかよくわからない # ので何ともいえないのですが。 > 例えば、opessl genrsaコマンドで作成したRSAキーなら、関数を使えば > 指数とモジュラスに分割できるよ。など情報がありましたら教えて下さい。 genrsa で出力されるデータには、モジュラス・公開指数・非公開指数全てが 含まれていますので、可能です (openssl genrsa で生成したデータを読み込み、 openssl rsa -pubout で公開鍵を出力できるわけなので)。 試してませんが、genrsa で生成した PEM ファイルを http://www.openssl.org/docs/crypto/pem.html などで読み込み、RSA 構造体を参照すればよいのではないでしょうか。 |
|
>>3992 68user 素早い回答どうも有難うございます。> 68User様 > > ユーザ様の仕様ではモジュラスに該当する仕様が無いのです。 > これは定義の問題ではないでしょうか? 仕様にある「暗号化キー」は、 > 実は「モジュラスと公開指数」を意味する、ということはないですか? ユーザからの回答として、上記が来る事を心待ちにしている所です。 PEMファイルからモジュラスを抜き出す処理については、ユーザからの回 答を待ってからにしようと思っておりますが、必要になった場合は頑張って みます。この処理を行いましたらまた報告します。 |
|
>>3993 sugimoto sugimotoです。 結局PEMファイルから秘密指数/公開指数とモジュラスを抜き出す事にしました。 プライベート鍵ファイルからの読み込みは PEM_read_RSAPrivateKey()という関数を利用する事で上手く行ったのですが、 パブリックキーの読み込みに失敗している状態です。 以下が読み込みプログラム RSA *ReadPublicKey(char *keyfile) { FILE *fp = fopen (keyfile, "r"); RSA *pkey; if (!fp) return NULL; pkey = PEM_read_RSAPublicKey(fp,NULL,NULL,NULL); fclose (fp); if (pkey == NULL) ERR_print_errors_fp (stderr); return pkey; } この関数を実行すると、以下のエラーが出てしまいます。 === ここから === 5563:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:669:Expect ing: RSA PUBLIC KEY Error: can't load public key === ここまで === 渡しているファイルは openssl rsa -in private.key -pubout -out public.key で作成した、public.keyになります。 ちなみに、private.keyの読み込みは上記関数のPEM_read_RSAPublicKeyを PEM_read_RSAPrivateKeyに変えた物で、問題無く動作します。 どなたか、private.keyの読み込みを行った方が居ましたら、助言をお願い いたします。 |
|
>>3994 sugimoto 今実行環境がないのでわかりませんが、とりあえず気になったところだけ。 > プライベート鍵ファイルからの読み込みは > PEM_read_RSAPrivateKey()という関数を利用する事で上手く行ったのですが、 これで RSA 構造体に「秘密指数/公開指数とモジュラス」がセットされていませんか? あと、目的がよくわからないのですが、PEM ファイルは誰が作るのですか? (自分? 相手?) なぜ「秘密指数/公開指数とモジュラス」を抜き出す必要があるのでしょうか? |
|
>>3995 68user > > プライベート鍵ファイルからの読み込みは > > PEM_read_RSAPrivateKey()という関数を利用する事で上手く行ったのですが、 > これで RSA 構造体に「秘密指数/公開指数とモジュラス」がセットされていませんか? はい。セットされます。 動作の確認のため、パブリック鍵ファイルも読み込みたかったのです。 > あと、目的がよくわからないのですが、PEM ファイルは誰が作るのですか? (自分? 相手?) PEMは自分で作成して、一方を相手に渡します。 > なぜ「秘密指数/公開指数とモジュラス」を抜き出す必要があるのでしょうか? PEMファイルの鍵を使って暗号化と復号を行いたいからです。 で、当初の問題であったパブリック鍵の読み込みですが、 PEM_read_RSA_PUBKEY() という関数を使ったところ上手く行きました。 色々ご助言いただき有難うございました。 |
|
>>3996 sugimoto > PEMファイルの鍵を使って暗号化と復号を行いたいからです。 PEM ファイルをロードしたら RSA 構造体が生成されるわけですから、 それを使って OpenSSL の関数で RFC2313 (PKCS#1) なデータを生成 するのはダメなのですか? …と質問しようかと思ったのですが、おそらく「そういう仕様である」が 答えなような気がしますのでやめておきます。 |
|
>>3997 68user あー、公開指数とモジュラスだけ (独自フォーマットで 相手側に送りたい、 という意図かな。 |
|
>>3998 68user やりたい事を上手く伝える事ができないくて、すみません。 送信者は平文をPEM形式のパブリック鍵で暗号化し、 受信者はPEM形式のプライベート鍵で復号する。 という事を実現したかっただけなのです。 暗号化/復号の際にはPEM形式ファイル内の指数とモジュラスを抜き出す 必要があって・・・という話です。 と、ここまで書いて思ったのですが、もしかしてPEM形式の鍵をそのまま 使ってRSA暗号化する関数が存在するのでしょうか? とすれば、何て無駄な事をしているんだ・・・。という感じです。 |
|
はじめまして。 「HTTPクライアントを作ってみよう」に関して質問させてください。 一般的なHPなら「HTTPクライアントを作ってみよう(2)」のソースで、指定されたURLのhtmlファイル のソースを読み込むことができますが、Operaブラウザでオートリダイレクトを有効にしていない場合 に表示されないようなURLを指定すると <head><title>Object moved</title></head> <body><h1>Object Moved</h1>This object may be found <a HREF="">here</a>.</body> のようなhtmlソースを拾ってきてしまいます。 リダイレクト先のhtmlソースを拾ってくるようにしたいのですが、どのようにすればいいのでしょうか。 よろしくお願いします。 |
|
>>3999 sugimoto > 送信者は平文をPEM形式のパブリック鍵で暗号化し、 まずこの表現が微妙に変です。PEM はフォーマットのひとつでしかありません。 「送信者は PEM形式で保存されている公開鍵を使って暗号化し」ならわかります。 # わかっている人が書いた文章であればあまり気になりませんが、今回は # どうも理解があやしいのではないかという気がします。 PEM 形式でファイルに保存されている鍵を使って RSA で暗号化するのであれば、 PEM_read_RSAPrivateKey でファイルから鍵を読み込み、RSA 構造体に適切な データをセットして、 http://X68000.q-e-d.net/~68user/net/rsa-1.html のように RSA_private_encrypt を使えばすみます。モジュラスなどを参照する 必要はありません。 コマンドラインから行うなら openssl rsautl -encrypt でも同じ結果になると 思われます。 なお、PKCS#1 では鍵が k オクテットのとき、最大でも k-11 オクテットのデータ しか暗号化できませんが、それはよいのですか? >>4000 nira > リダイレクト先のhtmlソースを拾ってくるようにしたいのですが Location ヘッダを見て、再度リクエストを送る必要があります。 http://X68000.q-e-d.net/~68user/net/http-4.html#3 をどうぞ。 |
|
はじめまして!! おしえてください。 UNIX(HP)のサーバー間でファイルを大量コピーする作業があります。 rcp -pr コマンドを使用したところ、ログインしたユーザ名で全てのファイルが移動されて しまいます。 例)user1 file0001 コピー後⇒ user1 file0001 root file0002 user1 file0002 所有者を変更せずにコピーできる方法があれば どなたかご教授願います。 宜しくお願いします<m(__)m> |
|
>>4002 アンドロメダ root で実行してもダメですか? もしダメなら tar で固めてそれを rcp し、 tar xfp で展開するとよいでしょう。 |
|
>>4002 アンドロメダ rcpの-pオプションはパーミッションは保持されますが ファイルのオーナーは変わってしまいます。 (Solaris、AIXでも同様) 大ざっぱですが、こんな感じで... tar cfp - ./from_dir | rsh to_server "cd to_dir; tar xfp -" |
|
みなさんアドバイスありがとうございました。 tarでまとめてリモートコピーする方法でテストしたところ うまくできました。 ありがとうございました。\(^O^)/ |
|
はじめまして、くろと申します。 ここのサイトのネットワークプログラミング[ SSL/TLS でアクセスしてみよう (1) ]の サンプルを元に、https接続で、メソッドをGETではなくPOSTで、データを送信したところ HTTPステータス[400 Bad Request]が戻ってきてしまいます。 リクエストのヘッダーがおかしいのかな?と思い、下記のようにしたのですが、 POST プログラム名 HTTP/1.0 User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0) Content-Length: 270 Content-type: text/xml; charset=utf-8 上手くいきませんでした。(改行コードは、\r\nです) このステータスが戻ってくる原因として、他にどんなことが考えられますでしょうか? 正直、今の私にはここまで限界で・・・ どなたかご存知の方がいらっしゃいましたら、教えていただけませんでしょうか? 宜しくお願い致します。 |
|
>>4006 くろ > POST プログラム名 HTTP/1.0 プログラム名って何ですか? https でなく http ならうまくいくんですか? POST でなく GET ならうまくいくんですか? POST を受けてくれる SSL/TLS サーバが手元にないので、 https://www.rsasecurity.com/solutionsPrimary.asp に対して以下のリクエストを送信してみましたが、正常なレスポンスを 取得できました。 POST /solutionsPrimary.asp HTTP/1.0 Host: www.rsasecurity.com Content-Length: 2 ab |
|
>>4007 68user 説明に至らない点があったみたいで、すみません。 >プログラム名って何ですか? これは、POSTをするプログラム名を指しています。 教えて頂いたURLに、POSTしてみたのですが、 サーバーからのレスポンスとして、「HTTP/1.1 400 Bad Request」 が戻ってきました。。。 68userさんでは、上手くいっているようなので、 私のプログラムの問題のようですね。。。 既に6日間も悪戦苦闘しますので、 なにか助言などありましたら、お手数ですが宜しくお願いします。 |
|
>>4008 くろ > これは、POSTをするプログラム名を指しています。 だからプログラム名って具体的に何ですか? POST hoge HTTP/1.0 とかしてたりしませんか? ちゃんと POST /hoge HTTP/1.0 としていますか? んなこたわかっとると思われるかもしれませんが、あなたのレベルが わからないので、こういうところから確認しているんですよ。 |
|
>>4008 くろ > 教えて頂いたURLに、POSTしてみたのですが、 > サーバーからのレスポンスとして、「HTTP/1.1 400 Bad Request」 > が戻ってきました。。。 ああ、これを見落としていました。 ではリクエストのやり方が悪いのでしょう。ソースを提示してください。 |
|
>>4010 68user ご迷惑をお掛けしまして、大変申し訳ありません。 プログラム名ですが、[POST hoge HTTP/1.0] という感じで、 設定しております。 以下がソースになります。 +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ #include <stdio.h> #include <string.h> #include <sys/types.h> #include <netdb.h> #include <sys/socket.h> #include <netinet/in.h> #include <sys/types.h> #include <sys/uio.h> #include <unistd.h> #include <openssl/crypto.h> #include <openssl/x509.h> #include <openssl/pem.h> #include <openssl/ssl.h> #include <openssl/err.h> #define EXT_OK 0 #define EXT_ERR -1 #define LINE_MAX_LEN 512 #define FILE_PATH_LEN 256 #define SEND_XML_LEN 640 #define RECV_VAL_LEN 256 #define SEND_VALUE "xml=送信データ" int main(int argc ,char *argv[]) { int ierr = 0; int isockt = 0; int read_size = 0; struct hostent *servhost; // サーバ情報構造体 struct sockaddr_in server; // ソケット構造体 struct servent *service; // サービス構造体 SSL *ssl; SSL_CTX *ctx; char *str; char send_buf[SEND_XML_LEN + 1]; // 送信データ char request[SEND_XML_LEN + 1]; // ヘッダー char total_buf[RECV_VAL_LEN + SEND_XML_LEN + 1]; // 送信データ(ヘッダー + データ) char *host = "接続先ホスト名"; // サーバ名セット char *path = "CGIパス"; // CGI名セット char buf[RECV_VAL_LEN]; memset(send_buf,'\0',sizeof(send_buf)); memset(request,'\0',sizeof(request)); memset(total_buf,'\0',sizeof(total_buf)); servhost = gethostbyname(host); if ( servhost == NULL ) { fprintf(stderr, "[%s] から IP アドレスへの変換に失敗しました。\n", host); exit( EXT_ERR ); } bzero((char *)&server, sizeof(server)); server.sin_family = AF_INET; bcopy(servhost->h_addr, (char *)&server.sin_addr, servhost->h_length); service = getservbyname("https", "tcp"); // ポート番号取得 if ( service != NULL ) { server.sin_port = service->s_port; } else { server.sin_port = htons(443); // 取得できなかったら、ポート番号を 443 に決め打ち } isockt = socket(AF_INET, SOCK_STREAM, 0); if ( isockt < 0 ) { fprintf(stderr, "ソケットの生成に失敗しました。\n"); exit( EXT_ERR ); } if ( connect(isockt, (struct sockaddr*) &server, sizeof(server)) == -1 ) { fprintf(stderr, "connect に失敗しました。\n"); exit( EXT_ERR ); } SSL_library_init(); // SSLのライブラリを初期化 SSL_load_error_strings(); // SSLエラーメッセージ Catch ctx = SSL_CTX_new(SSLv23_client_method()); // SSLv2を使用 ssl = SSL_new(ctx); SSL_set_fd(ssl, isockt); // SSLとソケットの関連付け ierr = SSL_connect(ssl); sprintf(send_buf,"%s",SEND_VALUE); sprintf(request, "POST %s.cgi HTTP/1.0\r\n" "User-Agent: Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0)\r\n" "Content-Length: %d\r\nContent-type: text/xml; " "charset=utf-8\r\n\r\n",argv[0],strlen(send_buf)); sprintf(total_buf,"%s%s",request,send_buf); ierr = SSL_write(ssl, total_buf, strlen(total_buf)); printf("サーバからのレスポンス\n"); while (1) { memset(buf,'\0',sizeof(buf)); read_size = 0; read_size = SSL_read(ssl, buf, sizeof(buf)-1); buf[read_size] = '\0'; if ( read_size > 0 ) { write(1, buf, read_size); } else { break; } } SSL_shutdown(ssl); close(isockt); // ソケットクローズ SSL_free(ssl); SSL_CTX_free(ctx); exit( EXT_OK ); } +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ 申し訳ありませんが、ご教授ください。 宜しくお願いします。 |
|
>>4011 くろ SSL/TLS 以前の問題に見えます。http://X68000.q-e-d.net/~68user/net/ の HTTP クライアントを作ってみよう(1)〜(4) を読んでください。 |
|
>>4012 68user ご指摘ありがとうございました。 なんと接続することができました。 ご迷惑をお掛けしまして、申し訳ありません。 |
|
環境変数にセットする値をConfigFileから読み込む仕様のシェルがあります。 しかし今その環境変数の値にスペースがある場合にうまく動きません。 具体的には configFile内に T_DATE=`date +'%Y%m%d%H%M%S'` と記述して実際のBシェルの中で for var in `cat ${CONFIG}` do export $var done としています。 想定としては export T_DATE=`date +'%Y%m%d%H%M%S'` となってほしいのですが 実際には export T_DATE=`date export +'%Y%m%d%H%M%S'`=+'%Y%m%d%H%M%S'` という2つの変数として扱われてしまいます。 これを回避する方法はありませんでしょうか。 使用している環境はHP-UX B.11.11 です。 |
|
>>4014 どんぐ while read line; do eval $line done < ${CONFIG} てな感じでどうでしょうか。 |
|
Vacancies in SUN China In 1982 Sun Microsystems created a business vision named “The Network is the Computer”. In the same year Sun initiated R&D on Java Technology. Today Sun is recognized by all as the Premier Network Enterprise Computing Vendor and have a global presence in over 100 countries. In 1987, Sun entered China market and has been dedicated to the technology and customer solution development in China. Customer Solution Center in Beijing expand repidly to provide technical hot line suppot to mission critical customers. We invite top nortch engineers to join our champion team in Beijing to provide world-class customer services. Solution Center Engineer (GC0201938) (53 Vacancies) UNIX generalist responsible for providing system support that includes hardware, software, software applications, and networking to customers via telephone support. Incumbent must be university graduate in Computer Science / Electronic Engineering, knowledgable in O/S like Unix, Linux or Solaris systems, fluent in written and spoken Japanese and with minimum 3 years of Unix Sever Support, System Integration or internal MIS support of Unix Sever. Solution Center Manager (GC0201941) (2 Vacancies) Manages and directs the activities of the Solution Center teams to provide customer facing technical post sales support of both hardware and software issues. Accountable for meeting operational excellence, customer satisfaction and people management goals of Solution Center. Liaise closely with the product technical support group for technical escalation as well as the local field operations. Incumbent must be Universtiy graduate in Computer Science / Electronics Engineering, 10 years customer support experience with 5 years in managerial capacity and fluent in written and spoken Japanese, good English is a plus. To apply this position, Please send your resume in English, Mandarin or Japanese and marked with position code to Lisa.wu@multimage.com.cn. Contact: Tel: +86 10-65057881-17 Lisa 84580901-17 Lisa Mob: 13501160969 Fax: +86 10-65057880/84583069 |
|
duコマンドで、ディスクの使用率をバイトで表示しようと以下の コマンドを実施したのですが、サイズとディレクトリ名との間に 改行が入り、一行で表示できません。 サイズとディレクトリ名を一行で表示し、その後、改行したいの ですがどうすればよいですか。 5295104 . 2594816 ./tmp1 1864704 ./tmp2 821248 ./tmp3 10240 ./tmp4 ↓ 5295104 . 2594816 ./tmp1 1864704 ./tmp2 821248 ./tmp3 10240 ./tmp4 としたいのですが。 du -k $1 | sort -n -r | awk '{ system("echo "$1"*1024 | bc"); printf(" %s\n", $2) }' |
|
>>4017 さいさん > du -k $1 | sort -n -r | awk '{ system("echo "$1"*1024 | bc"); printf(" %s\n", $2) }' 改行コードが余分なわけなので du -k | sort -nr | awk '{ system("echo "$1"*1024 | bc | tr -d \\\\n"); printf(" %s\n", $2) }' du -k | sort -nr | awk '{ system("echo -n `echo "$1"*1024 | bc`"); printf(" %s\n", $2) }' とか。 わたしなら「わかりづらい」「無駄なプロセス生成が嫌」という理由から、 du -k | sort -nr | awk '{ printf("%6d %s\n",$1*1024,$2)}' などとします。 |
|
>>4018 68user >du -k | sort -nr | awk '{ printf("%10d %s\n",$1*1024,$2)}' と最初はやっていたのですが、$1に設定されるブロックサイズが大きい と「$1*1024」でオーバーフローを起こし、正しい計算ができないので systemで、bcで計算をするようなことに |
|
>>4017 さいさん >>4018 68user >du -k | sort -nr | awk '{ system("echo -n `echo "$1"*1024 | bc`"); printf(" %s\n", $2) }' サーバとかOSのバーションとか記述されてませんでしたけど、 「echo -n」は、依存しませんでしたか。 |
|
>>4107 68user >>4018 68user >du -k | sort -nr | awk '{ system("echo -n `echo "$1"*1024 | bc`"); printf(" %s\n", $2) }' shかcshで異なるみたいです。 バークレイ版では、「\c」 エスケープを「-n」オプションで代用することができます。 echo が csh(1) の組み込み関数として用いられている場合には、バークレイ方式に 従っています。 #du -k $1 | sort -nr | awk '{ system("echo `echo "$1"*1024 | bc` \\\\c"); printf(" %s\n", $2) }' で、できました。 |
|
こんにちは kenといいます。 Winsockを使ってネットワークの勉強してまして大変勉強になりました。 ソケットプログラミングを進めていくうちにどうしてもわからない点が発生 したので、もしよろしければとおもいメールしました。 問題はSend()/Recv()でパケットサイズを超えるデータを連続で 送受信させたいのです。 パケットを超える送信をするにはsend()の引数にバッファ、サイズを そのままのっければ、自動でパケットサイズに切り分けて送信してる のを確認しました。ですが、受信終了を示す返り値のlengs=0を受信 できませんでした。どうも送ってないようです。httpサーバーに接続して 受信をためしたのですが、lengs=0を確認でき連続で受信することができました。 recv()での受信lengs:0はシャットダウンを意味するとの記述も見つけたのですが、 shutdown()では送信復帰ができないので、使えません。 パケットサイズを超えるデータを連続で送信し受信する時、 受信データの終了を送信したり、受信するにはどうすればいいので しょうか? サーバーがファイルの終了を示すleng=0を送信するのは なにか命令があるのでしょうか? ソケットをシャットダウンするとleng=0を送信できますが シャットダウンを復帰できないはずですがしてるのでしょうか? よかったらレスお願いしますm(__)m page:homepage3.nifty.com/MIDI-EDITOR/ mail:NQD00781@nifty.com ken |
|
>>4022 ken TCP ですか? それとも UDP ですか? > パケットサイズを超えるデータ パケットサイズって具体的に何のことを指していますか? > 受信終了を示す返り値のlengs=0を受信できませんでした。 送信側で close か shutdown しましたか? > shutdown()では送信復帰ができないので、使えません。 送信復帰って何ですか? |
|
sedを使用して先頭1行目のみ置換を行い、 すべてを出力させたいのですが、どうすれば よいですか。 sed 's/o=test$/o=honban/g' とすると置換は行われますが、先頭1行目のみ だけしたいのです。 CM1: id=00001,nm=test,o=aaa,o=test CM2: mod CM3: option - CM4: ftp CM5: get ↓ CM1: id=00001,nm=test,o=aaa,o=honban CM2: mod CM3: option - CM4: ftp CM5: get |
|
>TCP ですか? それとも UDP ですか? TCPです。 >> パケットサイズを超えるデータ >パケットサイズって具体的に何のことを指していますか? send()/recv()での送信、受信レングスです。 この場合では、Recv時のレングスです。 >> 受信終了を示す返り値のlengs=0を受信できませんでした。 >送信側で close か shutdown しましたか? サーバー側でデータを送信し、終了したらshutdown/closeを行うべき なのでしょうか? 確かにレングス0を受信できますが、その後に 送受信を必要な場合はどうすればいいのでしょうか? httpサーバーにアクセスした時はレングス0が帰ってきたのですが、 shutdownしていたのでしょうか? >> shutdown()では送信復帰ができないので、使えません。 >送信復帰って何ですか? 送信の終了を示す、レングス0を送るためにclose/shutdownを使うと、 その後にアクセスができなくなる。 shutodownしたソケットを再使用は危険とMSDNにでてます。 |
|
>>4024 どっかん sed -e '1s/o=test$/o=honban/' |
|
>>4025 ken 要は、ピアが送信したデータが全部届いたことを確認したいのですか? それならば、TCP/IP のレベルではなくアプリケーションのプロトコル レベルで実現するのが普通です。 例: - 送信側は「データ長 + データ」を送信。受信側は最初に受け取った データ長の分だけデータを受信したら、全データ到着とみなす。 - 改行コードをプロトコルのひとまとまりとみなす。送信側は データの末尾に改行コードをつけて送信。受信側は改行コードを 受け取ったら全データ受信とみなす。 端的に言うと、 recv の戻り値が 0 = FIN が届いたとき です (ノンブロッキングモードなどの例外はあるかと思いますが)。 で、FIN を投げるには close か shutdown する必要があるということです。 |
|
レスありがとうございました。m(__)m >要は、ピアが送信したデータが全部届いたことを確認したいのですか? はい。 >それならば、TCP/IP のレベルではなくアプリケーションのプロトコル >レベルで実現するのが普通です。 httpサーバーにつなげてhtmlを受信した場合に受信終了時にrecv()戻り値が 0を送っていたのは、shutdown()がかかっていたと判断していいのでしょうか? だとすれば、再度htmlを受信する場合は、再度acceptでsocketを作成して受信 開始する必要があるのかテストする必要を感じました。 何度もレスいただきましてありがとうございました。 |
|
>>4028 ken > shutdown()がかかっていたと判断していいのでしょうか? http サーバが shutdown か close したと判断してよいです。 > 再度htmlを受信する場合は、再度acceptでsocketを作成して受信 > 開始する必要があるのかテストする必要を感じました。 再度接続する場合は、クライアント側は socket を生成して connect しなおす必要があります。サーバ側はリスニングソケットは listen しっぱなしなので、クライアントが接続しなおしてきたら accept すれば よいです。 ただし毎回接続・切断を繰り返していては性能が出ないため、HTTP/1.1 に おいて keep-alive やパイプラインなどの、コネクションを切断せずに 複数のデータを取得するための仕組みが考案されているわけです (これも アプリケーション層での工夫です)。 |
|
>>4001 68user 2週間程前PEM形式ファイルの読み込みで質問した者です。 なんとか手元を離れたので簡単に報告です。 処理は68user様のご指摘の通り行う事で全て対応できました。 色々ありがとうございました。 行ったのは以下の3処理です。 ・PEM_read_RSAPrivateKey()でPEM形式ファイルを読み込む処理 パスワード付きの場合の処理で少し苦労・・・ ・RSA_private_encrypt()で暗号化する処理 ・Base64エンコードの要求があったので、EVP_EncodeBlock()でエンコー ド処理 出来上がれば単純なのですが、着手した時は全くの白紙状態でしたので 本当に助かりました。有難うございました。 |
|
いつも参考にさせていただいております。 初めて投稿します。 上田といいます。 よろしくお願いします。 『echo サーバを作ってみよう (3)』を参考にして、echoサーバを作成してみました。 概ねはうまくいきました。 しかし、おそらく子プロセスのものだと思うのですが、defunct(ゾンビ)が残ってしまいます。 このdefunct(ゾンビ)をうまく消す方法はないものでしょうか? ちなみに、私の環境は Cobalt LINUX 5.0 です。 もし、私の勘違いでしたらすみません。お許し下さい。 以上、よろしくお願いいたします。 上田 |
|
>>4031 上田 > このdefunct(ゾンビ)をうまく消す方法はないものでしょうか? サンプルプログラムでは wait をさぼっているためゾンビが残ります。 サンプルを直そうと思いつつ、はや 2年近く経ってしまいました。 ひとつのやり方として、 >>2584 persianopeh のように SIGCHLD をキャッチする方法があります。あるいは WNOHANG を 指定して waitpid してもよいです。 |
|
>>4032 68user 68userさん、ありがとうございます。 教えていただいた $SIG{CHLD} = sub { wait }; ですが、不勉強なもので、記述する場所に若干の不安が残っています。 一応、43行目と44行目の間に記述したところ、次の3つは達成できました(目的は達成できました)。 ・サーバ機能 ・複数同時アクセス ・defunctの消去 もし記述する場所が間違っていれば、またご連絡いただけないでしょうか? 36: # forkで子プロセスを生成 37: if ( $pid = fork() ){ 38: # こちらは親プロセス 39: print "親プロセス($$): 引続きポート $port を見張ります。\n"; 40: print "親プロセス($$): クライアントの相手はプロセス $pid が行います。\n"; 41: 42: # 親プロセスはソケットをクローズ 43: close(CLIENT); $SIG{CHLD} = sub { wait }; #←←←ここに追加しました。 44: next; 以上、ありがとうございました。 今後ともよろしくお願いいたします。 上田 |
|
Cシェルの中で、sqlplusに接続してsqlを実行して結果を表示したいのですが、どのようにすればよいですか? 皆さん、教えてください。よろしくお願いします。 |
|
始めまして。 sedコマンドで、改行を含む文字列へ変換したいのですが、どのようにすればいいですか? abcde ------ fgh ijk たとえば、abcdeをfgh(改行)ijkとしたい場合、 sed "s/abcde/fghijk/g" file1 > file2 これでは改行無しで置換されてしまいます。 \n,\r\nなど埋め込んでみましたがうまくいきませんでした。 皆さん教えてください、宜しくお願いします。 |
|
Cシェルの中で、コマンドオプションの有無を判断するのには、どのようにIF文を書けば良いですか? 教えてください、よろしくお願いします。 |
|
>>4034 noza ヒアドキュメントを使うとできた筈ですが sqlplusの引数でユーザ名とパスワードが必要になるため お勧めしません。 >>4035 アトヌル sedでは確か無理だったと思います。 (嘘ついてたらごめんなさい。) >>4036 y コマンドオプションって何ですか?引数の事? |
|
>>4033 上田 fork の前にシグナルハンドラを設定するのが普通かと思います。でないと、 設定前にシグナルが飛んできたら困りますので。 ただしシグナルハンドラは子プロセスに引き継がれるので、fork 後に シグナルハンドラを戻すなどの対処が必要です (この例では子プロセスが SIGCHLD を受けることはないので、どちらでも構わないのですが)。 >>4037 zsh > ヒアドキュメントを使うとできた筈ですが ヒアドキュメントでもいいし、別ファイルにしておいて sqlplus $user/$pass @hoge.sql としてもよいです。 > sqlplusの引数でユーザ名とパスワードが必要になるためお勧めしません。 これはまぁいいんじゃないですかね。Perl で Oracle に接続しても スクリプト中にパスワードを書きますし、Pro*C でもバイナリを strings すればわかりますし。 |
|
yahooオークションの自動ログインシステムをプログラムしていますが、ログインできません。 どなたかご教授願います。以下にソースを掲載しておきます。 import java.net.*; import java.io.*; public class post { public static void main(String[] args) { try { int start = 0; PrintWriter pw = new PrintWriter (new BufferedWriter(new FileWriter("post.html"))); // URLクラスのインスタンスを生成 URL helloURL = new URL("http://login.yahoo.co.jp/config/login"); // 接続します URLConnection con = helloURL.openConnection(); // 出力を行うように設定します con.setDoOutput(true); con.setDoInput(true); con.setRequestProperty("Cookie","B=banotfp0orfbj&b=2"); con.setRequestProperty("Accept-Language", "ja"); con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); // 出力ストリームを取得 PrintWriter out = new PrintWriter(con.getOutputStream()); out.print(".tries=1"); out.print(".done=http://page7.auctions.yahoo.co.jp/jp/auction/g25311966?"); out.print(".src=auc"); out.print("lg=jp"); out.print(".intl=jp"); out.print("login=********"); out.print("passwd=*******"); out.close(); // 入力ストリームを取得 BufferedReader in = new BufferedReader( new InputStreamReader( con.getInputStream(),"JISAutoDetect")); // 一行ずつ読み込みます String line; while ((line = in.readLine()) != null) { // 表示します pw.println(line); } // 入力ストリームを閉じます in.close(); } catch (IOException e) { e.printStackTrace(); } } } post.htmlにはログインされた後の商品ページが表示されます(ログインできれば) |
|
yahooオークションの自動ログインプログラムを開発していますが、どーしてもログイン できません。どなたかご教授願います。以下にソースを掲載します。 import java.net.*; import java.io.*; public class post { public static void main(String[] args) { try { int start = 0; PrintWriter pw = new PrintWriter (new BufferedWriter(new FileWriter("post.html"))); // URLクラスのインスタンスを生成 URL helloURL = new URL("http://login.yahoo.co.jp/config/login"); // 接続します URLConnection con = helloURL.openConnection(); // 出力を行うように設定します con.setDoOutput(true); con.setDoInput(true); con.setRequestProperty("Cookie","B=banotfp0orfbj&b=2"); con.setRequestProperty("Accept-Language", "ja"); con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); // 出力ストリームを取得 PrintWriter out = new PrintWriter(con.getOutputStream()); out.print(".tries=1"); out.print(".done=http://page7.auctions.yahoo.co.jp/jp/auction/g25311966?"); out.print(".src=auc"); out.print("lg=jp"); out.print(".intl=jp"); out.print("login=******"); out.print("passwd=*****"); out.close(); // 入力ストリームを取得 BufferedReader in = new BufferedReader( new InputStreamReader( con.getInputStream(),"JISAutoDetect")); // 一行ずつ読み込みます String line; while ((line = in.readLine()) != null) { // 表示します pw.println(line); } // 入力ストリームを閉じます in.close(); } catch (IOException e) { e.printStackTrace(); } } } なお、post.htmlには正常にログインできれば商品ページのソースを書き込みます。 |
|
はじめまして、こんばんは. http://x68000.q-e-d.net/~68user/net/c-http-1.html や http://x68000.q-e-d.net/~68user/net/c-http-2.html 関連で、 URL の解釈について、 http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/pbrowser.html のような記事を見つけました. 正規表現でも見かけられるやりかたでできるのだなぁと目が覚めました. 質問でもなんでもないのですが、お邪魔しましたm(_ _)m |
|
>>4040 やまさん Java の実行環境がないので検証できませんが、普通にブラウザでアクセスし、 ethereal などでパケットダンプしましょう。さらに自作プログラムのやりとりも 同様にパケットダンプして見比べてみましょう。 >>4041 waka http://www.din.or.jp/~ohzaki/perl.htm#httpURL というのもあります。 scanf 系で %[..] として文字集合が使えるのは初めて知りました。 |
|
FTPクライアントで分割ダウンロードする場合、 どんなプログラムになるのでしょうか? HTTPクライアントで分割アップロードする場合、 どんなプログラムになるのでしょうか? 教えて頂けませんか? |
|
>>4043 クライアント > FTPクライアントで分割ダウンロードする場合、 > どんなプログラムになるのでしょうか? REST を使います。 > HTTPクライアントで分割アップロードする場合、 > どんなプログラムになるのでしょうか? 分割アップロードが PUT を指すのか POST を指すのか知りませんが、 規格としては分割アップロードなるものは規定されていないと思います。 サーバ側の CGI なり Servlet なりで引数を解釈するようなつくりに すれば、なんだって可能です。 |
|
68userさんご教授ありがとうございます。言われたとおりにパケットダンプしてソースを 書き直したところ、今度はcookieが無効であると言う画面がでました。 書き直したソースは以下の通りです。 import java.net.*; import java.io.*; public class post { public static void main(String[] args) { try { int start = 0; PrintWriter pw = new PrintWriter (new BufferedWriter(new FileWriter("post.html"))); // URLクラスのインスタンスを生成 URL helloURL = new URL("http://login.yahoo.co.jp/config/login"); // 接続します URLConnection con = helloURL.openConnection(); // 出力を行うように設定します con.setDoOutput(true); con.setDoInput(true); con.setRequestProperty("Accept","image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*"); con.setRequestProperty("Accept-Language", "ja"); con.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); con.setRequestProperty("Accept-Encoding", "gzip, deflate"); con.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"); con.setRequestProperty("Host","login.yahoo.co.jp"); con.setRequestProperty("Content-Length","145"); con.setRequestProperty("Connection","Keep-Alive"); con.setRequestProperty("Cache-Control","no-cache"); // 出力ストリームを取得 PrintWriter out = new PrintWriter(con.getOutputStream()); out.print(".tries=1&.done=http%3A%2F%2Fpage7.auctions.yahoo.co.jp%2Fjp%2Fauction%2Fg25311966%3F&.src=auc&lg=jp&.intl=jp&login=formulaatsushi&passwd=formula3"); out.close(); // 入力ストリームを取得 BufferedReader in = new BufferedReader( new InputStreamReader( con.getInputStream(),"JISAutoDetect")); // 一行ずつ読み込みます String line; while ((line = in.readLine()) != null) { // 表示します pw.println(line); } // 入力ストリームを閉じます in.close(); } catch (IOException e) { e.printStackTrace(); } } } etherealのログ POST /config/login HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */* Accept-Language: ja Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) Host: login.yahoo.co.jp Content-Length: 145 Connection: Keep-Alive Cache-Control: no-cache HTTP/1.1 302 Found Date: Tue, 09 Nov 2004 10:41:26 GMT P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV" Location: http://login.yahoo.co.jp/config/verify?.done=http%3a//page7.auctions.yahoo.co.jp/jp/auction/g25311966%3f&.src=auc Cache-Control: private Pragma: no-cache Expires: Thu, 05 Jan 1995 22:00:00 GMT Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=euc-jp Set-Cookie: B=0jed4t90p17mm&b=2; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp Set-Cookie: F=a=2AxMxi8sve2gE8jFN9rJ0gWrAAvZQREqLtzb2_UZvSzjM5JqtaIqse_xaCta&b=pEuj; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp Set-Cookie: Y=v=1&n=2q7rnefmn4krh&l=5ehckb00jiki78/o&p=m2avvjp403000400&r=bk&lg=jp&intl=jp&np=1; path=/; domain=.yahoo.co.jp Set-Cookie: T=z=W7JkBBWBfkBBIROI05ItUNi&a=YAE&sk=DAA.hvzZ6s/ztd&d=YQFZQUUBb2sBWlcwLQF0aXABYm4ySnNEAXp6AVc3SmtCQmdXQQ--; path=/; domain=.yahoo.co.jp GET /config/verify?.done=http%3a//page7.auctions.yahoo.co.jp/jp/auction/g25311966%3f&.src=auc HTTP/1.1 User-Agent: Java1.4.0 Host: login.yahoo.co.jp Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive HTTP/1.1 200 OK Date: Tue, 09 Nov 2004 10:41:26 GMT P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV" Refresh: 900; URL=http://www.yahoo.co.jp/ Cache-Control: private Pragma: no-cache Expires: Thu, 05 Jan 1995 22:00:00 GMT Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=euc-jp Set-Cookie: B=c0ev5h10p17mm&b=2; expires=Thu, 15 Apr 2010 20:00:00 GMT; path=/; domain=.yahoo.co.jp /config/verify?.done=http%3a//page7.auctions.yahoo.co.jp/jp/auction/g25311を getする際にヘッダー情報が変わってしまいます。 どなたかご教授願います。 |
|
>>4045 やまさん 正解は ethereal が教えてくれているはずですので、こういう質問は回答 する側としては非常につまらないのです。だから、質問する側も、もう ちょっと努力する姿勢を見せてください。 > 今度はcookieが無効であると言う画面がでました などというわけのわからんことを言っていないで、 「IE では〜というリクエストを送っているが、Java だと〜という リクエストを送信してしまう。IE と同じリクエストを送信するには どうしたらよいか」 くらいの質問にブレイクダウンしてください。リクエストとレスポンスを 見比べるだけの注意力があれば簡単なはずです。 あと、HTTP の基本的な知識があるのかないのかさっぱりわからないので、 http://x68000.q-e-d.net/~68user/net/ HTTP クライアントを作ってみよう(1)〜(4) を読んだ上で、telnet を使って接続してみてください。それに成功してから 初めて Java で実現するにはどうすればいいか、という話になるわけです。 一応ヒントだけは出しておきます。 - /config/verify に cookie なしでリクエストしているのは誰か? まだ 提示していないソースがあるのか? URLConnection クラスが自動的に 再接続しているのか? - URLConnection が自動的に再接続しているのであれば、 HttpURLConnection クラスを使って setInstanceFollowRedirects メソッドで再接続を抑止し、自前で cookie 付きで再接続してみては。 |
|
>>4046 68user > 一応ヒントだけは出しておきます。 試したわけではないので、ヒントが的確かどうかは知りません。念のため。 |
|
当分の間、本掲示板での UNIX・ネットワークに関する一般的な質問の受け付けを 中止します。理由は http://X68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?howtouse さえ読まないマルチポスト馬鹿のせいで不愉快な思いをするのがアホらしくなった からです。UNIX・ネットワークに関する一般的な質問がなされた場合、その書き込みを 削除することがあります。 今後は当ページのコンテンツに対するご意見・ご指摘のみ受け付けます。 あと、雑談も OK です。 これまで回答してくださった方々、まともな質問者の方々には深く感謝 いたします。ありがとうございました。 |
|
>>4048 68user 懇切丁寧な回答、いままでどうもお疲れ様でした。 なんだかんだ結局見てるだけで力になれず、すんません。 ところで、コンテンツに関するご意見・ご指摘は歓迎とのことですし、このまま 何もやりとりが亡くなるのも寂しいので、ちょっと一言。 「POP3クライアントを作ってみよう」で、APOPではサーバ側に生パスワードを 持っていないといけないという点でセキュリティ上イマイチである、と 書かれていますが、それではどんな方法だと納得できそうですか? (crypt等したパスワードを使うというイメージ or もっとよい案?) |
|
>>4038 68user 68userさんありがとうございます。返事が遅れてすみません。 実は『シグナルハンドラを戻すなどの対処』部分がよく分かりませんでした。 もしよろしければこの部分のコードを教えていただけないでしょうか? 本当は自分なりに勉強してこの部分のコードを書き、このサイトにアップしたいという気持ちはあるのですが、なにぶん初心者なもので。。。 実際のテストでうまくいっているということと、この例では子プロセスがSIGCHLDを受けることはないとのことですので、当面はとりあえず現在の位置で対応させていただきます。 もし『シグナルハンドラを戻すなどの対処』を私なりに見つけることができたら、本サイトで報告させていただきます。 上田 |
|
>>4049 has その文章を書いたのは 5〜6年前なのでもう忘れてしまいましたが、 改めて考えてみました。 まず、 - ファイルに生パスワードを保存しておくのはよいことではない というのは納得していただけるかと思われます。 もちろん、デメリットを上回るメリットがあれば生パスワードを保存 してもよいのでしょうが、APOP については特にメリットらしきものは 見当たりません。 また、管理面からいっても、UNIX のシャドウパスワードと別管理でも よい場合もあるでしょうし、別管理になっても構わない場合もあるでしょう。 しかし、APOP では別管理にせざるをえません (選択の余地がない)。 > それではどんな方法だと納得できそうですか? APOP はサーバがクライアントにタイムスタンプを通知する際、サーバが 保持しているパスワードが - 生パスワード - パスワードの MD5 値 - パスワードの SHA-* 値 のいずれであるかを通知する、というのがわたしの考えです。 そうすれば、クライアント側はそれに応じて入力されたパスワードをそのまま 送るか、MD5 値を送るかを決定できます。また、サーバ管理者の方針により、 生パスワードで管理することもできるし、シャドウパスワードと共用にする こともできます。 なお、この部分はどうも叩かれ所のようで、この APOP 批判の文章を読んで 「こいつはわかってない」と評価している人を掲示板などで見かけます (わたしは何がどうわかってないのかが理解できないので、何ともいえない のですが)。 >>4050 上田 > 実は『シグナルハンドラを戻すなどの対処』部分がよく分かりませんでした。 > もしよろしければこの部分のコードを教えていただけないでしょうか? $SIG{CHLD} = 'DEFAULT'; です。 |
|
>>4051 68user > 管理面からいっても、UNIX のシャドウパスワードと別管理でも > よい場合もあるでしょうし、別管理になっても構わない場合もあるでしょう。 > しかし、APOP では別管理にせざるをえません (選択の余地がない)。 そうですね。使う側がやりたいように出来るよう、自由度を持たせておくという 考え方のツールは多い気がしますし。 > サーバが保持しているパスワードが > - 生パスワード > - パスワードの MD5 値 > - パスワードの SHA-* 値 > のいずれであるかを通知する 同感です。 > なお、この部分はどうも叩かれ所のようで、この APOP 批判の文章を読んで > 「こいつはわかってない」と評価している人を掲示板などで見かけます そうなんですか。私にもよくわかっていないようなので誰かに教えて欲しいです。 RFC2195とかにはchallenge-response authentication protocolを使うと サーバにパスワードを*平文で保存せずに済む*とあるようです。 ひょっとしてパスワードとは別の、もっと重要なことが理解できてない ということなのかもしれないですね…。 |
|
>>4052 has > RFC2195とかにはchallenge-response authentication protocolを使うと > サーバにパスワードを*平文で保存せずに済む*とあるようです。 なるほど。 http://www.lins.jp/~obata/imap/rfc/rfc2195ja.html 鍵付き MD5 ダイジェストを利用し、サーバ上に平文で秘密鍵が保管 される必要はないので、RFC 1734 で規定される POP3 の使用のための APOP より改善されたものからなるともいえる。 ということで、APOP はイマイチと自信を持っていえるようになりました。 該当ページもそのうち加筆・修正しておきます。 ところで RFC 2195 は IMAP と POP に CRAM を導入しよう、というものですが、 IMAP では CRAM-MD5 や CRAM-SHA に対応した実装がいろいろありますけど、 POP の方は普及してるんですかねぇ。 http://risky.cs.inf.shizuoka.ac.jp/~ynoguchi/index.php?POP%20(%20courier-pop%20) には (courier-pop は) courier-imap と同様,CRAM-MD5, CRAM-SHA に対応可能 だが,結局,そのプロトコルに対応するクライアントがない とありますし。 |
|
>>4053 68user 更新しました。 http://x68000.q-e-d.net/~68user/net/pop3-3.html 「シャドウパスワードと共通化できない」という批判は、CRAM-MD5 でも 共通化できないような気がしたので (crypt には salt があるけど、 CRAM-MD5 にはないし、CRAM-MD5 には ipad とか opad とかがあるけど、 crypt にはないから)、とりあえず削除してあります。 |
|
>>4047 やまさん 68userさんお返事遅くなりました。四苦八苦しましたけど ヒントいただいた通りプログラムを組みなおしたところ、 無事ログインできました。ありがとうございました。 |
|
なんとなくアンケートをとってみることにしました。 http://X68000.q-e-d.net/~68user/tmp/questionnaire.cgi |
|
「UNIX の部屋」を更新しました。 http://X68000.q-e-d.net/~68user/unix/ |
|
http://x68000.q-e-d.net/~68user/unix/pickup?freebsd-update 注意点は以下の通り。とある文言の、 <li>freebsd-updateの<li>、 HTTP 経由でファイルを\取得するので、の\、 これらは、誤植でしょうか? でも、ソースを見ると<LI>と大文字で書かれてるし・・・ |
|
>>4058 へにか ありがとうございます。修正しました。 誤植って言いはると void 氏みたいなので、タイプミスということでひとつ。 |
|
>>4059 68user > 誤植って言いはると void 氏みたいなので、タイプミスということでひとつ。 了解しました。気になったので、検索かけたら・・・ 何て言っていいのやら。 |
|
日記。 % mkdir dir % touch dir/file % chmod 400 dir % ls -l dir としたとき、dir/file を stat(2) する権限がないわけなので、Permission denied となる (Linux・Solaris では実際にそうなる)。 # http://x68000.q-e-d.net/~68user/unix/pickup?chmod ところが FreeBSD では何も表示されず (エラーも出ず)、exit status も 0 で正常終了してしまっている。 これを調べようと、FreeBSD 5.2.1-RELEASE の ls ソースを見てみる。 # http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/ls/ ずっと ls ってのは opendir して readdir して stat するものだと信じていたが、 実際には fts(3) -- traverse a file hierarchy http://www.freebsd.org/cgi/man.cgi?query=fts&manpath=FreeBSD+5.3-RELEASE+and+Ports&format=html を使っていて、上記のシステムコールは間接的にしか使用していなかった。 >>3773 68user で買った本を読むと、しっかり書いてあった。 この人の書く文章にはおもしろみのかけらもなく なんて文句言う前に、ちゃんと目を通すべきということか (全然読んでなかった)。 fts(3) は 4.4BSD から実装され、GNU 方面では glibc2 で採用された。glibc の マニュアルには BSD 4.4. fts ユーティリティは、将来の St -p1003.1-88 リビジョンに 含まれると期待されている。 と威勢のいいことが書いてあるが、少なくとも Solaris9 には実装されていない。 はじめて fts(3) を使ってみる。以下のプログラムで、stat できない場合エラーと 判断できている。FreeBSD の ls にはそれっぽい箇所があるにはあるが、その処理が うまく機能していないのか、あるいは謎の仕様なのか…。 ----- #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fts.h> main(){ FTS *ftsp; char *path[2]={"dir", NULL}; ftsp = fts_open(path, FTS_PHYSICAL | FTS_NOCHDIR, NULL); if ( ftsp == NULL ){ perror("fts_open"); exit(1); } FTSENT *ftsentp; while (1){ ftsentp = fts_read(ftsp); if ( ftsentp == NULL ){ break; } struct stat *sp = ftsentp->fts_statp; printf("%c", sp->st_mode&S_IRUSR ? 'r' : '-'); printf("%c", sp->st_mode&S_IWUSR ? 'w' : '-'); printf("%c", sp->st_mode&S_IXUSR ? 'x' : '-'); printf("%c", sp->st_mode&S_IRGRP ? 'r' : '-'); printf("%c", sp->st_mode&S_IWGRP ? 'w' : '-'); printf("%c", sp->st_mode&S_IXGRP ? 'x' : '-'); printf("%c", sp->st_mode&S_IROTH ? 'r' : '-'); printf("%c", sp->st_mode&S_IWOTH ? 'w' : '-'); printf("%c", sp->st_mode&S_IXOTH ? 'x' : '-'); printf(" %d %s\n", sp->st_mode, ftsentp->fts_path); if ( ftsentp->fts_info == FTS_NS ){ perror("stat failed"); exit(1); } } exit(0); } ------ あと、 http://www.freebsd.org/cgi/man.cgi にて FreeBSD 5.3-RELEASE からは ports マニュアルも検索できるように なっていることに気づいた。これは大変素晴らしい。 |
|
>>4056 68user > なんとなくアンケートをとってみることにしました。 アンケートの受付を (11/27 の時点で) 終了しました。結果をお知らせします。 [質問] 68user's page で今後読みたいコンテンツがあれば選択してください (複数選択可)。 [選択肢] 1. UNIX コマンドのコンテンツ充実 2. UNIX howto (「〜するには?」集のようなもの) 3. UNIX インストール・サーバ構築 4. ネットワークプログラミングのコンテンツ充実 5. web と CGI についてのコンテンツ充実 (含 Java Servlet・EJB) 6. C 言語講座的なもの 7. 業務系システム構築講座 (設計・コーディング・DB) 8. プログラマや SE の仕事について思うことをつらつらと [結果] 回答総数 67 1. 36(17%) ************************************ 2. 42(20%) ****************************************** 3. 27(13%) *************************** 4. 29(14%) ***************************** 5. 13(06%) ************* 6. 14(06%) ************** 7. 18(08%) ****************** 8. 25(12%) ************************* [感想] 1・2 が多いのは予想していましたが、5・6 が少ないのは予想外でした。 5 は書きかけのコンテンツのまま放置してあるので、その辺の情報を今ほしい 人はここにはいないってことでしょうか。6 は世の中は意外と保守的で、仕事で いまだに C でごりごり書いている (書かされている) 人が多数いるに違いない と予想したのですが、はずれたようで。 あと、7 より 8 の方が多いのもちょっと不思議です。 頂いたコメントについてですが、 > div 開始タグより div 終了タグが圧倒的に多い とりあえず気づいたところは直しました。自分で確認して、あまりにも 閉じ側が多いので笑ってしまいました。 あと、 >>3951 ほんたか > 1.「h 1文字左に移動」がリストからはみ出ています。 も直しました。 アンケート結果は今後の参考にさせていただきます。ありがとうございました。 |
|
「ネットワークプログラミングの基礎知識」に HTTP クライアントを作ってみよう(5) - 認証編 - http://X68000.q-e-d.net/~68user/net/http-auth-1.html を追加しました。 |
|
こんにちは。 こちらのサイトに来るのは今日が初めてですが、内容が充実していて大変参考になるサイトですね。 今後も利用させて頂こうと思います。さっそくですが、xlibについて質問をさせてください。http://x68000.q-e-d.net/~68user/xprogram/xlib-1.html のxlib-1.c を cc -o xlib-1 xlib-1.c -I /usr/X11R6/include -lX11 -L /usr/X11R6/li のように実行したら、何にも出て来なかった。私が使っているのは red hat linux 8.0です。宜しくお願いします。 |
|
>>4064 sqh00 カレントディレクトリに xlib-1 というバイナリが生成されているか、 あるいは何かしらのエラーメッセージが出力されていると思いますので 確認してみてください。 |
|
カレントディレクトリに xlib-1 というバイナリが生成されているが、実行できない。このように、実行したら、何にも出て来なかった。 [root@dm1511 xlib]# xlib-1 bash: xlib-1: command not found |
|
>>4066 sqh00 カレントディレクトリにあるバイナリは % ./xlib-1 と実行してください (% はプロンプト)。 |
|
実行ができました。ありがとうございます。 |
|
「ネットワークプログラミングの基礎知識」に HTTP クライアントを作ってみよう(6) - Digest 認証編 - http://X68000.q-e-d.net/~68user/net/http-auth-2.html を追加しました。 ところで cnonce は選択平文攻撃への耐性を高める効果があるとかなんとか 知ったかぶって書いてしまいましたが、cnonce がないと具体的にどういう 攻撃ができるんでしょうかね。 差分解読法かなぁと思ったんですが、MD5 に差分解読法って有効なんでしょうか。 あるいは salt 的な意味合いがあるんでしょうか? いまいちイメージがわかない。 |
|
「ネットワークプログラミングの基礎知識」で勉強させていただいています。 kqueue の説明をみて早速いぢってみました。 サンプルでは kqueue() の戻り値に対して、終了時の処理が何もされていません。 man で調べたたところ、kqueue() の戻り値はファイルデスクリプタと記されています。 init kq = kqueue(); close(kq); としても、close の戻り値が -1 で閉じることができませんでした。 なので、 init kq = kqueue(); close(kq); init kq = kqueue(); close(kq); とすると、kq は 1 回目が 9、2 回目が 10 といったようにインクリメントされてしまいました。 fcntl で kq の情報を取得しようとしてもすべての戻り値は -1 でした。 なんとなく、ファイルデスクリプタとして扱えていないような気がします。 当方は Mac OS X 10.3.7(BSD 4.4 ベースの Darwin) です。 本当の BSD なら、close できるものなのでしょうか。 もし、kqueue の説明を追加する予定があるようでしたら、close または、それに代わる処理も追加してもらえると大変助かります。 |
|
>>4070 たなか > 本当の BSD なら、close できるものなのでしょうか。 FreeBSD 5.2-RELEASE では close(2) できました。ちなみに カーネルには queue 用を close するコードも含まれています。 詳しくないので事情はわかりませんが、Mac OS X (Darwin?) の 問題ではないかと思います。 > close または、それに代わる処理も追加してもらえると大変助かります。 echo サーバばかり作っていると終了処理がおろそかになっていけませんね。 「quit」を送ると終了するようにするなど、何かしら考えたいと思います。 |
|
>>4071 68user どうもありがとうございます。 >> 本当の BSD なら、close できるものなのでしょうか。 > FreeBSD 5.2-RELEASE では close(2) できました。ちなみに > カーネルには queue 用を close するコードも含まれています。 手元に BSD が動作するマシンがないので、実験できませんでした。 Darwin の問題ですね。Apple に連絡してみます。 下のコードを実行すると次のような結果となります。 kqueue : 3 close(3) : -1 close: Bad file descriptor kqueue : 4 close(4) : -1 close: Bad file descriptor ------------------------------------------------ #include <stdio.h> #include <sys/types.h> #include <sys/event.h> #include <sys/time.h> #include <unistd.h> int main() { int kq; int ret; kq = kqueue(); printf("kqueue : %d?n", kq); if (kq == -1) { perror("kqueue"); } else { ret = close(kq); printf("close(%d) : %d?n", kq, ret); if (ret == -1) { perror("close"); } } kq = kqueue(); printf("kqueue : %d?n", kq); if (kq == -1) { perror("kqueue"); } else { ret = close(kq); printf("close(%d) : %d?n", kq, ret); if (ret == -1) { perror("close"); } } return 0; } ------------------------------------------------ |
|
サーバがHP-UX11.00で、Bシェルでシェルを書いています。 シェル中で、「ls *.txt」を実行しています。 "*.txt"が存在しない場合、エラーが出力されるので、 「ls *t.xt > /dev/null 2>&1」で、エラーを出さないよう にしました。 そこで、lsの処理に"grep -v"を追加し、"*.txt"がない 状態にすると「*.txt がみつかりません。」がでます。 ls *t.xt | grep -v "kekka" > /dev/null 2>&1 エラーがでないようにするにはどうしたらよいのですか。 |
|
ここで質問する人のブラウザには、 「UNIX・ネットワークに関する一般的な質問は受け付けていません。」 という一文は映らないのだろうか? >>4073 さいさん 最終的にどうしたいのか良く判らないが、取りあえずはこれで。 ls *txt 2>/dev/null | grep -v "kekka" |
|
>>4074 zsh ありがとうございます。 実際にしたいことは、 シェルを実行した際、「*.txt がみつかりません。」を 標準出力したくないのと、戻り値の判定をしたいのです。 ls *.ldif | grep -v "kekka" > /dev/null 2>&1 if [ $? -ne 0 ] ; then echo "Text File Nothing Today" exit 0 fi |
|
>>4075 さいさん すみません。 間違いがありました。 実際にしたいことは、 シェルを実行した際、「*.txt がみつかりません。」を 標準出力したくないのと、戻り値の判定をしたいのです。 ls *.txt | grep -v "kekka" > /dev/null 2>&1 if [ $? -ne 0 ] ; then echo "Text File Nothing Today" exit 0 fi |
|
>>4076 さいさん 結果的にファイルの有無を確認したいんですよね? だとすれば、戻り値のチェックよりも下記のようにしては如何でしょうか? set -- `ls *txt 2>/dev/null | grep -v "kekka"` if [ $# -eq 0 ] ; then echo "no file." fi ※:シェルに引数を与えている場合等は考慮が必要です。 |
|
>>4077 zsh ありがとうございます。 set -- `ls *txt 2>/dev/null | grep -v "kekka"` の 「set -- `ls 」 の使い方教えてください。 どのような意味なのですか |
|
set -- で引数(定位置パラメタだっけ?)を書き換えることが出来ます。 今回の場合は、 ls *txt 2>/dev/null | grep -v "kekka" の出力で置き換える事になりますので、 $#で上記コマンドの結果出力されたファイル数を参照できます。 |
|
>>4079 zsh お礼遅くなって申し訳ありません。 ありがとうございます。 >set -- >で引数(定位置パラメタだっけ?)を書き換えることが出来ます。 参考本とかで調べてます。 |
|
ご存知の方おられましたら、ご教授ください。 環境OSは、Win2000です。 OpenSSLライブラリを利用したDER形式の鍵ファイルの読み書き方法を実装方法が わかりません。i2d_RSAPrivateKey、d2i_RSAPrivateKeyを利用し、ファイル出力 をしてみましたが、_fp付きはエラーです。(_bio付きはOK) また、ここで出力された鍵ファイルは、OpenSSLでは、暗号/復号可能です。 しかし、他社製品(RSA BSAFE)では、鍵ファイル読み込みエラーとなります。 rsaコマンド等で変換作業を行うと読み込み可能となり、暗号・復号ができます。 なんだか理解できません。 以上、宜しくお願い致します。 |
|
>>4081 しょしん 暗号に関する一般的な質問も受け付けていません。 ■暗号技術【ROUND2】■ http://pc5.2ch.net/test/read.cgi/tech/1088530204/l50 などで質問してください。 - OpenSSL のバージョンくらい書きましょう。 - 何を知りたいのか不明。_bio 付きで出力して、rsa コマンド等で 変換して、RSA BSAFE で読み込めているんなら別にいいのでは。 例えば「rsa コマンドに頼りたくない」「なぜ rsa コマンドを 使わなければいけないのかわからないので、解説してほしい」 などと書くべき。 - 単に _fp 付きはエラーと言われても、「コーディングミスでは?」 くらいしか返す言葉はありません。つーか、ソースくらい提示しましょう。 |
|
内容不備&質問場所違いでした。 大変失礼しました。 撤収します。 |
|
CGIでmkdirとかmountとかを呼び出す方法をご教授願います。 サーバー上でプログラムを実行させたいのですが、動作しませんでした。 C言語にてCGIプログラムを作っています。 execveを使用してもうまく動作しませんでした。 ------- test.c (test.cgi) ----------------------- #include <stdio.h> int main() { char *argv[3]; argv[0]="/bin/mkdir"; argv[1]="test"; argv[2]=NULL; int pid=fork(); if(pid==0){ execve(argv[0],argv,NULL); perror("execve"); exit(0); } return 0; } |
|
↓↓ #include <unistd.h> が抜けていました。 よろしくお願いします。 |
|
はじめまして。 いつも「UNIXの部屋」を利用させていただいています。 awkコマンドのところですが、誤字がありましたのでお知らせさせていただきました。 **************************************************************** 特殊なパターンとして BEGIN と END がある。BEGIN は最初に実行され、END は最後に実行される。 % ls -l | awl 'BEGIN { print "START!"} {total+=$5; print $9} END {print "size total="total} ' **************************************************************** 1つ目のパイプの後の「awk」が「awl」になっています。 「awkのエイリアスです。」なんていわれたら、どうしようもありませんが…。 取り急ぎ、ご連絡までに… |
|
>>4086 たらい 修正いたしました。ご指摘ありがとうございました。 http://X68000.q-e-d.net/~68user/unix/pickup?awk |
|
ライセンスについて質問です。 このサイトにあるコードはフリーソフトウェアと考えてよいでしょうか。 チュートリアルサイトなのでコードを自由に利用してよいだろうとは思ったのですが、 念のため確認させてください。 具体的にはecho-server-select.cを参考にしながらプログラムを書いたのですが、 将来それをフリーソフトウェアとして配布したいと考えています。 問題ないですよね? 問題あるなら空で書けるように修行してやり直すことになるのですが…。 ちなみに作っているものはこれ http://humming.dip.jp/bardic/ でネットゲームのようなものです。 よろしくお願いします。 |
|
>>4088 tansy > 将来それをフリーソフトウェアとして配布したいと考えています。 > 問題ないですよね? はい、問題ありません。ただしエラーチェックが甘めなので、それを踏まえた上で お使いください。 ついでなのでライセンスを明確にしたいと思います。 わたしが書いたプログラムは、特に明記していない場合は修正 BSD ライセンスと します (現時点で修正 BSD ライセンス以外のライセンスを適用しているプログラム はありません)。 わたしが書いた文章は、フリーではありません。ただし (言うまでもありませんが) 著作権法における引用は可です。 |
|
>>4089 68user 修正BSDライセンスであること了解しました。 > ただしエラーチェックが甘めなので、それを踏まえた上でお使いください。 了解です。 ありがとうございました。 |
|
はじめまして。今卒業研究に必死に取り組んでいるんですけども、 ソケットプログラミングがよく分かりません・・・ sendやrecvなどを使って、更新されていくデータを一定時間 ずーっと送信、もしくは受信ってできますか? 研究室も誰もいないし、聞けるのはみなさんしかいません。うう。 どうかお願いします。 PS.焦っているので、他の掲示板などでも同様の書き込みをするかもしれません。 ここが最初ですが、もし他の掲示板から何かいいアドバイスをいただけましたら、 すぐに反映させていきたいと思います。よろしくお願いします。 |
|
亜紀さん 質問の内容が漠然としているので、ちょっと答えずらいのですが。。。 一定時間ずっと、送信もしくは受信することはできますよ。 まあ、ソケットはありふれたものなので、インターネット上を検索すれば、 ソースコードの例は簡単に見つかると思いますよ。 ソケット、socket、ソースなどのキーワードで検索すれば簡単に見つかるかも。 焦る気持ちはわかりますが、同じ質問を複数の掲示板に書き込む行為は良く ないので、やめたほうがいいですね。 では。 |
|
JAVA から cシェルを実行したいのですが どのように記述すればよいのでしょうか。 Runtime rt = Runtime.getRuntime(); String[] command = {"/root/scripts/t.csh"} ; Process process = rt.exec(command); と記述しておりますが、実行できず困っています。 |
|
UNIXのシェルスクリプトについて教えて下さい。 OSは、HP-UX11.00です。 ファイル中に存在するある文字列をsedを使用して置換して いるのですが、sedで置換を行うとき条件を指定して実行する ことはできるのでしょうか。 id: u=aaaa.bbbb,o=co.jp,o=1234,code=vip aaaaaa,bbbb,code=vip,code=ip bbbbb,bbbb id: u=aaaa.bbbb,o=co.jp,o=1234,code=vip aaaaaa,bbbb,code=vip,code=ip bbbbb,bbbb id: u=aaaa.bbbb,o=co.jp,o=1234,code=vip aaaaaa,bbbb,code=vip,code=ip bbbbb,bbbb id: u=aaaa.bbbb,o=co.jp,o=1234,code=vip sed 's/code=vip$/code=normal/g' ファイル名 とすると「code=vip」がある行に対して置換が行われます。 先頭が、"id: "から始まる行のみ「code=vip」を「code=normal」に 置換したいのですが、sed1回で可能でしょうか。 それとも、作り込みが必要でしょうか。 |
|
Solaris8のcshについて教えて下さい。 nawkを使用しているのですが、1行での表記が長いので手頃なところで改行 して見易いように複数行にしたいのですが、その場合、これは、1行の処理 ですと認識させたいのですが、どのようにすればよいのですか。 ¥、&、$とかつけてみたのですが、「Unmatched '」がでてしまいます。 お願いします。 #!/usr/bin/csh # set sys_no = "99" set aaa=`nawk -v NO=$sys_no -F":" '/^[ \t]*#START/,/^[ \t]*#END/ \ { if (substr($1,1,1) != "#" && substr($1,1,2) == NO) print $2 }' list.txt` echo $aaa |
|
>>4094 とも sed -e 's/^\(id.*code=\)vip/\1nomal/' file とか sed -e '/^id/ { s/code=vip$/code=normal/ }' file あたりでできます。 >>4095 ばんじょう 「\\」でいけたと思います。 ・・・正直cshはやめた方が良いと思いますが・・・ |
|
>4096 >「\\」でいけたと思います。 でやってみましたが無理でした。 動きはしましたが、nawk内の条件が無視され全て取り出されました。 ふと、もう1個ふやしたらどうなるのだろうと、「\\\」でやって みたところ上手くいきました。いった模様です。 しかし、変ですね。怖い環境、怖いcshだと。 >・・・正直cshはやめた方が良いと思いますが・・・ ということは、shとかbashですか。 Solarisは、bashが多いですが・ |
|
>>4096 zsh >sed -e 's/^\(id.*code=\)vip/\1nomal/' file では、上手く行きました。 >sed -e '/^id/ { s/code=vip$/code=normal/ }' file では、 sed: 関数 /^id:/ { s/code=vip$/code=normal/ } はパースできません。 となりました。 |
|
>> 4096 参考に、sedで使用している 「's/^\(id.*code=\)vip/\1nomal/' 」 「'/^id/ { s/code=vip$/code=normal/ }' 」 の使い方について教えて下さい。 |
|
>>4098 とも }の前に改行を入れないと動作しません。 (実装しているsedの違いかもしれませんが。) >>4099 やまげん 説明下手なので、この辺を参考にしてください。 ttp://pegasus.rutgers.edu/~elflord/unix/sed.html |
|
>>4100 zsh >説明下手なので、この辺を参考にしてください。 >ttp://pegasus.rutgers.edu/~elflord/unix/sed.html 英語なんですね。 |
|
>>4101 やまげん それじゃあ簡単に。 "\("と"\)"で囲まれた部分にマッチした文字列は、 変数に格納され、順番に\1,\2で取り出す事が可能です。 /Pattern/ { command } でPatternに一致した行に対してcommandを実行します。 こんな感じですかね。 正直、自分の解釈が間違っている可能性があるので、 あまり人に教えることはしないのですが。。。 |
|
はじめまして、高島屋です。 solarisでC言語にてアプリケーションを作成する際の、1プロセスが可能なファイルオープンのMAX値について教えていただけないでしょうか? 実際にopen可能な、、と言う意味ではなく、「メーカで保障されている」MAX値を調査しています。 利用しているコンパイラは「SunOneStudio8」。 まず、当方で調査した結果を報告致します。 ・ANSI規格の規格では8以上とされている。(「新ANSIC言語辞典」技術評論社→コンパイラに対して8以上を保障しなさいと言う意味だと思います) ただし、/usr/include/isostdio_iso.hでは、FOPEN_MAX=20と設定されている。(CPU=SPARK) ・solris limit,sysdefコマンドで確認した所、 limitコマンドでのファイル記述子の最大数は256。 sysdefコマンドのfile descriptorsに関する、"process Resource Limit"の値も共に256。 実際に1プロセスで256ファイル以上をオープンすると、それ以降のファイルオープンが失敗しました。 ・その他 システム全体で同時open可能なファイルの最大数があるのかは不明(調査不足) なお、sysdefコマンドで確認した所、maximum number of process = 30000 maximum processes per user id = 29995の制限値が設定されていました。 ただ、上記はあくまで、実際に設定されている値で、それぞれのメーカーが保障している値ではありません。 SunOneのマニュアルからも最大値の記述は読み取れませんでした。(調査不足?) Q1.FOPEN_MAXの20と言うのは何に利用されているかご存知ですか?CPUにより異なる様なのですが。。 プロセスを最大数立ち上げた際にオープン出来るファイルの最大数と言う事なのしょうか? Q2.コンパイラごとに異なるものなのでしょうか?OSやCで決まるものなのでしょうか? 何を基準に(c?solaris?コンパイラ?)マックス値を調査すればよいのでしょう? Q3.漠然とした質問で申し訳無いのですが、上記の様なファイルオープン数のメーカーからの保障について、どなたかご存知ですか? 以上、拙文で申し訳ないのですが、ご存知の方ご教授下さい。 |
|
質問は受け付けないって書いてあるのに、変わった人たちですね。 まぁいいですけど。 > Q1.FOPEN_MAXの20と言うのは何に利用されているかご存知ですか? Solaris8 の stdio(3) には以下のように記述されています。 The integer constant FOPEN_MAX specifies the minimum number of files that the implementation guarantees can be open simultaneously. JIS X 3010 (C99 相当) には以下のように記述されています。 FOPEN_MAX は、同時にオープンできることを処理系が保証するファイル 数の最小値をあらわす整数定数式に展開する。 なお、FOPEN_MAX は最大値ではなく最小値です。「少なくともこれだけは オープンできる」という値です。 FOPEN_MAX が具体的にどう使われているか、という話であれば、処理系 依存です。たとえば FreeBSD であれば libc において static FILE usual[FOPEN_MAX - 3]; などと使われており、リソースを確保しなおすことなくオープンできる ファイル数が FOPEN_MAX である、という形になっているようです。 Linux などで使われている glibc においては FOPEN_MAX を一切使用して おらず、意味のない値になっています。Solaris はソースを持ってないので 知りません。 > Q2.コンパイラごとに異なるものなのでしょうか?OSやCで決まる > ものなのでしょうか? 何がですか? FOPEN_MAX が? > Q3.漠然とした質問で申し訳無いのですが、上記の様なファイルオープン数の > メーカーからの保障について、どなたかご存知ですか? 「保証する値」にこだわるのであれば、メーカーに問い合わせるのが 一番かと思います。 |
|
http://x68000.q-e-d.net/~68user/net/http-auth-2.html にある「クライアント対応状況」ですが、apache本体(2.0.51以降)に パッチが取り込まれています。 http://httpd.apache.org/docs-2.0/mod/mod_auth_digest.html#msie ご参考まで。 いつも勉強させてもらってます。 これからもすばらしいコンテンツ期待しています。 |
|
Solaris8のshについて教えて下さい。 shでシェルを書いています。 もともとは、HP-UX11.00で動かしていたのをSoralisに移しました。 位置パラメータを使ってlsの結果(個数)を取得し、ファイルが存在 しているか、存在しないかのチェックをしています。 ファイルが存在しないときは、不要なメッセージを出力しないように もしています。 その際、ファイルが存在しなった場合、0件として終了してくれません。 位置パラメータの個数が"1"で取得されます。 引数で、チェックするディレクトリを判断するためのパラメータを渡して いるのですが、どうやらこの引数や値が引き継がれているみたです。 上手く処理するにはどうしたらよいのですか。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー #!/bin/sh # PATH=${PATH}:/usr/bin:/etc:/usr/ccs/bin:/usr/local/bin:.; export PATH TZ=JST-9; export TZ if [ $# -lt 1 ] ; then echo "Parameter Error" echo "$0 Processing MODE [R:real/B:batch]" exit 1 fi mode=$1 if [ ${mode} = "R" ] ; then DIR="/tmp/real" elif [ ${mode} = "B" ] ; then DIR="/tmp/batch" else echo "Processing MODE Error" echo "Processing MODE = [R:rela/B:batch]" exit 1 fi cd ${LDIF_DIR} set -- `ls *.txt 2>/dev/null | grep -v "_kekka_"` if [ $# -eq 0 ] ; then echo "Ldif File Nothing Today" exit 1 fi echo $* cnt=$# echo ${cnt} |
|
>>4105 tkb > 「クライアント対応状況」ですが、apache本体(2.0.51以降)に > パッチが取り込まれています。 これは知りませんでした。早速追記しました。 http://x68000.q-e-d.net/~68user/net/http-auth-2.html ご教示ありがとうございました。 |
|
>>4106 さいさん > 引数で、チェックするディレクトリを判断するためのパラメータを渡して > いるのですが、どうやらこの引数や値が引き継がれているみたです。 位置パラメタは「set --」でクリアできますが、本当に引数を引き継いでいますか? (「echo $*」部分で引数が出力されてますか?) |
|
>>4108 zsh >(「echo $*」部分で引数が出力されてますか?) 起動時に渡した、RまたはBが表示されます。 「echo #?」も1と表示されます。 |
|
「UNIX の部屋」を更新しました。 http://X68000.q-e-d.net/~68user/unix/ |
|
>> 4109 #!/bin/sh -> #!/bin/ksh man sh man ksh |
|
>>4112 zsh Solaris8入ってるマシン3台くらいで確認したんですけど shでも通常はそんな動作にはならないんですよ。 一度 set -- でリセットした方が確実かなと思います。 |
|
× >>4112 zsh ○ >>4111 んー 失礼しました。 |
|
Tee の説明文中 find . -name a\* だと a から始まるファイル名が返って来ますよね. |
|
>>4112 zsh >一度 >set -- >でリセットした方が確実かなと思います。 とやってみたんですが、かわりなしです。 |
|
>>4114 野暮天 ご指摘ありがとうございます。修正しました。 http://X68000.q-e-d.net/~68user/unix/pickup?Tee |
|
>>4115 さいさん じゃあshiftで一つずらしてください。 |
|
質問はダメみたいですが、どうしてもできないので、誰か教えてください。。 http://x68000.q-e-d.net/~68user/net/pop3-1.html を実際にやってみたんですが、 POP3サーバ名、ポート番号で、接続できました。 そして、USERも接続できたんですが、PASSだけが接続できません。 ちゃんと手順通り(パスは合ってる)にやっているんですが、、なぜでしょうか? 誰か教えてください。POP3サーバー名は、pop.mail.yahoo.co.jpです。 エラー内容は、-ERR invalid user/password もう1個えらー内容がでました。 -ERR command valid only in authorization state. |
|
>>4118 ヘルプ 私は Yahoo! のメイルアカウントを持ってないので何ともですが、 http://help.yahoo.co.jp/help/jp/mail/pop/pop-03.html を参考にしてありがちなミスを考えると、USER 名が小文字になってないとか。 |
|
ネットワークプログラミングの基礎知識 http://X68000.q-e-d.net/~68user/net/ に Java で HTTP クライアントを作ってみよう (1) http://X68000.q-e-d.net/~68user/net/java-http-socket-1.html Java で HTTP クライアントを作ってみよう (2) http://X68000.q-e-d.net/~68user/net/java-http-url-connection-1.html Java で HTTP クライアントを作ってみよう (3) http://X68000.q-e-d.net/~68user/net/java-http-url-connection-2.html を追加しました。 |
|
>>4117 zsh 原因わからずです。 バグということはないですかね。 >じゃあshiftで一つずらしてください。 shiftとって使ったことないのですが、 ループと合わせてつかうものなのですか。 終わりとかどう判断するのですか。 使い方教えてください。 |
|
Solari8iについて教えて下さい。 UNIXにログインする時、共通のデフォルトの初期化ファイルと ユーザのホームディレクトリにある初期化ファイルが読み込まれ ますが、共通のデフォルトのファイルはどこにあるのですか。 sttyの設定を変更したいのですが、分からずに困ってます。 syslogのファイルはどこに存在するのですか。 HP-UXでいるsyslogというファイルは存在しないのでしょうか。 messageというそれらしいファイルが存在するのですが、これが syslogなのでしょうか。 Solarisでいうsyslogとはどこを含めているのでしょうか。 |
|
>>4121 さいさん num=`ls *.txt 2>/dev/null | grep -v "_kekka_" | wc -l` でファイル数を取得では。 |
|
皆さんmanコマンドって使わないんですかね・・・ >>4122 たか Solari8iって一体・・・ Bシェル・・・/etc/profile Cシェル・・・/etc/.login man shとかで出てきます。 >>4121 さいさん 例えば、位置パラメタが $1=a, $2=b, $3=c の時にshiftを実行すると $1=b, $2=c と一つずつずれます。 $#の値も一つ減るので、対処できるかなと。 取りあえず、man shift |
|
ネットワークプログラミングの基礎知識 に SSL/TLS の導入 (1)〜(4) http://x68000.q-e-d.net/~68user/net/ssl-setup-1.html http://x68000.q-e-d.net/~68user/net/ssl-setup-2.html http://x68000.q-e-d.net/~68user/net/ssl-setup-3.html http://x68000.q-e-d.net/~68user/net/ssl-setup-4.html を追加しました。 |
|
libevent http://www.monkey.org/~provos/libevent/ について 調べているんですが、いまいちわかりません。 マルチスレッドの echo サーバのサンプルプログラム http://x68000.q-e-d.net/~68user/tmp/libevent-sample.c を作ったのですが、1つ目のクライアントからの接続は正常に処理できる ものの、さらに 2つ目のクライアントが接続すると sockread_callback 内の if ( fd == listening_socket ){ が真にならず、accept できません。 1つ目のクライアントが接続してきたときに sockread_callback 内で 行っている event_add・ev_set のやり方がまずいんだろうと思うん ですが、どこが間違っているんでしょうか。 |
|
そういえばこの掲示板で質問を受け付けていないことを忘れて いました。管理人が自分でルールを破るのはよくないので、 >>4126 68user は無視してください。 |
|
社会暦1ヶ月のものです。LINUX関連仕事をやってます。 偶然、このサイトを見つけていろいろ助かりました。 ありがとうございます。 これからもよろしくお願いします。 |
|
すいません、場違いだとは思うのですが、GlancePlusについて、 御存知の方がいらっしゃいましたら教えていただけないでしょうか? 現在業務上でGlancePlusをつかっての性能測定をしているのですが、 この結果を『-p』オプションでファイルに出力していると、 「Maximum of 200 pages of output reached, printing disabled」 と出てきて、200回目の出力でストップしてしまいます。 MAX200の出力が、GlancePlusの仕様という事ならあきらめるのですが、 設定ファイルor設定方法等があるのでは?と思っています。 どなたか教えて下さい。 よろしくお願い致します。 |
|
いつのまにか私が使っているAIXでログイン後共通ディスク端末エミュレータを選ぶと 「アクション "Dtterm" が見つかりません」で端末エミュレータが開けなくなり、 ログアウトしようとすると「アクション "ExitSession" が見つかりません」でログアウト できなくなっていました。いつもはTelnetで処理をしていてLogin,Exit等を行っても なんの問題もありません。原因を考えるのですが心当たりないので困っています。 気がかりなのは/varの使用率が100%になっているくらいですが以前はそれでもちゃんと 動いていました。対策方法をご存知のかたはご伝授ください。 |
|
>>4130 よっちゃん 「AIXでログイン後」とはCDEログイン(?) と仮定して... > /varの使用率が100% ネタですか? CDEは/var/dt以下を使用します。 まず/varのディスクスペースを確保しなきゃです。 ※そのまま放置するとCDEからのloginそのものが出来なくなります。 |
|
WAS上のアプリケーションから起動された unixコマンドをkillしたいのですが、 1発でできる方法はないでしょうか? 分けると、 ”ps -eaf | grep java” で 1:root 323700 1 0 14:41:32 pts/2 4:37 /XXXX/XXXX/XXX を取得して、 ”ps -ef | grep vmstat” で 1:root 430138 442550 1 20:19:55 pts/2 0:00 grep vmstat 2:root 524402 323700 0 19:31:41 pts/2 0:00 /bin/vmstat 1 ↑と取得できた場合に、親のPIDに323700を持っているコマンド (2行目)をkillする、ということをやりたいのですが・・・。 やっぱり分けないと無理でしょうか? |
|
Solaris8なのですが、Bシェルでnawkを使用して処理を しています。 nawk内で関数を呼び出して処理をしているのですが、 その際、最終レコードかをNFで判断しているのですが、 上手く、判断してくれずに無限ループになってしまい ます。 #/bin/sh for FILE in `ls *.txt"` do nawk -F" " ' BEGIN { count = 0+0 ; } function sub() { while (NF>0) { if ($1 == "") { 処理 } else { 処理 } getline ; } return 0; } { if (NF == 0) next ; ret=sub() ; } END { printf("%d\n",ret) ; }' ${FILE} done |
|
>>4133 仁 NFはフィールド数が格納されるのであって 最終レコードかどうかを確認する事はできないと思いますが。。。 こういうことがしたいのですか? ------ while ( getline ) { ... } |
|
お世話になっております。初心者で大変申し訳ございませんが、 教えていただけますでしょうか? 以下の https-client-2 で、ライン:362 SSL_get_verify_resultで エラーと扱われてしまいます。対象となる rootCA 証明書をどのように 反映すれば宜しいのでしょうか? http://x68000.q-e-d.net/~68user/net/ssl-2.html 申し訳ございませんが宜しくお願い致します。 |
|
>No. 4135 に追加で、中間認証局の証明書はどのように設定するのでしょうか? または、必要ないのでしょうか? 度々申し訳ございませんが宜しくお願い致します。 |
|
>>4135 kevin そのページは書きかけでわかりづらいため、それについてのみ説明します。 > 対象となる rootCA 証明書をどのように反映すれば宜しいのでしょうか? ページ最下部に記述してあります。 なお、https://www.rsasecurity.com/ は成功しますが、 https://www2.ggn.net/cgi-bin/ssl は期限切れのため必ずエラーと なります。 その他については SSL/TLS の一般的なことがらなので回答しません。 OpenSSL の本を買うとよいでしょう。 |
|
>>4070 たなか >>4071 68user >>4072 たなか ご無沙汰しております。 Apple に連絡後、返事はもらえませんでしたが、進展がありましたのでご報告いたします。 Mac OS 10.4(Tiger) で kqueue の戻り値(ファイルデスクリプタ)を close できるようになりました。 |
|
トップページについて、ご自分でも感じてらっしゃるかと思うのですが…。 ぼちぼち更新履歴が長くてアレな気がするので、できればトップは最近の いくつかだけにして、過去のぶんは別ページに、とできないでしょうか。 # それともCGI/Servletでblogを作ってからにしようとしてるとか?(^^) |
|
>>4139 has 手前味噌ですが、 http://www3.to/henika/browsers/ (http://thunder.prohosting.com/~henika/japanese/browsers.shtml) みたいに、最近の数個を上に、それ以降を後ろに持っていくと、ファイル1個内に閉じたカット&ペーストで済ますことができます。 #他人様のサイトですので、あくまでも1例を提案させていただいている、という程度の意見でございます。 |
|
参考にさせていただいております。 ご質問があるのですが、OpenSSLをインストールした状態のPC(A、B、C)で HTTPS通信とHTTP通信を使い分けるということは可能なのでしょうか。 (A-B間はHTTPでA-C間はHTTPSでといった具合です。) 現在手元に環境が無いためテストすることができずに困っております。 誠に申し訳ありませんが、ご存知の方がおられましたらご教示しては頂けないでしょうか。 |
|
カンマで区切られたデータのある位置にある内容と同じ ものが他のレコードに存在しなかチェックを行い、存在 した場合、それぞれのレコード番号を出力したいのですが どのよにすれば上手くできますか。 -- ファイル ----- 001,みかん,N001,N,Y,10,, 002,りんご,N002,Y,N,30,, 003,ばなな,N003,Y,Y,20,, 004,ジュース,N001,N,N,,, 005,いちご,N004,,,,, 006,なし,N004,,,,, 007,かき,,,,,, 008,くり,,,,,, --- 結果 ----- 1行目と4行目 5行目と6行目 ただし、必ずしも設定されているとは限らずNULLの場合も あります。 環境は、Soralis8、Bシェルです。 考えとしては、 #!/bin/sh # FILE=file.csv while read LINE do val=`echo ${LINE} | cut -d , -f 3` nawk -v KEYWORD=${val} =F"," ' ' ${FILE} done < ${FILE} と思ってはいるのですが。 |
|
こんにちは〜^^ ネットワーク関係のソフトウェアをC言語で作っているんですけど WAN側のIPの調べ方がわからなくて困ってます>_< 簡単にでいいので、教えていただけると助かりますm(_ _)m |
|
>>4138 たなか なるほど、バグでしたか。ご連絡ありがとうございました。 >>4139 has >>4140 へにか ご意見ありがとうございます。トップページから「古い更新記録」に 移動するのをさぼっていただけなので、遅ればせながらごそっと移して みました。 |
|
初めまして、高橋です。 突然で申し訳ありませんが、とても困っています。解決方法をご存知の方がいらっしゃいましたら教えてください。 solarisでcronでシェルを起動する際に自分自身が立ち上がっていないかのチェックを行っています。 下記「(1)コマンド」で立ち上がっているプロセス件数をチェックしているのですが、稀に「(2)実行結果」の様な結果が返ってきて件数を正しく判定できません。 ※本来は(2)の一行目のみで、一件と返ってくる。 「(1)コマンド↓」 set PRCCOUNT = `ps -efl|grep ${PROGRAM_FILE}|tee aaaa.grep|wc -l` 「(2)実行結果↓」 8 S sm 2136 2128 0 60 20 ? 212 ? 19:45:36 pts/15 0:00 /bin/csh -f ABC.csh ABC 8 R sm 2128 1704 0 70 20 ? 212 19:45:36 pts/15 0:00 /bin/csh -f ABC.csh ABC Rステータスが実行待ちという事らしいのです。``で子プロセスが立ち上がる弊害のようです。 何か自分が起動していない事を確認する良い方法はないのでしょうか? ご存知の方ご教授下さい。 |
|
ps -efl の結果を中間ファイルに記録する様にすれば、ps 実行時に `` を 使わなくて済みますよね? 駄目? |
|
あまり深い意味はないのですが、なんか頭をぐるぐるしているので、 もし気が向いた方がいればご意見聞かせてください。 この掲示板の送信ボタンのすぐ下には 「UNIX・ネットワークに関する一般的な質問」 っていうくだりがあります。 この言葉に限らず、言葉には前置きを付けると、意味合いがいろいろ変化する ということはわかっているのですが、例えば単純にこの部分だけを見た場合、 これは一体どういった捉え方ができるんでしょうか。 さっき思いついてちょっと考えていたのですが、フレーズだけが響いてしまい、 もはやちっとも考えが前に進みません。 |
|
>>4147 has >例えば単純にこの部分だけを見た場合、 >これは一体どういった捉え方ができるんでしょうか。 ここが良く理解できなかったのですが、いかなる状況での 「単純にこの部分だけ」と言うことでしょうか? 送信するとき? それとも読むとき? はたまたもっと違う状況? >なんか頭をぐるぐる 余談ですが、僕なんか、毎日のように頭がぐるぐるしてます。 この件じゃなくて色々ですが。 ぐるぐるすると、辛いですよね。どうか、ご自愛ください。 |
|
> >例えば単純にこの部分だけを見た場合、 > >これは一体どういった捉え方ができるんでしょうか。 > > ここが良く理解できなかったのですが、いかなる状況での > 「単純にこの部分だけ」と言うことでしょうか? 『UNIX・ネットワークに関する一般的な質問は受け付けていません』と 明記してあって、なおかつ『当ページの内容に関するご意見・ご指摘は 歓迎します。』なんだから typo の指摘や記事の内容から発展させて 一定レベル以上のネタの窓口に決まってるやん...っていうのを暗に 言いたかっただけとチャウんかと. > 僕なんか、毎日のように頭がぐるぐるしてます。 私なんて頭だけでなく, 腹の方までグルグルしてます. 呑み過ぎて腹出して寝てるせいなのか, 神経性なのか 両方に心当たりがあって困ったモンです. |
|
>>4149 hoge >一定レベル以上のネタの窓口に決まってるやん...っていうのを暗に >言いたかっただけとチャウんかと. なるほど。でも、その意図は汲み取り難いのかもしれません。むしろ、 「一般的な」という一文が、「特殊な」との対となし、自分の質問が 一般的ではなく、ごくごく限られた状況ならOKとみなされているのか もしれません。 例えば、「shってなんですか」は一般的で、「これこれこういう時は どうなんですか」は、そうではない、という捉え方をされているのか も知れません。 と言うことで、僕は「UNIX・ネットワークに関する質問は受け付けて いませんが、当ページの内容に関するご意見・ご指摘は歓迎します。」 と書き換えたほうが良いと提案します、という結論に落ち着きました。 >神経性なのか 心療内科の受診をお勧めします。相性が合うDr.が見つかれば良いですね。 |
|
わたしが思うに、以下の 3パターンに分類されると考えています。 パターン1: そもそも注意書きを読んでいない。 パターン2: とても困っているので、回答をもらえる可能性は低くても質問しておこう、と思っている。 実際に誰かが答えてくれる場合もあるため、あながち間違った作戦とは言い切れない。 パターン3: 自分の質問が「一般的な質問」であると認識しておらず、「特殊」なものである、 と考えている。4150 での考察に同じ。 >>4150 へにか > と言うことで、僕は「UNIX・ネットワークに関する質問は受け付けて > いませんが、当ページの内容に関するご意見・ご指摘は歓迎します。」 別に質問されて困っているわけではないのですが、せっかくなのでご提案の とおりに書き換えてみました。 > 頭がぐるぐるしてます。 最近日本酒を飲みだしたため、毎日頭がぐるぐるしています。4日で一升空けるのは 飲みすぎなんでしょうかね。 |
|
皆さん、私のしょうもない書き込みにつきあっていただき ありがとうございます。 >>4148 へにか >>4149 hoge ご指摘の通りです。 もっと平和に表現できればよかったんですが、私には無理でした。 スミマセン。 >>4150 へにか そうですね。私もそれなのかなぁ、と思っていました。 >>4151 68user 具体的に表現してもらうと確かにそんな気がします。 >別に質問されて困っているわけではないのですが そ、そうでしたか…。 >4日で一升空けるのは飲みすぎなんでしょうかね。 健康診断とかではよく、1日1合まで、と言われますよ。 そのうちまた、新潟のおいしいお酒が飲めるよう、体には気をつけましょう。 |
|
>>4151 68user > せっかくなのでご提案のとおりに書き換えてみました。 リンクに関する注意書きの所にも『一般的な』が有りますね. > 4日で一升空けるのは飲みすぎなんでしょうかね。 一瓶なら大丈夫でしょうけど, そのペースで空き瓶を大量生産してるなら 少しペースを落とした方が良いかも知れませんね. そんな事言ってる私の部屋には空き缶が大量発生してますけどね. >>4152 has > もっと平和に表現できればよかったんですが 充分に平和的だと思っています. 『チャウんかと.』のくだりは吉野家コピペ風に書きたかったってだけで 他意は有りません. |
|
>>4151 68user 採用いただき、恐縮です。 確かに、読んでいない、というパターンが一番多いと思いますが、 こういうのも、httpのヘッダ解析でできたらいいのにな、と、 ふと思いました(素面なのに)。 >>4152 has >>別に質問されて困っているわけではないのですが >そ、そうでしたか…。 上に同じ・・・ >>4151 68user >>4152 has お酒のうまさがわかるなんて、羨ましい限りです。 人生の楽しみの半分を失ってる、と言われた事があります。 ビールに換算すると、10[杯/年]かな? しかも年2〜3回:) |
|
>>4153 hoge う、ニアミス・・・ お酒のうまさにかんしては、同じく羨ましいですね。 >>4152 has ニアミスついでに。 >確かに、読んでいない、というパターンが一番多いと思いますが、 は、正しくは、 >読んでいない、というパターンが一番多いと思いますが、 ですね。「確かに、」は余分でした。 |
|
>>4152 has > 健康診断とかではよく、1日1合まで、と言われますよ。 なんと、そんなに少ないのですか。今日は日本酒は飲みませんでしたが、ビール (発泡酒・その他の雑種含む) を 3リットルほど消費しました。少し控えた方が よいのかもしれませんね。といっても控える気はあまりないのですが。 >>4153 hoge > リンクに関する注意書きの所にも『一般的な』が有りますね. ありがとうございます。明日修正します。 ちなみに、わたし個人は UNIX・ネットワークに関する質問を受け付けていませんが、 他の誰かが回答することについて邪魔をしたいわけではありません。この掲示板で 誰かが質問し、それに対して誰かが回答しても、それはアリかと思います。 ただ、そういう場を積極的に提供する気は今のところないので、引き続き「質問は 受け付けていません」と明記させていただきます。 |
|
>>4155 へにか >>4152 has ニアミスついでに。 は、 >>4154 へにか の、ポイント間違いです。 掲示板を汚して申し訳ありません。素面でこれなんだから、全くもう・・・ 頭がぐるぐるどころか、頭がどろどろしているのかもしれません。 |
|
「雑談も可」と明記してみました。 ところで、どこかにわたしの中途半端な技術力を生かせて、元請中心で、上流〜下流の どこでも口と手を出せるような社員数数十〜数百人程度の小さな会社が関東南部周辺に ないですかねぇ、とネタふりしてみたりして。 |
|
>>4158 68user 一件、心当たりがありますが、僕も狙っているので、ここでは公言できないです。 もし、68userさんしか投稿内容を見ることができないシステムがあれば、そちら に書き込みします。例えば、以前のアンケートシステムみたいに。 |
|
中途半端って、謙遜が過ぎるような気がするが... 五反田で良ければ心当たりがありますけど. |
|
>>4159 へにか >>4160 hoge 早速作りました。よい情報があればよろしくお願いします。 http://X68000.q-e-d.net/~68user/tmp/job.cgi |
|
へにかさん、hoge さん、hoge さんのお知り合いの方、ありがとうございます。 しばらく検討させてください。今後メールするかもしれませんが、そのときは よろしくお願いします。 引き続き情報をお待ちしています。 |
|
ネットワークプログラミングの基礎知識 http://X68000.q-e-d.net/~68user/net/ に TCP/IP エラー処理 connect 編 http://X68000.q-e-d.net/~68user/net/tcp-connect-1.html を追加しました。 ところで転職の方は、現時点で 10社ご紹介いただきました。 今、かなり悩みつつ検討中です。 まずはメールで質問させていただくことがあると思いますが、 そのときはよろしくお願いします。 |
|
すみません、基本的な質問してもよろしですか?友達にFTPのアドレスを教えてもらいいろいろなコピーを貰っています。こちらからからはその方に、メールなどを転送できないのでしょうか?申し訳ありません。私はまったく理解していない初心者なので。お礼のメールをしたいのですが〜 |
|
>>4164 mm070324 その人がみんなのために公開してるならお礼をしても差し支えないと思いますが、 個人用のデータ置き場がたまたま見えているだけなら、お礼という形は微妙だと 思います。けど、メールする方法はわかりません。 ちなみに、FTPもメールもWebも、UNIXとネットワークに関する技術の代表的存在です。 基本から頑張って理解していってください。 |
|
はじめまして。 UNIXの部屋をいつもありがたく使わせていただいているものです。 一点気づいたのでご報告です。 TOP >> UNIX の部屋 >> 検索 lessコマンドの解説ページ -fのオプションの解説のところで ”less でバイナリファイルを見ようとすると” の部分がテーブル内に表示されているのは正常ですか? |
|
>>4166 saito 正常ではないです。近日中に直します。 ご指摘ありがとうございました。 |
|
>>4166 saito 修正いたしました。ありがとうございました。 転職活動は少しずつ進めております。大体方向性が固まって きましたので、トップページなどからのリンクは外しました (CGI 自体は生きていますが)。情報をお寄せくださった皆様、 ありがとうございました。 |
|
>>4168 68user 修正ありがとうございました。 良い転職先が見つかると良いですね。 また何かありましたらご報告いたします。 |
|
最近お願いばかりで恐縮ですが、世の人がすなるという mixi と Gmail なるものを一度この目で見てみたいと思っています。ネット上に友達が いないかわいそうなわたしを、どなたかお誘いいただけませんでしょうか。 一時的なメールアドレス mixi-gmail-68user@q-e-d.net を作りましたので、よろしければお願いします。 >>4169 saito ありがとうございます。今後ともよろしくお願いします。 |
|
>>4170 68user すいません、Gmail は http://www.freebbs.biz/yy2ch/yy2ch.cgi?id=admin で取れてしまいました。 Gmail って Ajax を使った画面遷移のない web メーラーだと思ってたので一度 使ってみたかったのですが、単なる勘違いであったことがわかりました。うーむ。 |
|
「UNIX の部屋」を更新しました。 http://X68000.q-e-d.net/~68user/unix/ |