2009年2月24日星期二

无耻的 99sushe 四六级查分系统

今天上午九时许,被 D2o 同学控诉为判卷“迅速”的国家英语四六级考试成绩终于出炉。
不过,这次的四六级查分系统 99sushe 居然弄出来一个很流氓的 ActiveX 插件,必须在里面输入验证码才能继续查分。
但是这小麻烦比不过查分的心急,安装、查分之后,我才认真看了看这个“验证系统”。其实这简直就是一个垃圾到极致的为 99sushe 获得用户的宣传方式,而且网页在查分之后貌似还会弹出一个广告,就是右侧那个“女生最爱、男生勿进”的游戏。
这就是传说中查分系统的查询函数,屁点儿技术含量也没有。通过这个 request 获取一系列逗号分隔的数据,然后用 split 函数解析。

但是这个页面应该是采用了 referrer 控制,直接打开是空白网页,所以我就用了个最原始的方式,下载软件伪造法。
“引用页”这个功能几乎是个下载软件都具备,所以很容易了,下载回来的这个 cetscore_99sushe0902.html 就是一个纯文本文件了;其中有自己的单项分数、总分与个人信息,还有的三个名字就是 99sushe 在右侧伪造出来的“你在查分同时收到了三条留言”的留言者名字。当然了,这三位同学是无辜的。

总结一下,99sushe 绝对是一个巨操蛋的网站。

对了,插件的问题。你可以试着按照微软网站上的方法删除安装好的这个 BhoPlugin.dll,也可以到 IE7/8 中的“管理加载项”中删除这个插件。

2009年2月21日星期六

Google AdSense for Domains & Google's Hosted Services

我们前些天发布了新产品 AdSense for domains,但是我们发现这一产品存在与中国域名提供商的兼容性等技术问题,所以一些发布商无法投放AdSense for domains 广告。我们目前正在与技术部门解决这一问题,有进展时我们会第一时间在这里通知各位发布商。在此之前,请大家暂停使用这一产品。

给大家带来的不便,我们十分抱歉,我们会尽快解决,感谢大家的理解!

AdSense 中文小组
这是 Google AdSense 小组在刚刚宣布发布中文版 AdSense for Domains 两天之后的一则通告,告知他们的 AdSense for Domains 服务出现了“与中国域名提供商的兼容性等技术问题”,被迫下线。


通过这项新推出的 Google AdSense 计划,即使是还没有想好要做何用途的闲置域名都可以显示广告,取得一定收入。

启用这项服务的方法很简单,其中在修改域名记录过程中有这么一步。
相信接触过 Google Blogger Custom Domains 或 Google Apps 的人士都会熟悉这一组 IP 地址。这组地址最早大概用于 GAE,后来被大家用作 Blogger Custom Domains 绑定。

现在一切明了,Google AdSense for Domains 这个与“域名”有关的计划终于进入了中国,这个“不兼容”问题得到了谷歌官方的确认,不知下一步他们打算如何操作?
是给一组专门让中国用户使用 AdSense 的 IP,还是公关解决掉 ghs 域名的问题?甚至是和谐版 ghs.google.cn?

希望谷歌能够考虑周全,并“尽快解决”。
我顶你,谷歌。

2009年2月20日星期五

wtf...

1. 当需要一张CD时却死也找不到,想想最后借给了谁?然后上线就是对其一通抱怨。几个小时后,居然发现CD就躺在我这该死的抽屉里……抱歉,伟伦同学,误解你了。

2.早上醒来,一看表,妈呀,13:13!这个时辰真是吉利啊,想到今天还有安排,便立刻一个骨碌从床上爬起,正在洗漱之时,突然发现自己还身在床上,摸过手机,睁眼,7:10……

3.大半夜无聊看电影,一部、两部……直到天亮。上了飞信,看到黑熊同学手机在线,问候之。回信曰:正在上班路上。感慨。离开学不远了。

4.今天早上起来无所事事地准备上网,有评论需要审阅,却发现 Blog 成了一片空白。后来发现在 IE7 和 Chrome 上都是如此,遂发现是 GFC 条在捣鬼。加个条件限制下,以后问题修复了我再启用这个小东西。
这小东西删了之后,blogger 也有空白页的问题。看来不是它闹的。恢复之。
不过此刻,看到 Blogger in Draft Known Issues 里有这么一项 :
Some users have reported missing posts on the main page of their blog. We are looking into this and hope to have a fix out shortly.
As a workaround, create a new blank post and save it as a draft. This should reset your cache and display the missing posts.
比较相象。报告了这个问题,希望尽早修复。

5.说到 Blog,不久前又被雷了。准备今后把一系列 Blog 用语英文化,以免误读。例句:我是个在 Google Blogger 写 Blog 的 Blogger。

6.老妈被单位一个老同事拉去做保健,本来说得好好的,不去了,结果去了一次回来,向我声称:嗯,明天叫上你舅妈去,那还挺热闹……

7.这两天看小说之余略感无聊,使找出红警2和当年用过的 XCC Mixer,把 rules.ini 修改了一小下,CrateMinimum = 255。于是体验了“举目望战场,遍地皆宝箱”的壮观景象。游戏最后最发愁的就是手里剩下的这 30 多辆移动基地车该放在哪……

8.前两天北京大雪,我却在这种日子与同学几人出去闲逛。头一回去了久仰大名的猫眼,Xinca 同学在饭桌上重新给我复习了喊 ¡socorro!,却发觉自己这舌头已然不灵光了。老了……有人说我苍老了……没事别老笑了……脸上的褶子会越来越多的……

9.为了防止评论系统再提醒我,也为了给人肉 spammer 减轻工作压力,不需要开放评论的帖子,我就不开启评论了。

2009年2月17日星期二

……雪!

终于,2008 这个冬天没有罢休,在立春之后迎来了一场像样的雪。
早上时候正好在黑熊上班的路上,我就一句话扯到了小学时看到的最大一场雪。
那时候的雪真是能有十几公分厚,看到这场面,对于小孩来说真是溢于言表喜形于色的喜悦啊……
好些年没有见过正经下雪了,这应该就是气候变暖最真实的写照。

一张照片,六角形的雪花。
这是来自豆瓣好友 wyxmn 的作品,很是漂亮。
没有贴出我自己的作品,是因为……我宅了一整天。
不管明天天气如何,不管有没有正经事,我都要出去晃悠一天了。
这就是签名效应。网络的力量啊。

2009年2月15日星期日

音乐:轻装旅行 Travelling Light

专辑名称: Travelling Light - Songs From The 23rd Psalm
专辑歌手: Various Artist
发行日期: 04/16/2002
专辑语种: 英语
专辑类型: Pop-Folk

听了这张专辑的第一首同名歌曲《Travelling Light》之后就足以让我深深喜欢上它。

现在非常想找这张专辑,如果是质量好点儿的 MP3 下载也可以。看到曾有人在 04 年贴出了下载链接,到现在早已过期。
先在此感谢能提供线索的朋友。


更新 @ 20:58:
终于找到了这张 CD 的 MP3 版本,不过质量一般,是 128kbps 编码率。
用 eMule 从这个地址即可下载;
同时我也把一个版本(不要另存为)放在了我的 skydrive 里。
谢谢帮忙的朋友们!
专辑曲目:
1. Traveling Light - Sarah Groves
2. Gentle Shepherd - Amy Grant
3. I Shall Not Want - Bryan White
4. In Green Pastures - Jaci Velasquez
5. Mountain Of God - Third Day's Mac Powell
6. I Will Not Fear - Adore
7. Savior Like A Shepherd Lead Us - Fleming & John
8. Let It Flow - Russ Taff
9. Following Me - Tait
10. Rest In Me - Derri Daughtery
# 来自豆瓣

2009年2月14日星期六

I Follow

原文:I Follow, Randa Clay
翻译:Marcher

几乎所有的 Blog 平台默认都会在评论中的任何一个链接上插入一段“此路不通”的代码,以为了不让漫游网络的搜索引擎把链接“收录”。这本是设计为用来阻止垃圾评论,但这根本没用。它唯一起到的作用就是把其中一些读者在你的站点上发表评论的动机一扫而光。
对此你能做些什么呢?关闭“nofollow”标记。向你的评论者们表达你对他们的鼓励。传播链接的爱意。

怎么做?根据你所使用的 Blog 平台的而定,你可以安装插件(对于 WordPress 诸如这个),或者禁用它(如果你是 MoveableType 用户,看一下这个文章),或者修改你的模板(查看这个提供 Blogger 技巧的网站)。

关闭 Blog 上的“nofollow”标记已经成为了一种“运动”。如果我们要开展一场运动,那我们就应该用一些东西向我们的读者表示我们就是其中的一员,您觉得呢?我创建了一些可以很好地放置在侧边栏的“我跟随”小 logo,如果你写了一篇文章让读者了解你已经关闭了评论中的“nofollow”标记,那么你就可以把这个 logo 链接到那篇文章。如果你更喜欢用 CSS,我也建立了一份。




如果你想只用 CSS - 点击这里打开一个独立页面,查看它的源代码来复制其中的 CSS。你可以方便地更改颜色来适合你的站点。

(原文完)

这是个不错的建议,对己对人都是如此。虽然这样做可能会给 spam 带来可乘之机,但我愿意一试。
在此衷心感谢在此 Blog 留过评论的朋友们,谢谢你们的支持。

P.S.:如果你想在评论中留下你自己的 Blog 或网站地址(拒绝商业推广),请在评论框中选择“名称/地址”一项,填写你的名字和网站地址即可。

GOOGLE -> GXOGLE

今天又是个让部分人尴尬无奈的日子,我也包含在内了。刚刚就有朋友在网上祝我节日快乐……

首先让我觉得有意思的就是今天 Google 推出的这个 logo,GXOGLE。一眼看上去没有理解这个 XO 是个什么意思,甚至还把 X 看作了罗马数字……
怀着“有问题,维基一下”的先进思想,我终于了解到,原来 XO 除了是种白兰地,还有着“Hug and kisses/Love and kisses(拥抱并接吻/爱意与接吻)”的含义。
The Oxford English Dictionary states that X is "used to represent a kiss, esp. in the subscription to a letter."[1]. There is no general consensus on the origins of the O as a hug. The O could relate to the shape formed when two hands are crossed in a hug, forming a type of O. The 'X' may also refer to the pursing of the lips when kissing.
牛津英语字典叙述 X 为“用于表达吻,尤其在书信的署名处”。但对于作为拥抱含义的 O 的起源并没有普遍共识。字母 O 可能与拥抱时两手交叠而成 O 的形状有关系。字母 X 可能也与接吻时噘起嘴唇而成的形状有关。
此外,“XO”还普遍用于书信、电邮和短信的结尾,用来表达友情或爱意。[相关解释]

这应该是个和国外朋友交流很重要的小记号,还要多谢 Google 给我补了一课。
愿大家情人节快乐 :)

更新 @ 7:55:
难道是谷歌觉得这个 XO logo 对于中国人难于理解?现在,谷歌首页有了新的 v2 版本 logo。
很朴实的一对小鸟,当然还有心形图案。

2009年2月12日星期四

Ubuntu 截图

刚装好了 Ubuntu 8.10,装了所有更新和 nVidia 的受限驱动,结果却有了花屏,而且莫名地卡。太郁闷我了。
不过 Ubuntu 8.10 比起之前用的 8.04 真的进步了不少。

2009年2月10日星期二

Google Sync,免费的手机通讯录备份

Google 刚刚推出了 Google Sync 服务,这个服务旨在帮助人们通过 Google 帐号组织自己的通讯录。
通过这个服务,iPhone、BlackBerry、Nokia、SonyEricsson、Motorola 以及使用了开放的 SyncML 协议的手机等都能够将机内的通讯录同步到 Google 帐户里,并可以到自己的 Gmail 通讯录处随时查看。

以我使用的 SE K750c 手机为例,打开手机功能菜单,选择“手机设定”-“连接”,进入“同步”功能,参照 Google Help 的提示添加一个帐户。

  1. 服务器地址:https://m.google.com/syncml
  2. 用户名:你的 Gmail 地址(包含 @gmail.com)
  3. 密码:你的 Google 帐户密码
  4. 连接:选择 cmnet 连接(GPRS 连接互联网)
  5. 应用程序:只选定“通讯录”并确定
  6. 应用程序设置:只把“通讯录”的“数据库名”设置为小写“contacts”
其他同步设置根据个人需要而定。
OK,同步完成后,你就可以看到你的手机通讯录出现在了 Gmail 联系人里。
要知道中国移动的一项手机通讯录同步服务可是每月 5 元的 :D
现在免费注册并登录移动 139 邮箱,选择“通讯录”,会看到菜单右侧有一个“同步”按钮,点击进入设置你的手机型号,就会收到移动发来的配置信息;进入手机的同步界面即可快速同步手机通讯录,非常方便。(感谢 siuloong 大哥的提醒!)

其他手机用户,请参见 Google Sync 首页的指示进行操作。

根据 Google 的说明,这个过程只会将你的手机通讯录与 Gmail 帐户里的“My Contacts”组进行同步。不过我并没有测试是否如此,因为我不希望我那几百个 Gmail 联系人出现在我的手机通讯录里 -_-

更新:不用 Ctrl+V 的“回复此评论”代码

今天找了点儿时间重新完善了一下“回复此评论”的代码。我提供的这个方法的代码可用于 Blogger 的“布局”模式,稍作修改也可用于“模板”模式。

布局代码:

修改后的“回复此评论”功能更加完善,不再需要 Flash 插件,不再需要过多的说明,只需一次点击,需要添加的回复功能代码自动就会出现在回复框中。这个功能是基于 Blogger 弹出式评论的弹出窗口设计的,但是你无需在 Blogger 控制台选择“弹出式评论框”——你仍然可以使用你喜欢的回复评论方式(比如现在流行的“嵌入式评论框(Embedded Comment Form)”)。
<span class='comment-reply'><a expr:href='&quot;https://www.blogger.com/comment.g?blogID=BLOG-ID&amp;postID=&quot; + data:post.id + &quot;&amp;isPopup=true&amp;postBody=%40%3C%61%20%68%72%65%66%3D%22%23&quot; + data:comment.anchorName + &quot;%22%3E&quot; + data:comment.author + &quot;%3C%2F%61%3E#form&quot;' onclick='javascript:window.open(this.href, &quot;bloggerPopup&quot;, &quot;toolbar=0,location=0,statusbar=1,menubar=0,scrollbars=yes,width=400,height=450&quot;); return false;'>回复此评论</a></span>
BLOG-ID 需替换为你自己 Blog 的编号。
如果这是你第一次接触“回复此评论”的代码,请参看之前的帖子了解该如何操作。

这段代码会在评论框中插入形如下面代码的内容:
@<a href="#c1234567890">我是评论者</a>


模板代码:

把以下代码放在模板的 </head> 之前。
<ItemPage><script type="text/javascript">var fanch = "<Blogger><$BlogItemNumber$></Blogger>";</script></ItemPage>

把以下代码放在需要添加“回复此评论”的位置上,例如“小王说...”之后。
<span id="reply-<$BlogCommentNumber$>" title="回复此评论"></span>
把下面的代码放在 </BlogItemComments> 之前。
<script type="text/javascript">
var fname = '<$BlogCommentAuthor$>';
var fhtml = fname.replace(/<[^>].*?>/g,"");
var fname = escape(fhtml.replace(/&nbsp;/,""));
document.getElementById("reply-<$BlogCommentNumber$>").innerHTML = "<a href=\"https://www.blogger.com/comment.g?blogID=BLOG-ID&postID=" + fanch + "&isPopup=true&postBody=%40%3C%61%20%68%72%65%66%3D%22%23<$BlogCommentAnchorName$>%22%3E" + fname + "%3C%2F%61%3E#form\" onclick=\"javascript:window.open(this.href, \'bloggerPopup\', \'toolbar=0,location=0,statusbar=1,menubar=0,scrollbars=yes,width=400,height=450\'); return false;\">回复此评论</a>";
</script>
搞定。

希望这段新的代码能让 Blogger 回复评论方面的功能更加方便。
谢谢大家对我这些 Blogger 评论小技巧的支持。如果有任何问题,请在这儿留言。

憋屈

在中国,做网站的站长都是憋屈的。莫名其妙的封杀、稀奇古怪的屏蔽、冠冕堂皇的政策,哪样都是一计必杀,一旦出动其一都够让你辛苦经营的网站关张大吉。

豆瓣是我使用率最高的网站之一,为了发现好书、好片,也顺便为了去小组看看新奇的消息和讨论。
今天,豆瓣给广大组长发来了豆邮。
亲爱的Marcher组长:

到3月6日豆瓣就成立4周年了,这几年来"关于豆瓣"的页面从未变过。豆瓣把自己定义为发现和分享生活的网站。直到今天,每天用户产生的内容里,99%依然是围绕读书、电影、音乐、同城和日常生活的讨论。同时,豆瓣作为技术型的web2.0网站,一直致力于"算法改善生活",豆瓣的立身之本,是用算法和技术规则促进优质内容的产生和传播,使每位用户产生的内容对尽可能多的人有用。我们不善于,也一直试图避免人为干涉用户内容的产生和传播。

豆瓣小组作为一个辅助功能,初衷是对单种书碟评论的补充。小组以圈子和兴趣分享为主旨,而非通用的话题论坛。虽然用户使用小组进行各种类型的发现和互动,出于对用户的尊重,豆瓣的前三年里我们并没有对小组主题做过多的限制。即便如此,今天十几万个小组里,99%以上仍然是围绕读书、电影、音乐、人际圈子和生活兴趣为主题的。

豆瓣作为在中国运作的网站,一直尊从政府及上级主管部门在互联网服务方面的法律法规。这是我们长期发展的必不可少的保障,法律法规所要求的内容监管工作豆瓣也一直在认真执行。但时政、意识形态和低俗方面的内容,虽然不到豆瓣每天产生内容里的百分之一,却成为监管工作里比重最大的一部分。虽然我们一直全力在做,但这些内容的类型和豆瓣自身"发现生活"的定位相去甚远,人工审核的方式和豆瓣技术为上、用户为上的运营理想也有很大的冲突。

因为以上的原因,豆瓣在一年前制订社区指导原则的时候,明确把时政和意识形态方面的话题作为全站范围内不欢迎的内容。这些方面的讨论,无论观点、角度、合乎规定于否,都不在豆瓣的服务范围之内。我们希望这种类型的讨论,用户能在豆瓣之外找到更适当和有效的沟通场所。遗憾的是,因为各种原因,针对社区指导原则的沟通没有用积极的方式进行。少数以此类话题为主要兴趣的用户看到的是封删禁,而不是豆瓣服务内容的变化。豆瓣对处理过程中因为我们自己的疏忽和沟通的笨拙对用户造成的伤害感到非常愧疚,在这里先跟大家道歉。

另一方面,众所周知的,国务院新闻办等七部门于近期发起了整治互联网低俗之风的专项行动,而目前这个专项行动正向纵深发展。根据反低俗之风专项行动的指导精神,为了保证小组内容的长期存在且不产生法律法规方面的问题,豆瓣最近对现有小组进行了严格的梳理,解散了一些不符合规定的小组,因此对用户产生的不便和伤害,我们表示深深的歉意。我们理解因此离开豆瓣的一部分用户,也祝愿他们能顺利地找到更适合他们的服务。被解散小组的组长如需要数据备份或迁移方面的协助,请和help*at*douban.com联系。

豆瓣并非一个存在于真空中的网站,我们在严格遵守相关法律法规的同时,亦有自己的规则和立场。之后豆瓣小组的管理方式也会做相应调整,保证小组的内容在豆瓣的服务范围之内。也请相信和理解,我们所做的这些,最终是为了保证豆瓣99%以上的用户过去几年生命里的记录能够稳定地存在,不因为1%的用户出现法律法规方面的问题而消失。这是豆瓣作为一个有责任心的社会网站,对用户道义责任的底线。我们能力有所限、我们实力有所限,不能让百分之百的用户满意,但对其中绝大多数,我们希望尽己所能做得更好。

感谢您,感谢大家,特别是沉默的大多数用户,感谢你们一直以来的理解与支持!


豆瓣

2009年2月9日
如此委婉的系统邮件说明了什么?
新浪、网易、搜狐、雅虎、校内,甚至我们正在或者曾经用过的美术教科书,它们真的“低俗”吗?
现在看来,真正顶得住压力的只有 Google 论坛了。为了豆瓣的明天,大家留神吧。

2009年2月9日星期一

元宵佳节闲扯淡

又一个元宵佳节。怎么着就“又”了,我自己也不知道。
元宵,今年第一个月圆之夜。现在窗外鞭炮齐呜,就像是爆发了战争;站在厨房里根本听不到旁边客厅里电视和说话声。
今天这个日子有了新的意义,把炮放干净,省得明儿个禁放了把手里的东西浪费了。老爹也拿上家里剩下的一挂鞭,凑了这个热闹。这下踏实了。

今天是我有生以来睡得最爽的一回了;今天凌晨三点倒下,今天下午十三点爬起,虽只有短短的十小时(曾听说朋友有未曾刷夜而正常睡眠十五小时的情况),但醒来后神清气爽——怎一个爽字了得。

北京时间今天上午,第 51 届格莱美颁奖典礼一年一度地开场。
今年的格莱美有五位得到提名的华人音乐家,是有史以来最多的一次,包括萧清阳、谭盾、李炜、陈克兰、吴蛮。
吴蛮是凭借着与华裔大提琴家马友友合作的曲目《丝路之音》而得到了格莱美提名。还记得马友友曾在美国新任总统就职仪式上献艺。
获奖名单什么的我就不在这儿废话了,请您来这里阅读
现在 mininova 上已经有了今年格莱美的专辑,有兴趣的朋友来这里 BT 一把

2009年2月8日星期日

反馈:告诉 Blogger 你的功能需求

我在这里也说过不少关于 Blogger 的不足以及小毛病了,相对于这些“小问题”,相信不少 Blogger 更期待着 Blogger 的新功能发布——大家都希望作为先锋的 Blogger in Draft 里能出现更多更方便的新鲜玩意儿。

Blogger Help(帮助)平台在近期已经完全并入了 Google Help——终于把 Blogger 看成是 Google 产品了!囧。
Blogger Help 的 Wishlist Page 列出了不少 Blogger 期待的新功能,(据说)他们会根据需求来开发并推出新功能。
  • Restrict access only to specific posts(限制针对指定文章的访问权限)
  • Show excerpts of my posts, with links to the full text(显示文章摘要并附带指向全文的链接)
  • Export/import my posts to/from another blogging tool(从/向其他 Blog 平台导入/导出文章内容)
  • Include audio/music on my blog(在 Blog 中插入声音/音乐)
  • Upload other files to my blog(上传“其他”文件到我的 Blog)
  • Display my posts in reverse, or non-chronological order(以倒序或者非时间顺序显示文章)
  • Track where visitors come from and how they interact with my site(跟踪访客的来源以及他们与我站点的互动情况)
  • Integrate with Google Apps(与 Google 企业套件集成)
  • Read my friends' blogs all in one place(在一处就能阅读我所有好友的 Blog)
  • Have more gadgets for the sidebar. (提供更多侧边栏的小工具)
  • Have more template options. (提供更多的模板选项)
  • Recommend a Blog of Note. (推荐一个“留言博客”[官方如此翻译,很诡异,其实就是个精选博客...])
看看,在首页显示摘要并附带一个指向全文的链接!这就是 Blogger 们梦寐以求的功能了,不知近期是否有望实现 XD
上传“其他”文件到我的 Blog,这不就是可以自行上传 CSS、JS 文件的意思吗?终于不用自己找个免费主机或者网盘用来做丢失文件服务器了?!还是要考虑和即将面世的 GDrive 集成?!
这两个功能我无限期待,于是我坚定地投了他们一票!

Blogger 们,大家期待什么功能?来投票告诉 Blogger 吧,希望这些功能能尽快实现!

2009年2月7日星期六

懒得 Ctrl+V:又一个在 Blogger 回复评论的方法

更新!
我已经对正文提到的代码进行了更新。新的代码将能够自动提供所回复评论的链接信息,请参见最新的文章。谢谢支持。

之前物以类聚曾经发布过好几次关于给 Blogger 添加“回复评论”功能的方法,目前比较适用的就是使用 Flash 复制评论者名字,并手动粘贴在评论框里的方式。
不过这个方法的第二步手动复制让不少人很是迷惑,更有网友戏称这个方法是一个“半自动方法”。
今天我就再弄出来一个一键回复的方法吧,送给懒得“Ctrl+V”的朋友。

依旧是老步骤,转到“布局”,进入“修改 HTML”标签,勾选“扩展小窗口部件模板”复选框。
如果你想把“回复此评论”的链接放在每条评论的“xx 说...”之后,那么请找到
<b:if cond='data:comment.authorUrl'>
<a expr:href='data:comment.authorUrl' rel='nofollow'><data:comment.author/></a>
<b:else/>
<data:comment.author/>
</b:if>
<data:commentPostedByMsg/>
在这段代码之后添加:
<span class='comment-reply'><a expr:href='&quot;https://www.blogger.com/comment.g?blogID=BLOG-ID&amp;postID=&quot; + data:post.id + &quot;&amp;isPopup=true&amp;postBody=@&quot; + data:comment.author + &quot;#form&quot;' onclick='javascript:window.open(this.href, &quot;bloggerPopup&quot;, &quot;toolbar=0,location=0,statusbar=1,menubar=0,scrollbars=yes,width=400,height=450&quot;); return false;'>回复此评论</a></span>
代码中的 BLOG-ID 代表你所使用的 Blog 编号。可以在进入控制台之后的地址栏中看到,例如:http://www.blogger.com/post-create.g?blogID=12345678,12345678 就是你的 BLOG-ID。
就此搞定。

你还可以在 CSS 里对 comment-reply 这个 class 的回复链接修饰一番。

这个方法的优势就在于只需一次点击,Blogger 自动在评论框里为你添加要回复者的名字。如果要引用评论内容的话,不妨把 data:comment.body 加进去。不过这个传递参数的方式要在 Blogger 的允许范围内,如果传递了不合法的内容,Blogger 会用 HTTP 400 警告你...
正是因为这个原因,自动填写的 @xxx 不包含链接信息。不过对于评论不多的情况已经够用。
而这个方法的无敌之处还在于使用了 blogger 提供的 https 安全链接,即使伟大的 wall 暂时挡了一把 Blogger,来访者也可以把想说的话留下。

征求民意:是否应该取消文理分科?

国家就教育改革的 20 个问题征求问题,其中就包括了“是否应该取消文理分科”。
多年以来,文理分科一直被不少人看作中国教育制度中的诟病,可是是否该取消、该何时取消又有着无数“专家”的各种评说。
《国家中长期教育改革和发展规划纲要》工作小组办公室昨天举行新闻发布会,提出将就社会关注度高、影响教育改革发展全局的20个重大问题继续公开征求意见。其中包括是否取消高中文理分科等问题。

20个问题征求意见
这20个重大问题涉及加强农村教育、深化教育教学以及管理体制改革、解决各级各类教育中突出问题、保证教育投入和健康发展等4个方面。
工作小组办公室希望社会各界围绕切实解决所公布的4个方面、20个问题进一步出主意、想办法,提出实招、硬招、新招。各界人士可通过电子邮件和来函形式集中就这些问题提出意见和建议。电子邮件发至dtl@moe.edu.cn;来函地址:北京市大兴区清源北路国家教育行政学院转《规划纲要》意见收集组,邮编:102617,并在信封上注明“纲要征求意见”字样。

附:20个重大问题

(一)加强农村教育的意见建议
1.实行城乡教育统筹,改善农村学校办学条件,提高办学水平的意见建议。
2.解决农村教师缺乏、提高农村教师素质的办法措施。
3.农民工随迁子女接受义务教育以及高中阶段、高等教育的意见建议。

(二)深化教育教学以及管理体制改革的意见建议
4.如何深化教育教学方法改革,注重培养学生的社会责任感、实践能力和创造精神。
5.创新人才培养的办法措施。
6.高中取消文理分科的必要性和可行性。
7.减轻中小学生学业负担的办法措施。
8.如何改革考试招生制度。
9.如何落实高校办学自主权、健全高校内部治理结构。
10.加强省级政府教育统筹和区域教育协作的政策措施。

(三)解决各级各类教育中突出问题的意见建议
11.解决义务教育优质教育资源分布不均衡、城市择校问题的办法措施。
12.发展学前教育的意见建议。
13.如何改革职业教育发展模式,调动行业、企业兴办职业教育积极性,解决职业教育规模数量、专业设置与社会需求相吻合的问题。
14.如何增强职业教育的吸引力。
15.如何改进高等教育质量管理,健全质量标准和质量评价制度。
16.如何推进高等学校科学定位、分类办出特色。
17.如何构建终身学习与人才成长的“立交桥”。

(四)保证教育投入和健康发展的意见建议
18.如何依法落实“三个增长”、强调政府投入责任。
19.如何多渠道筹措教育资金,鼓励社会投资、捐资教育。
20.建设和谐校园的办法措施。

# 来自中国网 
在应试教育、择校分配、师资不均衡的现状下,教育方面确实需要大的改革。

2009年2月5日星期四

为 Blogger 增加翻页功能

翻页功能,或者叫页码导航(Page Navigation),在 WordPress 中是一个最基本的功能,见于几乎任何一个 WordPress 博客中,而这个基本的功能在 Blogger 平台博客中还不能使用官方的布局功能小工具(Widget)实现。
来自译言的翻页示例

这篇文章摘自 Blogger Accessories。在 Blogger Accessories,博主提供了两种实现方法,分别是修改 HTML 方式Widget 方式。下面将对通过 Widget 为 Blogger 平台的布局模式博客添加翻页功能做下叙述,这种方式相对简便易懂。

首先需要确认,你的 Blogger 博客只有使用“布局(Layout)”才可以外使用这个功能。
打开 Blogger 控制台,进入“布局”标签后,添加一个小工具“HTML/JavaScript”,输入如下的代码:

<style>
.showpageArea {padding: 0 2px;margin-top:10px;margin-bottom:10px;
}
.showpageArea a {border: 1px solid #505050;
color: #000000;font-weight:normal;
padding: 3px 6px !important;
padding: 1px 4px ;margin:0px 4px;
text-decoration: none;
}
.showpageArea a:hover {
font-size:11px;
border: 1px solid #333;
color: #000000;
background-color: #FFFFFF;
}
.showpageNum a {border: 1px solid #505050;
color: #000000;font-weight:normal;
padding: 3px 6px !important;
padding: 1px 4px ;margin:0px 4px;
text-decoration: none;
}
.showpageNum a:hover {
font-size:11px;
border: 1px solid #333;
color: #000000;
background-color: #FFFFFF;
}
.showpagePoint {font-size:11px;
padding: 2px 4px 2px 4px;
margin: 2px;
font-weight: bold;
border: 1px solid #333;
color: #fff;
background-color: #000000;
}
.showpage a:hover {font-size:11px;
border: 1px solid #333;
color: #000000;
background-color: #FFFFFF;
}
.showpageNum a:link,.showpage a:link {
font-size:11px;
padding: 2px 4px 2px 4px;
margin: 2px;
text-decoration: none;
border: 1px solid #0066cc;
color: #0066cc;
background-color: #FFFFFF;
}
.showpageNum a:hover {font-size:11px;
border: 1px solid #333;
color: #000000;
background-color: #FFFFFF;
}
</style>

<script type="text/javascript">

function showpageCount(json) {
var thisUrl = location.href;
var htmlMap = new Array();
var isFirstPage = thisUrl.substring(thisUrl.length-14,thisUrl.length)==".blogspot.com/";
var isLablePage = thisUrl.indexOf("/search/label/")!=-1;
var isPage = thisUrl.indexOf("/search?updated")!=-1;
var thisLable = isLablePage ? thisUrl.substr(thisUrl.indexOf("/search/label/")+14,thisUrl.length) : "";
thisLable = thisLable.indexOf("?")!=-1 ? thisLable.substr(0,thisLable.indexOf("?")) : thisLable;
var thisNum = 1;
var postNum=1;
var itemCount = 0;
var fFlag = 0;
var eFlag = 0;
var html= '';
var upPageHtml ='';
var downPageHtml ='';

var pageCount=5;
var displayPageNum=3;
var firstPageWord = '首页';
var endPageWord = '末页';
var upPageWord ='上一页';
var downPageWord ='下一页';

var labelHtml = '<span class="showpageNum"><a href="/search/label/'+thisLable+'?&max-results='+pageCount+'">';

for(var i=0, post; post = json.feed.entry[i]; i++) {
var timestamp = post.published.$t.substr(0,10);
var title = post.title.$t;
if(isLablePage){
if(title!=''){
if(post.category){
for(var c=0, post_category; post_category = post.category[c]; c++) {
if(encodeURIComponent(post_category.term)==thisLable){
if(itemCount==0 || (itemCount % pageCount ==(pageCount-1))){
if(thisUrl.indexOf(timestamp)!=-1 ){
thisNum = postNum;
}

postNum++;
htmlMap[htmlMap.length] = '/search/label/'+thisLable+'?updated-max='+timestamp+'T00%3A00%3A00%2B08%3A00&max-results='+pageCount;
}
}
}
}//end if(post.category){

itemCount++;
}

}else{
if(title!=''){
if(itemCount==0 || (itemCount % pageCount ==(pageCount-1))){
if(thisUrl.indexOf(timestamp)!=-1 ){
thisNum = postNum;
}

if(title!='') postNum++;
htmlMap[htmlMap.length] = '/search?updated-max='+timestamp+'T00%3A00%3A00%2B08%3A00&max-results='+pageCount;
}
}
itemCount++;
}
}

for(var p =0;p< htmlMap.length;p++){
if(p>=(thisNum-displayPageNum-1) && p<(thisNum+displayPageNum)){
if(fFlag ==0 && p == thisNum-2){
if(thisNum==2){
if(isLablePage){
upPageHtml = labelHtml + upPageWord +'</a></span>';
}else{
upPageHtml = '<span class="showpage"><a href="/">'+ upPageWord +'</a></span>';
}
}else{
upPageHtml = '<span class="showpage"><a href="'+htmlMap[p]+'">'+ upPageWord +'</a></span>';
}

fFlag++;
}

if(p==(thisNum-1)){
html += '&nbsp;<span class="showpagePoint"><u>'+thisNum+'</u></span>';
}else{
if(p==0){
if(isLablePage){
html = labelHtml+'1</a></span>';
}else{
html += '<span class="showpageNum"><a href="/">1</a></span>';
}
}else{
html += '<span class="showpageNum"><a href="'+htmlMap[p]+'">'+ (p+1) +'</a></span>';
}
}

if(eFlag ==0 && p == thisNum){
downPageHtml = '<span class="showpage"> <a href="'+htmlMap[p]+'">'+ downPageWord +'</a></span>';
eFlag++;
}
}//end if(p>=(thisNum-displayPageNum-1) && p<(thisNum+displayPageNum)){
}//end for(var p =0;p< htmlMap.length;p++){

if(thisNum>1){
if(!isLablePage){
html = '<span class="showpage"><a href="/">'+ firstPageWord +' </a></span>'+upPageHtml+' '+html +' ';
}else{
html = ''+labelHtml + firstPageWord +' </a></span>'+upPageHtml+' '+html +' ';
}
}

html = '<div class="showpageArea"><span style="font-size:11px;padding: 2px 4px 2px 4px;margin: 2px 2px 2px 2px;color: #000000;border: 1px solid #333; background-color: #FFFFFF;" class="showpage">第'+thisNum+'页,共'+(postNum-1)+'页: </span>'+html;

if(thisNum<(postNum-1)){
html += downPageHtml;
html += '<span class="showpage"><a href="'+htmlMap[htmlMap.length-1]+'">'+endPageWord+'</a></span>';
}

if(postNum==1) postNum++;
html += '</div>';

if(isPage || isFirstPage || isLablePage){
var pageArea = document.getElementsByName("pageArea");
var blogPager = document.getElementById("blog-pager");

if(postNum <= 2){
html ='';
}

for(var p =0;p< pageArea.length;p++){
pageArea[p].innerHTML = html;
}

if(pageArea&&pageArea.length>0){
html ='';
}

if(blogPager){
blogPager.innerHTML = html;
}
}

}
</script>

<script src="/feeds/posts/summary?alt=json-in-script&callback=showpageCount&max-results=99999" type="text/javascript"></script>
<div style="text-align:right;font-size:10px;color:000000;margin-top:15px;display:none;"> <a href="http://rias-techno-wizard.blogspot.com/2008/07/page-navigation-hack-for-blogger.html">Grab this Widget ~ Blogger Accessories</a></div>

把这些代码粘贴进这个 Widget 之中后,可能并没有完成。

1. 如果你没有使用默认分配的 yourname.blogspot.com 而是自定义域,那么你需要修改一下这个段落:

var isFirstPage = thisUrl.substring(thisUrl.length-14,thisUrl.length)==".blogspot.com/";
代码用来判断当前页面是否为首页,你可以直接改为:

var isFirstPage = "http://www.yourname.com/";

2. 代码中的这些段落可以自行修改:

var pageCount = 5;
这代表了每个页面中文章的数量;这并不一定要与控制台“格式设置”中的“x个帖子在主页上”一致。

var displayPageNum = 3;
代表每次列出的页面数量,默认是 3 个。

3. 如果你的博客并非由 Blogger 托管,那么你可以把上述红色的“<script>”一段改为:

<script src="http://www.blogger.com/feeds/BLOG-ID/posts/summary?alt=json-in-script&callback=showpageCount&max-results=99999" type="text/javascript"></script>
BLOG-ID 可以在控制台的地址中看到。不过,这个地址大概是被伟大的 wall 屏蔽的,如果你在国外,或者不在乎“连接被重置”,则可以一试。
上述第3点有问题,因为不由 Blogger 托管的 FTP 发布的 Blog 根本不能使用 /search?updated-max= 链接。此段内容请略过,抱歉。

完成,你可以按下图中的方法把这个 Widget 挪到文章下方。



大功告成。

最后还要说明这个方式的缺点。
依然是 wall 的问题,它可能会对 blogger.com/feeds/xxx 这个地址较为敏感,有遭遇“连接被重置”的危险。
此外,这个对 json-in-script 的调用明显比没有这个应用时花费了更多时间载入。加上 wall 的干涉,所以不容乐观。

总的说来,这是个 fantastic 的 trick,所以如果您感觉很棒的话,去 Blogger Accessories 感谢这位 Blogger 吧。


UPDATE @ 23:18:
搜索了一下,发现使用传统的模板(Template)依然可以通过 Blogger JSON 的方式获得这个翻页功能,请参见这里的文章
由于所有翻页的功能目前都是依赖 /search?updated-max= 这个 URL 实现的,发布内容均为静态页面的 FTP 发布的 Blogger用户还不能享受这样的功能。

这六年

初中同学聚会。


2009年2月4日星期三

@北京

今天从杭州萧山坐上了早晨飞回北京的航班,重新回到了北京。
旅行这一路上的尴尬、无语事无需现在多说,今后应该会整理一下。
中午的同学聚会,下午的 KTV 狂欢,加上晚上颓组织的必胜客小聚,一天异常充实。下次颓组织再次聚齐,就要等下个暑假了。

今日酒略多,感到些许忧伤。
从一个呆了五天的地方离开,也会有一种恋恋不舍的感觉。
从一段习惯了的日子脱离出来,有种不知所措。
熟悉的人,却有了不同的态度。

老同学说得对,有了今天的奋斗,明天才不用愁。

2009年2月2日星期一

夕阳,牵手

作者:

@杭州

杭州之旅可以说已经接近了尾声,总的说来,我现在已经意识到,来杭州时我们低估了杭州的大小,高估了自己的体力。

昨天作为这次杭州之旅最为尴尬的一天,远和我在九溪山下就开始被一位路过的阿姨劝去山上尝尝道地的农家饭,而出租车司机也极力推荐我们去山上的杨梅岭村,于是我们居然从半路错误地走上了去龙井村的山路,直到看到龙井村时才意识到错误,转身下山,重新寻找去杨梅岭村的乾龙路。其实我们路途中错过了一个重要的地图,只因为我们看到了九泓亭而没有注意到。
当然,冷事还在之后,到达村里,异常清净,等待我们的只有品茶的人家,我们虽然被村长夫人请进家中,最终还是因为之前已经买过了狮峰龙井而没有再买,看得出,人家很失望……
而我们这一路,走了不下五六公里。

今天开始,我们总结出了这次旅行没有遵循可持续发展原则的错误,决定接下来的一天里要脚踏实地。
不过不说别的,西湖区这边的外婆家饭店还是很值得推荐的,中午这一顿我们吃得相当high。

最后,附部分照片
美景与照片的效果是无法比拟的。此外,因为没带相机,所以这些照片都是 K750 和 iPhone 拍摄的,200 万像素,将就看;亵渎了这美景也是没办法的事。