如何用Lua取得ASCII表中的字符
比如我们要显示ASCII表中的"a",我们可以使用如下代码:
print(string.char(97))
LUA模拟面向对象:类与对象
首先还是向大家介绍一下国产LUA框架Vanilla。
这次我们来看看Vanilla中如何用Lua 模拟面向对象编程。实现主要是使用lua的setemetatable特性来实现的。下面程序大体的处理流程是:
类和对象创建流程:
1.创建一个Controller在类模板程序。
2.在Controller:new方法里,创建返回一个实例对象instance(lua table),对象使用Controller的函数接口,做为对象实例产生的“类”模板。
3.使用new方法的形参,传递新建立对象的属性数据,成员变量。
[code]
local Controller = {}
function Controller:new(app_config, tst_val)
local instance = {
app_config = app_config,
tst_val = tst_val
}
setmetatable(instance, {__index = self})
return instance
end
function Controller:display(view_tpl, values) ...
Moonscript的常用WEB特性
下面是一个简单的moonscript脚本,值得注意的地方有几点。
1.Moonscript如何表示List列比数据结构。
2.Moonscript的路由样式。
3.Moonscript如何取得请求URL中的参数变量值。
4.Moonscript如何遍历List数据结构。(pairs)
5.Moonscript如何显示HTML。
6.Moonscript判空语句。
1.Moonscript如何表示List列比数据结构。
Lua种的Table在Moonscript种,便成了如下的格式。
– Moonscript
[code]
list_items = {
“item1”:“test item1”
“item2”:“test item2”
“item3”:“test item3”
}
[/code]
–Lua
[code]
local list_items = {
[“item1”] = “test item1”,
[“item2”] = “test item2”,
[“item3”] = “test item3”
}
[/code]
值得注意的地方就是,每个表元素之间没有了&quo ...
Lrexlib安装(Lua PCRE)
作者:糖果
Lrexlib是PCRE的Lua调用库。在此说一下 Lrexlib的安装过程。
Ubuntu下安装:
1.首先是安装依赖。
apt-get install libpcre3
apt-get install libpcre3-dev
2.建立连接。
Ubuntu安装的是pcre3,安装完之后系统内才能有libpcre.so的库。
apt-get安装的库文件没有在/usr/lib文件夹下,需要建立连接。
ln -s /lib/x86_64-linux-gnu/libpcre.so.3 /usr/lib/libpcre.so
3.使用luarocks安装PCRE。
sudo luarocks install lrexlib-PCRE PCRE_LIBDIR=/usr/lib/
4.测试库。
lua -e "require 'rex_pcre'"
Centos下安装PCRE:
1.首先是安装依赖。
yum install pcre
yum inst ...
Moonscript的WEB工程配置文件
作者:糖果
http://www.lua.ren
Lapis框架默认是没有配置文件,lapis new 创建出来的工程没有对监听的端口和数据库的相关设置,需要在工程目录下创建一个config.moon或是moon.lua配置文件,进行相关的设定。
首先,看一下如何通过Moonscript设置工程Openresty监听的端口号和数据库配置信息。
config = require("lapis.config")
config "development", ->
port 8080
mysql ->
host "127.0.0.1"
user "moonscript"
password "moonscript"
database "moonscript"
我们来看一下config.moon,被翻译成Lua之后的形态。
local config = require("lapis.config")
return config("development", function()
port(8080)
return mysql(function()
...
Tup与Moonscript自动编译
tup可以监控文件变动的,再执行相应有执行动作。可以设定tupfile规则,当监控目录中的文件发生变化的时候,实时执行编译脚本,只要文件有改动,然后openresty服务会reload文件,刷新一下url就可以看到新的变动结果(LUA)。
安装TUP首先要在Linux上安装FUSE。
第一步:安装FUSE。
yum install fuse
只安装fuse是不够的,还需要安装fuse-devel,在之后的编译需要.h和库文件。
yum list fuse*
yum install fuse-devel
如果是在ubuntu下:
sudo apt-get install libfuse-dev
第二步:下载tup。
git clone https://github.com/gittup/tup.git
./build.sh linux
sudo ./bootstrap.sh
第三步:运行tup。
ln tup /usr/bin
tup init
sudo tup
sudo tup monitor ...
老衲,这代码不能要!
Christ people. This is just sh*t.
The conflict I get is due to stupid new gcc header file crap. But what
makes me upset is that the crap is for completely bogus reasons.
This is the old code in net/ipv6/ip6_output.c:
mtu -= hlen + sizeof(struct frag_hdr);
and this is the new “improved” code that uses fancy stuff that wants
magical built-in compiler support and has silly wrapper functions for
when it doesn’t exist:
[code]
if (overflow_usub(mtu, hlen + sizeof(struct frag_hdr), &mtu) ||
mtu < ...
给Vanilla框架的路由模块加入单体测试
作者:糖果
下面是单体测试的代码:
-- perf
local error = error
local sgmatch = string.gmatch
-- init Simple and set routes
local Simple = {}
function Simple:new(request)
local instance = {
route_name = 'vanilla.v.routes.simple',
request = request
}
setmetatable(instance, {
__index = self,
__tostring = function(self) return self.route_name end
})
return instance
end
function Simple:match()
local uri = self.request.uri
l ...
Moonscript的Busted单体测试
作者:糖果
Busted是Lua的单体测试工具。
去官网Github看一下,也支持Moonscript的单体测试。
moonunit.moon
describe 'moonscript tests', ->
it 'works', ->
assert.are.equal true, true
return
return
return
Describe关键字:描述了一组单元测试。
It关键字: 是对一个Case的描述。
把Moonscript脚本,翻译成Lua脚本。
moonc moonunit.moon
describe('moonscript tests', function()
it('works', function()
assert.are.equal(true, true)
end)
end)
其实,不用有这个翻译过程,因为busted直接可以解析.moon脚本。
因为这个脚本只有一个Case,所有显示结果如下:
busted moonunit.moon
●
1 success / 0 failures / 0 ...
Openresty工程如何处理mime定义问题
Lapis处理mime问题,一共使用了两个文件。
mime.types
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/x-javascript js;
application/atom+xml atom;
application/rss+xml rss;
text/math ...


