wlroots scene graph 速览

wlroots 的 scene graph 是 0.15 引入的高层渲染抽象,目标是让 compositor 开发者摆脱手动管理渲染循环、damage tracking 和输入命中测试的繁琐工作。下面从架构、节点类型、坐标系、渲染流程和实际用法等几个维度展开。 整体架构 scene graph 的核心思想是把“要渲染什么”和“如何渲染”解耦。Compositor 只需构建一棵节点树来描述场景,wlroots 负责把这棵树翻译成 GPU 命令并处理 damage。 ...

2026年3月14日 · 2041 words · rewine

在 nixos 中使用 telega 进行聊天

telega 是一个 emacs 上的 Telegram 客户端,在 nixos 中,telega 包过于老旧,在 unstable 中已经无了,下面尝试使用传统方法安装 telega。 下载源代码 1 2 cd ~/.emacs.d/site-lisp git clone git@github.com:zevlg/telega.el.git 参考文档进行配置 ...

2021年10月27日 · 728 words · rewine

简单介绍下如何给 Peony 写插件

peony 是优麒麟的文件管理器,我之前在 开源软件供应链点亮计划 活动中中选了实现预览插件的项目,今天稍微总结下。 可以先看看参考资料 如何编写 Peony 插件 Peony-Qt的开发者手册(中文版) Peony 的 wiki ...

2021年10月4日 · 1185 words · rewine

Onlyoffice Document Server 搭建

Document Server 是一个在线办公套件,包括用于文本,电子表格和演示文稿的查看器和编辑器,与Office Open XML格式完全兼容:.docx,.xlsx,.pptx,并支持实时协作编辑。 支持所有流行的格式:DOC,DOCX,TXT,ODT,RTF,ODP,EPUB,ODS,XLS,XLSX,CSV,PPTX,HTML 项目地址是:https://github.com/ONLYOFFICE ...

2021年8月23日 · 773 words · rewine

QtPDF 的编译与试用

QtPDF 是 Qt 封装的 pdfium 模块,以 GPLv3/LGPLv3 协议分发,也可以在 QT marketplace 购买可商业版本 下载源代码 1 2 3 4 git clone <https://code.qt.io/qt/qtwebengine.git> cd qtwebengine git checkout 5.12.8 git submodule update --init --recursive 注意:git checkout 选择自己 qt 的版本 ...

2021年8月23日 · 559 words · rewine

Codeworld: 使用Haskell实现一个贪吃蛇小游戏

haskell 的一些教学可以参考: https://www.seas.upenn.edu/~cis194/fall16/index.html CodeWorld:可以在线运行hs代码,基于ghc.js,四舍五入还是在本地跑 https://code.world/haskell 下面是利用 CodeWorld 画圆的小例子 1 2 3 4 5 import CodeWorld main :: IO() main = do drawingOf $ circle 1 ...

2021年8月20日 · 1992 words · rewine

Haskell 常用函数笔记

运算符函数 (!!) 取第n个元素 1 2 3 4 5 6 7 Prelude> :t (!!) (!!) :: [a] -> Int -> a Prelude> [0,1,2,3,4]!!3 3 Prelude> [0,1,2,3,4]!!0 0 乘方 (^), (^^),(**) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Prelude> :t (^) (^) :: (Integral b, Num a) => a -> b -> a Prelude> 54.5^5 4.8081998590625e8 Prelude> :t (^^) (^^) :: (Fractional a, Integral b) => a -> b -> a Prelude> 5.6^^6 30840.979455999986 Prelude> :t (**) (**) :: Floating a => a -> a -> a Prelude> 0.2**0.1 0.8513399225207846 ...

2021年6月21日 · 1314 words · rewine

软件工程知识点总结

第1章 软件与软件工程的概念 了解与软件相关的基本概念,包括软件、程序、数据、文档。 软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。 软件 = 程序+数据+文档 程序是按事先设计的功能和性能要求执行的指令序列。 程序 = 数据结构+算法 数据是使程序能正常操纵信息的数据结构。 文档是与程序开发,维护和使用有关的图文材料。 ...

2021年5月10日 · 7618 words · rewine

整理一下图灵奖得主们都干了什么

前不久,2020图灵奖今日出炉,龙书作者 Alfred Vaino Aho 和 Jeffrey David Ullman 获奖,作为计算机界的最高荣誉,图灵奖获得者及其成果对计算机学科意义非凡,以前只是大概知道几个人,今天,特地翻了翻维基,看看得奖的都有谁。 ...

2021年4月12日 · 3309 words · rewine

使用c++解决leetcode多线程题题目(之一)semaphore

通过 man sem_init 可以查看具体文档。 或者使用: https://man7.org/linux/man-pages/man3/sem_init.3.html sem_init函数是Posix信号量操作中的函数。sem_init() 初始化一个定位在 sem 的匿名信号量。pshared 参数指明信号量是由进程内共享,还是由进程之间共享。如果 pshared 的值为 0,那么信号量将被进程内的线程共享。value 参数指定的初始值。 sem_post是给信号量的值加上一个“1”,它是一个“原子操作”---即同时对同一个信号量做加“1”操作的两个线程是不会冲突的。 sem_wait是一个函数,也是一个原子操作,它的作用是从信号量的值减去一个“1”,但它永远会先等待该信号量为一个非零值才开始做减法。也就是说,如果你对一个值为2的信号量调用sem_wait(),线程将会继续执行,将信号量的值将减到1。如果对一个值为0的信号量调用sem_wait(),这个函数就会原地等待直到有其它线程增加了这个值使它不再是0为止。 ...

2021年4月9日 · 3793 words · rewine