用户操作
[即时聊天] [发私信] [加为好友]
Linker.LinID:linkerlin
18098次访问,排名7132(-8),好友19人,关注者21人。
一个服务器端程序员
喜欢在Linux平台开发。
开发过分布式操作系统和路由器。
看好动态语言在复杂系统中应用。
linkerlin的文章
原创 44 篇
翻译 4 篇
转载 0 篇
评论 19 篇
Linker.Lin的公告
最近评论
linkerlin:tolua++的自动化是很好的.
luabind更加自主可控一些,就是写起来麻烦的多.
对含有'\0'的std::string的处理,tolua++有问题.
fullsail:不错,和tolua++比较,Linker感觉什么更好一点?
linkerlin:@lidelong 效率问题确实存在.如果确实有问题,建议部分使用手动的方式.预先优化是罪恶的根源.
lidelong:还有感谢下Linker的翻译~
lidelong:LUABIND很好,能够让两个语言邦定的工作变得很简单
不过从很多人的反应来看,LUABIND有很严重的效率问题,关于这个问题,Linker怎么看呢?
文章分类
收藏
    相册
    Blog
    精品BLOG
    Bowater
    sodme
    惊帆之静默(RSS)
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    Lua

    原创 LuaBind绑定对象的生命期管理收藏

    注意:千万不要再在Lua里面持有dependency()的第二个参数所指的的Lua对象的引用阅读全文>

    发表于 @ 2009年01月08日 21:46:00|评论(loading...)|收藏

    原创 努力用最佳方法解决问题收藏

    最近用Luabind封装Boost asio相关内容的时候,总是遇到堆错误!
    头痛不已。
    阅读全文>

    发表于 @ 2009年01月05日 01:47:00|评论(loading...)|收藏

    原创 让lua直接加载以CPP方式编译的DLL收藏

    如果不做修改,直接以C++方式编译原来以C语言方式编译的Lua库。导出函数会被修饰成C++风格的函数名,

    比如:
    ?luaopen_luanetobject@@YAHPAUlua_State@@@Z
    原来是 luaopen_luanetobject。
    下面这个函数可以直接解决这个问题。

    function cpprequire(dllname) --dllname without '.dll'
    local dll=dllname..'.dll'
    local functionname='?luaopen_'..dllname..[[@@YAHPAUlua_State@@@Z]]阅读全文>

    发表于 @ 2008年12月31日 00:06:00|评论(loading...)|收藏

    原创 用协程帮助你用最自然的思路编程收藏

    假如,想写一个循环,依次处理2,3,5,7,11....质数位置的table元素。处理函数是:function kaka(index,ele)    print(index,ele)--当然,这里什么也没干end按照文字顺序,我们先写一个循环:for index,ele in generate(table_x) do    kaka(table_x[index])end那个generate()函数的任务就是生产一个元组序列:(2,ele2),(3,ele3),(5,ele5).......这件事可以分两步来做,先写一个函数,yield这个序列,在写一个函数驱动这个协程。function cofunc(table_x)    coroutine.yield(2,table_x[2])    coroutine.yield(3,table_x[3])    coroutine.yield(5,table_x[5])...end驱动函数:function generate(table_x)    阅读全文>

    发表于 @ 2008年12月25日 23:03:00|评论(loading...)|收藏

    原创 [备忘]Lua的local是定义不是声明!收藏

    g='hi~'local g='hello!'for i=1,2 dolocal g=g..'1'print(g)end输出:hello!1hello!1

    阅读全文>

    发表于 @ 2008年12月25日 14:32:00|评论(loading...)|收藏

    原创 用Lua递归修改目录及子目录里文件的扩展名收藏

    用PHP代理下载小说的时候,html扩展名全部被Google的浏览器保存成.php。这个很讨厌。用Lua写个脚本来解决吧。

    require'lfs'
    local sep = "\\"function renamedir(path)local i = 1 -- 这里是upvalue,每个子目录都不一样的哦,都从1开始数for file in lfs.dir(path) doif file ~= "." and file ~= ".." thenlocal f = path..sep..fileprint ("\t=> "..f.." <=")local attr = lfs.attributes (f)--assert (type(attr) == "table")if attr.mode == "directory" thenrenamedir(f)elseif f:find('php') thencmd = [[ren "]]..f..[[" ]]..[["txt]]..i..[[.html"]]i = i + 1print (cmd)os.execu阅读全文>

    发表于 @ 2008年12月03日 00:53:00|评论(loading...)|收藏

    原创 一个有趣的项目收藏

    http://elua.luaforge.net/tut_boot_lua.html阅读全文>

    发表于 @ 2008年07月07日 19:46:00|评论(loading...)|收藏

    原创 一个关于数据库访问方式的设想收藏

    lua阅读全文>

    发表于 @ 2008年06月27日 01:28:00|评论(loading...)|收藏

    原创 LuaBind和Boost 1.35兼容性问题的解决 收藏

    LuaBind和Boost 1.35兼容性问题的解决
    阅读全文>

    发表于 @ 2008年06月09日 14:38:00|评论(loading...)|收藏

    原创 Mercurial--用Python写的分布式版本管理系统收藏

    Mercurial阅读全文>

    发表于 @ 2008年05月14日 00:41:00|评论(loading...)|收藏

    原创 Python的一个小技巧和Lua的Unpack比较收藏

    Python的一个小技巧和Lua的Unpack比较
    - classA(object):
    - defsetline(self,line):
    self.line=line

    - defsetitem(self,a,b):
    printa,b

    - deff(self):
    print(type(self.line[:2]))
    self.setitem(*self.line[:2]) # 这里的*表示把一个list解成两个参数

    a=A()
    a.setline([1,2])
    a.f()
    输出:
    >pythonw -u "t.py"

    1 2

    对应之Lua的用法:
    - f=function(...)
    print(...)
    end

    t={1,2}
    f(unpack(t))

    输出:
    >luai "t.lua"
    1 2 阅读全文>

    发表于 @ 2008年05月12日 11:40:00|评论(loading...)|收藏

    翻译 用Lua进行元编程 收藏

    用Lua进行元编程
    阅读全文>

    发表于 @ 2008年05月11日 22:55:00|评论(loading...)|收藏

    原创 concurrentLua和copas以及luasocket集成的简单示例收藏

    concurrentLua和copas以及luasocket集成的简单示例














    require'concurrent'
    require'cltime'
    require'socket'

    concurrent.setoption('trapexit',true)

    local out=io.write

    port=1888
    nodename='master@linkerhp'

    concurrent.init(nodename)
    out('concurrent node name:'..nodename.."\n")


    --tcpport=socket.tcp()
    --tcpport:bind("*",port)
    --tcpport:settimeout(0)
    require'copas'
    local tcphandlers={}
    local function tcphandler(sock)
    clientip,clientport=sock:getpeername()
    sock=阅读全文>

    发表于 @ 2008年05月06日 12:57:00|评论(loading...)|收藏

    翻译 ConcurrentLua--面向并发的Lua编程收藏

    ConcurrentLua--面向并发的Lua编程 原文地址 Linker 翻译此文只为提供更多信息. 介绍 ConcurrentLua 是一个无共享异步消息传递模型的实现.该模型来自Erlang语言. 她改编了Erlang的并发元素并整合进Lua里. ConcurrentLua的一个核心元素是 process(进程).一个进程是一个轻量级虚拟机 线程,扮演和操作系统的进程同样的角色;他们不共享内存而是使用某这进程间通讯 机制.这些进程能够根据需要被创建和销毁,并通过一个简单的环罗宾(轮训)算法来 调度他们. 每一个进程关联到一个邮箱(临时存储消息的队列),通过邮箱来接受别的进程发来 的消息.进程可以在任何时候检查自己的邮箱有没有新消息抵达,如果有,进程可以 按照抵达的顺序依次读取. 每个进程都有一个唯一的数字作为进程标识,叫 PID(process identifier).也可以 给进程取一个名字,并用名字来指代进程.进程名和进程的对应关系被保存到一个 中心储藏室--registry(注册表).进程可以编辑注册表,添加或者删除表项. 错误捕捉机制也被实现成 阅读全文>

    发表于 @ 2008年04月21日 13:43:00|评论(loading...)|收藏

    翻译 LuaJIT的功能收藏

    LuaJIT的功能 原文地址 Linker 翻译此文只为了提供更多信息. LuaJIT试图保留Lua的精髓--轻量级,高效和可扩展. 功能 所有的函数缺省会被JIT(即时编译器)编译到本地机器码: * 没有被使用的函数不会被编译. * 可以选择性打开和关闭即时编译函数,子函数甚至整个模块. * 需要解析的函数(译注:即没有被编译的函数)和编译过的函数可以自由的混合使用. 预编译(Ahead-of-time AOT)也是被支持的: * 一些API函数和命令行选项允许用户全盘控制编译过程 这个即时编译器是可扩展的: * 优化器是一个外部模块可以附着在编译器流水线上. * 一些模块提供了关于编译过程的跟踪和调试信息. * 所以这些功能可以通过命令行参数来激活. 性能 被编译的机器码是非常高效的: * 先请看一下性能对比测试 * 在任何可以采用的地方采取了侵入性优化措施(特殊化,内联).内联的约定(contracts)在运行时捕获错误的优化预测(未发现的多态). * 自适应去优化被用来重新编译那些破坏了约定的字节码指令.这避免了生成普通的低效率的通用代码(更快速编译,减少指令缓阅读全文>

    发表于 @ 2008年04月19日 11:36:00|评论(loading...)|收藏

    Csdn Blog version 3.1a
    Copyright © Linker.Lin