tolua实现分析
tolua++如何将c++对象导入到lua里tolua++为每一个传入lua的对象建立一个userdata,userdata的值,是c++对象的地址。userdata的metatable,是一个tolua++建立的,记录了userdata对应c++类型信息的表格,包括导出的成员变量、成员函数等信息。
对于成员变量的读取赋值,tolua++是在metatable里新建了.get和.set两个表。两个表里分别存储了以变量名为键,以读取设置c函数为值的表项。在metatable的index和newindex里,以变量名为键,从.get和.set表里取得读取设置函数并调用。
对于成员函数的调用,只需要以函数名为键,函数为值,存储在metatable里就好了。
传入c++对象的tolua++函数是tolua_pushusertype。一般情况下,第一次使用这个函数将一个c++对象push到lua堆栈上时,才会新建userdata。tolua++会以c++对象地址为键,userdata为值,将键值对存储在tolua_ubox表里。下次推入同样的c++对象时,从这个表里取出userdata推入堆栈即 ...
luasocket getaddrinfo nil 问题
使用 luarocks 安装 luasocket,在调用 bind 时,报:
socket.lua:29: attempt to call field ‘getaddrinfo’ (a nil value)
继续执行以下 lua 代码片段:
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
>
> do
>> local socket = require("socket")
>> for k,v in pairs(socket.dns) do
>> print(k,v)
>> end
>> end
gethostname function: 0xc774f0
toip function: 0xc77ea0
tohostname function: 0xc77f00
>
>
发现确实没有加载进来,而 getaddrinfo 是一个标准的 posix 系统调用,所以基本可以确定是安装的问题了。。
于是从 gi ...
Lua特别之处笔记
<a href="/2015/02/02/singleton_pattern/" rel="next" title="单例模式的析构问题和线程安全问题">
<i class="fa fa-chevron-left"></i>
<p class="post-nav-pre-next-title">
单例模式的析构问题和线程安全问题
</p>
</a>
</div>
<span class="post-nav-divider"></span>
<div class="post-nav-prev post-nav-item&quo ...
Vanilla (lua web framework)中文文档 [2018.09.19]
0、前言香草/Vanilla是一个基于Openresty实现的高性能Web应用开发框架.
邮件列表
vanilla-en vanilla-en@googlegroups.com
vanilla-devel vanilla-devel@googlegroups.com
vanilla中文邮件列表 vanilla@googlegroups.com
推荐始终使用最新版的Vanilla
当前Vanilla最新版本0.1.0.rc6,支持命令:
vanilla-0.1.0.rc6(你没看错,自0.1.0.rc5起,vanilla的命令行和框架代码都带着版本号,方便多版本共存,也方便框架升级)
v-console-0.1.0.rc6
特性
提供很多优良组件诸如:bootstrap、 router、 controllers、 models、 views。
强劲的插件体系。
多 Application 部署。
多版本框架共存,支持便捷的框架升级。
一键 nginx 配置、 应用部署。
便捷的服务批量管理。
你只需关注自身业务逻辑。
0.1、安装1$ ./setup-framewor ...
Lua string 哈希碰撞
Lua 中 40 字节以下的字符串会被内部化到一张表中(Lua 5.3),这张表挂在 global state 结构下。对于短字符串,相同的串在同一虚拟机上只会存在一份,这被称为字符串的内部化。
其实字符串在 Lua VM 中是以两种内部形式保存的:短字符串及长字符串。其界限默认设置为40(字节)
对于比较长的字符串(32字节以上),为了加快哈希过程,计算字符串哈希值是跳跃进行的(并没有 hash 全部的位)。
Lua Wiki 上列出了各个版本的 Lua 对于 string 没有计算 hash 的长度:
Hash algorithm analysis
-- number of bytes not used in hash function
==============================================================
String length < 15, 15-20 , 20-32 , 32-64
-------------------------------------------- ...
Lua
读书笔记: Programming in Lua, 4th Edition.
正常函数调用
print(8*9, 9/8)
a = math.sin(3) + math.cos(10)
print(os.date())
-- add the elements of sequence 'a'
function add (a)
local sum = 0
for i = 1, #a do
sum = sum + a[i]
end
return sum
end
if the function has one single argument and that argument is either a literal string or a table constructor,
then the parentheses are optional:
如果函数只有一个参数,并且这个参数是字符串或者是table的话,函数的括号()可以省略。
print "Hello World" <--> p ...
cocos2dx lua 常见错误汇总与解决方案
cocos2dx lua开比较苦恼的是,没办法断点或者直接一步一步调试处理,但是幸好官方有点良心,给了一个打印的调试Log,我们可以使用它调试和查找对应的错误。
这里就记录一些,个人学习和实战中遇到的一些错误和问题的总结
not found view “ApiTest” in search paths “app.views”
ApiTest不在Views里面或者名字写错了,或者没有初始化
attempt to index upvalue ‘HttpSingleton’ (a boolean value)
末尾没有返回HttpSingleton
attempt to index local ‘self’ (a nil value)
参数传错了或者将逗号(.)与冒号(:)搞混了
attempt to call method ‘schedulerScriptFunc’ (a nil value)
方法写错了
attempt to call global ‘getScheduler’ (a nil value)
代码或者语法错误
syntax e ...
The Evaluation of Sentence Similarity
I am trying to write my first english blog based on two reasons: First, the data set used in this blog is english; Second, I’d like to expand my reach and attract more audiences, although I should admit that nobody cares.
DataInitially I want to use chinese corpus, but I cannot find a proper one. The data should sound like this one:
word1 word2 similarity score阿拉伯人 阿拉伯 7.2畜产 农业 5.6垂涎 崇敬 3.4次序 秩序 4.7定心丸 药品 4.3房租 价格 5.2翡翠 宝石 6.7高科技 技术 7.5购入 ...
Mac 上 Sublime Text 3 配置 Lua 环境
1.下载安装
1. 先去Lua官网下载最新版 luaRango-MBP:~ rango$ curl -R -O http://www.lua.org/ftp/lua-5.3.3.tar.gz
2. 然后解压压缩包Rango-MBP:~ rango$ tar zxf lua-5.3.3.tar.gz
3. cd 到解压后的文件夹Rango-MBP:~ rango$ cd lua-5.3.3
4. 然后编译测试Rango-MBP:lua-5.3.3 rango$ make macosx test
正常情况会看到如下信息12src/lua -vLua 5.3.3 Copyright (C) 1994-2016 Lua.org, PUC-Rio`
上面几步总概况1234$ curl -R -O http://www.lua.org/ftp/lua-5.3.3.tar.gz$ tar zxf lua-5.3.3.tar.gz$ cd lua-5.3.3$ make macosx test
5. 安装 lua 需要输入开机密码1Rango-MBP:lua-5.3.3 rango$ sudo m ...
lua学习笔记(四)
Lua数组一维数组123456789101112131415161718192021array={"Lua","Java","C++"}for i=0,2 do print(array[i])end输出结果:nilLuaJava结果分析:Lua索引值以1为起始,也可以指定0开始]]-- 以负数为数组索引值array={}for i=-2,2 do array[i]=i*2endfor i=-2,2 do print(array[i])end
多维数组123456789101112131415-- 初始化数组array={}for i=1,3 do array[i]={} for j=1,3 do array[i][j]=i*j endend-- 访问数组for i=1,3 do for j=1,3 do print(array[i][j]) endend
Lua迭代器一种对象,能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。
在 ...