[不折腾会死][逆袭的Linux] Linux下最强播放器MPD主要介绍+使用体会

上次我花了很长很长很长时间介绍了Win平台上的神器级别的音乐播放器Foobar2000以及其神器级别的CUI皮肤Xchange。那么,Linux平台有没有比较完美的音乐播放器?

答案是没有。其实这个和软件开发者的兴趣取向有关:不同于Win平台,Linux的平台基本上就是各种Linuxer自娱自乐的一个“游乐场”,那些开发者普遍认为,听音乐什么的,只要有一个媒体库,有个播放列表,然后能放就可以了,才不要花我宝贵的打码的时间开发什么多余的乱七八糟的功能呢!(扭头)。没有各种“听音乐发烧友”的那种“比较特别的需求”,自然相对于Win平台就没有什么优秀的音乐播放器了。

当然这是与Win平台相比较而言。如果撇开一切Win平台上听音乐的习惯不谈,慢慢深入他们的“游乐场”,你就会发现他们的播放器非常简洁,功能极其精炼,另外还有近乎无限的“玩头”。我现在打算介绍的Linux平台上的音乐播放器MPD,就是这样的一个软件。

唉,这一次文首为什么没有截图?我也只能回答,MPD就是这样的一个软件。


MPD是什么

MPD是Media Player Daemon 的缩写。大部分人看到Daemon应该能大致猜出他的定位了吧——它是一个后台程序。没有CUI,更没有GUI——这就是没有截图的原因。按照我这个基础知识为0的软件玩家的比较主观的视角上看,MPD更像是一个某个网络服务的服务端。它遵循着Unix系最经典的KISS原则(Keep it Simple and Stupid),它别的不管,专门处理音频文件的播放,以及播放列表(还有媒体库)。如果偏要说的话,更像是每个系统都自带的系统音效模块,就像系统上播放音效那么简单。

光是音频的播放,当然不能够称为音乐播放软件——没有人会把系统的音效播放当作音乐来放吧。因此,MPD除了MPD本身之外,还需要一个客户端作为用户界面和各种信息的处理, 因此诞生了所谓的C/S播放器结构。(C/S即为Client/Server)。MPD专门处理播放的部分,而客户端则则理用户界面,播放控制,媒体库、 播放列表的搜索和处理,以及各种外挂……也可以认为是Core和Shell之间的关系吧,话说Core和Shell也是C/S呢,各种巧合……

当然,也有可能会招致不少人的困惑:一个媒体播放器干嘛要把播放和用户界面分开来?分开来到底有什么好处?我在这里稍微斗胆比较比较MPD相对于Foobar2000有什么优势吧:

  1. 各种用户界面的选择。foobar2000虽然有各种用户界面设置,理论上也近乎无限了,但是始终被框在GUI的环境里面。MPD因为自身没有用户界面,用户界面要靠别的软件来提供,也就是说用户界面真正实现了无限平台化。GUI上我们可以有基于GTK的,基于Python的,基于Perl的,基于Qt的,基于Java的,甚至是终端界面,FF扩展……只要能想到的,就没有什么不可能的。
  2. 用户界面的统合。MPD可以由各种类型的客户端进行控制和查看,也就意味着同时可以在不同的界面上控制并且查看播放器情况。foobar2000的界面设计之妙已经无人能敌,但是MPD则可以把各种客户端合并起来一起使用,每个客户端所带的特色全部吸收进去,恐怕Foobar2000还是要让一步的吧。
  3. 网络化。C/S结构的优势自然就是C和S分开来了,也就意味着C和S之间的联系方式是完全自由的,这就自然而然地想到了通过网络来连接它们。 MPD运行的时候会占用一个网络端口,客户端只要连接到该端口,就可以控制MPD了,只要有网络就可以。这样的话应用方面的优势就很明显了——比如说我的 MPD在一个服务器上面,管理着服务器上的大量的音乐,服务器连接着家庭音响装备,然后我只要有一个客户端软件——无论是服务器本身上面的,还是另外一台 局域网上的计算机上的,甚至是外网一台计算机,甚至是Iphone/Android——只要有网络相连,都可以随意控制它的播放,就像是在本地播放一样。
  4. 多个输出端。既然是专门用来处理音频播放的,自然少不了处理方面的神功能。MPD可以输出到多个设备中,就算是本地的设备也详细到设备ID,音量 控制依赖等等。另外也可以输出到其他的设备,比如http Stream什么的……别小看这个功能,有了这个再结合远程客户端功能,就真正地实现了远程控制和远程播放,远程收听,就等于把音乐放到了云上。我有一段时间在学校里用SSH+Ncmpcpp控制MPD,然后用audacious/foobar2000远程收听家里的音乐,为我的上网本省出了不少放音乐的空间和整理音乐的精力。

综上所述,C/S结构的播放器的最大优势在于C的灵活性和C/S 连接的灵活性。就算C再怎么按照时代的发展进化,S依然不需要进行大幅度的更改,可谓是真正的Unix系软件特色。


安装方法

很多人估计都会觉得MPD非常难折腾,不过实际上还是很简单的——只需要修改一个设置文件就可以了。这里简单描述一下在Ubuntu上安装MPD的方法:

sudo apt-get install mpd mpc mpdscribble

这条命令用来安装mpd和它的命令行客户端mpc以及把mpd歌曲推送到last.fm的mpdscribble。对,就是一条命令。

sudo cp /etc/mpdconf ~/.mpdconf

默认mpd载入的是etc里面的设置文件,而且是root权限运行,我们不需要这样,因此复制到自己目录下。

cd ~ && sudo chmod a+rw .mpdconf

因为复制下来的设置文件只有root权限,所以改变权限使得自己的用户能够读写。

然后用自己喜欢的编辑器编辑.mpdconf文件。建议在自己的home目录下新建一个.mpd的文件夹,然后把conf上面需要定义的几个文件夹 ——playlist_directory,db_file,log_file,error_file,pid_file,state_file等等,全 部改成你新建的.mpd目录下(plylists需要自己新建文件夹)。然后把Music_directory改成自己存放音乐的目录。

再修改output选项。mpd默认使用的是alsa驱动,但是默认设置下会出现独占声卡的现象。于是注释掉alsa里面定义设备的那段(h:w什么的那个),后面基本上没什么问题,个别需要的话把音量控制里面的PCM改成Master,保存退出。

保存退出之后,在编辑/etc/mpdconf文件里的user改成自己的用户名。最后停止自动运行的mpd,再启动自己的mpd,扫描音乐文件夹,大功告成。

sudo /etc/init.d/mpd stopmpd --create-dbmpd

另外还有一个问题就是装好mpd之后,他会在每次开机之后会自动运行root权限的mpd,我们不需要这样,所以取消他的自动运行:

sudo gedit /etc/init.d/mpdsudo gedit /etc/defaults/mpd

把这两个文件里的auto_start改成false即可。

最后用命令行客户端mpc检查一下是否能用。

mpc listall | mpc addmpc plaympc stop

第一条命令是列出mpd上扫描到的所有音乐,然后把这些音乐全部添加到播放列表中,第二行就是播放音乐了。mpc提供了非常基本而又全面的命令行命令,有兴趣的人可以到它的manpage上查看其功能。有时候做脚本的时候还是挺好用的:

man mpc

使用MPD —-各种客户端选择

终于可以放一张截图了么……这是目前我用的所有客户端的合照什么的(不包括mpc),比较流行的客户端有gmpc,Sonata以及CUI界面的 ncmpcpp等,另外个人比较喜欢用firefox的扩展media player minion。另外pidgin的music tracker插件和歌词显示软件OSD Lyrics都支持MPD,因此MPD的多个Client给我们的体验还是非常完美的。我们一个一个来:

Media Player Minion

就像前述,是一个Firefox的扩展。连接成功之后驻留在状态栏上,拥有基本的播放控制。打开主界面之后更是有了很完善的媒体库管理和播放列表管理,播放曲目详细信息查看等,操作界面也是比较友好的。在任意选中曲目上点击右键就可以有可完全自定义的右键菜单,可以进行minion的基本控制,mpc的命令控制和脚本编辑。另外在状态栏上也支持弹出播放曲目信息和快速播放列表切换,可以快速切换mpd服务器和输出模块。还有,这个客户端是目前唯一一个可以把本地歌曲目录下的图片文件作为封面的客户端,其他都是自动到网上搜索什么的。所以这个就变成了我的主要客户端之一。

GMPC

GMPC是Gnome Music Player Client 的缩写。也算是一个比较老牌的客户端了。基本功能非常齐全,比较赞的一个特点就是和Gnome的相对完美的统合性,然后就是歌曲信息的网络化(不同于别的 客户端是从amazon下载封面,他是用last.fm下载封面以及歌手信息,相当于foobar2000的biography)。另外它允许有多视图的 媒体库管理,比较适合拿来管理用。

Sonata

比较经典的一个小巧的MPD客户端。除了小巧,可以有迷你模式之外基本上没有什么特点(啥)好像歌词显示方面比较优秀什么的……呃,我也想不起来了orz

ncmpcpp

主力军之一。CUI界面,反应快到爆,完全的键盘操作,多种视图快速切换,每种视图都有一个功能,功能上可以算是目前所有的mpd客户端之中最强 的。另外由于是CUI界面,因此在远程SSH的时候特别有用,与SSH的L参数进行组合的话就可以一条命令实现远程控制+远程播放的效果。只可惜全文本界 面,没有封面等比较视觉化的元素,不过他的颜色方案也比较到位,大力推荐。


MPD各种使用技巧

第一个问题就是显示正在播放曲目的问题。很多人都希望在IM上显示自己正在听什么歌曲进行分享,在Twitter上显示自己正在听什么歌曲等等。

如果是Pidgin的话非常简单,只要安装一个pidgin插件Musictracker,然后就在它的选项中设置即可。可以直接覆盖状态信息,也 可以通过/np命令直接贴到聊天窗口上,twitter的话直接贴到twitter机器人比如twitalker上,因此可以算是最方便又是最强大的一 种。但是别的客户端比如Gajim,twitter本地客户端等等,要怎么办呢?其实我们可以通过写脚本来解决这个问题。其实说是脚本其实也很简单,就一 行:

mpc | head -n 1 | xsel -b -i

这是三条命令的组合。第一条先用mpc显示当前播放信息,head命令用来提取前面输出的信息的第一行,xsel把提取出来的信息添加到剪贴板上。ubuntu默认没有xsel,你可以到源上去安装它:

sudo apt-get install xsel

这样就大功告成。用compiz的话直接设一个快捷键,等到你想共享的时候按一下快捷键,然后在向粘贴的地方粘贴一下就可以。默认是title - artist的结构,当然你也可以通过mpc的一些额外参数进行修改。具体就参考一下mpc的manpage吧。

总的来说,别看mpc这个客户端简简单单,你要知道,命令什么的最大的优势就是可以随便插入到bash脚本之中,只要了解他,你的视野便能开拓不少。结合MPC和bash脚本可以有很多种技巧,我现在也就不展开了。


总结

通过折腾MPD,我第一感觉就是Linux上的软件从根本上和Win上的软件有着很大的区别:用户群的不同。用户群不同必定会伴有用户群需求的不 同,Win上的软件,无论是Total Commander,还是Foobar2000,还是MirandaIM,都有着“功能全面甚至无限而又相对集中,核心用户较多”等特点,而Linux的 软件则是“功能范畴比较散,单个软件功能单一但是可以与各种别的软件联动,形成分布式结构”的特点,没有核心用户,只有“有需求的用户”,然后根据自己的 需求“组装自己的软件”。可能这个就是开源软件带来的一个非常显著的现象吧。

前几天有个用mac的朋友和我说,哪个软件能够完成我的工作最有效率我就用哪个,就是这么简单的道理。我觉得这个道理虽然简单但是其实还是很复杂, 复杂在于这个“最”字。以前我也说了,使用“最”的时候需要事先定义你的比较范围,就像某个三个代表一样,“最广大人民的根本利益”,人民的范畴和利益的 范畴完全没有定义,就可以让某party自由定制,而使用软件我觉得也是一样的。最有效率的范围就是“在我所认识的所有软件中”,而如果光是使用特定平台 上尤其是苹果的平台上,你的认识是极其有限的。我的意思是,如果我们要用“最”有效率的方法完成自己的工作,我们更多的还是需要寻找“最”,不断扩大自 己”所认识的软件“的范围,不停地更新自己使用软件的方式以及习惯,而不是为坚决使用一系列的软件寻找藉口。

最后摘抄一个六弦アリス的《新興宗教「万華教」》里面的一段歌词:

何が正しいのかと問う 理は数多が常

量るべきはその本質 多数決など論外

试问何为真理 世理常于多数者手中

但我们应衡量其本质 少数服从多数纯扯淡

[たまにはWinソフト][不折腾会死] Foobar2000著名CUI Xchange360初试

本来很早以前就想写的,但是一方面我最近没多少时间泡在电脑前面写文章,一方面这个CUI总体上讲比起别的CUI要复杂很多,于是拖了很久才开始动笔……其实本来是想写Foobar2000的介绍文的,但是由于这软件实在是太神,我无法用几篇文章就把这个软件的所有优点都讲清楚,于是特地拿了一个比较优秀的CUI——Xchange为例,稍微介绍一下Foobar2000的神奇之处。


XChange 简单介绍

以前的神CUI “Kameleon” 的作者开发的下一代CUI皮肤。继承了Kameleon的部分功能(比如”变色”,即每首歌曲播放的时候更换相应的背景,比如界面的快速定制,各种控件的 完美组合以及快速开关等)的基础上,它使用了一个叫WSH (Windows Scripting Host) 的插件,可以让CUI的控件随时地像窗口系统一样改变大小以及最大化与最小化,更方便地进行CUI界面的定制。另外可以保存五个界面的profiles,可以针对特定的需要定制特定的界面。除了profile之外,还有普通视图,迷你视图以及艺术家视图的切换。

使用XChange的准备

  • 电脑配置一定要好。这个CUI的资源占用相当给力,建议用独立显卡。不过在我的上网本(三星N148+XPSP3)上面勉强能跑,姑且可以作为参考.
  • 媒体库一定要整理好。用xchange如果想要一个好的体验的话,媒体库的结构非常重要。起码,标签的统一格式化,文件夹结构的统一是一定要做好的。无损建议分轨
  • 要有网络环境。这个是为了方便网络相关的应用比如biography插件(自动到last.fm下载艺术家以及专辑的信息)。
  • 要有一定的foobar2000使用基础,尤其是CUI的代码编写。虽然皮肤导进去之后基本上也不用改任何东西,作者也提供了一个很方便的选项界面,但是有些小细节还是需要修改代码而实现的。不过难度不高,因为这个作者也很了解大家的需要,于是在每个代码前面都有一个定义变量代码使得别人能够方便修改。
  • 要有长期使用Foobar2000而不用别的播放器的准备。这并不是必要的,但是xchange的设置之自由,使得Xchange本身难以向下兼容到别的播放器对音乐文件的要求。比如说歌词文件保存的文件夹,FB2K的歌词显示插件的保存地址非常灵活,但是别的就没有那么强大了,这就要看你到底需要向下兼容呢还是发誓以后永远用FB2k……嗯,神器就是这样。

安装方法什么的

  1. 下载foobar2000的安装程序以及xchange的配置文件(Foobar2000的安装文件从官方网站索取,Xchange的配置文件在这里,最好全都下下来。嫌网速慢的请使用代理,你知道的)建议重新安装一个Foobar2000,因为有些变量如果已经被别的皮肤设好的话会出现问题。推荐便携安装。
  2. 按装好FB2K之后,在FB2K的根目录下新建一个skins文件夹,然后把Xchange本体放进去(连同Xchange文件夹一起)。然后把 required Component里的插件解压出来放到component文件夹中,Font里的字体文件放到该放的地方。shpeck那个可选,不过这里不介绍,有兴 趣的自己看Manual。
  3. 启动FB2K,选择CUI作为界面,然后进入Preference,在tool——WSH Pad Mod选项中把safe mode前面的勾去掉。这一点很重要不然皮肤会读取出错。
  4. 到CUI选项中进行import,选择xchange文件夹中的fcl文件,全部导入,然后应用。这样就安装完毕了。
  5. 在display选项中把album和artist的图片的位置和规则设置一下,然后应用,最后打开CUI界面左上方的齿轮打开Xchange的选项进行简单的设置,然后按旁边的Info图标关闭about界面,就能看到播放器界面了。

界面定制

接下来就是界面的定制了,不同于经典的CUI设置,Xchange的界面定制完全交给它的插件WSH进行。

仔细看这个播放器界面的话可以发现,每个控件的右上角都有一些类似于窗口按钮的东西,然后在播放器界面底下有一些类似于任务栏的东西。我想各位应该都很清楚这些按钮代表着什么——最大化,最小化以及还原。另外有一个双向箭头的按钮则是替换按钮,由于Xchange的窗口平铺并不是无限的而是最多三行三列总共九个,所以每个控件的取舍和排布则通过替换来进行。替换方式很简单,点击想替换的控件的替换按钮,然后再点另一个控件的替换按钮即可。

另外更详细的布局设置可以通过editor mode来实现。点击菜单栏上的editor mode之后可以发现每个控件的顶部多了几个用来调整布局的按钮。大概有行列变换(因为Xchange默认为三个主列然后每一列随便添加1-3行,如果你要三个主行然后每行添加1-3列则需要行列变换)添加行与列,然后就是改变行列的大小。替换按钮和上面的相同。

另外我们设置过的布局可以最多保存为5个Profile。方法就是在editor Mode下点击右上角的五个像打印页一样的图标进行保存,然后在普通模式下点击载入。保存和载入动作需要谨慎,如果一不当心,你所设置的布局就会前功尽弃。需要注意的是,Profile不仅会记住你的布局,还会记住你的foobar2000窗口大小,所以各种切换相当方便。如果不要它记住的话,可以到Xchange的preference界面去修改。

上面显示过的三张图即为目前我的三个Profile。至于Sound Horizon的背景图为什么那么囧,不要问我……= =


每个布局之间的优化

上面也说了,布局可以最多保存五个,那么有那么多布局有什么用?不同于别的播放器,FB2K的优势就在于界面细到每个布局每个模板的的自由定制,然 而你并不能把所有的东西都扔到一个屏幕上,过于复杂让人眼花缭乱的同时,有些小屏幕比如上网本之类的话会很囧。以前我折腾FB2K的DUI的时候,我偏向 于先做一个大的Tab控件,然后在tab里面开始设计布局,这样的话我可以按照播放,管理以及资料查询等不同的需求设计不同的UI界面,这样看起来比较方 便也比较美观。Xchange的这个设计正好符合了我的这个需求,每个Profile统管不同的需求,在上网本上非常地合适。

显示专辑图片和艺术家图片

通常的FB2K的CUI,都会有一个专门的控件可以显示专辑图片。不过Xchange能够显示专辑图片的地方太多了,在专辑图片控件上,播放列表的 分组上,在侧边栏的专辑列表上,甚至是整个播放器的背景。按照播放的歌曲变换背景,这个也就是上一代皮肤Kameleon名字的由来(Kameleon即 变色龙)

一般专辑封面图片在Preference的display上可以设置。看到这里,技术宅们可能都会激动得泪流满面吧——多行多个候选支持,通配符支持,子文件夹支持,特定文件夹支持,Foobar2000的Title Formatting支持。这就是我前面说的“一旦用上FB2K之后就无法向下兼容别的播放器”的原因所在。别的播放器最多也就支持特定文件夹以及歌曲所在文件夹,文件名规则也顶多支持文件名而已,比起FB2K的设置真的是小巫见大巫。

分组里面显示的专辑封面图片也是跟着display的设置走,但是背景以及侧边栏的专辑列表则不是,我们需要直接修改其中的代码。在FB2K的顶上 右击选择splitter settings,在script标签里的code的前面几行里面可以找到定义cover path的代码,之后你可以发现他用findfile语法实现多个候选,replace语法实现歌曲所在目录,同样也支持通配符和Foobar2000的Title Formatting。不过侧边栏的专辑列表则没有那么幸运了——不支持findfile语法,也就是只能定义一个规则。这个只能说是一个小小的遗憾。

接下来就是背景图片的使用了。Xchange总共可以有三种背景的模式:固定背景图片,背景图片可以设置为任意一个放在BG文件夹的东西;显示艺术家图片,若没有艺术家图片则显示专辑图片;显示专辑图片,若没有则显示艺术家图片。这就意味着,我可以最多显示两类图片中的其中一类,并不局限于专辑和艺术家。 因为专辑图片和艺术家图片的搜索规则是非常自由的,所以我也不一定要显示专辑图片和艺术家的图片。比如说有一类专辑无论是什么艺术家,我都想显示同一张图 片,则只要把关键词写到所有专辑的genre标签中,然后艺术家图片路径上添加一条特定文件夹的genre名的图片即可。(因为我并不是什么音乐发烧友 genre这个标签我不太会用到,所以一般拿这个标签用来按自己的标准分类)于是就出现了上面那张SH的囧图……

与Last.FM的完美组合

但是从网上下下来的歌曲,很少能够找到BK,于是也很少能够找到专辑的封面和歌手的图片,Xchange岂不就没有优势?Xchange自带了一个 叫Biography的插件可以解决这个问题。Biography的功能其实很简单,在播放歌曲的时候自动在last.fm上搜索相关的专辑图片和介绍以 及相关的艺术家图片和介绍。更为重要的是,搜索到的缓存可以转移到任意的文件夹并且命名自由。这里我就不用解释我会把它拿去干什么了吧……嗯

歌词显示

千千静听的核心玩家之所以一直用千千静听而不用FB2K的原因可能就在于歌词吧,千千静听歌词数据库实在是太丰富——当然我是说仅限国内的歌曲。但 是千千静听的歌曲搜索和歌曲显示,歌曲保存相比FB2K新发布的Lyrics Show 2还是有太大的差距,使得千千除了歌词数据库容量之外几乎没有别的优势可言。当然这个不仅是千千,FB2K优秀的歌词插件从功能上几乎打败了市面上所有的 歌词显示插件,而且同样也是不太好向下兼容的。

一个是Title Formatting的完美支持。支持Title Formatting不仅体现在于LRC的文件名上,还在于网上搜索的关键词,保存的LRC文件名,扫描的歌词文件夹,扫描的歌词文件格式,保存的歌词文件路径等等。多数还支持多个候选,语法支持,通配符支持等。这样的话完全可以按照自己所希望的文件夹结构配置歌词文件的位置和格式,而并不用局限于千千那种特定文件夹和歌曲所在文件夹里了。

还有一个是搜索数据库。就算千千的数据库再强大,也应该强不过多达6个的歌词网站的数据库同时搜索吧,况且其中还有一个Asian专用的歌词数据库(不过内嵌的广告也挺多……)。也就意味着嵌入千千数据库未来也有可能实现(部分Linux软件已经实现了),到时候千千用户就等着移民吧= =

然后就是各种详细的功能。包括各个数据库的优先级(先内嵌后关联后本地后网络),以及关联设置,下载内容的控制,同步歌词与非同步歌词之间的分类管 理,甚至可以改变读取和保存内嵌歌词的标签名(非同步和同步分别都可以设置),非同步歌词的自动滚播,文本编码设置,外置歌词编辑器的设置等。实际上我对 歌词的要求不是很高,因为歌词LRC格式本身问题太多,像SH之类的物语音乐,LRC的Timestamp格式完全应付不过来,所以比起同步歌词我更倾向 于非同步歌词。嘛,跟我“好的歌曲就是普通人唱不出来的歌曲”这种标准有关系,对我来说LRC并不是用来跟着唱的而是用来看的,嗯。

其他

我上面也就针对Xchange最突出的几个功能结合FB2K神一样的设置进行了介绍,当然FB2K的神器之处并不止这些,更多地都放在了音乐管理 上。非常强大的转换功能(只要有相应的CUI工具就能支持其转码,还有各种保存格式选项),批量修改标签功能(不止是Title Formatting的支持,更支持从剪贴板按行修改,从文本文件直接导入等),批量重命名音乐文件(同样支持TItle Formatting)内嵌各种东西(图片,歌词,甚至是Cuesheet)rating,Count等等等等。另外媒体库管理功能极其强大,树状图的自 定义,动作的自定义,自动播放列表等等。在全平台上堪称最强。另外小小地说一句,FB2K还是Win平台上比较顺眼的听MPD的HTTP Stream的播放器什么的……千千什么的都放不出来呢orz

[たまにはWinソフト][不折腾会死] 神之通信——粗略介绍IM神器Miranda-IM

IM软件(Instant Messaging),即大家所知道的聊天软件,可以说是非常熟悉的软件了吧,也算是每个网民们必备的软件之一。现在IM软件多种多样,国内使用人数比较多的有该死的QQ和 MSN,在宅界里用的比较多的有Gtalk,Skype等,在Geek界的话更是有万年不衰的IRC。因此支持多协议的IM软件就出现了,为了节省系统的 资源,或者是统一并集合聊天的各个窗口和好友——而Miranda-IM也就是其中一个小小的软件而已。但是由于它与生俱来的各种优势,逐步地超越了IM的范畴,成为目前最强大的多协议IM软件,没有之一。下面就来简单地介绍一下Miranda-IM能带给我们的“神一般的”IM体验。

Read the rest of this post »

[某渣OS相关] 一时休战:我的Windows XP优化总结

对的你们没有看错,由于各种事情的接连发生,我的Ubuntu停止工作了,再加上最近实验室的事情也比较忙要做的事情各种多,所以我不得不在某渣OS上进行工作。实际上我上网本上装的WinXP在自从装好驱动之后就再也没有碰过了…… 因此既然要频繁地转到这个OS就必然地要有一番折腾。鉴于那些从posterous开始关注我的网友们可能不太了解我在远古时代用XP的时候是怎么折腾 地,另外也由于Linux的一番洗礼,我的操作习惯都较以前有很大的变化,于是我想我还是写一篇小文章总结一下,便于以后的翻阅比较。

注:本文章提到的软件我就不写地址了,有兴趣的话请大家Google之。嗯

再注:另外,我要重申一遍,我,是没有傲娇属性滴。各位宅男腐女们请不要随意YY嗯。


截图一张

其实也算是比较老的图了,大概是刚装好的XP的时候的图吧,现在的话稍微有点不同,详细的不同之处可以从我下面的描述中可以看出。

XP用的还是以前的Deepin XP SP3。虽然我们学校提供正版的XP,但是我感觉还是精简版跑起来比较快一些。另外说实话,我确实不太喜欢XP的某些莫名的又没用的功能,所以相对来讲还是精简版用起来比较顺手。为什么不用Win7?我用Win7用下来的感觉就是跟XP没有什么不同,窗口管理器还是那个窗口管理器,文件系统还是那个文件系统,编码还是那个死编码,什么都没有改变也罢了,还有很多东西向下不兼容,而且装回XP还要折腾半天或者全格硬盘才可以。真的可以说Win7除了好看之外还有什么用?

Shell用的是BBlean。BBlean可能有很多人不太了解,简单地说就是Win上的Blackbox桌面环境。用过openbox、Fluxbox的人可能会有点印象吧。特点就是在于快速,自定义程度超高,各种功能简捷方便等。不过经过几年的折腾,我也不高兴再把我的BBlean折腾成功能强大的Shell了,单纯就是为了替换那个该死的explorer进程。对于习惯使用Ubuntu上的Gnome或者是Awesome的我来说,桌面什么的也就是摆设而已,有没有其实无所谓的。

为了适应Linux上养成的多桌面操作以及为了扩大上网本的空间,我调入了虚拟桌面软件VirtuaWin。之 所以调用VirtuaWin是因为BBlean的虚拟桌面有点不足,无法体现出我在Ubuntu上惯用的多桌面系统。VirtuaWin不同于别的虚拟桌 面软件通过扩大桌面大小来达到多桌面效果,而是通过控制各个窗口的隐藏和最小化来达到多桌面的。因此相对于其他的虚拟桌面软件,优势也是非常明显的——可以针对于特定的程序进程设置窗口规则比如划分工作区,置顶,总是显示在所有工作区等。另外比较万能的快捷键操作和快速调用控制窗口,插件模块的加载等,于是就成为了我的首选。

另外,XP相对于别的OS,最麻烦的地方就是在于那糟糕的字体渲染————这也算是一个长远的历史遗留问题吧。以前我都是靠Powertoy的Cleartype来解决这个问题的,不过现在用的是一个叫Mactype的万能字体渲染软件。如果没听说过这个名字的人,可能听说过它以前的名字GDI++吧。以前我也试过使用GDI++来进行字体的渲染,但是一直都以设置困难最终失败而告终。不过现在的mactype追加了一个很友好的设置向导以及兼容系统的各种设置,另外也有很多修正XP那恼人的字体链接的功能,于是用上这个了之后我的XP瞬间就好看了不少——特别是把宋体全部替换成文泉驿微米黑之后。下面便是其效果:


各种应用软件详解

浏览器————自然是Vimperator

用的自然是我的神器级别浏览器Vimperator了,但是Firefox版本还是以前的3.6.10。为什么不用4.0b7pre?不太兼容Vimperator是最大的原因。因为我选择浏览器的理由就是哪个里面有Vimperator我就用哪个,千年不变。嗯?这个浏览器不就是Firefox么?你错了同学,Firefox只是浏览器Vimperator的运行环境而已

至于Chrome要不要装的问题,我觉得还是没有必要有这点精力我还不如装Opera。Chrome有些东西虽然可能比较快捷,但是操作手感完全不如Vimperator,甚至是Opera。详细可以看我以前的文章《铬合金终不敌烈焰————喷析试用最新版Chrome各种不爽》

Twitter客户端————还是Tween吧

截图见上面的mactype演示。说实话Twitter客户端还是日制的比较快捷方便。一开始因为Tween需 要.net framework 2.0的依赖所以没怎么注意这个客户端,但是最近推油里面用这个客户端的人变多了于是去看了一下它的主页(确切地说是它的快捷键列表),大吃一惊———— 感觉我找到了我需要的客户端。Tween这个客户端优点非常明显,支持自定义API,代理服务器,列表+预览模式,丰富的快捷键,超高定制性的list以及NG功能,相关tweets的颜色高亮显示等。也有很多人说这个客户端很丑什么的,我倒是认为比他更漂亮的客户端就只有终端上的termtter了……

不过tween目前有点问题就是日语输入法转中文输入法的时候中文输入法会变成全角,这个可能是因为tween无法保存输入法的状态因此日本人在开发这个软件的时候让他开启输入法时自动变成全角平假名的原故,然后中文输入法就躺着中枪了……比较靠谱的解决方法是养成一个发完推之后关闭输入法的好习惯。另外不切换成日文输入法的话就不会有这个问题,嗯。

IM软件————IM神器MirandaIM

在IM软件里功能最强大的文本聊天软件一定是Miranda IM莫属。高强度定制化的界面高强制定制化的聊天框高强度定制化的弹出窗口模块高强度定制化的安全模块高强度定制化的聊天协议高强度定制化的历史管理……,甚至可以算是一款超越了IM的范畴的软件。当然折腾曲线也非常陡峭,我个人是花了接近三年的时间才把所有的设置和插件使用习惯全部搞清楚……有时间如果还在windows上的话可能会写一篇关于MIM的文章,大家可以稍微期待一下,嗯

文件管理————神器Total Commander

我装在系统里的唯一一个共享软件。不过未注册也能全功能无限期试用,而且功能的细节程度可以算是所有Windows独占软件中是属于帝王级别的。如果放到Linux上去的话估计可以和桌面环境级别的软件拼高低。对这个有兴趣的同学可以到善用佳软的TC学堂里面学习一下,不出两天就能学会。

快速启动————Find and Run Robot

俗称FARR。Donationcoder的东西。作为一个快速启动的软件,它把目标设定在了如何用键盘进行操作的范畴里,所以其实用下来和Vimperator的命令模式差不多的————各种强大。搜索系统,评分系统,以及自定义alias等一个不少,再加上插件的使用,可以算是一个最接近Gnome-do的快速启动软件了。不过貌似以前的插件都不能用了,这倒是一个遗憾。

其他

因为时间有限,所以暂时也就折腾了这么点。目前扔到todo里面的有Firefox的各种扩 展,Vim,Foobar2000,Everything,字典软件,Office之类的。Office目前最终还是入了OOo,用MSOffice我还 是比较有抵抗……如果要兼容性的话顶多再入一个WPS好了,两个加起来也没有MSOffice大,orz

一些需要补充的事情若干

关于Twittperator一直跳出Basic认证的问题

目前网上貌似有很多人碰到Twittperator在用-setPIN认证的时候跳出Basic认证的情况,这个貌似是一个BUG,Twittperator的Commiter正在积极救火中……想继续使用Twittperator的用户可以暂时使用旧版本。旧版本链接在这里

另外安装好旧版本的Twittperator之后最好删除vimperator文件夹里的info文件夹里的twittperator文件,把Oauth信息和缓存全部清空一遍。

关于我的博客的RSS

目前暂时折腾出来了Feedburner托管我的RSS,我的本命博客已经把RSS自动转向了Feedburner上,另外也设置了自动推送到Twitter上,所以订阅我的博客的RSS的同学,请更改一下你们所订阅的RSS,改成http://feeds.feedburner.com/wingofikaros/main。用GR订阅的朋友可以直接点击这里:

添加到Google Reader

我的Vimperatorrc设置

最近开始有很多人问我关于我的Vimperator的设置文件的问题,其实我很久以前就在我的wiki上公布过我的设置文件了,但是那个也差不多已经过时了什么的,今天正好无聊,突然翻到Vim原来原生就有把自己的语法高亮输出到HTML网页的功能,而且就一条命令:TOHTML!对于这个我只能膜拜了……于是重新折腾了一下我的设置文件,视图什么的也优化了不少,同学们可以到这里来围观。另外源文件暂时不打算公开,等以后有空知道怎么去折腾Github的时候再说……不过为了这种事情去折腾Github真是有杀鸡用牛刀的感觉= =我又不是程序员什么的真是乱折腾……

[不折腾会死][Vimperator] Feedsomekey脚本让网络应用程序在Vimperator上不再尴尬

我怀疑我写文章上瘾了……明明自己的中文又不好……都是Markdown的错什么的……

废话不说了,上面一句请忽略……


Vimperator的致命弱点?——成也萧何、败也萧何

Vimperator的确是一个非常强大的浏览器,它的7个模式足够可以让Firefox这个原生并没有多少功能的浏览器瞬间拥有超越任何一款浏览器的操作手感。但是,Vimperator用的最多的模式——普通模式——却有一个致命的弱点,即快捷键的冲突。大家都知道,Vimperator在普通模式上近乎无敌的快捷键功能会和一些支持进行快捷键操作的网站产生冲突,比如Gmail,Greader,Remember the Milk,用Monkeyfly脚本的Twitter等。虽然Vimperator官方为了应付这些情况的发生,特地设置了一个临时屏蔽Vimperator的所有Keymap的 快捷键Ctrl+V和Ctrl+Z(前者是屏蔽一次,后者是临时性永久屏蔽,esc恢复),但是这样很明显只能解决一部分的问题。当然如果按照官方的 Manual,我们可以通过autocommand命令在URL进行更改的时候自动运行屏蔽keymap的命令,但是这样的话会导致该网站上所有的vimperator的Keymap都失效,这个就比较讨厌,如果我设置了q和w作为切换标签的keymap,这个时候我就不能在gmail上用qw来切换标签,更不能用d来关闭标签。虽然这个是小事,但是发生次数多了自然会比较烦。

强大的Keymap功能却导致了很多网络应用的快捷键都有问题。这不得不说是一件比较无奈的事情。


解决方案出世——Feedsomekey.js

于是在网上搜的过程中无意间发现了这个脚本。而从此以后我才了解到了Vimperator在日本近乎疯狂的流行,并正式进入了Vimperator的世界

脚本地址:这里

注意还需要有魔法咏唱必需ITEM:_libly.js

其实这个脚本的功能是及其简单的:

  1. 把特定的Keymap还给特定网站的网页内容。
  2. 可以把特定的Keymap映射到网页内容的指定快捷键上

重点在于第二点。第二点的出现,不仅解决了我们困惑已久的快捷键冲突问题,更值得赞的是实现了给指定的网站自定义快捷键的神功能。


使用方法

使用方法可以参考一下Help文档。载入插件之后,在Vimperator的命令模式里输入这条命令:

:help feedSomeKeys-plugin

就可以看到帮助文档了。如果是日文版的Firefox则会有日文的帮助文档,别的语言的话则是英文的帮助文档。

帮助文档已经很全了,不过可能会有些人会看不懂,于是我先简单地说一下常用的命令。

fmaps -u='urlpattern' keymaps

其中urlpattern为需要指定的网页所匹配的正则表达式,keymaps就是你想发送到网页内容的keymap。如果要实现第二个功能的话,只要keyA,keyB这样填就可以了。举个简单的例子吧:

fmaps -u='mail\.google\.com/mail' c / j k n p o u e x s r a # [ ] ? gi gs gt gd ga gc

这样就可以在Gmail上把下面的这堆快捷键返回给网页内容。当然,我觉得p这个快捷键已经被我的vimperator用掉了,可以这样:

fmaps -u='mail\.google\.com/mail' m,p

这样就可以把Vimperator上的m映射到网页内容上的p,于是以后在conversation上快速跳转就可以只用nm两个键了。m怎么办?Gmail一般用不到m吧ww(注:在Vimperator上m是快速anchor的功能,Gmail想都不用想肯定不会用到)

另外,如果要在vimperatorrc上填写设置的话,需要用autocommand命令在vimp启动的时候自动执行:

command! -nargs=+ lazy autocmd VimperatorEnter .* <args>lazy fmaps -u='mail\.google\.com/mail' c / j k n p o u e x s r a # [ ] ? gi gs gt gd ga gc

第一行是创建一个自定义命令lazy,内容是vimp启动时自动运行某命令,然后第二行就直接用lazy命令来递归。

[小公告] 关于我的Blog的一些总结

因为天朝的脑残最终兵器一直在用地图炮的形式骚扰我的一个又一个BSP,所以我的博客一直在搬一直在搬……反正没什么人看什么的,所以也无所谓,但是最近不知道为什么开始有很多人看了, 我的posterous在GR的Subscriber居然达到了11个!11个不算多?像我以前还在MSN Space乱写的时候流量统计一个月有5个就已经很奇迹了什么的,现在光是GR就有11个订阅者,连Tumblr的RSS也有3个订阅者——可能是我开始 写Vimperator以及折腾软件的相关东西的缘故吧。于是我不得不开始考虑一个相对固定的博客平台了。顺便我在这里也回答一些推油的关于“我的本命博客到底是哪个的问题”,也顺便解释一下我的博客的一些排布情况。


本命博客:http://deepintoabyss.appspot.com

暂时是本命博客(啥)因为目前还处于建造阶段。这个博客平台是用基于Google App Engine的博客平台软件Picky搭建。看中这个作为本命的博客是因为=它有以下几点:

  1. 相对于那些BSP,设置什么的比较自由一点,虽然没有Wordpress功能多,但也够用。
  2. 除了日志系统之外什么都没有。所以应该和Wordpress一样可以自己定制模板以及博客的相关套件。比如DISQUS什么的。
  3. 运行在GAE平台。魔都只要不用https可以免翻墙进行访问。(但是有人说帝都不行,我也没法测试)
  4. 添加日志的时候可以使用Markdown标记语言。可以和那烦人的WYSIWYG说再见了。

不过由于我还是一个HTML小白,以前顶多也就用frontpage什么的来做网页什么的,于是目前在建造这个博客的时候碰到很多很多很多的困难,所以估计要到很久以后才能正式启用。顺便征集一下熟悉博客模板的朋友,主要是我几乎没有什么艺术细胞,搞个博客模板我还是压力很大的……囧rz


中型博客:我的Tumblr

Tumblr的服务比较优秀,它的服务定位是属于介于长篇博客与微型博客之间。只可惜我认识它的时候它已经被墙了……

基于Tumblr的类似于微型博客的Dashboard功能和Follow,Reblog,FAV等功能,所以我们可以利用它来与各个朋友进行广泛的,多元的交流。于是我准备把它作为一个比博客要随便,但是比微博要多元化的分享平台。主要内容估计也就是本命博客内容的镜像,以及网络上感觉有兴趣的东西的纪录,或是小小的戏言之类的吧。虽然以后还会不会有那么多时间泡在网络里……


邮件订阅型博客:我的Posterous

我的Posterous是目前在所有我的博客分身中订阅者最多的,同时也是我想废掉的。理由很简单:非WYSIWYG编辑模式太杯具。 虽然可以使用markdown,但是相对于tumblr和picky,它的Markdown功能实在是太少,而且很奇怪的是code标签一直无效。唯一一 个比较顺畅的写博方式是通过Gmail发送HTML形式的邮件,但是这样明显没有Markdown来的美观和方便。另外Autopost也很杯具,基本上没几个能用的,格式各种问题。

但是Posterous有个比较好的地方就是可以通过邮箱订阅整篇的博客文章。这样的话理论上可以永久性地完全无视GFW的存在,可以让订阅者获得文章的内容。所以以前我本来是打算把它作为本命博客的。不过介于上述的种种原因,我还是决定放弃了——不过还是会更新,内容和本命博客同步,但是格式之类的可能会有各种问题,于是如果是非邮件订阅最好不要订阅,或者说你们可以完全忽略这个博客

P.S.Feedburner貌似也有将RSS内容作为邮件订阅的功能?还不太清楚什么的,改天再折腾……


RSS托管:Feedburner

博客的一次又一次的搬家,订阅人数越来越多,我还是觉得应该把RSS托管给别的服务比较好,于是我最近开始折腾RSS托管了——按猫酥的推荐我选择 了Feedburner。目前还在学习当中,以后熟悉了会把我上述的三个博客的RSS尽量全部并到feedburner上去。不过目前还是Under Construction。

预定以后再公布其RSS地址。目前如果有人需要订阅我的博客的话,推荐订阅我GAE上的本命博客的RSS


有人可能会问,搞那么复杂干什么呢?买个服务器装个WP就能解决的事情?问题是我穷啊……记住一句话,折腾就是穷人的浪漫(大雾

 

[小小的杂谈][音乐相关]神性的流出————谈FFVII著名神曲《One-Winged Angel》

在网络上认识我的人应该都知道,One-Winged Angel————也就是1wingedangel是我在网络上通用的ID之一。片羽、片翼、单翅……虽然还有很多衍生的版本(话说最后一个也太囧了), 但是可能大部分人都不知道这个名称的来历:就是Squaresoft的著名游戏系列《Final Fantasy》系列的史称决定了Sony主机Playstation系列成败的第七作《Final Fantasy VII》里面的VS最终BOSS赛菲罗斯(Sephiroth)时的战斗BGM《片翼の天使》。

说起赛菲罗斯,他是我的第一个宿主。作为一个影子,我只能依靠寄生于各种角色来体现自己在世界里的存在感。另外在网络上与我交流比较深的人可能也知道,我曾经有过三个宿主:第一个是《FFVII》的赛菲罗斯,第二个是《Devil May Cry》的Vergil,最后一个是SoundHorizon的名作《Chronicle》里的Gefenbauer。由于各种原因,我一般会在自己的价值观和世界观发生了根本性的,绝望性的变化的时候会抛弃原来的宿主,然后移动至新的宿主上。嘛……就当作是某刀语里面的某狂犬那样的原理好了。不过今天的主题并不是这个,我们来讲讲这个《片翼天使》吧。P.S.大家可能会发现我的宿主一般都是反派角色……嗯,我比较喜欢反派角色什么的


虾米网的试听:这里试听

上面这个是来自于最终幻想的交响乐合辑《Distant Worlds》。目前据我所知,《片翼天使》总共有原版、交响乐版、钢琴版、再临版、再临完整版、王国之心版等。有兴趣的人可以在网上搜搜看,说不定可以 找到所有的版本。个人比较推荐交响版和再临版,再临版虽然歌词上有所改变,并且风格变成了重金属,但是神曲的地位依然没有变,而且歌词反而更基情了


接下来我们来看看歌词:

Estuans interius ira vehementi Estuans interius ira vehementi (Burning inside with violent anger)(激しき怒りと苦き思いを胸に秘めつ)

Sephiroth ! Sephiroth !

Estuans interius ira vehementi Estuans interius ira vehementi

Sephiroth ! Sephiroth !

Sors immanis et inanis Sors immanis et inanis (Fate - monstrous and empty)(恐ろしく非情に、しかも何の実もなき虚しい運命よ)

Estuans interius ira vehementi Estuans interius ira vehementi

Sephiroth ! Sephiroth !

Veni, veni, venias, ne me mori facias Veni, veni, venias, ne me mori facias Veni, veni, venias, ne me mori facias Veni, veni, venias, ne me mori facias (Come, come, O come, do not let me die) (来たれ、来たれ、愛しの人よ、来ずば焦れて死のうものを   or   どうかお願いです。私を殺さないで下さい)

Veni, veni, venias, ne me mori facias (gloriosa, generosa) Veni, veni, venias, ne me mori facias (gloriosa, generosa) Veni, veni, venias, ne me mori facias (gloriosa, generosa) Veni, veni, venias, ne me mori facias (gloriosa, generosa) (Glorius, Noble)

Sephiroth ! Sephiroth !

整篇歌词为拉丁文。其中括号里的内容为英文和日文的翻译(我就不披露中文翻译了,估计会很囧)

据日本方的牛人考证,歌词来自于《布兰诗歌》(Carmina Burana,又称为博伊伦之歌)的其中五段歌词。关于布兰诗歌,我摘抄一些中文维基里的内容吧:

《布兰诗歌》由写于11和12世纪的超过240首诗歌和戏剧组成,部分配有旋律,大部分为情歌、祝酒歌以及宗教歌剧。 歌词是在1230年写成的,地点在施蒂利亚(Steiermark)的Seckau修道院或者Brixen的Neustift修道院。

1803年,Johann Christoph von Aretin在Benediktbeuern修道院发现了《布兰诗歌》。在把教育从宗教内分离期间,这部手稿——《布兰抄本》——被转移到了慕尼黑,存放 于今天的巴伐利亚国家图书馆(签名:clm 4660/4660a)。

歌词大部分由中世纪拉丁语写成,Johann Andreas Schmeller对此进行了编辑,并于1847年出版发行了《布兰诗歌——来自本尼迪克特教团的歌》一书。

这些歌一方面包含了《布兰抄本》以及旋律的记录。不过,这种旋律的记录只是一种大概的形式,只是对旋律进行了大略的复述;另一方面,通过与其他手抄本的对照,对中世纪旋律进行了重建。

简单地说就是野村爸爸的歌词选择非常地高级……虽然只是杂乱地从《布兰诗歌》中摘取的五句话,但是这五句话很微妙地反映了赛菲罗斯作为悲剧性英雄的起承转合。不得不说非常地脍炙人口。

另外附上再临版的新歌词。同样是拉丁文,但是是野村爸爸原创的:

Noli manere in memoria. (不必在回忆中停滞不前) Saevam iram et dolorem (烈焰般的愤怒,以及荆棘般的思念) ferum terribile fatum (残酷的,恐惧的命运) veni, mi fili. (来吧,来吧,我爱的人) Hic veni, da mihi mortem iterum, (来到这里,把我杀死吧)

qui mortem invitavis, (带来死亡的使者) poena funesta natus, (因破坏之罪而诞生的孩子) noli nomen vocare. (再次呼唤他的名字吧) Ille iterum veniet. (他最终会再次降临) Sephiroth Sephiroth …

这一次没有英文翻译,于是按照日文翻译自己翻了……会拉丁文的欢迎来补充。

由于是原创,所以各个歌词之间紧密地连接起来了,而且更符合赛菲罗斯的心境。不过也还真是够基情的,尤其是第一段最后一句……这不就是在说云受么


另外扯一下Sephiroth这个名字的由来。Sephiroth这个名字来源于卡巴拉思想的核心,即生命之树(Sephirothic tree)。按照卡巴拉的思想,生命之树上有十个被称为Sephira的球以及把他们相互联系起来的22条路(Pass)。它象征着广大的宇宙的同时,又象征着人体的小宇宙,即达到神的境界的精神性路程。因此,赛菲罗斯这个名字是带有一个比较神性的意义在里面的很古老的名字。(当年高中的时候我用这个作为外语课的自己的称呼,结果被某枫叶国老师拿去考证了……那个时候各种囧)

……嘛,具体的因为不是宗教人士我也不太懂,不过比较有趣的是,《FFVII》的女主角爱丽丝的英文是Aerith则是从地球(Earth)演化而来,跟赛菲罗斯这个名字以及云受的名字又有很浓密的关系……

参考文献什么的:片翼の天使  One-Winged Angel

[圣战][谷粉慎入] 铬合金终不敌烈焰————喷析试用最新版Chrome各种不爽

Notice

此博文为圣战文,只是一时无聊蛋疼脑残的博客作者一时无聊蛋疼脑残而写,故不保证其营养价值以及有无毒性作用。如果食用后倍感不适或者是情绪激动者,请及时就医,推荐服用咪唑安定等促进遗忘作用的药物。


火药桶

其实就是因为最近Chrome实在是太嚣张了,实在是让我这个Vimp忠实用户……哦不,是Firefox忠实用户超级不爽。不过鉴于Chrome 已经发展到7这个版本号了,而且周围也有一群人一直在像我吹Chrome多么多么地友好多么多么地快捷方便,我也想嗯,稍微试试折腾一下Chrome看 看,虽然再怎么折腾也不能超越Vimperator,但还是多准备一条路比较好—于是就开始折腾Chrome的设置了。但是,经过我两个小时的折腾,我实在是受不了了差点就想掀桌了差点就想骂了差点就想爆发了,于是最终还是爆发了…………Chrome实在是太不给力了

其实我使用浏览器的路线大致如下:IE, Opera, Firefox, Opera, Chrome, Opera, Vimperator这样。其实用的最多的还是Chrome————至少Chrome在刚出来的时候的确是很吸引人的,当时正好web2.0大爆发么。但是等到使用的服务变多的时候,Chrome就撑不住了……Chrome不是以网络应用为主的么?但实际搞下来并没有太多的优势,反而有很多的不足。嘛……虽然我当时转Opera和Vimp是有一点键盘党觉醒的因素在里面,但是现在再仔细推敲一下Chrome这个软件,我可以下一个结论:Google自己说,Chrome不只是一个浏览器;然后我说,Chrome根本不能称为浏览器。


糟糕的稳定性

Chrome一开始出现在网络上的时候,说的最多的问题就是容易崩溃。虽然Google号称“Chrome每一个标签页都是独立的进程,不会因为一个标签页假死而影响其他的标签页”。但是网上很多人测试下来,一个标签崩溃之后就会导致整个浏览器的关闭,也就是说技术上的确和传统的浏览器不同,但是结局是一样的。这个很容易让人想起IE的时代:IE在崩溃的时候,也是殃及所有的浏览器窗口的。感觉真是出奇地相似!(当然IE虽然是多窗口但是是单进程的,这个只是一个比方而已,不要喷我)

当然不止是崩溃的问题。我在最近使用的过程中,曾不止一次通宵开机的过程中浏览器直接死掉,相对来说Firefox的表现令人满意。


诡异的设置

不说别的,就说代理设置。鉴于国内的网络环境比较特殊,我们一直要使用各种代理的手段来上一些被地图炮的网站。但是Chrome的代理设置实在是太不给力了————直接修改系统代理什么的,因此又跟IE走到一起了。难道就不能费点劲去开发一个独立的代理模块?一个浏览器没有独立的代理服务器设置,还能叫浏览器么?连遨游、世界之窗之类的都有独立的设置!

Chrome不是有代理扩展么?没错是有一个,而且很多人推荐的————ProxySwitchy。它可以和Firefox的著名代理扩展FoxyProxy有着比较相似的功能,但是非常可惜————你可以发现这个也是直接修改系统代理的,只不过是使用它自己生成的PAC文件自动设置而已。然后我就无语了= =当然我上面也说了只是和Foxyproxy有着相似的功能并不是全部,比如按照规则和优先级别自动搭配代理服务器这一点就做不到……因为PAC做不到。


同步什么的

Chrome不知道什么时候开启了浏览器的同步功能,号称是可以同步书签和设置?虽然比起Firefox的FirefoxSync和跨平台特性的Xmarks,功能稍稍有点不足,但是好歹也是一个原生功能,总比没有好————但是实际用下来还是觉得没有最好。 首先在我的网络环境中,这个用不了————比如只开放80端口的图书馆网络。这个时候Chrome会弹出一个提示说有些扩展会无法使用,这个我表示理解 ————虽然我还是无法理解为什么要用别的端口去同步。然后打算给地址栏输入地址的时候奇迹发生了————又弹出了这个提示。也就是说地址栏调用书签又出错了一次。到这里,我也只能觉得无奈了……

书签什么的

书签就不提了,一开始还没有书签管理器,而且还很莫名地久久不填加这个功能。觉得书签管理器是多余的?当然Chrome有着强大的Google搜索引擎和地址栏的搜索功能撑腰,但是你是不是忘了书签除了打开网站还有别的用途?比如小书签啊,GTD阿……可能撑不住大众的需要,后来还是出了一个书签管理器,但是功能却少的可怜————只有树状图和标题和URL,连个标签都没有。Firefox好歹还有关键词设置,Chrome你跟Firefox差太远了吧……就算还有GoogleBookmark给你同步,但是GoogleBookmark的标签你也读不出来那还不是白搭么……

标签什么的

标签的标签化和窗口化,就是Chrome当时展示的一个特点之一。这样可以让用户更方便地整理自己的标签————至少在视觉上。当然每个人的感受不一样,至少我当时用这个的时候是拖了两次玩玩后就没再拖出来过了。理由非常地简单:一个窗口好好的为什么要分成多个?这不自找麻烦么?你说这么多标签放在一起觉得乱,那还不如使用Firefox的那种分组管理标签呢。再说了即将出现的Firefox4.0引入的新功能Panorama,非常方便地解决了多个工作需要的标签管理问题,已经完全把Chrome的标签功能甩在了一边。啥,还有标签的图标化?你在说什么年代的事情了?

地址栏什么的

地址栏和搜索栏一体化,这个也是当时chrome的招牌之一吧。很多人觉得很方便,不过只能方便一个搜索引擎而已。经过我的试用,默认的搜索引擎只能有一个,而且如果要选其他的搜索引擎必须要输入其关键词。这个功能很GEEK,但是你这个时候弄成GEEK专用干什么?搜 索栏自然有搜索栏的好处,Chrome的这个感觉就是硬把搜索功能强行扔进地址栏中,而减弱了搜索功能。你以为firefox不能这么做?Firefox 的书签的关键词功能早就可以实现Chrome的这种搜索功能了,还不算,Firefox的AwesomeBar比起Chrome的Omnibar强不知道多少个档次,只是没有那么高调宣传而已。Chrome在那里吹自己的地址栏有多么多么方便,那只是他们创造出来给谷粉看的幻想而已


悲剧的扩展

Chrome很早就开始支持扩展了,很多人认为这个就是正式开始和Firefox交锋的时刻到了。但是很多人看下来,Chrome的扩展真的是各种悲剧,先不说那些扩展到底有没有用,那些页面优化和操作优化型的扩展,对于首页、安全链接网页、Chrome内部网页,甚至是自己设定的首页,都没有效果。这个说明了两个问题:一个是扩展本身做了一个很要命的限制,导致在这些网页上无法执行扩展动作;还有一个是Chrome并不是在载入首页前载入扩展的,无非就是为了加快启动速度。知道为什么Chrome的启动速度快了吧?它在用户毫不知情的情况下牺牲了很多东西才获得的速度。结果这些扩展都遭殃了。

另外一个小插曲,听说Vimperator小组很早就有把Vimperator移到Chrome的想法,但是一直没能移上去,最主要的原因就是扩展 的限制太多。比起定制性超高的Firefox,Chrome当然不可能会有比它更为强大的定制功能,但是Vimperator的失败至少告诉了我 们,CHrome的扩展无论在什么年代,都是一个悲剧。


最后

本来想也像某文章一样写10项反击一下的,不过也只能写到这里了。总的来说Chrome既是一个好的起步,同时又是一个糟糕的起步。它作为浏览器缺少的东西太多了————当然Google肯定从一开始就没有把它当浏览器看。速度是唯一的优势,但是光是速度是构成不了浏览器的,因为浏览器不只是查看内容,还有用户的操作。查看内容快速,但是操作的减缓,最终的结果还是慢的。比起FF4+Vimp的组合,Chrome的速度根本不值一提,这个不仅是Chrome的设计初衷的缺陷,更是设计上给与开发者的种种限制。好的起步又是糟糕的起步,到头来导致的只有糟糕的结果,没有好的结果。

[不折腾会死][Vimperator] 最强Twitter客户端诞生——支持StreamAPI的Vimp脚本Twittperator详解

首先什么都不说了,仍图一张……

有多少人能猜得出这个是Firefox?这个就是Vimperator专用的Twitter脚本,人称“Twittperator”的查看TL的界面。大家可能都会问了,这除了推之外什么都没有的,有什么用?答案当然是:Vimperator有什么不可能?


脚本地址:这里

注:该脚本还处于开发阶段,大概以平均每天一次的速度进行功能的添加和BUG的修正,所以要用上这个脚本的话,推荐每两三天要看一次更新跟踪作者(们)的博客和推


使用环境

在所有现有版本的Vimperator都测试通过。

假如在天朝的墙内的话,需要有一定的翻墙设备。要求不高,只要能让你的Firefox翻墙即可

推荐SSH+Foxyproxy的组合。


安装

安装过程基本上和Vimperator的各种脚本差不多。

  1. 下载脚本。
  2. 复制脚本到你的vimperator的文件夹里面的plugin目录中。
  3. 重启Firefox即可。

使用

一开始需要进行Oauth认证。输入这行命令:

:tw -getPIN

这样就会跳出Twitter的认证页面。当然选择Allow。然后会跳出一个页面显示PINCODE,这个时候再输入:

:tw -setPIN <PINCODE>

就可以完成认证。接下来你就可以使用Twittperator发推了。(注:前面的两条命令都可以通过自动补完来填写。比如打完:tw -然后tab补全,就全部有了)

接下来就是各种操作了。目前最新版支持的命令有这些:

:tw <TWEET>

发推。除了发推还是发推。如果没有写推的话,就是查看TL列表。缓存的保质期是90秒。即:你用这个刷了一次TL之后90秒内再用这条命令是不会刷TL的而是快速查看TL。

:tw!

无论有没有到90秒,强制刷新TL,忽视保质期。当然,这个功能一旦启动Stream之后就失效了,后述。

:tw!@username

查看某人的推。如果没写username就是查看自己的mentions。在这里,username是可以进行tab补全的,补全的搜索范围是所有的缓存里的推。比如说我想看@1wingedangel的推,只要你的TL缓存上有他的推,那么就可以通过:tw!@1w然后tab补全来快速选择用户名。

:tw RT @username#ID

官方RT。其中的username#ID是可以通过tab补全的,范围和用法同上。

:tw <COMMENT> RT @username#ID

非官方RT。补全同上。

:tw @username#ID

针对一个推回复。补全当然同上。

:tw!+@username#ID:tw!-@username#ID

加入收藏/取消收藏。补全自然还是同上。

:tw!?<KEYWORDS>

搜索关键词。搜索和缓存无关。

:tw!/<URL>

打开推上的URL。补全跟着缓存走,补全的关键词是推的内容

:tw!info<KEYWORD>

查看一条推的详细信息。大到内容,发件人,时间,小到URL,头像地址,背景颜色,回复对象,用户名详细信息等等。


超级定制化

大家可能看到这里都会笑吧:不就一个twitter客户端么哪还要打那么长的命令啊?!命令当然长,当然繁琐,但是你们不要忘了,这个脚本是在Vimperator的命令行上面操作的。也就是说,Vimperator各种键盘映射,热字符串替换都可以使用。我们来看看具体的例子吧。

命令太长?那么快捷键够不够?

Vimperator有着超强的键盘映射功能,可以映射任何一条命令到快捷键上。在这里我们使用反斜杠系来完成快捷键。

noremap <leader>tt :tw<space>noremap <leader>ty :tw!noremap <leader>tr :tw<CR>noremap <leader>ta :tw @

这些键盘映射已经很明显了。反斜杠tt就是发推用,tr收推,ty辅助命令,ta是回复。当然你还可以做的更简约,不过可惜我快捷键太多只能用反斜杠起始了

热字符串替换

Vimperator除了键盘映射之外还有一个强大的热字符串替换功能。因为twittperator的命令都在命令行上,所以我们只需要用cabbrev即可:

cabbrev #v #Vimperatorcabbrev #ff #Firefoxcabbrev rt RT<space>@

上面的意思就是你在命令行里面打#v空格,它就会把#v自动替换成#Vimperator。用这种方法就可以快速输入hashtag。当然不止这些,只要想换什么就能换什么,比如下面我用rt替换RT @,也是为了输入RT快一点的手法而已。这个因人而异,我就不再多说什么了。

看不见字数?用脚本!

可能大家在发推的过程中会在意你的推的字数。用Vimp的脚本之一statstat.js就可以变相解决这个问题。导入statstat.js之后,在vimperatorrc里面输入:

let g:statstat_expression = "let ([,,,as]=commands.parseCommand(commandline.command)) as.length"

就可以在状态栏上显示你的命令参数的字数了。tw命令的参数的字数,就是推的字数嗯。


StreamAPI的使用

前几天作者就在Twittperator里面追加了StreamAPI的功能了。关于StreamAPI我也不太懂什么的,给我的感觉就是可以实时收推的功能。(太专业的我也不懂 = =)只能实时收推,对于一个客户端来说其实也没什么,因为发推什么的都不行。但是,Twittperator 的收推命令一旦加入了StreamAPI,大家可以想象了——起码补全的时候不用事先刷TL,刷TL不再需要等下载的时间,打开来查看就是了。因此可以 说,StreamAPI增强了Twittperator原本比较贫乏的刷推事件。我们来看看如何使用吧。

首先,在.vimperatorrc里面加入这一行:

let g:twittperator_use_chirp = 1

重启之后就可以启动twittperator的streamAPI功能了。如果是墙内的用户,请不要先重启,需要改hosts————到twittperator的脚本里面搜索找到chirpstream.txxxxer.com把它替换为168.143.162.103(域名里的xxxx请自行想像)我一开始是修改系统的hosts,结果没用 = =因此直接改脚本上的地址了。这样,我们就可以免、翻、墙实时收推了。SSH的流量也用不着考虑,很给力。

重启之后,就可以看到效果了。这个时候Twittperator将不会收以前的推,但是会实时接收新推,包括mentions。所以以后回复以及RT都不用重新刷新TL了。

但是每次都打开一次列表很麻烦?我们可以使用这个Firefox的扩展Vimperator的脚本Twittperator的插件TwListPanel.tw来自动弹出新推提示。各种选项参数在脚本上的帮助上都有,而且可以自己修改CSS来进行定制。我现在的话,就是收到新推后5秒钟弹出,最大宽度500,最大高度300,去除时间的显示这样。但是台式不太会修改,各种麻烦比如水平滚动条怎么也去不掉orz……但是提醒的任务也就完成了,没看清楚的话自己再到tl上看就可以了。