スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

NativeClientでNPAPIが使えなくなってた

NPAPIを使ったモジュールを書いてみたが動かない。
悩む。
ふとリリースノートを見ると、NPAPIは使えなくしました的な事が書いてあった。
うそーorz
Luaのサンプルも動かない。
あぁ…最初にリリースノートを見たはずなのに意味が分かってなかった。
スポンサーサイト

テーマ : プログラミング | ジャンル : コンピュータ

NativeClientでなんかつくろう

作りたいものがでてきたので、もう一度NativeClientを触ってみる。
前に試したのは期限切れで起動出来なくなっていた。ソースをダウンロードしてビルドする。
で、どうやれば自前のモジュールを作れるのか。 これ↓を参考にして試してみた。
ブラウザで X86 のマシン語を動かす! Google 謹製 Native Client をさっそく試してみる - IT戦記
足し算するのはできた。でもやりたいのは、JavaScriptに自前のオブジェクトを公開することだ。
SRPCにはそれっぽい関数が見当たらない。NPAPIを触る必要があるのか。

テーマ : プログラミング | ジャンル : コンピュータ

Plutoを使ってLuaの状態を永続化(メタテーブル編)

メタテーブルは、何もしなければ勝手に保存されて復元されるようだ。
この挙動を変えたい時はメタテーブルの__persistフィールドを設定する。
  • trueを指定した場合
    普通に永続化されるらしい。userdataはたぶんバイト列として書き出されるんだろう。だが、復元した時にメタテーブルが新たに作られることになるので、環境の一部分だけ保存する時は注意が必要な気がする。
  • falseを指定した場合
    永続化しようとするとエラーになるらしい。
  • 関数を指定した場合
    その関数は引数に、永続化するオブジェクトを受け取る。で、そのオブジェクトを作り直す関数を返す。
  • 指定しなかった場合
    もう書いた。userdataだとエラーになるらしい。
実際に試してみよう。

続きを読む

テーマ : プログラミング | ジャンル : コンピュータ

Plutoを使ってLuaの状態を永続化(コルーチン編)

Lua Programming GemsにPlutoの記事があるみたい。持ってないけど。
さて、次はコルーチンを使ってみよう。 READMEに書いてあるように、coroutine.yieldをpermsに入れておくこと。

require "pluto"
local co = coroutine.create(function()
  print("coroutine 1")
  coroutine.yield()
  print("coroutine 2")
  coroutine.yield()
  print("coroutine 3")
end)
print("main 1")
coroutine.resume(co)
print("main 2")
local perms = {}
perms[coroutine.yield] = "coroutine.yield"
io.open("mycoroutine","wb"):write(pluto.persist(perms,co))

require "pluto"
local perms = {}
perms["coroutine.yield"] = coroutine.yield
local co = pluto.unpersist(perms,io.open("mycoroutine","rb"):read("*a"))
print("main' 1")
coroutine.resume(co)
print("main' 2")
coroutine.resume(co)
print("main' 3")
コルーチンも普通に永続化出来た。

テーマ : プログラミング | ジャンル : コンピュータ

Plutoを使ってLuaの状態を永続化

日本語の情報が皆無な気がするので書いてみる。といっても実際に誰かの役に立つのか疑問なんだが。
http://luaforge.net/projects/pluto/からダウンロードする。Makefileを適当に直してコンパイル・インストールする。Lua 5.1.3用だが、Lua 5.1.4でもそんなに問題はないと思う。
C/Luaのどちらからでも使えるが、ここではLuaから使う。
  1. require "pluto"
    まずライブラリをロードしないと話にならない。
  2. str = pluto.persist(perms,obj)
    objを文字列にして返す。permsで永続化したくないもの・永続化出来ないものを指定するらしい。
  3. obj = pluto.unpersist(perms,str)
    文字列からobjを復元する。permsは上と同じと言いたいところだが、キーと値が逆になってる。
実際に使ってみる。

続きを読む

テーマ : プログラミング | ジャンル : コンピュータ

プロフィール

minoki

Author:minoki
好きなプログラミング言語:
Haskell,Lua
GitHubアカウント
Twitter

最新記事
月別アーカイブ
カテゴリ
検索フォーム
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。