|
![]() |
||||||||||||||||||||||||||||||||||||||||||||
Integer() はリテラルの表現に準拠し、String#to_i は、10 進で解釈するそうです。
str = "0x16" puts Integer(str) puts str.to_iという script で試してみると、
% ruby int.rb 22 0となり Integer() は 16 進数なども解釈してくれるのに対し、
deb http://deb.ruby-lang.org/debian woody main contrib non-free deb-src http://deb.ruby-lang.org/debian woody main contrib non-free deb http://deb.ruby-lang.org/debian project/experimental/ deb-src http://deb.ruby-lang.org/debian project/experimental/を apt-line に加えるとよい。
[2000-03-23 12:17:50]: user mismatch (nobody instead of www-data)(suexec.log) のように suexec に失敗したあげく、
[Tue Apr 3 12:17:50 2001] [error] [client 192.168.0.31] Premature end of script headers: /home/Sub-Member/katsuwo/public_html/diary/index.cgi*1 (error.log) みたいなことになるらしい。
cd /usr/lib/apache mv suexec suexec.orig /etc/init.d/apache restart(参考情報:[debian-users 21871 ])
ScriptLog /var/log/apache/script.log # 10 MB ScriptLogLength 10485760とかすると ScriptLog で指定した file に debug に便利そうな情報が入ってきます。
chmod 000 ~/.ppxp/conf/libacとかしておく。これでどうやっても dialup だけはしないはず。
apt-get install xcdroastしても cdrecord は入らなかったのだが。
Depends: gdk-imlib1 (>= 1.9.8.1-1), imlib1 (>= 1.9.8.1-1), libc6 (>= 2.1.97), libglib1.2 (>= 1.2.0), libgtk1.2 (>= 1.2.8-1), libjpeg62, libpng2, libtiff3g, libu ngif3g (>= 3.0-2) | giflib3g (>= 3.0-5.2), xlibs (>= 4.0.1-1), zlib1g (>= 1:1.1.3), makedev (>= 2.3-4), cdrecord (>=1:1.6a14-1), mkisofs, cdda2wavとかなってるのに。
while todostack.isempty? todo = todostack.pop todo.finish endがむばらねば。
todo = nil begin timeout(24 * 60 * 60) # 24h while todostack.isempty? todo = todostack.pop todo.finish end end rescue # timeouted ... stack todo processing. todostack.push(todo) end raise Exception.new('TODO could not end ...') if(not todostack.isempty?)うぅむ、そんな Exception は catch したくないぞ(;_;)
createdb hoge -E EUC_JPいまのところ、適当に文字を入れているが問題がないようだ:)
ORA-01012: Not logged inという error message がでます。
http://clyan.hongnet.com/guide/oracle/install8i_howto/oracle-doc/oracle8i-faq.html#Not logged in NLS_LANG*1 というところにもお世話になりました:)
${ORACLE_BASE}/admin/${ORACLE_SID}/pfile/init${ORACLE_SID}.oraで database についての設定ができるらしい。
人気者の条件って知ってる?短編集を友達から借りてきました:)
その場で本音を言わないことよ
(日本橋ヨヲコ短編集 BASHIZM より)
File::chmod(0600, filename)とかして使うみたい。
(1..10).each do |i| puts i endとして Range object を生成して Range#each を呼んでいましたが、
10.times do |i| puts i endの方が smart に書けてよいかもしれません。
% ruby -e '(1..3).each{|i| puts i}' 1 2 3 % ruby -e '3.times{|i| puts i}' 0 1 2と、block にわたる引数が違うので要注意です。
src:*:40:katsuwo gnats:*:41: shadow:*:42: utmp:!:43:telnetd video:*:44: staff:*:50:katsuwo(/etc/group の一部)
% groups katsuwo disk dialout src staffこれは私の自宅で実行した結果です。
Syntax error on line 222 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/libexec/mod_ruby.so into server: ld.so.1: /usr/local/apache/bin/httpd: fatal: relocation error: file /usr/local/apache/libexec/mod_ruby.so: symbol ruby_init_loadpath: referenced symbol not found /etc/init.d/apache start: httpd could not be started*1 なんて error を吐いて動かなかった(;_;)
setenv PATH /usr/ccs/bin:${PATH}として ok だと思って満足してましたよ。とほほ。
/dev/hda8 6.4G 5.8G 668M 90% /home/musicだけど、root partition とか 2.5G もあまってるんだよなぁ。
/dev/hda8 on /home/music type reiserfs (rw)というのをすっかり忘れてた(^^;
const char string[] = "hogehoge"; printf("%s\n", string); printf("%.4s\n", string);とか書きます。これを動かしてみると
hogehoge hogeと出力されます。
*の動作を理解することとか書いてある。どこにも書いてないのにどうやって理解しろっていうんだ。
(... rescue ...)なんて書き方があったんですね。
% ruby -e 'a = (true rescue nil); p a' true % ruby -e 'a = (false rescue nil); p a' false % ruby -e 'a = (raise rescue nil); p a' nilちょっと確かめてみたらこんな感じ。
VCEとは、"Virtual Community Engine" の略で、サーバー集中型の ネットワークゲームや、 コミュニケーションツールを作るための基礎となる、 通信ライブラリです。試用版がユーザ登録のみで落とせるらしい。
ホームページの アクセシビリティー をチェックするツールだそうだ。htmllint ついでにこっちもやっておくと良いのかも:)
$port = 9801 # いま port:9801 に設定されてるの。人によっては 11000 ? host = `hostname` msg = "SEND SSTP/1.1\r\n" + "Sender: Notifier#{host == '' ? nil : '@' + host}\r\n" + "Script: \\h\\8[Chimes.wav]hello!\r\n" + "\r\n" socket = TCPSocket.new(client, $port) socket.write(msg) socket.closeとかいう適当な script で動くみたい:)
sakura = SAKURA.new(client, $port) sakura.set_sender = "Notifier#{`hostname` == '' ? nil : '@' + `hostname`}" sakura.message("\\h\\8[Chimes.wav]hello!")でできるのはよさげ:)
stringobject = 'create new string object' proc = Proc.new{puts 'welcome to finalizer!'} ObjectSpace::define_finalizer(stringobject, proc)ちょっと面倒だけど。
ruby -rsstp -e "SAKURA.new('192.168.0.71', 9801).message('hoge')"という tiny code でもだめみたい。
/usr/share/games/fortunes/fortunes.dat: Too many open filesとかいわれるのだ。
Apr 21 22:12:41 [3724] CP : LCP: Send-Protocol-Reject id=1 Apr 21 22:12:41 [3724] CP : LCPなんていうログが大量に出てる。LCP で reject されてる…??
Apr 22 00:16:32 [899] OS : received SIGHUP Apr 22 00:16:32 [899] PHASE: Network =DOWN=> Terminate何らかの原因で sighup を受けているが見える。
# apt-get -d -y upgrade Reading Package Lists... Done Building Dependency Tree... Done The following packages have been kept back communicator debian-policy libssl0.9.6 netscape tetex-bin 32 packages upgraded, 0 newly installed, 0 to remove and 5 not upgraded. Need to get 24.5MB of archives. After unpacking 8241kB will be used. Failed to exec method /usr/lib/apt/methods/http Failed to exec method /usr/lib/apt/methods/ftp E: Method http has died unexpectedly! E: Method /usr/lib/apt/methods/http did not start correctly E: Method ftp has died unexpectedly! E: Method /usr/lib/apt/methods/ftp did not start correctly E: Tried to dequeue a fetching object E: Tried to dequeue a fetching object E: Tried to dequeue a fetching objectこんな message が出てしまいますし。
Failed to exec method /usr/lib/apt/methods/http Failed to exec method /usr/lib/apt/methods/ftpあたりなわけで、wget は普通に使える(確認した)からそっちを使えばよかったんだ。
もしもしかめよ かめさんよ せかいのうちで おまえほど あゆみののろい ものはない どうしてそんなに のろいのか なんとおっしゃる うさぎさん それならおまえと かけくらべ むこうのおやまの ふもとまで どちらがさきに かけつくか (うさぎとかめ:石原和三郎 詞, 納所弁次郎 曲)こういう歌詞らしい。さすがに 2 番はわからないです(;_;
obj = Object.new ObjectSpace::define_finalizer(obj){|oid| puts oid}ので、これを利用して
class call_finalizer = Proc.new{|oid| ObjectSpace::_id2ref(oid).finalize} class Foo def initialize ObjectSpace::define_finalizer(self, finalizer) end def finalize puts 'finalize' end endのように MyObject#finalize を作ろうと思っていたのだけど、
lock = Lockfile::lock # running routine ... lock.unlockとして、普通に使うもよし、
Lockfile::lock{ # running routine ... }のように、block を実行するときにも使える:)
foo{ puts 'bar' }のように block 付きの method を定義するときは yield を使う *1 。
def foo yield endyield は与えられた block を解釈し、実行するようだ。
def foo if(iterator?) yield else raise ArgumentError end end
def foo yield 'bar' end foo{|x| puts x}
#!/usr/bin/rubyではなくて、
#!/usr/bin/env rubyを使うようにしている。
% pom The Moon is Waxing Crescent (19% of Full)これってどこで地域設定してるんだろ?? LANG じゃ無いみたいだけど…。
trap("SIGINT") do puts 'recv sigint' exit endとして signal の種類と処理すべき block を渡してあげるだけです。
def daemon catch(:RUN_DAEMON) do unless (fork) then Process::setsid unless (fork) then Dir::chdir("/") File::umask(0) STDIN.close STDOUT.close STDERR.close throw :RUN_DAEMON end end exit! end endという method がかかれていた *2 のでこれを利用して、
def run(pwd) while(true) sleep 1 f = open(pwd + '/datetime', 'w') f.printf "%s\n", Time.new f.close end end def daemon catch(:RUN_DAEMON) do unless (fork) then Process::setsid unless (fork) then pwd = `pwd`.chop Dir::chdir("/") File::umask(0) STDIN.close STDOUT.close STDERR.close $0 = Dir::strip(__FILE__) run(pwd) throw :RUN_DAEMON end end exit! end end trap("SIGTERM") do $lockfile.unlock exit end begin $lockfile = Lockfile::lock('daemon.lock') daemon() rescue Lockfile::LockFailedError processname = Dir::strip(__FILE__) printf processname + " is already running. exited.\n" endのように適当に sample script を作ってみました。
def Dir::strip(path) path.split('/')[-1] endと言う風になってます。
def Dir::expand(path) fullpath = nil if(path =~ /^\.\.?\// || path !~ /\//) fullpath = Dir::pwd + '/' + path else fullpath = path.clone end fullpath.gsub!(/\/\.\//, '/') fullpath.gsub!(/[^\/]+\/\.\.\//, '') fullpath endこっちは相対 path から絶対 path を求めるやつ。
/usr/bin/env rubyって記述は
% uname -a ; ruby -v Linux terra 2.2.13 #8 SMP Mon Dec 6 17:45:21 JST 1999 i686 unknown ruby 1.6.2 (2001-02-08) [i386-linux] % env ruby -Ks -e 'puts $KCODE' SJIS % env ruby -Ke -e 'puts $KCODE' EUC
% uname -a; ruby -v SunOS oracle 5.7 Generic_106541-08 sun4u sparc SUNW,Ultra-1 ruby 1.6.1 (2000-09-27) [sparc-solaris2.7] % env ruby -Ks -e 'puts $KCODE' SJIS % env ruby -Ke -e 'puts $KCODE' EUCもしかして誤解してます??