nginx+lua+ngx_lua_waf实现waf功能
用途:
防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击
防止svn/备份之类文件泄漏
防止ApacheBench之类压力测试工具的攻击
屏蔽常见的扫描黑客工具,扫描器
屏蔽异常的网络请求
屏蔽图片附件类目录php执行权限
防止webshell上传1.下载并解压luajit 2.0.5wget http://luajit.org/download/LuaJIT-2.0.5.tar.gztar -zxvf LuaJIT-2.0.5.tar.gzcd LuaJIT-2.0.5make install PREFIX=/data/luajit(选自己的目录)2.软连接ln -s /usr/local/luajit/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.23.下载并解压ngx_devel_kitwget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gztar -zxvf v0.3.0.tar.gz4.下载并解压lua-nginx-mo ...
延迟加载模式(lazy evaluation)
延迟加载模式(lazy evaluation)代码参考引用自:https://github.com/faif/python-patterns/blob/master/lazy_evaluation.py
代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960# -*- coding: utf-8 -*-"""Lazily-evaluated property pattern in Python.https://en.wikipedia.org/wiki/Lazy_evaluationReferences:bottlehttps://github.com/bottlepy/bottle/blob/cafc15419cbb4a6cb748e6ecdccf92893bb25ce5/bottle.py#L270djangohttps://github.com/django/django/blob/ff ...
Lua 学习 chapter23
目录
弱引用表
记忆函数
对象属性
瞬表
析构器
垃圾收集器
控制垃圾收集的步长
只有疯狂过,你才知道自己究竟能不能成功。
弱引用表
弱引用表是用来告知lua语言一个引用不应该阻止对一个对象回收的机制。所谓弱引用是一种不在垃圾收集器考虑范围内的对象引用。如果一个对象都是所有的引用都是弱引用,那么垃圾回收器就可以回收这个对象,并把所有引用都删除了。
表是由键值对组成,一般情况下垃圾收集器不会回收一个在可访问表中作为值或者键的对象,键和值都是强引用。
在一个弱引用表中,键和值都可以是弱引用。所以这里就存在三种弱引用表,强键弱值,弱键强值以及弱键弱值这三种,不论是那种类型的弱引用表,只要有一个键或值被回收了,那么对应的整个键值对都会被从表中删除。
一个表是否为弱引用表是由原表中的__mode字段决定的,这个字段存在时,其值应该为一个字符串:这个字符串的值为”k”,那么表的键为弱引用,如果是”v”,值为弱应用,”kv”,表示这个表的键和值都是弱引用。
1
2
3
4
5
6
7
8
a = {}
mt = {__mode = ...
如何快速进行lua表的制作
在日常的开发中, 或多或少会遇到将大量的, 需要初始化的数据制作到luatable里面,将花费很多的精力, 还往往由于打错字、打错标点符号浪费了大量的时间.经过一段时间的思考, 决定编写一个工具来配合excel表进行制作这类的大量的重复的数据由于现在项目都是android和ios并行开发, 隧使用python语言进行工具的编写, 下面贴出python代码:(如果缺少xlrd库的话 pip install xlrd)
代码:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311 ...
Lua知识回顾
学习 Lua 编程语言的比较
无聊之余,想要找个东西来打发时间和排解心中的百无聊赖,于是乎,想要重新玩一下 corona 这个游戏开发引擎。当然,第一步就是重温下以前学过的 lua 编程语言,这次我打算在 Windows 操作系统上摆弄下这玩意。
首先进入lua 官网找到二进制文件的下载地址,下载好了之后,解压后先把文件夹里的luax.ext(x 代表版本号)文件修改为lua.exe,然后将该目录添加到 Path 系统变量中,在终端输入lua -v检查是否配置完成。
注意点
调用函数时,被调用的函数一定要在调用者之前定义
变量变量的作用域:
全局变量:除非显式声明为 local,其它所有变量都是全局变量;
本地变量:使用 local 来声明变量
表(table)变量:特殊类型的变量,值不可以为 nil
容易混淆的例子:
local a, b = 1, 2 --该写法正确
local a = 1, b = 2 --该写法错误
数据类型Lua 是动态类型语言,变量没有类型,只有值有类型,下面是数据类型:
nil
boolean
number
string
function
user ...
Evaluation measure of pose estimation
单人检测单人姿态估计的评估标准。
PCKPCK(Percentage of Correct Keypoints)正确关键点的比例。
PCK的思想是,关键点坐标pred与groundtrue之间的归一化距离小于一定阈值时,视为正确估计,以正确估计的关键点的比例作为评估标准。
从定义可以看出,PCk的变量有两个:
如何归一化
阈值是多少
以PCKh为例,PCKh采用头部长度(head segment length)作为归一化参考。
即:对于每个人
计算所有关键点pred与groundtrue之间的欧氏距离pg_length;
计算头部长度head_length;
计算归一化距离norm_length=pg_lenght/head_length;
当这个距离小于规定的阈值时,比如说0.5,则认为估计正确;否则认为错误。
参考代码:stacked hourglass network - pckh.py
Lua实现继承方法和原理
原理 � 查找表元表的三个步骤:
在表中查找,如果找到,返回该元素,找不到则继续
判断该表是否有元表,如果没有元表,返回nil,有元表则继续
判断元表有没有 __index 方法,如果 __index 方法为nil,则返回nil;如果__index 方法是一个表,则重复1、2、3;如果 __index 方法是一个函数,则返回该函数的返回值
lua学习1
类型与值Lua是一种动态语言,没有定义类型的语法,每个值都携带了自身的类型信息。
Lua中有8种基础类型:nil、boolean、number、string、userdata、function、thread、table。函数type可以返回值的类型。
123456print(type("hello")) print(type(1)) --> numberprint(type(print)) --> functionprint(type(true)) --> booleanprint(type(nil)) --> nilprint(type(type(X))
注:最后一行永远返回string。因为type函数总是返回一个字符串。
nilnil是一种类型,它只有一个值nil。
booleanboolean类型有两个可选值:false和true。在Lua中任何值都可以表示一个条件,只有当false和n ...
Read Lua Source CodeRead Lua Source Code
Lua logo
介绍
Lua 应用比较广泛,主要是作为插件解释器。例如mysql proxy,VLC 等。Lua 源代码比较规范,代码也不长,2w 多行,分布也是比较均匀的,就想看一看,顺便在这里做个笔记。
lua 5.2.3 源码树
[will@iF8sg:~DOWN]% tree lua-5.2.3
lua-5.2.3
├── Makefile
├── README
├── doc
│ ├── contents.html
│ ├── logo.gif
│ ├── lua.1
│ ├── lua.css
│ ├── luac.1
│ ├── manual.css
│ ├── manual.html
│ ├── osi-certified-72x60.png
│ └── readme.html
└── src
├── Makefile
├── lapi.c
├── lapi.h
├── lauxlib.c
├── lauxlib.h
├── lbaselib.c
├── lbitlib.c
...
Lua中的协程
Lua中的协程和其他变量一样,都是第一类值(first-class alue),可以被保存在变量中,可以被作为参数传递,可以被函数返回。
协程有4种状态:挂起(suspended),运行(running),死亡(dead)和正常(normal)。
Lua为协程提供了3个基础接口:create,resume和yield。
#coroutine.create
创建一个新的协程,并为它的运行分配一个独立的栈
协程处于挂起状态(suspended)
接受一个函数作为参数,这个函数就是协程的主程序块
返回这个协程
挂起点被设置为主程序块的第一句
#coroutine.resume
启动一个协程(第一次启动或从暂停状态启动)
自身(如果是协程的话)处于正常状态,被启动的协程处于运行状态
第一个参数为所要启动的协程
协程从它的挂起点开始执行
一直执行到被挂起或终止
导致协程终止的情况有两种:它的主程序块正常返回、运行过程中出错
执行结束后,控制权递交给此协程被激活的地方
#coroutine.yield
挂起一个协程
协程处于挂起状态 ...