Kernel-Zhang的个人主页

libgpiod在Nim中的使用

由于Ubuntu 20系统自带的libgpiod库(版本V1.4.1)存在bug:在监听一组gpio状态后,再一次读取多个gpio的状态时会得到错误的结果。虽然在后面的更新中,该bug已经修复,但为了不破坏系统软件包的版本,并且一劳永逸的避免其它的bug,我决定在Nim中使用最新的libgpiod库,并且静态链接到我的程序,摆脱对系统库的依赖。那就一步一步的开始吧! 下载最新的libgpi...

手动编写VAPI

本文档旨在介绍如何编写将现有 C 库绑定到 Vala。如果该库使用的是 GLib,请勿遵循本文档。请阅读使用 GObject 自省生成 VAPI。库可能并不完全遵循 GLib 的编码实践,但修复库以便与 GObject 自省一起工作比编写手动绑定更好。 C 程序员是一群相当自由的人,某些程序可以根据程序员的心情以多种方式完成,而 Vala 则受到更多限制。本指南不可能涵盖 C 程序员编写的...

Vala内存管理详解

Vala 的内存管理基于自动引用计数,而不是跟踪垃圾回收。 这种方法有利有弊。引用计数是确定性的,但在某些情况下会形成引用循环。在这种情况下,必须使用弱引用才能打破这些循环。Vala 的关键字weak就是为弱引用设计的。 这就是自动参考计数的工作原理: 每次将引用类型对象赋值给变量(referenced)时,其内部引用计数就会加一(ref);每次引用变量退出作用域时,该对象的内部引用计...

Vala教程

导言 免责声明:Vala 是一个正在进行中的项目,其功能可能会发生变化。我会尽量更新本教程,但我并不保证完美。此外,我也不能保证我所建议的技术一定是实践中最好的技术,但我会努力跟上这类事情的发展。 Vala是什么? Vala 是一种新的编程语言,它允许使用现代编程技术编写在 GNOME 运行时库(尤其是 GLib 和 GObject)上运行的应用程序。长期以来,该平台提供了一个非常完整...

gintro——GTK4和GTK3高级绑定

Nim是一种现代通用编程语言。 GTK 也称为Gimp工具包,现在有时也称为Gnome工具包,是一个图形用户界面库。 虽然 GTK 最初是作为跨平台图形用户界面工具包而设计和宣传的,但它目前主要用于Linux和其他类似Unix的操作系统。 大多数 Linux 发行版都包含 GTK,一些发行版还将 GTK 用作默认桌面环境,通常与 Gnome 环境或其他窗口管理器一起使用。 虽然 GTK2...

gstreamer插件编写指南:GStreamer 许可

如何为您的GStreamer代码添加许可 GStreamer 是一个基于插件的框架,采用 LGPL 许可。之所以选择这种授权方式,是为了确保每个人都能使用 GStreamer 构建应用程序,并使用自己选择的授权方式。 为了保持这一政策的可行性,GStreamer 社区为 GStreamer 内核或 GStreamer 官方模块(如我们的插件包)中的代码制定了一些许可规则。我们要求所有进入...