I always feel that the fact that Windows is the dominant desktop OS has one technical reason: ease of binary software distribution.
In whatever flavor of Unix, it is quick and easy to write some software working locally, but it is very hard to distribute the written software in binary form that would work universally.
The difficulty of binary distribution stems from the fact Unix has never been a concrete OS. Rather, Unix is an umbrella term for a family of OS.
In a 1995 book called <Porting Unix Software: From Download to Debug>, diversity of Unix is excused as Unix support many architectures. Good point.
However, in a world that almost all desktops run x86, we still get a long list of Linux distributions and we are still facing the old problem.
The difficulty of binary distribution also comes from the tradition of Unix library handling.
Unix systems generally encourage installing library system-wide. In this way, if binary software carry its dependencies, it may overwrite system libraries and cause damage. If binary software carry no dependency, it may not start up at all. Therefore, many software author just throw out some source code, containing their favorite build system (Shell script, Makefile, Autotools, CMake, etc...), and let other people to worry about installation.
Mac OS X is a notable exception.
Firstly, Mac OS X is Mac OS X as Windows is Windows, it is a concrete OS rather than a concept.
Secondly, Mac OS X encourage applications to carry dependencies themselves in an App bundle, that's why we can have .app just works.
Linux based system is quite successful in server and embedded market, why?
Because software working locally is good enough in such applications while Linux is a good kernel.
Android and iOS has Unix under the hood, but the up layer software run-time is replaced entirely. That's why we can have App Store and Google Play.
大馬哥的個人博客
Wednesday, April 3, 2013
Tuesday, March 26, 2013
Wayland and Mir, Motivation
The announcement of Mir from Canonical upset some people. The same group of people also believe that Wayland, a project backed mostly by some guys in Intel, is only way to go.
I don't feel excited about Mir, at the same time, I don't think it is something bad.
It is worth noting that Canonical used to put their hope on Wayland [1]. Canonical didn't contribute much, if any, to Wayland, but contribution should not be an obligation.
How did other parties play with Wayland?
Let's see what did desktop environments do.
AFAIK, GNOME, a community project generally taken care by Red Hat employees, did almost nothing except accepting some code from Wayland developers. And they recently realized that the display stack need some love after the announcement of Mir [2].
KDE did something to an extent that a demo distribution can be created [3]. The days were good before Nokia switched to Windows Phone since there used to be an interest to put Wayland on MeeGo. Qt's support of Wayland may more or less related to Nokia's involvement at that time.
Enlightenment also did something with Wayland support. But note that E17 is release at late 2012, so it was not an option for normal users. Also note that Enlightenment has some Samsung sponsorship. As Samsung used EFL in Bada and plan to use EFL in Tizen, there may be an interest of Wayland from Samsung also.
Other DE/WM doesn't seem to bother with Wayland stuff.
It is clear from the above brief record that the pure community interest of Wayland is limited, even though proprietary OS has been working better for years. Corporate interest of Wayland generally comes from mobile platform, but a relevant Linux-based mobile platform other than Android hasn't appeared yet.
Put it in another way, heavy lifting is needed to make Wayland useful in real world applications. Before the announcement of Mir, it is not clear who will do the needed work in near future.
Should Canonical be the first party to massively use Wayland? Probably not.
Canonical has been focused on mobile platform recently. Before they can really be a threat to Android and iOS, they actually compete with Tizen, Firefox OS and Sailfish OS. But the other three Linux-based mobile platform all want to use Wayland actually. So Canonical may not want to help its competitors.
Some time is needed to see what Mir really is. But the good thing is that Mir is based by Canonical's motivation of dominance in desktop and mobile.
On the other hand, motivation is something not clear in the development timeline of Wayland. Pro-Wayland people is not affected by Mir technically. They just need enough motivation to push Wayland in timely manner.
- http://www.markshuttleworth.com/archives/551
- https://live.gnome.org/Wayland
- http://sourceforge.net/projects/rebeccablackos/
- http://www.enlightenment.org/p.php?p=news/show&l=en&news_id=77
Sunday, March 3, 2013
驳王垠《漫谈 Linux,Windows 和 Mac》一文
以下蓝色部分为王垠原文。
好了,现在来一点技术性的。这段时间受到很多人的来信(大部分是菜鸟)。他们看了我很早以前写的推崇 Linux 的文章,想知道如何“抛弃 Windows,学习 Linux”。天知道他们在哪里找到那么老的文章,真是好事不出门。。。我觉得我有责任消除我以前的文章对人的误导,洗清我这个“Linux 狂热分子”的恶名。我觉得我已经写过一些澄清的文章了,可是怎么还是有人来信问 Linux 的问题。也许因为感觉到“舆论压力”,我把文章都删了
恩,继续看下去。
简言之,我想对那些觉得 Linux 永远也学不会的“菜鸟”们说:
1. Linux 和 Unix 里面包含了一些非常糟糕的设计。学不会有些东西不是你的错,是 Linux 的错,是“Unix 思想” 的错。不要浪费时间去学习它们的太多东西。那些貌似难的,复杂的东西,特别要小心分析。
2. Windows 避免了 Unix,Linux 和 Mac OS X 的很多问题。微软是值得尊敬的公司,是真正在乎程序开发工具的公司。我收回曾经对微软的鄙视态度。请菜鸟们吸收 Windows 设计里面好的东西。
真的吗?继续看下去。
3. 学习操作系统最好的办法是学会(真正的)程序设计,而不是去“学习”各种稀奇古怪的工具。所有操作系统,数据库,Internet,以至于 WEB 的设计思想(和缺陷),几乎都能用程序语言的设计思想简单的解释。
这话本身在理。
先说说我现在对 Linux 和相关工具(比如 TeX)的看法吧。我每天上班都用 Linux,可是回家才不想用它呢。上班的时候,我基本上只是“忍受”着它,尽我所能的改善它。Unix 有许许多多的设计错误,却被当成了圣经,传给了一代又一代的程序员。Unix 的 shell,命令,配置方式,图形界面,都是非常糟糕的。每一个新版本的 Ubuntu 都会在图形界面的设计上出现新的错误,让你感觉历史怎么会倒退。但是这只是表面现象。Linux 的图形界面(X window)在本质上几乎是不可治愈的恶疾。我不想在这里细说 Unix 的缺点,在它出现的早期,已经有人写了一本书,名叫 Unix Hater's Handbook,里面专门有一章叫做 The X-Windows Disaster。
说实话这段的观点是非常主观和空洞啊。
Shell/命令糟糕,请问CMD或者PowerShell是否比较优秀呢?优秀在哪呢?
想用Lisp?那我表示Scsh支持Unix和Windows(通过Cygwin)。
配置方式糟糕,这个我特别不理解。到底是GNOME/Unity没有提供图形的控制面板了呢?还是Apache的HTTPD安装在Windows下就不需要编辑配置文件了?
X糟糕我稍微可以认同,不过也有Wayland等尝试改进的工作在开展了,参见:https://lwn.net/Articles/415589/
这本书里汇集了 Unix 出现的年代,很多人对它的咒骂。我曾经以为这是一些菜鸟,他们肯定是智商太低,或者被 Windows 洗脑了,不能理解 Unix 的高明设计才在那里骂街。现在理解了程序语言的设计原理之后,我才发现,他们说的那些话里面居然大部分是实话!其实他们里面有些人在当年就是世界顶尖的编程高手,自己写过操作系统,功底不亚于 Unix 的创造者。在当年他们就已经使用过设计更加合理的系统,比如 Multics,Lisp Machine 等。可惜的是,在现在的操作系统书籍里面,Multics 往往只是被用来衬托 Unix 的“简单”和伟大。Unix 的书籍喜欢在第一章讲述这样的历史:“Multics 由于设计过于复杂,试图包罗万象,而且价格昂贵,最后失败了。” 可是 Multics 失败了吗?不。Multics,Oberon,IBM System/38, Lisp Machine,…… 在几十年前就拥有了 Linux 现在都还没有的好东西。Unix 里面的东西,什么虚拟内存,文件系统,…… 基本上都是从 Multics 学来的(有很多没有学得像)。Multics 的机器,一直到 2000 年都还在运行。Unix 不但“窜改”了历史教科书,而且似乎永远不吸取教训,到现在还没有实现那些早期系统早就有的好东西。最后 Unix 依靠自己的“宗教”和“哲学”,“战胜”了别的系统在设计上的先进,统治了程序员的世界。胜者为王,可是 Unix 其实是一个暴君,它不允许你批评它的错误。它利用其它程序员的舆论压力,让每一个系统设计上的错误,都被说成是用户自己的失误。其它系统里面某些优秀的系统设计,也许就要被历史掩埋……
一本年代久远(1994年),亚马逊上3星半的书,不必过分追捧。
http://www.amazon.com/dp/1568842031/
文中提到的至少十几年前就灭绝的系统, 好吧,我真没用过,就当他们是很牛X的吧,请问后发的Windows NT有没有继承他们的思想呢?如果没有是为什么呢?
至于Unix篡改历史,Unix是暴君……一个OS内核还有这样的能耐……
如果那些是说Unix用户,我觉得“以前的王垠”可能是大中华区最符合的了,呵呵。
我曾经强烈的推崇 FVWM,TeX 等工具,可是现在擦亮眼睛看来,它们给用户的界面,其实也是非常糟糕的设计,跟 Unix 一脉相承。他们把程序设计的许许多多的细节,无情的暴露给用户。让用户感觉有那么多东西要记,仿佛永远也没法完全操纵它。实话说吧,当年我把 TeXbook 看了两遍,做完了所有的习题(包括最难的“double bend”习题)。几个月之后,几乎全部忘记干净。为什么呢?因为 TeX 的语言是非常糟糕的设计。它的设计者几乎完全不明白程序语言设计的基本原则,不明白什么叫做“抽象”。
TeX好不好用和Unix有什么关系?我在Windows下装TeX Live,用了下TeX觉得很难用,就可以证明Windows很糟糕了吗?(CTeX甚至只支持Windows,呵呵)
FVWM类似的道理。
(我最早接触的Linux是Red Hat Linux 8.0,那时候还没有Fedora,默认桌面是GNOME,预装了OpenOffice.org,没预装TeX)
一个好的工具,应该只有少数几条需要记忆的规则,就像象棋一样。而这些源于 Unix 的工具却像是“魔鬼棋”或者“三国杀”,有太多的,无聊的,人造的规则。有些人鄙视图形界面,鄙视 IDE,鄙视含有垃圾回收的语言(比如 Java),鄙视一切“容易”的东西。他们却不知道,把自己沉浸在别人设计的繁复的规则中,是始终无法成为大师的。就像一个人有能力学会各种“魔鬼棋”的 规则,却始终无法达到象棋大师的思维高度,因为魔鬼棋本身就无法跟象棋的设计相提并论。所以,容易的东西不一定是坏的,而困难的东西也不一定是好的。学习 计算机(或者任何其它领域)的东西,应该“只选对的,不选难的”。记忆一堆的命令,乌七八糟的工具用法,最后脑子里什么也不会留下。学习“原理性”的东 西,才是永远不会过时的。
象棋流行还是三国杀流行?就算是象棋流行吧,呵呵。
“有些人”也完全可以是在Windows捣鼓C/C++的嘛,比如:
http://blog.codingnow.com/2008/09/replacement_of_ide_1.html
“魔鬼棋”式的工具只源于Unix吗?为了公平比较得把Windows NT发布之前出现的工具给去掉吧?比如TeX,想源于优秀的Windows NT也没机会啊。
我觉得这个世界被最多人使用的“魔鬼棋”式工具正是Microsoft Office,收到别人的doc文件,我放在微软自己的Office Web App里编辑都会变成一团乱麻,实在无法理解。
我并不是说 Windows 好很多。技术设计上的很多细节,也许它在早期是同样糟糕的。但是它却向着更加结构化,更加简单的方向发展。到 Windows XP 的时候,已经很不错了。我认识一个 Adobe 的高级设计师。他告诉我,当年他们把 Photoshop 移植到 Intel 构架的 Mac,花了两年时间。Xcode 比起 Visual Studio 真是差太多了。而 Mac OS X 的很多设计,让他们的移植实在太痛苦。只不过系统换了个处理器,移植个程序居然花了两年时间。不过他很自豪的说,当年很多人等了两年也没有买 Intel 构架的 Mac,就是因为他们在等待 Photoshop 的移植。最后他直言不讳的说,微软其实才是真正在乎程序员的公司。相比之下,Apple 虽然对用户显得友好,但是对程序员的界面却差很多。Apple 尚且如此,Linux 对程序员就更差了。可是有啥办法呢,有些人就是受虐狂。自己痛过之后,还想让别人也痛苦。就像当年的我。
且不说这种论证有多弱。要是以移植处理器作为比较对象,那我觉得Linux怎么都算是第一了,多少软件包都是N个架构可以编译可以用的?(去看看Debian吧)强大的Visual Studio的移植性在哪里?怎么Windows RT只支持Windows Store应用呢?
Windows XP被限制在IE8,很多用户甚至还在用IE6,搞得Web开发者苦不堪言,这就是“在乎程序员”?相比之下Ubuntu的各种版本只要支持期不结束,会不断给用户升级到Firefox的最新版。例如Ubuntu 10.04现在也会升级到Firefox 19.0。
http://packages.ubuntu.com/search?keywords=firefox
Windows RT都不支持SliverLight,之前搞个插件,现在又推HTML5,这就是“在乎程序员”?
我当然不是人云亦云。微软在程序语言上的造诣,我看得很清楚。我只是通过别人的经历,来验证自己早已存在的看法。所以一再宣扬别的系统都是向自己学习的 Apple 受到这样的评价,我也一点不惊讶。Mac OS X 毕竟是从 Unix 改造而来的。我在家里有一个 Macbook Air,一个 iPhone 5,和一个退役的,装着 Windows 7 的 T60。我不得不承认,虽然我很喜欢 Macbook 和 iPhone 的硬件,但我发现 Windows 在软件上的很多设计其实更加合理。举个简单的例子,我至今没有发现有什么不自虐的方式,可以改变 Mac 浏览器里面的中文字体!所有的论坛都说要改什么 .plist 配置文件,还有人打包分享了他自己的配置文件。怎么跟 Linux 当年一个德行?一个公司的偏执,真的可以阻碍它向别人学习,设计出更好的东西。微软也许在当年是傲慢轻狂的公司,但是我觉得它现在已经度过青春期,长大成熟了。
Windows在软件设计上更加合理因为提供了一个Windows改中文字体的UI?呵呵,要不我截图给大家看看,用微软官方的Windows 7 IE9虚拟机,默认的中文字体丑到了何种程度?
大概作者觉得改注册表要比改配置文件先进、优秀多了?有这样的个人观点本身没问题,不过我听说,只是听说,.Net也采用了.config文件的配置方式,这世界是怎么了呢?
说实话,我真的搞不懂为什么我当年会鄙视微软。现在我身边还有一些人鄙视微软。甚至在 Indiana 的时候有个教授口头上说“鼓励”,实际上想强迫学生离开 Windows 和 Visual Studio,而使用 Unix 和 Emacs。微软到底犯着谁了啊?不要忘了 Unix 是 AT&T 的产品。微软和 AT&T,到底谁更邪恶呢?公司不都是追逐利益的吗。现在看来 Apple, Google,…… 也都是一个样。不过现在,骂 Unix 和骂 Windows 不大一样的地方是,如果骂 Windows,几乎没有人跟你还口。最多有人跟你说,不就是个有点毛病的东西吗,有啥好骂的(埋头继续玩他的游戏)。而如果一旦有人骂 Unix,立刻有人会起来说:“菜鸟不理解 Unix 的哲学。人笨怪刀钝。” 哎,不吭声的就是容易被欺负。
有个教授和作者的观点不一,作者就看不下去了,呵呵。
至于所谓的“公司不都是追逐利益的吗”:
原来售价不菲(不然中国为什么盗版横行,请问)的私有软件(如Windows)和以GPL或BSD协议发表的自由开源软件(如Linux、FreeBSD、Darwin)是可以混为一谈的。
原来一个公司为了追逐利益,在操作系统中留下后门也没什么关系(忘了黑屏事件了吗)。
当然我不是在这里打击 Linux 和 Mac 而鼓吹 Windows。这些系统的纷争基本上已经不关我什么事。我只是想告诉新人们,去除头脑里的宗教,偏激,仇恨和鄙视。每一次仇恨一个东西,你就失去了向它学习的机会。
我觉得本文作者头脑中充满了“偏激,仇恨和鄙视”,呵呵。
总结一下,我只想对本文说“呵呵”。Unix并不是没有缺点,麻烦作者批评到点子上,不要扯了这么多结果什么实质内容都没有。
好了,现在来一点技术性的。这段时间受到很多人的来信(大部分是菜鸟)。他们看了我很早以前写的推崇 Linux 的文章,想知道如何“抛弃 Windows,学习 Linux”。天知道他们在哪里找到那么老的文章,真是好事不出门。。。我觉得我有责任消除我以前的文章对人的误导,洗清我这个“Linux 狂热分子”的恶名。我觉得我已经写过一些澄清的文章了,可是怎么还是有人来信问 Linux 的问题。也许因为感觉到“舆论压力”,我把文章都删了
恩,继续看下去。
简言之,我想对那些觉得 Linux 永远也学不会的“菜鸟”们说:
1. Linux 和 Unix 里面包含了一些非常糟糕的设计。学不会有些东西不是你的错,是 Linux 的错,是“Unix 思想” 的错。不要浪费时间去学习它们的太多东西。那些貌似难的,复杂的东西,特别要小心分析。
2. Windows 避免了 Unix,Linux 和 Mac OS X 的很多问题。微软是值得尊敬的公司,是真正在乎程序开发工具的公司。我收回曾经对微软的鄙视态度。请菜鸟们吸收 Windows 设计里面好的东西。
真的吗?继续看下去。
3. 学习操作系统最好的办法是学会(真正的)程序设计,而不是去“学习”各种稀奇古怪的工具。所有操作系统,数据库,Internet,以至于 WEB 的设计思想(和缺陷),几乎都能用程序语言的设计思想简单的解释。
这话本身在理。
先说说我现在对 Linux 和相关工具(比如 TeX)的看法吧。我每天上班都用 Linux,可是回家才不想用它呢。上班的时候,我基本上只是“忍受”着它,尽我所能的改善它。Unix 有许许多多的设计错误,却被当成了圣经,传给了一代又一代的程序员。Unix 的 shell,命令,配置方式,图形界面,都是非常糟糕的。每一个新版本的 Ubuntu 都会在图形界面的设计上出现新的错误,让你感觉历史怎么会倒退。但是这只是表面现象。Linux 的图形界面(X window)在本质上几乎是不可治愈的恶疾。我不想在这里细说 Unix 的缺点,在它出现的早期,已经有人写了一本书,名叫 Unix Hater's Handbook,里面专门有一章叫做 The X-Windows Disaster。
说实话这段的观点是非常主观和空洞啊。
Shell/命令糟糕,请问CMD或者PowerShell是否比较优秀呢?优秀在哪呢?
想用Lisp?那我表示Scsh支持Unix和Windows(通过Cygwin)。
配置方式糟糕,这个我特别不理解。到底是GNOME/Unity没有提供图形的控制面板了呢?还是Apache的HTTPD安装在Windows下就不需要编辑配置文件了?
X糟糕我稍微可以认同,不过也有Wayland等尝试改进的工作在开展了,参见:https://lwn.net/Articles/415589/
这本书里汇集了 Unix 出现的年代,很多人对它的咒骂。我曾经以为这是一些菜鸟,他们肯定是智商太低,或者被 Windows 洗脑了,不能理解 Unix 的高明设计才在那里骂街。现在理解了程序语言的设计原理之后,我才发现,他们说的那些话里面居然大部分是实话!其实他们里面有些人在当年就是世界顶尖的编程高手,自己写过操作系统,功底不亚于 Unix 的创造者。在当年他们就已经使用过设计更加合理的系统,比如 Multics,Lisp Machine 等。可惜的是,在现在的操作系统书籍里面,Multics 往往只是被用来衬托 Unix 的“简单”和伟大。Unix 的书籍喜欢在第一章讲述这样的历史:“Multics 由于设计过于复杂,试图包罗万象,而且价格昂贵,最后失败了。” 可是 Multics 失败了吗?不。Multics,Oberon,IBM System/38, Lisp Machine,…… 在几十年前就拥有了 Linux 现在都还没有的好东西。Unix 里面的东西,什么虚拟内存,文件系统,…… 基本上都是从 Multics 学来的(有很多没有学得像)。Multics 的机器,一直到 2000 年都还在运行。Unix 不但“窜改”了历史教科书,而且似乎永远不吸取教训,到现在还没有实现那些早期系统早就有的好东西。最后 Unix 依靠自己的“宗教”和“哲学”,“战胜”了别的系统在设计上的先进,统治了程序员的世界。胜者为王,可是 Unix 其实是一个暴君,它不允许你批评它的错误。它利用其它程序员的舆论压力,让每一个系统设计上的错误,都被说成是用户自己的失误。其它系统里面某些优秀的系统设计,也许就要被历史掩埋……
一本年代久远(1994年),亚马逊上3星半的书,不必过分追捧。
http://www.amazon.com/dp/1568842031/
文中提到的至少十几年前就灭绝的系统, 好吧,我真没用过,就当他们是很牛X的吧,请问后发的Windows NT有没有继承他们的思想呢?如果没有是为什么呢?
至于Unix篡改历史,Unix是暴君……一个OS内核还有这样的能耐……
如果那些是说Unix用户,我觉得“以前的王垠”可能是大中华区最符合的了,呵呵。
我曾经强烈的推崇 FVWM,TeX 等工具,可是现在擦亮眼睛看来,它们给用户的界面,其实也是非常糟糕的设计,跟 Unix 一脉相承。他们把程序设计的许许多多的细节,无情的暴露给用户。让用户感觉有那么多东西要记,仿佛永远也没法完全操纵它。实话说吧,当年我把 TeXbook 看了两遍,做完了所有的习题(包括最难的“double bend”习题)。几个月之后,几乎全部忘记干净。为什么呢?因为 TeX 的语言是非常糟糕的设计。它的设计者几乎完全不明白程序语言设计的基本原则,不明白什么叫做“抽象”。
TeX好不好用和Unix有什么关系?我在Windows下装TeX Live,用了下TeX觉得很难用,就可以证明Windows很糟糕了吗?(CTeX甚至只支持Windows,呵呵)
FVWM类似的道理。
(我最早接触的Linux是Red Hat Linux 8.0,那时候还没有Fedora,默认桌面是GNOME,预装了OpenOffice.org,没预装TeX)
一个好的工具,应该只有少数几条需要记忆的规则,就像象棋一样。而这些源于 Unix 的工具却像是“魔鬼棋”或者“三国杀”,有太多的,无聊的,人造的规则。有些人鄙视图形界面,鄙视 IDE,鄙视含有垃圾回收的语言(比如 Java),鄙视一切“容易”的东西。他们却不知道,把自己沉浸在别人设计的繁复的规则中,是始终无法成为大师的。就像一个人有能力学会各种“魔鬼棋”的 规则,却始终无法达到象棋大师的思维高度,因为魔鬼棋本身就无法跟象棋的设计相提并论。所以,容易的东西不一定是坏的,而困难的东西也不一定是好的。学习 计算机(或者任何其它领域)的东西,应该“只选对的,不选难的”。记忆一堆的命令,乌七八糟的工具用法,最后脑子里什么也不会留下。学习“原理性”的东 西,才是永远不会过时的。
象棋流行还是三国杀流行?就算是象棋流行吧,呵呵。
“有些人”也完全可以是在Windows捣鼓C/C++的嘛,比如:
http://blog.codingnow.com/2008/09/replacement_of_ide_1.html
“魔鬼棋”式的工具只源于Unix吗?为了公平比较得把Windows NT发布之前出现的工具给去掉吧?比如TeX,想源于优秀的Windows NT也没机会啊。
我觉得这个世界被最多人使用的“魔鬼棋”式工具正是Microsoft Office,收到别人的doc文件,我放在微软自己的Office Web App里编辑都会变成一团乱麻,实在无法理解。
我并不是说 Windows 好很多。技术设计上的很多细节,也许它在早期是同样糟糕的。但是它却向着更加结构化,更加简单的方向发展。到 Windows XP 的时候,已经很不错了。我认识一个 Adobe 的高级设计师。他告诉我,当年他们把 Photoshop 移植到 Intel 构架的 Mac,花了两年时间。Xcode 比起 Visual Studio 真是差太多了。而 Mac OS X 的很多设计,让他们的移植实在太痛苦。只不过系统换了个处理器,移植个程序居然花了两年时间。不过他很自豪的说,当年很多人等了两年也没有买 Intel 构架的 Mac,就是因为他们在等待 Photoshop 的移植。最后他直言不讳的说,微软其实才是真正在乎程序员的公司。相比之下,Apple 虽然对用户显得友好,但是对程序员的界面却差很多。Apple 尚且如此,Linux 对程序员就更差了。可是有啥办法呢,有些人就是受虐狂。自己痛过之后,还想让别人也痛苦。就像当年的我。
且不说这种论证有多弱。要是以移植处理器作为比较对象,那我觉得Linux怎么都算是第一了,多少软件包都是N个架构可以编译可以用的?(去看看Debian吧)强大的Visual Studio的移植性在哪里?怎么Windows RT只支持Windows Store应用呢?
Windows XP被限制在IE8,很多用户甚至还在用IE6,搞得Web开发者苦不堪言,这就是“在乎程序员”?相比之下Ubuntu的各种版本只要支持期不结束,会不断给用户升级到Firefox的最新版。例如Ubuntu 10.04现在也会升级到Firefox 19.0。
http://packages.ubuntu.com/search?keywords=firefox
Windows RT都不支持SliverLight,之前搞个插件,现在又推HTML5,这就是“在乎程序员”?
我当然不是人云亦云。微软在程序语言上的造诣,我看得很清楚。我只是通过别人的经历,来验证自己早已存在的看法。所以一再宣扬别的系统都是向自己学习的 Apple 受到这样的评价,我也一点不惊讶。Mac OS X 毕竟是从 Unix 改造而来的。我在家里有一个 Macbook Air,一个 iPhone 5,和一个退役的,装着 Windows 7 的 T60。我不得不承认,虽然我很喜欢 Macbook 和 iPhone 的硬件,但我发现 Windows 在软件上的很多设计其实更加合理。举个简单的例子,我至今没有发现有什么不自虐的方式,可以改变 Mac 浏览器里面的中文字体!所有的论坛都说要改什么 .plist 配置文件,还有人打包分享了他自己的配置文件。怎么跟 Linux 当年一个德行?一个公司的偏执,真的可以阻碍它向别人学习,设计出更好的东西。微软也许在当年是傲慢轻狂的公司,但是我觉得它现在已经度过青春期,长大成熟了。
Windows在软件设计上更加合理因为提供了一个Windows改中文字体的UI?呵呵,要不我截图给大家看看,用微软官方的Windows 7 IE9虚拟机,默认的中文字体丑到了何种程度?
大概作者觉得改注册表要比改配置文件先进、优秀多了?有这样的个人观点本身没问题,不过我听说,只是听说,.Net也采用了.config文件的配置方式,这世界是怎么了呢?
说实话,我真的搞不懂为什么我当年会鄙视微软。现在我身边还有一些人鄙视微软。甚至在 Indiana 的时候有个教授口头上说“鼓励”,实际上想强迫学生离开 Windows 和 Visual Studio,而使用 Unix 和 Emacs。微软到底犯着谁了啊?不要忘了 Unix 是 AT&T 的产品。微软和 AT&T,到底谁更邪恶呢?公司不都是追逐利益的吗。现在看来 Apple, Google,…… 也都是一个样。不过现在,骂 Unix 和骂 Windows 不大一样的地方是,如果骂 Windows,几乎没有人跟你还口。最多有人跟你说,不就是个有点毛病的东西吗,有啥好骂的(埋头继续玩他的游戏)。而如果一旦有人骂 Unix,立刻有人会起来说:“菜鸟不理解 Unix 的哲学。人笨怪刀钝。” 哎,不吭声的就是容易被欺负。
有个教授和作者的观点不一,作者就看不下去了,呵呵。
至于所谓的“公司不都是追逐利益的吗”:
原来售价不菲(不然中国为什么盗版横行,请问)的私有软件(如Windows)和以GPL或BSD协议发表的自由开源软件(如Linux、FreeBSD、Darwin)是可以混为一谈的。
原来一个公司为了追逐利益,在操作系统中留下后门也没什么关系(忘了黑屏事件了吗)。
当然我不是在这里打击 Linux 和 Mac 而鼓吹 Windows。这些系统的纷争基本上已经不关我什么事。我只是想告诉新人们,去除头脑里的宗教,偏激,仇恨和鄙视。每一次仇恨一个东西,你就失去了向它学习的机会。
我觉得本文作者头脑中充满了“偏激,仇恨和鄙视”,呵呵。
总结一下,我只想对本文说“呵呵”。Unix并不是没有缺点,麻烦作者批评到点子上,不要扯了这么多结果什么实质内容都没有。
Monday, November 12, 2012
Handle ZIP Archives with non-ASCII Filename
The workhorse is lsar/unar from The Unarchiver project.
http://code.google.com/p/theunarchiver/
# Filename encoding will be automatically detected
lsar foo.zip
# If filename is already correct, unarchive
unar foo.zip
# If automatic detection fails
# Manually specify a encoding and check the result
lsar -e ENC foo.zip
# Once correct encoding is found, unarchive
unar -e ENC foo.zip
http://manpages.ubuntu.com/manpages/precise/en/man1/unar.1.html
http://code.google.com/p/theunarchiver/
Installation (Ubuntu 12.04 or above):
sudo apt-get install unarUsage:
# Try list files first# Filename encoding will be automatically detected
lsar foo.zip
# If filename is already correct, unarchive
unar foo.zip
# If automatic detection fails
# Manually specify a encoding and check the result
lsar -e ENC foo.zip
# Once correct encoding is found, unarchive
unar -e ENC foo.zip
Reference:
http://manpages.ubuntu.com/manpages/precise/en/man1/lsar.1.htmlhttp://manpages.ubuntu.com/manpages/precise/en/man1/unar.1.html
Saturday, November 3, 2012
Install Ubuntu 12.04 on MacBook Pro 8.1
Description:
My origin environment is solely OS X 10.7.I install Ubuntu 12.04 as another OS, i.e., the result is dual-boot.
Disclaimer:
My MBP has Intel graphic only. If yours has Nvidia graphic, things may be totally different.Prerequisite:
1. Free space allocated for Ubuntu 12.04.Disk Utility in OS X 10.7 can help you. Hold option to enable its hidden partition feature.
2. Direct (no VPN, etc.) wired Internet connection.
Procedure:
1. Install rEFIt to OSX:http://refit.sourceforge.net/
2. Install ELILO
http://sourceforge.net/projects/elilo/
You may follow "Starting Linux with elilo" section below.
http://refit.sourceforge.net/doc/c2s2_startos.html
To be sure, you can reboot and try load ELILO without a elilo.conf, it should show some stupid error messages.
3. Download Ubuntu net install kernel and create elilo.conf
Download the following file:
http://archive.ubuntu.com/ubuntu/dists/precise/main/installer-amd64/current/images/netboot/netboot.tar.gz
And extract "initrd.gz" and "linux" file to the directory where ELILO is installed.
Create elilo.conf like the following:
image=linux
initrd=initrd.gz
label=Ubuntu
4. Reboot and launch Ubuntu 12.04 installer through ELILO
The installation process should be easy to follow.
When asked to partition, choose a option that use all unused space. (The guided option seems to lack the chance of review. If you want to a scheme different from single / and swap, you should use manual. )
5. Install Firmware for WiFi
My WiFi chip is BCM4331, check yours using the following command:
lspci -vvnn | grep 14e4
For BCM4331, "firmware-b43-installer" package won't work since its postinst script is slightly outdated.
http://pad.lv/912941
So we do the following:
Install "b43-fwcutter" package.
Manually download and extract firmware following b43 upstream's instruction below:
http://linuxwireless.org/en/users/Drivers/b43#If_you_are_using_the_b43_driver_from_3.2_kernel_or_newer:
6. Re-enable rEFIt
For unknown reasons, GRUB installed by Ubuntu cannot boot Mac OS X correctly. So we need some additional steps:
6.1 Hold option key and power on the MacBook Pro.
6.2 Select the volume different from Recovery
6.3 Select OS X in rEFIt menu
6.4 Open Terminal in OSX and do the following:
cd /efi/refit
./enable.sh
6.5 (Optional) You may want to remove ELILO stuff installed before so it won't pollute your rEFIt menu later.
6.6 (Optional) You may want to remove Mac OS X entries in GRUB's menu, do the following in Ubuntu's Terminal:
sudo chmod -x /etc/grub.d/30_os-prober
sudo update-grub
Optional Steps:
0. As a reminder, two-finger click on Trackpad become right-click.1. Enable two-finger scrolling
System Settings => Mouse and Touchpad => Touchpad
Change "Scrolling" to "Two-finger scrolling".
The direction seems to opposite to that OS X 10.7's. I don't know whether this is changable.
2. Install Ubuntu Tweak
http://ubuntu-tweak.com/
It contains some tweak options that otherwise require text file editing to change.
( I'm absolutely fine with CLI and text file editing, but a sane GUI environment should not depends on such stuff too much. )
It may crash from time to time, just relaunch it.
3. Disable Overlay scrollbars:
If you find overlay scrollbars insane like me, disable it.
Ubuntu Tweak =>
Tweaks =>
Miscellaneous =>
"Overlay scrollbars:" => Off
Better to logout and re-login so all the application would have sane
scrollbars.
4. Install restricted crap, e.g., MP3
As a reminder, MP3 support is needed for Ubuntu One Music Store to work.
"ubuntu-restricted-extras" should be suffice for most cases.
https://help.ubuntu.com/community/RestrictedFormats
I personally don't like Microsoft fonts and Adobe Flash though.
You can avoid Microsoft fonts by reject its EULA.
Adobe Flash can be removed by removing "flashplugin-installer" package.
5. Install Google Chrome
http://www.google.com/chrome/
My favorite browser remains Firefox.
But I use Google Chrome whenever I'm forced to use Adobe Flash.
Sunday, August 12, 2012
香港的自由軟體中文輸入問題
香港主流的中文輸入法是速成和倉頡,這兩種輸入法都是形碼輸入法。
在Windoze下,用家對系統預設的輸入法基本滿意。
在Ubuntu和Fedora下,用家對系統預設的輸入法(基於ibus-table)非常不滿
在Mac OS X,用家對系統預設的輸入法不太滿意,一般換成Yahoo! KeyKey
ibus-table的問題,簡而言之,就是開箱不可用,又基本不能定製(除非hack代碼)。
目前ibus-table計劃在2012年9月1日發佈新版。
我已經標記了部分Open Issue的Priority爲High,這些是我希望在新版發佈前解決的問題。
Type爲Review的是我已經給出了commit,等待測試和評論;而Type爲Enhancement則是我覺得屬於錦上添花,短期內不會解決的問題;其他Type爲Defect的Issue則是中間狀態。
http://code.google.com/p/ibus/issues/list?q=component=ibus-table
對我的標記有意見,歡迎以各種方式向我指出。
ibus-table雖然問題很大,但是因爲其服務的碼表遠不只速成和倉頡兩種,修改起來難免束手束腳,前景不看好。如果推倒重來,未免工作量太大,而且下游發行版還不一定接受。所以我在這裏提出兩種替代方案。
1、幫助完善RIME的速成和倉頡
RIME是喜愛正體字的大陸人士發起的項目,是支持Fcitx/IBus/Mac OS X/Windoze的元引擎,有很強的定製性(但是目前還沒有圖形定製工具)。本文是用RIME的“朙月拼音”方案輸入的。
http://code.google.com/p/rimeime/
RIME預設沒有開啓“速成”方案,開啓後也不是香港用家期待的輸入體驗(候選詞爲5個,空白鍵commit而不是翻頁等等),我暫時只是把候選詞改成9個了(只影響該方案),翻頁等問題仍在研究,到時候會共享配置文件。
RIME還有一個問題是,在Ubuntu和Fedora上仍然需要編譯安裝,還沒有打包好的套件,在Mac OS X和Windoze則有預編譯文件。
2、開發獨立的速成和倉頡lib和對應的Fcitx/IBus/Mac OS X/Windoze引擎。
這個是我覺得比較徹底的方案,只是對這個lib的design還不是很明確。
在Windoze下,用家對系統預設的輸入法基本滿意。
在Ubuntu和Fedora下,用家對系統預設的輸入法(基於ibus-table)非常不滿
在Mac OS X,用家對系統預設的輸入法不太滿意,一般換成Yahoo! KeyKey
ibus-table的問題,簡而言之,就是開箱不可用,又基本不能定製(除非hack代碼)。
目前ibus-table計劃在2012年9月1日發佈新版。
我已經標記了部分Open Issue的Priority爲High,這些是我希望在新版發佈前解決的問題。
Type爲Review的是我已經給出了commit,等待測試和評論;而Type爲Enhancement則是我覺得屬於錦上添花,短期內不會解決的問題;其他Type爲Defect的Issue則是中間狀態。
http://code.google.com/p/ibus/issues/list?q=component=ibus-table
對我的標記有意見,歡迎以各種方式向我指出。
ibus-table雖然問題很大,但是因爲其服務的碼表遠不只速成和倉頡兩種,修改起來難免束手束腳,前景不看好。如果推倒重來,未免工作量太大,而且下游發行版還不一定接受。所以我在這裏提出兩種替代方案。
1、幫助完善RIME的速成和倉頡
RIME是喜愛正體字的大陸人士發起的項目,是支持Fcitx/IBus/Mac OS X/Windoze的元引擎,有很強的定製性(但是目前還沒有圖形定製工具)。本文是用RIME的“朙月拼音”方案輸入的。
http://code.google.com/p/rimeime/
RIME預設沒有開啓“速成”方案,開啓後也不是香港用家期待的輸入體驗(候選詞爲5個,空白鍵commit而不是翻頁等等),我暫時只是把候選詞改成9個了(只影響該方案),翻頁等問題仍在研究,到時候會共享配置文件。
RIME還有一個問題是,在Ubuntu和Fedora上仍然需要編譯安裝,還沒有打包好的套件,在Mac OS X和Windoze則有預編譯文件。
2、開發獨立的速成和倉頡lib和對應的Fcitx/IBus/Mac OS X/Windoze引擎。
這個是我覺得比較徹底的方案,只是對這個lib的design還不是很明確。
Wednesday, August 8, 2012
Why I prefer Ubuntu to Fedora (and other distros)
Being a "beginner" is not bad.
Vim and Emacs are awesome. However, why can't I just enjoy Gedit which is much better than TextEdit.app and Notepad? I don't mind people call me beginner because I have very limited Vim knowledge. I change configuration files with Gedit, I program with Gedit, I'm happy with Gedit.
Similar story happens with my selection of distro.
Note: Do be a ninja if you want to contribute to FOSS directly. And a ninja should have experience with multiple distros.
Ubuntu has a friendlier installer.
Ubuntu's installer comes with the desktop CD won't ask questions that only make sense to system administrator. For example, the installer won't ask for root password.Note: Ubuntu installer would configure selected timezone's country mirror as software source. And it would try to download updates and language packs at the end of installation. This often leads to poor installation experience since country mirrors may not work well. I don't like the concept of language packs itself.
It is easier to install restricted components in Ubuntu.
Jockey in Ubuntu can help users to install restricted drivers. The driver installation experience is even better than Windoze since there is no need to download drivers manually."ubuntu-restricted-extras" meta-package covers almost all non-free crap like MP3 and Flash. Most people just need them.
Note: Do avoid non-free stuff whenever possible. And be aware that Jockey may fail on some hardware. Bug reporting should be the best way to help Jockey.
Ubuntu has a Software Center
I think the main reason why Linux desktop fails to gain many users is its complicated software installation process. The huge software repository of Debian/Ubuntu mitigates the problem a lot. However, package is still a concept too advanced. App, on the other hand, is common concept today. Software Center is the easiest portal for normal users.Note: dpkg/apt, the infrastructure behind Software Center, is not very robust in my opinion, there would be cases where CLI troubleshooting is required. So the experience is not as good as iOS's App Store. The Software Center itself is also somehow buggy. I find myself more convenient with apt-get(8).
Non-rolling, time-based nature of Ubuntu releases makes sense to most people.
Always having latest version of software is cool. Without smooth upgrading process like that of iOS, however, upgrading becomes really annoying. LTS version of Ubuntu is really fit for people want a stable environment. Ubuntu 10.04 LTS contains GNOME 2 is still supported while Fedora and Arch Linux already forced their users to use GNOME Shell.
Note: Due to the dynamic nature of open source world, important bug fixes only comes to latest version and seldom backported. If you find youself using many PPAs to get latest software, it's a good time to upgrade Ubuntu version or switch to a rolling release distro.
Subscribe to:
Posts (Atom)