オンラインNetHackプレーヤーリリース

まだうまく再生できないttyファイルがいっぱいあるのに何やってんだと怒られそうですが、TTYShare 上で NetHack をあそべる機能をつけました。

Play nethack online! - TTYShare

いままで NetHack というものの存在は知っているだけでやったことはなかったんだけど、これを作りながらちょっと覚えはじめてみている。むずかしい><

実装としてはすごく簡単で、Flash 側はほとんど tty プレイヤーと同じ。URL から tty データを読むかわりに、Socket クラスを使って受信するようにして、キーボード入力を送り返すのをつけただけ。

サーバー側は POE。こっちもすごくシンプルで、接続があったら nethack を起動して、あとはその標準入出力をそのままネットの入出力につないてあげる感じで OK。

AS3 かわいいよ AS3。

by typester / at 2007-05-20T10:25:00 / ttyshare / Comment

Class::Accessor::Fast 改

use base qw/Class::Accessor::Fast/;

sub new { shift->SUPER::new( @_ > 1 ? {@_} : $_[0] ); }

っていうだけのモジュールがほしい件。

by typester / at 2007-05-18T15:55:00 / perl / Comment

HHK

最近 pro 買って使ってるんだけど微妙だなぁ。lite2 ほどではないけれども。

とりあえずこの配列は耐え切れないので mayu 追加ってみた。

key *Backspace = *ReverseSolidus
key *ReverseSolidus = *Backspace
key *Esc = *GraveAccent
key *GraveAccent = *Esc
by typester / at 2007-05-18T11:18:00 / life / Comment

Twitterにaddしてみて

向こうもaddしてくれるかどうかで自分のことを知られているか試すメソッド。

by typester / at 2007-05-17T17:29:00 / life / Comment

今日の更新

要望の多い再生スピード変更を仮実装。

1~9 のキーで再生速度が変わります。1で等倍、9で9倍速。

UI はもちょいできてから作ります。

by typester / at 2007-05-10T14:01:00 / ttyshare / Comment

ちょいバージョンアップ

まだまだだけど。ちょっとずつ改良していきます。

今回のアップデートで、nethack はほぼ完璧に再生できるようになりました。

emacs, vim は手ごわい。

by typester / at 2007-05-09T22:17:00 / ttyshare / Comment

テステス

Matrix - TTYShare

とかいうサービス作りました! まだ激しくバギってますが、皆様の罵声を受けつつ徐々に直していく所存です。

by typester / at 2007-05-08T02:18:00 / life / Comment

書き忘れたけどさっきの update_schema.pl

./script/myapp_update_schema.pl dbi:mysql:tablename username password

見たいな感じで DSN を渡す必要がある。めんどう。

ここら辺があれでまだヘルパーにはなってない。

by typester / at 2007-05-07T05:16:00 / perl · dbic / Comment

Schema::Loader 使い方

mizzy.org : Re: DBICとDBIx::Class::Schema::Loader 僕のいろいろな勘違い

僕の中で流行ってる使い方があるのでかぶせて書いておいてみる。mizzy さんの二個目の例を自分ルール化させた感じ?

作業は一般的なCatalystアプリのディレクトリ構造上であるとして、そこに新しく schema というディレクトリを作成。

そんで、

  • schema/lib/Schema/{TableName}.pm

に各テーブルのリレーション定義とかメソッドとかを自分で書く。実際にこのライブラリは Catalyst にロードされない。

上記ファイルを元に Schema::Loadermake_schema_at を使い

  • lib/MyApp/Schema.pm
  • lib/MyApp/Schema/*.pm

にコードを自動生成して、そちらをロードするという感じ。こちらのコードは自分では書き換えない。

コード自動生成は script/myapp_update_schema.pl にこんなのを書いてそれを実行している。

#!/usr/bin/env perl

use strict;
use warnings;

use FindBin;
use File::Spec;
use lib File::Spec->catfile( $FindBin::Bin, qw/.. schema lib/ );

use DBIx::Class::Schema::Loader qw/make_schema_at/;

die unless @ARGV;

make_schema_at(
    'MyApp::Schema',
    {   components     => ['ResultSetManager', 'UTF8Columns'],
        dump_directory => File::Spec->catfile( $FindBin::Bin, '..', 'lib' ),
        dump_overwrite => 1,
        debug => 1,
    },
    \@ARGV,
);

@INCschema/lib をくっつけてから make_schema_at してるだけ。ワンライナーでもできるけど見通しが悪いので。

これで普通の make_schema_at でつくられる Schema ファイルに自分で schema/lib/Schema/ 以下に書いた定義がくっついて出力されるという寸法。

Schema::Loader でダイナミックロードを使っていると各テーブルクラスにはリレーション定義やメソッド拡張のコードだけをかけばいいのでシンプルになって好きなんだけど、そうすると起動時のオーバーヘッドがあるし、ResultSetManagerがつかえなくていやんというときに、これだとまぁイイとこどりのような感じにできる。

実際にいじるファイルは schema/lib 以下のファイルで、それらのファイルを更新するたびに update.pl を実行するというのがあれだけどまぁ自動化できる。してないけど。

難点は、schema/lib 以下のファイルでsyntax errorがあっても何も言われないこと。

何も言われないというか、syntax error があるファイルは

# Loaded external class definition for 'MyApp::Schema::TableName'

ってのが出ないだけという。どこがエラってるのかとかがわからないので、がーーって書いてどこか typo してたりするとはまるかも。

by typester / at 2007-05-07T04:57:00 / perl · dbic / Comment

Collection & Copy - Twircインストール、メモ

おー、使ってくれた人初めてみた。どもども。

twitterのIM機能も今ではすっかり安定していい感じですね。Twirc自体も割と安定していて、僕の環境では2週間くらい放置してますがうまくうごいております。

POEにも慣れてきた感が。

そしてbrazilさんのtwitterアカウントがわからない。

わかった。koyachiさんありがとう。twitterでつぶやけばはやかったのか。
by typester / at 2007-05-05T20:10:00 / twitter / Comment

32 33 34 35 36 37 38 39 40 41

(Page 36 of 203)