< 返回版块

odd-cat 发表于 2021-08-10 22:31

Tags:gui,gzp

如果你想实现一个GUI框架

So you want to write a GUI framework

当我们讨论GUI的时候我们在讨论什么?

根据一个GUI框架是否和平台/环境紧密集成,可以将GUI框架划分成两个阵营:

  1. 为游戏、嵌入式设备和Web应用设计的框架 提供应用层面需要的所有功能,包括和硬件交互、接收原始的事件流并将之呈送至各种类型的缓冲区和界面;
  2. 为桌面应用设计的框架: 需要考虑兼容不同平台的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

新特性

  1. 支持OGP(Open Graph Protocol)协议;
  2. 更便捷地分享链接;
  3. db prunedb usage 命令;

改进

  • 更快的在服务器之间同步数据;
  • 更好的在浏览器上缓存静态文件;
  • 支持登陆用户设置背景颜色;

Bug修复

  • 切换页面时渲染组件(的bug);

一周一库(Rust Module of the Week):std::fs Part 2

std::fs (Part 2)

本周继续讲解(std::fs Part 1) Rust 标准库中std::fs模块

std::fs 是Rust标准库中操作文件系统的模块,包括创建、读取、更新、删除等常见操作。由于不同操作系统支持的API不尽相同,本文仅展示了与平台无关的一些例子:

  • 通过修改时间(mtime)来聚合相同年份、月份乃至日期的文件;
  • 硬链接(hard link)一个路径至另一个路径;
  • 递归创建目录;
  • 递归删除文件夹;
  • 拷贝文件;

From 日报小组 odd-cat

社区学习交流平台订阅:

Rust.cc 论坛: 支持 rss

微信公众号:Rust 语言中文社区

评论区

写评论

还没有评论

1 共 0 条评论, 1 页