lua
Jewe_Wang
这个作者很懒,什么都没留下…
展开
-
lua AES-128-ECB 加密与PHP加密不一致问题
由于aes ecb不需要iv,但是由于aes内置默认方法的问题,不传iv会导致salt被MD5加密,所以iv必须传“”“\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0” 16个0local aes = require "resty.aes" local aes_128_ecb = assert(aes:new(salt, nil, aes.cipher(128, "ecb"), {iv="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"})) loca原创 2021-11-23 17:41:14 · 1282 阅读 · 0 评论 -
lua 三目运算的坑
lua 中如果要想让a and b or c等价于a ? b : c,前提是b表达式必须为真,也就是说b不能等于false或者nil。例如local a = config['env'] == "dev" and false or true这一句无论如何都会返回 true,所以需要改成local a = config['env'] ~= "dev" and true or false问题解决!...原创 2021-07-15 12:43:54 · 149 阅读 · 0 评论 -
OpensResty踩坑数组为空转为json时为什么变成了object
调查发现,cjson库中通过设置encode_empty_table_as_object来得到精确的空table的json类型。但经过多次测试发现cjson设置encode_empty_table_as_object是产生的全局的影响的,你自己新写的项目还好,可以按照这种思路去控制json的encode结果。解决方法和简单,一个语句即可 cjson.encode_empty_table_as_object(false) -- 设置空的table解析为[]...原创 2021-07-12 17:36:24 · 281 阅读 · 0 评论 -
ngx.shared.DICT.incr expecting 3 or 4 arguments, but only seen 5报错解决方案
最近使用了一个lua 自动熔断类,测试的时候发现openresty有一个错误提醒:[error] 13522#13522: *10466335 failed to run log_by_lua*: /htdocs/utils/url_fuse.lua:121: expecting 3 or 4 arguments, but only seen 5stack traceback: [C]: in function 'incr' /htdocs/utils/url_fuse.原创 2021-07-07 09:49:00 · 362 阅读 · 0 评论 -
lua
首先来看最最普通的一个 json 解析的例子(被解析的 json 字符串是错误的,缺少一个双引号):-- http://www.kyne.com.au/~mark/software/lua-cjson.php-- version: 2.1 devellocal json = require("cjson")local str = [[ {"key:"value"} ]]local t = json.decode(str)ngx.say(" --> ", type(t))-转载 2021-04-27 16:36:31 · 897 阅读 · 0 评论 -
lua获取完整请求方案,支持各种content-type
以下代码功能如题-- 获取请求参数-- return tablefunction _M:get_request() local args = nil local request_method = ngx.var.request_method if "GET" == request_method then args = ngx.req.get_uri_args() elseif "POST" == request_method then local headers = ngx.req.g原创 2021-04-27 15:44:02 · 1581 阅读 · 0 评论 -
lua点号与冒号操作符的区别
看下面示例代码:local str = "abcde"print("case 1:", str:sub(1, 2))print("case 2:", str.sub(str, 1, 2))执行结果:case 1: abcase 2: ab冒号操作会带入一个 self 参数,用来代表 自己。而点号操作,只是 内容 的展开。在函数定义时,使用冒号将默认接收一个 self 参数,而使用点号则需要显式传入 self 参数。示例代码:obj = { x = 20 }function obj转载 2021-04-27 16:10:02 · 175 阅读 · 0 评论