[转载]关于谷歌退出中国
January 14th, 2010
以下文字转载自原作者百度首席产品设计师孙云丰的百度空间。转载此文目的是为分享奇文共赏,完全不代表本人同意其观点。
关于谷歌退出中国_在地铁站 – http://hi.baidu.com/whomi/blog/item/2b1001e9be877834b80e2df6.html 作者:百度首席产品设计师孙云丰
google宣称要退出中国,所证明的,恰恰不是市面上的那些g粉所宣称的那样,google是个”人权斗士”,而刚好反了过来,正好证明google是个市侩分子。
google的首席法律顾问的调调让我感到恶心。因经济利益退出,就直白白的说好了,把自己涂脂抹粉一番,还煞有介事的提到google被中国人攻击,中国异议分子的Gmail信箱被攻击,把这些事情作为退出中国的铺垫,这种论调是侮辱中国普通老百姓的智商,但还真有可能迎合那帮目空一切,但从未到过中国、对中国没有丝毫了解,却又喜欢对中国说三道四的西方人的假想。
只提一个假设,如果谷歌占据了中国80%的搜索市场份额,google的高管,还会这么高调的宣称要do no evil,从中国退出吗?
整个事情给我的唯一感受,就是恶心。
科普一点:
信息不对称是造成社会不平等最主要的原因之一。而对普通百姓最为关键的信息,并非中南海秘闻,而是最为常规的经济、文化、科技等领域信息。尽可能的为普通老百姓对这些领域的信息提供便捷,并消弭信息占有的不对称,这是搜索引擎存在的最大社会政治意义之一。
从这个角度而言,尽可能的设法为百姓提供便捷的信息获取技术服务,提供切实的价值,而不是挂羊头卖狗肉的宣称自己do no evil和政府撕破脸皮搞壮烈,才是一种真切的负责态度。找台阶下可以,但不要拿一个高管制国家的民众感情来做台阶,这是极其不道德的。
政治环境短期内是无法改变的。在中国,每个企业或者个人,都必须戴着镣铐跳舞。其实在别国一样,只是程度之别。但这是现实。在有限的条件下,尽可能的提供自己勉力而为的一份子,才是一个真切的做企业、做人态度。
在我博客上乱喷的兄弟,甚至还有搞笑的喷我five毛党的,都回家好好的念点书,再回来喷吧。希望看得见点水平的,而不是除了咒死爹死娘就不知道说啥的。 80年代的愤青,可不是现在这副衰样儿。
————–
以上是作为一个曾经的忠实google用户而说的,和百度无关。市面上沾沾自喜于了解一点google的产品技术细节将google奉为道德楷模而自封G 粉的兄弟,请勿跟帖瞎喷,你们根本不懂什么叫搜索引擎,什么叫自由人权。
————–
btw,评论关闭。要喷到twitter上喷吧。我的地盘不欢迎。
原文完毕。
标签:GoogleCN对 Twitter 以及信息过载的一些思考
December 13th, 2009
随着 Twitter 上 following 人数的增加,越来越觉得生活中信息过载了。每天要花费很多时间阅读 Twitter,但获取到的有价值信息并不多。与之相比 Google Reader 里积累的一大堆文章都来不及看,一直想阅读的书籍更是完全没时间开始。周五洗澡时思考了一些可能的改善方法,记录如下。如果你还有其他方法或者不同意见,欢迎留言交流。
根本的目标是,减少信息量,提高摄取的信息价值。Less means more.
- 任何时候都要减少视野内的信息源数量。同时关注更少的信息源可以获得更高的处理效率,并且保持注意力集中。
- 确定 Twitter 使用目标。对于我来说最重要的是获取有价值的信息,以及和朋友保持联系。(相比 IM,Twitter 可以更容易地拉近朋友之间的距离。因为自己或是朋友总是会有新的 tweet 来引起对方对话的兴趣。)
- 根据使用目标确定一种优化 Twitter 使用的策略。
- 只 follow 信息值量比(价值数量比)高的人。
- 使用 Private List 跟踪朋友。
- 使用 Topic List 跟踪信息值量比较低的人。
- 卸载桌面客户端,只使用手机阅读 Twitter(可以因为手机的不便强制减少工作时间看 Twitter)。使用 TwiTalker 发 tweet,TwiTalker 设置为只接受@自己的消息和私信。
- 发 tweet 也要遵循使用目的,尽量不废话。不要随意 RT 价值不高的信息。和朋友的对话应该使用 @ 回复而非 RT,除非对话信息对与朋友无关的 follower 有价值。
- 较有持久价值的信息分享尽量使用 blog。
- 睡前或者其他有比较安静环境的空闲时间用来进行书籍阅读。
- 地铁等嘈杂环境里的空闲时间看 Google Reader。
使用 Function.apply.apply() 为 IE 里的原生函数添加 .apply() 方法
December 13th, 2009
IE 里有很多原生的 Javascript 函数实际上都不是一个标准的 Function 对象,例如 window.alert,window.setTimeout 以及 IE8 的 window.console.log 等。在需要对这样的函数进行包装的时候,会因为它们都没有 Function 对象应该有的 .apply() 及 .call() 方法而难以做到。
这段代码为了兼容旧版本没有 console 的浏览器,尝试将 console.log 包装为 $.log,但是基于上述原因它在 IE 里无法执行。
$ = {};
if (console && console.log) {
$.log = function() {
console.log.apply(console, arguments);
};
} else {
$.log = function() {};
}
由于 window 和 console 这样的原生对象都是只读的,所以无法使用类似这样的代码简单地为其添加 .apply() 方法。
console.log.apply = Function.apply;
解决办法是使用 Function.apply.apply() 将 Function.apply 函数对象 apply 到 console.log 上。
$ = {};
if (console && console.log) {
$.log = function() {
Function.apply.apply(console.log, [console, arguments]);
};
} else {
$.log = function() {};
}
这段代码和第一段代码完全等价。
如果觉得不容易理解,可以看看这个 .apply() 函数比较清晰的例子。这两行代码也完全等价。
[1, 2, 3, 4].slice(0, 2); Array.prototype.slice.apply([1, 2, 3, 4], [0, 2]);标签:Javascript
我的域名注册商被和谐了
February 28th, 2009
前两天把 rainux.org 的 DNS 服务器设置为 DreamHost 的服务器后,发现域名管理方便了很多,遂决定把 rainux.com 的也改过来。没想打开域名管理页面后只得到一个空白页面,上面只有一句话——“您的网站没有提交ICP备案号,所以被关闭!!!”
一开始以为是我被和谐了,仔细一看原来是我的域名注册商 bytescn.com 的网站被和谐。哎,幸好 rainux.org 的 DNS 已经在 DreamHost 上了,暂时不用担心。不过以后怎么办?
标签:和谐Intel Mac 多系统(Mac OS X、GNU/Linux、Windows)原理和实践
February 7th, 2009
Intel Mac 安装多系统的方法网上有很多文章介绍,已经不神秘了。本文解释整个过程背后的原理以及提供关键问题的解决方案,同时介绍我自己的分区方案和实践经验。以下内容基于在一台 MacBook 上安装运行 Mac OS X 10.5、Debian GNU/Linux lenny 分支和 Windows XP 的三系统实践,所以某些细节可能会不适用于其它情况。
背景
理论上,所有基于 Intel CPU 的 Mac 计算机(包括 MacBook,Mac Mini 等)在安装过 Mac OS X 10.4.6 或更高版本的 combo update 和 firmware update 后都应该可以安装运行 GNU/Linux 和 Windows 2000 以上版本,但是有一些限制。
众所周知 PC 使用 BIOS 作为硬件 firmware 和操作系统的中间层,并且使用 MBR 分区表作为硬盘分区方案。而 Intel Mac 与普通 PC 最大的区别就是使用了 BIOS 的下一代替代品 EFI 和 GPT 分区方案。EFI 和 GPT 都分别向后兼容于 BIOS 和 MBR 分区表,所以可以支持基于 BIOS 和 MBR 的操作系统,例如 GNU/Linux 和 Windows。
简单地说,GPT 通过包含一份 MBR 分区表来兼容 MBR 分区方案(参考 Wikipedia 上的 GPT 页面)。GPT 的内容可以被同步到 MBR 分区表中,所以当硬盘使用 GPT 分区方案时,GPT 里的分区可以通过 MBR 分区表被访问到——这是在 Intel Mac 上安装基于 MBR 分区表方案的操作系统的关键。但是 MBR 分区表只能包含最多 4 个主分区(扩展分区相当于一个主分区,可以在其上划分多个逻辑分区),而 GPT 没有扩展分区和逻辑分区的概念,现有的工具在同步 GPT 到 MBR 分区表时也不会做额外的转换,所以实际上只能同步 GPT 上的前 4 个分区到 MBR 分区表中。而 Intel Mac 上运行 Windows 有一个奇怪的限制,Windows 必须被安装到 MBR 分区表中的最后一个分区上,否则会在启动时提示找不到 %SystemRoot%\system32 目录下的某文件。
虽然 Mac OS X 附带的 Disk Utility 可以对 GPT 分区方案的硬盘进行分区,但是不够稳定,不建议使用。GNU Parted 是我的选择,它对 GPT 分区方案支持比较好。另外还需要 rEFIt 中的 Partitioning Tool 来同步 GPT 和 MBR 分区表,同时我也使用 rEFIt 作为多系统引导管理器,相对于目前的 GRUB2 来说,它更成熟并且非常容易使用,还拥有很漂亮的图形界面。
GNU/Linux 内核支持 GPT,因此启动之后可以访问 GPT 上的所有分区。但是 GRUB 不支持 GPT,所以 GRUB 和 GNU/Linux 内核必须被安装到一个 MBR 分区表里的分区上。Windows 完全不支持 GPT,所以始终只能访问 MBR 分区表上的 4 个分区。
双系统的特殊情况
在典型的双系统情况下,你可能只有三个分区,Mac OS X 占用两个,Windows 占用一个。使用 rEFIt 同步 GPT 和 MBR 分区表后,工作很正常。然而如果你在 Mac OS X 里创建了另外一个分区,导致同步 GPT 和 MBR 后 Windows 安装分区不再是 MBR 分区表中最后一个分区,此时 Windows 就会像上文中提到那样无法启动。解决方法很简单,使用不支持 GPT 的分区工具将这个新创建的分区在 MBR 分区表中删掉即可。注意,仅仅是在 MBR 分区表中删掉,在 Mac OS X 里通过 GPT 你仍然可以访问它。
不支持 GPT 的分区工具包括 Linux 里的 fdisk,Windows 的 compmgmt.msc 里的磁盘管理,以及各种 Windows 下第三方工具的较老版本,例如 Paragon Partition Manager 7.0。
我的分区方案
Mac OS X 的常规安装需要占用两个分区,第一个是预留的 EFI System,有文章说可以安全地删除它,不过我没有尝试。GNU/Linux 和 Windows 各自需要占用一个分区,刚好达到 MBR 分区表中 4 个主分区的限制。这是大多数文章中介绍的方案,但是这样 GNU/Linux 和 Windows 都没有一个专门存储数据的分区,GNU/Linux 也没有 swap 分区,使用上并不方便。
以下是我的分区方案,使用 GNU/Linux 的设备描述方式:
/dev/sda1 200.00MB EFI System
/dev/sda2 43.83GB HFS+ 文件系统,Mac OS X 安装分区
/dev/sda3 13.50GB ext3 文件系统,同时作为 GNU/Linux 的 /boot,/home 和 Windows 里的 D: 盘
/dev/sda4 5.00GB NTFS 文件系统,Windows 安装分区 C: 盘
/dev/sda5 10.00GB reiserfs 文件系统,GNU/Linux 的安装分区 / 目录
/dev/sda6 2.00GB linux-swap 文件系统,GNU/Linux 的交换分区
使用 rEFIt 的 Partitioning Tool 进行同步后,/dev/sda4 刚好是 MBR 分区表中的最后一个分区,符合上面提到的 Intel Mac 运行 Windows 的必要条件。
在 Windows 里安装 Ext2 IFS 或者 Ext2fsd 即可将 ext3 文件系统的 /dev/sda3 当成 ext2 文件系统挂载为 D: 盘。要注意的是目前主流发行版里的 mkfs.ext3 默认会创建 inode 为 256 字节的 ext3 文件系统,而 Ext2 IFS 只支持 inode 大小为 128 字节的 ext3 文件系统,Ext2fsd 则没有问题。或者也可以使用 mkfs.ext3 -I 128 来创建 inode 大小为 128 字节的 ext3 文件系统。
Windows 还可以通过安装 MacDrive 来访问安装 Mac OS X 的 HFS+ 分区,它对 HFS+ 文件系统支持很好。和 Ext2 IFS 及 Ext2fsd 一样,安装它以后你可以将 HTFS+ 文件系统的分区挂载为 Windows 下的一个逻辑盘。与 Ext2 IFS 和 Ext2fsd 不同的是,这个逻辑盘的盘符只能在 Windows 自己的磁盘管理工具里修改。但是它可能跟 Ext2fsd 有冲突,每次安装 Ext2fsd 后都会由 MacDrive 的某个驱动程序导致 Windows 蓝屏。与 Ext2 IFS 同时安装使用就没有问题。MacDrive 是本文提到的第三方工具中唯一一个商业软件。
Mac OS X 也可以通过安装 Mac OS X Ext2 Filesystem 来访问 /dev/sda3,并将其作为单独的个人数据分区。不过我没有这么做,因为事实上我几乎不使用 Mac OS X,我觉得 Debian GNU/Linux 提供的类 Unix 环境比 Mac OS X 的更友好,保留它只是因为这台 MacBook 的主人需要它。
这个方案的好处是 Windows 可以有 D: 盘来将系统和个人数据分开,GNU/Linux 也可以有多个分区来分离系统和个人数据。实际上因为 GNU/Linux 内核 支持 GPT,后面可以创建更多分区给 GNU/Linux,不过我使用的 MacBook 硬盘只有 80GB,分区太多各个分区空间利用率反而降低,所以 /dev/sda3 身兼了三职。这样做还有个好处,Windows 里的 Cygwin 和 GNU/Linux 可以很容易的共享同一个 $HOME 目录,不管是 TM2008、Pidgin 还是 OpenSSH、zsh、Vim/gVim 都可以很方便地在两个系统共享同一套配置和数据文件。
准备工具
- 一台 Intel Mac。
- Mac OS X 10.4 以上安装光盘,如果 Intel Mac 上已经安装好了 Mac OS X,则不需要。
- Windows 安装光盘,原始版本或者 Ghost 版本都可以。
- 一张包含 GNU Parted 的 GNU/Linux 安装光盘或者 Live CD,例如我使用的 Debian 安装光盘。
- rEFIt 安装程序。
因为 Intel Mac 对 USB 存储设备的 BIOS 兼容启动支持很差,所以上面提到的都是光盘。
安装步骤
按照常规的方式将 Mac OS X 安装到一个分区上。建议将安装光盘的 dmg 镜像使用 Disk Utility 恢复到一块移动硬盘的某个主分区上,再用它启动安装程序,这样安装过程会比较快。如果你的 Intel Mac 上已经有一个正常使用的 Mac OS X 10.4 以上版本,这一步可以直接忽略。
使用 Mac 主菜单里的 Software Update 安装最新的 combo update 和 firmware update。
在 Mac OS X 里使用命令行工具 diskutil 将 Mac OS X 安装分区动态缩小(也可以使用 BootCamp),为其它系统预留出足够的空间。这一步的目的只是留出空间,详细的分区过程将使用 GNU Parted。命令格式如下,第一个 45G 是 Mac OS X 安装分区 disk0s2 将要被缩小到的大小。第二个 30G 只是用来占位的分区,必须提供,否则 diskutil 完成工作之后你会发现 disk0s2 大小没有变化。在这么做之前请使用 diskutil list 查看 GPT,确保你的 Mac OS X 是安装在 disk0s2。
sudo diskutil resizeVolume disk0s2 45G "MS-DOS FAT32" "Windows" 30G
在 Mac OS X 里安装多系统引导管理器 rEFIt。安装完成以后每次启动时都可以看到 rEFIt 的图形界面,通过它可以选择启动不同的系统,以及访问 rEFIt 的 Partitioning Tool 进行 GPT 和 MBR 分区表的同步。
使用 Debian 安装光盘(或者其它包含 GNU Parted 的 LiveCD)启动 Intel Mac,在硬盘分区步骤即可以使用 GNU Parted 工具。删掉刚才预留的 30G 占位分区,将空闲空间按照上面提到的方案分成 4 个分区。此处 GNU Parted 不能创建 NTFS 文件系统,所以 /dev/sda4 暂时使用 ext3 或者其它文件系统,将来可以用 Windows 安装程序重新格式化为 NTFS。我在这一步直接安装好了 Debian GNU/Linux,你也可以在分区完成后取消安装过程,安装你喜欢的其它发行版。我猜测大多数的发行版使用的分区工具都应该是 GNU Parted,因此这一步你应该可以直接使用你喜欢的发行版的安装光盘。
重新启动后在 rEFIt 的图形界面里进入 Partitioning Tool,按提示进行 GPT 和 MBR 的同步。
使用 Windows 安装光盘启动 Intel Mac 并将最后一个分区(Windows 安装程序看到的最后一个分区只是 MBR 分区表中的最后一个分区,即 /dev/sda4)格式化为 NTFS,安装 Windows。
也可以用国内常见的各种 GhostXP 光盘来安装 Windows,但是必须要使用带有 Windows PE 的版本。因为 Intel Mac 几乎完全不能运行 DOS 下的任何程序,所以必须使用光盘上的 Windows PE 启动,然后使用 GHOST32 来恢复光盘上的 .GHO 文件到预留的 Windows 安装分区 /dev/sda4。这里还可能会遇到一个问题,如果执行 GHOST32 之前你已经将 /dev/sda4 格式化成了 FAT32 文件系统(也可能是 NTFS),很有可能在 GHOST32 中选择目标分区时看不到它,而保留在第 5 步中选择的 ext3 或者 reiserfs 文件系统则没有问题。
参考资料
- Triple Boot via BootCamp – OnMac.net Wiki
- rEFIt – Myths and Facts About Intel Macs
- MacBook – Debian Wiki