用 Gnuplot 绘制实验数据

2016-11-08
阅读 11 分钟
15.1k
下面这组数据是我的一篇论文中的实验数据……为了得到这组数据,折腾了一个多月。第一行文本是注释。第 1 列是 7 份数据的编号。第 2 列是数据量(点数)。第 3~5 列分别是三种数据处理算法所耗时间(秒)。

povray[2] = 大地

2016-08-22
阅读 3 分钟
3.2k
也就是说,平面还是平面,只是平面上蒙上了一层草地的图案。草地的图案,是通过 bumps 语句随机扰动平面的法向而渲染出来的。可以尝试不同的 bumps 与 scale 的参数,理解它们对草地图案渲染结果的影响。

povray[1] = 天空

2016-08-21
阅读 7 分钟
4.2k
由于光源位于球体的右上方,所以球体的左下侧表面出现了阴影。然而现实中,天空是没有阴影的。要消除球体上的阴影,需要将其表面设置为不散射来自光源的光:

Debian,从安装到喜欢

2016-08-14
阅读 8 分钟
9.6k
我想念 Gentoo。虽然它就在我身边的工作站里运行着,但是这台笔记本里却没有。在这台十年前的笔记本上安装 Gentoo,会显得我太变态,更何况这台笔记本是我自己出资买的,敝本自珍。我想试试 Debian。

povray[0] = 第一幅画

2016-08-12
阅读 2 分钟
4.6k
我不会画画。我的一个朋友遭遇短期囹圄之灾后,一直闭门在家画画……不过,没遭此灾时,他也是一直闭门在家画画。他最近在学 3D MAX。我说,可以学 povray 阿,他说这玩意能画 18X 吗……

Fedora,从安装到放弃

2016-08-10
阅读 5 分钟
15.8k
搁小十年前,我很穷的时候,它对我来说是高端本,只有在网上看看的份。非常不幸,小十年后,我依然很穷,所以 550+ RMB 买了个杂凑的,翻新的……网店老板给它预装了雨林木风 Win XP。

程序与文档

2016-08-04
阅读 1 分钟
3.5k
文档是重要的,没有文档,单凭代码中那些经常很蹩脚的变量名与函数名,往往很难理解一段代码的功能及用途。$y=ax^2$ 是抛物线吧?那 $E=mc^2$ 是什么?编程虽然也像数学那样依赖于符号,但它更像是物理学。

续延传递

2016-06-09
阅读 4 分钟
3.9k
续延传递(Continuation Passing Style, CPS)是一种编程手法,不要相信我能够将它讲清楚——在敲这些字的时候,我刚刚开始看《The Little Schemer》的第八章的 multirember&co 这个函数的定义,而且是因为看不懂,所以才写此文。

pidgin 客串 IRC 客户端

2016-05-31
阅读 3 分钟
4.2k
pidgin 是一个支持多种网络 IM(即时通讯)协议的软件,可运行于 Linux,Windows 以及 Mac OS X 三大系统平台。本文所讲的是,如何用它玩 IRC。

团队内部不甚讲究的 IRC 服务搭建

2016-05-31
阅读 4 分钟
12.4k
我们这个不甚成器的『团队』蜗居于一个房间里,本来有什么事喊两声便可搞定。但是,有一些信息是难以喊出来的。譬如,我该怎么喊出来这份文档的地址?网络即时通讯工具是非常有必要的。于是,问题就来了。工作环境是 Linux,注定与 QQ,微信之类的现代网络即时通讯工具无缘了,几乎只剩下 IRC 可选。

会画画的乌龟

2016-05-10
阅读 17 分钟
6.5k
Guile 是一种 Scheme 方言的编译器,我们将这种 Scheme 方言也称为 Guile。Guile 是为增强 GNU 项目的扩展性而开发的。GNU 项目开发者可以将 Guile 解释器嵌入自己的程序中,从而使得自己的程序能够支持脚本扩展。本文取材于 Guile 官方的一篇教程,讲述一个具有绘图功能的 C 程序如何与 Guile 结合以获得脚本扩展能力。

<译> MIT 为何停掉 SICP?

2016-05-05
阅读 1 分钟
22.3k
在纽约举行的一次 Lisp 集会上,Gerry Sussman 被问到 MIT 为何停掉著名的 6.001 课程。这门课所用的教材是 Sussman 与 Abelson 所写的《Structure and Interpretation of Computer Programs》(中译《计算机程序的构造与解释》)。Sussman 的回答如下:

[译] Emacs Lisp 速成

2016-04-10
阅读 13 分钟
13.1k
你用着 Emacs 却不懂 Lisp 吧?欢迎阅读这篇 Emacs Lisp 入门教程!它应该能够助你搞定 Emacs Lisp,从而更加自如的驾驭 Emacs。

对文式编程的一些误解

2016-04-03
阅读 1 分钟
3.6k
几年前,王垠写了一篇批判文式编程的文章『On literate programming』([链接] )。他在 2014 年写的一篇文章『我和权威的故事』([链接] ) 中还是坚持着原有的观点。

<译> 函数类型

2016-03-18
阅读 9 分钟
7.7k
原文见 [链接] -> 上一篇:《函子性》 译注:由于距离上一章翻译的时间太久,所以有些内容可能有点不太相符。等我翻译完下一篇,再找时间校对一下。 到现在为止,我已多次语焉不详的提到函数类型。函数类型有别于其他类型。 以 Integer 为例,它是整数的集合。Bool 是两个元素构成的集合。然而一个函数类型 a -> b...

使用 GNU m4 为 Markdown 添加目录支持

2016-01-21
阅读 3 分钟
5.2k
Nikola 支持多种标记语言,我只用过 RST 与 Markdown。RST 用起来要比 Markdown 繁琐一些,但它的标记也更丰富一些,譬如 RST 提供了产生文章目录的标记(Table of Contents, TOC),而 Markdown 没有这一标记。不过,由于 Markdown 支持 HTML 的直接嵌入,它所缺乏的功能,我们可以从其他途径予以补充。

如何写一个 GNU 风格的命令行程序

2016-01-17
阅读 17 分钟
7.8k
我见过很多人抱怨 GNU Autotools 太复杂。事实上它比求解一元二次方程简单多了。学习 GNU Autotools,最好的办法就是动手搭建一个项目,然后根据自己的需求去查 GNU Autotools 的文档与教程,整个过程只是很简单的『加法』运算。

在 C 程序中处理 UTF-8 文本

2016-01-08
阅读 8 分钟
6.7k
如果你对 UTF-8 编码不是非常了解,就不要试图在 C 程序中徒手处理 UTF-8 文本。如果你对 UTF-8 非常了解,就更没必要这样做。找一个提供了 UTF-8 文本处理功能并且可以跨平台运行的 C 库来做这件事吧!

接口即泛型

2016-01-05
阅读 7 分钟
5.7k
有言在先,本文仅仅是从 C 语言的角度来看『接口』与『泛型』之间的关系,无意于证明 C 语言有多么『强大』,以致于它连『接口』与『泛型』都能支持,也无意于贬低那些从语法层面就支持接口与泛型的语言在贩卖概念。

我的 2015 年终总结

2015-12-31
阅读 1 分钟
4.6k
主要是下半年,因为上半年的兴趣不在计算机与编程方面,而在与计算机与编程八杆子打不着的各种刀具方面——猎刀、战术刀、生存刀、口袋刀之类,最大的收获是学会了磨刀。改天失业了,就走街串巷磨剪子戗菜刀赖以糊口……

C 指针有害健康

2015-12-28
阅读 10 分钟
9.3k
每一盒香烟的包装上都会写『吸烟有害健康』。白酒瓶上也写了『过度饮酒,有害健康』。本文的外包装上写的则是『阅读有害健康』,特别是『甩掉强迫症』那一节,它适合我自己阅读,但不一定适合你。

面向指针编程

2015-12-25
阅读 25 分钟
12.1k
面向对象编程,面向设计模式编程(亦即设计模式),面向接口编程,面向模板编程(亦即泛型编程),面向函数编程(亦即函数式编程),面向多核时代的并行编程,面向大数据的机器学习编程……这么多年,大家要面向的东西已经够多了,然而我看到的现象是,很多编程语言让大家面向 xxx 的同时在竭力回避指针。我可不想面向这么...

Vala 的性能概观

2015-12-22
阅读 5 分钟
5.7k
在『Vala 语言中一些好玩的』中介绍了 Vala 语言的外在特征。那么 Vala 的内涵是怎样的?毕竟一门编程语言不能只图外表光鲜,它还得实用。衡量一种编程语言是否实用,主要就是看它的语法表现力以及所编写的程序的运行效率。

Vala 语言中一些好玩的

2015-12-22
阅读 10 分钟
9.2k
由于我对不同的编程语言涉足不广,因此文中我认为是好玩的东西可能在其他语言中早已存在。可以这样理解我说的『好玩』,由于 Vala 语言是编译到 C 的,因此凡是 C 语言中没有的东西,在我看来都可能是好玩的……这个基线可能真的是太低了,C 语言似乎除了指针之外,似乎没有什么特性 :)

让这世界再多一份 GNU m4 教程(终结篇)

2015-12-12
阅读 3 分钟
12.5k
对于自己定义的宏,建议先在你的大脑中对它进行逐步展开,确信自己完全理解这个展开过程。如果大脑的堆栈不够用,可以用纸和笔记录展开过程。这样可以在很大程度上提高宏定义的正确性。

让这世界再多一份 GNU m4 教程 (4)

2015-12-11
阅读 3 分钟
7.1k
现在再强调一次,m4 会将当前宏的展开结果插入到待读取的输入流的前端。也就是说,m4 会对当前宏的展开结果再次进行扫描,以处理嵌套的宏调用。这个性质决定了可以写出让 m4 累死的递归宏。

让这世界再多一份 GNU m4 教程 (3)

2015-12-10
阅读 3 分钟
8k
上一篇见:[链接] 注释符 # 符号是行注释符。不过,与我们所熟悉的注释文本不同,m4 的注释文本会被发送到输出流。例如: {代码...} 会被展开为: {代码...} 可以用 changecom 宏修改 m4 默认的注释符,例如 {代码...} 这样,@@ 就变成了注释符。 如果你需要块注释符,也可以做到,例如: {代码...} 如果不向 changecom ...

让这世界再多一份 GNU m4 教程 (2)

2015-12-07
阅读 6 分钟
10.1k
say_hello_world 是宏名,Hello World 是宏体。如果在宏定义之后的文本中出现了 say_hello_world,例如:

让这世界再多一份 GNU m4 教程 (1)

2015-12-06
阅读 6 分钟
21.9k
这个文档系列是我第一次认真学习 GNU m4 并进行了一些实践之后的一些总结。由于我在撰写此文的过程中充满着像 m4 展开一个又一个宏一般的耐心,因此这篇文章会比较长。在这个信息碎片化的时代,似乎没有很多人愿意去看很长的文章,大家更喜欢干货。为了节省大家的时间,必须声明,这个文档系列没有干货,它是写给我自己...

Autoconf 的基本原理

2015-11-27
阅读 3 分钟
9.7k
Autoconf 可以产生一份 Shell 脚本。对于大部分类 Unix 系统,这份 Shell 脚本能够自动配置软件源码包的构建环境。这份 Shell 脚本就是 Linux 系统中大名鼎鼎的 configure 脚本。