lua - ljatsh/Test GitHub Wiki
修改历史:
- 2018-06-23:初始版本
- 2018-07-04:添加ldoc
- 2018-07-07:添加luarocks走代理的方法
- 2019-09-28 查找lua死循环
开始用lua来编程已经3、4年了,然而,我给自己对这门语言掌握情况打分是不及格,仅仅限于能够使用,更别提良好的代码风格和通过嵌入lua来保证良好的API设计和灵活的功能扩展。
想想都很汗颜,这么长时间,对于一门语言仅仅是入门水平。以前可能一直以为lua太小,反正都能写东西,所以从来就没有真正重视她的深入研究。加上有过lua实现RPG逻辑碰到性能瓶颈的经历,lua在我眼里一直比较偏门,她的存在更多的是为了热更新。直到3个月以前,开始学习PIL和Lua Wiki才知道lua本身是可以非常巧妙和优雅的。如果时间容许,我很愿意花更多的时间来深入学习。现实的问题是,未来很长一段时间,工作上可能都不太会重度使用lua,我的方向是javascript,期望能够实现前后端基础技术的统一。
前面仅仅限于lua语言层面的肤浅浏览,加上缺少实践机会,导致难以真正掌握lua。后面,我想通过C API的学习来深入研究lua,如果有可能,尽可能加以应用。
- 通过brew来安装很方便,默认5.3,有5.1的选择,但是没有5.2的选择
- PIL的测试例子目前在5.3下跑不过,于是选择源码安装lua5.2
-
make macosx test make install
- 如果要删除,通过
make uninstall
-
-
luarocks类似于pip,是lua的模块管理系统
- 如果通过brew安装lua,一般是配套安装好luarocks的,我的机器上由于是手动安装lua,因此选择手动安装
- 下载v2.4.4, 安装参考luarocks on unix,选择默认安装
-
./configure make install
-
LDoc
- 安装
由于有依赖,因此省心地选择luarocks安装
sudo luarocks install ldoc 1.4.6-2
- 实际在工作机器上通过代理安装ldoc,一直抱怨找不到依赖markdown或者penlight,后面通过先安装markdown和penlight得到解决
- 安装
由于有依赖,因此省心地选择luarocks安装
-
lua手动安装为不带lua动态库的版本,luarocks为何还能安装成功?如何编写lua C扩展?
-
国内通过luarocks安装rocks,访问luarocks受阻
在mac上终端terminal配置代理,参考这里,注意https_proxy配置的协议并不是httpsexport http_proxy=“http://ip[:port]” export https_proxy="http://ip[:port]"
-
aqua项目碰到lua死循环,没有思路的情况下,通过debug.hook写文件找到问题
self._lua_file = io.open(cc.FileUtils:getInstance():getWritablePath() .. 'aqua/lua.tex', 'w') self._infos = {} debug.sethook (coroutine.running(), function(event, line) self._infos[#self._infos + 1] = debug.getinfo(2).short_src .. ":" .. line if #self._infos >= 50 then self._lua_file:write(table.concat(self._infos, '\n')) self._lua_file:write('\n') self._infos = {} end end, "l")
值得注意的是,不能在co里面异步写文件,因为co也会被挂起
- ldoc的深入总结