2004-08-06 (Fri) [長年日記]
_ Xでの解像度の変更
XでCtrl+Alt+[+]とかで解像度を変更できるけど、仮想画面のサイズ(XF86Config-4のVirtualで設定するやつ)のサイズは変わらないようだ。 これだと、アプリケーションを全画面モードにした時に画面からはみ出して しまうので、あまりうれしくない(プレゼンの時に解像度を切替えたりしたいのだ)。
何とか、Xを再起動せずに仮想画面のサイズを変えられないかなあ。
2004-08-07 (Sat) [長年日記]
_ LLW
5:30に起きたのに10:00の開始時刻に間に合わなかった。 東京は遠い。
自分の発表は何が何だかわからないうちに終わってしまっていた。
会場から「デザインパターンなんか使わずにサクッと短く書くのがLLの醍醐味では」とのツッコミが。 個人的には別にLLじゃなくてもオッケーなんだけどな(generic typeがあればJavaでも耐えられると思う)、と思いつつも、LLWであることを思い出し、その言葉を呑み込む。 結局、「デザインパターンを無理にそのまま使う必要はないけど、そんな感じのコードは自然に出て来るので、コミュニケーションの時にそういうパターンを表す用語があると便利ですよ」というお決まりの返答。 まあ、しばしば(自分もふくめて)用語の使い方が間違ってて誤解があったりもするわけですが。
ちなみに書いたコードはこれ。
<URL:http://svn.shugo.net/src/llw2004/trunk/ls-lR.rb>
$ LANG=C \ls -lR > ls-lR.txt $ ruby /path/to/ls-lR.rb ls-lR.txt
のようにls -lRの出力を食わせると、シェル風の操作ができるというもの。 使えるコマンドはquit/pwd/cd/ls/dfs/bfsの6つ。 dfs/bfsはfind風に深さ優先探索・幅優先探索を行う。
行数はRubyが一番多かった(上のは配布した資料のものに加えて、Readline対応している - 本番でtypoしそうだったので - からさらに長くなっている)。 馬鹿正直にデザインパターンを使ったせいもあるけど(デザインパターンが テーマだったので)、Pythonはendがないから行数が減ってずるいよな、とか思ったり(あ、Pythonもわりと好きです、私は)。
ちなみに、全564行から、class/module/def/end/空行をのぞくと238行だったりする。
_ LLW懇親会
色々な人にはじめて会うことができた。 実ははじめてじゃなかったりすると申し訳ない(でもたぶんおたがいさまだ)ので あえて名前はあげない。
やっぱりMIMEのライブラリは標準でほしいよなあ。
2004-08-08 (Sun) [長年日記]
_ mod_ruby-1.2.1
リリースしました。 sargeに間に合うかな?
_ スターバックスのマフィン
まずかった・・・敗北。
_ Dr Pepper
LLWの会場で麦茶のボタンを押したのに、Dr Pepperが出て来た・・・惨敗。
2004-08-09 (Mon) [長年日記]
_ mod_ruby-1.2.2
Apache2でSEGVが発生するバグがあったので修正してリリース。 まだおかしいとこもあるようだけど...。
_ mod_rewrite
httpd.confの中でmod_rewriteを使う分には何も問題がないのだけど
.htaccessの中で使おうとすると403エラーになってしまう。
[徒然日記より引用]
うーん、手もとでは.htaccessでもmod_rewriteが使えてしまいました。 こんなので試しました。
RewriteEngine on RewriteBase /~shugo RewriteRule foo.txt /home/shugo/public_html/bar.html
ちなみにhttpd.confの設定はDebianのデフォルトのままで
<Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options Indexes SymLinksIfOwnerMatch IncludesNoExec </Directory>
となってます。
あ、ひょっとして
AllowOvverride all
[徒然日記より引用]
このvが一コ多いせいとか。
でもPHPでは動くんですよね。うーん。
うちの動作環境は以下の通りです。
Server: Apache/2.0.50 (Debian GNU/Linux) DAV/2 mod_ruby/1.2.2 Ruby/1.8.2(2004-07-29)
2004-08-11 (Wed) [長年日記]
_ 死んだ
mod_rubyがやっと死んでくれた。
かずひこさんのマシンにアカウントをもらってデバッグをしたのだが、 どうもmomongaのlibpthread.soがstripされてるらしく、gdbが 使えなかった。 *1
というわけで、glibcのビルド。後で考えたら、glibc-debugパッケージの libpthread.aから作れば早かった。 で、追っかけてみると、どうもSIGTERMを二回受け取ってるせいのようだ。
というわけで、以下のパッチで死ぬんじゃないかと思います。
<URL:/tmp/mod_ruby-ruby_child_cleanup.diff>
何でmomongaでしか問題が起きないのかは気になるところだが、スレッドとシグナルの組合せは鬼門なので、あまり深追いしないでおこう。
*1 ちなみに、Debianだとlibpthread.soはstripしてないようだ。
_ Rubyの標準ライブラリを全部インストールする方法
debian-ruby MLでの「Rubyの標準ライブラリをインストールするのにruby-stdlibなんて仮想パッケージがあったらいいんじゃないか」という意見に対する鵜飼さんの回答:
# apt-get install $(grep-available -n -s package -F source -X ruby1.8 | grep lib)
(8/2のメールを今ごろ読んでたり。)
_ IPAフォントのインストーラパッケージ
会社の後輩に「作って」と言って作ってもらったもの。 クレームは彼の日記の方にお願いします:p
2004-08-12 (Thu) [長年日記]
_ sidebar
tDiaryでsidebarを使うようにしてみた。
tDiaryのサイトではabsoluteを使ってるところが多いけど、CLIEで見た時に 表示モードによっては悲しいことになるので、floatを使うことに。 まあ、どうせCLIEではBloglinesで読むんだけど。
_ アンテナとBloglinesの使い分け
そうなると、他のツールで生成されている日記/ウェブログは携帯の画面には出てこないようにしてしまいたいところ。そこで、そういうサイトはBloglinesで見ることにした。これならアンテナ経由で読めないような場合でも、読み落としがないしな。
ただ、RSS feedしてないサイトはそうもいかない。それはもう、あきらめるとして、アンテナの方に特別な「携帯除外フラグ」を立てて、携帯からアクセスしたときだけ非表示にするようにした。
[ただのにっき(2004-08-11)より引用]
わたなべさんに教えてもらったんですが、RSS feedしてないサイトは、 はてなアンテナのメール機能+ BloglinesのEmail Subscriptionで読むようにしました。
ただ、CLIEでもあまり見やすくはないので、携帯だとどうかなあ。
_ tDiaryQuote 0.0.1
選択されたテキストをtDiaryで引用するためのfirefox用extensionを作ってみた。 はじめてにしてはまあまあの出来だと思う(けどすでにどこかにありそう)。
動作環境
- tDiary 2.0.0
- bq.rb
- RD style
使い方
- 設定ダイアログで、update.rbのURLを設定する。
- 引用したいサイトを表示(この時のURLが引用に使われる)。
- 引用したい部分を選択。
- 右クリックのメニューから「tDiaryで引用」をクリック。
- tDiaryの編集画面が別のタブで出るので、後は普通に編集。
ToDo
- 他のスタイルへの対応。
- 引用する時のタイトルをセクションのタイトルにする。
2004-08-13 (Fri) [長年日記]
_ RDF探し
日記の更新情報を見たい人*1のRDFがないことを知った。
アンテナを作るしかないか…
[Kouji TAKAO diaryより引用]
tDiaryだったらtdiary2rssというのがあります。 html2rssというのも あるみたい。
2004-08-14 (Sat) [長年日記]
_ mod_ruby with mod_rewrite解決
Options ExecCGI
...
なーんてしてしまっていた
で、これのせいでOptionsがExecCGIだけで、FollowSymLinks/SymLinksIfOwnerMatchが無効になってしまったらしい
[徒然日記より引用]
うう、すみません、設定のサンプルがあまりよくなかったですね。 修正しときました。
_ おいでな祭
八雲村の祭(おいでな祭という名前らしい)に。
花火が目当てだったのだが、けっこう近くで上がったので、子供は 大泣きだった。 おまけに疲れて寝てしまったものだから、車まで抱っこして歩くハメに。
2004-08-16 (Mon) [長年日記]
_ DSA-537-1 ruby
Andres Salomon noticed a problem in the CGI session management of Ruby, an object-oriented scripting language. CGI::Session's FileStore (and presumably PStore, but not in Debian woody) implementations store session information insecurely. They simply create files, ignoring permission issues. This can lead an attacker who has also shell access to the webserver to take over a session.
[Debian -- Security Information -- DSA-537-1 rubyより引用]
そういえば、前に同じような提案([ruby-dev:11261])をしたけど、 スルーされていたようだ。
2004-08-17 (Tue) [長年日記]
_ Python Decorators
Pythonにはdecoratorというのがあるのか。いいなぁ。Rubyにも欲しいなぁ。例えばsoap4rで、webmethodというattributeを持っているメソッドだけをWeb serviceとして公開するとか使いたい。
上記blogで、symbolを返すというのもいいんだけど、classとのアナロジからは、defにはmethodオブジェクトを返したい。IRCでもそんな話をしていて、とするとunbound methodを? とかややこしそうで話が先へ進まない。
[NaHi Blogpoints - Powered By Bloglinesより引用]
あと、
synchronize \ def f ... end
みたいに二行にする時に\を入れるのがちょっとどうかな、とか。
_ ITmedia エンタープライズ:CVSにまた新たな脆弱性
セキュリティ調査会社iDefenseは8月16日発表したアドバイザリーで、Concurrent Versions System (CVS)にまた新たな脆弱性が見つかったことを明らかにした。
[ITmedia エンタープライズ:CVSにまた新たな脆弱性より引用]
ということだそうです:(
追記:
どうも二カ月前に修正されてたものらしいです。何で今さら。
_ check-update.txt に修正
後輩が書いていたスクリプトにsymlink vulnerabilityが発覚。
かずひこさんに脆弱性を指摘され,前田さんから聞いた tempfile(1) を使って修正しました.
[?日坊主(2004-08-17)より引用]
というわけで、みなさんアップデートを:)
2004-08-18 (Wed) [長年日記]
_ svnの不具合
$svn up
svn: Can't recode string
_ なにがどうなってるのかワカラナイ…orz
[大学生日誌(2004-08-17)より引用]
うちでもSEGVするようになって、デバッグ用にリビルドしたら直ったんですが、
Due to an unfortunate but necessary change to the apache2 packages that changed the ABI of libapr0, your package needs to be rebuilt against the latest apache2 packages.
[Debian Bug report logs - #266191 - mod-ruby needs to be recompiled for apache2 LFS transitionより引用]
これと同じ問題ですかね。
_ tDiaryQuote 0.0.3
設定画面でテンプレートを編集することによって、他のスタイルでも 利用できるように修正。
2004-08-19 (Thu) [長年日記]
_ The Jolt Programming Language
その名も「Jolt」!
ハッカー御用達のカフェイン飲料Joltにちなんで名付けられたらしい。 ドメイン名もwww.jolt-lang.orgと、ちゃんと-lang.orgの伝統(?)にのっとっている。
この言語はC++をリプレースするのを目的とする、静的型のシステム言語なのだが、 文法が(静的型があることを除けば)Rubyそっくり。「end文法」だし。
[Matzにっき(2004-08-18)より引用]
がーん、と思って見てみたら、そんなにRubyそっくりというほどではないようだ。
まつもとさんは、
Rubyの特徴であったブロックもGroovyではなんかハック的な文法*1であったのに対して、 こちらのブロックはきちんとRubyとそっくりのセマンティックスになっている。「do〜end」と「{〜 }」の両方が使えるところまでRubyそっくり。
[Matzにっき(2004-08-18)より引用]
と書かれているが、メソッド定義側の
class Vector is ... proc binop(do op: proc(int32, int32: int32)): int32 is v: int32 := this[0] for i in 1 .. this.size - 1 v := op(v, this[i]) end return v end ... end
というのはちょっとRubyとは違うような。 これってGroovyみたいなセマンティクスじゃないのかなあ。
_ Apache::MethodDispatcher
外国人に、mod_rubyにmod_pythonのpublisherみたいなのはないか、と聞かれて作ってみた。 でも、
if !cls.public_instance_methods(false).include?(method_name) return FORBIDDEN end
というのはどうも今一つ。 やはりDecoratorか。
_ まつもとさんのツッコミ
"do"は"&"の置換であり、静的型言語なのでパラメータや戻り値の
型も指定されている、と読むんじゃないでしょうか。
[Journal InTime - The Jolt Programming Language , Apache::MethodDispatcherより引用]
なるほど、&
の方でしたか。
yield
の方を期待していたのですが、yieldの説明を見て、何か違うな、と。
_ 文法変更
実はbabelの方も文法を変更をしようかな、とか。
- 改行を文のセパレータに。thenも改行でいいかな。
- 引数がないメソッド呼び出しにも括弧を使用 (括弧がない場合はbound methodを返す)。
- x.fooはx.get_foo()、x.foo = yはx.set_foo(y)として扱う (Satherはそれぞれx.foo(), x.foo(y))。
- :=を=に、=を==に、::=は:=に変更。
- case insensitiveに。
- $は廃止。
outパラメータの廃止。代りに多値を導入。
divmod(x: int, y: int): int, int is return x.div(y), x.mod(y) end foo is a, b := divmod(38, 5) end
- 返り値の有無による多重定義の廃止。 返り値があるメソッド呼び出しも文に(dummy変数で受け取る必要なし)。
構文糖としてのfor文の導入。
for i, j in x.elt!, y.elt! do ... end
は、
loop i := x.elt! j := y.elt! end
と同じ。
- 同じく構文糖としてのwhile文。
しかし、迷うなあ、いろいろ。
_ まつもと ["do"は"&"の置換であり、静的型言語なのでパラメータや戻り値の 型も指定されている、と読むんじゃないでしょうか。..]
2004-08-20 (Fri) [長年日記]
_ defined?と改行
defined?と引数の間って改行が入ってもいいんだ。
foo = 1 p defined? foo
出力結果:
"local-variable"
parse.yをながめていて気付いた。
しかし、何のために?
_ Linux体験講座
島根大学の縄手先生の講座に、社長やまつもとさん、かずひこさん、その他大勢(失礼)と参加。 細かいところを(小声で、愛をこめて)つっこんだりしていたが、とても興味深かった。
一般の人向けのRubyによるプログラミング入門的な講座だったのだが、自宅の近所の奥さんが来ていたりして、びっくり。 時代は変わったものだ。
最後に演習の時間があったのだが、講座で説明された機能しか使っては いけないという縛りがあったので、会社のみんなもけっこう苦労していた。 中でも、
Loto6のような1から48までの数を6個作るスクリプトを考えましょう.やはり rand を使います.
ヒントと手順
* ループでくり返し乱数発生させます.
* 作った乱数は配列に順次格納します.
* もし前に出た数と同じものが出ると破棄します.
* 数が6個できあがったら出力します.
[Samplesより引用]
というのが曲者で、「えー、Array#include?も使っちゃだめなのかよ」という声多数。 まあ、Rubyだと思わなければ簡単なんですが。
縛りがないなら解はいろいろありそう。
candidates = (1..48).to_a ary = (1..6).collect { candidates.delete_at(rand(candidates.length)) } p ary
とか、
rand_stream = Object.new def rand_stream.each loop do yield(rand(48) + 1) end end rand_stream.extend(Enumerable) ary = [] 6.times do ary.push(rand_stream.detect { |j| !ary.include?(j) }) end
とか。
まつもとさんはワンライナーでredoを使って書いていたようだ。
_ めんたいこフランスパンとハンバーグとかぼちゃのスープ
というわけで、今夜は洋風のごちそうである。
パンも自家製でなかなかいける。けど、この間の方がもうちょっとおいしかった。同じ材料でも色々なところで違いが出るようだ。
_ まつもと [私のはこんな感じ a=[]; 6.times{n=rand(48)+1; redo if a.include?..]
_ shugo [だいたい想像通りでした。 > しかし、やっぱ使う機能に制限がつくととたんにRuby的じゃなくなりますねえ。 はい..]
_ 咳 [ヒントと違うけど珠玉のプログラミングかプログラミング作法で読んだやつはこんな雰囲気でした。 a=[]; 48.t..]
_ shugo [へー、そんなやり方もあるんですね。 Loto6って順番は関係ないんですね。知らなかった...。]
_ ささだ [puts((1..48).sort_by{rand}[0...6])]
_ shugo [ここから最短競争が始まる予感 でもこれ以上短いのは無理かな? [0,6]にするとかを除くと。]
_ KENN [Loto6は順番に関係なく6つの数字を選ぶだけですが、Numbersは順番が関係するストレートと無関係なボックスの両..]
_ shugo [ふむふむ。おとなしく年末ジャンボにしときます。]
2004-08-22 (Sun) [長年日記]
_ mod-ruby needs to be rebuilt to revert the apache2 ABI transition
The apache2 LFS transition has (sadly) been reverted, due to us spotting a few more bugs than we were willing to deal with in the 8 day time limit we were given. So, what this means is that your package needs to be updated.
[Debian Bug report logs - #267346 - mod-ruby needs to be rebuilt to revert the apache2 ABI transitionより引用]
えー。
2004-08-23 (Mon) [長年日記]
_ .NET Framework 2.0 SDK Beta 1 x86
The Microsoft(R) .NET Framework Software Development Kit (SDK) version 2.0 includes everything developers need to write, build, test, and deploy .NET Framework applications--documentation, samples, and command-line tools and compilers.
[Download details: .NET Framework 2.0 SDK Beta 1 x86より引用]
いつの間にか出ていた。 たぶん、genericsがサポートされていると思うので、要チェックだ (monoと互換性があるといいな)。
2004-08-24 (Tue) [長年日記]
_ X-Ruby-CVS-SHA256Info
commitメールにSHA256を使うように変更。
X-Ruby-CVS-SHA256Info: ruby/ChangeLog, 1.2673.2.453, 0696c873fe9a961d45ff508d961e358cea0325de0ddc03100dba443dd31d62f0
長いよ。
2004-08-25 (Wed) [長年日記]
_ tdiarytimes-flashstyle.rb
日記を登録した時間帯をタイムライン上に記録します。記録されたエントリは日時の経過と共にフェードアウトしていきます。
[trd by phonondrive - tdiarytimes-flashstyle.rbより引用]
今更ながら使ってみた。
_ monoのgenericsとrelfection API
monoでrelfection APIを使って、
class Foo<T> { public static void Bar(T o) { System.Console.WriteLine(o); } } class Test { static void Main () { Foo<int>.Bar(0); } }
のようなコードを生成してみた。
using System; using System.Reflection; using System.Reflection.Emit; public class GenericTypeCreator { public static void Main() { AppDomain domain = AppDomain.CurrentDomain; AssemblyName assemblyName = new AssemblyName(); assemblyName.Name = "test"; AssemblyBuilder assembly = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); ModuleBuilder module = assembly.DefineDynamicModule("test", "test.exe"); TypeBuilder foo = module.DefineType("Foo", TypeAttributes.Public | TypeAttributes.Class, typeof(object)); GenericTypeParameterBuilder[] typeParameters = foo.DefineGenericParameters(new string[] { "T" }); GenericTypeParameterBuilder typeParameter = typeParameters[0]; MethodBuilder bar = foo.DefineMethod("Bar", MethodAttributes.Public | MethodAttributes.Static, null, new Type[] { typeParameter }); ILGenerator barIl = bar.GetILGenerator(); MethodInfo writeLine = typeof(Console).GetMethod("WriteLine", new Type[] { typeof(object) }); barIl.Emit(OpCodes.Ldarg_0); barIl.Emit(OpCodes.Box, typeParameter); barIl.EmitCall(OpCodes.Call, writeLine, null); barIl.Emit(OpCodes.Ret); MethodBuilder main = foo.DefineMethod("Main", MethodAttributes.Public | MethodAttributes.Static, null, Type.EmptyTypes); ILGenerator mainIl = main.GetILGenerator(); Type gt = foo.GetGenericTypeDefinition(); Type intFoo = gt.BindGenericParameters(new Type[] { typeof(int) }); MethodInfo intBar = null; foreach (MethodInfo m in intFoo.GetMethods()) { if (m.Name == "Bar") intBar = m; } mainIl.Emit(OpCodes.Ldc_I4_0); mainIl.EmitCall(OpCodes.Call, intBar, null); mainIl.Emit(OpCodes.Ret); foo.CreateType(); assembly.SetEntryPoint(main, PEFileKinds.ConsoleApplication); assembly.Save("test.exe"); } }
実行結果:
excelsior:gmcstest$ gmcs codegen.cs && ./codegen.exe && ./test.exe ALPHA SOFTWARE: Mono C# Compiler 0.96.0.0 for Generics Compilation succeeded 0
とこう書いてしまうと、簡単なのだが、ちょっとしたことではまって、えらく 時間がかかってしまった。
Type#BindGenericParameters()は、Type#GetGenericTypeDefinition()で 取得したTypeオブジェクトに対して呼び出さなければならない。 ところが、TypeBuilderに対して呼び出していたため、NullReferenceExceptionが 発生していた。 *1
やっぱりエラーメッセージ重要。 *2
_ monoのJITコンパイラが生成したx86コードを読む
monoに-v -v -vというオプションを与えるとディスアセンブルして表示して くれるようだ。
you can disassenble the code
do this:
mono -v -v -v foo.exe > x
[Exploring: What does newobj look like?より引用]
ちなみにILレベルのディスアセンブラはmonodisという別のコマンド。 こちらの方にはよくお世話になっている。
_ babel
おっ。Satherの.NET実装だ。ちょっと期待しちゃうぞー。IteratorとParametrized classを、CLI(.NET2.0)のIteratorとGenericsにいかに統合するかが鍵かな。 あとはCode inclusionがネックか。
[oka326 blogより引用]
おお、はじめてblogで反応が。
しかし、ずっとほったらかしてたので期待させてしまって申し訳ない気もする。 Satherと互換性なくなるかもしれないし。 *1
一番悩ましいのはcode inclusionですね。C#の普通の継承とどう辻褄を 合わせるか。
相互運用性を確保するには何らかの形でC#的な継承を許さないといけない と思うけど、SatherにそのままC#的な継承を追加してしまうのもどうかと。 今のところ、C#のクラスから継承したクラスの子孫のみに普通の継承を許して、それらはSatherのクラスにincludeすることはできないようにする、 くらいしか思いつかない。 あと、ソースがないクラスもincludeできた方がうれしいとは思うけど、 今のところプライオリティは低いですね。
当面の目標はparameterized typeのサポート。
しかし、コンストラクタの問題とか、色々悩みはつきないなあ。
*1 もっともSatherとの互換性なんてあんまり重要じゃなさそうだけど。
_ oka326 [どうも、blog見つけていただいたようです。Satherで書いているかと思いきやC#だったんで意外といえば意外。でも..]
2004-08-27 (Fri) [長年日記]
_ oka326さんのツッコミ
Satherで書いているかと思いきやC#だったんで意外といえば意外。でもその方がいいですね。Code inclusionなんぞいらんので、Satherを断ち切ってどんどんいい言語に仕上げて言ってください。.NETとの親和性の高さに期待してます:-)
ありがとうございます。
C#なのは、単純にその方が実装が楽だったからです(言語じゃなくてライブラリの機能的に、ですが)。
code inclusionにはいいところもあって、たとえば、SAMEがサブクラスに 展開されるのは結構うれしいですね。
とかいいつつ、単一継承 + delegationの言語的なサポートとかにしちゃうかもしれないですけど。
_ parameterized type はじめの一歩
svnのheadで 以下のコードをコンパイルできるようになった。
class VALUE_HOLDER{T} is attr value: T; create(value: T): SAME is res ::= new; res.value := value; return res; end; get: T is return value; end; set(value: T) is self.value := value; end; end; class MAIN is main is x: VALUE_HOLDER{STR} := #VALUE_HOLDER{STR}("foo"); #OUT + x.get + "\n"; x.set("bar"); #OUT + x.get + "\n"; end end
ここからが大変そうだけど。
_ C# 2.0の匿名メソッド
C# 2.0の匿名メソッドって
addButton.Click += delegate { listBox.Items.Add(textBox.Text); };
みたいに書けるんだ (と今更C# 2.0 Specificationを読んで知った)。
てっきり、
addButton.Click += new EventHandler(sender, e) { listBox.Items.Add(textBox.Text); };
としか書けないと思いこんでいた (C# プログラミング言語の将来の機能という文書のせいだ)。
名前を指定しなくていいだけじゃなくて、使わない時はパラメタを省略してもいいらしい。*1
*1 ただし、outパラメタは省略できないし、省略する時は全部省略しないといけないようだ。
2004-08-28 (Sat) [長年日記]
_ ねずみ
ムカデが出なくなったと思ったら今度はねずみかよ。 米の袋を食い破って食べていたようだ。糞もいっぱいあったし:(
猫を飼うとねずみやゴキブリがいなくなるらしいけど、それって 食べてるってことだよね...。 ねずみホイホイや殺鼠剤も後の処置に困りそうだし、やっぱり超音波か。
_ @@@@ [超音波も人によっては聞こえるらしいですしねぃ。 乾物類は缶などに入れるようにして,忌避剤撒いてみたら?]
_ shugo [人体への影響が本当にないかどうかは気になるところですね。 とりあえずホームセンターに行ってみます。]
_ ただただし [猫飼いませんか…?]
_ woods [http://d.neverland.to/toshi/?date=20040827#p08 というような話もありま..]
_ shugo [うう、やっぱり猫ですかねえ。 でも子供が小さいしなあ。]
_ なをぞ [うちも4-5年ほど前クマネズミが出て困ったことがありました。そのときはまずヤツの行動を探るため,夜寝るときに180分..]
_ shugo [うーん、がんばります...。]
2004-08-30 (Mon) [長年日記]
_ ささださん来訪
ささださんが松江に来られて、ヨタ話の後、YARVについていろいろお話 をうかがう。 開発はさくさく進んでいるようだ。 来年の2月ごろにはみなさんのお手元にRiteが届けられるかもしれない。
Ruby2の仕様についてもいろいろ話したが、衝撃の事実が。 まつもとさんいわく、Ruby2では本物の多値を導入してもいいかも、との こと。わーい。つまり、Valuesみたいなのは(少なくともRubyレベルからは) アクセスできなくなる。 ちなみに、
x = 1, 2
の挙動はまだ決まってないらしい。x = 1かエラーかな?
あと、ブロックパラメータによる外側の変数のhideはなくしましょうよ、 と(何度目かわからない)プッシュをしてみたのだが、やはりまつもとさん の考えを変えることはできなかった。
というわけで、一勝一敗。
2004-08-31 (Tue) [長年日記]
_ CLUとLisp
まつもとさんに聞いた話。
Liskovはあるインタビューで、CLUのセマンティクスはLispの影響を受けている、 と答えているらしい。 いったいどこがどうLispなんだろう...。
_ ただただし [じゃあせめて、一度検索したキーワードをメールボックスにして覚えておいてくれるとか。RandomNoteみたいに h..]
_ shugo [なるほど、それは便利そうですね。]