2006-09-07
■ [vim] Vim Color Scheme Test
vimの色テーマのサンプルを一覧表示してくれるサイト。背景が濃い色のが上の方に、淡い色なのが下の方にまとまっている。 *1 新しい色テーマを探すときにどうぞ。
サンプルファイルはC,HTML,Java,LaTeX,Perlの5種類。(各ページは結構重たいので注意)
使い方
テーマ名をクリックすると色テーマ本体(hoge.vim)がダウンロードできるので、これを~/.vim/colors/以下にコピーする。
あとはgvim上で編集-色テーマ選択を選ぶか、:colorscheme hoge とすればOK。 (参考)
*1 僕は白っぽい背景色の方が好きなんだけど、濃い背景色のテーマの方が圧倒的に多いなぁ
■ [music] project renga extra
久々にダウンロードしたら聞き覚えのないパートが!
2003年10月くらいまで、数回更新されていた模様。
FMPは98の末期にVectorのPACK 13000で見つけて触ってただけなので、持っている曲データはほとんど インターネットで入手したものだったりする。
2006-09-08
■ [ruby][SDL] 5x5フォントをRuby/SDLから使ってみる
shinichiro.hさんの5x5フォントをRuby/SDLから使ってみました。
「e」「y」あたりがちょっと気になるけど、思ったよりちゃんと読めるなぁ。
描画するのに使ったコードは、スクリーンショットに載っている通りです:-) (一応 5x5font.rb に上げておきます。)
■ [ruby][SDL] 4x4フォントをRuby/SDLから使ってみる
次に、上の記事でも紹介されている4x4フォントです。
だいぶ厳しくなってきました(^^; それでも大文字のところはわりと可読性が高いです。
■ [ruby][SDL] 2x4フォントをRuby/SDLから使ってみる
最後に、上の記事でも紹介されている2x4フォントです。
正直これは無理だろと思いましたが…読める!読めるぞ!
色が色なんで実用は無理っぽいですが、ちょっと感動。
■ [ruby][SDL] 3x3フォントをRuby/SDLから使ってみる
おまけ。上の記事の次の日に掲載されている3x3フォントです。
…これはさすがに無理(^^;
まぁ大文字限定で、メニュー画面とか文字列の内容が予測可能なら実用可能……かも。
■ [ruby][SDL] Ruby/SDLで使う極小フォント
というわけで、Ruby/SDLから使いやすいように変換したものを置いておきます。
これを使って異常に情報量の多いゲームとか作るといいよ!
2006-09-09
2006-09-10
■ [games] 変愚:賞金首で貰えるアイテム
変愚の賞金首の報酬について調べてみた。
src/bldg.cより引用。
{TV_POTION, SV_POTION_CURING}, //癒しの薬 {TV_POTION, SV_POTION_SPEED}, //スピードの薬 {TV_POTION, SV_POTION_SPEED}, //スピードの薬 {TV_POTION, SV_POTION_RESISTANCE}, //耐性の薬 {TV_POTION, SV_POTION_ENLIGHTENMENT}, //啓蒙の薬 {TV_POTION, SV_POTION_HEALING}, //体力回復の薬 {TV_POTION, SV_POTION_RESTORE_MANA}, //魔力復活の薬 {TV_SCROLL, SV_SCROLL_STAR_DESTRUCTION}, //*破壊*の巻物 {TV_POTION, SV_POTION_STAR_ENLIGHTENMENT}, //*啓蒙*の薬 {TV_SCROLL, SV_SCROLL_SUMMON_PET}, //ペット召喚の巻物 {TV_SCROLL, SV_SCROLL_GENOCIDE}, //抹殺の巻物 {TV_POTION, SV_POTION_STAR_HEALING}, //*体力回復*の薬 {TV_POTION, SV_POTION_STAR_HEALING}, //*体力回復*の薬 {TV_POTION, SV_POTION_NEW_LIFE}, //新生の薬 {TV_SCROLL, SV_SCROLL_MASS_GENOCIDE}, //周辺抹殺の巻物 {TV_POTION, SV_POTION_LIFE}, //生命の薬 {TV_POTION, SV_POTION_LIFE}, //生命の薬 {TV_POTION, SV_POTION_AUGMENTATION}, //増強の薬 {TV_POTION, SV_POTION_INVULNERABILITY}, //無敵の薬 {TV_SCROLL, SV_SCROLL_ARTIFACT}, //アーティファクト生成の巻物
なんかペット召喚の巻物が浮いてるような気が…
2006-09-12
■ [ruby] www.ruby-lang.org/ja/リニューアル
めっちゃモダンになっとる!(笑)
一つ気になったこと:「はじめよう」の一番上が「Try Ruby!」なんだが、クリックすると英語が ずらずらっと…。Try Ruby自体は非常に面白いコンテンツだと思うんだが、このままだと日本のRuby入門者 にとってとっつきにくい気がする。
Try Rubyの日本語版とかできないかなぁ。
2006-09-18
2006-09-20
■ [event] CodeFest京都2006
去年に引き続き、KMCからも何人か参加する予定です。
まだ参加受付中なので、お近くの方はぜひ。(フリーソフトウェア関係であることと、 18歳以上であること(!)が必要だそうですが。)
■ [softs] svk(3)
英語版のplink.exeを使うようにしたら うまくいきました。(ごった煮版じゃダメなのか?)
plink.exeをsvk/bin/に置いて、
set SVN_SSH="plink.exe" svk mirror //mirror/tobi svn+ssh://yhara@...
という感じ。
■ [softs] svk(4)
参考:
- http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=svk%A4%C7svn+trunk%A4%CE%C4%C9%A4%C3%A4%AB%A4%B1
- http://dkiroku.com/2005-08-24-5.html
- http://blog.bulknews.net/mt/archives/002058.html
set SVN_SSH="plink.exe" svk mirror //mirror/tobi svn+ssh://yhara@...
ソースを実際に取ってくる(今回はHEADのみ取ってきた) svk sync //mirror/tobi --skipto HEAD ローカルブランチを作る svk cp -p //mirror/tobi //tobi コミットログを適当に入力
新しいフォルダを作って、TortoiseSVNから SVN Checkout → file:///D:/home/hogehoge/.svk/local/tobi/trunk
とかやってる間に新しいコミットがあったので、それも取ってくる svk sync //mirror/tobi svk smerge //mirror/tobi //tobi
で、TortoiseSVNでSVN Updateする、と。
2006-09-25
■ [misc] 帰宅しました
せっかくsvkのセットアップができたのに、結局ノートPCを触る暇がなかったという…(笑)。
そのかわり、移動時間を利用して買ったままになっていた「みんなのPython」を読みきりました。
■ [ruby] 例外表示を自分でやってみる
Rubyスクリプトの実行中に例外が発生すると、Rubyインタプリタはエラーの内容を表示して終了します。
例えば
./tobi/tobi.rb:236:in `initialize': undefined method `<<' for nil:NilClass (NoMethodError) from ./tobi/tobi.rb:235:in `initialize' from ./tobi/tobi.rb:419:in `initialize' from ./main.rb:11 from tobi_debug.rb:5
こんな感じに。
以下のようにすると、この例外表示を「自前で」行うことができます。
begin #ここに例外の発生しそうなコードを書く rescue Exception => e bt = e.backtrace puts "#{bt.shift}: #{e.message} (#{e.class})" print bt.map{|s| "\tfrom #{s}"}.join("\n") end
全体をbegin〜rescue〜endで囲み、Exceptionの子クラス(つまり、全ての種類の例外)を変数eに捕捉しています。 eのもつメソッドについてはExceptionを 参照。
実行結果は以下のような感じになります(って、上と同じなんですけど)。
./tobi/tobi.rb:236:in `initialize': undefined method `<<' for nil:NilClass (NoMethodError) from ./tobi/tobi.rb:235:in `initialize' from ./tobi/tobi.rb:419:in `initialize' from ./main.rb:11 from tobi_debug.rb:2
これが何の役に立つのかというと…あんまり使う機会は無さそうな気もしますが(笑)、例えば CGIのテスト中、例外が出るたびにapacheのログを読むのは面倒なので、上のコードを使って エラー画面をブラウザに表示するようにする…というのはありそうな場面です。 またExerbで固めたexeを作るときにこのコードを仕込んでおけば、「例外が出てるんだけど、 DOS窓が一瞬で閉じるんで読めなかった」という罠を回避することができます。 *1。
他には、日本語表示にしてみるとか、
begin #ここに例外の発生しそうなコードを書く rescue Exception => e bt = e.backtrace puts "「#{e.message}」っていう #{e.class} だよ!" puts "場所は #{bt.shift} で、" puts bt.map{|s| "その前は #{s} "}.join("で、\n") + "だよ!" end
「undefined method `<<' for nil:NilClass」っていう NoMethodError だよ! 場所は ./tobi/tobi.rb:236:in `initialize' で、 その前は ./tobi/tobi.rb:235:in `initialize' で、 その前は ./tobi/tobi.rb:419:in `initialize' で、 その前は ./main.rb:11 で、 その前は tobi_debug.rb:2 だよ!
Python風に表示してみるとか。*2
begin #ここに例外の発生しそうなコードを書く rescue Exception => e puts "Traceback (most recent call last):" e.backtrace.reverse.each do |s| if /(.+):(\d+)(:in `(.+)')?/ =~ s puts %< File "#{$1}", line #{$2}, in #{$4 or "?"}> puts " " + File.read($1).to_a.at($2.to_i-1).lstrip else puts s end end puts "#{e.class}: #{e.message}" end
Traceback (most recent call last): File "tobi_debug.rb", line 2, in ? require 'main.rb' File "./main.rb", line 11, in ? Tobi.new(false).run File "./tobi/tobi.rb", line 419, in initialize @map = Map.new(@unit,30,12) File "./tobi/tobi.rb", line 235, in initialize umax.times{|u| File "./tobi/tobi.rb", line 236, in initialize @data << [] NoMethodError: undefined method `<<' for nil:NilClass
「ファイルのn行目を取ってくる」が「File.read(fname).to_a.at(n-1)」で 書けてしまうあたりがLLらしくて良いですね。:-)
さあ、みんなも自分だけのスタックトレースをつくってみよう!(少年誌風)
□ ohai [SVNもSSHコマンドに丸投げしてるはず。]