Development

FAIL: 在线将 zpool 转换为 GELI 加密卷

| Development

今天尝试了一下将 zpool 在线转换为 geli 加密卷,失败。这里记一笔。

想法是:将 zpool (RAIDZ)中的一块盘 offline,建立 GELI 卷,然后用新建的 GELI 卷来替换拿下来的盘。

阅读全文…( 本文约 457 字,阅读大致需要 1 分钟 )

OS X终端中的 PgUp 和 PgDn

| Development

多年不用 Mac 了,这没有 PgUp 和 PgDn 的死毛病还是没改。我觉得我真是没法接受没有 Page Up 和 Page Down 的键盘的。

当然,设计者关上一道窗的同时,往往又会在另外的地方开一扇门。Mac 上可以用组合键来模拟这些功能:

阅读全文…( 本文约 157 字,阅读大致需要 1 分钟 )

shell 中的 ` 和 $()

| Development

sh(1) 脚本中,`$() 的作用类似。比如:

rm `find /foo/bar -ctime +3d -type f`

📓 注意

FreeBSD系统中,此处实际可以用 find /foo/bar -ctime +3d -type f -delete 来代替。

表示将 find 的输出结果作为 rm 的命令行输入。

阅读全文…( 本文约 238 字,阅读大致需要 1 分钟 )

GNU libtool 和 FreeBSD 10

| Development

FreeBSD 开始用 10 以上的版本号有一段时间了。这个变动立刻导致了大量 ports 无法编译,多数情况下是因为开发者采用了较早版本的 libtool 导致的,具体来说,是类似下面的代码:

阅读全文…( 本文约 198 字,阅读大致需要 1 分钟 )

作弊条:几个不太常用的git库管操作

| Development | #作弊条 | #cheatsheet | #git

配合 svn 使用 git 时可能会遇到许多问题,例如两个人分别做了 git svn clone,然后希望合并到同一个 git 库中。如何做合并呢?假定两个库分别是 old, new,将这两个库对应的分支和对应的源分支 (svn/*) 通过 .git/config 分别复制到不同的分支名字下面,例如 svn/releng/8.2 和 old-svn/releng/8.2。假定需要合并的分支是 old/my8.2,则做以下操作:

阅读全文…( 本文约 470 字,阅读大致需要 1 分钟 )

clang静态分析工具作弊条

| Development

📜 历史文件已不具备现实意义

文章介绍的是旧版 clang 的用法。

静态分析是一种辅助的代码品质提高手段,简而言之静态分析大致是走一个类似编译的过程(或者走完生成副产品),然后给出代码中可能存在的问题。

阅读全文…( 本文约 437 字,阅读大致需要 1 分钟 )

FreeBSD 的 InfiniBand 支持

| Development

现时 InfiniBand 硬件已经相当廉价。有些 4x 的 InfiniBand 适配器已经可以在 $100 以内拿到。由于 InfiniBand 可以提供高带宽、低延迟的数据传输,而且点对点对联不需要交换机,因此可以以十分低廉的价格满足近实时同步,或分离存储服务这样的需求。

今年年初的时候, Isilon我厂Panasys 联合资助了 FreeBSD 上的 InfiniBand 协议栈的实现。这个实现基于 OpenFabrics Alliance 的 OFED,对基于 Mellanox 芯片的多种常见的 InfiniBand 卡都提供了支持。这些代码目前已合并至 FreeBSD 的开发主线,并将随 FreeBSD 9.0-RELEASE 发布。

阅读全文…( 本文约 647 字,阅读大致需要 2 分钟 )

有关"非正常终止"

| Development

多年以前在 USENIX HotOS 2003 论文集中看到了 一篇 关于 “Crash only software” 的论文,当时有一些想法,但很多没有认真地实践。最近做的东西用到的这方面的设计方法比较多,总结一下写出来。

阅读全文…( 本文约 1189 字,阅读大致需要 3 分钟 )

关系代数中的除

| Development

简单记一笔,感谢 Stanford 的 数据库入门 课程课后作业 (有人在 StackOverflow提问)。复习一下。

应用场景:找出一家能制作全部30岁以上人士需要的Pizza种类的Pizza店。

在示范数据库中给出的四个关系:

阅读全文…( 本文约 401 字,阅读大致需要 1 分钟 )

Ruby用实际行动向GPLv3吐槽,Ruby 1.9.3将改用 BSD 许可证发布

| Development

Ruby 从下一个版本,也就是 1.9.3 开始,从原先的 GPLv2 许可证换成了 2-clause BSD 许可证(大体上相当于 MIT 许可证)。

早期 Ruby 采用的是自由软件基金会推荐的 GPLv2 or later 许可证方式。在实际操作中这种许可方式十分常见,这种许可证方式包含两层意思:

阅读全文…( 本文约 1010 字,阅读大致需要 3 分钟 )