九天雁翎的博客
如果你想在软件业获得成功,就使用你知道的最强大的语言,用它解决你知道的最难的问题,并且等待竞争对手的经理做出自甘平庸的选择。 -- Paul Graham

[译]GYP vs. CMake -- 一个开发者对自己项目客观的说明

Gyp是一个类似CMake的项目生成工具, 用于管理你的源代码, 在google code主页上唯一的一句slogan是”GYP can Generate Your Projects.”.
目前Gyp的应用没有CMake那么广泛, 但是已经被诸如chromium, Node.js等著名项目使用, 而Gyp本身就是chromium团队觉得CMake不满意, 而自己开发用于替代CMake的.
作为后来者, 自然有更好的地方, 并且具有较大的改进, 才值得开发, 那Gyp比CMake好在什么地方呢?

阅读全文....

跨平台(iOS, Android)开发方案

很久以前的移动平台开发者很幸运, 因为他们只用关注一个平台(iOS)就够了, 现在随着Android越来越受到关注, 以前统一的平台又开始了分裂.
到目前为止, 我知道可能的, 能够使用一套代码跨平台开发app的方法有:

阅读全文....

卖水理论漫谈

最近看晓说, 其中一期提到了卖水理论, 觉得很有意思, 查了下资料, 然后想了想现在的互联网, 就此随便写一点东西吧.

什么是卖水理论

19世纪中叶, 17岁的小农夫亚默尔抱着发财的心理, 随着淘金的人流涌入加利福尼亚州. 山谷里水源奇缺, 寻找金矿的人最痛苦的就是没有水喝. 亚默尔认真思考一番, 觉得在这里也许卖水比挖金更能赚钱. 于是他放弃了找矿, 把手头的铁锨掉了个方向, 由挖掘黄金变为挖掘水渠, 他终于找到了清凉可口的水. 他把水装在桶里、壶里, 卖给淘金者. 结果, 在很短的时间里, 亚默尔卖水赚了不少钱, 成了一个富翁. 他的这种做法被后人推崇, 形成”卖水理论”.

阅读全文....

学习笔记: 哈佛大学公开课--构建动态网站

以前都是自己看书自学, 以前倒是也看过一些视频, 总觉得节奏太慢, 进度太慢, 看了一个多小时, 感觉还不如自己看书一个多小时, 所以也没有坚持看过, 这次决定尝试一下, 一方面因为最近一直在学习, 决定用公开课的视频学习来缓一下自己的节奏, 也当作休息.
另外一方面就是最近在家时间挺充裕的, 还考虑到过年的时候, 可能不一定能快节奏, 高效率的学习.
BTW: 因为是课程笔记, 所以其实有些无聊, 个人感觉有用的部分就是老师推荐的那些库和工具.

阅读全文....

在Unity3D中使用iPhone原生UI(Use iPhone Native UI in Unity3D)

众所周知, Unity中没有提供UI解决方案, 只能靠第三方的插件来完成. 比较著名的有NGUI等, 但是这种方案不仅需要额外付费(虽然不多), 并且类似NGUI的插件还不那么易用, 使用起来过于复杂.
这里我尝试使用iPhone的原生UI(Cocoa Touch)来作为Unity的UI. 这个听起来似乎很容易的事情, 其实却比我想象的要难的多的多. 主要原因就在于Unity根本就不是想让你这么用的, 3D引擎为了效率, 一般都需要比较专横的占用系统资源, 在本来速度有限的移动平台就更加需要这样了, 这样才能发挥出硬件的极限水平, 制作出更精良的游戏. 鉴于这个原因, 这种方法并不适于性能要求高的游戏.

阅读全文....

入门有余, 经典不足 -- 小评《C#入门经典》

鉴于C#程序设计语言这本Anders写的书就像是语言规格说明, 我推荐大家阅读C#入门经典(Beginning Visual C# 2010)入门. 说实话, 看到这本书的时候, 我稍微叹了口气, 起码比那本厚如砖头的JAVA编程思想要薄啊. 另外, 其实只需要阅读第一部分, 一共才390面. 就能大概的了解C#的全貌. 相对比C程序设计语言的200来面似乎要多, 但的确可以接受.

关于书本身, 因为我以前也只阅读了关于C#的那一部分, 所以仅对这一部分进行评价.

阅读全文....

C#特性杂谈

文中充满了各种C#与我会的语言的对比及吐槽, 希望介意者勿观… 当然, 鉴于太乱, 我怀疑有没有人能看完.

阅读全文....

多重继承不好的观点是错误的 -- 小评<松本行弘的程序世界>

首先得说, 一般某种语言的发明人写的关于自己语言的东西都是非常值得阅读的, 从别的牛人那里你也许能学会很多奇技淫巧, 但从语言发明人那里你能学到语言发明人本身设计的初衷, 以及设计时的一些抉择. 这种思路是独一无二, 绝无仅有的. 所以我在学习一个新语言时, 假如语言发明人有写书, 一定优先阅读.

阅读全文....

写递归函数的正确思维方法

递归是编程中一个相对难以理解但是却又很重要的概念. 对于从命令式语言开始学习编程的程序员天生对此有理解缺陷, 而对于从类似C++这种对函数式编程范式不友好的语言开始学习编程的程序员就更加如此了.(比如我自己) 碰巧(其实不巧)最近在读这本书, 这本书国内没有引进, 网上只有巨贵的[亚马逊卖的原版](http://www.amazon.cn/gp/product/0133708756/ref=as_li_ss_tl?ie=UTF8&tag=jtianlinsblog-23&linkCode=as2&camp=536&creative=3132&creativeASIN=0133708756), 我读的是[网上的中文版](http://acl.readthedocs.org/en/latest/), Paul Graham在书中讲述的如何写递归函数的部分, 让我印象深刻. 因为原书是讲Lisp的, 当然这个部分也是用Lisp作为例子描述的, 考虑到国内会看这本书的人太少, 能看懂Lisp的就更不多了, 我这里根据自己的理解, 重新整理一下. 最重要的是, 书中原来的例子太少, 太简单, 我自己提供了一些额外的, 并且更加复杂的例子. 以期对问题能有更好的理解.

阅读全文....

语言的界限就是一个人世界的界限

语言的界限就是一个人世界的界限	
-- 维特根斯坦

Ruby on Rails的世界

很多人会告诉你, 学习不同编程语言能够让你看到新的世界, 改变你思考的方式, 在程序员修炼之道中甚至会建议’每年至少学习一门新语言’, 也有Peter Norvig在十年学会编程中提出的那样, 学会至少半打语言. 我是比较赞同这种观点的.

阅读全文....