google人肉搜索引擎,愚人节的献礼?

google人肉搜索引擎

清早起来就发现google人肉搜索引擎项目正在紧锣密鼓地招兵买马,是真是假呢?地址在这里,真伪自鉴。

关于人肉搜索引擎,我总是把它跟虐猫事件宇宙通缉令、姜岩自杀、7733等事件联系起来,对积极参与搜索力求真相的人肉们表示由衷的敬畏之意。如果他们愿意,你的任何生活细节都妄图逃过雪亮的眼睛的注视。三表曰,“总有一双眼睛在注视着你”。这是江湖必杀技,最凌厉的一种,比血滴子还要致命,比凌迟更让人体无完肤。因此,如非必要,这把尚方宝剑还是仅作龙泉壁上鸣才好,对道德有一种震慑作用就够了,不必频频出击。岂不闻“古来兵者为凶器,圣人不得已而用之”。

如果那么热衷于人肉搜索,那么热衷于把别人的隐私公布于众,请试想自己有没有不可告人之事。如果那么热衷于用板砖拍死一位通奸的妇女,请想一想自已手上有没有罪。设想一下,假如有一天,某位搜索者成了被曝光的对象,而那位搜索者恰好是……

我希望,google人肉搜索引擎只是愚人节的一个无恶意的玩笑而已。

PS:更正一下,人肉搜索的英文是Grassroots search,而不是血淋淋的flesh-search。

几则饭否消息

在饭否上发的几条消息。摘几条作为blog发布。

  • 本来只想喝瓶水,却让奴待你凿西江。本想买颗珍珠头上戴,你却买回那六面玲珑一空箱。郎呀郎,你不揣奴的宛转心事奴不怪,只怪奴素筝调与牛和马,绸缎着与猪和羊!2008-03-10 13:01[偶感,自撰小令]

  • 墙内开花墙外香,
    进墙出墙墙头忙。
    安得一夜西风烈,
    吹倒东德柏林墙。

    --2008-03-10 09:43

  • 自撰打油一首,以博一笑。《长城赋》:

    千年御敌建奇功,
    万里不倒显汝名。
    风霜雨电浑不怕,
    独惧女子哭一声。

    千年之后防火墙,
    无界网络今有疆。
    亦名长城威力大,
    令人追思孟氏姜。

    [长短句] 2008-02-25 14:53

  • 对自己寿命的期望:神智清醒、身体健康地活到81岁,然后安然坐化,无疾而终。为了实现,我要加紧锻炼身体。[lifespan] 2008-02-26 08:17

“偶感,自撰小令”感慨的是为了一个小小的目而付出了太多的代价。

之下两则是歌颂伟大长城的。

最后一则是健身时想法,为了这个目标,坚持!

Baidu HI Invitatation

先后从hecaitousrandy那里得到了百度HI的邀请。本着“送人玫瑰,手留鱼香肉丝”的原则,现在这里广为放送。需要的留下百度ID。

独幕剧·查户口

舞台设置:

08年3月份某日傍晚七点钟左右。北京某区一筒子楼内,rex正在卧室玩红警游戏。不时传来”Insufficient funds”,”Structure sold”之类的声音。客厅虽然陈旧,倒也整齐。厕所内洗衣机正在自动洗衣服。

人物:

  • rex: 男。三十尚不足,二十颇有余。长发,苍白,深目。手指灵活。不时转动脖颈,似有颈椎病。
  • 大妈甲,女,四十岁上下,瘦削,长脸,身材高大,左手拿硬质文件夹,右手拿一支水笔。胸前挂工作证,上面有”XXXXXXXX街道办事处”红色公章。
  • 大妈乙,女,三十五岁左右,微胖,圆脸,身材结实。言语不多,目光警惕、凌厉。胸前挂工作证,上面有”XXXXXXXX街道办事处”红色公章。

幕启。

rex专心玩红警。

大妈甲、大妈乙上。按门铃。门铃响。
画外音:(红警·海豹部队)”A little c4 knocking at your door”。

游戏继续运行着。rex走到门口,透过猫眼观察。

rex: 什么事?
大妈甲:查户口。
rex开门。二人进来。
大妈甲问:您是这儿房东吗?我们是XXX街道办事处的,来查一下租房的情况。
rex:(警惕地问)不是。能看一下您工作证吗?
大妈甲:(笑)好的好的。

rex仔细看大妈甲乙的工作证。
画外音:(红警·黑鹰战机)At your service.
rex:两位请坐。

大妈甲乙坐在沙发上。大妈乙观察家具、墙壁,透过门缝看卧室。

大妈甲:您是本地人吗?
rex:不是。
画外音:(红警·美国大兵)Enemy spotted!
大妈甲:麻烦您拿出身份证、暂住证、租房合同来。
rex:好的,稍等。我在这儿住三四年了都没查过,现在这是?
大妈甲:嗐,这不是8月份举办那个啥么。都查。
画外音:(红警)Construction complete! Unit ready!
rex:哦。查的面够广的。
画外音:(红警·动员兵)For mother Russia!

rex从抽屉里找出了租房合同。从钱包里取出了身份证。

rex:我没有暂住证。
大妈甲:没关系,明天去派出所办一个吧。带上单位证明。现在所有在京的外地人都得办。
rex:大工程呀。
画外音:(红警·盟军工程师)Got the plans right here. 

大妈乙仔细看租赁合同。

大妈乙:怎么这合同只签到08年1月1日呢?
rex:哦,是这样,我们双方都没啥异议,合同就自动顺延呗。
画外音:(红警·盟军工程师)Analyzing schematics.
大妈乙:一个人住?
rex:嗯哪。
大妈乙:在哪儿工作?
rex:XXX。
大妈乙:待遇不错吧?
rex:马马虎虎。
画外音:(红警·天启坦克)It is the judgement day!
rex擦汗。

大妈甲抄写身份证上的内容。
大妈甲:您是北京户口?
rex:哦,是呀。毕业后直接转过来了。
大妈甲:早说呀,北京人还办什么暂住证。等我把租房关系记录上就得。
画外音:(红警·磁暴步兵)Congratulations!
rex擦汗。

大妈甲:现在北京户口不好进呀。
rex:太不好进啦。
画外音:(红警·苏军工程师)I have the information.

大妈甲:好了,都填完了。那就再见!

大妈甲合上文件夹,二人起身离开。rex送出门。 

大妈甲、乙下。
远处门铃响。

画外音:(红警·美国大兵)Who’s next?

幕落。

急就章

善始善终,不能始乱终弃……

1. fanfou.com

原来准备写一个fanfou的工具,现已实现了理想中的大部分功能。关于分享、私信的处理,暂时不在我能力范围之内。不过,倒是有很高的兴趣来学习。

现在觉得,使用Php写这样的工具,把这样的工具放在自己的blog空间上,是不太好的选择。这与采集工具一样,会占用太多的资源,尤其是作为网络程序,不好控制。我曾经设想使用推荐制,限时制,乃至会员制,来限制饭友的使用。但是无论哪种方法都大大地与我的初衷背道而驰。网络给予人的是自由,而不是这样或那样的限制。

现在觉得使用本机版程序是比较好的选择。这样一来,占用的是用户的CPU和带宽,不会对某一服务器造成太大冲击--如果有的话,也只能是可怜的fanfou.com了。不过,我对它的潜力抱积极的乐观态度。

还有一种方法,就是伟大的开源方式了。我准备在做出完整的本机版程序之前--这可能需要太长的时间--先把源代码无私地公开出来,事实上我早已经这样做过了。如果您读过批量抓饭脚本:一次性打包输出自己全部的饭否消息!的话,您知道我在说什么。

我计划把与之相关的几个函数写出来,主要是curl:远程文件的抓取,sqlite:数据库的打开,建立,保存,regex:使用正则表达式对文本进行深度解析。附上详尽的解释,尤其是regex部分。

为什么要先写计划,而不是先完成呢?因为本文的主旨是“善始善终,不能始乱终弃”,我写在这里,防止自己食言而肥,因此立此存照。

2. yeeyan.com

最近在yeeyan.com搜索到自己喜欢的一篇文章,正在翻译。已经完成85%+了,剩下的部分是硬骨头了。我的目标是“举重若轻”,争取把长难句也翻译得不显山不露水,风过了无痕。

目的:别把英语扔远了;把学英语跟兴趣爱好联系起来;做出一点点贡献,增加一点点人气和点击量;为自己干瘪的blog增加内容。

善始善终,不能始乱终弃;防止食言而肥,立此存照。

3. iRegEx.org

早就有建立正则表达式网站的雄心,一向摩拳擦掌,苦练内功,http://fanfou.com/regex就是明证之一。经常在chinaunix潜水的我,前两天突然发现,www.regex.net.cn悄然开张了。就差一步呀!我像彪哥对着泰勒的“尸体”那样滴下了发自肺腑、痛心疾首的泪。为了促成跟该网站的良性竞争,防止它垄断坐大,我毅然决然地推出了自己的网站。由于现在刚刚开始布展,一切都还没有做成熟,一向低调的我就不在这里大事张扬了。我先不告诉大家我做的网站叫“爱正则”。等我做好了,再向大家公布!

善始善终,不能始乱终弃;防止食言而肥,立此存照。

uuid in twitter and fanfou

简要分析了一下twitter和fanfou消息的uuid格式.对于twitter和fanfou,每一条消息都有一个全局的唯一的”身份证号”–uuid.在可视化的操作中,这是不需要的.而使用api来进行统一操作时,uuid就必不可少.

饭否的uuid格式是[-_a-zA-Z0-9]{11},例如jMzxknImnRs,因此理论上可以标识64^11=73,786,976,294,838,206,464条消息; 而twitter的uuid是\d{9},例如609308932,貌似只能标识10^9条消息,即1,000,000,000.不过, 后者貌似可以增加到\d{10,},即开放式增长.早期的twitter消息的uuid号码长度为8,不过没刻意去寻找更短的.

由此作出”大胆推测”,twitter程序员喜欢使用C语言的数组来存储消息;而fanfou的程序员喜欢使用perl语言的散列来存储消息.姑妄听之,没有作”小心证明”的必要了吧,呵呵.

计划编写php版的批量抓饭工具

昨天发布了perl版的抓饭工具.现在正着手把该程序改写成php版.perl的语法虽然我最熟悉,但是它需要curl模块的支持.这无论是在*nix下还是windows下,都需要额外安装才可运行.而对于php,它天生就对该模块有良好的支持;程序从perl转过来,也不费太多周折.我也趁机学习一下php的语法.

计划支持的内容:

  1. 根据fanfou id,批量导出fanfou消息。
  2. 导出的内容有:fanfou消息本身,该消息发布的时间,该消息的id号,形如oj1Wil-g4wk。
  3. 批量删除、分享(自己的消息)。
  4. 使用sqlite实现本地存储、sql语言查询。
  5. 支持标签分类。需要在发布消息时在消息开头或末尾加上[]、[]等分隔符。
  6. 智能的查询功能,支持正则表达式查询,按时间段查询,按页码段(p.1-p.20, etc)查询,

其中,功能1,2均已在perl下实现,4,6也没有多少技术难度.5在正则表达式的支持下,应该比较容易实现.3的功能比较诱人,在fanfou公开的api中,能找到支持.也不难.

年关岁末,时间比较少.争取每天晚上实现一个功能.

只有一项比较头痛:网页界面编程向来非我长项.有没有人愿意助我一臂之力?

批量抓饭脚本:一次性打包输出自己全部的饭否消息!

一直盼望哪位大侠能写个“批量导出饭否消息”的程序。请教过郭万怀,fanfou还没有批量导出全部消息的api。现有的api最多只能导出20条消息。于是我使用perl+curl实现了全部抓取的功能。现在还是perl脚本版的。有对话框界面的不急,慢慢来。

已经实现的功能:

  • 根据fanfou id,批量导出fanfou消息。
  • 导出的内容有:fanfou消息本身,该消息发布的时间,该消息的id号,形如oj1Wil-g4wk。

Todo List:

  • 做成gui版的。
  • 批量删除、分享(自己的消息)。
  • 使用sqlite实现本地存储、sql语言查询。
  • 支持标签分类。需要在发布消息时在消息开头或末尾加上[]、[]等分隔符。

如果您想批量导出自己的fanfou消息,同时知道如何运行perl脚本,那么直接改动下面的脚本即可;如果您不愿自己动手,我可以代劳。您只须加我(zhasm)为好友,然后饭密我一条消息,发个请求即可。这是为了保证您要抓取的,是您自己的内容。敬请谅解。我会在最晚2个工作日之内发给您。

饭密给我的消息,可以包含如下内容:

  1. 您的邮箱。
  2. 分隔符,默认是tab,您也可以;、,诸如此类。
  3. 序号(1-N,还是N-1.默认是n-1)。
  4. 是否加上时间戳。(默认包含)。
  5. 是否加上消息的id. 此处指的是fanfou为您每一条消息自动生成的形如oj1Wil-g4wk序列号。如果您不明白此为何物,可不必包含此项。如果批量删除或批量分享,则保留此项。

好了,以下是代码部分,附有注释。您如果在您的机器中运行此代码,需确保安装有WWW::Curl::Easy模块。需要说明的是,该脚本的运行速度取决于网络速度与机器自身速度。在我的机器上,抓取700余条消息大约花费3分钟时间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl -w
#
# this script is to grab all the fanfou items for the given id.
# rex.zhasm rex[at]zhasm[dot]com
# 27 jan 2007
#
#
 
use strict;
use WWW::Curl::Easy;
my $output="output.txt";
open(OUT,">$output") or die "can not open file to out put!";
#print all the messages into the file: output.txt";
 
my $id="zhasm";			#specify the user's id.
my $url = "http://fanfou.com/".$id;
 
# Init the curl session
my $curl= WWW::Curl::Easy->new() or die "curl init failed!\n";
$curl->setopt(CURLOPT_URL, $url);

雪夜驻林畔

读了和菜头《莲波体》一文,很有晒晒旧文的冲动。这种冲动,就跟孔乙己之流唱黄梅戏“我也曾赴过琼林宴,我也曾打马御街前”的感觉一样,看到别人谈诗论赋,也禁不住想起自己的往昔岁月。“吟安一个字,捻断数茎须”、“两句三年得,一吟双泪流”。尝试过诗译的人都知道其中甘苦。

在大二时,看到英语精读课本中附了一首小诗,Robert Frost的《Stopping by Woods on a Snowy Evening》,就花费了周日下午两个小时的时间,把它翻译为古体。昨天翻箱子没找到,就从网上搜索了一下原诗。幸而还能回忆起译作,记在这里,以资回忆。

horse300

Stopping by Woods on a Snowy Evening

By Robert Frost

Whose woods these are I think I know.
His house is in the village though;
He will not see me stopping here
To watch his woods fill up with snow.

My little horse must think it queer
To stop without a farmhouse near
Between the woods and frozen lake
The darkest evening of the year.

He gives his harness bells a shake
To ask if there is some mistake.
The only other sound’s the sweep
Of easy wind and downy flake.

The woods are lovely, dark and deep.
But I have promises to keep,
And miles to go before I sleep,
And miles to go before I sleep.

雪夜驻林畔

翻译者:rex.zhasm

谁家林苑我自知, 苑:养禽兽植树木的地方。
山村有君矮茅茨。 茨:用芦苇、茅草盖的屋顶。《谷口书斋寄杨初阙》:“泉壑带茅茨,云霞生薜帷。”
我赏君林君不见,
琼花飘落雪满枝。 琼花:喻雪花。

幼驹踟蹰思茫然, 踟蹰:徘徊不前的样子。《陌上桑》:“五马立踟蹰。”
驻足之处无人烟。
横柯郁郁冰湖阔, 横柯:纵横的树枝。《与朱元思书》:“横柯上蔽,在昼犹昏”。
此夜全年为最暗。 郁:茂盛。

鸣銮振辔驹心惑, 銮:古时皇帝车驾所用的铃。
困顿于此谁之过。 辔:马笼头, 马缰。《木兰辞》:“南市买辔头”。
万籁俱寂唯雪飘,
雪飘又被风吹过。

长路漫漫幽林窅, 窅yǎo,喻深远。
风雪兼程为应邀。
安得暖榻度残宵,
安得暖榻度残宵。

分析:该诗的英文部分不难理解,读起来也琅琅上口。翻译时难点之一是押韵。细读原诗,其韵脚格式为:
aaba,bbcb,ccdc,dddd,即,每段一二四句押韵,第三句决定下段的韵脚。到第四段收尾,三四句重复。

在翻译时,又加上了很多小零碎,以便凑字数。明眼人一望可知。为了押韵,(即使只是粗粗地押韵),不得已用上了生僻字,例如“窅”字,我估计这一辈子,这个字也就用这一回而已。

其实,一无挂碍的地方最洒脱,例如最后一句,安得暖榻度残宵(And miles to go before I sleep),我认为是整篇中翻译最好的句子,虽然不像其它句子那样形似。

读完拙译,再来看:

Down by the salley gardens my love and I did meet;
斯遇佳人,仙苑重深

She passed the salley gardens with little snow-white feet.
玉人雪趾,往渡穿林

……

相比之下,“斯遇佳人”这首,翻译得浑然天成,完全没有斧凿的痕迹,让我汗颜不已。

自思涉猎多个领域,每个领域都浅尝辄止;到处始乱终弃,未曾从一而终。因此也就每个领域都达不到深入的境界,惜哉。

从asm到perl,我的编程之路

我首先知趣地声明:本人对编程只是有着叶公之好的门外汉,此处只表达本人粗浅认识和想法,充满着大惊小怪的大呼小叫;见怪不怪的业内大牛请绕行。

asm篇:暗黑破坏神

余生也早,接触计算机却晚,是在01年4月份与计算机喜结良缘。大约是02年,刚喜新厌旧地把basic扔到一边,在自学C语言。听人吹嘘asm的强大(硬件级控制),心痒难耐。那时觉得,只要学习了asm,基本上直接就进入黑客大牛级别了,就仿佛刚上学前班的一个牙牙学语的儿童,忽然得知了一条保送清华博士后的捷径。

那时引以为自豪的是当时用turbo C编写了一个黑白棋程序。我的梦想是把它转换成asm语言版本和vc版本。使用asm是为了锻炼自己功力,使用vc是为了把编出来的程序让别人使用。毕竟,在dos界面下编写和运行程序,总觉得寒碜得掉渣。

买了本清华的汇编教程自己啃。一上来就是胡天胡地的寻址和林林总总的中断。太抽象了。后来在西单买了本影印版的《IBM PC汇编语言程序设计》。两相比较,感觉清华的书像是写给业内人士的,适合当作reference;而IBM这本书,读起来才是写给初学者的tutorial,引导你一步步入门。虽然是影印版,但是用到的生词也就那几个,记住之后一劳永逸,比起清华的佶屈聱牙不知所云还是好懂多了。这一阶段的猛攻为计算机英语阅读打下基础。以后我接触的其它编程资料,都是直接阅读原版,资料比翻译过的更齐全,更权威。

把这本书啃完,觉得8086的历史已经一去不复返了,32位平台下的编程才是正途。

于是也搜索到了Iczelion’s Win32 Assembly教程。逐一细读,测试,天天泡罗云彬的汇编乐园,aogosoft的bbs,老罗的缤纷天地。masm32 gui 的问题也解决了,写出了几个自娱自乐、自给自足的小程序。对masm32+数据库(ODBC)的编程上,也有了自己的一点心得。

当时学asm,还有一个很XX很XX的念头在里面:破译注册码。这是最令初学者心动念头,在人前摆酷也是立杆见影。有一点点汇编的底子,入门还是不费多大力气的。最简单的是爆破,就是找到类似 if(测试码正确) 的地方,改为if (测试码不正确)。不过,最有成就感的,还是调试,跟踪,找出算法,写出注册机。我当时最高成是,为豪杰解霸家族的一系列产品作出一个N合1的注册机。当然是只限于测试使用,没有傻到把它发布到网上去。时间应该是2003年,托非*典的福,我有足够的时间来潜心跟踪算法。再往后,就对破解这个领域失去兴趣,就跟孙悟空跳到了如来的掌边,画个到此一游的记号,撒泡尿就回来了,没再往前跨出一步。

Perl篇:仙剑奇侠传

我一直纳闷(和庆幸),在原来我们的大学里,这所纯文科的学校图书馆,怎么会有perl的骆驼书。我只是好奇地翻开看了几眼,却与perl结下不解之缘。由于知道了一点点perl的语法和正则表达式的皮毛,我才拥有了文本解析的强大武器。正如Jeffrey Friedl在他的《Mastering Regular Expressions》里面说的,“一旦你拥有了它,就会不由自主地想,在没有它的日子,我可该怎么过”。在此之前,我曾幼稚地以为,哪里需要什么与正则表达式,notepad和m$word里的搜索替换功能不是挺强大的么?

自学计算机知识以来,给我震撼最大的两样东西,一是二叉树,另一就是正则表达式了。前者为我解释了在海量数据中如何快速精准定位的理论实现,后者为我展示了高级搜索替换的不二法门。1024个数据,如果按照二叉树作好排序,可以最多只比较10次,就能找到所需数据。大量文本,只需要一条s/patterns/newvalues/g;就能把内容全部替换为目标值。(虽然它对ASCII码类的支持,比UNICODE的支持,更自然一些。谁让这是洋鬼子发明的呢?)我像菩提门下那只手舞足蹈的猴子一样,满心喜悦,溢于言表。

以我迄今所知,只有perl这种语言,能与正则式无缝链接。其它的语言跟正则表达式之间,都有着隔靴难搔之痒。从asm的角度来仰望perl,简直不可思议。比如正则匹配的if ($var =~ /regexstring/),比如散列赋值的$hash{key}=value…这种感觉,仿佛是瑞士手工作坊里的老钟表匠,到日本参观了现代化的电子表生产线:自己一点点地实现,并非不可能,或许还能细心、从容、优雅地打磨得更精致;但是如果想提高效率,则非生产线莫属了。你知道每一个细节的原理流程,你知道每个齿轮精确到微米的直径,你的手感比灵游标卡尺还要灵。可是,你做得慢腾腾。

我是如此地醉心于perl的语法,时常编写几行程序满足自己对文本解析的需求,在windows/linux中都不在话下。但是,如果不只是自娱,还要“愚他”的话,就该考虑gui了。asm的gui我熟,因为它走的是c语言的sdk+api的路子,教程多多,而且有庞大的MSDN作后盾,不愁找不到资料。这是一条根正苗红的贫农路线。但是对于perl,想实现gui,该何去何从呢?

我曾经退回到asm阵营来,尝试让masm32+gui支持regex,自己写过引擎,以失败告终。但是即使支持了regex,能高效地实现散列么?perl高效的语法让我的asm自惭形秽。是呀,perl曾经放过豪言:perl一句,顶其它语言数十数百句(这是从语法简洁度上来说的,跟执行效率不成正比,跟政*治更不搭边,不许联想)。

于是,我尝试了tk,但是感觉不爽。之后热情冷却下来,在perl和asm之间游离。终于,又发现了wxWidget。在语言上,它支持c++,c#,Python,Perl;在平台上,它支持Windows,*nix,Mac。不错,很不错。我就是需要这种两栖乃至多栖的东东。

书从疑处翻成悟

正如书中交待,wxPerl的特点是:It is less Perlish – but it’s more OO。对于怪异的语法,我有独到的武器:手抄代码。这仿佛是“理解的要执行,不理解的也要执行。在执行中加深理解。”

这一武器,我在c中用过,在c++中用过,在数据结构中用过,在asm中用过……结论是屡试不爽。我一遍一遍地读代码,抄代码,思考代码,改变一点点,加入一点点,自然就理解了。渐悟和顿悟的感觉都很爽。就像多年前有次做完家教返校途中,公交车上,我突然理解了MFC,哦,原来就是封装呀。假我以时日,我也能把masm32封装成面向对象的,高度集成的MF·MASM32。那一刻,我有着与阿基米德从浴缸中跳出相类似的喜悦和冲动。虽然自己编写MFMASM32,就跟“给我一个支点,我就能撬动地球”一样,是以把自己的能力夸大无数倍的前提下发出的豪言壮语,但是侧重点在于“寡人悟到了!”这个悟的过程以及所悟到的内容的理论可行性,带着难以言表的快乐,与微微的自豪感。

屠龙之技

我一直把编程及其相关的学习当作业余爱好来对待的。有时也在反思,是不是为了不必要的富兰克林的哨子,花费了太多的代价。业余时间,有人爱看球赛,有人演算哥德巴赫猜想,有人背诵圆周率,诸如此类,热衷于各类不损人不利人的活动,并能从中找到让自己满足的小快乐。以前读过毛姆的一本书《刀锋》,不明白那个经历过生死,周游过世界,读过了吠陀经,最终领悟了人生真谛的拉里,为什么想去做一名的哥来了却残生。现在想来,也不错。