Just another Ruby porter,

〜2002年7月上旬〜


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

2002-07-01 (Mon)

6月のspam

241通。そのうち韓国から74通。

[Ruby] Building with Borland or Digital Mars tools?

やはり聞かれてしまったか。 Digital Marsはfunction prototypeに関して変な癖があって面倒なんだよね。 ちゃんと全部宣言を用意すればいいだけの話かもしれないけど。

総集編

こんなにしゃべる中田を初めて見た。


2002-07-02 (Tue)

Mingw32 Alternate C Runtime Library

The Mingw32 Alternate C Runtime Library is being developed as a
replacement for the Microsoft C Runtime Library (MSVCRT.DLL) because
there is a need for a C Runtime Library for Mingw32 users which is not
dependent on the Microsoft C Runtime Library, open-source, not
licensed under the GPL or LGPL, and can be used freely for commercial
use. It will be released under the BSD license. This library will be
100% ANSI/ISO compliant, including Unicode functions and ISO C99
functions.

なかなかよさげだ。

[Ruby] REXML 2.3.7

更新。


2002-07-03 (Wed)

[Cygwin] domain

結局domainにlogonするのはやめた。 所有権だなんだと変更しまくってるうちにsshdの調子もよくなったようだ。 予想外の展開だ。


2002-07-04 (Thu)

Cygwin 1.3.12-1

Changes since 1.3.11-3:

- Fix slow startup times.  (Christopher Faylor)

うむ。直ってる。

VIM6

--enable-rubyinterpは?


2002-07-05 (Fri)

[Ruby] OpenSSL 0.1.1

MS_CALLBACKは<openssl/e_os.h>で定義されてるのでossl.hでincludeするようにした。 でもRuby 1.6.7でnet/http.rbが激しく変更されててhttps.rbが使えない。

そういえば1.6.7になってget_responseが使えなくなったってだれか言ってたよね。 前田さんだった

skkinput 2.04

更新。


2002-07-06 (Sat)

私立探偵 濱マイク

今頃になって録っといたビデオを見る。 小泉今日子はどこにいたんだろう? 景品交換所の女か?

cURL

しまった。--with-ssl=/usr/local/sslを忘れてたか。

curl: (1) libcurl was built with SSL disabled, https: not supported!

でも以前はちゃんと自動的に認識してくれたような気がするんだけどなあ。

NIFTY の会議室

cURLはこれを試すためだったりするんだけど *1。 あらかじめ~/.netrcに

machine enter.nifty.com login ABC01234 password himitsu

を、~/.curlrcに

--netrc

を追加し、

% curl --sslv2 -o fgalts.log -F save=on -F logout=on \
  -F /iw/nifty/fgalts/mes/all/index.html=checked \
  https://enter.nifty.com/iw/nifty/mylist/nifty.log

という感じで、ダウンロード可能。

-F /iw/nifty/fgalts/mes/all/index.html=checked

の部分を複数用意すれば巡回も簡単。 allの部分はMREAD ROOM:で指定できるものが書けるというわけではなく、 会議室番号で指定するなら1個しか見てくれない。

-F /iw/nifty/fgalts/mes/1/index.html=checked \
-F /iw/nifty/fgalts/mes/3/index.html=checked \

と面倒でも全部個々に指定するしかない。でも実際は

MREAD ROOM:1,3

になるからそれほど馬鹿じゃないようだ。 形式は見るとわかるんだけど、 なぜかhtmlではなくNIFTYでは見慣れた例のテキスト形式になる。

この発言に対するコメント
https://enter.nifty.com/iw/nifty/FGALTS/mes/1/com.cgi?885

と余計なものがつくのがあれだが、ここに発言の方法のヒントもあるしね。 あとはnif.rbのNifty::log2mailをちょっといじればok。 で、今は Ruby/libcurl が使えるか模索中。

てゆかおれは様子を見てNIFTYをやめる気だったはずじゃ?ま、いいか。


*1: つまり昨日の OpenSSL も関係してるわけだ。

xmake

AntをC++で実装しなおしたのかと思ったがそういうわけでもなさそう。

% make
cd ./Objects; g++ -DGCC -I../ -c  ../StdAfx.cpp
cd: can't cd to ./Objects
g++: ../StdAfx.cpp: No such file or directory
g++: no input files
make: *** [Objects/StdAfx.o] Error 1

とあらかじめObjects/を掘らないといけないようだ。 あ、configureもあるね。ここでmkdir Objectsしてた。

../CmdLine.cpp: In member function `bool CCmdLine::IsSwitch(const char*)':
../CmdLine.cpp:144: `isdigit' undeclared (first use this function)
../CmdLine.cpp:144: (Each undeclared identifier is reported only once for each
   function it appears in.)
make: *** [Objects/CmdLine.o] Error 1

<ctype.h>をincludeしてないな。 VC++ではなくても許されるってことか?

添付のmakefile.xmlにはVC++用しかないのが痛い。すぐに試せない。 でもこのmakefile.xmlを見てもわかりやすくなったとも思えないんだけど。


2002-07-07 (Sun)

Linux 2.5.25

PATH=/usr/bin:$PATH make SHELL=/bin/bash bzImage \
  2959.83s user 220.48s system 97% cpu 54:24.66 total

2.4だと1時間10分ぐらいかかってたので-Mp,-MD効果はかなりあるな。 depもmodulesも指定しなくていいのは楽だ。

[Ruby] Ruby/libcurlでNIFTY

curlで実行していたのをそのままscriptに置き換えればいい。

require 'curl'

curl = Curl.new
curl.url = 'https://enter.nifty.com/iw/nifty/mylist/nifty.log'
curl.netrc = true
curl.postfields = 'save=on&logout=on&/iw/nifty/fgalts/mes/all/index.html=checked'
curl.file = 'fgalts.log'
curl.perform

curl.body_strを使ってもいい。

NIFTYへの発言

たとえばfgaltsの3番会議室なら

https://enter.nifty.com/iw/nifty/fgalts/mes/3/uploadgo.cgi

へPOSTすればよさそう。でPOST内容は

title=題名
text=内容
comment=番号

の3つでいいのかなあ。 textはCGI::escapeHTMLする必要あり。 改行もそのまま入れる。 新規発言の場合はcommentは要らない。 で、試すのはちと恐いね。でも試してしまった。

sigtext=

も必要のようだ。 でtextはCGI::escapeHTMLするんじゃなくて、 CGI::escapeぽいことをしないといけない。 日本語はしなくてもいいけど、SJISに変換したほうがよさそう。 そのままCGI::escapeでもいいのかなあ。 これがテストスクリプト。

#!/usr/local/bin/ruby -Ks
require 'curl'

curl = Curl.new
curl.url = 'https://enter.nifty.com/iw/nifty/fgalts/mes/3/uploadgo.cgi'
curl.netrc = true
curl.verbose = true
curl.postfields = 'title=interwayからのテスト&sigtext=&text=わたなべです。

Ruby/libcurlを使った発言テスト。
%26

-- 
わたなべひろふみ'
curl.file = 'say.html'
curl.perform

%26は&のテスト。

[Ruby] Ruby GetText Package 0.3.1

更新。なぜかext/gettext/gettextがコンパイルされないと思ったら、 *.oや*.soが残っているのであった。Linux以外の人は注意。


2002-07-08 (Mon)

NIFTY interway

Ruby/libcurl を使って発言のテストをするときは、POSTの

sigtext=

を省略する。このときに

『戻る』ボタンまたはログアウト後に、直接発言を登録することはできませ
ん。再度作成から行ってください。

というエラーになり、発言内容が表示されるので確認できるわけだ。

とりあえずnif.rbを使わなくてもいい環境はできそうだ。

[Cygwin] Cygwin 1.3.12-2

こっそり用意されてる。

[Cygwin] Available for test: gcc-3.1.1-1, gcc2-2.95.3-6, and gcc-mingw-3_1-20020516-1

gcc 3.1.1だけど、 syslimits.hがないとか、 specsの変更で-mwin32しないと<windows.h>がみつからないとか、 いろいろまずいとこがある。 特に-mwin32に関してはwindresと絡むため、かなりまずい。


2002-07-09 (Tue)

[Cygwin] Available for test: gcc-3.1.1-1, gcc2-2.95.3-6, and gcc-mingw-3_1-20020516-1

書き忘れてた。specsの-mwin32の部分だけどこうなってる。 例によって見やすいように適当に改行を入れる。

%{mwin32|mno-cygwin: \
  -DWIN32 -D_WIN32 -D__WIN32 -D__WIN32__  \
  %{!ansi:-DWINNT} \
  -isystem ../include/w32api%s \
  -isystem ../../include/w32api%s \
 }

この-isystemなんだけど、%sは

/usr/lib/gcc-lib/i686-pc-cygwin/3.1.1

からの相対を意味する。展開し、正規化すると

  -isystem /usr/lib/gcc-lib/i686-pc-cygwin/include/w32api \
  -isystem /usr/lib/gcc-lib/include/w32api \

となるが、もちろんそんなとこにはない。全くの無駄な指定だ。この場合の正解は

  -isystem ../../../../include/w32api%s \

だと思う。

実はそのあたりの個数を数えるのが面倒なので

  -isystem /usr/include/w32api \

としてしまった。すでにuninstallしちゃったから次の更新時に確認しよう。

[Ruby] REXML 2.4.0

更新。


2002-07-10 (Wed)

[zsh] history-beginning-search-backward-end

UNIX USERの8月号から:

autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey '^p' history-beginning-search-backward-end
bindkey '^n' history-beginning-search-forward-end

これでtcshと同じ挙動になる。

[Cygwin] gcc 3.1.1

あぁ、全然違う。

  -isystem ../include/w32api%s \
  -isystem ../../include/w32api%s \

で合ってる。見つからないのは

%{mwin32|mno-cygwin: \

の所為だったんだ。%sは

Current argument is the name of a library or startup file of some
sort.  Search for that file in a standard list of directories and
substitute the full name found.

なので、これっていろいろ試しまくるんだね。どういう順番になるのかな。 gcc --print-search-dirsのlibrariesがどうもあやしい。 Linux上で実験してみる。

% gcc --print-search-dirs |\
  ruby -ne '$_.split(/[ :=]+/)[1..-1].each{|i|puts File.expand_path(i)} if /^lib/'
/usr/local/lib/gcc-lib/i586-pc-linux-gnu/3.1
/usr/lib/gcc/i586-pc-linux-gnu/3.1
/usr/local/i586-pc-linux-gnu/lib/i586-pc-linux-gnu/3.1
/usr/local/i586-pc-linux-gnu/lib
/usr/local/lib/i586-pc-linux-gnu/3.1
/usr/local/lib
/lib/i586-pc-linux-gnu/3.1
/lib
/usr/lib/i586-pc-linux-gnu/3.1
/usr/lib/

存在しない/usr/lib/gcc/i586-pc-linux-gnu/3.1で試そう。

% sudo mkdir -p /usr/lib/gcc/i586-pc-linux-gnu/3.1/foo
% echo '*cpp: -isystem foo%s' >foo.specs
% gcc -specs=foo.specs -v -E hoge.c |& sed -n '/^#i/,/^End/p'    
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i586-pc-linux-gnu/3.1/foo
 /usr/local/include
 /usr/local/lib/gcc-lib/i586-pc-linux-gnu/3.1/include
 /usr/include
End of search list.

やっぱそうみたいだ。

rubyがエラーになるのには変わらないけど、

%{mwin32|mno-cygwin:

%{!mno-win32:

とすればとりあえずいける。 でも、systemがNoMemoryErrorになるので拡張ライブラリがmakeできない。 file.cだけgcc-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!