<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title>楚水</title>
<link>http://www.trucy.org/</link>
<description>岁 月 流 淌 往 日 点 点 滴 滴</description>
<language>zh-cn</language>
<copyright>Copyright 2012</copyright>
<lastBuildDate>Sat, 19 04 2008 16:51:10 +0800</lastBuildDate>
<pubDate>Mon, 14 05 2012 08:40:19 +0800</pubDate>
<generator>http://www.movabletype.org/?v=4.1</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 


<item>
<title>不吐不快</title>
<description>不吐不快 mqney.com</description>
<link>http://www.mQney.com/archives/003673.html</link>
<guid>http://www.mQney.com/archives/003673.html</guid>
<category>口唇</category>
<pubDate>Thu, 10 05 2012 16:51:08 +0800</pubDate>
</item>

<item>
<title>绝活儿</title>
<description>我的办公桌上有一个纠正坐姿的木架子（我有脖子前倾的坏习惯），是我爸做的，但是同事都以为是我做的（他们跟我爸不熟）。大家似乎都对这个自制的小木架非常感兴趣，很多第一次看见的同事都会详细询问一番，甚或赞美一番。上个星期，coly和易统在讨论问题。coly：google那边不仅自己定制内核，还自己定制硬件易统：是的，他们有自己的硬件工程师，专门为公司的搜索应用定制主板、硬盘等coly：嗯，还有自己的机械师，连机房的机架都是专门设计的易统：。。。。那有什么了不起，（转身看着我）。。。。咱们有自己的木匠！。。。。我：有订单千万别忘了我喲...</description>
<link>http://donghao.org/2012/05/oiu.html</link>
<guid>http://donghao.org/2012/05/oiu.html</guid>
<category>对话收录</category>
<pubDate>Thu, 10 05 2012 16:03:25 +0800</pubDate>
</item>

<item>
<title>脑起博器记录</title>
<description>4月11日是世界帕金森日，全球400万患者中有170万人在中国。很多信息可以参看：http://www.homefpd.com/ 1，国产脑起博器实验中，包括可可充电双侧脑起搏器。 具体可参看：www.pinsmedical.com，和天坛医院在临床实验进行中。目前使用的是美顿力产的起博器，官方网站是：www.medtronic.com.cn 2，深部脑刺激技术(Deep Brain Stimulation，DBS)适应患者： 患原发性帕金森病病史至少5年以上；服用左旋多巴有良好疗效或曾经有效；经系统的药物治疗后，症状再无法控制或出现运动障碍合并症，调整药物也无法改善；在植入过程和以后的随访中愿意并能够与医生合作；术中或术后的刺激测试证实能有效控制症状；没有严重的认知和精神障碍及严重脑萎缩。 3，不适合患者： 非自发性帕金森病所引起的神经性疾病 先前做过双侧苍白球或丘脑底核毁损手术 怀孕/智障/血液病/中度至重度的忧郁症/18岁以下的患者/75岁以上的患者 4，治疗注意事项 脑起搏器植入后数周内应避免剧烈活动。手术伤口愈合后，医生会采用特殊的仪器与装置，在体外对脉冲发生器进行调控，这一过程称为程控，这是一个无创伤也无痛苦的过程。脑起搏器植入后，帕金森病的药物治疗即需要调整，大多数病人的用药剂量会明显减少。由于药物剂量的改变，术后患者对脑起搏器的治疗也需要一个适应的过程，数月内患者的症状可能出现波动，从而需要进行数次程控以稳定疗效，并帮助患者达到最佳症状控制。以后患者可根据病情每年到医院随访1－3次，进行相应的检测和程控。 　　患者可以自己在体外开关脑起搏器，开关控制器有两种：一种为一小块遥控磁铁，使用时，手握磁铁弧形端，使其平直端对着身体，把磁铁放在胸前脉冲发生器位置1秒钟，脑起搏器就会开始或停止工作；另一种为手握式遥控开关，除了可以开关脑起搏器外，还可在医生设定的范围内进行刺激参数的调整，并可通过此开关了解脑起搏器的电池状态和开关情况。 　　由于磁铁会影响磁带、计算机磁盘、信用卡等的内部信息，建议在使用磁铁时远离这些物品15厘米以上。虽然家用电器如电脑、电话等对系统没有影响，但冰箱门、音响喇叭的磁场等可能会影响到脑起搏器的正常运行，所以建议患者不要距离太近。患者在需要接受磁共振（MRI）、超声等特殊检查前，应咨询手术医生。 　　每个患者在术后会获得一张植入识别卡，以证明其体内安装有脑起搏器系统，建议患者时刻随身携带识别卡。脑起博器中的脉冲发生器可能会引起机场安全门或商场防盗门报警，携带识别卡可以帮助免除不必要的麻烦。 手术后，也不能一劳永逸。帕金森病目前还无法彻底治愈，植入脑起搏器，只能缓解症状。而且每5年左右，起搏器就要更换电池，换电池时又需要做一次手术。 5，手术费用 第一次收入手术费用：22W。每隔5年左右更换电池费用：12W。 6，DBS的机理： 目前对DBS改善帕金森病的机制还不十分清楚。可能的机理有抑制、神经元去极化阻滞、调节靶区的神经元活性。抑制学说认为DBS刺激了局部抑制性神经递质的释放；去极化阻滞假说认为植入DBS类似于在靶区功能性的毁损，提高了兴奋性电位的阈值；调节神经元活性的假说是根据帕金森病中神经元兴奋性的异常和不规律，而DBS的脉冲式放电刺激产生了更加规律和稳定的放电模式。 7， DBS的疗效： 在术后3个月到2年的时间不等的5至38名患者的多中心的研究表明STN的DBS治疗帕金森病是安全而有效的。DBS对药物的“关”期的改善：①对UPDRS的日常生活功能评分可改善30%到68%，平均改善53%；②对UPDRS的运动功能评分可改善42%到71%，平均改善57%；③明显减轻异动症66%到83%，平均74%；④减少抗帕金森病药物37%到76%, 平均为57%。 8，STN的DBS可能的副作用： 视物重影、感觉异常、肌肉抽缩、眩晕或恶心、抑郁或躁狂或情绪障碍、共济失调等，这都是与DBS的电刺激可能影响到临近的相关神经结构有关。...</description>
<link>http://www.trucy.org/blog/fanghong/archives/2012/05/aoaeaeca.html</link>
<guid>http://www.trucy.org/blog/fanghong/archives/2012/05/aoaeaeca.html</guid>
<category>帕金森病</category>
<pubDate>Sat, 05 05 2012 23:21:02 +0800</pubDate>
</item>

<item>
<title>镜头</title>
<description>标准镜头 近摄镜 微距镜头 远摄镜头 鱼眼镜头 超广角镜头 广角镜头</description>
<link>http://www.mQney.com/archives/003670.html</link>
<guid>http://www.mQney.com/archives/003670.html</guid>
<category>眼睛</category>
<pubDate>Wed, 02 05 2012 20:23:41 +0800</pubDate>
</item>

<item>
<title>帕金森治疗的七大误区</title>
<description>　　东方网-文汇报 作者：胡小吾 　　http://health.xinmin.cn/jkzx/2012/04/28/14583595.html 　　帕金森病是中老年人的常见病，但由于帕金森的病因至今没有明确，所以治疗误区很多，不断有患者走弯路、吃错药。但是许多患者仍旧急功近利，大剂量不按规范的吃药，或者轻信他人进行不规范的手术，错失了最佳治疗导致他们生活质量急剧下降，从而造成极其恶劣的后果。其实，只要治疗方法合理，便可以取得长期满意的效果。 　　日前，由国内多位帕金森领域顶级专家共同参与编写的科普版《帕金森病治疗指南解读》正式出版。作为此书编写者之一，特摘取其中片段，希望能帮助更多人认识帕金森病，走出治疗误区，为健康赢得主动权。 　　怎样选择合理的正规治疗、少走弯路是医患间最关心的问题之一。从临床诊疗中发现，目前人们对于帕金森病治疗普遍存在的七大误区： 　　1、一发病就该吃药 　　帕金森病病人不是吃几个疗程药后症状缓解就可停服，而是如果一旦吃上，需要终生吃药。然而，需要提醒的是，药物治疗最有效的时间一般只有4～6年，随着吃药时间延长，疗效越来越低，剂量越来越大。长期吃药后会出现肢体不自主舞蹈样动作和药效作用来去无踪的副作用。因此，过早或过晚服用药物都是错误的，而应尽量推迟吃药时期，如果症状轻微，可以暂时不吃药，但如果症状明显，就应该及时吃药，以控制症状。 　　2、药物首选多巴胺制剂 　　有的病人一开始吃药就选择效果最明显的多巴胺制剂。但殊不知，该类药物效果明显，但可能让副作用提早出现。因此，对年龄较轻的早期病人，应选择多巴胺激动剂，该类药物虽然效果欠佳，副作用明显，但可推迟药物副作用出现；对年龄较大的早期病人，可应用多巴类药物。随着病情发展，需要的药物剂量越来越大，因此吃药需要做到“细水长流，不求全效”，即剂量尽可能小，长期规律地服用，能达到80%左右效果即可。 　　3、吃药无效方选择外科治疗 　　到中晚期，吃药效果不理想，即使药量加大，药物疗效也不满意，症状影响到工作和生活，或药物副作用较大，应考虑用外科治疗。在早期，症状较轻，吃药效果又好，不需要手术；在很晚期，即使手术，效果也不理想。因此，外科治疗通常在发病后5年进行，对以震颤为主要症状的病人因为震颤对外科治疗反应比较好，在发病3年后也可以进行手术。 　　4、毁损术应做双侧 　　帕金森病最早的外科治疗方法是毁损术，即通过射频热凝脑内异常兴奋神经核团，来消除帕金森病症状。平时我们听说的“细胞刀”就是这种方法。毁损术治疗较经济，如果做一边，可控制对侧肢体症状。但它是一种破坏性手术，约4%～10%病人术后出现脑出血、靶点偏差等并发症。毁损术一般只能做一侧，如果做双侧，并发症高达30%。因此，国外很少有人做毁损术，国内做这种手术的人数也在减少，但单侧毁损术还是比较适合由于经济原因不能进行脑起搏器治疗的单侧症状帕金森病病人。 　　5、脑起搏器装不得 　　脑起搏器是近40年来帕金森病治疗上的最大进展，是目前世界上最有效的外科治疗方法。手术在脑内神经核团植入电极，把脉冲发生器埋藏在胸部皮下，脉冲发生器发出电刺激，通过皮下导线，传到脑内电极，抑制不正常的神经放电，使其消除症状。目前全球有8～9万的帕金森病病人接受了脑起搏器治疗。国外治疗率达8%，而我国运用脑起搏器治疗仅为所有帕金森病人的0.125%。 　　6、定期更换电池需开颅 　　脑起搏器治疗不破坏脑组织，是一种可逆性的神经调节治疗，且不影响今后新的方法治疗，但是费用较高，起搏器电池耗完后（一般在6年左右）需要更换脉冲发生器。在更换脉冲发生器时，不需要对脑部进行任何手术，只要在胸口皮下组织取出电池更换新的仪器便可。据了解，长海医院是2000年在国内率先开展了脑起搏器治疗，目前上海也仅有长海和瑞金两家医院开展该项技术。 　　7、动了手术就无需吃药 　　吃药与外科手术治疗两者互不对立。吃药不是为了不手术，手术也并不为了不吃药。因为帕金森患者在中晚期，即使加大药物剂量，疗效持续时间也很短，病人大部分时间处于无药性作用状态。而起搏器治疗主要目的是改善病人的无药性作用时的症状，大大提高生活质量，减少吃药剂量。因此，对中晚期病人而言最佳的治疗手段应是“一手拿着多巴胺药物，一手拿着脑起搏器”。...</description>
<link>http://www.trucy.org/blog/fanghong/archives/2012/04/aaeoiaaeaaessoi.html</link>
<guid>http://www.trucy.org/blog/fanghong/archives/2012/04/aaeoiaaeaaessoi.html</guid>
<category>帕金森病</category>
<pubDate>Sat, 28 04 2012 13:00:08 +0800</pubDate>
</item>

<item>
<title>我的侏罗纪</title>
<description><![CDATA[ &nbsp; &nbsp; &nbsp; 大概是我上小学一年级的事，那时候从遵义市中心去往火车站的那条“华南路”都还没修完，但是南段已经开了一些小店，周末一家人上街，我在其中一个小店发现了有恐龙的图册卖，便要求妈买一本，妈说这画的什么呀，一群黑绿黑绿的东西，丑死了，不给买，我当然就拿出小孩常用的一哭二闹的办法，但是可惜不好使，爸妈都比较反对买画的动物这么怪异的书，最后没买成。&nbsp; &nbsp; &nbsp; 小男孩（其实也不仅是小时候，大了有时候也是）喜欢恐龙尤其是霸王龙，这简直是世界性的规律（我是指通常，排除个别小男孩有别的嗜好），也许小雄性动物们心底深处都崇拜强大的力量，而还有什么比史前第一巨兽更能代表原始的力量呢？与霸王龙相比，现代的大象简直太渺小太温和太无趣了。&nbsp; &nbsp; &nbsp; 96年，中考结束，整整三个月的暑假，一天下午我打开电视看厂台，正好在放《侏罗纪公园》，虽然是下半部（厂台没有节目预告，你通常只能逮住半截电影），但足以令我印象深刻、至今难忘了。瞧这拍的多好！恐龙像活的一样，不像那些劣质电影，用蒙了皮的模型来充数。&nbsp; &nbsp; &nbsp; 我慢慢知道《侏罗纪公园》是小说改编的电影，原著的作者叫迈克尔.克莱顿（那时候我只认得他的中文翻译名），著名的“高科技文学”作家。于是我买了他写的《天外细菌》（那本书上写的作者是“米高基顿”，好港台的翻译），觉得情节环环相扣、引人入胜，真不错。&nbsp; &nbsp; &nbsp; 一眨眼97年的暑假，某天，我在西西弗书社看到一本《失落的世界》（这张照片就是我拍的，书珍藏至今），哟，又是迈克尔.克莱顿写的，《侏罗纪公园》的正宗续集，我犹豫了一圈最后决定买了，回家以后天天下午搬个凳子在门口（三楼过道的门口，采光好）看得不亦乐乎，这科幻小说比当时国内的好看多了，不含说教，又有最炫的时尚科技——浑沌理论加基因技术，真是太棒了。&nbsp; &nbsp; &nbsp; 暑假快结束的一天，无意中看到同学万小博拿着一张VCD，我看了一眼封面，毕竟是盗版啊，封面很模糊，但是上面画的恐龙依然非常吸引我，《失落的世界》，哟，都拍成电影了，不错，我于是借回家了。但是，我家那时候没有VCD机（实在是想看，所以没有VCD机也借了），于是跑到唐yan家去看。一个在电影院盗拍的盗版碟能有什么效果，当然是黑乎乎的，但是那些巨大的活灵活现的恐龙已经让我们很满意了。&nbsp; &nbsp; &nbsp; 我真是着迷这些黑绿色的巨兽。那段时间正是十七八岁，一部叫《花季雨季》的小说也很畅销，里面有一句”十六岁是花季，十七岁是雨季“，所以我当时经常对同学开玩笑说：“猜猜十八岁是什么季？——侏罗纪！”。&nbsp; &nbsp; &nbsp; 一眨眼就到今年了（十几年怎么过得这么快），其实想想，我还没完整的看过《侏罗纪公园》的电影呢，再想想，连原著小说我一点也没看过，于是搞来一本《Jurassic Park》小说，完整看了一遍。&nbsp;&nbsp; &nbsp; &nbsp; Michael Crichton （我现在知道他的英文名字了！）的想象力真是丰富，今天我们提基因技术可能都会被人说成“老土”，但是在1991年就能想到从琥珀里的远古时代的蚊子的肚子里提出恐龙的血，找出里面的DNA，复制出恐龙，难道不是异想天开吗？更绝的是，用这些“复活”的恐龙开一个公园，多么可爱的想法。还不止，公园开了，但是混沌理论又插了进来，在一个风雨交加的夜晚，游客停在了霸王龙展区边上，偏巧隔离电网停电了（真混沌），这个千万年前的顶级捕食者 T-rex，在黑夜中从牢笼里杀了出来......我只能说，真是太刺激了。&nbsp; &nbsp; &nbsp; 当我们还是小男孩的时候，多少次幻想过让巨大凶猛的恐龙突然出现在学校、道路、或者某栋楼的背后，想想都觉得酷。要知道，Michael Crichton写《Jurassic Park》的时候已经49岁，已然到了“知天命”之年，却还写出了这样一部小说，这是一个多么天真多么有想象力的作家啊！&nbsp; &nbsp; &nbsp;...]]></description>
<link>http://donghao.org/2012/04/ioauai.html</link>
<guid>http://donghao.org/2012/04/ioauai.html</guid>
<category>书即面包</category>
<pubDate>Thu, 26 04 2012 16:04:12 +0800</pubDate>
</item>

<item>
<title>办公室里</title>
<description><![CDATA[教主在吃苹果。文弟： 教主又在很惬意的吃苹果呢教主： 嗯文弟： 每天都“自食其果”呢教主： 。。。。文弟： （跑到一边）我没苹果吃，我吃美国大杏仁我： &nbsp; &nbsp;你是“仁者得仁”文弟： 嗯，这比“自食其果”好多了我： &nbsp; &nbsp;你也是“不成功，便成仁”文弟： 。。。。木名： 参加IDF只要报名就行吗？文弟： 不，要买门票的，据说挺贵我： &nbsp; &nbsp;嗯，上次还给我发了个邮件，说是优惠价，400元文弟： 400元！太贵了。。。。都可以去吃4次”松子“了我： &nbsp; &nbsp;唉，自从coly带着大家吃了几次松子，”吃松子“就变成一种硬通货了...]]></description>
<link>http://donghao.org/2012/04/ieoai.html</link>
<guid>http://donghao.org/2012/04/ieoai.html</guid>
<category>对话收录</category>
<pubDate>Fri, 13 04 2012 11:41:17 +0800</pubDate>
</item>

<item>
<title>产品形态模式之间的关系</title>
<description>产品形态模式有B2C，C2C，B2B，B2B2C，SAAS，还有O2O。 在不发明新概念的前提下，该如何归类现有产品呢？以下是一种划分： 京东、卓越、当当、美团、拉手、大众点评、百度、天猫（淘宝商城）等应视为B2C的，因其直接面向普通消费者。 搜狐、新浪、网易等媒体网站也应视为B2C。 蘑菇街、去哪儿也应视为B2C模式。 阿里巴巴，中国化工网，伟库网，友商网，SalesForce等应视为B2B的，因其面向特殊商业人群。后三个也属于SAAS。 淘宝则应视为B2B2C而不是C2C，因它提供了一个商家和消费者互动的平台。 QQ、人人、微博、邮箱应视为C2C的，而QQ商城是B2C的。 拉卡拉、携程、美团、拉手、点评等都应算是O2O形态。 划分的目的是为了明晰产品的主要运营模式，防止犯错（不能让运营模式太过复杂），本身并无建设性。...</description>
<link>http://www.trucy.org/blog/lazet/archives/003665.html</link>
<guid>http://www.trucy.org/blog/lazet/archives/003665.html</guid>
<category>思考与逻辑</category>
<pubDate>Fri, 16 03 2012 13:46:36 +0800</pubDate>
</item>

<item>
<title>Lcf-android 开源项目介绍</title>
<description>Lcf 是一个在android平台上以RoboGuice2.0为基础，提供事件发布/订阅能力的代码框架。 它提供了一个通用的事件Event定义（ 类似于Intent,Intent太重了，不适合程序内部使用），支持通过标注（Annotation)注册事件监听，支持标准的事件订阅/发布模式。 它简化了UI线程和Background线程之间通讯的复杂模式（Handler，InnerClass），可以让程序仅使用一行标注（Annotation）达到原来需要写多个内部类采用完成的工作。 它提供了一个基础的Http form 模式的异步事件通讯框架，可以很方便的简化相应开发。能良好支持各种语言如PHP的服务器。后台服务特别推荐使用rest 模式的spring mvc搭建，数据结果推荐采用JSON格式。 Lcf使用指南： Lcf Usage Guide Lcf 发布库：（依赖的jar包，可以查看pom.xml,通过maven下载即可） Lcf jar Lcf源代码： Lcf souce code...</description>
<link>http://www.trucy.org/blog/lazet/archives/003664.html</link>
<guid>http://www.trucy.org/blog/lazet/archives/003664.html</guid>
<category>设计与开发</category>
<pubDate>Sat, 03 03 2012 21:50:19 +0800</pubDate>
</item>

<item>
<title>写mmap内存变慢的原因</title>
<description><![CDATA[有很多系统读写大文件时用的是这个办法：将大文件mmap到内存，然后直接对内存读写。这样就化read/write为memcpy操作，代码开发上很简便。被修改的内存页由kernel负责挑个时间写入硬盘，程序员不用操心。但是，最近一些使用了taobao kernel（基于redhat6-2.6.32）的机器，上面那些使用mmap的应用变慢了。我们上线查看，才发现mmap文件里有很多脏页，kernel的writeback机制就不停的将这些脏页写往硬盘，结果造成了大量的io（从iostat看，除了几秒的间歇，io util几乎保持在100%），而如果换回2.6.18内核，就没有这个问题（io util不超过20%，而且很稀疏）。为了简化应用模型，我们做了一个mmap_press程序模拟应用的写操作，内容很简单，就是mmap一块256MB的内存，然后在256MB的范围内随机的写,一次写8个字节，一共写25亿次，在rhel5（kernel-2.6.18）上，这个程序运行只需要374秒，而在我们的内核上，则要805秒才能完成，慢了两倍多。再换upstream的内核，一样慢，这个问题应该是一直有的。看来自从writeback改成per bdi的以后，脏页写回的力度是大大加强了。加强是有原因的：越快写回脏页，页面新数据丢失的肯能就越少。但问题是，现在writeback的太频繁了，结果消耗了大量io，拖慢了应用。能不能找个办法通知writeback子系统，让它每隔60秒或两分钟才开始写脏页，这样至少很多相邻的脏页能被合并成一次io，可以变大量小io为几个大io，速度会快很多。于是我们找到了这个参数 /proc/sys/vm/dirty_expire_centisecs ，默认值是3000，即30秒，也就是说，脏页要过了30秒才会被写往硬盘....等一等，这和我们观察到的完全不一样啊！？我们从iostat看到的是io util一直保持在100%，只有几秒的停歇，几秒啊，不是30秒。多猜无益，writeback子系统可是相当大的一块，于是我们联系了Intel的吴峰光，他第二天就给出了两个patch，我们将其移植到2.6.32内核后（1，2），效果很明显，writeback不再是不停的制造io，而是5～6秒的集中io以后，就停下来大约30秒（这次符合dirty_expire_centisecs参数的默认值了），然后再开始5～6秒的集中io，如此循环。我们重新跑mmap_press程序，耗费时间是390秒，已经非常接近2.6.18的速度了。感谢吴峰光同学的帮助。大概看了一下吴峰光patch的注释：之前writeback在回写完一个文件后，会从头再查找一遍脏页，如果有脏页则继续回写；现在改成，回写到文件尾后，直接停下来，直到脏页expire（也就是30秒后了）再开始从头检查脏页并回写（这是我对patch的解释，肯定有纰漏之处，有兴趣的同学还是直接看一下patch）。原来如此，咱们的mmap操作有大量的随机写，产生了大量分散的脏页，writeback每次从头检查文件都发现脏页，结果每次都要从头开始回写，就这么不停的转着圈的回写，造成io几乎一直保持在100%。但我还是有一个疑问：应用写内存只是一个内存操作，writeback写脏页只是一个硬盘操作，为什么硬盘操作会拖慢内存操作呢？最后万能的马涛同学给出了答案：应用对页面的写会触发内核的page_mkwrite操作，这个操作里面是会lock_page的，如果page正在被写往硬盘，那这时候它已经被writeback给lock了，page_mkwrite的lock_page会被阻塞，结果应用写内存的操作就顿住了，所以，越是频繁的writeback，越是会拖慢应用对mmap内存的写操作。=== 2012.2.29 ===Bergwolf:nitpicky一下：） writeback的时候page只是会被mark成PG_WRITEBACK，而不是被lock住。所以page_mkwrite的等待很可能是在wait_for_page_writeback上而不是lock_page上。RobinDong:&nbsp;我看了一下upstream的代码，以ext4文件系统的mmap为例，writeback时，write_cache_pages里先lock_page(mm/page-writeback.c 2241行)，再调用ext4_writepage来写单个页面，ext4_writepage里调用block_write_full_page来把页面mark成PG_WRITEBACK。我这里看来，是先lock后mark。另外，在我们这边的2.6.32老内核里，__block_page_mkwrite里没有调用wait_on_page_writeback，这个是去年五月份才加进去的。所以，2.6.32 mmap变慢的原因应该还是lock_page的争抢。Bergwolf:page_mkwirte应该只在page第一次被写的时候调用，线上应用的page应该都是在内存中了，为什么你们认为page_mkwrite和writeback有竞争呢？你的测试代码是新建一个sparse文件，有试过对一个已经在内存中的dense文件测试吗？RobinDong:我们用的就是已经在内存中的dense文件，之前我也以为只有page第一次进入内存时才有do_page_fault才有page_mkwrite，但是马涛哥颠覆了我的世界观——writeback完成后的page，在被写的时候就会调用page_mkwrite——代码路径我们今早也找到了。在write_cache_pages里，lock_page以后会调用clear_page_dirty_for_io(page)，然后一路--&gt; clear_page_dirty_for_io(page) --&gt; page_mkclean(page) --&gt; page_mkclean_file(page) --&gt; page_mkclean_one(page)下来，一直到page_mkclean_one(page),里面会做pte_wrprotect(entry)，也就是把pte置为“写保护”，这样做是故意的，当应用写这个page时，就会因为碰了“写保护”页面而触发do_page_fault，即使这个page已经是在内存中了。--&gt;do_page_fault --&gt; handle_mm_fault --&gt; handle_pte_faulthandle_pte_fault这段代码：&nbsp; &nbsp; &nbsp; &nbsp; if (flags &amp; FAULT_FLAG_WRITE) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if...]]></description>
<link>http://donghao.org/2012/02/mmapauaeaayaooo.html</link>
<guid>http://donghao.org/2012/02/mmapauaeaayaooo.html</guid>
<category>操作系统</category>
<pubDate>Mon, 27 02 2012 16:17:41 +0800</pubDate>
</item>

<item>
<title>ext4 bigalloc + inline_data的fsck速度</title>
<description><![CDATA[先前我以为对文件系统来说，读写文件时跑得快才是关键，mkfs和fsck的速度不用操心。直到几天前，线上的运维同学反映：集群里某台（或者悲剧一点，某几台）机器如果宕机了，如果不能迅速重启，可能会对其它服务器带来额外的压力，因为外部流量还在，而“重启”过程包括了对突然断电的磁盘做fsck，所以，fsck的速度也很重要。于是我找了个台式机（没办法，我们组的开发机服务器没有上T的硬盘），上面配了coly (@淘伯松)自己买的 2T 硬盘，测了一下ext4如果带上 nojournal + bigalloc + inline_data 后fsck的速度。硬盘： 希捷Barracuda LP 2TB 5900转 32MB（ST32000542AS）CPU: &nbsp;Core 2 Duo E8400 3.00GHz 1333MHz FSB (2 cores)内存： 2GB 800MHz DDR2mkfs命令：mke2fs -m 0 -C $CLUSTER_SIZE -I 4096 -O ^has_journal,^resize_inode,^uninit_bg,extent,meta_bg,flex_bg,bigalloc,inline_data $DEVICE用工具 dir_tree&nbsp;程序创建树状目录结构和文件：./dir_tree -m /test/ -d...]]></description>
<link>http://donghao.org/2012/02/ext4-bigalloc-inline-dataafsck.html</link>
<guid>http://donghao.org/2012/02/ext4-bigalloc-inline-dataafsck.html</guid>
<category>操作系统</category>
<pubDate>Fri, 24 02 2012 16:46:48 +0800</pubDate>
</item>

<item>
<title>用敬畏改变我们的工作环境</title>
<description>一些团队的工作方式：master/slave模式，也即独裁模式。 一些文明团队的工作方式：委员会模式，也为民主模式。 一些大的公司采用组合模式：高层用委员会模式，中低层用master/slave模式。 是否存在一些更加积极的工作方式：一种以敬畏为基础的工作方式？ 特征描述： 1，尊重人权、以承诺/一致为协作的主要方式。 2，公开明确权力分配规则，敬畏并遵守游戏规则。 3，对业务领域（不是上司领导、不是客户），以敬畏未知、探索未知的精神谦虚对待。 4，对合作结果保持惊喜的心态...</description>
<link>http://www.trucy.org/blog/lazet/archives/003661.html</link>
<guid>http://www.trucy.org/blog/lazet/archives/003661.html</guid>
<category>思考与逻辑</category>
<pubDate>Wed, 22 02 2012 14:47:30 +0800</pubDate>
</item>

<item>
<title>从“快照”到overlay filesystem</title>
<description><![CDATA[需求大概是这样：在一个linux系统上，想跑多个不同应用，这些应用由不同的运维来操作，为了避免互相干扰，希望运维只能看见自己的文件，而看不见别的应用的文件信息。一个常用解决办法就是干脆装多个虚拟机，但是，虚拟机对我们来说偏“重”，比如，多个应用公用的一些动态链接库（比如 libc.so）和配置文件（比如 hosts.conf）就复制了多份，如果原先一个系统在运行时系统文件占了500M的cache，那么现在装了4台虚拟机，就有2G的cache被重复占用了。怎样才能让系统文件只占一份cache呢？我们首先想到这么个主意：把linux系统装到ext4上，然后做4个snapshot（"快照“），这4个snapshot分别mount到4个目录，4个运维chroot到这4个目录里，然后就自己干自己的，干扰不到别人的文件。由于ext4 snapshot的实现机制是让同一个物理block被映射到不同的文件系统里，所以我们觉得，这一个4k的物理block应该就只占4k的cache。（也许有人要说，这么费劲干嘛，直接把系统常用的动态链接库做4个软链接出来，给4个运维用不就行了？这样做有两个问题，第一，动态链接库以及各种系统文件很多，不可能一一做软链接；第二，也是关键的一点，如果其中一位运维错误操作，例如覆盖写了某个系统文件，那么其他的运维就歇菜了，因为软链接实际指向的是同一个实际文件。）于是开始考察ext4的snapshot。ext4目前是没有snapshot功能的，但是Amir Goldstein已经开发好了对应的patch（https://github.com/amir73il/ext4-snapshots/），但是目前还没有被收入mainline。粗略看了一下，Amir的patch目前只支持readonly的snapshot，于是我发邮件问“如果改成writable snapshot，代码量大不大？“，Amir回帖表示代码量不大；另外还有别人回帖，推荐不用ext4而是用device mapper提供的thin provision的internal snapshot（http://kernelnewbies.org/Linux_3.2 ，http://lwn.net/Articles/465740/），这样就不用依赖于某一个文件系统（就是如果咱们以后不用ext4了，也可以继续做snapshot）。鉴于ext4 snapshot不支持writable snapshot，且有7000行的改动之多，且目前都没有进mainline的计划，而device mapper的thin provision已经进了3.2 kernel，且只有5000行改动，且支持writable snapshot，所以。。。转而又考察thin provision。考察基本顺利，做snapshot没有问题，snapshot写入没问题，最后chroot然后编译kernel测试速度也没问题，但是，最后发现一个郁闷的事情：这些snapshot被mount以后，公用的文件在不同的文件系统里各自都要占一份cache，也就是说，明明是一个4k物理block，mount到4个不同的文件系统，就占4 x 4k的内存cache了！难道是device mapper的问题？于是再试了一下ext4的snapshot，甚至btrfs的snapshot，都一样！这就是vfs的特性：只要是inode不同，即使这些inode指向的是同一个物理block，那么它们的cache都是各自独有的，不共享。我把这个事儿告诉了coly（@淘伯松）coly: （石化片刻）唉，我们之前想漏了，snapshot根本不能解决这个问题。。。太郁闷了，测了快两周才发现我： 想开一点吧，还好是测出来的，而不是上线了才发现——到时候运维找过来“你们的这个方案好像不省内存啊”，然后还得解释，还得回滚，就更被动更狼狈了coly： 噢，你这样一说，我舒坦多了最后还是马涛同学（@淘伯瑜）给出了一个方案——overlay fs（http://ovlfs.sourceforge.net/），能把两个目录（甭管是什么文件系统的两个目录，是目录就行）“叠合”成一个文件系统，而这个新文件系统的inode其实还是原来目录里的那个，但是视图已经是“叠合”后的了。比如，有两个目录，其中一个目录dir1有两个文件，是：./ab &nbsp;(ino:14)./cd &nbsp;(ino:16)另一个目录dir2有三个文件，是：./apple &nbsp;(ino:23)./banana (ino:27)./lemon &nbsp;(ino:31)最后用mount -t overlayfs overlayfs -olowerdir=/dir1,upperdir=/dir2 /test/建立的新文件系统/test/里看上去是这样：./ab &nbsp; &nbsp; (ino:14)./cd &nbsp; &nbsp; (ino:16)./apple...]]></description>
<link>http://donghao.org/2012/02/oioooverlay-filesystem.html</link>
<guid>http://donghao.org/2012/02/oioooverlay-filesystem.html</guid>
<category>操作系统</category>
<pubDate>Fri, 10 02 2012 13:42:42 +0800</pubDate>
</item>

<item>
<title>扎克伯格公开信谈核心价值</title>
<description>Facebook CEO马克-扎克伯格发表公开信，点明Facebook的三大愿景和五大核心价值。 　　以下为公开信全文： 　　Facebook的创建目的并非成为一家公司。它的诞生，是为了践行一种社会使命：让世界更加开放，更加紧密相连。 　　对于投资者而言，理解这一使命对于我们的意义，理解我们如何做出决定，以及我们为什么从事现在的工作，是一件非常重要的事情。我将在本文中阐述这些问题。 　　科技改变了人们传播和消费信息的方式，我们为之感到鼓舞。我们经常谈论印刷媒体和电视等发明——通过提高通信效率，它们发端了众多社会关键领域的深刻变革。它们让更多的人能够发出自己的声音，鼓励进步，改变社会组织方式，使我们更紧密地联系在一起。 　　今天，我们的社会走到了新的临界点。我们所处的时代，是一个大多数人都能够使用互联网和手机的时代——它们是分享所思、所感和所为的基本工具。Facebook渴望提供服务，使人们拥有分享的力量，帮助他们再一次改造众多核心机构和产业。 　　让每个人紧密联接，能够发出自己的声音，并推动社会的未来变革，是一种迫切需求，也是一个巨大机遇。人类需要建设的技术基础设施的规模亘古未有；我们认为，这是值得关注的最重要的问题。 　　我们希望巩固人与人之间的联系 　　尽管这一使命博大宽泛，但“风起于青萍之末”，我们将从“两人关系”迈出第一步。 　　人际关系是社会的基本构成单元，是我们发现创意、理解世界并最终获得长久幸福的必经之途。Facebook创造多种工具，帮助人们相互联系，分享观点，并以此拓展人们建立和维护人际关系的能力。 　　人们分享得越多——即便只是与密友或家人分享——文化就越开放，对于他人的生活和观点的理解也就越深。我们认为，它能够创造更多、更强的人际关系，并帮助人们接触到更多不同观点。 　　我们希望通过帮助人们建立关系，重塑信息的传播和消费方式。我们认为，世界信息基础架构应当与社交图谱类似——它是一个自下而上的对等网络，而不是目前这种自上而下的单体结构。此外，让人们自主决定分享哪些内容，是重塑架构的基本原则。 　　截至目前，我们已经帮助逾8亿人建立了超过1000亿个联系；我们的目标是推动这种重塑进程加速向前。 　　我们希望改善人们与企业和经济体系的联系 　　我们认为，一个更加开放、联系更加紧密的世界，将有助于创建更加强健的经济体系，培育更多提供更好产品和服务的真正意义上的企业。 　　人们分享得越多，他们就能够通过自己信赖的人，获得更多有关产品和服务的信息。他们能够更加轻松地找到最佳产品，并提高生活品质和效率。 　　在这一过程中，企业获得的益处是：他们能够制造更好的产品——即以人为本的个性化产品。我们发现，与传统商品相比，那些“社交化设计”(social by design)的产品更富有吸引力。我们预计，将有更多产品走上这条道路。 　　借助Facebook开发者平台，成千上万的企业开发出质量更高、社交特性更强的产品。游戏、音乐和新闻行业在Facebook平台上取得突破发展，更多行业在“社交化设计”理念的指引下也将迎来变革。 　　除了制造更好的产品，一个更加开放的世界还将鼓励企业与客户展开直接而可靠的互动。超过400万家企业在Facebook上开设了企业主页(Pages)，与客户进行对话。我们预计，这一趋势将继续发展。 　　我们希望改变人们与政府和社会机构的联系 　　我们认为，开发帮助人们分享的工具，能够推动民众与政府坦诚而透明的对话，赋予民众更加直接的权力，增强官员的责任感，并为当代一些最为重大的问题提供更好解决方案。 　　我们看到，人们在获得分享能力后，他们的声音和观点从未如此清晰响亮。这些声音的数量和影响力上都大大提高，无法忽略。我们认为，随着时间的推移，各国政府将更加积极地应对全体民众直接表达的问题和关切，而不是通过部分精英控制的中间机构听取民声民意。 　　我们认为，在这一过程中，世界各国都会出现善待互联网、为民权而奋斗的领导人。他们所争取的权利之一，是获取和分享一切信息的权利。 　　最终，随着更多经济体转向个性化高质量产品，我们预计能够解决创造就业岗位、教育和健康医疗等重大世界问题的社交新服务将出现。我们期待为这一进程尽其所能。 　　我们的使命和业务 　　如前所述，Facebook的创建目的并非成为一家公司。我们始终将自己的社会使命、正在开发的服务以及用户放在首要地位。对于一家上市公司而言，这可谓“不走寻常路”。因此，我希望解释其中缘由。 　　我自己编写了Facebook的首个版本。从那时起，大量优秀人才加入团队，并将自己的创意和代码融入Facebook。 　　大多数优秀人才都把开发优秀产品、从事伟大事业放在首要地位，但他们也想赚钱。通过建设人才团队，建立开发者社区、营销市场和投资者群体，我深刻体会到：荟萃精英以解决重要问题的最佳方式，是成立一家资本雄厚、成长强劲的茁壮企业。一言以蔽之：我们并非为了赚钱而开发服务，而是赚钱以开发更好服务。我们认为，这是一种很好的做事方法。我意识到，如今越来越多的人希望使用那些眼光不局限于利润最大化的企业所提供的服务。 　　通过践行自我使命，开发优秀服务，我们将为股东和合作伙伴长期创造最大价值。而这将使我们能够吸引最优秀人才，提供更多优秀服务。早晨醒来，我们的第一要务并不是赚钱；但是我们知道，使命必达的最佳方式是建设一家富有价值的强大企业。 　　这也是我们对启动IPO的看法。上市是为了惠及雇员和投资者。我们曾在分发股份时承诺，将竭尽全力提高股票价值，促进股票流通；如今，我们兑现了承诺。在即将成为上市公司之际，我们将对新的投资者作出类似承诺，并付出同等努力。 　　黑客文化 　　为了建设一家强大企业，我们努力将Facebook打造成优秀人才施展才华的最佳平台，以期对世界施加重大影响。我们培育了独一无二的企业文化和管理方式——黑客文化(Hacker Way)。 　　由于媒体将“黑客”描绘成入侵电脑为非作歹的人群，这个称呼带有贬义色彩，这是不公平的。事实上，“黑客”仅仅意味着快速开发，或是挑战力所能为之界限。与许多事情一样，它是一把“双刃剑”；然而，我结识的绝大多数黑客都是理想主义者，希望对世界做出积极贡献。 　　黑客文化是一种持续改进和衍变创新的做事方法。黑客们认为，优化无止境，产品无完美。当有人说无法改动一丝一毫，或是对现状心满意得时，黑客们却当着别人的面，情不自禁动手修改。 　　黑客们迅速发布小规模更新，并从中汲取经验教训，而不是试图一蹴而就，一劳永逸；他们希望通过长久努力打造最佳服务。为此，我们建成了一个测试框架，无论何时均可测试数千个版本的Facebook。我们的办公室墙上写着“完成优于完美”，以提醒大家按时“交差”。 　　“黑客”也意味着一种亲身实践、积极进取的天然纪律。黑客们不会召开长达数天的马拉松会议，以讨论某个创意是否可行，或是寻找最佳方法；他们会制作原型产品，看看是否行得通。在Facebook的办公室里，黑客们的口头禅是：“代码胜于雄辩”。...</description>
<link>http://www.trucy.org/blog/lazet/archives/003659.html</link>
<guid>http://www.trucy.org/blog/lazet/archives/003659.html</guid>
<category></category>
<pubDate>Thu, 02 02 2012 12:56:19 +0800</pubDate>
</item>

<item>
<title>代码review</title>
<description><![CDATA[我：我们有两台机，都是一样的 xeon E5620 2.4G 的CPU，但是，跑算Pi的程序，5000个迭代，一个机器跑48秒，另一个只需要32秒coly：CPU核数一样吗？我：一样的。不一样应该没关系，我这是单进程。coly：内存速度不一样？我：就一个算Pi，总共就占8MB内存，还没有CPU的L3 cache大呢coly：要不这样，你写个死循环加法，我们看看两边的速度是不是一样（公司的盒饭送来了，晚饭时间）coly：你先吃，我来写吧....一个死循环我应该还是能写出来的....你要review我的代码哟～我：....（coly把代码写出来了int main(void){&nbsp; &nbsp; &nbsp; &nbsp; int a=0;&nbsp; &nbsp; &nbsp; &nbsp; while ( a &lt; 0) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a++;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return 0;}）coly：为什么我运行瞬间就结束了？我：应该是编译器把你的死循环优化掉了，因为a这个变量在整个main函数里都没有被其它地方使用coly: 喔～～，我改改，在结尾加个printf把a打出来（程序一运行还是瞬间结束）陈同学：（看了看代码）是不是加法太快了，看不出来？咱们加几个嵌套循环coly：好～（程序还是瞬间结束）coly：怪了....靠，a的值是0啊，根本进不了循环！我，陈同学齐声：喔～～～coly：你们两个！怎么review代码的！后记：死循环程序写出来了，两台机器CPU的计算速度确实有差异，原因最后由柯旻同学揭示：跟华为2285机器的cpu 频率控制有关CPU不开启cpuspeed就是1.6G的主频，需要/sbin/modprobe...]]></description>
<link>http://donghao.org/2012/01/uaereview.html</link>
<guid>http://donghao.org/2012/01/uaereview.html</guid>
<category>软件开发</category>
<pubDate>Mon, 16 01 2012 17:42:44 +0800</pubDate>
</item>


</channel>
</rss>
