Skip navigation.

Fat R笔记……与减肥无关

Fat awful terrible Rubbish-bin

Chinglish(转载)

在各个英语学习论坛上,经常可以看到有关Chinglish(中式英语)的文章,但一般都是中国人写的。不过我看到一篇长文,也是有关Chinglish的,但却是美国人写的,很有意思。这篇长文的标题是Chinglish 2 English(从中式英语到标准英语),作者是浙江大学的美国外教Chuck Allanson,内容则是Chuck在中国五年任教期间所听到、所看到的各种Chinglish说法。

比如Chuck第一次来中国,下飞机后,负责接待他的东北某大学英语系陈老师说:您刚到,我们吃点饭吧。我们要点Chinese dumpling(饺子)和Chinese beancurd(豆腐),您看可以吗?Chuck以前从未听说过这两种东西,但出于好奇,就说可以,结果饭菜端上来一看,原来就是ravioli(饺子,来自意大利语)和tofu(豆腐,来自日语)。Chuck当时心里暗想,这两种东西,国际上早已经有通用的说法(ravioli和tofu),他们中国人为什么还要用那种生僻的说法呢?以后Chuck跟陈先生混熟了,就问他,当初你为什么不说ravioli和tofu呢?陈先生听了大吃一惊,连忙解释说,我真的不知道这两个词,而且我们的《英汉词典》上也没有这两个词。

于是Chuck开始意识到,中国的英语教师、英语课本、甚至英语词典肯定存在问题,否则不可能发生这种事情。在中国五年的任教期间,Chuck收集了大量的Chinglish说法,从中挑选出一组最常见的,编写了上面提到的那篇长文。下面就是这些Chinglish说法,其中每行第一部分是汉语说法,第二部分是Chinglish说法,第三部分则是英语的标准说法。

① 欢迎你到... ② welcome you to ... ③ welcome to ...

① 永远记住你 ② remember you forever ③ always remember you(没有人能活到forever)

① 祝你有个... ② wish you have a ... ③ I wish you a ...

① 给你 ② give you ③ here you are

① 很喜欢... ② very like ... ③ like ... very much

① 黄头发 ② yellow hair ③ blond/blonde(西方人没有yellow hair的说法)

① 厕所 ② WC ③ men's room/women's room/restroom

① 真遗憾 ② it's a pity ③ that's too bad/it's a shame(it's a pity说法太老)

① 裤子 ② trousers ③ pants/slacks/jeans

① 修理 ② mend ③ fix/repair

① 入口 ② way in ③ entrance

① 出口 ② way out ③ exit(way out在口语中是crazy的意思)

① 勤奋 ② diligent ③ hardworking/studious/conscientious

① 应该 ② should ③ must/shall

① 火锅 ② chafing dish ③ hot pot

① 大厦 ② mansion ③ center/plaza

① 马马虎虎 ② so-so ③ average/fair/all right/not too bad/OK(西方人很少使用so-so)

① 好吃 ② delicious ③ good/nice/tasty/appetizing(delicious在中国被滥用)

① 尽我最大努力 ② try my best ③ try/strive(try的本意就是try my best)

① 有名 ② famous ③ well-known/renowned/legendary/popular(famous在中国被滥用)

① 滑稽 ② humorous ③ funny/witty/amusing/entertaining

① 欺骗 ② to cheat ③ to trick/to play a joke on/to con/to deceive/to rip off

① 车门 ② the door of the car ③ the car's door

① 怎么拼? ② how to spell? ③ how do you spell?

① 再见 ② bye-bye ③ bye/see you/see you later/later(bye-bye有些孩子气)

① 玩 ② play ③ go to/do(play在中国被滥用)

① 面条 ② noodles ③ pasta(noodles有些孩子气)

① 据说 ② it is said ③ I heard/I read/I was told

① 等等 ② and so on ③ etc.

① 直到现在 ② till now ③ recently/lately/thus far

① 农民 ② peasant ③ farmer

① 宣传 ② propaganda ③ information

使用SATA硬盘后的待机问题

,

我的主机(Epox的9nda3i,NForce3芯片组)原先采用的是两块PATA硬盘,现在由于其中一块烧掉了 (意味着JavaMagic有排不能更新了,虽然现在我也没空去更新……)换成了一块SATA

可是问题来了,换了SATA后待机居然就不能正常唤醒了,要么开机后屏幕黑掉只剩鼠标指针可以动,要么就是可以看到wallpaper,但仍然只有鼠标可以动。后来重新装了一个系统,稍微好一些,唤醒时可以看见登录框,但输入密码后就freeze了,现象很像以前硬盘掉电造成的freeze。于是就怀疑起硬盘来,后来发现把PATA拔了居然就可以正常待机并唤醒了,但只要插上PATA就必然不行(我试过手上若干能被BIOS辨认出来的PATA都这样,只有BIOS辨认不出来的才能幸免)。

由于不知道到底是跟BIOS有关还是跟驱动有关,现在又是赶论文的关键时期,不敢赌rp去烧bios,于是只好尝试不同的驱动版本。然而试了n款,包括非官方和官方的,无论新旧,都存在这个问题。后来发现,把NForce的SW IDE驱动卸载,用回系统自带的atapi驱动居然就正常了,唯一不爽的地方是开机进系统的时候要检测n久。

再后来,发现用SW IDE驱动时,在BIOS里面把PATA硬盘设置成None,居然也可以待机了。不过那破驱动会把硬盘的Transfer Mode自动检测成DMA 2,要在设备管理器那里去掉"Let BIOS select transfer mode",并手动指定成最高的传输模式。虽然还是不爽,不过也只能这样将就用着先了。

另外,在网上搜索了一下,似乎讨厌NForce SW IDE驱动的人也不少。这里还有一个有趣的benchmark,似乎系统自带的驱动性能也不差嘛……
http://www.nforcershq.com/forum/benchmark-ms-ide-vs-nforce-ide-updated-vt56754.html

这里讲到了卸载NForce IDE驱动的方法:
http://forums.nvidia.com/lofiversion/index.php?t12773.html
即,可以在添加删除程序那里用卸载程序卸,也可以在设备管理器的IDE ATA/ATAPI控制器下,选择右键菜单的“更新设备驱动”,在向导中选择指定安装,不要搜索,然后就可以在向导里看到“标准双通道PCI IDE控制器”,也就是系统自带的驱动了。

一个可能有用的userjs...

,

嗯,虽然Opera不支持ActiveX控件,导致一些下载网站的“***专用下载地址”不能点,但通过UserJs还是可以把那个地址对应的URL挖出来……

这是我写的一个简单的UserJS,就是用来干这种事的。目前它只支持FlashGet和迅雷两种下载器的专用下载连接,但通过源代码很容易就可以添加对"超级旋风"之类的其它下载器的专用链接的支持。

它的工作方式很简单,"模拟"了一个ActiveXObject类以及一些相关的方法来欺骗浏览器,比如FlashGet就模拟了IsVersion2()和AddUrl()两个方法,并在AddUrl()方法中打开一个新的窗口,把url显示出来

我并没有限制这个UserJS的作用区域,因此直接野蛮地模拟ActiveXObject也许会带来一些副作用……

而对付迅雷采用的方法则是直接重写OnDownloadClick_Simple()方法。迅雷的下载url是这么写的
 <a href="#" thunderHref="thunder://****" thunderPid="00009"  onClick="return OnDownloadClick_Simple(this)" oncontextmenu="ThunderNetwork_SetHref(this)" class="a_tlan14b" >使用迅雷下载</a>

所以直接重写OnDownloadClick_Simple()方法并把连接中的thunderHref属性显示出来就可以了
然而这样的方法也有副作用,就是所有叫OnDownloadClick_Simple()的方法都会被干掉,不知道会不会有误伤……

以后有空再看看能不能加一些判断把代码弄得严谨一些吧……

下载地址
flashgetshowurl.js

晕了,Word的自动编号功能

,

自动编号功能在写论文的时候非常有用,在调整章节标题、图表位置时其编号也会随之变化,并且还可以在文章中交叉引用,省去了手工操作的麻烦。然而今天尝试为图注按章节编号(即图2-1 xxxx的格式,表示第二章的第一张图)却遇到了巨大的挫折,插入图注时选择“包含章节号”并选择起始样式1时,word提示“题注或页码中不含章节号”(神经病Word,那么大一个章节号在标题中你看不见么……而且为什么会在“题注”和“页码”中找章节号啊你 )如果强行插入,文档中就会显示“错误!文档中没有指定样式的文字。”Word的帮助基本上是废的,后来折磨了半天我才总算搞明白到底该怎么正确使用自动编号的功能。

按我的理解Word里面的样式是可以“继承”。在样式修改窗口中有一栏“样式基于”选项,在这一选项中可以选择当前样式继承了哪个父样式的所有设置。我以前认为,只需要在“段落”的“大纲等级”那里正确设置了等级,就万事无忧了。反正目录什么的应该就是靠文本的大纲等级来生成的。所以我之前的做法是新建一个基于标题1的样式,然后把字体编号什么的修改成我需要的,然后应用到我的章标题上,二级标题同样是基于标题2修改。这样一直用着倒也没什么问题。

然而这正是灾难的根源。

通过研究发现,插入包含章节号的图注时实际上插入的是两个域:
{ STYLEREF 1 \s }-{ SEQ 图 \* ARABIC \s 1 }

第一个域就是章节号,第二个域就是图编号。在“插入”-“域”菜单可以手工插入这两个域,域的参数含义也可以在插入域的窗口中查看到(但StyleRef域的\s开关似乎没有说明)。
我之前基于标题1样式创建了MyTitle1样式作为我的章标题样式,通过StyleRef域的参数说明,我把它改成
{ STYLEREF  MyTitle1 \n \t  \* MERGEFORMAT }

这样可以正确用数字显示我的章序号了,而问题是SEQ域的\s 1开关没有生效,在新的章节里它的编号还是继续累加,没有重新设置为1。即使把它改成\s MyTitle1也仍然不行。

然后,我终于发现上面给出的那个Word自动插入的域代码不认可我设置的标题样式,是因为它只会认名字为“标题 1”的那个内置的样式,而不会认我的基于“标题 1”的样式。这样想其实也对,毕竟叫“标题 1”的只有一个,而基于标题1的样式却可以有很多。

因此,正确的做法是这样:
- 打开“样式和格式”侧边栏(菜单项“格式”-“样式和格式”,或工具栏样式列表左边的那个按键)
- 侧边栏下方的“显示”选择“有效格式”
- 右键单击 "标题 1",选择“修改”
- “样式基于”选择“无样式”(当然也可选择想继承的样式)
- 修改成自己需要的风格
- 样式名称可以改,但改完之后会变成“标题 1,MyTitle1”这样,相当于为内置的一个样式增加了一个别名(我的理解)
- 将其应用到标题上
- 如果对效果不满意,不要直接在标题上改,仍然是在“样式”中改(除非选中了“自动更新”,反正一定不能修改后会自动生成一个基于“标题 1”的样式)
- 确认应用在标题上的是“标题 1”而不是基于它的子样式,这时就可以正常使用图注功能了

另外,编号的时候也要注意要针对每一级的标题分别设置编号方式。以三级标题为例,设置如下:
- 修改“标题 3”的样式,打开“修改样式”窗口
- 左下角的“格式”选择“编号”
- 选择“多级符号”,然后随便选一个(最好是选接近自己需要的那个),点“自定义”

呃,我错了,正确的方法是:
- 点击菜单项“格式”-“项目符号和编号”
- 到“多级符号”标签页中,选一个接近自己需要的样式,点“自定义”
- 点击“高级”按键
- 编辑级别1的样式,注意“将级别连接到样式”那里选择“标题 1”(如果不做这一步,后面的级别的一个个数字是不会随章节数变化的)
- 编辑级别2的样式,注意“将级别连接到样式”那里选择“标题 2”,“在其后重新开始编号”选择“级别 1”
- 编辑级别3的样式,注意“将级别连接到样式”那里选择“标题 3”,“在其后重新开始编号”选择“级别 2”
这样使用三种标题样式作为章节标题时就不必操心编号的问题了。

Sina blog的用户评论问题and..Opera的bug?

, , ,

研究了一下,sina blog是用ajax来获取用户评论的,在ajax部分作了针对不同浏览器的处理,然而在将获取到的html代码输出到页面时有一句:
<a name="comment" style="display:none;"/>

这个代码的目的是利用name属性创建一个anchor,但根据w3c的标准元素的end tag是必须的,也就是说,这种的写法是不标准的,应该写成

有趣的是Opera对这种不标准的tag的处理。我做了两个sample:
http://files.myopera.com/Returner/blog/disappear.htm
http://files.myopera.com/Returner/blog/1disappear.htm
可以看到,相同的代码直接写在html中,opera是会把它显示出来的。但如果是用innerHTML来动态插入,opera就会把内容隐藏了……似乎A标签中的style="display:none;"在动态插入时对后面的元素起了作用?同样的代码的两种解释行为,不知道是不是Opera的bug。

然而在FireFox中,无论直接写进html中还是用innerHTML来插入,效果都是一致的。但在第一个sample中,A元素后边紧接着的是一个DIV,这个DIV没有显示出来。而第二个sample中则是一个TABLE,这个TABLE却显示出来了。这就是为什么FireFox下能看到sina blog的用户评论。

IE下两个sample的行为更加一致,什么都不会显示。但我没研究在IE中那些用户评论最终是怎么显示出来的。

至于解决的办法,自然还是UserJS。需要做的事情很简单,在innerHTML插入之前将A标签正则替换为
<a name="comment" style=" "></a>

这里我把style去掉了,因为在opera中如果这个tag的style是display:none,Opera是不会用它作为一个anchor的,这就不能用#comment跳转到评论的位置了。

由于opera.defineMagicVariable只能覆盖全局变量,经过考虑最后还是选择对base.js中的output函数动手。output函数就是将ajax获取到的代码用innerHTML插入到指定元素中的“最终输出函数”。

UserJS代码如下:
// ==UserScript==
// @name             Show user comments in sina blog
// @author           Returner
// @include          http://blog.sina.com.cn/u/*
// ==/UserScript==

opera.defineMagicFunction(
  'output',
  function (real, oThis, _sHtml, _box)
  { _sHtml = _sHtml.replace(/(<a\s[^>]+)display\:none;([^>]+)\/>/ig,"$1 $2></a>");  
    real.apply( oThis, arguments.slice(2) );}
);

或下载下面文件到Opera的UserJS目录
sinablogcomment.js

不过添加评论还是有点问题(尤其是使用代理服务器上网时),问题的根源在于验证码的图片没有及时更新,从而总是提示验证码错误。在不使用代理时刷多几次就好了,但使用代理时似乎总是刷新不了验证码图片,郁闷……



新浪可能修改过程序,原来的脚本会找不到新浪脚本里的output函数,于是real.apply时实际上会无限递归地调用自己,从而造成cpu占用率和内存占用率的飙升。
于是只好修改程序,直接把新浪的output函数写到脚本里。不过这样毕竟不是长久之计,新浪如果到时改了程序,脚本又要跟着改,只能算是暂时解决了问题……
新的脚本在这里:
sinablogcomment_v2.js

Opera blog升级……

后台变得华丽了,突然有点不知所措……
侧边栏总算是有了最新留言提示,可以不用watch了。可惜似乎还不支持侧边栏排序?
这次变动似乎没有上次大,基本上就是外观的变化而已了
还好编辑界面没变,我的自动定时保存脚本还是能工作-v-