如果你想实现一个GUI框架
So you want to write a GUI framework
当我们讨论GUI
的时候我们在讨论什么?
根据一个GUI框架是否和平台/环境紧密集成,可以将GUI框架划分成两个阵营:
- 为游戏、嵌入式设备和Web应用设计的框架 提供应用层面需要的所有功能,包括和硬件交互、接收原始的事件流并将之呈送至各种类型的缓冲区和界面;
- 为桌面应用设计的框架: 需要考虑兼容不同平台的API、设计模式和规范。
游戏和嵌入式设备的GUI
游戏和嵌入式设备的GUI框架,其中大部分可以从系统集成的角度来考虑:游戏和嵌入式应用程序不必做那么多,因为在只有一个window
的场景下,很多功能都需要应用自己去完成。
原生客户端应用的构成
- 渲染窗口(Windowing)
- Tabs: 标签页
- Menus: 菜单栏
- Painting: 绘图
- Animation: 动画
- Text: 文本
- The compositor: 排版
- Web views: 渲染HTML页面
- 处理输入(Handling input)
- Pointer:鼠标
- Keyboard:键盘
- 便利性(Accessibility): 大量辅助技术的总称
- 国际化与本土化(Internationalization and Localization)
- 其他一些常见和不常见的特性
将以上所有要素集成起来
- 设计跨平台的API;
- 不要拒绝 web view;
- 原生的视觉和感觉;
MultiTool: 带有实时Web界面的系统监控工具
[Media] System Tools with real-time Web UI 🖥️ 🚀
MultiTool:
项目使用RillRate(一个为机器人、微服务和IoT设备设计的实时UI工具),实现了对CPU、内存和系统信息的监控,将数据可视化并实时呈现在web界面上。
TODO:
- 网络监控器
- 磁盘监控器
- 进程监控器
- 其他一些惊喜
gzp: v0.3.0 现在支持多线程压缩snappy
gzp: v0.3.0 now with support for parallel compression with Snappy
关于gzp:
gzp是一个用Rust实现的多线程压缩编码库,目前支持Gzip格式(依赖flate2)和snappy格式(依赖rust-snappy)
链接
- github:https://github.com/sstadick/gzp
- crate: https://crates.io/crates/gzp
FeoBlog(类似Tumblr的分布式社交网络) v0.6.0 发布
FeoBlog (A distributed, Tumblr-like social network in Rust) v0.6.0 Released
新特性:
- 支持OGP(Open Graph Protocol)协议;
- 更便捷地分享链接;
db prune
和db usage
命令;
改进:
- 更快的在服务器之间同步数据;
- 更好的在浏览器上缓存静态文件;
- 支持登陆用户设置背景颜色;
Bug修复:
- 切换页面时渲染组件(的bug);
一周一库(Rust Module of the Week):std::fs Part 2
本周继续讲解(std::fs Part 1) Rust 标准库中std::fs
模块
std::fs
是Rust标准库中操作文件系统的模块,包括创建、读取、更新、删除等常见操作。由于不同操作系统支持的API不尽相同,本文仅展示了与平台无关的一些例子:
- 通过修改时间(mtime)来聚合相同年份、月份乃至日期的文件;
- 硬链接(hard link)一个路径至另一个路径;
- 递归创建目录;
- 递归删除文件夹;
- 拷贝文件;
From 日报小组 odd-cat
社区学习交流平台订阅:
评论区
写评论还没有评论