<?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; 科技</title>
	<atom:link href="http://www.limboy.com/category/geek/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>“iPhone人工智能”的背后</title>
		<link>http://www.limboy.com/2011/10/08/ai-in-iphone/</link>
		<comments>http://www.limboy.com/2011/10/08/ai-in-iphone/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 19:02:06 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[SF/F]]></category>

		<guid isPermaLink="false">http://www.limboy.com/?p=482</guid>
		<description><![CDATA[本来想直接推荐这篇9to5Mac的访谈：《Siri联合创始人: 苹果的“语音助手”将改变世界》 ，但是要补充的太多，豆瓣说的字数不够用了……
我在iPhone 4S发布会之前就看过这篇文章，居然没注意到关键信息……我一直以为Nuance才是“iPhone语音识别”背后的核心技术，因为Nuance市值超过60亿，因为Apple买了Nuance的语音技术授权，因为Nuance跟IBM合作研发了人工智能Watson（其实除了语音识别和理解问题的部分，这家伙剩余的技术就是搜索和数据挖掘罢⋯⋯）

今天看了iPhone 4S发布会视频的后半段，感觉Siri（特别是结合Wolfram Alpha之后）绝对被低估了，现场演示和广告都相当惊艳，让人浮想联翩，无愧于amazing、incredible之类的乔式营销词汇——这才不是什么“语音识别”！这是霹雳游侠里的KITT！高智能方程式里的Asurada！东之伊甸里的Juiz！星际争霸里的人族Adjutant！Portal里的GLaDOS！2001太空漫游里的HAL9000！⋯⋯ 


恰好今天又传出Nuance收购手机输入法Swype的新闻，其中都提到T9输入法是Nuance的业务之一，我才知道Nuance的业务其实很广……
重读那篇访谈，才注意到根源是DARPA发起的CALO项目，DARPA（美国国防高级研究计划局）在我心目中是跟硅谷并列的美国科技两大引擎之一，它比硅谷的VC更大胆更有前瞻性，赞助过一大堆充满科幻风格的未来技术，其中就包括投资数亿的“学习型个人助理”（PAL）计划，目的是为指挥官和作战人员提供革命性的辅助系统，快速掌握战场状况并辅助决策——有没有想起一大票FPS游戏里的辅助语音系统，比如HALO中跟&#8221;超级战士&#8221;计划配套的，UNSC研发的最强人工智能Cortana⋯⋯

PAL主要涉及的技术是人工智能（具体一点是机器学习和自然语言），而CALO正是PAL的子项目，占用了首期投资的76%，全称是&#8221;Cognitive Assistant that Learns and Organizes&#8221;，但也表示拉丁文&#8221;calonis&#8221;，意思是“soldier’s servant”（英灵！？⋯⋯）

参与CALO项目的强力组织包括麻省理工、斯坦福、卡内基梅隆大学、UC伯克利、波音等20多家，但牵头的是斯坦福的SRI International，而Apple收购的Siri正是SRI的嫡系，Nuance同样也是SRI孵化出来的——比起访谈里的信息，更值得注意的是：PAL计划是2003年启动的，Siri在2007年创立，直接来源于SRI在CALO项目中的工作，而Nuance早在1994年就创建了，前身是SRI的STAR实验室（Speech Technology and Research）⋯⋯
所以Norman Winarsky说Nuance只是Siri中可替换的“语音识别组件”——Nuance的业务只是语音技术，而Siri开发的是人工智能！

那么最实用的好消息便是：Nuance在上海和北京望京都有研发中心，一直在做国内各种方言的识别，“在广东话和普通话，我们是下了很大的功夫，然后我们把普通话的口音都覆盖，所以像我是香港口音、或者台湾国语、四川国语、东北国语其实全部是可以覆盖的”，而Apple可以直接利用“语音组件”的这些进展～
P.S. Thank you, Steve. Bravo.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.limboy.com/wp-content/uploads/2011/10/29741-358549_main_super.jpg" target="_blank"><img src="http://www.limboy.com/wp-content/uploads/2011/10/29741-358549_main_super.jpg" style="width:150px;float:left;margin:0 15px 10px 0;"  /></a>本来想直接推荐这篇9to5Mac的访谈：<a target="_blank" href="http://www.leiphone.com/siri-assistant-world-changing.html">《Siri联合创始人: 苹果的“语音助手”将改变世界》</a> ，但是要补充的太多，<a target="_blank" href="http://shuo.douban.com/#!/Dexter_Yy">豆瓣说</a>的字数不够用了……</p>
<p>我在iPhone 4S发布会之前就看过这篇文章，居然没注意到关键信息……我一直以为Nuance才是“iPhone语音识别”背后的核心技术，因为Nuance市值超过60亿，因为Apple买了Nuance的语音技术授权，因为Nuance跟IBM合作研发了<a target="_blank" href="http://nota.lukhnos.org/post/3380874795">人工智能Watson</a>（其实除了语音识别和<a target="_blank" href="http://www.52nlp.cn/%E7%AB%8B%E5%A7%94%E7%A7%91%E6%99%AE-%E9%97%AE%E7%AD%94%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%89%8D%E7%94%9F%E4%BB%8A%E4%B8%96">理解问题</a>的部分，这家伙剩余的技术就是搜索和数据挖掘罢⋯⋯）<span id="more-482"></span></p>
<div style="clear:both;"></div>
<p>今天看了iPhone 4S发布会视频的后半段，感觉Siri（特别是结合<a target="_blank" href="http://www.tedtochina.com/2010/06/04/stephen-wolfram-on-the-computational-future/">Wolfram Alpha</a>之后）绝对被低估了，现场演示和广告都相当惊艳，让人浮想联翩，无愧于amazing、incredible之类的乔式营销词汇——这才不是什么“语音识别”！这是霹雳游侠里的<a  target="_blank" href="http://en.wikipedia.org/wiki/File:Knight_Rider_Supercar_KITT_instrumentation.jpg">KITT</a>！高智能方程式里的<a target="_blank" href="http://zh.wikipedia.org/wiki/%E9%96%83%E9%9B%BB%E9%9C%B9%E9%9D%82%E8%BB%8A%E8%B3%BD%E8%BB%8A%E5%88%97%E8%A1%A8">Asurada</a>！<a  target="_blank" href="http://zh.wikipedia.org/zh/%E6%9D%B1%E4%B9%8B%E4%BC%8A%E7%94%B8">东之伊甸</a>里的Juiz！星际争霸里的人族Adjutant！Portal里的<a  target="_blank" href="http://www.guokr.com/article/59555/">GLaDOS</a>！2001太空漫游里的HAL9000！⋯⋯ </p>
<p><a href="http://www.limboy.com/wp-content/uploads/2011/10/siri-iphone-4s1.jpg" target="_blank"><img src="http://www.limboy.com/wp-content/uploads/2011/10/siri-iphone-4s1.jpg" style="width:400px;" /></a></p>
<p><a href="http://www.limboy.com/wp-content/uploads/2011/10/52-295x300.jpg" target="_blank"><img src="http://www.limboy.com/wp-content/uploads/2011/10/52-295x300.jpg"  width="295" height="300"   /></a></p>
<p>恰好今天又传出<a target="_blank" href="http://www.36kr.com/p/51312.html">Nuance收购手机输入法Swype</a>的新闻，其中都提到T9输入法是Nuance的业务之一，我才知道<a target="_blank" href="http://www.contactcenterbr.com/info.aspx?id=1973&amp;lm=7">Nuance的业务其实很广</a>……</p>
<p>重读那篇访谈，才注意到根源是DARPA发起的CALO项目，DARPA（美国国防高级研究计划局）在我心目中是跟硅谷并列的美国科技两大引擎之一，它比硅谷的VC更大胆更有前瞻性，赞助过一大堆充满科幻风格的<a target="_blank" href="http://science.solidot.org/article.pl?sid=11/08/19/1018234">未来技术</a>，其中就包括投资数亿的“学习型个人助理”（PAL）计划，目的是为指挥官和作战人员提供革命性的辅助系统，快速掌握战场状况并辅助决策——有没有想起一大票FPS游戏里的辅助语音系统，比如HALO中跟&#8221;超级战士&#8221;计划配套的，UNSC研发的最强人工智能Cortana⋯⋯</p>
<p><a href="http://www.limboy.com/wp-content/uploads/2011/10/Chiefcort.jpg" target="_blank"><img src="http://www.limboy.com/wp-content/uploads/2011/10/Chiefcort.jpg" style="width:300px;" /></a></p>
<p>PAL主要涉及的技术是人工智能（具体一点是机器学习和自然语言），而CALO正是PAL的子项目，占用了首期投资的76%，全称是&#8221;Cognitive Assistant that Learns and Organizes&#8221;，但也表示拉丁文&#8221;calonis&#8221;，意思是“soldier’s servant”（<a target="_blank" href="http://zh.wikipedia.org/wiki/Fate/stay_night#.E5.BE.9E.E8.80.85">英灵</a>！？⋯⋯）</p>
<p><a href="http://www.limboy.com/wp-content/uploads/2011/10/Screen-Shot-2011-10-08-at-2.14.42-AM.png" target="_blank"><img src="http://www.limboy.com/wp-content/uploads/2011/10/Screen-Shot-2011-10-08-at-2.14.42-AM.png" style="width:300px;" /></a></p>
<p>参与CALO项目的强力组织包括麻省理工、斯坦福、卡内基梅隆大学、UC伯克利、波音等20多家，但牵头的是斯坦福的SRI International，而Apple收购的Siri正是SRI的嫡系，Nuance同样也是SRI孵化出来的——比起访谈里的信息，更值得注意的是：PAL计划是2003年启动的，Siri在2007年创立，直接来源于SRI在CALO项目中的工作，而Nuance早在1994年就创建了，前身是SRI的STAR实验室（Speech Technology and Research）⋯⋯</p>
<p>所以Norman Winarsky说Nuance只是Siri中可替换的“语音识别组件”——Nuance的业务只是语音技术，而Siri开发的是人工智能！</p>
<p><a href="http://www.douban.com/photos/album/49655403/"><img src="http://www.limboy.com/wp-content/uploads/2011/10/p1029523786.jpg"  title="We do what we must because we can!" style="width:380px;" /></a></p>
<p>那么最实用的好消息便是：Nuance在上海和北京望京都有研发中心，一直在做国内各种方言的识别，“在广东话和普通话，我们是下了很大的功夫，然后我们把普通话的口音都覆盖，所以像我是香港口音、或者台湾国语、四川国语、东北国语其实全部是可以覆盖的”，而Apple可以直接利用“语音组件”的这些进展～</p>
<p>P.S. <a  target="_blank" href="http://www.douban.com/note/176291524/">Thank you, Steve. Bravo.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2011/10/08/ai-in-iphone/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>被遗忘的vim插件管理程序⋯⋯</title>
		<link>http://www.limboy.com/2011/09/25/vim-plugin-scaner/</link>
		<comments>http://www.limboy.com/2011/09/25/vim-plugin-scaner/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 14:56:17 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[工具]]></category>

		<guid isPermaLink="false">http://www.limboy.com/?p=454</guid>
		<description><![CDATA[众所周知vim缺少官方的包管理机制，刚开始接触vim的人往往都有IDE情结，喜欢四处搜罗插件，光是ftplugin目录就要塞进十几个脚本，把“编辑器之神”武装得包罗万象无所不能，然而这些卑微的凡人，尽管手握神器，总归还是要身陷在繁忙的日常coding中，最初的欣喜和热情也在日复一日中消散，由于没有定期更新这些脚本文件的办法，更没有精力去逐个关注，渐渐就忘记了兼容性升级，忘记了:com，忘记了键位映射，忘记了操作符，最后可能连插件名字和功能都记不得了⋯⋯
好罢这不是那种“我有一个朋友”式的故事，我只是想说一个自动化的插件管理程序能解决这种维护烦恼，起码不至于等到世界变了OS都升级了出现严重兼容性问题了编辑器都启动不了之后再去排查原因移除长久不用的插件⋯⋯
这本书告诉我们技术不是孤立发展的，当你察觉到一种需求的时候，意味着大半个开发者社区都有了这种需求，当你被逼得动手尝试idea，意味着同类项目已经更新了一个大版本，所以说当前比较完善的vim包管理工具大概有以下这么几种⋯⋯
https://github.com/tpope/vim-pathogen
https://github.com/gmarik/vundle
https://github.com/c9s/Vimana
但是我很不喜欢那种自己建私有目录占地为王的项目，最后那个林佑安老爷的程序是perl的，因为够轻量我很早就帮他宣传过，不过当时使用很麻烦，后来就没关注了，没想到已经开发的这么完善，还有日本perl基友同好的参与⋯⋯
所以去年我写了一个程序来自动化插件的查找和升级——没错，本文是从去年穿越过来的，以上都是去年的想法⋯⋯
https://github.com/dexteryy/yy-vimscript/blob/master/pluginscaner.py
因为vim脚本并不算很成熟的软件分发机制，.vim目录也不是很靠谱的组织结构，我不想把它们搞成一个黑箱，这个python脚本只是替代了一部分人工行为：先看看我装了哪些插件 -> 访问vim.org，搜索插件名称 -> 在插件主页下方的下载列表里找到最新版本 -> 对比版本号或日期⋯⋯
初次执行是这个样子：

结果是这个样子：

不要被那些0吓到，这显然是因为没初始化索引⋯⋯我懒得做初始化选项⋯⋯
在命令后面加上用单个插件名称，就会提示下载方式：

不管你答yes还是no，这个插件都算作升级过了⋯⋯
逐个这么执行一遍⋯⋯今后就能正常的用它检查版本更新了⋯⋯
好罢我发这篇文章是希望有人能继续完善这个脚本命令，或许有人像我一样有控制欲，只愿意接受这种自动检查和辅助安装的包管理方式。我懒得写后续的功能了，所以把它搁了一年⋯⋯
如果你要修改代码，记得把里面的google api key换掉⋯⋯
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.limboy.com/wp-content/uploads/2009/06/picture-4.png"><img src="http://www.limboy.com/wp-content/uploads/2009/06/picture-4.png" style="width:175px;float:left;margin:0 10px 10px 0;" /></a>众所周知vim缺少官方的包管理机制，刚开始接触vim的人往往都有IDE情结，喜欢四处搜罗插件，光是ftplugin目录就要塞进十几个脚本，把“编辑器之神”武装得包罗万象无所不能，然而这些卑微的凡人，尽管手握神器，总归还是要身陷在繁忙的日常coding中，最初的欣喜和热情也在日复一日中消散，由于没有定期更新这些脚本文件的办法，更没有精力去逐个关注，渐渐就忘记了兼容性升级，忘记了:com，忘记了键位映射，忘记了操作符，最后可能连插件名字和功能都记不得了⋯⋯</p>
<p>好罢这不是那种“我有一个朋友”式的故事，我只是想说一个自动化的插件管理程序能解决这种维护烦恼，起码不至于等到世界变了OS都升级了出现严重兼容性问题了编辑器都启动不了之后再去排查原因移除长久不用的插件⋯⋯<span id="more-454"></span></p>
<p><a href="http://book.douban.com/subject/4778063/" target="_blank">这本书</a>告诉我们技术不是孤立发展的，当你察觉到一种需求的时候，意味着大半个开发者社区都有了这种需求，当你被逼得动手尝试idea，意味着同类项目已经更新了一个大版本，所以说当前比较完善的vim包管理工具大概有以下这么几种⋯⋯</p>
<p><a href="https://github.com/tpope/vim-pathogen" target="_blank">https://github.com/tpope/vim-pathogen</a><br />
<a href="https://github.com/gmarik/vundle" target="_blank">https://github.com/gmarik/vundle</a><br />
<a href="https://github.com/c9s/Vimana" target="_blank">https://github.com/c9s/Vimana</a></p>
<p>但是我很不喜欢那种自己建私有目录占地为王的项目，最后那个林佑安老爷的程序是perl的，因为够轻量我很早就帮他宣传过，不过当时使用很麻烦，后来就没关注了，没想到已经开发的这么完善，还有日本perl<del>基友</del>同好的参与⋯⋯</p>
<p>所以去年我写了一个程序来自动化插件的查找和升级——没错，本文是从去年穿越过来的，以上都是去年的想法⋯⋯</p>
<p><a href="https://github.com/dexteryy/yy-vimscript/blob/master/pluginscaner.py" target="_blank">https://github.com/dexteryy/yy-vimscript/blob/master/pluginscaner.py</a></p>
<p>因为vim脚本并不算很成熟的软件分发机制，.vim目录也不是很靠谱的组织结构，我不想把它们搞成一个黑箱，<a href="https://github.com/dexteryy/yy-vimscript/blob/master/pluginscaner.py" target="_blank">这个python脚本</a>只是替代了一部分人工行为：先看看我装了哪些插件 -> 访问vim.org，搜索插件名称 -> 在插件主页下方的下载列表里找到最新版本 -> 对比版本号或日期⋯⋯</p>
<p>初次执行是这个样子：</p>
<p><a href="http://www.limboy.com/wp-content/uploads/2011/09/p173144456-1.jpg"><img src="http://www.limboy.com/wp-content/uploads/2011/09/p173144456-1.jpg" alt="" title="p173144456-1" width="317" height="676" class="alignnone size-full wp-image-455" /></a></p>
<p>结果是这个样子：</p>
<p><a href="http://www.limboy.com/wp-content/uploads/2011/09/p173144456-2.jpg"><img src="http://www.limboy.com/wp-content/uploads/2011/09/p173144456-2.jpg" alt="" title="p173144456-2" width="350" height="563" class="alignnone size-full wp-image-456" /></a></p>
<p>不要被那些0吓到，这显然是因为没初始化索引⋯⋯我懒得做初始化选项⋯⋯</p>
<p>在命令后面加上用单个插件名称，就会提示下载方式：</p>
<p><a href="http://www.limboy.com/wp-content/uploads/2011/09/p173144456-3.jpg" target="_blank"><img src="http://www.limboy.com/wp-content/uploads/2011/09/p173144456-3.jpg" alt="" title="p173144456-3" style="width:400px" class="alignnone size-full wp-image-457" /></a></p>
<p>不管你答yes还是no，这个插件都算作升级过了⋯⋯</p>
<p>逐个这么执行一遍⋯⋯今后就能正常的用它检查版本更新了⋯⋯</p>
<p>好罢我发这篇文章是希望有人能继续完善这个脚本命令，或许有人像我一样有控制欲，只愿意接受这种自动检查和辅助安装的包管理方式。我懒得写后续的功能了，所以把它搁了一年⋯⋯</p>
<p>如果你要修改代码，记得把里面的google api key换掉⋯⋯</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2011/09/25/vim-plugin-scaner/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>一个美术宅的传奇</title>
		<link>http://www.limboy.com/2011/05/02/tiles-legend/</link>
		<comments>http://www.limboy.com/2011/05/02/tiles-legend/#comments</comments>
		<pubDate>Mon, 02 May 2011 01:12:33 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[游戏]]></category>

		<guid isPermaLink="false">http://www.limboy.com/?p=401</guid>
		<description><![CDATA[不论2D还是3D时代，游戏开发总是“美术密集型”的项目，假如把程序比作骨架和器官，把剧情设定和gameplay之类都比作灵魂，那么美工创造出来就是实实在在的血肉，是游戏中绝大部分的“内容”。对于非美工出身的独立游戏创作者，这些“内容”的来源总是一个大难题，当然总有些取巧的题材或设计能绕过这个槛，但是也总能看到那些成功的例子都离不开丰满的视觉内容，甚至是独特的艺术风格，比如iOS平台上最火的那些“小制作”：有Grimm的Edward Gorey式维多利亚哥特，有Rolando搭上的芬兰插画家，还有最近Sword &#038; Sworcery EP那“淡淡忧伤”的像素画风……
实际上对那些想要制作游戏的宅男们来说，美工背景有天然优势，程序员离不开心灵手巧的美工，而美工却能不依赖可怜的程序员，这主要是因为程序员们有一种根深蒂固深入骨髓的恶习叫作“抽象”和“复用”，他们总是不甘心只把想要的东西简简单单实现出来，总是忍不住去把其中通用的、不变的、能反复利用的部分提取出来，完善成库、框架、引擎和工具，有极少数头脑发热耳鸣眼花鼻塞手贱腿抽筋的人甚至会继续折腾出一套“不需要编程”就能自由创作的强大工具……在这些资源和技术宅的帮助下，很多美术宅和性幻想达人们都顺畅的踏上了游戏制作之路……可参考《欢迎加入NHK!》里的山崎薫和佐藤，或现实世界里的武内崇和奈须蘑菇……
好罢以上都是“技术宅你们伤不起”系列的吐槽，其实不会写程序就像束缚了手脚去爬山，同样很辛苦。我想说的是，相对于代码和软件，可复用的美术资源实在是太稀缺了，如果你也曾经在网上搜寻过免费完整的游戏开发资源，一定体验过那种浪费大量时间仍一无所获的挫折感。
而今天要讲的，是一个站出来挑战这种现状的平凡宅男的故事。
国外有一些独立游戏为了回馈社区，会释出一些自己使用的代码和资源，如果留意过相关的声明，会发现很多开发者都注明“图像来自Reiner Prokein”，其中Ambardia网站上提供下载的那些帖图（tile）资源最壮观最让人惊喜：

而这些也都是同一个人创作的。
这个人没有wiki词条，在mobygames上没有介绍，一点名气都没有，但他有一个叫Reiner&#8217;s Tilesets的网站（旧版，新版），提供更海量的资源，全部是自己绘制，全部以freeware形式提供下载，没有任何好看的许可协议（比如CC-BY或GPL），没有任何限制，允许商业使用，允许随意修改，唯一的要求是你确实用它们做游戏（不准直接转卖），并且在商业作品的Credits名单里要包含他的名字。
那是一个更传奇式的名字，叫作Reiner &#8220;Tiles&#8221; Prokein，他是德国人，一直梦想制作自己的电脑游戏。最开始他不懂编程——他基本上什么都不懂，但他没有放弃，没有畏首畏尾，从99年秋天开始，他决定寻找一种不用编程就能制作游戏的软件。
他找到了前辈ambro的神帖：Ambrosine&#8217;s Game Creation Resources &#038; Classic Game Links
他逐个尝试，最后喜欢上rpgmaker 95，开始制作自己的第一个小型RPG。这个游戏完成了，但从来没有公开过，因为他后来得知破解版的rpgmaker有合法性方面的问题。
在这个过程中，他发现网络上缺乏用于制作游戏的免费图像资源，便开始自己绘制，最初他一个像素一个像素的手绘，接下来他发现了TrueSpace（Caligari公司推出的3D图形和动画渲染工具，现在已经被微软收购，用于虚拟地球项目，可免费下载），开始学习所有跟图像渲染有关的知识。
因为不会编程，Reiner制作游戏的努力始终伴随着挫折感，而学习编程看上去又遥不可及。但他没有放弃，他继续搜寻，又发现了rpgmaker.net，在这个社区里能找到大量处于beta甚至alpha阶段的游戏制作软件，他开始参与到rpgstudio的开发中，为它创作帖图资源，并且从那个时候起开始建设自己的主页，也就是“Reiner&#8217;s Tilesets”，那是2000年春天。
但是要完成一个像rpgstudio这样的项目，所需时间远超他的想象，而这个项目最后也被废止了。
他仍然想要做游戏，这次他找到了MMF（Multimedia Fusion）的主页，来自法国Clickteam公司的这款软件前身就是著名的《游戏工厂》（TGF），只需要点击和托拽就能完成程序逻辑，还有大量扩展，Reiner觉得他终于找到了自己想要的，全心全意的投入其中。已经是2000年冬天。
2007年，Reiner在主页上更新了自己的近况，七年过去了，他没有拿出什么引入注目的游戏，不过他声称在尝试开发3D游戏，他现在主要用3D Gamestudio ，MMF有时也用，这意味着他不再像以前那样惧怕编程了，至少学习了一点lite-C（脚本语言）
2010年，Reiner再次更新，原来过去三年他都在克服某些身体健康方面的问题，从Caligari公司接的一些软件测试工作也耗费了他很多时间，总之他没有完成那个3D游戏，但是跟以往的文字一样，他喜欢在段落的末尾用笑脸代替句号：“But i never give up, and i don&#8217;t stop dreaming :)”
2011年春天，Reiner用wordpress重建了自己的tileset网站，没有德国游戏门户4players.de和广告的支持，他必须自己支付服务器费用了，末尾仍然没忘记笑脸：“But i am more than willing to pay this price :)”
这个故事还没结束，在99~00年的高潮之后，也许一直都会这么平淡无奇，但不知为什么让我觉得很温暖，忍不住分享一下。
【UPDATE】 刚才仔细查了一下mobygames，在《Eschalon: Book I》（Basilisk工作室著名的独立RPG）的Credits里，看到了Reiner Prokein的名字！
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.limboy.com/wp-content/uploads/2011/05/tilexp.png"><img src="http://www.limboy.com/wp-content/uploads/2011/05/tilexp.png"   class="alignnone size-full wp-image-410" style="float:left;margin:0 10px 10px 0" /></a>不论2D还是3D时代，游戏开发总是“美术密集型”的项目，假如把程序比作骨架和器官，把剧情设定和gameplay之类都比作灵魂，那么美工创造出来就是实实在在的血肉，是游戏中绝大部分的“内容”。对于非美工出身的独立游戏创作者，这些“内容”的来源总是一个大难题，当然总有些<a href="http://forum.fr2db.fr/topic17135.html" target="_blank">取巧的题材或设计</a>能绕过这个槛，但是也总能看到那些成功的例子都离不开丰满的视觉内容，甚至是独特的艺术风格，比如iOS平台上最火的那些“小制作”：有<a href="http://roboxstudios.com/grimm/" target="_blank">Grimm</a>的Edward Gorey式维多利亚哥特，有Rolando搭上的<a href="http://cargocollective.com/mikkowalamies" target="_blank">芬兰插画家</a>，还有最近<a href="http://www.swordandsworcery.com/artwork/" target="_blank">Sword &#038; Sworcery EP</a>那“淡淡忧伤”的像素画风……</p>
<p>实际上对那些想要制作游戏的宅男们来说，美工背景有天然优势，程序员离不开心灵手巧的美工，而美工却能不依赖可怜的程序员，这主要是因为程序员们有一种根深蒂固深入骨髓的恶习叫作“抽象”和“复用”，他们总是不甘心只把想要的东西简简单单实现出来，总是忍不住去把其中通用的、不变的、能反复利用的部分提取出来，完善成库、框架、引擎和工具，有极少数头脑发热耳鸣眼花鼻塞手贱腿抽筋的人甚至会继续折腾出一套“不需要编程”就能自由创作的强大工具……在这些资源和技术宅的帮助下，很多美术宅和性幻想达人们都顺畅的踏上了游戏制作之路……可参考<a target="_blank" href="http://zh.wikipedia.org/zh/%E6%AD%A1%E8%BF%8E%E5%8A%A0%E5%85%A5NHK!">《欢迎加入NHK!》</a>里的山崎薫和佐藤，或现实世界里的<a href="http://zh.wikipedia.org/wiki/%E6%AD%A6%E5%86%85%E5%B4%87" target="_blank">武内崇</a>和<a href="http://zh.wikipedia.org/zh-cn/%E5%A5%88%E9%A0%88%E7%A3%A8%E8%8F%87" target="_blank">奈须蘑菇</a>……<span id="more-401"></span></p>
<p>好罢以上都是“技术宅你们伤不起”系列的吐槽，其实不会写程序就像束缚了手脚去爬山，同样很辛苦。我想说的是，相对于代码和软件，可复用的美术资源实在是太稀缺了，如果你也曾经在网上搜寻过免费完整的游戏开发资源，一定体验过那种浪费大量时间仍一无所获的挫折感。</p>
<p>而今天要讲的，是一个站出来挑战这种现状的平凡宅男的故事。</p>
<p>国外有一些独立游戏为了回馈社区，会释出一些自己使用的代码和资源，如果留意过相关的声明，会发现很多开发者都注明“图像来自Reiner Prokein”，其中<a target="_blank" href="http://www.ambardia.com/FreeGraphics/FreeGraphics.html">Ambardia网站</a>上提供下载的那些帖图（tile）资源最壮观最让人惊喜：</p>
<p><a target="_blank" href="http://www.limboy.com/wp-content/uploads/2011/05/Screen-shot-2011-05-02-at-4.11.50-AM.png"><img src="http://www.limboy.com/wp-content/uploads/2011/05/Screen-shot-2011-05-02-at-4.11.50-AM.png"  class="alignnone size-full wp-image-406" style="width:500px" /></a></p>
<p>而这些也都是同一个人创作的。</p>
<p>这个人没有wiki词条，在mobygames上没有介绍，一点名气都没有，但他有一个叫Reiner&#8217;s Tilesets的网站（<a href="http://reinerstileset.4players.de/" target="_blank">旧版</a>，<a href="http://www.reinerstilesets.de" target="_blank">新版</a>），提供更海量的资源，全部是自己绘制，全部以freeware形式提供下载，没有任何好看的许可协议（比如CC-BY或GPL），没有任何限制，允许商业使用，允许随意修改，唯一的要求是你确实用它们做游戏（不准直接转卖），并且在商业作品的Credits名单里要包含他的名字。</p>
<p>那是一个更传奇式的名字，叫作Reiner &#8220;Tiles&#8221; Prokein，他是德国人，一直梦想制作自己的电脑游戏。最开始他不懂编程——他基本上什么都不懂，但他没有放弃，没有畏首畏尾，从99年秋天开始，他决定寻找一种不用编程就能制作游戏的软件。</p>
<p>他找到了前辈ambro的神帖：<a target="_blank" href="http://www.ambrosine.com/resource.php">Ambrosine&#8217;s Game Creation Resources &#038; Classic Game Links</a></p>
<p>他逐个尝试，最后喜欢上<a target="_blank" href="http://zh.wikipedia.org/wiki/RPG%E8%A3%BD%E4%BD%9C%E5%A4%A7%E5%B8%AB">rpgmaker 95</a>，开始制作自己的第一个小型RPG。这个游戏完成了，但从来没有公开过，因为他后来得知破解版的rpgmaker有合法性方面的问题。</p>
<p>在这个过程中，他发现网络上缺乏用于制作游戏的免费图像资源，便开始自己绘制，最初他一个像素一个像素的手绘，接下来他发现了TrueSpace（Caligari公司推出的3D图形和动画渲染工具，现在已经被微软收购，用于虚拟地球项目，可免费下载），开始学习所有跟图像渲染有关的知识。</p>
<p>因为不会编程，Reiner制作游戏的努力始终伴随着挫折感，而学习编程看上去又遥不可及。但他没有放弃，他继续搜寻，又发现了<a href="http://rpgmaker.net/" target="_blank">rpgmaker.net</a>，在这个社区里能找到大量处于beta甚至alpha阶段的游戏制作软件，他开始参与到rpgstudio的开发中，为它创作帖图资源，并且从那个时候起开始建设自己的主页，也就是“Reiner&#8217;s Tilesets”，那是2000年春天。</p>
<p>但是要完成一个像rpgstudio这样的项目，所需时间远超他的想象，而这个项目最后也被废止了。</p>
<p>他仍然想要做游戏，这次他找到了MMF（Multimedia Fusion）的主页，来自法国Clickteam公司的这款软件前身就是著名的《游戏工厂》（TGF），只需要点击和托拽就能完成程序逻辑，还有大量扩展，Reiner觉得他终于找到了自己想要的，全心全意的投入其中。已经是2000年冬天。</p>
<p>2007年，Reiner在主页上更新了自己的近况，七年过去了，他没有拿出什么<a href="http://www.reinerstilesets.de/spiele/" target="_blank">引入注目的游戏</a>，不过他声称在尝试开发3D游戏，他现在主要用3D Gamestudio ，MMF有时也用，这意味着他不再像以前那样惧怕编程了，至少学习了一点lite-C（脚本语言）</p>
<p>2010年，Reiner再次更新，原来过去三年他都在克服某些身体健康方面的问题，从Caligari公司接的一些软件测试工作也耗费了他很多时间，总之他没有完成那个3D游戏，但是跟以往的文字一样，他喜欢在段落的末尾用笑脸代替句号：“<strong>But i never give up, and i don&#8217;t stop dreaming :)</strong>”</p>
<p>2011年春天，Reiner用wordpress重建了自己的tileset网站，没有德国游戏门户4players.de和广告的支持，他必须自己支付服务器费用了，末尾仍然没忘记笑脸：“<strong>But i am more than willing to pay this price :)</strong>”</p>
<p>这个故事还没结束，在99~00年的高潮之后，也许一直都会这么平淡无奇，但不知为什么让我觉得很温暖，忍不住分享一下。</p>
<p><strong>【UPDATE】</strong> 刚才仔细查了一下mobygames，在《Eschalon: Book I》（Basilisk工作室著名的独立RPG）的<a target="_blank" href="http://www.mobygames.com/game/windows/eschalon-book-i/credits">Credits</a>里，看到了Reiner Prokein的名字！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2011/05/02/tiles-legend/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google的大危机——本地app重新流行！浏览器和web已死？</title>
		<link>http://www.limboy.com/2010/08/21/app-vs-web/</link>
		<comments>http://www.limboy.com/2010/08/21/app-vs-web/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 14:02:58 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[web服务/应用]]></category>
		<category><![CDATA[科技]]></category>

		<guid isPermaLink="false">http://www.limboy.com/?p=336</guid>
		<description><![CDATA[这个星期连线杂志的文章《浏览器已死，互联网永生》（中文）成功的引发话题，即使在中国都引发了广泛激烈的争论，以下这段评论我本来是像往常一样用google reader的note来写的，但是不小心写长了-__-b，干脆发到这里，文字没时间修改所以也没有笑点，我只是觉得这些很明显的道理，在很多人的文章里没看到提起，所以如梗在喉……
引发连线思考的，并非一份统计数据，而是本地应用（native app）重新流行的现象，连线把这种现象解读为：商业战胜乌托邦、垄断战胜混乱、封闭战胜开放、便利战胜多样、营销战胜传播、性能战胜创新、稀少战胜丰富、内容战胜技术……显然YY过头了，这些观点随便抽出一个都不可能不引发争议。而实际上呢，这个现象背后真正分出胜负的对战双方，应该是移动设备战胜传统电脑。
先想想web的优势：跨平台、即需即用、一致性、安装和升级的成本为0、托管数据、托管计算任务、自由开放、实现和分发新产品新内容的成本低门槛低——最后两条导致新产品新内容层出不穷。
在桌面电脑上，这些都是绝对无敌的杀手级特性，本地软件即便在用户体验和性能方面有优势，在web的巨大优势面前也是杯水车薪。所以我们看到：即使在第三方软件用户体验最高（平均…）的OS X平台上，本地软件替代web的情况都极少，相反，因为google reader，像NetNewsWire这样的阅读器软件销声匿迹。因为gmail，困扰开源社区多年的outlook终于有了替代品。我们也并没有下载安装一大堆本地app专门用来访问连线、NYT、维基、google maps、facebook&#8230;&#8230;只有在那些web还没发展出成熟技术的领域，本地app才会无法取代，比如代码编辑器（vim/eclipse）和音乐管理（itunes）。也许有人认为twitter是一个app取代浏览器的例子……请问，早期的twitter真的是一个website或者webapp么？实际上只是一个数据服务罢？
正因如此，就在不久前，人们还经常畅谈web和浏览器取代操作系统，google也毫不动摇的坚守在浏览器里。为什么现在突然变调，开始有人怀疑浏览器将死了？
是因为移动设备火了。开头列举的web优势，并不全都适用于移动设备——我指的是“跨平台、即需即用、一致性”，人们经常需要使用不同的电脑：住宅里的台式机、公司里的工作站、咖啡馆里的笔记本……但是移动设备，比如手机和ipad，却几乎肯定是一人一机，没有切换的可能性，于是“即需即用”变成了“事先装好以后常用”、跨平台和一致性的需求也没了。另一方面由于app store的出现，移动平台上软件的安装和升级成本也大幅降低了（虽然对像我这样装了200+软件的用户来说升级还是很麻烦）。而“托管数据”和“托管计算任务”，也不再是浏览器的专利，在随时与网络连接、自身资源有限的移动设备上，本地app也大量使用云端的托管。因为这些原因，web/浏览器的优势被抵消了大半，本地app在用户体验和性能方面的优势凸显出来，成了最佳选择……
但是别忘了，web的优势还剩下两条：“自由开放、实现和分发新产品新内容的成本低门槛低“。仅凭这两条，web就拥有独一无二的生命力，也永远不会被app取代。想想看：世界上真正有几家企业的软件或内容服务，能为广大用户熟知，能轻易的说服广大用户下载安装甚至购买？假如没有浏览器里的web，这个世界就只有大厂商和传统媒体能生存，只会有封闭的、不一致的平台。新事物、新内容、新企业的出现都会变的很难、很慢、很少。一个成员数量接近七十亿的人类社会能接受这种世界么？
一种产品或内容，不论多么优秀多么创新的，都不会一直是最好，因为永远会出现更好。一种现状，无论多么尽善尽美，都不可能抑制住一些人对创造和自我实现的向往。一个企业，无论多么强大，也不可能满足长尾上的每一点需求、不可能看到每一个能通向引爆点的新方向。一个平台，即使是apple出品，即使它值得学习值得崇拜，但是值得去局限自己的视野、封闭自己的思维么——我觉得《连线》的编辑就是这样做的。
另外，就算是移动设备，也不适合所有人都一窝蜂推出本地app，上上周在书店遇到都市客的技术总监小叶同志，我也对他们的周末画报app泼过类似的凉水，小叶同志说重要的是”先圈地“，我认为……地是很有限的。比方说，我喜欢google reader的web界面，更喜欢ipad上的本地客户端Reeder，但要是你以为你的产品也能复制这种成功，用本地app来取代web界面，那就大错特错了——除非你是真正的杀手级应用，或者极少数垄断性内容媒体，否则除了死geek，没人会把你的app，连同另外上百个类似的app都安装保留在移动设备上面，我们只可能在web上，通过链接的跳转，偶尔访问到你。如果没有web，没有浏览器，你早就死了。

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.limboy.com/wp-content/uploads/2010/08/apple-app-store.jpg"><img src="http://www.limboy.com/wp-content/uploads/2010/08/apple-app-store-300x174.jpg" alt="" title="apple-app-store" width="300" height="174" style="float:left;margin:0 10px 0 0;" /></a>这个星期连线杂志的文章<a href="http://www.wired.com/magazine/2010/08/ff_webrip/all/1" target="_blank">《浏览器已死，互联网永生》</a>（<a href="http://tech.sina.com.cn/i/2010-08-18/19554560539.shtml" target="_blank">中文</a>）成功的引发话题，即使在中国都引发了广泛激烈的争论，以下这段评论我本来是像<a href="http://www.google.com/profiles/dexter.yy" target="_blank">往常</a>一样用google reader的note来写的，但是不小心写长了-__-b，干脆发到这里，文字没时间修改所以也没有笑点，我只是觉得这些很明显的道理，在很多人的文章里没看到提起，所以如梗在喉……</p>
<p>引发连线思考的，并非一份<a href="http://www.techcrunchchina.com/2940" target="_blank">统计数据</a>，而是本地应用（native app）重新流行的现象，连线把这种现象解读为：商业战胜乌托邦、垄断战胜混乱、封闭战胜开放、便利战胜多样、营销战胜传播、性能战胜创新、稀少战胜丰富、内容战胜技术……显然YY过头了，这些观点随便抽出一个都不可能不引发争议。而实际上呢，这个现象背后真正分出胜负的对战双方，应该是移动设备战胜传统电脑。<span id="more-336"></span></p>
<p>先想想web的优势：跨平台、即需即用、一致性、安装和升级的成本为0、托管数据、托管计算任务、自由开放、实现和分发新产品新内容的成本低门槛低——最后两条导致新产品新内容层出不穷。</p>
<p>在桌面电脑上，这些都是绝对无敌的杀手级特性，本地软件即便在用户体验和性能方面有优势，在web的巨大优势面前也是杯水车薪。所以我们看到：即使在第三方软件用户体验最高（平均…）的OS X平台上，本地软件替代web的情况都极少，相反，因为google reader，像NetNewsWire这样的阅读器软件销声匿迹。因为gmail，困扰开源社区多年的outlook终于有了替代品。我们也并没有下载安装一大堆本地app专门用来访问连线、NYT、维基、google maps、facebook&#8230;&#8230;只有在那些web还没发展出成熟技术的领域，本地app才会无法取代，比如代码编辑器（vim/eclipse）和音乐管理（itunes）。也许有人认为twitter是一个app取代浏览器的例子……请问，早期的twitter真的是一个website或者webapp么？实际上只是一个数据服务罢？</p>
<p>正因如此，就在不久前，人们还经常畅谈web和浏览器取代操作系统，google也毫不动摇的坚守在浏览器里。为什么现在突然变调，开始有人怀疑浏览器将死了？</p>
<p>是因为移动设备火了。开头列举的web优势，并不全都适用于移动设备——我指的是“跨平台、即需即用、一致性”，人们经常需要使用不同的电脑：住宅里的台式机、公司里的工作站、咖啡馆里的笔记本……但是移动设备，比如手机和ipad，却几乎肯定是一人一机，没有切换的可能性，于是“即需即用”变成了“事先装好以后常用”、跨平台和一致性的需求也没了。另一方面由于app store的出现，移动平台上软件的安装和升级成本也大幅降低了（虽然对像我这样装了200+软件的用户来说升级还是很麻烦）。而“托管数据”和“托管计算任务”，也不再是浏览器的专利，在随时与网络连接、自身资源有限的移动设备上，本地app也大量使用云端的托管。因为这些原因，web/浏览器的优势被抵消了大半，本地app在用户体验和性能方面的优势凸显出来，成了最佳选择……</p>
<p>但是别忘了，web的优势还剩下两条：“自由开放、实现和分发新产品新内容的成本低门槛低“。仅凭这两条，web就拥有独一无二的生命力，也永远不会被app取代。想想看：世界上真正有几家企业的软件或内容服务，能为广大用户熟知，能轻易的说服广大用户下载安装甚至购买？假如没有浏览器里的web，这个世界就只有大厂商和传统媒体能生存，只会有封闭的、不一致的平台。新事物、新内容、新企业的出现都会变的很难、很慢、很少。一个成员数量接近七十亿的人类社会能接受这种世界么？</p>
<p>一种产品或内容，不论多么优秀多么创新的，都不会一直是最好，因为永远会出现更好。一种现状，无论多么尽善尽美，都不可能抑制住一些人对创造和自我实现的向往。一个企业，无论多么强大，也不可能满足长尾上的每一点需求、不可能看到每一个能通向引爆点的新方向。一个平台，即使是apple出品，即使它值得学习值得崇拜，但是值得去局限自己的视野、封闭自己的思维么——我觉得《连线》的编辑就是这样做的。</p>
<p>另外，就算是移动设备，也不适合所有人都一窝蜂推出本地app，上上周在书店遇到都市客的技术总监小叶同志，我也对他们的周末画报app泼过类似的凉水，小叶同志说重要的是”先圈地“，我认为……地是很有限的。比方说，我喜欢google reader的web界面，更喜欢ipad上的本地客户端<a href="http://reederapp.com/ipad/" target="_blank">Reeder</a>，但要是你以为你的产品也能复制这种成功，用本地app来取代web界面，那就大错特错了——除非你是真正的杀手级应用，或者极少数垄断性内容媒体，否则除了死geek，没人会把你的app，连同另外上百个类似的app都安装保留在移动设备上面，我们只可能在web上，通过链接的跳转，偶尔访问到你。如果没有web，没有浏览器，你早就死了。</p>
<p><img src="http://www.limboy.com/wp-content/uploads/2010/08/dead-300x203.jpg" alt="" title="dead" width="300" height="203" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2010/08/21/app-vs-web/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Google I/O大会keynote摘要</title>
		<link>http://www.limboy.com/2010/05/20/google-io-summary/</link>
		<comments>http://www.limboy.com/2010/05/20/google-io-summary/#comments</comments>
		<pubDate>Wed, 19 May 2010 19:10:19 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[web服务/应用]]></category>

		<guid isPermaLink="false">http://www.limboy.com/?p=274</guid>
		<description><![CDATA[


VP8开源，免专利费，发布新的web视频格式 WebM

WebM的组成包括：VP8（视频编码） + Vorbis（音频编码） + Matroska（即mkv，容器格式） ，文件后缀.webm
VP8的FAQ：http://www.webmproject.org/about/faq/
来自x264开发者的VP8深度技术分析：http://x264dev.multimedia.cx/?p=377


 


几乎所有浏览器厂商都宣布支持VP8：

Chromium：http://build.chromium.org/buildbot/snapshots 
Chrome在24号更新 
Firefox：http://nightly.mozilla.org/webm/ 
Opera：http://labs.opera.com/news/2010/05/19/ 
微软宣布IE9将支持VP8：http://windowsteamblog.com/windows/b/bloggingwindows/archive/2010/05/19/another-follow-up-on-html5-video-in-ie9.aspx 
Adobe在会上宣布flash支持webm/VP8，这样flash将支持5种codec：Screen sharing, Spark, VP6, H.264, VP8 


 

Adobe发布HTML5开发工具

dreamweaver的HTML5 Pack：http://labs.adobe.com/technologies/html5pack/
同时测试多种浏览器设备（Multiscreen Preview panel）
支持编辑和渲染CSS3，包括动画，有一个demo看上去很像用flash开发广告banner


  

Chrome Web Store

帮助用户寻找web app，可以在Chrome app tab上创建软件的快捷方式：http://code.google.com/chrome/apps/
内建支付系统，支持付费软件
包含flash软件
包含Native Client应用（原生程序＋HTML5 API），3D游戏可以全屏运行
包含出版物，演示了HTML5 magazine


  

Google Wave正式开放，包含一堆API和扩展机制，跟gmail整合

  

API更新

Font API：http://code.google.com/apis/webfonts/
Feed API支持PubSubHubbub：http://googleajaxsearchapi.blogspot.com/2010/05/google-feed-api-now-with-instant.html
Maps API v3从labs里毕业


  

Google Web Toolkit 和 Google Ap Engine

跟VMware合作，整合 GWT 和 Spring（SpringSource Tool Suite， [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.limboy.com/2010/05/20/google-io-summary/"><img src="http://code.google.com/events/images/io2010logo.png" alt="" style="margin:0 10px 10px 0;float:left;width:240px" /></a>
<ol>
<li>
<h3>VP8开源，免专利费，发布新的web视频格式 WebM</h3>
<ul>
<li>WebM的组成包括：VP8（视频编码） + Vorbis（音频编码） + Matroska（即mkv，容器格式） ，文件后缀.webm</li>
<li>VP8的FAQ：<a href="http://www.webmproject.org/about/faq/">http://www.webmproject.org/about/faq/</a></li>
<li>来自x264开发者的VP8深度技术分析：<a href="http://x264dev.multimedia.cx/?p=377">http://x264dev.multimedia.cx/?p=377</a></li>
</ul>
</li>
<p> <br/><br />
<span id="more-274"></span></p>
<li>
<h3>几乎所有浏览器厂商都宣布支持VP8：</h3>
<ul>
<li>Chromium：<a href="http://build.chromium.org/buildbot/snapshots">http://build.chromium.org/buildbot/snapshots</a> </li>
<li>Chrome在24号更新 </li>
<li>Firefox：<a href="http://nightly.mozilla.org/webm/">http://nightly.mozilla.org/webm/</a> </li>
<li>Opera：<a href="http://labs.opera.com/news/2010/05/19/">http://labs.opera.com/news/2010/05/19/</a> </li>
<li>微软宣布IE9将支持VP8：<a href="http://windowsteamblog.com/windows/b/bloggingwindows/archive/2010/05/19/another-follow-up-on-html5-video-in-ie9.aspx">http://windowsteamblog.com/windows/b/bloggingwindows/archive/2010/05/19/another-follow-up-on-html5-video-in-ie9.aspx</a> </li>
<li>Adobe在会上宣布flash支持webm/VP8，这样flash将支持5种codec：Screen sharing, Spark, VP6, H.264, VP8 </li>
</ul>
</li>
<p> <br/></p>
<li>
<h3>Adobe发布HTML5开发工具</h3>
<ul>
<li>dreamweaver的HTML5 Pack：<a href="http://labs.adobe.com/technologies/html5pack/">http://labs.adobe.com/technologies/html5pack/</a></li>
<li>同时测试多种浏览器设备（Multiscreen Preview panel）</li>
<li>支持编辑和渲染CSS3，包括动画，有一个demo看上去很像用flash开发广告banner</li>
</ul>
</li>
<p>  <br/></p>
<li>
<h3>Chrome Web Store</h3>
<ul>
<li>帮助用户寻找web app，可以在Chrome app tab上创建软件的快捷方式：<a href="http://code.google.com/chrome/apps/">http://code.google.com/chrome/apps/</a></li>
<li>内建支付系统，支持付费软件</li>
<li>包含flash软件</li>
<li>包含Native Client应用（原生程序＋HTML5 API），3D游戏可以全屏运行</li>
<li>包含出版物，演示了HTML5 magazine</li>
</ul>
</li>
<p>  <br/></p>
<li>
<h3>Google Wave正式开放，包含一堆API和扩展机制，跟gmail整合</h3>
</li>
<p>  <br/></p>
<li>
<h3>API更新</h3>
<ul>
<li>Font API：<a href="http://code.google.com/apis/webfonts/">http://code.google.com/apis/webfonts/</a></li>
<li>Feed API支持PubSubHubbub：<a href="http://googleajaxsearchapi.blogspot.com/2010/05/google-feed-api-now-with-instant.html">http://googleajaxsearchapi.blogspot.com/2010/05/google-feed-api-now-with-instant.html</a></li>
<li>Maps API v3从labs里毕业</li>
</ul>
</li>
<p>  <br/></p>
<li>
<h3>Google Web Toolkit 和 Google Ap Engine</h3>
<ul>
<li>跟VMware合作，整合 GWT 和 Spring（SpringSource Tool Suite， Spring Roo）<a href="http://www.springsource.org/node/2595">http://www.springsource.org/node/2595</a></li>
<li>GWT 2.1 Widget Libraries，支持移动设备</li>
<li>Google Ap Engine企业版</li>
</ul>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2010/05/20/google-io-summary/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>继续补充vim配置技巧——上次的vimrc还不够强力</title>
		<link>http://www.limboy.com/2009/06/07/vim-setting-more/</link>
		<comments>http://www.limboy.com/2009/06/07/vim-setting-more/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 18:52:27 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[工具]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2009/06/07/vim-setting-more/</guid>
		<description><![CDATA[首先要补充一些MacVim的配置，其实写上篇文章的时候我还在用已经过时的基于Carbon界面的vim for osx，更接近传统的unix版本，但是好久没更新，只支持vim6.0，soureforge上有一个7.2的版本，bug诸多，其中的乱码和字体抗锯齿的问题让我完全无法忍。而MacVim是基于Cocoa开发，支持到7.2，还含有很多讨好mac用户的设计，比如对标签的良好支持，华丽的界面（背景颜色支持透明度，字体抗锯齿更漂亮，几乎跟TextMate的效果没区别）……非常后悔以前没仔细试用这个版本！目前为止只发现行高linespace的设置会无法生效，不过这个bug在最新的快照版里已经修正了。
插播一个道歉：由于spam太多，我前段时间在wordpress黑名单里加了一个很苛刻的条件，把所有评论都挡到待审核列表里去了，好像还直接删了一部分……咳……
我在.vimrc里增加了一些专门针对MacVim的设置：
if has(&#34;gui_macvim&#34;)
&#160; &#34;取消默认的快捷键
&#160; let macvim_skip_cmd_opt_movement = 1 
&#160; let macvim_hig_shift_movement = 1
&#160; 
&#160; &#34;设置背景透明度
&#160; set transparency=2
&#160; &#34;隐藏工具条
&#160; set guioptions-=T &#34;egmrt
&#160; 
&#160; &#34;绑定自己需要的cmd快捷键
&#160; macm File.Save&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; key=&#60;D-s&#62;
&#160; macm File.Save\ As\.\.\.&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; key=&#60;D-S&#62;
&#160; macm [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/wp-content/uploads/2009/06/picture-4.png' title='picture-4.png' target="_blank"><img src='http://www.limboy.com/wp-content/uploads/2009/06/picture-4.png' alt='picture-4.png' style="width:200px;margin:0 10px 10px 0;float:left;" /></a>首先要补充一些<a href="http://code.google.com/p/macvim/" target="_blank">MacVim</a>的配置，其实写上篇文章的时候我还在用已经过时的<a href="http://macvim.org/OSX/index.php" target="_blank">基于Carbon界面的vim for osx</a>，更接近传统的unix版本，但是好久没更新，只支持vim6.0，soureforge上有一个<a href="http://sourceforge.net/project/showfiles.php?group_id=213254" target="_blank">7.2的版本</a>，bug诸多，其中的乱码和字体抗锯齿的问题让我完全无法忍。而MacVim是基于Cocoa开发，支持到7.2，还含有很多讨好mac用户的设计，比如对标签的良好支持，华丽的界面（背景颜色支持透明度，字体抗锯齿更漂亮，几乎跟TextMate的效果没区别）……非常后悔以前没仔细试用这个版本！目前为止只发现行高linespace的设置会无法生效，不过这个bug在<a href="http://code.google.com/p/macvim/wiki/Snapshot" target="_blank">最新的快照版</a>里已经修正了。</p>
<p>插播一个道歉：由于spam太多，我前段时间在wordpress黑名单里加了一个很苛刻的条件，把所有评论都挡到待审核列表里去了，好像还直接删了一部分……咳……<span id="more-236"></span></p>
<p>我在.vimrc里增加了一些专门针对MacVim的设置：</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">if has(&quot;gui_macvim&quot;)</li>
<li>&nbsp; &quot;取消默认的快捷键</li>
<li>&nbsp; let macvim_skip_cmd_opt_movement = 1 </li>
<li>&nbsp; let macvim_hig_shift_movement = 1</li>
<li>&nbsp; </li>
<li>&nbsp; &quot;设置背景透明度</li>
<li>&nbsp; set transparency=2</li>
<li>&nbsp; &quot;隐藏工具条</li>
<li>&nbsp; set guioptions-=T &quot;egmrt</li>
<li>&nbsp; </li>
<li>&nbsp; &quot;绑定自己需要的cmd快捷键</li>
<li>&nbsp; macm File.Save&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; key=&lt;D-s&gt;</li>
<li>&nbsp; macm File.Save\ As\.\.\.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; key=&lt;D-S&gt;</li>
<li>&nbsp; macm Edit.Undo&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; key=&lt;D-z&gt; action=undo:</li>
<li>&nbsp; macm Edit.Redo&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; key=&lt;D-Z&gt; action=redo:</li>
<li>&nbsp; macm Edit.Cut&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;key=&lt;D-x&gt; action=cut:</li>
<li>&nbsp; macm Edit.Copy&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; key=&lt;D-c&gt; action=copy:</li>
<li>&nbsp; macm Edit.Paste&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;key=&lt;D-v&gt; action=paste:</li>
<li>&nbsp; macm Edit.Select\ All&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;key=&lt;D-A&gt; action=selectAll:</li>
<li>endif</li></ol></div>
<p>之所以要取消MacVim默认的一些快捷键是因为它们都占用了cmd苹果键，而我习惯用这个键来替代ctrl在vim里的作用（在mbp的键盘上就算我想用ctrl也不方便……），不过其中有几个快捷键是非常非常有价值的，比如保存（省去了输入:w的麻烦），全选（否则要摁六下：ggVG），复制粘贴剪切（否则为了使用剪贴板，比如猛摁这种玩意：&#8221;+y，还不能在插入模式下使用 ），幸好它们的快捷键都不跟vim其他操作冲突，所以自己设置。为了完全删除MacVim默认的cmd快捷键，还需要打开app中自带的vimrc文件（可以这样编辑：:tabe $VIM/vimrc ），删除末尾那些macm开头的代码。<br />
<br/><br />
MacVim的安装包里包含一个mvim，是像gvim一样的脚本，用来在命令行中调用GUI版的vim，但是mvim默认会在新窗口打开文件，我相信多数人都喜欢在当前窗口的新标签页里打开罢，需要在命令后加&#8211;remote-tab参数，不过<a href="http://webexpose.org/2008/10/13/open-macvim-tabs-from-command-line" target="_blank">这篇文章</a>里给出了直接修改脚本的方法，把mvim底部从# Last step:  fire up vim开始的部分删掉，改成：</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">tabs=true </li>
<li>&nbsp;</li>
<li># Last step:&nbsp; fire up vim. </li>
<li>if [ &quot;$gui&quot; ]; then </li>
<li>	if $tabs &amp;&amp; [[ `$binary --serverlist` = &quot;VIM&quot; ]]; then</li>
<li>	&nbsp; &nbsp;	exec &quot;$binary&quot; -g $opts --remote-tab-silent ${1:+&quot;$@&quot;} </li>
<li>	else </li>
<li>		exec &quot;$binary&quot; -g $opts ${1:+&quot;$@&quot;} </li>
<li>	fi </li>
<li>else </li>
<li>	exec &quot;$binary&quot; $opts ${1:+&quot;$@&quot;} </li>
<li>fi</li></ol></div>
<p>P.S. 上面给出的那个blog不能直接打开，也许是需要翻墙，不过我顺便介绍一个很方便的利用google网页快照的方法～ 用<a href="http://translate.google.cn/translate_t#zh-CN|en|" target="_blank">谷歌翻译</a>打开这个网址 XD<br />
<br/><br />
刚安装好的MacVim打开gb编码的文件仍然把中文显示成乱码（好无奈，GBK编码是土豆网的历史遗留问题，页面里的script标签也几乎都没加charset=&#8221;utf-8&#8243;，所以大部分js文件都只好用gb18030的编码，textmate正是因为不支持gb编码才被我降为二等公民的，其实我有正版cdkey……），我在.vimrc里加上了encoding似乎能解决这个问题：</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">set encoding=utf-8</li>
<li>set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936</li></ol></div>
<p>解释一下：对于编码，vim里有三个设置选项，encoding是设置vim以何种编码显示文件（缩写enc），fileencoding是当前文件实际的编码（缩写fenc）， 而fileencodings指示vim如何解码（缩写fencs），因此vim在打开一个文件时实际上会先根据fileencodings里的列表反复测试，直到成功解码，转换成encoding指定的编码，然后正常显示，转码的过程是用iconv实现的（所以windows上用vim还要配置iconv的dll路径和参数……麻烦），保存的时候会根据fileencoding来保存，跟是否显示为乱码没有关系。</p>
<p>所以如果想转换一个文件的编码，比如从utf-8转换到gb18030，可以在编辑器中直接输入两个命令：</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">:set enc=gb18030</li>
<li>:set fenc=gb18030</li></ol></div>
<p>然后保存就ok了～其实如果不用继续编辑的话，第一行都可以省去，因为它的目的只是让编辑器用gb18030来显示当前文件，避免乱码，但是并不影响文件保存时的编码和正确性。</p>
<p>以前我都是依赖mac上的<a href="http://www.panic.com/coda/" target="_blank">Coda</a>来转换编码（确实最方便）……vim又成功了抢了它的饭碗……<br />
<br/><br />
MacVim还有一个问题是会显示一个很宅很不人性的标签栏名称，比如我编辑/usr/local/bin/mvim这个文件，标签栏上写的是“/u/l/b/mvim”，如果目录结构再深一点就看不到真正的文件名了，在.vimrc里加入下面这行可以让标签栏只显示文件名：</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">set guitablabel=%t</li></ol></div>
<p><br/><br />
上次的.vimrc里还增加了两处很重要的设置，主要是受这位老爷写的<a href="http://easwy.com/blog/archives/advanced-vim-skills-catalog/" target="_blank">《vim使用进阶》</a>的启发，首先是让.vimrc每次编辑保存后自动生效，避免重启：</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">autocmd! bufwritepost .vimrc source ~/.vimrc</li></ol></div>
<p>autocmd实际上是vim脚本的事件机制，表示在某个事件触发后自动执行的命令<br />
<br/><br />
接下来要实现的是保存和恢复编辑器的当前状态，类似Eclipse的Workspace，不过vim的session更强大，几乎可以还原一切状态……<a href="http://easwy.com/blog/archives/advanced-vim-skills-session-file-and-viminfo/" target="_blank">Easwy老爷介绍的命令</a>比较繁琐，缺乏“一键恢复”的快感……身为一个习惯使用“高级语言”的程序员，在这种时候就抑制不住继续封装和提高抽象层的欲望……所以自定义了以下两个命令：</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">function! GetMySession(spath, ssname)</li>
<li>	if a:ssname == 0</li>
<li>		let a:sname = &quot;&quot;</li>
<li>	else</li>
<li>		let a:sname = &quot;-&quot;.a:ssname</li>
<li>	endif</li>
<li>	execute &quot;source $&quot;.a:spath.&quot;/session&quot;.a:sname.&quot;.vim&quot;</li>
<li>	execute &quot;rviminfo $&quot;.a:spath.&quot;/session&quot;.a:sname.&quot;.viminfo&quot;</li>
<li>	execute &quot;echo \&quot;Load Success\: $&quot;.a:spath.&quot;/session&quot;.a:sname.&quot;.vim\&quot;&quot;</li>
<li>endfunction</li>
<li>&nbsp;</li>
<li>function! SetMySession(spath, ssname)</li>
<li>	if a:ssname == 0</li>
<li>		let a:sname = &quot;&quot;</li>
<li>	else</li>
<li>		let a:sname = &quot;-&quot;.a:ssname</li>
<li>	endif</li>
<li>	execute &quot;cd $&quot;.a:spath</li>
<li>	execute &quot;mksession! $&quot;.a:spath.&quot;/session&quot;.a:sname.&quot;.vim&quot;</li>
<li>	execute &quot;wviminfo! $&quot;.a:spath.&quot;/session&quot;.a:sname.&quot;.viminfo&quot;</li>
<li>	execute &quot;echo \&quot;Save Success\: $&quot;.a:spath.&quot;/session&quot;.a:sname.&quot;.vim\&quot;&quot;</li>
<li>endfunction</li>
<li>&nbsp;</li>
<li>&quot; load session from certain path</li>
<li>command! -nargs=+ LOAD call GetMySession(&lt;f-args&gt;) </li>
<li>&nbsp;</li>
<li>&quot; load session from certain path</li>
<li>command! -nargs=+ SAVE call SetMySession(&lt;f-args&gt;)</li></ol></div>
<p>为了用最简单的方法选择路径，使用时需要先在终端的初始化脚本（比如~/.bashrc，在我的OSX系统里通常用~/.profile）里添加相应的环境变量，比如我常用的三个路径：</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">export TUISVN=&quot;/Users/dexteryy/Sites/Tudou/ui/ui/&quot;</li>
<li>export TUIDEV=&quot;/Volumes/ui.tudou.com/&quot;</li>
<li>export MYWEB=&quot;/Users/dexteryy/Sites/www/&quot;</li></ol></div>
<p>当我在MYWEB的路径下做项目的时候，如果需要保存当前状态，只要输入:SAVE MYWEB 0就行了，这里的0是因为考虑到在同一个工作目录里可能需要使用到不同文件组合的工作区，提供的一个简单的版本号，这段命令执行后会在/Users/dexteryy/Sites/www/目录里生成两个文件： session.viminfo和session.vim，如果版本号是大于0的整数，比如2，文件名会是session2.viminfo和session2.viminfo</p>
<p>需要恢复的时候只要输入命令：:LOAD MYWEB 0  就行叻～</p>
<p>喔对了，为了能在VIM命令里使用bash中定义的变量，你需要在MacVim的preferences里把“Launch Vim processes in a login shell”勾选，熟悉Mac应用的同学应该都能想到这个设置会记录在/Library/Preferences/或~/Library/Preferences/里的某个配置文件里，MacVim对应的是~/Library/Preferences/org.vim.MacVim.plist，所以你也可以直接用这个命令在终端里修改：</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">defaults write org.vim.MacVim MMLoginShell 1</li></ol></div>
<p>如果使用的是Gvim或windows版本的vim，也可以直接把路径变量写在.vimrc里，比如：</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">let g:TUISVN=&quot;/Users/dexteryy/Sites/Tudou/ui/ui/&quot;</li></ol></div>
<p>然后修改上面的两个函数GetMySession和SetMySession，把a:spath前面的$都删掉…………因为VIM里的变量只能由大写字母开头……</p>
<p>完整的<a href="http://code.google.com/p/yy-vimscript/source/browse/trunk/vimrc">.vimrc</a>在这里…………呃好罢我发现google code真是备份和维护配置脚本的好地方XD<br />
<br/><br />
最后继续讨论一下插件～</p>
<p>首先是<a href="http://www.vim.org/scripts/script.php?script_id=273" target="_blank">Taglist</a>，这是一个能让vim具备类似Aptana的<a href="http://aptana.com/docs/index.php/Displaying_the_Outline_View" target="_blank">Outline View</a>的功能，还能像JAVA的IDE那样通过类名和方法名直接跳转到相应的源码，它借助了一个叫ctags的工具，可以解析源码生成标签文件（在同一个名录下，叫tags），详细的介绍请参考<a href="http://easwy.com/blog/archives/advanced-vim-skills-use-ctags-tag-file/" target="_blank">Easwy老爷的文章</a>，记得务必安装最新版的Exuberant Ctags……我是用MacPorts装的：sudo port install ctags</p>
<p>Exuberant Ctags号称支持34种语言，包括javascript，但是它对javascript的理解非常OUT……比如现在定义JS方法几乎主要依靠匿名函数了，ctags却无法识别这种形式……</p>
<p>已经<a href="http://weblogs.asp.net/george_v_reilly/archive/2009/03/24/exuberant-ctags-and-javascript.aspx" target="_blank">有人</a>在尝试自己添加匹配规则，我自己也写了一大坨：</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">--langdef=js</li>
<li>--langmap=js:.js</li>
<li>--regex-js=/[ \t.]([A-Z][A-Z0-9._$]+)[ \t]*=[ \t]*[0-9&quot;'\[\{]/\1/n,constant/</li>
<li>--regex-js=/([A-Za-z0-9._$]+)[ \t]*=[ \t]*\{/\1/o,object/</li>
<li>--regex-js=/['&quot;]*([A-Za-z0-9_$]+)['&quot;]*[ \t]*:[ \t]*\{/\1/o,object/</li>
<li>--regex-js=/([A-Za-z0-9._$]+)\[[&quot;']([A-Za-z0-9_$]+)[&quot;']\][ \t]*=[ \t]*\{/\1\.\2/o,object/</li>
<li>--regex-js=/([A-Za-z0-9._$]+)\.prototype[ \t.=]/\1/c,class/</li>
<li>--regex-js=/([A-Za-z0-9._$]+)[ \t]*=[ \t]*\(function\(\)/\1/c,class/</li>
<li>--regex-js=/['&quot;]*([A-Za-z0-9_$]+)['&quot;]*:[ \t]*\(function\(\)/\1/c,class/</li>
<li>--regex-js=/var[ \t]*([A-Za-z$][A-Za-z0-9_$()]+)[ \t]*=[ \t]*function[ \t]*\(/\1/f,function/</li>
<li>--regex-js=/function[ \t]+([A-Za-z$][A-Za-z0-9_$]+)[ \t]*\(([^)])\)/\1/f,function/</li>
<li>--regex-js=/['&quot;]*([A-Za-z$][A-Za-z0-9_$]+)['&quot;]*:[ \t]*function[ \t]*\(/\1/m,method/</li>
<li>--regex-js=/([A-Za-z$][A-Za-z0-9_$]+)[ \t]*=[ \t]*function[ \t]*\(/\1/m,method/</li>
<li>--regex-js=/([A-Za-z0-9_$]+)\[[&quot;']([A-Za-z0-9_$]+)[&quot;']\][ \t]*=[ \t]*function[ \t]*\(/\2/m,method/</li>
<li>--regex-js=/([A-Za-z0-9._$]+)[ \t]*=[ \t]*\[/\1/a,array/</li>
<li>--regex-js=/['&quot;]*([A-Za-z$][A-Za-z0-9_$]+)['&quot;]*:[ \t]*\[/\1/a,array/</li>
<li>--regex-js=/([A-Za-z0-9._$]+)\[[&quot;']([A-Za-z0-9_$]+)[&quot;']\][ \t]*=[ \t]*\[/\1\.\2/a,array/</li></ol></div>
<p>匹配以下语法形式，其中粗体部分是标签名称：</p>
<ol>
<li>var <strong>MY_CONSTANT</strong> = 250; //constant</li>
<li><strong>ns.myobject</strong> = {}; //object</li>
<li><strong>myobject</strong>: {}, //object</li>
<li>ns["myobject"] = {}; //object, 生成的tag是&#8221;<strong>ns.myobject</strong>&#8220;</li>
<li><strong>ns.myclass</strong>.prototype.myfunc = function(){}; //class</li>
<li><strong>ns.myclass </strong>= (function(){return {};}); //class</li>
<li>ns["myclass"] = (function(){return {};}); //class, 生成的tag是&#8221;<strong>ns.myclass</strong>&#8220;</li>
<li>var <strong>myfunc</strong> = function(){}; //function, 必须有var, _开头的忽略</li>
<li>function <strong>myfunc</strong>(){}; //function</li>
<li><strong>myfunc</strong>: function(){} //method</li>
<li>ns.<strong>myfunc</strong> = function(){}; //method</li>
<li>ns["myfunc"] = function(){}; //method, 生成的tag是&#8221;ns.<strong>myfunc</strong>&#8220;</li>
<li><strong>ns.myarray</strong> = []; //array</li>
<li><strong>myarray</strong>: [], //array</li>
<li>ns["myarray"] = []; //array, 生成的tag是&#8221;<strong>ns.myarray</strong>&#8220;</li>
</ol>
<p>使用方法是建一个~/.ctags文件，把上面那段代码放进去就行。为了在taglist窗口里显示类别（比如class和method），还需要在.vimrc里设置一个变量：</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">let g:tlist_javascript_settings = 'javascript;f:function;c:class;o:object;m:method;s:string;a:array;n:constant'</li></ol></div>
<p><br/><br />
另一个要强烈推荐的插件是<a href="http://www.vim.org/scripts/script.php?script_id=1218" target="_blank">NERD Commenter</a>，从名字能看出跟上次推荐的NERD Tree是同一个强者写的，功能是针对各种文件类型快速的添加和删除注释，除了单行，多行，还提供“sexily”的注释……比如js里添加文档内容时常用的那种（如果首行写成/**，在aptana里会认作script doc格式）</p>
<p>不过这个插件默认使用了大量,c开头的快捷键……而,在vim里一般都用作自定义的<leader>键（<leader>的默认值是\，很显然小拇指没食指方便……），我没有找到相关的设置选项……所以直接<a href="http://code.google.com/p/yy-vimscript/source/diff?spec=svn7&#038;r=7&#038;format=side&#038;path=/trunk/plugin/NERD_commenter.vim" target="_blank">修改</a>了插件脚本……<br />
<br/><br />
唔唔就先写到这里罢，虽然vim无论日常使用还是hack都很爽，但是写起来还是挺枯燥的，头有点晕555……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2009/06/07/vim-setting-more/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>面向前端开发者和TextMate粉丝的vim配置</title>
		<link>http://www.limboy.com/2009/05/30/vim-setting/</link>
		<comments>http://www.limboy.com/2009/05/30/vim-setting/#comments</comments>
		<pubDate>Sat, 30 May 2009 14:21:23 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[工具]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2009/05/30/vim-setting/</guid>
		<description><![CDATA[vim是编辑器中的神器，但是因为学习曲线比较陡，界面也仿佛从石器时代穿越，广大fashion的前端工作者们难免对其有距离感。其实vim最大的萌点有两个，其一是百科全书般的文本编辑功能，其二是可以随意定制，满足任何与编辑器相关的需求和偏好，比如下面这张便是我在macbook pro上运行vim的截图，不仅语法高亮可以冒充TextMate，功能也几乎一致。

首先是做一个初始化配置脚本，在我的OSX10.5里是是~/.vimrc文件，这里只列出一些需要补充进去的设置：
&#34;设置语法高亮的配色，在GUI界面里使用我自定义的yytextmate.vim
if has(&#34;gui_running&#34;)
	colorscheme yytextmate
else
	colorscheme slate
endif
&#34;查找编码的规则（vim7默认都用utf-8，打开包含gbk字符的文件会出现乱码）
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
&#34;GUI界面里的字体，默认有抗锯齿
set guifont=Monaco:h12:cANSI
&#34;行间距，如果默认值太小，代码会非常纠结
set linespace=4&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;
&#34;用&#60;&#62;调整缩进时的长度
set shiftwidth=4 
&#34;制表符的长度，统一为4个空格的宽度
set tabstop=4
&#34;初始窗口的宽度
set columns=195
&#34;初始窗口的高度
set lines=45
&#34;初始窗口的位置
winpos 52 42
&#160;
&#34;显示行号
set number
&#34;行号栏的宽度
set numberwidth=4
&#160;&#34;禁止自动换行
set nowrap
&#34;在输入命令时列出匹配项目，也就是截图底部的效果
set wildmenu
&#34;显示光标位置
set ruler
&#34;分割窗口时保持相等的宽/高
set [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/2009/05/30/vim-setting/vim-editor-icon1png/' rel='attachment wp-att-235' title='vim-editor-icon1.png'><img src='http://www.limboy.com/wp-content/uploads/2009/05/vim-editor-icon1.png' alt='vim-editor-icon1.png' style="float:left;border:0;margin:0 0 0px 10px;" /></a><a href='http://www.limboy.com/wp-content/uploads/2009/05/textmate.png' title='textmate.png'><img src='http://www.limboy.com/wp-content/uploads/2009/05/textmate.png' alt='textmate.png' style="float:left;border:0;margin:0 10px 0px 0px;" /></a>vim是编辑器中的神器，但是因为学习曲线比较陡，界面也仿佛从石器时代穿越，广大fashion的前端工作者们难免对其有距离感。其实vim最大的萌点有两个，其一是百科全书般的文本编辑功能，其二是可以随意定制，满足任何与编辑器相关的需求和偏好，比如下面这张便是我在macbook pro上运行vim的截图，不仅语法高亮可以冒充<a href="http://macromates.com/" target="_blank">TextMate</a>，功能也几乎一致。<span id="more-230"></span></p>
<p><a href='http://www.limboy.com/wp-content/uploads/2009/05/picture-4.png' title='picture-4.png'><img src='http://www.limboy.com/wp-content/uploads/2009/05/picture-4.png' alt='picture-4.png' style="width:400px;" /></a></p>
<p>首先是做一个初始化配置脚本，在我的OSX10.5里是是~/.vimrc文件，这里只列出一些需要补充进去的设置：</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">&quot;设置语法高亮的配色，在GUI界面里使用我自定义的yytextmate.vim</li>
<li>if has(&quot;gui_running&quot;)</li>
<li>	colorscheme yytextmate</li>
<li>else</li>
<li>	colorscheme slate</li>
<li>endif</li>
<li>&quot;查找编码的规则（vim7默认都用utf-8，打开包含gbk字符的文件会出现乱码）</li>
<li>set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936</li>
<li>&quot;GUI界面里的字体，默认有抗锯齿</li>
<li>set guifont=Monaco:h12:cANSI</li>
<li>&quot;行间距，如果默认值太小，代码会非常纠结</li>
<li>set linespace=4&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</li>
<li>&quot;用&lt;&gt;调整缩进时的长度</li>
<li>set shiftwidth=4 </li>
<li>&quot;制表符的长度，统一为4个空格的宽度</li>
<li>set tabstop=4</li>
<li>&quot;初始窗口的宽度</li>
<li>set columns=195</li>
<li>&quot;初始窗口的高度</li>
<li>set lines=45</li>
<li>&quot;初始窗口的位置</li>
<li>winpos 52 42</li>
<li>&nbsp;</li>
<li>&quot;显示行号</li>
<li>set number</li>
<li>&quot;行号栏的宽度</li>
<li>set numberwidth=4</li>
<li>&nbsp;&quot;禁止自动换行</li>
<li>set nowrap</li>
<li>&quot;在输入命令时列出匹配项目，也就是截图底部的效果</li>
<li>set wildmenu</li>
<li>&quot;显示光标位置</li>
<li>set ruler</li>
<li>&quot;分割窗口时保持相等的宽/高</li>
<li>set equalalways</li>
<li>&nbsp;</li>
<li>&nbsp;&quot;匹配括号的规则，增加针对html的&lt;&gt;</li>
<li>set matchpairs=(:),{:},[:],&lt;:&gt;</li>
<li>&quot;让退格，空格，上下箭头遇到行首行尾时自动移到下一行（包括insert模式）</li>
<li>set whichwrap=b,s,&lt;,&gt;,[,]</li>
<li>&quot;取消自动备份</li>
<li>set nobackup</li>
<li>&quot;保存关闭文件之前保留一个备份</li>
<li>set writebackup</li>
<li>&nbsp;</li>
<li>&quot;js语法高亮脚本的设置</li>
<li>let g:javascript_enable_domhtmlcss=1</li>
<li>&nbsp;</li>
<li>&quot;设置自定义的&lt;leader&gt;快捷键</li>
<li>let mapleader=&quot;,&quot;</li>
<li>let g:mapleader=&quot;,&quot;</li>
<li>&nbsp;</li>
<li>&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</li>
<li>&quot; bufExplorer插件的设置</li>
<li>&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</li>
<li>let g:bufExplorerSortBy='mru'</li>
<li>let g:bufExplorerSplitRight=0&nbsp; &nbsp; &nbsp; </li>
<li>let g:bufExplorerSplitVertical=1&nbsp; &nbsp; .</li>
<li>let g:bufExplorerSplitVertSize = 30&nbsp; </li>
<li>let g:bufExplorerUseCurrentWindow=1&nbsp; </li>
<li>autocmd BufWinEnter \[Buf\ List\] setl nonumber</li>
<li>&nbsp;</li>
<li>&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</li>
<li>&quot; winManager插件的设置</li>
<li>&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</li>
<li>let g:winManagerWindowLayout = &quot;BufExplorer,FileExplorer|TagList&quot;</li>
<li>let g:winManagerWidth = 30</li>
<li>let g:defaultExplorer = 0</li>
<li>nmap &lt;silent&gt; &lt;leader&gt;wm :WMToggle&lt;cr&gt; </li>
<li>&nbsp;</li>
<li>&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</li>
<li>&quot; netrw插件的快捷键</li>
<li>&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</li>
<li>let g:netrw_winsize = 30</li>
<li>nmap &lt;silent&gt; &lt;leader&gt;fe :Sexplore!&lt;cr&gt;</li>
<li>&nbsp;</li>
<li>&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</li>
<li>&quot; NERDTree插件的快捷键</li>
<li>&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;&quot;</li>
<li>nmap &lt;silent&gt; &lt;leader&gt;nt :NERDTree&lt;cr&gt;</li>
<li>&nbsp;</li>
<li>&nbsp;</li>
<li>&quot;把常用的ctrl快捷键映射到苹果键上（只保留cmd+c/cmd+v/cmd+z原有的功能）</li>
<li>map &lt;D-y&gt; &lt;C-y&gt;</li>
<li>map &lt;D-e&gt; &lt;C-e&gt;</li>
<li>map &lt;D-f&gt; &lt;C-f&gt;</li>
<li>map &lt;D-b&gt; &lt;C-b&gt;</li>
<li>map &lt;D-u&gt; &lt;C-u&gt;</li>
<li>map &lt;D-d&gt; &lt;C-d&gt;</li>
<li>map &lt;D-w&gt; &lt;C-w&gt;</li>
<li>map &lt;D-r&gt; &lt;C-r&gt;</li>
<li>map &lt;D-o&gt; &lt;C-o&gt;</li>
<li>map &lt;D-i&gt; &lt;C-i&gt;</li>
<li>map &lt;D-g&gt; &lt;C-g&gt;</li>
<li>map &lt;D-p&gt; &lt;C-p&gt;</li>
<li>map &lt;D-n&gt; &lt;C-n&gt;</li>
<li>map &lt;D-a&gt; &lt;C-a&gt;</li>
<li>cmap &lt;D-d&gt; &lt;C-d&gt;</li></ol></div>
<p>2009.6.7更新：最新的<a href="http://code.google.com/p/yy-vimscript/source/browse/trunk/vimrc" target="_blank">vimrc</a>和其他脚本已经上传到google code的项目仓库里了<br />
<br/><br />
=================步骤二的分割线===================<br />
<br/><br />
然后在个人配置目录里添加语法高亮脚本（~/.vim/syntax/），其中html和css可以直接把vim7自带的脚本复制出来（$VIMRUNTIME/syntax/），js的脚本则推荐用这个：</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=1491" target="_blank">JavaScript syntax : Better JavaScrirpt syntax support<br />
</a></p>
<p>包含更多的关键字以及自动折叠代码的功能，也能在html文件内支持js语法高亮，需要注意的是如果要支持dom方法的关键字，需要在.vimrc里设置一个全局变量javascript_enable_domhtmlcss</p>
<p>我还用了这里的<a href="htmhttp://www.fleiner.com/vim/download.html" target="_blank">html.vim</a>。<br />
<br/><br />
=================步骤三的分割线===================<br />
<br/><br />
接下来就可以对照着syntax脚本，给每个语法组设置颜色，配色脚本需要放到~/.vim/colors/里，然后在.vimrc里用colorscheme命令选定。colors脚本只需要一个，因为syntax脚本末尾都会把自定义的语法组链接到标准语法组，比如：</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">HiLink javaScriptDocComment&nbsp; Comment</li></ol></div>
<p>所以只需要定义一套针对标准语法组的配色方案，再通过修改syntax脚本里来调整相应语言的配色。我尝试过针对不同文件类型使用不同的配色方案，发现相当麻烦，需要在切换/打开/关闭缓冲区和窗口的时候都用colorscheme重置配色：</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">autocmd BufNewFile,BufRead,BufEnter,WinEnter,FileType *.html,*.htm colorscheme delek</li></ol></div>
<p>而且colorscheme会影响整个窗口（一个vim进程实例），如果在窗口内同时分割显示了几个文件，即使文件类型不同，也会同时改变颜色……</p>
<p>我平时最喜欢TextMate的Blackboard主题（大概是因为里面有橙色罢XD），在Aptana上也仿制过（配置文件：<a href="http://www.limboy.com/conf/eclipse/yytextmate.col" target="_blank">yytextmate.col</a>），这次是直接在vim的slate主题基础上修改出来的，比vim.org上面那个<a href="http://www.vim.org/scripts/script.php?script_id=2280" target="_blank">blackboard.vim</a>要更完善～</p>
<p>我的colors脚本：<a href="http://code.google.com/p/yy-vimscript/source/browse/trunk/colors/yytextmate.vim" target="_blank">yytextmate.vim</a><br />
我调整过的syntax脚本：<a href="http://code.google.com/p/yy-vimscript/source/browse/trunk/syntax/javascript.vim" target="_blank">javascript.vim</a>, <a href="http://code.google.com/p/yy-vimscript/source/browse/trunk/syntax/html.vim" target="_blank">html.vim</a><br />
<br/><br />
=================步骤四的分割线===================<br />
<br/><br />
按照由外向内的顺序，现在该折腾功能了，首先是缩进插件，vim也自带有智能缩进功能，需要开启autoindent和smartindent参数，但是在编辑js代码的时候效果很不好，对于python这种靠缩进活命的语言就更不能忍了，因此至少需要装以下三个插件：</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=1839"  target="_blank">IndentAnything : Write indentations or enhance existing indentations without writing code</a><br />
<a href="http://www.vim.org/scripts/script.php?script_id=1840"  target="_blank">Javascript Indentation : Indentation for Javascript </a><br />
<a href="http://www.vim.org/scripts/script.php?script_id=974"  target="_blank">indent/python.vim : An alternative indentation script for python<br />
</a></p>
<p>第一个放到~/.vim/plugin/里，后两个放在~/.vim/indent/里<br />
<br/><br />
=================步骤五的分割线===================<br />
<br/><br />
<a href='http://www.limboy.com/wp-content/uploads/2009/05/textmate.png' title='textmate.png'><img src='http://www.limboy.com/wp-content/uploads/2009/05/textmate.png' alt='textmate.png' style="float:left;border:0;margin:0 10px 10px 0;" /></a>接下来终于要来实现TextMate最重要的功能了，TextMate之所以被称作地上最贵麦上最强的编辑器，就是因为支持大量可以通过tab或其他快捷键发动的强力Bundles，这些Bundles可以分为两种类型，一种是针对编辑器的内容执行指令（称作command），比如直接执行shell脚本，压缩js代码，对html转义，格式化JSON，编译swf等等，而指令界面是vim的核心，不但可以直接执行shell命令，也可以通过设置键位映射和宏，把复杂的操作绑定成简单的快捷键，因此这类功能原本就是vim的强项。</p>
<p>另一种类型的Bundles主要用来帮助程序员快速开发，通过简短的缩写＋tab键直接生成所需的代码模板（称作snippet），然后依然用tab在模板中需要改动的位置之间跳转，整个过程不需要鼠标定位，非常高效，是一种比大型IDE里常见的&#8221;code hinting&#8221;更实用的智能补全功能。</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=2540"  target="_blank">snipMate : TextMate-style snippets for Vim</a></p>
<p>上面这个非常“新”的插件让vim也具备了同样的功能，而且几乎是跟TextMate完全兼容的移植，比如这是从TextMate里取出的snippet源码：</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: Gray;">$</span><span style="color: Olive;">{</span><span style="color: Maroon;">1</span><span style="color: Gray;">:</span><span style="color: Blue;">class_name</span><span style="color: Olive;">}</span><span style="color: Gray;">.</span><span style="color: Blue;">prototype</span><span style="color: Gray;">.$</span><span style="color: Olive;">{</span><span style="color: Maroon;">2</span><span style="color: Gray;">:</span><span style="color: Blue;">method_name</span><span style="color: Olive;">}</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Gray;">$</span><span style="color: Olive;">{</span><span style="color: Maroon;">3</span><span style="color: Gray;">:</span><span style="color: Blue;">first_argument</span><span style="color: Olive;">})</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; $</span><span style="color: Olive;">{</span><span style="color: Maroon;">0</span><span style="color: Gray;">:</span><span style="color: #ffa500;">// body...}</span></li>
<li><span style="color: Olive;">}</span><span style="color: Gray;">;</span></li></ol></div>
<p>${}标签是代码插入后可以通过tab跳转的“可编辑”位置，其中的序号表示跳转顺序，冒号后的字符是默认内容。这段代码只要在前面加上snippet proto就可以直接放进~/.vim/snippets/javascript.snippets里，通过proto<tab>触发</p>
<p>把常见的程序结构抽象成snippet可以节省很多重复输入，比如这是我定义的一个module模式：</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: Blue;">snippet</span><span style="color: Gray;"> </span><span style="color: Blue;">module</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; * ${5:Describe what this module does}</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; * @param {object} ${6:paramName}</span></li>
<li><span style="color: #ffa500;">&nbsp; &nbsp;&nbsp; */</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;"> $</span><span style="color: Olive;">{</span><span style="color: Maroon;">1</span><span style="color: Gray;">:</span><span style="color: Blue;">classname</span><span style="color: Olive;">}</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;"> $</span><span style="color: Maroon;">1</span><span style="color: Blue;">Object</span><span style="color: Gray;"> = </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">{</span><span style="color: Maroon;">2</span><span style="color: Gray;">:</span><span style="color: Blue;">privateMethod1</span><span style="color: Olive;">}</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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Olive;">{</span><span style="color: Maroon;">3</span><span style="color: Gray;">:</span><span style="color: Blue;">privateMethod2</span><span style="color: Olive;">}</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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </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: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">function</span><span style="color: Olive;">(</span><span style="color: Blue;">opt</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">publicObj</span><span style="color: Gray;"> = </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">options</span><span style="color: Gray;">: </span><span style="color: Olive;">{}</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Maroon;">2</span><span style="color: Gray;">: $</span><span style="color: Maroon;">1</span><span style="color: Blue;">Object</span><span style="color: Gray;">.$</span><span style="color: Maroon;">2</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $</span><span style="color: Maroon;">3</span><span style="color: Gray;">: $</span><span style="color: Maroon;">1</span><span style="color: Blue;">Object</span><span style="color: Gray;">.$</span><span style="color: Maroon;">3</span><span style="color: Gray;">$</span><span style="color: Olive;">{</span><span style="color: Maroon;">4</span><span style="color: Gray;">:,</span><span style="color: Olive;">}</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $.</span><span style="color: Blue;">extend</span><span style="color: Olive;">(</span><span style="color: Blue;">publicObj</span><span style="color: Gray;">.</span><span style="color: Blue;">options</span><span style="color: Gray;">, </span><span style="color: Blue;">opt</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">publicObj</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">})()</span><span style="color: Gray;">;</span></li></ol></div>
<p>修改过程中会看到$1,$2,$3自动更新成你键入的名字。</p>
<p>我修改过的完整javascript.snippets：<a href="http://code.google.com/p/yy-vimscript/source/browse/trunk/snippets/javascript.snippets" target="_blank">http://code.google.com/p/yy-vimscript/source/browse/trunk/snippets/javascript.snippets</a></p>
<p>实际上还有一个比较老牌的插件也致力于实现同样的snippet功能：</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=1318" target="_blank">snippetsEmu : An attempt to emulate TextMate&#8217;s snippet expansion</a></p>
<p>但是它支持的模板语法比TextMate差很多，跟上面相同的prototype模板要通过这种形式定义：</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">let st = g:snip_start_tag</li>
<li>let et = g:snip_end_tag</li>
<li>let cd = g:snip_elem_delim</li>
<li>&nbsp;</li>
<li>exec &quot;Snippet proto &quot;.st.&quot;className&quot;.et.&quot;.prototype.&quot;.st.&quot;methodName&quot;.et.&quot; = function(&quot;.st.et.&quot;)&lt;CR&gt;{&lt;CR&gt;&quot;.st.et.&quot;&lt;CR&gt;};&lt;CR&gt;&quot;.st.et</li></ol></div>
<p>缩进容易出错，不支持用序号设定跳转顺序，安装过程也比snipMate繁复，所以被我毫不留恋的淘汰了……</p>
<p>为了实现更广泛的智能补全，还需要一个必装插件：</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=1643" target="_blank">SuperTab continued. : Do all your insert-mode completion with Tab. </a></p>
<p>SuperTab让任意字符都可以通过tab补全，比较取巧的是，它会在缓冲区的上下文中寻找匹配的词来补全，因此不需要附带很庞大的API数据。<br />
<br/><br />
=================步骤六的分割线===================<br />
<br/><br />
下一步需要增强的是文件/项目管理，vim虽然自带一个FileExplorer（直接编辑一个目录时会调用它，比如:e .），还有上面提到过的wildmenu的强力辅助，但是与常见的GUI编辑器和IDE相比，仍然不太直观，因此以下插件值得一装：</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=1658" target="_blank">The NERD tree : A tree explorer plugin for navigating the filesystem</a><br />
我最喜欢的文件导航工具，设置了快捷键,nt直接在侧面打开</p>
<p><a href="http://vim.sourceforge.net/scripts/script.php?script_id=42" target="_blank">bufexplorer : Buffer Explorer / Browser </a><br />
缓冲区导航</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=95" target="_blank">winmanager : A windows style IDE for Vim 6.0</a><br />
把bufexploer和FileExplorer集成在左侧，类似IDE的效果，这个功能不足以让我放弃NERDTree……而且这个插件似乎很久没更新了，连支持Vim7的版本都没有，但是很多人喜欢，所以也推荐一下…… </p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=2607" target="_blank">TaskList.vim : Eclipse like task list</a><br />
实现Eclipse的任务列表</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=69" target="_blank">project.tar.gz : Organize/Navigate projects of files</a><br />
项目导航工具，不过没有Eclipse好用，需要写配置脚本，跟TextMate那种拖来拖去的drawer就更不能比了……<br />
<br/><br />
=================步骤七的分割线===================<br />
<br/><br />
最后推荐的插件都是开发工具：</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=90" target="_blank">vcscommand.vim : CVS/SVN/SVK/git integration plugin</a><br />
SVN/git管理工具，这个是必备罢。没有GUI菜单，不过快捷键也很方便，而且VimDiff是很棒的比较工具</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=2578" target="_blank">javaScriptLint.vim : Displays JavaScript Lint warnings in the quickfix error window</a><br />
看仔细啦～这个不是道格拉斯老爷子的JSLint，那个东西虽然强大（以前没觉得，最近在《代码之美》里看到道格拉斯老爷子描述了“递归下降分析”＋“运算符优先级技术”的动态语言解释器，才知道原来JSLint和JSON parser只是老爷子晒技术的承载体……），但是由于把规范约束在一个JS的安全子集上，适用面不广，设置起来也麻烦，在实际开发工作中未必实用。而<a href="http://javascriptlint.com/" target="_blank">这个Lint</a>就很中规中矩，当然也没自己折腾解释器啦，直接用了Mozilla的js引擎，安装也很方便，提供一个conf文件可以设置警告条件。这个vim插件装上后，保存js文件时都会自动校验代码并显示一个提示信息窗口。</p>
<p><a href="http://www.vim.org/scripts/script.php?script_id=39" target="_blank">matchit : extended % matching for HTML, LaTeX, and many other languages</a><br />
vim里的%命令可以在嵌套字符之间跳转（比如括号和引号，我在上面的.vimrc文件里增加了html的<>），这个插件将它的功能扩展到嵌套标签和语句</p>
<p>To be <a href="http://www.limboy.com/2009/06/07/vim-setting-more/" target="_blank">continue</a>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2009/05/30/vim-setting/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>twitter like和传统论坛</title>
		<link>http://www.limboy.com/2009/05/16/forum2twitter/</link>
		<comments>http://www.limboy.com/2009/05/16/forum2twitter/#comments</comments>
		<pubDate>Sat, 16 May 2009 07:20:11 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Web2.0]]></category>
		<category><![CDATA[web服务/应用]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[日漫]]></category>
		<category><![CDATA[网络]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2009/05/16/forum2twitter/</guid>
		<description><![CDATA[以前字符姐姐说我和绯雨叔叔都是彼得潘，另外我还以腹黑正太闻名，但是我也不得不承认，时间既是最难战胜的敌人也是最有价值的财富。如今面临的困扰，就是上网习惯变化很大，虽然firefox的书签工具栏上依然保留了很多论坛的链接（不常上的网站我都放到delicious里），但是别说跟人论战，就连踩遍各大论坛的时间也没有叻。我现在更习惯阅读feed（通过google reader和igoogle，后者类似报纸的体验）以及twitter模式的推送信息（通过桌面客户端和像friendfeed那样实时更新的网页）。
但是支持这种阅读习惯的环境却不是很理想（对国内而言）——SNS/twitter里的信息价值不高，多数都是缺少上下文的唠叨和零碎的感悟，以及只有熟人会感兴趣的琐事和闲扯；个人博客的内容同质化严重，而且热度早已降温，更新频率普遍下降（我除外喔，我更新一直都这么少XD）。大量有价值的信息仍然深藏在论坛和社区网站（其中我最反感的形式是通过积分或虚拟货币的形式设定阅读权限，人为阻止信息传播和再利用），没有进入社会化网络。其实我大学时做的最深的地下城，也出于类似的考虑：很多有价值的信息隐藏在论坛这种“深层网络”（或者叫黯网络罢~）中，只被社区内部的核心成员所熟悉，虽然这样能把讨论维持在较高的质量，也能保证读者跟作者的直接联系，但是如果能借助更开放更易于接触的平台来传播，原本可以影响到更多人。

插图：这张图是我的书签工具栏，除了这个地方，书签的其他位置不放东西，也就是让真正的常用网站都位于随手可点的位置，不常用的网站扔到另一个管理体系里
不过幸好技术的普及速度永远比用户习惯的迁移要快，现在很多论坛都开始提供feed了（感谢Discuz!），借助friendfeed就可以很好的转换成推送信息。
也就是在friendfeed里建一个group，把feed用custom rss/atom或blog的形式导入进去，并且勾选“Include entry description as a comment”，也就是把rss里的描述节点转换成friendfeed里的评论（毕竟仅凭一个标题链接，很难决定是否深入阅读）。然后设置deliver为IM方式，便可以通过gtalk接收信息了，感觉跟IRC或群差不多~
缺点是导入的评论全都会算到自己头上……
另外由于论坛feed通常只包含新主题，如果是像过去的NT那样，大家都愿意在十几页的回帖里长篇大论的拍砖并且跑题现象严重的论坛，就很难track到有价值的内容，不过对于那样的论坛，直接参与才是更好的阅读方式罢
这个是我刚刚弄的一个聚合，收集web前端技术的资讯和资源：
https://friendfeed.com/frontend-feed-cn
这个效果也很不错，track国内的SF/F社区：
https://friendfeed.com/fantasycn
但是接下来的计划就麻烦了…动漫方面，破狗，云中之类的论坛都没feed（用VBB不是错，但是要升级到新版哑！）
还想搞一个pc game的，但是TLF，NGA之类的站帖子太多……指挥官，铁资网之类的论坛也是没feed……让我感觉有折腾这个的工夫，还不如去打demigod……
柠檬基拉老爷提醒说有很多网页转rss的工具，这个我以前确实见过很多但都没怎么体验过，想来也不太靠谱………其实我觉得，一个真正的强者，在这种情况下就应该挺身而出，开发出一个兼具抓取，聚合，呈现，通知等功能的web应用，来满足自己的需求……当然由于我最近很懒，这个idea由我来实现的可能性小于10%罢……
我还是希望有更多社区网站都能以开放的心态，把自己的内容用更友善更易于传播的形式输出，开放永远是互联网的根基，而后web2.0时代的互联网应该是有机的整体，内容在一个站点产出后，可以通过“云”的加工变得更易于查找，更易于阅读，更易于传播，而互联网用户则能接触到更广阔更个性化的信息。
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;肆无忌惮跑题的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;
PS：题图是我最近在追的新番《东之伊甸》，要素是：近未来，游戏规则，社会弊端，写实的科技应用（围绕手机），对西方电影的引用，整体风格非常像攻壳SAC，可惜……好像只会有11话，单季都不够哑！神山健治老师请多做一些类攻壳的作品罢！
另外最近还在追《苍天航路》，要素是气势！无论人物，动作，姿态，对话，打斗场面，都燃的像港漫，我觉得多看这个一定能改善我最近多愁善感的非主流形象，成为无所畏惧的强者挖哈哈哈哈哈哈～

]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/wp-content/uploads/2009/05/picture-5.png' title='picture-5.png' ><img src='http://www.limboy.com/wp-content/uploads/2009/05/picture-5.png' alt='picture-5.png' style="width:250px;float:left;margin:0 10px 10px 0"  /></a>以前字符姐姐说我和<a target="_blank"  href="http://blog.sina.com.cn/five_fire">绯雨叔叔</a>都是彼得潘，另外我还以腹黑正太闻名，但是我也不得不承认，时间既是最难战胜的敌人也是最有价值的财富。如今面临的困扰，就是上网习惯变化很大，虽然firefox的书签工具栏上依然保留了很多论坛的链接（不常上的网站我都放到delicious里），但是别说跟人论战，就连踩遍各大论坛的时间也没有叻。我现在更习惯阅读feed（通过google reader和igoogle，后者类似报纸的体验）以及twitter模式的推送信息（通过桌面客户端和像friendfeed那样实时更新的网页）。</p>
<p>但是支持这种阅读习惯的环境却不是很理想（对国内而言）——SNS/twitter里的信息价值不高，多数都是缺少上下文的唠叨和零碎的感悟，以及只有熟人会感兴趣的琐事和闲扯；个人博客的内容同质化严重，而且热度早已降温，更新频率普遍下降（我除外喔，我更新一直都这么少XD）。大量有价值的信息仍然深藏在论坛和社区网站（其中我最反感的形式是通过积分或虚拟货币的形式设定阅读权限，人为阻止信息传播和再利用），没有进入社会化网络。<span id="more-224"></span>其实我大学时做的最深的地下城，也出于类似的考虑：很多有价值的信息隐藏在论坛这种“深层网络”（或者叫黯网络罢~）中，只被社区内部的核心成员所熟悉，虽然这样能把讨论维持在较高的质量，也能保证读者跟作者的直接联系，但是如果能借助更开放更易于接触的平台来传播，原本可以影响到更多人。</p>
<p><a href='http://www.limboy.com/wp-content/uploads/2009/05/picture-3.png' title='picture-3.png'><img src='http://www.limboy.com/wp-content/uploads/2009/05/picture-3.png' alt='picture-3.png' style="width:400px;" /></a><br />
<strong>插图：</strong><em>这张图是我的书签工具栏，除了这个地方，书签的其他位置不放东西，也就是让真正的常用网站都位于随手可点的位置，不常用的网站扔到另一个管理体系里</em></p>
<p>不过幸好技术的普及速度永远比用户习惯的迁移要快，现在很多论坛都开始提供feed了（感谢Discuz!），借助<a target="_blank" href="https://friendfeed.com/dexteryy">friendfeed</a>就可以很好的转换成推送信息。</p>
<p>也就是在friendfeed里建一个group，把feed用custom rss/atom或blog的形式导入进去，并且勾选“Include entry description as a comment”，也就是把rss里的描述节点转换成friendfeed里的评论（毕竟仅凭一个标题链接，很难决定是否深入阅读）。然后设置deliver为IM方式，便可以通过gtalk接收信息了，感觉跟IRC或群差不多~</p>
<p>缺点是导入的评论全都会算到自己头上……</p>
<p>另外由于论坛feed通常只包含新主题，如果是像过去的NT那样，大家都愿意在十几页的回帖里长篇大论的拍砖并且跑题现象严重的论坛，就很难track到有价值的内容，不过对于那样的论坛，直接参与才是更好的阅读方式罢</p>
<p>这个是我刚刚弄的一个聚合，收集web前端技术的资讯和资源：</p>
<p><a target="_blank" href="https://friendfeed.com/frontend-feed-cn"><img src="http://i.friendfeed.com/p-8575630059de44aeb0762dfce50426e7-large-1" style="margin:0 10px 0 0;border:0;" /></a><a target="_blank" href="https://friendfeed.com/frontend-feed-cn">https://friendfeed.com/frontend-feed-cn</a></p>
<p>这个效果也很不错，track国内的SF/F社区：</p>
<p><a target="_blank" href="https://friendfeed.com/fantasycn"><img src="http://i.friendfeed.com/p-8dacd5026ef848338eefe0abaf892cb5-large-1" style="margin:0 10px 0 0;border:0;" /></a><a target="_blank" href="https://friendfeed.com/fantasycn">https://friendfeed.com/fantasycn</a></p>
<p>但是接下来的计划就麻烦了…动漫方面，<a target="_blank" href="http://bbs.popgo.net/bbs/">破狗</a>，<a target="_blank" href="http://www.cloudc.net/cgi-bin/bbs/index.cgi">云中</a>之类的论坛都没feed（用VBB不是错，但是要升级到新版哑！）</p>
<p>还想搞一个pc game的，但是<a target="_blank"  href="http://www.eastgame.net/">TLF</a>，<a target="_blank"  href="http://bbs.ngacn.cc/">NGA</a>之类的站帖子太多……<a  target="_blank" href="http://zhihuiguan.com/bbs/">指挥官</a>，<a  target="_blank" href="http://tbsgame.net/bbs/">铁资网</a>之类的论坛也是没feed……让我感觉有折腾这个的工夫，还不如去打demigod……</p>
<p><a target="_blank" href="http://twitter.com/lemonkiller/status/1808532539">柠檬基拉</a>老爷提醒说有很多网页转rss的工具，这个我以前确实见过很多但都没怎么体验过，想来也不太靠谱………其实我觉得，一个真正的强者，在这种情况下就应该挺身而出，开发出一个兼具抓取，聚合，呈现，通知等功能的web应用，来满足自己的需求……当然由于我最近很懒，这个idea由我来实现的可能性小于10%罢……</p>
<p>我还是希望有更多社区网站都能以开放的心态，把自己的内容用更友善更易于传播的形式输出，开放永远是互联网的根基，而后web2.0时代的互联网应该是有机的整体，内容在一个站点产出后，可以通过“云”的加工变得更易于查找，更易于阅读，更易于传播，而互联网用户则能接触到更广阔更个性化的信息。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;肆无忌惮跑题的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>PS：题图是我最近在追的新番《东之伊甸》，要素是：近未来，游戏规则，社会弊端，写实的科技应用（围绕手机），对西方电影的引用，整体风格非常像攻壳SAC，可惜……好像只会有11话，单季都不够哑！神山健治老师请多做一些类攻壳的作品罢！</p>
<p>另外最近还在追《苍天航路》，要素是气势！无论人物，动作，姿态，对话，打斗场面，都燃的像港漫，我觉得多看这个一定能改善我最近多愁善感的非主流形象，成为无所畏惧的强者挖哈哈哈哈哈哈～</p>
<p><a href='http://www.limboy.com/wp-content/uploads/2009/05/picture-7.png' title='picture-7.png'><img src='http://www.limboy.com/wp-content/uploads/2009/05/picture-7.png' alt='picture-7.png' style="width:400px;" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2009/05/16/forum2twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>每个成功的社区背后都有一个教主——评solidot的浏览器连接数事件</title>
		<link>http://www.limboy.com/2009/02/08/troll_in_solidot/</link>
		<comments>http://www.limboy.com/2009/02/08/troll_in_solidot/#comments</comments>
		<pubDate>Sun, 08 Feb 2009 09:05:00 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[kuso]]></category>
		<category><![CDATA[科技]]></category>
		<category><![CDATA[纯水]]></category>
		<category><![CDATA[网络]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2009/02/08/troll_in_solidot/</guid>
		<description><![CDATA[我就一直很羡慕国外技术社区reddit和slashdot的评论，无论数量还是质量，无论趣味性还是信息含量，都让国内的网站相形见绌——先声明一下我绝对没有拿国内评论方面最火的cnbeta来比较喔，它们看上去根本不属于同一个位面……
我也经常看国内的solidot，时间长了都能猜出某篇文章会不会有评论，从google reader里点过去看，命中率相当高，这些文章通常就涉及那么几个话题，比如操作系统，比如国内it企业的丑闻，比如抨击zf针砭时弊，这种现象很好理解喔，毕竟年纪大点的人都更关心跟自己生活关系紧密的东西，而且这些话题的门槛也比较低，对国内网民来说，太geek的东西相当于太阳春白雪，应者寥寥，那是宿命～
但是今天我对solidot的印象大为改观！就在我下午昏昏欲睡不抱期望的点开一个帖子之后，意外的发现了非常娱乐非常有信息量的评论——说的更直接点，是发现了一个有教主潜质的用户：cuthead。这位老爷必将拯救solidot！实际上他如果不在技术圈混，转战天涯S1之类的地方，定能跻身年度强者哑！
你可以按照我的阅读顺序来观摩这个从1月16日发展到前天的，非常戏剧性的事件：
1，solidot《BT大站海盗湾提供下载者地理分布图》, 从lark的评论#32105和cuthead的回复#32111开始
2，moztw论坛《Firefox并发连接数限制是针对网址还是针对服务器IP？》，看到台湾的Dark Shenada的第一个回复和cuthead的反应为止
3，solidot 《Ubuntu下的网速快过XP》，从#31504开始～
4，贴吧《firefox 连接数限制分析》，看完这个再回头来继续看moztw论坛《Firefox并发连接数限制是针对网址还是针对服务器IP？》
好罢其实真正的时间顺序是3,2,1,4……
下面按照时间顺序收集cuthead老爷的语录——不好意思这是教主的传统待遇了，旧习惯改不了……
教主找茬：
我以前的评论有没有犯过这么明显的错误？
教主既淡定又超然：

没意思，我不是给你出脑筋急转弯那个初级阶段了，我是向你赔礼道歉来了！三年了，在这个世界上最对不起的人就是范厨师，多么好的人，我常跟你们说，你说我忽悠他干啥？多么忠厚老实！你打我两下，你下不去手，你骂我两句，你张不开嘴，这样，反正你原谅我也来了，不原谅我也来了，原谅不原谅我都带着诚意铺面而来地！
教主讲解技术：
浏览器连接同一个服务器默认最大连接数不超过10，所以这个限制对网页浏览的影响是0。这也是为什么微软要把TCP并发连接设为10的原因。
教主又超然了：
哈哈，当某些人不喜欢夹着尾巴做人的时候，我也要把尾巴露出来，这是人类的一项本能。
教主愤青了：
你的最后一句话恰恰阐明了我为什么喜欢攻击你们这些语文爱好者。每一个玩文字游戏的人遇到我都应该学会哭泣，我恨所有的现代文学。就像你和那个normalsb,一个喜欢扩写，一个喜欢鸡蛋挑骨头。扩写也就扩写好了，一点新意和技术含量也没有。另一个normalsb更是搞笑，我说浏览器连接同一个服务器默认最大连接数不超过10，他跟我扯子域名和主域名绑定IP可以不同。你们这些牵强的说一些驴唇不对马嘴的废话的scum的存在只能证明一件事情，我的逻辑天衣无缝。另外奉劝你们，这里是solidot，不是电脑城，不要把扯淡的一套拿到这里来和我讨论那些毫无用处的过家家，如果你们真的喜欢废话，这些就是我送你们的压岁钱。
教主急了：
你觉得你水平能赶上我吗？
如果我没错你诬蔑我错的话，我要你的人头落地，你敢跟我打这个赌吗？你还有脸说废话，normalsb也犯了一个明显的错误却不自知。我不知道你们这些扯淡流的话是自己胡编出来还是跟哪个更扯淡的大虾鹦鹉学舌而来，但我的话在网上都可以找到根据。我说浏览器连接同一个服务器默认最大连接数不超过10，我这句话就撂这里了，谁敢用论据反驳？
教主寻求支援：
我多年一直有一個疑問，Firefox並發連接數限制是針對網址還是針對服務器IP？官方網站說的也不清不楚。 
教主觉得mozilla忒傻X怎么搞出这样的命名：
並發連接數是否會超過此参数的限制？ 如果是的話，證明此此参数是用來限制域名的。 但這個參數後面跟的是server而不是site
教主急着等米下锅：
这咋还没人回复呢，是不是大家认为我比较菜所以不屑于回答？其实我也是一个Linux资深用户，刚刚用Windows只是临时的。大家看我帖子底下就全明白了
教主看到想象中的大牛赶紧拍马：
高手，感謝Dark Shenada。看您頭像就知道您不簡單，您的大作我一定會仔細閱讀的。我閱讀英語有輕微障礙，經常需要使用翻譯單詞的bookmarklet，所以 lwn.net這個網站我貌似Delicious過，不過確實沒仔細看。其實我是一個Linux菜鳥，經常被Linux某些難題難住。你也知道在大陸人人都很喜歡裝，我把這壞毛病帶到這裡了。 (也有開玩笑的意思)。當時發帖比較著急所以沒注意字裡行間的問題。 大陸一個人發帖說Firefox是根據網址來限制連接數。我當時很氣憤這人睜眼說瞎話。
拿到“台湾人”的令牌后，教主回来了：
举不出实例就是举不出实例，我特意发到台湾论坛上去了，台湾人说了我是正确的 [moztw.org]。建议你以后说话最好带上良心。哥们我这次放过你，但不代表我认可你令人恶心的行为。你只是在说一些你自己编造的谎言罢了。
教主要求检方举证：
你如果能提供Firefox是根据域名限制并发连接数的英文参考文章链接我就真服了你
教主突然变成“语文爱好者”：
这不是一个链接吧？
教主欣欣然的在其他地方继续找茬：
摆脱你怎么又写出这么多垃圾信息啊？谁问你了？以后你想写垃圾信息麻烦请在地址栏输入 http://tieba.baidu.com/ [baidu.com]
教主得理不饶人：
另外你那个连接数问题，我特意发到台湾论坛上去了，台湾人说了我是正确的 [moztw.org]。建议你以后说话最好带上良心。哥们我这次放过你，但不代表我认可你令人恶心的行为。你如果不是一个程序员就不要指望我以程序员态度对你。
对于之后moztw论坛上的戏剧性发展，教主暂时还没有表示影响不大……
必须承认我实在是太喜欢教主这种时而超然时而愤世嫉俗从不透露真才实学却又不容质疑非常理直气壮非常troll的语气了！

====================论事不论人的分割线======================

另外从这个话题本身来说，我还发现了一个很有趣的差异性：浏览器的连接数限制这个东西是web前端优化里最重要的知识，但是跟这些C/C++程序员不同，多数“前端工程师”都不会对“浏览器根据域名来限制连接数”有任何疑问，更不会像lark这样去看firefox源码来验证，因为……这，这可是“标准”耶！我们只认W3C和IETF的唷！-___-b 
……不过，RFC2612上对“server”的解释，教主老爷真的需要看一下，server并非实体的服务器也并非具体的website，抽象层面没有那么低，其实只是代指一种接受http request返回http response的应用程序而已：
server
An application program that accepts connections in order to service requests by sending back responses. Any given program may be capable of being both a client and a server; our use of these terms refers only [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.limboy.com/2009/02/08/troll_in_solidot/mountaintroll1jpg/" rel="attachment wp-att-220" title="mountaintroll1.jpg"><img src="http://www.limboy.com/wp-content/uploads/2009/02/mountaintroll1.jpg" style="border:0;margin: 0pt 6px 0pt 0pt; width: 210px; float: left;" /></a>我就一直很羡慕国外技术社区<a href="http://www.reddit.com/r/programming/" target="_blank">reddit</a>和<a href="http://slashdot.org/" target="_blank">slashdot</a>的评论，无论数量还是质量，无论趣味性还是信息含量，都让国内的网站相形见绌——先声明一下我绝对没有拿国内评论方面最火的<a href="http://www.cnbeta.com/" target="_blank">cnbeta</a>来比较喔，它们看上去根本不属于同一个位面……</p>
<p>我也经常看国内的<a href="http://www.solidot.org" target="_blank">solidot</a>，时间长了都能猜出某篇文章会不会有评论，从google reader里点过去看，命中率相当高，这些文章通常就涉及那么几个话题，比如操作系统，比如国内it企业的丑闻，比如抨击zf针砭时弊，这种现象很好理解喔，毕竟年纪大点的人都更关心跟自己生活关系紧密的东西，而且这些话题的门槛也比较低，对国内网民来说，太geek的东西相当于太阳春白雪，应者寥寥，那是宿命～</p>
<p>但是今天我对solidot的印象大为改观！就在我下午昏昏欲睡不抱期望的点开一个帖子之后，意外的发现了非常娱乐非常有信息量的评论——说的更直接点，是发现了一个有<a href="http://baike.baidu.com/view/302987.htm" target="_blank">教主潜质</a>的用户<span id="more-221"></span>：cuthead。这位老爷必将拯救solidot！实际上他如果不在技术圈混，转战天涯S1之类的地方，定能跻身年度强者哑！</p>
<p>你可以按照我的阅读顺序来观摩这个从1月16日发展到前天的，非常戏剧性的事件：</p>
<p>1，<a target="_blank" href="http://internet.solidot.org/article.pl?sid=09/02/05/0435224">solidot《BT大站海盗湾提供下载者地理分布图》</a>, 从lark的评论<a target="_blank" href="http://internet.solidot.org/comments.pl?sid=10577&amp;cid=32105">#32105</a>和cuthead的回复<a target="_blank" href="http://internet.solidot.org/comments.pl?sid=10577&amp;cid=32111">#32111</a>开始<br />
2，<a target="_blank" href="http://forum.moztw.org/viewtopic.php?p=142208">moztw论坛《Firefox并发连接数限制是针对网址还是针对服务器IP？》</a>，看到台湾的Dark Shenada的第一个回复和cuthead的反应为止<br />
3，<a target="_blank" href="http://linux.solidot.org/article.pl?sid=09/01/16/066258">solidot 《Ubuntu下的网速快过XP》</a>，从<a target="_blank" href="http://linux.solidot.org/comments.pl?sid=10338&amp;cid=31504">#31504</a>开始～<br />
4，<a href="http://tieba.baidu.com/f?kz=535393925" target="_blank">贴吧《firefox 连接数限制分析》</a>，看完这个再回头来继续看<a target="_blank" href="http://forum.moztw.org/viewtopic.php?p=142208">moztw论坛《Firefox并发连接数限制是针对网址还是针对服务器IP？》</a></p>
<p>好罢其实真正的时间顺序是3,2,1,4……</p>
<p>下面按照时间顺序收集cuthead老爷的语录——不好意思这是教主的传统待遇了，旧习惯改不了……</p>
<p>教主找茬：</p>
<blockquote><p>我以前的评论有没有犯过这么明显的错误？</p></blockquote>
<p>教主既淡定又超然：</p>
<blockquote><p>
没意思，我不是给你出脑筋急转弯那个初级阶段了，我是向你赔礼道歉来了！三年了，在这个世界上最对不起的人就是范厨师，多么好的人，我常跟你们说，你说我忽悠他干啥？多么忠厚老实！你打我两下，你下不去手，你骂我两句，你张不开嘴，这样，反正你原谅我也来了，不原谅我也来了，原谅不原谅我都带着诚意铺面而来地！</p></blockquote>
<p>教主讲解技术：</p>
<blockquote><p>浏览器连接同一个服务器默认最大连接数不超过10，所以这个限制对网页浏览的影响是0。这也是为什么微软要把TCP并发连接设为10的原因。</p></blockquote>
<p>教主又超然了：</p>
<blockquote><p>哈哈，当某些人不喜欢夹着尾巴做人的时候，我也要把尾巴露出来，这是人类的一项本能。</p></blockquote>
<p>教主愤青了：</p>
<blockquote><p>你的最后一句话恰恰阐明了我为什么喜欢攻击你们这些语文爱好者。每一个玩文字游戏的人遇到我都应该学会哭泣，我恨所有的现代文学。就像你和那个normalsb,一个喜欢扩写，一个喜欢鸡蛋挑骨头。扩写也就扩写好了，一点新意和技术含量也没有。另一个normalsb更是搞笑，我说浏览器连接同一个服务器默认最大连接数不超过10，他跟我扯子域名和主域名绑定IP可以不同。你们这些牵强的说一些驴唇不对马嘴的废话的scum的存在只能证明一件事情，我的逻辑天衣无缝。另外奉劝你们，这里是solidot，不是电脑城，不要把扯淡的一套拿到这里来和我讨论那些毫无用处的过家家，如果你们真的喜欢废话，这些就是我送你们的压岁钱。</p></blockquote>
<p>教主急了：</p>
<blockquote><p>你觉得你水平能赶上我吗？</p>
<p>如果我没错你诬蔑我错的话，我要你的人头落地，你敢跟我打这个赌吗？你还有脸说废话，normalsb也犯了一个明显的错误却不自知。我不知道你们这些扯淡流的话是自己胡编出来还是跟哪个更扯淡的大虾鹦鹉学舌而来，但我的话在网上都可以找到根据。我说浏览器连接同一个服务器默认最大连接数不超过10，我这句话就撂这里了，谁敢用论据反驳？</p></blockquote>
<p>教主寻求支援：</p>
<blockquote><p>我多年一直有一個疑問，Firefox並發連接數限制是針對網址還是針對服務器IP？官方網站說的也不清不楚。 </p></blockquote>
<p>教主觉得mozilla忒傻X怎么搞出这样的命名：</p>
<blockquote><p>並發連接數是否會超過此参数的限制？ 如果是的話，證明此此参数是用來限制域名的。 但這個參數後面跟的是server而不是site</p></blockquote>
<p>教主急着等米下锅：</p>
<blockquote><p>这咋还没人回复呢，是不是大家认为我比较菜所以不屑于回答？其实我也是一个Linux资深用户，刚刚用Windows只是临时的。大家看我帖子底下就全明白了</p></blockquote>
<p>教主看到想象中的大牛赶紧拍马：</p>
<blockquote><p>高手，感謝Dark Shenada。看您頭像就知道您不簡單，您的大作我一定會仔細閱讀的。我閱讀英語有輕微障礙，經常需要使用翻譯單詞的bookmarklet，所以 lwn.net這個網站我貌似Delicious過，不過確實沒仔細看。其實我是一個Linux菜鳥，經常被Linux某些難題難住。你也知道在大陸人人都很喜歡裝，我把這壞毛病帶到這裡了。 (也有開玩笑的意思)。當時發帖比較著急所以沒注意字裡行間的問題。 大陸一個人發帖說Firefox是根據網址來限制連接數。我當時很氣憤這人睜眼說瞎話。</p></blockquote>
<p>拿到“台湾人”的令牌后，教主回来了：</p>
<blockquote><p>举不出实例就是举不出实例，我特意发到台湾论坛上去了，台湾人说了我是正确的 [moztw.org]。建议你以后说话最好带上良心。哥们我这次放过你，但不代表我认可你令人恶心的行为。你只是在说一些你自己编造的谎言罢了。</p></blockquote>
<p>教主要求检方举证：</p>
<blockquote><p>你如果能提供Firefox是根据域名限制并发连接数的英文参考文章链接我就真服了你</p></blockquote>
<p>教主突然变成“语文爱好者”：</p>
<blockquote><p>这不是一个链接吧？</p></blockquote>
<p>教主欣欣然的在其他地方继续找茬：</p>
<blockquote><p>摆脱你怎么又写出这么多垃圾信息啊？谁问你了？以后你想写垃圾信息麻烦请在地址栏输入 http://tieba.baidu.com/ [baidu.com]</p></blockquote>
<p>教主得理不饶人：</p>
<blockquote><p>另外你那个连接数问题，我特意发到台湾论坛上去了，台湾人说了我是正确的 [moztw.org]。建议你以后说话最好带上良心。哥们我这次放过你，但不代表我认可你令人恶心的行为。你如果不是一个程序员就不要指望我以程序员态度对你。</p></blockquote>
<p>对于之后moztw论坛上的戏剧性发展，教主暂时还没有表示影响不大……</p>
<p>必须承认我实在是太喜欢教主这种时而超然时而愤世嫉俗从不透露真才实学却又不容质疑非常理直气壮非常<a href="http://en.wikipedia.org/wiki/Internet_troll" target="_blank">troll</a>的语气了！<br />
<br/><br/><br />
====================论事不论人的分割线======================<br />
<br/><br />
另外从这个话题本身来说，我还发现了一个很有趣的差异性：浏览器的连接数限制这个东西是<a target="_blank" href="http://developer.yahoo.com/performance/rules.html#num_http">web前端优化</a>里最重要的知识，但是跟这些C/C++程序员不同，多数“前端工程师”都不会对“浏览器根据域名来限制连接数”有任何疑问，更不会像lark这样去看firefox源码来验证，因为……这，这可是“标准”耶！我们只认W3C和IETF的唷！-___-b </p>
<p>……不过，<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec1.html#sec1.1" target="_blank">RFC2612上对“server”的解释</a>，教主老爷真的需要看一下，server并非实体的服务器也并非具体的website，抽象层面没有那么低，其实只是代指一种接受http request返回http response的应用程序而已：</p>
<blockquote><p>server</p>
<p>An application program that accepts connections in order to service requests by sending back responses. Any given program may be capable of being both a client and a server; our use of these terms refers only to the role being performed by the program for a particular connection, rather than to the program&#8217;s capabilities in general. Likewise, any server may act as an origin server, proxy, gateway, or tunnel, switching behavior based on the nature of each request.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2009/02/08/troll_in_solidot/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>用synergy在Mac和双屏幕PC之间共享鼠标键盘</title>
		<link>http://www.limboy.com/2008/11/25/synergy-on-mac-and-pc/</link>
		<comments>http://www.limboy.com/2008/11/25/synergy-on-mac-and-pc/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 16:13:20 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[工具]]></category>
		<category><![CDATA[纯水]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2008/11/25/synergy-on-mac-and-pc/</guid>
		<description><![CDATA[其实去年5月的时候我就在ibook和公司的PC上装过synergy，后来完全抛弃了windows环境，那台PC长期闲置，有没有键盘鼠标都无所谓，所以就没再装过这个工具。未想到风水轮流转——
先是在封闭开发黑豆的时候，我只把macbook pro和宽屏显示器带进了小黑屋，完全不用PC测试，自以为凭借经验和美学智慧已经足以预判和规避一切浏览器兼容问题……结果测试阶段被ie里relative定位的一系列渲染问题折腾得很囧。
然后是testing team抛弃了Bugzilla，开始“严肃的”使用Mercury QC，虽然它繁复的操作和用activex开发的客户端都让我很不屑，但是这玩意的可怕之处在于严谨的（或者说死板的）权限和缺陷状态管理，没有哪个testing team的姐姐能帮我绕过流程，由于我长期不接受也不关闭任何bug，每周五邮件里的统计结果就很不好看。
再加上最近又开始大萧条，为了遵从开源节流现金为王的教诲，我也只好腆着脸登陆公司里那个界面更烂的OA系统申请报销手机费。
这些事情都让我越来越离不开IE，对了，windows上的软件也越来越有吸引力，比如httpwatch和chrome，相反mac上有吸引力的软件却恰好不能在我的工作环境中使用，比如textmate和coda，eclipse 3.4也经常假死或者弹一些莫名其妙的报错窗口。
还有一个重要的因素是，mac里的flashplayer绝对是资源大户，虽然有flashblock这类插件帮忙，但是由于我经常要反复刷新各种带有flash广告和播放器的页面，cpu还是会被折腾到接近80度，你可能会说这没什么大不了的，但是我坚持认为：windows里的浏览器更适合进行这些测试！公司采购的机器更适合承担这些耗损！
鉴于以上总总，我终于忍无可忍去申请换了配置更高的PC，装上了windows2008，决心给自己的工作环境增加一些效率和新鲜感。
不好意思其实本文只是想简单的分享synergy的设置方法，现在回到正题。
synergy是一个可以让多台机器共用一套鼠标和键盘的工具，除了能在指针跨越屏幕的时候切换操作对象，它还能在多台机器之间共享剪贴板内容，关联键位，总之作为一个软件实现来说是很好很强大的。而且这个软件虽然挂了GPL的牌子，但是好像从06年到现在都没更新过，可见功能很健全，bug很少。
在mac里以前只能用命令行和配置文件来使用synergy，GUI好像也有很多，比如quicksynergy，但是问题很多。感谢Patrick同学在youtube上发布的视频教程，我这次尝试了synergyKM，很轻松的就设置成功了。
下载后直接执行镜像里的SynergyKM.prefpane，会添加到系统设置面板里。跟windows的设置界面类似，如果想使用其他电脑的键盘鼠标，直接设置为client，填入那台电脑的ip地址，然后运行，如果那台机器上已经在运行synergy的server，就会提示connected，一切ok。
如果想把这台机器的鼠标键盘共享给其他机器用，可以设置为server，然后在后续的configuration里添加机器，screen name就是电脑的主机名，在windows的设置界面里直接点左下角的info就可以查到，在mac里可以在这个设置面板的“共享”里查到，比如我的：

注意是“.local”前面那个名字
包括server本身也要添加进去，然后就可以运行起来等待其他客户端来连接了。SynergyKM界面里的图标位置表示鼠标在屏幕之间移动的方式，比如我的台式机（PC）是接双显示器，笔记本放在它们中间：

而鼠标指针只能通过进出一个方向的屏幕边缘在两台机器之间切换，所以我设置的是从笔记本屏幕顶部移出进入台式机的显示器（而且如果从顶部偏左的位置移出，就会进入左边的显示器，很赞）

当然也不能忘了把mac里的command键（苹果键）关联到windows的ctrl键……
windows机器做server的设置：

完整的设置过程可以看Patrick的视频：

]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/2008/11/25/synergy-on-mac-and-pc/picture-3png/' rel='attachment wp-att-205' title='picture-3.png'><img src='http://www.limboy.com/wp-content/uploads/2008/11/picture-3.png' alt='picture-3.png' style="width:200px;float:left;margin:0 5px 5px 0;" /></a>其实去年5月的时候我就在ibook和公司的PC上装过synergy，后来完全抛弃了windows环境，那台PC长期闲置，有没有键盘鼠标都无所谓，所以就没再装过这个工具。未想到风水轮流转——</p>
<p>先是在封闭开发黑豆的时候，我只把macbook pro和宽屏显示器带进了小黑屋，完全不用PC测试，自以为凭借经验和美学智慧已经足以预判和规避一切浏览器兼容问题……结果测试阶段被ie里relative定位的一系列渲染问题折腾得很囧。</p>
<p>然后是testing team抛弃了Bugzilla，开始“严肃的”使用Mercury QC，虽然它繁复的操作和用activex开发的客户端都让我很不屑，但是这玩意的可怕之处在于严谨的（或者说死板的）权限和缺陷状态管理，没有哪个testing team的姐姐能帮我绕过流程，由于我长期不接受也不关闭任何bug，每周五邮件里的统计结果就很不好看。</p>
<p>再加上最近又开始大萧条，为了遵从开源节流现金为王的教诲，我也只好腆着脸登陆公司里那个界面更烂的OA系统申请报销手机费。</p>
<p>这些事情都让我越来越离不开IE，对了，windows上的软件也越来越有吸引力，比如httpwatch和chrome，相反mac上有吸引力的软件却恰好不能在我的工作环境中使用，比如textmate和coda，eclipse 3.4也经常假死或者弹一些莫名其妙的报错窗口。<span id="more-201"></span></p>
<p>还有一个重要的因素是，mac里的flashplayer绝对是资源大户，虽然有flashblock这类插件帮忙，但是由于我经常要反复刷新各种带有flash广告和播放器的页面，cpu还是会被折腾到接近80度，你可能会说这没什么大不了的，但是我坚持认为：windows里的浏览器更适合进行这些测试！公司采购的机器更适合承担这些耗损！</p>
<p>鉴于以上总总，我终于忍无可忍去申请换了配置更高的PC，装上了windows2008，决心给自己的工作环境增加一些效率和新鲜感。</p>
<p>不好意思其实本文只是想简单的分享synergy的设置方法，现在回到正题。</p>
<p><a target="_blank" href="http://synergy2.sourceforge.net/">synergy</a>是一个可以让多台机器共用一套鼠标和键盘的工具，除了能在指针跨越屏幕的时候切换操作对象，它还能在多台机器之间共享剪贴板内容，关联键位，总之作为一个软件实现来说是很好很强大的。而且这个软件虽然挂了GPL的牌子，但是好像从06年到现在都没更新过，可见功能很健全，bug很少。</p>
<p>在mac里以前只能用命令行和<a target="_blank" href="http://synergy2.sourceforge.net/configuration.html">配置文件</a>来使用synergy，GUI好像也有很多，比如<a target="_blank" href="http://quicksynergy.sourceforge.net/">quicksynergy</a>，但是问题很多。感谢Patrick同学在youtube上发布的视频教程，我这次尝试了<a target="_blank" href="http://sourceforge.net/projects/synergykm">synergyKM</a>，很轻松的就设置成功了。</p>
<p>下载后直接执行镜像里的SynergyKM.prefpane，会添加到系统设置面板里。跟windows的设置界面类似，如果想使用其他电脑的键盘鼠标，直接设置为client，填入那台电脑的ip地址，然后运行，如果那台机器上已经在运行synergy的server，就会提示connected，一切ok。</p>
<p>如果想把这台机器的鼠标键盘共享给其他机器用，可以设置为server，然后在后续的configuration里添加机器，screen name就是电脑的主机名，在windows的设置界面里直接点左下角的info就可以查到，在mac里可以在这个设置面板的“共享”里查到，比如我的：</p>
<p><a target="_blank" href='http://www.limboy.com/wp-content/uploads/2008/11/picture-1.png' title='picture-1.png'><img src='http://www.limboy.com/wp-content/uploads/2008/11/picture-1.png' alt='picture-1.png' style="width:400px;" /></a></p>
<p>注意是“.local”前面那个名字</p>
<p>包括server本身也要添加进去，然后就可以运行起来等待其他客户端来连接了。SynergyKM界面里的图标位置表示鼠标在屏幕之间移动的方式，比如我的台式机（PC）是接双显示器，笔记本放在它们中间：</p>
<p><a target="_blank" href="http://www.flickr.com/photos/dexter-yy/3055649385/" title="用synergy在PC的双屏幕和macbook之间共享鼠标键盘 by dexteryy, on Flickr"><img src="http://farm4.static.flickr.com/3208/3055649385_1952b4b8c1_b.jpg" alt="用synergy在PC的双屏幕和macbook之间共享鼠标键盘" style="width:400px;" /></a></p>
<p>而鼠标指针只能通过进出一个方向的屏幕边缘在两台机器之间切换，所以我设置的是从笔记本屏幕顶部移出进入台式机的显示器（而且如果从顶部偏左的位置移出，就会进入左边的显示器，很赞）</p>
<p><a target="_blank" href='http://www.limboy.com/wp-content/uploads/2008/11/picture-2.png' title='picture-2.png'><img src='http://www.limboy.com/wp-content/uploads/2008/11/picture-2.png' alt='picture-2.png' style="width:400px;" /></a></p>
<p>当然也不能忘了把mac里的command键（苹果键）关联到windows的ctrl键……</p>
<p>windows机器做server的设置：</p>
<p><a href='http://www.limboy.com/wp-content/uploads/2008/11/synergy.png' title='synergy.png'><img src='http://www.limboy.com/wp-content/uploads/2008/11/synergy.png' alt='synergy.png' style="width:400px;" /></a></p>
<p>完整的设置过程可以看Patrick的视频：</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/uydwhv20qnI&#038;hl=en&#038;fs=1"></param><param name="wmode" value="opaque"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/uydwhv20qnI&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" wmode="opaque" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2008/11/25/synergy-on-mac-and-pc/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>iPhone App开发笔记</title>
		<link>http://www.limboy.com/2008/03/08/iphone-app-develop/</link>
		<comments>http://www.limboy.com/2008/03/08/iphone-app-develop/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 19:04:13 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[web服务/应用]]></category>
		<category><![CDATA[界面]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2008/03/08/iphone-app-develop/</guid>
		<description><![CDATA[第一，标题里的app指的是根正苗红老实本分的Web App，昨天的这个时候，对是在昨天，iPhone Web App就等同于iPhone App，咳咳，虽然现在不是了，但我这笔记是两个星期前的……
第二，不全，主要是我关心的一些细节，以及我自己理解的一些东西……


&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;

html里可以调用系统接口，比如电话拨号：
&#60;a href=&#34;tel:1-408-555-5555&#34;&#62;1-408-555-5555&#60;/a&#62;
还有mail和google map的接口……

&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;

在js里嗅探iphone的safari环境，要注意agent字符串里有额外两处：
&#8220;Mobile/1A543&#8243;，这个是iphone OS的操作系统版本（注意不是固件版本）
&#8220;iPhone&#8221;，这个是移动平台的类型，如果是ipod touch的话这里会是“ipod”
此外：
&#8220;version/3.0&#8243;，Safari的市场版本号
&#8220;Safari/419.3&#8243;，这个是build版本，虽然iphone跟osx一样都是safari3.0，但build版本号不同
完整的例子：
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like
Gecko) Version/3.0 Mobile/1A543 Safari/419.3

&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;

调用css的时候，media类型支持CSS3，比如可以用“only”来屏蔽旧浏览器，用“(min-device-width: 481px)”屏蔽小屏幕手机。由于iphone里的safari不支持print和handheld的media类型，可以用它们来对iphone屏蔽一些css文件。
示例：
&#60;link media=&#34;only screen and (min-device-width: 481px)&#34; href=&#34;not-small-device.css&#34; type=&#34;text/css&#34; rel=&#34;stylesheet&#34; &#62;
也可以作为css选择器里，比如
@media screen {&#160;
#text&#160;{ color: white; background-color: black; }&#160;
}
由于safari支持css3，你还可以享受到的福利包括在background里放6张图片做圆角，给文本加阴影，使用属性选择器之类……

&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;

iphone的浏览器里有一个很重要的概念是viewport（视区），系统默认的viewport为980像素，可以用meta标签指定，宽度范围从200到10,000，高度范围从223到10,000，还可以使用user-scalable禁止用户缩放页面（常见的iphone web应用，比如facebook,google reader，因为要仿原生界面，都是这样设置的），minimum-scale和maximum-scale可以设置缩放的限制，initial-scale是默认的缩放程度，范围从>0到10
示例：
&#60;meta name=&#34;viewport&#34; content=&#34;width = 320&#34; /&#62;
&#60;meta&#160;name=&#34;viewport&#34; content=&#34;initial-scale=2.3, user-scalable=no&#34; /&#62;
iphone默认的浏览器窗口尺寸是:  竖向（body[orient="profile"]）为宽320px，高356px，横向（body[orient="landscape"]）为宽208px，高480px，但实际上这是显示了浏览器地址栏之后剩余的空间，往下拖动页面时，地址栏会隐藏，所以实际的viewport（竖向）是宽320px，高416px。
页面加载之后可以用 window.scrollTo(0, 1) 隐藏地址栏，自动使用最大化的viewport。
关于viewport，还有一个很重要的概念是：iphone的safari浏览器完全没有滚动条，而且不是简单的“隐藏滚动条”，是根本没有这个功能。所以不但iframe, [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/2008/03/08/iphone-app-develop/index_steps_2jpg/' rel='attachment wp-att-184' title='index_steps_2.jpg'><img src='http://www.limboy.com/wp-content/uploads/2008/03/index_steps_2.jpg' alt='index_steps_2.jpg' style="width:200px;float:left;margin:0 5px 0 0;border:0;" /></a>第一，标题里的app指的是根正苗红老实本分的<a href="http://www.apple.com/webapps/" target="_blank">Web App</a>，昨天的这个时候，对是在昨天，iPhone Web App就等同于iPhone App，咳咳，虽然现在不是了，但我这笔记是两个星期前的……</p>
<p>第二，不全，主要是我关心的一些细节，以及我自己理解的一些东西……<span id="more-182"></span><br />
<br/><br />
<br/><br />
<em style="color:#999;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</em><br />
<br/></p>
<p>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: Olive;">&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;</span><span style="color: Red;">tel:1-408-555-5555</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">1-408-555-5555</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">a</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>还有mail和google map的接口……</p>
<p><br/><br />
<em style="color:#999;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</em><br />
<br/></p>
<p>在js里嗅探iphone的safari环境，要注意agent字符串里有额外两处：</p>
<p>&#8220;Mobile/1A543&#8243;，这个是iphone OS的操作系统版本（注意不是固件版本）<br />
&#8220;iPhone&#8221;，这个是移动平台的类型，如果是ipod touch的话这里会是“ipod”</p>
<p>此外：</p>
<p>&#8220;version/3.0&#8243;，Safari的市场版本号<br />
&#8220;Safari/419.3&#8243;，这个是build版本，虽然iphone跟osx一样都是safari3.0，但build版本号不同</p>
<p>完整的例子：</p>
<blockquote><p>Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like<br />
Gecko) Version/3.0 Mobile/1A543 Safari/419.3</p></blockquote>
<p><br/><br />
<em style="color:#999;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</em><br />
<br/></p>
<p>调用css的时候，media类型支持CSS3，比如可以用“only”来屏蔽旧浏览器，用“(min-device-width: 481px)”屏蔽小屏幕手机。由于iphone里的safari不支持print和handheld的media类型，可以用它们来对iphone屏蔽一些css文件。<br />
示例：</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;">link</span><span style="color: Gray;"> </span><span style="color: #00008b;">media</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">only screen and (min-device-width: 481px)</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">not-small-device.css</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/css</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">rel</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">stylesheet</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>也可以作为css选择器里，比如</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: #00008b;">@media</span><span style="color: Gray;"> </span><span style="color: Blue;">screen</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">#text</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span><span style="color: Gray;"> </span><span style="color: Green;">color:</span><span style="color: Gray;"> </span><span style="color: #00008b;">white</span><span style="color: Gray;">; </span><span style="color: Green;">background-color:</span><span style="color: Gray;"> </span><span style="color: #00008b;">black</span><span style="color: Gray;">; </span><span style="color: Olive;">}</span><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>由于safari支持css3，你还可以享受到的福利包括在background里放6张图片做圆角，给文本加阴影，使用属性选择器之类……</p>
<p><br/><br />
<em style="color:#999;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</em><br />
<br/></p>
<p>iphone的浏览器里有一个很重要的概念是viewport（视区），系统默认的viewport为980像素，可以用meta标签指定，宽度范围从200到10,000，高度范围从223到10,000，还可以使用user-scalable禁止用户缩放页面（常见的iphone web应用，比如facebook,google reader，因为要仿原生界面，都是这样设置的），minimum-scale和maximum-scale可以设置缩放的限制，initial-scale是默认的缩放程度，范围从>0到10<br />
示例：</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;">meta</span><span style="color: Gray;"> </span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">viewport</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">content</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">width = 320</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">meta</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">name</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">viewport</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">content</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">initial-scale=2.3, user-scalable=no</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li></ol></div>
<p>iphone默认的浏览器窗口尺寸是:  竖向（body[orient="profile"]）为宽320px，高356px，横向（body[orient="landscape"]）为宽208px，高480px，但实际上这是显示了浏览器地址栏之后剩余的空间，往下拖动页面时，地址栏会隐藏，所以实际的viewport（竖向）是宽320px，高416px。<br />
页面加载之后可以用 window.scrollTo(0, 1) 隐藏地址栏，自动使用最大化的viewport。</p>
<p>关于viewport，还有一个很重要的概念是：iphone的safari浏览器完全没有滚动条，而且不是简单的“隐藏滚动条”，是根本没有这个功能。所以不但iframe, overflow:scroll的元素没有滚动条，整个窗口也没有的，iphone的safari浏览器实际上从一开始就完整显示了这个网页，然后用viewport查看其中的一部分。当你用手指拖动时，其实拖的不是页面，而是viewport…………由此引申出的结果很多，比如CSS里的 position:fixed 无效……</p>
<p><br/><br />
<em style="color:#999;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</em><br />
<br/></p>
<p>浏览器行为的改变不止是滚动条，交互事件也跟普通桌面不一样：</p>
<p>所有hover动作，还有mouseover，都不存在，链接上的title内容，会在你点击链接并按住不动时弹跳出来（如果你不放开手指，继续移动的话，点击事件不会发生，具体原因下面解释）…………而mouseover，直接转换成了mousedown……</p>
<p>点击页面元素之后发生的事情很复杂…………比如当你用单指按住可点击元素（大约就是默认为block的元素），然后放开，首先触发的event居然是mousemove！ 接下来如果元素内容不变（这个条件比较难理解，我知道），会陆续触发mousedown，mouseup，click，如果内容改变，就不会再触发任何事件……</p>
<p>如果你恰好不太走运的给网页上一些inline元素绑过js事件（这比较常见，我也知道），比如span，有一个不用修改标签的方法是给它们都加上onclick=&#8221;void(0)&#8221;，这样iphone就会认为它们是可点击的元素-_____-b</p>
<p>如果按住元素之后移动手指，当然就不要指望会触发mousemove了，啥事情都没有，不过停下的时候，会触发onscroll （因为你刚才移动了viewport嘛……）</p>
<p>如果你用两个手指做缩放的动作，啥事件都不会有啦，但是如果你用两个手指在屏幕上一起移动，而且所在的位置是一个本来有滚动条的页面元素(比如iframe罢)，会触发一个叫mousewheel的事件（但是别指望iframe本身的内容会滚动-___-b）, 停止移动时同样触发onscroll。</p>
<p>OK，你希望像平时那样用onmousedown,onmouseup,onmousemove来做页面元素的拖拽交互把iphone web app的界面做的像原生界面一样活蹦乱跳的梦想已经破灭了，请努力克制骂乔布斯的欲望。</p>
<p>对了，不用我说也应该想得到，onkeyup，e.charCode，e.keyCode这类玩意都不能用罢？</p>
<p><br/><br />
<em style="color:#999;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</em><br />
<br/></p>
<p>默认的html控件的样式大家都已经知道很cool了，不过也可以自己修改，具体内容请查看《iphone用户界面指南》的第三章：<a href="http://developer.apple.com/documentation/iPhone/Conceptual/iPhoneHIG/MetricsLayout/chapter_5_section_1.html#//apple_ref/doc/uid/TP40006596-CH6-SW1" target="_blank">Metrics, Layout Guidelines, and Tips</a></p>
<p>iphone里的safari调整了默认的文字样式，这些调整被包括在了一个新的css属性“-webkit-text-size-adjust”里面，相当于“-webkit-text-size-adjust:auto;”，你可以覆盖它，根据需要改成none或者200%</p>
<p><br/><br />
<em style="color:#999;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</em><br />
<br/></p>
<p>web app可以像原生应用一样，在home界面里上添加一个快捷方式图标，方法是增加一个link标签：</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;">link</span><span style="color: Gray;"> </span><span style="color: #00008b;">rel</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">apple-touch-icon</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">custom_icon.png</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li></ol></div>
<p>这是针对单个页面的，如果你把图片命名为“apple-touch-icon.png”，放在网站的某个目录里面，该目录下所有页面都会获得添加图标的功能……</p>
<p>图标的要求是尺寸57×57，png格式，不用画蛇添足的去做圆角渐变或玻璃反光效果，iphone系统会把图片自动裁剪和渲染成统一的风格……</p>
<p>喔对了……不要高兴太早……这个快捷图标的功能，只有1.1.3或更高的固件版本才支持……考虑到国内那些买旧版本破解机器还被商家反复叮嘱不要升级的用户……呃……</p>
<p><br/><br />
<em style="color:#999;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</em><br />
<br/></p>
<p>关于网页中的媒体文件，普通图片最大支持200万像素（jpg的话，最大可以显示出3200万的，不过超过200万的jpg都会被压成缩略图），支持的最大尺寸是2 * 1024&#215;1024，gif动画最大支持2m（否则只显示第1帧）</p>
<p>iphone支持的视频格式：</p>
<blockquote><p>H.264 Baseline Profile Level 3.0 video, up to 640 x 480 at 30 fps. Note that B frames are not supported in the Baseline profile.<br />
MPEG-4 Part 2 video (Simple Profile)<br />
AAC-LC audio, up to 48 kHz<br />
.mov, .mp4, .m4v, .3gp file formats</p></blockquote>
<p>需要注意的是这里的“Baseline profile”，由于这种编码的质量跟“Extended Profile”和“main profile”相比效果比较差，目前主流的支持“高清”（h264）的视频网站，比如youtube，土豆，都没有采用Baseline profile压缩h264视频，所以iphone不但不能播放网络上流行的flv视频（因为不支持flash），连刚开始流行的h264也不能直接播放…………提供iphone应用的视频网站无法使用现有资源，不得不压缩iphone专用的视频文件，所以不要指望能立即在iphone上观看视频网站上的所有资源……T__T</p>
<p>由于iphone不支持flash播放器，视频文件只能直接嵌在页面里，用自带的quicktime来全屏播放，示例：</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;">embed</span><span style="color: Gray;"> </span><span style="color: #00008b;">src</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">screen.jpg</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">href</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">movie.m4v</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">video/x-m4v</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">target</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">myself</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">scale</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> ...</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>更多细节请看官方文档：<a href="http://www.apple.com/quicktime/tutorials/embed.html" target="_blank">Including QuickTime In A Web Page</a></p>
<p><br/><br />
<em style="color:#999;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</em><br />
<br/></p>
<p>如果想全面了解iphone上的web开发，推荐阅读：</p>
<p><a href="http://developer.apple.com/documentation/iPhone/Conceptual/iPhoneHIG/" target="_blank">iPhone Human Interface Guidelines</a>(官方还有一份名字类似的文档，简称OSXHIG，是<a href="http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/" target="_blank">界面设计者的圣经</a>之一)</p>
<p><a href="http://developer.apple.com/documentation/AppleApplications/Reference/SafariWebContent/" target="_blank">Safari Web Content Guide for iPhone</a> </p>
<p><a href="http://developer.apple.com/internet/webcontent/bestwebdev.html" target="_blank">Web Page Development: Best Practices</a>(这篇可以凑合看看，2月8号刚更新过的)</p>
<p>此外，ADC on iTunes里有好多iphone相关的视频，讨厌翻文档的可以去弄来看看，这可是iTunes store里少有的免费资源喔……</p>
<p><br/><br />
<em style="color:#999;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;懒得想小标题的分界线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</em><br />
<br/></p>
<p>就像开头说的，这是2周前写的，一直懒得修改整齐了往blog上帖，但是昨天半夜（好罢是今天凌晨）在<a href="http://twitter.com/apple4us" target="_blank">twitter</a>上不小心看了iphone SDK发布的实况转播……我发现再拖延的话就只能贴到火星去了……</p>
<p>跟华丽的SDK相比，iphone safari上的开发环境可以说很糟糕，非常限制想象力——对javascript和RIA开发者来说，不过只要看看iphone用户上网的热情和相关数据，可以预见在很长一段时间里，iphone平台仍然会是立志开发web app的勇者们争夺的滩头阵地。</p>
<p>啊啊啊啊啊，2.10G的iphone_sdk.dmg终于下载完了，睡觉去……下周买<a href="http://www.china-pub.com/computers/common/info.asp?id=38686">《Cocoa入门&#8211;使用Objective-C》</a>……<br />
<br/><br />
<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2008/03/08/iphone-app-develop/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>为什么信仰apple</title>
		<link>http://www.limboy.com/2007/11/17/why_apple/</link>
		<comments>http://www.limboy.com/2007/11/17/why_apple/#comments</comments>
		<pubDate>Sat, 17 Nov 2007 05:58:09 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[土豆网]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2007/11/17/why_apple/</guid>
		<description><![CDATA[土豆的老大gary这段时间在硅谷，好像是去参加NewTeeVee大会（陈士俊在演讲中宣布youtube将推出高清视频），前天还去了苹果总部，有跟steve jobs见面，内部邮件里传出的八卦新闻非常劲爆，说是jobs当时表示“中国人stupid”，而老大又似乎是很血性的文青，于是当即拍桌子大怒，吵了一架，出门时连纪念品都没买………不过昨天老大的blog更新………似乎p事都没有……也没说要砸自己的macbook pro（/失望），同去的marc也有更新blog，描述的状况更是大相径庭，还说“but he said that he loves China”……啊啊啊，都是幻觉！吓不倒我的！……
不过假如jobs真的说了“中国人stupid”，又会怎样？这次帝都的网志年会上，据说macbook普及率都很高了(我在facebook上还发现，keso和tinyfool也买了macbook pro)。大家为什么要砸钞票买苹果，肯定不是因为jobs是中国人民的老朋友……我不是很清楚别人的想法，不过我买苹果产品，其实就跟用ubuntu的原因一样：它能让我感受到科技的未来和人类的梦想。
正好在论坛写过一个相关的回帖，这种观点以后也许还要复述，为了避免每次都浪费时间重新组织观点构造上下文，还是copy到blog上来罢：
sunnix ：
我认识到苹果的SB就是从第一代shuffle开始的……而我认识到苹果粉丝的SB则是从对岸的 frostyplace这个网站，苹果粉丝就是两个凡是的坚定拥护者——凡是苹果出的，都是伟大的，创新的，艺术的，合理的，友好的，直觉式的，精美的，典范的，blahblahblah;凡是非苹果的就是愚蠢的，笨重的，保守的，不方便的，丑陋的，吃不到葡萄说葡萄酸的，抄袭的，眼红的， blahblahblah。
Dexter.Yy :
这“两个凡是”我很理解，你看，虽然mac是建立在大量开源软件和技术的基础之上，但它跟Linux是两个相反的极端：
Linux会给你提供无数的选择，强烈的参与感，让你和整个开源社区一起共同打造心目中的“未来操作系统”。同样的功能都有几个不同风格的项目供你选择，即使在一个软件里，比如Compiz Fusion，也会给你一大堆选项，让你定制出osx的效果，vista的效果，或是osx和vista都没有的效果。用图形界面改不出来，可以改文本形式的配置文件，配置文件里也没有，可以写脚本，脚本也实现不了，可以改源代码重新编译。还有无数的文档来支持你做这些事情………………firefox也很类似，我可以在一个光秃秃的浏览器上安装各种扩展，定制出一个符合自己需求的网络平台……
而mac只给你一个选择（不是指软件），它明白无误的让你感觉到：这就是“未来的操作系统”。虽然它提供了完善的unix命令行工具（osx10.5是标准的UNIX系统, Linux都只能算unix like）和开发工具（这些工具的强大我难以形容，只能截图），自带了ruby，python，php这样的开源语言，只要你有深入的了解，一样可以控制系统的大部分，但归根结底，它为了给大众用户最方便最简洁的体验，实际上是封装了刚才说的那些东西，把强大的技术隐藏在华丽的图形界面之后。“设计”和 “整合”，这就是apple最擅长的事情。
你可以自己定制，安装各种新东西，却总是觉得自己很笨拙，生怕打乱整个系统的和谐和完美（没有linux上那种自由自在，搞砸事情也不怕的感觉），你可以创作出各种界面，却就是觉得比不上cocoa的原生界面（cocoa是osx的GUI库），那种简洁，高效，细致，优雅，让你除了学习和模仿之外完全没有别的想法。很多人可能看不出来，现在web上流行的一些设计风格和元素，都是从osx里模仿来的。apple的作品几乎从没让你失望过，apple提供的选择虽然少，但几乎就是最好的选择，用mac的过程实际上是不断的在强化这种感觉。所以难免会产生“两个凡是”的思维定式。还有一个例子是：比较一下 windows软件的界面，各种风格都有，就算外观上接近windows的原生界面，面板的布局，按钮位置也可能完全不同。形成鲜明对比的是，mac上的软件（先声明，mac软件的数量不少）几乎都有一致的界面和用户体验，因为mac平台的开发者都谨守apple的GUI规范和建议。
我没有说绝对自由是最好的，也不认为应该让一个强势的偶像级的独裁者给你提供唯一的最好的选择。linux和osx都是能让我感受到未来的科技产品，在两者间做取舍时，我其实是抱着很务实的态度：在现阶段，osx要更优秀更成熟，而且我需要的是能提高效率提高生活质量的工具，而不是把精力和时间消耗在操作系统本身，我既希望享受到开源技术的好处，又不想为此浪费太多时间，所以我用mac……
]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/2007/11/17/why_apple/20070806stevejpg/' rel='attachment wp-att-164' title='20070806steve.jpg'><img src='http://www.limboy.com/wp-content/uploads/2007/11/20070806steve.jpg' style="width:220px;float:left;margin:0 10px 5px 0;" alt='aplycos2_jobs_f.jpg' alt='20070806steve.jpg' /></a>土豆的老大gary这段时间在硅谷，好像是去参加<a href="http://live.newteevee.com/">NewTeeVee大会</a>（陈士俊在演讲中宣布youtube将推出高清视频），前天还去了苹果总部，有跟steve jobs见面，内部邮件里传出的八卦新闻非常劲爆，说是jobs当时表示“中国人stupid”，而老大又似乎是很血性的文青，于是当即拍桌子大怒，吵了一架，出门时连纪念品都没买………不过昨天老大的<a href="http://blog.tudou.com/?p=96627">blog更新</a>………似乎p事都没有……也没说要砸自己的macbook pro（/失望），同去的marc也有更新blog，<a href="http://www.marc.cn/2007/11/27-hours-in-silicon-valley.html">描述的状况</a>更是大相径庭，还说“but he said that he loves China”……啊啊啊，都是幻觉！吓不倒我的！……<span id="more-162"></span></p>
<p>不过假如jobs真的说了“中国人stupid”，又会怎样？这次帝都的网志年会上，据说macbook普及率都很高了(我在facebook上还发现，<a href="http://blog.donews.com/keso/">keso</a>和<a href="http://www.tinydust.net/prog/diary/diary.htm">tinyfool</a>也买了macbook pro)。大家为什么要砸钞票买苹果，肯定不是因为jobs是<a href="http://www.google.com/search?q=%E4%B8%AD%E5%9B%BD%E4%BA%BA%E6%B0%91%E7%9A%84%E8%80%81%E6%9C%8B%E5%8F%8B">中国人民的老朋友</a>……我不是很清楚别人的想法，不过我买苹果产品，其实就跟用ubuntu的原因一样：它能让我感受到科技的未来和人类的梦想。</p>
<p>正好在论坛写过一个相关的回帖，这种观点以后也许还要复述，为了避免每次都浪费时间重新组织观点构造上下文，还是copy到blog上来罢：</p>
<p>sunnix ：</p>
<blockquote><p>我认识到苹果的SB就是从第一代shuffle开始的……而我认识到苹果粉丝的SB则是从对岸的 frostyplace这个网站，苹果粉丝就是两个凡是的坚定拥护者——凡是苹果出的，都是伟大的，创新的，艺术的，合理的，友好的，直觉式的，精美的，典范的，blahblahblah;凡是非苹果的就是愚蠢的，笨重的，保守的，不方便的，丑陋的，吃不到葡萄说葡萄酸的，抄袭的，眼红的， blahblahblah。</p></blockquote>
<p>Dexter.Yy :</p>
<blockquote><p>这“两个凡是”我很理解，你看，虽然mac是建立在大量开源软件和技术的基础之上，但它跟Linux是两个相反的极端：</p>
<p>Linux会给你提供无数的选择，强烈的参与感，让你和整个开源社区一起共同打造心目中的“未来操作系统”。同样的功能都有几个不同风格的项目供你选择，即使在一个软件里，比如<a href="http://www.compiz-fusion.org/">Compiz Fusion</a>，也会给你一大堆选项，让你定制出osx的效果，vista的效果，或是osx和vista都没有的效果。用图形界面改不出来，可以改文本形式的配置文件，配置文件里也没有，可以写脚本，脚本也实现不了，可以改源代码重新编译。还有无数的文档来支持你做这些事情………………firefox也很类似，我可以在一个光秃秃的浏览器上安装各种扩展，定制出一个符合自己需求的网络平台……</p>
<p>而mac只给你一个选择（不是指软件），它明白无误的让你感觉到：这就是“未来的操作系统”。虽然它提供了完善的unix命令行工具（osx10.5是<a href="http://www.google.com/search?q=leopard+unix+03+posix">标准的UNIX系统</a>, Linux都只能算unix like）和开发工具（这些工具的强大我难以形容，只能截图），自带了ruby，python，php这样的开源语言，只要你有深入的了解，一样可以控制系统的大部分，但归根结底，它为了给大众用户最方便最简洁的体验，实际上是封装了刚才说的那些东西，把强大的技术隐藏在华丽的图形界面之后。“设计”和 “整合”，这就是apple最擅长的事情。</p>
<p>你可以自己定制，安装各种新东西，却总是觉得自己很笨拙，生怕打乱整个系统的和谐和完美（没有linux上那种自由自在，搞砸事情也不怕的感觉），你可以创作出各种界面，却就是觉得比不上cocoa的原生界面（cocoa是osx的GUI库），那种简洁，高效，细致，优雅，让你除了学习和模仿之外完全没有别的想法。很多人可能看不出来，现在web上流行的一些设计风格和元素，都是从osx里模仿来的。apple的作品几乎从没让你失望过，apple提供的选择虽然少，但几乎就是最好的选择，用mac的过程实际上是不断的在强化这种感觉。所以难免会产生“两个凡是”的思维定式。还有一个例子是：比较一下 windows软件的界面，各种风格都有，就算外观上接近windows的原生界面，面板的布局，按钮位置也可能完全不同。形成鲜明对比的是，mac上的软件（先声明，mac软件的数量不少）几乎都有一致的界面和用户体验，因为mac平台的开发者都谨守apple的GUI<a href="http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html?http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html#//apple_ref/doc/uid/TP30000894-TP6">规范和建议</a>。</p>
<p>我没有说绝对自由是最好的，也不认为应该让一个强势的偶像级的独裁者给你提供唯一的最好的选择。linux和osx都是能让我感受到未来的科技产品，在两者间做取舍时，我其实是抱着很务实的态度：在现阶段，osx要更优秀更成熟，而且我需要的是能提高效率提高生活质量的工具，而不是把精力和时间消耗在操作系统本身，我既希望享受到开源技术的好处，又不想为此浪费太多时间，所以我用mac……</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2007/11/17/why_apple/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>在Leopard里配置rails+php+apache+mysql</title>
		<link>http://www.limboy.com/2007/11/14/rails_php_apache_mysql_on_leopard/</link>
		<comments>http://www.limboy.com/2007/11/14/rails_php_apache_mysql_on_leopard/#comments</comments>
		<pubDate>Wed, 14 Nov 2007 04:21:37 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[代码]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2007/11/14/rails_php_apache_mysql_on_leopard/</guid>
		<description><![CDATA[上上周在lex的怂恿下升级到了Leopard，最后花了3天时间，备份数据用了一台macbook pro加一只80g移动硬盘，重装4遍，到现在总算稳定下来了，不过还有一个bug未解决（期待10.5.1补丁）……
在Leopard里，很多开源代码都升级到了最新版，比如Python 2.5.1，PHP 5.2.4，Ruby 1.8.6，Apache 2.2，更棒的是，这次系统里直接集成了ruby on rails，包括Mongrel和Capistrano，据说还做过优化……
以前在mac里配置ROR，我是按照Dan Benjamin的《Building Ruby, Rails, Subversion, Mongrel, and MySQL on Mac OS X》来做的，安装ruby,gem之类的东西都是依靠MacPorts（osx里的包管理系统），而MacPorts安装的程序都在/opt/local里，独立于系统环境……
作为一个完美主义者，一定不能容忍自己心爱的系统里有任何兀余的代码，所以，这一次我希望能在leopard已经集成的代码基础上，搭建rails+php+apache+mysql的开发环境……
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;完美主义者的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
首先搞定apache，在配置面板里的“共享”中，选中&#8221;web共享&#8221;，就可以启动apache。默认的http://localhost指向/Library/WebServer/Documents，如果想修改成自己的目录，比如/Users/dexteryy/Sites/www，最简单的方法是直接改掉httpd.conf里的DocumentRoot
httpd.conf是放在/etc/apache2/里的，除了DocumentRoot，还要记得把下面两行代码前的注释删掉：
LoadModule php5_module        libexec/apache2/libphp5.so
LoadModule fastcgi_module     libexec/apache2/mod_fastcgi.so
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;完美主义者的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
然后是php.ini，系统默认在/etc里放了一个php.ini.default，把它copy一份，改名为php.ini
php.ini里有一个关于mysql的地方要注意，leopard好像修改过mysql.sock的位置，所以要修改以下两行：
mysql.default_socket = /private/tmp/mysql.sock
mysqli.default_socket = /private/tmp/mysql.sock
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;完美主义者的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
然后安装最新的mysql，我下载的是mysql-5.0.45-osx10.4-i686.dmg。其中的MySQLStartupItem.pkg和mysql.prefpane都不用安装了，因为这两个东西目前都不起作用-___-b
以前启动mysql都是用这个命令：
sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
但是在leopard里，这个东西好像失效了，只好用这个命令来启动
sudo /usr/local/mysql/bin/safe_mysqld
如果要自动启动mysql，可以用以下方法：
在/Library/LaunchDaemons/里新建一个叫com.mysql.mysqld.plist的文件：
&#60;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&#62;
&#60;!DOCTYPE&#160;plist PUBLIC &#34;-//Apple//DTD PLIST 1.0//EN&#34; &#34;http://www.apple.com/DTDs/PropertyList-1.0.dtd&#34;&#62;
&#60;plist&#160;version=&#34;1.0&#34;&#62;
&#60;dict&#62;
&#160; &#160; &#60;key&#62;KeepAlive&#60;/key&#62;
&#160; &#160; &#60;true/&#62;
&#160; &#160; &#60;key&#62;Label&#60;/key&#62;
&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/2007/11/14/rails_php_apache_mysql_on_leopard/leopard_box200jpg/' rel='attachment wp-att-154' title='leopard_box200.jpg'><img src='http://www.limboy.com/wp-content/uploads/2007/11/leopard_box200.jpg' alt='leopard_box200.jpg' style="float:left;margin:0 10px 5px 0;width:150px;" /></a>上上周在lex的怂恿下升级到了Leopard，最后花了3天时间，备份数据用了一台macbook pro加一只80g移动硬盘，重装4遍，到现在总算稳定下来了，不过还有一个bug未解决（期待10.5.1补丁）……</p>
<p>在Leopard里，很多开源代码都升级到了最新版，比如Python 2.5.1，PHP 5.2.4，Ruby 1.8.6，Apache 2.2，更棒的是，这次系统里直接集成了ruby on rails，包括<a href="http://mongrel.rubyforge.org/">Mongrel</a>和Capistrano，据说还做过优化……</p>
<p>以前在mac里配置ROR，我是按照Dan Benjamin的<a href="http://hivelogic.com/narrative/articles/ruby-rails-mongrel-mysql-osx">《Building Ruby, Rails, Subversion, Mongrel, and MySQL on Mac OS X》</a>来做的，安装ruby,gem之类的东西都是依靠<a href="http://www.macports.org/">MacPorts</a>（osx里的包管理系统），而MacPorts安装的程序都在/opt/local里，独立于系统环境……</p>
<p>作为一个完美主义者，一定不能容忍自己心爱的系统里有任何兀余的代码，所以，这一次我希望能在leopard已经集成的代码基础上，搭建rails+php+apache+mysql的开发环境……<span id="more-153"></span></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;完美主义者的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>首先搞定apache，在配置面板里的“共享”中，选中&#8221;web共享&#8221;，就可以启动apache。默认的http://localhost指向/Library/WebServer/Documents，如果想修改成自己的目录，比如/Users/dexteryy/Sites/www，最简单的方法是直接改掉httpd.conf里的DocumentRoot</p>
<p>httpd.conf是放在/etc/apache2/里的，除了DocumentRoot，还要记得把下面两行代码前的注释删掉：</p>
<p>LoadModule php5_module        libexec/apache2/libphp5.so<br />
LoadModule fastcgi_module     libexec/apache2/mod_fastcgi.so</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;完美主义者的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>然后是php.ini，系统默认在/etc里放了一个php.ini.default，把它copy一份，改名为php.ini</p>
<p>php.ini里有一个关于mysql的地方要注意，leopard好像修改过mysql.sock的位置，所以要修改以下两行：</p>
<p>mysql.default_socket = /private/tmp/mysql.sock</p>
<p>mysqli.default_socket = /private/tmp/mysql.sock</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;完美主义者的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>然后安装最新的mysql，我下载的是mysql-5.0.45-osx10.4-i686.dmg。其中的MySQLStartupItem.pkg和mysql.prefpane都不用安装了，因为这两个东西目前都不起作用-___-b</p>
<p>以前启动mysql都是用这个命令：</p>
<p>sudo /Library/StartupItems/MySQLCOM/MySQLCOM start</p>
<p>但是在leopard里，这个东西好像失效了，只好用这个命令来启动</p>
<p>sudo /usr/local/mysql/bin/safe_mysqld</p>
<p>如果要自动启动mysql，可以用以下方法：</p>
<p>在/Library/LaunchDaemons/里新建一个叫com.mysql.mysqld.plist的文件：</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;">xml</span><span style="color: Gray;"> </span><span style="color: #00008b;">version</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1.0</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">encoding</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">UTF-8</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">?&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Gray;">!</span><span style="color: #00008b;">DOCTYPE</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">plist</span><span style="color: Gray;"> </span><span style="color: #00008b;">PUBLIC</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">-//Apple//DTD PLIST 1.0//EN</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">http://www.apple.com/DTDs/PropertyList-1.0.dtd</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">plist</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">version</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">1.0</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">dict</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">key</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">KeepAlive</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">key</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">true</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">key</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Label</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">key</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">string</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">com.mysql.mysqld</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">string</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">key</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Program</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">key</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">string</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">/usr/local/mysql/bin/mysqld_safe</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">string</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">key</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">RunAtLoad</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">key</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">true</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">dict</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">plist</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>修改权限：<br />
sudo chown root /Library/LaunchDaemons/com.mysql.mysqld.plist</p>
<p>ok了……注意，如果安装过MySQLStartupItem.pkg，最好把MYSQLCOM直接删掉：</p>
<p>sudo rm -R /Library/StartupItems/MYSQLCOM</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;完美主义者的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>ruby on rails已经完美的集成了，不需要做任何设置，除了跟mysql的绑定……</p>
<p>sudo gem install mysql &#8212; &#8211;with-mysql-dir=/usr/local/mysql</p>
<p>选择3……</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;完美主义者的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>现在可以新建rails的项目了，在终端里进入刚才设置的DocumentRoot目录，输入/rails rails_test</p>
<p>然后启动服务器：<br />
rails_test/script/server</p>
<p>命令执行后不要关闭终端窗口（会关闭服务器），leopard的终端现在支持标签了，苹果键＋T，继续做别的事情……</p>
<p>现在访问http://localhost:3000/ ，就可以看到rails项目的页面了……</p>
<p>这里启动的服务器是Mongrel，实际上可以把它跟apache整合到一起，用apache接受浏览器的请求，利用反向代理功能转发给Mongrel，这样就不需要用3000端口，直接用这样的地址就可以访问rails的页面：http://localhost/rails_test</p>
<p>方法很简单，找到刚才的httpd.conf，在最下面加入：</p>
<p>ProxyPass /rails_test http://localhost:3000</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;完美主义者的分割线&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>以上是我目前搭建的一个简单的rails+php+apache+mysql开发环境，可能还有其他问题，在具体使用中慢慢改……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2007/11/14/rails_php_apache_mysql_on_leopard/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>用户的选择：放弃正版Vista回归盗版XP</title>
		<link>http://www.limboy.com/2007/07/19/vista/</link>
		<comments>http://www.limboy.com/2007/07/19/vista/#comments</comments>
		<pubDate>Thu, 19 Jul 2007 15:17:10 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[用户体验]]></category>
		<category><![CDATA[科技]]></category>

		<guid isPermaLink="false">http://www.limboy.com/2007/07/19/vista/</guid>
		<description><![CDATA[我没用过Vista，自从在台式机上装了ubuntu，后来又花2K6买了一台2手ibook，我对Vista便没有任何兴趣了，如今最大的愿望就是买一台macbook，OSX在我看来是接近完美的操作系统，ubuntu则更有活力、更自由、更能让我热血沸腾，而Vista呢，与前两者比起来，无论从哪方面来说都没有什么吸引力……
NTRPG的Jackyshadow有正版Vista Busines，在坚持使用半年之后，他宣布换回盗版winxp，还详细陈述了自己的看法，对那些不明所以就准备升级到Vista的国内用户来说，我觉得这篇文章很有参考价值，经作者允许，发到这里来：
正版Win Vista Business, 用了前前后后差不多半年左右, 今天撤下来换装了XP
我的机器配置:
P4 3.0Ghz &#8211; E Prescott
2GB DDR400
Nvidia 6600GT
320GB+80GB
ADSL
Vista的好处:
- 新的开始菜单设计不错, 比之前的开始菜单整洁容易管理得多, 其实不必管理也可以很整洁, 不会出现传统Windows&#8221;所有程序&#8221;呼啦一下子半个屏幕都被菜单遮住的情形
- 面包渣地址栏是非常好的想法, 用习惯後效率很高
- 像管理和组策略这类比较高级的应用都有傻瓜式的access和向导&#8212;当然这个意义不是很大: 傻瓜式用户不需要高级应用, 用高级应用的一般都不会是完全的傻瓜用户
坏处:
- 几乎是个和XP一模一样的操作系统, 你可能要跟我争论它用了什么新技术,新的外壳,新的内核等等, 但事实上讲, 它的用户体验和XP非常接近, 接近到有点让人怀疑300多美元是不是被MS骗去了
- UI上有严重的问题.
Explore 不能记忆上次被关闭时的尺寸和位置是最明显的. 考虑到XP中不太存在这个问题, 可以说这是个bug. 但这个bug非常非常的讨厌. 对于大屏幕用户来说简直就是腰斩用户体验, 你要么每次都去重新拽窗口尺寸, 要么就忍受在那个800&#215;600(可能还不到)的窗口里用滚轮看内容&#8230;.
号称改进过的复制文件进度对话框完全是个摆设. 上面的时间预估, 传输速率不仅仅是不准的问题, 比如你拷贝一个很大的文件, 实际需要5分钟, 经常会前四分钟这个对话框一直显示:估计剩余时间0, 传输速率0.0mb/s, 然后在最后一分钟里显示传输速率n GB/s.
Explore上的菜单Panel被隐藏掉了. 需要按alt才能激活. 当要执行比较高级的设置时比较繁琐&#8211;比如更改是否显示隐藏文件/后缀之类的. 当然这个panel可以被设置成始终显示&#8211;然而它的模样和整个界面格格不入, 放在上面十分难看.
图标, 大部分常见的图标在Vista里都有进化, 不仅仅体现在外观&#8211;Vista带来的新图标标准尺寸为512&#215;512(顺便说一下OS X N年前就在用这个尺寸了), 这样当你在用滑块选择浏览尺寸时可以把图标放到很大很大而仍然保持漂亮的外观&#8212;而问题就在这里了: 很多,事实上是绝大部分Windows平台的软件, 图标都没有这么大的尺寸, 结果放大後有些图标很漂亮(一般都是Vista自带的), 而大部分应用软件图标则全是色块, [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.limboy.com/wp-content/uploads/2007/07/2848_2843_large_windowsvistaultimate_print.jpg' title='2848_2843_large_windowsvistaultimate_print.jpg'><img style="float:left;margin:0 10px 10px 0;" src='http://www.limboy.com/wp-content/uploads/2007/07/2848_2843_large_windowsvistaultimate_print.thumbnail.jpg' alt='2848_2843_large_windowsvistaultimate_print.jpg' /></a>我没用过Vista，自从在台式机上装了ubuntu，后来又花2K6买了一台2手ibook，我对Vista便没有任何兴趣了，如今最大的愿望就是买一台macbook，OSX在我看来是接近完美的操作系统，ubuntu则更有活力、更自由、更能让我热血沸腾，而Vista呢，与前两者比起来，无论从哪方面来说都没有什么吸引力……</p>
<p><a href="http://www.ntrpg.org/main/">NTRPG</a>的Jackyshadow有正版Vista Busines，在坚持使用半年之后，他宣布换回盗版winxp，还详细陈述了自己的看法，对那些不明所以就准备升级到Vista的国内用户来说，我觉得这篇文章很有参考价值，经作者允许，发到这里来：<span id="more-147"></span></p>
<blockquote><p>正版Win Vista Business, 用了前前后后差不多半年左右, 今天撤下来换装了XP</p>
<p>我的机器配置:</p>
<p>P4 3.0Ghz &#8211; E Prescott<br />
2GB DDR400<br />
Nvidia 6600GT<br />
320GB+80GB<br />
ADSL</p>
<p>Vista的好处:</p>
<p>- 新的开始菜单设计不错, 比之前的开始菜单整洁容易管理得多, 其实不必管理也可以很整洁, 不会出现传统Windows&#8221;所有程序&#8221;呼啦一下子半个屏幕都被菜单遮住的情形</p>
<p>- 面包渣地址栏是非常好的想法, 用习惯後效率很高</p>
<p>- 像管理和组策略这类比较高级的应用都有傻瓜式的access和向导&#8212;当然这个意义不是很大: 傻瓜式用户不需要高级应用, 用高级应用的一般都不会是完全的傻瓜用户</p>
<p>坏处:</p>
<p>- 几乎是个和XP一模一样的操作系统, 你可能要跟我争论它用了什么新技术,新的外壳,新的内核等等, 但事实上讲, 它的用户体验和XP非常接近, 接近到有点让人怀疑300多美元是不是被MS骗去了</p>
<p>- UI上有严重的问题.</p>
<p>Explore 不能记忆上次被关闭时的尺寸和位置是最明显的. 考虑到XP中不太存在这个问题, 可以说这是个bug. 但这个bug非常非常的讨厌. 对于大屏幕用户来说简直就是腰斩用户体验, 你要么每次都去重新拽窗口尺寸, 要么就忍受在那个800&#215;600(可能还不到)的窗口里用滚轮看内容&#8230;.</p>
<p>号称改进过的复制文件进度对话框完全是个摆设. 上面的时间预估, 传输速率不仅仅是不准的问题, 比如你拷贝一个很大的文件, 实际需要5分钟, 经常会前四分钟这个对话框一直显示:估计剩余时间0, 传输速率0.0mb/s, 然后在最后一分钟里显示传输速率n GB/s.</p>
<p>Explore上的菜单Panel被隐藏掉了. 需要按alt才能激活. 当要执行比较高级的设置时比较繁琐&#8211;比如更改是否显示隐藏文件/后缀之类的. 当然这个panel可以被设置成始终显示&#8211;然而它的模样和整个界面格格不入, 放在上面十分难看.</p>
<p>图标, 大部分常见的图标在Vista里都有进化, 不仅仅体现在外观&#8211;Vista带来的新图标标准尺寸为512&#215;512(顺便说一下OS X N年前就在用这个尺寸了), 这样当你在用滑块选择浏览尺寸时可以把图标放到很大很大而仍然保持漂亮的外观&#8212;而问题就在这里了: 很多,事实上是绝大部分Windows平台的软件, 图标都没有这么大的尺寸, 结果放大後有些图标很漂亮(一般都是Vista自带的), 而大部分应用软件图标则全是色块, 惨不忍睹. 这还不算完, Vista自己有些图标也不是512&#215;512的, 比如著名的&#8221;无法识别的文件类型&#8221;图标, 这是曾经被公认为GUI历史上最丑陋然而最长寿的图标(从Win 3.x时代就活跃在第一线的上古之神一样的存在), 在Vista中不仅保持着本色, 而且连个高分辨率版本都没有. 所以假如你那打扮的漂漂亮亮的数字照片/媒体文件夹里不慎有个.bak或者.cache这种经常由数字设备/软件自动生成的临时文件, 你就会有一种粥和老鼠屎的关联感.</p>
<p>图标之二, 这是Vista的另一个Bug, 早在Beta公测阶段就有很多人指出了, 但微软好像根本就没搭理(事实上前面好多缺点在Beta时期就有很多人提出了, 但微软都没有吊). Vista桌面上的图标(除去系统图标之外)都有Alpha channel的问题. 第三方的图标周围会有一个虚线的方框, 显示出该ico文件真正的尺寸, 这个方框的明显程度取决于你的墙纸. 本来这或许可以叫做新的UI风格, 但有的图标有这个框框有的没有就实在很古怪了, 同样的, 这个问题从未在XP中出现过, 所以应该是Vista的bug</p>
<p>- 性能</p>
<p>在我这个配置上, 基本操作的性能没有显著下降. 但进行对性能要求比较高的应用时性能下降很明显. 例如HD播放, 同样的配置和软件, 1080p在XP上一切正常, 但在Vista上会卡, 时间长了声音和画面就会失去同步. 游戏同样的设置基本上会有10个FPS的下降(峰值)</p>
<p>Vista 会强行对媒体文件获取缩略图并作针对性的searching index(后者涉及到处理大量meta data, 在单核处理器上极为消耗资源), 在打开含有大量媒体文件的文件夹时系统速度会显著下降&#8211;一直到不能忍. 然而假如将这个功能关掉, 所有的图片都会变成千篇一律的图标而不是预览图,让人对其中取舍十分苦恼</p>
<p>- 兼容性</p>
<p>在我这里很是问题. 好多04年以前的游戏甚至都不能安装(用以XP的兼容方式运行也不可以). 网络上对XP的机器不是很友好, 会有严重的通信障碍. 与XP机器共享文件偶尔可以成功, 但大部分时间都无法复制共享驱动器上的内容(微软有一个未公开的hotfix修正这个问题, 但要求用户打客服电话索求, 我跟微软客服的一个印度阿三&#8211;无疑是微软outsourcing到印度的客服中心&#8211;磨了半天他也没给我, 我都不知道他有没有听懂我的问题, 当然我也不确定我是否听懂了他说的是什么)</p>
<p>另外Vista有微软的天才程序员们嵌入的网络自动优化协议, 这个协议在一部分牌子的Router构建的小型局域网上会造成数据风暴导致整个网络堵塞瘫痪&#8211;最棒的部分在于, 整个小型局域网上哪怕只有一台Vista的机器也一样会被日. 我所在的局域网正是可以被日的类型, 还好这套协议可以通过命令行关掉&#8230;.但繁琐程度也超出一般用户的能力范围了(比如需要关闭部分服务, 更改策略, 取消UAC, 还要找到新的command promote&#8211;好像是出于安全原因Vista把&#8221;运行&#8221;扔掉了)</p>
<p>总之我对Vista很是失望, SP1出来之前是不打算再碰他了, 目前来说对任何人都不推荐这个操作系统, 现在市面上没有好的破解的Vista对玩家也是一大幸事, 还是继续玩VLK的XP吧, Vista全是噩梦</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2007/07/19/vista/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>华丽的科普~华丽的翻译~《古墓丽影瀚量子力学》！</title>
		<link>http://www.limboy.com/2007/03/03/tomb/</link>
		<comments>http://www.limboy.com/2007/03/03/tomb/#comments</comments>
		<pubDate>Sat, 03 Mar 2007 05:59:11 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[游戏]]></category>
		<category><![CDATA[科技]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2007/03/03/tomb/</guid>
		<description><![CDATA[看到一篇强文：Quantum mechanics and Tomb Raider, 看到wordpress.com这个域名，你可能就知道这个BLOG需要用代理访问了……
原文我也看不明白，然则NTRPG论坛上的Ross老爷就华丽的把它翻译出来了哑！赞！经译者授权，转帖于此：
量子力学导致了很多匪夷所思的结论，这里我们只着重讨论其中三点：
一、物体可以同时表现粒子性和波动性；
二、那些描述量子力学的方程式是确定的,但关于这些方程的解的标准解释却是概然的；
三、如果用量子力学法则来解释宏观现象,那就得要求宇宙本身必须分割成为多个互不相同的“世界”的叠加体。
为了通过传统的概念模型来描绘量子力学的非常现象，我们决定使用电脑游戏来帮助我们进行分析。具体选择哪款游戏并不重要，就让我们用古墓丽影—一款十多年以前就开始流行的游戏来进行我们的讨论吧。在这款游戏中，Lara Croft是女主人公，她致力于在各种古墓和地城中探险，经受迷题和陷阱的考验，只为得到她所心仪的宝贝。要知道，在游戏中，Lara死掉是一件稀松平常的事情，很可能一个陷阱就要了她的性命。
我们要讨论的是，在这样一款游戏中，存在一个“里世界”，即Lara所存在的游戏世界；以及一个 “表世界”，即玩家通过电脑操纵Lara的现实世界。当游戏运行的时候，这两个世界或多或少是相互平行的。但是某种操作，特别是“保存游戏”和“读取游戏”的行为，会破坏表世界和里世界的关系。这种行为对处于表世界的我们来说是再正常不过的事情了。但是，如果我们从Lara的角度，即里世界的角度来看，就会发现事情会变得有趣起来。
首先想象一下，Lara碰到了游戏中的某个迷题，此时操作Lara的玩家选择在尝试之前先保存一下游戏。接下来会发生的事情可能是：Lara的第一次尝试失败，死掉了；玩家读取之前的存档，这次Lara成功了。
现在，从Lara的角度来看，情况会有什么不同呢？在游戏的记录点，Lara的世界变成了两种互不干扰的可能分支的重叠，在其中一个分支里，她尝试失败而死掉了；在另一个分支里，她成功地活下来。（就像薛定谔的猫）她的未来变得不确定起来。如果她在记录点以前向先知询问她是否能活下来，先知能给她的唯一的正确回答就是50%可能死掉，50%可能活下来。
这个简单的例子表明，表世界中的结果十分确定，但里世界的结果却可以是不确定的。然而，这个例子无法完全说明量子力学的匪夷所思之处。在这两个分支世界中的Lara都无法了解关于另一个分支世界中的情况，因此Lara只能得到她是活在一个“传统的、结果确定的世界”中这样一个结论。
那么，让我们把这个游戏变得更有趣一些。我们假设，Lara每次死后，都会在死亡地点留下尸体，而且未来的Lara可以碰到这些尸体。那么Lara就会注意到以下现象：无论她何时开始解决游戏中的迷题，她都会碰到一定数量的自己的尸体。我们无法用传统的确定的现实模型来向Lara解释这些奇怪的现象。我们能给她的最简单的解释就是现实由多元世界构成，而包含每各种可能性的世界之间部分关联。另一个可能的解释是：每当Lara通过一个记录点的时候，她的确定的粒子性发散成为各种可能性的波形叠加，然后在她通过迷题的瞬间，描述她的命运的各种可能性的波函数立刻坍缩成为一个确定的结果。
在现实世界中，只有微观物体，例如电子，才会体现出量子性。而宏观物体，比如你和我，则无法体会 Lara在游戏世界中所遭遇的那种现象，我们也无法去采访单个电子，询问它的切身体会。不过，通过对微观物体行为的统计，我们可以经由实验和理论推测间接得出它们的量子性质。让我们再一次用古墓丽影来分析一下这个问题。设想在古墓丽影中并非只有Lara一个主人公，而有很多角色可以使用。他们都像Lara 一样喜欢冒险。我假设，在游戏世界中也有一个科学家——就让我们叫她Jacqueline——专门研究这些冒险者的行为。但是她不会亲自去体验在古墓中探险活动，她甚至也不跟这些冒险者有任何接触。每一座古墓只有一个冒险者进入，无论这个冒险者死掉或是活着完成探索，都不会有其他冒险者再进入这座古墓。
Jacqueline 尝试考察她世界中的一些不同类型的古墓，并且收集了冒险者门在不同类型的古墓中幸存下来的数据。她发现，对于一个给定类型的古墓，都有一个确定的幸存概率 ——比如类型A的古墓所对应的幸存率固定为20%，而类型B则固定为50%——但是却无法确定，一个给定的冒险者在一个给定的古墓中是否能幸存下来。到目前为止，这些现象都可以通过传统理论来解释：每一座墓地中都有若干致命的陷阱，冒险者能否成功通过这些陷阱都由一个随机几率决定。
但是，Jacqueline此刻会遇到神秘的量子现象：不同类型古墓的幸存几率不外乎以下一些数字：
100%、50%、33.3%、25%、20%……
换句话说就是，每一座古墓的幸存几率固定为某个整数的倒数1/n。这种现象在传统理论中难以解释，因为就随机效应来说，幸存率的分布应该是一条连续的曲线。
这就是说，Lara为了能在某种类型的古墓中幸存下来，她需要叠加一定数量的自己的尸体来到达某个临界点。如果她无法跃迁到一定的干涉能级来抵达那个临界点，她就会在冒险中死掉。古墓的类型决定了具体需要多少尸体才能抵达临界点——比如A类型的墓地需要四具尸体。这样控制Lara的玩家就必须让Lara失败四次才能成功通过这个古墓。以Jacqueline的角度来看，Lara的幸存纪律就是20%。在承载着每一个可能性的游戏世界中，只有一个Lara进入了古墓中。但是Lara的幸存几率却是因为多个重叠世界相互干涉而决定的。
这种量子效应的一个类似的例子是，每一种原子只能发射出特定波长的可见光波，比如钠原子的光谱线就是黄色的，而氖原子的光谱线是蓝色的。在这些原子中的电子为了能发射出这样的光波，从某种意义上来说就是爬着它们自己的尸体抵达被激发的临界点。通常的解释是，在原子内部的电子以波的形式存在，并以某个固定的频率震荡。
最后我们再次利用古墓丽影来解释一下为什么微观物体能体现出量子效应而宏观物体却没有。我们假设古墓丽影是一个双人合作游戏，两个玩家分别控制两个人物（这两个人物就叫Lara和 Indiana），她们可以同时探索她们世界的不同部分。玩家可以保存和读取游戏。读取游戏的时候Lara和Indiana都会回到记录点的状态。
此时，游戏依然会有Lara和Indiana遭遇到她们自己尸体的奇怪现象。然而，我们假设，Lara和Indiana通过以下方式纠缠：如果Lara探索墓地A而Indiana探索墓地B，只有Lara和Indiana两人都在上一次记录游戏中分别死在墓地A和墓地B，那么Lara和Indiana才会各自碰到自己在上一次记录游戏中的尸体。如果在上一次记录游戏中，Lara死在墓地A而Indiana死在墓地C，那么她们这次就不会看到任何尸体。因为这种纠缠，量子效应减少了。Lara和Indiana如果同时在这个世界中进行不同的探险活动，将比Lara单独进行探险活动要遇到更少的尸体。如果同时有大量的冒险者分别进行探索，那么量子效应基本上为0。
原文：
Quantum mechanics and Tomb Raider
Monday, February 26th, 2007 in non-technical
This post is derived from an interesting conversation I had several years ago with my friend Jason Newquist on trying to find some intuitive analogies for the non-classical nature of quantum mechanics. It occurred [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bp0.blogger.com/_FPgtQV0mSoM/ReiEIAgyOkI/AAAAAAAAACc/8Ax8dl4LROY/s1600-h/tomb-raider-legend-20060619071447222.jpg"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_FPgtQV0mSoM/ReiEIAgyOkI/AAAAAAAAACc/8Ax8dl4LROY/s320/tomb-raider-legend-20060619071447222.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5037421456325229122" /></a>看到一篇强文：<a href="http://terrytao.wordpress.com/2007/02/26/quantum-mechanics-and-tomb-raider/">Quantum mechanics and Tomb Raider</a>, 看到wordpress.com这个域名，你可能就知道这个BLOG需要用代理访问了……</p>
<p>原文我也看不明白，然则<a href="http://bbs.ntrpg.org/index.php?showtopic=182">NTRPG论坛上的Ross老爷</a>就华丽的把它翻译出来了哑！赞！经译者授权，转帖于此：<span id="more-82"></span></p>
<blockquote><p>量子力学导致了很多匪夷所思的结论，这里我们只着重讨论其中三点：</p>
<p>一、物体可以同时表现粒子性和波动性；<br />
二、那些描述量子力学的方程式是确定的,但关于这些方程的解的标准解释却是概然的；<br />
三、如果用量子力学法则来解释宏观现象,那就得要求宇宙本身必须分割成为多个互不相同的“世界”的叠加体。</p>
<p>为了通过传统的概念模型来描绘量子力学的非常现象，我们决定使用电脑游戏来帮助我们进行分析。具体选择哪款游戏并不重要，就让我们用古墓丽影—一款十多年以前就开始流行的游戏来进行我们的讨论吧。在这款游戏中，Lara Croft是女主人公，她致力于在各种古墓和地城中探险，经受迷题和陷阱的考验，只为得到她所心仪的宝贝。要知道，在游戏中，Lara死掉是一件稀松平常的事情，很可能一个陷阱就要了她的性命。</p>
<p>我们要讨论的是，在这样一款游戏中，存在一个“里世界”，即Lara所存在的游戏世界；以及一个 “表世界”，即玩家通过电脑操纵Lara的现实世界。当游戏运行的时候，这两个世界或多或少是相互平行的。但是某种操作，特别是“保存游戏”和“读取游戏”的行为，会破坏表世界和里世界的关系。这种行为对处于表世界的我们来说是再正常不过的事情了。但是，如果我们从Lara的角度，即里世界的角度来看，就会发现事情会变得有趣起来。</p>
<p>首先想象一下，Lara碰到了游戏中的某个迷题，此时操作Lara的玩家选择在尝试之前先保存一下游戏。接下来会发生的事情可能是：Lara的第一次尝试失败，死掉了；玩家读取之前的存档，这次Lara成功了。</p>
<p>现在，从Lara的角度来看，情况会有什么不同呢？在游戏的记录点，Lara的世界变成了两种互不干扰的可能分支的重叠，在其中一个分支里，她尝试失败而死掉了；在另一个分支里，她成功地活下来。（就像薛定谔的猫）她的未来变得不确定起来。如果她在记录点以前向先知询问她是否能活下来，先知能给她的唯一的正确回答就是50%可能死掉，50%可能活下来。</p>
<p>这个简单的例子表明，表世界中的结果十分确定，但里世界的结果却可以是不确定的。然而，这个例子无法完全说明量子力学的匪夷所思之处。在这两个分支世界中的Lara都无法了解关于另一个分支世界中的情况，因此Lara只能得到她是活在一个“传统的、结果确定的世界”中这样一个结论。</p>
<p>那么，让我们把这个游戏变得更有趣一些。我们假设，Lara每次死后，都会在死亡地点留下尸体，而且未来的Lara可以碰到这些尸体。那么Lara就会注意到以下现象：无论她何时开始解决游戏中的迷题，她都会碰到一定数量的自己的尸体。我们无法用传统的确定的现实模型来向Lara解释这些奇怪的现象。我们能给她的最简单的解释就是现实由多元世界构成，而包含每各种可能性的世界之间部分关联。另一个可能的解释是：每当Lara通过一个记录点的时候，她的确定的粒子性发散成为各种可能性的波形叠加，然后在她通过迷题的瞬间，描述她的命运的各种可能性的波函数立刻坍缩成为一个确定的结果。</p>
<p>在现实世界中，只有微观物体，例如电子，才会体现出量子性。而宏观物体，比如你和我，则无法体会 Lara在游戏世界中所遭遇的那种现象，我们也无法去采访单个电子，询问它的切身体会。不过，通过对微观物体行为的统计，我们可以经由实验和理论推测间接得出它们的量子性质。让我们再一次用古墓丽影来分析一下这个问题。设想在古墓丽影中并非只有Lara一个主人公，而有很多角色可以使用。他们都像Lara 一样喜欢冒险。我假设，在游戏世界中也有一个科学家——就让我们叫她Jacqueline——专门研究这些冒险者的行为。但是她不会亲自去体验在古墓中探险活动，她甚至也不跟这些冒险者有任何接触。每一座古墓只有一个冒险者进入，无论这个冒险者死掉或是活着完成探索，都不会有其他冒险者再进入这座古墓。</p>
<p>Jacqueline 尝试考察她世界中的一些不同类型的古墓，并且收集了冒险者门在不同类型的古墓中幸存下来的数据。她发现，对于一个给定类型的古墓，都有一个确定的幸存概率 ——比如类型A的古墓所对应的幸存率固定为20%，而类型B则固定为50%——但是却无法确定，一个给定的冒险者在一个给定的古墓中是否能幸存下来。到目前为止，这些现象都可以通过传统理论来解释：每一座墓地中都有若干致命的陷阱，冒险者能否成功通过这些陷阱都由一个随机几率决定。</p>
<p>但是，Jacqueline此刻会遇到神秘的量子现象：不同类型古墓的幸存几率不外乎以下一些数字：</p>
<p>100%、50%、33.3%、25%、20%……</p>
<p>换句话说就是，每一座古墓的幸存几率固定为某个整数的倒数1/n。这种现象在传统理论中难以解释，因为就随机效应来说，幸存率的分布应该是一条连续的曲线。</p>
<p>这就是说，Lara为了能在某种类型的古墓中幸存下来，她需要叠加一定数量的自己的尸体来到达某个临界点。如果她无法跃迁到一定的干涉能级来抵达那个临界点，她就会在冒险中死掉。古墓的类型决定了具体需要多少尸体才能抵达临界点——比如A类型的墓地需要四具尸体。这样控制Lara的玩家就必须让Lara失败四次才能成功通过这个古墓。以Jacqueline的角度来看，Lara的幸存纪律就是20%。在承载着每一个可能性的游戏世界中，只有一个Lara进入了古墓中。但是Lara的幸存几率却是因为多个重叠世界相互干涉而决定的。</p>
<p>这种量子效应的一个类似的例子是，每一种原子只能发射出特定波长的可见光波，比如钠原子的光谱线就是黄色的，而氖原子的光谱线是蓝色的。在这些原子中的电子为了能发射出这样的光波，从某种意义上来说就是爬着它们自己的尸体抵达被激发的临界点。通常的解释是，在原子内部的电子以波的形式存在，并以某个固定的频率震荡。</p>
<p>最后我们再次利用古墓丽影来解释一下为什么微观物体能体现出量子效应而宏观物体却没有。我们假设古墓丽影是一个双人合作游戏，两个玩家分别控制两个人物（这两个人物就叫Lara和 Indiana），她们可以同时探索她们世界的不同部分。玩家可以保存和读取游戏。读取游戏的时候Lara和Indiana都会回到记录点的状态。</p>
<p>此时，游戏依然会有Lara和Indiana遭遇到她们自己尸体的奇怪现象。然而，我们假设，Lara和Indiana通过以下方式纠缠：如果Lara探索墓地A而Indiana探索墓地B，只有Lara和Indiana两人都在上一次记录游戏中分别死在墓地A和墓地B，那么Lara和Indiana才会各自碰到自己在上一次记录游戏中的尸体。如果在上一次记录游戏中，Lara死在墓地A而Indiana死在墓地C，那么她们这次就不会看到任何尸体。因为这种纠缠，量子效应减少了。Lara和Indiana如果同时在这个世界中进行不同的探险活动，将比Lara单独进行探险活动要遇到更少的尸体。如果同时有大量的冒险者分别进行探索，那么量子效应基本上为0。</p></blockquote>
<p>原文：</p>
<blockquote><p><span style="font-weight:bold;">Quantum mechanics and Tomb Raider</span></p>
<p>Monday, February 26th, 2007 in non-technical</p>
<p>This post is derived from an interesting conversation I had several years ago with my friend Jason Newquist on trying to find some intuitive analogies for the non-classical nature of quantum mechanics. It occurred to me that this type of informal, rambling discussion might actually be rather suited to the blog medium, so here goes nothing…</p>
<p>Quantum mechanics has a number of weird consequences, but here we are focusing on three (inter-related) ones:</p>
<p>1. Objects can behave both like particles (with definite position and a continuum of states) and waves (with indefinite position and (in confined situations) quantised states);<br />
2. The equations that govern quantum mechanics are deterministic, but the standard interpretation of the solutions of these equations is probabilistic; and<br />
3. If instead one applies the laws of quantum mechanics literally at the macroscopic scale, then the universe itself must split into the superposition of many distinct “worlds”.</p>
<p>In trying to come up with a classical conceptual model in which to capture these non-classical phenomena, we eventually hit upon using the idea of using computer games as an analogy. The exact choice of game is not terribly important, but let us pick Tomb Raider &#8211; a popular game from about ten years ago (back when I had the leisure to play these things), in which the heroine, Lara Croft, explores various tombs and dungeons, solving puzzles and dodging traps, in order to achieve some objective. It is quite common for Lara to die in the game, for instance by failing to evade one of the traps. (I should warn that this analogy will be rather violent on certain computer-generated characters.)</p>
<p>The thing about such games is that there is an “internal universe”, in which Lara interacts with other game elements, and occasionally is killed by them, and an “external universe”, where the computer or console running the game, together with the human who is playing the game, resides. While the game is running, these two universes run more or less in parallel; but there are certain operations, notably the “save game” and “restore game” features, which disrupt this relationship. These operations are utterly mundane to people like us who reside in the external universe, but it is an interesting thought experiment (which others have also proposed :-) ) to view them from the perspective of someone like Lara, in the internal universe. (I will eventually try to connect this with quantum mechanics, but please be patient for now.) Of course, for this we will need to presume that the Tomb Raider game is so advanced that Lara has levels of self-awareness and artificial intelligence which are comparable to our own.</p>
<p>Imagine first that Lara is about to navigate a tricky rolling boulder puzzle, when she hears a distant rumbling sound &#8211; the sound of her player saving her game to disk. From the perspective of the player, what happens next is the following: Lara navigates the boulder puzzle but fails, being killed in the process; then the player restores the game from the save point and then Lara successfully makes it through the boulder puzzle.</p>
<p>Now, how does the situation look from Lara’s point of view? At the save point, Lara’s reality diverges into a superposition of two non-interacting paths, one in which she dies in the boulder puzzle, and one in which she lives. (Yes, just like that cat.) Her future becomes indeterministic. If she had consulted with an infinitely prescient oracle before reaching the save point as to whether she would survive the boulder puzzle, the only truthful answer this oracle could give is “50% yes, and 50% no”.</p>
<p>This simple example shows that the internal game universe can become indeterministic, even though the external one might be utterly deterministic. However, this example does not fully capture the weirdness of quantum mechanics, because in each one of the two alternate states Lara could find herself in (surviving the puzzle or being killed by it), she does not experience any effects from the other state at all, and could reasonably assume that she lives in a classical, deterministic universe.</p>
<p>So, let’s make the game a bit more interesting. Let us assume that every time Lara dies, she leaves behind a corpse in that location for future incarnations of Lara to encounter. (This type of feature was actually present in another game I used to play, back in the day.) Then Lara will start noticing the following phenomenon (assuming she survives at all): whenever she navigates any particularly tricky puzzle, she usually encounters a number of corpses which look uncannily like herself. This disturbing phenomenon is difficult to explain to Lara using a purely classical deterministic model of reality; the simplest (and truest) explanation that one can give her is a “many-worlds” interpretation of reality, and that the various possible states of Lara’s existence have some partial interaction with each other. Another valid (and largely equivalent) explanation would be that every time Lara passes a save point to navigate some tricky puzzle, Lara’s “particle-like” existence splits into a “wave-like” superposition of Lara-states, which then evolves in a complicated way until the puzzle is resolved one way or the other, at which point Lara’s wave function “collapses” in a non-deterministic fashion back to a particle-like state (which is either entirely alive or entirely dead).</p>
<p>Now, in the real world, it is only microscopic objects such as electrons which seem to exhibit this quantum behaviour; macroscopic objects, such as you and I, do not directly experience the kind of phenomena that Lara does and we cannot interview individual electrons to find out their stories either. Nevertheless, by studying the statistical behaviour of large numbers of microscopic objects we can indirectly infer their quantum nature via experiment and theoretical reasoning. Let us again use the Tomb Raider analogy to illustrate this. Suppose now that Tomb Raider does not only have Lara as the main heroine, but in fact has a large number of playable characters, who explore a large number deadly tombs, often with fatal effect (and thus leading to multiple game restores). Let us suppose that inside this game universe there is also a scientist (let’s call her Jacqueline) who studies the behaviour of these adventurers going through the tombs, but does not experience the tombs directly, nor does she actually communicate with any of these adventurers. Each tomb is explored by only one adventurer; regardless of whether she lives or dies, the tomb is considered “used up”.</p>
<p>Jacqueline observes several types of trapped tombs in her world, and gathers data as to how likely an adventurer is to survive any given type of tomb. She learns that each type of tomb has a fixed survival rate &#8211; e.g. a tomb of type A has a 20% survival rate, while a tomb of type B has a 50% survival rate &#8211; but that it seems impossible to predict with any certainty whether any given adventurer will survive any given type of tomb. So far, this is something which could be explained classically; each tomb may have a certain number of lethal traps in them, and whether an adventurer survives these traps or not may entirely be due to random chance.</p>
<p>But then Jacqueline encounters a mysterious “quantisation” phenomenon: the survival rate for various tombs are always one of the following numbers:</p>
<p>100\%, 50\%, 33.3\ldots\%, 25\%, 20\%, \ldots;</p>
<p>in other words, the “frequency” of success for a tomb is always of the form 1/n for some integer n. This phenomenon would be difficult to explain in a classical universe, since the effects of random chance should be able to produce a continuum of survival probabilities.</p>
<p>Here’s what is going on. In order for Lara (say) to survive a tomb of a given type, she needs to stack together a certain number of corpses together to reach a certain switch; if she cannot attain that level of “constructive interference” to reach that switch, she dies. The type of tomb determines exactly how many corpses are needed &#8211; suppose for instance that a tomb of type A requires four corpses to be stacked together. Then the player who is playing Lara will have to let her die four times before she can successfully get through the tomb; and so from her perspective, Lara’s chances of survival are only 20%. In each possible state of the game universe, there is only one Lara which goes into the tomb, who either lives or dies; but her survival rate here is what it is because of her interaction with other states of Lara (which Jacqueline cannot see directly, as she does not actually enter the tomb).</p>
<p>A familiar example of this type of quantum effect is the fact that each atom (e.g. sodium or neon) can only emit certain wavelengths of light (which end up being quantised somewhat analogously to the survival probabilities above); for instance, sodium only emits yellow light, neon emits blue, and so forth. The electrons in such atoms, in order to emit such light, are in some sense clambering over skeletons of themselves to do so; the more commonly given explanation is that the electron is behaving like a wave within the confines of an atom, and thus can only oscillate at certain frequencies (similarly to how a plucked string of a musical instrument can only exhibit a certain set of wavelengths, which incidentally are also proportional to 1/n for integer n). Mathematically, this “quantisation” of frequency can be computed using the bound states of a Schrödinger operator with potential. (Now, I am not going to try to stretch the Tomb Raider analogy so far as to try to model the Schrödinger equation! In particular, the complex phase of the wave function &#8211; which is a fundamental feature of quantum mechanics &#8211; is not easy at all to motivate in a classical setting, despite some brave attempts.)</p>
<p>The last thing we’ll try to get the Tomb Raider analogy to explain is why microscopic objects (such as electrons) experience quantum effects, but macroscopic ones (or even mesoscopic ones, such as large molecues) seemingly do not. Let’s assume that Tomb Raider is now a two-player co-operative game, with two players playing two characters (let’s call them Lara and Indiana) as they simultaneously explore different parts of their world (e.g. via a split-screen display). The players can choose to save the entire game, and then restore back to that point; this resets both Lara and Indiana back to the state they were in at that save point.</p>
<p>Now, this game still has the strange feature of corpses of Lara and Indiana from previous games appearing in later ones. However, we assume that Lara and Indiana are entangled in the following way: if Lara is in tomb A and Indiana is in tomb B, then Lara and Indiana can each encounter corpses of their respective former selves, but only if both Lara and Indiana died in tombs A and B respectively in a single previous game. If in a previous game, Lara died in tomb A and Indiana died in tomb C, then this time round, Lara will not see any corpse (and of course, neither will Indiana). (This entanglement can be described a bit better by using tensor products: rather than saying that Lara died in A and Indiana died in B, one should instead think of \hbox{Lara } \otimes \hbox{ Indiana} dying in \left|A\right> \otimes \left|B\right>, which is a state which is orthogonal to \left|A\right> \otimes \left|C\right>.) With this type of entanglement, one can see that there is going to be significantly less “quantum weirdness” going on; Lara and Indiana, adventuring separately but simultaneously, are going to encounter far fewer corpses of themselves than Lara adventuring alone would. And if there were many many adventurers entangled together exploring simultaneously, the quantum effects drop to virtually nothing, and things now look classical unless the adventurers are somehow organised to “resonate” in a special way.</p>
<p>One might be able to use Tomb Raider to try to understand other unintuitive aspects of quantum mechanics, but I think I’ve already pushed the analogy far beyond the realm of reasonableness, and so I’ll stop here. :-)</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2007/03/03/tomb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>想买一个机器人……</title>
		<link>http://www.limboy.com/2007/02/04/robot/</link>
		<comments>http://www.limboy.com/2007/02/04/robot/#comments</comments>
		<pubDate>Sun, 04 Feb 2007 05:04:04 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[科技]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2007/02/04/robot/</guid>
		<description><![CDATA[最近很想搞一台可编程的机器人，不是大学机器人比赛做的那种用轮子、传感器和马达组装用单片机编程的东西（我大学的单片机课都翘掉了，考试前天才把课本看了一遍……），而是双足人形机器人……
“罗伯史宾”（Robosapien）现在似乎是最流行的，自从04年推出第一代智能仿生机器人，WowWee公司已经彻底击败SONY等老家伙，在消费机器人市场上几乎处于垄断地位，而且这家公司还是香港本地企业（不过总部在北美，WowWee的机器人获得过香港工商业奖: 科技成就大奖、2004度香港工业奖、消费产品设计大奖等），主设计师Mark Tilden曾效力美国太空总署，Robosapien在前几次E3上也被评为最酷的玩具。
转一段功能介绍：
Wowwee公司最新研发出了Robosapien V2。正如Mark Tilden，Robosapien的创造人先前承诺的，这个新版本的机器人将会有很多新功能，它的动作将会更加灵活，能进行语音交流，还有有趣的激光跟踪系统。
Robosapein V2 完全由遥控器控制，同时还能自己编制程序进行控制，还有新加入的自动漫步功能。它将把液压和生物机械控制的灵活性提高到一个新的高度。 Robosapien V2拥有全方位的移动能力，它那能够细微调节的手能够轻松的捡起，放下，甚至投掷物体。高度的灵活性甚至能够能够弯曲身体，扭腰。现在它已经能够完成坐下，弯腰，平躺和站立的动作。
Robosapein V2能够和环境交互，甚至能对您的命令作出反应，还能用“真实”的声音对您的命令作出反应。Robotsapien装备了红外雷达传感器，它那可以移动的蓝色眼睛现在能够检测障碍物，跟踪移动物体，还能抓取您亲手递过去的物品。
在传感器方面，Robosapein V2 装备了视觉颜色传感器，这使它能够辨识物体的颜色和您的肤色，当它见到您的时候，它会摇摆身体，还会试着和您握手。立体声检测系统能让它对环境噪音作出反应。装备的激光跟踪系统能让它跟踪地上的标线，还能沿着标线走。RobosapeinV2还有控制功能，能够控制它的即将发布的小兄弟， Roboraptor和Robopet。
基本参数：
身高：32英寸 约为81cm 此宣传资料为早期的,产品实际身高为56CM ,外包装高度为62CM.
基本动作：坐，躺，站立
基本功能：识别物体颜色和肤色，有语音对话功能，能够自动沿地上的路线走
传感器：红外视觉系统，激光跟踪系统，立体声检测系统，手和脚上的传感器。
以上是官方的资料！但本人实际使用心得如下：
1。识别物体与颜色和肤色功能，此功能须在光线强度好才能达成
2。有语音对话功能，Robosapein V2 自己会在不同的指令和动作时有自己的英语发音外，有方向声音反应功能
3。自动沿地上的路线走
优点：
Robosapein V2 机械原理做的是相当不错的，基本还算满意。
Robosapein V2 的头部跟踪系统，相当不错，准确的跟踪移动物体转动头部，并有反复的相应反应和发音
Robosapein V2 颜色识别，只能识别：红，绿，蓝，和皮肤色，准确率可以。
特点：
Robosapein V2 可以实现自行倒下，并起来的动作，这个动作做的非常理想！
Robosapein V2 能够打保龄球，这点我是测试成功过几次的，哈哈，在他前方三个头位远左右放三个红色的球柄，再拿绿色的球在离他眼20CM左右让他认，此时如果光线好，因可以实现他认识绿色，并向你要球，你给它时，它会低腰查看前方有无红色，当他看到红色时它会认为是球柄，随着啊呀一声，球就丢出去了
Robosapein V2 在前方扫描距中无任何物体时，他启动声音传感器，如果此时有刺耳的声音，他会有反应，如你在他左方，拍掌，他会确认你在左方，并走向此方向，不过它只知道三个方向，前，左，右；如果Robosapein V2 在启动声音传感器时，手上握着物品，他会确认声音方向后来到声音方，并把物品还给你！如果它连续听到声音，它会把手中的物品投出（此点设计本人非常满意！）
官方用户手册：http://www.wowwee.com/robosapien/onl&#8230;en_manual.html
视频介绍：http://www.robosapienv2online.com/watch.html
遥控器：

然则这种机器人的版本太多了，先不管那些迷你型暴龙型带轮子带屏幕的型号，只看淘宝上容易买到的，多数是简化版的ROBOACTOR，不能编程，价格低（只要300左右），最早的型号都是mada in china, 然则不同版本的功能（比如机器人的动作、配件的质量）可能相差很多，不好辨别……淘宝上还有一些JS故意把名字写作Robosapein，其实卖的是ROBOACTOR。Robosapein的功能更多，而且是可编程的，V2的功能应该有：
- Multiple levels of environmental interaction, with humans and objects
- Sight, sound and touch senses
- Humanoid body movements, including bending, sitting [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bp3.blogger.com/_FPgtQV0mSoM/RcWL5LIQ5VI/AAAAAAAAACE/P_G1i3yrhwA/s1600-h/legomindstorm.jpg"><img style="float:left; width:130px;margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_FPgtQV0mSoM/RcWL5LIQ5VI/AAAAAAAAACE/P_G1i3yrhwA/s200/legomindstorm.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5027578373385282898" /></a>最近很想搞一台可编程的机器人，不是大学机器人比赛做的那种用轮子、传感器和马达组装用单片机编程的东西（我大学的单片机课都翘掉了，考试前天才把课本看了一遍……），而是双足人形机器人……</p>
<p>“罗伯史宾”（Robosapien）现在似乎是最流行的，自从04年推出第一代智能仿生机器人，WowWee公司已经彻底击败SONY等老家伙，在消费机器人市场上几乎处于垄断地位，而且这家公司还是香港本地企业（不过总部在北美，WowWee的机器人获得过香港工商业奖: 科技成就大奖、2004度香港工业奖、消费产品设计大奖等），主设计师Mark Tilden曾效力美国太空总署，Robosapien在前几次E3上也被评为最酷的玩具。<span id="more-79"></span></p>
<p>转一段功能介绍：</p>
<blockquote><p><a  href="http://www.top10spielzeug.de/top10/downloads/robosapien.JPG"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_FPgtQV0mSoM/RcWEQLIQ5TI/AAAAAAAAABs/GyMaTpAEfHk/s320/robosapien.gif" alt="" id="BLOGGER_PHOTO_ID_5027569972429251890" border="0" /></a>Wowwee公司最新研发出了Robosapien V2。正如Mark Tilden，Robosapien的创造人先前承诺的，这个新版本的机器人将会有很多新功能，它的动作将会更加灵活，能进行语音交流，还有有趣的激光跟踪系统。<br />
Robosapein V2 完全由遥控器控制，同时还能自己编制程序进行控制，还有新加入的自动漫步功能。它将把液压和生物机械控制的灵活性提高到一个新的高度。 Robosapien V2拥有全方位的移动能力，它那能够细微调节的手能够轻松的捡起，放下，甚至投掷物体。高度的灵活性甚至能够能够弯曲身体，扭腰。现在它已经能够完成坐下，弯腰，平躺和站立的动作。<br />
Robosapein V2能够和环境交互，甚至能对您的命令作出反应，还能用“真实”的声音对您的命令作出反应。Robotsapien装备了红外雷达传感器，它那可以移动的蓝色眼睛现在能够检测障碍物，跟踪移动物体，还能抓取您亲手递过去的物品。<br />
在传感器方面，Robosapein V2 装备了视觉颜色传感器，这使它能够辨识物体的颜色和您的肤色，当它见到您的时候，它会摇摆身体，还会试着和您握手。立体声检测系统能让它对环境噪音作出反应。装备的激光跟踪系统能让它跟踪地上的标线，还能沿着标线走。RobosapeinV2还有控制功能，能够控制它的即将发布的小兄弟， Roboraptor和Robopet。<br />
基本参数：<br />
身高：32英寸 约为81cm 此宣传资料为早期的,产品实际身高为56CM ,外包装高度为62CM.<br />
基本动作：坐，躺，站立<br />
基本功能：识别物体颜色和肤色，有语音对话功能，能够自动沿地上的路线走<br />
传感器：红外视觉系统，激光跟踪系统，立体声检测系统，手和脚上的传感器。</p>
<p>以上是官方的资料！但本人实际使用心得如下：</p>
<p>1。识别物体与颜色和肤色功能，此功能须在光线强度好才能达成</p>
<p>2。有语音对话功能，Robosapein V2 自己会在不同的指令和动作时有自己的英语发音外，有方向声音反应功能</p>
<p>3。自动沿地上的路线走</p>
<p>优点：</p>
<p>Robosapein V2 机械原理做的是相当不错的，基本还算满意。</p>
<p>Robosapein V2 的头部跟踪系统，相当不错，准确的跟踪移动物体转动头部，并有反复的相应反应和发音</p>
<p>Robosapein V2 颜色识别，只能识别：红，绿，蓝，和皮肤色，准确率可以。</p>
<p>特点：</p>
<p>Robosapein V2 可以实现自行倒下，并起来的动作，这个动作做的非常理想！</p>
<p>Robosapein V2 能够打保龄球，这点我是测试成功过几次的，哈哈，在他前方三个头位远左右放三个红色的球柄，再拿绿色的球在离他眼20CM左右让他认，此时如果光线好，因可以实现他认识绿色，并向你要球，你给它时，它会低腰查看前方有无红色，当他看到红色时它会认为是球柄，随着啊呀一声，球就丢出去了</p>
<p>Robosapein V2 在前方扫描距中无任何物体时，他启动声音传感器，如果此时有刺耳的声音，他会有反应，如你在他左方，拍掌，他会确认你在左方，并走向此方向，不过它只知道三个方向，前，左，右；如果Robosapein V2 在启动声音传感器时，手上握着物品，他会确认声音方向后来到声音方，并把物品还给你！如果它连续听到声音，它会把手中的物品投出（此点设计本人非常满意！）</p></blockquote>
<p>官方用户手册：<a href="http://www.wowwee.com/robosapien/onl...en_manual.html">http://www.wowwee.com/robosapien/onl&#8230;en_manual.html</a></p>
<p>视频介绍：<a href="http://www.robosapienv2online.com/watch.html">http://www.robosapienv2online.com/watch.html</a></p>
<p>遥控器：<br />
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://robosapien.feon.de/robosapien-grafiken/robosapien-fernbedienung.gif"><img style="cursor: pointer;" src="http://robosapien.feon.de/robosapien-grafiken/robosapien-fernbedienung.gif" alt="" border="0" /></a></p>
<p>然则这种机器人的版本太多了，先不管那些<a href="http://www.roboticfan.com/Article/newproduct/200601/16_3.shtml">迷你型暴龙型带轮子带屏幕的型号</a>，只看淘宝上容易买到的，多数是简化版的ROBOACTOR，不能编程，价格低（只要300左右），最早的型号都是mada in china, 然则不同版本的功能（比如机器人的动作、配件的质量）可能相差很多，不好辨别……淘宝上还有一些<a href="http://auction1.taobao.com/auction/25-2516-50007115/item_detail-0db1-56cb65c6d1b4cfe0700e699d33588b6c.jhtml">JS故意把名字写作Robosapein</a>，其实卖的是ROBOACTOR。Robosapein的功能更多，而且是可编程的，V2的功能应该有：</p>
<p>- Multiple levels of environmental interaction, with humans and objects<br />
- Sight, sound and touch senses<br />
- Humanoid body movements, including bending, sitting and standing, lying down and getting up, dancing, waving, martial arts …<br />
- Speech: Responds verbally to environmental stimuli and to controller commands<br />
<span style="color: rgb(255, 0, 0);">- Color Vision System: Recognizes colors and skin tones</span><br />
- Stereo Sound Detection System: “Hears” and reacts to sounds<br />
<span style="color: rgb(255, 0, 0);">- IR Vision: Detects and avoids obstacles; tracks moving objects</span><br />
- True bi-pedal walking with multiple gaits<br />
- Precision gripping, articulated fingers<br />
- Realistic 2-axis turning head with animated LED eyes<br />
<span style="color: rgb(255, 0, 0);">- 100 pre-programmed functions</span><br />
<span style="color: rgb(255, 0, 0);">- 2 demonstration modes</span><br />
<span style="color: rgb(255, 0, 0);">- 6 programming modes</span><br />
<span style="color: rgb(255, 0, 0);">- Remote control, autonomous “free roam” and guard modes</span><br />
- Sleep and auto-shut off function<br />
- Age Grading: 8+</p>
<p>而这种型号的行货就要卖到2500左右了……不过据说水货最低可以799拿下……</p>
<p>而乐高的Mindstorm NXT似乎更华丽，自由组装，带USB和蓝牙可以连接电脑，有图形界面的编程软件，没有遥控器完全靠自己的感应器和程序指令来行动。不过能实现的动作不如Robosapein……<br />
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.tecnogadgets.com/fotografias/legomindstorm.jpg"><img style="margin: 0pt 0pt 10px 10px;  cursor: pointer; width: 320px;" src="http://www.tecnogadgets.com/fotografias/legomindstorm.jpg" alt="" border="0" /></a><br />
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://images.hobbytron.com/legonxt.jpg"><img style="cursor: pointer; width: 320px;" src="http://images.hobbytron.com/legonxt.jpg" alt="" border="0" /></a><br />
<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_FPgtQV0mSoM/RcWIYrIQ5UI/AAAAAAAAAB0/IEBv978aeIE/s1600-h/2006_nextosaurus_2.jpg"><img style="cursor: pointer;" src="http://bp1.blogger.com/_FPgtQV0mSoM/RcWIYrIQ5UI/AAAAAAAAAB0/IEBv978aeIE/s320/2006_nextosaurus_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5027574516504651074" border="0" /></a></p>
<p>固件代码还是开源的：<a href="http://mindstorms.lego.com/Overview/NXTreme.aspx">http://mindstorms.lego.com/Overview/NXTreme.aspx</a></p>
<p>主流编程环境都提供支持，比如：<br />
<a href="http://www.ni.com/labview/zhs/">NI LabVIEW</a>（专业的图形化自动控制系统编程软件）的<a href="http://www.ni.com/academic/mindstorms/">toolkit</a><br />
，<a href="https://msdn.microsoft.com/robotics/learn/tutorials/platforms/lego/ntx/default.aspx">Microsoft Robotics Studio的文档</a></p>
<p>淘宝上<a href="http://auction1.taobao.com/auction/0...4293f7cd.jhtml">卖的比Robosapein V2还贵</a>……转一段中文简介：</p>
<blockquote><p>LEGO® MINDSTORMS® NXT是lego最新推出的新一代机器人，您自己动手组建出一个最聪明，最强壮，最先进的机器人吧！只要30分钟就可完成！</p>
<p>新一代的LEGO MINDSTORMS® NXT机器人的脑袋里有一个强有力的32位微处理器及内存等，同时支持USB 2.0和蓝牙功能等。</p>
<p>机器人的操作原理基于超声波技术及声音，触感和感应器.</p>
<p>内有快速使用指南和易学软件及拼装步骤说明书。无论是专家或者初学者都能够机器人，车，动物。并且可控制他们。</p>
<p>编程软件可同时用于PC和MAC机，此外还支持南牙，用你的手机就可控制MINDSTORMS-NXT.三个互动式侍服发动机，内置旋转感应以精明的配盒操控。</p>
<p>共有577个零部件，其中包括强有力的32位NXT微处理器1个，内置角度传感器的交互式伺服马达3个，光电传感器1个，声音传感器1个，超声波传感器1个，触动传感器1个</p>
<p>l 微处理器有4个输入端，3个输出端和7个6-wire cords。</p>
<p>l 图形化编程软件，简单易学　</p>
<p>l 支持USB 2.0和蓝牙功能</p>
<p>l 编程软件可同时运用于PC机或MAC机</p>
<p>4个输入端，3个输出端和7个6－wire cords. (需要6节AA电池) 不附带在内。</p></blockquote>
<p>官方网站：<a href="http://mindstorms.lego.com/">http://mindstorms.lego.com/</a></p>
<p>找到一个讨论NXT的中文论坛：<a href="http://www.semia.com/bbs/index.asp?boardid=14&amp;page=">http://www.semia.com/bbs/index.asp?boardid=14</a></p>
<p>准备研究一下资料再考虑入手……</p>
<p><span style="font-weight:bold;">更新：</span></p>
<p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.roboticfan.com/Article/UploadFiles/200701/20070129213943154.jpg"><img style="float:left; margin:0 10px 10px 0px;cursor:pointer; cursor:hand;width: 220px;" src="http://www.roboticfan.com/Article/UploadFiles/200701/20070129213943154.jpg" border="0" alt="" /></a>刚刚看到本月《科学美国人》上刊登了<a href="http://www.sciam.com.cn/article.php?articleid=909">比尔·盖茨的野心宣言</a>——A Robot in Every Home（微软最近发布了Microsoft Robotics Studio，跟游戏开发平台<a href="http://www.cnblogs.com/jupiterxu/archive/2005/03/24/125090.html">XNA Game Studio Express</a>类似，是微软在其他行业克隆WINDOWS开发帝国的计划之一）, 预言机器人即将重复个人电脑崛起的道路。<a href="http://www.sciam.com/article.cfm?articleID=9312A198-E7F2-99DF-31DA639D6C4BA567">原文</a><br />
概要：</p>
<ul>
<li>分析了机器人发展的现状。</li>
<li>剖析了微软决定进军机器人市场的缘起和前期准备过程。</li>
<li>“硬件的困难并不是最关键的，真正能引爆普及革命的正是一个统一的软件平台。”</li>
<li>展示了机器人在未来可能发生的一系列惊人场景以及这个产业进入家庭所需面临的种种挑战与机遇。</li>
</ul>
<p>好棒，跟我的感觉一致。已经决定把机器人列入今年的购买计划了，目前更喜欢NXT……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2007/02/04/robot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用UBUNTU做WEB开发</title>
		<link>http://www.limboy.com/2006/12/24/webdev/</link>
		<comments>http://www.limboy.com/2006/12/24/webdev/#comments</comments>
		<pubDate>Sun, 24 Dec 2006 04:22:23 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[代码]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2006/12/24/webdev/</guid>
		<description><![CDATA[首先要提醒一下，AMAZON排名最高的JavaScript书籍：DOM Scripting已经出中文版了，中文名是《JavaScript DOM 编程艺术》，作者是webstandards.org的成员，如果你到如今还在抄袭网上各种教程和范例里那些低劣、过时的JS代码，还在参考那些源自MSDN的“DHTML手册”，建议你买这本书学习一下现代JS程序的设计原则和思考方式。这个星期我参与修改公司以前一个项目的网站，就检查出大量不规范、难以理解、不兼容FIREFOX的JS代码，很伤脑细胞……
在UBUNTU上做WEB开发，首先当然是要解决浏览器问题。上篇文章里提到了用FEBE快速安装FIREFOX的扩展，FIREFOX在WEB开发过程中的作用并不仅仅是查看效果的浏览器，它同时也是一个功能强大的调试器——前提是你安装了Firebug 1.0
过去一提到FIREFOX上的开发工具就有人会说Web Developer工具条，实际上Firebug的功能要强大的多，也更有针对性。不过以前的版本侧重于JS程序的调试和查错，掩盖了其他方面的应用，而前段时间发布的1.0 beta版则完全摆脱了这个束缚，即使不算是改头换面，功能也有质的飞跃，比如分析页面DOM，查看CSS的功能：
从下图中可以看到，现在Firebug能完整的显示DOM和源代码（包括所有属性和文本节点），很多细节都考虑的很周到，比如display:none的元素会显示为浅灰色，鼠标滑过图片地址和颜色代码时还会显示注释窗口。最重要的改进是：能分类列出某一元素的所有样式——包括从上级节点继承的样式，被覆盖的继承样式也会用划线标识出来，这项功能实用到极点了，可以大幅减少修改CSS花费的时间。Firebug的作者一定是对网站前端开发过程非常有经验的人。

在这个界面还可以直接修改代码观察效果
点击右栏里的layout标签会显示出一个图形化的框模型（按照《精通CSS》的译法，BOX叫框模型似乎比叫盒模型更贴切），元素每条边的padding、margin、border、坐标都一目了然，鼠标移到某一个条边上时，页面里还会显示标尺

主导航里多了一个NET标签，可以统计加载各种文件花费的时间，包括XMLHttprequest

JS的调试也更方便，控制台里可以写多行代码，还可以在源代码里设置断点。
不管是网页设计人员还是程序员，只要涉及到WEB前端，这个扩展都应该是必备的。虽然目前是BETA版，但新功能都没有任何问题，使用了一个月左右也没发现会引起浏览器不稳定，何况1.0还加入了一个新功能，可以在日常上网中屏蔽FIREBUG，避免占用资源。
当然，FIREFOX再强大，也不能不装IE，毕竟它还有80％以上的市场占有率以及一大堆莫名其妙的BUG，谁也不敢不在IE上测试就把网站发布出去。要在LINUX上安装IE，首先请感谢这位巴西的21岁热血青年，他给我们贡献了IEs4Linux，这名字里的4当然是指“FOR”而不是版本号，实际上它会给你装3个版本！从IE6到IE5。这东西一出来就被翻译成好几种语言，所以相关介绍请看官方的中文说明，安装这个必须要有WINE的支持，这是LINUX上一款很重要的虚拟软件，用它你可以安装很多WINDOWS里的软件，甚至包括WOW
在ubuntu上安装这些软件很简单，都可以直接用APT获取：
sudo apt-get install wine cabextract
然后下载IEs4Linux的压缩包，解压、安装……
BTW，除了WEB开发，还有一种情况下会需要用IE——使用网上银行，因为国内的银行都是采用ActiveX和微软直接提供的底层开发技术，不过这里有一个方法可以让FIREFOX支持网上银行。
至于其他浏览器，opera虽然不是开源的，但也被加入到ubuntu的源里了，可以直接用APT下载……不过，大概没有多少WEB开发者会为这个东西的兼容性浪费时间罢，反正据我了解opera的用户也不在乎这个……至于苹果的Safari，我不知道有没有LINUX版本，但Safari的WebKit内核是从KDE项目的KHTML及KJS衍生而来的，也就是说KDE的浏览器Konqueror的性能大概跟Safari差不多，用ubuntu当然可以直接安装Konqueror（APT管理工具里每个软件类别都包括一大堆K字开头的软件……很让人困扰，另外，ubuntu有专门的KDE桌面版本，叫Kubuntu）
浏览器的问题解决了，接下来就是程序的运行环境。就在前天，系统刚好就提示更新了一大堆带“MONO”的文件，MONO就是把微软.net+C#移植到开源平台上的项目，最早是由Ximian（这家公司跟UBUNTU采用的桌面系统GNOME有很大关系，对这段历史感兴趣可以看看这篇文章：《GNOME与KDE的战争》）主持开发的，FC6和SUSE  Linux里都安装了，习惯用.net和C#的人可以试试这个，虽然我不认为习惯用.net的人会去安装UBUNTU……
不过最近Ximian的母公司Novell跟微软达成合作协议，似乎承认MONO包含了微软的专利技术，现在其他LINUX厂商对MONO都有顾虑了……似乎没什么前途……我要说，在LINUX上开发还是老老实实用开源的罢，珍珠、蟒蛇、红宝石、爪哇……都是很强很有前途的高级语言亚，微软的技术总让人觉得不稳定，而令上的开源语言在这么多年里都没有过时，比如Python，虽然在国内不流行，但Google招聘时却很重视这个……
反正我首先装的是JDK，用APT可以直接安装JDK或JRE，但我在安装到java5-bin时会报错，似乎是很少见的问题，我只好直接在SUN的网站上下载了一个JDK安装包（sun-j2sdk1.5_1.5.0+update09_i386.deb），安装成功……
然后自然要配置一套大名鼎鼎的LAMP，也就是Linux+Apache+Mysql+PHP，详细的教程已经很多了，没什么好说的，参考《打造Ubuntu下的SLAMP》
其他的环境，比如ruby，我还没有装，因为暂时用不上……
最后就是开发工具了，建议直接装Eclipse，APT里就有，虽然Linux里也有替代Dreamweaver的开源软件：Bluefish和NVU，后者是mozilla的产品。不过它们的功能都很有限，就算是Dreamweaver我也有很久没用过了，在公司里只装了2个软件：Aptana和Editplus，一个重量级一个轻量级……
Editplus的替代品很容易找，只要是支持语法高亮和标签页的文本编辑器就行了。
而Aptana是目前我觉得最有前途的WEB开发工具，功能非常强大，针对性很强，包括代码自动补全、代码纲要（Outliner）、语法检查、注释、浏览器兼容信息、CSS校验、JS控制台、导入／管理JS框架等等。虽然体积庞大，有点占资源，但它提供的帮助也能节省很多时间。用一个基于Eclipse开发的IDE来写网页并不是杀鸡用牛刀，因为现在的网站对javascript和前端开发的要求越来越高了，就算只是写CSS的工具，我也没看到有胜过Aptana的——前提是你不依赖那些对话框来编辑CSS
这里推荐用插件形式来安装Aptana，这样可以方便扩展功能，比如对PHP、Python的支持，Linux上的IDE本来就不多。而且直接安装Aptana的时候会自动装JRE，可能会引起冲突。先用APT或“新立得”安装Eclipse，在Eclipse的帮助菜单里找到Software Updates，选择Find and Install，在对话框里选第2项Search for new features to install，然后新建New Remote Site，名字Aptana，地址填“http://update.aptana.com/install/”，添加这个站点后再点Finish，Eclipse就开始自动连接站点寻找Aptana插件，检测到之后点NEXT安装就行了。

从图中可以看到，软件的UI有些偏大，字体也不好看，据说升级到JDK6以后会有很大改观：
对于 Linux 用户来说，Java 1.6 有两项新特性特别引人注目：一是支持 GTK 图形主题，这样 Java 应用程序的外观与系统的默认外观看起来很一致；二是内嵌新的字体渲染引擎会应用系统默认的字体配置，使 Java 应用程序的效果看起来很好，如果是 LCD 屏幕，则更佳。
最后的问题就是改图，由于Linux上没有adobe的产品，只能用GIMP，这东西功能很强，而且有大量资源的支持，但我还没习惯…………
]]></description>
			<content:encoded><![CDATA[<p><a href="http://bp2.blogger.com/_FPgtQV0mSoM/RY2mxhh9bwI/AAAAAAAAAA8/wrEIFNrzZ-k/s1600-h/logo-wiki.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_FPgtQV0mSoM/RY2mxhh9bwI/AAAAAAAAAA8/wrEIFNrzZ-k/s200/logo-wiki.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5011845330077839106" /></a>首先要提醒一下，AMAZON排名最高的JavaScript书籍：DOM Scripting已经出中文版了，中文名是<a href="http://www.dearbook.com.cn/book/111271">《JavaScript DOM 编程艺术》</a>，作者是<a href="http://webstandards.org/">webstandards.org</a>的成员，如果你到如今还在抄袭网上各种教程和范例里那些低劣、过时的JS代码，还在参考那些源自MSDN的“DHTML手册”，建议你买这本书学习一下现代JS程序的设计原则和思考方式。这个星期我参与修改公司以前一个项目的网站，就检查出大量不规范、难以理解、不兼容FIREFOX的JS代码，很伤脑细胞……</p>
<p>在UBUNTU上做WEB开发，首先当然是要解决浏览器问题。上篇文章里提到了用FEBE快速安装FIREFOX的扩展，FIREFOX在WEB开发过程中的作用并不仅仅是查看效果的浏览器，它同时也是一个功能强大的调试器——前提是你安装了<a href="http://getfirebug.com/">Firebug 1.0</a><span id="more-74"></span></p>
<p>过去一提到FIREFOX上的开发工具就有人会说Web Developer工具条，实际上Firebug的功能要强大的多，也更有针对性。不过以前的版本侧重于JS程序的调试和查错，掩盖了其他方面的应用，而前段时间发布的1.0 beta版则完全摆脱了这个束缚，即使不算是改头换面，功能也有质的飞跃，比如分析页面DOM，查看CSS的功能：</p>
<p>从下图中可以看到，现在Firebug能完整的显示DOM和源代码（包括所有属性和文本节点），很多细节都考虑的很周到，比如display:none的元素会显示为浅灰色，鼠标滑过图片地址和颜色代码时还会显示注释窗口。最重要的改进是：能分类列出某一元素的所有样式——包括从上级节点继承的样式，被覆盖的继承样式也会用划线标识出来，这项功能实用到极点了，可以大幅减少修改CSS花费的时间。Firebug的作者一定是对网站前端开发过程非常有经验的人。</p>
<p><a href="http://www.yupoo.com/photos/view?id=ff8080810fa2fd16010fb0b86be31532" title=""><img src="http://photo4.yupoo.com/20061224/031010_1604916913.jpg" width="420"  border="0" /></a></p>
<p>在这个界面还可以直接修改代码观察效果</p>
<p>点击右栏里的layout标签会显示出一个图形化的框模型（按照《精通CSS》的译法，BOX叫框模型似乎比叫盒模型更贴切），元素每条边的padding、margin、border、坐标都一目了然，鼠标移到某一个条边上时，页面里还会显示标尺</p>
<p><a href="http://www.yupoo.com/photos/view?id=ff8080810fa2fd16010fb0b8760d1533" ><img src="http://photo4.yupoo.com/20061224/031013_984557002.jpg" width="420"  border="0" /></a></p>
<p>主导航里多了一个NET标签，可以统计加载各种文件花费的时间，包括XMLHttprequest</p>
<p><a href="http://www.yupoo.com/photos/view?id=ff8080810fa2fd16010fb0b87fed1534"><img src="http://photo4.yupoo.com/20061224/031016_1107376611.jpg" width="420" border="0" /></a></p>
<p>JS的调试也更方便，控制台里可以写多行代码，还可以在源代码里设置断点。</p>
<p>不管是网页设计人员还是程序员，只要涉及到WEB前端，这个扩展都应该是必备的。虽然目前是BETA版，但新功能都没有任何问题，使用了一个月左右也没发现会引起浏览器不稳定，何况1.0还加入了一个新功能，可以在日常上网中屏蔽FIREBUG，避免占用资源。</p>
<p><img src="http://www.tatanka.com.br/ies4linux/wiki/images/0/06/SergioLopes.jpg" style="float:left;margin:0 10px 10px 0px;"/>当然，FIREFOX再强大，也不能不装IE，毕竟它还有80％以上的市场占有率以及一大堆莫名其妙的BUG，谁也不敢不在IE上测试就把网站发布出去。要在LINUX上安装IE，首先请感谢这位<a href="http://www.tatanka.com.br/ies4linux/page/User:S%C3%A9rgio_Lopes">巴西的21岁热血青年</a>，他给我们贡献了IEs4Linux，这名字里的4当然是指“FOR”而不是版本号，实际上它会给你装3个版本！从IE6到IE5。这东西一出来就被翻译成好几种语言，所以相关介绍请看<a href="http://www.tatanka.com.br/ies4linux/index-zh.html">官方的中文说明</a>，安装这个必须要有WINE的支持，这是LINUX上一款很重要的虚拟软件，用它你可以安装很多WINDOWS里的软件，甚至<a href="http://gentoo-wiki.com/HOWTO_Install_and_update_World_Of_Warcraft_with_wine">包括WOW</a></p>
<p>在ubuntu上安装这些软件很简单，都可以直接用APT获取：<br />
sudo apt-get install wine cabextract<br />
然后下载IEs4Linux的压缩包，解压、安装……</p>
<p>BTW，除了WEB开发，还有一种情况下会需要用IE——使用网上银行，因为国内的银行都是采用ActiveX和微软直接提供的底层开发技术，不过这里有一个方法可以<a href="http://www.lslnet.com/linux/docs/linux-5361.htm">让FIREFOX支持网上银行</a>。</p>
<p>至于其他浏览器，opera虽然不是开源的，但也被加入到ubuntu的源里了，可以直接用APT下载……不过，大概没有多少WEB开发者会为这个东西的兼容性浪费时间罢，反正据我了解opera的用户也不在乎这个……至于苹果的Safari，我不知道有没有LINUX版本，但Safari的WebKit内核是从KDE项目的KHTML及KJS衍生而来的，也就是说KDE的浏览器Konqueror的性能大概跟Safari差不多，用ubuntu当然可以直接安装Konqueror（APT管理工具里每个软件类别都包括一大堆K字开头的软件……很让人困扰，另外，ubuntu有专门的KDE桌面版本，叫Kubuntu）</p>
<p>浏览器的问题解决了，接下来就是程序的运行环境。就在前天，系统刚好就提示更新了一大堆带“MONO”的文件，MONO就是把微软.net+C#移植到开源平台上的项目，最早是由Ximian（这家公司跟UBUNTU采用的桌面系统GNOME有很大关系，对这段历史感兴趣可以看看这篇文章：<a href="http://www1.pcpro.com.cn/topic.php?id=8222">《GNOME与KDE的战争》</a>）主持开发的，FC6和SUSE  Linux里都安装了，习惯用.net和C#的人可以试试这个，虽然我不认为习惯用.net的人会去安装UBUNTU……</p>
<p>不过最近Ximian的母公司<a href="http://www.google.com/search?hl=zh-CN&#038;newwindow=1&#038;client=firefox&#038;rls=com.ubuntu%3Azh-CN%3Aofficial&#038;q=Novell+%E5%BE%AE%E8%BD%AF&#038;btnG=%E6%90%9C%E7%B4%A2&#038;lr=lang_zh-CN%7Clang_zh-TW">Novell跟微软达成合作协议</a>，似乎承认MONO包含了微软的专利技术，现在其他LINUX厂商对MONO都有顾虑了……似乎没什么前途……我要说，在LINUX上开发还是老老实实用开源的罢，珍珠、蟒蛇、红宝石、爪哇……都是很强很有前途的高级语言亚，微软的技术<a href="http://www.cnblogs.com/dflying/archive/2006/10/20/535210.aspx">总让人觉得不稳定</a>，而令上的开源语言在这么多年里都没有过时，比如Python，虽然在国内不流行，但Google招聘时却很重视这个……</p>
<p>反正我首先装的是JDK，用APT可以直接安装JDK或JRE，但我在安装到java5-bin时会报错，似乎是很少见的问题，我只好直接在SUN的网站上下载了一个JDK安装包（sun-j2sdk1.5_1.5.0+update09_i386.deb），安装成功……</p>
<p>然后自然要配置一套大名鼎鼎的LAMP，也就是Linux+Apache+Mysql+PHP，详细的教程已经很多了，没什么好说的，参考<a href="http://forum.ubuntu.org.cn/viewtopic.php?t=1320">《打造Ubuntu下的SLAMP》</a></p>
<p>其他的环境，比如ruby，我还没有装，因为暂时用不上……</p>
<p>最后就是开发工具了，建议直接装Eclipse，APT里就有，虽然Linux里也有替代Dreamweaver的开源软件：Bluefish和NVU，后者是mozilla的产品。不过它们的功能都很有限，就算是Dreamweaver我也有很久没用过了，在公司里只装了2个软件：Aptana和Editplus，一个重量级一个轻量级……</p>
<p>Editplus的替代品很容易找，只要是支持语法高亮和标签页的文本编辑器就行了。</p>
<p>而Aptana是目前我觉得最有前途的WEB开发工具，功能非常强大，针对性很强，包括代码自动补全、代码纲要（Outliner）、语法检查、注释、浏览器兼容信息、CSS校验、JS控制台、导入／管理JS框架等等。虽然体积庞大，有点占资源，但它提供的帮助也能节省很多时间。用一个基于Eclipse开发的IDE来写网页并不是杀鸡用牛刀，因为现在的网站对javascript和前端开发的要求越来越高了，就算只是写CSS的工具，我也没看到有胜过Aptana的——前提是你不依赖那些对话框来编辑CSS</p>
<p>这里推荐用插件形式来安装Aptana，这样可以方便扩展功能，比如对PHP、Python的支持，Linux上的IDE本来就不多。而且直接安装Aptana的时候会自动装JRE，可能会引起冲突。先用APT或“新立得”安装Eclipse，在Eclipse的帮助菜单里找到Software Updates，选择Find and Install，在对话框里选第2项Search for new features to install，然后新建New Remote Site，名字Aptana，地址填“http://update.aptana.com/install/”，添加这个站点后再点Finish，Eclipse就开始自动连接站点寻找Aptana插件，检测到之后点NEXT安装就行了。<br />
<a href="http://www.yupoo.com/photos/view?id=ff8080810fa2fd16010fb1486b0f1c17" title=""><img src="http://photo4.yupoo.com/20061224/054727_658538216.jpg" width="420"  border="0" /></a></p>
<p>从图中可以看到，软件的UI有些偏大，字体也不好看，<a href="http://linuxtoy.org/archives/install_jdk_6_in_ubuntu.html">据说</a>升级到JDK6以后会有很大改观：</p>
<blockquote><p>对于 Linux 用户来说，Java 1.6 有两项新特性特别引人注目：一是支持 GTK 图形主题，这样 Java 应用程序的外观与系统的默认外观看起来很一致；二是内嵌新的字体渲染引擎会应用系统默认的字体配置，使 Java 应用程序的效果看起来很好，如果是 LCD 屏幕，则更佳。</p></blockquote>
<p>最后的问题就是改图，由于Linux上没有adobe的产品，只能用<a href="http://docs.gimp.org/zh_CN/introduction.html#introduction-gimp">GIMP</a>，这东西功能很强，而且有大量资源的支持，但我还没习惯…………</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2006/12/24/webdev/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>继续总结Ubuntu的使用心得</title>
		<link>http://www.limboy.com/2006/12/23/ubuntu/</link>
		<comments>http://www.limboy.com/2006/12/23/ubuntu/#comments</comments>
		<pubDate>Sat, 23 Dec 2006 03:37:15 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2006/12/23/ubuntu/</guid>
		<description><![CDATA[首先SHOW一下现在的桌面&#8230;
日本OTAKU做的桌面背景果然最华丽！这张图最艺术的地方是把UBUNTU象征皮肤的土黄色系改成了橙色系，感觉很舒服，虽然土黄色也很有新意……
上次提到过GRUB，今天参考这个帖子把它的启动画面也改了，过程很简单，帖子里有一些疏漏的地方我补充在后面了。把启动画面改成图形界面，主要是为了显示自己做的一张带警告语的图片，当有七大姑八大姨的儿子侄子孙子来我家里玩而我又刚好不在家的时候，至少我可以在他们准备瞎掰机器之前吓唬一下他们……这不是小心眼，要知道，这些人曾经让我付出过惨重的代价：小时候积攒的一柜子军事模型全都没了，唯一留下的纪念品是一架米格25的翅膀、没履带没炮管的SU100。今年过年时还损失了哈里波特的4、5、6！……

刚安装好的UBUNTU，有一些初始设置需要调整，首先是显卡的支持，一般的显卡用默认驱动就够了，比如公司里的INTEL板载显卡。但我的X1600有些问题，刷新率很低，如果你也是用ATI显卡，请用这个方法检查驱动支持是否到位；
在终端里输入fglrxinfo，结果里有OpenGL vendor string: ATI Technologies Inc.说明你已经正确安装了官方驱动，如果是OpenGL vendor string: Mesa project: www.mesa3d.org，赶快重装罢……
Linux里用的ATI驱动一般是fglrx，ubuntu6.10里的安装有一些变化，请按照这篇帖子里的步骤来做。需要注意的是；
1、这些文章里面的命令行代码你不用自己敲，都是可以直接复制粘贴到终端里面的，在终端里复制按ctrl+shift+C，粘贴用ctrl+shift+V，另外当你输入较长的文件名或目录名的时候，可以只写前几个字符然后按TAB，系统会自动补全。
2、做到这一步时: sudo dpkg-reconfigure xserver-xorg ,会显示一个字符的配置界面，除了最开始要选择“fglrx”而不是默认的“ati”，其他设置全部点默认的选项就可以了，不要自己乱改，特别是扫描频率，有时候稍微设高一点就进不了桌面。
3、我在安装驱动后刷新率虽然正常了，但是能设置的分辨率却很少，比如没有1280X1024的选项，需要修改配置文件；
sudo gedit /etc/X11/xorg.conf
这里的gedit是一个GNOME自带的文本编辑器，相当于增强版的记事本，还支持标签，很好用，如果你在某篇不厚道的新手文档或书籍里看到编辑文本的命令是VI，比如sudo vi /etc/X11/xorg.conf，记得把VI改成gedit——因为新手不可能在短时间内习惯VI的操作。
编辑xorg.conf 之前一定要记得先备份，修改其他任何系统文件前也都要这样做，没有这个习惯的话，出错后是很难恢复的，备份的命令；
cp /etc/X11/xorg.conf /etc/X11/xorg.conf-backup
cp就是复制，备份文件的名字可以随便写，在LINUX里保存文本的时候可以随便起后缀名（也可以不写），系统在打开文件时并不是通过后缀名来判断启动方式，而是根据文档开头的内容。
打开xorg.conf后，可以看到里面都是跟显示有关的设置，找到Section &#8220;Screen&#8221;，在下面的分辨率里加入你想要的，比如Modes  &#8220;1280&#215;1024&#8243; &#8220;1024&#215;768&#8243; &#8220;800&#215;600&#8243; &#8220;640&#215;480&#8243;，写在最前面的是默认设置，如果重启后发现分辨率提高了，却不能在一个屏幕内显示(要拖动画面才能看到桌面的地方部分)，那么可以试试在xorg.conf里搜索“HorizSync 28-60”，把最高的数值改成80，我就是这样修改后才正常显示1280&#215;1024画面的……
如果重启后无法再进入桌面，可以在最初的GRUB界面下选择第2项（按E是编辑，按B是运行），会进入单用户模式的字符界面，把刚才备份的文件覆盖回来就行了；cp /etc/X11/xorg.conf-backup /etc/X11/xorg.conf -i

改好了显卡，接下来看着不爽的就是字体，我最开始是参考这篇文章把字体改成WINDOWS里的效果，因为做WEB开发必须考虑大多数用户的体验&#8230;&#8230;字体的设置最好也跟大众一样。这里需要注意的是，无论添加／修改了什么字体文件，都一定要执行刷新缓存的命令：
sudo mkfontscale
sudo mkfontdir
sudo fc-cache
这样设置的效果虽然也不错，但是对于高分辨率LCD的用户来说，似乎达不到微软ClearType的效果，所以我还是忍不住改装了微软的雅黑字体，参考这篇文章，雅黑字体的下载建议去远景论坛找，并不一定要像帖子作者说的那样要下载122M，只要保证有这两个：MSYH.TTF、MSYHBD.TTF，最好也装上Segoe系列，Segoe UI是微软专门为软件界面做的字体，替代传统的大河马(Tahoma)，虽然有抄袭的嫌疑，但效果还是很棒的。注意如果你之前在字体设置里，把渲染选细节中的“平滑”设置成了“无”，一定要改回来，否则达不到ClearType的效果
然后是视频播放的问题，系统默认已经安装了一些软件，但不支持播放DVDRIP、RMVB、WMV。必须安装w32codecs、xine，如果想要全能的播放软件，可以装mplayer或VLC Media Player ，这些都可以在软件包管理工具里搜到，参考这篇文章，注意在安装w32codecs之前最好先保证成功安装了JRE（JAVA运行环境）。
我还安装了一个GTKPOD，增加了MP4支持，而且可以管理IPOD。UBUNTU默认的Rhythmbox是一个功能很强很像iTunes的软件，但很遗憾，我使用中遇到很多问题，特别是导入目录和播放MP3时会出错，暂时还没解决……所以还是用XMMS（相当于WINMAP）……
在上网方面，UBUNTU默认安装了FIREFOX2.0，它的用户设置备份，大家应该都有经验，不过为了快速把WINDOWS里的设置COPY到LINUX里来（特别是我还装了60多个扩展），建议装一个FEBE，在WIN里用它把扩展、COOKIE、历史之类的东西都备份到一个目录里，然后给LINUX的FIREFOX安装这个扩展，把默认备份目录设置成刚才存放备份文件的目录，然后逐一恢复，注意千万不要恢复prefs{default}.js（个人设置），因为里面可能包含很多WINDOWS里的路径，会引发很多错误。我在恢复书签之后没看到任何变化，如果你也遇到这种情况，可以直接在这个目录里找bookmarks.html文件：
/WINDOW目录/Documents and Settings/你的用户名/Application Data/Mozilla/Firefox/Profiles/XXXXXX/
把它覆盖到LINUX的FIREFOX设置目录里：
/home/用户名/.mozilla/firefox/XXXXX/
/home/用户名/里存放的都是你的个人设置和文档，其中以&#8221;.&#8221;开头的目录都是默认隐藏的，在菜单栏的“首选项”里里可以设置显示所有隐藏文件（UBUNTU的软件界面里有一个共同特征：“编辑”下面都有一个“首选项”，相当于WIN软件里的“设置”）

FIREFOX在UBUNTU里速度超快！我装了68个扩展，启动时也只需要等几秒，内存占用也比WINDOWS少（而且LINUX里内存占用率高其实是无所谓的）。果然IE在WINDOWS里还是有主场优势的呀……
推荐给FIREFOX装上两个扩展：FireFTP， ChatZilla，这样就不用另外装FTP工具和IRC软件了，后者的功能非常强，不亚于独立软件……
其他的设置都很简单了，比如安装RAR解压软件，安装FLASH PLAYER，官方的中文文档里应该都有，没找到的话也可以去ubuntu.org.cn的论坛看看，ubuntu之所以比FC、SUSE更吸引人，一个很重要的原因就是它的社区人气很高，相关的文档也很齐全，有这样的优势还不利用就太浪费了!
]]></description>
			<content:encoded><![CDATA[<p><a href="http://photo4.yupoo.com/20061223/202017_852633335_gxumfosd.jpg" title=""><img src="http://photo4.yupoo.com/20061223/202017_852633335_m.jpg" style="margin: 0pt 5px 0pt 0px; float: left;width:180px;" border="0"  /></a>首先SHOW一下现在的桌面&#8230;<br />
日本OTAKU做的桌面背景果然最华丽！这张图最艺术的地方是把UBUNTU象征皮肤的土黄色系改成了橙色系，感觉很舒服，虽然土黄色也很有新意……</p>
<p>上次提到过GRUB，今天参考<a href="http://forum.ubuntu.org.cn/viewtopic.php?t=27997">这个帖子</a>把它的启动画面也改了，过程很简单，帖子里有一些疏漏的地方<a href="http://forum.ubuntu.org.cn/viewtopic.php?t=27997&#038;postdays=0&amp;postorder=asc&#038;start=60#176651">我补充在后面</a>了。把启动画面改成图形界面，主要是为了显示自己做的一张带警告语的图片，当有七大姑八大姨的儿子侄子孙子来我家里玩而我又刚好不在家的时候，至少我可以在他们准备瞎掰机器之前吓唬一下他们……<span id="more-72"></span>这不是小心眼，要知道，这些人曾经让我付出过惨重的代价：小时候积攒的一柜子军事模型全都没了，唯一留下的纪念品是一架米格25的翅膀、没履带没炮管的SU100。今年过年时还损失了哈里波特的4、5、6！……<br />
<a href="http://bp3.blogger.com/_FPgtQV0mSoM/RY040xh9bvI/AAAAAAAAAAw/2hcCA8W92LQ/s1600-h/t_1021_131925_15464.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_FPgtQV0mSoM/RY040xh9bvI/AAAAAAAAAAw/2hcCA8W92LQ/s200/t_1021_131925_15464.jpg" alt="" id="BLOGGER_PHOTO_ID_5011724439633358578" border="0" /></a></p>
<p>刚安装好的UBUNTU，有一些初始设置需要调整，首先是显卡的支持，一般的显卡用默认驱动就够了，比如公司里的INTEL板载显卡。但我的X1600有些问题，刷新率很低，如果你也是用ATI显卡，请用这个方法检查驱动支持是否到位；</p>
<p>在终端里输入fglrxinfo，结果里有OpenGL vendor string: ATI Technologies Inc.说明你已经正确安装了官方驱动，如果是OpenGL vendor string: Mesa project: www.mesa3d.org，赶快重装罢……</p>
<p>Linux里用的ATI驱动一般是fglrx，ubuntu6.10里的安装有一些变化，请按照<a href="http://forum.ubuntu.org.cn/viewtopic.php?t=26188&amp;highlight=6.10++ati+%E9%A9%B1%E5%8A%A8">这篇帖子</a>里的步骤来做。需要注意的是；</p>
<p>1、这些文章里面的命令行代码你不用自己敲，都是可以直接复制粘贴到终端里面的，在终端里复制按ctrl+shift+C，粘贴用ctrl+shift+V，另外当你输入较长的文件名或目录名的时候，可以只写前几个字符然后按TAB，系统会自动补全。</p>
<p>2、做到这一步时: sudo dpkg-reconfigure xserver-xorg ,会显示一个字符的配置界面，除了最开始要选择“fglrx”而不是默认的“ati”，其他设置全部点默认的选项就可以了，不要自己乱改，特别是扫描频率，有时候稍微设高一点就进不了桌面。</p>
<p>3、我在安装驱动后刷新率虽然正常了，但是能设置的分辨率却很少，比如没有1280X1024的选项，需要修改配置文件；<br />
sudo gedit /etc/X11/xorg.conf<br />
这里的gedit是一个GNOME自带的文本编辑器，相当于增强版的记事本，还支持标签，很好用，如果你在某篇不厚道的新手文档或书籍里看到编辑文本的命令是VI，比如sudo vi /etc/X11/xorg.conf，记得把VI改成gedit——因为新手不可能在短时间内习惯<a href="http://vcd.gro.clinux.org/doc/usr_02.html#02.1">VI的操作</a>。</p>
<p>编辑xorg.conf 之前一定要记得先备份，修改其他任何系统文件前也都要这样做，没有这个习惯的话，出错后是很难恢复的，备份的命令；<br />
cp /etc/X11/xorg.conf /etc/X11/xorg.conf-backup<br />
cp就是复制，备份文件的名字可以随便写，在LINUX里保存文本的时候可以随便起后缀名（也可以不写），系统在打开文件时并不是通过后缀名来判断启动方式，而是根据文档开头的内容。</p>
<p>打开xorg.conf后，可以看到里面都是跟显示有关的设置，找到Section &#8220;Screen&#8221;，在下面的分辨率里加入你想要的，比如Modes  &#8220;1280&#215;1024&#8243; &#8220;1024&#215;768&#8243; &#8220;800&#215;600&#8243; &#8220;640&#215;480&#8243;，写在最前面的是默认设置，如果重启后发现分辨率提高了，却不能在一个屏幕内显示(要拖动画面才能看到桌面的地方部分)，那么可以试试在xorg.conf里搜索“HorizSync 28-60”，把最高的数值改成80，我就是这样修改后才正常显示1280&#215;1024画面的……<br />
如果重启后无法再进入桌面，可以在最初的GRUB界面下选择第2项（按E是编辑，按B是运行），会进入单用户模式的字符界面，把刚才备份的文件覆盖回来就行了；cp /etc/X11/xorg.conf-backup /etc/X11/xorg.conf -i<br />
<a href="http://www.yupoo.com/photos/view?id=ff8080810f96233f010f9be7b79137e0"><img src="http://photo4.yupoo.com/20061220/020949_452112968.jpg" border="0" width="420" /></a></p>
<p>改好了显卡，接下来看着不爽的就是字体，我最开始是参考<a href="http://forum.ubuntu.org.cn/viewtopic.php?t=19325">这篇文章</a>把字体改成WINDOWS里的效果，因为做WEB开发必须考虑大多数用户的体验&#8230;&#8230;字体的设置最好也跟大众一样。这里需要注意的是，无论添加／修改了什么字体文件，都一定要执行刷新缓存的命令：<br />
sudo mkfontscale<br />
sudo mkfontdir<br />
sudo fc-cache<br />
这样设置的效果虽然也不错，但是对于高分辨率LCD的用户来说，似乎达不到微软ClearType的效果，所以我还是忍不住改装了微软的雅黑字体，参考<a href="http://forum.ubuntu.org.cn/viewtopic.php?t=32339">这篇文章</a>，雅黑字体的下载建议去<a href="http://www.vistafans.com/index.php">远景论坛</a>找，并不一定要像帖子作者说的那样要下载122M，只要保证有这两个：MSYH.TTF、MSYHBD.TTF，最好也装上Segoe系列，Segoe UI是微软专门为软件界面做的字体，替代传统的大河马(Tahoma)，虽然<a href="http://blog.jjgod.org/2006/04/17/on-segoe-ui/">有抄袭的嫌疑</a>，但效果还是很棒的。注意如果你之前在字体设置里，把渲染选细节中的“平滑”设置成了“无”，一定要改回来，否则达不到ClearType的效果</p>
<p>然后是视频播放的问题，系统默认已经安装了一些软件，但不支持播放DVDRIP、RMVB、WMV。必须安装w32codecs、xine，如果想要全能的播放软件，可以装mplayer或VLC Media Player ，这些都可以在软件包管理工具里搜到，参考<a href="http://forum.ubuntu.org.cn/viewtopic.php?t=16527">这篇文章</a>，注意在安装w32codecs之前最好先保证成功安装了JRE（JAVA运行环境）。</p>
<p>我还安装了一个GTKPOD，增加了MP4支持，而且可以管理IPOD。UBUNTU默认的Rhythmbox是一个功能很强很像iTunes的软件，但很遗憾，我使用中遇到很多问题，特别是导入目录和播放MP3时会出错，暂时还没解决……所以还是用XMMS（相当于WINMAP）……</p>
<p>在上网方面，UBUNTU默认安装了FIREFOX2.0，它的用户设置备份，大家应该都有经验，不过为了快速把WINDOWS里的设置COPY到LINUX里来（特别是我还装了60多个扩展），建议装一个<a href="http://addons.mozine.org/firefox/386/">FEBE</a>，在WIN里用它把扩展、COOKIE、历史之类的东西都备份到一个目录里，然后给LINUX的FIREFOX安装这个扩展，把默认备份目录设置成刚才存放备份文件的目录，然后逐一恢复，注意千万不要恢复prefs{default}.js（个人设置），因为里面可能包含很多WINDOWS里的路径，会引发很多错误。我在恢复书签之后没看到任何变化，如果你也遇到这种情况，可以直接在这个目录里找bookmarks.html文件：<br />
/WINDOW目录/Documents and Settings/你的用户名/Application Data/Mozilla/Firefox/Profiles/XXXXXX/<br />
把它覆盖到LINUX的FIREFOX设置目录里：<br />
/home/用户名/.mozilla/firefox/XXXXX/<br />
/home/用户名/里存放的都是你的个人设置和文档，其中以&#8221;.&#8221;开头的目录都是默认隐藏的，在菜单栏的“首选项”里里可以设置显示所有隐藏文件（UBUNTU的软件界面里有一个共同特征：“编辑”下面都有一个“首选项”，相当于WIN软件里的“设置”）<br />
<a href="http://www.yupoo.com/photos/view?id=ff8080810f96233f010f9be7c14337e2"><img src="http://photo4.yupoo.com/20061220/020951_741034271.jpg" border="0" width="420" /></a><br />
FIREFOX在UBUNTU里速度超快！我装了68个扩展，启动时也只需要等几秒，内存占用也比WINDOWS少（而且LINUX里内存占用率高其实是无所谓的）。果然IE在WINDOWS里还是有主场优势的呀……</p>
<p>推荐给FIREFOX装上两个扩展：<a href="https://addons.mozilla.org/firefox/684/">FireFTP</a>， <a href="https://addons.mozilla.org/firefox/16/">ChatZilla</a>，这样就不用另外装FTP工具和IRC软件了，后者的功能非常强，不亚于独立软件……</p>
<p>其他的设置都很简单了，比如安装RAR解压软件，安装FLASH PLAYER，官方的中文文档里应该都有，没找到的话也可以去ubuntu.org.cn的论坛看看，ubuntu之所以比FC、SUSE更吸引人，一个很重要的原因就是它的社区人气很高，相关的文档也很齐全，有这样的优势还不利用就太浪费了!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2006/12/23/ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>终于用上Ubuntu了！</title>
		<link>http://www.limboy.com/2006/12/20/ubuntuinstall/</link>
		<comments>http://www.limboy.com/2006/12/20/ubuntuinstall/#comments</comments>
		<pubDate>Wed, 20 Dec 2006 03:31:42 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2006/12/20/ubuntuinstall/</guid>
		<description><![CDATA[现在网络上最有人气的操作系统大概就是Ubuntu了——这是一个只有2年历史却已经成为最顶尖级发行版的Linux系统，虽然VISTA也许更广为人知，但是要比较人气，有一个很直观的方法：GOOGLE一下“ubuntu 安装”，你会发现有数不清的BLOG文章在讨论它的安装、设置和美化，注意:都是独立BLOG上的原创文章，而搜索“VISTA 安装”得到的结果主要是门户网站里的新闻，像远景论坛这样的圈子很少。
虽然一些比较早接触Linux的程序员都偏爱Fedora Core（Redhat图形桌面版，最新版本是FC6），而且FC在企业里也更普及，但我认为它的价值无法跟ubuntu相比，ubuntu显著的推动了Linux和自由软件的普及，它非常重视“易于使用”，不但极大的方便了初级用户（特别是家庭用户），也改变了很多人对Linux的传统印象，人们突然发现Linux的界面不止是黑屏幕上花花绿绿的字符，它也有华丽的窗口和人性化的界面，在某些方面（比如3D）甚至超过VISTA和MAC OS。而且ubuntu对家庭用户和企业用户同等重视，这对于Linux的平台的统一是很有好处的（因为Linux的开源和易于修改是好事，但现在的发行版太多而且缺乏统一标准，阻碍了Linux的普及）。
从ubuntu和FC6的安装上就能看出差别，ubuntu采用LiveCD，只是一张688M的光盘，可以直接光驱启动试用ubuntu的桌面，自带所有的语言包，在图形界面下安装也非常简单直观，只有硬盘分区对不熟悉的人来说麻烦一点，其余部分几乎相当于一键操作。而且还可以边安装边用Firefox查资料XD。装好之完就可以直接使用大约95％的功能，硬件兼容性非常好（蓝牙支持都有）。默认的系统很简洁，只包括基本的软件（如FIREFOX和GAIM），大概有2.5G。通过最强大的软件包管理工具APT（中文包里把Synaptic翻译成“新立得”……好像某种药……），可以随意挑选需要的软件，解决了LINUX使用中最麻烦的软件安装问题。而FC6需要5张光盘，虽然可以方便企业内网离线安装，但对普通用户很不方便，也不适合下载和刻录。PRM软件包就更不用提了，检验依赖性都必须自己在命令行里加参数……总之，就像名字本身的含义一样，ubuntu从安装开始就能让你感受到“爱”哑！
其实我很早就想装ubuntu了，但以前刻的LIVECD有错误，让我误以为是硬件兼容的问题，而且当时我对Linux的硬盘分区机制还不了解，有很多顾虑，毕竟我的240G硬盘里保存了几年的资料，为了玩游戏也不可能彻底格掉WINXP。最近ubuntu发布了新的6.10版，代号是Edgy Eft，我终于又下定决定开始用Linux，折腾了三个晚上，到今天已经接近完美了，使用起来非常舒服，现在我就是在UBUNTU里写BLOG。如果不玩游戏的话已经可以忘掉WINXP了木哈哈哈哈哈哈……
安装中还是遇到过一些问题，首先就是硬盘分配，如果不准备格掉整张硬盘，一定要选择“手动设置分区表”，然后用安装程序里自带的工具来为LINUX腾出一些空间，需要先删除再新建，还可以从已存在的分区里切割出多余的空间，感觉还是很稳定的，至少我在这一步上重复过5次都没出过问题，实在不放心的话，可以先在WIN里用PartitionMagic 8.0删除一些空间。
LINUX没有WINDOW那种盘符的概念，而是通过目录来管理文件，比如/home里是用户的个人文件，包括软件的配置，/var里是临时文件，比如更新软件包的缓存，/boot是系统启动核心，/etc里是系统需要用到的重要软件……这些目录在安装时默认都包括在根目录：“／”挂载的分区里面，也可以单独挂载到其他分区里，实际上因为LINUX没有文件碎片之类的问题，只使用一个超大的分区也是可以的，不过如果空间足够，最好把/home单独放在一个较大的分区里，这样在重装系统时就可以方便的保留所有资料和配置，Linux还必须要有一个分区作缓存（相当于虚拟内存），格式必须是swap，容量不能低于内存大小，有一种说法是要达到内存的两倍……所以我分给它2G，/boot最好也单独挂载到一个分区里，而且最好是用靠近磁道外围的主分区，这样启动时更有效率，分区大小一般有200M就够多了。除了/boot，我没有修改其他目录的位置，给“／”分配了10G，因为硬盘实在太满了……格式没有用默认的ext3，而是reiserfs，这个是官方推荐的新格式，而且在断电或意外关机的情况下有很强的恢复能力，也更节省空间，不过据说会产生碎片&#8230;.
安装过程不需要任何干预，重启后会看到选择启动方式的GRUB界面，WINXP在第四项，第一项是UBUNTU的正常启动，这里需要注意第二项，选中后按E可以看到它的命令行里多了一个“SINGLE”，这是表示单用户模式（写成“1”也可以），然后按“B”就会进入命令行界面，这个功能非常非常重要！可以在图形界面挂掉后恢复系统，因为UBUNTU默认启动后直接进入图形界面(X-window)，我最开始不知道开机先进入命令行模式的方法，在修改显卡驱动时搞坏了XSERVER(X-window里与硬件打交道的部分)的配置文件，无法启动，被迫把系统重新安装了2次……GRUB本身是很强大的工具，值得学习，而且可以设置的很华丽……
登录用自己在安装时设置的帐号和密码，这个帐号跟WINDOWS不一样，是没有最高权限的，根目录下除了/home里属于自己的文件，其他的都不能修改，这样可以避免你或其他人无意中搞坏系统，安全性也更高。最高权限的帐号是root，也可以修改设置允许用root登录桌面，但不推荐这样做……其实既然要用LINUX，还是应该强迫自己多用命令行界面（在图形界面下需要运行“终端”，在“应用程序”——“附件”里），一方面LINUX的命令功能超强，一方面可以怀旧，重温小学时在DOS里敲DIR找游戏的感觉（对我来说……），最重要的是，UBUNTU在网络上有强大的社区支持（包括中文），各方面都有详细的教程和资源，这是不可不利用的优势（Redhat卖的不就是这样的服务么），但绝大多数文章给出的操作步骤都是命令行代码……
在语句前面加上sudo就可以执行root权限的操作，比如dexteryy $: sudo mkdir
也可以先输入sudo bash，把自己的帐号转成root。
进入系统后我做的第一件事就是启动终端，把界面改成黑底绿字……恩恩你知道这样比较酷……

然后启动FIREFOX2.0找相关的配置示例（这一篇是最全的），先更新软件包的源，注意如果你COPY的地址可能是老版本，要把其中的“dapper”（这是6.06版的代号）都替换成“edgy”.

我连电信的LUPA和CN99的速度都很快，下载速度可以上100K／S，最初更新系统下载了74多M，用了十五分钟左右。安装完之后系统提示必须重启。

然后就可以随意在“添加／删除程序”或“新立得”里挑选开源软件了（后者是完整版）：

当然这个时候的系统设置还没达到完美，最明显的是ATI显卡的支持有问题，刷新率很低。默认的字体在高分辨率液晶屏幕里效果也很差，看惯了ClearType的人是不能忍的。还有视频播放问题，默认的播放器界面丑点也就算了，还不能直接播放DVDRIP、RMVB、WMV以及显示中文字幕。FIREFOX也需要恢复成WINXP里的设置，但它的PROFILE目录位置不一样……最重要的是，作为一个对开发有很大帮助的操作系统，要建立一个WEB开发环境，需要装哪些东西呢，毕竟这里没有Dreamweaver也没有Editplus…………好罢……这些问题倒是都解决了，比如最后那张图里的字体应该比前面几张要好看多了罢。明天有空再继续写……
]]></description>
			<content:encoded><![CDATA[<p><a href="http://bp0.blogger.com/_FPgtQV0mSoM/RYmU1Bh9buI/AAAAAAAAAAk/fW9wWrRhjPY/s1600-h/769.gif"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_FPgtQV0mSoM/RYmU1Bh9buI/AAAAAAAAAAk/fW9wWrRhjPY/s200/769.gif" alt="" id="BLOGGER_PHOTO_ID_5010699699091238626" border="0" /></a>现在网络上最有人气的操作系统大概就是<a href="http://wiki.ubuntu.org.cn/Ubuntu%E7%9A%84%E7%AE%80%E8%A6%81%E4%BB%8B%E7%BB%8D">Ubuntu</a>了——这是一个只有2年历史却已经成为<a href="http://atoz.org.cn/blog/?m=200603">最顶尖级</a>发行版的Linux系统，虽然VISTA也许更广为人知，但是要比较人气，有一个很直观的方法：GOOGLE一下“ubuntu 安装”，你会发现有数不清的BLOG文章在讨论它的安装、设置和美化，注意:都是独立BLOG上的原创文章，而搜索“VISTA 安装”得到的结果主要是门户网站里的新闻，像<a href="http://www.vistafans.com/index.php">远景论坛</a>这样的圈子很少。</p>
<p>虽然一些比较早接触Linux的程序员都偏爱Fedora Core（Redhat图形桌面版，最新版本是FC6），而且FC在企业里也更普及，但我认为它的价值无法跟ubuntu相比，ubuntu显著的推动了Linux和自由软件的普及<span id="more-71"></span>，它非常重视“易于使用”，不但极大的方便了初级用户（特别是家庭用户），也改变了很多人对Linux的传统印象，人们突然发现Linux的界面不止是黑屏幕上花花绿绿的字符，它也有华丽的窗口和人性化的界面，在某些方面（<a href="http://subject.lupaworld.com/200612/xgl/">比如3D</a>）甚至超过VISTA和MAC OS。而且ubuntu对家庭用户和企业用户同等重视，这对于Linux的平台的统一是很有好处的（因为Linux的开源和易于修改是好事，但现在的发行版太多而且缺乏统一标准，阻碍了Linux的普及）。</p>
<p>从ubuntu和FC6的安装上就能看出差别，ubuntu采用LiveCD，只是一张688M的光盘，可以直接光驱启动试用ubuntu的桌面，自带所有的语言包，在图形界面下安装也非常简单直观，只有硬盘分区对不熟悉的人来说麻烦一点，其余部分几乎相当于一键操作。而且还可以边安装边用Firefox查资料XD。装好之完就可以直接使用大约95％的功能，硬件兼容性非常好（蓝牙支持都有）。默认的系统很简洁，只包括基本的软件（如FIREFOX和GAIM），大概有2.5G。通过最强大的软件包管理工具APT（中文包里把<a href="http://wiki.ubuntu.org.cn/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%96%B0%E7%AB%8B%E5%BE%97">Synaptic翻译成“新立得”</a>……好像某种药……），可以随意挑选需要的软件，解决了LINUX使用中最麻烦的软件安装问题。而FC6需要5张光盘，虽然可以方便企业内网离线安装，但对普通用户很不方便，也不适合下载和刻录。PRM软件包就更不用提了，检验依赖性都必须自己在命令行里加参数……总之，就像名字本身的含义一样，ubuntu从安装开始就能让你感受到“爱”哑！</p>
<p>其实我很早就想装ubuntu了，但以前刻的LIVECD有错误，让我误以为是硬件兼容的问题，而且当时我对Linux的硬盘分区机制还不了解，有很多顾虑，毕竟我的240G硬盘里保存了几年的资料，为了玩游戏也不可能彻底格掉WINXP。最近ubuntu发布了新的6.10版，代号是Edgy Eft，我终于又下定决定开始用Linux，折腾了三个晚上，到今天已经接近完美了，使用起来非常舒服，现在我就是在UBUNTU里写BLOG。如果不玩游戏的话已经可以忘掉WINXP了木哈哈哈哈哈哈……</p>
<p>安装中还是遇到过一些问题，首先就是硬盘分配，如果不准备格掉整张硬盘，一定要选择“手动设置分区表”，然后用安装程序里自带的工具来为LINUX腾出一些空间，需要先删除再新建，还可以从已存在的分区里切割出多余的空间，感觉还是很稳定的，至少我在这一步上重复过5次都没出过问题，实在不放心的话，可以先在WIN里用PartitionMagic 8.0删除一些空间。</p>
<p>LINUX没有WINDOW那种盘符的概念，而是通过目录来管理文件，比如/home里是用户的个人文件，包括软件的配置，/var里是临时文件，比如更新软件包的缓存，/boot是系统启动核心，/etc里是系统需要用到的重要软件……这些目录在安装时默认都包括在根目录：“／”挂载的分区里面，也可以单独挂载到其他分区里，实际上因为LINUX没有文件碎片之类的问题，只使用一个超大的分区也是可以的，不过如果空间足够，最好把/home单独放在一个较大的分区里，这样在重装系统时就可以方便的保留所有资料和配置，Linux还必须要有一个分区作缓存（相当于虚拟内存），格式必须是swap，容量不能低于内存大小，有一种说法是要达到内存的两倍……所以我分给它2G，/boot最好也单独挂载到一个分区里，而且最好是用靠近磁道外围的主分区，这样启动时更有效率，分区大小一般有200M就够多了。除了/boot，我没有修改其他目录的位置，给“／”分配了10G，因为硬盘实在太满了……格式没有用默认的ext3，而是reiserfs，这个是官方推荐的新格式，而且在断电或意外关机的情况下有很强的恢复能力，也更节省空间，不过据说<a href="http://linux.chinaitlab.com/administer/529502.html">会产生碎片</a>&#8230;.</p>
<p>安装过程不需要任何干预，重启后会看到选择启动方式的GRUB界面，WINXP在第四项，第一项是UBUNTU的正常启动，这里需要注意第二项，选中后按E可以看到它的命令行里多了一个“SINGLE”，这是表示单用户模式（写成“1”也可以），然后按“B”就会进入命令行界面，这个功能非常非常重要！可以在图形界面挂掉后恢复系统，因为UBUNTU默认启动后直接进入图形界面(X-window)，我最开始不知道开机先进入命令行模式的方法，在修改显卡驱动时搞坏了XSERVER(X-window里与硬件打交道的部分)的配置文件，无法启动，被迫把系统重新安装了2次……GRUB本身是<a href="http://www.linuxsir.org/main/?q=node/129">很强大的工具</a>，值得学习，而且可以<a href="http://forum.ubuntu.org.cn/viewtopic.php?t=27997">设置的很华丽</a>……</p>
<p>登录用自己在安装时设置的帐号和密码，这个帐号跟WINDOWS不一样，是没有最高权限的，根目录下除了/home里属于自己的文件，其他的都不能修改，这样可以避免你或其他人无意中搞坏系统，安全性也更高。最高权限的帐号是root，也可以修改设置允许用root登录桌面，但不推荐这样做……其实既然要用LINUX，还是应该强迫自己多用命令行界面（在图形界面下需要运行“终端”，在“应用程序”——“附件”里），一方面LINUX的命令功能超强，一方面可以怀旧，重温小学时在DOS里敲DIR找游戏的感觉（对我来说……），最重要的是，UBUNTU在网络上有强大的社区支持（包括中文），各方面都有详细的教程和资源，这是不可不利用的优势（Redhat卖的不就是这样的服务么），但绝大多数文章给出的操作步骤都是命令行代码……<br />
在语句前面加上sudo就可以执行root权限的操作，比如dexteryy $: sudo mkdir<br />
也可以先输入sudo bash，把自己的帐号转成root。</p>
<p>进入系统后我做的第一件事就是启动终端，把界面改成黑底绿字……恩恩你知道这样比较酷……</p>
<p><a href="http://photo4.yupoo.com/20061220/020941_2101497143_hgwhwjlk.jpg" title="黑底绿字"><img src="http://photo4.yupoo.com/20061220/020941_2101497143.jpg" border="0" width="420" /></a></p>
<p>然后启动FIREFOX2.0找相关的配置示例（<a href="http://forum.ubuntu.org.cn/viewtopic.php?t=32969">这一篇</a>是最全的），先更新软件包的源，注意如果你COPY的地址可能是老版本，要把其中的“dapper”（这是6.06版的代号）都替换成“edgy”.</p>
<p><a href="http://photo4.yupoo.com/20061220/020944_1067370066_flvjdorn.jpg" title="更新软件包的源"><img src="http://photo4.yupoo.com/20061220/020944_1067370066.jpg" border="0" width="420" /></a></p>
<p>我连电信的LUPA和CN99的速度都很快，下载速度可以上100K／S，最初更新系统下载了74多M，用了十五分钟左右。安装完之后系统提示必须重启。</p>
<p><a href="http://photo4.yupoo.com/20061220/020946_2114380920_mbqmdprm.jpg" title="更新软件"><img src="http://photo4.yupoo.com/20061220/020946_2114380920.jpg" border="0" width="420" /></a></p>
<p>然后就可以随意在“添加／删除程序”或“新立得”里挑选开源软件了（后者是完整版）：</p>
<p><a href="http://photo4.yupoo.com/20061220/021902_1811486600_slmidisn.jpg" title="添加／删除程序"><img src="http://photo4.yupoo.com/20061220/021902_1811486600.jpg" border="0" width="420" /></a></p>
<p>当然这个时候的系统设置还没达到完美，最明显的是ATI显卡的支持有问题，刷新率很低。默认的字体在高分辨率液晶屏幕里效果也很差，看惯了ClearType的人是不能忍的。还有视频播放问题，默认的播放器界面丑点也就算了，还不能直接播放DVDRIP、RMVB、WMV以及显示中文字幕。FIREFOX也需要恢复成WINXP里的设置，但它的PROFILE目录位置不一样……最重要的是，作为一个对开发有很大帮助的操作系统，要建立一个WEB开发环境，需要装哪些东西呢，毕竟这里没有Dreamweaver也没有Editplus…………好罢……这些问题倒是都解决了，比如最后那张图里的字体应该比前面几张要好看多了罢。明天有空再继续写……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2006/12/20/ubuntuinstall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Tor其实是很容易的事哑</title>
		<link>http://www.limboy.com/2006/10/04/tor/</link>
		<comments>http://www.limboy.com/2006/10/04/tor/#comments</comments>
		<pubDate>Wed, 04 Oct 2006 01:43:09 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[科技]]></category>
		<category><![CDATA[网络]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2006/10/04/tor/</guid>
		<description><![CDATA[最近NT论坛上又有人询问上维基的方法，仍然有人推荐https加密地址，也仍然有人推荐torpark，而tor仍然无人问津，莫非这东西真的很难用？
大概很多人已经注意到了这点，最近网上突然出现了很多新的tor教程，什么“Tor代理全套解决方案”、“Firefox＋Tor必备教程”……

这个叫“边栏”
经常搜索英文D20资料的人一定都很熟悉geocities.com这个网址，实际上它以前是全世界最大的免费网页空间提供商，94年创建，保存了很多旧资料，当时它的管理方式也很有趣，按主题、兴趣来分类，设立了几十个Neighborhood，每个Neighborhood都用真实地名来称呼，比如关于电脑的网页都在“SiliconValley”(硅谷)里；与娱乐有关的网页都在“Hollywood”(好莱坞)里……这个网站后来被Yahoo!收购（在成为社会型web2.0网站收购狂之前，Yahoo!已经表现出这方面嗜好了），现在的名字是“雅虎地球村”，网址也变成了Yahoo!的二级域名，已经完全没有当年的特色了……而那些以www.geocities.com开头的网址都是过去的旧网页……不知道为什么，这个域名被GFW了，跟wiki一样需要用Tor才能方便的访问
内容非常“傻瓜”，大概小学生都能看懂（这大概也不是好事，有很多东西，当它们走向大众化的时候，也就离末路不远了），里面无一例外的都推荐了Vidalia + Tor + Privoxy + Torbutton&#8230;
我觉得这并不是最好的搭配，比如平时上网经常会在google里搜索到wiki或geocities的页面（如果你在找英文资料），如果当时不能直接点这些链接，每次都要另外去打开torpark，或是启动Vidalia和Privoxy再激活，这就太麻烦了。当然，也不可能把Torpark作为主浏览器(访问不需要代理的页面时速度太慢，也缺乏Firefox的其他功能)
其实事情已经很简单了，现在有了很多新工具，Tor的使用方法比以前要简单多了
只需要做三件事：

装一个Vidalia套件。其中包括Tor和Privoxy，Vidalia是Tor的图形化管理界面，但你安装之后不需要改它的设置，用默认的9050端口。Tor获得的是sock代理，所以需要Privoxy把它转成网页用的代理，但如果你用Firefox的话其实并不需要装这个东西。
Vidalia套件的下载页面（请点击Stable Bundles的Windows版本，10月3日出了最新版）
对Firefox用户来说，以后只需要保证Vidalia在系统托盘里处于启动状态，就OK了
装一个Firefox扩展：FoxyProxy，这是Firefox里最强的代理管理工具，它本身自带有Tor设置向导，第一次使用时只要按它的提示操作就可以了（记得选择不使用Privoxy）
中文版下载地址

设置FoxyProxy，给那些必须用Tor才能访问的网址添加模版。在选项——代理服务器——“使用TOR的代理服务器”上双击，添加新模版，不懂正则的话也可以用最简单的通配符
比如维基就写：*.wikipedia.org/*
BBC中文网：*.bbc.co.uk/chinese/*

设置好之后重启Firefox就行了，以后上网时遇到这些网址会自动使用Tor，而访问其他网站时不受影响
]]></description>
			<content:encoded><![CDATA[<p><a href="http://tor.eff.org/images/top-left.png"><img style="margin: 0pt 10px 0px 0pt; float: left; cursor: pointer; width: 200px;" src="http://tor.eff.org/images/top-left.png" alt="" border="0" /></a>最近NT论坛上又有人询问上维基的方法，仍然有人推荐https加密地址，也仍然有人推荐torpark，而tor仍然无人问津，莫非这东西真的很难用？</p>
<p>大概很多人已经注意到了这点，最近网上突然出现了很多新的tor教程，什么“Tor代理全套解决方案”、“Firefox＋Tor必备教程”……<span id="more-58"></span>
<div style="border: 1px solid rgb(189, 212, 235); margin: 20px 8px 5px; padding: 2px 6px 6px; background: rgb(223, 234, 246) none repeat scroll 0% 50%; float: right; width: 220px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
<div style="border: 1px solid rgb(189, 212, 235); padding: 2px 4px; background: rgb(255, 255, 255) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; top: -20px; text-align: center;">这个叫“边栏”</div>
<p>经常搜索英文D20资料的人一定都很熟悉geocities.com这个网址，实际上它以前是全世界最大的免费网页空间提供商，94年创建，保存了很多旧资料，当时它的管理方式也很有趣，按主题、兴趣来分类，设立了几十个Neighborhood，每个Neighborhood都用真实地名来称呼，比如关于电脑的网页都在“SiliconValley”(硅谷)里；与娱乐有关的网页都在“Hollywood”(好莱坞)里……这个网站后来被Yahoo!收购（在成为社会型web2.0网站收购狂之前，Yahoo!已经表现出这方面嗜好了），现在的名字是“雅虎地球村”，网址也变成了<a href="http://geocities.yahoo.com/">Yahoo!的二级域名</a>，已经完全没有当年的特色了……而那些以www.geocities.com开头的网址都是过去的旧网页……不知道为什么，这个域名被GFW了，跟wiki一样需要用Tor才能方便的访问</div>
<p>内容非常“傻瓜”，大概小学生都能看懂（这大概也不是好事，有很多东西，当它们走向大众化的时候，也就离末路不远了），里面无一例外的都推荐了Vidalia + Tor + Privoxy + Torbutton&#8230;</p>
<p>我觉得这并不是最好的搭配，比如平时上网经常会在google里搜索到wiki或<span style="font-weight: bold;">geocities</span>的页面（如果你在找英文资料），如果当时不能直接点这些链接，每次都要另外去打开torpark，或是启动Vidalia和Privoxy再激活，这就太麻烦了。当然，也不可能把Torpark作为主浏览器(访问不需要代理的页面时速度太慢，也缺乏Firefox的其他功能)</p>
<p>其实事情已经很简单了，现在有了很多新工具，Tor的使用方法比以前要简单多了</p>
<p>只需要做三件事：</p>
<ol>
<li>装一个Vidalia套件。其中包括Tor和Privoxy，Vidalia是Tor的图形化管理界面，但你安装之后不需要改它的设置，用默认的9050端口。Tor获得的是sock代理，所以需要Privoxy把它转成网页用的代理，但如果你用Firefox的话其实并不需要装这个东西。</p>
<p><a href="http://www.vidalia-project.net/download.php">Vidalia套件的下载页面</a>（请点击Stable Bundles的Windows版本，10月3日出了最新版）</p>
<p>对Firefox用户来说，以后只需要保证Vidalia在系统托盘里处于启动状态，就OK了</li>
<li>装一个Firefox扩展：FoxyProxy，这是Firefox里最强的代理管理工具，它本身自带有Tor设置向导，第一次使用时只要按它的提示操作就可以了（记得选择不使用Privoxy）<br />
<a href="http://addons.mozine.org/firefox/259/">中文版下载地址</a>
</li>
<li>设置FoxyProxy，给那些必须用Tor才能访问的网址添加模版。在选项——代理服务器——“使用TOR的代理服务器”上双击，添加新模版，不懂正则的话也可以用最简单的通配符
<p>比如维基就写：*.wikipedia.org/*<br />
BBC中文网：*.bbc.co.uk/chinese/*</li>
</ol>
<p>设置好之后重启Firefox就行了，以后上网时遇到这些网址会自动使用Tor，而访问其他网站时不受影响</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2006/10/04/tor/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>iPod更新后的怨念</title>
		<link>http://www.limboy.com/2006/09/13/ipod/</link>
		<comments>http://www.limboy.com/2006/09/13/ipod/#comments</comments>
		<pubDate>Wed, 13 Sep 2006 13:29:34 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2006/09/13/ipod/</guid>
		<description><![CDATA[因为我有凌晨三点上床睡觉的好习惯，所以今天凌晨一点的时候我就顺便看了苹果It&#8217;s Show Time新品发布会的直播。
WWDC.Apple.pro、北麦网、麦客地带、AppleCorner联合进行了文字直播，然则因为整场发布会都没有出现他们臆想中的新产品——比如传说中的iPhone（假想设计图、专利资料）和宽屏幕Video iPod，所以从文字中可以感受到很重的怨念……
Engadget的报道比较好看，不但图文并茂，还针对5个产品分别发文描叙。是的，这次发布了5个产品，其中4个是iPod系列产品的更新，包括第二代iPod video（电池使用时间翻番、软件更新增加搜索和游戏、更换耳机、价格降到250刀）、第二代iPod nano（变成了MINI的铝制外壳和五颜六色）、第二代iPod Shuffle（现在成了世界上最小的播放器……） ，还发布了iTunes7……唯一的新产品是一个机顶盒……我不感兴趣……
由于我2个星期前才刚刚购入iPod video 30G，所以这次升级让我非常郁闷，尤其是电池……由于锂电池不适合在电量耗光后充电，我现在每天都要小心翼翼的注意剩余电量，平时根本不敢看电影，下班回家坐公交车时如果还有很多剩余电量，才敢看一会视频podcast……不过我好像看到过更换iPod电池的广告……不知道能不能升级成能连续播放24小时的电池……
iTunes7的升级是最让人高兴的事情了，UI比以前更漂亮，完全摆脱了AQUA风格，增加了podcast的订阅提示，还有专辑封面浏览模式——这个是最华丽的了！

可惜的是，自动获取专辑封面的功能无法使用，因为需要登陆Store的会员帐号（注册时必须要信用卡，而且必须是Store所在国家本地的信用卡）。另外，ipod软件更新的功能现在整合到iTunes里了，然而我更新软件时，ipod会自动弹出……不知道是怎么回事，我只好在老爸的机器上给ipod升级……
]]></description>
			<content:encoded><![CDATA[<p><a href="http://edge.macworld.com/2006/09/images/content/showtime_th.gif"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 140px;" src="http://edge.macworld.com/2006/09/images/content/showtime_th.gif" alt="" border="0" /></a>因为我有凌晨三点上床睡觉的好习惯，所以今天凌晨一点的时候我就顺便看了苹果It&#8217;s Show Time新品发布会的直播。</p>
<p><a href="http://wwdc.apple.pro/">WWDC.Apple.pro</a>、<a href="http://www.beimac.cn/">北麦网</a>、<a href="http://www.maczone.cn/">麦客地带</a>、<a href="http://applecorner.com/">AppleCorner</a>联合进行了<a href="http://www.maczone.cn/live/live.html">文字直播</a>，然则因为整场发布会都没有出现他们臆想中的新产品——比如传说中的iPhone（<a href="http://chinese.engadget.com/2006/09/08/apples-iphone-the-rumor-resurrected/">假想设计图</a>、<a href="http://chinese.engadget.com/2006/09/12/new-filing-seen-as-proof-of-apple-cell-phone/">专利资料</a>）和<a href="http://chinese.engadget.com/2006/03/05/another-video-ipod-surfaces-online/">宽屏幕Video iPod</a>，所以从文字中可以感受到很重的怨念……<span id="more-51"></span></p>
<p><a href="http://chinese.engadget.com/2006/09/12/live-from-the-steve-jobs-keynote-its-showtime/">Engadget的报道</a>比较好看，不但图文并茂，还针对5个产品分别发文描叙。是的，这次发布了5个产品，其中4个是iPod系列产品的更新，包括第二代iPod video（电池使用时间翻番、软件更新<a href="http://gizmodo.com/gadgets/apple-showtime/apple-showtimes-after-party-photos-of-the-ipod-playing-games-200238.php">增加搜索和游戏</a>、更换耳机、价格降到250刀）、第二代iPod nano（变成了MINI的铝制外壳和五颜六色）、<a href="http://gizmodo.com/gadgets/apple-showtime/apple-showtimes-after-party-new-shuffle-photos-200239.php">第二代iPod Shuffle</a>（现在成了世界上最小的播放器……） ，还发布了iTunes7……唯一的新产品是一个机顶盒……我不感兴趣……</p>
<p>由于我2个星期前才刚刚购入iPod video 30G，所以这次升级让我非常郁闷，尤其是电池……由于锂电池不适合在电量耗光后充电，我现在每天都要小心翼翼的注意剩余电量，平时根本不敢看电影，下班回家坐公交车时如果还有很多剩余电量，才敢看一会视频podcast……不过我好像看到过更换iPod电池的广告……不知道能不能升级成能连续播放24小时的电池……</p>
<p>iTunes7的升级是最让人高兴的事情了，UI比以前更漂亮，完全摆脱了AQUA风格，增加了podcast的订阅提示，还有专辑封面浏览模式——这个是最华丽的了！</p>
<p><a href="http://www.yupoo.com/photos/view?id=ff8080810da6d7c1010da73820cc0c3b" title="iTunes7新功能"><img src="http://photo9.yupoo.com/20060913/204754_552062694.jpg" style="width: 400px;" border="0" /></a></p>
<p>可惜的是，自动获取专辑封面的功能无法使用，因为需要登陆Store的会员帐号（注册时必须要信用卡，而且必须是Store所在国家本地的信用卡）。另外，ipod软件更新的功能现在整合到iTunes里了，然而我更新软件时，ipod会自动弹出……不知道是怎么回事，我只好在老爸的机器上给ipod升级……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2006/09/13/ipod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>侏儒科技！</title>
		<link>http://www.limboy.com/2006/05/29/gnome/</link>
		<comments>http://www.limboy.com/2006/05/29/gnome/#comments</comments>
		<pubDate>Mon, 29 May 2006 07:20:55 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[科技]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2006/05/29/gnome/</guid>
		<description><![CDATA[Controllable launcher 
美国防卫高级研究部门(US Defence Advanced Research Projects Agency,  DARPA)研究出的这种技术可以利用压缩空气把人送到高楼里面，飞出去的人不会受到伤害。大炮就像投石机一样安装在目标附近，通过压缩空气将人弹上高空，通过精确的弹道计算可以将人安全的送到目的地点。。
http://www.newscientist.com/blog/inv&#8230;nballs_15.html
DARPA还提到这门大炮可以在两秒之内把一个人送上5层楼的高度。

专利文件：http://appft1.uspto.gov/netacgi/nph-&#8230;DN/20060086349
参考《龙枪编年史》：
他们站在侏儒城市的正中央。城市建造在一个死火山口之中，光是半径就有几百尺宽，高度将近一里。整座城市沿着火山口建造。芬斯抬头往上看……再往上，再往上……还要往上……
“这里大概有几层楼高？”坎德人的脖子快要伸断了。
“三十五——”
“三十五层楼高利”泰斯惊讶地重复。“住在顶楼不就倒霉了？
这样得爬多少层阶梯啊？“浓修吸吸鼻子。
“我们早就舍弃了这种原始的装置。”他比着手势，“如果你不介意看看这些我们所制造出来的可怕科技成果吧——”
“我看到了。”泰斯把视线重新技回地面。“你们大概正准备打一场大规模的仗。我从来没看过这么多的投石器——”坎德人硬生生吞回去接下来的话。正当他看着时，一声哨音响起，投石器把一个林德射出去。泰斯看见的并不是武器，而是一种取代楼梯的装置！
大厅的最底层放满了投石器，几乎含括了每一种株儒制的投石器。有弹簧做的、十字弓形的、蒸汽机驱动的（还在实验阶段，他们在调整水的温度。）投石器上下左右缠绕着数百里长的绳索，每一条绳索都连接着某种齿轮和机械装置，发出机器运转的声音。地板、墙壁、投石器上尽是各式各样的拉杆，成群结队的侏儒正努力地拉上拉下。
“我想，”费资本听起来十分的无奈，“这个检验室应该不会在一楼吧？”
浓修摇摇头。“检验室在十五楼——”
老法师发出一声心碎的叹息。
坎德人听到一阵令人牙龈发酸的声音。
“啊，他们准备好了。快来——”浓修说。
泰斯快快乐乐、一跳一跳地跟在他后头，走向一个巨大的投石器。一名侏儒不耐烦地向他们打着手势，比了比后面一长串正排队等候着的侏儒。泰斯跳上了投石器，满怀期待地看着天空。他可以看见许多株儒从各楼层往下看，身旁环绕着各种机器、齿轮和说不出名字的装置，最容易分辨的是一种挂在墙壁上、类似棒子的东西。浓修站在他旁边，皱着眉头。
“敬老尊贤，年轻人，所以赶快离开让老人家坐上来。”他以他惊人的力量将泰索柯夫从位置上拉下来，“魔法师优先——”
“喔，没关系啦！”费资本抗议，一个不小心，往后跌进团绳子里。“我——我好像想起了一道可以让我飞到上头去的法术，浮空术，那是怎么施——施展？给我几分钟想一想……”
“一直叫我们快一点的是你那——”浓修生气地看着老法师，后头排队的殊德开始鼓噪起来，彼此推挤。
“啊！拼了啦！”老法师大吼，让步爬过座位里，浓修在一边帮着。负责发射投石器的株儒喊了一具不知道什么话。
浓修指着上面，喊回去。“第十五层！”
技师走到五个拉杆之前，这里延伸出几近无限长的绳子。费资本哀怨地坐在投石器上，挣扎着要回想起他的法术。
“预备！”浓修大喊，把泰斯拉离投石器，好让他能看得更清楚，“用不了多久，技师就会给我们信号，对——就是这个信号——”
技师拉了拉一条绳子。
“那有什么用？”泰斯插嘴。
“这条绳子连接到第十五层的一个钟上，告诉他们有人要上来——”
“万一钟没响怎么办？”费资本大声地问。
“会有第二个钟声提醒他们第一个钟没有响——”
“钟声没响底下会怎么应变？”
“就啥也不做。那是第十五层的事，不是你的问题——”
“万一他们不知道我要来了，这就变成我的问题片资资本大喊。”难不成要我就这样跳过去给他们一个惊喜吗？“
“啊！”浓修骄傲地说，“我跟你说——”
“我不玩了……”费资本表示。
“不，等等。”浓修说，说话速度因为紧张而越来越快。“他们准备好了——”
“谁准备好了？”费资本愤怒地问。
“第十五层！他们把网子放出来了，你知道——”
“网子！！！”费资本脸色发白，“够了！”他一只脚踏了出去。
但在他逃出去之前，技师已经伸手拉下了第一根拉杆。一阵机械运转声后，投石器开始在轨道上移动。运转的震动又把费资本摔了回去，帽子遮住眼睛。
“发生什么事了？”泰斯大喊。
“他们正在就发射位置。”浓修大喊。“经度和纬度已经计算妥当，可以把乘客发射到预定的位置——”
“你给我说清楚网子是怎么一回事？”泰斯扯开喉咙大吼。
“法师会飞上第十五层——喔！我向你保证，相当的安全——我们做过研究，事实上，研究结果证明了飞行比走路还要安全——等他飞到了轨迹的最高点，正要开始落下时，第十五层会伸出一张网，像这样抓住他”依修用一只手示范，啪的一声抓住一只蚊子，“然后把他丢——”
“这时间可得算得很准罗！”
“时间铁定准，因为我们研发出一种钩子来进行这项艰巨的任务，不过，”浓修嘟起嘴，皱眉说，“有些时候是投石器会出现误差，不过我们有个委员会——侏儒拉下拉杆，费资本尖叫着飞上天空。
“喔哦！天哪！”浓修瞪着天空。“看来——”
“什么？什么？”泰斯大叫着想要看清楚。
“网子又太早打开了——”浓修摇摇头，“第十五层今天一天已经发生了第二次，这可得提案到安全网公会去讨论并且不能让它再度发生——”
泰斯张大嘴，看着费资本的身影划过天空，借着投石器巨大的力量不断地往上飞。刹那间，坎德人终于懂了浓修在说些什么。
第十五层的网子并没有在法师飞过第十五层之后张开而是在费资本飞越之前就张开了。
费资本像是被打扁的苍蝇般贴在网子上。
有短短的一瞬间，他手脚并用地小心抓着网子、然后、就掉了下来。
钟声和锣声齐鸣。
“别告诉我——”泰斯哀怨地说。“那就是网子失效的警告声。
“你猜对了，但不用太紧张（自鸣得意地笑着）”浓修咯咯笑道，“因为这个警铃会触动第十三层的网子，正好可以——哎啃，看来好像迟了一步，不过没关系，我们还有第十二层——”
“快想想办法！”泰斯尖叫道。
“别穷紧张好不好！”浓修生气地说。“不然我根本没有机会说完我刚刚正要提到的最后后备安全系统，喔，来啦——”
泰斯惊讶地看着第三层墙壁上伸出了六个大筒子，底部打开来，掉出无数的海绵，铺在第一层的广场上。这是为了——显然的——预防所有的网子都没有接到。很幸运的，第九层的网子没有失效，正巧来得及将法师捞起，之后网子随即收拢，把他甩到一个阳台上，侏儒们听见他不停的咒骂声，有点不大敢放他出来。
“这下全部妥当！该你了。”浓修说。
“最后一个问题！”泰斯坐在座位上对着浓修大喊。“万一这个后备安全系统也失效了怎么办？”
“好问题——”浓修高兴地说，“如果这些海绵掉下来不够快，那么另一个警铃公响起，将一大桶水倒到广场中央，然后呢——正好海绵这时候也该倒了下来——要擦干净地上的血迹就很简单了——”技师拉下了拉杆。
]]></description>
			<content:encoded><![CDATA[<p><img src="http://lh4.google.com/image/dexter.yy/Rg9gphSagEI/AAAAAAAAADo/CBfffrNknPw/s288/GNOME.jpg"  style="margin:0 10px 10px 0px; float:left;"/><strong>Controllable launcher </strong></p>
<p>美国防卫高级研究部门(US Defence Advanced Research Projects Agency,  DARPA)研究出的这种技术可以利用压缩空气把人送到高楼里面，飞出去的人不会受到伤害。大炮就像投石机一样安装在目标附近，通过压缩空气将人弹上高空，通过精确的弹道计算可以将人安全的送到目的地点。。</p>
<p><a href="http://www.newscientist.com/blog/inv...nballs_15.html">http://www.newscientist.com/blog/inv&#8230;nballs_15.html</a></p>
<p>DARPA还提到这门大炮可以在两秒之内把一个人送上5层楼的高度。<span id="more-23"></span></p>
<p><a href="http://www.newscientist.com/blog/invention/uploaded_images/cannonball-702146.jpg"><img alt="http://www.newscientist.com/blog/invention/uploaded_images/cannonball-702146.jpg" src="http://www.newscientist.com/blog/invention/uploaded_images/cannonball-702146.jpg" style="width:260px;" /></a></p>
<p>专利文件：<a href="http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&#038;Sect2=HITOFF&amp;amp;amp;amp;amp;amp;d=PG01&#038;p=1&amp;u=/netahtml/PTO/srchnum.html&#038;r=1&amp;amp;amp;amp;amp;amp;f=G&#038;l=50&amp;s1=%2220060086349%22.PGNR.&#038;OS=DN/20060086349&amp;RS=DN/20060086349"><span style="color: rgb(0, 0, 255);">http://appft1.uspto.gov/netacgi/nph-&#8230;DN/20060086349</span></a></p>
<p>参考《龙枪编年史》：</p>
<blockquote><p>他们站在侏儒城市的正中央。城市建造在一个死火山口之中，光是半径就有几百尺宽，高度将近一里。整座城市沿着火山口建造。芬斯抬头往上看……再往上，再往上……还要往上……<br />
“这里大概有几层楼高？”坎德人的脖子快要伸断了。<br />
“三十五——”<br />
“三十五层楼高利”泰斯惊讶地重复。“住在顶楼不就倒霉了？<br />
这样得爬多少层阶梯啊？“浓修吸吸鼻子。<br />
“我们早就舍弃了这种原始的装置。”他比着手势，“如果你不介意看看这些我们所制造出来的可怕科技成果吧——”<br />
“我看到了。”泰斯把视线重新技回地面。“你们大概正准备打一场大规模的仗。我从来没看过这么多的投石器——”坎德人硬生生吞回去接下来的话。正当他看着时，一声哨音响起，投石器把一个林德射出去。泰斯看见的并不是武器，而是一种取代楼梯的装置！<br />
大厅的最底层放满了投石器，几乎含括了每一种株儒制的投石器。有弹簧做的、十字弓形的、蒸汽机驱动的（还在实验阶段，他们在调整水的温度。）投石器上下左右缠绕着数百里长的绳索，每一条绳索都连接着某种齿轮和机械装置，发出机器运转的声音。地板、墙壁、投石器上尽是各式各样的拉杆，成群结队的侏儒正努力地拉上拉下。<br />
“我想，”费资本听起来十分的无奈，“这个检验室应该不会在一楼吧？”<br />
浓修摇摇头。“检验室在十五楼——”<br />
老法师发出一声心碎的叹息。<br />
坎德人听到一阵令人牙龈发酸的声音。<br />
“啊，他们准备好了。快来——”浓修说。<br />
泰斯快快乐乐、一跳一跳地跟在他后头，走向一个巨大的投石器。一名侏儒不耐烦地向他们打着手势，比了比后面一长串正排队等候着的侏儒。泰斯跳上了投石器，满怀期待地看着天空。他可以看见许多株儒从各楼层往下看，身旁环绕着各种机器、齿轮和说不出名字的装置，最容易分辨的是一种挂在墙壁上、类似棒子的东西。浓修站在他旁边，皱着眉头。<br />
“敬老尊贤，年轻人，所以赶快离开让老人家坐上来。”他以他惊人的力量将泰索柯夫从位置上拉下来，“魔法师优先——”<br />
“喔，没关系啦！”费资本抗议，一个不小心，往后跌进团绳子里。“我——我好像想起了一道可以让我飞到上头去的法术，浮空术，那是怎么施——施展？给我几分钟想一想……”<br />
“一直叫我们快一点的是你那——”浓修生气地看着老法师，后头排队的殊德开始鼓噪起来，彼此推挤。<br />
“啊！拼了啦！”老法师大吼，让步爬过座位里，浓修在一边帮着。负责发射投石器的株儒喊了一具不知道什么话。<br />
浓修指着上面，喊回去。“第十五层！”<br />
技师走到五个拉杆之前，这里延伸出几近无限长的绳子。费资本哀怨地坐在投石器上，挣扎着要回想起他的法术。<br />
“预备！”浓修大喊，把泰斯拉离投石器，好让他能看得更清楚，“用不了多久，技师就会给我们信号，对——就是这个信号——”<br />
技师拉了拉一条绳子。<br />
“那有什么用？”泰斯插嘴。<br />
“这条绳子连接到第十五层的一个钟上，告诉他们有人要上来——”<br />
“万一钟没响怎么办？”费资本大声地问。<br />
“会有第二个钟声提醒他们第一个钟没有响——”<br />
“钟声没响底下会怎么应变？”<br />
“就啥也不做。那是第十五层的事，不是你的问题——”<br />
“万一他们不知道我要来了，这就变成我的问题片资资本大喊。”难不成要我就这样跳过去给他们一个惊喜吗？“<br />
“啊！”浓修骄傲地说，“我跟你说——”<br />
“我不玩了……”费资本表示。<br />
“不，等等。”浓修说，说话速度因为紧张而越来越快。“他们准备好了——”<br />
“谁准备好了？”费资本愤怒地问。<br />
“第十五层！他们把网子放出来了，你知道——”<br />
“网子！！！”费资本脸色发白，“够了！”他一只脚踏了出去。<br />
但在他逃出去之前，技师已经伸手拉下了第一根拉杆。一阵机械运转声后，投石器开始在轨道上移动。运转的震动又把费资本摔了回去，帽子遮住眼睛。<br />
“发生什么事了？”泰斯大喊。<br />
“他们正在就发射位置。”浓修大喊。“经度和纬度已经计算妥当，可以把乘客发射到预定的位置——”<br />
“你给我说清楚网子是怎么一回事？”泰斯扯开喉咙大吼。<br />
“法师会飞上第十五层——喔！我向你保证，相当的安全——我们做过研究，事实上，研究结果证明了飞行比走路还要安全——等他飞到了轨迹的最高点，正要开始落下时，第十五层会伸出一张网，像这样抓住他”依修用一只手示范，啪的一声抓住一只蚊子，“然后把他丢——”<br />
“这时间可得算得很准罗！”<br />
“时间铁定准，因为我们研发出一种钩子来进行这项艰巨的任务，不过，”浓修嘟起嘴，皱眉说，“有些时候是投石器会出现误差，不过我们有个委员会——侏儒拉下拉杆，费资本尖叫着飞上天空。<br />
“喔哦！天哪！”浓修瞪着天空。“看来——”<br />
“什么？什么？”泰斯大叫着想要看清楚。<br />
“网子又太早打开了——”浓修摇摇头，“第十五层今天一天已经发生了第二次，这可得提案到安全网公会去讨论并且不能让它再度发生——”<br />
泰斯张大嘴，看着费资本的身影划过天空，借着投石器巨大的力量不断地往上飞。刹那间，坎德人终于懂了浓修在说些什么。<br />
第十五层的网子并没有在法师飞过第十五层之后张开而是在费资本飞越之前就张开了。<br />
费资本像是被打扁的苍蝇般贴在网子上。<br />
有短短的一瞬间，他手脚并用地小心抓着网子、然后、就掉了下来。<br />
钟声和锣声齐鸣。<br />
“别告诉我——”泰斯哀怨地说。“那就是网子失效的警告声。<br />
“你猜对了，但不用太紧张（自鸣得意地笑着）”浓修咯咯笑道，“因为这个警铃会触动第十三层的网子，正好可以——哎啃，看来好像迟了一步，不过没关系，我们还有第十二层——”<br />
“快想想办法！”泰斯尖叫道。<br />
“别穷紧张好不好！”浓修生气地说。“不然我根本没有机会说完我刚刚正要提到的最后后备安全系统，喔，来啦——”<br />
泰斯惊讶地看着第三层墙壁上伸出了六个大筒子，底部打开来，掉出无数的海绵，铺在第一层的广场上。这是为了——显然的——预防所有的网子都没有接到。很幸运的，第九层的网子没有失效，正巧来得及将法师捞起，之后网子随即收拢，把他甩到一个阳台上，侏儒们听见他不停的咒骂声，有点不大敢放他出来。<br />
“这下全部妥当！该你了。”浓修说。<br />
“最后一个问题！”泰斯坐在座位上对着浓修大喊。“万一这个后备安全系统也失效了怎么办？”<br />
“好问题——”浓修高兴地说，“如果这些海绵掉下来不够快，那么另一个警铃公响起，将一大桶水倒到广场中央，然后呢——正好海绵这时候也该倒了下来——要擦干净地上的血迹就很简单了——”技师拉下了拉杆。</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2006/05/29/gnome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>木哈哈哈原来我是Nerd哑，果然没有辱没DEXTER这个名字~</title>
		<link>http://www.limboy.com/2006/04/09/nerd/</link>
		<comments>http://www.limboy.com/2006/04/09/nerd/#comments</comments>
		<pubDate>Sun, 09 Apr 2006 08:24:51 +0000</pubDate>
		<dc:creator>Dexter.Yy</dc:creator>
				<category><![CDATA[科技]]></category>
		<category><![CDATA[纯水]]></category>

		<guid isPermaLink="false">http://localhost/wordpress/index.php/2006/04/09/nerd/</guid>
		<description><![CDATA[刚刚做了一个测试，可能很老了：The Nerd?  Geek? or Dork? Test
还好……我在Dork方面的得分居然很低: Modern, Cool Nerd, 56 % Nerd, 69%  Geek, 34% Dork &#8230;



Modern, Cool Nerd
56 % Nerd, 69%  Geek, 34% Dork  


For The Record:
A Nerd is someone who is passionate about  learning/being smart/academia.
A Geek is someone who is passionate about some  particular area or subject, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://picasaweb.google.com/dexter.yy/BLOG/photo#5048389497337315410"><img src="http://lh6.google.com/image/dexter.yy/Rg97gBSagFI/AAAAAAAAADw/rdAaLzmdt2E/s288/dexter2.jpg" style="width:120px;float:left;margin:0px 10px 10px 0px;" /></a>刚刚做了一个测试，可能很老了：<a href="http://www.okcupid.com/tests/take?testid=9935030990046738815"><b>The Nerd?  Geek? or Dork? Test</b></a></p>
<p>还好……我在Dork方面的得分居然很低: <strong>Modern, Cool Nerd</strong>, 56 % Nerd, 69%  Geek, 34% Dork &#8230;<span id="more-31"></span></p>
<table align="center" cellpadding="20">
<tbody>
<tr>
<td align="center"><span style="font-size:180%;"><b>Modern, Cool Nerd</b></span><br />
56 % Nerd, 69%  Geek, 34% Dork  </td>
</tr>
<tr>
<td>For The Record:</p>
<p>A Nerd is someone who is passionate about  learning/being smart/academia.<br />
A Geek is someone who is passionate about some  particular area or subject, often an obscure or difficult one.<br />
A Dork is  someone who has difficulty with common social expectations/interactions.<br />
You  scored better than half in Nerd and Geek, earning you the title of: Modern,  <b>Cool Nerd</b>.</p>
<p>Nerds didn&#8217;t use to be cool, but in the 90&#8217;s that all  changed. It used to be that, if you were a computer expert, you had to wear  plaid or a pocket protector or suspenders or something that announced to the  world that you couldn&#8217;t quite fit in. Not anymore. Now, the intelligent and  geeky have eked out for themselves a modicum of respect at the very least, and  &#8220;geek is chic.&#8221; The Modern, Cool Nerd is intelligent, knowledgable and always  the person to call in a crisis (needing computer advice/an arcane bit of trivia  knowledge). They are the one you want as your lifeline in Who Wants to Be a  Millionaire (or the one up there, winning the million  bucks)!</p>
<p>Congratulations!</p>
<table cellpadding="20">
<tbody>
<tr>
<td><span>My test tracked 3 variables How you compared to other people <i>your  age and gender</i>:<br />
<blockquote>
<table border="0" cellpadding="0" cellspacing="4">
<tbody>
<tr>
<td valign="center">
<table bgcolor="black" border="0" cellpadding="0" cellspacing="1">
<tbody>
<tr>
<td bgcolor="#b2cfff" height="20" width="84"><a href="http://www.okcupid.com/"><img alt="free online dating" src="http://is2.okcupid.com/graphics/0.gif" border="0" /></a>  </td>
<td bgcolor="white" width="66"><a href="http://www.okcupid.com/"><img alt="free online dating" src="http://is2.okcupid.com/graphics/0.gif" border="0" /></a></td>
</tr>
</tbody>
</table>
</td>
<td valign="center">You scored higher than <b>56%</b> on <b>nerdiness</b>  </td>
</tr>
<tr>
<td valign="center">
<table bgcolor="black" border="0" cellpadding="0" cellspacing="1">
<tbody>
<tr>
<td bgcolor="#b2cfff" height="20" width="141"><a href="http://www.okcupid.com/"><img alt="free online dating" src="http://is2.okcupid.com/graphics/0.gif" border="0" /></a>  </td>
<td bgcolor="white" width="9"><a href="http://www.okcupid.com/"><img alt="free online dating" src="http://is2.okcupid.com/graphics/0.gif" border="0" /></a></td>
</tr>
</tbody>
</table>
</td>
<td valign="center">You scored higher than <b>94%</b> on <b>geekosity</b>  </td>
</tr>
<tr>
<td valign="center">
<table bgcolor="black" border="0" cellpadding="0" cellspacing="1">
<tbody>
<tr>
<td bgcolor="#b2cfff" height="20" width="83"><a href="http://www.okcupid.com/"><img alt="free online dating" src="http://is2.okcupid.com/graphics/0.gif" border="0" /></a>  </td>
<td bgcolor="white" width="67"><a href="http://www.okcupid.com/"><img alt="free online dating" src="http://is2.okcupid.com/graphics/0.gif" border="0" /></a></td>
</tr>
</tbody>
</table>
</td>
<td valign="center">You scored higher than <b>55%</b> on <b>dork  points</b></td>
</tr>
</tbody>
</table>
</blockquote>
<p></span></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.limboy.com/2006/04/09/nerd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

