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 »
Share This
Jul 25
NetHack 头一次达到了 Dungeon of Doom的第七层。在这层里找到了 Oracle of Delphi,还第一次碰见了 fire ants,截图一张~~~
光标所在的那个 @ 就是我~~,两个 f 是我的两只宠物,红色的 a 就是 fire ants,那四个蓝色的 { 的中间是 Oracle 的位置,但是墙挡住了,看不见。
以前玩的时候一般都是找不到吃的饿死了,要不然就是吃了个 goblin 的尸体毒死了,在要不然就是做了什么奇怪的事挂掉了(比如不小心走到一个陷阱上,头上掉下来一块石头…)
Share This
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 里的内容可能会被覆盖掉。
测试:
(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 »
Share This
Jul 20
才知道原来在多文件编译时 c++ 类模板的声明和定义一定包含在同一个文件里。
以前写 Game of Life 的时候写了一个动态二维数组的模板,当时的文件是这样包含的:
template<class T> class TMatrix
{
};
#include “matrix.cpp”
今天又用到了这个类,看这个文件包含不爽,改成了常规的
// 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++ 说“目前尚未实现,忽略”,真够直接的…
Share This
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]
Share This
Jul 19
末日的不死菩提树… 说到菩提树,我们大脑中第一个想到的是什么?是“菩提本无树,明镜亦非台”,还是那种某某科某某属的多年生植物?
我第一个想到的是舒伯特的那首艺术歌曲《菩提树》,在这个艺术人都梳小辫的时代,不知道还有没有人听艺术歌曲(其实我也不听,只是凑巧有这首歌)。我住的地方的楼下不远有个卖乐器的,我在那里见过两个店主,一个比较矮,梳小辫,另一个又矮又胖,一副暴发户的模样。这个人压制了我进去摸摸吉他的欲望。
菩提树是一种寿命很长的树。中国原本是没有菩提树的,当年释迦牟尼来到中国时,顺便走私了过来,于是中国就有了这种宁静的树。假如宇宙的质量大于临界质量,希望宇宙毁灭的时候,菩提树可以代替时空而存在。
Share This
Jul 19
突然发现 Wordpress 会很贱地保留源文件中的换行,这是否意味着我将不能用 Emacs 写 blog?
Test image.
[coolcode lang=”cpp”]
#include “stdio.h”
int main()
{
printf(”Hello world!\n”);
return 0;
}
[/coolcode]

p
{
text-align: center;
}
#include <stdio.h>
int main()
{
printf("Hello world!\\n");
return 0;
}
Share This
Recent Comments