WTK全称为Toolkit AnyWhere,是ZLG倾心打造的一套基于C语言开发的GUI框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的GUI引擎,并支持跨平台同步开发,一次编程,终生使用。
AWTK当前升级到了v1.2版本,相对于v1.1,我们完善了许多细节,增加了部分特性、控件以及API等,让AWTK支持更多的功能和更炫酷的效果。
1.2版本更新的内容
细节完善
新增特性
新增控件
新增重要API
在线运行效果: http://zlgawtk.bceapp.com/
AWTK介绍:
AWTK 全称 Toolkit AnyWhere,是 ZLG 开发的开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。
AWTK 寓意有两个方面:
AWTK 源码仓库:
运行效果截图:
二、最终目标:
三、主要特色
1. 跨平台
AWTK 是跨平台的,这有两个方面的意思:
2. 高效
AWTK 通过一系列的手段保证 AWTK 应用程序高效运行:
3. 稳定
AWTK 通过下列方式极力让代码稳定可靠:
4. 强大
5. 易用
6. 高度扩展性
7. 多种开发语言
AWTK 本身是用 C 语言开发的,可以通过 IDL 生成各种脚本语言的绑定。生成的绑定代码不是简单的把 C 语言的 API 映射到脚本语言,而是生成脚本语言原生代码风格的 API。目前支持以下语言 (以后根据需要增加):
8. 国际化
9. 开放源码,免费商用 (LGPL)。
作者: lixianjing
软件下载:「链接」
ginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等。 |
1. 需求分析
1. Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等。
2. 用Nginx+Lua+Redis来做访问限制主要是考虑到高并发环境下快速访问控制的需求。
3. Nginx处理请求的过程一共划分为11个阶段,分别是:
post-read、server-rewrite、find-config、rewrite、post-rewrite、 preaccess、access、post-access、try-files、content、log.
在openresty中,可以找到:
set_by_lua,access_by_lua,content_by_lua,rewrite_by_lua等方法。
那么访问控制应该是,access阶段。
解决方案
按照正常的逻辑思维,我们会想到的访问控制方案如下:
1.检测是否被forbidden?
=》是,forbidden是否到期:是,清除记录,返回200,正常访问;否,返回403;
=》否,返回200,正常访问
2.每次访问,访问用户的访问频率+1处理
3.检测访问频率是否超过限制,超过即添加forbidden记录,返回403
这是简单地方案,还可以添加点枝枝叶叶,访问禁止时间通过算法导入,每次凹曲线增加。
实现方法
首先为nginx添加vhost配置文件,vhost.conf部分内容如下:
lua_package_path "/usr/local/openresty/lualib/?.lua;;";#告诉openresty库地址
lua_package_cpath "/usr/local/openresty/lualib/?.so;;";
error_log /usr/local/openresty/nginx/logs/openresty.debug.log debug;
server {
listen 8080 default;
server_name www.ttlsa.com;
root /www/openresty;
location /login {
default_type 'text/html';
access_by_lua_file "/usr/local/openresty/nginx/lua/access_by_redis.lua";#通过lua来处理访问控制
}
}
Access_by_redis.lua
参考了下v2ex.com的做法,redis存储方案只做简单地string存储就足够了。key分别是:
用户登录记录:user:127.0.0.1:time(unix时间戳)
访问限制:block:127.0.0.1
先连接Redis吧:
local red = redis:new()
function M:redis()
red:set_timeout(1000)
local ok, err = red:connect("127.0.0.1", 6379)
if not ok then
ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
end
end
按照我们的逻辑方案,第二步是,检测是否forbidden,下面我们就检测block:127.0.0.1,如果搜索到数据,检测时间是否过期,未过期返回403,否则直接返回200:
function M:check1()
local time=os.time() --system time
local res, err = red:get("block:"..ngx.var.remote_addr)
if not res then -- redis error
ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) --redis get data error end
if type(res) == "string" then --if red not null then type(red)==string
if tonumber(res) >= tonumber(time) then --check if forbidden expired
ngx.exit(ngx.HTTP_FORBIDDEN)
--ngx.say("forbidden")
end
end
}
接下来会做检测,是否访问频率过高,如果过高,要拉到黑名单的,
实现的方法是,检测user:127.0.0.1:time的值是否超标:
function M:check2()
local time=os.time() --system time
local res, err = red:get("user:"..ngx.var.remote_addr..":"..time)
if not res then -- redis error
ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) --redis get data error
end
if type(res) == "string" then
if tonumber(res) >= 10 then -- attack, 10 times request/s
red:del("block:"..self.ip)
red:set("block:"..self.ip, tonumber(time)+5*60 ) --set block time
ngx.exit(ngx.HTTP_FORBIDDEN)
end
end
end
最后呢,还要记得,把每次访问时间做一个自增长,user:127.0.0.1:time:
function M:add()
local time=os.time() --system time
ok, err = red:incr("user:"..ngx.var.remote_addr..":"..time)
if not ok then
ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) --redis get data error
end
end
那么,测试,强刷几次浏览器,发现过一会,返回了403,ok,搞定。
原文来自:http://www.ttlsa.com/nginx/nginx-lua-redis-access-frequency-limit/
本文地址:https://www.linuxprobe.com/lua-access-control-redis.html编辑:杨鹏飞,审
经编辑:杜宇
11月16日,小米集团董事长雷军在微博宣布,Xiaomi Vela面向全球软硬件开发者正式开源。
小米手机官方微博也宣布了该消息。
根据小米官方网站的介绍,Vela是小米基于开源实时操作系统NuttX打造的物联网嵌入式软件平台,Vela在各种物联网硬件平台上提供统一的软件服务,支持丰富的组件和易用的框架,打通碎片化的物联网应用场景。
图片来源:小米官网
Vela系统主要有以下特点:
高效性能:Vela基于NuttX内核,具有高实时性、低功耗、低延迟等特点,适用于各种资源受限的嵌入式设备。
丰富组件:Vela提供了多种常用的组件,如网络、音频、视频、图形、安全等,方便开发者快速构建应用。
易用框架:Vela提供了一套统一的应用框架,支持Lua、JavaScript等脚本语言开发应用,并提供了丰富的API和文档。
万物互联:Vela支持多种通信协议和标准,如Wi-Fi、BLE、Zigbee、MQTT等,并提供了小米妙享技术,实现设备之间的无缝连接和协同。
小米Vela的开源将为物联网行业带来新的机遇和挑战。对于开发者来说,他们将获得更多选择,可以根据自己的需求和创意进行定制开发。对于行业来说,这将推动物联网技术的快速发展和创新,为智能家居、智能城市等领域带来更多的可能性。
在2023小米IoT生态伙伴大会上,小米正式公布了面向人车家全生态的全新技术品牌“小米澎湃智联”。据悉,小米澎湃智联现已拥有9000+品牌生态伙伴,接入平台设备达到了6.55亿台。
图片来源:小米手机官方微博
每日经济新闻
*请认真填写需求信息,我们会在24小时内与您取得联系。