![]() |
|
Spaces home 来自歆渊 - Born Beauty Withi...PhotosProfileFriendsMore ![]() | ![]() |
|
来自歆渊 - Born Beauty Withinfrom Compl Yue Still
April 14 InfoQ中文站, 值得企望的纯净技术空间新疆域见到InfoQ中文站 (http://www.infoq.com/cn/) 问世有段时间了, 从InfoQ英文主站的传承, 和中文站这段时间的姿态, 不难预见它将和 JavaEye (http://www.javaeye.com) 一样, 将是一片专注, 纯净的技术空间.
而且这两个平台其实能够很好的互补: JavaEye以论坛的形式在密集的探讨交流方面非常得力, 适合新思想和技术的发展完善; 而InfoQ作为集中的信息发布平台, 适合归纳总结既已成熟的思想和技术, 促成其更广泛的理解和应用.
我一直以来基本是在JavaEye活动, 觉得这里是难得的一个高技术含量软件开发思想交流平台. 活跃在这里的大多都是对软件思想同样感兴趣, 在软件行业有实际经验, 也有自己的思考和深层认识的业界同仁和精英. 当你有了一个自己认为很好的想法, 在这里提出讨论时, 既能找到共鸣, 又可以从其他会员的评论中发现更多自己本来都没想到的东西. 而且有时候反对的评论也很有实际价值, 让你发现自己考虑还不足的方面.
而现在这片纯净技术空间又有望有新的疆域拓展, 从InfoQ中文站的发布和近期运作上, 能够明显感受到InfoQ对中国软件开发社区的重视. 置顶的 "中文" 标签和 "En" 并驾齐驱, 让人感觉到不同语言的软件技术社区其实是一个整体, 语言的差异不应成为隔离界限, 而是身处这个领域, 应该更多的互相交流和相互关注. InfoQ中文站的团队也是本土化的, 这样其实更缩短了它和我们这些人的距离, 可以更好的交流合作了.
InfoQ的文章技术含量和质量都挺高的, 我觉得很值得订阅了作为自己的前沿技术眼线.
而且有这个功底和精力的同仁们, 参与到InfoQ中文社区的建设中去, 是一件很有挑战意义, 也很值得参与的事情啊. 我以后有了比较成熟的思想和技术, 写成中文文章就准备向InfoQ投稿了, 投身到这样一个全球化的软件技术社区里去, 也尽一点微薄之力, 帮助提升中文内容在这个领域里的份量. April 01 苹果键盘在PC上的问题原来跟温度有关最近杭州天气变暖, 一度达到28C, 据说有些地方到了30C. 而我的苹果键盘又开始自己会掉下来了.
回想去年夏天刚买来的时候也是这样, 后来不知不觉自己就好了, 当时还以为是磨合成功了.
现在看来应该是跟温度有关. 键盘上没有标明工作温度范围, 但是按说应该不低于40C吧. 不过人家Apple也没有保证说它的键盘可以放在PC上用, 也不好说就是质量有问题. December 19 苹果键盘也有bug今天在斟酌代码的时候无意之中Shift键按下了超过8秒, Windows跳出对话框提示我这样可以启用粘滞键, 问是不是启用, 我当然取消了.
然后过了不多一会, 突然发现鼠标不灵了, 对USB设备来说这种事情也不算很异常, 我就动手把它拔下来重新插一下, 因为我的鼠标是插在苹果键盘附带的两个USB口中右边的一个上, 所以是很方便的.
不过拔下来没有什么问题, 再插上去的时候, 看到以前从未见过的一个Windows警告, 说有一个USB设备发生了电涌, 欲知详情访问Windows网站之类的, 然后插上的鼠标也不亮了(光电的, 不发光当然是没法工作了). 我吓了一跳, 心想说不定得换个鼠标了. 然后想想键盘上左边还有个USB口, 于是换了左边的口插上去又试试, 结果正常!
呵呵, 这回就开始担心精美的 Apple Pro 键盘的右USB口是不是烧坏了, 为了彻底验证一下, 关机, 切电源(我的主板好像关机也是带电的, 为了彻底干脆掉一下电先). 最后重新开机之后, 再次把鼠标插到右面的USB口上去, 结果一切正常如初!
庆幸之余, 分析一下看来很可能是长按Shift键, 并伴随可能的通过键盘内置的USB Hub有鼠标动作(光电鼠标偶尔会自己跳动)触发了键盘控制芯片上的bug, 也许还是硬件级别上的, 不然怎么 电涌 都出来了呢.
不过把苹果键盘用在PC上本来也不是常规做法, 可能跟这个也不无关系, 回想一下刚买来开始用的那些日子还是经常发生自动断掉过一会又自己连上的情况, 不知不觉中这个现象居然自己好了, 看来这个硬件还有可能慢慢磨合起来的哟. November 18 一个可能比SOA更好的方案本文英文版发在: http://www.theserverside.com/discussions/thread.tss?thread_id=43148 在公开回答 (http://www.webofweb.net/manifesto/AppletAgainstAJAX.html) 为什么 WoW 当初选了Applet而不是AJAX的问题时, 我开始思考当前大规模软件组件相互集成的问题, 有了一些新想法. 概括来说, 我发现通常的 API(应用编程接口) 都是单一层次的, 即使是SOA中的服务定义也是. 描述为"单一层次"是因为它们是一个设计来被调用的一些 method/function 列表. 但是现在的软件组件其本身逻辑和调用它们的逻辑都复杂了很多, 而且相当一部分是 "多维" 的 - 结构化的对象和结构化的逻辑. 如此一来, 把多维的逻辑 压缩/抽象 成为单层的公开接口的必需工作量增长很快. 有些情况下, 这些抽象过程和为组合API设计规范的工作甚至有可能超过去理解和解决本来问题的成本. 所以我开始质疑这种通过公开接口来定义组件行为的方式, 还是这样最好? 别无他法? 我把这种方式叫做 基于调用的接合方式 (Invocation Based Interfacing), 这种方式下你都是通过调用去改变一个组件的状态或者获取它的结果. 然后我总结出一个截然不同的方式, 我称之为 基于东道的接合方式 (Hosting Based Interfacing). 在这种方式下 所谓的 特遣专员 被传递于软件组件之间, 各自完成预定的任务. 这样所带来的改变是软件组件不再需要定义公开的, 用来被反复调用/返回的 接口(服务), 而是公开它们的内部环境 (可能只需要把它们的部分内部逻辑直接公开出来, 无需再封装). 向接收到的 "特遣专员" 提供这样的环境以尽 "东道". 然后各种 "特遣专员" 就可以通过目标组件所提供的环境来完成自己的工作, 如果需要的话也可以构造新的 "特遣专员" 发送结果回去. 原始的想法已经在我设计 WoW 的 Traverser/Scener Architecture (http://www.webofweb.net/webstart?r=412) 时体现出来, 不过现在感觉看得更清晰一些了. 不知道大家怎么想这个问题. November 16 大陆进一步解封 zh.wikipedia.org继 en.wikipedia.org 前段时间获大陆解封不久, 从Slashdot得知维基百科中文站点亦得到解封, 尝试访问果然成功.
这无疑是又一个巨大的进步, 也给了中国大陆2亿网名分享和表达自己中立观点的机会.
现在看到的一些敏感页面上对大陆的一些负面言论似乎已不如以往尖锐,虽觉有一定的买口水淹人之嫌,但目前这些内容在绝大部分程度上能够代表中国大陆人们的主体观点(且不论是否包含历史教育成份).
交流互相理解是最好的化解矛盾与误解之道, 越是封闭, 自身不但无法接触和学习先进的东西, 也越是会被外界猜测甚至就着一些势头进行邪恶化. 如果还是自我封闭, 则更是连反驳的机会都没有了.
开放维基百科是非常明智之举, 让我们放眼一个开放的中国, 一个先进的全球最大华人阵营! November 01 人无远虑,必有近忧 的另一层涵义『人无远虑,必有近忧』 这句话源远流长, 以前一直的理解是: 因为过去没有远虑到今天, 所以眼下会有忧虑.
今天又突然悟道, 似乎这个现象还有更即时的表现, 那就是你如果现在没有在考虑将来的事情, 那马上就会有些烦恼.
这其实是一种心理效应, 因为眼前生活中的挑战, 虽然从长远来看对自己是有好处的, 能够带动个人上进, 但是如果单从眼下来看, 却常常是头疼的问题.
拿搞软件的做项目来说, 客户跟你提出必须要用某某第三方平台和或技术, 要求你的东西要融合默契, 可是你完全不知道, 在项目计划周期内是不可能完成了; 然后老板又在那里进逼, 说这个单子多么重要, 丢了今年就不发奖金了. 结果是因为时间来不及, 单子没拿到, 奖金也泡汤了.
这个眼下不是一个够沮丧的事情么? 就是因为自己的知识不够, 才会来不及. 如果不去多想想这个打击对将来的意义(『远虑』), 因此开始去学相关的东西, 而只是沉浸在这一次的懊恼之中, 那就是『近忧』了. October 21 大陆解封 en.wikipedia.org昨天刚刚注意到, en.wikipedia.org 已经可以直接从家里访问了, 今天还是可以正常访问, 而 zh.wikipedia.org 还是不难访问. 看起来像是对en内容局部解封了, 无论如何这是很大的进步, 从此可以方便的查看和引用维基百科的英文内容了! September 14 动物的驯化与斯德哥尔摩症候前段时间偶然又看了一段007电影 《纵横天下》(The World Is Not Enough),发现了一个原来没有特别注意到的环节就是女主角的斯德哥尔摩症,然后时常的联想起来,觉得我们把狗驯来看家,把猪啊,鸡的驯来混吃等死,也许在驯化之初正是利用了这些动物的斯德哥尔摩情结吧。
另又联想起以前就想到,觉得很讽刺的一个事儿,就是在肯德基看到的海报:一只母鸡,手(还是翅膀)里托着一包鸡米花,昂首挺胸,欢颜推介如此的美味。 有这样的广告创意设计并且为大众所乐见,应该也算是人心里潜藏的斯德哥尔摩情结的一个折影吧。 September 06 What's going on with Java at IBM ??Have a look at above page, see this: (as posted time 2006-09-06)
IBM Developer Kits and Runtime Environments are available for the following platforms:
This is the IBM 32-bit Runtime Environment for Java 2 (JRE), Windows Edition. To be able to install this JRE your computer must be an IBM system, as shown by a BIOS check. It must also be running Microsoft Windows Me, 2000, or XP. Or it must be updated with the latest WMI classes if running an older Microsoft operating system. And, finally, you must have Administrator level access. Who could tell me what's the meaning behind this? August 24 Firestar告JBoss/Hibernate侵犯ORM专利, RedHat受牵连Firestar Software has filed a patent claim against Red Hat for infringing on a patent Firestar filed in 2000 covering O/R mapping. The amount of the lawsuit was not disclosed. The complaint centers around Hibernate 3, and the patent claims that JBoss was given prior notice that marketing, distribution, and support services violates Firestars patent, and that Firestar "has suffered and will continue to suffer substantial damages." Firestar produces the ObjectSpark, an transactional object mapping engine which appears to not have had a new release since May 2003, according to the Firestars press release page.
在 US Patent office patent # 6,101,502 可以看到这项专利的详细内容. 大概研究了一下这里的内容, 其实它直接引用的其他专利早就涉及,涵盖了ORM的概念和一些方法,特别是: Integrating relational databases in an object oriented environment 和 Dependent object class and subclass mapping to relational data store 这两个专利(分别由Oracle和IBM持有), 核心的ORM思想大同小异. 不知道是不是美国专利的判断原则, 只要有点改进就能重新申请专利, 如果真是这样的话, 应该也不难找出证据说明包括Hibernate在内的目前这些ORM与Firestar现在诉求的专利受保护内容的差异.
June 24 "大势所趋" - 世界的规律刚才倒啤酒的时候终于顿悟, 总结出来不起沫的规律, 关键就在最杯底的那大概3厘米, 只要这一段控制得好, 后面就算使劲灌也绝不会冒出来; 但是如果开始这3厘米起泡的话, 那后面再怎么徐缓也不济事, 最终你会发现泡沫和液体的高度比例绝对要大于7:3
由此可见, 很多事情与原子核的链式反应还是挺像的, 不管是兴旺,衰败,取胜,失利,都会有一个大势, 一旦形成就极难逆转. 另外一个就是先入优势, 后起的追赶先起者是存在质的距离的, 即使是到了水平一样的时候, 看到的表象结果还是会相差很多. June 20 对 "东亚病夫" 的新思考"东亚病夫" 这个称号折射出那个年代冠上了它的人们的悲惨命运, 蒙给他们的子孙后代难以洗刷的耻辱. 不过既然是 "病" 就一定有致病的病因, 也终究有好的一天. "病夫症" 的病理病因和治疗方法是很多人的研究主题, 也有多方的观点和阐述. 我只是偶然间想到, 一个病中的人, 如果做的一些事是被疾病困扰所致, 它还应该被标上 "低劣" 和 "耻辱" 的标签吗?
南京的30万同胞是束手被杀的, 没有什么反抗; 除了这30万, 还有几十万是零零散散被杀, 情形也差不多.
一直以来我听到国人对这件事情的评价都是归结于懦弱, 当作冠于全体中国人头上的耻辱. 既然历史从不接受假设, 那么如果当时他们当中有人反抗的话, 那也改变不了这个事实的发生. 于是我想, 他们为什么没有反抗呢? 即使是最一般的人, 也有求生本能, 面对死亡的时候如果不是自己放弃希望, 即使出于本能的也会挣扎几下, 所谓兔子急了也要咬人的么. 但是他们被描述得是以一种木然的态度径直受死的, 我想他们唯有自己放弃了生的希望才能如此. 如果真是这样, 那么这种 "木然" 其实原本应该是一种无奈以后的坦然才对. 而能够看透时局命运, 认识清晰到了坚信没有丝毫生存机会的程度, 是否正说明了这一批中国人判断能力的准确和对自己判断的铁定信心呢. 与其失态的挣扎, 他们选择了静静的接受死亡; 我觉得与其称这种行为为一种耻辱, 更应该将其看作在极端情况下维护人格尊严的举动.
我们都无法重现历史, 与大部分得出相反结论的人一样, 我也无法验证这种猜测的真实性, 而对于这样的历史可能民族感情上对客观评论它所造成的影响才是现实意识形态的主体. 但是我坚信一个事实: 中国人的判断和决策能力并不比其他民族会差, 可能还会更好. 而历史上的失误, 是因为我们拒绝去了解对手, 拒绝收集国界以外的形势和知识来用在自己的决策上, 所以我们决策会失误, 没有任何不合理的地方, 这是自然规律. Life is a PatternThis Pattern is not what recognized as you are destined to do, but it is:
what you believe is right;
what you are willing to do;
what you feel comfort with;
what ever inspired you.
Have you ever been thinking of why you took a conclusion for firm, why you enjoyed that feeling, and why you feel that had to be done? June 16 有一个无法承担失误的前提, 就很难做正确的事情.Collective Ownership of Code and Text
When you get in situations where you cannot afford to make a mistake, it's very hard to do the right thing. So if you're trying to do the right thing, the right thing might be to eliminate the cost of making a mistake rather than try to guess what's right.
-- 当你身处一个无法承担失误的前提下, 就很难做正确的事情. 因此如果尝试着去做正确的事情, 正确的事情可以抵消失误所造成的代价, 这远比猜测什么才是正确的要好.
June 03 Finally made it - A designator tag system for heavy concurrent environment
This class is designed and implemented to generate printable designator tag strings, with the theoretical target:
This class is so used to resolve sorting problems of sibling WoW nodes. Since WoW is web based thus allow concurrent modifications including inserting child nodes to a same parent node, maybe by many different users at the same time. And WoW use database instead of linear storage to store node data, so the sorting order of sibling nodes became quite unobvious. Using an integer number as the unique sequence number seems feasible but there will be situations when insert a new node between nodes designated by two integers that one directly follows another. Think about insert between 7 and 8, yes we can change the old 8 node's seq no to 9 and make the newly inserted 8. But there may already been 9, 10, 11 ... stand, in the worst case we'll have to modify all succeeding sibling nodes, as sequence numbers have to be persistent attributes, this will raise heavy concurrent contention risk. Finally we need an sequencing schema that both allow random insertion at arbitrary positions and rarely need to change saved data. Then this class come into idea inspired by fractional arithmetic of the positional number system. You can find infinite numbers of fractional numbers between two of them. But that will produce more digits when these two number are very close, and the increase of digits is also infinite. To determin whether a simular mechanism is suitable for WoW daily use, some estimation are made with this class, and the result shows the number of digits will exceed 250 only after randomly insert more than one million nodes under a particular one, since 250 is a reasonable tag length for modern data systems, it seems fairly feasible. Technically, this class simulates a signed fractional number system with a base of 64. We use a single byte to store each digit value, this wastes 25% of the memory space but should be practically acceptable since it also improves the processing time performance. We use ASCII 0-9 A-Z a-z and { } as the digit symbols, and place them in their ASCII order, this simplifies and boosts comparation against string representations of designator tags. Below are some estimation results produced by running the Firing 30000 random insert session with each 100 records at max.
Designator length exceeds 250 after fired 23486 insert sessions and inserted 1178115 records.
-------------------------------------------------
Total inserted designators: 1504340
Longest one is [257]: +}}}}}}}}}}}}}}v03000000000000030000000F0E}}}}}{F00000}}}}}}y000000300000EU}}}}}}}x}}}Vw}{00002}}}}}}}}}}}x{00002}}}}}}}}}}}}}W00000000000000102l0000000002}}}}}}}}}}}x}}Vw{000000000000002}}}{00000V000030000000000}}{000000E}}}}}}}}}}t}}}}}}}}}}}000000000000V
Average length: 117
Length above 2: 349 => 0‰
Length above 4: 1457 => 0‰
Length above 8: 7511 => 4‰
Length above 16: 41436 => 27‰
Length above 32: 145931 => 97‰
Length above 64: 657302 => 436‰
Length above 128: 650346 => 432‰
Length above 256: 8 => 0‰
Length above 512: 0 => 0‰
Errors: 0
Firing 30000 random insert session with each 100 records at max.
Designator length exceeds 250 after fired 22650 insert sessions and inserted 1137011 records.
-------------------------------------------------
Total inserted designators: 1503406
Longest one is [335]: -}}}}}}}}}}}}}}}}}}}}}}TlU}}}}}}}}}}}}}}}u00000000000100000000000000010000000U}}}}}}}y00000000000E}}}W0000U}}}}}}}}}l}}u00F000700F02}}}}V}}}}}}}}}V}}}}00000000000000002}}}}}}}}}}W00000000000000030000000000V02}}}}}}}}}}}}u000000000000000000}}}}}}}z}}}}}}}}y000000000000000002}}}{}}}}}}}}}}}}}{}}}}}}}}}00000000006}}}}}}}}}}}00000000000V
Average length: 140
Length above 2: 349 => 0‰
Length above 4: 1381 => 0‰
Length above 8: 6133 => 4‰
Length above 16: 34476 => 22‰
Length above 32: 199236 => 132‰
Length above 64: 348206 => 231‰
Length above 128: 847748 => 563‰
Length above 256: 65877 => 43‰
Length above 512: 0 => 0‰
Errors: 0
Firing 30000 random insert session with each 100 records at max.
Designator length exceeds 250 after fired 25835 insert sessions and inserted 1293752 records.
-------------------------------------------------
Total inserted designators: 1504246
Longest one is [265]: +gl00V000000000000U}}}}{}}}}}}}}}}}}}{000000000000E}}}}z}}}}}{00000000000013002}}}}}u0000000000000000}}}}}}}}}}}}z}}}}}}}}{00000F0002zs}}{0000010000000000V000000000000003000000V000E}}}}}}z}}}}t}}}}}}z}m0000006}}}}}V}}{000001000000000000000030000000000E}}}}}}}}}}}}W
Average length: 111
Length above 2: 335 => 0‰
Length above 4: 2101 => 1‰
Length above 8: 12525 => 8‰
Length above 16: 76643 => 50‰
Length above 32: 302603 => 201‰
Length above 64: 527695 => 350‰
Length above 128: 582167 => 387‰
Length above 256: 177 => 0‰
Length above 512: 0 => 0‰
Errors: 0
June 02 "想改變別人的傾向"或"被別人當作想改變的對象"其实根本的问题在于我们人类的认知能力。 我们通常『认为』我们能够看清一件事情的来龙去脉,从而判断它的好坏和什么样的反应才『恰当』, 但其实这是不符合现实实际的。 眼耳鼻舌身所采集到的信息只是所有物质世界信息的一部分, 其实并不完整, 所以我们的判断其实无法完全准确。 但是这些信息已经构成了一定规模, 可以从中总结出某些规律, 其中有一部分也会应验。 这样虽然只是部分的『真理』, 但是人类有追求简单, 追求整齐划一的心态, 所以宁可相信自己找到的规律是永恒不变的, 久而久之, 就积累交错形成了价值观念体系。
因为采集信息不足, 所以只要是人不同或者被看待的事情不同, 总结出来的规律就不会完全一样, 在地域和时间上再存在差距的话, 这种不同就会更加剧烈, 甚至能够导致完全格格不入的价值观念体系。 虽然都不可能是完整的真理, 但是持有的人类出于本能并为了自身的利益和尊严就要去维护它的完美形象, 所以在不同价值观念之间就会爆发冲突和战争。
如果能够理解到这个层次, 就会知道其实任何一件事物, 一种行为, 都是独特的, 用人的眼光其实无法给出完全准确的『好』和『坏』或者『对』与『错』的判断, 不同的人, 利用不同的价值观念体系看到它得出不一样的结论, 是很符合现实的一种情况。 我们根本不必把目光放在评价或者结论上, 而是多看看自己内心的体验和对方内心的感受, 通过思维的能力去体会到更多的『事实』, 这会让自己对这世界的本来面目理解得更多, 更详细, 更准确。 | ||||||||||||