Archive@2008/04

svnX入れてみたよ。

GUIなSubversionクライアントを探してたんだけども、 そこで出会った svnX ってのが結構ツボだったよ。

クライアントとしては、ちょっとイマイチだったんだけども、 リポジトリ管理ツールとしては抜群に素敵!! 複数リポジトリの管理も簡単に出来るし、 見た目も直感的で解りやすいと思う :-D

Posted at: 
2008/04/25 18:18:57
0 Comments
1 TrackBack
Tags: 
Svn
Trackback: 
http://humming.via-kitchen.com/2008/04/25/installed-svnx/trackback/

JSFL書いてみたメモ

Flashで作業してると、 同じ作業を何度となく繰り返す場面に出くわすんですが、 どうにかして回避したいなぁ。って思ってたところで JSFL ってものに遭遇。 どうやらJavaScriptで書けるFlashの機能拡張らしい。

で、色々調べながら書いてみたのがコレ。 berianiaocc が以前に話題にしてた、 ライブラリの画像をグラフィックスでラップして、 さらにムービークリップにしてくれるJSFL。完全に 車輪 ですよ!!

/**
 *  ConvertToSymbol.jsfl
 **/
(function ()
{
    //  ファイルが開かれてないとココでおしまい
    if (!fl || !fl.getDocumentDOM()) return alert("ドキュメントオブジェクトが見つかりません。");

    var DOC = fl.getDocumentDOM();
    var LIB = DOC.library;

    LIB.items.filter(function (element)
    {
        //  Bitmapなライブラリ以外はココではじく
        return element.itemType == 'bitmap' ? true : false;
    })
    .filter(function (element)
    {
        var newName = element.name.split(".")[0] + "_g";
        //  既に定義されていれば除く
        if (LIB.itemExists(newName)) return false;
        //  Graphicsを生成
        LIB.addNewItem("graphic", newName);
        //  BitmapをGraphicsでラップする
        LIB.editItem(newName);
        LIB.addItemToDocument({x:0, y:0}, element.name);
        //  ポジションの補正
        var rect = DOC.getSelectionRect();
        DOC.setSelectionBounds({
            left: 0,
            top: 0,
            right: rect.right - rect.left,
            bottom: rect.bottom - rect.top
        });
        DOC.exitEditMode();

        return true;
    })
    .filter(function (element)
    {
        var name = element.name.split(".")[0];
        var gName = name + "_g";
        var mcName = name + "_mc";
        //  既に定義されていれば除く
        if (LIB.itemExists(mcName)) return;
        //  MovieClipを生成
        LIB.addNewItem("movie clip", mcName);
        //  GraphicsをMovieClipでラップする
        LIB.editItem(mcName);
        LIB.addItemToDocument({x:0, y:0}, gName);
        //  ポジションの補正
        var rect = DOC.getSelectionRect();
        DOC.setSelectionBounds({
            left: 0,
            top: 0,
            right: rect.right - rect.left,
            bottom: rect.bottom - rect.top
        });
        DOC.exitEditMode();

        return true;
    });

})();
// vim: filetype=javascript fenc=utf-8 bomb

とりあえず良い感じに出来た(と思う)。 Flashでの作業中に、メンドクサイって3回思ったら JSFL 作るようにしよう :-P

Posted at: 
2008/04/25 00:49:17
4 Comments
0 TrackBacks
Tags: 
Flash
JavaScript
Trackback: 
http://humming.via-kitchen.com/2008/04/25/jsfl-memo/trackback/

家族持ちIT系技術者の交流会やるのかな?

カノエ さんが 面白そうな企画 を目論んでるっぽいよ!!(良い意味で)

関東の家族持ちエンジニアの方は、参加表明してみてはいかがでしょう? 実現すると面白くなると思うんだけどなぁ。

残念ながら自分は参加資格がありません。 :-(

Posted at: 
2008/04/23 16:06:10
1 Comment
0 TrackBacks
Tags: 
memo
Trackback: 
http://humming.via-kitchen.com/2008/04/23/geek-family-summit/trackback/

Pythonでスクリプトからインタプリタを起動する

Google App Engine を弄ってるついでに覚えたメモ。 Python なスクリプトからインタプリタを起動するには、

import code
code.interact()

って、したら良いらしいよ。 IPython がインストールされてるのであれば、

import IPython
IPython.Shell.IPShell().mainloop()

で起動出来るよ。 なので、こんな感じにすると良いのかも。

try:
    import IPython
    IPython.Shell.IPShell().mainloop()
except ImportError:
    import code
    code.interact()

これで IPython がインストールされてれば IPython が使えるし、 されて無ければデフォルトでインタプリタが起動出来るね。

Posted at: 
2008/04/15 02:49:03
0 Comments
1 TrackBack
Tags: 
Python
Trackback: 
http://humming.via-kitchen.com/2008/04/15/execute-interpreter-on-pythonscript/trackback/

jQuery野良プラグイン

jQuery野良プラグイン なんてのを Google Code で作ったよ。

なんか作ったら、どんどこ追加していく予定。 大きいのはメインストリートで開発が進んでると思うので、 ココでは小粒なのを作っていけたら良いと思う。

とりあえず、WindowsのノートPCが手に入ったら、 SWFObjectSWFMacMouseWheeljQuery バージョンは作りたいと思っとります! が、それもいつになるんだか :-P

abde な人や t- 氏に煽られると、 色々と良いものが出来てくるかも知れないね :-)

Posted at: 
2008/04/10 00:36:38
0 Comments
1 TrackBack
Tags: 
JavaScript
jQuery
Trackback: 
http://humming.via-kitchen.com/2008/04/10/jquery-nora-plugins/trackback/

Progressionレクチャーメモ

Progression Framework のレクチャー@ nium さんメモ。

とりあえずな定義として、一般的なコンテンツでの表示パターンは大まかにはこんな感じ。

  1. 常に表示される 例)グローバルナビゲーション等
  2. 特定階層以下で表示される 例)ローカルナビゲーション等
  3. 特定のページのみで表示される 例)各ページの内容
  4. その他、特定の条件下で表示される

4はどう考えても汎用化は無理なので、ココでは無視する。 例えばゲーム的なコンテンツを作るとして、

  • 1は、最初に表示させてそのまま放置すればOK
  • 2は、例えば product ページに行ったら詳しい製品情報が出る感じで それ以下でずっと表示、それより上の階層に戻った場合は消去 という感じなので、n 階層のページ以上・以下で分岐する処理
  • 3は、該当ページに移動してきた場合のみ処理すればOK

で、ココからが本題。2のパターンを実装したい場合、 特定の階層以下でずっと表示、それより上で消去ということは 階層を移動した瞬間が分かれば、そこに処理を書けば自動的に流れがつながるようになる。 Progression のイベントの流れで説明すると、1階層目のシーンから2階層目への移動は、

//  1階層目から2階層目へ移動
onGoto -> onLoad -> onInit

という感じでコールされていく。 コレだけ見ると、 onLoadonInit 同じなんじゃ?いう感じな訳ですが、 これが1階層目から3階層目までダイレクトに飛んだ場合には、

//  1階層目から3階層目へ移動
onGoto -> onLoad -> onLoad -> onInit

となるらしく、なんと2階層目の onInit が実行されません!

で、基本的に onLoadonUnload が、 onInitonGoto がそれぞれ対になっているので、 onLoad で表示したものは onUnload で消去して onInit で表示したものは onGoto で消去すれば破綻なく処理出来るみたい。

上の例で言うと、第3階層から第1階層にダイレクトに移動した場合、

//  3階層目から1階層目へ移動
onGoto -> onUnload -> onUnload -> onInit

というイベントフローになるので、第2階層目の onGoto は実行されない。

ココまでの流れの中で、実はちょっと省略したところがあって、 本当は第1階層から第3階層に行く時には、

//  間にonDEscendなイベントがコールされる
onGoto -> onLoad -> onDescend -> onLoad -> onInit

になるよ。

onDescend の使い道としては、 例えば第2階層以下で表示したい内容を、 第2階層に遷移してきた場合にはエモーショナルなアニメーションで表示して、 2階層目を飛ばしてさらに下にダイレクトに飛んだ場合は省略アニメーションをしたい場合、 onDescend に省略アニメーションを仕込んでおく事で実装出来るよ。

ココらへんは、 nium さんもあまり使わないぐらいの応用編らしく、 とりあえずは「スルーしたよ。」というのも検知できると、 どこからどこに飛んでも確実に、かつドラマティックに画面を再現できるようになるよ!って事らしい。 実際にそれをやる場合には、 onLoad の処理と onDescend の処理が重複しないように、 Progression クラスが持っている destinedSceneId とかで判別してやる必要がある訳ですが、 それでも、個々の画面をほとんど意識しないで実装出来るってのは素敵! onGotoonUnload も同じ感覚で出来ちゃうと思うよ :-)

Posted at: 
2008/04/05 05:15:15
0 Comments
1 TrackBack
Tags: 
ActionScript
Flash
Progression
Trackback: 
http://humming.via-kitchen.com/2008/04/05/progression-lecture-memo/trackback/

SWFMacMouseWheelがバグってるメモ

t-matsuda 氏と AS3.0 MouseWheel on Mac OS X を触る必要があったんだけども、 なぜかwindowsでエラー吐くので調べてみたよ。

エラー内容を見てみると、 どうやら SWFMacMouseWheelregisterObject ってメソッドが無いらしい。 それはさすがにアリエナイだろ。って思ってソースを見てみたら、 swfmacmousewheel_src.js の20行目あたりに、ものっすごいのが書いてあった!

var swfmacmousewheel = function()
{
    if( !swfobject ) return null;

    var u = navigator.userAgent.toLowerCase();
    var p = navigator.platform.toLowerCase();
    var mac = p ? /mac/.test(p) : /mac/.test(u);

    //  この1行がアリエナイ。
    if( !mac ) return null;

    // 処理がつづく...

    //  Macだとここが実行される。
    return {
        /*
        Public API
        */
        registerObject: function(objectIdStr)
        {
            regObjArr[regObjArr.length] = objectIdStr;
        }
    };
}();

この実装はどうなんだ? そりゃ registerObject なんてメソッド無いだろうよ。 windowだと swfmacmousewheel の中身がnullになるよ!

このあと、なんだかんだ修正しまくったんだけども、 とりあえずのやっつけなのであれば、

if ( !mac ) return null;

のところを、

if ( !mac ) return {
    registerObject: function () {}
};

って変えてあげればエラーは消えるよ。 本当にやっつけだけども。 他にも色々と問題があったりなかったりなので、 デフォルトのまま使うのであれば、注意したほうが良いかもね :-P

Posted at: 
2008/04/01 14:31:09
0 Comments
1 TrackBack
Tags: 
Flash
JavaScript
Mac
Trackback: 
http://humming.via-kitchen.com/2008/04/01/swfmacmousewheel-bug-memo/trackback/

Categories

Archives