<?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"
	>

<channel>
	<title>M.J.</title>
	<atom:link href="http://www.mijia.org/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.mijia.org/blog</link>
	<description>虚心实力 让我们面对现实 让我们忠于理想</description>
	<pubDate>Fri, 27 Apr 2012 03:02:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>第一次讲Python</title>
		<link>http://www.mijia.org/blog/?p=303</link>
		<comments>http://www.mijia.org/blog/?p=303#comments</comments>
		<pubDate>Fri, 27 Apr 2012 03:02:08 +0000</pubDate>
		<dc:creator>Jia Mi</dc:creator>
		
		<category><![CDATA[develop]]></category>

		<category><![CDATA[code]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.mijia.org/blog/?p=303</guid>
		<description><![CDATA[第一次当众（五个人）讲Python，呵呵，没什么底气，完全就是这几年做Django的经验，加上点乱七八糟动态语言+各种范式的理解。题目是2 things about python。因为以前看过一个文章就是每件事情你都可以挑出来两条说他最特别之处或者本质之处，好像贸易有人说是buy low，sell high，呵呵。从我自己的感觉来说，使用Python给我印象最深刻的两件事是List+Sugar。
如果不是用大量面向对象特性（即便用DJango其实也不是很OO），基本上Python对于数据的处理都围绕着List结构，而很多其他结构例如Tuple、Dict、Set都基本上算是List的变种，而他们的方法有很多相近之处，所以先是详细讲了这几个结构的基本操作，然后就是遍历iterator，最基本的List处理需求，而Python从可遍历出发延伸出iterable的容器抽象，只要实现__iter__和next基本就是可以被遍历的东西，可以闭眼不负责任说他是List，然后自然就是牛x的List Comprehension，太甜的东西，大家开始都接收不了，不过一旦接收真是会很享受。跟iterator相对应的用来方便产生List的还有个牛x的Generator，不过大家接受程度一般，这个东西思维接收起来还真是要费劲一些，我自己在实际应用中也使用的很少。
Python由于大量的标准库支撑和语法糖支持会让人对他的甜度无法忘记，从all、any到map、reduce、filter甜度逐渐增加，而大量的东西隐藏在角落中一如zip之流，不品尝则以，一品尝确实甜掉牙齿……好吧，我有点过了，要冷静，呵呵。最后讲了Decorator，好吧～
想用一个多小时把Python全讲清楚是不现实的，我也不知道自己总结的List+Sugar套路是否有效，看结果的话，好像不太好，哈哈，所以抛砖引玉，看看大家有什么高见
PS：推荐前Amazon大牛Steve Yegge一篇关于各种语言的吐槽（http://code.google.com/p/windows-config/wiki/TourDeBabel）
PS2：在停顿一年之后，重新看SICP，再次停顿在第二章结束，这种书只有在丽江小酒吧的阁楼上才能看下去，:)
]]></description>
			<content:encoded><![CDATA[<p>第一次当众（五个人）讲Python，呵呵，没什么底气，完全就是这几年做Django的经验，加上点乱七八糟动态语言+各种范式的理解。题目是2 things about python。因为以前看过一个文章就是每件事情你都可以挑出来两条说他最特别之处或者本质之处，好像贸易有人说是buy low，sell high，呵呵。从我自己的感觉来说，使用Python给我印象最深刻的两件事是List+Sugar。</p>
<p>如果不是用大量面向对象特性（即便用DJango其实也不是很OO），基本上Python对于数据的处理都围绕着List结构，而很多其他结构例如Tuple、Dict、Set都基本上算是List的变种，而他们的方法有很多相近之处，所以先是详细讲了这几个结构的基本操作，然后就是遍历iterator，最基本的List处理需求，而Python从可遍历出发延伸出iterable的容器抽象，只要实现__iter__和next基本就是可以被遍历的东西，可以闭眼不负责任说他是List，然后自然就是牛x的List Comprehension，太甜的东西，大家开始都接收不了，不过一旦接收真是会很享受。跟iterator相对应的用来方便产生List的还有个牛x的Generator，不过大家接受程度一般，这个东西思维接收起来还真是要费劲一些，我自己在实际应用中也使用的很少。</p>
<p>Python由于大量的标准库支撑和语法糖支持会让人对他的甜度无法忘记，从all、any到map、reduce、filter甜度逐渐增加，而大量的东西隐藏在角落中一如zip之流，不品尝则以，一品尝确实甜掉牙齿……好吧，我有点过了，要冷静，呵呵。最后讲了Decorator，好吧～</p>
<p>想用一个多小时把Python全讲清楚是不现实的，我也不知道自己总结的List+Sugar套路是否有效，看结果的话，好像不太好，哈哈，所以抛砖引玉，看看大家有什么高见</p>
<p>PS：推荐前Amazon大牛Steve Yegge一篇关于各种语言的吐槽（http://code.google.com/p/windows-config/wiki/TourDeBabel）</p>
<p>PS2：在停顿一年之后，重新看SICP，再次停顿在第二章结束，这种书只有在丽江小酒吧的阁楼上才能看下去，:)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mijia.org/blog/?feed=rss2&amp;p=303</wfw:commentRss>
		</item>
		<item>
		<title>物来则应 过去不留——记下2011</title>
		<link>http://www.mijia.org/blog/?p=302</link>
		<comments>http://www.mijia.org/blog/?p=302#comments</comments>
		<pubDate>Wed, 04 Jan 2012 03:14:41 +0000</pubDate>
		<dc:creator>Jia Mi</dc:creator>
		
		<category><![CDATA[Book]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[life]]></category>

		<category><![CDATA[2011]]></category>

		<category><![CDATA[2012]]></category>

		<category><![CDATA[books]]></category>

		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://www.mijia.org/blog/?p=302</guid>
		<description><![CDATA[tl;dr. (Too long, don&#8217;t read.)
2011年对我来说变化最大的事情（没有之一）是xxx（以后再来填空）。然后就是自己离开了工作四年的Mozilla。那就从这个开始说起吧～
离开Mozilla已经一个多月了，不过依然在订阅着Mozilla的planning、dev邮件列表，依然每天还在登入IRC上的#developers频道看有什么牛x的东西出现。本来想单独写Mozilla昨天今天明天的东西，后来想想不太愿意写了，简单说点，放到这篇2011的总结中，:)。
我喜欢昨天的Mozilla，一如最初加入的片刻，喜欢以前的CEO John Lilly，觉得他很酷，很有趣，很能读书，而以前的Mozilla是那个Code Rush延伸出来的Mozilla，是那个当年跟微软对抗的Mozilla，是那个聚集了一些高中天才少年发展至今的Mozilla，我贡献无多，倒是始终庆幸自己是火狐粉丝中最幸运的一位，可以近距离接触这些牛人，亲身触摸那段不长却永远铭刻的历史&#8230;&#8230;记得有次Stuart来中国做活动，跟他聊天的时候，突然觉得他好像就是Code Rush纪录片里面那个牛x的高中生，就问他“Are you the middle high school student in the Code Rush?”，他很淡定“Yes, I am, glad that you know that.”  ——What the fuxx，这难道不是天下最酷的事情吗～
Mozilla的今天，我不知道该怎么说，上个月几个有趣的事件也让大家开始唱衰Firefox，什么Google不再续签合同了，什么搜狗收购火狐中国了，什么360雇佣猎头给所有火狐中国员工打电话之类的——我也接到这个电话了，然后说已经离开火狐了，对方居然要我提供原来同事联系方式，我说不给，他说都走了无所谓了，我说去你妈的——其实，从Chrome出来一段时间之后，去做活动都会跟来的同学聊天问问他们究竟喜欢什么，如果你去接触85前的同学会发现他们还会依赖Firebug，会轮番使用火狐和Chrome，而如果去接触85后的同学，你会发现Firebug对于他们来说完全是陌生的，Web Inspector才是他们心中的神器，曾经跟一个89年的同学仔细讨论了一下Firebug和Web Inspector，始终无法说服他，呵呵。用我接触的几十位转到Chrome上的同学话说，“不思进取”，我说的好听点，“没有变化”。浏览器从93年到今天差不多小20年了，在这段时间里没有什么太大变化，“快”很重要，不过“变化”比快还要重要，因为人们用这个东西已经n年都是这个样子了&#8230;&#8230;Firefox从4开始发生了很大的变化，在4准备期间，我一直觉得Firefox 4会取得很大的成功，结果证明也确实如此，当时甚至有很多人从Chrome切换回了Firefox，:)。后面其实是快速发布的问题，5、6基本是小功能，本来期望8会是个很大的发布，毕竟速度和内存问题稍有好转，结果也没有很特别，我觉得算是被快速发布拖累了，本可以谨慎一些的，虽然人家有做手机操作系统一周迭代发布的牛x案例，不过有很多问题其实是在快速发布计划之前就能想到的，本可以谨慎一些的。Chrome一些特性融合在一起“变化”的更协调、更整体，快、无缝升级、单独的扩展API层&#8230;&#8230;Firefox从5开始“变化”的拖泥带水，每一个变化的特性浅尝辄止&#8230;&#8230;
明天怎么样，我不知道，B2G是一个很有潜力的项目，万一未来OS去浏览器化的趋势真的到来，第三方浏览器确实很难在别人的平台上立足；但是当下过多的把重心放到Mobile而忽略桌面我不觉得是件明智的事情，因为桌面浏览器的体验远没有到尽头，Chrome的出现其实是一个新时代的开启，OS去浏览器化也不会马上就出现，应该继续为Firefox的核心用户群提供更卓越的体验。我也始终相信Mozilla不会那么轻易被打败，Kindle Fire上的Silk就证明浏览器不是那么好做的，Mozilla的技术没有那么容易消亡的&#8230;&#8230;
就这样吧，还是没收住说了这么多，还得写点自己的总结呢。
这一年，很欣慰的是自己还写了很多代码的，从后端到前端，从结构到页面配色，做了一个完成度85%的项目。比较有意思的一些“实做”包括Newsfeed、Redis based Auto-Complete Service（包括前端jQuery的自动补全plugin），基本抄袭了一遍Quora，喜欢上了#3399CC，后来在Paul Rand那本小设计书上发现了#EB4924，现在把微博自定义模板都配成这两个颜色，后来瞎看了两周Topic Model和LDA（记得当时@yongsun也在看，偶尔还在微博上交流一下），然后花了一周时间在node.js上用CoffeeScript实现了一遍Gibbs Sampling的LDA方案把火狐社区的8000+篇问答进行自动分类，后来了解到LDA蛮依赖分词效果的，我分词偷懒只用ngram做的，所以效果一般，代码在这里。这一年也有一些有趣的东西出现，有少量抄袭，呵呵，Pinterest最早开始的时候就喜欢这个瀑布流，抄过来用在了火狐社区的扩展精选集页面中；找工作时候第一版简历没有用心，@chenqj说我简历太糙，外加几个公司完全没消息，正好Facebook刚揭秘Timeline，于是花了一晚上把自己简历用Facebook Timeline的形式做成了网页版，效果不错，:)。做了一套跟瀑布流有些差别类似杂志分块布局内容的原型，为此还在豆瓣上问Sophie推荐布局设计的书，被推荐去follow陆智昌，感觉话说两岔了，最后还是翻了两本排版设计原理之类的书（不过貌似很多人推崇陆智昌大师的封面设计，这个真不懂了）；昨天看kejun的博客说新版豆瓣猜会是magazine-style的强交互，倒是非常期待看看体验怎么样——我自己瞎猜豆瓣新首页会是类似Facebook的Top News + Ticker的，回头看看猜中没。年底发现老外造了个词，Designeer，很喜欢，确定为自己努力的方向，:)
这一年，还很欣慰的是看了一些书。































可能这些书中对我影响最大的是《原本大学微言》，这个还是好友媳妇听了一个牛x大哥推荐之后转述给我的，“要看《大学》”，看得不是原文，而是南大师的讲解，有点相见恨晚，还会再看几遍，希望将来能够教给自己的孩子，重要的不是后面齐家治国的部分，而是中国古代思想中对自身的修为，内修之后才能外用，知止定静安虑得，内在的修炼不简单，2012还需努力。
]]></description>
			<content:encoded><![CDATA[<p>tl;dr. (Too long, don&#8217;t read.)</p>
<p>2011年对我来说变化最大的事情（没有之一）是xxx（以后再来填空）。然后就是自己离开了工作四年的Mozilla。那就从这个开始说起吧～</p>
<p>离开Mozilla已经一个多月了，不过依然在订阅着Mozilla的planning、dev邮件列表，依然每天还在登入IRC上的#developers频道看有什么牛x的东西出现。本来想单独写Mozilla昨天今天明天的东西，后来想想不太愿意写了，简单说点，放到这篇2011的总结中，:)。</p>
<p>我喜欢昨天的Mozilla，一如最初加入的片刻，喜欢以前的CEO John Lilly，觉得他很酷，很有趣，很能读书，而以前的Mozilla是那个Code Rush延伸出来的Mozilla，是那个当年跟微软对抗的Mozilla，是那个聚集了一些高中天才少年发展至今的Mozilla，我贡献无多，倒是始终庆幸自己是火狐粉丝中最幸运的一位，可以近距离接触这些牛人，亲身触摸那段不长却永远铭刻的历史&#8230;&#8230;记得有次Stuart来中国做活动，跟他聊天的时候，突然觉得他好像就是Code Rush纪录片里面那个牛x的高中生，就问他“Are you the middle high school student in the Code Rush?”，他很淡定“Yes, I am, glad that you know that.”  ——What the fuxx，这难道不是天下最酷的事情吗～</p>
<p>Mozilla的今天，我不知道该怎么说，上个月几个有趣的事件也让大家开始唱衰Firefox，什么Google不再续签合同了，什么搜狗收购火狐中国了，什么360雇佣猎头给所有火狐中国员工打电话之类的——我也接到这个电话了，然后说已经离开火狐了，对方居然要我提供原来同事联系方式，我说不给，他说都走了无所谓了，我说去你妈的——其实，从Chrome出来一段时间之后，去做活动都会跟来的同学聊天问问他们究竟喜欢什么，如果你去接触85前的同学会发现他们还会依赖Firebug，会轮番使用火狐和Chrome，而如果去接触85后的同学，你会发现Firebug对于他们来说完全是陌生的，Web Inspector才是他们心中的神器，曾经跟一个89年的同学仔细讨论了一下Firebug和Web Inspector，始终无法说服他，呵呵。用我接触的几十位转到Chrome上的同学话说，“不思进取”，我说的好听点，“没有变化”。浏览器从93年到今天差不多小20年了，在这段时间里没有什么太大变化，“快”很重要，不过“变化”比快还要重要，因为人们用这个东西已经n年都是这个样子了&#8230;&#8230;Firefox从4开始发生了很大的变化，在4准备期间，我一直觉得Firefox 4会取得很大的成功，结果证明也确实如此，当时甚至有很多人从Chrome切换回了Firefox，:)。后面其实是快速发布的问题，5、6基本是小功能，本来期望8会是个很大的发布，毕竟速度和内存问题稍有好转，结果也没有很特别，我觉得算是被快速发布拖累了，本可以谨慎一些的，虽然人家有做手机操作系统一周迭代发布的牛x案例，不过有很多问题其实是在快速发布计划之前就能想到的，本可以谨慎一些的。Chrome一些特性融合在一起“变化”的更协调、更整体，快、无缝升级、单独的扩展API层&#8230;&#8230;Firefox从5开始“变化”的拖泥带水，每一个变化的特性浅尝辄止&#8230;&#8230;</p>
<p>明天怎么样，我不知道，B2G是一个很有潜力的项目，万一未来OS去浏览器化的趋势真的到来，第三方浏览器确实很难在别人的平台上立足；但是当下过多的把重心放到Mobile而忽略桌面我不觉得是件明智的事情，因为桌面浏览器的体验远没有到尽头，Chrome的出现其实是一个新时代的开启，OS去浏览器化也不会马上就出现，应该继续为Firefox的核心用户群提供更卓越的体验。我也始终相信Mozilla不会那么轻易被打败，Kindle Fire上的Silk就证明浏览器不是那么好做的，Mozilla的技术没有那么容易消亡的&#8230;&#8230;</p>
<p>就这样吧，还是没收住说了这么多，还得写点自己的总结呢。</p>
<p>这一年，很欣慰的是自己还写了很多代码的，从后端到前端，从结构到页面配色，做了一个完成度85%的项目。比较有意思的一些“实做”包括Newsfeed、Redis based Auto-Complete Service（包括前端jQuery的自动补全plugin），基本抄袭了一遍Quora，喜欢上了#3399CC，后来在Paul Rand那本小设计书上发现了#EB4924，现在把微博自定义模板都配成这两个颜色，后来瞎看了两周Topic Model和LDA（记得当时@yongsun也在看，偶尔还在微博上交流一下），然后花了一周时间在node.js上用CoffeeScript实现了一遍Gibbs Sampling的LDA方案把火狐社区的8000+篇问答进行自动分类，后来了解到LDA蛮依赖分词效果的，我分词偷懒只用ngram做的，所以效果一般，代码在<a href="https://github.com/mijia/coffee-lda">这里</a>。这一年也有一些有趣的东西出现，有少量抄袭，呵呵，Pinterest最早开始的时候就喜欢这个瀑布流，抄过来用在了火狐社区的扩展<a href="http://mozilla.com.cn/selections/group/5/">精选集页面</a>中；找工作时候第一版简历没有用心，@chenqj说我简历太糙，外加几个公司完全没消息，正好Facebook刚揭秘Timeline，于是花了一晚上把自己简历用Facebook Timeline的形式做成了网页版，效果不错，:)。做了一套跟瀑布流有些差别类似杂志分块布局内容的原型，为此还在豆瓣上问Sophie推荐布局设计的书，被推荐去follow陆智昌，感觉话说两岔了，最后还是翻了两本排版设计原理之类的书（不过貌似很多人推崇陆智昌大师的封面设计，这个真不懂了）；昨天看<a href="http://hikejun.com/blog/2011/12/31/%E9%A1%BA%E6%B5%81%E8%80%8C%E4%B8%8B-%E6%8A%8A%E6%A2%A6%E5%81%9A%E5%AE%8C-2011/">kejun的博客</a>说新版豆瓣猜会是magazine-style的强交互，倒是非常期待看看体验怎么样——我自己瞎猜豆瓣新首页会是类似Facebook的Top News + Ticker的，回头看看猜中没。年底发现老外造了个词，Designeer，很喜欢，确定为自己努力的方向，:)</p>
<p>这一年，还很欣慰的是看了一些书。</p>
<table border="0">
<tbody>
<tr>
<td><a href="http://book.douban.com/subject/3682751/"><img title="谈判力" src="http://img3.douban.com/spic/s4424889.jpg" alt="谈判力" /></a></td>
<td><a href="http://book.douban.com/subject/4713687/"><img title="创新的神话" src="http://img3.douban.com/spic/s4253314.jpg" alt="创新的神话" /></a></td>
<td><a href="http://book.douban.com/subject/3567853/"><img title="Getting Real" src="http://img3.douban.com/spic/s4126286.jpg" alt="Getting Real" /></a></td>
<td><a href="http://book.douban.com/subject/4212921/"><img title="Python高级编程" src="http://img1.douban.com/spic/s4163751.jpg" alt="Python高级编程" /></a></td>
<td><a href="http://book.douban.com/subject/1066108/"><img title="易经杂说" src="http://img3.douban.com/spic/s1302784.jpg" alt="易经杂说" /></a></td>
<td><a href="http://book.douban.com/subject/5414391/"><img title="寻路中国" src="http://img3.douban.com/spic/s4575849.jpg" alt="寻路中国" /></a></td>
<td><a href="http://book.douban.com/subject/5914587/"><img title="启示录" src="http://img3.douban.com/spic/s4704806.jpg" alt="启示录" /></a></td>
</tr>
<tr>
<td><a href="http://book.douban.com/subject/3116096/"><img title="象与骑象人" src="http://img3.douban.com/spic/s3350086.jpg" alt="象与骑象人" /></a></td>
<td><a href="http://book.douban.com/subject/3738020/"><img title="Algorithms of the Intelligent Web" src="http://img1.douban.com/spic/s4706422.jpg" alt="Algorithms of the Intelligent Web" /></a></td>
<td><a href="http://book.douban.com/subject/3093012/"><img title="Collective Intelligence in Action" src="http://img3.douban.com/spic/s3539446.jpg" alt="Collective Intelligence in Action" /></a></td>
<td><a href="http://book.douban.com/subject/4929844/"><img title="怪诞行为学" src="http://img3.douban.com/spic/s4699377.jpg" alt="怪诞行为学" /></a></td>
<td><a href="http://book.douban.com/subject/6782272/"><img title="Redis Cookbook" src="http://img3.douban.com/spic/s6833933.jpg" alt="Redis Cookbook" /></a></td>
<td><a href="http://book.douban.com/subject/4814087/"><img title="59 Seconds" src="http://img1.douban.com/spic/s4339592.jpg" alt="59 Seconds" /></a></td>
<td><a href="http://book.douban.com/subject/5391582/"><img title="Mining the Social Web" src="http://img3.douban.com/spic/s4646359.jpg" alt="Mining the Social Web" /></a></td>
</tr>
<tr>
<td><a href="http://book.douban.com/subject/1418567/"><img title="易经系传别讲" src="http://img3.douban.com/spic/s1559153.jpg" alt="易经系传别讲" /></a></td>
<td><a href="http://book.douban.com/subject/4257259/"><img title="设计是什么" src="http://img1.douban.com/spic/s4153181.jpg" alt="设计是什么" /></a></td>
<td><a href="http://book.douban.com/subject/1248105/"><img title="原本大学微言" src="http://img3.douban.com/spic/s2000604.jpg" alt="原本大学微言" /></a></td>
<td><a href="http://book.douban.com/subject/2238320/"><img title="版式设计原理" src="http://img1.douban.com/spic/s2703492.jpg" alt="版式设计原理" /></a></td>
<td><a href="http://book.douban.com/subject/6798611/"><img title="史蒂夫·乔布斯传" src="http://img1.douban.com/spic/s6974202.jpg" alt="史蒂夫·乔布斯传" /></a></td>
<td><a href="http://book.douban.com/subject/4213390/"><img title="包豪斯理想" src="http://img3.douban.com/spic/s4241798.jpg" alt="包豪斯理想" /></a></td>
<td><a href="http://book.douban.com/subject/4243770/"><img title="创新者的窘境" src="http://img1.douban.com/spic/s6170921.jpg" alt="创新者的窘境" /></a></td>
</tr>
</tbody>
</table>
<p>可能这些书中对我影响最大的是《原本大学微言》，这个还是好友媳妇听了一个牛x大哥推荐之后转述给我的，“要看《大学》”，看得不是原文，而是南大师的讲解，有点相见恨晚，还会再看几遍，希望将来能够教给自己的孩子，重要的不是后面齐家治国的部分，而是中国古代思想中对自身的修为，内修之后才能外用，知止定静安虑得，内在的修炼不简单，2012还需努力。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mijia.org/blog/?feed=rss2&amp;p=302</wfw:commentRss>
		</item>
		<item>
		<title>Intelligence at the Interface</title>
		<link>http://www.mijia.org/blog/?p=301</link>
		<comments>http://www.mijia.org/blog/?p=301#comments</comments>
		<pubDate>Tue, 18 Oct 2011 03:17:00 +0000</pubDate>
		<dc:creator>Jia Mi</dc:creator>
		
		<category><![CDATA[tech]]></category>

		<category><![CDATA[AI]]></category>

		<category><![CDATA[intelligence]]></category>

		<category><![CDATA[interface]]></category>

		<category><![CDATA[siri]]></category>

		<guid isPermaLink="false">http://www.mijia.org/blog/?p=301</guid>
		<description><![CDATA[The role of semantic web at the Interface:

Reasoning about human context
Harvesting collective knowledge

Contexts worth reasoning about:

Location: Geosemantics
Identity: FOAF, PURLS, and beyond
Community: socially constructed meaning
Action: Services integration

Knowledge worth harvesting

Collective Experience: stories, photos, reviews
Collective Attention: useful links, articles, perspectives
Collective Creation: semantic wikis, data commons

Inferences worth making: The Gigantic Join (composing and integrating data across applications).
Knowledge, Reasoning, Collective [...]]]></description>
			<content:encoded><![CDATA[<p>The role of semantic web at the Interface:</p>
<ul>
<li>Reasoning about human context</li>
<li>Harvesting collective knowledge</li>
</ul>
<p>Contexts worth reasoning about:</p>
<ul>
<li>Location: Geosemantics</li>
<li>Identity: FOAF, PURLS, and beyond</li>
<li>Community: socially constructed meaning</li>
<li>Action: Services integration</li>
</ul>
<p>Knowledge worth harvesting</p>
<ul>
<li>Collective Experience: stories, photos, reviews</li>
<li>Collective Attention: useful links, articles, perspectives</li>
<li>Collective Creation: semantic wikis, data commons</li>
</ul>
<p>Inferences worth making:<strong> The Gigantic Join</strong> (composing and integrating data across applications).</p>
<p>Knowledge, Reasoning, Collective Intelligence:</p>
<p><img src="http://media.tumblr.com/tumblr_lt8rk8m8w81qz6inx.png" alt="" /></p>
<p>Last word: if we want our technology to have world-changing impact, bring it to the interface</p>
<ul>
<li>get useful knowledge from all those intelligent people on the internet</li>
<li>give the benefit of this knowledge to everyone</li>
</ul>
<p>—-</p>
<p>from <a href="http://tomgruber.org/writing/semtech08.htm">Tom Gruber (CTO and co-founder of Siri, inc)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mijia.org/blog/?feed=rss2&amp;p=301</wfw:commentRss>
		</item>
		<item>
		<title>永驻记忆的乔爷</title>
		<link>http://www.mijia.org/blog/?p=300</link>
		<comments>http://www.mijia.org/blog/?p=300#comments</comments>
		<pubDate>Mon, 10 Oct 2011 03:00:48 +0000</pubDate>
		<dc:creator>Jia Mi</dc:creator>
		
		<category><![CDATA[life]]></category>

		<category><![CDATA[Steve Jobs]]></category>

		<guid isPermaLink="false">http://www.mijia.org/blog/?p=300</guid>
		<description><![CDATA[那天也不知道怎么就那么精神，大半夜的睡不着觉，拿着手机窝在丽江的一家小客栈中盯着微博看Apple发布会的直播，是否有iPhone5的消息不太关键，只是想看看发布会还会不会有乔爷的风格，或者乔爷会不会突然出现在发布会上。看完发布会草草睡去，没想到过了一天，乔爷去世了，心情特别沉痛，在微博上写道：
Jobs在我心目中是一位伟大的Mentor，教会我很多事情，会永远纪念他！
在假期中，不断的从网上微博上看到铺天盖地对乔爷的颂扬。直到今天看到Mozilla前任CEO John Lilly发文纪念乔爷，醍醐灌顶……插曲之，回京的飞机上，媳妇提醒我看前面那人的报纸，只见参考消息头版上偌大的字写着“中国呼唤乔布斯式的创新”，不禁唏嘘～
翻译John Lilly文章中的几段：
昨天在Twi上，Naval说：“我从来没有见过这位伟大的导师，我超级希望自己变成他那样。但是，他给我们的消息却是相反的，他要我们充满激情的做自己。”
我觉得，这就是了，这就是乔爷用一生传达的最重要的知识。不要尝试变成乔爷。不要尝试去变成任何人。
做自己，然后累死也要努力去把美妙的事情带到人世间。想清楚你想怎么去达成，用你自己的方法，用你自己的词汇，哪怕承受最大的辛苦、付出最多的努力、经历最长的时间。
我希望，乔爷最永存世间的知识不是关于科技或者管理或者媒体或者沟通，甚至不是设计——他在这些领域进行的工作当然不会消亡——我只是觉得这都不是最重要最核心的事情。
我希望人们真正领会的知识，从内心真正意思到的是——做自己，付出最多的努力，去给我们的世界带来重要并持久的影响。可能是技术领域，还可能是艺术、体育，或者是政府、社会公平——哪怕只是影响自己的家人和最亲近的朋友。
找到你最希望做的事情，然后努力的去做，每一天！
我永远都会想念乔爷，永远记得乔爷的那些故事、那些身影。
望他安息，此致敬礼！
]]></description>
			<content:encoded><![CDATA[<p>那天也不知道怎么就那么精神，大半夜的睡不着觉，拿着手机窝在丽江的一家小客栈中盯着微博看Apple发布会的直播，是否有iPhone5的消息不太关键，只是想看看发布会还会不会有乔爷的风格，或者乔爷会不会突然出现在发布会上。看完发布会草草睡去，没想到过了一天，乔爷去世了，心情特别沉痛，在微博上写道：</p>
<blockquote><p>Jobs在我心目中是一位伟大的Mentor，教会我很多事情，会永远纪念他！</p></blockquote>
<p>在假期中，不断的从网上微博上看到铺天盖地对乔爷的颂扬。直到今天看到Mozilla前任CEO <a href="http://john.jubjubs.net/2011/10/09/steve-jobs/">John Lilly发文纪念乔爷</a>，醍醐灌顶……插曲之，回京的飞机上，媳妇提醒我看前面那人的报纸，只见参考消息头版上偌大的字写着“中国呼唤乔布斯式的创新”，不禁唏嘘～</p>
<p>翻译John Lilly文章中的几段：</p>
<blockquote><p>昨天在Twi上，Naval说：“我从来没有见过这位伟大的导师，我超级希望自己变成他那样。但是，他给我们的消息却是相反的，他要我们充满激情的做自己。”</p>
<p>我觉得，这就是了，这就是乔爷用一生传达的最重要的知识。不要尝试变成乔爷。不要尝试去变成任何人。</p>
<p>做自己，然后累死也要努力去把美妙的事情带到人世间。想清楚你想怎么去达成，用你自己的方法，用你自己的词汇，哪怕承受最大的辛苦、付出最多的努力、经历最长的时间。</p>
<p>我希望，乔爷最永存世间的知识不是关于科技或者管理或者媒体或者沟通，甚至不是设计——他在这些领域进行的工作当然不会消亡——我只是觉得这都不是最重要最核心的事情。</p>
<p>我希望人们真正领会的知识，从内心真正意思到的是——做自己，付出最多的努力，去给我们的世界带来重要并持久的影响。可能是技术领域，还可能是艺术、体育，或者是政府、社会公平——哪怕只是影响自己的家人和最亲近的朋友。</p>
<p>找到你最希望做的事情，然后努力的去做，每一天！</p></blockquote>
<p>我永远都会想念乔爷，永远记得乔爷的那些故事、那些身影。</p>
<p>望他安息，此致敬礼！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mijia.org/blog/?feed=rss2&amp;p=300</wfw:commentRss>
		</item>
		<item>
		<title>Hey you, don&#8217;t help them to bury the light</title>
		<link>http://www.mijia.org/blog/?p=299</link>
		<comments>http://www.mijia.org/blog/?p=299#comments</comments>
		<pubDate>Tue, 26 Jul 2011 02:07:21 +0000</pubDate>
		<dc:creator>Jia Mi</dc:creator>
		
		<category><![CDATA[life]]></category>

		<category><![CDATA[disaster]]></category>

		<guid isPermaLink="false">http://www.mijia.org/blog/?p=299</guid>
		<description><![CDATA[Hey you, out there in the cold
Getting lonely, getting old
Can you feel me?
Hey you, standing in the aisles
With itchy feet and fading smiles
Can you feel me?
 Hey you, don&#8217;t help them to bury the light
 Don&#8217;t give in without a fight.
Hey you, out there on your own
Sitting naked by the phone
Would you touch me?
Hey you, [...]]]></description>
			<content:encoded><![CDATA[<p>Hey you, out there in the cold<br />
Getting lonely, getting old<br />
Can you feel me?<br />
Hey you, standing in the aisles<br />
With itchy feet and fading smiles<br />
Can you feel me?<br />
<strong> Hey you, don&#8217;t help them to bury the light</strong><br />
<strong> Don&#8217;t give in without a fight.</strong><br />
Hey you, out there on your own<br />
Sitting naked by the phone<br />
Would you touch me?<br />
Hey you, with you ear against the wall<br />
Waiting for someone to call out<br />
Would you touch me?<br />
Hey you, would you help me to carry the stone?<br />
Open your heart, I&#8217;m coming home.<br />
But it was only fantasy.<br />
The wall was too high,<br />
As you can see.<br />
No matter how he tried,<br />
He could not break free.<br />
And the worms ate into his brain.<br />
Hey you, standing in the road<br />
always doing what you&#8217;re told,<br />
Can you help me?<br />
Hey you, out there beyond the wall,<br />
Breaking bottles in the hall,<br />
Can you help me?<br />
<strong>Hey you, don&#8217;t tell me there&#8217;s no hope at all<br />
Together we stand, divided we fall.</strong></p>
<p>—— Pink Floyd</p>
<p><strong>天佑我们华夏子孙！</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mijia.org/blog/?feed=rss2&amp;p=299</wfw:commentRss>
		</item>
		<item>
		<title>诸神：JavaScript是Web的汇编语言</title>
		<link>http://www.mijia.org/blog/?p=298</link>
		<comments>http://www.mijia.org/blog/?p=298#comments</comments>
		<pubDate>Wed, 20 Jul 2011 07:22:41 +0000</pubDate>
		<dc:creator>Jia Mi</dc:creator>
		
		<category><![CDATA[develop]]></category>

		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.mijia.org/blog/?p=298</guid>
		<description><![CDATA[网上看到一篇博客讨论JavaScript是Web的汇编语言这个话题，看到JS诸神都发表了一些观点，争取了作者同意之后把原文翻译在这里，其实这篇博客是作者之前讨论的续轮，大家有兴趣的话，可以去看看第一篇。
===
一些朋友认为之前的文章&#8221;JavaScript是Web的汇编语言&#8220;简直是无稽之谈，我问了一些JavaScript的大牛们关于这个讨论的观点，包括 Brendan Eich （JavaScript的发明者），Douglas Crockford （JSON的发明者）和 Mike Shaver  （Mozilla的技术VP）。在他们的授权下，列出我们的邮件讨论。
Mike Shaver:
我以前听过类似的比较，我认为基本上是正确的。尽管他忽略了对JS开发工程的大量投入，因为汇编语言是面向机器开发设计的，不包含对人友好的词法（尤其是现代汇编语言）。
Brendan Eich:
我几年前说过 &#8220;JS是Web的x86&#8221; [可能是在JSConf大会上]，不过我不是原创。[今年，Nick Thompson在 Hacker News上也说过类似的话。]
关键是，JS正在变得越来越接近底层语言。 当然，他也有高级的工具类。
Shaver是对的，没有高级宏处理的汇编语言对于开发者来说不是很好，同样从安全角度来说也不是很好。JS却不是这样，所以，这个类比需要一些限定条件，否则，就很愚蠢了。
将高级函数编程、内存安全等特性同面向底层的工具类（例如，有类型数组、马上到来的ES.next扩展的类型数组、二进制数据等）融合在一起可以得到一个比汇编语言要高级强大很多的编程语言，当然，内存安全特性是首当其冲最突出的差别。
Douglas Crockford:
我认为这样说更贴切，就是JavaScript是Web的虚拟机。我们以前一直认为Java的虚拟机会是Web的虚拟机，事实证明，JavaScript才是。
同Java虚拟机的二级制码校对器相比，JavaScript的解析器能够更高效的保障代码的安全。JavaScript更好的保证了“书写一次，到处运行”的承诺，也许就是因为他在更高的级别上运行，避免了很多底层的边缘案例。之后的事情就都由图灵机来保证了。
有很多人都拒绝承认JavaScript全部正确的可能性，我以前就是这么认为的。不过现在我不断的被其中的卓越震惊。
Brendan Eich又说:
Doug关于源码打败二进制码的观点很不错。我的朋友 UC Irvine大学的Michael  Franz教授很早以前展示了一段基于Java二进制码校对器的 O(n^4) 复杂度的程序（跑光了计算周期，拒绝服务）。使用压缩的源码，JS绝对更适合移植并且能够足够快的进行词法分析/解析。
使用源码级别的解释同样可以避免Java二进制码带来的蠢问题：如果Java的底层形式被冻结的话，Java的源码（高级部分）就无法向前演进，Java编程语言一直以来都害怕破坏对Java二进制码的兼容性。这很大程度上让内置类和范型变得一团糟——最后Sun还是打破了Java二进制码的兼容。
之前在Hacker News上，Nick Thompson说:
我不可否认的偏见：我花了两年的时间试图优雅的让JVM同JavaScript进行通信——在Netscape我们有很多人认为二进制码更适合作为移动代码的基础。但是Sun让这一切变得非常的困难，他们从头就把软件层次做的非常臃肿。他们不希望Java同任何其他语言进行合作，只允许被嵌入到其他软件中。他们使用解释型语言写了字符串处理部分的代码，而不愿意使用C！据我所知，Sun把Netscape当作替代Windows幻想中的唯一候选——Netscape为当时Java唯一的重要客户。当时任何尝试使用Java的开发者都得承受差不多的痛苦。
与此同时，Brendan在做着差不多需要10个工程师+3个客户服务才能完成的工作，开始关注网页作者的实际需求，例如，将JS代码融合到HTML中、快速读取，同浏览器其他部分集成，以及同其他的浏览器厂商一起将JS变为开放的标准。
所以，现在JS是Web的x86汇编语言——不够想象中的优雅，但是足够搞定工作（从这个角度来看，GWT是最滑稽的例子）。JS将是“差即是好”的经典案例，Java只是从下往上看比较不错而已。同样的，实际上JS可以非常牛x。谁想要取代他，那只能祝他好运了。
当然了，关键是，没有类比就是最完美的。JavaScript作为一个语言看上去当然不会像汇编语言。作为类比的话，我们可以看到：

JavaScript是普适的（真正的书写一次，到处运行）
快！而且会变得更快！
Javascript是Web编程语言最基础的底层语言。
你可以把他当作另外语言的目标语言。

这个话题经常会在Hacker News上出现。

“我们现在拥有的JavaScript语言是客户端的汇编语言。我们无法轻易的改变他，但是我们可以在他基础上作出更好的工具。” —— jonnycat

===
后记：比较难翻，可能会有些词不达意，还希望大家多多批评。翻译这篇文章，其实想说非常支持作者的这个观点。首先，JS经历了这么多年，已经不再是以前那个被大家误解最多的语言，同时，JS的路依旧漫长，他的未来会非常的光明。JS当然有很多的bad parts或者smell很差等，不过，作为编译目标语言， JavaScript 重获新生（中文翻译）。
PS：关于“差即是好”（Worse is better）可以参看这里。
]]></description>
			<content:encoded><![CDATA[<p>网上看到一篇博客讨论<a href="http://www.hanselman.com/blog/JavaScriptIsAssemblyLanguageForTheWebPart2MadnessOrJustInsanity.aspx">JavaScript是Web的汇编语言</a>这个话题，看到JS诸神都发表了一些观点，争取了作者同意之后把原文翻译在这里，其实这篇博客是作者之前讨论的续轮，大家有兴趣的话，可以去看看<a href="http://www.hanselman.com/blog/JavaScriptIsAssemblyLanguageForTheWebSematicMarkupIsDeadCleanVsMachinecodedHTML.aspx">第一篇</a>。</p>
<p>===</p>
<p><strong>一些朋友认为之前的文章&#8221;</strong><a href="http://www.hanselman.com/blog/JavaScriptIsAssemblyLanguageForTheWebSematicMarkupIsDeadCleanVsMachinecodedHTML.aspx"><strong>JavaScript是Web的汇编语言</strong></a><strong>&#8220;简直是无稽之谈</strong>，我问了一些JavaScript的大牛们关于这个讨论的观点，包括 Brendan Eich （JavaScript的发明者），Douglas Crockford （JSON的发明者）和 Mike Shaver  （Mozilla的技术VP）。在他们的授权下，列出我们的邮件讨论。</p>
<p><a href="http://en.wikipedia.org/wiki/Mike_Shaver"><strong>Mike Shaver</strong></a><strong>:</strong></p>
<blockquote><p>我以前听过类似的比较，我认为基本上是正确的。尽管他忽略了对JS开发工程的大量投入，因为汇编语言是面向机器开发设计的，不包含对人友好的词法（尤其是现代汇编语言）。</p></blockquote>
<p><a href="http://en.wikipedia.org/wiki/Brendan_Eich"><strong>Brendan Eich</strong></a><strong>:</strong></p>
<blockquote><p><strong>我几年前说过 &#8220;</strong><strong>JS是Web的x86</strong><strong>&#8221; [可能是在JSConf大会上]</strong>，不过我不是原创。[<a href="http://apps.ycombinator.com/item?id=1894374">今年，Nick Thompson在 Hacker News上也说过类似的话</a>。]</p>
<p><strong>关键是，JS正在变得越来越接近底层语言。 </strong>当然，他也有高级的工具类。</p>
<p>Shaver是对的，没有高级宏处理的汇编语言对于开发者来说不是很好，同样从安全角度来说也不是很好。JS却不是这样，所以，这个类比需要一些限定条件，否则，就很愚蠢了。</p>
<p>将高级函数编程、内存安全等特性同面向底层的工具类（例如，有类型数组、马上到来的ES.next扩展的类型数组、二进制数据等）融合在一起可以得到一个比汇编语言要高级强大很多的编程语言，当然，内存安全特性是首当其冲最突出的差别。</p></blockquote>
<p><a href="http://en.wikipedia.org/wiki/Douglas_Crockford"><strong>Douglas Crockford</strong></a><strong>:</strong></p>
<blockquote><p><strong>我认为这样说更贴切，就是JavaScript是Web的虚拟机。我们以前一直认为Java的虚拟机会是Web的虚拟机，事实证明，JavaScript才是。</strong></p>
<p>同Java虚拟机的二级制码校对器相比，JavaScript的解析器能够更高效的保障代码的安全。<strong>JavaScript更好的保证了“书写一次，到处运行”的承诺，也许就是因为他在更高的级别上运行，避免了很多底层的边缘案例。</strong>之后的事情就都由图灵机来保证了。</p>
<p>有很多人都拒绝承认JavaScript全部正确的可能性，我以前就是这么认为的。不过现在我不断的被其中的卓越震惊。</p></blockquote>
<p><strong>Brendan Eich</strong>又说:</p>
<blockquote><p>Doug关于源码打败二进制码的观点很不错。我的朋友 UC Irvine大学的Michael  Franz教授很早以前展示了一段基于Java二进制码校对器的 O(n^4) 复杂度的程序（跑光了计算周期，拒绝服务）。<strong>使用压缩的源码，JS绝对更适合移植并且能够足够快的进行词法分析/解析。</strong></p>
<p>使用源码级别的解释同样可以避免Java二进制码带来的蠢问题：如果Java的底层形式被冻结的话，Java的源码（高级部分）就无法向前演进，Java编程语言一直以来都害怕破坏对Java二进制码的兼容性。这很大程度上让内置类和范型变得一团糟——最后Sun还是打破了Java二进制码的兼容。</p></blockquote>
<p>之前在Hacker News上，<a href="http://nixweb.com/">Nick Thompson</a>说:</p>
<blockquote><p>我不可否认的偏见：我花了两年的时间试图优雅的让JVM同JavaScript进行通信——在Netscape我们有很多人认为二进制码更适合作为移动代码的基础。但是Sun让这一切变得非常的困难，他们从头就把软件层次做的非常臃肿。他们不希望Java同任何其他语言进行合作，只允许被嵌入到其他软件中。他们使用解释型语言写了字符串处理部分的代码，而不愿意使用C！据我所知，Sun把Netscape当作替代Windows幻想中的唯一候选——Netscape为当时Java唯一的重要客户。当时任何尝试使用Java的开发者都得承受差不多的痛苦。</p>
<p>与此同时，Brendan在做着差不多需要10个工程师+3个客户服务才能完成的工作，开始关注网页作者的实际需求，例如，将JS代码融合到HTML中、快速读取，同浏览器其他部分集成，以及同其他的浏览器厂商一起将JS变为开放的标准。</p>
<p><strong>所以，现在JS是Web的x86汇编语言——不够想象中的优雅，但是足够搞定工作（从这个角度来看，GWT是最滑稽的例子）。JS将是“差即是好”的经典案例，Java只是从下往上看比较不错而已。同样的，实际上JS可以非常牛x。谁想要取代他，那只能祝他好运了。</strong></p></blockquote>
<p>当然了，关键是，没有类比就是最完美的。JavaScript作为一个语言看上去当然不会像汇编语言。作为类比的话，我们可以看到：</p>
<ul>
<li>JavaScript是普适的（真正的书写一次，到处运行）</li>
<li>快！而且会变得更快！</li>
<li>Javascript是Web编程语言最基础的底层语言。</li>
<li>你可以把他当作另外语言的目标语言。</li>
</ul>
<p>这个话题经常会在Hacker News上出现。</p>
<ul>
<li>“我们现在拥有的JavaScript语言是客户端的汇编语言。我们无法轻易的改变他，但是我们可以在他基础上作出更好的工具。” —— <a href="http://news.ycombinator.com/item?id=2451594">jonnycat</a></li>
</ul>
<p>===</p>
<p>后记：比较难翻，可能会有些词不达意，还希望大家多多批评。翻译这篇文章，其实想说非常支持作者的这个观点。首先，JS经历了这么多年，已经不再是以前那个被大家误解最多的语言，同时，<a href="http://www.mijia.org/blog/?p=292">JS的路依旧漫长</a>，他的未来会非常的光明。JS当然有很多的bad parts或者smell很差等，不过，作为编译目标语言， <a href="http://peter.michaux.ca/articles/javascript-is-dead-long-live-javascript">JavaScript 重获新生</a>（<a href="http://typeof.net/2011/06/javascript-dead-and-alive/">中文翻译</a>）。</p>
<p>PS：关于“差即是好”（Worse is better）可以<a href="http://www.aqee.net/2011/07/18/the-rise-of-worse-is-better/">参看这里</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mijia.org/blog/?feed=rss2&amp;p=298</wfw:commentRss>
		</item>
		<item>
		<title>六个星期</title>
		<link>http://www.mijia.org/blog/?p=296</link>
		<comments>http://www.mijia.org/blog/?p=296#comments</comments>
		<pubDate>Wed, 20 Jul 2011 02:40:15 +0000</pubDate>
		<dc:creator>Jia Mi</dc:creator>
		
		<category><![CDATA[firefox]]></category>

		<category><![CDATA[mozilla]]></category>

		<category><![CDATA[rapid release]]></category>

		<guid isPermaLink="false">http://www.mijia.org/blog/?p=296</guid>
		<description><![CDATA[翻译自Firefox Engineering主管Johnathon Nightingale的文章。
===
令我震惊的是，我们已经成功的进行了几个月的快速发布过程。我们快速的向前推进。一个新特性从实现并且进入mozilla-central分支到发布到用户手里只需要12-18周，不再是需要几个月甚至几年。这个过程能够给我们更好的敏捷性，从而带来更强的稳定性。每个发布周期的测试和稳定阶段可以覆盖更多的用户来帮助我们更早的发现和解决问题，保持我们在每次发布质量上的信心。
我希望能够描述清楚这个发布过程中很重要的一个环节，不过可能很多朋友不一定理解。每个独立的发布火车（新的发布过程采用火车模型，固定的“发车”时间，特性的发布取决于该特性是否赶上最近的火车发车时间）包括6周的开发时间加上12周的稳定时间：

新的开发成果不会直接发布到Aurora和Beta分支上。这些分支/渠道会关注在如何同我们的社区测试成员共同工作，发现和定位开发中带来的程序问题和Bug，从而解决这些问题。如上图所示，您能够看出我们的发布周期基本上是稳定的18个星期。
Aurora和Beta分支/渠道基本上完全关注于稳定性和测试，同时，很多的工程师也在同步的开始新的开发工作，所以，如果我们看更大的一张图表的话，下面是真正进行的过程：


在Aurora和Beta分支/渠道上经历的12周时间里，Mozilla开发社区并没有在闲着。他们会继续为后面的发布开发新的特性和bug fix。每六个星期，他们的工作会被选择性的合并到Aurora分支，继而合并到Beta分支上。观察上面的图表，您会发现很重要的一点，就是：
每六个星期就会有一个新版本的Firefox发布，而不是12周或者18周。
很多人都被这个情况惊到了，虽然这个过程从开始就被定义为这样的。在Firefox 4发布之后，我们承诺三个月之后发布下一个版本的Firefox，并且做到了，不过在那时，我相信很多人会认为我们进入了一个3个月的发布周期。实际上，我们需要三个月的原因是，Aurora和Beta分支/渠道上都是空白的，他们需要等待下一个发布才能让他们完全进入整个流程。下一个版本的Firefox已经在Beta分支，并且计划在6周之后发布。与此同时，下一个版本的Firefox也已经进入Beta，以此类推。
同时，我们也在仔细的研究整个流程；这是一个很大的变化，我们需要在过程中保持最大的灵活性，以应对环境的变化。我们可能会认为6周时间是一个错误的周期，例如，以前Firefox的稳定性发布周期一直维持在6-8周。我们也在密切关注这个周期对我们整个生态系统的影响，包括扩展、插件、第三方合作软件等。同时，我们同大的组织机构一起工作，来了解快速发布流程如何更好的融合到他们的软件开发系统中。
不管我们作出什么样的调整，很清楚的一点是快速发布本身是一个巨大的改进，能够帮助我们更快的对用户和互联网本身作出反应。每六个星期，我们都会有一个新版本的Firefox等待评估然后发布出去，除非发现任何不兼容的破坏。不再需要一年的时间去等待某个最新的特性，现在完全可以在Beta中使用最新的开发者ScratchPad工具，或者现在就可以在Aurora上获取到性能和内存的改进，或者在Nightly分支上看到平滑的标签页操作动画效果等等。快速发布已经给我们带来好处，而这才刚刚开始。
]]></description>
			<content:encoded><![CDATA[<p>翻译自Firefox Engineering主管<a href="http://blog.mozilla.com/channels/2011/07/18/every-six-weeks/">Johnathon Nightingale的文章</a>。</p>
<p>===</p>
<p>令我震惊的是，我们已经成功的进行了几个月的<a href="http://mozilla.github.com/process-releases/draft/development_overview/">快速发布</a>过程。我们快速的向前推进。一个新特性从实现并且进入mozilla-central分支到发布到用户手里只需要12-18周，不再是需要几个月甚至几年。这个过程能够给我们更好的敏捷性，从而带来更强的稳定性。每个发布周期的测试和稳定阶段可以覆盖更多的用户来帮助我们更早的发现和解决问题，保持我们在每次发布质量上的信心。</p>
<p>我希望能够描述清楚这个发布过程中很重要的一个环节，不过可能很多朋友不一定理解。每个独立的发布火车（新的发布过程采用火车模型，固定的“发车”时间，特性的发布取决于该特性是否赶上最近的火车发车时间）包括6周的开发时间加上12周的稳定时间：</p>
<p style="text-align: center;"><img src="http://blog.mozilla.com/channels/files/2011/07/rrprocess1-267x300.png" alt="" /></p>
<p>新的开发成果不会直接发布到Aurora和Beta分支上。这些分支/渠道会关注在如何同我们的社区测试成员共同工作，发现和定位开发中带来的程序问题和Bug，从而解决这些问题。如上图所示，您能够看出我们的发布周期基本上是稳定的18个星期。</p>
<p>Aurora和Beta分支/渠道基本上完全关注于稳定性和测试，同时，很多的工程师也在同步的开始新的开发工作，所以，如果我们看更大的一张图表的话，下面是真正进行的过程：</p>
<p style="text-align: center;"><img src="http://blog.mozilla.com/channels/files/2011/07/rrprocess2-1024x965.png" alt="" width="512" /></p>
<p style="text-align: center;">
<p>在Aurora和Beta分支/渠道上经历的12周时间里，Mozilla开发社区并没有在闲着。他们会继续为后面的发布开发新的特性和bug fix。每六个星期，他们的工作会被选择性的合并到Aurora分支，继而合并到Beta分支上。观察上面的图表，您会发现很重要的一点，就是：</p>
<p><strong>每六个星期就会有一个新版本的Firefox发布，而不是12周或者18周。</strong></p>
<p>很多人都被这个情况惊到了，虽然<a href="http://mozilla.github.com/process-releases/draft/development_specifics/">这个过程从开始就被定义为这样的</a>。在Firefox 4发布之后，我们承诺三个月之后发布下一个版本的Firefox，并且做到了，不过在那时，我相信很多人会认为我们进入了一个3个月的发布周期。实际上，我们需要三个月的原因是，Aurora和Beta分支/渠道上都是空白的，他们需要等待下一个发布才能让他们完全进入整个流程。下一个版本的Firefox已经在Beta分支，并且计划在6周之后发布。与此同时，下一个版本的Firefox也已经进入Beta，以此类推。</p>
<p>同时，我们也在仔细的研究整个流程；这是一个很大的变化，我们需要在过程中保持最大的灵活性，以应对环境的变化。我们可能会认为6周时间是一个错误的周期，例如，以前Firefox的稳定性发布周期一直维持在6-8周。我们也在密切关注这个周期对我们整个生态系统的影响，包括扩展、插件、第三方合作软件等。同时，我们同大的组织机构一起工作，来了解快速发布流程如何更好的融合到他们的软件开发系统中。</p>
<p>不管我们作出什么样的调整，很清楚的一点是快速发布本身是一个巨大的改进，能够帮助我们更快的对用户和互联网本身作出反应。每六个星期，我们都会有一个新版本的Firefox等待评估然后发布出去，除非发现任何不兼容的破坏。不再需要一年的时间去等待某个最新的特性，现在完全可以在<a href="http://www.mozilla.com/en-US/firefox/channel/">Beta</a>中使用最新的开发者ScratchPad工具，或者现在就可以在<a href="http://www.mozilla.com/en-US/firefox/channel/">Aurora</a>上获取到性能和内存的改进，或者在<a href="http://nightly.mozilla.org/">Nightly</a>分支上看到平滑的标签页操作动画效果等等。快速发布已经给我们带来好处，而这才刚刚开始。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mijia.org/blog/?feed=rss2&amp;p=296</wfw:commentRss>
		</item>
		<item>
		<title>Google+好火</title>
		<link>http://www.mijia.org/blog/?p=295</link>
		<comments>http://www.mijia.org/blog/?p=295#comments</comments>
		<pubDate>Tue, 12 Jul 2011 06:23:11 +0000</pubDate>
		<dc:creator>Jia Mi</dc:creator>
		
		<category><![CDATA[Little Boring Ideas]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[SNS]]></category>

		<guid isPermaLink="false">http://www.mijia.org/blog/?p=295</guid>
		<description><![CDATA[真火，争论也越来越多，不过还需要时间检验。除了游戏以外，相比FB和T，以及微博，我觉得比较关键的几点是：

非对称性 （T的优点）
重分享 （FB的优点）
圈子 （G+的特色）
对话 （FB的优点）
转发 （没有太做好，也没有看到谁做的很好，貌似Tumblr的reblog相比之下更好一些）

我觉得国内的各家微博思路也不错，照搬T不一定好用。周末跟美国的一个姐姐吃饭聊天，她又在T上又在微博上，结果她就觉得微博好用，因为更直接，图片视频什么的都要比T好用并且直接——发布和浏览都是。关于国内微博的评论和转发，我觉得是一个特别需要设计的地方，其实评论就是FB的对话，而这也是T最缺少的特性，转发是对话的延展，加速讨论在新圈子中的流动，进而进化成新的对话；要是单论对话的话，还是Quora做的最好，毕竟他是话题驱动的，不过他的转发功能几乎没有功效，要是谁能在这点上有所突破的话，估计就牛x了。
在国内新浪微博一家独大的情况下，还在重复新浪微博的模式可能真是做不过他，也许轻博客思路或者Google+的思路更能带来一些差异化的优势。
Update: 以后Blogger改为Google+体系内的一环，更是加强了G+重分享的一环，大家都觉得140个字很关键，我觉得在一个去中心化的结构中传播很关键，可是Google和国内服务基本都是闭合，那传播reshare只是一个button的问题，140个字就不关键了，所以，分享部分可以做的更强一些；
Update2: Sparks现在没啥威力，不过很看好他，真希望能够将Reader集成进来，那会很强大的~
Update3: Everything is a Remix!
]]></description>
			<content:encoded><![CDATA[<p>真火，争论也越来越多，不过还需要时间检验。除了游戏以外，相比FB和T，以及微博，我觉得比较关键的几点是：</p>
<ul>
<li>非对称性 （T的优点）</li>
<li>重分享 （FB的优点）</li>
<li>圈子 （G+的特色）</li>
<li>对话 （FB的优点）</li>
<li>转发 （没有太做好，也没有看到谁做的很好，貌似Tumblr的reblog相比之下更好一些）</li>
</ul>
<p>我觉得国内的各家微博思路也不错，照搬T不一定好用。周末跟美国的一个姐姐吃饭聊天，她又在T上又在微博上，结果她就觉得微博好用，因为更直接，图片视频什么的都要比T好用并且直接——发布和浏览都是。关于国内微博的评论和转发，我觉得是一个特别需要设计的地方，其实评论就是FB的对话，而这也是T最缺少的特性，转发是对话的延展，加速讨论在新圈子中的流动，进而进化成新的对话；要是单论对话的话，还是Quora做的最好，毕竟他是话题驱动的，不过他的转发功能几乎没有功效，要是谁能在这点上有所突破的话，估计就牛x了。</p>
<p>在国内新浪微博一家独大的情况下，还在重复新浪微博的模式可能真是做不过他，也许轻博客思路或者Google+的思路更能带来一些差异化的优势。</p>
<p>Update: 以后Blogger改为Google+体系内的一环，更是加强了G+重分享的一环，大家都觉得140个字很关键，我觉得在一个去中心化的结构中传播很关键，可是Google和国内服务基本都是闭合，那传播reshare只是一个button的问题，140个字就不关键了，所以，分享部分可以做的更强一些；</p>
<p>Update2: Sparks现在没啥威力，不过很看好他，真希望能够将Reader集成进来，那会很强大的~</p>
<p>Update3: <a href="http://www.everythingisaremix.info/everything-is-a-remix-part-3/">Everything is a Remix!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mijia.org/blog/?feed=rss2&amp;p=295</wfw:commentRss>
		</item>
		<item>
		<title>Firefox 5 —— 开发者的那些事</title>
		<link>http://www.mijia.org/blog/?p=293</link>
		<comments>http://www.mijia.org/blog/?p=293#comments</comments>
		<pubDate>Thu, 23 Jun 2011 04:19:38 +0000</pubDate>
		<dc:creator>Jia Mi</dc:creator>
		
		<category><![CDATA[develop]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[developer]]></category>

		<category><![CDATA[firefox 5]]></category>

		<guid isPermaLink="false">http://www.mijia.org/blog/?p=293</guid>
		<description><![CDATA[Firefox 5已经发布了，这里翻译一篇来自Mozilla Hacks上的一篇文章来跟大家分享一下Firefox 5中开发者获得的新武器，:)
======
CSS3 动画
CSS动画（看这篇文档）提供了使用CSS来制作动画效果的能力。跟CSS移位效果一样，使用CSS动画可以非常高效平滑的展现效果（看大牛David Baron的文章），开发者拥有对keyframes有更好的控制力，从而制作出更加复杂的动画效果。
需要注意的变化

开发者可以把Image作为参数传递给 createImageData 来获取图片的大小数据；
在后台标签中，setTimeout 和 setInterval 每秒钟只能执行一次回调函数，这符合 requestAnimationFrame 要求的描述，用来减少CPU和电源的消耗。

其他的Bug Fix和性能提升

HTML

所有的HTML元素现在都拥有 accessKey 属性，同时还有 blur() 、 click() 和 focus() 方法。这些属性和方法都在 HTMLElement 接口中定义；
为了更好的支持 HTML5 规范，对 UTF-7 和 UTF-32 字符集 的支持已经被移除；
在quirk模式下，匹配的空 &#60;map&#62; 元素不再被跳过，详情可以查看 Gecko 笔记中 的 &#60;map&#62; 元素；
Android上的Firefox移动版现在支持 @font-face 描述的WOFF字体；
作为安全措施，WebGL 不会从非来源域名之外的地方读取纹理信息。


Canvas改进

 &#60;canvas&#62; 2D绘图上下文现在支持定义 ImageData 为 createImageData() 方法的输入；生成新的  ImageData 对象会初始化为跟指定对象具有相同的大小，不过所有画布上所有像素都预设为透明黑色；
调用 CanvasGradient 的 addColorStop() 方法时，如果指定非规定值作为停止颜色的参数时会抛出 INDEX_SIZE_ERR 异常而不是 [...]]]></description>
			<content:encoded><![CDATA[<p>Firefox 5已经发布了，这里翻译一篇来自<a href="http://hacks.mozilla.org/2011/06/firefox5/">Mozilla Hacks上的一篇文章</a>来跟大家分享一下Firefox 5中开发者获得的新武器，:)</p>
<p>======</p>
<h3>CSS3 动画</h3>
<p>CSS动画（看这篇<a href="https://developer.mozilla.org/en/CSS/CSS_animations">文档</a>）提供了使用CSS来制作动画效果的能力。跟<a href="https://developer.mozilla.org/en/CSS/CSS_transitions">CSS移位</a>效果一样，使用CSS动画可以非常高效平滑的展现效果（看大牛David Baron的<a href="http://dbaron.org/log/20110615-animations">文章</a>），开发者拥有对<a href="https://developer.mozilla.org/en/CSS/CSS_animations">keyframes</a>有更好的控制力，从而制作出更加复杂的动画效果。</p>
<h3>需要注意的变化</h3>
<ul>
<li>开发者可以把Image作为参数传递给 <code><a href="https://developer.mozilla.org/En/HTML/Canvas/Pixel_manipulation_with_canvas">createImageData</a></code> 来获取图片的大小数据；</li>
<li>在后台标签中，<code><a href="https://developer.mozilla.org/en/window.setTimeout">setTimeout</a></code> 和 <code><a href="https://developer.mozilla.org/En/window.setInterval">setInterval</a></code> 每秒钟只能执行一次回调函数，这符合 <code><a href="https://developer.mozilla.org/en/DOM/window.mozRequestAnimationFrame">requestAnimationFrame</a></code> 要求的描述，用来减少CPU和电源的消耗。</li>
</ul>
<h3>其他的Bug Fix和性能提升</h3>
<div class="changelog">
<h4>HTML</h4>
<ul>
<li>所有的HTML元素现在都拥有 <code><a class="new" href="https://developer.mozilla.org/en/DOM/element.accessKey">accessKey</a></code> 属性，同时还有 <code><a href="https://developer.mozilla.org/en/DOM/element.blur">blur()</a></code> 、 <code><a href="https://developer.mozilla.org/en/DOM/element.click">click()</a></code> 和 <code><a href="https://developer.mozilla.org/en/DOM/element.focus">focus()</a></code> 方法。这些属性和方法都在 <code><a href="https://developer.mozilla.org/en/DOM/HTMLElement">HTMLElement</a></code> 接口中定义；</li>
<li>为了更好的支持 <a title="HTML5" href="https://developer.mozilla.org/en/html/html5">HTML5</a> 规范，对 UTF-7 和 UTF-32 <a href="https://developer.mozilla.org/en/Character_Sets_Supported_by_Gecko">字符集</a> 的支持已经被移除；</li>
<li>在quirk模式下，匹配的空 <code><a href="https://developer.mozilla.org/en/HTML/Element/map">&lt;map&gt;</a></code> 元素不再被跳过，详情可以查看 <a href="https://developer.mozilla.org/en/HTML/Element/map#Gecko_notes">Gecko 笔记中</a> 的 <code><a href="https://developer.mozilla.org/en/HTML/Element/map">&lt;map&gt;</a></code> 元素；</li>
<li>Android上的Firefox移动版现在支持 <code><a href="https://developer.mozilla.org/en/CSS/@font-face">@font-face</a></code> 描述的WOFF字体；</li>
<li>作为安全措施，<a title="WebGL" href="https://developer.mozilla.org/en/WebGL">WebGL</a> <a href="https://developer.mozilla.org/en/WebGL/Cross-Domain_Textures">不会从非来源域名之外的地方读取纹理信息</a>。</li>
</ul>
<div class="changelog">
<h4>Canvas改进</h4>
<ul>
<li> <code><a href="https://developer.mozilla.org/en/HTML/Element/canvas">&lt;canvas&gt;</a></code> 2D绘图上下文现在支持定义 ImageData 为 <code>createImageData()</code> 方法的输入；<a href="https://developer.mozilla.org/En/HTML/Canvas/Pixel_manipulation_with_canvas#Creating_an_ImageData_object">生成新的  <code>ImageData</code> 对象</a>会初始化为跟指定对象具有相同的大小，不过所有画布上所有像素都预设为透明黑色；</li>
<li>调用 <code><a href="https://developer.mozilla.org/en/DOM/CanvasGradient">CanvasGradient</a></code> 的 <code>addColorStop()</code> 方法时，如果指定非规定值作为停止颜色的参数时会抛出 <code>INDEX_SIZE_ERR</code> 异常而不是 <code>SYNTAX_ERR</code>；</li>
<li><code><a href="https://developer.mozilla.org/en/DOM/HTMLCanvasElement">HTMLCanvasElement</a></code> 的方法 <code>toDataURL()</code> 在匹配前会正确的将指定的MIME类型变为小写字母；</li>
<li><code>getImageData()</code> 能够接受超过画布大小的矩形为参数，在画布之外区域的像素被预设为透明的黑色；</li>
<li><code>drawImage()</code> 和 <code>createImageData()</code> 支持规范定义的，可以接受负数的参数，可以让指定的矩形区域围绕某个坐标轴进行旋转；</li>
<li>调用 <code>createImageData() 时传递非规定参数时抛出</code> <code>NOT_SUPPORTED_ERR</code> 异常；</li>
<li><code>如果 createImageData()</code> 和 <code>getImageData()</code> 参数描述的矩形小于一个像素的话，也会返回至少一个像素大小的数据；</li>
<li>调用 <code>createRadialGradient()</code> 时传递负数的半径会抛出 <code>INDEX_SIZE_ERR</code> 异常；</li>
<li>调用 <code>createPattern()</code> 或者 <code>drawImage()</code> 时参数如果为 <code>null</code> 或者 <code>undefined</code> image对象的话，会抛出 <code>TYPE_MISMATCH_ERR</code> 异常；</li>
<li><code>globalAlpha</code> 如果指定为非法参数的话，不再抛出 <code>SYNTAX_ERR</code> 异常，现在都是悄悄的忽略掉；</li>
<li>Specifying invalid values when calling调用 <code>translate()</code>, <code>transform()</code>, <code>rect()</code>, <code>clearRect()</code>, <code>fillRect()</code>, <code>strokeRect()</code>, <code>lineTo()</code>, <code>moveTo()</code>, <code>quadraticCurveTo()</code> 和 <code>arc()</code> 如果传入非法参数的话，不再抛出异常，还是悄悄的忽略掉；</li>
<li><code>shadowOffsetX</code>, <code>shadowOffsetY</code> 和 <code>shadowBlur</code> 的属性值设定不正确的话也是悄悄的忽略掉；</li>
<li><code>rotate</code> 和 <code>scale</code> 的属性设定同上。</li>
</ul>
<div class="changelog">
<h4>CSS</h4>
<ul>
<li>添加对 <a href="https://developer.mozilla.org/en/CSS/CSS_animations">CSS 动画</a> 的支持，不过现在还需要使用 <code>-moz-</code>前缀。</li>
</ul>
<h4>DOM</h4>
<ul>
<li>修改了 <code><a href="https://developer.mozilla.org/en/DOM/selection">selection</a></code> 对象的 <a href="https://developer.mozilla.org/en/DOM/Selection/modify"><code>modify()</code></a> 方法，这样“文字”选取对象不再包括结尾出多余的空格，从而各个平台上的操作保持一致，并且跟WebKit的实现也保持一致；</li>
<li>在后台标签页中，<code><a href="https://developer.mozilla.org/en/DOM/window.setTimeout">window.setTimeout()</a></code> 每秒钟只会调用一次超时回调函数。另外，嵌套的超时会根据HTML5规范中定义的最小的数值：4ms（以前是10ms）。</li>
<li><code><a href="https://developer.mozilla.org/en/DOM/window.setInterval">window.setInterval()</a></code> 方法同上；</li>
<li><a href="https://developer.mozilla.org/en/XMLHttpRequest"><code>XMLHttpRequest</code></a> 现在 <a href="https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest#Detecting_any_load_end_condition">支持 <code>loadend</code> 事件</a> 给进度监听器（Progress Listener）。任何传输在结束之后都会引起这个事件（也就是在 <code>abort</code>, <code>error</code> 和 <code>load</code> 事件之后）。可以监听这个时间来处理不管是错误还是失败之后都需要进行的操作。</li>
<li><code><a href="https://developer.mozilla.org/en/DOM/Blob">Blob</a></code> 和 <code><a href="https://developer.mozilla.org/en/DOM/File">File</a></code> 对象的 <code>slice()</code> 方法被移除，并且替换为新的词法表述，从而跟JavaScript中 <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice"><code>Array.slice()</code></a> 和 <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/slice"><code>String.slice()</code></a> 方法保持一致的语义。现在，这个方法被命名为  <a href="https://developer.mozilla.org/en/DOM/Blob#mozSlice%28%29"><code>mozSlice()</code></a> ；</li>
<li><code><a href="https://developer.mozilla.org/en/DOM/window.navigator.language">window.navigator.language</a></code> 的值由 <code>Accept-Language</code> <a href="https://developer.mozilla.org/en/HTTP/Headers">HTTP header</a> 来决定。</li>
</ul>
<h4>JavaScript</h4>
<ul>
<li>正则表达式不再像函数一样可以被调用，这么做是为了同WebKit保持一致和兼容（参看 <a class="external" href="https://bugs.webkit.org/show_bug.cgi?id=28285"> WebKit bug 28285</a> ）；</li>
<li>支持 <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/isGenerator"><code>Function.prototype.isGenerator()</code></a> 方法，允许开发者查看函数是否为 <a href="https://developer.mozilla.org/en/JavaScript/Guide/Iterators_and_Generators#Generators.3a_a_better_way_to_build_Iterators">generator</a>。</li>
</ul>
<div class="changelog">
<h4>SVG</h4>
<ul>
<li><code><a href="https://developer.mozilla.org/en/SVG/Attribute/class">class</a></code> SVG 属性支持动画效果；</li>
<li>下述 SVG 相关的 DOM 接口（表现为对象列表的）支持数列话，可以直接像数组一样被访问，另外，也提供了 <code>length</code> 属性来表示列表中对象的数量： <code><a class="new" href="https://developer.mozilla.org/en/DOM/SVGLengthList">SVGLengthList</a></code> , <code><a class="new" href="https://developer.mozilla.org/en/DOM/SVGNumberList">SVGNumberList</a></code> , <code><a class="new" href="https://developer.mozilla.org/en/DOM/SVGPathSegList">SVGPathSegList</a></code> 和 <code><a class="new" href="https://developer.mozilla.org/en/DOM/SVGPointList">SVGPointList</a></code> 。</li>
</ul>
<div class="changelog">
<h4>HTTP</h4>
<ul>
<li>Firefox 不再发送 “Keep-Alive” HTTP 头；我们对他格式化的不对，而且当我们同时发送 <code><a href="https://developer.mozilla.org/en/HTTP/Headers#Connection">Connection:</a></code> 和 <code><a href="https://developer.mozilla.org/en/HTTP/Headers#Proxy-Connection">Proxy-Connection:</a></code> 头部信息时，Keep-Alive有点多余；</li>
<li>更新了 HTTP 的传输模型，更智能的重用连接池中的已有连接；不再把连接池当作 <a href="http://en.wikipedia.org/wiki/FIFO">FIFO</a> 队列，Necko 现在尝试按照最大的 <a href="http://en.wikipedia.org/wiki/congestion%20window">拥挤窗口</a> (CWND) 来排序连接。这可以在很多情况下降低 HTTP 传输的RTT时间；</li>
<li>如果 <code>filename</code> 和 <code>filename*</code> 参数提供了的话，Firefox 更高效的处理 Content-Disposition HTTP 回应头数据；在提供 <code>filename*</code> 参数的情况下，Firefox会查看所有提供的名字，即使同时也提供了 <code>filename</code> 参数。</li>
</ul>
<div class="changelog">
<h4>MathML</h4>
<ul>
<li>支持 <a class=" external" title="http://www.w3.org/TR/MathML3/chapter3.html#id.3.2.5.7.3" href="http://www.w3.org/TR/MathML3/chapter3.html#id.3.2.5.7.3" target="_blank">修饰操作符</a></li>
</ul>
<div class="changelog">
<h4>开发者工具</h4>
<ul>
<li><a href="https://developer.mozilla.org/en/Using_the_Web_Console#The_console_object">Web 控制台的 <code>Console</code> 对象</a> 支持 <code>debug()</code> 方法，他就是 <code>log()</code> 方法的别名，提供更好的兼容性。</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mijia.org/blog/?feed=rss2&amp;p=293</wfw:commentRss>
		</item>
		<item>
		<title>Hail to the King, Baby! —— 那段牛x的JavaScript历史</title>
		<link>http://www.mijia.org/blog/?p=292</link>
		<comments>http://www.mijia.org/blog/?p=292#comments</comments>
		<pubDate>Thu, 23 Jun 2011 02:25:04 +0000</pubDate>
		<dc:creator>Jia Mi</dc:creator>
		
		<category><![CDATA[develop]]></category>

		<category><![CDATA[chrome]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[javascript]]></category>

		<category><![CDATA[mozilla]]></category>

		<category><![CDATA[Webkit]]></category>

		<guid isPermaLink="false">http://www.mijia.org/blog/?p=292</guid>
		<description><![CDATA[So it is with gratitude and more than a bit of relief, after a very long  16 years in full, 13 years open source, that I’m announcing the  transfer of SpiderMonkey’s module ownership to @dmandelin.
—— Brendan Eich

1995年，Brendan说服Netscape的老板说在netscape中需要一个属于自己的脚本语言，在考察了Scheme和Java之后，10天之内，Brendan实现了JavaScript引擎的基本原型。从1995年到现在，经历了浏览器大战，经历了Mozilla开源项目的故事，16年之后的昨天，Brendan将SpiderMonkey的Module Ownership转移给了Mozilla的Dave Mandelin。
为此，Brendan大神写了这样一篇博客——New JavaScript Engine Module Owner，给我们讲述了那一段牛x的JavaScript历史，里面充满了睿智的小段子，非常有趣。

96年的时候，Brendan和chouck将JavaScript的运行放到了非主线程中，于是当网页加载一段需要大量计算的JavaScript代码时不会影响页面中其他元素的渲染，至今大家也在Firefox可以看到“slow script running”的对话框；
快进到2008年，Firefox 3成功发布，Mozilla的JS团队取得巨大的性能提升，当时主要竞争对手还是来自WebKit的JavaScriptCore引擎，之后又成功炮制TraceMonkey，——一个基于类型优化的实时JIT引擎，是早于Chrome和V8的面世；
在2006年的时候，Brendan就接触到了V8团队，当时Brendan非常希望V8能够开源，并且完全可以想办法接入到Firefox中，甚至于替代Firefox的SpiderMonkey，而且当时Adobe正在考虑将Tamarin提交给Mozilla，用Brendan的话说就是多多益善，“the more the merrier”。当时正是JavaScript JIT前期探索阶段；
直到2008年V8才正式开源，Google对此很谨慎，以防打草惊蛇的提醒到微软。（配合这款引擎，Chrome应声而出）很明显，95年时候“Netscape + Java kills [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>So it is with gratitude and more than a bit of relief, after a very long  16 years in full, 13 years open source, that I’m announcing the  transfer of <a href="https://wiki.mozilla.org/Modules/Core#JavaScript">SpiderMonkey’s module ownership</a> to <a href="https://twitter.com/#%21/dmandelin">@dmandelin</a>.</p>
<p style="text-align: right;">—— <a href="http://brendaneich.com/2011/06/new-javascript-engine-module-owner/">Brendan Eich</a></p>
</blockquote>
<p>1995年，Brendan说服Netscape的老板说在netscape中需要一个属于自己的脚本语言，在考察了Scheme和Java之后，10天之内，Brendan实现了JavaScript引擎的基本原型。从1995年到现在，经历了浏览器大战，经历了Mozilla开源项目的故事，16年之后的昨天，Brendan将SpiderMonkey的Module Ownership转移给了Mozilla的<a href="http://blog.mozilla.com/dmandelin/">Dave Mandelin</a>。</p>
<p>为此，Brendan大神写了这样一篇博客——<a href="http://brendaneich.com/2011/06/new-javascript-engine-module-owner/">New JavaScript Engine Module Owner</a>，给我们讲述了那一段牛x的JavaScript历史，里面充满了睿智的小段子，非常有趣。</p>
<ul>
<li>96年的时候，Brendan和chouck将JavaScript的运行放到了非主线程中，于是当网页加载一段需要大量计算的JavaScript代码时不会影响页面中其他元素的渲染，至今大家也在Firefox可以看到“slow script running”的对话框；</li>
<li>快进到2008年，Firefox 3成功发布，Mozilla的JS团队取得巨大的性能提升，当时主要竞争对手还是来自WebKit的JavaScriptCore引擎，之后又成功炮制TraceMonkey，——一个基于类型优化的实时JIT引擎，是早于Chrome和V8的面世；</li>
<li>在2006年的时候，Brendan就接触到了V8团队，当时Brendan非常希望V8能够开源，并且完全可以想办法接入到Firefox中，甚至于替代Firefox的SpiderMonkey，而且当时Adobe正在考虑将Tamarin提交给Mozilla，用Brendan的话说就是多多益善，“the more the merrier”。当时正是JavaScript JIT前期探索阶段；</li>
<li>直到2008年V8才正式开源，Google对此很谨慎，以防打草惊蛇的提醒到微软。（配合这款引擎，Chrome应声而出）很明显，95年时候“Netscape + Java kills Windows”的说法激怒了微软，最后什么结果大家也都知道了。不过历史同样重现，Chrome的刺激带来了微软的IE9和Chakra。</li>
<li>V8长达两年的绝密飞行“伤害”了JavaScript，意味着Apple和Mozilla需要自己探索陡峭的JS优化之路，不过后来借助V8的开源，这个难度大大降低。不过随着Mozilla放出TraceMonkey，Apple放出SquirrelFish，加上Chrome的V8，都向世人证明了JavaScript不再低效，不再是一个玩具语言，当然随着AJAX的流行，JavaScript变的越来越流行。</li>
<li>JavaScript的路依然漫长&#8230;&#8230;</li>
</ul>
<p>TraceMonkey面世左右，Dave Mandelin加入了Mozilla。新的篇章开始。</p>
<ul>
<li>新的JIT技术不断出现，Mozilla将Webkit中的Method JIT融入SpiderMonkey，优化别名JaegerMonkey；更多优化全面的Benchmark出现，其实主要强调来自Mozilla的Kraken；</li>
<li>而V8也开始Phase II，Crankshaft面世，开始向类型优化JIT的方向前进；</li>
<li>传统的JavaScript GC方式也开始变革，Mozilla先提出来Compartment GC分配内存的方式；而以往粗暴需要Pause的Allocation模式开始向Incremental和Generational GC探索；</li>
<li>IonMonkey是Mozilla的下一代优化JIT引擎，会跟Crankshaft接近，更加优化类型推演，还包括inline function等多种优化手段</li>
<li>如Brendan所言，JavaScript的路还很漫长，不过充满希望</li>
<li>Dave在11年Velocity大会上的<a href="http://people.mozilla.com/~dmandelin/KnowYourEngines_Velocity2011.pdf">演讲稿</a>非常值得一看</li>
</ul>
<p>JavaScript历久弥新，相信他拥有更美好的未来，而Brendan永远是心中的JS大神。</p>
<p>Hail to the King！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mijia.org/blog/?feed=rss2&amp;p=292</wfw:commentRss>
		</item>
	</channel>
</rss>

