<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>YY in Limbo 混沌海狂想 &#187; Blogger</title>
	<atom:link href="http://www.limboy.com/category/web/blogger/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.limboy.com</link>
	<description>这里既空虚又充实，没有规则，没有约束，创造来自思考，生存依赖想像，现实源自梦想</description>
	<lastBuildDate>Fri, 07 Oct 2011 19:33:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>以国家之名</title>
		<link>http://www.limboy.com/2010/01/10/in-the-name-of-country/</link>
		<comments>http://www.limboy.com/2010/01/10/in-the-name-of-country/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 15:51:45 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Blogger]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[日漫]]></category>
		<category><![CDATA[纯水]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2010/01/10/in-the-name-of-country/</guid>
		<description><![CDATA[从我的Gmail里翻出的记录：

Mon, Feb 4, 2008 at 5:16 AM

subject: 注册信息
尊敬的用户，您的用户信息注册成功！用户名:dexter_yy
Thu, Feb 14, 2008 at 2:14 AM
subject: ICP备案审核通知（审核拒绝）
尊敬的用户:dexter_yy，很遗憾的通知您，您的ICP备案申请不能通过审核，拒绝原因是：您所备案的网站：请确认网站服务内容一栏填写是否准确.
接入商的核实意见：
(1) 信息不正确 请重新核对准确接入商


Mon, Feb 23, 2009 at 8:36 PM
subject: 关于网站备案用户执行“找回密码”操作后新密码的通知
尊敬的用户：dexter_yy，您于2009-02-23 20:33:34使用了备案用户找回密码功能，您找回的密码是：[马赛克]。请慎重保管注册密码！ 工业和信息化部网站备案系统
Wed, Mar 4, 2009 at 1:54 PM
subject: 关于ICP备案信息不符合备案要求退回修正的通知
尊敬的用户，很遗憾的通知您，您的ICP备案申请(limboy.com)，经[上海市通信管理局2]审核，不符合备案要求，现退回修改，原因请登陆系统查询。
Sat, Dec 12, 2009 at 2:59 PM
subject: 关于网站备案用户执行“找回密码”操作后新密码的通知
尊敬的用户：dexter_yy，您于2009-12-12 14:48:31使用了备案用户找回密码功能，您找回的密码是：XXXXXX。请慎重保管注册密码！ 工业和信息化部网站备案系统
Wed, Jan 6, 2010 at 10:45 AM
subject: 关于ICP备案申请审核通过的通知
尊敬的用户：您的ICP备案申请已通过审核,备案/许可证编号为: 沪ICP备10000943号 ，审核通过日期：2010-01-06。 
撒花～
本来我准备只贴出以上这些邮件内容，然后就结束本文点submit按钮发POST请求……但是这种把思考的工作托付给读者的写法，我还是有些不太放心，我担心这会让人误解我的意图，以为我是在嘲讽帝国衙门的政策法规和办事效率，不，如果这是你的理解，你错了，我是在嘲讽自己。
我的blog被关闭了大概有一两个月，在这段时间里，有很多人来问我，我都没回应，因为实在没什么好说的，没有黑幕，没有冤情，没有河蟹。我有充足的时间（早在一两年前我就知道不备案的后果），我有足够的帮助（盘古有专人为客户的备案提供支持），我有相对宽松的环境（直到现在，工信部仍然不会在处理申请的时候去审查网站的内容，甚至都不在乎网站是否存在，你只要去申请，只要你提供的信息不会对他们的工作流程造成困扰，他们就给你发ICP许可证），但我却把早就应该完成的备案，一直拖延到现在。都是我自己的错。
也许有人会说：你到底是真傻逼还是在装逼，错的首先是政府啊，你的blog被关闭，是因为现在这种荒谬愚蠢的国家政策，是因为统治阶层不懂得也不喜欢互联网的开放精神，是因为伟光正要控制信息，是因为工信部的备案系统太难用，是因为公务员的办事效率太低……总之，你怎么能不抱怨呢，你这不是麻木顺从的劣根性么
我会从土豆网里搜出一个视频来作为回答，不是什么经典大片，而是TV动画，如果不是宅男宅女应该就没看过——《地狱少女》第二部的第15话，标题是“以國家之名的墮落”，在这集故事里，女主角百合子的父亲是一个loser，家境穷困，生活很艰辛，他认为一切不幸的根源都是日本当时的首相大泉太一郎（这个名字应该不用注解罢），把全部时间投入到基层的助选活动中，支持另一个首相候选人，为此还不断借债，把自家的小工厂扔给妻子一人支撑。百合子在故事开始的时候就求助于地狱少女，希望把大泉首相立刻送进地狱，因为在这种家庭环境的影响下，她也认为只要没有大泉，人民生活就会幸福。但是后来，她的母亲劳累过度病倒了，在病床上，母亲说出了朴实的真相：
母亲：“不工作就不能生存……”
百合子：“果然这个国家的政治体制很异常！竟然要让人工作到弄跨身体才能生存！这都是大泉政府的错！”
母亲：“不是这样的……”
百合子：“什么不是啊，大泉首相上台前，我上小学的那个时候，生活不是还很轻松吗？！”
母亲：“更痛苦的时候也遇到过。可那时候一家人一起克服过来了，挥汗如雨的工作”。
百合子：“诶？”
虽然大泉的政策确实对百合子家工厂的衰败负有责任，但是导致境况越来越差的却是自己，不幸的根源是自己。自己的生活和自己的事业，最终还是需要自己的努力工作来改善，百合子的父亲把希望完全寄托在大环境的剧变上，但是大环境却不可能永远满足个人愿望，因为社会永远都由各种少数派和多数派拼凑而成，时代永远都像洪流一样让人身不由己的“前进”，正如比古清十郎说的那样：“时代和人心都有弊病，无论你有再强大的力量，也阻止不了时代的洪流。现今如此，今后亦然”。
最后，即使大环境真的剧变了，就能立刻体验到改善么？说到这里我想到了台湾的“马上就好”，想到了美国的“Change Has Come To [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/2010/01/10/in-the-name-of-country/change-1jpg/' rel='attachment wp-att-249' title='change-1.jpg'><img src='http://www.limboy.com/wp-content/uploads/2010/01/change-1.jpg' alt='change-1.jpg' style="margin:0 10px 0 0;float:left;" /></a>从我的Gmail里翻出的记录：</p>
<div style="margin-left:255px;">
<h4>Mon, Feb 4, 2008 at 5:16 AM</h4>
<blockquote><p>
subject: 注册信息</p>
<p>尊敬的用户，您的用户信息注册成功！用户名:dexter_yy</p></blockquote>
<h4>Thu, Feb 14, 2008 at 2:14 AM</h4>
<blockquote><p>subject: ICP备案审核通知（审核拒绝）</p>
<p>尊敬的用户:dexter_yy，很遗憾的通知您，您的ICP备案申请不能通过审核，拒绝原因是：您所备案的网站：请确认网站服务内容一栏填写是否准确.<br />
接入商的核实意见：<br />
(1) 信息不正确 请重新核对准确接入商</p></blockquote>
</div>
<p><span id="more-248"></span></p>
<h4>Mon, Feb 23, 2009 at 8:36 PM</h4>
<blockquote><p>subject: 关于网站备案用户执行“找回密码”操作后新密码的通知</p>
<p>尊敬的用户：dexter_yy，您于2009-02-23 20:33:34使用了备案用户找回密码功能，您找回的密码是：[马赛克]。请慎重保管注册密码！ 工业和信息化部网站备案系统</p></blockquote>
<h4>Wed, Mar 4, 2009 at 1:54 PM</h4>
<blockquote><p>subject: 关于ICP备案信息不符合备案要求退回修正的通知</p>
<p>尊敬的用户，很遗憾的通知您，您的ICP备案申请(limboy.com)，经[上海市通信管理局2]审核，不符合备案要求，现退回修改，原因请登陆系统查询。</p></blockquote>
<h4>Sat, Dec 12, 2009 at 2:59 PM</h4>
<blockquote><p>subject: 关于网站备案用户执行“找回密码”操作后新密码的通知</p>
<p>尊敬的用户：dexter_yy，您于2009-12-12 14:48:31使用了备案用户找回密码功能，您找回的密码是：XXXXXX。请慎重保管注册密码！ 工业和信息化部网站备案系统</p></blockquote>
<h4>Wed, Jan 6, 2010 at 10:45 AM</h4>
<blockquote><p>subject: 关于ICP备案申请审核通过的通知</p>
<p>尊敬的用户：您的ICP备案申请已通过审核,备案/许可证编号为: 沪ICP备10000943号 ，审核通过日期：2010-01-06。 </p></blockquote>
<p>撒花～</p>
<p>本来我准备只贴出以上这些邮件内容，然后就结束本文点submit按钮发POST请求……但是这种把思考的工作托付给读者的写法，我还是有些不太放心，我担心这会让人误解我的意图，以为我是在嘲讽帝国衙门的政策法规和办事效率，不，如果这是你的理解，你错了，我是在嘲讽自己。</p>
<p>我的blog被关闭了大概有一两个月，在这段时间里，有很多人来问我，我都没回应，因为实在没什么好说的，没有黑幕，没有冤情，没有河蟹。我有充足的时间（早在一两年前我就知道不备案的后果），我有足够的帮助（<a href="http://www.paangood.com/index.php" target="_blank">盘古</a>有专人为客户的备案提供支持），我有相对宽松的环境（直到现在，工信部仍然不会在处理申请的时候去审查网站的内容，甚至都不在乎网站是否存在，你只要去申请，只要你提供的信息不会对他们的工作流程造成困扰，他们就给你发ICP许可证），但我却把早就应该完成的备案，一直拖延到现在。都是我自己的错。</p>
<p>也许有人会说：你到底是真傻逼还是在装逼，错的首先是政府啊，你的blog被关闭，是因为现在这种荒谬愚蠢的国家政策，是因为统治阶层不懂得也不喜欢互联网的开放精神，是因为伟光正要控制信息，是因为工信部的<a target="_blank" href="http://www.google.com/search?q=%E5%B7%A5%E4%BF%A1%E9%83%A8%E7%BD%91%E7%AB%99%E5%A4%87%E6%A1%88%E7%B3%BB%E7%BB%9F%E5%A4%AA%E7%83%82%E6%98%AF%E5%A4%A7%E9%87%8F%E7%BD%91%E7%AB%99%E6%B2%A1%E6%9C%89%E5%A4%87%E6%A1%88%E7%9A%84%E4%B8%BB%E8%A6%81%E5%8E%9F%E5%9B%A0">备案系统太难用</a>，是因为公务员的办事效率太低……总之，你怎么能不抱怨呢，你这不是麻木顺从的劣根性么</p>
<p>我会从土豆网里搜出一个视频来作为回答，不是什么经典大片，而是TV动画，如果不是宅男宅女应该就没看过——《地狱少女》第二部的第15话，标题是“以國家之名的墮落”，在这集故事里，女主角百合子的父亲是一个loser，家境穷困，生活很艰辛，他认为一切不幸的根源都是日本当时的首相大泉太一郎（这个名字应该不用注解罢），把全部时间投入到基层的助选活动中，支持另一个首相候选人，为此还不断借债，把自家的小工厂扔给妻子一人支撑。百合子在故事开始的时候就求助于地狱少女，希望把大泉首相立刻送进地狱，因为在这种家庭环境的影响下，她也认为只要没有大泉，人民生活就会幸福。但是后来，她的母亲劳累过度病倒了，在病床上，母亲说出了朴实的真相：</p>
<p>母亲：“不工作就不能生存……”<br />
百合子：“果然这个国家的政治体制很异常！竟然要让人工作到弄跨身体才能生存！这都是大泉政府的错！”<br />
母亲：“不是这样的……”<br />
百合子：“什么不是啊，大泉首相上台前，我上小学的那个时候，生活不是还很轻松吗？！”<br />
母亲：“更痛苦的时候也遇到过。可那时候一家人一起克服过来了，挥汗如雨的工作”。<br />
百合子：“诶？”</p>
<p>虽然大泉的政策确实对百合子家工厂的衰败负有责任，但是导致境况越来越差的却是自己，不幸的根源是自己。自己的生活和自己的事业，最终还是需要自己的努力工作来改善，百合子的父亲把希望完全寄托在大环境的剧变上，但是大环境却不可能永远满足个人愿望，因为社会永远都由各种少数派和多数派拼凑而成，时代永远都像洪流一样让人身不由己的“前进”，正如比古清十郎说的那样：“时代和人心都有弊病，无论你有再强大的力量，也阻止不了时代的洪流。现今如此，今后亦然”。</p>
<p>最后，即使大环境真的剧变了，就能立刻体验到改善么？说到这里我想到了台湾的“马上就好”，想到了美国的“Change Has Come To America”，想到了日本的“政权更迭”……只要自己不行动，改善就不可能从天而降。如果等到那时才行动，就更不可能“马上就好”。既然早晚要行动，为什么不从现在就开始？</p>
<p>以国家之名的懒惰，以国家之名的松懈，以国家之名的放弃，也许能赢得一些同情和理解，但是最终失去那些东西的仍然是我们自己。</p>
<p>最后，百合子委托给地狱少女的不是大泉首相，而是自己的父亲。完整视频：</p>
<p><object width="500" height="380"><param name="movie" value="http://www.tudou.com/v/734oFQo5HwE"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="wmode" value="opaque"></param><embed src="http://www.tudou.com/v/734oFQo5HwE" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="420" height="363"></embed></object></p>
<p>PS：其实我并不是因为没及时备案就妄想出这些，而是因为长时间以来在twitter上体验到的氛围，积压在心底。</p>
<p>PS2：我的“拖延”习惯貌似是一种症状，叫“Procrastination”，由于最近帝国对网络的打击，相关文章的链接失效了^_^b&#8230;..请自行搜索……如果不是看了那些文章，我还以为这是个性呢……</p>
<p>PS3：虽然我常常几个月都不更新blog，但是在blog关掉的这段时间里，却叛逆似的积压了好几篇……有的发在论坛，有的放在evernote里，接下来会找时间发出来，希望不要拖延-___-b</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2010/01/10/in-the-name-of-country/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>写javascript是否要“预留退路”</title>
		<link>http://www.limboy.com/2009/01/20/is_javascript_need_degradation/</link>
		<comments>http://www.limboy.com/2009/01/20/is_javascript_need_degradation/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 08:31:36 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Blogger]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[web服务/应用]]></category>
		<category><![CDATA[用户体验]]></category>
		<category><![CDATA[纯水]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2009/01/20/is_javascript_need_degradation/</guid>
		<description><![CDATA[早上收到一封邮件，问的正好是我一直如哽在喉的事情：
对于web开发中的预留退路问题，我一直犹豫不决。在安全方面，自然是不能完全相信JavaScript，这点是确定的。但在用户体验方面，是否真的需要处处&#8221;预留退路&#8221;，照顾那些不支持JS或者对JS支持不好的用户吗？而UED工程师们又一直在说，不&#8221;预留退路&#8221;会惹恼数量不少的用户，但却从没有人提起具体会是多少用户、多少比例。不知道YY大神手里有这方面的数据吗？记得YY您在建立Limbo混沌海的时候，就选择了&#8221;不预留退路&#8221;的方式，不知当初又是出于什么原因这样考虑的呢？非常想听听您对&#8221;预留退路&#8221;问题的看法，期待您的回信。

这种设计观念，或者说原则，不管它叫什么名字，比如“预留退路”/“平稳退化”（Graceful Degradation），“渐进增强”（Progressive Enhancement），“不唐突的javascript”（Unobtrusive JavaScript）……从UE的角度来说是非常重要的，它的重要性不仅仅来自“有多少比例的用户不开启javascript支持”，而是因为如今访问web的方式正在变的越来越丰富多样，平板电脑（Tablet PC），上网本（netbook），掌上电脑（UMPC/MID），手机，iphone/ipod touch，这些平台有完全不同的性能，屏幕尺寸，浏览器，和操作方式，它们对javascript的支持也可能不一致（比如我以前抱怨过iphone的差别）。很多“严肃”的网站还需要考虑到“可访问性”（Accessibility），要保证能支持屏幕阅读器之类的设备，让那些有视觉缺陷的用户也可以无障碍的使用。此外还有语义网方面的要求，随着web2.0带来的海量信息，互联网也在向一台超级计算机的方向发展，需要靠网络本身去处理网络上的信息，而不是靠人的肉眼去一张网页一张网页的识别，现在的网页不仅仅是供人阅读，同样也需要面向机器，所以不能因为javascript的使用而影响到内容，让机器无法抓取和识别。
不过，以上这些观念有两方面的局限性：

第一，它们仅仅适用于传统的，“文档”式的网页，互联网的原始形态，只是内容的组织形式和传播手段，对于多数网页来说，内容才是根本，JS只是锦上添花，或者说是调料，最重要的是保证内容的完整语义，可访问性，以及适应过去/现在/未来的多种平台的能力。但是，除了“文档”类型的网页，现在也开始兴起大量的&#8221;web应用&#8221;，它们是在线的服务，也是在线的软件，对它们来说，浏览器是一个容器，网页是一种界面呈现方式，数据是异步获取的，频繁变化的，而且是细粒度的（比如并非一篇完整的文章，而是一若干来自数据库的字段），虽然同样以内容为中心，但是在这个语境里，“内容”是指纯粹的数据，而并非整块整块的HTML，一旦缺少了界面的交互功能，缺少了JS程序的支持，数据根本就无法呈现，也就根本不具备访问这些应用的条件，对于这种类型的网页来说，“预留退路”并非是不可侵犯的信条。
更多情况下，网页是复合的，会同时包含文档和软件应用的特点，于是就应该有选择的采纳那些适用于自己的原则，比如把JS和CSS与内容有效的分离，兼容多种平台，保证核心内容能被搜索引擎抓取，等等。
有一个很好的例子是土豆网的播放页，这是在土豆网全站当中，最重要同时也是web应用特征所占比例最大的页面之一，javascript和flashplayer对它来说是必不可少的基础运行环境，所以你可以看到它的html设计跟其他页面有很大差别：

script标签出现在html顶部——在其他网页里，我们习惯把css放在顶部，js放在底部，让页面先呈现，之后再附加行为，但是在播放页面里，播放器是最重要的内容，播放器加载的速度是最关键的用户体验。
HTML里会包含JS代码——只有一处，就是TUI.player.load，理由同样是为了保证播放器加载速度这个核心用户体验，不得不祭出document.write这种“非常不提倡”的必杀技来写入flash元素
有大量内容通过AJAX获取——比如评论，还有侧栏里的某些模块。因为它们是分离的数据，并非主要内容
没有使用正常的流式布局——player和toolbar都是脱离文档的独立区域，采用绝对定位
侧栏上的视频截图并没有把原始文件地址放在src属性里——延迟加载，如果不拖动滚动条，很多图片就不会无意义的下载

但是在很多方面同样也要做到Unobtrusive：

对于核心内容，比如视频信息，作者信息，都是遵循文档式网页的设计原则，对搜索引擎友好
在豆单播放页里，播放器下面的界面列表虽然是一个界面元素，但是也应该包含在文档的语义中，所以采用html的UL/LI来实现


第二个局限性是：这些原则早晚会过时。以前WaSP成员们千辛万苦推广这些观念的时候，互联网上到处都是惨不忍睹的网页，建立标准和规范，进行观念的革新，这些需求胜过了对技术的应用，而现在web标准早已普及，web应用需要进一步发展。以前Douglas Crockford，PPK在传道的时候，国外的网站还必须支持ie5.5甚至5.0之类的浏览器，恶劣的环境让web设计者和开发者们必须自我约束JS的使用，避免形成门槛。而现在，ie6在国外的占有率已经开始低于firefox（20%），很多网站已经开始放弃对ie6的支持，google和yahoo也在引导用户替换ie6。刚才我提到过，通过各种移动设备访问web的用户正在迅速增多，而这些设备对JS的支持不一致，但是这就像桌面电脑上的发展过程一样，同样是一个暂时现象，随着webkit变成iphone，android，palm pre这些新平台的统一标准，Mozilla也在积极把XUL技术应用到移动平台，环境的变化其实比桌面电脑要快的多。
我认为Graceful Degradation，Progressive Enhancement，Unobtrusive JavaScript这类东西都不适合过度的鼓吹，它们只是基础概念，是在特定时期特定环境中形成的经验和指导，而不应该是束缚前端开发人员和产品设计人员的教条，实际上，这些保守的观念来自技术的局限，而技术的局限不是我们逃避使用技术的理由，相反，我们可以仍然使用技术来打破这些局限，我们需要的是像ie7.js，excanvas.js，jquery.js这样的解决方案，而不是在开发中畏首畏尾，把每个前端开发者都教唆成原教旨主义者（上次我们公司的小麦对我说：前端开发都有这种倾向……我要说这是历史遗留的伤痕，将在世代中流传下去……）

================吐槽结束的分割线================

最后回复两个邮件里的问题……
关于用户的统计数据，土豆网是有的，可以想象由于多数用户比较大众和小白，IE6的比例相当高，比较冏的是，腾讯TT的比例也很高，等同于Firefox，我必须说它那种跟QQ绑定在一起，经常无意中启动，启动之后就设置为默认浏览器的套路，确实很强大……在普通用户当中，“默认”是强大的力量，默认的通常就是最熟悉的，最熟悉的就是最好的……不过，统计数据有时并不能真正反映出用户数量，比如Opera用户在你的统计数据里只占到0.01%，你就要思考一下究竟是Opera用户确实只有这么多，还是你的网站对Opera支持太差，导致人家都不来……
关于我的blog……其实我很早就计划重做这个blog了，现在的版本是一年半前的，从技术上来说很幼稚，我都懒得优化和修补了……但是，即使重做，我仍然不会把别人的“用户体验”放在第一位，就像侧栏里说明的那样：“优先满足个人喜好”。blog有很多类型，有的是个人媒体，有的是文集，有的是日记，有的是个性化空间，而我想要的blog是“个人信息聚合”，除了满足阅读的需求，必然还要包含大量个性化内容，也就是说，用户首先是我，其次才是读者和我的好友，而对于阅读者来说，浏览方式不止一种，比如我自己就更习惯用google reader来阅读blog，如果用户愿意选择网页形式来访问，就会被强加很多个性化内容，桀桀桀，喜欢的继续看，不喜欢的关掉页面离开，这也算双向选择罢……
]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/wp-content/uploads/2009/01/cloudbook.jpg' title='cloudbook.jpg'><img src='http://www.limboy.com/wp-content/uploads/2009/01/cloudbook.jpg' alt='cloudbook.jpg' style="border:0;float:left;margin:0 5px 5px 0;width:200px;" /></a>早上收到一封邮件，问的正好是我一直如哽在喉的事情：</p>
<p><em style="display:block">对于web开发中的预留退路问题，我一直犹豫不决。在安全方面，自然是不能完全相信JavaScript，这点是确定的。但在用户体验方面，是否真的需要处处&#8221;预留退路&#8221;，照顾那些不支持JS或者对JS支持不好的用户吗？而UED工程师们又一直在说，不&#8221;预留退路&#8221;会惹恼数量不少的用户，但却从没有人提起具体会是多少用户、多少比例。不知道YY大神手里有这方面的数据吗？记得YY您在建立Limbo混沌海的时候，就选择了&#8221;不预留退路&#8221;的方式，不知当初又是出于什么原因这样考虑的呢？非常想听听您对&#8221;预留退路&#8221;问题的看法，期待您的回信。</em><br />
<span id="more-216"></span><br />
这种设计观念，或者说原则，不管它叫什么名字，比如“预留退路”/“平稳退化”（Graceful Degradation），“渐进增强”（Progressive Enhancement），“不唐突的javascript”（Unobtrusive JavaScript）……从UE的角度来说是非常重要的，它的重要性不仅仅来自“有多少比例的用户不开启javascript支持”，而是因为如今访问web的方式正在变的越来越丰富多样，平板电脑（Tablet PC），上网本（netbook），掌上电脑（UMPC/MID），手机，iphone/ipod touch，这些平台有完全不同的性能，屏幕尺寸，浏览器，和操作方式，它们对javascript的支持也可能不一致（比如我以前抱怨过<a target="_blank" href="http://www.limboy.com/2008/03/08/iphone-app-develop/">iphone的差别</a>）。很多“严肃”的网站还需要考虑到<a target="_blank" href="http://www.junchenwu.com/WAI/wai-pageauth.html">“可访问性”（Accessibility）</a>，要保证能支持屏幕阅读器之类的设备，让那些有视觉缺陷的用户也可以无障碍的使用。此外还有语义网方面的要求，随着web2.0带来的海量信息，互联网也在向一台超级计算机的方向发展，需要靠网络本身去处理网络上的信息，而不是靠人的肉眼去一张网页一张网页的识别，现在的网页不仅仅是供人阅读，同样也需要面向机器，所以不能因为javascript的使用而影响到内容，让机器无法抓取和识别。</p>
<p>不过，以上这些观念有两方面的局限性：<br />
<br/></p>
<p>第一，它们仅仅适用于传统的，“文档”式的网页，互联网的原始形态，只是内容的组织形式和传播手段，对于多数网页来说，内容才是根本，JS只是锦上添花，或者说是调料，最重要的是保证内容的完整语义，可访问性，以及适应过去/现在/未来的多种平台的能力。但是，除了“文档”类型的网页，现在也开始兴起大量的&#8221;web应用&#8221;，它们是在线的服务，也是在线的软件，对它们来说，浏览器是一个容器，网页是一种界面呈现方式，数据是异步获取的，频繁变化的，而且是细粒度的（比如并非一篇完整的文章，而是一若干来自数据库的字段），虽然同样以内容为中心，但是在这个语境里，“内容”是指纯粹的数据，而并非整块整块的HTML，一旦缺少了界面的交互功能，缺少了JS程序的支持，数据根本就无法呈现，也就根本不具备访问这些应用的条件，对于这种类型的网页来说，“预留退路”并非是不可侵犯的信条。</p>
<p>更多情况下，网页是复合的，会同时包含文档和软件应用的特点，于是就应该有选择的采纳那些适用于自己的原则，比如把JS和CSS与内容有效的分离，兼容多种平台，保证核心内容能被搜索引擎抓取，等等。</p>
<p>有一个很好的例子是<a target="_blank" href="http://www.tudou.com/playlist/playindex.do?lid=4888295">土豆网的播放页</a>，这是在土豆网全站当中，最重要同时也是web应用特征所占比例最大的页面之一，javascript和flashplayer对它来说是必不可少的基础运行环境，所以你可以看到它的html设计跟其他页面有很大差别：</p>
<ul>
<li>script标签出现在html顶部——在其他网页里，我们习惯<a target="_blank" href="http://developer.yahoo.com/performance/rules.html#js_bottom">把css放在顶部，js放在底部</a>，让页面先呈现，之后再附加行为，但是在播放页面里，播放器是最重要的内容，播放器加载的速度是最关键的用户体验。</li>
<li>HTML里会包含JS代码——只有一处，就是TUI.player.load，理由同样是为了保证播放器加载速度这个核心用户体验，不得不祭出document.write这种“非常不提倡”的必杀技来写入flash元素</li>
<li>有大量内容通过AJAX获取——比如评论，还有侧栏里的某些模块。因为它们是分离的数据，并非主要内容</li>
<li>没有使用正常的流式布局——player和toolbar都是脱离文档的独立区域，采用绝对定位</li>
<li>侧栏上的视频截图并没有把原始文件地址放在src属性里——延迟加载，如果不拖动滚动条，很多图片就不会无意义的下载</li>
</ul>
<p>但是在很多方面同样也要做到Unobtrusive：</p>
<ul>
<li>对于核心内容，比如视频信息，作者信息，都是遵循文档式网页的设计原则，对搜索引擎友好</li>
<li>在豆单播放页里，播放器下面的界面列表虽然是一个界面元素，但是也应该包含在文档的语义中，所以采用html的UL/LI来实现</li>
</ul>
<p><br/></p>
<p>第二个局限性是：这些原则早晚会过时。以前<a target="_blank" href="http://www.webstandards.org/">WaSP</a>成员们千辛万苦推广这些观念的时候，互联网上到处都是惨不忍睹的网页，建立标准和规范，进行观念的革新，这些需求胜过了对技术的应用，而现在web标准早已普及，web应用需要进一步发展。以前Douglas Crockford，PPK在传道的时候，国外的网站还必须支持ie5.5甚至5.0之类的浏览器，恶劣的环境让web设计者和开发者们必须自我约束JS的使用，避免形成门槛。而现在，ie6在国外的占有率已经开始<a target="_blank" href="http://ajaxian.com/archives/i-wont-support-ie-6-in-2009">低于firefox（20%）</a>，很多网站已经开始<a href="http://www.infoq.com/cn/news/2008/07/ie6_on_its_way_out">放弃对ie6的支持</a>，google和yahoo也在引导用户替换ie6。刚才我提到过，通过各种移动设备访问web的用户正在迅速增多，而这些设备对JS的支持不一致，但是这就像桌面电脑上的发展过程一样，同样是一个暂时现象，随着webkit变成iphone，android，palm pre这些新平台的统一标准，Mozilla也在积极<a target="_blank" href="http://arstechnica.com/news.ars/post/20081224-mozilla-releases-second-alpha-of-fennec-mobile-browser.html">把XUL技术应用到移动平台</a>，环境的变化其实比桌面电脑要快的多。</p>
<p>我认为Graceful Degradation，Progressive Enhancement，Unobtrusive JavaScript这类东西都不适合过度的鼓吹，它们只是基础概念，是在特定时期特定环境中形成的经验和指导，而不应该是束缚前端开发人员和产品设计人员的教条，实际上，这些保守的观念来自技术的局限，而技术的局限不是我们逃避使用技术的理由，相反，我们可以仍然使用技术来打破这些局限，我们需要的是像<a target="_blank" href="http://code.google.com/p/ie7-js/">ie7.js</a>，<a target="_blank" href="http://excanvas.sourceforge.net/">excanvas.js</a>，jquery.js这样的解决方案，而不是在开发中畏首畏尾，把每个前端开发者都教唆成原教旨主义者（上次我们公司的小麦对我说：前端开发都有这种倾向……我要说这是历史遗留的伤痕，将在世代中流传下去……）<br />
<br/><br />
================吐槽结束的分割线================<br />
<br/><br />
最后回复两个邮件里的问题……</p>
<p>关于用户的统计数据，土豆网是有的，可以想象由于多数用户比较大众和小白，IE6的比例相当高，比较冏的是，腾讯TT的比例也很高，等同于Firefox，我必须说它那种跟QQ绑定在一起，经常无意中启动，启动之后就设置为默认浏览器的套路，确实很强大……在普通用户当中，“默认”是强大的力量，默认的通常就是最熟悉的，<a target="_blank" href="http://www.ruanyifeng.com/blog/2009/01/font_smoothing_anti-aliasing_and_sub-pixel_rendering.html">最熟悉的就是最好的</a>……不过，统计数据有时并不能真正反映出用户数量，比如Opera用户在你的统计数据里只占到0.01%，你就要思考一下究竟是Opera用户确实只有这么多，还是你的网站对Opera支持太差，导致人家都不来……</p>
<p>关于我的blog……其实我很早就计划重做这个blog了，现在的版本是一年半前的，从技术上来说很幼稚，我都懒得优化和修补了……但是，即使重做，我仍然不会把别人的“用户体验”放在第一位，就像侧栏里说明的那样：“优先满足个人喜好”。blog有很多类型，有的是个人媒体，有的是文集，有的是日记，有的是个性化空间，而我想要的blog是“个人信息聚合”，除了满足阅读的需求，必然还要包含大量个性化内容，也就是说，用户首先是我，其次才是读者和我的好友，而对于阅读者来说，浏览方式不止一种，比如我自己就更习惯用google reader来阅读blog，如果用户愿意选择网页形式来访问，就会被强加很多个性化内容，桀桀桀，喜欢的继续看，不喜欢的关掉页面离开，这也算双向选择罢……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2009/01/20/is_javascript_need_degradation/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>游戏类暨非IT类blog读者订阅对比报告</title>
		<link>http://www.limboy.com/2008/05/24/non-it-feed/</link>
		<comments>http://www.limboy.com/2008/05/24/non-it-feed/#comments</comments>
		<pubDate>Sat, 24 May 2008 10:14:11 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Blogger]]></category>
		<category><![CDATA[动漫]]></category>
		<category><![CDATA[游戏]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2008/05/24/feed-2/</guid>
		<description><![CDATA[1，我是标题党。
2，数据取自当日，Google Reader的show details功能。
3，选择标准一是要比较有代表性的，二是要跟it不沾边（游戏开发除外），在我熟悉的游戏领域里细分的更多，可以窥斑见豹，而且没有仅限于blog，只要是提供feed的网站就行。
4，feed订阅量是评价一个BLOG的指标，但一般订阅总数其实包含了大量重复的用户，比如有人同时在抓虾，鲜果，google reader，bloglines，豆瓣订阅了同一个blog，甚至是用浏览器自带的书签功能。如果要作横向比较，这个数字就并非很靠谱了，因为建立时间越早，用户越熟悉IT的BLOG，重复订阅的水分会越大。所以我在这里统一比较google reader的订阅量，作为目前几乎稳居霸主地位的feed阅读工具，而且杜绝了重复订阅，google reader的统计数字更有意义。
5，只是列举和对比，请用自己的智商分析
======================
名称：NTRPG
地址：http://www.ntrpg.org/
类型：群体blog，社区，portal
主题：PC游戏，桌面游戏，TRPG，hardcore玩家
======================
Posts per week: 0.0
Subscribers: 297
======================
名称：RPGdot
地址：http://www.rpgdot.com/
类型：资讯站（国外）
主题：PC游戏，RPG
======================
Posts per week: 43.4
Subscribers: 142
======================
名称：EN World
地址：http://www.enworld.org/
类型：社区（国外）
主题：TRPG
======================
Posts per week: 11.9
Subscribers: 397
======================
名称：GamingReport
地址：http://www.gamingreport.com
类型：新闻投递（国外）
主题：桌面游戏
======================
Posts per week: 25.2
Subscribers: 342
======================
名称：Joystiq
地址：http://www.joystiq.com/
类型：商业性blog（国外）
主题：主流video game
======================
Posts per week: 146.3
Subscribers: 23,757
======================
名称：1up
地址：http://www.1up.com/
类型：资讯站，portal（国外）
主题：主流video game
======================
Posts per week:	105.0
Subscribers: 3,895
======================
名称：Gamasutra News
地址：http://www.gamasutra.com/php-bin/news_index.php
类型：资讯站，社区，Portal（国外）
主题：游戏开发
======================
Posts per week: 85.4
Subscribers: 2,414
======================
名称：乌龙的BLOG（TGFC站长）
地址：http://blog.sina.com.cn/wulongx
类型：个人blog
主题：Console game
======================
Posts per week: 19.6
Subscribers: 78
======================
名称：风云的BLOG（网易的明星游戏程序员）
地址：http://blog.codingnow.com/
类型：个人blog
主题：游戏开发
======================
Posts per week: 1.2
Subscribers: 1,385
======================
名称：World of Ming（明星玩家）
地址：http://cn.worldofming.com/
类型：个人blog
主题：竞技游戏，WOW
======================
Posts per week: 4.7
Subscribers: 93
======================
名称：龙骑士城堡
地址：http://www.cndkc.net/
类型：新闻/推介，社区
主题：奇幻文学
======================
Posts per week: 3.3
Subscribers: [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/2008/05/24/non-it-feed/readjpg/' rel='attachment wp-att-191' title='read.jpg'><img src='http://www.limboy.com/wp-content/uploads/2008/05/read.jpg' alt='read.jpg' style="float:left;margin:0 5px 0 0;border:0;" /></a>1，我是标题党。</p>
<p>2，数据取自当日，Google Reader的show details功能。</p>
<p>3，选择标准一是要比较有代表性的，二是要跟it不沾边（游戏开发除外），在我熟悉的游戏领域里细分的更多，可以窥斑见豹，而且没有仅限于blog，只要是提供feed的网站就行。</p>
<p>4，feed订阅量是评价一个BLOG的指标，但一般订阅总数其实包含了大量重复的用户，比如有人同时在抓虾，鲜果，google reader，bloglines，豆瓣订阅了同一个blog，甚至是用浏览器自带的书签功能。如果要作横向比较，这个数字就并非很靠谱了，因为建立时间越早，用户越熟悉IT的BLOG，重复订阅的水分会越大<span id="more-190"></span>。所以我在这里统一比较google reader的订阅量，作为目前几乎稳居霸主地位的feed阅读工具，而且杜绝了重复订阅，google reader的统计数字更有意义。</p>
<p>5，只是列举和对比，请用自己的智商分析</p>
<p>======================<br />
名称：NTRPG<br />
地址：<a href="http://www.ntrpg.org/" target="_blank">http://www.ntrpg.org/</a><br />
类型：群体blog，社区，portal<br />
主题：PC游戏，桌面游戏，TRPG，hardcore玩家<br />
======================<br />
Posts per week: 0.0<br />
Subscribers: 297</p>
<p>======================<br />
名称：RPGdot<br />
地址：<a href="http://www.rpgdot.com/" target="_blank">http://www.rpgdot.com/</a><br />
类型：资讯站（国外）<br />
主题：PC游戏，RPG<br />
======================<br />
Posts per week: 43.4<br />
Subscribers: 142</p>
<p>======================<br />
名称：EN World<br />
地址：<a href="http://www.enworld.org/" target="_blank">http://www.enworld.org/</a><br />
类型：社区（国外）<br />
主题：TRPG<br />
======================<br />
Posts per week: 11.9<br />
Subscribers: 397</p>
<p>======================<br />
名称：GamingReport<br />
地址：<a href="http://www.gamingreport.com" target="_blank">http://www.gamingreport.com</a><br />
类型：新闻投递（国外）<br />
主题：桌面游戏<br />
======================<br />
Posts per week: 25.2<br />
Subscribers: 342</p>
<p>======================<br />
名称：Joystiq<br />
地址：<a href="http://www.joystiq.com/" target="_blank">http://www.joystiq.com/</a><br />
类型：商业性blog（国外）<br />
主题：主流video game<br />
======================<br />
Posts per week: 146.3<br />
Subscribers: 23,757</p>
<p>======================<br />
名称：1up<br />
地址：<a href="http://www.1up.com/" target="_blank">http://www.1up.com/</a><br />
类型：资讯站，portal（国外）<br />
主题：主流video game<br />
======================<br />
Posts per week:	105.0<br />
Subscribers: 3,895</p>
<p>======================<br />
名称：Gamasutra News<br />
地址：<a href="http://www.gamasutra.com/php-bin/news_index.php" target="_blank">http://www.gamasutra.com/php-bin/news_index.php</a><br />
类型：资讯站，社区，Portal（国外）<br />
主题：游戏开发<br />
======================<br />
Posts per week: 85.4<br />
Subscribers: 2,414</p>
<p>======================<br />
名称：乌龙的BLOG（TGFC站长）<br />
地址：<a href="http://blog.sina.com.cn/wulongx" target="_blank">http://blog.sina.com.cn/wulongx</a><br />
类型：个人blog<br />
主题：Console game<br />
======================<br />
Posts per week: 19.6<br />
Subscribers: 78</p>
<p>======================<br />
名称：风云的BLOG（网易的明星游戏程序员）<br />
地址：<a href="http://blog.codingnow.com/" target="_blank">http://blog.codingnow.com/</a><br />
类型：个人blog<br />
主题：游戏开发<br />
======================<br />
Posts per week: 1.2<br />
Subscribers: 1,385</p>
<p>======================<br />
名称：World of Ming（明星玩家）<br />
地址：<a href="http://cn.worldofming.com/" target="_blank">http://cn.worldofming.com/</a><br />
类型：个人blog<br />
主题：竞技游戏，WOW<br />
======================<br />
Posts per week: 4.7<br />
Subscribers: 93</p>
<p>======================<br />
名称：龙骑士城堡<br />
地址：<a href="http://www.cndkc.net/" target="_blank">http://www.cndkc.net/</a><br />
类型：新闻/推介，社区<br />
主题：奇幻文学<br />
======================<br />
Posts per week: 3.3<br />
Subscribers: 87</p>
<p>======================<br />
名称：朱學恆的路西法地獄<br />
地址：<a href="http://blogs.myoops.org/lucifer.php" target="_blank">http://blogs.myoops.org/lucifer.php</a><br />
类型：个人blog<br />
主题：网络名人，宅文化<br />
======================<br />
Posts per week:	5.4<br />
Subscribers: 827</p>
<p>======================<br />
名称：漫谈 &#8211; 我们的ACG<br />
地址：<a href="http://www.acgtalk.com/" target="_blank">http://www.acgtalk.com/</a><br />
类型：群体blog<br />
主题：动漫<br />
======================<br />
Posts per week: 5.4<br />
Subscribers: 513</p>
<p>======================<br />
名称：Blog@Newsarama<br />
地址：<a href="http://blog.newsarama.com/" target="_blank">http://blog.newsarama.com/</a><br />
类型：群体blog，社区（国外）<br />
主题：欧美动漫<br />
======================<br />
osts per week: 80.0<br />
Subscribers: 190</p>
<p>======================<br />
名称：格致<br />
地址：<a href="http://gezhi.org/" target="_blank">http://gezhi.org/</a><br />
类型：群体blog<br />
主题：科学，科研工作者<br />
======================<br />
Posts per week: 4.2<br />
Subscribers: 122</p>
<p>======================<br />
名称：Psytopic心理杂志<br />
地址：<a href="http://www.psytopic.com/mag/" target="_blank">http://www.psytopic.com/mag/</a><br />
类型：群体blog<br />
主题：心理学<br />
======================<br />
Posts per week: 0.0<br />
Subscribers: 370</p>
<p>======================<br />
名称：影像日报<br />
地址：<a href="http://mymovie.blogbus.com/" target="_blank">http://mymovie.blogbus.com/</a><br />
类型：群体blog<br />
主题：好莱坞电影<br />
======================<br />
Posts per week: 21.0<br />
Subscribers: 1,193</p>
<p>======================<br />
名称：美剧迷<br />
地址：<a href="http://www.meijumi.com/" target="_blank">http://www.meijumi.com/</a><br />
类型：blog，社区<br />
主题：美剧<br />
======================<br />
Posts per week: 30.6<br />
Subscribers: 5,112</p>
<p>拿一个起步比较晚的it类群体blog来对比：</p>
<p>======================<br />
名称：apple4us<br />
地址：<a href="http://apple4.us/" target="_blank">http://apple4.us/</a><br />
类型：群体blog<br />
主题：苹果粉丝<br />
======================<br />
Posts per week: 0.0<br />
Subscribers: 880</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2008/05/24/non-it-feed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>订阅地址转移到feedsky(12月27日地址再次修改)</title>
		<link>http://www.limboy.com/2007/12/27/feedsky/</link>
		<comments>http://www.limboy.com/2007/12/27/feedsky/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 05:23:33 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Blogger]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2007/11/14/feedsky/</guid>
		<description><![CDATA[以前用feedburner生成的feed我不会删除，如果你用google reader来订阅这个blog，其实可以什么都不用做，仍然会正常更新，不过还是建议你换成下面这个永久订阅地址：
http://feed.limboy.com
12月27日更新：地址修改了！不再是rss.limboy.com，还是feed.limboy.com，旧地址无效），因为feedsky域名映射的问题，订阅有一个月无法使用，如果不是因为生活在大中华局域网，不知道有谁能忍受这种服务……
当然，这也意味着我的blog已经恢复更新……关于离开了blog的这4个月，用一句话总结：没有blog的日子，并不会更轻松。
有一次跟老爸视频聊天的时候，他说了一句更让我触动的话：“人没那么容易累死的”。
喔对了，现在我的blog提供全文输出了……
顺便再推荐另一个feed, 虽然最近更新速度又慢了，不过仍然是国内最顶尖的游戏主题blogmedia喔！
而且ntrpg论坛跟国内大部分论坛有一个显著的不同是：回帖跟主帖有同等的价值，包含非常大的信息量，特别是跑题的帖子，而nt几乎没有不跑题的帖子……看看现在首页blog里的评论数量，或许能继承这个传统……
]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/2007/12/27/feedsky/rss_boitepng/' rel='attachment wp-att-156' title='rss_boite.png'><img src='http://www.limboy.com/wp-content/uploads/2007/11/rss_boite.png' alt='rss_boite.png' style="width:120px;float:left;margin:0 5px 10px 0;border:0;" /></a>以前用feedburner生成的feed我不会删除，如果你用google reader来订阅这个blog，其实可以什么都不用做，仍然会正常更新，不过还是建议你换成下面这个永久订阅地址：</p>
<p><a href="http://feed.limboy.com">http://feed.limboy.com</a></p>
<p><span style="color:red;font-weight:600;">12月27日更新：</span>地址修改了！不再是<span style="color:red;">rss</span>.limboy.com，还是<span style="color:red;">feed</span>.limboy.com，旧地址无效），因为<a href="http://blogs.feedsky.com/?p=186">feedsky域名映射的问题</a>，订阅有一个月无法使用，如果不是因为生活在大中华局域网，不知道有谁能忍受这种服务……</p>
<p>当然，这也意味着我的blog已经恢复更新……关于离开了blog的这4个月，用一句话总结：<strong>没有blog的日子，并不会更轻松。</strong><span id="more-155"></span></p>
<p>有一次跟老爸视频聊天的时候，他说了一句更让我触动的话：“人没那么容易累死的”。</p>
<p>喔对了，现在我的blog提供全文输出了……</p>
<p>顺便再推荐<a href="http://www.ntrpg.org/main/2007/09/03/new-feed/">另一个feed</a>, 虽然最近更新速度又慢了，不过仍然是国内最顶尖的<a href="http://www.ntrpg.org/">游戏主题blogmedia</a>喔！</p>
<p>而且ntrpg论坛跟国内大部分论坛有一个显著的不同是：回帖跟主帖有同等的价值，包含非常大的信息量，特别是跑题的帖子，而nt几乎没有不跑题的帖子……看看现在首页blog里的评论数量，或许能继承这个传统……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2007/12/27/feedsky/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>twitter,UNIX程序和互联网应用……</title>
		<link>http://www.limboy.com/2007/11/25/twitter_mashup/</link>
		<comments>http://www.limboy.com/2007/11/25/twitter_mashup/#comments</comments>
		<pubDate>Sun, 25 Nov 2007 13:30:25 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Blogger]]></category>
		<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[web服务/应用]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2007/11/25/twitter_mashup/</guid>
		<description><![CDATA[我对twitter本身没什么兴趣，虽然它在IT圈子里是无人不知无人不用的东西，但我注册后一直没用过，不过我今天突然想在blog里加入一种更快捷更像说话或msn签名的更新方式，想表达观点或感想时可以直接说一句话，自动显示在首页上，而不用为此专门发一篇文章。twitter正好能完美的实现以上功能，还提供了很方便的gtalk机器人，所以我没有选择重新写代码，而是直接把twitter整合到blog里……
unix系统有一个理念是：“do one thing and do it well”，就是指每个程序/软件只负责做一件简单的事，但要把这件事做到最好。当其他人或程序也需要做这件事情的时候，都可以直接使用现成的应用，而不需要重复开发相同的功能（windows则不同，很多软件都尽可能做的大而全，程序之间没有合作，功能重复，随着版本更新越来越臃肿，包括微软自己的产品）。我觉得这种理念也很适合互联网，如果把互联网看作一个巨大的操作系统平台，实际上在很多领域都有那么一些出类拔萃的应用，第一名第二名统治了大部分市场（很多新应用根本就没有竞争者），如果它们能专心的完善本身的功能（像google那样），做到无法复制，无法取代，同时加强开放性，提供友好完善的接口，支持各种形式的mashup，就可以成为系统中必不可少的组成部分，每当用户或开发者有一种需求时，都会自然的去使用现有的那个web产品，而不是重复劳动，或是在上百种选择之间不知所措，用户可以消除顾虑，放心的贡献内容，积累使用经验，开发者也可以省去重新发明轮子的麻烦，集中精力去创新，解决问题或满足新的需求……
当然这只是我期望的理想状态，现实中很多网站，特别是国内网站，都喜欢向大而全的方向发展，不管是新闻，聊天，相册，视频，blog还是论坛，别人有的我也要有（在国内还产生了这样一种现象：都喜欢做社区，因为社区是包罗万象的，最容易扩张的），好像只有这样才能获得大量用户，才能靠规模效应赚钱。但是我觉得，假如每个网站都做成门户，又有几个能获得大量用户呢，相反如果专心的在一个很简单的领域做到最好，像feedburner, paypal, amazon那样成为市场垄断者，却可以获得市场中大部分的用户，甚至还可以成为其他网站的底层基础……
以上划分出了两种选择，一种选择是成为门户和社区，特点是大而全，一种选择是成为专业的工具，平台，或服务提供者，特点是“do one thing and do it well”。前者确实能做的非常成功，但是互联网好像只能容下少数几家这样的成功者。我觉得，那些掌握技术的人和掌握资源的人都应该把精力更多的放在后者上面……
有人会说，做单一的服务容易被人模仿被人复制，在激烈竞争中如果不扩张就没有出路，其实这方面最典型的例子莫过于国内的“三百家视频网站”，看上去很恐怖，其实能打的也只有土豆，油库和五六几家，做的早和做的好的仍然会是赢家。自己的事情都还没做好，就开始想扩张想“做社区”，有非常好的案例：抓虾和鲜果。
btw，这是我的facebook主页地址：
http://www.facebook.com/profile.php?id=701759082
我的twitter主页地址：
http://twitter.com/dexteryy

]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/2007/11/25/twitter_mashup/twitterrific_iconjpg/' rel='attachment wp-att-172' title='twitterrific_icon.jpg'><img src='http://www.limboy.com/wp-content/uploads/2007/11/twitterrific_icon.jpg' alt='twitterrific_icon.jpg' style="margin:0 10px 5px 0;float:left;border:0;" /></a>我对twitter本身没什么兴趣，虽然它在IT圈子里是无人不知无人不用的东西，但我注册后一直没用过，不过我今天突然想在blog里加入一种更快捷更像说话或msn签名的更新方式，想表达观点或感想时可以直接说一句话，自动显示在首页上，而不用为此专门发一篇文章。<a href="http://twitter.com/" target="_blank">twitter</a>正好能完美的实现以上功能，还提供了很方便的gtalk机器人，所以我没有选择重新写代码，而是直接把twitter整合到blog里……</p>
<p>unix系统有一个理念是：“<a href="http://en.wikipedia.org/wiki/Unix_philosophy" target="_blank">do one thing and do it well</a>”，就是指每个程序/软件只负责做一件简单的事，但要把这件事做到最好。当其他人或程序也需要做这件事情的时候，都可以直接使用现成的应用，而不需要重复开发相同的功能（windows则不同，很多软件都尽可能做的大而全，程序之间没有合作，功能重复，随着版本更新越来越臃肿，包括微软自己的产品）。我觉得这种理念也很适合互联网<span id="more-171"></span>，如果把互联网看作一个巨大的操作系统平台，实际上在很多领域都有那么一些出类拔萃的应用，第一名第二名统治了大部分市场（很多新应用根本就没有竞争者），如果它们能专心的完善本身的功能（像google那样），做到无法复制，无法取代，同时加强开放性，提供友好完善的接口，支持各种形式的mashup，就可以成为系统中必不可少的组成部分，每当用户或开发者有一种需求时，都会自然的去使用现有的那个web产品，而不是重复劳动，或是在上百种选择之间不知所措，用户可以消除顾虑，放心的贡献内容，积累使用经验，开发者也可以省去重新发明轮子的麻烦，集中精力去创新，解决问题或满足新的需求……</p>
<p>当然这只是我期望的理想状态，现实中很多网站，特别是国内网站，都喜欢向大而全的方向发展，不管是新闻，聊天，相册，视频，blog还是论坛，别人有的我也要有（在国内还产生了这样一种现象：都喜欢做社区，因为社区是包罗万象的，最容易扩张的），好像只有这样才能获得大量用户，才能靠规模效应赚钱。但是我觉得，假如每个网站都做成门户，又有几个能获得大量用户呢，相反如果专心的在一个很简单的领域做到最好，像feedburner, paypal, amazon那样成为市场垄断者，却可以获得市场中大部分的用户，甚至还可以成为其他网站的底层基础……</p>
<p>以上划分出了两种选择，一种选择是成为门户和社区，特点是大而全，一种选择是成为专业的工具，平台，或服务提供者，特点是“do one thing and do it well”。前者确实能做的非常成功，但是互联网好像只能容下少数几家这样的成功者。我觉得，那些掌握技术的人和掌握资源的人都应该把精力更多的放在后者上面……</p>
<p>有人会说，做单一的服务容易被人模仿被人复制，在激烈竞争中如果不扩张就没有出路，其实这方面最典型的例子莫过于国内的“三百家视频网站”，看上去很恐怖，其实能打的也只有土豆，油库和五六几家，做的早和做的好的仍然会是赢家。自己的事情都还没做好，就开始想扩张想“做社区”，有非常好的案例：<a href="http://www.zhuaxia.com" target="_blank">抓虾</a>和<a href="http://www.xianguo.com" target="_blank">鲜果</a>。</p>
<p>btw，这是我的facebook主页地址：</p>
<p><a href="http://www.facebook.com/profile.php?id=701759082" target="_blank">http://www.facebook.com/profile.php?id=701759082</a></p>
<p>我的twitter主页地址：</p>
<p><a href="http://twitter.com/dexteryy" target="_blank">http://twitter.com/dexteryy<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2007/11/25/twitter_mashup/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>土豆生活翰部落格（上）</title>
		<link>http://www.limboy.com/2007/07/20/tudou_and_blog/</link>
		<comments>http://www.limboy.com/2007/07/20/tudou_and_blog/#comments</comments>
		<pubDate>Thu, 19 Jul 2007 16:06:56 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Blogger]]></category>
		<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[土豆网]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2007/07/20/tudou_and_blog/</guid>
		<description><![CDATA[讲谈社的少年向棒球漫画《王牌投手－振臂高挥》的改编动画，由于有安达充FEEL、有《热带雨林的爆笑生活》的监督水岛努、还有非常适合BL的男性角色们，所以最近似乎大受欢迎，提到这部动画是因为我突然想到了其中的一段对白，说是在人的身体之中，有三种非常重要的物质，它们分别代表着你的过去、现在和未来，它们是多巴胺、肾上腺激素、甲状腺激素。
我觉得自己现在一定很缺乏多巴胺，加入土豆网已经有两个多月，4个月以前的激情仍然潜伏在大脑里，但是好像离皮层太远……按照我以前的想法，逃离专门培养代码民工和项目经理的Outsourcing产业，加入到web2.0技术革命的最前沿，进入我所热爱（用keso的话来说应该是“信仰”？）的互联网的中心，从无趣的武汉来到真正的国际化都市，接触更多强者，第一次独立生活……这些都应该是很值得高兴、很值得满足一阵子的事情，但事实上……我的大脑很快就被紧张的工作、生活中的琐事、物质欲望、以及其他各种烦恼填充的快要内存溢出，满足感从一开始就被挤出大脑，再也找不回来……
正因为我自顾不暇，所以进入土豆以后，这个BLOG反而更新的少多了，虽然与以前相比，好像有更多可写的素材，但如果你知道我写BLOG的理由，就应该可以理解：一个自己都缺乏满足感，没时间去品味、消化的人，是不会舍得花时间写BLOG跟别人分享的……
缺乏写BLOG的欲望，也可能与成本太高有关，现在流行的twitter和饭否，都是因为降低了BLOG的参与成本，增强了交流，才大受欢迎的，虽然我不习惯用这种随时随地记录的WEB服务，但是也许我应该把这个blog的撰写、修改流程简化到像Aether的Avalon那样……
说到Avalon项目，当然要大力推荐一下，这是一个不管从哪方面说都很有新意的BLOG程序，前端完全用XML/XSL取代了XHTML，而且保持很好的兼容性，内容组织方式类似twitter，以时间来区分，简化到连标题都没有，非常大胆，牺牲文章的可见性和读者的易用性，换取作者的超爽体验和简易流程……哎呀，我其实是想描述优点的-____-b……没有任何后台界面，不用登录（使用openID），直接在文字段落上点击就可以增删修改，自动保存，没有任何按钮，发表新文章时也像在纸上写字那么简单，还可以通过GTALK来提交……总之，这是一个完全为作者利益服务，UI方面有很多创新的BLOG程序，缺点除了上面提到的，还有一点就是：它是基于.net的……
Aether是我在土豆认识的第一个同事（因为他是前端开发小组的lead，负责招聘-____-b），他可以利用偶尔的业余时间在星巴克用笔记本写Avalon，晚上加班的时候写BLOG，这种方式与我的习惯差之千里……实际上，在我刚进入土豆的一个多月里，几乎连业余时间都没有……一些在做外包开发的同学，都以为互联网公司很轻松，拿过VC的互联网公司更是休闲场所，实际上这里的前端开发工作更加繁重，要考虑的细节更多（文字/符号提示、整体流程），项目不但一个接一个，还有并行的，你需要主动替用户发现新需求（等到让用户来告诉你时，通常意味着已经落后了），实现过程中不能太随意太大胆，要考虑用户习惯，项目提交之后等待你的是QA的折磨和几轮DEBUG，谁也不敢掉以轻心，“在足够多的眼球下，任何BUG都无处隐藏”，Eric Raymond的名言其实说的是WEB2.0应用……上线之后还要持续跟踪、改进。更麻烦的是……土豆网恰好处于国内WEB2.0行业里竞争最激烈的领域，虽然土豆有很大优势，但是2006年已经涌现出了两三百家视频网站，除了YOUTUBE式的视频分享，还有很多五花八门打视频旗号的概念，有垂直领域的专题视频网站，也有新浪这样的门户参战，颇有以前互联网泡沫的feel，视频网站做大以后也是最烧钱的，也许过不了一年多，90%的视频网站都会扑街，这里的竞争和压力，远远超过豆瓣之类的网站……
本来打算在这篇文章里简单总结一下在土豆的感受，还有我来土豆之后做的几个项目……但是由于在NTRPG养成的跑题习惯……这篇文章已经太长了，到此结束……下一篇再作补充……
]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/2007/07/20/tudou_and_blog/logojpg/' rel='attachment wp-att-150' title='logo.jpg'><img src='http://www.limboy.com/wp-content/uploads/2007/07/logo.jpg' alt='logo.jpg' style="float:left;margin:0 10px 10px 0;" /></a>讲谈社的少年向棒球漫画《王牌投手－振臂高挥》的改编动画，由于有安达充FEEL、有《热带雨林的爆笑生活》的监督水岛努、还有非常适合BL的男性角色们，所以最近似乎大受欢迎，提到这部动画是因为我突然想到了其中的一段对白，说是在人的身体之中，有三种非常重要的物质，它们分别代表着你的<strong>过去</strong>、<strong>现在</strong>和<strong>未来</strong>，它们是<strong>多巴胺</strong>、<strong>肾上腺激素</strong>、<strong>甲状腺激素</strong>。<span id="more-149"></span></p>
<p>我觉得自己现在一定很缺乏多巴胺，加入<a href="http://www.tudou.com">土豆网</a>已经有两个多月，<a href="http://www.limboy.com/2007/03/03/herosback/">4个月以前的激情</a>仍然潜伏在大脑里，但是好像离皮层太远……按照我以前的想法，逃离专门培养代码民工和项目经理的Outsourcing产业，加入到web2.0技术革命的最前沿，进入我所热爱（用<a href="http://blog.donews.com/keso/archive/2007/07/16/1186858.aspx">keso的话</a>来说应该是“信仰”？）的互联网的中心，从无趣的武汉来到真正的国际化都市，接触更多强者，第一次独立生活……这些都应该是很值得高兴、很值得满足一阵子的事情，但事实上……我的大脑很快就被紧张的工作、生活中的琐事、物质欲望、以及其他各种烦恼填充的快要内存溢出，满足感从一开始就被挤出大脑，再也找不回来……</p>
<p>正因为我自顾不暇，所以进入土豆以后，这个BLOG反而更新的少多了，虽然与以前相比，好像有更多可写的素材，但如果你知道我写BLOG的<a href="http://www.limboy.com/2006/12/03/continue/">理由</a>，就应该可以理解：一个自己都缺乏满足感，没时间去品味、消化的人，是不会舍得花时间写BLOG跟别人分享的……</p>
<p>缺乏写BLOG的欲望，也可能与成本太高有关，现在流行的<a href="http://twitter.com">twitter</a>和<a href="http://fanfou.com/">饭否</a>，都是因为降低了BLOG的参与成本，增强了交流，才大受欢迎的，虽然我不习惯用这种随时随地记录的WEB服务，但是也许我应该把这个blog的撰写、修改流程简化到像Aether的<a href="http://woooh.com/2007/07/14">Avalon</a>那样……</p>
<p>说到Avalon项目，当然要大力推荐一下，这是一个不管从哪方面说都很有新意的BLOG程序，前端完全用XML/XSL取代了XHTML，而且保持很好的兼容性，内容组织方式类似twitter，以时间来区分，简化到连标题都没有，非常大胆，牺牲文章的可见性和读者的易用性，换取作者的超爽体验和简易流程……哎呀，我其实是想描述优点的-____-b……没有任何后台界面，不用登录（使用<a href="http://www.google.com/search?aq=o&#038;hl=en&#038;newwindow=1&#038;client=firefox-a&#038;rls=org.mozilla%3Azh-CN%3Aofficial&#038;hs=frF&#038;q=OpenID+%E4%B8%AD%E6%96%87&#038;btnG=Search">openID</a>），直接在文字段落上点击就可以增删修改，自动保存，没有任何按钮，发表新文章时也像在纸上写字那么简单，还可以通过GTALK来提交……总之，这是一个完全为作者利益服务，UI方面有很多创新的BLOG程序，缺点除了上面提到的，还有一点就是：它是基于.net的……</p>
<p>Aether是我在土豆认识的第一个同事（因为他是前端开发小组的lead，负责招聘-____-b），他可以利用偶尔的业余时间在星巴克用笔记本写Avalon，晚上加班的时候写BLOG，这种方式与我的习惯差之千里……实际上，在我刚进入土豆的一个多月里，几乎连业余时间都没有……一些在做外包开发的同学，都以为互联网公司很轻松，拿过VC的互联网公司更是休闲场所，实际上这里的前端开发工作更加繁重，要考虑的细节更多（文字/符号提示、整体流程），项目不但一个接一个，还有并行的，你需要主动替用户发现新需求（等到让用户来告诉你时，通常意味着已经落后了），实现过程中不能太随意太大胆，要考虑用户习惯，项目提交之后等待你的是QA的折磨和几轮DEBUG，谁也不敢掉以轻心，“在足够多的眼球下，任何BUG都无处隐藏”，Eric Raymond的名言其实说的是WEB2.0应用……上线之后还要持续跟踪、改进。更麻烦的是……土豆网恰好处于国内WEB2.0行业里竞争最激烈的领域，虽然土豆有很大优势，但是2006年已经涌现出了两三百家视频网站，除了YOUTUBE式的视频分享，还有很多五花八门打视频旗号的概念，有垂直领域的专题视频网站，也有新浪这样的门户参战，颇有以前互联网泡沫的feel，视频网站做大以后也是最烧钱的，也许过不了一年多，90%的视频网站都会扑街，这里的竞争和压力，远远超过豆瓣之类的网站……</p>
<p>本来打算在这篇文章里简单总结一下在土豆的感受，还有我来土豆之后做的几个项目……但是由于在NTRPG养成的跑题习惯……这篇文章已经太长了，到此结束……下一篇再作补充……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2007/07/20/tudou_and_blog/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>YY专用Wordpress主题终于完成了……</title>
		<link>http://www.limboy.com/2007/04/04/theme/</link>
		<comments>http://www.limboy.com/2007/04/04/theme/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 07:43:53 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Blogger]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[用户体验]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2007/04/04/theme/</guid>
		<description><![CDATA[上次Blogger被GFWED的时候，我说过坚决不转移到WORDPRESS是因为它太迎合我把东西做复杂的欲望，现在实践证明确实如此……
由于形势所迫（不仅因为GFW），我不得不放弃Blogger重新建立一个稳定的BLOG，熟悉WP的插件加上制作这个主题花了4天时间，超乎想象了……时间主要浪费在设计、浏览器兼容上面……本帖我将用来发牢骚，并且分享一些经验教训，没兴趣的同学可以跳转到其他地方去了……
页面设计在中途大幅度修改了3次，这次我想恢复到传统风格，因为如今那种简洁大字体大空白色彩明亮固定宽度居中对齐边缘有阴影的WEB2.0风格太普遍了，作为代表个人形象的BLOG，我希望有一些不同的个性，而且我虽然也喜欢“简洁”，但不喜欢“简单”。本来是想把WEB2.0的设计元素和配色与奇幻游戏元素结合在一起，但尝试过之后发现很困难，主要是配色很难，而且“留白”在WEB2.0风格里确实占很重要的地位，但在这个页面里我没办法留很多空白（何况最初就决定要做三栏布局）。与做图和配色相比，我还是更喜欢写代码，所以我懒得花更多时间来完善目前的设计了……
这个BLOG的布局可以说是实验风格的……三栏的液态布局，左栏的宽度是自适应的，还有一部分内容固定在窗口顶部，无论怎样拖滚动条，它都会随着页面移动，实际上我是受了Westeros的启发才想用这种相对窗口固定的设计，但是实现起来很麻烦（Westeros的效果其实也只支持IE7和FIREFOX，在IE6里会变得像框架布局一样），如果用JS来实现，移动就不可能是平滑的，衔接的效果不好，用CSS来实现却有很严重的缺陷，首先IE7以下版本的浏览器不支持position:fixed属性，必须用HACK来模拟，我采用的方法是用一个DIV来包含所有元素，在IE7以下版本里给它height:100%;overflow-y:auto;的属性，把顶部元素的定位改成绝对，所以IE6用户看到的右侧滚动条其实不是浏览器本身的……
由于用了两种布局方式，而液态布局的三栏里既有浮动也有非浮动，再加上中间的羊皮纸效果必须在左右边缘采用不同的背景图，很多地方的定位都要精确到像素……所以这个主题的CSS写起来很头疼，DEBUG花了很多时间，目前在opera里似乎还有一个毛病，但我一向都是歧视opera用户的（因为占有率才0.8%左右嘛），暂时懒得改了……
由于设计上的限制，有2个地方的布局不得不用JS来调整，一个是改变顶部fixed层的宽度，因为它的定位方式是fixed或absolute，无法做出液态的宽度（也就是说宽度随浏览器的大小自动填充，但是与右侧总保持固定距离），另一个是让左栏和中栏的高度相等，由于无法使用统一的背景图片，所以这里也只能用JS来调整……
我倒不在意什么“预留退路”、“无障碍”之类的JS设计观念，反正如今在WEB上混没有JS已经寸步难行了，而且我没有用JS来影响内容…………但是用JS来调整布局会遇到另一个问题，如今的JS代码都是放在window.onload里运行的，因为页面加载完成、DOM建立之前，很多方法都不能用，但问题在于，window.onload不仅要等DOM加载完，还要等图片（指img标签）加载完，我的BLOG页面里整合了很多东西，每篇文章的题图、YUPOO的相册、豆瓣的封面……如果要等这些东西都加载完才修正布局，显然是不现实的，幸好我在国外一个BLOG上找到解决办法（地址忘记了，抱歉），可以在onload事件触发之前、DOM刚加载完时就执行修正布局的函数：
// for Mozilla DOM onloaded
if&#160;(document.addEventListener)&#160;
{
&#160; &#160; document.addEventListener(&#34;DOMContentLoaded&#34;, DOMsinit, null);
}
DOMsinit就是我要执行的函数，第三个参数本来是布尔值，用来决定事件在冒泡还是捕获阶段触发，但DOM加载的事件显然没这些东西，所以必须传空值，以上是适合标准兼容浏览器的方法，对IE要用完全不同的代码（放在HTML里）：
&#60;!--[if IE]&#62;
&#160; &#160; &#60;script defer src=&#34;&#60;?php bloginfo('stylesheet_directory'); ?&#62;/js/ie_onload.js&#34; type=&#34;text/javascript&#34;&#62;&#60;/script&#62;
&#60;![endif]--&#62;
ie_onload.js就是要执行的函数……为了IE要专门增添一个JS文件，真是麻烦……我还没搞清除defer是什么鬼东西，反正这样用就没错了……
就算你只是使用window.onload，也要考虑到：WP本身和某些插件，都可能有自己的JS函数，会用到window.onload，如果你直接写window.onload=function(){&#8230;&#8230;..}，就会把其他功能覆盖掉，一定要用这类方法：
if ( typeof window.onload!='function')
{
&#160; &#160; window.onload=function()
&#160; &#160; {
&#160; &#160; &#160; &#160; yysinit();&#160;&#160; //页面加载完成时调用的函数
&#160; &#160; }
}
else
{
&#160; &#160; var&#160;oldonload=window.onload;
&#160; &#160; window.onload=function()
&#160; &#160; {
&#160; &#160; &#160; &#160; oldonload();
&#160; &#160; &#160; &#160; yysinit();&#160; &#160; //页面加载完成时调用的函数
&#160; &#160; }
}
本来我还希望用户在改变浏览器窗口大小后，顶部的宽度也能跟着调整（因为用CSS实现的自适应都有这种效果），所以用了window.onresize事件，但大家都知道，即使是液态布局，当窗口小于一定宽度后，布局也会乱掉，因为容器虽然可以自动变形，但内容却不会改变，浮动定位在这方面最敏感……由于我的BLOG页面里内容比较多，所以宽度不能少于900多px，在window.onresize里我也做了相应的处理，但是问题就出来了……这个该死的事件在不同浏览器里的行为不一致，在按住窗口边框——拖动——放开鼠标的操作之后，onresize在firefox里会触发1次，在IE7里会触发2次，而在IE6里……居然触发3次&#8230;&#8230;结果就是：限制最小宽度的函数在IE6里会导致浏览器假死……我觉得没必要为这种BUG自找麻烦，所以把onresize改成这样了：
window.onresize=function(){
&#160; &#160; var&#160;aVersion=navigator.appVersion;
&#160; &#160; var&#160;version=parseInt(aVersion.split(&#34;MSIE&#34;)[1]);
&#160; &#160; 
&#160; [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/wp-content/uploads/2007/04/wp.jpg' title='mytheme'><img src='http://www.limboy.com/wp-content/uploads/2007/04/wp.thumbnail.jpg' alt='mytheme' style="float:left;margin:0 10px 0 0px;" /></a>上次Blogger被GFWED的时候，我说过坚决不转移到WORDPRESS是因为<a href="http://www.limboy.com/2006/12/03/continue/">它太迎合我把东西做复杂的欲望</a>，现在实践证明确实如此……</p>
<p>由于形势所迫（不仅因为GFW），我不得不放弃Blogger重新建立一个稳定的BLOG，熟悉WP的插件加上制作这个主题花了4天时间，超乎想象了……时间主要浪费在设计、浏览器兼容上面……本帖我将用来发牢骚，并且分享一些经验教训，没兴趣的同学可以跳转到其他地方去了……<span id="more-100"></span></p>
<p>页面设计在中途大幅度修改了3次，这次我想恢复到传统风格，因为如今那种简洁大字体大空白色彩明亮固定宽度居中对齐边缘有阴影的WEB2.0风格太普遍了，作为代表个人形象的BLOG，我希望有一些不同的个性，而且我虽然也喜欢“简洁”，但不喜欢“简单”。本来是想把WEB2.0的设计元素和配色与奇幻游戏元素结合在一起，但尝试过之后发现很困难，主要是配色很难，而且“留白”在WEB2.0风格里确实占很重要的地位，但在这个页面里我没办法留很多空白（何况最初就决定要做三栏布局）。与做图和配色相比，我还是更喜欢写代码，所以我懒得花更多时间来完善目前的设计了……</p>
<p>这个BLOG的布局可以说是实验风格的……三栏的液态布局，左栏的宽度是自适应的，还有一部分内容固定在窗口顶部，无论怎样拖滚动条，它都会随着页面移动，实际上我是受了<a href="http://www.westeros.org/About/">Westeros</a>的启发才想用这种相对窗口固定的设计，但是实现起来很麻烦（Westeros的效果其实也只支持IE7和FIREFOX，在IE6里会变得像框架布局一样），如果用JS来实现，移动就不可能是平滑的，衔接的效果不好，用CSS来实现却有很严重的缺陷，首先IE7以下版本的浏览器不支持position:fixed属性，必须用HACK来模拟，我采用的方法是用一个DIV来包含所有元素，在IE7以下版本里给它height:100%;overflow-y:auto;的属性，把顶部元素的定位改成绝对，所以IE6用户看到的右侧滚动条其实不是浏览器本身的……</p>
<p>由于用了两种布局方式，而液态布局的三栏里既有浮动也有非浮动，再加上中间的羊皮纸效果必须在左右边缘采用不同的背景图，很多地方的定位都要精确到像素……所以这个主题的CSS写起来很头疼，DEBUG花了很多时间，目前在opera里似乎还有一个毛病，但我一向都是歧视opera用户的（因为占有率才0.8%左右嘛），暂时懒得改了……</p>
<p>由于设计上的限制，有2个地方的布局不得不用JS来调整，一个是改变顶部fixed层的宽度，因为它的定位方式是fixed或absolute，无法做出液态的宽度（也就是说宽度随浏览器的大小自动填充，但是与右侧总保持固定距离），另一个是让左栏和中栏的高度相等，由于无法使用统一的背景图片，所以这里也只能用JS来调整……</p>
<p>我倒不在意什么“预留退路”、<a href="http://realazy.org/blog/2007/01/01/ppk-on-javascript-study-note-part02-3/">“无障碍”</a>之类的JS设计观念，反正如今在WEB上混没有JS已经寸步难行了，而且我没有用JS来影响内容…………但是用JS来调整布局会遇到另一个问题，如今的JS代码都是放在window.onload里运行的，因为页面加载完成、DOM建立之前，很多方法都不能用，但问题在于，window.onload不仅要等DOM加载完，还要等图片（指img标签）加载完，我的BLOG页面里整合了很多东西，每篇文章的题图、YUPOO的相册、豆瓣的封面……如果要等这些东西都加载完才修正布局，显然是不现实的，幸好我在国外一个BLOG上找到解决办法（地址忘记了，抱歉），可以在onload事件触发之前、DOM刚加载完时就执行修正布局的函数：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">// for Mozilla DOM onloaded</span></li>
<li><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">addEventListener</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">addEventListener</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">DOMContentLoaded</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">, </span><span style="color: Blue;">DOMsinit</span><span style="color: Gray;">, </span><span style="color: Green;">null</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>DOMsinit就是我要执行的函数，第三个参数本来是布尔值，用来决定事件在冒泡还是捕获阶段触发，但DOM加载的事件显然没这些东西，所以必须传空值，以上是适合标准兼容浏览器的方法，对IE要用完全不同的代码（放在HTML里）：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">&lt;!--[if IE]&gt;</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp; &lt;script defer src=&quot;&lt;?php bloginfo('stylesheet_directory'); ?&gt;/js/ie_onload.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;</span></li>
<li><span style="color: #ffa500;">&lt;![endif]--&gt;</span></li></ol></div>
<p>ie_onload.js就是要执行的函数……为了IE要专门增添一个JS文件，真是麻烦……我还没搞清除defer是什么鬼东西，反正这样用就没错了……</p>
<p>就算你只是使用window.onload，也要考虑到：WP本身和某些插件，都可能有自己的JS函数，会用到window.onload，如果你直接写window.onload=function(){&#8230;&#8230;..}，就会把其他功能覆盖掉，一定要用这类方法：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Gray;"> </span><span style="color: Green;">typeof</span><span style="color: Gray;"> </span><span style="color: Teal;">window</span><span style="color: Gray;">.</span><span style="color: Blue;">onload</span><span style="color: Gray;">!=</span><span style="color: #8b0000;">'</span><span style="color: Red;">function</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Teal;">window</span><span style="color: Gray;">.</span><span style="color: Blue;">onload</span><span style="color: Gray;">=</span><span style="color: Green;">function</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">yysinit</span><span style="color: Olive;">()</span><span style="color: Gray;">;&nbsp;&nbsp; </span><span style="color: #ffa500;">//页面加载完成时调用的函数</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">else</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">oldonload</span><span style="color: Gray;">=</span><span style="color: Teal;">window</span><span style="color: Gray;">.</span><span style="color: Blue;">onload</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Teal;">window</span><span style="color: Gray;">.</span><span style="color: Blue;">onload</span><span style="color: Gray;">=</span><span style="color: Green;">function</span><span style="color: Olive;">()</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">oldonload</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">yysinit</span><span style="color: Olive;">()</span><span style="color: Gray;">;&nbsp; &nbsp; </span><span style="color: #ffa500;">//页面加载完成时调用的函数</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>本来我还希望用户在改变浏览器窗口大小后，顶部的宽度也能跟着调整（因为用CSS实现的自适应都有这种效果），所以用了window.onresize事件，但大家都知道，即使是液态布局，当窗口小于一定宽度后，布局也会乱掉，因为容器虽然可以自动变形，但内容却不会改变，浮动定位在这方面最敏感……由于我的BLOG页面里内容比较多，所以宽度不能少于900多px，在window.onresize里我也做了相应的处理，但是问题就出来了……这个该死的事件在不同浏览器里的行为不一致，在按住窗口边框——拖动——放开鼠标的操作之后，onresize在firefox里会触发1次，在IE7里会触发2次，而在IE6里……居然触发3次&#8230;&#8230;结果就是：限制最小宽度的函数在IE6里会导致浏览器假死……我觉得没必要为这种BUG自找麻烦，所以把onresize改成这样了：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Teal;">window</span><span style="color: Gray;">.</span><span style="color: Blue;">onresize</span><span style="color: Gray;">=</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">aVersion</span><span style="color: Gray;">=</span><span style="color: Teal;">navigator</span><span style="color: Gray;">.</span><span style="color: Blue;">appVersion</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">version</span><span style="color: Gray;">=</span><span style="color: Blue;">parseInt</span><span style="color: Olive;">(</span><span style="color: Blue;">aVersion</span><span style="color: Gray;">.</span><span style="color: Blue;">split</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">MSIE</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)[</span><span style="color: Maroon;">1</span><span style="color: Olive;">])</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">body</span><span style="color: Gray;">.</span><span style="color: Blue;">offsetWidth</span><span style="color: Gray;">&lt;</span><span style="color: Maroon;">941</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">version</span><span style="color: Gray;">&gt;=</span><span style="color: Maroon;">7</span><span style="color: Gray;"> || </span><span style="color: Blue;">aVersion</span><span style="color: Gray;">.</span><span style="color: Blue;">indexOf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">MSIE</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">==-</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Blue;">getid</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">outwrapper</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">style</span><span style="color: Gray;">.</span><span style="color: Blue;">width</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">942px</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">else</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">version</span><span style="color: Gray;">&gt;=</span><span style="color: Maroon;">7</span><span style="color: Gray;"> || </span><span style="color: Blue;">aVersion</span><span style="color: Gray;">.</span><span style="color: Blue;">indexOf</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">MSIE</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span><span style="color: Gray;">==-</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span><span style="color: Blue;">getid</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">outwrapper</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">style</span><span style="color: Gray;">.</span><span style="color: Blue;">width</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">getid</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">top</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">style</span><span style="color: Gray;">.</span><span style="color: Blue;">width</span><span style="color: Gray;">=</span><span style="color: Blue;">getid</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">sidebar-1</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">offsetLeft</span><span style="color: Gray;">+</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">px</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">}</span></li></ol></div>
<p>version>=7 和 aVersion.indexOf(&#8220;MSIE&#8221;)==-1 都是浏览器校验，表示只有当IE版本大于或等于7，或者在非IE浏览器里，才限制页面的最小宽度……</p>
<p>本来还想加一些JS效果，比如可折叠的侧栏widget之类，但是把兼容性改下来之后就完全没心情了………………</p>
<p>最后还是回到设计话题，自适应宽度的布局其实还是比较迎合大屏幕（高分辨率），可以充分利用空间，改善用户体验，但是如果页面里内容比较紧凑，那么对于普通分辨率的用户（1024×768）来说，效果反而不如固定宽度……目前主流的BLOG设计是固定宽度，单栏或两栏，底部再加上一栏放各种列表，所以我的布局方法虽然技术上麻烦的多，但也许并不讨好，那也没办法的事……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2007/04/04/theme/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>恢复更新 &amp; 为什么要恢复更新</title>
		<link>http://www.limboy.com/2006/12/03/continue/</link>
		<comments>http://www.limboy.com/2006/12/03/continue/#comments</comments>
		<pubDate>Sat, 02 Dec 2006 18:13:25 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Blogger]]></category>
		<category><![CDATA[纯水]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2006/12/03/continue/</guid>
		<description><![CDATA[好罢，其实11月22日的时候我就知道Blogspot被解封了，但是拖到今天才恢复更新，一方面是担心像中文WIKI那样昙花一现，一方面也是因为最近工作太忙了……
现在做的项目——美国ICPS协会的医生数据库&#038;网站，在本周三终于完成了一期的计划，为了按时交付，这几周大部分的工作日都要加班到晚上9至10点，周六也是一样。这个网站完全采用符合WEB标准的DIV+CSS结构，包括后台管理，连复杂的表单都没有用TABLE排版，而公司里的PHP程序员对CSS并不熟悉，所以大部分页面的布局和调整都要由我来做，工作量很大，另外网站应用了大量AJAX（我说的AJAX不仅包括XMLhttpRequest，也包括DHTML……），有时JS代码比PHP代码还要多，大部分人都是JS和DOM编程的新手，所以在开发中遇到过很多问题（有时间的话我会在BLOG上总结一下，并且写一些重用性更好的代码），虽然最后都解决了，但也耽误了一些时间，另外设计上也有很多不成熟的地方，甚至还有人问我是不是把项目当作实验品……总之，频繁加班一方面是因为客户需求不明确、没有清晰稳定的设计，一方面也是因为技术上的不成熟，不过我觉得这种不成熟的阶段是必须经历的，而且很有好处，通过这种实践，不但积累了经验、加深了认识，也暴露很多问题，而这些问题在以后的开发中都可以避免，团队和个人的能力都得到了提高，以后的工作就会更容易。唯一的遗憾是，虽然这个网站采用了大量WEB2.0技术，强调用户体验，在二期还会加入BLOG和SNS的功能，但它没有做到信任用户，管理功能非常“强大”，实际上是一个披着2.0皮的1.0网站……
最深的地下城也有很长时间未更新了，NTRPG的DDO专题也没有精力去帮忙，真是很惭愧（不过，我也不是什么都没做）。虽然ICPS项目做完了也不一定意味着有更多空闲时间，但我还是要慢慢调整回正常状态，BLOG也一定要恢复，重新写BLOG的时候我也考虑过一些事情，比如为什么要坚持用blogger.com，而不是用Wordpress或drupal重新做一个？为什么要继续写Blog，对自己对别人都有什么意义？对于这两个问题，我的答案是：

坚持用blogger.com首先是因为我认同Google，并不是盲目信任，而是因为Google符合我的价值观和我对互联网的理想。我也很喜欢blogger.com的UI设计，这种使用体验可以提高我对Blog的热情，虽然Wordpress的后台设计也很棒，功能也要强大的多，但这就会太迎合我把东西做复杂做华丽的欲望，我现在不能把太多精力花在BLOG的外观和功能上，而是要创造实实在在的内容，我需要的不是一个华丽的Blog网站，而是一个Blogging的工具。另外，Wordpress的功能太强也是很无趣的事情，我更喜欢自己用hack来实现那些功能。
我分析过别人写Blog的理由，一般都是以下几种：
“我有很强的表现欲望，喜欢展示个性”
“我一直想做个人网站，想通过它展示自我/出名/赚钱，但我不熟悉相关技术，而建立Blog的门槛要低的多”
“我本来就是一个写手”
“我是一个名人，需要一个直接与公众交流，反映真实想法的私人平台”
“我很羡慕别人的Blog，所以想要模仿”
“我只是写简单的个人日志，没有什么别的意义”
……这里有一个帖子也可供参考。
至于我写Blog的理由嘛……首先我想引用播磨拳儿的话，当塚本八云问什么是“男女之间的交往”的时候，他说：
“我也不是很懂……不过例如……早上骑着机车在海岸线奔驰的时候……看到朝阳……从海面上升起的那一瞬间，会觉得那个景色很漂亮，还有吃到非常美味的美食时，或是看到好看的电影等等的时候，希望能够跟自己一起感受这个瞬间，彼此的心中都能够有这种想法……而一起累积这样的时间，是不是就是所谓的交往呢……”
这大概就是我写BLOG的主要理由。我看过太多东西，想过太多东西，有很多喜欢的东西，有很多感动的时刻，但是在日常生活中却找不到可以分享这些东西的人，我以前觉得这种烦恼是很可笑的：我可以独自看书，独自学习，独自享受音乐动画电影游戏，多么快乐，何必自找麻烦，我连自己都无法满足，哪来有时间去给别人介绍、解释，哪有时间去聊天和写文章。但是累积的东西越多，我就越来越觉得这种烦恼是切实存在的，获取的越多，反而越觉得空虚，周围的人越多，反而越觉得寂寞。Blog这种东西比较个人化，与传统的论坛相比，虽然自由、公开，却也伴随一定局限性，简单的说，不会有很多人来看，来看的人当中不会有很多人感兴趣，感兴趣的人当中也不会有很多人参与讨论。但是能有这样一个平台，已经应该满足了。

最后补上那段漫画：

]]></description>
			<content:encoded><![CDATA[<p><a href="http://bp3.blogger.com/_FPgtQV0mSoM/RXKB1K4z5KI/AAAAAAAAAAM/ELzat8EvehI/s1600-h/harima.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_FPgtQV0mSoM/RXKB1K4z5KI/AAAAAAAAAAM/ELzat8EvehI/s200/harima.jpg" alt="" id="BLOGGER_PHOTO_ID_5004204886417728674" border="0" /></a>好罢，其实11月22日的时候我就知道Blogspot被解封了，但是拖到今天才恢复更新，一方面是担心像中文WIKI那样昙花一现，一方面也是因为最近工作太忙了……</p>
<p>现在做的项目——美国ICPS协会的医生数据库&#038;网站，在本周三终于完成了一期的计划，为了按时交付，这几周大部分的工作日都要加班到晚上9至10点，周六也是一样。这个网站完全采用符合WEB标准的DIV+CSS结构，包括后台管理，连复杂的表单都没有用TABLE排版，而公司里的PHP程序员对CSS并不熟悉，所以大部分页面的布局和调整都要由我来做，工作量很大，另外网站应用了大量AJAX（我说的AJAX不仅包括XMLhttpRequest，也包括DHTML……），有时JS代码比PHP代码还要多，大部分人都是JS和DOM编程的新手，所以在开发中遇到过很多问题（有时间的话我会在BLOG上总结一下，并且写一些重用性更好的代码）<span id="more-67"></span>，虽然最后都解决了，但也耽误了一些时间，另外设计上也有很多不成熟的地方，甚至还有人问我是不是把项目当作实验品……总之，频繁加班一方面是因为客户需求不明确、没有清晰稳定的设计，一方面也是因为技术上的不成熟，不过我觉得这种不成熟的阶段是必须经历的，而且很有好处，通过这种实践，不但积累了经验、加深了认识，也暴露很多问题，而这些问题在以后的开发中都可以避免，团队和个人的能力都得到了提高，以后的工作就会更容易。唯一的遗憾是，虽然这个网站采用了大量WEB2.0技术，强调用户体验，在二期还会加入BLOG和SNS的功能，但它没有做到信任用户，管理功能非常“强大”，实际上是一个披着2.0皮的1.0网站……</p>
<p>最深的地下城也有很长时间未更新了，NTRPG的DDO专题也没有精力去帮忙，真是很惭愧（不过，我也不是什么都没做）。虽然ICPS项目做完了也不一定意味着有更多空闲时间，但我还是要慢慢调整回正常状态，BLOG也一定要恢复，重新写BLOG的时候我也考虑过一些事情，比如为什么要坚持用blogger.com，而不是用Wordpress或drupal重新做一个？为什么要继续写Blog，对自己对别人都有什么意义？对于这两个问题，我的答案是：</p>
<ol>
<li>坚持用blogger.com首先是因为我认同Google，并不是盲目信任，而是因为Google符合我的价值观和我对互联网的理想。我也很喜欢blogger.com的UI设计，这种使用体验可以提高我对Blog的热情，虽然Wordpress的后台设计也很棒，功能也要强大的多，但这就会太迎合我把东西做复杂做华丽的欲望，我现在不能把太多精力花在BLOG的外观和功能上，而是要创造实实在在的内容，我需要的不是一个华丽的Blog网站，而是一个Blogging的工具。另外，Wordpress的功能太强也是很无趣的事情，我更喜欢自己用hack来实现那些功能。</li>
<li>我分析过别人写Blog的理由，一般都是以下几种：
<p>“我有很强的表现欲望，喜欢展示个性”<br />
“我一直想做个人网站，想通过它展示自我/出名/赚钱，但我不熟悉相关技术，而建立Blog的门槛要低的多”<br />
“我本来就是一个写手”<br />
“我是一个名人，需要一个直接与公众交流，反映真实想法的私人平台”<br />
“我很羡慕别人的Blog，所以想要模仿”<br />
“我只是写简单的个人日志，没有什么别的意义”<br />
……<a href="http://club.ucme.cn/comments.php?DiscussionID=2&amp;page=1#Item_0">这里有一个帖子</a>也可供参考。</p>
<p>至于我写Blog的理由嘛……首先我想引用播磨拳儿的话，当塚本八云问什么是“男女之间的交往”的时候，他说：<br />
<blockquote>“我也不是很懂……不过例如……早上骑着机车在海岸线奔驰的时候……看到朝阳……从海面上升起的那一瞬间，会觉得那个景色很漂亮，还有吃到非常美味的美食时，或是看到好看的电影等等的时候，希望能够跟自己一起感受这个瞬间，彼此的心中都能够有这种想法……而一起累积这样的时间，是不是就是所谓的交往呢……”</p></blockquote>
<p>这大概就是我写BLOG的主要理由。我看过太多东西，想过太多东西，有很多喜欢的东西，有很多感动的时刻，但是在日常生活中却找不到可以分享这些东西的人，我以前觉得这种烦恼是很可笑的：我可以独自看书，独自学习，独自享受音乐动画电影游戏，多么快乐，何必自找麻烦，我连自己都无法满足，哪来有时间去给别人介绍、解释，哪有时间去聊天和写文章。但是累积的东西越多，我就越来越觉得这种烦恼是切实存在的，获取的越多，反而越觉得空虚，周围的人越多，反而越觉得寂寞。Blog这种东西比较个人化，与传统的论坛相比，虽然自由、公开，却也伴随一定局限性，简单的说，不会有很多人来看，来看的人当中不会有很多人感兴趣，感兴趣的人当中也不会有很多人参与讨论。但是能有这样一个平台，已经应该满足了。</li>
</ol>
<p>最后补上那段漫画：</p>
<p><a href="http://www.yupoo.com/photos/view?id=ff8080810f2e23e3010f4756c6ef77e5" title=""><img src="http://photo4.yupoo.com/20061203/160325_1106677861_czrxosoi.jpg" border="0"  width="420" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2006/12/03/continue/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>请使用pkblogs访问这里</title>
		<link>http://www.limboy.com/2006/10/26/pkblogs/</link>
		<comments>http://www.limboy.com/2006/10/26/pkblogs/#comments</comments>
		<pubDate>Thu, 26 Oct 2006 14:10:29 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Blogger]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2006/10/26/pkblogs/</guid>
		<description><![CDATA[大约从10月25日21点30分开始，帝国各大行省都传出消息，无法浏览由Blogger beta支持的网页，而使用代理则可以正常访问，因此基本可以确定Blogspot域名再次被GFW封锁，具体原因不明，也许跟这类事有关联？……
如果把帝国的网络比做FORGOTTEN REALMS，GFW就是AO，你无法理解它，它也不抛头露面，却掌握有终极的权力。而Google只能算是信徒数量不足的外来神祗。
本来Blogger beta刚推出的时候，Blogspot正好解封，很多人都以为这是“谷歌”努力的结果，我当时也认为Blogger在Google的本地化战略中占有一个重要地位，现在看来并非如此
其实我从一开始就可以选择用WORDPRESS来建立BLOG，感谢NTRPG，我不并缺少PHP+MYSQL空间。我使用Blogger的目的其实就是想用行动来支持Google，而且比起WORDPRESS强大的插件库，用Blogger做出新的功能和效果，显然更有挑战性。
我准备暂时观望一段时间，如果确定没有挽回的余地，那就只好用WORDPRESS重新做一个BLOG了。目前我已经修改了feedburner生成的RSS地址，今后访问这个BLOG请使用新地址：http://www.pkblogs.com/dexteryy/
]]></description>
			<content:encoded><![CDATA[<p><a href="http://photos1.blogger.com/blogger2/264/1045131830741991/1600/the%20great%20wall-c.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger2/264/1045131830741991/200/the%20great%20wall-c.jpg" border="0" alt="" /></a>大约从10月25日21点30分开始，帝国各大行省都传出消息，无法浏览由Blogger beta支持的网页，而使用代理则可以正常访问，因此基本可以确定Blogspot域名再次被GFW封锁，具体原因不明，也许跟<a href="http://news.yahoo.com/s/nm/20061026/wr_nm/china_dissident_dc">这类事</a>有关联？……<span id="more-66"></span></p>
<p>如果把帝国的网络比做FORGOTTEN REALMS，GFW就是AO，你无法理解它，它也不抛头露面，却掌握有终极的权力。而Google只能算是信徒数量不足的外来神祗。</p>
<p>本来Blogger beta刚推出的时候，Blogspot正好解封，很多人都以为这是“谷歌”努力的结果，我当时也认为Blogger在Google的本地化战略中占有一个重要地位，现在看来并非如此</p>
<p>其实我从一开始就可以选择用WORDPRESS来建立BLOG，感谢NTRPG，我不并缺少PHP+MYSQL空间。我使用Blogger的目的其实就是想用行动来支持Google，而且比起WORDPRESS强大的插件库，用Blogger做出新的功能和效果，显然更有挑战性。</p>
<p>我准备暂时观望一段时间，如果确定没有挽回的余地，那就只好用WORDPRESS重新做一个BLOG了。目前我已经修改了feedburner生成的RSS地址，今后访问这个BLOG请使用新地址：http://www.pkblogs.com/dexteryy/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2006/10/26/pkblogs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在beta版Blogger的首页显示文章摘要</title>
		<link>http://www.limboy.com/2006/09/23/bloggerhack/</link>
		<comments>http://www.limboy.com/2006/09/23/bloggerhack/#comments</comments>
		<pubDate>Sat, 23 Sep 2006 13:51:28 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Blogger]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2006/09/23/bloggerhack/</guid>
		<description><![CDATA[beta版的Blogger已经能实现大部分我想要的功能了，但是与wordpress这类专业的BLOG系统比起来，还是有两个很明显的缺陷：
1. 首页只有全文显示模式，有些blogger发表的文章可能比较长，也可能更新频率比较快，多数人都会希望首页只显示摘要。
2. 发表评论需要跳转到新页面，提交之后默认显示评论的页面也是一个与BLOG模板无关的新页面，这种设计不符合用户的习惯。
针对这两个问题，网上可以搜到很多解决方法，尤其是Yee’s Blog，里面介绍了很多有用的BLOG工具和HACK技巧。但这些都是针对旧版的Blogger，beta版的HTML代码跟以前有很大的不同，所有功能模块的代码都封装到了“&#60;b:widget&#62;”这样的标签里(更新：感谢柠檬杀手提供的网址……原来Widget可以展开……以前居然没发现-___-b)，虽然还是可以看到静态页面的源代码，查到各个元素的ID和CLASS，进而通过CSS改变页面外观。但无法直接修改模块的HTML代码，就有很多局限性……（更新：我试了一下，Widget展开之后，虽然可以移动一些标签的位置，添加一些属性，但还是有很多限制，比如不能加入隐藏的INPUT……）
幸好还可以在HTML里插入JS代码（似乎只能用链接形式，直接在模板里写入比较复杂的JS，会出现XML错误），我刚刚写了一段脚本，可以实现首页显示文章摘要的功能：
与这个方法类似，发表每篇文章时，都要套用一段HTML模板（可以把它放到Settings/Formatting/Post Template里面，每次新建文章时自动套用模板）：
&#60;span class=&#34;partofarticle&#34;&#62;这里是显示在首页的摘要......
&#160;
&#60;div&#160;class=&#34;yyshowallarticlediv&#34;&#62;&#60;a href=&#34;&#34; class=&#34;yyshowallarticle&#34;
onmouseover=&#34;yycopylink(this);&#34;&#62;查看全文!&#60;/a&#62;&#60;/div&#62;
&#160;
&#60;/span&#62;
&#160;
&#60;span&#160;class=&#34;fullarticle&#34; style=&#34;display: none;&#34;&#62;这里是完整的文章&#60;/span&#62;
在&#60;span class=&#8221;partofarticle&#8221;&#62;的标签里放一段摘要，完整的文章放在&#60;span class=&#8221;fullarticle&#8221;&#62;里（默认是隐藏的），“查看全文!”的链接上有一个onmouseover事件，这是为了自动获取该文章静态页面的链接地址，因为我是通过逐级查找DOM节点的方式来获取链接地址的，如果BLOG POST模块的排列方式跟我的不一样，就不能用这段代码（比如作者名字在时间日期后面）……如果你不懂DOM，那就干脆把“查看全文!”这个层删掉罢，反正也不是必须的。
function yycopylink(src) {
if(window.ActiveXObject)
{
var&#160;yyy=src.parentNode.parentNode.parentNode.parentNode.previousSibling.previousSibling.childNodes[0].href
}else{
var&#160;yyy=src.parentNode.parentNode.parentNode.parentNode.previousSibling.previousSibling.previousSibling.previousSibling.childNodes[1].href;
}
src.href=yyy;
}
然后，就要利用一段JS程序来判断当前页面是BLOG的首页，还是属于单独一篇文章的页面，由于文章页面的底部会有评论模块，而首页没有，因此可以利用这个来做判断。
var yyhascomment=document.getElementById('comments-block');
//alert(yyhascomment);
if(yyhascomment!=null)
{
var&#160;yyspanobj=document.getElementsByTagName('span');
//alert(yyspanobj);
for(var&#160;i = 0; i&#160; &#38;lt; yyspanobj.length; i++)
{
var&#160;yyclass=yyspanobj.item(i).className;
if&#160;(yyclass == &#34;partofarticle&#34;)
{
yyspanobj.item(i).style.display=&#34;none&#34;;
}&#160;else if (yyclass == &#34;fullarticle&#34;)
{
yyspanobj.item(i).style.display=&#34;&#34;;
}
}
yyhascomment=null;yyspanobj=null;
}
就是找一个id=&#8221;comments-block&#8221;的div，如果页面里存在这个div，就遍历所有的span，隐藏&#60;span class=&#8221;partofarticle&#8221;&#62;里的所有内容，显示&#60;span class=&#8221;fullarticle&#8221;&#62;里的内容……（更新：我修正一些语法，原先的程序在firefox里有一些地方不兼容，无法显示全文，感谢nAODI的提醒）
&#19979;&#36733;: http://dexter.yy.googlepages.com/showcomments.js最终的JS脚本
注意：链接JS的代码必须放在&#60;b:widget id=&#8217;Blog1&#8242; locked=&#8217;false&#8217; title=&#8217;Blog&#8217; type=&#8217;Blog&#8217;&#62;的下面
至于最后的效果……请看我的BLOG……
]]></description>
			<content:encoded><![CDATA[<p><a href="http://photos1.blogger.com/blogger2/264/1045131830741991/1600/blogger_hacks.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" alt="" src="http://photos1.blogger.com/blogger2/264/1045131830741991/200/blogger_hacks.png" border="0" /></a>beta版的Blogger已经能<a href="http://dexteryy.blogspot.com/2006/08/blogger.html">实现大部分我想要的功能</a>了，但是与<a href="http://wordpress.org/">wordpress</a>这类专业的BLOG系统比起来，还是有两个很明显的缺陷：</p>
<p>1. 首页只有全文显示模式，有些blogger发表的文章可能比较长，也可能更新频率比较快，多数人都会希望首页只显示摘要。<br />
2. 发表评论需要跳转到新页面，提交之后默认显示评论的页面也是一个与BLOG模板无关的新页面，这种设计不符合用户的习惯。<span id="more-54"></span></p>
<p>针对这两个问题，网上可以搜到很多解决方法，尤其是<a href="http://iyee.cn/post/category/blogger-hack/">Yee’s Blog</a>，里面介绍了很多有用的BLOG工具和HACK技巧。但这些都是针对旧版的Blogger，beta版的HTML代码跟以前有很大的不同，所有功能模块的代码都封装到了“&lt;b:widget&gt;”这样的标签里(<span style="font-weight: bold;">更新：感谢柠檬杀手提供的</span><a style="font-weight: bold;" href="http://bhic.blogspot.com/">网址</a><span style="font-weight: bold;">……原来Widget可以展开……以前居然没发现-___-b</span>)，虽然还是可以看到静态页面的源代码，查到各个元素的ID和CLASS，进而通过CSS改变页面外观。但无法直接修改模块的HTML代码，就有很多局限性……（<span style="font-weight: bold;">更新：我试了一下，Widget展开之后，虽然可以移动一些标签的位置，添加一些属性，但还是有很多限制，比如不能加入隐藏的INPUT……</span>）</p>
<p>幸好还可以在HTML里插入JS代码（似乎只能用链接形式，直接在模板里写入比较复杂的JS，会出现XML错误），我刚刚写了一段脚本，可以实现首页显示文章摘要的功能：</p>
<p>与<a href="http://think.ac.cn/2006/04/blogger.html">这个方法</a>类似，发表每篇文章时，都要套用一段HTML模板（可以把它放到Settings/Formatting/Post Template里面，每次新建文章时自动套用模板）：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">span</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">partofarticle</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这里是显示在首页的摘要......</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">yyshowallarticlediv</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;</span><span style="color: Green;">a</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">yyshowallarticle</span><span style="color: #8b0000;">&quot;</span></li>
<li><span style="color: #00008b;">onmouseover</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">yycopylink(this);</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">查看全文!</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">a</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">span</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">span</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">fullarticle</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">style</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">display: none;</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">这里是完整的文章</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">span</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>在&lt;span class=&#8221;partofarticle&#8221;&gt;的标签里放一段摘要，完整的文章放在&lt;span class=&#8221;fullarticle&#8221;&gt;里（默认是隐藏的），“查看全文!”的链接上有一个onmouseover事件，这是为了自动获取该文章静态页面的链接地址，因为我是通过逐级查找DOM节点的方式来获取链接地址的，如果BLOG POST模块的排列方式跟我的不一样，就不能用这段代码（比如作者名字在时间日期后面）……如果你不懂DOM，那就干脆把“查看全文!”这个层删掉罢，反正也不是必须的。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">function</span><span style="color: Gray;"> </span><span style="color: Blue;">yycopylink</span><span style="color: Olive;">(</span><span style="color: Blue;">src</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Teal;">window</span><span style="color: Gray;">.</span><span style="color: Blue;">ActiveXObject</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">yyy</span><span style="color: Gray;">=</span><span style="color: Blue;">src</span><span style="color: Gray;">.</span><span style="color: Blue;">parentNode</span><span style="color: Gray;">.</span><span style="color: Blue;">parentNode</span><span style="color: Gray;">.</span><span style="color: Blue;">parentNode</span><span style="color: Gray;">.</span><span style="color: Blue;">parentNode</span><span style="color: Gray;">.</span><span style="color: Blue;">previousSibling</span><span style="color: Gray;">.</span><span style="color: Blue;">previousSibling</span><span style="color: Gray;">.</span><span style="color: Blue;">childNodes</span><span style="color: Olive;">[</span><span style="color: Maroon;">0</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">href</span></li>
<li><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">yyy</span><span style="color: Gray;">=</span><span style="color: Blue;">src</span><span style="color: Gray;">.</span><span style="color: Blue;">parentNode</span><span style="color: Gray;">.</span><span style="color: Blue;">parentNode</span><span style="color: Gray;">.</span><span style="color: Blue;">parentNode</span><span style="color: Gray;">.</span><span style="color: Blue;">parentNode</span><span style="color: Gray;">.</span><span style="color: Blue;">previousSibling</span><span style="color: Gray;">.</span><span style="color: Blue;">previousSibling</span><span style="color: Gray;">.</span><span style="color: Blue;">previousSibling</span><span style="color: Gray;">.</span><span style="color: Blue;">previousSibling</span><span style="color: Gray;">.</span><span style="color: Blue;">childNodes</span><span style="color: Olive;">[</span><span style="color: Maroon;">1</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">href</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">src</span><span style="color: Gray;">.</span><span style="color: Blue;">href</span><span style="color: Gray;">=</span><span style="color: Blue;">yyy</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>然后，就要利用一段JS程序来判断当前页面是BLOG的首页，还是属于单独一篇文章的页面，由于文章页面的底部会有评论模块，而首页没有，因此可以利用这个来做判断。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">var</span><span style="color: Gray;"> </span><span style="color: Blue;">yyhascomment</span><span style="color: Gray;">=</span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementById</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">comments-block</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//alert(yyhascomment);</span></li>
<li><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">yyhascomment</span><span style="color: Gray;">!=</span><span style="color: Green;">null</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">yyspanobj</span><span style="color: Gray;">=</span><span style="color: Teal;">document</span><span style="color: Gray;">.</span><span style="color: Blue;">getElementsByTagName</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">span</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//alert(yyspanobj);</span></li>
<li><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">&nbsp; &amp;</span><span style="color: Blue;">lt</span><span style="color: Gray;">; </span><span style="color: Blue;">yyspanobj</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">yyclass</span><span style="color: Gray;">=</span><span style="color: Blue;">yyspanobj</span><span style="color: Gray;">.</span><span style="color: Blue;">item</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">className</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">if</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: Blue;">yyclass</span><span style="color: Gray;"> == </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">partofarticle</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">yyspanobj</span><span style="color: Gray;">.</span><span style="color: Blue;">item</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">style</span><span style="color: Gray;">.</span><span style="color: Blue;">display</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">none</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">else</span><span style="color: Gray;"> </span><span style="color: Green;">if</span><span style="color: Gray;"> </span><span style="color: Olive;">(</span><span style="color: Blue;">yyclass</span><span style="color: Gray;"> == </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">fullarticle</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">yyspanobj</span><span style="color: Gray;">.</span><span style="color: Blue;">item</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;">.</span><span style="color: Blue;">style</span><span style="color: Gray;">.</span><span style="color: Blue;">display</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;&quot;</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">yyhascomment</span><span style="color: Gray;">=</span><span style="color: Green;">null</span><span style="color: Gray;">;</span><span style="color: Blue;">yyspanobj</span><span style="color: Gray;">=</span><span style="color: Green;">null</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>就是找一个id=&#8221;comments-block&#8221;的div，如果页面里存在这个div，就遍历所有的span，隐藏&lt;span class=&#8221;partofarticle&#8221;&gt;里的所有内容，显示&lt;span class=&#8221;fullarticle&#8221;&gt;里的内容……（<span style="font-weight: bold;">更新：我修正一些语法，原先的程序在firefox里有一些地方不兼容，无法显示全文，感谢nAODI的提醒</span>）</p>
<div class="hl-title">&#19979;&#36733;: <a href="http://www.limboy.com/wp-content/plugins/coolcode/coolcode.php?p=54&amp;download=http://dexter.yy.googlepages.com/showcomments.js">http://dexter.yy.googlepages.com/showcomments.js</a></div><div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">最终的</span><span style="color: Blue;">JS</span><span style="color: Gray;">脚本</span></li></ol></div>
<p>注意：链接JS的代码必须放在&lt;b:widget id=&#8217;Blog1&#8242; locked=&#8217;false&#8217; title=&#8217;Blog&#8217; type=&#8217;Blog&#8217;&gt;的下面</p>
<p>至于最后的效果……请看<a href="http://dexteryy.blogspot.com">我的BLOG</a>……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2006/09/23/bloggerhack/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Blogday的Blog推荐</title>
		<link>http://www.limboy.com/2006/09/03/blogday/</link>
		<comments>http://www.limboy.com/2006/09/03/blogday/#comments</comments>
		<pubDate>Sun, 03 Sep 2006 14:03:54 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Blogger]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2006/09/03/blogday/</guid>
		<description><![CDATA[好罢，我知道Blogday已经是两天前的事了，然则如果你看了上篇文章，就会知道在这两天里我都是没有时间写BLOG的，不过“推荐五个具有特色的部落格&#8221;似乎是很好玩的事情，所以我还是想补写一篇……某些太有名气的BLOG我就略过了，因为我不喜欢跟别人撞车……
灰鹰巢城 &#8211; 如果你打不开这个网页，请用TOR……这个BLOG的作者“灰鹰爵士”也就是谭光磊，是台大外文系的强者，曾经是大名鼎鼎的台大电机Maxwe11 BBS站Fantasy板版主，翻译过乔治马丁的《冰与火之歌》等奇幻巨著（我最近正在读前2部），他的BLOG内容涉及“阅读、出版、奇幻、推理、电影、音乐，还有一些梦想”，无论你是喜欢奇幻、科幻、推理、惊悚还是历史类型的小说，都可以在这里找到内容丰富的书评。
Psychology Express &#8211; 中国心理学爱好者的8小时之外。不管心理学是不是伪科学，这里都有很多有趣的文章。
格志 &#8211; 一个建设中的群组blog，目标是成为“科学 blog 圈；分享科技知识，新闻，努力做点高级科普；作为学术交流平台” ，发起人冯衍毕业于南开大学，目前在欧洲南方天文台工作，个人BLOG叫桑林志
greengnn&#8217;s space &#8211; 一个技术类BLOG，内容涉及网站前台开发，标准化，UI设计等，作者是蓝色理想论坛的脚本区和网页标准化专栏的版主。
The sky of Daemon! &#8211; 这个BLOG侧重于收集/体验WEB2.0网站和服务，作者Riku非常有热情，更新频繁，共享了大量WEB2.0方面的发现，也作了很多总结归纳。
本来我还想推荐古留根尾·我我神（来看我这个BLOG的人在学生时代不一定都有看游戏杂志的习惯，如果你没听说过万楠方老师，那么我只好表示同情）的年代札记牛排馆，可惜他已经宣布“休刊”了……这全是Live spaces的罪哑！天罚降临罢！……不过……我才知道古留原来这么重视版式设计……
]]></description>
			<content:encoded><![CDATA[<p><a href="http://photos1.blogger.com/blogger2/264/1045131830741991/1600/BD06.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger2/264/1045131830741991/200/BD06.jpg" alt="" border="0" /></a>好罢，我知道<a href="http://iyee.cn/post/blogday-2006.html">Blogday</a>已经是两天前的事了，然则如果你看了<a href="http://dexteryy.blogspot.com/2006/09/d100.html">上篇文章</a>，就会知道在这两天里我都是没有时间写BLOG的，不过“推荐五个具有特色的部落格&#8221;似乎是很好玩的事情，所以我还是想补写一篇……某些太有名气的BLOG我就略过了，因为我不喜欢跟别人撞车……</p>
<p><a href="http://blog.yam.com/grayhawk">灰鹰巢城</a> &#8211; 如果你打不开这个网页，请用<a href="http://tor.eff.org/">TOR</a>……这个BLOG的作者“灰鹰爵士”也就是谭光磊，是台大外文系的强者，曾经是大名鼎鼎的台大电机Maxwe11 BBS站Fantasy板版主，翻译过乔治马丁的《冰与火之歌》等奇幻巨著（我最近正在读前2部），他的BLOG内容涉及“阅读、出版、奇幻、推理、电影、音乐，还有一些梦想”，无论你是喜欢奇幻、科幻、推理、惊悚还是历史类型的小说，都可以在这里找到内容丰富的书评。<span id="more-46"></span></p>
<p><a href="http://www.psytopic.com/mag/">Psychology Express</a> &#8211; 中国心理学爱好者的8小时之外。不管心理学是不是伪科学，这里都有很多有趣的文章。</p>
<p><a href="http://gezhi.org/">格志</a> &#8211; 一个建设中的群组blog，目标是成为“科学 blog 圈；分享科技知识，新闻，努力做点高级科普；作为学术交流平台” ，发起人<a href="http://yanfeng.org/blog/about">冯衍</a>毕业于南开大学，目前在欧洲南方天文台工作，个人BLOG叫桑林志</p>
<p><a href="http://www.jluvip.com/blog/">greengnn&#8217;s space</a> &#8211; 一个技术类BLOG，内容涉及网站前台开发，标准化，UI设计等，作者是蓝色理想论坛的脚本区和网页标准化专栏的版主。</p>
<p><a href="http://blog.bsdos.cn/">The sky of Daemon!</a> &#8211; 这个BLOG侧重于收集/体验WEB2.0网站和服务，作者Riku非常有热情，更新频繁，共享了大量WEB2.0方面的发现，也作了很多总结归纳。</p>
<p>本来我还想推荐古留根尾·我我神（来看我这个BLOG的人在学生时代不一定都有看游戏杂志的习惯，如果你没听说过万楠方老师，那么我只好表示同情）的<a href="http://neunundneunzig.spaces.live.com/">年代札记牛排馆</a>，可惜他已经宣布“休刊”了……这全是Live spaces的罪哑！天罚降临罢！……不过……我才知道古留原来这么重视版式设计……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2006/09/03/blogday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>幻灭对Firefox真的很有偏见</title>
		<link>http://www.limboy.com/2006/08/31/firefoxandgoogle/</link>
		<comments>http://www.limboy.com/2006/08/31/firefoxandgoogle/#comments</comments>
		<pubDate>Thu, 31 Aug 2006 12:47:47 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Blogger]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2006/08/31/firefoxandgoogle/</guid>
		<description><![CDATA[今天在幻灭的BLOG上看到一篇《两则FireFox2.0快讯》，内容非常简短，而且一开头就用了让人不爽的句子：“微软的IE7 RC1的发布让Mozilla感到了压力，通常情况下，Mozilla会发布一个新的测试版来回应。”在文章后面的评论里，身为“中国第一Google Fan”的幻灭也发表了很多负面评论。
实际上这并不让人意外，每个人都有自己的认识，每个BLOGGER都有权发表自己的看法。而幻灭一直习惯使用IE内核的浏览器，并不是真正的Firefox用户。对自己了解不够的东西抱有偏见和坏印象，是很正常的。但我忍不住想说一下自己的看法。我认为不使用Firefox的人算不上真正的Google Fan，因为Google的很多服务都需要在Firefox里才能获得最好的体验，比如Google notebook、Google bookmarks、Google toolbar、Gmail……
我今天没有时间逐一截图说明，随便传一张：notebook和bookmarks的扩展，另外，上篇文章里也刚好传过一张图，展示了一个Firefox扩展GTDGMAIL对GMAIL功能的增强。
关于内存的问题，我想自己是有发言权的，因为我的Firefox里安装的扩展始终在55个以上，这是内存占用的截图：FIREFOX的内存占用实例。而我机器的内存只有512M，Firefox并没有对机器性能造成什么影响，也不会像幻灭以前说的，会造成内存泄露。实际上MOZILLA中国社区的论坛上有一篇很棒的内存问题的总结帖，我觉得要评价一件事物，就应该对它有全面的认识，用户体验有时并不是很可靠的东西。
幻灭在评论里还说道：“FireFox2.0正式版的最重大改变在界面上”。任何真正的Firefox用户看了都会觉得好笑，请再仔细看看我截图中的FIREFOX界面，你真的认为Firefox用户会在乎“Firefox2对搜索栏、图标外观、标签条及文本框按钮的改进”么？我以前在NT论坛就说过：“ 2.0的改进不是在功能方面，随便装几个扩展就可以远远超过那点功能，2.0的改进在于安全性、javascript1.7、客户端session、新的扩展格式……”
至于本文开头引用的那句话，我实在想象不出IE7 RC1的发布会让非赢利的Mozilla基金会感到什么压力。而且如果你是一个WEB开发者，知道IE7在标准支持和向后兼容方面遇到了多大的麻烦，知道IE7在技术上只是一个勉强符合要求（其他游览器早已达到的要求）的补救产品，你就根本不会产生这种念头……
]]></description>
			<content:encoded><![CDATA[<p><a  href="http://photos1.blogger.com/blogger2/264/1045131830741991/1600/firefox_ie.gif"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger2/264/1045131830741991/200/firefox_ie.gif" alt="" border="0" /></a>今天在幻灭的BLOG上看到一篇<a href="http://www.gseeker.com/50226711/aefirefox20e_41529.php">《两则FireFox2.0快讯》</a>，内容非常简短，而且一开头就用了让人不爽的句子：“微软的IE7 RC1的发布让Mozilla感到了压力，通常情况下，Mozilla会发布一个新的测试版来回应。”在文章后面的评论里，身为“中国第一Google Fan”的幻灭也发表了很多负面评论。</p>
<p>实际上这并不让人意外，每个人都有自己的认识，每个BLOGGER都有权发表自己的看法。而幻灭一直习惯使用IE内核的浏览器，并不是真正的Firefox用户。对自己了解不够的东西抱有偏见和坏印象，是很正常的。但我忍不住想说一下自己的看法。我认为不使用Firefox的人算不上真正的Google Fan，因为Google的很多服务都需要在Firefox里才能获得最好的体验，比如Google notebook、Google bookmarks、Google toolbar、Gmail……<span id="more-43"></span></p>
<p>我今天没有时间逐一截图说明，随便传一张：<a href="http://photo7.yupoo.com/20060831/214946_1664436734_hHZsP.jpg">notebook和bookmarks的扩展</a>，另外，<a href="http://photo7.yupoo.com/20060830/005117_760546548_GGQRH.jpg">上篇文章里也刚好传过一张图</a>，展示了一个Firefox扩展GTDGMAIL对GMAIL功能的增强。</p>
<p>关于内存的问题，我想自己是有发言权的，因为我的Firefox里安装的扩展始终在55个以上，这是内存占用的截图：<a href="http://photo7.yupoo.com/20060831/214945_592008582_oTctg.jpg">FIREFOX的内存占用实例</a>。而我机器的内存只有512M，Firefox并没有对机器性能造成什么影响，也不会像幻灭以前说的，会造成内存泄露。实际上MOZILLA中国社区的论坛上有一篇很棒的<a href="http://forums.mozine.cn/index.php?showtopic=3276">内存问题的总结帖</a>，我觉得要评价一件事物，就应该对它有全面的认识，用户体验有时并不是很可靠的东西。</p>
<p>幻灭在评论里还说道：“FireFox2.0正式版的最重大改变在界面上”。任何真正的Firefox用户看了都会觉得好笑，请再仔细看看我截图中的FIREFOX界面，你真的认为Firefox用户会在乎“Firefox2对搜索栏、图标外观、标签条及文本框按钮的改进”么？我以前在NT论坛就说过：“ 2.0的改进不是在功能方面，随便装几个扩展就可以远远超过那点功能，2.0的改进在于安全性、javascript1.7、客户端session、新的扩展格式……”</p>
<p>至于本文开头引用的那句话，我实在想象不出IE7 RC1的发布会让非赢利的Mozilla基金会感到什么压力。而且如果你是一个WEB开发者，知道IE7在标准支持和向后兼容方面遇到了多大的麻烦，知道IE7在技术上只是一个勉强符合要求（其他游览器早已达到的要求）的补救产品，你就根本不会产生这种念头……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2006/08/31/firefoxandgoogle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

