Aug 06

写了一个用来搞笑的 python 程序,可以随机地按照一定的语法生成句子。若干时间前写过一个功能差不多的程序,但是比较傻逼。

这个程序使用了 recursive transition networks 来表示一些简单的语法,目前可以递归地生成主语从句和宾语从句,并组合成完整的句子。看一些例子:

  • The fool which reluctantly rocks unwillingly eats a book.
  • The silly man that is silly unwillingly kicks a book which finally pisses.
  • A book reluctantly eats a bug that is red.
  • A man unwillingly sucks.
  • The piece of shit that happily runs reluctantly kicks a bug.

:-p 词表里本来还有一个 fucking 的,考虑到这里的都是文化人,删了。代码在最后。

另外,Vincent 在 The slow downfall of Emacs 里写道 Emacs 在编辑器中的 popularity 排名正在降低。在几年前,编辑器的 top two 永远是 Vi/Vim 和 Emacs,但是现在 Emacs 竟然落在了 GEdit 和 Kite 之后(这帮傻逼都是怎么想的?!),到底是为什么?Vincent 在最后写道:“Why is that? Not pretty enough? Too powerful for the simple needs of the new users that Ubuntu brought to the Linux world?”

Continue reading »

Jul 28

看到了 Cheng Meng 的那个 Youtube downloader,由于对 Ruby 的无知,一点也看不懂,所以就参考 DownloadYoutube video with GAWK 用 python 自己写了一个。与 Cheng Meng 那个不同,我这个只负责把视频文件 url 打印出来。用法是 youtube-url.py video-id 所以要下载 id为 qNKtKm3SXvs 的视频,可以用这个命令

wget -O video.flv `youtube-url.py qNKtKm3SXvs`

youtube-url.py 的代码:

Continue reading »

Jul 25

NetHack 头一次达到了 Dungeon of Doom的第七层。在这层里找到了 Oracle of Delphi,还第一次碰见了 fire ants,截图一张~~~

thumbnail

光标所在的那个 @ 就是我~~,两个 f 是我的两只宠物,红色的 a 就是 fire ants,那四个蓝色的 { 的中间是 Oracle 的位置,但是墙挡住了,看不见。

以前玩的时候一般都是找不到吃的饿死了,要不然就是吃了个 goblin 的尸体毒死了,在要不然就是做了什么奇怪的事挂掉了(比如不小心走到一个陷阱上,头上掉下来一块石头…)

Jul 23

一个在 Wordpress 中使代码加亮的办法,需要激活 MyCSS 插件,并且保证 WP Lightbox 2 插件是禁用的。

写一段程序代码(我是写的 C++),尽量包含最多的语法元素,然后把代码给 htmlize 了(可以用 Emacs 的 htmlize.el 或者 Vim),这里有一个要求,就是生成的 html 必须是 CSS 与 <pre> 分开的,CSS 在 <head> 里, <pre><body> 中,然后把 CSS copy 到 MyCSS 里。

以后贴代码的时候,只要用同样的方法生成 html,然后把那个 <pre> 贴到 post 里就行了。还有一点需要注意,MyCSS 会生成一个 my.css 放在 blog 的 <head> 里,位置是比较靠前的,在我这里比 Coolcode 和 SyntaxHighlighter 都要考前,所以 my.css 里的内容可能会被覆盖掉。

测试:

;; =============== Unfill-buffer ===============>
(defun unfill-buffer ()
  “Unfill current buffer.”
  (interactive “”)
  (setq m (point-marker))
  (beginning-of-buffer)
  (while (re-search-forward \\\\([^ ]+\\\\) *
 *\\\\([^ ]\\\\) nil t)
    (replace-match “\\\\1\\\\2″))
  (set-marker m 0 (current-buffer)))

Continue reading »

Jul 20

才知道原来在多文件编译时 c++ 类模板的声明和定义一定包含在同一个文件里。

以前写 Game of Life 的时候写了一个动态二维数组的模板,当时的文件是这样包含的:

// matrix.hpp

template<class T> class TMatrix
{
// Declarations…
};

#include “matrix.cpp” // Definitions

今天又用到了这个类,看这个文件包含不爽,改成了常规的

// matrix.hpp

template<class T> class TMatrix
{
// Declarations...
};
// matrix.cpp

#include "matrix.cpp"

... // Definitions

然后在主程序里引用了一个成员函数

// main.cpp
#include "matrix.hpp"

int main()
{
    TMatrix<int> Matrix;
    Matrix.row();
    return 0;
}

编译:g++ -g main.cpp matrix.cpp

呜呼!出错了!说 TMatrix<int>::row() 只是声明了,没有定义。把 matrix 里的文件包含改成原来那个样子,然后只编译 main.cpp 就没问题了。百思不得其解,后来在 CSDN 上找到了这个。理论上,只要在模板声明前加上 export 关键字,然后用常规的多文件编译方法就可以,但是目前大部分编译器都不支持这个关键字。g++ 说“目前尚未实现,忽略”,真够直接的…

Jul 20

写了个简单的 elisp 函数 unfill-buffer,用来去掉当前 buffer 的所有单独的换行。

[coolcode lang=”lisp” download=”unfill-buffer.el”]
(defun unfill-buffer ()
“Unfill current buffer.”
(interactive “”)
(setq m (point-marker))
(beginning-of-buffer)
(while (re-search-forward “\\([^ ]+\\) *
*\\([^ ]\\)” nil t)
(replace-match “\\1\\2″))
(set-marker m 0 (current-buffer)))
[/coolcode]

Jul 19

末日的不死菩提树… 说到菩提树,我们大脑中第一个想到的是什么?是“菩提本无树,明镜亦非台”,还是那种某某科某某属的多年生植物?

我第一个想到的是舒伯特的那首艺术歌曲《菩提树》,在这个艺术人都梳小辫的时代,不知道还有没有人听艺术歌曲(其实我也不听,只是凑巧有这首歌)。我住的地方的楼下不远有个卖乐器的,我在那里见过两个店主,一个比较矮,梳小辫,另一个又矮又胖,一副暴发户的模样。这个人压制了我进去摸摸吉他的欲望。

菩提树是一种寿命很长的树。中国原本是没有菩提树的,当年释迦牟尼来到中国时,顺便走私了过来,于是中国就有了这种宁静的树。假如宇宙的质量大于临界质量,希望宇宙毁灭的时候,菩提树可以代替时空而存在。

Jul 19

突然发现 Wordpress 会很贱地保留源文件中的换行,这是否意味着我将不能用 Emacs 写 blog?

Test image.

[coolcode lang=”cpp”]
#include “stdio.h”

int main()
{
printf(”Hello world!\n”);
return 0;
}
[/coolcode]

\int_0^\infty \frac{1}{x}\textrm{d}x

p
{
    text-align: center;
}
#include <stdio.h>

int main()
{
    printf("Hello world!\\n");
    return 0;
}
Close
E-mail It