Monthly Archives: 10月 2013

luaのシングルトン

lua勉強中。

luaってスクリプト毎にメモリ常駐なの? なんなの? どうなってるの?
って位luaを知らないので、とりあえず常駐かつ一つしか保証されないもの=シングルトンが欲しいという事で、
luaでシングルトンを書くにはのメモ。

SINGLETONS IN LUA

うむ。今の俺にはまだちゃんと理解できぬ。
きっと追記有り
↓↓↓↓↓

6時間後追記

こんな感じになりました


Singleton = {}

local _instance = nil

-----------------------------------------------------------------------------
-- メンバ変数初期化
-- @note メンバ変数はここに追加する
--
-----------------------------------------------------------------------------
function Singleton:initialize()
    self._hoge = "hoge"
    self._piyo = "piyo"
 end

function Singleton.getInstance()
    if not _instance then
        _instance = Singleton;
        _instance:initialize()
        setmetatable(_instance, { __index = Singleton })  
    end

    return _instance
end

function Singleton:getHoge()
    return self._hoge
end

function Singleton:getPiyo()
    return self._piyo
end

function Singleton:new()
    print('Singleton cannot be instantiated - use getInstance() instead');
end

return Singleton

参考サイトでは無名関数(?)でgetInstance内にメソッド書く形式だったけど、
外に出したかったんで

setmetatable(_instance, { __index = Singleton })  

で外で定義できるようにしました。

なんか、もう一段階コンストラクタ周りを上手く呼び出せる気がするけど、
今の知識ではこれが限界。

luaの本を読もう、、

ローカルでのhttpのパケットキャプチャコマンド

ネイティブアプリとサーバーのhttp通信でパケットキャプチャをしたい時に、
しょっちゅうコマンドを忘れるのでメモ
lo0なのはローカルでテスト中だから
port8000なのはdjangoのデフォルト値でテスト中

tcpdump -A -s 0 -i lo0 dst or src host localhost and port 8000