昨天设置了让 VIM 保存网页文件后自动刷新 Firefox,的确很方便。但发现如果你正在看着 Firefox 里面的参考文章来修改 VIM 里面的网页的话,保存后自动刷新网页就显得没有必要。当然,也可以使用 Chrome 来读参考文章,Firefox 专门用来调试。不过,发挥 Hacker 精神,还是自己动手来改进吧!于是吧 Refresh_firefox() 函数改了一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
autocmd BufWriteCmd *.php,*.html :call Refresh_firefox()
function! Refresh_firefox()
  if &modified
    write
    silent !echo 'if (gLastValidURLStr.indexOf("'%'")>=0) {
                \ vimYo = content.window.pageYOffset;
                \ vimXo = content.window.pageXOffset;
                \ BrowserReload();
                \ content.window.scrollTo(vimXo,vimYo);
                \ }
                \ repl.quit();'
| nc localhost 4242 2>&1 > /dev/null
  endif
endfunction

这样在刷新前就会依据目前打开的页面 URL 来判断是否刷新,如果 Firefox 正打开的页面 URL 里面含有目前 VIM 里面正在编辑的文件的文件名,就刷新。只是这样在编辑 *.js 和 *.css 文件的时候就没办法了,只好再加一个 Refresh_firefox_anyway():

1
2
3
4
5
6
7
8
9
10
11
autocmd BufWriteCmd *.js,*.css :call Refresh_firefox_anyway()
function! Refresh_firefox_anyway()
  if &modified
    write
    silent !echo 'vimYo = content.window.pageYOffset;
                \ vimXo = content.window.pageXOffset;
                \ BrowserReload();
                \ content.window.scrollTo(vimXo,vimYo);
                \ repl.quit();'
| nc localhost 4242 2>&1 > /dev/null
  endif
endfunction

折腾出上面的功能,我主要是学会了一些 VIM Script 相关的东西,比如怎样在外部命令里面包含正在编辑的文件名。实际上对于本文要解决的问题,可以换一个更简单的思路。只要判断 Firefox 里面的页面是否是本地页面就可以了,即 URL 地址以 “file://” 或 “http://localhost/” 开头:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
autocmd BufWriteCmd *.php,*.html :call Refresh_firefox()
function! Refresh_firefox()
  if &modified
    write
    silent !echo 'if (gLastValidURLStr.indexOf("file://")==0
                \ || gLastValidURLStr.indexOf("http://localhost/")==0) {
                \ vimYo = content.window.pageYOffset;
                \ vimXo = content.window.pageXOffset;
                \ BrowserReload();
                \ content.window.scrollTo(vimXo,vimYo);
                \ }
                \ repl.quit();'
| nc localhost 4242 2>&1 > /dev/null
  endif
endfunction

在 Vim.org 搜索 CSS 的时候发现了一个名为 MozRepl 插件。作用是建立一个 telnet 服务以便用命令行控制 Firefox。因此可以设置让 Vim 在编辑完 HTML 或 CSS 文件保存后自动刷新 Firefox。从此以后,不知能节省多少从前无意中浪费掉的“保存-切换窗口-刷新”这一套动作所花费掉的的微小时间。

本来想直接扔两个链接了事。可惜无论是在 Wikia 上的页面 还是 Google Groups 上的原文 都在大墙之外。唉~做个天朝的技术人员怎么这么苦呢?为了方便懒得翻墙的朋友,就在这简单说一下设置方法。以下对 Linux 平台适用。

首先,从 MozRepl 的 GitHub Wiki 页面 上安装 Firefox 插件。清注意看装好重启 Firefox 后不会激活这个服务,需要在菜单选择 Tools -> MozRepl -> Start,可以把 Activate on startup 勾选上。

然后,系统中需要有 netcat,请确保 nc 命令可用。

最后在 .vimrc 文件里加入

1
2
3
4
5
6
7
8
9
10
11
12
autocmd BufWriteCmd *.html,*.css,*.gtpl :call Refresh_firefox()
function! Refresh_firefox()
  if &modified
    write
    silent !echo  'vimYo = content.window.pageYOffset;
                 \ vimXo = content.window.pageXOffset;
                 \ BrowserReload();
                 \ content.window.scrollTo(vimXo,vimYo);
                 \ repl.quit();'
 |
                 \ nc localhost 4242 2>&1 > /dev/null
  endif
endfunction

试一下,怎么样?方便吧~Enjoying your coding.

这里有一篇文章指导如何在 Windows 借助于 cygwin 实现 Vim 控制 Firefox 的文章(令人郁闷的是,仍然是墙外 blogspot 上的文章),我没看,Windows 用户自己看看吧。

这真是个造福人类的伟大发明——至少也是造福千千万万 Linux 拼音输入法使用者的小软件:)。其本身依托强大的搜狗输入法云端,整句输入准确率很高。因此作者创新性地省去了边打字边选词的模式,提倡整句输入后以标点符号结束,只在需要时才按 Tab 键调出选词框。而且选词与打字分开的一个好处是:可以用 jkl; 这几个键来选词!这样无形中便节省下了很多的手指移动距离。

具体请看官方的介绍页面:
http://code.google.com/p/ibus-sogoupycc/wiki/Tutorial

附上我的配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ime.use_double_pinyin = true -- 使用双拼
ime.raw_preedit_key = key.Return -- 回车键输入英文
ime.label_keys = { {'1', 'j', key.space}, {'2', 'k'}, {'3', 'l'}, {'4', ';'}, 'u', 'i', 'o', 'p' } -- 令 1234 和空格也可选择最前的候选词,总共八个候选词全用右手选择。我觉得多了再加上左手也无必要。
ime.correction_mode_key  = {key.Tab, key.Alt_L} -- 让左 Alt 键也有开启候选词的功能
ime.set_double_pinyin_scheme{
        q = {"q", {"iu"}}, w = {"w", {"ia", "ua"}}, e = {"-", {"e"}}, r = {"r", {"uan", "er"}}, t = {"t", {"ue"}}, y = {"y", {"uai", "v"}}, u = {"sh", {"u"}}, i = {"ch", {"i"}}, o = {"", {"o", "uo"}}, p = {"p", {"un"}},
        a = {"-", {"a"}}, s = {"s", {"ong", "iong"}}, d = {"d", {"uang", "iang"}}, f = {"f", {"en"}}, g = {"g", {"eng"}}, h = {"h", {"ang"}}, j = {"j", {"an"}}, k = {"k", {"ao"}}, l = {"l", {"ai"}}, [';'] = {"-", {"ing"}},
        z = {"z", {"ei"}}, x = {"x", {"ie"}}, c = {"c", {"iao"}}, v = {"zh", {"ui", "ue", "ve"}}, b = {"b", {"ou"}}, n = {"n", {"in"}}, m = {"m", {"ian"}},
} -- 微软双拼方案
ime.punc_map = { ['.'] = '。', [','] = ',', ['^'] = '……', ['@'] = '·',
 ['!'] = '!', ['~'] = '~', ['?'] = '?',
 ['#'] = '#', ['$'] = '¥', ['&'] = '&',
 ['('] = '(', [')'] = ')', ['{'] = '{',
 ['}'] = '}', ['['] = '【', [']'] = '】',
 [';'] = ';', [':'] = ':', ['<'] = '《',
 ['>'] = '》', ['\\'] = '、',
 ["'"] = { '‘', '’'}, ['"'] = { '“', '”'},
 ['_'] = '──', ['-'] = '-'
 } -- 更改 ()[] 加入破折号

该输入法在 ArchLinux 的 community 源中,只需 sudo pacman -S ibus-sogoupycc 即可安装。
另外,作者已转入 ibus-cloud-pinyin 云输入法的开发,将结合多个云端,期待。ArchLinux 也可以方便地用命令 yaourt -S ibus-cloud-pinyin-svn 尝鲜哦。

PS: 已试过 ibus-cloud-pinyin-svn,是传统的输入选词方式。

之前推荐了 M8 的新 UI 点讯输入法,一个月使用下来,还是觉得拼音中两个字母占一个按键的点化设置不太方便,常常出错别字,而且是对方可能看得莫名其妙的错别字,可能也和我用的是双拼输入法有关。

今天在魅族论坛上看到了 Rokrs 皮肤,下载试用了,感觉不错。虽然按键变小了,但输入可以更准确,一定能大大减少我的错别字。另外在中文输入过程中,点击回车即可输入英文,而之前的可能会有一些麻烦。

只是使用这个皮肤切换手写输入法会不太方便,但,你又能有多常用手写呢?最多偶尔查字典时用一用而已。

有时候可能在在线视频网站上看到不错的讲座之类,可能视频部分去掉无所谓,光听声音就行。跑步或走路时候听也节省时间。

今天就研究了一下。

FLV 视频文件下载使用硕鼠很方便,下载速度也快。网址好记: http://www.flvcd.com/ 他们网站技术看来不错,支持 N 多的视频网站。而且如果你不愿意下载完全版软件。可以每次为你生成一个 500kB 左右的小程序来下载。

转换为音频或其他格式视频,可以用格式工厂,这在任何软件下载站都容易找到的。

关于合并,硕鼠的合并在我电脑上有些问题,而格式工厂没有简单的合并,好像还会更改分辨率,网上找了一个月亮 flv 合并工具,免费,但广告有点烦人。

作者为豆瓣的小飞侠,原文在此。很欣赏这篇文章,与本博客的名字、理念,以及本人逐渐放低的心和努力追求的状态很像。请欣赏……

超链接
2009-08-16 22:57:33
从前有个小孩,他非常爱读书。他常常跑到图书馆里,如饥似渴的打开各种各样的书,觉得里面仿佛都藏了很奇异的世界。

但不知道从什么时候起,他得了一种奇怪的病。每次读到一个抽象的词,比如“正义”,“认同”这样的,他就会发生瞬移,FIU的一声出现的另一本书的面前,在里面打开的某一页是某某人对这个词的解释和看法。有的时候这个人的理论和看法还没看完,他就因为出现了新的抽象词又瞬移掉了。现在他根本没办法读完一本书。

他也不能写这些词。比方说有一次他试图写一封信向饱受困扰的图书馆长说明这个情况,当写到“抽象”的时候就又瞬移掉了。

于是他只能远离书本和图书馆,也不再写字。他背了一个包包,决定走的远远的。一开始这并不容易,因为有些词很厉害,哪怕想一想也会瞬移。有一次他看到一个有钱的公子在欺负路边的一个书生,不由愤愤地想,这不公平!于是又FIU到邻村的图书馆,最近三天的路都白走了。

为了走的远一些,他学习做一个具体的人。比如看到有人在欺负别人直接就冲上去拉开,或者自己赶紧转身跑掉。比如碰到一个很可爱的女孩就跑去找一朵鲜艳的花送给她,而绝对不能写情书。

后来他跟一个木匠学手艺,很勤力的学习做各种家具。做家具开始很枯燥,但渐渐熟练起来便得心应手。人们喜欢找他来订做,因为他总能做出又细致又特别的东西。比如赵小姐用来练国画的书桌上有个小暗盒,用来放镜子和水粉。给王奶奶做的针线匣子盖子内侧嵌一个放大镜,方便她穿针。给邻村张秀才做的扇子可以不断更换扇面,这样他每天摇着的扇子上面都题着他今日心情。他做了一件又一件家具,做个没完,因为人们总有各式各样古怪的需求。他做啊做的渐渐完全不会想起那些抽象的词和奇异的世界了。

有一天他老了,做不动了,就想写一本《实用木匠指南》。他用心的写,详细的画草图,没有出现一个抽象的词,所以一次也没有FIU掉。他写完了书,就死掉了。

再后来他的技艺都已失传,留下的仅仅这本书而已。孩子们把它当科幻小说来读,每每觉得里面有一个奇异的世界。

今天发现了有适合 M8 新 UI 的点讯输入法。因为我在电脑上一直在用双拼,用点讯输入法在手机上也能用双拼了,打字速度更快,很爽。不过这个输入法的拼音键盘把按键两两合一了,还有一点点习惯。

M8 新 UI 点讯输入法 截图

另外在网上找到了 MicroHei 字体。以前就试过在 Linux 系统上使用此字体,很漂亮。到官方网站上下载到了,但是 ttc 格式的。于是上网搜索,发现一个 breakttc 程序可以分割 ttc 文件为 ttf。可惜的是我尝试了 MicroHei Nightly Build 版本和两个 0.2 Beta 版本,都会在输入文字的时候候选文字处显示方框。后来在 dbank 网站下载到一个 MeicroHei.ttf 不会出现此问题。

要更改 M8 字体,使用优化精灵。就用默认的前三个选项开启最后的 ClearType 关闭就行。

要更改 UCWeb 字体,需要把字体复制到 /Windows/Fonts 目录后在 UCWeb 设置里面更改。

UCWeb 中文截图
顺便推荐一下自由的心同学的博客,是翻译的拜伦·凯蒂的文章

UCWeb 英文截图
最近在学习 DatingGroudWork.com 嘿嘿

M8 高达 480×720 的分辨率,dpi 很高,在手机上看这字体很爽。但是截图出来在电脑上可能就没太大感觉。我把上面的截图都缩小了一些。

这个博客的定位是与博主本人没太大关系却是博主(以及来这里的网友们)感兴趣的文章、笔记和信息,偏向于理性和分析,目的是传播价值,而把对多数网友没用的私人日记情绪化抱怨牢骚留在更私人的 yue.st 上面。

这里的程序已经安装好一段时间了,之前我只是默默地写了两三篇日志,现在把博客从根目录移至 blog 目录下,因为我觉得博客还是不要放在根目录下为好,并且我还计划着放一个 wiki 来记录分享一些琐碎的知识。如果因为博客地址改变而文章都在 RSS 阅读器里面重新出现一次,抱歉了。

无论如何,现在这个网站算是慢慢“正式开放”起来了吧。接下来,写一个“关于”页面,把从前的笔记依次整理上来,增加各种网站功能,一点一点增大影响力……

总之,我会用心维护本站的。

这是我第一次尝试翻译,有不足之处敬请指教。如果可能的话,还是推荐直接阅读原文,因为不长,并不难懂。在这里也顺便贴上原文了。这里有一个原文的 PDF 下载

还有什么可指望
这真是一个难题…

作者:特德·蒋 翻译:宇蠢

这是一个警告。请仔细阅读。

现在你可能已经看到预测器了,当你阅读本文时这东西已经售出了上百万个。如果你还没见过这种东西,它其实就是一个小装置,有点像汽车的遥控钥匙。上面只有一个按钮和一个绿色的 LED 灯。按下按钮,灯光闪烁。特别的是,灯光会在你按下按钮前一秒钟闪烁。

大多数人表示,当他们第一次尝试这东西,就像是在玩一种奇怪的游戏,其规则就是在看到灯闪之后按下按钮——很容易的游戏。但是如果你想打破规则,你就会发现你根本做不到。如果你想在看到闪光前就按下按钮,灯会立刻闪现,并且不管你动作多快,你都不可能在闪光后的一秒内按到按钮。而如果你等着闪光,想等到闪光之后不去碰按钮,那光就永远也不会闪现。不管你怎么做,闪光总会在按下按钮前出现。绝无任何例外。

预测器的核心是一个负向时间延迟器——它会把信号传送到过去。等负向延时技术突破秒级达到更高程度的时候,该技术的重大影响将会变得很明显。但这并非本警告的重点。当前最直接的问题是,预测器向人们展示了:所谓自由意志这样的东西根本就不存在。

实际上一直以来就有类似的理论,有基于物理学的,也有基于纯粹逻辑的,而大多数人也都承认这些论点无可辩驳,但从来没有人真正接受这样的理论。我们拥有自由意志这一感觉本身就能强有力地把这些论证通通推翻。这一理论的证明需要的是切实的演示,而预测器带来的正是这个。

通常,一个人会花好几天时间完全沉迷于预测器,向朋友们展示,尝试各种计划以胜过这设备。慢慢地这人就会对预测器失去兴趣,但没人能忘记这东西表现出来的意义——几个星期后,未来之不可变更这一沉重的事实将慢慢潜入心底。一些人,明白了他们的自主意识并不重要,因此而拒绝再做任何抉择。像巴特斯克里文纳斯军团一样,他们不再从事任何自发的行动。最终,三分之一玩过预测器的人必须住院,因为他们不愿意再喂食自己。直到最终演变为运动不能性缄默症,就像是一种清醒的昏迷。

他们的眼睛会跟着眼前的景物移动,偶尔变换个姿势,但仅此而已。移动的能力依然存在,但动力已经消失。

在人们接触到预测器以前,运动不能性缄默症非常罕见,它是前扣带脑区域损坏的结果。而现在它就像一种认知功能瘟疫一样在蔓延。人们过去就推测存在着某种特定想法能摧毁人的思考能力,例如某种难以言说的洛夫克拉夫特式恐怖故事,或是能让人类的逻辑系统毁于一旦的哥德尔式语句。而到头来原来给人致命打击的这种想法我们都遇到过,即:自由意志并不存在。但除非你相信它,否则这个念头不会给你带来任何伤害。

医生们试着在病人还未完全丧失交谈动力的时候与他们争论:在这之前,我们一直都快乐而积极地生活着——他们如此据理力争——那时候我们也同样没有自由意志可言,而现在又能有任何不同吗?“一个月前的你做任何事都并不比现在的你更自由,”医生会这样说,“你仍然可以继续如此行动。”而病人却总是回答:“可是现在我知道了。”并且其中一些人从此再也不说一句话了。

有些人认为,事实上,预测器会导致行为改变这一点本身就证明了我们是有自由意志的。一个机器人不可能被打击而丧失动力,只有具有自由意志的人才会。一些人陷入了运动不能性缄默症而另一些人却没有,这正凸显了主动行事的重要性。

但不幸的是,这样的理由也是错的,因为各种行为都与宿命论相符。一个动力系统可能在某处开始保持稳定,也可能永远展现出混沌的变化,但两者都是完全确定的。

我是从一年后的未来向你传送此条警告的——这是用微秒级负向延时器组建的高级通信器所发送的第一条消息。

其他消息将会紧随其后,指出其他问题。我想传达的信息是这样的:假装你有自由意志。假装你的决定能对未来有重要影响,哪怕你知道事实并非如此。事实并不重要——重要的是你的信念,相信谎言是避免陷入清醒的昏迷的唯一方法。现在,文明的基础在于自我欺骗——或许它一直就是这样。

然而我知道,因为自由意志是一种幻像,谁终将陷入运动不能性缄默症而谁又不会,这也都是注定的。任何人都无法改变这一点——你无法选择预测器对你产生的影响。你们中有些人终会屈服,有些人则不会,我的警告对此毫无影响。那我何苦还发送此警告?

因为我别无选择。

—–
怎么样?读完后,有何感想?有没有心被小小地(或强烈地)震撼到的感觉?如果你喜欢这篇文章,可以读一下特德·蒋的其他小说,豆瓣的特德·蒋小组有几乎他的全部小说原文和译文——别被吓到,因为他的小说都是中篇短篇,总共才发表过九篇,且篇篇经典,都是各科幻奇幻奖的热门。

他的九篇小说中,《你一生的故事》和《商人与炼金术士之门》与本文表达了类似的主题,即宿命、未来和过去的确定性。都很值得一读,说不定读完后能让你有全新的时空观念。

最后附上原文:

Read the rest of this entry

这是我为了解决 Windows 下 Anki 中的 LaTeX 公式而搜索时使用的关键词,因为我有 CTexLive,想直接配置使用 CTexLive,在 Linux 下就我就是这样做的。但在 Windows 上折腾了很久也不行。最后只是下载一个 100M 的 MikTeX 一安装就很容易地把它搞定了。

Anki 是一个很好用的 flashcard 记忆软件。你可以自己建立一些卡片,它会自动根据遗忘周期测试你是否能记住知识点,以帮助你实现长期记忆。对于电脑命令啊外语单词啊数学公式啊之类的记忆都非常有效。把平时学习时该记住的东西托付给它我觉得很放心。而且到考试时还有复习(Cramming)模式。

, , , ,