>>4737 moto 勝手に作った属性を書いておいて、getAttribute で読み出すことができます。 値のセットは setAttribute で。XHTML とかだと勝手に属性を作るのはまずい のかもしれませんが、詳しくないのでわかりません。 -------- <html><body> <div id="mydiv" hoge="abc"></div> <script language="JavaScript"> var mydiv = document.getElementById('mydiv'); alert(mydiv.getAttribute('hoge')); </script> </body></html> --------- |
>>4732 びすこ > SSL_get_error();← "5"が返ってきます よくわかりませんが、5 ってのは include/openssl/ssl.h の #define SSL_ERROR_SYSCALL 5 /* look at error stack/return value/errno */ ですよね。 http://www.openssl.org/docs/ssl/SSL_get_error.html Some I/O error occurred. The OpenSSL error queue may contain more information on the error. If the error queue is empty (i.e. ERR_get_error() returns 0), ret can be used to find out more about the error: If ret == 0, an EOF was observed that violates the protocol. If ret == -1, the underlying BIO reported an I/O error (for socket I/O on Unix systems, consult errno for details). の通りにやってみるとどうなりますか? |
68user 様 ヒントありがとうございました。 グーグルマップを制御しているmaps2.68.jsファイル内にもgetAttribute,setAttributeの関数が出て いますのでこれらが鍵なんですね。 一筋の光明が見えてきた気がします。 でも、maps2.68.jsファイルは170キロバイトもあるのに一行しかありません。 ですからコメントなぞ一つもなくすごい代物です。 解読するのに改行とインデントを入れる作業をしているのですが、 これがまた気の抜けない大変な作業です。 グーグルさんも簡単には教えてくれないんですね (^_^.) ありがとうございました。 |
>>4740 moto どこかに解説サイトがあったような…と思ったら、Google Suggest でした。 http://slashdot.jp/developers/article.pl?sid=04/12/18/1033242 Maps の解説は見たことはありませんが、ある程度なら探せばあるかもしれませんね。 |
http://X68000.q-e-d.net/~68user/unix/ の検索は OR 検索だったのですが、 AND 検索に変更しました。そのために結構な量の改修を行ったのですが、例に よって怪しげです。もし不具合があればお教えいただけると幸いです。 |
>> SSL_get_error();← "5"が返ってきます >よくわかりませんが、5 ってのは include/openssl/ssl.h の > #define SSL_ERROR_SYSCALL 5 /* look at error stack/return value/errno */ >ですよね。 おそらく#define SSL_ERROR_SYSCALL 5の5だと思います。 >http://www.openssl.org/docs/ssl/SSL_get_error.html > Some I/O error occurred. The OpenSSL error queue may contain more information > on the error. If the error queue is empty (i.e. ERR_get_error() returns 0), ret > can be used to find out more about the error: If ret == 0, an EOF was observed > that violates the protocol. If ret == -1, the underlying BIO reported an I/O > error (for socket I/O on Unix systems, consult errno for details). >の通りにやってみるとどうなりますか? 再度デバッグをしたところssl_connect()の戻り値は-1ではなく0でした。 10回ぐらい連続で動かしてると-1が戻ることもあります。 戻り値が0ですとプロトコルに違反したEOFが見つかったとありますので、 SSL_CTX *ctx = SSL_CTX_new(SSLv23_client_method()); と、プロトコル設定をしているのが悪いのかと思い TLSv1_client_method()などに変えてみましたが効果はありませんでした。 EOFに関してはEnd Of Fileしか思い浮かばずお手上げです。 戻り値が-1のときのBIO云々に関してもぐぐって見つけたソースを追加してみましたが こちらも効果はありませんでした。 Winsock2を使ってproxy経由のときだけssl_connect()でエラーになるほうが難しいと 思うのですが・・・ こればかりやっていられないので、cygwinの方を使うことにします。 |
初めて書き込みさせていただきます。 http://x68000.q-e-d.net/~68user/net/rsa-1.html に書かれているrsa1.cをVisal Studio 2005で実行させたいのですが、可能でしょうか? |
>>4744 peace そのままでは動かないので、 http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=981427&SiteID=7 などを参考にしてください。 |
初めまして、hornetsと申します。 このサイトには、OpenSSLを用いたRSA暗号のプログラムが掲載されていますが、 OpenSSLを用いてElGamal暗号もできるのでしょうか? 教えていただけたら幸いです。 |
>>4746 hornets > OpenSSLを用いてElGamal暗号もできるのでしょうか? 現時点の OpenSSL には ElGamal は実装はされていません。 OpenSSL の ML を探すと、実装が欲しいなら http://mixmaster.sourceforge.net/ を見れば、とありました。 # http://marc.theaimsgroup.com/?l=openssl-users&m=92476310717523&w=2 |
初めまして。Kenichi Maehashi と申します。 いつもネットワーク関連の情報を拝読させていただいております。 さて、 >> http://x68000.q-e-d.net/~68user/net/module-pop3.html を参考にさせていただきながら、POP3 クライアントを書いたのですが、 実行すると、カレントディレクトリに msg-xxxxx-x.txt というような テキストファイルが出力されてしまいます。(x は数字です) これは Net::POP3 モジュールの仕様なのでしょうか。 または、出力をしないような設定方法はありますでしょうか。 ご教示いただければ幸いです。 よろしくお願いいたします。 |
>>4748 Kenichi Maehashi Perl5.8.5 の Net::POP3 で試してみましたが、そのようなファイルは 生成されませんでした。 Net/POP3.pm や、それが利用している Net/Cmd.pm、Net/Config.pm を見ても、 msg-xxxx-x.txt というファイルが生成されるようには見えませんでしたので、 今一度確認していただけますか。接続時に $pop = Net::POP3->new($hostname, Debug => 1); と Debug を ON にすると何かわかるかもしれません。 |
>>4748 68user さま 有り難うございます。 コードを削って確認してみたところ、併用していた MIME::Parser モジュールが 出力するファイルであることが分かりました。確認不足で申し訳ありません。 MIME::Parser の出力するメッセージファイルは出力しないよう設定できないのでしょうか。。。 重ね重ね申し訳ございませんが、何卒宜しくお願い致します。 |
>>4750 Kenichi Maehashi よくわかりませんが、output_to_core でしょうか。 http://search.cpan.org/~eryq/MIME-tools-5.411a/lib/MIME/Parser.pm output_to_core YESNO Instance method. Normally, instances of this class output all their decoded body data to disk files (via MIME::Body::File). However, you can change this behaviour by invoking this method before parsing: If YESNO is false (the default), then all body data goes to disk files. If YESNO is true, then all body data goes to in-core data structures This is a little risky (what if someone emails you an MPEG or a tar file, hmmm?) but people seem to want this bit of noose-shaped rope, so I'm providing it. Note that setting this attribute true does not mean that parser- internal temporary files are avoided! Use tmp_to_core() for that. With no argument, returns the current setting as a boolean. |
>>4748 68user さま お世話になっております。 ご指摘の通り、$parser->output_to_core(1); で解決できました。 このページはチェックしていたのですが、見落としておりました。。。申し訳ありません。 本当に有り難うございました。 |
はじめましてwここのHPをみてソケット通信を勉強しています。 よろしくお願いします。 perlを使ってサーバプログラムとクライアントプログラムを作り ソケット通信をしています。 ActivePerlを使用し、ローカルマシンでは通信できているので 実際にサーバプログラムをサーバにUPしてテストしたいと思い プロバイダからもらった領域にFTPでUPしました。 で、質問なのですが サーバプログラムが仮に http://www.aaa.com/user/test.pl という アドレスにある場合 クライアントプログラムの IO::Socket::INET->new( PeerAddr ... ); のPeerAddrはどう変えればいいのでしょうか? ※モジュールを使ってみようを参考にしています。 またほかにも何かしなければいけないのでしょうか? よろしくお願いいたします。 |
>>4753 サーバにUPしたプログラムと通信したい $socket = IO::Socket::INET->new( PeerAddr => 'www.aaa.com', PeerPort => '80', Proto => 'tcp'); ); でよいです。 http://perldoc.perl.org/IO/Socket/INET.html に書き方のサンプルが あるので、ざっと眺めてみてください。 |
ありがとうございます。 PeerAddr => 'www.aaa.com' を指定した場合 user/test.pl この部分はどうなるのでしょうか? 特に指定しなくても通信できるのでしょうか? |
>>4755 かみゅ IO::Socket はソケットのモジュールです。その上に HTTP を流すのであれば HTTP クライアントを作ってみよう(1)〜(4) を読んで、送信すべき HTTP リクエストはどんなものなのかを調べてください。 |
初めまして、書き込みさせていただきます。 現在RSAについて学んでおり、非常に有用な情報としてこちらのHPを拝見させていただきました。 さて、http://x68000.q-e-d.net/~68user/net/rsa-1.htmlに記載されているrsa-1.cをコンパイル してみたところ、openssl関連のヘッダファイルが読み込まれない旨のエラーが返され、 実行できません。実行環境としてVineLinux3.1にてgccコンパイラを用いており、opensslの バージョンは最新版と思われる0.9.8をインストールしております。 対策方法をご教授いただければ幸いです。よろしくお願いします。 |
>>4757 matsumoto まずは rsa.h や engine.h のありかを探してください。 例えば /usr/local/include/openssl/rsa.h が存在するなら % gcc -I /usr/local/include rsa-1.c とします。 |
はじめまして。STと申します。 CGI初心者です。 質問させていただきます。 「静的な画像表示」のところで、該当するソースをコピーして サーバーにアップした後http://〜cgiと入力しGIFファイルを表示させようとすると 「GIF89aX」と表示されます。 パーミッションはOKで画像ファイルは存在します。 解決方法を教えていただけますと幸いです。 よろしくお願いします。 |
>>4759 ST http://chaichan.web.infoseek.co.jp/qanda/qa7041.htm に一本化ということで。 |
http://x68000.q-e-d.net/~68user/webcgi/sample/perl/graph-maker.cgi にて日本語を出す方法のメモ。 % cvs di -u cvs diff: Diffing . Index: graph-maker.cgi =================================================================== RCS file: /home/68user/cvsroot/public_html/webcgi/sample/perl/graph-maker.cgi,v retrieving revision 1.9 diff -u -r1.9 graph-maker.cgi --- graph-maker.cgi 26 Feb 2006 08:31:21 -0000 1.9 +++ graph-maker.cgi 13 Feb 2007 13:12:16 -0000 @@ -886,6 +886,8 @@ } } + GD::Text->font_path( "/usr/local/share/fonts/TrueType/" ); + $graph->set_title_font("sazanami-gothic", 14 ); my $image = $graph->plot($ref_data) or die "Cannot create image"; binmode STDOUT; |
findコマンドの使い方について教えて下さい。 findコマンドで検索を行う場合、指定したディレクトリ内だけ 検索を行い、下位のディレクトリは対象外にしたいのですが できるのでしょうか。 例えば、/tmp配下を検索するとして、 /tmp /tmp/backup /tmp/save とあった場合、 /tmp内だけを検索し、/tmp/backupや、/tmp/saveなどの下位ディレクトリ内 は見ないようにしたいのです。 find /tmp -name "*.csv" ! -size 0 -print ドキュメントに、「-prune」がありましたが、指定すると、表示すべきものが でてきません。上手くいきませんでした。 find /tmp -name -prune "*.csv" ! -size 0 -print find /tmp -name "*.csv" -prune ! -size 0 -print また、ファイル名は、ワイルドカード指定なので、表示後のgrepなども 使えません。 環境は、 Solaris8 Bシェル |
>>4762 べた 試してませんが、 % find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print ですかね。 とはいえ、 - maxdepth オプションを使える find をインストールする - grep '^/[^/]*/[^/]*$' としてパスに '/' が 2個以上含まれないことを チェックする - ls -l /tmp/*.csv | awk '$5~/^0$/{print $9}' などの方法がよいような気もします。 |
>> 4763 ありがとうございます。 >% find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print ですが、配下のディレクトリを全て網羅するのは。。。 また、試してみましたが、直下のファイルがでませんでした。 > - maxdepth オプションを使える find をインストールする > - grep '^/[^/]*/[^/]*$' としてパスに '/' が 2個以上含まれないことをチェックする 実際には、パスに、’/’が2個以上含まれるているので無理かと。 > - ls -l /tmp/*.csv | awk '$5~/^0$/{print $9}' これが、一番よい方法になるのですかね。 |
>>4764 べた > 直下のファイルがでませんでした。 FreeBSD では表示されました。Solaris の find は出ないのでしょうか。 > 実際には、パスに、’/’が2個以上含まれるているので無理かと。 「3個以上」の誤りでした。 ベストなのは「/tmp/ 直下に置くといういまいちな仕様を直す」だと 思いますが、それができれば苦労してないんでしょうね。 |
>>4765 68user ありがとうございます。 > find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print ですが、 期待したものがでませんでした。 「*.csv」が表示されず、それ以外の全てがでました。 lsコマンドで上手く行きそうなので、この方法で試します。 |
>>4764 べた >>% find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print >ですが、配下のディレクトリを全て網羅するのは。。。 すべて書くのは不可能ですよ。 それに、10も20もないでしょ。 ディレクトリだけを求めてすべてを変数に入れて設定すれば出来ませんか。 OP="-o -name backup -o -name -save" find /tmp -name "*.csv" $OP -o ! -size 0 -print でも、その下にあったら無理かな。 >>4766 べた >> find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print >ですが、 >期待したものがでませんでした。 >「*.csv」が表示されず、それ以外の全てがでました。 使い方、間違ってませんか。? |
初めまして!beckと申します。 このサイトでOpenSSLを用いたRSA暗号を実装例を紹介していますが、 鍵生成などの工程では、どれほどの時間を要するのでしょうか? もちろん、PCのスペックに左右されることは承知していますが・・・ |
>>4765 68user >>4768 庵 >% find /tmp -name "*.csv" -o -name backup -prune -o -name save -o ! -size 0 -print ですが、 やはり上手くでません。 期待している’*.csv’を表示しません。 > FreeBSD では表示されました。Solaris の find は出ないのでしょうか。 UNIXのOSによって異なる動きをするというこですか。 Solairs以外の環境がないのでなんともいえませんが。 |
文字コードとエンコーディング (1) http://x68000.q-e-d.net/~68user/webcgi/char-code-1.html 上記のページ、とても良くできていると思います。 ありがとうございます。 しかしながら、「エンコーディングとは」の項の先頭付近にある「他の文字と同時に扱う場合のことは考えられていません」の『文字』は『文字集合』とするべきでは無いでしょうか? # 入門学習のために読む人にとって、重要な部分だ思います。 |
>>4771 zxcv ご指摘ありがとうございます。修正してみましたがいかがでしょうか。 http://x68000.q-e-d.net/~68user/webcgi/char-code-1.html cvsweb が動かなくなっているので、修正点の diff を貼っておきます。 RCS file: /home/68user/cvsroot/public_html/webcgi/org/char-code-1.html,v retrieving revision 1.6 diff -r1.6 char-code-1.html 68c68 < <LI>ASCII … 半角英数字・半角記号 (a,A,0,!,@,#) --- > <LI>ASCII … 半角英数字・半角記号 (a,A,0,!,@,# など) 70c70 < <LI>JIS X 0208 … ひらがな・かたかな・漢字・全角記号 --- > <LI>JIS X 0208 … ひらがな・カタカナ・漢字・全角記号 73c73 < があります。 --- > などがあります。 80c80 < エンコーディングとは、複数の文字集合を一緒に扱うための枠組のことです。 --- > エンコーディングとは、複数の文字集合を同時に扱うための枠組のことです。 82c82 < 他の文字と同時に扱う場合のことは考えられていません。 --- > 他の文字集合と同時に扱う場合のことは考えられていません。 84c84 < ASCII と JIS X 0208 を同時に扱う場合を考えてみましょう。 --- > たとえば、ASCII と JIS X 0208 を同時に扱う場合を考えてみましょう。 90c90 < 「A」なのか「あ」なのかを判断できません。そのためには --- > 「A」なのか「あ」なのかを判断できません。これを判断できるようにするためには、 94c94 < つまり「ここから先は ASCII」「ここから先は JIS X 0208」というようなものを入れる。 --- > たとえば「ここから先は ASCII」「ここから先は JIS X 0208」という意味の、区切り用のコードを入れる。 96c96 < という2通りの対策があります。さらに、 --- > という2通りの対策が考えられます。さらに、 101c101 < という細かい規格を決めたもの、それがエンコーディングです。 --- > という細かな規格を決める必要があります。 103,104c103,105 < エンコーディングには、主に3種類あります。 < JIS と Shift_JIS と EUC-JP です。 --- > このような、複数の文字集合を同時に扱うための規則のことを「エンコーディング」と呼びます。 > <P> > エンコーディングには、主に3種類あります。ISO-2022-JP と Shift_JIS と EUC-JP です。 |
readコマンドを使ってファイルから読み込みを行っています。 読み込んだ件数を出力しようとしているのですが、どうしても 0件となってしまいます。 どこがいけないのでしょうか。どう直せばよいのでしょうか。 ----------------------------------- #!/bin/sh # FILE="/tmp/sample.csv" i=0 while read LINE do 編集処理 表示処理 i=`expr ${i} + 1` done < ${FILE} echo "${i} 行読み込みました。" |
>>4773 べた whileとかforのループ内で使用した変数は、 ループ終了後(ループを抜けた後)参照する ことはできないのでようか。 できるとした場合、どうすればいいのですか。 |
>>4774 べた 私もあまり詳しくないのでしりません。 kshでできたような。 http://search.luky.org/linux-users.9/msg06099.html で、似たことが質問されていますので確認してみては。 |
>>4774 べた 最近シェルスクリプト触ってないんですが、 多分これでOKかと。 ------ i=0 exec 3<&0 0<$FILE while read LINE; do : done exec 0<&3 3<&- echo $i ------ |
>> 4776 ありがとうございます。 上手く行きました。 また、以下でも出来ました。 ------------- i=0 exec < ${FILE} while read LINE do echo ${LINE} i=`expr ${i} + 1` done echo ${i} ------------- |
はじめまして。 質問があります。 よくあるポートモニターなどはどのように作っているのでしょうか。 また、自分のパソコンが通信しているデータを見ることができますか? |
Perlなのですが、sync(fsync?)を使って 書き込みを実現しようとしています。 書き込み後、正しく書けたか、ファイルの比較や サイズの取得をやろうとしています。 今一、Perlのモジュールとかライブラリとかが わかりません。 参考になるものありませんか。 また、どのようにすればよいですか。 |
findコマンドの「-perm」指定での検索について findコマンドで、ファイルの権限の検索をする場合、 ユーザ、グループ、その他の所有者に権限を設定して 実施しますが、ユーザ、グループ、その他所有者を 表す「u」、「g」「o」の前に、「-」があるかないかで 状態が変わります。 「u」、「g」「o」の前の「-」にはどのような意味が あるのでしょうか。 # find . -type f -perm o+w # find . -type f -perm -o+w # find . -type f -perm -g+w,o+w # find . -type f -perm -g+w,-o+w |
>>4781 べた http://www.linux.or.jp/JM/html/GNU_findutils/man1/find.1.html がわかりやすいかと思います。 -perm -mode mode で指定されている許可属性ビットのすべてがファイルでも立っていたら真。 -perm +mode mode で指定されている許可属性ビットがファイルでどれか一つでも立っていたら真。 |
おしえてください |
VMwareServer(無償版)を使ってlinux4を2台(A、B)を仮想環境を使ってインストール しました。(ethernetはnetwork connectionはHost-only) linuxのファイアウォールを無効にし、bindをカスタムでインストールし 特に設定を変更しないで、/var/named/etc/chroot/etcフォルダにnamed.conf を作成しました。 AサーバのVゾーンの問い合わせについては、zoneファイルから名前解決はできますが、 Xゾーンについてはforwardを使ってBサーバに転送するように設定しましたが Xゾーンの名前解決ができません。(Xゾーンについては、Aサーバからの問い合わせ に関しては、Xzoneファイルで解決するように設定してあります) AサーバからXゾーンPCに対してdigコマンドを実行すると、 AUTHORITY SECTION : 518400 IN NS F.ROOT−SERVER.NET ・・・・ が記録されます。 何か原因等は考えられるでしょうか。 ちなみにforwardの設定は以下のようにしてあります。 ご教授のほう、よろしくお願いします。 zone "X" { type forward; forward only; forwarders { 0.0.0.0; #Bサーバのアドレス }; |
解決しました。 recusionがnoになっていたようです。 |
>4782 ありがとうございます。 読んでみます。 |
>>4782 68user ありがとうございます。 読んでみます。 |
シェルで、FTPを自動実行しています。 FTPの接続が失敗した場合、ログイン・パスワードが間違っていた場合、 getするファイルが存在しなかった場合など、異常を判断したいのですが、 例えば、 0:正常終了 1:実行エラー みたいな感じで、、、。 リターンコードを取得することができるのでしょうか。 UNIXのFTPですとファイル転送に失敗してもリターンコードが、”0”が 返ってくると聞いたのですが、最後に、byeを実行しているので、"0”で 返ってきます。 以下のような内容でやっています。 ftp -v -n [IPアドレス] <<END > /dev/null 2>&1 user [ユーザ名] [パスワード] cd [リモートディレクトリ] lcd [ローカルディレクトリ] get [getするファイル名] bye END エラーだけをファイルに出力してみたのですが、接続エラーしかでず、 ログインの失敗やファイルが存在しないエラーは出力されませんでした。 ftp -v -n [IPアドレス] <<END 2>ftp_error.log > /dev/null >&1 すべてのFTP結果ログをファイルに出力し、該当の処理のエラーメッセージ があるかないかをgrepでみるしかないのでしょうか。 Not connected. 530 Login incorrect. Login failed. 530 Please login with USER and PASS. 550 getするファイル名: No such file or directory. |
>>4788 べた ftp コマンドを使う限りは > すべてのFTP結果ログをファイルに出力し、該当の処理のエラーメッセージ > があるかないかをgrepでみるしかないのでしょうか。 が無難です。また、どのようなエラーがどこで発生したかをプログラム上で 突き止めようとせず、行頭の 4xx か 5xx にマッチするものがあれば全て エラーとすることをお勧めします。 これ以上を求めるならば、Perl + Net::FTP モジュールなどで FTP クライアントを 作成するのがよいとわたしは思います。 |
>> 4789 ありがとうございます。 必要な、エラーすべてをgrepしようと考えていました。 行頭の 4xx か 5xx にマッチするものがあれば全てエラー とするでやつてみます。 ちなみに、接続エラー(open)ですが、これは、4xxとか5xx にならないのですが、メッセージの内容で見た方がよいの でしょうか。 |
>>4790 べた > ちなみに、接続エラー(open)ですが、これは、4xxとか5xx にならないの > ですが、メッセージの内容で見た方がよいのでしょうか。 数年ほど前に同じようなことをやっていましたが、そのときはどうやったの だったか…。 ・ftp コマンドの終了ステータスが >0 ならエラー ・2xx がひとつもなかったら認証以前で失敗とみなしてエラー のいずれかだったような気がします。 |
>>4791 68user >・ftp コマンドの終了ステータスが >0 ならエラー >・2xx がひとつもなかったら認証以前で失敗とみなしてエラー ありがとうございます。 なるほど、2xxがなかったらですか。 確かに、接続エラーということは、レスポンスコードが出てなかった ので、レスポンスコードがなければで良いかも知れません。 UNIXのOSによるかも知れませんが。 環境は、Solaris8 です。 |
AIX5.3の環境にて下記のようなファイルシステムをマウントしています。 /app /app/log auto mount=trueの設定です。 OS再起動後、/appがマウントされていなかったので、/etc/filesystemsを 確認したところ、/app/logの定義が/appの定義よりも前に記述されいたため、 /app/logが先にマウントされてしまい、/appのマウントに失敗したようです。 一旦、/app/logをアンマウントし、/app, /app/logの順番でマウントしました。 次回の再起動時に正常にマウントできるように、/etc/filesystemsを直接、 編集して正しい順序に設定しようと考えていますが上記ファイルシステムが マウントされたままの状態で作業を行なっても大丈夫か教えて頂けますでしょうか? |
>>4793 保守見習い AIX は知りませんが、マニュアルを読む限りでは他 UNIX 系システムの /etc/fstab と同様に、 ・ブート時の mount 順序を決める ・ブート時の mount の設定を記述する ・mount コマンド実行時に各種オプションが省略された場合の デフォルト値を記述しておく という役割のようなので問題ないでしょう。 http://publib16.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/files/aixfiles/filesystems.htm |
>>4794 68user ご意見ありがとうございます。 ファイルシステムをマウントしたまま、/etc/filesystemsを編集し、 問題なく無事作業が完了しました。 |
おひさしぶりです。 わからないことができると質問しに現れてすみません。 よろしくお願いします。 C:\>perl -v This is perl, v5.8.8 built for MSWin32-x86-multi-thread (with 50 registered patches, see perl -V for more detail) Copyright 1987-2006, Larry Wall Binary build 820 [274739] provided by ActiveState http://www.ActiveState.com Built Jan 23 2007 15:57:46 で、以下のようなプログラムを書きました。 -------------------------------------------------- Foo.pm #! perl -w use strict "subs"; package Foo; use base Exporter; our @EXPORT = qw($bob); our $bob = "#123456789"; 1; -------------------------------------------------- bar.pl #! perl -w use strict; use Foo; print "bob: $bob \n"; すると、以下のようなエラーになります。 C:\>bar.pl Unknown error Compilation failed in require at C:\bar.pl line 6. BEGIN failed--compilation aborted at C:\bar.pl line 6. Foo.pm の use strict 'subs'; を無効にするとなぜか正常に動作します。 C:\>bar.pl bob: #123456789 何が悪いかお分かりでしょうか。 別に use strict 'subs' をやめればいいじゃん・・・ というハナシなんですが、 実際の元のプログラムはもっと大きくて(当たり前 ;;;)、 use strict; でずっとやってきていたので・・・。 何かわかりましたらよろしくお願いいたします。 |
追記です。 どうも use base Exporter; が use strict 'subs' に引っかかるらしく -------------------------------------------------- Foo.pm #! perl -w package Foo; use base Exporter; use strict "subs"; our @EXPORT = qw($bob); our $bob = "#123456789"; 1; だと動作します。あと use base をあきらめて -------------------------------------------------- Foo.pm use strict "subs"; package Foo; use Exporter; our @ISA = qw(Exporter); our @EXPORT = ('$bob'); our $bob = "#123456789"; 1; でも動作します。 ううーん。 |
kqueue の説明の所 timeval は tv_sec, tv_usec で分解能 10^-6 == micro second timespec は tv_sec, tv_nsec で分解能 10^-9 == nano second 実際の分解能は処理系依存 |
awk/nawkを使って編集をしています。 ファイルから読み込み、読み込んだ内容を判断して printf関数を使って表示しています。 例えば { \ printf("XXX:%s\nxxx:%s\nxxx:%s\n・・・・\n", \ $1,$2,$s・・・・); \ } \ のように、値の前にコメント付けて表示しています。 この表示内容を追加したところ、 「Word too long」 のメッセージが出力され動かなくなりました。 メッセージの通り、printf関数で表示する内容が長すぎるためだと 思うのですが、原因は、その通りでしょうか。 実際、何バイト(何文字)までなのでしょうか。 また、対処するにはどうしたらよいのでしょうか。 環境は、 Solaris8、csh |
>>4799 べた 補足です。 メッセージの通り1行が長いのがいけないのではと フィールドごとに表示しようとしたのですが、 例えば { \ printf("xxx:%s\n",$1); \ printf("xxx:%s\n",$2); \ printf("xxx:%s\n",$3); \ : : } \ やはり、 「Word too long」 のメッセージが出力され動かなくなりました。 |
はじめまして。 最近openSSLを使用することになったので勉強しています。 非常にいい内容で助かっています。 それでですねrsaを使用する際のサンプルを一度コンパイルしてみたのですが… RSA_generate_keyをはじめとする、約25個の関数が未定義と起こられてしまいました… これはハードウェア的な問題なのでしょうか? ちなみにlinuxにtelnetで接続しながら作っています。 よろしくお願いいたします。 |
>>4800 べた awk スクリプトを別ファイル(以下の例では hoge.awk)にして $ awk -f hoge.awk fuga.txt のようにしてもダメですか? |
>>4800 べた 書き忘れましたが、別ファイルにする場合は 行末の "\" は削除してください。 |
はじめまして。 サーバ関係の情報を探していて、ここにたどりつきました。 下記のようなPOPサーバの改造は可能でしょうか。 ネット上を探してみたのですが、情報が少なく、 参考になるサイト等ご存知でしたら、ご教授ください。 よろしくお願い致します。 【現状】 POPクライアントの拡張コマンド内で、 ユーザID等をべた書きして、サーバにリクエストしている。 【改造】 現在クライアントにて上記のべた書きしている箇所をプロパティファイル とする。POPサーバを改造し、このファイルを読み込むようにする。 |
>> 4803 ありがとうございます。 上手くいきました。 |
>>4805 べた それで OK だったということは awk ではなく csh の制限に引っかかっていたようですね。 恐らく awk のスクリプト部分を \ で複数行つなげていたので 一行に記述できる制限(1024文字)を超えたのでしょう。 |
はじめまして。 Perl CGIで基本認証をクリアーするやり方は分かっているのですが、 IEに事前に基本認証をクリアーさせるための設定方法が分かりません。 perlから、IEに対して、ヘッダーとして下記を書き込んでも、だめなんですね。 print "Authorization : Basic Base64文字列\n"; かならず、認証画面が表示されます。 IEに何を書き込めば良いのでしょうか。ご教示をお願いします。 |
>>4798 通りすがりのプログラマ ありがとうございます。バグ ID 28 として記載いたしました。 近日中に直します。 http://spreadsheets.google.com/pub?key=pAr6UVKFG0jthbVP572cKEA&output=html |
はじめまして、'斎藤 誠'と申します。 初めての投稿で質問する不躾をお許しください。 とある理由からpop3クライアントを試しています。 pop3-client.pl pop3-client-Net::POP3.pl 双方を試してみまして、後者の方を使用したいと思っています。 当方の環境はFedora7です。小生自身は初心者です。 いわゆる自宅サーバで試しているのですが、 当方が別のIPで設置しているtest-pop3.server(以下、前者)と 目的のpop3.server(以下、後者)とで応答が異なっていることで困っています。 双方ともtelnet接続では正常な応答をしています。 ちなみに前者はFedora core 6でdovecotです。 pop3-client.plにて接続すると、前者がエラーで後者が正常応答です。 これに関してはNo.2380の sleep 1; を挿入したらうまく動きました。 pop3-client-Net::POP3.plにて接続するとpop3-client.plの場合とは 逆に前者が正常に応答して後者はエラーとなります。 今日一日費やしてみましたが、解決できません。どなたかにご教授願いただきたく 投稿しました。なお、初心者ですので何卒お手柔らかにお願いいたします。 |
>>4796 ふくし > use base Exporter; うちでは use base qw/Exporter/; とすることで動きましたがどうでしょうか。 >>4804 pixy > 現在クライアントにて上記のべた書きしている箇所をプロパティファイル > とする。POPサーバを改造し、このファイルを読み込むようにする。 前提条件がよくわかりませんが、ソースがあるとして改造が可能か と問われれば「可能です」が答えです。 >>4807 Perl使い > print "Authorization : Basic Base64文字列\n"; Authorization ヘッダはクライアントがサーバに送信するものなので、 根本的に誤解があるようです。 http://x68000.q-e-d.net/~68user/net/http-auth-1.html 以下のような CGI プログラムを使うことで、疑似的にログアウト することもできます で実現できませんか? あと、別解として http://username:password@example.com/foo/ に飛ばす方法もありますが、IE の場合は設定変更が必要です。 http://support.microsoft.com/default.aspx?scid=kb;JA;834489 >>4809 mac pop3-client.pl は実用に耐えるものではないので、pop3-client-Net::POP3.pl を 使ってください。で、pop3-client-Net::POP3.pl の $pop = Net::POP3->new($hostname); を $pop = Net::POP3->new($hostname, Debug=>1); としてデバッグ情報を表示してみてください。 あと、Net::POP3 の方でエラーになるサーバの POP3 サーバソフトウェア名と バージョンは何でしょうか? (qpopper など) それと「エラーになる」というのは具体的に何がどうなるのでしょうか。 代替案としては Mail::POP3Client http://search.cpan.org/~sdowd/Mail-POP3Client/POP3Client.pm を使う手もあります。 |
早々のお返事、有難う御座います。 エラーは「認証失敗: 」だったのですが、 ご教授の通りデバッガつけて起動させて見ましたところ Net::POP3>>> Net::POP3(2.28) Net::POP3>>> Net::Cmd(2.26) Net::POP3>>> Exporter(5.58) Net::POP3>>> IO::Socket::INET(1.29) Net::POP3>>> IO::Socket(1.29) Net::POP3>>> IO::Handle(1.25) Net::POP3=GLOB(0x9e97f44)<<< +OK Qpopper (version 4.0.4) at ******.jp startin g. Net::POP3=GLOB(0x9e97f44)>>> USER ****** Net::POP3=GLOB(0x9e97f44)<<< +OK Password required for ******. Net::POP3=GLOB(0x9e97f44)>>> PASS .... Net::POP3=GLOB(0x9e97f44)<<< +OK ****** has 0 visible messages (0 hidden) in 0 octets. Net::POP3=GLOB(0x9e97f44)>>> STAT Net::POP3=GLOB(0x9e97f44)<<< +OK 0 0 認証失敗: at ./pop3-client-Net::POP3.pl line 41. ということで認証は通っていたようです。mailが空だったということでしょうか。 お騒がせいたしました。line 41というのは多少いじったところもあって originalとは異なりますが、 $auth_check = $pop->login($username,$password); など、実質的な変更はしていないつもりでした。 ちなみにtelnet接続でのcapaの応答は +OK Capability list follows TOP USER LOGIN-DELAY 0 EXPIRE 0 UIDL RESP-CODES AUTH-RESP-CODE X-MANGLE X-MACRO X-LOCALTIME Fri, 20 Jul 2007 09:04:45 +0900 IMPLEMENTATION Qpopper-version-4.0.4 となっていました。 これからFTPなどもやってみるつもりですのでまたお世話になるかもしれません。 そのときはまたお願いいたします。 |
Net::POP3 の検索でみましたら login ( [ USER [, PASS ]] ) USER、PASSコマンドの両方を送信します。... メールボックスのなかのメッセージ数を返します。 しかしサーバーにメッセージが何もなければ文字列"0E0"を返します。 これはブール値コンテキストでは trueになりますが、 数値コンテキストでは0です。 指定したユーザがサーバーで認証できなければ、undefが返されます。 ----------------------------------- とあったのですがバグということでしょうか。 Mailが無いことを確認できる方法は有りますでしょうか。 その場合はundefのエラーを回避するというスクリプトを 書けばよいようにも思っています。 |
>>4811 mac pop3-client-Net::POP3.pl の if ( $auth_check == undef ){ は誤った書き方で、正しくは if ( ! defined $auth_check ){ です (以前は undef かどうかのチェック方法を誤解していたため)。 これだとどうなりますか。 |
>>4813 68user > if ( ! defined $auth_check ){ バッチリです。それにしてもすばやいレス、本当に有難う御座います。 |
たいへん心苦しいのですが別のことをお聞きしてよろしいでしょうか。 HTTPクライアントのスクリプトで、Basic認証が通ったかどうか 戻り値などで判断する方法は有りますでしょうか。 いま確認中のスクリプトは以下の通りです。 #!/usr/local/bin/perl use strict; use HTTP::Request::Common; use LWP::UserAgent; my $req = POST( 'http://*****.jp/login.html'); $req->authorization_basic('ID', 'Pass'); my $ua = LWP::UserAgent->new; my $res = $ua->request($req); |
>>4815 mac HTTP::Response の code メソッドを使えばよいと思います。 ----- #!/usr/local/bin/perl use strict; use HTTP::Request::Common; use LWP::UserAgent; my $req = POST( 'http://X68000.q-e-d.net/~68user/net/sample/http-auth/secret.html'); $req->authorization_basic('hoge', 'wrong-password'); my $ua = LWP::UserAgent->new; my $res = $ua->request($req); print $res->code."\n"; my $req2 = POST( 'http://X68000.q-e-d.net/~68user/net/sample/http-auth/secret.html'); $req2->authorization_basic('hoge', 'fuga'); my $ua2 = LWP::UserAgent->new; my $res2 = $ua2->request($req2); print $res2->code."\n"; |
>>4816 68user 重ね重ね、有難うございました。 |
>>4810 68user さん、 そうなんですよ。use は引用符をつけてはいけないが use base だとダメ、 no strict 'refs'; だとあらゆる裸のワードを勝手にクォートするらしいです。 お騒がせしました。 |
>>4818 ふくし わかっておられるかもしれませんが、use base は built-in な文法ではなく ただ base.pm を use しているだけなので、base 内の sub import の引数として 渡されるから、ということですね。strict も実体は strict.pm なので同様に strict refs ではなく 'refs' としなければならないと。 個人的には、ここまで汚い造りにするかねぇ、という感じです。いちおう つじつまをあわせてるのはすごいですが。 |
awkを使ってファイルからある部分のデータを取り出そうとしています。 ファイルの内容 ---------------------------------- ---------------------------------------- Tue Jul 31 09:00:00 Jst 2007 xxxxxx xxxxxx xxxxxx xxxxxx Tue Jul 31 09:00:00 Jst 2007 ---------------------------------------- Tue Jul 31 09:10:00 Jst 2007 xxxxxx xxxxxx xxxxxx xxxxxx Tue Jul 31 09:10:00 Jst 2007 ---------------------------------------- Wed Aug 1 09:00:00 JST 2007 xxxxxx xxxxxx xxxxxx Wed Aug 1 09:00:00 JST 2007 該当の曜日、月、日から始まる行以降から 最終行まですべてを取り出そうとしているのですが、 awkで上手くいきません。 以下の様なエラーがでて上手くいきません。 どうすればよいのでしょうか。 awk: syntax error near line 1 awk: bailing out near line 1 シェルの内容 ----------------------------------------- #!/bin/sh LOG_FILE="/tmp/kekka.log" #DATE=`date "+%a %b %e"` DATE=`date +%C | cut -c 1-10` awk -v DAY=$DATE'/^DATE/,/\\r/ {print $0}' ${LOG_FILE} exit 0 |
UNIXの環境変数のLANGに使用する言語の指定に 「japanese」があるのですが、これは、日本語 が使えるのですか。それとも日本語のSJISが 使えるのでしょう。 また、UNIXのOSがどのコードなのかどこを見れば わかるのでしょうか。 また、EBCDICコードがあるのですが、これを使うには どうしたらよいのでしょうか。 |
>>4820 べた > awk -v DAY=$DATE'/^DATE/,/\\r/ {print $0}' ${LOG_FILE} まずは % sh -x スクリプト名 などとして、意図どおりの引数を渡せているか確認しましょう。この場合は awk -v DAY=20/^DATE/,/\\r/ {print $0} a.dat と表示されますので、意図通りではないはずです。 具体的には以下の問題があります。 - 20 はおそらく希望する値ではない - 20 の後に空白がない。 - DATE の中にある変数でパターンマッチするのではなく、"DATE" という文字列を 探すようになっている。 - DAY と DATE の誤記。 >>4821 なし > UNIXの環境変数のLANGに使用する言語の指定に > 「japanese」があるのですが、これは、日本語 > が使えるのですか。それとも日本語のSJISが > 使えるのでしょう。 一般的には japanese は ja_JP.eucJP・ja_JP.PCK (Shift_JIS)・ja_JP.utf-8 などのエイリアスであることが多いように思います。実際にどのエイリアスで あるかは OS やバージョンによるでしょう。 > また、UNIXのOSがどのコードなのかどこを見ればわかるのでしょうか。 OS により異なると思います。env コマンドで何か出てくるかもしれません。 > また、EBCDICコードがあるのですが、これを使うにはどうしたらよいのでしょうか。 例えば dd コマンドで ASCII に変換できます。商用のアプリケーションも いくつか出ているようです。 |
UNIX の部屋に ファイル制限まとめ http://x68000.q-e-d.net/~68user/unix/pickup?%A5%D5%A5%A1%A5%A4%A5%EB%C0%A9%B8%C2%A4%DE%A4%C8%A4%E1 を追加しました。 |
>>68user ありがとうございます。 >% sh -x スクリプト名 で確認してみました。 DAYとDATEは誤記ですが、DAYに直しましたが結果は同じでした。 awk -v DAY=$DATE'/^DAY/,/\\r/ {print $0}' ${LOG_FILE} パターンマッチングのところが、引数で渡した値ではなく、 ”DAY”という文字列でした。(文字列と言い切れるのかどうか。?) |
>>4824 べた まずはコマンドラインから awk を叩いて、正しい結果を取得できるように なるところから始めましょう。シェルスクリプトはその後。 あと >>4822 68user > 具体的には以下の問題があります。 を直さないと動きません。念のため。 |
>>4825 68user 色々とありがとうございます。 試してみます。 |
>>4825 68user やはり、「^」を指定しているので、行の先頭が、DAYという 文字列から始まっているのを探していました。 試しにファイルの方を修正し、日付を「DAY Aug 2」としたところ 表示されました。 マッチングのところに、変数を展開できないのでしょうか。 nawk -v DAY="Fri Aug 10" '/^DAY/,/\\r\\n/ {print $0}' /tmp/kekka_log.log |
>>4822 68user 返事遅れてすみません。 ありがとうございます。 |
>>4827 べた 変数展開は $n ~ VAR と書きます。 で、/\\r\\n/ ですが、これうまく動きますか? awk はよくわかりませんが、 マッチしてないと思います。 なので、DAY から ------ までを見るようにして、 awk -v DAY="Fri Aug 10" '$0 ~ DAY,/^--*$/ {print}' か awk -v DAY="Fri Aug 10" 'BEGIN{skip=1} $0 ~ DAY {skip=1;print $0} /^--*$/ {skip=0} skip==1 {print} ' あたりがいいんじゃないですかね。 なお、行頭の日付だけ見るなら、DAY="^Fri Aug 10" です。 |
「リダイレクト」についての説明の中の 『「リダイレクトは右に書いたものから順に評価されるから」は間違いである。』 のくだりが分かりやすくてつい書き込んでしまいました。 他のサイトは上記のような説明で終わっている所があったのですが、 なんとなく「ん?」と違和感が残ってました。 で、このサイトの内容ですっきりです。ありがとうございました。 ドメインも素敵です(笑) |
>>4830 通りすがり ありがとうございます。ついでなので書いておくと、先頭に書いてもいいです。 >/dev/null 2>&1 ls foo.txt |
>>4829 68user ありがとうございます。 変数の展開ができました。 「'$0 ~ DAY」 の使い方は知りませんでした。 >で、/\\r\\n/ ですが、これうまく動きますか? awk はよくわかりませんが、 >マッチしてないと思います。 ファイルの最後まで見るというつもりでした。 EOFがこの表記でいいのかさなかですが。? 多分、ファイルの最後まで走査し、終了しているのではないかと。 >awk -v DAY="Fri Aug 10" 'BEGIN{skip=1} $0 ~ DAY {skip=1;print $0} /^--*$/ {skip=0} skip==1 {print} ' 日付が二行でます。 Fri Aug 10 ・・・ Fri Aug 10 ・・・ **** **** **** Fri Aug 10 ・・・ Fri Aug 10 ・・・ 見たいになります。 |
>>4832 べた > ファイルの最後まで見るというつもりでした。 その挙動でよいのであれば、問題ないと思います (実質機能していないと 思うので、書き方としてはまずいですが)。 > 日付が二行でます。 print $0 を削除するなどしてください。 |
>>4833 68user お礼遅れてすみません。 ありがとうございました。 |
前にも同じ質問をしたのですが、 findの検索で、指定ディレクトリ(カレントディレクトリ)内の ファイルだけを検索し、-mtimeを指定して、30日前のファイルを 削除しようとしています。 配下のディレクトリを検索しないよう、-prune を指定して、まずは、 以下のようにしたのですが、”*.csv”以外が表示されていまいます。 find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -print と実行すると、 カレントディレクトリと、「*.csv」以外のファイルが表示されます。 find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -mtime +30 と実行すると、 表示されるのですが、どこのディレクトリを検査した結果かわからない状態でして、 確認と実際は、rm を指定してファイルを削除するで、「-exec ls -l {} \;」 をして表示してみたのですが、 find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -mtime +30 -exec ls -l {} \; と実行すると、 何も表示されません。 find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -mtime +30 -print と実行すると、 何も表示されません。 正しく、結果が表示されるように、 最終的には、30日前とか、90日前のファイルが削除できるように したいのですが、どのようにすればよいか、 教えてください。 |
>>4836 べた > find /home/DATA/backup -name '*.csv' -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune -o -print > と実行すると、 > カレントディレクトリと、「*.csv」以外のファイルが表示されます。 この結果がすでにマズいんですよね? 前回のわたしの回答 >>4763 68user は的外れだったような気がします。最終的には以下のようになるのではないかと思います。 % find /home/DATA/backup -name '*.csv' -mtime +30 -exec ls -l {} \; -o -name everyday -prune -o -name monthly -prune -o -name tmp -prune -o -name work -prune 構造としては ・[ファイル名が *.csv] AND [mtime が +30] AND [-exec ls -l] OR ・[ファイル名が everyday] AND [-prune] OR ・[ファイル名が monthly] AND [-prune] OR (略) となります。 ただし -exec や -prune は常に真で、コマンドを実行する・ディレクトリを下降しない という副作用を発生させるのが主目的ですので、より平易に書くと ・[ファイル名が *.csv] AND [mtime が +30] なら [-exec ls -l] を実行 OR ・[ファイル名が everyday] なら [-prune] で下降抑止 OR ・[ファイル名が monthly] なら [-prune] で下降抑止 OR (略) となります。なお、ここでの OR は、左辺が真なら右辺は評価しない、 という意味です。また、OR の各要素の順序を入れ替えても、このケース では問題ありません (*.csv と everyday が両方真になることはないので)。 典型的な -prune の使い方をまとめると以下のようになると考えます。 - 特定のディレクトリ以外について何か (-print) を行う ⇒ find . -name hoge -prune -o -print - 特定のパターンのファイルに何か (-ls) を行うが、特定ディレクトリ以下は除外する ⇒ find . -name \*.csv -ls -o -name hoge -prune - 特定のパターンのファイルに何か (-print) を行うが、特定ディレクトリだけは 除外する。ただし特定のパターンにも特定のディレクトリにも一致しない場合は、 別の何かを行う (-ls)。 ⇒ find . -name \*.csv -print -o -name hoge -prune -o -ls |
>>4837 68user ありがとうございます。 返事遅れてすみません。 一度、内容を読んで、確認してみます。 それで、再度、質問します。 |