怪怪 | Nothing, Everything

"有过一个发疯的时刻,有感觉的钢琴以为它是世界上仅有的一架钢琴,宇宙的全部和谐都发生在它身上." - 狄德罗
随笔 - 182, 文章 - 3, 评论 - 2872, 引用 - 62
数据加载中……

2010年2月5日

android在正统Linux社区要混不下去了

http://www.kroah.com/log/linux/android-kernel-problems.html

 

说实话,Google确实是一家极其傲慢(甚至比别人更傲慢)的公司。我个人的看法是:

 

根本上讲,其实干脆分出来也无所谓。关键凭Google的经验,能管好一个自己的分支吗?

 

我个人不是特别看好。到今天为止一切都很顺利,但是这种顺利下面隐藏了很多前提条件。

 

比如硬件设备相对统一,比如Google的大多数修改还仅仅是些小打小闹的规模。

 

那么很多欠缺考虑而不被内核开发者认同的做法,单分出来继续坚持能不能发展下去?

 

我觉得这里头不说肯定不行,但总归是有疑问的:中国古话有云,人无近虑,必有远忧。

 

其实我并不认同内核开发者现在的维护办法,并且认为这是饮鸠止渴,必然有一天无法持续。

 

但是若Google托大到它认为可以有自己的一套、却又不去真正的准备,那就更加岌岌可危。

 

多的不说,随着继续前进,我相信目前不当一回事的态度将会积累越来越大的阻力。

 

我是指完全来自于内核设计、编码、和管理上的难题总会出现,而这一切本来是毫无必要的。

 

说实话,老有人说Google多有技术,其实它最看不上什么技术:人家业务发展根本不靠这些。

 

我不知道长期的维护一个如此全面的软件栈并还得求发展是不是也不需要太过硬的能力。

 

我也不知道如果Google判断错了会不会付出代价,这还要看别人的反应是否正确及时。

 

不过,何必非要卖个破绽呢?就我近期的感受,只有一个想法:Google就是活得太顺了...

posted @ 2010-02-05 08:45 怪怪 阅读(172) | 评论 (0)编辑

2010年1月27日

架构之美阅读(3)

第十四章(最后一章):

这是我看过的几章里最有意思的一章,虽然我怀疑他很可能连强类型的明确定义都没推敲过。

我发现凡是二把刀的从业人员都有一个特点:旁征博引,滔滔不绝。

(有一类还要外加各种各样的隐喻和朦胧美~)

什么建筑啦、道啦、哲学啦、数学啦...有的甚至能写出文学女青年式的作品或者梨花体。

不过如果我们不去理会他们发言中对各种技术的意见,看这样的文章煞是过瘾啊。

(另外他对SmallTalk为啥不能流行的判断也确实可能是因素之一)

这位老兄引用了设计模式之父的一段话,摘录如下:

“整个学术领域都是围绕着“设计方法”的思想发展起来的--我也被看作是这些所谓的设计方法的拥护者之一。我对此非常抱歉,我想公开声明,我完全拒绝将设计方法作为一个课题来研究,因为我认为将设计的研究和设计的实践分离开是非常荒唐的。实际上,学习设计方法而不是实践设计的人几乎都是失败的设计者,他们没有活力,他们丧失了创造事物的冲动,或者说从来就没有过这种冲动。” (Christopher Alexander 1971)

这简直可以当作我自己的声明了;尤其是考虑到我对某些设计方法的深入也做到了一定程度。

而一直以来,我与方法论爱好者和流行风潮追随者们存在的分歧,也正在与此。

当然每个人都有自己的价值观;我从来不想搞什么价值输出,只要我们大家活得都高兴,就好。

第五章

我对这章没有什么太多要说的:对REST感兴趣的应该看一看,这篇文章很好的澄清了REST的思想。

不能完全认同在于,作者过于强调动作和资源的区别(B),而没有拔高层次来看这个问题。

事实上,动作完全可以是一种资源。在这个视角上,一个返回可以是两个资源共同共同定位所求的值(A)。

至于具体的动作,比如GET或POST的差别,只是为了不同特殊情况的临时优化措施。

但这(A)在Web和RESTful的架构中不那么实际的一个原因在于,URL不擅长表达双(多)分派。

可能正是因为如此,作者或者其它RESTful中坚追随者才会强调将动作和资源化分开(B)。

但这(B)不是一个真正自由的二维模型:动作只有四个且具有明确内涵,这造成了让人难受的限制。

反过来看,用我所描述的这种视角(A),可以很轻易的增加维度。

当然他们的视角(B)也可以进行类似于我这种扩充,但坚守RESTful的一些原则就变得毫无意义了。

Update:

似乎我没有提到我的这种视角(A)与URL不擅表达各个分量之间的矛盾。但这仅仅是编码的问题。

只是对于人类阅读障碍,这个问题我们需要衡量:需要解决吗?不需要吗?(根本意义上)

第六章

这章介绍Facebook的开放架构,比较的实实在在,有兴趣的可以看看。

FBML让我有一个非常熟悉的感觉,就是看到了ASP.NET的影子。翻到前面一看,此人是从M$跳槽过去的...

大的框架上我基本上不想挑什么刺,只是觉得Facebook还是不够开放。

但是在FBML这一块的决策,我是不喜欢这种污染HTML文档的方案的。特殊逻辑应该独立放置。

到底是不是我阳春白雪,马上也可以知道了,谁叫我也在实践这些呢,呵呵。

posted @ 2010-01-27 18:25 怪怪 阅读(442) | 评论 (0)编辑

2010年1月26日

架构之美阅读(2)

本来都打算睡觉了,忍不住上来喷一下;我他妈真的被搞Java的和搞出版的震惊了。

 

(这里,搞Java != 用Java,如果你真的是“搞”Java的,那你只有自己衡量是不是被我扫到了...)

 

第四章:

 

妈的此文简直令人发指。一个像咱们这些菜鸟一样误解职责链作用的“天才架构师”:词儿倒是一套一套的。

 

(我倒是发现这个职责链真是设计模式的“驴桥”,谁功夫下到了,到了这一关一目了然)

 

通篇唠叨他的那些破烂细节。不知道是不是从来没人这么捧他,恨不得连内裤是什么颜色都要介绍一下,昆汀的电影么?

 

就不论那井底之蛙的见识了,整个一拿着鸡毛当令箭的祥林嫂。有这功夫看两眼.NET WinForm的代码都比听他白活好。

 

这厮完成任务没有?有。这章有思考没有?有。但何时砖家的标准降到如此之低了?

 

说实话,我就不明白出版社怎么就不能多掏点钱,雇个专业点的顾问识别下呢,难道美国出版社也缺钱不成。

 

(为什么我跟泼妇骂街似的?因为此文已经达到了我没办法一点一点具体的数落的大成境界)

 

Update: 主要是此类人物的判断和结论中,太多的“因为->所以”经不起推敲了,但对于经验不足的人却难于发现。

 

对了,这厮的简历是:致力于为开发人员“提高”水平和“减少”痛苦;他还TM的得了Jolt大奖。Erlang作者所言不虚啊....

 

比较上一代程序员和这一代,美国人种绝对退化了。赶紧苦练英文,渗透过去发财吧。

 

第三章:

 

本章根本是要把Web那套搬游戏里去,不过毕竟还是试验阶段的玩意,我也没能力评价,最后结果会说明一切。

 

这个团队处理任务当的想法是值得大家借鉴的;可惜本文缺乏必要的架构和决定的细节,而广告性质更浓一些。

 

无论是数据性质的,还是执行码性质的,如何将动作封装成一个一个的单位,可以传输、运行,也是我一直在考虑的问题。

 

区别于基本的Map-Reduce,我个人认为这样的设计是分布式计算的基础。

 

另一方面,服务器在游戏领域,就我所想,最关键的角色实际上是验证数据的可靠性,防止作弊。

 

(其次是提供中转节点,保证所有人的响应不至于离平均响应时间差距太大,影响公平性和其它表现)

 

在这个方面,难道真的没有更P2P的解决办法吗?这是我阅读这一章的时候一直存在的一个疑问。

 

直觉上,我认为不是没有解决之道,关键在于三方面:

 

1. 用于验证的数据量足够小。

 

2. 如何选择仲裁者。

 

3. 决定性因素:还是性价比。

 

第三点来自于,服务器节点是必定不能缺的,因为服务器还要承载关于当前世界状态的所有信息。

 

在这样一个前提下,优化服务器端收集信息的频率和其它计算量,是不是真的有必要呢?这需要样本分析了。

 

不过我不赞成作者的先持久化,再分配的方案。取而代之的,两者应该是并行的。甚至可以降低持久化的频率。

 

我觉得作者对现存架构的攻击不符合实际情况。崩溃是有的,但概率极低、更不是非得损失几个小时的数据。

 

所以这中间可以找到一个方案(甚至不是折中),去避免数据损失、提高分布的灵活性,但又避免无谓的工作。

 

另一方面,作者的分析和结论实际上是淡化了游戏数据的临时性,这同样也是一个关键的前提条件。

posted @ 2010-01-26 14:42 怪怪 阅读(506) | 评论 (0)编辑

2010年1月25日

架构之美初次阅读的简单评价

说明:

 

买了那本的架构之美,我不知道是我有成见,还是这些杂文的作者;总之见得多了,总会有一些关于具体问题上谁更对、谁更错的判断。

 

不过观念上的补充肯定是必要的。具体的知识远没有个人感受来的有价值,这是一个体会。

 

介绍部分:

 

国内的某些作者我就不评价了,对个人的风格想必大家也都很熟悉了。

 

序:

 

 作者怎么怎么NB就不谈了,总之是干模型驱动、UML的。

 

“构建引擎”这部分对Ivar Jocobson的基于用例完成功能做法的评论和回答很有意思。

 

提倡基于数据、驱动引擎的做法也是我这些年思考、观察、实践的结果;但是对于构建、“自动传播”和他对元编程的理解,我不敢苟同。

 

很显然,不能严格遵循DRY(体现为构建时碰见的麻烦)是此人的苦恼,而之所以不能解决是缺乏必要的认识和手段(比如他号称的元编程)。

 

对于熵增,此人也有点不求甚解。熵的关键词在于,*密闭*的系统下,而他却很遗憾的忽略了。

 

就人类现阶段而言,我们处理的永远是开放的系统,如果错误的以热力学作为行事哲学,就陷入了仅能改良的境地。

 

比如他的“自动传播”的想法,有点相当于自动化构建中的一些元素;这实际上是一种头痛医头、脚痛医脚的解决,并非真正的良策。

 

我个人的想法若想真正解决,则必须改变传统的架构视角,采用知识管理的看法进行指导,这是一种我正在尝试的方式。

 

他在文章前部提到的范式与factoring之间的关系,是一个好的开端,可惜没能继续走下去。

 

具体到他的问题和他采取构建时自动传播这种应对措施,其祸害在于这种机制不够灵活最终又会变的难于管理。

 

总之,此人必定有很多“抵制熵增”的经验可供借鉴,不过这也足以引起警惕;以我个人之浅见,在此之外总可以寻找更好的解决。

 

正如XXXX所说,碰见问题是因为我们采用了错误的办法;一旦选择了正确的那个,如何应对则成了根本不存在的伪命题。

 

前言:

 

基本上就是产业周边人员的瞎JB总结,希望给本书一个基调。我倒是可以给他们的一个问题一个备选答案:为什么找不到“桌面软件架构”的作者。

 

这基本上是因为关于界面的部分,在这个领域到今天为止,还没有一个真正成功的架构。一方面是因为不需要,一方面是因为复杂性。

 

不需要是因为大多数界面集合的复杂性必须在用户可接受的范围内,这就造成了其最高程度不会超过某个极限;再多的麻烦也至少能够得到暂时的解决。

 

第二在于,这个复杂性看似虽然有限,但却非常难于管理。界面作为人机交互的媒介,被来自于各个方面的因素所制约,很难找到一种统一的意见。

 

所以成熟的桌面软件开发人员,不能容易的梳理自己的经验、也不敢向其他所谓架构师那样,轻易的做出各种各样的论断。

 

有兴趣的调查一下真正(区别于Web)的MVC实际上是多么受限的一种样板、而进一步的尝试(如HMVC等)又如何复杂和不成功,就会有所了解。

 

其他部分:

 

最有用的一部分是每个人都干了什么,这会给阅读本书一些稍微有用的指导:哪个人在哪部分发表什么样的意见更可信。

 

第一章:

 

两位作者基本上就是搞软件工程的吧?总之没有什么太吓人的简历啦。

 

这一章本身也缺乏真知灼见,基本上就是软件从业人员一贯的自我感觉良好和不精确:大段的废话企图给“架构”下定义,并试图描述方方面面,结果还是没能成功。

 

但这一章也不乏可借鉴的内容:作为有经验的开发过程参与者,我们可以试着使用他们的经验和视角评估自己的项目,这或许会带来一些平常不曾注意的新看法。

 

第二章:

 

这位作者写过一本书:《编程匠艺》,这本书我粗略翻过目录,属于那种有不少有用经验但不怎么吸引人那种。

 

本章在技术方面,应该和那本书一样,充满了我们已经或本该知道的陈词滥调;但由于篇幅较短,我们很难在这种文章中得到必要细节和需要的内容。

 

(其中也不乏一些我一再批判的草率“结论”式论述,不过我现在已经逐渐理解开发社区中各个作者之间的相互影响了。)

 

不过本章还是有些方面需要引起注意:架构带来的灾难对团队和个人的影响;以及最后一节中问到的几个问题,在我们平时学习和实践中不妨多做总结。

 

后面的章节还没看。我个人一些多余的话:

 

“足够简单,但不要更简单”,这类的论调在这短短的阅读中碰见了似乎两次。我对这个概念开始其实是接受的,但现在有了疑问。

 

这句话非常容易沦落成我们自己骗自己的借口。往往当我们无法让事情变得“更简单”的时候,我们就认为“足够”了,进一步就过头了,但这未必是客观的。

 

最近看内核代码(刨除那些垃圾的厂商代码),Linux社区的一个口号就是KISS,我觉得就是有必要展开一下:“Keep it Simple and STUPID”。

 

一个我个人感觉应该强调的就是这句话的强烈程度。我曾经很喜欢那种我认为“不能”再简化、且精巧的结构,似乎它们是我们软件人员足够聪明的证明。

 

但现在,我越来越多的认为,凡是我看见的任何“不平凡”的设计,基本全都是设计错误的结果;我严重怀疑可能根本没有例外存在。

 

最近在看Android中PacketVideo公司的OpenCORE,以及对这一部分的使用;对比内核,我个人感觉它的设计应该属于比较失败的。

 

因为没有时间完全掌握,我不能说它一定怎么样,但一个非常明显的特征是,摸清它的脉络,要比内核困难的多。

 

(最近Android 2.1的通用版本不能正式发布,基本上主要BUG都集中在这一部分;Google也开始试验新的方案)。

 

反过来观看内核,即便各个厂商挂进了很多脏东西(尤其是Google/HTC/Qualcomm部分),算上那些满天飞的宏,也比它容易顺藤摸瓜。

 

从这种对比可以很明显的看出,一个系统的基调部分会给后续部分带来多么大的影响。

 

(另一个体会是,凡是体现出复杂性的架构,往往都出现在以面向对象为基础并使用相关工具的设计中,这也是值得玩味的一件事情。)

 

很有可能的是,简单到Stupid,也许在任何项目中都是可能的,关键在于我们有没有对问题的真正理解,让我们可以去找到它。

posted @ 2010-01-25 19:18 怪怪 阅读(529) | 评论 (0)编辑

2010年1月24日

妈的我快满了

从最上头到最底下,从一线实践到基础理论;从知识掌握,到想法创新;我真TM受够了。

 

除了理论上只能说略知皮毛,实践上好歹有几个方面真能干活和组织。

 

不害臊地说,如果我能分身分别负责一部分工作,最差的一个也能比上练过至少过一年的。

 

可是我偏偏不能,人力还是有极限的;我不得不承认这一点。

 

感觉实在不能在承载更多的东西了。从今天起暂停探索式的过程,专注于自我管理和冲刺。

 

真正扬帆起航的时刻应该到来了。

 

我想如果这还不能算准备充足,那么所谓的充足也就成了根本达不到的事情。

 

过去每每掌握新的东西到一定程度,我就感觉自己变得更强大。

 

但是满到现在这样,我反而觉得弱小;这无力不是对任何目标,而是面对似乎无穷的信息。

 

我说满,不是标榜自己知道的多,跨度大;而是说对我这个容器已经满了。

 

把它们倒出去的唯一方式,我想就是回到最初,只知道埋头的时候那种层次和方式。

posted @ 2010-01-24 09:36 怪怪 阅读(584) | 评论 (8)编辑

2010年1月12日

我他妈服了HTC/Qualcomm/Google的NB程序员了

     摘要: 下面是针对Google/Qualcomm的。人家BUG_ON宏写的很清楚不要轻易用,丫的凡是驱动里出了什么自己制造的问题,就BUG_ON。去nexus one发布版的代码里一看,靠,还他妈这样。水平高的没法说,这边用(uint16_t)-1抖骚,那边来一个(~0)耍酷;俺这业余程序员崇拜的紧,不知道他焦头烂额的时间是不是也比我短?下面是针对HTC的。最早有个简单的CPU调节频率的驱动,是屏幕亮就最...  阅读全文

posted @ 2010-01-12 07:49 怪怪 阅读(872) | 评论 (12)编辑

2009年12月28日

最近玩的一些东西

     摘要: 在xda上n多玩HERO的人失败以后,全球第一份(刨除厂商泄露的kernel...)能在Radio 6.35和SPL 1.76上跑的自编译kernel msm2.6.29 + Android 2.x。测试设备虽然是32A不过同样的patch肯定可以应用在HERO上。当然,和真正的黑箱移植相比这个工作量小多了。简述一下问题:Radio 6.35相比以前的Radio版本有所改进,但同时也更改了与主系统...  阅读全文

posted @ 2009-12-28 05:05 怪怪 阅读(274) | 评论 (4)编辑

2009年12月1日

使了两个月不到的Java

     摘要: 不得不说,Java处处表现出反人类的特征,这三个字最近简直挂我嘴边了。不说那些该有没有的语法糖了,就连很多库的接口、框架设计的形式甚至某些实现的具体行为都得蹩着劲。我怀疑Java界的大牛和作者们根本不知道用户到底要什么;难怪连Fowler这样的Java大吹都集体转了口风。遥想光临博客园的Java粉丝的居高临下简直杯具:把时间浪费在和不同层次的工具亲密接触上还感觉挺爽。Write Once Debu...  阅读全文

posted @ 2009-12-01 05:18 怪怪 阅读(1672) | 评论 (10)编辑

2009年11月1日

方法论究竟为社区提供了什么

     摘要: 此帖(主要是回复)充分表现了在方法论的学习和讨论中体现出的特色:http://leoo2sk.cnblogs.com/archive/2009/10/29/1592568.html我不会真正站在方法论圈内去说话:大多数人如此“业余”自有其道理。但是说实话,若我是某个方法论普及者,我会对此感到抓狂和绝望。更多的不好听的在这里就不说了,各人有各人的造化。也许有人会认为,正是对方...  阅读全文

posted @ 2009-11-01 03:10 怪怪 阅读(2283) | 评论 (10)编辑

2009年10月27日

笔记

     摘要: 关于如何像Android框架暴露和发送原生事件。http://groups.google.com/group/android-platform/browse_thread/thread/55308ce5c72a7cf4/d37faabcb13ae721?hl=en&lnk=gst&q=IPC#d37faabcb13ae721下面Dianne Hackborn对LZ的具体设计问题的讨...  阅读全文

posted @ 2009-10-27 04:35 怪怪 阅读(2149) | 评论 (0)编辑