タグ

2010年9月8日のブックマーク (3件)

  • 文字列への強制変換 - 野良C++erの雑記帳

    Lua では数値と文字列は相互に変換可能です。 http://ideone.com/zvnjL print( math.sin("1.0") ) -- OK print( string.byte(0) ) -- OK. "0" の文字コード(ASCIIの場合 48 ) これは通常、細かいことを気にしなくていいので割と便利なわけですが、 type 関数を使った場合や == で比較する場合などは、思わぬバグの元になったりします。 で、そのような場合に、文字列から数値、数値から文字列への強制型変換があると良いのですが、 文字列から数値への変換は assert( tonumber(x) ) と書けばいいのに対し、 数値から文字列への変換には、ちょうどいい関数がありません。 一応、あらゆる型から文字列への変換をする、 tostring 関数というのはあるのですが、 これは数値以外も文字列に変換する上

    文字列への強制変換 - 野良C++erの雑記帳
    zetamatta
    zetamatta 2010/09/08
    数値にも文字列にも解釈できる値を強制的に文字列扱いするには「x .. ""」のように空文字列を連結してやればよいというお話
  • MozillaThunderbirdについて質問します。 - プロファイルが2つあり、その中のメールデータをひとつにマー... - Yahoo!知恵袋

    方法はいくつかありますが、私はこうやっています。 マージする方(送り出す側)をA マージされる方(今後使う側)をBとします。 まず、AのプロファイルでThunderbirdを起動します。 迷惑メール、ゴミ箱など、なくしてしまって差し支えないフォルダの中身を空にします。 そして受信トレイの中にフォルダを一つ作ります。今回はmergeという名前にしておきます。 margeフォルダの中にマージさせたいメールをすべて入れます。フォルダが入ってもかまいません。 メニューバーの「ツール」から「アカウント設定」を開きます。 「サーバ設定」の項目にある、「メッセージの保存先」を確かめてください。 これがAの実体を指す場所です。何かにコピーして貼り付けてください。 これが終われば一度Thunderbirdを終了します。 次にBのプロファイルでThunderbirdを起動します。 そして受信トレイの中にフォル

    MozillaThunderbirdについて質問します。 - プロファイルが2つあり、その中のメールデータをひとつにマー... - Yahoo!知恵袋
    zetamatta
    zetamatta 2010/09/08
    Thunderbird でメールボックス(プロファイル)のマージを行う時の方法。移行元で、1回全てを一つのフォルダーにまとめてしまうのがポイントらしい
  • コルーチンのスレッドはスタックに積まれる - good enough?

    今日はLuaではまってしまいました。各オブジェクトに1つのコルーチンを割り当て、オブジェクトごとにスクリプトを走らせているのですが、オブジェクトの数が一定以上になるとハングアップしてしまうという現象に悩まされました。止まる箇所が不定なので、てっきりメモリの解放し忘れや二重解放なのかと思ってチェックしてみましたが特に問題なし。もしかしてメモリが足りなくなったのかと調べてみましたが全然余裕がありました。 ふと思うところがあり、lua_newthread()の説明を読んでみたらそこに答えがありました。lua_newthread()は、スレッドを作成したあと、戻り値として作成したスレッドを返すのと一緒に、そのスレッドをスタックに積むそうです。そしてスタックから削除されてから初めて、スレッドはガーベジコレクとの対象となるそうです。スレッドがガーベジコレクとの対象となるということは覚えていたのですが、

    コルーチンのスレッドはスタックに積まれる - good enough?
    zetamatta
    zetamatta 2010/09/08
    lua_newthread() はスレッドを戻り値として返すとともに、スタックに詰むので、そちらをpopしてやらないと、ガベコレの対象にならない:参考>>http://www.usamimi.info/~hellfather/game/lua_delete_coroutine.xml