Author Archives: csslayer

Job DSL vs Pipeline in Jenkins

我自己的 CI 长久以来都是手动配置 Free-Style Project,有很多重复的部分很不方便统一修改。所以就打算搞得比较自动化一点方便批量修改任务,一开始是想用什么 Template 之类,但是后来就发现了 Job DSL 和 Pipeline。 姑且来说,这两个解决的问题有重合的部分,但是也有不一样的地方。Pipeline 基本就是用一个 Groovy 的子集(还是相似的东西?),来描述一个 Job,支持的功能比较多。而 Job DSL 是用 Groovy 的一个脚本来生成 Job。实践当中你可以两个都用。 Pipeline 最基本的用法就是在代码库里面放一个 Jenkinsfile,里面描述 pipeline。当然这么做是有缺点的,因为你还是没有自动化多个不同的项目的任务生成。总之是一个类似把 Jenkins 当作 travis 的用法。 我踩的第一个坑就是没有意识到这两个东西虽然都是 Groovy,但是使用的是两套 API。需要分别查看各自的文档。我犯的一个错误就是把 Pipeline 里面的用法放到 Job DSL 里面用……结果当然是没法通过了,而且我还一直没有意识到这个问题折腾了好久。 总之,最后总算是搞清了这个问题,然后我发现我一开始写的 Job … Continue reading

Posted in Linux | Tagged , , | Leave a comment

纯粹不吐不快

更新:好吧原文作者说是 “gnome control center”。 后文可以略过了。 http://forum.ubuntu.org.cn/viewtopic.php?t=486270&p=3200398#p3200398 下面是原文 其余内容不论,我们单说第一句:「前一阵子 Ubuntu 的预设输入系统从 IBus 改为 Fcitx,但因后者不支持 gcc,搞得天下大乱,于是 Ubuntu 17.10 又换回 Ibus 了。 LZ 建议把 ibus 删除掉换成 fcitx,并不见得问题就消失了。」 不支持 gcc???黑人问号??? 其一、世界上绝大多数发行版,包括 ubuntu 都是默认 gcc 编译器。debian 的迁移到 clang 的进程虽然一直有提但是绝对还没有完成,而且也只是测试是否「可以编译」,作为 debian 下游的 ubuntu 也显然还没有迁移到非 gcc 编译器。打包 … Continue reading

Posted in fcitx development | Tagged | Leave a comment

The Road to Fcitx 5: 5. Good news for people who use multiple display server

A big refactor in fcitx 5 is to enable it to support for multiple display server. This is not limited to X11 + wayland, but it means you can use fcitx with multiple X11 server. While such functionality may have … Continue reading

Posted in fcitx development | Tagged , | Leave a comment

当你 Debug 一门过气语言生成的代码里面产生的 memory leak 时会发生什么 (a.k.a. 不要修改 vala 返回的 strv 的 length)

(会被写成 blog 发出来。) 直接上一段代码。 var array = elements.to_array (); array.length = -1; return “(” + string.joinv (” “, array) + “)”; 提问,这段代码有什么问题? 它会生成这样的代码。 _tmp32_ = gee_collection_to_array ((GeeCollection*) _tmp30_, &_tmp31_); array = _tmp32_; array_length1 = _tmp31_; _array_size_ = array_length1; array_length1 = … Continue reading

Posted in Linux | Tagged , | 1 Comment

最近踩的一个关于 std::unique_ptr 的小坑。

简单来说就是这样一件事,std::unique_ptr 在析构途中调用了 .get() 会发生什么这样一个问题。 当然,你是不应该写出这样的代码的……但是有时候这样的行为可能并不是非常明显。所以就会导致问题… 一个 FreeBSD 上的人汇报了在 Linux 上没有的 crash。估计是 libc++ 和 libstdc++ 的行为差别。一个在析构途中就返回 null 了,一个还是返回原始的指针。 总之,小心避免写出这样的代码吧。

Posted in Linux | Tagged , | Leave a comment