Just another Ruby porter,

〜2001年4月下旬〜


<Prev(,) | Next(.)> | Recent(/)>> | RDF

2001-04-21 (Sat)

[Cygwin] ntea と ntsec

CygwinでUnixのpermissionをemulateするにはふたつ方法がある。 nteaとntsecだ。名前の通りWin9x/MEじゃなくてWinNTとWin2kのみ有効。

_ ntea:

歴史的にはnteaが先に実装されたので、ずーっとこれを使っていた。 NTFSならNT Extended Attributesってとこにその情報が収まるので特に問題はない。 だがFATな領域になにか書き込むと"EA DATA. SF"という属性専用のファイルをroot directoryに作る。 これがどんどん大きくなる。 いつのまにか10MBを越えてたりする。 全部NTFSで使っていればいいんだけど、MOはやっぱそういうわけにもいかない。 特にMOで10MBが無駄になるのは大きい。

_ ntsec:

というわけでntsecだ。 あ、どうやって設定するかというと環境変数CYGWINに追加する。

% export CYGWIN='tty binmode ntea'

とか

% export CYGWIN='tty binmode ntsec'

のように。どっちにしても

% chmod 0600 ~/.netrc

もちゃんと設定できるようになる。 ただntsecに変えた直後はすべて0777に見える。 これはアクセス権がEveryoneに対してフルコントロールになってるから。 getfacl commandを実行するとわかる *1

ruby:/d/gcc-2.95.2 % ls -l
total 37
drwxrwxrwx   3 watanabe ruby         4096 May 28  2000 bin
drwxrwxrwx   2 watanabe ruby        69632 Apr  4  2000 doc
drwxrwxrwx   4 watanabe ruby            0 Apr  4  2000 i386-mingw32msvc
drwxrwxrwx   3 watanabe ruby            0 Apr  4  2000 include
drwxrwxrwx   3 watanabe ruby            0 Apr  4  2000 lib
-rwxrwxrwx   1 watanabe ruby          260 Apr  4  2000 mingw32.bat
-rwxrwxrwx   1 watanabe ruby          304 Apr  4  2000 mingw32.sh
ruby:/d/gcc-2.95.2 % getfacl mingw32.bat
# file: mingw32.bat
# owner: 1000
# group: 513
user::---
group::---
mask::---
other::rwx
ruby:/d/gcc-2.95.2 % id
uid=1000(watanabe) gid=513(ruby) groups=513(ruby)
ruby:/d/gcc-2.95.2 % chmod 0644 mingw32.bat
ruby:/d/gcc-2.95.2 % ls -l mingw32.bat
-rw-r--r--   1 watanabe ruby          260 Apr  4  2000 mingw32.bat
ruby:/d/gcc-2.95.2 % getfacl mingw32.bat
# file: mingw32.bat
# owner: 1000
# group: 513
user::rw-
group::r--
mask::r--
other::r--
ruby:/d/gcc-2.95.2 %

これはext/pty/script.rbの"/bin/csh"のとこを変更して取った。
この状態で

Everyone -- 特殊なアクセス権(R)
watanabe(WATANABE Hirofumi) -- 特殊なアクセス権(RWDPO)
なし -- 特殊なアクセス権(R)

という感じになる。そのまま

watanabeがuser
なしがgroup
Everyoneがother

に相当すると考えられる。

_ administrator:

administratorの権限をつけてるとファイルの所有者はadministratorになってしまう。 が、WinNTでつけないで使ってる人などいない気もする。 Win2kならrunasがあるからつける必要はないんだけど。 Cygwinしか使ってないおいらの場合はつけてない。


*1: もちろんExpolorerでファイルのアクセス権を表示してもいい。

JARH

print 'Just another Ruby hacker,'.scan(/./).pack'a'*25

2001-04-22 (Sun)

[Cygwin] ntsec

0777のままじゃいやだよね。ってわけで

% find ~ -type d | xargs chmod -v 0755
% find ~ -type f | xargs chmod -v 0644

として、~/binは+xし直したりした。その他の必要なとこは個別にchmodし直し。 ついでに/usr/localも同じようにchmodした。 c:/cygwinから一気にやってもいいんだけど、 それなら再インストールしたほうがよさそう。こっちはいずれ。

_ DLL:

ここで

% ruby -rsocket -e0

がエラーになることに気づく。 straceしてみるとLoadLibrary自体がエラーになっている。 違いはsocket.soを0644に変えただけ。試しにchmod +xしてみたら問題ない。 そうか、そんなとこまで関係するのか。なかなか奥が深い。 実を言うとmodruby-ja MLのX-Mail-Count: 00019はそういう意味だったりする。

eruby 0.9.1

というわけでそのパッチをあてて更新。 小さいから--enable-sharedにしてもあまり意味がないと思う。 Apache 1.3.20が出たら考えよう。

Debian

UNIX USERにDebianがついてきたので、試そうかと思ったらDVDだった。 2枚組にどうやって収めたんだと疑問だったがそういうことか。 ってDVD-ROM driveなんてうちにはないよ。 いいかげんPCの買い換え時か。

[ruby-dev:13018]

Alphaなマシンには縁がないのになぜに?と、改めて これ を見て納得。

Google

oが地球になってる。 Google 自体がちゃんとhrefになってる。Earth Dayなんて初めて知ったよ。

HTTP basic auth

え?一ヶ月前に実装したよね。

date: 2001/03/13 05:48:58;  author: aamine;  state: Exp;  lines: +5 -2
aamine
* lib/net/http.rb: add HTTPRequest#basic_auth.

JARH

'Just another Ruby hacker,'.send 'yalpsid'.reverse.intern

2001-04-23 (Mon)

[Cygwin] smbntsec

samba上のファイルがいったい誰のファイルなんだ状態になって困る。

% ls -l hoge
-rw-r--r--   1 3232     Administ        0 Apr 23 13:18 hoge

これはLinux上ではおいらのファイルなんだけど、 てゆうかnteaでは問題なく書き込めてたんだけど、なじぇ? 調べてみるとsmbntsecってのがあってnoにすればいいらしい。

% CYGWIN='ntsec nosmbntsec' ls -l hoge
-rw-r--r--   1 watanabe ruby            0 Apr 23 13:18 hoge

なるほど。もちろんsmb.confでは

sucurity = server

にしてる。あ、いや、もちろんでもないが。と思ったら

sucurity = DOMAIN

になってた。いつのまにそんな設定にしてたんだ、おれは。

INNER CHILD

センチバっていつのまにか解散したのか? hitomiのINNER CHILDが センチバのアキノリの作曲と紹介されてた。

JARH

print %w.Just another Ruby Ruby Ruby hacker,..uniq.join ' '

2001-04-24 (Tue)

rashworth

あたりから不気味だったけど、 か。 Dave さんは優しいなあ。

[Cygwin] gcc-2.95.3-3

-no-cygwin 問題は直ってる。
diff を取ってみるとspecs関係が結構変更されてる。 .winnt.c.swpとか残しとかないように。
-2に比べて小さくなったなと思ったら、 objcがごっそりなくなってる。いいのかそれで? おいらは使わないからいいけど、というより使ったことがない。

JARH

{}.fetch(:x){'Just another Ruby hacker,'}.display

2001-04-25 (Wed)

setup.exe

Cygwinのsetup.exeのソースは CVS か、snapshotsのcygwin-src-xxxxxxxx.tar.bz2の中にしかないです。 cinstallというディレクトリがそれ。
たしかにこれを使うのはけっこういいかもしれないなあ。 まねしちゃおうかな。

Cygwin 1.3.1

なぜかいきなり1.3.1に。mingw, w32apiもやっと更新された。 /usr/lib/mingw/libstdc++.aは忘れさられたようだ。 お約束の如くRubyも通らなくなった。

_ strftime.c:

missing/strftime.cはどうしようかな。 ほんとはこれを使う必要もないんだけど。 defines.hに#undef HAVE_TZNAMEを入れるのがいいかと思ったら、 strftime.cはこれをincludeしてない。 configure.inでac_cv_var_tzname=noするしかないか。

_ dllwrap:

dllwrapは内部的に-nostartfilesしてるから -L/usr/lib -L/usr/lib/w32apiが指定されなくなる。 よって-luser32が見つからない。 もうちょっとテストしてからリリースしてよ。

% dllwrap -o foo.dll

でわかるし。 --target=mingwのときは-nostartfilesしてないから、 そもそもそんなオプションをつけなくてもいいんだよね。 とはいうもののdllwrap自体は元々そういう仕様だったし、 gccの挙動が変わったのか?
対策としては-L/usr/lib/w32apiをつけるのが簡単。 根本的にはgcc -sharedでDLLを作るのがいいんだろう。
Ruby 1.6.4に入れるべき?

JARH

{}.delete(:x){'Just another Ruby hacker,'}.display

2001-04-26 (Thu)

出張

だいたいけりはついた。

[Cygwin] gcc-2.95.3-4, binutils-20010425-1

出たみたいだ。試せるのは明日だな。

The new gcc release fixes a problem where /usr/local/lib was not being
searched by default.  It also forces a search of /usr/lib/w32api when
linking regardless of whether -nostdlib is specified or not.

binutils is basically an update release but there is one additional
feature.  'ld' searches both /usr/lib and /usr/lib/w32api by default.
Hopefully, this will rectify some of the dlltool problems that are
being reported.

とりあえずRubyのほうはconfigure.inだけいじっとこう。

PS2 Linux Kit

ついに出たか。

JARH

print [:x].map{'Just another Ruby hacker,'}

2001-04-27 (Fri)

[Cygwin] gcc-2.95.3-4, binutils-20010425-2

Rubyは無事makeできた。 binutilsはまだ不具合あったらしく早くも-2へ。 Cygwin 1.3.2も近々出るらしい。

JARH

{'Ruby hacker,'=>'Just another'}.each{|x|print x.reverse.join ' '}

2001-04-28 (Sat)

OBJECT DAY 2001

O1, B1, D2, A3で申し込んで受講票が来た。来たのは25日だが。

VAIO

会社に置いといても遊んでるだけなので、連休中は家で遊ぶことにした。 どっちにしても遊んでる。 それはそれとして、ここには最新のCygwinを入れることにしよう。

JARH

print [].unshift('Ruby hacker,').unshift('Just another').join ' '

2001-04-29 (Sun)

ruby-talk ML

最近多すぎる。原因はmascotか。基本的にどうでもいい話で盛り上がってる。 ruby-talkが多いとなぜかruby-listに書くのを控えたくなる。

DHCP

VAIOのためにDHCP serverを立ち上げた。 1台しかないから常に固定なんだけど、 てゆうかクロスケーブルだから1台しかつながらないんだけど、 いちいち手動で設定すると再起動しろとか言われそうだし。
/var/log/messageを見ると5分に1回の頻度でリクエストを出している。 ちと多すぎないか?あ、

default-lease-time 600;

のせいか。

default-lease-time 1200;

にしたら10分になった。なぜ半分の時間なのかは依然として謎ではあるが。

[Cygwin] OpenGL

/usr/include/GL/gl.hには

/* Version */
#define GL_VERSION_1_1                    1
#define GL_VERSION_1_2                    1

とあるが、opengl-1.1.0-3.tar.gzという名前からわかるようにどう考えても 1.2ではない。

JARH

{3=>'Ruby ',2=>'another ',4=>'hacker,',1=>'Just '}.indexes(1,2,3,4).display

2001-04-30 (Mon)

[Cygwin] rbogl

そのまま作ると/bin/glut32.dllに依存したものができあがる。 つまりopengl-1.1.0-3.tar.gzもインストールしてくれって話になる。 もう静的にリンクするとかやめようかな。 opengl-1.1.0-3-src.tar.gzはとっても面倒なソースになってるし。

[Cygwin] binutils-20010425-2

% tar xfvz binutils-20010425-2-src.tar.gz
% cd binutils-20010425-2
% mkdir obj; cd obj
% CFLAGS=-Os CXXFLAGS=-Os \
  ../configure \
  --target=i686-pc-cygwin \
  --prefix=/usr/local/cygwin
% make
% sudo make install

[Cygwin] gcc-2.95.3-4

% tar xfvz gcc-2.95.3-4-src.tar.gz
% cd gcc-2.95.3-4
% mkdir obj; cd obj
% CFLAGS=-Os CXXFLAGS=-Os \
  ../configure \
  --target=i686-pc-cygwin \
  --prefix=/usr/local/cygwin \
  --enable-languages=c,c++
% make
<途中略>
_muldi3
../../gcc/libgcc2.c:41: stdlib.h: No such file or directory
../../gcc/libgcc2.c:42: unistd.h: No such file or directory
make[1]: *** [libgcc2.a] Error 1

う?-I/usr/local/cygwin/i686-pc-cygwin/includeが原因か。前回は

% make install tooldir=/usr/local/cygwin

したので/usr/local/cygwin/i686-pc-cygwin/includeは存在しない。 しょうがない。cygwin-1.1.8-2を使おう。

% tar xfvz cygwin-1.1.8-2-src.tar.gz
% mkdir build; cd build
% lndir ../cygwin-1.1.8-2
% ln -s ../gcc-2.95.3-4/{gcc,libio,libstdc++} .
% mkdir obj; cd obj
% CFLAGS=-Os CXXFLAGS=-Os \
  ../configure \
  --target=i686-pc-cygwin \
  --prefix=/usr/local/cygwin \
  --enable-languages=c,c++

今回はこうしてみた。

% make build_tooldir=/usr/local/cygwin \
  FLAGS_FOR_TARGET='\
  -L$$r/$(TARGET_SUBDIR)/winsup \
  -L$$r/$(TARGET_SUBDIR)/winsup/cygwin \
  -L$$r/$(TARGET_SUBDIR)/winsup/w32api/lib \
  -isystem $$s/winsup/include \
  -isystem $$s/winsup/cygwin/include \
  -isystem $$s/winsup/w32api/include \
  -isystem $$s/newlib/libc/sys/cygwin \
  -isystem $$s/newlib/libc/sys/cygwin32 \
  -nostdinc \
  -B$$r/$(TARGET_SUBDIR)/newlib/ \
  -isystem $$r/$(TARGET_SUBDIR)/newlib/targ-include \
  -isystem $$s/newlib/libc/include \
  -B$(prefix)/i686-pc-cygwin/bin/ \
  -B$(build_tooldir)/lib/ \
  -isystem $(build_tooldir)/include'

なにが違うかというとbuild_tooldir=/usr/local/cygwinにして

-B$(build_tooldir)/bin/ \

-B$(prefix)/i686-pc-cygwin/bin/ \

に変更してちゃんとbinutilsが使われるようにした。 でもだめだった。やっぱbinutilsもいっしょにmakeすることにしよう。 ひょっとしたらcygwin-1.3.1を使わないとだめかなあ。

M:I-2, パーフェクト・ストーム

正月にもらった無料レンタル券2枚が今日期限切れになることが判明。 よく今日気づいたな。 というわけでM:I-2とパーフェクト・ストームだ。 M:I-2は最後の一本だった。ラッキー。

JARH

class Symbol;def -(*)end end
def M(*)print'Just another Ruby hacker,'end
M:I-2


<Prev(,) | Next(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!