(首先要说的是本文只针对网页设计者和Opera使用者而写,无关者请无视,不要主动弹出来喊“用什么浏览器的飘”,我会让你的留言一起飘到数据库地狱去。)

接下来谈谈店长这个小发现,自从Opera 9发布以来店长就一直被它奇怪的中文渲染所困扰,字体大小不一,比重也变化多端(见上图),无论使用页面CSS进行怎样的定义,始终没办法改变它的渲染行为。无奈之下只得放弃Opera,换用Firefox。如今FF早已经成为我的首选,但Opera的问题依旧困扰着我。
直到我发现了这个页面。
症状描述:Opera 9.x在使用简体中文的系统上(Windows和Linux)渲染中文字体时字符集选择错误,准确的说,是将简体中文用繁体字符集渲染。
影响范围:部分简体中文系统,平台不限;出现问题的页面编码为utf-8;Opera 9.2系列(当前稳定版本)均有可能出现此问题,9.5开发版我没有测试。
解决办法:
这里分为两个部分谈,首先说网页设计者怎样绕过这个问题。
之前提供的链接也解释了,Opera之所以会选择和CSS内设定font-family不同的字符集是因为国际化(i18n)的需求,浏览器在页面没有设定特定语言(lang属性,几乎可用在任何html元素上)的会自行决定字符集,这个决定无法通过CSS更改。
要让Opera分辨简体字和繁体字也简单,在html元素上添加lang属性即可,用"zh-hans"作为值,按照W3C说法这比zh_CN的更受认可;如果是XML文档可以顺便加入xml:lang="zh-hans",以免Opera的检查过于严格,两者都符合(X)HTML标准,可并存。
如果你只想页面上部分元素使用简体字渲染,也请参考之前的链接,里面有详细的HTML+CSS范例。
解决了设计者的困挠,用户又该如何让Opera正确渲染没有加入lang属性的页面呢?
User Javascript,Opera很早就支持类似Firefox上Greasemonkey的自定义JS功能,它的设定在工具->首选项->高级->内容的栏目下,设定一个文件夹,Opera会读取里面所有的.js文件。我们只要写一个简单的JS来实现为没有lang属性的页面增加正确属性即可,以下实际代码。

// ==UserScript==
// @include http://www.google.cn/*
// ==/UserScript==
document.addEventListener(
‘load’,
function () {
var lang = document.getElementsByTagName(”html”)[0].getAttribute(”lang”);
if(!lang) {
document.getElementsByTagName(”html”)[0].setAttribute(”lang”,”zh-hans”);
}
},
false
);

用过Greasemonkey的同学应该很熟悉这个设计了,我稍微解释一下,顶部注释部分负责限制代码运行的域名,在这里我限制了代码在google.com的域名下才运行(白名单)。
Opera提供了自设的几个强大的Event Listener,但这里我们只要用Javascript DOM的即可,默认设定是在页面读取完毕之后添加lang属性,也就是字体会在页面读取完毕后修正。肯定有更好的做法,但本人JS水平有限,想不到更快更准Fire的方式,有熟练者请赐教。另外input元素的中文字体无论使用哪种方式还是不变,不知道是不是bug,对与我这类开发者来说这已经不是问题了。
最后顺便一提,如果你要在HTTPS这种加密页面内用User Javascript(例如Google Reader),opera:config内User JavaScript on HTTPS的选项必须打开,默认是关闭的。

这样一来Opera 9.x在简体Windows上老难题也解决(大半)了,浏览器公国的再度恢复平静。其实Linux上也可用同样的伎俩,只不过它们有更快捷的办法——env lang=zh_CN。
更新:Opera:Config里Force Encoding也是非常重要的值,设置成AUTODETECT-ZH应该可以;店长的设置不知道为什么变成AUTODETECT-JP了,至此input元素的显示问题也解决。我建议有同样问题的旅客先检查你的Force Encoding和首选项里的字体设定(菜单中文显示可以通过设置字体为宋体解决),然后看查看栏目里的用户自定义风格是否无意中启动了(Opera可以覆盖页面CSS),最后再考虑用上诉的解决办法;网页开发者则可在页面里加入lang属性,方便浏览器更好的语言支持。
完。

谈这种灾难不可能不涉及政治,更难不夹杂个人情感,我本希望避免谈类似的话题;但眼看着正规报道之外的无根据流言层出不穷,店长忍不住想为政府申辩。本人的能力仅限于捐助灾区,救人的工作现在只有前线战士能完成——至少让无为的我在网上多帮帮忙,也许你认为“表态”这种援助方式很冷血,但店长现在只有表态的能力。

店长和众多网民一样,常带着放大镜看中央领导人的发言。看新闻发言多了,就会明白避重就轻,官腔官调在我党是家常便饭。然而这次温总理的发言却给我完全不同的感受,尤其是他“同胞们,要冷静……同志们,你们辛苦了”那两句,仿佛是在压抑着自己身为高层却不能拯救人民的愧疚。说实话,这两句比那些“获得抗灾的全面胜利”有感染力多了。
但随着死亡人数的上升,有关政府部门失职的言论也开始在网上流传,仿佛1万人的死亡都变成了地震局的失误。仅仅因为没能正确预报地震,就要他们代替自然灾害背上谋财害命的罪行,说得过去么?我与这些奉行“强制责任制”的网民持不同观点,以下是我自己的分析。
我记得美国一家报纸在9.11发生5周年到纽约街头随机采访了数千人,问他们认为9.11事件是不是美国政府策划的战争阴谋,其中10%的人回答了“是”的选项。为什么会有这种阴谋论存在?该报纸的分析结论是“美国人无法接受本土被恐怖袭击的事实”,长期以来“领土安全”的光环被打破,许多人选择了逃避——相信阴谋论,只有美国政府才能整死美国人。
我觉得国内的“问责潮”和9.11阴谋论相仿,这么严重的死伤,已经完全超出大部分人的预测,想起年初造成更大经济损失的雪灾也和政府行动迟缓有关,又考虑到历史上政府的反应机制均偏慢,脑中的矛头逐渐摆正:政府失职和末日电影般的死伤数有关系!然而事实是什么?事实是就算我们立马剁了地震局那群人这地震也已经发生,而且毫无疑问今后还会发生,天气预报尚模棱两可,问责地震更加困难。
如果说中国在处理有关地震信息的方式上真有什么不足,我认为还是信息控制过于严格,上述的流言蜚语,只要我们允许多一点新闻自由度,也就不攻自破了。不过这是另一个话题了。
话说回来,1万多人死亡,而且数字是肯定还要翻倍,谁能轻易接受?没人,我宁愿天天听官腔也不愿在灾后听实话。这就是底线,如果我们的领导层连这点主次都不分,中国就不是中国了,应该叫缅甸二号;而这个地震也不该是汶川,应该是唐山。
于是就有了第二个讨论,中国应该主动向国际寻求援助。
汶川重灾区的公路绝大多数被破坏,没有地面车辆代步,加上天气恶劣影响空中支援,汶川地区的援救工作受阻。放在30年前,没有互联网,没有数十家电视台,信息流通量低,自然对援救工作的开展不清楚;如今的网络新闻更新极快,48小时已经是非常漫长的时间了,我们却连灾区都没摸遍,这自然会挑起信任危机。
是我们政府为了面子故意抵制援助吗?是我们政府为了增加民信故意打肿脸充胖子吗?店长看不到任何有充分根据的解释,无论是为了救人还是为了奥运,如果现在寻求国际援助能加快控制大局,政府一定会选择这种方式。这已经不是唐山的时代,即便是对政府非常“多质疑”的我也相信“国家安全”并非我们没主动寻求援助的主要缘由。
无论今后数日中国政府是否积极寻求援助,重灾区的工作人员依旧会是军人,如何在人类生存极限到来前尽可能救人是当务之急,我相信政府会在这个基础上做选择。
人容易在眼前的悲剧中陷入迷惘和绝望,请冷静,同胞们,就算你没办法为灾区做出什么贡献,也请至少给政府一点信任;任何政治因素都不能阻隔我们血管里流淌着的人性。
PS:捐款的地址在此略过,有心的话Google或打开电视就能看到。
祝愿各位旅客无恙,完。

Powerset今天正式公开他们的首款产品:通过分析自然语言结构返回更准确结果的搜索引擎。以Wikipedia和Freebase作为数据库,Powerset展示了它强大的文字分析能力。使用同样的搜索文字,它确实能返回比Google针对性更强的信息(就别提Wikipedia自己的垃圾搜索系统了)。
值得留意的是,Powerset搜索结果的黏性比Google大得多。换句话说,Google搜索是门,你找门号,开门,之后就没它什么事了;Powerset的搜索让用户持续停留在它的页面上,站在商家的角度看,这对投放广告和挽留客户是有百利而无一害,若融入类似Amazon/当当的购物推荐系统则可间接提高用户消费欲望,是很有前途的搜索系统。
但当前Powerset带来的好处则更加直接:看Wikipedia的内容又不需要代理了!Powerset界面的速度和功能都比Gollum好上数倍,绝对是不能上Wikipedia官网的用户的最佳伴侣。

店长的深夜收视指南:本周最佳娱乐片当属《红》的第六集,虽然画面是“神采飞扬至扭曲变形”,内容却完全跳出原作灰暗的主线故事。疯狂,太疯狂了,比上周的变装登塔者更多“莫名其妙的笑点”。顺便问个,原作有类似的桥段么?感觉用文字来描写本集的场景异常困难。
PS:内涵片突然没剧情真好,也不用担心错过什么剧情,光是看截图我就决定要下载来看了,果然物超所值。

另一方面,店长有追的两部动画之一图书馆战争则强差人意。只谈画质外貌《图》是无可挑剔,反观剧情灵魂,则未免太平淡了一点。我可以理解制作组在接连数集“枪林弹雨”之后想加点“支线剧情”缓和气氛,但本集的对白设计(数量过少,缺乏亮点)和剧情开展(过于写实,哭笑不得)已接近“无聊”的地步,若不是精美的画风在独力支撑,估计收视率会继续下挫。
PS:搞不清楚是原作刻意美化战争还是导演刻意回避现实。小田原的战斗从强度,战术乃至伤亡程度都和儿童读物里的正邪大战相仿,给店长这种年龄的人看实在不过瘾。难道深夜动画“废萌”的定义又扩展了?

花了大量时间在Computational Complexity里老牛拉车,一有空就把时间全部投入到研究Drupal的API里,Google Reader继续1000+膨胀,啊不管了,应该说管不了,就让我在5月里燃烧至灰烬吧。
完全是店长的miss啊,早知道就不在女子学院里当教师了,实验证明本人只有老牛拉车没有老汉推车的命orz

比特客栈的连珠合璧

比特客栈的旁门左道

News at: [2009/01/05 - 18:10] [0]

bribe-or-die

看到新闻的那一刻我就条件反射决定要上cnbeta看看:很久没回去了,这种新闻依旧是他们的吐槽天堂。

原文:这,只不过是像一个肌肉男,动不动就对别人展示自己那浮肿的大肉块的尺寸而已。重点不在整治,而是透过整治警告列位:一切尽在老子掌控之中!

via cnbeta

特别好笑的地方是,被整治的一群网站都··犹豫的贴出了这篇报道,搞得比年终创收获奖单位还华丽。反正无需高层的文字回应,高层已经在文化局和饭局里回应过了。

News at: [2009/01/05 - 13:48] [0]


ニコニコ動画贴纸生成器

分享个小玩意,在禁止使用iframe代码的论坛/博客很方便。使用了PHP Font Image Generator 2ニコニコ的API,感谢这些代码的开发者。

News at: [2009/01/04 - 13:57] [1]

ohspam

WpSender是我见到的最新一款国产垃圾留言生成软件,其功能明确,就是要灌在谷歌和百度上特定关键字排名靠前的页面;噢噢,别以为他们在什么互联网黑暗角落交流哦,这可是明目张胆的正规交易,软件虽小,五脏俱全,给钱就有高级版!

制作者提醒使用者留言时要有创意,否则会被过滤和删除——我的认知是,是因为Spammer没有创意和道德,才会使用这类软件。客栈并不担心,用什么工具不重要,广告型留言最终要死在过滤软件下(我以前比较松)。

News at: [2009/01/03 - 13:00] [3]

原文:Now I’ll be able to spend the next year reading about anime characters and 1980s Wrestling personalities.

意译:今年我又可以高枕无忧的博览有关动漫角色和80年代摔跤选手的资讯了。

via digg

News at: [2009/01/02 - 00:23] [8]

happynewyear

路过旁门左道的旅客,祝你新年快乐!没想到2009的首日如此忙碌,我跟亲戚东奔西跑,等到现在才有空更新。

(继续阅读)...

News at: [2008/12/23 - 13:05] [2]

merryxmas

今年最后的信息还是和圣诞有关比较好——牛津大学再次验证类黄酮与大脑思考能力的关系,这个假期如果你要玩什么智力游戏,记得先啃条巧克力。

News at: [2008/12/23 - 12:25] [0]

seiup

我发现了一个规律:每当我没办法上常用的新闻网站时,我就会去找新网站看;于是我的网络生活只会变得更加不和谐……例如这次,NYT才挂了几天,我就找到seiup这个早应该知道的好站。

News at: [2008/12/23 - 11:40] [0]

impressive

24ways看到这里,有三篇文章比较适合客栈的潜水设计者,一是加速多页面开发的Polypage简介;二是华丽的网络文字排版术;三是实用性较高的绝对纵列。如果你在海外做收费设计,一定要看IE6换算公式;在国内就免了,只有等微软推IE8和新OS,或者等IE6的技术支持过期,制作终极IE6病毒(哈哈,哈哈哈,哈哈哈哈哈哈哈哈哈哈哈哈哈——Joker模式)。