整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          AWTK 1.2 發布,國產開源 GUI 引擎

          WTK全稱為Toolkit AnyWhere,是ZLG傾心打造的一套基于C語言開發的GUI框架。旨在為用戶提供一個功能強大、高效可靠、簡單易用、可輕松做出炫酷效果的GUI引擎,并支持跨平臺同步開發,一次編程,終生使用。

          AWTK當前升級到了v1.2版本,相對于v1.1,我們完善了許多細節,增加了部分特性、控件以及API等,讓AWTK支持更多的功能和更炫酷的效果。

          1.2版本更新的內容

          細節完善

          • 輸入法候選字支持滾動;
          • slider支持上下左右鍵;
          • guage pointer支持錨點;
          • slide view indicator作為獨立控件;
          • 完善idl gen工具;
          • 完善doc gen工具;
          • 支持用focusable屬性設置控件焦點;
          • 去掉TK_DEFAULT_FONT宏定義;
          • 增加style border_width;
          • 支持動態修改屏保時間;
          • SDL FB模式啟用臟矩形;
          • 新增內存耗盡處理;
          • ...

          新增特性

          • cairo實現的vgcanvas;
          • 支持32位Windows編譯;
          • 增加條件變量tk_cond_var;
          • 支持用tab鍵切換控件的焦點;
          • 支持在不同位置彈出完整窗口動畫;
          • svg/gif支持從文件系統中加載圖片;
          • 增加widget_gen腳本生成自定義控件;
          • 增加self_layouter_menu實現彈出菜單;
          • 增加lcd_mem_special;
          • style增加margin參數。

          新增控件

          • mledit多行編輯器;
          • overlay overlay窗口;
          • hscroll_label可水平滾動的文本。

          新增重要API

          • timer_modify
          • widget_add_idle
          • widget_find_animator

          在線運行效果: http://zlgawtk.bceapp.com/

          AWTK介紹:

          AWTK 全稱 Toolkit AnyWhere,是 ZLG 開發的開源 GUI 引擎,旨在為嵌入式系統、WEB、各種小程序、手機和 PC 打造的通用 GUI 引擎,為用戶提供一個功能強大、高效可靠、簡單易用、可輕松做出炫酷效果的 GUI 引擎。

          AWTK 寓意有兩個方面:

          • Toolkit AnyWhere。
          • ZLG 物聯網操作系統 AWorks 內置 GUI。

          AWTK 源碼倉庫:

          • 主源碼倉庫:https://github.com/zlgopen/awtk
          • 鏡像源碼倉庫:https://gitee.com/zlgopen/awtk

          運行效果截圖:

          二、最終目標:

          • 支持開發嵌入式應用程序。
          • 支持開發 Linux 應用程序。
          • 支持開發 MacOS 應用程序。
          • 支持開發 Windows 應用程序。
          • 支持開發 Web APP。
          • 支持開發微信小程序。
          • 支持開發支付寶小程序。
          • 支持開發百度小程序。
          • 支持開發 Android 應用程序。
          • 支持開發 iOS 應用程序。
          • 支持開發 2D 小游戲。

          三、主要特色

          1. 跨平臺

          AWTK 是跨平臺的,這有兩個方面的意思:

          • AWTK 本身是跨平臺的。目前支持的平臺有 ZLG AWorks、Windows、Linux、MacOS、嵌入式 Linux 和嵌入式裸系統,可以輕松的移植到各種 RTOS 上。AWTK 以后也可以運行在瀏覽器 (即將公測)、各種小程序、Android 和 iOS 等平臺上運行。
          • AWTK 同時還提供了一套跨平臺的基礎工具庫。其中包括鏈表、數組、字符串 (UTF8 和 widechar),事件發射器、值、對象、文件系統、互斥鎖和線程、表達式和字符串解析等等,讓你用 AWTK 開發的應用程序可以真正跨平臺運行。

          2. 高效

          AWTK 通過一系列的手段保證 AWTK 應用程序高效運行:

          • 通過臟矩算法只更新變化的部分。
          • 支持 3 FrameBuffer 讓界面以最高幀率運行 (可選)。
          • UI 描述文件和主題文件使用高效的二進制格式,解析在瞬間完成。
          • 支持各種 GPU 加速接口。如 OpenGL、DirectX、Vulkan 和 Metal 等。
          • 支持嵌入式平臺的各種 2D 加速接口。目前 STM32 的 DMA2D 和 NXP 的 PXP 接口,廠家可以輕松擴展自己的加速接口。

          3. 穩定

          AWTK 通過下列方式極力讓代碼穩定可靠:

          • 使用 cppcheck 和 facebook infer 進行靜態檢查。
          • 使用 valgrind 進行動態內存檢查。
          • 近兩萬行的單元測試代碼。
          • ZLG 強大 GUI 團隊的支持。
          • 經過多個實際項目驗證。
          • 多平臺 / 多編譯器驗證。
          • 優秀的架構設計。
          • Code Review。
          • 手工測試。

          4. 強大

          • 豐富的控件 (持續增加中)。
          • 支持各種圖片格式 (png/jpg/gif/svg)。
          • 支持各種字體格式 (點陣和矢量)。
          • 支持窗口動畫
          • 支持控件動畫
          • 支持高清屏。
          • 支持界面描述文件。
          • 支持主題描述文件。
          • 支持控件布局策略。
          • 支持對話框高亮策略。
          • 豐富的輔助工具。
          • 支持從低端的 Cortex M3 到各種高端 CPU。
          • 支持無文件系統和自定義的文件系統。
          • 支持裸系統和 RTOS。

          5. 易用

          • 大量的示例代碼。
          • 完善的 API 文檔和使用文檔。
          • ZLG 強大的技術支持團隊。
          • 用 AWTK 本身開發的界面編輯器 (開發中)。
          • 聲明式的界面描述語言。一行代碼啟用控件動畫,啟用窗口動畫,顯示圖片 (png/jpg/svg/gif)。

          6. 高度擴展性

          • 可以擴展自己的控件。
          • 可以擴展自己的動畫。
          • 可以實現自己的主循環。
          • 可以擴展自己的軟鍵盤。
          • 可以擴展自己的圖片加載器。
          • 可以擴展自己的字體加載器。
          • 可以擴展自己的輸入法引擎。
          • 可以擴展自己的控件布局算法。
          • 可以擴展自己的對話框高亮策略。
          • 可以實現自己的 LCD 接口。
          • 可以擴展自己的矢量引擎 (如使用 skia/cairo)。
          • 所有擴展組件和內置組件具有相同的待遇。

          7. 多種開發語言

          AWTK 本身是用 C 語言開發的,可以通過 IDL 生成各種腳本語言的綁定。生成的綁定代碼不是簡單的把 C 語言的 API 映射到腳本語言,而是生成腳本語言原生代碼風格的 API。目前支持以下語言 (以后根據需要增加):

          • C
          • Lua
          • Javascript on jerryscript
          • Javascript on nodejs

          8. 國際化

          • 支持 Unicode。
          • 支持輸入法。
          • 支持字符串翻譯 (實時生效)。
          • 支持圖片翻譯 (實時生效)。
          • 文字雙向排版 (計劃中)。

          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億臺。

          圖片來源:小米手機官方微博

          每日經濟新聞


          主站蜘蛛池模板: 日本精品一区二区三区在线视频一| 伊人激情AV一区二区三区| 一区二区三区电影网| 日韩精品一区二区三区中文3d| 国产一区二区三区免费看| 岛国无码av不卡一区二区| 日韩电影在线观看第一区| 国精产品一区一区三区免费视频 | 精品亚洲A∨无码一区二区三区| 国产一区二区三区在线2021| 99精品国产一区二区三区不卡| 国产福利一区二区三区在线视频| 亚州AV综合色区无码一区| 日韩在线一区二区三区免费视频| 国产凹凸在线一区二区| 麻豆国产一区二区在线观看| 国产萌白酱在线一区二区| 中文字幕日本一区| 日本一区二三区好的精华液 | 精品无码一区二区三区爱欲| 免费无码A片一区二三区| 区三区激情福利综合中文字幕在线一区 | 嫩B人妻精品一区二区三区| 蜜臀Av午夜一区二区三区| 国产丝袜无码一区二区视频| 日韩制服国产精品一区| 少妇一夜三次一区二区| 国产精品无码AV一区二区三区| 亚洲AV无码国产精品永久一区| 久久久国产一区二区三区 | 韩国女主播一区二区| 亚洲国产精品一区二区第一页| 国产成人欧美一区二区三区| 国产一区二区在线看| 视频在线观看一区| 一区二区三区无码被窝影院| 国产在线一区二区在线视频| 国产精品日韩一区二区三区| 精品无人区一区二区三区 | 成人中文字幕一区二区三区| 久久毛片免费看一区二区三区|