OS X で画面録画(VNC2SWF)

にぽたんが10分で作る Sledge アプリで Windows 上で Wink を使ってたのですが、使い慣れた OS X だったらもっと速いはずと思って OS X で画面を録画する環境を作ってみました。

OS X での録画はVNC2SWF というツールで録画出来ます。
VNC サーバとしゃべって、SWF にしてくれてるみたいです。

* 以下、手順のメモ

まずは、OS X が VNC サーバとして動く事が必要なので、OSXvnc をインストールします。
http://www.redstonesoftware.com/vnc.htmlからダウンロードして /Applications にコピーするだけで OK です。
VNC2SWF には Python 版と C 版があるようなのですが、今回は Python 版を使いました。Pygame というライブラリ必要らしいのでhttp://pythonmac.org/packages/からダウンロードして以下の二つをパッケージからインストールしました。
pyobjc-1.3.6-py2.4-macosx10.3.zip
pygame-1.7.0-py2.4-macosx10.3.zip
後は OSXvnc を起動してダウンロードした pyvnc2swf に含まれる vnc2swf.py を起動すれば録画が行えます。
簡単な GUI が立ちあがるので保存ファイルを指定してStart ボタンを押すと録画が始まります。
パッケージのインストールと Python スクリプトなので結構簡単に OS X でも録画出来る環境が整いました。

試しに録画してみたのはここです。
10分で作るに挑戦してみようと思いましたが、typo しまくりで恥ずかしくなったのでヤメ。。

Yellow Fade Technique

最近、よく見かけるので prototype.js 使って実装してみる。
fat.js ってもっと便利なやつもあるけど、単純にやってる事がよく分かるように実装してみたつもり。

エフェクトをかけたい要素の id を指定して、
<script type="text/javascript">
new Fade('id');
</script>
みたいな感じで使う。
var Fade = Class.create();
Fade.Colors = ['#ffff99', '#ffffaa', '#ffffbb', '#ffffcc', '#ffffdd', '#ffffee', '#ffffff',];

Fade.prototype = {
    initialize: function(element) {
        this.element = $(element);
        this.idx = 0;
        setTimeout(this.doFade.bind(this), 300);
    },
    doFade: function() {
        if(this.idx == Fade.Colors.length) 
            this.element.style.backgroundColor = 'transparent';
        if(this.idx < Fade.Colors.length) {
            this.element.style.backgroundColor = Fade.Colors[this.idx];
            this.idx++;
            setTimeout(this.doFade.bind(this), 300);
        }
    }
};
動いてるデモはこのへん

ひさびさにスロ

奥さんが友達と美術館にいくとかで暇だったので、久しぶりにスロでもやってみるかと、駅前のパチ屋にいってみる。
つか、久しぶりすぎて最近の機種がよう分からんけど、スト2が空いてたのでやってみる。
4K で BIG ひいてその後ダラダラと2回BIGひく、しばらくまわしたところでダルくなってやめ。
結局 BIG 1回半分位あって10Kちょいプラス。
交換率も知らずにやってたけど、等価だったぽ。

でも、最近の台はリプレイはずしのやり方とか書いてあって楽になってた。
あと、出玉多くて、ギャンブル性高くなってますね。
自分がやってた頃はがんばって400枚とかだったのに。。

そういえば、そろそろ5号機らしいですねー。4号機で無茶しすぎたから厳しくなんのかな。。

そういえば Validation

フレームワークとか O/R マッパーとか使って Web アプリを作ると全体の作業にしめるValidation の割合が相対的に多くなりがちで、どうにか楽出来ないかと考えています。~

で、Data::FormValidatorとかFormValidator::Simpleとかの Validation 条件を定義するタイプのやつもいいかなと思いつつ、中々手が出ません。

というのも、エラー文言の表示や「○○がある場合のみ××が存在しないといけない」みたいな条件がうまく定義出来るのかが心配で。

で、最近は以下のようにしています。

^# $self->r is-a Apache::Request

^my $validator = Project::Validator->new($self->r);

^$validator->not_null('name');

^$validator->not_null('email') && $validator->email('email');

^

^if($validator->has_error) {

^ return FAIL, $validator->errors;

^}

以下のように Validation するメソッドを定義して True or False を返しています。

また、内部にエラーを表現するオブジェクトを保持しています。

^sub not_null {

^ my($self, $key, $error) = @_;

^ $error ||= "error.$key.required";

^ unless (length($self->param($key))){

^ $self->errors->add($error);

^ return FAIL;

^ }

^ return SUCCESS;

^}

errors はエラーをキーと文言で管理するオブジェクトです。Tie::IxHash を利用した順番を保持するハッシュです。

また、エラー文言は Data::Properties を利用して外部ファイルに記述しています。

外部ファイル化してるのはうちの場合エラー文言はエンジニア以外に書いてもらう事も多いので出来るだけ単純な Syntax にしたいという狙いがあります。

^error.name.required = 名前を入力してください。

^error.email.required = メールアドレスを入力してください。

^error.email.invalid = メールアドレスの形式を確認してください。

テンプレートでは以下のようにしてエラー文言を表示しています。

^[% IF errors.size -%]

^以下の項目について確認してください。

^

^[% FOREACH k = errors.keys -%]

^ - [% errors.get(k) %]

^[%- END %]

^[%- END %]

うーん、柔軟性はあるのですが、もっと楽出来るような気がしています。

参考URL:

CatalystでSledge風Validation

フォームの入力を確認するData::FormValidatorとFormValidator::Simple

Sledge ドキュメントが公開されとる。

Sledge ドキュメントが公開されましたね。GJ!

しかし、10分で作る Sledge アプリケーションはタイピングの速度勝負なとこあるなー

それはともかく、もうちょっと Sledge は制約を明文化してもいいかも。~

例えば、にぽたんが view, etc, misc, lib とか迷いなく作ってるけど、これは社内ルールでそうなってるだけで Sledge が要求してるわけではない。~

これらを Helper がキメウチで作ってやるだけでも何やったらいいか分からない感はかなり無くなるような気がした。~

で、Sledge に足したい機能を考えて、以下位あればいいのかなと思た。

  • Helper スクリプトによる便利な雛形の作成
  • Validation フェーズの実装
  • テストが容易になるような HTTP サーバ
  • FastCGI, mod_perl2 の公式な対応

どんなもんでしょ。

Hook とかの基本的な仕組みはよく出来てると思うのでそのままでいいかなーと。

ちなみに社内では Helper スクリプトという程綺麗じゃないけど上記のおきまりのディレクトリを堀って、認証とか Validation まわりのコードとかまで自動で作るスクリプトを使ってます。~

汎用性無さ杉なので、どうにかしてから公開ですかね。。。

Profile
  • ライブドアブログ