[#32695] md5.so (LoadError) — FUKUI Osamu <o-fukui@...>
はじめまして 福井と申します。
In message "[ruby-list:32695] md5.so (LoadError)"
福井です。
In message "[ruby-list:32698] Re: md5.so (LoadError)"
[#32721] コマンドラインオプション -K と -e — "Tatsuaki Nagai" <Tatsuaki_Nagai@...>
永井@KCです。
[#32727] require "./xxx" の「カレントディレクトリ」の意味 — Take_tk <ggb03124@...>
あるディレクトリαにあるスクリプトAに「require "./xxx"」と書いてあると、
まつもと ゆきひろです
たけ(tk)です。
In article <1007384829.854960.10474.nullmailer@ev.netlab.jp>,
たけ(tk)です。
まつもと ゆきひろです
[#32772] newdate — tadf@...
ふなばです。
In article <20011204234521G.tadf@kt.rim.or.jp>,
ふなばです。
まつもと ゆきひろです
ふなばです。
In article <20011210180612F.tadf@funaba.org>,
ふなばです。
なひです。
ふなばです。
なひです。
ふなばです。
まつもと ゆきひろです
ふなばです。
In article <20011210162702A.tadf@funaba.org>,
ふなばです。
In article <20011212093832C.tadf@funaba.org>,
ふなばです。
In article <20011212135605G.tadf@funaba.org>,
まつもと ゆきひろです
すいません。件名が変だったので、再送します。コメントをくださる方は、
須賀です。昨日の議論を反映して、仕様案(*)を改版しました。
[#32797] dir_config (mkmf.rb) のオプション指定の優先順位 — tamra@...
なかだです。
In <200112060205.fB625u928906@sharui.nakada.kanuma.tochigi.jp>
なかだです。
In <200112060838.fB68bx924929@sharui.nakada.kanuma.tochigi.jp>
なかだです。
[#32807] irb 0.8 release — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
From: keiju@rational.com (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
From: keiju@rational.com (石塚圭樹)
けいじゅ@日本ラショナルソフトウェアです.
From: keiju@rational.com (石塚圭樹)
From: rubikitch <rubikitch@ruby-lang.org>
けいじゅ@日本ラショナルソフトウェアです.
From: keiju@rational.com (石塚圭樹)
[#32814] 添削お願い — Take_tk <ggb03124@...>
見てのとおり、ユーザが指定した拡張子のリストの文字列を正規表現の配列に変
[#32836] configure.in for netbsd — hiramatu@...
平松と申します。
[#32858] [ANN] html-template 0.15 — IKEBE Tomohiro <ikebe@...>
[#32869] RAA update — rubikitch <rubikitch@...>
るびきちです。
[#32904] Segmentation fault — em6t-kbt@...
久保田です。
[#32923] Ruby/GSL — yoshiki@...
常定と申します。
[#32930] irbsh の rehash が遅い — rubikitch <rubikitch@...>
るびきちです。
新井です。
[#32935] Ruby256 倍本 " 界道編 " — shukaku@...
原です。
なかだです。
新井です。
[#32945] class-in-state — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#32948] [uri.rb] strip or not — rubikitch <rubikitch@...>
るびきちです。
[#32974] ruby で組んだ CGI の挙動がおかしい — Toru MITANI <toru_m@...2.dion.ne.jp>
[#32987] [Media Watch] 「横着プログラミング」 — Shin-ichiro HARA <sinara@...>
原です。
[#32989] write to $> causes error on mswin32/mingw32 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
あおきです。
こんにちは、なかむら(う)です。
[#33014] "Walrus" on LinuxJapan — Taku Nakajima <tnakajima@...>
中島@ブレーンです。
[#33026] Ruby 1.6.6 リファレンスマニュアル日本語版 (RD) — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#33047] regex bug? — Yamamoto Atsushi <yamamoto@...>
山本@東大駒場です.
[#33050] cgi.rb で cookie の encoding について — Beyond <beyond@...>
こんにちは、なかむら(う)です。
なかだです。
なかだです。
On Fri, 28 Dec 2001 15:46:50 +0900
青山です。
In message <20011228054515.726.qmail@localhost>
青山です。
青山です。
In article <20011229013722.1869.qmail@localhost>,
青山です。
青山です。
宮川といいます。
(根深いところでこじれているようですが…そこはひとまずおいといて、)
[#33114] 新年会 — "Shin'ya Adzumi" <adzumi@...>
あづみです。
[ruby-list:33092] Re: irbsh の rehash が遅い
新井です。 In message "[ruby-list:33086] Re: irbsh のrehash が遅い" on 29 Dec 2001 01:05:04 +0900, nobu.nakada@nifty.ne.jp wrote: > なかだです。 > > At Sat, 29 Dec 2001 00:35:46 +0900, > rubikitch <rubikitch@ruby-lang.org> wrote: > > > #!で始まるファイルは実行可能と見なされます。 > > あ、なるほど。 > > これでは遅くなりますね。 > > いちいちファイルの内容を読んでいるのですから。 > > 環境変数でNTFSのアクセス権を使う設定もできたはずですが、忘れま > した。 Cygwin の stat が遅いのは、stat(2) が様々な情報を一度に返す システムコールであるせいでした(UNIX Magazine 2001.5 の連載 「Inside Cygwin」より)。今回の場合、st_mode メンバの情報だけ が欲しいのに、他の st_nlink やらなんやら使いもしない情報を Cygwin ではエミュレーションする処理が必要になってしまいます。 これがかなり効いて来るようです。 で、実行可能かどうかだけを判断するならもしかすると access(2) を使うと少しはマシになるかもしれません。Cygwin のソースを見 ると ntsec でなければ結局 stat が使われるようではありますし、 また、るびきちさんの要件を満たすには、ディレクトリかどうかの 判断も必要なので access だけでは結局不十分ですが。 ・・・ちょっと興味深かったのでためしてみました。添付の拡張ラ イブラリを make して test_access.rb を実行すると以下のような 結果でした。 # 即興でやったもので、ruby のバージョンやらなんやらは揃えて # ないですが * Cygwin (ntsec) 654 654 0.641 <- (1) access を使った場合の /usr/bin 配下のチェック時間 5.428 <- (2) stat を使った場合の /usr/bin 配下のチェック時間 * Cygwin (ntsec なし) 653 653 13.76 <- (1) 14.911 <- (2) * Linux 704 704 0.076084 <- (1) 0.080063 <- (2) -- 新井康司 (Koji Arai)
Attachments (3)
#include <unistd.h>
#include "ruby.h"
#ifndef SafeStringValue
# define SafeStringValue Check_SafeStr
#endif
VALUE
rb_f_access(VALUE obj, VALUE vpath, VALUE vmode)
{
int mode;
SafeStringValue(vpath);
if (FIXNUM_P(vmode))
mode = FIX2INT(vmode);
else if (NIL_P(vmode)) {
mode = 0;
}
else {
char *p;
mode = 0;
SafeStringValue(vmode);
p = RSTRING(vmode)->ptr;
while (*p) {
switch (*p) {
case 'r': mode |= R_OK; break;
case 'w': mode |= W_OK; break;
case 'x': mode |= X_OK; break;
}
p++;
}
}
if (access(RSTRING(vpath)->ptr, mode) == -1)
rb_sys_fail(0);
return 0;
}
void
Init_access()
{
VALUE rb_cFile, rb_mFConst;
rb_define_global_function("access", rb_f_access, 2);
rb_cFile = rb_const_get(rb_mKernel, rb_intern("File"));
rb_mFConst = rb_const_get(rb_cFile, rb_intern("Constants"));
rb_define_const(rb_mFConst, "F_OK", INT2FIX(F_OK));
rb_define_const(rb_mFConst, "R_OK", INT2FIX(R_OK));
rb_define_const(rb_mFConst, "W_OK", INT2FIX(W_OK));
rb_define_const(rb_mFConst, "X_OK", INT2FIX(X_OK));
}
require 'mkmf'
create_makefile("access")
require 'access'
dir = "/usr/bin"
n1 = n2 = 0
t1 = Time.now
Dir.foreach(dir) {|file|
path = File.join(dir, file)
access(path, File::X_OK) rescue next
n1 += 1
}
t2 = Time.now
Dir.foreach(dir) {|file|
path = File.join(dir, file)
next unless FileTest.executable?(path)
n2 += 1
}
t3 = Time.now
p n1, n2
p t2 - t1
p t3 - t2