<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>易飞滔Todd ｜ 次生进化</title><link>https://yifeitao.com/</link><description>关注创造、学习与投资</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://yifeitao.com/index.xml" rel="self" type="application/rss+xml"/><item><title>一场跨越二十年的思索：我的数学天花板在哪里？</title><link>https://yifeitao.com/twenty-years-reflection-my-math-ceiling/</link><pubDate>Sun, 12 Apr 2026 00:00:00 +0000</pubDate><guid>https://yifeitao.com/twenty-years-reflection-my-math-ceiling/</guid><description>&lt;p&gt;&lt;img src="https://assets.yifeitao.com/2026/04/cd024b1db2d71b28f5b17dee67f5a97c.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;我花三天时间断断续续看完了《数学觉醒：学会更清晰的思考》这本书，阅读期间，和我老婆一直在高强度的讨论。在中小学数学的掌握上，按照历史成绩以及当前还保留的数学能力来看，我是一个学霸，而我老婆是一个学渣，但我们俩能很热烈的讨论这本书，因为它不是一本一般意义上的数学书，而是试图揭示数学家研究数学时的心理图景，更像是一本心理学或者哲学的书。&lt;/p&gt;
&lt;p&gt;看完这本书的时候，我放下手机，对我老婆说：我有点想哭。但我也看到了微信读书上为数不少的差评，我想，要看懂一本书，或者说要和作者产生强烈的共鸣，需要一定的机缘。如果我的前四十年的人生要用一些关键词来描述的话，那一定不能漏掉“数学”这个词，它建立了我早期学习的强大自信，但后来也曾让我陷入深深的疑惑和自我怀疑。&lt;/p&gt;
&lt;p&gt;我对我的学习尤其是数学学习有明确的记忆是从小学中年级开始的，在那个农村还非常贫穷匮乏的年代，教辅不是一个常见的东西，但是我的父母花钱给我在城里的新华书店买了一本叫《每日一刻钟》的教辅，其中数学科目的部分题目特别难，按现在的标准，大概是把那种比较简单的奥数题放在里面了，我的父母也不知道怎么用所谓小学生能理解的方式来解答这种题目，但是他们好歹认真学过一点方程，然后就在那个暑假，花了几个消暑的下午，教会了我用方程来解答这些问题，当年的小学数学其实是不学方程的（现在的小学课本更早的引入了方程，事实证明小学生学会简单的方程并不会太困难）。&lt;/p&gt;
&lt;p&gt;我突然感觉自己掌握了一个非常趁手的兵器，除了搞定这本教辅外，对我爷爷给我出的很多民间数学难题，用方程解决简直切瓜砍菜一般简单，做对了有红包可以拿，又能得到表扬。数学课也是如此，人们一般会认为善于学习数学，数学成绩好的人是聪明的人，然后聪明的人可以学会任何东西，不管是物理化学，还是语文英语。然后，这成为了一种自我预期实现，我总是觉得自己是领先于同学和老师的进度的，因此上课基本上不听讲，尤其是数学和理科的课程，基本上都在自己看书琢磨和提前做练习题，结果也有点一路开挂的感觉，从拿到小学数学奥赛的全国二等奖，到毫不费力的初中第一次统考总分超出年级第二名一百多分，再到高中特招进入市一中。&lt;/p&gt;
&lt;p&gt;在高中的数学学习中，我开始感受到自己能力的天花板，应对日常的学习考试问题不大，数学考试还是经常拿满分，但是当题目难度加大的时候，开始没有小学时解方程那种切瓜砍菜的轻松感了，尤其是高中的奥数，更是力所不逮。不过这个事情刚开始没有让我太焦虑，我在高三模拟考的时候，数学基本上还是145分以上接近满分的状态。我的班主任是数学老师，甚至还跟我说，按照当前高考的情况，没有必要再去花过多的时间深研数学，而应该花更多的时间到语文和英语上，那样收益会更高。&lt;/p&gt;
&lt;p&gt;然后就是高考历史上都小有名气的2003年高考，数学卷的难度远超往年，我的一个平时数学成绩尚可的男同学，是哭着从考场出来的，我也没好到哪里去，从选择题填空题开始就感觉到强烈的不适，一直到第一个立体几何的大题，甚至没有彻底解答出来，而传统来说，这个题一般被称为送分题。我千方百计试图稳住自己的心态，甚至还花了时间去攻克最后的附加题，但是最后结果差强人意，只有110多分，好在后来的理综考试中，虽然题目也很难，我心态稳住了，最后的总分离清华北大的分数线差了5分左右。那时的我，其实对大学一无所知，只是在社会舆论中，接受了清华北大是好学校的说法，按照我平时学习的情况，理应是能够考上的，最后没考上，我很自然的把这解读为一种失败。虽然我后来进了中科大计算机系，但是这种失败的阴影笼罩了我很多年，以至于我的大学生活和最初的职业选择现在看来都是一团糟。&lt;/p&gt;
&lt;p&gt;在过了三十岁，成家立业之后，我才慢慢对这些事情释怀，首先让自己释怀的是，我想到这是一个关乎眼界的问题，进入中科大对那时的我来说是一个失去了正确选项之后的无奈选择，我的眼界导致我不知道如何开始我的大学生活，虽然，从更加宽广的意义上看，进入中科大无疑是一种成功，而当时的我感受不到那种成功感，然后也没有人能让我真正理解，大学的学习本来就比中学要难得多。我记得我刚进中科大校园，就看到很多学长学姐在食堂门口摆摊卖书，很多都是托福GRE的单词书，当时的我看到这些是懵懂而反感的，浑然不知的是，那些立志要出国的人，不管选择是否正确，至少他们有了规划，有了选择。&lt;/p&gt;
&lt;p&gt;然后，我也想到，眼界似乎不能解释一切，也有那些从农村出来的孩子，上了大学后，如鱼得水，很快达到了比我更高的高度。那么，这一切是否又是关乎智商呢？是否因为我的智商不足以支撑我的大学学习，以至于我的大学数学学到似懂非懂，虽然考试分数还不错，但是没有彻底理解，以至于在多年以后研究人工神经网络的时候，总觉得数学上缺课太多。但是先不说智商这个概念本来就很虚妄，它甚至也不能解释：如果我是发挥失常进入了中科大，那为什么我的大学同学类似的分数考入中科大，很多人在大学过得都要比我充实，毕业后的发展也更好呢？总不能说，他们本来就比我更聪明，只是发挥失常得比我更多一些吧。&lt;/p&gt;
&lt;p&gt;最后，我怀疑到信心和勇气上来，是因为高考打击了我的信心和勇气，产生了一些微妙的失败情绪，才造就了大学生活的浑浑噩噩。但是这是一种不足以为外人道的隐秘心理体验，我以前只和家人聊过。把自己剖析到这里，我可以回到《数学觉醒：学会更清晰的思考》这本书上来，讲讲为什么它让我很感动。这本书出自一个法国数学家之手，分析研究了自己以及爱因斯坦、笛卡尔等一众超一流数学家科学家研究数学的心理图景，让我彻底释怀和自我和解了。&lt;/p&gt;
&lt;p&gt;作者，一个成名的数学家，勇敢的承认了，他几乎很难读懂任何一本数学家写的专业数学书，也听不懂一个数学博士生的毕业论文讲解，爱因斯坦和一个中学生说，他面临的数学上的困难比中学生只多不少，这些不是谦虚和客套，而是诚恳的说法。数学家和普通人一样，在数学面前会面临巨大的困难，那为什么人和人之前的数学能力差距又是如此之大呢？苏炳添百米成绩是9秒83，一个普通的四肢健全的人跑不赢苏炳添，但是最多不过20秒30秒总是可以跑完的。可是数学上人和人之前的差距似乎是某些人需要一个小时才能跑完100米。&lt;/p&gt;
&lt;p&gt;数学关乎的是对抽象对象的想象和操控，这是每个人与生俱来的能力。但是这些抽象对象在头脑中的想象和操控，不像语言和运动，是难以通过模仿学习的，因此过早的被很多人放弃，定义为自己没有天赋。逻辑推理只是数学的一种表达语言，是指月之手，不是数学的全部真相。数学，首先关乎的是好奇心和想象力，而最终是直觉，这些迟早都会撞到“天花板”，一次次穿过这个“天花板”的人，被人称之为数学家，这里不关乎智商，关乎的是勇气与自信。在抽象的概念面前，巨大的无知感很容易把人击倒，但是当你知道最伟大的数学家面临的无知是同样令人生畏的，然后再看看他们达到的高度，至少会油然而生一些勇气。取法其上，得乎其中，当然很少人能成为笛卡尔那样伟大的数学家，但是可以肯定的是，在数学上，绝大部分人大大低估了自己，包括我。&lt;/p&gt;
&lt;p&gt;只有相信，才能存在和实现，数学，从某种意义上来看，是一种自我预期实现，人生又何尝不是如此。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://assets.yifeitao.com/2026/04/cd024b1db2d71b28f5b17dee67f5a97c.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>我花三天时间断断续续看完了《数学觉醒：学会更清晰的思考》这本书，阅读期间，和我老婆一直在高强度的讨论。在中小学数学的掌握上，按照历史成绩以及当前还保留的数学能力来看，我是一个学霸，而我老婆是一个学渣，但我们俩能很热烈的讨论这本书，因为它不是一本一般意义上的数学书，而是试图揭示数学家研究数学时的心理图景，更像是一本心理学或者哲学的书。</p>
<p>看完这本书的时候，我放下手机，对我老婆说：我有点想哭。但我也看到了微信读书上为数不少的差评，我想，要看懂一本书，或者说要和作者产生强烈的共鸣，需要一定的机缘。如果我的前四十年的人生要用一些关键词来描述的话，那一定不能漏掉“数学”这个词，它建立了我早期学习的强大自信，但后来也曾让我陷入深深的疑惑和自我怀疑。</p>
<p>我对我的学习尤其是数学学习有明确的记忆是从小学中年级开始的，在那个农村还非常贫穷匮乏的年代，教辅不是一个常见的东西，但是我的父母花钱给我在城里的新华书店买了一本叫《每日一刻钟》的教辅，其中数学科目的部分题目特别难，按现在的标准，大概是把那种比较简单的奥数题放在里面了，我的父母也不知道怎么用所谓小学生能理解的方式来解答这种题目，但是他们好歹认真学过一点方程，然后就在那个暑假，花了几个消暑的下午，教会了我用方程来解答这些问题，当年的小学数学其实是不学方程的（现在的小学课本更早的引入了方程，事实证明小学生学会简单的方程并不会太困难）。</p>
<p>我突然感觉自己掌握了一个非常趁手的兵器，除了搞定这本教辅外，对我爷爷给我出的很多民间数学难题，用方程解决简直切瓜砍菜一般简单，做对了有红包可以拿，又能得到表扬。数学课也是如此，人们一般会认为善于学习数学，数学成绩好的人是聪明的人，然后聪明的人可以学会任何东西，不管是物理化学，还是语文英语。然后，这成为了一种自我预期实现，我总是觉得自己是领先于同学和老师的进度的，因此上课基本上不听讲，尤其是数学和理科的课程，基本上都在自己看书琢磨和提前做练习题，结果也有点一路开挂的感觉，从拿到小学数学奥赛的全国二等奖，到毫不费力的初中第一次统考总分超出年级第二名一百多分，再到高中特招进入市一中。</p>
<p>在高中的数学学习中，我开始感受到自己能力的天花板，应对日常的学习考试问题不大，数学考试还是经常拿满分，但是当题目难度加大的时候，开始没有小学时解方程那种切瓜砍菜的轻松感了，尤其是高中的奥数，更是力所不逮。不过这个事情刚开始没有让我太焦虑，我在高三模拟考的时候，数学基本上还是145分以上接近满分的状态。我的班主任是数学老师，甚至还跟我说，按照当前高考的情况，没有必要再去花过多的时间深研数学，而应该花更多的时间到语文和英语上，那样收益会更高。</p>
<p>然后就是高考历史上都小有名气的2003年高考，数学卷的难度远超往年，我的一个平时数学成绩尚可的男同学，是哭着从考场出来的，我也没好到哪里去，从选择题填空题开始就感觉到强烈的不适，一直到第一个立体几何的大题，甚至没有彻底解答出来，而传统来说，这个题一般被称为送分题。我千方百计试图稳住自己的心态，甚至还花了时间去攻克最后的附加题，但是最后结果差强人意，只有110多分，好在后来的理综考试中，虽然题目也很难，我心态稳住了，最后的总分离清华北大的分数线差了5分左右。那时的我，其实对大学一无所知，只是在社会舆论中，接受了清华北大是好学校的说法，按照我平时学习的情况，理应是能够考上的，最后没考上，我很自然的把这解读为一种失败。虽然我后来进了中科大计算机系，但是这种失败的阴影笼罩了我很多年，以至于我的大学生活和最初的职业选择现在看来都是一团糟。</p>
<p>在过了三十岁，成家立业之后，我才慢慢对这些事情释怀，首先让自己释怀的是，我想到这是一个关乎眼界的问题，进入中科大对那时的我来说是一个失去了正确选项之后的无奈选择，我的眼界导致我不知道如何开始我的大学生活，虽然，从更加宽广的意义上看，进入中科大无疑是一种成功，而当时的我感受不到那种成功感，然后也没有人能让我真正理解，大学的学习本来就比中学要难得多。我记得我刚进中科大校园，就看到很多学长学姐在食堂门口摆摊卖书，很多都是托福GRE的单词书，当时的我看到这些是懵懂而反感的，浑然不知的是，那些立志要出国的人，不管选择是否正确，至少他们有了规划，有了选择。</p>
<p>然后，我也想到，眼界似乎不能解释一切，也有那些从农村出来的孩子，上了大学后，如鱼得水，很快达到了比我更高的高度。那么，这一切是否又是关乎智商呢？是否因为我的智商不足以支撑我的大学学习，以至于我的大学数学学到似懂非懂，虽然考试分数还不错，但是没有彻底理解，以至于在多年以后研究人工神经网络的时候，总觉得数学上缺课太多。但是先不说智商这个概念本来就很虚妄，它甚至也不能解释：如果我是发挥失常进入了中科大，那为什么我的大学同学类似的分数考入中科大，很多人在大学过得都要比我充实，毕业后的发展也更好呢？总不能说，他们本来就比我更聪明，只是发挥失常得比我更多一些吧。</p>
<p>最后，我怀疑到信心和勇气上来，是因为高考打击了我的信心和勇气，产生了一些微妙的失败情绪，才造就了大学生活的浑浑噩噩。但是这是一种不足以为外人道的隐秘心理体验，我以前只和家人聊过。把自己剖析到这里，我可以回到《数学觉醒：学会更清晰的思考》这本书上来，讲讲为什么它让我很感动。这本书出自一个法国数学家之手，分析研究了自己以及爱因斯坦、笛卡尔等一众超一流数学家科学家研究数学的心理图景，让我彻底释怀和自我和解了。</p>
<p>作者，一个成名的数学家，勇敢的承认了，他几乎很难读懂任何一本数学家写的专业数学书，也听不懂一个数学博士生的毕业论文讲解，爱因斯坦和一个中学生说，他面临的数学上的困难比中学生只多不少，这些不是谦虚和客套，而是诚恳的说法。数学家和普通人一样，在数学面前会面临巨大的困难，那为什么人和人之前的数学能力差距又是如此之大呢？苏炳添百米成绩是9秒83，一个普通的四肢健全的人跑不赢苏炳添，但是最多不过20秒30秒总是可以跑完的。可是数学上人和人之前的差距似乎是某些人需要一个小时才能跑完100米。</p>
<p>数学关乎的是对抽象对象的想象和操控，这是每个人与生俱来的能力。但是这些抽象对象在头脑中的想象和操控，不像语言和运动，是难以通过模仿学习的，因此过早的被很多人放弃，定义为自己没有天赋。逻辑推理只是数学的一种表达语言，是指月之手，不是数学的全部真相。数学，首先关乎的是好奇心和想象力，而最终是直觉，这些迟早都会撞到“天花板”，一次次穿过这个“天花板”的人，被人称之为数学家，这里不关乎智商，关乎的是勇气与自信。在抽象的概念面前，巨大的无知感很容易把人击倒，但是当你知道最伟大的数学家面临的无知是同样令人生畏的，然后再看看他们达到的高度，至少会油然而生一些勇气。取法其上，得乎其中，当然很少人能成为笛卡尔那样伟大的数学家，但是可以肯定的是，在数学上，绝大部分人大大低估了自己，包括我。</p>
<p>只有相信，才能存在和实现，数学，从某种意义上来看，是一种自我预期实现，人生又何尝不是如此。</p>
]]></content:encoded><category>reading</category><category domain="tags">数学</category></item><item><title>如何逃脱手机随时切换状态的诅咒</title><link>https://yifeitao.com/break-the-phone-loop/</link><pubDate>Wed, 01 Apr 2026 00:00:00 +0000</pubDate><guid>https://yifeitao.com/break-the-phone-loop/</guid><description>&lt;p&gt;便携，随时联网，使得手机能够非常便捷地让你和世界产生连接。系统通知、推荐系统、广告、红点提示、标题党，每一个设计都在主动唤起你的注意力，试图霸占你的时间。手机，因为能随时随地在线，成为现代人最大的干扰源。&lt;/p&gt;
&lt;p&gt;手机是多模式设备，能够频繁切换状态和场景，一会儿它变成购物广场让你购物，一会儿又变成咖啡厅让你聊天看明星八卦。手机这一类计算机设备的核心技术之一是多进程多线程，但人类习惯的时间分配不是分片轮询的。&lt;/p&gt;
&lt;p&gt;我们想象一个在互联网出现之前的场景：我想看一本书，那我就得安排一段特定的时间，找一个安静的地方，拿一本纸质书去看，甚至还要特意去图书馆找书，如果在看书的时候，发现一段特别有意思的内容，想要分享给我的朋友，那我只能先把它用脑子或者笔记下来。然后等到我安排时间去跟朋友见面的时候，再把这个事情说给他听。在这里，阅读和社交是分离的、独立的。&lt;/p&gt;
&lt;p&gt;但是现在非常方便。我看书，手机放在旁边，看见一段有意思的内容，立马把它拍下来，发给朋友。这样很方便，对吧？在这里，你主动把阅读和社交混在一起了。更糟糕的是，你甚至不知不觉会切换到看短视频或者逛淘宝拼多多。只要你拿起手机，可能你就被手机上更加短平快的信息给吸引，你需要消耗很多意志力，才能把看书这件事情做完。人的注意力机制决定了其实并不适合这样频繁切换状态。&lt;/p&gt;
&lt;p&gt;最早的智能手机叫PDA，也就是个人助理。智能手机发展了几十年，完全没有达到最初预期的效果。智能手机没有很好的成为我们的个人助理，反而成了各大厂商在我们的注意力上跑马的场地，我们随时随地要响应他人，或者随时随地寻找手机上的多巴胺。&lt;/p&gt;
&lt;p&gt;现在人工智能发展一日千里，我觉得这一次也许我们有希望把手机真的变成个人助理，它能够根据我们的需求。在不同的场景下，呈现不同的状态来帮助我们而不是干扰我们。但是谁知道事情会不会越变越糟呢。至少在这个理想的状态到来之前，我们自己还需要做很多事情来管好自己的注意力。&lt;/p&gt;
&lt;h2 id="回归单模式设备"&gt;回归单模式设备&lt;/h2&gt;
&lt;p&gt;回归纸笔，当前的AI在这一点上是大有帮助的。比如说，看书做笔记，完全可以远离手机和笔记本电脑，回归纸笔。看完书之后，你再拿出手机，把笔记拍下来，现在的AI可以很准确地识别出你写的东西。这样我们既避免了随时使用手机。也不会完全放弃电子化的便利。&lt;/p&gt;
&lt;p&gt;又比如，卧室是睡觉的地方，你可能需要一个更加传统的闹钟，而不是用手机来看时间定闹钟。然后手机就可以滚出卧室了。&lt;/p&gt;
&lt;h2 id="善用手机屏幕时间管理类软件"&gt;善用手机屏幕时间管理类软件&lt;/h2&gt;
&lt;p&gt;当前的手机和电脑有很丰富的时间管理类软件。比如说iOS的Cape。这类软件一般可以将你的APP分组，然后在不同的时间段禁用。这样我们能初步实现一个使用场景上的切换。比如说把娱乐类软件分组，只在特定时间段开启。不过说实话，以现在的手机操作系统来说，这方面做得还非常粗糙。远远不能真的达到场景切换的程度。第三方的屏幕时间管理软件也只能是略作裱糊。但至少可以做一个初步的尝试。我觉得这应该是未来智能时代的手机跟手机软件进化的一个方向，软件和功能应该只在我需要的时候出现。&lt;/p&gt;
&lt;h2 id="配置关闭软件的功能模块"&gt;配置关闭软件的功能模块&lt;/h2&gt;
&lt;p&gt;这方面有些软件做得稍微好一些，比如微信，它的发现页面里面的视频号、朋友圈这些都是可以按照你的需求关闭的，比如支付宝也是可以把短视频模块关闭的。但微信和支付宝也还是有茫茫多关不掉的功能。大部分软件，尤其是国内的软件，在可以让用户按需定制方面，做得其实都非常糟糕，这或许是由它们的商业模式决定的。每一个软件都能刷短视频，每一个软件都能借高利贷。我们理应在脑子清醒时，能够决定自己需要软件的什么功能，但是现实很糟糕，我们只能戴着镣铐跳舞。&lt;/p&gt;
&lt;h2 id="探索用龙虾来重构信息流"&gt;探索用“龙虾”来重构信息流&lt;/h2&gt;
&lt;p&gt;目前所有的所谓的个性化推荐系统，其实都不是完全按照你的意愿来给你推荐的。而是去放大你人性中脆弱、懒惰的那一部分，以点击率等指标为目标去优化的。那在“龙虾”等智能体快速发展的时代，其实是有一个重构信息流的机会的。我们可以在头脑清醒的时候，告诉自己的智能体，自己需要看什么样的东西，然后让它去做一个初步的过滤，起到一个真正的助手的作用。这样，理论上应该能大大缓解信息过载。这个方向其实已经有公司在探索了，比如 Bluesky 推出的 Attie。&lt;/p&gt;</description><content:encoded><![CDATA[<p>便携，随时联网，使得手机能够非常便捷地让你和世界产生连接。系统通知、推荐系统、广告、红点提示、标题党，每一个设计都在主动唤起你的注意力，试图霸占你的时间。手机，因为能随时随地在线，成为现代人最大的干扰源。</p>
<p>手机是多模式设备，能够频繁切换状态和场景，一会儿它变成购物广场让你购物，一会儿又变成咖啡厅让你聊天看明星八卦。手机这一类计算机设备的核心技术之一是多进程多线程，但人类习惯的时间分配不是分片轮询的。</p>
<p>我们想象一个在互联网出现之前的场景：我想看一本书，那我就得安排一段特定的时间，找一个安静的地方，拿一本纸质书去看，甚至还要特意去图书馆找书，如果在看书的时候，发现一段特别有意思的内容，想要分享给我的朋友，那我只能先把它用脑子或者笔记下来。然后等到我安排时间去跟朋友见面的时候，再把这个事情说给他听。在这里，阅读和社交是分离的、独立的。</p>
<p>但是现在非常方便。我看书，手机放在旁边，看见一段有意思的内容，立马把它拍下来，发给朋友。这样很方便，对吧？在这里，你主动把阅读和社交混在一起了。更糟糕的是，你甚至不知不觉会切换到看短视频或者逛淘宝拼多多。只要你拿起手机，可能你就被手机上更加短平快的信息给吸引，你需要消耗很多意志力，才能把看书这件事情做完。人的注意力机制决定了其实并不适合这样频繁切换状态。</p>
<p>最早的智能手机叫PDA，也就是个人助理。智能手机发展了几十年，完全没有达到最初预期的效果。智能手机没有很好的成为我们的个人助理，反而成了各大厂商在我们的注意力上跑马的场地，我们随时随地要响应他人，或者随时随地寻找手机上的多巴胺。</p>
<p>现在人工智能发展一日千里，我觉得这一次也许我们有希望把手机真的变成个人助理，它能够根据我们的需求。在不同的场景下，呈现不同的状态来帮助我们而不是干扰我们。但是谁知道事情会不会越变越糟呢。至少在这个理想的状态到来之前，我们自己还需要做很多事情来管好自己的注意力。</p>
<h2 id="回归单模式设备">回归单模式设备</h2>
<p>回归纸笔，当前的AI在这一点上是大有帮助的。比如说，看书做笔记，完全可以远离手机和笔记本电脑，回归纸笔。看完书之后，你再拿出手机，把笔记拍下来，现在的AI可以很准确地识别出你写的东西。这样我们既避免了随时使用手机。也不会完全放弃电子化的便利。</p>
<p>又比如，卧室是睡觉的地方，你可能需要一个更加传统的闹钟，而不是用手机来看时间定闹钟。然后手机就可以滚出卧室了。</p>
<h2 id="善用手机屏幕时间管理类软件">善用手机屏幕时间管理类软件</h2>
<p>当前的手机和电脑有很丰富的时间管理类软件。比如说iOS的Cape。这类软件一般可以将你的APP分组，然后在不同的时间段禁用。这样我们能初步实现一个使用场景上的切换。比如说把娱乐类软件分组，只在特定时间段开启。不过说实话，以现在的手机操作系统来说，这方面做得还非常粗糙。远远不能真的达到场景切换的程度。第三方的屏幕时间管理软件也只能是略作裱糊。但至少可以做一个初步的尝试。我觉得这应该是未来智能时代的手机跟手机软件进化的一个方向，软件和功能应该只在我需要的时候出现。</p>
<h2 id="配置关闭软件的功能模块">配置关闭软件的功能模块</h2>
<p>这方面有些软件做得稍微好一些，比如微信，它的发现页面里面的视频号、朋友圈这些都是可以按照你的需求关闭的，比如支付宝也是可以把短视频模块关闭的。但微信和支付宝也还是有茫茫多关不掉的功能。大部分软件，尤其是国内的软件，在可以让用户按需定制方面，做得其实都非常糟糕，这或许是由它们的商业模式决定的。每一个软件都能刷短视频，每一个软件都能借高利贷。我们理应在脑子清醒时，能够决定自己需要软件的什么功能，但是现实很糟糕，我们只能戴着镣铐跳舞。</p>
<h2 id="探索用龙虾来重构信息流">探索用“龙虾”来重构信息流</h2>
<p>目前所有的所谓的个性化推荐系统，其实都不是完全按照你的意愿来给你推荐的。而是去放大你人性中脆弱、懒惰的那一部分，以点击率等指标为目标去优化的。那在“龙虾”等智能体快速发展的时代，其实是有一个重构信息流的机会的。我们可以在头脑清醒的时候，告诉自己的智能体，自己需要看什么样的东西，然后让它去做一个初步的过滤，起到一个真正的助手的作用。这样，理论上应该能大大缓解信息过载。这个方向其实已经有公司在探索了，比如 Bluesky 推出的 Attie。</p>
]]></content:encoded><category>investment</category><category domain="tags">手机</category></item><item><title>我建议你现在就开始“拖延”。</title><link>https://yifeitao.com/start-procrastinating-now/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate><guid>https://yifeitao.com/start-procrastinating-now/</guid><description>&lt;h1 id="接纳短期拖延才能避免长期拖延"&gt;接纳短期拖延，才能避免长期拖延&lt;/h1&gt;
&lt;p&gt;短期拖延指的是事情能推进下去，但是比预期的要慢。比如论文比最后期限晚了一个星期。很多人从学生时代开始，就喜欢制定计划。但是最后大家也都知道，计划肯定是执行不下去的。但是我觉得计划还是有用的，它不是让你百分百去执行，而是说给了你一个可以观察的标杆，看看你进度到哪里了。轻微的拖延是人生常态，总有各种各样主观客观的理由，让我们没有办法按计划来做事情。&lt;/p&gt;
&lt;p&gt;而长期拖延，则是无法开始，比如想写一本书，但三年过去了，第一页都没开始。如果你是一个有完美主义倾向的人，那么短期拖延很容易导向长期拖延。因为你会说：“既然我都还没开始做，既然我都还没有做好，那我又很担心这样下去会失败。那我干脆就完全不要开始好了。”&lt;/p&gt;
&lt;p&gt;要适当放过自己的短期拖延，摒弃完美主义，只要事情在往下推进，就继续下去，不消耗意志力的继续下去。三天打鱼，两天晒网，其实不是最可怕的。最可怕的是，当你发现发现自己有两天晒网的时候，你觉得你的记录不完美了，然后你就再也不想去打鱼了。我也用过很多所谓的To-Do软件，发现一旦没有及时的完成自己自视过高时定下的任务，软件上面就会有一片过期的红色，然后导致你根本都不想再打开这个软件。所以，如果我来开发一款To-Do软件，我觉得应该让它能很好的放过自己。&lt;/p&gt;
&lt;p&gt;如果不能接纳自己的短期拖延，很容易变成破罐子破摔：反正已经拖延了，我觉得自己应该是不能按时完成了，干脆就一直不要开始好了。可能我们每一个人都得接受，自己天生就是很善于偷懒和拖延的人。在接纳自己人性如此的基础上，才能慢慢地把一件一件的事情做好。&lt;/p&gt;
&lt;p&gt;如果我们走在通往目标的一条正确的路上，慢一点，有时候停下来休息一下，都不是太大的问题。最大的问题是我们害怕自己不能从头到尾快速地奔向目标，而根本没有开始。&lt;/p&gt;</description><content:encoded><![CDATA[<h1 id="接纳短期拖延才能避免长期拖延">接纳短期拖延，才能避免长期拖延</h1>
<p>短期拖延指的是事情能推进下去，但是比预期的要慢。比如论文比最后期限晚了一个星期。很多人从学生时代开始，就喜欢制定计划。但是最后大家也都知道，计划肯定是执行不下去的。但是我觉得计划还是有用的，它不是让你百分百去执行，而是说给了你一个可以观察的标杆，看看你进度到哪里了。轻微的拖延是人生常态，总有各种各样主观客观的理由，让我们没有办法按计划来做事情。</p>
<p>而长期拖延，则是无法开始，比如想写一本书，但三年过去了，第一页都没开始。如果你是一个有完美主义倾向的人，那么短期拖延很容易导向长期拖延。因为你会说：“既然我都还没开始做，既然我都还没有做好，那我又很担心这样下去会失败。那我干脆就完全不要开始好了。”</p>
<p>要适当放过自己的短期拖延，摒弃完美主义，只要事情在往下推进，就继续下去，不消耗意志力的继续下去。三天打鱼，两天晒网，其实不是最可怕的。最可怕的是，当你发现发现自己有两天晒网的时候，你觉得你的记录不完美了，然后你就再也不想去打鱼了。我也用过很多所谓的To-Do软件，发现一旦没有及时的完成自己自视过高时定下的任务，软件上面就会有一片过期的红色，然后导致你根本都不想再打开这个软件。所以，如果我来开发一款To-Do软件，我觉得应该让它能很好的放过自己。</p>
<p>如果不能接纳自己的短期拖延，很容易变成破罐子破摔：反正已经拖延了，我觉得自己应该是不能按时完成了，干脆就一直不要开始好了。可能我们每一个人都得接受，自己天生就是很善于偷懒和拖延的人。在接纳自己人性如此的基础上，才能慢慢地把一件一件的事情做好。</p>
<p>如果我们走在通往目标的一条正确的路上，慢一点，有时候停下来休息一下，都不是太大的问题。最大的问题是我们害怕自己不能从头到尾快速地奔向目标，而根本没有开始。</p>
]]></content:encoded><category>investment</category><category domain="tags">拖延</category></item><item><title>茅台，从政务酒、商务酒到家庭酒</title><link>https://yifeitao.com/moutai-positioning-evolution/</link><pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate><guid>https://yifeitao.com/moutai-positioning-evolution/</guid><description>&lt;p&gt;&lt;img src="https://assets.yifeitao.com/2026/04/0ecbd4640fd6d4d0b8b76a3b1bbef4ca.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;曾经，茅台是国宴上的“政治正确”；如今，它悄悄走进千家万户的家宴、婚礼和朋友小聚。一瓶酒，三段人生：从政务酒到商务酒，再到家庭酒。茅台的30年转型，不是简单换渠道，而是主动适应宏观周期的自我进化——从“B端稀缺资源”到“C端真实消费”，从“卖酒”到“卖生活方式”。&lt;/p&gt;
&lt;p&gt;据贵州茅台官方历史资料和财报复盘，早期政务采购占比一度接近50%。2012年底“八项规定”后，公司提出“三个转型、五个转变”，商务场景迅速崛起。2021年起地产周期低谷叠加消费疲软，茅台加速C端突围。2022年i茅台上线，直销渠道占比从2018年的低位快速提升；公司明确“以消费者为中心、推进市场化转型”，聚焦客群、场景、服务三大转型，推出“自售+经销+代售+寄售”协同模式，进一步推动渠道向家庭/私人消费场景下沉。&lt;/p&gt;
&lt;h2 id="一政务酒时代国酒的政治背书1950s2012年"&gt;一、政务酒时代：国酒的“政治背书”（1950s–2012年）&lt;/h2&gt;
&lt;p&gt;1951年，地方政府合并三家私营酒厂成立茅台酒厂，周恩来将其定为国宴酒。1972年尼克松访华，茅台成为外交礼品；国庆、阅兵等重大活动，更是空运专供。早期销售主要通过国营糖酒公司和团购渠道，政务及国企采购占比近50%，批价随经济高增长一路飙升，2012年前曾超2000元。&lt;/p&gt;
&lt;p&gt;那时的茅台，喝的不仅是酒，更是身份象征。品牌溢价源于“政治光环”：稀缺+背书，终端供不应求。公司财报和历史报道均显示，这一阶段销售增速高达44%，完全依赖B端政务场景。&lt;/p&gt;
&lt;h2 id="二反腐危机与商务酒的被迫崛起20132021年"&gt;二、反腐危机与商务酒的被迫崛起（2013–2021年）&lt;/h2&gt;
&lt;p&gt;2012年底“八项规定”如同一场风暴。三公消费骤减，茅台直接“中招”。2013–2014年，股价从高点腰斩（约50%跌幅），批价从1200元+跌至最低830元左右，销售增速从44%骤降至2%。公司财报首次承认“史无前例的压力”。&lt;/p&gt;
&lt;p&gt;危机倒逼转型。2013年起，茅台提出“三个转型、五个转变”：从政务转向高端商务（企业宴请、礼赠）。经销商快速扩张，餐饮终端成为主力；2015年后停止大规模新增经销商，转向电商和系列酒下沉。商务场景取代政务，成为主要增量。&lt;/p&gt;
&lt;p&gt;2018年后，股价重回“股王”宝座。数据显示，商务酒让茅台学会市场化生存：从“铁饭碗”到“市场饭”，渠道利润虽压缩，却打开了更广阔的B端空间。&lt;/p&gt;
&lt;h2 id="三家庭酒的蝶变地产低谷下的c端突围2022年至今"&gt;三、家庭酒的蝶变：地产低谷下的C端突围（2022年至今）&lt;/h2&gt;
&lt;p&gt;2021年起，中国地产进入下行周期，高端消费疲软，茅台批价承压。2025年前三季度营收增速仅6.32%，全年目标首次下调至个位数。2026年3月，飞天批价一度跌破1600元，创近年新低。&lt;/p&gt;
&lt;p&gt;公司果断加速“一步到C”。2022年3月i茅台上线，当年直销收入暴增105.4%。2024年直销渠道收入748.43亿元，占比43.87%，毛利率95.33%（远高于批发代理的89.42%）；i茅台全年收入200.24亿元。2025年上半年，直销占比进一步稳定在44.8%左右。&lt;/p&gt;
&lt;p&gt;茅台战略全面升级，发布市场化运营方案，对个性化产品（陈年茅台、精品茅台、生肖酒、鼓乐飞天、小容量飞天等）实施“代售”模式，正式形成“自售+经销+代售+寄售”协同新格局。代售模式下，物权不转移，经销商无需预付全额货款，只需缴纳保证金，通过线上零售、线下门店、餐饮、私域等资源触达消费者，赚取约5%的服务费（佣金）。例如，一瓶53度500ml精品茅台零售价2299元，经销商可赚约115元。所有代售产品必须通过i茅台平台完成销售，原团购客户可扫专卖店专属二维码采购，实现“线上下单、线下提货”，主要服务散户客户。&lt;/p&gt;
&lt;p&gt;茅台负责人明确表示：“大家要主动求变，要服务好渠道商，推动实现角色转型，从传统‘卖货’角色转向承担茅台线下展示与服务的功能，形成厂商协同服务消费者的合力。”这一举措直接收回定价权、稳定非标产品价盘，减少渠道炒作，同时让经销商从“坐商”变为“行商”，轻资产、强服务，真正深耕终端。&lt;/p&gt;
&lt;p&gt;场景落地最明显：从商务宴请转向家宴、婚庆、寿宴、朋友小聚等私人庆祝。门店设“家宴专区”，i茅台用户占比持续提升，消费者反馈“家庭聚会用茅台比例上升”。90后、85后成为主力，即买即饮、小规格自用成为趋势。茅台从“政务酒的荣耀、商务酒的生存”，走向“家庭酒的归宿”——一杯酒，陪伴真实生活。&lt;/p&gt;
&lt;h2 id="四背后的逻辑与未来启示"&gt;四、背后的逻辑与未来启示&lt;/h2&gt;
&lt;p&gt;茅台的“三变”，本质是宏观周期倒逼微观转型：反腐“断奶”政务依赖，地产低谷催化C端觉醒。公司从政策红利转向消费者主权，完成商业逻辑回归。代售模式，正是这一转型的最新注脚——它把渠道利润从“投机性”变为“稳定性”，倒逼经销商深耕C端服务，而非囤货炒价。分析师指出，这将让有C端运营能力和圈层资源的经销商获得更多配额，纯粹“倒货”的旧模式自然出清。&lt;/p&gt;
&lt;p&gt;对行业而言，这是样本。白酒企业必须提前拥抱数字化、场景化，争夺年轻客群和私人消费。茅台“家庭酒”战略成败，关键看开瓶率与年轻化渗透。目前看，公司执行坚定：i茅台成为C端核心抓手，批价与股价在转型中逐步企稳。&lt;/p&gt;
&lt;h2 id="五结语"&gt;五、结语&lt;/h2&gt;
&lt;p&gt;政务酒是荣耀，商务酒是生存，家庭酒才是归宿。茅台的转型，不仅是企业故事，更是时代镜像——从象征权力到陪伴生活，折射中国消费从B端到C端的微观升级。未来，期待更多创新，让国酒真正香飘寻常百姓家。&lt;/p&gt;
&lt;p&gt;你的餐桌上，茅台是哪种酒？欢迎留言讨论。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://assets.yifeitao.com/2026/04/0ecbd4640fd6d4d0b8b76a3b1bbef4ca.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>曾经，茅台是国宴上的“政治正确”；如今，它悄悄走进千家万户的家宴、婚礼和朋友小聚。一瓶酒，三段人生：从政务酒到商务酒，再到家庭酒。茅台的30年转型，不是简单换渠道，而是主动适应宏观周期的自我进化——从“B端稀缺资源”到“C端真实消费”，从“卖酒”到“卖生活方式”。</p>
<p>据贵州茅台官方历史资料和财报复盘，早期政务采购占比一度接近50%。2012年底“八项规定”后，公司提出“三个转型、五个转变”，商务场景迅速崛起。2021年起地产周期低谷叠加消费疲软，茅台加速C端突围。2022年i茅台上线，直销渠道占比从2018年的低位快速提升；公司明确“以消费者为中心、推进市场化转型”，聚焦客群、场景、服务三大转型，推出“自售+经销+代售+寄售”协同模式，进一步推动渠道向家庭/私人消费场景下沉。</p>
<h2 id="一政务酒时代国酒的政治背书1950s2012年">一、政务酒时代：国酒的“政治背书”（1950s–2012年）</h2>
<p>1951年，地方政府合并三家私营酒厂成立茅台酒厂，周恩来将其定为国宴酒。1972年尼克松访华，茅台成为外交礼品；国庆、阅兵等重大活动，更是空运专供。早期销售主要通过国营糖酒公司和团购渠道，政务及国企采购占比近50%，批价随经济高增长一路飙升，2012年前曾超2000元。</p>
<p>那时的茅台，喝的不仅是酒，更是身份象征。品牌溢价源于“政治光环”：稀缺+背书，终端供不应求。公司财报和历史报道均显示，这一阶段销售增速高达44%，完全依赖B端政务场景。</p>
<h2 id="二反腐危机与商务酒的被迫崛起20132021年">二、反腐危机与商务酒的被迫崛起（2013–2021年）</h2>
<p>2012年底“八项规定”如同一场风暴。三公消费骤减，茅台直接“中招”。2013–2014年，股价从高点腰斩（约50%跌幅），批价从1200元+跌至最低830元左右，销售增速从44%骤降至2%。公司财报首次承认“史无前例的压力”。</p>
<p>危机倒逼转型。2013年起，茅台提出“三个转型、五个转变”：从政务转向高端商务（企业宴请、礼赠）。经销商快速扩张，餐饮终端成为主力；2015年后停止大规模新增经销商，转向电商和系列酒下沉。商务场景取代政务，成为主要增量。</p>
<p>2018年后，股价重回“股王”宝座。数据显示，商务酒让茅台学会市场化生存：从“铁饭碗”到“市场饭”，渠道利润虽压缩，却打开了更广阔的B端空间。</p>
<h2 id="三家庭酒的蝶变地产低谷下的c端突围2022年至今">三、家庭酒的蝶变：地产低谷下的C端突围（2022年至今）</h2>
<p>2021年起，中国地产进入下行周期，高端消费疲软，茅台批价承压。2025年前三季度营收增速仅6.32%，全年目标首次下调至个位数。2026年3月，飞天批价一度跌破1600元，创近年新低。</p>
<p>公司果断加速“一步到C”。2022年3月i茅台上线，当年直销收入暴增105.4%。2024年直销渠道收入748.43亿元，占比43.87%，毛利率95.33%（远高于批发代理的89.42%）；i茅台全年收入200.24亿元。2025年上半年，直销占比进一步稳定在44.8%左右。</p>
<p>茅台战略全面升级，发布市场化运营方案，对个性化产品（陈年茅台、精品茅台、生肖酒、鼓乐飞天、小容量飞天等）实施“代售”模式，正式形成“自售+经销+代售+寄售”协同新格局。代售模式下，物权不转移，经销商无需预付全额货款，只需缴纳保证金，通过线上零售、线下门店、餐饮、私域等资源触达消费者，赚取约5%的服务费（佣金）。例如，一瓶53度500ml精品茅台零售价2299元，经销商可赚约115元。所有代售产品必须通过i茅台平台完成销售，原团购客户可扫专卖店专属二维码采购，实现“线上下单、线下提货”，主要服务散户客户。</p>
<p>茅台负责人明确表示：“大家要主动求变，要服务好渠道商，推动实现角色转型，从传统‘卖货’角色转向承担茅台线下展示与服务的功能，形成厂商协同服务消费者的合力。”这一举措直接收回定价权、稳定非标产品价盘，减少渠道炒作，同时让经销商从“坐商”变为“行商”，轻资产、强服务，真正深耕终端。</p>
<p>场景落地最明显：从商务宴请转向家宴、婚庆、寿宴、朋友小聚等私人庆祝。门店设“家宴专区”，i茅台用户占比持续提升，消费者反馈“家庭聚会用茅台比例上升”。90后、85后成为主力，即买即饮、小规格自用成为趋势。茅台从“政务酒的荣耀、商务酒的生存”，走向“家庭酒的归宿”——一杯酒，陪伴真实生活。</p>
<h2 id="四背后的逻辑与未来启示">四、背后的逻辑与未来启示</h2>
<p>茅台的“三变”，本质是宏观周期倒逼微观转型：反腐“断奶”政务依赖，地产低谷催化C端觉醒。公司从政策红利转向消费者主权，完成商业逻辑回归。代售模式，正是这一转型的最新注脚——它把渠道利润从“投机性”变为“稳定性”，倒逼经销商深耕C端服务，而非囤货炒价。分析师指出，这将让有C端运营能力和圈层资源的经销商获得更多配额，纯粹“倒货”的旧模式自然出清。</p>
<p>对行业而言，这是样本。白酒企业必须提前拥抱数字化、场景化，争夺年轻客群和私人消费。茅台“家庭酒”战略成败，关键看开瓶率与年轻化渗透。目前看，公司执行坚定：i茅台成为C端核心抓手，批价与股价在转型中逐步企稳。</p>
<h2 id="五结语">五、结语</h2>
<p>政务酒是荣耀，商务酒是生存，家庭酒才是归宿。茅台的转型，不仅是企业故事，更是时代镜像——从象征权力到陪伴生活，折射中国消费从B端到C端的微观升级。未来，期待更多创新，让国酒真正香飘寻常百姓家。</p>
<p>你的餐桌上，茅台是哪种酒？欢迎留言讨论。</p>
]]></content:encoded><category>investment</category><category domain="tags">贵州茅台</category></item><item><title>不要过早优化工具</title><link>https://yifeitao.com/premature-tool-optimization/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><guid>https://yifeitao.com/premature-tool-optimization/</guid><description>&lt;p&gt;有些人，比如我，做事情，总是先去找工具。比如读书的话，去研究读书笔记的软件，安排工作的话，去研究GTD软件，写点东西，也去研究写作的软件。&lt;/p&gt;
&lt;p&gt;如果我们感兴趣，会看到无数的自媒体和KOL在介绍这些所谓的生产力工具，但是奇怪的是，这些天天介绍工具、钻研工具的人，往往他们最大的成就可能就是你看到的自媒体，而那些真正在各个领域做出很大成就的人，他们不会去强调自己用的什么工具，即使偶尔我们看到相关的信息，往往也发现他们用的工具平平无奇，甚至也有些无聊。&lt;/p&gt;
&lt;p&gt;比如之前有人问深度学习的大佬李沐用什么东西做笔记，他说用Typora，这甚至不是一个笔记软件，而只是一个markdown编辑器。&lt;/p&gt;
&lt;p&gt;也有大佬只用一个txt文档，管理自己一切的事务和信息，当然由此也衍生出他的一套方法论。&lt;/p&gt;
&lt;p&gt;对除了把研究工具当成自己事业的人，其他人应该先去做手头的事情，如果发现真的有一些痛点需要优化解决，再去寻找相应的工具，其实一般挑市场占有率最高的就对了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>有些人，比如我，做事情，总是先去找工具。比如读书的话，去研究读书笔记的软件，安排工作的话，去研究GTD软件，写点东西，也去研究写作的软件。</p>
<p>如果我们感兴趣，会看到无数的自媒体和KOL在介绍这些所谓的生产力工具，但是奇怪的是，这些天天介绍工具、钻研工具的人，往往他们最大的成就可能就是你看到的自媒体，而那些真正在各个领域做出很大成就的人，他们不会去强调自己用的什么工具，即使偶尔我们看到相关的信息，往往也发现他们用的工具平平无奇，甚至也有些无聊。</p>
<p>比如之前有人问深度学习的大佬李沐用什么东西做笔记，他说用Typora，这甚至不是一个笔记软件，而只是一个markdown编辑器。</p>
<p>也有大佬只用一个txt文档，管理自己一切的事务和信息，当然由此也衍生出他的一套方法论。</p>
<p>对除了把研究工具当成自己事业的人，其他人应该先去做手头的事情，如果发现真的有一些痛点需要优化解决，再去寻找相应的工具，其实一般挑市场占有率最高的就对了。</p>
]]></content:encoded><category>viewpoint</category></item><item><title>别被“成功学”的皮囊骗了：重读《世界上最伟大的推销员》的系统思考</title><link>https://yifeitao.com/the-greatest-salesman-in-the-world/</link><pubDate>Tue, 23 Dec 2025 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-greatest-salesman-in-the-world/</guid><description>&lt;h1 id="别被成功学的皮囊骗了重读世界上最伟大的推销员的系统思考"&gt;别被“成功学”的皮囊骗了：重读《世界上最伟大的推销员》的系统思考&lt;/h1&gt;
&lt;p&gt;&lt;img src="https://img10.360buyimg.com/pcpubliccms/s1440x1440_jfs/t1/127019/25/12454/217073/5f5ed711E7fa2c778/12bb795608113640.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;你在职场和商业世界里，有些书是被贴错标签的。&lt;/p&gt;
&lt;p&gt;《世界上最伟大的推销员》往往会被扔进“机场成功学”或“廉价鸡汤”的废纸篓。但如果我们剥开它那层略显浮夸的寓言外壳，去观察作者奥格·曼狄诺构建的内核，你会发现这其实是一套关于“认知系统重塑”的底层逻辑。&lt;/p&gt;
&lt;p&gt;这本书是我妈在以前在刚学卖保险的时候，我送给她的，我只是照着畅销书榜单买的，其实我也没看过。去年偶然重读这本书，我发现了一些更有意思的视角：关于自我洗脑的科学、原则与经验的博弈，以及现代企业制度下的永生观。&lt;/p&gt;
&lt;h2 id="1-寓言经文与心理暗示的安装包"&gt;1. 寓言、经文与“心理暗示”的安装包&lt;/h2&gt;
&lt;p&gt;很多人吐槽这本书的文学风格——大量的类圣经、类佛经排比句，甚至带点“忽悠”的味道。你可能会问：“这不就是传销早会上最爱喊的口号么？”&lt;/p&gt;
&lt;p&gt;但从系统论的角度看，这种风格并非无意义的煽情。人类的潜意识其实是不讲逻辑的，它更像是一个只接受“强信号”的操作系统。这种带有宗教色彩、近乎偏执的语言，本质上是一个“心理暗示的安装包”。它通过高度重复的节奏，绕过你理性防御的防火墙，直接修改你的底层执行逻辑。&lt;/p&gt;
&lt;h2 id="2-笨办法才是最高效的系统重塑"&gt;2. “笨办法”才是最高效的系统重塑&lt;/h2&gt;
&lt;p&gt;书中提到了一个极其反直觉的要求：每一卷羊皮卷要连续读三十天。&lt;/p&gt;
&lt;p&gt;在追求即时反馈的今天，这种“三十天读一卷”的做法简直是反人类的。但这种“笨办法”背后，蕴含着习惯内化的真谛：所有的原则，如果不能进入潜意识并与自我融为一体，就永远只是“外部信息”，而非“能力”。&lt;/p&gt;
&lt;p&gt;与其说这是在阅读，不如说这是一种“自我洗脑”的工程学过程。通过海量的、高频的重复，将某种特定的处世哲学（比如“活在当下”、“爱”和“行动力”）固化为一种条件反射。&lt;strong&gt;当行为不再需要耗费意志力去驱动时，习惯就成了开启成功的钥匙 。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="3-经验会贬值但原则是第一性原理"&gt;3. 经验会贬值，但原则是第一性原理&lt;/h2&gt;
&lt;p&gt;书中海菲与老人的对话中，有一个观点深得我心：经验的价值往往被高估了。&lt;/p&gt;
&lt;p&gt;经验往往带有强烈的时代局限性和场景依赖。人老的时候，开口讲的多是糊涂话，因为他们还在用旧时代的地图寻找新世界的出口。而书中强调的“羊皮卷原则”，则是更接近商业和人生“第一性原理”的东西。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关于行动&lt;/strong&gt;： “我现在就付诸行动”。这不是口号，而是对拖延症的系统级截断。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关于情绪&lt;/strong&gt;： 传统的说教是“控制情绪”，但更高阶的见解是“察觉情绪”。你无法控制潮汐，但你可以为自己创造天气。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关于门槛&lt;/strong&gt;： 每个人都要去“敲门”，但真正的核心在于，你是否已经“想明白自己该去敲开哪扇门”。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-从商业王国到现代企业制度"&gt;4. 从“商业王国”到“现代企业制度”&lt;/h2&gt;
&lt;p&gt;书中的故事背景是古代的商业王国，但如果我们用现代视角去解读海菲王国的消亡，会有一个有趣的发现：&lt;/p&gt;
&lt;p&gt;在寓言里，王国随着主人的退休而空空如也。但在现代企业制度中，股东可以变，但企业是永生的。这意味着，&lt;strong&gt;我们追求的不应只是个人的成功，而是建立一套可以持续运转、不依赖于特定个体的“系统”。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这种跨越时空的对比，反映了商业文明的演进。海菲最后寻找传人的过程，其实也是在寻找那颗能将“原则种子”传播下去的灵魂 。&lt;/p&gt;
&lt;h2 id="5-入戏与出戏"&gt;5. 入戏与出戏&lt;/h2&gt;
&lt;p&gt;读这类书，&lt;strong&gt;最怕的是“全盘接受”后的盲目狂热，或者“全盘否定”后的傲慢偏见。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最好的状态应该是 “入戏又出戏”。一方面，积极汲取其中关于习惯养成和行动力的精髓，把它当成灌溉心灵的“种子”；另一方面，保持现代商业逻辑的冷静，用批判性思维去“修剪”那些过时的逻辑 。&lt;/p&gt;
&lt;p&gt;毕竟，真正的富有是精神上的，而非仅仅是钱包的厚度。在这个浮躁的时代，做一个“好的理念的推销员”，或许才是我们每个人都该上的第一课。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;思考题： 如果你要为自己的认知系统写一个“羊皮卷”，你的第一条原则会是什么？欢迎在评论区分享。&lt;/p&gt;</description><content:encoded><![CDATA[<h1 id="别被成功学的皮囊骗了重读世界上最伟大的推销员的系统思考">别被“成功学”的皮囊骗了：重读《世界上最伟大的推销员》的系统思考</h1>
<p><img src="https://img10.360buyimg.com/pcpubliccms/s1440x1440_jfs/t1/127019/25/12454/217073/5f5ed711E7fa2c778/12bb795608113640.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>你在职场和商业世界里，有些书是被贴错标签的。</p>
<p>《世界上最伟大的推销员》往往会被扔进“机场成功学”或“廉价鸡汤”的废纸篓。但如果我们剥开它那层略显浮夸的寓言外壳，去观察作者奥格·曼狄诺构建的内核，你会发现这其实是一套关于“认知系统重塑”的底层逻辑。</p>
<p>这本书是我妈在以前在刚学卖保险的时候，我送给她的，我只是照着畅销书榜单买的，其实我也没看过。去年偶然重读这本书，我发现了一些更有意思的视角：关于自我洗脑的科学、原则与经验的博弈，以及现代企业制度下的永生观。</p>
<h2 id="1-寓言经文与心理暗示的安装包">1. 寓言、经文与“心理暗示”的安装包</h2>
<p>很多人吐槽这本书的文学风格——大量的类圣经、类佛经排比句，甚至带点“忽悠”的味道。你可能会问：“这不就是传销早会上最爱喊的口号么？”</p>
<p>但从系统论的角度看，这种风格并非无意义的煽情。人类的潜意识其实是不讲逻辑的，它更像是一个只接受“强信号”的操作系统。这种带有宗教色彩、近乎偏执的语言，本质上是一个“心理暗示的安装包”。它通过高度重复的节奏，绕过你理性防御的防火墙，直接修改你的底层执行逻辑。</p>
<h2 id="2-笨办法才是最高效的系统重塑">2. “笨办法”才是最高效的系统重塑</h2>
<p>书中提到了一个极其反直觉的要求：每一卷羊皮卷要连续读三十天。</p>
<p>在追求即时反馈的今天，这种“三十天读一卷”的做法简直是反人类的。但这种“笨办法”背后，蕴含着习惯内化的真谛：所有的原则，如果不能进入潜意识并与自我融为一体，就永远只是“外部信息”，而非“能力”。</p>
<p>与其说这是在阅读，不如说这是一种“自我洗脑”的工程学过程。通过海量的、高频的重复，将某种特定的处世哲学（比如“活在当下”、“爱”和“行动力”）固化为一种条件反射。<strong>当行为不再需要耗费意志力去驱动时，习惯就成了开启成功的钥匙 。</strong></p>
<h2 id="3-经验会贬值但原则是第一性原理">3. 经验会贬值，但原则是第一性原理</h2>
<p>书中海菲与老人的对话中，有一个观点深得我心：经验的价值往往被高估了。</p>
<p>经验往往带有强烈的时代局限性和场景依赖。人老的时候，开口讲的多是糊涂话，因为他们还在用旧时代的地图寻找新世界的出口。而书中强调的“羊皮卷原则”，则是更接近商业和人生“第一性原理”的东西。</p>
<ul>
<li>
<p><strong>关于行动</strong>： “我现在就付诸行动”。这不是口号，而是对拖延症的系统级截断。</p>
</li>
<li>
<p><strong>关于情绪</strong>： 传统的说教是“控制情绪”，但更高阶的见解是“察觉情绪”。你无法控制潮汐，但你可以为自己创造天气。</p>
</li>
<li>
<p><strong>关于门槛</strong>： 每个人都要去“敲门”，但真正的核心在于，你是否已经“想明白自己该去敲开哪扇门”。</p>
</li>
</ul>
<h2 id="4-从商业王国到现代企业制度">4. 从“商业王国”到“现代企业制度”</h2>
<p>书中的故事背景是古代的商业王国，但如果我们用现代视角去解读海菲王国的消亡，会有一个有趣的发现：</p>
<p>在寓言里，王国随着主人的退休而空空如也。但在现代企业制度中，股东可以变，但企业是永生的。这意味着，<strong>我们追求的不应只是个人的成功，而是建立一套可以持续运转、不依赖于特定个体的“系统”。</strong></p>
<p>这种跨越时空的对比，反映了商业文明的演进。海菲最后寻找传人的过程，其实也是在寻找那颗能将“原则种子”传播下去的灵魂 。</p>
<h2 id="5-入戏与出戏">5. 入戏与出戏</h2>
<p>读这类书，<strong>最怕的是“全盘接受”后的盲目狂热，或者“全盘否定”后的傲慢偏见。</strong></p>
<p>最好的状态应该是 “入戏又出戏”。一方面，积极汲取其中关于习惯养成和行动力的精髓，把它当成灌溉心灵的“种子”；另一方面，保持现代商业逻辑的冷静，用批判性思维去“修剪”那些过时的逻辑 。</p>
<p>毕竟，真正的富有是精神上的，而非仅仅是钱包的厚度。在这个浮躁的时代，做一个“好的理念的推销员”，或许才是我们每个人都该上的第一课。</p>
<hr>
<p>思考题： 如果你要为自己的认知系统写一个“羊皮卷”，你的第一条原则会是什么？欢迎在评论区分享。</p>
]]></content:encoded><category>reading</category><category domain="tags">读书笔记</category></item><item><title>《代码大全》笔记</title><link>https://yifeitao.com/code-complete/</link><pubDate>Wed, 17 Dec 2025 00:00:00 +0000</pubDate><guid>https://yifeitao.com/code-complete/</guid><description>&lt;h1 id="代码大全"&gt;代码大全&lt;/h1&gt;
&lt;h2 id="什么是代码大全"&gt;什么是代码大全？&lt;/h2&gt;
&lt;p&gt;代码大全是一本书，讲的是如何写代码，与具体的编程语言无关，而是以方法论为主，很厚，九百多页的砖头。&lt;/p&gt;
&lt;p&gt;2008年的时候，我在成都某新华书店第一次看到一本叫《代码大全》的书，我还以为是一本摘抄了各种代码的类似《食谱大全》的书，因此都懒得去翻开看一下，因为觉得抄代码有互联网就足够了，这件事可能说明了两个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“代码大全”这个书名翻译得太烂；&lt;/li&gt;
&lt;li&gt;我当年很无知。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;《Code Complete》实在是应该翻译为《代码完成》比较合适，据第二版的译者说，因为第一版翻译为《代码大全》，他们也只好将错就错。市面上的计算机类书籍汗牛充栋，大多是针对具体编程语言的，要不就是讲需求分析、软件设计、软件测试，直接讲软件构建的书反而很少，很多人也学了一些软件工程的皮毛，但是代码写出来还是不忍卒读，用本书的观点来说，只有软件构建——直白一点说叫写代码，才是一个程序员才会确实去做的事，至于其他部分，往往都伴随着谎言。&lt;/p&gt;
&lt;p&gt;俗话说“走都不会走，还想学跑？”，一个程序员，先老老实实把自己写代码的水平提高，实在是最基本也最重要的，在学校教育经历中，一般人写的都是“一次运行，用完就扔”的学生代码，与做软件产品的要求相距甚远，而这本书，在教你怎么把代码写好这方面，真是事无巨细，处处闪耀着真知灼见，从这个角度来看，叫它大全，也不为错。比如我的编程入门教材是谭浩强的《C程序设计》，里面的变量命名风格是单字母风格，而本书则花了一章来讲变量名的问题，对于单字母门派出来的人，实在是一剂良药。&lt;/p&gt;
&lt;p&gt;我从大概2015年买了本英文版读，读了5章后停下来，直到今年（2019）把中文版读完，而这本书的英文版出版于2003年。十几年过去了，书中很多方法论已经是业界公论。但方法论说得溜是当代程序员的特点，而实践水平倒是不见得有什么提升，热衷于谈框架、谈机器学习，但好的代码依然少见。&lt;/p&gt;
&lt;p&gt;这份笔记会补充一些我自己近年的思考与近年的技术方法。&lt;/p&gt;
&lt;h1 id="第1部分-打好基础"&gt;第1部分 打好基础&lt;/h1&gt;
&lt;p&gt;所谓磨刀不误砍柴功，要做什么是一个看似简单，实则复杂的问题。&lt;/p&gt;
&lt;h2 id="第1章-欢迎进入软件构建的世界"&gt;第1章 欢迎进入软件构建的世界&lt;/h2&gt;
&lt;p&gt;一般软件工程的书会把过程划分的很清楚，软件开发的活动包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;问题定义&lt;/li&gt;
&lt;li&gt;需求开发&lt;/li&gt;
&lt;li&gt;构建计划&lt;/li&gt;
&lt;li&gt;软件架构&lt;/li&gt;
&lt;li&gt;详细设计&lt;/li&gt;
&lt;li&gt;编码和调试&lt;/li&gt;
&lt;li&gt;单元测试&lt;/li&gt;
&lt;li&gt;集成测试&lt;/li&gt;
&lt;li&gt;集成&lt;/li&gt;
&lt;li&gt;系统测试&lt;/li&gt;
&lt;li&gt;修正维护&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;代码构建的核心是编码和调试，为了编码和调试，会或多或少牵涉到其他活动，非正式开发的时候，我们可能直接坐下来敲代码，上面的所有活动都打包了。而软件构建，讲的大概是敲代码的时候干的那些事情，你如果真的敲过代码，就知道大部分时间其实你是对着屏幕发呆状而不是在敲键盘（只有电影里的黑客才不听的噼里啪啦敲键盘），要做的事情包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检查准备工作是否已经做好，可以安心敲代码了&lt;/li&gt;
&lt;li&gt;想好如何测试代码&lt;/li&gt;
&lt;li&gt;设计和实现类和函数&lt;/li&gt;
&lt;li&gt;创建变量和命名常量&lt;/li&gt;
&lt;li&gt;选择控制结构，组织语句&lt;/li&gt;
&lt;li&gt;单元测试，集成测试，调试代码&lt;/li&gt;
&lt;li&gt;相互Review代码&lt;/li&gt;
&lt;li&gt;通过格式化和好的注释来打磨代码&lt;/li&gt;
&lt;li&gt;集成分别开发的组件&lt;/li&gt;
&lt;li&gt;修改代码使其运行更快占用资源更少&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;为什么软件构建很重要？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;软件构建是软件开发的主要活动——大部分时间都在码代码&lt;/li&gt;
&lt;li&gt;软件构建是软件开发的中心活动——没有代码，再多的文档都是扯淡&lt;/li&gt;
&lt;li&gt;关注软件构建可以极大提高每个程序员的生产力——大部分的程序员基本功不过关&lt;/li&gt;
&lt;li&gt;软构建的产品——代码，经常是软件唯一精确的描述——文档都是骗人的&lt;/li&gt;
&lt;li&gt;软件构建是唯一保证会做的工作——再懒也不能用PPT开发&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="第2章-用隐喻来更充分地理解软件开发"&gt;第2章 用隐喻来更充分地理解软件开发&lt;/h2&gt;
&lt;h3 id="21-隐喻metaphors的重要性"&gt;2.1 隐喻(Metaphors)的重要性&lt;/h3&gt;
&lt;p&gt;人类理解事物是从已知到未知的，作者举了科学史上很多例子说明metaphor的重要性，我觉得，能打好一个比方其实是很难的，善于打比方的人是最聪明的一类人，这可能需要大脑回路比较丰富才行。对一个事物理解越深刻，想出来的比喻就会越贴切，或者说模型就会越精确。&lt;/p&gt;
&lt;h3 id="22-如何使用软件的隐喻"&gt;2.2 如何使用软件的隐喻&lt;/h3&gt;
&lt;p&gt;比喻不是算法，不会给出明确的指引，而是具有启发性的，会引导你思考的方向。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;帮你洞察问题和处理&lt;/li&gt;
&lt;li&gt;帮你找到更好的做事情的方式&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="23-一般的软件隐喻"&gt;2.3 一般的软件隐喻&lt;/h3&gt;
&lt;h4 id="软件书写写代码"&gt;软件书写：写代码&lt;/h4&gt;
&lt;p&gt;写代码这个说法很常见，是借喻写文章而来的，这种借喻有很多不恰当的地方，比如代码更易于修改，基本上很难有“完成”的一天，代码不强调原创而强调复用。&lt;/p&gt;
&lt;p&gt;基本上，这是一个糟糕的借喻，只对写很小的软件适用。&lt;/p&gt;
&lt;h4 id="软件农场种植系统"&gt;软件农场：种植系统&lt;/h4&gt;
&lt;p&gt;软件系统确实有不断增长的一面，但却不是播了种子施肥浇水等收获的概念。&lt;/p&gt;
&lt;h4 id="软件牡蛎农场系统增生"&gt;软件牡蛎农场：系统增生&lt;/h4&gt;
&lt;p&gt;这个隐喻说的是渐进增强，像牡蛎一样，在沙粒上一层层裹碳酸钙，最后长成珍珠。这个概念近年来越来越火了，不单软件工程提，关于创业的理论也提。我个人的体会是：对需求不明的项目，一个基本的初步实现是讨论的基础，也是信心的来源。&lt;/p&gt;
&lt;h4 id="软件构建建造软件"&gt;软件构建：建造软件&lt;/h4&gt;
&lt;p&gt;这是最重要的一个隐喻了，它源自建筑行业，开发软件和修建筑有很多相似点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;复杂度和尺寸的影响很大&lt;/li&gt;
&lt;li&gt;复用，而不是从头实现&lt;/li&gt;
&lt;li&gt;个性化定制&lt;/li&gt;
&lt;li&gt;好的规划能让后续细节的调整更容易&lt;/li&gt;
&lt;li&gt;不同的项目使用不同的方法&lt;/li&gt;
&lt;li&gt;越晚修改代价越大&lt;/li&gt;
&lt;li&gt;对超大型项目，动手构建前的准备极为重要&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="应用软件技术智力工具箱"&gt;应用软件技术：智力工具箱&lt;/h4&gt;
&lt;p&gt;工具箱是一个很好的比喻，以免我们迷失在某个方法论或技术中，“拿个锤子，看什么都像钉子”，好的匠人，必然是有一个好的工具箱的，面对具体的情况，使用不同的工具。一个程序员应当不断扩充自己的工具箱。&lt;/p&gt;</description><content:encoded><![CDATA[<h1 id="代码大全">代码大全</h1>
<h2 id="什么是代码大全">什么是代码大全？</h2>
<p>代码大全是一本书，讲的是如何写代码，与具体的编程语言无关，而是以方法论为主，很厚，九百多页的砖头。</p>
<p>2008年的时候，我在成都某新华书店第一次看到一本叫《代码大全》的书，我还以为是一本摘抄了各种代码的类似《食谱大全》的书，因此都懒得去翻开看一下，因为觉得抄代码有互联网就足够了，这件事可能说明了两个问题：</p>
<ul>
<li>“代码大全”这个书名翻译得太烂；</li>
<li>我当年很无知。</li>
</ul>
<p>《Code Complete》实在是应该翻译为《代码完成》比较合适，据第二版的译者说，因为第一版翻译为《代码大全》，他们也只好将错就错。市面上的计算机类书籍汗牛充栋，大多是针对具体编程语言的，要不就是讲需求分析、软件设计、软件测试，直接讲软件构建的书反而很少，很多人也学了一些软件工程的皮毛，但是代码写出来还是不忍卒读，用本书的观点来说，只有软件构建——直白一点说叫写代码，才是一个程序员才会确实去做的事，至于其他部分，往往都伴随着谎言。</p>
<p>俗话说“走都不会走，还想学跑？”，一个程序员，先老老实实把自己写代码的水平提高，实在是最基本也最重要的，在学校教育经历中，一般人写的都是“一次运行，用完就扔”的学生代码，与做软件产品的要求相距甚远，而这本书，在教你怎么把代码写好这方面，真是事无巨细，处处闪耀着真知灼见，从这个角度来看，叫它大全，也不为错。比如我的编程入门教材是谭浩强的《C程序设计》，里面的变量命名风格是单字母风格，而本书则花了一章来讲变量名的问题，对于单字母门派出来的人，实在是一剂良药。</p>
<p>我从大概2015年买了本英文版读，读了5章后停下来，直到今年（2019）把中文版读完，而这本书的英文版出版于2003年。十几年过去了，书中很多方法论已经是业界公论。但方法论说得溜是当代程序员的特点，而实践水平倒是不见得有什么提升，热衷于谈框架、谈机器学习，但好的代码依然少见。</p>
<p>这份笔记会补充一些我自己近年的思考与近年的技术方法。</p>
<h1 id="第1部分-打好基础">第1部分 打好基础</h1>
<p>所谓磨刀不误砍柴功，要做什么是一个看似简单，实则复杂的问题。</p>
<h2 id="第1章-欢迎进入软件构建的世界">第1章 欢迎进入软件构建的世界</h2>
<p>一般软件工程的书会把过程划分的很清楚，软件开发的活动包括：</p>
<ul>
<li>问题定义</li>
<li>需求开发</li>
<li>构建计划</li>
<li>软件架构</li>
<li>详细设计</li>
<li>编码和调试</li>
<li>单元测试</li>
<li>集成测试</li>
<li>集成</li>
<li>系统测试</li>
<li>修正维护</li>
</ul>
<p>代码构建的核心是编码和调试，为了编码和调试，会或多或少牵涉到其他活动，非正式开发的时候，我们可能直接坐下来敲代码，上面的所有活动都打包了。而软件构建，讲的大概是敲代码的时候干的那些事情，你如果真的敲过代码，就知道大部分时间其实你是对着屏幕发呆状而不是在敲键盘（只有电影里的黑客才不听的噼里啪啦敲键盘），要做的事情包括：</p>
<ul>
<li>检查准备工作是否已经做好，可以安心敲代码了</li>
<li>想好如何测试代码</li>
<li>设计和实现类和函数</li>
<li>创建变量和命名常量</li>
<li>选择控制结构，组织语句</li>
<li>单元测试，集成测试，调试代码</li>
<li>相互Review代码</li>
<li>通过格式化和好的注释来打磨代码</li>
<li>集成分别开发的组件</li>
<li>修改代码使其运行更快占用资源更少</li>
</ul>
<p>为什么软件构建很重要？</p>
<ul>
<li>软件构建是软件开发的主要活动——大部分时间都在码代码</li>
<li>软件构建是软件开发的中心活动——没有代码，再多的文档都是扯淡</li>
<li>关注软件构建可以极大提高每个程序员的生产力——大部分的程序员基本功不过关</li>
<li>软构建的产品——代码，经常是软件唯一精确的描述——文档都是骗人的</li>
<li>软件构建是唯一保证会做的工作——再懒也不能用PPT开发</li>
</ul>
<h2 id="第2章-用隐喻来更充分地理解软件开发">第2章 用隐喻来更充分地理解软件开发</h2>
<h3 id="21-隐喻metaphors的重要性">2.1 隐喻(Metaphors)的重要性</h3>
<p>人类理解事物是从已知到未知的，作者举了科学史上很多例子说明metaphor的重要性，我觉得，能打好一个比方其实是很难的，善于打比方的人是最聪明的一类人，这可能需要大脑回路比较丰富才行。对一个事物理解越深刻，想出来的比喻就会越贴切，或者说模型就会越精确。</p>
<h3 id="22-如何使用软件的隐喻">2.2 如何使用软件的隐喻</h3>
<p>比喻不是算法，不会给出明确的指引，而是具有启发性的，会引导你思考的方向。</p>
<ul>
<li>帮你洞察问题和处理</li>
<li>帮你找到更好的做事情的方式</li>
</ul>
<h3 id="23-一般的软件隐喻">2.3 一般的软件隐喻</h3>
<h4 id="软件书写写代码">软件书写：写代码</h4>
<p>写代码这个说法很常见，是借喻写文章而来的，这种借喻有很多不恰当的地方，比如代码更易于修改，基本上很难有“完成”的一天，代码不强调原创而强调复用。</p>
<p>基本上，这是一个糟糕的借喻，只对写很小的软件适用。</p>
<h4 id="软件农场种植系统">软件农场：种植系统</h4>
<p>软件系统确实有不断增长的一面，但却不是播了种子施肥浇水等收获的概念。</p>
<h4 id="软件牡蛎农场系统增生">软件牡蛎农场：系统增生</h4>
<p>这个隐喻说的是渐进增强，像牡蛎一样，在沙粒上一层层裹碳酸钙，最后长成珍珠。这个概念近年来越来越火了，不单软件工程提，关于创业的理论也提。我个人的体会是：对需求不明的项目，一个基本的初步实现是讨论的基础，也是信心的来源。</p>
<h4 id="软件构建建造软件">软件构建：建造软件</h4>
<p>这是最重要的一个隐喻了，它源自建筑行业，开发软件和修建筑有很多相似点</p>
<ul>
<li>复杂度和尺寸的影响很大</li>
<li>复用，而不是从头实现</li>
<li>个性化定制</li>
<li>好的规划能让后续细节的调整更容易</li>
<li>不同的项目使用不同的方法</li>
<li>越晚修改代价越大</li>
<li>对超大型项目，动手构建前的准备极为重要</li>
</ul>
<h4 id="应用软件技术智力工具箱">应用软件技术：智力工具箱</h4>
<p>工具箱是一个很好的比喻，以免我们迷失在某个方法论或技术中，“拿个锤子，看什么都像钉子”，好的匠人，必然是有一个好的工具箱的，面对具体的情况，使用不同的工具。一个程序员应当不断扩充自己的工具箱。</p>
<h4 id="合成隐喻">合成隐喻</h4>
<p>隐喻是启发式的，只要有利于说明我们的问题，都没有必要拒绝。</p>
<h2 id="第3章-三思而后行前期准备">第3章 三思而后行：前期准备</h2>
<p>不同规模的构建，需要不同程度的准备工作，项目的成败，早已埋下伏笔。构建一般占项目时间的65%，而糟糕的准备工作会让构建时间增加两三倍。</p>
<h3 id="31-前期准备的重要性">3.1 前期准备的重要性</h3>
<p>高质量的软件来自高质量的实践，如何保证质量？</p>
<ul>
<li>前期：关注需求、设计。</li>
<li>中期：关注构建。</li>
<li>后期：关注测试。</li>
</ul>
<p>本书重点关注中期，但是在开始构建之前，需要弄清前期准备做到了什么程度，贸然开场容易悲剧。</p>
<h4 id="现代软件开发是否需要前期准备">现代软件开发是否需要前期准备？</h4>
<p>需要。前期准备可以降低风险，不同的项目可能需要不同的前期准备实践，但不能没有。</p>
<h4 id="不完整的前期准备的理由">不完整的前期准备的理由</h4>
<ul>
<li>开发者没有经验——那就去学啊。</li>
<li>按捺不住写代码的心——多碰几次壁。</li>
<li>上级让你赶紧写代码！——拒绝上级；假装在编程；教育上级；跳槽。</li>
</ul>
<h4 id="构建之前做好前期准备的理由">构建之前做好前期准备的理由</h4>
<p>你可以拿它来教育别人。</p>
<h5 id="诉诸逻辑">诉诸逻辑</h5>
<ul>
<li>需要弄清楚到底想构建个啥。</li>
<li>需要弄清楚怎么去构建系统。</li>
</ul>
<h5 id="诉诸类比">诉诸类比</h5>
<ul>
<li>造房子</li>
<li>软件开发食物链：程序员在食物链尽头。</li>
</ul>
<h5 id="诉诸数据">诉诸数据</h5>
<ul>
<li>最后阶段更改的代价是10~100倍。</li>
</ul>
<h5 id="老板敏捷测试">老板敏捷测试</h5>
<p>自我实现预言：</p>
<ul>
<li>我们必须立即开始编码因为还有很多调试工作要做。</li>
<li>我们没有计划多少时间去测试因为不会找到太多的缺陷。</li>
<li>我们充分研究了需求和设计，在编码和调试的时候不会遇到大的问题。</li>
</ul>
<h3 id="32-确定你开发的软件类型">3.2 确定你开发的软件类型</h3>
<p>针对不同的软件类型，需要不同的生命周期模型:</p>
<ul>
<li>商业系统</li>
<li>关键任务系统</li>
<li>嵌入式性命攸关系统</li>
</ul>
<h4 id="迭代方法在前期准备中的作用">迭代方法在前期准备中的作用</h4>
<ul>
<li>先做80%的需求分析，则类似串行</li>
<li>先做20%的需求分析，则类似迭代</li>
</ul>
<h4 id="在迭代方法与串行方法间的选择">在迭代方法与串行方法间的选择</h4>
<ul>
<li>需求是否明确？</li>
<li>设计是否复杂？</li>
<li>团队对领域是否熟悉？</li>
<li>项目风险大不大？</li>
<li>更改需求、设计的代价如何？</li>
</ul>
<h3 id="33-问题定义">3.3 问题定义</h3>
<ul>
<li>好的问题定义弄清楚问题是什么，而不要考虑实现。</li>
<li>问题定义在需求分析之前，使用用户语言描述。</li>
<li>最好的解决方案可能不需要写软件。</li>
<li>除非是为了解决计算机系统问题，否则不使用计算机语言。</li>
<li>问题定义出错的代价：浪费了时间，没有解决真正的问题。</li>
</ul>
<h3 id="34-需求分析">3.4 需求分析</h3>
<p>需求分析讨论软件怎么解决问题，是解决方案的第一步。</p>
<h4 id="为什么需要正式的需求">为什么需要正式的需求？</h4>
<ul>
<li>确保用户而非程序员决定系统功能，程序员明确知道用户需要什么。</li>
<li>避免争吵，以需求为准。</li>
<li>好的需求会减少开始构建后的变更。</li>
</ul>
<h4 id="稳定需求的神话">稳定需求的神话</h4>
<p>稳定的需求是软件开发的圣杯。</p>
<ul>
<li>用户往往不能准备描述需求。</li>
<li>只有充分使用系统，才能深入理解系统。</li>
<li>开发过程会使用户更好的理解系统，这也是需求变更的主要来源。</li>
<li>典型的系统会有25%的需求变更，花费70%~85时间重做。</li>
</ul>
<h4 id="在构建时应对需求变化">在构建时应对需求变化</h4>
<ul>
<li>检查需求分析的质量，如有问题，尽早返工。</li>
<li>确保每个人明白需求变更的代价，正确应对“特性中毒者”。</li>
<li>建立变更控制过程，做到程序员顾客都满意。</li>
<li>使用能适应需求变更的开发方法：原型进化、渐进交付、小开发周期。</li>
<li>放弃项目。</li>
<li>始终关注项目的商业价值。</li>
</ul>
<h3 id="35-架构设计">3.5 架构设计</h3>
<p>架构设计，一般对应“概要设计文档”，架构决定了系统的“概念完整”。架构设计进行工作分解，直至程序员可以上手工作。</p>
<h2 id="第4章-关键构建决策">第4章 关键构建决策</h2>
<h3 id="41-选择编程语言">4.1 选择编程语言</h3>
<p>语言选择事关效率，语言熟悉——效率高30%，熟练工——3倍效率。一定程度上，思想表达能力取决于词汇量。 表达能力：C,1;C++,2.5;Python,6. 不要使用了一门新的语言，却不使用它好的机制，还是完全用旧语言的模式编程。 语言描述：</p>
<ul>
<li>Ada 数据抽象，信息隐藏，用于军队、航空航天。</li>
<li>汇编 处理器相关，代码体积或速度有严格限制时应用。</li>
<li>C 普适，中等语言，可移植的汇编（指针、地址、位运算、弱类型），高级特性：结构体，控制流，机器独立，丰富的运算符。</li>
<li>C++ C基础上的面向对象语言，类、多态、异常处理、模板、类型控制、标准库</li>
<li>C# 类似C、C++、Java（个人认为C#语言本身是很优秀的，融合了部分函数式编程的思想，但是社区支持比Java略差）</li>
<li>Cobol 通用商业语言（银行还在用）。</li>
<li>Fortran 最早的高级语言之一，过去科学计算和教学比较多使用（现在Python用得更多吧）。</li>
<li>Java （最早的虚拟机语言，社区庞大。）</li>
<li>JavaScript （无处不在了）</li>
<li>Perl 擅长字符处理（跟Python不同的哲学）</li>
<li>PHP （世界上最好的语言😀）</li>
<li>Python （万能胶水，随着机器学习而变成了显学）</li>
<li>SQL 结构化查询语言，主要用于数据库。</li>
<li>Visual Basic （拉控件编程的经典）</li>
</ul>
<p>最近几年的新语言：</p>
<ul>
<li>go C++替代之一，代表作品docker</li>
<li>rust C++替代之二</li>
<li>dart JavaScript 替代之一，用于框架flutter</li>
</ul>
<h3 id="42-编程约定">4.2 编程约定</h3>
<p>高层的架构与底层实现要保持一致，统一的规范不但利于团队合作，还可以解放脑力。</p>
<h3 id="43-你在技术浪潮中的位置">4.3 你在技术浪潮中的位置</h3>
<p>处在一个技术的早期，风险与额外的收益并存，技术成熟期则风险小，中规中矩。 注意Program in a language 和 Program <strong>into</strong> a language的区别，语言提供了工具箱，但是不要局限于语言的工具箱。</p>
<p>如果能多学一些语言，再融汇贯通，就能理解语言的精髓，而不局限于语言。可参考：</p>
<ul>
<li><a href="https://www.coursera.org/learn/programming-languages"
   rel="noopener noreferrer" target="_blank" class="external">Programming Languages 公开课</a>
</li>
<li><a href="https://www.ituring.com.cn/book/829"
   rel="noopener noreferrer" target="_blank" class="external">七周七语言</a>
</li>
<li><a href="https://www.ituring.com.cn/book/1233"
   rel="noopener noreferrer" target="_blank" class="external">代码之髓</a>
</li>
</ul>
<h3 id="44-选择你主要的构建实践">4.4 选择你主要的构建实践</h3>
<p>当前针对各种编程语言，一般都会有最佳实践一类的东西，或者有优秀的开源项目作为参考，总之刚开始不要自己摸索，用前人的最佳实践做几个项目之后再考虑根据自己的需要做优化。</p>
<p>做好最佳实践，能够把自己的精力集中到代码的逻辑中去，减轻代码管理、调试等工作的复杂性。</p>
<h1 id="第2部分-创建高质量的代码">第2部分 创建高质量的代码</h1>
<h2 id="第5章-构建中的设计">第5章 构建中的设计</h2>
<p>设计不太可能在构建之前完成。</p>
<h3 id="51-设计挑战">5.1 设计挑战</h3>
<ul>
<li>设计是一个邪恶的(wicked)问题：只能通过解决这个问题或部分解决问题才能清楚的定义这个问题。这是 真正的程序和学生作业的区别。</li>
<li>设计是一个草率的过程：会犯错；好的方案很精妙；“足够好”很难定义。</li>
<li>设计关乎权衡和优先级</li>
<li>设计牵涉约束</li>
<li>设计是非决定性的：有很多途径</li>
<li>设计是一个启发式的过程：没有银弹</li>
<li>设计是自然发生的</li>
</ul>
<h3 id="52-关键设计概念">5.2 关键设计概念</h3>
<h4 id="软件的首要技术法则管理复杂性">软件的首要技术法则：管理复杂性</h4>
<ul>
<li>
<p>偶然的和本质的困难: 此划分来自亚里士多德的哲学。 偶然的：笨拙的语法、非交互式的计算机、难以一起工作的工具； 本质的：与真实世界复杂、无序的接口，异常情况，精确性，准确定义真实世界如何运行。</p>
</li>
<li>
<p>管理复杂性的重要性失败的原因：糟糕的需求/计划/管理，失控的复杂性管理。 程序太大，人类无法一次性理解。问题分级后易于理解（如包管理），保持从程序短小，写代码时考虑人类的极限。</p>
</li>
<li>
<p>如何消灭复杂性：减少每个人脑中需要一次性处理的固有复杂性；防止不必要复杂性的增殖。</p>
</li>
</ul>
<h4 id="理想的设计特征">理想的设计特征</h4>
<ul>
<li>最小复杂度：聪明的 vs 简单易维护的。</li>
<li>易维护：为代码维护者编程，自解释的设计。</li>
<li>松耦合：不同部分之间的联系尽量少。</li>
<li>可扩展性：更改时减少创伤。</li>
<li>可复用性</li>
<li>高扇入：充分复用底层模块</li>
<li>低扇出：不过度依赖其他部分</li>
<li>可移植性</li>
<li>精简：没有多余部分</li>
<li>分层化：隔离变化</li>
<li>标准技术：不要用古怪的技术</li>
</ul>
<h4 id="设计的层次">设计的层次</h4>
<ol>
<li>软件系统</li>
<li>子系统或包：子系统间的通信必须加以限制，否则会不断熵增，一片混乱，可以先紧后松。常见的子系统：商业规则、用户接口、数据存取、系统依赖。</li>
<li>类：包括接口。大项目由子系统划分，定义一些外部函数；小项目由系统直接划分。</li>
<li>例程：可能会引起第3层的修改。</li>
<li>例程内设计</li>
</ol>
<h3 id="53-设计建造的砖块启发式">5.3 设计建造的砖块：启发式</h3>
<p>一个不断试错的过程。</p>
<h4 id="找到现实世界的对象">找到现实世界的对象</h4>
<ul>
<li>标识对象和其属性</li>
<li>决定改对象能干啥</li>
<li>决定每个对象能对其他对象干啥</li>
<li>决定对象各部分的可见性</li>
<li>决定对象的公开接口</li>
</ul>
<p>一个迭代过程：重新组织，类的细节修改。</p>
<h4 id="组织一致的抽象">组织一致的抽象</h4>
<p>在不同的层次忽略细节。集合=&gt;抽象。基类、接口。</p>
<ul>
<li>函数层次</li>
<li>类层次</li>
<li>包或子系统层次</li>
</ul>
<h4 id="封装实现细节">封装实现细节</h4>
<h4 id="继承当继承简化设计时使用">继承——当继承简化设计时使用</h4>
<h4 id="信息隐藏">信息隐藏</h4>
<ul>
<li>结构化设计：黑盒</li>
<li>面向对象设计：封装、模块化、抽象</li>
</ul>
<h5 id="秘密和隐私权">秘密和隐私权</h5>
<h5 id="两种策略">两种策略</h5>
<ul>
<li>隐藏复杂性使你的大脑不需要考虑它，除非特别关注时</li>
<li>隐藏更改源，隔离变化</li>
</ul>
<h5 id="信息隐藏的障碍">信息隐藏的障碍</h5>
<ul>
<li>分布过广的信息</li>
<li>环形依赖</li>
<li>不当的全局数据</li>
<li>担心性能损失</li>
</ul>
<h5 id="信息隐藏的价值">信息隐藏的价值</h5>
<p>启发性的力量，设计好的公共接口。问正确的问题：这个类需要隐藏什么？</p>
<h4 id="标示易变区域">标示易变区域</h4>
<p>标示=&gt;分割=&gt;隔离</p>
<ul>
<li>商业规则</li>
<li>硬件依赖</li>
<li>输入输出</li>
<li>非标准语言特性</li>
<li>设计和构建困难的区域</li>
<li>状态变量：使用枚举代替bool值；使用存取函数代替直接访问。</li>
<li>数据大小限制</li>
</ul>
<h5 id="预期不同程度的变化">预期不同程度的变化</h5>
<p>先找出最小子集，再做功能性、质量性改进。</p>
<h4 id="保持松耦合">保持松耦合</h4>
<h5 id="耦合标准">耦合标准</h5>
<ul>
<li>大小：模块间联系的数量，如函数的参数个数，类的公开方法数量；</li>
<li>可见性：明确引用，胜过更改全局变量。</li>
<li>可变性：容易改变连接，被不同的模块调用。</li>
</ul>
<h5 id="耦合的种类">耦合的种类</h5>
<ul>
<li>简单数据参数耦合：模块间传递了简单数据类型。常见、可接受。</li>
<li>简单对象耦合： 一个对象初始化了另一个对象。合理。</li>
<li>对象参数耦合：对象1需要对象2向其传递对象3。耦合较紧密。</li>
<li>语义耦合
<ul>
<li>模块1传递了一个标志给模块2，告诉模块2应该去干啥。如果模块2定义了一个数据类型来表示该标志，则合理。</li>
<li>模块2使用模块1更改过的全局变量。有时序假设，不好。</li>
<li>模块1在调用某函数前必须先调用初始化函数。</li>
<li>模块1传递对象给模块2，知道模块2将使用对象的部分方法，只对对象进行部分初始化。</li>
<li>模块1传递基类给模块2，模块2知道模块1实际传递的是派生类，强制转化后使用。</li>
</ul>
</li>
</ul>
<p>危险:使用了编译器无法检测的方法使用别的类。 一旦使用了，你就得自己负责正确性。</p>
<h4 id="寻找一般的设计模式">寻找一般的设计模式</h4>
<ul>
<li>模式通过已经准备好的抽象来降低复杂性</li>
<li>模式使一般解决方案制度化以减少错误</li>
<li>模式通过建议设计选择提供启发性价值</li>
<li>模式通过提升设计语言测层次使沟通更流畅</li>
</ul>
<h4 id="其他的启发式方法">其他的启发式方法</h4>
<ul>
<li>高内聚</li>
<li>构建继承体系</li>
<li>正式化类协议</li>
<li>职责分配</li>
<li>为测试设计</li>
<li>避免失败</li>
<li>有意识的选择绑定时间</li>
<li>使控制点集中</li>
<li>使用暴力方法</li>
<li>画图示</li>
<li>保持设计模块化</li>
</ul>
<h4 id="启发性方法指导">启发性方法指导</h4>


<pre tabindex="0"><code> Polya&#39;s How to Solve It </code></pre>
<p>不要卡在一个小问题上，你不需要一次性解决所有的设计问题。</p>
<h3 id="54-设计实践">5.4 设计实践</h3>
<h4 id="迭代">迭代</h4>
<p>发现不顶用的设计。</p>
<h4 id="分治">分治</h4>
<h4 id="自顶向下与自底向上">自顶向下与自底向上</h4>
<p>两种方法论应当结合使用。自顶向下容易入手，但是有时底层的复杂性会影响到上层；自底向下难入手，但是能及早的管理复杂性，使得上层设计更容易。</p>
<h4 id="试验原型">试验原型</h4>
<h4 id="协作设计">协作设计</h4>
<ul>
<li>起身去问协作者</li>
<li>和协作者坐在一起用白板讨论草图</li>
<li>结对编程</li>
<li>开会向其他协作者讲解设计</li>
<li>正式的审查</li>
<li>冷处理自己的设计，再回头看</li>
<li>求助公司外的人，在论坛上提问</li>
</ul>
<h4 id="多少设计才足够">多少设计才足够？</h4>
<p>一般来说，越细越好；设计文档不是越多越好。</p>
<h4 id="记录你的设计工作">记录你的设计工作</h4>
<ul>
<li>在代码中插入设计文档</li>
<li>在Wiki中记录设计的讨论和决定</li>
<li>写e-mail总结</li>
<li>拍照</li>
<li>保存设计海报</li>
<li>使用“类-职责-协作”卡片</li>
<li>在适当的细节层次使用UML图</li>
</ul>
<h3 id="55-对流行方法学的评论">5.5 对流行方法学的评论</h3>
<p>不要过多关注设计方法学，关注设计本身，不设计或事无巨细的设计都不可取，还是要具体情况具体分析。</p>
<h2 id="第6章-可以工作的类">第6章 可以工作的类</h2>
<h3 id="61-类的基础抽象数据类型adts">6.1 类的基础：抽象数据类型(ADTs)</h3>
<p>一些数据以及对这些数据操作的集合。ADT是类的基础，但不一定以类的形态存在。</p>
<p>使用ADT的益处：</p>
<ul>
<li>可以隐藏实现细节</li>
<li>改动不会影响到整个程序</li>
<li>让接口能提供更多信息</li>
<li>更容易提高性能</li>
<li>让程序的正确性显而易见</li>
<li>程序更具自我说明性</li>
<li>无须在程序内到处传递数据</li>
<li>你可以像在现实世界中那样操作实体</li>
</ul>
<p>ADT示例：</p>
<ul>
<li>把常见的底层数据类型创建为ADT并使用这些ADT，而不再使用底层数据类型</li>
<li>把像文件这样的常用对象当成ADT</li>
<li>简单的事物也可以当作ADT</li>
<li>不要让ADT依赖于其存储介质</li>
</ul>
<p>在非面向对象环境中用ADT处理多分数据实例（比如C语言）：</p>
<ol>
<li>每次使用ADT服务子程序时都明确指定实例（使用id）</li>
<li>明确地向ADT服务子程序提供所要用地数据</li>
<li>使用隐含实例（需要跟踪当前实例，容易出错）</li>
</ol>
<p>类=ADT+继承+多态</p>
<h3 id="62-良好的类接口">6.2 良好的类接口</h3>
<ul>
<li>展现一致的抽象层次</li>
<li>理解类所实现的抽象是什么</li>
<li>提供成对的服务</li>
<li>把不相关的信息转移到其他类中</li>
<li>尽可能让接口可编程，而不是表达语义（编译器可检查）</li>
<li>谨防在修改时破坏接口的抽象</li>
<li>不要添加与接口抽象不一致的公用成员</li>
<li>同时考虑抽象性和内聚性</li>
</ul>
<p>良好的封装</p>
<ul>
<li>尽可能地限制类和成员的可访问性</li>
<li>不要公开暴露成员数据</li>
<li>避免把私用的实现细节放入类的接口中</li>
<li>不要对类的使用者做出任何假设</li>
<li>避免使用友元类</li>
<li>不要因为一个子程序仅使用公用子程序，就把它归入公开接口</li>
<li>让阅读代码比编写代码更方便</li>
<li>要格外警惕从语义上破坏封装性</li>
<li>留意过于紧密的耦合关系</li>
</ul>
<h3 id="63-有关设计和实现的问题">6.3 有关设计和实现的问题</h3>
<p>包含：有一个的关系 has a</p>
<ul>
<li>通过包含来实现有一个的关系</li>
<li>在万不得已时通过private继承来实现有个的关系</li>
<li>警惕有超过7个数据成员的类</li>
</ul>
<p>继承：是一个的关系 is a</p>
<ul>
<li>用public继承来实现是一个的关系</li>
<li>要么使用继承并进行详细说明，要么就不要用它</li>
<li>遵循Liskov替换原则</li>
<li>确保只继承需要继承的部分</li>
<li>不要覆盖一个不可覆盖的成员函数</li>
<li>把共用的接口、数据以操作放到继承树中尽可能高的位置</li>
<li>只有一个实例的类是值得怀疑的</li>
<li>只有一个派生类的基类也值得怀疑</li>
<li>派生类覆盖了某个子程序，但在其中没做任何操作，这种情况也值得怀疑</li>
<li>避免让继承体系过深</li>
<li>尽量使用多态，避免大量的类型检查</li>
<li>让所有的数据都是private</li>
</ul>
<p>多重继承</p>
<ul>
<li>太复杂，一般不建议使用</li>
<li>mixins语义可以使用f</li>
</ul>
<p>总的来说，继承要慎用，因为它一定程度上有悖于控制复杂性的基本理念。</p>
<p>成员函数和数据成员</p>
<ul>
<li>让类中子程序的数量尽可能少</li>
<li>禁止隐式地产生你不需要地成员函数和运算符（可以更改默认行为，比如让其private）</li>
<li>减少类所调用的不同子程序的数量</li>
<li>对其他类的子程序的间接调用要尽可能少（A可以调用A创建的对象B的子程序）</li>
<li>一般来说，应尽量减少类和类之间相互合作的范围</li>
</ul>
<p>构造函数：</p>
<ul>
<li>如果可能，应该在所有的构造函数中初始化所有的数据成员（类似pycharm的IDE往往会有警告）</li>
<li>用私用构造函数来强制实现单件属性</li>
<li>优先采用深层复本，除非论证可行，才采用浅层复本</li>
</ul>
<h3 id="64-创建类的原因">6.4 创建类的原因</h3>
<ul>
<li>为现实世界中的对象建模</li>
<li>为抽象的对象建模</li>
<li>降低复杂度</li>
<li>隔离复杂度</li>
<li>隐藏实现细节</li>
<li>限制变动的影响范围</li>
<li>隐藏全局数据</li>
<li>让参数传递更顺畅</li>
<li>建立中心控制点</li>
<li>让代码更易于重用</li>
<li>为程序族作计划</li>
<li>把相关操作包装到一起</li>
<li>实现某种特定的重构</li>
</ul>
<p><strong>应该避免的类</strong></p>
<ul>
<li>避免创建万能类</li>
<li>消除无关紧要的类</li>
<li>避免用动词命名的类</li>
</ul>
<h3 id="65-与具体编程语言相关的问题">6.5 与具体编程语言相关的问题</h3>
<p>不同语言在实现类的方法上有很多差别。比如类的覆盖。</p>
<h3 id="66-超越类包">6.6 超越类：包</h3>
<p>如果语言不支持包，可以自己预定实现，几个关键点：</p>
<ul>
<li>用于区分“共用的类”和“某个包私用的类”的命名规则</li>
<li>为了区分每个类所属的包而定制的命名规则和/或代码组织规则（即项目结构）</li>
<li>固定什么包可以用其它什么包的规则，包框是否可以用继承和/或包含等</li>
</ul>
<h2 id="第7章-高质量的子程序">第7章 高质量的子程序</h2>
<h3 id="71-创建子程序的正当理由">7.1 创建子程序的正当理由</h3>
<ul>
<li>降低复杂度</li>
<li>引入中间的、易懂的抽象</li>
<li>避免代码重复</li>
<li>支持子类化</li>
<li>隐藏顺序</li>
<li>隐藏指针操作</li>
<li>提高可移植性</li>
<li>简化复杂的逻辑判断</li>
<li>改善性能（只需要在一个地方优化）</li>
</ul>
<p>即使很简单的逻辑，如果能提高可读性，也要考虑写出子程序。</p>
<h3 id="72-在子程序层上设计">7.2 在子程序层上设计</h3>
<p><strong>内聚性</strong></p>
<ul>
<li>功能的内聚性：一个程序仅执行一项操作</li>
</ul>
<p>不太理想的内聚性</p>
<ul>
<li>顺序上的内聚性：子程序内包含有需要按特定顺序执行的操作，这些步骤需要共享数据，而且只有在全部执行完毕后才完成了一项完整的功能。</li>
<li>通信上的内聚性：一个子程序中的不同操作使用了同样的数据，但不存在其它任何联系。</li>
<li>临时的内聚性：含有一些因为需要同时执行才放到一起的操作的子程序。（可做作为组织者）</li>
</ul>
<p>不可取的内聚性：</p>
<ul>
<li>过程上的内聚性：一个子程序中的操作是按特定的顺序进行的。</li>
<li>逻辑上的内聚性：若干操作被放入同一个子程序中，通过传入的控制标志选择执行其中的一项操作。</li>
<li>巧合的内聚性：子程序中的各个操作之间没有任何可以看到的关联。</li>
</ul>
<h3 id="73-好的子程序的名字">7.3 好的子程序的名字</h3>
<ul>
<li>描述子程序所做的所有事情</li>
<li>避免使用无意义的、模糊或表述不清的动词</li>
<li>不要仅通过数字来形成不同的子程序名字</li>
<li>根据需要确定子程序的长度</li>
<li>给函数命名时要对返回值有所描述</li>
<li>给过程起名时使用语气强烈的动词加宾语的形式</li>
<li>准确使用对仗词</li>
<li>为常用操作确立命名规则</li>
</ul>
<h3 id="74-子程序可以写多长">7.4 子程序可以写多长</h3>
<p>总的来说，没有必要刻意去限制子程序的长度，而应该去考虑的是内聚性等复杂度事项，不过一般这样考虑了，子程序的长度不太可能超过200行。</p>
<h3 id="75-如何使用子程序参数">7.5 如何使用子程序参数</h3>
<p>减少接口错误的指导原则：</p>
<ul>
<li>按照输入-修改-输出的顺序排列参数</li>
<li>考虑自己创建in和out关键字</li>
<li>如果几个子程序都用了类似的一些参数，应该让这些参数的排列顺序保持一致</li>
<li>使用所有的参数</li>
<li>把状态或出错变量放在最后</li>
<li>不要把子程序的参数用作工作变量</li>
<li>在接口中对参数的假定加以说明（注释、断言）</li>
<li>把子程序的个数限制在大约7个以内</li>
<li>考虑对参数采用某种表示输入、修改、输出的命名规则</li>
<li>为子程序传递用以维持其接口抽象的变量或对象</li>
<li>使用具名参数</li>
<li>确保实际参数与形式参数相匹配（类型要匹配）</li>
</ul>
<h3 id="76-使用函数时要特别考虑的问题">7.6 使用函数时要特别考虑的问题</h3>
<p>如果一个子程序的主要用途就是返回由其名字所指明的返回值，那么就应该使用函数，否则应该使用过程。对于返回值：</p>
<ul>
<li>检查所有可能的返回路径</li>
<li>不要返回指向局部数据的引用或指针</li>
</ul>
<h3 id="77-宏子程序和内联子程序">7.7 宏子程序和内联子程序</h3>
<ul>
<li>把表达式整个包含在括号内</li>
<li>把含有多条语句的宏用大括号括起来</li>
<li>用给子程序命名的方法来给展开后代码形同子程序的宏命名，以便在需要时可以用子程序来替换宏</li>
</ul>
<p>可以用来替代宏的方案：</p>
<ul>
<li>const</li>
<li>inline（也需要节制使用）</li>
<li>enum</li>
<li>typedef</li>
</ul>
<h2 id="第8章-防御式编程">第8章 防御式编程</h2>
<p>防御式编程概念来自于防御式驾驶：子程序应该不因传入错误数据而被破坏，哪怕是由其它子程序产生的错误数据。</p>
<h3 id="81-保护程序免遭非法输入数据的破坏">8.1 保护程序免遭非法输入数据的破坏</h3>
<ul>
<li>检查所有来源于外部的数据的值</li>
<li>检查子程序所有输入参数的值</li>
<li>决定如何处理错误的输入数据</li>
</ul>
<h3 id="82-断言">8.2 断言</h3>
<ul>
<li>用错误处理来处理预期会发生的状况，用断言来处理绝不应该发生的状况</li>
<li>避免把需要执行的代码放到断言中</li>
<li>用断言来注解并验证前条件和后条件</li>
<li>对于高健壮性的代码，应该先使用断言再处理错误</li>
</ul>
<h3 id="83-错误处理技术">8.3 错误处理技术</h3>
<ul>
<li>返回中立值</li>
<li>换用下一个正确的数据</li>
<li>返回与前次相同的数据</li>
<li>换用最接近的合法值</li>
<li>把警告信息记录到日志文件中</li>
<li>返回一个错误码</li>
<li>调用错误处理子程序或对象</li>
<li>当错误发生时显示出错消息</li>
<li>用最妥当的方式在局部处理错误</li>
<li>关闭程序</li>
</ul>
<p>注意正确性与健壮性的选择</p>
<ul>
<li>人身安全攸关的软件倾向于正确性</li>
<li>消费类应用软件倾向于健壮性</li>
</ul>
<p>高层次设计对错误处理方式的影响：应该在整个程序中采用一致的方式处理非法的参数</p>
<h3 id="84-异常">8.4 异常</h3>
<ul>
<li>用异常通知程序的其他部分，发生了不可忽略的错误</li>
<li>只有真正例外的情况下才抛出异常</li>
<li>不能用异常来推卸责任</li>
<li>避免在构造函数和析构函数中抛出异常，除非你在同一地方把它们捕获</li>
<li>在恰当的抽象层次抛出异常：抛出的异常也是程序接口的一部分</li>
<li>在异常消息中加入关于导致异常发生的全部信息</li>
<li>避免使用空的catch语句</li>
<li>了解所用函数库可能抛出的异常</li>
<li>考虑创建一个集中的异常报告机制</li>
<li>把项目中对异常的使用标准化</li>
<li>考虑异常的替换方案</li>
</ul>
<h2 id="85-隔离程序使之包容由错误造成的损害">8.5 隔离程序，使之包容由错误造成的损害</h2>
<p>把某些接口选定为“安全”区域的边界。对穿越安全区域边界的数据进行合法性校验，并当数据非法时做出敏锐的反应。</p>
<ul>
<li>隔栏外部的程序使用错误处理技术</li>
<li>隔栏内部的程序使用断言技术</li>
</ul>
<h3 id="86-辅助调试的代码">8.6 辅助调试的代码</h3>
<ul>
<li>
<p>不要自动地把产品版地限制强加于开发版之上</p>
</li>
<li>
<p>尽早引入辅助调试的代码</p>
</li>
<li>
<p>采用进攻式编程：在开发时惨痛的失败</p>
</li>
<li>
<p>计划移除辅助调试的代码</p>
<ul>
<li>使用类似ant和make这样的版本控制工具和make工具</li>
<li>使用内置的预处理器</li>
<li>编写自己的预处理器</li>
<li>使用调试存根（代码桩）</li>
</ul>
</li>
</ul>
<h3 id="87-确定在产品代码中该保留多少防御式编程">8.7 确定在产品代码中该保留多少防御式编程</h3>
<ul>
<li>保留那些检查重要错误的代码</li>
<li>去掉检查细微错误的代码（开关/记录）</li>
<li>去掉可以导致程序硬件崩溃的代码</li>
<li>保留可以让程序稳妥地崩溃地代码</li>
<li>让你的技术支持人员记录错误信息</li>
<li>确认留在代码中的错误信息是友好的</li>
</ul>
<h3 id="88-对防御式编程采取防御的姿态">8.8 对防御式编程采取防御的姿态</h3>
<p>防御式编程同样会增加软件的复杂度</p>
<h2 id="第9章-伪代码编程过程">第9章 伪代码编程过程</h2>
<h3 id="91-创建类和子程序的步骤概述">9.1 创建类和子程序的步骤概述</h3>
<p>创建一个类的步骤：</p>
<ul>
<li>创建类的总体设计</li>
<li>创建类中的子程序</li>
<li>复审并测试整个类</li>
</ul>
<p>创建子程序的步骤</p>
<ul>
<li>设计子程序</li>
<li>检查设计</li>
<li>编写子程序的代码</li>
<li>复审并测试代码</li>
</ul>
<h3 id="92-伪代码">9.2 伪代码</h3>
<p>指导原则：</p>
<ul>
<li>用类似英语的语句来精确描述特定的操作</li>
<li>避免使用目标编程语言中的语法元素</li>
<li>在本意的层次上编写伪代码</li>
<li>在一个足够低的层次上编写伪代码，以便可以近乎自动地从它生成代码</li>
</ul>
<p>优点：</p>
<ul>
<li>伪代码使得评审更容易</li>
<li>伪代码支持反复迭代精化地思想</li>
<li>伪代码使变更更加容易</li>
<li>伪代码能使给代码做注释地工作量减到最少</li>
<li>伪代码比其他形式的设计文档更容易维护</li>
</ul>
<h3 id="93-通过伪代码编程过程创建子程序">9.3 通过伪代码编程过程创建子程序</h3>
<h4 id="设计子程序">设计子程序</h4>
<ul>
<li>检查先决条件</li>
<li>定义子程序要解决的问题</li>
<li>为子程序命名</li>
<li>决定如何测试子程序</li>
<li>在标准库中搜寻可用的功能</li>
<li>考虑错误处理</li>
<li>考虑效率问题</li>
<li>研究算法和数据结构</li>
<li>编写伪代码</li>
<li>考虑数据</li>
<li>检查伪代码</li>
<li>在伪代码中试验一些想法，留下最好的想法（迭代）</li>
</ul>
<h4 id="编写子程序的代码">编写子程序的代码</h4>
<ul>
<li>写出子程序的声明</li>
<li>把伪代码转变为高层的注释</li>
<li>在每条注释下面填充代码</li>
<li>检查代码是否需要进一步分解</li>
</ul>
<h4 id="检查代码">检查代码</h4>
<ul>
<li>在脑海中检查程序中的错误</li>
<li>编译子程序</li>
<li>在调试器中逐行执行代码</li>
<li>测试代码</li>
<li>消除程序中的错误</li>
</ul>
<h4 id="收尾工作">收尾工作</h4>
<ul>
<li>检查子程序的接口</li>
<li>检查整体的设计质量</li>
<li>检查子程序的变量</li>
<li>检查子程序的语句和逻辑</li>
<li>检查子程序的布局</li>
<li>检查子程序的文档</li>
<li>除去冗余的注释</li>
</ul>
<h4 id="根据需要重复上述步骤">根据需要重复上述步骤</h4>
<h3 id="94-伪代码编程过程的替代方案">9.4 伪代码编程过程的替代方案</h3>
<ul>
<li>测试先行开发</li>
<li>重构</li>
<li>契约式设计</li>
<li>东拼西凑</li>
</ul>
<h1 id="第3部分-变量">第3部分 变量</h1>
<h2 id="第10章-使用变量的一般事项">第10章 使用变量的一般事项</h2>
<h3 id="101-数据认知">10.1 数据认知</h3>
<h3 id="102-轻松掌握变量定义">10.2 轻松掌握变量定义</h3>
<ul>
<li>关闭隐式声明</li>
<li>声明全部的变量</li>
<li>遵循某种命名规则</li>
<li>检查变量名</li>
</ul>
<h3 id="103-变量初始化原则">10.3 变量初始化原则</h3>
<ul>
<li>在声明变量的时候初始化</li>
<li>在靠近变量第一次使用的位置初始化它</li>
<li>理想情况下，在靠近第一次使用变量的位置声明和定义该变量</li>
<li>在可能的情况下使用final或者const</li>
<li>特别注意计数器和累加器</li>
<li>在类的构造函数里初始化该类的数据成员</li>
<li>检查是否需要重新初始化</li>
<li>一次性初始化具名常量，用可执行代码来初始化变量</li>
<li>使用编译器来设置自动初始化所有变量</li>
<li>利用编译器的警告信息</li>
<li>检查输入参数的合法性</li>
<li>使用内存访问检查工具来检查错误的指针</li>
<li>在程序开始时初始化工作内存</li>
</ul>
<h3 id="104-作用域">10.4 作用域</h3>
<p>作用域指的是变量在程序内的可见和可引用的范围</p>
<h4 id="使变量引用局部化">使变量引用局部化</h4>
<h4 id="尽可能缩短变量的存活时间">尽可能缩短变量的存活时间</h4>
<h4 id="减少作用域的一般原则">减少作用域的一般原则</h4>
<ul>
<li>在循环开始之前再去初始化该循环里使用的变量，而不是在该循环所属的子程序的开始处初始化这些变量</li>
<li>直到变量即将被使用时再为其赋值</li>
<li>把相关语句放在一起</li>
<li>把相关语句组提取成单独的子程序</li>
<li>开始时采用最严格的可见性，然后根据需要扩展变量的作用域</li>
</ul>
<h4 id="有关缩小变量作用域的说明">有关缩小变量作用域的说明</h4>
<p>“方便性”与“智力上的可管理性”的权衡</p>
<h3 id="105-持续性">10.5 持续性</h3>
<p>持续性的多种形态</p>
<ul>
<li>特定代码段或子程序的生命期</li>
<li>只要你允许，他就会持续下去</li>
<li>程序的生命期</li>
<li>永远持续</li>
</ul>
<h3 id="106-绑定时间">10.6 绑定时间</h3>
<p>把变量和它的值绑定在一起的时间</p>
<ul>
<li>编码时</li>
<li>编译时</li>
<li>加载时</li>
<li>对象实例化时</li>
<li>即时</li>
</ul>
<h3 id="107-数据类型和控制结构之间的关系">10.7 数据类型和控制结构之间的关系</h3>
<ul>
<li>序列型数据翻译为程序中的顺序数据</li>
<li>选择型数据翻译为程序中的if和case语句</li>
<li>迭代型数据翻译成程序中的for、repeat、while等循环结构</li>
</ul>
<h3 id="108-为变量指定单一用途">10.8 为变量指定单一用途</h3>
<ul>
<li>每个变量只用于单一用途</li>
<li>避免让代码具有隐含含义</li>
<li>确保使用了所有已声明的变量</li>
</ul>
<h2 id="第11章-变量名的力量">第11章 变量名的力量</h2>
<h3 id="111-选择好的变量名的注意事项">11.1 选择好的变量名的注意事项</h3>
<h4 id="最重要的命名注意事项">最重要的命名注意事项</h4>
<p>要完全、准确地描述出该变量所代表的事物。</p>
<h4 id="以问题为导向">以问题为导向</h4>
<p>一个好记的名字反映的通常都是问题，而不是解决方案。</p>
<h4 id="最适当的名字长度">最适当的名字长度</h4>
<p>10<del>16个字符，8</del>20个字符，注意不要教条</p>
<h4 id="作用域对变量名的影响">作用域对变量名的影响</h4>
<ul>
<li>作用域越大，倾向于用越长的变量名</li>
<li>对于全局命名空间中的名字加以限定词</li>
</ul>
<h4 id="变量名中的计算值限定词">变量名中的计算值限定词</h4>
<p>Total、Sum等限定词放到名字的最后</p>
<h4 id="变量名中的常用对仗词">变量名中的常用对仗词</h4>
<p>建议成对使用</p>
<h3 id="112-为特定类型的数据命名">11.2 为特定类型的数据命名</h3>
<h4 id="为循环下标命名">为循环下标命名</h4>
<p>i, j, k</p>
<h4 id="为状态变量命名">为状态变量命名</h4>
<p>不要用一般性的flag，不要猜测变量名的含义</p>
<h4 id="为临时变量命名">为临时变量命名</h4>
<p>警惕临时变量，使用比temp更有含义的命名</p>
<h4 id="为布尔变量命名">为布尔变量命名</h4>
<ul>
<li>谨记典型的布尔变量命：done， error，found，success或ok</li>
<li>给布尔变量赋予隐含真/假含义的名字</li>
<li>使用肯定的布尔变量名</li>
</ul>
<h4 id="为枚举类型命名">为枚举类型命名</h4>
<ul>
<li>如语言不支持类似类的处理，自己加上前缀</li>
</ul>
<h4 id="为常量命名">为常量命名</h4>
<p>使用常量的含义而不是数值命名</p>
<h3 id="113-命名规则的力量">11.3 命名规则的力量</h3>
<h4 id="为什么要有规则">为什么要有规则</h4>
<ul>
<li>要求你更多地按规矩行事</li>
<li>有助于在项目之间传递知识</li>
<li>有助于你在新项目中更快速的学习代码</li>
<li>有助于减少名字增生</li>
<li>弥补编程语言的不足之处</li>
<li>强调变量之间的关系</li>
</ul>
<h4 id="何时采用命名规则">何时采用命名规则</h4>
<p>合作/正式/长期的项目</p>
<h4 id="正式程度">正式程度</h4>
<p>取决于项目规模/生命周期</p>
<h3 id="114-非正式命名规则">11.4 非正式命名规则</h3>
<h4 id="与语言无关的命名规则指导原则">与语言无关的命名规则指导原则</h4>
<ul>
<li>区分变量名和子程序名字</li>
<li>区分类和对象</li>
<li>标识全局变量</li>
<li>标识成员变量</li>
<li>标识类型声明</li>
<li>标识具名常量</li>
<li>标识枚举类型的元素</li>
<li>在不能保证输入参数只读的语言标识只读参数</li>
<li>格式化命名以提高可读性</li>
</ul>
<h3 id="115-标准前缀">11.5 标准前缀</h3>
<ul>
<li>用户自定义类型缩写</li>
<li>语义前缀</li>
</ul>
<h3 id="116-创建具备可读性的短名字">11.6 创建具备可读性的短名字</h3>
<ul>
<li>不要用从每个单词删除一个字符的方式来缩写</li>
<li>缩写要一致</li>
<li>创建你能读出来的名字</li>
<li>避免使用容易看错或者读错的字符组合</li>
<li>使用辞典来解决命名冲突</li>
<li>在代码里用缩写对照表来解释极短的名字的含义</li>
<li>在一份项目级的标准缩写文档中说明所有的缩写</li>
<li>名字对于代码读者的意义比作者更重要</li>
</ul>
<h3 id="11-7-应当避免的名字">11. 7 应当避免的名字</h3>
<ul>
<li>
<p>避免使用令人误解的名字或缩写</p>
</li>
<li>
<p>避免使用具有相似含义的名字</p>
</li>
<li>
<p>避免使用具有不同含义但却有相似名字的变量</p>
</li>
<li>
<p>避免使用发音相近的名字</p>
</li>
<li>
<p>避免在名字中使用数字</p>
</li>
<li>
<p>避免在名字中拼错单词</p>
</li>
<li>
<p>避免似乎用英语中常常拼错的单词</p>
</li>
<li>
<p>不要仅靠大小写来区分变量命</p>
</li>
<li>
<p>避免使用多种自然语言</p>
</li>
<li>
<p>避免使用标准类型、变量和子程序的名字</p>
</li>
<li>
<p>不要使用与变量含义完全无关的名字</p>
</li>
<li>
<p>避免在名字中包含易混淆的字符</p>
</li>
</ul>
<h2 id="第12章-基本数据类型">第12章 基本数据类型</h2>
<h3 id="121-数值概论">12.1 数值概论</h3>
<ul>
<li>避免使用硬编码的“神秘数字”</li>
<li>如果需要，可以使用硬编码的0和1</li>
<li>预防除零错误</li>
<li>使类型转换变得明显</li>
<li>避免混合类型的比较</li>
<li>注意编译器的警告</li>
</ul>
<h3 id="122-整数">12.2 整数</h3>
<ul>
<li>检查整数除法</li>
<li>检查整数溢出</li>
<li>检查中间结果溢出</li>
</ul>
<h3 id="123-浮点数">12.3 浮点数</h3>
<ul>
<li>避免数量级相差巨大的数之间的加减运算</li>
<li>避免等量判断</li>
<li>处理舍入误差问题</li>
<li>检查语言和函数库对特定数据类型的支持</li>
</ul>
<h3 id="124-字符和字符串">12.4 字符和字符串</h3>
<ul>
<li>避免使用神秘字符和神秘字符串</li>
<li>避免off-by-one错误</li>
<li>了解你的语言和开发环境是如何支持Unicode的</li>
<li>在程序生命期中尽早决定国际化/本地化策略</li>
<li>如果你知道只需要支持一种文字的语言，请考虑使用ISO 8859字符集</li>
<li>如果你需要支持多种语言，请使用Unicode</li>
<li>采用某种一致的字符串类型转换策略</li>
</ul>
<p>C语言中的字符串</p>
<ul>
<li>注意字符串指针和字符数组之间的差异</li>
<li>把C-style字符串的长度声明为CONSTANT + 1</li>
<li>用null初始化字符串以避免无结束符的字符串</li>
<li>用字符数组取代C中的指针</li>
<li>用字符串子程序的安全版本， <code>strlcpy()</code>或<code>strcpy_s()</code></li>
</ul>
<h3 id="125-布尔变量">12.5 布尔变量</h3>
<ul>
<li>用布尔变量对程序加以文档说明</li>
<li>用布尔变量来简化复杂的判断</li>
<li>如果需要的话，创建自己的布尔类型</li>
</ul>
<h3 id="126-枚举类型">12.6 枚举类型</h3>
<ul>
<li>用枚举类型来提高可读性</li>
<li>用枚举类型来提高可靠性</li>
<li>用枚举类型来简化修改</li>
<li>用枚举类型作为布尔变量的替换方案</li>
<li>检查非法值</li>
<li>定义处枚举的第一项和最后一项，以便于循环边界</li>
<li>把枚举类型的第一个元素留做非法值</li>
<li>明确定义项目代码编写标准中第一个和最后一个元素的使用规则，并且在使用时保持一致</li>
<li>警惕给枚举元素明确赋值而带来的失误</li>
</ul>
<h4 id="如果你的语言里没有枚举类型">如果你的语言里没有枚举类型</h4>
<p>可以自己设法用全局变量的规范或者类来模拟。</p>
<h3 id="127-具名常量">12.7 具名常量</h3>
<ul>
<li>在数据声明中使用具名常量</li>
<li>避免使用文字量，即使是安全的</li>
<li>用具有适当作用域的变量或类来模拟具名常量</li>
<li>统一地使用具名常量</li>
</ul>
<h3 id="128-数组">12.8 数组</h3>
<ul>
<li>确认所有的数组下标都没有超出数组地边界</li>
<li>考虑用容器来取代数组，或者将数组作为顺序化结构来处理</li>
<li>检查数组地边界点</li>
<li>如果数组是多维的，确认下标的使用顺序是正确的</li>
<li>提防下标串话</li>
<li>在C中结合<code>ARRAY_LENGTH()</code>宏来使用数组</li>
</ul>
<h3 id="129-创建你自己的类型类型别名">12.9 创建你自己的类型（类型别名）</h3>
<ul>
<li>易于修改</li>
<li>避免过多的信息分发</li>
<li>增加可靠性</li>
<li>弥补语言的不足</li>
</ul>
<p>指导原则：</p>
<ul>
<li>给所创建的类型取功能导向的名字</li>
<li>避免使用预定义类型</li>
<li>不要重定义一个预定义的类型</li>
<li>定义替代类型以便于移植</li>
<li>考虑创建一个类而不是typedef</li>
</ul>
<h2 id="第13章-不常见的数据类型">第13章 不常见的数据类型</h2>
<h3 id="131-结构体">13.1 结构体</h3>
<ul>
<li>用结构体来明确数据关系</li>
<li>用结构体简化对数据块的操作</li>
<li>用结构体来简化参数列表</li>
<li>用结构体来减少维护</li>
</ul>
<h3 id="132-指针">13.2 指针</h3>
<p>理解指针的关键：</p>
<ul>
<li>内存中的位置</li>
<li>如何解释指针所指的内容</li>
</ul>
<p>使用指针的一般技巧：</p>
<ul>
<li>把指针操作限制在子程序或者类里面</li>
<li>同时声明和定义指针</li>
<li>在指针分配相同的作用域中删除指针</li>
<li>在使用指针之前检查指针</li>
<li>先检查指针所引用的变量再使用它</li>
<li>用狗牌字段来检查损毁的内存</li>
<li>增加明显的冗余</li>
<li>用额外的指针变量来提高代码清晰度</li>
<li>简化复杂的指针表达式</li>
<li>按照正确的顺序删除链表中的指针</li>
<li>分配一片保留的内存后备区域</li>
<li>粉碎垃圾数据</li>
<li>再删除或者释放指针后把它们设为空值</li>
<li>在删除变量之前检查非法指针</li>
<li>跟踪指针分配情况</li>
<li>编写覆盖子程序，集中实现避免指针问题的策略</li>
<li>采用非指针的技术</li>
</ul>
<h4 id="c指针">C++指针</h4>
<ul>
<li>理解指针和引用之间的区别</li>
<li>把指针用于“按引用传递”参数，把const引用用于“按值传递”参数</li>
<li>使用 <code>shared_ptr</code></li>
<li>灵活运用智能指针</li>
</ul>
<h4 id="c指针-1">C指针</h4>
<ul>
<li>使用显式指针类型而不是默认类型</li>
<li>避免强制类型转换</li>
<li>遵循参数传递的星号规则</li>
<li>在内存分配中使用<code>sizeof()</code>确定变量的大小</li>
</ul>
<h3 id="133-全局数据">13.3 全局数据</h3>
<p>常见问题：</p>
<ul>
<li>无意间修改了全局数据</li>
<li>与全局数据有关的别名问题</li>
<li>与全局数据有关的代码重入问题</li>
<li>全局数据阻碍代码重用</li>
<li>与全局数据有关的非确定的初始化顺序事宜</li>
<li>全局数据破坏了模块化和质量上的可管理性</li>
</ul>
<p>使用全局数据的理由：</p>
<ul>
<li>保存全局数据</li>
<li>模拟具名常量</li>
<li>模拟枚举类型</li>
<li>简化对及其常用的数据使用</li>
<li>消除流浪数据</li>
</ul>
<p>只有万不得已时才使用全局数据</p>
<ul>
<li>首先把每一个变量设置为局部的，仅当需要时才把变量设置为全局的</li>
<li>区分全局变量和类变量</li>
<li>使用访问器子程序
<ul>
<li>要求所有的代码通过访问器子程序来存取数据</li>
<li>不要把你所有的全局数据扔在一处</li>
<li>用锁定来控制对全局变量的访问</li>
<li>在你的访问器子程序里构建一个抽象层</li>
<li>使得对一项数据的所有访问都发生在同一个抽象层</li>
</ul>
</li>
</ul>
<p>如何降低使用全局数据的风险：</p>
<ul>
<li>创建一种命名规则来突出全局变量</li>
<li>为全部的全局变量创建一份注释良好的清单</li>
<li>不要用全局变量来存放中间结果</li>
<li>不要把所有的数据都放在一个大对象中并到处传递，以说明你没有使用全局变量</li>
</ul>
<h1 id="第4部分-语句">第4部分 语句</h1>
<h2 id="第14章-组织直线型代码">第14章 组织直线型代码</h2>
<h3 id="141-必须有明确顺序的语句">14.1 必须有明确顺序的语句</h3>
<ul>
<li>设法组织代码，使依赖关系变得非常明显</li>
<li>使子程序名能凸显依赖关系</li>
<li>利用子程序参数明确显示依赖关系</li>
<li>用注释对不清晰的依赖关系进行说明</li>
<li>用断言或者错误处理代码来检查依赖关系</li>
</ul>
<h3 id="142-顺序无关的语句">14.2 顺序无关的语句</h3>
<ul>
<li>使代码易于自上而下地阅读</li>
<li>把相关的语句组织在一起</li>
</ul>
<h2 id="第15章-使用条件语句">第15章 使用条件语句</h2>
<h3 id="151-if-语句">15.1 if 语句</h3>
<h4 id="简单-if-then语句">简单 if-then语句</h4>
<ul>
<li>首先写正常代码路径，再处理不常见情况</li>
<li>确保对于等量的分支是正确的</li>
<li>把正常情况的处理放在if后面而不要放在else后面</li>
<li>让if子句后面跟随一个有意义的句子</li>
<li>考虑else子句</li>
</ul>
<h4 id="if-then-else语句串">if-then-else语句串</h4>
<ul>
<li>利用布尔函数简化复杂的检测</li>
<li>把最常用的情况放在最前面</li>
<li>确保所有的情况都考虑到了</li>
<li>如果你的语言支持，请把if-then-else语句串替换成其它结构</li>
</ul>
<h3 id="152-case语句">15.2 case语句</h3>
<p>为case语句选择最有效的排列顺序：</p>
<ul>
<li>按字母顺序或按数字顺序排列各种情况</li>
<li>把正常的情况放在前面</li>
<li>按执行频率排列case子句</li>
</ul>
<p>使用case语句的诀窍：</p>
<ul>
<li>简化每种情况对应的操作：可以使用子程序</li>
<li>不要为了使用case语句而刻意制造一个变量</li>
<li>把default子句只用于检查真正的默认情况</li>
<li>利用default子句来检测错误</li>
<li>在C++和Java里，避免代码执行越过一条case子句的末尾（显式的break）</li>
<li>在C++里，在case末尾明确无误地标明需要穿越执行的程序流程</li>
</ul>
<h3 id="第16章-控制循环">第16章 控制循环</h3>
<h3 id="161-选择循环的种类">16.1 选择循环的种类</h3>
<ul>
<li>计数循环</li>
<li>连续求值的循环</li>
<li>无限循环</li>
<li>迭代器循环</li>
</ul>
<p>什么时候使用while循环</p>
<ul>
<li>检测位于循环的开始</li>
<li>检测位于循环的结尾</li>
</ul>
<p>什么时候用带退出的循环？</p>
<p>正常的带退出的循环：如果把循环条件检测放在循环开始或结束处，那就需要写一个半循环的代码（在循环开始前或结束后需要循环体的重复代码）</p>
<p>何时使用for循环：执行次数固定的循环</p>
<p>合适使用foreach循环：数组或容器的迭代操作</p>
<h3 id="162-循环控制">16.2 循环控制</h3>
<p>应该把循环看做是一个黑盒子</p>
<p>进入循环</p>
<ul>
<li>只从一个位置进入循环</li>
<li>把初始化代码紧放在循环前面</li>
<li>用<code>while(true)</code>表示无限循环</li>
<li>在适当情况下多使用for循环</li>
<li>在while循环更适用的时候，不要使用for循环</li>
</ul>
<p>处理好循环体</p>
<ul>
<li>用 {} 把循环体中的语句括起来</li>
<li>避免空循环</li>
<li>把循环内务操作要么凡在循环的开始，要么放在循环的末尾</li>
<li>一个循环只做一件事</li>
</ul>
<p>退出循环</p>
<ul>
<li>设法确认循环能够终止</li>
<li>使循环终止条件看起来很明显</li>
<li>不要为了终止循环而胡乱改动for循环的下标</li>
<li>避免出现依赖于循环下标最终取值的代码</li>
<li>考虑使用安全计数器</li>
</ul>
<p>提前退出循环</p>
<ul>
<li>考虑在while循环中使用break语句而不用布尔标记</li>
<li>小心那些有很多break散布其中的循环</li>
<li>在循环开始处用continue进行判断</li>
<li>如果语言支持，请使用带标号break结构</li>
<li>使用break和continue时要小心谨慎</li>
</ul>
<p>检查端点</p>
<ul>
<li>开始的情况</li>
<li>任意选择的中间情况</li>
<li>最终的情况</li>
</ul>
<p>使用循环变量</p>
<ul>
<li>用整数或者枚举类型表示数组和循环的边界</li>
<li>在嵌套循环终宏使用有意义的变量命来提高其可读性</li>
<li>用有意义的名字来避免循环下标串话</li>
<li>把循环下标变量的作用域限制在本循环内</li>
</ul>
<p>循环应该有多长</p>
<ul>
<li>循环要尽可能地短，以便能够一目了然</li>
<li>把嵌套限制在3层以内</li>
<li>把长循环的内容移到子程序里</li>
<li>要让长循环格外清晰</li>
</ul>
<h3 id="163-轻松创建循环由内而外">16.3 轻松创建循环——由内而外</h3>
<p>从一种情况开始，用字面量来编写代码，然后缩进它，在外面加一个循环，然后用循环下标或计算表达式替换那些字面量。如果需要，在它的外面再套上一个循环，然后再替换掉一些字面量。</p>
<h3 id="164-循环和数组的关系">16.4 循环和数组的关系</h3>
<p>有些语言是支持直接的数组运算的，从而可以减少循环</p>
<h2 id="第17章-不常见的控制结构">第17章 不常见的控制结构</h2>
<h3 id="171-子程序中的多处返回">17.1 子程序中的多处返回</h3>
<ul>
<li>如果能增强可读性，那么就使用return</li>
<li>用防卫子句（早返回或早退出）来简化复杂的错误处理</li>
<li>减少每个子程序中return的数量</li>
</ul>
<h3 id="172-递归">17.2 递归</h3>
<ul>
<li>确认递归能够停止</li>
<li>使用安全计数器防止出现无穷递归</li>
<li>把递归限制在一个子程序内</li>
<li>留心栈空间</li>
<li>不要用递归去计算阶乘或者斐波拉契数列</li>
</ul>
<h3 id="173-goto">17.3 goto</h3>
<ul>
<li>在那些不直接支持结构化控制语句的语言里，用goto模拟那些控制结构</li>
<li>如果语言内置了等价的控制结构，那么就不要用goto</li>
<li>如果是为了提高代码效率而是用goto，请衡量此举实际带来的性能提升</li>
<li>除非你要模拟结构化语句，否则尽量在每个子程序只使用一个goto标号</li>
<li>除非你要模拟结构化语句，否则尽量让goto向前跳转而不要向后跳转</li>
<li>确认所有goto标号都被用到了</li>
<li>确认goto不会产生某些执行不到的代码</li>
</ul>
<h2 id="第18章-表驱动法">第18章 表驱动法</h2>
<h3 id="181-表驱动法使用总则">18.1 表驱动法使用总则</h3>
<p>从表里面查找信息而不使用逻辑语句，使用表驱动法的两个问题：</p>
<ul>
<li>怎样从表中查询条目：直接访问，索引访问，阶梯方位</li>
<li>应该在表里存些什么：数据，动作（代码/函数指针）</li>
</ul>
<h3 id="182-直接访问表">18.2 直接访问表</h3>
<p>如何构造查询键值：</p>
<ul>
<li>复制信息从而能够直接使用键值</li>
<li>转换键值以使其能够直接使用</li>
<li>把键值转换提取成独立的子程序</li>
</ul>
<h3 id="183-索引访问表">18.3 索引访问表</h3>
<p>先用一个基本类型的数据从一张索引表中查出一个键值，然后用这一键值查出你感兴趣的主数据，优点：</p>
<ul>
<li>节省内存空间</li>
<li>操作位于索引中的记录更廉价</li>
<li>可维护性</li>
</ul>
<h3 id="184-阶梯访问表">18.4 阶梯访问表</h3>
<p>表中的记录对于不同的数据范围有效，而不是对于不同的数据点有效。把每一个区间的上限写入一个表里，然后循环按照各区间的上限来检查分数。</p>
<ul>
<li>留心端点</li>
<li>考虑用二分查找取代顺序查找</li>
<li>考虑用索引访问来取代阶梯技术</li>
<li>把阶梯表查询操作提取成单独的子程序</li>
</ul>
<h2 id="第19章-一般控制问题">第19章 一般控制问题</h2>
<h3 id="191-布尔表达式">19.1 布尔表达式</h3>
<ul>
<li>用true和false做布尔判断，隐式地比较布尔值与true和false</li>
<li>简化复杂地表达式
<ul>
<li>拆分复杂的判断并引入新的布尔变量</li>
<li>把复杂的表达式做成布尔函数</li>
<li>用决策表代替复杂的条件</li>
</ul>
</li>
<li>编写肯定形式的布尔表达式</li>
<li>用括号使布尔表达式更清晰</li>
<li>理解布尔表达式时如何求值的，注意短路</li>
<li>按照数轴的顺序编写数值表达式</li>
<li>与0比较的指导原则
<ul>
<li>隐式地比较逻辑变量</li>
<li>把数与0相比较</li>
<li>在C中显式地比较字符和零终止符<code>(\0)</code></li>
<li>把指针与NULL相比较</li>
</ul>
</li>
<li>布尔表达式地常见问题
<ul>
<li>在C家族语言中，应该把常量放在比较地左端</li>
<li>在C++中，刻意考虑创建预处理宏来替换&amp;&amp;， ||和==</li>
<li>在Java中，应理解a==b和a.equals(b)之间的差异</li>
</ul>
</li>
</ul>
<h3 id="192-复合语句语句块">19.2 复合语句（语句块）</h3>
<ul>
<li>把括号一起写出</li>
<li>用括号来把条件表达清楚</li>
</ul>
<h3 id="193-空语句">19.3 空语句</h3>
<ul>
<li>小心使用空语句</li>
<li>为空语句创建一个DoNothing()预处理宏或者内联函数</li>
<li>考虑如果换用一个非空的循环，是否会让代码更清晰</li>
</ul>
<h3 id="194-驯服危险的深层嵌套">19.4 驯服危险的深层嵌套</h3>
<ul>
<li>通过重复检测条件中的某一部分来简化嵌套的if语句</li>
<li>用break块来简化嵌套if</li>
<li>把嵌套if转换成一组if-then-else语句</li>
<li>把嵌套if转换成case语句</li>
<li>把深层嵌套的代码抽取出来放进单独的子程序</li>
<li>使用一种更加面向对象的方法</li>
<li>重新设计深层嵌套的代码</li>
</ul>
<h3 id="195-编程基础结构化编程">19.5 编程基础：结构化编程</h3>
<p>一个应用程序应该只采用一些单入单出的控制结构</p>
<ul>
<li>顺序</li>
<li>选择</li>
<li>迭代</li>
</ul>
<h3 id="196-控制结构与复杂度">19.6 控制结构与复杂度</h3>
<p>降低程序的复杂度，以及为了理解它所需要的专心程度。</p>
<h1 id="第5部分-代码改善">第5部分 代码改善</h1>
<h2 id="第20章-软件质量概述">第20章 软件质量概述</h2>
<h3 id="201-软件质量的特性">20.1 软件质量的特性</h3>
<ul>
<li>外在的质量特性
<ul>
<li>正确性</li>
<li>可用性</li>
<li>效率</li>
<li>可靠性</li>
<li>完整性</li>
<li>适应性</li>
<li>精确性</li>
<li>健壮性</li>
</ul>
</li>
<li>内在的质量特性
<ul>
<li>可维护性</li>
<li>灵活性</li>
<li>可移植性</li>
<li>可重用性</li>
<li>可读性</li>
<li>可测试性</li>
<li>可理解性</li>
</ul>
</li>
<li>这些特性是相互制约的</li>
</ul>
<h3 id="202-改善软件质量的技术">20.2 改善软件质量的技术</h3>
<ul>
<li>软件质量目标</li>
<li>明确定义质量保证工作</li>
<li>测试策略</li>
<li>软件工程指南</li>
<li>非正式技术复查</li>
<li>正式技术复查</li>
<li>外部审查</li>
</ul>
<p>开发过程</p>
<ul>
<li>对变更控制的过程</li>
<li>结果的量化</li>
<li>制作原型</li>
</ul>
<h3 id="203-不同质量保证技术的相对效能">20.3 不同质量保证技术的相对效能</h3>
<p>代码复查的成本效益要高于测试，推荐阵容：</p>
<ul>
<li>对所有的需求、架构以及系统关键部分的设计进行正式检查</li>
<li>建模或者创建原型</li>
<li>代码阅读或者检查</li>
<li>执行测试</li>
</ul>
<h3 id="204-什么时候进行质量保证工作">20.4 什么时候进行质量保证工作</h3>
<p>在早期阶段就开始强调质量保证工作，并贯彻到项目的余下部分中。</p>
<h3 id="205-软件质量的普遍原理">20.5 软件质量的普遍原理</h3>
<p>改善质量以降低开发成本：减少代码返工上的时间。</p>
<h2 id="第21章-协同构建">第21章 协同构建</h2>
<h3 id="211协同开发实践概要">21.1协同开发实践概要</h3>
<ul>
<li>协同构建是其它质量保证技术的补充</li>
<li>协同构建有利于传授公司文化以及编程专业知识</li>
<li>集体所有权适用于所有形式的协同构建</li>
<li>在构建前后都应保持协作</li>
</ul>
<h3 id="212-结对编程">21.2 结对编程</h3>
<p>成功运用结对编程的关键</p>
<ul>
<li>用编码规范类支持结对编程</li>
<li>不要让结对编程变成旁观</li>
<li>不要强迫在简单的问题上使用结对编程</li>
<li>有规律地对人员和分配地工作任务进行轮换</li>
<li>鼓励双方跟上对方的步伐</li>
<li>确认两个人都能够看到显示器</li>
<li>不要强迫程序员与自己关系紧张的人组队</li>
<li>避免新手组合</li>
<li>指定一个组长</li>
</ul>
<h3 id="213-正式检查">21.3 正式检查</h3>
<ul>
<li>
<p>你期待相差能够带来什么结果：捕捉到60%的缺陷，评估进度。</p>
</li>
<li>
<p>详查中的人员角色：主持人，作者，评论员、记录员、经理（最好不出席）</p>
</li>
<li>
<p>详查的一般步骤：计划，概述，准备，详查回忆，详查报告，返工，跟进，第三个小时的会议</p>
</li>
<li>
<p>对详查进行细调：切忌胡乱的引入变化</p>
</li>
<li>
<p>注意详查中的自尊心</p>
</li>
</ul>
<h3 id="214-其它类型的协同开发实践">21.4 其它类型的协同开发实践</h3>
<ul>
<li>走查：能找到20%到40%的缺陷，尽量使用更加正式的详查</li>
<li>代码阅读：90%的缺陷是在准备复查会议时发现的</li>
<li>公开演示：这只是管理层的复查</li>
</ul>
<h2 id="第22章-开发者测试">第22章 开发者测试</h2>
<h3 id="221-开发者测试在软件质量中的角色">22.1 开发者测试在软件质量中的角色</h3>
<ul>
<li>一个成功的测试应该弄垮软件</li>
<li>测试永远不可能彻底证明程序中没有错误</li>
<li>测试本身并不能改善软件的质量</li>
<li>测试时要求你假设会在代码里面找到错误</li>
</ul>
<p>在构建中测试，能更彻底的测试。</p>
<h3 id="222-开发者测试的推荐方法">22.2 开发者测试的推荐方法</h3>
<ul>
<li>对每一项相关的需求进行测试</li>
<li>对每一个相关的设计关注点进行测试</li>
<li>用基础测试来扩充针对需求和设计的详细测试用例</li>
<li>使用一个检查表记录历史错误</li>
</ul>
<p>可能的情况下，不妨测试先行。</p>
<p>开发者测试的局限性：</p>
<ul>
<li>开发者测试倾向于干净测试</li>
<li>开发者测试对覆盖率有过于乐观的估计</li>
<li>开发者测试往往会忽略一些更复杂的测试覆盖率类型</li>
</ul>
<h3 id="223-测试技巧锦囊">22.3 测试技巧锦囊</h3>
<ul>
<li>进行完整的测试是不可能的，窍门在于选择那些最有可能找出错误的测试用例</li>
<li>结构化的基础测试：需要去测试程序中每一条语句至少一次，尽量覆盖所有的已定义—-已使用数据流形式</li>
<li>等价类划分：相同等价类只需要测试一个用例</li>
<li>猜测程序会在哪里出错：边界值分析/复合边界值</li>
<li>几类坏数据：数据太少/太多的数据/错误的数据/查高度错误的数据/为初始化的数据</li>
<li>几类好数据：正常的情况/最小的正常局面/最大的正常局面/与旧数据的兼容性</li>
<li>采用容易手工检查的测试用例</li>
</ul>
<h3 id="224-典型错误">22.4 典型错误</h3>
<p>绝大多数错误往往与少数几个具有严重缺陷的子程序有关。（二八定律）</p>
<ul>
<li>大多数的错误的影响范围是相当有限的</li>
<li>许多错误发生在构建的范畴之外</li>
<li>大多数的构建期错误是编程人员的失误造成的</li>
<li>笔误是一个常见的问题根源</li>
<li>错误理解设计师是犯错的常见原因</li>
<li>大多数错误很容易修正</li>
<li>总结所在组织中对付错误的经验</li>
</ul>
<p>小型项目中，构建中的缺陷占了所有错误的大多数，大型项目占比有所下降。</p>
<p>测试本身也可能有错误：</p>
<ul>
<li>检查你的工作</li>
<li>开发软件的时候就要计划好测试用例</li>
<li>保留你的测试用例</li>
<li>将单元测试纳入测试框架</li>
</ul>
<h3 id="225-测试支持工具">22.5 测试支持工具</h3>
<ul>
<li>为测试各个类构建脚手架</li>
<li>Diff工具</li>
<li>测试数据生成器</li>
<li>覆盖率监视器</li>
<li>数据记录器/日志记录器</li>
<li>符号调试器</li>
<li>系统干扰器</li>
<li>错误数据库</li>
</ul>
<h3 id="226-改善测试过程">22.6 改善测试过程</h3>
<ul>
<li>有计划的测试</li>
<li>重新测试（回归测试）</li>
<li>自动化测试</li>
</ul>
<h3 id="227-保留测试记录">22.7 保留测试记录</h3>
<h2 id="第23章-调试">第23章 调试</h2>
<h3 id="231-调试概述">23.1 调试概述</h3>
<p>错误中学习：</p>
<ul>
<li>理解你正在编写的程序</li>
<li>明确你犯了那种类型的错误</li>
<li>从代码阅读者的角度分析代码质量</li>
<li>审视自己解决问题的方法</li>
<li>审视自己修正缺陷的方法</li>
</ul>
<p>错误的调试方法：</p>
<ul>
<li>凭猜测找出缺陷</li>
<li>不要把时间浪费在理解问题上</li>
<li>用最唾手可得的方式修正错误</li>
<li>迷信式调试</li>
</ul>
<h3 id="232-寻找缺陷">23.2 寻找缺陷</h3>
<p>科学的调试方法</p>
<ol>
<li>将错误状态稳定下来</li>
<li>确定错误的来源</li>
<li>修补缺陷</li>
<li>对所修补的地方进行测试</li>
<li>查找是否还有类似的错误</li>
</ol>
<p>寻找缺陷的一些小建议：</p>
<ul>
<li>在构造假设时考虑所有的可用数据</li>
<li>提炼产生错误的测试用例</li>
<li>在自己的单元cesium族中测试代码</li>
<li>利用可用的工具</li>
<li>采用多种不同的方法重现错误</li>
<li>用更多的数据生成更多的假设</li>
<li>利用否定性测试用例的结果</li>
<li>对可能测假设尝试头脑风暴</li>
<li>在桌上放一个记事本，把需要尝试的事情逐条列出</li>
<li>缩小嫌疑代码的范围</li>
<li>对之前出现共的缺陷的类和子程序保持警惕</li>
<li>检查最近修改过的代码</li>
<li>扩展嫌疑代码的范围</li>
<li>增量式集成</li>
<li>检查常见的缺陷</li>
<li>同其他人讨论问题</li>
<li>抛开问题，休息一下</li>
</ul>
<p>蛮力调试有可能说有效的方法，要为“快速肮脏调试法”的时候设置用给时间上限，做出一张蛮力调试方法列表</p>
<p>语法错误：</p>
<ul>
<li>不要过分信任编译器信息中的行号</li>
<li>不要迷信编译器信息不要相信编译器的第二条信息</li>
<li>分而治之</li>
<li>找出没有配对的注释或者引号</li>
</ul>
<h3 id="233-修正缺陷">23.3 修正缺陷</h3>
<ul>
<li>在动手之前先要理解问题</li>
<li>理解程序本身，而不仅仅是问题</li>
<li>验证对错误的分析</li>
<li>放松一下</li>
<li>保存最初的源代码</li>
<li>治本，而不是治标</li>
<li>修改代码时一定要有恰当的理由</li>
<li>一次只做一个改动</li>
<li>检查自己的改动</li>
<li>增加能暴露问题的单元测试</li>
<li>搜索类似的缺陷</li>
</ul>
<h3 id="234-调试中的心理因素">23.4 调试中的心理因素</h3>
<p>人总期望一个新的现象类似于它们见过的某种现象</p>
<ul>
<li>证明了养成良好的编程习惯的重要性</li>
<li>程序员会对某些部分的代码视而不见，有时候能提高效率，有时候会陷入盲区</li>
</ul>
<h3 id="235-调试工具">23.5 调试工具</h3>
<ul>
<li>源代码比较工具</li>
<li>编译器的警告信息</li>
<li>增强的语法检查和逻辑检查</li>
<li>执行性能剖析器</li>
<li>测试框架/脚手架</li>
<li>调试器</li>
</ul>
<h2 id="第24章-重构">第24章 重构</h2>
<h3 id="241-软件演化的类型">24.1 软件演化的类型</h3>
<p>演化应当提升程序的内在质量</p>
<h3 id="242-重构简介">24.2 重构简介</h3>
<p>重构的理由：</p>
<ul>
<li>代码重复</li>
<li>冗长的子程序</li>
<li>循环过长或嵌套过深</li>
<li>内聚性太差的类</li>
<li>类的接口未能提供层次一致的抽象</li>
<li>拥有太多参数的参数列表</li>
<li>类的内部修改往往被局限于某个部分</li>
<li>变化导致对多个类的相同修改</li>
<li>对继承体系的同样修改</li>
<li>case语句需要做相同的修改</li>
<li>同时使用的相关数据并未以类的方式进行组织</li>
<li>成员函数使用其他类的特征比使用自身类的特征还要多</li>
<li>过多使用基本数据类型</li>
<li>某个类无所事事</li>
<li>一系列传递流浪数据的子程序</li>
<li>中间人对象无事可做</li>
<li>某个类同其他类关系过于亲密</li>
<li>子程序命名不恰当</li>
<li>数据成员被设置为公用</li>
<li>某个派生类仅使用了基类的很少一部分成员函数</li>
<li>注释被用于解释难懂的代码</li>
<li>使用了全局变量</li>
<li>在子程序调用请前使用了设置代码，或在调用后使用了收尾代码</li>
<li>程序中的一些代码似乎是在将来的某个时候才会用到的</li>
</ul>
<h3 id="243-特定的重构">24.3 特定的重构</h3>
<p>数据级的重构</p>
<ul>
<li>用具名常量替代神秘数字</li>
<li>使变量的名字更为清晰且传递更多信息</li>
<li>将表达式内联化</li>
<li>用函数来代替表达式</li>
<li>引入中间变量</li>
<li>用多个单一用途变量代替某个多用途变量</li>
<li>在局部用途中使用局部变量而不是参数</li>
<li>将基础数据类型转化为类</li>
<li>将一组类型码转化为类或枚举类型</li>
<li>将一组类型码转化为一个基类及其相应派生类</li>
<li>将数组转换为对象</li>
<li>把群集封装起来</li>
<li>用数据类来代替传统记录</li>
</ul>
<p>语句级的重构</p>
<ul>
<li>分解布尔表达式</li>
<li>将复杂布尔表达式转换成命名准确的布尔函数</li>
<li>合并条件语句中不同部分的重复代码片段</li>
<li>使用break或return而不是循环控制变量</li>
<li>在嵌套的if-then-else语句中一旦知道答案就立即返回，而不是去赋一个返回值</li>
<li>用多态来替代条件语句（尤其是重复的case语句）</li>
<li>创建和使用null对象而不是去检测空值</li>
</ul>
<p>子程序级重构</p>
<ul>
<li>提取子程序或者方法</li>
<li>将子程序的代码内联化</li>
<li>将冗长的子程序转换为类</li>
<li>用简单算法替代复杂算法</li>
<li>增加参数</li>
<li>删除参数</li>
<li>将查询从修改操作中独立出来</li>
<li>合并相似的子程序，通过参数区分它们的功能</li>
<li>将行为取决于参数的子程序拆分开来</li>
<li>传递整个对象而非特定成员</li>
<li>传递特定成员而非整个对象</li>
<li>包装向下转型的操作</li>
</ul>
<p>类实现的重构</p>
<ul>
<li>将值对象转化为引用对象</li>
<li>将引用对象转化为值对象</li>
<li>用数据初始化替代虚函数</li>
<li>改变成员函数或成员数据的位置</li>
<li>将特殊代码提取为派生类</li>
<li>将相似代码结合起来放置到基类中</li>
</ul>
<p>类接口的重构</p>
<ul>
<li>将成员函数放到另一个类中</li>
<li>将一个类变成两个</li>
<li>删除类</li>
<li>去除委托关系</li>
<li>去掉中间人</li>
<li>用委托代替继承</li>
<li>用继承代替委托</li>
<li>引入外部的成员函数</li>
<li>引入扩展类</li>
<li>对暴露在外的成员变量进行封装</li>
<li>对于不能修改的类成员，删除相关的<code>set()</code> 成员函数</li>
<li>隐藏那些不会在类之外被用到的成员函数</li>
<li>封装不使用的成员函数</li>
<li>合并那些实现非常相似的基类和派生类</li>
</ul>
<p>系统级重构：</p>
<ul>
<li>为无法控制的数据创建明确的索引源</li>
<li>将单向的类联系改为双向的类联系</li>
<li>将双向的类联系改为单向的类联系</li>
<li>用Factory Method模式而不是简单地构造函数</li>
<li>用异常取代错误处理代码，或者做相反方向的变换</li>
</ul>
<h3 id="244-安全的重构">24.4 安全的重构</h3>
<ul>
<li>保存初始代码</li>
<li>重构的步伐请小些</li>
<li>同一时间只做一项重构</li>
<li>把要做的事情一条条列出来</li>
<li>设置一个停车场</li>
<li>多使用检查点</li>
<li>利用编译器警告信息</li>
<li>重新测试</li>
<li>增加测试用例</li>
<li>检查对代码的修改</li>
<li>根据重构风险级别来调整重构方法</li>
</ul>
<p>不宜重构的情况</p>
<ul>
<li>不要把重构当做先写后改的代名词</li>
<li>避免用重构代替重写</li>
</ul>
<h3 id="245-重构策略">24.5 重构策略</h3>
<ul>
<li>在增加子程序时进行重构</li>
<li>在添加类的时候进行重构</li>
<li>在修补缺陷的时候进行重构</li>
<li>关于易于出错的模块</li>
<li>关注高度复杂的模块</li>
<li>在维护环境下，改善你手中正在处理的代码</li>
<li>定义清楚感干净代码和拙劣代码之间的边界，然后尝试把代码移过这条边界</li>
</ul>
<h2 id="第25章-代码调整策略">第25章 代码调整策略</h2>
<h3 id="251-性能概述">25.1 性能概述</h3>
<ul>
<li>相对与代码质量，用户更关心的是程序的外在特性</li>
<li>从以下角度来思考效率问题
<ul>
<li>程序需求</li>
<li>程序的设计</li>
<li>类和子程序的设计</li>
<li>程序同操作系统的交互</li>
<li>代码编译</li>
<li>硬件</li>
<li>代码调整</li>
</ul>
</li>
</ul>
<h3 id="252-代码调整简介">25.2 代码调整简介</h3>
<ul>
<li>应当衡量代码的各个部分，找出最需要关注的地方，然后集中火力来对付占用了绝大部分资源的少量代码</li>
<li>一些无稽之谈
<ul>
<li>在高级语言中，减少代码的行数就可以提升所生成的 机器代码的运行速度</li>
<li>特定运算可能比其他的快，代码规模也较小</li>
<li>应当随时随地进行优化</li>
<li>程序的运行速度同其正确性同等重要</li>
</ul>
</li>
<li>平铺直叙的代码有利于编译器的优化</li>
</ul>
<h3 id="253-常见的低效率之源">25.3 常见的低效率之源</h3>
<ul>
<li>输入/输出操作</li>
<li>分页</li>
<li>系统调用</li>
<li>解释型语言</li>
<li>错误</li>
</ul>
<h3 id="254-性能测量">25.4 性能测量</h3>
<p>如果没有策略性能变化，想当然的优化结果往往只是使得代码更加晦涩难懂。</p>
<h3 id="255-反复调整">25.5 反复调整</h3>
<p>结合多种方法，不断突破瓶颈。</p>
<h2 id="第26章-代码调整技术">第26章 代码调整技术</h2>
<p>以牺牲程序内部结构的某些特性来换取更高的性能</p>
<h3 id="261-逻辑">26.1 逻辑</h3>
<ul>
<li>在知道答案之后停止判断</li>
<li>按照出现的频率来调整判断顺序</li>
<li>相似逻辑结构之间的性能比较</li>
<li>用查询表替代复杂表达式</li>
<li>使用惰性求值</li>
</ul>
<h3 id="262-循环">26.2 循环</h3>
<ul>
<li>将判断外提</li>
<li>合并</li>
<li>展开</li>
<li>尽可能减少在循环内部做的工作</li>
<li>哨兵值</li>
<li>把最忙的循环放在最内层</li>
<li>削减强度</li>
</ul>
<h3 id="263-数据变换">26.3 数据变换</h3>
<ul>
<li>使用整型数而不是浮点数</li>
<li>数组维度尽可能少</li>
<li>尽可能减少数组引用</li>
<li>使用辅助索引</li>
<li>使用缓存机制</li>
</ul>
<h3 id="264-表达式">26.4 表达式</h3>
<ul>
<li>利用代数恒等式</li>
<li>削弱运算强度</li>
<li>编译期初始化</li>
<li>小心系统函数</li>
<li>使用正确的常量类型</li>
<li>预先算出结果</li>
<li>删除公共子表达式</li>
</ul>
<h3 id="265-子程序">26.5 子程序</h3>
<ul>
<li>将子程序重写为内联</li>
</ul>
<h3 id="266-用低级语言重写代码">26.6 用低级语言重写代码</h3>
<ul>
<li>用高级语言编写整个应用程序</li>
<li>对程序进行完整的测试，验证其正确性</li>
<li>如果测试后发现需要改进程序性能，就对程序进行分析，确定出热点。</li>
<li>把几小段代码在低级语言中重写，以此提高这个题性能</li>
</ul>
<h3 id="267-变得越多事情反而越没变">26.7 变得越多，事情反而越没变</h3>
<ul>
<li>对每一次的改进进行量化</li>
</ul>
<h1 id="第6部分-系统考虑">第6部分 系统考虑</h1>
<h2 id="第27章-程序规模对构建的影响">第27章 程序规模对构建的影响</h2>
<h3 id="271-交流的规模">27.1 交流的规模</h3>
<p>交流路径的数量与项目成员数量的平方大致成正比</p>
<h3 id="272-项目规模的范围">27.2 项目规模的范围</h3>
<h3 id="273-项目规模对错误的影响">27.3 项目规模对错误的影响</h3>
<p>随着项目规模的增大，通常更大一部分错误要归咎于需求和设计。</p>
<h3 id="274-项目规模对生产率的影响">27.4 项目规模对生产率的影响</h3>
<p>小项目的生产率回避大项目高出2~3倍。</p>
<h3 id="275-项目规模对开发活动的影响">27.5 项目规模对开发活动的影响</h3>
<ul>
<li>随着项目的增大，构建活动的主导地位下降</li>
<li>程序、产品、系统和系统产品的区别</li>
<li>项目越大，复杂度也越大，也就要求有意识地去关注方法论</li>
</ul>
<h2 id="第28章-管理构建">第28章 管理构建</h2>
<h3 id="281-鼓励良好地编码实践">28.1 鼓励良好地编码实践</h3>
<ul>
<li>
<p>设定标准的考虑事项</p>
</li>
<li>
<p>鼓励良好的编码实践的技术</p>
<ul>
<li>给项目的每一部分分派两个人</li>
<li>进行复查代码</li>
<li>要求代码签名</li>
<li>安排一些好的代码示例供人参考</li>
<li>强调代码是公有财产</li>
<li>奖励好代码</li>
<li>一份简单的标准</li>
</ul>
</li>
</ul>
<h3 id="282-配置管理">28.2 配置管理</h3>
<p>系统化地定义项目工件和处理变化，以使项目一直保持完整性。</p>
<p>一些控制设计变更的指导原则：</p>
<ul>
<li>遵循某种系统变化的变更控制手续</li>
<li>成组地处理变更请求</li>
<li>评估每项变更的成本</li>
<li>提防大量的变更请求</li>
<li>成立变更控制委员会或者类似机构</li>
<li>警惕官僚主义，但也不要因为害怕官僚主义而排斥有效的变更控制</li>
</ul>
<p>软件代码变更，使用版本控制软件。</p>
<p>工具版本也要纳入版本控制之中。</p>
<p>机器配置也尽量标准化。</p>
<p>做好备份。</p>
<h3 id="283-评估构建进度表">28.3 评估构建进度表</h3>
<ul>
<li>建立目标</li>
<li>为评估留出时间，并且做出计划</li>
<li>清楚地说明软件需求</li>
<li>在底层细节层面进行评估</li>
<li>使用若干不同地评估方法，并且比较其结果</li>
<li>定期做重新评估</li>
</ul>
<p>如果你落后了怎么办？</p>
<ul>
<li>希望自己能赶上</li>
<li>扩充团队</li>
<li>缩减项目范围</li>
</ul>
<h3 id="284-度量">28.4 度量</h3>
<ul>
<li>任何一种项目特性都是刻意用某种方法来度量地，而且总会比根本不度量好得多</li>
<li>留心度量地副作用</li>
<li>反对度量就是认为最好不要去了解项目中到底在发生什么</li>
</ul>
<h3 id="285-把程序员当人看">28.5 把程序员当人看</h3>
<h3 id="286-管理你的管理者">28.6 管理你的管理者</h3>
<p>你要表现得使你的管理者认为他仍然在管理你。</p>
<h2 id="第29章-集成">第29章 集成</h2>
<h3 id="291-集成方法的重要性">29.1 集成方法的重要性</h3>
<h3 id="292-集成频率阶段式集成还是增量集成">29.2 集成频率——阶段式集成还是增量集成</h3>
<p>阶段式集成</p>
<ul>
<li>
<p>单元开发：设计、编码、测试、调试各个类</p>
</li>
<li>
<p>系统集成：将这些类组成一个庞大的系统</p>
</li>
<li>
<p>系统瓦解：测试并调试整个系统</p>
<p>增量集成</p>
</li>
<li>
<p>开发一个小的系统功能部件</p>
</li>
<li>
<p>设计、编码、测试、调试某个类</p>
</li>
<li>
<p>将这个新的类集成到系统骨架上</p>
</li>
</ul>
<p>增量集成的益处：</p>
<ul>
<li>易于定位错误</li>
<li>及早在项目里取得系统级的成果</li>
<li>改善对进度的监控</li>
<li>改善客户关系</li>
<li>更加充分地测试系统中地各个单元</li>
<li>能在更短地开发进度计划内建造出整个系统</li>
</ul>
<h3 id="293-增量集成的策略">29.3 增量集成的策略</h3>
<ul>
<li>自顶向下集成：首先加入顶部的类，最后加入底部的类</li>
<li>自底向上集成：先集成底部的类，后集成顶部的类</li>
<li>三明治集成</li>
<li>风险导向的集成：困难部件优先集成法</li>
<li>功能导向的集成</li>
<li>T型集成</li>
</ul>
<h3 id="294-daliy-build与冒烟测试">29.4 Daliy Build与冒烟测试</h3>
<ul>
<li>每日构建</li>
<li>检查失败的build</li>
<li>每天进行冒烟测试：能够暴露主要的问题</li>
<li>让冒烟测试与时俱进</li>
<li>将daliy build和冒烟测试自动化</li>
<li>成立build小组</li>
<li>仅当有意义时，才将修订（revsions）加入build中</li>
<li>但是别等太久才将修订加入进来</li>
<li>要求开发人员把他的代码添加到系统之前，进行冒烟测试</li>
<li>为即将build的代码准备一块暂存区</li>
<li>惩罚破坏build的人</li>
<li>在早上发布build</li>
<li>即使有压力，也要进行daily build和冒烟测试</li>
</ul>
<h2 id="第30章-编程工具">第30章 编程工具</h2>
<h3 id="301-设计工具">30.1 设计工具</h3>
<p>计算机辅助设计工具(CASE)</p>
<h3 id="302-源代码工具">30.2 源代码工具</h3>
<p>编辑</p>
<ul>
<li>IDE</li>
<li>查找与替换</li>
<li>diff工具</li>
<li>merge工具</li>
<li>源代码美化器</li>
<li>生成接口文档的工具</li>
<li>模板</li>
<li>交叉引用工具</li>
<li>类的继承体系生成器</li>
</ul>
<p>分析代码质量</p>
<ul>
<li>吹毛求疵的语法/语义检查器</li>
<li>尺度报告器</li>
</ul>
<p>重构源代码</p>
<ul>
<li>重构器</li>
<li>结构改组工具</li>
<li>代码翻译器</li>
</ul>
<p>版本控制</p>
<p>数据字典</p>
<h3 id="303-可执行代码工具">30.3 可执行代码工具</h3>
<p>产生目标码</p>
<ul>
<li>编译器与链接器</li>
<li>Build工具</li>
<li>程序库</li>
<li>代码生成向导</li>
<li>安装</li>
<li>预处理器</li>
</ul>
<p>调试</p>
<p>测试</p>
<p>代码调整</p>
<ul>
<li>执行剖析器</li>
<li>汇编代码清单和反汇编</li>
</ul>
<h3 id="304-工具导向的环境">30.4 工具导向的环境</h3>
<p>UNIX工具箱</p>
<h3 id="305-打造你自己的编程工具">30.5 打造你自己的编程工具</h3>
<ul>
<li>项目特有的工具</li>
<li>脚本</li>
</ul>
<h3 id="306-工具幻境">30.6 工具幻境</h3>
<h1 id="第7部分-软件工艺">第7部分 软件工艺</h1>
<h2 id="第31章-布局与风格">第31章 布局与风格</h2>
<h3 id="311-基本原则">31.1 基本原则</h3>
<p>好的布局凸现程序的逻辑结构</p>
<p>良好布局的目标：</p>
<ul>
<li>准确表现代码的逻辑结构</li>
<li>始终如一地表现代码的逻辑结构</li>
<li>改善可读性</li>
<li>经得起修改</li>
</ul>
<h3 id="312-布局技术">31.2 布局技术</h3>
<ul>
<li>空白
<ul>
<li>分组</li>
<li>空行</li>
<li>缩进</li>
</ul>
</li>
<li>括号</li>
</ul>
<h3 id="313-布局风格">31.3 布局风格</h3>
<ul>
<li>纯块结构</li>
<li>模仿纯块结构</li>
<li>使用begin-end对（花括号）指定块边界</li>
<li>行尾布局</li>
</ul>
<h3 id="314-控制结构的布局">31.4 控制结构的布局</h3>
<p>格式化控制结构块的要点</p>
<ul>
<li>不要用未缩进的begin-end对</li>
<li>别让begin和end两次缩进</li>
</ul>
<p>其他考虑</p>
<ul>
<li>段落之间要使用空行</li>
<li>单语句代码块的格式要前后统一</li>
<li>对于复杂的表达式，将条件分隔放在几行上</li>
<li>不用goto</li>
<li>case语句不要有行尾布局的例外</li>
</ul>
<h3 id="315-单条语句的布局">31.5 单条语句的布局</h3>
<ul>
<li>语句长度需要有所限制</li>
<li>用空格使语句显得清楚
<ul>
<li>使用空格会让逻辑表达式更易读</li>
<li>使用空格会让数组引用更容易读</li>
<li>受用空格让子程序参数更容易读</li>
</ul>
</li>
<li>格式化后续行
<ul>
<li>使续行明显</li>
<li>把紧密关联的元素放在一起</li>
<li>将子程序调用的后续行按标准量缩进</li>
<li>使后续行的结尾易于发现</li>
<li>将控制语句后续行缩进以标准的空格数</li>
<li>不要将赋值语句按等号对齐</li>
<li>对赋值语句后续行按标准量对齐</li>
</ul>
</li>
<li>每行仅写一条语句</li>
<li>数据声明的布局
<ul>
<li>每行只声明一个数据</li>
<li>变量声明应尽量接近其首次使用的位置</li>
<li>合理组织声明顺序</li>
<li>C++中，声明指针变量是请把星号靠近变量名，或者是去声明指针类型</li>
</ul>
</li>
</ul>
<h3 id="316-注释的布局">31.6 注释的布局</h3>
<ul>
<li>注释的缩进要与相应代码一致</li>
<li>每行注释用至少一个空行分开</li>
</ul>
<h3 id="317-子程序的布局">31.7 子程序的布局</h3>
<ul>
<li>用空行分隔子程序的各部分</li>
<li>将子程序参数按标准缩进</li>
</ul>
<h3 id="318-类的布局">31.8 类的布局</h3>
<ul>
<li>类接口的布局
<ul>
<li>说明类及其完整用法的头部注释</li>
<li>构造函数和析构函数</li>
<li>public子程序</li>
<li>protected子程序</li>
<li>private子程序和数据成员</li>
</ul>
</li>
<li>类实现的布局
<ul>
<li>描述类所在文件之内容的头部注释</li>
<li>类数据</li>
<li>public子程序</li>
<li>protected子程序</li>
<li>private子程序</li>
</ul>
</li>
<li>如果文件包含多个类，要清楚地标出每一个类</li>
<li>文件和程序布局
<ul>
<li>一个文件应只有一个类</li>
<li>文件的命名应与类名相关</li>
<li>在文件中清晰地风格子程序</li>
<li>按字母顺序排列子程序</li>
</ul>
</li>
</ul>
<h2 id="第32章-自说明代码">第32章 自说明代码</h2>
<h3 id="321-外部文档">32.1 外部文档</h3>
<ul>
<li>单元开发文件夹</li>
<li>详细设计文档</li>
</ul>
<h3 id="322-编程风格作文档">32.2 编程风格作文档</h3>
<p>在代码层文档中其主要作用地因素并非注释，而是好的编程风格</p>
<h3 id="323-注释或不注释">32.3 注释或不注释</h3>
<h3 id="324-高效注释之关键">32.4 高效注释之关键</h3>
<p>注释种类</p>
<ul>
<li>重复代码：不要写这种注释</li>
<li>解释代码：考虑是不是代码写得不清楚</li>
<li>代码标记：如TODO标记</li>
<li>概述代码</li>
<li>代码意图说明</li>
<li>传达代码无法表达的信息</li>
</ul>
<p>高效注释</p>
<ul>
<li>采用不会打断或抑制修改的注释风格</li>
<li>用伪代码编程法减少注释时间</li>
<li>将注释集成到你的开发风格中</li>
<li>性能不是逃避注释的好借口</li>
</ul>
<p>最佳注释量：约每十条语句有一个注释？</p>
<h3 id="325-注释技术">32.5 注释技术</h3>
<ul>
<li>注释单行
<ul>
<li>不要随意添加无关注释</li>
<li>不要对单行代码做行尾注释</li>
<li>不要对多样代码做行尾注释</li>
<li>行尾注释用于数据声明</li>
<li>避免用行尾注释存放维护注记</li>
<li>用行尾注释编辑块尾</li>
</ul>
</li>
<li>注释代码段
<ul>
<li>注释应表达代码的意图</li>
<li>代码本身应尽力做好说明</li>
<li>注释代码时应注重why而不是how</li>
<li>用注释未后面的内容做铺垫</li>
<li>让每个注释都有用</li>
<li>说明非常规做法</li>
<li>别用缩略语</li>
<li>将主次注释区分开</li>
<li>错误或语言环境独特点都要加注释</li>
<li>给出违背良好编程风格的理由</li>
<li>不要注释投机取巧的代码，应重写之</li>
</ul>
</li>
<li>注释数据声明
<ul>
<li>注释数值单位</li>
<li>对数值的允许范围给出注释</li>
<li>注释编码含义</li>
<li>注释对输入数据的限制</li>
<li>注释“位标志”</li>
<li>将于变量相关的注释通过变量名关联起来</li>
<li>注释全局数据</li>
</ul>
</li>
<li>注释控制解构
<ul>
<li>应在if，case、循环或者代码段前加上注释</li>
<li>应在每个控制结构后加上注释</li>
<li>将循环结束处的注释看成是代码太复杂的征兆</li>
</ul>
</li>
<li>注释子程序
<ul>
<li>注释应靠近其说明的代码</li>
<li>在子程序上部用一两句话说明之</li>
<li>在声明参数处注释这些参数</li>
<li>利用诸如javadoc之类的代码说明工具</li>
<li>分清输入和输出参数</li>
<li>注释接口假设</li>
<li>对子程序的局限性作注释</li>
<li>说明子程序的全局效果</li>
<li>记录所用算法的来源</li>
<li>用注释标记程序的各部分</li>
</ul>
</li>
<li>注释类、文件和程序
<ul>
<li>说明该类的设计方法</li>
<li>说明局限性、用法假设等</li>
<li>注释类接口</li>
<li>不要在类接口处说明实现细节</li>
<li>说明各文件的意图和内容</li>
<li>将文件命名为与其内容相关的名字</li>
</ul>
</li>
<li>程序注释以书本为范例</li>
</ul>
<h3 id="326-ieee标准">32.6 IEEE标准</h3>
<h2 id="第33章-个人性格">第33章 个人性格</h2>
<h3 id="331-个人是否和本书话题无关">33.1 个人是否和本书话题无关</h3>
<h3 id="332-聪明和谦虚">33.2 聪明和谦虚</h3>
<h3 id="333-求知欲">33.3 求知欲</h3>
<ul>
<li>在开发过程中建立自我意识</li>
<li>试验</li>
<li>阅读解决问题的有关方法</li>
<li>在行动之前作分析和计划</li>
<li>学习成功项目的开发经验</li>
<li>阅读文档</li>
<li>阅读其他书本期刊</li>
<li>同专业人士交往</li>
<li>向专业开发看齐</li>
</ul>
<h3 id="334-诚实">33.4 诚实</h3>
<h3 id="335-交流与合作">33.5 交流与合作</h3>
<h3 id="336-创造力和纪律">33.6 创造力和纪律</h3>
<h3 id="337-懒惰">33.7 懒惰</h3>
<h3 id="338-不如你想象中那样起作用的性格因素">33.8 不如你想象中那样起作用的性格因素</h3>
<ul>
<li>坚持</li>
<li>经验</li>
<li>编程狂人</li>
</ul>
<h3 id="339-习惯">33.9 习惯</h3>
<h2 id="第34章-软件工艺的话题">第34章 软件工艺的话题</h2>
<h3 id="341-征服复杂性">34.1 征服复杂性</h3>
<h3 id="342-精选开发过程">34.2 精选开发过程</h3>
<h3 id="343-首先为人写程序其次才是为机器">34.3 首先为人写程序，其次才是为机器</h3>
<h3 id="344-program-into-your-language-not-in-it">34.4 Program into Your Language， Not in it</h3>
<h3 id="345-借助规范集中注意力">34.5 借助规范集中注意力</h3>
<h3 id="346-基于问题域编程">34.6 基于问题域编程</h3>
<h3 id="347-当心落石">34.7 当心落石</h3>
<h3 id="348-迭代反反复复一次又一次">34.8 迭代，反反复复，一次又一次</h3>
<h3 id="349-汝当分离软件于信仰">34.9 汝当分离软件于信仰</h3>
<h2 id="第35章-何处有更多信息">第35章 何处有更多信息</h2>
]]></content:encoded><category>code</category><category domain="tags">notes</category></item><item><title>王国斌先生方略访谈要点整理</title><link>https://yifeitao.com/wang-guobin-key-takeaways/</link><pubDate>Mon, 17 Nov 2025 00:00:00 +0000</pubDate><guid>https://yifeitao.com/wang-guobin-key-takeaways/</guid><description>&lt;p&gt;之前看王国斌先生的《方略》访谈收获不小，最近惊闻先生已经去世，把之前记录的文字笔记整理了一下发出来，当是一个小小的缅怀。点击本文末阅读原文链接可以看完整视频。&lt;/p&gt;
&lt;h2 id="一投资理念与原则"&gt;一、投资理念与原则&lt;/h2&gt;
&lt;h3 id="1-资金策略决定投资策略"&gt;1. 资金策略决定投资策略&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;一级市场与二级市场在原则上相通，但&lt;strong&gt;资金策略决定投资策略&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;公募与一级市场的区别在于资金诉求不同。&lt;/li&gt;
&lt;li&gt;资产管理机构应选择风险收益期望合理、且不是急用的钱。&lt;/li&gt;
&lt;li&gt;通过锁定期，可帮助投资者避免追涨杀跌。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-收益期望与长期回报"&gt;2. 收益期望与长期回报&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;长期来看，股权类资产的风险收益比最高。&lt;/li&gt;
&lt;li&gt;美国市场长期合理回报约 &lt;strong&gt;10% 年化&lt;/strong&gt;；他认为中国可能更高。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-竞争优势与能力圈"&gt;3. 竞争优势与能力圈&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;核心理念：&lt;strong&gt;没有竞争优势的领域绝不进入&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;竞争优势来源：
&lt;ul&gt;
&lt;li&gt;对市场的理解与经验。&lt;/li&gt;
&lt;li&gt;自知之明，只在能力圈内行动。&lt;/li&gt;
&lt;li&gt;把自己当普通人，不假设自己有超凡博弈能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-盈利来源与价值兑现"&gt;4. 盈利来源与价值兑现&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;主要靠长期视角赚钱。&lt;/li&gt;
&lt;li&gt;收益主要来自企业现金流增长，而非 PE 扩张。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;赚“逆着来”的钱&lt;/strong&gt;（逆向），而非追逐趋势的钱（顺势）。&lt;/li&gt;
&lt;li&gt;投资必须与概率相连接，因无法预测大涨（“天上掉馅饼”）的时刻。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="5-应对不确定性"&gt;5. 应对不确定性&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;核心是在不确定性中寻找确定性。&lt;/li&gt;
&lt;li&gt;将价格与企业长期股权联系，更容易找到确定性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;催化剂&lt;/strong&gt;是价值实现的关键。公司便宜但缺乏催化剂，投资者会“熬不住”。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="二市场认知与洞察力"&gt;二、市场认知与洞察力&lt;/h2&gt;
&lt;h3 id="1-市场行为与噪音"&gt;1. 市场行为与噪音&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;中国投资者交易行为受两因素驱动：&lt;strong&gt;噪音&lt;/strong&gt;、&lt;strong&gt;叙事&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;噪音与叙事并非坏事，市场没有绝对正确性。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-对中国市场的结构性认知"&gt;2. 对中国市场的结构性认知&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;上证指数不涨的原因：
&lt;ul&gt;
&lt;li&gt;指数采样不完整，未纳入中概股与港股。&lt;/li&gt;
&lt;li&gt;上市公司整体市值扩容速度太快，稀释指数表现。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;市场整体是有效的，代表最关键的因素。&lt;/li&gt;
&lt;li&gt;他赚的是&lt;strong&gt;微观层面的结构性错误&lt;/strong&gt;，而非宏观层面的钱。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-洞察力的培养"&gt;3. 洞察力的培养&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;广泛阅读、持续学习扩展能力圈。&lt;/li&gt;
&lt;li&gt;多学习、多实践是关键。&lt;/li&gt;
&lt;li&gt;善用工具（尤其是量化）。&lt;/li&gt;
&lt;li&gt;理解人性永恒不变。&lt;/li&gt;
&lt;li&gt;在科技加速的领域，用指数增长思维分析。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="三企业研究与评估"&gt;三、企业研究与评估&lt;/h2&gt;
&lt;h3 id="1-尽调与走访"&gt;1. 尽调与走访&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;高度重视走访调研。&lt;/li&gt;
&lt;li&gt;即使疫情时期，也平均每周飞两次（不含高铁）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-企业增长驱动力"&gt;2. 企业增长驱动力&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;中国多数公司增长来自市场扩张与融资，而非内生增长。&lt;/li&gt;
&lt;li&gt;持续融资往往稀释股东利益。&lt;/li&gt;
&lt;li&gt;美国公司更多通过回购、分红回馈股东。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-企业家特质"&gt;3. 企业家特质&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;优秀企业家越来越多。&lt;/li&gt;
&lt;li&gt;优秀者具备：&lt;strong&gt;野心 + 脚踏实地&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;有些企业家只处于生存状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-幸运与能干框架"&gt;4. “幸运与能干”框架&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;优先选“幸运”，其次才是“能干”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;幸运&lt;/strong&gt;：是否踩对长期趋势（如环保、绿色发展）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;能干&lt;/strong&gt;：管理能力，如组织、效率、执行力。&lt;/li&gt;
&lt;li&gt;勤奋可提升运气；能干者整体上更“带运气”。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="四行业分析与选择"&gt;四、行业分析与选择&lt;/h2&gt;
&lt;h3 id="1-长期产品周期"&gt;1. 长期产品周期&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;不需要持续创新的行业通常是好行业。&lt;/li&gt;
&lt;li&gt;技术频繁革新往往让收益归消费者，而非股东。&lt;/li&gt;
&lt;li&gt;偏好产品生命周期长的行业。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-医药行业零与一"&gt;2. 医药行业：零与一&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;医药研发具有 &lt;strong&gt;“0 或 1”&lt;/strong&gt; 属性，没有中间状态。&lt;/li&gt;
&lt;li&gt;只有大公司能承担组合式研发风险。&lt;/li&gt;
&lt;li&gt;生物医药兴起后，小公司也能通过长尾效应参与研发。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-互联网行业"&gt;3. 互联网行业&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;真正的核心壁垒是：&lt;strong&gt;站在用户角度思考问题&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-新能源行业"&gt;4. 新能源行业&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;技术更新快，最终回报多归消费者。&lt;/li&gt;
&lt;li&gt;长周期（3–5 年以上）投资价值有限。&lt;/li&gt;
&lt;li&gt;但短周期（数年）仍可能有机会。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="五心性修养与个人特质"&gt;五、心性修养与个人特质&lt;/h2&gt;
&lt;h3 id="情绪与心性管理"&gt;情绪与心性管理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;投资成功的一半在于心性管理。&lt;/li&gt;
&lt;li&gt;追求“不以物喜，不以己悲”。&lt;/li&gt;
&lt;li&gt;经历越多，越不情绪化。&lt;/li&gt;
&lt;li&gt;即使重仓连续跌停，也能保持情绪稳定，因为“见多了”。&lt;/li&gt;
&lt;li&gt;喜欢“旅游式探索”——走访、学习、调研，而非度假式休闲。&lt;/li&gt;
&lt;/ul&gt;</description><content:encoded><![CDATA[<p>之前看王国斌先生的《方略》访谈收获不小，最近惊闻先生已经去世，把之前记录的文字笔记整理了一下发出来，当是一个小小的缅怀。点击本文末阅读原文链接可以看完整视频。</p>
<h2 id="一投资理念与原则">一、投资理念与原则</h2>
<h3 id="1-资金策略决定投资策略">1. 资金策略决定投资策略</h3>
<ul>
<li>一级市场与二级市场在原则上相通，但<strong>资金策略决定投资策略</strong>。</li>
<li>公募与一级市场的区别在于资金诉求不同。</li>
<li>资产管理机构应选择风险收益期望合理、且不是急用的钱。</li>
<li>通过锁定期，可帮助投资者避免追涨杀跌。</li>
</ul>
<h3 id="2-收益期望与长期回报">2. 收益期望与长期回报</h3>
<ul>
<li>长期来看，股权类资产的风险收益比最高。</li>
<li>美国市场长期合理回报约 <strong>10% 年化</strong>；他认为中国可能更高。</li>
</ul>
<h3 id="3-竞争优势与能力圈">3. 竞争优势与能力圈</h3>
<ul>
<li>核心理念：<strong>没有竞争优势的领域绝不进入</strong>。</li>
<li>竞争优势来源：
<ul>
<li>对市场的理解与经验。</li>
<li>自知之明，只在能力圈内行动。</li>
<li>把自己当普通人，不假设自己有超凡博弈能力。</li>
</ul>
</li>
</ul>
<h3 id="4-盈利来源与价值兑现">4. 盈利来源与价值兑现</h3>
<ul>
<li>主要靠长期视角赚钱。</li>
<li>收益主要来自企业现金流增长，而非 PE 扩张。</li>
<li><strong>赚“逆着来”的钱</strong>（逆向），而非追逐趋势的钱（顺势）。</li>
<li>投资必须与概率相连接，因无法预测大涨（“天上掉馅饼”）的时刻。</li>
</ul>
<h3 id="5-应对不确定性">5. 应对不确定性</h3>
<ul>
<li>核心是在不确定性中寻找确定性。</li>
<li>将价格与企业长期股权联系，更容易找到确定性。</li>
<li><strong>催化剂</strong>是价值实现的关键。公司便宜但缺乏催化剂，投资者会“熬不住”。</li>
</ul>
<hr>
<h2 id="二市场认知与洞察力">二、市场认知与洞察力</h2>
<h3 id="1-市场行为与噪音">1. 市场行为与噪音</h3>
<ul>
<li>中国投资者交易行为受两因素驱动：<strong>噪音</strong>、<strong>叙事</strong>。</li>
<li>噪音与叙事并非坏事，市场没有绝对正确性。</li>
</ul>
<h3 id="2-对中国市场的结构性认知">2. 对中国市场的结构性认知</h3>
<ul>
<li>上证指数不涨的原因：
<ul>
<li>指数采样不完整，未纳入中概股与港股。</li>
<li>上市公司整体市值扩容速度太快，稀释指数表现。</li>
</ul>
</li>
<li>市场整体是有效的，代表最关键的因素。</li>
<li>他赚的是<strong>微观层面的结构性错误</strong>，而非宏观层面的钱。</li>
</ul>
<h3 id="3-洞察力的培养">3. 洞察力的培养</h3>
<ul>
<li>广泛阅读、持续学习扩展能力圈。</li>
<li>多学习、多实践是关键。</li>
<li>善用工具（尤其是量化）。</li>
<li>理解人性永恒不变。</li>
<li>在科技加速的领域，用指数增长思维分析。</li>
</ul>
<hr>
<h2 id="三企业研究与评估">三、企业研究与评估</h2>
<h3 id="1-尽调与走访">1. 尽调与走访</h3>
<ul>
<li>高度重视走访调研。</li>
<li>即使疫情时期，也平均每周飞两次（不含高铁）。</li>
</ul>
<h3 id="2-企业增长驱动力">2. 企业增长驱动力</h3>
<ul>
<li>中国多数公司增长来自市场扩张与融资，而非内生增长。</li>
<li>持续融资往往稀释股东利益。</li>
<li>美国公司更多通过回购、分红回馈股东。</li>
</ul>
<h3 id="3-企业家特质">3. 企业家特质</h3>
<ul>
<li>优秀企业家越来越多。</li>
<li>优秀者具备：<strong>野心 + 脚踏实地</strong>。</li>
<li>有些企业家只处于生存状态。</li>
</ul>
<h3 id="4-幸运与能干框架">4. “幸运与能干”框架</h3>
<ul>
<li>优先选“幸运”，其次才是“能干”。</li>
<li><strong>幸运</strong>：是否踩对长期趋势（如环保、绿色发展）。</li>
<li><strong>能干</strong>：管理能力，如组织、效率、执行力。</li>
<li>勤奋可提升运气；能干者整体上更“带运气”。</li>
</ul>
<hr>
<h2 id="四行业分析与选择">四、行业分析与选择</h2>
<h3 id="1-长期产品周期">1. 长期产品周期</h3>
<ul>
<li>不需要持续创新的行业通常是好行业。</li>
<li>技术频繁革新往往让收益归消费者，而非股东。</li>
<li>偏好产品生命周期长的行业。</li>
</ul>
<h3 id="2-医药行业零与一">2. 医药行业：零与一</h3>
<ul>
<li>医药研发具有 <strong>“0 或 1”</strong> 属性，没有中间状态。</li>
<li>只有大公司能承担组合式研发风险。</li>
<li>生物医药兴起后，小公司也能通过长尾效应参与研发。</li>
</ul>
<h3 id="3-互联网行业">3. 互联网行业</h3>
<ul>
<li>真正的核心壁垒是：<strong>站在用户角度思考问题</strong>。</li>
</ul>
<h3 id="4-新能源行业">4. 新能源行业</h3>
<ul>
<li>技术更新快，最终回报多归消费者。</li>
<li>长周期（3–5 年以上）投资价值有限。</li>
<li>但短周期（数年）仍可能有机会。</li>
</ul>
<hr>
<h2 id="五心性修养与个人特质">五、心性修养与个人特质</h2>
<h3 id="情绪与心性管理">情绪与心性管理</h3>
<ul>
<li>投资成功的一半在于心性管理。</li>
<li>追求“不以物喜，不以己悲”。</li>
<li>经历越多，越不情绪化。</li>
<li>即使重仓连续跌停，也能保持情绪稳定，因为“见多了”。</li>
<li>喜欢“旅游式探索”——走访、学习、调研，而非度假式休闲。</li>
</ul>
]]></content:encoded><category>investment</category></item><item><title>持有等于买入辨析</title><link>https://yifeitao.com/holding-vs-buying/</link><pubDate>Wed, 06 Aug 2025 00:00:00 +0000</pubDate><guid>https://yifeitao.com/holding-vs-buying/</guid><description>&lt;p&gt;据段永平说，他和巴菲特聊天的时候问巴菲特，持有是否等于买入，巴菲特说当然，这是一个事实（而不是一种观点）。但是据雪球上的人考证，巴菲特并没有在其他任何场合说过类似的话。相反，巴菲特说过这样的话：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在今年的年报中，我说可口可乐和吉列是不可战胜的公司，并描述了它们有多伟大，它们是由杰出经理人经营的伟大公司。&lt;/p&gt;
&lt;p&gt;但我觉得大家最好不要把我的看法，当作是这些公司无条件的买入的建议。&lt;/p&gt;
&lt;p&gt;不然你可能会为这些的公司支付过高的价格，至少在短期是这样的。&lt;/p&gt;
&lt;p&gt;永远存在一种风险：&lt;strong&gt;企业的业绩需要好几年时间才能追上你所支付的价格，再伟大的企业，股价都可能会领先于企业的业绩。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;似乎巴菲特持有这些企业但又不建议买入。&lt;/p&gt;
&lt;p&gt;所以究竟要怎么理解呢？我觉得大家争论不休的原因可能是因为忽略了两个关键要素：&lt;strong&gt;交易的摩擦成本&lt;/strong&gt;和&lt;strong&gt;仓位管理。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;持有等于买入是一个事实要基于一个基本假设：假设我们买入卖出股票没有摩擦成本。在这个假设下，我们可以做一个简单的思想实验，得到一个关乎摒弃沉没成本对投资影响的及其重要的视角。&lt;strong&gt;假设买入卖出股票没有摩擦成本，每天收盘后，你的股票会被系统以收盘价自动卖出，然后你在第二天开盘前先想好买入哪些股票，请问你要买什么呢？如果你本来的决策就是持仓不变，那么你应该买入和卖出之前同样的股票，而且每个股票的数量也是不变的。这就是持有等于买入的全部含义。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;关于交易摩擦成本的影响，芒格在2023年每日期刊股东会上的讲话中，有一个很好的例证：股东问芒格为何伯克希尔不看好银行股，但是每日期刊还要继续持有银行股，芒格说每日期刊持有的银行股买入成本很低，浮盈很高，如果卖出，卖出收入的40%都要以资本利得税的形式交给政府，因此不愿意卖出。&lt;/p&gt;
&lt;p&gt;即使没有资本利得税，仅仅是交易佣金，也会导向长期持股的倾向。如果没有任何交易摩擦成本，只要我们持仓以及观察中的任何公司有新的微小的变化，包括基本面的变化和价格的变化，我们的胜率和赔率发生改变，那么从理论上讲，都可以进行微小的调仓。但是考虑到交易摩擦成本之后，只有在公司基本面或者价格发生重大变化时，才会调仓。&lt;/p&gt;
&lt;p&gt;持有等于买入的买入，其实指的应该是理想情况下进行持仓的重建，而不是在持有的情况下的加仓。如果是持有某投资标的情况下的加仓买入，或者操作其他持仓导致该投资标的的相对仓位变化，其实都代表了我们对现有投资组合有了新的看法。&lt;/p&gt;
&lt;p&gt;所以，归根结底，要从本质上辨析持有是否等于买入，就要厘清究竟什么是持有，什么是买入，这在不同的语境下，不同的人提及时，可能会有不同的含义。&lt;/p&gt;
&lt;p&gt;然而，比辨析这句话更重要的是，价值投资者应该学会抛弃买入成本对思考的影响，时刻检视自己的持仓，尽管他们不会经常买入卖出，但是在思维层面，对资产的比较是不会停息的，因为金钱永不眠，所谓的投资，本质上就是就是比较机会成本。&lt;/p&gt;</description><content:encoded><![CDATA[<p>据段永平说，他和巴菲特聊天的时候问巴菲特，持有是否等于买入，巴菲特说当然，这是一个事实（而不是一种观点）。但是据雪球上的人考证，巴菲特并没有在其他任何场合说过类似的话。相反，巴菲特说过这样的话：</p>
<blockquote>
<p>在今年的年报中，我说可口可乐和吉列是不可战胜的公司，并描述了它们有多伟大，它们是由杰出经理人经营的伟大公司。</p>
<p>但我觉得大家最好不要把我的看法，当作是这些公司无条件的买入的建议。</p>
<p>不然你可能会为这些的公司支付过高的价格，至少在短期是这样的。</p>
<p>永远存在一种风险：<strong>企业的业绩需要好几年时间才能追上你所支付的价格，再伟大的企业，股价都可能会领先于企业的业绩。</strong></p>
</blockquote>
<p>似乎巴菲特持有这些企业但又不建议买入。</p>
<p>所以究竟要怎么理解呢？我觉得大家争论不休的原因可能是因为忽略了两个关键要素：<strong>交易的摩擦成本</strong>和<strong>仓位管理。</strong></p>
<p>持有等于买入是一个事实要基于一个基本假设：假设我们买入卖出股票没有摩擦成本。在这个假设下，我们可以做一个简单的思想实验，得到一个关乎摒弃沉没成本对投资影响的及其重要的视角。<strong>假设买入卖出股票没有摩擦成本，每天收盘后，你的股票会被系统以收盘价自动卖出，然后你在第二天开盘前先想好买入哪些股票，请问你要买什么呢？如果你本来的决策就是持仓不变，那么你应该买入和卖出之前同样的股票，而且每个股票的数量也是不变的。这就是持有等于买入的全部含义。</strong></p>
<p>关于交易摩擦成本的影响，芒格在2023年每日期刊股东会上的讲话中，有一个很好的例证：股东问芒格为何伯克希尔不看好银行股，但是每日期刊还要继续持有银行股，芒格说每日期刊持有的银行股买入成本很低，浮盈很高，如果卖出，卖出收入的40%都要以资本利得税的形式交给政府，因此不愿意卖出。</p>
<p>即使没有资本利得税，仅仅是交易佣金，也会导向长期持股的倾向。如果没有任何交易摩擦成本，只要我们持仓以及观察中的任何公司有新的微小的变化，包括基本面的变化和价格的变化，我们的胜率和赔率发生改变，那么从理论上讲，都可以进行微小的调仓。但是考虑到交易摩擦成本之后，只有在公司基本面或者价格发生重大变化时，才会调仓。</p>
<p>持有等于买入的买入，其实指的应该是理想情况下进行持仓的重建，而不是在持有的情况下的加仓。如果是持有某投资标的情况下的加仓买入，或者操作其他持仓导致该投资标的的相对仓位变化，其实都代表了我们对现有投资组合有了新的看法。</p>
<p>所以，归根结底，要从本质上辨析持有是否等于买入，就要厘清究竟什么是持有，什么是买入，这在不同的语境下，不同的人提及时，可能会有不同的含义。</p>
<p>然而，比辨析这句话更重要的是，价值投资者应该学会抛弃买入成本对思考的影响，时刻检视自己的持仓，尽管他们不会经常买入卖出，但是在思维层面，对资产的比较是不会停息的，因为金钱永不眠，所谓的投资，本质上就是就是比较机会成本。</p>
]]></content:encoded><category>investment</category></item><item><title>分红、故事与赌博——股票的三层逻辑及其风险</title><link>https://yifeitao.com/three-layers-of-stocks/</link><pubDate>Thu, 09 Jan 2025 00:00:00 +0000</pubDate><guid>https://yifeitao.com/three-layers-of-stocks/</guid><description>&lt;p&gt;&lt;img src="https://mmbiz.qpic.cn/mmbiz_jpg/NxlumZAmv88avGB5QfHVicSMtfJm327pQPKXgbOKJ3HgpMb9SgjEK0NicMFK78p12msDBeKmkH6Yu05lVuXgEJIA/640?wx_fmt=jpeg&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;同样的股票，在不同的人眼中是不同的东西，有的人眼中是获取企业分红的凭据，而在有的人眼中则是赌博的筹码。&lt;/p&gt;
&lt;h2 id="分红逻辑"&gt;分红逻辑&lt;/h2&gt;
&lt;p&gt;股票的最底层逻辑是分享红利，从历史上看，公司赚到了钱，而且乐于通过分红或回购的方式和股东分享。比如贵州茅台、腾讯控股都是这样的公司。这类公司的风险在于：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;公司没有真正赚到钱，只是报表上看赚到了钱
&lt;ol&gt;
&lt;li&gt;只有利润没有现金流；&lt;/li&gt;
&lt;li&gt;风险后置，比如银行保险之类的公司，现在看赚到了钱，可能隐藏了坏账、赔付的巨大风险；&lt;/li&gt;
&lt;li&gt;财务造假&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;公司赚到了钱，但不和小股东分享
&lt;ol&gt;
&lt;li&gt;不分红或低价回购，而是胡乱去投资（包括高价回购）&lt;/li&gt;
&lt;li&gt;管理层侵占公司利益，各种关联交易挖墙脚&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;公司以前能赚到钱，未来走下坡路，赚不到钱了
&lt;ol&gt;
&lt;li&gt;公司腐化，不再具有竞争力&lt;/li&gt;
&lt;li&gt;被降维打击，变成了夕阳产业&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在这个层面，我们要给利润和分红定价，并判断可持续性。&lt;/p&gt;
&lt;h2 id="故事逻辑"&gt;故事逻辑&lt;/h2&gt;
&lt;p&gt;基于最终会分享红利的逻辑，市场产生共识，认为一家企业未来能赚很多钱。这往往会讲出来一个逻辑通畅的故事来，比如电动车取代燃油车，小米会成为电动车巨头，比如人工智能崛起，百度会重新伟大，又比如拼多多利用中国的巨大产能，为产品找到市场，占据省钱心智。对于这样的公司，第一个层面的风险都存在，但还存在更多的风险：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这个故事讲对了，但该公司不是主角，比如人工智能确实崛起了，但是可能和百度无关；&lt;/li&gt;
&lt;li&gt;这个故事根本就是错的，比如电动车取代燃油车可能并不是一个真正的趋势。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在这个层面，我们要给故事定价，难度可能上升了一个量级。这里面带有一些风投的逻辑。&lt;/p&gt;
&lt;h2 id="赌博逻辑"&gt;赌博逻辑&lt;/h2&gt;
&lt;p&gt;在故事逻辑之上，我们有时不需要真的相信这个故事，只需要相信它目前是所谓炒作的热点，这就是赌博逻辑，赌场需要赌博的标的。以赌博逻辑而言，前述两层逻辑的风险反而都不是风险了，它只有一个风险：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;热点随时切换，赌博标的的变化难以预测。
在这个层面，根本没法定价，或许只有高频量化会有一些机会。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;作为投资者，我只对前两层逻辑有兴趣，并且希望把大部分的仓位放在第一层逻辑上，小部分仓位放到第二层逻辑上。远离第三层逻辑。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://mmbiz.qpic.cn/mmbiz_jpg/NxlumZAmv88avGB5QfHVicSMtfJm327pQPKXgbOKJ3HgpMb9SgjEK0NicMFK78p12msDBeKmkH6Yu05lVuXgEJIA/640?wx_fmt=jpeg&amp;from=appmsg&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=0" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>同样的股票，在不同的人眼中是不同的东西，有的人眼中是获取企业分红的凭据，而在有的人眼中则是赌博的筹码。</p>
<h2 id="分红逻辑">分红逻辑</h2>
<p>股票的最底层逻辑是分享红利，从历史上看，公司赚到了钱，而且乐于通过分红或回购的方式和股东分享。比如贵州茅台、腾讯控股都是这样的公司。这类公司的风险在于：</p>
<ol>
<li>公司没有真正赚到钱，只是报表上看赚到了钱
<ol>
<li>只有利润没有现金流；</li>
<li>风险后置，比如银行保险之类的公司，现在看赚到了钱，可能隐藏了坏账、赔付的巨大风险；</li>
<li>财务造假</li>
</ol>
</li>
<li>公司赚到了钱，但不和小股东分享
<ol>
<li>不分红或低价回购，而是胡乱去投资（包括高价回购）</li>
<li>管理层侵占公司利益，各种关联交易挖墙脚</li>
</ol>
</li>
<li>公司以前能赚到钱，未来走下坡路，赚不到钱了
<ol>
<li>公司腐化，不再具有竞争力</li>
<li>被降维打击，变成了夕阳产业</li>
</ol>
</li>
</ol>
<p>在这个层面，我们要给利润和分红定价，并判断可持续性。</p>
<h2 id="故事逻辑">故事逻辑</h2>
<p>基于最终会分享红利的逻辑，市场产生共识，认为一家企业未来能赚很多钱。这往往会讲出来一个逻辑通畅的故事来，比如电动车取代燃油车，小米会成为电动车巨头，比如人工智能崛起，百度会重新伟大，又比如拼多多利用中国的巨大产能，为产品找到市场，占据省钱心智。对于这样的公司，第一个层面的风险都存在，但还存在更多的风险：</p>
<ol>
<li>这个故事讲对了，但该公司不是主角，比如人工智能确实崛起了，但是可能和百度无关；</li>
<li>这个故事根本就是错的，比如电动车取代燃油车可能并不是一个真正的趋势。</li>
</ol>
<p>在这个层面，我们要给故事定价，难度可能上升了一个量级。这里面带有一些风投的逻辑。</p>
<h2 id="赌博逻辑">赌博逻辑</h2>
<p>在故事逻辑之上，我们有时不需要真的相信这个故事，只需要相信它目前是所谓炒作的热点，这就是赌博逻辑，赌场需要赌博的标的。以赌博逻辑而言，前述两层逻辑的风险反而都不是风险了，它只有一个风险：</p>
<ol>
<li>热点随时切换，赌博标的的变化难以预测。
在这个层面，根本没法定价，或许只有高频量化会有一些机会。</li>
</ol>
<p>作为投资者，我只对前两层逻辑有兴趣，并且希望把大部分的仓位放在第一层逻辑上，小部分仓位放到第二层逻辑上。远离第三层逻辑。</p>
]]></content:encoded><category>investment</category></item><item><title>牛市与赌场</title><link>https://yifeitao.com/bull-market-gambling/</link><pubDate>Mon, 04 Nov 2024 00:00:00 +0000</pubDate><guid>https://yifeitao.com/bull-market-gambling/</guid><description>&lt;p&gt;&lt;img src="https://assets.yifeitao.com/2026/04/ae0045b1769d6b47d73714028a2c4295.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;今年在雪球上面逛的时候，明显发现讨论牛市是否真的来了，或者处在牛市什么阶段的帖子越来越多。甚至和父母视频聊天的时候，也会被问及，听说现在是牛市？我的基本看法是：从市场情绪来看，A股和港股现在确实是牛市了，但是这种市场情绪能支撑指数涨到多高，是否真的会有基本面的支撑，又是否会有过热后的崩溃，如果有崩溃什么时候来，几乎没法判断。&lt;/p&gt;
&lt;p&gt;实际上，我认为作为一个严肃的投资者，尤其是偏向价值投资风格的投资者，对牛市不应该有任何期待，虽然有时候也可以利用一下牛市的市场情绪，在投资品种过分高估时卖出切换到低估的品种。&lt;/p&gt;
&lt;p&gt;牛市给价值投资者的，往往是一种歪打正着。价值投资者在市场交易萧条时，按照自己内心的估值，低价格买入好公司好股票，在最萧条的时候，市场的交易者，除了坚定的价值投资者，可能就只有公司的回购。一个股票的价值被发现的过程，在熊市中是很缓慢的，其市值完全是被其真实盈利能力推高的，而市盈率不起任何作用。而当牛市来临时，所有的股票，不管是垃圾股还是绩优股，都可能因为一些莫名其妙的原因引来一堆的买入者，对于价值投资者来说，他们买入股票，一般期待的盈利都至少是翻倍，不会因为一二十个点的收益而“落袋为安”，所以从熊市中走过来的价值股，其卖盘是很少的，卖少买多，这样就可能导致牛市来临时，价值股的股价有时候会暴涨，这种情况，你很难讲这是一个真实的价值发现过程，对价值投资者而言，缓慢的价值发现过程，每年10～20个点的收益也是可以接受的，暴涨反而打乱节奏，逼迫人做出新的决策。&lt;/p&gt;
&lt;p&gt;牛市中，会出现数不清的造富神话，人人都是股神，会有人说，巴菲特的年化收益，我一天就拿到了。我觉得熊市的时候，股市更像股市，剔除了流动性溢价之后，能看到真实情况，而牛市来临的时候，尤其是A股这种不成熟的市场，更像是一个赌场。一个理性的人，不会羡慕昨天在澳门赌场赢钱的人，因为他知道，一旦参与这个游戏，赢的钱迟早也会还回去。但是在股市里人的心态又有点不一样，它会加上很多技术分析，基本面分析，让人误以为自己不是在赌博，无论是谁，投资的还是投机的，都在同一个市场交易，让人误以为大家玩的是同一个游戏。只要记住，同一个市场，不同的游戏，你就会对别人的发财故事敬而远之。&lt;/p&gt;
&lt;p&gt;这个世界上也许有成功的赌徒，但是如果你没有做好一个当赌徒的心理准备，那么牛市来临时，千万不要兴奋，去参与那些猜大小的赌博游戏，比如是“川大智胜”还是“哈尔斯”，是买带牛字的股票还是带马字的股票。如果熊市时没有买基金股票，牛市时就更加不要买了，赚点货币基金的无风险收益，不做那个发财梦，也挺好的。不过我也知道，没有人会愿意听这种扫兴的话，毕竟，投机像山岳一般古老，太阳底下没有新鲜事，从前的发生的事，将来必定还会发生。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://assets.yifeitao.com/2026/04/ae0045b1769d6b47d73714028a2c4295.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>今年在雪球上面逛的时候，明显发现讨论牛市是否真的来了，或者处在牛市什么阶段的帖子越来越多。甚至和父母视频聊天的时候，也会被问及，听说现在是牛市？我的基本看法是：从市场情绪来看，A股和港股现在确实是牛市了，但是这种市场情绪能支撑指数涨到多高，是否真的会有基本面的支撑，又是否会有过热后的崩溃，如果有崩溃什么时候来，几乎没法判断。</p>
<p>实际上，我认为作为一个严肃的投资者，尤其是偏向价值投资风格的投资者，对牛市不应该有任何期待，虽然有时候也可以利用一下牛市的市场情绪，在投资品种过分高估时卖出切换到低估的品种。</p>
<p>牛市给价值投资者的，往往是一种歪打正着。价值投资者在市场交易萧条时，按照自己内心的估值，低价格买入好公司好股票，在最萧条的时候，市场的交易者，除了坚定的价值投资者，可能就只有公司的回购。一个股票的价值被发现的过程，在熊市中是很缓慢的，其市值完全是被其真实盈利能力推高的，而市盈率不起任何作用。而当牛市来临时，所有的股票，不管是垃圾股还是绩优股，都可能因为一些莫名其妙的原因引来一堆的买入者，对于价值投资者来说，他们买入股票，一般期待的盈利都至少是翻倍，不会因为一二十个点的收益而“落袋为安”，所以从熊市中走过来的价值股，其卖盘是很少的，卖少买多，这样就可能导致牛市来临时，价值股的股价有时候会暴涨，这种情况，你很难讲这是一个真实的价值发现过程，对价值投资者而言，缓慢的价值发现过程，每年10～20个点的收益也是可以接受的，暴涨反而打乱节奏，逼迫人做出新的决策。</p>
<p>牛市中，会出现数不清的造富神话，人人都是股神，会有人说，巴菲特的年化收益，我一天就拿到了。我觉得熊市的时候，股市更像股市，剔除了流动性溢价之后，能看到真实情况，而牛市来临的时候，尤其是A股这种不成熟的市场，更像是一个赌场。一个理性的人，不会羡慕昨天在澳门赌场赢钱的人，因为他知道，一旦参与这个游戏，赢的钱迟早也会还回去。但是在股市里人的心态又有点不一样，它会加上很多技术分析，基本面分析，让人误以为自己不是在赌博，无论是谁，投资的还是投机的，都在同一个市场交易，让人误以为大家玩的是同一个游戏。只要记住，同一个市场，不同的游戏，你就会对别人的发财故事敬而远之。</p>
<p>这个世界上也许有成功的赌徒，但是如果你没有做好一个当赌徒的心理准备，那么牛市来临时，千万不要兴奋，去参与那些猜大小的赌博游戏，比如是“川大智胜”还是“哈尔斯”，是买带牛字的股票还是带马字的股票。如果熊市时没有买基金股票，牛市时就更加不要买了，赚点货币基金的无风险收益，不做那个发财梦，也挺好的。不过我也知道，没有人会愿意听这种扫兴的话，毕竟，投机像山岳一般古老，太阳底下没有新鲜事，从前的发生的事，将来必定还会发生。</p>
]]></content:encoded><category>investment</category></item><item><title>投资需要学习什么知识？</title><link>https://yifeitao.com/what-to-learn-about-investment/</link><pubDate>Wed, 10 Jul 2024 00:00:00 +0000</pubDate><guid>https://yifeitao.com/what-to-learn-about-investment/</guid><description>&lt;p&gt;最近我家小朋友表现出对股票有一定的兴趣，然后我就去思考如果要教会一个人投资，应该去教什么，或者说一个人学习投资应该学习什么。这门学问看起来门槛很低，但实际上又难以像一般的学科那样可以通过学院派的教学来入门和提高。&lt;/p&gt;
&lt;p&gt;可能最需要学习一点会计和财务知识，能在复杂的财报数据中剔除危险，发掘机会。但只有这些是不够的，要不然会计就会是最好的投资者，但现实不是如此。为了会计计算，需要懂一点数学，但是就像巴菲特说的，小学数学就够了，像牛顿那样的大数学家，投资也会亏到血本无归。&lt;/p&gt;
&lt;p&gt;可能需要懂一些企业经营的知识，有企业经营的经验就更好，但是我们也会发现很多好的投资者并没有经营过企业，还有很多企业家在股票市场表现不佳，甚至公司高管对自己企业的股价也难以建立正确的认知。更何况如果要先学会企业经营再去投资，对大多数人来说这个要求不太现实。&lt;/p&gt;
&lt;p&gt;可能需要懂一些经济学的知识，对宏观经济数据有一定的敏感性，但实际上看来，这些知识似乎也作用不大，一个明显的例证就是很多经济学家去搞投资，并不比韭菜散户好多少。&lt;/p&gt;
&lt;p&gt;可能需要懂一些心理学的知识，知道市场先生是如何疯狂出价的，知道人类的不理性可能带来的危害和机会，知道恐惧和贪婪，知道逆向思考，但这些也远远不够，实际上逆市场而行大部分时候都是错误的。&lt;/p&gt;
&lt;p&gt;说到底，投资尤其是二级市场投资，有两重的不确定性和复杂性，首先企业的经营有不确定性和复杂性，其次市场对企业的认知有不确定性和复杂性。企业经营涉及人类的生产和消费，而市场观点本身就是由不同的人组成的，投资最终是一门关于人的学问。人类行为有理性的成分，也有非理性的成分，所以一切学问在投资面前，都力有不逮。&lt;/p&gt;
&lt;p&gt;最终，一个好的投资人，只能把自己变成一个行走的书架，思考的永动机，像查理·芒格说的那样，去建立各种各样的思维模型，成为一个杂学家，从不同的角度去思考去决策，持续追求更高的胜率和更高的赔率，让时间和好运越来越站在自己这边。&lt;/p&gt;
&lt;p&gt;所以说，专才教育不太可能培养出好的投资人，而只有通才教育才行。但什么都去学一点，又有变成一个夸夸其谈的人的风险，要减少这种风险，只有持续学习，穿透知识的本质去学习，慢慢形成一种质的直觉，最后才能巴菲特一样，对一个企业五分钟就能做出是否值得投资的结论。&lt;/p&gt;</description><content:encoded><![CDATA[<p>最近我家小朋友表现出对股票有一定的兴趣，然后我就去思考如果要教会一个人投资，应该去教什么，或者说一个人学习投资应该学习什么。这门学问看起来门槛很低，但实际上又难以像一般的学科那样可以通过学院派的教学来入门和提高。</p>
<p>可能最需要学习一点会计和财务知识，能在复杂的财报数据中剔除危险，发掘机会。但只有这些是不够的，要不然会计就会是最好的投资者，但现实不是如此。为了会计计算，需要懂一点数学，但是就像巴菲特说的，小学数学就够了，像牛顿那样的大数学家，投资也会亏到血本无归。</p>
<p>可能需要懂一些企业经营的知识，有企业经营的经验就更好，但是我们也会发现很多好的投资者并没有经营过企业，还有很多企业家在股票市场表现不佳，甚至公司高管对自己企业的股价也难以建立正确的认知。更何况如果要先学会企业经营再去投资，对大多数人来说这个要求不太现实。</p>
<p>可能需要懂一些经济学的知识，对宏观经济数据有一定的敏感性，但实际上看来，这些知识似乎也作用不大，一个明显的例证就是很多经济学家去搞投资，并不比韭菜散户好多少。</p>
<p>可能需要懂一些心理学的知识，知道市场先生是如何疯狂出价的，知道人类的不理性可能带来的危害和机会，知道恐惧和贪婪，知道逆向思考，但这些也远远不够，实际上逆市场而行大部分时候都是错误的。</p>
<p>说到底，投资尤其是二级市场投资，有两重的不确定性和复杂性，首先企业的经营有不确定性和复杂性，其次市场对企业的认知有不确定性和复杂性。企业经营涉及人类的生产和消费，而市场观点本身就是由不同的人组成的，投资最终是一门关于人的学问。人类行为有理性的成分，也有非理性的成分，所以一切学问在投资面前，都力有不逮。</p>
<p>最终，一个好的投资人，只能把自己变成一个行走的书架，思考的永动机，像查理·芒格说的那样，去建立各种各样的思维模型，成为一个杂学家，从不同的角度去思考去决策，持续追求更高的胜率和更高的赔率，让时间和好运越来越站在自己这边。</p>
<p>所以说，专才教育不太可能培养出好的投资人，而只有通才教育才行。但什么都去学一点，又有变成一个夸夸其谈的人的风险，要减少这种风险，只有持续学习，穿透知识的本质去学习，慢慢形成一种质的直觉，最后才能巴菲特一样，对一个企业五分钟就能做出是否值得投资的结论。</p>
]]></content:encoded><category>investment</category><category domain="tags">投资</category><category domain="tags">学习</category></item><item><title>不超过一个小时的内容不值得花时间</title><link>https://yifeitao.com/content-under-an-hour-not-worth-your-time/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://yifeitao.com/content-under-an-hour-not-worth-your-time/</guid><description>&lt;figure&gt;&lt;img src="https://yifeitao.com/content-under-an-hour-not-worth-your-time/generated_image_f6253096-4eb4-4aa6-8974-bc524341beb6.png"
alt="刷视频" width="100%"&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;不超过一个小时的内容，无论是文字，音频还是视频，都不值得在这上面花时间。&lt;/strong&gt; 虽是暴论，但矫枉必须过正。&lt;/p&gt;
&lt;p&gt;短的内容，比如微博、微信公众号短文、短视频、短剧、一首流行的歌曲、十分钟解读一本书、半小时学完中国历史等等，通通不值得花时间。&lt;/p&gt;
&lt;p&gt;长的内容，比如一篇深度长文、一部电影、一集电视剧、一集综艺、一张专辑、一本书、一集长度超过一小时的播客，这些需要一个小时以上去听、去读或者去看，去理解、去思考去感受的，才值得花时间。&lt;/p&gt;
&lt;h2 id="碎片时间的迷思"&gt;碎片时间的迷思&lt;/h2&gt;
&lt;p&gt;可能你会和我说你没时间看长的东西，但我知道抖音人均日使用时间将近2小时，这是一部电影的时长。&lt;/p&gt;
&lt;p&gt;然后你又会说，因为我的时间都是碎片化的，所以才去看碎片化的内容。&lt;/p&gt;
&lt;p&gt;首先，碎片化时间可能是个假象，很多时候，我们是因为碎片化的阅读，而自己主动把时间碎片化的，比如我们经常会打开抖音，不知不觉一个小时都在做手指上滑的动作，而这个时间本来够看半部电影或者一集电视剧了。我们常常会把自己低精力的垃圾时间切成碎片，而本来这些时间更适合优质的休息和娱乐。&lt;/p&gt;
&lt;p&gt;其次，碎片化时间不一定和碎片化内容匹配，碎片时间可以对一个整体内容做持续阅读和思考，比如一直在看一本讲自我提升的书，或者深入一个故事，比如看一部小说或一个电视剧。&lt;/p&gt;
&lt;h2 id="干货的迷思"&gt;干货的迷思&lt;/h2&gt;
&lt;p&gt;当代人都喜欢干货，无论是娱乐内容还是严肃内容，比如十分钟解读一本书，三分钟解读一部电影，半小时带你看完红楼梦。&lt;/p&gt;
&lt;p&gt;光吃干货也会营养不良，水分是有必要的。论语讲一个仁的概念，多角度反复阐述；一部好的电影，有无数的细节镜头语言；一部好的小说，让你或感动或愉悦的时刻都藏在细节里。&lt;/p&gt;
&lt;p&gt;大脑接受一个观念，体会一种情感，都需要反复多角度刺激，走马观花留不下任何有用或有趣的回忆。别人总结的干货和你自己的大脑难以匹配，不会受到大脑的重视。&lt;/p&gt;
&lt;p&gt;一个长的内容，除了主干，还有细枝末节，有时候细枝末节对你的启发可能超过主干。&lt;/p&gt;
&lt;p&gt;反过来说，一个长的内容如果水分太多，它需要去水总结才值得去看，那么相当于它的实际长度还是不超过一个小时，按照“不超过一个小时的内容不值得花时间”的原则，它就不值得花时间。&lt;/p&gt;
&lt;h2 id="花时间挑选内容"&gt;花时间挑选内容&lt;/h2&gt;
&lt;p&gt;只有一种情况，我们可以花较短的时间在长内容上。&lt;/p&gt;
&lt;p&gt;比如试听一首歌，然后目的是去听一整张专辑。&lt;/p&gt;
&lt;p&gt;花五分钟读一下书的目录，看看是否值得全本阅读。&lt;/p&gt;
&lt;p&gt;花一个小时挑选20部电影，平均每部3分钟，放在自己的片单里面，一部一部来看。&lt;/p&gt;
&lt;p&gt;花时间去挑选精神食粮，而不是把挑选精神食粮的过程当成了全部，不能沿着小吃一条街试吃，最后就算是吃过了。&lt;/p&gt;
&lt;h2 id="对自己好一点"&gt;对自己好一点&lt;/h2&gt;
&lt;p&gt;本文也是短内容，其实不值得看。所以如果你看到这里，应该停止刷微信公众号，花一些时间，去找长内容，然后投入进去。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;对自己好一点，吃饭的时候，少吃一些快餐。精神食粮也是如此，远离那些短平快的东西，去追求深度、全面、细节，去追求鸡皮疙瘩、头脑风暴、醍醐灌顶、恍然大悟。&lt;/strong&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<figure><img src="/content-under-an-hour-not-worth-your-time/generated_image_f6253096-4eb4-4aa6-8974-bc524341beb6.png"
    alt="刷视频" width="100%">
</figure>

<p><strong>不超过一个小时的内容，无论是文字，音频还是视频，都不值得在这上面花时间。</strong> 虽是暴论，但矫枉必须过正。</p>
<p>短的内容，比如微博、微信公众号短文、短视频、短剧、一首流行的歌曲、十分钟解读一本书、半小时学完中国历史等等，通通不值得花时间。</p>
<p>长的内容，比如一篇深度长文、一部电影、一集电视剧、一集综艺、一张专辑、一本书、一集长度超过一小时的播客，这些需要一个小时以上去听、去读或者去看，去理解、去思考去感受的，才值得花时间。</p>
<h2 id="碎片时间的迷思">碎片时间的迷思</h2>
<p>可能你会和我说你没时间看长的东西，但我知道抖音人均日使用时间将近2小时，这是一部电影的时长。</p>
<p>然后你又会说，因为我的时间都是碎片化的，所以才去看碎片化的内容。</p>
<p>首先，碎片化时间可能是个假象，很多时候，我们是因为碎片化的阅读，而自己主动把时间碎片化的，比如我们经常会打开抖音，不知不觉一个小时都在做手指上滑的动作，而这个时间本来够看半部电影或者一集电视剧了。我们常常会把自己低精力的垃圾时间切成碎片，而本来这些时间更适合优质的休息和娱乐。</p>
<p>其次，碎片化时间不一定和碎片化内容匹配，碎片时间可以对一个整体内容做持续阅读和思考，比如一直在看一本讲自我提升的书，或者深入一个故事，比如看一部小说或一个电视剧。</p>
<h2 id="干货的迷思">干货的迷思</h2>
<p>当代人都喜欢干货，无论是娱乐内容还是严肃内容，比如十分钟解读一本书，三分钟解读一部电影，半小时带你看完红楼梦。</p>
<p>光吃干货也会营养不良，水分是有必要的。论语讲一个仁的概念，多角度反复阐述；一部好的电影，有无数的细节镜头语言；一部好的小说，让你或感动或愉悦的时刻都藏在细节里。</p>
<p>大脑接受一个观念，体会一种情感，都需要反复多角度刺激，走马观花留不下任何有用或有趣的回忆。别人总结的干货和你自己的大脑难以匹配，不会受到大脑的重视。</p>
<p>一个长的内容，除了主干，还有细枝末节，有时候细枝末节对你的启发可能超过主干。</p>
<p>反过来说，一个长的内容如果水分太多，它需要去水总结才值得去看，那么相当于它的实际长度还是不超过一个小时，按照“不超过一个小时的内容不值得花时间”的原则，它就不值得花时间。</p>
<h2 id="花时间挑选内容">花时间挑选内容</h2>
<p>只有一种情况，我们可以花较短的时间在长内容上。</p>
<p>比如试听一首歌，然后目的是去听一整张专辑。</p>
<p>花五分钟读一下书的目录，看看是否值得全本阅读。</p>
<p>花一个小时挑选20部电影，平均每部3分钟，放在自己的片单里面，一部一部来看。</p>
<p>花时间去挑选精神食粮，而不是把挑选精神食粮的过程当成了全部，不能沿着小吃一条街试吃，最后就算是吃过了。</p>
<h2 id="对自己好一点">对自己好一点</h2>
<p>本文也是短内容，其实不值得看。所以如果你看到这里，应该停止刷微信公众号，花一些时间，去找长内容，然后投入进去。</p>
<p><strong>对自己好一点，吃饭的时候，少吃一些快餐。精神食粮也是如此，远离那些短平快的东西，去追求深度、全面、细节，去追求鸡皮疙瘩、头脑风暴、醍醐灌顶、恍然大悟。</strong></p>
]]></content:encoded><category>life</category><category domain="tags">时间管理</category><category domain="tags">内容</category></item><item><title>直觉投资者、被动投资者和主动投资者</title><link>https://yifeitao.com/intuitive-passive-and-active-investors/</link><pubDate>Mon, 03 Jun 2024 00:00:00 +0000</pubDate><guid>https://yifeitao.com/intuitive-passive-and-active-investors/</guid><description>&lt;p&gt;有三种投资者，直觉投资者、被动投资者和主动投资者，我们要么简单点，做被动投资者，要么积极点，做主动投资者，而最好不要自负地当直觉投资者。&lt;/p&gt;
&lt;p&gt;直觉投资者，顾名思义，就是凭感觉投资，不经过分析，或者说只经过一些伪分析，可能A股大部分投资者都属于这个行列。一些典型的行为包括但不限于：听某某老师说，最近什么板块比较火，可以炒作一把；看股票名字买入一只股票，但完全不知道这家公司是干什么的；觉得新能源是未来的趋势，所以买入新能源基金，但对基金实际的持仓一无所知（这个基金可能没有持有新能源的股票）。&lt;/p&gt;
&lt;p&gt;被动投资者，是一类大智若愚的人，他们知道自己很难打败市场，无法预测市场的涨跌，更无法预测单只股票的股价，转而通过分散投资分散风险，通过定投放弃择时，典型的就是定投宽指数基金，比如沪深300，标普500，纳斯达克，红利指数等等，如果只买入一个国家的指数，那么还存在赌国运的成分，而如果全球化的买入各个国家的指数，则只存在一个“赌球运”的成分，就是你是否相信这个地球上的人类社会会越来越好，只要相信这一点，宽指数基金代表了人类的优秀企业，必然有高出平均社会生产增速的成长。&lt;/p&gt;
&lt;p&gt;主动投资者，则是一个积极的投资者的最终形态，他们需要成为一个研究者，在自己的能力范围内彻底研究投资标的，并不断扩大自己的能力范围，相比被动投资者，他们更具进取心的地方在于，他们要去寻找市场定价错误，因此赚取更多的超额收益。然而主动投资可能是一厢情愿和自以为是，最后依然靠直觉。一般来说，多研究总比不研究好，但是，如果过于相信自己的研究，可能比被动投资者陷入更大的危险。这时候，他们依然要借助于分散投资，可是如果投资过于分散，其实和买指数基金区别不大。&lt;/p&gt;
&lt;p&gt;总之，投资是一件需要谦虚谨慎的事情，需要多多验证思考自己的成功和失败是因为运气，还是真的掌握了一定的规律。从承认自己无知，获取市场平均收益出发，小心翼翼的去获取更多的收益，几乎所有自负的投资者，在长时间的市场起落中，都会付出代价。&lt;/p&gt;
&lt;p&gt;股神巴菲特的长期年化收益也就是20%左右，如果你的预期比这还高，那么得仔细想想你比股神强在哪儿了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>有三种投资者，直觉投资者、被动投资者和主动投资者，我们要么简单点，做被动投资者，要么积极点，做主动投资者，而最好不要自负地当直觉投资者。</p>
<p>直觉投资者，顾名思义，就是凭感觉投资，不经过分析，或者说只经过一些伪分析，可能A股大部分投资者都属于这个行列。一些典型的行为包括但不限于：听某某老师说，最近什么板块比较火，可以炒作一把；看股票名字买入一只股票，但完全不知道这家公司是干什么的；觉得新能源是未来的趋势，所以买入新能源基金，但对基金实际的持仓一无所知（这个基金可能没有持有新能源的股票）。</p>
<p>被动投资者，是一类大智若愚的人，他们知道自己很难打败市场，无法预测市场的涨跌，更无法预测单只股票的股价，转而通过分散投资分散风险，通过定投放弃择时，典型的就是定投宽指数基金，比如沪深300，标普500，纳斯达克，红利指数等等，如果只买入一个国家的指数，那么还存在赌国运的成分，而如果全球化的买入各个国家的指数，则只存在一个“赌球运”的成分，就是你是否相信这个地球上的人类社会会越来越好，只要相信这一点，宽指数基金代表了人类的优秀企业，必然有高出平均社会生产增速的成长。</p>
<p>主动投资者，则是一个积极的投资者的最终形态，他们需要成为一个研究者，在自己的能力范围内彻底研究投资标的，并不断扩大自己的能力范围，相比被动投资者，他们更具进取心的地方在于，他们要去寻找市场定价错误，因此赚取更多的超额收益。然而主动投资可能是一厢情愿和自以为是，最后依然靠直觉。一般来说，多研究总比不研究好，但是，如果过于相信自己的研究，可能比被动投资者陷入更大的危险。这时候，他们依然要借助于分散投资，可是如果投资过于分散，其实和买指数基金区别不大。</p>
<p>总之，投资是一件需要谦虚谨慎的事情，需要多多验证思考自己的成功和失败是因为运气，还是真的掌握了一定的规律。从承认自己无知，获取市场平均收益出发，小心翼翼的去获取更多的收益，几乎所有自负的投资者，在长时间的市场起落中，都会付出代价。</p>
<p>股神巴菲特的长期年化收益也就是20%左右，如果你的预期比这还高，那么得仔细想想你比股神强在哪儿了。</p>
]]></content:encoded><category>investment</category></item><item><title>“鸡娃”与松弛感</title><link>https://yifeitao.com/chill-parenting/</link><pubDate>Sun, 21 Apr 2024 00:00:00 +0000</pubDate><guid>https://yifeitao.com/chill-parenting/</guid><description>&lt;p&gt;以我的观察，近年来在教育孩子的问题上，最常见的一个词是“鸡娃”，与此关联词语的还有很多，什么“牛娃”，“普娃”之类的，有时候我不小心点开相关的文章，就感觉各种黑话扑面而来，和职场黑话有得一拼。“鸡娃”嘛，据我所知，“鸡”这个词，来自“打鸡血”，而打鸡血这个事情，本来就是一个非理性狂热的历史笑话，用到教育孩子身上，好像大家反而越说越来劲，不以为耻，反以为荣了。&lt;/p&gt;
&lt;p&gt;如果是正常的激励和努力，就谈不上是打鸡血，如果是非理性的狂热，将家长的梦想与理念强加于孩子，那这种打鸡血的行为必然不可取。语言反过来会塑造思维，所以我们最好不要用“鸡娃”这种黑话，而要多去想想如何理性的和孩子一起努力。&lt;/p&gt;
&lt;p&gt;在这个“鸡娃”黑话遍地走的当下，松弛感这个词放在孩子教育上，听起来就像一剂奢侈的解毒剂。我们可以长篇大论分析一下，东亚的家庭教育是为何会内卷的，从文化回溯到历史，再追溯到地理决定论，但毕竟，现在是二十一世纪了，我们应该担起自己的责任，像一个现代人一样思考问题，不要去苛责前人。无论历史如何，大环境如何，如果你爱自己的孩子，就必须把历史的饥饿感，“吃得苦中苦，方为人上人”的有毒精英思维，那些担心孩子会去扫大街的焦虑感阻断在自己这一代。&lt;/p&gt;
&lt;p&gt;近年来人工智能发展非常快，大家除了自己焦虑，还进一步焦虑到孩子头上了。孩子要学点什么才能不被人工智能取代？其实大可不必焦虑，反而这个事情应该成为松弛感的来源。现代人真正满意自己工作的人应该是极少数，如果我们对现在的工作有诸多不满，那么如果被人工智能取代了，只要能有基本生活保障和福利发到手，生活水平不下降，没有工作还有什么好抱怨的呢？或许我们和孩子应该一起提前思考的是，如果不如人工智能，如果不能出人头地，如果不需要再靠自认为无意义的劳动换钱花，要如何过好自己的一生，而想明白了这个问题，那么是否被人工智能取代，也就关系不大了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>以我的观察，近年来在教育孩子的问题上，最常见的一个词是“鸡娃”，与此关联词语的还有很多，什么“牛娃”，“普娃”之类的，有时候我不小心点开相关的文章，就感觉各种黑话扑面而来，和职场黑话有得一拼。“鸡娃”嘛，据我所知，“鸡”这个词，来自“打鸡血”，而打鸡血这个事情，本来就是一个非理性狂热的历史笑话，用到教育孩子身上，好像大家反而越说越来劲，不以为耻，反以为荣了。</p>
<p>如果是正常的激励和努力，就谈不上是打鸡血，如果是非理性的狂热，将家长的梦想与理念强加于孩子，那这种打鸡血的行为必然不可取。语言反过来会塑造思维，所以我们最好不要用“鸡娃”这种黑话，而要多去想想如何理性的和孩子一起努力。</p>
<p>在这个“鸡娃”黑话遍地走的当下，松弛感这个词放在孩子教育上，听起来就像一剂奢侈的解毒剂。我们可以长篇大论分析一下，东亚的家庭教育是为何会内卷的，从文化回溯到历史，再追溯到地理决定论，但毕竟，现在是二十一世纪了，我们应该担起自己的责任，像一个现代人一样思考问题，不要去苛责前人。无论历史如何，大环境如何，如果你爱自己的孩子，就必须把历史的饥饿感，“吃得苦中苦，方为人上人”的有毒精英思维，那些担心孩子会去扫大街的焦虑感阻断在自己这一代。</p>
<p>近年来人工智能发展非常快，大家除了自己焦虑，还进一步焦虑到孩子头上了。孩子要学点什么才能不被人工智能取代？其实大可不必焦虑，反而这个事情应该成为松弛感的来源。现代人真正满意自己工作的人应该是极少数，如果我们对现在的工作有诸多不满，那么如果被人工智能取代了，只要能有基本生活保障和福利发到手，生活水平不下降，没有工作还有什么好抱怨的呢？或许我们和孩子应该一起提前思考的是，如果不如人工智能，如果不能出人头地，如果不需要再靠自认为无意义的劳动换钱花，要如何过好自己的一生，而想明白了这个问题，那么是否被人工智能取代，也就关系不大了。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">教育</category></item><item><title>打牌赢了钱要不要买肉？股市赚了钱要不要买车？</title><link>https://yifeitao.com/should-you-buy-car-after-gaining-money/</link><pubDate>Mon, 04 Mar 2024 00:00:00 +0000</pubDate><guid>https://yifeitao.com/should-you-buy-car-after-gaining-money/</guid><description>&lt;p&gt;打牌赢了钱要不要买肉？股市赚了钱要不要买车？今天我们聊一聊消费决策和投资决策应当分离。&lt;/p&gt;
&lt;p&gt;消费决策就是说我要花多少钱，买什么档次的东西，这个决策第一当然还是要从实际需求出发，从自己真正的需求出发，所谓真正的需求，自己明确知道自己买的是什么？自己是在为功能付费，还是为炫耀性价值付费，还是在交智商税；第二就是要量入为出，你的资产水平在哪里，收入水平在哪里，能够不费力气用什么档次的产品和服务。&lt;/p&gt;
&lt;p&gt;投资决策讲的是风险和回报率，我的资产以哪个形态存在比较安全，能获得比较高的回报率，是货币基金？是股票？还是比特币？&lt;/p&gt;
&lt;p&gt;很多人会把这两者混淆到一起，股票账户大涨了，觉得这是白赚来的，去买台车。买车可以，关键是要在股票账户大跌的情况下，还能不吃力的去买，才是真的量入为出。股票账户的涨跌，长期来看当然会影响自己的资产量，但显然不是一个短期的事情，不太可能一轮股票大涨，自己就从买不起这个车到买得起这个车了。&lt;/p&gt;
&lt;p&gt;有一个说法，叫做投资要解决问题，其实说的就是投资要提升自己的资产等级才有意义，从只有10万，提升到100万，1000万，这是提升等级，消费也可以相应有所提升，否则，只是从10万到20万，就拿10万出来大肆消费，这不是投资，这是赌博。&lt;/p&gt;
&lt;p&gt;我有个长辈，年轻的时候喜欢打牌，假期的时候就每天去茶馆打牌，日出而作，日落而息。每天晚上他回家，只要看他是不是手头拎了两斤猪肉，就知道他是不是赢了，赢了就买肉吃，输了就不买。结果是什么呢？长期而言，一定是输的，因为赢的钱都买肉了。在这个场景中，其实他输钱了也买得起肉吃，所以问题不大。但如果用赌博赢来的钱买自己本来消费不起的东西，就麻烦了。&lt;/p&gt;
&lt;p&gt;我在澳门酒店逛的时候，发现那个地方金碧辉煌，比广州气派多了，我老婆感慨这是真正的资本主义。其实就是赌徒的钱堆出来的嘛。输了钱留下，赢了，去买奢侈品，钱照样留下。&lt;/p&gt;
&lt;p&gt;投资决策和消费决策不分开，其实就是当赌徒。&lt;/p&gt;
&lt;p&gt;股票涨了，人心都是肉长的，谁都高兴，巴菲特说看到股票涨，中午吃面是要加个鸡蛋的。但仅此而已，加个鸡蛋就行了，吃鱼翅燕窝不行。&lt;/p&gt;</description><content:encoded><![CDATA[<p>打牌赢了钱要不要买肉？股市赚了钱要不要买车？今天我们聊一聊消费决策和投资决策应当分离。</p>
<p>消费决策就是说我要花多少钱，买什么档次的东西，这个决策第一当然还是要从实际需求出发，从自己真正的需求出发，所谓真正的需求，自己明确知道自己买的是什么？自己是在为功能付费，还是为炫耀性价值付费，还是在交智商税；第二就是要量入为出，你的资产水平在哪里，收入水平在哪里，能够不费力气用什么档次的产品和服务。</p>
<p>投资决策讲的是风险和回报率，我的资产以哪个形态存在比较安全，能获得比较高的回报率，是货币基金？是股票？还是比特币？</p>
<p>很多人会把这两者混淆到一起，股票账户大涨了，觉得这是白赚来的，去买台车。买车可以，关键是要在股票账户大跌的情况下，还能不吃力的去买，才是真的量入为出。股票账户的涨跌，长期来看当然会影响自己的资产量，但显然不是一个短期的事情，不太可能一轮股票大涨，自己就从买不起这个车到买得起这个车了。</p>
<p>有一个说法，叫做投资要解决问题，其实说的就是投资要提升自己的资产等级才有意义，从只有10万，提升到100万，1000万，这是提升等级，消费也可以相应有所提升，否则，只是从10万到20万，就拿10万出来大肆消费，这不是投资，这是赌博。</p>
<p>我有个长辈，年轻的时候喜欢打牌，假期的时候就每天去茶馆打牌，日出而作，日落而息。每天晚上他回家，只要看他是不是手头拎了两斤猪肉，就知道他是不是赢了，赢了就买肉吃，输了就不买。结果是什么呢？长期而言，一定是输的，因为赢的钱都买肉了。在这个场景中，其实他输钱了也买得起肉吃，所以问题不大。但如果用赌博赢来的钱买自己本来消费不起的东西，就麻烦了。</p>
<p>我在澳门酒店逛的时候，发现那个地方金碧辉煌，比广州气派多了，我老婆感慨这是真正的资本主义。其实就是赌徒的钱堆出来的嘛。输了钱留下，赢了，去买奢侈品，钱照样留下。</p>
<p>投资决策和消费决策不分开，其实就是当赌徒。</p>
<p>股票涨了，人心都是肉长的，谁都高兴，巴菲特说看到股票涨，中午吃面是要加个鸡蛋的。但仅此而已，加个鸡蛋就行了，吃鱼翅燕窝不行。</p>
]]></content:encoded><category>investment</category><category domain="tags">投资</category><category domain="tags">决策</category></item><item><title>我的投资理念</title><link>https://yifeitao.com/investment-philosophy/</link><pubDate>Wed, 06 Dec 2023 00:00:00 +0000</pubDate><guid>https://yifeitao.com/investment-philosophy/</guid><description>&lt;h2 id="金钱永不眠"&gt;金钱永不眠&lt;/h2&gt;
&lt;p&gt;没有投资后一劳永逸的资产，投资者需要一直评估自己能看懂的各类资产，适时切换，买入相对低估而安全的，卖出相对高估而危险的。&lt;/p&gt;
&lt;p&gt;所谓“落袋为安”一般指的是把其他资产变成现金，但现金只有在特定的情况下才是最佳资产，它最大的问题是贬值。有时候收集优质企业的股票是更好的“落袋为安”。&lt;/p&gt;
&lt;p&gt;所有的资产都有寿命，无论是代表企业的股票，还是类似黄金和比特币的投机品，说一种资产终究会归零没有意义，有意义的是多久会归零，在有归零的迹象之前跳槽。&lt;/p&gt;
&lt;h2 id="沉没成本不是成本"&gt;沉没成本不是成本&lt;/h2&gt;
&lt;p&gt;资产的历史只看它的内在表现（如ROE），用来预测它未来的内在表现，所有关于出价的历史，比如自己的买入价，资产的历史价格波动，都需要刻意忽略。&lt;/p&gt;
&lt;p&gt;历史最高价和最低价都是用来突破的，下跌了50%需要上涨100%回到原价并不能说明上涨比下跌更困难，跌了90%还能再跌90%，涨了10倍还能再涨10倍。&lt;/p&gt;
&lt;p&gt;如果不考虑买卖的摩擦成本，持有即买入，考虑到摩擦成本，品种切换要保守。一个完美的股票软件应该看不到成本价。不看成本价是反人性的，但投资就是反人性的。&lt;/p&gt;
&lt;h2 id="基于认知分配仓位"&gt;基于认知分配仓位&lt;/h2&gt;
&lt;p&gt;仓位高低和认知深度成正比，认知越深刻，仓位越重。不可能有完美的认知，所以仓位永远应该有上限。&lt;/p&gt;
&lt;p&gt;懂得多一点，仓位可以重一点，买入价可以高一点，懂得少一点，仓位就要轻一点，买入价就要低一点。&lt;/p&gt;
&lt;p&gt;不要全仓一个品种，不要做空，不要加杠杆，要做时间的朋友，不要做时间的敌人。&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="金钱永不眠">金钱永不眠</h2>
<p>没有投资后一劳永逸的资产，投资者需要一直评估自己能看懂的各类资产，适时切换，买入相对低估而安全的，卖出相对高估而危险的。</p>
<p>所谓“落袋为安”一般指的是把其他资产变成现金，但现金只有在特定的情况下才是最佳资产，它最大的问题是贬值。有时候收集优质企业的股票是更好的“落袋为安”。</p>
<p>所有的资产都有寿命，无论是代表企业的股票，还是类似黄金和比特币的投机品，说一种资产终究会归零没有意义，有意义的是多久会归零，在有归零的迹象之前跳槽。</p>
<h2 id="沉没成本不是成本">沉没成本不是成本</h2>
<p>资产的历史只看它的内在表现（如ROE），用来预测它未来的内在表现，所有关于出价的历史，比如自己的买入价，资产的历史价格波动，都需要刻意忽略。</p>
<p>历史最高价和最低价都是用来突破的，下跌了50%需要上涨100%回到原价并不能说明上涨比下跌更困难，跌了90%还能再跌90%，涨了10倍还能再涨10倍。</p>
<p>如果不考虑买卖的摩擦成本，持有即买入，考虑到摩擦成本，品种切换要保守。一个完美的股票软件应该看不到成本价。不看成本价是反人性的，但投资就是反人性的。</p>
<h2 id="基于认知分配仓位">基于认知分配仓位</h2>
<p>仓位高低和认知深度成正比，认知越深刻，仓位越重。不可能有完美的认知，所以仓位永远应该有上限。</p>
<p>懂得多一点，仓位可以重一点，买入价可以高一点，懂得少一点，仓位就要轻一点，买入价就要低一点。</p>
<p>不要全仓一个品种，不要做空，不要加杠杆，要做时间的朋友，不要做时间的敌人。</p>
]]></content:encoded><category>investment</category><category domain="tags">投资</category></item><item><title>从前那个少年</title><link>https://yifeitao.com/the-boy-of-yore/</link><pubDate>Sun, 06 Dec 2020 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-boy-of-yore/</guid><description>&lt;p&gt;2018年的一天，父亲非常罕见的在午夜给我打电话，告诉我一个难以置信的消息：我的小哥主动离开了我们。我的心脏抽搐了一下，找不到安慰父亲的话语，只是商定了第二天给公司请丧假坐火车回家。小哥是我的堂兄，但对我这个独生子而言，和堂兄表兄交往，才使我对兄弟一词有了现实的理解。&lt;/p&gt;
&lt;p&gt;火车上，我的心感觉空洞洞的，脑子里老是回闪二十多年前的一个画面，我还是一个小学生的时候，我的同学指着远处路上走来的一个少年，悄悄的对我说：你知道那个初中生吗？那是”斧头帮“的帮主。再走近点我一看：哈，那不是我小哥吗？那是一个香港古惑仔电影以录像带形式流行的年代，这段对话是小哥在我心中潇洒形象的高光时刻。后来，他年纪轻轻去广东打工，虽然没有大富大贵，但也顺顺利利结婚生女，熬过一段和孩子两地分居的时间，后来回到老家工作，新修了房子，孩子也考上了市里最好的重点高中，一切似乎都朝着美好的方向在走。&lt;/p&gt;
&lt;p&gt;葬礼上，所有的人在悲痛之余，都不禁在问为什么？我们交流和他交往的种种记忆，开始慢慢有点理解一个精神压力巨大，疑似重度抑郁症的患者。面对一个巨大的悲剧，在生的人总要找到自己的理解，才能在这人间继续前行。两年多了，我除了自责自己在这个悲剧中没有发挥自己的丝毫作用，也一直在找一个让自己信服的理由。&lt;/p&gt;
&lt;p&gt;当时小哥的经济状况其实有点糟糕，刚刚在农村修了一栋两层小楼，积蓄已经花光，孩子在读高中，又新买了一台十几万的车，车是分期付款的，而且连首付也是找亲戚凑起来的，本来两口子月月拿工资慢慢还也没有问题，但是又赶上嫂子身体不好动手术，当年不但没拿几天工资还花费不少。我不忍在此再去分析他透支买车的种种动因，只是在众多我能归咎的原因中，我想那个车贷或许是压死骆驼的最后一根稻草。&lt;/p&gt;
&lt;p&gt;两年多来，我无数次听见那个广告：“某某新车网，首付三千元，新车开回家”，都会有一种无力的愤怒感。凡所得必有付出，当年轻人三千元把新车开回家的时候，他们清楚所付出的代价是什么吗?&lt;/p&gt;
&lt;p&gt;是对未来的选择权，甚至可能是生命。&lt;/p&gt;
&lt;p&gt;前几天，广州有个年轻人一把火把租住的房子烧了，然后跳楼自杀了。他所租住的房子由蛋壳公寓管理，这家公司做的是二房东的生意，帮房东把房子装修好，按月给房东租金，然后再去找房客，提供一种租金贷的服务，租客在自己可能不太清楚的情况下，一次性付出了一年的租金，只是形式变成了向银行分期付款，银行从中赚取利息，蛋壳公寓则一次性套现，拿着钱去玩其他的花样，直到玩到没钱，然后房东开始收不到租金，要赶房客走，而房客如果走掉，欠着银行的钱还要继续还，同为受害者，房东和房客却只能自相残杀。&lt;/p&gt;
&lt;p&gt;最需要为此付出代价的显然是蛋壳公寓的实控人，但我无意去探讨这个死局中的责任问题，只是觉得能被一年的房租逼到绝境的人，他其实是没有给自己的财务状况留有足够的缓冲，消费了自己无法负担的东西。这类长租公寓普遍在租金上要高出一大截，但在装修与管理上贴合年轻人的喜好，提倡的是”对自己好一点“ 。在这个崇尚“早买早享受”的年代，我的想法实在是太过保守了。&lt;/p&gt;
&lt;p&gt;储蓄和投资是放弃当前享受的权力，保留未来的选择权，而透支消费则是放弃未来的选择权，在当前立即享受。不知从何时起，手机上每一个软件都开始提供现金贷服务，无数的广告时刻在给你洗脑：去消费吧，你消费的东西定义了你的人生，剩下的钱慢慢还就好。寅吃卯粮，有三个钱花四个钱这种被传统鄙视的行为反倒成了一种时尚。&lt;/p&gt;
&lt;p&gt;月光乃至透支的财务状况，就像一张拉得过满的弓，当然它有慢慢松弛下来的机会，但是断掉的风险也是最高的。&lt;/p&gt;
&lt;p&gt;二十多年前，我和小哥还都是小学生的时候，像一个武林大侠，从学校附近一个不高不低的小山崖上纵身跳下，是我们小学男生的时尚，直到有一天，最勇敢的他摔到了自己的胳膊打了石膏，这种行为被学校严查禁止。那时的我们还不知道，这个世间的时尚不仅仅是学武林大侠，这个世间的风险也不仅仅是一个小山崖。&lt;/p&gt;</description><content:encoded><![CDATA[<p>2018年的一天，父亲非常罕见的在午夜给我打电话，告诉我一个难以置信的消息：我的小哥主动离开了我们。我的心脏抽搐了一下，找不到安慰父亲的话语，只是商定了第二天给公司请丧假坐火车回家。小哥是我的堂兄，但对我这个独生子而言，和堂兄表兄交往，才使我对兄弟一词有了现实的理解。</p>
<p>火车上，我的心感觉空洞洞的，脑子里老是回闪二十多年前的一个画面，我还是一个小学生的时候，我的同学指着远处路上走来的一个少年，悄悄的对我说：你知道那个初中生吗？那是”斧头帮“的帮主。再走近点我一看：哈，那不是我小哥吗？那是一个香港古惑仔电影以录像带形式流行的年代，这段对话是小哥在我心中潇洒形象的高光时刻。后来，他年纪轻轻去广东打工，虽然没有大富大贵，但也顺顺利利结婚生女，熬过一段和孩子两地分居的时间，后来回到老家工作，新修了房子，孩子也考上了市里最好的重点高中，一切似乎都朝着美好的方向在走。</p>
<p>葬礼上，所有的人在悲痛之余，都不禁在问为什么？我们交流和他交往的种种记忆，开始慢慢有点理解一个精神压力巨大，疑似重度抑郁症的患者。面对一个巨大的悲剧，在生的人总要找到自己的理解，才能在这人间继续前行。两年多了，我除了自责自己在这个悲剧中没有发挥自己的丝毫作用，也一直在找一个让自己信服的理由。</p>
<p>当时小哥的经济状况其实有点糟糕，刚刚在农村修了一栋两层小楼，积蓄已经花光，孩子在读高中，又新买了一台十几万的车，车是分期付款的，而且连首付也是找亲戚凑起来的，本来两口子月月拿工资慢慢还也没有问题，但是又赶上嫂子身体不好动手术，当年不但没拿几天工资还花费不少。我不忍在此再去分析他透支买车的种种动因，只是在众多我能归咎的原因中，我想那个车贷或许是压死骆驼的最后一根稻草。</p>
<p>两年多来，我无数次听见那个广告：“某某新车网，首付三千元，新车开回家”，都会有一种无力的愤怒感。凡所得必有付出，当年轻人三千元把新车开回家的时候，他们清楚所付出的代价是什么吗?</p>
<p>是对未来的选择权，甚至可能是生命。</p>
<p>前几天，广州有个年轻人一把火把租住的房子烧了，然后跳楼自杀了。他所租住的房子由蛋壳公寓管理，这家公司做的是二房东的生意，帮房东把房子装修好，按月给房东租金，然后再去找房客，提供一种租金贷的服务，租客在自己可能不太清楚的情况下，一次性付出了一年的租金，只是形式变成了向银行分期付款，银行从中赚取利息，蛋壳公寓则一次性套现，拿着钱去玩其他的花样，直到玩到没钱，然后房东开始收不到租金，要赶房客走，而房客如果走掉，欠着银行的钱还要继续还，同为受害者，房东和房客却只能自相残杀。</p>
<p>最需要为此付出代价的显然是蛋壳公寓的实控人，但我无意去探讨这个死局中的责任问题，只是觉得能被一年的房租逼到绝境的人，他其实是没有给自己的财务状况留有足够的缓冲，消费了自己无法负担的东西。这类长租公寓普遍在租金上要高出一大截，但在装修与管理上贴合年轻人的喜好，提倡的是”对自己好一点“ 。在这个崇尚“早买早享受”的年代，我的想法实在是太过保守了。</p>
<p>储蓄和投资是放弃当前享受的权力，保留未来的选择权，而透支消费则是放弃未来的选择权，在当前立即享受。不知从何时起，手机上每一个软件都开始提供现金贷服务，无数的广告时刻在给你洗脑：去消费吧，你消费的东西定义了你的人生，剩下的钱慢慢还就好。寅吃卯粮，有三个钱花四个钱这种被传统鄙视的行为反倒成了一种时尚。</p>
<p>月光乃至透支的财务状况，就像一张拉得过满的弓，当然它有慢慢松弛下来的机会，但是断掉的风险也是最高的。</p>
<p>二十多年前，我和小哥还都是小学生的时候，像一个武林大侠，从学校附近一个不高不低的小山崖上纵身跳下，是我们小学男生的时尚，直到有一天，最勇敢的他摔到了自己的胳膊打了石膏，这种行为被学校严查禁止。那时的我们还不知道，这个世间的时尚不仅仅是学武林大侠，这个世间的风险也不仅仅是一个小山崖。</p>
]]></content:encoded><category>life</category><category domain="tags">回忆</category><category domain="tags">成长</category></item><item><title>放弃教养，野蛮生长</title><link>https://yifeitao.com/the-gardener-and-the-carpenter/</link><pubDate>Sun, 20 Oct 2019 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-gardener-and-the-carpenter/</guid><description>&lt;blockquote&gt;
&lt;p&gt;本文为&lt;a href="https://book.douban.com/subject/34481379/"
rel="noopener noreferrer" target="_blank" class="external"&gt;《园丁与木匠》&lt;/a&gt;
的书摘和简评，推荐阅读纸质书或微信读书上的电子版。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;《园丁与木匠》一书的作者，是儿童学习和发展方向的优秀研究者，心理学家、哲学家。本书的学术素养很高，一本育儿书，从进化论、哲学的高度来谈，还是比较少见的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;你是园丁，还是木匠&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;作者彻底否定了当前中产阶级主流的、焦虑的育儿模式——所谓“教养”模式。“教养”，英文词汇parenting，是一个上世纪五六十年代才成形的词汇。是中产阶级兴起后，传统育儿模式无以为继后的一种潮流。也许这种模式在工业化生产中起到了正面作用，但是面对更加复杂的未来，必须反思。园丁和木匠在中文中未必是最佳的隐喻，木匠固然是打磨成型，但中国式园丁的杰作“盆景”也是有过之而不无不及。这里的园丁应该是允许植物野蛮生长的。没有一个“理想中的”孩子，对很多中国家长而言是要命的事情吧。养育中有两组悖论：依赖与独立，玩耍与学习，这并不是往哪个方向直接走那么简单的问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“教养”是一种糟糕的现代发明&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“混乱是阶梯”，儿童的混乱是人类发展的阶梯，探索是儿童的天性，甚至可以说是儿童的使命，如果给孩子画好蓝图，定好条条框框，可以说是相当自负的行为，在原始社会不稳定的生活环境是如此，在当代和未来发展迅速的现实中也是如此。中国传统教育理念中的“玉不琢不成器”，与工业文明下的“教养”似乎一拍即合，变本加厉，这种“教养”模式是一切按类似学校的条条框框来设计孩子，在传统教育中，还有基于亲子关系的直觉，而当下这种直觉甚至都让位于教条，比如孩子哭了要不要抱，父母都没有直觉的判断，而要遵从育儿书的指示，更不用说在“牛娃”攀比中的焦虑了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;童年，人类进化的关键策略&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;作者把童年的重要性放到了人类进化策略的高度。而现实中，很多家长只是把童年当作仅仅是不得不经历的成人预备期，他们盼望的是孩子快快懂事，成绩优异，不用自己操心。作者从进化论的角度分析人类童年的意义，我觉得是抓住了问题的关键，这种为童年的正名，不仅仅只是人文关怀，而是认知高度的碾压了。从“不能输在起跑线上”开始，要么一辈子竞争下去没有在生活中幸福的能力，要么在某一时间点开始堕落，报复性追求快乐。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;爱，持续进化的保障&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;作者讨论了三个层次的对孩子的爱：父母、祖父母、异亲，从进化论的角度阐释了人类以爱的形式突破囚徒困境，在基因与文化的层面都深植了照顾儿童的密码。不是因为爱而照顾，而是因为照顾而爱。我的体会是，当前的社会文化一定程度上是异化了这种传统。漫天的对“熊孩子”的过敏式的指责，对儿童这种不完全行为能力人，缺乏可预料性的恐惧，比如在飞机上指责哭闹的两岁儿童的母亲。整个社会的“教养”神话是：只要父母好好教育，再小的孩子也能像个大人一样乖乖的遵守公共秩序，而这恰恰是反人性的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;边看边学&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这一章讨论孩子通过观察和模仿的学习。现存的教育体系不过几百年，只不过现代的中产阶级家庭父母适应了学校教育，又想把这一套尽早地用在自己的孩子身上，而对更加古老、天然地模仿学习则注意不够。有一种常见的解释是镜像神经元，但这只是一种偷懒地过于简化的解释。孩子的模仿非常复杂而精细，超出成人的感知（不知道他们什么时候就学会了）。首先孩子的模仿不仅仅是模仿过程，而是试图理解成人的意图，从中发掘因果关系，融入自己的思考，最终模仿一个自己感兴趣的结果。如果成人表现得不像专家，孩子会更多的去芜存菁。而当成人表现得更像专家时，孩子会更多的模仿细节，有时候这不是一件好事。孩子的模仿还有社交属性，他们更倾向于模仿和自己更相似的人，模仿那些有仪式感没有实际作用的动作，来使自己融入一个群体。对当代父母的启示在于，中国古语“身教重于言传”永远都不过时，与其整天嘴挂在孩子身上，不如做好自己，和孩子形成良性的互动，给孩子参与家庭乃至社会的的活动充分创造条件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;边听边学&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这一章讨论孩子如何通过语言学习，这是人类远远超越其它动物的地方。孩子会听成人说，但也不是全盘接受，他们会判断成人是否值得信任，这种判断基于很多因素：比如说话的人是否自信，说话的人是否是领域内的专家，和说话的人的关系如何，总的来说，需要建立信任。孩子爱问为什么，在绝大多数时候是他们真的想去探究世界的原理，在很多时候，直接问是比观察更加高效的学习方法，比如要知道为什么会下雨。我们不能糊弄小孩，也不用担心偶尔答不出来，因为他们探究的热情是很高的。孩子会从成人的用词中总结出偏见来，比如“日本人都很坏”和“有些日本人很坏”是完全不同的效果。父母要做的不是试图去教什么，而是保持良好的互动，在谈话中构建良好的亲子关系，多回答为什么，也可以多问孩子为什么，多让孩子和更多的人交谈。这种问答构成的是真实的生活，而不是刻意的，由于孩子的敏感性，父母不可能一直假装博学，假装公正客观，一切只能是真情流露。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;边玩边学&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;玩耍的作用很难测量，因为一旦去测量，可能就不是玩了。不仅人类，凡是智能发达的动物都喜欢玩耍。有一种常见的玩耍方式是打闹式玩耍，小狗的相互撕咬，孩子间的身体碰撞，这类游戏可以提高孩子的社交能力。据我观察，当前中国的大部分家长对这类游戏是禁绝的，看见孩子之间有点身体冲突，大人都要开始打架了。玩耍受好奇心驱使，孩子玩耍有点类似科学家做实验，有假设求证、随机探索。人类比其它动物更善于假装类玩耍，这是一种反事实的推理能力，构建一个虚拟的、有一定逻辑的世界，文学作品也有这样的力量。善于假装的孩子更能理解他人的想法，甚至有很多小孩会有一个假想的朋友，这常常会吓到成人。在孩子的玩耍中，家长应当做支持而不是做引导，引导往往会断绝孩子自己的探索想法，变成对成人按部就班的无聊模仿。家长能够积极主动去做的是创造一个有更多东西可以玩的的环境，但是，这不一定取决于花多少钱，比如一根棍子可能就是很好的玩具。其实成人只要放下架子，不见得就不喜欢参与孩子的游戏。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;边练边学&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这一章主要讨论学龄儿童和学校教育。学龄这个概念是基于学校教育的，但是儿童的心理发展确实有这样一层变化，从探索式学习为主过渡到掌握式学习为主，为成人生活奠定基础，掌握式学习需要练习，是一种对脑神经的重构，这个过程是把技能变成下意识状态的，从另一个角度看也是一种退化。当前的学校教育，是伴随工业化生产产生的，并不是什么人的常态，在此之前，更早的教育都是学徒式教育，这种模式在当前依然在某些领域发挥着主导作用，比如体育和音乐的学习。学校教育培养的是善于上学的人，集中课堂授课的形式需要儿童有很高的集中注意力的能力，而这种能力在从古到今的现实中，不见得是一种优势能力。但是美国的现代教育体系越来越把那些无法长时间集中注意力的儿童定义为多动症，中国也是这个趋势。在集中注意力这个特征谱线上，每个儿童所处的位置都不一样，这不过是一种进化的多样性，作者倡导学校应该适应各种不一样的儿童，而不是给孩子喂药吃。从进化上看，青春期是人类迈向成年人的一个过程，关乎人的动力机制与控制机制，青春期的儿童更容易受同龄人评价影响，更加看重那些冷静的成年人觉得匪夷所思的奖励，当代的儿童青春期到来提前了，但他们却远不如学徒模式中成长的儿童有真正的工作经验，能够控制自己的行为做出真正有意的成就，一个孩子想把科学家作为职业，却只能在二十多岁后才能真正的接触科学家一起工作。学校教育和家庭教育一样，也应当是园丁模式，但现实却更多是木匠模式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;科技与孩子的未来&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;你的孩子是信息时代的原住民，而你自己则只是个移民，看到我孩子话都说不好却能熟练的操作iPad，我对作者的判断深表赞同。当代父母对科技的恐惧并不是新的恐惧，苏格拉底就对文字书写这个当时的新科技表达过深深的担忧，而且他的担忧成为了现实，我们更加依赖文字传承，而不是口头传承，但是人类的文化没有毁灭，反而更加发扬光大。科技会把下一代人带向何处，我们唯一确定的答案只能是不知道，试图控制孩子的一切，安排好他未来的人生，是多么可笑的事情。青少年在新的文化下成长，他们面临和过去一样的人际交往的各种难题，甚至更甚，需要面对网络陌生人的恶意，这一切无可避免的滑向的未来是这一代人的命运。身为家长，我们能做的不是控制，但也不是所谓的顺其自然，而是做好连接过去和未来的桥梁，孩子在传统中长大，汲取营养，又会有自己的创新，我们可以继续和孩子一起读书，但也绝不可能与电子设备隔绝，因为这个世界的真实面目就是这样。其实写到这里，会有一些伤感，说到底还是长江后浪推前浪，前浪死在沙滩上，一代人有一代人的责任，有一代人的哀与愁。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;养育孩子的意义&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;从哲学上讲，无法界定养育孩子的意义，因为生孩子之前和之后的你根本不是同一个人，多元化的价值观会尊重丁克的想法，但是永远不要假装那些你不曾拥有的是不值得的。从社会发展来看，当前的社会运作方式对亲子关系是有伤害的，父母的工作与孩子基本上没有什么关系，社会不奖励对孩子的养育，孩子成为成人竞争的负累。在过去的熟人社会，社群的成员都会善待儿童，而在冷漠独立的城市生活中，这些都不存在了，有的只是对儿童要表现得过早成熟的压力，网络上对熊孩子毫不留情的打杀，起因固然是某些家长的巨婴行为，但也折射整个社会对儿童的某种歧视。在熟人社会无可避免的解体后，政府、社会必须承担起养育孩子的责任。无论是养育孩子还是赡养老人，整个社会都需要重新思考，在赤裸的经济利益衡量之外，还有没有其它需要考虑的问题？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为人父母是在一系列矛盾中寻找平衡的艺术&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我觉得好的育儿书都给不出笃定的答案，这本书的结论也是如此，因为这才是真相。每天，我都会对我的孩子提或软或硬的各种要求，有可能是他干扰了其他人，有可能是单纯觉得怎样做对他更好，然而我每天都在怀疑自己对他的要求是否合理，是否必须，是否是自己自作多情。以如何、怎样开头的育儿书数以千计，数以万计，它们往往都笃定的给你方法，然而，只要你会反思自己，面对孩子时，你永远都不会那么笃定。再专制的家长也会承认自己希望孩子有朝一日能独当一面，但幼小的孩子也确实需要父母的帮助，这种依赖与成长独立的矛盾是永恒的，是没有万能解决方案的。我的体会是，孩子不是瓷器，不会因为一两次父母的错误就粉身碎骨，但可怕的是父母的笃定：这样一定是为你好，没有反思将是一切悲剧的起源，好的育儿书比如这一本为你的反思提供思考的起点，但读完它一切才刚刚开始。&lt;/p&gt;</description><content:encoded><![CDATA[<blockquote>
<p>本文为<a href="https://book.douban.com/subject/34481379/"
   rel="noopener noreferrer" target="_blank" class="external">《园丁与木匠》</a>
的书摘和简评，推荐阅读纸质书或微信读书上的电子版。</p>
</blockquote>
<p>《园丁与木匠》一书的作者，是儿童学习和发展方向的优秀研究者，心理学家、哲学家。本书的学术素养很高，一本育儿书，从进化论、哲学的高度来谈，还是比较少见的。</p>
<p><strong>你是园丁，还是木匠</strong></p>
<p>作者彻底否定了当前中产阶级主流的、焦虑的育儿模式——所谓“教养”模式。“教养”，英文词汇parenting，是一个上世纪五六十年代才成形的词汇。是中产阶级兴起后，传统育儿模式无以为继后的一种潮流。也许这种模式在工业化生产中起到了正面作用，但是面对更加复杂的未来，必须反思。园丁和木匠在中文中未必是最佳的隐喻，木匠固然是打磨成型，但中国式园丁的杰作“盆景”也是有过之而不无不及。这里的园丁应该是允许植物野蛮生长的。没有一个“理想中的”孩子，对很多中国家长而言是要命的事情吧。养育中有两组悖论：依赖与独立，玩耍与学习，这并不是往哪个方向直接走那么简单的问题。</p>
<p><strong>“教养”是一种糟糕的现代发明</strong></p>
<p>“混乱是阶梯”，儿童的混乱是人类发展的阶梯，探索是儿童的天性，甚至可以说是儿童的使命，如果给孩子画好蓝图，定好条条框框，可以说是相当自负的行为，在原始社会不稳定的生活环境是如此，在当代和未来发展迅速的现实中也是如此。中国传统教育理念中的“玉不琢不成器”，与工业文明下的“教养”似乎一拍即合，变本加厉，这种“教养”模式是一切按类似学校的条条框框来设计孩子，在传统教育中，还有基于亲子关系的直觉，而当下这种直觉甚至都让位于教条，比如孩子哭了要不要抱，父母都没有直觉的判断，而要遵从育儿书的指示，更不用说在“牛娃”攀比中的焦虑了。</p>
<p><strong>童年，人类进化的关键策略</strong></p>
<p>作者把童年的重要性放到了人类进化策略的高度。而现实中，很多家长只是把童年当作仅仅是不得不经历的成人预备期，他们盼望的是孩子快快懂事，成绩优异，不用自己操心。作者从进化论的角度分析人类童年的意义，我觉得是抓住了问题的关键，这种为童年的正名，不仅仅只是人文关怀，而是认知高度的碾压了。从“不能输在起跑线上”开始，要么一辈子竞争下去没有在生活中幸福的能力，要么在某一时间点开始堕落，报复性追求快乐。</p>
<p><strong>爱，持续进化的保障</strong></p>
<p>作者讨论了三个层次的对孩子的爱：父母、祖父母、异亲，从进化论的角度阐释了人类以爱的形式突破囚徒困境，在基因与文化的层面都深植了照顾儿童的密码。不是因为爱而照顾，而是因为照顾而爱。我的体会是，当前的社会文化一定程度上是异化了这种传统。漫天的对“熊孩子”的过敏式的指责，对儿童这种不完全行为能力人，缺乏可预料性的恐惧，比如在飞机上指责哭闹的两岁儿童的母亲。整个社会的“教养”神话是：只要父母好好教育，再小的孩子也能像个大人一样乖乖的遵守公共秩序，而这恰恰是反人性的。</p>
<p><strong>边看边学</strong></p>
<p>这一章讨论孩子通过观察和模仿的学习。现存的教育体系不过几百年，只不过现代的中产阶级家庭父母适应了学校教育，又想把这一套尽早地用在自己的孩子身上，而对更加古老、天然地模仿学习则注意不够。有一种常见的解释是镜像神经元，但这只是一种偷懒地过于简化的解释。孩子的模仿非常复杂而精细，超出成人的感知（不知道他们什么时候就学会了）。首先孩子的模仿不仅仅是模仿过程，而是试图理解成人的意图，从中发掘因果关系，融入自己的思考，最终模仿一个自己感兴趣的结果。如果成人表现得不像专家，孩子会更多的去芜存菁。而当成人表现得更像专家时，孩子会更多的模仿细节，有时候这不是一件好事。孩子的模仿还有社交属性，他们更倾向于模仿和自己更相似的人，模仿那些有仪式感没有实际作用的动作，来使自己融入一个群体。对当代父母的启示在于，中国古语“身教重于言传”永远都不过时，与其整天嘴挂在孩子身上，不如做好自己，和孩子形成良性的互动，给孩子参与家庭乃至社会的的活动充分创造条件。</p>
<p><strong>边听边学</strong></p>
<p>这一章讨论孩子如何通过语言学习，这是人类远远超越其它动物的地方。孩子会听成人说，但也不是全盘接受，他们会判断成人是否值得信任，这种判断基于很多因素：比如说话的人是否自信，说话的人是否是领域内的专家，和说话的人的关系如何，总的来说，需要建立信任。孩子爱问为什么，在绝大多数时候是他们真的想去探究世界的原理，在很多时候，直接问是比观察更加高效的学习方法，比如要知道为什么会下雨。我们不能糊弄小孩，也不用担心偶尔答不出来，因为他们探究的热情是很高的。孩子会从成人的用词中总结出偏见来，比如“日本人都很坏”和“有些日本人很坏”是完全不同的效果。父母要做的不是试图去教什么，而是保持良好的互动，在谈话中构建良好的亲子关系，多回答为什么，也可以多问孩子为什么，多让孩子和更多的人交谈。这种问答构成的是真实的生活，而不是刻意的，由于孩子的敏感性，父母不可能一直假装博学，假装公正客观，一切只能是真情流露。</p>
<p><strong>边玩边学</strong></p>
<p>玩耍的作用很难测量，因为一旦去测量，可能就不是玩了。不仅人类，凡是智能发达的动物都喜欢玩耍。有一种常见的玩耍方式是打闹式玩耍，小狗的相互撕咬，孩子间的身体碰撞，这类游戏可以提高孩子的社交能力。据我观察，当前中国的大部分家长对这类游戏是禁绝的，看见孩子之间有点身体冲突，大人都要开始打架了。玩耍受好奇心驱使，孩子玩耍有点类似科学家做实验，有假设求证、随机探索。人类比其它动物更善于假装类玩耍，这是一种反事实的推理能力，构建一个虚拟的、有一定逻辑的世界，文学作品也有这样的力量。善于假装的孩子更能理解他人的想法，甚至有很多小孩会有一个假想的朋友，这常常会吓到成人。在孩子的玩耍中，家长应当做支持而不是做引导，引导往往会断绝孩子自己的探索想法，变成对成人按部就班的无聊模仿。家长能够积极主动去做的是创造一个有更多东西可以玩的的环境，但是，这不一定取决于花多少钱，比如一根棍子可能就是很好的玩具。其实成人只要放下架子，不见得就不喜欢参与孩子的游戏。</p>
<p><strong>边练边学</strong></p>
<p>这一章主要讨论学龄儿童和学校教育。学龄这个概念是基于学校教育的，但是儿童的心理发展确实有这样一层变化，从探索式学习为主过渡到掌握式学习为主，为成人生活奠定基础，掌握式学习需要练习，是一种对脑神经的重构，这个过程是把技能变成下意识状态的，从另一个角度看也是一种退化。当前的学校教育，是伴随工业化生产产生的，并不是什么人的常态，在此之前，更早的教育都是学徒式教育，这种模式在当前依然在某些领域发挥着主导作用，比如体育和音乐的学习。学校教育培养的是善于上学的人，集中课堂授课的形式需要儿童有很高的集中注意力的能力，而这种能力在从古到今的现实中，不见得是一种优势能力。但是美国的现代教育体系越来越把那些无法长时间集中注意力的儿童定义为多动症，中国也是这个趋势。在集中注意力这个特征谱线上，每个儿童所处的位置都不一样，这不过是一种进化的多样性，作者倡导学校应该适应各种不一样的儿童，而不是给孩子喂药吃。从进化上看，青春期是人类迈向成年人的一个过程，关乎人的动力机制与控制机制，青春期的儿童更容易受同龄人评价影响，更加看重那些冷静的成年人觉得匪夷所思的奖励，当代的儿童青春期到来提前了，但他们却远不如学徒模式中成长的儿童有真正的工作经验，能够控制自己的行为做出真正有意的成就，一个孩子想把科学家作为职业，却只能在二十多岁后才能真正的接触科学家一起工作。学校教育和家庭教育一样，也应当是园丁模式，但现实却更多是木匠模式。</p>
<p><strong>科技与孩子的未来</strong></p>
<p>你的孩子是信息时代的原住民，而你自己则只是个移民，看到我孩子话都说不好却能熟练的操作iPad，我对作者的判断深表赞同。当代父母对科技的恐惧并不是新的恐惧，苏格拉底就对文字书写这个当时的新科技表达过深深的担忧，而且他的担忧成为了现实，我们更加依赖文字传承，而不是口头传承，但是人类的文化没有毁灭，反而更加发扬光大。科技会把下一代人带向何处，我们唯一确定的答案只能是不知道，试图控制孩子的一切，安排好他未来的人生，是多么可笑的事情。青少年在新的文化下成长，他们面临和过去一样的人际交往的各种难题，甚至更甚，需要面对网络陌生人的恶意，这一切无可避免的滑向的未来是这一代人的命运。身为家长，我们能做的不是控制，但也不是所谓的顺其自然，而是做好连接过去和未来的桥梁，孩子在传统中长大，汲取营养，又会有自己的创新，我们可以继续和孩子一起读书，但也绝不可能与电子设备隔绝，因为这个世界的真实面目就是这样。其实写到这里，会有一些伤感，说到底还是长江后浪推前浪，前浪死在沙滩上，一代人有一代人的责任，有一代人的哀与愁。</p>
<p><strong>养育孩子的意义</strong></p>
<p>从哲学上讲，无法界定养育孩子的意义，因为生孩子之前和之后的你根本不是同一个人，多元化的价值观会尊重丁克的想法，但是永远不要假装那些你不曾拥有的是不值得的。从社会发展来看，当前的社会运作方式对亲子关系是有伤害的，父母的工作与孩子基本上没有什么关系，社会不奖励对孩子的养育，孩子成为成人竞争的负累。在过去的熟人社会，社群的成员都会善待儿童，而在冷漠独立的城市生活中，这些都不存在了，有的只是对儿童要表现得过早成熟的压力，网络上对熊孩子毫不留情的打杀，起因固然是某些家长的巨婴行为，但也折射整个社会对儿童的某种歧视。在熟人社会无可避免的解体后，政府、社会必须承担起养育孩子的责任。无论是养育孩子还是赡养老人，整个社会都需要重新思考，在赤裸的经济利益衡量之外，还有没有其它需要考虑的问题？</p>
<p><strong>为人父母是在一系列矛盾中寻找平衡的艺术</strong></p>
<p>我觉得好的育儿书都给不出笃定的答案，这本书的结论也是如此，因为这才是真相。每天，我都会对我的孩子提或软或硬的各种要求，有可能是他干扰了其他人，有可能是单纯觉得怎样做对他更好，然而我每天都在怀疑自己对他的要求是否合理，是否必须，是否是自己自作多情。以如何、怎样开头的育儿书数以千计，数以万计，它们往往都笃定的给你方法，然而，只要你会反思自己，面对孩子时，你永远都不会那么笃定。再专制的家长也会承认自己希望孩子有朝一日能独当一面，但幼小的孩子也确实需要父母的帮助，这种依赖与成长独立的矛盾是永恒的，是没有万能解决方案的。我的体会是，孩子不是瓷器，不会因为一两次父母的错误就粉身碎骨，但可怕的是父母的笃定：这样一定是为你好，没有反思将是一切悲剧的起源，好的育儿书比如这一本为你的反思提供思考的起点，但读完它一切才刚刚开始。</p>
]]></content:encoded><category>reading</category><category domain="tags">育儿</category><category domain="tags">读书笔记</category></item><item><title>学习问答集2019</title><link>https://yifeitao.com/learning-faq-2019/</link><pubDate>Sun, 18 Aug 2019 00:00:00 +0000</pubDate><guid>https://yifeitao.com/learning-faq-2019/</guid><description>&lt;p&gt;&lt;strong&gt;0 为什么要写一个问答集？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最近集中读了很多关于学习科学的书和资料，想初步整理一下自己的一些感受与想法，但是写成架构式的文章可能需要一本书的容量，自己还远远不够，对这个领域的研究初步计划是五年时间，这篇文章就算是一个良好的开端吧。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1 为什么要关心学习这个话题？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;私人的原因有两点：一是自己学习人工智能等复杂的技术时遇到了很多困难，二是想给自己孩子带来身体力行的经验。从更大的视角看，人类的学习机制远比目前的机器学习复杂，基于脑科学、认知科学、心理学等的发展，学习科学虽然有了一些成果，但更多的还是未知，而且这些有限的成果也远没有得到有效的推广。和医学一样，学习中的个人体验很重要，因此习俗、偏方，比起科学的结论往往更有生命力。程序员是最能感受到学习重要性的职业之一，新的技术层出不穷，而每一行代码背后，可能都是取代一个做着重复性工作的人。在互联网越来越抹平信息鸿沟后，我们看到富豪榜中越来越多出现的是学霸，这是认知优势取代信息优势的一个写照。无论是出于考高分、赚大钱的功利目的，或者是追求真理的喜悦，学习都是必须的修炼。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2 学习仅仅是学生的事情么？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;把读书学习等同于在学校接受教育，考高分拿文凭，是对学习最大的误解。如果你去实现过“愚蠢”的人工智能，就知道每个孩子都是学习方面的天才。然而，体制化教育的失败者极可能熄灭学习的初心和热情，而体制化教育的成功者，也可能在社会上遭遇失败，被当作读书无用论的典型。很多人的进步停留在工作的头几年，最后一次的大规模学习只在适应工作时被逼的。当他们为人父母，虽然自己的知识水平已经停滞，却又期望自己的子女成绩出众，在教育培训机构“月薪五万养不起一个娃”的软文中焦虑。然而学习本质上不过是生而为人的一种本能，而一般意义上的所谓读书，不过是学习途径中的一种。孔子说：三人行，必有我师，孔子又说：学而时习之，不亦说乎。我不可能说得比他更好了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3 在所有关于学习的观念中，最最重要的一点是什么？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我觉得最重要的一点，是要抛弃对智商和能力的“整体理论”，拥抱“渐进理论”。简单点说，就是不要相信智商和能力是与生俱来的，不可改变的，而要相信智商和能力是可以通过学习提高的。用天才和普通、高智商和低智商、聪明和愚钝来做二分法，是对人进步的最大伤害。不可否认人有天生的差异，但以常人努力之程度，往往还谈不上比天赋。如果所有人的能力形成一条谱线，那么每个人都会有自己的位置，它不是二分的，也不是固定不变的。每个人都会碰到自己能力的天花板，即使是天才的科学家也不例外，他们也可能终其一生弄不明白一个问题。如果一个人能力天生差一点，又相信这是不可改变的，显然能力是不可能提高的。而一个人如果能力天生比较好，但相信这是不可改变的，当他遇到天花板，遭遇困难和挫折时，就会怀疑自己的智商和能力，不可避免地失败或逃避，这就是所谓的只有小聪明，没有大智慧。不同的信念坚持一生，会是天差地别的结果。而且，这不单单是信念，脑科学早就证明了人的神经细胞是可以一直新生的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4 是努力重要，还是方法重要？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这自然是一个伪问题，答案当然是都重要。但更深层次的问题是，什么样的努力是正确的努力。在传统观念中，学习被视为一件严肃的事情，正襟危坐，头悬梁锥刺股才是正道。对那些学习成绩好但看上去不是很努力的，我们称赞他天资好，还鼓励他们不要浪费了自己的天资，应该更加努力，而那些看上去很努力但成绩一般的，我们也会不吝夸赞他们的努力，比起那些成绩差又不努力的学渣，总是要好很多。反复阅读学习材料，在书上划重点，做漂亮的课堂笔记，是常见的被科学研究证明无效的学习方法，这类方法的共同特点是会花费学习者不少时间，做一些停留于资料的努力，再清晰漂亮的笔记，不能转化到自己脑子里也是无用的。一切有用的方法，都要基于主动性的原则，想要努力真正弄懂所学的东西，这里面不能有丝毫的自我欺骗，被无知击中的感觉很难受，躲在自以为是的努力中很舒服，但从来就没有轻松学习的方法。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5 为什么考试很重要？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个最常见、最有效的学习方法就是考试。考试仅仅被当作检验学习成果的工具，分数成为唯一的追求目标，要么唯分数论，要么大谈素质教育避谈考试，是我们对考试这个工具最大的误解和浪费。首先，考试是消除“我已经学会了”这种幻觉的终极武器，反复看教材或笔记，总是会产生这种幻觉；其次，考试会强制你回忆学习的内容，是巩固记忆和理解的绝佳方式。 一个好的老师总是会用各种手段来考学生，课前测验、课堂测验、课后测验，目的不是给学生排名，而是促使学生去提取自己的记忆，加深印象，找到差距。即使不是正式的学习，比如看一本非专业相关的书，也可以充分利用考试的手段，最简单的，在看完一个章节后，合上书本，问一问自己几个问题：刚才看的材料主要讲了什么内容？是否认同这些观点？和自己已有的知识或经验能有什么联系？如果认同，在实际生活和工作中该如何运用？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6 如果读书学习很重要，为什么又会有书呆子？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;为什么懂得了很多道理，却依然过不好这一生？不是道理的问题，而是自己的问题。如果把读书学习当作一种像打麻将一样的娱乐，做一个书呆子也未尝不可。但如果是求进步，那么读书学习只是一个开端，而不是结束。书呆子会热衷于书架上有多少本书，读书的速度，每年读书的本数，热衷于掉书袋，热衷于看到了多少干货，却不会去关注有多少知识和观念扎根到了自己的脑子，这些知识和观念有没有形成一个完整的、自洽的、不断进化的体系，有多少观念付诸了实践。曾国藩是能带兵打仗的书生，每天写日记自我反省，反省的是实践活动该如何贯彻自己的理念。 纸上得来终觉浅，绝知此事要躬行，我说得不可能比古人好了。孔子和曾国藩需要每天自我反省，为什么我们就不需要呢？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7 是不是练习得越多，就学习得越好？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一万小时天才理论是流传很广的一个观念，它背后“刻意练习”的理论也是误解很多的一个理论。付出总有回报是让人心生安慰的，然而有效的练习却不是简单的重复就行的。无论是科学研究还是天才的个体经验都表明，有效的练习必须是主动性极高的练习，首先需要以退为进，划分足够细的模块，分模块、针对短板练习，其次，这些练习也不能是简单的重复，要富于变化、相互穿插，这些研究成果是反直觉的，人们总是觉得反复重复练习掌握得更好，而变化穿插的练习效果更差，这是一种难以克服的幻觉。真正有效的练习是高度消耗脑力的，不可能坚持过长的时间。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8 为什么看书总是记不住，理解不了？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最新的记忆理论认为，记忆的提取比记忆的初次生成更重要。每个人都能够过目不忘，问题是那些记忆的碎片散落在大脑中无法重新组织提取出来。唯一的办法是让它们彼此之间建立更多的联系，就像一个本来落后的村落，修了四通八达的水泥路，它就不会再是落后的村落。对不成体系的知识有很多小技巧，比如编顺口溜：“要记大月自有方，七前逢单七后双”，对成体系的知识最重要的是建立自己的知识体系，所有的新知识都要尽量多的跟已有的知识和经验建立联系，显然，这不是一个简单轻松的过程。很多人都有考前突击复习的经验，有时候还能取得不错的成绩，然而，这也是一种幻觉。没有经过艰苦的努力纳入自己体系的知识，依然会还给书本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;9 可不可以少睡一点来多学点东西？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;成功人士的神话之一是他们只睡三四个小时，但是他们可以在飞机上补觉，可以在办公室弄一张床，他们作为决策层脑力活动是低烈度的，他们也可能只是在说谎。如果你是高烈度脑力活动者，比如研究生，写代码的程序员，那么牺牲睡眠除了让你可能早点死外，还会严重的降低学习效率。脑科学表明，神经突触的建立必须经过充足的睡眠过程。一切无法建立新的神经突触的学习都是在浪费时间。现代人的生活习惯越来越偏向晚睡，即使是孩子也会受这种文化变迁的影响。而孩子被作业负担压迫到睡眠不足，则是对脑科学的一种嘲讽。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10 学渣是如何诞生的？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在日本励志电影《垫底辣妹》中，女主准备高考但数学基础太差，补习老师的方法是从小学数学学起，这不是夸张，而是有真实原型的。体制化教育的缺陷在于，它不得不制定一个面向大多数人的标准，8岁时应该掌握怎样的语言，9岁时应该懂多少数学，这样总会有人掉队，这些掉队的人则很可能被打上各种负面的标签，也许到12岁时他才心智成熟适合学数学，但是已经没有这样的机会了，往往这些孩子自己已经对学习活动不再有任何参与感。欧美也会有那种根据小孩具体情况的混龄学习课堂，但如果一个12岁的孩子去学小学三年级的数学，家长和孩子的面子都会挂不住，或许这种情况下，补习班才是最好的出路。学习任何领域的知识，都得先慢再快，打好基础，学习就像修房子，万丈高楼平地起，勿在浮沙筑高台，我说得不可能比古人更好了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;11 为什么念念不忘，必有回响？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当准妈妈怀着宝宝的时候，准爸爸会在逛街时发现更多的孕妇，当你苦苦思索苯环的结构时，晚上可能梦见咬自己尾巴的蛇。当你在全力以赴思考一个问题时，即使你停下来，脑子里依然会有像后台进程一样的东西存在，你的感官会不由自主地去搜集相关地信息，你的梦境会去尝试各种方案。突破、灵感是自然产生的，却不是凭空而来的，它们只属于那些全力以赴后松弛的大脑。研究表明，天才也往往只是在自己的专业领域表现突出，他们的灵机一动、神来之笔，不过也就是无数刻苦的努力之后的自然馈赠。如果你想发财，但每天为此花的思考时间连十分钟都不到，又怎么可能天上掉馅饼呢。念念不忘之后的回响，是一个概率事件，但是我们可以提高这个概率。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;主要参考书目：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/28551589/"
rel="noopener noreferrer" target="_blank" class="external"&gt;有效学习&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/27081766/"
rel="noopener noreferrer" target="_blank" class="external"&gt;如何学习&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/33424179/"
rel="noopener noreferrer" target="_blank" class="external"&gt;所谓学习好，就是方法好&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/30353486/"
rel="noopener noreferrer" target="_blank" class="external"&gt;认知天性 : 让学习轻而易举的心理学规律&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/26952718/"
rel="noopener noreferrer" target="_blank" class="external"&gt;好好学习 : 个人知识管理精进指南&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/30206813/"
rel="noopener noreferrer" target="_blank" class="external"&gt;科学学习 : 斯坦福黄金学习法则&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/27047949/"
rel="noopener noreferrer" target="_blank" class="external"&gt;学习的艺术&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/26895988/"
rel="noopener noreferrer" target="_blank" class="external"&gt;学习之道&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/25783654/"
rel="noopener noreferrer" target="_blank" class="external"&gt;如何高效学习 : 1年完成麻省理工4年33门课程的整体性学习法&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><content:encoded><![CDATA[<p><strong>0 为什么要写一个问答集？</strong></p>
<p>最近集中读了很多关于学习科学的书和资料，想初步整理一下自己的一些感受与想法，但是写成架构式的文章可能需要一本书的容量，自己还远远不够，对这个领域的研究初步计划是五年时间，这篇文章就算是一个良好的开端吧。</p>
<p><strong>1 为什么要关心学习这个话题？</strong></p>
<p>私人的原因有两点：一是自己学习人工智能等复杂的技术时遇到了很多困难，二是想给自己孩子带来身体力行的经验。从更大的视角看，人类的学习机制远比目前的机器学习复杂，基于脑科学、认知科学、心理学等的发展，学习科学虽然有了一些成果，但更多的还是未知，而且这些有限的成果也远没有得到有效的推广。和医学一样，学习中的个人体验很重要，因此习俗、偏方，比起科学的结论往往更有生命力。程序员是最能感受到学习重要性的职业之一，新的技术层出不穷，而每一行代码背后，可能都是取代一个做着重复性工作的人。在互联网越来越抹平信息鸿沟后，我们看到富豪榜中越来越多出现的是学霸，这是认知优势取代信息优势的一个写照。无论是出于考高分、赚大钱的功利目的，或者是追求真理的喜悦，学习都是必须的修炼。</p>
<p><strong>2 学习仅仅是学生的事情么？</strong></p>
<p>把读书学习等同于在学校接受教育，考高分拿文凭，是对学习最大的误解。如果你去实现过“愚蠢”的人工智能，就知道每个孩子都是学习方面的天才。然而，体制化教育的失败者极可能熄灭学习的初心和热情，而体制化教育的成功者，也可能在社会上遭遇失败，被当作读书无用论的典型。很多人的进步停留在工作的头几年，最后一次的大规模学习只在适应工作时被逼的。当他们为人父母，虽然自己的知识水平已经停滞，却又期望自己的子女成绩出众，在教育培训机构“月薪五万养不起一个娃”的软文中焦虑。然而学习本质上不过是生而为人的一种本能，而一般意义上的所谓读书，不过是学习途径中的一种。孔子说：三人行，必有我师，孔子又说：学而时习之，不亦说乎。我不可能说得比他更好了。</p>
<p><strong>3 在所有关于学习的观念中，最最重要的一点是什么？</strong></p>
<p>我觉得最重要的一点，是要抛弃对智商和能力的“整体理论”，拥抱“渐进理论”。简单点说，就是不要相信智商和能力是与生俱来的，不可改变的，而要相信智商和能力是可以通过学习提高的。用天才和普通、高智商和低智商、聪明和愚钝来做二分法，是对人进步的最大伤害。不可否认人有天生的差异，但以常人努力之程度，往往还谈不上比天赋。如果所有人的能力形成一条谱线，那么每个人都会有自己的位置，它不是二分的，也不是固定不变的。每个人都会碰到自己能力的天花板，即使是天才的科学家也不例外，他们也可能终其一生弄不明白一个问题。如果一个人能力天生差一点，又相信这是不可改变的，显然能力是不可能提高的。而一个人如果能力天生比较好，但相信这是不可改变的，当他遇到天花板，遭遇困难和挫折时，就会怀疑自己的智商和能力，不可避免地失败或逃避，这就是所谓的只有小聪明，没有大智慧。不同的信念坚持一生，会是天差地别的结果。而且，这不单单是信念，脑科学早就证明了人的神经细胞是可以一直新生的。</p>
<p><strong>4 是努力重要，还是方法重要？</strong></p>
<p>这自然是一个伪问题，答案当然是都重要。但更深层次的问题是，什么样的努力是正确的努力。在传统观念中，学习被视为一件严肃的事情，正襟危坐，头悬梁锥刺股才是正道。对那些学习成绩好但看上去不是很努力的，我们称赞他天资好，还鼓励他们不要浪费了自己的天资，应该更加努力，而那些看上去很努力但成绩一般的，我们也会不吝夸赞他们的努力，比起那些成绩差又不努力的学渣，总是要好很多。反复阅读学习材料，在书上划重点，做漂亮的课堂笔记，是常见的被科学研究证明无效的学习方法，这类方法的共同特点是会花费学习者不少时间，做一些停留于资料的努力，再清晰漂亮的笔记，不能转化到自己脑子里也是无用的。一切有用的方法，都要基于主动性的原则，想要努力真正弄懂所学的东西，这里面不能有丝毫的自我欺骗，被无知击中的感觉很难受，躲在自以为是的努力中很舒服，但从来就没有轻松学习的方法。</p>
<p><strong>5 为什么考试很重要？</strong></p>
<p>一个最常见、最有效的学习方法就是考试。考试仅仅被当作检验学习成果的工具，分数成为唯一的追求目标，要么唯分数论，要么大谈素质教育避谈考试，是我们对考试这个工具最大的误解和浪费。首先，考试是消除“我已经学会了”这种幻觉的终极武器，反复看教材或笔记，总是会产生这种幻觉；其次，考试会强制你回忆学习的内容，是巩固记忆和理解的绝佳方式。 一个好的老师总是会用各种手段来考学生，课前测验、课堂测验、课后测验，目的不是给学生排名，而是促使学生去提取自己的记忆，加深印象，找到差距。即使不是正式的学习，比如看一本非专业相关的书，也可以充分利用考试的手段，最简单的，在看完一个章节后，合上书本，问一问自己几个问题：刚才看的材料主要讲了什么内容？是否认同这些观点？和自己已有的知识或经验能有什么联系？如果认同，在实际生活和工作中该如何运用？</p>
<p><strong>6 如果读书学习很重要，为什么又会有书呆子？</strong></p>
<p>为什么懂得了很多道理，却依然过不好这一生？不是道理的问题，而是自己的问题。如果把读书学习当作一种像打麻将一样的娱乐，做一个书呆子也未尝不可。但如果是求进步，那么读书学习只是一个开端，而不是结束。书呆子会热衷于书架上有多少本书，读书的速度，每年读书的本数，热衷于掉书袋，热衷于看到了多少干货，却不会去关注有多少知识和观念扎根到了自己的脑子，这些知识和观念有没有形成一个完整的、自洽的、不断进化的体系，有多少观念付诸了实践。曾国藩是能带兵打仗的书生，每天写日记自我反省，反省的是实践活动该如何贯彻自己的理念。 纸上得来终觉浅，绝知此事要躬行，我说得不可能比古人好了。孔子和曾国藩需要每天自我反省，为什么我们就不需要呢？</p>
<p><strong>7 是不是练习得越多，就学习得越好？</strong></p>
<p>一万小时天才理论是流传很广的一个观念，它背后“刻意练习”的理论也是误解很多的一个理论。付出总有回报是让人心生安慰的，然而有效的练习却不是简单的重复就行的。无论是科学研究还是天才的个体经验都表明，有效的练习必须是主动性极高的练习，首先需要以退为进，划分足够细的模块，分模块、针对短板练习，其次，这些练习也不能是简单的重复，要富于变化、相互穿插，这些研究成果是反直觉的，人们总是觉得反复重复练习掌握得更好，而变化穿插的练习效果更差，这是一种难以克服的幻觉。真正有效的练习是高度消耗脑力的，不可能坚持过长的时间。</p>
<p><strong>8 为什么看书总是记不住，理解不了？</strong></p>
<p>最新的记忆理论认为，记忆的提取比记忆的初次生成更重要。每个人都能够过目不忘，问题是那些记忆的碎片散落在大脑中无法重新组织提取出来。唯一的办法是让它们彼此之间建立更多的联系，就像一个本来落后的村落，修了四通八达的水泥路，它就不会再是落后的村落。对不成体系的知识有很多小技巧，比如编顺口溜：“要记大月自有方，七前逢单七后双”，对成体系的知识最重要的是建立自己的知识体系，所有的新知识都要尽量多的跟已有的知识和经验建立联系，显然，这不是一个简单轻松的过程。很多人都有考前突击复习的经验，有时候还能取得不错的成绩，然而，这也是一种幻觉。没有经过艰苦的努力纳入自己体系的知识，依然会还给书本。</p>
<p><strong>9 可不可以少睡一点来多学点东西？</strong></p>
<p>成功人士的神话之一是他们只睡三四个小时，但是他们可以在飞机上补觉，可以在办公室弄一张床，他们作为决策层脑力活动是低烈度的，他们也可能只是在说谎。如果你是高烈度脑力活动者，比如研究生，写代码的程序员，那么牺牲睡眠除了让你可能早点死外，还会严重的降低学习效率。脑科学表明，神经突触的建立必须经过充足的睡眠过程。一切无法建立新的神经突触的学习都是在浪费时间。现代人的生活习惯越来越偏向晚睡，即使是孩子也会受这种文化变迁的影响。而孩子被作业负担压迫到睡眠不足，则是对脑科学的一种嘲讽。</p>
<p><strong>10 学渣是如何诞生的？</strong></p>
<p>在日本励志电影《垫底辣妹》中，女主准备高考但数学基础太差，补习老师的方法是从小学数学学起，这不是夸张，而是有真实原型的。体制化教育的缺陷在于，它不得不制定一个面向大多数人的标准，8岁时应该掌握怎样的语言，9岁时应该懂多少数学，这样总会有人掉队，这些掉队的人则很可能被打上各种负面的标签，也许到12岁时他才心智成熟适合学数学，但是已经没有这样的机会了，往往这些孩子自己已经对学习活动不再有任何参与感。欧美也会有那种根据小孩具体情况的混龄学习课堂，但如果一个12岁的孩子去学小学三年级的数学，家长和孩子的面子都会挂不住，或许这种情况下，补习班才是最好的出路。学习任何领域的知识，都得先慢再快，打好基础，学习就像修房子，万丈高楼平地起，勿在浮沙筑高台，我说得不可能比古人更好了。</p>
<p><strong>11 为什么念念不忘，必有回响？</strong></p>
<p>当准妈妈怀着宝宝的时候，准爸爸会在逛街时发现更多的孕妇，当你苦苦思索苯环的结构时，晚上可能梦见咬自己尾巴的蛇。当你在全力以赴思考一个问题时，即使你停下来，脑子里依然会有像后台进程一样的东西存在，你的感官会不由自主地去搜集相关地信息，你的梦境会去尝试各种方案。突破、灵感是自然产生的，却不是凭空而来的，它们只属于那些全力以赴后松弛的大脑。研究表明，天才也往往只是在自己的专业领域表现突出，他们的灵机一动、神来之笔，不过也就是无数刻苦的努力之后的自然馈赠。如果你想发财，但每天为此花的思考时间连十分钟都不到，又怎么可能天上掉馅饼呢。念念不忘之后的回响，是一个概率事件，但是我们可以提高这个概率。</p>
<p><strong>主要参考书目：</strong></p>
<ul>
<li><a href="https://book.douban.com/subject/28551589/"
   rel="noopener noreferrer" target="_blank" class="external">有效学习</a>
</li>
<li><a href="https://book.douban.com/subject/27081766/"
   rel="noopener noreferrer" target="_blank" class="external">如何学习</a>
</li>
<li><a href="https://book.douban.com/subject/33424179/"
   rel="noopener noreferrer" target="_blank" class="external">所谓学习好，就是方法好</a>
</li>
<li><a href="https://book.douban.com/subject/30353486/"
   rel="noopener noreferrer" target="_blank" class="external">认知天性 : 让学习轻而易举的心理学规律</a>
</li>
<li><a href="https://book.douban.com/subject/26952718/"
   rel="noopener noreferrer" target="_blank" class="external">好好学习 : 个人知识管理精进指南</a>
</li>
<li><a href="https://book.douban.com/subject/30206813/"
   rel="noopener noreferrer" target="_blank" class="external">科学学习 : 斯坦福黄金学习法则</a>
</li>
<li><a href="https://book.douban.com/subject/27047949/"
   rel="noopener noreferrer" target="_blank" class="external">学习的艺术</a>
</li>
<li><a href="https://book.douban.com/subject/26895988/"
   rel="noopener noreferrer" target="_blank" class="external">学习之道</a>
</li>
<li><a href="https://book.douban.com/subject/25783654/"
   rel="noopener noreferrer" target="_blank" class="external">如何高效学习 : 1年完成麻省理工4年33门课程的整体性学习法</a>
</li>
</ul>
]]></content:encoded><category>methodology</category><category domain="tags">学习</category><category domain="tags">FAQ</category></item><item><title>【译文】使用很少的图片构建强大的图片分类模型</title><link>https://yifeitao.com/building-powerful-image-classification-models-using-very-little-data/</link><pubDate>Sat, 03 Aug 2019 00:00:00 +0000</pubDate><guid>https://yifeitao.com/building-powerful-image-classification-models-using-very-little-data/</guid><description>&lt;p&gt;文本翻译自&lt;a href="https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html"
rel="noopener noreferrer" target="_blank" class="external"&gt;The Keras Blog&lt;/a&gt;
。翻译的目的主要是放慢自己学习的速度，也许对其他人也会有帮助。以下为译文。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;在这个教程中，我们会展示一些简单但有效的方法，使你可以用很少的训练样本——每个待识别的类别只有几百张到几千张图片——来构建强大的图片分类模型。&lt;/p&gt;
&lt;p&gt;我们会使用如下的方法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从头训练一个小的网络作为比较基准&lt;/li&gt;
&lt;li&gt;使用预训练网络的bottleneck 特征&lt;/li&gt;
&lt;li&gt;微调预训练网络的最后几层&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这会让我们涉及以下的Keras 特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fit_generator&lt;/code&gt; 使用Python数据生成器来训练Keras模型&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ImageDataGenerator&lt;/code&gt; 实时的图像增强&lt;/li&gt;
&lt;li&gt;层冻结和模型微调&lt;/li&gt;
&lt;li&gt;&amp;hellip;其它&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;注意：所有的示例都在2017年3月14日更新到了 Keras 2.0 API。运行这些代码需要Keras版本号大于等于2.0.0。&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id="我们的设定只有2000个样本每类1000个"&gt;我们的设定：只有2000个样本（每类1000个）&lt;/h4&gt;
&lt;p&gt;我们从如下设定开始：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;机器安装了Keras, SciPy, PIL。如果你有NVIDIA 显卡也可以用（需要安装cuDNN），不过由于我们处理的图片很少所以这不是必需的。&lt;/li&gt;
&lt;li&gt;一个训练集目录和验证集目录，都包含以分类组织的子目录，这些子目录包含 .png或.jpg图片：&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;data/
train/
dogs/
dog001.jpg
dog002.jpg
...
cats/
cat001.jpg
cat002.jpg
...
validation/
dogs/
dog001.jpg
dog002.jpg
...
cats/
cat001.jpg
cat002.jpg
...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;为了获取几百到几千张你感兴趣的分类的照片，你可以通过 &lt;a href="https://www.flickr.com/services/api/"
rel="noopener noreferrer" target="_blank" class="external"&gt;Flickr API&lt;/a&gt;
下载特定标签的图片，它的协议比较友好。&lt;/p&gt;
&lt;p&gt;在我们的例子中，使用两类图片，它们来自 &lt;a href="https://www.kaggle.com/c/dogs-vs-cats/data"
rel="noopener noreferrer" target="_blank" class="external"&gt;Kaggle&lt;/a&gt;
：1000只猫和1000条狗（尽管原数据集有12,500只猫和12,500条狗，我们只使用每类最靠前的1000张）。再每个类别取400张图片作为验证集来评估模型。&lt;/p&gt;
&lt;p&gt;这就只有很少的图片可供学习了，对一个图片分类问题而言这很不容易。这是一个有挑战的机器学习问题，但也很符合现实情况：在现实世界中，只获取小规模的数据集也是很昂贵的甚至是几乎不可能的（比如医疗学习）。从有限的数据获得最大的产出是一个合格的数据科学家的关键技能。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.keras.io/img/imgclf/cats_and_dogs.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;这个问题有多难呢？在Kaggle 开始猫狗分类竞赛（一共25,000张图片）两年多后，出现了如下的评论：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在一个多年前的非正式调查中，计算机图像专家认为当前技术如果没有的的巨大进步，一个准确率高于60%的分类器都几乎是不可能的。作为参考，60%准确率的分类器将&lt;em&gt;12-image HIP&lt;/em&gt;的猜测概率从1/4096提高到1/459。而现在的材料认为在这个任务上机器分类的正确率可以高达80%。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在竞赛结果中，顶级选手使用现代的深度学习技术，准确率可以高达98%。在我们的例子中，我们限制只用8%的数据集，问题会更难。&lt;/p&gt;
&lt;h4 id="深度学习在小数据问题中的作用"&gt;深度学习在小数据问题中的作用&lt;/h4&gt;
&lt;p&gt;我经常听见这种说法“深度学习只有在你有庞大的数据时才有用”。虽然不是全错，但这种说法一定程度上是有误导作用的。当然，深度学习有从数据中自动学习特征的能力，通常只有在可用的数据量很大时才有可能——特别是当输入样本的维度很高时，比如图片。然而，卷积神经网络网络——深度学习的重要算法之一——是针对大多数感知问题（比如图片分类）的最佳模型，即使只有很少的数据可供学习也是如此。在一个小的图片数据集上从头训练一个卷积神经网络仍然可以获得不错的结果，而且不需要手动设计特征。卷积神经网络足够好了，它们是解决这类问题的正确工具。&lt;/p&gt;
&lt;p&gt;但是更进一步，深度学习模型天然地适合更改应用场景：正如你将在本文中看到的，你可以将一个在大型数据集上训练的图片分类或语音识别模型，稍做修改后应用到完全不同的问题上。尤其是在计算机图形领域，很多预训练的模型（通常在ImageNet 数据集上）是公开可下载的，你可以使用它们在很少的数据上构建强大的图像模型。&lt;/p&gt;
&lt;h4 id="数据预处理和数据增强"&gt;数据预处理和数据增强&lt;/h4&gt;
&lt;p&gt;为了更好的利用有限的样本，你需要使用一系列的随机变换来增强图片，这样模型就不会再重复使用完全相同的图片。这可以防止过拟合，模型能更好的泛化。&lt;/p&gt;</description><content:encoded><![CDATA[<p>文本翻译自<a href="https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html"
   rel="noopener noreferrer" target="_blank" class="external">The Keras Blog</a>
。翻译的目的主要是放慢自己学习的速度，也许对其他人也会有帮助。以下为译文。</p>
<hr>
<p>在这个教程中，我们会展示一些简单但有效的方法，使你可以用很少的训练样本——每个待识别的类别只有几百张到几千张图片——来构建强大的图片分类模型。</p>
<p>我们会使用如下的方法：</p>
<ul>
<li>从头训练一个小的网络作为比较基准</li>
<li>使用预训练网络的bottleneck 特征</li>
<li>微调预训练网络的最后几层</li>
</ul>
<p>这会让我们涉及以下的Keras 特性：</p>
<ul>
<li><code>fit_generator</code> 使用Python数据生成器来训练Keras模型</li>
<li><code>ImageDataGenerator</code> 实时的图像增强</li>
<li>层冻结和模型微调</li>
<li>&hellip;其它</li>
</ul>
<p><strong>注意：所有的示例都在2017年3月14日更新到了 Keras  2.0 API。运行这些代码需要Keras版本号大于等于2.0.0。</strong></p>
<h4 id="我们的设定只有2000个样本每类1000个">我们的设定：只有2000个样本（每类1000个）</h4>
<p>我们从如下设定开始：</p>
<ul>
<li>机器安装了Keras, SciPy, PIL。如果你有NVIDIA 显卡也可以用（需要安装cuDNN），不过由于我们处理的图片很少所以这不是必需的。</li>
<li>一个训练集目录和验证集目录，都包含以分类组织的子目录，这些子目录包含 .png或.jpg图片：</li>
</ul>


<pre tabindex="0"><code>data/
    train/
        dogs/
            dog001.jpg
            dog002.jpg
            ...
        cats/
            cat001.jpg
            cat002.jpg
            ...
    validation/
        dogs/
            dog001.jpg
            dog002.jpg
            ...
        cats/
            cat001.jpg
            cat002.jpg
            ...</code></pre>
<p>为了获取几百到几千张你感兴趣的分类的照片，你可以通过 <a href="https://www.flickr.com/services/api/"
   rel="noopener noreferrer" target="_blank" class="external">Flickr API</a>
下载特定标签的图片，它的协议比较友好。</p>
<p>在我们的例子中，使用两类图片，它们来自 <a href="https://www.kaggle.com/c/dogs-vs-cats/data"
   rel="noopener noreferrer" target="_blank" class="external">Kaggle</a>
：1000只猫和1000条狗（尽管原数据集有12,500只猫和12,500条狗，我们只使用每类最靠前的1000张）。再每个类别取400张图片作为验证集来评估模型。</p>
<p>这就只有很少的图片可供学习了，对一个图片分类问题而言这很不容易。这是一个有挑战的机器学习问题，但也很符合现实情况：在现实世界中，只获取小规模的数据集也是很昂贵的甚至是几乎不可能的（比如医疗学习）。从有限的数据获得最大的产出是一个合格的数据科学家的关键技能。</p>
<p><img src="https://blog.keras.io/img/imgclf/cats_and_dogs.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这个问题有多难呢？在Kaggle 开始猫狗分类竞赛（一共25,000张图片）两年多后，出现了如下的评论：</p>
<blockquote>
<p>在一个多年前的非正式调查中，计算机图像专家认为当前技术如果没有的的巨大进步，一个准确率高于60%的分类器都几乎是不可能的。作为参考，60%准确率的分类器将<em>12-image HIP</em>的猜测概率从1/4096提高到1/459。而现在的材料认为在这个任务上机器分类的正确率可以高达80%。</p>
</blockquote>
<p>在竞赛结果中，顶级选手使用现代的深度学习技术，准确率可以高达98%。在我们的例子中，我们限制只用8%的数据集，问题会更难。</p>
<h4 id="深度学习在小数据问题中的作用">深度学习在小数据问题中的作用</h4>
<p>我经常听见这种说法“深度学习只有在你有庞大的数据时才有用”。虽然不是全错，但这种说法一定程度上是有误导作用的。当然，深度学习有从数据中自动学习特征的能力，通常只有在可用的数据量很大时才有可能——特别是当输入样本的维度很高时，比如图片。然而，卷积神经网络网络——深度学习的重要算法之一——是针对大多数感知问题（比如图片分类）的最佳模型，即使只有很少的数据可供学习也是如此。在一个小的图片数据集上从头训练一个卷积神经网络仍然可以获得不错的结果，而且不需要手动设计特征。卷积神经网络足够好了，它们是解决这类问题的正确工具。</p>
<p>但是更进一步，深度学习模型天然地适合更改应用场景：正如你将在本文中看到的，你可以将一个在大型数据集上训练的图片分类或语音识别模型，稍做修改后应用到完全不同的问题上。尤其是在计算机图形领域，很多预训练的模型（通常在ImageNet 数据集上）是公开可下载的，你可以使用它们在很少的数据上构建强大的图像模型。</p>
<h4 id="数据预处理和数据增强">数据预处理和数据增强</h4>
<p>为了更好的利用有限的样本，你需要使用一系列的随机变换来增强图片，这样模型就不会再重复使用完全相同的图片。这可以防止过拟合，模型能更好的泛化。</p>
<p>在Keras 中这可以通过<code>keras.preprocessing.image.ImageDataGenerator</code>类来实现。这个类提供如下功能：</p>
<ul>
<li>设定训练时图片的随机变换和标准化操作</li>
<li>通过 <code>.flow(data, labels)</code>或<code>flow_from_directory(directory)</code>来实例化批量增强图片的生成器。这些生成器随即可以作为<code>fit_generator</code>，``evaluate_generator<code> 和</code>predict_generator`等Keras 模型方法的输入。</li>
</ul>
<p>示例如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> keras.preprocessing.image <span style="color:#f92672">import</span> ImageDataGenerator
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>datagen <span style="color:#f92672">=</span> ImageDataGenerator(
</span></span><span style="display:flex;"><span>        rotation_range<span style="color:#f92672">=</span><span style="color:#ae81ff">40</span>,
</span></span><span style="display:flex;"><span>        width_shift_range<span style="color:#f92672">=</span><span style="color:#ae81ff">0.2</span>,
</span></span><span style="display:flex;"><span>        height_shift_range<span style="color:#f92672">=</span><span style="color:#ae81ff">0.2</span>,
</span></span><span style="display:flex;"><span>        rescale<span style="color:#f92672">=</span><span style="color:#ae81ff">1.</span><span style="color:#f92672">/</span><span style="color:#ae81ff">255</span>,
</span></span><span style="display:flex;"><span>        shear_range<span style="color:#f92672">=</span><span style="color:#ae81ff">0.2</span>,
</span></span><span style="display:flex;"><span>        zoom_range<span style="color:#f92672">=</span><span style="color:#ae81ff">0.2</span>,
</span></span><span style="display:flex;"><span>        horizontal_flip<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>,
</span></span><span style="display:flex;"><span>        fill_mode<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;nearest&#39;</span>)</span></span></code></pre></div>
<p>这里只是一部分可配置项（更多的请参考<a href="http://keras.io/preprocessing/image/"
   rel="noopener noreferrer" target="_blank" class="external">文档</a>
。我们看一下上述可配置项的含义：</p>
<ul>
<li><code>rotation_range</code> 是0~180的度数值，表示图片旋转的范围</li>
<li><code>width_shift</code> 和<code>height_shift</code> 是宽度、长度的百分比，代表图片平移的范围</li>
<li><code>rescale</code> 表示在其它处理之前对图片的乘数。我们的原始图片是由0<del>255之间的RGB值构成的，这种值模型处理起来太大了（在典型的学习率下），所以需要通过缩放因子1/255把值缩放到0</del>1之间</li>
<li><code>shear_range</code> 表示随机应用<a href="https://zh.wikipedia.org/wiki/%e9%94%99%e5%88%87"
   rel="noopener noreferrer" target="_blank" class="external">错切</a>
</li>
<li><code>zoom_range</code> 表示图片内的随机缩放</li>
<li><code>horizontal_flip</code> 表示随机地水平翻转图片——当没有水平不对称的假设时(例如，真实世界的图片)。</li>
<li><code>fill_mode</code> 表示在旋转或水平/垂直平移后，对新像素的填充策略</li>
</ul>
<p>现在我们使用这个工具在临时文件夹中生成一些图片，直观感受一下这些增强策略的效果，为了图片可显示，这里不使用数值缩放因子。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> keras.preprocessing.image <span style="color:#f92672">import</span> ImageDataGenerator, array_to_img, img_to_array, load_img
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>datagen <span style="color:#f92672">=</span> ImageDataGenerator(
</span></span><span style="display:flex;"><span>        rotation_range<span style="color:#f92672">=</span><span style="color:#ae81ff">40</span>,
</span></span><span style="display:flex;"><span>        width_shift_range<span style="color:#f92672">=</span><span style="color:#ae81ff">0.2</span>,
</span></span><span style="display:flex;"><span>        height_shift_range<span style="color:#f92672">=</span><span style="color:#ae81ff">0.2</span>,
</span></span><span style="display:flex;"><span>        shear_range<span style="color:#f92672">=</span><span style="color:#ae81ff">0.2</span>,
</span></span><span style="display:flex;"><span>        zoom_range<span style="color:#f92672">=</span><span style="color:#ae81ff">0.2</span>,
</span></span><span style="display:flex;"><span>        horizontal_flip<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>,
</span></span><span style="display:flex;"><span>        fill_mode<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;nearest&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>img <span style="color:#f92672">=</span> load_img(<span style="color:#e6db74">&#39;data/train/cats/cat.0.jpg&#39;</span>)  <span style="color:#75715e">#这是一个 PIL 图片</span>
</span></span><span style="display:flex;"><span>x <span style="color:#f92672">=</span> img_to_array(img)  <span style="color:#75715e"># 这是一个 Numpy 数组，形状是 (3, 150, 150)</span>
</span></span><span style="display:flex;"><span>x <span style="color:#f92672">=</span> x<span style="color:#f92672">.</span>reshape((<span style="color:#ae81ff">1</span>,) <span style="color:#f92672">+</span> x<span style="color:#f92672">.</span>shape)  <span style="color:#75715e"># 这是一个 Numpy 数组，形状是 (1, 3, 150, 150)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 下面的 .flow() 命令生成一批随机变换的图片</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 然后保存到 `preview/` 目录</span>
</span></span><span style="display:flex;"><span>i <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> batch <span style="color:#f92672">in</span> datagen<span style="color:#f92672">.</span>flow(x, batch_size<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>,
</span></span><span style="display:flex;"><span>                          save_to_dir<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;preview&#39;</span>, save_prefix<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;cat&#39;</span>, save_format<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;jpeg&#39;</span>):
</span></span><span style="display:flex;"><span>    i <span style="color:#f92672">+=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> i <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">20</span>:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">break</span>  <span style="color:#75715e"># 否则生成器会一直循环下去</span></span></span></code></pre></div>
<p>下面就是数据增强策略得到的图片。</p>
<p><img src="https://blog.keras.io/img/imgclf/cat_data_augmentation.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<h4 id="从头训练一个小卷积网络40行代码达到80准确率">从头训练一个小卷积网络：40行代码达到80%准确率</h4>
<p>卷积网络是解决图片分类问题的合适工具，我们先尝试训练一个作为基准线。由于样本很少，所以首先关注的问题是过拟合。过拟合发生于模型见过的样本太少，而不能泛化到新的数据，也就是说，模型开始使用一些不相关的特征来做预测。比如一个人只见过3张伐木工人的图片，和3张水手的图片，这些图片中只有一个伐木工人是戴帽子的，你可能会想戴帽子是伐木工人的特征而不是水手的，这样就会是一个糟糕的伐木工人/水手分类器。</p>
<p>数据增强是克服过拟合的方法之一，但是仅仅数据增强还不够，因为增强的样本之间是高度相关的。克服过拟合的关键是模型的熵容量——模型可以存储多少信息。模型能存储的信息越多，就有更大的潜力做到精确，它能利用更多的特征，但是有存储不相关特征的风险。而模型只能存储很少的信息时，则能聚焦到数据中找到的显著特征，这些特征更可能是真正问题相关的，能更好的泛化。</p>
<p>在这个例子中，我们使用一个只有少数几层、少数几个过滤器的小卷积网络，同时使用数据增强和dropout。Dropout 也能减轻过拟合，它可以防止一个层两次看到同样的模式，因此扮演了类似数据增强的角色（可以理解为数据增强和dropout都能破环数据中的随机相关性）。</p>
<p>下面的代码是我们的第一个模型，简单的3层卷积网络，卷积使用ReLU激活器，每层卷积紧接一个最大池化层。这和LeCun 在1990年代发表的图像分类模型结构很相似，除了当时没有使用ReLU激活器。</p>
<p>本实验的完整代码可以在<a href="https://gist.github.com/fchollet/0830affa1f7f19fd47b06d4cf89ed44d"
   rel="noopener noreferrer" target="_blank" class="external">这里</a>
找到。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> keras.models <span style="color:#f92672">import</span> Sequential
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> keras.layers <span style="color:#f92672">import</span> Conv2D, MaxPooling2D
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> keras.layers <span style="color:#f92672">import</span> Activation, Dropout, Flatten, Dense
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>model <span style="color:#f92672">=</span> Sequential()
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Conv2D(<span style="color:#ae81ff">32</span>, (<span style="color:#ae81ff">3</span>, <span style="color:#ae81ff">3</span>), input_shape<span style="color:#f92672">=</span>(<span style="color:#ae81ff">3</span>, <span style="color:#ae81ff">150</span>, <span style="color:#ae81ff">150</span>)))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Activation(<span style="color:#e6db74">&#39;relu&#39;</span>))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(MaxPooling2D(pool_size<span style="color:#f92672">=</span>(<span style="color:#ae81ff">2</span>, <span style="color:#ae81ff">2</span>)))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Conv2D(<span style="color:#ae81ff">32</span>, (<span style="color:#ae81ff">3</span>, <span style="color:#ae81ff">3</span>)))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Activation(<span style="color:#e6db74">&#39;relu&#39;</span>))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(MaxPooling2D(pool_size<span style="color:#f92672">=</span>(<span style="color:#ae81ff">2</span>, <span style="color:#ae81ff">2</span>)))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Conv2D(<span style="color:#ae81ff">64</span>, (<span style="color:#ae81ff">3</span>, <span style="color:#ae81ff">3</span>)))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Activation(<span style="color:#e6db74">&#39;relu&#39;</span>))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(MaxPooling2D(pool_size<span style="color:#f92672">=</span>(<span style="color:#ae81ff">2</span>, <span style="color:#ae81ff">2</span>)))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#目前为止模型的输出维度 (height, width, features)</span></span></span></code></pre></div>
<p>在此之上，使用两个全连接层。最后一层是单个单元，使用sigmoid 激活器，它非常适合二分类问题，相应的使用<code>binary_crossentropy</code> 来训练模型。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Flatten())  <span style="color:#75715e"># 3维数据特征转化为1维</span>
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Dense(<span style="color:#ae81ff">64</span>))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Activation(<span style="color:#e6db74">&#39;relu&#39;</span>))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Dropout(<span style="color:#ae81ff">0.5</span>))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Dense(<span style="color:#ae81ff">1</span>))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Activation(<span style="color:#e6db74">&#39;sigmoid&#39;</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>compile(loss<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;binary_crossentropy&#39;</span>,
</span></span><span style="display:flex;"><span>              optimizer<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;rmsprop&#39;</span>,
</span></span><span style="display:flex;"><span>              metrics<span style="color:#f92672">=</span>[<span style="color:#e6db74">&#39;accuracy&#39;</span>])</span></span></code></pre></div>
<p>现在开始准备数据，使用<code>.flow_from_directory()</code>根据jpgs图片和相应的目录，生成批量的图片数据和相应的标签。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>batch_size <span style="color:#f92672">=</span> <span style="color:#ae81ff">16</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 用于训练的图片增强配置</span>
</span></span><span style="display:flex;"><span>train_datagen <span style="color:#f92672">=</span> ImageDataGenerator(
</span></span><span style="display:flex;"><span>        rescale<span style="color:#f92672">=</span><span style="color:#ae81ff">1.</span><span style="color:#f92672">/</span><span style="color:#ae81ff">255</span>,
</span></span><span style="display:flex;"><span>        shear_range<span style="color:#f92672">=</span><span style="color:#ae81ff">0.2</span>,
</span></span><span style="display:flex;"><span>        zoom_range<span style="color:#f92672">=</span><span style="color:#ae81ff">0.2</span>,
</span></span><span style="display:flex;"><span>        horizontal_flip<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 用于测试的图片增强配置:只设定rescale</span>
</span></span><span style="display:flex;"><span>test_datagen <span style="color:#f92672">=</span> ImageDataGenerator(rescale<span style="color:#f92672">=</span><span style="color:#ae81ff">1.</span><span style="color:#f92672">/</span><span style="color:#ae81ff">255</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 生成器从&#39;data/train&#39; 文件夹中读取数据, 可以无限生成增强的图片数据</span>
</span></span><span style="display:flex;"><span>train_generator <span style="color:#f92672">=</span> train_datagen<span style="color:#f92672">.</span>flow_from_directory(
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#39;data/train&#39;</span>,  <span style="color:#75715e"># 目标文件夹</span>
</span></span><span style="display:flex;"><span>        target_size<span style="color:#f92672">=</span>(<span style="color:#ae81ff">150</span>, <span style="color:#ae81ff">150</span>),  <span style="color:#75715e"># 所有图片尺寸重设为 150x150</span>
</span></span><span style="display:flex;"><span>        batch_size<span style="color:#f92672">=</span>batch_size,
</span></span><span style="display:flex;"><span>        class_mode<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;binary&#39;</span>)  <span style="color:#75715e"># binary_crossentropy 损失函数需要二值标签</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 一个类似的生成器，用于验证集数据</span>
</span></span><span style="display:flex;"><span>validation_generator <span style="color:#f92672">=</span> test_datagen<span style="color:#f92672">.</span>flow_from_directory(
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#39;data/validation&#39;</span>,
</span></span><span style="display:flex;"><span>        target_size<span style="color:#f92672">=</span>(<span style="color:#ae81ff">150</span>, <span style="color:#ae81ff">150</span>),
</span></span><span style="display:flex;"><span>        batch_size<span style="color:#f92672">=</span>batch_size,
</span></span><span style="display:flex;"><span>        class_mode<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;binary&#39;</span>)</span></span></code></pre></div>
<p>现在可以使用生成器来训练模型了。每个轮次训练在GPU上需要20<del>30s，在CPU上需要300</del>400s。所以如果不是很着急，在CPU上运行是可行的。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>model<span style="color:#f92672">.</span>fit_generator(
</span></span><span style="display:flex;"><span>        train_generator,
</span></span><span style="display:flex;"><span>        steps_per_epoch<span style="color:#f92672">=</span><span style="color:#ae81ff">2000</span> <span style="color:#f92672">//</span> batch_size,
</span></span><span style="display:flex;"><span>        epochs<span style="color:#f92672">=</span><span style="color:#ae81ff">50</span>,
</span></span><span style="display:flex;"><span>        validation_data<span style="color:#f92672">=</span>validation_generator,
</span></span><span style="display:flex;"><span>        validation_steps<span style="color:#f92672">=</span><span style="color:#ae81ff">800</span> <span style="color:#f92672">//</span> batch_size)
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>save_weights(<span style="color:#e6db74">&#39;first_try.h5&#39;</span>)  <span style="color:#75715e"># 记得在训练后和训练中适时保存模型</span></span></span></code></pre></div>
<p>这种方法在50轮次训练后，验证集准确率约为0.79~0.81（50次是随意设定的——因为模型很小，又用了比较强的dropout，不太容易会过拟合）。如果在Kaggle 刚发布这个竞赛的时候，我们的结果已经是最好的——而且只用了8%的数据，也没有优化网络结构和超参数。实际上在Kaggle 的竞赛中这个模型能排进前100（一共215个竞赛者）。所以估计至少有115个竞赛者没有用深度学习。</p>
<h4 id="使用预训练网络的bottleneck-特征一分钟内达到90准确率">使用预训练网络的bottleneck 特征：一分钟内达到90%准确率</h4>
<p>更优雅的方法是利用在大数据集上的预训练网络。这些网络已经学到了在很多计算机图像问题上都有用的特征，相比那些只依赖问题本身可获得的数据的模型，利用这些特征可以达到更高的准确率。</p>
<p>我们使用VGG16 模型，它是在ImageNet 数据集上预训练的——本博客之前讨论过。由于ImageNet 的1000个分类中包括几个“猫”分类（波斯猫、暹罗猫等）和很多“狗”分类，这个模型已经学到很多和我们的分类问题相关的特征。实际上，仅仅需要记录数据经过模型后的softmax 预测值就可以很好的解决猫狗分类问题，都不需要使用bottleneck 特征。不过为了让方法能有更广泛的适应性，包括那些在ImageNet 中没有出现的分类，我们还是使用bottleneck 特征。</p>
<p>下面是VGG16 的结构：</p>
<p><img src="https://blog.keras.io/img/imgclf/vgg16_original.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>我们的策略如下：只使用这个模型的卷积部分，即全连接之前的所有层。然后在我们的数据上运行这个模型，使用两个numpy 数组记录所有的输出（即VGG16的bottleneck 特征：全连接层之前的最后一个激活层）。然后在这些记录的基础上，训练一个小的全连接网络。</p>
<p>我们之所以离线记录这些特征，而不是直接在冻结的卷积层之上增加全连接层训练，是因为这样计算更高效。运行VGG16 模型很费时，尤其是使用CPU时，而且我们只希望计算一次。不过注意这样就不能用数据增强了。</p>
<p>可以在<a href="https://gist.github.com/fchollet/f35fbc80e066a49d65f1688a7e99f069"
   rel="noopener noreferrer" target="_blank" class="external">这里</a>
找到完整的代码，从<a href="https://gist.github.com/baraldilorenzo/07d7802847aaad0a35d3"
   rel="noopener noreferrer" target="_blank" class="external">Github</a>
获取预训练权重。这里不再讨论模型怎样构造和加载——在很多Keras 的示例中已经讨论过了。不过需要看看如何使用图片生成器记录bottleneck 特征:</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>batch_size <span style="color:#f92672">=</span> <span style="color:#ae81ff">16</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>generator <span style="color:#f92672">=</span> datagen<span style="color:#f92672">.</span>flow_from_directory(
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#39;data/train&#39;</span>,
</span></span><span style="display:flex;"><span>        target_size<span style="color:#f92672">=</span>(<span style="color:#ae81ff">150</span>, <span style="color:#ae81ff">150</span>),
</span></span><span style="display:flex;"><span>        batch_size<span style="color:#f92672">=</span>batch_size,
</span></span><span style="display:flex;"><span>        class_mode<span style="color:#f92672">=</span><span style="color:#66d9ef">None</span>,  <span style="color:#75715e"># 这个生成器不产生标签</span>
</span></span><span style="display:flex;"><span>        shuffle<span style="color:#f92672">=</span><span style="color:#66d9ef">False</span>)  <span style="color:#75715e"># 保持数据顺序，先是1000只猫，然后是1000条狗</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 给定一个生成器yields批量的numpy数据，predict_generator会返回模型的输出</span>
</span></span><span style="display:flex;"><span>bottleneck_features_train <span style="color:#f92672">=</span> model<span style="color:#f92672">.</span>predict_generator(generator, <span style="color:#ae81ff">2000</span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 保存这些输出到 numpy数组</span>
</span></span><span style="display:flex;"><span>np<span style="color:#f92672">.</span>save(open(<span style="color:#e6db74">&#39;bottleneck_features_train.npy&#39;</span>, <span style="color:#e6db74">&#39;w&#39;</span>), bottleneck_features_train)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>generator <span style="color:#f92672">=</span> datagen<span style="color:#f92672">.</span>flow_from_directory(
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#39;data/validation&#39;</span>,
</span></span><span style="display:flex;"><span>        target_size<span style="color:#f92672">=</span>(<span style="color:#ae81ff">150</span>, <span style="color:#ae81ff">150</span>),
</span></span><span style="display:flex;"><span>        batch_size<span style="color:#f92672">=</span>batch_size,
</span></span><span style="display:flex;"><span>        class_mode<span style="color:#f92672">=</span><span style="color:#66d9ef">None</span>,
</span></span><span style="display:flex;"><span>        shuffle<span style="color:#f92672">=</span><span style="color:#66d9ef">False</span>)
</span></span><span style="display:flex;"><span>bottleneck_features_validation <span style="color:#f92672">=</span> model<span style="color:#f92672">.</span>predict_generator(generator, <span style="color:#ae81ff">800</span>)
</span></span><span style="display:flex;"><span>np<span style="color:#f92672">.</span>save(open(<span style="color:#e6db74">&#39;bottleneck_features_validation.npy&#39;</span>, <span style="color:#e6db74">&#39;w&#39;</span>), bottleneck_features_validation)</span></span></code></pre></div>
<p>然后使用保存的数据训练一个小的全连接网络：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>train_data <span style="color:#f92672">=</span> np<span style="color:#f92672">.</span>load(open(<span style="color:#e6db74">&#39;bottleneck_features_train.npy&#39;</span>))
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 由于特征是按猫狗的顺序产生的，所有构造标签很简单</span>
</span></span><span style="display:flex;"><span>train_labels <span style="color:#f92672">=</span> np<span style="color:#f92672">.</span>array([<span style="color:#ae81ff">0</span>] <span style="color:#f92672">*</span> <span style="color:#ae81ff">1000</span> <span style="color:#f92672">+</span> [<span style="color:#ae81ff">1</span>] <span style="color:#f92672">*</span> <span style="color:#ae81ff">1000</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>validation_data <span style="color:#f92672">=</span> np<span style="color:#f92672">.</span>load(open(<span style="color:#e6db74">&#39;bottleneck_features_validation.npy&#39;</span>))
</span></span><span style="display:flex;"><span>validation_labels <span style="color:#f92672">=</span> np<span style="color:#f92672">.</span>array([<span style="color:#ae81ff">0</span>] <span style="color:#f92672">*</span> <span style="color:#ae81ff">400</span> <span style="color:#f92672">+</span> [<span style="color:#ae81ff">1</span>] <span style="color:#f92672">*</span> <span style="color:#ae81ff">400</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>model <span style="color:#f92672">=</span> Sequential()
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Flatten(input_shape<span style="color:#f92672">=</span>train_data<span style="color:#f92672">.</span>shape[<span style="color:#ae81ff">1</span>:]))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Dense(<span style="color:#ae81ff">256</span>, activation<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;relu&#39;</span>))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Dropout(<span style="color:#ae81ff">0.5</span>))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(Dense(<span style="color:#ae81ff">1</span>, activation<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;sigmoid&#39;</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>compile(optimizer<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;rmsprop&#39;</span>,
</span></span><span style="display:flex;"><span>              loss<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;binary_crossentropy&#39;</span>,
</span></span><span style="display:flex;"><span>              metrics<span style="color:#f92672">=</span>[<span style="color:#e6db74">&#39;accuracy&#39;</span>])
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>fit(train_data, train_labels,
</span></span><span style="display:flex;"><span>          epochs<span style="color:#f92672">=</span><span style="color:#ae81ff">50</span>,
</span></span><span style="display:flex;"><span>          batch_size<span style="color:#f92672">=</span>batch_size,
</span></span><span style="display:flex;"><span>          validation_data<span style="color:#f92672">=</span>(validation_data, validation_labels))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>save_weights(<span style="color:#e6db74">&#39;bottleneck_fc_model.h5&#39;</span>)</span></span></code></pre></div>
<p>由于网络很小，所以在CPU上训练也很快（每秒1个轮次）：</p>


<pre tabindex="0"><code>Train on 2000 samples, validate on 800 samples
Epoch 1/50
2000/2000 [==============================] - 1s - loss: 0.8932 - acc: 0.7345 - val_loss: 0.2664 - val_acc: 0.8862
Epoch 2/50
2000/2000 [==============================] - 1s - loss: 0.3556 - acc: 0.8460 - val_loss: 0.4704 - val_acc: 0.7725
...
Epoch 47/50
2000/2000 [==============================] - 1s - loss: 0.0063 - acc: 0.9990 - val_loss: 0.8230 - val_acc: 0.9125
Epoch 48/50
2000/2000 [==============================] - 1s - loss: 0.0144 - acc: 0.9960 - val_loss: 0.8204 - val_acc: 0.9075
Epoch 49/50
2000/2000 [==============================] - 1s - loss: 0.0102 - acc: 0.9960 - val_loss: 0.8334 - val_acc: 0.9038
Epoch 50/50
2000/2000 [==============================] - 1s - loss: 0.0040 - acc: 0.9985 - val_loss: 0.8556 - val_acc: 0.9075</code></pre>
<p>准确率达到0.90~0.91，相当不错了。这是因为基础模型已经在标记过猫狗的样本数据上训练过了。</p>
<h4 id="微调预训练网络的最后几层">微调预训练网络的最后几层</h4>
<p>为了继续改进前面的结果，我们可以微调VGG16模型最后的卷积模块以及分类器。微调意味着从训练过的网络开始，在新的数据集上使用很小的权重更新来重新训练，本例可以分为3步：</p>
<ul>
<li>初始化VGG16 网络的卷积部分加载权重</li>
<li>在此基础上增加我们前面训练的全连接网络并加载权重</li>
<li>冻结最后的卷积模块之前的层</li>
</ul>
<p><img src="https://blog.keras.io/img/imgclf/vgg16_modified.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>注意：</p>
<ul>
<li>为了微调模型，所有层都要从训练过的权重开始：比如你不能在预训练的卷积层上增加一个使用随机值初始化的全连接层。因为随机初始化的权重带来的大的更新会伤害卷积层的权重。所以在本例中我们先训练了一个全连接层的分类器，然后才将它和卷积层放在一起工作。</li>
<li>为了防止过拟合我们只微调最后的卷积层而不是整个网络，因为整个网络有非常大的熵容量因此很容易过拟合。底层的卷积网络学到的特征是更基础的特征，没有高层特征那么抽象，所以固定最开始几层的特征（更加基础的特征）只训练最后一层是合理的。</li>
<li>微调应该用很小的学习率，而且一般用SGD 优化器而不是那些自适应的优化器比如RMSProp。这是为了保持很小量级的权重更新，不伤害网络已经学到的特征。</li>
</ul>
<p>可以在<a href="https://gist.github.com/fchollet/7eb39b44eb9e16e59632d25fb3119975"
   rel="noopener noreferrer" target="_blank" class="external">这里</a>
获得完整的试验代码。</p>
<p>初始化VGG16 网络加载权重后，增加我们前面训练的全连接层：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 在卷积层上增加分类器</span>
</span></span><span style="display:flex;"><span>top_model <span style="color:#f92672">=</span> Sequential()
</span></span><span style="display:flex;"><span>top_model<span style="color:#f92672">.</span>add(Flatten(input_shape<span style="color:#f92672">=</span>model<span style="color:#f92672">.</span>output_shape[<span style="color:#ae81ff">1</span>:]))
</span></span><span style="display:flex;"><span>top_model<span style="color:#f92672">.</span>add(Dense(<span style="color:#ae81ff">256</span>, activation<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;relu&#39;</span>))
</span></span><span style="display:flex;"><span>top_model<span style="color:#f92672">.</span>add(Dropout(<span style="color:#ae81ff">0.5</span>))
</span></span><span style="display:flex;"><span>top_model<span style="color:#f92672">.</span>add(Dense(<span style="color:#ae81ff">1</span>, activation<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;sigmoid&#39;</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 注意为了微调训练，全连接分类器也应该训练过</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># classifier, including the top classifier,</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># in order to successfully do fine-tuning</span>
</span></span><span style="display:flex;"><span>top_model<span style="color:#f92672">.</span>load_weights(top_model_weights_path)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 添加到卷积层之上</span>
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(top_model)</span></span></code></pre></div>
<p>最后开始使用很小的学习率，微调模型：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>batch_size <span style="color:#f92672">=</span> <span style="color:#ae81ff">16</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 准备数据增强</span>
</span></span><span style="display:flex;"><span>train_datagen <span style="color:#f92672">=</span> ImageDataGenerator(
</span></span><span style="display:flex;"><span>        rescale<span style="color:#f92672">=</span><span style="color:#ae81ff">1.</span><span style="color:#f92672">/</span><span style="color:#ae81ff">255</span>,
</span></span><span style="display:flex;"><span>        shear_range<span style="color:#f92672">=</span><span style="color:#ae81ff">0.2</span>,
</span></span><span style="display:flex;"><span>        zoom_range<span style="color:#f92672">=</span><span style="color:#ae81ff">0.2</span>,
</span></span><span style="display:flex;"><span>        horizontal_flip<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>test_datagen <span style="color:#f92672">=</span> ImageDataGenerator(rescale<span style="color:#f92672">=</span><span style="color:#ae81ff">1.</span><span style="color:#f92672">/</span><span style="color:#ae81ff">255</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>train_generator <span style="color:#f92672">=</span> train_datagen<span style="color:#f92672">.</span>flow_from_directory(
</span></span><span style="display:flex;"><span>        train_data_dir,
</span></span><span style="display:flex;"><span>        target_size<span style="color:#f92672">=</span>(img_height, img_width),
</span></span><span style="display:flex;"><span>        batch_size<span style="color:#f92672">=</span>batch_size,
</span></span><span style="display:flex;"><span>        class_mode<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;binary&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>validation_generator <span style="color:#f92672">=</span> test_datagen<span style="color:#f92672">.</span>flow_from_directory(
</span></span><span style="display:flex;"><span>        validation_data_dir,
</span></span><span style="display:flex;"><span>        target_size<span style="color:#f92672">=</span>(img_height, img_width),
</span></span><span style="display:flex;"><span>        batch_size<span style="color:#f92672">=</span>batch_size,
</span></span><span style="display:flex;"><span>        class_mode<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;binary&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 微调模型</span>
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>fit_generator(
</span></span><span style="display:flex;"><span>        train_generator,
</span></span><span style="display:flex;"><span>        steps_per_epoch<span style="color:#f92672">=</span>nb_train_samples <span style="color:#f92672">//</span> batch_size,
</span></span><span style="display:flex;"><span>        epochs<span style="color:#f92672">=</span>epochs,
</span></span><span style="display:flex;"><span>        validation_data<span style="color:#f92672">=</span>validation_generator,
</span></span><span style="display:flex;"><span>        validation_steps<span style="color:#f92672">=</span>nb_validation_samples <span style="color:#f92672">//</span> batch_size)</span></span></code></pre></div>
<p>50轮次训练后，本方法可以到达0.94的准确率。很大的进步！</p>
<p>用下面的方法可以尝试争取准确率达到0.95：</p>
<ul>
<li>更激进的数据增强</li>
<li>更激进的dropout</li>
<li>使用L1 和L2 正则化（又称“权重衰减”）</li>
<li>多微调一层（同时用更大的正则化）</li>
</ul>
<p>本文到此结束！回顾一下，各部分试验的代码如下：</p>
<ul>
<li><a href="https://gist.github.com/fchollet/0830affa1f7f19fd47b06d4cf89ed44d"
   rel="noopener noreferrer" target="_blank" class="external">从头训练的卷积网络</a>
</li>
<li><a href="https://gist.github.com/fchollet/f35fbc80e066a49d65f1688a7e99f069"
   rel="noopener noreferrer" target="_blank" class="external">Bottleneck 特征</a>
</li>
<li><a href="https://gist.github.com/fchollet/7eb39b44eb9e16e59632d25fb3119975"
   rel="noopener noreferrer" target="_blank" class="external">微调</a>
</li>
</ul>
<p>如果关于这篇文章讨论的话题你有任何评论或建议可以到<a href="https://twitter.com/fchollet"
   rel="noopener noreferrer" target="_blank" class="external">Twitter</a>
。</p>
]]></content:encoded><category>coding</category><category domain="tags">机器学习</category><category domain="tags">图像识别</category></item><item><title>小米笔记本Pro Manjaro 配置备忘</title><link>https://yifeitao.com/xiaomi-pro-manjaro/</link><pubDate>Sun, 30 Jun 2019 00:00:00 +0000</pubDate><guid>https://yifeitao.com/xiaomi-pro-manjaro/</guid><description>&lt;p&gt;虽然Windows10 有了WSL，用作开发的易用性提高了许多，但是偶尔还是有需要Linux系统的时候，所以需要装双系统，小米笔记本Pro支持扩展&lt;strong&gt;M2 SATA接口&lt;/strong&gt;固态硬盘，在这块硬盘划出128G用于Linux系统即可。选择Manjaro系统，主要是考虑到其驱动友好，软件丰富等优点，Manjaro支持很多种桌面，如gnome，kde等，个人选择了kde。&lt;/p&gt;
&lt;p&gt;当前版本：Manjaro KDE 20.0.1&lt;/p&gt;
&lt;h2 id="0x00-准备工作"&gt;0x00 准备工作&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;系统镜像&lt;a href="https://manjaro.org/download/"
rel="noopener noreferrer" target="_blank" class="external"&gt;下载地址&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;使用rufus软件将系统镜像刻录到U盘，建议选择DD写入模式&lt;/li&gt;
&lt;li&gt;关闭小米笔记本Pro BIOS的安全启动 &lt;a href="https://jingyan.baidu.com/article/77b8dc7fa8b3c06175eab66d.html"
rel="noopener noreferrer" target="_blank" class="external"&gt;可参考&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="0x01-安装"&gt;0x01 安装&lt;/h2&gt;
&lt;p&gt;使用U盘启动系统后，使用Live镜像的安装指引程序安装系统。&lt;/p&gt;
&lt;p&gt;启动时选择第二项boot（non-free),Manjaro自带的驱动精灵会帮你安装好所需驱动，笔记本双显卡则会帮你安装bumblebee。&lt;/p&gt;
&lt;p&gt;注意为了和Windows10和平共处，需要使用自定义分区方案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;win10系统的硬盘内有个efi的分区（格式为FAT32，一般大小为100M），需要指定为/boot/efi分区，注意选择保留不要格式化&lt;/li&gt;
&lt;li&gt;新划出的128G系统挂载 / 分区，如果需要休眠到硬盘，最好建立swap分区，一般大小和内存大小一致即可。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="0x02-安装后基本配置"&gt;0x02 安装后基本配置&lt;/h2&gt;
&lt;h3 id="1-笔记本双显卡设置"&gt;1 笔记本双显卡设置&lt;/h3&gt;
&lt;p&gt;查看显卡NVIDIA状态&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;lspci| grep -i vga&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;测试 Bumblebee 是否工作：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;optirun glxgears -info&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果需要不依赖Bumblebee来使用CUDA, 为开启NVIDIA显卡，运行:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo tee /proc/acpi/bbswitch &amp;lt;&amp;lt;&amp;lt; ON&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="2时间和日期"&gt;2.时间和日期&lt;/h3&gt;
&lt;p&gt;如果安装的是双系统，注意Manjaro Setting Manager &amp;gt; Time and Date勾选以下选项
&amp;ndash;set time and date automatically
&amp;ndash;hardware clock in local time zone&lt;/p&gt;
&lt;h3 id="3-源镜像与系统更新"&gt;3 源镜像与系统更新&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;排列源&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo pacman-mirrors -i -c China -m rank &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;#增加archlinuxcn库和antergos库&lt;/p&gt;</description><content:encoded><![CDATA[<p>虽然Windows10 有了WSL，用作开发的易用性提高了许多，但是偶尔还是有需要Linux系统的时候，所以需要装双系统，小米笔记本Pro支持扩展<strong>M2 SATA接口</strong>固态硬盘，在这块硬盘划出128G用于Linux系统即可。选择Manjaro系统，主要是考虑到其驱动友好，软件丰富等优点，Manjaro支持很多种桌面，如gnome，kde等，个人选择了kde。</p>
<p>当前版本：Manjaro KDE 20.0.1</p>
<h2 id="0x00-准备工作">0x00 准备工作</h2>
<ul>
<li>系统镜像<a href="https://manjaro.org/download/"
   rel="noopener noreferrer" target="_blank" class="external">下载地址</a>
</li>
<li>使用rufus软件将系统镜像刻录到U盘，建议选择DD写入模式</li>
<li>关闭小米笔记本Pro BIOS的安全启动 <a href="https://jingyan.baidu.com/article/77b8dc7fa8b3c06175eab66d.html"
   rel="noopener noreferrer" target="_blank" class="external">可参考</a>
</li>
</ul>
<h2 id="0x01-安装">0x01 安装</h2>
<p>使用U盘启动系统后，使用Live镜像的安装指引程序安装系统。</p>
<p>启动时选择第二项boot（non-free),Manjaro自带的驱动精灵会帮你安装好所需驱动，笔记本双显卡则会帮你安装bumblebee。</p>
<p>注意为了和Windows10和平共处，需要使用自定义分区方案：</p>
<ul>
<li>win10系统的硬盘内有个efi的分区（格式为FAT32，一般大小为100M），需要指定为/boot/efi分区，注意选择保留不要格式化</li>
<li>新划出的128G系统挂载 / 分区，如果需要休眠到硬盘，最好建立swap分区，一般大小和内存大小一致即可。</li>
</ul>
<h2 id="0x02-安装后基本配置">0x02 安装后基本配置</h2>
<h3 id="1-笔记本双显卡设置">1 笔记本双显卡设置</h3>
<p>查看显卡NVIDIA状态</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>lspci| grep -i vga</span></span></code></pre></div>
<p>测试 Bumblebee 是否工作：</p>


<pre tabindex="0"><code>optirun glxgears -info</code></pre>
<p>如果需要不依赖Bumblebee来使用CUDA, 为开启NVIDIA显卡，运行:</p>


<pre tabindex="0"><code>sudo tee /proc/acpi/bbswitch &lt;&lt;&lt; ON</code></pre>
<h3 id="2时间和日期">2.时间和日期</h3>
<p>如果安装的是双系统，注意Manjaro Setting Manager &gt; Time and Date勾选以下选项
&ndash;set time and date automatically
&ndash;hardware clock in local time zone</p>
<h3 id="3-源镜像与系统更新">3 源镜像与系统更新</h3>
<ul>
<li>排列源</li>
</ul>


<pre tabindex="0"><code>sudo  pacman-mirrors -i -c China -m rank  </code></pre>
<p>#增加archlinuxcn库和antergos库</p>


<pre tabindex="0"><code>echo -e &#34;\n[archlinuxcn]\nSigLevel = TrustAll\nServer = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/\$arch\n\n[antergos]\nSigLevel = TrustAll\nServer = https://mirrors.tuna.tsinghua.edu.cn/antergos/\$repo/\$arch\n&#34;|sudo tee -a /etc/pacman.conf</code></pre>
<ul>
<li>升级系统：</li>
</ul>


<pre tabindex="0"><code>sudo pacman -Syyu</code></pre>
<ul>
<li>安装archlinuxcn签名钥匙&amp;antergos签名钥匙</li>
</ul>


<pre tabindex="0"><code>sudo pacman -S --noconfirm archlinuxcn-keyring antergos-keyring</code></pre>
<ul>
<li>软件管理界面开启AUR支持。</li>
<li>安装增强的命令行软件管理工具yay</li>
</ul>


<pre tabindex="0"><code>sudo pacman -S yay</code></pre>
<h3 id="4-安装中文字体和输入法">4 安装中文字体和输入法</h3>
<ul>
<li>安装中文字体</li>
</ul>


<pre tabindex="0"><code>sudo pacman -S --noconfirm wqy-microhei wqy-microhei-lite wqy-bitmapfont wqy-zenhei adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts noto-fonts-cjk &amp;&amp; fc-cache -fv</code></pre>
<ul>
<li>安装谷歌输入法</li>
</ul>


<pre tabindex="0"><code>sudo pacman -S --noconfirm fcitx-im fcitx-configtool fcitx-googlepinyin </code></pre>
<ul>
<li>配置fcitx， 配置完需要重启</li>
</ul>


<pre tabindex="0"><code>sudo echo -e &#34;export GTK_IM_MODULE=fcitx\nexport QT_IM_MODULE=fcitx\nexport XMODIFIERS=@im=fcitx&#34;&gt;&gt;~/.xprofile</code></pre>
<h3 id="5--windows硬盘挂载">5  Windows硬盘挂载</h3>
<p>/etc/fatab 新增</p>


<pre tabindex="0"><code>/dev/nvme0n1p3 /mnt/c ntfs defaults 0 2
/dev/sda1 /mnt/d ntfs defaults 0 2</code></pre>
<h3 id="6-vpn-和-ssh">6 VPN 和 SSH</h3>
<ul>
<li>导入OpenVPN配置</li>
</ul>


<pre tabindex="0"><code>sudo nmcli connection import type openvpn file xxx.ovpn</code></pre>
<ul>
<li>恢复备份的ssh配置</li>
</ul>


<pre tabindex="0"><code>cp -r path/to/bak/.ssh ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa </code></pre>
<h2 id="0x03-软件备忘">0x03 软件备忘</h2>
<p>使用pacman或yay安装</p>
<ul>
<li>
<p>chrome</p>
</li>
<li>
<p>intellij-idea-ultimate-edition</p>
</li>
<li>
<p>deepin-wine, deepin-wxwork</p>
</li>
<li>
<p>easystroke</p>
</li>
<li>
<p>nextcloud</p>
</li>
<li>
<p>git-cola</p>
</li>
<li>
<p>postman-bin</p>
</li>
<li>
<p>xmind （removed &ldquo;&ndash;add-modules=java.se.ee&rdquo; in /usr/share/xmind/XMind/XMind.ini ）</p>
</li>
<li>
<p>python-tensorflow-opt-cuda  python-pytorch-cuda</p>
</li>
<li>
<p>nvidia-docker</p>
</li>
<li>
<p>ipython jupyter</p>
</li>
<li>
<p>youdao-dict  deepin-wine-thunderspeed</p>
</li>
<li>
<p>netease-cloud-music</p>
</li>
<li>
<p>tusk</p>
</li>
<li>
<p>typora</p>
</li>
<li>
<p>visual-studio-code-bin</p>
</li>
<li>
<p>wps-office</p>
</li>
<li>
<p>foxitreader</p>
</li>
</ul>
<h2 id="0x04-日常维护">0x04 日常维护</h2>
<p>如果因为windows更新等原因导致双系统grub菜单丢失，一般可通过在windows系统内运行以下命令修复(以管理员运行)</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>bcdedit /set <span style="color:#e6db74">&#39;{bootmgr}&#39;</span> path \EFI\Manjaro\grubx64.efi</span></span></code></pre></div>
]]></content:encoded><category>coding</category><category domain="tags">Linux</category><category domain="tags">笔记本</category></item><item><title>青蛙与缓存：简化实用版动态规划</title><link>https://yifeitao.com/frog-and-cache/</link><pubDate>Tue, 23 Apr 2019 00:00:00 +0000</pubDate><guid>https://yifeitao.com/frog-and-cache/</guid><description>&lt;h2 id="1-从一只青蛙说起"&gt;1. 从一只青蛙说起&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://i.imgur.com/zuhczaLm.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;话说有一只青蛙，想要跳下&lt;code&gt;n&lt;/code&gt;级台阶下水塘，它每次可以跳1个台阶或者2个台阶，那么请问它一共有多少种跳法下水塘(比如，&lt;code&gt;n=30&lt;/code&gt;时)？&lt;/p&gt;
&lt;p&gt;用数学的语言来看，我们需要求一个青蛙跳的函数&lt;code&gt;f(n)&lt;/code&gt;，对这种自变量取值为非负整数的函数，我们可以从比较小的情况开始考虑，不难得到&lt;code&gt;f(1)=1, f(2)=2&lt;/code&gt;，问题是以后的穷举越来越麻烦。&lt;/p&gt;
&lt;p&gt;想象你就是那只青蛙，面对&lt;code&gt;n&lt;/code&gt;级台阶，第一次你可以先跳1级，那么剩下&lt;code&gt;n-1&lt;/code&gt;级，有&lt;code&gt;f(n-1)&lt;/code&gt;种跳法，第一次也可以跳两级，那么剩下&lt;code&gt;n-2&lt;/code&gt;级，有&lt;code&gt;f(n-2)&lt;/code&gt;种跳法，所以这个问题的答案并不陌生，是神奇的斐波拉契数列：&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned} F_{0} &amp;amp;=0 \ F_{1} &amp;amp;=1 \ F_{n} &amp;amp;=F_{n-1}+F_{n-2} \quad(\mathrm{n} \geq 2) \end{aligned}
$$&lt;/p&gt;
&lt;p&gt;解决这类求函数值问题的第一步，是找到一个递推式。我们把递推式翻译成python代码：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;fib&lt;/span&gt;(n):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; n&lt;span style="color:#f92672"&gt;==&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; n&lt;span style="color:#f92672"&gt;==&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; fib(n&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)&lt;span style="color:#f92672"&gt;+&lt;/span&gt;fib(n&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;%%time
fib(30)
Wall time: 269 ms
832040&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行时间&lt;code&gt;284ms&lt;/code&gt;，有够慢的，为什么慢？因为重复计算实在太多，以计算&lt;code&gt;f(5)&lt;/code&gt;为例，调用关系如下：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;f(5)==&amp;gt;f(4), f(3)
f(4)==&amp;gt;f(3), f(2), f(3)==&amp;gt;f(2), f(1)
f(3)==&amp;gt;f(2), f(1), f(2)==&amp;gt;f(1), f(0), f(2)==&amp;gt;f(1), f(0), f(1)
f(2)==&amp;gt;f(1), f(0), f(1), f(1), f(0), f(1), f(0), f(1)
f(1), f(0), f(1), f(1), f(0), f(1), f(0), f(1)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;那么一个很自然的想法是我们把中间计算结果都缓存下来，幸运的是，python中自带了这个“电池”。&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="1-从一只青蛙说起">1. 从一只青蛙说起</h2>
<p><img src="https://i.imgur.com/zuhczaLm.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>话说有一只青蛙，想要跳下<code>n</code>级台阶下水塘，它每次可以跳1个台阶或者2个台阶，那么请问它一共有多少种跳法下水塘(比如，<code>n=30</code>时)？</p>
<p>用数学的语言来看，我们需要求一个青蛙跳的函数<code>f(n)</code>，对这种自变量取值为非负整数的函数，我们可以从比较小的情况开始考虑，不难得到<code>f(1)=1, f(2)=2</code>，问题是以后的穷举越来越麻烦。</p>
<p>想象你就是那只青蛙，面对<code>n</code>级台阶，第一次你可以先跳1级，那么剩下<code>n-1</code>级，有<code>f(n-1)</code>种跳法，第一次也可以跳两级，那么剩下<code>n-2</code>级，有<code>f(n-2)</code>种跳法，所以这个问题的答案并不陌生，是神奇的斐波拉契数列：</p>
<p>$$
\begin{aligned} F_{0} &amp;=0 \ F_{1} &amp;=1 \ F_{n} &amp;=F_{n-1}+F_{n-2} \quad(\mathrm{n} \geq 2) \end{aligned}
$$</p>
<p>解决这类求函数值问题的第一步，是找到一个递推式。我们把递推式翻译成python代码：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">fib</span>(n):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> n<span style="color:#f92672">==</span><span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> n<span style="color:#f92672">==</span><span style="color:#ae81ff">1</span>:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> fib(n<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>)<span style="color:#f92672">+</span>fib(n<span style="color:#f92672">-</span><span style="color:#ae81ff">2</span>)</span></span></code></pre></div>


<pre tabindex="0"><code>%%time
fib(30)

Wall time: 269 ms
832040</code></pre>
<p>运行时间<code>284ms</code>，有够慢的，为什么慢？因为重复计算实在太多，以计算<code>f(5)</code>为例，调用关系如下：</p>


<pre tabindex="0"><code>f(5)==&gt;f(4), f(3)
f(4)==&gt;f(3), f(2), f(3)==&gt;f(2), f(1)
f(3)==&gt;f(2), f(1), f(2)==&gt;f(1), f(0), f(2)==&gt;f(1), f(0), f(1)
f(2)==&gt;f(1), f(0), f(1), f(1), f(0), f(1), f(0), f(1)
f(1), f(0), f(1), f(1), f(0), f(1), f(0), f(1)</code></pre>
<p>那么一个很自然的想法是我们把中间计算结果都缓存下来，幸运的是，python中自带了这个“电池”。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> functools <span style="color:#f92672">import</span> lru_cache
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">@lru_cache</span>()
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">fib</span>(n):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> n<span style="color:#f92672">==</span><span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> n<span style="color:#f92672">==</span><span style="color:#ae81ff">1</span>:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> fib(n<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>)<span style="color:#f92672">+</span>fib(n<span style="color:#f92672">-</span><span style="color:#ae81ff">2</span>)</span></span></code></pre></div>


<pre tabindex="0"><code>%%time
fib(30)
Wall time: 0 ns
832040</code></pre>
<p>快到没计量出时间来。python中<code>lru_cache</code>的基本原理是构建一个字典，字典的<code>key</code>为调用参数，<code>value</code>就是该参数的计算结果。大致等价于如下代码：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">fib</span>(n):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> n <span style="color:#f92672">in</span> fib<span style="color:#f92672">.</span>cache:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> fib<span style="color:#f92672">.</span>cache[n]
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> n<span style="color:#f92672">==</span><span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>        ans <span style="color:#f92672">=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">elif</span> n<span style="color:#f92672">==</span><span style="color:#ae81ff">1</span>:
</span></span><span style="display:flex;"><span>        ans <span style="color:#f92672">=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">elif</span>:
</span></span><span style="display:flex;"><span>        ans <span style="color:#f92672">=</span> fib(n<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>)<span style="color:#f92672">+</span>fib(n<span style="color:#f92672">-</span><span style="color:#ae81ff">2</span>)
</span></span><span style="display:flex;"><span>    fib<span style="color:#f92672">.</span>cache[n] <span style="color:#f92672">=</span> ans
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> ans
</span></span><span style="display:flex;"><span>fib<span style="color:#f92672">.</span>cache <span style="color:#f92672">=</span> {}</span></span></code></pre></div>
<p>当然，针对这个问题，我们可以使用更加细致的缓存方法， 乃至去掉递归改用循环（相当于只保留两个缓存，大大减少了空间占用，但是如果我们要反复计算各个<code>n</code>值，那么或许前一个方法才更合适）：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">fib</span>(n):
</span></span><span style="display:flex;"><span>    a, b <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(n):
</span></span><span style="display:flex;"><span>        a, b <span style="color:#f92672">=</span> b, a<span style="color:#f92672">+</span>b
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> a</span></span></code></pre></div>
<p>本题等同于 <a href="https://leetcode-cn.com/problems/climbing-stairs"
   rel="noopener noreferrer" target="_blank" class="external">leetcode 70</a>
, 在leetcode上的python3解答如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> functools <span style="color:#f92672">import</span> lru_cache
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Solution</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">@lru_cache</span>()
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">climbStairs</span>(self, n: int) <span style="color:#f92672">-&gt;</span> int:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> n<span style="color:#f92672">==</span><span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> n<span style="color:#f92672">==</span><span style="color:#ae81ff">1</span>:
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> self<span style="color:#f92672">.</span>climbStairs(n<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>)<span style="color:#f92672">+</span>self<span style="color:#f92672">.</span>climbStairs(n<span style="color:#f92672">-</span><span style="color:#ae81ff">2</span>)</span></span></code></pre></div>
<p>执行用时52 ms，内存消耗13.2MB。</p>
<h2 id="2-简化实用版动态规划">2. 简化实用版动态规划</h2>
<p>我们从这只青蛙中取得比较通用的启示，解决类似的可构造递推函数的问题：</p>
<ol>
<li>寻找一个递推关系，建立递归函数，问题变成多个子问题的求解；</li>
<li>为了防止反复计算同样的子问题，使用缓存，用空间换时间。</li>
</ol>
<p>在一般的算法教材或面试题解中，会花不少时间来设计这个缓存结构，在实际的工程问题中，我们可能对多使用一些缓存空间没有那么敏感，因此只需要开发递归函数，再加上通用的缓存方案就基本解决问题了。只有在缓存空间成为问题时，我们才需要进一步去考虑适应问题的更小的缓存。</p>
<p>为了检验这套方案，我们再看几道题，直接在leetcode上再找几个来刷。</p>
<h3 id="21-最大子序和">2.1 <a href="https://leetcode-cn.com/problems/maximum-subarray/"
   rel="noopener noreferrer" target="_blank" class="external">最大子序和</a>
</h3>
<p>给定一个整数数组 <code>nums</code> ，找到一个具有最大和的连续子数组（子数组最少包含一个元素），返回其最大和。</p>
<p><strong>示例:</strong></p>
<blockquote>
<p>输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大，为 6。</p>
</blockquote>
<p>我们考虑数组中每一个位置结尾能得到的最大和的递推关系。
$$
\begin{aligned}  f(0)&amp;=nums(0) \ f(k)&amp;=max(f(k-1), 0)+nums(k) \quad(k&gt;0) \end{aligned}
$$
基于此不难得到最终结果为
$$
ans = max_{i=0}^n(f(i))
$$
在leetcode中翻译成python3代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> functools <span style="color:#f92672">import</span> lru_cache
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Solution</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">maxSubArray</span>(self, nums: List[int]) <span style="color:#f92672">-&gt;</span> int:
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>nums <span style="color:#f92672">=</span> nums
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> max(self<span style="color:#f92672">.</span>f(i) <span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(len(nums)))
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">@lru_cache</span>()
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">f</span>(self, k):
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> k <span style="color:#f92672">==</span> <span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> self<span style="color:#f92672">.</span>nums[<span style="color:#ae81ff">0</span>]
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> max(self<span style="color:#f92672">.</span>f(k<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>), <span style="color:#ae81ff">0</span>) <span style="color:#f92672">+</span> self<span style="color:#f92672">.</span>nums[k]</span></span></code></pre></div>
<p>执行耗时76 ms，内存消耗13.7 MB。</p>
<h3 id="22-最小路径和">2.2 <a href="https://leetcode-cn.com/problems/minimum-path-sum/"
   rel="noopener noreferrer" target="_blank" class="external">最小路径和</a>
</h3>
<p>给定一个包含非负整数的 <em>m</em> x <em>n</em> 网格，请找出一条从左上角到右下角的路径，使得路径上的数字总和为最小。</p>
<p><strong>示例:</strong></p>
<blockquote>
<p>输入:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
输出: 7
解释: 因为路径 1→3→1→1→1 的总和最小。</p>
</blockquote>
<p>将矩阵中每个位置作为右下角，求最小路径和，不难得到如下递推公式：</p>
<p>$$
\begin{align}
f(0, 0) &amp;= grid(0, 0) \\
f(x, 0) &amp;= f(x-1, 0) + grid(x, 0) \quad(x&gt;0) \\
f(0, y) &amp;= f(0, y-1) + grid(0, y) \quad(y&gt;0) \\
f(x, y) &amp;= \min(f(x-1, y), f(x, y-1)) + grid(x, y) \quad(x&gt;0, y&gt;0)
\end{align}
$$</p>
<p>在leetcode中翻译成python3代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> functools <span style="color:#f92672">import</span> lru_cache
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Solution</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">minPathSum</span>(self, grid: List[List[int]]) <span style="color:#f92672">-&gt;</span> int:
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>grid <span style="color:#f92672">=</span> grid
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> self<span style="color:#f92672">.</span>f(len(grid)<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>, len(grid[<span style="color:#ae81ff">0</span>])<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">@lru_cache</span>()
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">f</span>(self, x, y):
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> x <span style="color:#f92672">==</span> <span style="color:#ae81ff">0</span> <span style="color:#f92672">and</span> y <span style="color:#f92672">==</span> <span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> self<span style="color:#f92672">.</span>grid[<span style="color:#ae81ff">0</span>][<span style="color:#ae81ff">0</span>]
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">elif</span> y <span style="color:#f92672">==</span> <span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> self<span style="color:#f92672">.</span>f(x<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">0</span>) <span style="color:#f92672">+</span> self<span style="color:#f92672">.</span>grid[x][<span style="color:#ae81ff">0</span>]
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">elif</span> x <span style="color:#f92672">==</span> <span style="color:#ae81ff">0</span>:
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> self<span style="color:#f92672">.</span>f(<span style="color:#ae81ff">0</span>, y<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>) <span style="color:#f92672">+</span> self<span style="color:#f92672">.</span>grid[<span style="color:#ae81ff">0</span>][y]
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> min(self<span style="color:#f92672">.</span>f(x<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>,y), self<span style="color:#f92672">.</span>f(x,y<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>)) <span style="color:#f92672">+</span> self<span style="color:#f92672">.</span>grid[x][y]</span></span></code></pre></div>
<p>执行耗时1052ms，内存消耗13.9M。</p>
]]></content:encoded><category>coding</category><category domain="tags">算法</category><category domain="tags">动态规划</category></item><item><title>投资，一种生活方式</title><link>https://yifeitao.com/investment-a-life-style/</link><pubDate>Sun, 17 Feb 2019 00:00:00 +0000</pubDate><guid>https://yifeitao.com/investment-a-life-style/</guid><description>&lt;p&gt;社会要发展，除了消费拉动，还需要投资再生产，否则企业无法发展，公共事业也会停滞不前。在一定的时期内，各类资源是有限的、恒定的，用于消费的多了，用于投资的就少了，为了发展，必须有人拿钱出来投资。&lt;/p&gt;
&lt;p&gt;如何驱动起来？一种是政府驱动，通过税收与公共事业建设运作；另一种是利益驱动，私人的债权投资和股权投资。对个人而言，买理财产品、买股票的本质应该是什么？是我付出了劳动，挣到了相应的钱作为衡量，但是我不完全消费掉，而是让渡出部分回报，用于投资再生产，将来在适当的时候，我可以兑现我的回报。&lt;/p&gt;
&lt;p&gt;以上是从社会生产的方面说。个人和家庭，一样有消费和投资的矛盾，拿到工资，钱是是用于享受，还是用于自我提升，还是为将来的人生目标攒钱，需要我们仔细衡量。&lt;/p&gt;
&lt;p&gt;很多人和我讨论股票，我都建议他们不要炒股，闲钱买点余额宝一类的货币基金就好，基本上没有风险和波动。因为投资是一件很严肃的事情，需要纳入个人的生活方式，家庭的运作方式去考虑。可能你不懂比较深入的理财知识，如果能努力挣钱，合理消费，适当储蓄，至少也能有个安稳的日子；即使你是个月光族，只要不遇上大的灾祸，也能活得不错。最可怕的反而是，焦虑着想要发大财，去搞所谓的“投资”，最后血本无归倾家荡产。&lt;/p&gt;
&lt;p&gt;太多的人，投资买基金买股票往往是对金钱焦虑的一种应激反应，老想着靠股市挣到一笔钱买辆车甚至买套房，这其实和去澳门赌一把没有本质区别。&lt;/p&gt;
&lt;p&gt;我这里没有讨论任何知识层面的东西，而是想说，如果炒股的出发点是错的，那么它必然只会导向一个错误的结果。老话说：吃不穷，穿不穷，不会盘算一世穷。对绝大部分人而言，投资不能成为一种职业，不是一种挣钱的方式，而只能是构建家庭理财计划的一部分，用于资产保值。没有站在十年二十年的尺度去规划，而是想着赚快钱，还是不要买基金买股票为好。&lt;/p&gt;
&lt;p&gt;投资，是一种生活方式；赌博是另一种。&lt;/p&gt;</description><content:encoded><![CDATA[<p>社会要发展，除了消费拉动，还需要投资再生产，否则企业无法发展，公共事业也会停滞不前。在一定的时期内，各类资源是有限的、恒定的，用于消费的多了，用于投资的就少了，为了发展，必须有人拿钱出来投资。</p>
<p>如何驱动起来？一种是政府驱动，通过税收与公共事业建设运作；另一种是利益驱动，私人的债权投资和股权投资。对个人而言，买理财产品、买股票的本质应该是什么？是我付出了劳动，挣到了相应的钱作为衡量，但是我不完全消费掉，而是让渡出部分回报，用于投资再生产，将来在适当的时候，我可以兑现我的回报。</p>
<p>以上是从社会生产的方面说。个人和家庭，一样有消费和投资的矛盾，拿到工资，钱是是用于享受，还是用于自我提升，还是为将来的人生目标攒钱，需要我们仔细衡量。</p>
<p>很多人和我讨论股票，我都建议他们不要炒股，闲钱买点余额宝一类的货币基金就好，基本上没有风险和波动。因为投资是一件很严肃的事情，需要纳入个人的生活方式，家庭的运作方式去考虑。可能你不懂比较深入的理财知识，如果能努力挣钱，合理消费，适当储蓄，至少也能有个安稳的日子；即使你是个月光族，只要不遇上大的灾祸，也能活得不错。最可怕的反而是，焦虑着想要发大财，去搞所谓的“投资”，最后血本无归倾家荡产。</p>
<p>太多的人，投资买基金买股票往往是对金钱焦虑的一种应激反应，老想着靠股市挣到一笔钱买辆车甚至买套房，这其实和去澳门赌一把没有本质区别。</p>
<p>我这里没有讨论任何知识层面的东西，而是想说，如果炒股的出发点是错的，那么它必然只会导向一个错误的结果。老话说：吃不穷，穿不穷，不会盘算一世穷。对绝大部分人而言，投资不能成为一种职业，不是一种挣钱的方式，而只能是构建家庭理财计划的一部分，用于资产保值。没有站在十年二十年的尺度去规划，而是想着赚快钱，还是不要买基金买股票为好。</p>
<p>投资，是一种生活方式；赌博是另一种。</p>
]]></content:encoded><category>investment</category><category domain="tags">投资</category><category domain="tags">生活方式</category></item><item><title>2018年小结</title><link>https://yifeitao.com/summary-2018/</link><pubDate>Tue, 01 Jan 2019 00:00:00 +0000</pubDate><guid>https://yifeitao.com/summary-2018/</guid><description>&lt;p&gt;18年彻底完成了职业转换，在新的行业当一个无名小卒，在广州这个城市也逐渐找到了生活的滋味，虽然赚到的钱没有多少，但是都在预期之内。&lt;/p&gt;
&lt;p&gt;在鸡汤与焦虑当道的自媒体时代，我有点喜欢的是丧文化，但更喜欢得知生活的种种无望与残酷后，依然像一个小朋友一样，不带太多压力，傻傻地认真努力。有三和大神的人生，也有过劳死的人生，我越来越倾向于认为人生本没有任何意义，或者只是作为基因的载体，意义只关乎选择。所以19年，继续不后悔不抱怨，仔细的选择，为所有的选择负责。&lt;/p&gt;
&lt;p&gt;2018年的头衔变成了算法工程师，2019年大概率会继续这个头衔，人工智能的浪潮或许会变冷，整个IT行业喊叫冬天来了。冬天来了，继续当一个能解决问题的人，物质生活的要求简单一点，还是能心安的努力下去的吧，喧嚣与焦虑都与我无关。&lt;/p&gt;
&lt;p&gt;2018年读了不到30本书，2019年希望读书能做到旧书新书三七开，多一点时间看看值得反复读的书。&lt;/p&gt;
&lt;p&gt;2018年跑步记录有据可查的只有20次不到，更多的被散步取代了，身体的活力其实有点在危险边缘。&lt;/p&gt;
&lt;p&gt;2018年投资收益-23%，满仓跨年，但是内心很平静。&lt;/p&gt;
&lt;p&gt;所有的年度总结与计划过后拿出来比对，容易变成大型的打脸现场，因为我们总是高估自己的热血，低估人性的怠惰，瞧不起每天一点一滴的努力，想要一口气吃成胖子。只有认清人性，先接纳自己的普通，才能跳出目标定得太高与一点点努力都不做的恶性循环。&lt;/p&gt;
&lt;p&gt;人总是低估长期的变化，而高估短期的变化，无论是投资、锻炼身体、孩子的教育，还是自我的提高。最好的努力是不悲不喜的习惯性努力。所以我秉承微习惯的理念，不再制定那些注定难以完成的大计划，只为自己定几个注定难以失败的计划：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;每天做一个俯卧撑或者仰卧起坐；&lt;/li&gt;
&lt;li&gt;每天看1页纸的上市公司年报或研报；&lt;/li&gt;
&lt;li&gt;做一个业余项目，不设完成时限，早期用户只有自己，具体到每天必作的工作是打开项目文件夹，随便做点什么，1行代码或者1行文案都行。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;新年快乐。&lt;/p&gt;</description><content:encoded><![CDATA[<p>18年彻底完成了职业转换，在新的行业当一个无名小卒，在广州这个城市也逐渐找到了生活的滋味，虽然赚到的钱没有多少，但是都在预期之内。</p>
<p>在鸡汤与焦虑当道的自媒体时代，我有点喜欢的是丧文化，但更喜欢得知生活的种种无望与残酷后，依然像一个小朋友一样，不带太多压力，傻傻地认真努力。有三和大神的人生，也有过劳死的人生，我越来越倾向于认为人生本没有任何意义，或者只是作为基因的载体，意义只关乎选择。所以19年，继续不后悔不抱怨，仔细的选择，为所有的选择负责。</p>
<p>2018年的头衔变成了算法工程师，2019年大概率会继续这个头衔，人工智能的浪潮或许会变冷，整个IT行业喊叫冬天来了。冬天来了，继续当一个能解决问题的人，物质生活的要求简单一点，还是能心安的努力下去的吧，喧嚣与焦虑都与我无关。</p>
<p>2018年读了不到30本书，2019年希望读书能做到旧书新书三七开，多一点时间看看值得反复读的书。</p>
<p>2018年跑步记录有据可查的只有20次不到，更多的被散步取代了，身体的活力其实有点在危险边缘。</p>
<p>2018年投资收益-23%，满仓跨年，但是内心很平静。</p>
<p>所有的年度总结与计划过后拿出来比对，容易变成大型的打脸现场，因为我们总是高估自己的热血，低估人性的怠惰，瞧不起每天一点一滴的努力，想要一口气吃成胖子。只有认清人性，先接纳自己的普通，才能跳出目标定得太高与一点点努力都不做的恶性循环。</p>
<p>人总是低估长期的变化，而高估短期的变化，无论是投资、锻炼身体、孩子的教育，还是自我的提高。最好的努力是不悲不喜的习惯性努力。所以我秉承微习惯的理念，不再制定那些注定难以完成的大计划，只为自己定几个注定难以失败的计划：</p>
<ol>
<li>每天做一个俯卧撑或者仰卧起坐；</li>
<li>每天看1页纸的上市公司年报或研报；</li>
<li>做一个业余项目，不设完成时限，早期用户只有自己，具体到每天必作的工作是打开项目文件夹，随便做点什么，1行代码或者1行文案都行。</li>
</ol>
<p>新年快乐。</p>
]]></content:encoded><category>life</category><category domain="tags">年度总结</category><category domain="tags">反思</category></item><item><title>不会花钱的人，活该一辈子受穷</title><link>https://yifeitao.com/learn-to-spend-money/</link><pubDate>Sun, 23 Dec 2018 00:00:00 +0000</pubDate><guid>https://yifeitao.com/learn-to-spend-money/</guid><description>&lt;p&gt;&lt;img src="https://i.imgur.com/6vQjXHY.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;好吧，这个题目只是标题党。其实，我想说的是，身为穷人，我们更应该去努力学习如何花钱，才能活得相对幸福一点，而真正的富人，自然是不需要看我这篇文章的。&lt;/p&gt;
&lt;p&gt;在我老家湖南常德的农村，最近几年开始流行“送货下乡”，比如去年，某某品牌就“惠及农民兄弟”，在乡里推销净水器，疑似三无产品的净水器卖到一千多，至于效果如何，只能在推销时表演的浑水变清水节目上可以感受一下，很多老实巴交的老人平时一分钱舍不得多花，竟然就鬼使神差的装了净水器，这些产品既无品牌背书，更无售后服务，收到钱后谁还管你滤芯要不要换这种事，很多人用了没多久也就闲置了。&lt;/p&gt;
&lt;p&gt;你要说这是彻底的诈骗，倒也谈不上，只是明明有无数的正规品牌可以买，为什么非要买一些三无产品呢？首先这自然是大品牌们发掘市场不利，其次，据我妈反映，这些装净水器的人，在村里也是相对比较穷的，身为穷人的可怕就在这里了，本来就没几个钱了，还要被各类骗子和疑似骗子的商家反复收割一番。&lt;/p&gt;
&lt;p&gt;挣钱和花钱哪个更需要学习，鸡汤一点的话，我当然会说挣钱更值得学习，毕竟，只要我们钱够多，花钱的时候就不必畏畏缩缩，也不怕吃亏上当，所谓“财务自由”嘛。可是现实一点说，其实花钱更值得学习，因为我不得不很遗憾很颓废的指出，写本文和看本文的人，可能终其一生，也不过是挣扎过了温饱线，一辈子能挣到的钱不用计算器就能估算出来，要达到想怎么花就怎么花的状态，不过是痴心妄想罢了。&lt;/p&gt;
&lt;p&gt;所以问题就变成了我们要把有限的钱花到什么地方，才能尽可能的活得相对幸福一些。最颓废的做法，自然是破罐子破摔，反正都是穷鬼，随随便便花，凑活过一辈子也就是了。不过我想的是，既然挣钱这回事太难，不如花钱的时候认真一点，就当我们在解一道限定条件的方程题，或者限定了韵脚去作一首五言绝句，用有限的金钱获得最大的幸福感，少被富人们收割几刀，也不失为失败者的另类成功。&lt;/p&gt;
&lt;p&gt;不要误会，这不是“什么值得买“一类的公众号，我们不推荐具体的产品，只探讨一些理念性的问题。&lt;/p&gt;
&lt;p&gt;关于花钱，我觉得需要弄清楚的只有一件事，就是我们付出了什么，又得到了什么，像一个炼金术士一样，我希望这两者基本是平衡的。&lt;/p&gt;
&lt;p&gt;在消费中，我们付出的首先是显性成本，也就是钱，这似乎很好算，但是你看看”首付三千元，新车开回家“这种广告就容易犯迷糊，发现这笔帐也不是那么好算的。除了钱，我们还要付出时间成本，这是最容易忽略的，因为穷，会更加不珍视自己的时间，干一些花半天时间省五毛钱的事情。&lt;/p&gt;
&lt;p&gt;在消费中，我们得到的是商品，每件商品的价格大致由三部分构成，产品的功能、品牌附加值、智商税。产品的功能自然是我们消费的首要目的，比如一件衣服的遮羞御寒、舒适美观的功用，为了减轻产品甄别的负担，品牌附加值往往是我们自愿付出的代价，比如有人认准了苹果手机，他在买手机时就不需要再费心的去比对参数和价格。而智商税，则是我们被有意无意的欺骗而付出的代价，比如小到买了一张彩票、一件防辐射的孕妇装，大到相信自己的孩子能统治世界，给大师打个几千万的培训费这种。&lt;/p&gt;
&lt;p&gt;所以，我们穷人的目标很明确：权衡金钱和时间的花费，购买自己真正需要的产品功能，尽量少为品牌溢价付费，坚决不交智商税。&lt;/p&gt;
&lt;p&gt;那么要如何才能做到呢？可惜这毕竟不是解方程，没有什么万能公式、标准答案，没有必要也没有可能做到完美。但是，这是一个值得不断学习，不但反思而去接近的目标。在移动支付无比发达的当下，不妨每个月打开自己的支付宝和微信支付账单，去反思一番，自己究竟买到的是什么？&lt;/p&gt;
&lt;p&gt;另外很重要的就是，要想不去为防辐射孕妇装这种东西支付智商税，那么对于科学知识，就像一个长者说过的，我们还是要学习一个。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://i.imgur.com/6vQjXHY.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>好吧，这个题目只是标题党。其实，我想说的是，身为穷人，我们更应该去努力学习如何花钱，才能活得相对幸福一点，而真正的富人，自然是不需要看我这篇文章的。</p>
<p>在我老家湖南常德的农村，最近几年开始流行“送货下乡”，比如去年，某某品牌就“惠及农民兄弟”，在乡里推销净水器，疑似三无产品的净水器卖到一千多，至于效果如何，只能在推销时表演的浑水变清水节目上可以感受一下，很多老实巴交的老人平时一分钱舍不得多花，竟然就鬼使神差的装了净水器，这些产品既无品牌背书，更无售后服务，收到钱后谁还管你滤芯要不要换这种事，很多人用了没多久也就闲置了。</p>
<p>你要说这是彻底的诈骗，倒也谈不上，只是明明有无数的正规品牌可以买，为什么非要买一些三无产品呢？首先这自然是大品牌们发掘市场不利，其次，据我妈反映，这些装净水器的人，在村里也是相对比较穷的，身为穷人的可怕就在这里了，本来就没几个钱了，还要被各类骗子和疑似骗子的商家反复收割一番。</p>
<p>挣钱和花钱哪个更需要学习，鸡汤一点的话，我当然会说挣钱更值得学习，毕竟，只要我们钱够多，花钱的时候就不必畏畏缩缩，也不怕吃亏上当，所谓“财务自由”嘛。可是现实一点说，其实花钱更值得学习，因为我不得不很遗憾很颓废的指出，写本文和看本文的人，可能终其一生，也不过是挣扎过了温饱线，一辈子能挣到的钱不用计算器就能估算出来，要达到想怎么花就怎么花的状态，不过是痴心妄想罢了。</p>
<p>所以问题就变成了我们要把有限的钱花到什么地方，才能尽可能的活得相对幸福一些。最颓废的做法，自然是破罐子破摔，反正都是穷鬼，随随便便花，凑活过一辈子也就是了。不过我想的是，既然挣钱这回事太难，不如花钱的时候认真一点，就当我们在解一道限定条件的方程题，或者限定了韵脚去作一首五言绝句，用有限的金钱获得最大的幸福感，少被富人们收割几刀，也不失为失败者的另类成功。</p>
<p>不要误会，这不是“什么值得买“一类的公众号，我们不推荐具体的产品，只探讨一些理念性的问题。</p>
<p>关于花钱，我觉得需要弄清楚的只有一件事，就是我们付出了什么，又得到了什么，像一个炼金术士一样，我希望这两者基本是平衡的。</p>
<p>在消费中，我们付出的首先是显性成本，也就是钱，这似乎很好算，但是你看看”首付三千元，新车开回家“这种广告就容易犯迷糊，发现这笔帐也不是那么好算的。除了钱，我们还要付出时间成本，这是最容易忽略的，因为穷，会更加不珍视自己的时间，干一些花半天时间省五毛钱的事情。</p>
<p>在消费中，我们得到的是商品，每件商品的价格大致由三部分构成，产品的功能、品牌附加值、智商税。产品的功能自然是我们消费的首要目的，比如一件衣服的遮羞御寒、舒适美观的功用，为了减轻产品甄别的负担，品牌附加值往往是我们自愿付出的代价，比如有人认准了苹果手机，他在买手机时就不需要再费心的去比对参数和价格。而智商税，则是我们被有意无意的欺骗而付出的代价，比如小到买了一张彩票、一件防辐射的孕妇装，大到相信自己的孩子能统治世界，给大师打个几千万的培训费这种。</p>
<p>所以，我们穷人的目标很明确：权衡金钱和时间的花费，购买自己真正需要的产品功能，尽量少为品牌溢价付费，坚决不交智商税。</p>
<p>那么要如何才能做到呢？可惜这毕竟不是解方程，没有什么万能公式、标准答案，没有必要也没有可能做到完美。但是，这是一个值得不断学习，不但反思而去接近的目标。在移动支付无比发达的当下，不妨每个月打开自己的支付宝和微信支付账单，去反思一番，自己究竟买到的是什么？</p>
<p>另外很重要的就是，要想不去为防辐射孕妇装这种东西支付智商税，那么对于科学知识，就像一个长者说过的，我们还是要学习一个。</p>
]]></content:encoded><category>investment</category><category domain="tags">理财</category><category domain="tags">消费</category></item><item><title>财富基因</title><link>https://yifeitao.com/fortune-gene/</link><pubDate>Mon, 03 Dec 2018 00:00:00 +0000</pubDate><guid>https://yifeitao.com/fortune-gene/</guid><description>&lt;p&gt;&lt;img src="https://i.imgur.com/PHrHxGq.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;一个现代人拥有的财富，越来越呈现出虚拟的形态，它往往只是一个数字，这个数字可能印刷在纸币上，可能存储在银行系统、股权登记系统中，甚至可能是区块链中的一串比特。这些数字本身不具备价值，而只是价值的代表。相信这些数字代表着财富，无论我们是相信银行系统背后的国家信用，还是比特币背后的密码学，都是人类想象力的伟大胜利。&lt;/p&gt;
&lt;p&gt;人类的生物基因，并不会教会人如何看待、获取、利用财富，毕竟财富相关的概念产生在人类社会逐渐成熟时，最多不过几千年，相比漫长的进化史，它来得太迟，又变化得太快。不仅如此，人类基因中那些适应远古生活、来不及变化的部分，有时候反而是我们正确对待财富的障碍，即所谓人性的弱点。&lt;/p&gt;
&lt;p&gt;只有借助文化基因的传承，我们才有可能学会正确的财富观。我只是一个刚解决了温饱问题的人，有什么资格大言不惭的谈论高大上的财富问题呢？可是一个突如其来的悲剧让我改变了想法。&lt;/p&gt;
&lt;p&gt;前不久，我的一个堂兄因重度抑郁症不幸去世了，在震惊悲痛之余，我也在反思，在这个悲剧中，不太健康的消费观带来的经济压力可能是一个诱因。如何消费、如何理财，和每个人的生活息息相关，或许并不是那么高大上。我自责在这个悲剧酝酿的过程中什么都没做。&lt;/p&gt;
&lt;p&gt;我想在正确的财富观的传播上，做一点微小的工作。主要内容是我对当代社会消费、理财、投资的一系列思考。有无数堪比日月的思想家，而我能做的，最多不过一个萤火虫，当一个观念的二道贩子，如果能给任何人带来思考上的一丝光明，那么这些写作也就存留了一丝意义。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://i.imgur.com/PHrHxGq.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>一个现代人拥有的财富，越来越呈现出虚拟的形态，它往往只是一个数字，这个数字可能印刷在纸币上，可能存储在银行系统、股权登记系统中，甚至可能是区块链中的一串比特。这些数字本身不具备价值，而只是价值的代表。相信这些数字代表着财富，无论我们是相信银行系统背后的国家信用，还是比特币背后的密码学，都是人类想象力的伟大胜利。</p>
<p>人类的生物基因，并不会教会人如何看待、获取、利用财富，毕竟财富相关的概念产生在人类社会逐渐成熟时，最多不过几千年，相比漫长的进化史，它来得太迟，又变化得太快。不仅如此，人类基因中那些适应远古生活、来不及变化的部分，有时候反而是我们正确对待财富的障碍，即所谓人性的弱点。</p>
<p>只有借助文化基因的传承，我们才有可能学会正确的财富观。我只是一个刚解决了温饱问题的人，有什么资格大言不惭的谈论高大上的财富问题呢？可是一个突如其来的悲剧让我改变了想法。</p>
<p>前不久，我的一个堂兄因重度抑郁症不幸去世了，在震惊悲痛之余，我也在反思，在这个悲剧中，不太健康的消费观带来的经济压力可能是一个诱因。如何消费、如何理财，和每个人的生活息息相关，或许并不是那么高大上。我自责在这个悲剧酝酿的过程中什么都没做。</p>
<p>我想在正确的财富观的传播上，做一点微小的工作。主要内容是我对当代社会消费、理财、投资的一系列思考。有无数堪比日月的思想家，而我能做的，最多不过一个萤火虫，当一个观念的二道贩子，如果能给任何人带来思考上的一丝光明，那么这些写作也就存留了一丝意义。</p>
]]></content:encoded><category>investment</category><category domain="tags">财富</category><category domain="tags">投资</category></item><item><title>二分类问题的评分值与损失函数</title><link>https://yifeitao.com/score-and-loss-function-of-binary-classification/</link><pubDate>Wed, 21 Feb 2018 00:00:00 +0000</pubDate><guid>https://yifeitao.com/score-and-loss-function-of-binary-classification/</guid><description>&lt;p&gt;二分类问题是监督学习中最基本的问题之一，本文旨在从评分值、损失函数的角度，对解决二分类问题的诸多机器学习算法做一个梳理。相关算法的详细介绍可以参考相关教材&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src="loss.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" width="528" height="370" /&gt;
&lt;/p&gt;</description><content:encoded><![CDATA[<p>二分类问题是监督学习中最基本的问题之一，本文旨在从评分值、损失函数的角度，对解决二分类问题的诸多机器学习算法做一个梳理。相关算法的详细介绍可以参考相关教材<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>。</p>
<p><img src="loss.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" width="528" height="370" />
</p>
<p>给定一个数据集$D={(\mathbf x_1, y_1), (\mathbf x_2, y_2), &hellip;, (\mathbf x_m, y_m)}$ ，其中$y_i\in {-1, 1} $，$\mathbf x_i=(x_{i1}, x_{i2}, &hellip;x_{id})$为d维向量 。注意有些资料中二分类比较喜欢用${0, 1}$表示，使用什么数字表示二分类从原理上讲没有区别，但在数学表达上会有一些细微差异。</p>
<p>评分值不是一个机器学习算法中的一个正式名词，但是我们不妨建立这样一个认识角度。我们希望建立关于样本$\mathbf x$的一个评分函数$s(\mathbf x)$，它的基本性质很简单，就是要求和目标值$y$同号，即正样本评分为正数，负样本评分为负数，这样最终的二分类函数为$sign(s(\mathbf x))$。</p>
<p>那么我们要如何建立评分函数呢？直观的想法是，对样本的$d$个属性进行加权求和，这样能体现每个属性在评分中的重要性，如此建立的评分不一定在0值处有区分作用，因此再加上一个偏置项，所以评分函数为$s(\mathbf x)=w^T\mathbf x+b$，这个基本的评分函数可以衍生出很多算法。</p>
<p>评价二分类问题的基本标准是分类错误率，针对每一个样本，如果去计算它的损失函数，就是分类正确损失为0，分类错误损失为1，这种损失函数一般叫做0-1损失函数，可记为$l_{0-1}=\mathbb{I}[sign(s(\mathbf x))\neq y]$。</p>
<p>如果我们统一考虑正、负样本，令$z=s(\mathbf x)*y$ ，那么分类正确时，$z$必然始终为正值，不妨称其为绝对评分值,$z$是对分类是否正确的一个度量。则$l_{0-1}=\mathbb{I}[sign(z)= -1]$，故$l_{0-1}$是关于$z$的分段函数。从最优化理论的角度来看，这个函数无法求梯度或<a href="https://zh.wikipedia.org/wiki/%E6%AC%A1%E5%AF%BC%E6%95%B0"
   rel="noopener noreferrer" target="_blank" class="external">次梯度</a>
，因此需要找它的近似来优化。这个近似$\widetilde l$的基本标准是：始终为非负值；当它很小时，$l_{0-1}$很小。</p>
<p>评分值是属性$X$的线性组合，从另一个角度看，评分值也是关于权值$w$的线性组合。一般的，我们将$X$变换到新的特征空间得到$\phi (\mathbf x)$。则评分值为$z=(w^T\mathbf \phi (\mathbf x)+b)y$。上述分析基本不变，只是模型的复杂度更高了。以下分析如无特别说明仍在原空间进行。</p>
<h2 id="1-线性回归">1 线性回归</h2>
<p>要求评分值与目标值同号，如果目标定得更加狭隘一些，可以令评分值直接为${-1, 1}$,这是线性回归问题，损失函数使用误差平方（可以做直观的理解，也可以认为样本的误差符合正态分布，从极大似然的角度推导出，这不是本文的重点。）。注意到$l_{sqr}=(s(\mathbf x)-y)^2=(s(\mathbf x) * y-y^2)^2=(z-1)^2$，故误差函数是关于绝对评分值$z$的二次函数。从图中可以看出$l_{sqr}$是始终大于$l_{0-1}$的，而且当$l_{sqr}$比较小时，$l_{0-1}$也比较小，所以可以作为$l_{0-1}$的近似。</p>
<p>线性回归有封闭解$w=(X^TX)^{-1}X^Ty$，所以使用线性回归做二分类非常简单，但是效果一般不太好，为什么呢？从$l_{sqr}$的曲线可以看出，当绝对评分值很大时，$l_{0-1}$应该为0，直观来说，绝对评分值很大应该是区分度高的一件好事情，但是$l_{sqr}$却给与了更高的惩罚，这是不合理的。线性回归可以给出一个还不错的$w$值，可以用作其他算法的初始值。</p>
<h2 id="2-感知机学习">2 感知机学习</h2>
<p>感知机学习可以用如下的直观想法来理解：针对绝对评分值，当它为正数时，分类正确，我们认为误差为0，当它为负数时，我们认为离0值越远，误差越大，即$l_p=max(0, -z)$，从$l_p$的曲线来看，也是$l_{0-1}$的一个近似，虽然它也是一个分段函数，但是是可以求次梯度的,$z\geqslant 0$时，认为梯度为0，当$z&lt;0$时，$\frac{dl_p}{dw}=\frac {dl_p}{dz}\frac{dz}{dw}=-1*y\mathbf x=-y\mathbf x$，使用随机梯度下降法，$w\leftarrow w+\eta y\mathbf x$也就是说，只在出现评分错误时进行优化，这恰好就是感知机学习算法所做的工作。</p>
<h2 id="3-支持向量机">3 支持向量机</h2>
<p>对感知机学习的误差函数，我们可以进一步优化，我们希望绝对评分值要充分大，这样认为样本是正样本我们才更加放心，考虑到$z$是关于$w,b$可缩放的，不妨定义充分大为大于1。于是有$l_{hinge}=max(0, 1-z)$,这个损失函数被称为hinge损失函数。考虑结构风险，我们的优化目标为</p>
<p>$$
\underset{w,b}{min}=\frac{1}{2}\left |w  \right |^2+C\sum_{i=1}^{m}max(0, 1-z)
$$</p>
<p>通过松弛变量法，就可以变为软间隔支持向量机，通过二次规划来求出模型。</p>
<p>从评分值的角度来理解，评分值充分大使得模型针对新的样本有较好的鲁棒性，这正是支持向量机比较优秀的地方。如果引入特征空间，则在支持向量机的求解过程中要大量计算内积，将特征空间的内积简化为原空间的核函数可以引入核方法。</p>
<h2 id="4-logistic回归">4 Logistic回归</h2>
<p>在$z$值的基础上，我们希望它能算出一个概率，衡量分类正确的概率或者说程度。即将$z$的值域从$(-\infty , +\infty )$映射到$(0,1)$ ,那么sigmoid函数是个好的选择，它可求梯度而且在0处概率恰好为0.5。即</p>
<p>$$
sigmoid(z)=\frac {1}{1+exp(-z)}
$$</p>
<p>然后，我们再根据这个sigmoid函数，再来模拟损失函数$l_{0-1}(z)$，我们要求损失函数关于$z$递减，而且始终为正数，考虑概率求对数后再取负号，故</p>
<p>$$
l_{log}(z)=-log(sigmoid(z))=log(1+exp(-z))
$$</p>
<p>由图可以看出，它也是$l_{0-1}(z)$的一种近似。以对数损失函数为优化目标。</p>
<p>$$
\underset{w,b}{min}=\sum_{i=1}^{m}log(1+exp(-z))+ \lambda\left |w  \right |^2
$$</p>
<p>这是带正则化的Logistic回归，由于$l_{log}(z)$处处可微，因此可以使用梯度下降法等最优化方法求解。</p>
<h2 id="5-adaboost">5 AdaBoost</h2>
<p>指数函数同样可以满足近似$l_{0-1}$的基本条件，即损失函数定义为$l_{exp}(z)=exp(-z)$。</p>
<p>指数损失函数结合加性模型，可以推导出AdaBoost算法。</p>
<p>所谓加性模型，可以这样来理解：假设我们得到的特征空间中的d维向量$\phi(\mathbf x)$对应的就是d个弱分类器，就是说比随机猜测50%的正确率高一点的分类器。所谓的Boost方法就是有效的组合这些弱分类器来构建强分类器。加性模型本质上依然是一个线性模型。依然有评分函数为$s(\mathbf x)=w^T\mathbf \phi (\mathbf x)$。（考虑到弱分类器本身可以有偏置，因此取$b=0$。）只不过这里的$\phi(\mathbf x)$代表一个弱分类器，而不是一个简单的属性变换（本质上看，也是一种属性变换）。</p>
<p>AdaBoost是一个逐步迭代的过程，假设经过$m-1$轮迭代已经得到评分函数$s_{m-1}(\mathbf x)=\sum_{i=1}^{m-1}w_i\phi_i(\mathbf x)$,在第$m$轮迭代后得到$w_m, \phi_m(\mathbf x), s_m(\mathbf X)$,则$s_m(\mathbf X)=s_{m-1}(\mathbf X)+w_m\phi_m(\mathbf x)$，AdaBoost的优化目标是使得每一步得到的评分函数关于指数损失函数最小，即</p>
<p>$$
w_m, \phi_m = arg\underset{w,\phi}{min}\sum_{i=1}^Nexp(-z_{mi})  \quad z_{mi}=y_is_m(\mathbf X_i)
$$</p>
<p>该式的进一步推导此处不再详述。</p>
<h2 id="小结">小结</h2>
<p>以上介绍了6种损失函数，他们都是关于评分值的单调非增函数，其中后面5种是关于0-1损失函数的近似替代，通过求解替代函数能否得到原问题的解，有深入的研究，称为替代损失的“一致性”问题<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>。</p>
<p>此外，如果我们要找出所有样本种的正例并排序，那么评分值应该在参与优化的时候就具备排序的特性，对数损失和指数损失是单调递减的，以它们为优化目标的模型计算出的评分值可以参与排序，其他几种损失函数不是单调递减的，因此相应的评分值不适合排序。</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>统计学习方法 李航&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>机器学习 周志华&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p><a href="https://projecteuclid.org/download/pdf_1/euclid.aos/1079120130"
   rel="noopener noreferrer" target="_blank" class="external">https://projecteuclid.org/download/pdf_1/euclid.aos/1079120130</a>
&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>]]></content:encoded><category>coding</category><category domain="tags">机器学习</category><category domain="tags">分类</category></item><item><title>本来无一物</title><link>https://yifeitao.com/nothing-at-first/</link><pubDate>Mon, 12 Feb 2018 00:00:00 +0000</pubDate><guid>https://yifeitao.com/nothing-at-first/</guid><description>&lt;p&gt;&lt;img src="https://i.imgur.com/cBue1xF.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;题图是中国当代艺术家宋冬推出的“物尽其用”装置艺术展的一角，宋冬的母亲一辈子舍不得扔东西，将所有物品囤积起来，包括这些牙膏皮。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://i.imgur.com/cBue1xF.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>题图是中国当代艺术家宋冬推出的“物尽其用”装置艺术展的一角，宋冬的母亲一辈子舍不得扔东西，将所有物品囤积起来，包括这些牙膏皮。</p>
<h1 id="1-匮乏与囤积">1 匮乏与囤积</h1>
<p>一个衣食无忧的人如果想要快速了解什么叫做匮乏，可以看看阿城的小说《棋王》，开篇主人公王一生在火车上吃饭，阿城用的成语是“惨无人道”。梁家辉在电影《棋王》中将这一幕淋漓尽致的再现了。</p>
<p>匮乏是人类历史中的常态，它甚至书写到了我们的基因中，比如我们对甜食和脂肪无节制地热爱，是因为原始人食物匮乏，饱餐一顿算一顿。松鼠等动物都知道通过囤积来应对匮乏，而人类在这一点上就更加优秀了。我见过疑似囤积症患者的房间，虽然叹为观止，但我想他们其实只是行为模式更倾向于复古，不适应当代生活而已，毕竟，囤积癖好可能也写在我们基因中，比如很多女性怀孕期间就会激发这种囤积物品筑巢的本性。</p>
<p>所以，囤积物品是符合深植于我们基因中的人性的，然而这种古老的人性是否符合当代生活的特点，是否可能妨碍我们的幸福，却是很值得思考的一件事情。</p>
<h1 id="2-消费主义陷阱">2 消费主义陷阱</h1>
<p>消费主义是当今世界滚滚向前的重要动力之一，消费、创造、然后进步。以消费来定义自己和他人几乎成为一种定式，人人都被挟裹，焦虑着去挣钱，然后去买各式各样必要不必要的商品。而在互联网时代，这一切通过无处不在的广告和社交网络而变本加厉，广告告诉我们：如果想贴上某一种标签，我们应该拥有什么，比如成功人士应该买什么车，文艺青年应该喝什么咖啡，乃至技术宅应该用什么手机。通过社交网络，人们对外展示自己的个性。很多人甚至会觉得自己买得东西与众不同，高人一等，连手机品牌的粉丝之间也会发生口水仗。然而这些个性，并没有逃脱广告所定义的标签。</p>
<p>从物质丰富的消费主义时代再回到匮乏的时代是倒退，但彻底投入消费主义的怀抱，则有可能丧失自由意志，变成物欲的奴隶。环顾我们家中的物品，真正得到使用的可能不到一半，还有一多半的东西买来就不喜欢，甚至可能只是商家的赠品，我们想着总有一天会派上用场，然后堆积在家里，让自己被杂物包围，一不小心就变成垃圾堆一样。</p>
<p>物品本来是实现我们目标的工具，比如可能买车是为了周末带孩子出去玩方便，买衣服是为了美观，然而我们却试图通过购物去证明一些什么，或是去排解自己的空虚寂寞，追求的是下单和收快递时的那一点多巴胺。消费主义是我们的东西越来越多的罪魁祸首。</p>
<h1 id="3-极简主义与安全感">3 极简主义与安全感</h1>
<p>东西太多怎么办？最先想到的自然是整理，在方鸿渐时代，报刊杂志的角落就有如何整理物品的“主妇小技巧”。日本人煞有其事的做事风格之下，称之为“整理术”。然而，整理过房间的人都知道，物品就像杂草一样会生长，整理物品并不能根治东西太多的顽疾。基于对消费主义的反思，很多人开始从更加根本的角度来考虑问题，产生了被称为极简主义的思潮。</p>
<p>中国古话说，生不带来死不带去云云，有很多安贫乐道的道理，但是极简主义生活理念跟这些其实有本质的区别。极简主义是适应当代无比丰富的物质生活的，甚至可以说，推行极简主义的安全感就来自丰富易获取的物质。科技进步也可能简化我们的生活，比如智能手机就替代了一堆的物品。</p>
<p>推行极简主义生活的第一步是扔东西，扔东西是一种伤害安全感的行为，万一要用的时候没有怎么办？其实在市场极度发达的今天，大城市不用说，即使是偏远一点的地方，只要通快递，也几乎没有买不到的东西，办法很简单，先扔了再说，万一要用再买（然而绝大多数情况是不需要再买了）。扔东西当然看起来也是个败家的行为，但只要你扔得下手，下次买买买的时候自然就会三思，是不是买了又会用不上被扔掉，这样折腾几次，你的不必要的消费冲动就断了。</p>
<p>日本甚至产生了很多“扔东西”的专家，比如山下英子，提出了“断舍离”的概念，强调首先就不要买入不必要的东西，近藤麻理惠的“令人砰然心动的整理魔法”，强调只保留那些能让你心动的物品。这些理念，都是适应物资丰富的时代的。通过摆正我们和物品的关系，只留下那些真正实用的，能让我们的生活更幸福的物品，从而给我们留下更多的生活空间。</p>
<h1 id="4-断舍离的技术">4 “断舍离”的技术</h1>
<p>道与术是相辅相成的，我觉得极简主义的思潮很有意义，因为它是伴随着一系列的“扔东西的技术”的，无需拔高它的哲理层面的意义，人们在极简主义的标志下提倡的一些方法就是很值得学习的（是的，怎么扔东西也是可以学习的）。这里我结合自己的思考列举一些：</p>
<ul>
<li>同一样东西不会超过两件；</li>
<li>舍弃一年没用过的物品；</li>
<li>将难以舍弃的物品拍成照片，纸质文件可以扫描变成电子版；</li>
<li>丢掉收纳的东西，就像清除杂物的巢穴，死角不要放东西；</li>
<li>珍惜房子的空间，把超市等当自己的仓库，把咖啡厅当自己的客厅；</li>
<li>买一件新物，减一个旧物；</li>
<li>购物失败时，及时止损；</li>
<li>不参与商家的凑单优惠活动，那样只会浪费时间买回来一堆不需要的东西；</li>
<li>降低数量，提高质量，买贵的东西，尤其是那些用旧了还很好用的东西。</li>
<li>通过电子书，图书馆借阅等方法，减少家中藏书量，把书墙建到心里，将书融汇贯通在心里；</li>
<li>尽量不要用各种软件的收藏功能，要read it now，不用read it later，那样只会read it never；</li>
</ul>
<h1 id="5-本来无一物">5 本来无一物</h1>
<p>是不是把东西扔了，房间变得空间大了，我们就会幸福？</p>
<p>显然不是。</p>
<p>我们对于物品的执念，不过也是思想的一部分。对物品喜新厌旧而带来的幸福感非常短暂，相比层出不穷的物质生活，什么更重要？这是值得毕生寻找答案的问题。人生道理往往没有什么新鲜的，无论是儒家思想，还是佛教乃至共产主义，都会强调相比物质生活，要更加重视精神生活。极简主义不过是像无数的哲思一样，再一次指出一个道理：人生的意义不是由物质生活来决定的，或者至少不仅仅是由物质生活来决定的，在消费主义主导一切的当今社会，很多人很多时候会忘了这一点。</p>
<p>而所谓的扔东西，只不过是给陷入物质生活枷锁的人的一次解放自己的机会。那些断舍离的技巧是极简主义的术，而极简主义的道则在于寻找有意义的生活，这就不是看几篇文章或者几本书能解决的问题了。</p>
<p>但是话又说回来，相比大段的鸡汤道理，我建议你立即大动干戈的扔一次自己的东西，你对物质生活的理解就能提高很多，当然前提是，你得在这个过程中审视与反思自己的生活。</p>]]></content:encoded><category>life</category><category domain="tags">禅宗</category><category domain="tags">思考</category></item><item><title>基于RNN实现加法</title><link>https://yifeitao.com/addtion-by-rnn/</link><pubDate>Mon, 29 Jan 2018 00:00:00 +0000</pubDate><guid>https://yifeitao.com/addtion-by-rnn/</guid><description>&lt;p&gt;知乎上有人问题了个有趣的问题：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.zhihu.com/question/39727411"
rel="noopener noreferrer" target="_blank" class="external"&gt;深度学习能够学会加法吗？&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;撇开所谓的哲学意义不谈，已经证明了通过RNN可以模拟实现图灵机，这篇神奇的论文看&lt;a href="https://arxiv.org/abs/1410.5401"
rel="noopener noreferrer" target="_blank" class="external"&gt;这里&lt;/a&gt;
。我的大致理解是，图灵机也是一种模式匹配，而只要有足够多的学习样本，RNN总是可以学会这种模式匹配的。&lt;/p&gt;
&lt;p&gt;假设我们要让神经网络学会3位数的加法，比如111+222=333，123+987=110，注意为了简单期间，我们不考虑最高位的进位。&lt;/p&gt;
&lt;p&gt;加法可视为两个加数构造的序列来预测作为和的序列，因此可以用RNN来实现。示意图如下：输入序列、输出序列长度均为3，使用一层RNN存储进位信息。输入输出均使用one-hot编码后，输入特征数为20，输出特征数为10，中间层使用RNN，其隐藏节点数设为32。&lt;/p&gt;
&lt;p&gt;&lt;img src="addtion-by-rnn-1.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" width="384" height="347" /&gt;
&lt;/p&gt;
&lt;p&gt;使用keras搭了一下模型，图示如下：&lt;/p&gt;
&lt;p&gt;&lt;img src="addtion-by-rnn-2.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" width="433" height="352" /&gt;
&lt;/p&gt;
&lt;p&gt;代码如下：&lt;/p&gt;
&lt;p&gt;注意为了画上述示意图，需要安装Graphviz&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# -*- coding: utf-8 -*-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; keras.models &lt;span style="color:#f92672"&gt;import&lt;/span&gt; Sequential
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; keras.utils &lt;span style="color:#f92672"&gt;import&lt;/span&gt; plot_model
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; keras &lt;span style="color:#f92672"&gt;import&lt;/span&gt; layers
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; numpy &lt;span style="color:#66d9ef"&gt;as&lt;/span&gt; np
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; os
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;os&lt;span style="color:#f92672"&gt;.&lt;/span&gt;environ[&lt;span style="color:#e6db74"&gt;&amp;#34;PATH&amp;#34;&lt;/span&gt;] &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; os&lt;span style="color:#f92672"&gt;.&lt;/span&gt;pathsep &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;C:/Program Files (x86)/Graphviz2.38/bin/&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;CharacterTable&lt;/span&gt;(object):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; one-hot encode/decode
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;__init__&lt;/span&gt;(self, chars):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;chars &lt;span style="color:#f92672"&gt;=&lt;/span&gt; sorted(set(chars))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;char_indices &lt;span style="color:#f92672"&gt;=&lt;/span&gt; dict((c, i) &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; i, c &lt;span style="color:#f92672"&gt;in&lt;/span&gt; enumerate(self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;chars))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;indices_char &lt;span style="color:#f92672"&gt;=&lt;/span&gt; dict((i, c) &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; i, c &lt;span style="color:#f92672"&gt;in&lt;/span&gt; enumerate(self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;chars))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;encode&lt;/span&gt;(self, C, num_rows):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; x &lt;span style="color:#f92672"&gt;=&lt;/span&gt; np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;zeros((num_rows, len(self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;chars)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; i, c &lt;span style="color:#f92672"&gt;in&lt;/span&gt; enumerate(C):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; x[i, self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;char_indices[c]] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; x
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;decode&lt;/span&gt;(self, x, calc_argmax&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; calc_argmax:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; x &lt;span style="color:#f92672"&gt;=&lt;/span&gt; x&lt;span style="color:#f92672"&gt;.&lt;/span&gt;argmax(axis&lt;span style="color:#f92672"&gt;=-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;join(self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;indices_char[x] &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; x &lt;span style="color:#f92672"&gt;in&lt;/span&gt; x)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TRAINING_SIZE &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;50000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DIGITS &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chars &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;0123456789&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ctable &lt;span style="color:#f92672"&gt;=&lt;/span&gt; CharacterTable(chars)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;questions &lt;span style="color:#f92672"&gt;=&lt;/span&gt; []
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;expected &lt;span style="color:#f92672"&gt;=&lt;/span&gt; []
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;seen &lt;span style="color:#f92672"&gt;=&lt;/span&gt; set()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#39;Generating data...&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; len(questions) &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; TRAINING_SIZE:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; a &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;join(np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;random&lt;span style="color:#f92672"&gt;.&lt;/span&gt;choice(list(&lt;span style="color:#e6db74"&gt;&amp;#39;0123456789&amp;#39;&lt;/span&gt;)) &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; i &lt;span style="color:#f92672"&gt;in&lt;/span&gt; range(DIGITS))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; b &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;join(np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;random&lt;span style="color:#f92672"&gt;.&lt;/span&gt;choice(list(&lt;span style="color:#e6db74"&gt;&amp;#39;0123456789&amp;#39;&lt;/span&gt;)) &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; i &lt;span style="color:#f92672"&gt;in&lt;/span&gt; range(DIGITS))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; key &lt;span style="color:#f92672"&gt;=&lt;/span&gt; tuple(sorted((a, b)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; key &lt;span style="color:#f92672"&gt;in&lt;/span&gt; seen:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; seen&lt;span style="color:#f92672"&gt;.&lt;/span&gt;add(key)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ans &lt;span style="color:#f92672"&gt;=&lt;/span&gt; str((int(a[::&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; int(b[::&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]))&lt;span style="color:#f92672"&gt;%&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1000&lt;/span&gt;)&lt;span style="color:#f92672"&gt;.&lt;/span&gt;zfill(DIGITS)[::&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; questions&lt;span style="color:#f92672"&gt;.&lt;/span&gt;append((a,b))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; expected&lt;span style="color:#f92672"&gt;.&lt;/span&gt;append(ans)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#39;Total addition questions:&amp;#39;&lt;/span&gt;, len(questions))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#39;Vectorization...&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x &lt;span style="color:#f92672"&gt;=&lt;/span&gt; np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;zeros((len(questions), DIGITS, len(chars)&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;), dtype&lt;span style="color:#f92672"&gt;=&lt;/span&gt;np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;bool)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;y &lt;span style="color:#f92672"&gt;=&lt;/span&gt; np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;zeros((len(questions), DIGITS, len(chars)), dtype&lt;span style="color:#f92672"&gt;=&lt;/span&gt;np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;bool)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; i, (a, b) &lt;span style="color:#f92672"&gt;in&lt;/span&gt; enumerate(questions):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; x[i] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;column_stack((ctable&lt;span style="color:#f92672"&gt;.&lt;/span&gt;encode(a, DIGITS), ctable&lt;span style="color:#f92672"&gt;.&lt;/span&gt;encode(b, DIGITS)))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; i, ans &lt;span style="color:#f92672"&gt;in&lt;/span&gt; enumerate(expected):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; y[i] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ctable&lt;span style="color:#f92672"&gt;.&lt;/span&gt;encode(ans, DIGITS)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#39;Split data...&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;indices &lt;span style="color:#f92672"&gt;=&lt;/span&gt; np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;arange(len(y))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;random&lt;span style="color:#f92672"&gt;.&lt;/span&gt;shuffle(indices)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;x &lt;span style="color:#f92672"&gt;=&lt;/span&gt; x[indices]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;y &lt;span style="color:#f92672"&gt;=&lt;/span&gt; y[indices]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;split_at &lt;span style="color:#f92672"&gt;=&lt;/span&gt; len(x) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; len(x) &lt;span style="color:#f92672"&gt;//&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(x_train, x_val) &lt;span style="color:#f92672"&gt;=&lt;/span&gt; x[:split_at], x[split_at:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(y_train, y_val) &lt;span style="color:#f92672"&gt;=&lt;/span&gt; y[:split_at], y[split_at:]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#39;Training Data:&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(x_train&lt;span style="color:#f92672"&gt;.&lt;/span&gt;shape)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(y_train&lt;span style="color:#f92672"&gt;.&lt;/span&gt;shape)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#39;Validation Data:&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(x_val&lt;span style="color:#f92672"&gt;.&lt;/span&gt;shape)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(y_val&lt;span style="color:#f92672"&gt;.&lt;/span&gt;shape)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HIDDEN_SIZE &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;32&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;BATCH_SIZE &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;128&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#39;Build model...&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Sequential()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model&lt;span style="color:#f92672"&gt;.&lt;/span&gt;add(layers&lt;span style="color:#f92672"&gt;.&lt;/span&gt;SimpleRNN(HIDDEN_SIZE, input_shape&lt;span style="color:#f92672"&gt;=&lt;/span&gt;(DIGITS, len(chars)&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;), return_sequences&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model&lt;span style="color:#f92672"&gt;.&lt;/span&gt;add(layers&lt;span style="color:#f92672"&gt;.&lt;/span&gt;TimeDistributed(layers&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Dense(len(chars))))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model&lt;span style="color:#f92672"&gt;.&lt;/span&gt;add(layers&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Activation(&lt;span style="color:#e6db74"&gt;&amp;#39;softmax&amp;#39;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model&lt;span style="color:#f92672"&gt;.&lt;/span&gt;compile(loss&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;categorical_crossentropy&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; optimizer&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;adam&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; metrics&lt;span style="color:#f92672"&gt;=&lt;/span&gt;[&lt;span style="color:#e6db74"&gt;&amp;#39;accuracy&amp;#39;&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#39;Plot model...&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;model&lt;span style="color:#f92672"&gt;.&lt;/span&gt;summary()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;plot_model(model, to_file&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;model.png&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(&lt;span style="color:#e6db74"&gt;&amp;#39;Training...&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ITER &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; iteration &lt;span style="color:#f92672"&gt;in&lt;/span&gt; range(ITER):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(&lt;span style="color:#e6db74"&gt;&amp;#39;-&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;50&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(&lt;span style="color:#e6db74"&gt;&amp;#39;Iteration&amp;#39;&lt;/span&gt;, iteration)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; model&lt;span style="color:#f92672"&gt;.&lt;/span&gt;fit(x_train, y_train,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; batch_size&lt;span style="color:#f92672"&gt;=&lt;/span&gt;BATCH_SIZE,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; epochs&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; validation_data&lt;span style="color:#f92672"&gt;=&lt;/span&gt;(x_val, y_val))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(&lt;span style="color:#e6db74"&gt;&amp;#34;10 validate examples:&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; i &lt;span style="color:#f92672"&gt;in&lt;/span&gt; range(&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ind &lt;span style="color:#f92672"&gt;=&lt;/span&gt; np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;random&lt;span style="color:#f92672"&gt;.&lt;/span&gt;randint(&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;, len(x_val))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rowx, rowy &lt;span style="color:#f92672"&gt;=&lt;/span&gt; x_val[np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;array([ind])], y_val[np&lt;span style="color:#f92672"&gt;.&lt;/span&gt;array([ind])]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; preds &lt;span style="color:#f92672"&gt;=&lt;/span&gt; model&lt;span style="color:#f92672"&gt;.&lt;/span&gt;predict_classes(rowx, verbose&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; question &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ctable&lt;span style="color:#f92672"&gt;.&lt;/span&gt;decode(rowx[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;][:,:&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;]) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;+&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; ctable&lt;span style="color:#f92672"&gt;.&lt;/span&gt;decode(rowx[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;][:,&lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;:])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; correct &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ctable&lt;span style="color:#f92672"&gt;.&lt;/span&gt;decode(rowy[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; guess &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ctable&lt;span style="color:#f92672"&gt;.&lt;/span&gt;decode(preds[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;], calc_argmax&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;False&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(&lt;span style="color:#e6db74"&gt;&amp;#39;Q&amp;#39;&lt;/span&gt;, question[::&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;], end&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39; &amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(&lt;span style="color:#e6db74"&gt;&amp;#39;A&amp;#39;&lt;/span&gt;, correct[::&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;], end&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39; &amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(&lt;span style="color:#e6db74"&gt;&amp;#39;√&amp;#39;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; correct &lt;span style="color:#f92672"&gt;==&lt;/span&gt; guess &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;×&amp;#39;&lt;/span&gt;, end&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39; &amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(guess[::&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;])&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;能在较短时间内训练到100%的准确率。毕竟，这个模式识别起来不太复杂。&lt;/p&gt;</description><content:encoded><![CDATA[<p>知乎上有人问题了个有趣的问题：</p>
<p><a href="https://www.zhihu.com/question/39727411"
   rel="noopener noreferrer" target="_blank" class="external">深度学习能够学会加法吗？</a>
</p>
<p>撇开所谓的哲学意义不谈，已经证明了通过RNN可以模拟实现图灵机，这篇神奇的论文看<a href="https://arxiv.org/abs/1410.5401"
   rel="noopener noreferrer" target="_blank" class="external">这里</a>
。我的大致理解是，图灵机也是一种模式匹配，而只要有足够多的学习样本，RNN总是可以学会这种模式匹配的。</p>
<p>假设我们要让神经网络学会3位数的加法，比如111+222=333，123+987=110，注意为了简单期间，我们不考虑最高位的进位。</p>
<p>加法可视为两个加数构造的序列来预测作为和的序列，因此可以用RNN来实现。示意图如下：输入序列、输出序列长度均为3，使用一层RNN存储进位信息。输入输出均使用one-hot编码后，输入特征数为20，输出特征数为10，中间层使用RNN，其隐藏节点数设为32。</p>
<p><img src="addtion-by-rnn-1.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" width="384" height="347" />
</p>
<p>使用keras搭了一下模型，图示如下：</p>
<p><img src="addtion-by-rnn-2.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" width="433" height="352" />
</p>
<p>代码如下：</p>
<p>注意为了画上述示意图，需要安装Graphviz</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># -*- coding: utf-8 -*-</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> keras.models <span style="color:#f92672">import</span> Sequential
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> keras.utils <span style="color:#f92672">import</span> plot_model
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> keras <span style="color:#f92672">import</span> layers
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> numpy <span style="color:#66d9ef">as</span> np
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> os
</span></span><span style="display:flex;"><span>os<span style="color:#f92672">.</span>environ[<span style="color:#e6db74">&#34;PATH&#34;</span>] <span style="color:#f92672">+=</span> os<span style="color:#f92672">.</span>pathsep <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;C:/Program Files (x86)/Graphviz2.38/bin/&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">class</span> <span style="color:#a6e22e">CharacterTable</span>(object):
</span></span><span style="display:flex;"><span>    <span style="color:#e6db74">&#34;&#34;&#34;
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    one-hot encode/decode
</span></span></span><span style="display:flex;"><span><span style="color:#e6db74">    &#34;&#34;&#34;</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">__init__</span>(self, chars):
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>chars <span style="color:#f92672">=</span> sorted(set(chars))
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>char_indices <span style="color:#f92672">=</span> dict((c, i) <span style="color:#66d9ef">for</span> i, c <span style="color:#f92672">in</span> enumerate(self<span style="color:#f92672">.</span>chars))
</span></span><span style="display:flex;"><span>        self<span style="color:#f92672">.</span>indices_char <span style="color:#f92672">=</span> dict((i, c) <span style="color:#66d9ef">for</span> i, c <span style="color:#f92672">in</span> enumerate(self<span style="color:#f92672">.</span>chars))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">encode</span>(self, C, num_rows):
</span></span><span style="display:flex;"><span>        x <span style="color:#f92672">=</span> np<span style="color:#f92672">.</span>zeros((num_rows, len(self<span style="color:#f92672">.</span>chars)))
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span> i, c <span style="color:#f92672">in</span> enumerate(C):
</span></span><span style="display:flex;"><span>            x[i, self<span style="color:#f92672">.</span>char_indices[c]] <span style="color:#f92672">=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> x
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">def</span> <span style="color:#a6e22e">decode</span>(self, x, calc_argmax<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>):
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> calc_argmax:
</span></span><span style="display:flex;"><span>            x <span style="color:#f92672">=</span> x<span style="color:#f92672">.</span>argmax(axis<span style="color:#f92672">=-</span><span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> <span style="color:#e6db74">&#39;&#39;</span><span style="color:#f92672">.</span>join(self<span style="color:#f92672">.</span>indices_char[x] <span style="color:#66d9ef">for</span> x <span style="color:#f92672">in</span> x)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>TRAINING_SIZE <span style="color:#f92672">=</span> <span style="color:#ae81ff">50000</span>
</span></span><span style="display:flex;"><span>DIGITS <span style="color:#f92672">=</span> <span style="color:#ae81ff">3</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>chars <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;0123456789&#39;</span>
</span></span><span style="display:flex;"><span>ctable <span style="color:#f92672">=</span> CharacterTable(chars)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>questions <span style="color:#f92672">=</span> []
</span></span><span style="display:flex;"><span>expected <span style="color:#f92672">=</span> []
</span></span><span style="display:flex;"><span>seen <span style="color:#f92672">=</span> set()
</span></span><span style="display:flex;"><span>print(<span style="color:#e6db74">&#39;Generating data...&#39;</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span> len(questions) <span style="color:#f92672">&lt;</span> TRAINING_SIZE:
</span></span><span style="display:flex;"><span>    a <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&#39;</span><span style="color:#f92672">.</span>join(np<span style="color:#f92672">.</span>random<span style="color:#f92672">.</span>choice(list(<span style="color:#e6db74">&#39;0123456789&#39;</span>)) <span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(DIGITS))
</span></span><span style="display:flex;"><span>    b <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;&#39;</span><span style="color:#f92672">.</span>join(np<span style="color:#f92672">.</span>random<span style="color:#f92672">.</span>choice(list(<span style="color:#e6db74">&#39;0123456789&#39;</span>)) <span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(DIGITS))
</span></span><span style="display:flex;"><span>    key <span style="color:#f92672">=</span> tuple(sorted((a, b)))
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> key <span style="color:#f92672">in</span> seen:
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">continue</span>
</span></span><span style="display:flex;"><span>    seen<span style="color:#f92672">.</span>add(key)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    ans <span style="color:#f92672">=</span> str((int(a[::<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>]) <span style="color:#f92672">+</span> int(b[::<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>]))<span style="color:#f92672">%</span><span style="color:#ae81ff">1000</span>)<span style="color:#f92672">.</span>zfill(DIGITS)[::<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>]
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    questions<span style="color:#f92672">.</span>append((a,b))
</span></span><span style="display:flex;"><span>    expected<span style="color:#f92672">.</span>append(ans)
</span></span><span style="display:flex;"><span>print(<span style="color:#e6db74">&#39;Total addition questions:&#39;</span>, len(questions))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print(<span style="color:#e6db74">&#39;Vectorization...&#39;</span>)
</span></span><span style="display:flex;"><span>x <span style="color:#f92672">=</span> np<span style="color:#f92672">.</span>zeros((len(questions), DIGITS, len(chars)<span style="color:#f92672">*</span><span style="color:#ae81ff">2</span>), dtype<span style="color:#f92672">=</span>np<span style="color:#f92672">.</span>bool)
</span></span><span style="display:flex;"><span>y <span style="color:#f92672">=</span> np<span style="color:#f92672">.</span>zeros((len(questions), DIGITS, len(chars)), dtype<span style="color:#f92672">=</span>np<span style="color:#f92672">.</span>bool)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> i, (a, b) <span style="color:#f92672">in</span> enumerate(questions):
</span></span><span style="display:flex;"><span>    x[i] <span style="color:#f92672">=</span> np<span style="color:#f92672">.</span>column_stack((ctable<span style="color:#f92672">.</span>encode(a, DIGITS), ctable<span style="color:#f92672">.</span>encode(b, DIGITS)))
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> i, ans <span style="color:#f92672">in</span> enumerate(expected):
</span></span><span style="display:flex;"><span>    y[i] <span style="color:#f92672">=</span> ctable<span style="color:#f92672">.</span>encode(ans, DIGITS)
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>print(<span style="color:#e6db74">&#39;Split data...&#39;</span>)
</span></span><span style="display:flex;"><span>indices <span style="color:#f92672">=</span> np<span style="color:#f92672">.</span>arange(len(y))
</span></span><span style="display:flex;"><span>np<span style="color:#f92672">.</span>random<span style="color:#f92672">.</span>shuffle(indices)
</span></span><span style="display:flex;"><span>x <span style="color:#f92672">=</span> x[indices]
</span></span><span style="display:flex;"><span>y <span style="color:#f92672">=</span> y[indices]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>split_at <span style="color:#f92672">=</span> len(x) <span style="color:#f92672">-</span> len(x) <span style="color:#f92672">//</span> <span style="color:#ae81ff">10</span>
</span></span><span style="display:flex;"><span>(x_train, x_val) <span style="color:#f92672">=</span> x[:split_at], x[split_at:]
</span></span><span style="display:flex;"><span>(y_train, y_val) <span style="color:#f92672">=</span> y[:split_at], y[split_at:]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print(<span style="color:#e6db74">&#39;Training Data:&#39;</span>)
</span></span><span style="display:flex;"><span>print(x_train<span style="color:#f92672">.</span>shape)
</span></span><span style="display:flex;"><span>print(y_train<span style="color:#f92672">.</span>shape)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print(<span style="color:#e6db74">&#39;Validation Data:&#39;</span>)
</span></span><span style="display:flex;"><span>print(x_val<span style="color:#f92672">.</span>shape)
</span></span><span style="display:flex;"><span>print(y_val<span style="color:#f92672">.</span>shape)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>HIDDEN_SIZE <span style="color:#f92672">=</span> <span style="color:#ae81ff">32</span>
</span></span><span style="display:flex;"><span>BATCH_SIZE <span style="color:#f92672">=</span> <span style="color:#ae81ff">128</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print(<span style="color:#e6db74">&#39;Build model...&#39;</span>)
</span></span><span style="display:flex;"><span>model <span style="color:#f92672">=</span> Sequential()
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(layers<span style="color:#f92672">.</span>SimpleRNN(HIDDEN_SIZE, input_shape<span style="color:#f92672">=</span>(DIGITS, len(chars)<span style="color:#f92672">*</span><span style="color:#ae81ff">2</span>), return_sequences<span style="color:#f92672">=</span><span style="color:#66d9ef">True</span>))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(layers<span style="color:#f92672">.</span>TimeDistributed(layers<span style="color:#f92672">.</span>Dense(len(chars))))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>add(layers<span style="color:#f92672">.</span>Activation(<span style="color:#e6db74">&#39;softmax&#39;</span>))
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>compile(loss<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;categorical_crossentropy&#39;</span>,
</span></span><span style="display:flex;"><span>              optimizer<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;adam&#39;</span>,
</span></span><span style="display:flex;"><span>              metrics<span style="color:#f92672">=</span>[<span style="color:#e6db74">&#39;accuracy&#39;</span>])
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print(<span style="color:#e6db74">&#39;Plot model...&#39;</span>)
</span></span><span style="display:flex;"><span>model<span style="color:#f92672">.</span>summary()
</span></span><span style="display:flex;"><span>plot_model(model, to_file<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;model.png&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print(<span style="color:#e6db74">&#39;Training...&#39;</span>)
</span></span><span style="display:flex;"><span>ITER <span style="color:#f92672">=</span> <span style="color:#ae81ff">20</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> iteration <span style="color:#f92672">in</span> range(ITER):
</span></span><span style="display:flex;"><span>    print()
</span></span><span style="display:flex;"><span>    print(<span style="color:#e6db74">&#39;-&#39;</span> <span style="color:#f92672">*</span> <span style="color:#ae81ff">50</span>)
</span></span><span style="display:flex;"><span>    print(<span style="color:#e6db74">&#39;Iteration&#39;</span>, iteration)
</span></span><span style="display:flex;"><span>    model<span style="color:#f92672">.</span>fit(x_train, y_train,
</span></span><span style="display:flex;"><span>              batch_size<span style="color:#f92672">=</span>BATCH_SIZE,
</span></span><span style="display:flex;"><span>              epochs<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>,
</span></span><span style="display:flex;"><span>              validation_data<span style="color:#f92672">=</span>(x_val, y_val))
</span></span><span style="display:flex;"><span>    print(<span style="color:#e6db74">&#34;10 validate examples:&#34;</span>)
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span> i <span style="color:#f92672">in</span> range(<span style="color:#ae81ff">10</span>):
</span></span><span style="display:flex;"><span>        ind <span style="color:#f92672">=</span> np<span style="color:#f92672">.</span>random<span style="color:#f92672">.</span>randint(<span style="color:#ae81ff">0</span>, len(x_val))
</span></span><span style="display:flex;"><span>        rowx, rowy <span style="color:#f92672">=</span> x_val[np<span style="color:#f92672">.</span>array([ind])], y_val[np<span style="color:#f92672">.</span>array([ind])]
</span></span><span style="display:flex;"><span>        preds <span style="color:#f92672">=</span> model<span style="color:#f92672">.</span>predict_classes(rowx, verbose<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>)
</span></span><span style="display:flex;"><span>        question <span style="color:#f92672">=</span> ctable<span style="color:#f92672">.</span>decode(rowx[<span style="color:#ae81ff">0</span>][:,:<span style="color:#ae81ff">10</span>]) <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;+&#39;</span> <span style="color:#f92672">+</span> ctable<span style="color:#f92672">.</span>decode(rowx[<span style="color:#ae81ff">0</span>][:,<span style="color:#ae81ff">10</span>:])
</span></span><span style="display:flex;"><span>        correct <span style="color:#f92672">=</span> ctable<span style="color:#f92672">.</span>decode(rowy[<span style="color:#ae81ff">0</span>])
</span></span><span style="display:flex;"><span>        guess <span style="color:#f92672">=</span> ctable<span style="color:#f92672">.</span>decode(preds[<span style="color:#ae81ff">0</span>], calc_argmax<span style="color:#f92672">=</span><span style="color:#66d9ef">False</span>)
</span></span><span style="display:flex;"><span>        print(<span style="color:#e6db74">&#39;Q&#39;</span>, question[::<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>], end<span style="color:#f92672">=</span><span style="color:#e6db74">&#39; &#39;</span>)
</span></span><span style="display:flex;"><span>        print(<span style="color:#e6db74">&#39;A&#39;</span>, correct[::<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>], end<span style="color:#f92672">=</span><span style="color:#e6db74">&#39; &#39;</span>)
</span></span><span style="display:flex;"><span>        print(<span style="color:#e6db74">&#39;√&#39;</span> <span style="color:#66d9ef">if</span> correct <span style="color:#f92672">==</span> guess <span style="color:#66d9ef">else</span> <span style="color:#e6db74">&#39;×&#39;</span>, end<span style="color:#f92672">=</span><span style="color:#e6db74">&#39; &#39;</span>)
</span></span><span style="display:flex;"><span>        print(guess[::<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>])</span></span></code></pre></div>
<p>能在较短时间内训练到100%的准确率。毕竟，这个模式识别起来不太复杂。</p>
<p>至于如何让机器理解什么是加法，这就是另外一个问题了，毕竟我们也难以理解人类是如何学会理解加法的，甚至人类是否理解加法都不知道。</p>
]]></content:encoded><category>coding</category><category domain="tags">机器学习</category><category domain="tags">RNN</category></item><item><title>停止日更</title><link>https://yifeitao.com/daily-post-stop/</link><pubDate>Mon, 09 Oct 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/daily-post-stop/</guid><description>&lt;p&gt;从今年元旦开始，每天更新一篇博客，已经约280天，如果我愿意的话，可以像行为艺术一般坚持下去，不过我觉得坚持日更的目的已经达到了，它拉动了我思考学习的进程，但是非要每日一更已经成为一个负担，真正有创造性的东西要日更几乎不可能，而片言只语式的更新只能算是微博，如果只是读书笔记又其实不适合用博客的形式写出来。接下来博客的写作主要做以下几件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;由日更变为周更，每周1~2篇质量较高的，有一定创造性的文章；&lt;/li&gt;
&lt;li&gt;将过去的博客中原创性较低的读书笔记以gitbook的形式重新整理发布到learn子域名；&lt;/li&gt;
&lt;li&gt;整理过去的博客，修正错别字，有一些内容不完善的补充完善；&lt;/li&gt;
&lt;li&gt;对有价值的内容在主页上做好导航。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>从今年元旦开始，每天更新一篇博客，已经约280天，如果我愿意的话，可以像行为艺术一般坚持下去，不过我觉得坚持日更的目的已经达到了，它拉动了我思考学习的进程，但是非要每日一更已经成为一个负担，真正有创造性的东西要日更几乎不可能，而片言只语式的更新只能算是微博，如果只是读书笔记又其实不适合用博客的形式写出来。接下来博客的写作主要做以下几件事：</p>
<ol>
<li>由日更变为周更，每周1~2篇质量较高的，有一定创造性的文章；</li>
<li>将过去的博客中原创性较低的读书笔记以gitbook的形式重新整理发布到learn子域名；</li>
<li>整理过去的博客，修正错别字，有一些内容不完善的补充完善；</li>
<li>对有价值的内容在主页上做好导航。</li>
</ol>
]]></content:encoded><category>methodology</category><category domain="tags">写作</category><category domain="tags">反思</category></item><item><title>学习、创造与分享</title><link>https://yifeitao.com/study-create-share/</link><pubDate>Sun, 08 Oct 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/study-create-share/</guid><description>&lt;p&gt;今天看到一个说法，说爱学习也可能是一种懒惰的行为，对于国庆七天都在写Python代码的我来说，这是一种很刺激的说法。&lt;/p&gt;
&lt;p&gt;对大部分人来说，让他们学新东西是很要命的东西，但也有一部分人，很喜欢学习新的东西，把学习当成一件有乐趣的事情，终身学习，“活到老学到老”是他们的信条，所以我之前一直把“活到老学到老”这句话作为博客的口号。但是今天我认真思考了一下，察觉到这是不够的。&lt;/p&gt;
&lt;p&gt;学习这一行为，基于学习者不同的主动程度，会体现出不同的创造性，随便看看公开课视频、朋友圈文章，看看罗辑思维，也可以算是学习，而在教程的指引下写出自己的一个小程序，也是一种学习。学习和创造的界限不是那么分明的，但是总归学习还是偏向于自我修炼，产生变化的主要是自己的脑子，而创造则需要将自己的想法作用于现实世界，所以创造不是空想。&lt;/p&gt;
&lt;p&gt;在物质文明越来越发达的今天，精神文明产品创造的意义日益凸显，如果你有好的想法，做成了好的产品，借助于信息时代的传播工具，其复制成本会接近于零，今天游戏产业和电影产业都非常挣钱，其实它们都是精神层面的需求。所以在信息时代，分享是非常简单的，重要的是你的创造。&lt;/p&gt;
&lt;p&gt;我没有谈到钱或者价值的问题，因为显而易见，如果创造物是有价值的，那么借助网络效应，很容易获得相应的价值回报。&lt;/p&gt;
&lt;p&gt;仔细分辨的话，我的学习中似乎是有一些躲在舒适区的懒惰，但是这都不重要，重要的是更加注重创造，这是三者中最重要的一环。&lt;/p&gt;</description><content:encoded><![CDATA[<p>今天看到一个说法，说爱学习也可能是一种懒惰的行为，对于国庆七天都在写Python代码的我来说，这是一种很刺激的说法。</p>
<p>对大部分人来说，让他们学新东西是很要命的东西，但也有一部分人，很喜欢学习新的东西，把学习当成一件有乐趣的事情，终身学习，“活到老学到老”是他们的信条，所以我之前一直把“活到老学到老”这句话作为博客的口号。但是今天我认真思考了一下，察觉到这是不够的。</p>
<p>学习这一行为，基于学习者不同的主动程度，会体现出不同的创造性，随便看看公开课视频、朋友圈文章，看看罗辑思维，也可以算是学习，而在教程的指引下写出自己的一个小程序，也是一种学习。学习和创造的界限不是那么分明的，但是总归学习还是偏向于自我修炼，产生变化的主要是自己的脑子，而创造则需要将自己的想法作用于现实世界，所以创造不是空想。</p>
<p>在物质文明越来越发达的今天，精神文明产品创造的意义日益凸显，如果你有好的想法，做成了好的产品，借助于信息时代的传播工具，其复制成本会接近于零，今天游戏产业和电影产业都非常挣钱，其实它们都是精神层面的需求。所以在信息时代，分享是非常简单的，重要的是你的创造。</p>
<p>我没有谈到钱或者价值的问题，因为显而易见，如果创造物是有价值的，那么借助网络效应，很容易获得相应的价值回报。</p>
<p>仔细分辨的话，我的学习中似乎是有一些躲在舒适区的懒惰，但是这都不重要，重要的是更加注重创造，这是三者中最重要的一环。</p>
]]></content:encoded><category>methodology</category><category domain="tags">学习</category><category domain="tags">创造</category></item><item><title>Peter Norvig的编程建议</title><link>https://yifeitao.com/programming-advise-from-peter-norvig/</link><pubDate>Sun, 01 Oct 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/programming-advise-from-peter-norvig/</guid><description>&lt;p&gt;Peter Norvig是Google的大牛之一，他在Udacity开了一门课&lt;a href="https://cn.udacity.com/course/design-of-computer-programs--cs212"
rel="noopener noreferrer" target="_blank" class="external"&gt;计算机程序设计&lt;/a&gt;
，用Python语言讲授，这门课程的实践性很强，下面是他在课程中提到的一些编程建议：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;修改程序的几个维度：正确、效率、特性、优雅，需要在几个维度间平衡，更优雅的代码对软件改进没有直接作用，但可以为未来可能的修改打下更好的基础，而重构就是修改代码使其更优雅。&lt;/li&gt;
&lt;li&gt;程序员应当善用别人的代码，提现在两个层次，一个是编程语言的库，应当熟悉常用的并善于查文档，二是一些大的功能模块，比如网页服务器、Email通信组件等。&lt;/li&gt;
&lt;li&gt;学习一些高级的复杂的语言特性，应当去理解这个语言特性解决的痛点是什么，这是它出现在这个语言中的原因；&lt;/li&gt;
&lt;li&gt;好的代码要长还是短，取决于是否清晰的进行了沟通，即别人能否容易读懂你的代码，太长或太短都可能影响沟通；&lt;/li&gt;
&lt;li&gt;自顶向下设计还是自底向上设计，取决于对问题的清晰理解在哪个层次，如果对问题的大尺度理解很清晰，就适合自顶向下设计，不要害怕写一些代码桩。反之，如果大尺度都不清楚，则可以写一些已经分析清楚的小模块，然后进行组合试验。&lt;/li&gt;
&lt;li&gt;现在学习编程的条件很好，但是要注意多和他人沟通，多向他人学习。&lt;/li&gt;
&lt;li&gt;针对问题，可以先找到快速，dirty的解法，并估算算法的复杂度，看是否有必要进一步优化，优化应当建立在分析焦点操作的基础上。&lt;/li&gt;
&lt;li&gt;在必要的时候，要认真读文档。&lt;/li&gt;
&lt;li&gt;读代码要主动，最好在IDE环境下读，改一改看结果会怎样。要有整体读代码，获取架构的能力，也要有读片段，迅速找到所需的能力。&lt;/li&gt;
&lt;li&gt;智力游戏问题定义清晰，而又足够复杂，很适合进行编程训练。&lt;/li&gt;
&lt;li&gt;在三种情况下考虑递归：
&lt;ol&gt;
&lt;li&gt;数据结构本身时递归定义的，比如二叉树&lt;/li&gt;
&lt;li&gt;有数学递推式&lt;/li&gt;
&lt;li&gt;能够进行尾递归优化&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>Peter Norvig是Google的大牛之一，他在Udacity开了一门课<a href="https://cn.udacity.com/course/design-of-computer-programs--cs212"
   rel="noopener noreferrer" target="_blank" class="external">计算机程序设计</a>
，用Python语言讲授，这门课程的实践性很强，下面是他在课程中提到的一些编程建议：</p>
<ol>
<li>修改程序的几个维度：正确、效率、特性、优雅，需要在几个维度间平衡，更优雅的代码对软件改进没有直接作用，但可以为未来可能的修改打下更好的基础，而重构就是修改代码使其更优雅。</li>
<li>程序员应当善用别人的代码，提现在两个层次，一个是编程语言的库，应当熟悉常用的并善于查文档，二是一些大的功能模块，比如网页服务器、Email通信组件等。</li>
<li>学习一些高级的复杂的语言特性，应当去理解这个语言特性解决的痛点是什么，这是它出现在这个语言中的原因；</li>
<li>好的代码要长还是短，取决于是否清晰的进行了沟通，即别人能否容易读懂你的代码，太长或太短都可能影响沟通；</li>
<li>自顶向下设计还是自底向上设计，取决于对问题的清晰理解在哪个层次，如果对问题的大尺度理解很清晰，就适合自顶向下设计，不要害怕写一些代码桩。反之，如果大尺度都不清楚，则可以写一些已经分析清楚的小模块，然后进行组合试验。</li>
<li>现在学习编程的条件很好，但是要注意多和他人沟通，多向他人学习。</li>
<li>针对问题，可以先找到快速，dirty的解法，并估算算法的复杂度，看是否有必要进一步优化，优化应当建立在分析焦点操作的基础上。</li>
<li>在必要的时候，要认真读文档。</li>
<li>读代码要主动，最好在IDE环境下读，改一改看结果会怎样。要有整体读代码，获取架构的能力，也要有读片段，迅速找到所需的能力。</li>
<li>智力游戏问题定义清晰，而又足够复杂，很适合进行编程训练。</li>
<li>在三种情况下考虑递归：
<ol>
<li>数据结构本身时递归定义的，比如二叉树</li>
<li>有数学递推式</li>
<li>能够进行尾递归优化</li>
</ol>
</li>
</ol>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">建议</category></item><item><title>iPad1电子相框制作</title><link>https://yifeitao.com/ipad1-photo-frame/</link><pubDate>Thu, 28 Sep 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/ipad1-photo-frame/</guid><description>&lt;p&gt;闲置的ipad1基本上没有什么用了，大部分看视频的软件都不再适配iPad1，不过iPad本身就有电子相框功能，所以把iPad1彻底变成电子相框是个不错的主义。&lt;/p&gt;
&lt;h2 id="1-硬件准备"&gt;1 硬件准备&lt;/h2&gt;
&lt;p&gt;首先，买点3M的无痕魔力扣，像这样的，用起来像魔术贴一样。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://multimedia.3m.com/mws/media/741008P/xy003824584.jpg?width=181" alt="xy003824584.jpg?width=181" loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;用这个挂iPad绰绰有余，而且不用在墙上打洞，具体方法请参看3M产品的说明书。&lt;/p&gt;
&lt;p&gt;还要在适当的位置准备一个电源接口，怎么隐藏一下这就是个人发挥的艺术了，一般来说iPad充一次电还是能用蛮久的。所以可以不必一直插着电用。&lt;/p&gt;
&lt;h2 id="2-软件准备"&gt;2 软件准备&lt;/h2&gt;
&lt;p&gt;iPad删除所有能删除的程序，连上WiFi，到App Sotre装一个QQ，新版的QQ自然装不上，但是App Store会提示你安装历史版本，这样就行了。&lt;/p&gt;
&lt;p&gt;在Windows或Mac系统上挑选自己喜欢的照片，统一存放到一个文件夹中。&lt;/p&gt;
&lt;p&gt;iPad连上Windows或Mac系统，点开iPad管理界面，使用iTunes的照片同步功能，选择你挑好的文件夹将其同步到iPad。具体的操作可以参考&lt;a href="https://support.apple.com/kb/PH20346?locale=zh_CN"
rel="noopener noreferrer" target="_blank" class="external"&gt;这里&lt;/a&gt;
。&lt;/p&gt;
&lt;p&gt;把iPad电源关掉，然后打开，看到锁屏界面，点一下滑动解锁旁边的电子相框按钮即可进入电子相框模式。此外，在iPad的设置中也有电子相框设置可以调节效果。&lt;/p&gt;
&lt;p&gt;将iPad挂上墙&lt;/p&gt;
&lt;h2 id="3-后续维护"&gt;3 后续维护&lt;/h2&gt;
&lt;p&gt;如果有大量的照片需要更新，可以将iPad取下来（这也是3M无痕魔力扣的方便之处），重新进行照片同步，注意&lt;strong&gt;同步会把之前同步的照片先删除&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果只是零星的照片想上墙，直接在其他设备如电脑、手机登陆QQ，iPad也登陆QQ，通过QQ传送文件到“我的平板电脑”即可。&lt;/p&gt;</description><content:encoded><![CDATA[<p>闲置的ipad1基本上没有什么用了，大部分看视频的软件都不再适配iPad1，不过iPad本身就有电子相框功能，所以把iPad1彻底变成电子相框是个不错的主义。</p>
<h2 id="1-硬件准备">1 硬件准备</h2>
<p>首先，买点3M的无痕魔力扣，像这样的，用起来像魔术贴一样。</p>
<p><img src="https://multimedia.3m.com/mws/media/741008P/xy003824584.jpg?width=181" alt="xy003824584.jpg?width=181" loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>用这个挂iPad绰绰有余，而且不用在墙上打洞，具体方法请参看3M产品的说明书。</p>
<p>还要在适当的位置准备一个电源接口，怎么隐藏一下这就是个人发挥的艺术了，一般来说iPad充一次电还是能用蛮久的。所以可以不必一直插着电用。</p>
<h2 id="2-软件准备">2 软件准备</h2>
<p>iPad删除所有能删除的程序，连上WiFi，到App Sotre装一个QQ，新版的QQ自然装不上，但是App Store会提示你安装历史版本，这样就行了。</p>
<p>在Windows或Mac系统上挑选自己喜欢的照片，统一存放到一个文件夹中。</p>
<p>iPad连上Windows或Mac系统，点开iPad管理界面，使用iTunes的照片同步功能，选择你挑好的文件夹将其同步到iPad。具体的操作可以参考<a href="https://support.apple.com/kb/PH20346?locale=zh_CN"
   rel="noopener noreferrer" target="_blank" class="external">这里</a>
。</p>
<p>把iPad电源关掉，然后打开，看到锁屏界面，点一下滑动解锁旁边的电子相框按钮即可进入电子相框模式。此外，在iPad的设置中也有电子相框设置可以调节效果。</p>
<p>将iPad挂上墙</p>
<h2 id="3-后续维护">3 后续维护</h2>
<p>如果有大量的照片需要更新，可以将iPad取下来（这也是3M无痕魔力扣的方便之处），重新进行照片同步，注意<strong>同步会把之前同步的照片先删除</strong>。</p>
<p>如果只是零星的照片想上墙，直接在其他设备如电脑、手机登陆QQ，iPad也登陆QQ，通过QQ传送文件到“我的平板电脑”即可。</p>
]]></content:encoded><category>geek</category><category domain="tags">技术</category><category domain="tags">DIY</category></item><item><title>使用netlify改善github pages服务</title><link>https://yifeitao.com/github-pages-netlify/</link><pubDate>Wed, 27 Sep 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/github-pages-netlify/</guid><description>&lt;p&gt;一直很喜欢github pages，所以一直用着，但是有两个问题一直很难一起解决：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;github因为某事件屏蔽了百度的爬虫，博客在百度上搜不到，通过在个人主机或coding pages建立镜像，然后用dnspod分流的方法可以解决；&lt;/li&gt;
&lt;li&gt;github pages支持强制https，支持自定义域名，但还不支持自定义域名的强制https。可以用cloudfare的cdn服务解决。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;但是上述两个问题很难同时解决，虽然我有个人主机，但是懒得用来托管博客。今天发现netlify服务解决了两个问题。基本步骤如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;netlify在注册后，可以申请权限接通你的github pages的repo；&lt;/li&gt;
&lt;li&gt;然后简单配置一下部署命令，对jekyll来说，命令为&lt;code&gt;jekyll build&lt;/code&gt;，生成的文件目录配置为&lt;code&gt;_site&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;netlify可以修改子域名为&lt;code&gt;yoursite.netlify.com&lt;/code&gt;，然后也可以配置自定义域名，将dns的CNAME记录指向&lt;code&gt;yoursite.netlify.com&lt;/code&gt;即可。&lt;/li&gt;
&lt;li&gt;开启https服务（可以用自己的证书，也可以用netlify自带的Let&amp;rsquo;s Encrypt证书），以及强制的https转换。&lt;/li&gt;
&lt;li&gt;以后，只要你向github提交更新，netlify就会通过钩子自动重新执行jekyll build命令部署站点。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;测试了一下，国内访问会被cdn到日本节点，速度还算可以。&lt;/p&gt;</description><content:encoded><![CDATA[<p>一直很喜欢github pages，所以一直用着，但是有两个问题一直很难一起解决：</p>
<ol>
<li>github因为某事件屏蔽了百度的爬虫，博客在百度上搜不到，通过在个人主机或coding pages建立镜像，然后用dnspod分流的方法可以解决；</li>
<li>github pages支持强制https，支持自定义域名，但还不支持自定义域名的强制https。可以用cloudfare的cdn服务解决。</li>
</ol>
<p>但是上述两个问题很难同时解决，虽然我有个人主机，但是懒得用来托管博客。今天发现netlify服务解决了两个问题。基本步骤如下：</p>
<ol>
<li>netlify在注册后，可以申请权限接通你的github pages的repo；</li>
<li>然后简单配置一下部署命令，对jekyll来说，命令为<code>jekyll build</code>，生成的文件目录配置为<code>_site</code></li>
<li>netlify可以修改子域名为<code>yoursite.netlify.com</code>，然后也可以配置自定义域名，将dns的CNAME记录指向<code>yoursite.netlify.com</code>即可。</li>
<li>开启https服务（可以用自己的证书，也可以用netlify自带的Let&rsquo;s Encrypt证书），以及强制的https转换。</li>
<li>以后，只要你向github提交更新，netlify就会通过钩子自动重新执行jekyll build命令部署站点。</li>
</ol>
<p>测试了一下，国内访问会被cdn到日本节点，速度还算可以。</p>
]]></content:encoded><category>geek</category><category domain="tags">网站</category><category domain="tags">部署</category></item><item><title>《看不见的客人》：多重叙述与真相</title><link>https://yifeitao.com/contratiempo/</link><pubDate>Sun, 24 Sep 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/contratiempo/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2498971355.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;在大荧幕看这部电影，观影感受可以用一个字来形容：爽。&lt;/p&gt;
&lt;p&gt;多重叙述是一种非常有意思的电影语言，角色通过语言回忆过去，不同的角色甚至同一个角色不同的时间对同一件事情都会有不同的叙述，而电影可以借助视觉语言多次的迷惑观众，观众则需要在多重叙述中寻找真相，在这个过程中，需要的是不断的体察人性，好的电影会让一切合乎情理。&lt;/p&gt;
&lt;p&gt;多重叙述即使在现实生活中，也是一种常态，首先不同的人看事情的视角与重点都不一样，更重要的是，叙事的人可能会说谎，这种对现实的扭曲使得要知道真相很难，即使在历史研究中，也会有类似电影的反转出现。&lt;/p&gt;
&lt;p&gt;谎言代表的人性是很微妙的一种东西，一般来说人们都会声称不喜欢说谎，但是又人人都会说谎，以至于《三体》中，说谎倒成了人类的少有的优势之一。&lt;/p&gt;
&lt;p&gt;说了这么多，都没有说到电影的具体细节，因为剧透可耻。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2498971355.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>在大荧幕看这部电影，观影感受可以用一个字来形容：爽。</p>
<p>多重叙述是一种非常有意思的电影语言，角色通过语言回忆过去，不同的角色甚至同一个角色不同的时间对同一件事情都会有不同的叙述，而电影可以借助视觉语言多次的迷惑观众，观众则需要在多重叙述中寻找真相，在这个过程中，需要的是不断的体察人性，好的电影会让一切合乎情理。</p>
<p>多重叙述即使在现实生活中，也是一种常态，首先不同的人看事情的视角与重点都不一样，更重要的是，叙事的人可能会说谎，这种对现实的扭曲使得要知道真相很难，即使在历史研究中，也会有类似电影的反转出现。</p>
<p>谎言代表的人性是很微妙的一种东西，一般来说人们都会声称不喜欢说谎，但是又人人都会说谎，以至于《三体》中，说谎倒成了人类的少有的优势之一。</p>
<p>说了这么多，都没有说到电影的具体细节，因为剧透可耻。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">悬疑</category></item><item><title>家庭wifi组网经验</title><link>https://yifeitao.com/family-wifi-tips/</link><pubDate>Sun, 17 Sep 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/family-wifi-tips/</guid><description>&lt;p&gt;之前这边的房子比较少住，无线路由器放在电信光猫旁边，位于客厅一角，所以几个卧室的信号都不是太好，好在手头有不少电猫、无线路由器，所以自己再稍微组了一下网，下面是一些经验：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;大部分无线路由器默认是路由器模式，但是一般可以配置成AP模式，中继器模式、桥接模式、Client模式等，具体的配置方法有些路由器可能有明显的指导，有些需要到网上搜索教程，但基本原理和模式的区别大致如下：
&lt;ol&gt;
&lt;li&gt;无线路由器通过LAN有线口接到能上网的路由器，那么就成了AP模式。&lt;/li&gt;
&lt;li&gt;如果通过WIFI接到能上网的路由器，就成了中继模式（配置自己的SSID和上级路由器一致）或桥接模式（配置自己的SSID和上级路由器不一致）&lt;/li&gt;
&lt;li&gt;如果WIFI接到能上网的路由器但是不再发射无线信号，而只在有线口接入设备，则成了Client模式（相当于一个网卡）。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;中继模式和桥接模式没什么用，因为正因为信号不好，才需要中继或桥接，那么中继或桥接的这一段始终是瓶颈，导致卧室上网很慢很卡。&lt;/li&gt;
&lt;li&gt;强烈推荐使用AP模式，在信号不好的地方（如卧室）放一个路由器，将它的IP改为和上级路由器同网段但是不同的IP，然后通过自己的LAN口接入上级路由器的LAN口，为了使用时无缝切换，将这个路由器的SSID和密码设置为和上级路由器一致。&lt;/li&gt;
&lt;li&gt;现在的问题是，找一根线连接两个路由器，如果事先没有布过线，就需要走明线，会很难受，这时候电猫就出场了，电猫可以理解为一根网线，但是中间一段是用电线接通的。高档的电猫可以一拖多（一个主机多个从机），甚至从机自己可以是一个AP。我比较穷而且闲置设备多，所以用了一对普通电猫和一个闲置路由器设置为AP模式搞定了。&lt;/li&gt;
&lt;li&gt;如果从头装修房子，还是一间房一个AP比较好，可能的话可以放到吊顶里面。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>之前这边的房子比较少住，无线路由器放在电信光猫旁边，位于客厅一角，所以几个卧室的信号都不是太好，好在手头有不少电猫、无线路由器，所以自己再稍微组了一下网，下面是一些经验：</p>
<ol>
<li>大部分无线路由器默认是路由器模式，但是一般可以配置成AP模式，中继器模式、桥接模式、Client模式等，具体的配置方法有些路由器可能有明显的指导，有些需要到网上搜索教程，但基本原理和模式的区别大致如下：
<ol>
<li>无线路由器通过LAN有线口接到能上网的路由器，那么就成了AP模式。</li>
<li>如果通过WIFI接到能上网的路由器，就成了中继模式（配置自己的SSID和上级路由器一致）或桥接模式（配置自己的SSID和上级路由器不一致）</li>
<li>如果WIFI接到能上网的路由器但是不再发射无线信号，而只在有线口接入设备，则成了Client模式（相当于一个网卡）。</li>
</ol>
</li>
<li>中继模式和桥接模式没什么用，因为正因为信号不好，才需要中继或桥接，那么中继或桥接的这一段始终是瓶颈，导致卧室上网很慢很卡。</li>
<li>强烈推荐使用AP模式，在信号不好的地方（如卧室）放一个路由器，将它的IP改为和上级路由器同网段但是不同的IP，然后通过自己的LAN口接入上级路由器的LAN口，为了使用时无缝切换，将这个路由器的SSID和密码设置为和上级路由器一致。</li>
<li>现在的问题是，找一根线连接两个路由器，如果事先没有布过线，就需要走明线，会很难受，这时候电猫就出场了，电猫可以理解为一根网线，但是中间一段是用电线接通的。高档的电猫可以一拖多（一个主机多个从机），甚至从机自己可以是一个AP。我比较穷而且闲置设备多，所以用了一对普通电猫和一个闲置路由器设置为AP模式搞定了。</li>
<li>如果从头装修房子，还是一间房一个AP比较好，可能的话可以放到吊顶里面。</li>
</ol>
]]></content:encoded><category>geek</category><category domain="tags">网络</category><category domain="tags">家庭</category></item><item><title>感冒了</title><link>https://yifeitao.com/catch-a-cold/</link><pubDate>Tue, 12 Sep 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/catch-a-cold/</guid><description>&lt;p&gt;昨天坐火车，着急小朋友可能开始懂一点点离别了，所以在火车上一直僵持到半夜不睡，我们俩衣服穿得少，空调开得又猛，我们都感冒了。年中的时候，还立志下半年不感冒，终于还是破功了。虽然总的来说不是很重，但是也已经影响生活和学习了。当然没有必要为了一次小小的感冒过于在意，但是这倒是再一次提醒了我，认知的重要性，如果在身体察觉到有一点点冷时，及时的像弹出窗口一般提醒自己，就没有后续诸多麻烦事了。以后戒之慎之。&lt;/p&gt;</description><content:encoded>&lt;p>昨天坐火车，着急小朋友可能开始懂一点点离别了，所以在火车上一直僵持到半夜不睡，我们俩衣服穿得少，空调开得又猛，我们都感冒了。年中的时候，还立志下半年不感冒，终于还是破功了。虽然总的来说不是很重，但是也已经影响生活和学习了。当然没有必要为了一次小小的感冒过于在意，但是这倒是再一次提醒了我，认知的重要性，如果在身体察觉到有一点点冷时，及时的像弹出窗口一般提醒自己，就没有后续诸多麻烦事了。以后戒之慎之。&lt;/p>
</content:encoded><category>life</category><category domain="tags">健康</category><category domain="tags">生活</category></item><item><title>人工智能时代媒体的社会责任</title><link>https://yifeitao.com/social-responsibility-of-media-in-ai-times/</link><pubDate>Sun, 10 Sep 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/social-responsibility-of-media-in-ai-times/</guid><description>&lt;p&gt;媒体要不要有教化作用和社会责任？这是一个可以讨论的问题。在中国，这个问题首先可以给出一极的答案，那是新闻联播给出的：以教化作用为主，而所谓新闻的作用都在教化的框架下展现。市场化的媒体会弱化自己的教化作用与社会责任感，如果是盈利的机构，那么逐利就可能影响公正。这个问题在人工智能时代会更加严重。&lt;/p&gt;
&lt;p&gt;近两年国内出现了一些现象级的新媒体软件，主要卖点是不设编辑，没有记者，通过人工智能为每个人定制筛选感兴趣的新闻，其实我是相信算法的，如果调教得好，确实能给人追踪新闻带来很大的便利，然而我也观察过不少人使用这些软件的情况，大多并没有意愿去调教软件，而是软件推送什么就看什么，我不知道这些新闻软件在用户不做选择时推送新闻时如何选择的，从内容来看，大多数很无聊，甚至不少是带点颜色的擦边球。我的一个猜测是系统推送了最热门的新闻，毕竟大众其实就是那么低级趣味的，甚至我都不否认我也是低级趣味的，如果一个媒体软件放下身段，卖力的提升自己的点击率，那么必然会去利用人性的弱点，最后劈头盖脸的，无非是些看的时候有点爽，看完毫无价值的东西。&lt;/p&gt;
&lt;p&gt;当前所谓的人工智能还是很低级的，但是它已经会朝着人设定的目标不断努力，一个新闻软件的满意度如何衡量？如果以用软件的人是否看了更多新闻来衡量，很容易会陷入人性弱点的陷阱，你不能说人工智能做错了，人工编辑也会这么干，只是人工智能做起来更极致，更没有底线。&lt;/p&gt;
&lt;p&gt;我们假设每个用软件的人都有成熟的价值观，那么他可以自己去调教人工智能，使得人工智能知道要去推送什么样的新闻给用户。然而一个无法忽视的事实是，有很多人并没有成熟的价值观，而是会很容易被影响，这个问题自然不是人工智能带来的，但在人工智能时代会更加变本加厉，软件和人工智能的设计者，可能无法摆脱这样的社会责任：软件的用户可能是需要教化与引导的，技术没有道德可言，可是设计技术的人却无法逃脱。&lt;/p&gt;
&lt;p&gt;如果还是想尽量用技术手段解决问题，那么问题就是，如何设计一个有社会责任感的新闻推荐系统，而不是任由用户的人性弱点去选择？&lt;/p&gt;</description><content:encoded><![CDATA[<p>媒体要不要有教化作用和社会责任？这是一个可以讨论的问题。在中国，这个问题首先可以给出一极的答案，那是新闻联播给出的：以教化作用为主，而所谓新闻的作用都在教化的框架下展现。市场化的媒体会弱化自己的教化作用与社会责任感，如果是盈利的机构，那么逐利就可能影响公正。这个问题在人工智能时代会更加严重。</p>
<p>近两年国内出现了一些现象级的新媒体软件，主要卖点是不设编辑，没有记者，通过人工智能为每个人定制筛选感兴趣的新闻，其实我是相信算法的，如果调教得好，确实能给人追踪新闻带来很大的便利，然而我也观察过不少人使用这些软件的情况，大多并没有意愿去调教软件，而是软件推送什么就看什么，我不知道这些新闻软件在用户不做选择时推送新闻时如何选择的，从内容来看，大多数很无聊，甚至不少是带点颜色的擦边球。我的一个猜测是系统推送了最热门的新闻，毕竟大众其实就是那么低级趣味的，甚至我都不否认我也是低级趣味的，如果一个媒体软件放下身段，卖力的提升自己的点击率，那么必然会去利用人性的弱点，最后劈头盖脸的，无非是些看的时候有点爽，看完毫无价值的东西。</p>
<p>当前所谓的人工智能还是很低级的，但是它已经会朝着人设定的目标不断努力，一个新闻软件的满意度如何衡量？如果以用软件的人是否看了更多新闻来衡量，很容易会陷入人性弱点的陷阱，你不能说人工智能做错了，人工编辑也会这么干，只是人工智能做起来更极致，更没有底线。</p>
<p>我们假设每个用软件的人都有成熟的价值观，那么他可以自己去调教人工智能，使得人工智能知道要去推送什么样的新闻给用户。然而一个无法忽视的事实是，有很多人并没有成熟的价值观，而是会很容易被影响，这个问题自然不是人工智能带来的，但在人工智能时代会更加变本加厉，软件和人工智能的设计者，可能无法摆脱这样的社会责任：软件的用户可能是需要教化与引导的，技术没有道德可言，可是设计技术的人却无法逃脱。</p>
<p>如果还是想尽量用技术手段解决问题，那么问题就是，如何设计一个有社会责任感的新闻推荐系统，而不是任由用户的人性弱点去选择？</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">人工智能</category><category domain="tags">媒体</category></item><item><title>人心之丑陋</title><link>https://yifeitao.com/ugly/</link><pubDate>Sat, 09 Sep 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/ugly/</guid><description>&lt;p&gt;前些日子我去ATM机取钱，由于种种原因，破天荒的第一次忘记取回银行卡了。想着卡片应该是被机器吞了，于是第二天兴冲冲的跑到ATM机所在的银行去找卡。银行工作人员翻遍记录，就是没有我的卡，看来是被其他人拿走了，我问可不可以看监控，说要到派出所报案申请才行，嫌麻烦只得作罢。&lt;/p&gt;
&lt;p&gt;我实在不知道这位捡我卡的人有啥目的，或许他以为他能猜出我的密码来？对我来说，首先网银还能继续使用，很快就能把钱都卷走，也可以选择挂失，只是正式挂失还要去开户地，非常麻烦，再说，这种二代芯片卡还没听说能破解，我相信我的密码他也不可能猜出来，如果去ATM机试，密码输错三次卡就会被吞掉。&lt;/p&gt;
&lt;p&gt;总的来说，我觉得拿走我的卡是一种损人不利己的行为。我觉得这个人是行家，试图去破解这张卡的几率微乎其微，更大可能是顺手牵羊，想着万一知道密码了呢？万一里面还有钱呢？为了一个极小极小的可能性，轻易的出卖了自己的良心。勿以善小而不为，勿以恶小而为之，当出卖良心甚至违法犯罪的代价极小时，不知道还有几人能做到。&lt;/p&gt;</description><content:encoded><![CDATA[<p>前些日子我去ATM机取钱，由于种种原因，破天荒的第一次忘记取回银行卡了。想着卡片应该是被机器吞了，于是第二天兴冲冲的跑到ATM机所在的银行去找卡。银行工作人员翻遍记录，就是没有我的卡，看来是被其他人拿走了，我问可不可以看监控，说要到派出所报案申请才行，嫌麻烦只得作罢。</p>
<p>我实在不知道这位捡我卡的人有啥目的，或许他以为他能猜出我的密码来？对我来说，首先网银还能继续使用，很快就能把钱都卷走，也可以选择挂失，只是正式挂失还要去开户地，非常麻烦，再说，这种二代芯片卡还没听说能破解，我相信我的密码他也不可能猜出来，如果去ATM机试，密码输错三次卡就会被吞掉。</p>
<p>总的来说，我觉得拿走我的卡是一种损人不利己的行为。我觉得这个人是行家，试图去破解这张卡的几率微乎其微，更大可能是顺手牵羊，想着万一知道密码了呢？万一里面还有钱呢？为了一个极小极小的可能性，轻易的出卖了自己的良心。勿以善小而不为，勿以恶小而为之，当出卖良心甚至违法犯罪的代价极小时，不知道还有几人能做到。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">人性</category><category domain="tags">社会</category></item><item><title>接口和抽象类</title><link>https://yifeitao.com/interface-and-abstract-class/</link><pubDate>Fri, 08 Sep 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/interface-and-abstract-class/</guid><description>&lt;p&gt;刚开始，接触C#语言的时候，不太能分清接口Interface和抽象类Abstract Class的区别，Java语言也有一样的疑问。&lt;/p&gt;
&lt;p&gt;很容易说出它们在&lt;strong&gt;语法&lt;/strong&gt;上的区别：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一个类可以实现多个接口，但是只能继承自一个抽象类；&lt;/li&gt;
&lt;li&gt;接口只有定义没有实现，抽象类中可以有具体实现（只要有一个抽象函数即为抽象类）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;那么&lt;strong&gt;语义&lt;/strong&gt;上看，要怎么区分二者呢？接口主要是表示能力，这个能力是用几个方法来表示的（很多时候只要有一个方法就行），比如这个类可以做相等关系的比较，这个类可以被克隆等等。而抽象类往往表达的是更复杂的概念，抽象类代表了一类事物，它们有很多种类，这些种类间有很多的共性，形成了抽象类，就像没有具体的马，只有白马黑马，抽象类中往往有一些功能的实现，它们有点类似函数式语言中的high-order function，主要是调度其他的抽象的函数来完成功能，在设计模式的术语中，叫做模板方法，反过来看，抽象类大部分的应用场景其实都是模板方法。&lt;/p&gt;
&lt;p&gt;其实像C++语言支持多继承，那么一个全是抽象函数的类的作用就跟接口是一样的，因此在C++语言中，就没有类似C#或Java中的接口的语法结构。一般来说，如果一门语言不支持多继承，又要表达类似接口的概念，才会出现接口的语法结构，反过来说，当一门语言支持多继承时，我们可以自己规定某些类必须全部是抽象函数（纯虚函数），从而实现接口的功能。&lt;/p&gt;
&lt;p&gt;总的启示是，要根据问题的需要寻找语言特性来编程，而语言特性不一定在你使用的语言中不一定会有直接的语法结构支持，但是往往都能有变通的办法。&lt;/p&gt;</description><content:encoded><![CDATA[<p>刚开始，接触C#语言的时候，不太能分清接口Interface和抽象类Abstract Class的区别，Java语言也有一样的疑问。</p>
<p>很容易说出它们在<strong>语法</strong>上的区别：</p>
<ol>
<li>一个类可以实现多个接口，但是只能继承自一个抽象类；</li>
<li>接口只有定义没有实现，抽象类中可以有具体实现（只要有一个抽象函数即为抽象类）。</li>
</ol>
<p>那么<strong>语义</strong>上看，要怎么区分二者呢？接口主要是表示能力，这个能力是用几个方法来表示的（很多时候只要有一个方法就行），比如这个类可以做相等关系的比较，这个类可以被克隆等等。而抽象类往往表达的是更复杂的概念，抽象类代表了一类事物，它们有很多种类，这些种类间有很多的共性，形成了抽象类，就像没有具体的马，只有白马黑马，抽象类中往往有一些功能的实现，它们有点类似函数式语言中的high-order function，主要是调度其他的抽象的函数来完成功能，在设计模式的术语中，叫做模板方法，反过来看，抽象类大部分的应用场景其实都是模板方法。</p>
<p>其实像C++语言支持多继承，那么一个全是抽象函数的类的作用就跟接口是一样的，因此在C++语言中，就没有类似C#或Java中的接口的语法结构。一般来说，如果一门语言不支持多继承，又要表达类似接口的概念，才会出现接口的语法结构，反过来说，当一门语言支持多继承时，我们可以自己规定某些类必须全部是抽象函数（纯虚函数），从而实现接口的功能。</p>
<p>总的启示是，要根据问题的需要寻找语言特性来编程，而语言特性不一定在你使用的语言中不一定会有直接的语法结构支持，但是往往都能有变通的办法。</p>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">面向对象</category></item><item><title>《敦刻尔克》：一种惶恐</title><link>https://yifeitao.com/dunkirk/</link><pubDate>Wed, 06 Sep 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/dunkirk/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2494950714.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;这可能是我看过最克制的战争片了，三个交织在一起的线索，甚至都称不上是故事，人物形象都还没树立起来，故事就已经结束了，不喜欢的人确实喜欢不起来。&lt;/p&gt;
&lt;p&gt;然而坐在巨幕下，被影院的音响狂轰乱炸，似乎亲历了一遍战场，感情丰富一点的人都会自然产生非常多的情绪，这种观影体验是很奇特的。&lt;/p&gt;
&lt;p&gt;人们为什么喜欢灾难片，因为会衬托出自己安全观影的幸福，《敦刻尔克》从这个角度来看无异于一部灾难片甚至恐怖片，德军作为敌人的形象是模糊的，仿佛是命运之轮把剧中人物驱赶到一个能望见祖国却又似乎遥不可及的海滩，承受着炮火和飞机的狂轰乱炸。&lt;/p&gt;
&lt;p&gt;船只的渺小和大海的深邃，相较之下，我体会到的是一种惶恐，虽然可能不及真正上战场的人之万一，但这种惶恐也是真实的，当历史的打车轮碾过去的时候，每个人都是在赌命，我想现在网络上那些轻浮的扬言支持要发动战争的人不知道是否做好了赌命的准备。&lt;/p&gt;
&lt;p&gt;细小的命运在大事件面前微不足道，但是细小的命运又构筑了历史，正如敦刻尔克的军队是靠很多小船撤走一样，在命运之轮面前惶恐过后，也只能是选择去做点什么，否则人生剩下的也只有面对死亡的惶恐了。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2494950714.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这可能是我看过最克制的战争片了，三个交织在一起的线索，甚至都称不上是故事，人物形象都还没树立起来，故事就已经结束了，不喜欢的人确实喜欢不起来。</p>
<p>然而坐在巨幕下，被影院的音响狂轰乱炸，似乎亲历了一遍战场，感情丰富一点的人都会自然产生非常多的情绪，这种观影体验是很奇特的。</p>
<p>人们为什么喜欢灾难片，因为会衬托出自己安全观影的幸福，《敦刻尔克》从这个角度来看无异于一部灾难片甚至恐怖片，德军作为敌人的形象是模糊的，仿佛是命运之轮把剧中人物驱赶到一个能望见祖国却又似乎遥不可及的海滩，承受着炮火和飞机的狂轰乱炸。</p>
<p>船只的渺小和大海的深邃，相较之下，我体会到的是一种惶恐，虽然可能不及真正上战场的人之万一，但这种惶恐也是真实的，当历史的打车轮碾过去的时候，每个人都是在赌命，我想现在网络上那些轻浮的扬言支持要发动战争的人不知道是否做好了赌命的准备。</p>
<p>细小的命运在大事件面前微不足道，但是细小的命运又构筑了历史，正如敦刻尔克的军队是靠很多小船撤走一样，在命运之轮面前惶恐过后，也只能是选择去做点什么，否则人生剩下的也只有面对死亡的惶恐了。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">战争</category></item><item><title>闭包</title><link>https://yifeitao.com/closure/</link><pubDate>Tue, 05 Sep 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/closure/</guid><description>&lt;p&gt;在做程序设计语言作业时，用racket语言自己实现了一个新的语言，还带上了闭包功能，感觉终于深刻理解了闭包是个什么东西，虽然以前在C#中也无数次用到匿名函数，接触了闭包的概念，但是换了一种语言来看，好像找到了这种概念的源头。&lt;/p&gt;
&lt;p&gt;一个函数中有很多变量，有一些是函数中定义的（这包含在函数体中），有一些是作为参数传入的，因此一个普通的函数调用，需要知道函数体，也需要知道传入的参数，我们可以称这些参数是不自由的，已经由传入决定了。&lt;/p&gt;
&lt;p&gt;如果一个函数中有些变量不是由传入参数决定的呢？那么这些参数是自由的，它们由定义函数的环境所决定。可以简单的认为，函数与定义函数的环境就称为一个闭包，在racket等语言中，实际上所有的函数在底层都会用闭包形式表达，这个闭包包含一个环境，环境提供变量与值的映射，还包括函数体代码，在一些实现中，可以把传入参数的映射也放大环境中，说到这里，发现闭包没什么神奇的，只不过是一个函数体，加上一个变量和值的映射表而已。&lt;/p&gt;
&lt;p&gt;在函数式编程语言中，闭包往往很重要，闭包作为值，可以像整数、浮点数一样传递，这个传递的值，如果被另一个函数调用，就像你租了一个餐馆自己做菜，原料（函数调用方待处理的数据）由餐馆提供，但是你自己带了佐料（环境中的变量与值的映射），也带了处理原料的方法（函数体），这里的佐料和处理方法可以千变万化，调用的函数都不关心，因此有了极大的灵活性，比如经典的map函数需要一个处理函数作为参数，只规定了这个函数必须处理列表中的元素，至于怎么处理，是否带上其他复杂的参数，都由这个处理函数蕴含的闭包决定。&lt;/p&gt;
&lt;p&gt;闭包还和匿名函数的概念联系起来，匿名函数都是在某个函数中定义并就地调用，匿名函数如果能使用相关环境中的变量，那么就是一个闭包。比如C#中的匿名函数，可以使用定义它的函数所在的对象的所有字段。实际上C#的匿名函数是用一个类实现的，这个类就包含了这个匿名函数（会生成一个名字），还有它所引用的调用方的字段作为私有字段。可以说，C#是用类实现了闭包。&lt;/p&gt;
&lt;p&gt;闭包这个词，可以拆开来理解。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;“闭”代表封闭，闭包对修改是封闭的，闭包中的函数一般来说无从修改，不像对象中的函数，一般是可以通过子类来重载修改的，这不便于扩展，但更稳定。&lt;/li&gt;
&lt;li&gt;“包”正如前面描述的，代表是函数及定义该函数的环境的包裹。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>在做程序设计语言作业时，用racket语言自己实现了一个新的语言，还带上了闭包功能，感觉终于深刻理解了闭包是个什么东西，虽然以前在C#中也无数次用到匿名函数，接触了闭包的概念，但是换了一种语言来看，好像找到了这种概念的源头。</p>
<p>一个函数中有很多变量，有一些是函数中定义的（这包含在函数体中），有一些是作为参数传入的，因此一个普通的函数调用，需要知道函数体，也需要知道传入的参数，我们可以称这些参数是不自由的，已经由传入决定了。</p>
<p>如果一个函数中有些变量不是由传入参数决定的呢？那么这些参数是自由的，它们由定义函数的环境所决定。可以简单的认为，函数与定义函数的环境就称为一个闭包，在racket等语言中，实际上所有的函数在底层都会用闭包形式表达，这个闭包包含一个环境，环境提供变量与值的映射，还包括函数体代码，在一些实现中，可以把传入参数的映射也放大环境中，说到这里，发现闭包没什么神奇的，只不过是一个函数体，加上一个变量和值的映射表而已。</p>
<p>在函数式编程语言中，闭包往往很重要，闭包作为值，可以像整数、浮点数一样传递，这个传递的值，如果被另一个函数调用，就像你租了一个餐馆自己做菜，原料（函数调用方待处理的数据）由餐馆提供，但是你自己带了佐料（环境中的变量与值的映射），也带了处理原料的方法（函数体），这里的佐料和处理方法可以千变万化，调用的函数都不关心，因此有了极大的灵活性，比如经典的map函数需要一个处理函数作为参数，只规定了这个函数必须处理列表中的元素，至于怎么处理，是否带上其他复杂的参数，都由这个处理函数蕴含的闭包决定。</p>
<p>闭包还和匿名函数的概念联系起来，匿名函数都是在某个函数中定义并就地调用，匿名函数如果能使用相关环境中的变量，那么就是一个闭包。比如C#中的匿名函数，可以使用定义它的函数所在的对象的所有字段。实际上C#的匿名函数是用一个类实现的，这个类就包含了这个匿名函数（会生成一个名字），还有它所引用的调用方的字段作为私有字段。可以说，C#是用类实现了闭包。</p>
<p>闭包这个词，可以拆开来理解。</p>
<ol>
<li>“闭”代表封闭，闭包对修改是封闭的，闭包中的函数一般来说无从修改，不像对象中的函数，一般是可以通过子类来重载修改的，这不便于扩展，但更稳定。</li>
<li>“包”正如前面描述的，代表是函数及定义该函数的环境的包裹。</li>
</ol>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">闭包</category></item><item><title>简单方法不简单</title><link>https://yifeitao.com/simple-approach-not-simple/</link><pubDate>Mon, 04 Sep 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/simple-approach-not-simple/</guid><description>&lt;p&gt;我还是是个小学生的时候，数学考试经常简单的题出错，复杂的题作对，因为简单的题往往考的是手工演算，比如两位数的乘法，很容易出错，而所谓复杂的题，往往有所谓的简便方法，比如125x64这种，我一看见就满心欢喜。&lt;/p&gt;
&lt;p&gt;我对方法的迷恋一直持续到成年，做事情的时候总会想有没有捷径可走，如果找不到捷径，我会感到难受。这几年我在研究治学的方法论，看过古今中外很多高人的经验，然而发现要建立自己的治学方法依然非常困难。&lt;/p&gt;
&lt;p&gt;对方法尤其是捷径的迷恋，似乎是当代人的常态，所以所谓的知识付费时代来临后，卖得最火的课程貌似还是成功学，尽管包装得更加精美，然而事实是学习这些东西的人，往往并没有什么变化，倒是卖课的人赚得盆满钵满，比如李笑来的《通往财富自由之路》课程，我也凑热闹交了一把智商税，也学到一些东西，但是倒是和菜头客串的一篇文章印象也很深刻，大概是委婉的说出了这种人生经验很难在经历之前真正学懂。&lt;/p&gt;
&lt;p&gt;我的体会是，方法论是从自己的实践中生长出来的一棵树，你可以四处获取养分，然而不能把别人的木头拿过来当成自己的一部分。如果要形成自己的体系，必然需要很多实践方法，如果这些方法有用凑效，最终能不能总结出一套理论来，其实是无所谓的。&lt;/p&gt;
&lt;p&gt;那么什么样的方法是好方法呢？对我来说，能够真正坚持下来的方法才是好方法，如果要极大的毅力去坚持，最终往往免不了三分钟热度的悲剧命运。那么什么样的方法才是能坚持下来的方法呢？对我来说，答案很简单，那就是简单易行的方法，比如每天晚上写一下成功日记，用流水账简单几个字就行，忘写了第二天也还能补，这种简单的方法就能让你回顾总结一天的活动，提振自己的士气。又比如看完一篇文章，用一到两句话总结一下文章的观点，不用长篇大论，不费很多精力，但是却能慢慢的形成吸收知识纳为己有而不是泛泛而都，甚至我在写的时候，常常不自觉的就和作者讨论甚至争论起来，所谓的批判性思维，这也算是一个好的开端吧。&lt;/p&gt;
&lt;p&gt;人们往往忽视了短时间内取得进步的困难，也低估了长时间取得进步的可能，用简单的方法开始治学，只需要很低程度的持之以恒，长期来看取得的收益是性价比超高的。&lt;/p&gt;</description><content:encoded><![CDATA[<p>我还是是个小学生的时候，数学考试经常简单的题出错，复杂的题作对，因为简单的题往往考的是手工演算，比如两位数的乘法，很容易出错，而所谓复杂的题，往往有所谓的简便方法，比如125x64这种，我一看见就满心欢喜。</p>
<p>我对方法的迷恋一直持续到成年，做事情的时候总会想有没有捷径可走，如果找不到捷径，我会感到难受。这几年我在研究治学的方法论，看过古今中外很多高人的经验，然而发现要建立自己的治学方法依然非常困难。</p>
<p>对方法尤其是捷径的迷恋，似乎是当代人的常态，所以所谓的知识付费时代来临后，卖得最火的课程貌似还是成功学，尽管包装得更加精美，然而事实是学习这些东西的人，往往并没有什么变化，倒是卖课的人赚得盆满钵满，比如李笑来的《通往财富自由之路》课程，我也凑热闹交了一把智商税，也学到一些东西，但是倒是和菜头客串的一篇文章印象也很深刻，大概是委婉的说出了这种人生经验很难在经历之前真正学懂。</p>
<p>我的体会是，方法论是从自己的实践中生长出来的一棵树，你可以四处获取养分，然而不能把别人的木头拿过来当成自己的一部分。如果要形成自己的体系，必然需要很多实践方法，如果这些方法有用凑效，最终能不能总结出一套理论来，其实是无所谓的。</p>
<p>那么什么样的方法是好方法呢？对我来说，能够真正坚持下来的方法才是好方法，如果要极大的毅力去坚持，最终往往免不了三分钟热度的悲剧命运。那么什么样的方法才是能坚持下来的方法呢？对我来说，答案很简单，那就是简单易行的方法，比如每天晚上写一下成功日记，用流水账简单几个字就行，忘写了第二天也还能补，这种简单的方法就能让你回顾总结一天的活动，提振自己的士气。又比如看完一篇文章，用一到两句话总结一下文章的观点，不用长篇大论，不费很多精力，但是却能慢慢的形成吸收知识纳为己有而不是泛泛而都，甚至我在写的时候，常常不自觉的就和作者讨论甚至争论起来，所谓的批判性思维，这也算是一个好的开端吧。</p>
<p>人们往往忽视了短时间内取得进步的困难，也低估了长时间取得进步的可能，用简单的方法开始治学，只需要很低程度的持之以恒，长期来看取得的收益是性价比超高的。</p>
]]></content:encoded><category>methodology</category><category domain="tags">方法论</category><category domain="tags">简单</category></item><item><title>《摔跤吧！爸爸》：父母该怎么为子女铺路？</title><link>https://yifeitao.com/dangal/</link><pubDate>Sun, 03 Sep 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/dangal/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2457983084.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;人是一种动物，或许是因为生命在于运动，体育电影总是让人能够热血沸腾，相比战争电影，它的“燃”没有什么负面意义，《摔跤吧！爸爸》也是一部典型的正能量电影。&lt;/p&gt;
&lt;p&gt;有部分人批评电影中的父亲独裁地为女儿们挑选了摔跤这么一个职业，要反驳很容易，因为导演在片中安排了一个新娘规劝了不服气地两个女儿，如果不去摔跤，只能早早嫁人，没有资格选择职业也没有资格选择老公。片中的父亲没有太多其他的本事，培养有天分的女儿们成为摔跤手是最优选择了。世上少不了何不食肉糜的感叹，然而也不能只是这么简单的批判一番，仔细衡量的话，父母该怎么为子女铺路是一个极其复杂的话题，其实这部电影谈到了很多因素：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;父母的个人情结，无数的作品都描述过类似的故事，有悲剧有喜剧。片中的父亲想让子女圆自己的梦，这在很多情况下不见得是好的选择；&lt;/li&gt;
&lt;li&gt;子女的天分，片中的父亲是发现女儿们有摔跤的天分后才着手培养的，这一点和前一点结合，才能变成喜剧。然而，怎样才算有天分，实在也是一个复杂的问题。片中的父亲也正是有情结才能发现女儿的天分。如果他是一个程序员，说不定还发现女儿们有写代码的天分；&lt;/li&gt;
&lt;li&gt;家庭的眼界，片中的家庭应该算是比较穷，父亲似乎也不懂除了摔跤之外的太多东西，于是摔跤就成了他们能抓住的唯一稻草，如果家庭的眼界更开阔，自然可以有更多的选择，然而在没有选择的情况下，可能更有毅力，因为那是救命稻草。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;给子女发现更多的道路是眼界，知道什么样的道路适合子女是智慧，能够坚持培养是韧性，而最终能不能成才还需要一点运气。最后，还有古话聊以自慰：儿孙自有儿孙福。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2457983084.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>人是一种动物，或许是因为生命在于运动，体育电影总是让人能够热血沸腾，相比战争电影，它的“燃”没有什么负面意义，《摔跤吧！爸爸》也是一部典型的正能量电影。</p>
<p>有部分人批评电影中的父亲独裁地为女儿们挑选了摔跤这么一个职业，要反驳很容易，因为导演在片中安排了一个新娘规劝了不服气地两个女儿，如果不去摔跤，只能早早嫁人，没有资格选择职业也没有资格选择老公。片中的父亲没有太多其他的本事，培养有天分的女儿们成为摔跤手是最优选择了。世上少不了何不食肉糜的感叹，然而也不能只是这么简单的批判一番，仔细衡量的话，父母该怎么为子女铺路是一个极其复杂的话题，其实这部电影谈到了很多因素：</p>
<ol>
<li>父母的个人情结，无数的作品都描述过类似的故事，有悲剧有喜剧。片中的父亲想让子女圆自己的梦，这在很多情况下不见得是好的选择；</li>
<li>子女的天分，片中的父亲是发现女儿们有摔跤的天分后才着手培养的，这一点和前一点结合，才能变成喜剧。然而，怎样才算有天分，实在也是一个复杂的问题。片中的父亲也正是有情结才能发现女儿的天分。如果他是一个程序员，说不定还发现女儿们有写代码的天分；</li>
<li>家庭的眼界，片中的家庭应该算是比较穷，父亲似乎也不懂除了摔跤之外的太多东西，于是摔跤就成了他们能抓住的唯一稻草，如果家庭的眼界更开阔，自然可以有更多的选择，然而在没有选择的情况下，可能更有毅力，因为那是救命稻草。</li>
</ol>
<p>给子女发现更多的道路是眼界，知道什么样的道路适合子女是智慧，能够坚持培养是韧性，而最终能不能成才还需要一点运气。最后，还有古话聊以自慰：儿孙自有儿孙福。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">体育</category></item><item><title>对传销的几点认识</title><link>https://yifeitao.com/thoughts-on-pyramid-selling-schemes/</link><pubDate>Thu, 31 Aug 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/thoughts-on-pyramid-selling-schemes/</guid><description>&lt;p&gt;这几天，由于某种原因，对传销有了比以前更深刻的认识，随便谈一下。&lt;/p&gt;
&lt;h4 id="传销是一种心灵污染"&gt;传销是一种心灵污染&lt;/h4&gt;
&lt;p&gt;为什么传销无法禁绝，因为人心的贪娈无法禁绝。一个传销头目就是一个污染源，传销作为一种诈骗模式，会迅速的在传销组织中传播，打击传销组织不可能对庞大组织中的人都用重刑，因此哪些处罚很轻或者免于处罚，但是心灵已经被污染的人，会成为新的污染源。因此我们很容易看到相似的传销手段，不断的死灰复燃，政府要想彻底打击基本上不可能，只有像除杂草一样，等长到足够高的时候，用打草机割掉一批。要想彻底除掉杂草，要斩草除根，改变土壤，即使这样，我们也很难看到彻底禁绝杂草的地方。传销也一样，不过总可以尽量减少它的危害，这需要社会人心的改变与国民智商的提高，如果浮躁拜金的社会风气没有改变，人们对投资理财的基本概念没有建立，那么传销的气焰也会始终嚣张。&lt;/p&gt;
&lt;h4 id="金字塔模式是一种经典模式"&gt;金字塔模式是一种经典模式&lt;/h4&gt;
&lt;p&gt;传销的核心模式是金字塔模式。传销的金字塔模式的问题在于，金字塔的底层是不稳固的。如果能形成稳固的底层，金字塔模式就能一层层累积出塔尖来。金字塔模式本没有善恶之分，就看如何运用了。&lt;/p&gt;
&lt;p&gt;虽然人们都喜欢平等的概念，但是金字塔模式一定程度上也是文明进步产生的助力，农耕文明的直接战斗力可能比不过游牧民族，但是最终高端一点的东西，无论是科技层面的还是文化层面的，基本上都来自农耕文明，最简单的一个解释就是，只有通过农名供养贵族的金字塔模式，才能造就一帮闲人研究一些温饱之余的问题。红楼梦里面林黛玉的诗写得好，但前提是她不需要下田干活，而是四体不勤五谷不分。&lt;/p&gt;
&lt;p&gt;不过我想随着人工智能时代的来临，这个金字塔底可能会由机器人来承担。&lt;/p&gt;
&lt;h4 id="跳出圈子的重要性"&gt;跳出圈子的重要性&lt;/h4&gt;
&lt;p&gt;传销组织的一个特点是试图切断你和家人的联系，将你的社交关系逐渐局限到传销组织的人，然后再开启洗脑模式。无论多么荒谬可笑的东西，只要周围的人都是这么去做，人们就会觉得正常，这是人的社会属性本质决定的。因此，要想防止各式各样的洗脑，最重要的办法就是跳出圈子思考问题，不要把自己归到任何圈子，与各式各样的人建立联系，这里说的人，可能是生活中接触的人，互联网上交往的人，甚至可能是古人，也可以通过他们留下来的书之类的接近他们的思想。&lt;/p&gt;</description><content:encoded><![CDATA[<p>这几天，由于某种原因，对传销有了比以前更深刻的认识，随便谈一下。</p>
<h4 id="传销是一种心灵污染">传销是一种心灵污染</h4>
<p>为什么传销无法禁绝，因为人心的贪娈无法禁绝。一个传销头目就是一个污染源，传销作为一种诈骗模式，会迅速的在传销组织中传播，打击传销组织不可能对庞大组织中的人都用重刑，因此哪些处罚很轻或者免于处罚，但是心灵已经被污染的人，会成为新的污染源。因此我们很容易看到相似的传销手段，不断的死灰复燃，政府要想彻底打击基本上不可能，只有像除杂草一样，等长到足够高的时候，用打草机割掉一批。要想彻底除掉杂草，要斩草除根，改变土壤，即使这样，我们也很难看到彻底禁绝杂草的地方。传销也一样，不过总可以尽量减少它的危害，这需要社会人心的改变与国民智商的提高，如果浮躁拜金的社会风气没有改变，人们对投资理财的基本概念没有建立，那么传销的气焰也会始终嚣张。</p>
<h4 id="金字塔模式是一种经典模式">金字塔模式是一种经典模式</h4>
<p>传销的核心模式是金字塔模式。传销的金字塔模式的问题在于，金字塔的底层是不稳固的。如果能形成稳固的底层，金字塔模式就能一层层累积出塔尖来。金字塔模式本没有善恶之分，就看如何运用了。</p>
<p>虽然人们都喜欢平等的概念，但是金字塔模式一定程度上也是文明进步产生的助力，农耕文明的直接战斗力可能比不过游牧民族，但是最终高端一点的东西，无论是科技层面的还是文化层面的，基本上都来自农耕文明，最简单的一个解释就是，只有通过农名供养贵族的金字塔模式，才能造就一帮闲人研究一些温饱之余的问题。红楼梦里面林黛玉的诗写得好，但前提是她不需要下田干活，而是四体不勤五谷不分。</p>
<p>不过我想随着人工智能时代的来临，这个金字塔底可能会由机器人来承担。</p>
<h4 id="跳出圈子的重要性">跳出圈子的重要性</h4>
<p>传销组织的一个特点是试图切断你和家人的联系，将你的社交关系逐渐局限到传销组织的人，然后再开启洗脑模式。无论多么荒谬可笑的东西，只要周围的人都是这么去做，人们就会觉得正常，这是人的社会属性本质决定的。因此，要想防止各式各样的洗脑，最重要的办法就是跳出圈子思考问题，不要把自己归到任何圈子，与各式各样的人建立联系，这里说的人，可能是生活中接触的人，互联网上交往的人，甚至可能是古人，也可以通过他们留下来的书之类的接近他们的思想。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">社会</category><category domain="tags">传销</category></item><item><title>我的知识管理工具</title><link>https://yifeitao.com/my-knowledge-management-tools/</link><pubDate>Wed, 30 Aug 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/my-knowledge-management-tools/</guid><description>&lt;p&gt;简单整理一下自己使用的知识管理工具，其实自己的体系还建立得不是很稳固，所以这个清单只是一个草稿，希望在接下来的1~2年内稳定下来。本清单将不断更新。&lt;/p&gt;
&lt;h3 id="1-信息源"&gt;1 信息源&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;inoreader RSS阅读工具&lt;/li&gt;
&lt;li&gt;微信订阅号&lt;/li&gt;
&lt;li&gt;微博、Twitter&lt;/li&gt;
&lt;li&gt;雪球&lt;/li&gt;
&lt;li&gt;知乎&lt;/li&gt;
&lt;li&gt;即刻&lt;/li&gt;
&lt;li&gt;Courera&lt;/li&gt;
&lt;li&gt;TED&lt;/li&gt;
&lt;li&gt;Pocket 稍后阅读工具&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="2-信息采集"&gt;2 信息采集&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Evernote 备忘录的长期存储，其他内容的临时存储&lt;/li&gt;
&lt;li&gt;Onenote 主要使用手写笔记功能&lt;/li&gt;
&lt;li&gt;Pocket 长文章的临时存储&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="3-笔记整理与生成"&gt;3 笔记整理与生成&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Evernote 简单笔记的写作&lt;/li&gt;
&lt;li&gt;Workflowy 结构化笔记的写作&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="4-写作与成果展示"&gt;4 写作与成果展示&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Github pages + Jekyll&lt;/li&gt;
&lt;li&gt;Typora&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>简单整理一下自己使用的知识管理工具，其实自己的体系还建立得不是很稳固，所以这个清单只是一个草稿，希望在接下来的1~2年内稳定下来。本清单将不断更新。</p>
<h3 id="1-信息源">1 信息源</h3>
<ol>
<li>inoreader RSS阅读工具</li>
<li>微信订阅号</li>
<li>微博、Twitter</li>
<li>雪球</li>
<li>知乎</li>
<li>即刻</li>
<li>Courera</li>
<li>TED</li>
<li>Pocket 稍后阅读工具</li>
</ol>
<h3 id="2-信息采集">2 信息采集</h3>
<ol>
<li>Evernote 备忘录的长期存储，其他内容的临时存储</li>
<li>Onenote 主要使用手写笔记功能</li>
<li>Pocket 长文章的临时存储</li>
</ol>
<h3 id="3-笔记整理与生成">3 笔记整理与生成</h3>
<ol>
<li>Evernote 简单笔记的写作</li>
<li>Workflowy 结构化笔记的写作</li>
</ol>
<h3 id="4-写作与成果展示">4 写作与成果展示</h3>
<ol>
<li>Github pages + Jekyll</li>
<li>Typora</li>
</ol>
]]></content:encoded><category>geek</category><category domain="tags">工具</category><category domain="tags">知识管理</category></item><item><title>语言特性</title><link>https://yifeitao.com/language-features/</link><pubDate>Tue, 29 Aug 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/language-features/</guid><description>&lt;p&gt;程序员的老梗是讨论什么编程语言最好，标准答案有两种，一种是PHP，还有一种是取决于你要完成什么任务。那么主要谈谈第二种答案。&lt;/p&gt;
&lt;p&gt;尽管这里讨论的编程语言主要指的是图灵完备的通用编程语言，然而每个语言设计的时候都会有自己的场景想象，于是语言设计者会选择一系列认为很有用的语言特性，静态类型还是动态类型？要不要垃圾回收？是否支持闭包？&lt;/p&gt;
&lt;p&gt;有一些语言特性会作为语言的核心功能设计，然后在此基础上设计好用的语法糖，要理解一门语言的运作，必须对此有一定的区分，比如C#语言中，一个类中的核心概念是字段和方法，衍生的语法糖包括属性、事件、访问器等，不知道这些区分与运行机制也能写代码，但是可能会遭遇一些无法理解的问题。我知道C#有一本书《C# via CLR》对这些问题讲得比较透彻，其他语言相信也有类似的。&lt;/p&gt;
&lt;p&gt;《代码大全》中说，程序员应当根据自己的需要选择语言特性，不要语言提供了的一股脑都去用，比如javascipt语言就有很多奇奇怪怪的特性，甚至还有一本书专门介绍它哪些特性好哪些特性最好不要用，这时候我们用的是语言的子集。还有一些情况，出于其他原因，我们必须使用某种语言，但是却缺乏我们需要的特性，这时候可以考虑自己实现，比如用C语言实现一个简单的对象系统，在Java 7中自己实现一个简单的的map reduce。&lt;/p&gt;
&lt;p&gt;从这个角度来说，语言特性高于语言，要充分熟悉各种语言特性，可能要多学几门语言，它们各自有自己的侧重点，从而更容易理解，比如要学闭包，函数式语言就比C#更合适，虽然C#也算是有闭包。&lt;/p&gt;</description><content:encoded><![CDATA[<p>程序员的老梗是讨论什么编程语言最好，标准答案有两种，一种是PHP，还有一种是取决于你要完成什么任务。那么主要谈谈第二种答案。</p>
<p>尽管这里讨论的编程语言主要指的是图灵完备的通用编程语言，然而每个语言设计的时候都会有自己的场景想象，于是语言设计者会选择一系列认为很有用的语言特性，静态类型还是动态类型？要不要垃圾回收？是否支持闭包？</p>
<p>有一些语言特性会作为语言的核心功能设计，然后在此基础上设计好用的语法糖，要理解一门语言的运作，必须对此有一定的区分，比如C#语言中，一个类中的核心概念是字段和方法，衍生的语法糖包括属性、事件、访问器等，不知道这些区分与运行机制也能写代码，但是可能会遭遇一些无法理解的问题。我知道C#有一本书《C# via CLR》对这些问题讲得比较透彻，其他语言相信也有类似的。</p>
<p>《代码大全》中说，程序员应当根据自己的需要选择语言特性，不要语言提供了的一股脑都去用，比如javascipt语言就有很多奇奇怪怪的特性，甚至还有一本书专门介绍它哪些特性好哪些特性最好不要用，这时候我们用的是语言的子集。还有一些情况，出于其他原因，我们必须使用某种语言，但是却缺乏我们需要的特性，这时候可以考虑自己实现，比如用C语言实现一个简单的对象系统，在Java 7中自己实现一个简单的的map reduce。</p>
<p>从这个角度来说，语言特性高于语言，要充分熟悉各种语言特性，可能要多学几门语言，它们各自有自己的侧重点，从而更容易理解，比如要学闭包，函数式语言就比C#更合适，虽然C#也算是有闭包。</p>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">语言特性</category></item><item><title>《百鸟朝凤》：命题作文</title><link>https://yifeitao.com/song-of-the-phoenix/</link><pubDate>Mon, 28 Aug 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/song-of-the-phoenix/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2332714135.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;《百鸟朝凤》这部电影虽然没卖座，但也曾站上风口浪尖，大师绝唱这个词，甚至在吴天明导演身上不幸印证了。然而，我还是不得不说，这不是一部很好的电影。&lt;/p&gt;
&lt;p&gt;如果以《百鸟朝凤》命题作文，那么我不得不对这部电影的音乐性充满期待，然而，让人遗憾的是，唢呐的演奏甚至都不是电影的重点，唯一有意思的一段是焦三爷喝醉后的唢呐，然而正当我要入戏时，唢呐演奏变成了混响，作为一部和音乐有关的电影，整部电影的配乐可以说比较失败。&lt;/p&gt;
&lt;p&gt;看了一半才知道音乐不是电影的重点，重点似乎是要表现民间艺术的失落，然而电影并没有很认真的去介绍唢呐，似乎百鸟朝凤也只是为了导演心目中想要表现的某些命题的应景，这样即使要表达主题，观众看起来的遗憾度也不会太高。&lt;/p&gt;
&lt;p&gt;创作者对民间艺术的失落的理解并没有什么新鲜的，只是像一个老人一样感慨过去的好日子，而当下的乐手，在电影中不是断了手指就是得了尘肺病，唯一对生活充满热情的人似乎是哪个师父瞧不上的蓝玉，然而他基本上放弃了唢呐。&lt;/p&gt;
&lt;p&gt;好的东西会有人欣赏，然而苦情并不是好的出路。&lt;/p&gt;
&lt;p&gt;我希望看到的是用热情浇灌的展现出唢呐演奏的美感的电影，可惜了。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2332714135.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>《百鸟朝凤》这部电影虽然没卖座，但也曾站上风口浪尖，大师绝唱这个词，甚至在吴天明导演身上不幸印证了。然而，我还是不得不说，这不是一部很好的电影。</p>
<p>如果以《百鸟朝凤》命题作文，那么我不得不对这部电影的音乐性充满期待，然而，让人遗憾的是，唢呐的演奏甚至都不是电影的重点，唯一有意思的一段是焦三爷喝醉后的唢呐，然而正当我要入戏时，唢呐演奏变成了混响，作为一部和音乐有关的电影，整部电影的配乐可以说比较失败。</p>
<p>看了一半才知道音乐不是电影的重点，重点似乎是要表现民间艺术的失落，然而电影并没有很认真的去介绍唢呐，似乎百鸟朝凤也只是为了导演心目中想要表现的某些命题的应景，这样即使要表达主题，观众看起来的遗憾度也不会太高。</p>
<p>创作者对民间艺术的失落的理解并没有什么新鲜的，只是像一个老人一样感慨过去的好日子，而当下的乐手，在电影中不是断了手指就是得了尘肺病，唯一对生活充满热情的人似乎是哪个师父瞧不上的蓝玉，然而他基本上放弃了唢呐。</p>
<p>好的东西会有人欣赏，然而苦情并不是好的出路。</p>
<p>我希望看到的是用热情浇灌的展现出唢呐演奏的美感的电影，可惜了。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">传统文化</category></item><item><title>如何学习一名新的编程语言</title><link>https://yifeitao.com/how-to-learn-a-new-programming-language/</link><pubDate>Sun, 27 Aug 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/how-to-learn-a-new-programming-language/</guid><description>&lt;p&gt;前几天为了学习吴恩达deeplearning.ai的课程，在coursera平台上进行了信仰充值，59美金包了一个月，坑人的是，吴恩达的课程只除了3/5，为了不浪费我的钱，我想再找个有认证的课刷一下，于是找到了据称比较难的programming-languages课程。&lt;/p&gt;
&lt;p&gt;programming-languages这门课用到了ML、Racket、Ruby等三种语言，从语言的选择就可见不走寻常路了，我初步了解了一下，应该是一门偏向函数式编程的介绍编程语言范式的课程。用这个老师Dan Grossman的话说，这是像练武术的人搞一些挑水扫地蹲马步的活动。恰好函数式编程我也不是太熟，不妨一刷。第一次作业一次性拿了满分，看来我还是有写函数式编程代码的天赋么？&lt;/p&gt;
&lt;p&gt;类似的试图一次性学习所有编程语言的还有之前见过的一本书《代码之髓》，日本人写的，大概翻过一下，把编程语言中一些主要的概念拿出来对比着讲。愤怒的大牛王垠也写过一篇&lt;a href="http://www.yinwang.org/blog-cn/2017/07/06/master-pl"
rel="noopener noreferrer" target="_blank" class="external"&gt;如何掌握所有的程序语言&lt;/a&gt;
，值得一读。&lt;/p&gt;
&lt;p&gt;Dan Grossman也总结了语言学习中的五个要素：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;语法，代码怎么写的，这部分肯定是要学会的，但也没什么难度，没什么意思；&lt;/li&gt;
&lt;li&gt;语义，这些语法代表什么含义，代码是怎么运行的，理解到这部分，代码才能在脑子里跑起来；&lt;/li&gt;
&lt;li&gt;惯用法，如何使用语言特性表达计算，很多语言都有cook book，比如C#，你不用Linq而老是用for循环，那是很暴殄天物的；&lt;/li&gt;
&lt;li&gt;库，一般来说，只是学“语言”跟库关系不大，但是要做实际项目，库可能就很重要了；&lt;/li&gt;
&lt;li&gt;工具，每种语言可能都有一系列的衍生工具，帮助你更好的完成工程。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这其中第1项是基础，2、3两项，是理解一门语言的关键与难点，而4、5两项，则是衍生品。&lt;/p&gt;
&lt;p&gt;我的目标也是掌握所有的程序语言，如果借这次机会学透了函数式语言，我觉得问题不大，因为所有的语言几乎都是C和Lisp之间的光谱分布。核心语法一般1~2天能学会，而语义、惯用法或者说语言特性无非就是一些核心概念里面打转，而库和工具可以在使用中熟悉。&lt;/p&gt;</description><content:encoded><![CDATA[<p>前几天为了学习吴恩达deeplearning.ai的课程，在coursera平台上进行了信仰充值，59美金包了一个月，坑人的是，吴恩达的课程只除了3/5，为了不浪费我的钱，我想再找个有认证的课刷一下，于是找到了据称比较难的programming-languages课程。</p>
<p>programming-languages这门课用到了ML、Racket、Ruby等三种语言，从语言的选择就可见不走寻常路了，我初步了解了一下，应该是一门偏向函数式编程的介绍编程语言范式的课程。用这个老师Dan Grossman的话说，这是像练武术的人搞一些挑水扫地蹲马步的活动。恰好函数式编程我也不是太熟，不妨一刷。第一次作业一次性拿了满分，看来我还是有写函数式编程代码的天赋么？</p>
<p>类似的试图一次性学习所有编程语言的还有之前见过的一本书《代码之髓》，日本人写的，大概翻过一下，把编程语言中一些主要的概念拿出来对比着讲。愤怒的大牛王垠也写过一篇<a href="http://www.yinwang.org/blog-cn/2017/07/06/master-pl"
   rel="noopener noreferrer" target="_blank" class="external">如何掌握所有的程序语言</a>
，值得一读。</p>
<p>Dan Grossman也总结了语言学习中的五个要素：</p>
<ol>
<li>语法，代码怎么写的，这部分肯定是要学会的，但也没什么难度，没什么意思；</li>
<li>语义，这些语法代表什么含义，代码是怎么运行的，理解到这部分，代码才能在脑子里跑起来；</li>
<li>惯用法，如何使用语言特性表达计算，很多语言都有cook book，比如C#，你不用Linq而老是用for循环，那是很暴殄天物的；</li>
<li>库，一般来说，只是学“语言”跟库关系不大，但是要做实际项目，库可能就很重要了；</li>
<li>工具，每种语言可能都有一系列的衍生工具，帮助你更好的完成工程。</li>
</ol>
<p>这其中第1项是基础，2、3两项，是理解一门语言的关键与难点，而4、5两项，则是衍生品。</p>
<p>我的目标也是掌握所有的程序语言，如果借这次机会学透了函数式语言，我觉得问题不大，因为所有的语言几乎都是C和Lisp之间的光谱分布。核心语法一般1~2天能学会，而语义、惯用法或者说语言特性无非就是一些核心概念里面打转，而库和工具可以在使用中熟悉。</p>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">学习</category></item><item><title>骗子的美好时代</title><link>https://yifeitao.com/frauds-era/</link><pubDate>Sat, 26 Aug 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/frauds-era/</guid><description>&lt;p&gt;前两天给老爸下驾考的软件，发现需要实名验证，以后，我们除了在注册账号时要记得自己的身份证号码外，还要记得一件事情，就是骗子的美好时代来临了。&lt;/p&gt;
&lt;p&gt;一个人注册的网站越多，那么某个网站泄露他的个人资料的可能性就越大，那些大大小小的网站真的有能力有操守保护我们的隐私吗？匿名化其实是给了注册的人一定的自我保护能力，而在实名制前面，这种保护能力将化为乌有，原本就很严重的个人资料泄露有了实名制后将会如虎添翼，可能不久的将来，更多的人会接到诈骗电话，轻松的报出你的家人的身份证号码和住址，每个人防骗的神经必须绷得更紧才行，你要时刻记住，在这个时代，你和你家人的资料对于骗子来说，基本上已经等同于完全透明了，想明白这一点，或许在接到诈骗电话的时候，反应能机敏一点。&lt;/p&gt;
&lt;p&gt;从理论上来说，实名制也对打击各种诈骗、拿钱发帖的水军等有很大的益处。但事实是道高一尺魔高一丈，电话号码的实名制丝毫没有降低诈骗的嚣张程度，估计网络账号的全面实名制也不会有什么区别。实名制的约束只会约束到普通良民，而坏人们总是会想到各种钻空子的办法。&lt;/p&gt;
&lt;p&gt;我感觉近几年来黑色产业有一次明显的产业升级，诈骗这种有一定技术含量，风险低收益高的犯罪方式，已经在全面替代盗窃和抢劫。而诈骗的受害者，甚至都得不到大众的同情而是会被嘲笑，因为似乎被骗等同于傻或者自己太贪婪，包括我在内的很多人可能自负的觉得自己一定不会被骗，然而当个人资料越来越多的被泄露后，说实话我的信心也没有那么足了，只能提醒自己提高警惕。&lt;/p&gt;</description><content:encoded><![CDATA[<p>前两天给老爸下驾考的软件，发现需要实名验证，以后，我们除了在注册账号时要记得自己的身份证号码外，还要记得一件事情，就是骗子的美好时代来临了。</p>
<p>一个人注册的网站越多，那么某个网站泄露他的个人资料的可能性就越大，那些大大小小的网站真的有能力有操守保护我们的隐私吗？匿名化其实是给了注册的人一定的自我保护能力，而在实名制前面，这种保护能力将化为乌有，原本就很严重的个人资料泄露有了实名制后将会如虎添翼，可能不久的将来，更多的人会接到诈骗电话，轻松的报出你的家人的身份证号码和住址，每个人防骗的神经必须绷得更紧才行，你要时刻记住，在这个时代，你和你家人的资料对于骗子来说，基本上已经等同于完全透明了，想明白这一点，或许在接到诈骗电话的时候，反应能机敏一点。</p>
<p>从理论上来说，实名制也对打击各种诈骗、拿钱发帖的水军等有很大的益处。但事实是道高一尺魔高一丈，电话号码的实名制丝毫没有降低诈骗的嚣张程度，估计网络账号的全面实名制也不会有什么区别。实名制的约束只会约束到普通良民，而坏人们总是会想到各种钻空子的办法。</p>
<p>我感觉近几年来黑色产业有一次明显的产业升级，诈骗这种有一定技术含量，风险低收益高的犯罪方式，已经在全面替代盗窃和抢劫。而诈骗的受害者，甚至都得不到大众的同情而是会被嘲笑，因为似乎被骗等同于傻或者自己太贪婪，包括我在内的很多人可能自负的觉得自己一定不会被骗，然而当个人资料越来越多的被泄露后，说实话我的信心也没有那么足了，只能提醒自己提高警惕。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">社会</category><category domain="tags">诈骗</category></item><item><title>服务业的消费升级</title><link>https://yifeitao.com/consumption-upgrade-of-service-industry/</link><pubDate>Wed, 23 Aug 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/consumption-upgrade-of-service-industry/</guid><description>&lt;p&gt;一般来说，现在从事服务业并不是很赚钱，也没有什么门坎和太高的技术含量。&lt;/p&gt;
&lt;p&gt;比如说，商场的导购员和餐馆的服务员，往往素质都不会太高，如果遇到了素质高的，是一件值得庆幸的事情，原因很简单，素质高的人不回去做这些工作，即使做了这些工作，也是临时性的，或者很快升迁了。一个人素质很高，又做了大半辈子的服务生，那简直不可想象。又比如说驾校的教练，其实文化素质很高的就不多，原因跟上面一样。所以大部分人学车的体验很难好得起来，且不论教练是否和颜悦色，见钱眼开，就说很多教练其实都讲不清楚基本原理，只能是教学员一些死板的方法搞好应试教育。又比如说月嫂，你说素质很好高的怎么可能去给人当月嫂呢？稀有。所以很多人花了高价请高级月嫂，也不见得有多高级。&lt;/p&gt;
&lt;p&gt;当然我们很容易看到，这些服务行业的消费升级，可能是一个想象力无限的市场，首先是经济水平上升后的必然要求，其次也将是人工智能时代的特点，如今看起来有些技术含量的工作，比如开车，以后可能都会被人工智能取代，而一些需要人的亲和力的职业比如销售却可能依然存在。&lt;/p&gt;
&lt;p&gt;不过我想到更多的是，一个社会公平的意义，如果不注重社会的整体进步，富人们赚再多的钱也可能享受不了太好的生活，因为谁都避免不了跟服务行业的人打交道，如果始终认为这个阶层的人不值得拿高工资，那么永远也享受不了好的服务。更恐怖的是，如果贫富差距过大，各种悲惨的结局都写在历史书上了。所以说，为富不仁，即使从功利的角度来看，也是不对的。&lt;/p&gt;</description><content:encoded><![CDATA[<p>一般来说，现在从事服务业并不是很赚钱，也没有什么门坎和太高的技术含量。</p>
<p>比如说，商场的导购员和餐馆的服务员，往往素质都不会太高，如果遇到了素质高的，是一件值得庆幸的事情，原因很简单，素质高的人不回去做这些工作，即使做了这些工作，也是临时性的，或者很快升迁了。一个人素质很高，又做了大半辈子的服务生，那简直不可想象。又比如说驾校的教练，其实文化素质很高的就不多，原因跟上面一样。所以大部分人学车的体验很难好得起来，且不论教练是否和颜悦色，见钱眼开，就说很多教练其实都讲不清楚基本原理，只能是教学员一些死板的方法搞好应试教育。又比如说月嫂，你说素质很好高的怎么可能去给人当月嫂呢？稀有。所以很多人花了高价请高级月嫂，也不见得有多高级。</p>
<p>当然我们很容易看到，这些服务行业的消费升级，可能是一个想象力无限的市场，首先是经济水平上升后的必然要求，其次也将是人工智能时代的特点，如今看起来有些技术含量的工作，比如开车，以后可能都会被人工智能取代，而一些需要人的亲和力的职业比如销售却可能依然存在。</p>
<p>不过我想到更多的是，一个社会公平的意义，如果不注重社会的整体进步，富人们赚再多的钱也可能享受不了太好的生活，因为谁都避免不了跟服务行业的人打交道，如果始终认为这个阶层的人不值得拿高工资，那么永远也享受不了好的服务。更恐怖的是，如果贫富差距过大，各种悲惨的结局都写在历史书上了。所以说，为富不仁，即使从功利的角度来看，也是不对的。</p>
]]></content:encoded><category>investment</category><category domain="tags">经济</category><category domain="tags">服务业</category></item><item><title>雪球量化投资club</title><link>https://yifeitao.com/xueqiu-quant-club/</link><pubDate>Tue, 22 Aug 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/xueqiu-quant-club/</guid><description>&lt;p&gt;前天在网上看了雪球量化投资club的直播，听了四场交流演讲，对于量化投资的基本认识更加清晰了一些。下面挑一些个人理解的要点记录一下。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;量化投资并不神秘，简单的指数基金定投其实也可以归到量化投资的范畴；&lt;/li&gt;
&lt;li&gt;宽泛一点理解，凡是可以定量计算的，都可以用于量化投资，可以做所谓的动量投资（基本上就是自动化的追涨杀跌或者高抛低吸），也可以做基本面分析，所以量化投资不一定是高频交易，也可能时低频交易，一个量化策略可以吸收各种要素；&lt;/li&gt;
&lt;li&gt;散户搞量化交易，相比机构能获得的资源比较有限，自然是有很多劣势，但是也有自己的优势，其中最大的一个优势就是资金量上基本上不会对价格造成冲击，所以交易成本很低。&lt;/li&gt;
&lt;li&gt;量化是利用数据分析与程式化的交易（中低频交易不需要自动化程序）来反人性，用数据说话，而不要过于相信感觉或直觉；&lt;/li&gt;
&lt;li&gt;量化交易要看全局看全时，总的目的是自己的投资组合赚钱，而不纠结于个别的品种，应当做较长时间的历史分析，而不能只看最近的效果；&lt;/li&gt;
&lt;li&gt;量化交易一般需要建立模型，在历史数据上回测再调整，然而历史是螺旋发展的，回测可能会有过拟合的现象，也就是说，会出现一些特别的参数效果特别好，但是用来做策略未来不一定会好。我觉得最好还是要有对模型为什么效果会好的解释，并考察这种解释在未来是否会失效，比如最小市值策略，解释是A股特有的壳价值带来的，但如果新股发行持续改革，这个策略就会失效。&lt;/li&gt;
&lt;li&gt;散户资金量小，可能无法建立足够的股票池构建组合，这时候可以考虑基金，类似华泰证券的券商基金交易费率极低，且没有最小消费的限制，非常适合量化交易。此外，如果场外购买基金，交易费率也是要仔细比较的。&lt;/li&gt;
&lt;li&gt;学好Python，对量化交易好处多多。看来我去年开始用Python是个明智的决定。&lt;/li&gt;
&lt;li&gt;在A股量化策略容易有效的原因是韭菜多，不过这种好日子估计最多5~10年，挣超额收益会越来越难。&lt;/li&gt;
&lt;li&gt;演讲中提到的相关的资源：
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://tushare.org/"
rel="noopener noreferrer" target="_blank" class="external"&gt;tushare&lt;/a&gt;
：一个开源的金融数据库，可以用Python非常方便的使用；&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uqer.io/home/"
rel="noopener noreferrer" target="_blank" class="external"&gt;优矿&lt;/a&gt;
：一个量化策略平台，提供了丰富的API，支持Python语言。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ssrn.com/en/"
rel="noopener noreferrer" target="_blank" class="external"&gt;SSRN&lt;/a&gt;
：获取免费的金融方面的英文论文。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>前天在网上看了雪球量化投资club的直播，听了四场交流演讲，对于量化投资的基本认识更加清晰了一些。下面挑一些个人理解的要点记录一下。</p>
<ol>
<li>量化投资并不神秘，简单的指数基金定投其实也可以归到量化投资的范畴；</li>
<li>宽泛一点理解，凡是可以定量计算的，都可以用于量化投资，可以做所谓的动量投资（基本上就是自动化的追涨杀跌或者高抛低吸），也可以做基本面分析，所以量化投资不一定是高频交易，也可能时低频交易，一个量化策略可以吸收各种要素；</li>
<li>散户搞量化交易，相比机构能获得的资源比较有限，自然是有很多劣势，但是也有自己的优势，其中最大的一个优势就是资金量上基本上不会对价格造成冲击，所以交易成本很低。</li>
<li>量化是利用数据分析与程式化的交易（中低频交易不需要自动化程序）来反人性，用数据说话，而不要过于相信感觉或直觉；</li>
<li>量化交易要看全局看全时，总的目的是自己的投资组合赚钱，而不纠结于个别的品种，应当做较长时间的历史分析，而不能只看最近的效果；</li>
<li>量化交易一般需要建立模型，在历史数据上回测再调整，然而历史是螺旋发展的，回测可能会有过拟合的现象，也就是说，会出现一些特别的参数效果特别好，但是用来做策略未来不一定会好。我觉得最好还是要有对模型为什么效果会好的解释，并考察这种解释在未来是否会失效，比如最小市值策略，解释是A股特有的壳价值带来的，但如果新股发行持续改革，这个策略就会失效。</li>
<li>散户资金量小，可能无法建立足够的股票池构建组合，这时候可以考虑基金，类似华泰证券的券商基金交易费率极低，且没有最小消费的限制，非常适合量化交易。此外，如果场外购买基金，交易费率也是要仔细比较的。</li>
<li>学好Python，对量化交易好处多多。看来我去年开始用Python是个明智的决定。</li>
<li>在A股量化策略容易有效的原因是韭菜多，不过这种好日子估计最多5~10年，挣超额收益会越来越难。</li>
<li>演讲中提到的相关的资源：
<ol>
<li><a href="http://tushare.org/"
   rel="noopener noreferrer" target="_blank" class="external">tushare</a>
：一个开源的金融数据库，可以用Python非常方便的使用；</li>
<li><a href="https://uqer.io/home/"
   rel="noopener noreferrer" target="_blank" class="external">优矿</a>
：一个量化策略平台，提供了丰富的API，支持Python语言。</li>
<li><a href="https://www.ssrn.com/en/"
   rel="noopener noreferrer" target="_blank" class="external">SSRN</a>
：获取免费的金融方面的英文论文。</li>
</ol>
</li>
</ol>
]]></content:encoded><category>investment</category><category domain="tags">量化投资</category><category domain="tags">社区</category></item><item><title>比特币FAQ</title><link>https://yifeitao.com/bitcoin-faq/</link><pubDate>Thu, 10 Aug 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/bitcoin-faq/</guid><description>&lt;p&gt;这篇比特币FAQ试图以FAQ的形式对比特币做一个简单的介绍。主要参考了&lt;a href="https://bitcoin.org/bitcoin.pdf"
rel="noopener noreferrer" target="_blank" class="external"&gt;比特币白皮书&lt;/a&gt;
和普林斯顿大学的教材&lt;a href="https://u.jd.com/C2NMOf"
rel="noopener noreferrer" target="_blank" class="external"&gt;《区块链：技术驱动金融》&lt;/a&gt;
，当然不可避免的包含了很多个人理解，欢迎探讨。&lt;/p&gt;
&lt;p&gt;【2017-08-10初稿 / 2020-05-01小幅更新】&lt;/p&gt;
&lt;h2 id="1什么是比特币"&gt;1.什么是比特币？&lt;/h2&gt;
&lt;p&gt;比特币是一种数字货币，它不依赖于某一个中心机构发行，而是依赖于互联网，基于密码学与分布式计算理论发行，人人都可以参与，它的总量有限，你可以把它想象成数字世界的一种黄金。&lt;/p&gt;
&lt;h2 id="2比特币有什么用"&gt;2.比特币有什么用？&lt;/h2&gt;
&lt;p&gt;比特币目前来说可以买到的最重要的东西是各国的货币。比特币作为一种数字货币，设计的初衷是想让其部分取代法币的，因此理论上它可以做任何钱可以做的事情，然而目前比特币直接购物仍然处在很早期的试验阶段，只有少量商家支持，其中最著名的是&lt;a href="https://support.microsoft.com/zh-cn/help/13942/microsoft-account-how-to-use-bitcoin-to-add-money-to-your-account"
rel="noopener noreferrer" target="_blank" class="external"&gt;微软&lt;/a&gt;
。个人认为，阻碍比特币广泛应用的原因有三点，一是比特币支付目前的手续费偏高，对这个问题解决方案的争议甚至导致了比特币的分叉，即支持大区块的BCH和支持闪电网络的BCC；二是比特币的价格波动依然过于剧烈，更多的人把它当成了投资品或投机品；三是由于货币竞争的关系，大部分政府不太支持。&lt;/p&gt;
&lt;p&gt;比特币现在被比喻为数字黄金，强调其储值的价值，然而比特币的支付价值才是其价值的基底，比特币如果最终无法用于普遍交易，其价值是值得怀疑的。&lt;/p&gt;
&lt;h2 id="3货币应当有国家信用背书比特币没有那么它的信用来自于哪里"&gt;3.货币应当有国家信用背书，比特币没有，那么它的信用来自于哪里？&lt;/h2&gt;
&lt;p&gt;货币不一定要有国家信用背书，比如目前黄金还是可以用作国际通行的货币，货币的信用来自于有多少人相信它是货币，基于国家发行的纸币讲的是一个故事，基于密码学共识发行的比特币讲的是另一个故事，人类正是因为有了相信故事的能力，才能组织起更大规模的合作。（推荐阅读&lt;a href="https://u.jd.com/oYTXl4"
rel="noopener noreferrer" target="_blank" class="external"&gt;《人类简史》&lt;/a&gt;
）&lt;/p&gt;
&lt;p&gt;比特币的信用来源确实不好理解，它通过一种分布式的方式，对谁有多少钱这个问题达成了共识，只要参与这个系统的人都不可否认。你仍然需要理解的是，任何现代货币都是一个故事，货币的特点就是承认它有货币价值的人越多，它就越有货币价值，所以不可否认这里面有信仰成分。&lt;/p&gt;
&lt;h2 id="4这么说比特币就是一种传销或者说庞氏骗局嘛"&gt;4.这么说比特币就是一种传销或者说庞氏骗局嘛？&lt;/h2&gt;
&lt;p&gt;比特币和传销或庞氏骗局有一点相同，就是都需要一点点信仰。但是区别主要在于，对比特币的信仰会使得这种货币真正具有价值，它的价值就是作为一种货币存在，而不是其他的。而传销或者庞氏骗局带来的是更多的上当受骗的人。&lt;/p&gt;
&lt;p&gt;比特币社区最早聚集的是一帮极客、电子朋克，他们希望的是建立一种新的货币体系，出发点绝不是骗钱。当然现在随着炒作比特币及区块链带来的巨大投机机会，&lt;strong&gt;所谓的币圈可能是骗子密度最高的地方&lt;/strong&gt;，我给所有人的建议是不懂不投。&lt;/p&gt;
&lt;h2 id="5比特币究竟是怎么发行的"&gt;5.比特币究竟是怎么发行的？&lt;/h2&gt;
&lt;p&gt;除了创世区块的50个比特币，其它比特币都是对记账权的奖励，是在比特币网络运行中逐渐产生的。比特币需要定期对所有未确认的交易进行确认记账，而获得这个记账权的人将获得一定的比特币奖励，这些奖励是比特币原始的来源。每完成一批交易的记账，会打包成一个所谓的区块，每个区块都有一个指针指向前一个区块，因此被称为区块链。&lt;/p&gt;
&lt;h2 id="6谁有多少比特币是怎么记录的有一个类似银行的账户么"&gt;6.谁有多少比特币是怎么记录的，有一个类似银行的账户么？&lt;/h2&gt;
&lt;p&gt;并没有类似银行账户的概念，比特币区块链只是记录了比特币的产生，以及它产生后所有的转账记录，当转账到某个地址而暂时没有转出时，则这个地址对这个比特币有所有权。&lt;/p&gt;
&lt;h2 id="7地址是什么"&gt;7.地址是什么？&lt;/h2&gt;
&lt;p&gt;地址可以理解为一种身份的证明，它是公开的，就像人人都能看见你家大门上的门牌号码一样。但是只有你自己有一把钥匙可以打开这扇门，这里用到了密码学中的签名算法，总的来说，你可以通过私钥来证明这个地址（公钥）归你管理。&lt;/p&gt;
&lt;h2 id="8比特币真的有一个一个的币吗"&gt;8.比特币真的有一个一个的币吗？&lt;/h2&gt;
&lt;p&gt;上面我们说了，比特币区块链就是一个大帐本，所以并没有像人民币那样一个一个的币存在，而只是人人都能看到某个地址上有多少数量的比特币还没有花掉，而这个地址上的比特币只有持有私钥的人才能签名确认后花掉。因此，比特币实际上就是私钥，因为知道了私钥的人就能花掉比特币。&lt;/p&gt;
&lt;h2 id="9怎么保存比特币"&gt;9.怎么保存比特币？&lt;/h2&gt;
&lt;p&gt;首先，如前所述，保存比特币首要的就是要保存私钥，这是所谓比特币钱包的主要功能，私钥泄露，则比特币丢失。此外，某个地址上有多少币是由公共的区块链来确定的，人人都可以连上比特币网络验证。&lt;/p&gt;
&lt;h2 id="10那么究竟谁来记账呢我为什么要信任这个记账的人"&gt;10.那么究竟谁来记账呢？我为什么要信任这个记账的人？&lt;/h2&gt;
&lt;p&gt;这是比特币的最精妙的设计。谁来记账是一个不确定的事情，每个节点都要去花很长的时间的计算（这需要消耗电力）来竞争这个记账的权力，获得记账权力后，如果随便乱记，那么会得不到其他节点的承认，这个生成的区块也将作废，虽然它也指向前一个区块形成了区块链，但是其他的人可以创建一个得到更多人承认的区块，产生一条更长的区块链，使得你这条短的区块链作废，浪费了电力而得不到打包的比特币奖励。这种精妙的设计通过人性是逐利的来达到了可信。&lt;/p&gt;
&lt;h2 id="11-挖矿与矿机是怎么一回事"&gt;11. 挖矿与矿机是怎么一回事？&lt;/h2&gt;
&lt;p&gt;如上一点所述，争夺记账权的工作，也就是争夺对记账权的产生的比特币的奖励，就叫做挖矿。挖矿需要做一种哈希运算，让产生的哈希值包含一定数量的0，这个数量随着整个比特币网络哈希计算能力的提升而变大，使得区块打包的速度，也就是比特币生成的速度基本保持匀速。因此对计算速度的竞赛几乎是一种军备竞赛，从最早的CPU，GPU，一直到现在专门用来计算哈希值的矿机。&lt;/p&gt;
&lt;p&gt;挖矿获得的奖励每隔一段时间会减半，慢慢的挖矿的人也就是矿工获得的奖励会越来越少，但比特币网络还有另一种机制：每个转账的人都要给一点点的转账费，作为矿工打包成功的奖励。&lt;/p&gt;
&lt;h2 id="12要怎么获得比特币呢"&gt;12.要怎么获得比特币呢？&lt;/h2&gt;
&lt;p&gt;由于目前通过竞争记账权也就是挖矿来获得比特币已经很专业很困难了，你必须买专业的矿机，加入所谓的矿池共同分担算力与比特币奖励才行。&lt;/p&gt;
&lt;p&gt;最简单的办法还是找持有比特币的人用人民币来买，而买卖的方式，由于目前各国监管日益严格，交易平台大多已经不支持类似股票那种法币和比特币的直接交易，而只支持所谓的场外交易平台，也就是平台只做类似淘宝的担保，甚至连担保都没有只是发布信息，买卖比特币是C2C的。建议还是找一些有知名的有担保交易的大平台来购买，这里就不具体推荐了。&lt;/p&gt;
&lt;h2 id="13每个区块都会产生比特币那么比特币会不会越来越多"&gt;13.每个区块都会产生比特币，那么比特币会不会越来越多？&lt;/h2&gt;
&lt;p&gt;不会，每个区块的奖励每隔一段时间会减半，因此这是一个比例为1/2的等比数列，其总量为2100万个。因此比特币是设计为通缩的。&lt;/p&gt;
&lt;h2 id="14通缩的货币会越来越能换到更多的商品那么理论上人人都会囤积比特币而不会花费比特币那么它还有货币价值吗"&gt;14.通缩的货币会越来越能换到更多的商品，那么理论上人人都会囤积比特币而不会花费比特币，那么它还有货币价值吗？&lt;/h2&gt;
&lt;p&gt;这确实是个好问题，我的理解是到一定的时候（比特币获得了它应有的地位，价格趋于稳定），比特币的拥有者自然会花比特币，就像现在拥有黄金的人一样。而且比特币可以和其他支持通胀的货币一起构成货币体系，就如同现在的黄金和法币一样。&lt;/p&gt;
&lt;h2 id="15我听说比特币是匿名的所以都被用来买毒品"&gt;15.我听说比特币是匿名的，所以都被用来买毒品？&lt;/h2&gt;
&lt;p&gt;比特币是一个公开的大帐本，但是它的地址是一串字符串，确实不能直接和人联系起来，因此有一定的匿名性。但是同时，它的账本是公开的，历史是不可更改可以随时查看的，从这个角度来说，它的匿名性还不如现金，只要把比特币地址和人取得了联系，就会追溯到所有的历史。实际上，用比特币贩毒的丝绸之路就被FBI抓了，所以比特币只是一种工具，并不天然的利于犯罪。&lt;/p&gt;
&lt;h2 id="16我听说比特币被用来洗钱"&gt;16.我听说比特币被用来洗钱？&lt;/h2&gt;
&lt;p&gt;就像上一问一样，我不认为比特币天然的利于洗钱，像中国政府已经开始监管交易所里用比特币进行洗钱的风险了，我觉得比特币还是应当更多的用于合规合法的应用。&lt;/p&gt;
&lt;h2 id="17既然比特币只是一种技术而不由任何组织发行那么岂不是随随便便都会产生类似的各种数字货币那么比特币还有什么特别的价值吗"&gt;17.既然比特币只是一种技术，而不由任何组织发行，那么岂不是随随便便都会产生类似的各种数字货币？那么比特币还有什么特别的价值吗？&lt;/h2&gt;
&lt;p&gt;确实是可以产生任意多种类似的数字货币，甚至它们的技术可以更优秀，但是有两点需要注意，比特币有先发优势，数字货币的价值需要越多参与者越好，在比特币已经占领高地的情况下其他数字货币很难从头开始取得优势地位，其次比特币自身也是可以进行技术革新而进化的。&lt;/p&gt;
&lt;h2 id="18比特币分裂是怎么回事"&gt;18.比特币分裂是怎么回事？&lt;/h2&gt;
&lt;p&gt;比特币的相关规则和软件都是开源的，因此当有人不认同现有理念的时候，可以从某个区块开始，按照一个新的规则来打包交易（挖矿），而不接受原来的规则挖出来的区块，反之原来的规则也不再兼容这个新规则挖出来的区块，因此从这个区块开始，有两条区块链各自为政。在这个分类区块之前的未使用的比特币，可以同时转账到两个区块链分支，因此先当于1个原来的比特币变成了新的两个区块链上的各1个比特币。&lt;/p&gt;
&lt;h2 id="19这种分裂不是相当于比特币翻倍了么"&gt;19.这种分裂不是相当于比特币翻倍了么？&lt;/h2&gt;
&lt;p&gt;不完全是这样，分裂后的比特币由于参与者用脚投票，会出现价值上的差异，从既定事实的角度来说，只有价值高的那种才算是正宗的比特币。目前比特币的转账手续费较高，如何解决这个问题，产生了两个方案，一个是对区块的大小进行扩容，支持这个观点的人分叉出了被称为BCH的数字货币，而另外更复杂的协议仍暂时保留了BTC的称号。&lt;/p&gt;
&lt;h2 id="20比特币和区块链的关系"&gt;20.比特币和区块链的关系？&lt;/h2&gt;
&lt;p&gt;区块链技术产生于比特币的研发，目前衍生出更多的技术，但是区块链技术的应用场景还需要进一步着实，目前的热潮泡沫很大，个人认为以比特币为代表的数字货币才是区块链真正落实了的应用场景。很多应用场景根本没必要使用区块链技术，但是数字货币却很可能是很有必要的，这一点在此不能详述，可以参见哈耶克的《货币的非国家化》。&lt;/p&gt;
&lt;h2 id="21如何投资比特币"&gt;21.如何投资比特币？&lt;/h2&gt;
&lt;p&gt;对大部分人来说，投资比特币唯一可行的方式就是用少量的完全不影响生活的钱购买比特币，长期持有5~10年。由于比特币价格仍在剧烈波动中，任何试图追涨杀跌的行为都将陷入赌徒的境地。&lt;strong&gt;任何投资永远记得不懂不投。&lt;/strong&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<p>这篇比特币FAQ试图以FAQ的形式对比特币做一个简单的介绍。主要参考了<a href="https://bitcoin.org/bitcoin.pdf"
   rel="noopener noreferrer" target="_blank" class="external">比特币白皮书</a>
和普林斯顿大学的教材<a href="https://u.jd.com/C2NMOf"
   rel="noopener noreferrer" target="_blank" class="external">《区块链：技术驱动金融》</a>
，当然不可避免的包含了很多个人理解，欢迎探讨。</p>
<p>【2017-08-10初稿 / 2020-05-01小幅更新】</p>
<h2 id="1什么是比特币">1.什么是比特币？</h2>
<p>比特币是一种数字货币，它不依赖于某一个中心机构发行，而是依赖于互联网，基于密码学与分布式计算理论发行，人人都可以参与，它的总量有限，你可以把它想象成数字世界的一种黄金。</p>
<h2 id="2比特币有什么用">2.比特币有什么用？</h2>
<p>比特币目前来说可以买到的最重要的东西是各国的货币。比特币作为一种数字货币，设计的初衷是想让其部分取代法币的，因此理论上它可以做任何钱可以做的事情，然而目前比特币直接购物仍然处在很早期的试验阶段，只有少量商家支持，其中最著名的是<a href="https://support.microsoft.com/zh-cn/help/13942/microsoft-account-how-to-use-bitcoin-to-add-money-to-your-account"
   rel="noopener noreferrer" target="_blank" class="external">微软</a>
。个人认为，阻碍比特币广泛应用的原因有三点，一是比特币支付目前的手续费偏高，对这个问题解决方案的争议甚至导致了比特币的分叉，即支持大区块的BCH和支持闪电网络的BCC；二是比特币的价格波动依然过于剧烈，更多的人把它当成了投资品或投机品；三是由于货币竞争的关系，大部分政府不太支持。</p>
<p>比特币现在被比喻为数字黄金，强调其储值的价值，然而比特币的支付价值才是其价值的基底，比特币如果最终无法用于普遍交易，其价值是值得怀疑的。</p>
<h2 id="3货币应当有国家信用背书比特币没有那么它的信用来自于哪里">3.货币应当有国家信用背书，比特币没有，那么它的信用来自于哪里？</h2>
<p>货币不一定要有国家信用背书，比如目前黄金还是可以用作国际通行的货币，货币的信用来自于有多少人相信它是货币，基于国家发行的纸币讲的是一个故事，基于密码学共识发行的比特币讲的是另一个故事，人类正是因为有了相信故事的能力，才能组织起更大规模的合作。（推荐阅读<a href="https://u.jd.com/oYTXl4"
   rel="noopener noreferrer" target="_blank" class="external">《人类简史》</a>
）</p>
<p>比特币的信用来源确实不好理解，它通过一种分布式的方式，对谁有多少钱这个问题达成了共识，只要参与这个系统的人都不可否认。你仍然需要理解的是，任何现代货币都是一个故事，货币的特点就是承认它有货币价值的人越多，它就越有货币价值，所以不可否认这里面有信仰成分。</p>
<h2 id="4这么说比特币就是一种传销或者说庞氏骗局嘛">4.这么说比特币就是一种传销或者说庞氏骗局嘛？</h2>
<p>比特币和传销或庞氏骗局有一点相同，就是都需要一点点信仰。但是区别主要在于，对比特币的信仰会使得这种货币真正具有价值，它的价值就是作为一种货币存在，而不是其他的。而传销或者庞氏骗局带来的是更多的上当受骗的人。</p>
<p>比特币社区最早聚集的是一帮极客、电子朋克，他们希望的是建立一种新的货币体系，出发点绝不是骗钱。当然现在随着炒作比特币及区块链带来的巨大投机机会，<strong>所谓的币圈可能是骗子密度最高的地方</strong>，我给所有人的建议是不懂不投。</p>
<h2 id="5比特币究竟是怎么发行的">5.比特币究竟是怎么发行的？</h2>
<p>除了创世区块的50个比特币，其它比特币都是对记账权的奖励，是在比特币网络运行中逐渐产生的。比特币需要定期对所有未确认的交易进行确认记账，而获得这个记账权的人将获得一定的比特币奖励，这些奖励是比特币原始的来源。每完成一批交易的记账，会打包成一个所谓的区块，每个区块都有一个指针指向前一个区块，因此被称为区块链。</p>
<h2 id="6谁有多少比特币是怎么记录的有一个类似银行的账户么">6.谁有多少比特币是怎么记录的，有一个类似银行的账户么？</h2>
<p>并没有类似银行账户的概念，比特币区块链只是记录了比特币的产生，以及它产生后所有的转账记录，当转账到某个地址而暂时没有转出时，则这个地址对这个比特币有所有权。</p>
<h2 id="7地址是什么">7.地址是什么？</h2>
<p>地址可以理解为一种身份的证明，它是公开的，就像人人都能看见你家大门上的门牌号码一样。但是只有你自己有一把钥匙可以打开这扇门，这里用到了密码学中的签名算法，总的来说，你可以通过私钥来证明这个地址（公钥）归你管理。</p>
<h2 id="8比特币真的有一个一个的币吗">8.比特币真的有一个一个的币吗？</h2>
<p>上面我们说了，比特币区块链就是一个大帐本，所以并没有像人民币那样一个一个的币存在，而只是人人都能看到某个地址上有多少数量的比特币还没有花掉，而这个地址上的比特币只有持有私钥的人才能签名确认后花掉。因此，比特币实际上就是私钥，因为知道了私钥的人就能花掉比特币。</p>
<h2 id="9怎么保存比特币">9.怎么保存比特币？</h2>
<p>首先，如前所述，保存比特币首要的就是要保存私钥，这是所谓比特币钱包的主要功能，私钥泄露，则比特币丢失。此外，某个地址上有多少币是由公共的区块链来确定的，人人都可以连上比特币网络验证。</p>
<h2 id="10那么究竟谁来记账呢我为什么要信任这个记账的人">10.那么究竟谁来记账呢？我为什么要信任这个记账的人？</h2>
<p>这是比特币的最精妙的设计。谁来记账是一个不确定的事情，每个节点都要去花很长的时间的计算（这需要消耗电力）来竞争这个记账的权力，获得记账权力后，如果随便乱记，那么会得不到其他节点的承认，这个生成的区块也将作废，虽然它也指向前一个区块形成了区块链，但是其他的人可以创建一个得到更多人承认的区块，产生一条更长的区块链，使得你这条短的区块链作废，浪费了电力而得不到打包的比特币奖励。这种精妙的设计通过人性是逐利的来达到了可信。</p>
<h2 id="11-挖矿与矿机是怎么一回事">11. 挖矿与矿机是怎么一回事？</h2>
<p>如上一点所述，争夺记账权的工作，也就是争夺对记账权的产生的比特币的奖励，就叫做挖矿。挖矿需要做一种哈希运算，让产生的哈希值包含一定数量的0，这个数量随着整个比特币网络哈希计算能力的提升而变大，使得区块打包的速度，也就是比特币生成的速度基本保持匀速。因此对计算速度的竞赛几乎是一种军备竞赛，从最早的CPU，GPU，一直到现在专门用来计算哈希值的矿机。</p>
<p>挖矿获得的奖励每隔一段时间会减半，慢慢的挖矿的人也就是矿工获得的奖励会越来越少，但比特币网络还有另一种机制：每个转账的人都要给一点点的转账费，作为矿工打包成功的奖励。</p>
<h2 id="12要怎么获得比特币呢">12.要怎么获得比特币呢？</h2>
<p>由于目前通过竞争记账权也就是挖矿来获得比特币已经很专业很困难了，你必须买专业的矿机，加入所谓的矿池共同分担算力与比特币奖励才行。</p>
<p>最简单的办法还是找持有比特币的人用人民币来买，而买卖的方式，由于目前各国监管日益严格，交易平台大多已经不支持类似股票那种法币和比特币的直接交易，而只支持所谓的场外交易平台，也就是平台只做类似淘宝的担保，甚至连担保都没有只是发布信息，买卖比特币是C2C的。建议还是找一些有知名的有担保交易的大平台来购买，这里就不具体推荐了。</p>
<h2 id="13每个区块都会产生比特币那么比特币会不会越来越多">13.每个区块都会产生比特币，那么比特币会不会越来越多？</h2>
<p>不会，每个区块的奖励每隔一段时间会减半，因此这是一个比例为1/2的等比数列，其总量为2100万个。因此比特币是设计为通缩的。</p>
<h2 id="14通缩的货币会越来越能换到更多的商品那么理论上人人都会囤积比特币而不会花费比特币那么它还有货币价值吗">14.通缩的货币会越来越能换到更多的商品，那么理论上人人都会囤积比特币而不会花费比特币，那么它还有货币价值吗？</h2>
<p>这确实是个好问题，我的理解是到一定的时候（比特币获得了它应有的地位，价格趋于稳定），比特币的拥有者自然会花比特币，就像现在拥有黄金的人一样。而且比特币可以和其他支持通胀的货币一起构成货币体系，就如同现在的黄金和法币一样。</p>
<h2 id="15我听说比特币是匿名的所以都被用来买毒品">15.我听说比特币是匿名的，所以都被用来买毒品？</h2>
<p>比特币是一个公开的大帐本，但是它的地址是一串字符串，确实不能直接和人联系起来，因此有一定的匿名性。但是同时，它的账本是公开的，历史是不可更改可以随时查看的，从这个角度来说，它的匿名性还不如现金，只要把比特币地址和人取得了联系，就会追溯到所有的历史。实际上，用比特币贩毒的丝绸之路就被FBI抓了，所以比特币只是一种工具，并不天然的利于犯罪。</p>
<h2 id="16我听说比特币被用来洗钱">16.我听说比特币被用来洗钱？</h2>
<p>就像上一问一样，我不认为比特币天然的利于洗钱，像中国政府已经开始监管交易所里用比特币进行洗钱的风险了，我觉得比特币还是应当更多的用于合规合法的应用。</p>
<h2 id="17既然比特币只是一种技术而不由任何组织发行那么岂不是随随便便都会产生类似的各种数字货币那么比特币还有什么特别的价值吗">17.既然比特币只是一种技术，而不由任何组织发行，那么岂不是随随便便都会产生类似的各种数字货币？那么比特币还有什么特别的价值吗？</h2>
<p>确实是可以产生任意多种类似的数字货币，甚至它们的技术可以更优秀，但是有两点需要注意，比特币有先发优势，数字货币的价值需要越多参与者越好，在比特币已经占领高地的情况下其他数字货币很难从头开始取得优势地位，其次比特币自身也是可以进行技术革新而进化的。</p>
<h2 id="18比特币分裂是怎么回事">18.比特币分裂是怎么回事？</h2>
<p>比特币的相关规则和软件都是开源的，因此当有人不认同现有理念的时候，可以从某个区块开始，按照一个新的规则来打包交易（挖矿），而不接受原来的规则挖出来的区块，反之原来的规则也不再兼容这个新规则挖出来的区块，因此从这个区块开始，有两条区块链各自为政。在这个分类区块之前的未使用的比特币，可以同时转账到两个区块链分支，因此先当于1个原来的比特币变成了新的两个区块链上的各1个比特币。</p>
<h2 id="19这种分裂不是相当于比特币翻倍了么">19.这种分裂不是相当于比特币翻倍了么？</h2>
<p>不完全是这样，分裂后的比特币由于参与者用脚投票，会出现价值上的差异，从既定事实的角度来说，只有价值高的那种才算是正宗的比特币。目前比特币的转账手续费较高，如何解决这个问题，产生了两个方案，一个是对区块的大小进行扩容，支持这个观点的人分叉出了被称为BCH的数字货币，而另外更复杂的协议仍暂时保留了BTC的称号。</p>
<h2 id="20比特币和区块链的关系">20.比特币和区块链的关系？</h2>
<p>区块链技术产生于比特币的研发，目前衍生出更多的技术，但是区块链技术的应用场景还需要进一步着实，目前的热潮泡沫很大，个人认为以比特币为代表的数字货币才是区块链真正落实了的应用场景。很多应用场景根本没必要使用区块链技术，但是数字货币却很可能是很有必要的，这一点在此不能详述，可以参见哈耶克的《货币的非国家化》。</p>
<h2 id="21如何投资比特币">21.如何投资比特币？</h2>
<p>对大部分人来说，投资比特币唯一可行的方式就是用少量的完全不影响生活的钱购买比特币，长期持有5~10年。由于比特币价格仍在剧烈波动中，任何试图追涨杀跌的行为都将陷入赌徒的境地。<strong>任何投资永远记得不懂不投。</strong></p>
]]></content:encoded><category>life</category><category domain="tags">比特币</category><category domain="tags">FAQ</category></item><item><title>投资中的傲慢与偏见</title><link>https://yifeitao.com/pride-and-prejudice/</link><pubDate>Sun, 06 Aug 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/pride-and-prejudice/</guid><description>&lt;p&gt;雪球网是我去年以来上得最多的网站之一，在我尝试投资的路上，起到了很大的作用，即使到现在，我的选股也还有很大抄作业的意味，看看雪球上的大V们感兴趣的股票，再加上一些自己的分析判断，大概是我目前的水平状态。&lt;/p&gt;
&lt;p&gt;雪球上当然也有韭菜和小白，有一些感觉水平比我还低的人，但是大部分情况下我觉得讨论质量还是比较高的。不过最让我觉得讨论水平低下的是对比特币的讨论，无论是大V，还是小白，大部分人的看法都是“传销”，“庞氏骗局”，“没有国家背书的货币毫无意义”，“本世纪最大骗局”之类的。说实话，我也看不清比特币的未来，可能还要至少翻一百倍，也可能一文不值，只能当作一个时代的纪念。但是我能够清楚明白的是，这是一个有着深厚数学基础和经济学基础的伟大发明，而绝不是什么传销和旁氏骗局能解释的。比特币作为一种金融工具，但是由于它的数学基础与程序运行的特点，吸引的早期用户大多是程序员，很多传统的投资界人士可能并没有用心去了解过，或者实际上看也没看懂。&lt;/p&gt;
&lt;p&gt;我一直觉得投资中的两大心理障碍是贪婪与恐惧，但是现在发现傲慢与偏见也是，比如很多人都倾向于投资计算机、互联网这些高大上的新兴行业，而对白酒、水电之类的没有太多技术含量的股票不屑一顾。我觉得如果抛开道德因素看的化，任何钱都是平等的，卖白酒的也是挣钱，卖软件的也是挣钱，没有高低之分，对投资人而言，更是应该哪里挣钱哪里去。&lt;/p&gt;
&lt;p&gt;其实我看到雪球上的投资人对于比特币的无知言论是觉得很高兴的，因为这说明还有很多人没有发现数字货币和区块链的价值，比特币其实还是再比较小的圈子的一个玩具，对它的推广固然任重道远，但也蕴含了无穷的潜力。这也启示我，对于自己不懂不了解的东西千万不要妄下结论，否则失去了真理也失去了真金。&lt;/p&gt;
&lt;p&gt;（写此文时，比特币价格突破3000美金。）&lt;/p&gt;</description><content:encoded><![CDATA[<p>雪球网是我去年以来上得最多的网站之一，在我尝试投资的路上，起到了很大的作用，即使到现在，我的选股也还有很大抄作业的意味，看看雪球上的大V们感兴趣的股票，再加上一些自己的分析判断，大概是我目前的水平状态。</p>
<p>雪球上当然也有韭菜和小白，有一些感觉水平比我还低的人，但是大部分情况下我觉得讨论质量还是比较高的。不过最让我觉得讨论水平低下的是对比特币的讨论，无论是大V，还是小白，大部分人的看法都是“传销”，“庞氏骗局”，“没有国家背书的货币毫无意义”，“本世纪最大骗局”之类的。说实话，我也看不清比特币的未来，可能还要至少翻一百倍，也可能一文不值，只能当作一个时代的纪念。但是我能够清楚明白的是，这是一个有着深厚数学基础和经济学基础的伟大发明，而绝不是什么传销和旁氏骗局能解释的。比特币作为一种金融工具，但是由于它的数学基础与程序运行的特点，吸引的早期用户大多是程序员，很多传统的投资界人士可能并没有用心去了解过，或者实际上看也没看懂。</p>
<p>我一直觉得投资中的两大心理障碍是贪婪与恐惧，但是现在发现傲慢与偏见也是，比如很多人都倾向于投资计算机、互联网这些高大上的新兴行业，而对白酒、水电之类的没有太多技术含量的股票不屑一顾。我觉得如果抛开道德因素看的化，任何钱都是平等的，卖白酒的也是挣钱，卖软件的也是挣钱，没有高低之分，对投资人而言，更是应该哪里挣钱哪里去。</p>
<p>其实我看到雪球上的投资人对于比特币的无知言论是觉得很高兴的，因为这说明还有很多人没有发现数字货币和区块链的价值，比特币其实还是再比较小的圈子的一个玩具，对它的推广固然任重道远，但也蕴含了无穷的潜力。这也启示我，对于自己不懂不了解的东西千万不要妄下结论，否则失去了真理也失去了真金。</p>
<p>（写此文时，比特币价格突破3000美金。）</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">投资</category><category domain="tags">心理</category></item><item><title>《战狼2》：战狼2的成功启示</title><link>https://yifeitao.com/wolf-warriors-2/</link><pubDate>Fri, 04 Aug 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/wolf-warriors-2/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2485983612.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;战狼2票房已经突破20亿，豆瓣评分也高达7.5分（好于79%的动作片），我觉得算是叫好又叫座了。我也凑热闹去看了，电影本身我觉得人们已经讨论得够多，我没什么要补充的，总的来说，达到了好莱坞大片的水准，要是把主角换成美国人，解放军换成美军，照样是一部好的爆米花电影。&lt;/p&gt;
&lt;p&gt;我想说说它的成功。人们调侃说，估计现在找吴京投资《战狼3》的投资人都把钱堆到他家门口了，毫无疑问，《战狼2》获得了极大的商业成功，电影背后的故事也被逐渐挖了出来。看完这些故事，再联系电影本身的品质，我想有几点值得思考：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;成功需要各种因素，《战狼2》赶上了这个月没有外国大片，主要对手《建军大业》太过于作业化，夹带的爱国主义情怀赶上了中国民族主义的上升期，当然最主要的还是电影的品质过硬；&lt;/li&gt;
&lt;li&gt;吴京我最早知道他是电视剧《太极宗师》，算是男一号，但是后来一直坎坷，在香港电影里面演反角，比如《杀破狼》，动作很凌厉，但毕竟是反派，还只是大反派的小打手，台词都没几句。《战狼2》片头鸣谢了刘伟强和陈木胜，可以想象，吴京在这些动作片导演下没有白呆，从一个动作片演员到大片导演，虽然我不是行内人，也可以想象有多少东西需要学习；&lt;/li&gt;
&lt;li&gt;吴京的老婆谢楠挑人的眼光真不错，所以才有抵押房产投资电影的故事，我老婆说，仔细看看，吴京也还蛮帅的，认真的男人最帅吧。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2485983612.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>战狼2票房已经突破20亿，豆瓣评分也高达7.5分（好于79%的动作片），我觉得算是叫好又叫座了。我也凑热闹去看了，电影本身我觉得人们已经讨论得够多，我没什么要补充的，总的来说，达到了好莱坞大片的水准，要是把主角换成美国人，解放军换成美军，照样是一部好的爆米花电影。</p>
<p>我想说说它的成功。人们调侃说，估计现在找吴京投资《战狼3》的投资人都把钱堆到他家门口了，毫无疑问，《战狼2》获得了极大的商业成功，电影背后的故事也被逐渐挖了出来。看完这些故事，再联系电影本身的品质，我想有几点值得思考：</p>
<ol>
<li>成功需要各种因素，《战狼2》赶上了这个月没有外国大片，主要对手《建军大业》太过于作业化，夹带的爱国主义情怀赶上了中国民族主义的上升期，当然最主要的还是电影的品质过硬；</li>
<li>吴京我最早知道他是电视剧《太极宗师》，算是男一号，但是后来一直坎坷，在香港电影里面演反角，比如《杀破狼》，动作很凌厉，但毕竟是反派，还只是大反派的小打手，台词都没几句。《战狼2》片头鸣谢了刘伟强和陈木胜，可以想象，吴京在这些动作片导演下没有白呆，从一个动作片演员到大片导演，虽然我不是行内人，也可以想象有多少东西需要学习；</li>
<li>吴京的老婆谢楠挑人的眼光真不错，所以才有抵押房产投资电影的故事，我老婆说，仔细看看，吴京也还蛮帅的，认真的男人最帅吧。</li>
</ol>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">票房</category></item><item><title>有趣的位操作</title><link>https://yifeitao.com/funny-bit-operation/</link><pubDate>Tue, 01 Aug 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/funny-bit-operation/</guid><description>&lt;p&gt;位操作总给人一种直接安排计算机0/1的感觉，这里搜集整理一些有趣的题目。&lt;/p&gt;</description><content:encoded><![CDATA[<p>位操作总给人一种直接安排计算机0/1的感觉，这里搜集整理一些有趣的题目。</p>
<h2 id="1-交换">1 交换</h2>
<p>请编写一个函数，函数内不使用任何临时变量，直接交换两个数的值。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> <span style="color:#a6e22e">exchangeAB</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> AB) {
</span></span><span style="display:flex;"><span>        AB<span style="color:#f92672">[</span>0<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> AB<span style="color:#f92672">[</span>0<span style="color:#f92672">]^</span>AB<span style="color:#f92672">[</span>1<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        AB<span style="color:#f92672">[</span>1<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> AB<span style="color:#f92672">[</span>0<span style="color:#f92672">]^</span>AB<span style="color:#f92672">[</span>1<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        AB<span style="color:#f92672">[</span>0<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> AB<span style="color:#f92672">[</span>0<span style="color:#f92672">]^</span>AB<span style="color:#f92672">[</span>1<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> AB;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<h2 id="2-加法">2. 加法</h2>
<p>请编写一个函数，将两个数字相加。不得使用+或其他算数运算符。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">addAB</span>(<span style="color:#66d9ef">int</span> A, <span style="color:#66d9ef">int</span> B) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">while</span>(B <span style="color:#f92672">!=</span> 0) {
</span></span><span style="display:flex;"><span>            A <span style="color:#f92672">=</span> A <span style="color:#f92672">^</span> B; <span style="color:#75715e">//异或，相当于无进位加法</span>
</span></span><span style="display:flex;"><span>            B <span style="color:#f92672">=</span> ((A<span style="color:#f92672">^</span>B) <span style="color:#f92672">&amp;</span> B) <span style="color:#f92672">&lt;&lt;</span> 1; <span style="color:#75715e">// 所有的进位</span>
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> A;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<p>这个二分查找要写准确，其实比较困难。而且关键是虽然查找的时间复杂度是$$O(logN)$$，但是插入时插入点后的数组需要复制，依然是$$O(N)$$时间复杂度。</p>
<h2 id="3--比较大小">3  比较大小</h2>
<p>请编写一个方法，找出两个数字中最大的那个。条件是不得使用if-else等比较和判断运算符。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">getMax</span>(<span style="color:#66d9ef">int</span> a, <span style="color:#66d9ef">int</span> b) {<span style="color:#75715e">//a, b符号不同，取正值，a,b符号相同，考察a-b符号</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> sa <span style="color:#f92672">=</span> sign(a);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> sb <span style="color:#f92672">=</span> sign(b);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> sc <span style="color:#f92672">=</span> sign(a <span style="color:#f92672">-</span> b);
</span></span><span style="display:flex;"><span>        
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> use_sa <span style="color:#f92672">=</span> sa<span style="color:#f92672">^</span>sb; <span style="color:#75715e">//a, b符号不同，使用a的符号</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> use_sc <span style="color:#f92672">=</span> flip(use_sa); <span style="color:#75715e">//a, b符号相同，使用a-b的符号</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> k <span style="color:#f92672">=</span> sa <span style="color:#f92672">*</span> use_sa <span style="color:#f92672">+</span> sc <span style="color:#f92672">*</span> use_sc; <span style="color:#75715e">//结合use_sa、use_sc的 0/1取值，相当于 if-else </span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> q <span style="color:#f92672">=</span> flip(k);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> a <span style="color:#f92672">*</span> k <span style="color:#f92672">+</span> b <span style="color:#f92672">*</span> q; <span style="color:#75715e">//结合k、q的0/1取值，相当于 if-else </span>
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">sign</span>(<span style="color:#66d9ef">int</span> x) {<span style="color:#75715e">//该函数的返回值为 0/1 </span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> (x<span style="color:#f92672">&gt;&gt;&gt;</span>31)<span style="color:#f92672">^</span>1;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">flip</span>(<span style="color:#66d9ef">int</span> bit) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> 1<span style="color:#f92672">^</span>bit;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>]]></content:encoded><category>coding</category><category domain="tags">算法</category><category domain="tags">位操作</category></item><item><title>在线编程（刷题）的低级错误</title><link>https://yifeitao.com/stupid-mistake-of-online-coding/</link><pubDate>Sun, 30 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/stupid-mistake-of-online-coding/</guid><description>&lt;p&gt;最近几天在一些OJ网站上刷了不少算法题，都是直接在网页上写代码，脑中调试，然后提交，发现提交通不过大概有以下几种情况：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;算法设计出现根本性错误，一般是对题意有误解，或重要的分支情况未考虑到；&lt;/li&gt;
&lt;li&gt;算法设计基本正确，但是有一些边界情况未考虑到；&lt;/li&gt;
&lt;li&gt;时间复杂度太高；&lt;/li&gt;
&lt;li&gt;低级错误。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以上的1、2、3属于算法的基本功，无论你是在线刷题，还是用IDE刷题，都避免不了，但是对于低级错误，IDE的编辑器静态分析就能发现一批，编译时又能发现一批，似乎也不是什么问题。&lt;/p&gt;
&lt;p&gt;问题在于，技能的反面就是解决问题，解决一些低级错误是会浪费时间的，而且，有一些低级错误会躲过编译器，造成更大的危害，因此很有必要尽量减少这些低级错误。在线刷题时，我自己常见的低级错误（主要是java语言的）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;没有写分号，或者写了中文分号；&lt;/li&gt;
&lt;li&gt;括号未匹配；&lt;/li&gt;
&lt;li&gt;未记住一些API的名称，比如HashMap中的containsKey而不是contains；&lt;/li&gt;
&lt;li&gt;拼写错误，导致API调用错误，甚至标识符前后不一致；&lt;/li&gt;
&lt;li&gt;更改了某个标识符，但是没有更改完全；&lt;/li&gt;
&lt;li&gt;忘记写返回语句，或者某些支路忘记写返回语句，甚至返回了错误的变量或变量类型；&lt;/li&gt;
&lt;li&gt;重复声明变量，比如循环内外各申明一次；&lt;/li&gt;
&lt;li&gt;想要在循环外使用循环变量，但没有在外面声明；&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;暂时这些，以后不断补充。&lt;/p&gt;
&lt;p&gt;如何改善？我发现我这么多年来都犯了一个错误，因为自己粗心，又觉得不可能不犯错误，就放弃了改善的机会，有些放任自流，从认识上就需要提高。以下是一些观点和方法，希望慢慢能标本兼治：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;人都会犯错误，甚至犯低级错误，即所谓的粗心，粗心不能根除，但是可以改善；&lt;/li&gt;
&lt;li&gt;意识到自己的低级错误并改善，而不要视而不见，放任自流；&lt;/li&gt;
&lt;li&gt;适当放慢速度，萝卜快了不洗泥；&lt;/li&gt;
&lt;li&gt;第一遍写的时候随时自我复查，要习惯脑子里有一个角色在复查，争取一次写对；&lt;/li&gt;
&lt;li&gt;写完复查一遍。&lt;/li&gt;
&lt;li&gt;及时总结自己犯了哪些低级错误。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这里谈的都是低级错误，还每涉及到如果提高程序的正确性，这一点以后再总结。&lt;/p&gt;</description><content:encoded><![CDATA[<p>最近几天在一些OJ网站上刷了不少算法题，都是直接在网页上写代码，脑中调试，然后提交，发现提交通不过大概有以下几种情况：</p>
<ol>
<li>算法设计出现根本性错误，一般是对题意有误解，或重要的分支情况未考虑到；</li>
<li>算法设计基本正确，但是有一些边界情况未考虑到；</li>
<li>时间复杂度太高；</li>
<li>低级错误。</li>
</ol>
<p>以上的1、2、3属于算法的基本功，无论你是在线刷题，还是用IDE刷题，都避免不了，但是对于低级错误，IDE的编辑器静态分析就能发现一批，编译时又能发现一批，似乎也不是什么问题。</p>
<p>问题在于，技能的反面就是解决问题，解决一些低级错误是会浪费时间的，而且，有一些低级错误会躲过编译器，造成更大的危害，因此很有必要尽量减少这些低级错误。在线刷题时，我自己常见的低级错误（主要是java语言的）：</p>
<ol>
<li>没有写分号，或者写了中文分号；</li>
<li>括号未匹配；</li>
<li>未记住一些API的名称，比如HashMap中的containsKey而不是contains；</li>
<li>拼写错误，导致API调用错误，甚至标识符前后不一致；</li>
<li>更改了某个标识符，但是没有更改完全；</li>
<li>忘记写返回语句，或者某些支路忘记写返回语句，甚至返回了错误的变量或变量类型；</li>
<li>重复声明变量，比如循环内外各申明一次；</li>
<li>想要在循环外使用循环变量，但没有在外面声明；</li>
</ol>
<p>暂时这些，以后不断补充。</p>
<p>如何改善？我发现我这么多年来都犯了一个错误，因为自己粗心，又觉得不可能不犯错误，就放弃了改善的机会，有些放任自流，从认识上就需要提高。以下是一些观点和方法，希望慢慢能标本兼治：</p>
<ol>
<li>人都会犯错误，甚至犯低级错误，即所谓的粗心，粗心不能根除，但是可以改善；</li>
<li>意识到自己的低级错误并改善，而不要视而不见，放任自流；</li>
<li>适当放慢速度，萝卜快了不洗泥；</li>
<li>第一遍写的时候随时自我复查，要习惯脑子里有一个角色在复查，争取一次写对；</li>
<li>写完复查一遍。</li>
<li>及时总结自己犯了哪些低级错误。</li>
</ol>
<p>这里谈的都是低级错误，还每涉及到如果提高程序的正确性，这一点以后再总结。</p>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">经验</category></item><item><title>逆序对计数问题</title><link>https://yifeitao.com/anti-order-pair/</link><pubDate>Sat, 29 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/anti-order-pair/</guid><description>&lt;p&gt;有一组数，对于其中任意两个数组，若前面一个大于后面一个数字，则这两个数字组成一个逆序对。计算给定数组中的逆序对个数。&lt;/p&gt;</description><content:encoded><![CDATA[<p>有一组数，对于其中任意两个数组，若前面一个大于后面一个数字，则这两个数字组成一个逆序对。计算给定数组中的逆序对个数。</p>
<h2 id="1-暴力搜索">1 暴力搜索</h2>
<p>显然可以把每一对数字都检查一遍，$$n$$个数供需检查$$n(n-1)/2$$组，时间复杂度为$$O(n^2)$$。Java代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">count</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> A) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> count <span style="color:#f92672">=</span> 0;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 1; i <span style="color:#f92672">&lt;</span> A.<span style="color:#a6e22e">length</span>; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> 0; j <span style="color:#f92672">&lt;</span> i; j<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span>(A<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">&gt;</span> A<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>) count<span style="color:#f92672">++</span>;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> count;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<h2 id="2-二分查找">2. 二分查找</h2>
<p>考察1中的代码，我们一次检查了以A[1]到A[n-1]结尾的数字对，即数组每增加一个元素，计算一次之前的元素有多少比自己大。如果之前的元素是有序的，那么通过二分查找，可以很快的找到新元素的位置（注意该位置要越过所有相等的元素），该位置后面的元素就是所求的逆序对个数，然后将新元素插入该位置。Java代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">count</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> A) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> count <span style="color:#f92672">=</span> 0;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 1; i <span style="color:#f92672">&lt;</span> A.<span style="color:#a6e22e">length</span>; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span> num <span style="color:#f92672">=</span> A<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span> p <span style="color:#f92672">=</span> find(A, 0, i, num);
</span></span><span style="display:flex;"><span>            count <span style="color:#f92672">+=</span> (i <span style="color:#f92672">-</span> p);
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> i; j <span style="color:#f92672">&gt;</span> p; j<span style="color:#f92672">--</span>) {
</span></span><span style="display:flex;"><span>                A<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> A<span style="color:#f92672">[</span>j<span style="color:#f92672">-</span>1<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>            A<span style="color:#f92672">[</span>p<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> num;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> count;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">private</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">find</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> A, <span style="color:#66d9ef">int</span> start, <span style="color:#66d9ef">int</span> end, <span style="color:#66d9ef">int</span> x) {<span style="color:#75715e">//注意为左闭右开区间</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> mid <span style="color:#f92672">=</span> (start <span style="color:#f92672">+</span> end) <span style="color:#f92672">/</span> 2;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(A<span style="color:#f92672">[</span>mid<span style="color:#f92672">]</span> <span style="color:#f92672">==</span> x) {<span style="color:#75715e">//注意相等时的处理</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">while</span>(A<span style="color:#f92672">[</span>mid<span style="color:#f92672">]</span> <span style="color:#f92672">==</span> x) mid<span style="color:#f92672">++</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> mid;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(A<span style="color:#f92672">[</span>mid<span style="color:#f92672">]</span> <span style="color:#f92672">&gt;</span> x) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> mid <span style="color:#f92672">==</span> start <span style="color:#f92672">?</span> start : find(A, start, mid, x);
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> mid <span style="color:#f92672">+</span> 1 <span style="color:#f92672">==</span> end <span style="color:#f92672">?</span> end : find(A, mid <span style="color:#f92672">+</span> 1, end, x);
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<p>这个二分查找要写准确，其实比较困难。而且关键是虽然查找的时间复杂度是$$O(logN)$$，但是插入时插入点后的数组需要复制，依然是$$O(N)$$时间复杂度。</p>
<h2 id="3--二叉查找树">3  二叉查找树</h2>
<p>2中的方法提示我们，需要找到一种插入与查找都是$$O(logN)$$时间复杂度的数据结构与算法，可以用一个二叉树来实现，对每个节点，使得其右子树中的节点都大于自己，而左子树的小于等于自己，当插入一个新节点时，维护该节点的右子树大小。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">count</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> A) {
</span></span><span style="display:flex;"><span>        Node root <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Node(A<span style="color:#f92672">[</span>0<span style="color:#f92672">]</span>);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> count <span style="color:#f92672">=</span> root.<span style="color:#a6e22e">getAnti</span>(A<span style="color:#f92672">[</span>0<span style="color:#f92672">]</span>);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 1; i <span style="color:#f92672">&lt;</span> A.<span style="color:#a6e22e">length</span>; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            root.<span style="color:#a6e22e">insert</span>(A<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>);
</span></span><span style="display:flex;"><span>            count <span style="color:#f92672">+=</span> root.<span style="color:#a6e22e">getAnti</span>(A<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>);
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> count;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Node</span> {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> rightSize <span style="color:#f92672">=</span> 0;
</span></span><span style="display:flex;"><span>        Node left, right;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> val;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">public</span> <span style="color:#a6e22e">Node</span>(<span style="color:#66d9ef">int</span> val) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">this</span>.<span style="color:#a6e22e">val</span> <span style="color:#f92672">=</span> val;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">insert</span>(<span style="color:#66d9ef">int</span> val) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(val <span style="color:#f92672">&lt;=</span> <span style="color:#66d9ef">this</span>.<span style="color:#a6e22e">val</span>) { <span style="color:#75715e">//注意相等归到左边</span>
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span>(left<span style="color:#f92672">!=</span><span style="color:#66d9ef">null</span>) {
</span></span><span style="display:flex;"><span>                    left.<span style="color:#a6e22e">insert</span>(val);
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>                    left <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Node(val);
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span>(right<span style="color:#f92672">!=</span><span style="color:#66d9ef">null</span>) {
</span></span><span style="display:flex;"><span>                    right.<span style="color:#a6e22e">insert</span>(val);
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>                    right <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> Node(val);
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>                rightSize<span style="color:#f92672">++</span>;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">getAnti</span>(<span style="color:#66d9ef">int</span> val) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(val <span style="color:#f92672">==</span> <span style="color:#66d9ef">this</span>.<span style="color:#a6e22e">val</span>) <span style="color:#66d9ef">return</span> rightSize;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(val <span style="color:#f92672">&gt;</span> <span style="color:#66d9ef">this</span>.<span style="color:#a6e22e">val</span>) <span style="color:#66d9ef">return</span> right.<span style="color:#a6e22e">getAnti</span>(val);
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> rightSize <span style="color:#f92672">+</span> 1 <span style="color:#f92672">+</span> left.<span style="color:#a6e22e">getAnti</span>(val);
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<p>这个数据结构其实能动态维护逆序数的个数，如果数组是流式进入的，也能随时得出结果。时间复杂度为$$O(NlogN)$$。</p>
<h2 id="4-归并排序">4 归并排序</h2>
<p>求逆序数，可以这样递归求解，把数组分为左右两部分，先求两部分单独的逆序数，再求右半部分小于左半部分的数量，三者的和就是结果。问题是怎么求右半部分小于左半部分的数量，如果两部分都是有序的，那么可以在线性时间进行归并排序，计算相应的逆序数。比如两个序列 {1，3，6}和{2，4，5，7}，在归并时出现左大于右时，共有 {3，2}、{6，4}，{6，5}三种情况，其中{3，2}时，注意到左边比3大的同样比2大，因此情况计数为2。类似的，每次出现左大于右时，应当考虑左边剩下的数字也大于右边。这里相当于给右边每个元素一个计数，这里很微妙的是，由于归并方向是从左到右，如果计数记在左边，则{6，4}和{6，5}会出现重复计数。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">count</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> A) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> aux <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[</span>A.<span style="color:#a6e22e">length</span><span style="color:#f92672">]</span>; <span style="color:#75715e">//辅助归并的数组</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> mergeCount(A, aux, 0, A.<span style="color:#a6e22e">length</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">mergeCount</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> A, <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> aux, <span style="color:#66d9ef">int</span> start, <span style="color:#66d9ef">int</span> end) {<span style="color:#75715e">//注意区间左闭右开</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> mid <span style="color:#f92672">=</span> (start <span style="color:#f92672">+</span> end) <span style="color:#f92672">/</span> 2;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(mid <span style="color:#f92672">==</span> start) <span style="color:#66d9ef">return</span> 0;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> left <span style="color:#f92672">=</span> mergeCount(A, aux, start, mid);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> right <span style="color:#f92672">=</span> mergeCount(A, aux, mid, end);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        System.<span style="color:#a6e22e">arraycopy</span>(A, start, aux, start, end <span style="color:#f92672">-</span> start);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> start;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> mid;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> count <span style="color:#f92672">=</span> 0;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> k <span style="color:#f92672">=</span> start; k <span style="color:#f92672">&lt;</span> end; k<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(i <span style="color:#f92672">&gt;=</span> mid) A<span style="color:#f92672">[</span>k<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> aux<span style="color:#f92672">[</span>j<span style="color:#f92672">++]</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">else</span> <span style="color:#66d9ef">if</span>(j <span style="color:#f92672">&gt;=</span> end) A<span style="color:#f92672">[</span>k<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> aux<span style="color:#f92672">[</span>i<span style="color:#f92672">++]</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">else</span> <span style="color:#66d9ef">if</span>(aux<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">&gt;</span> aux<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span>) {
</span></span><span style="display:flex;"><span>                A<span style="color:#f92672">[</span>k<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> aux<span style="color:#f92672">[</span>j<span style="color:#f92672">++]</span>;
</span></span><span style="display:flex;"><span>                count <span style="color:#f92672">+=</span> (mid <span style="color:#f92672">-</span> i);<span style="color:#75715e">//注意计数的个数是左边大于aux[j]的元素数量。</span>
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>                A<span style="color:#f92672">[</span>k<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> aux<span style="color:#f92672">[</span>i<span style="color:#f92672">++]</span>;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> left <span style="color:#f92672">+</span> right <span style="color:#f92672">+</span> count;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<p>这种方法的效率和归并排序是一样的，为$$O(NlogN)$$。</p>]]></content:encoded><category>coding</category><category domain="tags">算法</category><category domain="tags">编程</category></item><item><title>硬币组合问题</title><link>https://yifeitao.com/coins-combination/</link><pubDate>Wed, 26 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/coins-combination/</guid><description>&lt;p&gt;假设我们有面值为1，2，5，10，25的硬币，那么组成面值$$m$$共有多少种可能的情况？这是美分的情况。&lt;/p&gt;
&lt;p&gt;一般的假设我们有面值为$$(a_1,a_2,&amp;hellip;a_n) $$的硬币,其中$$ a_1&amp;lt;a_2&amp;lt;&amp;hellip;&amp;lt;a_n$$，那么组成面值$$m$$共有多少种可能的情况？&lt;/p&gt;
&lt;p&gt;按照一般找钱的顺序，我们从大钱开始考虑，这样剩下的面值才能比较迅速的减小。&lt;/p&gt;
&lt;h2 id="1递推式1"&gt;1.递推式1&lt;/h2&gt;
&lt;p&gt;考虑美分的情况，假设我们要组成面值101，记组合数为f(101)，如果使用了一个25分的，那么剩下的情况数应该是f(76)，但是注意，这个f(76)已经不能使用25分的硬币了，简单起见，我们把硬币种类编号引入组合数，当可以用编号1~k时，组合数记为f(m,k)，所以上面的分析可以记为组合数f(101,5)，使用了一个25分时，剩下的情况数为f(76, 4)，针对25美分的使用，可以得到下表&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;25分个数&lt;/th&gt;
&lt;th&gt;剩余&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;f(101, 4)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;f(76, 4)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;f(51, 4)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;f(26, 4)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;f(1, 4)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;将第二列的数字相加，就得到了结果。现在要求的问题简化了，只需要考虑面值为1，2，5，10的情况，同样的以f(76, 4)为例，可以化简为f(76,3),f(66,3)&amp;hellip;f(6,3)，这样递归迭代下去，我们最终要解决的子问题是f(m,1)，用一种面值来组成m，显然，只需要面值m能被$$a_1$$整除即可，由此结束了递归迭代。&lt;/p&gt;
&lt;p&gt;$$ f(m, n) = f(m, n-1) + f(m-a_n, n-1) + &amp;hellip;+f(m%a_n, n-1)$$&lt;/p&gt;
&lt;p&gt;按照这种思路，直接写成Java代码如下:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;countCoins&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; n, &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;&lt;span style="color:#f92672"&gt;[]&lt;/span&gt; coins) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;(n &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; 0) &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; 0;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; countCoins(n, coins.&lt;span style="color:#a6e22e"&gt;length&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; 1, coins);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;countCoins&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; n, &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; level, &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt;&lt;span style="color:#f92672"&gt;[]&lt;/span&gt; coins) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;(level &lt;span style="color:#f92672"&gt;==&lt;/span&gt; 0) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; n &lt;span style="color:#f92672"&gt;%&lt;/span&gt; coins&lt;span style="color:#f92672"&gt;[&lt;/span&gt;0&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; 0 &lt;span style="color:#f92672"&gt;?&lt;/span&gt; 1 : 0;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; ways &lt;span style="color:#f92672"&gt;=&lt;/span&gt; 0;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; 0; i&lt;span style="color:#f92672"&gt;*&lt;/span&gt;coins&lt;span style="color:#f92672"&gt;[&lt;/span&gt;level&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt; n; i&lt;span style="color:#f92672"&gt;++&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ways &lt;span style="color:#f92672"&gt;+=&lt;/span&gt; countCoins(n&lt;span style="color:#f92672"&gt;-&lt;/span&gt;i&lt;span style="color:#f92672"&gt;*&lt;/span&gt;coins&lt;span style="color:#f92672"&gt;[&lt;/span&gt;level&lt;span style="color:#f92672"&gt;]&lt;/span&gt;, level&lt;span style="color:#f92672"&gt;-&lt;/span&gt;1, coins);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; ways;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="2-递推式1的动态规划"&gt;2. 递推式1的动态规划&lt;/h2&gt;
&lt;p&gt;在1中，我们通过不断的减去大的硬币面值，求解各个子问题，得到最终的结果，不难发现，这些子问题存在很多重复，比如考虑如下的计算路径：f(101, 5)-&amp;gt;f(76, 4)-&amp;gt;f(16,3)&amp;hellip;和f(101, 5)-&amp;gt;f(26, 4)-&amp;gt;f(16,3)&amp;hellip;后面的计算时完全重合的，因此，如果把这些计算结果缓存起来，可以大大提高计算的速度，这就是动态规划的思想。我们需要建立如下的一张表，以下考虑计算f(6,5)&lt;/p&gt;</description><content:encoded><![CDATA[<p>假设我们有面值为1，2，5，10，25的硬币，那么组成面值$$m$$共有多少种可能的情况？这是美分的情况。</p>
<p>一般的假设我们有面值为$$(a_1,a_2,&hellip;a_n)  $$的硬币,其中$$ a_1&lt;a_2&lt;&hellip;&lt;a_n$$，那么组成面值$$m$$共有多少种可能的情况？</p>
<p>按照一般找钱的顺序，我们从大钱开始考虑，这样剩下的面值才能比较迅速的减小。</p>
<h2 id="1递推式1">1.递推式1</h2>
<p>考虑美分的情况，假设我们要组成面值101，记组合数为f(101)，如果使用了一个25分的，那么剩下的情况数应该是f(76)，但是注意，这个f(76)已经不能使用25分的硬币了，简单起见，我们把硬币种类编号引入组合数，当可以用编号1~k时，组合数记为f(m,k)，所以上面的分析可以记为组合数f(101,5)，使用了一个25分时，剩下的情况数为f(76, 4)，针对25美分的使用，可以得到下表</p>
<table>
  <thead>
      <tr>
          <th>25分个数</th>
          <th>剩余</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>0</td>
          <td>f(101, 4)</td>
      </tr>
      <tr>
          <td>1</td>
          <td>f(76, 4)</td>
      </tr>
      <tr>
          <td>2</td>
          <td>f(51, 4)</td>
      </tr>
      <tr>
          <td>3</td>
          <td>f(26, 4)</td>
      </tr>
      <tr>
          <td>4</td>
          <td>f(1, 4)</td>
      </tr>
  </tbody>
</table>
<p>将第二列的数字相加，就得到了结果。现在要求的问题简化了，只需要考虑面值为1，2，5，10的情况，同样的以f(76, 4)为例，可以化简为f(76,3),f(66,3)&hellip;f(6,3)，这样递归迭代下去，我们最终要解决的子问题是f(m,1)，用一种面值来组成m，显然，只需要面值m能被$$a_1$$整除即可，由此结束了递归迭代。</p>
<p>$$ f(m, n) = f(m, n-1)  + f(m-a_n, n-1) + &hellip;+f(m%a_n, n-1)$$</p>
<p>按照这种思路，直接写成Java代码如下:</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">countCoins</span>(<span style="color:#66d9ef">int</span> n, <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> coins) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(n <span style="color:#f92672">&lt;</span> 0) <span style="color:#66d9ef">return</span> 0;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> countCoins(n, coins.<span style="color:#a6e22e">length</span> <span style="color:#f92672">-</span> 1, coins);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">countCoins</span>(<span style="color:#66d9ef">int</span> n, <span style="color:#66d9ef">int</span> level, <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> coins) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(level <span style="color:#f92672">==</span> 0) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> n <span style="color:#f92672">%</span> coins<span style="color:#f92672">[</span>0<span style="color:#f92672">]</span> <span style="color:#f92672">==</span> 0 <span style="color:#f92672">?</span> 1 : 0;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> ways <span style="color:#f92672">=</span> 0;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i<span style="color:#f92672">*</span>coins<span style="color:#f92672">[</span>level<span style="color:#f92672">]</span> <span style="color:#f92672">&lt;=</span> n; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            ways <span style="color:#f92672">+=</span> countCoins(n<span style="color:#f92672">-</span>i<span style="color:#f92672">*</span>coins<span style="color:#f92672">[</span>level<span style="color:#f92672">]</span>, level<span style="color:#f92672">-</span>1, coins);
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> ways;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<h2 id="2-递推式1的动态规划">2. 递推式1的动态规划</h2>
<p>在1中，我们通过不断的减去大的硬币面值，求解各个子问题，得到最终的结果，不难发现，这些子问题存在很多重复，比如考虑如下的计算路径：f(101, 5)-&gt;f(76, 4)-&gt;f(16,3)&hellip;和f(101, 5)-&gt;f(26, 4)-&gt;f(16,3)&hellip;后面的计算时完全重合的，因此，如果把这些计算结果缓存起来，可以大大提高计算的速度，这就是动态规划的思想。我们需要建立如下的一张表，以下考虑计算f(6,5)</p>
<table>
  <thead>
      <tr>
          <th></th>
          <th>0</th>
          <th>1</th>
          <th>2</th>
          <th>3</th>
          <th>4</th>
          <th>5</th>
          <th>6</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>1</td>
          <td>1</td>
          <td>1</td>
          <td>1</td>
          <td>1</td>
          <td>1</td>
          <td>1</td>
      </tr>
      <tr>
          <td>2</td>
          <td>1</td>
          <td>1</td>
          <td>2</td>
          <td>2</td>
          <td>3</td>
          <td>3</td>
          <td>4</td>
      </tr>
      <tr>
          <td>5</td>
          <td>1</td>
          <td>1</td>
          <td>2</td>
          <td>2</td>
          <td>3</td>
          <td>4</td>
          <td>5</td>
      </tr>
      <tr>
          <td>10</td>
          <td>1</td>
          <td>1</td>
          <td>2</td>
          <td>2</td>
          <td>3</td>
          <td>4</td>
          <td>5</td>
      </tr>
      <tr>
          <td>25</td>
          <td>1</td>
          <td>1</td>
          <td>2</td>
          <td>2</td>
          <td>3</td>
          <td>4</td>
          <td>5</td>
      </tr>
  </tbody>
</table>
<p>注意到我们的递推式，每次分解出很多项，那么在动态规划填表时，也就需要很多项目相加才行。动态规划时，先填满第一行，再根据递推式计算第二行，直到计算最后一行。</p>
<p>由此得到Java代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">countCoins</span>(<span style="color:#66d9ef">int</span> n, <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> coins) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(n <span style="color:#f92672">&lt;</span> 0) <span style="color:#66d9ef">return</span> 0;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span><span style="color:#f92672">[][]</span> ways <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[</span>coins.<span style="color:#a6e22e">length</span><span style="color:#f92672">][</span>n <span style="color:#f92672">+</span> 1<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> 0; j <span style="color:#f92672">&lt;=</span> n; j<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            ways<span style="color:#f92672">[</span>0<span style="color:#f92672">][</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> j <span style="color:#f92672">%</span> coins<span style="color:#f92672">[</span>0<span style="color:#f92672">]</span> <span style="color:#f92672">==</span> 0 <span style="color:#f92672">?</span> 1 : 0;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 1; i <span style="color:#f92672">&lt;</span> coins.<span style="color:#a6e22e">length</span>; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> 0; j <span style="color:#f92672">&lt;=</span> n; j<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span>(j <span style="color:#f92672">&lt;</span> coins<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>) {
</span></span><span style="display:flex;"><span>                    ways<span style="color:#f92672">[</span>i<span style="color:#f92672">][</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> ways<span style="color:#f92672">[</span>i<span style="color:#f92672">-</span>1<span style="color:#f92672">][</span>j<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>                    <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> k <span style="color:#f92672">=</span> 0; k<span style="color:#f92672">*</span>coins<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">&lt;=</span> j; k<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>                        ways<span style="color:#f92672">[</span>i<span style="color:#f92672">][</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">+=</span>  ways<span style="color:#f92672">[</span>i<span style="color:#f92672">-</span>1<span style="color:#f92672">][</span>j<span style="color:#f92672">-</span>k<span style="color:#f92672">*</span>coins<span style="color:#f92672">[</span>i<span style="color:#f92672">]]</span>;
</span></span><span style="display:flex;"><span>                    }
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> ways<span style="color:#f92672">[</span>coins.<span style="color:#a6e22e">length</span> <span style="color:#f92672">-</span> 1<span style="color:#f92672">][</span>n<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<p>注意到最后一行其实只需要计算最后一个元素。（因为它只跟前一行相关），所以上述代码还可以修改节约时间，不过代码会变得不太美观，这里就不写了。</p>
<h2 id="3-递推式2及其动态规划">3 递推式2及其动态规划</h2>
<p>我们发现，递推式1中，一项被分解成多项，导致计算过程中做了相当多的加法，能不能简化一下呢？</p>
<p>还是考虑f(101,5)，我们可以这样考虑，首先不使用25美分，情况数为f(101,4)，其次是使用25美分的情况，那么至少要使用一个25美分，如果去掉这个25美分，则相当于剩下的76美分，既可以使用25美分，也可以不用，实际上就是f(76,5)，由此得到递推关系$$ f(m, n) = f(m-a_n, n) + f(m, n-1)$$，这样在动态规划填表时，每次取上一行的数与本行之前相距$$a_n$$的数相加。注意当$$m&lt;a_n时，f(m, n) = f(m, n-1)$$。</p>
<p>由此得到动态规划的代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">countCoins</span>(<span style="color:#66d9ef">int</span> n, <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> coins) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(n <span style="color:#f92672">&lt;</span> 0) <span style="color:#66d9ef">return</span> 0;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span><span style="color:#f92672">[][]</span> ways <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[</span>coins.<span style="color:#a6e22e">length</span><span style="color:#f92672">][</span>n <span style="color:#f92672">+</span> 1<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> 0; j <span style="color:#f92672">&lt;=</span> n; j<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            ways<span style="color:#f92672">[</span>0<span style="color:#f92672">][</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> j <span style="color:#f92672">%</span> coins<span style="color:#f92672">[</span>0<span style="color:#f92672">]</span> <span style="color:#f92672">==</span> 0 <span style="color:#f92672">?</span> 1 : 0;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 1; i <span style="color:#f92672">&lt;</span> coins.<span style="color:#a6e22e">length</span>; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> 0; j <span style="color:#f92672">&lt;=</span> n; j<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span>(j <span style="color:#f92672">&lt;</span> coins<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>) {
</span></span><span style="display:flex;"><span>                    ways<span style="color:#f92672">[</span>i<span style="color:#f92672">][</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> ways<span style="color:#f92672">[</span>i<span style="color:#f92672">-</span>1<span style="color:#f92672">][</span>j<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>                    ways<span style="color:#f92672">[</span>i<span style="color:#f92672">][</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> ways<span style="color:#f92672">[</span>i<span style="color:#f92672">-</span>1<span style="color:#f92672">][</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">+</span> ways<span style="color:#f92672">[</span>i<span style="color:#f92672">][</span>j<span style="color:#f92672">-</span>coins<span style="color:#f92672">[</span>i<span style="color:#f92672">]]</span>;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> ways<span style="color:#f92672">[</span>coins.<span style="color:#a6e22e">length</span> <span style="color:#f92672">-</span> 1<span style="color:#f92672">][</span>n<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<h2 id="4-递推式2的简化">4 递推式2的简化</h2>
<p>仔细考察我们填表的过程，填第二行时，左边的较小元素和第一行一样，右边较大的元素在第一行的基础上加上本行较小的一个元素，所以其实只需要存储一行元素就行了，计算 $$f(m, n)$$时， $$f(m-a_n, n)$$在左边已经计算出来了，而$$f(m, n-1)$$直接使用自身存储便可。由此得到更加简化的动态规划代码：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">countCoins</span>(<span style="color:#66d9ef">int</span> n, <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> coins) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(n <span style="color:#f92672">&lt;</span> 0) <span style="color:#66d9ef">return</span> 0;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> ways <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[</span>n <span style="color:#f92672">+</span> 1<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> 0; j <span style="color:#f92672">&lt;=</span> n; j<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            ways<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> j <span style="color:#f92672">%</span> coins<span style="color:#f92672">[</span>0<span style="color:#f92672">]</span> <span style="color:#f92672">==</span> 0 <span style="color:#f92672">?</span> 1 : 0;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 1; i <span style="color:#f92672">&lt;</span> coins.<span style="color:#a6e22e">length</span>; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> coins<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>; j <span style="color:#f92672">&lt;=</span> n; j<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>                ways<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">+=</span> ways<span style="color:#f92672">[</span>j<span style="color:#f92672">-</span>coins<span style="color:#f92672">[</span>i<span style="color:#f92672">]]</span>;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> ways<span style="color:#f92672">[</span>n<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<p>考虑第一行，如果设置ways[0] = 1，j&lt;coins[0]时，ways[j] = 0,那么第一行同样可以用递推式ways[j] += ways[j-coins[i]]得到。代码可进一步简化如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">countCoins</span>(<span style="color:#66d9ef">int</span> n, <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> coins) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(n <span style="color:#f92672">&lt;</span> 0) <span style="color:#66d9ef">return</span> 0;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> ways <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[</span>n<span style="color:#f92672">+</span>1<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        ways<span style="color:#f92672">[</span>0<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> 1;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i <span style="color:#f92672">&lt;</span> coins.<span style="color:#a6e22e">length</span>; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> coins<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>; j <span style="color:#f92672">&lt;=</span> n; j<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>                ways<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> ways<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">+</span> ways<span style="color:#f92672">[</span>j<span style="color:#f92672">-</span>coins<span style="color:#f92672">[</span>i<span style="color:#f92672">]]</span>;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> ways<span style="color:#f92672">[</span>n<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
]]></content:encoded><category>coding</category><category domain="tags">算法</category><category domain="tags">动态规划</category></item><item><title>全排列生成算法实现</title><link>https://yifeitao.com/permutation-generation/</link><pubDate>Mon, 24 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/permutation-generation/</guid><description>&lt;p&gt;我们知道n个相异元素的全排列种数为n!，那么由程序如何生成n个相异元素的排列呢，对此问题的研究很多，本文首先用Java实现了《算法设计与分析基础》一书中4.3节的三个算法。&lt;/p&gt;</description><content:encoded><![CDATA[<p>我们知道n个相异元素的全排列种数为n!，那么由程序如何生成n个相异元素的排列呢，对此问题的研究很多，本文首先用Java实现了《算法设计与分析基础》一书中4.3节的三个算法。</p>
<h2 id="1-插入法">1 插入法</h2>
<p>这种算法最直观，基于排列的递推定义。符合所谓减治法的思想，或者说是数学归纳法的思想，如果n-1个元素已经排好，我们只需要把第n个元素插入这些排列中所有可能的位置即可，每个元素有n个位置可以插入，刚好是(n-1)!*n=n!种情况。如果插入的时候，方向先从右到左，再从左到右循环，那么每两个相邻的排列将只有最小的差异，即只有某两个相邻元素相异。比如已经有12,21则12从右到左插入3，21从左到右插入3，最终得到123,123,312,321,231,213。具体的Java代码如下，这是一个递归算法。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> <span style="color:#a6e22e">getPermutations</span>(<span style="color:#66d9ef">int</span> n) {
</span></span><span style="display:flex;"><span>        ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> permutations <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ArrayList<span style="color:#f92672">&lt;&gt;</span>();
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(n <span style="color:#f92672">&lt;=</span> 0) <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(n <span style="color:#f92672">==</span> 1) {
</span></span><span style="display:flex;"><span>            permutations.<span style="color:#a6e22e">add</span>( <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span>{1});
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> remainders <span style="color:#f92672">=</span> getPermutations(n<span style="color:#f92672">-</span>1);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i <span style="color:#f92672">&lt;</span> remainders.<span style="color:#a6e22e">size</span>(); i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> remainder <span style="color:#f92672">=</span> remainders.<span style="color:#a6e22e">get</span>(i);
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> 0; j <span style="color:#f92672">&lt;</span> n; j<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> permutation <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[</span>n<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span>(i <span style="color:#f92672">%</span> 2 <span style="color:#f92672">==</span>0) {<span style="color:#75715e">//insert from right to left</span>
</span></span><span style="display:flex;"><span>                    System.<span style="color:#a6e22e">arraycopy</span>(remainder, 0, permutation, 0, n <span style="color:#f92672">-</span> 1<span style="color:#f92672">-</span> j);
</span></span><span style="display:flex;"><span>                    permutation<span style="color:#f92672">[</span>n <span style="color:#f92672">-</span> 1 <span style="color:#f92672">-</span> j<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> n;
</span></span><span style="display:flex;"><span>                    System.<span style="color:#a6e22e">arraycopy</span>(remainder, n <span style="color:#f92672">-</span> 1 <span style="color:#f92672">-</span> j, permutation, n <span style="color:#f92672">-</span> j, j);
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">else</span> {<span style="color:#75715e">//inset from left to right</span>
</span></span><span style="display:flex;"><span>                    System.<span style="color:#a6e22e">arraycopy</span>(remainder, 0, permutation, 0, j);
</span></span><span style="display:flex;"><span>                    permutation<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> n;
</span></span><span style="display:flex;"><span>                    System.<span style="color:#a6e22e">arraycopy</span>(remainder, j, permutation, j <span style="color:#f92672">+</span> 1, n <span style="color:#f92672">-</span> 1<span style="color:#f92672">-</span> j);
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>                permutations.<span style="color:#a6e22e">add</span>(permutation);
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>	}</span></span></code></pre></div>
<h2 id="2-johnsontrott算法">2 JohnsonTrott算法</h2>
<p>在Johnson-Trotter算法中，每次循环都进行一次满足条件的相邻元素的交换，直到不存在满足条件的可交换的元素，此时说明所有排列的情况均已输出，算法结束。</p>
<p>具体过程如下：</p>
<ol>
<li>初始化所有元素的移动方向为左，输出序列本身</li>
<li>移动最大的可移动的元素(当元素移动方向上的元素比自己小时，才能移动)</li>
<li>反转所有比移动元素大的所有元素的移动方向</li>
<li>重复2~3步，直到不能移动为止</li>
</ol>
<h3 id="具体例子">具体例子</h3>
<p>上面的算法流程有些抽象，现在举个例子来加深理解。假设现在要计算$${1,2,3}$$所有排列。首先是将所有元素的移动方向为标记为向左，我们可以表示成这样$${\overleftarrow{1},\overleftarrow{2},\overleftarrow{3}}$$，然后根据算法流程中的步骤2，移动最大的可移动元素。这里的可移动元素是指在其移动方向上的相邻元素比自己小时，例如$$\overleftarrow{2},\overleftarrow{3}$$都是可移动元素，因为在他们的移动方向上(左移)的相邻元素:1,2分别比2,3小，而每次都只移动这些可移动元素中最大的那个项。接着，在每次交换完成之后，寻找所有比当前交换元素大的元素，将他们的移动方向反转一下。</p>
<p>下面列出$${1,2,3}$$在计算过程中所有的情况
$$
\begin{align}
&amp;{\overleftarrow{1},\overleftarrow{2},\overleftarrow{3}}\
&amp;{\overleftarrow{1},\overleftarrow{3},\overleftarrow{2}}\
&amp;{\overleftarrow{3},\overleftarrow{1},\overleftarrow{1}}\
&amp;{\overrightarrow{3},\overleftarrow{2},\overleftarrow{1}}\
&amp;{\overleftarrow{2},\overrightarrow{3},\overleftarrow{1}}\
&amp;{\overleftarrow{2},\overleftarrow{1},\overrightarrow{3}}\
\end{align}
$$</p>
<p>Java代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> <span style="color:#a6e22e">getPermutations</span>(<span style="color:#66d9ef">int</span> n) {
</span></span><span style="display:flex;"><span>        ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> permutations <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ArrayList<span style="color:#f92672">&lt;&gt;</span>();
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> (n <span style="color:#f92672">&lt;=</span> 0) <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> first <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[</span>n<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">boolean</span><span style="color:#f92672">[]</span> mobile <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">boolean</span><span style="color:#f92672">[</span>n<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i <span style="color:#f92672">&lt;</span> n; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            first<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> i <span style="color:#f92672">+</span> 1;
</span></span><span style="display:flex;"><span>            mobile<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">true</span>;<span style="color:#75715e">//true:left; false:right;</span>
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        permutations.<span style="color:#a6e22e">add</span>(first);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">while</span>(<span style="color:#66d9ef">true</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> last <span style="color:#f92672">=</span> permutations.<span style="color:#a6e22e">get</span>(permutations.<span style="color:#a6e22e">size</span>()<span style="color:#f92672">-</span>1).<span style="color:#a6e22e">clone</span>();
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span> k <span style="color:#f92672">=</span> findLargestMobile(last, mobile);
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(k <span style="color:#f92672">==</span> <span style="color:#f92672">-</span>1) <span style="color:#66d9ef">break</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span> max <span style="color:#f92672">=</span> last<span style="color:#f92672">[</span>k<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span> neighbor <span style="color:#f92672">=</span> mobile<span style="color:#f92672">[</span>k<span style="color:#f92672">]</span> <span style="color:#f92672">?</span> k <span style="color:#f92672">-</span> 1 : k <span style="color:#f92672">+</span> 1;
</span></span><span style="display:flex;"><span>            swap(last, k, neighbor);
</span></span><span style="display:flex;"><span>            swap(mobile, k, neighbor);
</span></span><span style="display:flex;"><span>            reverseLarger(last, mobile, max);
</span></span><span style="display:flex;"><span>            permutations.<span style="color:#a6e22e">add</span>(last);
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">private</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">int</span> <span style="color:#a6e22e">findLargestMobile</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> array, <span style="color:#66d9ef">boolean</span><span style="color:#f92672">[]</span> mobile) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> k <span style="color:#f92672">=</span> <span style="color:#f92672">-</span>1;<span style="color:#75715e">// -1 means can&#39;t find mobile element</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> max <span style="color:#f92672">=</span> <span style="color:#f92672">-</span>1;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i <span style="color:#f92672">&lt;</span> array.<span style="color:#a6e22e">length</span>; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> mobile<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">?</span> i <span style="color:#f92672">-</span> 1: i <span style="color:#f92672">+</span> 1;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(j <span style="color:#f92672">&lt;</span> 0 <span style="color:#f92672">||</span> j <span style="color:#f92672">&gt;=</span> array.<span style="color:#a6e22e">length</span>) <span style="color:#66d9ef">continue</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(array<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">&gt;</span> array<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">&amp;&amp;</span> array<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">&gt;</span> max) {
</span></span><span style="display:flex;"><span>                max <span style="color:#f92672">=</span> array<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>                k <span style="color:#f92672">=</span> i;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> k;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">private</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">reverseLarger</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> array, <span style="color:#66d9ef">boolean</span><span style="color:#f92672">[]</span> mobile, <span style="color:#66d9ef">int</span> max) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i <span style="color:#f92672">&lt;</span> array.<span style="color:#a6e22e">length</span>; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(array<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">&gt;</span> max) mobile<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> <span style="color:#f92672">!</span>mobile<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">private</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">swap</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> array, <span style="color:#66d9ef">int</span> i, <span style="color:#66d9ef">int</span> j) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> temp <span style="color:#f92672">=</span> array<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        array<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> array<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        array<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> temp;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">private</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">swap</span>(<span style="color:#66d9ef">boolean</span><span style="color:#f92672">[]</span> array, <span style="color:#66d9ef">int</span> i, <span style="color:#66d9ef">int</span> j) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">boolean</span> temp <span style="color:#f92672">=</span> array<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        array<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> array<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        array<span style="color:#f92672">[</span>j<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> temp;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<h2 id="3-字典序生成法">3 字典序生成法</h2>
<p>字典序生成法在当前已经生成的排列上寻找下一个字典序的排列：</p>
<ol>
<li>找到最长的递减序列后缀，记这个序列的前一个元素为i，如果找不到i，则证明已经生成了最后一个完全倒序的排列，生成完毕。</li>
<li>在前述后缀中，找到比元素i大的最小元素j，并交换i和j；</li>
<li>将后缀逆序排列。</li>
<li>重复1到3。</li>
</ol>
<p>比如排列123654，首先找到后缀654，在找到中间最小大于3的4，交换得到124653，然后将后缀逆序得到124356,又如排列123645，找到后缀5，交换得到123654，后缀只有一个，逆序后不变仍未123654。</p>
<p>具体的Java代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> <span style="color:#a6e22e">getPermutations</span>(<span style="color:#66d9ef">int</span> n) {
</span></span><span style="display:flex;"><span>        ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> permutations <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ArrayList<span style="color:#f92672">&lt;&gt;</span>();
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(n <span style="color:#f92672">&lt;=</span> 0) <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> first <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[</span>n<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i <span style="color:#f92672">&lt;</span> n; i<span style="color:#f92672">++</span>) first<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> i <span style="color:#f92672">+</span> 1;
</span></span><span style="display:flex;"><span>        permutations.<span style="color:#a6e22e">add</span>(first);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">while</span>(<span style="color:#66d9ef">true</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> last <span style="color:#f92672">=</span> permutations.<span style="color:#a6e22e">get</span>(permutations.<span style="color:#a6e22e">size</span>()<span style="color:#f92672">-</span>1).<span style="color:#a6e22e">clone</span>();
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> n <span style="color:#f92672">-</span> 1;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">while</span>(i <span style="color:#f92672">&gt;</span> 0) {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span>(last<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">&gt;</span> last<span style="color:#f92672">[</span>i<span style="color:#f92672">-</span>1<span style="color:#f92672">]</span>) {
</span></span><span style="display:flex;"><span>                    <span style="color:#66d9ef">break</span>;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>                i<span style="color:#f92672">--</span>;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(i<span style="color:#f92672">==</span>0) <span style="color:#66d9ef">break</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> n <span style="color:#f92672">-</span> 1;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">while</span>(j <span style="color:#f92672">&gt;=</span> i) {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">if</span>(last<span style="color:#f92672">[</span>j<span style="color:#f92672">]&gt;</span>last<span style="color:#f92672">[</span>i<span style="color:#f92672">-</span>1<span style="color:#f92672">]</span>) {
</span></span><span style="display:flex;"><span>                    <span style="color:#66d9ef">break</span>;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>                j<span style="color:#f92672">--</span>;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>            swap(last, i<span style="color:#f92672">-</span>1, j);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span> k <span style="color:#f92672">=</span> n <span style="color:#f92672">-</span> 1;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">while</span>(i <span style="color:#f92672">&lt;</span> k) {
</span></span><span style="display:flex;"><span>                swap(last, i, k);
</span></span><span style="display:flex;"><span>                i<span style="color:#f92672">++</span>;
</span></span><span style="display:flex;"><span>                k<span style="color:#f92672">--</span>;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>            permutations.<span style="color:#a6e22e">add</span>(last);
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<h2 id="4-序数法">4 序数法</h2>
<p>这个方法把n!个排列与0<del>n!-1之间的数一一对应起来，这样，我们就可以按照0</del>n!-1的次序，逐一生成相关的排列。这个对应的关键在于0~n!-1之间的数m，可以用如下的方式表示：
$$m=a_{n-1}\cdot (n-1)!+a_{n-2}\cdot (n-2)!+&hellip;+a_1\cdot 1!$$,其中$$0\leq a_i\leq i$$，</p>
<p>故m对应序列$$(a_{n-1}, a_{n-2},&hellip;a_1)$$，现在再把这个序列和排列一一对应起来，n-1位的序列对应n位的排列。</p>
<p>$$a_i$$ 表示排列p中的数i+1所在位置的右边比它小的数的个数。比如对于排列p=4213，4,3,2的逆序数分别为3，0，1，由此对应为$$(a_2,a_1,a_0)$$，反过来呢，如果知道了逆序数$$(a_2,a_1,a_0)==(3,0,1)$$,也可以一一恢复出排列来。比4小的有3个，4只能放最左边，比3小的为0个，3只能放最右边，比2小的一个，2放第二个位置，剩下的放1，故为4213。</p>
<table>
  <thead>
      <tr>
          <th>$$N$$</th>
          <th>$$a_3a_2a_1$$</th>
          <th>$$p_1p_2p_3p_4$$</th>
          <th>$$N$$</th>
          <th>$$a_3a_2a_1$$</th>
          <th>$$p_1p_2p_3p_4$$</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>0</td>
          <td>000</td>
          <td>1234</td>
          <td>12</td>
          <td>200</td>
          <td>1423</td>
      </tr>
      <tr>
          <td>1</td>
          <td>001</td>
          <td>2134</td>
          <td>13</td>
          <td>201</td>
          <td>2413</td>
      </tr>
      <tr>
          <td>2</td>
          <td>010</td>
          <td>1324</td>
          <td>14</td>
          <td>210</td>
          <td>1432</td>
      </tr>
      <tr>
          <td>3</td>
          <td>011</td>
          <td>2314</td>
          <td>15</td>
          <td>211</td>
          <td>2431</td>
      </tr>
      <tr>
          <td>4</td>
          <td>020</td>
          <td>3124</td>
          <td>16</td>
          <td>220</td>
          <td>3412</td>
      </tr>
      <tr>
          <td>5</td>
          <td>021</td>
          <td>3214</td>
          <td>17</td>
          <td>221</td>
          <td>3421</td>
      </tr>
      <tr>
          <td>6</td>
          <td>100</td>
          <td>1243</td>
          <td>18</td>
          <td>300</td>
          <td>4123</td>
      </tr>
      <tr>
          <td>7</td>
          <td>101</td>
          <td>2143</td>
          <td>19</td>
          <td>301</td>
          <td>4213</td>
      </tr>
      <tr>
          <td>8</td>
          <td>110</td>
          <td>1342</td>
          <td>20</td>
          <td>310</td>
          <td>4132</td>
      </tr>
      <tr>
          <td>9</td>
          <td>111</td>
          <td>2341</td>
          <td>21</td>
          <td>311</td>
          <td>4231</td>
      </tr>
      <tr>
          <td>10</td>
          <td>120</td>
          <td>3142</td>
          <td>22</td>
          <td>320</td>
          <td>4312</td>
      </tr>
      <tr>
          <td>11</td>
          <td>121</td>
          <td>3241</td>
          <td>23</td>
          <td>321</td>
          <td>4321</td>
      </tr>
  </tbody>
</table>
<p>Java代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> <span style="color:#a6e22e">getPermutations</span>(<span style="color:#66d9ef">int</span> n) {
</span></span><span style="display:flex;"><span>        ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> permutations <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ArrayList<span style="color:#f92672">&lt;&gt;</span>();
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> (n <span style="color:#f92672">&lt;=</span> 0) <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> factorials <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[</span>n<span style="color:#f92672">+</span>1<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        factorials<span style="color:#f92672">[</span>0<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> 1;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 1; i <span style="color:#f92672">&lt;=</span>n; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            factorials<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> i <span style="color:#f92672">*</span> factorials<span style="color:#f92672">[</span>i <span style="color:#f92672">-</span> 1<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        }<span style="color:#75715e">// init factorial array</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> m <span style="color:#f92672">=</span> 0; m <span style="color:#f92672">&lt;</span> factorials<span style="color:#f92672">[</span>n<span style="color:#f92672">]</span>; m<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span> remainder <span style="color:#f92672">=</span> m;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> permutation <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[</span>n<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> n<span style="color:#f92672">-</span>1; i <span style="color:#f92672">&gt;=</span>0; i<span style="color:#f92672">--</span>) {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">int</span> count <span style="color:#f92672">=</span> remainder <span style="color:#f92672">/</span> factorials<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>                remainder <span style="color:#f92672">=</span> remainder <span style="color:#f92672">%</span> factorials<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>                setPosition(permutation, count, i <span style="color:#f92672">+</span> 1);
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>            permutations.<span style="color:#a6e22e">add</span>(permutation);
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">private</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">setPosition</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> permutation, <span style="color:#66d9ef">int</span> count, <span style="color:#66d9ef">int</span> num) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> zeros <span style="color:#f92672">=</span> 0;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> permutation.<span style="color:#a6e22e">length</span> <span style="color:#f92672">-</span> 1; i <span style="color:#f92672">&gt;=</span>0; i<span style="color:#f92672">--</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(permutation<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">==</span> 0) zeros<span style="color:#f92672">++</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(zeros <span style="color:#f92672">==</span> count <span style="color:#f92672">+</span> 1) {
</span></span><span style="display:flex;"><span>                permutation<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> num;
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">break</span>;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<h2 id="5-轮转法">5 轮转法</h2>
<p>基准序列$$p_1p_2&hellip;p_{n-1}p_n$$，先逐步生成以$$p_1$$开头的所有排列：</p>
<ol>
<li>先生成以$$p_1p_2&hellip;p_{n-2}$$开头的所有排列$$p_1p_2&hellip;p_{n-2}p_{n-1}p_{n}$$和$$p_1p_2&hellip;p_{n-2}p_{n}p_{n-1}$$</li>
<li>再生成以$$p_1p_2&hellip;p_{n-3}$$打头的排列，除了前述2个排列外，再将其后三位从左至右轮转2次，得到4个新排列，一共6个排列；</li>
<li>再生成以$$p_1p_2&hellip;p_{n-4}$$打头的排列，除了前述6个排列外，再将其后四位从左至右轮转3次，得到18个新排列，一共24个排列；</li>
<li>依次类推，一直到生成以$$p_1$$开头的所有排列为止。</li>
</ol>
<p>然后将基准序列从左到右轮转一次，生成以$$p_2$$开头的所有排列，依次类推，直到生成以$$p_n$$开头的所有排列。</p>
<p>java代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> <span style="color:#a6e22e">getPermutations</span>(<span style="color:#66d9ef">int</span> n) {
</span></span><span style="display:flex;"><span>        ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> permutations <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ArrayList<span style="color:#f92672">&lt;&gt;</span>();
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> (n <span style="color:#f92672">&lt;=</span> 0) <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> first <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[</span>n<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i <span style="color:#f92672">&lt;</span> n; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            first<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> i <span style="color:#f92672">+</span> 1;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span> (<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i <span style="color:#f92672">&lt;</span> n; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(i <span style="color:#f92672">&gt;</span> 0) {
</span></span><span style="display:flex;"><span>                rotateLeft(first, 0, n);
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> base <span style="color:#f92672">=</span> first.<span style="color:#a6e22e">clone</span>();
</span></span><span style="display:flex;"><span>            permutations.<span style="color:#a6e22e">addAll</span>(rotateBase(base));
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">private</span> <span style="color:#66d9ef">static</span> ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> <span style="color:#a6e22e">rotateBase</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> base) {
</span></span><span style="display:flex;"><span>        ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> permutations <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span>();
</span></span><span style="display:flex;"><span>        permutations.<span style="color:#a6e22e">add</span>(base);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> prefixSize <span style="color:#f92672">=</span> base.<span style="color:#a6e22e">length</span> <span style="color:#f92672">-</span> 2; prefixSize <span style="color:#f92672">&gt;=</span> 1; prefixSize<span style="color:#f92672">--</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">int</span> currentSize <span style="color:#f92672">=</span> permutations.<span style="color:#a6e22e">size</span>();
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i <span style="color:#f92672">&lt;</span> currentSize; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> last <span style="color:#f92672">=</span> permutations.<span style="color:#a6e22e">get</span>(i);
</span></span><span style="display:flex;"><span>                <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> j <span style="color:#f92672">=</span> 0; j <span style="color:#f92672">&lt;</span> base.<span style="color:#a6e22e">length</span> <span style="color:#f92672">-</span> prefixSize <span style="color:#f92672">-</span> 1; j<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>                    <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> rotated <span style="color:#f92672">=</span> last.<span style="color:#a6e22e">clone</span>();
</span></span><span style="display:flex;"><span>                    rotateLeft(rotated, prefixSize, base.<span style="color:#a6e22e">length</span>);
</span></span><span style="display:flex;"><span>                    permutations.<span style="color:#a6e22e">add</span>(rotated);
</span></span><span style="display:flex;"><span>                    last <span style="color:#f92672">=</span> rotated;
</span></span><span style="display:flex;"><span>                }
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">private</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">rotateLeft</span>(<span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> permutation, <span style="color:#66d9ef">int</span> start, <span style="color:#66d9ef">int</span> end) { 
</span></span><span style="display:flex;"><span>      <span style="color:#75715e">// rotate from left to right</span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> temp <span style="color:#f92672">=</span> permutation<span style="color:#f92672">[</span>start<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> start; i <span style="color:#f92672">&lt;</span> end <span style="color:#f92672">-</span> 1; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            permutation<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> permutation<span style="color:#f92672">[</span>i <span style="color:#f92672">+</span> 1<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        permutation<span style="color:#f92672">[</span>end<span style="color:#f92672">-</span>1<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> temp;
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<h2 id="6-回溯法">6 回溯法</h2>
<p>我们将问题形象化，假如你手里有编号为1、2、3的3张扑克牌和编号为1、2、3的三个盒子。现在需要将这3张扑克牌分别放入3个盒子里，并且每个盒子有且只有一张扑克牌。总共有几种放法呢？</p>
<p>首先你来到了1号盒子面前，你现在手里有3张扑克牌，先放哪一张好呢？很显然三者都要尝试，那就姑且约定一个顺序：每次到一个盒子面前，都先放1号，再放2号，最后放3号。于是你在一号盒子里放入了编号为1的扑克牌。来到2号盒子面前，由于之前的1号扑克牌已经不在手中，按照之前约定的顺序，你将2号牌放到了2号盒子里。3号也是同样。你又往后走当你来到第4个盒子面前，诶，没有第四个盒子，其实我们不需要第4个盒子，因为手中的扑克牌已经放完了。</p>
<p>你发现了吗？当你走到第四个盒子前的时候，已经完成了一种排列，即“1 2 3”。然而并没有到此结束，产生了一种排列之后，你需要立即返回。现在你已经退到了3号盒子面前，你需要取回之前放在3号盒子中的扑克牌，再去尝试看看还能否放别的扑克牌，从而产生一个新的排列。于是你取回了3号牌，但由于你手中只有3号牌，你只能再次退回到2号盒子面前。</p>
<p>你回到2号盒子后，收回了2号牌。现在你的手中有2张牌了，分别是2号和3号牌。按照之前的约定，现在需要往2号盒子中放3号扑克牌（上次放的是2号牌）。放好后，你来到3号盒子面前，将手中仅剩的2号牌放入了3号盒子。又来到了4号盒子面前，当然没有4号盒子。此时又产生了一个新的排列“1 3 2”。</p>
<p>接下来按照刚才的步骤去模拟，便会依次生成所有排列：“2 1 3”、“2 3 1”、“3 1 2”和“3 2 1”。</p>
<p>Java代码实现如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> <span style="color:#a6e22e">getPermutations</span>(<span style="color:#66d9ef">int</span> n) {
</span></span><span style="display:flex;"><span>        ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> permutations <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> ArrayList<span style="color:#f92672">&lt;&gt;</span>();
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span> (n <span style="color:#f92672">&lt;=</span> 0) <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">boolean</span><span style="color:#f92672">[]</span> visited <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">boolean</span><span style="color:#f92672">[</span>n<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> current <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">int</span><span style="color:#f92672">[</span>n<span style="color:#f92672">]</span>;
</span></span><span style="display:flex;"><span>        dfs(permutations, current, visited, 0);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> permutations;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">private</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">dfs</span>(ArrayList<span style="color:#f92672">&lt;</span><span style="color:#66d9ef">int</span><span style="color:#f92672">[]&gt;</span> permutations, <span style="color:#66d9ef">int</span><span style="color:#f92672">[]</span> current, <span style="color:#66d9ef">boolean</span><span style="color:#f92672">[]</span> visited, <span style="color:#66d9ef">int</span> step) {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">int</span> n <span style="color:#f92672">=</span> current.<span style="color:#a6e22e">length</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(step <span style="color:#f92672">==</span> n) {
</span></span><span style="display:flex;"><span>            permutations.<span style="color:#a6e22e">add</span>(current.<span style="color:#a6e22e">clone</span>());
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">return</span>;
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span> 0; i <span style="color:#f92672">&lt;</span> n; i<span style="color:#f92672">++</span>) {
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span>(<span style="color:#f92672">!</span>visited<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span>) {
</span></span><span style="display:flex;"><span>                current<span style="color:#f92672">[</span>step<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> i <span style="color:#f92672">+</span> 1;
</span></span><span style="display:flex;"><span>                visited<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">true</span>;
</span></span><span style="display:flex;"><span>                dfs(permutations, current, visited, step <span style="color:#f92672">+</span> 1);
</span></span><span style="display:flex;"><span>                visited<span style="color:#f92672">[</span>i<span style="color:#f92672">]</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">false</span>;
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }</span></span></code></pre></div>
<p>当然，如果改用栈，也可以变成非递归的版本。</p>
<h2 id="后记">后记</h2>
<p>对一个问题用不同的算法解决，可以综合复习各种算法思路。</p>
<p>另外重要的一点就是，如果看过一个算法没有写代码实现过，很可能会有一些没有真正理解的细节存在。</p>
<p>如果以后再发现好的算法，还会再补充。</p>]]></content:encoded><category>coding</category><category domain="tags">算法</category><category domain="tags">编程</category></item><item><title>我的PC软件列表</title><link>https://yifeitao.com/my-pc-software-list/</link><pubDate>Sun, 23 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/my-pc-software-list/</guid><description>&lt;p&gt;我一直比较喜欢试用各种软件，也喜欢看别人分享的软件推荐的文章，总的来说，我是一个工具控。现在工作告一段落，也想借这闲暇时间把自己目前正在使用的软件总结一下，一是备忘，二是分享，三是留待一两年后再看，什么变了，什么没变。&lt;/p&gt;
&lt;p&gt;我目前电脑主要使用的操作系统是Windows 10，但是我倾向于使用一些可以跨平台使用的软件，这样万一我想换平台则成本比较低。下面主要列举的是软件，可能会适当涉及在线服务。&lt;/p&gt;
&lt;h4 id="1-操作系统"&gt;1 操作系统&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Windows 10 ：所有的笔记本、台式机、Surface都使用Windows 10了，一是安全起见，二来我也觉得Windows 10还是比较好用的。开启了Bash On Ubuntu On Windows子系统后，也不用装其他的命令行工具，甚至Linux系统也用得很少了。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.deepin.org/"
rel="noopener noreferrer" target="_blank" class="external"&gt;Deepin Linux&lt;/a&gt;
：现在已经过了喜欢折腾系统的阶段，觉得操作系统最好开箱即用，而深度在这一点上做到了极致，预装了很多国人必备的软件比如WPS、QQ等。虽然在主力笔记本上使用三硬盘双系统，但是其实现在用得也不多。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="2-文本与写作"&gt;2 文本与写作&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Office365 ：其实还是很喜欢Office软件，之前在工作中用得不少，现在买了Office 365服务，其实也用得不多，可能用最多是Excel了。&lt;/li&gt;
&lt;li&gt;Typora ：非常好用的markdown编辑器，这篇博客就是这么写的。&lt;/li&gt;
&lt;li&gt;Jekyll + Github Pages：这是现在的主力写作平台，在诸多静态博客生成器中选择了Jekyll，只是因为这是GitHub默认支持的，懒得折腾了。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="3-浏览器"&gt;3 浏览器&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Chrome：主力浏览器。其中重要的插件包括AdBlock、Checker Plus for Gmail™、Proxy SwitchyOmega、Save to Pocket、惠惠购物助、印象笔记·剪藏等。&lt;/li&gt;
&lt;li&gt;IE11：没办法，工行只能用IE。&lt;/li&gt;
&lt;li&gt;Firefox：现在用得比较少了，出于感情因素一直装着。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="4-通信软件"&gt;4 通信软件&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;TIM：替代QQ，没有杂七杂八的东西。&lt;/li&gt;
&lt;li&gt;微信 for Windows 10：发现都是腾讯家的。&lt;/li&gt;
&lt;li&gt;Telegram：刚刚接触，看重它的保密通信。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="5-系统增强"&gt;5 系统增强&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;BandZip：压缩软件，界面清爽，功能强大。&lt;/li&gt;
&lt;li&gt;CCleaner：垃圾清理软件。&lt;/li&gt;
&lt;li&gt;Geek Unіnstaller：一款小巧的软件卸载工具，卸载时会查找注册表与垃圾文件。&lt;/li&gt;
&lt;li&gt;RightMenuMgr：右键管理工具，可以删除一些不需要的右键项目。&lt;/li&gt;
&lt;li&gt;FastCopy：文件快速拷贝工具。&lt;/li&gt;
&lt;li&gt;f.lux：屏幕色温自动调节工具。&lt;/li&gt;
&lt;li&gt;Everything：非常强大的文件搜索工具。&lt;/li&gt;
&lt;li&gt;Wox：快速启动工具。&lt;/li&gt;
&lt;li&gt;WGestures ：全局鼠标手势工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="6-下载工具"&gt;6 下载工具&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;迅雷极速版：虽然迅雷越来越水，但是这款极速版至少还没什么广告，是个比较纯粹的下载工具。&lt;/li&gt;
&lt;li&gt;百度网盘：可能是我用的唯二的百度服务了，另外一个是百度糯米。&lt;/li&gt;
&lt;li&gt;人人影视Pro：下载人人影视的作品很方便。&lt;/li&gt;
&lt;li&gt;Resilio Sync：偶尔下点小东西，基于bittorrent原理的网盘工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="7-影音娱乐"&gt;7 影音娱乐&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;射手播放器：虽然很久不更新了，但基本上还是万能播放器，最好的是还能自动下载字幕。&lt;/li&gt;
&lt;li&gt;网易云音乐UWP：主要在网易云音乐听歌，顺便本地歌曲播放也一起搞定了。&lt;/li&gt;
&lt;li&gt;多多猫app：可以看漫画的插件式强大软件，不过我也很少看就是了。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="8-开发工具"&gt;8 开发工具&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio 2017：工作中主用Visual Studio，自己的个人电脑习惯装最新版的。宇宙第一IDE，名不虚传。配上JetBrain家的Reshaper插件，写C#简直是所向无敌。&lt;/li&gt;
&lt;li&gt;Intelij IDEA：偶尔也写写Java代码，再装上插件，写Pyhton之类的也毫无压力。&lt;/li&gt;
&lt;li&gt;Visual Studio Code：又是微软出品的强大文本编辑器，装上插件后当轻量级的IDE用，写写Python，改改网站代码之类的。&lt;/li&gt;
&lt;li&gt;Anaconda：一套完整的Python配套软件环境，包括数据分析常用的各种利器，今年开始研究机器学习，这是一个利器。&lt;/li&gt;
&lt;li&gt;Octave：Matlab的开源版，偶尔写写简单的Matlab代码，或者当计算器算算矩阵。&lt;/li&gt;
&lt;li&gt;Xshell ：远程连接VPS时很好用。&lt;/li&gt;
&lt;li&gt;GitExtension：一整套Git的解决方案，包括Git的GUI界面，以及文件比较工具等。&lt;/li&gt;
&lt;li&gt;AutoHotkey：自动化脚本工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="9-安全软件"&gt;9 安全软件&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;WIndows Defender：不爱装其他杀毒软件，基本上等于裸奔了。&lt;/li&gt;
&lt;li&gt;VeraCrypt：加密软件。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="10-阅读软件"&gt;10 阅读软件&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Kindle：偶尔也在电脑上用一下。&lt;/li&gt;
&lt;li&gt;calibre：现在所有的电子书都交给它来管理了。&lt;/li&gt;
&lt;li&gt;LightReader：轻量级的epub阅读器。&lt;/li&gt;
&lt;li&gt;福昕阅读器领鲜版：Foxit Reader的国内版，有pdf编辑功能。&lt;/li&gt;
&lt;li&gt;DrowBoard PDF：在Surface上看PDF是神器。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="11-其他"&gt;11 其他&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;印象笔记高级账户：它的特点是在各种笔记软件中比较简约均衡，Office365中的OneNote我也用，但是感觉太重了。&lt;/li&gt;
&lt;li&gt;科学上网工具：v2ray、XX-Net、Shadowsocks、Lantern，需要多种手段互为备份。&lt;/li&gt;
&lt;li&gt;ZeroNet：最近刚接触的新鲜玩意儿，基于类似比特币的原理构建的P2P内容网络。&lt;/li&gt;
&lt;li&gt;paint.net：偶尔改个图，当PhotoShop用。&lt;/li&gt;
&lt;li&gt;Zotero：收集论文资料用。&lt;/li&gt;
&lt;li&gt;Oracle VM VirtualBox：虚拟机软件。&lt;/li&gt;
&lt;li&gt;FileZilla：FTP软件。&lt;/li&gt;
&lt;li&gt;GeoGebra：一款有趣的几何作图软件。&lt;/li&gt;
&lt;li&gt;Bither：一款比特币官方推荐的国人开发的比特币钱包。&lt;/li&gt;
&lt;li&gt;TeamViewer：给家人远程桌面解决问题时用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;暂时就这些，发现有遗漏的再补充。&lt;/p&gt;</description><content:encoded><![CDATA[<p>我一直比较喜欢试用各种软件，也喜欢看别人分享的软件推荐的文章，总的来说，我是一个工具控。现在工作告一段落，也想借这闲暇时间把自己目前正在使用的软件总结一下，一是备忘，二是分享，三是留待一两年后再看，什么变了，什么没变。</p>
<p>我目前电脑主要使用的操作系统是Windows 10，但是我倾向于使用一些可以跨平台使用的软件，这样万一我想换平台则成本比较低。下面主要列举的是软件，可能会适当涉及在线服务。</p>
<h4 id="1-操作系统">1 操作系统</h4>
<ul>
<li>Windows 10 ：所有的笔记本、台式机、Surface都使用Windows 10了，一是安全起见，二来我也觉得Windows 10还是比较好用的。开启了Bash On Ubuntu On Windows子系统后，也不用装其他的命令行工具，甚至Linux系统也用得很少了。</li>
<li><a href="https://www.deepin.org/"
   rel="noopener noreferrer" target="_blank" class="external">Deepin Linux</a>
  ：现在已经过了喜欢折腾系统的阶段，觉得操作系统最好开箱即用，而深度在这一点上做到了极致，预装了很多国人必备的软件比如WPS、QQ等。虽然在主力笔记本上使用三硬盘双系统，但是其实现在用得也不多。</li>
</ul>
<h4 id="2-文本与写作">2 文本与写作</h4>
<ul>
<li>Office365 ：其实还是很喜欢Office软件，之前在工作中用得不少，现在买了Office 365服务，其实也用得不多，可能用最多是Excel了。</li>
<li>Typora ：非常好用的markdown编辑器，这篇博客就是这么写的。</li>
<li>Jekyll + Github Pages：这是现在的主力写作平台，在诸多静态博客生成器中选择了Jekyll，只是因为这是GitHub默认支持的，懒得折腾了。</li>
</ul>
<h4 id="3-浏览器">3 浏览器</h4>
<ul>
<li>Chrome：主力浏览器。其中重要的插件包括AdBlock、Checker Plus for Gmail™、Proxy SwitchyOmega、Save to Pocket、惠惠购物助、印象笔记·剪藏等。</li>
<li>IE11：没办法，工行只能用IE。</li>
<li>Firefox：现在用得比较少了，出于感情因素一直装着。</li>
</ul>
<h4 id="4-通信软件">4 通信软件</h4>
<ul>
<li>TIM：替代QQ，没有杂七杂八的东西。</li>
<li>微信 for Windows 10：发现都是腾讯家的。</li>
<li>Telegram：刚刚接触，看重它的保密通信。</li>
</ul>
<h4 id="5-系统增强">5 系统增强</h4>
<ul>
<li>BandZip：压缩软件，界面清爽，功能强大。</li>
<li>CCleaner：垃圾清理软件。</li>
<li>Geek Unіnstaller：一款小巧的软件卸载工具，卸载时会查找注册表与垃圾文件。</li>
<li>RightMenuMgr：右键管理工具，可以删除一些不需要的右键项目。</li>
<li>FastCopy：文件快速拷贝工具。</li>
<li>f.lux：屏幕色温自动调节工具。</li>
<li>Everything：非常强大的文件搜索工具。</li>
<li>Wox：快速启动工具。</li>
<li>WGestures ：全局鼠标手势工具。</li>
</ul>
<h4 id="6-下载工具">6 下载工具</h4>
<ul>
<li>迅雷极速版：虽然迅雷越来越水，但是这款极速版至少还没什么广告，是个比较纯粹的下载工具。</li>
<li>百度网盘：可能是我用的唯二的百度服务了，另外一个是百度糯米。</li>
<li>人人影视Pro：下载人人影视的作品很方便。</li>
<li>Resilio Sync：偶尔下点小东西，基于bittorrent原理的网盘工具。</li>
</ul>
<h4 id="7-影音娱乐">7 影音娱乐</h4>
<ul>
<li>射手播放器：虽然很久不更新了，但基本上还是万能播放器，最好的是还能自动下载字幕。</li>
<li>网易云音乐UWP：主要在网易云音乐听歌，顺便本地歌曲播放也一起搞定了。</li>
<li>多多猫app：可以看漫画的插件式强大软件，不过我也很少看就是了。</li>
</ul>
<h4 id="8-开发工具">8 开发工具</h4>
<ul>
<li>Visual Studio 2017：工作中主用Visual Studio，自己的个人电脑习惯装最新版的。宇宙第一IDE，名不虚传。配上JetBrain家的Reshaper插件，写C#简直是所向无敌。</li>
<li>Intelij IDEA：偶尔也写写Java代码，再装上插件，写Pyhton之类的也毫无压力。</li>
<li>Visual Studio Code：又是微软出品的强大文本编辑器，装上插件后当轻量级的IDE用，写写Python，改改网站代码之类的。</li>
<li>Anaconda：一套完整的Python配套软件环境，包括数据分析常用的各种利器，今年开始研究机器学习，这是一个利器。</li>
<li>Octave：Matlab的开源版，偶尔写写简单的Matlab代码，或者当计算器算算矩阵。</li>
<li>Xshell ：远程连接VPS时很好用。</li>
<li>GitExtension：一整套Git的解决方案，包括Git的GUI界面，以及文件比较工具等。</li>
<li>AutoHotkey：自动化脚本工具。</li>
</ul>
<h4 id="9-安全软件">9 安全软件</h4>
<ul>
<li>WIndows Defender：不爱装其他杀毒软件，基本上等于裸奔了。</li>
<li>VeraCrypt：加密软件。</li>
</ul>
<h4 id="10-阅读软件">10 阅读软件</h4>
<ul>
<li>Kindle：偶尔也在电脑上用一下。</li>
<li>calibre：现在所有的电子书都交给它来管理了。</li>
<li>LightReader：轻量级的epub阅读器。</li>
<li>福昕阅读器领鲜版：Foxit Reader的国内版，有pdf编辑功能。</li>
<li>DrowBoard PDF：在Surface上看PDF是神器。</li>
</ul>
<h4 id="11-其他">11 其他</h4>
<ul>
<li>印象笔记高级账户：它的特点是在各种笔记软件中比较简约均衡，Office365中的OneNote我也用，但是感觉太重了。</li>
<li>科学上网工具：v2ray、XX-Net、Shadowsocks、Lantern，需要多种手段互为备份。</li>
<li>ZeroNet：最近刚接触的新鲜玩意儿，基于类似比特币的原理构建的P2P内容网络。</li>
<li>paint.net：偶尔改个图，当PhotoShop用。</li>
<li>Zotero：收集论文资料用。</li>
<li>Oracle VM VirtualBox：虚拟机软件。</li>
<li>FileZilla：FTP软件。</li>
<li>GeoGebra：一款有趣的几何作图软件。</li>
<li>Bither：一款比特币官方推荐的国人开发的比特币钱包。</li>
<li>TeamViewer：给家人远程桌面解决问题时用。</li>
</ul>
<p>暂时就这些，发现有遗漏的再补充。</p>
]]></content:encoded><category>geek</category><category domain="tags">软件</category><category domain="tags">工具</category></item><item><title>复习与复盘</title><link>https://yifeitao.com/checking-and-review/</link><pubDate>Sat, 22 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/checking-and-review/</guid><description>&lt;p&gt;上小学的时候，我们就有单元复习、期中复习、期末复习等等各种复习，整个初等教育学的东西其实总量有限，反反复复学的就是那点东西，因为它要面向大多数学生的水平，而且要打牢基础。&lt;/p&gt;
&lt;p&gt;复习其实是学习新的东西中最重要的方法论之一，人的大脑会不断的选择性遗忘很多东西，只有通过复习才能巩固，而且更重要的是，大多数的学习材料是不可能第一遍就完全理解的，比如说你的第一遍学习掌握了30%，那么通过一轮复习可能达到50%，再复习一遍可能达到了80%，而复习的时候，一般不需要花第一次那么多时间，这样看来，复习的性价比是很高的。我觉得有几个原因，第一在复习的间隙，大脑得到机会重建神经网络，而不是一直处在紧绷状态，第二复习的时候由于已经掌握了很多基础，能够减轻自己理解的负担，集中精力在重点和难点上。&lt;/p&gt;
&lt;p&gt;我觉得还有一个很重要的类似复习的过程，是回顾自己的思维过程，或者绕口一点，叫思考自己的思考过程，想一想自己在做出决策的时候，获得了哪些知识和信息，有什么样的情绪在其中，当时有多大的把握，是否受到了什么人的影响。这样做的次数多了，就越来越知道做出一个决策需要调研什么知识，需要关注自己的哪些非理性的有害的情绪，怎样建立信心，如何参考他人的意见等等。就像下围棋的人要复盘一样，重要的决策都值得像下围棋一样复盘，这和复习新知识有着相似的道理，复盘的时候，我们往往已经知道了决策的结果，也从当时的情绪中抽离出来，从而获得了更加客观看待自己思维过程的上帝视角。&lt;/p&gt;
&lt;p&gt;子曰：吾日三省吾身。我以前只想到道德上的需要，想到“反省”一词，觉得有些负面，而用复盘一词，我觉得更加中性，也更能激励我的热情。&lt;/p&gt;</description><content:encoded><![CDATA[<p>上小学的时候，我们就有单元复习、期中复习、期末复习等等各种复习，整个初等教育学的东西其实总量有限，反反复复学的就是那点东西，因为它要面向大多数学生的水平，而且要打牢基础。</p>
<p>复习其实是学习新的东西中最重要的方法论之一，人的大脑会不断的选择性遗忘很多东西，只有通过复习才能巩固，而且更重要的是，大多数的学习材料是不可能第一遍就完全理解的，比如说你的第一遍学习掌握了30%，那么通过一轮复习可能达到50%，再复习一遍可能达到了80%，而复习的时候，一般不需要花第一次那么多时间，这样看来，复习的性价比是很高的。我觉得有几个原因，第一在复习的间隙，大脑得到机会重建神经网络，而不是一直处在紧绷状态，第二复习的时候由于已经掌握了很多基础，能够减轻自己理解的负担，集中精力在重点和难点上。</p>
<p>我觉得还有一个很重要的类似复习的过程，是回顾自己的思维过程，或者绕口一点，叫思考自己的思考过程，想一想自己在做出决策的时候，获得了哪些知识和信息，有什么样的情绪在其中，当时有多大的把握，是否受到了什么人的影响。这样做的次数多了，就越来越知道做出一个决策需要调研什么知识，需要关注自己的哪些非理性的有害的情绪，怎样建立信心，如何参考他人的意见等等。就像下围棋的人要复盘一样，重要的决策都值得像下围棋一样复盘，这和复习新知识有着相似的道理，复盘的时候，我们往往已经知道了决策的结果，也从当时的情绪中抽离出来，从而获得了更加客观看待自己思维过程的上帝视角。</p>
<p>子曰：吾日三省吾身。我以前只想到道德上的需要，想到“反省”一词，觉得有些负面，而用复盘一词，我觉得更加中性，也更能激励我的热情。</p>
]]></content:encoded><category>methodology</category><category domain="tags">学习</category><category domain="tags">复盘</category></item><item><title>房贷的计算</title><link>https://yifeitao.com/mortgage-caculate/</link><pubDate>Fri, 21 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/mortgage-caculate/</guid><description>&lt;p&gt;之前我讨论过分期付款的实际利率，发现比较坑。今天再来讨论一下房贷，房贷的计算有很多在线的&lt;a href="https://www.rong360.com/calculator/fangdai.html"
rel="noopener noreferrer" target="_blank" class="external"&gt;计算器&lt;/a&gt;
，输入贷款额度，利率，以及贷款年数，选择等额本息还是等额本金还款，就可以得到每月还款的数值，下面我来分析一下这里面的原理，并简单讨论一下两种还款方式的优劣，以及提前还款是否有必要。&lt;/p&gt;
&lt;h3 id="1一个例子"&gt;1.一个例子&lt;/h3&gt;
&lt;p&gt;假设贷款100万，年利率5%，贷款20年，使用前述计算器计算，得到等额本息还款每月6,599.56元，等额本金还款首月8,333.33元，以后每月递减17.36元。一般的，假设借款总额为T，年华利率为p，贷款年限为Y。&lt;/p&gt;
&lt;h3 id="2基本原理"&gt;2.基本原理&lt;/h3&gt;
&lt;p&gt;房贷的利率是很厚道的实际利率，什么叫实际利率呢？就是按你实际占用银行资金的多少来计算利息。当你按月归还了一定的本金了以后，下个月计息的本金就变少了，而不像消费贷的分期付款，计息的本金一直是不变的，才出现实际利率比名义利率高很多的情况。无论是等额本息还是等额本金还款，利率都是实际利率，而按目前的商贷利率4.90%，公积金利率3.25%，甚至还有折扣，所以房贷是普通人能拿到大额低息贷款的最重要的方式。&lt;/p&gt;
&lt;p&gt;按照实际利率，如果上一期还欠本金$$T$$，年化利率为p，本期归还本金C，则本月须还款&lt;/p&gt;
&lt;p&gt;M=C+T*p/12，下一期本金变为T-C。&lt;/p&gt;
&lt;h3 id="3等额本金还款"&gt;3.等额本金还款&lt;/h3&gt;
&lt;p&gt;等额本金还款每个月还款数额逐渐减少，看起来比较麻烦，但是在原理和数学计算上其实更简单。首先，我们把借的本金T摊分到所有的月份，为$$C=T/(Y\cdot 12)$$，则首月还款为$$M =C+T\cdot p/12$$，T=1,000,000，p=5%，Y=20时，计算得到C=4166.67元，M=8333.33元，以后每月本金减少C，相应的利息减少$$C\cdot p/12$$，为17.36元。可以看到，等额本金还款每月还的本金不变，而利息则在不断减少。&lt;/p&gt;
&lt;h3 id="4等额本息还款"&gt;4.等额本息还款&lt;/h3&gt;
&lt;p&gt;等额本息还款每个月还款数额相同，看起来比较简单，但是原理时数学计算更复杂，关键在于依然要符合2中所说的基本原理，随着待还本金的减少，每月还的利息会减少，但是要求每月归还的本金和利息加起来应该相同，这样的话，每个月归还的本金应该越来越多，才能维持这个平衡，究竟多多少，需要一个细致的计算过程。&lt;/p&gt;
&lt;p&gt;我们知道最后一个月归还本金和利息后，贷款还完了，可以据此倒推。假设最后一个月还本金$$M_n$$，则利息为$$M &lt;em&gt;n\cdot p/12$$，还款总额为$$C_n=M_n\cdot(1+p/12)$$，往前推一个月，假设这个月归还本金$M&lt;/em&gt;{n-1}$，则利息为$$(M_n+M_{n-1}))\cdot p/12$$，归还总额为$$C_{n-1}=M_{n-1}+(M_n+M_{n-1})\cdot p/12$$，由于$$C_n=C_{n-1}$$，不难推出$$M_ {n-1}= M_n/(1+p/12)$$，一般的$$C_k=M_k+\sum_{i=k}^n{M_i}\cdot p/12$$，由$$C_k=C_{k+1}$$ 得出$$M_{k+1} = M_k\cdot (1+p/12)$$&lt;/p&gt;
&lt;p&gt;所以每月还款的本金是一个等比数列，它的比值比率是$$1+p/12$$，简单起见，我们计算最后一个月的本金$$M_n$$,则&lt;/p&gt;
&lt;p&gt;$$T = \sum_{t=0}^{Y\cdot 12-1}{}M_n/(1+p/12)^t$$，则$$M_ n= T \cdot \frac {1-(1+p/12)^{-1}} {1-(1+p/12)^{-Y\cdot 12}}$$，每月还款额度为$$C=C_n=M_n\cdot(1+p/12)=T\cdot \frac {p/12} {1-(1+p/12)^{-Y\cdot 12}}$$，第一个月还款$$M_1=M_n/(1+p/12)^{Y\cdot12-1}=T\cdot \frac {p/12} {(1+p/12)^{Y\cdot 12}-1}$$，以后每月等比增加$$1+p/12$$，T=1,000,000，p=5%，Y=20，计算得到C=6,599.56，其中第一个月归还本金$$M_1$$为2432.89元，每月等比增加1.0041667倍。&lt;/p&gt;
&lt;h3 id="5-比较与提前还款"&gt;5 比较与提前还款&lt;/h3&gt;
&lt;p&gt;由于等额本金与等额本息还款方式的利率都是实际利率，所以在资金效率上，两者其实没有任何差别，网上有人分析说等额本息还款刚开始还的利息多本金少，所以提前还款相对等额本金的提前还款不划算，我认为是没有道理的，因为银行始终是按你实际占用的本金额度来收取利息的，而提前还款则是将余下的本金一次性还完。而两种贷款方式的选择，乃至是否提前还款，都不影响资金效率，那么该如何选择呢？&lt;/p&gt;
&lt;p&gt;首先比较一下等额本金和等额本息，等额本金刚开始还款多，以后还款少，其中归还本金每月固定，而等额本息始终还款数额一样，其中归还本金每月增多，选择哪种方式，取决与你的工资收入水平以及占用资金后资金的投资效率，首先，如果你现在收入少，估计以后收入会不断增长，那么为了减轻现在的负担，自然是刚开始少还一点好，这时建议等额本息，而如果你现在收入高，以后还很难说，那么建议等额本金。但是如果你虽然现在钱很多，但是你的投资收益要高于贷款利率，那么还是建议等额本息，这样你能更多更久的占用银行资金来赚取利率差。&lt;/p&gt;
&lt;p&gt;实际上如果你够钱全款买房，但是投资水平超过房贷利率，那么使用房贷依然是一个很好的选择，这种低息高额贷款是很难得的，而哪些炒房团，往往也是通过房贷负债加杠杆迅速的增长自己的财富的。&lt;/p&gt;
&lt;p&gt;涉及到提前还款也是如此，如果你当下的投资收益率高过贷款利率，那么没有必要提前还款，反之投资收益率低于贷款利率，则建议提前还款，这跟等额本金或等额本息其实没什么关系。&lt;/p&gt;</description><content:encoded><![CDATA[<p>之前我讨论过分期付款的实际利率，发现比较坑。今天再来讨论一下房贷，房贷的计算有很多在线的<a href="https://www.rong360.com/calculator/fangdai.html"
   rel="noopener noreferrer" target="_blank" class="external">计算器</a>
，输入贷款额度，利率，以及贷款年数，选择等额本息还是等额本金还款，就可以得到每月还款的数值，下面我来分析一下这里面的原理，并简单讨论一下两种还款方式的优劣，以及提前还款是否有必要。</p>
<h3 id="1一个例子">1.一个例子</h3>
<p>假设贷款100万，年利率5%，贷款20年，使用前述计算器计算，得到等额本息还款每月6,599.56元，等额本金还款首月8,333.33元，以后每月递减17.36元。一般的，假设借款总额为T，年华利率为p，贷款年限为Y。</p>
<h3 id="2基本原理">2.基本原理</h3>
<p>房贷的利率是很厚道的实际利率，什么叫实际利率呢？就是按你实际占用银行资金的多少来计算利息。当你按月归还了一定的本金了以后，下个月计息的本金就变少了，而不像消费贷的分期付款，计息的本金一直是不变的，才出现实际利率比名义利率高很多的情况。无论是等额本息还是等额本金还款，利率都是实际利率，而按目前的商贷利率4.90%，公积金利率3.25%，甚至还有折扣，所以房贷是普通人能拿到大额低息贷款的最重要的方式。</p>
<p>按照实际利率，如果上一期还欠本金$$T$$，年化利率为p，本期归还本金C，则本月须还款</p>
<p>M=C+T*p/12，下一期本金变为T-C。</p>
<h3 id="3等额本金还款">3.等额本金还款</h3>
<p>等额本金还款每个月还款数额逐渐减少，看起来比较麻烦，但是在原理和数学计算上其实更简单。首先，我们把借的本金T摊分到所有的月份，为$$C=T/(Y\cdot 12)$$，则首月还款为$$M =C+T\cdot p/12$$，T=1,000,000，p=5%，Y=20时，计算得到C=4166.67元，M=8333.33元，以后每月本金减少C，相应的利息减少$$C\cdot p/12$$，为17.36元。可以看到，等额本金还款每月还的本金不变，而利息则在不断减少。</p>
<h3 id="4等额本息还款">4.等额本息还款</h3>
<p>等额本息还款每个月还款数额相同，看起来比较简单，但是原理时数学计算更复杂，关键在于依然要符合2中所说的基本原理，随着待还本金的减少，每月还的利息会减少，但是要求每月归还的本金和利息加起来应该相同，这样的话，每个月归还的本金应该越来越多，才能维持这个平衡，究竟多多少，需要一个细致的计算过程。</p>
<p>我们知道最后一个月归还本金和利息后，贷款还完了，可以据此倒推。假设最后一个月还本金$$M_n$$，则利息为$$M <em>n\cdot p/12$$，还款总额为$$C_n=M_n\cdot(1+p/12)$$，往前推一个月，假设这个月归还本金$M</em>{n-1}$，则利息为$$(M_n+M_{n-1}))\cdot p/12$$，归还总额为$$C_{n-1}=M_{n-1}+(M_n+M_{n-1})\cdot p/12$$，由于$$C_n=C_{n-1}$$，不难推出$$M_ {n-1}= M_n/(1+p/12)$$，一般的$$C_k=M_k+\sum_{i=k}^n{M_i}\cdot p/12$$，由$$C_k=C_{k+1}$$ 得出$$M_{k+1} = M_k\cdot (1+p/12)$$</p>
<p>所以每月还款的本金是一个等比数列，它的比值比率是$$1+p/12$$，简单起见，我们计算最后一个月的本金$$M_n$$,则</p>
<p>$$T = \sum_{t=0}^{Y\cdot 12-1}{}M_n/(1+p/12)^t$$，则$$M_ n= T \cdot \frac {1-(1+p/12)^{-1}} {1-(1+p/12)^{-Y\cdot 12}}$$，每月还款额度为$$C=C_n=M_n\cdot(1+p/12)=T\cdot \frac {p/12} {1-(1+p/12)^{-Y\cdot 12}}$$，第一个月还款$$M_1=M_n/(1+p/12)^{Y\cdot12-1}=T\cdot \frac {p/12} {(1+p/12)^{Y\cdot 12}-1}$$，以后每月等比增加$$1+p/12$$，T=1,000,000，p=5%，Y=20，计算得到C=6,599.56，其中第一个月归还本金$$M_1$$为2432.89元，每月等比增加1.0041667倍。</p>
<h3 id="5-比较与提前还款">5 比较与提前还款</h3>
<p>由于等额本金与等额本息还款方式的利率都是实际利率，所以在资金效率上，两者其实没有任何差别，网上有人分析说等额本息还款刚开始还的利息多本金少，所以提前还款相对等额本金的提前还款不划算，我认为是没有道理的，因为银行始终是按你实际占用的本金额度来收取利息的，而提前还款则是将余下的本金一次性还完。而两种贷款方式的选择，乃至是否提前还款，都不影响资金效率，那么该如何选择呢？</p>
<p>首先比较一下等额本金和等额本息，等额本金刚开始还款多，以后还款少，其中归还本金每月固定，而等额本息始终还款数额一样，其中归还本金每月增多，选择哪种方式，取决与你的工资收入水平以及占用资金后资金的投资效率，首先，如果你现在收入少，估计以后收入会不断增长，那么为了减轻现在的负担，自然是刚开始少还一点好，这时建议等额本息，而如果你现在收入高，以后还很难说，那么建议等额本金。但是如果你虽然现在钱很多，但是你的投资收益要高于贷款利率，那么还是建议等额本息，这样你能更多更久的占用银行资金来赚取利率差。</p>
<p>实际上如果你够钱全款买房，但是投资水平超过房贷利率，那么使用房贷依然是一个很好的选择，这种低息高额贷款是很难得的，而哪些炒房团，往往也是通过房贷负债加杠杆迅速的增长自己的财富的。</p>
<p>涉及到提前还款也是如此，如果你当下的投资收益率高过贷款利率，那么没有必要提前还款，反之投资收益率低于贷款利率，则建议提前还款，这跟等额本金或等额本息其实没什么关系。</p>
]]></content:encoded><category>investment</category><category domain="tags">房贷</category><category domain="tags">金融</category></item><item><title>《大护法》：恶趣味的1984</title><link>https://yifeitao.com/dahufa/</link><pubDate>Wed, 19 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/dahufa/</guid><description>&lt;p&gt;&lt;img src="https://img1.doubanio.com/view/movie_poster_cover/lpst/public/p2490948849.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;知道这部电影，是看到有微信公众号在含沙射影的批判这部电影，我很是好奇，一部打了龙标的电影，怎么可能政治不正确。&lt;/p&gt;
&lt;p&gt;看完之后，倒是觉得导演的恶趣味很有意思，比如一个披上红色披风像个冬瓜，爱碎碎念，动不动就背诗的主角，模仿虫族的花生人设定，一个文艺范长得像徐锦江老师的太子，当然还有很明显模仿法西斯束棒的武器。&lt;/p&gt;
&lt;p&gt;其实电影的作者究竟怎么想的不重要，电影是幻想的艺术，如果能触发观众的想象和分析，就是成功的。观众要怎么去想，则是一个很有意思的事情，正所谓智者见智仁者见仁淫者见淫，与其说一部动画电影能探讨点什么，不如说它激发了大家关心的话题，这种意想不到的气场的出现，估计以后还会屡见不鲜。&lt;/p&gt;
&lt;p&gt;反乌托邦的文艺作品不鲜见，《1984》随时你都可以去看，即使是电影市场，去年的《驴得水》我觉得也可以归为这一类。这部电影其实更独特的是它的风格，虽然能看出一些不成熟的地方，比如太子和大护法对嘴吵架时画面非常崩坏，但是总算是脱离了简单叙事，正义战神邪恶的范畴。水墨风格的画面透着一种诡异的美感，碎碎念的台词，一旦接受了这种设定，就觉得冷幽默，而把电影变成儿童不宜的，这是随时爆头、喷血的场面，而剧本的设定处处透着诡异，即使到结局有些地方还是云里雾里，但是又蛮适合脑补。&lt;/p&gt;
&lt;p&gt;希望能看到导演的续集。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img1.doubanio.com/view/movie_poster_cover/lpst/public/p2490948849.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>知道这部电影，是看到有微信公众号在含沙射影的批判这部电影，我很是好奇，一部打了龙标的电影，怎么可能政治不正确。</p>
<p>看完之后，倒是觉得导演的恶趣味很有意思，比如一个披上红色披风像个冬瓜，爱碎碎念，动不动就背诗的主角，模仿虫族的花生人设定，一个文艺范长得像徐锦江老师的太子，当然还有很明显模仿法西斯束棒的武器。</p>
<p>其实电影的作者究竟怎么想的不重要，电影是幻想的艺术，如果能触发观众的想象和分析，就是成功的。观众要怎么去想，则是一个很有意思的事情，正所谓智者见智仁者见仁淫者见淫，与其说一部动画电影能探讨点什么，不如说它激发了大家关心的话题，这种意想不到的气场的出现，估计以后还会屡见不鲜。</p>
<p>反乌托邦的文艺作品不鲜见，《1984》随时你都可以去看，即使是电影市场，去年的《驴得水》我觉得也可以归为这一类。这部电影其实更独特的是它的风格，虽然能看出一些不成熟的地方，比如太子和大护法对嘴吵架时画面非常崩坏，但是总算是脱离了简单叙事，正义战神邪恶的范畴。水墨风格的画面透着一种诡异的美感，碎碎念的台词，一旦接受了这种设定，就觉得冷幽默，而把电影变成儿童不宜的，这是随时爆头、喷血的场面，而剧本的设定处处透着诡异，即使到结局有些地方还是云里雾里，但是又蛮适合脑补。</p>
<p>希望能看到导演的续集。</p>
]]></content:encoded><category>movie</category><category domain="tags">动画</category><category domain="tags">电影</category></item><item><title>偶像</title><link>https://yifeitao.com/idol/</link><pubDate>Tue, 18 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/idol/</guid><description>&lt;p&gt;今天傍晚客厅的电视放着《楚乔传》，因为想让着急同学安静一会儿，最近发现他看到电视里的漂亮姐姐时比较安静，我突然想到，着急同学以后会喜欢什么样的偶像明星是一件很有趣的事情。&lt;/p&gt;
&lt;p&gt;有教育学的研究成果表明，对孩子影响最大的可能不是父母，而是他的同龄人，在小学生中，喜欢什么大多是一阵风，是一种集体共识。当下来看，八零九零乃至更年长的人群是打造偶像的主力，但是偶像的主力消费者却是更年轻的零零后，往往都是一群有文化的在给一群没文化的创造。&lt;/p&gt;
&lt;p&gt;偶像的选择，看起来是自由意志，但是实际情况可能很复杂，首先偶像的选择其实是有国家意志在的，八九十年代的时候，中日关系很不错，像我堂哥就爱在卧室贴酒井法子的照片，而我父母也都知道不少日本明星的名字，后来中日关系恶化后，就开始引进韩国明星了，现在和韩国关系也不好，“国家面前无欧巴”，连我是歌手代表世界化的重任也交到了哈萨克斯坦人身上，又或者我们下一波可以哈一下泰国之类的，至于港台明星，都得学会好好说话，赞颂社会主义，才能在大陆揾食。不知道着急同学在追星的年纪，我国会和什么国家比较友好。&lt;/p&gt;
&lt;p&gt;其次，偶像的选择也是一种集体认知，如果你要当一个随大流的好孩子，就不能喜欢太过奇怪的偶像，比如喜欢一个太老的演员或歌手，即使是喜欢小鲜肉，大抵也是要争夺话语权的。在互联网时代，这个问题变得有些奇怪，首先是长尾效应导致不管你喜欢得人有多奇怪总能找到共鸣，而且一般来说网上交流也不限年龄，另一方面，所谓粉丝的力量也得到了互联网的加强，原本只在学校风行的东西，现在在互联网上所向披靡——惹到粉丝总是吃力不讨好的，谁也不喜欢被一帮内心真诚而火热的人怒骂。&lt;/p&gt;
&lt;p&gt;最后，偶像的选择是被媒体操纵的，偶像顾名思义外貌是及其重要的，而外貌最出众的人大多是搞文艺的，而且他们的工作又主要是在媒体上晃悠，“爱美之心，人皆有之”，也难怪着急同学爱看赵丽颖了，而美女科学家首先是数量少，再者她们也没时间整天再在媒体上晃悠，所以文艺工作者还真是有着不小的影响力，如果他们以身作则，大概是能对年轻人起到好的导向作用的，而一旦平行败坏，还要粉丝去维护形象，还真是腐坏社会风气。&lt;/p&gt;
&lt;p&gt;总而言之，要想影响孩子的偶像选择，是一个复杂的系统工程，需要你拓宽他的视界，让他知道更多优秀的人，才能做出更加自由的选择。&lt;/p&gt;</description><content:encoded><![CDATA[<p>今天傍晚客厅的电视放着《楚乔传》，因为想让着急同学安静一会儿，最近发现他看到电视里的漂亮姐姐时比较安静，我突然想到，着急同学以后会喜欢什么样的偶像明星是一件很有趣的事情。</p>
<p>有教育学的研究成果表明，对孩子影响最大的可能不是父母，而是他的同龄人，在小学生中，喜欢什么大多是一阵风，是一种集体共识。当下来看，八零九零乃至更年长的人群是打造偶像的主力，但是偶像的主力消费者却是更年轻的零零后，往往都是一群有文化的在给一群没文化的创造。</p>
<p>偶像的选择，看起来是自由意志，但是实际情况可能很复杂，首先偶像的选择其实是有国家意志在的，八九十年代的时候，中日关系很不错，像我堂哥就爱在卧室贴酒井法子的照片，而我父母也都知道不少日本明星的名字，后来中日关系恶化后，就开始引进韩国明星了，现在和韩国关系也不好，“国家面前无欧巴”，连我是歌手代表世界化的重任也交到了哈萨克斯坦人身上，又或者我们下一波可以哈一下泰国之类的，至于港台明星，都得学会好好说话，赞颂社会主义，才能在大陆揾食。不知道着急同学在追星的年纪，我国会和什么国家比较友好。</p>
<p>其次，偶像的选择也是一种集体认知，如果你要当一个随大流的好孩子，就不能喜欢太过奇怪的偶像，比如喜欢一个太老的演员或歌手，即使是喜欢小鲜肉，大抵也是要争夺话语权的。在互联网时代，这个问题变得有些奇怪，首先是长尾效应导致不管你喜欢得人有多奇怪总能找到共鸣，而且一般来说网上交流也不限年龄，另一方面，所谓粉丝的力量也得到了互联网的加强，原本只在学校风行的东西，现在在互联网上所向披靡——惹到粉丝总是吃力不讨好的，谁也不喜欢被一帮内心真诚而火热的人怒骂。</p>
<p>最后，偶像的选择是被媒体操纵的，偶像顾名思义外貌是及其重要的，而外貌最出众的人大多是搞文艺的，而且他们的工作又主要是在媒体上晃悠，“爱美之心，人皆有之”，也难怪着急同学爱看赵丽颖了，而美女科学家首先是数量少，再者她们也没时间整天再在媒体上晃悠，所以文艺工作者还真是有着不小的影响力，如果他们以身作则，大概是能对年轻人起到好的导向作用的，而一旦平行败坏，还要粉丝去维护形象，还真是腐坏社会风气。</p>
<p>总而言之，要想影响孩子的偶像选择，是一个复杂的系统工程，需要你拓宽他的视界，让他知道更多优秀的人，才能做出更加自由的选择。</p>
]]></content:encoded><category>life</category><category domain="tags">文化</category><category domain="tags">偶像</category></item><item><title>为什么《权力的游戏》吸引人</title><link>https://yifeitao.com/why-got-atrract-me/</link><pubDate>Mon, 17 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/why-got-atrract-me/</guid><description>&lt;p&gt;&lt;img src="https://img1.doubanio.com/view/movie_poster_cover/lpst/public/p2465440419.webp" alt="p2465440419.webp" loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;现在我基本不看电视剧，只有《海贼王》和《权力的游戏》还在追。&lt;/p&gt;
&lt;p&gt;今天《权力的游戏》第七季开播，第一时间又下载来看了，于是想了想，这部电视剧究竟有什么吸引人的地方，或者说有什么吸引我的地方。&lt;/p&gt;
&lt;p&gt;HBO的精品意识造成了收视和投入的良性循环，用电影的预算来拍电视剧，效果惊人。比如第六季的私生子大战，我觉得是我看过的最好的冷兵器战争场面，甚至胜过《勇敢的心》，相比之下吴宇森的《赤壁》像是儿戏。&lt;/p&gt;
&lt;p&gt;如果要给一个对这部电视剧一无所知的人，我想到的是介绍词是低魔的、隐射欧洲历史的多国版的《三国演义》。首先，它的原著就非常优秀，糅合了奇幻与历史，这个架空的世界中存在一定的魔法，但是也只是成了推进剧情的催化剂，而最吸引人的还是大大小小的角色表现出来的复杂的人性。&lt;/p&gt;
&lt;p&gt;而最让人爱恨交加的特点，也是原著带来的，那就是主角领便当很干脆，每当观众对某个重要角色投入感情，可能在下一集他就以各种理由死亡了。看惯了主角光环的我们，自然会有些不适应，但是仔细想想这其实是符合历史现实的，死亡面前人人平等，只不过是换了个视角来写，原著最大的特点就是多角色视角。假如我们用这种方法来描述《三国演义》，大概一上来张角和黄巾军是主角，等到观众开始与这些角色同呼吸共命运的时候，发现被刘备、袁绍、曹操之类的全灭了，然后主视角又变成了袁绍、吕布之类的，这样变很多来回后，最后发现主角团灭死光光，被猥琐的司马懿捡了便宜，一个彻头彻尾的大悲剧。&lt;/p&gt;
&lt;p&gt;当然相比三国演义，作为一部现代作品，《权力的游戏》还充满了对小人物的悲悯，比如这一集中最温情的两幕，原本的大坏蛋“猎狗”给平米父女收尸，aya和兰尼斯特的普通士兵一起吃烧烤，让我们意识到，这种权力的游戏之下还有那些发不出声的小人物。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img1.doubanio.com/view/movie_poster_cover/lpst/public/p2465440419.webp" alt="p2465440419.webp" loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>现在我基本不看电视剧，只有《海贼王》和《权力的游戏》还在追。</p>
<p>今天《权力的游戏》第七季开播，第一时间又下载来看了，于是想了想，这部电视剧究竟有什么吸引人的地方，或者说有什么吸引我的地方。</p>
<p>HBO的精品意识造成了收视和投入的良性循环，用电影的预算来拍电视剧，效果惊人。比如第六季的私生子大战，我觉得是我看过的最好的冷兵器战争场面，甚至胜过《勇敢的心》，相比之下吴宇森的《赤壁》像是儿戏。</p>
<p>如果要给一个对这部电视剧一无所知的人，我想到的是介绍词是低魔的、隐射欧洲历史的多国版的《三国演义》。首先，它的原著就非常优秀，糅合了奇幻与历史，这个架空的世界中存在一定的魔法，但是也只是成了推进剧情的催化剂，而最吸引人的还是大大小小的角色表现出来的复杂的人性。</p>
<p>而最让人爱恨交加的特点，也是原著带来的，那就是主角领便当很干脆，每当观众对某个重要角色投入感情，可能在下一集他就以各种理由死亡了。看惯了主角光环的我们，自然会有些不适应，但是仔细想想这其实是符合历史现实的，死亡面前人人平等，只不过是换了个视角来写，原著最大的特点就是多角色视角。假如我们用这种方法来描述《三国演义》，大概一上来张角和黄巾军是主角，等到观众开始与这些角色同呼吸共命运的时候，发现被刘备、袁绍、曹操之类的全灭了，然后主视角又变成了袁绍、吕布之类的，这样变很多来回后，最后发现主角团灭死光光，被猥琐的司马懿捡了便宜，一个彻头彻尾的大悲剧。</p>
<p>当然相比三国演义，作为一部现代作品，《权力的游戏》还充满了对小人物的悲悯，比如这一集中最温情的两幕，原本的大坏蛋“猎狗”给平米父女收尸，aya和兰尼斯特的普通士兵一起吃烧烤，让我们意识到，这种权力的游戏之下还有那些发不出声的小人物。</p>
]]></content:encoded><category>movie</category><category domain="tags">电视剧</category><category domain="tags">美剧</category></item><item><title>谈谈乐视网</title><link>https://yifeitao.com/letv/</link><pubDate>Sat, 15 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/letv/</guid><description>&lt;p&gt;乐视网从去年的创业板龙头，到现在的过街老鼠，也不过是一年的时间。&lt;/p&gt;
&lt;p&gt;去年在雪球网玩的时候，看见各种乐视吹用各种方式分析贾跃亭和乐视的牛逼，而唱空的人甚至因为害怕辱骂都只能以XX网称之，我虽然还是个投资新手，但也知道乐视网的市盈率已经高到市梦率了。&lt;/p&gt;
&lt;p&gt;更关键的是，作为一个用户，没觉得乐视有做出什么好的产品来，手机电视号称贴钱卖，对股东而言，怎么看也不是好生意，如果你的产品极具创新性，可能对利润的要求可以暂时不需要那么功利，但是手机、电视都是很成熟的产品，即使是小米和360，也知道硬件免费是耗不起的。乐视生态靠的是忽悠、融资、炒高股价、接着忽悠，去年很多媒体都被乐视警告过，一个公司太在意自己的股价是一个很不好的信号。&lt;/p&gt;
&lt;p&gt;A股做空的手段几乎没有，所以再看空乐视，也只能看看而已，如果能直接做空，或许乐视的股价还撑不了现在这么久，这些被套牢的人也没有现在这么惨，现在乐视是停牌状态，不知道关在里面的人多久才能出来，而出来之后又会有几个跌停。&lt;/p&gt;
&lt;p&gt;其实投资很多时候常识很重要，而要想颠覆常识，则需要给自己很多的理由与信心，否则，韭芽怀疑自己是不是被当韭菜割了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>乐视网从去年的创业板龙头，到现在的过街老鼠，也不过是一年的时间。</p>
<p>去年在雪球网玩的时候，看见各种乐视吹用各种方式分析贾跃亭和乐视的牛逼，而唱空的人甚至因为害怕辱骂都只能以XX网称之，我虽然还是个投资新手，但也知道乐视网的市盈率已经高到市梦率了。</p>
<p>更关键的是，作为一个用户，没觉得乐视有做出什么好的产品来，手机电视号称贴钱卖，对股东而言，怎么看也不是好生意，如果你的产品极具创新性，可能对利润的要求可以暂时不需要那么功利，但是手机、电视都是很成熟的产品，即使是小米和360，也知道硬件免费是耗不起的。乐视生态靠的是忽悠、融资、炒高股价、接着忽悠，去年很多媒体都被乐视警告过，一个公司太在意自己的股价是一个很不好的信号。</p>
<p>A股做空的手段几乎没有，所以再看空乐视，也只能看看而已，如果能直接做空，或许乐视的股价还撑不了现在这么久，这些被套牢的人也没有现在这么惨，现在乐视是停牌状态，不知道关在里面的人多久才能出来，而出来之后又会有几个跌停。</p>
<p>其实投资很多时候常识很重要，而要想颠覆常识，则需要给自己很多的理由与信心，否则，韭芽怀疑自己是不是被当韭菜割了。</p>
]]></content:encoded><category>investment</category><category domain="tags">投资</category><category domain="tags">公司</category></item><item><title>如何获得比特币？</title><link>https://yifeitao.com/how-to-get-bitcoin/</link><pubDate>Fri, 14 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/how-to-get-bitcoin/</guid><description>&lt;p&gt;&lt;strong&gt;目前中国的比特币平台都存在监管不够的问题，所以注意以下方法都存在很大风险，这里只是做一个介绍，不构成投资建议，风险自负。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="1-使用人民币购买"&gt;1 使用人民币购买&lt;/h3&gt;
&lt;p&gt;作为一种数字货币，比特币目前可交换的东西，不是实体的货物，虽然也有部分企业支持比特币购物，但毕竟还很少很少，所以通过卖货获得比特币还是比较难，比特币可交换的最重要的东西还是各个国家的货币。国内的比特币行业还是比较发达的，所以相关服务很多。&lt;/p&gt;
&lt;h4 id="11-交易所"&gt;1.1 交易所&lt;/h4&gt;
&lt;p&gt;交易所的作用类似与股票或外汇交易所，撮合买卖双方，这里列举一些比较大的交易所。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.huobi.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;火币网&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.okcoin.cn/"
rel="noopener noreferrer" target="_blank" class="external"&gt;币行&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.btcchina.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;比特币中国&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.chbtc.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;中国比特币&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://yunbi.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;云币网&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;由于国家监管规定，目前交易所都不能直接接入银行系统或网上支付系统，所以在入金的时候都需要使用直接汇款的方式。&lt;/p&gt;
&lt;p&gt;购买得到的比特币，可以放在交易所，也可以体现到自己的钱包。&lt;/p&gt;
&lt;h4 id="12-场外交易"&gt;1.2 场外交易&lt;/h4&gt;
&lt;p&gt;场外交易类似与股票交易早期的喊单，国内部分交易所为了规避监管风险，已经转向了OTC模式。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bixin.com"
rel="noopener noreferrer" target="_blank" class="external"&gt;币信&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.bitkan.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;币看&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些交易所，提供第三方担保服务，而交易价格与数量是买卖双方自己协商的。&lt;/p&gt;
&lt;p&gt;此外，也可以线下交易，一手交钱一手交货，但是比特币交易目前的确认时间还是比较长，还是要注意不要上当受骗。&lt;/p&gt;
&lt;h3 id="2-受赠"&gt;2 受赠&lt;/h3&gt;
&lt;p&gt;可以先下一个钱包或者在在线钱包软件开一个户，然后告诉别人你的钱包地址，希望有好心人给你打赏。&lt;/p&gt;
&lt;h3 id="3-挖矿"&gt;3 挖矿&lt;/h3&gt;
&lt;p&gt;买一个矿机，目前卖的比较火的是&lt;a href="https://shop.bitmain.com/main.htm?lang=zh"
rel="noopener noreferrer" target="_blank" class="external"&gt;蚂蚁矿机&lt;/a&gt;
，由于目前个人挖矿获得比特币的概率太低（方差大），所以需要加入一个矿池，但是对于个人而言，买矿机，出电费，维护设备整个过程很麻烦，所以还有将矿机算力标准化后的交易市场，一般矿池用来摊低风险，由于算力、币价之间存在的关系，一般而言，购买算力比起直接屯币波动较小。云算力交易平台:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bixin.com/pool"
rel="noopener noreferrer" target="_blank" class="external"&gt;币信&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.viabtc.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;ViaBTC&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;购买了矿机或云算力挖矿后，每天能获得一定的比特币收益。&lt;/p&gt;
&lt;h3 id="4-比特币投资"&gt;4 比特币投资&lt;/h3&gt;
&lt;p&gt;目前已经有一些类似银行存款或P2P投资的服务，完全以比特币结算。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bitbank.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;bitbank&lt;/a&gt;
有活期和定期存款服务&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bixin.com/platform/vendor/fin/"
rel="noopener noreferrer" target="_blank" class="external"&gt;币信月账户&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bitcoinsand.com/zh-CN"
rel="noopener noreferrer" target="_blank" class="external"&gt;BitcoinSand&lt;/a&gt;
按日计息0.01%&lt;/li&gt;
&lt;/ul&gt;</description><content:encoded><![CDATA[<p><strong>目前中国的比特币平台都存在监管不够的问题，所以注意以下方法都存在很大风险，这里只是做一个介绍，不构成投资建议，风险自负。</strong></p>
<h3 id="1-使用人民币购买">1 使用人民币购买</h3>
<p>作为一种数字货币，比特币目前可交换的东西，不是实体的货物，虽然也有部分企业支持比特币购物，但毕竟还很少很少，所以通过卖货获得比特币还是比较难，比特币可交换的最重要的东西还是各个国家的货币。国内的比特币行业还是比较发达的，所以相关服务很多。</p>
<h4 id="11-交易所">1.1 交易所</h4>
<p>交易所的作用类似与股票或外汇交易所，撮合买卖双方，这里列举一些比较大的交易所。</p>
<ul>
<li><a href="https://www.huobi.com/"
   rel="noopener noreferrer" target="_blank" class="external">火币网</a>
</li>
<li><a href="https://www.okcoin.cn/"
   rel="noopener noreferrer" target="_blank" class="external">币行</a>
</li>
<li><a href="https://www.btcchina.com/"
   rel="noopener noreferrer" target="_blank" class="external">比特币中国</a>
</li>
<li><a href="https://www.chbtc.com/"
   rel="noopener noreferrer" target="_blank" class="external">中国比特币</a>
</li>
<li><a href="https://yunbi.com/"
   rel="noopener noreferrer" target="_blank" class="external">云币网</a>
</li>
</ul>
<p>由于国家监管规定，目前交易所都不能直接接入银行系统或网上支付系统，所以在入金的时候都需要使用直接汇款的方式。</p>
<p>购买得到的比特币，可以放在交易所，也可以体现到自己的钱包。</p>
<h4 id="12-场外交易">1.2 场外交易</h4>
<p>场外交易类似与股票交易早期的喊单，国内部分交易所为了规避监管风险，已经转向了OTC模式。比如：</p>
<ul>
<li><a href="https://bixin.com"
   rel="noopener noreferrer" target="_blank" class="external">币信</a>
</li>
<li><a href="https://www.bitkan.com/"
   rel="noopener noreferrer" target="_blank" class="external">币看</a>
</li>
</ul>
<p>这些交易所，提供第三方担保服务，而交易价格与数量是买卖双方自己协商的。</p>
<p>此外，也可以线下交易，一手交钱一手交货，但是比特币交易目前的确认时间还是比较长，还是要注意不要上当受骗。</p>
<h3 id="2-受赠">2 受赠</h3>
<p>可以先下一个钱包或者在在线钱包软件开一个户，然后告诉别人你的钱包地址，希望有好心人给你打赏。</p>
<h3 id="3-挖矿">3 挖矿</h3>
<p>买一个矿机，目前卖的比较火的是<a href="https://shop.bitmain.com/main.htm?lang=zh"
   rel="noopener noreferrer" target="_blank" class="external">蚂蚁矿机</a>
，由于目前个人挖矿获得比特币的概率太低（方差大），所以需要加入一个矿池，但是对于个人而言，买矿机，出电费，维护设备整个过程很麻烦，所以还有将矿机算力标准化后的交易市场，一般矿池用来摊低风险，由于算力、币价之间存在的关系，一般而言，购买算力比起直接屯币波动较小。云算力交易平台:</p>
<ul>
<li><a href="https://bixin.com/pool"
   rel="noopener noreferrer" target="_blank" class="external">币信</a>
</li>
<li><a href="https://www.viabtc.com/"
   rel="noopener noreferrer" target="_blank" class="external">ViaBTC</a>
</li>
</ul>
<p>购买了矿机或云算力挖矿后，每天能获得一定的比特币收益。</p>
<h3 id="4-比特币投资">4 比特币投资</h3>
<p>目前已经有一些类似银行存款或P2P投资的服务，完全以比特币结算。比如：</p>
<ul>
<li><a href="https://bitbank.com/"
   rel="noopener noreferrer" target="_blank" class="external">bitbank</a>
 有活期和定期存款服务</li>
<li><a href="https://bixin.com/platform/vendor/fin/"
   rel="noopener noreferrer" target="_blank" class="external">币信月账户</a>
</li>
<li><a href="https://bitcoinsand.com/zh-CN"
   rel="noopener noreferrer" target="_blank" class="external">BitcoinSand</a>
 按日计息0.01%</li>
</ul>
]]></content:encoded><category>investment</category><category domain="tags">比特币</category><category domain="tags">教程</category></item><item><title>决策中的直觉</title><link>https://yifeitao.com/instinct/</link><pubDate>Thu, 13 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/instinct/</guid><description>&lt;p&gt;投资决策是一个相当复杂的事情，不同的人有不同的方法，有看K线图的，也有看财务报表的，还有看各种消息的，但是最后的决策可能还是离不开直觉。&lt;/p&gt;
&lt;p&gt;如果把决策看作一个神经网络，各种信息作为输入，决策作为输出，那么这个计算过程很复杂，综合了诸多因素后，会出来一个结论。查理·芒格强调多视角看问题，同时强调厘清自己的非理性因素，我觉得这都是在加强决策神经网络。在某个领域的专家，往往能一眼看透问题，但是解释起来却很费劲，因为这些分析已经模式化、自动化了。&lt;/p&gt;
&lt;p&gt;推广的想一下，不单单投资是这样，任何需要决策的事情都是这样，比如写程序，比如解决数学难题，比如解决现实中的故障或谜题，甚至教育孩子。&lt;/p&gt;
&lt;p&gt;直觉的建立没有什么捷径，无非是多学一点，学得广泛而深入一点，多思考一点，无论是事前、还是进行中、还是事后。&lt;/p&gt;</description><content:encoded><![CDATA[<p>投资决策是一个相当复杂的事情，不同的人有不同的方法，有看K线图的，也有看财务报表的，还有看各种消息的，但是最后的决策可能还是离不开直觉。</p>
<p>如果把决策看作一个神经网络，各种信息作为输入，决策作为输出，那么这个计算过程很复杂，综合了诸多因素后，会出来一个结论。查理·芒格强调多视角看问题，同时强调厘清自己的非理性因素，我觉得这都是在加强决策神经网络。在某个领域的专家，往往能一眼看透问题，但是解释起来却很费劲，因为这些分析已经模式化、自动化了。</p>
<p>推广的想一下，不单单投资是这样，任何需要决策的事情都是这样，比如写程序，比如解决数学难题，比如解决现实中的故障或谜题，甚至教育孩子。</p>
<p>直觉的建立没有什么捷径，无非是多学一点，学得广泛而深入一点，多思考一点，无论是事前、还是进行中、还是事后。</p>
]]></content:encoded><category>investment</category><category domain="tags">决策</category><category domain="tags">直觉</category></item><item><title>新司机</title><link>https://yifeitao.com/new-driver/</link><pubDate>Tue, 11 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/new-driver/</guid><description>&lt;p&gt;给老爸买车一段时间了，但是主要是我在开，说起来我的驾照也还没拿多久，基本上没有驾驶经验，看网帖的时候老看见老司机新司机的，现在我是实打实的新司机。按照交通法规，我在后窗上贴了个实习的标牌。&lt;/p&gt;
&lt;p&gt;新司机其实是个很有意思的定位，本来你只是一个路人，然后现在变成了司机，但是角色又不熟练，如果多感受多思考几分，其实能对整个交通参与有更深刻的认识和体会。&lt;/p&gt;
&lt;p&gt;当你开着车的时候，就会知道避让行人并不是那么轻松的事情，老人颤颤巍巍听不太清喇叭，小朋友活泼好动难以预测，而在家门口散步的人因为是在家附近，好像对过往的车基本上没有警惕性。更可怕的是摩托车和电动车，它们速度比新司机开得还快，转向灵活，再小的缝隙也可以钻，不知道什么时候就窜出来了。&lt;/p&gt;
&lt;p&gt;然后，你在等红灯的时候起步晚了几秒会被后面的老司机用喇叭催促，甚至你都没有晚也会被催促，别人看到你的实习牌就知道你大概起步要慢了。你在学科目三文明驾驶的时候，知道遇到任何情况都是让、等、停，但是现实的交通有时候却有些弱肉强食，有些时候，你不一脚油门冲过去，就一直卡在某个地方动弹不得了。&lt;/p&gt;
&lt;p&gt;我能想到的事情，除了慢慢把驾驶技术提高外，还有就是当行人的时候，要万分注意安全，不要太相信司机能看见你踩刹车，而等到你成了老司机，也没有必要争抢，鄙视新人，要说起来，那些恶性交通事故往往都是由自认为驾驶技术高超的人造成的。&lt;/p&gt;</description><content:encoded><![CDATA[<p>给老爸买车一段时间了，但是主要是我在开，说起来我的驾照也还没拿多久，基本上没有驾驶经验，看网帖的时候老看见老司机新司机的，现在我是实打实的新司机。按照交通法规，我在后窗上贴了个实习的标牌。</p>
<p>新司机其实是个很有意思的定位，本来你只是一个路人，然后现在变成了司机，但是角色又不熟练，如果多感受多思考几分，其实能对整个交通参与有更深刻的认识和体会。</p>
<p>当你开着车的时候，就会知道避让行人并不是那么轻松的事情，老人颤颤巍巍听不太清喇叭，小朋友活泼好动难以预测，而在家门口散步的人因为是在家附近，好像对过往的车基本上没有警惕性。更可怕的是摩托车和电动车，它们速度比新司机开得还快，转向灵活，再小的缝隙也可以钻，不知道什么时候就窜出来了。</p>
<p>然后，你在等红灯的时候起步晚了几秒会被后面的老司机用喇叭催促，甚至你都没有晚也会被催促，别人看到你的实习牌就知道你大概起步要慢了。你在学科目三文明驾驶的时候，知道遇到任何情况都是让、等、停，但是现实的交通有时候却有些弱肉强食，有些时候，你不一脚油门冲过去，就一直卡在某个地方动弹不得了。</p>
<p>我能想到的事情，除了慢慢把驾驶技术提高外，还有就是当行人的时候，要万分注意安全，不要太相信司机能看见你踩刹车，而等到你成了老司机，也没有必要争抢，鄙视新人，要说起来，那些恶性交通事故往往都是由自认为驾驶技术高超的人造成的。</p>
]]></content:encoded><category>life</category><category domain="tags">驾驶</category><category domain="tags">新手</category></item><item><title>乡间的垃圾</title><link>https://yifeitao.com/country-rubbish/</link><pubDate>Mon, 10 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/country-rubbish/</guid><description>&lt;p&gt;这次回乡里，发现比几年前要干净不少。&lt;/p&gt;
&lt;p&gt;一般来说，待在不见五谷的地方的人容易把田园生活想象得太美好，然而，在工业化初步走向农村的过程中，中国的乡间是丑陋的，至少在我的家乡是如此。&lt;/p&gt;
&lt;p&gt;我爷爷家的老房子是木制的，他是一个木匠，那时候木匠不单单是做家具的，也是造房子的。我没有见过太大的木房子，因为在斗地主的过程中，大一点的木房子都被人为切割了分给贫农了，但是难免还残存了一些个性与美感。而后来的红砖瓦房，从居住条件来说有不少进步，但是真谈不上好看，九十年代开始又兴起了建楼房，但是也不知道是谁最先设计的，这些房子基本上是互相抄袭，而且一样的丑。&lt;/p&gt;
&lt;p&gt;在我很小的时候，可能乡间的小河还能游泳，后来随着化肥的运用，田间的水排放到河里之后，各种藻类的生态紊乱，小河慢慢都变成了臭水沟，里面一般会漂浮着农人们扔掉的农药瓶子。&lt;/p&gt;
&lt;p&gt;还有就是塑料制品兴起后，农村也成了重灾区，河里，池塘里，路边上，到处都是白色垃圾。&lt;/p&gt;
&lt;p&gt;那时候的路，大多是沙石路，一到干燥的季节，汽车一过，灰尘漫天，路边的植物都是黄色的。&lt;/p&gt;
&lt;p&gt;最近一两年倒是开始有一些变化。&lt;/p&gt;
&lt;p&gt;首先路大多变成了水泥路，所以不再有那么多的灰尘，白色垃圾的情况也有所改善，因为现在每个村委会都有专人负责环境卫生工作，共产党和政府管环境卫生的触角终于抵达了村一级，现在的垃圾车已经开到了县道上，但是村道里还是没人管的状态，我们老房子的垃圾也只能自己找个大坑给埋掉。&lt;/p&gt;
&lt;p&gt;我倒是从来不喜欢怀念过去的美好时光，我相信没有一个农民喜欢回到过去那环境优美但是穷得可怕的年代，而且我也相信，当工业文明的渗透逐渐完成后，发展产生的问题最终只能靠发展来解决。&lt;/p&gt;</description><content:encoded><![CDATA[<p>这次回乡里，发现比几年前要干净不少。</p>
<p>一般来说，待在不见五谷的地方的人容易把田园生活想象得太美好，然而，在工业化初步走向农村的过程中，中国的乡间是丑陋的，至少在我的家乡是如此。</p>
<p>我爷爷家的老房子是木制的，他是一个木匠，那时候木匠不单单是做家具的，也是造房子的。我没有见过太大的木房子，因为在斗地主的过程中，大一点的木房子都被人为切割了分给贫农了，但是难免还残存了一些个性与美感。而后来的红砖瓦房，从居住条件来说有不少进步，但是真谈不上好看，九十年代开始又兴起了建楼房，但是也不知道是谁最先设计的，这些房子基本上是互相抄袭，而且一样的丑。</p>
<p>在我很小的时候，可能乡间的小河还能游泳，后来随着化肥的运用，田间的水排放到河里之后，各种藻类的生态紊乱，小河慢慢都变成了臭水沟，里面一般会漂浮着农人们扔掉的农药瓶子。</p>
<p>还有就是塑料制品兴起后，农村也成了重灾区，河里，池塘里，路边上，到处都是白色垃圾。</p>
<p>那时候的路，大多是沙石路，一到干燥的季节，汽车一过，灰尘漫天，路边的植物都是黄色的。</p>
<p>最近一两年倒是开始有一些变化。</p>
<p>首先路大多变成了水泥路，所以不再有那么多的灰尘，白色垃圾的情况也有所改善，因为现在每个村委会都有专人负责环境卫生工作，共产党和政府管环境卫生的触角终于抵达了村一级，现在的垃圾车已经开到了县道上，但是村道里还是没人管的状态，我们老房子的垃圾也只能自己找个大坑给埋掉。</p>
<p>我倒是从来不喜欢怀念过去的美好时光，我相信没有一个农民喜欢回到过去那环境优美但是穷得可怕的年代，而且我也相信，当工业文明的渗透逐渐完成后，发展产生的问题最终只能靠发展来解决。</p>
]]></content:encoded><category>life</category><category domain="tags">社会</category><category domain="tags">环境</category></item><item><title>旧书柜</title><link>https://yifeitao.com/old-bookcase/</link><pubDate>Sun, 09 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/old-bookcase/</guid><description>&lt;p&gt;今天待在老房子里，看到旧书柜里面堆满了杂七杂八的东西，突然想要收拾一下，这个书柜从我本科毕业后就基本没动过，刚开始只是放书，后来我爸妈也在里面放一些杂物。&lt;/p&gt;
&lt;p&gt;于是我花了一个多小时整理了一下，整理的主要方法是扔扔扔，把哪些买回来就没看过的书、以前最穷的时候买的盗版书、我妈工作上发的各种杂志、教材，全部扔掉，最后只剩了十分之一不到的书，大多是觉得有一定纪念意义的，比如一套少年儿童出版社的《十万个为什么》。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://img1.doubanio.com/lpic/s2619779.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;此外，还翻出初中时同学送的生日贺卡，高一时初中同学写的信，以及磁带随声听，以及一包正版磁带，还有从小学到大学的各种荣誉证书。&lt;/p&gt;
&lt;p&gt;在这些旧物汹涌的记忆中，我最感触的倒是当年这个书柜第一次出现时的喜悦之情，那是我爸亲手打造的，在我们那种小山村，家里会买书看的人就很少，有书柜的人家更是少之又少了，每当小伙伴来我家玩时，那都会成为我小小的骄傲的资本，喜欢看书的习惯大概也是从有了一个小小的书架开始的，想想以前真是穷，这个书架一直到我高中毕业也没填满过，因为我基本只把课外书放里面，而高中买得最多的还是各种老师推荐的教辅。再到后来我买书如山倒的时候，我基本上不在老房子里住，所以书柜就闲置了，慢慢堆满了各种谁也不曾看一眼的东西。&lt;/p&gt;
&lt;p&gt;人们常常不舍得扔东西，除了习惯性的节俭外，还有就是念旧了，然而，我这次扔书的感觉则是激活了我的记忆，让我找到这个书柜最初的和真正的价值，它启蒙了一个山村小孩，值得放进去一些真正有价值的东西，而不是堆满杂物，在一股霉气中度过它的余生。&lt;/p&gt;</description><content:encoded><![CDATA[<p>今天待在老房子里，看到旧书柜里面堆满了杂七杂八的东西，突然想要收拾一下，这个书柜从我本科毕业后就基本没动过，刚开始只是放书，后来我爸妈也在里面放一些杂物。</p>
<p>于是我花了一个多小时整理了一下，整理的主要方法是扔扔扔，把哪些买回来就没看过的书、以前最穷的时候买的盗版书、我妈工作上发的各种杂志、教材，全部扔掉，最后只剩了十分之一不到的书，大多是觉得有一定纪念意义的，比如一套少年儿童出版社的《十万个为什么》。</p>
<p><img src="https://img1.doubanio.com/lpic/s2619779.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>此外，还翻出初中时同学送的生日贺卡，高一时初中同学写的信，以及磁带随声听，以及一包正版磁带，还有从小学到大学的各种荣誉证书。</p>
<p>在这些旧物汹涌的记忆中，我最感触的倒是当年这个书柜第一次出现时的喜悦之情，那是我爸亲手打造的，在我们那种小山村，家里会买书看的人就很少，有书柜的人家更是少之又少了，每当小伙伴来我家玩时，那都会成为我小小的骄傲的资本，喜欢看书的习惯大概也是从有了一个小小的书架开始的，想想以前真是穷，这个书架一直到我高中毕业也没填满过，因为我基本只把课外书放里面，而高中买得最多的还是各种老师推荐的教辅。再到后来我买书如山倒的时候，我基本上不在老房子里住，所以书柜就闲置了，慢慢堆满了各种谁也不曾看一眼的东西。</p>
<p>人们常常不舍得扔东西，除了习惯性的节俭外，还有就是念旧了，然而，我这次扔书的感觉则是激活了我的记忆，让我找到这个书柜最初的和真正的价值，它启蒙了一个山村小孩，值得放进去一些真正有价值的东西，而不是堆满杂物，在一股霉气中度过它的余生。</p>
]]></content:encoded><category>life</category><category domain="tags">生活</category><category domain="tags">物品</category></item><item><title>《绝世高手》：好笑</title><link>https://yifeitao.com/the-one/</link><pubDate>Fri, 07 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-one/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2462744662.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;我前思后想了几分钟，还是觉得用好笑来评价这部电影恰到好处。由于导演和周星驰千丝万缕的关系，导致人们评价卢正雨的作品时，难以绕开，但是我想，我可能很久没有在电影院看过好笑的电影了，即使是去年口碑爆棚的《驴得水》，我没看笑倒是看哭了。&lt;/p&gt;
&lt;p&gt;《绝世高手》的好笑，不可否认传袭了周星驰的无厘头精神，但是它好笑的内容有无数创作者的巧思在内，从剧本的创作，到演员的选取，都能感觉到新意和诚意。&lt;/p&gt;
&lt;p&gt;剧情的设定让人不得不想起食神，但是场景的设定——堕落街，估计在长沙上过大学首先就会会心一笑，在剧中，堕落街其实是正义的象征，而所谓的和善集团，则一点也不和善。能看出来，导演借鉴了一些网络流行元素，比如强迫症、暗黑食堂菜，但是这些借鉴都很好的融合进入了主线剧情，让人会心一笑的同时，并不会觉得尴尬。认真打磨过的剧本和胡拼乱造的剧本，其实在电影院里很容易鉴别出来。&lt;/p&gt;
&lt;p&gt;范伟的表演依然是影帝级的，蔡国庆的反差也很有趣，甚至是郭采洁，也表现出她灵的一面，让人好感大增，而不是在郭敬明电影中的没有血肉的御姐形象。倒是导演兼主演的卢正雨，并没有让人太深刻的印象，可能是这种无厘头剧情设定下的通病吧，甚至一个唱歌的大叔也能无比的抢戏。&lt;/p&gt;
&lt;p&gt;希望导演的作品能一直好笑下去，毕竟我笑点还蛮高的。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2462744662.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>我前思后想了几分钟，还是觉得用好笑来评价这部电影恰到好处。由于导演和周星驰千丝万缕的关系，导致人们评价卢正雨的作品时，难以绕开，但是我想，我可能很久没有在电影院看过好笑的电影了，即使是去年口碑爆棚的《驴得水》，我没看笑倒是看哭了。</p>
<p>《绝世高手》的好笑，不可否认传袭了周星驰的无厘头精神，但是它好笑的内容有无数创作者的巧思在内，从剧本的创作，到演员的选取，都能感觉到新意和诚意。</p>
<p>剧情的设定让人不得不想起食神，但是场景的设定——堕落街，估计在长沙上过大学首先就会会心一笑，在剧中，堕落街其实是正义的象征，而所谓的和善集团，则一点也不和善。能看出来，导演借鉴了一些网络流行元素，比如强迫症、暗黑食堂菜，但是这些借鉴都很好的融合进入了主线剧情，让人会心一笑的同时，并不会觉得尴尬。认真打磨过的剧本和胡拼乱造的剧本，其实在电影院里很容易鉴别出来。</p>
<p>范伟的表演依然是影帝级的，蔡国庆的反差也很有趣，甚至是郭采洁，也表现出她灵的一面，让人好感大增，而不是在郭敬明电影中的没有血肉的御姐形象。倒是导演兼主演的卢正雨，并没有让人太深刻的印象，可能是这种无厘头剧情设定下的通病吧，甚至一个唱歌的大叔也能无比的抢戏。</p>
<p>希望导演的作品能一直好笑下去，毕竟我笑点还蛮高的。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">喜剧</category></item><item><title>《明月几时有》：战争中的日常生活</title><link>https://yifeitao.com/out-time-will-come/</link><pubDate>Sun, 02 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/out-time-will-come/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/photo/photo/public/p2461981195.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;许鞍华的电影大致可以分为两种风格，一种是像《天水围的日与夜》这种，看完基本上很难记得电影有什么情节，但是对生活有体味的人，又会觉察出它的好，看似清水白菜，实则内功深厚，另一种像《天水围的夜与雾》，情节相当火爆，还有那部《投奔怒海》，也算是宏大叙事了。&lt;/p&gt;
&lt;p&gt;而这部《明月几时有》，风格则是介于两者之间了，首先，香港抗日游击队的主题，注定了这个故事有几分传奇色彩，然而，许鞍华还是喜欢去表达日常生活，即使是在战争中，生活还是得继续，所以在电影中我们可以看到很多场吃饭活吃东西的戏，也不知道是有意还是无意，给人的感觉就是，饭要吃，日本鬼子也要打，这就是生活，这是一种贯穿始终的勇气。&lt;/p&gt;
&lt;p&gt;故事中，周迅饰演的游击队员在街坊的门口悄悄派送“地下火”的传单，我在想，这有什么用呢？从物质层面讲没有什么用，但是从精神层面讲，这种工作在战争中则很关键，看到传单的人有几分慌张，更多的则是一种怯怯的希望，是的啊，地下还有火，我们还没有到绝望的时候，多一分信心，则多一分反抗，少一个汉奸，胜利的可能就多了一分。&lt;/p&gt;
&lt;p&gt;今年是香港回归二十周年，许鞍华或许没有想过这个问题，但是在资方的安排下，毕竟还是成了主旋律的献礼片，如果打足了看传奇故事的心思去看这部电影，难免回感慨电影像电视剧一般平淡、缺乏内涵，这种指责其实有点像在怪开水白菜不够麻辣一般。&lt;/p&gt;
&lt;p&gt;电影中，我最喜欢的片段之一是小游击队员在方老师家睡过了，而由方老师的妈妈完成了传递药物和情报的工作，这里面的劳累与分担，都像是买菜做饭一般的日常，而这个日常中隐含的巨大的危险，则是一个时代的悲语。&lt;/p&gt;
&lt;p&gt;明月几时有呢？不过是天道轮回报应不爽。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/photo/photo/public/p2461981195.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>许鞍华的电影大致可以分为两种风格，一种是像《天水围的日与夜》这种，看完基本上很难记得电影有什么情节，但是对生活有体味的人，又会觉察出它的好，看似清水白菜，实则内功深厚，另一种像《天水围的夜与雾》，情节相当火爆，还有那部《投奔怒海》，也算是宏大叙事了。</p>
<p>而这部《明月几时有》，风格则是介于两者之间了，首先，香港抗日游击队的主题，注定了这个故事有几分传奇色彩，然而，许鞍华还是喜欢去表达日常生活，即使是在战争中，生活还是得继续，所以在电影中我们可以看到很多场吃饭活吃东西的戏，也不知道是有意还是无意，给人的感觉就是，饭要吃，日本鬼子也要打，这就是生活，这是一种贯穿始终的勇气。</p>
<p>故事中，周迅饰演的游击队员在街坊的门口悄悄派送“地下火”的传单，我在想，这有什么用呢？从物质层面讲没有什么用，但是从精神层面讲，这种工作在战争中则很关键，看到传单的人有几分慌张，更多的则是一种怯怯的希望，是的啊，地下还有火，我们还没有到绝望的时候，多一分信心，则多一分反抗，少一个汉奸，胜利的可能就多了一分。</p>
<p>今年是香港回归二十周年，许鞍华或许没有想过这个问题，但是在资方的安排下，毕竟还是成了主旋律的献礼片，如果打足了看传奇故事的心思去看这部电影，难免回感慨电影像电视剧一般平淡、缺乏内涵，这种指责其实有点像在怪开水白菜不够麻辣一般。</p>
<p>电影中，我最喜欢的片段之一是小游击队员在方老师家睡过了，而由方老师的妈妈完成了传递药物和情报的工作，这里面的劳累与分担，都像是买菜做饭一般的日常，而这个日常中隐含的巨大的危险，则是一个时代的悲语。</p>
<p>明月几时有呢？不过是天道轮回报应不爽。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">历史</category></item><item><title>2017年年中总结</title><link>https://yifeitao.com/mid-summary-2017/</link><pubDate>Sat, 01 Jul 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/mid-summary-2017/</guid><description>&lt;p&gt;打脸的时候到了，以下是2017年初做2016年总结的时候写下的计划。&lt;/p&gt;
&lt;blockquote&gt;
&lt;h2 id="2017重大计划"&gt;2017重大计划&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;换工作，这需要一些充电工作，通过纳米学位学会Android开发，业余开发1~2个App发布到市场，用java语言刷完leetcode算法题，适当学习Java语言满足Android开发和刷题的需求；&lt;/li&gt;
&lt;li&gt;伴随换工作的还有住房问题需要解决；&lt;/li&gt;
&lt;li&gt;继续深入学习投资，主要教材《聪明的投资者》、《手把手教你读财报》，以家庭基金形式运作投资，每月底发布净值和投资小结，减少归并投资账户。&lt;/li&gt;
&lt;li&gt;继续完善自己的治学体系，重点学习批判性思维，主要教材：《Beyond Fellings》、《学会提问》。&lt;/li&gt;
&lt;li&gt;每天一篇blog，每天github提交代码。&lt;/li&gt;
&lt;li&gt;长跑200公里，累计300公里，基于HIT、NEAT等理念在时间紧张时设法保持运动，维持体重，争取不感冒。&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;看了看，其实脸打得还不是很重。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;换工作这个大事已经完成了一半，终于从原来的公司脱身了，完成了搬家工作，以后去哪里还没有落实，但这是自由的；&lt;/li&gt;
&lt;li&gt;Android开发开了一个头之后暂时放弃了；&lt;/li&gt;
&lt;li&gt;LeetCode刷了不少题，但是没刷完，确实是用Java语言来做的；&lt;/li&gt;
&lt;li&gt;住房问题慎重考虑过，暂时应该不会买房了；&lt;/li&gt;
&lt;li&gt;投资的读书与操作计划都基本实现了，算是超额完成了任务，学完了公开课《财务分析与决策》，《聪明的投资者》需要继续读完，朝闻道家庭基金运作良好，净值达到了1.75。&lt;/li&gt;
&lt;li&gt;批判性思维的学习还没有认真实施；&lt;/li&gt;
&lt;li&gt;每天一篇blog执行得很好，只有少数日子是在第二天早上补完的；&lt;/li&gt;
&lt;li&gt;每天github提交代码没有实施，从今天开始实施；&lt;/li&gt;
&lt;li&gt;长跑了50多公里，按照计划的一年200公里，摊平计算只完成了一半，没有超过一天时间的感冒。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;其他年初没提及但完成了的事情：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;学习了台湾大学机器学习公开课，完成了所有的作业；&lt;/li&gt;
&lt;li&gt;驾照终于考到手了，帮父母挑车买车；&lt;/li&gt;
&lt;li&gt;学习了保险知识，基本完成了家庭的保险布局；&lt;/li&gt;
&lt;li&gt;读了《穷查理宝典》，发现智慧而多金正是我的奋斗目标。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;下半年根据年初计划未完成的部分和实际情况略作调整，挂在这里准备年底打脸用：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在一线城市大型IT公司找一份工作，优先考虑珠三角地区，优先考虑成长机会；&lt;/li&gt;
&lt;li&gt;做好户口迁移；&lt;/li&gt;
&lt;li&gt;投资方面，读完《聪明的投资者》，继续学习读财报，初步研究2~3个持仓的企业，美股港股投资开仓；&lt;/li&gt;
&lt;li&gt;学习数字货币的公开课，弄懂比特币的基本原理，有必要时复习补充密码学知识；&lt;/li&gt;
&lt;li&gt;读完《Beyond Fellings》；&lt;/li&gt;
&lt;li&gt;继续每天一篇blog；&lt;/li&gt;
&lt;li&gt;每天至少刷一道算法题，每天提交github代码，使用Java语言和Python语言，随学随用；&lt;/li&gt;
&lt;li&gt;继续学习机器学习，入门深度学习，在Kaggle等平台完成3~5个小项目，使用Python语言。&lt;/li&gt;
&lt;li&gt;长跑100公里，继续保持身体的健康。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>打脸的时候到了，以下是2017年初做2016年总结的时候写下的计划。</p>
<blockquote>
<h2 id="2017重大计划">2017重大计划</h2>
<ol>
<li>换工作，这需要一些充电工作，通过纳米学位学会Android开发，业余开发1~2个App发布到市场，用java语言刷完leetcode算法题，适当学习Java语言满足Android开发和刷题的需求；</li>
<li>伴随换工作的还有住房问题需要解决；</li>
<li>继续深入学习投资，主要教材《聪明的投资者》、《手把手教你读财报》，以家庭基金形式运作投资，每月底发布净值和投资小结，减少归并投资账户。</li>
<li>继续完善自己的治学体系，重点学习批判性思维，主要教材：《Beyond Fellings》、《学会提问》。</li>
<li>每天一篇blog，每天github提交代码。</li>
<li>长跑200公里，累计300公里，基于HIT、NEAT等理念在时间紧张时设法保持运动，维持体重，争取不感冒。</li>
</ol>
</blockquote>
<p>看了看，其实脸打得还不是很重。</p>
<ol>
<li>换工作这个大事已经完成了一半，终于从原来的公司脱身了，完成了搬家工作，以后去哪里还没有落实，但这是自由的；</li>
<li>Android开发开了一个头之后暂时放弃了；</li>
<li>LeetCode刷了不少题，但是没刷完，确实是用Java语言来做的；</li>
<li>住房问题慎重考虑过，暂时应该不会买房了；</li>
<li>投资的读书与操作计划都基本实现了，算是超额完成了任务，学完了公开课《财务分析与决策》，《聪明的投资者》需要继续读完，朝闻道家庭基金运作良好，净值达到了1.75。</li>
<li>批判性思维的学习还没有认真实施；</li>
<li>每天一篇blog执行得很好，只有少数日子是在第二天早上补完的；</li>
<li>每天github提交代码没有实施，从今天开始实施；</li>
<li>长跑了50多公里，按照计划的一年200公里，摊平计算只完成了一半，没有超过一天时间的感冒。</li>
</ol>
<p>其他年初没提及但完成了的事情：</p>
<ol>
<li>学习了台湾大学机器学习公开课，完成了所有的作业；</li>
<li>驾照终于考到手了，帮父母挑车买车；</li>
<li>学习了保险知识，基本完成了家庭的保险布局；</li>
<li>读了《穷查理宝典》，发现智慧而多金正是我的奋斗目标。</li>
</ol>
<p>下半年根据年初计划未完成的部分和实际情况略作调整，挂在这里准备年底打脸用：</p>
<ol>
<li>在一线城市大型IT公司找一份工作，优先考虑珠三角地区，优先考虑成长机会；</li>
<li>做好户口迁移；</li>
<li>投资方面，读完《聪明的投资者》，继续学习读财报，初步研究2~3个持仓的企业，美股港股投资开仓；</li>
<li>学习数字货币的公开课，弄懂比特币的基本原理，有必要时复习补充密码学知识；</li>
<li>读完《Beyond Fellings》；</li>
<li>继续每天一篇blog；</li>
<li>每天至少刷一道算法题，每天提交github代码，使用Java语言和Python语言，随学随用；</li>
<li>继续学习机器学习，入门深度学习，在Kaggle等平台完成3~5个小项目，使用Python语言。</li>
<li>长跑100公里，继续保持身体的健康。</li>
</ol>
]]></content:encoded><category>life</category><category domain="tags">总结</category><category domain="tags">反思</category></item><item><title>Learning Algorithm</title><link>https://yifeitao.com/learningalgorithm/</link><pubDate>Thu, 29 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/learningalgorithm/</guid><description>&lt;p&gt;最近家里买车，然后自己又在学财务知识，算下来快半个月没写代码了，心里有些发慌了。&lt;/p&gt;
&lt;p&gt;前些日子其实在github上开了一个repo叫做&lt;a href="https://github.com/yifeitao/LearningAlgorithm"
rel="noopener noreferrer" target="_blank" class="external"&gt;LearningAlgorithm&lt;/a&gt;
，口号叫做“拳要打，字要写(xia)”，基础算法一是基本功，二是一种基本的编程训练，三是一种智力训练，可以当作日常活动坚持下去。&lt;/p&gt;
&lt;p&gt;决定从下半年起（7月1号），将日刷一题，题目可以来自类似LeetCode的编程训练网站，也可以是类似Project Euler的偏向数学的算法题目，编程语言暂时将以Java和Python为主。&lt;/p&gt;</description><content:encoded><![CDATA[<p>最近家里买车，然后自己又在学财务知识，算下来快半个月没写代码了，心里有些发慌了。</p>
<p>前些日子其实在github上开了一个repo叫做<a href="https://github.com/yifeitao/LearningAlgorithm"
   rel="noopener noreferrer" target="_blank" class="external">LearningAlgorithm</a>
，口号叫做“拳要打，字要写(xia)”，基础算法一是基本功，二是一种基本的编程训练，三是一种智力训练，可以当作日常活动坚持下去。</p>
<p>决定从下半年起（7月1号），将日刷一题，题目可以来自类似LeetCode的编程训练网站，也可以是类似Project Euler的偏向数学的算法题目，编程语言暂时将以Java和Python为主。</p>
]]></content:encoded><category>coding</category><category domain="tags">算法</category><category domain="tags">学习</category></item><item><title>信息时代的独狼</title><link>https://yifeitao.com/wolf/</link><pubDate>Wed, 28 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/wolf/</guid><description>&lt;p&gt;昨天开始学习读财报，想要下载一份茅台的年报看看，首先到了证监会指定的巨潮信息网，虽然找到了，但是这个网站比较难用，感觉设计思路是十年前的，于是想找一找有没有更合适的软件，暂时也没找到，只是因此再次试用了企信和天眼查这样的工具。&lt;/p&gt;
&lt;p&gt;想起来前些日子有个朋友说自己开始创业了，于是好奇用企信搜了一下他的名字，发现同名同姓的还真不少，于是用地域再过滤了一下，还真一下找到了朋友公司的名字以及包括注册地址、股权结构之类的信息。&lt;/p&gt;
&lt;p&gt;发现这些信息搜索工具已经进化得很好用了，一个人坐在电脑前，能够获得的信息，已经相当骇人，比如搜一下某明星的名字，就可以找到她投资或持股的关联企业。&lt;/p&gt;
&lt;p&gt;信息时代的进步，其实是给了我们一个当独狼的机会，借助于强大的信息工具，我们能把自己的视线延伸到以前难以想象的程度，一个人轻松的完成以前需要一个团队完成的调研工作，我最近要完成一次信息源的清理与扩充工作，因为时间长了，难免就会形成一些固定的信息源，很容易掉进自己给自己划定的圈子里。&lt;/p&gt;</description><content:encoded><![CDATA[<p>昨天开始学习读财报，想要下载一份茅台的年报看看，首先到了证监会指定的巨潮信息网，虽然找到了，但是这个网站比较难用，感觉设计思路是十年前的，于是想找一找有没有更合适的软件，暂时也没找到，只是因此再次试用了企信和天眼查这样的工具。</p>
<p>想起来前些日子有个朋友说自己开始创业了，于是好奇用企信搜了一下他的名字，发现同名同姓的还真不少，于是用地域再过滤了一下，还真一下找到了朋友公司的名字以及包括注册地址、股权结构之类的信息。</p>
<p>发现这些信息搜索工具已经进化得很好用了，一个人坐在电脑前，能够获得的信息，已经相当骇人，比如搜一下某明星的名字，就可以找到她投资或持股的关联企业。</p>
<p>信息时代的进步，其实是给了我们一个当独狼的机会，借助于强大的信息工具，我们能把自己的视线延伸到以前难以想象的程度，一个人轻松的完成以前需要一个团队完成的调研工作，我最近要完成一次信息源的清理与扩充工作，因为时间长了，难免就会形成一些固定的信息源，很容易掉进自己给自己划定的圈子里。</p>
]]></content:encoded><category>investment</category><category domain="tags">社会</category><category domain="tags">独立</category></item><item><title>比特币课程</title><link>https://yifeitao.com/bitcoin-course/</link><pubDate>Tue, 27 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/bitcoin-course/</guid><description>&lt;p&gt;比特币这个东西，了解的时间不短了，但是一直是关注了个皮毛，防御性的买了一点点比特币作为激进投资，不过最近意识到这是一个去中心化应用的模范，可能带来的是互联网的一次革命，所以决心深入学习一下，找了一下发现普林斯顿大学的一门mooc课程作为入门相当不错。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/learn/cryptocurrency/home/welcome"
rel="noopener noreferrer" target="_blank" class="external"&gt;mooc主页&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://piazza.com/princeton/spring2015/btctech/resources"
rel="noopener noreferrer" target="_blank" class="external"&gt;课程主页&lt;/a&gt;
(包含PPT，草稿版教材)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://gen.lib.rus.ec/book/index.php?md5=A32A2E8BC0A10CE1BED09367CB6642EA"
rel="noopener noreferrer" target="_blank" class="external"&gt;正式版教材英文电子版&lt;/a&gt;
(注意版权问题)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/26860970/"
rel="noopener noreferrer" target="_blank" class="external"&gt;正式版教材中文纸质版&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意，国内有翻译，可以在优酷上&lt;a href="http://v.youku.com/v_show/id_XOTYzOTcyMTQ4.html"
rel="noopener noreferrer" target="_blank" class="external"&gt;看到&lt;/a&gt;
，不过我在看了二十分钟后，还是滚回去看英文了，因为翻译得很有问题，看起来比英文还难懂。&lt;/p&gt;
&lt;p&gt;学习比特币需要密码学知识，不过如果不做深入研究，看看日本人的图画书&lt;a href="http://www.ituring.com.cn/book/1737"
rel="noopener noreferrer" target="_blank" class="external"&gt;《图解密码技术》&lt;/a&gt;
该够了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>比特币这个东西，了解的时间不短了，但是一直是关注了个皮毛，防御性的买了一点点比特币作为激进投资，不过最近意识到这是一个去中心化应用的模范，可能带来的是互联网的一次革命，所以决心深入学习一下，找了一下发现普林斯顿大学的一门mooc课程作为入门相当不错。</p>
<ol>
<li><a href="https://www.coursera.org/learn/cryptocurrency/home/welcome"
   rel="noopener noreferrer" target="_blank" class="external">mooc主页</a>
</li>
<li><a href="https://piazza.com/princeton/spring2015/btctech/resources"
   rel="noopener noreferrer" target="_blank" class="external">课程主页</a>
(包含PPT，草稿版教材)</li>
<li><a href="http://gen.lib.rus.ec/book/index.php?md5=A32A2E8BC0A10CE1BED09367CB6642EA"
   rel="noopener noreferrer" target="_blank" class="external">正式版教材英文电子版</a>
 (注意版权问题)</li>
<li><a href="https://book.douban.com/subject/26860970/"
   rel="noopener noreferrer" target="_blank" class="external">正式版教材中文纸质版</a>
</li>
</ol>
<p>注意，国内有翻译，可以在优酷上<a href="http://v.youku.com/v_show/id_XOTYzOTcyMTQ4.html"
   rel="noopener noreferrer" target="_blank" class="external">看到</a>
，不过我在看了二十分钟后，还是滚回去看英文了，因为翻译得很有问题，看起来比英文还难懂。</p>
<p>学习比特币需要密码学知识，不过如果不做深入研究，看看日本人的图画书<a href="http://www.ituring.com.cn/book/1737"
   rel="noopener noreferrer" target="_blank" class="external">《图解密码技术》</a>
该够了。</p>
]]></content:encoded><category>geek</category><category domain="tags">比特币</category><category domain="tags">课程</category></item><item><title>《穷查理宝典》：每天聪明一点点</title><link>https://yifeitao.com/poor-charlies-almanack/</link><pubDate>Mon, 26 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/poor-charlies-almanack/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s28964370.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;查理·芒格说，自己每天早上起来要觉得比前一天聪明一点点，而他达到这种效果的方法是，用他孩子的话说，他就是一本长了两条腿的书，他的老搭档——巴菲特，也和他一样热爱学习，一般来说，人们并不将知识渊博与十分有钱这两个特点直接联系起来，而查理·芒格则是同时符合这两个特征，我并不认为一定要用钱的多少来衡量人的价值，但是书中自有黄金屋的古训，我们可以在这个外国老头身上看得淋漓尽致，正确的理念得以践行后，能够取得极大的效果，查理·芒格是一个极佳的榜样。&lt;/p&gt;
&lt;p&gt;查理·芒格最强调的是普世智慧，而达到这一普世智慧的基本路径则是学习跨学科的知识，对不是自己专业的学科，并不需要全盘学习与掌握，而是掌握它的核心理念和主要模型，当分析一件事情的时候（对查理·芒格来说，这件事情主要是投资），综合使用若干模型，达到一种协同效应。以他本人来看，他首先是一名律师，在大学认知学过基础物理学，而后成了一个职业投资家，投资家本来就需要学很多很杂的知识，这就包括了会计学，经济学，心理学等等。他甚至提出了自己的一套心理学，虽然从学术角度可能不是那么严谨，但是却很实用的“人类误判心理学”，研究了人类为何会做出错误的判断。&lt;/p&gt;
&lt;p&gt;查理·芒格还强调了道德准则与制度的重要性，比如在商业社会中保持诚信，其实是能给自己带来更多利益的，尽管这不应当成为我们去推行道理的理由；只有能防止人钻空子的制度，才能提升整个社会的道德水平，而让人钻空子的制度，比如不合理的会计准则，而会给社会带来伤害。&lt;/p&gt;
&lt;p&gt;当然，查理·芒格也谈到了投资的方法，这是一种深入学习研究，等到确定性机会来临时下重注的方法，他及其反对那些频繁的投资操作，认为是投资行业“捞灰金”的一种行为，只不过是不断的制造摩擦成本，浪费投资者的钱。巴菲特师承格雷厄姆，本来只喜欢炒烟蒂股，但是受查理·芒格影响，而建立新的伯克希尔哈撒韦式的投资方法，成为了价值投资的典范。&lt;/p&gt;
&lt;p&gt;当今社会充满了浮躁的气息，尤其是那些整天面对股票过山车的投资者，保持理智而冷静的心及其重要而难得，查理·芒格的智慧箴言，有人认为是一锅鸡汤，但是这锅鸡汤是一剂消除浮躁的良药，它鼓励我们一步步一天天建立起自己的知识体系，在正确的道路上一直成长到老，而这样做的回报，不但有世俗意义上的金钱上的成功，更有着发现智慧的极大乐趣。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/lpic/s28964370.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>查理·芒格说，自己每天早上起来要觉得比前一天聪明一点点，而他达到这种效果的方法是，用他孩子的话说，他就是一本长了两条腿的书，他的老搭档——巴菲特，也和他一样热爱学习，一般来说，人们并不将知识渊博与十分有钱这两个特点直接联系起来，而查理·芒格则是同时符合这两个特征，我并不认为一定要用钱的多少来衡量人的价值，但是书中自有黄金屋的古训，我们可以在这个外国老头身上看得淋漓尽致，正确的理念得以践行后，能够取得极大的效果，查理·芒格是一个极佳的榜样。</p>
<p>查理·芒格最强调的是普世智慧，而达到这一普世智慧的基本路径则是学习跨学科的知识，对不是自己专业的学科，并不需要全盘学习与掌握，而是掌握它的核心理念和主要模型，当分析一件事情的时候（对查理·芒格来说，这件事情主要是投资），综合使用若干模型，达到一种协同效应。以他本人来看，他首先是一名律师，在大学认知学过基础物理学，而后成了一个职业投资家，投资家本来就需要学很多很杂的知识，这就包括了会计学，经济学，心理学等等。他甚至提出了自己的一套心理学，虽然从学术角度可能不是那么严谨，但是却很实用的“人类误判心理学”，研究了人类为何会做出错误的判断。</p>
<p>查理·芒格还强调了道德准则与制度的重要性，比如在商业社会中保持诚信，其实是能给自己带来更多利益的，尽管这不应当成为我们去推行道理的理由；只有能防止人钻空子的制度，才能提升整个社会的道德水平，而让人钻空子的制度，比如不合理的会计准则，而会给社会带来伤害。</p>
<p>当然，查理·芒格也谈到了投资的方法，这是一种深入学习研究，等到确定性机会来临时下重注的方法，他及其反对那些频繁的投资操作，认为是投资行业“捞灰金”的一种行为，只不过是不断的制造摩擦成本，浪费投资者的钱。巴菲特师承格雷厄姆，本来只喜欢炒烟蒂股，但是受查理·芒格影响，而建立新的伯克希尔哈撒韦式的投资方法，成为了价值投资的典范。</p>
<p>当今社会充满了浮躁的气息，尤其是那些整天面对股票过山车的投资者，保持理智而冷静的心及其重要而难得，查理·芒格的智慧箴言，有人认为是一锅鸡汤，但是这锅鸡汤是一剂消除浮躁的良药，它鼓励我们一步步一天天建立起自己的知识体系，在正确的道路上一直成长到老，而这样做的回报，不但有世俗意义上的金钱上的成功，更有着发现智慧的极大乐趣。</p>
]]></content:encoded><category>reading</category><category domain="tags">投资</category><category domain="tags">读书笔记</category></item><item><title>分期付款的实际年化利率</title><link>https://yifeitao.com/actual-rate-of-installment/</link><pubDate>Sun, 25 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/actual-rate-of-installment/</guid><description>&lt;p&gt;假如你在马云家买了个苹果手机，花了5000块，使用蚂蚁花呗分期付款，假设标称的12期分期付款年化利率是8%，简单计算一下&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;5000&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0.08&lt;/span&gt;)&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;每月还款数额为450块。&lt;/p&gt;
&lt;p&gt;嗯，余额宝收益也有4%啊，所以8%的借款利率也不是太高啊，但是真的是这样吗？&lt;/p&gt;
&lt;p&gt;真正的年化利率8%应该是什么意思呢？&lt;/p&gt;
&lt;p&gt;应该是一年之后我再还那5400块的本息。这跟每个月还450有什么区别呢？&lt;/p&gt;
&lt;p&gt;假设你还是每个月从工资中攒下来450块准备还手机钱，但是不是每月返还，而是放在余额宝里面，那么显然到一年之后，你不止攒下来5400块，这就是金融机构在你身上赚到的超过8%的利率的钱。&lt;/p&gt;
&lt;p&gt;参考一下&lt;a href="http://yifeitao.com/2017/01/time-value-of-money.html"
rel="noopener noreferrer" target="_blank" class="external"&gt;货币的现金价值&lt;/a&gt;
，简单点说，现在的1块钱和一年后的1块钱，对懂得投资的人来说，完全不是一回事，现在的1块钱，一年后不止1块钱，而一年后的1块钱，则现在不值一块钱，在金融术语里，把未来的钱，算成现在的价值，叫做贴现。&lt;/p&gt;
&lt;p&gt;为了计算实际利率，我们需要假设这些陆续还掉的5400块钱，按这个实际利率折算到现在的价值恰好是5000块钱，我们假设第一次还钱是买手机1个月后，实际月利率为$$i$$，那么有如下方程&lt;/p&gt;
&lt;p&gt;$$450/(1+i)+450/(1+i)^2+&amp;hellip;+450/(1+i)^{12}=5000$$&lt;/p&gt;
&lt;p&gt;这是一个等比数列，化简一下，得到&lt;/p&gt;
&lt;p&gt;$$i/(1-(1+i)^{-12})=0.09$$&lt;/p&gt;
&lt;p&gt;这个方程没有解析解，所以只能靠近似计算，一般可以用迭代法来解决这个问题。如果使用scipy来解，代码如下&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; sympy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;i &lt;span style="color:#f92672"&gt;=&lt;/span&gt; sympy&lt;span style="color:#f92672"&gt;.&lt;/span&gt;symbols(&lt;span style="color:#e6db74"&gt;&amp;#39;i&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;f &lt;span style="color:#f92672"&gt;=&lt;/span&gt; i &lt;span style="color:#f92672"&gt;/&lt;/span&gt; (&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt; (&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;i)&lt;span style="color:#f92672"&gt;**&lt;/span&gt;(&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;)) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0.09&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print(sympy&lt;span style="color:#f92672"&gt;.&lt;/span&gt;solve(f , i))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;正实数解为0.012，则年化利率大约为$$0.012*12=14.4%$$&lt;/p&gt;
&lt;p&gt;比标称的利率高了将近1倍。&lt;/p&gt;
&lt;p&gt;一般的，假设标称的月利率为$$j$$，分期数为$$n$$,实际月利率为$$i$$,则&lt;/p&gt;
&lt;p&gt;$$i/(1-(1+i)^{-n})=j+1/n$$&lt;/p&gt;
&lt;p&gt;不过上述求解方法需要会写一点代码，其实excel也提供了类似的计算工具，这需要用到用到IRR这个公式，它代表内部投资收益率，可以理解为把一段时间内所有的收入支出折算为现值，让它们的和为0，从而得到这个收益率。&lt;/p&gt;
&lt;p&gt;具体以上述买苹果手机为例，在excel 中的A1到A13格输入&lt;/p&gt;
&lt;p&gt;-5000
450
450
450
450
450
450
450
450
450
450
450
450&lt;/p&gt;
&lt;p&gt;A14格输入=IRR(A1:A13)，则同样可以求得月利率约为0.012。注意第0个月借入了5000，应该使用负数。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;最后的最后，一般如果按12个月或者24个月分期付款，实际利率大约为标称利率的2倍，作为一个经验公式，这样也够了。&lt;/strong&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<p>假如你在马云家买了个苹果手机，花了5000块，使用蚂蚁花呗分期付款，假设标称的12期分期付款年化利率是8%，简单计算一下</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ae81ff">5000</span><span style="color:#f92672">*</span>(<span style="color:#ae81ff">1</span><span style="color:#f92672">+</span><span style="color:#ae81ff">0.08</span>)<span style="color:#f92672">/</span><span style="color:#ae81ff">12</span></span></span></code></pre></div>
<p>每月还款数额为450块。</p>
<p>嗯，余额宝收益也有4%啊，所以8%的借款利率也不是太高啊，但是真的是这样吗？</p>
<p>真正的年化利率8%应该是什么意思呢？</p>
<p>应该是一年之后我再还那5400块的本息。这跟每个月还450有什么区别呢？</p>
<p>假设你还是每个月从工资中攒下来450块准备还手机钱，但是不是每月返还，而是放在余额宝里面，那么显然到一年之后，你不止攒下来5400块，这就是金融机构在你身上赚到的超过8%的利率的钱。</p>
<p>参考一下<a href="http://yifeitao.com/2017/01/time-value-of-money.html"
   rel="noopener noreferrer" target="_blank" class="external">货币的现金价值</a>
，简单点说，现在的1块钱和一年后的1块钱，对懂得投资的人来说，完全不是一回事，现在的1块钱，一年后不止1块钱，而一年后的1块钱，则现在不值一块钱，在金融术语里，把未来的钱，算成现在的价值，叫做贴现。</p>
<p>为了计算实际利率，我们需要假设这些陆续还掉的5400块钱，按这个实际利率折算到现在的价值恰好是5000块钱，我们假设第一次还钱是买手机1个月后，实际月利率为$$i$$，那么有如下方程</p>
<p>$$450/(1+i)+450/(1+i)^2+&hellip;+450/(1+i)^{12}=5000$$</p>
<p>这是一个等比数列，化简一下，得到</p>
<p>$$i/(1-(1+i)^{-12})=0.09$$</p>
<p>这个方程没有解析解，所以只能靠近似计算，一般可以用迭代法来解决这个问题。如果使用scipy来解，代码如下</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> sympy
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>i <span style="color:#f92672">=</span> sympy<span style="color:#f92672">.</span>symbols(<span style="color:#e6db74">&#39;i&#39;</span>)
</span></span><span style="display:flex;"><span>f <span style="color:#f92672">=</span> i <span style="color:#f92672">/</span> (<span style="color:#ae81ff">1</span> <span style="color:#f92672">-</span> (<span style="color:#ae81ff">1</span><span style="color:#f92672">+</span>i)<span style="color:#f92672">**</span>(<span style="color:#f92672">-</span><span style="color:#ae81ff">12</span>)) <span style="color:#f92672">-</span> <span style="color:#ae81ff">0.09</span>
</span></span><span style="display:flex;"><span>print(sympy<span style="color:#f92672">.</span>solve(f , i))</span></span></code></pre></div>
<p>正实数解为0.012，则年化利率大约为$$0.012*12=14.4%$$</p>
<p>比标称的利率高了将近1倍。</p>
<p>一般的，假设标称的月利率为$$j$$，分期数为$$n$$,实际月利率为$$i$$,则</p>
<p>$$i/(1-(1+i)^{-n})=j+1/n$$</p>
<p>不过上述求解方法需要会写一点代码，其实excel也提供了类似的计算工具，这需要用到用到IRR这个公式，它代表内部投资收益率，可以理解为把一段时间内所有的收入支出折算为现值，让它们的和为0，从而得到这个收益率。</p>
<p>具体以上述买苹果手机为例，在excel 中的A1到A13格输入</p>
<p>-5000
450
450
450
450
450
450
450
450
450
450
450
450</p>
<p>A14格输入=IRR(A1:A13)，则同样可以求得月利率约为0.012。注意第0个月借入了5000，应该使用负数。</p>
<p><strong>最后的最后，一般如果按12个月或者24个月分期付款，实际利率大约为标称利率的2倍，作为一个经验公式，这样也够了。</strong></p>
]]></content:encoded><category>investment</category><category domain="tags">金融</category><category domain="tags">数学</category></item><item><title>乒乓</title><link>https://yifeitao.com/ping-pong/</link><pubDate>Sat, 24 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/ping-pong/</guid><description>&lt;p&gt;为了抗议对主教练刘国梁的调动，中国乒乓球队队员在大奖赛上退赛抗议，在互联网上激起了激烈的讨论，而官方对此依然是一贯的腔调。对于体育的内幕我不甚了解，所以谈不上有什么见解，倒是看了某经济学家的评论，觉得很有意思，他说乒乓球一贯胜利，且没有观赏性，按照经济学原理，这种项目就活该被淘汰。&lt;/p&gt;
&lt;p&gt;我想到的是，我经济学没有这位大师学得好，但还懂点常识，讲点良心。乒乓球的优势，可能是来自举国体制，但是如果是兔死狗烹，用完夜壶就扔，还真不能用经济学去衡量，这种人就是查理·芒格说的铁锤人吧，又或者根本就是居心不良。&lt;/p&gt;</description><content:encoded>&lt;p>为了抗议对主教练刘国梁的调动，中国乒乓球队队员在大奖赛上退赛抗议，在互联网上激起了激烈的讨论，而官方对此依然是一贯的腔调。对于体育的内幕我不甚了解，所以谈不上有什么见解，倒是看了某经济学家的评论，觉得很有意思，他说乒乓球一贯胜利，且没有观赏性，按照经济学原理，这种项目就活该被淘汰。&lt;/p>
&lt;p>我想到的是，我经济学没有这位大师学得好，但还懂点常识，讲点良心。乒乓球的优势，可能是来自举国体制，但是如果是兔死狗烹，用完夜壶就扔，还真不能用经济学去衡量，这种人就是查理·芒格说的铁锤人吧，又或者根本就是居心不良。&lt;/p>
</content:encoded><category>viewpoint</category><category domain="tags">运动</category><category domain="tags">乒乓球</category></item><item><title>《棋王》：一部有趣的大杂烩电影</title><link>https://yifeitao.com/king-of-chess/</link><pubDate>Wed, 21 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/king-of-chess/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2189107743.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;这部电影的原作阿城、导演严浩、徐克，监制侯孝贤、主演梁家辉、金士杰、原创音乐罗大佑，每一个都是鼎鼎大名，从纯电影的艺术性来说，它并没有达到原作的那种高度，而是杂糅了太多的东西在一部电影中，这使得这部电影很难称得上经典，但却可以说是有趣。&lt;/p&gt;
&lt;p&gt;这部1991年的香港电影，剧本除了源自阿城名作《棋王》外，还杂糅了台湾的科幻小说《棋王》。电影用一个香港人串联起上山下乡的大陆和当下的台湾，其实是有些牵强，但是不变的是，在上山下乡时对人们对未来怀着一无所知的不确定，而1991年的香港人想到1997年，也是怀着巨大的不确定。&lt;/p&gt;
&lt;p&gt;今年是香港回归20周年，现在香港和大陆的关系很是微妙，回过头来再看看97回归前香港导演那些带着问号的作品，有一种奇特的趣味。&lt;/p&gt;
&lt;p&gt;片头是罗大佑的爱人同志：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;每一次闭上了眼就想到了你,
你象一句美丽的口号挥不去.
在这批判斗争的世界里,
每个人都要学习保护自己.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;而画面配的是毛泽东接见红卫兵，单单这几分钟的彩色画面，配上罗大佑的歌曲，这部电影就值得一看了。&lt;/p&gt;
&lt;p&gt;第二个看点则是梁家辉的演技，小说中我记忆深刻的火车上吃饭以及最后的以一敌九都很传神，我想如果电影拍得更加忠实原著，他的发挥空间应该更大。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2189107743.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这部电影的原作阿城、导演严浩、徐克，监制侯孝贤、主演梁家辉、金士杰、原创音乐罗大佑，每一个都是鼎鼎大名，从纯电影的艺术性来说，它并没有达到原作的那种高度，而是杂糅了太多的东西在一部电影中，这使得这部电影很难称得上经典，但却可以说是有趣。</p>
<p>这部1991年的香港电影，剧本除了源自阿城名作《棋王》外，还杂糅了台湾的科幻小说《棋王》。电影用一个香港人串联起上山下乡的大陆和当下的台湾，其实是有些牵强，但是不变的是，在上山下乡时对人们对未来怀着一无所知的不确定，而1991年的香港人想到1997年，也是怀着巨大的不确定。</p>
<p>今年是香港回归20周年，现在香港和大陆的关系很是微妙，回过头来再看看97回归前香港导演那些带着问号的作品，有一种奇特的趣味。</p>
<p>片头是罗大佑的爱人同志：</p>


<pre tabindex="0"><code>每一次闭上了眼就想到了你,
你象一句美丽的口号挥不去.
在这批判斗争的世界里,
每个人都要学习保护自己.</code></pre>
<p>而画面配的是毛泽东接见红卫兵，单单这几分钟的彩色画面，配上罗大佑的歌曲，这部电影就值得一看了。</p>
<p>第二个看点则是梁家辉的演技，小说中我记忆深刻的火车上吃饭以及最后的以一敌九都很传神，我想如果电影拍得更加忠实原著，他的发挥空间应该更大。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">围棋</category></item><item><title>信息时代的实体店</title><link>https://yifeitao.com/physical-store/</link><pubDate>Mon, 19 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/physical-store/</guid><description>&lt;p&gt;在网购了这么多年后，我今天开始感受到实体店的一丝丝善意。&lt;/p&gt;
&lt;p&gt;第一次是前几个月手机屏摔坏了，想换个屏幕，以前也用过网络上的送修服务，体验不错，只是当时待的城市寄来寄去比较麻烦，但是实体维修店，我总是怀着一股恐惧，生怕他们报出一个天价来，而冒着太阳一家家问价格，又觉得累，所以磨蹭了好久也没去修，某天逛街的时候看见一家手机快修店，明码标价，比网上报价还低一些，于是愉快的换了一块屏。&lt;/p&gt;
&lt;p&gt;第二次是昨天去看帮老爸看车，发现问到具体价格的好几个车型，商家的报价和汽车之家上报价都一模一样，中间基本上就没有讨价还价的过程，虽然暂时没买成，但是以前那种买东西生怕被人宰一刀的感觉确实没那么强烈了。&lt;/p&gt;
&lt;p&gt;以微信为代表的最后一拨互联网人口扩张之后，基本上所有的消费者都联网了，商家利用信息不对称来坑害消费者变得难度越来越大，互联网带来了强烈的马太效应，如果你的实体店服务好，价格公道，那么互联网可以变成你的口碑放大器，反之，如果你坑害消费者，则会被打入十八层地狱。对诚信经营的人来说，这是一件好事，我衷心希望雷军的小米之家计划取得成功，让大家知道厚道的赚钱，也是可以赚大钱的，而不是靠忽悠把价格抬上去，浪费无数的精力在话术上。&lt;/p&gt;
&lt;p&gt;在可预期的未来，实体店依然有着很重要的位置，因为暂时难以替代的体验，而信息时代的实体店，面对汹涌的消费者意愿与评价，应该做好服务升级，给消费者一种像网购一样的信息透明体验，线上线下互动，保持相似的价格。如果要达到同价的程度，考虑到铺租问题，实体店利润率可能偏低，那么就必然要求销量，以及对线上销售的带动，所以可以遇见，将会又一场资本巨头间的实体店对决浪潮，因为毕竟，互联网的疆土已经开辟得差不多了，要深耕下去还是离不开实体的。&lt;/p&gt;</description><content:encoded><![CDATA[<p>在网购了这么多年后，我今天开始感受到实体店的一丝丝善意。</p>
<p>第一次是前几个月手机屏摔坏了，想换个屏幕，以前也用过网络上的送修服务，体验不错，只是当时待的城市寄来寄去比较麻烦，但是实体维修店，我总是怀着一股恐惧，生怕他们报出一个天价来，而冒着太阳一家家问价格，又觉得累，所以磨蹭了好久也没去修，某天逛街的时候看见一家手机快修店，明码标价，比网上报价还低一些，于是愉快的换了一块屏。</p>
<p>第二次是昨天去看帮老爸看车，发现问到具体价格的好几个车型，商家的报价和汽车之家上报价都一模一样，中间基本上就没有讨价还价的过程，虽然暂时没买成，但是以前那种买东西生怕被人宰一刀的感觉确实没那么强烈了。</p>
<p>以微信为代表的最后一拨互联网人口扩张之后，基本上所有的消费者都联网了，商家利用信息不对称来坑害消费者变得难度越来越大，互联网带来了强烈的马太效应，如果你的实体店服务好，价格公道，那么互联网可以变成你的口碑放大器，反之，如果你坑害消费者，则会被打入十八层地狱。对诚信经营的人来说，这是一件好事，我衷心希望雷军的小米之家计划取得成功，让大家知道厚道的赚钱，也是可以赚大钱的，而不是靠忽悠把价格抬上去，浪费无数的精力在话术上。</p>
<p>在可预期的未来，实体店依然有着很重要的位置，因为暂时难以替代的体验，而信息时代的实体店，面对汹涌的消费者意愿与评价，应该做好服务升级，给消费者一种像网购一样的信息透明体验，线上线下互动，保持相似的价格。如果要达到同价的程度，考虑到铺租问题，实体店利润率可能偏低，那么就必然要求销量，以及对线上销售的带动，所以可以遇见，将会又一场资本巨头间的实体店对决浪潮，因为毕竟，互联网的疆土已经开辟得差不多了，要深耕下去还是离不开实体的。</p>
]]></content:encoded><category>life</category><category domain="tags">商业</category><category domain="tags">零售</category></item><item><title>暂住证</title><link>https://yifeitao.com/zanzhu-zheng/</link><pubDate>Sun, 18 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/zanzhu-zheng/</guid><description>&lt;p&gt;这两个月准备都呆在老家了，老婆也想考个驾照，考虑到这边学车离家近，而且学费便宜，所以就准备在这边的驾校报名学车。&lt;/p&gt;
&lt;p&gt;问题来了，从我国的规定来说，我已经不是本地人了，更不用说我老婆，而外地人学车需要暂住证，我不知道这里的理由是啥，我爸说，这个不用担心，多给驾校200块，都给你搞定。&lt;/p&gt;
&lt;p&gt;不过前几天，我还是怀着无可奈何的天真，跑带社区派出所咨询了一下，人家很客气的说，要不你把户口迁过来吧，那样比较快，要不然要等6个月哦。&lt;/p&gt;
&lt;p&gt;呵呵，最后我们还是给了多给了驾校200块。据老婆说，那200块倒也不是驾校要的，而是一种中介。&lt;/p&gt;
&lt;p&gt;我已经分不清我是不是该感谢这些办证的中介了，呵呵。&lt;/p&gt;
&lt;p&gt;呵呵呵。&lt;/p&gt;</description><content:encoded><![CDATA[<p>这两个月准备都呆在老家了，老婆也想考个驾照，考虑到这边学车离家近，而且学费便宜，所以就准备在这边的驾校报名学车。</p>
<p>问题来了，从我国的规定来说，我已经不是本地人了，更不用说我老婆，而外地人学车需要暂住证，我不知道这里的理由是啥，我爸说，这个不用担心，多给驾校200块，都给你搞定。</p>
<p>不过前几天，我还是怀着无可奈何的天真，跑带社区派出所咨询了一下，人家很客气的说，要不你把户口迁过来吧，那样比较快，要不然要等6个月哦。</p>
<p>呵呵，最后我们还是给了多给了驾校200块。据老婆说，那200块倒也不是驾校要的，而是一种中介。</p>
<p>我已经分不清我是不是该感谢这些办证的中介了，呵呵。</p>
<p>呵呵呵。</p>
]]></content:encoded><category>life</category><category domain="tags">社会</category><category domain="tags">制度</category></item><item><title>《财务分析与决策》课程初学感想</title><link>https://yifeitao.com/financial-analysis/</link><pubDate>Thu, 15 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/financial-analysis/</guid><description>&lt;p&gt;之前一直想学点财务知识，否则财经新闻都看不懂，最近看到查理芒格的建议后更加坚定了要学的信心，目前在学的课程是清华大学的公开课&lt;a href="http://www.xuetangx.com/courses/course-v1:TsinghuaX&amp;#43;80512073X&amp;#43;2016--T2/about"
rel="noopener noreferrer" target="_blank" class="external"&gt;《财务分析与决策》&lt;/a&gt;
。&lt;/p&gt;
&lt;p&gt;以前我对会计的理解，就是算账，现在学了几课以后，有一个初步的认识就是，关键在于帐怎么记，尤其对股份制公司来说，股东不可能完全参与到公司的运营中去，那么看报表就是一个很重要的手段，会计做账的准则给出了很多限定，但是总是存在腾挪的空间，而写报告的人和看报告的人的利益并不总是一致的，所以同样的事情，可能通过不同的手段，在报表上有不同的体现，而报表上同样的数字，不同的人也会有不同的理解。&lt;/p&gt;
&lt;p&gt;比如，会计准则规定，公司外购的技术作为无形资产计入资产，而公司自研的技术则不能计入资产，所有的相关开销只能计入开销，最多只能把申请专利花的一丁点费用计入无形资产，如果企业想要让无形资产多一点，一般会把研发部分作为独立核算的子公司，这样就变成了向这个子公司购买技术。&lt;/p&gt;
&lt;p&gt;想想看，类似这样的一手资料已经是满地坑了，那些看“内幕消息”炒股的人，不是只能被人玩弄于鼓掌之中么，所以说投资领域，尤其是股市，就是一个修罗场。然而，对懂行的人来说，信息无论真假，无论是否失真，其实都有一定的价值，如果你发现什么数据有猫腻，那可能正是企业想掩盖什么，这样的企业还是远离为妙。&lt;/p&gt;
&lt;p&gt;现代社会的基本运作形式之一是公司，会计财务语言是重要的描述形式，然而普通人对它的运作的理解，可能比对政府的理解可能还少，虽然了解多一点不见得就不会被坑，但是总归概率要低不少，所以财务分析与决策课，简直应该是现代人，尤其是大学生的必修课嘛。难怪查理芒格各种推荐哈佛法学院的学生学一些会计知识，这种人还真是“家有一老，好有一宝”型的。听人劝，吃饱饭，我老老实实学完学好这门课吧。&lt;/p&gt;</description><content:encoded><![CDATA[<p>之前一直想学点财务知识，否则财经新闻都看不懂，最近看到查理芒格的建议后更加坚定了要学的信心，目前在学的课程是清华大学的公开课<a href="http://www.xuetangx.com/courses/course-v1:TsinghuaX&#43;80512073X&#43;2016--T2/about"
   rel="noopener noreferrer" target="_blank" class="external">《财务分析与决策》</a>
。</p>
<p>以前我对会计的理解，就是算账，现在学了几课以后，有一个初步的认识就是，关键在于帐怎么记，尤其对股份制公司来说，股东不可能完全参与到公司的运营中去，那么看报表就是一个很重要的手段，会计做账的准则给出了很多限定，但是总是存在腾挪的空间，而写报告的人和看报告的人的利益并不总是一致的，所以同样的事情，可能通过不同的手段，在报表上有不同的体现，而报表上同样的数字，不同的人也会有不同的理解。</p>
<p>比如，会计准则规定，公司外购的技术作为无形资产计入资产，而公司自研的技术则不能计入资产，所有的相关开销只能计入开销，最多只能把申请专利花的一丁点费用计入无形资产，如果企业想要让无形资产多一点，一般会把研发部分作为独立核算的子公司，这样就变成了向这个子公司购买技术。</p>
<p>想想看，类似这样的一手资料已经是满地坑了，那些看“内幕消息”炒股的人，不是只能被人玩弄于鼓掌之中么，所以说投资领域，尤其是股市，就是一个修罗场。然而，对懂行的人来说，信息无论真假，无论是否失真，其实都有一定的价值，如果你发现什么数据有猫腻，那可能正是企业想掩盖什么，这样的企业还是远离为妙。</p>
<p>现代社会的基本运作形式之一是公司，会计财务语言是重要的描述形式，然而普通人对它的运作的理解，可能比对政府的理解可能还少，虽然了解多一点不见得就不会被坑，但是总归概率要低不少，所以财务分析与决策课，简直应该是现代人，尤其是大学生的必修课嘛。难怪查理芒格各种推荐哈佛法学院的学生学一些会计知识，这种人还真是“家有一老，好有一宝”型的。听人劝，吃饱饭，我老老实实学完学好这门课吧。</p>
]]></content:encoded><category>investment</category><category domain="tags">金融</category><category domain="tags">学习</category></item><item><title>无限可能</title><link>https://yifeitao.com/infinite-possibilities/</link><pubDate>Wed, 14 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/infinite-possibilities/</guid><description>&lt;p&gt;在公园和家人散步的时候，接到电话，说是辞职批准了，过几个月去办离职手续，这场漫长的告别就完了。&lt;/p&gt;
&lt;p&gt;我的偶像之一是经济学家杨小凯，他十几岁的时候，在文革中，写了一篇《中国像何处去》，思考了一些自己不该思考的问题，被关进了监狱，这段经历后来写就了一本叫《牛鬼蛇神录》的有趣的书，我说它有趣，是看到杨小凯在监狱中是如何学习的，那些“牛鬼蛇神”有的是教授，有的是奇才，杨小凯广泛拜师，经济学家的底子居然是在监狱里打下的。&lt;/p&gt;
&lt;p&gt;你永远都可以选择，即使是在监狱中，也可以选择学习。选择构筑了人生。我选择了从现在的公司辞职，是为了有更多选择的权力。我接完电话，走在公园里，有一种自己能有无限可能的感觉。&lt;/p&gt;
&lt;p&gt;如果不想这种感觉变成一种错觉，唯有警醒着努力了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>在公园和家人散步的时候，接到电话，说是辞职批准了，过几个月去办离职手续，这场漫长的告别就完了。</p>
<p>我的偶像之一是经济学家杨小凯，他十几岁的时候，在文革中，写了一篇《中国像何处去》，思考了一些自己不该思考的问题，被关进了监狱，这段经历后来写就了一本叫《牛鬼蛇神录》的有趣的书，我说它有趣，是看到杨小凯在监狱中是如何学习的，那些“牛鬼蛇神”有的是教授，有的是奇才，杨小凯广泛拜师，经济学家的底子居然是在监狱里打下的。</p>
<p>你永远都可以选择，即使是在监狱中，也可以选择学习。选择构筑了人生。我选择了从现在的公司辞职，是为了有更多选择的权力。我接完电话，走在公园里，有一种自己能有无限可能的感觉。</p>
<p>如果不想这种感觉变成一种错觉，唯有警醒着努力了。</p>
]]></content:encoded><category>life</category><category domain="tags">人生</category><category domain="tags">可能性</category></item><item><title>《神奇女侠》：乱改经典</title><link>https://yifeitao.com/wonder-woman/</link><pubDate>Tue, 13 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/wonder-woman/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2460006593.webp" alt="p2460006593.webp" loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;对美国的超级英雄我不是很了解，在看了这部电影后，简单学习了一下神奇女侠的背景，发现六小龄童深恶痛绝的乱改经典的，美国人干得热火朝天啊。&lt;/p&gt;
&lt;p&gt;神奇女侠原来是宙斯的众多儿女中的一个，电影中二战故事的boss战居然是宙斯的女儿和宙斯的儿子的大战。但是你不得不承认，好莱坞电影的配方就像炸薯片一样恰到好处，有神话，有战争场面，有儿女情长，还融合得很像一回事。不过这种电影经不起仔细推敲，比如boss为什么要出现找死这种奇怪的设定，以及好像半人半神的亚马逊族人为啥一枪毙命之类的。&lt;/p&gt;
&lt;p&gt;由于题材的限制，前几年抗日剧扎堆，突然搞出了很多神剧，我由于基本上不看电视剧所以只是有所耳闻，看完《神奇女侠》后突然想到，那或许也是一种创新吧。我脑补了一下抗日战争的电影中，出现了孙悟空或者玉皇大帝之类的，顿时觉得非常违和，估计即使有开脑洞的编剧，也会被广电大爷一巴掌拍飞吧。于是我更加期待了。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2460006593.webp" alt="p2460006593.webp" loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>对美国的超级英雄我不是很了解，在看了这部电影后，简单学习了一下神奇女侠的背景，发现六小龄童深恶痛绝的乱改经典的，美国人干得热火朝天啊。</p>
<p>神奇女侠原来是宙斯的众多儿女中的一个，电影中二战故事的boss战居然是宙斯的女儿和宙斯的儿子的大战。但是你不得不承认，好莱坞电影的配方就像炸薯片一样恰到好处，有神话，有战争场面，有儿女情长，还融合得很像一回事。不过这种电影经不起仔细推敲，比如boss为什么要出现找死这种奇怪的设定，以及好像半人半神的亚马逊族人为啥一枪毙命之类的。</p>
<p>由于题材的限制，前几年抗日剧扎堆，突然搞出了很多神剧，我由于基本上不看电视剧所以只是有所耳闻，看完《神奇女侠》后突然想到，那或许也是一种创新吧。我脑补了一下抗日战争的电影中，出现了孙悟空或者玉皇大帝之类的，顿时觉得非常违和，估计即使有开脑洞的编剧，也会被广电大爷一巴掌拍飞吧。于是我更加期待了。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">超级英雄</category></item><item><title>读书有什么用</title><link>https://yifeitao.com/whats-the-use-of-reading/</link><pubDate>Tue, 06 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/whats-the-use-of-reading/</guid><description>&lt;p&gt;读书有什么用，这是个老生常谈的话题了，促使我再次思考这一问题有两个事情。&lt;/p&gt;
&lt;p&gt;第一件事情是我在搬家的时候，把很多书送人了，其中也有一些看过的育儿和教育的书，有一个朋友问：“你觉得看育儿的书对带孩子真的有帮助吗？我觉得好像没有什么用。”我愣了一下，只能笼统的回答了一句：“看育儿的书不见得能产生立竿见影的效果，但是能潜移默化的提高育儿的水平”。&lt;/p&gt;
&lt;p&gt;第二件事是我接触投资后，发现世界上最成功的投资者之一沃伦·巴菲特就是个书虫，他的合伙人查理·芒格也被人戏称为长了两条腿的书，而世界首富比尔·盖茨也是很爱读书的，每年都会向大众推荐书单。在当下的中国，判断成功的世俗标准非常简单，就是有钱，所以反驳这些人的读书无用论就应该拿巴菲特、比尔盖茨的例子来堵住他们的嘴嘛！&lt;/p&gt;
&lt;p&gt;书读得多，但是没有理解，没有读透，没有学以致用，读成了书呆子，固然是不好，但是正如杨绛先生说的：“你的问题主要是读书不多而想得太多”。很多人根本就没有看过几本书，也不知道什么书是好书，靠自己的臆想就敢说读书无用了。&lt;/p&gt;
&lt;p&gt;我现在觉得读书的用处大致可以分为两个层次。&lt;/p&gt;
&lt;p&gt;一是“小学”，为了安身立命，我们需要掌握很多的生存技能，需要有一定的专长，固然学习有很多手段和途径，然而读书依然是性价比极高的一种方法，书不贵，在互联网时代，甚至接近免费，任何领域，任何技能，无论是治国还是烹小鲜几乎都能找到书来学习，书一般比较系统完整，没有网络信息杂乱的缺点。比如你要学编程，除了实践写代码，必然是要看很多书的，又比如投资股市，不系统的看几本书就进场的，凶多吉少。之所以说这些是“小学”，可能更多的还是在说方法论，这种读书是相对功利的。&lt;/p&gt;
&lt;p&gt;二是“大学”，就像育儿带孩子这种事，必然是因人而异的，每个孩子都有自己的特点，教育是在互动中实现的，可能学具体的育儿方法不见得实用，投资也是这样，你可能在书上看到一些低风险套利的方法，但是写到书中的方法一般已经被滥用而失去了效力。读书的“大学”，应当是在广泛涉猎后，搭建起自己的知识体系与决策体系，做到所谓的融会贯通，要做到这一点，当然要靠思考，但是读书的量也是必不可少的，有句话叫腹有诗书气自华，讲的就是读书的沉淀的作用，你读懂过越多不同的书，它们就越会在你的头脑中形成一个网络，产生巨大的协同效应。这种读书，更多的是形成世界观，是相对不那么功利的，所以可以叫“大学”。&lt;/p&gt;
&lt;p&gt;我个人读书，简单点可以分为两个阶段，第一个阶段是从学生时代到几年前，刚开始，所谓读书是学生这一“职业&amp;quot;的工作，读书是为了上大学，上大学是为了跳出自己所处的环境与阶层，而上了大学之后则变得迷茫，然后读书变成了一种可有可无的惯性，幸运的是，虽然没有大的成就，但是靠着学生时代的努力，也算是初步实现了跳出自己所处的环境和阶层的目标，而且保留了一点读书的习惯。&lt;/p&gt;
&lt;p&gt;第二个阶段是近几年开始的，开始接触投资，开始审视自己的过往人生，开始更加拼命的生活，各种因素之下，开始真正认同并实践一些简单的道理，比如”知识就是力量“，比如”活到老学到老“，比如”朝闻道夕死可矣“，这些话开始不再是一些橱窗里的口号，而是慢慢变成自己的信念，而且幸运的是，在执行这些信念的过程中，获得了大大小小的成功，尽管进步的速度还很慢，但是感觉走上了正确的轨道，在这种心态下，读书会越来越成为工作生活中非常自然的一部分，就像吃饭睡觉一样，不必要再去想这件事有什么用了。&lt;/p&gt;
&lt;p&gt;我有时候会说，其实读书和打牌一样，就是一种个人爱好而已，没什么值得夸耀的，从某个角度来说，这还真是一种自谦，如果你能听懂我在说什么，就不会笑我清高或者狂妄了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>读书有什么用，这是个老生常谈的话题了，促使我再次思考这一问题有两个事情。</p>
<p>第一件事情是我在搬家的时候，把很多书送人了，其中也有一些看过的育儿和教育的书，有一个朋友问：“你觉得看育儿的书对带孩子真的有帮助吗？我觉得好像没有什么用。”我愣了一下，只能笼统的回答了一句：“看育儿的书不见得能产生立竿见影的效果，但是能潜移默化的提高育儿的水平”。</p>
<p>第二件事是我接触投资后，发现世界上最成功的投资者之一沃伦·巴菲特就是个书虫，他的合伙人查理·芒格也被人戏称为长了两条腿的书，而世界首富比尔·盖茨也是很爱读书的，每年都会向大众推荐书单。在当下的中国，判断成功的世俗标准非常简单，就是有钱，所以反驳这些人的读书无用论就应该拿巴菲特、比尔盖茨的例子来堵住他们的嘴嘛！</p>
<p>书读得多，但是没有理解，没有读透，没有学以致用，读成了书呆子，固然是不好，但是正如杨绛先生说的：“你的问题主要是读书不多而想得太多”。很多人根本就没有看过几本书，也不知道什么书是好书，靠自己的臆想就敢说读书无用了。</p>
<p>我现在觉得读书的用处大致可以分为两个层次。</p>
<p>一是“小学”，为了安身立命，我们需要掌握很多的生存技能，需要有一定的专长，固然学习有很多手段和途径，然而读书依然是性价比极高的一种方法，书不贵，在互联网时代，甚至接近免费，任何领域，任何技能，无论是治国还是烹小鲜几乎都能找到书来学习，书一般比较系统完整，没有网络信息杂乱的缺点。比如你要学编程，除了实践写代码，必然是要看很多书的，又比如投资股市，不系统的看几本书就进场的，凶多吉少。之所以说这些是“小学”，可能更多的还是在说方法论，这种读书是相对功利的。</p>
<p>二是“大学”，就像育儿带孩子这种事，必然是因人而异的，每个孩子都有自己的特点，教育是在互动中实现的，可能学具体的育儿方法不见得实用，投资也是这样，你可能在书上看到一些低风险套利的方法，但是写到书中的方法一般已经被滥用而失去了效力。读书的“大学”，应当是在广泛涉猎后，搭建起自己的知识体系与决策体系，做到所谓的融会贯通，要做到这一点，当然要靠思考，但是读书的量也是必不可少的，有句话叫腹有诗书气自华，讲的就是读书的沉淀的作用，你读懂过越多不同的书，它们就越会在你的头脑中形成一个网络，产生巨大的协同效应。这种读书，更多的是形成世界观，是相对不那么功利的，所以可以叫“大学”。</p>
<p>我个人读书，简单点可以分为两个阶段，第一个阶段是从学生时代到几年前，刚开始，所谓读书是学生这一“职业&quot;的工作，读书是为了上大学，上大学是为了跳出自己所处的环境与阶层，而上了大学之后则变得迷茫，然后读书变成了一种可有可无的惯性，幸运的是，虽然没有大的成就，但是靠着学生时代的努力，也算是初步实现了跳出自己所处的环境和阶层的目标，而且保留了一点读书的习惯。</p>
<p>第二个阶段是近几年开始的，开始接触投资，开始审视自己的过往人生，开始更加拼命的生活，各种因素之下，开始真正认同并实践一些简单的道理，比如”知识就是力量“，比如”活到老学到老“，比如”朝闻道夕死可矣“，这些话开始不再是一些橱窗里的口号，而是慢慢变成自己的信念，而且幸运的是，在执行这些信念的过程中，获得了大大小小的成功，尽管进步的速度还很慢，但是感觉走上了正确的轨道，在这种心态下，读书会越来越成为工作生活中非常自然的一部分，就像吃饭睡觉一样，不必要再去想这件事有什么用了。</p>
<p>我有时候会说，其实读书和打牌一样，就是一种个人爱好而已，没什么值得夸耀的，从某个角度来说，这还真是一种自谦，如果你能听懂我在说什么，就不会笑我清高或者狂妄了。</p>
]]></content:encoded><category>reading</category><category domain="tags">读书</category><category domain="tags">思考</category></item><item><title>电子书资源列表</title><link>https://yifeitao.com/awesome-ebook/</link><pubDate>Mon, 05 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/awesome-ebook/</guid><description>&lt;h2 id="正版电子书"&gt;正版电子书&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.duokan.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;多看阅读&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.cn/Kindle%E7%94%B5%E5%AD%90%E4%B9%A6/b?node=116169071"
rel="noopener noreferrer" target="_blank" class="external"&gt;Kindle电子书&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ituring.com.cn/"
rel="noopener noreferrer" target="_blank" class="external"&gt;图灵社区&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.epubit.com.cn/"
rel="noopener noreferrer" target="_blank" class="external"&gt;异步社区&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://read.douban.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;豆瓣阅读&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://du.163.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;蜗牛读书&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="盗版电子书"&gt;盗版电子书&lt;/h2&gt;
&lt;p&gt;不建议看盗版&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://gen.lib.rus.ec/"
rel="noopener noreferrer" target="_blank" class="external"&gt;Library Genesis&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://readfree.me/"
rel="noopener noreferrer" target="_blank" class="external"&gt;readfree&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.kindle178.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;kindle178&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<h2 id="正版电子书">正版电子书</h2>
<ol>
<li><a href="http://www.duokan.com/"
   rel="noopener noreferrer" target="_blank" class="external">多看阅读</a>
</li>
<li><a href="http://www.amazon.cn/Kindle%E7%94%B5%E5%AD%90%E4%B9%A6/b?node=116169071"
   rel="noopener noreferrer" target="_blank" class="external">Kindle电子书</a>
</li>
<li><a href="http://www.ituring.com.cn/"
   rel="noopener noreferrer" target="_blank" class="external">图灵社区</a>
</li>
<li><a href="http://www.epubit.com.cn/"
   rel="noopener noreferrer" target="_blank" class="external">异步社区</a>
</li>
<li><a href="https://read.douban.com/"
   rel="noopener noreferrer" target="_blank" class="external">豆瓣阅读</a>
</li>
<li><a href="https://du.163.com/"
   rel="noopener noreferrer" target="_blank" class="external">蜗牛读书</a>
</li>
</ol>
<h2 id="盗版电子书">盗版电子书</h2>
<p>不建议看盗版</p>
<ol>
<li><a href="http://gen.lib.rus.ec/"
   rel="noopener noreferrer" target="_blank" class="external">Library Genesis</a>
</li>
<li><a href="http://readfree.me/"
   rel="noopener noreferrer" target="_blank" class="external">readfree</a>
</li>
<li><a href="http://www.kindle178.com/"
   rel="noopener noreferrer" target="_blank" class="external">kindle178</a>
</li>
</ol>
]]></content:encoded><category>reading</category><category domain="tags">资源</category><category domain="tags">电子书</category></item><item><title>保险入门</title><link>https://yifeitao.com/tips-of-insurance/</link><pubDate>Sun, 04 Jun 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/tips-of-insurance/</guid><description>&lt;p&gt;今天研究了一天保险，看了知乎上一些精华帖，也逐字阅读了好几份保险合同，粗略得到了一些入门知识：&lt;/p&gt;
&lt;h2 id="1为什么要买保险"&gt;1.为什么要买保险？&lt;/h2&gt;
&lt;p&gt;买保险主要目的应当是用较少的资金去对冲自己难以承担的风险，比如家中主要收入来源者身故、重病，家中房屋失火等风险。**不要试图通过保险来赚钱。**而返本、分红，其实并不是保险的本质，但是在国内保险业内却成了主流，这是消费者的不理性和保险公司的奸诈的相互成全。&lt;/p&gt;
&lt;h2 id="2我要买什么保险"&gt;2.我要买什么保险？&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;买保险应当从自己的需求出发，而不是简单的看某个保险产品好不好；&lt;/li&gt;
&lt;li&gt;考虑到保险的本质，最值得购买的是消费险(所谓消费险，简单理解就是不返本无收益的保险)，最不值得购买的是分红险，实际上，投资收益带来的利差已经成为保险公司的主要收入来源，业务员也有有佣金的刺激，也最倾向于推销分红险；&lt;/li&gt;
&lt;li&gt;社保（比如城乡合作医疗保险）是最值得购买的，因为它有不挑客户的医疗险，而商业保险是歧视很明确的；&lt;/li&gt;
&lt;li&gt;一般来说，成年人作为家中支柱的，应该购买意外险、重疾险、寿险；儿童购买意外险和重疾险；老年人重疾险不好买，可以考虑防癌险，同样应购买意外险；&lt;/li&gt;
&lt;li&gt;此外，有商品房的要买房产险，有车的要买车险。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="3通过买保险理财可行吗"&gt;3.通过买保险理财可行吗？&lt;/h2&gt;
&lt;p&gt;对有投资能力的人来说，保险不是一个好的投资渠道，很多分红险实际收益连银行定期都比不上，而且流动性极差，因此一般来说应购买消费险，杠杆率（保费少，陪得多）越高越好，剩下的预算可以定投红利指数基金。&lt;/p&gt;
&lt;p&gt;对有投资能力的人而言，所有的分红、返本、高现金价值的险种都可以不用考虑了，除非钱太多买着玩。&lt;/p&gt;
&lt;p&gt;对一般人来说，只有一种例外，就是你需要强制储蓄，这可能是保险投资的唯一优势，对没有自制力的人来说，把钱投入基金理财会忍不住拿出来花，而保险投资提前拿出来一般会有较大的损失。&lt;/p&gt;
&lt;p&gt;永远不要想通过保险发财，可惜这样的宣传太多，直接抹黑了这个行业。要时刻想到货币的现金价值，考虑通货膨胀。要算一算广告词宣传的收益率是否可持续，能不能跑赢通货膨胀。&lt;/p&gt;
&lt;h2 id="4-保险可靠吗"&gt;4 保险可靠吗？&lt;/h2&gt;
&lt;p&gt;保险行业得到了较严格的监管，不太需要担心保险公司破产、故意不予理赔等情况，但是，实际上没有几个人认真看过保险合同，那些条条框框其实定得很清晰，赔与不赔很明确。&lt;/p&gt;
&lt;p&gt;即使是不知名的保险公司，能拿到牌照的都不简单，背后还有保监会在，不会无故不予理赔，所以看好合同条款就行，不用担心公司太小，不靠谱之类的。&lt;/p&gt;
&lt;p&gt;重点是：不要光看保险的宣传词，&lt;strong&gt;要看合同，合同才是理赔时唯一的具有法律效力的依据&lt;/strong&gt;，而广告宣传是没有的。&lt;/p&gt;
&lt;h2 id="5-买多少钱保险合适"&gt;5 买多少钱保险合适？&lt;/h2&gt;
&lt;p&gt;买保险应该量力而行，投入资金占年收入应当低于一定的比例，一般保险业界会说是10%~20%，对消费者而言，个人觉得5%就足够了。最重要的是综合考虑自己面临的风险和自己的经济能力，在当下的支付能力和想要达到的保额间获得平衡。&lt;/p&gt;
&lt;p&gt;应该用发展的眼光看问题，比如50万保额，当前看起来不低，但是30年后可能并不能保证重症的医疗，所以购买所谓的终身险种往往并没有想象中那么有用，在可能的情况下，5年或者10年调整一下自己的保险比较合适，10年后保费确实会增加，但是预期的收入也可能上了一个台阶，所以个人觉得除非你现在已经很土豪，而预期收入能力不会上升，那么购买定期险种要优于终身险种。&lt;/p&gt;
&lt;h2 id="6-与生大病相关的保险有哪几种有什么区别"&gt;6 与生大病相关的保险有哪几种？有什么区别？&lt;/h2&gt;
&lt;p&gt;与生大病相关的保险主要有重疾险和医疗险，重疾险和医疗险的主要区别在于，&lt;strong&gt;重疾险是按保额赔付&lt;/strong&gt;，达到条件就行，拿到钱后，比如恶性肿瘤，只要确诊就理赔，拿到钱你可以不去治病去澳门赌博也没人管，所以多买点保额，万一用上了，不但能治病，还能补贴家用（或者去赌场( ╯□╰ )），而&lt;strong&gt;医疗险是按实际支出报销&lt;/strong&gt;的，高端医疗险则卖的主要是所有牛医院横着走的VIP服务。&lt;/p&gt;
&lt;p&gt;重疾险的宣传词会强调自己保多少种疾病，其实发病率占绝大概率的几种病，比如恶性肿瘤，保监会规定了必须包含，而如果没有家族病史，其他的真的必要性不大，像什么狂犬病之类的，一般人就不用考虑了。所以要看清噱头，买保险不是菜市场买菜，多少钱一斤。&lt;/p&gt;
&lt;h2 id="7-通过什么渠道买比较好"&gt;7 通过什么渠道买比较好？&lt;/h2&gt;
&lt;p&gt;保险销售渠道的不同，会导致保费的不同，互联网渠道有一定优势，因为无需业务员的佣金；&lt;/p&gt;
&lt;p&gt;无论你在什么渠道去买保险，关键是合同是真的就行，购买渠道倒闭了也没事。当下互联网保险方兴未艾，风投在烧钱，很多平台都有比较优惠的特别险种或是折扣优惠，这些平台也有协助理赔的服务，比如：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.xiaoyusan.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;小雨伞&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.xyz.cn/"
rel="noopener noreferrer" target="_blank" class="external"&gt;新一站&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bz365.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;大象保险&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wkbins.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;悟空保&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;上面列的这些不是保险公司，而是保险代理公司，但是&lt;strong&gt;合同是和保险公司签的&lt;/strong&gt;。&lt;/p&gt;</description><content:encoded><![CDATA[<p>今天研究了一天保险，看了知乎上一些精华帖，也逐字阅读了好几份保险合同，粗略得到了一些入门知识：</p>
<h2 id="1为什么要买保险">1.为什么要买保险？</h2>
<p>买保险主要目的应当是用较少的资金去对冲自己难以承担的风险，比如家中主要收入来源者身故、重病，家中房屋失火等风险。**不要试图通过保险来赚钱。**而返本、分红，其实并不是保险的本质，但是在国内保险业内却成了主流，这是消费者的不理性和保险公司的奸诈的相互成全。</p>
<h2 id="2我要买什么保险">2.我要买什么保险？</h2>
<ol>
<li>买保险应当从自己的需求出发，而不是简单的看某个保险产品好不好；</li>
<li>考虑到保险的本质，最值得购买的是消费险(所谓消费险，简单理解就是不返本无收益的保险)，最不值得购买的是分红险，实际上，投资收益带来的利差已经成为保险公司的主要收入来源，业务员也有有佣金的刺激，也最倾向于推销分红险；</li>
<li>社保（比如城乡合作医疗保险）是最值得购买的，因为它有不挑客户的医疗险，而商业保险是歧视很明确的；</li>
<li>一般来说，成年人作为家中支柱的，应该购买意外险、重疾险、寿险；儿童购买意外险和重疾险；老年人重疾险不好买，可以考虑防癌险，同样应购买意外险；</li>
<li>此外，有商品房的要买房产险，有车的要买车险。</li>
</ol>
<h2 id="3通过买保险理财可行吗">3.通过买保险理财可行吗？</h2>
<p>对有投资能力的人来说，保险不是一个好的投资渠道，很多分红险实际收益连银行定期都比不上，而且流动性极差，因此一般来说应购买消费险，杠杆率（保费少，陪得多）越高越好，剩下的预算可以定投红利指数基金。</p>
<p>对有投资能力的人而言，所有的分红、返本、高现金价值的险种都可以不用考虑了，除非钱太多买着玩。</p>
<p>对一般人来说，只有一种例外，就是你需要强制储蓄，这可能是保险投资的唯一优势，对没有自制力的人来说，把钱投入基金理财会忍不住拿出来花，而保险投资提前拿出来一般会有较大的损失。</p>
<p>永远不要想通过保险发财，可惜这样的宣传太多，直接抹黑了这个行业。要时刻想到货币的现金价值，考虑通货膨胀。要算一算广告词宣传的收益率是否可持续，能不能跑赢通货膨胀。</p>
<h2 id="4-保险可靠吗">4 保险可靠吗？</h2>
<p>保险行业得到了较严格的监管，不太需要担心保险公司破产、故意不予理赔等情况，但是，实际上没有几个人认真看过保险合同，那些条条框框其实定得很清晰，赔与不赔很明确。</p>
<p>即使是不知名的保险公司，能拿到牌照的都不简单，背后还有保监会在，不会无故不予理赔，所以看好合同条款就行，不用担心公司太小，不靠谱之类的。</p>
<p>重点是：不要光看保险的宣传词，<strong>要看合同，合同才是理赔时唯一的具有法律效力的依据</strong>，而广告宣传是没有的。</p>
<h2 id="5-买多少钱保险合适">5 买多少钱保险合适？</h2>
<p>买保险应该量力而行，投入资金占年收入应当低于一定的比例，一般保险业界会说是10%~20%，对消费者而言，个人觉得5%就足够了。最重要的是综合考虑自己面临的风险和自己的经济能力，在当下的支付能力和想要达到的保额间获得平衡。</p>
<p>应该用发展的眼光看问题，比如50万保额，当前看起来不低，但是30年后可能并不能保证重症的医疗，所以购买所谓的终身险种往往并没有想象中那么有用，在可能的情况下，5年或者10年调整一下自己的保险比较合适，10年后保费确实会增加，但是预期的收入也可能上了一个台阶，所以个人觉得除非你现在已经很土豪，而预期收入能力不会上升，那么购买定期险种要优于终身险种。</p>
<h2 id="6-与生大病相关的保险有哪几种有什么区别">6 与生大病相关的保险有哪几种？有什么区别？</h2>
<p>与生大病相关的保险主要有重疾险和医疗险，重疾险和医疗险的主要区别在于，<strong>重疾险是按保额赔付</strong>，达到条件就行，拿到钱后，比如恶性肿瘤，只要确诊就理赔，拿到钱你可以不去治病去澳门赌博也没人管，所以多买点保额，万一用上了，不但能治病，还能补贴家用（或者去赌场( ╯□╰ )），而<strong>医疗险是按实际支出报销</strong>的，高端医疗险则卖的主要是所有牛医院横着走的VIP服务。</p>
<p>重疾险的宣传词会强调自己保多少种疾病，其实发病率占绝大概率的几种病，比如恶性肿瘤，保监会规定了必须包含，而如果没有家族病史，其他的真的必要性不大，像什么狂犬病之类的，一般人就不用考虑了。所以要看清噱头，买保险不是菜市场买菜，多少钱一斤。</p>
<h2 id="7-通过什么渠道买比较好">7 通过什么渠道买比较好？</h2>
<p>保险销售渠道的不同，会导致保费的不同，互联网渠道有一定优势，因为无需业务员的佣金；</p>
<p>无论你在什么渠道去买保险，关键是合同是真的就行，购买渠道倒闭了也没事。当下互联网保险方兴未艾，风投在烧钱，很多平台都有比较优惠的特别险种或是折扣优惠，这些平台也有协助理赔的服务，比如：</p>
<ol>
<li><a href="https://www.xiaoyusan.com/"
   rel="noopener noreferrer" target="_blank" class="external">小雨伞</a>
</li>
<li><a href="http://www.xyz.cn/"
   rel="noopener noreferrer" target="_blank" class="external">新一站</a>
</li>
<li><a href="http://www.bz365.com/"
   rel="noopener noreferrer" target="_blank" class="external">大象保险</a>
</li>
<li><a href="https://www.wkbins.com/"
   rel="noopener noreferrer" target="_blank" class="external">悟空保</a>
</li>
</ol>
<p>上面列的这些不是保险公司，而是保险代理公司，但是<strong>合同是和保险公司签的</strong>。</p>
]]></content:encoded><category>investment</category><category domain="tags">保险</category><category domain="tags">理财</category></item><item><title>对风险的一点思考</title><link>https://yifeitao.com/thought-on-risk/</link><pubDate>Sun, 28 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/thought-on-risk/</guid><description>&lt;p&gt;在投资乃至人生当中，风险都是一个很重要的因素。&lt;/p&gt;
&lt;p&gt;古话说，”君子不立危墙之下“，说的是不要去担风险，但是又说“不入虎穴，焉得虎子”，说的又是要担风险，说明风险是很复杂的。那么究竟要不要担风险？&lt;/p&gt;
&lt;p&gt;比如说，你投资P2P理财（其实就是高利贷），它的风险自然是比存银行高多了，相对来说，收益也高多了，比如某平台有很多投资标的的年利率为22%，你想这些借贷人就是因为信用不够好才需要借高利贷的，那么自然风险是比较高的，或者说，正是因为风险比较高，才有22%的利率，这是对担风险的人的补偿。这种借贷人违约跑路的风险，基本上是不可避免的，这时候，你要想赚这个钱，需要的是“不入虎穴，焉得虎子”这句话，不管你是因此赚钱还是亏钱，原因都是同一个，就是源自借贷人的低信用度。这就像出海捕鱼，你可能捕到鱼，也可能遇上大风暴出事故，但是如果不出海，则两种情况都不会出现了，在投资领域，这叫做盈亏同源。&lt;/p&gt;
&lt;p&gt;对于高利贷，有一个简单的策略可以降低乃至消除风险，这个策略非常简单，就是分散投资。如果你有1万块钱，年利率是22%，最后有6%的概率违约（假设血本无归），如果你把这1万块钱借给1个人，那么94%的概率能收回本息，还有6%的概率血本无归，一旦摊上这6%，对你来说就是100%的损失，22%高利率的奖赏，对你一点作用都没有了。反过来，如果借给100个人每人100块，那么大概有94个人会还钱，6个人血本无归，这样收益率大概是0.94*1.22-1=0.15，如果6%的概率是稳定可信的，那么几乎是无风险的，你就有了15%的收益，承担风险带来的22%高利率的奖赏你就拿到了。这时候，不把钱借给一个人，而是借给100个人，就是君子不立危墙之下。&lt;/p&gt;
&lt;p&gt;看似两个人都是在投资P2P，但是认知水平和行动策略的差异，会导致结果的天差地别，你不能看到别人在一个看似风险高的地方赚了钱，就觉得别人只是因为胆子大运气好。王健林说：清华北大不如胆子大。我能理解他鼓励年轻人从商创业的出发点，但是千万不要把这理解为莽撞了。就像外科医生给人开颅一样，外行看起来是胆子大，内行就知道是反复思考实践练习的结果，对优秀的外科医生来说，它给人开颅是没有什么风险的，我想王健林做生意也是如此。&lt;/p&gt;
&lt;p&gt;归根结底一句话，还是要学习一个。&lt;/p&gt;</description><content:encoded><![CDATA[<p>在投资乃至人生当中，风险都是一个很重要的因素。</p>
<p>古话说，”君子不立危墙之下“，说的是不要去担风险，但是又说“不入虎穴，焉得虎子”，说的又是要担风险，说明风险是很复杂的。那么究竟要不要担风险？</p>
<p>比如说，你投资P2P理财（其实就是高利贷），它的风险自然是比存银行高多了，相对来说，收益也高多了，比如某平台有很多投资标的的年利率为22%，你想这些借贷人就是因为信用不够好才需要借高利贷的，那么自然风险是比较高的，或者说，正是因为风险比较高，才有22%的利率，这是对担风险的人的补偿。这种借贷人违约跑路的风险，基本上是不可避免的，这时候，你要想赚这个钱，需要的是“不入虎穴，焉得虎子”这句话，不管你是因此赚钱还是亏钱，原因都是同一个，就是源自借贷人的低信用度。这就像出海捕鱼，你可能捕到鱼，也可能遇上大风暴出事故，但是如果不出海，则两种情况都不会出现了，在投资领域，这叫做盈亏同源。</p>
<p>对于高利贷，有一个简单的策略可以降低乃至消除风险，这个策略非常简单，就是分散投资。如果你有1万块钱，年利率是22%，最后有6%的概率违约（假设血本无归），如果你把这1万块钱借给1个人，那么94%的概率能收回本息，还有6%的概率血本无归，一旦摊上这6%，对你来说就是100%的损失，22%高利率的奖赏，对你一点作用都没有了。反过来，如果借给100个人每人100块，那么大概有94个人会还钱，6个人血本无归，这样收益率大概是0.94*1.22-1=0.15，如果6%的概率是稳定可信的，那么几乎是无风险的，你就有了15%的收益，承担风险带来的22%高利率的奖赏你就拿到了。这时候，不把钱借给一个人，而是借给100个人，就是君子不立危墙之下。</p>
<p>看似两个人都是在投资P2P，但是认知水平和行动策略的差异，会导致结果的天差地别，你不能看到别人在一个看似风险高的地方赚了钱，就觉得别人只是因为胆子大运气好。王健林说：清华北大不如胆子大。我能理解他鼓励年轻人从商创业的出发点，但是千万不要把这理解为莽撞了。就像外科医生给人开颅一样，外行看起来是胆子大，内行就知道是反复思考实践练习的结果，对优秀的外科医生来说，它给人开颅是没有什么风险的，我想王健林做生意也是如此。</p>
<p>归根结底一句话，还是要学习一个。</p>
]]></content:encoded><category>investment</category><category domain="tags">风险</category><category domain="tags">思考</category></item><item><title>快递</title><link>https://yifeitao.com/express/</link><pubDate>Sat, 27 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/express/</guid><description>&lt;p&gt;这几天搬家，用上了各种快递，包括邮政包裹、德邦物流、圆通快递等等，简直是当了一回快递服务体验官，从寄件地速度来看，计划经济和市场经济还真是天壤之别。&lt;/p&gt;
&lt;p&gt;在邮局我就寄五个包裹，花了不止一个小时，结果还有一个没寄成……首先，现在邮局的检查异常的严格，看了身份证还要开包细查，然后对你自己的包装各种嫌弃，必须得至少封上邮局的袋子，尤其让人无奈的是，我说了两三次寄普通包裹，他们给我打的第一次单还是所谓的快递包裹，其实从速度来讲，普通包裹现在并不慢，毕竟，普通包裹和快递包裹基本上都是坐同样的车，区别只在于普通包裹需要自己取件，而我的收货地址楼下就有邮局，这个问题是无所谓的。据说，普通包裹是有国家补贴的，我怀疑邮局工作人员在快递包裹上有提成，所以最近几年去邮局寄东西，不强调十次八次都是寄不了普通包裹的。&lt;/p&gt;
&lt;p&gt;最让我这种IT人员受不了的是，同样的地址，我手填了四张单，但是工作人员又手输了四次，明明贴了条形码，却又要人用马克笔写上大大的地址，中间系统还断线一次，这里面肯定又很大的优化空间，好像因为是一种便民服务，它的效率就不重要了一般，按照我粗略估计，这个邮局点号，一上午能寄10个包裹就不错了。&lt;/p&gt;
&lt;p&gt;而德邦物流，我寄了三十箱，前后不过半小时，而且大部分时间是在搬东西，它的价格算下来，其实和邮局差不多。&lt;/p&gt;
&lt;p&gt;我想这里面最大的区别就是盈利和非盈利，没有利益驱动，邮局的工作不过都是为了保住自己的铁饭碗而已，为人民服务，有时候还真不如为人民币服务的体验好。&lt;/p&gt;</description><content:encoded><![CDATA[<p>这几天搬家，用上了各种快递，包括邮政包裹、德邦物流、圆通快递等等，简直是当了一回快递服务体验官，从寄件地速度来看，计划经济和市场经济还真是天壤之别。</p>
<p>在邮局我就寄五个包裹，花了不止一个小时，结果还有一个没寄成……首先，现在邮局的检查异常的严格，看了身份证还要开包细查，然后对你自己的包装各种嫌弃，必须得至少封上邮局的袋子，尤其让人无奈的是，我说了两三次寄普通包裹，他们给我打的第一次单还是所谓的快递包裹，其实从速度来讲，普通包裹现在并不慢，毕竟，普通包裹和快递包裹基本上都是坐同样的车，区别只在于普通包裹需要自己取件，而我的收货地址楼下就有邮局，这个问题是无所谓的。据说，普通包裹是有国家补贴的，我怀疑邮局工作人员在快递包裹上有提成，所以最近几年去邮局寄东西，不强调十次八次都是寄不了普通包裹的。</p>
<p>最让我这种IT人员受不了的是，同样的地址，我手填了四张单，但是工作人员又手输了四次，明明贴了条形码，却又要人用马克笔写上大大的地址，中间系统还断线一次，这里面肯定又很大的优化空间，好像因为是一种便民服务，它的效率就不重要了一般，按照我粗略估计，这个邮局点号，一上午能寄10个包裹就不错了。</p>
<p>而德邦物流，我寄了三十箱，前后不过半小时，而且大部分时间是在搬东西，它的价格算下来，其实和邮局差不多。</p>
<p>我想这里面最大的区别就是盈利和非盈利，没有利益驱动，邮局的工作不过都是为了保住自己的铁饭碗而已，为人民服务，有时候还真不如为人民币服务的体验好。</p>
]]></content:encoded><category>life</category><category domain="tags">物流</category><category domain="tags">生活</category></item><item><title>海边</title><link>https://yifeitao.com/the-seaside/</link><pubDate>Fri, 26 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-seaside/</guid><description>&lt;p&gt;前两天晚上，在离开之前最后去了一次海边。&lt;/p&gt;
&lt;p&gt;多年以前，我第一次看到这边的海的时候，除了一部分初见海的喜悦外，更多的是面对新的环境的不适，那时候，我成了一名可爱多——曾轶可的粉丝，说起来她长相中性，唱歌跑调，不是我喜欢的类型，但是她的歌词中有类似“我面对着大海，却敞不开胸怀”的小情感，这打动了我。&lt;/p&gt;
&lt;p&gt;前两天再看海时，我真的和自己和解了，那些负面情绪都烟消云散，不仅仅是因为要离开，更是因为我觉得自己想明白了一些事情。&lt;/p&gt;
&lt;p&gt;我跟着急小朋友说，以后很难再有机会过来玩了，他还听不懂这么复杂的事情，但是巧合的是，他那天也不再埋头玩沙，而是四周晃荡，似乎要记住这个地方似的，不到三岁的事情，长大后是基本记不住的，只会在脑海的某个角落，藏一些记忆的碎片，记得曾经和爸爸妈妈很多次来过这片海边，玩过沙下过海。&lt;/p&gt;
&lt;p&gt;小孩子记不住，我们却忘不掉了，旅游是上车睡觉、下车拍照的走马观花，而旅居，则是另一种感觉，当你和当地的菜贩子打交道多了，你才知道这个地方的风土人情，经历了一个地方的365天，你才知道它的天气的可爱与可恨。&lt;/p&gt;
&lt;p&gt;我很庆幸，在最后待这边的几年里，我和自己的过去和解了，接受了自己的处境，在此之上也不断地努力前行，我越来越喜欢当下的自己，对这个城市慢慢产生了一种中正平和的情绪。&lt;/p&gt;
&lt;p&gt;在我们要离开的时候，着急小朋友率先发现了音乐喷泉在唱歌喷水了，在夜晚灯光的映射下，简直成了待在这个城市看到的最有意境的一刻了。&lt;/p&gt;
&lt;p&gt;着急妈妈说：我好像还是第一次看见音乐喷泉。真好，在人生大大小小的地方，还有很多很多的第一次。&lt;/p&gt;</description><content:encoded><![CDATA[<p>前两天晚上，在离开之前最后去了一次海边。</p>
<p>多年以前，我第一次看到这边的海的时候，除了一部分初见海的喜悦外，更多的是面对新的环境的不适，那时候，我成了一名可爱多——曾轶可的粉丝，说起来她长相中性，唱歌跑调，不是我喜欢的类型，但是她的歌词中有类似“我面对着大海，却敞不开胸怀”的小情感，这打动了我。</p>
<p>前两天再看海时，我真的和自己和解了，那些负面情绪都烟消云散，不仅仅是因为要离开，更是因为我觉得自己想明白了一些事情。</p>
<p>我跟着急小朋友说，以后很难再有机会过来玩了，他还听不懂这么复杂的事情，但是巧合的是，他那天也不再埋头玩沙，而是四周晃荡，似乎要记住这个地方似的，不到三岁的事情，长大后是基本记不住的，只会在脑海的某个角落，藏一些记忆的碎片，记得曾经和爸爸妈妈很多次来过这片海边，玩过沙下过海。</p>
<p>小孩子记不住，我们却忘不掉了，旅游是上车睡觉、下车拍照的走马观花，而旅居，则是另一种感觉，当你和当地的菜贩子打交道多了，你才知道这个地方的风土人情，经历了一个地方的365天，你才知道它的天气的可爱与可恨。</p>
<p>我很庆幸，在最后待这边的几年里，我和自己的过去和解了，接受了自己的处境，在此之上也不断地努力前行，我越来越喜欢当下的自己，对这个城市慢慢产生了一种中正平和的情绪。</p>
<p>在我们要离开的时候，着急小朋友率先发现了音乐喷泉在唱歌喷水了，在夜晚灯光的映射下，简直成了待在这个城市看到的最有意境的一刻了。</p>
<p>着急妈妈说：我好像还是第一次看见音乐喷泉。真好，在人生大大小小的地方，还有很多很多的第一次。</p>
]]></content:encoded><category>life</category><category domain="tags">生活</category><category domain="tags">海边</category></item><item><title>安慰剂效应</title><link>https://yifeitao.com/placebo-effect/</link><pubDate>Thu, 25 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/placebo-effect/</guid><description>&lt;p&gt;考驾照的人大多听过一个段子，说是学员考前都很紧张，某教练对此有一绝招，在学员考试前送给学员一粒防紧张的药丸，学员吃了，还真的缓解了不少。但是，如果现在某个教练还用这招，大概率是不凑效的，因为大家都知道，这种药丸只不过是吃了没什么用的维生素罢了，学员感觉好，只不过是心理作用。&lt;/p&gt;
&lt;p&gt;这个善意的谎言是典型的安慰剂效应，吃药的人自认为吃了有效的药，结果就真的感觉药起到了作用，而实际上，吃的不过是没有任何作用的东西，比如面粉。从这个意义上讲，医学还真是有点宗教的感觉，“信则有，不信则无”。&lt;/p&gt;
&lt;p&gt;安慰剂效应在无数次的试验中得到了验证，患者只要认为自己得到了治疗，即使没有真的得到治疗，也往往会感觉有所好转。安慰剂效应的原因很复杂，因为疾病是否好转，不是纯客观的，而是牵涉到人的主观感受。如果把这些主观感受说得客观一些，那么疾病，尤其是疼痛，跟很多激素是有关系的，比如内生性鸦片是脑部释出的化学物质，可产生镇痛、麻醉的效果，亦可引起快乐的感觉。安慰剂效应产生的内生性鸦片跟使用药物的作用是相当的。&lt;/p&gt;
&lt;p&gt;看起来，安慰剂效应似乎也没什么不好的，反正还是让患者感觉良好，但是有几个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安慰剂效应带来的是主观感受的变化，但是客观上没有什么变化，比如一个人得了癌症，吃了某偏方特效药，产生了安慰剂效应，感觉好了点，但是癌细胞还是在继续不断增长，最后并不能延长生命，所以安慰剂并不能治病，甚至会耽误治病的时机，毕竟欺骗是不能长久的；&lt;/li&gt;
&lt;li&gt;安慰剂很贵！你会说，不就是面粉么?但是，如果真的告知你是面粉，用面粉的价格卖给你，那么就一点作用都没有。要如何才能让你相信那不是面粉，而是灵丹妙药呢？这是骗子的特长，而骗子的目的，自然不是要治病，而是要骗钱。甚至在安慰剂效应中还有这样的现象，骗子的药价格卖得越高，患者感觉效果越好，这里除了一般的疾病感受外，甚至还有一些自我欺骗，因为毕竟没有谁愿意当傻子，只有相信药有效，自己的钱才没白花，自己才不是傻子。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;安慰剂效应给我们的启示是，自我暗示在人体健康状况中的重要性。有这样一个研究，两组人一组认为工作压力大对身体影响大，另一组人认为工作压力大对身体影响不大，结果是自我预期实现的：第一组人真的身体要差一些。强大的内心和健康的体魄是相辅相成的，直面疾病，而保持积极乐观的心态，这样就既不用给骗子们缴费，也能得到安慰剂效应的好处了。&lt;/p&gt;
&lt;p&gt;一种药物或者治疗方法，个体感觉有效和真正有效，受安慰剂效应的影响很大，那么现代医学究竟是如何确定一种药物或治疗方法有效的呢？下次我会谈谈现代科学的重要方法——双盲测试。&lt;/p&gt;</description><content:encoded><![CDATA[<p>考驾照的人大多听过一个段子，说是学员考前都很紧张，某教练对此有一绝招，在学员考试前送给学员一粒防紧张的药丸，学员吃了，还真的缓解了不少。但是，如果现在某个教练还用这招，大概率是不凑效的，因为大家都知道，这种药丸只不过是吃了没什么用的维生素罢了，学员感觉好，只不过是心理作用。</p>
<p>这个善意的谎言是典型的安慰剂效应，吃药的人自认为吃了有效的药，结果就真的感觉药起到了作用，而实际上，吃的不过是没有任何作用的东西，比如面粉。从这个意义上讲，医学还真是有点宗教的感觉，“信则有，不信则无”。</p>
<p>安慰剂效应在无数次的试验中得到了验证，患者只要认为自己得到了治疗，即使没有真的得到治疗，也往往会感觉有所好转。安慰剂效应的原因很复杂，因为疾病是否好转，不是纯客观的，而是牵涉到人的主观感受。如果把这些主观感受说得客观一些，那么疾病，尤其是疼痛，跟很多激素是有关系的，比如内生性鸦片是脑部释出的化学物质，可产生镇痛、麻醉的效果，亦可引起快乐的感觉。安慰剂效应产生的内生性鸦片跟使用药物的作用是相当的。</p>
<p>看起来，安慰剂效应似乎也没什么不好的，反正还是让患者感觉良好，但是有几个问题：</p>
<ol>
<li>安慰剂效应带来的是主观感受的变化，但是客观上没有什么变化，比如一个人得了癌症，吃了某偏方特效药，产生了安慰剂效应，感觉好了点，但是癌细胞还是在继续不断增长，最后并不能延长生命，所以安慰剂并不能治病，甚至会耽误治病的时机，毕竟欺骗是不能长久的；</li>
<li>安慰剂很贵！你会说，不就是面粉么?但是，如果真的告知你是面粉，用面粉的价格卖给你，那么就一点作用都没有。要如何才能让你相信那不是面粉，而是灵丹妙药呢？这是骗子的特长，而骗子的目的，自然不是要治病，而是要骗钱。甚至在安慰剂效应中还有这样的现象，骗子的药价格卖得越高，患者感觉效果越好，这里除了一般的疾病感受外，甚至还有一些自我欺骗，因为毕竟没有谁愿意当傻子，只有相信药有效，自己的钱才没白花，自己才不是傻子。</li>
</ol>
<p>安慰剂效应给我们的启示是，自我暗示在人体健康状况中的重要性。有这样一个研究，两组人一组认为工作压力大对身体影响大，另一组人认为工作压力大对身体影响不大，结果是自我预期实现的：第一组人真的身体要差一些。强大的内心和健康的体魄是相辅相成的，直面疾病，而保持积极乐观的心态，这样就既不用给骗子们缴费，也能得到安慰剂效应的好处了。</p>
<p>一种药物或者治疗方法，个体感觉有效和真正有效，受安慰剂效应的影响很大，那么现代医学究竟是如何确定一种药物或治疗方法有效的呢？下次我会谈谈现代科学的重要方法——双盲测试。</p>
]]></content:encoded><category>life</category><category domain="tags">心理学</category><category domain="tags">医学</category></item><item><title>QWER键盘和比特币</title><link>https://yifeitao.com/qwer-and-bitcoin/</link><pubDate>Tue, 23 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/qwer-and-bitcoin/</guid><description>&lt;p&gt;去中心化的数字货币，一定能在未来的经济发展中，占有重要的一席之地，这是由于数字货币相对于滥发的政府的优势，也因为技术上的优势。&lt;/p&gt;
&lt;p&gt;然而，即使你坚信上述观点，那么在茫茫多的数字货币中应该投资哪一种呢？这让我想起来目前我们用的键盘，它是从打字机时代延续而来的，而打字机的键盘布局为什么是这样呢？完全是一种偶然，当年生产QWER布局键盘的企业取得了统治性的市场地位，导致消费者习惯了这样的键盘布局，而后续跟进市场的企业都不得不向习惯的力量妥协。QWER键盘，设计者基本上还是遵循了常用按键往中间放的思路，但是远远没有做到最优化，而只是一种比较随意的设计，如果按最优化的思路，对于一个英语键盘而言，最常用的字母E应当放到最中心，也就是目前字母G的位置。事实上，当年真的有一家公司这样做了，按照字母在英文中出现的频率，对键盘进行了重新设计，然而，结果是这样的键盘无人问津，没有消费者愿意再重新学习一种新的键盘布局。&lt;/p&gt;
&lt;p&gt;这就是先发优势的强大之处，回到数字货币的选择上来，我认为比特币依然是最好的一种选择，抛开它优秀的理念不谈，即使是那些号称比比特币更先进的数字货币，也会被先发者优势所打压，大多数人已经接受并相信了比特币，那么另外的币种就变成了一种同人游戏。&lt;/p&gt;
&lt;p&gt;而且和QWER键盘不同的是，比特币本身是基于算法和软件的，如果说它有什么真正的被人所公认的缺陷，那么它实际上可以对算法和软件进行修改，从而获得进化，那些新的数字货币宣传的优点，有些可能只是自以为是，有些会被比特币社区消化吸收，而它的霸主地位，则依然很难挑战。&lt;/p&gt;</description><content:encoded><![CDATA[<p>去中心化的数字货币，一定能在未来的经济发展中，占有重要的一席之地，这是由于数字货币相对于滥发的政府的优势，也因为技术上的优势。</p>
<p>然而，即使你坚信上述观点，那么在茫茫多的数字货币中应该投资哪一种呢？这让我想起来目前我们用的键盘，它是从打字机时代延续而来的，而打字机的键盘布局为什么是这样呢？完全是一种偶然，当年生产QWER布局键盘的企业取得了统治性的市场地位，导致消费者习惯了这样的键盘布局，而后续跟进市场的企业都不得不向习惯的力量妥协。QWER键盘，设计者基本上还是遵循了常用按键往中间放的思路，但是远远没有做到最优化，而只是一种比较随意的设计，如果按最优化的思路，对于一个英语键盘而言，最常用的字母E应当放到最中心，也就是目前字母G的位置。事实上，当年真的有一家公司这样做了，按照字母在英文中出现的频率，对键盘进行了重新设计，然而，结果是这样的键盘无人问津，没有消费者愿意再重新学习一种新的键盘布局。</p>
<p>这就是先发优势的强大之处，回到数字货币的选择上来，我认为比特币依然是最好的一种选择，抛开它优秀的理念不谈，即使是那些号称比比特币更先进的数字货币，也会被先发者优势所打压，大多数人已经接受并相信了比特币，那么另外的币种就变成了一种同人游戏。</p>
<p>而且和QWER键盘不同的是，比特币本身是基于算法和软件的，如果说它有什么真正的被人所公认的缺陷，那么它实际上可以对算法和软件进行修改，从而获得进化，那些新的数字货币宣传的优点，有些可能只是自以为是，有些会被比特币社区消化吸收，而它的霸主地位，则依然很难挑战。</p>
]]></content:encoded><category>investment</category><category domain="tags">科技</category><category domain="tags">比特币</category></item><item><title>系统安装相关工具</title><link>https://yifeitao.com/os-install-tools/</link><pubDate>Sun, 21 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/os-install-tools/</guid><description>&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.wepe.com.cn/"
rel="noopener noreferrer" target="_blank" class="external"&gt;WePE&lt;/a&gt;
:最干净强大的winpe系统；&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rufus.akeo.ie/?locale=zh_CN"
rel="noopener noreferrer" target="_blank" class="external"&gt;rufus&lt;/a&gt;
: USB启动盘创建工具；&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.itellyou.cn/"
rel="noopener noreferrer" target="_blank" class="external"&gt;msdn, i tell you&lt;/a&gt;
：微软系统与软件光盘映像下载；&lt;/li&gt;
&lt;li&gt;&lt;a href="https://imagine.microsoft.com/zh-cn"
rel="noopener noreferrer" target="_blank" class="external"&gt;Microsoft Imagine&lt;/a&gt;
：微软针对学生的免费软件下载；&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.deepin.org/"
rel="noopener noreferrer" target="_blank" class="external"&gt;deepin linux&lt;/a&gt;
：最适合中国人使用的linux桌面系统；&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<ol>
<li><a href="http://www.wepe.com.cn/"
   rel="noopener noreferrer" target="_blank" class="external">WePE</a>
 :最干净强大的winpe系统；</li>
<li><a href="https://rufus.akeo.ie/?locale=zh_CN"
   rel="noopener noreferrer" target="_blank" class="external">rufus</a>
: USB启动盘创建工具；</li>
<li><a href="http://msdn.itellyou.cn/"
   rel="noopener noreferrer" target="_blank" class="external">msdn, i tell you</a>
：微软系统与软件光盘映像下载；</li>
<li><a href="https://imagine.microsoft.com/zh-cn"
   rel="noopener noreferrer" target="_blank" class="external">Microsoft Imagine</a>
 ：微软针对学生的免费软件下载；</li>
<li><a href="https://www.deepin.org/"
   rel="noopener noreferrer" target="_blank" class="external">deepin linux</a>
：最适合中国人使用的linux桌面系统；</li>
</ol>
]]></content:encoded><category>geek</category><category domain="tags">工具</category><category domain="tags">系统</category></item><item><title>怎样免费下论文</title><link>https://yifeitao.com/how-to-download-a-paper/</link><pubDate>Sat, 20 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/how-to-download-a-paper/</guid><description>&lt;p&gt;今天看到这样一则新闻：&lt;a href="http://www.solidot.org/story?sid=52459"
rel="noopener noreferrer" target="_blank" class="external"&gt;Elsevier 向 Sci-Hub 和 Libgen 索赔 1500 万美元&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;想起来我几年前在公司得到一张知网充值卡，充值后去体验了一下，下载了自己发表过的论文，花了五个大洋，感觉哪里不对，为什么我自己的论文我自己下载还要花钱，还有如果别人下载了我的论文，为什么我一分钱也没分到？&lt;/p&gt;
&lt;p&gt;像我这么想的人估计不少，关于这档子事，可以看看纪录片&lt;a href="https://movie.douban.com/subject/25785114/"
rel="noopener noreferrer" target="_blank" class="external"&gt;互联网之子&lt;/a&gt;
，天才程序员，RSS发明者Aaron Swartz 就是因为和出版商斗，弄到抑郁自杀了。&lt;/p&gt;
&lt;p&gt;我个人是尊重创意和版权的，但是对类似Elsevier和知网这种企业，却没什么好感，总有一天它们会被更合理的组织形态取代，再次之前，有必要的时候，不妨试试上述新闻中的服务。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://unpaywall.org/"
rel="noopener noreferrer" target="_blank" class="external"&gt;unpaywall&lt;/a&gt;
:其实很多论文作者和杂志都会在网上发布论文的免费版，这个chrome和firefox插件可以自动寻找论文的免费版，据其帆布的统计报告称，可以找到47%的论文，这些免费论文都是符合现有的版权法律的。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sci-hub.bz/"
rel="noopener noreferrer" target="_blank" class="external"&gt;sci-hub&lt;/a&gt;
： 备用链接http://sci-hub.cc/ , 使用方法很简单，你先正常用google学术搜索之类的搜到论文，比如ieee或者acm网站的，把链接复制到sci-hub的框里面，点击open，搞定，基本上大部分的英文论文都可以下到，目前该网站称有6200广域网篇论文了，而且还在不断新增。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gen.lib.rus.ec/"
rel="noopener noreferrer" target="_blank" class="external"&gt;Libgen&lt;/a&gt;
： ，这个可以用来下各种英文版的电子书，搜索即可找到下载链接。&lt;/p&gt;
&lt;p&gt;最后再补充一个可以下载知网论文的工具&lt;a href="https://github.com/amyhaber/cnki-downloader"
rel="noopener noreferrer" target="_blank" class="external"&gt;cnki-downloader&lt;/a&gt;
。&lt;/p&gt;
&lt;p&gt;嗯，齐活了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>今天看到这样一则新闻：<a href="http://www.solidot.org/story?sid=52459"
   rel="noopener noreferrer" target="_blank" class="external">Elsevier 向 Sci-Hub 和 Libgen 索赔 1500 万美元</a>
</p>
<p>想起来我几年前在公司得到一张知网充值卡，充值后去体验了一下，下载了自己发表过的论文，花了五个大洋，感觉哪里不对，为什么我自己的论文我自己下载还要花钱，还有如果别人下载了我的论文，为什么我一分钱也没分到？</p>
<p>像我这么想的人估计不少，关于这档子事，可以看看纪录片<a href="https://movie.douban.com/subject/25785114/"
   rel="noopener noreferrer" target="_blank" class="external">互联网之子</a>
，天才程序员，RSS发明者Aaron Swartz 就是因为和出版商斗，弄到抑郁自杀了。</p>
<p>我个人是尊重创意和版权的，但是对类似Elsevier和知网这种企业，却没什么好感，总有一天它们会被更合理的组织形态取代，再次之前，有必要的时候，不妨试试上述新闻中的服务。</p>
<p><a href="http://unpaywall.org/"
   rel="noopener noreferrer" target="_blank" class="external">unpaywall</a>
:其实很多论文作者和杂志都会在网上发布论文的免费版，这个chrome和firefox插件可以自动寻找论文的免费版，据其帆布的统计报告称，可以找到47%的论文，这些免费论文都是符合现有的版权法律的。</p>
<p><a href="http://sci-hub.bz/"
   rel="noopener noreferrer" target="_blank" class="external">sci-hub</a>
： 备用链接http://sci-hub.cc/ , 使用方法很简单，你先正常用google学术搜索之类的搜到论文，比如ieee或者acm网站的，把链接复制到sci-hub的框里面，点击open，搞定，基本上大部分的英文论文都可以下到，目前该网站称有6200广域网篇论文了，而且还在不断新增。</p>
<p><a href="http://gen.lib.rus.ec/"
   rel="noopener noreferrer" target="_blank" class="external">Libgen</a>
：  ，这个可以用来下各种英文版的电子书，搜索即可找到下载链接。</p>
<p>最后再补充一个可以下载知网论文的工具<a href="https://github.com/amyhaber/cnki-downloader"
   rel="noopener noreferrer" target="_blank" class="external">cnki-downloader</a>
 。</p>
<p>嗯，齐活了。</p>
]]></content:encoded><category>geek</category><category domain="tags">学术</category><category domain="tags">资源</category></item><item><title>学驾照有感</title><link>https://yifeitao.com/driving-license/</link><pubDate>Thu, 18 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/driving-license/</guid><description>&lt;p&gt;断断续学了两年，昨天终于把驾照领到手了，有种一言难尽的感觉。为什么学了这么久，客观原因有一些，比如只有周末有时间学，有时候周末还要出差、加班，而有时候驾校又不上班，但是我比我的很多同事其实周末时间还能够保证一些，但是别人学得很快。&lt;/p&gt;
&lt;p&gt;其实人的所有问题根源往往都在思想上，我当时报驾考，只是散步的时候发现附近就有个驾校，觉着迟早还是要考个驾照，就报名了，没有买车的想法，所以学起来完全不着急，到了周末总是能找各种理由不去学，比如陪孩子陪老婆，比如这周实在太累，比如马上要出差了，这周学了又会忘之类，就这样，考一门歇几个月，不知不觉就拖了两年。&lt;/p&gt;
&lt;p&gt;其次还有个原因，驾校的服务实在太差了，变相收费很多，交了费之后，科目二的教练拖着不教真东西，等着你加班，刚开始我都不知道这套路，一直在学倒库倒库，受不了提出要学其他的，就会被打击鄙视，直到我学到没兴趣，拖了大半年，教练都换了一个，加了两次班，终于搞定了。科目三的教练也差不多，像我这种只有周末有时间学的人，就跟欠人钱一样，后来我明白，还真是欠人钱了，其实我不是讨厌加钱，而是讨厌要加钱不明说。后来我想明白了，想拿驾照，只有按人家的规则来，自己的时间才是最宝贵的。&lt;/p&gt;
&lt;p&gt;还有一个重要的原因，我对考驾照的难度认知有些扭曲，刚开始觉得很简单，尤其是科目二总共没学几个小时就考试一次性通过后，科目三准备不是很充分，就去考试，结果不出意外的挂了，回想起来，这应该是我二十多年来各种考试中第一次不合格，终于也感受了一把差生的感觉，觉得自己是不是不适合开车，随之而来的是一种想要疗伤的搞笑情绪，所以第一次考挂之后，又拖了半年，直到想要离开这个城市，再不学就要浪费之前的钱和时间了，才下定决心，分析了之前的各种问题，总结还是自己练习不够，做动作时比如换个档还要仔细想怎么操作，而没有形成肌肉记忆。&lt;/p&gt;
&lt;p&gt;后来连续好几周都去练车，该加钱就加钱，终于熟练起来，动作熟练了后，运气果然也好起来，虽然第二次考科目三第一把又挂了，但第二把终于是过了。最大的障碍过了后，后面就很简单了。&lt;/p&gt;
&lt;p&gt;很多时候，我们对自己的短期期望很高，总想一蹴而就，遇到挫折就气馁，对自己的长期期望又变很低，实际上，很多事情都需要较长时间练习才能出效果，很多人都死在了出效果之前。站在人生的角度看，学驾照总归是个小事，但是道理是共通的。&lt;/p&gt;</description><content:encoded><![CDATA[<p>断断续学了两年，昨天终于把驾照领到手了，有种一言难尽的感觉。为什么学了这么久，客观原因有一些，比如只有周末有时间学，有时候周末还要出差、加班，而有时候驾校又不上班，但是我比我的很多同事其实周末时间还能够保证一些，但是别人学得很快。</p>
<p>其实人的所有问题根源往往都在思想上，我当时报驾考，只是散步的时候发现附近就有个驾校，觉着迟早还是要考个驾照，就报名了，没有买车的想法，所以学起来完全不着急，到了周末总是能找各种理由不去学，比如陪孩子陪老婆，比如这周实在太累，比如马上要出差了，这周学了又会忘之类，就这样，考一门歇几个月，不知不觉就拖了两年。</p>
<p>其次还有个原因，驾校的服务实在太差了，变相收费很多，交了费之后，科目二的教练拖着不教真东西，等着你加班，刚开始我都不知道这套路，一直在学倒库倒库，受不了提出要学其他的，就会被打击鄙视，直到我学到没兴趣，拖了大半年，教练都换了一个，加了两次班，终于搞定了。科目三的教练也差不多，像我这种只有周末有时间学的人，就跟欠人钱一样，后来我明白，还真是欠人钱了，其实我不是讨厌加钱，而是讨厌要加钱不明说。后来我想明白了，想拿驾照，只有按人家的规则来，自己的时间才是最宝贵的。</p>
<p>还有一个重要的原因，我对考驾照的难度认知有些扭曲，刚开始觉得很简单，尤其是科目二总共没学几个小时就考试一次性通过后，科目三准备不是很充分，就去考试，结果不出意外的挂了，回想起来，这应该是我二十多年来各种考试中第一次不合格，终于也感受了一把差生的感觉，觉得自己是不是不适合开车，随之而来的是一种想要疗伤的搞笑情绪，所以第一次考挂之后，又拖了半年，直到想要离开这个城市，再不学就要浪费之前的钱和时间了，才下定决心，分析了之前的各种问题，总结还是自己练习不够，做动作时比如换个档还要仔细想怎么操作，而没有形成肌肉记忆。</p>
<p>后来连续好几周都去练车，该加钱就加钱，终于熟练起来，动作熟练了后，运气果然也好起来，虽然第二次考科目三第一把又挂了，但第二把终于是过了。最大的障碍过了后，后面就很简单了。</p>
<p>很多时候，我们对自己的短期期望很高，总想一蹴而就，遇到挫折就气馁，对自己的长期期望又变很低，实际上，很多事情都需要较长时间练习才能出效果，很多人都死在了出效果之前。站在人生的角度看，学驾照总归是个小事，但是道理是共通的。</p>
]]></content:encoded><category>life</category><category domain="tags">驾驶</category><category domain="tags">感悟</category></item><item><title>谈谈这次的勒索病毒</title><link>https://yifeitao.com/wannacry/</link><pubDate>Mon, 15 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/wannacry/</guid><description>&lt;p&gt;这次的Wannacry 蠕虫事件，真的影响蛮大的，最大的特点是企事业单位的内网渗透得非常厉害，至少我亲身知道的，本市的交警部门就基本瘫痪了，这几天的驾考取消了，今天去交警支队盖章也碰到了边打电话边骂的吃了闭门羹的办事的人。&lt;/p&gt;
&lt;p&gt;以我的经验来看，这种情况的出现几乎是必然的，中国的企事业单位基本上不知道正版软件为何物，很喜欢建自己的专网，但是人性使然，这些专网其实不可能和互联网完全隔离的，无论是U盘还是双网卡，都留下了很多的漏洞。这些盗版系统大多关闭了自动更新，即使不关闭，也大多连不上微软的自动更新服务器，而且很多电脑还在运行着XP系统。一旦有一个点中招，几乎就是不设防的蔓延。&lt;/p&gt;
&lt;p&gt;和世界上很多事情一样，要做到不被世界上绝大多数的电脑病毒攻击，其实也很简单，打开安全更新，自动安装，不要上一些奇奇怪怪来路不明的网站，尤其不要随便相信那些网站下载的可运行程序，有条件的情况下，尽量使用最新的操作系统，比如windows 10，用最新的系统甚至都不用再特意安装杀毒软件。&lt;/p&gt;
&lt;p&gt;对于所谓的专网内网，物理隔离，要从人性的角度分析，光是靠喊口号是不顶事的，如果确实要隔离，就得有自己的打补丁的机制，否则迟早一起倒霉。&lt;/p&gt;</description><content:encoded><![CDATA[<p>这次的Wannacry 蠕虫事件，真的影响蛮大的，最大的特点是企事业单位的内网渗透得非常厉害，至少我亲身知道的，本市的交警部门就基本瘫痪了，这几天的驾考取消了，今天去交警支队盖章也碰到了边打电话边骂的吃了闭门羹的办事的人。</p>
<p>以我的经验来看，这种情况的出现几乎是必然的，中国的企事业单位基本上不知道正版软件为何物，很喜欢建自己的专网，但是人性使然，这些专网其实不可能和互联网完全隔离的，无论是U盘还是双网卡，都留下了很多的漏洞。这些盗版系统大多关闭了自动更新，即使不关闭，也大多连不上微软的自动更新服务器，而且很多电脑还在运行着XP系统。一旦有一个点中招，几乎就是不设防的蔓延。</p>
<p>和世界上很多事情一样，要做到不被世界上绝大多数的电脑病毒攻击，其实也很简单，打开安全更新，自动安装，不要上一些奇奇怪怪来路不明的网站，尤其不要随便相信那些网站下载的可运行程序，有条件的情况下，尽量使用最新的操作系统，比如windows 10，用最新的系统甚至都不用再特意安装杀毒软件。</p>
<p>对于所谓的专网内网，物理隔离，要从人性的角度分析，光是靠喊口号是不顶事的，如果确实要隔离，就得有自己的打补丁的机制，否则迟早一起倒霉。</p>
]]></content:encoded><category>geek</category><category domain="tags">网络安全</category><category domain="tags">病毒</category></item><item><title>站岗有感</title><link>https://yifeitao.com/stand-guard/</link><pubDate>Sun, 14 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/stand-guard/</guid><description>&lt;p&gt;今天过了拿驾照的最后一关，当志愿者路口站岗。这算是该城市的特色项目，被戏称为科目五。整个体验消极一点来说，就是拿着表，到了发件志愿者的背心和一顶帽子，拿着一个“不要闯红灯”小红旗，交警也没交待点啥，总之傻站俩小时就对了，然后交警签字，写个几十字的感想，盖章通过。&lt;/p&gt;
&lt;p&gt;不过如果体会一下这个活动的初心，在在这俩小时间观察体会的话，还是有不少收获的：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先，交警外勤确实是很辛苦的行当，还好现在路口的交通信号等是比较到位的；&lt;/li&gt;
&lt;li&gt;最不遵守交通规则，最危险的是电动车和摩托车，保守估计有一成以上的电动车司机基本是无视交通规则的，当年大规模禁摩导致电动车的快速发展，现在的电动车跟摩托车也没什么区别，速度快，体积小，转向快，见缝就插，无视各种交通信号灯，我不知道那么着急抢出来的几分钟有什么意义，完全是拿自己生命开玩笑；&lt;/li&gt;
&lt;li&gt;如果自己开电动车或者自行车，还是低调点好，如果开小车，就更要低调又低调了，路上都是霸王，只有怂一些防御性驾驶才是上策。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>今天过了拿驾照的最后一关，当志愿者路口站岗。这算是该城市的特色项目，被戏称为科目五。整个体验消极一点来说，就是拿着表，到了发件志愿者的背心和一顶帽子，拿着一个“不要闯红灯”小红旗，交警也没交待点啥，总之傻站俩小时就对了，然后交警签字，写个几十字的感想，盖章通过。</p>
<p>不过如果体会一下这个活动的初心，在在这俩小时间观察体会的话，还是有不少收获的：</p>
<ol>
<li>首先，交警外勤确实是很辛苦的行当，还好现在路口的交通信号等是比较到位的；</li>
<li>最不遵守交通规则，最危险的是电动车和摩托车，保守估计有一成以上的电动车司机基本是无视交通规则的，当年大规模禁摩导致电动车的快速发展，现在的电动车跟摩托车也没什么区别，速度快，体积小，转向快，见缝就插，无视各种交通信号灯，我不知道那么着急抢出来的几分钟有什么意义，完全是拿自己生命开玩笑；</li>
<li>如果自己开电动车或者自行车，还是低调点好，如果开小车，就更要低调又低调了，路上都是霸王，只有怂一些防御性驾驶才是上策。</li>
</ol>
]]></content:encoded><category>life</category><category domain="tags">军旅</category><category domain="tags">生活</category></item><item><title>bandwagonhost科学上网工具安装</title><link>https://yifeitao.com/bandwagonhost-kexue-shangwang/</link><pubDate>Sat, 13 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/bandwagonhost-kexue-shangwang/</guid><description>&lt;p&gt;bandwagonhost是一个比较廉价的VPS服务商，俗称“搬瓦工”。目前最便宜的Plan大约$20每年。它支持支付宝付款，具体购买过程在此不赘述。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bandwagonhost.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;访问地址&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bwh1.net/"
rel="noopener noreferrer" target="_blank" class="external"&gt;备用地址&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;购买完毕后 进入 Client Area &amp;gt; My Products &amp;amp; Services，可以看到购买的主机，可以看到ip地址，通过kiwivm control panel可以进行一些基本的操作。&lt;/p&gt;
&lt;p&gt;通过install new os可以安装新的操作系统，这里建议安装debian-8.0-x86_64。以下步骤均基于该版本测试通过。&lt;/p&gt;
&lt;p&gt;安装完成后，会生成root账号的密码，以及ssh登陆的端口号，需要记下来。&lt;/p&gt;
&lt;p&gt;一般vps主机的管理需要shell工具，windows 系统下推荐&lt;a href="https://mobaxterm.mobatek.net/"
rel="noopener noreferrer" target="_blank" class="external"&gt;MobaXterm&lt;/a&gt;
。这时我用过的最强大的shell工具了，不但可以ssh登陆进行命令行操作，还支持远程文件管理与远程文件编辑（其基本过程是下载==&amp;gt;编辑==&amp;gt;上传，但是整个过程自动化了）。它的配置需要ip地址，用户名root，以及密码和端口号。&lt;/p&gt;
&lt;p&gt;MobaXterm登陆远程主机后。开始安装科学上网相关服务。&lt;/p&gt;
&lt;h2 id="1-v2ray的安装"&gt;1 V2Ray的安装&lt;/h2&gt;
&lt;p&gt;为什么推荐&lt;a href="https://www.v2ray.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;V2Ray&lt;/a&gt;
，可以把它理解为ShadowSocket的升级版，它兼容ShadowSocket协议，而且支持更加先进的其他协议。&lt;/p&gt;
&lt;p&gt;首先升级系统，安装curl工具。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt-get upgrade
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt-get install curl&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;V2Ray官方有一键安装脚本，相当省心。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bash &amp;lt;&lt;span style="color:#f92672"&gt;(&lt;/span&gt;curl -L -s https://install.direct/go.sh&lt;span style="color:#f92672"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;此脚本会自动安装以下文件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/usr/bin/v2ray/v2ray&lt;/code&gt;：V2Ray 程序；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/v2ray/config.json&lt;/code&gt;：配置文件；&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;此外，还会增加启动项服务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/lib/systemd/system/v2ray.service&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我们需要修改的就是config.json配置文件，其实它的默认配置就能用了，但是我们这里加上shadowsocket服务。&lt;/p&gt;
&lt;p&gt;文件怎么修改呢？可以使用nano或vim远程修改，如果不习惯远程修改，也可以用filezilla下载后本地修改完再上传。&lt;/p&gt;
&lt;p&gt;下面是照抄官网的一个配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;log&amp;#34;&lt;/span&gt; : {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;access&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;/var/log/v2ray/access.log&amp;#34;&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 访问日志文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;error&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;/var/log/v2ray/error.log&amp;#34;&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 错误日志文件
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;loglevel&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;warning&amp;#34;&lt;/span&gt; &lt;span style="color:#75715e"&gt;// 错误日志等级，可选 debug / info / warning / error
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;inbound&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;port&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;37192&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 主端口
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;protocol&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;vmess&amp;#34;&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 主传入协议，参见协议列表
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;clients&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;3b129dec-72a3-4d28-aeee-028a0fe86e22&amp;#34;&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 用户 ID，客户端须使用相同的 ID 才可以中转流量
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;level&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#75715e"&gt;// 用户等级，自用 VPS 可设为 1；共享 VPS 请设为 0。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;outbound&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;protocol&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;freedom&amp;#34;&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 主传出协议，参见协议列表
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;: {}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;inboundDetour&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;protocol&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;shadowsocks&amp;#34;&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 开启 Shadowsocks
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;port&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;30001&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 监听 30001 端口
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;method&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;aes-256-cfb&amp;#34;&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 加密方式，支持 aes-256-cfb 和 aes-128-cfb
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;password&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;v2ray&amp;#34;&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 密码，必须和客户端相同
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;udp&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt; &lt;span style="color:#75715e"&gt;// 是否开启 UDP 转发
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;protocol&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;shadowsocks&amp;#34;&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 开启 Shadowsocks
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;port&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;30002&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 监听 30002 端口，由于 Shadowsocks 的限制，多用户的时候只能开多个端口
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;: { &lt;span style="color:#75715e"&gt;// 配置和上述类似
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;method&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;aes-256-cfb&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;password&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;v2ray-2&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;udp&amp;#34;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;outboundDetour&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;protocol&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;blackhole&amp;#34;&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 额外的传出协议，参见协议列表
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;: {},
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;tag&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;blocked&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;routing&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;strategy&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;rules&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;settings&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;rules&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;field&amp;#34;&lt;/span&gt;, &lt;span style="color:#75715e"&gt;// 路由设置，默认将屏蔽所有局域网流量，以提升安全性。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;ip&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;0.0.0.0/8&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;10.0.0.0/8&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;100.64.0.0/10&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;127.0.0.0/8&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;169.254.0.0/16&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;172.16.0.0/12&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;192.0.0.0/24&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;192.0.2.0/24&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;192.168.0.0/16&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;198.18.0.0/15&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;198.51.100.0/24&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;203.0.113.0/24&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;::1/128&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;fc00::/7&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;fe80::/10&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;outboundTag&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;blocked&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;具体可以参考官网的解释，这里要提醒的是，注意&lt;strong&gt;json格式的配置文件是不支持注释的&lt;/strong&gt;，所以一定要删掉注释，shadowsocket如果只配置一个端口，注意删掉第二个的同时也删掉中间那个逗号。&lt;/p&gt;</description><content:encoded><![CDATA[<p>bandwagonhost是一个比较廉价的VPS服务商，俗称“搬瓦工”。目前最便宜的Plan大约$20每年。它支持支付宝付款，具体购买过程在此不赘述。</p>
<p><a href="https://bandwagonhost.com/"
   rel="noopener noreferrer" target="_blank" class="external">访问地址</a>
</p>
<p><a href="https://bwh1.net/"
   rel="noopener noreferrer" target="_blank" class="external">备用地址</a>
</p>
<p>购买完毕后 进入 Client Area &gt; My Products &amp; Services，可以看到购买的主机，可以看到ip地址，通过kiwivm control panel可以进行一些基本的操作。</p>
<p>通过install new os可以安装新的操作系统，这里建议安装debian-8.0-x86_64。以下步骤均基于该版本测试通过。</p>
<p>安装完成后，会生成root账号的密码，以及ssh登陆的端口号，需要记下来。</p>
<p>一般vps主机的管理需要shell工具，windows 系统下推荐<a href="https://mobaxterm.mobatek.net/"
   rel="noopener noreferrer" target="_blank" class="external">MobaXterm</a>
。这时我用过的最强大的shell工具了，不但可以ssh登陆进行命令行操作，还支持远程文件管理与远程文件编辑（其基本过程是下载==&gt;编辑==&gt;上传，但是整个过程自动化了）。它的配置需要ip地址，用户名root，以及密码和端口号。</p>
<p>MobaXterm登陆远程主机后。开始安装科学上网相关服务。</p>
<h2 id="1-v2ray的安装">1 V2Ray的安装</h2>
<p>为什么推荐<a href="https://www.v2ray.com/"
   rel="noopener noreferrer" target="_blank" class="external">V2Ray</a>
，可以把它理解为ShadowSocket的升级版，它兼容ShadowSocket协议，而且支持更加先进的其他协议。</p>
<p>首先升级系统，安装curl工具。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>apt-get update
</span></span><span style="display:flex;"><span>apt-get upgrade
</span></span><span style="display:flex;"><span>apt-get install curl</span></span></code></pre></div>
<p>V2Ray官方有一键安装脚本，相当省心。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>bash &lt;<span style="color:#f92672">(</span>curl -L -s https://install.direct/go.sh<span style="color:#f92672">)</span></span></span></code></pre></div>
<p>此脚本会自动安装以下文件：</p>
<ul>
<li><code>/usr/bin/v2ray/v2ray</code>：V2Ray 程序；</li>
<li><code>/etc/v2ray/config.json</code>：配置文件；</li>
</ul>
<p>此外，还会增加启动项服务：</p>
<ul>
<li><code>/lib/systemd/system/v2ray.service</code></li>
</ul>
<p>我们需要修改的就是config.json配置文件，其实它的默认配置就能用了，但是我们这里加上shadowsocket服务。</p>
<p>文件怎么修改呢？可以使用nano或vim远程修改，如果不习惯远程修改，也可以用filezilla下载后本地修改完再上传。</p>
<p>下面是照抄官网的一个配置：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;log&#34;</span> : {
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;access&#34;</span>: <span style="color:#e6db74">&#34;/var/log/v2ray/access.log&#34;</span>, <span style="color:#75715e">// 访问日志文件
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#f92672">&#34;error&#34;</span>: <span style="color:#e6db74">&#34;/var/log/v2ray/error.log&#34;</span>,   <span style="color:#75715e">// 错误日志文件
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#f92672">&#34;loglevel&#34;</span>: <span style="color:#e6db74">&#34;warning&#34;</span>                  <span style="color:#75715e">// 错误日志等级，可选 debug / info / warning / error
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  },
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;inbound&#34;</span>: {
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;port&#34;</span>: <span style="color:#ae81ff">37192</span>, <span style="color:#75715e">// 主端口
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#f92672">&#34;protocol&#34;</span>: <span style="color:#e6db74">&#34;vmess&#34;</span>,    <span style="color:#75715e">// 主传入协议，参见协议列表
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#f92672">&#34;settings&#34;</span>: {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;clients&#34;</span>: [
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;id&#34;</span>: <span style="color:#e6db74">&#34;3b129dec-72a3-4d28-aeee-028a0fe86e22&#34;</span>,  <span style="color:#75715e">// 用户 ID，客户端须使用相同的 ID 才可以中转流量
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>          <span style="color:#f92672">&#34;level&#34;</span>: <span style="color:#ae81ff">1</span>  <span style="color:#75715e">// 用户等级，自用 VPS 可设为 1；共享 VPS 请设为 0。
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        }
</span></span><span style="display:flex;"><span>      ]
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  },
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;outbound&#34;</span>: {
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;protocol&#34;</span>: <span style="color:#e6db74">&#34;freedom&#34;</span>,  <span style="color:#75715e">// 主传出协议，参见协议列表
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#f92672">&#34;settings&#34;</span>: {}
</span></span><span style="display:flex;"><span>  },
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;inboundDetour&#34;</span>: [
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;protocol&#34;</span>: <span style="color:#e6db74">&#34;shadowsocks&#34;</span>,   <span style="color:#75715e">// 开启 Shadowsocks
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>      <span style="color:#f92672">&#34;port&#34;</span>: <span style="color:#ae81ff">30001</span>, <span style="color:#75715e">// 监听 30001 端口
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>      <span style="color:#f92672">&#34;settings&#34;</span>: {
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&#34;method&#34;</span>: <span style="color:#e6db74">&#34;aes-256-cfb&#34;</span>, <span style="color:#75715e">// 加密方式，支持 aes-256-cfb 和 aes-128-cfb
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        <span style="color:#f92672">&#34;password&#34;</span>: <span style="color:#e6db74">&#34;v2ray&#34;</span>,     <span style="color:#75715e">// 密码，必须和客户端相同
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        <span style="color:#f92672">&#34;udp&#34;</span>: <span style="color:#66d9ef">false</span>             <span style="color:#75715e">// 是否开启 UDP 转发
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>      }
</span></span><span style="display:flex;"><span>    },
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;protocol&#34;</span>: <span style="color:#e6db74">&#34;shadowsocks&#34;</span>,   <span style="color:#75715e">// 开启 Shadowsocks
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>      <span style="color:#f92672">&#34;port&#34;</span>: <span style="color:#ae81ff">30002</span>, <span style="color:#75715e">// 监听 30002 端口，由于 Shadowsocks 的限制，多用户的时候只能开多个端口
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>      <span style="color:#f92672">&#34;settings&#34;</span>: {  <span style="color:#75715e">// 配置和上述类似
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        <span style="color:#f92672">&#34;method&#34;</span>: <span style="color:#e6db74">&#34;aes-256-cfb&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&#34;password&#34;</span>: <span style="color:#e6db74">&#34;v2ray-2&#34;</span>,
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">&#34;udp&#34;</span>: <span style="color:#66d9ef">false</span>
</span></span><span style="display:flex;"><span>      }
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  ],
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;outboundDetour&#34;</span>: [
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;protocol&#34;</span>: <span style="color:#e6db74">&#34;blackhole&#34;</span>,  <span style="color:#75715e">// 额外的传出协议，参见协议列表
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>      <span style="color:#f92672">&#34;settings&#34;</span>: {},
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;tag&#34;</span>: <span style="color:#e6db74">&#34;blocked&#34;</span>
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  ],
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;routing&#34;</span>: {
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;strategy&#34;</span>: <span style="color:#e6db74">&#34;rules&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;settings&#34;</span>: {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;rules&#34;</span>: [
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;type&#34;</span>: <span style="color:#e6db74">&#34;field&#34;</span>,  <span style="color:#75715e">// 路由设置，默认将屏蔽所有局域网流量，以提升安全性。
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>          <span style="color:#f92672">&#34;ip&#34;</span>: [
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;0.0.0.0/8&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;10.0.0.0/8&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;100.64.0.0/10&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;127.0.0.0/8&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;169.254.0.0/16&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;172.16.0.0/12&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;192.0.0.0/24&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;192.0.2.0/24&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;192.168.0.0/16&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;198.18.0.0/15&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;198.51.100.0/24&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;203.0.113.0/24&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;::1/128&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;fc00::/7&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;fe80::/10&#34;</span>
</span></span><span style="display:flex;"><span>          ],
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;outboundTag&#34;</span>: <span style="color:#e6db74">&#34;blocked&#34;</span>
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>      ]
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<p>具体可以参考官网的解释，这里要提醒的是，注意<strong>json格式的配置文件是不支持注释的</strong>，所以一定要删掉注释，shadowsocket如果只配置一个端口，注意删掉第二个的同时也删掉中间那个逗号。</p>
<p>修改完毕后重启服务。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>service v2ray restart</span></span></code></pre></div>
<p>以上服务端就搞定了，首先依然可以使用一般的shadowsocket客户端连接shadowsocket协议。</p>
<p>此外，当然还支持V2Ray的协议，安装包地址 <a href="https://github.com/v2ray/v2ray-core/releases"
   rel="noopener noreferrer" target="_blank" class="external">https://github.com/v2ray/v2ray-core/releases</a>
</p>
<p>以windows为例，客户端就是一个绿色软件，命令行工具，同样需要修改配置文件config.json，以下为一个样例配置：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;log&#34;</span>: {
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;loglevel&#34;</span>: <span style="color:#e6db74">&#34;warning&#34;</span>
</span></span><span style="display:flex;"><span>  },
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;inbound&#34;</span>: {
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;port&#34;</span>: <span style="color:#ae81ff">1080</span>, <span style="color:#75715e">//本地代理端口
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#f92672">&#34;listen&#34;</span>: <span style="color:#e6db74">&#34;127.0.0.1&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;protocol&#34;</span>: <span style="color:#e6db74">&#34;socks&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;settings&#34;</span>: {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;auth&#34;</span>: <span style="color:#e6db74">&#34;noauth&#34;</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;udp&#34;</span>: <span style="color:#66d9ef">false</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;ip&#34;</span>: <span style="color:#e6db74">&#34;127.0.0.1&#34;</span>
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  },
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;outbound&#34;</span>: {
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;protocol&#34;</span>: <span style="color:#e6db74">&#34;vmess&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;settings&#34;</span>: {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;vnext&#34;</span>: [
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;address&#34;</span>: <span style="color:#e6db74">&#34;your-ip&#34;</span>, <span style="color:#75715e">// 服务器ip
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>          <span style="color:#f92672">&#34;port&#34;</span>: <span style="color:#960050;background-color:#1e0010">your-port</span>, <span style="color:#75715e">//和服务器配置一致
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>          <span style="color:#f92672">&#34;users&#34;</span>: [
</span></span><span style="display:flex;"><span>            {
</span></span><span style="display:flex;"><span>              <span style="color:#f92672">&#34;id&#34;</span>: <span style="color:#e6db74">&#34;your-id&#34;</span>, <span style="color:#75715e">//和服务器配置一致
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>              <span style="color:#f92672">&#34;alterId&#34;</span>: <span style="color:#ae81ff">64</span>, <span style="color:#75715e">//和服务器配置一致
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>              <span style="color:#f92672">&#34;security&#34;</span>: <span style="color:#e6db74">&#34;auto&#34;</span>
</span></span><span style="display:flex;"><span>            }
</span></span><span style="display:flex;"><span>          ]
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>      ]
</span></span><span style="display:flex;"><span>    },
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;mux&#34;</span>: {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;enabled&#34;</span>: <span style="color:#66d9ef">true</span>
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  },
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;outboundDetour&#34;</span>: [
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;protocol&#34;</span>: <span style="color:#e6db74">&#34;freedom&#34;</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;settings&#34;</span>: {},
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;tag&#34;</span>: <span style="color:#e6db74">&#34;direct&#34;</span>
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  ],
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;dns&#34;</span>: {
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;servers&#34;</span>: [
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;8.8.8.8&#34;</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;8.8.4.4&#34;</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;localhost&#34;</span>
</span></span><span style="display:flex;"><span>    ]
</span></span><span style="display:flex;"><span>  },
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&#34;routing&#34;</span>: {
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;strategy&#34;</span>: <span style="color:#e6db74">&#34;rules&#34;</span>,
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&#34;settings&#34;</span>: {
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;domainStrategy&#34;</span>: <span style="color:#e6db74">&#34;IPIfNonMatch&#34;</span>,
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&#34;rules&#34;</span>: [
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;type&#34;</span>: <span style="color:#e6db74">&#34;field&#34;</span>,
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;port&#34;</span>: <span style="color:#e6db74">&#34;1-52&#34;</span>,
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;outboundTag&#34;</span>: <span style="color:#e6db74">&#34;direct&#34;</span>
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;type&#34;</span>: <span style="color:#e6db74">&#34;field&#34;</span>,
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;port&#34;</span>: <span style="color:#e6db74">&#34;54-79&#34;</span>,
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;outboundTag&#34;</span>: <span style="color:#e6db74">&#34;direct&#34;</span>
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;type&#34;</span>: <span style="color:#e6db74">&#34;field&#34;</span>,
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;port&#34;</span>: <span style="color:#e6db74">&#34;81-442&#34;</span>,
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;outboundTag&#34;</span>: <span style="color:#e6db74">&#34;direct&#34;</span>
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;type&#34;</span>: <span style="color:#e6db74">&#34;field&#34;</span>,
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;port&#34;</span>: <span style="color:#e6db74">&#34;444-65535&#34;</span>,
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;outboundTag&#34;</span>: <span style="color:#e6db74">&#34;direct&#34;</span>
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;type&#34;</span>: <span style="color:#e6db74">&#34;chinasites&#34;</span>,
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;outboundTag&#34;</span>: <span style="color:#e6db74">&#34;direct&#34;</span>
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;type&#34;</span>: <span style="color:#e6db74">&#34;field&#34;</span>,
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;ip&#34;</span>: [
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;0.0.0.0/8&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;10.0.0.0/8&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;100.64.0.0/10&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;127.0.0.0/8&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;169.254.0.0/16&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;172.16.0.0/12&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;192.0.0.0/24&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;192.0.2.0/24&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;192.168.0.0/16&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;198.18.0.0/15&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;198.51.100.0/24&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;203.0.113.0/24&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;::1/128&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;fc00::/7&#34;</span>,
</span></span><span style="display:flex;"><span>            <span style="color:#e6db74">&#34;fe80::/10&#34;</span>
</span></span><span style="display:flex;"><span>          ],
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;outboundTag&#34;</span>: <span style="color:#e6db74">&#34;direct&#34;</span>
</span></span><span style="display:flex;"><span>        },
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;type&#34;</span>: <span style="color:#e6db74">&#34;chinaip&#34;</span>,
</span></span><span style="display:flex;"><span>          <span style="color:#f92672">&#34;outboundTag&#34;</span>: <span style="color:#e6db74">&#34;direct&#34;</span>
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>      ]
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<p>同样注意json不支持注释。</p>
<p>启动v2ray.exe，代理 127.0.0.1:1080就开始工作了，配置你的浏览器使用socket5协议代理，地址配置为127.0.0.1:1080就可以开始科学上网了。</p>
<p>iOS客户端推荐：</p>
<ul>
<li><a href="https://itunes.apple.com/cn/app/shadowing/id1194879940?mt=8"
   rel="noopener noreferrer" target="_blank" class="external">Shadowing</a>
: 售价￥6，支持shadowsocket协议。</li>
<li><a href="https://itunes.apple.com/cn/app/shadowrocket/id932747118?mt=8"
   rel="noopener noreferrer" target="_blank" class="external">Shadowrocket</a>
: 售价￥18，支持shadowsocket协议和V2Ray的新协议。</li>
</ul>
<p>Android客户端推荐：</p>
<ul>
<li><a href="https://github.com/2dust/v2rayNG"
   rel="noopener noreferrer" target="_blank" class="external">v2rayNG</a>
：免费，支持V2Ray的新协议。</li>
<li><a href="https://github.com/shadowsocks/shadowsocks-android"
   rel="noopener noreferrer" target="_blank" class="external">影梭</a>
：免费，支持shadowsocket协议。</li>
</ul>
<h2 id="2-openconnect-server的安装">2 OpenConnect server的安装</h2>
<p>这是少数还比较好用的VPN方案了，可以使用Cisco的anyconnect作为客户端，各个平台都有。</p>
<p>OpenConnect server安装一直比较麻烦，不过也有人开发了一键安装脚本，经实测bandwagonhost下debian8.0系统相当适合。</p>
<p><a href="https://www.fanyueciyuan.info/fq/ocserv-debian.html"
   rel="noopener noreferrer" target="_blank" class="external">作者的教程</a>
</p>
<p><a href="https://github.com/fanyueciyuan/eazy-for-ss/tree/master/ocservauto"
   rel="noopener noreferrer" target="_blank" class="external">脚本地址</a>
</p>
<p>具体安装时，使用如下命令</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>apt-get install wget
</span></span><span style="display:flex;"><span>wget http://git.io/p9r8 --no-check-certificate -O ocservauto.sh
</span></span><span style="display:flex;"><span>bash ocservauto.sh</span></span></code></pre></div>
<p>如果个人使用，简单点使用用户名密码登陆，整个安装过程只需要输入你想要设定的用户名密码即可。</p>
<p>windows客户端官网下载比较麻烦，这里给出一个下载地址 <a href="http://ftp.spbexchange.ru/net/vpn/"
   rel="noopener noreferrer" target="_blank" class="external">http://ftp.spbexchange.ru/net/vpn/</a>
</p>
<p>客户端的配置相当简单，注意ip地址后要加端口号，然后在警告时信任你自己的服务器。</p>
]]></content:encoded><category>geek</category><category domain="tags">网络</category><category domain="tags">翻墙</category></item><item><title>电影资源</title><link>https://yifeitao.com/movie-source/</link><pubDate>Fri, 12 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/movie-source/</guid><description>&lt;p&gt;&lt;a href="https://thepiratebay.org/"
rel="noopener noreferrer" target="_blank" class="external"&gt;https://thepiratebay.org/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="https://rarbg.to/torrents.php"
rel="noopener noreferrer" target="_blank" class="external"&gt;https://rarbg.to/torrents.php&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://pianyuan.net/"
rel="noopener noreferrer" target="_blank" class="external"&gt;http://pianyuan.net/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bt0.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;http://bt0.com/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.cilisoba.net/"
rel="noopener noreferrer" target="_blank" class="external"&gt;http://www.cilisoba.net/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://subhd.com/main"
rel="noopener noreferrer" target="_blank" class="external"&gt;http://subhd.com/main&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ed2000.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;http://www.ed2000.com/&lt;/a&gt;
&lt;/p&gt;</description><content:encoded><![CDATA[<p><a href="https://thepiratebay.org/"
   rel="noopener noreferrer" target="_blank" class="external">https://thepiratebay.org/</a>
</p>
<p><a href="https://rarbg.to/torrents.php"
   rel="noopener noreferrer" target="_blank" class="external">https://rarbg.to/torrents.php</a>
</p>
<p><a href="http://pianyuan.net/"
   rel="noopener noreferrer" target="_blank" class="external">http://pianyuan.net/</a>
</p>
<p><a href="http://bt0.com/"
   rel="noopener noreferrer" target="_blank" class="external">http://bt0.com/</a>
</p>
<p><a href="http://www.cilisoba.net/"
   rel="noopener noreferrer" target="_blank" class="external">http://www.cilisoba.net/</a>
</p>
<p><a href="http://subhd.com/main"
   rel="noopener noreferrer" target="_blank" class="external">http://subhd.com/main</a>
</p>
<p><a href="http://www.ed2000.com/"
   rel="noopener noreferrer" target="_blank" class="external">http://www.ed2000.com/</a>
</p>
]]></content:encoded><category>movie</category><category domain="tags">资源</category><category domain="tags">电影</category></item><item><title>《模仿游戏》：Think Different</title><link>https://yifeitao.com/the-imitation-game/</link><pubDate>Thu, 11 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-imitation-game/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2255040492.webp" alt="p2255040492.webp" loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;在这个计算机时代，艾伦·图灵的伟大被越来越多的人知道了，作为行业内的一员，往往会半开玩笑说感谢祖师爷赐饭，以前也了解过他的生平，但是从电影中感受后，还是感慨良久。&lt;/p&gt;
&lt;p&gt;片中最有深意的一段对话可能是图灵和警察在审讯室中的对话，图灵阐释了何为机器的智能，强调了没有必要强求机器像人类一样思考，而应该允许它们Think Different。显然，这也是电影创作者想让图灵做一个控诉，身为同性恋，图灵为他的不一样付出了生命的代价。&lt;/p&gt;
&lt;p&gt;豆瓣影评中有很多人发了很多图灵的逸事，试图缓和这个悲剧的气氛，然而不管电影创作者如何裁剪事实，有两个事实是不变的，一是图灵是一个伟大的数学家、密码学家，为二战中同盟国的胜利做出了不可磨灭的贡献，二是图灵是一个同性恋，被判化学阉割，心力交瘁中自杀身亡，英国女王在2013年还为此发了一个特赦令，可以算是迟来的官方的道歉。不管图灵是不是真的像电影中一样社交能力低下，我们人类都曾因为错误的观念，而伤害了这个对人类居功至伟的天才。&lt;/p&gt;
&lt;p&gt;面对不一样的时候，我们要宽容一点，再宽容一点，正是那些看起来和其他人不一样的人，做出了其他人无法想象的成就。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2255040492.webp" alt="p2255040492.webp" loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>在这个计算机时代，艾伦·图灵的伟大被越来越多的人知道了，作为行业内的一员，往往会半开玩笑说感谢祖师爷赐饭，以前也了解过他的生平，但是从电影中感受后，还是感慨良久。</p>
<p>片中最有深意的一段对话可能是图灵和警察在审讯室中的对话，图灵阐释了何为机器的智能，强调了没有必要强求机器像人类一样思考，而应该允许它们Think Different。显然，这也是电影创作者想让图灵做一个控诉，身为同性恋，图灵为他的不一样付出了生命的代价。</p>
<p>豆瓣影评中有很多人发了很多图灵的逸事，试图缓和这个悲剧的气氛，然而不管电影创作者如何裁剪事实，有两个事实是不变的，一是图灵是一个伟大的数学家、密码学家，为二战中同盟国的胜利做出了不可磨灭的贡献，二是图灵是一个同性恋，被判化学阉割，心力交瘁中自杀身亡，英国女王在2013年还为此发了一个特赦令，可以算是迟来的官方的道歉。不管图灵是不是真的像电影中一样社交能力低下，我们人类都曾因为错误的观念，而伤害了这个对人类居功至伟的天才。</p>
<p>面对不一样的时候，我们要宽容一点，再宽容一点，正是那些看起来和其他人不一样的人，做出了其他人无法想象的成就。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">历史</category></item><item><title>平和与进取</title><link>https://yifeitao.com/peaceful-and-enterprising/</link><pubDate>Wed, 10 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/peaceful-and-enterprising/</guid><description>&lt;p&gt;有句俗话叫做“憎人富贵嫌人贫”，几乎写尽了人在和他人暗相比较时的不良心态。&lt;/p&gt;
&lt;p&gt;一般人在年轻的时候还好，要么还充满了斗志，觉得自己能成就一番事业，要么就是肆意挥霍自己的青春而不自觉。&lt;/p&gt;
&lt;p&gt;待到人到中年，或者说是向这个世界妥协的年龄，这种“憎人富贵嫌人贫”的心态就开始普遍显现了，看见比自己混得好的，尤其是自己熟悉的，曾经不如自己的，就心生嫉妒，忍不住要去诋毁人家一番，觉得别人的成功都是运气，或者靠不怎么光彩的手段得来的，看见不如自己的，就觉得都是因为这些人不努力，所以才会如此那般田地。&lt;/p&gt;
&lt;p&gt;人身在世，很难做到完全不和别人去比较，在信息社会之前的时代，比较的范围还比较小，而现在，谁都知道首富是谁，有多少钱，比较的范围就更大了。比较当然有用了，如果我们是按见贤思齐的方向去比较的话。&lt;/p&gt;
&lt;p&gt;好的比较的心态应该的“憎人富贵嫌人贫”的反面，看到比自己混得好的，尤其是熟人，应该为他们喝彩，认同他们付出的努力，看看有没有什么值得自己学习的，而看到不如自己的人，应该体谅他们的苦处，明白他们被环境和眼界所限的地方。&lt;/p&gt;
&lt;p&gt;这应当是一种平和与进取并存的心态，能够平和的接受自己所处的社会地位，对自己的落后不急躁，但同时又保持进取心，更多的去和自己比较，争取每天都有新的进步。&lt;/p&gt;</description><content:encoded><![CDATA[<p>有句俗话叫做“憎人富贵嫌人贫”，几乎写尽了人在和他人暗相比较时的不良心态。</p>
<p>一般人在年轻的时候还好，要么还充满了斗志，觉得自己能成就一番事业，要么就是肆意挥霍自己的青春而不自觉。</p>
<p>待到人到中年，或者说是向这个世界妥协的年龄，这种“憎人富贵嫌人贫”的心态就开始普遍显现了，看见比自己混得好的，尤其是自己熟悉的，曾经不如自己的，就心生嫉妒，忍不住要去诋毁人家一番，觉得别人的成功都是运气，或者靠不怎么光彩的手段得来的，看见不如自己的，就觉得都是因为这些人不努力，所以才会如此那般田地。</p>
<p>人身在世，很难做到完全不和别人去比较，在信息社会之前的时代，比较的范围还比较小，而现在，谁都知道首富是谁，有多少钱，比较的范围就更大了。比较当然有用了，如果我们是按见贤思齐的方向去比较的话。</p>
<p>好的比较的心态应该的“憎人富贵嫌人贫”的反面，看到比自己混得好的，尤其是熟人，应该为他们喝彩，认同他们付出的努力，看看有没有什么值得自己学习的，而看到不如自己的人，应该体谅他们的苦处，明白他们被环境和眼界所限的地方。</p>
<p>这应当是一种平和与进取并存的心态，能够平和的接受自己所处的社会地位，对自己的落后不急躁，但同时又保持进取心，更多的去和自己比较，争取每天都有新的进步。</p>
]]></content:encoded><category>methodology</category><category domain="tags">人生</category><category domain="tags">平衡</category></item><item><title>安全驾驶</title><link>https://yifeitao.com/safe-driving/</link><pubDate>Tue, 09 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/safe-driving/</guid><description>&lt;p&gt;前几天考完科目四，所谓的文明驾驶知识考试。题库中的题目大概有如下几种：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;交通规则，主要是如何与其他交通参与者互动，包括机动车、非机动车、行人等；&lt;/li&gt;
&lt;li&gt;来自于实际的交通事故，带着血淋林的经验问你哪儿做错了；&lt;/li&gt;
&lt;li&gt;还有很多不算是交通规则的潜规则，比如要离大型工程车辆远一点之类的，有点像老司机经验。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;科目四可能是整个考试中最简单的，很多人说只要选停、让、等就对了，而相当部分人这么说的时候，是带着不屑或者不以为然的。但是我觉得，这个考试明显是很有用的，如果参加考试的人都有把这些题目真正记上心头的话。甚至可以说，如果现实中都这么开车，该是多么美好。&lt;/p&gt;
&lt;p&gt;比如有一条规则叫做通过人行横道要减速，当了二十几年行人的我，还真的很少遇到会减速的车，尤其是在没有红绿灯的地方，往往都是呼啸而过，没有踩油门已经算是对得住人了，开车的要防御性驾驶，走路的也得防御性走路，指不定就有个开车的疯子把你碾压过去了。尤其是在我学过车之后，更加知道司机可能有多不靠谱，所以现在走路愈发小心了。&lt;/p&gt;
&lt;p&gt;很多时候，开车稍微慢一点的司机，还会被其他人鄙视嘲笑，而开得快，往往也不过是1小时的车程变成了四五十分钟而已，那么省出来的一二十分钟，真的就那么重要吗。所有人貌似都爱惜自己的生命，但实际做起来还真不是。&lt;/p&gt;</description><content:encoded><![CDATA[<p>前几天考完科目四，所谓的文明驾驶知识考试。题库中的题目大概有如下几种：</p>
<ol>
<li>交通规则，主要是如何与其他交通参与者互动，包括机动车、非机动车、行人等；</li>
<li>来自于实际的交通事故，带着血淋林的经验问你哪儿做错了；</li>
<li>还有很多不算是交通规则的潜规则，比如要离大型工程车辆远一点之类的，有点像老司机经验。</li>
</ol>
<p>科目四可能是整个考试中最简单的，很多人说只要选停、让、等就对了，而相当部分人这么说的时候，是带着不屑或者不以为然的。但是我觉得，这个考试明显是很有用的，如果参加考试的人都有把这些题目真正记上心头的话。甚至可以说，如果现实中都这么开车，该是多么美好。</p>
<p>比如有一条规则叫做通过人行横道要减速，当了二十几年行人的我，还真的很少遇到会减速的车，尤其是在没有红绿灯的地方，往往都是呼啸而过，没有踩油门已经算是对得住人了，开车的要防御性驾驶，走路的也得防御性走路，指不定就有个开车的疯子把你碾压过去了。尤其是在我学过车之后，更加知道司机可能有多不靠谱，所以现在走路愈发小心了。</p>
<p>很多时候，开车稍微慢一点的司机，还会被其他人鄙视嘲笑，而开得快，往往也不过是1小时的车程变成了四五十分钟而已，那么省出来的一二十分钟，真的就那么重要吗。所有人貌似都爱惜自己的生命，但实际做起来还真不是。</p>
]]></content:encoded><category>life</category><category domain="tags">驾驶</category><category domain="tags">安全</category></item><item><title>创造环境是第一步</title><link>https://yifeitao.com/create-environment/</link><pubDate>Sun, 07 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/create-environment/</guid><description>&lt;p&gt;读本科的时候，有个老师跟我们说，做作业看书一定要去自习室，而不能呆在宿舍，我不太以为然，很多课只在临近考试才去自习室突击一番，不得不说，这是我本科阶段最后悔的事情之一，导致不少东西学得有些虚弱，到了现如今还免不了常常要补上一补。&lt;/p&gt;
&lt;p&gt;当年我不太重视老师的话，大约是带着几分自负的，觉得自己能够很好的管理自己，无论呆在什么地方都一样，只要我想努力学习，就一定能做到，然而事实是，宿舍那种逼仄的环境，加上呼三喝四打游戏的人们，真的不是学习的好地方，回想起来，我在宿舍做的最多的事情除了睡觉，就是打魔兽和看电影，那些学得扎实的东西，都是在自习室和机房堆出来的。&lt;/p&gt;
&lt;p&gt;这么多年过去了，我深刻体会了一个简单的道理：一定要承认自己会被环境深刻的影响，而不要自以为是的举世浊而我独清。我们需要锤炼的，其实没有必要是和环境对抗的能力，性价比更高的应该是时刻感知环境对自己的影响，在不利的情况下迅速决断，为自己创造一个好的环境。孟母三迁，讲的就是这回事情，人生哲理都是无趣的、经久不衰的、老生常谈的。&lt;/p&gt;</description><content:encoded><![CDATA[<p>读本科的时候，有个老师跟我们说，做作业看书一定要去自习室，而不能呆在宿舍，我不太以为然，很多课只在临近考试才去自习室突击一番，不得不说，这是我本科阶段最后悔的事情之一，导致不少东西学得有些虚弱，到了现如今还免不了常常要补上一补。</p>
<p>当年我不太重视老师的话，大约是带着几分自负的，觉得自己能够很好的管理自己，无论呆在什么地方都一样，只要我想努力学习，就一定能做到，然而事实是，宿舍那种逼仄的环境，加上呼三喝四打游戏的人们，真的不是学习的好地方，回想起来，我在宿舍做的最多的事情除了睡觉，就是打魔兽和看电影，那些学得扎实的东西，都是在自习室和机房堆出来的。</p>
<p>这么多年过去了，我深刻体会了一个简单的道理：一定要承认自己会被环境深刻的影响，而不要自以为是的举世浊而我独清。我们需要锤炼的，其实没有必要是和环境对抗的能力，性价比更高的应该是时刻感知环境对自己的影响，在不利的情况下迅速决断，为自己创造一个好的环境。孟母三迁，讲的就是这回事情，人生哲理都是无趣的、经久不衰的、老生常谈的。</p>
]]></content:encoded><category>methodology</category><category domain="tags">行动</category><category domain="tags">环境</category></item><item><title>《0~6岁A+育儿法》：育儿中的理念与教条</title><link>https://yifeitao.com/a-plus-infanticulture/</link><pubDate>Fri, 05 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/a-plus-infanticulture/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s11314900.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;这是一本难得的好书，得益于作者的多重身份：心理学家、孩子的母亲、从中国的农村多级跃迁到美国中产。作者喜欢结合自己孩子的例子来谈心理学原理，所以看起来不累，就像和一个孩子的妈妈聊天一样轻松，作者是一个跨文化生活的人，所以书中很多地方讨论了中国传统育儿和美国育儿理念上的差异，尽管作者是推崇美国育儿理念的，但是这种推崇相当小心翼翼，而是基于历史条件来谈育儿理念的合理性，我认为这是这本书中最难的的一点。&lt;/p&gt;
&lt;p&gt;无论做什么事情，理念都非常重要，育儿也是如此，所有的方法论首先要在理念上认同才会真的有效果，然而，育儿的理念很容易就会变成一种教条。要不要穿纸尿裤，要不要喂饭，要不要分床睡，能不能大声训斥孩子，其实很多问题并没有什么标准答案。不同的社会环境和不同的家庭条件下，可能会有不同的选择。&lt;/p&gt;
&lt;p&gt;如果说没有什么教条需要去遵守，那么为什么还需要学习育儿理念呢？因为还是有很多普遍性的原则和规律的，育儿本质上也是一种人际关系学，是父母和孩子打交道的方法，孩子首先是人，所以他们会有普遍的人性，希望独立、自由、得到尊重，其次他们毕竟还很不成熟，在力量、思想等各个方面都不如成人，需要家长帮助他们不断提升自己的能力，适应社会。&lt;/p&gt;
&lt;p&gt;育儿也像武侠小说中的剑法，如果只是模仿个一招半式，是下乘的，要想成为高手，必然不能拘泥于教条，而是要深刻理解剑法的原理，身为家长，多看一些好书，多思考，都是在滋养自己，而真正面对孩子时，可能不需要想如何去符合某些理念，而是跟从自己的内心，根据孩子的表现和反应不断的调整自己的方式方法，和所有的人际关系一样，育儿也是相互的，育儿即育己，是一个共同成长的过程。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/lpic/s11314900.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这是一本难得的好书，得益于作者的多重身份：心理学家、孩子的母亲、从中国的农村多级跃迁到美国中产。作者喜欢结合自己孩子的例子来谈心理学原理，所以看起来不累，就像和一个孩子的妈妈聊天一样轻松，作者是一个跨文化生活的人，所以书中很多地方讨论了中国传统育儿和美国育儿理念上的差异，尽管作者是推崇美国育儿理念的，但是这种推崇相当小心翼翼，而是基于历史条件来谈育儿理念的合理性，我认为这是这本书中最难的的一点。</p>
<p>无论做什么事情，理念都非常重要，育儿也是如此，所有的方法论首先要在理念上认同才会真的有效果，然而，育儿的理念很容易就会变成一种教条。要不要穿纸尿裤，要不要喂饭，要不要分床睡，能不能大声训斥孩子，其实很多问题并没有什么标准答案。不同的社会环境和不同的家庭条件下，可能会有不同的选择。</p>
<p>如果说没有什么教条需要去遵守，那么为什么还需要学习育儿理念呢？因为还是有很多普遍性的原则和规律的，育儿本质上也是一种人际关系学，是父母和孩子打交道的方法，孩子首先是人，所以他们会有普遍的人性，希望独立、自由、得到尊重，其次他们毕竟还很不成熟，在力量、思想等各个方面都不如成人，需要家长帮助他们不断提升自己的能力，适应社会。</p>
<p>育儿也像武侠小说中的剑法，如果只是模仿个一招半式，是下乘的，要想成为高手，必然不能拘泥于教条，而是要深刻理解剑法的原理，身为家长，多看一些好书，多思考，都是在滋养自己，而真正面对孩子时，可能不需要想如何去符合某些理念，而是跟从自己的内心，根据孩子的表现和反应不断的调整自己的方式方法，和所有的人际关系一样，育儿也是相互的，育儿即育己，是一个共同成长的过程。</p>
]]></content:encoded><category>reading</category><category domain="tags">育儿</category><category domain="tags">读书笔记</category></item><item><title>祛魅</title><link>https://yifeitao.com/demystification/</link><pubDate>Wed, 03 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/demystification/</guid><description>&lt;p&gt;如果想考验一个国人是不是思维固化，可以在他面前质疑一些东西，看看他的反应。&lt;/p&gt;
&lt;p&gt;第一个可以质疑的是中国武术，由于实战和体育竞技中中国武术都没什么值得夸耀的，所以中国武术爱好者，能够求得心灵安慰的只有李小龙、深藏不漏的民间高手等等，所以质疑中国武术的杀伤力只能放在最后，在这个挡位中，质疑李小龙可能是杀伤力最大的；&lt;/p&gt;
&lt;p&gt;第二个可以质疑的是中医，无论医学如何昌明，每个人对医学的理解与感受依然是掺杂了个人体验，所以人人都能对求医问药说出个一二三来，那么当你质疑中医时，“五千年文化”，“黄帝内经”，“中医治本”、“中医无副作用”、“真正的中医在民间”、“老中医很神奇”、“中国以前没有西医也活得好好的”，当你质疑中医时，对人的心理冲击显然比质疑中国武术打多了。&lt;/p&gt;
&lt;p&gt;第三个，也是火力最猛的，你可以质疑一些中国美食，这时候你就要变成不爱国的典范了，你看看舌尖上的中国引起的狂热，就知道中国美食可能是中国人最重要的精神图腾了，在小粉红出征facebook时，美食图片也是一种武器，不但你不能质疑中国美食，甚至你也不能质疑他家乡的美食，我看到过东北人在南方吐槽，说没什么好吃的，还是我们东北好，你不得不感叹他们对猪肉炖粉条的信心。&lt;/p&gt;
&lt;p&gt;如果一个中国人能坦然面对这些质疑，没有义愤填膺，八九不离十这是一个思想开放，能和他讨论问题的人了。这些质疑的核心思想是祛魅，把一些神神秘秘构成的虚妄的民族自尊心放在阳光下炙烤，只有放弃了很多莫须有的集体自豪感，才能开始建立一个人作为个体的尊严与追求。&lt;/p&gt;</description><content:encoded><![CDATA[<p>如果想考验一个国人是不是思维固化，可以在他面前质疑一些东西，看看他的反应。</p>
<p>第一个可以质疑的是中国武术，由于实战和体育竞技中中国武术都没什么值得夸耀的，所以中国武术爱好者，能够求得心灵安慰的只有李小龙、深藏不漏的民间高手等等，所以质疑中国武术的杀伤力只能放在最后，在这个挡位中，质疑李小龙可能是杀伤力最大的；</p>
<p>第二个可以质疑的是中医，无论医学如何昌明，每个人对医学的理解与感受依然是掺杂了个人体验，所以人人都能对求医问药说出个一二三来，那么当你质疑中医时，“五千年文化”，“黄帝内经”，“中医治本”、“中医无副作用”、“真正的中医在民间”、“老中医很神奇”、“中国以前没有西医也活得好好的”，当你质疑中医时，对人的心理冲击显然比质疑中国武术打多了。</p>
<p>第三个，也是火力最猛的，你可以质疑一些中国美食，这时候你就要变成不爱国的典范了，你看看舌尖上的中国引起的狂热，就知道中国美食可能是中国人最重要的精神图腾了，在小粉红出征facebook时，美食图片也是一种武器，不但你不能质疑中国美食，甚至你也不能质疑他家乡的美食，我看到过东北人在南方吐槽，说没什么好吃的，还是我们东北好，你不得不感叹他们对猪肉炖粉条的信心。</p>
<p>如果一个中国人能坦然面对这些质疑，没有义愤填膺，八九不离十这是一个思想开放，能和他讨论问题的人了。这些质疑的核心思想是祛魅，把一些神神秘秘构成的虚妄的民族自尊心放在阳光下炙烤，只有放弃了很多莫须有的集体自豪感，才能开始建立一个人作为个体的尊严与追求。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">思考</category><category domain="tags">认知</category></item><item><title>《春娇救志明》：如果没有俗套，该怎么长大？</title><link>https://yifeitao.com/love-off-the-cuff/</link><pubDate>Tue, 02 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/love-off-the-cuff/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2456056900.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;“志明与春娇”系列一不小心就七年过去了，能感觉出来导演有一些东西要表达，但是似乎更多的还是商业上的考量。当年看《买凶拍人》、《伊莎贝拉》，对导演是充满了期待的，现在看来，有些遗憾的是，好像导演一直沉醉于自己的小聪明，摆脱不了一个段子手的感觉。&lt;/p&gt;
&lt;p&gt;《春娇救志明》想要探讨女人需要的安全感与男人长不大这个话题，这当然是一个好话题，我在看到张志明的表现时，脑子里闪过了很多朋友的形象，似乎有趣与成熟就是不能并存的两种属性。有的人为了有趣，宁愿不要成熟，而选择一辈子活在动荡之中，就像余春娇的爸爸，这也不失为一种人生选择。&lt;/p&gt;
&lt;p&gt;豆瓣热评中有人说，不喜欢看到浪子回头，而我想说，如果看到浪子一直浪下去，观众可以觉得有趣，但是仔细想想浪子的人生，如果一直浪到老，又何尝不是一种心酸，这种人到老都不知道责任、担当、取舍为何物，未曾为了他人牺牲放弃过任何东西，活到最后本质上依然是孤独一人。&lt;/p&gt;
&lt;p&gt;导演的小聪明支撑不起这么宏大的话题，只能是靠段子来凑，到了最后，我也不知道张志民怎么就成熟了，那种浮夸的道歉与求婚，在我看来，恰恰还是一种幼稚的行为，照着影视剧谈恋爱的人，又被带到沟里去了。接受了张志明的余春娇，是真的感到安心了么？还是只是一种刻奇反应。&lt;/p&gt;
&lt;p&gt;如果真的要看爱情三部曲，要从影视作品中学爱情与婚姻、家庭的观念，我还是推荐“爱在”三部曲，值得一看再看。而“志明与春娇”这种小品，看过就算了，其实也没有看续集的欲望。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2456056900.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>“志明与春娇”系列一不小心就七年过去了，能感觉出来导演有一些东西要表达，但是似乎更多的还是商业上的考量。当年看《买凶拍人》、《伊莎贝拉》，对导演是充满了期待的，现在看来，有些遗憾的是，好像导演一直沉醉于自己的小聪明，摆脱不了一个段子手的感觉。</p>
<p>《春娇救志明》想要探讨女人需要的安全感与男人长不大这个话题，这当然是一个好话题，我在看到张志明的表现时，脑子里闪过了很多朋友的形象，似乎有趣与成熟就是不能并存的两种属性。有的人为了有趣，宁愿不要成熟，而选择一辈子活在动荡之中，就像余春娇的爸爸，这也不失为一种人生选择。</p>
<p>豆瓣热评中有人说，不喜欢看到浪子回头，而我想说，如果看到浪子一直浪下去，观众可以觉得有趣，但是仔细想想浪子的人生，如果一直浪到老，又何尝不是一种心酸，这种人到老都不知道责任、担当、取舍为何物，未曾为了他人牺牲放弃过任何东西，活到最后本质上依然是孤独一人。</p>
<p>导演的小聪明支撑不起这么宏大的话题，只能是靠段子来凑，到了最后，我也不知道张志民怎么就成熟了，那种浮夸的道歉与求婚，在我看来，恰恰还是一种幼稚的行为，照着影视剧谈恋爱的人，又被带到沟里去了。接受了张志明的余春娇，是真的感到安心了么？还是只是一种刻奇反应。</p>
<p>如果真的要看爱情三部曲，要从影视作品中学爱情与婚姻、家庭的观念，我还是推荐“爱在”三部曲，值得一看再看。而“志明与春娇”这种小品，看过就算了，其实也没有看续集的欲望。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">爱情</category></item><item><title>自由不是免费的</title><link>https://yifeitao.com/freedom-is-not-free/</link><pubDate>Mon, 01 May 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/freedom-is-not-free/</guid><description>&lt;p&gt;自由是个好东西，人们都喜欢自由自在。自由又不是一个好东西，它常常和散漫联系到一起。慕课火热的时候，人们就发现，实际上只有极少数的人能真正把整个课程学完，这种充分自由的线上课堂，不是每个人都能消受的。&lt;/p&gt;
&lt;p&gt;组织给我们订立的规范越多，我们就会越觉得不自由，但同时需要自己操心的事情就越少；反过来，我们越是得到充分的自由，自己需要安排的东西就越多，更加需要极好的自制力。组织，比如说学校，往往是针对平均水平行事的，如果你低于水平线，会觉得被拖着走吃力，如果高于水平线，则会觉得处处掣肘。&lt;/p&gt;
&lt;p&gt;电影《肖申克的救赎》中，表现了一种习惯于让渡自由后失去自理能力的悲剧，配角之一在出狱后，没有人再规定安排自己每天去做啥，重获自由的他反而感觉生无可恋，想到了自杀。&lt;/p&gt;
&lt;p&gt;获得自由时，最大的代价，就是你需要自己想好每天去做什么，怎么把这些事做好。从这个角度来看，那些对生活麻木的人，表面上看起来虽然是自由的，但其实已经自己把自己关进了某个牢笼。真正向往自由的人，即使真的在监狱中，也会设法寻找心灵的自由。&lt;/p&gt;
&lt;p&gt;你永远都可以做选择，这是生而为人的最大乐趣。自由不是免费的，但这些代价，如果从人生意义的角度去考虑，却又算不上是什么代价了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>自由是个好东西，人们都喜欢自由自在。自由又不是一个好东西，它常常和散漫联系到一起。慕课火热的时候，人们就发现，实际上只有极少数的人能真正把整个课程学完，这种充分自由的线上课堂，不是每个人都能消受的。</p>
<p>组织给我们订立的规范越多，我们就会越觉得不自由，但同时需要自己操心的事情就越少；反过来，我们越是得到充分的自由，自己需要安排的东西就越多，更加需要极好的自制力。组织，比如说学校，往往是针对平均水平行事的，如果你低于水平线，会觉得被拖着走吃力，如果高于水平线，则会觉得处处掣肘。</p>
<p>电影《肖申克的救赎》中，表现了一种习惯于让渡自由后失去自理能力的悲剧，配角之一在出狱后，没有人再规定安排自己每天去做啥，重获自由的他反而感觉生无可恋，想到了自杀。</p>
<p>获得自由时，最大的代价，就是你需要自己想好每天去做什么，怎么把这些事做好。从这个角度来看，那些对生活麻木的人，表面上看起来虽然是自由的，但其实已经自己把自己关进了某个牢笼。真正向往自由的人，即使真的在监狱中，也会设法寻找心灵的自由。</p>
<p>你永远都可以做选择，这是生而为人的最大乐趣。自由不是免费的，但这些代价，如果从人生意义的角度去考虑，却又算不上是什么代价了。</p>
]]></content:encoded><category>life</category><category domain="tags">自由</category><category domain="tags">思考</category></item><item><title>我喜欢旅游吗？</title><link>https://yifeitao.com/do-i-like-travel/</link><pubDate>Sat, 29 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/do-i-like-travel/</guid><description>&lt;p&gt;其实我应该算不是那么喜欢旅游的人，我宁愿坐在家里，看风景片，要真去看风景，往往第一时间想到的是累。&lt;/p&gt;
&lt;p&gt;但是我又想到我应该是一个喜欢旅游的人才对，因为我慢慢变成了一个喜欢折腾自己的人，而旅游不就是花钱折腾自己么。&lt;/p&gt;
&lt;p&gt;于是我又想到我其实是喜欢旅游的，只是不喜欢穷游罢了，可惜的是，恰好我目前还比较穷，所以旅游没什么太好的体验。&lt;/p&gt;
&lt;p&gt;可是我又很羡慕那些穷游也很开心的人，觉得自己是不是变质了，不能吃苦了，没有小资的命，犯了小资的命……&lt;/p&gt;
&lt;p&gt;不过我又想起来自己其实在很多事情上还是很能吃苦的，尤其是在那些自己感兴趣的事情上，或者在能赚钱的事情上，一个人不能在所有的事情上都去吃苦嘛，那不是成了苦海么？&lt;/p&gt;
&lt;p&gt;所以我还是觉得应该要好好赚钱，等有了大钱，就可以富游了，那时的体验必然不同现在。&lt;/p&gt;
&lt;p&gt;然而我又想到如果一味的去赚钱，谁知道我有了钱之后还有命去旅游么，不会就过劳死了吧。&lt;/p&gt;</description><content:encoded><![CDATA[<p>其实我应该算不是那么喜欢旅游的人，我宁愿坐在家里，看风景片，要真去看风景，往往第一时间想到的是累。</p>
<p>但是我又想到我应该是一个喜欢旅游的人才对，因为我慢慢变成了一个喜欢折腾自己的人，而旅游不就是花钱折腾自己么。</p>
<p>于是我又想到我其实是喜欢旅游的，只是不喜欢穷游罢了，可惜的是，恰好我目前还比较穷，所以旅游没什么太好的体验。</p>
<p>可是我又很羡慕那些穷游也很开心的人，觉得自己是不是变质了，不能吃苦了，没有小资的命，犯了小资的命……</p>
<p>不过我又想起来自己其实在很多事情上还是很能吃苦的，尤其是在那些自己感兴趣的事情上，或者在能赚钱的事情上，一个人不能在所有的事情上都去吃苦嘛，那不是成了苦海么？</p>
<p>所以我还是觉得应该要好好赚钱，等有了大钱，就可以富游了，那时的体验必然不同现在。</p>
<p>然而我又想到如果一味的去赚钱，谁知道我有了钱之后还有命去旅游么，不会就过劳死了吧。</p>
]]></content:encoded><category>life</category><category domain="tags">旅行</category><category domain="tags">反思</category></item><item><title>《黑镜3第1集：急转直下》：活在朋友圈里的人们</title><link>https://yifeitao.com/black-mirror-season-3-nosedive/</link><pubDate>Fri, 28 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/black-mirror-season-3-nosedive/</guid><description>&lt;p&gt;这是一集让观众觉得郁闷无比的一集电视剧，因为它没有反转没有奇迹，我们看这女主急转直下的人生经历，就像看到我们自己被生活狠狠的拳击一般。&lt;/p&gt;
&lt;p&gt;剧中的时代，人人都有一个由社交评价构成的分数，而这个分数则决定了社会地位与特权，因此，评分最高的人是最善于和其他人搞好关系的人，获取评价不是社交活动后的自然产物，而简直是社交活动的目的。&lt;/p&gt;
&lt;p&gt;想想我们的微信朋友圈，就知道文艺作品还真是来源于生活。幸好微信还没有五星评分机制，但是点赞集赞跟剧情已经有几分相似，商家搞优惠活动会要求集赞，而搞各类评选活动，更是离不开微信拉票，而最后，你会发现什么优秀宝贝、漂亮宝贝，最后拼的都是父母的人脉广度。&lt;/p&gt;
&lt;p&gt;而我们在朋友圈发图的时候，又何尝不是为了表现自己幸福与优越的一面，而很自觉的去隐藏黑暗面。偶尔晒晒幸福，本来也是一件好事，毕竟生活已经不易，总得找正能量让自己活下去。可是如果整天想着发朋友圈等赞，那么就变成了活在朋友圈的人，就像剧中人买饼干不是为了吃而是为了发照片一样，我们会忘掉生活本身，忽视掉那些乐趣，而变成了一个个的演员。和演员不同的是，演员在内心深处，是知道自己是演员的，而在朋友圈表演，我们可能会忘了自己的初心，模糊掉了人生的标准。&lt;/p&gt;</description><content:encoded><![CDATA[<p>这是一集让观众觉得郁闷无比的一集电视剧，因为它没有反转没有奇迹，我们看这女主急转直下的人生经历，就像看到我们自己被生活狠狠的拳击一般。</p>
<p>剧中的时代，人人都有一个由社交评价构成的分数，而这个分数则决定了社会地位与特权，因此，评分最高的人是最善于和其他人搞好关系的人，获取评价不是社交活动后的自然产物，而简直是社交活动的目的。</p>
<p>想想我们的微信朋友圈，就知道文艺作品还真是来源于生活。幸好微信还没有五星评分机制，但是点赞集赞跟剧情已经有几分相似，商家搞优惠活动会要求集赞，而搞各类评选活动，更是离不开微信拉票，而最后，你会发现什么优秀宝贝、漂亮宝贝，最后拼的都是父母的人脉广度。</p>
<p>而我们在朋友圈发图的时候，又何尝不是为了表现自己幸福与优越的一面，而很自觉的去隐藏黑暗面。偶尔晒晒幸福，本来也是一件好事，毕竟生活已经不易，总得找正能量让自己活下去。可是如果整天想着发朋友圈等赞，那么就变成了活在朋友圈的人，就像剧中人买饼干不是为了吃而是为了发照片一样，我们会忘掉生活本身，忽视掉那些乐趣，而变成了一个个的演员。和演员不同的是，演员在内心深处，是知道自己是演员的，而在朋友圈表演，我们可能会忘了自己的初心，模糊掉了人生的标准。</p>
]]></content:encoded><category>movie</category><category domain="tags">电视剧</category><category domain="tags">科技</category></item><item><title>《福原爱：镜头下的四分之一个世纪 》：不是一个瓷娃娃</title><link>https://yifeitao.com/fukuhara-ai/</link><pubDate>Thu, 27 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/fukuhara-ai/</guid><description>&lt;div class="video-embed bilibili"&gt;
&lt;iframe src="//player.bilibili.com/player.html?aid=9523422&amp;autoplay=0" allowfullscreen="true" scrolling="no" frameborder="0" loading="lazy"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;福原爱爱哭，所以被赠送了一个瓷娃娃的外号，可是仔细去了解一下这个运动员，就知道远远不是那么简单。&lt;/p&gt;
&lt;p&gt;富士电视台跟拍了24年，应该说导演的眼光很毒到，在一个三四岁的爱哭的孩子身上，看到了背后永不放弃的美好品质。&lt;/p&gt;
&lt;p&gt;身为中国人，可能津津乐道大魔王张怡宁和爱哭鬼福原爱的逸事，甚至会嘲笑一嘴福原爱的乒乓球水平，然而她带领日本队连夺两届奥运会团体铜牌，成就与努力程度早就超越99.9%的普罗大众了。&lt;/p&gt;
&lt;p&gt;看这个纪录片有不少感触，聊作一记：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;日本80年代已经相当发达了，中国则是在福原爱成长的20几年中也在飞速发展；&lt;/li&gt;
&lt;li&gt;如果说有什么天才的话，努力的能力可能是所有天才的秘诀，所谓乒乓球之神眷顾的人，同时也是努力之神眷顾的人；&lt;/li&gt;
&lt;li&gt;有针对性的练习是提示水平的秘诀，体育运动的训练理念其实很值得推广学习；&lt;/li&gt;
&lt;li&gt;幸运会眷顾努力之人，一个人想要结识更多的人，最应该依靠的是事业；&lt;/li&gt;
&lt;li&gt;爱哭不是什么问题，情绪发泄不是问题，问题是在这之后如何去做，是放弃，还是像福原爱一样执拗的对妈妈说：不要不练习！&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<div class="video-embed bilibili">
  <iframe src="//player.bilibili.com/player.html?aid=9523422&autoplay=0" allowfullscreen="true" scrolling="no" frameborder="0" loading="lazy"></iframe>
</div>

<p>福原爱爱哭，所以被赠送了一个瓷娃娃的外号，可是仔细去了解一下这个运动员，就知道远远不是那么简单。</p>
<p>富士电视台跟拍了24年，应该说导演的眼光很毒到，在一个三四岁的爱哭的孩子身上，看到了背后永不放弃的美好品质。</p>
<p>身为中国人，可能津津乐道大魔王张怡宁和爱哭鬼福原爱的逸事，甚至会嘲笑一嘴福原爱的乒乓球水平，然而她带领日本队连夺两届奥运会团体铜牌，成就与努力程度早就超越99.9%的普罗大众了。</p>
<p>看这个纪录片有不少感触，聊作一记：</p>
<ol>
<li>日本80年代已经相当发达了，中国则是在福原爱成长的20几年中也在飞速发展；</li>
<li>如果说有什么天才的话，努力的能力可能是所有天才的秘诀，所谓乒乓球之神眷顾的人，同时也是努力之神眷顾的人；</li>
<li>有针对性的练习是提示水平的秘诀，体育运动的训练理念其实很值得推广学习；</li>
<li>幸运会眷顾努力之人，一个人想要结识更多的人，最应该依靠的是事业；</li>
<li>爱哭不是什么问题，情绪发泄不是问题，问题是在这之后如何去做，是放弃，还是像福原爱一样执拗的对妈妈说：不要不练习！</li>
</ol>
]]></content:encoded><category>movie</category><category domain="tags">纪录片</category><category domain="tags">运动</category></item><item><title>《边境杀手》：所谓真正的黑暗</title><link>https://yifeitao.com/sicario/</link><pubDate>Wed, 26 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/sicario/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2263976596.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;我认识女主角Emily Blunt 的第一部电影是《明日边缘》，看这部电影之前并不知道女主角是她，看了几分钟后，脸盲的我也想起来了，顿时觉得有几分亲切，身为一名FBI的女战士，女主应该是有她强悍的一面的，但是在电影中明显是被一众男性角色牵着鼻子走了，或者说，强悍的女战士在所谓真正的黑暗面前显得有几分傻白甜。&lt;/p&gt;
&lt;p&gt;影片最优秀的可能是它通过摄影、音乐、剪辑等烘托出来的悬疑与暴戾的氛围，而剧情一般认为有不少值得商榷的漏洞，而看完后值得思考的则是影片的核心冲突：是否能用非法的手段来对付罪犯，是否需要用黑暗来对付黑暗。是否有真正的黑暗，让心怀光明的人真正绝望的黑暗。&lt;/p&gt;
&lt;p&gt;显然本片的结论是肯定的，最后心怀程序正义的女主角放弃了。女主的上司曾劝导她说：你看看我们整天按程序取打击犯罪，可曾有任何效果？然而讽刺的是，在使用非凡手段打击了一个大毒枭后，世界并没有太平，枪声依然像家常便饭一般响起。&lt;/p&gt;
&lt;p&gt;我想，靠暴力打击犯罪只能治一时不能治一世，只能治标不能治本，毒品犯罪或其他犯罪，当它成为一种普遍现象时，它反映的是一种社会现实，隐含的是深层次的原因，没有社会制度的深刻变革，没有经济的正常发展，就像酸化的土地里，是长不出什么好的树苗的。&lt;/p&gt;
&lt;p&gt;墨西哥背靠世界第一强国，却是一个毒品和犯罪横行的国家，说实话还不如当年美墨战争后直接并入美国，这个边境，拦住的是正常的交流，而罪犯和杀手，是没把边境当回事的。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2263976596.webp" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>我认识女主角Emily Blunt 的第一部电影是《明日边缘》，看这部电影之前并不知道女主角是她，看了几分钟后，脸盲的我也想起来了，顿时觉得有几分亲切，身为一名FBI的女战士，女主应该是有她强悍的一面的，但是在电影中明显是被一众男性角色牵着鼻子走了，或者说，强悍的女战士在所谓真正的黑暗面前显得有几分傻白甜。</p>
<p>影片最优秀的可能是它通过摄影、音乐、剪辑等烘托出来的悬疑与暴戾的氛围，而剧情一般认为有不少值得商榷的漏洞，而看完后值得思考的则是影片的核心冲突：是否能用非法的手段来对付罪犯，是否需要用黑暗来对付黑暗。是否有真正的黑暗，让心怀光明的人真正绝望的黑暗。</p>
<p>显然本片的结论是肯定的，最后心怀程序正义的女主角放弃了。女主的上司曾劝导她说：你看看我们整天按程序取打击犯罪，可曾有任何效果？然而讽刺的是，在使用非凡手段打击了一个大毒枭后，世界并没有太平，枪声依然像家常便饭一般响起。</p>
<p>我想，靠暴力打击犯罪只能治一时不能治一世，只能治标不能治本，毒品犯罪或其他犯罪，当它成为一种普遍现象时，它反映的是一种社会现实，隐含的是深层次的原因，没有社会制度的深刻变革，没有经济的正常发展，就像酸化的土地里，是长不出什么好的树苗的。</p>
<p>墨西哥背靠世界第一强国，却是一个毒品和犯罪横行的国家，说实话还不如当年美墨战争后直接并入美国，这个边境，拦住的是正常的交流，而罪犯和杀手，是没把边境当回事的。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">犯罪</category></item><item><title>科目三总结</title><link>https://yifeitao.com/ke-mu-3-summary/</link><pubDate>Mon, 24 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/ke-mu-3-summary/</guid><description>&lt;p&gt;今天第二次考科目三，终于过了，拿驾照最大的障碍算是过去了。现在距离报名已经2年了……由于暂时没有买车计划，整个学驾照的过程是既不上心又跌跌撞撞。&lt;/p&gt;
&lt;p&gt;今年想要换工作换城市，考试资格就快要白费了，要不就得滞留在这里学好再走，在这种压力下，终于打起精神去想办法学习了。&lt;/p&gt;
&lt;p&gt;应该说，驾校的学车体验还是在不断改善的，可能是因为竞争越来越激烈了，虽然这种靠着交警部分吃饭的行业估计潜规则不少，但是现在全民学车的热潮下，驾校的钱实在是太好赚了，所以盯着蛋糕的人越来越多，在这样一个小城市，我在路上看到的驾校品牌就不下十家，甚至公交车语音报站广告都被驾校买断了。&lt;/p&gt;
&lt;p&gt;我的经验是，在面对这种不好的消费体验时，你可以选择生气，甚至也可以投诉维权，但是最好还是珍惜自己的时间，赶紧把这件事情了结才是上策。&lt;/p&gt;
&lt;p&gt;具体针对科目三的经验，其实主要就一条：多练多总结。像这种实际操作型的学习，显然单单靠看书或者想象是成不了事的，要靠反复的练习，把很多基础性的动作比如踩离合、刹车、加油门、换挡等变成下意识的动作，或者说是肌肉记忆，这样在考试的时候或者在真正开车的时候，脑子才能用来进行更复杂的判断，而不是想着怎么去换挡，甚至错把油门当刹车。如果要在这个过程中再加速一些，就要注意总结了，我在这次考试前，已经在脑子里建立了整个考试的流程与现场情景，可以在睡觉前、临考前在脑子里演练一遍，这种演练虽然是辅助性的，但是可以在没车可练的时候保持脑子对流程的熟悉，建立成功的信心。事实上，这种情景演练法可以用到工作生活的很多方面，只是我之前没有把学驾照认真对待。&lt;/p&gt;
&lt;p&gt;而要想有所回报，就必须认真对待，所有的事情都是这样。&lt;/p&gt;</description><content:encoded><![CDATA[<p>今天第二次考科目三，终于过了，拿驾照最大的障碍算是过去了。现在距离报名已经2年了……由于暂时没有买车计划，整个学驾照的过程是既不上心又跌跌撞撞。</p>
<p>今年想要换工作换城市，考试资格就快要白费了，要不就得滞留在这里学好再走，在这种压力下，终于打起精神去想办法学习了。</p>
<p>应该说，驾校的学车体验还是在不断改善的，可能是因为竞争越来越激烈了，虽然这种靠着交警部分吃饭的行业估计潜规则不少，但是现在全民学车的热潮下，驾校的钱实在是太好赚了，所以盯着蛋糕的人越来越多，在这样一个小城市，我在路上看到的驾校品牌就不下十家，甚至公交车语音报站广告都被驾校买断了。</p>
<p>我的经验是，在面对这种不好的消费体验时，你可以选择生气，甚至也可以投诉维权，但是最好还是珍惜自己的时间，赶紧把这件事情了结才是上策。</p>
<p>具体针对科目三的经验，其实主要就一条：多练多总结。像这种实际操作型的学习，显然单单靠看书或者想象是成不了事的，要靠反复的练习，把很多基础性的动作比如踩离合、刹车、加油门、换挡等变成下意识的动作，或者说是肌肉记忆，这样在考试的时候或者在真正开车的时候，脑子才能用来进行更复杂的判断，而不是想着怎么去换挡，甚至错把油门当刹车。如果要在这个过程中再加速一些，就要注意总结了，我在这次考试前，已经在脑子里建立了整个考试的流程与现场情景，可以在睡觉前、临考前在脑子里演练一遍，这种演练虽然是辅助性的，但是可以在没车可练的时候保持脑子对流程的熟悉，建立成功的信心。事实上，这种情景演练法可以用到工作生活的很多方面，只是我之前没有把学驾照认真对待。</p>
<p>而要想有所回报，就必须认真对待，所有的事情都是这样。</p>
]]></content:encoded><category>life</category><category domain="tags">驾驶</category><category domain="tags">总结</category></item><item><title>笑点高？</title><link>https://yifeitao.com/laughing-points/</link><pubDate>Sun, 23 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/laughing-points/</guid><description>&lt;p&gt;这几天因为要准备科目三考试，加之着急小朋友睡觉不定时，导致我整个人相当疲惫，睡不好睡不着又不想做动脑子的事情时，就试图找点能让人开心的节目看看，但是随之遇到的问题时，似乎我已经很多年没有看到什么好笑的东西了，往往那些打着搞笑视频的东西，我看着都会觉得无聊，有些甚至觉得有些低级趣感觉自己笑点越来越高了，细想一下，大致有两个原因：&lt;/p&gt;
&lt;p&gt;首先，可能真的大部分的搞笑的节目都比较低级趣味，自己的审美趣味慢慢提高了一些，那些优秀的喜剧，又往往包藏着悲悯的内核，如果理解到了那些内核，那么看它喜剧的效果就会打折扣，相当于你看到一个含着泪搞笑的人。比如周星驰的很多作品，现在开起来都不觉得好笑，只是想到小人物生活与生存的心酸。&lt;/p&gt;
&lt;p&gt;其次，最近几年，心里思考挂念的事情越来越多，虽然也谈不上不快乐，但是心事肯定是比上学的时候要重一些，整个人大多数时候都是风风火火、忙忙碌碌，很少有真正所谓闲下来的时候，即使是娱乐，比如看个电影，因为要顾着孩子，也是急急忙忙，那种曾经有过的杀时间的日子永远都不会再有了，说起来倒也不怀念那种时刻，也很喜欢自己现在的状态，但是毕竟要笑出来似乎变难了。&lt;/p&gt;
&lt;p&gt;这是一个值得深入思考的问题，我觉得这样不是我一个人的问题，甚至是现代人的通病，生活水平的提高，似乎并不能带来更多的快乐和幸福，如果说追求快乐幸福时终极目标，那么日日努力似乎也没什么意义，如果说不是终极目标，那么就需要找到这个终极目标。&lt;/p&gt;</description><content:encoded><![CDATA[<p>这几天因为要准备科目三考试，加之着急小朋友睡觉不定时，导致我整个人相当疲惫，睡不好睡不着又不想做动脑子的事情时，就试图找点能让人开心的节目看看，但是随之遇到的问题时，似乎我已经很多年没有看到什么好笑的东西了，往往那些打着搞笑视频的东西，我看着都会觉得无聊，有些甚至觉得有些低级趣感觉自己笑点越来越高了，细想一下，大致有两个原因：</p>
<p>首先，可能真的大部分的搞笑的节目都比较低级趣味，自己的审美趣味慢慢提高了一些，那些优秀的喜剧，又往往包藏着悲悯的内核，如果理解到了那些内核，那么看它喜剧的效果就会打折扣，相当于你看到一个含着泪搞笑的人。比如周星驰的很多作品，现在开起来都不觉得好笑，只是想到小人物生活与生存的心酸。</p>
<p>其次，最近几年，心里思考挂念的事情越来越多，虽然也谈不上不快乐，但是心事肯定是比上学的时候要重一些，整个人大多数时候都是风风火火、忙忙碌碌，很少有真正所谓闲下来的时候，即使是娱乐，比如看个电影，因为要顾着孩子，也是急急忙忙，那种曾经有过的杀时间的日子永远都不会再有了，说起来倒也不怀念那种时刻，也很喜欢自己现在的状态，但是毕竟要笑出来似乎变难了。</p>
<p>这是一个值得深入思考的问题，我觉得这样不是我一个人的问题，甚至是现代人的通病，生活水平的提高，似乎并不能带来更多的快乐和幸福，如果说追求快乐幸福时终极目标，那么日日努力似乎也没什么意义，如果说不是终极目标，那么就需要找到这个终极目标。</p>
]]></content:encoded><category>life</category><category domain="tags">幽默</category><category domain="tags">认知</category></item><item><title>安装deepin 15.4</title><link>https://yifeitao.com/deepin-15.4/</link><pubDate>Sat, 22 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/deepin-15.4/</guid><description>&lt;p&gt;现在用的笔记本是Thinkpad T430s，虽然老旧了点，但是经过自己的几次折腾，也搞出了三硬盘的配置，看看现在新出的笔记本，要达到这种效果反而难了。&lt;/p&gt;
&lt;p&gt;老早就预留了一块硬盘来装linux系统，但是发现现在已经没有以前那种折腾的劲头了，或者说，看清了什么是重要的，操作系统本来就是个环境工具，花太多的时间去解决一些本不应当存在的问题，然后还有一种自己很有geek范的错觉。现在的Windows 10，自带了Ubuntu子系统，用起来也相当方便，linux最大的优势就是命令行了，所以装个单独的linux系统的动力越来越小了。&lt;/p&gt;
&lt;p&gt;还是出于了解的心态，安装了最新的深度系统deepin linux 15.4，下载iso文件后，用rufus工具刻录到U盘上，从U盘启动安装，由于是独立硬盘安装，也不用考虑分区的问题了，整个过程不到10分钟。&lt;/p&gt;
&lt;p&gt;现在由中国社区发起的两个linux项目，深度和麒麟，我都用过，总体感觉深度要优秀许多，麒麟带着官办的基因，感觉发展不如完全民营的深度来的轻快。&lt;/p&gt;
&lt;p&gt;深度的发展，应该是走了一条正确的道路，对使用桌面系统的人来说，应用往往才是最重要的，没有qq和office软件，没有还用的输入法，就已经打消了很多人使用linux的想法，而深度通过和国内厂商合作，以及做好wine模拟，甚至引入了Android虚拟机和web应用，总的目的都是丰富生态下的应用，WPS Office，qq，迅雷，搜狗输入法，有道词典，网易云音乐，等等软件的入驻，还真是大大提高了系统的可用性。从我个人的角度来说，如果不是需要用宇宙第一IDE Visual Studio，还真是可以迁移到Deepin下面来了，考虑到以后我写C#的机会可能越来越少，可能我真的可以考虑一下，毕竟，这些开箱即用还是很舒心的，而linux的强项毕竟在于命令行，比起windows 10下的子系统，还是来得直接多了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>现在用的笔记本是Thinkpad T430s，虽然老旧了点，但是经过自己的几次折腾，也搞出了三硬盘的配置，看看现在新出的笔记本，要达到这种效果反而难了。</p>
<p>老早就预留了一块硬盘来装linux系统，但是发现现在已经没有以前那种折腾的劲头了，或者说，看清了什么是重要的，操作系统本来就是个环境工具，花太多的时间去解决一些本不应当存在的问题，然后还有一种自己很有geek范的错觉。现在的Windows 10，自带了Ubuntu子系统，用起来也相当方便，linux最大的优势就是命令行了，所以装个单独的linux系统的动力越来越小了。</p>
<p>还是出于了解的心态，安装了最新的深度系统deepin linux 15.4，下载iso文件后，用rufus工具刻录到U盘上，从U盘启动安装，由于是独立硬盘安装，也不用考虑分区的问题了，整个过程不到10分钟。</p>
<p>现在由中国社区发起的两个linux项目，深度和麒麟，我都用过，总体感觉深度要优秀许多，麒麟带着官办的基因，感觉发展不如完全民营的深度来的轻快。</p>
<p>深度的发展，应该是走了一条正确的道路，对使用桌面系统的人来说，应用往往才是最重要的，没有qq和office软件，没有还用的输入法，就已经打消了很多人使用linux的想法，而深度通过和国内厂商合作，以及做好wine模拟，甚至引入了Android虚拟机和web应用，总的目的都是丰富生态下的应用，WPS Office，qq，迅雷，搜狗输入法，有道词典，网易云音乐，等等软件的入驻，还真是大大提高了系统的可用性。从我个人的角度来说，如果不是需要用宇宙第一IDE Visual Studio，还真是可以迁移到Deepin下面来了，考虑到以后我写C#的机会可能越来越少，可能我真的可以考虑一下，毕竟，这些开箱即用还是很舒心的，而linux的强项毕竟在于命令行，比起windows 10下的子系统，还是来得直接多了。</p>
]]></content:encoded><category>geek</category><category domain="tags">Linux</category><category domain="tags">操作系统</category></item><item><title>碎片化学习</title><link>https://yifeitao.com/fragmentization-study/</link><pubDate>Fri, 21 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/fragmentization-study/</guid><description>&lt;p&gt;之前我讨论过碎片化时间的问题，不过没有探讨到所谓的碎片化学习上来。有人直接说这是一个伪概念，但是我想，既然它成为一个概念，自然有它存在的合理性。&lt;/p&gt;
&lt;p&gt;碎片化学习是时代特征，首先，社会发展日新月异，但凡有点上进心的人都或多或少有一些焦虑，对于成功、对于金钱、地位的渴望，所以很多人都会想要去学点什么，应该说，这部分人比起那些从来不觉得自己需要学习的人来说，已经是很优秀了。&lt;/p&gt;
&lt;p&gt;但是，俗话说病急乱投医，对于成功的浮躁渴望，导致这种学习的欲望也变得轻浮，而这又是个信息茫茫多的时代，所以，学习就变成了了解新的信息，不管对自己有没有真正的帮助，了解新的信息慢慢上位变成了第一需求。有的人是心安理的娱乐，这无可厚非，而有的人却会打着学习的旗号去娱乐，比如刷刷知乎学知识，看看微信公众号学知识，互联网的资源，用得好就是如虎添翼，用得不好就是深陷泥潭。&lt;/p&gt;
&lt;p&gt;知识体系就像一座大厦，是由一些小的结构组合成的，从这个角度来说，知识也是碎片化的，但是它只有形成知识大厦才能发挥作用，正如单单几块砖，一包水泥没有什么大的用处一样。互联网丰富的资源，给我们提供了无数窗口，但是要想真正掌握一定领域的知识，一定需要建立自己的知识体系，而往往幸运的是，在很多领域，前人已经建立的坚实的知识体系，我们是有迹可循的，比如要学习机器学习，我们不能放着经典的教材不去看，而希望通过看看几篇网络上的文章就能学好。&lt;/p&gt;
&lt;p&gt;总之，碎片化的时间，碎片化的知识都不是什么问题，而关键是要去建立自己的知识体系，而要想做到这一点，首先要解决的是心态浮躁的问题，想要一口吃成一个胖子是不行的。&lt;/p&gt;</description><content:encoded><![CDATA[<p>之前我讨论过碎片化时间的问题，不过没有探讨到所谓的碎片化学习上来。有人直接说这是一个伪概念，但是我想，既然它成为一个概念，自然有它存在的合理性。</p>
<p>碎片化学习是时代特征，首先，社会发展日新月异，但凡有点上进心的人都或多或少有一些焦虑，对于成功、对于金钱、地位的渴望，所以很多人都会想要去学点什么，应该说，这部分人比起那些从来不觉得自己需要学习的人来说，已经是很优秀了。</p>
<p>但是，俗话说病急乱投医，对于成功的浮躁渴望，导致这种学习的欲望也变得轻浮，而这又是个信息茫茫多的时代，所以，学习就变成了了解新的信息，不管对自己有没有真正的帮助，了解新的信息慢慢上位变成了第一需求。有的人是心安理的娱乐，这无可厚非，而有的人却会打着学习的旗号去娱乐，比如刷刷知乎学知识，看看微信公众号学知识，互联网的资源，用得好就是如虎添翼，用得不好就是深陷泥潭。</p>
<p>知识体系就像一座大厦，是由一些小的结构组合成的，从这个角度来说，知识也是碎片化的，但是它只有形成知识大厦才能发挥作用，正如单单几块砖，一包水泥没有什么大的用处一样。互联网丰富的资源，给我们提供了无数窗口，但是要想真正掌握一定领域的知识，一定需要建立自己的知识体系，而往往幸运的是，在很多领域，前人已经建立的坚实的知识体系，我们是有迹可循的，比如要学习机器学习，我们不能放着经典的教材不去看，而希望通过看看几篇网络上的文章就能学好。</p>
<p>总之，碎片化的时间，碎片化的知识都不是什么问题，而关键是要去建立自己的知识体系，而要想做到这一点，首先要解决的是心态浮躁的问题，想要一口吃成一个胖子是不行的。</p>
]]></content:encoded><category>methodology</category><category domain="tags">学习</category><category domain="tags">碎片化</category></item><item><title>超越平均水平</title><link>https://yifeitao.com/beyond-mean/</link><pubDate>Thu, 20 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/beyond-mean/</guid><description>&lt;p&gt;如果你去参加一门考试，所有人最后的平均分是60分，而且所有人的考试分数分布是一个倒扣的钟型：也就是说，大多数人的得分在60分左右，离60分越远的人数越少，比如得30分和90分的人数基本上一样少。在数学上，这种分布叫做正态分布，这种中间大两头小的分布在现实世界中相当普遍，包括人的身高、体重、智商、乃至考试分数、财富数量等等。从这个分布，我们可以读出很多隐含的信息。&lt;/p&gt;
&lt;p&gt;首先，在这种分布之下，如果要你预测一个数据，那么平均水平是最安全的，比如我现在还不知道我们家孩子以后上学是个啥水平，但是大概率是平均水平，而要想谋求超过平均水平，则是追求一个低概率事件，高于平均水平越多越困难，当然这是符合人的直观的，但是有时候我们会忘记这一点，认为拿到高分数和平均分数的概率是均匀分布的，从而忽视了这种困难。&lt;/p&gt;
&lt;p&gt;其次，如果你达到了平均线之上的分数，比如说80分，那么你除了感谢自己的努力之外，相比那些拿低分的，更应该感谢运气。为什么呢？假如考试的时候，考试分数和真实水平有5分左右的差异，所以得到80分的人，可能是75分的水平，也可能是85分的水平，而从正态分布的特性来看，显然更多的人实际水平是75分，也就是说，你得了80分，而你的实际水平低于80分的概率要大于高于80分的概率。反过来，一个得了40分的人，更可能实际水平是45分，而不是35分。从这个角度分析，简直可以说：好运气是实力带来的。&lt;/p&gt;
&lt;p&gt;第三，对具体的人来说，好运气不可能每次都有，所以一次考试中平均得分为80分的人，第二次考试的平均得分会低于80分，因为如果假设第二次考试和第一次考试有一定的相关性（一般来说，两次考试的得分高低有一定延续性），那么第一次考试平均得分为80分的人中，大部分的真实水平是低于80分的，所以他们的平均得分会变低，而同样的道理，第一次考试平均得分40分的人，第二次考试得分会变高，在统计学中，这叫做回归效应，这种现象完全是由随机性造成的统计量变化，你找任何其他的理由解释都是错误的。在这种回归效应下，作为个体你能做什么呢？显然只有提高自己的真实水平，无论是被高估还是被低估，你的水平线都远远高于平均值，那也就没什么好怕的了。&lt;/p&gt;
&lt;p&gt;总结一下，首先超越平均水平是一个低概率事件，其次一次超越平均水平的事件中，很可能被高估了，最后，随机性带来的误差经过多次重复，会导致趋向于平均水平。而解决这所有的问题，都指向一个方法：通过努力把自己的平均水平拉离群体的平均水平，而不能倚靠一次两次的好运气。这个简单的原理，对于投资、经商、从业都是适用的。&lt;/p&gt;</description><content:encoded><![CDATA[<p>如果你去参加一门考试，所有人最后的平均分是60分，而且所有人的考试分数分布是一个倒扣的钟型：也就是说，大多数人的得分在60分左右，离60分越远的人数越少，比如得30分和90分的人数基本上一样少。在数学上，这种分布叫做正态分布，这种中间大两头小的分布在现实世界中相当普遍，包括人的身高、体重、智商、乃至考试分数、财富数量等等。从这个分布，我们可以读出很多隐含的信息。</p>
<p>首先，在这种分布之下，如果要你预测一个数据，那么平均水平是最安全的，比如我现在还不知道我们家孩子以后上学是个啥水平，但是大概率是平均水平，而要想谋求超过平均水平，则是追求一个低概率事件，高于平均水平越多越困难，当然这是符合人的直观的，但是有时候我们会忘记这一点，认为拿到高分数和平均分数的概率是均匀分布的，从而忽视了这种困难。</p>
<p>其次，如果你达到了平均线之上的分数，比如说80分，那么你除了感谢自己的努力之外，相比那些拿低分的，更应该感谢运气。为什么呢？假如考试的时候，考试分数和真实水平有5分左右的差异，所以得到80分的人，可能是75分的水平，也可能是85分的水平，而从正态分布的特性来看，显然更多的人实际水平是75分，也就是说，你得了80分，而你的实际水平低于80分的概率要大于高于80分的概率。反过来，一个得了40分的人，更可能实际水平是45分，而不是35分。从这个角度分析，简直可以说：好运气是实力带来的。</p>
<p>第三，对具体的人来说，好运气不可能每次都有，所以一次考试中平均得分为80分的人，第二次考试的平均得分会低于80分，因为如果假设第二次考试和第一次考试有一定的相关性（一般来说，两次考试的得分高低有一定延续性），那么第一次考试平均得分为80分的人中，大部分的真实水平是低于80分的，所以他们的平均得分会变低，而同样的道理，第一次考试平均得分40分的人，第二次考试得分会变高，在统计学中，这叫做回归效应，这种现象完全是由随机性造成的统计量变化，你找任何其他的理由解释都是错误的。在这种回归效应下，作为个体你能做什么呢？显然只有提高自己的真实水平，无论是被高估还是被低估，你的水平线都远远高于平均值，那也就没什么好怕的了。</p>
<p>总结一下，首先超越平均水平是一个低概率事件，其次一次超越平均水平的事件中，很可能被高估了，最后，随机性带来的误差经过多次重复，会导致趋向于平均水平。而解决这所有的问题，都指向一个方法：通过努力把自己的平均水平拉离群体的平均水平，而不能倚靠一次两次的好运气。这个简单的原理，对于投资、经商、从业都是适用的。</p>
]]></content:encoded><category>methodology</category><category domain="tags">统计</category><category domain="tags">思考</category></item><item><title>占不尽的便宜上不完的当</title><link>https://yifeitao.com/profit-and-deceived/</link><pubDate>Wed, 19 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/profit-and-deceived/</guid><description>&lt;p&gt;占不尽的便宜上不完的当，这是我爷爷在世时诸多名言警句之一。小时候只是随便听听，走入社会多年，才慢慢发掘这句话还真是有很深刻的道理。不管我爷爷当年有多少深意，我现在想把这句话做一些深入的阐释。&lt;/p&gt;
&lt;p&gt;第一层理解是所谓的“占小便宜吃大亏”。钓鱼的人，在鱼钩上装一点点鱼饵，而鱼为了那一口小便宜，付出的是生命的代价。而类似这种钓鱼的现象，在人类社会上也是不胜枚举，是大部分骗术的基础理论之一。比如卖保健品的首先会免费体检、免费体验，骗人的网贷会在早期提供很高的利息，电信诈骗告诉你中奖了。如果说大多数人还能对骗术提高警惕的话，另外一些情况则隐蔽得多，比如被商家的各种促销宣传打动，在各种购物节买入一堆“便宜”而无用的商品，比如花上半天的时间，去比较一些本来就不贵的商品的价格，比如为了免费使用软件，花了大量的时间去破解软件甚至不小心中了病毒。&lt;/p&gt;
&lt;p&gt;第二层理解是所谓的“弱水三千只取一瓢”。这个世界上好东西太多太多，我们只能有所取舍，想要便宜占尽，好处捞尽是不可能的。即使是从纯功利的角度来看，如果人生目标是多挣钱，那么也需要适当聚焦自己的注意力，虽然事业与见识上一定的广度是有利的，但是处处浅尝辄止，在任何领域都没有达到专业水准的话，也是没有钱途的。俗话说“这山望见那山高，到了那山喊苦恼”，想要达到功利的目标，反而不能用太急迫的方法，因为所谓成功，是概率事件，需要一定的重复积累与时间，而那种处处凑热闹，想要赶上风口的人，往往也就只是凑个热闹而已，真正能飞的人，大多是潜心准备了很久的人。&lt;/p&gt;
&lt;p&gt;第三层理解是“八风吹不动，一屁过江来”。这是苏东坡和佛印和尚的民间故事，话说苏东坡写了一首自觉很有佛性的诗，里面有“八风不动”一词，送给佛印和尚看，被批了“放屁”两个大字，苏东坡非常生气，过江要和佛印和尚理论，却吃了闭门羹，只看到“八风吹不动，一屁过江来”的字条，苏东坡才发觉自己说一套做一套，幡然醒悟。这跟占不尽的便宜上不完的当有什么关系呢？我想说的是人人都知道不要上当而要占便宜，但要分辨什么是占便宜什么是上当，是需要修行的事情，心中没有价值观或者没有坚定的价值观，成为无主见的逐利之人的话，基本上就坐定了被人收割的角色。取舍之事，需要反反复复问自己什么更重要，在重要的事情上投入精力去“占便宜”，在不重要的事情上宁愿“吃亏”而不浪费精力，面对复杂的世界，才能走出占不尽的便宜上不完的当的怪圈。&lt;/p&gt;</description><content:encoded><![CDATA[<p>占不尽的便宜上不完的当，这是我爷爷在世时诸多名言警句之一。小时候只是随便听听，走入社会多年，才慢慢发掘这句话还真是有很深刻的道理。不管我爷爷当年有多少深意，我现在想把这句话做一些深入的阐释。</p>
<p>第一层理解是所谓的“占小便宜吃大亏”。钓鱼的人，在鱼钩上装一点点鱼饵，而鱼为了那一口小便宜，付出的是生命的代价。而类似这种钓鱼的现象，在人类社会上也是不胜枚举，是大部分骗术的基础理论之一。比如卖保健品的首先会免费体检、免费体验，骗人的网贷会在早期提供很高的利息，电信诈骗告诉你中奖了。如果说大多数人还能对骗术提高警惕的话，另外一些情况则隐蔽得多，比如被商家的各种促销宣传打动，在各种购物节买入一堆“便宜”而无用的商品，比如花上半天的时间，去比较一些本来就不贵的商品的价格，比如为了免费使用软件，花了大量的时间去破解软件甚至不小心中了病毒。</p>
<p>第二层理解是所谓的“弱水三千只取一瓢”。这个世界上好东西太多太多，我们只能有所取舍，想要便宜占尽，好处捞尽是不可能的。即使是从纯功利的角度来看，如果人生目标是多挣钱，那么也需要适当聚焦自己的注意力，虽然事业与见识上一定的广度是有利的，但是处处浅尝辄止，在任何领域都没有达到专业水准的话，也是没有钱途的。俗话说“这山望见那山高，到了那山喊苦恼”，想要达到功利的目标，反而不能用太急迫的方法，因为所谓成功，是概率事件，需要一定的重复积累与时间，而那种处处凑热闹，想要赶上风口的人，往往也就只是凑个热闹而已，真正能飞的人，大多是潜心准备了很久的人。</p>
<p>第三层理解是“八风吹不动，一屁过江来”。这是苏东坡和佛印和尚的民间故事，话说苏东坡写了一首自觉很有佛性的诗，里面有“八风不动”一词，送给佛印和尚看，被批了“放屁”两个大字，苏东坡非常生气，过江要和佛印和尚理论，却吃了闭门羹，只看到“八风吹不动，一屁过江来”的字条，苏东坡才发觉自己说一套做一套，幡然醒悟。这跟占不尽的便宜上不完的当有什么关系呢？我想说的是人人都知道不要上当而要占便宜，但要分辨什么是占便宜什么是上当，是需要修行的事情，心中没有价值观或者没有坚定的价值观，成为无主见的逐利之人的话，基本上就坐定了被人收割的角色。取舍之事，需要反反复复问自己什么更重要，在重要的事情上投入精力去“占便宜”，在不重要的事情上宁愿“吃亏”而不浪费精力，面对复杂的世界，才能走出占不尽的便宜上不完的当的怪圈。</p>
]]></content:encoded><category>methodology</category><category domain="tags">生活</category><category domain="tags">认知</category></item><item><title>台大机器学习公开课资源</title><link>https://yifeitao.com/ntuml-resource/</link><pubDate>Mon, 17 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/ntuml-resource/</guid><description>&lt;h1 id="台湾大学林轩田机器学习公开课"&gt;台湾大学林轩田机器学习公开课&lt;/h1&gt;
&lt;p&gt;台湾大学林轩田老师的机器学习公开课，有一定的理论深度，尤其是PAC理论讲得比较透彻，而且很善于总结与融汇贯通，课程使用英文资料，中文讲解，要听懂需要一定的数学基础。&lt;/p&gt;
&lt;p&gt;这门课程最早是在coursera平台的，分割为&lt;strong&gt;机器学习基石&lt;/strong&gt;和&lt;strong&gt;机器学习技法&lt;/strong&gt;两门课程，但是由于平台的更新，这两门课程都已经下架。林老师目前好像也已经从台大离职，投入业界。课程的视频在youtube上可看，但是大陆访问明显困难，而作业题也没有平台练习了。&lt;/p&gt;
&lt;p&gt;作为课程的重要部分，我认为不做作业只看视频没什么用，林老师在facebook上回应过大陆读者一次，建议参考台大2015年课程的作业去练习。我按照老师的建议把这些题目做了一遍，收获不小，在做题的过程中，参考了很多学生在做coursera公开课作业时的分享，coursera上的作业以选择题为主，而台大2015年课程作业的题目基本相同，但要求做出严格的证明，由于大量公式输入复杂，所以我选择了用手写的方式共享，希望能给其他想学习的同学一定的帮助。&lt;/p&gt;
&lt;p&gt;作业中所有代码使用python3，主要依赖numpy库和sklearn库。代码在python 3.6下运行通过，建议使用开发运行环境&lt;a href="https://www.continuum.io/anaconda-overview"
rel="noopener noreferrer" target="_blank" class="external"&gt;anaconda&lt;/a&gt;
。&lt;/p&gt;
&lt;p&gt;资源列表：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.csie.ntu.edu.tw/~htlin/mooc/"
rel="noopener noreferrer" target="_blank" class="external"&gt;ntuml mooc主页&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/yifeitao/learn-assets/tree/master/ntuml"
rel="noopener noreferrer" target="_blank" class="external"&gt;我的作业解答地址&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.csie.ntu.edu.tw/~htlin/course/ml15fall/"
rel="noopener noreferrer" target="_blank" class="external"&gt;台大2015年机器学习课程主页&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;公开课视频与课件下载
&lt;ul&gt;
&lt;li&gt;机器学习基石 链接：http://pan.baidu.com/s/1i4CYt2P 密码：hrjj&lt;/li&gt;
&lt;li&gt;机器学习技法 链接：http://pan.baidu.com/s/1qYjoglI 密码：0vf8&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;教材 Learning From Data
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gen.lib.rus.ec/book/index.php?md5=BCF7C1FF782654437CA474770AB041D5"
rel="noopener noreferrer" target="_blank" class="external"&gt;教材非授权下载&lt;/a&gt;
（版权所限，本repo就不直接放进来了，希望能早日引进到大陆&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amlbook.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;教材主页&lt;/a&gt;
可下载电子版补充章节，需要通关密码（在教材中）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;使用相同教材的类似课程
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://work.caltech.edu/telecourse.html"
rel="noopener noreferrer" target="_blank" class="external"&gt;https://work.caltech.edu/telecourse.html&lt;/a&gt;
来自加利福尼亚理工学院，教材的第一作者开课，同时在edx平台有公开课&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><content:encoded><![CDATA[<h1 id="台湾大学林轩田机器学习公开课">台湾大学林轩田机器学习公开课</h1>
<p>台湾大学林轩田老师的机器学习公开课，有一定的理论深度，尤其是PAC理论讲得比较透彻，而且很善于总结与融汇贯通，课程使用英文资料，中文讲解，要听懂需要一定的数学基础。</p>
<p>这门课程最早是在coursera平台的，分割为<strong>机器学习基石</strong>和<strong>机器学习技法</strong>两门课程，但是由于平台的更新，这两门课程都已经下架。林老师目前好像也已经从台大离职，投入业界。课程的视频在youtube上可看，但是大陆访问明显困难，而作业题也没有平台练习了。</p>
<p>作为课程的重要部分，我认为不做作业只看视频没什么用，林老师在facebook上回应过大陆读者一次，建议参考台大2015年课程的作业去练习。我按照老师的建议把这些题目做了一遍，收获不小，在做题的过程中，参考了很多学生在做coursera公开课作业时的分享，coursera上的作业以选择题为主，而台大2015年课程作业的题目基本相同，但要求做出严格的证明，由于大量公式输入复杂，所以我选择了用手写的方式共享，希望能给其他想学习的同学一定的帮助。</p>
<p>作业中所有代码使用python3，主要依赖numpy库和sklearn库。代码在python 3.6下运行通过，建议使用开发运行环境<a href="https://www.continuum.io/anaconda-overview"
   rel="noopener noreferrer" target="_blank" class="external">anaconda</a>
 。</p>
<p>资源列表：</p>
<ul>
<li><a href="http://www.csie.ntu.edu.tw/~htlin/mooc/"
   rel="noopener noreferrer" target="_blank" class="external">ntuml mooc主页</a>
</li>
<li><a href="https://github.com/yifeitao/learn-assets/tree/master/ntuml"
   rel="noopener noreferrer" target="_blank" class="external">我的作业解答地址</a>
</li>
<li><a href="https://www.csie.ntu.edu.tw/~htlin/course/ml15fall/"
   rel="noopener noreferrer" target="_blank" class="external">台大2015年机器学习课程主页</a>
</li>
<li>公开课视频与课件下载
<ul>
<li>机器学习基石 链接：http://pan.baidu.com/s/1i4CYt2P 密码：hrjj</li>
<li>机器学习技法 链接：http://pan.baidu.com/s/1qYjoglI 密码：0vf8</li>
</ul>
</li>
<li>教材 Learning From Data
<ul>
<li><a href="http://gen.lib.rus.ec/book/index.php?md5=BCF7C1FF782654437CA474770AB041D5"
   rel="noopener noreferrer" target="_blank" class="external">教材非授权下载</a>
 （版权所限，本repo就不直接放进来了，希望能早日引进到大陆</li>
<li><a href="http://amlbook.com/"
   rel="noopener noreferrer" target="_blank" class="external">教材主页</a>
 可下载电子版补充章节，需要通关密码（在教材中）</li>
</ul>
</li>
<li>使用相同教材的类似课程
<ul>
<li><a href="https://work.caltech.edu/telecourse.html"
   rel="noopener noreferrer" target="_blank" class="external">https://work.caltech.edu/telecourse.html</a>
 来自加利福尼亚理工学院，教材的第一作者开课，同时在edx平台有公开课</li>
</ul>
</li>
</ul>
]]></content:encoded><category>coding</category><category domain="tags">机器学习</category><category domain="tags">资源</category></item><item><title>脏脏的小孩</title><link>https://yifeitao.com/dirty-child/</link><pubDate>Sun, 16 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/dirty-child/</guid><description>&lt;p&gt;着急小朋友在楼下小院子里瞎钻乱闯的时候，我们一般在旁边当一个保镖，默默看着，偶尔也会加入一下，而这种时候，偶尔甚至会有其他小朋友，比着急大不了多少的，会劝他不要钻进去某些地方，“不要去那里，脏脏！”。&lt;/p&gt;
&lt;p&gt;我们只能在一边笑笑，感觉自己的觉悟连三岁小孩都比不上。&lt;/p&gt;
&lt;p&gt;带孩子需要学习很多理论么？也许吧。但是凭直觉和常识其实也能做出正确的选择。&lt;/p&gt;
&lt;p&gt;在很多家长不断的制止小朋友玩，嫌这里脏那里危险时，我常常想起的是自己的童年，几乎都是和小伙伴漫山遍野的跑，似乎也没遇到过什么真正的危险，而父母没有那么多时间盯着我，即使有时间我也不愿意他们整天盯着我。&lt;/p&gt;
&lt;p&gt;毕竟时代变了，孩子可能面对更多的危险，比如像车祸，又比如市井传说中可怕的人贩子。但是孩子的天性是不会变的，深植在基因中的对自然的爱，对未知的好奇，无论孩子未来走向如何的人生，这些都是人生的源动力。&lt;/p&gt;
&lt;p&gt;所以我们究竟是什么时候，开始嫌弃泥巴脏呢？有很多实际的理由不让孩子去在脏地方爬来爬去，比如怕有细菌，嫌洗衣服麻烦。但仔细想想，可能还有一种泥腿子上岸的心理，我们好不容易从田地里爬上岸，想要过一种体面的生活，所以对泥土的感觉很难有什么热爱，当然我这么推测可能也只是我的自我内心阴暗。但不管怎样，孩子们的生活越来越精致，粗糙野蛮的部分越来越少。不让孩子弄脏是一例，看见孩子间出现一点点冲突就如临大敌急着介入也是一例，强迫小孩子和其他小孩子分享食物也是一例。&lt;/p&gt;
&lt;p&gt;我不觉得我们的文明已经发展到可以躺着睡觉，一直承平下去，人性中野蛮、血性的一面仍然有它的价值，个个小孩都像乖乖的小白兔，不是什么幸事。所以，我们宁愿要一个脏脏的小孩。说得准确一点，我们只是不去阻止一个想要在泥土中探索的人而已。&lt;/p&gt;</description><content:encoded><![CDATA[<p>着急小朋友在楼下小院子里瞎钻乱闯的时候，我们一般在旁边当一个保镖，默默看着，偶尔也会加入一下，而这种时候，偶尔甚至会有其他小朋友，比着急大不了多少的，会劝他不要钻进去某些地方，“不要去那里，脏脏！”。</p>
<p>我们只能在一边笑笑，感觉自己的觉悟连三岁小孩都比不上。</p>
<p>带孩子需要学习很多理论么？也许吧。但是凭直觉和常识其实也能做出正确的选择。</p>
<p>在很多家长不断的制止小朋友玩，嫌这里脏那里危险时，我常常想起的是自己的童年，几乎都是和小伙伴漫山遍野的跑，似乎也没遇到过什么真正的危险，而父母没有那么多时间盯着我，即使有时间我也不愿意他们整天盯着我。</p>
<p>毕竟时代变了，孩子可能面对更多的危险，比如像车祸，又比如市井传说中可怕的人贩子。但是孩子的天性是不会变的，深植在基因中的对自然的爱，对未知的好奇，无论孩子未来走向如何的人生，这些都是人生的源动力。</p>
<p>所以我们究竟是什么时候，开始嫌弃泥巴脏呢？有很多实际的理由不让孩子去在脏地方爬来爬去，比如怕有细菌，嫌洗衣服麻烦。但仔细想想，可能还有一种泥腿子上岸的心理，我们好不容易从田地里爬上岸，想要过一种体面的生活，所以对泥土的感觉很难有什么热爱，当然我这么推测可能也只是我的自我内心阴暗。但不管怎样，孩子们的生活越来越精致，粗糙野蛮的部分越来越少。不让孩子弄脏是一例，看见孩子间出现一点点冲突就如临大敌急着介入也是一例，强迫小孩子和其他小孩子分享食物也是一例。</p>
<p>我不觉得我们的文明已经发展到可以躺着睡觉，一直承平下去，人性中野蛮、血性的一面仍然有它的价值，个个小孩都像乖乖的小白兔，不是什么幸事。所以，我们宁愿要一个脏脏的小孩。说得准确一点，我们只是不去阻止一个想要在泥土中探索的人而已。</p>
]]></content:encoded><category>life</category><category domain="tags">育儿</category><category domain="tags">观察</category></item><item><title>不要给自己设限</title><link>https://yifeitao.com/do-not-limit-yourself/</link><pubDate>Fri, 14 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/do-not-limit-yourself/</guid><description>&lt;p&gt;一个人活在社会生活中，自然有也需要有各种各样的定位与定义，通过周围人的反馈与自我认知，我们慢慢的会觉得自己是一个什么样的人，比如知道自己是内向还是外向，自己是善于学习文科还是理科，自己是否善于和人沟通，是否有耐心，是否有幽默感……&lt;/p&gt;
&lt;p&gt;这种种定位与定义都是有价值的，毕竟，我们只有认清自己的优势，发挥自己的优势，才能更好的生活。然而这一切定位与定义，同时又是一种陷阱，一种限制。比如一个不喜欢说太多话的小孩，从小就会被人说性格内向，不善言辞，不会沟通，甚至会被取一些绰号，等到这个小孩长大了，他可能还是不太喜欢说话，也不太懂得怎么跟人说话，更不敢当众讲话，可能他偶尔也会羡慕那些口才好的人，但是更多的时候，他会找到一种心理安慰式的理由：自己本来就不善言辞，没有必要非得变得很会说话。甚至于这种想法也没有，而只是一种麻木，反正自己就是不善言辞嘛。最后，不善言辞这个标签，像一个牢笼，关闭了他很多试图去表达的不易察觉的愿望。&lt;/p&gt;
&lt;p&gt;在我们的人生之中，需要做很多的选择与舍弃，因为毕竟人的精力是有限的，那么放弃自己不擅长的说话，也不失为一种选择。然而，这里的思维误区在于，我们忘记了这是一种选择，而把它当成了一种不可改变的事实。你可以选择多说话，也可以选择少说话，你得知道这不同选择的益处和代价，这样去想的话，或许也会觉得学着一点跟人沟通也不是坏事。&lt;/p&gt;
&lt;p&gt;在针对自己不同属性，跟人比较的过程中，容易犯的是非此即彼的错误，如果自己不擅长一件事情，那么就完全不用考虑和关心了，就像对某个方向闭上了眼睛一般。&lt;/p&gt;
&lt;p&gt;当当今的世界的变化速度相当快，面对纷繁复杂的世界，我们需要不时的改变自己去适应与改造这个世界，这时候，如果因为种种标签给自己设了太多的限制，觉得自己不可能干这个，也不可能干那个，那么，就会放弃了太多的机会。当然，我们需要聚焦自己的注意力，但是，如果放弃了太多的机会，把注意力放到了一些没有希望的地方，不是也很浪费人生么，所以，保持聚焦的同时，打开自己的眼睛，并不是什么坏事。&lt;/p&gt;
&lt;p&gt;唯一能限制你的，是你自己，你永远都有选择权，即使是在那些看起来不可改变的事情上。&lt;/p&gt;</description><content:encoded><![CDATA[<p>一个人活在社会生活中，自然有也需要有各种各样的定位与定义，通过周围人的反馈与自我认知，我们慢慢的会觉得自己是一个什么样的人，比如知道自己是内向还是外向，自己是善于学习文科还是理科，自己是否善于和人沟通，是否有耐心，是否有幽默感……</p>
<p>这种种定位与定义都是有价值的，毕竟，我们只有认清自己的优势，发挥自己的优势，才能更好的生活。然而这一切定位与定义，同时又是一种陷阱，一种限制。比如一个不喜欢说太多话的小孩，从小就会被人说性格内向，不善言辞，不会沟通，甚至会被取一些绰号，等到这个小孩长大了，他可能还是不太喜欢说话，也不太懂得怎么跟人说话，更不敢当众讲话，可能他偶尔也会羡慕那些口才好的人，但是更多的时候，他会找到一种心理安慰式的理由：自己本来就不善言辞，没有必要非得变得很会说话。甚至于这种想法也没有，而只是一种麻木，反正自己就是不善言辞嘛。最后，不善言辞这个标签，像一个牢笼，关闭了他很多试图去表达的不易察觉的愿望。</p>
<p>在我们的人生之中，需要做很多的选择与舍弃，因为毕竟人的精力是有限的，那么放弃自己不擅长的说话，也不失为一种选择。然而，这里的思维误区在于，我们忘记了这是一种选择，而把它当成了一种不可改变的事实。你可以选择多说话，也可以选择少说话，你得知道这不同选择的益处和代价，这样去想的话，或许也会觉得学着一点跟人沟通也不是坏事。</p>
<p>在针对自己不同属性，跟人比较的过程中，容易犯的是非此即彼的错误，如果自己不擅长一件事情，那么就完全不用考虑和关心了，就像对某个方向闭上了眼睛一般。</p>
<p>当当今的世界的变化速度相当快，面对纷繁复杂的世界，我们需要不时的改变自己去适应与改造这个世界，这时候，如果因为种种标签给自己设了太多的限制，觉得自己不可能干这个，也不可能干那个，那么，就会放弃了太多的机会。当然，我们需要聚焦自己的注意力，但是，如果放弃了太多的机会，把注意力放到了一些没有希望的地方，不是也很浪费人生么，所以，保持聚焦的同时，打开自己的眼睛，并不是什么坏事。</p>
<p>唯一能限制你的，是你自己，你永远都有选择权，即使是在那些看起来不可改变的事情上。</p>
]]></content:encoded><category>methodology</category><category domain="tags">人生</category><category domain="tags">认知</category></item><item><title>雷厉风行与谋定后动</title><link>https://yifeitao.com/hurry-and-slow/</link><pubDate>Wed, 12 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/hurry-and-slow/</guid><description>&lt;p&gt;如果想要做一件事情，是雷厉风行好还是谋定后动好呢？&lt;/p&gt;
&lt;p&gt;其实这是一个强行问出的伪问题，当然是既要雷厉风行也要谋定后动，准确一点应该是先谋定后动，而后雷厉风行。&lt;/p&gt;
&lt;p&gt;在谋定之后就要立即行动，所以跟雷厉风行是无缝结合，关键问题是一件事情要考虑到什么程度才算是谋定呢？&lt;/p&gt;
&lt;p&gt;如果考虑得及其不充分，就去“雷厉风行”了，有时候可能也能瞎猫撞见死耗子，但是大概率是会遇到非常多意想不到得苦难乃至失败的。&lt;/p&gt;
&lt;p&gt;如果考虑的过于琐细，觉得总是怎么思考准备都不够，那么就没有雷厉风行的机会了，思考没有行动的验证，只会成为无根之木。&lt;/p&gt;
&lt;p&gt;所以思考的详细程度需要刚刚好，这是一句正确的废话。刚刚好是一个最佳解，我们还可以找一个可行解，那就是思考到能顺利开始行动的程度即可，至于采取行动后的后果，可以预先考虑一部分，但也要做好随机应变的准备。&lt;/p&gt;
&lt;p&gt;计划与规划我们往往希望是地图，可以指导我们左冲右突，其实计划与规划只要起到路标的作用也就够了，不需要每走一步都去看地图，路是要靠脚来丈量的。&lt;/p&gt;</description><content:encoded><![CDATA[<p>如果想要做一件事情，是雷厉风行好还是谋定后动好呢？</p>
<p>其实这是一个强行问出的伪问题，当然是既要雷厉风行也要谋定后动，准确一点应该是先谋定后动，而后雷厉风行。</p>
<p>在谋定之后就要立即行动，所以跟雷厉风行是无缝结合，关键问题是一件事情要考虑到什么程度才算是谋定呢？</p>
<p>如果考虑得及其不充分，就去“雷厉风行”了，有时候可能也能瞎猫撞见死耗子，但是大概率是会遇到非常多意想不到得苦难乃至失败的。</p>
<p>如果考虑的过于琐细，觉得总是怎么思考准备都不够，那么就没有雷厉风行的机会了，思考没有行动的验证，只会成为无根之木。</p>
<p>所以思考的详细程度需要刚刚好，这是一句正确的废话。刚刚好是一个最佳解，我们还可以找一个可行解，那就是思考到能顺利开始行动的程度即可，至于采取行动后的后果，可以预先考虑一部分，但也要做好随机应变的准备。</p>
<p>计划与规划我们往往希望是地图，可以指导我们左冲右突，其实计划与规划只要起到路标的作用也就够了，不需要每走一步都去看地图，路是要靠脚来丈量的。</p>
]]></content:encoded><category>coding</category><category domain="tags">效率</category><category domain="tags">决策</category></item><item><title>人性与算法</title><link>https://yifeitao.com/ghost-in-the-shell-2017/</link><pubDate>Mon, 10 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/ghost-in-the-shell-2017/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2453176400.webp" alt="p2453176400.webp" loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;多年前，看过押井守版本的《攻壳特工队》动画电影，说实话当时可能没太看懂，前段时间听说真人版要上映，又看了一遍，发现日本人对人工智能的理解是很超前的，而且通过影像做了很好的探讨。昨天去院线看了真人版，影片对原作有相当不错的场景还原，但把原著讨论的深刻主题弱化了，变成了一部比较典型的好莱坞英雄电影，有种买椟还珠的遗憾。&lt;/p&gt;
&lt;p&gt;傀儡师的角色变成了久世，从人工智能变成了人，这是真人版和原作最大的差别，且不论真人版中少佐狗血的身世了。在原作结尾中，人工智能和少佐彻底融合了，而真人版的少佐则强调自己是一个实实在在的人。其实我能理解这种改编，可能导演不想过于冒犯观众，最后还是回归到了人性上。在真人版中，虽然少佐除了大脑的所有身体都是机械，但是她有美好的人性，尽管要接受这样一个人已经是一种冒犯。而更冒犯的是，如果人性并不是人所特有的，人工智能也能产生，甚至比人性更加美好呢？&lt;/p&gt;
&lt;p&gt;今年大热的《未来简史》也在讨论这个话题，而且作者比较悲观，不认为人性真的能够区分人和人工智能，人性也不过是一种进化选择出来的生物化学算法，如果是算法，那么或许就能用其他途径模拟出来，或者，干脆产生新的更好的算法，在这个意义上，人所谓万物之灵的地位是岌岌可危的。&lt;/p&gt;
&lt;p&gt;在好莱坞电影中，人性或者说爱是用来解决难题的终极武器，比如星际穿越中的父女羁绊，可能少有人能接受爱也只是一种算法，并没有无可取代的地位。但在人本主义占主导地位的当下，人性和爱是超级英雄小宇宙爆发的源动力。&lt;/p&gt;
&lt;p&gt;我个人对产生类似傀儡师的算法从时间上并不乐观，但也觉得是迟早要到来的，思考人性究竟是什么，究竟有没有不可替代性，这不是杞人忧天的问题，流行文化讨论这一问题，或许不像科学和哲学那么严肃，但却是影响深远的方式，在这个人工智能概念火热的年代显得也不那么突兀而有意义。&lt;/p&gt;
&lt;p&gt;说到底，真人版电影很遗憾，太过保守，既然95年原著就能深入探讨，或许今天的观众也不会那么反感呢，毕竟计算机、网络、人工智能已经发展得比95年充分多了。本来可能重塑经典的，变成了爆米花电影，我也只能表示无奈了。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2453176400.webp" alt="p2453176400.webp" loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>多年前，看过押井守版本的《攻壳特工队》动画电影，说实话当时可能没太看懂，前段时间听说真人版要上映，又看了一遍，发现日本人对人工智能的理解是很超前的，而且通过影像做了很好的探讨。昨天去院线看了真人版，影片对原作有相当不错的场景还原，但把原著讨论的深刻主题弱化了，变成了一部比较典型的好莱坞英雄电影，有种买椟还珠的遗憾。</p>
<p>傀儡师的角色变成了久世，从人工智能变成了人，这是真人版和原作最大的差别，且不论真人版中少佐狗血的身世了。在原作结尾中，人工智能和少佐彻底融合了，而真人版的少佐则强调自己是一个实实在在的人。其实我能理解这种改编，可能导演不想过于冒犯观众，最后还是回归到了人性上。在真人版中，虽然少佐除了大脑的所有身体都是机械，但是她有美好的人性，尽管要接受这样一个人已经是一种冒犯。而更冒犯的是，如果人性并不是人所特有的，人工智能也能产生，甚至比人性更加美好呢？</p>
<p>今年大热的《未来简史》也在讨论这个话题，而且作者比较悲观，不认为人性真的能够区分人和人工智能，人性也不过是一种进化选择出来的生物化学算法，如果是算法，那么或许就能用其他途径模拟出来，或者，干脆产生新的更好的算法，在这个意义上，人所谓万物之灵的地位是岌岌可危的。</p>
<p>在好莱坞电影中，人性或者说爱是用来解决难题的终极武器，比如星际穿越中的父女羁绊，可能少有人能接受爱也只是一种算法，并没有无可取代的地位。但在人本主义占主导地位的当下，人性和爱是超级英雄小宇宙爆发的源动力。</p>
<p>我个人对产生类似傀儡师的算法从时间上并不乐观，但也觉得是迟早要到来的，思考人性究竟是什么，究竟有没有不可替代性，这不是杞人忧天的问题，流行文化讨论这一问题，或许不像科学和哲学那么严肃，但却是影响深远的方式，在这个人工智能概念火热的年代显得也不那么突兀而有意义。</p>
<p>说到底，真人版电影很遗憾，太过保守，既然95年原著就能深入探讨，或许今天的观众也不会那么反感呢，毕竟计算机、网络、人工智能已经发展得比95年充分多了。本来可能重塑经典的，变成了爆米花电影，我也只能表示无奈了。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">科幻</category></item><item><title>科目三考试要点</title><link>https://yifeitao.com/ke-mu-3/</link><pubDate>Sun, 09 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/ke-mu-3/</guid><description>&lt;p&gt;驾考是一种完全彻底的应试教育，教练会教一些真正开车时用不上的技能只为了通过考试，但是毕竟也还是会教一些基本技能，而且应试教育的一板一眼，对于遵守交通规则是有好处的。所以在长时间的折磨后，目前准备第二次应试科目三的本人，明白了一个道理，虽然学车是为了通过考试，但本质上还是为了学车啊，很多时候我们都会被一些东西蒙蔽而忘了初心，就像进入股市是为了投资而不是赌博一样。&lt;/p&gt;
&lt;h2 id="0-起步之前"&gt;0 起步之前&lt;/h2&gt;
&lt;p&gt;开门，按指纹，检查挡位是否空掉，关门。逆时针绕车一周，检查状况，需要在车前方的感应器前晃动手。（&lt;em&gt;目的是开车前看看车有没有明显的异常&lt;/em&gt;）&lt;/p&gt;
&lt;p&gt;开门关门，三摸一带，即检查左后视镜，车内后视镜，调整座位，系上安全带。这些动作都需要触发感应器，三摸能听到语音确认。（&lt;em&gt;实际中这些显然都有意义&lt;/em&gt;）&lt;/p&gt;
&lt;p&gt;启动点火，开始灯光模拟，这个部分比较假，但是也让人熟悉了几种常见的灯光。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;近光灯，只要在夜间都能使用，没有限制。&lt;/li&gt;
&lt;li&gt;远光灯，只有在夜间照明不良的道路，且不影响其他车的情况下使用。（&lt;em&gt;似乎乱开远光灯司机吐槽较多的一种行为&lt;/em&gt;）&lt;/li&gt;
&lt;li&gt;转向灯，除了表示左右转向外，左还表示出发和进入，右还表示停止和离开。&lt;/li&gt;
&lt;li&gt;雾灯&lt;/li&gt;
&lt;li&gt;警示灯，一直闪烁警告。&lt;/li&gt;
&lt;li&gt;双闪，临时的闪烁警告。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;模拟完毕后关闭所有灯光。&lt;/p&gt;
&lt;h2 id="1-起步"&gt;1 起步&lt;/h2&gt;
&lt;p&gt;动作很多，不能做错，总体原则依然是安全原则。&lt;/p&gt;
&lt;p&gt;打左灯，长按喇叭两次，踩住离合和刹车，挂一档，松手刹，松刹车，松离合（如果是半坡起步需要先松部分离合待车身开始共振时在慢慢松开刹车），顺利起步。&lt;/p&gt;
&lt;h2 id="2-路口右转弯"&gt;2 路口右转弯&lt;/h2&gt;
&lt;p&gt;起步后去掉左灯，路口右转弯前打右灯，尽量上内道，加油门到约2000转，踩离合到底，换二档，松离合，加油门到20码。&lt;/p&gt;
&lt;p&gt;考试全程都要注意这个挡位与速度的匹配问题，1档10码左右，最好10码以下，二档20码左右，最好20码低一点但不低于15码，三档30码左右。加档先加油，建档先踩离合踩刹车减速，待速度匹配后再换挡。&lt;/p&gt;
&lt;p&gt;全程以二档为主，部分项目需要减速时，以一档为主，三档全程只在合适的路段开两次即可。&lt;/p&gt;
&lt;h2 id="3-变更车道"&gt;3 变更车道&lt;/h2&gt;
&lt;p&gt;打左灯，等待5秒，观察后视镜，再打方向盘，这是为了给自己和路上其他车一个反应时间，而不要急急忙忙打灯就变道。考试时如果在内道，只需要打灯假装一下变道即可。&lt;/p&gt;
&lt;h2 id="4-掉头"&gt;4 掉头&lt;/h2&gt;
&lt;p&gt;准备掉头后，打左灯，踩离合踩刹车三秒，换一档，观察前后，打方向掉头，同时甩头左右观察。（&lt;em&gt;这些在实际中都很有用，但是考试基于摄像头和感应器，所以有点假&lt;/em&gt;）完成后换二档。&lt;/p&gt;
&lt;h2 id="5-会车"&gt;5 会车&lt;/h2&gt;
&lt;p&gt;进入会车时踩离合刹车三秒，减到一档，贴边行驶，而且要求比较变态，一般教练都有一些花招解决，我的教练让我看车头上的某个点和边线的关系，实际中，贴边行驶还是有价值的。完成后换二档。&lt;/p&gt;
&lt;h2 id="6-超车"&gt;6 超车&lt;/h2&gt;
&lt;p&gt;在实际中，超车的过程是变左道，加速，再变右道，在考试中可以简化为打左灯5秒，再打右灯5秒。&lt;/p&gt;
&lt;p&gt;超车完成后，这里最好加一次三档。（加油门到25码，换三档，加油门5秒，维持30码左右，踩离合刹车到20码，换二档）&lt;/p&gt;
&lt;h2 id="7-路口右转弯"&gt;7 路口右转弯&lt;/h2&gt;
&lt;p&gt;打右灯注意保持，踩离合，轻踩刹车3秒，为了简化操作，踩刹车前速度可以快一点，踩完刹车速度不低于10，不用换二档。&lt;/p&gt;
&lt;h2 id="8-掉头"&gt;8 掉头&lt;/h2&gt;
&lt;p&gt;基本4&lt;/p&gt;
&lt;h2 id="9-路口右转弯"&gt;9 路口右转弯&lt;/h2&gt;
&lt;p&gt;上坡，需要多加一点油，打右灯注意保持，这里不用刹车减速。&lt;/p&gt;
&lt;h2 id="10-通过公交车站"&gt;10 通过公交车站&lt;/h2&gt;
&lt;p&gt;注意通过前最好切到内道，注意速度略快，踩离合，踩刹车三秒，左右观察，速度不降到10码不用减挡。&lt;/p&gt;
&lt;h2 id="11-掉头"&gt;11 掉头&lt;/h2&gt;
&lt;p&gt;基本4&lt;/p&gt;
&lt;h2 id="12-通过学校区域"&gt;12 通过学校区域&lt;/h2&gt;
&lt;p&gt;基本同10&lt;/p&gt;
&lt;h2 id="13-通过人行横道"&gt;13 通过人行横道&lt;/h2&gt;
&lt;p&gt;基本同10&lt;/p&gt;
&lt;h2 id="14-直行通过路口"&gt;14 直行通过路口&lt;/h2&gt;
&lt;p&gt;基本同10&lt;/p&gt;
&lt;h2 id="15-通过红绿灯"&gt;15 通过红绿灯&lt;/h2&gt;
&lt;p&gt;上一个项目直接减速到10，换一档，在压线前踩停车，空挡，拉手刹，放松脚。等到红灯闪烁时，挂一档，加速到二档，再加速到三档，5秒后减速到二档。&lt;/p&gt;
&lt;h2 id="16-直线行驶"&gt;16 直线行驶&lt;/h2&gt;
&lt;p&gt;注意眼睛要看远方才能开得直，方向盘只能很轻微的调节。&lt;/p&gt;
&lt;h2 id="17-靠边停车"&gt;17 靠边停车&lt;/h2&gt;
&lt;p&gt;快到进停车区的地方，换一档，打右灯，注意保持，待到大约肩与边线平齐时，右转进入停车道，听到靠边停车项目开始后，注意保持右灯，调节方向盘贴边行驶，调节到位后保持5秒，踩刹车停车。&lt;/p&gt;
&lt;h2 id="18-停车"&gt;18 停车&lt;/h2&gt;
&lt;p&gt;不要激动不要着急，慢慢把停车项目做完，脚不要动。空挡，拉手刹，此时车已经彻底制动，此时脚可以挪开。关灯，熄火。看一下后视镜（感应器要摸）准备出门。出门可以开一下门再关一下门（假装一下然后可以听到考试通过的美好消息。）&lt;/p&gt;</description><content:encoded><![CDATA[<p>驾考是一种完全彻底的应试教育，教练会教一些真正开车时用不上的技能只为了通过考试，但是毕竟也还是会教一些基本技能，而且应试教育的一板一眼，对于遵守交通规则是有好处的。所以在长时间的折磨后，目前准备第二次应试科目三的本人，明白了一个道理，虽然学车是为了通过考试，但本质上还是为了学车啊，很多时候我们都会被一些东西蒙蔽而忘了初心，就像进入股市是为了投资而不是赌博一样。</p>
<h2 id="0-起步之前">0 起步之前</h2>
<p>开门，按指纹，检查挡位是否空掉，关门。逆时针绕车一周，检查状况，需要在车前方的感应器前晃动手。（<em>目的是开车前看看车有没有明显的异常</em>）</p>
<p>开门关门，三摸一带，即检查左后视镜，车内后视镜，调整座位，系上安全带。这些动作都需要触发感应器，三摸能听到语音确认。（<em>实际中这些显然都有意义</em>）</p>
<p>启动点火，开始灯光模拟，这个部分比较假，但是也让人熟悉了几种常见的灯光。</p>
<ol>
<li>近光灯，只要在夜间都能使用，没有限制。</li>
<li>远光灯，只有在夜间照明不良的道路，且不影响其他车的情况下使用。（<em>似乎乱开远光灯司机吐槽较多的一种行为</em>）</li>
<li>转向灯，除了表示左右转向外，左还表示出发和进入，右还表示停止和离开。</li>
<li>雾灯</li>
<li>警示灯，一直闪烁警告。</li>
<li>双闪，临时的闪烁警告。</li>
</ol>
<p>模拟完毕后关闭所有灯光。</p>
<h2 id="1-起步">1 起步</h2>
<p>动作很多，不能做错，总体原则依然是安全原则。</p>
<p>打左灯，长按喇叭两次，踩住离合和刹车，挂一档，松手刹，松刹车，松离合（如果是半坡起步需要先松部分离合待车身开始共振时在慢慢松开刹车），顺利起步。</p>
<h2 id="2-路口右转弯">2 路口右转弯</h2>
<p>起步后去掉左灯，路口右转弯前打右灯，尽量上内道，加油门到约2000转，踩离合到底，换二档，松离合，加油门到20码。</p>
<p>考试全程都要注意这个挡位与速度的匹配问题，1档10码左右，最好10码以下，二档20码左右，最好20码低一点但不低于15码，三档30码左右。加档先加油，建档先踩离合踩刹车减速，待速度匹配后再换挡。</p>
<p>全程以二档为主，部分项目需要减速时，以一档为主，三档全程只在合适的路段开两次即可。</p>
<h2 id="3-变更车道">3 变更车道</h2>
<p>打左灯，等待5秒，观察后视镜，再打方向盘，这是为了给自己和路上其他车一个反应时间，而不要急急忙忙打灯就变道。考试时如果在内道，只需要打灯假装一下变道即可。</p>
<h2 id="4-掉头">4 掉头</h2>
<p>准备掉头后，打左灯，踩离合踩刹车三秒，换一档，观察前后，打方向掉头，同时甩头左右观察。（<em>这些在实际中都很有用，但是考试基于摄像头和感应器，所以有点假</em>）完成后换二档。</p>
<h2 id="5-会车">5 会车</h2>
<p>进入会车时踩离合刹车三秒，减到一档，贴边行驶，而且要求比较变态，一般教练都有一些花招解决，我的教练让我看车头上的某个点和边线的关系，实际中，贴边行驶还是有价值的。完成后换二档。</p>
<h2 id="6-超车">6 超车</h2>
<p>在实际中，超车的过程是变左道，加速，再变右道，在考试中可以简化为打左灯5秒，再打右灯5秒。</p>
<p>超车完成后，这里最好加一次三档。（加油门到25码，换三档，加油门5秒，维持30码左右，踩离合刹车到20码，换二档）</p>
<h2 id="7-路口右转弯">7 路口右转弯</h2>
<p>打右灯注意保持，踩离合，轻踩刹车3秒，为了简化操作，踩刹车前速度可以快一点，踩完刹车速度不低于10，不用换二档。</p>
<h2 id="8-掉头">8 掉头</h2>
<p>基本4</p>
<h2 id="9-路口右转弯">9 路口右转弯</h2>
<p>上坡，需要多加一点油，打右灯注意保持，这里不用刹车减速。</p>
<h2 id="10-通过公交车站">10 通过公交车站</h2>
<p>注意通过前最好切到内道，注意速度略快，踩离合，踩刹车三秒，左右观察，速度不降到10码不用减挡。</p>
<h2 id="11-掉头">11 掉头</h2>
<p>基本4</p>
<h2 id="12-通过学校区域">12 通过学校区域</h2>
<p>基本同10</p>
<h2 id="13-通过人行横道">13 通过人行横道</h2>
<p>基本同10</p>
<h2 id="14-直行通过路口">14 直行通过路口</h2>
<p>基本同10</p>
<h2 id="15-通过红绿灯">15 通过红绿灯</h2>
<p>上一个项目直接减速到10，换一档，在压线前踩停车，空挡，拉手刹，放松脚。等到红灯闪烁时，挂一档，加速到二档，再加速到三档，5秒后减速到二档。</p>
<h2 id="16-直线行驶">16 直线行驶</h2>
<p>注意眼睛要看远方才能开得直，方向盘只能很轻微的调节。</p>
<h2 id="17-靠边停车">17 靠边停车</h2>
<p>快到进停车区的地方，换一档，打右灯，注意保持，待到大约肩与边线平齐时，右转进入停车道，听到靠边停车项目开始后，注意保持右灯，调节方向盘贴边行驶，调节到位后保持5秒，踩刹车停车。</p>
<h2 id="18-停车">18 停车</h2>
<p>不要激动不要着急，慢慢把停车项目做完，脚不要动。空挡，拉手刹，此时车已经彻底制动，此时脚可以挪开。关灯，熄火。看一下后视镜（感应器要摸）准备出门。出门可以开一下门再关一下门（假装一下然后可以听到考试通过的美好消息。）</p>
]]></content:encoded><category>life</category><category domain="tags">驾驶</category><category domain="tags">考试</category></item><item><title>《佐藤可士和的超整理术》笔记</title><link>https://yifeitao.com/super-organizing/</link><pubDate>Thu, 06 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/super-organizing/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s3753892.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;h2 id="基本信息"&gt;基本信息&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;优衣库艺术指导&lt;/li&gt;
&lt;li&gt;方法论：如何享受舒适生活&lt;/li&gt;
&lt;li&gt;艺术指导&amp;ndash;沟通&amp;ndash;整理对方的思路&lt;/li&gt;
&lt;li&gt;三部曲
&lt;ul&gt;
&lt;li&gt;掌握状况&lt;/li&gt;
&lt;li&gt;导入观点&lt;/li&gt;
&lt;li&gt;设定课题&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="空间整理术"&gt;空间整理术&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;设定优先排序&lt;/li&gt;
&lt;li&gt;空间整理的目的，在于创造舒适的工作环境
&lt;ul&gt;
&lt;li&gt;彻底整理，规避风险&lt;/li&gt;
&lt;li&gt;通过身体力行，感受整理成效&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;整理公文包：如无必要，勿增实体&amp;ndash;功能合并&lt;/li&gt;
&lt;li&gt;舍弃是与不安的斗争基于优先排序&lt;/li&gt;
&lt;li&gt;舍弃是与暂且的斗争&lt;/li&gt;
&lt;li&gt;办公桌：物有所归&lt;/li&gt;
&lt;li&gt;数据文件：只保留最终版本&lt;/li&gt;
&lt;li&gt;物品的临时避难所&lt;/li&gt;
&lt;li&gt;文件夹的归类&amp;ndash;每级别管理不超过10个&lt;/li&gt;
&lt;li&gt;实物的整理&amp;ndash;外框技巧（文件夹）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="信息整理术"&gt;信息整理术&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;导入观点：关键词&lt;/li&gt;
&lt;li&gt;导出远景 slogon
&lt;ul&gt;
&lt;li&gt;寻找最佳视角&lt;/li&gt;
&lt;li&gt;退一步观察，寻找超然视角&lt;/li&gt;
&lt;li&gt;抛开自以为是&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="思考整理术"&gt;思考整理术&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;将思绪信息化、语言化&lt;/li&gt;
&lt;li&gt;提出假说，确认对方想法：迭代过程&lt;/li&gt;
&lt;/ul&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/lpic/s3753892.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<h2 id="基本信息">基本信息</h2>
<ul>
<li>优衣库艺术指导</li>
<li>方法论：如何享受舒适生活</li>
<li>艺术指导&ndash;沟通&ndash;整理对方的思路</li>
<li>三部曲
<ul>
<li>掌握状况</li>
<li>导入观点</li>
<li>设定课题</li>
</ul>
</li>
</ul>
<h2 id="空间整理术">空间整理术</h2>
<ul>
<li>设定优先排序</li>
<li>空间整理的目的，在于创造舒适的工作环境
<ul>
<li>彻底整理，规避风险</li>
<li>通过身体力行，感受整理成效</li>
</ul>
</li>
<li>整理公文包：如无必要，勿增实体&ndash;功能合并</li>
<li>舍弃是与不安的斗争基于优先排序</li>
<li>舍弃是与暂且的斗争</li>
<li>办公桌：物有所归</li>
<li>数据文件：只保留最终版本</li>
<li>物品的临时避难所</li>
<li>文件夹的归类&ndash;每级别管理不超过10个</li>
<li>实物的整理&ndash;外框技巧（文件夹）</li>
</ul>
<h2 id="信息整理术">信息整理术</h2>
<ul>
<li>导入观点：关键词</li>
<li>导出远景 slogon
<ul>
<li>寻找最佳视角</li>
<li>退一步观察，寻找超然视角</li>
<li>抛开自以为是</li>
</ul>
</li>
</ul>
<h2 id="思考整理术">思考整理术</h2>
<ul>
<li>将思绪信息化、语言化</li>
<li>提出假说，确认对方想法：迭代过程</li>
</ul>
]]></content:encoded><category>reading</category><category domain="tags">整理</category><category domain="tags">读书笔记</category></item><item><title>幸福的一代</title><link>https://yifeitao.com/a-happiness-generation/</link><pubDate>Wed, 05 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/a-happiness-generation/</guid><description>&lt;p&gt;着急小朋友的奶奶在看过他的生活状态后，感概现在的小孩真幸福，这种感概我也发出过，着急小朋友不到三岁，现在拥有的玩具和书可能比我整个童年都要多。&lt;/p&gt;
&lt;p&gt;在我小时候，着急小朋友的爷爷在酒过三巡后，就会开始忆苦思甜，讲他童年时社会和家庭如何穷，我的生活是多么的幸福。&lt;/p&gt;
&lt;p&gt;可是某一天，我在超市看到了茫茫多的幼儿园小朋友的教辅资料，突然觉察到这种以为下一代人一定更幸福，不过是一种一厢情愿。每一代人都有他的苦与痛。&lt;/p&gt;
&lt;p&gt;关于八零后一代人有多么倒霉的段子已经够多了，我不想再矫情。我倒是想预测一下壹零后这一代人有可能有多倒霉。首先，他们出生在一个经济高速发展的时代，这个国家已经稳定发展了几十年，他们的家长相信未来还会一直这样发展下去。他们的家长相信“不能输在起跑线上”，从拼胎教、拼早教，到拼学区房。但是他们所处的时代又似乎充满了危险，家长要防范各种危险，小心翼翼的把一两个孩子带大 ，往往，他们被告知这也危险，那也不能做。&lt;/p&gt;
&lt;p&gt;然而，科技仍在加速发展中，等到他们成年时，可能发现自己按照父母意志去学习的各种东西，几乎一无是处，很多技能都比不过人工智能。又或许这些都是想象，经济增长放缓，公平和效率的矛盾没有得到有效的释放，会爆发经济和政治危机。&lt;/p&gt;
&lt;p&gt;未来有三种可能，一是当前发展模式的有效延续，二是历史螺旋上升中的倒退与停滞，三是基于人工智能的指数增长进入后半段开始淘汰大部分人。我没有足够多的信心说以后一定会是第一种情况，所以也就没有信心说壹零后将会是幸福的一代。&lt;/p&gt;</description><content:encoded><![CDATA[<p>着急小朋友的奶奶在看过他的生活状态后，感概现在的小孩真幸福，这种感概我也发出过，着急小朋友不到三岁，现在拥有的玩具和书可能比我整个童年都要多。</p>
<p>在我小时候，着急小朋友的爷爷在酒过三巡后，就会开始忆苦思甜，讲他童年时社会和家庭如何穷，我的生活是多么的幸福。</p>
<p>可是某一天，我在超市看到了茫茫多的幼儿园小朋友的教辅资料，突然觉察到这种以为下一代人一定更幸福，不过是一种一厢情愿。每一代人都有他的苦与痛。</p>
<p>关于八零后一代人有多么倒霉的段子已经够多了，我不想再矫情。我倒是想预测一下壹零后这一代人有可能有多倒霉。首先，他们出生在一个经济高速发展的时代，这个国家已经稳定发展了几十年，他们的家长相信未来还会一直这样发展下去。他们的家长相信“不能输在起跑线上”，从拼胎教、拼早教，到拼学区房。但是他们所处的时代又似乎充满了危险，家长要防范各种危险，小心翼翼的把一两个孩子带大 ，往往，他们被告知这也危险，那也不能做。</p>
<p>然而，科技仍在加速发展中，等到他们成年时，可能发现自己按照父母意志去学习的各种东西，几乎一无是处，很多技能都比不过人工智能。又或许这些都是想象，经济增长放缓，公平和效率的矛盾没有得到有效的释放，会爆发经济和政治危机。</p>
<p>未来有三种可能，一是当前发展模式的有效延续，二是历史螺旋上升中的倒退与停滞，三是基于人工智能的指数增长进入后半段开始淘汰大部分人。我没有足够多的信心说以后一定会是第一种情况，所以也就没有信心说壹零后将会是幸福的一代。</p>
]]></content:encoded><category>life</category><category domain="tags">社会</category><category domain="tags">代际</category></item><item><title>公开课的冷却</title><link>https://yifeitao.com/cold-mooc/</link><pubDate>Tue, 04 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/cold-mooc/</guid><description>&lt;p&gt;前几年，公开课相当火热，一度成为一种社会现象，以网易公开课为代表，将mooc的精神在中国发扬光大，那时候，我似乎没有相关的需求，只是了解了一下，没有深入学习过什么。&lt;/p&gt;
&lt;p&gt;最近为了研究机器学习，又去找了一些机器学习的mooc，发现mooc虽然仍在发展，但是已经没有以前火热了，网易公开课新增的内容大多是软性的课程，比如TED，而那种硬核的课程大多还是几年前翻译的，国际上的几大公开课平台如cousera，edx，udacity等，都在向有偿培训转型，而国内则没有一个特别好的平台，清华弄了个学堂在线，北大弄了个华文慕课……感觉网站特别多，但好的课程并不多。&lt;/p&gt;
&lt;p&gt;在线课程的交互性通过程序设计其实是可以有很好的保证的，但是那种课程设计太耗费心力，所以如果是无偿的课程，往往只是把课堂的视频录像放到网上。只是看看视频，学习效果很有限，即使有作业，如果没有裁判系统，也很少有人能在没有反馈的情况下坚持去做作业。&lt;/p&gt;
&lt;p&gt;以机器学习为例，目前有很多并不便宜的培训课程，但是同时也还是有很多质量不错的免费课程，只要你稍微花点心思去寻找。公开课给了勤奋的人一个很好的工具，但是并不能解决学习动能的问题，对于懒惰的人而言，对于把看看视频走马观花当作真正的学习的人而言，公开课真的只是一场热闹。&lt;/p&gt;
&lt;p&gt;学习是一种修炼，从来都不是凑热闹的事。这个世界上，愿意自学成长的人毕竟是少数，所以公开课也只能是一种小众需求，作为终身学习的人，我实在没什么好抱怨的，还是无比感谢这个伟大的互联网时代。&lt;/p&gt;</description><content:encoded><![CDATA[<p>前几年，公开课相当火热，一度成为一种社会现象，以网易公开课为代表，将mooc的精神在中国发扬光大，那时候，我似乎没有相关的需求，只是了解了一下，没有深入学习过什么。</p>
<p>最近为了研究机器学习，又去找了一些机器学习的mooc，发现mooc虽然仍在发展，但是已经没有以前火热了，网易公开课新增的内容大多是软性的课程，比如TED，而那种硬核的课程大多还是几年前翻译的，国际上的几大公开课平台如cousera，edx，udacity等，都在向有偿培训转型，而国内则没有一个特别好的平台，清华弄了个学堂在线，北大弄了个华文慕课……感觉网站特别多，但好的课程并不多。</p>
<p>在线课程的交互性通过程序设计其实是可以有很好的保证的，但是那种课程设计太耗费心力，所以如果是无偿的课程，往往只是把课堂的视频录像放到网上。只是看看视频，学习效果很有限，即使有作业，如果没有裁判系统，也很少有人能在没有反馈的情况下坚持去做作业。</p>
<p>以机器学习为例，目前有很多并不便宜的培训课程，但是同时也还是有很多质量不错的免费课程，只要你稍微花点心思去寻找。公开课给了勤奋的人一个很好的工具，但是并不能解决学习动能的问题，对于懒惰的人而言，对于把看看视频走马观花当作真正的学习的人而言，公开课真的只是一场热闹。</p>
<p>学习是一种修炼，从来都不是凑热闹的事。这个世界上，愿意自学成长的人毕竟是少数，所以公开课也只能是一种小众需求，作为终身学习的人，我实在没什么好抱怨的，还是无比感谢这个伟大的互联网时代。</p>
]]></content:encoded><category>life</category><category domain="tags">教育</category><category domain="tags">在线学习</category></item><item><title>对雄安新区的思考</title><link>https://yifeitao.com/xiong-an/</link><pubDate>Mon, 03 Apr 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/xiong-an/</guid><description>&lt;p&gt;昨天陪小朋友玩了大半天没看新闻，今天早上一看手机被千年大计雄安新区刷屏了。基本上，对此事持谨慎悲观态度。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;比照深圳特区看，不占天时地利，当年有市场经济压抑几十年后的爆发，有毗邻香港的地理优势，而现在有的只是领导人的决心；&lt;/li&gt;
&lt;li&gt;从目前的规划来看，雄安新区没有再造一个政治中心的想法，那么就会变成把北京不想要的都推出去，而最好的资源，还是会设法留在北京，只有爹不疼娘不爱的才会过去新区；&lt;/li&gt;
&lt;li&gt;这次似乎会有一个对土地财政的反思式开发模式，现在冲进去炒房的人风险相当高，当然，高风险有可能带来高收益，也有可能带来跳楼；&lt;/li&gt;
&lt;li&gt;没有原生造血能力的地方，需要的是全国人民的输血，对当地人来说，确实是被大奖砸中了脑袋，但是从全国经济的总体来看，有可能成为一个负担，不懂基本经济学的人以为只要意志力和印钞厂就能造出一个新的深圳来，这有点天真；&lt;/li&gt;
&lt;li&gt;我也希望这是一次成功的探索，但是目前确实看起来确实难以乐观。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>昨天陪小朋友玩了大半天没看新闻，今天早上一看手机被千年大计雄安新区刷屏了。基本上，对此事持谨慎悲观态度。</p>
<ol>
<li>比照深圳特区看，不占天时地利，当年有市场经济压抑几十年后的爆发，有毗邻香港的地理优势，而现在有的只是领导人的决心；</li>
<li>从目前的规划来看，雄安新区没有再造一个政治中心的想法，那么就会变成把北京不想要的都推出去，而最好的资源，还是会设法留在北京，只有爹不疼娘不爱的才会过去新区；</li>
<li>这次似乎会有一个对土地财政的反思式开发模式，现在冲进去炒房的人风险相当高，当然，高风险有可能带来高收益，也有可能带来跳楼；</li>
<li>没有原生造血能力的地方，需要的是全国人民的输血，对当地人来说，确实是被大奖砸中了脑袋，但是从全国经济的总体来看，有可能成为一个负担，不懂基本经济学的人以为只要意志力和印钞厂就能造出一个新的深圳来，这有点天真；</li>
<li>我也希望这是一次成功的探索，但是目前确实看起来确实难以乐观。</li>
</ol>
]]></content:encoded><category>life</category><category domain="tags">社会</category><category domain="tags">房地产</category></item><item><title>关于拖延的一些思考</title><link>https://yifeitao.com/thoughts-on-procrastination/</link><pubDate>Thu, 30 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/thoughts-on-procrastination/</guid><description>&lt;p&gt;拖延是人性使然，人类那几十万年前已经基本定型的大脑，其实并不天然的善于远景规划，而是更喜欢眼前利益。现代社会中工作学习要求延迟满足，通过不懈的努力达到一个看不见摸不着的目标，其实是由大规模的社会合作保证的，比如，你会愿意将你的劳动换成一个银行卡上的数字，甚至又去投资买一些虚无缥缈的股票，这种种虚拟叙事，在人类社会的早期都是不可想象的，因此去考虑过于将来的事情，对于原始人，可能不是一个好的决策。&lt;/p&gt;
&lt;p&gt;所以当我们的原始大脑面对现代社会时，拖延是很自然的反应。拖延症这个词出来后，很多人就像找到组织一般高兴，原来我不是懒，而是得了一种时髦的病啊。如果说拖延是人之本性，那也就算不得是一种病了，至于究竟能不能和懒划等号，可能有一点点的区别，觉得自己有拖延症的人总是还是试图挣一下去克服自己懒惰的本性，会有很多的焦虑，而真正的懒惰倒是心安理得的。&lt;/p&gt;
&lt;p&gt;在知道拖延症这个词后，我也看过不少相关的资料，也反思过自己的行为，就我个人而言，造成拖延的心理机制大概有以下几种：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;对要做的事情没有任何激情，而是由于种种原因被迫去做；&lt;/li&gt;
&lt;li&gt;缺乏清晰的目标，但又没有完全沉沦，想要做点什么却又不知道做什么；&lt;/li&gt;
&lt;li&gt;要做的事情太复杂，感觉自己看不到完成的一天；&lt;/li&gt;
&lt;li&gt;想要在完美的状态下开始，或者达到完美的效果，迟疑而不敢开始；&lt;/li&gt;
&lt;li&gt;脑子里想法太多，新的想法打断正在进行的工作。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;造成拖延的原因是多方面的，所有拖延症最多只能算是一种症状，而病因却是很复杂的，针对这些病因，我也开出过自己的药方：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;被迫做无聊的事情是最难搞定的病因，最好的办法就是不要让自己陷入这种危险的境地，无论如何调适都是非常耗费心力的。可以告诉自己，快速的把这些事情做完，然后就可以去做喜欢的事情了，或者从消极的角度说，可以心安理得的拖延，因为这些无聊的事情可能拖着拖着就没了；&lt;/li&gt;
&lt;li&gt;缺乏目标这种事情不是技术性的，而是关系到人生意义的大事，这里就不赘述了；&lt;/li&gt;
&lt;li&gt;做复杂的事情，是现代人尤其是智力劳动者的常态，因此学会分解，减轻思考负担是极为重要的；&lt;/li&gt;
&lt;li&gt;时刻牢记二八定律，先花20%的时间完成80%的工作，再视需要打磨剩下来20%的细节，至于完美，本来就是一个幻影罢了；&lt;/li&gt;
&lt;li&gt;对脑子里闪现的想法，可以暂时记下来，纳入自己的收件箱，另外，确实也可以同时期做很多事情，拖着一件事情，可能就去做了另外一件事情，有本书叫《结构化拖延》就是讲这个的。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;要减轻所谓的拖延症，就像去开一把锁，钥匙往往不在锁上，得去其他地方找，如果你对自己的人生有全面深入的思考，拖延就不会是一个问题，而如果出现了严重的拖延，则确实是一个糟糕的信号，需要仔细问问自己的脑子究竟是怎么想的，而我们能够自己问自己这种问题，大概是大脑最有趣的一个功能了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>拖延是人性使然，人类那几十万年前已经基本定型的大脑，其实并不天然的善于远景规划，而是更喜欢眼前利益。现代社会中工作学习要求延迟满足，通过不懈的努力达到一个看不见摸不着的目标，其实是由大规模的社会合作保证的，比如，你会愿意将你的劳动换成一个银行卡上的数字，甚至又去投资买一些虚无缥缈的股票，这种种虚拟叙事，在人类社会的早期都是不可想象的，因此去考虑过于将来的事情，对于原始人，可能不是一个好的决策。</p>
<p>所以当我们的原始大脑面对现代社会时，拖延是很自然的反应。拖延症这个词出来后，很多人就像找到组织一般高兴，原来我不是懒，而是得了一种时髦的病啊。如果说拖延是人之本性，那也就算不得是一种病了，至于究竟能不能和懒划等号，可能有一点点的区别，觉得自己有拖延症的人总是还是试图挣一下去克服自己懒惰的本性，会有很多的焦虑，而真正的懒惰倒是心安理得的。</p>
<p>在知道拖延症这个词后，我也看过不少相关的资料，也反思过自己的行为，就我个人而言，造成拖延的心理机制大概有以下几种：</p>
<ol>
<li>对要做的事情没有任何激情，而是由于种种原因被迫去做；</li>
<li>缺乏清晰的目标，但又没有完全沉沦，想要做点什么却又不知道做什么；</li>
<li>要做的事情太复杂，感觉自己看不到完成的一天；</li>
<li>想要在完美的状态下开始，或者达到完美的效果，迟疑而不敢开始；</li>
<li>脑子里想法太多，新的想法打断正在进行的工作。</li>
</ol>
<p>造成拖延的原因是多方面的，所有拖延症最多只能算是一种症状，而病因却是很复杂的，针对这些病因，我也开出过自己的药方：</p>
<ol>
<li>被迫做无聊的事情是最难搞定的病因，最好的办法就是不要让自己陷入这种危险的境地，无论如何调适都是非常耗费心力的。可以告诉自己，快速的把这些事情做完，然后就可以去做喜欢的事情了，或者从消极的角度说，可以心安理得的拖延，因为这些无聊的事情可能拖着拖着就没了；</li>
<li>缺乏目标这种事情不是技术性的，而是关系到人生意义的大事，这里就不赘述了；</li>
<li>做复杂的事情，是现代人尤其是智力劳动者的常态，因此学会分解，减轻思考负担是极为重要的；</li>
<li>时刻牢记二八定律，先花20%的时间完成80%的工作，再视需要打磨剩下来20%的细节，至于完美，本来就是一个幻影罢了；</li>
<li>对脑子里闪现的想法，可以暂时记下来，纳入自己的收件箱，另外，确实也可以同时期做很多事情，拖着一件事情，可能就去做了另外一件事情，有本书叫《结构化拖延》就是讲这个的。</li>
</ol>
<p>要减轻所谓的拖延症，就像去开一把锁，钥匙往往不在锁上，得去其他地方找，如果你对自己的人生有全面深入的思考，拖延就不会是一个问题，而如果出现了严重的拖延，则确实是一个糟糕的信号，需要仔细问问自己的脑子究竟是怎么想的，而我们能够自己问自己这种问题，大概是大脑最有趣的一个功能了。</p>
]]></content:encoded><category>methodology</category><category domain="tags">拖延</category><category domain="tags">心理</category></item><item><title>教育的形态</title><link>https://yifeitao.com/the-form-of-education/</link><pubDate>Wed, 29 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-form-of-education/</guid><description>&lt;p&gt;我在和别的家长谈及小孩子的教育时，说有在考虑让着急小朋友最多上个幼儿园大班算了，然后别人像看怪物一样看了我一眼，表示不可理解。其实我也还未完全决定，只是有这个意向而已，但是为何自己有一种离经叛道的感觉呢？&lt;/p&gt;
&lt;p&gt;最近几年，我一直有在思考一个问题：教育的形态应该是怎样的？目前这种幼儿园三年，义务教育九年，高中三年，本科四年等等真的就是一个最优解么？或者放宽一点看，目前的学校教育就真的是最优解么？&lt;/p&gt;
&lt;p&gt;八零后九零后一代出生后，中国的学校教育体系已经比较成熟，会给人一种历来如此，将来也如此的错觉。往前看几十年，教育从私塾、学徒制等帝国时代的形态，有一个向现代学校体系变化的过程，再往前一直看到原始部落，教育没有专业化，只是融合在狩猎生活中。所以没有什么是历来如此的。&lt;/p&gt;
&lt;p&gt;现代教育体系起源于工业化大生产，第一，工人没有自由时间，孩子的照顾很成问题，第二，需要批量生产懂得操作机器的有一定文化的工人，统一托管的学校体系成为工业时代不可缺少的一环，科技与社会自那时起发展了两三百年，而学校的形态总体上没有太大的变化。与其他国家一样，随着工业化的深入，中国的孩子在学校待的时间越来越长，一是因为培养一个合格的人才需要学习的东西越来越多，二是因为父母照顾孩子的时间越来越少，所以上学的时间从小学往前推到学前班、再到幼儿园小班，甚至是托儿所。&lt;/p&gt;
&lt;p&gt;一定程度上，上学时间越来越早是一种无奈的选择，但是却又被赋予越来越多的意义，首先现代中国社会社区的地位越来越缺失，小朋友不但在自己家没有人一起玩，连走出家门也找不到一块好的草坪，所有的与儿童有关的社交功能，都完全由学校一力承担了，而实际上，学校主要只提供了同龄人无限竞争的小社会，与真实社会的混龄的现实相去甚远，但是家长也确实没有其他选择，而更多的家长也把基于同龄班级管理的学校当作了唯一可行的正途，完全不考虑是否有其他可能性。&lt;/p&gt;
&lt;p&gt;其实，考虑学校社交意义的人还是少数，更多的家长陷入了冷战中核军备竞赛的恐惧之中，不让孩子输在起跑线上，已经不是一句口号，而是一种歇斯底里了。从幼儿园开始就要量化学了几个字，背了几首诗，会几加几，看到书店的“幼升小冲刺卷”我都感到眩晕。重点幼儿园到重点大学，是一条看不到尽头的，用试卷铺就的路，中产阶级对社会地位和金钱的焦虑，到了自己孩子身上，就是一张张试卷，一个个分数。&lt;/p&gt;
&lt;p&gt;我们难以预见未来三十年后的社会是怎样的，尤其是在科技如此加速度发展的今天，又哪里来的自信与自负，像喂鸭子一样喂给孩子的东西针的能让他们以后自如的应对百年人生，在人工智能的时代里愉快的生活。&lt;/p&gt;
&lt;p&gt;所有的这些问题，我都还没有确切的答案，需要深入思考与实践，可以说我也在焦虑，只是焦虑的焦点可能不太一样，我所知道只是，教育形态可能是滞后于科技与社会发展的，而好的教育应该对未来有预见性，而目前这种追逐着考试高分的教育只不过是一种一厢情愿的游戏，可能学成之时就是被淘汰之时。&lt;/p&gt;</description><content:encoded><![CDATA[<p>我在和别的家长谈及小孩子的教育时，说有在考虑让着急小朋友最多上个幼儿园大班算了，然后别人像看怪物一样看了我一眼，表示不可理解。其实我也还未完全决定，只是有这个意向而已，但是为何自己有一种离经叛道的感觉呢？</p>
<p>最近几年，我一直有在思考一个问题：教育的形态应该是怎样的？目前这种幼儿园三年，义务教育九年，高中三年，本科四年等等真的就是一个最优解么？或者放宽一点看，目前的学校教育就真的是最优解么？</p>
<p>八零后九零后一代出生后，中国的学校教育体系已经比较成熟，会给人一种历来如此，将来也如此的错觉。往前看几十年，教育从私塾、学徒制等帝国时代的形态，有一个向现代学校体系变化的过程，再往前一直看到原始部落，教育没有专业化，只是融合在狩猎生活中。所以没有什么是历来如此的。</p>
<p>现代教育体系起源于工业化大生产，第一，工人没有自由时间，孩子的照顾很成问题，第二，需要批量生产懂得操作机器的有一定文化的工人，统一托管的学校体系成为工业时代不可缺少的一环，科技与社会自那时起发展了两三百年，而学校的形态总体上没有太大的变化。与其他国家一样，随着工业化的深入，中国的孩子在学校待的时间越来越长，一是因为培养一个合格的人才需要学习的东西越来越多，二是因为父母照顾孩子的时间越来越少，所以上学的时间从小学往前推到学前班、再到幼儿园小班，甚至是托儿所。</p>
<p>一定程度上，上学时间越来越早是一种无奈的选择，但是却又被赋予越来越多的意义，首先现代中国社会社区的地位越来越缺失，小朋友不但在自己家没有人一起玩，连走出家门也找不到一块好的草坪，所有的与儿童有关的社交功能，都完全由学校一力承担了，而实际上，学校主要只提供了同龄人无限竞争的小社会，与真实社会的混龄的现实相去甚远，但是家长也确实没有其他选择，而更多的家长也把基于同龄班级管理的学校当作了唯一可行的正途，完全不考虑是否有其他可能性。</p>
<p>其实，考虑学校社交意义的人还是少数，更多的家长陷入了冷战中核军备竞赛的恐惧之中，不让孩子输在起跑线上，已经不是一句口号，而是一种歇斯底里了。从幼儿园开始就要量化学了几个字，背了几首诗，会几加几，看到书店的“幼升小冲刺卷”我都感到眩晕。重点幼儿园到重点大学，是一条看不到尽头的，用试卷铺就的路，中产阶级对社会地位和金钱的焦虑，到了自己孩子身上，就是一张张试卷，一个个分数。</p>
<p>我们难以预见未来三十年后的社会是怎样的，尤其是在科技如此加速度发展的今天，又哪里来的自信与自负，像喂鸭子一样喂给孩子的东西针的能让他们以后自如的应对百年人生，在人工智能的时代里愉快的生活。</p>
<p>所有的这些问题，我都还没有确切的答案，需要深入思考与实践，可以说我也在焦虑，只是焦虑的焦点可能不太一样，我所知道只是，教育形态可能是滞后于科技与社会发展的，而好的教育应该对未来有预见性，而目前这种追逐着考试高分的教育只不过是一种一厢情愿的游戏，可能学成之时就是被淘汰之时。</p>
]]></content:encoded><category>life</category><category domain="tags">教育</category><category domain="tags">思考</category></item><item><title>选择与幸运</title><link>https://yifeitao.com/selection-and-lucky/</link><pubDate>Tue, 28 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/selection-and-lucky/</guid><description>&lt;p&gt;一生当中，一个人要做无数次的选择，其中有一些会非常重要，决定你之后的人生。所以我们常常说，选择很重要。比如在你上高中毕业上大学的时候，选择什么专业就是很重要的，而大部分也都会选择所谓的热门专业。&lt;/p&gt;
&lt;p&gt;毋庸置疑，那个选项更好，是有客观上的意义的，比如哪个职业好，哪个职业不好，是有一定的可比性的。所谓“男怕入错行，女怕嫁错郎”，在平权的意义上理解这句话，它应该是互文的，职业选择和伴侣选择对男女都很重要。&lt;/p&gt;
&lt;p&gt;然而还有另外一句话叫“三百六十行，行行出状元”。同样的职业，有人想跳出去，有人想跳进来，这样的围城效应又是为什么呢？在选择的时候，运气究竟有多重要呢？&lt;/p&gt;
&lt;p&gt;这个世界充满了误打误撞成功的故事，比如《格林童话》中的《勇敢的小裁缝》，因为这样才有戏剧性，然而，更多的时候，误打误撞更可能面对的是失败。同样一个专业，有的人是一无所知凑热闹选择的，还有人是对专业有一定的了解后审慎选择的，那么在学校学习的时候，哪个人更容易学得好呢？&lt;/p&gt;
&lt;p&gt;古话说，三思而后行，谋定而后动，凡事预则立不预则废，有备无患，同样一件事情，当一个人能对它有更多的准备时，包括心理上的，学识上的，困难就会更少，因为你已经知道事情大致时什么样的，还是做了那样的选择，自然就不算困难了，或者就算是困难，也会有更多的智慧与勇气去克服它。而没有准备的人，会整天惊呼“怎么是这样？怎么是那样？”或许也有希望得到正反馈，但是无论什么事情，都不会只有甜蜜没有痛苦，当痛苦到来时，没有准备的人就会遭到严重的打击。&lt;/p&gt;
&lt;p&gt;那些对自己的选择更清晰的人，将是意志更加坚定的人，是遇到困难能坚持不懈的人，也就是更能等到所谓的运气来临的人。&lt;/p&gt;
&lt;p&gt;所以更重要的不是什么是最好的，而是什么对你来说是最重要的。面临重要的选择时，需要仔细的分析各个方面的利弊，知道自己选择之后得到的是什么，失去的是什么，自己能成熟最坏的结果么？在做出选择后，需要做的就是为自己的选择负责。责任感来自对于选择的信心，而选择的信心不能是盲目的，而应当是理性与感性分析之后得来的。最终让你得到幸运的不是因为选择了某个客观的选项，而是因为主观上你对自己选项的坚持不懈的付出。这样的人生将会是幸运而无悔的。&lt;/p&gt;</description><content:encoded><![CDATA[<p>一生当中，一个人要做无数次的选择，其中有一些会非常重要，决定你之后的人生。所以我们常常说，选择很重要。比如在你上高中毕业上大学的时候，选择什么专业就是很重要的，而大部分也都会选择所谓的热门专业。</p>
<p>毋庸置疑，那个选项更好，是有客观上的意义的，比如哪个职业好，哪个职业不好，是有一定的可比性的。所谓“男怕入错行，女怕嫁错郎”，在平权的意义上理解这句话，它应该是互文的，职业选择和伴侣选择对男女都很重要。</p>
<p>然而还有另外一句话叫“三百六十行，行行出状元”。同样的职业，有人想跳出去，有人想跳进来，这样的围城效应又是为什么呢？在选择的时候，运气究竟有多重要呢？</p>
<p>这个世界充满了误打误撞成功的故事，比如《格林童话》中的《勇敢的小裁缝》，因为这样才有戏剧性，然而，更多的时候，误打误撞更可能面对的是失败。同样一个专业，有的人是一无所知凑热闹选择的，还有人是对专业有一定的了解后审慎选择的，那么在学校学习的时候，哪个人更容易学得好呢？</p>
<p>古话说，三思而后行，谋定而后动，凡事预则立不预则废，有备无患，同样一件事情，当一个人能对它有更多的准备时，包括心理上的，学识上的，困难就会更少，因为你已经知道事情大致时什么样的，还是做了那样的选择，自然就不算困难了，或者就算是困难，也会有更多的智慧与勇气去克服它。而没有准备的人，会整天惊呼“怎么是这样？怎么是那样？”或许也有希望得到正反馈，但是无论什么事情，都不会只有甜蜜没有痛苦，当痛苦到来时，没有准备的人就会遭到严重的打击。</p>
<p>那些对自己的选择更清晰的人，将是意志更加坚定的人，是遇到困难能坚持不懈的人，也就是更能等到所谓的运气来临的人。</p>
<p>所以更重要的不是什么是最好的，而是什么对你来说是最重要的。面临重要的选择时，需要仔细的分析各个方面的利弊，知道自己选择之后得到的是什么，失去的是什么，自己能成熟最坏的结果么？在做出选择后，需要做的就是为自己的选择负责。责任感来自对于选择的信心，而选择的信心不能是盲目的，而应当是理性与感性分析之后得来的。最终让你得到幸运的不是因为选择了某个客观的选项，而是因为主观上你对自己选项的坚持不懈的付出。这样的人生将会是幸运而无悔的。</p>
]]></content:encoded><category>methodology</category><category domain="tags">选择</category><category domain="tags">运气</category></item><item><title>记一次陀螺仪采样值滤波算法的测试过程</title><link>https://yifeitao.com/a-gyroscope-bug/</link><pubDate>Mon, 27 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/a-gyroscope-bug/</guid><description>&lt;p&gt;今天帮同事设计了一个算法，针对如下问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;有一个类似陀螺仪的硬件，定期上报角度数据（0~360°变化，可能跨越0点），但是有一个难以消除的硬件故障，会固定跳变±&lt;em&gt;err&lt;/em&gt;（比如约为5°），而两次采样值之间正常的最大角度为&lt;em&gt;θ&lt;/em&gt;（比如约为0.5°），且θ远小于δ。现在需要设计一个滤波算法消去跳变的采样点。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;算法的基本思路很简单，假设硬件开机时的基准角度是正确的，而后的采样周期开始计算一阶差分&lt;em&gt;Δ&lt;/em&gt;，如果Δ&amp;gt;θ，则修正一个-&lt;em&gt;err&lt;/em&gt;，如果Δ&amp;lt;-θ，则修正一个+&lt;em&gt;err&lt;/em&gt;。不过过零点的情况需要仔细考虑，但是也不是太复杂。&lt;/p&gt;
&lt;p&gt;我花了一个小时给同事写了一个详细的算法说明，然后他讨论过后他把算法翻译成代码，结果测试是就是不对，我也看了他写的代码，虽然不是直接用我写的公式，但看起来应该是等价的，没啥问题。快要内分泌失调的时候，另外一个同事发现代码中少写了一个else，导致某两个平行的分支变成串行了。&lt;/p&gt;
&lt;p&gt;这个事情的启示是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;低级错误和高级的算法错误一样，造成的后果都是糟糕的；&lt;/li&gt;
&lt;li&gt;有两个if并行时，最好不要偷懒不写else，不写应该100%确认理由；&lt;/li&gt;
&lt;li&gt;太疲惫时还是不要调试的好，或者找个脑子清醒的人帮忙看看，毕竟，在过去的30几个小时，我才睡了不到6个小时。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>今天帮同事设计了一个算法，针对如下问题：</p>
<blockquote>
<p>有一个类似陀螺仪的硬件，定期上报角度数据（0~360°变化，可能跨越0点），但是有一个难以消除的硬件故障，会固定跳变±<em>err</em>（比如约为5°），而两次采样值之间正常的最大角度为<em>θ</em>（比如约为0.5°），且θ远小于δ。现在需要设计一个滤波算法消去跳变的采样点。</p>
</blockquote>
<p>算法的基本思路很简单，假设硬件开机时的基准角度是正确的，而后的采样周期开始计算一阶差分<em>Δ</em>，如果Δ&gt;θ，则修正一个-<em>err</em>，如果Δ&lt;-θ，则修正一个+<em>err</em>。不过过零点的情况需要仔细考虑，但是也不是太复杂。</p>
<p>我花了一个小时给同事写了一个详细的算法说明，然后他讨论过后他把算法翻译成代码，结果测试是就是不对，我也看了他写的代码，虽然不是直接用我写的公式，但看起来应该是等价的，没啥问题。快要内分泌失调的时候，另外一个同事发现代码中少写了一个else，导致某两个平行的分支变成串行了。</p>
<p>这个事情的启示是：</p>
<ol>
<li>低级错误和高级的算法错误一样，造成的后果都是糟糕的；</li>
<li>有两个if并行时，最好不要偷懒不写else，不写应该100%确认理由；</li>
<li>太疲惫时还是不要调试的好，或者找个脑子清醒的人帮忙看看，毕竟，在过去的30几个小时，我才睡了不到6个小时。</li>
</ol>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">测试</category></item><item><title>零和全部之间</title><link>https://yifeitao.com/between-zero-and-all/</link><pubDate>Sun, 26 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/between-zero-and-all/</guid><description>&lt;p&gt;有这样一种鸡汤：要么就不做，要做就做到最好。嗯，一种精益求精的完美主义的态度，然后我们可以拿乔布斯来举例。鸡汤所说的道理，总有它很好的一面，但是问题也就在于它是一面之词。&lt;/p&gt;
&lt;p&gt;一件恐怖的事情发生了：要么就不做，要做就做到最好。因为反正做不到最好，所以我们选择不去做。如果这件事情是有最后期限的，比如上级交给的任务，那么就拖延到最后一刻才动手，如果是没有明确的最后期限的，那么就永远都不会开始。因为不去做，就还可以保留一个想象中的完美。在零和全部之间，因为无法得到全部，就选择了零。&lt;/p&gt;
&lt;p&gt;在这时候，我们似乎心安理得的忘记了一件事：在零和全部之间，正是我们需要努力争取进步的空间，它从来都不是白白得来的。所谓的完美，本来就只存在于我们的想象之中，只有努力靠近完美的过程，才是真相。&lt;/p&gt;
&lt;p&gt;所以这碗鸡汤，对做事情匆匆忙忙开始，标准很低的人是一碗好鸡汤，而对拖延着事情都不敢开始的人，则是一碗毒鸡汤了，对这种人来说，更重要的是立即开始。以软件开发为例，迭代开发是戒除不必要的完美主义的最重要的方法之一，我们不去追求一次达到所谓的完美状态，而是抓住核心问题，做出一个最小化开发时间，但是凸显核心功能的软件，然后再一次次的问：是否还需要做一定的改进。&lt;/p&gt;
&lt;p&gt;饭要一口一口的吃，路要一步一步的走。吃饱饭的方法是一口一口的吃，走到终点的方法是走出第一步，再一步一步的走。多么朴素的道理，然而我们确实常常会忘记这个道理，而在做事情时，想到可能无法吃饱饭的未来，就连第一口饭都不吃了。&lt;/p&gt;
&lt;p&gt;为着一个虚妄的完美，而放弃了在零和全部之间努力的乐趣，这是这种恐惧性拖延的最大损失。而学会放弃这种虚妄的完美，则是去真正逼近完美的第一步。&lt;/p&gt;</description><content:encoded><![CDATA[<p>有这样一种鸡汤：要么就不做，要做就做到最好。嗯，一种精益求精的完美主义的态度，然后我们可以拿乔布斯来举例。鸡汤所说的道理，总有它很好的一面，但是问题也就在于它是一面之词。</p>
<p>一件恐怖的事情发生了：要么就不做，要做就做到最好。因为反正做不到最好，所以我们选择不去做。如果这件事情是有最后期限的，比如上级交给的任务，那么就拖延到最后一刻才动手，如果是没有明确的最后期限的，那么就永远都不会开始。因为不去做，就还可以保留一个想象中的完美。在零和全部之间，因为无法得到全部，就选择了零。</p>
<p>在这时候，我们似乎心安理得的忘记了一件事：在零和全部之间，正是我们需要努力争取进步的空间，它从来都不是白白得来的。所谓的完美，本来就只存在于我们的想象之中，只有努力靠近完美的过程，才是真相。</p>
<p>所以这碗鸡汤，对做事情匆匆忙忙开始，标准很低的人是一碗好鸡汤，而对拖延着事情都不敢开始的人，则是一碗毒鸡汤了，对这种人来说，更重要的是立即开始。以软件开发为例，迭代开发是戒除不必要的完美主义的最重要的方法之一，我们不去追求一次达到所谓的完美状态，而是抓住核心问题，做出一个最小化开发时间，但是凸显核心功能的软件，然后再一次次的问：是否还需要做一定的改进。</p>
<p>饭要一口一口的吃，路要一步一步的走。吃饱饭的方法是一口一口的吃，走到终点的方法是走出第一步，再一步一步的走。多么朴素的道理，然而我们确实常常会忘记这个道理，而在做事情时，想到可能无法吃饱饭的未来，就连第一口饭都不吃了。</p>
<p>为着一个虚妄的完美，而放弃了在零和全部之间努力的乐趣，这是这种恐惧性拖延的最大损失。而学会放弃这种虚妄的完美，则是去真正逼近完美的第一步。</p>
]]></content:encoded><category>methodology</category><category domain="tags">行动</category><category domain="tags">完美主义</category></item><item><title>创意的起源</title><link>https://yifeitao.com/the-beginning-of-creativity/</link><pubDate>Sat, 25 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-beginning-of-creativity/</guid><description>&lt;p&gt;在乔布斯这个词最热的时候，我国某地领导发了宏愿，说要在当地培养一千个乔布斯，也不知道现在情况如何了。&lt;/p&gt;
&lt;p&gt;可能有人会觉得领导有点搞笑，但是我却宁愿相信领导真心实意就是那么想的：想要培养一千个有创意的人。是的，这只是有一些傲慢罢了，并不好笑，因为为人父母的大多是这样子，父母官就更当如此了。&lt;/p&gt;
&lt;p&gt;一个人开始为人父母后，即使之前他有无数的毛病，但教训起自己的孩子来总归是头头是道的，当父母教孩子不需要许可证，这是很有意思的一件事情，至少在表面上，父母都会教孩子一些正面的品质。&lt;/p&gt;
&lt;p&gt;雄心勃勃的父母总是希望控制孩子的一切，让他按照自己的想法来塑造，比如要守纪律，比如要好好学习考高分，比如要吃各种蔬菜。在当下的社会，创新能力越来越受重视，所以培养有创意的孩子就会变成很多家长的重要选项。&lt;/p&gt;
&lt;p&gt;我也想自己的孩子有创新能力，然而问题是，我觉得自己的创新能力好像也不怎么样，那么又该如何去培养孩子的创新能力呢？当然，我们可以去研究育儿法，找到一些心理学的、教育学的建议。但是我发现事情有可能比想象的要简单，也更复杂。&lt;/p&gt;
&lt;p&gt;我们家着急小朋友玩玩具只会在刚学会的时候按部就班，顺着玩具设计者的意图或是家长的示范，一旦他玩得熟练一点，就会自己发明一些奇奇怪怪的玩法，比如把摇马倒过来当滑梯，玩拼图没有图案的一面之类的，而且这些方法都是他自己捣鼓出来的。看起来，一个两岁多的小孩就是有创造力的。创意，是人脑中一些原本不相干的概念、想法、或者说设计模式，发生了联系，产生了新的模式。比如着急小朋友玩过滑梯，可能某天把摇马倒过来的时候发现也有一个相似的坡度，于是就产生了发明创造。&lt;/p&gt;
&lt;p&gt;人的大脑就目前的认识而言，神经网络是一个很好的抽象，可以说，大脑天生就是产生创意的场所，因为神经网络的连通性是可以接近无穷塑造的，这就是我想说的创意的起源。&lt;/p&gt;
&lt;p&gt;大脑是需要塑造的，这是教育的意义，然而塑造的另一面是简化甚至僵化人的神经网络，所以教育对创意很可能起到的是副作用，比如，我们可能会忍不住要去阻止一个把摇马倒过来的孩子，甚至一个把诸葛亮叫做孔明的孩子，拜标准化考试所赐，教育也可以像汽车流水线一样，生产合格的人才，但也抹杀了很多的可能性，本来创意十足的孩子变成了猜测标准答案的人，因为教育需要他们给出一个能拿到分数的答案，一个共同的答案，而不是他们发自内心的答案。&lt;/p&gt;
&lt;p&gt;培养创意很简单，可能我们少管一点孩子就好了，但是少管一点，在不输在起跑线的核竞争时代，却是最最困难的事情。&lt;/p&gt;</description><content:encoded><![CDATA[<p>在乔布斯这个词最热的时候，我国某地领导发了宏愿，说要在当地培养一千个乔布斯，也不知道现在情况如何了。</p>
<p>可能有人会觉得领导有点搞笑，但是我却宁愿相信领导真心实意就是那么想的：想要培养一千个有创意的人。是的，这只是有一些傲慢罢了，并不好笑，因为为人父母的大多是这样子，父母官就更当如此了。</p>
<p>一个人开始为人父母后，即使之前他有无数的毛病，但教训起自己的孩子来总归是头头是道的，当父母教孩子不需要许可证，这是很有意思的一件事情，至少在表面上，父母都会教孩子一些正面的品质。</p>
<p>雄心勃勃的父母总是希望控制孩子的一切，让他按照自己的想法来塑造，比如要守纪律，比如要好好学习考高分，比如要吃各种蔬菜。在当下的社会，创新能力越来越受重视，所以培养有创意的孩子就会变成很多家长的重要选项。</p>
<p>我也想自己的孩子有创新能力，然而问题是，我觉得自己的创新能力好像也不怎么样，那么又该如何去培养孩子的创新能力呢？当然，我们可以去研究育儿法，找到一些心理学的、教育学的建议。但是我发现事情有可能比想象的要简单，也更复杂。</p>
<p>我们家着急小朋友玩玩具只会在刚学会的时候按部就班，顺着玩具设计者的意图或是家长的示范，一旦他玩得熟练一点，就会自己发明一些奇奇怪怪的玩法，比如把摇马倒过来当滑梯，玩拼图没有图案的一面之类的，而且这些方法都是他自己捣鼓出来的。看起来，一个两岁多的小孩就是有创造力的。创意，是人脑中一些原本不相干的概念、想法、或者说设计模式，发生了联系，产生了新的模式。比如着急小朋友玩过滑梯，可能某天把摇马倒过来的时候发现也有一个相似的坡度，于是就产生了发明创造。</p>
<p>人的大脑就目前的认识而言，神经网络是一个很好的抽象，可以说，大脑天生就是产生创意的场所，因为神经网络的连通性是可以接近无穷塑造的，这就是我想说的创意的起源。</p>
<p>大脑是需要塑造的，这是教育的意义，然而塑造的另一面是简化甚至僵化人的神经网络，所以教育对创意很可能起到的是副作用，比如，我们可能会忍不住要去阻止一个把摇马倒过来的孩子，甚至一个把诸葛亮叫做孔明的孩子，拜标准化考试所赐，教育也可以像汽车流水线一样，生产合格的人才，但也抹杀了很多的可能性，本来创意十足的孩子变成了猜测标准答案的人，因为教育需要他们给出一个能拿到分数的答案，一个共同的答案，而不是他们发自内心的答案。</p>
<p>培养创意很简单，可能我们少管一点孩子就好了，但是少管一点，在不输在起跑线的核竞争时代，却是最最困难的事情。</p>
]]></content:encoded><category>life</category><category domain="tags">创意</category><category domain="tags">思考</category></item><item><title>马上去做</title><link>https://yifeitao.com/do-it-now/</link><pubDate>Fri, 24 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/do-it-now/</guid><description>&lt;p&gt;在很多讲拖延症，或者GTD的材料中，都会强调马上去做的重要性，这个道路如此简单，以至于我们常常都忽略了。&lt;/p&gt;
&lt;p&gt;我在上小学的时候，基本上不知道拖延症是什么东西，虽然也很贪玩，但一定会把作业做完了再完，即使是寒暑假，也能把作业分配好，每周做几页，没有积累到开学前再去集中解决的习惯。&lt;/p&gt;
&lt;p&gt;在上大学及参加工作后，曾经学习那么干脆的我，也慢慢变得会拖延起来。这个变化的原因有很多，首先长大后面对的学习和工作任务更加复杂庞大，无法像中小学时期三下五除二解决问题，如果一件事情不是一天之内就能搞定，那么马上去做就变得没有吸引力，甚至开始对未知产生恐惧，心里想着完美，却又时刻担心失败，其次长大后内心不再像小时候那么单纯，小时候一心想的是把作业做好，老师家长都满意，而我自己就可以疯狂的去玩耍了，而长大后心里想了太多的成功失败。&lt;/p&gt;
&lt;p&gt;大学生和白领是拖延症最严重的群里，可能正是因为他们面对的事情太过复杂，不容易看到立竿见影的成效，如果你是一个原始人，去干了太多看不到成效的事情，是可能空耗能量，把自己饿死的，所以拖延何尝不是对自己的一种保护。面对进化的滞后，我们需要更大的智慧与勇气去面对人生。&lt;/p&gt;
&lt;p&gt;首先需要有足够的智慧去把大事情分解成小事情，只有事情够小，我们才能满怀信心，专注当下。然后需要有足够的勇气直面失败的威胁，踏出第一步，做到了这两点，就能进入一个良性循环，马上去做，看到成效的日积月累。&lt;/p&gt;
&lt;p&gt;面对人生的规划，有太多的等待变成了永别，只有坐言起行，才能把握当下，未来的希望才真正有希望。&lt;/p&gt;</description><content:encoded><![CDATA[<p>在很多讲拖延症，或者GTD的材料中，都会强调马上去做的重要性，这个道路如此简单，以至于我们常常都忽略了。</p>
<p>我在上小学的时候，基本上不知道拖延症是什么东西，虽然也很贪玩，但一定会把作业做完了再完，即使是寒暑假，也能把作业分配好，每周做几页，没有积累到开学前再去集中解决的习惯。</p>
<p>在上大学及参加工作后，曾经学习那么干脆的我，也慢慢变得会拖延起来。这个变化的原因有很多，首先长大后面对的学习和工作任务更加复杂庞大，无法像中小学时期三下五除二解决问题，如果一件事情不是一天之内就能搞定，那么马上去做就变得没有吸引力，甚至开始对未知产生恐惧，心里想着完美，却又时刻担心失败，其次长大后内心不再像小时候那么单纯，小时候一心想的是把作业做好，老师家长都满意，而我自己就可以疯狂的去玩耍了，而长大后心里想了太多的成功失败。</p>
<p>大学生和白领是拖延症最严重的群里，可能正是因为他们面对的事情太过复杂，不容易看到立竿见影的成效，如果你是一个原始人，去干了太多看不到成效的事情，是可能空耗能量，把自己饿死的，所以拖延何尝不是对自己的一种保护。面对进化的滞后，我们需要更大的智慧与勇气去面对人生。</p>
<p>首先需要有足够的智慧去把大事情分解成小事情，只有事情够小，我们才能满怀信心，专注当下。然后需要有足够的勇气直面失败的威胁，踏出第一步，做到了这两点，就能进入一个良性循环，马上去做，看到成效的日积月累。</p>
<p>面对人生的规划，有太多的等待变成了永别，只有坐言起行，才能把握当下，未来的希望才真正有希望。</p>
]]></content:encoded><category>methodology</category><category domain="tags">行动</category><category domain="tags">效率</category></item><item><title>每天五件事</title><link>https://yifeitao.com/five-things-every-day/</link><pubDate>Thu, 23 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/five-things-every-day/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s29286834.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;这种方法论书属于一个小时就能翻完的，大部分都是老生常谈，如果能有一个触动你的技巧，而能引发你去践行，那么看书花掉的一个小时就是值得的。&lt;/p&gt;
&lt;p&gt;作者说，如果这本书只能留下一个技巧，他希望是“每天晚上规划好第二天要做的五件事情”，我觉得很有启发，如果每天晚上 都能做到，无异于一种修行，而只列五件事情，是需要问自己“什么最重要？”这个重要的问题的，我大概这样做了一个星期，有一些体会：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;每天五件事，看似很少，其实已经很多了，一般我只会把核心工作和学习任务，以及非常重要的事务性活动写进去，即使这样，也有两天没有完成，因为很多时候自己的时间会变得身不由己，五这个数字也不过是一个概数，比如周末可以少一点变成三件事情；&lt;/li&gt;
&lt;li&gt;在制定第二天计划的过程中，我有意减少了预期的工作量，尽量保证列到列表上的五件事一定能完成，我觉得这是这个方法的重点，它会不断培养你对自己精力和时间的正确认知，不好高骛远，而是脚踏实地，往往我们列的清单或者计划都因为完不成，而最终变成了自暴自弃；&lt;/li&gt;
&lt;li&gt;这是一种成功清单，在制定的时候就预期了成功，在理财书籍《小狗钱钱》中有一个重要的方法“成功日记”，就是每天晚上记下当天让你觉得成功的事情。我觉得这两者可以结合，如果制定计划的精度越来越高，等于在前一天晚上就预定了第二天大部分的成功，而到真正写成功日记的时候，只需对已经完成的计划打勾，在加上一些计划外的惊喜即可。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/lpic/s29286834.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这种方法论书属于一个小时就能翻完的，大部分都是老生常谈，如果能有一个触动你的技巧，而能引发你去践行，那么看书花掉的一个小时就是值得的。</p>
<p>作者说，如果这本书只能留下一个技巧，他希望是“每天晚上规划好第二天要做的五件事情”，我觉得很有启发，如果每天晚上 都能做到，无异于一种修行，而只列五件事情，是需要问自己“什么最重要？”这个重要的问题的，我大概这样做了一个星期，有一些体会：</p>
<ol>
<li>每天五件事，看似很少，其实已经很多了，一般我只会把核心工作和学习任务，以及非常重要的事务性活动写进去，即使这样，也有两天没有完成，因为很多时候自己的时间会变得身不由己，五这个数字也不过是一个概数，比如周末可以少一点变成三件事情；</li>
<li>在制定第二天计划的过程中，我有意减少了预期的工作量，尽量保证列到列表上的五件事一定能完成，我觉得这是这个方法的重点，它会不断培养你对自己精力和时间的正确认知，不好高骛远，而是脚踏实地，往往我们列的清单或者计划都因为完不成，而最终变成了自暴自弃；</li>
<li>这是一种成功清单，在制定的时候就预期了成功，在理财书籍《小狗钱钱》中有一个重要的方法“成功日记”，就是每天晚上记下当天让你觉得成功的事情。我觉得这两者可以结合，如果制定计划的精度越来越高，等于在前一天晚上就预定了第二天大部分的成功，而到真正写成功日记的时候，只需对已经完成的计划打勾，在加上一些计划外的惊喜即可。</li>
</ol>
]]></content:encoded><category>methodology</category><category domain="tags">时间管理</category><category domain="tags">效率</category></item><item><title>完美主义的囚笼</title><link>https://yifeitao.com/cage-of-perfectionism/</link><pubDate>Wed, 22 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/cage-of-perfectionism/</guid><description>&lt;p&gt;我做过不止一次这样的事情：因为电脑有一点点使用上的无伤大雅的问题，然后想要把这个问题修复，否则整天如芒在背，结果是把问题越搞越大，最后以重装系统告终。&lt;/p&gt;
&lt;p&gt;也干过这样的事情，家里有个什么电器坏了，或者水龙头坏了，也是如芒在背，恨不得连夜把它修好。&lt;/p&gt;
&lt;p&gt;总的来说，我希望身边的一切都在它应有的轨道正常的运作，甚至表现出完美的一面。&lt;/p&gt;
&lt;p&gt;然而一个令人沮丧的事实是：任何东西都会变得越来越糟糕，如果你不付出心力维护的话。按照熵增的原理，你的身体会越来越差，你住的房子会变得年久失修，你的房间会变的像垃圾场，而要改变这一切，需要你不断的付出心力，一旦稍有退缩，就会发生毫不留情的衰落，越是追求完美倾向的人，就越容易逼迫自己，尽管某些衰落是不可避免也无关紧要的。我们想计划得更多，想让自己的世界更符合自己的意愿，甚至想抓住每一个细节，但是世界太复杂，而人的心力有限。&lt;/p&gt;
&lt;p&gt;在心情糟糕的时候，再看到被孩子弄到一团糟的房间，就能想起来《百年孤独》中那些无可避免的衰败景象，即使是最有活力的人也无法挽救被白蚁蛀掉的房子。&lt;/p&gt;
&lt;p&gt;说了这么多丧气话，不是想投降认输，而是觉得应该分清主次，知道什么是最重要的，放弃一些控制的欲望，把自己的心力省下来，才能在重要的事情上花更多的心力，偶尔，允许混乱的出现，不论是身边的事物还是人生的计划，我们需要的是在混乱中找到重点，至于那些细节，可能是魔鬼，而不是上帝。&lt;/p&gt;
&lt;p&gt;完美主义，永远是一种诱惑，但永远成不了一种现实，追求完美也只是一种过程，而且要考虑成本，不惜一切代价的完美如果不是一种激励性口号，就是一种病。&lt;/p&gt;
&lt;p&gt;所以我决定拿着屏幕裂了一条缝的手机，用几个月再说，就当是对如芒在背的以毒攻毒吧。&lt;/p&gt;</description><content:encoded><![CDATA[<p>我做过不止一次这样的事情：因为电脑有一点点使用上的无伤大雅的问题，然后想要把这个问题修复，否则整天如芒在背，结果是把问题越搞越大，最后以重装系统告终。</p>
<p>也干过这样的事情，家里有个什么电器坏了，或者水龙头坏了，也是如芒在背，恨不得连夜把它修好。</p>
<p>总的来说，我希望身边的一切都在它应有的轨道正常的运作，甚至表现出完美的一面。</p>
<p>然而一个令人沮丧的事实是：任何东西都会变得越来越糟糕，如果你不付出心力维护的话。按照熵增的原理，你的身体会越来越差，你住的房子会变得年久失修，你的房间会变的像垃圾场，而要改变这一切，需要你不断的付出心力，一旦稍有退缩，就会发生毫不留情的衰落，越是追求完美倾向的人，就越容易逼迫自己，尽管某些衰落是不可避免也无关紧要的。我们想计划得更多，想让自己的世界更符合自己的意愿，甚至想抓住每一个细节，但是世界太复杂，而人的心力有限。</p>
<p>在心情糟糕的时候，再看到被孩子弄到一团糟的房间，就能想起来《百年孤独》中那些无可避免的衰败景象，即使是最有活力的人也无法挽救被白蚁蛀掉的房子。</p>
<p>说了这么多丧气话，不是想投降认输，而是觉得应该分清主次，知道什么是最重要的，放弃一些控制的欲望，把自己的心力省下来，才能在重要的事情上花更多的心力，偶尔，允许混乱的出现，不论是身边的事物还是人生的计划，我们需要的是在混乱中找到重点，至于那些细节，可能是魔鬼，而不是上帝。</p>
<p>完美主义，永远是一种诱惑，但永远成不了一种现实，追求完美也只是一种过程，而且要考虑成本，不惜一切代价的完美如果不是一种激励性口号，就是一种病。</p>
<p>所以我决定拿着屏幕裂了一条缝的手机，用几个月再说，就当是对如芒在背的以毒攻毒吧。</p>
]]></content:encoded><category>life</category><category domain="tags">心理</category><category domain="tags">完美主义</category></item><item><title>房价永远涨</title><link>https://yifeitao.com/fangjia-yongyuan-zhang/</link><pubDate>Tue, 21 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/fangjia-yongyuan-zhang/</guid><description>&lt;p&gt;身为低净值人群的一员，也就是穷人，我几乎不再关心房价，因为一是没钱，二是经过我们家的分析，也没有所谓的刚需。可是最近房价的话题伴随着北京房价的暴涨和限购又火爆起来了，无论是朋友圈还是知乎，甚至是雪球，都在讨论房价，讨论北京的高知人群如何被迫离开北京，讨论房价是否永远涨。&lt;/p&gt;
&lt;p&gt;决定房价的要素太多，所以预测太难，以至于很多人唱空了十几年，脸都被打肿了。我想我即使不想买房，对房市的关注可能是不能少的，因为它关系到总体经济形势，即使不买房，我也完全不希望房价崩盘，因为那样只能是一地鸡毛。&lt;/p&gt;
&lt;p&gt;中国的房价增长是伴随着经济三十多年的快速发展和城镇化，而随着中国经济体量越来越大，增速只能是越来越慢，土地财政成立的条件是：在经过土地的变相征税后，民众的收入还能不断增加。通过房贷加杠杆买房的心理预期是：房价涨、工资涨、利率不涨，其中第一个要素还只是纸上财富，第二、第三个要素的转变可能才是致命的，中产阶级的工资会不会一直涨下去，利率会不会一直这么低，都是很难回答的问题。&lt;/p&gt;
&lt;p&gt;我觉得能判断的是，利率走高的预期是越来越大的，因为全球使用低利率，高速投资可能走向了极端，需要回调，美国的川普上台，加息就是明证，以华尔街和硅谷为代表的势力，通过低利率促进了信息产业和科技进步的同时，也过多的剪了普通中产的羊毛。中国要想维持汇率，可能最终还是要走上加息的道路，否则人民币难以形成国际化的地位，人们都会愿意持有美元。&lt;/p&gt;
&lt;p&gt;如果当前和今后一段时间内要买房，应当遵循以下几个原则：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;如果是刚需自住，不太需要考虑房价，但是要考虑的是杠杆率和自己的还贷能力，在能承受的情况下就没问题，因为房价最后的涨跌都只是纸上财富，而还贷是实实在在的，而既然是刚需，一般就不会卖出，这种购买行为完全不是投资，而是负债；&lt;/li&gt;
&lt;li&gt;尽量还是不要投资房产了，如果真的看好房地产，可以投资房地产股票，比较灵活。如果资产够多，配置房产时应当考虑总价低一些的，因为太高的盘子都是玩家，总价低的才会有更多的人买，而且要适当考虑租售比。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最后，希望中国的租房市场能早日成熟，没有成熟的租赁市场的房市，必然是不正常的，房价里包含了太多的恐慌性因素。&lt;/p&gt;</description><content:encoded><![CDATA[<p>身为低净值人群的一员，也就是穷人，我几乎不再关心房价，因为一是没钱，二是经过我们家的分析，也没有所谓的刚需。可是最近房价的话题伴随着北京房价的暴涨和限购又火爆起来了，无论是朋友圈还是知乎，甚至是雪球，都在讨论房价，讨论北京的高知人群如何被迫离开北京，讨论房价是否永远涨。</p>
<p>决定房价的要素太多，所以预测太难，以至于很多人唱空了十几年，脸都被打肿了。我想我即使不想买房，对房市的关注可能是不能少的，因为它关系到总体经济形势，即使不买房，我也完全不希望房价崩盘，因为那样只能是一地鸡毛。</p>
<p>中国的房价增长是伴随着经济三十多年的快速发展和城镇化，而随着中国经济体量越来越大，增速只能是越来越慢，土地财政成立的条件是：在经过土地的变相征税后，民众的收入还能不断增加。通过房贷加杠杆买房的心理预期是：房价涨、工资涨、利率不涨，其中第一个要素还只是纸上财富，第二、第三个要素的转变可能才是致命的，中产阶级的工资会不会一直涨下去，利率会不会一直这么低，都是很难回答的问题。</p>
<p>我觉得能判断的是，利率走高的预期是越来越大的，因为全球使用低利率，高速投资可能走向了极端，需要回调，美国的川普上台，加息就是明证，以华尔街和硅谷为代表的势力，通过低利率促进了信息产业和科技进步的同时，也过多的剪了普通中产的羊毛。中国要想维持汇率，可能最终还是要走上加息的道路，否则人民币难以形成国际化的地位，人们都会愿意持有美元。</p>
<p>如果当前和今后一段时间内要买房，应当遵循以下几个原则：</p>
<ol>
<li>如果是刚需自住，不太需要考虑房价，但是要考虑的是杠杆率和自己的还贷能力，在能承受的情况下就没问题，因为房价最后的涨跌都只是纸上财富，而还贷是实实在在的，而既然是刚需，一般就不会卖出，这种购买行为完全不是投资，而是负债；</li>
<li>尽量还是不要投资房产了，如果真的看好房地产，可以投资房地产股票，比较灵活。如果资产够多，配置房产时应当考虑总价低一些的，因为太高的盘子都是玩家，总价低的才会有更多的人买，而且要适当考虑租售比。</li>
</ol>
<p>最后，希望中国的租房市场能早日成熟，没有成熟的租赁市场的房市，必然是不正常的，房价里包含了太多的恐慌性因素。</p>
]]></content:encoded><category>investment</category><category domain="tags">房价</category><category domain="tags">经济</category></item><item><title>如何才能学得慢？</title><link>https://yifeitao.com/how-to-learn-slowly/</link><pubDate>Mon, 20 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/how-to-learn-slowly/</guid><description>&lt;h2 id="为什么要学得慢"&gt;为什么要学得慢？&lt;/h2&gt;
&lt;p&gt;一般来说，人们只会研究如何学得快，我要开始研究一下如何才能学得慢。当然，本质上学得慢是为了在进入一个领域时打下坚实得基础，真正掌握基本概念，然后才能真正去应用，并最终能又快又好的学到更多的东西。最近几天在体会过程思维的时候，反思自己的学习其实有些浮躁，不禁回想自己在中小学时时如何学习的，也观察小朋友是怎么学习的。&lt;/p&gt;
&lt;p&gt;三十出头的人学习，其实理解力达到了巅峰，也明确的知道学习的意义，但是对我来说，最大的问题，可能是忘记了初心，不再一步一个脚印的稳定，而是好高骛远，不断地想要这个那个，在浮沙筑高台。所以，慢对我而言是一剂良药。以下主要针对类似一个大学课程知识量的体系化学习，零散学习也可以参考。&lt;/p&gt;
&lt;h2 id="基本方法"&gt;基本方法&lt;/h2&gt;
&lt;h3 id="1-计划减半"&gt;1 计划减半&lt;/h3&gt;
&lt;p&gt;按照自己野心勃勃的那种计划进度，把每天的计划学习量减少一半，实际实施时，必须完成计划的学习量，如果发现完成不了，则需要继续减量，当然，如果确实完成了当天的任务，还有时间，可以适当考虑再多学一点，但是一定不能将这种事当作目标。总之，计划一定要完成，计划只能少不能多。&lt;/p&gt;
&lt;h3 id="2-三到"&gt;2 三到&lt;/h3&gt;
&lt;p&gt;眼到，耳到，手到。调动各个器官学习，时刻要跟上学习材料的思路，如果发现跟不上，则需要停下来钻研演算，或者短暂休息后再继续。&lt;/p&gt;
&lt;h3 id="3-强制疑问"&gt;3 强制疑问&lt;/h3&gt;
&lt;p&gt;强制自己对学习材料提出疑问！要考察疑问的影响域，如果是基础性问题，一定要解决后再继续学习，如果可以看作黑箱的理论，要弄清楚黑箱的外部接口，或者寻找理论的直观理解。&lt;/p&gt;
&lt;h3 id="4-复习"&gt;4 复习&lt;/h3&gt;
&lt;h4 id="41-复习的时机"&gt;4.1 复习的时机&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;刚学完一个模块的材料&lt;/li&gt;
&lt;li&gt;学下一个模块时&lt;/li&gt;
&lt;li&gt;每周复习&lt;/li&gt;
&lt;li&gt;主题学完时复习&lt;/li&gt;
&lt;li&gt;主题学完一段时间后复习&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="42-复习的基本方法"&gt;4.2 复习的基本方法&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;思路走查&lt;/li&gt;
&lt;li&gt;Anki帮助记忆（要重视记忆对理解的帮助）&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="4-学以致用"&gt;4 学以致用&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;转述：口头转述、博客&lt;/li&gt;
&lt;li&gt;日常行动：成为生活的一部分&lt;/li&gt;
&lt;li&gt;练习场：类似leetcode、kaggle的平台练习&lt;/li&gt;
&lt;li&gt;创意小项目&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="多出来的时间干什么"&gt;多出来的时间干什么？&lt;/h2&gt;
&lt;p&gt;高强度的学习需要减少总学习时间，那么多出来的时间可以干什么？由于高强度时学习用眼很多，所以多出来的时间要少用眼，不要还是看书看电脑。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;睡觉：加上午睡，总睡眠时间超过8小时。&lt;/li&gt;
&lt;li&gt;锻炼身体：马拉松训练、囚徒健身训练；&lt;/li&gt;
&lt;li&gt;锻炼大脑：正念；&lt;/li&gt;
&lt;li&gt;陪伴家人、联系朋友&lt;/li&gt;
&lt;li&gt;听觉主导的学习与娱乐：听音乐、听书&lt;/li&gt;
&lt;li&gt;开脑洞&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<h2 id="为什么要学得慢">为什么要学得慢？</h2>
<p>一般来说，人们只会研究如何学得快，我要开始研究一下如何才能学得慢。当然，本质上学得慢是为了在进入一个领域时打下坚实得基础，真正掌握基本概念，然后才能真正去应用，并最终能又快又好的学到更多的东西。最近几天在体会过程思维的时候，反思自己的学习其实有些浮躁，不禁回想自己在中小学时时如何学习的，也观察小朋友是怎么学习的。</p>
<p>三十出头的人学习，其实理解力达到了巅峰，也明确的知道学习的意义，但是对我来说，最大的问题，可能是忘记了初心，不再一步一个脚印的稳定，而是好高骛远，不断地想要这个那个，在浮沙筑高台。所以，慢对我而言是一剂良药。以下主要针对类似一个大学课程知识量的体系化学习，零散学习也可以参考。</p>
<h2 id="基本方法">基本方法</h2>
<h3 id="1-计划减半">1 计划减半</h3>
<p>按照自己野心勃勃的那种计划进度，把每天的计划学习量减少一半，实际实施时，必须完成计划的学习量，如果发现完成不了，则需要继续减量，当然，如果确实完成了当天的任务，还有时间，可以适当考虑再多学一点，但是一定不能将这种事当作目标。总之，计划一定要完成，计划只能少不能多。</p>
<h3 id="2-三到">2 三到</h3>
<p>眼到，耳到，手到。调动各个器官学习，时刻要跟上学习材料的思路，如果发现跟不上，则需要停下来钻研演算，或者短暂休息后再继续。</p>
<h3 id="3-强制疑问">3 强制疑问</h3>
<p>强制自己对学习材料提出疑问！要考察疑问的影响域，如果是基础性问题，一定要解决后再继续学习，如果可以看作黑箱的理论，要弄清楚黑箱的外部接口，或者寻找理论的直观理解。</p>
<h3 id="4-复习">4 复习</h3>
<h4 id="41-复习的时机">4.1 复习的时机</h4>
<ol>
<li>刚学完一个模块的材料</li>
<li>学下一个模块时</li>
<li>每周复习</li>
<li>主题学完时复习</li>
<li>主题学完一段时间后复习</li>
</ol>
<h4 id="42-复习的基本方法">4.2 复习的基本方法</h4>
<ol>
<li>思路走查</li>
<li>Anki帮助记忆（要重视记忆对理解的帮助）</li>
</ol>
<h3 id="4-学以致用">4 学以致用</h3>
<ol>
<li>转述：口头转述、博客</li>
<li>日常行动：成为生活的一部分</li>
<li>练习场：类似leetcode、kaggle的平台练习</li>
<li>创意小项目</li>
</ol>
<h2 id="多出来的时间干什么">多出来的时间干什么？</h2>
<p>高强度的学习需要减少总学习时间，那么多出来的时间可以干什么？由于高强度时学习用眼很多，所以多出来的时间要少用眼，不要还是看书看电脑。</p>
<ol>
<li>睡觉：加上午睡，总睡眠时间超过8小时。</li>
<li>锻炼身体：马拉松训练、囚徒健身训练；</li>
<li>锻炼大脑：正念；</li>
<li>陪伴家人、联系朋友</li>
<li>听觉主导的学习与娱乐：听音乐、听书</li>
<li>开脑洞</li>
</ol>
]]></content:encoded><category>methodology</category><category domain="tags">学习</category><category domain="tags">方法论</category></item><item><title>你还有时间</title><link>https://yifeitao.com/you-still-have-time/</link><pubDate>Sun, 19 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/you-still-have-time/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2431980130.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;虽然我不是X战警或者金刚狼的粉丝，可是各种机缘巧合下也看了这个系列四五部电影，在荧幕上，金刚狼从意气风发到英雄迟暮，荧幕下，演员也渐渐老去，而看电影的我们，何尝又不是被岁月拉扯，感到时间越过越快，或许心中还有着未曾实现的梦想，而肩上的负担却越来越重，看着华为辞退中年工程师的新闻，一股焦虑的气息在心中弥漫。&lt;/p&gt;
&lt;p&gt;这部金刚狼有一种洗净铅华的感觉，连片名也很简单，就叫Logon，整个片子有向西部牛仔片致敬的成分，几乎是一部公路电影，教授、金刚狼和小女孩亡命天涯。在这个紧张刺激的过程中，唯一停下来的一晚是在农场主家，金刚狼吃完饭想急着赶路，教授想停下来住一晚，对金刚狼说了这样的话：Logon, you still have time。除了太累想歇一下，我想他也是想金刚狼感受一下家庭的温暖。&lt;/p&gt;
&lt;p&gt;在我们奔向人生的目标时，可能像金刚狼一样，不知道终点是不是真的和想象一般。如果把人生的意义都寄托在某些目标上，是不是就能得到幸福呢？如果目标实现不了怎么办？即使目标实现了，然后呢？&lt;/p&gt;
&lt;p&gt;那种停下来的感受，也应当是人生的重要组成部分。在我们火急火燎奔向目标，而开始忽略身边的、当下的事物时，我们的内心也许就开始腐化了。你仍然还有时间，无论多么着急赶路，也有时间抬头看看天空的云，安抚一下你那焦躁不安的灵魂，当你走到慢慢征途的终点时，或许最后忘不了的，正是那不经意间看到的一片云。&lt;/p&gt;
&lt;p&gt;金刚狼最后被安葬在了石头堆下，我实在不忍他再复活，因为他真的太累了，希望他临死闪过一生的画面时，除了哀伤和战斗，也会有那些温暖的瞬间。而看电影的人，还要在人生的战场上厮杀，我想做好一个战士，也想记住教授的那句话：you still have time。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/movie_poster_cover/lpst/public/p2431980130.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>虽然我不是X战警或者金刚狼的粉丝，可是各种机缘巧合下也看了这个系列四五部电影，在荧幕上，金刚狼从意气风发到英雄迟暮，荧幕下，演员也渐渐老去，而看电影的我们，何尝又不是被岁月拉扯，感到时间越过越快，或许心中还有着未曾实现的梦想，而肩上的负担却越来越重，看着华为辞退中年工程师的新闻，一股焦虑的气息在心中弥漫。</p>
<p>这部金刚狼有一种洗净铅华的感觉，连片名也很简单，就叫Logon，整个片子有向西部牛仔片致敬的成分，几乎是一部公路电影，教授、金刚狼和小女孩亡命天涯。在这个紧张刺激的过程中，唯一停下来的一晚是在农场主家，金刚狼吃完饭想急着赶路，教授想停下来住一晚，对金刚狼说了这样的话：Logon, you still have time。除了太累想歇一下，我想他也是想金刚狼感受一下家庭的温暖。</p>
<p>在我们奔向人生的目标时，可能像金刚狼一样，不知道终点是不是真的和想象一般。如果把人生的意义都寄托在某些目标上，是不是就能得到幸福呢？如果目标实现不了怎么办？即使目标实现了，然后呢？</p>
<p>那种停下来的感受，也应当是人生的重要组成部分。在我们火急火燎奔向目标，而开始忽略身边的、当下的事物时，我们的内心也许就开始腐化了。你仍然还有时间，无论多么着急赶路，也有时间抬头看看天空的云，安抚一下你那焦躁不安的灵魂，当你走到慢慢征途的终点时，或许最后忘不了的，正是那不经意间看到的一片云。</p>
<p>金刚狼最后被安葬在了石头堆下，我实在不忍他再复活，因为他真的太累了，希望他临死闪过一生的画面时，除了哀伤和战斗，也会有那些温暖的瞬间。而看电影的人，还要在人生的战场上厮杀，我想做好一个战士，也想记住教授的那句话：you still have time。</p>
]]></content:encoded><category>movie</category><category domain="tags">时间</category><category domain="tags">人生</category></item><item><title>一个office2016导致的“操作系统当前配置不能运行此程序”的错误</title><link>https://yifeitao.com/a-dllhost-error-of-office2016/</link><pubDate>Sat, 18 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/a-dllhost-error-of-office2016/</guid><description>&lt;p&gt;最近新装了一台电脑windows 10后，还没装几个程序，但是老是在系统启动的时候弹出一个“操作系统当前配置不能运行此程序”的错误窗口，虽然关闭后也不影响使用，但是心里总觉得很难受。&lt;/p&gt;
&lt;p&gt;首先看了一下任务管理器，发现是COM Surrogate 的进程错误，转到错误发生的程序，发现时SysWOW64中的dllhost，然后就找不到进一步的信息了&lt;/p&gt;
&lt;p&gt;在网上查了很多资料也没个靠谱的说法，包括微软的官方论坛给出的都是类似系统重置类的大杀器。不过有个英文的帖子在针对类似问题的时候，提到了事件查看器，我都快忘了还有这个好东西。&lt;/p&gt;
&lt;p&gt;打开事件查看器（不好找的话可以用caotana搜索），查看windows日志中的应用程序项，发现了更详细的错误信息：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#f92672"&gt;&amp;lt;Event&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;xmlns=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://schemas.microsoft.com/win/2004/08/events/event&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#f92672"&gt;&amp;lt;System&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Provider&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Name=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Application Error&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;EventID&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Qualifiers=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;1000&lt;span style="color:#f92672"&gt;&amp;lt;/EventID&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Level&amp;gt;&lt;/span&gt;2&lt;span style="color:#f92672"&gt;&amp;lt;/Level&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Task&amp;gt;&lt;/span&gt;100&lt;span style="color:#f92672"&gt;&amp;lt;/Task&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Keywords&amp;gt;&lt;/span&gt;0x80000000000000&lt;span style="color:#f92672"&gt;&amp;lt;/Keywords&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;TimeCreated&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;SystemTime=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;2017-03-18T11:57:47.860844200Z&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;EventRecordID&amp;gt;&lt;/span&gt;3278&lt;span style="color:#f92672"&gt;&amp;lt;/EventRecordID&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Channel&amp;gt;&lt;/span&gt;Application&lt;span style="color:#f92672"&gt;&amp;lt;/Channel&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Computer&amp;gt;&lt;/span&gt;DESKTOP-27TUG97&lt;span style="color:#f92672"&gt;&amp;lt;/Computer&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Security&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/System&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#f92672"&gt;&amp;lt;EventData&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;DllHost.exe&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;10.0.14393.0&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;5789917a&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;OLMAPI32.DLL&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;16.0.4266.1003&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;55ceb06d&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;c0000005&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;00142f92&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;56c&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;01d29fded6a55333&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;C:\Windows\SysWOW64\DllHost.exe&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;C:\Program Files (x86)\Microsoft Office\Root\Office16\OLMAPI32.DLL&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;ff76f0a1-b49f-46da-999a-e97f06a639cf&lt;span style="color:#f92672"&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;Data&lt;/span&gt; &lt;span style="color:#f92672"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/EventData&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/Event&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;原来是Office16的锅，然后也没再花时间研究具体的原因，把office2016修复了一下完事。&lt;/p&gt;
&lt;p&gt;这个事情的启示是，作为一个程序员，不要忘了写错误日志，也不要忘了用错误日志。&lt;/p&gt;</description><content:encoded><![CDATA[<p>最近新装了一台电脑windows 10后，还没装几个程序，但是老是在系统启动的时候弹出一个“操作系统当前配置不能运行此程序”的错误窗口，虽然关闭后也不影响使用，但是心里总觉得很难受。</p>
<p>首先看了一下任务管理器，发现是COM Surrogate 的进程错误，转到错误发生的程序，发现时SysWOW64中的dllhost，然后就找不到进一步的信息了</p>
<p>在网上查了很多资料也没个靠谱的说法，包括微软的官方论坛给出的都是类似系统重置类的大杀器。不过有个英文的帖子在针对类似问题的时候，提到了事件查看器，我都快忘了还有这个好东西。</p>
<p>打开事件查看器（不好找的话可以用caotana搜索），查看windows日志中的应用程序项，发现了更详细的错误信息：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span>- <span style="color:#f92672">&lt;Event</span> <span style="color:#a6e22e">xmlns=</span><span style="color:#e6db74">&#34;http://schemas.microsoft.com/win/2004/08/events/event&#34;</span><span style="color:#f92672">&gt;</span>
</span></span><span style="display:flex;"><span>- <span style="color:#f92672">&lt;System&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Provider</span> <span style="color:#a6e22e">Name=</span><span style="color:#e6db74">&#34;Application Error&#34;</span> <span style="color:#f92672">/&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;EventID</span> <span style="color:#a6e22e">Qualifiers=</span><span style="color:#e6db74">&#34;0&#34;</span><span style="color:#f92672">&gt;</span>1000<span style="color:#f92672">&lt;/EventID&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Level&gt;</span>2<span style="color:#f92672">&lt;/Level&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Task&gt;</span>100<span style="color:#f92672">&lt;/Task&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Keywords&gt;</span>0x80000000000000<span style="color:#f92672">&lt;/Keywords&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;TimeCreated</span> <span style="color:#a6e22e">SystemTime=</span><span style="color:#e6db74">&#34;2017-03-18T11:57:47.860844200Z&#34;</span> <span style="color:#f92672">/&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;EventRecordID&gt;</span>3278<span style="color:#f92672">&lt;/EventRecordID&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Channel&gt;</span>Application<span style="color:#f92672">&lt;/Channel&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Computer&gt;</span>DESKTOP-27TUG97<span style="color:#f92672">&lt;/Computer&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Security</span> <span style="color:#f92672">/&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;/System&gt;</span>
</span></span><span style="display:flex;"><span>- <span style="color:#f92672">&lt;EventData&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>DllHost.exe<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>10.0.14393.0<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>5789917a<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>OLMAPI32.DLL<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>16.0.4266.1003<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>55ceb06d<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>c0000005<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>00142f92<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>56c<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>01d29fded6a55333<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>C:\Windows\SysWOW64\DllHost.exe<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>C:\Program Files (x86)\Microsoft Office\Root\Office16\OLMAPI32.DLL<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data&gt;</span>ff76f0a1-b49f-46da-999a-e97f06a639cf<span style="color:#f92672">&lt;/Data&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data</span> <span style="color:#f92672">/&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;Data</span> <span style="color:#f92672">/&gt;</span> 
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;/EventData&gt;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#f92672">&lt;/Event&gt;</span></span></span></code></pre></div>
<p>原来是Office16的锅，然后也没再花时间研究具体的原因，把office2016修复了一下完事。</p>
<p>这个事情的启示是，作为一个程序员，不要忘了写错误日志，也不要忘了用错误日志。</p>
]]></content:encoded><category>geek</category><category domain="tags">技术</category><category domain="tags">问题解决</category></item><item><title>互惠原则</title><link>https://yifeitao.com/reciprocity-principle/</link><pubDate>Fri, 17 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/reciprocity-principle/</guid><description>&lt;p&gt;互惠原则是一条很重要心理学原理，用中国话说：那就是“吃了人家的嘴软，拿了人家的手短”。&lt;/p&gt;
&lt;p&gt;《影响力》这本大众心理学读物把它列为最重要的一项影响力原则。这种心理深植于人的内心，因为人的社会属性决定了，从人类原始社会甚至猿猴群体开始，只拿好处不给回报人会被族群所唾弃，互帮互助才能把大家的运气平均一下，最后都能够填饱肚子。《影响力》里面把这种潜藏很深的心理学原则，形容成一种类似条件反射的开关，其表现就是，只要别人给了你一点点表面上的好处，你出于回报的心理，就会答应他的要求，甚至这两者之间可能是相当的不对等。&lt;/p&gt;
&lt;p&gt;几乎所有的营销行为都会自觉不自觉的运用这个原理，先给你一点小恩小惠小礼品，然后让你买他的东西。比如我当初在苏州的大街上就被一个大头和尚塞了一个观音菩萨的小牌子，非说有缘要送我，在我一脸茫然的时候，再说“随喜”，于是10元大洋不知道怎么就到了他手上，等我反应过来，人都已经走远不见了。&lt;/p&gt;
&lt;p&gt;我今天看到的有趣例子是教人如何把工作向上委派给老板的，背景是领导给你安排了过多的工作，首先你可以说你希望给公司做出更大的贡献，所以很愿意多做一些工作，但是你更擅长和喜欢某某类型的工作，于是想让老板帮一个忙，能不能减轻一下另外某某类型的工作。这里面的诀窍就在于你先给老板一些恩惠（尽管是口头上的），老板此时出于互惠原则可能会很乐意帮你一个忙，减轻你的负担。&lt;/p&gt;
&lt;p&gt;互惠原则本身是人类社会赖以发展的原则之一，可能是人类进化过程中自然选择形成的一种社会化算法，但是这个算法尤其粗糙的部分，所以给了居心不良的人可趁之机。&lt;/p&gt;
&lt;p&gt;我们作为一个好人，首先是要在显式的理解这条原理后，不再被它绑架，被坏人占了便宜，当然，也可以用它来进行谈判，为自己争取合理的利益。&lt;/p&gt;</description><content:encoded><![CDATA[<p>互惠原则是一条很重要心理学原理，用中国话说：那就是“吃了人家的嘴软，拿了人家的手短”。</p>
<p>《影响力》这本大众心理学读物把它列为最重要的一项影响力原则。这种心理深植于人的内心，因为人的社会属性决定了，从人类原始社会甚至猿猴群体开始，只拿好处不给回报人会被族群所唾弃，互帮互助才能把大家的运气平均一下，最后都能够填饱肚子。《影响力》里面把这种潜藏很深的心理学原则，形容成一种类似条件反射的开关，其表现就是，只要别人给了你一点点表面上的好处，你出于回报的心理，就会答应他的要求，甚至这两者之间可能是相当的不对等。</p>
<p>几乎所有的营销行为都会自觉不自觉的运用这个原理，先给你一点小恩小惠小礼品，然后让你买他的东西。比如我当初在苏州的大街上就被一个大头和尚塞了一个观音菩萨的小牌子，非说有缘要送我，在我一脸茫然的时候，再说“随喜”，于是10元大洋不知道怎么就到了他手上，等我反应过来，人都已经走远不见了。</p>
<p>我今天看到的有趣例子是教人如何把工作向上委派给老板的，背景是领导给你安排了过多的工作，首先你可以说你希望给公司做出更大的贡献，所以很愿意多做一些工作，但是你更擅长和喜欢某某类型的工作，于是想让老板帮一个忙，能不能减轻一下另外某某类型的工作。这里面的诀窍就在于你先给老板一些恩惠（尽管是口头上的），老板此时出于互惠原则可能会很乐意帮你一个忙，减轻你的负担。</p>
<p>互惠原则本身是人类社会赖以发展的原则之一，可能是人类进化过程中自然选择形成的一种社会化算法，但是这个算法尤其粗糙的部分，所以给了居心不良的人可趁之机。</p>
<p>我们作为一个好人，首先是要在显式的理解这条原理后，不再被它绑架，被坏人占了便宜，当然，也可以用它来进行谈判，为自己争取合理的利益。</p>
]]></content:encoded><category>reading</category><category domain="tags">心理学</category><category domain="tags">社会</category></item><item><title>有什么操作</title><link>https://yifeitao.com/whats-the-operation/</link><pubDate>Thu, 16 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/whats-the-operation/</guid><description>&lt;p&gt;在雪球玩的时候，有人问我，最近有什么操作？我回答说没有。&lt;/p&gt;
&lt;p&gt;在我刚开始接触投资的时候，曾经幻想靠着自己的聪明才智和努力，最后能以此为生，但是当我学习得越来越多时，越来越发现这种想法的不现实，这样不会比任何一个挣钱的方法轻松，投资市场是一个修罗场。&lt;/p&gt;
&lt;p&gt;去年我偶然和一个同事谈到股市，他说他也在买基金，我随口问了句，期望的收益是多少，他说也不高，一年50%就好了。然后我就不知道怎么接话了。&lt;/p&gt;
&lt;p&gt;投资市场上，最不缺少的就是野心勃勃要赚大钱的人，所以才会七亏两平一赚，股票的合理的年化收益按理说应该是趋近于企业的年化收益的，长期来看，10%就是一个很不错的数据了，要想战胜市场平均水平，获得超额收益难之又难，野心勃勃的结果往往是给其他人做了提款机，或者至少是给了收佣金的券商和收税的做了提款机。&lt;/p&gt;
&lt;p&gt;所以对大部分人而言，最好的操作可能就是少操作甚至不操作，给自己一个合理的预期收益，才能在此基础上做出合理的决策。对我而言，这个目标是在抵御通胀的同时，适当增值。尽量把工作做在买入前，买看得懂的标的，尽可能长期持有，直到出现更好的标的。这是一种省心的投资方法，也不会影响正常的工作和生活。&lt;/p&gt;</description><content:encoded><![CDATA[<p>在雪球玩的时候，有人问我，最近有什么操作？我回答说没有。</p>
<p>在我刚开始接触投资的时候，曾经幻想靠着自己的聪明才智和努力，最后能以此为生，但是当我学习得越来越多时，越来越发现这种想法的不现实，这样不会比任何一个挣钱的方法轻松，投资市场是一个修罗场。</p>
<p>去年我偶然和一个同事谈到股市，他说他也在买基金，我随口问了句，期望的收益是多少，他说也不高，一年50%就好了。然后我就不知道怎么接话了。</p>
<p>投资市场上，最不缺少的就是野心勃勃要赚大钱的人，所以才会七亏两平一赚，股票的合理的年化收益按理说应该是趋近于企业的年化收益的，长期来看，10%就是一个很不错的数据了，要想战胜市场平均水平，获得超额收益难之又难，野心勃勃的结果往往是给其他人做了提款机，或者至少是给了收佣金的券商和收税的做了提款机。</p>
<p>所以对大部分人而言，最好的操作可能就是少操作甚至不操作，给自己一个合理的预期收益，才能在此基础上做出合理的决策。对我而言，这个目标是在抵御通胀的同时，适当增值。尽量把工作做在买入前，买看得懂的标的，尽可能长期持有，直到出现更好的标的。这是一种省心的投资方法，也不会影响正常的工作和生活。</p>
]]></content:encoded><category>investment</category><category domain="tags">网络</category><category domain="tags">流行语</category></item><item><title>关于成功的一条物理学原理</title><link>https://yifeitao.com/a-physical-principle-of-success/</link><pubDate>Wed, 15 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/a-physical-principle-of-success/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s29142312.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;看这本书是一个偶然的机缘，本以为是一本关于练习的心理学作品，可是读下来发现更接近是一个有三十年冥想经历的人的参禅的体悟，虽然整本书都在说练习的心态这回事，没有提到类似参禅这种带有宗教色彩的词汇。&lt;/p&gt;
&lt;p&gt;如何培养耐心、专注和自律呢？需要一种练习的心态。这种心态的关键是什么呢？作者觉得是过程导向的思维，当今世界的社会文化中，急功近利的色彩浓厚，我们都盼望着成功的一刻，达到心中理想的一刻，完美的一刻，财务自由的一刻，然后在还没达到的过程中，经历焦灼的等待状态，甚至是面对障碍时的沮丧、退缩，以至于达不到理想的目标，而万一达到了理想的目标，人生也没有因此变得幸福，无非是陷入下一个焦灼的周期。&lt;/p&gt;
&lt;p&gt;那么如何培养过程导向的思维，把关注点从未来遥不可及的目标拉回现实，踏踏实实的通过努力，一步一个脚印去实现理想呢？作者把人的心里状态分为自我和观察者两个层次，通过不断强化观察者的角色，来时刻观察到自我关注点的偏移，从而切换视角，掌握活在每一刻的当下的奥妙。作者也提及了，冥想是培养这一观察者模式的重要练习方法。&lt;/p&gt;
&lt;p&gt;作者为了说明自己的观点，在书中打了很多不错的比方，比如一粒种子从埋到土里到开花，什么时刻是完美的？一个游泳的人要如何关注当下才能到达彼岸。看完书，我也想到一个比方，我把它称为关于成功的物理学原理。&lt;/p&gt;
&lt;p&gt;在物理学中，我们知道运动是永恒的，静止是相对的，这正如我们对所谓成功的追求，事实上，成功是静止的，是相对的，而追求的过程才是运动的，永恒的，成功，是我们想象中的一个人生的状态，而实际上，最多是一个生活的快照，是一个瞬间，也正如童话中的王子和公主幸福的生活在了一起，但是那个故事中大结局的一刻不是生活的真相，真相仍然需要在全部的生活中去寻找。或者可以说，所谓成功的瞬间，也是追寻成功的过程的一瞬间，是生活的一部分，显然那么不是所谓的完美一刻，也不是终结。&lt;/p&gt;
&lt;p&gt;在看完书后，我习惯性的看了看豆瓣评论，发现一些很有意思的差评。比如有人说，这本书没有什么新的东西，不值得一看，有趣的是，作者自己也说没有提出什么新的概念，只不过是自己学习前人加上自己生活的一些体悟。也有人说，作者还是写得啰嗦，整本书的内容最多两千字就可以说清楚了。&lt;/p&gt;
&lt;p&gt;可以说，作者用一整本书300多页反思当今社会那种急于求成的心态，然而读这本书的人却不见得就不犯同样的错误，我不认为这是一本多么经典的书，但至少于我而言很有启发，作者探讨的话题，其实是从释迦摩尼的时代就开始探讨的，如何认识自我，如何认识生活，如何对待欲望与情绪，类似的概念很多，比如物我两忘、心流、正念、元认知。毕竟，对于当今的人类，大脑是最重要的器官，而如何让自己的大脑认识自己的大脑，管理自己的大脑，是每一个想追求卓越的人都值得花一辈子的时间反复思考的问题？&lt;/p&gt;
&lt;p&gt;对于这样的问题，你真的需要的是看看朋友圈的爆款文章，花五分钟时间就能学到十条人生道理么？&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/lpic/s29142312.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>看这本书是一个偶然的机缘，本以为是一本关于练习的心理学作品，可是读下来发现更接近是一个有三十年冥想经历的人的参禅的体悟，虽然整本书都在说练习的心态这回事，没有提到类似参禅这种带有宗教色彩的词汇。</p>
<p>如何培养耐心、专注和自律呢？需要一种练习的心态。这种心态的关键是什么呢？作者觉得是过程导向的思维，当今世界的社会文化中，急功近利的色彩浓厚，我们都盼望着成功的一刻，达到心中理想的一刻，完美的一刻，财务自由的一刻，然后在还没达到的过程中，经历焦灼的等待状态，甚至是面对障碍时的沮丧、退缩，以至于达不到理想的目标，而万一达到了理想的目标，人生也没有因此变得幸福，无非是陷入下一个焦灼的周期。</p>
<p>那么如何培养过程导向的思维，把关注点从未来遥不可及的目标拉回现实，踏踏实实的通过努力，一步一个脚印去实现理想呢？作者把人的心里状态分为自我和观察者两个层次，通过不断强化观察者的角色，来时刻观察到自我关注点的偏移，从而切换视角，掌握活在每一刻的当下的奥妙。作者也提及了，冥想是培养这一观察者模式的重要练习方法。</p>
<p>作者为了说明自己的观点，在书中打了很多不错的比方，比如一粒种子从埋到土里到开花，什么时刻是完美的？一个游泳的人要如何关注当下才能到达彼岸。看完书，我也想到一个比方，我把它称为关于成功的物理学原理。</p>
<p>在物理学中，我们知道运动是永恒的，静止是相对的，这正如我们对所谓成功的追求，事实上，成功是静止的，是相对的，而追求的过程才是运动的，永恒的，成功，是我们想象中的一个人生的状态，而实际上，最多是一个生活的快照，是一个瞬间，也正如童话中的王子和公主幸福的生活在了一起，但是那个故事中大结局的一刻不是生活的真相，真相仍然需要在全部的生活中去寻找。或者可以说，所谓成功的瞬间，也是追寻成功的过程的一瞬间，是生活的一部分，显然那么不是所谓的完美一刻，也不是终结。</p>
<p>在看完书后，我习惯性的看了看豆瓣评论，发现一些很有意思的差评。比如有人说，这本书没有什么新的东西，不值得一看，有趣的是，作者自己也说没有提出什么新的概念，只不过是自己学习前人加上自己生活的一些体悟。也有人说，作者还是写得啰嗦，整本书的内容最多两千字就可以说清楚了。</p>
<p>可以说，作者用一整本书300多页反思当今社会那种急于求成的心态，然而读这本书的人却不见得就不犯同样的错误，我不认为这是一本多么经典的书，但至少于我而言很有启发，作者探讨的话题，其实是从释迦摩尼的时代就开始探讨的，如何认识自我，如何认识生活，如何对待欲望与情绪，类似的概念很多，比如物我两忘、心流、正念、元认知。毕竟，对于当今的人类，大脑是最重要的器官，而如何让自己的大脑认识自己的大脑，管理自己的大脑，是每一个想追求卓越的人都值得花一辈子的时间反复思考的问题？</p>
<p>对于这样的问题，你真的需要的是看看朋友圈的爆款文章，花五分钟时间就能学到十条人生道理么？</p>
]]></content:encoded><category>reading</category><category domain="tags">物理</category><category domain="tags">成功</category></item><item><title>难受的学习</title><link>https://yifeitao.com/afflictive-learning/</link><pubDate>Tue, 14 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/afflictive-learning/</guid><description>&lt;p&gt;学习有时候是快乐的，有时候是难受的，今天再谈谈难受的学习。&lt;/p&gt;
&lt;p&gt;如果你在努力学习一些新的知识，在这个过程中一直保持着快乐的状态，没有什么时候感到难受，那么你的努力八九不离十是一种幻觉。&lt;/p&gt;
&lt;p&gt;人总是喜欢做自己擅长的事情，所谓兴趣往往就是擅长的事情的另一个表象，学习中的快乐除了精神共鸣之外，也会有“这些我都懂”的得意，问题是，如果都懂了，为什么还要继续学呢？喜欢努力的人，首先喜欢的是那种努力的感觉，而努力的感觉，从心理学上来看，甚至都不需要努力，而只需要想象自己努力去学习就能得到了。一种更苦行僧的做法是让自己一直处在一个“努力学习”的状态，不管学的东西我是否懂了，如果不懂，可以假装懂了，这种不懂装懂在自学时是最大的心理陷阱之一，所以，一般认为学习中的测试非常重要，就是为了防止自我欺骗式的学习。&lt;/p&gt;
&lt;p&gt;真正能让人在学习中进步的信号，其实是看不懂、听不懂、难受、想放弃，当我们专注于结果时，这种负面情绪就会无比强烈，为什么我看不懂，是不是我不够聪明？可能吧，确实有很多东西超出我们的能力范围，可是更常见的情况是“跳一跳，能够着”，这种负面情绪是一种讯号，一是告诉我们将要得到进步的机会，突破瓶颈，从不会到会，发现弥补自己的短板，二是告诉我们不要过分专注于最终的美好结果，而要专注于当下每一个小小的问题，“不积跬步，无以至千里”，道理简单，最需要调试好的是心理状态。&lt;/p&gt;
&lt;p&gt;每一种有深度的知识的建立，可能是很多代努力的人很多年的积累，我们要在短时间内掌握，本来就不容易，写书的人，传授知识的人，很多都是站在上帝视角的，省略的思考的过程，我们会错误的以为那些知识的得到就像书上几行文字或者一个公式那么简单。无论你的天资如何，碰到自己的天花板是迟早的事。甚至，从学会真正如何努力的角度来说，这个天花板越早到来越好。所以才会有那种笨拙而专注的小孩能大智若愚的最终成才，而有些耍小聪明的小孩却最终止步不前。&lt;/p&gt;
&lt;p&gt;面对难受的讯号，错误的做法有两种：一种是忽略它，假装让自己难受的看不懂的东西不重要，虽然有时候这种建设是正确的，但更多时候是自我欺骗；另一种是放弃，觉得自己天资不够。争取的做法则只有一种，水来土掩、兵来将挡，专找自己难受的问题反复钻研练习，找各种资料，从不同角度去考察，直到难受变成不难受，直到出现新的难受。&lt;/p&gt;
&lt;p&gt;所以说，干嘛要这么累，干嘛要这么折磨自己，那就不是本文讨论的问题了，但是总之，要想学习好，就要学会找难受。&lt;/p&gt;</description><content:encoded><![CDATA[<p>学习有时候是快乐的，有时候是难受的，今天再谈谈难受的学习。</p>
<p>如果你在努力学习一些新的知识，在这个过程中一直保持着快乐的状态，没有什么时候感到难受，那么你的努力八九不离十是一种幻觉。</p>
<p>人总是喜欢做自己擅长的事情，所谓兴趣往往就是擅长的事情的另一个表象，学习中的快乐除了精神共鸣之外，也会有“这些我都懂”的得意，问题是，如果都懂了，为什么还要继续学呢？喜欢努力的人，首先喜欢的是那种努力的感觉，而努力的感觉，从心理学上来看，甚至都不需要努力，而只需要想象自己努力去学习就能得到了。一种更苦行僧的做法是让自己一直处在一个“努力学习”的状态，不管学的东西我是否懂了，如果不懂，可以假装懂了，这种不懂装懂在自学时是最大的心理陷阱之一，所以，一般认为学习中的测试非常重要，就是为了防止自我欺骗式的学习。</p>
<p>真正能让人在学习中进步的信号，其实是看不懂、听不懂、难受、想放弃，当我们专注于结果时，这种负面情绪就会无比强烈，为什么我看不懂，是不是我不够聪明？可能吧，确实有很多东西超出我们的能力范围，可是更常见的情况是“跳一跳，能够着”，这种负面情绪是一种讯号，一是告诉我们将要得到进步的机会，突破瓶颈，从不会到会，发现弥补自己的短板，二是告诉我们不要过分专注于最终的美好结果，而要专注于当下每一个小小的问题，“不积跬步，无以至千里”，道理简单，最需要调试好的是心理状态。</p>
<p>每一种有深度的知识的建立，可能是很多代努力的人很多年的积累，我们要在短时间内掌握，本来就不容易，写书的人，传授知识的人，很多都是站在上帝视角的，省略的思考的过程，我们会错误的以为那些知识的得到就像书上几行文字或者一个公式那么简单。无论你的天资如何，碰到自己的天花板是迟早的事。甚至，从学会真正如何努力的角度来说，这个天花板越早到来越好。所以才会有那种笨拙而专注的小孩能大智若愚的最终成才，而有些耍小聪明的小孩却最终止步不前。</p>
<p>面对难受的讯号，错误的做法有两种：一种是忽略它，假装让自己难受的看不懂的东西不重要，虽然有时候这种建设是正确的，但更多时候是自我欺骗；另一种是放弃，觉得自己天资不够。争取的做法则只有一种，水来土掩、兵来将挡，专找自己难受的问题反复钻研练习，找各种资料，从不同角度去考察，直到难受变成不难受，直到出现新的难受。</p>
<p>所以说，干嘛要这么累，干嘛要这么折磨自己，那就不是本文讨论的问题了，但是总之，要想学习好，就要学会找难受。</p>
]]></content:encoded><category>methodology</category><category domain="tags">学习</category><category domain="tags">痛苦</category></item><item><title>快乐的学习</title><link>https://yifeitao.com/happy-learning/</link><pubDate>Mon, 13 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/happy-learning/</guid><description>&lt;p&gt;学习有时候是快乐的，有时候是难受的，今天先谈谈快乐的学习。&lt;/p&gt;
&lt;p&gt;学习中的快乐可能来自内心，也可能来自外界，或者说是内心和外界两者的相互作用。&lt;/p&gt;
&lt;p&gt;学习可以是不功利的，仅仅是学会一个东西就会让人感觉愉快，好奇心是自然选择赐予人类最好的礼物之一，在为疑问找到答案，为问题找到方案时，我们就会感到快乐，恍然大悟，醍醐灌顶，阿基米德Aha一刻，说的都是那种闻道之时的快乐，如果没有这种内在驱动的快乐，很难去驱动自我。&lt;/p&gt;
&lt;p&gt;可是在生物化学的角度来看，这种快乐也不过是激素作用，比如多巴胺，跟吸毒时的快感有相似之处，那么如果仅仅是为了追求快乐而求知，和吸毒的区别又在哪里呢？&lt;/p&gt;
&lt;p&gt;那么可以尝试从外界反馈来考虑，学以致用是学习的重要目的之一，通过学习我们改善了自己和他人的生活，取得了社会评价体系下的成功，这种快乐也很重要，如果学的都是无用之学，那可怜的内心快乐可能是要饿肚子而大打折扣的，也很容易陷入浅尝辄止的轻浮，从人的个体作为人类一份子的角度来看，一个人通过学习为人类的福祉做出了更多的贡献，自然是更有意义的。&lt;/p&gt;
&lt;p&gt;更有意义是否等同于快乐呢？再从生物学的角度来看的话，意义也是大脑中的一种模式，形成这种模式后，同样会在触发后产生激素作用，和吸毒时的快感还是没有实质区别。&lt;/p&gt;
&lt;p&gt;说到这里有些玄乎，学习会以各种角度来产生快乐，但是如果把学习的”意义“建立在快乐上，甚至于”意义“本身，也只是一种选择，如果从生物化学的角度找不出这种快乐与吸毒快乐的本质区别，那么这种快乐本身可能也没有必然更加高尚。&lt;/p&gt;
&lt;p&gt;我还有一个更加抽象的理解，那就是学习其实是人类的一种使命，就像我设计了一个机器学习算法，它的使命是解决一个小范围的问题，而自然选择设计出人类，设计出他们复杂的大脑和写作方式，可能是要导向一个全知的状态。&lt;/p&gt;
&lt;p&gt;当然一个具体的人可以说，我就是不想学习，也不想知道宇宙最后的秘密，我就想享受生活，这也没什么错，但是作为整体的人类，在为了更美好的生活推动科技飞速发展，可是他们真的比无知时更快乐么？&lt;/p&gt;
&lt;p&gt;话说回来，你如果选择了”朝闻道、夕死可矣“”的人生，那么内外两个层次上学习带来的快乐，都需要仔细体会，这样才能活到老学到老，学习本身不是手段，而近乎是一种目的了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>学习有时候是快乐的，有时候是难受的，今天先谈谈快乐的学习。</p>
<p>学习中的快乐可能来自内心，也可能来自外界，或者说是内心和外界两者的相互作用。</p>
<p>学习可以是不功利的，仅仅是学会一个东西就会让人感觉愉快，好奇心是自然选择赐予人类最好的礼物之一，在为疑问找到答案，为问题找到方案时，我们就会感到快乐，恍然大悟，醍醐灌顶，阿基米德Aha一刻，说的都是那种闻道之时的快乐，如果没有这种内在驱动的快乐，很难去驱动自我。</p>
<p>可是在生物化学的角度来看，这种快乐也不过是激素作用，比如多巴胺，跟吸毒时的快感有相似之处，那么如果仅仅是为了追求快乐而求知，和吸毒的区别又在哪里呢？</p>
<p>那么可以尝试从外界反馈来考虑，学以致用是学习的重要目的之一，通过学习我们改善了自己和他人的生活，取得了社会评价体系下的成功，这种快乐也很重要，如果学的都是无用之学，那可怜的内心快乐可能是要饿肚子而大打折扣的，也很容易陷入浅尝辄止的轻浮，从人的个体作为人类一份子的角度来看，一个人通过学习为人类的福祉做出了更多的贡献，自然是更有意义的。</p>
<p>更有意义是否等同于快乐呢？再从生物学的角度来看的话，意义也是大脑中的一种模式，形成这种模式后，同样会在触发后产生激素作用，和吸毒时的快感还是没有实质区别。</p>
<p>说到这里有些玄乎，学习会以各种角度来产生快乐，但是如果把学习的”意义“建立在快乐上，甚至于”意义“本身，也只是一种选择，如果从生物化学的角度找不出这种快乐与吸毒快乐的本质区别，那么这种快乐本身可能也没有必然更加高尚。</p>
<p>我还有一个更加抽象的理解，那就是学习其实是人类的一种使命，就像我设计了一个机器学习算法，它的使命是解决一个小范围的问题，而自然选择设计出人类，设计出他们复杂的大脑和写作方式，可能是要导向一个全知的状态。</p>
<p>当然一个具体的人可以说，我就是不想学习，也不想知道宇宙最后的秘密，我就想享受生活，这也没什么错，但是作为整体的人类，在为了更美好的生活推动科技飞速发展，可是他们真的比无知时更快乐么？</p>
<p>话说回来，你如果选择了”朝闻道、夕死可矣“”的人生，那么内外两个层次上学习带来的快乐，都需要仔细体会，这样才能活到老学到老，学习本身不是手段，而近乎是一种目的了。</p>
]]></content:encoded><category>methodology</category><category domain="tags">学习</category><category domain="tags">情绪</category></item><item><title>日更之苦</title><link>https://yifeitao.com/the-bitter-of-daily-post/</link><pubDate>Sun, 12 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-bitter-of-daily-post/</guid><description>&lt;p&gt;坚持日更博客两个半月了，似乎已经到了一个瓶颈期，可能积攒了几年的那些能够清晰表达的观点大多慢慢写出来了，因为总总原因，又不想对博客做任何推广，完全是一种自我修炼式的自我对话。日更慢慢变成了一种负担，变成了十二点前不得不去完成的一种承诺，不写出来如芒刺背，要去写之前让时间空转，浪费不少。&lt;/p&gt;
&lt;p&gt;今天可能是日更以来写得最水的一次了，除了想不到写什么之外，也想简单总结剖析一下，考虑接下来怎么写的问题。&lt;/p&gt;
&lt;p&gt;这些天来写的主题大概有以下几种：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;方法论，或者说心灵鸡汤，这是对自己思考的总结，也是一种自我激励；&lt;/li&gt;
&lt;li&gt;技术类文章，写得比较少，在日更的压力下，反而很难写一些需要细致的技术文章；&lt;/li&gt;
&lt;li&gt;投资类文章，包括基本情况记录和一些思考；&lt;/li&gt;
&lt;li&gt;读书笔记；&lt;/li&gt;
&lt;li&gt;其他，包括中医系列、一些奇怪的想法等等。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这种瓶颈感其实是一件好事情，输出反过来促进输入，这也是我当时想要日更的原因。我想有两件事情需要做得更好：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一是对写作话题与写作素材的积累，好的写作者不是靠灵感活的，只有在自己的思考的后台进程放足够的东西，再加上有组织的信息积累，才可能取得思考的成果，然后用文字表达出来，一个好的需要日更的作者，必然是要积累一大堆待发稿的，而不能总是期待十二点前半小时的呓语，这样也才可能有完整而有深度的东西出来；&lt;/li&gt;
&lt;li&gt;二是散发自己的想象力，认真的去学东西固然是很重要，但是想象力也同样重要，一板一眼的推导和开脑洞同样重要，之前略有这种风格的好像是写过一首诗，还构思过一种电纸书，如果把这种博客日更写作当成一种思维修炼场，那么思路就需要野一些，因为毕竟，没有人限制我写什么，甚至都没有预设的读者，没有预设的读者可能是一种劣势，它使得文字失去了着力点，但同时也能是一种优势，因为不需要讨好任何人的东西，在某些时候可能更有价值。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;接下来的一段时间，应该趁工作上事情稍有闲暇，多读书思考写作，积累至少一个星期的文章存量，解除每天要写作的焦虑，释放想象力，把瓶颈期华丽的撑过去。&lt;/p&gt;</description><content:encoded><![CDATA[<p>坚持日更博客两个半月了，似乎已经到了一个瓶颈期，可能积攒了几年的那些能够清晰表达的观点大多慢慢写出来了，因为总总原因，又不想对博客做任何推广，完全是一种自我修炼式的自我对话。日更慢慢变成了一种负担，变成了十二点前不得不去完成的一种承诺，不写出来如芒刺背，要去写之前让时间空转，浪费不少。</p>
<p>今天可能是日更以来写得最水的一次了，除了想不到写什么之外，也想简单总结剖析一下，考虑接下来怎么写的问题。</p>
<p>这些天来写的主题大概有以下几种：</p>
<ol>
<li>方法论，或者说心灵鸡汤，这是对自己思考的总结，也是一种自我激励；</li>
<li>技术类文章，写得比较少，在日更的压力下，反而很难写一些需要细致的技术文章；</li>
<li>投资类文章，包括基本情况记录和一些思考；</li>
<li>读书笔记；</li>
<li>其他，包括中医系列、一些奇怪的想法等等。</li>
</ol>
<p>这种瓶颈感其实是一件好事情，输出反过来促进输入，这也是我当时想要日更的原因。我想有两件事情需要做得更好：</p>
<ol>
<li>一是对写作话题与写作素材的积累，好的写作者不是靠灵感活的，只有在自己的思考的后台进程放足够的东西，再加上有组织的信息积累，才可能取得思考的成果，然后用文字表达出来，一个好的需要日更的作者，必然是要积累一大堆待发稿的，而不能总是期待十二点前半小时的呓语，这样也才可能有完整而有深度的东西出来；</li>
<li>二是散发自己的想象力，认真的去学东西固然是很重要，但是想象力也同样重要，一板一眼的推导和开脑洞同样重要，之前略有这种风格的好像是写过一首诗，还构思过一种电纸书，如果把这种博客日更写作当成一种思维修炼场，那么思路就需要野一些，因为毕竟，没有人限制我写什么，甚至都没有预设的读者，没有预设的读者可能是一种劣势，它使得文字失去了着力点，但同时也能是一种优势，因为不需要讨好任何人的东西，在某些时候可能更有价值。</li>
</ol>
<p>接下来的一段时间，应该趁工作上事情稍有闲暇，多读书思考写作，积累至少一个星期的文章存量，解除每天要写作的焦虑，释放想象力，把瓶颈期华丽的撑过去。</p>
]]></content:encoded><category>life</category><category domain="tags">写作</category><category domain="tags">反思</category></item><item><title>可爱的暗黑面</title><link>https://yifeitao.com/the-dark-side-of-cute/</link><pubDate>Sat, 11 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-dark-side-of-cute/</guid><description>&lt;p&gt;“可爱”这个词，一般用来形容小孩子、小猫小狗、熊猫等。&lt;/p&gt;
&lt;p&gt;以进化论的角度来看，人类的小婴儿必然是可爱的，他或她必须激起成年人的爱与保护欲，才能以孱弱的身体与一片空白的脑子生存下去，而推而广之，人类会觉得一切与小婴儿相似的事物是可爱的，比如熊猫，虽然眼睛小小的，但是两个大大的黑眼圈弥补了，所以看起来和婴儿的大眼睛有神似之处，在加上笨拙的五短身材，所以光靠卖萌就风靡世界了。&lt;/p&gt;
&lt;p&gt;当一个人说出可爱这个词语，或者心中觉得某个小孩或者某个动物可爱时，我们想到的似乎只可能是正面的情绪与思维。可是我发现可爱也有它的暗黑面。中国传统其实不说可爱，但是成年人大多觉得小孩子好玩，有逗小孩的传统，很多人看见熟人抱着一个小孩子，都会去逗一下，甚至有很多像我一样不喜欢小孩子的人，明显能看出他们是出于礼貌才这样去做。&lt;/p&gt;
&lt;p&gt;那么小孩子在被逗了以后是可爱的么？如果他或她表现出一般小孩子人兽无害的笑容或者幼稚的回应，自然你会觉得可爱，但是如果表现出成熟的应对，展现出完全独立的人格，可能你就觉得没那么可爱了。所以我想说的可爱的暗黑面，指的是可爱往往暗含着没有独立人格的宠物含义，觉得小孩子可爱，可能只是因为在智力认知上处于绝对优势，如果这个优势不明显，小孩子表现出小大人的一面，甚至自己被小孩子给碾压的时候，可爱似乎就荡然无存了。&lt;/p&gt;
&lt;p&gt;可是我见过无数的家长，把小孩子当成一个活的玩具，喜欢让小孩子在亲戚朋友面前表演，这些表演有时候甚至有一些滑稽与搞笑，小孩就像耍猴人的猴子一样，这时候，倘若让我说一句可爱，简直隐约有几分无耻的意味。&lt;/p&gt;
&lt;p&gt;把小孩子当人看，这样或许他们会变得不那么可爱，可是又有什么关系呢？如果说让小孩子背负年龄不相称的成熟，是一种穷人的孩子早当家的残忍，那么，让小孩子表演出一种可爱来，而不顾他们的真实感受与独立地位，又何尝不是一种残忍？&lt;/p&gt;</description><content:encoded><![CDATA[<p>“可爱”这个词，一般用来形容小孩子、小猫小狗、熊猫等。</p>
<p>以进化论的角度来看，人类的小婴儿必然是可爱的，他或她必须激起成年人的爱与保护欲，才能以孱弱的身体与一片空白的脑子生存下去，而推而广之，人类会觉得一切与小婴儿相似的事物是可爱的，比如熊猫，虽然眼睛小小的，但是两个大大的黑眼圈弥补了，所以看起来和婴儿的大眼睛有神似之处，在加上笨拙的五短身材，所以光靠卖萌就风靡世界了。</p>
<p>当一个人说出可爱这个词语，或者心中觉得某个小孩或者某个动物可爱时，我们想到的似乎只可能是正面的情绪与思维。可是我发现可爱也有它的暗黑面。中国传统其实不说可爱，但是成年人大多觉得小孩子好玩，有逗小孩的传统，很多人看见熟人抱着一个小孩子，都会去逗一下，甚至有很多像我一样不喜欢小孩子的人，明显能看出他们是出于礼貌才这样去做。</p>
<p>那么小孩子在被逗了以后是可爱的么？如果他或她表现出一般小孩子人兽无害的笑容或者幼稚的回应，自然你会觉得可爱，但是如果表现出成熟的应对，展现出完全独立的人格，可能你就觉得没那么可爱了。所以我想说的可爱的暗黑面，指的是可爱往往暗含着没有独立人格的宠物含义，觉得小孩子可爱，可能只是因为在智力认知上处于绝对优势，如果这个优势不明显，小孩子表现出小大人的一面，甚至自己被小孩子给碾压的时候，可爱似乎就荡然无存了。</p>
<p>可是我见过无数的家长，把小孩子当成一个活的玩具，喜欢让小孩子在亲戚朋友面前表演，这些表演有时候甚至有一些滑稽与搞笑，小孩就像耍猴人的猴子一样，这时候，倘若让我说一句可爱，简直隐约有几分无耻的意味。</p>
<p>把小孩子当人看，这样或许他们会变得不那么可爱，可是又有什么关系呢？如果说让小孩子背负年龄不相称的成熟，是一种穷人的孩子早当家的残忍，那么，让小孩子表演出一种可爱来，而不顾他们的真实感受与独立地位，又何尝不是一种残忍？</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">社会</category><category domain="tags">观察</category></item><item><title>向谁学习带孩子</title><link>https://yifeitao.com/whom-to-learn-take-care-of-child/</link><pubDate>Fri, 10 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/whom-to-learn-take-care-of-child/</guid><description>&lt;p&gt;带孩子这件事情，其实是几乎所有的高等一点的动物都要做的事情，低等动物依靠数量取胜，一次来上几万个受精卵，总有一些活下来的。高等动物则依靠对后代的照料来弥补数量的不足。&lt;/p&gt;
&lt;p&gt;所以人类在带孩子这件事情上，还是有几分本能的，然而人类的优势在于通过文化传承的如何带孩子的知识，而不是本能，甚至可以说，拥有可以传承的带孩子的知识，使的孩子的存活率不断提高，反过来压制人类多生的欲望，从各国近现代发展历史就能看出，城市化中产化伴随的是生育率的降低，甚至走向人口指数爆炸的反面——人口结构的指数老化。&lt;/p&gt;
&lt;p&gt;本能的不足，所以带孩子需要学习，尽管生孩子带孩子不需要毕业证书（结婚证，和中国特色的准生证，其实重点都不在此），如果认为也不需要学习，那么就是对人类哺育后代优势的浪费与反动。&lt;/p&gt;
&lt;p&gt;在现代科学，尤其是现代医学发展之前，带孩子学习的对象主要是以孩子的爷爷奶奶外公外婆为代表的有过经验的人，传统医学中，也会有一些经验总结和极少的理论，但大多靠的还是一辈辈人的传承。现代医学的发展，知识传播能力发展，带来了育儿知识的革命，越来越多的人不再盲从上辈人的经验，而是相信专家的知识，相信书本上的教条。这有时甚至会造成两代人的冲突，老一辈的人会说：我不也是这样把你带大了？&lt;/p&gt;
&lt;p&gt;育儿这件事情，远比数学物理复杂的是个体差异性，虽然都是人类，但出于先天基因的差异与后台环境的差异，所有的经验都无法做到放之四海而皆准，个体经验自然是作用有限，你小时候和你现在的孩子基因上有传承但也有差异，而你们所处的社会环境也发生了天翻地覆的变化。即使是有统计学意义的医学经验和分析，也只能作为参考，而不能当作教条，我们需要建立一些原则，但是没有什么原则是不能没有例外的，带孩子的过程不是一个单向的信息传递过程，而应当是一个具有反馈的闭环过程，基于孩子反应的纠偏是极其重要的，关心孩子的情绪、欲望、需求与自我价值实现，比坚守教条更加重要。&lt;/p&gt;
&lt;p&gt;所以，向孩子学习带孩子才是最重要的，而多多学习科学的方法，普遍的经验，会让你在像孩子学习时做得更好。&lt;/p&gt;</description><content:encoded><![CDATA[<p>带孩子这件事情，其实是几乎所有的高等一点的动物都要做的事情，低等动物依靠数量取胜，一次来上几万个受精卵，总有一些活下来的。高等动物则依靠对后代的照料来弥补数量的不足。</p>
<p>所以人类在带孩子这件事情上，还是有几分本能的，然而人类的优势在于通过文化传承的如何带孩子的知识，而不是本能，甚至可以说，拥有可以传承的带孩子的知识，使的孩子的存活率不断提高，反过来压制人类多生的欲望，从各国近现代发展历史就能看出，城市化中产化伴随的是生育率的降低，甚至走向人口指数爆炸的反面——人口结构的指数老化。</p>
<p>本能的不足，所以带孩子需要学习，尽管生孩子带孩子不需要毕业证书（结婚证，和中国特色的准生证，其实重点都不在此），如果认为也不需要学习，那么就是对人类哺育后代优势的浪费与反动。</p>
<p>在现代科学，尤其是现代医学发展之前，带孩子学习的对象主要是以孩子的爷爷奶奶外公外婆为代表的有过经验的人，传统医学中，也会有一些经验总结和极少的理论，但大多靠的还是一辈辈人的传承。现代医学的发展，知识传播能力发展，带来了育儿知识的革命，越来越多的人不再盲从上辈人的经验，而是相信专家的知识，相信书本上的教条。这有时甚至会造成两代人的冲突，老一辈的人会说：我不也是这样把你带大了？</p>
<p>育儿这件事情，远比数学物理复杂的是个体差异性，虽然都是人类，但出于先天基因的差异与后台环境的差异，所有的经验都无法做到放之四海而皆准，个体经验自然是作用有限，你小时候和你现在的孩子基因上有传承但也有差异，而你们所处的社会环境也发生了天翻地覆的变化。即使是有统计学意义的医学经验和分析，也只能作为参考，而不能当作教条，我们需要建立一些原则，但是没有什么原则是不能没有例外的，带孩子的过程不是一个单向的信息传递过程，而应当是一个具有反馈的闭环过程，基于孩子反应的纠偏是极其重要的，关心孩子的情绪、欲望、需求与自我价值实现，比坚守教条更加重要。</p>
<p>所以，向孩子学习带孩子才是最重要的，而多多学习科学的方法，普遍的经验，会让你在像孩子学习时做得更好。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">育儿</category><category domain="tags">学习</category></item><item><title>对妇女节中“妇女”一词的思考</title><link>https://yifeitao.com/thought-of-international-womens-day/</link><pubDate>Thu, 09 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/thought-of-international-womens-day/</guid><description>&lt;p&gt;每年的3月8日是国际劳动妇女节，它起源于美国女工争取平权的运动。妇女这一词，本来指的是14岁以上的女性，但是在中国，妇女的形象不知为何逐渐等同于已婚女性，或者是中年女性，可能因为妇这一个字，在中文中固有的含义，导致了妇女节这一内涵的混乱，妇女节想要指代除女童之外的女性的企图几乎彻底失败了，反而将3月8日固化为已婚女性乃至中年女性的节日，而其他女性不愿意被称为妇女。&lt;/p&gt;
&lt;p&gt;由于这一词义带来的混乱，所以我们可能无法去指责年轻女性和未婚女性对妇女一词的反感，然而在消费主义盛行的当下，这一混乱被放大了。在缺乏一个词统称所有的女性时，女生乃至女王等称呼出现了，然后它们的出现不但没有弥合分歧，反而带来了理念的混乱，对男女平权带来了及其恶劣的影响。&lt;/p&gt;
&lt;p&gt;女生这一词，提出来时就和妇女对立了，女生的基本意象是年轻的、不事生产的，需要男性呵护的，而妇女的意象则有几分灰头土脸，这种对立的直接表现就是3月7日被年轻人，有其是国内的高校，变成了女生节，其传统是高校男生通过各种形式，尤其是标语向女生献媚，哪些标语一般都透漏出强烈的求偶荷尔蒙信息，而私底下流传的段子，将3月7日与3月8日的差别定义为“只差一日”。在这种3月7日的意象中，女性是需要被呵护乃至被包养的，在中国男女比例失调的现实下，女性在婚姻市场中拥有较高的议价权，但是这种议价权的女高于男并不等于女权的胜利，女性往往只是卖了个好价钱，男性为此背负的“有车有房、父母双亡”的择偶标准，将女性的价值标准简单化为金钱，而完全看不到女性对自我价值实现的追求。&lt;/p&gt;
&lt;p&gt;最近几年，互联网电商崛起，将每个节日打造成购物节是他们的不懈追求，所以现在3月8日被他们称为“女王节”，这是一种精致的讨好，无论你年轻与否、已婚与否，都被女王这一词统一取代了，但是，这个世界上现存的女王没有几个了，怎么可能每个人都是女王呢？在这里，女王的意象是颐指气使的，“老公，付账！”，这或许就是电商最想要的女王形象。男性为女性付账，或许并不是什么坏事，但是如果把这种行为形象化为一种标准，则是实际上对女性的物化，她们变成了一帮只知道花钱的人，那么男性为什么要心甘情愿的为她们付账呢？在这个苍白的女王形象中，能够解读出的可能还是只有女性在婚姻市场的高议价能力了。在消费主义语境下，女性的独立、骄傲被解读为随心所欲的买买买，女性退化成了这个社会的宠物。&lt;/p&gt;
&lt;p&gt;所以我思来想去，或许只有叫女人节才能弥合这些分歧，指代到所有性别特点已经明显的女性（即儿童之外的），它的内在价值本应该是妇女节的本意：争取男女平权，女权即人权，而不是让男性带着色眯眯的有色眼镜鉴赏，让男性付账，随心所欲买买买的物化形象。&lt;/p&gt;</description><content:encoded><![CDATA[<p>每年的3月8日是国际劳动妇女节，它起源于美国女工争取平权的运动。妇女这一词，本来指的是14岁以上的女性，但是在中国，妇女的形象不知为何逐渐等同于已婚女性，或者是中年女性，可能因为妇这一个字，在中文中固有的含义，导致了妇女节这一内涵的混乱，妇女节想要指代除女童之外的女性的企图几乎彻底失败了，反而将3月8日固化为已婚女性乃至中年女性的节日，而其他女性不愿意被称为妇女。</p>
<p>由于这一词义带来的混乱，所以我们可能无法去指责年轻女性和未婚女性对妇女一词的反感，然而在消费主义盛行的当下，这一混乱被放大了。在缺乏一个词统称所有的女性时，女生乃至女王等称呼出现了，然后它们的出现不但没有弥合分歧，反而带来了理念的混乱，对男女平权带来了及其恶劣的影响。</p>
<p>女生这一词，提出来时就和妇女对立了，女生的基本意象是年轻的、不事生产的，需要男性呵护的，而妇女的意象则有几分灰头土脸，这种对立的直接表现就是3月7日被年轻人，有其是国内的高校，变成了女生节，其传统是高校男生通过各种形式，尤其是标语向女生献媚，哪些标语一般都透漏出强烈的求偶荷尔蒙信息，而私底下流传的段子，将3月7日与3月8日的差别定义为“只差一日”。在这种3月7日的意象中，女性是需要被呵护乃至被包养的，在中国男女比例失调的现实下，女性在婚姻市场中拥有较高的议价权，但是这种议价权的女高于男并不等于女权的胜利，女性往往只是卖了个好价钱，男性为此背负的“有车有房、父母双亡”的择偶标准，将女性的价值标准简单化为金钱，而完全看不到女性对自我价值实现的追求。</p>
<p>最近几年，互联网电商崛起，将每个节日打造成购物节是他们的不懈追求，所以现在3月8日被他们称为“女王节”，这是一种精致的讨好，无论你年轻与否、已婚与否，都被女王这一词统一取代了，但是，这个世界上现存的女王没有几个了，怎么可能每个人都是女王呢？在这里，女王的意象是颐指气使的，“老公，付账！”，这或许就是电商最想要的女王形象。男性为女性付账，或许并不是什么坏事，但是如果把这种行为形象化为一种标准，则是实际上对女性的物化，她们变成了一帮只知道花钱的人，那么男性为什么要心甘情愿的为她们付账呢？在这个苍白的女王形象中，能够解读出的可能还是只有女性在婚姻市场的高议价能力了。在消费主义语境下，女性的独立、骄傲被解读为随心所欲的买买买，女性退化成了这个社会的宠物。</p>
<p>所以我思来想去，或许只有叫女人节才能弥合这些分歧，指代到所有性别特点已经明显的女性（即儿童之外的），它的内在价值本应该是妇女节的本意：争取男女平权，女权即人权，而不是让男性带着色眯眯的有色眼镜鉴赏，让男性付账，随心所欲买买买的物化形象。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">社会</category><category domain="tags">语言</category></item><item><title>对碎片化时间的思考</title><link>https://yifeitao.com/thought-of-fragmentation-of-time/</link><pubDate>Wed, 08 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/thought-of-fragmentation-of-time/</guid><description>&lt;h2 id="1-为什么时间会碎片化"&gt;1 为什么时间会碎片化&lt;/h2&gt;
&lt;p&gt;首先，时间的碎片化是一种时代特征，社会越发达，人和人之间的合作就越广泛而频繁，或者说这两者是二而一的，广泛而频繁的合作带来的是不停的打断，这种打断不限于面对面的，还包括了各种现代化的通信方式，比如手机，面对这种时代带来的被动的时间碎片化，我们能做的选择比较有限，比如你想不用手机，可能需要付出一定的代价，甚至必须有一定的地位，否则别人是不会和你合作的。&lt;/p&gt;
&lt;p&gt;其次，时间的碎片化是娱乐与消费主义带来的，各种商家以及为商家打广告的专家，想破头就是为了吸引你的注意，霸占你的时间，平均几分钟就要掏出手机看一看的我们，时间的碎片化是一种在诱惑之下的主动选择，对这种碎片化，如果我们不珍视自己的注意力，任由他人收割，将严重影响工作学习效率，而且只要有网络和手机，任何时候，本来能安静下来的我们都会把时间变出碎片。&lt;/p&gt;
&lt;h2 id="2-碎片化时间的预防"&gt;2 碎片化时间的预防&lt;/h2&gt;
&lt;p&gt;碎片化时间是无法彻底消除的，但是通过一些努力，是可以减少的。首先在合作关系中，可以减少即时通信，通过email，微信等延时通信工具来沟通，甚至可以建立定期沟通机制，你需要把即时通信的必要性理性的剔除，才能防止自己的信息焦虑。&lt;/p&gt;
&lt;p&gt;其次应该尽可能的在需要长时间思考时切断干扰源，选择合适的场景，比如宿舍通常不是一个好的工作环境，智能手机装上炒股软件容易变出盯盘手，在如实的纪录观察自己的习惯后，随时可以对自己的行为进行修正。&lt;/p&gt;
&lt;h2 id="3-碎片化时间的利用"&gt;3 碎片化时间的利用&lt;/h2&gt;
&lt;p&gt;碎片化时间利用起来，积少成多，依然可以获得很大的收益。首先，应该破除碎片化时间只能做碎片化阅读或学习的误解，你完全可以找一些有深度甚至成体系的材料来学习，尽管频繁的状态切换会有代价，但是这种能力是可以通过锻炼提高的。其次，我们可以找一些连续的时间，再对碎片化时间学习的内容进行总结与复习，从而提高碎片化时间中学习的效果。&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="1-为什么时间会碎片化">1 为什么时间会碎片化</h2>
<p>首先，时间的碎片化是一种时代特征，社会越发达，人和人之间的合作就越广泛而频繁，或者说这两者是二而一的，广泛而频繁的合作带来的是不停的打断，这种打断不限于面对面的，还包括了各种现代化的通信方式，比如手机，面对这种时代带来的被动的时间碎片化，我们能做的选择比较有限，比如你想不用手机，可能需要付出一定的代价，甚至必须有一定的地位，否则别人是不会和你合作的。</p>
<p>其次，时间的碎片化是娱乐与消费主义带来的，各种商家以及为商家打广告的专家，想破头就是为了吸引你的注意，霸占你的时间，平均几分钟就要掏出手机看一看的我们，时间的碎片化是一种在诱惑之下的主动选择，对这种碎片化，如果我们不珍视自己的注意力，任由他人收割，将严重影响工作学习效率，而且只要有网络和手机，任何时候，本来能安静下来的我们都会把时间变出碎片。</p>
<h2 id="2-碎片化时间的预防">2 碎片化时间的预防</h2>
<p>碎片化时间是无法彻底消除的，但是通过一些努力，是可以减少的。首先在合作关系中，可以减少即时通信，通过email，微信等延时通信工具来沟通，甚至可以建立定期沟通机制，你需要把即时通信的必要性理性的剔除，才能防止自己的信息焦虑。</p>
<p>其次应该尽可能的在需要长时间思考时切断干扰源，选择合适的场景，比如宿舍通常不是一个好的工作环境，智能手机装上炒股软件容易变出盯盘手，在如实的纪录观察自己的习惯后，随时可以对自己的行为进行修正。</p>
<h2 id="3-碎片化时间的利用">3 碎片化时间的利用</h2>
<p>碎片化时间利用起来，积少成多，依然可以获得很大的收益。首先，应该破除碎片化时间只能做碎片化阅读或学习的误解，你完全可以找一些有深度甚至成体系的材料来学习，尽管频繁的状态切换会有代价，但是这种能力是可以通过锻炼提高的。其次，我们可以找一些连续的时间，再对碎片化时间学习的内容进行总结与复习，从而提高碎片化时间中学习的效果。</p>
]]></content:encoded><category>methodology</category><category domain="tags">时间管理</category><category domain="tags">思考</category></item><item><title>自动化恐惧</title><link>https://yifeitao.com/automation-fear/</link><pubDate>Tue, 07 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/automation-fear/</guid><description>&lt;p&gt;情景喜剧 the big bang theroy中，顶级天才科学家Sheldon围观天才科学家Leonard做实验，几分钟后说，你的工作完全可以用一个小程序替代，Leonard想了想觉得有道理，瞬间陷入了一种废物感。&lt;/p&gt;
&lt;p&gt;这种自动化还是低阶的，是由人完全指定流程的程序，还扯不上人工智能，Alphago大出风头的时候，媒体和大众狂欢了一阵，担心着自己被人工智能取代。我觉得一个更加残酷的事实可能是，很多人的工作还轮不到人工智能来取代，直接一个普通的自动化程序就能被取代了。&lt;/p&gt;
&lt;p&gt;某个程序员的女朋友在公司做财务类工作，主要工作就是整理Excel表，程序员写了一些VB脚本，把他女朋友原来要半天完成的工作缩短到了几秒，但是他女朋友不能把这种效率提升告知告知公司，因为那可能意味着失业。程序员的信条是DRY，永远不想重复自己，在这种信条下，不知不觉取代和消灭了很多工作岗位。最近去麦当劳，发现部分点餐工作已经被自助点餐机取代了。实际上，无论你在做什么工作，只要它有比较高的重复度，就很可能在不久的将来被廉价的程序取代，如果还没有被取代，可能是因为人力更便宜而已。&lt;/p&gt;
&lt;p&gt;可是依然有某些行业，因为种种原因建立了壁垒，自动化的力量渗透得很不深入，这些行业的人面对自动化，是一种双重恐惧，首先，想要自动化减轻自己的工作负担，可是恐惧于程序的死板，对人的灵活性与应变能力非常自信，死守着自己的经验不敢彻底的去教会程序，然后脑子清醒一点的，会恐惧于自己被程序取代而失业。问题是，这种被取代的痛苦迟早会来临，如果聪明一点，应该及早转型才对，在真正的人工智能降临前，程序的调教还是离不开专家。&lt;/p&gt;
&lt;p&gt;你可以躲在壁垒中，假装看不见，但是壁垒如果被外力打破时，转型不到位的人和机构会被迅速的淹没掉，到时候，等待的名号就是“被颠覆的行业”、“夕阳产业”、“降维打击”。&lt;/p&gt;</description><content:encoded><![CDATA[<p>情景喜剧 the big bang theroy中，顶级天才科学家Sheldon围观天才科学家Leonard做实验，几分钟后说，你的工作完全可以用一个小程序替代，Leonard想了想觉得有道理，瞬间陷入了一种废物感。</p>
<p>这种自动化还是低阶的，是由人完全指定流程的程序，还扯不上人工智能，Alphago大出风头的时候，媒体和大众狂欢了一阵，担心着自己被人工智能取代。我觉得一个更加残酷的事实可能是，很多人的工作还轮不到人工智能来取代，直接一个普通的自动化程序就能被取代了。</p>
<p>某个程序员的女朋友在公司做财务类工作，主要工作就是整理Excel表，程序员写了一些VB脚本，把他女朋友原来要半天完成的工作缩短到了几秒，但是他女朋友不能把这种效率提升告知告知公司，因为那可能意味着失业。程序员的信条是DRY，永远不想重复自己，在这种信条下，不知不觉取代和消灭了很多工作岗位。最近去麦当劳，发现部分点餐工作已经被自助点餐机取代了。实际上，无论你在做什么工作，只要它有比较高的重复度，就很可能在不久的将来被廉价的程序取代，如果还没有被取代，可能是因为人力更便宜而已。</p>
<p>可是依然有某些行业，因为种种原因建立了壁垒，自动化的力量渗透得很不深入，这些行业的人面对自动化，是一种双重恐惧，首先，想要自动化减轻自己的工作负担，可是恐惧于程序的死板，对人的灵活性与应变能力非常自信，死守着自己的经验不敢彻底的去教会程序，然后脑子清醒一点的，会恐惧于自己被程序取代而失业。问题是，这种被取代的痛苦迟早会来临，如果聪明一点，应该及早转型才对，在真正的人工智能降临前，程序的调教还是离不开专家。</p>
<p>你可以躲在壁垒中，假装看不见，但是壁垒如果被外力打破时，转型不到位的人和机构会被迅速的淹没掉，到时候，等待的名号就是“被颠覆的行业”、“夕阳产业”、“降维打击”。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">科技</category><category domain="tags">就业</category></item><item><title>红嘴玉技术选型</title><link>https://yifeitao.com/hongzuiyu-technology-selection/</link><pubDate>Mon, 06 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/hongzuiyu-technology-selection/</guid><description>&lt;p&gt;前几个月开发了一个算法集成软件，一定程度上是weka的C#复刻，界面技术使用了WPF。最近想做一个开源版本的，首先要给这个项目起一个名字，考虑到致敬weka，需要找一个鸟的名字，最后决定使用湖南省省鸟——红嘴玉，学名红嘴相思鸟。&lt;/p&gt;
&lt;p&gt;于是调研了一下C#的跨平台GUI库，有GTK#，xwt，eto等，决定选用xwt，因为它在各个平台可以分开编译，有较个性化的界面，而且开发很活跃，而且接下来要讨论的chart库也有xwt版本。&lt;/p&gt;
&lt;p&gt;chart库使用oxyplot，替代我之前使用的zedgraph，oxyplot有xwt版本的。&lt;/p&gt;
&lt;p&gt;数学计算库使用math.net，它能适配mono，其实accord.net也可以，但是它太庞大了，而我想插件式的自己添加机器学习算法，accord.net完全开箱即用，反而灵活性不够。&lt;/p&gt;
&lt;p&gt;基于这些选型，软件应该能在windows、mac、linux三大平台分别编译，不需要写平台特定的代码。&lt;/p&gt;
&lt;p&gt;接下来的工作安排：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;完成一个xwt版本的算法流程编辑demo；&lt;/li&gt;
&lt;li&gt;移植旧版程序到新的技术选型上，算法可以先移植几种；&lt;/li&gt;
&lt;li&gt;先开发全英文版本；&lt;/li&gt;
&lt;li&gt;接下来的计划，先等移植完成再说吧。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>前几个月开发了一个算法集成软件，一定程度上是weka的C#复刻，界面技术使用了WPF。最近想做一个开源版本的，首先要给这个项目起一个名字，考虑到致敬weka，需要找一个鸟的名字，最后决定使用湖南省省鸟——红嘴玉，学名红嘴相思鸟。</p>
<p>于是调研了一下C#的跨平台GUI库，有GTK#，xwt，eto等，决定选用xwt，因为它在各个平台可以分开编译，有较个性化的界面，而且开发很活跃，而且接下来要讨论的chart库也有xwt版本。</p>
<p>chart库使用oxyplot，替代我之前使用的zedgraph，oxyplot有xwt版本的。</p>
<p>数学计算库使用math.net，它能适配mono，其实accord.net也可以，但是它太庞大了，而我想插件式的自己添加机器学习算法，accord.net完全开箱即用，反而灵活性不够。</p>
<p>基于这些选型，软件应该能在windows、mac、linux三大平台分别编译，不需要写平台特定的代码。</p>
<p>接下来的工作安排：</p>
<ol>
<li>完成一个xwt版本的算法流程编辑demo；</li>
<li>移植旧版程序到新的技术选型上，算法可以先移植几种；</li>
<li>先开发全英文版本；</li>
<li>接下来的计划，先等移植完成再说吧。</li>
</ol>
]]></content:encoded><category>coding</category><category domain="tags">技术</category><category domain="tags">选型</category></item><item><title>分分钟教你做人</title><link>https://yifeitao.com/fenfenzhong-jiaonizuoren/</link><pubDate>Sun, 05 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/fenfenzhong-jiaonizuoren/</guid><description>&lt;p&gt;我老婆带着小朋友出门的时候，很容易受到各种陌生人的教导，可能是因为她没有我那种生人勿近的让人讨厌的气场。那种年纪很大的老太太，生龙活虎的在外面晃悠的，简直有一种人生经验要溢出来的感觉，尤其是在带孩子方面。我老婆一般赔个笑脸，但是却做不出受教了的举动来，所以每每这些老太太还得多唠叨几句，指出我老婆的种种错误，比如小朋友衣服穿少了，衣服穿多了，不应该抱他，应该要抱他，更热心一点的，如果看见小朋友身上的疹子，或者头上没掉光的胎壳，就开始推荐偏方了。&lt;/p&gt;
&lt;p&gt;其实我很能理解这种教别人做人的心理，毕竟刻意去寻找一种成就感，他们的人生经验如果放在几十年前，可能还是很有价值的，但是处在信息时代的我们，如果要学习育儿知识，只要你稍微用心一点，就能获得很多科学的，远超过具体个人经验的知识。一个残酷的事实就在于，老人的经验主义，很大程度上也被信息时代彻底颠覆了。&lt;/p&gt;
&lt;p&gt;我没法去指责这些热心要帮助我们，叫我们怎么带孩子的人，虽然从情感上，我常常觉得被冒犯，但是出于理性的同情，以及不想把自己变成一个所谓不尊重老人的人，也只能当耳旁风听听算了。反倒是孩子的爷爷奶奶外公外婆，对带孩子的方式提建议时都很谨慎，一来他们出于对我们的信任，二来他们也对信息时代个体经验的渺小有所体会。&lt;/p&gt;
&lt;p&gt;这个事情的启示除了在别人强势教你做人道理的时候，要保持理性的头脑外，更重要的或许是：自己不要教别人做人的道理，好为人师是一种罪过，犯这种毛病还是越少越好，万一非得教人一杯水，自己也得先学一桶水，至于自己的人生经验，可能真的一文不值，如果还想值几文钱，就得作出相应的成就，总而言之，在教育别人之前，还是先好好称一下自己吧。&lt;/p&gt;</description><content:encoded><![CDATA[<p>我老婆带着小朋友出门的时候，很容易受到各种陌生人的教导，可能是因为她没有我那种生人勿近的让人讨厌的气场。那种年纪很大的老太太，生龙活虎的在外面晃悠的，简直有一种人生经验要溢出来的感觉，尤其是在带孩子方面。我老婆一般赔个笑脸，但是却做不出受教了的举动来，所以每每这些老太太还得多唠叨几句，指出我老婆的种种错误，比如小朋友衣服穿少了，衣服穿多了，不应该抱他，应该要抱他，更热心一点的，如果看见小朋友身上的疹子，或者头上没掉光的胎壳，就开始推荐偏方了。</p>
<p>其实我很能理解这种教别人做人的心理，毕竟刻意去寻找一种成就感，他们的人生经验如果放在几十年前，可能还是很有价值的，但是处在信息时代的我们，如果要学习育儿知识，只要你稍微用心一点，就能获得很多科学的，远超过具体个人经验的知识。一个残酷的事实就在于，老人的经验主义，很大程度上也被信息时代彻底颠覆了。</p>
<p>我没法去指责这些热心要帮助我们，叫我们怎么带孩子的人，虽然从情感上，我常常觉得被冒犯，但是出于理性的同情，以及不想把自己变成一个所谓不尊重老人的人，也只能当耳旁风听听算了。反倒是孩子的爷爷奶奶外公外婆，对带孩子的方式提建议时都很谨慎，一来他们出于对我们的信任，二来他们也对信息时代个体经验的渺小有所体会。</p>
<p>这个事情的启示除了在别人强势教你做人道理的时候，要保持理性的头脑外，更重要的或许是：自己不要教别人做人的道理，好为人师是一种罪过，犯这种毛病还是越少越好，万一非得教人一杯水，自己也得先学一桶水，至于自己的人生经验，可能真的一文不值，如果还想值几文钱，就得作出相应的成就，总而言之，在教育别人之前，还是先好好称一下自己吧。</p>
]]></content:encoded><category>life</category><category domain="tags">社会</category><category domain="tags">网络</category></item><item><title>忌口之难</title><link>https://yifeitao.com/jikou/</link><pubDate>Sat, 04 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/jikou/</guid><description>&lt;p&gt;离开湖南老家越久，越不能吃辣了。除开单位食堂和家里的饭菜，在其他地方吃饭已经成为我的一种负担，因为在中低档的餐馆里面，川湘口味几乎是具有统治地位的，吃着麻辣口味的菜，喝着啤酒，几乎也就是我的同事朋友们请客吃饭时的常态，而我现在的肠胃面对辣椒、红油、啤酒的组合，几乎是次次悲剧，在别人觉得大快朵颐的时候，我宁愿在家吃水煮青菜。&lt;/p&gt;
&lt;p&gt;拉肚子的次数多了，每次都会事后提醒自己，吃的时候要克制，挑一些自己成熟得来得吃，也就是说要忌口，可是几年下来，还是以悲剧收场居多，在食堂和家里吃饭得时候，我控制得很好，一年下来成功减肥五公斤，轻度脂肪肝也消失了，但是在外面三五聚餐的时候，就打破了惯常的模式，一般以迟到饱撑告终。细究原因，首先在外吃饭菜品丰富，没一样尝一口就吃了不少了，二是一般刚开始没有主食吃，啤酒的清爽就着菜的麻辣，相得益彰，不管怎样也是一种简单粗暴的美味。&lt;/p&gt;
&lt;p&gt;忌口这回事，看起来简单，实际上也需要很强的自律能力，甚至可以说不能只靠自律，因为可以压抑自己的口味很困难，自控力总有用完的时候。除了自律，更多的需要对自我欲望与特点的理性分析，在点菜的时候，就要考虑自己的需求，吃的时候要提醒自己不要来者不拒，应该只吃自己能吃的，吃进去的种类不宜太杂，就像林语堂吃东西，开始上来多道菜都不动筷子，只有自己最爱的菜上来时，才大快朵颐，这才是懂得生活的人，克制可以带来更大的享受。&lt;/p&gt;
&lt;p&gt;说起来我每到聚餐都会忘记忌口，可能也还是因为最近几年在外吃饭太少，当环境突然变化时，不能很好的适应，没有形成一种生活方式，而需要更多的主动的自我约束而没有养成下意识的习惯。&lt;/p&gt;
&lt;p&gt;做人想要轻松一点，不时刻动用自己的自控力，首先要选择适合自己的环境，让适应变出一种习惯，但是环境的急剧变化又是人生必须经常面对的常态，所以应对变化时，需要把脑子的自动导航切换成主动的人工导航，带着脑子生活，面对复杂的世界，这样或许会累一些，但是人生不就是这样嘛，宁可清醒而痛苦的活着，也不要做一头快乐的猪。&lt;/p&gt;</description><content:encoded><![CDATA[<p>离开湖南老家越久，越不能吃辣了。除开单位食堂和家里的饭菜，在其他地方吃饭已经成为我的一种负担，因为在中低档的餐馆里面，川湘口味几乎是具有统治地位的，吃着麻辣口味的菜，喝着啤酒，几乎也就是我的同事朋友们请客吃饭时的常态，而我现在的肠胃面对辣椒、红油、啤酒的组合，几乎是次次悲剧，在别人觉得大快朵颐的时候，我宁愿在家吃水煮青菜。</p>
<p>拉肚子的次数多了，每次都会事后提醒自己，吃的时候要克制，挑一些自己成熟得来得吃，也就是说要忌口，可是几年下来，还是以悲剧收场居多，在食堂和家里吃饭得时候，我控制得很好，一年下来成功减肥五公斤，轻度脂肪肝也消失了，但是在外面三五聚餐的时候，就打破了惯常的模式，一般以迟到饱撑告终。细究原因，首先在外吃饭菜品丰富，没一样尝一口就吃了不少了，二是一般刚开始没有主食吃，啤酒的清爽就着菜的麻辣，相得益彰，不管怎样也是一种简单粗暴的美味。</p>
<p>忌口这回事，看起来简单，实际上也需要很强的自律能力，甚至可以说不能只靠自律，因为可以压抑自己的口味很困难，自控力总有用完的时候。除了自律，更多的需要对自我欲望与特点的理性分析，在点菜的时候，就要考虑自己的需求，吃的时候要提醒自己不要来者不拒，应该只吃自己能吃的，吃进去的种类不宜太杂，就像林语堂吃东西，开始上来多道菜都不动筷子，只有自己最爱的菜上来时，才大快朵颐，这才是懂得生活的人，克制可以带来更大的享受。</p>
<p>说起来我每到聚餐都会忘记忌口，可能也还是因为最近几年在外吃饭太少，当环境突然变化时，不能很好的适应，没有形成一种生活方式，而需要更多的主动的自我约束而没有养成下意识的习惯。</p>
<p>做人想要轻松一点，不时刻动用自己的自控力，首先要选择适合自己的环境，让适应变出一种习惯，但是环境的急剧变化又是人生必须经常面对的常态，所以应对变化时，需要把脑子的自动导航切换成主动的人工导航，带着脑子生活，面对复杂的世界，这样或许会累一些，但是人生不就是这样嘛，宁可清醒而痛苦的活着，也不要做一头快乐的猪。</p>
]]></content:encoded><category>life</category><category domain="tags">健康</category><category domain="tags">饮食</category></item><item><title>关闭窗口</title><link>https://yifeitao.com/close-the-window/</link><pubDate>Fri, 03 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/close-the-window/</guid><description>&lt;p&gt;我们团队在开发一个算法集成软件的时候，某个成员开发了很多算法，相应的有很多算法的配置界面，一般按照惯例，都会在界面上有两个按钮，确定和取消，问题是，这位同学设计的确定按钮，在点击后没有任何反应，从内部逻辑上看，点击确定后，就按照其他控件的值做了相应的内部设置，一般来说，这时候如果没有任何错误，窗口关闭即可，用户知道自己成功完成了设置，但是没有任何反应，会让用户感到疑惑，到底刚才的设置成功了没，甚至怀疑软件是否假死了。&lt;/p&gt;
&lt;p&gt;这自然是一个相当简单的问题，似乎都不值得拿出来一提，这位同学也是个高才生，研究生阶段研究的是密码学，对算法相当有研究，这个窗口未关闭的问题我给提出了两次，但都没有引起他的重视，今天这个问题又被其他人提出来了，他当时还是不以为然，事后我给他分析了一番，他才觉得这个事情有它内在的重要性。&lt;/p&gt;
&lt;p&gt;这么简单的一个事，为什么他会做不好的，问题就在于这件事情太简单了，他宁愿去花更多的精力去优化一个算法，也不愿意去写一行代码把窗口关闭掉，这首先是一个站位问题，如果始终站在研究者的角度，就只会去关心一些技术问题，而忽略掉所有的非技术性问题，但现实世界中非技术问题同样重要，这就是为什么苹果公司在很多领域能胜过微软的原因。核心技术固然重要，用户体验也不可忽视，要站在用户的角度去考虑问题，这样才不会出现技术人员的傲慢。其次，这是一个性价比的问题，花很少的精力，就能显著提高软件的可用性，随手就能改的事情，在优先级里面是可以排到最高级的，虽然它可能并没有那么绝对重用，但是性价比却是最高的，这个世界的商品有它的核心价值，但是也免不了有包装，有推销，我不觉得光靠包装和推销可以变出好的产品出来，但是终归好的产品也是需要包装和推销的。&lt;/p&gt;
&lt;p&gt;总而言之，我们有必要收起技术人员的傲慢，把该关闭的窗口都关闭了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>我们团队在开发一个算法集成软件的时候，某个成员开发了很多算法，相应的有很多算法的配置界面，一般按照惯例，都会在界面上有两个按钮，确定和取消，问题是，这位同学设计的确定按钮，在点击后没有任何反应，从内部逻辑上看，点击确定后，就按照其他控件的值做了相应的内部设置，一般来说，这时候如果没有任何错误，窗口关闭即可，用户知道自己成功完成了设置，但是没有任何反应，会让用户感到疑惑，到底刚才的设置成功了没，甚至怀疑软件是否假死了。</p>
<p>这自然是一个相当简单的问题，似乎都不值得拿出来一提，这位同学也是个高才生，研究生阶段研究的是密码学，对算法相当有研究，这个窗口未关闭的问题我给提出了两次，但都没有引起他的重视，今天这个问题又被其他人提出来了，他当时还是不以为然，事后我给他分析了一番，他才觉得这个事情有它内在的重要性。</p>
<p>这么简单的一个事，为什么他会做不好的，问题就在于这件事情太简单了，他宁愿去花更多的精力去优化一个算法，也不愿意去写一行代码把窗口关闭掉，这首先是一个站位问题，如果始终站在研究者的角度，就只会去关心一些技术问题，而忽略掉所有的非技术性问题，但现实世界中非技术问题同样重要，这就是为什么苹果公司在很多领域能胜过微软的原因。核心技术固然重要，用户体验也不可忽视，要站在用户的角度去考虑问题，这样才不会出现技术人员的傲慢。其次，这是一个性价比的问题，花很少的精力，就能显著提高软件的可用性，随手就能改的事情，在优先级里面是可以排到最高级的，虽然它可能并没有那么绝对重用，但是性价比却是最高的，这个世界的商品有它的核心价值，但是也免不了有包装，有推销，我不觉得光靠包装和推销可以变出好的产品出来，但是终归好的产品也是需要包装和推销的。</p>
<p>总而言之，我们有必要收起技术人员的傲慢，把该关闭的窗口都关闭了。</p>
]]></content:encoded><category>coding</category><category domain="tags">效率</category><category domain="tags">专注</category></item><item><title>油与火</title><link>https://yifeitao.com/oil-and-fire/</link><pubDate>Thu, 02 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/oil-and-fire/</guid><description>&lt;p&gt;你是油&lt;/p&gt;
&lt;p&gt;一点就着的汽油&lt;/p&gt;
&lt;p&gt;散发着迷人的香味&lt;/p&gt;
&lt;p&gt;你一点着就成了火&lt;/p&gt;
&lt;p&gt;散发着迷人的温度&lt;/p&gt;
&lt;p&gt;有人举着你&lt;/p&gt;
&lt;p&gt;你就成了火把&lt;/p&gt;
&lt;p&gt;火把拿来照明&lt;/p&gt;
&lt;p&gt;你就成了白炽灯&lt;/p&gt;
&lt;p&gt;灯拿来招虫&lt;/p&gt;
&lt;p&gt;你就成了灭蚊灯&lt;/p&gt;
&lt;p&gt;有人把你扔向汽车&lt;/p&gt;
&lt;p&gt;你就成了汽油弹&lt;/p&gt;
&lt;p&gt;你烧的是敌国出产的车&lt;/p&gt;
&lt;p&gt;你就成了爱国的油&lt;/p&gt;
&lt;p&gt;爱国的火&lt;/p&gt;
&lt;p&gt;爱国的白炽灯&lt;/p&gt;
&lt;p&gt;爱国的灭蚊灯&lt;/p&gt;
&lt;p&gt;爱国的汽油弹&lt;/p&gt;
&lt;p&gt;你浑身散发着迷人的爱国主义的味道&lt;/p&gt;
&lt;p&gt;变成了一道爱国主义的烟&lt;/p&gt;
&lt;p&gt;成为爱国主义的PM2.5&lt;/p&gt;
&lt;p&gt;被爱国者吸进他们的肺&lt;/p&gt;
&lt;p&gt;当他们死去&lt;/p&gt;
&lt;p&gt;你成为爱国主义的骨灰&lt;/p&gt;
&lt;p&gt;埋进你最爱的土地&lt;/p&gt;
&lt;p&gt;几十亿年后，再变成石油&lt;/p&gt;
&lt;p&gt;到那时，如果记得&lt;/p&gt;
&lt;p&gt;你还是爱国的油&lt;/p&gt;</description><content:encoded><![CDATA[<p>你是油</p>
<p>一点就着的汽油</p>
<p>散发着迷人的香味</p>
<p>你一点着就成了火</p>
<p>散发着迷人的温度</p>
<p>有人举着你</p>
<p>你就成了火把</p>
<p>火把拿来照明</p>
<p>你就成了白炽灯</p>
<p>灯拿来招虫</p>
<p>你就成了灭蚊灯</p>
<p>有人把你扔向汽车</p>
<p>你就成了汽油弹</p>
<p>你烧的是敌国出产的车</p>
<p>你就成了爱国的油</p>
<p>爱国的火</p>
<p>爱国的白炽灯</p>
<p>爱国的灭蚊灯</p>
<p>爱国的汽油弹</p>
<p>你浑身散发着迷人的爱国主义的味道</p>
<p>变成了一道爱国主义的烟</p>
<p>成为爱国主义的PM2.5</p>
<p>被爱国者吸进他们的肺</p>
<p>当他们死去</p>
<p>你成为爱国主义的骨灰</p>
<p>埋进你最爱的土地</p>
<p>几十亿年后，再变成石油</p>
<p>到那时，如果记得</p>
<p>你还是爱国的油</p>
]]></content:encoded><category>life</category><category domain="tags">思考</category><category domain="tags">比喻</category></item><item><title>机器学习与待定系数法</title><link>https://yifeitao.com/machine-learning-and-method-of-undermined-coefficients/</link><pubDate>Wed, 01 Mar 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/machine-learning-and-method-of-undermined-coefficients/</guid><description>&lt;p&gt;注意，这只是为了加深理解而想到的一个类比，既然是类比，就有它不确切的地方。&lt;/p&gt;
&lt;p&gt;在初等数学中，我们就开始使用待定系数法，比如我们知道平面上三个点A、B、C的坐标，相求它们的外接圆方程，由于我们知道这个方程的基本形式，只是有一些系数待定（圆心坐标a、b和半径r），所以用待定系数构建方程，将A、B、C坐标值带入方程可以得到关于待定系数的三元一次方程组，进而得到三个参数。&lt;/p&gt;
&lt;p&gt;在这里，我们首先假设了函数的形态，它包含了部分待定系数，然后通过数据带入函数，求解得到待定系数。机器学习，尤其是有监督学习，跟这个过程有相似之处。&lt;/p&gt;
&lt;p&gt;在机器学习时，我们首先假设一个分类或回归模型，这个模型包含了一些待定的系数，比如对于Logistics回归，权重是待定的，对于一定结构的神经网络，权重是待定的，然后我们输入数据，让算法学习的过程就相当于求解待定系数的过程。&lt;/p&gt;
&lt;p&gt;跟初等数学中待定系数法不同的是，机器学习的没有绝对正确的一个函数，而只是一个针对某个指标优化的函数，模型如果针对训练的数据绝对正确，会出现过拟合现象。机器学习在模型的假设空间里找一组“好”的系数，而初等数学是找一组正确的系数。&lt;/p&gt;
&lt;p&gt;只管的看，待定的系数越多，需要的数据也就越多，所有复杂的神经网络能较好的应对大数据样本的学习。而一个模型如果待定的系数很少，给它过多的数据学习并没有多大的作用，就像求一个圆的方程，三个数据点就够了，再多也是浪费。&lt;/p&gt;</description><content:encoded><![CDATA[<p>注意，这只是为了加深理解而想到的一个类比，既然是类比，就有它不确切的地方。</p>
<p>在初等数学中，我们就开始使用待定系数法，比如我们知道平面上三个点A、B、C的坐标，相求它们的外接圆方程，由于我们知道这个方程的基本形式，只是有一些系数待定（圆心坐标a、b和半径r），所以用待定系数构建方程，将A、B、C坐标值带入方程可以得到关于待定系数的三元一次方程组，进而得到三个参数。</p>
<p>在这里，我们首先假设了函数的形态，它包含了部分待定系数，然后通过数据带入函数，求解得到待定系数。机器学习，尤其是有监督学习，跟这个过程有相似之处。</p>
<p>在机器学习时，我们首先假设一个分类或回归模型，这个模型包含了一些待定的系数，比如对于Logistics回归，权重是待定的，对于一定结构的神经网络，权重是待定的，然后我们输入数据，让算法学习的过程就相当于求解待定系数的过程。</p>
<p>跟初等数学中待定系数法不同的是，机器学习的没有绝对正确的一个函数，而只是一个针对某个指标优化的函数，模型如果针对训练的数据绝对正确，会出现过拟合现象。机器学习在模型的假设空间里找一组“好”的系数，而初等数学是找一组正确的系数。</p>
<p>只管的看，待定的系数越多，需要的数据也就越多，所有复杂的神经网络能较好的应对大数据样本的学习。而一个模型如果待定的系数很少，给它过多的数据学习并没有多大的作用，就像求一个圆的方程，三个数据点就够了，再多也是浪费。</p>
]]></content:encoded><category>coding</category><category domain="tags">机器学习</category><category domain="tags">数学</category></item><item><title>努力这种幻觉</title><link>https://yifeitao.com/the-illusion-of-working-hard/</link><pubDate>Tue, 28 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-illusion-of-working-hard/</guid><description>&lt;p&gt;我在这边厢穷则思变的时候，网上满眼看到的都是华为辞退三十多岁工程师的新闻，简直是刺瞎我的眼睛，让我这三十出头的还想焕发人生第二春的人情何以堪。&lt;/p&gt;
&lt;p&gt;这个世界的残酷之处在于，对于我这种无产阶级，唯有努力是我唯一可以依靠的东西，但是努力就能带来美好生活吗？那恐怕只是一种幻觉。&lt;/p&gt;
&lt;p&gt;世界上所有的党派和政治思潮，几乎都在试图回答个人与集体的关系，公平与效率的关系，而在中国，从注重公平的幻觉中醒过来，现在似乎又陷入了一个追求效率的幻觉。&lt;/p&gt;
&lt;p&gt;一个人生活水平低，都是因为他不够努力，尤其是那些名牌大学毕业的，自诩为精英的，因为互联网等领域蓬勃发展而获得了较好的收入的人，大多是这样想问题的，对底层人民的恶意简直是赤裸裸的。&lt;/p&gt;
&lt;p&gt;对一个个体而言，尤其是对自己而言，努力是无产阶级唯一的可以依靠的，但是对群体而言，对他人而言，只用努力这个标准去衡量，会产生“你穷你该死”的思想，而历史告诉我们的是，如果穷的无处可逃，富的大概也就无处可逃了。所以我们每个人在追求自我的努力的时候，不得不去思考公平的问题，基本福利的问题，而在没有基本福利的时候讨论福利多寡，是一件奢侈的事情。&lt;/p&gt;
&lt;p&gt;而不想把努力变成一种幻觉，最应该注意的或许是你和雇主的关系，对雇主而言，你始终只是个工具，你可以去要求他给基本保障，要求他有温情，但始终要有被当作工具，被兔死狗烹，被一脚踢开的觉悟，只有这样，才能置之死地而后生。我们为了雇主出卖自己的时间，完成雇主的要求，在生产环节中当好自己的角色，这是这个交换关系的根本，但是，如果同时你在工作中没有得到任何成长，那么被人取代是迟早的事。得不到成长可能有两个原因：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;工作本身有问题，有一些工作在学会后会陷入简单重复，看起来是脑力劳动工作的，也可能是脑力劳动中的体力劳动，这种工作不能长干；&lt;/li&gt;
&lt;li&gt;缺乏在工作中从成长的能力，我们有作为工具的自觉，但并不代表在工作时以交差为最高目标，这样不去珍惜工作带来的潜在的挑战，即使工作时间再长，获得的经验也会很有限，而现实中，确实有很多人陷入了这种麻木工作状态。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;所有的工作选择，都应该在待遇和成长性两个方面考虑。努力应该是努力提升自我，而不仅仅是努力的重复自我，或者说，不但要有战术上的努力，更要有战略上的努力。&lt;/p&gt;
&lt;p&gt;如果，五年工作就有五年经验，甚至十年经验，而不是只有一年经验，那么自然也能在雇主面前卖个好价钱，或者多走一步，自己也许也能当个有产者。&lt;/p&gt;
&lt;p&gt;努力这回事，既然是唯一的依靠，那么就不得不多思考一下如何努力的事情了，否则只能沦为一种幻觉。&lt;/p&gt;</description><content:encoded><![CDATA[<p>我在这边厢穷则思变的时候，网上满眼看到的都是华为辞退三十多岁工程师的新闻，简直是刺瞎我的眼睛，让我这三十出头的还想焕发人生第二春的人情何以堪。</p>
<p>这个世界的残酷之处在于，对于我这种无产阶级，唯有努力是我唯一可以依靠的东西，但是努力就能带来美好生活吗？那恐怕只是一种幻觉。</p>
<p>世界上所有的党派和政治思潮，几乎都在试图回答个人与集体的关系，公平与效率的关系，而在中国，从注重公平的幻觉中醒过来，现在似乎又陷入了一个追求效率的幻觉。</p>
<p>一个人生活水平低，都是因为他不够努力，尤其是那些名牌大学毕业的，自诩为精英的，因为互联网等领域蓬勃发展而获得了较好的收入的人，大多是这样想问题的，对底层人民的恶意简直是赤裸裸的。</p>
<p>对一个个体而言，尤其是对自己而言，努力是无产阶级唯一的可以依靠的，但是对群体而言，对他人而言，只用努力这个标准去衡量，会产生“你穷你该死”的思想，而历史告诉我们的是，如果穷的无处可逃，富的大概也就无处可逃了。所以我们每个人在追求自我的努力的时候，不得不去思考公平的问题，基本福利的问题，而在没有基本福利的时候讨论福利多寡，是一件奢侈的事情。</p>
<p>而不想把努力变成一种幻觉，最应该注意的或许是你和雇主的关系，对雇主而言，你始终只是个工具，你可以去要求他给基本保障，要求他有温情，但始终要有被当作工具，被兔死狗烹，被一脚踢开的觉悟，只有这样，才能置之死地而后生。我们为了雇主出卖自己的时间，完成雇主的要求，在生产环节中当好自己的角色，这是这个交换关系的根本，但是，如果同时你在工作中没有得到任何成长，那么被人取代是迟早的事。得不到成长可能有两个原因：</p>
<ol>
<li>工作本身有问题，有一些工作在学会后会陷入简单重复，看起来是脑力劳动工作的，也可能是脑力劳动中的体力劳动，这种工作不能长干；</li>
<li>缺乏在工作中从成长的能力，我们有作为工具的自觉，但并不代表在工作时以交差为最高目标，这样不去珍惜工作带来的潜在的挑战，即使工作时间再长，获得的经验也会很有限，而现实中，确实有很多人陷入了这种麻木工作状态。</li>
</ol>
<p>所有的工作选择，都应该在待遇和成长性两个方面考虑。努力应该是努力提升自我，而不仅仅是努力的重复自我，或者说，不但要有战术上的努力，更要有战略上的努力。</p>
<p>如果，五年工作就有五年经验，甚至十年经验，而不是只有一年经验，那么自然也能在雇主面前卖个好价钱，或者多走一步，自己也许也能当个有产者。</p>
<p>努力这回事，既然是唯一的依靠，那么就不得不多思考一下如何努力的事情了，否则只能沦为一种幻觉。</p>
]]></content:encoded><category>methodology</category><category domain="tags">努力</category><category domain="tags">认知</category></item><item><title>投资的两条路</title><link>https://yifeitao.com/two-way-to-invest/</link><pubDate>Mon, 27 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/two-way-to-invest/</guid><description>&lt;p&gt;自从我开始玩投资后，我的手机号就不知道被哪家公司卖了，每天都收到想带我发财的短信，各种内幕消息，选股大神，连上微博也会给我推荐无数个荐股师，他们的台词甚至都是一样的，都是再最低点买入，最高点逃出生天，看着这些骗人的玩意儿，我不禁感慨，股市对不同的人就是不同的东西，有的人天天盯盘，看K线图，也有的人买了股票后几个月不看一眼。&lt;/p&gt;
&lt;p&gt;股市可能是最复杂的系统之一，影响一个股票价格的因素太多太多，以至于任何对短期股价的预测都是及其困难的，这是一个二次混沌系统，对股价的预测会带来买入卖出的动作，反过来影响股价。如果做的功课足够，可能我们能预测一下股价的长期走向，因为这主要取决于公司的成长性。&lt;/p&gt;
&lt;p&gt;面对复杂的股市，大概有价值投资和趋势分析两个流派，我觉得着两个流派做到极致都能挣钱，但都要剔除人性的弱点，直觉往往还不如随机有效。&lt;/p&gt;
&lt;p&gt;价值投资做到极致只要对公司做彻底的分析，然后定出两个目标价，一个买入价，一个卖出价，只针对公司的运营状况做调整即可，无论资金大小，这都是一劳永逸值得考虑的大道至简的方法。&lt;/p&gt;
&lt;p&gt;趋势分析做到极致就是量化投资，最好是高频交易，只要我们的胜率大于50%，通过重复小的收益获得大的的收益，然而很多人的趋势投资带入了太多的感觉，甚至用一些玄学式的东西来解释，如果放弃分析基本面，而仅靠价格信号来操作，那么只有程序才能快速、剔除人的情感因素。在韭菜遍地的A股，广义的量化策略大有可为，甚至能无风险套利，然而这需要投入大量的精力去研发策略。&lt;/p&gt;
&lt;p&gt;对我个人而言，两种方法其实都还谈不上，基本上还是凭感觉居多，以后的投资之路还是要慢慢回到理性的道路上来，要学的东西还很多，这是一场天长日久的战斗，有意思的是，这是一种学好了直接来钱的知识。&lt;/p&gt;</description><content:encoded><![CDATA[<p>自从我开始玩投资后，我的手机号就不知道被哪家公司卖了，每天都收到想带我发财的短信，各种内幕消息，选股大神，连上微博也会给我推荐无数个荐股师，他们的台词甚至都是一样的，都是再最低点买入，最高点逃出生天，看着这些骗人的玩意儿，我不禁感慨，股市对不同的人就是不同的东西，有的人天天盯盘，看K线图，也有的人买了股票后几个月不看一眼。</p>
<p>股市可能是最复杂的系统之一，影响一个股票价格的因素太多太多，以至于任何对短期股价的预测都是及其困难的，这是一个二次混沌系统，对股价的预测会带来买入卖出的动作，反过来影响股价。如果做的功课足够，可能我们能预测一下股价的长期走向，因为这主要取决于公司的成长性。</p>
<p>面对复杂的股市，大概有价值投资和趋势分析两个流派，我觉得着两个流派做到极致都能挣钱，但都要剔除人性的弱点，直觉往往还不如随机有效。</p>
<p>价值投资做到极致只要对公司做彻底的分析，然后定出两个目标价，一个买入价，一个卖出价，只针对公司的运营状况做调整即可，无论资金大小，这都是一劳永逸值得考虑的大道至简的方法。</p>
<p>趋势分析做到极致就是量化投资，最好是高频交易，只要我们的胜率大于50%，通过重复小的收益获得大的的收益，然而很多人的趋势投资带入了太多的感觉，甚至用一些玄学式的东西来解释，如果放弃分析基本面，而仅靠价格信号来操作，那么只有程序才能快速、剔除人的情感因素。在韭菜遍地的A股，广义的量化策略大有可为，甚至能无风险套利，然而这需要投入大量的精力去研发策略。</p>
<p>对我个人而言，两种方法其实都还谈不上，基本上还是凭感觉居多，以后的投资之路还是要慢慢回到理性的道路上来，要学的东西还很多，这是一场天长日久的战斗，有意思的是，这是一种学好了直接来钱的知识。</p>
]]></content:encoded><category>investment</category><category domain="tags">投资</category><category domain="tags">理财</category></item><item><title>程序设计中的概念一致性</title><link>https://yifeitao.com/the-uniformity-of-concept/</link><pubDate>Sat, 25 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-uniformity-of-concept/</guid><description>&lt;p&gt;如果你写的程序是个简单的学生作业或是界定清晰的算法问题，那是值得恭喜的事情，但更多的时候，程序员要面对用户、产品经理、或是领导的模糊的需求，尤其是那些行业相关程序，需要和领域专家合作时，程序员需要从领域专家的脑子里挖掘知识，将其表达为代码，这就会牵涉到专家和程序员的理解是否一致的问题，而在程序员团队合作的时候，同样存在类似的问题。程序中的概念是现实的不同角度的抽象，同样的一个人在购物软件和博客程序中是两个范畴大不一样的概念。&lt;/p&gt;
&lt;p&gt;传统的瀑布流软件工程过程，试图通过需求分析，概要设计，详细设计等一系列过程，先将概念厘清，但是如果问题本来有一定模糊性，需要探索时，这种努力几乎是徒劳的，因为写文档的人就不清楚所有的问题，或者他以为自己清楚所有的问题，但实际上概念不清，甚至自相矛盾，很多地方有二义性理解。虽然需求分析的书上都告诫要消除二义性，但是现实是丑陋的，几乎没有人能做到。&lt;/p&gt;
&lt;p&gt;真正的问题不在于文档的多少，而在于所有的人，所有的过程中，对一个概念是否具有一致性，如果需求中是一个概念，到了程序中的包或类中这个概念变了样，那么最终的程序很可能是不满足需求的，如果程序员对一个概念的理解不一致，由此造成的bug虽然没有纯技术上的难度，但却可能是最难消除的。&lt;/p&gt;
&lt;p&gt;我想对程序员而言，在概念方面，有以下几点需要注意：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;充分重视概念的建立，用合适的词语表达（从这个角度看，程序中的命名问题怎么强调重要性都不为过），仔细思考概念的内涵、外延及其和其他概念的关系，在新建一个类的时候，在给类设计功能的时候，要慎重，不能以大致能表达需求为目标，而且应当能够简洁优雅的表达需求；&lt;/li&gt;
&lt;li&gt;和用户、领域专家、团队成员，保持良好的沟通，时刻求得理解的一致性，必要时充分讨论、反复确认，要建立一个一致的词汇表，尽量让领域专家也理解设计思路；&lt;/li&gt;
&lt;li&gt;如果有文档，时刻保持文档、代码、和头脑中概念的一致性，这一点也提示我们，太多不更新的文档，只会起到负作用，浪费时间造成误解。当然，由于人员的流动性，文档还是有很大的存在价值的&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>如果你写的程序是个简单的学生作业或是界定清晰的算法问题，那是值得恭喜的事情，但更多的时候，程序员要面对用户、产品经理、或是领导的模糊的需求，尤其是那些行业相关程序，需要和领域专家合作时，程序员需要从领域专家的脑子里挖掘知识，将其表达为代码，这就会牵涉到专家和程序员的理解是否一致的问题，而在程序员团队合作的时候，同样存在类似的问题。程序中的概念是现实的不同角度的抽象，同样的一个人在购物软件和博客程序中是两个范畴大不一样的概念。</p>
<p>传统的瀑布流软件工程过程，试图通过需求分析，概要设计，详细设计等一系列过程，先将概念厘清，但是如果问题本来有一定模糊性，需要探索时，这种努力几乎是徒劳的，因为写文档的人就不清楚所有的问题，或者他以为自己清楚所有的问题，但实际上概念不清，甚至自相矛盾，很多地方有二义性理解。虽然需求分析的书上都告诫要消除二义性，但是现实是丑陋的，几乎没有人能做到。</p>
<p>真正的问题不在于文档的多少，而在于所有的人，所有的过程中，对一个概念是否具有一致性，如果需求中是一个概念，到了程序中的包或类中这个概念变了样，那么最终的程序很可能是不满足需求的，如果程序员对一个概念的理解不一致，由此造成的bug虽然没有纯技术上的难度，但却可能是最难消除的。</p>
<p>我想对程序员而言，在概念方面，有以下几点需要注意：</p>
<ol>
<li>充分重视概念的建立，用合适的词语表达（从这个角度看，程序中的命名问题怎么强调重要性都不为过），仔细思考概念的内涵、外延及其和其他概念的关系，在新建一个类的时候，在给类设计功能的时候，要慎重，不能以大致能表达需求为目标，而且应当能够简洁优雅的表达需求；</li>
<li>和用户、领域专家、团队成员，保持良好的沟通，时刻求得理解的一致性，必要时充分讨论、反复确认，要建立一个一致的词汇表，尽量让领域专家也理解设计思路；</li>
<li>如果有文档，时刻保持文档、代码、和头脑中概念的一致性，这一点也提示我们，太多不更新的文档，只会起到负作用，浪费时间造成误解。当然，由于人员的流动性，文档还是有很大的存在价值的</li>
</ol>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">软件设计</category></item><item><title>选择难走的那条路</title><link>https://yifeitao.com/choose-the-hard-way/</link><pubDate>Fri, 24 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/choose-the-hard-way/</guid><description>&lt;p&gt;这可能是一碗毒鸡汤。人生就是一个个的选择构成的，当你处在人生的岔路口，不知道选哪条路好的时候，是选那条看起来走过去会轻松的，还是选那条看起来走过去会困难的呢？可能大多数人都选择了轻松的路，毕竟没有人会喜欢吃苦受累，人们都喜欢待在自己觉得安全舒适的区域。但也会有少数人会选择难走的路，去主动的吃苦受累，创造不一样的生活。&lt;/p&gt;
&lt;p&gt;所以，选择难走的路的人，需要一个比较高的目标，高过自己的懒惰与及时享乐。如果简单的鼓吹选择难走的路，不过是一碗鸡汤，而鼓吹选择轻松的路，认为不这样做的人都是傻逼，那么也是一碗鸡汤。问题的关键在于路通向何处，你想在路上看什么样的风景。&lt;/p&gt;
&lt;p&gt;路通向何处？问的是目的性的问题，这应当是一个精神体验问题，而不是物质性的问题，因为如果紧考虑物质性，人的最终归宿在当前的科技条件下，仍然都是死亡，如果认定这种目的，结论是认为人生无意义的虚无主义。在精神上，我们可以走向不同的目的，按宗教的说法，你可以选择上天堂还是下地狱，这是人的最根本的自由，所以如果通向你要的目的地必须要走一条难走的路，那么你责无旁贷。&lt;/p&gt;
&lt;p&gt;你想在路上看什么样的风景？这个问题强调过程重于结果，更好的风景可能在轻松的路上，但也可能在难走的路上，你可以根据各种前人经验去推测，南走的路可能有更大的惊喜，但也有一无所获的风险，理性分析可以降低这种风险，所以智慧与勇敢是共生的。过程的魅力很大程度上就来自于它的不确定性，就像那些爱情剧的魅力在于男女主角感情试探的过程，一旦情比金坚时，反而没什么乐趣，只能大结局了。&lt;/p&gt;
&lt;p&gt;最后的问题就在于轻松和难走的判别了，有时候轻松是真的轻松，但也有时候轻松是一个假象，就像当年一直在国企中的很多人一样，可能直到被下岗的一天才意识到这一点，这时候容易的路引向了一个陷阱。而看似难走的路则还有一线生机。&lt;/p&gt;
&lt;p&gt;所以，最后的结论只能是没有结论，选择永远是苦难的，只是，我们应当永远要去看一看想一想那些荆棘之路，而不要把它们过早的忽略，而失去了人生的机会，然后艳羡他人的人生。&lt;/p&gt;</description><content:encoded><![CDATA[<p>这可能是一碗毒鸡汤。人生就是一个个的选择构成的，当你处在人生的岔路口，不知道选哪条路好的时候，是选那条看起来走过去会轻松的，还是选那条看起来走过去会困难的呢？可能大多数人都选择了轻松的路，毕竟没有人会喜欢吃苦受累，人们都喜欢待在自己觉得安全舒适的区域。但也会有少数人会选择难走的路，去主动的吃苦受累，创造不一样的生活。</p>
<p>所以，选择难走的路的人，需要一个比较高的目标，高过自己的懒惰与及时享乐。如果简单的鼓吹选择难走的路，不过是一碗鸡汤，而鼓吹选择轻松的路，认为不这样做的人都是傻逼，那么也是一碗鸡汤。问题的关键在于路通向何处，你想在路上看什么样的风景。</p>
<p>路通向何处？问的是目的性的问题，这应当是一个精神体验问题，而不是物质性的问题，因为如果紧考虑物质性，人的最终归宿在当前的科技条件下，仍然都是死亡，如果认定这种目的，结论是认为人生无意义的虚无主义。在精神上，我们可以走向不同的目的，按宗教的说法，你可以选择上天堂还是下地狱，这是人的最根本的自由，所以如果通向你要的目的地必须要走一条难走的路，那么你责无旁贷。</p>
<p>你想在路上看什么样的风景？这个问题强调过程重于结果，更好的风景可能在轻松的路上，但也可能在难走的路上，你可以根据各种前人经验去推测，南走的路可能有更大的惊喜，但也有一无所获的风险，理性分析可以降低这种风险，所以智慧与勇敢是共生的。过程的魅力很大程度上就来自于它的不确定性，就像那些爱情剧的魅力在于男女主角感情试探的过程，一旦情比金坚时，反而没什么乐趣，只能大结局了。</p>
<p>最后的问题就在于轻松和难走的判别了，有时候轻松是真的轻松，但也有时候轻松是一个假象，就像当年一直在国企中的很多人一样，可能直到被下岗的一天才意识到这一点，这时候容易的路引向了一个陷阱。而看似难走的路则还有一线生机。</p>
<p>所以，最后的结论只能是没有结论，选择永远是苦难的，只是，我们应当永远要去看一看想一想那些荆棘之路，而不要把它们过早的忽略，而失去了人生的机会，然后艳羡他人的人生。</p>
]]></content:encoded><category>methodology</category><category domain="tags">选择</category><category domain="tags">人生</category></item><item><title>学会说话</title><link>https://yifeitao.com/learn-to-talk/</link><pubDate>Thu, 23 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/learn-to-talk/</guid><description>&lt;p&gt;说话这件事，除了聋哑人，人人都会，即使是聋哑人，也可以使用手语。说话这件事，我们在学龄前会比较认真的学习，然后就似乎成为一种本能了，少有人再去学习怎么说话，然而又会有很多人被自己或他人定义为不会说话的人，包括不能准确的表达自己的想法，不敢和陌生人讲话，不敢当众讲话等种种症状。&lt;/p&gt;
&lt;p&gt;说一个人不会说话，这里面包含的意义看似正常，实则很奇怪。其实人人生下来都不会说话，而又几乎人人都学会了说话，只是大部分的说话的水平在长大后增长得越来越慢，进入停滞状态。学习是一个人与生俱来得能力，也是一项一直持续的能力，通过学习，说话的能力也应当是可以不断提高的。然而，很多人，包括多年前的我，都被内向、宅、不善于和人沟通等等标签化了，我们这类人，只不说是不喜欢跟人乱哈拉，自来熟罢了，性格偏内向一点本也不是什么缺陷。一旦我们不去接受这种标签化，就会发现所谓不会说话根本就是个伪命题，不会可以学，水平低可以提高，其实我们并不需要成为一个演讲帝，无非是能够向其他人较为准确的传达自己的思想即可，而内向的人，本应该是善于形成自己的思想的。&lt;/p&gt;
&lt;p&gt;从深入一点的角度看，说话即思考，只要勤于思考，说话不会是什么难事，要注意的只是不要把那种推销员式的口才当作了会说话的唯一标准，当感觉自己达不到或者没有必要达到时，就放弃了对自己好好说话，把话说好的努力，接受了自己不会说话的设定，而一旦放弃了好好说话，也就放弃了很多思考的机会。&lt;/p&gt;
&lt;p&gt;有很多像说话一样的知识或能力，它往往是生活的必需品，却一般不被人当作一门严肃的学问来看待，在这些事情上，只要你付出比别人多20%的努力，可能你就能脱颖而出，当然你无法成为这方面的专家，但那往往也不是我们的目的，我们想要的是把话说好，传达好自己的意思，而不是成为说话的专家，类似这样高收益的学习，正因为它太过于稀松平常，而被大多数人所忽略，因为学习往往被错误的定义为成年前在学校进行的活动，而学习的普适性则被长久的忽略，乃至产生反智主义。&lt;/p&gt;</description><content:encoded><![CDATA[<p>说话这件事，除了聋哑人，人人都会，即使是聋哑人，也可以使用手语。说话这件事，我们在学龄前会比较认真的学习，然后就似乎成为一种本能了，少有人再去学习怎么说话，然而又会有很多人被自己或他人定义为不会说话的人，包括不能准确的表达自己的想法，不敢和陌生人讲话，不敢当众讲话等种种症状。</p>
<p>说一个人不会说话，这里面包含的意义看似正常，实则很奇怪。其实人人生下来都不会说话，而又几乎人人都学会了说话，只是大部分的说话的水平在长大后增长得越来越慢，进入停滞状态。学习是一个人与生俱来得能力，也是一项一直持续的能力，通过学习，说话的能力也应当是可以不断提高的。然而，很多人，包括多年前的我，都被内向、宅、不善于和人沟通等等标签化了，我们这类人，只不说是不喜欢跟人乱哈拉，自来熟罢了，性格偏内向一点本也不是什么缺陷。一旦我们不去接受这种标签化，就会发现所谓不会说话根本就是个伪命题，不会可以学，水平低可以提高，其实我们并不需要成为一个演讲帝，无非是能够向其他人较为准确的传达自己的思想即可，而内向的人，本应该是善于形成自己的思想的。</p>
<p>从深入一点的角度看，说话即思考，只要勤于思考，说话不会是什么难事，要注意的只是不要把那种推销员式的口才当作了会说话的唯一标准，当感觉自己达不到或者没有必要达到时，就放弃了对自己好好说话，把话说好的努力，接受了自己不会说话的设定，而一旦放弃了好好说话，也就放弃了很多思考的机会。</p>
<p>有很多像说话一样的知识或能力，它往往是生活的必需品，却一般不被人当作一门严肃的学问来看待，在这些事情上，只要你付出比别人多20%的努力，可能你就能脱颖而出，当然你无法成为这方面的专家，但那往往也不是我们的目的，我们想要的是把话说好，传达好自己的意思，而不是成为说话的专家，类似这样高收益的学习，正因为它太过于稀松平常，而被大多数人所忽略，因为学习往往被错误的定义为成年前在学校进行的活动，而学习的普适性则被长久的忽略，乃至产生反智主义。</p>
]]></content:encoded><category>methodology</category><category domain="tags">沟通</category><category domain="tags">学习</category></item><item><title>论高度重视</title><link>https://yifeitao.com/gaodu-zhongshi/</link><pubDate>Wed, 22 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/gaodu-zhongshi/</guid><description>&lt;p&gt;看过陈云的《中文解毒》后，在现实生活中开始能够发现一些以前没太注意现在觉得很奇怪的用词，比如最常见的一个让我觉得奇怪的用法就是“高度重视”。&lt;/p&gt;
&lt;p&gt;“重视”一次的“重”本来就有强调的意味了，但是在当今广泛的用法中，“重视”一词简直是没有能力独立使用了，但凡重视，必然十分重视，高度重视，而这个带着几分虚指的动词，其主语一般都是领导。所以高度重视，是一种约定俗称的官样文章，我几乎能想象出第一个这么去写的某个秘书的得意之情，但是不幸的是，它的同行们迅速像感染感冒病毒一般感染的这个词，这就像国家之间的军备竞赛，谁也不敢停下来，谁也不敢示弱，因为别人都高度了，你要安抚民心，得到上级赏识，在遇到问题时，怎能不高度重视呢？&lt;/p&gt;
&lt;p&gt;然而，且不说高度重视，重视本身就是一个虚指意味很浓的词，如果没有强有力的可见的措施，何以谈得上重视，而高度的滥用，进一步把这个词虚化了，反正只要做出了一点点的反应，就是高度重视了，所有的等级都是最高级，看文字的人也就逐渐麻木了，难以去分辨究竟是不是采取了及时有效的措施。&lt;/p&gt;
&lt;p&gt;类似的说法还有“大力提倡”，“着力推动”等等，看看新闻联播，这类加强语气的词的滥用简直触目惊心。这就像一个男的对女朋友发誓：我爱你，我真的爱你，我真正的很爱很爱你。如果没有平时的润物细无声的表现，这种台词说出来只有肉麻加恶心而已。&lt;/p&gt;</description><content:encoded><![CDATA[<p>看过陈云的《中文解毒》后，在现实生活中开始能够发现一些以前没太注意现在觉得很奇怪的用词，比如最常见的一个让我觉得奇怪的用法就是“高度重视”。</p>
<p>“重视”一次的“重”本来就有强调的意味了，但是在当今广泛的用法中，“重视”一词简直是没有能力独立使用了，但凡重视，必然十分重视，高度重视，而这个带着几分虚指的动词，其主语一般都是领导。所以高度重视，是一种约定俗称的官样文章，我几乎能想象出第一个这么去写的某个秘书的得意之情，但是不幸的是，它的同行们迅速像感染感冒病毒一般感染的这个词，这就像国家之间的军备竞赛，谁也不敢停下来，谁也不敢示弱，因为别人都高度了，你要安抚民心，得到上级赏识，在遇到问题时，怎能不高度重视呢？</p>
<p>然而，且不说高度重视，重视本身就是一个虚指意味很浓的词，如果没有强有力的可见的措施，何以谈得上重视，而高度的滥用，进一步把这个词虚化了，反正只要做出了一点点的反应，就是高度重视了，所有的等级都是最高级，看文字的人也就逐渐麻木了，难以去分辨究竟是不是采取了及时有效的措施。</p>
<p>类似的说法还有“大力提倡”，“着力推动”等等，看看新闻联播，这类加强语气的词的滥用简直触目惊心。这就像一个男的对女朋友发誓：我爱你，我真的爱你，我真正的很爱很爱你。如果没有平时的润物细无声的表现，这种台词说出来只有肉麻加恶心而已。</p>
]]></content:encoded><category>life</category><category domain="tags">语言</category><category domain="tags">社会</category></item><item><title>为什么要杀时间</title><link>https://yifeitao.com/why-to-kill-time/</link><pubDate>Tue, 21 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/why-to-kill-time/</guid><description>&lt;p&gt;我的父母在学龄期赶上了人民公社的尾巴，每天都很忙，但还是整天感觉吃不饱，在那个时代，似乎没有杀时间的概念。&lt;/p&gt;
&lt;p&gt;为什么要杀时间？因为人的空闲时间多了，为什么空闲时间多了？因为科技发达了，生产效率提高了。人的空闲时间会越来越多么？对大部分人会是这样，因为他们无法从事创造性劳动，会逐渐被机器取代，而社会整体发展会导致基本生活保障水平不断提高，所以会有一部分人成为机器供养的人，他们的需要杀掉的时间会越来越多，从这个角度去看，劳动将会慢慢成为一件奢侈的，值得骄傲的事情。不劳而获仍然是当前我们这个时代的人的梦想，可是如果真的能够不劳而获，尤其是机器构建的世界覆盖了你的想象力时，你就会变成机器的宠物，而少数能够进行创造的人类或许能与机器共存。&lt;/p&gt;
&lt;p&gt;人类的创造发明可以归结为两种：第一种能为人类节约时间，我们称之为物质文明；第二种能把人类节约下来的时间浪费掉，我们称之为精神文明。而对大部分人而言，是享受了物质文明带来的节约时间，但是又不知道节约出来的时间要干啥，只好再用别人创造的精神文明来杀时间。谁做好了这件事情，就算是把人类赡养好了，值得奖励，所以泛娱乐化是这个社会不可阻挡的架势。&lt;/p&gt;
&lt;p&gt;我对人类的期望在于，在这被赡养的人中间，文化依然再流动，会产生变异，诞生人类的异类，他们要思考别人不去思考的问题，这时精英主义的思想，但是平民的价值在于提供变异的土壤，人类社会板结过无数次，但是都在血洗过后恢复了活力。&lt;/p&gt;
&lt;p&gt;所以如果我们有幸能做一个异类，也要对这个世界上杀时间的人们怀有慈悲之心。&lt;/p&gt;</description><content:encoded><![CDATA[<p>我的父母在学龄期赶上了人民公社的尾巴，每天都很忙，但还是整天感觉吃不饱，在那个时代，似乎没有杀时间的概念。</p>
<p>为什么要杀时间？因为人的空闲时间多了，为什么空闲时间多了？因为科技发达了，生产效率提高了。人的空闲时间会越来越多么？对大部分人会是这样，因为他们无法从事创造性劳动，会逐渐被机器取代，而社会整体发展会导致基本生活保障水平不断提高，所以会有一部分人成为机器供养的人，他们的需要杀掉的时间会越来越多，从这个角度去看，劳动将会慢慢成为一件奢侈的，值得骄傲的事情。不劳而获仍然是当前我们这个时代的人的梦想，可是如果真的能够不劳而获，尤其是机器构建的世界覆盖了你的想象力时，你就会变成机器的宠物，而少数能够进行创造的人类或许能与机器共存。</p>
<p>人类的创造发明可以归结为两种：第一种能为人类节约时间，我们称之为物质文明；第二种能把人类节约下来的时间浪费掉，我们称之为精神文明。而对大部分人而言，是享受了物质文明带来的节约时间，但是又不知道节约出来的时间要干啥，只好再用别人创造的精神文明来杀时间。谁做好了这件事情，就算是把人类赡养好了，值得奖励，所以泛娱乐化是这个社会不可阻挡的架势。</p>
<p>我对人类的期望在于，在这被赡养的人中间，文化依然再流动，会产生变异，诞生人类的异类，他们要思考别人不去思考的问题，这时精英主义的思想，但是平民的价值在于提供变异的土壤，人类社会板结过无数次，但是都在血洗过后恢复了活力。</p>
<p>所以如果我们有幸能做一个异类，也要对这个世界上杀时间的人们怀有慈悲之心。</p>
]]></content:encoded><category>methodology</category><category domain="tags">时间</category><category domain="tags">思考</category></item><item><title>煎熬</title><link>https://yifeitao.com/torture/</link><pubDate>Mon, 20 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/torture/</guid><description>&lt;p&gt;博客日更是去年底发下的宏愿，不得不承认过了最初的新鲜期后，写得越来越吃力，专业性太强的文章写起来要费很多时间，能够周更就不错了，结果写得最多的可能是自我激励的心灵鸡汤。&lt;/p&gt;
&lt;p&gt;毕竟，今年还发了宏愿要换工作，这必将是一场旷日持久的煎熬。&lt;/p&gt;
&lt;p&gt;一是不确定性带来的煎熬，需要应对各种变化的消息，面对历史的浪潮，自己能决定的事情很有限，只有八风不动，坚持自己的初心，在这种状况下，还要应付工作，更要加速充电，还想不打折扣的陪好家人，过好每一天，这些种种，归为一个词是努力，可是努力是个综合工程，比如不能读书熬夜，还要坚持锻炼，因为身体最重要，比如要及时排解负面情绪，接受自己不是一个完人，及时止损，比如要安排好自己的学习，防止战术上努力的同时战略上的懒惰。&lt;/p&gt;
&lt;p&gt;二是刻意练习带来的煎熬，学习上忌讳两件事情：一是学了太多没用的东西，二是没有立即开展实践。真正有效的学习不是随便翻翻书就行的，而是需要刻意练习，真正的学习也会有些煎熬，因为它要重塑自己的神经网络，而要时刻防止滑向自己习惯的深渊，只有不断的走出自己的舒适区，才能真正有进步，心理学上说，只要你想到自己要努力，就会被自己感动，然后可能都不需要努力就自我满足了，或者你会满足于自己花了很多时间，而不管那些时间是否有效。&lt;/p&gt;
&lt;p&gt;写到这里，突然感觉生活像是一个野蛮女友，虽然你被她虐待煎熬，但是却会产生感情，算是一种关于努力的斯德哥尔摩症吧，一种痛并快乐的感觉。这种煎熬感，甚至触发了我的好奇感，我想知道自己能承受多大的压力，能做到多好，所以这个日更的宏愿，一定要坚持到2017年12月31日再做另外的打算。&lt;/p&gt;</description><content:encoded><![CDATA[<p>博客日更是去年底发下的宏愿，不得不承认过了最初的新鲜期后，写得越来越吃力，专业性太强的文章写起来要费很多时间，能够周更就不错了，结果写得最多的可能是自我激励的心灵鸡汤。</p>
<p>毕竟，今年还发了宏愿要换工作，这必将是一场旷日持久的煎熬。</p>
<p>一是不确定性带来的煎熬，需要应对各种变化的消息，面对历史的浪潮，自己能决定的事情很有限，只有八风不动，坚持自己的初心，在这种状况下，还要应付工作，更要加速充电，还想不打折扣的陪好家人，过好每一天，这些种种，归为一个词是努力，可是努力是个综合工程，比如不能读书熬夜，还要坚持锻炼，因为身体最重要，比如要及时排解负面情绪，接受自己不是一个完人，及时止损，比如要安排好自己的学习，防止战术上努力的同时战略上的懒惰。</p>
<p>二是刻意练习带来的煎熬，学习上忌讳两件事情：一是学了太多没用的东西，二是没有立即开展实践。真正有效的学习不是随便翻翻书就行的，而是需要刻意练习，真正的学习也会有些煎熬，因为它要重塑自己的神经网络，而要时刻防止滑向自己习惯的深渊，只有不断的走出自己的舒适区，才能真正有进步，心理学上说，只要你想到自己要努力，就会被自己感动，然后可能都不需要努力就自我满足了，或者你会满足于自己花了很多时间，而不管那些时间是否有效。</p>
<p>写到这里，突然感觉生活像是一个野蛮女友，虽然你被她虐待煎熬，但是却会产生感情，算是一种关于努力的斯德哥尔摩症吧，一种痛并快乐的感觉。这种煎熬感，甚至触发了我的好奇感，我想知道自己能承受多大的压力，能做到多好，所以这个日更的宏愿，一定要坚持到2017年12月31日再做另外的打算。</p>
]]></content:encoded><category>life</category><category domain="tags">情绪</category><category domain="tags">生活</category></item><item><title>说话比较直？</title><link>https://yifeitao.com/speak-too-straight/</link><pubDate>Sun, 19 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/speak-too-straight/</guid><description>&lt;p&gt;有一种人说话的口头禅是，我这个人说话比较直。然后巴拉巴拉对你开喷，你能怪他么？他都说了他说话比价直嘛。&lt;/p&gt;
&lt;p&gt;不排除真的有一种人是所谓的刀子嘴豆腐心，但是我见到更多的是刀子嘴刀子心。判断一个人是否真的是说话太直，只要比较一下他对地位不如他的人以及地位高过他的人是否有明显区别即可，所以你可以看到对下级说话很直，“对事不对人”，希望自己的恶言能得到理解，但跟上级说话时，就象变了一个人一样，开始字斟句酌了。&lt;/p&gt;
&lt;p&gt;想想这也是人之常情，毕竟如果修养没有变成内心深处的自然反应，那么把话说好就是一件需要大动脑筋大费周章的事情，所以对上彬彬有礼对下粗暴蛮横也就能够理解了。那些更加懒惰一点的，只有在面对权威的逼迫时才会想到要好好说话，即使和地位相当的人也从来没有礼貌可言，用网络时代的说法，既然你我都是“屌丝”，自然也就不用再讲什么斯文了。&lt;/p&gt;
&lt;p&gt;想明白了这些，就应该知道，如果自己说话太直，基本上是一种需要治疗的势利病，只有学会从内心深处尊重别人，说话才会变得有温度，即使面对那些你能明显觉察的愚蠢，也应该想到，能够学会理智也是一种幸运，甚至会努力也是一种幸运，而不是人人都有这种幸运，人人都应当多一点悲悯，少一些歧视。&lt;/p&gt;
&lt;p&gt;然后你也知道，那些打着说话直旗号的人，是不是真的有些性格缺陷，还是只是绝对你不值得他费脑子好好说话，然后要去如何应对呢？首先当然得知道他把你当成无所谓之人了，然后怎么办，是把话吞下去还是骂回去，那就是另一个更复杂的人生话题了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>有一种人说话的口头禅是，我这个人说话比较直。然后巴拉巴拉对你开喷，你能怪他么？他都说了他说话比价直嘛。</p>
<p>不排除真的有一种人是所谓的刀子嘴豆腐心，但是我见到更多的是刀子嘴刀子心。判断一个人是否真的是说话太直，只要比较一下他对地位不如他的人以及地位高过他的人是否有明显区别即可，所以你可以看到对下级说话很直，“对事不对人”，希望自己的恶言能得到理解，但跟上级说话时，就象变了一个人一样，开始字斟句酌了。</p>
<p>想想这也是人之常情，毕竟如果修养没有变成内心深处的自然反应，那么把话说好就是一件需要大动脑筋大费周章的事情，所以对上彬彬有礼对下粗暴蛮横也就能够理解了。那些更加懒惰一点的，只有在面对权威的逼迫时才会想到要好好说话，即使和地位相当的人也从来没有礼貌可言，用网络时代的说法，既然你我都是“屌丝”，自然也就不用再讲什么斯文了。</p>
<p>想明白了这些，就应该知道，如果自己说话太直，基本上是一种需要治疗的势利病，只有学会从内心深处尊重别人，说话才会变得有温度，即使面对那些你能明显觉察的愚蠢，也应该想到，能够学会理智也是一种幸运，甚至会努力也是一种幸运，而不是人人都有这种幸运，人人都应当多一点悲悯，少一些歧视。</p>
<p>然后你也知道，那些打着说话直旗号的人，是不是真的有些性格缺陷，还是只是绝对你不值得他费脑子好好说话，然后要去如何应对呢？首先当然得知道他把你当成无所谓之人了，然后怎么办，是把话吞下去还是骂回去，那就是另一个更复杂的人生话题了。</p>
]]></content:encoded><category>life</category><category domain="tags">沟通</category><category domain="tags">人际</category></item><item><title>理想与爱情如何兼得？——《爱乐之城》观后</title><link>https://yifeitao.com/la-la-land/</link><pubDate>Sat, 18 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/la-la-land/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/view/photo/photo/public/p2425658570.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;看完这部《爱乐之城》，再联想一下导演达米恩·查泽雷 （Damien Chazelle）的上一部《爆裂鼓手》，我严重怀疑该导演有为了事业割舍爱情的遭遇而导致的情结。&lt;/p&gt;
&lt;p&gt;《爱乐之城》可能是一部让情人节走进电影院的情侣会感到尴尬的电影，如果他们有过刻骨铭心的前男友前女友的话。这部歌舞片有一个无比欢快的开头，然后是漫长的铺陈，如果除掉歌舞片的元素，男女主角的爱情开端其实并没有太多值得大书特写的，无非是两个怀揣梦想的年轻人走到了一起，而走到一起之后怎么走下去，才是影片中真正主题探讨的开始。&lt;/p&gt;
&lt;p&gt;男主角为了给女主角一个安稳的生活条件，向现实妥协，去做自己并不十分喜欢的音乐，女主角则艰难追逐着演员们梦。能把工作和理想结合做成事业的人，少之又少，无数的人工作不过是讨一份生活罢了，爱情是荷尔蒙触发的，但一旦进入平稳期，如果没有金钱的滋养，也会死无葬身之地之地。全剧中最重要的一次争吵发生在这个时刻，为什么你要去做自己不喜欢的事情？都是为了你!我没有这样要求过你，我喜欢的是追逐理想的你！你可能只是喜欢穷困的我，让你自己感觉良好。这种争吵是那么的现实，又是那么的无聊。放到更加无聊的婚后生活去看，无非是一个说我辛辛苦苦赚钱还不是为了这个家，一个说你除了给钱，还管过这个家么？文雅一点叫理想与爱情，现实一点叫工作与家庭，如何协调这二者之间可能存在的矛盾，简直是现代社会的头等难题之一。&lt;/p&gt;
&lt;p&gt;从男主角的角度去考虑，他似乎是做出了一定的牺牲，为了爱情，为了女主角，他要挣钱，但是他又何尝没有喜欢上那么现实的金钱的味道呢？理想在现实面前屈服的理由，真的都要归结为爱情么，又何尝不是找到了一个借口和出口，来宣泄自己的失败情绪。而女主角对男主角的质问，无疑让男主角有些里外不是人的感觉，爱情因此产生了裂痕，但可能也在男主角的心中重新激活了理想的种子。&lt;/p&gt;
&lt;p&gt;电影的结局从爱情片的角度来看自然是一个遗憾的悲剧，但如果从职场片的角度来看，男女主角都实现了自己的理想，不得不说是一个喜剧。理想与爱情如何兼得？这种问题怎么可能有标准答案，有善终的爱情，必须是在对的时间遇到对的人，可是这两个条件同时满足是多么的难，世间才有那么多有缘无分的故事。&lt;/p&gt;
&lt;p&gt;我曾经和夫人幻想过成为亿万富翁之后感情破裂怎么办？可以同患难不能共富贵怎么办？结论大致是可以把家产和和气气地分了，各自享受自己的荣华富贵去。看电影的人可能回去感慨剧中人的遗憾，但是想想自己身上的现实，可能才是一个真正的大写的悲剧：在我们的生活中，没有理想与爱情的妥协，没有金钱与爱情的二选一，有的只是两个人，马马虎虎一起搭伙过日子而已。电影中那些欢乐，那些悲哀，那些遗憾，才显得那么弥足珍贵和美好，而看电影的我们，如果因此而触动，是否还记得起值得为之赴汤蹈火的理想与爱情呢？&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/view/photo/photo/public/p2425658570.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>看完这部《爱乐之城》，再联想一下导演达米恩·查泽雷 （Damien Chazelle）的上一部《爆裂鼓手》，我严重怀疑该导演有为了事业割舍爱情的遭遇而导致的情结。</p>
<p>《爱乐之城》可能是一部让情人节走进电影院的情侣会感到尴尬的电影，如果他们有过刻骨铭心的前男友前女友的话。这部歌舞片有一个无比欢快的开头，然后是漫长的铺陈，如果除掉歌舞片的元素，男女主角的爱情开端其实并没有太多值得大书特写的，无非是两个怀揣梦想的年轻人走到了一起，而走到一起之后怎么走下去，才是影片中真正主题探讨的开始。</p>
<p>男主角为了给女主角一个安稳的生活条件，向现实妥协，去做自己并不十分喜欢的音乐，女主角则艰难追逐着演员们梦。能把工作和理想结合做成事业的人，少之又少，无数的人工作不过是讨一份生活罢了，爱情是荷尔蒙触发的，但一旦进入平稳期，如果没有金钱的滋养，也会死无葬身之地之地。全剧中最重要的一次争吵发生在这个时刻，为什么你要去做自己不喜欢的事情？都是为了你!我没有这样要求过你，我喜欢的是追逐理想的你！你可能只是喜欢穷困的我，让你自己感觉良好。这种争吵是那么的现实，又是那么的无聊。放到更加无聊的婚后生活去看，无非是一个说我辛辛苦苦赚钱还不是为了这个家，一个说你除了给钱，还管过这个家么？文雅一点叫理想与爱情，现实一点叫工作与家庭，如何协调这二者之间可能存在的矛盾，简直是现代社会的头等难题之一。</p>
<p>从男主角的角度去考虑，他似乎是做出了一定的牺牲，为了爱情，为了女主角，他要挣钱，但是他又何尝没有喜欢上那么现实的金钱的味道呢？理想在现实面前屈服的理由，真的都要归结为爱情么，又何尝不是找到了一个借口和出口，来宣泄自己的失败情绪。而女主角对男主角的质问，无疑让男主角有些里外不是人的感觉，爱情因此产生了裂痕，但可能也在男主角的心中重新激活了理想的种子。</p>
<p>电影的结局从爱情片的角度来看自然是一个遗憾的悲剧，但如果从职场片的角度来看，男女主角都实现了自己的理想，不得不说是一个喜剧。理想与爱情如何兼得？这种问题怎么可能有标准答案，有善终的爱情，必须是在对的时间遇到对的人，可是这两个条件同时满足是多么的难，世间才有那么多有缘无分的故事。</p>
<p>我曾经和夫人幻想过成为亿万富翁之后感情破裂怎么办？可以同患难不能共富贵怎么办？结论大致是可以把家产和和气气地分了，各自享受自己的荣华富贵去。看电影的人可能回去感慨剧中人的遗憾，但是想想自己身上的现实，可能才是一个真正的大写的悲剧：在我们的生活中，没有理想与爱情的妥协，没有金钱与爱情的二选一，有的只是两个人，马马虎虎一起搭伙过日子而已。电影中那些欢乐，那些悲哀，那些遗憾，才显得那么弥足珍贵和美好，而看电影的我们，如果因此而触动，是否还记得起值得为之赴汤蹈火的理想与爱情呢？</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">爱情</category></item><item><title>没有现代医学的时候</title><link>https://yifeitao.com/when-no-modern-medicine/</link><pubDate>Fri, 17 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/when-no-modern-medicine/</guid><description>&lt;p&gt;之前我谈到过，中医和西医的对立看待是个错误的分类，正确的分类应该是传统医学和现代医学。每当中医被批评时，人们很自然的想到的一个反驳的证据就是中国十几亿的人口数量，这么多的人，都是老祖宗繁衍而来的，没有西医的时候，中国人靠着中医不也活得好好的，结论就是，中医西医不过都是一种医学罢了，各有千秋嘛。&lt;/p&gt;
&lt;p&gt;虽然估算历史上中国人的人均寿命有困难，但中国历来是一个史料丰富的国家，加之考古学可以分析尸骨的死亡年龄，所以对历朝历代的人均寿命，还是有一些基本估计的。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;中华民族在各个历史时期的平均寿命则是：夏代，18岁；秦汉，20岁；东汉，22岁；唐朝，27岁；宋代，30岁；清代33岁；民国时期35岁；新中国 1957年，57岁；1981年，68岁。” (见：上海人民出版社出版的《人体革命》)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;中国各历史时期平均寿命：新石器时代（三皇五帝）：31(男)，35（女）；先秦：35（男），39（女）；秦汉：49（男），52（女）；三国两晋南北朝：39（男），46（女）；隋唐五代：43（男），47（女）；宋金：41（男），45（女）；元：36（男），42（女）；明：46（男），51（女）；清前期（1840年之前）：45（男），50（女）；清后期：31（男），33（女）；民国：35（男），35（女）；现代：72（男），78（女）。（以上资料整理自《健康大视野》杂志）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;不难看出，在现代医学在中国兴起之前，中国人的寿命从先秦以来并无大的进步，遇上战乱还会倒退，总的来说停留在50岁以下。其实其他国家了类似，据美国学者勒·戴勃林报道，19世纪初，先进国家的人均寿命为35～40岁。美国19世纪的人寿平均数也不到40岁。到20世纪末，已达到76岁上下。所以无论中西，在现代医学兴起前，寿命都不长。&lt;/p&gt;
&lt;p&gt;又比如说产科，解放前，全国孕产妇死亡率为1500/10万，生孩子又叫闯鬼门关。而按照2013年卫计委公布的数字，全国孕产妇死亡率为23.2/10万，即平均每1万名孕产妇中，约2.3个会发生不幸，相比解放前降低了650多倍。&lt;/p&gt;
&lt;p&gt;我们能有今天的生命，都是因为我们的祖先在高死亡率中存活了下来，我们不能因为幸存者偏差就忘了在现代医学兴起前的蒙昧中，被各种疾病夺取的无数生命。人统计历代皇帝209人，平均年龄只有39岁。据清史稿，清历代皇帝一共生有103皇子（不包括皇帝），82个皇女，平均寿命皇子32岁、皇女26岁，大量死于5岁之前。其中康熙爷共有35个皇子、20个皇女，五岁前死亡的皇子12人、皇女10人；活到18岁以上的皇子只有20人、皇女8人。其余的皇子、皇女中，又大部分死于40岁左右的中年。九五至尊的家庭的医疗条件和营养无疑是最优的，但也仅此而已。&lt;/p&gt;
&lt;p&gt;这或许就是传统医学或者说中医的能力极限了，它有何能力和现代医学相提并论呢？享受着现代医学成果的中国人，如果还不思进取，幻想从老祖宗兜里掏东西，是十分不理智的行为。在细节上或许还有讨论的空间，但是总体来看，传统医学在现代医学面前，是不值一提的，只有中国人，才把传统医学当个宝，甚至妄图和现代医学分庭抗礼。进入21世纪已经17年了，医院还让中国的小朋友吃毒副作用不明的中成药，其实是愧对先贤的，而不是发扬什么优秀的传统。&lt;/p&gt;</description><content:encoded><![CDATA[<p>之前我谈到过，中医和西医的对立看待是个错误的分类，正确的分类应该是传统医学和现代医学。每当中医被批评时，人们很自然的想到的一个反驳的证据就是中国十几亿的人口数量，这么多的人，都是老祖宗繁衍而来的，没有西医的时候，中国人靠着中医不也活得好好的，结论就是，中医西医不过都是一种医学罢了，各有千秋嘛。</p>
<p>虽然估算历史上中国人的人均寿命有困难，但中国历来是一个史料丰富的国家，加之考古学可以分析尸骨的死亡年龄，所以对历朝历代的人均寿命，还是有一些基本估计的。</p>
<blockquote>
<p>中华民族在各个历史时期的平均寿命则是：夏代，18岁；秦汉，20岁；东汉，22岁；唐朝，27岁；宋代，30岁；清代33岁；民国时期35岁；新中国 1957年，57岁；1981年，68岁。” (见：上海人民出版社出版的《人体革命》)</p>
</blockquote>
<blockquote>
<p>中国各历史时期平均寿命：新石器时代（三皇五帝）：31(男)，35（女）；先秦：35（男），39（女）；秦汉：49（男），52（女）；三国两晋南北朝：39（男），46（女）；隋唐五代：43（男），47（女）；宋金：41（男），45（女）；元：36（男），42（女）；明：46（男），51（女）；清前期（1840年之前）：45（男），50（女）；清后期：31（男），33（女）；民国：35（男），35（女）；现代：72（男），78（女）。（以上资料整理自《健康大视野》杂志）</p>
</blockquote>
<p>不难看出，在现代医学在中国兴起之前，中国人的寿命从先秦以来并无大的进步，遇上战乱还会倒退，总的来说停留在50岁以下。其实其他国家了类似，据美国学者勒·戴勃林报道，19世纪初，先进国家的人均寿命为35～40岁。美国19世纪的人寿平均数也不到40岁。到20世纪末，已达到76岁上下。所以无论中西，在现代医学兴起前，寿命都不长。</p>
<p>又比如说产科，解放前，全国孕产妇死亡率为1500/10万，生孩子又叫闯鬼门关。而按照2013年卫计委公布的数字，全国孕产妇死亡率为23.2/10万，即平均每1万名孕产妇中，约2.3个会发生不幸，相比解放前降低了650多倍。</p>
<p>我们能有今天的生命，都是因为我们的祖先在高死亡率中存活了下来，我们不能因为幸存者偏差就忘了在现代医学兴起前的蒙昧中，被各种疾病夺取的无数生命。人统计历代皇帝209人，平均年龄只有39岁。据清史稿，清历代皇帝一共生有103皇子（不包括皇帝），82个皇女，平均寿命皇子32岁、皇女26岁，大量死于5岁之前。其中康熙爷共有35个皇子、20个皇女，五岁前死亡的皇子12人、皇女10人；活到18岁以上的皇子只有20人、皇女8人。其余的皇子、皇女中，又大部分死于40岁左右的中年。九五至尊的家庭的医疗条件和营养无疑是最优的，但也仅此而已。</p>
<p>这或许就是传统医学或者说中医的能力极限了，它有何能力和现代医学相提并论呢？享受着现代医学成果的中国人，如果还不思进取，幻想从老祖宗兜里掏东西，是十分不理智的行为。在细节上或许还有讨论的空间，但是总体来看，传统医学在现代医学面前，是不值一提的，只有中国人，才把传统医学当个宝，甚至妄图和现代医学分庭抗礼。进入21世纪已经17年了，医院还让中国的小朋友吃毒副作用不明的中成药，其实是愧对先贤的，而不是发扬什么优秀的传统。</p>
]]></content:encoded><category>life</category><category domain="tags">医学</category><category domain="tags">历史</category></item><item><title>凯利公式</title><link>https://yifeitao.com/kelly-formula/</link><pubDate>Thu, 16 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/kelly-formula/</guid><description>&lt;p&gt;假如你拿了1万块钱去参与一种赌博，随便你下注几块钱，如果赢了就给你翻倍，如果输了就没了，现在假设胜率有60%，那么每次应该下注多少钱才能获得最大的收益呢？&lt;/p&gt;
&lt;p&gt;傻逼兮兮的人可能一次就梭哈了，反正赢的概率多过输的概率嘛。但是还是有40%的概率一下就输光了。&lt;/p&gt;
&lt;p&gt;假设我们每次按余下本金的一定比例下注，这个比例应该是多少合适呢？假设我们赌了100次，那么大概赢了60次，输了40次，设比例为$x$，则盈利&lt;/p&gt;
&lt;p&gt;$f(x)=10000*(1+x)^{60} *(1-x)^{40}$&lt;/p&gt;
&lt;p&gt;需要求它的最大值。&lt;/p&gt;
&lt;p&gt;一般的，假设每投入1，可能获得额外收益W，或者失去本金L，胜率为p，败率为q，则期望收益&lt;/p&gt;
&lt;p&gt;$$f(x)=(1+Wx)^{p} (1-Lx)^{q} $$&lt;/p&gt;
&lt;p&gt;为了求它的最大值，先求个导数。&lt;/p&gt;
&lt;p&gt;$$f^{&amp;rsquo;}(x)=Wp(1+Wx)^{p-1} (1-Lx)^{q} -L(1-p)(1+Wx)^{p} (1-Lx)^{q-1}=0$$&lt;/p&gt;
&lt;p&gt;不难求得&lt;/p&gt;
&lt;p&gt;$$x=\frac {bp-q} {bL}$$&lt;/p&gt;
&lt;p&gt;当L=1时，即一输就输光时，这个公式称为凯利公式。对本文开头的问题，p=0.6,q=0.4,b=1, 可以算出x=20%。所以，应该每次投入现有本金的20%。假设胜率为0.9，则x=0.8。假设胜率为0.5，则x=0，永远不要参与对半开的赌博，如果胜率小于0.5，就更不能参加了。&lt;/p&gt;
&lt;p&gt;凯利公式只是一个近似，它有很多假设，假设可以多次博弈，假设资金无限可分，假设胜率稳定，和投资活动有很多去呗，但还是给我们进行投资提供了一个大致的估算工具，从凯利公司的角度来看，保留一定的现金留作翻本是很有必要的。概率计算在投资中很有必要，虽然投资中盈利的概率估算本身也算是玄学了，但是正如格雷厄姆说的，我们不能因为定量计算很困难就放弃定量计算。&lt;/p&gt;</description><content:encoded><![CDATA[<p>假如你拿了1万块钱去参与一种赌博，随便你下注几块钱，如果赢了就给你翻倍，如果输了就没了，现在假设胜率有60%，那么每次应该下注多少钱才能获得最大的收益呢？</p>
<p>傻逼兮兮的人可能一次就梭哈了，反正赢的概率多过输的概率嘛。但是还是有40%的概率一下就输光了。</p>
<p>假设我们每次按余下本金的一定比例下注，这个比例应该是多少合适呢？假设我们赌了100次，那么大概赢了60次，输了40次，设比例为$x$，则盈利</p>
<p>$f(x)=10000*(1+x)^{60} *(1-x)^{40}$</p>
<p>需要求它的最大值。</p>
<p>一般的，假设每投入1，可能获得额外收益W，或者失去本金L，胜率为p，败率为q，则期望收益</p>
<p>$$f(x)=(1+Wx)^{p} (1-Lx)^{q} $$</p>
<p>为了求它的最大值，先求个导数。</p>
<p>$$f^{&rsquo;}(x)=Wp(1+Wx)^{p-1} (1-Lx)^{q} -L(1-p)(1+Wx)^{p} (1-Lx)^{q-1}=0$$</p>
<p>不难求得</p>
<p>$$x=\frac {bp-q} {bL}$$</p>
<p>当L=1时，即一输就输光时，这个公式称为凯利公式。对本文开头的问题，p=0.6,q=0.4,b=1, 可以算出x=20%。所以，应该每次投入现有本金的20%。假设胜率为0.9，则x=0.8。假设胜率为0.5，则x=0，永远不要参与对半开的赌博，如果胜率小于0.5，就更不能参加了。</p>
<p>凯利公式只是一个近似，它有很多假设，假设可以多次博弈，假设资金无限可分，假设胜率稳定，和投资活动有很多去呗，但还是给我们进行投资提供了一个大致的估算工具，从凯利公司的角度来看，保留一定的现金留作翻本是很有必要的。概率计算在投资中很有必要，虽然投资中盈利的概率估算本身也算是玄学了，但是正如格雷厄姆说的，我们不能因为定量计算很困难就放弃定量计算。</p>
]]></content:encoded><category>life</category><category domain="tags">投资</category><category domain="tags">数学</category></item><item><title>怎样才能不后悔</title><link>https://yifeitao.com/how-can-one-be-unregretful/</link><pubDate>Wed, 15 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/how-can-one-be-unregretful/</guid><description>&lt;p&gt;古话说：这山望见那山高，到了那山喊苦恼。人们做了一个选择后，如果对现状不满，就会开始想当初是否做了错误的决定，人生和玩游戏的最大区别就是不能删档重来，那么怎样才能不后悔呢？&lt;/p&gt;
&lt;p&gt;人生有趣的地方在于，很多决策其实并没有绝对的好与坏，生活中普遍存在围城现象，你觉得想逃离的，可能是别人梦寐以求的，你梦寐以求的，可能是他人想逃离的。我们只能在相对中寻找人生的价值。&lt;/p&gt;
&lt;p&gt;首先，你要知道的是任何情况下，任何环境下，你都有选择的机会，选择有大有小，但是永远存在发挥主动的空间，即使你习惯于现状，也要知道，那其实也是一种选择。&lt;/p&gt;
&lt;p&gt;其次，你要知道所有的选择都是都是有代价的，安于现状牺牲了潜在的机会，换来安稳安逸，转行牺牲了自己打下的基础，换取可能存在的新的机会，而人们更倾向于安于现状是对“可能”这个词存在的天然恐惧，正如投资只是可能赚钱一样，人生也是如此。&lt;/p&gt;
&lt;p&gt;最后，你要为自己的选择负责，竭尽全力的负责，所谓尽人事安天命，而尽人事并不是一个低标准，需要不断打破自己的舒适区，重构自己的思维和行动，将选择带来的可能的概率不断提高，反复尝试。从战略到战术上都科学的去努力，持续的、迭代改进式的为自己的选择负责，毕竟，重大的选择是具有一定的不可逆性的。&lt;/p&gt;
&lt;p&gt;最后的最后，你要相信天道酬勤它不是鸡汤，而是一个人想要站起来，唯一能依靠的真理。&lt;/p&gt;</description><content:encoded><![CDATA[<p>古话说：这山望见那山高，到了那山喊苦恼。人们做了一个选择后，如果对现状不满，就会开始想当初是否做了错误的决定，人生和玩游戏的最大区别就是不能删档重来，那么怎样才能不后悔呢？</p>
<p>人生有趣的地方在于，很多决策其实并没有绝对的好与坏，生活中普遍存在围城现象，你觉得想逃离的，可能是别人梦寐以求的，你梦寐以求的，可能是他人想逃离的。我们只能在相对中寻找人生的价值。</p>
<p>首先，你要知道的是任何情况下，任何环境下，你都有选择的机会，选择有大有小，但是永远存在发挥主动的空间，即使你习惯于现状，也要知道，那其实也是一种选择。</p>
<p>其次，你要知道所有的选择都是都是有代价的，安于现状牺牲了潜在的机会，换来安稳安逸，转行牺牲了自己打下的基础，换取可能存在的新的机会，而人们更倾向于安于现状是对“可能”这个词存在的天然恐惧，正如投资只是可能赚钱一样，人生也是如此。</p>
<p>最后，你要为自己的选择负责，竭尽全力的负责，所谓尽人事安天命，而尽人事并不是一个低标准，需要不断打破自己的舒适区，重构自己的思维和行动，将选择带来的可能的概率不断提高，反复尝试。从战略到战术上都科学的去努力，持续的、迭代改进式的为自己的选择负责，毕竟，重大的选择是具有一定的不可逆性的。</p>
<p>最后的最后，你要相信天道酬勤它不是鸡汤，而是一个人想要站起来，唯一能依靠的真理。</p>
]]></content:encoded><category>life</category><category domain="tags">人生</category><category domain="tags">决策</category></item><item><title>如何面对负面情绪</title><link>https://yifeitao.com/how-to-face-negative-emotion/</link><pubDate>Tue, 14 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/how-to-face-negative-emotion/</guid><description>&lt;h2 id="1-负面情绪的作用"&gt;1 负面情绪的作用&lt;/h2&gt;
&lt;p&gt;想要面对负面情绪，首先要正视负面情绪，那么需要看一看负面情绪的作用，负面情绪乍看起来没什么作用，就像没人喜欢疼痛一样，没有人喜欢负面情绪，可是它是一个信号，你的大脑警告你，你可能遭遇了不好的东西，但是这个“不好”只是大脑给出的一个快速的粗略的结论。负面情绪和正面情绪一样，给了我们认识世界、改变世界，认识自我、改变自我的一个契机，甚至正因为它是负面的，更能激发我们的行动力。人生不如意事十之八九，为什么呢？因为这个世界不是为你而造的，要么改变自己、要买改变世界，否则不如意事不会消失，这种不停的改变或许正是生命的律动，正是人生的意义。只有Matrix中的人才会陷入永恒的和谐。&lt;/p&gt;
&lt;h2 id="2-负面情绪的陷阱"&gt;2 负面情绪的陷阱&lt;/h2&gt;
&lt;p&gt;负面情绪是一种信号，告诉我们遇到了不好的事情，但是不是真的不好，其实是需要理性分析的，我们情绪的大脑适应的是原始人的生活，世事变迁，很多事情变得复杂，不是依靠情绪大脑就能解决的。比如，有人指出你一件事情做得不好，听到的第一反应往往是对抗情绪或者沮丧情绪，“闻过则喜”不是人类的原始反应，而是需要反复锤炼的修养。你可以仔细分析一下这个人说得到底有没有道理，如果你真的是做得不好，应该怎么去改进，如果这个人无理取闹，那么是否有必要有则改之，无则加勉，可能好需要站在这个人的立场考虑，他为什么会作出这样的评价，他的评价有多大的参考价值，对你是否有实质的影响，这一系列的复杂的思维活动，都不是情绪可以解决的，而要动用到理性的大脑，依靠情绪的大脑分析问题最简单最快速，但这是一个陷阱，被情绪控制的人是没有进步的空间的。&lt;/p&gt;
&lt;h2 id="3-负面情绪的排解"&gt;3 负面情绪的排解&lt;/h2&gt;
&lt;p&gt;人是社交的动物，情绪可能也是社交的产物，可能在某些场合，我们必须隐瞒和克制自己的情绪，但可能这违背了人的本性，隐瞒和克制并不能消除它，甚至可能在背后发酵，时不时蹦出来干扰一下你的思考，影响一下你的决策，一个在后台运行的情绪比在前台运行的情绪潜在的危害更大，可能在不知不觉间你就负气做了很多事情，这些事情往往最终只会让人后悔。如果情绪是社交的产物，那么通过社交的方式排解可能是最好的方法，简单点说，就是说出来，找一个可靠的人说出来，无论是爱人、朋友、父母还是心理咨询师，如果这个人能给你一些建议就更好了，如果这个人是个理性的人就好上加好了，即使不是，即使只是耐心的听你说完，可能情绪就排解了。当然很多人都有自己排解情绪的方法，但是我觉得找人倾诉可能是最科学的方法。（可能有相关研究，存疑）&lt;/p&gt;
&lt;h2 id="4-接纳"&gt;4 接纳&lt;/h2&gt;
&lt;p&gt;“想通了”，这是形容一个人从负面情绪中走出来的状态的，在正视问题后，我们要接纳这个世界给我们的反馈，即使它是恶意的，情绪排解可能并不真正解决问题，通过睡眠，人也有从负面情绪中恢复的能力，可是如果问题没解决，这种情绪的消解就只是一个假象，等到问题再次浮现时，负面情绪会再次出现，或者更糟糕，你已经被现实打败，变得麻木不仁了。想要解决问题，第一步是要承认问题的存在，然后想一想到底是自己的问题还是外部世界的问题，自己能操作的空间有多少。&lt;/p&gt;
&lt;h2 id="5-行动"&gt;5 行动&lt;/h2&gt;
&lt;p&gt;面对负面情绪，最终都要落实到行动上，如果发现自己以前的认知是有问题的，才导致自己的情绪被冒犯，那么需要有意识地提高自己的认识水平，以后不要再为同样的事情烦恼，如果发现自己的利益被侵犯了，那么需要想办法去维护去争取，这个行动是在排解了负面情绪，接纳了负面情绪，理性分析过后的行动，所谓的三思而后行，而不是被情绪控制时的那种行动，被情绪控制时的行动可能也有它存在的价值，但往往并不是最优选择，是需要复盘检查的。&lt;/p&gt;
&lt;p&gt;小结一下：负面情绪是一个重要的信号，告知我遇到了“不好”的事情，需要通过倾诉来排解它，通过理性分析来接纳它，最后，根据需要采取一定的行动。&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="1-负面情绪的作用">1 负面情绪的作用</h2>
<p>想要面对负面情绪，首先要正视负面情绪，那么需要看一看负面情绪的作用，负面情绪乍看起来没什么作用，就像没人喜欢疼痛一样，没有人喜欢负面情绪，可是它是一个信号，你的大脑警告你，你可能遭遇了不好的东西，但是这个“不好”只是大脑给出的一个快速的粗略的结论。负面情绪和正面情绪一样，给了我们认识世界、改变世界，认识自我、改变自我的一个契机，甚至正因为它是负面的，更能激发我们的行动力。人生不如意事十之八九，为什么呢？因为这个世界不是为你而造的，要么改变自己、要买改变世界，否则不如意事不会消失，这种不停的改变或许正是生命的律动，正是人生的意义。只有Matrix中的人才会陷入永恒的和谐。</p>
<h2 id="2-负面情绪的陷阱">2 负面情绪的陷阱</h2>
<p>负面情绪是一种信号，告诉我们遇到了不好的事情，但是不是真的不好，其实是需要理性分析的，我们情绪的大脑适应的是原始人的生活，世事变迁，很多事情变得复杂，不是依靠情绪大脑就能解决的。比如，有人指出你一件事情做得不好，听到的第一反应往往是对抗情绪或者沮丧情绪，“闻过则喜”不是人类的原始反应，而是需要反复锤炼的修养。你可以仔细分析一下这个人说得到底有没有道理，如果你真的是做得不好，应该怎么去改进，如果这个人无理取闹，那么是否有必要有则改之，无则加勉，可能好需要站在这个人的立场考虑，他为什么会作出这样的评价，他的评价有多大的参考价值，对你是否有实质的影响，这一系列的复杂的思维活动，都不是情绪可以解决的，而要动用到理性的大脑，依靠情绪的大脑分析问题最简单最快速，但这是一个陷阱，被情绪控制的人是没有进步的空间的。</p>
<h2 id="3-负面情绪的排解">3 负面情绪的排解</h2>
<p>人是社交的动物，情绪可能也是社交的产物，可能在某些场合，我们必须隐瞒和克制自己的情绪，但可能这违背了人的本性，隐瞒和克制并不能消除它，甚至可能在背后发酵，时不时蹦出来干扰一下你的思考，影响一下你的决策，一个在后台运行的情绪比在前台运行的情绪潜在的危害更大，可能在不知不觉间你就负气做了很多事情，这些事情往往最终只会让人后悔。如果情绪是社交的产物，那么通过社交的方式排解可能是最好的方法，简单点说，就是说出来，找一个可靠的人说出来，无论是爱人、朋友、父母还是心理咨询师，如果这个人能给你一些建议就更好了，如果这个人是个理性的人就好上加好了，即使不是，即使只是耐心的听你说完，可能情绪就排解了。当然很多人都有自己排解情绪的方法，但是我觉得找人倾诉可能是最科学的方法。（可能有相关研究，存疑）</p>
<h2 id="4-接纳">4 接纳</h2>
<p>“想通了”，这是形容一个人从负面情绪中走出来的状态的，在正视问题后，我们要接纳这个世界给我们的反馈，即使它是恶意的，情绪排解可能并不真正解决问题，通过睡眠，人也有从负面情绪中恢复的能力，可是如果问题没解决，这种情绪的消解就只是一个假象，等到问题再次浮现时，负面情绪会再次出现，或者更糟糕，你已经被现实打败，变得麻木不仁了。想要解决问题，第一步是要承认问题的存在，然后想一想到底是自己的问题还是外部世界的问题，自己能操作的空间有多少。</p>
<h2 id="5-行动">5 行动</h2>
<p>面对负面情绪，最终都要落实到行动上，如果发现自己以前的认知是有问题的，才导致自己的情绪被冒犯，那么需要有意识地提高自己的认识水平，以后不要再为同样的事情烦恼，如果发现自己的利益被侵犯了，那么需要想办法去维护去争取，这个行动是在排解了负面情绪，接纳了负面情绪，理性分析过后的行动，所谓的三思而后行，而不是被情绪控制时的那种行动，被情绪控制时的行动可能也有它存在的价值，但往往并不是最优选择，是需要复盘检查的。</p>
<p>小结一下：负面情绪是一个重要的信号，告知我遇到了“不好”的事情，需要通过倾诉来排解它，通过理性分析来接纳它，最后，根据需要采取一定的行动。</p>
]]></content:encoded><category>methodology</category><category domain="tags">情绪</category><category domain="tags">心理</category></item><item><title>C#书单</title><link>https://yifeitao.com/awesome-csharp-books/</link><pubDate>Mon, 13 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/awesome-csharp-books/</guid><description>&lt;p&gt;C#语言很好很强大，但是可能我以后会用得越来越少，阶段性总结一些自己的C#书单。&lt;/p&gt;
&lt;h2 id="0x01-基础与参考"&gt;0x01. 基础与参考&lt;/h2&gt;
&lt;h3 id="1-head-first-c"&gt;1 Head First C##&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s4197074.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;这本书我没看过，但是考虑到Head First的一贯质量很好，推荐给其他初学者看过，据反馈相当不错，能在学习C#语法的同时掌握一些面向对象设计的概念。&lt;/p&gt;
&lt;h3 id="2-beginning-c-2008-objects"&gt;2 Beginning C# 2008 Objects&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s6167484.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;这本书已经绝版，网上能找到盗版的电子版，我大概翻过几下，以C#为例讲解面向对象设计。&lt;/p&gt;
&lt;h3 id="3-c本质论"&gt;3 C#本质论&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s27760160.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;这本书精讲了C#的语法与重要的类库，不单有怎么样，还有为什么。作为初步的进阶相当不错，有C++或Java经验的可以直接用这本书入门，这是我真正认真读完的第一本C#书。&lt;/p&gt;
&lt;h3 id="4-果壳中的c"&gt;4 果壳中的C##&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s28152290.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;这本书和上一本风格有点像，也是涉及C#基本语法和类库，内容稍有不同，可以互为参考，比如关于序列化，这本书讲得比较多。&lt;/p&gt;
&lt;h2 id="0x02-进阶"&gt;0x02 进阶&lt;/h2&gt;
&lt;h3 id="5-net设计规范"&gt;5 .NET设计规范&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://img1.doubanio.com/lpic/s4330228.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;这本书是.Net类库设计师写的，对写出高质量的代码帮助很大，尤其是设计类库时，可惜也绝版了，网上可以找到盗版的电子版。&lt;/p&gt;
&lt;h3 id="6-clr-via-c"&gt;6 CLR via C##&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s4476524.jpg" alt="s4476524.jpg" loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;这本书详细介绍了C#语法背后的原理，要想深入理解C#必读，比如属性到底是什么？事件本质上又是什么？&lt;/p&gt;
&lt;h3 id="7-深入理解c"&gt;7 深入理解C#&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://img5.doubanio.com/lpic/s28289936.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;这本书的特点在于从C#的历史来介绍C#的语言特性，深入解析了背后的原理。&lt;/p&gt;
&lt;h2 id="0x03-相关技术"&gt;0x03 相关技术&lt;/h2&gt;
&lt;h3 id="8-wpf-编程宝典"&gt;8 WPF 编程宝典&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s27167932.jpg" alt="s27167932.jpg" loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;如果要开发界面，推荐使用WPF而不是WinForm，这本作为参考书很不错。&lt;/p&gt;
&lt;h3 id="9-wcf服务编程"&gt;9 WCF服务编程&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://img1.doubanio.com/lpic/s6384428.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;如果要开发C/S架构的程序，推荐使用WCF，这本作为参考书很不错。&lt;/p&gt;
&lt;h2 id="0x04-其他"&gt;0x04 其他&lt;/h2&gt;
&lt;h3 id="10-c函数式程序设计"&gt;10 C#函数式程序设计&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s24947382.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;</description><content:encoded><![CDATA[<p>C#语言很好很强大，但是可能我以后会用得越来越少，阶段性总结一些自己的C#书单。</p>
<h2 id="0x01-基础与参考">0x01. 基础与参考</h2>
<h3 id="1-head-first-c">1 Head First C##</h3>
<p><img src="https://img3.doubanio.com/lpic/s4197074.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这本书我没看过，但是考虑到Head First的一贯质量很好，推荐给其他初学者看过，据反馈相当不错，能在学习C#语法的同时掌握一些面向对象设计的概念。</p>
<h3 id="2-beginning-c-2008-objects">2 Beginning C# 2008 Objects</h3>
<p><img src="https://img3.doubanio.com/lpic/s6167484.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这本书已经绝版，网上能找到盗版的电子版，我大概翻过几下，以C#为例讲解面向对象设计。</p>
<h3 id="3-c本质论">3 C#本质论</h3>
<p><img src="https://img3.doubanio.com/lpic/s27760160.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这本书精讲了C#的语法与重要的类库，不单有怎么样，还有为什么。作为初步的进阶相当不错，有C++或Java经验的可以直接用这本书入门，这是我真正认真读完的第一本C#书。</p>
<h3 id="4-果壳中的c">4 果壳中的C##</h3>
<p><img src="https://img3.doubanio.com/lpic/s28152290.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这本书和上一本风格有点像，也是涉及C#基本语法和类库，内容稍有不同，可以互为参考，比如关于序列化，这本书讲得比较多。</p>
<h2 id="0x02-进阶">0x02 进阶</h2>
<h3 id="5-net设计规范">5 .NET设计规范</h3>
<p><img src="https://img1.doubanio.com/lpic/s4330228.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这本书是.Net类库设计师写的，对写出高质量的代码帮助很大，尤其是设计类库时，可惜也绝版了，网上可以找到盗版的电子版。</p>
<h3 id="6-clr-via-c">6 CLR via C##</h3>
<p><img src="https://img3.doubanio.com/lpic/s4476524.jpg" alt="s4476524.jpg" loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这本书详细介绍了C#语法背后的原理，要想深入理解C#必读，比如属性到底是什么？事件本质上又是什么？</p>
<h3 id="7-深入理解c">7 深入理解C#</h3>
<p><img src="https://img5.doubanio.com/lpic/s28289936.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这本书的特点在于从C#的历史来介绍C#的语言特性，深入解析了背后的原理。</p>
<h2 id="0x03-相关技术">0x03 相关技术</h2>
<h3 id="8-wpf-编程宝典">8 WPF 编程宝典</h3>
<p><img src="https://img3.doubanio.com/lpic/s27167932.jpg" alt="s27167932.jpg" loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>如果要开发界面，推荐使用WPF而不是WinForm，这本作为参考书很不错。</p>
<h3 id="9-wcf服务编程">9 WCF服务编程</h3>
<p><img src="https://img1.doubanio.com/lpic/s6384428.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>如果要开发C/S架构的程序，推荐使用WCF，这本作为参考书很不错。</p>
<h2 id="0x04-其他">0x04 其他</h2>
<h3 id="10-c函数式程序设计">10 C#函数式程序设计</h3>
<p><img src="https://img3.doubanio.com/lpic/s24947382.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这本书要偏门一点，C#通过lamda表达式等，对函数式编程是有一定程度的支持的。</p>
<h3 id="11-c-60-cookbook">11 C# 6.0 Cookbook</h3>
<p><img src="https://img1.doubanio.com/lpic/s28341877.jpg" alt="s28341877.jpg" loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>这本我也没仔细看过，翻了一下，基于Cookbook系列的口碑来看，应该不错。</p>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">C#</category><category domain="tags">书单</category></item><item><title>自由主义的亲子关系-读《父母效能手册》</title><link>https://yifeitao.com/parent-effectiveness-training/</link><pubDate>Sun, 12 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/parent-effectiveness-training/</guid><description>&lt;p&gt;&lt;img src="https://img3.doubanio.com/lpic/s28652685.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="https://book.douban.com/subject/26681417/"
rel="noopener noreferrer" target="_blank" class="external"&gt;父母效能手册&lt;/a&gt;
这本书有着那种畅销书的土气的封面，如果不是看到刘未鹏老师的推荐，我是断然不会买这本书的，这倒也警示我以后挑书不能过于歧视封面土气的。&lt;/p&gt;
&lt;p&gt;这是一本教父母如何和孩子有效沟通的书，自然可以归到方法论的范畴，这些方法需要在学习过后实践，我不想在这里做复述，我想说的是我最大的感触，也是这本书背后隐含的价值观：构建父母与孩子间自由主义的关系。&lt;/p&gt;
&lt;p&gt;如果对书背后的价值观没有充分的认同与体会，书中的方法估计是很难真正去实施的。这牵涉到对自由的理解。1859年，严复翻译了John Stuart Mill的On Liberty，书名定为《群己权界论》，现在一般通译《论自由》。我觉得严复对自由的理解相当深刻，远胜过如今还把自由等同于随心所欲，然后进行稻草人论证的人。自由需要在人与人之间划界限，在不影响他人的情况下才能随心所欲。&lt;/p&gt;
&lt;p&gt;使用群己权界的基本原理考查一下亲子关系：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;当父母权利大大超过界限时，孩子成为父母的附庸，失去自由与独立人格，好一点能培养出一个社会需要的螺丝钉，糟糕时会在一定的时候引起孩子的反弹，亲子关系破裂。&lt;/li&gt;
&lt;li&gt;当孩子的权利大大超过界限时，孩子娇生惯养，习惯于全世界都为其让路，缺乏合作精神，面对社会现实时会头破血流。&lt;/li&gt;
&lt;li&gt;当父母和孩子的权利维持良好的界限时，父母和孩子在不影响对方的前提下自由生活，当发生冲突时，对界限进行协商，孩子拥有独立人格，同时具备合作精神，父母也不用活得那么累。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;本书强烈批判的是那种“不是东风压倒西风，就是西风压倒东风”的零和博弈的亲子关系，据我观察，中国的亲子关系以前大多是父母压过孩子，而随着生活水平的提高，独生子女的显赫地位，很多家庭逐步变迁到孩子压过父母，从一个极端快速走向了另一个极端。&lt;/p&gt;
&lt;p&gt;在具体的亲子沟通中，自然会面对具体的问题，需要具体的方法，但是父母的心中应该时刻明了的是：孩子不是父母的附庸、玩物，也不是父母实现自己抱负的工具，同时父母也不需要无条件、无限度的为孩子付出，不能一切为了孩子，而应该有自己的生活，更不能用这种付出进行情感绑架。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://img3.doubanio.com/lpic/s28652685.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p><a href="https://book.douban.com/subject/26681417/"
   rel="noopener noreferrer" target="_blank" class="external">父母效能手册</a>
这本书有着那种畅销书的土气的封面，如果不是看到刘未鹏老师的推荐，我是断然不会买这本书的，这倒也警示我以后挑书不能过于歧视封面土气的。</p>
<p>这是一本教父母如何和孩子有效沟通的书，自然可以归到方法论的范畴，这些方法需要在学习过后实践，我不想在这里做复述，我想说的是我最大的感触，也是这本书背后隐含的价值观：构建父母与孩子间自由主义的关系。</p>
<p>如果对书背后的价值观没有充分的认同与体会，书中的方法估计是很难真正去实施的。这牵涉到对自由的理解。1859年，严复翻译了John Stuart Mill的On Liberty，书名定为《群己权界论》，现在一般通译《论自由》。我觉得严复对自由的理解相当深刻，远胜过如今还把自由等同于随心所欲，然后进行稻草人论证的人。自由需要在人与人之间划界限，在不影响他人的情况下才能随心所欲。</p>
<p>使用群己权界的基本原理考查一下亲子关系：</p>
<ol>
<li>当父母权利大大超过界限时，孩子成为父母的附庸，失去自由与独立人格，好一点能培养出一个社会需要的螺丝钉，糟糕时会在一定的时候引起孩子的反弹，亲子关系破裂。</li>
<li>当孩子的权利大大超过界限时，孩子娇生惯养，习惯于全世界都为其让路，缺乏合作精神，面对社会现实时会头破血流。</li>
<li>当父母和孩子的权利维持良好的界限时，父母和孩子在不影响对方的前提下自由生活，当发生冲突时，对界限进行协商，孩子拥有独立人格，同时具备合作精神，父母也不用活得那么累。</li>
</ol>
<p>本书强烈批判的是那种“不是东风压倒西风，就是西风压倒东风”的零和博弈的亲子关系，据我观察，中国的亲子关系以前大多是父母压过孩子，而随着生活水平的提高，独生子女的显赫地位，很多家庭逐步变迁到孩子压过父母，从一个极端快速走向了另一个极端。</p>
<p>在具体的亲子沟通中，自然会面对具体的问题，需要具体的方法，但是父母的心中应该时刻明了的是：孩子不是父母的附庸、玩物，也不是父母实现自己抱负的工具，同时父母也不需要无条件、无限度的为孩子付出，不能一切为了孩子，而应该有自己的生活，更不能用这种付出进行情感绑架。</p>
]]></content:encoded><category>reading</category><category domain="tags">育儿</category><category domain="tags">读书笔记</category></item><item><title>活给别人看</title><link>https://yifeitao.com/living-for-others/</link><pubDate>Sat, 11 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/living-for-others/</guid><description>&lt;p&gt;每到过年，三亚人就拼了命一般的放烟花爆竹，从年三十到十五，从晚上八点到早上八点，直到把三亚的优质空气也搞出不低的PM2.5来。也不知道是当了地主的当地人放得多，还是东北人放得多。&lt;/p&gt;
&lt;p&gt;烟花这种东西，早几年我还挺喜欢看的，可是后来也就看腻了，现在看到人放烟花，就感觉人民币在空中灼烧，可能放的人要的也就是这个效果，你看你看，我在烧钱呢！我就是有钱，我就是有本事，我就爱烧钱，你管得着吗？有本事你也烧啊！&lt;/p&gt;
&lt;p&gt;今天还看到一条新闻，说浏阳烟花产业不如过去红火了，曾经的花炮专业学校停摆了，毕业生大多数也都改行了。据说现在北京允许放烟花，但是放的人已经大不如前了。可见，整个社会的观念已经在转变了。这种暴发户般烧钱的爱好，这种活给别人看的new money，在很多地方已经开始转型了，从这个角度来看，中国人的自信力可能在逐步上升中。&lt;/p&gt;
&lt;p&gt;说到底，我还是想黑一下三亚人或者三亚的东北人，虽然我现在是一个很喜欢钱的人，但还是希望他们能早日变成old monday，这样，至少我耳根清净一些。又或者，我还是跑掉比较现实一些，和这么多土豪生活在一个城市，真的感觉压力好大的。&lt;/p&gt;
&lt;p&gt;中国人传统的爱面子加上现代消费主义，活给别人看简直成为了中国人生活的主线，一定程度上这是有上进心的表现，一定程度上这也是失去本心，变成攀比机器的表现，希望土豪们都能早日找到生命中更多的乐趣，活出自己的精彩，活给自己看，这样的中国应该会有趣很多。至于我自己，所谓未曾拿起谈何放下，希望有朝一日也能变成土豪，当然，我不会烧钱给人看就是了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>每到过年，三亚人就拼了命一般的放烟花爆竹，从年三十到十五，从晚上八点到早上八点，直到把三亚的优质空气也搞出不低的PM2.5来。也不知道是当了地主的当地人放得多，还是东北人放得多。</p>
<p>烟花这种东西，早几年我还挺喜欢看的，可是后来也就看腻了，现在看到人放烟花，就感觉人民币在空中灼烧，可能放的人要的也就是这个效果，你看你看，我在烧钱呢！我就是有钱，我就是有本事，我就爱烧钱，你管得着吗？有本事你也烧啊！</p>
<p>今天还看到一条新闻，说浏阳烟花产业不如过去红火了，曾经的花炮专业学校停摆了，毕业生大多数也都改行了。据说现在北京允许放烟花，但是放的人已经大不如前了。可见，整个社会的观念已经在转变了。这种暴发户般烧钱的爱好，这种活给别人看的new money，在很多地方已经开始转型了，从这个角度来看，中国人的自信力可能在逐步上升中。</p>
<p>说到底，我还是想黑一下三亚人或者三亚的东北人，虽然我现在是一个很喜欢钱的人，但还是希望他们能早日变成old monday，这样，至少我耳根清净一些。又或者，我还是跑掉比较现实一些，和这么多土豪生活在一个城市，真的感觉压力好大的。</p>
<p>中国人传统的爱面子加上现代消费主义，活给别人看简直成为了中国人生活的主线，一定程度上这是有上进心的表现，一定程度上这也是失去本心，变成攀比机器的表现，希望土豪们都能早日找到生命中更多的乐趣，活出自己的精彩，活给自己看，这样的中国应该会有趣很多。至于我自己，所谓未曾拿起谈何放下，希望有朝一日也能变成土豪，当然，我不会烧钱给人看就是了。</p>
]]></content:encoded><category>life</category><category domain="tags">人生</category><category domain="tags">社会</category></item><item><title>感动中国2016</title><link>https://yifeitao.com/moving-china-2016/</link><pubDate>Fri, 10 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/moving-china-2016/</guid><description>&lt;p&gt;今天看了一下2016年度的《感动中国》，央视评选的人物，自然昭显的事所谓的主流价值观。很多年没关注过这个节目了，应该是做了十几年了，能看到很多进步，但那种过度的利他主义气氛也还是非常浓厚。&lt;/p&gt;
&lt;p&gt;比如有一个山村女教师，扎根35年，培养了两代人，对自己女儿都疏于照顾，现在到了能退休的年纪，虽然说觉得亏钱自己女儿太多，想着以后就帮着带带外孙，可是还是割舍不下大山，想要做到做不动为止。当然我看的时候也不免热泪盈眶，可是想想这样的道德标准，世间有几人能做到呢，如果能建立一个更合理的机制，又是否有必要让人一直奉献牺牲，如果这种感动，不能给人立下一个我也能做到的标杆，不能引发机制的革新，我们无非是每年替某个优秀的搭进入一辈子的乡村教师抹抹眼泪，然后继续该干啥干啥。老是宣扬老实人能吃亏，谁又会愿意当老实人呢。&lt;/p&gt;
&lt;p&gt;当然，救火英雄重伤后，社会和政府全力救助的事则做得很好，虽然很遗憾最后英雄还是去世了。&lt;/p&gt;
&lt;p&gt;之前央视还做过一个大国工匠的系列报道，总忍不住要去渲染那些工匠生活有多艰苦，可是如果技艺这么高超的工匠都没有顶级的收入，谁还愿意去当工匠呢？&lt;/p&gt;
&lt;p&gt;论语中有一则“子贡赎人”和“子路受牛”的故事： &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;鲁国之法，鲁人为人臣妾于诸侯，有能赎之者，取其金于府。子贡赎鲁人于诸侯，来而让不取其金。孔子曰：“赐失之矣。自今以往，鲁人不赎人矣。取其金则无损于行，不取其金则不复赎人矣。”子路拯溺者，其人拜之以牛，子路受之。孔子曰：”鲁人必拯溺者矣。”孔子见之以细，观化远也。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;几千年过去了，今人看问题还是不如孔老夫子通透啊。媒体和政府这种比惨的舆论和道德导向，就该发现一次敲打一次，否则永远都是电视上人人皆尧舜，现实中人人皆猥琐。&lt;/p&gt;</description><content:encoded><![CDATA[<p>今天看了一下2016年度的《感动中国》，央视评选的人物，自然昭显的事所谓的主流价值观。很多年没关注过这个节目了，应该是做了十几年了，能看到很多进步，但那种过度的利他主义气氛也还是非常浓厚。</p>
<p>比如有一个山村女教师，扎根35年，培养了两代人，对自己女儿都疏于照顾，现在到了能退休的年纪，虽然说觉得亏钱自己女儿太多，想着以后就帮着带带外孙，可是还是割舍不下大山，想要做到做不动为止。当然我看的时候也不免热泪盈眶，可是想想这样的道德标准，世间有几人能做到呢，如果能建立一个更合理的机制，又是否有必要让人一直奉献牺牲，如果这种感动，不能给人立下一个我也能做到的标杆，不能引发机制的革新，我们无非是每年替某个优秀的搭进入一辈子的乡村教师抹抹眼泪，然后继续该干啥干啥。老是宣扬老实人能吃亏，谁又会愿意当老实人呢。</p>
<p>当然，救火英雄重伤后，社会和政府全力救助的事则做得很好，虽然很遗憾最后英雄还是去世了。</p>
<p>之前央视还做过一个大国工匠的系列报道，总忍不住要去渲染那些工匠生活有多艰苦，可是如果技艺这么高超的工匠都没有顶级的收入，谁还愿意去当工匠呢？</p>
<p>论语中有一则“子贡赎人”和“子路受牛”的故事： </p>
<blockquote>
<p>鲁国之法，鲁人为人臣妾于诸侯，有能赎之者，取其金于府。子贡赎鲁人于诸侯，来而让不取其金。孔子曰：“赐失之矣。自今以往，鲁人不赎人矣。取其金则无损于行，不取其金则不复赎人矣。”子路拯溺者，其人拜之以牛，子路受之。孔子曰：”鲁人必拯溺者矣。”孔子见之以细，观化远也。</p>
</blockquote>
<p>几千年过去了，今人看问题还是不如孔老夫子通透啊。媒体和政府这种比惨的舆论和道德导向，就该发现一次敲打一次，否则永远都是电视上人人皆尧舜，现实中人人皆猥琐。</p>
]]></content:encoded><category>life</category><category domain="tags">社会</category><category domain="tags">感动中国</category></item><item><title>诗人和诗意</title><link>https://yifeitao.com/poet-and-poetry/</link><pubDate>Thu, 09 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/poet-and-poetry/</guid><description>&lt;p&gt;昨天读到一首顾城的诗：&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3 id="生日"&gt;生日&lt;/h3&gt;
&lt;p&gt;因为生日 
我得到了一个彩色钱夹 
我没有钱 
也不喜欢那些乏味的分币 &lt;/p&gt;
&lt;p&gt;我跑到那个古怪的大土堆后 
去看那些爱美的小花 
我说：我有一个仓库了 
可以用来贮存花籽 &lt;/p&gt;
&lt;p&gt;钱夹里真的装满了花籽 
有的黑亮黑亮 
像奇怪的小眼睛 
我又说：别怕 
我要带你们到春天的家里去 
在那儿，你们会得到 
绿色的短上衣 
和彩色的花边布帽子 &lt;/p&gt;
&lt;p&gt;我有一个小钱夹了 
我不要钱 
不要那些不会发芽的分币 
我只要装满小小的花籽 
我要知道她们的生日 &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;内人评价现代诗说，写得最好的可能是两个渣男：徐志摩、顾城。&lt;/p&gt;
&lt;p&gt;顾城有多渣男我没研究过，但是这首诗我看的时候觉得很有诗意，又不禁哑然失笑了一番，“我没有钱”这一句说不定是他写诗的时候的真实写照，买了个钱包但是里面没装几个钱这种感觉我也是有过的。&lt;/p&gt;
&lt;p&gt;诗人善于把普普通通的事情变得有诗意，对普通人而言，如果能偶尔感受到这种诗意，会发现生活很有趣，可是事情要是走到了极端，彻彻底底活得像个诗人，可能不是什么幸事，一旦无法将诗意和骨感的生活灵活切换，就变成了没钱的浪漫主义，可能诗人本人也不在意，但是往往给身边的人带来困扰甚至灾难。&lt;/p&gt;</description><content:encoded><![CDATA[<p>昨天读到一首顾城的诗：</p>
<blockquote>
<h3 id="生日">生日</h3>
<p>因为生日 
我得到了一个彩色钱夹 
我没有钱 
也不喜欢那些乏味的分币 </p>
<p>我跑到那个古怪的大土堆后 
去看那些爱美的小花 
我说：我有一个仓库了 
可以用来贮存花籽 </p>
<p>钱夹里真的装满了花籽 
有的黑亮黑亮 
像奇怪的小眼睛 
我又说：别怕 
我要带你们到春天的家里去 
在那儿，你们会得到 
绿色的短上衣 
和彩色的花边布帽子 </p>
<p>我有一个小钱夹了 
我不要钱 
不要那些不会发芽的分币 
我只要装满小小的花籽 
我要知道她们的生日 </p>
</blockquote>
<p>内人评价现代诗说，写得最好的可能是两个渣男：徐志摩、顾城。</p>
<p>顾城有多渣男我没研究过，但是这首诗我看的时候觉得很有诗意，又不禁哑然失笑了一番，“我没有钱”这一句说不定是他写诗的时候的真实写照，买了个钱包但是里面没装几个钱这种感觉我也是有过的。</p>
<p>诗人善于把普普通通的事情变得有诗意，对普通人而言，如果能偶尔感受到这种诗意，会发现生活很有趣，可是事情要是走到了极端，彻彻底底活得像个诗人，可能不是什么幸事，一旦无法将诗意和骨感的生活灵活切换，就变成了没钱的浪漫主义，可能诗人本人也不在意，但是往往给身边的人带来困扰甚至灾难。</p>
]]></content:encoded><category>life</category><category domain="tags">诗歌</category><category domain="tags">文化</category></item><item><title>书籍的未来</title><link>https://yifeitao.com/the-future-of-book/</link><pubDate>Wed, 08 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-future-of-book/</guid><description>&lt;p&gt;最近搬家的事情要开始认真考虑了，从去年开始，我们家逐渐接受了极简生活的理念，其实已经很少添置东西了，但是纸质书还是越卖越多，因为目前来看，首先纸质书的阅读体验还不能完全被电子书取代，其次电子书的书库还相当有限，很多书只有劣质的扫描盗版。&lt;/p&gt;
&lt;p&gt;相信未来电子书的书库会不断扩大，撇开这个问题不谈，纸质书和电子书阅读体验上的差异可能才是更核心的问题。就我个人的体验来看，纸质书的优势在于：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;实体感，这不单单是情怀的问题，从记忆理论来说，实体感能起到一个记忆索引或者锚点的作用，不同的阅读场景和不同的书会交织在一起，而电子书则抹去了书和书之间的差异；&lt;/li&gt;
&lt;li&gt;模糊搜索，看书时要前后参考着看，再好的电子书软件似乎也还比不上用手指模糊翻页搜索的体验；&lt;/li&gt;
&lt;li&gt;书写体验，虽然现在的电子书设备也开始有做笔记和批注的功能，但似乎也还远远赶不上纸和笔的体验。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;电子书的优势在于：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;无空间需求：如果你家里码了几百本书，就知道我在说什么了，尤其是你在考虑搬家的问题时；&lt;/li&gt;
&lt;li&gt;精确搜索，你可以精确的搜索电子书中的字词，而纸质书几乎很难，除了少数书有索引外；&lt;/li&gt;
&lt;li&gt;建立信息库，李敖读书号称买两本来撕，有一套强大的纸质书的信息库体系，不过他的方法在电子笔记面前就算不了什么了，只要有心，现在的人要建立一个读书笔记库简直太容易了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;仔细考虑一下纸质书的优势，其实都是建立在习惯上的，毕竟我已经看了二十几年的纸质书，接触电子书则不过十来年，精美一点的电子书更是没出现几年。我想对我的孩子来说，他出生就在一个读屏的时代，虽然也会看一些纸质书，加上以后电子书阅读体验的优化，他是不是会比我更喜欢电子书的阅读呢？而电子书相对纸质书的优势则是碾压式的。&lt;/p&gt;
&lt;p&gt;我想，以后纸质书将成为像现在的实体唱片一样稀有的东西，成为一种怀旧的产物，或者成为艺术品。而且我已经想到了一种必然出现的用于怀旧的电子书阅读器，已经开始攒钱了，就等技术成熟之后苹果公司之类的初一款了。这种设备大概是这样的：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;它看起来，用起来都像一本纸质书，但是它的每一页纸都是电子墨水屏；&lt;/li&gt;
&lt;li&gt;但它同时又是一个智能设备，可以存储很多电子书，甚至联网下载电子书，需要看一本书时，就加载它显示，比如要看《红楼梦》，它就变成了《红楼梦》，要看《算法导论》，它就变成了《算法导论》；&lt;/li&gt;
&lt;li&gt;它配一支电子笔，写起来体验和真笔差不多，写到这本书上，看起来也和真的写到纸上差不多，笔迹可以保存，也可以识别为文字。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果过几年技术成熟了还没人做，我就去创业吧……&lt;/p&gt;</description><content:encoded><![CDATA[<p>最近搬家的事情要开始认真考虑了，从去年开始，我们家逐渐接受了极简生活的理念，其实已经很少添置东西了，但是纸质书还是越卖越多，因为目前来看，首先纸质书的阅读体验还不能完全被电子书取代，其次电子书的书库还相当有限，很多书只有劣质的扫描盗版。</p>
<p>相信未来电子书的书库会不断扩大，撇开这个问题不谈，纸质书和电子书阅读体验上的差异可能才是更核心的问题。就我个人的体验来看，纸质书的优势在于：</p>
<ol>
<li>实体感，这不单单是情怀的问题，从记忆理论来说，实体感能起到一个记忆索引或者锚点的作用，不同的阅读场景和不同的书会交织在一起，而电子书则抹去了书和书之间的差异；</li>
<li>模糊搜索，看书时要前后参考着看，再好的电子书软件似乎也还比不上用手指模糊翻页搜索的体验；</li>
<li>书写体验，虽然现在的电子书设备也开始有做笔记和批注的功能，但似乎也还远远赶不上纸和笔的体验。</li>
</ol>
<p>电子书的优势在于：</p>
<ol>
<li>无空间需求：如果你家里码了几百本书，就知道我在说什么了，尤其是你在考虑搬家的问题时；</li>
<li>精确搜索，你可以精确的搜索电子书中的字词，而纸质书几乎很难，除了少数书有索引外；</li>
<li>建立信息库，李敖读书号称买两本来撕，有一套强大的纸质书的信息库体系，不过他的方法在电子笔记面前就算不了什么了，只要有心，现在的人要建立一个读书笔记库简直太容易了。</li>
</ol>
<p>仔细考虑一下纸质书的优势，其实都是建立在习惯上的，毕竟我已经看了二十几年的纸质书，接触电子书则不过十来年，精美一点的电子书更是没出现几年。我想对我的孩子来说，他出生就在一个读屏的时代，虽然也会看一些纸质书，加上以后电子书阅读体验的优化，他是不是会比我更喜欢电子书的阅读呢？而电子书相对纸质书的优势则是碾压式的。</p>
<p>我想，以后纸质书将成为像现在的实体唱片一样稀有的东西，成为一种怀旧的产物，或者成为艺术品。而且我已经想到了一种必然出现的用于怀旧的电子书阅读器，已经开始攒钱了，就等技术成熟之后苹果公司之类的初一款了。这种设备大概是这样的：</p>
<ol>
<li>它看起来，用起来都像一本纸质书，但是它的每一页纸都是电子墨水屏；</li>
<li>但它同时又是一个智能设备，可以存储很多电子书，甚至联网下载电子书，需要看一本书时，就加载它显示，比如要看《红楼梦》，它就变成了《红楼梦》，要看《算法导论》，它就变成了《算法导论》；</li>
<li>它配一支电子笔，写起来体验和真笔差不多，写到这本书上，看起来也和真的写到纸上差不多，笔迹可以保存，也可以识别为文字。</li>
</ol>
<p>如果过几年技术成熟了还没人做，我就去创业吧……</p>
]]></content:encoded><category>reading</category><category domain="tags">书籍</category><category domain="tags">阅读</category></item><item><title>发展慢下来之后</title><link>https://yifeitao.com/when-development-slow-down/</link><pubDate>Tue, 07 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/when-development-slow-down/</guid><description>&lt;p&gt;今天有同事问了我一个问题：为什么中国经济增速降了一点点大家就大呼小叫，而西方国家发展一直很迟缓也没事？&lt;/p&gt;
&lt;p&gt;我想可能有以下几点原因：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;惯性，中国人习惯了快速增长，我们毕竟从一个落后的状态过了，伴随着经济的高速发展的是，人们生活水平的日新月异，如果慢下来自然有些不习惯，毕竟，大家都还在期待更好的生活；&lt;/li&gt;
&lt;li&gt;快速发展掩盖的公平问题在速度降下来后会逐渐显山露水，过去因为蛋糕每年在增大而不那么尖锐，因为即使是底层分到的蛋糕也在增大，但是蛋糕增大的速度慢下来，可能有些人分到的蛋糕还在高速增大，而有些人则不再增大甚至开始变小；&lt;/li&gt;
&lt;li&gt;钱更难赚了，粗放式经营将难以维系，人们对生活的追求会从量到质转变，对大部分以前轻松赚钱的人而言，自然是寒冬降临，即使是火热的互联网行业，人口红利也基本吃光了，互联网人口基本上达到了极限。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;中国的经济按之前的速度一直高速发展下去是不现实的，关键是发展慢下来之后怎么办？作为一个蚁民能怎么办？如果能逐步缓解公平性问题，社会财富适当向低收入倾斜，还有很大的边际效应可以期待，如果走入困局，则可能要面对几十年来的最大变局。&lt;/p&gt;
&lt;p&gt;速度慢下来之后，想要赚钱只能更加努力，更加认真，更加创新，所谓风停下来，才能看见谁是真正的会飞。去年我在雪球建立的股票组合叫“中产消费升级”，危和机一般都是伴生的，比如白酒企业可能会一天天难过下去，而高端白酒则会发展，各种山寨品牌会逐渐死亡，除非它及时转型。蛮荒之地会越来越少，刀耕火种赚大钱的时代可能越来越远了，厚积薄发、深耕细作则永远不会过时。&lt;/p&gt;
&lt;p&gt;所以，经济发展慢下来，我只能更努力了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>今天有同事问了我一个问题：为什么中国经济增速降了一点点大家就大呼小叫，而西方国家发展一直很迟缓也没事？</p>
<p>我想可能有以下几点原因：</p>
<ol>
<li>惯性，中国人习惯了快速增长，我们毕竟从一个落后的状态过了，伴随着经济的高速发展的是，人们生活水平的日新月异，如果慢下来自然有些不习惯，毕竟，大家都还在期待更好的生活；</li>
<li>快速发展掩盖的公平问题在速度降下来后会逐渐显山露水，过去因为蛋糕每年在增大而不那么尖锐，因为即使是底层分到的蛋糕也在增大，但是蛋糕增大的速度慢下来，可能有些人分到的蛋糕还在高速增大，而有些人则不再增大甚至开始变小；</li>
<li>钱更难赚了，粗放式经营将难以维系，人们对生活的追求会从量到质转变，对大部分以前轻松赚钱的人而言，自然是寒冬降临，即使是火热的互联网行业，人口红利也基本吃光了，互联网人口基本上达到了极限。</li>
</ol>
<p>中国的经济按之前的速度一直高速发展下去是不现实的，关键是发展慢下来之后怎么办？作为一个蚁民能怎么办？如果能逐步缓解公平性问题，社会财富适当向低收入倾斜，还有很大的边际效应可以期待，如果走入困局，则可能要面对几十年来的最大变局。</p>
<p>速度慢下来之后，想要赚钱只能更加努力，更加认真，更加创新，所谓风停下来，才能看见谁是真正的会飞。去年我在雪球建立的股票组合叫“中产消费升级”，危和机一般都是伴生的，比如白酒企业可能会一天天难过下去，而高端白酒则会发展，各种山寨品牌会逐渐死亡，除非它及时转型。蛮荒之地会越来越少，刀耕火种赚大钱的时代可能越来越远了，厚积薄发、深耕细作则永远不会过时。</p>
<p>所以，经济发展慢下来，我只能更努力了。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">社会</category><category domain="tags">发展</category></item><item><title>重复的力量</title><link>https://yifeitao.com/the-power-of-repeat/</link><pubDate>Mon, 06 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-power-of-repeat/</guid><description>&lt;p&gt;走出校门参加工作后，发现在很多高中以前学的东西还是概念很清晰，而大学学的东西则有些不甚牢靠。&lt;/p&gt;
&lt;p&gt;想了想最大的原因可能就是大学学的东西其实信息量远远大过高中的，但是总的学时不长，再加上自己当年不如上高中时目标明确，没有方向感也就没那么努力，所以对所学的材料其实总共没有看几遍，而高中的那点知识，可是经过了反反复复的练习的。&lt;/p&gt;
&lt;p&gt;虽然我觉得高中那种强度的练习对学习知识本身是过度的，纯属为了把人划分三六九等分配大学而进行的军备竞赛。但是事情往往从一个极端走向另一个极端，被重复练习恶心坏了，进了大学则变得厌恶一切练习。及时反馈的练习，适当的重复是建立永久概念的有效方法，不但实践证明了有效，也符合脑神经科学的研究结论。&lt;/p&gt;
&lt;p&gt;我们可以研究各种学习方法，去寻找省时省力的捷径，但是方法往往不是最重要的，最重要的还是那些说烂了的道理，比如要坚持下去，比如要重复练习，在这些基础之上，才有谈方法的意义。&lt;/p&gt;
&lt;p&gt;其实随着年龄的增大，理解力是不断增加的，而且如果在一个领域深耕细作，知识体系已经建立起来，面对新增加的知识，需要重复的次数会少一些，但这一切，都建立在之前的知识是牢固的基础上。&lt;/p&gt;
&lt;p&gt;所以学习这个东西，来不得半点自我欺骗，缺下来的东西都是会有现世报的。这个道理当然是越早知道越好，但是没有人生目标的时候，知道也没什么用吧。&lt;/p&gt;</description><content:encoded><![CDATA[<p>走出校门参加工作后，发现在很多高中以前学的东西还是概念很清晰，而大学学的东西则有些不甚牢靠。</p>
<p>想了想最大的原因可能就是大学学的东西其实信息量远远大过高中的，但是总的学时不长，再加上自己当年不如上高中时目标明确，没有方向感也就没那么努力，所以对所学的材料其实总共没有看几遍，而高中的那点知识，可是经过了反反复复的练习的。</p>
<p>虽然我觉得高中那种强度的练习对学习知识本身是过度的，纯属为了把人划分三六九等分配大学而进行的军备竞赛。但是事情往往从一个极端走向另一个极端，被重复练习恶心坏了，进了大学则变得厌恶一切练习。及时反馈的练习，适当的重复是建立永久概念的有效方法，不但实践证明了有效，也符合脑神经科学的研究结论。</p>
<p>我们可以研究各种学习方法，去寻找省时省力的捷径，但是方法往往不是最重要的，最重要的还是那些说烂了的道理，比如要坚持下去，比如要重复练习，在这些基础之上，才有谈方法的意义。</p>
<p>其实随着年龄的增大，理解力是不断增加的，而且如果在一个领域深耕细作，知识体系已经建立起来，面对新增加的知识，需要重复的次数会少一些，但这一切，都建立在之前的知识是牢固的基础上。</p>
<p>所以学习这个东西，来不得半点自我欺骗，缺下来的东西都是会有现世报的。这个道理当然是越早知道越好，但是没有人生目标的时候，知道也没什么用吧。</p>
]]></content:encoded><category>methodology</category><category domain="tags">学习</category><category domain="tags">方法论</category></item><item><title>.Net框架中的算法与数据结构</title><link>https://yifeitao.com/algorithms-in-dot-net-framework/</link><pubDate>Sun, 05 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/algorithms-in-dot-net-framework/</guid><description>&lt;p&gt;最近复习基础算法，顺带浏览了一下&lt;a href="https://referencesource.microsoft.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;.Net框架的源码&lt;/a&gt;
，通过本文简要总结一下.Net框架中常见数据结构和算法的实现。&lt;/p&gt;
&lt;h2 id="1-集合类"&gt;1 集合类&lt;/h2&gt;
&lt;h3 id="11-listt"&gt;1.1 &lt;code&gt;List&amp;lt;T&amp;gt;&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;List&amp;lt;T&amp;gt;&lt;/code&gt;使用动态数组实现，列表为空时，数组长度为0，加入第一个数据后，数组长度为16，以后当长度不够时会加倍，这时需要新建长数组，并完成复制操作，所以数据量预计很大时，建议指定初始化时的&lt;code&gt;capacity&lt;/code&gt;,否则会进行很多复制操作。没有进行数组的自动缩减，而是提供了显式的&lt;code&gt;TrimExcess&lt;/code&gt;方法，当数组使用率低于90%时，会去除数组中未使用部分，此外也可显式设定&lt;code&gt;Capacity&lt;/code&gt;，这些方法都会产生复制操作。支持二分查找和排序，算法都使用数组的。&lt;/p&gt;
&lt;h3 id="12-linkedlistt"&gt;1.2 &lt;code&gt;LinkedList&amp;lt;T&amp;gt;&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;使用双向环形链表实现，内部直接保存的只有一个head节点。&lt;/p&gt;
&lt;h3 id="13-stackt--queuet"&gt;1.3 &lt;code&gt;Stack&amp;lt;T&amp;gt; Queue&amp;lt;T&amp;gt;&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;基本类似&lt;code&gt;List&amp;lt;T&amp;gt;&lt;/code&gt;，都使用动态数组实现，默认大小均为4，&lt;/p&gt;
&lt;h3 id="14-dictionarytkeytvalue"&gt;1.4 &lt;code&gt;Dictionary&amp;lt;TKey,TValue&amp;gt;&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;字典使用散列表实现，具体使用的是桶加链表的实现，键值对使用数组存储（初始大小和桶大小相同），链表指针使用的是数组的index，桶的大小由大于指定capacity的一个最小质数确定，最小为3，最大为7199369。Tkey的哈希值去除符号位后对桶大小取模得到Hash位置，当键值对数组不够用时需要扩大(使用质数数组中的下一个大小)，桶的大小也随之扩大，如果冲突数超过100，则重新进行Hash。&lt;/p&gt;
&lt;h3 id="15-sortedsett-sorteddictionarytkey-tvalue"&gt;1.5 &lt;code&gt;SortedSet&amp;lt;T&amp;gt; SortedDictionary&amp;lt;TKey, TValue&amp;gt;&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;SortedDictionary&amp;lt;TKey, TValue&amp;gt;&lt;/code&gt;本质上使用&lt;code&gt;SortedSet&amp;lt;T&amp;gt; &lt;/code&gt;实现的，而&lt;code&gt;SortedSet&amp;lt;T&amp;gt; &lt;/code&gt;则是经典的红黑树结构。&lt;/p&gt;
&lt;p&gt;待续&amp;hellip;&lt;/p&gt;</description><content:encoded><![CDATA[<p>最近复习基础算法，顺带浏览了一下<a href="https://referencesource.microsoft.com/"
   rel="noopener noreferrer" target="_blank" class="external">.Net框架的源码</a>
，通过本文简要总结一下.Net框架中常见数据结构和算法的实现。</p>
<h2 id="1-集合类">1 集合类</h2>
<h3 id="11-listt">1.1 <code>List&lt;T&gt;</code></h3>
<p><code>List&lt;T&gt;</code>使用动态数组实现，列表为空时，数组长度为0，加入第一个数据后，数组长度为16，以后当长度不够时会加倍，这时需要新建长数组，并完成复制操作，所以数据量预计很大时，建议指定初始化时的<code>capacity</code>,否则会进行很多复制操作。没有进行数组的自动缩减，而是提供了显式的<code>TrimExcess</code>方法，当数组使用率低于90%时，会去除数组中未使用部分，此外也可显式设定<code>Capacity</code>，这些方法都会产生复制操作。支持二分查找和排序，算法都使用数组的。</p>
<h3 id="12-linkedlistt">1.2 <code>LinkedList&lt;T&gt;</code></h3>
<p>使用双向环形链表实现，内部直接保存的只有一个head节点。</p>
<h3 id="13-stackt--queuet">1.3 <code>Stack&lt;T&gt;  Queue&lt;T&gt;</code></h3>
<p>基本类似<code>List&lt;T&gt;</code>，都使用动态数组实现，默认大小均为4，</p>
<h3 id="14-dictionarytkeytvalue">1.4 <code>Dictionary&lt;TKey,TValue&gt;</code></h3>
<p>字典使用散列表实现，具体使用的是桶加链表的实现，键值对使用数组存储（初始大小和桶大小相同），链表指针使用的是数组的index，桶的大小由大于指定capacity的一个最小质数确定，最小为3，最大为7199369。Tkey的哈希值去除符号位后对桶大小取模得到Hash位置，当键值对数组不够用时需要扩大(使用质数数组中的下一个大小)，桶的大小也随之扩大，如果冲突数超过100，则重新进行Hash。</p>
<h3 id="15-sortedsett-sorteddictionarytkey-tvalue">1.5 <code>SortedSet&lt;T&gt; SortedDictionary&lt;TKey, TValue&gt;</code></h3>
<p><code>SortedDictionary&lt;TKey, TValue&gt;</code>本质上使用<code>SortedSet&lt;T&gt; </code>实现的，而<code>SortedSet&lt;T&gt; </code>则是经典的红黑树结构。</p>
<p>待续&hellip;</p>
]]></content:encoded><category>coding</category><category domain="tags">算法</category><category domain="tags">.NET</category></item><item><title>最好的搜索</title><link>https://yifeitao.com/best-search/</link><pubDate>Sat, 04 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/best-search/</guid><description>&lt;p&gt;最近想要复习一下基础算法，主要方法除了刷题就是看书，刚刚我默默数了一下，一共是八本书同时看，创了我同时看书的新纪录。&lt;/p&gt;
&lt;p&gt;以前上大学的时候，除开努力的因素，单看学习方法，一是目光短浅二是穷，根本不会去找资料辅助学习，学习资料只会使用老师的课件和指定的教材。工作以后，大多数的人则是很少再看书，遇到问题上网搜索一下救急了事。&lt;/p&gt;
&lt;p&gt;从头到尾看一本书存在一定的问题，你的思维就被这本书的作者禁锢了，尤其是想要主题式学习的时候，每本书提供的可能都只是主题的一个侧面。以计算机领域的基础算法来说，红黑树是一种经典的数据结构，几乎每本算法书都会详细讲解，但是讲得最清楚的是它的发明者写的那本《算法》，从背后思想的出发点娓娓道来，远胜最广泛使用的《算法导论》。每本书都有它的可取之处，也有通读一遍时可以先略去不读的部分。&lt;/p&gt;
&lt;p&gt;上网搜索也有它的优势，会有不同人的不同看法，但是问题是大部分看法都不值一看，资料的质量太差。通过搜索可以获得一些引用，但是真正有知识沉淀的还是论文和书籍，而书籍比论文更成体系，好的作者会阅读无数领域内的论文，把它们写到一本书里。而网上的文章，有真知灼见的还是比例很低，而且筛选起来太费时间。&lt;/p&gt;
&lt;p&gt;所以想要知道一个领域内的必备知识，最好的搜索可能是在这个领域内所有的经典教材之中搜索，这样筛选资料的成本很低，按平均50块钱一本书来看，买10本书，也就是500块钱。如果实在太穷，无耻一点看盗版书成本简直为零。通过这些最优秀的资料构建自己的知识体系，获得知识的各个侧面的解读，而不是仅仅学习了一遍作者的思路，才能做到融汇贯通。&lt;/p&gt;
&lt;p&gt;说了这么多，这么变态的读书方法我也是刚刚开始，目前感觉良好，仍需继续努力。&lt;/p&gt;</description><content:encoded><![CDATA[<p>最近想要复习一下基础算法，主要方法除了刷题就是看书，刚刚我默默数了一下，一共是八本书同时看，创了我同时看书的新纪录。</p>
<p>以前上大学的时候，除开努力的因素，单看学习方法，一是目光短浅二是穷，根本不会去找资料辅助学习，学习资料只会使用老师的课件和指定的教材。工作以后，大多数的人则是很少再看书，遇到问题上网搜索一下救急了事。</p>
<p>从头到尾看一本书存在一定的问题，你的思维就被这本书的作者禁锢了，尤其是想要主题式学习的时候，每本书提供的可能都只是主题的一个侧面。以计算机领域的基础算法来说，红黑树是一种经典的数据结构，几乎每本算法书都会详细讲解，但是讲得最清楚的是它的发明者写的那本《算法》，从背后思想的出发点娓娓道来，远胜最广泛使用的《算法导论》。每本书都有它的可取之处，也有通读一遍时可以先略去不读的部分。</p>
<p>上网搜索也有它的优势，会有不同人的不同看法，但是问题是大部分看法都不值一看，资料的质量太差。通过搜索可以获得一些引用，但是真正有知识沉淀的还是论文和书籍，而书籍比论文更成体系，好的作者会阅读无数领域内的论文，把它们写到一本书里。而网上的文章，有真知灼见的还是比例很低，而且筛选起来太费时间。</p>
<p>所以想要知道一个领域内的必备知识，最好的搜索可能是在这个领域内所有的经典教材之中搜索，这样筛选资料的成本很低，按平均50块钱一本书来看，买10本书，也就是500块钱。如果实在太穷，无耻一点看盗版书成本简直为零。通过这些最优秀的资料构建自己的知识体系，获得知识的各个侧面的解读，而不是仅仅学习了一遍作者的思路，才能做到融汇贯通。</p>
<p>说了这么多，这么变态的读书方法我也是刚刚开始，目前感觉良好，仍需继续努力。</p>
]]></content:encoded><category>methodology</category><category domain="tags">互联网</category><category domain="tags">搜索</category></item><item><title>管理向下</title><link>https://yifeitao.com/management-down/</link><pubDate>Fri, 03 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/management-down/</guid><description>&lt;p&gt;今天是春节后第一天上班，单位开了好几个会，主题都是“假已经放完了，大家要切换状态，好好工作啊！”。&lt;/p&gt;
&lt;p&gt;对我来说，我已经过了快半年没有假期的生活，每天都安排得满满的，无论是学习还是陪家人，都很尽力，年过三十的人，越来越感觉光阴催人。&lt;/p&gt;
&lt;p&gt;结果就是，这些试图让人认真工作的会议完全变成了对我的困扰，严重浪费了我的时间。站在管理者的角度来看，他很难分辨谁需要这种提醒，即使分辨出来了，出于情面考虑也得大家一起吃药，管理者为了“照顾”最需要管理的人的情况，把大家都要拖入一个不必要的浪费模式。&lt;/p&gt;
&lt;p&gt;实际情况可能更糟糕的是，管理者本身的出发点可能总体上是为了整体利益，但是也夹杂了自己的权力欲，很多管理者的个人爱好就是对人训话，教别人怎么做人，再加上管理是为了保住底线，向表现最差的人看齐，最后这样的管理就变成了灾难，对优秀的人来说，只有彻底滚蛋才能好受一点，天天用有则改之无则加勉欺骗自己毕竟不是长久之计。&lt;/p&gt;
&lt;p&gt;从这个角度反思，如果成为一个管理者，在面对参差不齐的成员时，首先最好能区别对待，一人生病，大家吃药的事情不见得都有预防作用，也可能有反作用；其次说话要言简意赅，点到即止，不要把教育别人当成严重成就感，好为人师是一种病，管理团队的主要目的是把事情做好，当然团队文化的培养也很重要，但那不是光靠嘴上说出来的，而应该渗透到做事的标准上。&lt;/p&gt;
&lt;p&gt;当然一个更加完美的反思角度应该是，如果能选择团队成员，永远记得宁缺毋滥，好的人才只需要很少的管理，管理往往会把所有人往团队中最低水平的人去塑造，虽然口头上会让大家学习先进典型，但这些话永远是最适用于最糟糕的那些人的。&lt;/p&gt;
&lt;p&gt;甚至最最讽刺的事情时，有的人溜号了，结果其他人莫名其妙挨一顿骂，该挨骂的人却不在现场。&lt;/p&gt;</description><content:encoded><![CDATA[<p>今天是春节后第一天上班，单位开了好几个会，主题都是“假已经放完了，大家要切换状态，好好工作啊！”。</p>
<p>对我来说，我已经过了快半年没有假期的生活，每天都安排得满满的，无论是学习还是陪家人，都很尽力，年过三十的人，越来越感觉光阴催人。</p>
<p>结果就是，这些试图让人认真工作的会议完全变成了对我的困扰，严重浪费了我的时间。站在管理者的角度来看，他很难分辨谁需要这种提醒，即使分辨出来了，出于情面考虑也得大家一起吃药，管理者为了“照顾”最需要管理的人的情况，把大家都要拖入一个不必要的浪费模式。</p>
<p>实际情况可能更糟糕的是，管理者本身的出发点可能总体上是为了整体利益，但是也夹杂了自己的权力欲，很多管理者的个人爱好就是对人训话，教别人怎么做人，再加上管理是为了保住底线，向表现最差的人看齐，最后这样的管理就变成了灾难，对优秀的人来说，只有彻底滚蛋才能好受一点，天天用有则改之无则加勉欺骗自己毕竟不是长久之计。</p>
<p>从这个角度反思，如果成为一个管理者，在面对参差不齐的成员时，首先最好能区别对待，一人生病，大家吃药的事情不见得都有预防作用，也可能有反作用；其次说话要言简意赅，点到即止，不要把教育别人当成严重成就感，好为人师是一种病，管理团队的主要目的是把事情做好，当然团队文化的培养也很重要，但那不是光靠嘴上说出来的，而应该渗透到做事的标准上。</p>
<p>当然一个更加完美的反思角度应该是，如果能选择团队成员，永远记得宁缺毋滥，好的人才只需要很少的管理，管理往往会把所有人往团队中最低水平的人去塑造，虽然口头上会让大家学习先进典型，但这些话永远是最适用于最糟糕的那些人的。</p>
<p>甚至最最讽刺的事情时，有的人溜号了，结果其他人莫名其妙挨一顿骂，该挨骂的人却不在现场。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">管理</category><category domain="tags">职场</category></item><item><title>学习中的自我欺骗</title><link>https://yifeitao.com/self-deception-in-learning/</link><pubDate>Thu, 02 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/self-deception-in-learning/</guid><description>&lt;p&gt;现代人生活在变化飞快的时代，所以随时有被时代抛弃的焦虑感，这未尝不是好事，会激励人活到老学到老，但是我发现带着焦虑干学习很容易陷入自我欺骗的窘境。&lt;/p&gt;
&lt;p&gt;要想深刻的学习，需要把整个大脑全方位的调动起来，这是一件很累的事情，适应远古时期部分的大脑会觉得其他部分的大脑在浪费时间和能量，做一些根本不重要的事情，它不见兔子不撒鹰。这种潜意识弥漫开时的后果就是，你好像在认真学习，但是脑子有一大半在晃神，每当你觉得需要深入理解一下，需要动手验证一下，这部分大脑会劝你说，没必要钻牛角尖，差不多得了。&lt;/p&gt;
&lt;p&gt;当然不是说学习时对知识的每个犄角旮旯都要一一弄清，但至少很多时候时需要钻研一下的，可惜更多的时候，大脑习惯于作出努力的样子就自我满足了，你看你看，我又看了10页书呢，至于理解了多少就不管了，本质上时因为这样比较轻松啊，大脑是一个时刻想偷懒的器官。&lt;/p&gt;
&lt;p&gt;所以好的学习状态，跟舒服闲适的状态是很难兼容的，要打破这种自我欺骗，可能有以下一些方法。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;场景转换，找一个干扰少的环境学习，不要将学习和娱乐的环境混在一起，比如找自习室、工作间；&lt;/li&gt;
&lt;li&gt;寻找意义，及时奖励，甚至只需要假装奖励自己都行，比如弄懂一个算法奖励自己，告诉自己赚了1000块钱，想象得越逼真越有效果；&lt;/li&gt;
&lt;li&gt;带着问题学习，为了通过测试而学习，为了完成一个项目而学习，总之要以输出带动输入。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>现代人生活在变化飞快的时代，所以随时有被时代抛弃的焦虑感，这未尝不是好事，会激励人活到老学到老，但是我发现带着焦虑干学习很容易陷入自我欺骗的窘境。</p>
<p>要想深刻的学习，需要把整个大脑全方位的调动起来，这是一件很累的事情，适应远古时期部分的大脑会觉得其他部分的大脑在浪费时间和能量，做一些根本不重要的事情，它不见兔子不撒鹰。这种潜意识弥漫开时的后果就是，你好像在认真学习，但是脑子有一大半在晃神，每当你觉得需要深入理解一下，需要动手验证一下，这部分大脑会劝你说，没必要钻牛角尖，差不多得了。</p>
<p>当然不是说学习时对知识的每个犄角旮旯都要一一弄清，但至少很多时候时需要钻研一下的，可惜更多的时候，大脑习惯于作出努力的样子就自我满足了，你看你看，我又看了10页书呢，至于理解了多少就不管了，本质上时因为这样比较轻松啊，大脑是一个时刻想偷懒的器官。</p>
<p>所以好的学习状态，跟舒服闲适的状态是很难兼容的，要打破这种自我欺骗，可能有以下一些方法。</p>
<ol>
<li>场景转换，找一个干扰少的环境学习，不要将学习和娱乐的环境混在一起，比如找自习室、工作间；</li>
<li>寻找意义，及时奖励，甚至只需要假装奖励自己都行，比如弄懂一个算法奖励自己，告诉自己赚了1000块钱，想象得越逼真越有效果；</li>
<li>带着问题学习，为了通过测试而学习，为了完成一个项目而学习，总之要以输出带动输入。</li>
</ol>
]]></content:encoded><category>viewpoint</category><category domain="tags">学习</category><category domain="tags">认知</category></item><item><title>个体经验与中医</title><link>https://yifeitao.com/individual-experience-and-zhongyi/</link><pubDate>Wed, 01 Feb 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/individual-experience-and-zhongyi/</guid><description>&lt;p&gt;我听说过无数关于治疗感冒的偏方，有喝酒的，有吃生鸡蛋的，有喝姜汤的。&lt;/p&gt;
&lt;p&gt;对现代医学来说，感冒基本上还是一种“不治之症”，没有针对感冒病毒的有效药物，而完全要靠人体自愈，所以多喝开水多休息就是最合理的治疗方案，在没有细菌并发感染的情况下就使用抗生素简直是自取灭亡之道，而市面上的感冒药真正的有效成分都是用于缓解感冒症状的，如果你没办法休息，需要坚持工作，那么吃点感冒药缓解一些流鼻涕之类的症状无可厚非，但感冒药广告中声称的消灭感冒病毒就是胡说了。&lt;/p&gt;
&lt;p&gt;所以只要你好好休息，只要你身体强壮，几乎吃任何东西都可以当成治疗感冒的偏方。这里可以看出个体经验的不可信之处，把时间上的先后关系等同于因果关系是人类思考时的简化模式，但常常会犯错误，我吃了一个生鸡蛋，第二天感冒好了些，再吃一个，第三天彻底好了，所以吃生鸡蛋治疗感冒是有效的，甚至不单单对我有效，我把这个经验推广给别人发现也是有效的。一部分中医的有效就是这么来的。&lt;/p&gt;
&lt;p&gt;西学东渐的一百多年中，中国几乎全盘接受了西方的科学技术，唯独在医学上扭扭捏捏，这里面有好几重原因。&lt;/p&gt;
&lt;p&gt;第一，现代医学本来起步就晚，很多理论还不完善，还有很多不治之症，给中国传统医学留下了空间；&lt;/p&gt;
&lt;p&gt;第二，经济原因，中国传统医学讲的是万物皆可入药，“赤脚医生”不管能不能治病，至少花很少的钱给了患者一点希望，毕竟先进合理的医疗不是人人都能享有的；&lt;/p&gt;
&lt;p&gt;第三，可能是最重要的原因，医学很难和个体经验剥离，每个人都认为自己很了解自己的身体，尽管医学可能不比物理学简单，但物理学是抽象的，与普通人距离很远，而医学研究人的身体，人人都觉得自己很熟悉，虽然这可能是一个幻觉。既然“人人都懂医学”，中国人为什么不能比西方人更懂医学？坚持一套独特的医学体系已经成为一种文化上的抵抗，让一门本应该是科学的学科成为了泛泛的文化，这是中国人的悲哀。中医成了文化，绑架了现代医学，然后再搭上民族自尊心和爱国主义，所以问题变得越发复杂。&lt;/p&gt;
&lt;p&gt;剥离不了个体经验的学科是难以成为一门科学的，或者说是不具有普遍意义和推广价值的，吃生鸡蛋治感冒这样的经验，是不能治病的。所幸，现代医学已经发展出一套合理的方法，来剥离个体经验，下次我们再谈谈安慰剂和双盲测试。&lt;/p&gt;</description><content:encoded><![CDATA[<p>我听说过无数关于治疗感冒的偏方，有喝酒的，有吃生鸡蛋的，有喝姜汤的。</p>
<p>对现代医学来说，感冒基本上还是一种“不治之症”，没有针对感冒病毒的有效药物，而完全要靠人体自愈，所以多喝开水多休息就是最合理的治疗方案，在没有细菌并发感染的情况下就使用抗生素简直是自取灭亡之道，而市面上的感冒药真正的有效成分都是用于缓解感冒症状的，如果你没办法休息，需要坚持工作，那么吃点感冒药缓解一些流鼻涕之类的症状无可厚非，但感冒药广告中声称的消灭感冒病毒就是胡说了。</p>
<p>所以只要你好好休息，只要你身体强壮，几乎吃任何东西都可以当成治疗感冒的偏方。这里可以看出个体经验的不可信之处，把时间上的先后关系等同于因果关系是人类思考时的简化模式，但常常会犯错误，我吃了一个生鸡蛋，第二天感冒好了些，再吃一个，第三天彻底好了，所以吃生鸡蛋治疗感冒是有效的，甚至不单单对我有效，我把这个经验推广给别人发现也是有效的。一部分中医的有效就是这么来的。</p>
<p>西学东渐的一百多年中，中国几乎全盘接受了西方的科学技术，唯独在医学上扭扭捏捏，这里面有好几重原因。</p>
<p>第一，现代医学本来起步就晚，很多理论还不完善，还有很多不治之症，给中国传统医学留下了空间；</p>
<p>第二，经济原因，中国传统医学讲的是万物皆可入药，“赤脚医生”不管能不能治病，至少花很少的钱给了患者一点希望，毕竟先进合理的医疗不是人人都能享有的；</p>
<p>第三，可能是最重要的原因，医学很难和个体经验剥离，每个人都认为自己很了解自己的身体，尽管医学可能不比物理学简单，但物理学是抽象的，与普通人距离很远，而医学研究人的身体，人人都觉得自己很熟悉，虽然这可能是一个幻觉。既然“人人都懂医学”，中国人为什么不能比西方人更懂医学？坚持一套独特的医学体系已经成为一种文化上的抵抗，让一门本应该是科学的学科成为了泛泛的文化，这是中国人的悲哀。中医成了文化，绑架了现代医学，然后再搭上民族自尊心和爱国主义，所以问题变得越发复杂。</p>
<p>剥离不了个体经验的学科是难以成为一门科学的，或者说是不具有普遍意义和推广价值的，吃生鸡蛋治感冒这样的经验，是不能治病的。所幸，现代医学已经发展出一套合理的方法，来剥离个体经验，下次我们再谈谈安慰剂和双盲测试。</p>
]]></content:encoded><category>life</category><category domain="tags">中医</category><category domain="tags">认知</category></item><item><title>都是你自己的错</title><link>https://yifeitao.com/the-always-your-fault/</link><pubDate>Tue, 31 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-always-your-fault/</guid><description>&lt;p&gt;前几天跟某个人约好，让他帮我一个忙，他满口答应了，今天晚上再确认的时候，他说情况有变，搞得我很被动，计划都被打乱了，事实上，如果我早几个小时确认，还有很好的补救措施。&lt;/p&gt;
&lt;p&gt;当然我也在内心里埋怨了几句这个人的不靠谱行为，当初答应的事情，如果情况有变，应该通知我的。可是仔细想想，这又有什么用呢？需要把一件事情做成的人是我，抱怨是自己无能的表现，人生在世，难免需要别人帮忙，但是对不可控因素没有预估，造成了损失，骂娘也没什么用了。千错万错，错在我没有及时确认，让自己陷入了被动的局面。虽然这是一件小事情，但是以小见大，值得三思。&lt;/p&gt;
&lt;p&gt;及时的确认很重要，有备用方案很重要。&lt;/p&gt;</description><content:encoded><![CDATA[<p>前几天跟某个人约好，让他帮我一个忙，他满口答应了，今天晚上再确认的时候，他说情况有变，搞得我很被动，计划都被打乱了，事实上，如果我早几个小时确认，还有很好的补救措施。</p>
<p>当然我也在内心里埋怨了几句这个人的不靠谱行为，当初答应的事情，如果情况有变，应该通知我的。可是仔细想想，这又有什么用呢？需要把一件事情做成的人是我，抱怨是自己无能的表现，人生在世，难免需要别人帮忙，但是对不可控因素没有预估，造成了损失，骂娘也没什么用了。千错万错，错在我没有及时确认，让自己陷入了被动的局面。虽然这是一件小事情，但是以小见大，值得三思。</p>
<p>及时的确认很重要，有备用方案很重要。</p>
]]></content:encoded><category>life</category><category domain="tags">认知</category><category domain="tags">责任</category></item><item><title>面向巧合编程</title><link>https://yifeitao.com/coincidence-oriented-programming/</link><pubDate>Sun, 29 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/coincidence-oriented-programming/</guid><description>&lt;p&gt;比起面向过程编程或者面向对象编程，其实很多程序员最常用的编程范式是面向巧合编程。当然我们可以站在高处批判这种作法，但是我想这里面的原因也值得追溯一下。&lt;/p&gt;
&lt;p&gt;一个理想的程序员当然是热爱编程的人，所以它会对自己写的每行代码都较真，要去弄清背后的事情，但是更多的程序员只不过是打一份工而已，完成老板交待的任务就好了，然后打卡下班，所以软件工程才显得那么重要，一个函数可以写得很烂，但如果它通过了所有的测试，也就变得可以接受了。&lt;/p&gt;
&lt;p&gt;有很多项目，不过是领导上拍脑袋想出来的，出生的一刻就注定了被丢弃的命运，虽然我们说不要写学生代码，但是毕业了不见得就不要写一次性的演示代码。工程师思维的特点之一是也解决问题为主要目标，至于为什么解决了问题，相对没有那么重要，所以你发现很多面向巧合编程的最终似乎也解决了问题，It just works。&lt;/p&gt;
&lt;p&gt;面向巧合编程的巧合来自两个层面，一个是原理层面的，代码原理未彻底搞懂，但是实现了效果，这里面的主要风险在于测试不充分，真正运行起来面对复杂的应用方式总会有跪掉的一刻。其实还有另外一个层面的巧合，就是未彻底理解用户需求，按自己理解瞎搞了一番，结果用户接受了，原因可能是往往用户自己也不知道自己的需求是什么，所以现在都强调迭代开发，用户参与。&lt;/p&gt;
&lt;p&gt;面向巧合编程无疑是相当危险的，它通过放弃深究原理来赢取时间，稍有不慎就更加浪费时间，作为一个有追求的程序员应该彻底摒弃这种范式，如果面对不得不写这种代码的窘境，最好的出路是换份工作，作为管理者，自然是优先去招有追求的程序员，把测试等外部监管手段作为最后的防御。毕竟，我们生活在一个现实的世界，追求有美感的东西可以帮助工程师更好的解决问题，但解决问题是最终目标。&lt;/p&gt;
&lt;p&gt;（&lt;em&gt;这是一份草稿&lt;/em&gt;）&lt;/p&gt;</description><content:encoded><![CDATA[<p>比起面向过程编程或者面向对象编程，其实很多程序员最常用的编程范式是面向巧合编程。当然我们可以站在高处批判这种作法，但是我想这里面的原因也值得追溯一下。</p>
<p>一个理想的程序员当然是热爱编程的人，所以它会对自己写的每行代码都较真，要去弄清背后的事情，但是更多的程序员只不过是打一份工而已，完成老板交待的任务就好了，然后打卡下班，所以软件工程才显得那么重要，一个函数可以写得很烂，但如果它通过了所有的测试，也就变得可以接受了。</p>
<p>有很多项目，不过是领导上拍脑袋想出来的，出生的一刻就注定了被丢弃的命运，虽然我们说不要写学生代码，但是毕业了不见得就不要写一次性的演示代码。工程师思维的特点之一是也解决问题为主要目标，至于为什么解决了问题，相对没有那么重要，所以你发现很多面向巧合编程的最终似乎也解决了问题，It just works。</p>
<p>面向巧合编程的巧合来自两个层面，一个是原理层面的，代码原理未彻底搞懂，但是实现了效果，这里面的主要风险在于测试不充分，真正运行起来面对复杂的应用方式总会有跪掉的一刻。其实还有另外一个层面的巧合，就是未彻底理解用户需求，按自己理解瞎搞了一番，结果用户接受了，原因可能是往往用户自己也不知道自己的需求是什么，所以现在都强调迭代开发，用户参与。</p>
<p>面向巧合编程无疑是相当危险的，它通过放弃深究原理来赢取时间，稍有不慎就更加浪费时间，作为一个有追求的程序员应该彻底摒弃这种范式，如果面对不得不写这种代码的窘境，最好的出路是换份工作，作为管理者，自然是优先去招有追求的程序员，把测试等外部监管手段作为最后的防御。毕竟，我们生活在一个现实的世界，追求有美感的东西可以帮助工程师更好的解决问题，但解决问题是最终目标。</p>
<p>（<em>这是一份草稿</em>）</p>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">软件工程</category></item><item><title>不要傲慢</title><link>https://yifeitao.com/be-not-proud/</link><pubDate>Wed, 25 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/be-not-proud/</guid><description>&lt;p&gt;最近其实上网闲逛很少了，但是偶尔看看，感觉中文互联网上弥漫着一股傲慢的气息，感觉非常不好。表现有以下几点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不容许任何对中国的批评，认为批评的人都居心不良，要不是拿了黑钱就是内心阴暗；&lt;/li&gt;
&lt;li&gt;认为西方在不断衰退，中国在不断强大，西方都要开始跪舔中国，西方领导人以及西方人都是白痴，比如美国人就选出来了川普这样的白痴；&lt;/li&gt;
&lt;li&gt;随时都敢跟美国干一架，至于收拾日本、台湾，更是分分钟不在话下；&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;中国最近几十年经历了高速发展，可能是世界上进步最大的国家了，90后，00后出生在经济高速发展的年代，确实有自傲的资本，可是自豪变成了傲慢，是相当可怕的事情。&lt;/p&gt;
&lt;p&gt;站在国家的角度来看，中国无论是硬实力还是软实力，仍然和发达国家有客观存在的差距。硬实力主要看科技，真正的科技工作者都会明白这中间还有很多差距，以互联网行业而言，中国企业几乎还没有过真正的创新，都是把硅谷成功的模式抄到中国，当前大热的深度学习等理念，依然是美国在主导。软实力可以看国民素质，哪些屡见不鲜的中国游客的新闻提醒我们，我们离一个文明的族群还有一定距离。把川普看作白痴的人，估计大概率要被打脸的。&lt;/p&gt;
&lt;p&gt;站在个人的角度来看，年轻人失去了知耻而后勇的尽头，中国的发展也就要告一段落了，一个真正努力的人，必然不会把爱国挂在嘴边，当成自己最大的资本，看了几篇几百字的分析文章，就开始对世界局势指点江山，一副老子天下第一的架势，借的不是自己有本事的底气，而是身处一个族群的虚无的荣光，这样的人如果占了主体，就真的完蛋了。&lt;/p&gt;
&lt;p&gt;傲慢带来的，无论是发展的停滞，还是战火的危险，都不是个人之幸，国族之幸，但愿我只是神经过敏，杞人忧天。&lt;/p&gt;</description><content:encoded><![CDATA[<p>最近其实上网闲逛很少了，但是偶尔看看，感觉中文互联网上弥漫着一股傲慢的气息，感觉非常不好。表现有以下几点：</p>
<ol>
<li>不容许任何对中国的批评，认为批评的人都居心不良，要不是拿了黑钱就是内心阴暗；</li>
<li>认为西方在不断衰退，中国在不断强大，西方都要开始跪舔中国，西方领导人以及西方人都是白痴，比如美国人就选出来了川普这样的白痴；</li>
<li>随时都敢跟美国干一架，至于收拾日本、台湾，更是分分钟不在话下；</li>
</ol>
<p>中国最近几十年经历了高速发展，可能是世界上进步最大的国家了，90后，00后出生在经济高速发展的年代，确实有自傲的资本，可是自豪变成了傲慢，是相当可怕的事情。</p>
<p>站在国家的角度来看，中国无论是硬实力还是软实力，仍然和发达国家有客观存在的差距。硬实力主要看科技，真正的科技工作者都会明白这中间还有很多差距，以互联网行业而言，中国企业几乎还没有过真正的创新，都是把硅谷成功的模式抄到中国，当前大热的深度学习等理念，依然是美国在主导。软实力可以看国民素质，哪些屡见不鲜的中国游客的新闻提醒我们，我们离一个文明的族群还有一定距离。把川普看作白痴的人，估计大概率要被打脸的。</p>
<p>站在个人的角度来看，年轻人失去了知耻而后勇的尽头，中国的发展也就要告一段落了，一个真正努力的人，必然不会把爱国挂在嘴边，当成自己最大的资本，看了几篇几百字的分析文章，就开始对世界局势指点江山，一副老子天下第一的架势，借的不是自己有本事的底气，而是身处一个族群的虚无的荣光，这样的人如果占了主体，就真的完蛋了。</p>
<p>傲慢带来的，无论是发展的停滞，还是战火的危险，都不是个人之幸，国族之幸，但愿我只是神经过敏，杞人忧天。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">人生</category><category domain="tags">谦逊</category></item><item><title>中医是个伪概念</title><link>https://yifeitao.com/zhongyi-is-a-pseudo-concept/</link><pubDate>Tue, 24 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/zhongyi-is-a-pseudo-concept/</guid><description>&lt;p&gt;一直想写一写中医的话题，主要是想给家人看看，可是一直都不敢写，因为这个话题太大，它不单单是个科学问题，也牵涉到民族自尊心，政府在有意识的推广，甚至给予了立法支持，医学院有中医的课程，制药企业、医学界、媒体都牵涉其中，中医药是一个产值4100亿的产业，我有什么资格去谈呢？我觉得我学养不够，既不懂中医的阴阳五行，也不懂西医的循证医学。好在我还有理性思维，有些问题其实不必要掌握所有的细节，仅凭理性分析与随处可见的事实就能得出很多结论。&lt;/p&gt;
&lt;p&gt;对中医的认识，和很多人一样，我曾经是很模糊的，我跟很多人都聊过这个话题，包括各种学历层次各个地域的中国人，其实很多人并没有细想过这个问题，生病就去医院看医生，然后医生开药，一般多是西药夹杂一些中药，少数人被慢性病折磨时会想到去看中医，抓几副药去吃，有吃了没效果的，也有吃了觉得效果很好的。&lt;/p&gt;
&lt;p&gt;是的，一个国家的医学的一半，至少试图是一半，都在讲望闻问切、针灸配伍，一个普通人，有什么能力去分辨这一切的是非呢？可是当我不幸或有幸不断思考中医的问题后，就发现生活在一个巨大的有意无意的4100亿产值的骗局之中，这么多钱，这个产业中已经没有几个是干净的了。某一天，我突然想明白中医是个伪概念，突然觉得豁然开朗，即使还有很多技术性细节问题，但是只要明白这一点，一个人对中医的认识也会发生天翻地覆的变化，朝着科学理性的方向发展。如果不能接受这个观念，也几乎不能再一起讨论下去。&lt;/p&gt;
&lt;p&gt;为什么说中医是个伪概念呢？&lt;/p&gt;
&lt;p&gt;我们听过无数遍这样的广告词“中西药结合疗效好”、“西医治标，中医治本”。可见，中医这个概念和西医这个概念是伴生的，在中国人见识所谓的西医之前，是没有中医的概念的，而只有医学的概念。任何国家、任何族群的人都会生病，他们都会想办法去治病，这些经验或理论总结出来就形成了医学。类比一下，在接触西方的数学体系之前，中国人也有自己的数学，有祖冲之这样的数学家，但是奇怪的是，现在的中国，没有所谓的中数、西数之分，而只有一门学科，就叫数学。&lt;/p&gt;
&lt;p&gt;中医、西医两个概念是伴生的，但是这里的思维陷阱在于中医应当是中国传统医学，而西医则是西方现代医学，如果有兴趣读一读医学史就知道，现代这套打针吃药输血做手术的医学，在西方兴起也不过几百年，在此之前，西方人（欧洲人）是怎么治病的呢？有草药，有放血疗法，甚至也有类似针灸的做法，只不过后来他们发现这些方法不科学，而找到了一套更加科学的理论和方法，逐渐形成了所谓的现代医学。&lt;/p&gt;
&lt;p&gt;中国人几乎接受了所有的现代科学理论，比如物理化学生物等等，并且将自己的科学史也纳入到整个科学史的一部分，无数的科研人员也投入了现代科学的建设，没有人去区分那是中国的物理还是西方的物理。&lt;/p&gt;
&lt;p&gt;可是由于历史的原因，学科的特殊性等等，唯独医学，被区分成了中医和西医。这里不想展开产生这个区分的原因，而是想从逻辑上厘清这样区分的谬误。中医对应的应该是其他国家的传统医学，比如西欧的传统医学，印度的传统医学，而西医这个概念也不应该存在，有的只是现代医学，中国有无数的现代医学研究者，他们研究的不是西医，而是全人类的医学。&lt;/p&gt;
&lt;p&gt;总结一下，简单画一个表应该是这样：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;传统医学&lt;/th&gt;
&lt;th&gt;现代医学&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;中国&lt;/td&gt;
&lt;td&gt;1中国传统医学（中医）&lt;/td&gt;
&lt;td&gt;2中国现代医学（西医？）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;西方&lt;/td&gt;
&lt;td&gt;3西方传统医学（西方草药学等）&lt;/td&gt;
&lt;td&gt;4西方现代医学（西医？）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;概念1只和概念3有对比，概念2和概念4应该是同一个概念。下一次再谈谈谈为啥唯独医学这门学科在中国被分为中西医，而物理化学没有。&lt;/p&gt;</description><content:encoded><![CDATA[<p>一直想写一写中医的话题，主要是想给家人看看，可是一直都不敢写，因为这个话题太大，它不单单是个科学问题，也牵涉到民族自尊心，政府在有意识的推广，甚至给予了立法支持，医学院有中医的课程，制药企业、医学界、媒体都牵涉其中，中医药是一个产值4100亿的产业，我有什么资格去谈呢？我觉得我学养不够，既不懂中医的阴阳五行，也不懂西医的循证医学。好在我还有理性思维，有些问题其实不必要掌握所有的细节，仅凭理性分析与随处可见的事实就能得出很多结论。</p>
<p>对中医的认识，和很多人一样，我曾经是很模糊的，我跟很多人都聊过这个话题，包括各种学历层次各个地域的中国人，其实很多人并没有细想过这个问题，生病就去医院看医生，然后医生开药，一般多是西药夹杂一些中药，少数人被慢性病折磨时会想到去看中医，抓几副药去吃，有吃了没效果的，也有吃了觉得效果很好的。</p>
<p>是的，一个国家的医学的一半，至少试图是一半，都在讲望闻问切、针灸配伍，一个普通人，有什么能力去分辨这一切的是非呢？可是当我不幸或有幸不断思考中医的问题后，就发现生活在一个巨大的有意无意的4100亿产值的骗局之中，这么多钱，这个产业中已经没有几个是干净的了。某一天，我突然想明白中医是个伪概念，突然觉得豁然开朗，即使还有很多技术性细节问题，但是只要明白这一点，一个人对中医的认识也会发生天翻地覆的变化，朝着科学理性的方向发展。如果不能接受这个观念，也几乎不能再一起讨论下去。</p>
<p>为什么说中医是个伪概念呢？</p>
<p>我们听过无数遍这样的广告词“中西药结合疗效好”、“西医治标，中医治本”。可见，中医这个概念和西医这个概念是伴生的，在中国人见识所谓的西医之前，是没有中医的概念的，而只有医学的概念。任何国家、任何族群的人都会生病，他们都会想办法去治病，这些经验或理论总结出来就形成了医学。类比一下，在接触西方的数学体系之前，中国人也有自己的数学，有祖冲之这样的数学家，但是奇怪的是，现在的中国，没有所谓的中数、西数之分，而只有一门学科，就叫数学。</p>
<p>中医、西医两个概念是伴生的，但是这里的思维陷阱在于中医应当是中国传统医学，而西医则是西方现代医学，如果有兴趣读一读医学史就知道，现代这套打针吃药输血做手术的医学，在西方兴起也不过几百年，在此之前，西方人（欧洲人）是怎么治病的呢？有草药，有放血疗法，甚至也有类似针灸的做法，只不过后来他们发现这些方法不科学，而找到了一套更加科学的理论和方法，逐渐形成了所谓的现代医学。</p>
<p>中国人几乎接受了所有的现代科学理论，比如物理化学生物等等，并且将自己的科学史也纳入到整个科学史的一部分，无数的科研人员也投入了现代科学的建设，没有人去区分那是中国的物理还是西方的物理。</p>
<p>可是由于历史的原因，学科的特殊性等等，唯独医学，被区分成了中医和西医。这里不想展开产生这个区分的原因，而是想从逻辑上厘清这样区分的谬误。中医对应的应该是其他国家的传统医学，比如西欧的传统医学，印度的传统医学，而西医这个概念也不应该存在，有的只是现代医学，中国有无数的现代医学研究者，他们研究的不是西医，而是全人类的医学。</p>
<p>总结一下，简单画一个表应该是这样：</p>
<table>
  <thead>
      <tr>
          <th></th>
          <th>传统医学</th>
          <th>现代医学</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>中国</td>
          <td>1中国传统医学（中医）</td>
          <td>2中国现代医学（西医？）</td>
      </tr>
      <tr>
          <td>西方</td>
          <td>3西方传统医学（西方草药学等）</td>
          <td>4西方现代医学（西医？）</td>
      </tr>
  </tbody>
</table>
<p>概念1只和概念3有对比，概念2和概念4应该是同一个概念。下一次再谈谈谈为啥唯独医学这门学科在中国被分为中西医，而物理化学没有。</p>
]]></content:encoded><category>life</category><category domain="tags">中医</category><category domain="tags">思考</category></item><item><title>记一次AccessViolationException异常的排查</title><link>https://yifeitao.com/an-accessviolationexception-bug/</link><pubDate>Sun, 22 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/an-accessviolationexception-bug/</guid><description>&lt;p&gt;前几天，同事出差说程序遇到一个偶发的bug，程序会报告内存错误然后崩溃掉。今天终于有时间仔细排查了一下。&lt;/p&gt;
&lt;p&gt;背景：这是一个C#和C++/CLI混合编程的程序。&lt;/p&gt;
&lt;h2 id="1-复现"&gt;1 复现&lt;/h2&gt;
&lt;p&gt;首先按同事描述的操作方法复现了bug，发现虽然是偶发的，单其实很有规律，在操作的某个时间点后必然出现。&lt;/p&gt;
&lt;h2 id="2-基本原理"&gt;2 基本原理&lt;/h2&gt;
&lt;p&gt;内存错误显然是非托管代码带来的，在.Net环境中被封装为AccessViolationException。&lt;/p&gt;
&lt;p&gt;首先看看&lt;a href="https://msdn.microsoft.com/ZH-CN/library/45bkekh3%28v=VS.110,d=hv.2%29.aspx"
rel="noopener noreferrer" target="_blank" class="external"&gt;AccessViolationException&lt;/a&gt;
的MSDN文档，它是&amp;quot;在试图读写受保护内存时引发的异常&amp;quot;。具体说明如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;当非托管或不安全代码尝试读写未分配或不具有访问权限的内存空间时，就会产生访问冲突。 这种情况通常因为指针具有错误的值而发生。 并非所有通过无效指针的读或写操作都会导致访问冲突，所以访问冲突通常指示已经通过无效指针进行多次读或写操作，并且内存内容可能已损坏。 因此，访问冲突几乎总是指示存在严重的编程错误。 AccessViolationException 明确标识这些严重错误。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;在完全由可验证托管代码组成的程序中，所有引用都有效或者为空，因而不会产生访问冲突。 AccessViolationException 只在可验证托管代码与非托管代码或非安全托管代码交互时才会引发。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;如果发生异常在公共语言运行时，会保留的内存不足 .NET Framework 4开始，公共语言运行时本身引发的 AccessViolationException 异常没有被在结构化异常处理程序的 catch 语句处理。 为了处理这种 AccessViolationException 异常，则应用 HandleProcessCorruptedStateExceptionsAttribute 特性到引发异常的方法。 用户代码不影响 AccessViolationException 异常的此更改，可以继续用 catch 语句捕获。 对于针对要重新编译并运行，而无需修改.NET Framework 4.NET Framework 的早期版本编写的代码，则可以添加元素到 &lt;code&gt;&amp;lt;legacyCorruptedStateExceptionsPolicy&amp;gt;&lt;/code&gt; 应用的配置文件。 注意也可能收到异常的通知，如果定义 AppDomain.FirstChanceException 或 AppDomain.UnhandledException 事件的处理程序。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;看完先给发生问题的函数加上了HandleProcessCorruptedStateExceptions，捕获到异常了，但是没什么实际作用，这种错误明显不应该发生的。&lt;/p&gt;
&lt;h2 id="3-发现错误源头"&gt;3 发现错误源头&lt;/h2&gt;
&lt;p&gt;刚开始用VS2010调试，对C++/CLI太不友好了，看不到太多有用的信息，后来改用VS2015调试，能在崩溃时看到C++/CLI代码的详细信息了，然后发现了一个空指针，程序试图在空指针上进行结构体的访问，必然会崩溃啊。&lt;/p&gt;
&lt;p&gt;对空指针的来源进行了仔细的回溯排查，发现在某个查找操作中返回了空指针，这个空指针还传递了好几个函数，衍生出好几个空指针，直到最后试图使用指针时崩溃了。&lt;/p&gt;
&lt;p&gt;到这里发现了第一个问题，C++/CLI代码中的托管对象封装了传统C++的指针，对托管对象的操作，实际上会转发到指针上去，如果指针为空，这个托管对象实际上没有存在的意义，但是之前的代码忽略了这个问题。&lt;/p&gt;
&lt;p&gt;在构建托管对象时，应当检验其封装的指针，如果为空指针，那么对象也应当初始化未null。&lt;/p&gt;
&lt;p&gt;此时，AccessViolationException已经变成了C#程序员天天见的NullReferenceException，如果封装时注意一点，就不会这么辛苦找源头了。&lt;/p&gt;
&lt;h2 id="4-出现空值的原因"&gt;4 出现空值的原因&lt;/h2&gt;
&lt;p&gt;产生空值的查找操作，按理说不应当出现，而且它的出现也是有一些偶发性的，如果把异常截获，程序还能继续跑下去也没什么问题，也就是，待查询的对象集合在大部分时间都是正常的，但在某个瞬间出了问题。&lt;/p&gt;
&lt;p&gt;仔细排查了一下哪些操作可能更动这个对象集合，发现了一个重启操作，包含了清空与加载两步，而且这个重启操作与出问题的查询操作在不同的线程中。&lt;/p&gt;
&lt;p&gt;到这里，发现原来是典型的操作原子性未保持导致的多线程错误，清空后还没加载时去查询，自然会出现空值，给对象集合所在对象加了个锁总算没有异常了。当然，后来我发现这个重启的必要性很可疑，那是另外的话题了。&lt;/p&gt;
&lt;h2 id="5-小结"&gt;5 小结&lt;/h2&gt;
&lt;p&gt;总计一下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;应当让错误早点暴露，限制空指针的传播范围，具体到C++/CLI中，要把它封装成null。&lt;/li&gt;
&lt;li&gt;多线程的坑层出不穷，行为难以预料，要谦虚谨慎。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>前几天，同事出差说程序遇到一个偶发的bug，程序会报告内存错误然后崩溃掉。今天终于有时间仔细排查了一下。</p>
<p>背景：这是一个C#和C++/CLI混合编程的程序。</p>
<h2 id="1-复现">1 复现</h2>
<p>首先按同事描述的操作方法复现了bug，发现虽然是偶发的，单其实很有规律，在操作的某个时间点后必然出现。</p>
<h2 id="2-基本原理">2 基本原理</h2>
<p>内存错误显然是非托管代码带来的，在.Net环境中被封装为AccessViolationException。</p>
<p>首先看看<a href="https://msdn.microsoft.com/ZH-CN/library/45bkekh3%28v=VS.110,d=hv.2%29.aspx"
   rel="noopener noreferrer" target="_blank" class="external">AccessViolationException</a>
的MSDN文档，它是&quot;在试图读写受保护内存时引发的异常&quot;。具体说明如下：</p>
<blockquote>
<p>当非托管或不安全代码尝试读写未分配或不具有访问权限的内存空间时，就会产生访问冲突。 这种情况通常因为指针具有错误的值而发生。 并非所有通过无效指针的读或写操作都会导致访问冲突，所以访问冲突通常指示已经通过无效指针进行多次读或写操作，并且内存内容可能已损坏。 因此，访问冲突几乎总是指示存在严重的编程错误。 AccessViolationException 明确标识这些严重错误。</p>
</blockquote>
<blockquote>
<p>在完全由可验证托管代码组成的程序中，所有引用都有效或者为空，因而不会产生访问冲突。 AccessViolationException 只在可验证托管代码与非托管代码或非安全托管代码交互时才会引发。</p>
</blockquote>
<blockquote>
<p>如果发生异常在公共语言运行时，会保留的内存不足 .NET Framework 4开始，公共语言运行时本身引发的 AccessViolationException 异常没有被在结构化异常处理程序的 catch 语句处理。 为了处理这种 AccessViolationException 异常，则应用 HandleProcessCorruptedStateExceptionsAttribute 特性到引发异常的方法。 用户代码不影响 AccessViolationException 异常的此更改，可以继续用 catch 语句捕获。 对于针对要重新编译并运行，而无需修改.NET Framework 4.NET Framework 的早期版本编写的代码，则可以添加元素到 <code>&lt;legacyCorruptedStateExceptionsPolicy&gt;</code> 应用的配置文件。 注意也可能收到异常的通知，如果定义 AppDomain.FirstChanceException 或 AppDomain.UnhandledException 事件的处理程序。</p>
</blockquote>
<p>看完先给发生问题的函数加上了HandleProcessCorruptedStateExceptions，捕获到异常了，但是没什么实际作用，这种错误明显不应该发生的。</p>
<h2 id="3-发现错误源头">3 发现错误源头</h2>
<p>刚开始用VS2010调试，对C++/CLI太不友好了，看不到太多有用的信息，后来改用VS2015调试，能在崩溃时看到C++/CLI代码的详细信息了，然后发现了一个空指针，程序试图在空指针上进行结构体的访问，必然会崩溃啊。</p>
<p>对空指针的来源进行了仔细的回溯排查，发现在某个查找操作中返回了空指针，这个空指针还传递了好几个函数，衍生出好几个空指针，直到最后试图使用指针时崩溃了。</p>
<p>到这里发现了第一个问题，C++/CLI代码中的托管对象封装了传统C++的指针，对托管对象的操作，实际上会转发到指针上去，如果指针为空，这个托管对象实际上没有存在的意义，但是之前的代码忽略了这个问题。</p>
<p>在构建托管对象时，应当检验其封装的指针，如果为空指针，那么对象也应当初始化未null。</p>
<p>此时，AccessViolationException已经变成了C#程序员天天见的NullReferenceException，如果封装时注意一点，就不会这么辛苦找源头了。</p>
<h2 id="4-出现空值的原因">4 出现空值的原因</h2>
<p>产生空值的查找操作，按理说不应当出现，而且它的出现也是有一些偶发性的，如果把异常截获，程序还能继续跑下去也没什么问题，也就是，待查询的对象集合在大部分时间都是正常的，但在某个瞬间出了问题。</p>
<p>仔细排查了一下哪些操作可能更动这个对象集合，发现了一个重启操作，包含了清空与加载两步，而且这个重启操作与出问题的查询操作在不同的线程中。</p>
<p>到这里，发现原来是典型的操作原子性未保持导致的多线程错误，清空后还没加载时去查询，自然会出现空值，给对象集合所在对象加了个锁总算没有异常了。当然，后来我发现这个重启的必要性很可疑，那是另外的话题了。</p>
<h2 id="5-小结">5 小结</h2>
<p>总计一下：</p>
<ol>
<li>应当让错误早点暴露，限制空指针的传播范围，具体到C++/CLI中，要把它封装成null。</li>
<li>多线程的坑层出不穷，行为难以预料，要谦虚谨慎。</li>
</ol>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">调试</category></item><item><title>屁股决定脑袋</title><link>https://yifeitao.com/head-depends-on-butt/</link><pubDate>Sat, 21 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/head-depends-on-butt/</guid><description>&lt;p&gt;有句说出来不甚雅观的俗语叫“屁股决定脑袋”，我近几年越来越觉得这句话很有道理。我亲眼看见某些人对同一件事情的看法发生天翻地覆的变化，只是因为他前后两次所处的地位不一样。&lt;/p&gt;
&lt;p&gt;每个人倾向于将自己的思想和行为变得融洽，而一个人所处的位置往往决定了他会有哪些行动，所谓“人在江湖，身不由己”，即使刚开始，他可能不大情愿去做某些事，但是时间长了次数多了，他必然要修正自己的三观去匹配自己的行为，这就是行为反作用于思想的可怕之处。如果不修正自己的三观，那么他就面临时时刻刻的矛盾，自己不认同自己所做的事情，陷入痛苦不堪的境地。电影《朗读者》中的女主角参与了屠杀犹太人，但她只把那当成了自己的日常工作，她不会让自己意识到自己的行为有多么罪恶，这就是典型的屁股决定了脑袋。&lt;/p&gt;
&lt;p&gt;还有句俗话叫“不要因人废言”，但是仔细想想，一句话从谁嘴里说出来与这句话的可信度还真是有很大的关系，我们首先得看看说这句话得人屁股在什么地方，看清楚他得利益所在，再去判断这句话有没有意义，比如我们为什么会觉得“五毛”和“美分”说的话不可行，因为他们拿钱发帖，显然不会发自真心的去考究自己的话。又比如罗振宇在跨年演讲时说了一堆趋势，可是仔细想想他的屁股在自媒体和知识服务上，所以他的说法都是对应这些来说的，那么我们作为听众就得看清楚自己的屁股可能不再那里，所以参考价值可能比想象中低多了。&lt;/p&gt;
&lt;p&gt;超越自己的屁股相当困难，至少有两个障碍，一是认知上的障碍，每个人的视角都是有限的，观点自然都是从自己熟悉的领域出发，向外辐射时肯定会有局限，二是利益上的障碍，少有人会发表对自己所处地位不利的观点，即使他能分辨所谓的善恶对错，但是谈论的可能还是利弊，更可怕的时他还会修正自己的三观去适应自己的利益。&lt;/p&gt;
&lt;p&gt;所以，要想少被人在脑子里跑马，听人说话时得看看他的屁股在哪里。而自己的思想想要超出自己的位置，那是需要反复的修炼的，就像《无间道》中道明叔说的：从来都是事情改变人，而少有人改变事情。通过改变思想改变自己的行为和位置很难，而因为自己处在一个位置就改变了思想则是不知不觉的。&lt;/p&gt;</description><content:encoded><![CDATA[<p>有句说出来不甚雅观的俗语叫“屁股决定脑袋”，我近几年越来越觉得这句话很有道理。我亲眼看见某些人对同一件事情的看法发生天翻地覆的变化，只是因为他前后两次所处的地位不一样。</p>
<p>每个人倾向于将自己的思想和行为变得融洽，而一个人所处的位置往往决定了他会有哪些行动，所谓“人在江湖，身不由己”，即使刚开始，他可能不大情愿去做某些事，但是时间长了次数多了，他必然要修正自己的三观去匹配自己的行为，这就是行为反作用于思想的可怕之处。如果不修正自己的三观，那么他就面临时时刻刻的矛盾，自己不认同自己所做的事情，陷入痛苦不堪的境地。电影《朗读者》中的女主角参与了屠杀犹太人，但她只把那当成了自己的日常工作，她不会让自己意识到自己的行为有多么罪恶，这就是典型的屁股决定了脑袋。</p>
<p>还有句俗话叫“不要因人废言”，但是仔细想想，一句话从谁嘴里说出来与这句话的可信度还真是有很大的关系，我们首先得看看说这句话得人屁股在什么地方，看清楚他得利益所在，再去判断这句话有没有意义，比如我们为什么会觉得“五毛”和“美分”说的话不可行，因为他们拿钱发帖，显然不会发自真心的去考究自己的话。又比如罗振宇在跨年演讲时说了一堆趋势，可是仔细想想他的屁股在自媒体和知识服务上，所以他的说法都是对应这些来说的，那么我们作为听众就得看清楚自己的屁股可能不再那里，所以参考价值可能比想象中低多了。</p>
<p>超越自己的屁股相当困难，至少有两个障碍，一是认知上的障碍，每个人的视角都是有限的，观点自然都是从自己熟悉的领域出发，向外辐射时肯定会有局限，二是利益上的障碍，少有人会发表对自己所处地位不利的观点，即使他能分辨所谓的善恶对错，但是谈论的可能还是利弊，更可怕的时他还会修正自己的三观去适应自己的利益。</p>
<p>所以，要想少被人在脑子里跑马，听人说话时得看看他的屁股在哪里。而自己的思想想要超出自己的位置，那是需要反复的修炼的，就像《无间道》中道明叔说的：从来都是事情改变人，而少有人改变事情。通过改变思想改变自己的行为和位置很难，而因为自己处在一个位置就改变了思想则是不知不觉的。</p>
]]></content:encoded><category>methodology</category><category domain="tags">认知</category><category domain="tags">思考</category></item><item><title>五步阅读法</title><link>https://yifeitao.com/five-steps-reading/</link><pubDate>Wed, 18 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/five-steps-reading/</guid><description>&lt;p&gt;简要总结一下自己最近的阅读方法，还需要不断迭代更新。&lt;/p&gt;
&lt;p&gt;阅读的基本目标应该是知行合一，所以以娱乐为目的的阅读不在本文讨论范畴。本文适用于读书，也适用于阅读中短篇的文章。&lt;/p&gt;
&lt;h2 id="第一步-速览"&gt;第一步 速览&lt;/h2&gt;
&lt;p&gt;这一步是专门针对我这样的急性子而设定的，拿到一本好书，总是会火急火燎的想把它看完，虽然仔细想想，怎么才算把一本书看完，也是很需要思考的重大问题。所以，如果实在克制不了，也不妨放自己一马，先快速读一遍，也算是留个大概印象。另外一种情况是快速读一遍之后发现这本书不值得细读，也算是节约自己时间了。从这个角度出发的话，速读也大可不必，速览一遍，观其大概就行了，当是挑书的一个过程。&lt;/p&gt;
&lt;h2 id="第二步-演读"&gt;第二步 演读&lt;/h2&gt;
&lt;p&gt;不知道这个词是不是我生造的，我的意思是详细的去读书，详细到作者的思路能在脑子里演绎，如果不能达到这个程度，可能有几个原因：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;你的理解能力不够，背景知识不够，这本书还没到你读的时候；&lt;/li&gt;
&lt;li&gt;你需要多读几遍；&lt;/li&gt;
&lt;li&gt;这是本烂书。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如何分辨这三种情况，实在是一个困难的事情，需要不断的积累经验，一般而言一个领域懂得越多，分辨起来就会越轻松。&lt;/p&gt;
&lt;p&gt;演读的目的在于真正把书的内容吃透，理解作者的思想。&lt;/p&gt;
&lt;p&gt;注意这个过程最好不要做笔记，更不要画重点，不要用手头的忙碌掩盖思维的懒惰，做出一副认真读书的样子自欺欺人。&lt;/p&gt;
&lt;h2 id="第三步-提取"&gt;第三步 提取&lt;/h2&gt;
&lt;p&gt;把书合上，开始做笔记，根据书的信息容量，看完一部分还是全部看完再做这一步可以灵活把握。&lt;/p&gt;
&lt;p&gt;合上书做笔记，是一种简单而有效的自我检查手段，它要求你把学到的东西再反馈到纸上，这个笔记可以是提纲挈领式的，只要能根据这些提要把所记忆理解的东西复述出来，当然有时间的话还是越详细越好。实在没有时间或条件，至少合上书，自问自答一番。&lt;/p&gt;
&lt;p&gt;做完笔记，可以再翻开书比对一番，看是否有错误与遗漏。&lt;/p&gt;
&lt;h2 id="第四步-连网"&gt;第四步 连网&lt;/h2&gt;
&lt;p&gt;要想链牢固的掌握所阅的东西，关键是把它转化为自己知识体系的一部分，将它链接到已有的神经网络中去。有如下基本基本的方法。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;比较：跟已经掌握的知识做比较，看看有哪些异同点，是不是已有知识的另外一个面目，或者一个重要的补充；&lt;/li&gt;
&lt;li&gt;反思：书中所说的有没有不准确的地方，有没有不详细的地方，或者能不能换一个更易于理解的说法。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="第五步-践行"&gt;第五步 践行&lt;/h2&gt;
&lt;p&gt;这是最后一部，也是最重要的不能省略的一步，尤其是对于有方法论指导的书而言，如果一本书中有一个重要的实践手段得到了你的理解认同，那么最好就是照着去做，这是阅读的最佳归宿，一本书能有这么一个点就是价值百倍了。&lt;/p&gt;
&lt;p&gt;当然，不是所有书都有直接的方法论可供实践的，那么可以有几个退而求其次的办法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;读书笔记，这个读书笔记最好是对第三步笔记的改进版，用你自己的理解去重新整理，或者添加了你自己的理解，或者用学到的道理去阐释一个新的问题。&lt;/li&gt;
&lt;li&gt;交谈，向一个没看过这本书的人去介绍其中的内容，根据不同的交流对象，选择合适的方式和内容，但是传递同样的思想内核。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;到这里，大概算是读完了一本书。&lt;/p&gt;
&lt;p&gt;最后要说明的是这五个步骤不是严格割裂和先后排序的，具体应用时可以灵活裁剪及交叉进行，但是最后一步是不能省略的，否则就只能算是娱乐性阅读，即使你读的是相当严肃的书。&lt;/p&gt;</description><content:encoded><![CDATA[<p>简要总结一下自己最近的阅读方法，还需要不断迭代更新。</p>
<p>阅读的基本目标应该是知行合一，所以以娱乐为目的的阅读不在本文讨论范畴。本文适用于读书，也适用于阅读中短篇的文章。</p>
<h2 id="第一步-速览">第一步 速览</h2>
<p>这一步是专门针对我这样的急性子而设定的，拿到一本好书，总是会火急火燎的想把它看完，虽然仔细想想，怎么才算把一本书看完，也是很需要思考的重大问题。所以，如果实在克制不了，也不妨放自己一马，先快速读一遍，也算是留个大概印象。另外一种情况是快速读一遍之后发现这本书不值得细读，也算是节约自己时间了。从这个角度出发的话，速读也大可不必，速览一遍，观其大概就行了，当是挑书的一个过程。</p>
<h2 id="第二步-演读">第二步 演读</h2>
<p>不知道这个词是不是我生造的，我的意思是详细的去读书，详细到作者的思路能在脑子里演绎，如果不能达到这个程度，可能有几个原因：</p>
<ol>
<li>你的理解能力不够，背景知识不够，这本书还没到你读的时候；</li>
<li>你需要多读几遍；</li>
<li>这是本烂书。</li>
</ol>
<p>如何分辨这三种情况，实在是一个困难的事情，需要不断的积累经验，一般而言一个领域懂得越多，分辨起来就会越轻松。</p>
<p>演读的目的在于真正把书的内容吃透，理解作者的思想。</p>
<p>注意这个过程最好不要做笔记，更不要画重点，不要用手头的忙碌掩盖思维的懒惰，做出一副认真读书的样子自欺欺人。</p>
<h2 id="第三步-提取">第三步 提取</h2>
<p>把书合上，开始做笔记，根据书的信息容量，看完一部分还是全部看完再做这一步可以灵活把握。</p>
<p>合上书做笔记，是一种简单而有效的自我检查手段，它要求你把学到的东西再反馈到纸上，这个笔记可以是提纲挈领式的，只要能根据这些提要把所记忆理解的东西复述出来，当然有时间的话还是越详细越好。实在没有时间或条件，至少合上书，自问自答一番。</p>
<p>做完笔记，可以再翻开书比对一番，看是否有错误与遗漏。</p>
<h2 id="第四步-连网">第四步 连网</h2>
<p>要想链牢固的掌握所阅的东西，关键是把它转化为自己知识体系的一部分，将它链接到已有的神经网络中去。有如下基本基本的方法。</p>
<ol>
<li>比较：跟已经掌握的知识做比较，看看有哪些异同点，是不是已有知识的另外一个面目，或者一个重要的补充；</li>
<li>反思：书中所说的有没有不准确的地方，有没有不详细的地方，或者能不能换一个更易于理解的说法。</li>
</ol>
<h2 id="第五步-践行">第五步 践行</h2>
<p>这是最后一部，也是最重要的不能省略的一步，尤其是对于有方法论指导的书而言，如果一本书中有一个重要的实践手段得到了你的理解认同，那么最好就是照着去做，这是阅读的最佳归宿，一本书能有这么一个点就是价值百倍了。</p>
<p>当然，不是所有书都有直接的方法论可供实践的，那么可以有几个退而求其次的办法：</p>
<ol>
<li>读书笔记，这个读书笔记最好是对第三步笔记的改进版，用你自己的理解去重新整理，或者添加了你自己的理解，或者用学到的道理去阐释一个新的问题。</li>
<li>交谈，向一个没看过这本书的人去介绍其中的内容，根据不同的交流对象，选择合适的方式和内容，但是传递同样的思想内核。</li>
</ol>
<p>到这里，大概算是读完了一本书。</p>
<p>最后要说明的是这五个步骤不是严格割裂和先后排序的，具体应用时可以灵活裁剪及交叉进行，但是最后一步是不能省略的，否则就只能算是娱乐性阅读，即使你读的是相当严肃的书。</p>
]]></content:encoded><category>methodology</category><category domain="tags">读书</category><category domain="tags">方法论</category></item><item><title>高可配置性软件开发</title><link>https://yifeitao.com/development-of-highly-configurable-software/</link><pubDate>Tue, 17 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/development-of-highly-configurable-software/</guid><description>&lt;p&gt;可配置性是软件工程实践中的重要问题之一，配置文件与可执行文件一起构成了软件运行时版本控制的要素，Visual Basic，Python、Lua等解释型语言，常以所谓“脚本”的形式出现，进一步提升了操作系统、游戏等大型软件的可配置性，而领域驱动设计在强调领域模型的同时，也带动了描述配置领域模型的领域特定语言的发展。在工业控制领域，软件的可配置性用组态的概念来描述；在游戏开发领域，一般用引擎和脚本的概念来描述。&lt;/p&gt;
&lt;h2 id="1-基本原理"&gt;1 基本原理&lt;/h2&gt;
&lt;p&gt;软件复杂性的根源在现实世界的复杂性，软件的复杂性超过人的理解能力时，会带来软件开发的困难乃至失败，好的软件工程方法论能给出现实世界的良好抽象模型，通过合理的抽象层次结构管理软件的复杂性，使人能从整体到细节分层次的把握软件。源自现实世界的复杂性并不会降低或消失，但却得到了约束。&lt;/p&gt;
&lt;p&gt;高可配置性可在一定程度上解决快速需求变更问题，把握软件中不变的部分作为模型，将易变的部分通过配置文件等方式约束起来。&lt;/p&gt;
&lt;pre class="mermaid"&gt;graph TB
subgraph 软件1
complexity2[复杂性]--&amp;gt;abstract[共通抽象]
end
subgraph 软件
complexity1[复杂性]--&amp;gt;complexity3[复杂性]
end&lt;/pre&gt;
&lt;h2 id="2-构建方法"&gt;2 构建方法&lt;/h2&gt;
&lt;p&gt;构建高可配置性软件，首先应当针对领域特点建立通用软件模型，然后针对模型使用配置技术。不同的配置加上模型最后构建了不同的软件实例。&lt;/p&gt;
&lt;pre class="mermaid"&gt;graph TB
subgraph 软件2
config2[软件配置2]--&amp;gt;abstract2[通用模型]
end
subgraph 软件1
config1[软件配置1]--&amp;gt;abstract1[通用模型]
end&lt;/pre&gt;
&lt;h3 id="21-建模"&gt;2.1 建模&lt;/h3&gt;
&lt;p&gt;建模问题是一个很复杂的问题，取决于设计时不同的场景，需要领域知识与设计经验，并且和领域专家密切合作。这方面有几本经典的书：&lt;a href="https://book.douban.com/subject/26819666/"
rel="noopener noreferrer" target="_blank" class="external"&gt;《领域驱动设计》&lt;/a&gt;
和&lt;a href="https://book.douban.com/subject/25844633/"
rel="noopener noreferrer" target="_blank" class="external"&gt;《实现领域驱动设计》&lt;/a&gt;
。&lt;/p&gt;
&lt;h3 id="22-配置技术"&gt;2.2 配置技术&lt;/h3&gt;
&lt;h4 id="221-配置文件"&gt;2.2.1 配置文件&lt;/h4&gt;
&lt;p&gt;配置文件是使用最广泛也是最基本的一种配置技术，配置文件主要用于描述软件启动及运行时所需要的数据，一般不直接描述软件的运行逻辑，常见的配置文件格式包括ini、xml、json等，简单比较如下表所示：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;格式&lt;/th&gt;
&lt;th&gt;表达能力&lt;/th&gt;
&lt;th&gt;可读性&lt;/th&gt;
&lt;th&gt;典型应用场景&lt;/th&gt;
&lt;th&gt;举例&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ini&lt;/td&gt;
&lt;td&gt;较弱，不可嵌套&lt;/td&gt;
&lt;td&gt;最好&lt;/td&gt;
&lt;td&gt;软件启动参数。&lt;/td&gt;
&lt;td&gt;启动目录、ip地址。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xml&lt;/td&gt;
&lt;td&gt;最强&lt;/td&gt;
&lt;td&gt;最差&lt;/td&gt;
&lt;td&gt;复杂对象的序列化。&lt;/td&gt;
&lt;td&gt;数据帧结构与解析规则。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;json&lt;/td&gt;
&lt;td&gt;一般&lt;/td&gt;
&lt;td&gt;一般&lt;/td&gt;
&lt;td&gt;web API接口。&lt;/td&gt;
&lt;td&gt;天气预报服务的接口。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="222-脚本语言"&gt;2.2.2 脚本语言&lt;/h4&gt;
&lt;p&gt;一些大型的程序，往往通过结合多种编程语言来实现，一般通过编译型语言实现系统的相对固定的部分与运行效率关键部分，通过解释型语言来实现系统的易变部分。比如Linux操作系统用C实现了很多工具，而通过bash脚本对这些工具进行综合应用，大型游戏基于C++游戏引擎构造，而使用Lua脚本等描述游戏动作逻辑。&lt;/p&gt;
&lt;h4 id="223-领域特定语言"&gt;2.2.3 领域特定语言&lt;/h4&gt;
&lt;p&gt;领域特定语言介于一般的配置文件和程序代码之间，即针对某一特定领域，具有受限表达性的一种计算机程序设计语言。&lt;/p&gt;
&lt;p&gt;领域特定语言又分为内部领域特定语言、外部领域特定语言、语言工作台等，其中内部领域特定语言是主要语言程序代码的一种特殊写法，不能算是配置，外部领域特定语言则设计新的语言来进行表达，仍可归为文本配置的范围。而语言工作台则主要提供可视化的配置方式或者成为可视化编程。&lt;/p&gt;
&lt;p&gt;领域特定语言介于配置文件和脚本程序之间，提供了领域内较高的表达能力，也便于领域专家的理解，可加速专家知识向软件的生成。&lt;/p&gt;
&lt;p&gt;针对不同模型的需要，以上3种配置技术在高可配置性软件开发均可应用，下表对三种配置技术的主要特点和典型应用场景做了比较。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;配置技术&lt;/th&gt;
&lt;th&gt;表达能力&lt;/th&gt;
&lt;th&gt;可读性&lt;/th&gt;
&lt;th&gt;典型应用场景&lt;/th&gt;
&lt;th&gt;举例&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;配置文件&lt;/td&gt;
&lt;td&gt;描述软件运行需要的数据，一般不直接描述软件运行逻辑。&lt;/td&gt;
&lt;td&gt;取决于具体的配置文件格式。&lt;/td&gt;
&lt;td&gt;软件启动参数。&lt;/td&gt;
&lt;td&gt;启动目录、网络通信地址。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;脚本语言&lt;/td&gt;
&lt;td&gt;直接描述软件的运行逻辑。&lt;/td&gt;
&lt;td&gt;仅适合程序员理解，不利于领域专家理解。&lt;/td&gt;
&lt;td&gt;基本接口形式固定时，描述易变逻辑。&lt;/td&gt;
&lt;td&gt;在C++构建的设备监控接口基础上用Python脚本描述监控流程。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;领域特定语言&lt;/td&gt;
&lt;td&gt;描述领域模型的配置，从而间接描述软件运行逻辑。&lt;/td&gt;
&lt;td&gt;既适合程序员理解，也适合领域专家理解。&lt;/td&gt;
&lt;td&gt;建立了认可度较高的领域模型，模型的配置丰富易变。&lt;/td&gt;
&lt;td&gt;用“状态-反应”模型表现故障处理，建立领域特定语言描述具体的内容。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="3-工程实践"&gt;3 工程实践&lt;/h2&gt;
&lt;p&gt;如图所示，高可配置性软件开发实际改变了传统软件的开发流程，突出了软件配置在软件生命周期中的重要地位。下面将阐述高可配置性对传统软件开发各阶段带来的影响。&lt;/p&gt;</description><content:encoded><![CDATA[<p>可配置性是软件工程实践中的重要问题之一，配置文件与可执行文件一起构成了软件运行时版本控制的要素，Visual Basic，Python、Lua等解释型语言，常以所谓“脚本”的形式出现，进一步提升了操作系统、游戏等大型软件的可配置性，而领域驱动设计在强调领域模型的同时，也带动了描述配置领域模型的领域特定语言的发展。在工业控制领域，软件的可配置性用组态的概念来描述；在游戏开发领域，一般用引擎和脚本的概念来描述。</p>
<h2 id="1-基本原理">1 基本原理</h2>
<p>软件复杂性的根源在现实世界的复杂性，软件的复杂性超过人的理解能力时，会带来软件开发的困难乃至失败，好的软件工程方法论能给出现实世界的良好抽象模型，通过合理的抽象层次结构管理软件的复杂性，使人能从整体到细节分层次的把握软件。源自现实世界的复杂性并不会降低或消失，但却得到了约束。</p>
<p>高可配置性可在一定程度上解决快速需求变更问题，把握软件中不变的部分作为模型，将易变的部分通过配置文件等方式约束起来。</p>
<pre class="mermaid">graph TB
    subgraph 软件1
        complexity2[复杂性]--&gt;abstract[共通抽象]
    end
    subgraph 软件
        complexity1[复杂性]--&gt;complexity3[复杂性]
    end</pre>

<h2 id="2-构建方法">2 构建方法</h2>
<p>构建高可配置性软件，首先应当针对领域特点建立通用软件模型，然后针对模型使用配置技术。不同的配置加上模型最后构建了不同的软件实例。</p>
<pre class="mermaid">graph TB
    subgraph 软件2
        config2[软件配置2]--&gt;abstract2[通用模型]
    end
    subgraph 软件1
        config1[软件配置1]--&gt;abstract1[通用模型]
    end</pre>

<h3 id="21-建模">2.1 建模</h3>
<p>建模问题是一个很复杂的问题，取决于设计时不同的场景，需要领域知识与设计经验，并且和领域专家密切合作。这方面有几本经典的书：<a href="https://book.douban.com/subject/26819666/"
   rel="noopener noreferrer" target="_blank" class="external">《领域驱动设计》</a>
和<a href="https://book.douban.com/subject/25844633/"
   rel="noopener noreferrer" target="_blank" class="external">《实现领域驱动设计》</a>
。</p>
<h3 id="22-配置技术">2.2 配置技术</h3>
<h4 id="221-配置文件">2.2.1 配置文件</h4>
<p>配置文件是使用最广泛也是最基本的一种配置技术，配置文件主要用于描述软件启动及运行时所需要的数据，一般不直接描述软件的运行逻辑，常见的配置文件格式包括ini、xml、json等，简单比较如下表所示：</p>
<table>
  <thead>
      <tr>
          <th>格式</th>
          <th>表达能力</th>
          <th>可读性</th>
          <th>典型应用场景</th>
          <th>举例</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ini</td>
          <td>较弱，不可嵌套</td>
          <td>最好</td>
          <td>软件启动参数。</td>
          <td>启动目录、ip地址。</td>
      </tr>
      <tr>
          <td>xml</td>
          <td>最强</td>
          <td>最差</td>
          <td>复杂对象的序列化。</td>
          <td>数据帧结构与解析规则。</td>
      </tr>
      <tr>
          <td>json</td>
          <td>一般</td>
          <td>一般</td>
          <td>web API接口。</td>
          <td>天气预报服务的接口。</td>
      </tr>
  </tbody>
</table>
<h4 id="222-脚本语言">2.2.2 脚本语言</h4>
<p>一些大型的程序，往往通过结合多种编程语言来实现，一般通过编译型语言实现系统的相对固定的部分与运行效率关键部分，通过解释型语言来实现系统的易变部分。比如Linux操作系统用C实现了很多工具，而通过bash脚本对这些工具进行综合应用，大型游戏基于C++游戏引擎构造，而使用Lua脚本等描述游戏动作逻辑。</p>
<h4 id="223-领域特定语言">2.2.3 领域特定语言</h4>
<p>领域特定语言介于一般的配置文件和程序代码之间，即针对某一特定领域，具有受限表达性的一种计算机程序设计语言。</p>
<p>领域特定语言又分为内部领域特定语言、外部领域特定语言、语言工作台等，其中内部领域特定语言是主要语言程序代码的一种特殊写法，不能算是配置，外部领域特定语言则设计新的语言来进行表达，仍可归为文本配置的范围。而语言工作台则主要提供可视化的配置方式或者成为可视化编程。</p>
<p>领域特定语言介于配置文件和脚本程序之间，提供了领域内较高的表达能力，也便于领域专家的理解，可加速专家知识向软件的生成。</p>
<p>针对不同模型的需要，以上3种配置技术在高可配置性软件开发均可应用，下表对三种配置技术的主要特点和典型应用场景做了比较。</p>
<table>
  <thead>
      <tr>
          <th>配置技术</th>
          <th>表达能力</th>
          <th>可读性</th>
          <th>典型应用场景</th>
          <th>举例</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>配置文件</td>
          <td>描述软件运行需要的数据，一般不直接描述软件运行逻辑。</td>
          <td>取决于具体的配置文件格式。</td>
          <td>软件启动参数。</td>
          <td>启动目录、网络通信地址。</td>
      </tr>
      <tr>
          <td>脚本语言</td>
          <td>直接描述软件的运行逻辑。</td>
          <td>仅适合程序员理解，不利于领域专家理解。</td>
          <td>基本接口形式固定时，描述易变逻辑。</td>
          <td>在C++构建的设备监控接口基础上用Python脚本描述监控流程。</td>
      </tr>
      <tr>
          <td>领域特定语言</td>
          <td>描述领域模型的配置，从而间接描述软件运行逻辑。</td>
          <td>既适合程序员理解，也适合领域专家理解。</td>
          <td>建立了认可度较高的领域模型，模型的配置丰富易变。</td>
          <td>用“状态-反应”模型表现故障处理，建立领域特定语言描述具体的内容。</td>
      </tr>
  </tbody>
</table>
<h2 id="3-工程实践">3 工程实践</h2>
<p>如图所示，高可配置性软件开发实际改变了传统软件的开发流程，突出了软件配置在软件生命周期中的重要地位。下面将阐述高可配置性对传统软件开发各阶段带来的影响。</p>
<pre class="mermaid">graph TB
    subgraph 高可配置性软件流程
    	requirements2[需求分析]--&gt;construct2[软件主体构建]
    	construct2--&gt;config[软件配置]
        config--&gt;test2[软件主体测试]
        config--&gt;config_test[软件配置测试]
		test2--&gt;maintain2[软件主体维护] 
		config_test--&gt;config_maintain[软件配置维护]
    end
    
    subgraph 一般软件流程
    	requirements1[需求分析]--&gt;construct1[软件构建]
        construct1--&gt;test1[软件测试]
		test1--&gt;maintain1[软件维护] 
    end</pre>

<h3 id="31-需求分析">3.1 需求分析</h3>
<p>在需求分析阶段，相比普通开发，高可配置性软件开发需要再重点分析以下问题：</p>
<ol>
<li>采用高可配置性技术的必要性，这主要是由软件的适用范围决定的，即软件是否要具备可推广性，软件应对的需求是否易变。软件需要适配的场景越多，需求越易变，则必要性越大，如果软件只用于一个基本固定的场景，则没有必要使用配置。</li>
<li>区分模型需求与配置需求，在需求采集时，要采集软件在各种应用场景的需求，分析软件可能因推广带来的需求扩展，尽可能分析较多的案例，深入分析提取系统的不变性，抽象出系统的模型，而将系统的易变部分识别为配置需求。</li>
</ol>
<h3 id="32--软件构建">3.2  软件构建</h3>
<p>高可配置性软件开发的软件构建分为两个阶段：</p>
<ol>
<li>软件主体构建：该阶段由程序员完成，高可配置性对架构设计要求较高，在使用面向对象范式时，需要深刻理解与应用面向对象的设计原则，大量应用各类构件型设计模式，以及反射、依赖注入等运行时关联技术；</li>
<li>软件配置阶段，该阶段可由程序员完成，也可由领域专家完成。由于配置成为软件的重要组成部分，所以对配置文件应当和对源代码一样严格管理，纳入版本管理系统，由于人工配置容易产生错误，所以应当尽量提供可视化的配置工具，限制用户随意修改配置。</li>
</ol>
<h3 id="33-软件测试">3.3 软件测试</h3>
<p>对应软件的两阶段开发，高可配置性软件的测试也分为两个部分：</p>
<ol>
<li>
<p>软件主体测试，构造测试用例应当设计各种场景的配置，这些场景要考虑模型的边界情况，通过测试尽量消除软件主体的缺陷，减少软件推广应用时在配置后发现缺陷。</p>
</li>
<li>
<p>软件配置测试，完成配置测试才能在具体的场景应用，配置过程往往由领域专家而非程序员完成，因此最好对配置进行校验，并提供配置完成后的测试工具与测试方法细则，使得领域专家也能完成软件的测试。</p>
</li>
</ol>
<h3 id="34--软件维护">3.4  软件维护</h3>
<p>对应软件的两阶段开发，高可配置性软件的维护也分为两个部分：</p>
<ol>
<li>
<p>软件主体维护，通用的功能升级通过对软件主体的升级完成，软件主体功能的修改应当保持配置的兼容，如果不得不改变配置的格式时，应当提供配置的升级转换功能；</p>
</li>
<li>
<p>软件配置维护，用户需求与应用场景发生了变化，而这些变化在软件主体预期之内时，可由领域专家修改配置完成，软件配置逐渐成为用户的重要资产。</p>
</li>
</ol>
]]></content:encoded><category>coding</category><category domain="tags">软件工程</category><category domain="tags">编程</category></item><item><title>如何创建一个对象(C#篇)</title><link>https://yifeitao.com/how-to-create-an-object-in-csharp/</link><pubDate>Mon, 16 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/how-to-create-an-object-in-csharp/</guid><description>&lt;p&gt;在面向对象编程范式的语言中，对象是最重要的一个概念，对象维护自身的状态，通过发消息（调用）来影响其他对象，从而完成整个程序的运转。何时以何种方式创建对象，是面向对象设计中需要重点考量的问题之一。本文对C#语言中创建对象的方法进行简要总结，涉及语言特性、设计模式等，所有的例子以能说明清楚问题为目的，不注重其实用性。相信本文对Java等其他面向对象语言也有相似的价值。&lt;/p&gt;
&lt;h2 id="1-new与构造函数"&gt;1. new与构造函数&lt;/h2&gt;
&lt;p&gt;一个C#对象封装了一些字段和一些方法（属性、事件等本质上都是方法），考察一个C#对象的内存图景可以发现，每个具体的对象实际上拥有的是字段，而方法本质上都是全局性的，对象上方法的调用&lt;code&gt;A.b(...)&lt;/code&gt;可视为&lt;code&gt;b(A,...)&lt;/code&gt;，对象的&lt;code&gt;this&lt;/code&gt;指针将作为方法的一个参数传入，从这个角度理解就不难发现，创建一个对象本质上需要根据对象的字段划分一块内存，并将这些字段的内容初始化。完成这项工作最直接的途径就是&lt;code&gt;new&lt;/code&gt;与构造函数，这也是C#语言提供的构建对象的基本机制。&lt;/p&gt;
&lt;p&gt;考虑下面这个简单的例子，&lt;code&gt;Shape&lt;/code&gt;类主要抽象了计算面积这一行为，派生类&lt;code&gt;Rectangle&lt;/code&gt;和&lt;code&gt;Circle&lt;/code&gt;具体完成这一行为。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c#" data-lang="c#"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;abstract&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Shape&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;abstract&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;double&lt;/span&gt; Area();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Rectangle&lt;/span&gt;:Shape
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;double&lt;/span&gt; Width { &lt;span style="color:#66d9ef"&gt;get&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;set&lt;/span&gt;; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;double&lt;/span&gt; Height { &lt;span style="color:#66d9ef"&gt;get&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;set&lt;/span&gt;; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; Rectangle(&lt;span style="color:#66d9ef"&gt;double&lt;/span&gt; width, &lt;span style="color:#66d9ef"&gt;double&lt;/span&gt; height)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Width = width;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Height = height;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;override&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;double&lt;/span&gt; Area()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; Width * Height;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Circle&lt;/span&gt; : Shape
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;double&lt;/span&gt; Radius { &lt;span style="color:#66d9ef"&gt;get&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;set&lt;/span&gt;; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; Circle(&lt;span style="color:#66d9ef"&gt;double&lt;/span&gt; radius)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Radius = radius;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;override&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;double&lt;/span&gt; Area()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; System.Math.PI*Radius*Radius;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;static&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; Main()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Shape rectangle = &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; Rectangle(&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Shape circle = &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; Circle(&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; System.Console.WriteLine(rectangle.Area());
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; System.Console.WriteLine(circle.Area());
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;我们可以通过如下命令编译与查看IL代码&lt;/p&gt;</description><content:encoded><![CDATA[<p>在面向对象编程范式的语言中，对象是最重要的一个概念，对象维护自身的状态，通过发消息（调用）来影响其他对象，从而完成整个程序的运转。何时以何种方式创建对象，是面向对象设计中需要重点考量的问题之一。本文对C#语言中创建对象的方法进行简要总结，涉及语言特性、设计模式等，所有的例子以能说明清楚问题为目的，不注重其实用性。相信本文对Java等其他面向对象语言也有相似的价值。</p>
<h2 id="1-new与构造函数">1. new与构造函数</h2>
<p>一个C#对象封装了一些字段和一些方法（属性、事件等本质上都是方法），考察一个C#对象的内存图景可以发现，每个具体的对象实际上拥有的是字段，而方法本质上都是全局性的，对象上方法的调用<code>A.b(...)</code>可视为<code>b(A,...)</code>，对象的<code>this</code>指针将作为方法的一个参数传入，从这个角度理解就不难发现，创建一个对象本质上需要根据对象的字段划分一块内存，并将这些字段的内容初始化。完成这项工作最直接的途径就是<code>new</code>与构造函数，这也是C#语言提供的构建对象的基本机制。</p>
<p>考虑下面这个简单的例子，<code>Shape</code>类主要抽象了计算面积这一行为，派生类<code>Rectangle</code>和<code>Circle</code>具体完成这一行为。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c#" data-lang="c#"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">abstract</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Shape</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">abstract</span> <span style="color:#66d9ef">double</span> Area();
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Rectangle</span>:Shape
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">double</span> Width { <span style="color:#66d9ef">get</span>; <span style="color:#66d9ef">set</span>; }
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">double</span> Height { <span style="color:#66d9ef">get</span>; <span style="color:#66d9ef">set</span>; }
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> Rectangle(<span style="color:#66d9ef">double</span> width, <span style="color:#66d9ef">double</span> height)
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        Width = width;
</span></span><span style="display:flex;"><span>        Height = height;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">override</span> <span style="color:#66d9ef">double</span> Area()
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> Width * Height;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Circle</span> : Shape
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">double</span> Radius { <span style="color:#66d9ef">get</span>; <span style="color:#66d9ef">set</span>; }
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> Circle(<span style="color:#66d9ef">double</span> radius)
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        Radius = radius;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">override</span> <span style="color:#66d9ef">double</span> Area()
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> System.Math.PI*Radius*Radius;
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Test</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> Main()
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        Shape rectangle = <span style="color:#66d9ef">new</span> Rectangle(<span style="color:#ae81ff">3</span>, <span style="color:#ae81ff">4</span>);
</span></span><span style="display:flex;"><span>        Shape circle = <span style="color:#66d9ef">new</span> Circle(<span style="color:#ae81ff">5</span>);
</span></span><span style="display:flex;"><span>        System.Console.WriteLine(rectangle.Area());
</span></span><span style="display:flex;"><span>        System.Console.WriteLine(circle.Area());
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<p>我们可以通过如下命令编译与查看IL代码</p>


<pre tabindex="0"><code>csc Shape.cs
ildasm Shape.exe</code></pre>
<p><code>Test</code>类中<code>Main</code>函数的IL代码如下：</p>


<pre tabindex="0"><code>.method public hidebysig static void  Main() cil managed
{
  .entrypoint
  // 代码大小       65 (0x41)
  .maxstack  2
  .locals init (class Shape V_0,
           class Shape V_1)
  IL_0000:  nop
  IL_0001:  ldc.r8     3.
  IL_000a:  ldc.r8     4.
  IL_0013:  newobj     instance void Rectangle::.ctor(float64,
                                                      float64)
  IL_0018:  stloc.0
  IL_0019:  ldc.r8     5.
  IL_0022:  newobj     instance void Circle::.ctor(float64)
  IL_0027:  stloc.1
  IL_0028:  ldloc.0
  IL_0029:  callvirt   instance float64 Shape::Area()
  IL_002e:  call       void [mscorlib]System.Console::WriteLine(float64)
  IL_0033:  nop
  IL_0034:  ldloc.1
  IL_0035:  callvirt   instance float64 Shape::Area()
  IL_003a:  call       void [mscorlib]System.Console::WriteLine(float64)
  IL_003f:  nop
  IL_0040:  ret
} // end of method Test::Main</code></pre>
<p>在IL代码中，构造函数编译为一个名为<code>.ctor</code>的方法，而new操作有对应<code>newobj</code>操作符，生成一个对象实例后将其加入Main函数的栈，而调用对象方法时的操作<code>callvirt</code>则保证了在运行时根据继承树找到合适的方法。</p>
<p>很容易发现，普通方法<code>Area</code>是运行时确定的，但是构造函数却不得不在编译时确定，或者说，对象的使用是多态的，对象的创建则是具体的，因此，对象的创建，或者说<code>new</code>与构造函数这个机制，成为制约程序变化的瓶颈。</p>
<h2 id="2-new的隔离与封装">2 new的隔离与封装</h2>
<p>基于1中的例子，考虑如下的需求，用户从命令行输入参数信息，第一个参数代表形状的种类，后续参数代表构造这个形状需要的数据，然后由程序计算面积。代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c#" data-lang="c#"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Test</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> Main(<span style="color:#66d9ef">string</span>[] args)
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        Shape shape = ShapeFactory.CreateShape(args);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(args[<span style="color:#ae81ff">0</span>]==<span style="color:#e6db74">&#34;Circle&#34;</span>)
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          shape = <span style="color:#66d9ef">new</span> Circle(<span style="color:#66d9ef">double</span>.Parse(args[<span style="color:#ae81ff">1</span>]));
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">else</span> <span style="color:#66d9ef">if</span>(args[<span style="color:#ae81ff">0</span>]==<span style="color:#e6db74">&#34;Rectangle&#34;</span>)
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          shape = <span style="color:#66d9ef">new</span> Rectangle(<span style="color:#66d9ef">double</span>.Parse(args[<span style="color:#ae81ff">1</span>]),<span style="color:#66d9ef">double</span>.Parse(args[<span style="color:#ae81ff">2</span>]));
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(shape!=<span style="color:#66d9ef">null</span>)
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          System.Console.WriteLine(shape.Area());
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<p>考虑以下两点原因，我们需要进一步封装上述代码中的条件分支语句：</p>
<ol>
<li>在应用<code>Shape</code>这个体系的时候，类似的根据不同的字符串来创建不同的子类的代码还可能很多，比如根据配置文件来创建<code>Shape</code>，根据数据库中的数据来创建Shape等，需要消除重复代码；</li>
<li><code>Shape</code>的种类可能不断增多，需要隔离变化。</li>
</ol>
<p>封装出的方法<code>CreateShape</code>可以作为<code>Shape</code>类的静态方法，或者作为一个新的工厂类<code>ShapeFactory</code>的静态方法。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c#" data-lang="c#"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">ShapeFactory</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> Shape CreateShape(<span style="color:#66d9ef">string</span>[] args)
</span></span><span style="display:flex;"><span>  {
</span></span><span style="display:flex;"><span>    Shape shape = <span style="color:#66d9ef">null</span>;
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span>(args[<span style="color:#ae81ff">0</span>]==<span style="color:#e6db74">&#34;Circle&#34;</span>)
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>      shape = <span style="color:#66d9ef">new</span> Circle(<span style="color:#66d9ef">double</span>.Parse(args[<span style="color:#ae81ff">1</span>]));
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">else</span> <span style="color:#66d9ef">if</span>(args[<span style="color:#ae81ff">0</span>]==<span style="color:#e6db74">&#34;Rectangle&#34;</span>)
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>      shape = <span style="color:#66d9ef">new</span> Rectangle(<span style="color:#66d9ef">double</span>.Parse(args[<span style="color:#ae81ff">1</span>]),<span style="color:#66d9ef">double</span>.Parse(args[<span style="color:#ae81ff">2</span>]));
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> shape;
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Test</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> Main(<span style="color:#66d9ef">string</span>[] args)
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        Shape shape = ShapeFactory.CreateShape(args);
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(shape!=<span style="color:#66d9ef">null</span>)
</span></span><span style="display:flex;"><span>        {
</span></span><span style="display:flex;"><span>          System.Console.WriteLine(shape.Area());
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<p>这一般称为简单工厂，算是一种准设计模式，代码的扩展点位于<code>CreateShape</code>中的条件分支语句。</p>
<h2 id="3-工厂方法和抽象工厂">3 工厂方法和抽象工厂</h2>
<p>前述2中的<code>ShapeFactory</code>是一个具体类，如果提取出一个接口<code>IShapeFactory</code>来，二者就构成了一个工厂方法模式，不过这么做没什么意义，工厂方法更多的是体现在平行的类层次上，考虑这样的需求，假设我们在一个编辑环境中编辑这些<code>Shape</code>，双击它们的会弹出不同的设置窗口，即对不同的<code>Shape</code>有不同的<code>Editor</code>,这时候可以在抽象类<code>Shape</code>中加入一个工厂方法<code>CreateEditor</code>,它的具体创建行为延迟到子类中决定。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C#" data-lang="C#"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">abstract</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Shape</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    ...
</span></span><span style="display:flex;"><span>  	<span style="color:#66d9ef">public</span> <span style="color:#66d9ef">abstract</span> Editor CreateEditor();
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Rectangle</span>:Shape
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">override</span> Editor CreateEditor()
</span></span><span style="display:flex;"><span>      {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">new</span> RectangleEditor(<span style="color:#66d9ef">this</span>);
</span></span><span style="display:flex;"><span>      }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Circle</span> : Shape
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">override</span> Editor CreateEditor()
</span></span><span style="display:flex;"><span>      {
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">return</span> <span style="color:#66d9ef">new</span> CircleEditor(<span style="color:#66d9ef">this</span>);
</span></span><span style="display:flex;"><span>      }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">abstract</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Editor</span>{}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">RectangleEditor</span> : Editor{}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">CircleEditor</span> : Editor{}</span></span></code></pre></div>
<p>具体的创建行为在子类中，但是它们的关系依然是编译时决定并绑定死的。</p>
<p>抽象工厂可以视为工厂方法的扩展，假如<code>Shape</code>除了构造<code>Editor</code>类体系外，还构建自己的3D形式，那么需要在<code>Shape</code>中再加入一个<code>Create3D</code>方法，返回<code>ThreeDShape</code>，这时<code>Shape</code>类构建了一系列相关的类，成为一个抽象工厂，当然这时<code>Shape</code>类太过复杂，可以考虑把这些创建函数都提取到<code>ShapeFactory</code>中去，这里就不再赘述了。</p>
<h2 id="4-反射工厂">4 反射工厂</h2>
<p>回到1中的<code>ShapeFactory</code>，它的扩展点主要是根据不同的字符串生成不同的类，这是创建对象时最常见的场景之一，这个字符串往往来自于用户配置，如果事先知道有多少种子类，那么这个条件分支已经是程序中唯一的扩展点了，也是可以接受的，但如果事先不知道有多少种子类，比如我们把<code>Shape</code>类作为一个库提供给程序员使用，那么<code>ShapeFactory</code>的位置就会比较尴尬，而.Net的反射机制则能一劳永逸的解除这个尴尬。</p>
<p>根据一个字符串，创建一个同名的对象是很自然的想法，但在C++中，很难实现，因为C++的类编译后不再保有自己的类名信息，而.Net则在运行时一直保有类的详细信息。使用反射改写工厂方法如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C#" data-lang="C#"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">ShapeFactory</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> Shape CreateShape(<span style="color:#66d9ef">string</span>[] args)
</span></span><span style="display:flex;"><span>  {
</span></span><span style="display:flex;"><span>    System.Type type = System.Type.GetType(args[<span style="color:#ae81ff">0</span>]);
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">object</span>[] shapeArgs = <span style="color:#66d9ef">new</span> <span style="color:#66d9ef">object</span>[args.Length - <span style="color:#ae81ff">1</span>];
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i = <span style="color:#ae81ff">0</span>; i &lt; args.Length - <span style="color:#ae81ff">1</span>; i++)
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>      shapeArgs[i] = <span style="color:#66d9ef">double</span>.Parse(args[i+<span style="color:#ae81ff">1</span>]);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> (Shape)System.Activator.CreateInstance(type, shapeArgs);
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<p>反射是C#和Java这类静态语言获得一定动态性的重要机制，在一些动态语言如Python中，由于Eval机制的存在，字符串和代码基本上是不分家的。</p>
<h2 id="5-序列化与反序列化">5 序列化与反序列化</h2>
<p>简单理解的话，序列化等同于把运行时对象存储为一个字符串，而反序列化则等同于从这个字符串（常使用xml格式）恢复对象。一般可以用工厂方法来实现。比如可以这样设计<code>Shape</code>的反序列化。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c#" data-lang="c#"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">abstract</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Shape</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    ...
</span></span><span style="display:flex;"><span>  	<span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> Shape Load(<span style="color:#66d9ef">string</span> str)
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>      ...
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>  	<span style="color:#66d9ef">public</span> <span style="color:#66d9ef">abstract</span> <span style="color:#66d9ef">string</span> Save();
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<p>在<code>Load</code>方法中，由于要根据字符串来辨别子类，所以离不开反射机制。</p>
<p>.Net提供了比较友好的序列化与反序列化机制，只要我们设计类型时遵循一定的原则，比如需要无参构造函数等，就可以直接使用该机制。比如在<code>Rectangle</code>中加入无参构造函数后，可以把它保存到xml文件再恢复出来。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C#" data-lang="C#"><span style="display:flex;"><span>Shape rectangle = <span style="color:#66d9ef">new</span> Rectangle(<span style="color:#ae81ff">3</span>, <span style="color:#ae81ff">4</span>);
</span></span><span style="display:flex;"><span>XmlSerializer mySerializer = <span style="color:#66d9ef">new</span> XmlSerializer(<span style="color:#66d9ef">typeof</span>(Rectangle));
</span></span><span style="display:flex;"><span>StreamWriter myWriter = <span style="color:#66d9ef">new</span> StreamWriter(<span style="color:#e6db74">&#34;rectangle.xml&#34;</span>);
</span></span><span style="display:flex;"><span>mySerializer.Serialize(myWriter, rectangle);
</span></span><span style="display:flex;"><span>myWriter.Close();
</span></span><span style="display:flex;"><span>FileStream myFileStream = <span style="color:#66d9ef">new</span> FileStream(<span style="color:#e6db74">&#34;rectangle.xml&#34;</span>, FileMode.Open);
</span></span><span style="display:flex;"><span>Shape rectangle2 = (Rectangle)mySerializer.Deserialize(myFileStream);</span></span></code></pre></div>
<p>由于序列化和与反序列化机制的成熟，用类似上面的代码可以轻松的实现对象克隆，所以原型模式在C#中比较少使用。</p>
<p>一般的Xml序列化有一个问题，它不能保持对象间的引用关系，微软还将WPF中的Xaml序列化单独拿出来做成了库，所以不想自己实现一个保持引用关系的序列化机制的话，可以考虑System.Xaml 命名空间。</p>
<h2 id="6-依赖注入">6 依赖注入</h2>
<p>关于依赖注入的原理，看懂老马的这篇文章就够了。</p>
<p>依赖注入要解决的是一系列相关对象的创建问题，对象<code>A</code>的组成部分之一<code>B</code>是一个抽象类，那么在创建<code>A</code>的时候就免不了要创建<code>B</code>的实例，而这就免不了具体类的出现，因此需要使用工厂类完成这项工作，这样类<code>A</code>才能真正和<code>B</code>的具体子类解耦。依赖注入通过一个公有的的工厂机制来解决这个问题，只要你的类按照一定的规则设计，比如提供构造函数或者提供属性，用于设定类中包含的抽象类型的具体实例。</p>
<p>依赖注入框架一般支持代码创建对象，也支持xml配置文件创建对象，第一种方式将对象创建代码集中起来，但对象类型仍然是编译时确定的，而第二种方式则借助反射，使用描述式编程来管理对象创建，完全实现运行时确定对象类型。</p>
<p>C#中的依赖注入框架，除了官方的Unity外，还有Autofac，Ninject等。</p>
<p>对象的创建问题，到依赖注入框架，基本上也就到极致了。</p>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">C#</category></item><item><title>写作与跑步</title><link>https://yifeitao.com/writing-and-running/</link><pubDate>Sun, 15 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/writing-and-running/</guid><description>&lt;p&gt;前几天报名了马拉松，准备跑个半马，不辜负这美好的空气。昨天晚上做了第一次热身，跑了十二公里，跑下来比较轻松，只是在大约八公里的地方腿酸得不行，一副不停下来就要断掉的架势，好在我还了解一点运动理论，明白这个时候大脑是在提前预警而已，实际上人的潜能远不止如此，所以感受着酸爽，坚持了一会儿，那种感觉也就过去了。&lt;/p&gt;
&lt;p&gt;今年我发了宏愿，要每天更新一篇博客，写了十几天之后，就感觉快要江郎才尽，无话可说了，这就像一个没怎么跑过步的人，上来跑了一公里就气喘吁吁一样。长跑的人都知道，在超越体能极限的时候是不能停下来的，即使步频和步幅会有所下降，也要保持动作的规范，不能从跑变成走，否则就难以超越极限，体会到长跑特有的那种乐趣。&lt;/p&gt;
&lt;p&gt;昨天我跑到第八公里的时候，还想到了我的博客，乃至我的生活，在极限的压力逼迫时，你的思考可能不再锐利，但是唯一不能忘记的是迈动你的双腿，，这个时候技巧不是最重要的，最重要的是坚持。所以我的的博客每天更新一篇要怎么坚持下去呢？当然需要以输出带动输入，学习整理很多东西，这是我要做这件事的初衷。可是最简单也最重要的一点是什么呢？是无论发生任何情况，每天一篇坚持写下去，即使质量不高，即使绞尽脑汁。&lt;/p&gt;
&lt;p&gt;这几年我研究了不少方法论的东西，发现可能最重要的方法论之一是形式主义的坚持实施，就是把一种形式落到实处，坚持不懈，当然形式对实际的促进作用程度不一，但大多数人的问题不是形式不好，而是根本没有坚持，正如跑步姿势再标准，坚持不下去的化，也无法完成马拉松一样，看过了无数的学习英语的技巧，但却学不好英语。太多的小聪明之外，忘记的是笨办法的伟大之处。&lt;/p&gt;
&lt;p&gt;在极限中迈开双腿，这是长跑的秘诀，是长跑带给人生的启示，也正是长跑的魅力所在吧。&lt;/p&gt;</description><content:encoded><![CDATA[<p>前几天报名了马拉松，准备跑个半马，不辜负这美好的空气。昨天晚上做了第一次热身，跑了十二公里，跑下来比较轻松，只是在大约八公里的地方腿酸得不行，一副不停下来就要断掉的架势，好在我还了解一点运动理论，明白这个时候大脑是在提前预警而已，实际上人的潜能远不止如此，所以感受着酸爽，坚持了一会儿，那种感觉也就过去了。</p>
<p>今年我发了宏愿，要每天更新一篇博客，写了十几天之后，就感觉快要江郎才尽，无话可说了，这就像一个没怎么跑过步的人，上来跑了一公里就气喘吁吁一样。长跑的人都知道，在超越体能极限的时候是不能停下来的，即使步频和步幅会有所下降，也要保持动作的规范，不能从跑变成走，否则就难以超越极限，体会到长跑特有的那种乐趣。</p>
<p>昨天我跑到第八公里的时候，还想到了我的博客，乃至我的生活，在极限的压力逼迫时，你的思考可能不再锐利，但是唯一不能忘记的是迈动你的双腿，，这个时候技巧不是最重要的，最重要的是坚持。所以我的的博客每天更新一篇要怎么坚持下去呢？当然需要以输出带动输入，学习整理很多东西，这是我要做这件事的初衷。可是最简单也最重要的一点是什么呢？是无论发生任何情况，每天一篇坚持写下去，即使质量不高，即使绞尽脑汁。</p>
<p>这几年我研究了不少方法论的东西，发现可能最重要的方法论之一是形式主义的坚持实施，就是把一种形式落到实处，坚持不懈，当然形式对实际的促进作用程度不一，但大多数人的问题不是形式不好，而是根本没有坚持，正如跑步姿势再标准，坚持不下去的化，也无法完成马拉松一样，看过了无数的学习英语的技巧，但却学不好英语。太多的小聪明之外，忘记的是笨办法的伟大之处。</p>
<p>在极限中迈开双腿，这是长跑的秘诀，是长跑带给人生的启示，也正是长跑的魅力所在吧。</p>
]]></content:encoded><category>life</category><category domain="tags">写作</category><category domain="tags">跑步</category></item><item><title>干货的问题在哪里</title><link>https://yifeitao.com/what-is-the-problem-of-ganhuo/</link><pubDate>Fri, 13 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/what-is-the-problem-of-ganhuo/</guid><description>&lt;p&gt;在我们湖南老家，夏天的时候，一场雨水一天阳光，地里的蔬菜就会噌噌噌的长，多到吃不完，那个时候，我妈就会把黄瓜、葫芦瓜、豆角等等简单处理一下后都拿去暴晒，做成菜干，冬天的时候，放到腊肉火锅中，某种程度上菜干是蔬菜味道的精华，所以吃起来相当美味。&lt;/p&gt;
&lt;p&gt;不知道从什么时候开始，人们看书看文章也喜欢起干货来，经常看到有人会评价说，这本书不就是说了一个什么什么道理么？需要说这么多页么？我用100个字就概括了。当然不排除有一些书会为了多卖几块钱而注水，但是很多时候情况不是这样。&lt;/p&gt;
&lt;p&gt;一本书往往只写了一个主题，或者讲了一个故事，比如《断舍离》想要教你如何反思消费主义，精简自己的物品，《西游记》讲的是唐僧师徒西天取经，结果他们去到了真经，都成佛了，这两本书的书名都很好，看书名就知道了书的主要意思，如果要看最干的干货，看书名是不是就足够了呢？阐释和详述的意义到底在哪里呢？&lt;/p&gt;
&lt;p&gt;吃蔬菜时吃进去的水分究竟有什么意义呢？&lt;/p&gt;
&lt;p&gt;为了迎合爱干货的人，现在像《罗辑思维》之类的还提供了微缩书的服务，把一本书的干货挑给你看，看这样的浓缩和看原书有什么区别呢？我觉得有两个区别。&lt;/p&gt;
&lt;p&gt;一个主要的区别在于细节可以带来可信度，回归到我们看书的目的，对于非虚构类的书一般带有一定功利性，我们一定是想解决某些问题或者获得某些思想采取读书的，如果我们看的书没有值得我们去相信的东西，那显然没有看的必要，但是缺乏细节会使得我们只是在眼前晃了一些概念，而没有真正理解这些概念，把它们训练成大脑中的一种模式，因此去践行这些方法或思想的可能性就很小，看干货的结果就是看的时候觉得说得似乎都挺好，但也仅此而已了，看虚构类的书就更需要细节了，否则就完全沦为了装逼行为，而不是从故事中去寻找愉悦与精神享受。&lt;/p&gt;
&lt;p&gt;另外一个区别在于细节带来的意外启发，一本好的书是作者的思想流露，尽管它有主要的话题，但作者往往也会偏题，这种偏题可能带给读者意外的收获，比如喜欢美食的人看《红楼梦》可能学会了做几道菜，看育儿的书提高了沟通能力，改善了自己的社交关系。&lt;/p&gt;
&lt;p&gt;干货存在的意义除了给假装努力的人安慰外，还可以给真正努力的人一个目录，但也仅此而已。&lt;/p&gt;
&lt;p&gt;真正好的东西值得反反复复从不同的角度去阐释，正如蔬菜还是带着水更原汁原味一样。浓缩的是精华，但也可能是一厢情愿和消化不良。&lt;/p&gt;</description><content:encoded><![CDATA[<p>在我们湖南老家，夏天的时候，一场雨水一天阳光，地里的蔬菜就会噌噌噌的长，多到吃不完，那个时候，我妈就会把黄瓜、葫芦瓜、豆角等等简单处理一下后都拿去暴晒，做成菜干，冬天的时候，放到腊肉火锅中，某种程度上菜干是蔬菜味道的精华，所以吃起来相当美味。</p>
<p>不知道从什么时候开始，人们看书看文章也喜欢起干货来，经常看到有人会评价说，这本书不就是说了一个什么什么道理么？需要说这么多页么？我用100个字就概括了。当然不排除有一些书会为了多卖几块钱而注水，但是很多时候情况不是这样。</p>
<p>一本书往往只写了一个主题，或者讲了一个故事，比如《断舍离》想要教你如何反思消费主义，精简自己的物品，《西游记》讲的是唐僧师徒西天取经，结果他们去到了真经，都成佛了，这两本书的书名都很好，看书名就知道了书的主要意思，如果要看最干的干货，看书名是不是就足够了呢？阐释和详述的意义到底在哪里呢？</p>
<p>吃蔬菜时吃进去的水分究竟有什么意义呢？</p>
<p>为了迎合爱干货的人，现在像《罗辑思维》之类的还提供了微缩书的服务，把一本书的干货挑给你看，看这样的浓缩和看原书有什么区别呢？我觉得有两个区别。</p>
<p>一个主要的区别在于细节可以带来可信度，回归到我们看书的目的，对于非虚构类的书一般带有一定功利性，我们一定是想解决某些问题或者获得某些思想采取读书的，如果我们看的书没有值得我们去相信的东西，那显然没有看的必要，但是缺乏细节会使得我们只是在眼前晃了一些概念，而没有真正理解这些概念，把它们训练成大脑中的一种模式，因此去践行这些方法或思想的可能性就很小，看干货的结果就是看的时候觉得说得似乎都挺好，但也仅此而已了，看虚构类的书就更需要细节了，否则就完全沦为了装逼行为，而不是从故事中去寻找愉悦与精神享受。</p>
<p>另外一个区别在于细节带来的意外启发，一本好的书是作者的思想流露，尽管它有主要的话题，但作者往往也会偏题，这种偏题可能带给读者意外的收获，比如喜欢美食的人看《红楼梦》可能学会了做几道菜，看育儿的书提高了沟通能力，改善了自己的社交关系。</p>
<p>干货存在的意义除了给假装努力的人安慰外，还可以给真正努力的人一个目录，但也仅此而已。</p>
<p>真正好的东西值得反反复复从不同的角度去阐释，正如蔬菜还是带着水更原汁原味一样。浓缩的是精华，但也可能是一厢情愿和消化不良。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">学习</category><category domain="tags">知识</category></item><item><title>货币的现金价值</title><link>https://yifeitao.com/time-value-of-money/</link><pubDate>Thu, 12 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/time-value-of-money/</guid><description>&lt;h2 id="1-现值和终值"&gt;1 现值和终值&lt;/h2&gt;
&lt;p&gt;$$FV_n=PV(1+i)^n$$&lt;/p&gt;
&lt;p&gt;终值取决于现值、利率和复利次数，而且复利次数的作用比想象中还要重要，所以理财越早越好。&lt;/p&gt;
&lt;p&gt;$$PV=FV_n/(1+i)^n$$&lt;/p&gt;
&lt;p&gt;反过来计算，未来的钱是有一定画饼性质的，因为通过膨胀率一般都是正的，这时候称为贴现率，&lt;a href="http://zh.tradingeconomics.com/china/inflation-cpi"
rel="noopener noreferrer" target="_blank" class="external"&gt;中国的通货膨胀率&lt;/a&gt;
近30年平均约为6%。&lt;/p&gt;
&lt;h2 id="2-年金与定投"&gt;2 年金与定投&lt;/h2&gt;
&lt;p&gt;$$FV_n=PMT*\sum_{k=0}^{n-1}{(1+i)^k}=PMT*((1+i)^n-1)/i$$&lt;/p&gt;
&lt;p&gt;终值取决于每年支付额、利率、复利次数（年份）。&lt;/p&gt;
&lt;p&gt;反过来可以根据终值、年份和利率计算每年支付额。&lt;/p&gt;
&lt;p&gt;$$PMT=FV_n*i/((1+i)^n-1)$$&lt;/p&gt;
&lt;p&gt;比如，30年后想要有1000万继续，年化利率按10%计算，那么每年要攒多少钱呢？&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;10000000&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0.1&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;((&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0.1&lt;/span&gt;)&lt;span style="color:#f92672"&gt;**&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;60792&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;每年攒6万多就好了，坏消息是，30年后的1000万，按贴现率6%计算，只相当于&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;10000000&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0.06&lt;/span&gt;)&lt;span style="color:#f92672"&gt;**&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;1741101&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;现值174万，所以说通胀猛于虎啊。&lt;/p&gt;
&lt;p&gt;如果能早攒10年钱呢？还是每年攒6万多，年化利率10%，那么终值就会变成&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;60792&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;1.1&lt;/span&gt;&lt;span style="color:#f92672"&gt;**&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;40&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;26906086&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;不止翻了一倍啊！&lt;/p&gt;
&lt;p&gt;所以理财要趁早啊，不过现代人的寿命越来越长，理财的作用也会越来越明显。&lt;/p&gt;
&lt;h2 id="3-分期付款"&gt;3 分期付款&lt;/h2&gt;
&lt;p&gt;年金的现值&lt;/p&gt;
&lt;p&gt;$$PV=PMT*\sum_{k=-1}^{-n}{(1+i)^k}=PMT*(1-(1+i)^{-n})/i$$&lt;/p&gt;
&lt;p&gt;反过来计算分期付款额度（等额本息）&lt;/p&gt;
&lt;p&gt;$$PMT=PV*i/(1-(1+i)^{-n})$$&lt;/p&gt;
&lt;p&gt;比如300万的房贷，年利率5%，还30年，则月供&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(&lt;span style="color:#ae81ff"&gt;3000000&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0.05&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;(&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1.05&lt;/span&gt;&lt;span style="color:#f92672"&gt;**&lt;/span&gt;(&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;)))&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;12&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;16262&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;1.6万。&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="1-现值和终值">1 现值和终值</h2>
<p>$$FV_n=PV(1+i)^n$$</p>
<p>终值取决于现值、利率和复利次数，而且复利次数的作用比想象中还要重要，所以理财越早越好。</p>
<p>$$PV=FV_n/(1+i)^n$$</p>
<p>反过来计算，未来的钱是有一定画饼性质的，因为通过膨胀率一般都是正的，这时候称为贴现率，<a href="http://zh.tradingeconomics.com/china/inflation-cpi"
   rel="noopener noreferrer" target="_blank" class="external">中国的通货膨胀率</a>
 近30年平均约为6%。</p>
<h2 id="2-年金与定投">2 年金与定投</h2>
<p>$$FV_n=PMT*\sum_{k=0}^{n-1}{(1+i)^k}=PMT*((1+i)^n-1)/i$$</p>
<p>终值取决于每年支付额、利率、复利次数（年份）。</p>
<p>反过来可以根据终值、年份和利率计算每年支付额。</p>
<p>$$PMT=FV_n*i/((1+i)^n-1)$$</p>
<p>比如，30年后想要有1000万继续，年化利率按10%计算，那么每年要攒多少钱呢？</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ae81ff">10000000</span><span style="color:#f92672">*</span><span style="color:#ae81ff">0.1</span><span style="color:#f92672">/</span>((<span style="color:#ae81ff">1</span><span style="color:#f92672">+</span><span style="color:#ae81ff">0.1</span>)<span style="color:#f92672">**</span><span style="color:#ae81ff">30</span><span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">60792</span></span></span></code></pre></div>
<p>每年攒6万多就好了，坏消息是，30年后的1000万，按贴现率6%计算，只相当于</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ae81ff">10000000</span><span style="color:#f92672">/</span>(<span style="color:#ae81ff">1</span><span style="color:#f92672">+</span><span style="color:#ae81ff">0.06</span>)<span style="color:#f92672">**</span><span style="color:#ae81ff">30</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">1741101</span></span></span></code></pre></div>
<p>现值174万，所以说通胀猛于虎啊。</p>
<p>如果能早攒10年钱呢？还是每年攒6万多，年化利率10%，那么终值就会变成</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#ae81ff">60792</span><span style="color:#f92672">*</span>(<span style="color:#ae81ff">1.1</span><span style="color:#f92672">**</span><span style="color:#ae81ff">40</span><span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>)<span style="color:#f92672">/</span><span style="color:#ae81ff">0.1</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">26906086</span></span></span></code></pre></div>
<p>不止翻了一倍啊！</p>
<p>所以理财要趁早啊，不过现代人的寿命越来越长，理财的作用也会越来越明显。</p>
<h2 id="3-分期付款">3 分期付款</h2>
<p>年金的现值</p>
<p>$$PV=PMT*\sum_{k=-1}^{-n}{(1+i)^k}=PMT*(1-(1+i)^{-n})/i$$</p>
<p>反过来计算分期付款额度（等额本息）</p>
<p>$$PMT=PV*i/(1-(1+i)^{-n})$$</p>
<p>比如300万的房贷，年利率5%，还30年，则月供</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>(<span style="color:#ae81ff">3000000</span><span style="color:#f92672">*</span><span style="color:#ae81ff">0.05</span><span style="color:#f92672">/</span>(<span style="color:#ae81ff">1</span><span style="color:#f92672">-</span><span style="color:#ae81ff">1.05</span><span style="color:#f92672">**</span>(<span style="color:#f92672">-</span><span style="color:#ae81ff">30</span>)))<span style="color:#f92672">/</span><span style="color:#ae81ff">12</span>
</span></span><span style="display:flex;"><span><span style="color:#ae81ff">16262</span></span></span></code></pre></div>
<p>1.6万。</p>
]]></content:encoded><category>investment</category><category domain="tags">理财</category><category domain="tags">金融</category></item><item><title>我读了几本书？</title><link>https://yifeitao.com/how-many-books-have-i-read/</link><pubDate>Wed, 11 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/how-many-books-have-i-read/</guid><description>&lt;p&gt;读书这回事，我常说，跟打麻将一样，算是个人爱好，并不见得高人一等。可是这种说辞有点自我催眠的意思，因为下意识里还是会把读书当成一个有些追求的活动，可能有两个原因，一是因敬畏知识而敬惜字纸，二是消解内心中渴望进步的焦虑。&lt;/p&gt;
&lt;p&gt;最近几个月重看了好几本书，书上的字词自然是没有变化，但是对书的理解却好似之前没读过一般，因为这些重读的书中的很多道理或者做法，我已经有一些行动的经验了，此时带来的共鸣自然不可同日而语。&lt;/p&gt;
&lt;p&gt;读虚构类的书是一种享受，一般而言还上升不到行动。而读非虚构类的书，则需要判断它说得有没有道理，方法可不可行，如果答案是肯定的，那么就得照着去做，否则读它作甚呢？读了书，觉得讲得好，而没有去做，只不过是一次智力上的自亵，然而并没有什么卵用，用在这里算是合情合理了。&lt;/p&gt;
&lt;p&gt;很多年前，我看读者还是青年文摘的时候，看到一篇鸡汤文，说某个穷苦人，因为看了读者还是青年文摘中的鸡汤文，发奋图强，成了小有名气的破乱大王，我想，她真的是很牛，看了一篇文章就发财了，我看了那么多本书，什么时候能发财呢？我现在愿意相信这个鸡汤文是真的，好用的道理也许真的只要一个就够了，好用的道理往往是简单的道理，但是坚持践行却很难，比如巴菲特不会盯着股价炒股而是去研究企业来投资，这么简单的道理真正能做到的又有几人？中国古话讲知易行难，大致如此了。&lt;/p&gt;
&lt;p&gt;我算的上是一个喜欢看书的人，但是又顶瞧不上眼高手低、百无一用的书生，书生的臭毛病在于认为读了书就高人一等，本质上跟背了个名牌包包就觉得自己高人一等的拜金女一样，我们湖南农村有句话叫“读书读到屁眼里去了”，我有时候也不禁想想，我把书读到哪里去了呢？&lt;/p&gt;
&lt;p&gt;今天我在重读某本书的时候，发现书中的道理我非常认同，可是几年前读我也大概是认同的吧，但是这一次我有了强烈的要去行动的愿望，同时也不禁汗颜，因为我已经在这点差异之间，浪费了几年的时间。&lt;/p&gt;
&lt;p&gt;所以，最后我能很好的回答标题的问题了，读了几本书根本不重要，重要的是践行了多少？正如下赌场打麻将，打了几盘不重要，重要的是赢了多少钱。我听过了无数遍知识就是力量这个道理，但直到今天，才明白从知识到力量的过程中，还有一剂催化剂，缺了它，读书就真的跟打麻将一样了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>读书这回事，我常说，跟打麻将一样，算是个人爱好，并不见得高人一等。可是这种说辞有点自我催眠的意思，因为下意识里还是会把读书当成一个有些追求的活动，可能有两个原因，一是因敬畏知识而敬惜字纸，二是消解内心中渴望进步的焦虑。</p>
<p>最近几个月重看了好几本书，书上的字词自然是没有变化，但是对书的理解却好似之前没读过一般，因为这些重读的书中的很多道理或者做法，我已经有一些行动的经验了，此时带来的共鸣自然不可同日而语。</p>
<p>读虚构类的书是一种享受，一般而言还上升不到行动。而读非虚构类的书，则需要判断它说得有没有道理，方法可不可行，如果答案是肯定的，那么就得照着去做，否则读它作甚呢？读了书，觉得讲得好，而没有去做，只不过是一次智力上的自亵，然而并没有什么卵用，用在这里算是合情合理了。</p>
<p>很多年前，我看读者还是青年文摘的时候，看到一篇鸡汤文，说某个穷苦人，因为看了读者还是青年文摘中的鸡汤文，发奋图强，成了小有名气的破乱大王，我想，她真的是很牛，看了一篇文章就发财了，我看了那么多本书，什么时候能发财呢？我现在愿意相信这个鸡汤文是真的，好用的道理也许真的只要一个就够了，好用的道理往往是简单的道理，但是坚持践行却很难，比如巴菲特不会盯着股价炒股而是去研究企业来投资，这么简单的道理真正能做到的又有几人？中国古话讲知易行难，大致如此了。</p>
<p>我算的上是一个喜欢看书的人，但是又顶瞧不上眼高手低、百无一用的书生，书生的臭毛病在于认为读了书就高人一等，本质上跟背了个名牌包包就觉得自己高人一等的拜金女一样，我们湖南农村有句话叫“读书读到屁眼里去了”，我有时候也不禁想想，我把书读到哪里去了呢？</p>
<p>今天我在重读某本书的时候，发现书中的道理我非常认同，可是几年前读我也大概是认同的吧，但是这一次我有了强烈的要去行动的愿望，同时也不禁汗颜，因为我已经在这点差异之间，浪费了几年的时间。</p>
<p>所以，最后我能很好的回答标题的问题了，读了几本书根本不重要，重要的是践行了多少？正如下赌场打麻将，打了几盘不重要，重要的是赢了多少钱。我听过了无数遍知识就是力量这个道理，但直到今天，才明白从知识到力量的过程中，还有一剂催化剂，缺了它，读书就真的跟打麻将一样了。</p>
]]></content:encoded><category>methodology</category><category domain="tags">读书</category><category domain="tags">反思</category></item><item><title>磨洋工简要分析</title><link>https://yifeitao.com/moyanggong/</link><pubDate>Mon, 09 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/moyanggong/</guid><description>&lt;p&gt;人们习惯于将消极怠工、只出工不出力的现象称为“磨洋工”。对公司而言，磨洋工自然不是好事情，对员工而言，磨洋工有时却是无可奈何的选择。&lt;/p&gt;
&lt;p&gt;什么时候会出现磨洋工？当公司简单的以工作时间来统计工作量时，工作效率高的人自然就会磨洋工，否则做得越快，事情就越多，却又得不到相应的回报，所以老油条员工在领受任务时，都会有意延长完成任务的期限，降低上级的预期，从而以安全的平均速度完成任务，即不会因为落后被批评或开除，也不会给自己揽太多吃力不讨好的事情。&lt;/p&gt;
&lt;p&gt;显然，以实际的工作量来衡量员工的贡献更合理，可是工作量的统计标准又是相当成问题的，如果它太过主观，就变成了领导的一言堂，员工会开展办公室政治来争夺利益，如果它十分客观，那么员工会试图去理解评价标准，然后把自己的所有行为都适配到这个标准上，而标准是否与公司的综合利益完全一致有时是存在问题的，这就出现了刷KPI，刷评分而实际上损害公司利益的事情。&lt;/p&gt;
&lt;p&gt;所以好的公司还是要有价值观的感召力，如果仅仅是为了钱而工作，往往会损害公司的长远利益。但话又说回来，价值观感召力是建立在基本的按劳分配机制上的，只能是一个补充机制，如果只谈理想不谈钱，那就是耍流氓，脑子没缺根筋的人是不会用自己的情怀来为别人的奢华买单的。&lt;/p&gt;
&lt;p&gt;对员工而言，磨洋工是无奈的反抗，它最大的危险是降低自己进步的速度，在消极中泯灭了人生的激情，万一你不得不磨洋工，那么最好是能做一件事，那就是为跳槽做准备。&lt;/p&gt;</description><content:encoded><![CDATA[<p>人们习惯于将消极怠工、只出工不出力的现象称为“磨洋工”。对公司而言，磨洋工自然不是好事情，对员工而言，磨洋工有时却是无可奈何的选择。</p>
<p>什么时候会出现磨洋工？当公司简单的以工作时间来统计工作量时，工作效率高的人自然就会磨洋工，否则做得越快，事情就越多，却又得不到相应的回报，所以老油条员工在领受任务时，都会有意延长完成任务的期限，降低上级的预期，从而以安全的平均速度完成任务，即不会因为落后被批评或开除，也不会给自己揽太多吃力不讨好的事情。</p>
<p>显然，以实际的工作量来衡量员工的贡献更合理，可是工作量的统计标准又是相当成问题的，如果它太过主观，就变成了领导的一言堂，员工会开展办公室政治来争夺利益，如果它十分客观，那么员工会试图去理解评价标准，然后把自己的所有行为都适配到这个标准上，而标准是否与公司的综合利益完全一致有时是存在问题的，这就出现了刷KPI，刷评分而实际上损害公司利益的事情。</p>
<p>所以好的公司还是要有价值观的感召力，如果仅仅是为了钱而工作，往往会损害公司的长远利益。但话又说回来，价值观感召力是建立在基本的按劳分配机制上的，只能是一个补充机制，如果只谈理想不谈钱，那就是耍流氓，脑子没缺根筋的人是不会用自己的情怀来为别人的奢华买单的。</p>
<p>对员工而言，磨洋工是无奈的反抗，它最大的危险是降低自己进步的速度，在消极中泯灭了人生的激情，万一你不得不磨洋工，那么最好是能做一件事，那就是为跳槽做准备。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">职场</category><category domain="tags">效率</category></item><item><title>每一块钱都是平等的</title><link>https://yifeitao.com/every-yuan-is-equal/</link><pubDate>Sun, 08 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/every-yuan-is-equal/</guid><description>&lt;p&gt;每一块钱的价值都是一样的，这是常识。但是人们会有很多心理认知颠覆这一常识。&lt;/p&gt;
&lt;p&gt;首先，人们会根据钱来得是否容易来决定是否需要珍惜这笔钱，比如十多年前，我有一个长辈，喜欢小赌怡情一下，一般输了钱回家就默默的，要是赢了钱，手上必定拎着几斤猪肉，因为反正钱是赢来的，不吃白不吃嘛。所以你知道澳门开赌场有多挣钱了，输钱了的自不必说，赢钱了的也会挥霍一番。可能辛苦搬砖挣来100块的舍不得用，要是地上捡的，那就可以铺张浪费一番了。可是仔细想想，100块就是100块，无论怎么得来，从投资理财的角度来看，都是没有任何差别的。&lt;/p&gt;
&lt;p&gt;反过来想，贷款买房时，争取零点几的利率折扣，就是很多万块的差价，如果这笔钱要靠在菜市场讨价还价来节省，可能一辈子都不够，但是却有人会在买菜时对几毛钱斤斤计较，买房时却放松了警惕，没意识到小数字背后的大数字。&lt;/p&gt;
&lt;p&gt;金钱的这种平等在某种意义上是有些残酷的，作为一般等价物，金钱抹去了人在付出劳动时的差异，只留下一个赤裸裸的数字，甚至连善恶也是不分的。&lt;/p&gt;
&lt;p&gt;我不想讨论伦理的话题，只是想说，从投资理财的角度来看，每一块钱都是平等的。无论钱从哪里来，它都要进入你的资金池，获得同等的地位，在消费的时候，应该从你的资金池的能力出发，决策消费的必要性和档次，而不是因为某笔钱来得容易就专款专用了。&lt;/p&gt;
&lt;p&gt;不理解这一点的人去投资股票，会像赌博的人一样，账面上浮亏的时候默默不出声，万一要是账面上浮盈了，甚至股票还拿在手上就先预支一笔钱来庆祝了，忘记了投资的长期性，浮盈的有可能会再变成浮亏，只要一日在股市，就难以称得上真正盈利了，这或许也是股市看似简单实则很难的原因，在很多方面它都是反人性的。作为一个价值投资者，必然要克制自己过度的欲望，合理的支配自己的每一块钱，战战兢兢的和市场先生做朋友，没有所谓的明确的成功的界限。&lt;/p&gt;</description><content:encoded><![CDATA[<p>每一块钱的价值都是一样的，这是常识。但是人们会有很多心理认知颠覆这一常识。</p>
<p>首先，人们会根据钱来得是否容易来决定是否需要珍惜这笔钱，比如十多年前，我有一个长辈，喜欢小赌怡情一下，一般输了钱回家就默默的，要是赢了钱，手上必定拎着几斤猪肉，因为反正钱是赢来的，不吃白不吃嘛。所以你知道澳门开赌场有多挣钱了，输钱了的自不必说，赢钱了的也会挥霍一番。可能辛苦搬砖挣来100块的舍不得用，要是地上捡的，那就可以铺张浪费一番了。可是仔细想想，100块就是100块，无论怎么得来，从投资理财的角度来看，都是没有任何差别的。</p>
<p>反过来想，贷款买房时，争取零点几的利率折扣，就是很多万块的差价，如果这笔钱要靠在菜市场讨价还价来节省，可能一辈子都不够，但是却有人会在买菜时对几毛钱斤斤计较，买房时却放松了警惕，没意识到小数字背后的大数字。</p>
<p>金钱的这种平等在某种意义上是有些残酷的，作为一般等价物，金钱抹去了人在付出劳动时的差异，只留下一个赤裸裸的数字，甚至连善恶也是不分的。</p>
<p>我不想讨论伦理的话题，只是想说，从投资理财的角度来看，每一块钱都是平等的。无论钱从哪里来，它都要进入你的资金池，获得同等的地位，在消费的时候，应该从你的资金池的能力出发，决策消费的必要性和档次，而不是因为某笔钱来得容易就专款专用了。</p>
<p>不理解这一点的人去投资股票，会像赌博的人一样，账面上浮亏的时候默默不出声，万一要是账面上浮盈了，甚至股票还拿在手上就先预支一笔钱来庆祝了，忘记了投资的长期性，浮盈的有可能会再变成浮亏，只要一日在股市，就难以称得上真正盈利了，这或许也是股市看似简单实则很难的原因，在很多方面它都是反人性的。作为一个价值投资者，必然要克制自己过度的欲望，合理的支配自己的每一块钱，战战兢兢的和市场先生做朋友，没有所谓的明确的成功的界限。</p>
]]></content:encoded><category>investment</category><category domain="tags">理财</category><category domain="tags">思考</category></item><item><title>努力的二八定律</title><link>https://yifeitao.com/20-80-law-of-try-hard/</link><pubDate>Sat, 07 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/20-80-law-of-try-hard/</guid><description>&lt;p&gt;很多人都会认为自己不善言辞，不善于跟人沟通，作为一个性格偏内向的人，我曾经深受这种社会认知的毒害，当一个人被贴上这样的标签后，他与口若悬河的人就成了两个世界的人，甚至慢慢接受沟通无能的设定后，也就认命了。一个人的特性往往比标签要复杂的多，而且更重要的是，人不是一成不变的，即使我们承认人的沟通交流能力天生就有高低之别，但是所谓先天不足的人就真的只能沟通无能吗？&lt;/p&gt;
&lt;p&gt;很多人不敢上台讲话，他们以为那些在台上滔滔不绝的人都是天生如此，说起来我最近几年偶尔也能在台上滔滔不绝一番，但是其实我的手和声音都是发抖的。&lt;/p&gt;
&lt;p&gt;实际上，没有必要每个人都成为希特勒一样的演讲帝，只要能准确的传达自己的思想给别人就好了，而做到这一点，恰恰是可以通过努力实现的。那些讲课满堂彩的老师，大多是备课及其充分的，有些人连什么时候讲个笑话活跃气氛都是事先想好的。所以，如果你的目标是表达能力超过80%的人，那么持续努力就好了，对每一次交谈和讲话都打腹稿、写逐字搞，努力提升自己的思维层次和学识水平。&lt;/p&gt;
&lt;p&gt;由此扩展一下思考，实际上在很多领域，我们只要努力，都可以轻松超越那个领域内80%的人，因为绝大多数的人是不努力的，或者他的经验都是接触这个领域的头几年学的，表达能力是学说话的前几年有意识在学的，工作经验是参加工作头一两年掌握的，工作十年不一定经验就超过工作一年的，正如我们说了很多年的话，竟然还是觉得自己不会说话一般，不带脑子不费心思的话，时间雕刻不下印记，只是过去了而已。&lt;/p&gt;
&lt;p&gt;在大多数领域，只要足够努力，你就可以超过80%的人成为前20%，这就是努力的二八定律，尤其是在一些“软知识”领域，这些知识不是物理、数学，而是学校不教的，比如怎么讲话，怎么投资，怎么去爱别人。当然，在任何一个领域要成为顶尖都不容易，可是也没什么必要吧，如果能把自己的所谓“短板”通过努力变成20%的优秀，对人的整体提升效果可能已经相当惊人了。&lt;/p&gt;</description><content:encoded><![CDATA[<p>很多人都会认为自己不善言辞，不善于跟人沟通，作为一个性格偏内向的人，我曾经深受这种社会认知的毒害，当一个人被贴上这样的标签后，他与口若悬河的人就成了两个世界的人，甚至慢慢接受沟通无能的设定后，也就认命了。一个人的特性往往比标签要复杂的多，而且更重要的是，人不是一成不变的，即使我们承认人的沟通交流能力天生就有高低之别，但是所谓先天不足的人就真的只能沟通无能吗？</p>
<p>很多人不敢上台讲话，他们以为那些在台上滔滔不绝的人都是天生如此，说起来我最近几年偶尔也能在台上滔滔不绝一番，但是其实我的手和声音都是发抖的。</p>
<p>实际上，没有必要每个人都成为希特勒一样的演讲帝，只要能准确的传达自己的思想给别人就好了，而做到这一点，恰恰是可以通过努力实现的。那些讲课满堂彩的老师，大多是备课及其充分的，有些人连什么时候讲个笑话活跃气氛都是事先想好的。所以，如果你的目标是表达能力超过80%的人，那么持续努力就好了，对每一次交谈和讲话都打腹稿、写逐字搞，努力提升自己的思维层次和学识水平。</p>
<p>由此扩展一下思考，实际上在很多领域，我们只要努力，都可以轻松超越那个领域内80%的人，因为绝大多数的人是不努力的，或者他的经验都是接触这个领域的头几年学的，表达能力是学说话的前几年有意识在学的，工作经验是参加工作头一两年掌握的，工作十年不一定经验就超过工作一年的，正如我们说了很多年的话，竟然还是觉得自己不会说话一般，不带脑子不费心思的话，时间雕刻不下印记，只是过去了而已。</p>
<p>在大多数领域，只要足够努力，你就可以超过80%的人成为前20%，这就是努力的二八定律，尤其是在一些“软知识”领域，这些知识不是物理、数学，而是学校不教的，比如怎么讲话，怎么投资，怎么去爱别人。当然，在任何一个领域要成为顶尖都不容易，可是也没什么必要吧，如果能把自己的所谓“短板”通过努力变成20%的优秀，对人的整体提升效果可能已经相当惊人了。</p>
]]></content:encoded><category>methodology</category><category domain="tags">方法论</category><category domain="tags">努力</category></item><item><title>C++/CLI优秀资源列表</title><link>https://yifeitao.com/awsome-cpp-cli/</link><pubDate>Fri, 06 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/awsome-cpp-cli/</guid><description>&lt;p&gt;C++/CLI是个奇怪的技术，简单一点说它是.Net版本的C++，但是.Net平台已经有C#这样的霸主语言了，还要C++/CLI干啥呢？我觉得最大的意义可能在于将C++程序移植到.Net平台，从我个人封装clips（C语言开发）到.Net的经验来看，C++/CLI由于兼容普通C++代码和.Net的，带来了很多方便，麻烦在于指针之类的都要考虑普通C++和C++/CLI两套体系。会C++和C#的人学会这门技术并不难，因为它的概念在C#中是一一对应的。以下是我现学现卖时搜集的一些比较好的资料。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.codeproject.com/Articles/19354/Quick-C-CLI-Learn-C-CLI-in-less-than-minutes"
rel="noopener noreferrer" target="_blank" class="external"&gt;Quick C++/CLI - Learn C++/CLI in less than 10 minutes&lt;/a&gt;
一个简单的十分钟教程&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pan.baidu.com/s/1pLTQy19"
rel="noopener noreferrer" target="_blank" class="external"&gt;非典型C++/CLI教程&lt;/a&gt;
刘未鹏发表在《程序员》杂志的文章&lt;/li&gt;
&lt;li&gt;&lt;a href="http://asawicki.info/Download/Productions/Publications/CPP_CLI_tutorial.pdf"
rel="noopener noreferrer" target="_blank" class="external"&gt;CPP CLI tutorial&lt;/a&gt;
一个比较详细的教程&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bookzz.org/md5/D47420E4F9D4BA501E4935F42E87AE7D"
rel="noopener noreferrer" target="_blank" class="external"&gt;C++/CLI in Action&lt;/a&gt;
实战教材&lt;/li&gt;
&lt;/ul&gt;</description><content:encoded><![CDATA[<p>C++/CLI是个奇怪的技术，简单一点说它是.Net版本的C++，但是.Net平台已经有C#这样的霸主语言了，还要C++/CLI干啥呢？我觉得最大的意义可能在于将C++程序移植到.Net平台，从我个人封装clips（C语言开发）到.Net的经验来看，C++/CLI由于兼容普通C++代码和.Net的，带来了很多方便，麻烦在于指针之类的都要考虑普通C++和C++/CLI两套体系。会C++和C#的人学会这门技术并不难，因为它的概念在C#中是一一对应的。以下是我现学现卖时搜集的一些比较好的资料。</p>
<ul>
<li><a href="https://www.codeproject.com/Articles/19354/Quick-C-CLI-Learn-C-CLI-in-less-than-minutes"
   rel="noopener noreferrer" target="_blank" class="external">Quick C++/CLI - Learn C++/CLI in less than 10 minutes</a>
 一个简单的十分钟教程</li>
<li><a href="http://pan.baidu.com/s/1pLTQy19"
   rel="noopener noreferrer" target="_blank" class="external">非典型C++/CLI教程</a>
 刘未鹏发表在《程序员》杂志的文章</li>
<li><a href="http://asawicki.info/Download/Productions/Publications/CPP_CLI_tutorial.pdf"
   rel="noopener noreferrer" target="_blank" class="external">CPP CLI tutorial</a>
 一个比较详细的教程</li>
<li><a href="http://bookzz.org/md5/D47420E4F9D4BA501E4935F42E87AE7D"
   rel="noopener noreferrer" target="_blank" class="external">C++/CLI in Action</a>
 实战教材</li>
</ul>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">C++</category><category domain="tags">资源</category></item><item><title>个人理财的15条原理</title><link>https://yifeitao.com/the-15-principle-of-personal-finance/</link><pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-15-principle-of-personal-finance/</guid><description>&lt;p&gt;&lt;a href="https://book.douban.com/subject/4894568/"
rel="noopener noreferrer" target="_blank" class="external"&gt;《个人理财》&lt;/a&gt;
这本书，是美国大学的本科教材，内容相当丰富，涉及现金管理、股票债券基金保险、买房买车、养老计划甚至遗嘱，很可惜我没有在十多年前的本科学到这本书，不过好在现在看了，还来得及教我孩子。&lt;/p&gt;
&lt;p&gt;这本书由于写的是美国的情况，所以很多内容只有原理性的参考价值，具体应用需要参考中国的实际情况，所以我也只是大致翻了一遍，但是它总结的个人理财的15条原则贯穿全书，是具有很强的普世性的。这里摘录列举一下，顺便简单说说我的理解。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;风险与报酬的权衡：风险与收益一般来说是正相关的，所以忽悠高收益低风险的理财师基本上可以定义为骗子。但是也不是那么绝对的，通过知识差信息差是有可能低风险较高收益的，反之，低收益的产品也可能是高风险的，比如某些网贷平台。&lt;/li&gt;
&lt;li&gt;货币的时间价值：不理解复利没法理解投资，中国人情借钱，十年前借1万，十年后还1万，如果按年华收益7%算，也基本上翻倍了。&lt;/li&gt;
&lt;li&gt;多样化有助于降低风险：所谓东方不亮西方亮。但是要注意投资品种间的相关性。&lt;/li&gt;
&lt;li&gt;不是所有风险都是一样的：多样化并不能消除系统性风险，如果经济整体崩溃，买什么股票债券基本上都完蛋。&lt;/li&gt;
&lt;li&gt;竞争性投资市场的根源：通过竞价机制，市场一般是有效的，打败市场非常之难。所谓猪也是这么想的就是这个原理了，我经常听到有人说希望在股市中获得50%到100%的年化收益，只能祝他们赌博愉快。&lt;/li&gt;
&lt;li&gt;税收因素对个人财务决策的影响：开赌场的赚钱。&lt;/li&gt;
&lt;li&gt;流动性的重要性：高流动性带来溢价，低流动性带来折价。一般要留3~6个月的生活费，T+0或者T+1可以投资货币基金、逆回购等品种。&lt;/li&gt;
&lt;li&gt;没有计划将一事无成：我从2015年底开始做财务总结与计划，感觉效果很明显。&lt;/li&gt;
&lt;li&gt;知识是最好的保障：不要当韭菜。&lt;/li&gt;
&lt;li&gt;保护自己免受重大灾害或灾难的威胁：消费险是保险的本质。&lt;/li&gt;
&lt;li&gt;投资的时间尺度：股票投资至少能拿5年，比特币我至少拿20年。&lt;/li&gt;
&lt;li&gt;委托代理问题——注意推销技巧：我觉得不看广告看合同比较靠谱。&lt;/li&gt;
&lt;li&gt;优先付给自己：拿到钱，先想到储蓄投资或者自我提升。&lt;/li&gt;
&lt;li&gt;金钱并不是一切：这是正确得废话。&lt;/li&gt;
&lt;li&gt;开始行动吧！投资理财越早越好，以前没开始的就要今天开始。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p><a href="https://book.douban.com/subject/4894568/"
   rel="noopener noreferrer" target="_blank" class="external">《个人理财》</a>
这本书，是美国大学的本科教材，内容相当丰富，涉及现金管理、股票债券基金保险、买房买车、养老计划甚至遗嘱，很可惜我没有在十多年前的本科学到这本书，不过好在现在看了，还来得及教我孩子。</p>
<p>这本书由于写的是美国的情况，所以很多内容只有原理性的参考价值，具体应用需要参考中国的实际情况，所以我也只是大致翻了一遍，但是它总结的个人理财的15条原则贯穿全书，是具有很强的普世性的。这里摘录列举一下，顺便简单说说我的理解。</p>
<ol>
<li>风险与报酬的权衡：风险与收益一般来说是正相关的，所以忽悠高收益低风险的理财师基本上可以定义为骗子。但是也不是那么绝对的，通过知识差信息差是有可能低风险较高收益的，反之，低收益的产品也可能是高风险的，比如某些网贷平台。</li>
<li>货币的时间价值：不理解复利没法理解投资，中国人情借钱，十年前借1万，十年后还1万，如果按年华收益7%算，也基本上翻倍了。</li>
<li>多样化有助于降低风险：所谓东方不亮西方亮。但是要注意投资品种间的相关性。</li>
<li>不是所有风险都是一样的：多样化并不能消除系统性风险，如果经济整体崩溃，买什么股票债券基本上都完蛋。</li>
<li>竞争性投资市场的根源：通过竞价机制，市场一般是有效的，打败市场非常之难。所谓猪也是这么想的就是这个原理了，我经常听到有人说希望在股市中获得50%到100%的年化收益，只能祝他们赌博愉快。</li>
<li>税收因素对个人财务决策的影响：开赌场的赚钱。</li>
<li>流动性的重要性：高流动性带来溢价，低流动性带来折价。一般要留3~6个月的生活费，T+0或者T+1可以投资货币基金、逆回购等品种。</li>
<li>没有计划将一事无成：我从2015年底开始做财务总结与计划，感觉效果很明显。</li>
<li>知识是最好的保障：不要当韭菜。</li>
<li>保护自己免受重大灾害或灾难的威胁：消费险是保险的本质。</li>
<li>投资的时间尺度：股票投资至少能拿5年，比特币我至少拿20年。</li>
<li>委托代理问题——注意推销技巧：我觉得不看广告看合同比较靠谱。</li>
<li>优先付给自己：拿到钱，先想到储蓄投资或者自我提升。</li>
<li>金钱并不是一切：这是正确得废话。</li>
<li>开始行动吧！投资理财越早越好，以前没开始的就要今天开始。</li>
</ol>
]]></content:encoded><category>investment</category><category domain="tags">理财</category><category domain="tags">投资</category></item><item><title>尽人事安天命的概率学原理</title><link>https://yifeitao.com/the-principle-of-probability-of-destiny/</link><pubDate>Wed, 04 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-principle-of-probability-of-destiny/</guid><description>&lt;p&gt;为什么马云那么有钱？&lt;/p&gt;
&lt;p&gt;你去找各种心灵鸡汤故事的话，会看到很多分析，一般都要从马云的童年说起，仿佛他时命定的商业巨子。&lt;/p&gt;
&lt;p&gt;如果你分析一下中国三十多年来的历史进程，出现类似马云的人物几乎时必然的，中国有世界上最大的市场，再加上信息革命的浪潮，出现新经济富翁是必然的，所谓大风起兮猪飞扬是也。&lt;/p&gt;
&lt;p&gt;那么问题就变成了：为什么这个人是马云？从历史来看，这不过是一个随机事件，不是马云，就是李云、张云。所有的鸡汤故事都是事后诸葛亮，把所有能联系起来的因素都和最终的成功联系起来，因为鸡汤要让读的人有那么一瞬间的幻觉：我也能成功，只要我照着书上说的去做。&lt;/p&gt;
&lt;p&gt;关于成功这件事，我觉得古人已经把道理说尽了，那就是：尽人事安天命。我想从概率的角度再解读一下。&lt;/p&gt;
&lt;p&gt;一个人的成功始终是个概率事件，命运中的不可控因素太多，谁也不能保证把控自己的命运，让马云回到过去再平行宇宙中再来一次，或许一个微小的变化就会让他不再能进入首富行列。但即使这样，我相信他也会过得比大部分人要充实，因为他毕竟比大多数人要努力思考并践行自己的思考。&lt;/p&gt;
&lt;p&gt;成功是一个概率事件，而努力则能提高这个概率，尤其是持续努力，50%成功率的事情连续两次就能将成功概率提升到75%，因为人生和赌博不同，往往抓住一次机会就能一飞冲天了。比如那个做Flobby Bird发了小财的越南人，在那之前做了十几款App一个都没火，他也只不过是通过自己的坚持等到了一个成功。&lt;/p&gt;
&lt;p&gt;真正有用的道理听了可能并不直接让人直接就兴奋起来，尽人事安天命就是这种道理，它要求你尽自己最大的努力，却又对成功不抱过多的期望，浮躁的人们又有几人能做到呢？&lt;/p&gt;
&lt;p&gt;既然我努力了也不一定成功，那为什么我还要努力？&lt;/p&gt;
&lt;p&gt;努力能提高成功的概率，天上掉馅饼也要出门捡才行。&lt;/p&gt;
&lt;p&gt;如果一直努力，始终不能成功怎么办？&lt;/p&gt;
&lt;p&gt;首先成功应该视为对努力的一种回报，努力之后的回报有大有小，是概率事件，所以应当更关注成长，其实本质上没有一个明确的成功与否的界限。退一步看，即使始终“不成功“，一个人能努力活一辈子，不枉此生，已经接近了生命的意义，应当视为上天的恩赐。&lt;/p&gt;</description><content:encoded><![CDATA[<p>为什么马云那么有钱？</p>
<p>你去找各种心灵鸡汤故事的话，会看到很多分析，一般都要从马云的童年说起，仿佛他时命定的商业巨子。</p>
<p>如果你分析一下中国三十多年来的历史进程，出现类似马云的人物几乎时必然的，中国有世界上最大的市场，再加上信息革命的浪潮，出现新经济富翁是必然的，所谓大风起兮猪飞扬是也。</p>
<p>那么问题就变成了：为什么这个人是马云？从历史来看，这不过是一个随机事件，不是马云，就是李云、张云。所有的鸡汤故事都是事后诸葛亮，把所有能联系起来的因素都和最终的成功联系起来，因为鸡汤要让读的人有那么一瞬间的幻觉：我也能成功，只要我照着书上说的去做。</p>
<p>关于成功这件事，我觉得古人已经把道理说尽了，那就是：尽人事安天命。我想从概率的角度再解读一下。</p>
<p>一个人的成功始终是个概率事件，命运中的不可控因素太多，谁也不能保证把控自己的命运，让马云回到过去再平行宇宙中再来一次，或许一个微小的变化就会让他不再能进入首富行列。但即使这样，我相信他也会过得比大部分人要充实，因为他毕竟比大多数人要努力思考并践行自己的思考。</p>
<p>成功是一个概率事件，而努力则能提高这个概率，尤其是持续努力，50%成功率的事情连续两次就能将成功概率提升到75%，因为人生和赌博不同，往往抓住一次机会就能一飞冲天了。比如那个做Flobby Bird发了小财的越南人，在那之前做了十几款App一个都没火，他也只不过是通过自己的坚持等到了一个成功。</p>
<p>真正有用的道理听了可能并不直接让人直接就兴奋起来，尽人事安天命就是这种道理，它要求你尽自己最大的努力，却又对成功不抱过多的期望，浮躁的人们又有几人能做到呢？</p>
<p>既然我努力了也不一定成功，那为什么我还要努力？</p>
<p>努力能提高成功的概率，天上掉馅饼也要出门捡才行。</p>
<p>如果一直努力，始终不能成功怎么办？</p>
<p>首先成功应该视为对努力的一种回报，努力之后的回报有大有小，是概率事件，所以应当更关注成长，其实本质上没有一个明确的成功与否的界限。退一步看，即使始终“不成功“，一个人能努力活一辈子，不枉此生，已经接近了生命的意义，应当视为上天的恩赐。</p>
]]></content:encoded><category>methodology</category><category domain="tags">概率</category><category domain="tags">人生</category></item><item><title>2016总结</title><link>https://yifeitao.com/summary-2016/</link><pubDate>Tue, 03 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/summary-2016/</guid><description>&lt;p&gt;2016年总的来说是越来越努力的一年，付出的努力也基本上得到了回报。&lt;/p&gt;
&lt;h2 id="工作"&gt;工作&lt;/h2&gt;
&lt;p&gt;带领小团队完成了2015年的2个软件项目，2016年小团队承担了5个软件研发项目，而且工作主要集中到了下半年，实在是不堪重负，部分项目只能草草交差了事，不过也有亮点，个人完成了3个项目的架构设计，其中1个是在同事前期开发的基础上重构出来的，组织了团队的日常交流，涉及面向对象设计和机器学习算法等，团队成员得到了成长，到年底基本上不再负责具体的项目。如果明年还继续这个工作，一定要保证每个项目2~3人的配置，以免粗制滥造。&lt;/p&gt;
&lt;h2 id="学习"&gt;学习&lt;/h2&gt;
&lt;p&gt;业余时间在coursera刷完了《学会学习》、《机器学习》、《算法一》，这些课程都相当好，尤其是《学会学习》值得向每一个想要学习的人推荐。借助boolan网复习了一轮《设计模式》，有大量的编程经验后再回头学体会比较深刻。&lt;/p&gt;
&lt;p&gt;出于自己及育儿需求，集中阅读了比较多的学习理论与心理学方面的书籍，包括《玩耍精神》、《刻意练习》、《学习之道》、《精进》、《自控力》、《如何高效学习》等。但是还需要慢慢消化吸收，充实自己的治学体系。&lt;/p&gt;
&lt;p&gt;另外还值得一提的书有《父母效能手册》、《人类简史》、《调试九法》、《程序员修炼之道》。&lt;/p&gt;
&lt;p&gt;订阅了李笑来的得到专栏《通往财富自由之路》，虽然说教味比较浓，但是确实有很多可取之处。&lt;/p&gt;
&lt;p&gt;Python语言学了一个皮毛，能够应付一些算法问题。&lt;/p&gt;
&lt;h2 id="投资"&gt;投资&lt;/h2&gt;
&lt;p&gt;对投资已经单独写了总结，不再赘述，需要补充一点就是看投资方面的书，几乎是一本万利的事情，主要有《指数基金投资指南》、《个人理财》、《低风险投资之路》等，几乎每本都带来了直接的收益。&lt;/p&gt;
&lt;h2 id="健身"&gt;健身&lt;/h2&gt;
&lt;p&gt;年中计划用悦跑圈记录跑步100公里，结果只记录了约90公里，当然如果加上未记录的部分，是超过了100公里，年初体检时发现轻度脂肪肝，所以立志少吃多运动，基本上都做到了，目前130多减重到120多。&lt;/p&gt;
&lt;h2 id="娱乐"&gt;娱乐&lt;/h2&gt;
&lt;p&gt;2016年豆瓣标记观看影视作品57部（实际上可能只有50部左右），其中电影院观看了14部，考虑到时间宝贵，以后挑片子只能更加谨慎。去了张家界和拉萨旅游，去拉萨是计划外。&lt;/p&gt;
&lt;h2 id="家庭"&gt;家庭&lt;/h2&gt;
&lt;p&gt;和家人的沟通越来越顺畅，除了聊天还开辟了写文章交流思想的新方式。着急小朋友虽然各项能力发育程度不一，但在妈妈和外婆的照顾下茁壮成长，独立人格值得珍惜，只是在沟通交流方面需要更多的耐心和担待，辛苦妈妈了，我也要尽更多的责任。&lt;/p&gt;
&lt;h2 id="其他"&gt;其他&lt;/h2&gt;
&lt;p&gt;一个小惊喜，拿到了公司辩论赛的最佳辩手，尽管在台上我一如既往的竞争到手抖。&lt;/p&gt;
&lt;h2 id="2017重大计划"&gt;2017重大计划&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;换工作，这需要一些充电工作，通过纳米学位学会Android开发，业余开发1~2个App发布到市场，用java语言刷完leetcode算法题，适当学习Java语言满足Android开发和刷题的需求；&lt;/li&gt;
&lt;li&gt;伴随换工作的还有住房问题需要解决；&lt;/li&gt;
&lt;li&gt;继续深入学习投资，主要教材《聪明的投资者》、《手把手教你读财报》，以家庭基金形式运作投资，每月底发布净值和投资小结，减少归并投资账户。&lt;/li&gt;
&lt;li&gt;继续完善自己的治学体系，重点学习批判性思维，主要教材：《Beyond Fellings》、《学会提问》。&lt;/li&gt;
&lt;li&gt;每天一篇blog，每天github提交代码。&lt;/li&gt;
&lt;li&gt;长跑200公里，累计300公里，基于HIT、NEAT等理念在时间紧张时设法保持运动，维持体重，争取不感冒。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>2016年总的来说是越来越努力的一年，付出的努力也基本上得到了回报。</p>
<h2 id="工作">工作</h2>
<p>带领小团队完成了2015年的2个软件项目，2016年小团队承担了5个软件研发项目，而且工作主要集中到了下半年，实在是不堪重负，部分项目只能草草交差了事，不过也有亮点，个人完成了3个项目的架构设计，其中1个是在同事前期开发的基础上重构出来的，组织了团队的日常交流，涉及面向对象设计和机器学习算法等，团队成员得到了成长，到年底基本上不再负责具体的项目。如果明年还继续这个工作，一定要保证每个项目2~3人的配置，以免粗制滥造。</p>
<h2 id="学习">学习</h2>
<p>业余时间在coursera刷完了《学会学习》、《机器学习》、《算法一》，这些课程都相当好，尤其是《学会学习》值得向每一个想要学习的人推荐。借助boolan网复习了一轮《设计模式》，有大量的编程经验后再回头学体会比较深刻。</p>
<p>出于自己及育儿需求，集中阅读了比较多的学习理论与心理学方面的书籍，包括《玩耍精神》、《刻意练习》、《学习之道》、《精进》、《自控力》、《如何高效学习》等。但是还需要慢慢消化吸收，充实自己的治学体系。</p>
<p>另外还值得一提的书有《父母效能手册》、《人类简史》、《调试九法》、《程序员修炼之道》。</p>
<p>订阅了李笑来的得到专栏《通往财富自由之路》，虽然说教味比较浓，但是确实有很多可取之处。</p>
<p>Python语言学了一个皮毛，能够应付一些算法问题。</p>
<h2 id="投资">投资</h2>
<p>对投资已经单独写了总结，不再赘述，需要补充一点就是看投资方面的书，几乎是一本万利的事情，主要有《指数基金投资指南》、《个人理财》、《低风险投资之路》等，几乎每本都带来了直接的收益。</p>
<h2 id="健身">健身</h2>
<p>年中计划用悦跑圈记录跑步100公里，结果只记录了约90公里，当然如果加上未记录的部分，是超过了100公里，年初体检时发现轻度脂肪肝，所以立志少吃多运动，基本上都做到了，目前130多减重到120多。</p>
<h2 id="娱乐">娱乐</h2>
<p>2016年豆瓣标记观看影视作品57部（实际上可能只有50部左右），其中电影院观看了14部，考虑到时间宝贵，以后挑片子只能更加谨慎。去了张家界和拉萨旅游，去拉萨是计划外。</p>
<h2 id="家庭">家庭</h2>
<p>和家人的沟通越来越顺畅，除了聊天还开辟了写文章交流思想的新方式。着急小朋友虽然各项能力发育程度不一，但在妈妈和外婆的照顾下茁壮成长，独立人格值得珍惜，只是在沟通交流方面需要更多的耐心和担待，辛苦妈妈了，我也要尽更多的责任。</p>
<h2 id="其他">其他</h2>
<p>一个小惊喜，拿到了公司辩论赛的最佳辩手，尽管在台上我一如既往的竞争到手抖。</p>
<h2 id="2017重大计划">2017重大计划</h2>
<ol>
<li>换工作，这需要一些充电工作，通过纳米学位学会Android开发，业余开发1~2个App发布到市场，用java语言刷完leetcode算法题，适当学习Java语言满足Android开发和刷题的需求；</li>
<li>伴随换工作的还有住房问题需要解决；</li>
<li>继续深入学习投资，主要教材《聪明的投资者》、《手把手教你读财报》，以家庭基金形式运作投资，每月底发布净值和投资小结，减少归并投资账户。</li>
<li>继续完善自己的治学体系，重点学习批判性思维，主要教材：《Beyond Fellings》、《学会提问》。</li>
<li>每天一篇blog，每天github提交代码。</li>
<li>长跑200公里，累计300公里，基于HIT、NEAT等理念在时间紧张时设法保持运动，维持体重，争取不感冒。</li>
</ol>
]]></content:encoded><category>life</category><category domain="tags">年度总结</category><category domain="tags">反思</category></item><item><title>互联网获取信息的三种方式：漫游、订阅、检索</title><link>https://yifeitao.com/3-ways-to-get-information-on-internet/</link><pubDate>Mon, 02 Jan 2017 00:00:00 +0000</pubDate><guid>https://yifeitao.com/3-ways-to-get-information-on-internet/</guid><description>&lt;p&gt;前几个星期，我把手机上几乎所有App的通知都关掉了，然后在接下来一个星期里，使用各种App时，它们不断提醒我要打开通知，不要错过重要的信息。我没理它们，也似乎没错过什么重要信息。在这个所谓的信息时代，我们每天收到的信息可能比古代的皇帝还要多，但真正需要的有多少非常值得怀疑，你以为你在信息的海洋遨游，其实只不过是被人收割你的注意力和所谓无聊的时间。互联网是相当强大的一个工具，想要很好的使用这个工具则需要自身的强大，否则很容易成为工具的奴隶。本文将辨析互联网获取信息的三种方式：漫游、订阅、检索。&lt;/p&gt;
&lt;h2 id="1-漫游"&gt;1 漫游&lt;/h2&gt;
&lt;p&gt;这里的漫游一定程度上指的就是不带有明确目的在互联网上瞎逛。这种方式是互联网对信息获取方式的最大的颠覆，也是最大的一把双刃剑。超链接出现后，信息间联系方便而无限扩展，传统的信息组织方式大多是线性、树性的，而互联网的信息组织形式是网状的，它带来了很多好处：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;网状能够模拟一切复杂的结构，所以提供了更真实的表现信息结构的可能性，比如维基百科比传统的百科全书在结构上的优势；&lt;/li&gt;
&lt;li&gt;信息内部与外部的界限更加模糊，“参考文献”更易获取，在互联网上做一个专题比传统媒体要容易得多；&lt;/li&gt;
&lt;li&gt;提供了无限的遇到惊喜的可能性，在漫游的过程中，可能发现以前自己不了解的东西，产生思想的碰撞火花，破除信息孤岛和自己的认知屏障。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;但是这种方式的缺陷也是很明显的：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;被太多的垃圾信息占据了过多的时间，很多制造信息的人居心叵测，各种标题党无时无刻不再窥窃你的注意力；&lt;/li&gt;
&lt;li&gt;获取的信息非常零散，不成体系，互联网信息依然以免费为主，相比书籍信息质量依然相对低下；&lt;/li&gt;
&lt;li&gt;漫游这种方式很容易伴随浮躁情绪，带来所谓的信息过载，以励志文章代替立志，以了解代替理解，以知道代替知识。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;要想让漫游这种方式发挥好的作用，最需要的是自身的强大，包括价值观与批判性思维等，才能不断在信息海洋中吸收养分，否则就会被淹没。&lt;/p&gt;
&lt;h2 id="2-订阅"&gt;2 订阅&lt;/h2&gt;
&lt;p&gt;订阅这种方式是互联网之前的传统媒体与人交互的主要方式，但随着互联网的发展，也成为互联网上获取信息的方式之一。大多数信息提供者希望用户能够订阅，建立长期关系，这样才能获得利益，它的形式可能是关注、推送等。比如，微信的公众号乃至朋友圈是对信息漫游的一次复古和反动，微信公众号文章甚至连分享的超链接都故意是不稳定的，试图打造自己的小生态。订阅有很多变种，最前卫的一种是机器学习带来的推荐机制，本质上是基于个体兴趣的一种订阅，无论订阅是复古还是前卫，它都有它的优势：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;订阅是一种筛选机制，能集中注意力关注自己真正关心的人和事，或者通过关注靠谱的人帮助自己过滤信息；&lt;/li&gt;
&lt;li&gt;订阅很容易加入付费机制，建立高质量的知识服务，在高速迭代的同时保存信息的高质量。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;但是订阅也带来了风险：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;圈子化，不论是主动筛选还是机器筛选，最后听到看到的都是自己愿意看到听到的，把自己喜欢的理解为全世界的真相是有很大风险的；&lt;/li&gt;
&lt;li&gt;看似主动订阅的背后有着很大的被动，人们倾向于维护自己的选择，当了一个人的粉丝可能回去粉饰他的错误，如果投入了金钱，则会更加坚定最初的选择。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="3-检索"&gt;3 检索&lt;/h2&gt;
&lt;p&gt;检索是学术研究必备素养，我觉得也是一个现代人活在互联网时代的必备素养，搜索引擎是互联网上超链接之后最伟大的发明。通过检索，一个获取信息的人才能真正把互联网当成一个工具：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;方便的检索使得掌握孤立知识变得价值很低，比如一些电视知识竞赛中类似于“中国的铁轨有多宽？”的问题，因此介入一个新的领域变得很容易；&lt;/li&gt;
&lt;li&gt;检索具有强烈的目的性，信息为我所用有了一个好的起点，不会再有在网上逛了两小时却记不起自己看了什么的现象出现；&lt;/li&gt;
&lt;li&gt;检索常常能能立即解决问题，只要你不是遇到问题的第一个倒霉蛋。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;检索能发挥作用，除了提高检索的基本技能外，最重要的还是自身治学水平的提高，否则也会陷入以检索代替思考的误区，满足于互联网这个外脑带给自己信息，自己不能综合运用，提出创意。&lt;/p&gt;
&lt;h2 id="4-综合"&gt;4 综合&lt;/h2&gt;
&lt;p&gt;为了厘清概念提出了三种方式，真实的场景往往是三者的结合，比如在新浪微博关注了某程序员（订阅），他提到了某种新的编程语言很有意思，还给出了一个链接，于是随手点开看看（漫游），发现真的不错，于是Google搜索到语言官网等很多信息（检索），集中学习了1小时。但也可能是，在新浪微博关注了某程序员（订阅），他转发了某个搞笑视频，于是随手点开看看（漫游），结果看了一个有一个，一个小时候后不知道自己在干啥。&lt;/p&gt;
&lt;p&gt;这些获取信息的方式都有它的优势，关键是使用时应当“有意识”，让自己的脑子时刻提醒自己的状态，即使是最自由的漫游状态，也应当设定一定的时间限制，否则无数的注意力黑洞会让你的时间死得不明不白。&lt;/p&gt;
&lt;p&gt;互联网是一个强大的工具，甚至会对弱者实施碾压，如果不持续提升自己的判断、分析能力，只会被不断的收割注意力，不断的被洗脑，觉得世界上充满了很有道理的话，但依然过不好这一生。&lt;/p&gt;</description><content:encoded><![CDATA[<p>前几个星期，我把手机上几乎所有App的通知都关掉了，然后在接下来一个星期里，使用各种App时，它们不断提醒我要打开通知，不要错过重要的信息。我没理它们，也似乎没错过什么重要信息。在这个所谓的信息时代，我们每天收到的信息可能比古代的皇帝还要多，但真正需要的有多少非常值得怀疑，你以为你在信息的海洋遨游，其实只不过是被人收割你的注意力和所谓无聊的时间。互联网是相当强大的一个工具，想要很好的使用这个工具则需要自身的强大，否则很容易成为工具的奴隶。本文将辨析互联网获取信息的三种方式：漫游、订阅、检索。</p>
<h2 id="1-漫游">1 漫游</h2>
<p>这里的漫游一定程度上指的就是不带有明确目的在互联网上瞎逛。这种方式是互联网对信息获取方式的最大的颠覆，也是最大的一把双刃剑。超链接出现后，信息间联系方便而无限扩展，传统的信息组织方式大多是线性、树性的，而互联网的信息组织形式是网状的，它带来了很多好处：</p>
<ol>
<li>网状能够模拟一切复杂的结构，所以提供了更真实的表现信息结构的可能性，比如维基百科比传统的百科全书在结构上的优势；</li>
<li>信息内部与外部的界限更加模糊，“参考文献”更易获取，在互联网上做一个专题比传统媒体要容易得多；</li>
<li>提供了无限的遇到惊喜的可能性，在漫游的过程中，可能发现以前自己不了解的东西，产生思想的碰撞火花，破除信息孤岛和自己的认知屏障。</li>
</ol>
<p>但是这种方式的缺陷也是很明显的：</p>
<ol>
<li>被太多的垃圾信息占据了过多的时间，很多制造信息的人居心叵测，各种标题党无时无刻不再窥窃你的注意力；</li>
<li>获取的信息非常零散，不成体系，互联网信息依然以免费为主，相比书籍信息质量依然相对低下；</li>
<li>漫游这种方式很容易伴随浮躁情绪，带来所谓的信息过载，以励志文章代替立志，以了解代替理解，以知道代替知识。</li>
</ol>
<p>要想让漫游这种方式发挥好的作用，最需要的是自身的强大，包括价值观与批判性思维等，才能不断在信息海洋中吸收养分，否则就会被淹没。</p>
<h2 id="2-订阅">2 订阅</h2>
<p>订阅这种方式是互联网之前的传统媒体与人交互的主要方式，但随着互联网的发展，也成为互联网上获取信息的方式之一。大多数信息提供者希望用户能够订阅，建立长期关系，这样才能获得利益，它的形式可能是关注、推送等。比如，微信的公众号乃至朋友圈是对信息漫游的一次复古和反动，微信公众号文章甚至连分享的超链接都故意是不稳定的，试图打造自己的小生态。订阅有很多变种，最前卫的一种是机器学习带来的推荐机制，本质上是基于个体兴趣的一种订阅，无论订阅是复古还是前卫，它都有它的优势：</p>
<ol>
<li>订阅是一种筛选机制，能集中注意力关注自己真正关心的人和事，或者通过关注靠谱的人帮助自己过滤信息；</li>
<li>订阅很容易加入付费机制，建立高质量的知识服务，在高速迭代的同时保存信息的高质量。</li>
</ol>
<p>但是订阅也带来了风险：</p>
<ol>
<li>圈子化，不论是主动筛选还是机器筛选，最后听到看到的都是自己愿意看到听到的，把自己喜欢的理解为全世界的真相是有很大风险的；</li>
<li>看似主动订阅的背后有着很大的被动，人们倾向于维护自己的选择，当了一个人的粉丝可能回去粉饰他的错误，如果投入了金钱，则会更加坚定最初的选择。</li>
</ol>
<h2 id="3-检索">3 检索</h2>
<p>检索是学术研究必备素养，我觉得也是一个现代人活在互联网时代的必备素养，搜索引擎是互联网上超链接之后最伟大的发明。通过检索，一个获取信息的人才能真正把互联网当成一个工具：</p>
<ol>
<li>方便的检索使得掌握孤立知识变得价值很低，比如一些电视知识竞赛中类似于“中国的铁轨有多宽？”的问题，因此介入一个新的领域变得很容易；</li>
<li>检索具有强烈的目的性，信息为我所用有了一个好的起点，不会再有在网上逛了两小时却记不起自己看了什么的现象出现；</li>
<li>检索常常能能立即解决问题，只要你不是遇到问题的第一个倒霉蛋。</li>
</ol>
<p>检索能发挥作用，除了提高检索的基本技能外，最重要的还是自身治学水平的提高，否则也会陷入以检索代替思考的误区，满足于互联网这个外脑带给自己信息，自己不能综合运用，提出创意。</p>
<h2 id="4-综合">4 综合</h2>
<p>为了厘清概念提出了三种方式，真实的场景往往是三者的结合，比如在新浪微博关注了某程序员（订阅），他提到了某种新的编程语言很有意思，还给出了一个链接，于是随手点开看看（漫游），发现真的不错，于是Google搜索到语言官网等很多信息（检索），集中学习了1小时。但也可能是，在新浪微博关注了某程序员（订阅），他转发了某个搞笑视频，于是随手点开看看（漫游），结果看了一个有一个，一个小时候后不知道自己在干啥。</p>
<p>这些获取信息的方式都有它的优势，关键是使用时应当“有意识”，让自己的脑子时刻提醒自己的状态，即使是最自由的漫游状态，也应当设定一定的时间限制，否则无数的注意力黑洞会让你的时间死得不明不白。</p>
<p>互联网是一个强大的工具，甚至会对弱者实施碾压，如果不持续提升自己的判断、分析能力，只会被不断的收割注意力，不断的被洗脑，觉得世界上充满了很有道理的话，但依然过不好这一生。</p>
]]></content:encoded><category>methodology</category><category domain="tags">互联网</category><category domain="tags">信息获取</category></item><item><title>《锻炼的真相》笔记</title><link>https://yifeitao.com/the-truth-about-exercise/</link><pubDate>Tue, 27 Dec 2016 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-truth-about-exercise/</guid><description>&lt;p&gt;&lt;a href="https://movie.douban.com/subject/24844982/"
rel="noopener noreferrer" target="_blank" class="external"&gt;地平线系列：关于锻炼的真相 Horizon: The Truth About Exercise (2012)&lt;/a&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;运动所能消耗的热量其实并不多，减肥光靠运动不行，关键还要少吃。&lt;/li&gt;
&lt;li&gt;血脂最大的危害还不是皮下脂肪，而是积聚在内脏的脂肪。&lt;/li&gt;
&lt;li&gt;运动除了消耗热量，还能带来其他好处，比如运动过再吃东西会提高某些脂肪代谢相关酶的活性，血脂含量会低不少。&lt;/li&gt;
&lt;li&gt;运动对不同的人产生的作用是不一样的，某些作用是基因决定的。&lt;/li&gt;
&lt;li&gt;HIT，即短时间高强度的运动（可以短至每周三分钟，每次二十秒）可以大幅度改善很多人的血糖代谢能力，预防糖尿病，和改善供氧能力。&lt;/li&gt;
&lt;li&gt;改善NEAT，即非运动代谢，可以让我们更健康，其关键点就是不要久坐，绝对不要超过一个小时，应该不时的站起来动一动，走一走。&lt;/li&gt;
&lt;li&gt;总的来说，锻炼会逐步迈入个性化时代，每个人都要找到适合自己的方法，千万不要因为讨厌去健身房或专门花大块时间锻炼就放弃了锻炼，像HIT和NEAT都是无需特别的大块时间的科学的锻炼方法。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p><a href="https://movie.douban.com/subject/24844982/"
   rel="noopener noreferrer" target="_blank" class="external">地平线系列：关于锻炼的真相 Horizon: The Truth About Exercise (2012)</a>
</p>
<ol>
<li>运动所能消耗的热量其实并不多，减肥光靠运动不行，关键还要少吃。</li>
<li>血脂最大的危害还不是皮下脂肪，而是积聚在内脏的脂肪。</li>
<li>运动除了消耗热量，还能带来其他好处，比如运动过再吃东西会提高某些脂肪代谢相关酶的活性，血脂含量会低不少。</li>
<li>运动对不同的人产生的作用是不一样的，某些作用是基因决定的。</li>
<li>HIT，即短时间高强度的运动（可以短至每周三分钟，每次二十秒）可以大幅度改善很多人的血糖代谢能力，预防糖尿病，和改善供氧能力。</li>
<li>改善NEAT，即非运动代谢，可以让我们更健康，其关键点就是不要久坐，绝对不要超过一个小时，应该不时的站起来动一动，走一走。</li>
<li>总的来说，锻炼会逐步迈入个性化时代，每个人都要找到适合自己的方法，千万不要因为讨厌去健身房或专门花大块时间锻炼就放弃了锻炼，像HIT和NEAT都是无需特别的大块时间的科学的锻炼方法。</li>
</ol>
]]></content:encoded><category>movie</category><category domain="tags">健康</category><category domain="tags">运动</category><category domain="tags">读书笔记</category></item><item><title>《调试九法》：调试是个技术活</title><link>https://yifeitao.com/debug-is-technology/</link><pubDate>Sat, 24 Dec 2016 00:00:00 +0000</pubDate><guid>https://yifeitao.com/debug-is-technology/</guid><description>&lt;p&gt;一般当工程师把一个东西称为艺术甚至玄学的时候，说明这个东西难度很大，没有太多规律可以遵循，调试就属于此列。几乎每个程序员都有被bug搞到死去活来的经验，有时候颠来倒去，问题似乎解决了，但也不知道为什么，就把它当作不可解释的玄学现象，最烦人的一种bug是偶尔出现难以复现的，学名海森堡bug。&lt;/p&gt;
&lt;p&gt;不过毕竟软件还是属于科学技术的范畴，调试也应当是门技术活。《调试九法》是一本少见的讲调试技术的书，九个普遍性的原则不仅适用于软硬件开发维护，甚至还能运用到日常生活，为了找到这本书我也是费了点神，幸好图灵社区还有&lt;a href="http://www.ituring.com.cn/book/84"
rel="noopener noreferrer" target="_blank" class="external"&gt;正版的电子书&lt;/a&gt;
卖。&lt;/p&gt;
&lt;p&gt;说实话，作者举的很多例子偏硬件，所以理解起来有点隔膜，但是九个原则确实很实用，在我以前的开发调试经历中可能也不自觉的总结过一些，但是看了本书，还是有拿到武功心法的感觉。看过之后，下面再把九个原则遍历一下，加深理解。&lt;/p&gt;
&lt;h2 id="1-理解系统"&gt;1 理解系统&lt;/h2&gt;
&lt;p&gt;这是最重要的一条原则，要分析bug，自然要理解系统是如何运作的，这就需要学习掌握一些基本原理，对具体的类库、工具、技术都需要认真的去读相关文档。我最近几年才养成了认真读官方文档的习惯，搜索引擎的发达，使得我们养成了面向google编程的习惯，面对问题，总是想一蹴而就的解决，结果往往是走了很多弯路，因为舍不得花时间看路标。本书还特别强调“逐字逐句”读手册，简直是对浮躁的人当头棒喝。不理解系统就开始调试和不理解原理就写代码是一脉相承的，俗称“面向巧合编程”。&lt;/p&gt;
&lt;h2 id="2-制造失败"&gt;2 制造失败&lt;/h2&gt;
&lt;p&gt;这条原则讲的是复现bug的重要性与方法，一个bug，肯定是在某个特定的条件下发生的，抽丝剥茧找到这个特定的条件，就成功了一半。以我的硬件维护经验来看，发现bug的人如果能详细的记录整个过程是非常有帮助的。有很多bug出现的条件比较苛刻，所以程序员的口头禅之一就是“在我这里没问题啊”。针对这类bug，首先最好能找到模拟方法，比如加快软件运行交互的速度，进行压力测试等，其次就是在软件内部能有详细合理的bug记录机制，便于从内部找到复现的条件。&lt;/p&gt;
&lt;h2 id="3-不要想而要看"&gt;3 不要想，而要看&lt;/h2&gt;
&lt;p&gt;这一条强调的是观测的重要性，面对现实比胡思乱想重要。语言影响思考，所以遇到bug的口头禅应该是“我看看“而不是”我猜可能是因为“。我们应该想尽办法去看清楚出bug的细节，所以成熟的程序中都应该有用于调试的基础设施，个人经验至少日志是必不可少的，初级程序员习惯于完全靠打断点调试，问题是断点本身会改变程序执行的流程（尤其是多线程的情况下）。当然，猜测依然是有用的，可以帮我们缩小观察的范围，或者至少拟定一个观察的优先级，这样经验就能发挥作用，但是不管怎样，经验不能替代观测。&lt;/p&gt;
&lt;h2 id="4-分而治之"&gt;4 分而治之&lt;/h2&gt;
&lt;p&gt;二分查找法可以把查找的时间复杂度从线性变成对数，不仅是程序中的查找算法，也是调试时的方法论，一个系统有了这个意识后，关键是如何划分系统，又回到了原则1。至少在打断点调试时，要找到出bug的位置，也是可以用二分法的，或者插入日志记录时也可以应用这个原则。另外，书中还提到了bug间相互影响的现象，我觉得甚至又bug跷跷板的现象，解决之道是一个都不要放过。调试bug时发现代码质量实在太差，重构一下有时候也是有必要的，否则浮沙之上筑不了高台啊，甚至经过有效的重构，bug很自然的就发现并消除了。&lt;/p&gt;
&lt;h2 id="5-一次只改一个地方"&gt;5 一次只改一个地方&lt;/h2&gt;
&lt;p&gt;这条原则类似实验科学中的对照原则，一次只考察一个变量，比对正常情况和异常情况，一定不能忽略任何一个测试条件的差异。上一条说bug一个都不放过，但也得一条条过，重构的时候也要注意不要对不懂的代码乱改一气，很多代码的危险性在于牵一发而动全身，我觉得这也是修复bug时的最大风险，往往是消除一个bug同时增加几个bug，还是回到原则1，要理解系统。不过有时候，理解前人的代码谈何容易，这也启示我们写代码时要多积德，不要以为代码就是给编译器看的，而应该是给以后维护我们代码的人看的。&lt;/p&gt;
&lt;h2 id="6-保持审计跟踪"&gt;6 保持审计跟踪&lt;/h2&gt;
&lt;p&gt;这条原则讲的是记录的重要性与方法，我想这就像医生问诊一样，需要问合适的问题，给出具体的有效答案。我的个人经验是一旦开始调试bug，可能整个人就彻底陷进去出不来，通过记录的方式可以把自己从思维的泥潭中抽身出来，不断修正调试bug的计划与方法。对一些专用系统软件，需要培训软件的使用者如何用有效的语言来记录出现bug的情况，如果没有记录，那么调试的人就需要用适当的问题帮助使用者唤醒记忆。此外，我觉得半夜调不出的bug需要睡一觉，让发散思维自动起作用，一般早上就解决了。&lt;/p&gt;
&lt;h2 id="7-检查插头"&gt;7 检查插头&lt;/h2&gt;
&lt;p&gt;这条原则大概说的是所谓”低级失误“了，类似我妈跟我说电脑音箱不响了，我首先得问电源开了没这种。又比如把main函数写成mian函数，有一次我打断点调试就是不进断点，后来发现是因为有两段代码比较类似，我断点打错地方了。根据场景和经验，问问自己是否犯了该场景下常见的低级失误，往往针对能立竿见影的解决很多问题，就像很多电器设备说明书的故障FAQ中，也会强调检查插头。可以说，低级失误低级的是难度，而不是频度。&lt;/p&gt;
&lt;h2 id="8-获得全新观点"&gt;8 获得全新观点&lt;/h2&gt;
&lt;p&gt;这条原则说的是求助和交流，这里面很重要的是通过他人的观点来破除自己的思维定势，所以最好是只给别人详细描述现象，不要说自己的猜测，以免污染别人的判断。对程序员而言，这时候面向google编程的力量是惊人的，可能九成的问题都不需要你真正的再去提问，而是找到合适的搜索词去搜索即可，对中国程序员而言，用英文搜索是必须的技能，当然搜到东西后真正理解也是非常重要的，不能见到药就吃。如果遇到的问题google真的搜不出来，证明你层次稍微高了点，这时候可以上stackoverflow之类的社区提问。&lt;/p&gt;
&lt;h2 id="9-如果你不修复bug它将依然存在"&gt;9 如果你不修复bug，它将依然存在&lt;/h2&gt;
&lt;p&gt;这条原则说的是不要心存侥幸，不要因为bug只是闪现了一下就采取鸵鸟策略，该来的总会来，不是不报，时候未到。当然实际情况可能很复杂，软件工程本来就是时间、成本和质量的妥协体，但即使放过某些bug，也要分析出这样可能造成的后果，建立充分的防护机制，因此在很多软件认证体系中，都会有软件安全等级标准。这里还涉及bug复现和举一反三的问题，需要确认真正找到了bug的原因提供了有效的修复手段，并排查所有类似的问题。比如修复了一个内存泄露问题，就要修复所有导致这类泄露的代码。&lt;/p&gt;
&lt;h2 id="附记如何写出适合调试的代码"&gt;附记：如何写出适合调试的代码&lt;/h2&gt;
&lt;p&gt;从调试的原则反观，对软件构建本身也很有帮助，毕竟调试只是查漏补缺的，最好还是写出来的代码少一些bug，为了调试的时候方便多预留一些手段。这里也简要总结一下个人经验，可能需要不断完善。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;程序中应该提供日志机制，在程序的debug版便于输出调试信息，即使在release版，也要记录软件发生问题（如C#中抛出异常）时的详细情况；&lt;/li&gt;
&lt;li&gt;要写出适合人类阅读的代码，否则后续维护的人看都看不懂，要如何调试？怎么写《代码大全》中说得最详细了，我觉得除了各种习惯写法之外将心比心也是很重要的；&lt;/li&gt;
&lt;li&gt;使用各种类库或工具时，尽量弄懂原理，仔细的阅读官方文档，比如有些类库会详细说明如何防止内存泄露，如何应对多线程情况，看清楚再用，就会少种下祸根，至少不用等到调试的时候再无头苍蝇一样猜测原因；&lt;/li&gt;
&lt;li&gt;写便于测试的代码，这样在调试时，容易剥离问题，或者使用二分法，这方面TDD编程实践讲得比较充分，我个人也需要加强。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>一般当工程师把一个东西称为艺术甚至玄学的时候，说明这个东西难度很大，没有太多规律可以遵循，调试就属于此列。几乎每个程序员都有被bug搞到死去活来的经验，有时候颠来倒去，问题似乎解决了，但也不知道为什么，就把它当作不可解释的玄学现象，最烦人的一种bug是偶尔出现难以复现的，学名海森堡bug。</p>
<p>不过毕竟软件还是属于科学技术的范畴，调试也应当是门技术活。《调试九法》是一本少见的讲调试技术的书，九个普遍性的原则不仅适用于软硬件开发维护，甚至还能运用到日常生活，为了找到这本书我也是费了点神，幸好图灵社区还有<a href="http://www.ituring.com.cn/book/84"
   rel="noopener noreferrer" target="_blank" class="external">正版的电子书</a>
卖。</p>
<p>说实话，作者举的很多例子偏硬件，所以理解起来有点隔膜，但是九个原则确实很实用，在我以前的开发调试经历中可能也不自觉的总结过一些，但是看了本书，还是有拿到武功心法的感觉。看过之后，下面再把九个原则遍历一下，加深理解。</p>
<h2 id="1-理解系统">1 理解系统</h2>
<p>这是最重要的一条原则，要分析bug，自然要理解系统是如何运作的，这就需要学习掌握一些基本原理，对具体的类库、工具、技术都需要认真的去读相关文档。我最近几年才养成了认真读官方文档的习惯，搜索引擎的发达，使得我们养成了面向google编程的习惯，面对问题，总是想一蹴而就的解决，结果往往是走了很多弯路，因为舍不得花时间看路标。本书还特别强调“逐字逐句”读手册，简直是对浮躁的人当头棒喝。不理解系统就开始调试和不理解原理就写代码是一脉相承的，俗称“面向巧合编程”。</p>
<h2 id="2-制造失败">2 制造失败</h2>
<p>这条原则讲的是复现bug的重要性与方法，一个bug，肯定是在某个特定的条件下发生的，抽丝剥茧找到这个特定的条件，就成功了一半。以我的硬件维护经验来看，发现bug的人如果能详细的记录整个过程是非常有帮助的。有很多bug出现的条件比较苛刻，所以程序员的口头禅之一就是“在我这里没问题啊”。针对这类bug，首先最好能找到模拟方法，比如加快软件运行交互的速度，进行压力测试等，其次就是在软件内部能有详细合理的bug记录机制，便于从内部找到复现的条件。</p>
<h2 id="3-不要想而要看">3 不要想，而要看</h2>
<p>这一条强调的是观测的重要性，面对现实比胡思乱想重要。语言影响思考，所以遇到bug的口头禅应该是“我看看“而不是”我猜可能是因为“。我们应该想尽办法去看清楚出bug的细节，所以成熟的程序中都应该有用于调试的基础设施，个人经验至少日志是必不可少的，初级程序员习惯于完全靠打断点调试，问题是断点本身会改变程序执行的流程（尤其是多线程的情况下）。当然，猜测依然是有用的，可以帮我们缩小观察的范围，或者至少拟定一个观察的优先级，这样经验就能发挥作用，但是不管怎样，经验不能替代观测。</p>
<h2 id="4-分而治之">4 分而治之</h2>
<p>二分查找法可以把查找的时间复杂度从线性变成对数，不仅是程序中的查找算法，也是调试时的方法论，一个系统有了这个意识后，关键是如何划分系统，又回到了原则1。至少在打断点调试时，要找到出bug的位置，也是可以用二分法的，或者插入日志记录时也可以应用这个原则。另外，书中还提到了bug间相互影响的现象，我觉得甚至又bug跷跷板的现象，解决之道是一个都不要放过。调试bug时发现代码质量实在太差，重构一下有时候也是有必要的，否则浮沙之上筑不了高台啊，甚至经过有效的重构，bug很自然的就发现并消除了。</p>
<h2 id="5-一次只改一个地方">5 一次只改一个地方</h2>
<p>这条原则类似实验科学中的对照原则，一次只考察一个变量，比对正常情况和异常情况，一定不能忽略任何一个测试条件的差异。上一条说bug一个都不放过，但也得一条条过，重构的时候也要注意不要对不懂的代码乱改一气，很多代码的危险性在于牵一发而动全身，我觉得这也是修复bug时的最大风险，往往是消除一个bug同时增加几个bug，还是回到原则1，要理解系统。不过有时候，理解前人的代码谈何容易，这也启示我们写代码时要多积德，不要以为代码就是给编译器看的，而应该是给以后维护我们代码的人看的。</p>
<h2 id="6-保持审计跟踪">6 保持审计跟踪</h2>
<p>这条原则讲的是记录的重要性与方法，我想这就像医生问诊一样，需要问合适的问题，给出具体的有效答案。我的个人经验是一旦开始调试bug，可能整个人就彻底陷进去出不来，通过记录的方式可以把自己从思维的泥潭中抽身出来，不断修正调试bug的计划与方法。对一些专用系统软件，需要培训软件的使用者如何用有效的语言来记录出现bug的情况，如果没有记录，那么调试的人就需要用适当的问题帮助使用者唤醒记忆。此外，我觉得半夜调不出的bug需要睡一觉，让发散思维自动起作用，一般早上就解决了。</p>
<h2 id="7-检查插头">7 检查插头</h2>
<p>这条原则大概说的是所谓”低级失误“了，类似我妈跟我说电脑音箱不响了，我首先得问电源开了没这种。又比如把main函数写成mian函数，有一次我打断点调试就是不进断点，后来发现是因为有两段代码比较类似，我断点打错地方了。根据场景和经验，问问自己是否犯了该场景下常见的低级失误，往往针对能立竿见影的解决很多问题，就像很多电器设备说明书的故障FAQ中，也会强调检查插头。可以说，低级失误低级的是难度，而不是频度。</p>
<h2 id="8-获得全新观点">8 获得全新观点</h2>
<p>这条原则说的是求助和交流，这里面很重要的是通过他人的观点来破除自己的思维定势，所以最好是只给别人详细描述现象，不要说自己的猜测，以免污染别人的判断。对程序员而言，这时候面向google编程的力量是惊人的，可能九成的问题都不需要你真正的再去提问，而是找到合适的搜索词去搜索即可，对中国程序员而言，用英文搜索是必须的技能，当然搜到东西后真正理解也是非常重要的，不能见到药就吃。如果遇到的问题google真的搜不出来，证明你层次稍微高了点，这时候可以上stackoverflow之类的社区提问。</p>
<h2 id="9-如果你不修复bug它将依然存在">9 如果你不修复bug，它将依然存在</h2>
<p>这条原则说的是不要心存侥幸，不要因为bug只是闪现了一下就采取鸵鸟策略，该来的总会来，不是不报，时候未到。当然实际情况可能很复杂，软件工程本来就是时间、成本和质量的妥协体，但即使放过某些bug，也要分析出这样可能造成的后果，建立充分的防护机制，因此在很多软件认证体系中，都会有软件安全等级标准。这里还涉及bug复现和举一反三的问题，需要确认真正找到了bug的原因提供了有效的修复手段，并排查所有类似的问题。比如修复了一个内存泄露问题，就要修复所有导致这类泄露的代码。</p>
<h2 id="附记如何写出适合调试的代码">附记：如何写出适合调试的代码</h2>
<p>从调试的原则反观，对软件构建本身也很有帮助，毕竟调试只是查漏补缺的，最好还是写出来的代码少一些bug，为了调试的时候方便多预留一些手段。这里也简要总结一下个人经验，可能需要不断完善。</p>
<ol>
<li>程序中应该提供日志机制，在程序的debug版便于输出调试信息，即使在release版，也要记录软件发生问题（如C#中抛出异常）时的详细情况；</li>
<li>要写出适合人类阅读的代码，否则后续维护的人看都看不懂，要如何调试？怎么写《代码大全》中说得最详细了，我觉得除了各种习惯写法之外将心比心也是很重要的；</li>
<li>使用各种类库或工具时，尽量弄懂原理，仔细的阅读官方文档，比如有些类库会详细说明如何防止内存泄露，如何应对多线程情况，看清楚再用，就会少种下祸根，至少不用等到调试的时候再无头苍蝇一样猜测原因；</li>
<li>写便于测试的代码，这样在调试时，容易剥离问题，或者使用二分法，这方面TDD编程实践讲得比较充分，我个人也需要加强。</li>
</ol>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">调试</category><category domain="tags">读书笔记</category></item><item><title>如何序列化泛型List为xaml</title><link>https://yifeitao.com/how-to-serialize-a-list-to-xaml/</link><pubDate>Tue, 20 Dec 2016 00:00:00 +0000</pubDate><guid>https://yifeitao.com/how-to-serialize-a-list-to-xaml/</guid><description>&lt;p&gt;Xaml实际上是一种加强版的Xml，Xaml最初是为了描述WPF控件而设计的，但其实具有一定的通用性，用Xaml序列化对象，可以自动维护对象间的引用关系，大大减轻工作量。&lt;/p&gt;
&lt;h3 id="1-wpf控件中泛型list的序列化"&gt;1. WPF控件中泛型List的序列化&lt;/h3&gt;
&lt;p&gt;Xaml序列化对象最直接的应用是保存和加载WPF界面与控件。考虑类似以下的自定义控件类，它包含了一个泛型列表属性。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c#" data-lang="c#"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;WpfObject&lt;/span&gt; : Label
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; WpfObject()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Children = &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; List&amp;lt;&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;&amp;gt; { &lt;span style="color:#e6db74"&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;wpf&amp;#34;&lt;/span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; List&amp;lt;&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;&amp;gt; Children { &lt;span style="color:#66d9ef"&gt;get&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;set&lt;/span&gt;; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;WPF控件的序列化方法如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c#" data-lang="c#"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WpfObject w1 = &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; WpfObject { Content = &lt;span style="color:#e6db74"&gt;&amp;#34;Hello, wpf&amp;#34;&lt;/span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt; xaml = System.Windows.Markup.XamlWriter.Save(w1);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;File.WriteAllText(&lt;span style="color:#e6db74"&gt;&amp;#34;label.xaml&amp;#34;&lt;/span&gt;, xaml);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;WpfObject w2 = (WpfObject)System.Windows.Markup.XamlReader.Load(File.OpenRead(&lt;span style="color:#e6db74"&gt;&amp;#34;label.xaml&amp;#34;&lt;/span&gt;));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;由于XamlWriter类的不完善，不支持泛型列表的序列化，上述代码将抛出异常：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;无法序列化泛型类型“System.Collections.Generic.List`1[System.String]”
Cannot serialize a generic type “System.Collections.Generic.List`1[System.String]”&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;所以需要包装泛型列表属性，使其能序列化，最简单的方法是使用派生类，代码如下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-C#" data-lang="C#"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Children&lt;/span&gt; : List&amp;lt;&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;&amp;gt;{}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;WpfObject&lt;/span&gt; : Label
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; WpfObject()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Children = &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; Children { &lt;span style="color:#e6db74"&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;wpf&amp;#34;&lt;/span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; Children Children { &lt;span style="color:#66d9ef"&gt;get&lt;/span&gt;; &lt;span style="color:#66d9ef"&gt;set&lt;/span&gt;; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;使用前述同样的序列化代码即可。&lt;/p&gt;</description><content:encoded><![CDATA[<p>Xaml实际上是一种加强版的Xml，Xaml最初是为了描述WPF控件而设计的，但其实具有一定的通用性，用Xaml序列化对象，可以自动维护对象间的引用关系，大大减轻工作量。</p>
<h3 id="1-wpf控件中泛型list的序列化">1. WPF控件中泛型List的序列化</h3>
<p>Xaml序列化对象最直接的应用是保存和加载WPF界面与控件。考虑类似以下的自定义控件类，它包含了一个泛型列表属性。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c#" data-lang="c#"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">WpfObject</span> : Label
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">public</span> WpfObject()
</span></span><span style="display:flex;"><span>  {
</span></span><span style="display:flex;"><span>    Children = <span style="color:#66d9ef">new</span> List&lt;<span style="color:#66d9ef">string</span>&gt; { <span style="color:#e6db74">&#34;hello&#34;</span>, <span style="color:#e6db74">&#34;wpf&#34;</span> };
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">public</span> List&lt;<span style="color:#66d9ef">string</span>&gt; Children { <span style="color:#66d9ef">get</span>; <span style="color:#66d9ef">set</span>; }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<p>WPF控件的序列化方法如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c#" data-lang="c#"><span style="display:flex;"><span>WpfObject w1 = <span style="color:#66d9ef">new</span> WpfObject { Content = <span style="color:#e6db74">&#34;Hello, wpf&#34;</span> };
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">string</span> xaml = System.Windows.Markup.XamlWriter.Save(w1);
</span></span><span style="display:flex;"><span>File.WriteAllText(<span style="color:#e6db74">&#34;label.xaml&#34;</span>, xaml);
</span></span><span style="display:flex;"><span>WpfObject w2 = (WpfObject)System.Windows.Markup.XamlReader.Load(File.OpenRead(<span style="color:#e6db74">&#34;label.xaml&#34;</span>));</span></span></code></pre></div>
<p>由于XamlWriter类的不完善，不支持泛型列表的序列化，上述代码将抛出异常：</p>


<pre tabindex="0"><code>无法序列化泛型类型“System.Collections.Generic.List`1[System.String]”
Cannot serialize a generic type “System.Collections.Generic.List`1[System.String]”</code></pre>
<p>所以需要包装泛型列表属性，使其能序列化，最简单的方法是使用派生类，代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C#" data-lang="C#"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">Children</span> : List&lt;<span style="color:#66d9ef">string</span>&gt;{}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">WpfObject</span> : Label
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> WpfObject()
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        Children = <span style="color:#66d9ef">new</span> Children { <span style="color:#e6db74">&#34;hello&#34;</span>, <span style="color:#e6db74">&#34;wpf&#34;</span> };
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> Children Children { <span style="color:#66d9ef">get</span>; <span style="color:#66d9ef">set</span>; }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<p>使用前述同样的序列化代码即可。</p>
<h3 id="2-普通对象中泛型list的序列化">2. 普通对象中泛型List的序列化</h3>
<p>自.Net4.0后，微软在System.Xaml.XamlServices命名空间重新设计了Xaml序列化，使其更好的支持一般的对象，不过比较讽刺的是，这个命名空间的序列化却不能很好的支持WPF控件，所以依然只能用本文第1部分的方法去hack。</p>
<p>考虑以下类型：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C#" data-lang="C#"><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">CommonObject</span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> List&lt;<span style="color:#66d9ef">string</span>&gt; Children { <span style="color:#66d9ef">get</span>; <span style="color:#66d9ef">set</span>; }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> CommonObject()
</span></span><span style="display:flex;"><span>    {
</span></span><span style="display:flex;"><span>        Children = <span style="color:#66d9ef">new</span> List&lt;<span style="color:#66d9ef">string</span>&gt; { <span style="color:#e6db74">&#34;hello&#34;</span>, <span style="color:#e6db74">&#34;common&#34;</span> };
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div>
<p>它的序列化很简单直接，代码如下：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C#" data-lang="C#"><span style="display:flex;"><span>CommonObject p1 = <span style="color:#66d9ef">new</span> CommonObject();
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">string</span> xaml = System.Xaml.XamlServices.Save(p1);
</span></span><span style="display:flex;"><span>File.WriteAllText(<span style="color:#e6db74">&#34;parent.xaml&#34;</span>, xaml);
</span></span><span style="display:flex;"><span>CommonObject p2 = (CommonObject)System.Xaml.XamlServices.Load(File.OpenRead(<span style="color:#e6db74">&#34;parent.xaml&#34;</span>));</span></span></code></pre></div>
]]></content:encoded><category>coding</category><category domain="tags">编程</category><category domain="tags">.NET</category></item><item><title>分解的力量</title><link>https://yifeitao.com/the-power-of-break-things-down/</link><pubDate>Mon, 19 Dec 2016 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-power-of-break-things-down/</guid><description>&lt;p&gt;如何完成一件复杂的事情？可以把它分解成很多相对简单的步骤，然后一步步去完成。这个道理再简单不过了，但想要通过简单的道理过好这一生，则需要对道理反复的践行与思考，以下就是我这几年的一点人生经验。&lt;/p&gt;
&lt;h2 id="为什么要分解"&gt;为什么要分解？&lt;/h2&gt;
&lt;h3 id="管理复杂性"&gt;管理复杂性&lt;/h3&gt;
&lt;p&gt;复杂的事情需要分解去做的最直观的原因就是管理复杂性，一个再聪明的人，他或她的大脑能同时把握的细节也是有限的，从脑神经科学的角度来说，大脑的工作记忆插槽是及其有限的，将复杂的事情分解、打包，可以大大降低思考的难度。如果一件事情需要100个步骤才能完成，在仔细分解前，大脑看到的简直是一团迷雾，看不到事情的边际，拖延丧气的负面情绪随之而来，对从事知识型工作的人简直是噩梦。&lt;/p&gt;
&lt;p&gt;将事情分解为100个步骤后，它的复杂度没变，但是借助各类工具，大脑可以不必一次性载入100个步骤去思考，而是可以只载入某几个步骤，也可以对一些步骤打包命名，大脑存储的将是一些助记符。一件复杂的事情，从一团迷雾变成了可以在不同尺度去观测的结构，可能从大的视角看，有10步，仔细看每个步骤，又可以分为10步。&lt;/p&gt;
&lt;p&gt;管理复杂性的典型用例就是软件行业，子程序、对象、模块等，无一不是发明出来用于管理软件复杂性的，如果你是上帝，大概可以一个软件一个大杂烩式的一次性开发完，但我等凡人只能通过各种机制来分解复杂的模型，大脑每次面对不同层次的抽象，都只处理较少的信息。&lt;/p&gt;
&lt;h3 id="激励机制"&gt;激励机制&lt;/h3&gt;
&lt;p&gt;最懂得分解事情的人是游戏设计师，不论愤怒的小鸟这类休闲类游戏，还是复杂的RPG游戏，都会不停地设定小的激励目标，如果一款游戏通关要几天，而且没有任何中间目标需要达成，大概是没人愿意玩的。&lt;/p&gt;
&lt;p&gt;现实生活与玩游戏唯一不同的是，阶段性目标需要你自己去设定。比如，要写一篇毕业论文，有些学校只考察最后的答辩，有些可能会加上开题审查和中期审查，但是分解的尺度还是太大，不足以激励我们懒惰的大脑去干活，所以拖延写作简直是一定的。反之，如果你定好小目标，今天写3000字或者查阅10篇文章，然后奖励自己看一集《海贼王》，懒惰的大脑就会被激活。神奇之处在于，大脑可以指挥大脑欺骗大脑，看着眼前的胡萝卜一直走下去。&lt;/p&gt;
&lt;p&gt;实际上，对一个做事情本身有一定激情的人来说，如果你用一个清单工具去设定自己的阶段性目标，在完成一个阶段后就去画一个勾，都不需要其他任何奖励，就会有类似玩游戏的快感。如果做的事情没有激情或者不是发自内心的渴望，那么阶段性奖励一下自己喜欢的则是有益的。&lt;/p&gt;
&lt;h3 id="第一步效应"&gt;第一步效应&lt;/h3&gt;
&lt;p&gt;做事情时，进入状态难是阻碍我们开始做事情的最大障碍之一，开始做事前，可能觉得这里难受哪里不爽，一旦开始了，进入状态了，更多的则是做事情本身带来的快乐，状态极好时，会进入“心流”状态。所以能够坐下来干两小时活的关键可能在于最初两分钟。&lt;/p&gt;
&lt;p&gt;一般来说，大脑一看到复杂的事情就习惯性烦躁，那么当我们把事情分解得够细时，大脑直接面对的是一件简单事情，心情自然好很多，而结果就是一旦开始，可能根本停不下来，对待拖延症的秘诀之一就是你好死赖活先要开始去做，不论做得怎么样。&lt;/p&gt;
&lt;p&gt;如何吃完一碗饭？先要开始吃第一口。如何跑够十公里？先要开始跑第一公里。通过分解使我们面对可以接受的第一步，然后大脑又可以欺骗大脑一直干下去了。&lt;/p&gt;
&lt;h2 id="如何分解"&gt;如何分解？&lt;/h2&gt;
&lt;h3 id="分解到能够开始工作"&gt;分解到能够开始工作&lt;/h3&gt;
&lt;p&gt;不同的事情，自然根据它的特点有不同的分解方法，同样的事情，对不同的人也需要不同的分解方法，对一般人而言，打电话可能都不值得算一个步骤，但对有打电话恐惧的人而言，可能需要先打好腹稿，然后拨号，然后交谈，至少也得三步。打腹稿的时候不用考虑后续的事情，拨号是一个机械动作，交谈则是对腹稿的发挥，而且自然会有两个人语言上的循环反馈。&lt;/p&gt;
&lt;p&gt;分解的详细程度，取决于不同的事情和不同的人，首先以能够开展工作为目标，只要还觉得难受或者茫然，就需要继续分解。所谓“天下大事，必作于细”也不妨从这个角度去理解。&lt;/p&gt;
&lt;p&gt;在各个领域，分解问题的能力都是需要不断锤炼的基本技能，比如在软件行业，在需求分析时需要分解工作估算时间，架构设计时需要划分模块。但不管任何领域，分解到能够开始工作是一个不完美但足够实用的策略。&lt;/p&gt;
&lt;h3 id="时间尺度"&gt;时间尺度&lt;/h3&gt;
&lt;p&gt;拨开复杂事情的迷雾往往是一个困难的事情，一个需要一年完成的项目，真的能分解到每周都要做什么？几乎不可能，尤其是这个项目有一定的创新性时，这种困难有时会导致我们对分解与计划的失望，干脆走一步算一步。&lt;/p&gt;
&lt;p&gt;折衷考虑一下，需要注意分解时的时间尺度，离当下越近，分解出来应当是越具体详细的事情，强调可操作性，越接近死线，分解出来应当是越概要的目标，强调战略性。&lt;/p&gt;
&lt;p&gt;在做计划时，可以先以日为单位，逐渐变到以周、月为单位，日内的计划可以用清单的形式，或者只是在脑子里列个清单即可。&lt;/p&gt;
&lt;h3 id="分解的迭代"&gt;分解的迭代&lt;/h3&gt;
&lt;p&gt;少有人能在第一时间把一件事情彻底分解清楚，但是又不能一直想着怎么分解导致事情无法开张，所以分解的迭代是必不可少的，计划与总结是相辅相成的，通过总结反馈，才能不断修正分解，制定新的计划。&lt;/p&gt;
&lt;p&gt;结合时间尺度来看，随着时间的推移，那些以大尺度分解的事情，会在迭代中逐渐细化，到最后，事情就做完了。&lt;/p&gt;
&lt;p&gt;为了完成一件复杂的事情，需要做分解的工作，也需要做具体的小步骤，这二者不是简单的先后关系，而是反复迭代关系，所以在做事情时，需要在宏观和微观两个角度反复切换，不能陷入细节忘了自己的最终目的是什么，也不能一直举棋不定。&lt;/p&gt;</description><content:encoded><![CDATA[<p>如何完成一件复杂的事情？可以把它分解成很多相对简单的步骤，然后一步步去完成。这个道理再简单不过了，但想要通过简单的道理过好这一生，则需要对道理反复的践行与思考，以下就是我这几年的一点人生经验。</p>
<h2 id="为什么要分解">为什么要分解？</h2>
<h3 id="管理复杂性">管理复杂性</h3>
<p>复杂的事情需要分解去做的最直观的原因就是管理复杂性，一个再聪明的人，他或她的大脑能同时把握的细节也是有限的，从脑神经科学的角度来说，大脑的工作记忆插槽是及其有限的，将复杂的事情分解、打包，可以大大降低思考的难度。如果一件事情需要100个步骤才能完成，在仔细分解前，大脑看到的简直是一团迷雾，看不到事情的边际，拖延丧气的负面情绪随之而来，对从事知识型工作的人简直是噩梦。</p>
<p>将事情分解为100个步骤后，它的复杂度没变，但是借助各类工具，大脑可以不必一次性载入100个步骤去思考，而是可以只载入某几个步骤，也可以对一些步骤打包命名，大脑存储的将是一些助记符。一件复杂的事情，从一团迷雾变成了可以在不同尺度去观测的结构，可能从大的视角看，有10步，仔细看每个步骤，又可以分为10步。</p>
<p>管理复杂性的典型用例就是软件行业，子程序、对象、模块等，无一不是发明出来用于管理软件复杂性的，如果你是上帝，大概可以一个软件一个大杂烩式的一次性开发完，但我等凡人只能通过各种机制来分解复杂的模型，大脑每次面对不同层次的抽象，都只处理较少的信息。</p>
<h3 id="激励机制">激励机制</h3>
<p>最懂得分解事情的人是游戏设计师，不论愤怒的小鸟这类休闲类游戏，还是复杂的RPG游戏，都会不停地设定小的激励目标，如果一款游戏通关要几天，而且没有任何中间目标需要达成，大概是没人愿意玩的。</p>
<p>现实生活与玩游戏唯一不同的是，阶段性目标需要你自己去设定。比如，要写一篇毕业论文，有些学校只考察最后的答辩，有些可能会加上开题审查和中期审查，但是分解的尺度还是太大，不足以激励我们懒惰的大脑去干活，所以拖延写作简直是一定的。反之，如果你定好小目标，今天写3000字或者查阅10篇文章，然后奖励自己看一集《海贼王》，懒惰的大脑就会被激活。神奇之处在于，大脑可以指挥大脑欺骗大脑，看着眼前的胡萝卜一直走下去。</p>
<p>实际上，对一个做事情本身有一定激情的人来说，如果你用一个清单工具去设定自己的阶段性目标，在完成一个阶段后就去画一个勾，都不需要其他任何奖励，就会有类似玩游戏的快感。如果做的事情没有激情或者不是发自内心的渴望，那么阶段性奖励一下自己喜欢的则是有益的。</p>
<h3 id="第一步效应">第一步效应</h3>
<p>做事情时，进入状态难是阻碍我们开始做事情的最大障碍之一，开始做事前，可能觉得这里难受哪里不爽，一旦开始了，进入状态了，更多的则是做事情本身带来的快乐，状态极好时，会进入“心流”状态。所以能够坐下来干两小时活的关键可能在于最初两分钟。</p>
<p>一般来说，大脑一看到复杂的事情就习惯性烦躁，那么当我们把事情分解得够细时，大脑直接面对的是一件简单事情，心情自然好很多，而结果就是一旦开始，可能根本停不下来，对待拖延症的秘诀之一就是你好死赖活先要开始去做，不论做得怎么样。</p>
<p>如何吃完一碗饭？先要开始吃第一口。如何跑够十公里？先要开始跑第一公里。通过分解使我们面对可以接受的第一步，然后大脑又可以欺骗大脑一直干下去了。</p>
<h2 id="如何分解">如何分解？</h2>
<h3 id="分解到能够开始工作">分解到能够开始工作</h3>
<p>不同的事情，自然根据它的特点有不同的分解方法，同样的事情，对不同的人也需要不同的分解方法，对一般人而言，打电话可能都不值得算一个步骤，但对有打电话恐惧的人而言，可能需要先打好腹稿，然后拨号，然后交谈，至少也得三步。打腹稿的时候不用考虑后续的事情，拨号是一个机械动作，交谈则是对腹稿的发挥，而且自然会有两个人语言上的循环反馈。</p>
<p>分解的详细程度，取决于不同的事情和不同的人，首先以能够开展工作为目标，只要还觉得难受或者茫然，就需要继续分解。所谓“天下大事，必作于细”也不妨从这个角度去理解。</p>
<p>在各个领域，分解问题的能力都是需要不断锤炼的基本技能，比如在软件行业，在需求分析时需要分解工作估算时间，架构设计时需要划分模块。但不管任何领域，分解到能够开始工作是一个不完美但足够实用的策略。</p>
<h3 id="时间尺度">时间尺度</h3>
<p>拨开复杂事情的迷雾往往是一个困难的事情，一个需要一年完成的项目，真的能分解到每周都要做什么？几乎不可能，尤其是这个项目有一定的创新性时，这种困难有时会导致我们对分解与计划的失望，干脆走一步算一步。</p>
<p>折衷考虑一下，需要注意分解时的时间尺度，离当下越近，分解出来应当是越具体详细的事情，强调可操作性，越接近死线，分解出来应当是越概要的目标，强调战略性。</p>
<p>在做计划时，可以先以日为单位，逐渐变到以周、月为单位，日内的计划可以用清单的形式，或者只是在脑子里列个清单即可。</p>
<h3 id="分解的迭代">分解的迭代</h3>
<p>少有人能在第一时间把一件事情彻底分解清楚，但是又不能一直想着怎么分解导致事情无法开张，所以分解的迭代是必不可少的，计划与总结是相辅相成的，通过总结反馈，才能不断修正分解，制定新的计划。</p>
<p>结合时间尺度来看，随着时间的推移，那些以大尺度分解的事情，会在迭代中逐渐细化，到最后，事情就做完了。</p>
<p>为了完成一件复杂的事情，需要做分解的工作，也需要做具体的小步骤，这二者不是简单的先后关系，而是反复迭代关系，所以在做事情时，需要在宏观和微观两个角度反复切换，不能陷入细节忘了自己的最终目的是什么，也不能一直举棋不定。</p>
]]></content:encoded><category>methodology</category><category domain="tags">方法论</category><category domain="tags">思考</category></item><item><title>clips语言优秀资源列表</title><link>https://yifeitao.com/awsome-clips/</link><pubDate>Sun, 18 Dec 2016 00:00:00 +0000</pubDate><guid>https://yifeitao.com/awsome-clips/</guid><description>&lt;p&gt;在机器学习技术大热的当下，专家系统可能是一种有些“过时”的技术，但依然有它的适用场景，clips语言是C语言开发的开源专家系统语言，我在项目开发中学习使用了该语言，以下是我搜集整理的一些clips语言相关的优秀资源。在备忘之余希望能对其他人有所帮助。后续将不定期更新。&lt;/p&gt;
&lt;h2 id="基本资源"&gt;基本资源&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.clipsrules.net/"
rel="noopener noreferrer" target="_blank" class="external"&gt;新版官网&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://clipsrules.sourceforge.net/"
rel="noopener noreferrer" target="_blank" class="external"&gt;旧版官网&lt;/a&gt;
：可能需要科学上网才能访问。&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.clipsrules.net/?q=Documentation"
rel="noopener noreferrer" target="_blank" class="external"&gt;文档列表&lt;/a&gt;
：User’s Guide浅显易懂，非常值得一读，需要深入了解可以看看Basic Programming Guide与Advanced Programming Guide。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://book.douban.com/subject/1879505/"
rel="noopener noreferrer" target="_blank" class="external"&gt;教材中文版&lt;/a&gt;
：教材由clips开发者撰写，包括专家系统的基础知识与设计实现，以及具体的clips语言的语法与使用。&lt;a href="http://download.csdn.net/detail/heliuwei1991/9180309"
rel="noopener noreferrer" target="_blank" class="external"&gt;电子版下载地址&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/tagged/clips"
rel="noopener noreferrer" target="_blank" class="external"&gt;stackoverflow&lt;/a&gt;
：clips开发者的有在stackoverflow回答问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="函数库"&gt;函数库&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mattsmi/CLIPS_Date_Functions"
rel="noopener noreferrer" target="_blank" class="external"&gt;日期处理&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="工具"&gt;工具&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ricksladkey/ClipsLanguage"
rel="noopener noreferrer" target="_blank" class="external"&gt;Virtual Studio插件&lt;/a&gt;
：语法高亮等。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="net封装"&gt;.Net封装&lt;/h2&gt;
&lt;p&gt;clips适合嵌入到软件中执行规则推理，使用C#开发界面，则需要将clips封装到.Net。封装的思路主要为PInvoke或C++/CLI。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.clipsrules.net/?q=Downloads/CLIPSNET"
rel="noopener noreferrer" target="_blank" class="external"&gt;CLIPS .NET&lt;/a&gt;
：clips官方开发了一个.Net Wrapper，而且包含了Winform和WPF各四个示例，封装方法为C++/CLI，接口较少，不支持自定义函数。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sourceforge.net/projects/clipsnet/"
rel="noopener noreferrer" target="_blank" class="external"&gt;CLIPSNet (SourceForge)&lt;/a&gt;
：使用PInvoke技术封装，使得风格不像面向对象语言，更新到2015年。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/yisha7/CLIPSNet"
rel="noopener noreferrer" target="_blank" class="external"&gt;CLIPSNet (github)&lt;/a&gt;
：我维护的一个.Net Wrapper，封装方法为C++/CLI，更新clips和.Net Framework到最新版，接口较多，支持自定义函数。&lt;/li&gt;
&lt;/ul&gt;</description><content:encoded><![CDATA[<p>在机器学习技术大热的当下，专家系统可能是一种有些“过时”的技术，但依然有它的适用场景，clips语言是C语言开发的开源专家系统语言，我在项目开发中学习使用了该语言，以下是我搜集整理的一些clips语言相关的优秀资源。在备忘之余希望能对其他人有所帮助。后续将不定期更新。</p>
<h2 id="基本资源">基本资源</h2>
<ul>
<li><a href="http://www.clipsrules.net/"
   rel="noopener noreferrer" target="_blank" class="external">新版官网</a>
</li>
<li><a href="http://clipsrules.sourceforge.net/"
   rel="noopener noreferrer" target="_blank" class="external">旧版官网</a>
：可能需要科学上网才能访问。</li>
<li><a href="http://www.clipsrules.net/?q=Documentation"
   rel="noopener noreferrer" target="_blank" class="external">文档列表</a>
：User’s Guide浅显易懂，非常值得一读，需要深入了解可以看看Basic Programming Guide与Advanced Programming Guide。</li>
<li><a href="https://book.douban.com/subject/1879505/"
   rel="noopener noreferrer" target="_blank" class="external">教材中文版</a>
：教材由clips开发者撰写，包括专家系统的基础知识与设计实现，以及具体的clips语言的语法与使用。<a href="http://download.csdn.net/detail/heliuwei1991/9180309"
   rel="noopener noreferrer" target="_blank" class="external">电子版下载地址</a>
</li>
<li><a href="http://stackoverflow.com/questions/tagged/clips"
   rel="noopener noreferrer" target="_blank" class="external">stackoverflow</a>
：clips开发者的有在stackoverflow回答问题。</li>
</ul>
<h2 id="函数库">函数库</h2>
<ul>
<li><a href="https://github.com/mattsmi/CLIPS_Date_Functions"
   rel="noopener noreferrer" target="_blank" class="external">日期处理</a>
</li>
</ul>
<h2 id="工具">工具</h2>
<ul>
<li><a href="https://github.com/ricksladkey/ClipsLanguage"
   rel="noopener noreferrer" target="_blank" class="external">Virtual Studio插件</a>
：语法高亮等。</li>
</ul>
<h2 id="net封装">.Net封装</h2>
<p>clips适合嵌入到软件中执行规则推理，使用C#开发界面，则需要将clips封装到.Net。封装的思路主要为PInvoke或C++/CLI。</p>
<ul>
<li><a href="http://www.clipsrules.net/?q=Downloads/CLIPSNET"
   rel="noopener noreferrer" target="_blank" class="external">CLIPS .NET</a>
：clips官方开发了一个.Net Wrapper，而且包含了Winform和WPF各四个示例，封装方法为C++/CLI，接口较少，不支持自定义函数。</li>
<li><a href="https://sourceforge.net/projects/clipsnet/"
   rel="noopener noreferrer" target="_blank" class="external">CLIPSNet (SourceForge)</a>
：使用PInvoke技术封装，使得风格不像面向对象语言，更新到2015年。</li>
<li><a href="https://github.com/yisha7/CLIPSNet"
   rel="noopener noreferrer" target="_blank" class="external">CLIPSNet (github)</a>
：我维护的一个.Net Wrapper，封装方法为C++/CLI，更新clips和.Net Framework到最新版，接口较多，支持自定义函数。</li>
</ul>
]]></content:encoded><category>coding</category><category domain="tags">视频</category><category domain="tags">资源</category></item><item><title>吸烟真的有害健康吗？</title><link>https://yifeitao.com/smoking-risks/</link><pubDate>Sun, 06 Nov 2016 00:00:00 +0000</pubDate><guid>https://yifeitao.com/smoking-risks/</guid><description>&lt;p&gt;很多人大概都听过这样一个段子：不抽烟不喝酒活到63岁——林彪；不抽烟只喝酒活到73岁——周恩来；只抽烟不喝酒活到83岁——毛泽东；既抽烟又喝酒活到93岁——邓小平；吃喝嫖赌抽样样都有活到103岁——张学良。&lt;/p&gt;
&lt;p&gt;应该怎么看待这个段子？显然它找了几个名人的例子来试图证明五毒俱全才能长寿。和这个段子最相似的反驳可能是这样的：某某抽烟喝酒只活到50岁，而另外的某某不抽烟不喝酒活到了120岁。但是这种举例子的争论方式并不能解决问题，我们无法据此去判断吸烟是否真的有害健康。&lt;/p&gt;
&lt;p&gt;如果我想要真正去弄清楚这个问题，应该怎么办呢？我不是学医科的，所以不知道医学界的具体研究方法是怎么样的，但是有一个简单的方法可以考虑：比如要证明肺癌和吸烟有关系，只需要统计一下所有人以及肺癌患者中吸烟者的比例，假设所有人中有20%的人是抽烟的，而肺癌患者中有40%的人是抽烟的，那么抽烟这个要素使得肺癌的发生机会提高了一倍，于是可以认为吸烟是导致肺癌的重要原因之一。&lt;/p&gt;
&lt;p&gt;以上这个论证方式是一种基于统计的方式，看起来并不十分复杂，但却十分重要，可以说是现代文明的基本原理之一也不为过，因为它提升了人类获取正确经验的能力，从个体经验上升到科学经验。&lt;/p&gt;
&lt;p&gt;老话说：我吃过的盐比你吃过的饭还多，我走过的桥比你走过的路还多。这形象的说明了经验的重要性，也说明了获得经验的第一种方法，就是自己的生活体验。&lt;/p&gt;
&lt;p&gt;一个人的生活体验是有限的，所以能够通过学习获得他人的经验一直是人类超越其他动物的重要原因。在原始部落中，最受尊敬的往往是老人，因为老人代表的是经验。学习别人的个人经验，是我们获得经验的第二种方法。&lt;/p&gt;
&lt;p&gt;但是以上两种方法都不能回答诸如吸烟是否有害健康这样复杂的问题，因为影响健康的因素太多，每个人基于自己的个体经验给出的答案会千差万别，这些复杂的问题只能靠科学经验去回答。&lt;/p&gt;
&lt;p&gt;科学的经验需要靠科学的方式去获取，科学方法论是一个复杂的概念，很难简单讲清，但是科学经验有一个基本特点很明显：就是它不能能仅仅是个人经验。科学经验需要可重复的实验验证，需要通过统计分析影响问题的真正要素。&lt;/p&gt;
&lt;p&gt;可能你会说，这跟我有什么关系呢？关系就在于如果学会了分辨个体经验和科学经验，就更可能在生活中接受到正确的观念，生活得更加幸福。&lt;/p&gt;
&lt;p&gt;有一本书叫《美国儿科学会育儿百科0~5岁》，由美国一百多名儿科专家撰写，而且根据最新科研成果，每隔几年就会修订一次，对0~5岁的常见育儿问题做出了科学解答。这样一本专家智慧的结晶，是不是比三姑六婆的偏方要好得多呢？可是我就知道有的人买了这本书，结果孩子遇到问题第一反应还是在微信群里问有没有什么偏方？&lt;/p&gt;
&lt;p&gt;很多人，虽然学历很高，但是离开自己熟悉的领域，有时候表现与文盲无异，因为他们不去相信和应用科学经验，因为他们混淆了个体经验和科学经验，把《美国儿科学会育儿百科0~5岁》中推荐的方法和微信群里热心人的偏方同等重要的对待，都当作一家之言。但是这两种一家之言有天壤之别，一种是某个人的未经证实的经验，一种是科学家在千千万万人的身上提炼出的经验，其成色怎么可能一样呢？&lt;/p&gt;
&lt;p&gt;获取、分辨、应用科学经验是一个热爱生活的人需要终身学习的事情，但是我们首先要建立一个态度：真正的科学经验和七大姑八大姨的一家之言不能同等对待。 这个话题很复杂，但其基本精神并不复杂，希望我说得还算明白。&lt;/p&gt;</description><content:encoded><![CDATA[<p>很多人大概都听过这样一个段子：不抽烟不喝酒活到63岁——林彪；不抽烟只喝酒活到73岁——周恩来；只抽烟不喝酒活到83岁——毛泽东；既抽烟又喝酒活到93岁——邓小平；吃喝嫖赌抽样样都有活到103岁——张学良。</p>
<p>应该怎么看待这个段子？显然它找了几个名人的例子来试图证明五毒俱全才能长寿。和这个段子最相似的反驳可能是这样的：某某抽烟喝酒只活到50岁，而另外的某某不抽烟不喝酒活到了120岁。但是这种举例子的争论方式并不能解决问题，我们无法据此去判断吸烟是否真的有害健康。</p>
<p>如果我想要真正去弄清楚这个问题，应该怎么办呢？我不是学医科的，所以不知道医学界的具体研究方法是怎么样的，但是有一个简单的方法可以考虑：比如要证明肺癌和吸烟有关系，只需要统计一下所有人以及肺癌患者中吸烟者的比例，假设所有人中有20%的人是抽烟的，而肺癌患者中有40%的人是抽烟的，那么抽烟这个要素使得肺癌的发生机会提高了一倍，于是可以认为吸烟是导致肺癌的重要原因之一。</p>
<p>以上这个论证方式是一种基于统计的方式，看起来并不十分复杂，但却十分重要，可以说是现代文明的基本原理之一也不为过，因为它提升了人类获取正确经验的能力，从个体经验上升到科学经验。</p>
<p>老话说：我吃过的盐比你吃过的饭还多，我走过的桥比你走过的路还多。这形象的说明了经验的重要性，也说明了获得经验的第一种方法，就是自己的生活体验。</p>
<p>一个人的生活体验是有限的，所以能够通过学习获得他人的经验一直是人类超越其他动物的重要原因。在原始部落中，最受尊敬的往往是老人，因为老人代表的是经验。学习别人的个人经验，是我们获得经验的第二种方法。</p>
<p>但是以上两种方法都不能回答诸如吸烟是否有害健康这样复杂的问题，因为影响健康的因素太多，每个人基于自己的个体经验给出的答案会千差万别，这些复杂的问题只能靠科学经验去回答。</p>
<p>科学的经验需要靠科学的方式去获取，科学方法论是一个复杂的概念，很难简单讲清，但是科学经验有一个基本特点很明显：就是它不能能仅仅是个人经验。科学经验需要可重复的实验验证，需要通过统计分析影响问题的真正要素。</p>
<p>可能你会说，这跟我有什么关系呢？关系就在于如果学会了分辨个体经验和科学经验，就更可能在生活中接受到正确的观念，生活得更加幸福。</p>
<p>有一本书叫《美国儿科学会育儿百科0~5岁》，由美国一百多名儿科专家撰写，而且根据最新科研成果，每隔几年就会修订一次，对0~5岁的常见育儿问题做出了科学解答。这样一本专家智慧的结晶，是不是比三姑六婆的偏方要好得多呢？可是我就知道有的人买了这本书，结果孩子遇到问题第一反应还是在微信群里问有没有什么偏方？</p>
<p>很多人，虽然学历很高，但是离开自己熟悉的领域，有时候表现与文盲无异，因为他们不去相信和应用科学经验，因为他们混淆了个体经验和科学经验，把《美国儿科学会育儿百科0~5岁》中推荐的方法和微信群里热心人的偏方同等重要的对待，都当作一家之言。但是这两种一家之言有天壤之别，一种是某个人的未经证实的经验，一种是科学家在千千万万人的身上提炼出的经验，其成色怎么可能一样呢？</p>
<p>获取、分辨、应用科学经验是一个热爱生活的人需要终身学习的事情，但是我们首先要建立一个态度：真正的科学经验和七大姑八大姨的一家之言不能同等对待。 这个话题很复杂，但其基本精神并不复杂，希望我说得还算明白。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">科学</category></item><item><title>Python语言入门</title><link>https://yifeitao.com/introduction-to-python/</link><pubDate>Sun, 17 Jul 2016 00:00:00 +0000</pubDate><guid>https://yifeitao.com/introduction-to-python/</guid><description>&lt;p&gt;这是一个简单介绍Python的Slide，鼓励团队成员学习Python，用于数据分析等。&lt;/p&gt;</description><content:encoded><![CDATA[<p>这是一个简单介绍Python的Slide，鼓励团队成员学习Python，用于数据分析等。</p>
<h2 id="为什么要学习一门新的语言">为什么要学习一门新的语言？</h2>
<ul>
<li>丰富你的工具箱
<ul>
<li>匠人精神</li>
<li>锤子与钉子</li>
</ul>
</li>
<li>滚雪球</li>
</ul>
<p>..</p>
<h2 id="why-python">Why Python？</h2>
<ul>
<li>Python是
<ul>
<li>解释型语言</li>
<li>面向对象语言</li>
<li>动态语言</li>
<li>高级语言</li>
<li>自带电池</li>
</ul>
</li>
<li>Python应用
<ul>
<li>Dropbox</li>
<li>豆瓣网</li>
<li>数据分析——从爬虫到机器学习</li>
</ul>
</li>
</ul>
<p>..</p>
<h2 id="the-zen-of-python">The Zen of Python</h2>


<pre tabindex="0"><code>&gt;&gt;&gt; import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren&#39;t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you&#39;re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it&#39;s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let&#39;s do more of those!</code></pre>
<p>&hellip;</p>
<h2 id="开发环境与版本">开发环境与版本</h2>
<ul>
<li>开发环境
<ul>
<li>IDLE</li>
<li>PyCharm</li>
<li>Anaconda</li>
</ul>
</li>
<li>版本
<ul>
<li>Python2</li>
<li>Python3</li>
</ul>
</li>
</ul>
<p>..</p>
<h2 id="python基本语法">Python基本语法</h2>
<ul>
<li><code>print(&quot;Hello，world&quot;)</code></li>
<li>行和缩进</li>
<li>多行语句</li>
<li>Python引号</li>
<li>Python注释</li>
<li>Python空行</li>
<li>等待用户输入 <code>raw_input(&quot;?&quot;)</code></li>
<li>同一行显示多条语句</li>
<li>多个语句构成代码组</li>
<li>命令行参数</li>
</ul>
<p>..</p>
<h2 id="变量赋值">变量赋值</h2>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>a <span style="color:#f92672">=</span> b <span style="color:#f92672">=</span> c <span style="color:#f92672">=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>a, b, c <span style="color:#f92672">=</span> <span style="color:#ae81ff">1</span>, <span style="color:#ae81ff">2</span>, <span style="color:#e6db74">&#34;python&#34;</span>
</span></span><span style="display:flex;"><span>a, b <span style="color:#f92672">=</span> b, a</span></span></code></pre></div>
<p>..</p>
<h2 id="标准数据类型">标准数据类型</h2>
<ul>
<li>Numbers</li>
<li>String</li>
<li>List</li>
<li>Tuple</li>
<li>Dictionary</li>
</ul>
<p>..</p>
<h2 id="numbers">Numbers</h2>
<ul>
<li>int(有符号整型)</li>
<li>long(长整型[也可以代表八进制和十六进制])</li>
<li>float(浮点型)</li>
<li>complex(复数)</li>
</ul>
<p>..</p>
<h2 id="string">String</h2>
<ul>
<li>索引</li>
<li>+，*</li>
</ul>
<p>..</p>
<h2 id="list">List</h2>
<ul>
<li>切片</li>
<li>嵌套</li>
</ul>
<p>..</p>
<h2 id="tuple">Tuple</h2>
<ul>
<li>只读列表</li>
</ul>
<p>..</p>
<h2 id="dictionary">Dictionary</h2>
<ul>
<li>键值对</li>
<li>dict = {}</li>
</ul>
<p>..</p>
<h2 id="python运算符">Python 运算符</h2>
<ul>
<li>算术运算符(+-*/% ** //)</li>
<li>比较运算符(== != &lt;&gt; &lt; &gt; &lt;= &gt;= )</li>
<li>赋值运算符(= += -= *= /= %=，**= //=)</li>
<li>位运算符 (&amp; | ^ ~ &laquo; &raquo;)</li>
<li>逻辑运算符(and or not)</li>
<li>成员运算符(in not in)</li>
<li>身份运算符(is is not)</li>
</ul>
<p>..</p>
<h2 id="python条件语句">Python条件语句</h2>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">if</span> condition_1:
</span></span><span style="display:flex;"><span>    statement_block_1
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">elif</span> condition_2:
</span></span><span style="display:flex;"><span>    statement_block_2
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>    statement_block_3</span></span></code></pre></div>
<p>..</p>
<h2 id="python循环语句">Python循环语句</h2>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">while</span> <span style="color:#f92672">&lt;</span>condition<span style="color:#f92672">&gt;</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;</span>statement_block_1<span style="color:#f92672">&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span> 	<span style="color:#f92672">&lt;</span>statement_block_2<span style="color:#f92672">&gt;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> <span style="color:#f92672">&lt;</span>variable<span style="color:#f92672">&gt;</span> <span style="color:#f92672">in</span> <span style="color:#f92672">&lt;</span>sequence<span style="color:#f92672">&gt;</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;</span>statements<span style="color:#f92672">&gt;</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">else</span>:
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;</span>statements<span style="color:#f92672">&gt;</span></span></span></code></pre></div>
<p>..</p>
<h2 id="python函数">Python函数</h2>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#75715e"># 计算面积函数</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">area</span>(width, height):
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> width <span style="color:#f92672">*</span> height</span></span></code></pre></div>
<ul>
<li>必备参数</li>
<li>关键字参数</li>
<li>默认参数</li>
<li>不定长参数</li>
</ul>
<p>&hellip;</p>
<h2 id="进阶内容">进阶内容</h2>
<ul>
<li>面向对象编程</li>
<li>匿名函数与函数式编程</li>
<li>GUI
<ul>
<li>Tkiner</li>
<li>pyqt</li>
</ul>
</li>
<li>Web</li>
</ul>
<p>..</p>
<h2 id="自带电池">自带电池</h2>
<ul>
<li>Pip系统</li>
<li>数据分析库
<ul>
<li>Numpy</li>
<li>scipy</li>
<li>Pandas</li>
<li>Matplotlib</li>
<li>scikit-learn</li>
</ul>
</li>
</ul>
<p>&hellip;</p>
<h2 id="如何学习">如何学习</h2>
<ul>
<li>用起来
<ul>
<li>当计算器用</li>
<li>当matlab用</li>
</ul>
</li>
<li>教程推荐
<ul>
<li>菜鸟教程 <a href="http://www.runoob.com/"
   rel="noopener noreferrer" target="_blank" class="external">http://www.runoob.com/</a>
</li>
<li>Python基础教程</li>
<li>Python Cookbook</li>
</ul>
</li>
</ul>
<p>&hellip;</p>
<h2 id="thanks">Thanks!</h2>
<h2 id="讨论时间">讨论时间</h2>]]></content:encoded><category>coding</category><category domain="tags">Python</category><category domain="tags">编程</category></item><item><title>Hello world!</title><link>https://yifeitao.com/hello-world/</link><pubDate>Sun, 13 Dec 2015 00:00:00 +0000</pubDate><guid>https://yifeitao.com/hello-world/</guid><description>&lt;p&gt;朝闻道，夕死可矣。&lt;/p&gt;</description><content:encoded>&lt;p>朝闻道，夕死可矣。&lt;/p>
</content:encoded><category>life</category><category domain="tags">编程</category><category domain="tags">开始</category></item><item><title>2013总结</title><link>https://yifeitao.com/summary-2013/</link><pubDate>Sun, 12 Jan 2014 00:00:00 +0000</pubDate><guid>https://yifeitao.com/summary-2013/</guid><description>&lt;p&gt;2013年躲掉了公司的个人总结，颇为庆幸。除去繁文缛节，写写总结还是有好处的，所以随便谈谈自己的2013。&lt;/p&gt;
&lt;h2 id="回顾"&gt;回顾&lt;/h2&gt;
&lt;h3 id="工作"&gt;工作&lt;/h3&gt;
&lt;p&gt;前段时间看《More Joel on Software》，知道了内部程序员的概念，突然明白了自己的定位——“三成的内部程序员”，虽然这一年可能有七成时间在做程序员的工作，但这种状态毕竟是临时性的。这一年可能是编程进步最大的一年，但也更加意识到作为一个内部程序员与业界的差距有多大，确定自己要想在若干年后投入IT界，以技术吃饭基本上很困难。在担心项目进度的过程中，急躁和拖延症并行，把自己的性格缺陷发挥得淋漓尽致。
程序员之外的工作，做得不太理想也不太开心，除了上司难伺候的因素外，个人不喜跟人打交道，不善于指使人干活是主要原因，如果把这些当一门学问来可能好接受一些。事实上，跟理解力强、执行力强的人打交道是比较轻松的，但问题在于更多的人理解力执行力不太好，但团队合作又需要他们。&lt;/p&gt;
&lt;h3 id="住房"&gt;住房&lt;/h3&gt;
&lt;p&gt;2013年的首尾都在烦心住房问题，从年初的被轻易忽悠到年尾的主动出击，虽然不知道自己的努力对最后的结果有多大作用，但好歹也是一次自我争取，在这种环境下，矜持是没有出路的，还是那句话，最关心你的人永远是你自己。拿到房子的时候和老婆都大失所望，但转而激起改造之心，忙忙碌碌中，一个小家一天天像个样子了。这小小的幸福来得不容易，只能怪自己选择了一条hard通关模式。所有的家庭计划，只能围绕着房子来，这被耽误的一年，我在心里记了一笔。处理这件事情，偏离了个人擅长的领域，几乎暴露了自己所有的缺陷，或者说和这个现实不适应的地方，急躁、不必要的完美主义、缺少承担。
在综合分析之后，基本确认了未来几年的工作地点，一旦确定，就要坚定的执行下去，怀着肖申克的救赎式的毅力。&lt;/p&gt;
&lt;h3 id="购物"&gt;购物&lt;/h3&gt;
&lt;p&gt;尽管网购也有不方便的地方，但几乎成了唯一选择，淘宝、亚马逊、京东、国美在线还是比 较给力的。买东西越来越注重外观，相信不重视外观的产品，其内在也值得怀疑。比较喜欢日式的风格。如无必要，勿增实体。今年买过的最神奇的东西，貌似是3M除锈润滑剂。
###电影
今年大概看了60部电影，推荐《东京家族》和《Before Midnight》,第一部是山田洋次向小津安二郎的《东京物语》致敬之作，第二部是奇葩话痨爱情电影《Before Sunrise》和《Before Sunset》系列的第三部。&lt;/p&gt;
&lt;h3 id="阅读"&gt;阅读&lt;/h3&gt;
&lt;p&gt;不包括一些临时查阅的技术书籍，今年大概读了三十本书，其中电子书居多。除了方便携带外，好像读完的心理压力也小一些。今年买了一百多块钱的正版电子书，亚马逊、豆瓣阅读、多看阅读、图灵都有花钱。
推荐《暗时间》，刘未鹏这本不是新书了，但今年才看，除了书本身不错外，也是一个好的书目，介绍了不少认知学、心理学等方面的好书，比如《别做正常的傻瓜》非常有意思。&lt;/p&gt;
&lt;h3 id="网站服务"&gt;网站/服务&lt;/h3&gt;
&lt;p&gt;推荐知乎，学到不少知识，最实用居然是购物推荐之类的……
推荐GoAgent。
推荐多看阅读，书的排版质量不错，可惜的是书目还是少了点。&lt;/p&gt;
&lt;h2 id="展望"&gt;展望&lt;/h2&gt;
&lt;h3 id="工作-1"&gt;工作&lt;/h3&gt;
&lt;p&gt;完成好手头的项目，精进.Net开发。
以做学问的态度学习与他人的协同，提高自己的涵养，少担心，多实作。&lt;/p&gt;
&lt;h3 id="锻炼身体"&gt;锻炼身体&lt;/h3&gt;
&lt;p&gt;多年来第一次三千米测试未通过，警钟敲响了。以后每周跑步若干次，周末和老婆打打羽毛球。&lt;/p&gt;
&lt;h3 id="生小孩"&gt;生小孩&lt;/h3&gt;
&lt;p&gt;这个主要得靠老婆，但我得开始学习各种相关知识了。除孕产育儿知识外，还要预习教育学知识。&lt;/p&gt;
&lt;h3 id="旅游"&gt;旅游&lt;/h3&gt;
&lt;p&gt;尽量探索所生活的城市，过年带父母好好逛逛。&lt;/p&gt;
&lt;h3 id="理财"&gt;理财&lt;/h3&gt;
&lt;p&gt;改变之前完全不理财的状态，清点手头资产形成财务状况报告，办信用卡，制定消费与投资计划并实行。&lt;/p&gt;</description><content:encoded><![CDATA[<p>2013年躲掉了公司的个人总结，颇为庆幸。除去繁文缛节，写写总结还是有好处的，所以随便谈谈自己的2013。</p>
<h2 id="回顾">回顾</h2>
<h3 id="工作">工作</h3>
<p>前段时间看《More Joel on Software》，知道了内部程序员的概念，突然明白了自己的定位——“三成的内部程序员”，虽然这一年可能有七成时间在做程序员的工作，但这种状态毕竟是临时性的。这一年可能是编程进步最大的一年，但也更加意识到作为一个内部程序员与业界的差距有多大，确定自己要想在若干年后投入IT界，以技术吃饭基本上很困难。在担心项目进度的过程中，急躁和拖延症并行，把自己的性格缺陷发挥得淋漓尽致。
程序员之外的工作，做得不太理想也不太开心，除了上司难伺候的因素外，个人不喜跟人打交道，不善于指使人干活是主要原因，如果把这些当一门学问来可能好接受一些。事实上，跟理解力强、执行力强的人打交道是比较轻松的，但问题在于更多的人理解力执行力不太好，但团队合作又需要他们。</p>
<h3 id="住房">住房</h3>
<p>2013年的首尾都在烦心住房问题，从年初的被轻易忽悠到年尾的主动出击，虽然不知道自己的努力对最后的结果有多大作用，但好歹也是一次自我争取，在这种环境下，矜持是没有出路的，还是那句话，最关心你的人永远是你自己。拿到房子的时候和老婆都大失所望，但转而激起改造之心，忙忙碌碌中，一个小家一天天像个样子了。这小小的幸福来得不容易，只能怪自己选择了一条hard通关模式。所有的家庭计划，只能围绕着房子来，这被耽误的一年，我在心里记了一笔。处理这件事情，偏离了个人擅长的领域，几乎暴露了自己所有的缺陷，或者说和这个现实不适应的地方，急躁、不必要的完美主义、缺少承担。
在综合分析之后，基本确认了未来几年的工作地点，一旦确定，就要坚定的执行下去，怀着肖申克的救赎式的毅力。</p>
<h3 id="购物">购物</h3>
<p>尽管网购也有不方便的地方，但几乎成了唯一选择，淘宝、亚马逊、京东、国美在线还是比 较给力的。买东西越来越注重外观，相信不重视外观的产品，其内在也值得怀疑。比较喜欢日式的风格。如无必要，勿增实体。今年买过的最神奇的东西，貌似是3M除锈润滑剂。
###电影
今年大概看了60部电影，推荐《东京家族》和《Before Midnight》,第一部是山田洋次向小津安二郎的《东京物语》致敬之作，第二部是奇葩话痨爱情电影《Before Sunrise》和《Before Sunset》系列的第三部。</p>
<h3 id="阅读">阅读</h3>
<p>不包括一些临时查阅的技术书籍，今年大概读了三十本书，其中电子书居多。除了方便携带外，好像读完的心理压力也小一些。今年买了一百多块钱的正版电子书，亚马逊、豆瓣阅读、多看阅读、图灵都有花钱。
推荐《暗时间》，刘未鹏这本不是新书了，但今年才看，除了书本身不错外，也是一个好的书目，介绍了不少认知学、心理学等方面的好书，比如《别做正常的傻瓜》非常有意思。</p>
<h3 id="网站服务">网站/服务</h3>
<p>推荐知乎，学到不少知识，最实用居然是购物推荐之类的……
推荐GoAgent。
推荐多看阅读，书的排版质量不错，可惜的是书目还是少了点。</p>
<h2 id="展望">展望</h2>
<h3 id="工作-1">工作</h3>
<p>完成好手头的项目，精进.Net开发。
以做学问的态度学习与他人的协同，提高自己的涵养，少担心，多实作。</p>
<h3 id="锻炼身体">锻炼身体</h3>
<p>多年来第一次三千米测试未通过，警钟敲响了。以后每周跑步若干次，周末和老婆打打羽毛球。</p>
<h3 id="生小孩">生小孩</h3>
<p>这个主要得靠老婆，但我得开始学习各种相关知识了。除孕产育儿知识外，还要预习教育学知识。</p>
<h3 id="旅游">旅游</h3>
<p>尽量探索所生活的城市，过年带父母好好逛逛。</p>
<h3 id="理财">理财</h3>
<p>改变之前完全不理财的状态，清点手头资产形成财务状况报告，办信用卡，制定消费与投资计划并实行。</p>
]]></content:encoded><category>life</category><category domain="tags">年度总结</category><category domain="tags">反思</category></item><item><title>超越抱怨</title><link>https://yifeitao.com/beyond-complain/</link><pubDate>Sat, 15 Jun 2013 00:00:00 +0000</pubDate><guid>https://yifeitao.com/beyond-complain/</guid><description>&lt;p&gt;曾经有本畅销书叫做《不抱怨的世界》，“不抱怨”和“和谐”一样，实在是太容易被宣扬者滥用了。“上面的人”最爱这种论调了，如果“下面的人”都不抱怨，世界就彻底和谐了。但若你身处底层，无力改变环境，难道连抱怨的权利都没有了么？“发牢骚，讲怪话”，可能是一个天天被鱼肉的人尚非行尸走肉的最后表征了。&lt;/p&gt;
&lt;p&gt;是的，抱怨的能力可以证明一个人尚未麻木，但好的抱怨是需要思考的。好的抱怨需要发现事情的不合理之处，司空见惯之事，并不一定合理。一个缺乏自我知识架构与独立思考能力的人，他的抱怨最多也就是随大流而已，类似“贪官太多”这种。&lt;/p&gt;
&lt;p&gt;抱怨本身是可能有力量的，它可以形成舆论，但更可能只是让自己找到一个恶气的出口，益处有限，如果想活得更明白乃至改变环境，就必须超越抱怨。&lt;/p&gt;
&lt;p&gt;如果你发现了他人未发现的不合理之事，首先要理解它的合理性，这种合理性是“存在即合理”意义下的合理，理解不等于赞同，它可以让你明确思维盲点，也可以消解情绪。在最差的情况下，你可能完全无法改变这件事，但发现了不合理之处，理解了不合理得以运行的原理，至少也是活得明白一些吧。&lt;/p&gt;
&lt;p&gt;在充分理解不合理之事的合理性的基础上，可以尝试提出自己的解决方案，这就超越了抱怨，进入建设性意见的境界了。若无对合理性的理解，即使提出了方案，也必定是一厢情愿式的。如有机会，去实现自己的解决方案，这时，你可能成为“改变了一些事的人”。若无机会去实施，提出自己的解决方案依然是有益的，仔细分析需要达成事情变化的条件，你即使改变不了什么，至少可以试图看清事情发展的趋势。&lt;/p&gt;
&lt;p&gt;“不抱怨的世界”有两种，一种是失去了抱怨能力；而另一种则是超越抱怨，这需要不断锤炼自己发现问题分析问题解决问题的能力，实在是值得一辈子去做的事情。世间的快乐有无忧无虑的快乐，也有知道忧虑后解决忧虑的快乐，我选择后一种。&lt;/p&gt;</description><content:encoded><![CDATA[<p>曾经有本畅销书叫做《不抱怨的世界》，“不抱怨”和“和谐”一样，实在是太容易被宣扬者滥用了。“上面的人”最爱这种论调了，如果“下面的人”都不抱怨，世界就彻底和谐了。但若你身处底层，无力改变环境，难道连抱怨的权利都没有了么？“发牢骚，讲怪话”，可能是一个天天被鱼肉的人尚非行尸走肉的最后表征了。</p>
<p>是的，抱怨的能力可以证明一个人尚未麻木，但好的抱怨是需要思考的。好的抱怨需要发现事情的不合理之处，司空见惯之事，并不一定合理。一个缺乏自我知识架构与独立思考能力的人，他的抱怨最多也就是随大流而已，类似“贪官太多”这种。</p>
<p>抱怨本身是可能有力量的，它可以形成舆论，但更可能只是让自己找到一个恶气的出口，益处有限，如果想活得更明白乃至改变环境，就必须超越抱怨。</p>
<p>如果你发现了他人未发现的不合理之事，首先要理解它的合理性，这种合理性是“存在即合理”意义下的合理，理解不等于赞同，它可以让你明确思维盲点，也可以消解情绪。在最差的情况下，你可能完全无法改变这件事，但发现了不合理之处，理解了不合理得以运行的原理，至少也是活得明白一些吧。</p>
<p>在充分理解不合理之事的合理性的基础上，可以尝试提出自己的解决方案，这就超越了抱怨，进入建设性意见的境界了。若无对合理性的理解，即使提出了方案，也必定是一厢情愿式的。如有机会，去实现自己的解决方案，这时，你可能成为“改变了一些事的人”。若无机会去实施，提出自己的解决方案依然是有益的，仔细分析需要达成事情变化的条件，你即使改变不了什么，至少可以试图看清事情发展的趋势。</p>
<p>“不抱怨的世界”有两种，一种是失去了抱怨能力；而另一种则是超越抱怨，这需要不断锤炼自己发现问题分析问题解决问题的能力，实在是值得一辈子去做的事情。世间的快乐有无忧无虑的快乐，也有知道忧虑后解决忧虑的快乐，我选择后一种。</p>
]]></content:encoded><category>methodology</category><category domain="tags">思考</category><category domain="tags">人生</category></item><item><title>《奇特的一生》笔记</title><link>https://yifeitao.com/a-special-life/</link><pubDate>Thu, 02 May 2013 00:00:00 +0000</pubDate><guid>https://yifeitao.com/a-special-life/</guid><description>&lt;p&gt;《奇特的一生》这本书讲的是苏联生物学家柳比歇夫的故事，但不是一部典型的传记，而是用散文的手法揭示了柳比歇夫人生的奇特之处。柳比歇夫有诸多的研究成果，涉及生物学及其他很多领域，但他并不是一个天才，他最奇特的地方在于他使用时间的方式和对待时间的态度，他从二十六岁到八十二岁一直在记录、统计、规划自己做每一件事情的时间，精确到小时与分钟，直观的效果是，他似乎比常人多出来很多时间，尽管他每天睡10个小时，经常参加各种娱乐活动，但他一生完成的工作量却让常人难以想象。柳比歇夫执行这种方法简直就像一个最最严于律己的教徒，这种行为体现出的他对时间的理解，对我有很强冲击力的。&lt;/p&gt;
&lt;p&gt;时间是一个司空见惯的概念，但它的许多特质说出来却是很不寻常的，它是我们唯一真正拥有的东西，失去之后就不再可能找回，但现实是，我们会以各种借口来挥霍时间，仅仅为了寻找一个最佳的时间去做某件称心的事，这不仅涉及工作，也涉及生活和娱乐。相比柳比歇夫的时代，现在我们消磨时间的方法更多了，消磨时间这个说法是很诡异的，如果怀着热情做某一件事情，很难说是消磨时间，即使干的可能不是一般意义上的正事，而如果只是为了让时间过去，那就是让自己陷入了一种等待的状态，这样看，柳比歇夫的人生字典里没有等待。&lt;/p&gt;
&lt;p&gt;如果说生命是宝贵的，那么组成生命的每一秒都是宝贵的，所有的时间在物理学上，在道德上，都值得一视同仁，这种观念可能会挖掘出一个人难以想象的潜能，这不是教条的要求自己每天工作时间不少于几小时，而是说发挥每一分钟的作用，看清自己的生命轨迹，柳比歇夫不是一个为了伟大的事业将自己的全部时间投入进去的人，而只是一个善用了所有时间的人，所以他是可信可学的。以我个人的经验而言，时间常常是在莫名其妙中被黑洞吸走的，而不是为显而易见的娱乐所浪费，看了多少电影、闲书，都是有迹可循的，最可怕的大概是无帐可查的犹豫与发呆，将大脑陷入情绪的海洋。&lt;/p&gt;
&lt;p&gt;柳比歇夫的时间统计法，难度不在技术上，而在于坚持上，如果不是对于时间的热爱，是难以做到的，这不是简单的把自己变成机器人模式，而是基于记录统计更加灵活的利用自己的生命，发挥其无穷的可能性，这种发散主要存在于思维精神领域，柳比歇夫的物质生活反而是极简的，如果是为了升官发财沽名钓誉的目的，我估计是很难坚持的。对于时间的理解，牵涉到对于宇宙、对于生命的理解，柳比歇夫的时间统计法，不单单是一种方法，更是一种精神修养，一种道德标准，一种道。&lt;/p&gt;
&lt;p&gt;柳比歇夫值得我学习，因为我们追求的东西似乎有些一致，尽管我对自己追求的究竟是什么还在求索之中，但我似乎闻到了同类的味道。接下来就是我读完本书后对自己的劝谕，至于要不要学习他的时间统计法，还有待考虑。&lt;/p&gt;</description><content:encoded><![CDATA[<p>《奇特的一生》这本书讲的是苏联生物学家柳比歇夫的故事，但不是一部典型的传记，而是用散文的手法揭示了柳比歇夫人生的奇特之处。柳比歇夫有诸多的研究成果，涉及生物学及其他很多领域，但他并不是一个天才，他最奇特的地方在于他使用时间的方式和对待时间的态度，他从二十六岁到八十二岁一直在记录、统计、规划自己做每一件事情的时间，精确到小时与分钟，直观的效果是，他似乎比常人多出来很多时间，尽管他每天睡10个小时，经常参加各种娱乐活动，但他一生完成的工作量却让常人难以想象。柳比歇夫执行这种方法简直就像一个最最严于律己的教徒，这种行为体现出的他对时间的理解，对我有很强冲击力的。</p>
<p>时间是一个司空见惯的概念，但它的许多特质说出来却是很不寻常的，它是我们唯一真正拥有的东西，失去之后就不再可能找回，但现实是，我们会以各种借口来挥霍时间，仅仅为了寻找一个最佳的时间去做某件称心的事，这不仅涉及工作，也涉及生活和娱乐。相比柳比歇夫的时代，现在我们消磨时间的方法更多了，消磨时间这个说法是很诡异的，如果怀着热情做某一件事情，很难说是消磨时间，即使干的可能不是一般意义上的正事，而如果只是为了让时间过去，那就是让自己陷入了一种等待的状态，这样看，柳比歇夫的人生字典里没有等待。</p>
<p>如果说生命是宝贵的，那么组成生命的每一秒都是宝贵的，所有的时间在物理学上，在道德上，都值得一视同仁，这种观念可能会挖掘出一个人难以想象的潜能，这不是教条的要求自己每天工作时间不少于几小时，而是说发挥每一分钟的作用，看清自己的生命轨迹，柳比歇夫不是一个为了伟大的事业将自己的全部时间投入进去的人，而只是一个善用了所有时间的人，所以他是可信可学的。以我个人的经验而言，时间常常是在莫名其妙中被黑洞吸走的，而不是为显而易见的娱乐所浪费，看了多少电影、闲书，都是有迹可循的，最可怕的大概是无帐可查的犹豫与发呆，将大脑陷入情绪的海洋。</p>
<p>柳比歇夫的时间统计法，难度不在技术上，而在于坚持上，如果不是对于时间的热爱，是难以做到的，这不是简单的把自己变成机器人模式，而是基于记录统计更加灵活的利用自己的生命，发挥其无穷的可能性，这种发散主要存在于思维精神领域，柳比歇夫的物质生活反而是极简的，如果是为了升官发财沽名钓誉的目的，我估计是很难坚持的。对于时间的理解，牵涉到对于宇宙、对于生命的理解，柳比歇夫的时间统计法，不单单是一种方法，更是一种精神修养，一种道德标准，一种道。</p>
<p>柳比歇夫值得我学习，因为我们追求的东西似乎有些一致，尽管我对自己追求的究竟是什么还在求索之中，但我似乎闻到了同类的味道。接下来就是我读完本书后对自己的劝谕，至于要不要学习他的时间统计法，还有待考虑。</p>
]]></content:encoded><category>reading</category><category domain="tags">生活</category><category domain="tags">感悟</category></item><item><title>2012总结</title><link>https://yifeitao.com/summary-2012/</link><pubDate>Sat, 12 Jan 2013 00:00:00 +0000</pubDate><guid>https://yifeitao.com/summary-2012/</guid><description>&lt;p&gt;2012年完成了计划中的硕士毕业、重返工作岗位、结婚等大事，但更重要的是，2012年是我逐渐活得明白的一年。在奔三的道路上才开始活得明白，不是一件值得骄傲的事，但却是一件值得欣慰的事。&lt;/p&gt;
&lt;p&gt;若要把慢慢开始明白的道理写出来，大概是一件无趣的事情，很多很简单的道理，是青春耗散后才得来的，说出来对人也无甚益处，因为即使是称得上人生哲理的，也不过是一剂药，万能药是不存在的，对症下药则殊为难得。转而想到或可博若干年后的自己一笑，却有了一点记录的冲动。&lt;/p&gt;
&lt;h2 id="他人对你的看法没有想象中那么重要"&gt;他人对你的看法没有想象中那么重要&lt;/h2&gt;
&lt;p&gt;想想自己每天是如何谈论他人的，除了和自己真正利益相关的人外，我们是不会真的花气力去关心的。亲友会询问你最近过得怎么样，但即使不单是出于客套，这种询问和你的生活又有什么关系呢？过得好不好，终归是只有自己才知道。一个人被他人寄予厚望，自然会有些益处，但代价可能是一辈子也不明白自己想要的是什么。人生在世，大概免不了被划分到各种集合，可是如果没有抽离出集合看看自己，这一辈子的意义无非也就是给这个集合增添了一个一。自2003年6月高考以来，我一直迷茫在莫名的失败阴影中，现在看来这阴影不过是臆想中用他人的只言片语自造的一个陷阱而已。&lt;/p&gt;
&lt;h2 id="将复杂的事情分解了去做"&gt;将复杂的事情分解了去做&lt;/h2&gt;
&lt;p&gt;一个人要有动力去完成一件事情，需要正向的激励，而事情很复杂的时候，正向激励会比较难出现，看不到事情的边际的时候，拖延丧气的负面情绪随之而来，能一口气解决掉的事情是让人愉快的，这就是电子游戏吸引人的原因，且不论愤怒的小鸟这类休闲类游戏，即使是复杂的RPG游戏，也会不停地设定小的激励目标，如果一款游戏通关要几天，而且没有任何中间目标需要达成，大概是没人愿意玩的。小时候我擅长做作业与考试，想来不过是一种另类的游戏，每道题目就是阶段性目标。现实生活与玩游戏唯一不同的是，阶段性目标需要你自己去设定，规划分解实施总结修正，如此循环下去，一个个小的目标逐个达成后，也许能到达自己曾经恐惧的彼岸吧。&lt;/p&gt;
&lt;h2 id="永远保持学习的态度"&gt;永远保持学习的态度&lt;/h2&gt;
&lt;p&gt;在部分人眼中，学习是学生的事情，这种看法是愚昧而自负的。有活到老学到老的古训在，保持学习的态度不是什么新鲜说法，只是什么是真正的学习，什么态度是真正的学习的态度，是需要仔细思考的问题。对成年人而言，学习往往是一种自我革新，自己是自己的既得利益者，自我革新于是会成为一种自我伤害乃至自我折磨，人本能的爱为自己造一个舒适区，因此学习并不总是快乐的，尤其是在需要自我反思的时候。过于安稳的生活是学习的敌人，而追求安稳是人尤其是中国人的天性，所以活到老学到老通常只能说说而已，由此来看，学习的态度大概是一种折腾的态度，要永远保持学习的态度，就要保持一颗折腾的心，或者说，一个不安于现状的人，最需要保持学习的态度。&lt;/p&gt;</description><content:encoded><![CDATA[<p>2012年完成了计划中的硕士毕业、重返工作岗位、结婚等大事，但更重要的是，2012年是我逐渐活得明白的一年。在奔三的道路上才开始活得明白，不是一件值得骄傲的事，但却是一件值得欣慰的事。</p>
<p>若要把慢慢开始明白的道理写出来，大概是一件无趣的事情，很多很简单的道理，是青春耗散后才得来的，说出来对人也无甚益处，因为即使是称得上人生哲理的，也不过是一剂药，万能药是不存在的，对症下药则殊为难得。转而想到或可博若干年后的自己一笑，却有了一点记录的冲动。</p>
<h2 id="他人对你的看法没有想象中那么重要">他人对你的看法没有想象中那么重要</h2>
<p>想想自己每天是如何谈论他人的，除了和自己真正利益相关的人外，我们是不会真的花气力去关心的。亲友会询问你最近过得怎么样，但即使不单是出于客套，这种询问和你的生活又有什么关系呢？过得好不好，终归是只有自己才知道。一个人被他人寄予厚望，自然会有些益处，但代价可能是一辈子也不明白自己想要的是什么。人生在世，大概免不了被划分到各种集合，可是如果没有抽离出集合看看自己，这一辈子的意义无非也就是给这个集合增添了一个一。自2003年6月高考以来，我一直迷茫在莫名的失败阴影中，现在看来这阴影不过是臆想中用他人的只言片语自造的一个陷阱而已。</p>
<h2 id="将复杂的事情分解了去做">将复杂的事情分解了去做</h2>
<p>一个人要有动力去完成一件事情，需要正向的激励，而事情很复杂的时候，正向激励会比较难出现，看不到事情的边际的时候，拖延丧气的负面情绪随之而来，能一口气解决掉的事情是让人愉快的，这就是电子游戏吸引人的原因，且不论愤怒的小鸟这类休闲类游戏，即使是复杂的RPG游戏，也会不停地设定小的激励目标，如果一款游戏通关要几天，而且没有任何中间目标需要达成，大概是没人愿意玩的。小时候我擅长做作业与考试，想来不过是一种另类的游戏，每道题目就是阶段性目标。现实生活与玩游戏唯一不同的是，阶段性目标需要你自己去设定，规划分解实施总结修正，如此循环下去，一个个小的目标逐个达成后，也许能到达自己曾经恐惧的彼岸吧。</p>
<h2 id="永远保持学习的态度">永远保持学习的态度</h2>
<p>在部分人眼中，学习是学生的事情，这种看法是愚昧而自负的。有活到老学到老的古训在，保持学习的态度不是什么新鲜说法，只是什么是真正的学习，什么态度是真正的学习的态度，是需要仔细思考的问题。对成年人而言，学习往往是一种自我革新，自己是自己的既得利益者，自我革新于是会成为一种自我伤害乃至自我折磨，人本能的爱为自己造一个舒适区，因此学习并不总是快乐的，尤其是在需要自我反思的时候。过于安稳的生活是学习的敌人，而追求安稳是人尤其是中国人的天性，所以活到老学到老通常只能说说而已，由此来看，学习的态度大概是一种折腾的态度，要永远保持学习的态度，就要保持一颗折腾的心，或者说，一个不安于现状的人，最需要保持学习的态度。</p>
]]></content:encoded><category>life</category><category domain="tags">年度总结</category><category domain="tags">反思</category></item><item><title>推选第七辑</title><link>https://yifeitao.com/twitter-collection-7/</link><pubDate>Wed, 04 Apr 2012 00:00:00 +0000</pubDate><guid>https://yifeitao.com/twitter-collection-7/</guid><description>&lt;ol&gt;
&lt;li&gt;圣人不死，人祸不止。&lt;/li&gt;
&lt;li&gt;为了生活，我们可以心态平和，但不可以麻木。&lt;/li&gt;
&lt;li&gt;洁癖带来的只有更大的肮脏。&lt;/li&gt;
&lt;li&gt;民族性问题是个伪命题，解决不了任何问题。&lt;/li&gt;
&lt;li&gt;黑的说成白的，白的是好的。明明是市侩，却叫成熟。&lt;/li&gt;
&lt;li&gt;教育产业化，学校航母化。&lt;/li&gt;
&lt;li&gt;具体的爱国敌不过抽象的爱国，推己及人的爱国敌不过口号翻天的爱国，改善的爱国敌不过稳定的爱国。&lt;/li&gt;
&lt;li&gt;长期不能表达，自我阉割的话 ，是不是也会失去思想的能力。&lt;/li&gt;
&lt;li&gt;悲剧，暴君暴民，自食苦果，望利比亚一路走好，勿陷恶的循环。即使是早产儿，好歹出生了。&lt;/li&gt;
&lt;li&gt;淘宝商城战争的隐喻：暴君暴民。&lt;/li&gt;
&lt;li&gt;无知识的善良是要打个问号的，明辨是非往往是需要知识的，否则只是被人牵着鼻子走的善良。&lt;/li&gt;
&lt;li&gt;现在的教师只是一种普通的职业，把孩子圈养起来，是工业化之后的现实选择，现代意义的教师应运而生。作为一个职业，不必对其提灵魂工程师的要求。先去神圣光环，其他的事情才好讨论，不知道教师节算不算光环的一部分。&lt;/li&gt;
&lt;li&gt;群众被不明真相太久，反噬的时候也会不讲真相的，当信用耗尽之时，白的也会被当做黑的。有些人听力不好，只能听见爆炸声；现在似乎爆炸声也听不见了。&lt;/li&gt;
&lt;li&gt;爱国主义本是无所谓有无所谓无的，但道德高尚的人、理智的人要想自己和所爱的所保护的人生活得好一些，一定要去争取爱国主义的阐释权，否则爱国主义的阐释权就被更有行动力的流氓掌控，将不盲从于他们的人打为卖国贼，轻而易举的审判。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<ol>
<li>圣人不死，人祸不止。</li>
<li>为了生活，我们可以心态平和，但不可以麻木。</li>
<li>洁癖带来的只有更大的肮脏。</li>
<li>民族性问题是个伪命题，解决不了任何问题。</li>
<li>黑的说成白的，白的是好的。明明是市侩，却叫成熟。</li>
<li>教育产业化，学校航母化。</li>
<li>具体的爱国敌不过抽象的爱国，推己及人的爱国敌不过口号翻天的爱国，改善的爱国敌不过稳定的爱国。</li>
<li>长期不能表达，自我阉割的话 ，是不是也会失去思想的能力。</li>
<li>悲剧，暴君暴民，自食苦果，望利比亚一路走好，勿陷恶的循环。即使是早产儿，好歹出生了。</li>
<li>淘宝商城战争的隐喻：暴君暴民。</li>
<li>无知识的善良是要打个问号的，明辨是非往往是需要知识的，否则只是被人牵着鼻子走的善良。</li>
<li>现在的教师只是一种普通的职业，把孩子圈养起来，是工业化之后的现实选择，现代意义的教师应运而生。作为一个职业，不必对其提灵魂工程师的要求。先去神圣光环，其他的事情才好讨论，不知道教师节算不算光环的一部分。</li>
<li>群众被不明真相太久，反噬的时候也会不讲真相的，当信用耗尽之时，白的也会被当做黑的。有些人听力不好，只能听见爆炸声；现在似乎爆炸声也听不见了。</li>
<li>爱国主义本是无所谓有无所谓无的，但道德高尚的人、理智的人要想自己和所爱的所保护的人生活得好一些，一定要去争取爱国主义的阐释权，否则爱国主义的阐释权就被更有行动力的流氓掌控，将不盲从于他们的人打为卖国贼，轻而易举的审判。</li>
</ol>
]]></content:encoded><category>life</category><category domain="tags">推特</category><category domain="tags">碎片</category></item><item><title>2011总结</title><link>https://yifeitao.com/summary-2011/</link><pubDate>Wed, 18 Jan 2012 00:00:00 +0000</pubDate><guid>https://yifeitao.com/summary-2011/</guid><description>&lt;p&gt;去年年终自省文中说到的愿景，只实现了一部分，但这一年已经完满而值得感激了。&lt;/p&gt;
&lt;p&gt;首先值得一提的是我变胖了，感谢我女人天天变着花样做菜。基本上体重不是我自己能控制的……&lt;/p&gt;
&lt;p&gt;参与了一个项目，客串码农至今，顺便写了一篇论文，虽然来得迟，但自认为还不错。过完年再接再厉。这个过程中，最大的收获是学会了分解问题。&lt;/p&gt;
&lt;p&gt;上大学以来感觉自己过得有些浑浑噩噩，最近逐渐意识到根本原因可能在于缺乏分解问题的意识，当面对的问题不再像学生作业般可以秒杀时，感觉自己面对了一坐坐大山，迟疑、躲避、拖延等一系列负面情绪由此产生，面对望不到尽头的路时，不应该因为望不到尽头而害怕，而是想着如何先走十米、一百米、一公里，这个道理说起来也不复杂，可是真正切身体会过后，还是恍然大悟一般。&lt;/p&gt;
&lt;p&gt;这一年，对未来产生了种种幻想，而且知道一旦自己按部就班去做时，这些幻想变成现实也许没有想象中的不可想象。&lt;/p&gt;
&lt;p&gt;看了八十几部电影。在影院看过的推荐巴西电影《精英部队2:：大敌当前》和国产片《钢的琴》，下载来看的推荐一部南斯拉夫电影《地下》。&lt;/p&gt;
&lt;p&gt;看了十几本书。今年出版的书推荐一本《黑客与画家》，建议对程序员或者计算机有好奇心的人看看，毕竟，这个世界已近有一部分构建在代码之上了；另外有一本《枪炮、病菌与钢铁》印象深刻，从理论上消除了我潜在的种族主义倾向，不过该书研究比较细致，或者说行文比较啰嗦。&lt;/p&gt;
&lt;p&gt;这一年只写了两篇博客，可能是这些年来最低产的，当对自己的文字产生了要求时，动笔变成了一种负担，也许放轻松一点更好。好在写东西的热情始终在，没有丢失自省的勇气。&lt;/p&gt;
&lt;p&gt;信息过载，上网过度的问题依然很严重，走马观花太多，融会贯通太少。&lt;/p&gt;
&lt;p&gt;接下来的一年，如果只说一件事情，那就是更好的管理自己的时间，更愉快的工作学习生活；如果说两件事情，那么是毕业和结婚。&lt;/p&gt;</description><content:encoded><![CDATA[<p>去年年终自省文中说到的愿景，只实现了一部分，但这一年已经完满而值得感激了。</p>
<p>首先值得一提的是我变胖了，感谢我女人天天变着花样做菜。基本上体重不是我自己能控制的……</p>
<p>参与了一个项目，客串码农至今，顺便写了一篇论文，虽然来得迟，但自认为还不错。过完年再接再厉。这个过程中，最大的收获是学会了分解问题。</p>
<p>上大学以来感觉自己过得有些浑浑噩噩，最近逐渐意识到根本原因可能在于缺乏分解问题的意识，当面对的问题不再像学生作业般可以秒杀时，感觉自己面对了一坐坐大山，迟疑、躲避、拖延等一系列负面情绪由此产生，面对望不到尽头的路时，不应该因为望不到尽头而害怕，而是想着如何先走十米、一百米、一公里，这个道理说起来也不复杂，可是真正切身体会过后，还是恍然大悟一般。</p>
<p>这一年，对未来产生了种种幻想，而且知道一旦自己按部就班去做时，这些幻想变成现实也许没有想象中的不可想象。</p>
<p>看了八十几部电影。在影院看过的推荐巴西电影《精英部队2:：大敌当前》和国产片《钢的琴》，下载来看的推荐一部南斯拉夫电影《地下》。</p>
<p>看了十几本书。今年出版的书推荐一本《黑客与画家》，建议对程序员或者计算机有好奇心的人看看，毕竟，这个世界已近有一部分构建在代码之上了；另外有一本《枪炮、病菌与钢铁》印象深刻，从理论上消除了我潜在的种族主义倾向，不过该书研究比较细致，或者说行文比较啰嗦。</p>
<p>这一年只写了两篇博客，可能是这些年来最低产的，当对自己的文字产生了要求时，动笔变成了一种负担，也许放轻松一点更好。好在写东西的热情始终在，没有丢失自省的勇气。</p>
<p>信息过载，上网过度的问题依然很严重，走马观花太多，融会贯通太少。</p>
<p>接下来的一年，如果只说一件事情，那就是更好的管理自己的时间，更愉快的工作学习生活；如果说两件事情，那么是毕业和结婚。</p>
]]></content:encoded><category>life</category><category domain="tags">年度总结</category><category domain="tags">反思</category></item><item><title>三无影视剧</title><link>https://yifeitao.com/poor-movies/</link><pubDate>Sun, 01 Jan 2012 00:00:00 +0000</pubDate><guid>https://yifeitao.com/poor-movies/</guid><description>&lt;p&gt;欧美的作品再好，但很难有华语作品的亲切感。所以评判各个国家的影视作品，我的标准向来是不一致的，可是我用最亲切最宽容的目光来看大陆影视作品，还是忍不住想要一竹篙打翻一船人，权当是爱之深恨之切吧。我们真的只能制造三无影视——没有历史，没有现实，没有未来。&lt;/p&gt;
&lt;h3 id="没有历史"&gt;没有历史&lt;/h3&gt;
&lt;p&gt;我们引以为傲的是人民史观，可是历史作品却只有两种，一种是表现盛世中华，王图霸业，皇帝说“我真的还想再活500年”，一种是戏说历史，明明是现代剧的题材却不得不披着历史剧的皮，于是一介书生纪晓岚成了反腐先锋。&lt;/p&gt;
&lt;h3 id="没有现实"&gt;没有现实&lt;/h3&gt;
&lt;p&gt;如果有作品反映现实，赢得口碑，那它必定遭删剪或禁播，比如《蜗居》。而大受追捧的是富二代概括80后的《奋斗》。号称现代剧的往往表现的是我们似乎所不认识的世界，永远也看不到苹果标签下的暗斑。&lt;/p&gt;
&lt;h3 id="没有未来"&gt;没有未来&lt;/h3&gt;
&lt;p&gt;是真没有。最有科技含量的算是穿越剧《神话》之类？但这应该算历史剧吧……&lt;/p&gt;
&lt;p&gt;我们的创作者用舒展不开的思想，应付莫名的诸如“少林派怎么能有反派”云云的修改意见，应付欣赏水平低幼的观众，而有想法的创作者和有想法的观众， 则不得不相互抛弃。心中暗自统计，每年阅片无数，但看有着流利普通话的作品却越看越少。只见那些缓慢的节奏，做作的悲情，弱智的逻辑，生硬的说教，避开问 题打哈哈，不知所云说笑话，说起来毫无想法，题材一窝蜂把频道刷。&lt;/p&gt;
&lt;p&gt;但愿有一天我们也能出现真正的追思历史，反映现实，幻想未来的作品，来不断的打我的嘴巴。我是真心希望看到一部让我不想快进的亲切的作品，而少听一些鸟语。&lt;/p&gt;</description><content:encoded><![CDATA[<p>欧美的作品再好，但很难有华语作品的亲切感。所以评判各个国家的影视作品，我的标准向来是不一致的，可是我用最亲切最宽容的目光来看大陆影视作品，还是忍不住想要一竹篙打翻一船人，权当是爱之深恨之切吧。我们真的只能制造三无影视——没有历史，没有现实，没有未来。</p>
<h3 id="没有历史">没有历史</h3>
<p>我们引以为傲的是人民史观，可是历史作品却只有两种，一种是表现盛世中华，王图霸业，皇帝说“我真的还想再活500年”，一种是戏说历史，明明是现代剧的题材却不得不披着历史剧的皮，于是一介书生纪晓岚成了反腐先锋。</p>
<h3 id="没有现实">没有现实</h3>
<p>如果有作品反映现实，赢得口碑，那它必定遭删剪或禁播，比如《蜗居》。而大受追捧的是富二代概括80后的《奋斗》。号称现代剧的往往表现的是我们似乎所不认识的世界，永远也看不到苹果标签下的暗斑。</p>
<h3 id="没有未来">没有未来</h3>
<p>是真没有。最有科技含量的算是穿越剧《神话》之类？但这应该算历史剧吧……</p>
<p>我们的创作者用舒展不开的思想，应付莫名的诸如“少林派怎么能有反派”云云的修改意见，应付欣赏水平低幼的观众，而有想法的创作者和有想法的观众， 则不得不相互抛弃。心中暗自统计，每年阅片无数，但看有着流利普通话的作品却越看越少。只见那些缓慢的节奏，做作的悲情，弱智的逻辑，生硬的说教，避开问 题打哈哈，不知所云说笑话，说起来毫无想法，题材一窝蜂把频道刷。</p>
<p>但愿有一天我们也能出现真正的追思历史，反映现实，幻想未来的作品，来不断的打我的嘴巴。我是真心希望看到一部让我不想快进的亲切的作品，而少听一些鸟语。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">评论</category></item><item><title>黄金时段</title><link>https://yifeitao.com/golden-time/</link><pubDate>Tue, 27 Sep 2011 00:00:00 +0000</pubDate><guid>https://yifeitao.com/golden-time/</guid><description>&lt;p&gt;黄金时段中的“黄金”代表的是广告费，“时段”指向的是收视率。&lt;/p&gt;
&lt;p&gt;记忆中最初黄金时段是从晚上8点开始的，因为前面在放各级新闻联播，后来芒果台把省级新闻联播提前到中央前面，腾出了半个小时。现在但凡是有点发展欲望的地方台都是如此了，不过每次这个时段转台的时候，还是有几个地方台在新闻联播，人家开始娱乐了，这边厢还在领导视察呢。&lt;/p&gt;
&lt;p&gt;最早的黄金时段只播电视剧，娱乐节目是伴随国人生活节奏的加快而诞生的，因为有时间每天追着电视剧看的人越来越少。当年芒果台做了很多时政类节目，没有一个活过来的，但并不是被观众和广告商枪毙的，于是一群有文化的人狠下决心去做“没文化”的娱乐节目，于是有了现在的“娱乐无极限”的芒果台。&lt;/p&gt;
&lt;p&gt;话说广电总急给芒果台的快乐女生下了N道禁令，但芒果台说：我们什么时段播快女，什么时段就是就是黄金时段。这是霸气，也是无奈。女孩子唱歌的节目在中国上不了台面，10点半才能开始，一直到午夜，对选手和观众都是煎熬，让你不得不感叹，这他妈的怎么不河蟹了。&lt;/p&gt;
&lt;p&gt;幸福是比较出来的，我们想想朝鲜吧。&lt;/p&gt;</description><content:encoded><![CDATA[<p>黄金时段中的“黄金”代表的是广告费，“时段”指向的是收视率。</p>
<p>记忆中最初黄金时段是从晚上8点开始的，因为前面在放各级新闻联播，后来芒果台把省级新闻联播提前到中央前面，腾出了半个小时。现在但凡是有点发展欲望的地方台都是如此了，不过每次这个时段转台的时候，还是有几个地方台在新闻联播，人家开始娱乐了，这边厢还在领导视察呢。</p>
<p>最早的黄金时段只播电视剧，娱乐节目是伴随国人生活节奏的加快而诞生的，因为有时间每天追着电视剧看的人越来越少。当年芒果台做了很多时政类节目，没有一个活过来的，但并不是被观众和广告商枪毙的，于是一群有文化的人狠下决心去做“没文化”的娱乐节目，于是有了现在的“娱乐无极限”的芒果台。</p>
<p>话说广电总急给芒果台的快乐女生下了N道禁令，但芒果台说：我们什么时段播快女，什么时段就是就是黄金时段。这是霸气，也是无奈。女孩子唱歌的节目在中国上不了台面，10点半才能开始，一直到午夜，对选手和观众都是煎熬，让你不得不感叹，这他妈的怎么不河蟹了。</p>
<p>幸福是比较出来的，我们想想朝鲜吧。</p>
]]></content:encoded><category>life</category><category domain="tags">生活</category><category domain="tags">时间</category></item><item><title>钱事</title><link>https://yifeitao.com/money-story/</link><pubDate>Mon, 26 Sep 2011 00:00:00 +0000</pubDate><guid>https://yifeitao.com/money-story/</guid><description>&lt;p&gt;&lt;img src="https://pixabay.com/static/uploads/photo/2015/09/13/15/14/money-938269_960_720.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;h2 id="募捐"&gt;募捐&lt;/h2&gt;
&lt;p&gt;某大学，大三时某生罹患白血病，班里募捐，万余人民币交班主任转病人家属。一年后毕业，该生已去世，生前好友看望其父母，谈及募捐款项，言只得五千。&lt;/p&gt;
&lt;h2 id="沟通"&gt;沟通&lt;/h2&gt;
&lt;p&gt;湖南某地乡村帅哥，城里修自行车为业，某日为一高中女生修车，二人坠入爱河。省吃俭用，资助女生完成大学学业，后被甩，女方强调与其难以沟通。&lt;/p&gt;
&lt;h2 id="斗戏"&gt;斗戏&lt;/h2&gt;
&lt;p&gt;陕西某地乡风，每有葬礼，必请歌舞团鬼哭狼嚎一番。一老头挣命至六十七西去，虽有二子，生前无人问津。为表孝心，各请一歌舞团，一时兴起，令卖力表演，力压对方者得赏，怎料斗心一起，一发不可收拾，直接变武林大会。二位孝子无奈，各赏钱几千了事。&lt;/p&gt;
&lt;h2 id="绑尸"&gt;绑尸&lt;/h2&gt;
&lt;p&gt;甘肃某石油巨贾母亡，念生前受苦良多，以钱铺棺，风光厚葬。不料招贼惦记，墓毁钱失。二度下葬，一切从简，贼又盗，无财可取，怒而绑尸。赎，火化，秘葬。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://pixabay.com/static/uploads/photo/2015/09/13/15/14/money-938269_960_720.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<h2 id="募捐">募捐</h2>
<p>某大学，大三时某生罹患白血病，班里募捐，万余人民币交班主任转病人家属。一年后毕业，该生已去世，生前好友看望其父母，谈及募捐款项，言只得五千。</p>
<h2 id="沟通">沟通</h2>
<p>湖南某地乡村帅哥，城里修自行车为业，某日为一高中女生修车，二人坠入爱河。省吃俭用，资助女生完成大学学业，后被甩，女方强调与其难以沟通。</p>
<h2 id="斗戏">斗戏</h2>
<p>陕西某地乡风，每有葬礼，必请歌舞团鬼哭狼嚎一番。一老头挣命至六十七西去，虽有二子，生前无人问津。为表孝心，各请一歌舞团，一时兴起，令卖力表演，力压对方者得赏，怎料斗心一起，一发不可收拾，直接变武林大会。二位孝子无奈，各赏钱几千了事。</p>
<h2 id="绑尸">绑尸</h2>
<p>甘肃某石油巨贾母亡，念生前受苦良多，以钱铺棺，风光厚葬。不料招贼惦记，墓毁钱失。二度下葬，一切从简，贼又盗，无财可取，怒而绑尸。赎，火化，秘葬。</p>
]]></content:encoded><category>life</category><category domain="tags">金钱</category><category domain="tags">故事</category></item><item><title>虚伪的吃货</title><link>https://yifeitao.com/hypocritical-foodie/</link><pubDate>Mon, 05 Sep 2011 00:00:00 +0000</pubDate><guid>https://yifeitao.com/hypocritical-foodie/</guid><description>&lt;p&gt;&lt;img src="https://upload.wikimedia.org/wikipedia/commons/7/7a/Dog_meat_hotpot.JPG" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
在城里，常常看到宠物狗拖着主人在街上溜达，这时我往往会想起乡村的那些土狗：它们大约是幸福的，可以漫山遍野的狂奔、野合；也可能是悲惨的，一年到头看家护院，最后变成了冬季进补的狗肉火锅。去年过年待家的某天，我那十岁出头的小侄女哭得悲怆，简直要和他爷爷拼命了。因为狗的计划生育没搞好，加之老爷子常说：“狗肉滚三滚，神仙坐不稳。”于是有条小狗被一棒闷敲，成了食材。爱小狗的小孩的眼泪终于还是没能阻止。&lt;/p&gt;
&lt;p&gt;小时候吃狗肉，大人总会说，吃了“火气”好，方言，大概意思是吃了比较能憋尿，不会尿床，看来也算是“补肾”了。虽然不吃狗肉很多年，也不再相信狗肉“补肾”的说法，可是依然能依稀回味到狗肉火锅的香。不吃狗肉的人有很多种，我是最消极的一种，从来不干涉其他人大快朵颐，可能是我既找不到指责的立场，又没有干涉别人饮食自由的勇气。&lt;/p&gt;
&lt;p&gt;小时候的我，基本上什么都敢吃，青蛙很爱吃，生吞蛇胆的事也干过。后来每日听着城市的噪底入睡，想念乡村那蛙鸣狗吠衬托出来的静，可是回到家，却连蝌蚪也渐渐难得一见。人心惶惶的非典怀疑是吃果子狸吃出来的，慢慢的我也有了敬畏心，不再以什么都敢吃而自豪了，不再吃青蛙和蛇这些奇奇怪怪的东西，顺带连狗肉也戒了。说起来我现在不是一个爱狗的人，小时候我曾经很爱我家养得那些小狗，可是它们都很短命，没有一只善终。有一只小白狗吃了死老鼠，而老鼠是吃了毒鼠强死的，接连几天晚上，我都梦见这个白色的小家伙，梦见它闪闪的小眼睛，后来我再也不想对这类短命的生灵倾注太多感情。&lt;/p&gt;
&lt;p&gt;高中，其时正肠中枯涸，吃食堂吃到愤世，室友的老爸请我们吃猪蹄膀大餐，说了一句我难忘的玩笑话：大口吃，我们人都是肉食动物。靠智力登顶食物链金字塔的人类，无论持怎样的饮食习惯，都逃脱不了虚伪的嫌疑。据说当年阿三和我们干架，宣传中国人很坏：他们吃猪肉！于是穆斯林愤怒了。他们吃牛肉！于是印度教教徒愤怒了。他们吃老鼠肉！于是人人都害怕了。&lt;/p&gt;
&lt;p&gt;有一种有趣的吃猪肉不吃狗肉的理论是猪比较蠢，狗比较聪明，而在我看来，猪只是过得比较颓废。吃货们攻击忌食的，理由充分，总有吐槽的点，那些不吃狗肉的，你们怎么不去可怜可爱的猪猪，那些吃素的，你怎么不想想黄瓜的汁液也是活生生的细胞破裂溢出来的。不到人造食物的那天，大概是无解的，谁让你不能光合作用呢？&lt;/p&gt;
&lt;p&gt;我小侄女是个善良的好孩子，希望她长大后也还能偶尔想起碗中的食物曾经是生命。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://upload.wikimedia.org/wikipedia/commons/7/7a/Dog_meat_hotpot.JPG" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />

在城里，常常看到宠物狗拖着主人在街上溜达，这时我往往会想起乡村的那些土狗：它们大约是幸福的，可以漫山遍野的狂奔、野合；也可能是悲惨的，一年到头看家护院，最后变成了冬季进补的狗肉火锅。去年过年待家的某天，我那十岁出头的小侄女哭得悲怆，简直要和他爷爷拼命了。因为狗的计划生育没搞好，加之老爷子常说：“狗肉滚三滚，神仙坐不稳。”于是有条小狗被一棒闷敲，成了食材。爱小狗的小孩的眼泪终于还是没能阻止。</p>
<p>小时候吃狗肉，大人总会说，吃了“火气”好，方言，大概意思是吃了比较能憋尿，不会尿床，看来也算是“补肾”了。虽然不吃狗肉很多年，也不再相信狗肉“补肾”的说法，可是依然能依稀回味到狗肉火锅的香。不吃狗肉的人有很多种，我是最消极的一种，从来不干涉其他人大快朵颐，可能是我既找不到指责的立场，又没有干涉别人饮食自由的勇气。</p>
<p>小时候的我，基本上什么都敢吃，青蛙很爱吃，生吞蛇胆的事也干过。后来每日听着城市的噪底入睡，想念乡村那蛙鸣狗吠衬托出来的静，可是回到家，却连蝌蚪也渐渐难得一见。人心惶惶的非典怀疑是吃果子狸吃出来的，慢慢的我也有了敬畏心，不再以什么都敢吃而自豪了，不再吃青蛙和蛇这些奇奇怪怪的东西，顺带连狗肉也戒了。说起来我现在不是一个爱狗的人，小时候我曾经很爱我家养得那些小狗，可是它们都很短命，没有一只善终。有一只小白狗吃了死老鼠，而老鼠是吃了毒鼠强死的，接连几天晚上，我都梦见这个白色的小家伙，梦见它闪闪的小眼睛，后来我再也不想对这类短命的生灵倾注太多感情。</p>
<p>高中，其时正肠中枯涸，吃食堂吃到愤世，室友的老爸请我们吃猪蹄膀大餐，说了一句我难忘的玩笑话：大口吃，我们人都是肉食动物。靠智力登顶食物链金字塔的人类，无论持怎样的饮食习惯，都逃脱不了虚伪的嫌疑。据说当年阿三和我们干架，宣传中国人很坏：他们吃猪肉！于是穆斯林愤怒了。他们吃牛肉！于是印度教教徒愤怒了。他们吃老鼠肉！于是人人都害怕了。</p>
<p>有一种有趣的吃猪肉不吃狗肉的理论是猪比较蠢，狗比较聪明，而在我看来，猪只是过得比较颓废。吃货们攻击忌食的，理由充分，总有吐槽的点，那些不吃狗肉的，你们怎么不去可怜可爱的猪猪，那些吃素的，你怎么不想想黄瓜的汁液也是活生生的细胞破裂溢出来的。不到人造食物的那天，大概是无解的，谁让你不能光合作用呢？</p>
<p>我小侄女是个善良的好孩子，希望她长大后也还能偶尔想起碗中的食物曾经是生命。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">美食</category><category domain="tags">生活</category></item><item><title>推选第六辑</title><link>https://yifeitao.com/twitter-collection-6/</link><pubDate>Sun, 03 Jul 2011 00:00:00 +0000</pubDate><guid>https://yifeitao.com/twitter-collection-6/</guid><description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;《话不投机半句多》：姑娘/你的眼神有几分忧伤/姑娘/你的眼神在流浪/姑娘/请不要说话/破坏你的美好形&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;所有的神话都应该让其破灭，越早越好&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;李隆基和杨玉环，纯洁的爱情&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;即使是善意的提醒，戏谑的提醒：“小心被和谐”，也让人心凉&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有时候含蓄是一种耻辱，有时候冷淡是一种美德。mor&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;职业化伴随着体制化，你去遵守职业道德、职业规范、职业潜规则，模仿同行的做法，就会慢慢失去很多东西。所有行业的从业人员都会找到自己的生存哲学，这是支撑其世界的支柱，但这地基不见得对得起天地良心。举个例子：截访公司啊什么的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在网络时代，要勇敢学做奥特曼 ，才不会被汹涌的信息流搞得迷失方向。当有人说你奥特曼时，勇敢的说：奥你妹啊&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不过都是放春风，聊胜于无。人说我诸事皆不关心，然而诸事终会接踵而至。世界不因你多一眼而更差，不因你少一眼而更好，也不因你少一眼而更好，不因你多一眼而更差。区别不过主动睁眼还是被动睁眼，明白着痛苦找寻生的希望，或是糊涂着痛苦找寻死的彼岸。愿夏雨有收成之时&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我劝你注意自己的言辞，于是我无意做帮凶却做了帮凶。人人皆是审查官，处处都是火山口&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;独立不是孤僻，是站稳了自己的脚跟来看这个世界，而不是以为可以再也不需要他人。 独立思考到一定程度应该是不会再傲慢自大的，只会因感受到心灵责任，不停的反省自己。怀疑可能是独立思考的必备要素，而怀疑自己则是最基本的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们对着虚空咆哮，我们对着虚空倾诉，一切的热闹都是寂寞&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A自称属于X派，宣扬X理念，但其实他是个傻逼，B自称属于Y派，宣扬Y理念，但其实他也是个傻逼。于是A和B就X、Y理念展开了充分的讨论，各自得出了Y派和X派是傻逼派的结论，至于X、Y理念究竟是什么？傻逼怎么可能知道呢&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有的人的微博是喇叭，还有的人的微博是复读机&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;给我一个枕头，我就能把全世界睡着&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果吸血鬼不再惧怕阳光，那么人类和吸血鬼是不是会失去和解的可能，最终只能爆发战争。每一次驻足围观，每一次失望散去，都消耗残存的信心与机会&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在没有你的宇宙里，所有的天气状况都是寂寞的借口，在有你的宇宙里，所有的天气状况都是开心的理由&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有人说：当你不明白时，想想这是在中国，就都明白了！这是一种多么偷懒的说辞啊，明白什么了，什么都不明白，问题还是问题&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;两只刺猬想相互拥抱，如果速度太快，可能会刺到对方。可是毕竟，他们除了刺，都还有柔软的一面&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;#微小说#他们相遇了，相爱了，结婚了。她一直守着他生活，直到他老之将死，她附在在弥留之际的他的耳边说：“其实我从来没有爱过你，我爱的始终是自己，我把自己都骗了，所以你也被我骗了。”他的眼角流下一滴眼泪，嘴角抽动了一下，去了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“冬天真是一个适合伤心的季节啊！”“据说伤心的高手一草一木都是伤心的对象，春夏秋冬都是伤心的季节。”“那我真是伤心的高手啊。”我想说的是，在自怨自艾上，人大概都是傲慢的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;真正的热门话题，是出现一会儿就会不见的，可能因为太热啊，它就自己把自己热死了，你知道，我们这里是个高压锅嘛，各种稳定&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你的眼泪/流到现在可曾干/你借我/我绝不会归还/千金不换/她已找到熟悉的港&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在微博里你会关注百十号来人，和几个人有长期的交流，过滤之后，便构筑了自己的小世界，小小的喧闹中幻觉井口看出去的是世界。不用太远，跑到微博广场上一看就会发现，大概，无聊才是这个世界的最大真相&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;#吾国与吾民#中国人奉行家庭主义，以家庭构筑围城，城内热情，城外冷漠，家国之间，公共社会则较为缺失。一个官员，若为其家族，其乡土谋足私利，简直是受敬仰的。中国人对于贪腐的恨，往往掺杂了嫉妒的成分。沾光之心，不可遏制&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;爱是一种发散情感，先自爱乃是第一步，推己及人。能爱国乃至爱人类未尝不可。但若因此提倡废私，则是丢失了爱的基础，如空中楼阁，极为危险&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;#吾国与吾民#面子，关乎人情权势，与荣誉关系其实不大。有面子的事情，往往在于破格，搞得定罩得住，透着一股黑社会的味道。有面子观而少荣辱感，有变通而少坚持&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;《春天的故事》：有一位年轻的老人，拄着笔直的拐杖，骑着白色的黑马，在一个伸手不见五指的白天，摘下他最爱的一株花，送给他最恨的爱人，企盼他最寒冷的夏天&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;#微情书#蓦然回首，原来受眷顾&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;那天早上，他走过小广场，看到一张旧广告纸在风中摇晃，赫然几个大字“加量不加价”， 暗想如今量变多价变少的，大概只有硬盘了。肚中催叫，只得掏出自己吃了很多天的那块旧硬盘，啃了几口，这次吃到了一部老电影， 几篇言不由衷的文档，还有几十张风景照片。嘴里五味杂陈，概叹：还是消磁不充分呀&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;从前有一堵墙，墙两边的人看不到对面，以为对面都是怪物，成日间以互扔石子为乐。有个调皮的家伙，也不知道是哪边的，爬上墙头闲看，后来他死了…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很多学编程的人，披荆斩棘，终于用新学的语言发出了“Hello，world”的呼喊，这时候满怀信心，觉得自己可以创造一个世界，但是悲剧的是，三分钟热度过后，留下的也只有“Hello，world”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国人迷武侠恰似美国人迷超人之类的超级英雄，不同的是，我们长大后，依然相信那是真的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;凡是敌人赞成的，我们就要反对；为了我们反对的，可以创造一个敌人&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要充分了解一个女人，你得了解她哪儿敏感，了解一个国家也是如此&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;百足之虫，病入膏肓。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<ol>
<li>
<p>《话不投机半句多》：姑娘/你的眼神有几分忧伤/姑娘/你的眼神在流浪/姑娘/请不要说话/破坏你的美好形</p>
</li>
<li>
<p>所有的神话都应该让其破灭，越早越好</p>
</li>
<li>
<p>李隆基和杨玉环，纯洁的爱情</p>
</li>
<li>
<p>即使是善意的提醒，戏谑的提醒：“小心被和谐”，也让人心凉</p>
</li>
<li>
<p>有时候含蓄是一种耻辱，有时候冷淡是一种美德。mor</p>
</li>
<li>
<p>职业化伴随着体制化，你去遵守职业道德、职业规范、职业潜规则，模仿同行的做法，就会慢慢失去很多东西。所有行业的从业人员都会找到自己的生存哲学，这是支撑其世界的支柱，但这地基不见得对得起天地良心。举个例子：截访公司啊什么的</p>
</li>
<li>
<p>在网络时代，要勇敢学做奥特曼 ，才不会被汹涌的信息流搞得迷失方向。当有人说你奥特曼时，勇敢的说：奥你妹啊</p>
</li>
<li>
<p>不过都是放春风，聊胜于无。人说我诸事皆不关心，然而诸事终会接踵而至。世界不因你多一眼而更差，不因你少一眼而更好，也不因你少一眼而更好，不因你多一眼而更差。区别不过主动睁眼还是被动睁眼，明白着痛苦找寻生的希望，或是糊涂着痛苦找寻死的彼岸。愿夏雨有收成之时</p>
</li>
<li>
<p>我劝你注意自己的言辞，于是我无意做帮凶却做了帮凶。人人皆是审查官，处处都是火山口</p>
</li>
<li>
<p>独立不是孤僻，是站稳了自己的脚跟来看这个世界，而不是以为可以再也不需要他人。 独立思考到一定程度应该是不会再傲慢自大的，只会因感受到心灵责任，不停的反省自己。怀疑可能是独立思考的必备要素，而怀疑自己则是最基本的</p>
</li>
<li>
<p>我们对着虚空咆哮，我们对着虚空倾诉，一切的热闹都是寂寞</p>
</li>
<li>
<p>A自称属于X派，宣扬X理念，但其实他是个傻逼，B自称属于Y派，宣扬Y理念，但其实他也是个傻逼。于是A和B就X、Y理念展开了充分的讨论，各自得出了Y派和X派是傻逼派的结论，至于X、Y理念究竟是什么？傻逼怎么可能知道呢</p>
</li>
<li>
<p>有的人的微博是喇叭，还有的人的微博是复读机</p>
</li>
<li>
<p>给我一个枕头，我就能把全世界睡着</p>
</li>
<li>
<p>如果吸血鬼不再惧怕阳光，那么人类和吸血鬼是不是会失去和解的可能，最终只能爆发战争。每一次驻足围观，每一次失望散去，都消耗残存的信心与机会</p>
</li>
<li>
<p>在没有你的宇宙里，所有的天气状况都是寂寞的借口，在有你的宇宙里，所有的天气状况都是开心的理由</p>
</li>
<li>
<p>有人说：当你不明白时，想想这是在中国，就都明白了！这是一种多么偷懒的说辞啊，明白什么了，什么都不明白，问题还是问题</p>
</li>
<li>
<p>两只刺猬想相互拥抱，如果速度太快，可能会刺到对方。可是毕竟，他们除了刺，都还有柔软的一面</p>
</li>
<li>
<p>#微小说#他们相遇了，相爱了，结婚了。她一直守着他生活，直到他老之将死，她附在在弥留之际的他的耳边说：“其实我从来没有爱过你，我爱的始终是自己，我把自己都骗了，所以你也被我骗了。”他的眼角流下一滴眼泪，嘴角抽动了一下，去了</p>
</li>
<li>
<p>“冬天真是一个适合伤心的季节啊！”“据说伤心的高手一草一木都是伤心的对象，春夏秋冬都是伤心的季节。”“那我真是伤心的高手啊。”我想说的是，在自怨自艾上，人大概都是傲慢的</p>
</li>
<li>
<p>真正的热门话题，是出现一会儿就会不见的，可能因为太热啊，它就自己把自己热死了，你知道，我们这里是个高压锅嘛，各种稳定</p>
</li>
<li>
<p>你的眼泪/流到现在可曾干/你借我/我绝不会归还/千金不换/她已找到熟悉的港</p>
</li>
<li>
<p>在微博里你会关注百十号来人，和几个人有长期的交流，过滤之后，便构筑了自己的小世界，小小的喧闹中幻觉井口看出去的是世界。不用太远，跑到微博广场上一看就会发现，大概，无聊才是这个世界的最大真相</p>
</li>
<li>
<p>#吾国与吾民#中国人奉行家庭主义，以家庭构筑围城，城内热情，城外冷漠，家国之间，公共社会则较为缺失。一个官员，若为其家族，其乡土谋足私利，简直是受敬仰的。中国人对于贪腐的恨，往往掺杂了嫉妒的成分。沾光之心，不可遏制</p>
</li>
<li>
<p>爱是一种发散情感，先自爱乃是第一步，推己及人。能爱国乃至爱人类未尝不可。但若因此提倡废私，则是丢失了爱的基础，如空中楼阁，极为危险</p>
</li>
<li>
<p>#吾国与吾民#面子，关乎人情权势，与荣誉关系其实不大。有面子的事情，往往在于破格，搞得定罩得住，透着一股黑社会的味道。有面子观而少荣辱感，有变通而少坚持</p>
</li>
<li>
<p>《春天的故事》：有一位年轻的老人，拄着笔直的拐杖，骑着白色的黑马，在一个伸手不见五指的白天，摘下他最爱的一株花，送给他最恨的爱人，企盼他最寒冷的夏天</p>
</li>
<li>
<p>#微情书#蓦然回首，原来受眷顾</p>
</li>
<li>
<p>那天早上，他走过小广场，看到一张旧广告纸在风中摇晃，赫然几个大字“加量不加价”， 暗想如今量变多价变少的，大概只有硬盘了。肚中催叫，只得掏出自己吃了很多天的那块旧硬盘，啃了几口，这次吃到了一部老电影， 几篇言不由衷的文档，还有几十张风景照片。嘴里五味杂陈，概叹：还是消磁不充分呀</p>
</li>
<li>
<p>从前有一堵墙，墙两边的人看不到对面，以为对面都是怪物，成日间以互扔石子为乐。有个调皮的家伙，也不知道是哪边的，爬上墙头闲看，后来他死了…</p>
</li>
<li>
<p>很多学编程的人，披荆斩棘，终于用新学的语言发出了“Hello，world”的呼喊，这时候满怀信心，觉得自己可以创造一个世界，但是悲剧的是，三分钟热度过后，留下的也只有“Hello，world”</p>
</li>
<li>
<p>中国人迷武侠恰似美国人迷超人之类的超级英雄，不同的是，我们长大后，依然相信那是真的</p>
</li>
<li>
<p>凡是敌人赞成的，我们就要反对；为了我们反对的，可以创造一个敌人</p>
</li>
<li>
<p>要充分了解一个女人，你得了解她哪儿敏感，了解一个国家也是如此</p>
</li>
<li>
<p>百足之虫，病入膏肓。</p>
</li>
</ol>
]]></content:encoded><category>life</category><category domain="tags">推特</category><category domain="tags">碎片</category></item><item><title>母鸡的故事</title><link>https://yifeitao.com/a-story-of-hen/</link><pubDate>Tue, 17 May 2011 00:00:00 +0000</pubDate><guid>https://yifeitao.com/a-story-of-hen/</guid><description>&lt;p&gt;&lt;img src="https://cdn.pixabay.com/photo/2016/06/03/09/21/chicks-1433025_960_720.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;生为一个乡下人，我知道一些城里人不知道的知识，比如母鸡下蛋的鸡窝里如果积了太多的蛋不拿走，母鸡就会开始浑身高烧不吃不喝的孵蛋。可是我不知道临界值是多少，能让它产生一厢情愿的幻觉，以为自己可以当母亲了。作为一只家禽，它的生育权是被人代管了的，具体在我家那就是归我妈管了。&lt;/p&gt;
&lt;p&gt;我们都会按时拿走母鸡下的蛋，不让它产生误解，可是悲剧偶尔还是会发生的。母鸡终于还是激素上脑，开始趴在那一小堆蛋上一动不动的消耗着自己平日积攒的脂肪，如果用红外线探测，在黑夜里它也是一个小火炉。可是人类是不同情它的，作为一只合格的母鸡，必须每天下蛋，而孵出一堆小鸡这种事情，是适时而定的，甚至往往由电热来代办，想到一群小鸡围着爱迪生叫妈妈，我突然想自负的笑一下。&lt;/p&gt;
&lt;p&gt;不同于通常对伟大母爱的赞叹，这时候我们乡下人管这种状态的母鸡叫做“发抱鸡婆疯”，我妈也往往想些办法来治疗它的疯病，比如把它双脚捆起来扔一边，甚至尝试过倒吊起来在水面上淹一淹，可能这是我见我妈做过的最残忍的事情了。想要找一堆蛋趴在上面而不得的母鸡，依然会被激素炙烤着自己的身体，直到消瘦不堪，有一天突然又忘掉自己曾经想要孵蛋，愉快的找虫子吃去了。我是说我觉得它忘掉了。&lt;/p&gt;
&lt;p&gt;接下来还想讲的事情，挂在“母鸡的故事”这个标题下，实在有大不敬的嫌疑，可是想到老天有眼，知道我其实是孝子，我还是想说出来。我四五岁的时候，爱拿着一根小竹棍在田间小道上削野草，幻想自己是一个剑客，甚至幻想有个弟弟做自己的小跟班。不过年代久远，我其实已经不确信我是否真的这样幻想过，总之我妈还是如我心愿，给我怀了一个弟弟。&lt;/p&gt;
&lt;p&gt;后来他死了，一针打下去，提前见了人间冷暖，据说出来的时候连着脐带，生死莫辨，医生急着剪断脐带，然后终于确认是死了。我爸说，他出来的时候已经四肢皆全，和我一般脑袋蛮大。我没有亲见。我爸用一件衣服包了，把他埋在医院附近的山头上，我们也都没有再去看过。&lt;/p&gt;
&lt;p&gt;我想，我应该是没有过一个亲生弟弟的吧。&lt;/p&gt;
&lt;p&gt;他们说，只生一个好，我相信了。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://cdn.pixabay.com/photo/2016/06/03/09/21/chicks-1433025_960_720.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>生为一个乡下人，我知道一些城里人不知道的知识，比如母鸡下蛋的鸡窝里如果积了太多的蛋不拿走，母鸡就会开始浑身高烧不吃不喝的孵蛋。可是我不知道临界值是多少，能让它产生一厢情愿的幻觉，以为自己可以当母亲了。作为一只家禽，它的生育权是被人代管了的，具体在我家那就是归我妈管了。</p>
<p>我们都会按时拿走母鸡下的蛋，不让它产生误解，可是悲剧偶尔还是会发生的。母鸡终于还是激素上脑，开始趴在那一小堆蛋上一动不动的消耗着自己平日积攒的脂肪，如果用红外线探测，在黑夜里它也是一个小火炉。可是人类是不同情它的，作为一只合格的母鸡，必须每天下蛋，而孵出一堆小鸡这种事情，是适时而定的，甚至往往由电热来代办，想到一群小鸡围着爱迪生叫妈妈，我突然想自负的笑一下。</p>
<p>不同于通常对伟大母爱的赞叹，这时候我们乡下人管这种状态的母鸡叫做“发抱鸡婆疯”，我妈也往往想些办法来治疗它的疯病，比如把它双脚捆起来扔一边，甚至尝试过倒吊起来在水面上淹一淹，可能这是我见我妈做过的最残忍的事情了。想要找一堆蛋趴在上面而不得的母鸡，依然会被激素炙烤着自己的身体，直到消瘦不堪，有一天突然又忘掉自己曾经想要孵蛋，愉快的找虫子吃去了。我是说我觉得它忘掉了。</p>
<p>接下来还想讲的事情，挂在“母鸡的故事”这个标题下，实在有大不敬的嫌疑，可是想到老天有眼，知道我其实是孝子，我还是想说出来。我四五岁的时候，爱拿着一根小竹棍在田间小道上削野草，幻想自己是一个剑客，甚至幻想有个弟弟做自己的小跟班。不过年代久远，我其实已经不确信我是否真的这样幻想过，总之我妈还是如我心愿，给我怀了一个弟弟。</p>
<p>后来他死了，一针打下去，提前见了人间冷暖，据说出来的时候连着脐带，生死莫辨，医生急着剪断脐带，然后终于确认是死了。我爸说，他出来的时候已经四肢皆全，和我一般脑袋蛮大。我没有亲见。我爸用一件衣服包了，把他埋在医院附近的山头上，我们也都没有再去看过。</p>
<p>我想，我应该是没有过一个亲生弟弟的吧。</p>
<p>他们说，只生一个好，我相信了。</p>
]]></content:encoded><category>life</category><category domain="tags">故事</category><category domain="tags">生活</category></item><item><title>金寨行感想</title><link>https://yifeitao.com/jinzhai/</link><pubDate>Sat, 26 Mar 2011 00:00:00 +0000</pubDate><guid>https://yifeitao.com/jinzhai/</guid><description>&lt;h3 id="公益"&gt;公益&lt;/h3&gt;
&lt;p&gt;我们有树状的国家而无网状的社会。CCTV对NGO做过“慈善组织”的括号标注，显然是忌惮颇深。这次金寨行加深的一个印象就是做公益是个复杂的事情，不是发钱那么简单的。让善心落到善处不是容易事，尾大不掉缺乏渗透性的是该放权了。&lt;/p&gt;
&lt;h3 id="公平"&gt;公平&lt;/h3&gt;
&lt;p&gt;按合作分配的经济学原理，自然是具有稀缺地位的人获得更多，因此我并不赞同绝对公平。但我觉得一个具有发展潜力的社会至少有三点要做到，一是教育的公平，这是让人改变自己稀缺属性的；二是不能让公权力成为稀缺资源影响分配；三是恰当的二次分配。&lt;/p&gt;
&lt;h3 id="标签"&gt;标签&lt;/h3&gt;
&lt;p&gt;有名万物之母，指称的范畴下，会聚集一些印象、一些意义，但也会掩盖复杂性与个体特征。台湾人欧弟这样说：不要相信别人向你描述的大陆，它太大，所有看法都是片面的。保持好奇心，但又不轻易感到惊奇。&lt;/p&gt;
&lt;h3 id="尊严"&gt;尊严&lt;/h3&gt;
&lt;p&gt;200元也许也是值得感谢的，200万也许也是不值得感谢的。世界上没有真正无私的帮助，施予什么，一定是为了得到什么，只是不要有错误的期许吧。保护受帮助者的尊严和向社会宣传是要小心处理的矛盾，但现阶段还是需要宣传的，很多人听说我资助学生都觉得不可思议或闻所未闻。&lt;/p&gt;
&lt;h3 id="从政"&gt;从政&lt;/h3&gt;
&lt;p&gt;除非有强大的献身精神，否则在格格不入的体制面前会望而兴叹的。&lt;/p&gt;</description><content:encoded><![CDATA[<h3 id="公益">公益</h3>
<p>我们有树状的国家而无网状的社会。CCTV对NGO做过“慈善组织”的括号标注，显然是忌惮颇深。这次金寨行加深的一个印象就是做公益是个复杂的事情，不是发钱那么简单的。让善心落到善处不是容易事，尾大不掉缺乏渗透性的是该放权了。</p>
<h3 id="公平">公平</h3>
<p>按合作分配的经济学原理，自然是具有稀缺地位的人获得更多，因此我并不赞同绝对公平。但我觉得一个具有发展潜力的社会至少有三点要做到，一是教育的公平，这是让人改变自己稀缺属性的；二是不能让公权力成为稀缺资源影响分配；三是恰当的二次分配。</p>
<h3 id="标签">标签</h3>
<p>有名万物之母，指称的范畴下，会聚集一些印象、一些意义，但也会掩盖复杂性与个体特征。台湾人欧弟这样说：不要相信别人向你描述的大陆，它太大，所有看法都是片面的。保持好奇心，但又不轻易感到惊奇。</p>
<h3 id="尊严">尊严</h3>
<p>200元也许也是值得感谢的，200万也许也是不值得感谢的。世界上没有真正无私的帮助，施予什么，一定是为了得到什么，只是不要有错误的期许吧。保护受帮助者的尊严和向社会宣传是要小心处理的矛盾，但现阶段还是需要宣传的，很多人听说我资助学生都觉得不可思议或闻所未闻。</p>
<h3 id="从政">从政</h3>
<p>除非有强大的献身精神，否则在格格不入的体制面前会望而兴叹的。</p>
]]></content:encoded><category>life</category><category domain="tags">旅行</category><category domain="tags">社会</category></item><item><title>2010年总结</title><link>https://yifeitao.com/summary-2010/</link><pubDate>Fri, 14 Jan 2011 00:00:00 +0000</pubDate><guid>https://yifeitao.com/summary-2010/</guid><description>&lt;p&gt;公历2010年过去了，农历虎年也将要进入休闲期，这时候，似乎是应该写点什么的。因为太习惯空话套话的年终总结，以至让人失去了一年到头时自我反省的欲望。若只写给自己看，可能会失去向上的态度，若只写给别人看，可能会连带自己一并都欺骗。说来终究是难事一件，但若不做，却又遗憾。more&lt;/p&gt;
&lt;p&gt;在年初的时候，没有做任何的计划与誓词，或许有些模模糊糊的愿景。因为模糊现在也就无法清算自己，对于懒惰的人而言，这算是幸事一件吧。&lt;/p&gt;
&lt;p&gt;如果只能写一件事的话，那就是有个陌生且遥远的她偶然转发了我的一条微博，后来……这种神奇而幸福的事，却又不想在此细说。&lt;/p&gt;
&lt;p&gt;最大的教训竟然是：过马路的时候看信号灯，注意过往的车辆。这不是幼儿园就学过的么？&lt;/p&gt;
&lt;p&gt;在专业上，按部就班，如蜗牛前行，好像渐渐的失去把自己整成一个工作狂的兴趣，纵使一时受了什么刺激，奋发图强之心似乎也过不了夜。如果这个世界有许多圈子，我好像只喜欢站在圈外，比如站在“老子一定要牛逼”这个圈子外。换句话说，就是不思进取？用武侠小说里面的话说，我希望过一种没有江湖纷争平平淡淡的生活，可是人家那是血雨腥风中的感言，而本人从未拿起，又如何谈放下？&lt;/p&gt;
&lt;p&gt;这一年，继续着宅男的生活，但所幸没有成为死宅，要感谢那些让我离开电脑屏幕的人。去了西安走马观坟，去了金寨看两个世界的90后，去了广州见我未曾谋面的心爱的人，带着别人和跟着别人在苏州城转。淋了两场雨：在金寨清秀的山的脚下被雨打得睁不开眼，在苏州冬天的篮球场上淋着雨打篮球。依然会哭，会笑，没有心思麻木，没有失去幽默感。&lt;/p&gt;
&lt;p&gt;在网上消费越来越多，交流越来越多，所以越来越依赖与感谢网络，越来越对阻碍信息流动的行为恨之入骨。信息过载症很严重，曾经为此戒网近一个月，只能说有些效果。现在再开药方：一是懂得放弃，不要把自己搞成什么都知道一点的知道分子，；二是提高效率，不要干刷新等更新这种浪费时间的事情，设法多过滤；三是多做深阅读，多读书，多读好文章。&lt;/p&gt;
&lt;p&gt;看了约一百部电影（其中进影院约十次），口味依然杂乱，为什么喜欢看电影，大概是因为这种娱乐方式形式简单，但却可以短暂的再造一个世界。提升欣赏品位是一个潜移默化的过程，但如果适当地刻意去做，也很不错。&lt;/p&gt;
&lt;p&gt;看了十几本书，买了电纸书后要读完一百本书的计划遥遥无期，也没有刻意想要去达成。在“好读书不求甚解”和“不动笔墨不读书”间摇摆不定。读书一为消遣，一为自我提升，目的性太强会丢失乐趣，太随意又会读了白读。仔细想来，自己并没有好的读书习惯与治学理念，在质和量两个方面都很欠缺。自然，掉到书眼里不是什么好事，但既然对读书还算有所爱好，对自己的不断提升还算有所期许，就得做得透彻一点，花点心思。&lt;/p&gt;
&lt;p&gt;写了博客文章约40篇，发了微博约2000条。对自己的文字一度有了经营之心，但还是流于懈怠，可以有诸多借口，但说到底还是懒得思考与交流，这于修身立业都很致命，可能得继续改变自己一个人安逸着活的状态。往内不观己，往外不观人，这样岂不是闭着眼睛过。&lt;/p&gt;
&lt;p&gt;以诚待人，以自己的方式待人，似乎也过得去，渐渐明确：即使做不到我行我素，也决不去随波逐流。不善与人交流其实是个大借口，倒是知道自己收不到秋天的果实，因为春天从来不播种，太爱护这样的自己了。用心说话，其实总能沟通。&lt;/p&gt;
&lt;p&gt;用一些词语形容这一年：值得感谢，悠闲，不思进取，坦诚。&lt;/p&gt;
&lt;p&gt;对接下来一年说几句，不算是计划，会对计划有逆反心理的。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;对于爱情，阳光雨露，自然生长&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于专业，死灰复燃，旧情复发&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;少上网，上好网&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;多读书，读好书&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;构建自己的学习习惯和治学体系&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;多思考，多成文&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;多交流，继续以诚待人&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;多运动。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><content:encoded><![CDATA[<p>公历2010年过去了，农历虎年也将要进入休闲期，这时候，似乎是应该写点什么的。因为太习惯空话套话的年终总结，以至让人失去了一年到头时自我反省的欲望。若只写给自己看，可能会失去向上的态度，若只写给别人看，可能会连带自己一并都欺骗。说来终究是难事一件，但若不做，却又遗憾。more</p>
<p>在年初的时候，没有做任何的计划与誓词，或许有些模模糊糊的愿景。因为模糊现在也就无法清算自己，对于懒惰的人而言，这算是幸事一件吧。</p>
<p>如果只能写一件事的话，那就是有个陌生且遥远的她偶然转发了我的一条微博，后来……这种神奇而幸福的事，却又不想在此细说。</p>
<p>最大的教训竟然是：过马路的时候看信号灯，注意过往的车辆。这不是幼儿园就学过的么？</p>
<p>在专业上，按部就班，如蜗牛前行，好像渐渐的失去把自己整成一个工作狂的兴趣，纵使一时受了什么刺激，奋发图强之心似乎也过不了夜。如果这个世界有许多圈子，我好像只喜欢站在圈外，比如站在“老子一定要牛逼”这个圈子外。换句话说，就是不思进取？用武侠小说里面的话说，我希望过一种没有江湖纷争平平淡淡的生活，可是人家那是血雨腥风中的感言，而本人从未拿起，又如何谈放下？</p>
<p>这一年，继续着宅男的生活，但所幸没有成为死宅，要感谢那些让我离开电脑屏幕的人。去了西安走马观坟，去了金寨看两个世界的90后，去了广州见我未曾谋面的心爱的人，带着别人和跟着别人在苏州城转。淋了两场雨：在金寨清秀的山的脚下被雨打得睁不开眼，在苏州冬天的篮球场上淋着雨打篮球。依然会哭，会笑，没有心思麻木，没有失去幽默感。</p>
<p>在网上消费越来越多，交流越来越多，所以越来越依赖与感谢网络，越来越对阻碍信息流动的行为恨之入骨。信息过载症很严重，曾经为此戒网近一个月，只能说有些效果。现在再开药方：一是懂得放弃，不要把自己搞成什么都知道一点的知道分子，；二是提高效率，不要干刷新等更新这种浪费时间的事情，设法多过滤；三是多做深阅读，多读书，多读好文章。</p>
<p>看了约一百部电影（其中进影院约十次），口味依然杂乱，为什么喜欢看电影，大概是因为这种娱乐方式形式简单，但却可以短暂的再造一个世界。提升欣赏品位是一个潜移默化的过程，但如果适当地刻意去做，也很不错。</p>
<p>看了十几本书，买了电纸书后要读完一百本书的计划遥遥无期，也没有刻意想要去达成。在“好读书不求甚解”和“不动笔墨不读书”间摇摆不定。读书一为消遣，一为自我提升，目的性太强会丢失乐趣，太随意又会读了白读。仔细想来，自己并没有好的读书习惯与治学理念，在质和量两个方面都很欠缺。自然，掉到书眼里不是什么好事，但既然对读书还算有所爱好，对自己的不断提升还算有所期许，就得做得透彻一点，花点心思。</p>
<p>写了博客文章约40篇，发了微博约2000条。对自己的文字一度有了经营之心，但还是流于懈怠，可以有诸多借口，但说到底还是懒得思考与交流，这于修身立业都很致命，可能得继续改变自己一个人安逸着活的状态。往内不观己，往外不观人，这样岂不是闭着眼睛过。</p>
<p>以诚待人，以自己的方式待人，似乎也过得去，渐渐明确：即使做不到我行我素，也决不去随波逐流。不善与人交流其实是个大借口，倒是知道自己收不到秋天的果实，因为春天从来不播种，太爱护这样的自己了。用心说话，其实总能沟通。</p>
<p>用一些词语形容这一年：值得感谢，悠闲，不思进取，坦诚。</p>
<p>对接下来一年说几句，不算是计划，会对计划有逆反心理的。</p>
<ul>
<li>
<p>对于爱情，阳光雨露，自然生长</p>
</li>
<li>
<p>对于专业，死灰复燃，旧情复发</p>
</li>
<li>
<p>少上网，上好网</p>
</li>
<li>
<p>多读书，读好书</p>
</li>
<li>
<p>构建自己的学习习惯和治学体系</p>
</li>
<li>
<p>多思考，多成文</p>
</li>
<li>
<p>多交流，继续以诚待人</p>
</li>
<li>
<p>多运动。</p>
</li>
</ul>
]]></content:encoded><category>life</category><category domain="tags">年度总结</category><category domain="tags">反思</category></item><item><title>打假</title><link>https://yifeitao.com/anti-counterfeit/</link><pubDate>Fri, 31 Dec 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/anti-counterfeit/</guid><description>&lt;p&gt;很多节日都是为弱势群体准备的，今天又过节了，难得有这个机会，一年打一次假还是必要的。&lt;/p&gt;
&lt;h3 id="打假艳照"&gt;打“假艳照”&lt;/h3&gt;
&lt;p&gt;对于各种各式艳照门的各位美女，我一向保持着复杂的心情，感激与怜悯并存，且无比鄙视嘴上假模假式骂骂咧咧的人。话说邓丽欣同学我是比较很喜欢的，欣赏她在叶念琛和彭浩翔电影中的表现，得知她爆出激情视频本人是多么的百感交集，我竟然赶在当事人说明之前亲自去鉴定了视频。完全是污蔑嘛！天杀的香港娱乐刊物，你叫我现在是高兴呢还是失望呢，叫我以后怎么面对邓美女……这种找个视频乱冠名的行为实在可耻之极，无论按照传统道德还是淫民道德。&lt;/p&gt;
&lt;h3 id="打假网站"&gt;打“假网站”&lt;/h3&gt;
&lt;p&gt;前不久CCTV新闻说Twitter上有人鄙视奥巴马，我想这是什么网站，这么大胆，敢鄙视帝国老大，遂去上这个网站，发现它根本不存在嘛？同样的情况还出现在各种IT新闻报道中，什么Twitter，Facebook，Youtube之类的，都TM的不存在嘛，骗小孩呢？老子只知道围脖，校内，土豆，我看到这些满嘴跑英文的新闻就来气，中国有这么多好的企业不报道，偏偏爱拽英文，捏造这些不存在的网站实在可耻之极，无论按中国特色还是国际惯例。&lt;/p&gt;
&lt;h3 id="打假日记"&gt;打“假日记”&lt;/h3&gt;
&lt;p&gt;最近我们优秀的烟草行业战士因为一本莫须有的日记被审了，这真是一个悲剧，有谁能证明这本日记的真实性，还是有人可以污蔑我们的领导干部。退一步讲，即使这日记真是我们的韩局长的大作，也只能说他贡献了一部伟大的现实主义作品。日记是隐私，非法取得的证据能作为证据，那么以后领导干部岂不是都不敢写日记了，由此带来的现实主义文学的损失谁能负责。我建议疑罪从无，给韩局长一个机会，也给我们的文学一个未来。韩局长被一本日记送进局子实在可笑之极，无论按照事实标准还是法律标准。&lt;/p&gt;
&lt;h3 id="打假忙碌"&gt;打“假忙碌”&lt;/h3&gt;
&lt;p&gt;最后的大棒留给自己，有句话叫做“我也常常不开QQ，假装自己不在线”，有句话叫做“我也常常收到短信不立即回”，还有句话叫“我也常常换个马甲再上”。子曰：“装忙是蛋疼者最后的庇护所”，子又曰：“亡时补忙，犹未晚也”，子还曰：“装忙装了一千遍，你会相信自己真的没有时间”。信息太多会降低智慧的浓度，即使Chinernet也会给人望洋兴叹的感觉。装忙症和拖延症并发，我想学会过滤与统筹是迫在眉睫了，无论按照培养标准还是自我标准。&lt;/p&gt;</description><content:encoded><![CDATA[<p>很多节日都是为弱势群体准备的，今天又过节了，难得有这个机会，一年打一次假还是必要的。</p>
<h3 id="打假艳照">打“假艳照”</h3>
<p>对于各种各式艳照门的各位美女，我一向保持着复杂的心情，感激与怜悯并存，且无比鄙视嘴上假模假式骂骂咧咧的人。话说邓丽欣同学我是比较很喜欢的，欣赏她在叶念琛和彭浩翔电影中的表现，得知她爆出激情视频本人是多么的百感交集，我竟然赶在当事人说明之前亲自去鉴定了视频。完全是污蔑嘛！天杀的香港娱乐刊物，你叫我现在是高兴呢还是失望呢，叫我以后怎么面对邓美女……这种找个视频乱冠名的行为实在可耻之极，无论按照传统道德还是淫民道德。</p>
<h3 id="打假网站">打“假网站”</h3>
<p>前不久CCTV新闻说Twitter上有人鄙视奥巴马，我想这是什么网站，这么大胆，敢鄙视帝国老大，遂去上这个网站，发现它根本不存在嘛？同样的情况还出现在各种IT新闻报道中，什么Twitter，Facebook，Youtube之类的，都TM的不存在嘛，骗小孩呢？老子只知道围脖，校内，土豆，我看到这些满嘴跑英文的新闻就来气，中国有这么多好的企业不报道，偏偏爱拽英文，捏造这些不存在的网站实在可耻之极，无论按中国特色还是国际惯例。</p>
<h3 id="打假日记">打“假日记”</h3>
<p>最近我们优秀的烟草行业战士因为一本莫须有的日记被审了，这真是一个悲剧，有谁能证明这本日记的真实性，还是有人可以污蔑我们的领导干部。退一步讲，即使这日记真是我们的韩局长的大作，也只能说他贡献了一部伟大的现实主义作品。日记是隐私，非法取得的证据能作为证据，那么以后领导干部岂不是都不敢写日记了，由此带来的现实主义文学的损失谁能负责。我建议疑罪从无，给韩局长一个机会，也给我们的文学一个未来。韩局长被一本日记送进局子实在可笑之极，无论按照事实标准还是法律标准。</p>
<h3 id="打假忙碌">打“假忙碌”</h3>
<p>最后的大棒留给自己，有句话叫做“我也常常不开QQ，假装自己不在线”，有句话叫做“我也常常收到短信不立即回”，还有句话叫“我也常常换个马甲再上”。子曰：“装忙是蛋疼者最后的庇护所”，子又曰：“亡时补忙，犹未晚也”，子还曰：“装忙装了一千遍，你会相信自己真的没有时间”。信息太多会降低智慧的浓度，即使Chinernet也会给人望洋兴叹的感觉。装忙症和拖延症并发，我想学会过滤与统筹是迫在眉睫了，无论按照培养标准还是自我标准。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">社会</category><category domain="tags">打假</category></item><item><title>读书列表2010</title><link>https://yifeitao.com/reading-2010/</link><pubDate>Fri, 31 Dec 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/reading-2010/</guid><description>&lt;h3 id="常识不识庐山真面目"&gt;《常识》：不识庐山真面目&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2010-04-29&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;什么是常识呢？众人皆知？不证自明？但真正界定什么是常识估计是个无法完成的任务。&lt;/p&gt;
&lt;p&gt;除去本能，人的认识是习而得之的，由于个体差异，环境差异，最终形成的认识也是迥异的。&lt;/p&gt;
&lt;p&gt;接近真相真理的道路千差万别，但依然是有可能殊途同归的，但这个过程需要求索。&lt;/p&gt;
&lt;p&gt;之所以需要求索，是因为遮蔽物太多，这些遮蔽有客观造成的，但更可怕的是人为造成的。谎言的重复灌输，模式的反复训练。用的依然是自己的思维，但路线却是他人所期望的。&lt;/p&gt;
&lt;p&gt;梁文道所讨论的《常识》，非生而知之。可贵之处在于：一个香港人，一个佛教徒，用平和之心拨开云雾，展现他眼中的庐山真面目。&lt;/p&gt;
&lt;p&gt;俗话说“就事论事”，却是知易行难的。看待问题，往往先预设立场，再找材料佐证自己的观点，这还算好的，更可怕的是只有观点与立场。于是可以听见无数聒噪之声，但无非都是口号而已，口号固然看似有力量，但实则无聊。&lt;/p&gt;
&lt;p&gt;常识之可贵，或许在于其不成体系，若认识成了体系，就成了理论，凡是理论皆有其缺陷，但对待批评往往又负隅顽抗。&lt;/p&gt;
&lt;p&gt;我见过一种人，看似未受过什么教育，但看问题却常常一针见血，这就是保有了独立思考窥见真理的能力吧。而有的人，在自己设定的观点里越陷越深；有的人，被各种思想跑马，终究是没有想法。&lt;/p&gt;
&lt;p&gt;梁文道所言的“常识”，未必就是真的常识，但这种平和分析的能力与修养，却是值得学习的。&lt;/p&gt;
&lt;h3 id="阿基米德羊皮书科学的血脉"&gt;《阿基米德羊皮书》：科学的血脉&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2010-03-12&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;人类在生物学意义上的进化似乎有停滞的迹象，而在文化上的进化却时刻未曾停止，虽然我们处在一个信息爆炸的年代，但是称得上智慧的却罕有，继承的依然是公 元前先哲的思想。&lt;/p&gt;
&lt;p&gt;而中国在科学这个重要的领域，无论我们如何意淫，都不得不承认成就有限，我们理工科人每日面对的的依然是阿基米德及其徒子徒孙的理论。你要想 深刻理解科学，就要了解它的血脉，向阿基米德朝圣。&lt;/p&gt;
&lt;p&gt;在本书中，甚至出现了日本专家。而中国人，最喜欢的可能只是关于阿基米德的不靠谱的传说，正如民主一样，科学在中国也是被异化的。&lt;/p&gt;
&lt;p&gt;本书令我震撼的除了阿基米德的思想深度甚至超越牛顿外，就是该研究计划涉及的学科之多。&lt;/p&gt;
&lt;p&gt;最后，对保证了基本质量的译者致以敬意，这样的书不是那么好翻译的。&lt;/p&gt;
&lt;p&gt;“阿基米德羊皮卷”是一部遭受蹂躏却侥幸得以保存的抄本，有不少是孤本的阿基米德论文。该计划的官方网站：http://www.archimedespalimpsest.org/&lt;/p&gt;
&lt;h3 id="一九八四什么故事最恐怖"&gt;《一九八四》：什么故事最恐怖？&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2010-03-11&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;我不是一个喜欢恐怖故事的人，这源自儿时的糟糕经历，一部现在看来不乏喜感的港产鬼片，当时将我折磨得彻夜难眠，自此埋下祸根。&lt;/p&gt;
&lt;p&gt;哈利波特的魔法学校里有个恐怖箱，能幻化出你心中害怕的形象来，如果真有这样一件魔物，我倒是愿意一试，因为或许现在的我害怕的不再是僵尸、 女鬼等这些恐怖故事中的具象，我想对自己的恐惧一堵究竟。&lt;/p&gt;
&lt;p&gt;我现在也很少看恐怖电影，但不代表我仍热有多害怕，至少在看过之后，我能安然入梦。因为我知道，那些不过是影像加音乐的心理魔术，纵然看不 透，也不妨碍我简单粗暴的无视它。&lt;/p&gt;
&lt;p&gt;可是当恐怖故事的情节渗透到你的生活中时，你不免会后背发凉，这不是简单的电梯遇到鬼的情景复现，因为毕竟正常心智的人都没有复现过。&lt;/p&gt;
&lt;p&gt;但是我们都不难复现以下这些：亡我之心不死，伟光正，绿坝，春晚，连接被重置，备案，全票通过，反低俗，南方周末，中国特色，喝茶，广电总 局，新华社,稳定……&lt;/p&gt;
&lt;p&gt;于是乎，在一个春节假日坐在电暖炉旁的我彻骨深寒。&lt;/p&gt;
&lt;p&gt;“让我们在看不见黑暗的地方相见“这句话鼓舞着我把《1984》读完，最后给我的却是超越悲剧感的恐怖感。如何至少给子孙后代一个没有电幕的 未来，我感到无力，害怕沉沦。&lt;/p&gt;
&lt;p&gt;小说中没有希望，或许现实中依然是有的，但愿这种想法不是自慰。&lt;/p&gt;</description><content:encoded><![CDATA[<h3 id="常识不识庐山真面目">《常识》：不识庐山真面目</h3>
<p><em>2010-04-29</em></p>
<p>什么是常识呢？众人皆知？不证自明？但真正界定什么是常识估计是个无法完成的任务。</p>
<p>除去本能，人的认识是习而得之的，由于个体差异，环境差异，最终形成的认识也是迥异的。</p>
<p>接近真相真理的道路千差万别，但依然是有可能殊途同归的，但这个过程需要求索。</p>
<p>之所以需要求索，是因为遮蔽物太多，这些遮蔽有客观造成的，但更可怕的是人为造成的。谎言的重复灌输，模式的反复训练。用的依然是自己的思维，但路线却是他人所期望的。</p>
<p>梁文道所讨论的《常识》，非生而知之。可贵之处在于：一个香港人，一个佛教徒，用平和之心拨开云雾，展现他眼中的庐山真面目。</p>
<p>俗话说“就事论事”，却是知易行难的。看待问题，往往先预设立场，再找材料佐证自己的观点，这还算好的，更可怕的是只有观点与立场。于是可以听见无数聒噪之声，但无非都是口号而已，口号固然看似有力量，但实则无聊。</p>
<p>常识之可贵，或许在于其不成体系，若认识成了体系，就成了理论，凡是理论皆有其缺陷，但对待批评往往又负隅顽抗。</p>
<p>我见过一种人，看似未受过什么教育，但看问题却常常一针见血，这就是保有了独立思考窥见真理的能力吧。而有的人，在自己设定的观点里越陷越深；有的人，被各种思想跑马，终究是没有想法。</p>
<p>梁文道所言的“常识”，未必就是真的常识，但这种平和分析的能力与修养，却是值得学习的。</p>
<h3 id="阿基米德羊皮书科学的血脉">《阿基米德羊皮书》：科学的血脉</h3>
<p><em>2010-03-12</em></p>
<p>人类在生物学意义上的进化似乎有停滞的迹象，而在文化上的进化却时刻未曾停止，虽然我们处在一个信息爆炸的年代，但是称得上智慧的却罕有，继承的依然是公 元前先哲的思想。</p>
<p>而中国在科学这个重要的领域，无论我们如何意淫，都不得不承认成就有限，我们理工科人每日面对的的依然是阿基米德及其徒子徒孙的理论。你要想 深刻理解科学，就要了解它的血脉，向阿基米德朝圣。</p>
<p>在本书中，甚至出现了日本专家。而中国人，最喜欢的可能只是关于阿基米德的不靠谱的传说，正如民主一样，科学在中国也是被异化的。</p>
<p>本书令我震撼的除了阿基米德的思想深度甚至超越牛顿外，就是该研究计划涉及的学科之多。</p>
<p>最后，对保证了基本质量的译者致以敬意，这样的书不是那么好翻译的。</p>
<p>“阿基米德羊皮卷”是一部遭受蹂躏却侥幸得以保存的抄本，有不少是孤本的阿基米德论文。该计划的官方网站：http://www.archimedespalimpsest.org/</p>
<h3 id="一九八四什么故事最恐怖">《一九八四》：什么故事最恐怖？</h3>
<p><em>2010-03-11</em></p>
<p>我不是一个喜欢恐怖故事的人，这源自儿时的糟糕经历，一部现在看来不乏喜感的港产鬼片，当时将我折磨得彻夜难眠，自此埋下祸根。</p>
<p>哈利波特的魔法学校里有个恐怖箱，能幻化出你心中害怕的形象来，如果真有这样一件魔物，我倒是愿意一试，因为或许现在的我害怕的不再是僵尸、 女鬼等这些恐怖故事中的具象，我想对自己的恐惧一堵究竟。</p>
<p>我现在也很少看恐怖电影，但不代表我仍热有多害怕，至少在看过之后，我能安然入梦。因为我知道，那些不过是影像加音乐的心理魔术，纵然看不 透，也不妨碍我简单粗暴的无视它。</p>
<p>可是当恐怖故事的情节渗透到你的生活中时，你不免会后背发凉，这不是简单的电梯遇到鬼的情景复现，因为毕竟正常心智的人都没有复现过。</p>
<p>但是我们都不难复现以下这些：亡我之心不死，伟光正，绿坝，春晚，连接被重置，备案，全票通过，反低俗，南方周末，中国特色，喝茶，广电总 局，新华社,稳定……</p>
<p>于是乎，在一个春节假日坐在电暖炉旁的我彻骨深寒。</p>
<p>“让我们在看不见黑暗的地方相见“这句话鼓舞着我把《1984》读完，最后给我的却是超越悲剧感的恐怖感。如何至少给子孙后代一个没有电幕的 未来，我感到无力，害怕沉沦。</p>
<p>小说中没有希望，或许现实中依然是有的，但愿这种想法不是自慰。</p>
]]></content:encoded><category>reading</category><category domain="tags">读书</category><category domain="tags">总结</category></item><item><title>观影列表2010</title><link>https://yifeitao.com/movies-2010/</link><pubDate>Fri, 31 Dec 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/movies-2010/</guid><description>&lt;h3 id="美好人生原来我还愿意相信童话"&gt;《美好人生》：原来我还愿意相信童话&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2010年1月21日 合肥&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;是什么时候开始，我开始喜欢把这世界看得灰暗，即使看一部电影，也带着戏谑的心理。《美好人生》，我对这样的片名不怀好意，我以完成任务的态度打开视频，因为我决定要看完IMDB TOP100。&lt;/p&gt;
&lt;p&gt;我一边有一搭没一搭的看帖子，一边看视频。看主人公倒霉的一辈子和他偶尔的闪光，“我要去环游世界”，难道《UP》里发的春梦也是由此而来。很多人都想过环游世界，但却终于停在某处一晃一辈子，青春不再则时间搭上光速而相对变快，因为无聊。&lt;/p&gt;
&lt;p&gt;主人公半辈子都在无良资本家的威胁下帮助他人，压抑着自己，选择已经是选择，你无法估量后悔会有什么变化。8000美元压垮了主人公，他半辈子受的窝囊气让他去跳桥了。万能的导演派天使，让观众和主人公一起看主人公不存在的世界，地球依然在转，但却少了很多美好，那些称不上伟大的闪光点原来也会有蝴蝶效应。&lt;/p&gt;
&lt;p&gt;即使如此，我依然在愤恨。然而主人公显然没有我洒脱，他要求恢复一切。毕竟他感受到了自己的不小的成就，即使回到现实可能要去蹲监狱。我看到他疯狂亲着自己的孩子和妻子，一种劫后余生的感觉。然后我看到那些他帮助过的人们伸出了援手，我看到了一筐的钱。突然，一直置身事外的我流泪了。&lt;/p&gt;
&lt;p&gt;有的人可以为自己而活，有的人为别人而活，要么活在自己的记忆里，要么活在别人的记忆里。只是不能没有记忆。不敢付出真心对待世界，不是因为麻木，而是因为胆怯。胆怯太久或许就麻木了吧。&lt;/p&gt;
&lt;p&gt;感谢1946年的好莱坞电影，有清怀的好电影永远不过时。看完电影，出门吃饭，发现上午的下的雪完全不见了，它们是否来过这个世界，我恍惚了，也许只有花草树木知道吧。&lt;/p&gt;
&lt;h3 id="太平洋1-4"&gt;《太平洋》（1-4）&lt;/h3&gt;
&lt;p&gt;【1】无趣的紧张&lt;/p&gt;
&lt;p&gt;正如这个制作班底的上一步作品《兄弟连》，《太平洋》给人的第一观感也是无趣的紧张，但这正是我喜欢它的地方。战争片很容易有两种我不太喜欢的倾向。&lt;/p&gt;
&lt;p&gt;其一是庸俗化，如国内的某些战争片（尤其是描写抗日战争的），作为战争的另一方，日本人被彻底道具化乃至小丑化，令你不禁疑问，如此低能的对手如何折磨了我们14年。这样的战争片及其文化培养基只能产生弱智的口头爱国主义者，不能让人产生任何反思，反思我们的国家如何陷入了挨打的局面，反思战争的巨大危害，忘记历史的不单单是日本人，更是我们中国人，至少我直到今天还没看到一部现实主义的描写抗日战争的作品。庸俗化的战争片散布的低层次的仇恨和对战争残酷性的娱乐性解构。《地雷战》等或许是合格的儿童片，但如何撑得起一个民族的记忆与思考。&lt;/p&gt;
&lt;p&gt;其二是美化，这种现象在国内的战争片中有，在美国的战争片中也不少，过分浸染成王败寇的历史观，渲染英雄主义。塑造出一个个英雄人物的时候，很容易让人忽略“一将功成万骨枯”的事实。当然不排除有很多喜欢暴力美学，其实我也喜欢，或许这是一种无法克服的动物本能？但r如果描写真实战争的影片出现暴力美学，我却是无法接受的。日本动漫人物绯村剑心说，如果我们赢了就简单的认为我们是对的，那么我们的逻辑和敌人是没有任何区别的。我相信一部好的战争片必然是反战的，正如一个真正的军人不能是好战的。&lt;/p&gt;
&lt;p&gt;说了这么多与本片无关的话，，是想说本片尚未发现这两种趋势，我预料到看完这部剧将会有一些心理上的煎熬，好在它似乎是一周一集的。&lt;/p&gt;
&lt;p&gt;【2】荒诞的荣耀&lt;/p&gt;
&lt;p&gt;看完两集，我依然记不住剧中人谁是谁，但这似乎并不重要。如果抛开一切背景知识，这段故事其实充满一种荒诞感，一群人来到一个曾经不知名的小岛，向猛冲过来的敌人进行机枪扫射，看着战友死去，然后离开。&lt;/p&gt;
&lt;p&gt;“I try not to think.”——生命如草芥之时，或许唯有麻木能能保存人的游魂。&lt;/p&gt;
&lt;p&gt;“I don&amp;rsquo;t want to look in your eyes someday,and see no spark,no love no life.”——然而人们还是要以正义的名义投入这泯灭人性火花的屠场。&lt;/p&gt;
&lt;p&gt;“You‘re heros back home.”——当这句台词出现时，我眼角湿润了，经过人性授权的反人性坚持终于获得了荣耀，可是战争固有的荒诞感却如影随形，毕竟这个荣耀是踩在尸体堆上的。&lt;/p&gt;
&lt;p&gt;我们永远不能忘记战争，不是为了仇恨，甚至也不是为了荣耀，而是为了记住它的荒诞。&lt;/p&gt;
&lt;p&gt;【3】鱼水欢&lt;/p&gt;
&lt;p&gt;美国大兵和澳大利亚美眉军民鱼水一家亲。本集对想看子弹飞的观众堪称注水牛肉。只是想到国产影视剧中的“军民鱼水一家亲”，对比起来看颇为有趣。说起来还是老美的鱼水比较名副其实。&lt;/p&gt;
&lt;p&gt;某种程度说Leckie算是幸运的，被甩了，然后心安理得的跑路。这比什么海誓山盟还杀人，谁知道你哪天就吃子弹了？战争是善于扭曲各种情感的。&lt;/p&gt;
&lt;p&gt;【4】狗熊悲&lt;/p&gt;
&lt;p&gt;第四集在国内的“主流”观念来看，简直是颓废至极，有自杀的，有小便失禁的，还有偷了飞机想回家的…… 杀了几个自杀攻击的鬼子后，大兵们一直在淋雨。为毛要打仗？为毛要在这鬼地方淋雨？英雄都是逼出来的，狗熊倒好像是天生的。&lt;/p&gt;
&lt;p&gt;我常常想，让论坛上爱叫唤灭这个灭那个的人上一次屠场，是英雄多还是狗熊多呢？&lt;/p&gt;
&lt;h3 id="叶问2揍他揍他"&gt;《叶问2》:揍他！揍他！&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2010年4月28日 合肥&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;我很少看到看电影的观众群情激昂的鼓掌，但其实我很少进影院看电影，所以这也没有说明什么问题。公平的说，《叶问2》延续了前作的优良品质，值回票价，而且不会有一分钟的难熬。这实属难得，目前而言。除非你带着厚厚的防护层，否则肯定会和片中的围观群众一样，希望叶问或者甄子丹揍翻那个欠揍的洋鬼子。&lt;/p&gt;
&lt;p&gt;有些人会考虑得深远一些，担忧电影贩卖的民族主义。甄子丹当年的电视剧《精武门》看得我是热血沸腾，虽然自己手无缚鸡之力，但往往发出甄子丹 式的怪叫，后来我知道这是来自李小龙的。其实《叶问》算是港片的一次复古了。&lt;/p&gt;
&lt;p&gt;也许每个人都是有揍人的冲动的，每天受很多无名气，说很多违心话，陪很多假笑脸，可是一为生计而为文明，揍他不是我们的可选项，所以 《Fight Club》才成为经典电影。我们夹杂着民族主义情绪看叶问把人揍得惨兮兮的，然后再接受叶问的教育：人地位有高低，但人格无贵贱，我们应该懂得互相尊重。&lt;/p&gt;
&lt;p&gt;叶问说这话时，影片中的围观群众掌声雷动，包括外国人。但影院内却没了反映，大家的激情在甄哥揍人时估计消耗殆尽了。我不知道有多少人因为叶问揍的是洋人而激动，反正我是觉得影片中的那个洋鬼子无论是什么民族的都明显欠揍，所以揍他，揍他，就像替我揍了那些 欠揍的人一样。看得我比较的爽。我不知道导演是否耍了心机让我们掉进民族主义的陷阱，如果有人要上当，那不能算是导演的错。你要因此觉得中国武术天下无敌，那也不能算是导演 的错。&lt;/p&gt;
&lt;p&gt;揍他，管他是谁，因为他欠揍！至于揍人这件事的伟大意义，那是拿剪刀的人考虑的事，不该我操心了。唯一对自己感到欣慰的事，自己没有看完电影想找个外国人来揍一揍。&lt;/p&gt;
&lt;h3 id="六楼后座妈妈的海阔天空"&gt;《六楼后座》：妈妈的海阔天空&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2010年5月8日 合肥&lt;/em&gt;
一部香港青春励志片，轻轻松松看到一半。 突然听到了很打动人的一版女声《海阔天空》。 这位客串演出的杜丽莎来头不小，据说指导过香港很多明星唱歌。 这部电影顿时牛逼闪闪起来。可惜的是据说这是女导演黄真真第一部也是最好的一部电影，而后每况愈下。 还有卢巧音和林嘉欣的优秀演出，值得一记。林嘉欣其实也是闪闪发亮的一个人啊，不过似乎接的片子也是每况愈下。 “True or Dare”的游戏贯穿影片，真诚与勇气的尝试。 四星推荐。&lt;/p&gt;</description><content:encoded><![CDATA[<h3 id="美好人生原来我还愿意相信童话">《美好人生》：原来我还愿意相信童话</h3>
<p><em>2010年1月21日 合肥</em></p>
<p>是什么时候开始，我开始喜欢把这世界看得灰暗，即使看一部电影，也带着戏谑的心理。《美好人生》，我对这样的片名不怀好意，我以完成任务的态度打开视频，因为我决定要看完IMDB TOP100。</p>
<p>我一边有一搭没一搭的看帖子，一边看视频。看主人公倒霉的一辈子和他偶尔的闪光，“我要去环游世界”，难道《UP》里发的春梦也是由此而来。很多人都想过环游世界，但却终于停在某处一晃一辈子，青春不再则时间搭上光速而相对变快，因为无聊。</p>
<p>主人公半辈子都在无良资本家的威胁下帮助他人，压抑着自己，选择已经是选择，你无法估量后悔会有什么变化。8000美元压垮了主人公，他半辈子受的窝囊气让他去跳桥了。万能的导演派天使，让观众和主人公一起看主人公不存在的世界，地球依然在转，但却少了很多美好，那些称不上伟大的闪光点原来也会有蝴蝶效应。</p>
<p>即使如此，我依然在愤恨。然而主人公显然没有我洒脱，他要求恢复一切。毕竟他感受到了自己的不小的成就，即使回到现实可能要去蹲监狱。我看到他疯狂亲着自己的孩子和妻子，一种劫后余生的感觉。然后我看到那些他帮助过的人们伸出了援手，我看到了一筐的钱。突然，一直置身事外的我流泪了。</p>
<p>有的人可以为自己而活，有的人为别人而活，要么活在自己的记忆里，要么活在别人的记忆里。只是不能没有记忆。不敢付出真心对待世界，不是因为麻木，而是因为胆怯。胆怯太久或许就麻木了吧。</p>
<p>感谢1946年的好莱坞电影，有清怀的好电影永远不过时。看完电影，出门吃饭，发现上午的下的雪完全不见了，它们是否来过这个世界，我恍惚了，也许只有花草树木知道吧。</p>
<h3 id="太平洋1-4">《太平洋》（1-4）</h3>
<p>【1】无趣的紧张</p>
<p>正如这个制作班底的上一步作品《兄弟连》，《太平洋》给人的第一观感也是无趣的紧张，但这正是我喜欢它的地方。战争片很容易有两种我不太喜欢的倾向。</p>
<p>其一是庸俗化，如国内的某些战争片（尤其是描写抗日战争的），作为战争的另一方，日本人被彻底道具化乃至小丑化，令你不禁疑问，如此低能的对手如何折磨了我们14年。这样的战争片及其文化培养基只能产生弱智的口头爱国主义者，不能让人产生任何反思，反思我们的国家如何陷入了挨打的局面，反思战争的巨大危害，忘记历史的不单单是日本人，更是我们中国人，至少我直到今天还没看到一部现实主义的描写抗日战争的作品。庸俗化的战争片散布的低层次的仇恨和对战争残酷性的娱乐性解构。《地雷战》等或许是合格的儿童片，但如何撑得起一个民族的记忆与思考。</p>
<p>其二是美化，这种现象在国内的战争片中有，在美国的战争片中也不少，过分浸染成王败寇的历史观，渲染英雄主义。塑造出一个个英雄人物的时候，很容易让人忽略“一将功成万骨枯”的事实。当然不排除有很多喜欢暴力美学，其实我也喜欢，或许这是一种无法克服的动物本能？但r如果描写真实战争的影片出现暴力美学，我却是无法接受的。日本动漫人物绯村剑心说，如果我们赢了就简单的认为我们是对的，那么我们的逻辑和敌人是没有任何区别的。我相信一部好的战争片必然是反战的，正如一个真正的军人不能是好战的。</p>
<p>说了这么多与本片无关的话，，是想说本片尚未发现这两种趋势，我预料到看完这部剧将会有一些心理上的煎熬，好在它似乎是一周一集的。</p>
<p>【2】荒诞的荣耀</p>
<p>看完两集，我依然记不住剧中人谁是谁，但这似乎并不重要。如果抛开一切背景知识，这段故事其实充满一种荒诞感，一群人来到一个曾经不知名的小岛，向猛冲过来的敌人进行机枪扫射，看着战友死去，然后离开。</p>
<p>“I try not to think.”——生命如草芥之时，或许唯有麻木能能保存人的游魂。</p>
<p>“I don&rsquo;t want to look in your eyes someday,and see no spark,no love no life.”——然而人们还是要以正义的名义投入这泯灭人性火花的屠场。</p>
<p>“You‘re heros back home.”——当这句台词出现时，我眼角湿润了，经过人性授权的反人性坚持终于获得了荣耀，可是战争固有的荒诞感却如影随形，毕竟这个荣耀是踩在尸体堆上的。</p>
<p>我们永远不能忘记战争，不是为了仇恨，甚至也不是为了荣耀，而是为了记住它的荒诞。</p>
<p>【3】鱼水欢</p>
<p>美国大兵和澳大利亚美眉军民鱼水一家亲。本集对想看子弹飞的观众堪称注水牛肉。只是想到国产影视剧中的“军民鱼水一家亲”，对比起来看颇为有趣。说起来还是老美的鱼水比较名副其实。</p>
<p>某种程度说Leckie算是幸运的，被甩了，然后心安理得的跑路。这比什么海誓山盟还杀人，谁知道你哪天就吃子弹了？战争是善于扭曲各种情感的。</p>
<p>【4】狗熊悲</p>
<p>第四集在国内的“主流”观念来看，简直是颓废至极，有自杀的，有小便失禁的，还有偷了飞机想回家的…… 杀了几个自杀攻击的鬼子后，大兵们一直在淋雨。为毛要打仗？为毛要在这鬼地方淋雨？英雄都是逼出来的，狗熊倒好像是天生的。</p>
<p>我常常想，让论坛上爱叫唤灭这个灭那个的人上一次屠场，是英雄多还是狗熊多呢？</p>
<h3 id="叶问2揍他揍他">《叶问2》:揍他！揍他！</h3>
<p><em>2010年4月28日 合肥</em></p>
<p>我很少看到看电影的观众群情激昂的鼓掌，但其实我很少进影院看电影，所以这也没有说明什么问题。公平的说，《叶问2》延续了前作的优良品质，值回票价，而且不会有一分钟的难熬。这实属难得，目前而言。除非你带着厚厚的防护层，否则肯定会和片中的围观群众一样，希望叶问或者甄子丹揍翻那个欠揍的洋鬼子。</p>
<p>有些人会考虑得深远一些，担忧电影贩卖的民族主义。甄子丹当年的电视剧《精武门》看得我是热血沸腾，虽然自己手无缚鸡之力，但往往发出甄子丹 式的怪叫，后来我知道这是来自李小龙的。其实《叶问》算是港片的一次复古了。</p>
<p>也许每个人都是有揍人的冲动的，每天受很多无名气，说很多违心话，陪很多假笑脸，可是一为生计而为文明，揍他不是我们的可选项，所以 《Fight Club》才成为经典电影。我们夹杂着民族主义情绪看叶问把人揍得惨兮兮的，然后再接受叶问的教育：人地位有高低，但人格无贵贱，我们应该懂得互相尊重。</p>
<p>叶问说这话时，影片中的围观群众掌声雷动，包括外国人。但影院内却没了反映，大家的激情在甄哥揍人时估计消耗殆尽了。我不知道有多少人因为叶问揍的是洋人而激动，反正我是觉得影片中的那个洋鬼子无论是什么民族的都明显欠揍，所以揍他，揍他，就像替我揍了那些 欠揍的人一样。看得我比较的爽。我不知道导演是否耍了心机让我们掉进民族主义的陷阱，如果有人要上当，那不能算是导演的错。你要因此觉得中国武术天下无敌，那也不能算是导演 的错。</p>
<p>揍他，管他是谁，因为他欠揍！至于揍人这件事的伟大意义，那是拿剪刀的人考虑的事，不该我操心了。唯一对自己感到欣慰的事，自己没有看完电影想找个外国人来揍一揍。</p>
<h3 id="六楼后座妈妈的海阔天空">《六楼后座》：妈妈的海阔天空</h3>
<p><em>2010年5月8日 合肥</em>
一部香港青春励志片，轻轻松松看到一半。 突然听到了很打动人的一版女声《海阔天空》。 这位客串演出的杜丽莎来头不小，据说指导过香港很多明星唱歌。 这部电影顿时牛逼闪闪起来。可惜的是据说这是女导演黄真真第一部也是最好的一部电影，而后每况愈下。 还有卢巧音和林嘉欣的优秀演出，值得一记。林嘉欣其实也是闪闪发亮的一个人啊，不过似乎接的片子也是每况愈下。 “True or Dare”的游戏贯穿影片，真诚与勇气的尝试。 四星推荐。</p>
<p><a href="http://www.tudou.com/programs/view/gqwj7SUNJEk/"
   rel="noopener noreferrer" target="_blank" class="external">http://www.tudou.com/programs/view/gqwj7SUNJEk/</a>
</p>
<h3 id="痞子英雄">《痞子英雄》</h3>
<p><em>2010年7月18日 合肥</em></p>
<p>娱乐新闻中看到陈意涵凭《听说》中的无台词表演获台北电影节最佳女主角，在台上语无伦次，被萌到。遂想翻个她的作品出来看看，似乎去年的作品《痞子英雄》是让她在台湾走红的作品，于是荡了一集下来，没想到竟然一鼓作气把24集给看完了。</p>
<p>士别三日，当刮目相看。在我的印象中，台剧的水平是比韩剧还次一等级的水货。但是《痞子英雄》看下来，虽然算不上什么经典的作品，但不得不说在戏剧感与现实感上都甩出很多大陆作品一大截。 细究起来剧情有很瞎的成分在，但借由一个案件来表现台湾政治，探讨正义光影，题材的大胆，场面的火爆，完全超过了我对台剧的预期。剧中说，最深的黑暗，往往来自最光明的地方。固然是典型的阴谋论说法，但有阴谋论说明还有自省力，所以美国的阴谋论作品是最多的，连911也有人怀疑是导演的。《痞子英雄》隐射竹联帮，直接开涮“总统”和“国会议长”，作为一个大陆人实在难以想象。基于此，可以给出五星推荐，女生可以看帅哥，男生可以看枪战，大家一起看阴谋。</p>
<h3 id="狗镇">《狗镇》</h3>
<p><em>2010年8月2日 合肥</em></p>
<p>1 女主角妮可基德曼 丹麦导演Lars von Trier 舞台剧</p>
<p>2 收留（伪善）生隙（本性）虐待（罪恶）毁灭（裁决）</p>
<p>3 勿作剧情片理解，形同寓言、宗教故事。</p>
<p>4 傲慢：高人一等的道德标准，怜悯世人，宽容一切。孟子批杨墨，认为“杨近墨远”，大抵如此。人非神，无私有时比怀私更可怕。</p>
<p>5 耶稣被钉上了十字架，但Grace却屠村让这个世界更加美好。西方人的任何思辨果然都逃不脱《圣经》。你愿意伸出左脸么？</p>
<p>6 施舍心态：施舍者自认为在施舍，理所当然要得到相应的回报，如再核算称量，则善恶一层纸。要警惕时刻让别人感恩戴德的人。</p>
<p>7 无法正视内心的恶，而时刻以伪善掩盖，是饮鸠止渴。不当恶魔，但也不要装折翼天使。</p>
<p>8 被社会贴上低等标签的人被肆意践踏，成为共识与常态，“大家都如此”会稀释罪恶感。集体罪恶往往缺乏反省：“都是社会的错，没有我的责任。”</p>
<p>9 脱离实际生活，只沉迷于在文字的幻境中求索，可能自我感觉良好，再直面惨淡现实则”百无一用是书生“。</p>
<p>10 现实多少有些”狗镇“的影子，我们多少是在”同流合污“。若发现这一点会悲从中来。</p>
<p>11 但电影的归电影，触动过后，还是该养自己的浩然之气。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">观影</category></item><item><title>流水账2010年</title><link>https://yifeitao.com/diary-2010/</link><pubDate>Fri, 31 Dec 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/diary-2010/</guid><description>&lt;p&gt;【2011按】美好的一年&lt;/p&gt;
&lt;h3 id="笔记本锁解锁记"&gt;笔记本锁解锁记&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2010 年 01 月 22 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;当我准备回老家闭关时，才发现笔记本已经锁了一学期没挪窝了。 作为一台笔记本，它有良好的移动性能，跟上我算是屈才了。&lt;/p&gt;
&lt;p&gt;这是一把价值十元的密码锁，丢人的事情发生了，我忘记密码了，这似乎是平生第一次，我向来喜欢设置看起来毫无道理，实则颇有含义的密码，然而这个四位阿拉伯数字我是怎么也想不起来了。&lt;/p&gt;
&lt;p&gt;在试验了十来组数字之后，我的心态彻底变成一个小偷，想着如何解决这把锁，偷到自己的电脑。 我几乎因为这个想法而兴奋了，做贼的快感可是一种奢侈的享受……&lt;/p&gt;
&lt;p&gt;我先是想做一个有点技术含量的贼，查遍万能的网，找到一个神帖：顶上那个设置按钮，旋转密码通过手感确认位置。说得跟电影里一样，那小子不是买了个水货锁就是他有当大盗的天分。&lt;/p&gt;
&lt;p&gt;我用十分钟的耐心宣告了自己的失败，然后英雄属性由智力型变成了力量型，我要爆破。 我想用电钻钻，用火烧，用钳子剪，那不过是幻想，我没有这些专业工具啊。 然后，我一着急，就把锁线的接头给扯开了。 我的十块钱的锁是报废了啊。&lt;/p&gt;
&lt;p&gt;我无力的旋动着密码，想着回家拿电钻干掉它。 然后我无聊的按了一下按钮，这时候，锁开了。&lt;/p&gt;
&lt;p&gt;法克&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;XMR 2010-01-23 12:5
同学,你太幽默
DZ 2010-01-23 13:0
我以前就不转秘密，直接按一下就能打开。那锁就是给想顺手牵羊的人看看的&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="多普达s1拆机小记"&gt;多普达S1拆机小记&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2010 年 03 月 09 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;在家过年的时候把小S摔了N次，当时都没事，但再经过某次摩托车的颠簸，终于无可奈何花落去，花屏了，当地修手机的熟人看了说是还要买屏，不知几百大洋，遂作罢。&lt;/p&gt;
&lt;p&gt;上52dopod论坛逛了一圈，看到无数人被“奸修”迫害过，在拆机贴 的鼓舞下决心自己换屏幕，顺带把外壳从黑色换成红色。&lt;/p&gt;
&lt;p&gt;淘宝买屏幕和外壳以及拆机工具，下单两个，合计约200大洋。&lt;/p&gt;
&lt;p&gt;我拆拆拆，过程参考52dopod上的教程，不必赘述，只说说出的问题。&lt;/p&gt;
&lt;p&gt;1，液晶屏排线没有完全插入，导致机器点不亮，虚惊加重复一次。&lt;/p&gt;
&lt;p&gt;2，新外壳疑为山寨，电源按键弹性不足，换上旧的，重复一次。&lt;/p&gt;
&lt;p&gt;3，忘记装前版的喇叭，通话没声音，虚惊加重复一次。&lt;/p&gt;
&lt;p&gt;4，其间看着一个个小部件无法分离或合拢，却又无处着力，发愁N次。&lt;/p&gt;
&lt;p&gt;5，搞定后太忘形，把存储卡塞到SIM卡槽，出去买针一次。&lt;/p&gt;
&lt;p&gt;5，其间停电一次，去开会一次，从卸开后板到再次成功打出电话，绵延约七个小时。&lt;/p&gt;
&lt;p&gt;好事多磨&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论
老
2010 年 03 月 09
折腾很有乐趣的吧..&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="墙的促销流水账"&gt;墙的促销流水账&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2010 年 03 月 20 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;话说某日发现本Blog死都上不了，顿时怀疑用的Byet免费空间不靠谱了，但是发现后台能轻松的上去。遂戴Tor再上，一切OK，看来是共享ip下的某个网站犯了戒，殃及无辜的我。这不是第一次了，估计也不是最后一次。 于是头脑发热，买了Ixwebhosting的两年Expert型Linux主机，获得附赠域名一个。 换了主机，今天DNS解析才稳定下来，遂记一文，以彰墙为米国空间服务商做出的巨大贡献。&lt;/p&gt;</description><content:encoded><![CDATA[<p>【2011按】美好的一年</p>
<h3 id="笔记本锁解锁记">笔记本锁解锁记</h3>
<p><em>发表于 2010 年 01 月 22 日</em></p>
<p>当我准备回老家闭关时，才发现笔记本已经锁了一学期没挪窝了。 作为一台笔记本，它有良好的移动性能，跟上我算是屈才了。</p>
<p>这是一把价值十元的密码锁，丢人的事情发生了，我忘记密码了，这似乎是平生第一次，我向来喜欢设置看起来毫无道理，实则颇有含义的密码，然而这个四位阿拉伯数字我是怎么也想不起来了。</p>
<p>在试验了十来组数字之后，我的心态彻底变成一个小偷，想着如何解决这把锁，偷到自己的电脑。 我几乎因为这个想法而兴奋了，做贼的快感可是一种奢侈的享受……</p>
<p>我先是想做一个有点技术含量的贼，查遍万能的网，找到一个神帖：顶上那个设置按钮，旋转密码通过手感确认位置。说得跟电影里一样，那小子不是买了个水货锁就是他有当大盗的天分。</p>
<p>我用十分钟的耐心宣告了自己的失败，然后英雄属性由智力型变成了力量型，我要爆破。 我想用电钻钻，用火烧，用钳子剪，那不过是幻想，我没有这些专业工具啊。 然后，我一着急，就把锁线的接头给扯开了。 我的十块钱的锁是报废了啊。</p>
<p>我无力的旋动着密码，想着回家拿电钻干掉它。 然后我无聊的按了一下按钮，这时候，锁开了。</p>
<p>法克</p>
<blockquote>
<p>评论</p>
</blockquote>
<blockquote>
<p>XMR 2010-01-23 12:5
同学,你太幽默
DZ 2010-01-23 13:0
我以前就不转秘密，直接按一下就能打开。那锁就是给想顺手牵羊的人看看的</p>
</blockquote>
<h3 id="多普达s1拆机小记">多普达S1拆机小记</h3>
<p><em>发表于 2010 年 03 月 09 日</em></p>
<p>在家过年的时候把小S摔了N次，当时都没事，但再经过某次摩托车的颠簸，终于无可奈何花落去，花屏了，当地修手机的熟人看了说是还要买屏，不知几百大洋，遂作罢。</p>
<p>上52dopod论坛逛了一圈，看到无数人被“奸修”迫害过，在拆机贴 的鼓舞下决心自己换屏幕，顺带把外壳从黑色换成红色。</p>
<p>淘宝买屏幕和外壳以及拆机工具，下单两个，合计约200大洋。</p>
<p>我拆拆拆，过程参考52dopod上的教程，不必赘述，只说说出的问题。</p>
<p>1，液晶屏排线没有完全插入，导致机器点不亮，虚惊加重复一次。</p>
<p>2，新外壳疑为山寨，电源按键弹性不足，换上旧的，重复一次。</p>
<p>3，忘记装前版的喇叭，通话没声音，虚惊加重复一次。</p>
<p>4，其间看着一个个小部件无法分离或合拢，却又无处着力，发愁N次。</p>
<p>5，搞定后太忘形，把存储卡塞到SIM卡槽，出去买针一次。</p>
<p>5，其间停电一次，去开会一次，从卸开后板到再次成功打出电话，绵延约七个小时。</p>
<p>好事多磨</p>
<blockquote>
<p>评论
老
2010 年 03 月 09
折腾很有乐趣的吧..</p>
</blockquote>
<h3 id="墙的促销流水账">墙的促销流水账</h3>
<p><em>发表于 2010 年 03 月 20 日</em></p>
<p>话说某日发现本Blog死都上不了，顿时怀疑用的Byet免费空间不靠谱了，但是发现后台能轻松的上去。遂戴Tor再上，一切OK，看来是共享ip下的某个网站犯了戒，殃及无辜的我。这不是第一次了，估计也不是最后一次。 于是头脑发热，买了Ixwebhosting的两年Expert型Linux主机，获得附赠域名一个。 换了主机，今天DNS解析才稳定下来，遂记一文，以彰墙为米国空间服务商做出的巨大贡献。</p>
<h3 id="我的boox60-100计划">我的boox60-100计划</h3>
<p><em>发表于 2010 年 03 月 23 日</em></p>
<p>去年入手了一部onyx boox60电子书，竟然没有怎么折腾它，不过到算是物尽其用，看了几本书。 最近上一路书香论坛逛了逛，才发现几个月来出了不少事，由于涉及缺陷机器容易出现无限重启，这个我也遇到过几次，最后是电耗尽为止，公司召回了产品负责更换，我一点都不知道。不过现在刷过新的固件后好像问题不大，就继续使用吧。</p>
<p>说说使用的基本感受：远胜于手机和电脑的阅读效果，但比书还是要差不少的，如果要不断回顾型的阅读（如看论文），基本不太行，所以主要拿来看小说之类的了。</p>
<p>根据初略测算，这玩意儿的花费要拿它看100本书才能保本，所以在此作出计划，但不设时限，看什么时候能达成。 下书如山倒，读书如抽丝。现在读完的有四本：《偷书贼》，《三体》，《1984》，《三体II》。 为了方便统计，做了一个豆单。深阅读的乐趣不是看看小文章可以比拟的，希望有更多的空闲用来早日达成本计划，以慰“老人头”在天之灵。</p>
<h3 id="再听孙燕姿">再听孙燕姿</h3>
<p><em>发表于 2010 年 04 月 17 日</em></p>
<p>还记得最早听到孙燕姿的场景，《天黑黑》，小小的声音湮没在教室的背景噪声中。真正开始喜欢是受室友影响，《风筝》这张专辑在卡带机中循环了很多很多遍。后来，她成了天后，发了很多专辑，却听得倦了。后来，她也倦了，半隐退了近三年。这大概就是工作彻底变成生意后的杯具。 再见到孙燕姿，竟然是在Twitter上，看她絮絮叨叨。 然后，今天听到了她最近参加音乐节的现场版。见鬼了，为什么听得想哭。</p>
<h3 id="写在儿童节之前">写在儿童节之前</h3>
<p><em>发表于 2010 年 05 月 30 日</em></p>
<p>我显然已经不再是个儿童，但也还没制造一个儿童。</p>
<p>当上网上到信息过载时，世界仿佛静止了，它不再有任何变化：流血的还在流血，吃人血馒头的也还在吃人血馒头。围观与暗讽都无力到极点，攻壳特工队的时代是幻想中的幻想，网线不是脐带，甚至不是蛛丝。可惜那个简单的鸵鸟算法不是人人都能学会。</p>
<p>借口太多之后，会忘记最初的借口。碎片拼不出心中的版图，视线变不成锐利的刀子。最后被强光刺瞎的不只是眼睛还有心脏，对于Matrix的无望永远来自于自己，避风港中培育不出水手。</p>
<p>在这戾气横飞的五月底，在这童真难现的儿童节前，远离喧嚣。 夏花灿烂，夏日毒辣。六月，对汹涌的信息说拜拜。 七月见，祝愿那时两个宇宙都更美好。</p>
<p>求诸于己，离苦得乐。</p>
<h3 id="致命一击和闪避">致命一击和闪避</h3>
<p><em>发表于 2010 年 07 月 04 日</em></p>
<p>说几句迟来的话。</p>
<p>上月剑圣君离肥返京，临别发一短信，尽显重见之悦、再别之惜，小带伤感。</p>
<p>其时我正处在大脑煮粥的状态，回了一路顺风择日再见云云。后来细想，机会纵然是始终存在，但倘不刻意去找，却也不知又是何年月了。 那日向剑圣君发问，那么多分基地，为何去恰派至此？话一出口，顿觉多余，自然是申请了。闲逛校园，说是会偶尔梦见小湖，很是感慨。</p>
<p>近读龙应台《大江大海一九四九》，谈到青年人忽视身边的历史。猛然自思，我似乎是要把自己的历史也忘了，随波逐流于世，淡泊相处于人。</p>
<p>有老友来访，方能“茫然慨既往，默坐慎将来”。当日每天与剑圣君在浩方开小黑店，托地主兄下载电视剧，已然三年有余。 “Grubby结婚了。”“嗯，Moon也是。”</p>
<p>当日的英雄还在奋战，但魔兽争霸这个游戏已风光不再。时光不返，研究黑店战术的我们奋斗于事业爱情，或者说是金钱美女，虽是新的挑战，但回望过往，不免有留有几分感念。</p>
<p>致命一击与闪避，都离不开运气。面对未来，除了攒人品，我们能做的，唯有多砍几刀了。</p>
<p>来日再见，把酒言欢，言无不尽</p>
<blockquote>
<p>评论
RJ 2010-07-07 03:2
很赞同啊，总觉得下次还有机会，机会很多之类，其实是要刻意去找找的</p>
</blockquote>
]]></content:encoded><category>life</category><category domain="tags">年度总结</category><category domain="tags">生活</category></item><item><title>论雨伞美学功用之失效</title><link>https://yifeitao.com/umbrella/</link><pubDate>Tue, 14 Dec 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/umbrella/</guid><description>&lt;p&gt;&lt;img src="https://i.imgur.com/hJKjuA7.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;如果不是想写这篇扯淡文，我大概快忘记最近丢了把跟我飘来飘去许多年的雨伞。有记忆的雨天分明我都在淋雨，而有雨伞的雨天却失忆了，这大概是孤独伞的普遍悲剧。&lt;/p&gt;
&lt;p&gt;去年某天，我在一块小黑板上看见一寻物启事，“近日痛失爱伞”云云，被好事者改成“近日痛失爱人”，哑然失笑。现在想来，失主必是爱物之人，但却一时疏忽爱有不及，于是有了悲剧。&lt;/p&gt;
&lt;p&gt;至于我的伞的遗失，可能就是争风吃醋的结果了。前不久新办手机号的时候中国移不动送伞一把，一时之间我竟然就暴发户了，于是办公室放一把，宿舍放一把。老雨伞大概是心怀不忿心绪难平心灰意冷，反正就是不辞而别啦，本人完全记不起分手的场景。&lt;/p&gt;
&lt;p&gt;现在细想起来我还真是肠子都悔青，好歹人家也算有点姿色，而中国移不动送的那叫啥：单调难看的绿色上印着硕大的“China Mobile”，最糟的是走在路上，可以看见它无数的同类：“某某银行”，“献血光荣”，“天翼”。居然有如此多的人愿意举个广告牌，这又是件让我生气的事情。&lt;/p&gt;
&lt;p&gt;戴望舒的《雨巷》里有个“有着丁香一样愁怨的姑娘”，可人家撑的是油纸伞。而现在你走在雨巷，可能看见的都是撑着广告牌雨伞的姑娘，这真是件让能让诗人发愁的事情，所以据说很多年也没见好诗出现了。&lt;/p&gt;
&lt;p&gt;其实我倒不是说一把伞非得多花哨，你看看电影《古惑仔》里面黑社会办老大的葬礼，在雨中人手一把黑雨伞，那个壮观那个肃穆那个庄严，可是你再想象一下那些伞上都打上一堆Logo，真是不堪入目也。&lt;/p&gt;
&lt;p&gt;想起我小时候下雨，小朋友之间会比雨伞，大概跟现在的明星走红地毯比衣服心情类似。衣服的基本作用是御寒，但后来有了美学功用。雨伞的基本作用是挡雨，在中国据说还是一个女人发明的，本来也可以发展一下美学功用，可惜现在的有钱人都不大用伞了，车来车去，鞋不沾水，而没了有钱人的参与，伞这个东西大概是时尚不起来美学不起来了。&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://i.imgur.com/hJKjuA7.png" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>如果不是想写这篇扯淡文，我大概快忘记最近丢了把跟我飘来飘去许多年的雨伞。有记忆的雨天分明我都在淋雨，而有雨伞的雨天却失忆了，这大概是孤独伞的普遍悲剧。</p>
<p>去年某天，我在一块小黑板上看见一寻物启事，“近日痛失爱伞”云云，被好事者改成“近日痛失爱人”，哑然失笑。现在想来，失主必是爱物之人，但却一时疏忽爱有不及，于是有了悲剧。</p>
<p>至于我的伞的遗失，可能就是争风吃醋的结果了。前不久新办手机号的时候中国移不动送伞一把，一时之间我竟然就暴发户了，于是办公室放一把，宿舍放一把。老雨伞大概是心怀不忿心绪难平心灰意冷，反正就是不辞而别啦，本人完全记不起分手的场景。</p>
<p>现在细想起来我还真是肠子都悔青，好歹人家也算有点姿色，而中国移不动送的那叫啥：单调难看的绿色上印着硕大的“China Mobile”，最糟的是走在路上，可以看见它无数的同类：“某某银行”，“献血光荣”，“天翼”。居然有如此多的人愿意举个广告牌，这又是件让我生气的事情。</p>
<p>戴望舒的《雨巷》里有个“有着丁香一样愁怨的姑娘”，可人家撑的是油纸伞。而现在你走在雨巷，可能看见的都是撑着广告牌雨伞的姑娘，这真是件让能让诗人发愁的事情，所以据说很多年也没见好诗出现了。</p>
<p>其实我倒不是说一把伞非得多花哨，你看看电影《古惑仔》里面黑社会办老大的葬礼，在雨中人手一把黑雨伞，那个壮观那个肃穆那个庄严，可是你再想象一下那些伞上都打上一堆Logo，真是不堪入目也。</p>
<p>想起我小时候下雨，小朋友之间会比雨伞，大概跟现在的明星走红地毯比衣服心情类似。衣服的基本作用是御寒，但后来有了美学功用。雨伞的基本作用是挡雨，在中国据说还是一个女人发明的，本来也可以发展一下美学功用，可惜现在的有钱人都不大用伞了，车来车去，鞋不沾水，而没了有钱人的参与，伞这个东西大概是时尚不起来美学不起来了。</p>
]]></content:encoded><category>life</category><category domain="tags">生活</category><category domain="tags">观察</category></item><item><title>Google加密搜索、DNS污染和hosts文件</title><link>https://yifeitao.com/google-ssl-and-hosts/</link><pubDate>Sun, 21 Nov 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/google-ssl-and-hosts/</guid><description>&lt;p&gt;阅读提示：这是一篇简单粗暴的科普文章，不涉及技术细节，更不涉及非技术细节。&lt;/p&gt;
&lt;h2 id="1googlessl加密搜索"&gt;1GoogleSSL加密搜索&lt;/h2&gt;
&lt;p&gt;所谓加密，即使用比一般的http协议更安全的https协议，我们知道由于存在关键词过滤，在Google撤退到香港后，搜索类似“温度”和“胡萝卜”等词语时会被重置链接，而使用https协议的SSL加密搜索则不存在这个问题。&lt;/p&gt;
&lt;p&gt;GoogleSSL搜索的官方地址是&lt;a href="https://www.google.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;https://www.google.com/&lt;/a&gt;
， 你使用这个地址搜索，会跳转到专用域名&lt;a href="https://encrypted.google.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;https://encrypted.google.com/&lt;/a&gt;
， 然后你会发现它无法访问，这是一个典型的被DNS污染的地址，有耐心有好奇心的请往下看。&lt;/p&gt;
&lt;h2 id="2什么是dns"&gt;2什么是DNS？&lt;/h2&gt;
&lt;p&gt;以Windows 操作系统为例，打开连接属性中的Internet协议（就是你配置ip地址的地方），可以看到设置DNS服务器地址的选项。&lt;/p&gt;
&lt;p&gt;DNS是域名系统(Domain Name System)的缩写。可以简单粗暴的做如下理解：我们用户上网站需要访问诸如www.google.com 的域名（网址），而对于计算机网络而言，传递数据则需要知道IP地址，而DNS正是解决域名和IP对应关系的，通过DNS服务器，我们对域名的访问被翻译成对IP地址的访问。&lt;/p&gt;
&lt;p&gt;现在你可以做一个小实验，在运行中（win+R）输入cmd启动命令行，再输入&lt;code&gt;ping www.google.cn&lt;/code&gt;，可以看到类似如下的结果。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;C:\Users\Fidel&amp;gt;ping www.google.cn
正在 Ping www.google.cn [203.208.39.212] 具有 32 字节的数据:
来自 203.208.39.212 的回复: 字节=32 时间=148ms TTL=54
来自 203.208.39.212 的回复: 字节=32 时间=148ms TTL=54
来自 203.208.39.212 的回复: 字节=32 时间=157ms TTL=54
来自 203.208.39.212 的回复: 字节=32 时间=158ms TTL=54
203.208.39.212 的 Ping 统计信息:
数据包: 已发送 = 4，已接收 = 4，丢失 = 0 (0% 丢失)，
往返行程的估计时间(以毫秒为单位):
最短 = 148ms，最长 = 158ms，平均 = 152ms&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我们得到了一个来自ip地址的回复，计算机网络正是通过DNS服务器知道访问www.google.cn 需要到这个ip地址的。&lt;/p&gt;</description><content:encoded><![CDATA[<p>阅读提示：这是一篇简单粗暴的科普文章，不涉及技术细节，更不涉及非技术细节。</p>
<h2 id="1googlessl加密搜索">1GoogleSSL加密搜索</h2>
<p>所谓加密，即使用比一般的http协议更安全的https协议，我们知道由于存在关键词过滤，在Google撤退到香港后，搜索类似“温度”和“胡萝卜”等词语时会被重置链接，而使用https协议的SSL加密搜索则不存在这个问题。</p>
<p>GoogleSSL搜索的官方地址是<a href="https://www.google.com/"
   rel="noopener noreferrer" target="_blank" class="external">https://www.google.com/</a>
， 你使用这个地址搜索，会跳转到专用域名<a href="https://encrypted.google.com/"
   rel="noopener noreferrer" target="_blank" class="external">https://encrypted.google.com/</a>
， 然后你会发现它无法访问，这是一个典型的被DNS污染的地址，有耐心有好奇心的请往下看。</p>
<h2 id="2什么是dns">2什么是DNS？</h2>
<p>以Windows 操作系统为例，打开连接属性中的Internet协议（就是你配置ip地址的地方），可以看到设置DNS服务器地址的选项。</p>
<p>DNS是域名系统(Domain Name System)的缩写。可以简单粗暴的做如下理解：我们用户上网站需要访问诸如www.google.com 的域名（网址），而对于计算机网络而言，传递数据则需要知道IP地址，而DNS正是解决域名和IP对应关系的，通过DNS服务器，我们对域名的访问被翻译成对IP地址的访问。</p>
<p>现在你可以做一个小实验，在运行中（win+R）输入cmd启动命令行，再输入<code>ping www.google.cn</code>，可以看到类似如下的结果。</p>


<pre tabindex="0"><code>C:\Users\Fidel&gt;ping www.google.cn

正在 Ping www.google.cn [203.208.39.212] 具有 32 字节的数据:
来自 203.208.39.212 的回复: 字节=32 时间=148ms TTL=54
来自 203.208.39.212 的回复: 字节=32 时间=148ms TTL=54
来自 203.208.39.212 的回复: 字节=32 时间=157ms TTL=54
来自 203.208.39.212 的回复: 字节=32 时间=158ms TTL=54

203.208.39.212 的 Ping 统计信息:
    数据包: 已发送 = 4，已接收 = 4，丢失 = 0 (0% 丢失)，
往返行程的估计时间(以毫秒为单位):
    最短 = 148ms，最长 = 158ms，平均 = 152ms</code></pre>
<p>我们得到了一个来自ip地址的回复，计算机网络正是通过DNS服务器知道访问www.google.cn 需要到这个ip地址的。</p>
<p>实际上，DNS是一个有些复杂的层次系统，但我们简单理解为一个将域名翻译成IP地址的服务器即可。</p>
<h2 id="3什么是dns污染">3什么是DNS污染？</h2>
<p>依然简单粗暴的理解：就是有人通过种种手段使得DNS服务器把域名翻译成错误的IP地址。现在再做一个小实验，ping encrypted.google.com，你会得到一个无法连通的IP。</p>


<pre tabindex="0"><code>C:\Users\Fidel&gt;ping encrypted.google.com

正在 Ping encrypted.google.com [203.98.7.65] 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。

203.98.7.65 的 Ping 统计信息:
    数据包: 已发送 = 4，已接收 = 0，丢失 = 4 (100% 丢失)，</code></pre>
<p>它的真实IP地址其实不是你得到的IP，DNS服务器欺骗了你，导致你用浏览器访问<a href="https://encrypted.google.com/"
   rel="noopener noreferrer" target="_blank" class="external">https://encrypted.google.com/</a>
 会走入死胡同。</p>
<h2 id="4-hosts文件">4 hosts文件</h2>
<p>首先我们要找到hosts文件，在windows系统里，它的位置通常在<code>C:\Windows\System32\drivers\etc</code></p>
<p>你可以用记事本等文本编辑器打开这个文件（如果你想修改这个文件，在win7中注意用管理员权限运行记事本）。</p>
<p>你会看到类似如下的条目</p>


<pre tabindex="0"><code>127.0.0.1 localhost
#0.0.0.0 www.baidu.com</code></pre>
<p>其中以#开头的是注释，不会起作用。</p>
<p>简单粗暴的理解，hosts文件是你自己电脑上的DNS服务器，可以把域名翻译成IP地址。因此，在浏览器中，访问127.0.0.1和访问localhost是等价的。而且这个DNS服务器是<strong>最优先查找</strong>的。</p>
<p>现在如果我们知道了被DNS污染的网站的可以访问的真正的IP，在hosts文件中加上一条即可。（即上述条目的第三条）</p>
<p><code>173.194.33.100 encrypted.google.com</code></p>
<p>这时候再pingencrypted.google.com，会去访问`173.194.33.100。（不保证此ip您能访问）</p>
<p>如果你看哪个网站不爽，以后死也不用，可以加上类似这样一条。（即去掉上述条目第二条的#号）
<code>0.0.0.0 www.baidu.com</code></p>
<h2 id="5-获知网站的可访问真实ip">5 获知网站的可访问真实IP</h2>
<p>除了DNS污染外，网站往往还会被IP定点封锁。虽然很多大型网站如twitter都有诸多对应的IP地址，但是可能被封锁到一个不剩，所以<strong>并不是每个网站都可以获得可访问的真实IP</strong>。</p>
<p>但依然有些被DNS污染的网站还存有可访问的真实IP，比如encrypted.google.com。</p>
<p>通常有两种办法找IP，第一种就是搜索“encrypted.google.com可访问IP”，总会有热心人在网上告知大家的，但往往并不保证时效性。</p>
<p>第二种是使用专业的查询服务获取域名的多个IP，如使用<a href="http://just-ping.com/"
   rel="noopener noreferrer" target="_blank" class="external">http://just-ping.com/</a>
 查询encrypted.google.com会得到一系列的对应ip地址，我们再使用本机的ping命令实验哪个ip能通即可。（有可能都不能用哦）</p>
<h2 id="6总结">6总结</h2>
<p>hosts文件是本机的DNS服务器，通过修改hosts文件可以解决DNS污染问题，但前提是你获取到了被污染域名的可访问IP。</p>
]]></content:encoded><category>geek</category><category domain="tags">技术</category><category domain="tags">网络</category><category domain="tags">Google</category></item><item><title>记一位和我打过架的故人</title><link>https://yifeitao.com/memory-of-a-classmate/</link><pubDate>Wed, 17 Nov 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/memory-of-a-classmate/</guid><description>&lt;h3 id="一"&gt;（一）&lt;/h3&gt;
&lt;p&gt;可能因为人的大脑细胞结构是网状的，所以会莫名其妙的想起某些人某些事，看似漫不经心，实则有迹可寻。&lt;/p&gt;
&lt;p&gt;今天晚上我走在回宿舍的路上，听着不知所谓的歌，吹着冷风，几经停转的脑子忽然想起一位故人来，然后不可遏制，直到觉得很伤感，要写点什么才好，虽然明明我从来都不喜欢他。&lt;/p&gt;
&lt;h3 id="二"&gt;（二）&lt;/h3&gt;
&lt;p&gt;他比我小十天，我记得这么清楚，是因为我妈妈说，在庆祝我出生十天的时候，听到了他家放鞭炮。&lt;/p&gt;
&lt;p&gt;他有一个很普通的名字，现在一个当红的男歌星也叫这个名字。&lt;/p&gt;
&lt;p&gt;后来搬过几次家，最后还是搬到了能听到他家放鞭炮的地方，可是我们好像从来都不是朋友，以至于我还和他打过架。&lt;/p&gt;
&lt;p&gt;初次听到这个当红男歌星的名字的时候，我小小的楞了一下，然后这个名字的份量就几乎被这个歌星完全取代。&lt;/p&gt;
&lt;p&gt;我叔叔有一次开玩笑对我说：“你去弄点仙人掌的汁给他喝，据说喝完奇痒无比。”我来不及表达意见我妈就教训我叔叔了。叔叔的理由是：“这个伢儿不得爱相。”意思是这是一个不招人待见的孩子。&lt;/p&gt;
&lt;p&gt;所以，你知道，他是一个让人产生欺负他欲望的孩子。&lt;/p&gt;
&lt;p&gt;有一次，他老爸从稻田里赶到学校，还拿着一把铁锹，恶狠狠的教训我们班上的小学生们，说谁再欺负他家孩子就不客气。结果是被欺负得更厉害。&lt;/p&gt;
&lt;h3 id="三"&gt;（三）&lt;/h3&gt;
&lt;p&gt;我第一次和他有交往，大概是一次我们家搬家的时候，我要进入一个新的小孩群体。住得近的小孩都帮我搬东西，算是欢迎我的加入，我养的一只小乌龟却搬不见了。&lt;/p&gt;
&lt;p&gt;当即热心人士指责是他偷了我的小乌龟，我一片茫然，于是热心人士帮我数落他的斑斑劣迹，直到他们打了起来，我发现他在这个群体里是边缘化人士。&lt;/p&gt;
&lt;p&gt;我是一个多么随大流的人啊，所以从来就没喜欢过他。&lt;/p&gt;
&lt;p&gt;因为是一个不重要的人，所以我都记不起为什么和他打架，只记得那是我到今天为止最后一次和人打架。&lt;/p&gt;
&lt;p&gt;我记得他的手劲比我大，尤其是左手，扳手劲我好像都是输。可是没记错的话，这场架好像我打赢了，毕竟，围观群众都支持我，甚至可能还拉了偏架。&lt;/p&gt;
&lt;h3 id="四"&gt;（四）&lt;/h3&gt;
&lt;p&gt;初中毕业后我一直在外面上学，即使放假也不再去找他玩，尽管我们住在放鞭炮能听见的距离，甚至那些为我拉过偏架的人也很少见，可以知道我是一个多么凉薄的人。&lt;/p&gt;
&lt;p&gt;有一天，他找我妈妈有点事，我刚好在家，于是聊了几句，真的就是几句而已，我记不起我们说了什么，只记得他叼着一根香烟，有一种土土的酷酷的感觉。&lt;/p&gt;
&lt;p&gt;倒是他的姐姐我后来见到不少次，是一个努力、干练的女孩子，是我们那帮孩子里的第一个大学生。&lt;/p&gt;
&lt;p&gt;有一天打电话，突然我妈告诉我：“你知道那谁谁已经不在了吗？”我问不在是什么意思。“他得脑癌去世了。”&lt;/p&gt;
&lt;p&gt;我又记不得我当时跟我妈说了什么，应该是楞了蛮久的吧。&lt;/p&gt;
&lt;h3 id="五"&gt;（五）&lt;/h3&gt;
&lt;p&gt;我今天晚上走在路上，突然想起这个我不喜欢的故人。他初中都没读完就辍学了，老师不喜欢他成绩差，和成绩差的同学打成一片的能力似乎还不如我。我想，他一定爱游戏厅远远多过爱学校吧。&lt;/p&gt;
&lt;p&gt;我想到他最清晰的画面，是他在课堂上自己画自己的画。有时候没钱或没机会跑去游戏厅，他只好在纸上演练。是的，在他强大的想象力下，在纸上可以一个人玩拳皇，玩西游记。&lt;/p&gt;
&lt;p&gt;我还记得他在纸上画着时的笑容。&lt;/p&gt;
&lt;p&gt;为什么我会突然忆起他，写到这里我想到我最近有和人过讨论自己是否有暴力倾向。&lt;/p&gt;
&lt;p&gt;于是我记起了到今天为止最后一个和我打过架的人。我记不起和他打架的原因，却还记得他被摔到田里时脸上的愤怒、委屈、难过、不服……&lt;/p&gt;
&lt;p&gt;于是我想忏悔，可是又能说给谁听呢？所有的人都会死去的吧，想到这里，连自己都不想指责了。我就这样先原谅了自己。&lt;/p&gt;</description><content:encoded><![CDATA[<h3 id="一">（一）</h3>
<p>可能因为人的大脑细胞结构是网状的，所以会莫名其妙的想起某些人某些事，看似漫不经心，实则有迹可寻。</p>
<p>今天晚上我走在回宿舍的路上，听着不知所谓的歌，吹着冷风，几经停转的脑子忽然想起一位故人来，然后不可遏制，直到觉得很伤感，要写点什么才好，虽然明明我从来都不喜欢他。</p>
<h3 id="二">（二）</h3>
<p>他比我小十天，我记得这么清楚，是因为我妈妈说，在庆祝我出生十天的时候，听到了他家放鞭炮。</p>
<p>他有一个很普通的名字，现在一个当红的男歌星也叫这个名字。</p>
<p>后来搬过几次家，最后还是搬到了能听到他家放鞭炮的地方，可是我们好像从来都不是朋友，以至于我还和他打过架。</p>
<p>初次听到这个当红男歌星的名字的时候，我小小的楞了一下，然后这个名字的份量就几乎被这个歌星完全取代。</p>
<p>我叔叔有一次开玩笑对我说：“你去弄点仙人掌的汁给他喝，据说喝完奇痒无比。”我来不及表达意见我妈就教训我叔叔了。叔叔的理由是：“这个伢儿不得爱相。”意思是这是一个不招人待见的孩子。</p>
<p>所以，你知道，他是一个让人产生欺负他欲望的孩子。</p>
<p>有一次，他老爸从稻田里赶到学校，还拿着一把铁锹，恶狠狠的教训我们班上的小学生们，说谁再欺负他家孩子就不客气。结果是被欺负得更厉害。</p>
<h3 id="三">（三）</h3>
<p>我第一次和他有交往，大概是一次我们家搬家的时候，我要进入一个新的小孩群体。住得近的小孩都帮我搬东西，算是欢迎我的加入，我养的一只小乌龟却搬不见了。</p>
<p>当即热心人士指责是他偷了我的小乌龟，我一片茫然，于是热心人士帮我数落他的斑斑劣迹，直到他们打了起来，我发现他在这个群体里是边缘化人士。</p>
<p>我是一个多么随大流的人啊，所以从来就没喜欢过他。</p>
<p>因为是一个不重要的人，所以我都记不起为什么和他打架，只记得那是我到今天为止最后一次和人打架。</p>
<p>我记得他的手劲比我大，尤其是左手，扳手劲我好像都是输。可是没记错的话，这场架好像我打赢了，毕竟，围观群众都支持我，甚至可能还拉了偏架。</p>
<h3 id="四">（四）</h3>
<p>初中毕业后我一直在外面上学，即使放假也不再去找他玩，尽管我们住在放鞭炮能听见的距离，甚至那些为我拉过偏架的人也很少见，可以知道我是一个多么凉薄的人。</p>
<p>有一天，他找我妈妈有点事，我刚好在家，于是聊了几句，真的就是几句而已，我记不起我们说了什么，只记得他叼着一根香烟，有一种土土的酷酷的感觉。</p>
<p>倒是他的姐姐我后来见到不少次，是一个努力、干练的女孩子，是我们那帮孩子里的第一个大学生。</p>
<p>有一天打电话，突然我妈告诉我：“你知道那谁谁已经不在了吗？”我问不在是什么意思。“他得脑癌去世了。”</p>
<p>我又记不得我当时跟我妈说了什么，应该是楞了蛮久的吧。</p>
<h3 id="五">（五）</h3>
<p>我今天晚上走在路上，突然想起这个我不喜欢的故人。他初中都没读完就辍学了，老师不喜欢他成绩差，和成绩差的同学打成一片的能力似乎还不如我。我想，他一定爱游戏厅远远多过爱学校吧。</p>
<p>我想到他最清晰的画面，是他在课堂上自己画自己的画。有时候没钱或没机会跑去游戏厅，他只好在纸上演练。是的，在他强大的想象力下，在纸上可以一个人玩拳皇，玩西游记。</p>
<p>我还记得他在纸上画着时的笑容。</p>
<p>为什么我会突然忆起他，写到这里我想到我最近有和人过讨论自己是否有暴力倾向。</p>
<p>于是我记起了到今天为止最后一个和我打过架的人。我记不起和他打架的原因，却还记得他被摔到田里时脸上的愤怒、委屈、难过、不服……</p>
<p>于是我想忏悔，可是又能说给谁听呢？所有的人都会死去的吧，想到这里，连自己都不想指责了。我就这样先原谅了自己。</p>
]]></content:encoded><category>life</category><category domain="tags">回忆</category><category domain="tags">人际</category></item><item><title>辣子鸡丁定律</title><link>https://yifeitao.com/law-of-lazijiding/</link><pubDate>Wed, 20 Oct 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/law-of-lazijiding/</guid><description>&lt;p&gt;&lt;img src="https://c1.staticflickr.com/5/4013/4640687367_9c3dba2d8f.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;辣子鸡丁是常见川菜，干香，食客须在干辣椒中寻鸡丁吃，不过吃起来并没有看起来那么辣。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;辣子鸡丁定律：当其他人都觉得一盘辣子鸡丁只剩下辣椒等配料时，你总能在里面再找到一块鸡肉。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我知道，这条定律看起来不科学、反常识，实在是爱抬杠人士的绝佳攻击对象。但且少安毋躁，容我细细道来。我发现这个定律快要十年了，现在才拿出来造福人类，自然是经过了严格的验证与思考。&lt;/p&gt;
&lt;p&gt;高中的时候，我是住校的少数派之一，天天吃食堂，嘴里能淡出鸟来。我们这些住校的穷孩子偶尔也会在外面的小餐馆改善一下生活，用现在的说法这种餐馆应该叫“苍蝇馆子”吧。辣子鸡丁是我们常点的菜之一。请先想象一下看见鸡肉眼睛发亮的一群穷高中生吃辣子鸡丁的情形，然后再继续往下看。&lt;/p&gt;
&lt;p&gt;某一日，我在辣椒堆里搜索鸡丁，漫不经心的问：“你们觉得这里面还有肉吗？”“基本没有了吧。”突然，我又发现了一块鸡肉。是的，辣子鸡丁定律就是在这个漫不经心的场景下诞生的，那时候，谁都没有意识到这是一个伟大的时刻。我以我超凡的见识总结出了这个定律。&lt;/p&gt;
&lt;p&gt;后来，只要吃辣子鸡丁，我都会在别人不再往这盘菜伸筷子之后，一边阐释我的辣子鸡丁定律一边进行现场验证，屡试不爽。&lt;/p&gt;
&lt;p&gt;可能你现在真的以为这个定律是个偶然的发现，其实一切偶然都是必然的。在我很小的时候，我老爸就教导过我：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;挤牙膏定律：凡是我和我妈决定扔掉的用完的牙膏，我爸总能挤出不少再用一次。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这应该算是辣子鸡丁定律的引理了。&lt;/p&gt;
&lt;p&gt;说到这里，第一种看官会和我抬杠，说一盘辣子鸡丁中鸡肉总是有限的，怎么可能总能再找出一块来，懂无穷数学概念的人会说你这属于模仿&lt;a href="http://zh.wikipedia.org/zh/%E5%B8%8C%E5%B0%94%E4%BC%AF%E7%89%B9%E6%97%85%E9%A6%86%E6%82%96%E8%AE%BA"
rel="noopener noreferrer" target="_blank" class="external"&gt;Hilbert 旅馆悖论&lt;/a&gt;
失败；第二种看官会不屑再看下去，说你这个定律有什么意义呢？当然还有已经顿悟了的第三种看官，您自可不必再看下去了。&lt;/p&gt;
&lt;p&gt;我想把两种质疑合起来解释，因为这是二而一的问题。&lt;/p&gt;
&lt;p&gt;有一句话在网络乃至现实中一直流行，叫“认真你就输了”。在你好不容易正经八百说点什么干点什么的时候，总有人拿这句话问候你。认真对待我的定律的人，恭喜你，你已经推翻它了，下次你请我吃一盘辣子鸡丁，在我卖弄这个定律之前，你在盘子里地毯式搜索个几十遍，我只好承认我一直在扯淡。“认真你就赢了！”&lt;/p&gt;
&lt;p&gt;这个世上认真的人太少，把事情做到极致的人太少，挑战极限的人太少，恪守原则的人太少，所以辣子鸡丁定律才从似是而非变成了似非而是。当我们怀揣着小聪明以为理解了这个世界的时候，这个世界也没收了它给我们的机会。&lt;/p&gt;
&lt;p&gt;为了更好的理解辣子鸡丁定律，下面给出一些推论：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;挤公交车定律：当你认为公交车上挤不进去人而决定等下一班时，其实还能挤进去一个人。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;发论文定律：当你认为一个研究领域已经无比成熟，没有新东西可发现时，总会有人再发一篇牛逼的论文。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一无是处定律：当你认为一个人一无是处的时候，其实总能在其身上发现一个优点。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;挑刺定律：当你觉得自己一件事情做得完美无缺时，你的上级总能挑出毛病来。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;单身定律：当你觉得自己好像要一直单身下去的时候，其实你总能找到自己的另一半。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;好了，希望看官你能给出自己的推论来，将辣子鸡丁定律发扬光大。&lt;/p&gt;
&lt;p&gt;【2010年10月19日于苏州/2016年02月02日修复】&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://c1.staticflickr.com/5/4013/4640687367_9c3dba2d8f.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>辣子鸡丁是常见川菜，干香，食客须在干辣椒中寻鸡丁吃，不过吃起来并没有看起来那么辣。</p>
<p><strong>辣子鸡丁定律：当其他人都觉得一盘辣子鸡丁只剩下辣椒等配料时，你总能在里面再找到一块鸡肉。</strong></p>
<p>我知道，这条定律看起来不科学、反常识，实在是爱抬杠人士的绝佳攻击对象。但且少安毋躁，容我细细道来。我发现这个定律快要十年了，现在才拿出来造福人类，自然是经过了严格的验证与思考。</p>
<p>高中的时候，我是住校的少数派之一，天天吃食堂，嘴里能淡出鸟来。我们这些住校的穷孩子偶尔也会在外面的小餐馆改善一下生活，用现在的说法这种餐馆应该叫“苍蝇馆子”吧。辣子鸡丁是我们常点的菜之一。请先想象一下看见鸡肉眼睛发亮的一群穷高中生吃辣子鸡丁的情形，然后再继续往下看。</p>
<p>某一日，我在辣椒堆里搜索鸡丁，漫不经心的问：“你们觉得这里面还有肉吗？”“基本没有了吧。”突然，我又发现了一块鸡肉。是的，辣子鸡丁定律就是在这个漫不经心的场景下诞生的，那时候，谁都没有意识到这是一个伟大的时刻。我以我超凡的见识总结出了这个定律。</p>
<p>后来，只要吃辣子鸡丁，我都会在别人不再往这盘菜伸筷子之后，一边阐释我的辣子鸡丁定律一边进行现场验证，屡试不爽。</p>
<p>可能你现在真的以为这个定律是个偶然的发现，其实一切偶然都是必然的。在我很小的时候，我老爸就教导过我：</p>
<blockquote>
<p>挤牙膏定律：凡是我和我妈决定扔掉的用完的牙膏，我爸总能挤出不少再用一次。</p>
</blockquote>
<p>这应该算是辣子鸡丁定律的引理了。</p>
<p>说到这里，第一种看官会和我抬杠，说一盘辣子鸡丁中鸡肉总是有限的，怎么可能总能再找出一块来，懂无穷数学概念的人会说你这属于模仿<a href="http://zh.wikipedia.org/zh/%E5%B8%8C%E5%B0%94%E4%BC%AF%E7%89%B9%E6%97%85%E9%A6%86%E6%82%96%E8%AE%BA"
   rel="noopener noreferrer" target="_blank" class="external">Hilbert 旅馆悖论</a>
失败；第二种看官会不屑再看下去，说你这个定律有什么意义呢？当然还有已经顿悟了的第三种看官，您自可不必再看下去了。</p>
<p>我想把两种质疑合起来解释，因为这是二而一的问题。</p>
<p>有一句话在网络乃至现实中一直流行，叫“认真你就输了”。在你好不容易正经八百说点什么干点什么的时候，总有人拿这句话问候你。认真对待我的定律的人，恭喜你，你已经推翻它了，下次你请我吃一盘辣子鸡丁，在我卖弄这个定律之前，你在盘子里地毯式搜索个几十遍，我只好承认我一直在扯淡。“认真你就赢了！”</p>
<p>这个世上认真的人太少，把事情做到极致的人太少，挑战极限的人太少，恪守原则的人太少，所以辣子鸡丁定律才从似是而非变成了似非而是。当我们怀揣着小聪明以为理解了这个世界的时候，这个世界也没收了它给我们的机会。</p>
<p>为了更好的理解辣子鸡丁定律，下面给出一些推论：</p>
<ol>
<li>
<p>挤公交车定律：当你认为公交车上挤不进去人而决定等下一班时，其实还能挤进去一个人。</p>
</li>
<li>
<p>发论文定律：当你认为一个研究领域已经无比成熟，没有新东西可发现时，总会有人再发一篇牛逼的论文。</p>
</li>
<li>
<p>一无是处定律：当你认为一个人一无是处的时候，其实总能在其身上发现一个优点。</p>
</li>
<li>
<p>挑刺定律：当你觉得自己一件事情做得完美无缺时，你的上级总能挑出毛病来。</p>
</li>
<li>
<p>单身定律：当你觉得自己好像要一直单身下去的时候，其实你总能找到自己的另一半。</p>
</li>
</ol>
<p>好了，希望看官你能给出自己的推论来，将辣子鸡丁定律发扬光大。</p>
<p>【2010年10月19日于苏州/2016年02月02日修复】</p>
]]></content:encoded><category>methodology</category><category domain="tags">生活</category><category domain="tags">美食</category></item><item><title>通假时代</title><link>https://yifeitao.com/tongjia-times/</link><pubDate>Wed, 13 Oct 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/tongjia-times/</guid><description>&lt;p&gt;&lt;img src="https://c2.staticflickr.com/4/3822/14118241257_8839be6ba8_b.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;p&gt;2010年9月份的时候，媒体和网民都在对鲁迅作品淡出语文课本的事情议论纷纷，我却不由得想起我的一位高中同学，对于此事他应该会感到一丝欣慰吧。当年每每在学鲁迅的文章之时他都会骂道：“妈的，鲁迅写的错别字就不算错别字，还要老子记住！”白话文发展初期用字未有规范，而鲁迅地位特殊，可能是语文课本上唯一一个有资格享用“通假字”待遇的近现代作家。&lt;/p&gt;
&lt;p&gt;通假字，说得难听点的确可算是古人以讹传讹的错别字。汉字以以形表意，字如图画，但发音上相对单调，同音字现象严重，其魅力在于产生了严格美妙的格律，痼疾则在于产生了通假字。可是我们的祖先一定没想到，通假会在网络时代成为一个特征。more&lt;/p&gt;
&lt;p&gt;2009年以来，中国互联网经历的是这样一段时光：网络监管的夏天，大型网站的秋天，中小型网站的冬天，网络语言的春天。&lt;/p&gt;
&lt;p&gt;2009年年初有“七部委联合整治互联网低俗之风”，年底有“九部门部署深入整治互联网和手机淫秽色情及低俗信息专项行动”。2009年6月18日在央视《焦点访谈》节目中，“纯情大学生”高也接受采访，大谈通过谷歌能搜索到让人心神不宁的黄色信息。在有关部门的“低俗网站”名单中，各大网站几乎无一幸免。2009年12月央视在报道中公开点名批评了各大搜索引擎能搜到黄色信息。&lt;/p&gt;
&lt;p&gt;在这场有“妈妈评审团”作为民意代表的风暴中，中国互联网的变化其实远远不止少了一些黄色网站和软色情信息，甚至这些倒是最快死灰复燃的。豆瓣网大量小组被解散，热门小组的组长被要求提供真实身份信息；类Twitter创业网站如饭否、嘀咕、叽歪等等面临审查压力被关闭整顿，几乎都半死不活；最大的BT下载聚合站BTChina被迫关闭，各资源发布小组纷纷宣布转型；国内个人域名注册被禁止，未备案域名被停止解析，cn域名总量从1400万猛跌近一半；Google中国撤退到香港，去掉了搜索结果的提示“根据当地法律法规和政策，部分搜索结果未予显示”，现在连搜“胡萝卜”和“温度”也会被重置。一般认为中国在1987年发出了第一封电子邮件，内容是：“AcrosstheGreatWallwecanreacheverycornerintheworld”，没想到一语成谶。&lt;/p&gt;
&lt;p&gt;在用户创造内容的Web2.0时代，中国互联网的创业者却失去了机会，一个面向中国用户的网站必须有充分的审查能力，否则如果它的服务器在国内，则面临拔网线缴硬盘的危险，如果服务器不在国内，则面临被国家防火墙屏蔽的危险。只有像新浪、腾讯这样的大公司才可能对海量信息进行充分及时的审查，所以国内最终流行的是新浪的微博，而不能诞生一个新的像Twitter般牛逼闪闪的公司。所有的创业者面临的竞争者是像腾讯一样强调“微创新”且有强大公关能力的模仿者，等不到自己的壮大更等不到被大公司收购。2010年7月《计算机世界》勇敢抛出《&amp;ldquo;狗日的&amp;quot;腾讯》一文时，好评如潮，其实腾讯也不过是这“先屏蔽，后山寨，再内斗”的奇特生态中的一员，所有的争议都在五十步和一百步之间。&lt;/p&gt;
&lt;p&gt;很多人懵懂在这扫黄风暴中，但也有很多人感受到了无边的愤懑与无奈。于是2009年诞生了诸多行为艺术，比如豆瓣网上有给裸体艺术作品穿衣服的活动，cnBeta.com上有“Twitter、Facebook是什么”的留言风潮，而影响最深远的则可能是“草泥马”文化。已经很难追寻“草泥马”的源头，关于“草泥马”的一本正经的介绍一度出现在百度百科，位列十大神兽之首，人们又在CCTV的《动物世界》中找到了“草泥马”在现实中的映射版本羊驼，而后自然的出现了草泥马的介绍视频，草泥马之歌，草泥马玩偶。一句传统的脏话在谐音通假之后以全新的姿态出现，揭示的是网民不屈不挠的创造力与表达热情，以及对于河蟹和马勒隔壁的戏谑之情。&lt;/p&gt;
&lt;p&gt;很多年后，当后人回望这个时代，一定会感慨于千奇百怪、日新月异的网络语言。“草泥马”这种谐音通假的方式具有代表性意义，但却只能算是最初级的方式。比如“中国”因曾自称“天朝上国”而被戏称为“天朝”，在cnBeta.com上，“天朝”是敏感词，一度以“洪秀全开的公司”替换，而现在则被称为“瓷器国”，为此你需要理解如下连等式：天朝=中国=China=china=瓷器国。更复杂的还有菊花文，拆字文，竖排文，倒排文……汉语在网络上无论是外在还是内在都变得越来越拐弯抹角，几天不上网你再返回就可能进入一个如同说着黑话的世界。&lt;/p&gt;
&lt;p&gt;当互联网这一技术产物被引入中国时，可能没有人意识到它会带来什么。时至今日，中国的网民可能是世界上匿名表达欲望最强烈的群体，每当提及实名制时，反对的浪潮都会无比汹涌，在每一个匿名的ID背后，在网民这一暧昧称呼的背后，其实是各行各业活生生的人，当传统的表达渠道晦涩甚至危险时，互联网成了最后的排水口。&lt;/p&gt;
&lt;p&gt;古语说“防民之口，甚于防川”，面对如江河入海的热切表达，已经不可能光靠人工审查，于是机器审查成了继发言者内心自我审查后的首要屏障。而为了突破这道屏障，发言者不得不动用智慧，设法绕行。几乎每个网站的屏蔽词都不一样，当你面对网站提示有违禁词而无法发帖时，面临的是经验、眼力和脑力的考验：比如在百度贴吧的帖子不能出现“写真”，不能同时出现“考试”和“答案”，你知道吗？又比如在大部分网站，无法贴出宪法原文，你知道吗？&lt;/p&gt;
&lt;p&gt;这种发言与屏蔽的暗战揭示了这个时代的特点，一方面，经济改革三十余年，而体制之痛楚与窒息却鲜有变化，纵使国家总理最近不断呼吁，但这湖水俨然波澜不惊，为私利的维稳，为表象的和谐，偏离着它的词义，消耗着社会转型的机会，当你带着面具上网，每每发言先自我过滤一番时，你就知道，这仍是一个不可言说的时代；而另一方面，互联网几乎在中国造了一个锡安，是一个便捷、相对安全、传播速度快、能突破地方级封锁的表达渠道，你可以拐弯绕道讨论问题发表意见，道一声“你懂的”，所以这又是一个犹可言说的时代。&lt;/p&gt;
&lt;p&gt;不可言说，犹可言说，说，还是不说？&lt;/p&gt;
&lt;p&gt;我做了一个梦，梦中有人对我说：“让我们在没有通假字的地方相见”，醒来时，我发现自己变成了HelloKitty。&lt;/p&gt;
&lt;p&gt;【参考与推荐】&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;新闻：&lt;a href="http://news.163.com/10/0908/09/6G2279CL0001124J.html"
rel="noopener noreferrer" target="_blank" class="external"&gt;各地语文课本内容大改 鲁迅作品接近消失&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;新闻：&lt;a href="http://tech.qq.com/a/20100830/000301.htm"
rel="noopener noreferrer" target="_blank" class="external"&gt;大量CN域名遭停止解析 疑因未提交核对信息&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;凤凰周刊：&lt;a href="http://news.ifeng.com/opinion/meiti/ph/detail_2010_09/09/2471705_0.shtml"
rel="noopener noreferrer" target="_blank" class="external"&gt;大陆网络色情调查：利润丰厚屡禁不绝 扫黄面临公私权博弈&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;词解：&lt;a href="http://zh.wikipedia.org/zh-cn/%E9%AB%98%E4%B9%9F%E4%BA%8B%E4%BB%B6"
rel="noopener noreferrer" target="_blank" class="external"&gt;高也事件&lt;/a&gt;
&lt;a href="http://zh.wikipedia.org/zh-cn/%E8%8D%89%E6%B3%A5%E9%A9%AC"
rel="noopener noreferrer" target="_blank" class="external"&gt;草泥马&lt;/a&gt;
&lt;a href="http://baike.baidu.com/view/3112854.htm"
rel="noopener noreferrer" target="_blank" class="external"&gt;妈妈评审团 &lt;/a&gt;
&lt;a href="http://cn.bing.com/search?FORM=IEFM1&amp;amp;amp;q=%E7%93%B7%E5%99%A8%E5%9B%BD"
rel="noopener noreferrer" target="_blank" class="external"&gt;瓷器国&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Google： &lt;a href="http://www.google.com/press/new-approach-to-china/update.html"
rel="noopener noreferrer" target="_blank" class="external"&gt;关于谷歌中国的最新声明&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://tech.sina.com.cn/i/2010-07-24/20434467150.shtml"
rel="noopener noreferrer" target="_blank" class="external"&gt;《“狗日的”腾讯》&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://tech.qq.com/zt2010/cnnic26/"
rel="noopener noreferrer" target="_blank" class="external"&gt;《第26次中国互联网络发展状况统计报告》&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://www.gov.cn/gongbao/content/2004/content_62714.htm"
rel="noopener noreferrer" target="_blank" class="external"&gt;《中华人民共和国宪法》&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://yyyyiiii.blogspot.com/2010/10/cnn-zakaria-2010103.html"
rel="noopener noreferrer" target="_blank" class="external"&gt;温家宝接受CNN专访全文&lt;/a&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p><img src="https://c2.staticflickr.com/4/3822/14118241257_8839be6ba8_b.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<p>2010年9月份的时候，媒体和网民都在对鲁迅作品淡出语文课本的事情议论纷纷，我却不由得想起我的一位高中同学，对于此事他应该会感到一丝欣慰吧。当年每每在学鲁迅的文章之时他都会骂道：“妈的，鲁迅写的错别字就不算错别字，还要老子记住！”白话文发展初期用字未有规范，而鲁迅地位特殊，可能是语文课本上唯一一个有资格享用“通假字”待遇的近现代作家。</p>
<p>通假字，说得难听点的确可算是古人以讹传讹的错别字。汉字以以形表意，字如图画，但发音上相对单调，同音字现象严重，其魅力在于产生了严格美妙的格律，痼疾则在于产生了通假字。可是我们的祖先一定没想到，通假会在网络时代成为一个特征。more</p>
<p>2009年以来，中国互联网经历的是这样一段时光：网络监管的夏天，大型网站的秋天，中小型网站的冬天，网络语言的春天。</p>
<p>2009年年初有“七部委联合整治互联网低俗之风”，年底有“九部门部署深入整治互联网和手机淫秽色情及低俗信息专项行动”。2009年6月18日在央视《焦点访谈》节目中，“纯情大学生”高也接受采访，大谈通过谷歌能搜索到让人心神不宁的黄色信息。在有关部门的“低俗网站”名单中，各大网站几乎无一幸免。2009年12月央视在报道中公开点名批评了各大搜索引擎能搜到黄色信息。</p>
<p>在这场有“妈妈评审团”作为民意代表的风暴中，中国互联网的变化其实远远不止少了一些黄色网站和软色情信息，甚至这些倒是最快死灰复燃的。豆瓣网大量小组被解散，热门小组的组长被要求提供真实身份信息；类Twitter创业网站如饭否、嘀咕、叽歪等等面临审查压力被关闭整顿，几乎都半死不活；最大的BT下载聚合站BTChina被迫关闭，各资源发布小组纷纷宣布转型；国内个人域名注册被禁止，未备案域名被停止解析，cn域名总量从1400万猛跌近一半；Google中国撤退到香港，去掉了搜索结果的提示“根据当地法律法规和政策，部分搜索结果未予显示”，现在连搜“胡萝卜”和“温度”也会被重置。一般认为中国在1987年发出了第一封电子邮件，内容是：“AcrosstheGreatWallwecanreacheverycornerintheworld”，没想到一语成谶。</p>
<p>在用户创造内容的Web2.0时代，中国互联网的创业者却失去了机会，一个面向中国用户的网站必须有充分的审查能力，否则如果它的服务器在国内，则面临拔网线缴硬盘的危险，如果服务器不在国内，则面临被国家防火墙屏蔽的危险。只有像新浪、腾讯这样的大公司才可能对海量信息进行充分及时的审查，所以国内最终流行的是新浪的微博，而不能诞生一个新的像Twitter般牛逼闪闪的公司。所有的创业者面临的竞争者是像腾讯一样强调“微创新”且有强大公关能力的模仿者，等不到自己的壮大更等不到被大公司收购。2010年7月《计算机世界》勇敢抛出《&ldquo;狗日的&quot;腾讯》一文时，好评如潮，其实腾讯也不过是这“先屏蔽，后山寨，再内斗”的奇特生态中的一员，所有的争议都在五十步和一百步之间。</p>
<p>很多人懵懂在这扫黄风暴中，但也有很多人感受到了无边的愤懑与无奈。于是2009年诞生了诸多行为艺术，比如豆瓣网上有给裸体艺术作品穿衣服的活动，cnBeta.com上有“Twitter、Facebook是什么”的留言风潮，而影响最深远的则可能是“草泥马”文化。已经很难追寻“草泥马”的源头，关于“草泥马”的一本正经的介绍一度出现在百度百科，位列十大神兽之首，人们又在CCTV的《动物世界》中找到了“草泥马”在现实中的映射版本羊驼，而后自然的出现了草泥马的介绍视频，草泥马之歌，草泥马玩偶。一句传统的脏话在谐音通假之后以全新的姿态出现，揭示的是网民不屈不挠的创造力与表达热情，以及对于河蟹和马勒隔壁的戏谑之情。</p>
<p>很多年后，当后人回望这个时代，一定会感慨于千奇百怪、日新月异的网络语言。“草泥马”这种谐音通假的方式具有代表性意义，但却只能算是最初级的方式。比如“中国”因曾自称“天朝上国”而被戏称为“天朝”，在cnBeta.com上，“天朝”是敏感词，一度以“洪秀全开的公司”替换，而现在则被称为“瓷器国”，为此你需要理解如下连等式：天朝=中国=China=china=瓷器国。更复杂的还有菊花文，拆字文，竖排文，倒排文……汉语在网络上无论是外在还是内在都变得越来越拐弯抹角，几天不上网你再返回就可能进入一个如同说着黑话的世界。</p>
<p>当互联网这一技术产物被引入中国时，可能没有人意识到它会带来什么。时至今日，中国的网民可能是世界上匿名表达欲望最强烈的群体，每当提及实名制时，反对的浪潮都会无比汹涌，在每一个匿名的ID背后，在网民这一暧昧称呼的背后，其实是各行各业活生生的人，当传统的表达渠道晦涩甚至危险时，互联网成了最后的排水口。</p>
<p>古语说“防民之口，甚于防川”，面对如江河入海的热切表达，已经不可能光靠人工审查，于是机器审查成了继发言者内心自我审查后的首要屏障。而为了突破这道屏障，发言者不得不动用智慧，设法绕行。几乎每个网站的屏蔽词都不一样，当你面对网站提示有违禁词而无法发帖时，面临的是经验、眼力和脑力的考验：比如在百度贴吧的帖子不能出现“写真”，不能同时出现“考试”和“答案”，你知道吗？又比如在大部分网站，无法贴出宪法原文，你知道吗？</p>
<p>这种发言与屏蔽的暗战揭示了这个时代的特点，一方面，经济改革三十余年，而体制之痛楚与窒息却鲜有变化，纵使国家总理最近不断呼吁，但这湖水俨然波澜不惊，为私利的维稳，为表象的和谐，偏离着它的词义，消耗着社会转型的机会，当你带着面具上网，每每发言先自我过滤一番时，你就知道，这仍是一个不可言说的时代；而另一方面，互联网几乎在中国造了一个锡安，是一个便捷、相对安全、传播速度快、能突破地方级封锁的表达渠道，你可以拐弯绕道讨论问题发表意见，道一声“你懂的”，所以这又是一个犹可言说的时代。</p>
<p>不可言说，犹可言说，说，还是不说？</p>
<p>我做了一个梦，梦中有人对我说：“让我们在没有通假字的地方相见”，醒来时，我发现自己变成了HelloKitty。</p>
<p>【参考与推荐】</p>
<ol>
<li>
<p>新闻：<a href="http://news.163.com/10/0908/09/6G2279CL0001124J.html"
   rel="noopener noreferrer" target="_blank" class="external">各地语文课本内容大改 鲁迅作品接近消失</a>
</p>
</li>
<li>
<p>新闻：<a href="http://tech.qq.com/a/20100830/000301.htm"
   rel="noopener noreferrer" target="_blank" class="external">大量CN域名遭停止解析 疑因未提交核对信息</a>
</p>
</li>
<li>
<p>凤凰周刊：<a href="http://news.ifeng.com/opinion/meiti/ph/detail_2010_09/09/2471705_0.shtml"
   rel="noopener noreferrer" target="_blank" class="external">大陆网络色情调查：利润丰厚屡禁不绝 扫黄面临公私权博弈</a>
</p>
</li>
<li>
<p>词解：<a href="http://zh.wikipedia.org/zh-cn/%E9%AB%98%E4%B9%9F%E4%BA%8B%E4%BB%B6"
   rel="noopener noreferrer" target="_blank" class="external">高也事件</a>
 <a href="http://zh.wikipedia.org/zh-cn/%E8%8D%89%E6%B3%A5%E9%A9%AC"
   rel="noopener noreferrer" target="_blank" class="external">草泥马</a>
 <a href="http://baike.baidu.com/view/3112854.htm"
   rel="noopener noreferrer" target="_blank" class="external">妈妈评审团 </a>
<a href="http://cn.bing.com/search?FORM=IEFM1&amp;amp;q=%E7%93%B7%E5%99%A8%E5%9B%BD"
   rel="noopener noreferrer" target="_blank" class="external">瓷器国</a>
</p>
</li>
<li>
<p>Google： <a href="http://www.google.com/press/new-approach-to-china/update.html"
   rel="noopener noreferrer" target="_blank" class="external">关于谷歌中国的最新声明</a>
</p>
</li>
<li>
<p><a href="http://tech.sina.com.cn/i/2010-07-24/20434467150.shtml"
   rel="noopener noreferrer" target="_blank" class="external">《“狗日的”腾讯》</a>
</p>
</li>
<li>
<p><a href="http://tech.qq.com/zt2010/cnnic26/"
   rel="noopener noreferrer" target="_blank" class="external">《第26次中国互联网络发展状况统计报告》</a>
</p>
</li>
<li>
<p><a href="http://www.gov.cn/gongbao/content/2004/content_62714.htm"
   rel="noopener noreferrer" target="_blank" class="external">《中华人民共和国宪法》</a>
</p>
</li>
<li>
<p><a href="http://yyyyiiii.blogspot.com/2010/10/cnn-zakaria-2010103.html"
   rel="noopener noreferrer" target="_blank" class="external">温家宝接受CNN专访全文</a>
</p>
</li>
</ol>
]]></content:encoded><category>viewpoint</category><category domain="tags">社会</category><category domain="tags">语言</category></item><item><title>西安行散记</title><link>https://yifeitao.com/impress-of-xian/</link><pubDate>Sun, 03 Oct 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/impress-of-xian/</guid><description>&lt;p&gt;废话：按我一贯的风格，先说一点废话，反正这个世界也是由废的话语和废的人生构成的嘛。在国庆长假写游记，会被人误会在边玩边写，但事实上我宅了好几天了，去西安已经是一个多月前的事情了。一般来说，我做事情的流程是这样的：在最恰当的时候躲闪一下，心想先拖一拖，不急不急，等过了风头，又心想都过了好时机，还是算了吧。有一天苹果砸头上时我搞清楚了自己的节奏，终于明白为啥一事无成了。于是心里暗骂，老子要反抗一下，亡羊补牢，羊跑光了也要补一下。游记写完了，以下不是游记，是扯淡。more&lt;/p&gt;
&lt;h3 id="1地主"&gt;1地主&lt;/h3&gt;
&lt;p&gt;我这种俗人的眼中的旅游，大约是坐车嫌烦，走路嫌累，拍照还嫌俗，所以心血来潮去西安多半是因为有地主可以投靠。如我所料，去了西安本人几乎是饭来张口，衣来伸手。所以要大力感谢两位仁兄衣食住行上的大力支持，使我得以对景点实施零元清洗。我这种薄情的人，还能找到几个坚定的饭票，算是造化了。&lt;/p&gt;
&lt;h3 id="2火车上"&gt;2火车上&lt;/h3&gt;
&lt;p&gt;火车上卖了站票卖小板凳，火车上多年坚持不懈的卖高科技袜子，火车上的盒饭一个小时内降价两次，火车上打开水泡面的人烫伤了小孩下车去医院，火车上的小萝莉穿着山寨的潮品，火车上的打工妹说家乡某人的葬礼请了两帮人看谁表演卖力结果几乎打起来，火车上的广播说我们早上到的车要晚点到中午。&lt;/p&gt;
&lt;h3 id="3站牌"&gt;3站牌&lt;/h3&gt;
&lt;p&gt;错误的站牌比没有站牌更可怕，正如错误的信仰比没有信仰更可怕。这是我西安行的第一个收获，以后或许会列到我写的“你一定要知道的一百个人生道理”中。在错误的站牌下傻傻等了快半小时，觉醒般的问小店阿姨得知公交车路线已经变了，在酷热天气和热情电话的压力下，还是拉动内需打的吧。&lt;/p&gt;
&lt;h3 id="4陕西省博物馆"&gt;4陕西省博物馆&lt;/h3&gt;
&lt;p&gt;博物馆派发免费票，也卖特殊展的票，尽管售票处用栏杆尽力想把队伍弄成长蛇形，但人群那种想要变成半圆形的冲动还是难以抑制，于是有了提醒人们排队这种职业。陕西号称“一锄头下去就挖出一个文物”，而挖出来的宝物除了供奉北京外，大多在陕博了。每一件宝物背后都有一个故事：宝物的主人最后死了，宝物后来被发掘了。唐长安城地图的旁边是日本古东京的对照图，身为大唐后人，不知是该自豪还是自嘲。&lt;/p&gt;
&lt;h3 id="5钟鼓楼"&gt;5钟鼓楼&lt;/h3&gt;
&lt;p&gt;钟楼还在，鼓楼也还在，可是已经没有晨钟暮鼓，钟楼上的钟可以十块钱敲三下，但我不知道意义在哪里。在钟楼上看四个方向的大街，一个比一个繁华，心中感谢旅游业，让我们在故纸堆外也能连接一下历史。钟楼上宫廷乐的表演者在热死人的天气里穿着华丽的衣服吹着电风扇，我想应该有人给他们扯风才对。&lt;/p&gt;
&lt;h3 id="6碑林"&gt;6碑林&lt;/h3&gt;
&lt;p&gt;钟楼上的古钟不响了，放在碑林博物馆。碑林的“碑”字没有上面那一小撇，因为背石头的奴隶是没有头发的。碑石上的字会被人拓片后破坏以提高拓片价值，“孔老二”的石像被红小兵砸成碎片现在又可笑的修补起来却没了手臂。唐代的石碑还在，我买了才五年的硬盘报废了……&lt;/p&gt;
&lt;h3 id="7汉茂陵"&gt;7汉茂陵&lt;/h3&gt;
&lt;p&gt;茂陵是刘彻的墓，据说修了53年，据说用了每年财政收入的三分之一，据说现在啥也没有了只剩一个土堆了。汉骠骑大将军冠军侯霍公去病墓，祁连山状，有游客兴奋的说，这么牛的人物，历史书上一定有写吧。柏林山庙，指代103座庙，无聊吧，去病石踩了可以无病无灾，神奇吧。&lt;/p&gt;
&lt;h3 id="8乾陵"&gt;8乾陵&lt;/h3&gt;
&lt;p&gt;乾陵是武则天和他丈夫的合葬墓，但清朝有个官员给立了个碑叫“唐高宗乾陵”，他一定是蛋疼了。武则天的无字碑上面有很多字，据说后来的文人骚客写的，是有多骚……据说乾陵是按躺着的美女依山构型的，所以按照不能和墓地合影的科学，游客一般都会选择和女皇的咪咪合影，三俗吧。武则天把自己的孙子懿德太子打死了，还规定葬也不能葬在长安，不过她儿子让懿德太子给她在附近陪葬，不知道安宁否。&lt;/p&gt;
&lt;h3 id="9法门寺"&gt;9法门寺&lt;/h3&gt;
&lt;p&gt;老百姓把宝物献给皇帝，唐朝的皇帝把宝物献给法门寺，真身塔里面埋得满满的。据说红卫兵要强拆，于是有方丈塔前自焚了，竟然就保留下来了。除了只在每年大年初一展出的真身舍利，我印象最深的是法门寺的卫生间，让我这土鳖大为赞叹，不愧是近二十亿打造出来的。那天我肠胃不适所以都没去看大佛，还是因为没有去看大佛所以肠胃不适了？我忘了。&lt;/p&gt;
&lt;h3 id="10兵马俑"&gt;10兵马俑&lt;/h3&gt;
&lt;p&gt;兵马俑的鞋底是有花纹的，兵马俑本来是有色彩的，兵马俑是神态各异的，秦始皇陵建得太牛现在都不敢去发掘，所以秦朝速亡了……易碎的驾车的俑姿态几千年不变，但他驾的车已经腐逝了。兵马俑馆里有一种可以把你的头像做成兵马俑的服务，我找不到玉漱公主还是算了。另外，兵俑都是男的，马俑我没有研究。&lt;/p&gt;
&lt;h3 id="11骊山"&gt;11骊山&lt;/h3&gt;
&lt;p&gt;兵马俑的雨覆没了地面，浸透了我们的鞋。据说是罕见的大，但对想爬到烽火台的人而言，穿拖鞋也要上。于是两个拎着运动鞋穿着拖鞋的人爬到了烽火台，经过了以前叫“捉蒋亭”后来为了照顾台湾游客感情改名叫“兵谏亭”的地方，蒋介石藏身处也算是一景……烽火台上印象最深刻的是“阿亮到此一游”，用黑漆喷的斗大的字。阿亮啊，你在哪里，让我这记忆点奇怪的人打你一顿好不好？&lt;/p&gt;
&lt;h3 id="12华清池"&gt;12华清池&lt;/h3&gt;
&lt;p&gt;没有一个叫华清池的池子。据说皇帝的浴池的出水口是大臣的浴池的进水口。温泉泡脚20块，水里面或许会有杨贵妃用过的水分子吧。长恨歌表演，整个骊山是背景，我光看他们搭搭台，郭德纲说，唐玄宗和杨贵妃，纯洁的爱情。老蒋住在华清池的环园，我觉得作为行宫有些穷酸，那里面的浴池慈禧老太太用过。&lt;/p&gt;
&lt;h3 id="13小雁塔"&gt;13小雁塔&lt;/h3&gt;
&lt;p&gt;小雁塔占了一个小字，所以游客稀少。塔前的公园里，唐乐队里演奏排箫的女孩闲下来时发发短信，旁边是弹琵琶的老奶奶。荐福寺的海归义净的宝塔诗：游，愁。赤县远，丹丝抽。鹫岭寒风驰，龙河激水流。既喜朝闻日复日，不觉愁年秋更秋。已毕祗山本愿诚难遇，终望持经振锡望神州。高僧也玩文字游戏……&lt;/p&gt;
&lt;h3 id="14大雁塔"&gt;14大雁塔&lt;/h3&gt;
&lt;p&gt;大雁塔有慈恩寺，慈恩寺有玄奘，玄奘有孙悟空，悟空有紫霞仙子……可能慕朱茵之名的人太多。大雁塔前的广场，有据说是亚洲最大的音乐喷泉，走得太急无缘一见，也许再去看时第一的名号就在圈地浪潮中丢失了。大雁塔的地宫有免费的导游，给你讲解什么属相带什么菩萨的科学，我想与时俱进的话，应该用星座来区分的。唐僧带来的贝叶经还在，我买了才三年的光盘却读不出来了。&lt;/p&gt;
&lt;h3 id="15大唐芙蓉园"&gt;15大唐芙蓉园&lt;/h3&gt;
&lt;p&gt;很大，不唐，有石刻诗墙、表演魔术的悟空和饱食终日的金鱼群。芙蓉什么的，不说也罢。&lt;/p&gt;
&lt;h3 id="16西安交通大学"&gt;16西安交通大学&lt;/h3&gt;
&lt;p&gt;西交大最多只需要逛一边，因为另一边是对称的。有一座很低调的很高的行政楼，有很大的司南，有自习女神，还有我朋友多年的回忆。刚好赶上开学领书的新人在校园行色匆匆，房子和道路，对于一个过客的轻轻一瞥和将要着力生活的人的急切透视，有怎样的不同呢？&lt;/p&gt;
&lt;p&gt;后记：再次感谢纠结漂泊在西安的两位。感谢促成此文的田同学。有想看照片的请到我的人人网相册，不过角度很无聊，模特不美型。&lt;/p&gt;</description><content:encoded><![CDATA[<p>废话：按我一贯的风格，先说一点废话，反正这个世界也是由废的话语和废的人生构成的嘛。在国庆长假写游记，会被人误会在边玩边写，但事实上我宅了好几天了，去西安已经是一个多月前的事情了。一般来说，我做事情的流程是这样的：在最恰当的时候躲闪一下，心想先拖一拖，不急不急，等过了风头，又心想都过了好时机，还是算了吧。有一天苹果砸头上时我搞清楚了自己的节奏，终于明白为啥一事无成了。于是心里暗骂，老子要反抗一下，亡羊补牢，羊跑光了也要补一下。游记写完了，以下不是游记，是扯淡。more</p>
<h3 id="1地主">1地主</h3>
<p>我这种俗人的眼中的旅游，大约是坐车嫌烦，走路嫌累，拍照还嫌俗，所以心血来潮去西安多半是因为有地主可以投靠。如我所料，去了西安本人几乎是饭来张口，衣来伸手。所以要大力感谢两位仁兄衣食住行上的大力支持，使我得以对景点实施零元清洗。我这种薄情的人，还能找到几个坚定的饭票，算是造化了。</p>
<h3 id="2火车上">2火车上</h3>
<p>火车上卖了站票卖小板凳，火车上多年坚持不懈的卖高科技袜子，火车上的盒饭一个小时内降价两次，火车上打开水泡面的人烫伤了小孩下车去医院，火车上的小萝莉穿着山寨的潮品，火车上的打工妹说家乡某人的葬礼请了两帮人看谁表演卖力结果几乎打起来，火车上的广播说我们早上到的车要晚点到中午。</p>
<h3 id="3站牌">3站牌</h3>
<p>错误的站牌比没有站牌更可怕，正如错误的信仰比没有信仰更可怕。这是我西安行的第一个收获，以后或许会列到我写的“你一定要知道的一百个人生道理”中。在错误的站牌下傻傻等了快半小时，觉醒般的问小店阿姨得知公交车路线已经变了，在酷热天气和热情电话的压力下，还是拉动内需打的吧。</p>
<h3 id="4陕西省博物馆">4陕西省博物馆</h3>
<p>博物馆派发免费票，也卖特殊展的票，尽管售票处用栏杆尽力想把队伍弄成长蛇形，但人群那种想要变成半圆形的冲动还是难以抑制，于是有了提醒人们排队这种职业。陕西号称“一锄头下去就挖出一个文物”，而挖出来的宝物除了供奉北京外，大多在陕博了。每一件宝物背后都有一个故事：宝物的主人最后死了，宝物后来被发掘了。唐长安城地图的旁边是日本古东京的对照图，身为大唐后人，不知是该自豪还是自嘲。</p>
<h3 id="5钟鼓楼">5钟鼓楼</h3>
<p>钟楼还在，鼓楼也还在，可是已经没有晨钟暮鼓，钟楼上的钟可以十块钱敲三下，但我不知道意义在哪里。在钟楼上看四个方向的大街，一个比一个繁华，心中感谢旅游业，让我们在故纸堆外也能连接一下历史。钟楼上宫廷乐的表演者在热死人的天气里穿着华丽的衣服吹着电风扇，我想应该有人给他们扯风才对。</p>
<h3 id="6碑林">6碑林</h3>
<p>钟楼上的古钟不响了，放在碑林博物馆。碑林的“碑”字没有上面那一小撇，因为背石头的奴隶是没有头发的。碑石上的字会被人拓片后破坏以提高拓片价值，“孔老二”的石像被红小兵砸成碎片现在又可笑的修补起来却没了手臂。唐代的石碑还在，我买了才五年的硬盘报废了……</p>
<h3 id="7汉茂陵">7汉茂陵</h3>
<p>茂陵是刘彻的墓，据说修了53年，据说用了每年财政收入的三分之一，据说现在啥也没有了只剩一个土堆了。汉骠骑大将军冠军侯霍公去病墓，祁连山状，有游客兴奋的说，这么牛的人物，历史书上一定有写吧。柏林山庙，指代103座庙，无聊吧，去病石踩了可以无病无灾，神奇吧。</p>
<h3 id="8乾陵">8乾陵</h3>
<p>乾陵是武则天和他丈夫的合葬墓，但清朝有个官员给立了个碑叫“唐高宗乾陵”，他一定是蛋疼了。武则天的无字碑上面有很多字，据说后来的文人骚客写的，是有多骚……据说乾陵是按躺着的美女依山构型的，所以按照不能和墓地合影的科学，游客一般都会选择和女皇的咪咪合影，三俗吧。武则天把自己的孙子懿德太子打死了，还规定葬也不能葬在长安，不过她儿子让懿德太子给她在附近陪葬，不知道安宁否。</p>
<h3 id="9法门寺">9法门寺</h3>
<p>老百姓把宝物献给皇帝，唐朝的皇帝把宝物献给法门寺，真身塔里面埋得满满的。据说红卫兵要强拆，于是有方丈塔前自焚了，竟然就保留下来了。除了只在每年大年初一展出的真身舍利，我印象最深的是法门寺的卫生间，让我这土鳖大为赞叹，不愧是近二十亿打造出来的。那天我肠胃不适所以都没去看大佛，还是因为没有去看大佛所以肠胃不适了？我忘了。</p>
<h3 id="10兵马俑">10兵马俑</h3>
<p>兵马俑的鞋底是有花纹的，兵马俑本来是有色彩的，兵马俑是神态各异的，秦始皇陵建得太牛现在都不敢去发掘，所以秦朝速亡了……易碎的驾车的俑姿态几千年不变，但他驾的车已经腐逝了。兵马俑馆里有一种可以把你的头像做成兵马俑的服务，我找不到玉漱公主还是算了。另外，兵俑都是男的，马俑我没有研究。</p>
<h3 id="11骊山">11骊山</h3>
<p>兵马俑的雨覆没了地面，浸透了我们的鞋。据说是罕见的大，但对想爬到烽火台的人而言，穿拖鞋也要上。于是两个拎着运动鞋穿着拖鞋的人爬到了烽火台，经过了以前叫“捉蒋亭”后来为了照顾台湾游客感情改名叫“兵谏亭”的地方，蒋介石藏身处也算是一景……烽火台上印象最深刻的是“阿亮到此一游”，用黑漆喷的斗大的字。阿亮啊，你在哪里，让我这记忆点奇怪的人打你一顿好不好？</p>
<h3 id="12华清池">12华清池</h3>
<p>没有一个叫华清池的池子。据说皇帝的浴池的出水口是大臣的浴池的进水口。温泉泡脚20块，水里面或许会有杨贵妃用过的水分子吧。长恨歌表演，整个骊山是背景，我光看他们搭搭台，郭德纲说，唐玄宗和杨贵妃，纯洁的爱情。老蒋住在华清池的环园，我觉得作为行宫有些穷酸，那里面的浴池慈禧老太太用过。</p>
<h3 id="13小雁塔">13小雁塔</h3>
<p>小雁塔占了一个小字，所以游客稀少。塔前的公园里，唐乐队里演奏排箫的女孩闲下来时发发短信，旁边是弹琵琶的老奶奶。荐福寺的海归义净的宝塔诗：游，愁。赤县远，丹丝抽。鹫岭寒风驰，龙河激水流。既喜朝闻日复日，不觉愁年秋更秋。已毕祗山本愿诚难遇，终望持经振锡望神州。高僧也玩文字游戏……</p>
<h3 id="14大雁塔">14大雁塔</h3>
<p>大雁塔有慈恩寺，慈恩寺有玄奘，玄奘有孙悟空，悟空有紫霞仙子……可能慕朱茵之名的人太多。大雁塔前的广场，有据说是亚洲最大的音乐喷泉，走得太急无缘一见，也许再去看时第一的名号就在圈地浪潮中丢失了。大雁塔的地宫有免费的导游，给你讲解什么属相带什么菩萨的科学，我想与时俱进的话，应该用星座来区分的。唐僧带来的贝叶经还在，我买了才三年的光盘却读不出来了。</p>
<h3 id="15大唐芙蓉园">15大唐芙蓉园</h3>
<p>很大，不唐，有石刻诗墙、表演魔术的悟空和饱食终日的金鱼群。芙蓉什么的，不说也罢。</p>
<h3 id="16西安交通大学">16西安交通大学</h3>
<p>西交大最多只需要逛一边，因为另一边是对称的。有一座很低调的很高的行政楼，有很大的司南，有自习女神，还有我朋友多年的回忆。刚好赶上开学领书的新人在校园行色匆匆，房子和道路，对于一个过客的轻轻一瞥和将要着力生活的人的急切透视，有怎样的不同呢？</p>
<p>后记：再次感谢纠结漂泊在西安的两位。感谢促成此文的田同学。有想看照片的请到我的人人网相册，不过角度很无聊，模特不美型。</p>
]]></content:encoded><category>life</category><category domain="tags">旅行</category><category domain="tags">历史</category></item><item><title>推选第五辑</title><link>https://yifeitao.com/twitter-collection-5/</link><pubDate>Fri, 24 Sep 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/twitter-collection-5/</guid><description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;看群魔乱舞，无耻横行，希望湮灭，妖怪造孽。耳光上脸，清风拂面；口水浇头，如沐春雨。乱哄哄你未唱罢我登场，闹腾腾道高一尺魔高一丈。不信黑白颠倒无休，到头来，尘归尘，土归土&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每个男孩，生下来都是青蛙王子，等待自己的公主来解救。他们的爱弥漫出他们的外表，这样的男孩，你伤不起。——你丫去死&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;矫情心未死，冷眼爱似干&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;据说最重的承诺是“你放心”，不过贾宝玉不还是心有余而力不足&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;杯具：微博玩多了，看东西喜欢从下往上。mor&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;经研究发现，禹晋永上辈子是折翼的天使，是来拯救唐骏哥哥的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;新版《流星·蝴蝶·剑》结局，孟星魂告诉小蝶孩子是叶翔的，小蝶高兴得又蹦又跳的说“我们的孩子是叶翔的！我们的孩子是叶翔的！”虽然我充分理解她的高兴，但还是不厚道的笑场了。向 @陈意涵 道歉，罪过罪过。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人们有“低俗”的权利，也有“反低俗”的权利，这两者之间需要谨慎博弈，而不是一刀切。电影分级制度就是一种妥协，让“低俗”有它自己的受限的空间。事实上，所谓的高雅往往孕育自低俗，比如所谓的国粹京剧，曾经也不是什么干净货&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;火车上卖完站票竟然又卖小凳，话说站票的价格可是和硬座一样的……听旁边陕西美眉闲聊，说起家乡葬礼的铺张，某家有钱，老人葬礼请了两台歌舞，唱得卖力的奖一千块，结果几欲群殴，各发一千块息事宁人&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不期而遇的听到一首歌是最有爱的，或者像一见钟情，或者像他乡遇故知&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你是否还存着鳄鱼的眼泪给别人，你是否还存有一丝力气来愤怒与伤心&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你流氓起来颇有当年3721的风范，却不知道如今人家360了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;屏蔽在前，山寨在后&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;看日影《零的焦点》，几次响起only you的配乐，顿时恍神，脱离悲剧气氛，天杀的罗家英…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;从来就没有什么救世主！中国出了个大救星&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;老师辛苦了，希望你们能放下光环，重新做人。我这个天性凉薄的人，不太能记住你们对我的好，更记不住你们对我的不好，因为所有的好坏都只是过眼云烟。曾经有一个老师让我泪流满面，但却是在动漫中，我知道那不是真的。老师辛苦了，背着灵魂工程师的莫大责任做着流水线工人的活，虽然你们也只是普通人&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;师者，所以传道授业解惑也。向所有传道授业解惑的人致敬。值得尊敬的不是职业，而是职业精神。教师之所以重要，是因为他们的职业精神对民族精神影响很大。去年看偶像剧《恰同学少年》，里面真是有一帮好老师啊，可惜他们的学生后来不小心灭了师道尊严。臭老九什么的，最讨厌了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;师道不存，则学生也就不再意气风发、挥斥方遒，如果还有什么理想的话，也许是“吃得苦中苦，方为人上人”。“我在你们的头顶上看到了月考分数曲线，看到了你们能考上的大学，看到了你们的未来！”“我的未来不是梦，因为当年的人把几代人的梦都做光了。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;喇叭，你好！喇叭，再见&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;僧多肉少&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有谁想和我一起买彩票么？毕竟我能够一个号码都不中啊&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最近要学语数外。所以其实我是一名中学生。但其实我是一个演员。其实我精神分裂。其实我是一个骗子。其实我是一个爱国者。其实我是一枚导弹。其实我是 GPS导航仪。其实我是国产山寨机。其实我是在搞微创新。其实我就是善于抄袭。其实我上面有人。其实我住顶楼。其实顶楼很危险。其实真相只有一个&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;信息爆炸，一地鸡毛&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果家仇国恨还存在，我愿是因为我们有仁爱之心，而不是因为我们有暴戾之气。不爱你的亲人同胞，不爱黎民众生，空谈爱国，国之何存&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;从新闻富矿到剧本富矿，只缺一个可以拍好电影的时代了。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<ol>
<li>
<p>看群魔乱舞，无耻横行，希望湮灭，妖怪造孽。耳光上脸，清风拂面；口水浇头，如沐春雨。乱哄哄你未唱罢我登场，闹腾腾道高一尺魔高一丈。不信黑白颠倒无休，到头来，尘归尘，土归土</p>
</li>
<li>
<p>每个男孩，生下来都是青蛙王子，等待自己的公主来解救。他们的爱弥漫出他们的外表，这样的男孩，你伤不起。——你丫去死</p>
</li>
<li>
<p>矫情心未死，冷眼爱似干</p>
</li>
<li>
<p>据说最重的承诺是“你放心”，不过贾宝玉不还是心有余而力不足</p>
</li>
<li>
<p>杯具：微博玩多了，看东西喜欢从下往上。mor</p>
</li>
<li>
<p>经研究发现，禹晋永上辈子是折翼的天使，是来拯救唐骏哥哥的</p>
</li>
<li>
<p>新版《流星·蝴蝶·剑》结局，孟星魂告诉小蝶孩子是叶翔的，小蝶高兴得又蹦又跳的说“我们的孩子是叶翔的！我们的孩子是叶翔的！”虽然我充分理解她的高兴，但还是不厚道的笑场了。向 @陈意涵 道歉，罪过罪过。</p>
</li>
<li>
<p>人们有“低俗”的权利，也有“反低俗”的权利，这两者之间需要谨慎博弈，而不是一刀切。电影分级制度就是一种妥协，让“低俗”有它自己的受限的空间。事实上，所谓的高雅往往孕育自低俗，比如所谓的国粹京剧，曾经也不是什么干净货</p>
</li>
<li>
<p>火车上卖完站票竟然又卖小凳，话说站票的价格可是和硬座一样的……听旁边陕西美眉闲聊，说起家乡葬礼的铺张，某家有钱，老人葬礼请了两台歌舞，唱得卖力的奖一千块，结果几欲群殴，各发一千块息事宁人</p>
</li>
<li>
<p>不期而遇的听到一首歌是最有爱的，或者像一见钟情，或者像他乡遇故知</p>
</li>
<li>
<p>你是否还存着鳄鱼的眼泪给别人，你是否还存有一丝力气来愤怒与伤心</p>
</li>
<li>
<p>你流氓起来颇有当年3721的风范，却不知道如今人家360了</p>
</li>
<li>
<p>屏蔽在前，山寨在后</p>
</li>
<li>
<p>看日影《零的焦点》，几次响起only you的配乐，顿时恍神，脱离悲剧气氛，天杀的罗家英…</p>
</li>
<li>
<p>从来就没有什么救世主！中国出了个大救星</p>
</li>
<li>
<p>老师辛苦了，希望你们能放下光环，重新做人。我这个天性凉薄的人，不太能记住你们对我的好，更记不住你们对我的不好，因为所有的好坏都只是过眼云烟。曾经有一个老师让我泪流满面，但却是在动漫中，我知道那不是真的。老师辛苦了，背着灵魂工程师的莫大责任做着流水线工人的活，虽然你们也只是普通人</p>
</li>
<li>
<p>师者，所以传道授业解惑也。向所有传道授业解惑的人致敬。值得尊敬的不是职业，而是职业精神。教师之所以重要，是因为他们的职业精神对民族精神影响很大。去年看偶像剧《恰同学少年》，里面真是有一帮好老师啊，可惜他们的学生后来不小心灭了师道尊严。臭老九什么的，最讨厌了</p>
</li>
<li>
<p>师道不存，则学生也就不再意气风发、挥斥方遒，如果还有什么理想的话，也许是“吃得苦中苦，方为人上人”。“我在你们的头顶上看到了月考分数曲线，看到了你们能考上的大学，看到了你们的未来！”“我的未来不是梦，因为当年的人把几代人的梦都做光了。</p>
</li>
<li>
<p>喇叭，你好！喇叭，再见</p>
</li>
<li>
<p>僧多肉少</p>
</li>
<li>
<p>有谁想和我一起买彩票么？毕竟我能够一个号码都不中啊</p>
</li>
<li>
<p>最近要学语数外。所以其实我是一名中学生。但其实我是一个演员。其实我精神分裂。其实我是一个骗子。其实我是一个爱国者。其实我是一枚导弹。其实我是 GPS导航仪。其实我是国产山寨机。其实我是在搞微创新。其实我就是善于抄袭。其实我上面有人。其实我住顶楼。其实顶楼很危险。其实真相只有一个</p>
</li>
<li>
<p>信息爆炸，一地鸡毛</p>
</li>
<li>
<p>如果家仇国恨还存在，我愿是因为我们有仁爱之心，而不是因为我们有暴戾之气。不爱你的亲人同胞，不爱黎民众生，空谈爱国，国之何存</p>
</li>
<li>
<p>从新闻富矿到剧本富矿，只缺一个可以拍好电影的时代了。</p>
</li>
</ol>
]]></content:encoded><category>life</category><category domain="tags">推特</category><category domain="tags">碎片</category></item><item><title>关于拆迁的三个思想实验</title><link>https://yifeitao.com/mind-experiment-about-chaiqian/</link><pubDate>Thu, 23 Sep 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/mind-experiment-about-chaiqian/</guid><description>&lt;p&gt;关注&lt;a href="http://news.cntv.cn/special/chqzf/shouye/index.shtml"
rel="noopener noreferrer" target="_blank" class="external"&gt;江西宜黄拆迁事件&lt;/a&gt;
时，我设想了以下三个场景，姑且称其为思想实验吧。&lt;/p&gt;
&lt;h2 id="实验一-交易失衡"&gt;实验一 交易失衡&lt;/h2&gt;
&lt;p&gt;我们往往会说，很多东西是用金钱无法衡量的，然而用金钱来衡量价值可能是可操作性最强的方法。而事实上往往正因为在赔偿金额上达不成一致，才发生了诸多强拆造成的悲剧。&lt;/p&gt;
&lt;p&gt;注意在下面的情形中，你选定自己的身份是买方、卖方或者第三方，可能会做出不同的判断。你也可以假设是&lt;strong&gt;在作出判断后再随机获取一个身份&lt;/strong&gt;。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;张三有一个很珍视的旧玩具球，勉强可以定个市场价10元。李四非常想买这个玩具球，于是&lt;strong&gt;张三被动的卷入了这场交易&lt;/strong&gt;。李四出价10元，张三自然不卖。直到李四出价到1万元，张三还是不卖。李四出价到10万元，张三决定卖掉。尽管在旁人看来这很疯狂，但交易成功了。然而也可能出现失 衡：李四出价到1万元时，觉得达到上限，而张三却坚决不愿意1万元卖出。那么这场失衡的交易该如何结局呢？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其他情况同上，但这个玩具球变成一颗药丸，而张三李四都得了不吃这颗药丸就会死的病。你的判断会发生变化吗？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;其他情况同上，依然是一颗救命的药丸，但这次李四变成了李四们，共一百个李四，一颗药丸可以救活一百个李四或者一个张三。你的判断会发生变化吗？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;张三拥有一片土地，在上面盖了一座房子。李四想买这片地，经过专家评估，这块地加房子值100万。但张三对房子有感情，不愿意卖；李四不得已出价到200 万，张三还是不愿意卖。假设李四出价到1000万，张三才愿意卖掉，但李四只愿意出价到200万。面对这场失衡的交易，你要作怎样的判断呢？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;基本情况同上，但是这次买地的变成了政府，政府觉得在这里修一个公园有益于广大市民。你的判断会发生变化吗？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在张三所在的国家，规定&lt;strong&gt;个人并不拥有土地&lt;/strong&gt;，张三在一片土地上盖了一座房子。政府觉得在这里修一个公园有益于广大市民。但张三对房子有感情，不愿意为了100万的拆迁费离开自己的房子，除非涨到1000万才能接受。你又要作怎样的判断呢？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;基本情况同上。但这次政府把这片土地卖给了开发商。开发商因为这个“钉子户”而面临1亿的损失，于是求助于卖地的政府。你的判断会发生变化吗？&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="实验二-自由持枪"&gt;实验二 自由持枪&lt;/h2&gt;
&lt;p&gt;在美国等国家，私人可以合法拥有枪支，这常常成为中国诟病西方制度的一个典型举例。我们现在要做的是思想实验，所以不去考虑枪支管制是否必要，不管三七二十一，先&lt;strong&gt;想象在中国私人可以合法拥有枪支&lt;/strong&gt;。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;你是一个拆迁户，比如实验一中的张三，政府派人来强拆了，对你家人围追堵截，你会考虑使用枪支么？是用枪指别人的头或是用枪指自己的头？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你是负责拆迁工作的政府官员，下决定强拆张三家，你会担心张三家的人用枪报复么？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你是拆迁队的，负责动手拆迁，你会害怕张三家的人一怒之下用枪袭击你么？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果作为拥有枪支的一个普通人，总的来说，你的安全感会降低吗？还是会提高？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最后假设除了政府，&lt;strong&gt;私人不能拥有任何可能成为武器的东西&lt;/strong&gt;，可以威胁杀人或自杀的刀具、汽油等等都被严格管制。作为一个拆迁户，你的安全感是提高了还是降低了呢？作为一个强拆者呢？作为一个普通人呢？&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="实验三-媒体裁决"&gt;实验三 媒体裁决&lt;/h2&gt;
&lt;p&gt;我们知道，在多数国家，媒体都是司法体制外的一股重要力量，中国也是如此。获得曝光的案件会得到更广泛的关注，司法机构会因此受到强大的舆论压力。&lt;/p&gt;
&lt;p&gt;现在要构想的场景是在某个国家里，&lt;strong&gt;媒体和舆论是引导审判的决定性因素&lt;/strong&gt;。某个拆迁案件如果被媒体广泛报道，则拆迁户作为弱者往往受到舆论同情，获得较好的判决结果，反之则会被悄无声息的强拆。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;假设你是一个拆迁户，面临被强拆的局面（你觉得强拆是非法的），你会如何应对或利用媒体和舆论？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;假设你是一个拆迁户，面被临强拆的局面（你不管合法非法，就是想多敲诈一点钱），你会如何应对或利用媒体和舆论？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;假设你是负责强拆的官员（你觉得强拆是合法的），你会如何应对或利用媒体和舆论？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;假设你是负责强拆的官员（你不管合法非法，就是想合伙谋些私利），你会如何应对或利用媒体和舆论？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作为一家媒体编辑或记者，面对层出不穷的拆迁事件，你如何做选择性报道？优先报道本地的还是外地的？优先报道和平协商的还是暴力对抗的？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;作为一个媒体受众，你会关注层出不穷的拆迁新闻吗？你希望看到本地的还是外地的拆迁新闻？你会被怎样暴力程度的拆迁新闻吸引？&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我提出了上面的一系列场景与问题，但并没有得到任何成熟的答案，期待和读到本文的你一起做一个小小的探讨。尽管我们的思考可能于事无补，但至少我们可以选择&lt;strong&gt;保留思考的能力&lt;/strong&gt;。&lt;/p&gt;</description><content:encoded><![CDATA[<p>关注<a href="http://news.cntv.cn/special/chqzf/shouye/index.shtml"
   rel="noopener noreferrer" target="_blank" class="external">江西宜黄拆迁事件</a>
时，我设想了以下三个场景，姑且称其为思想实验吧。</p>
<h2 id="实验一-交易失衡">实验一 交易失衡</h2>
<p>我们往往会说，很多东西是用金钱无法衡量的，然而用金钱来衡量价值可能是可操作性最强的方法。而事实上往往正因为在赔偿金额上达不成一致，才发生了诸多强拆造成的悲剧。</p>
<p>注意在下面的情形中，你选定自己的身份是买方、卖方或者第三方，可能会做出不同的判断。你也可以假设是<strong>在作出判断后再随机获取一个身份</strong>。</p>
<ol>
<li>
<p>张三有一个很珍视的旧玩具球，勉强可以定个市场价10元。李四非常想买这个玩具球，于是<strong>张三被动的卷入了这场交易</strong>。李四出价10元，张三自然不卖。直到李四出价到1万元，张三还是不卖。李四出价到10万元，张三决定卖掉。尽管在旁人看来这很疯狂，但交易成功了。然而也可能出现失  衡：李四出价到1万元时，觉得达到上限，而张三却坚决不愿意1万元卖出。那么这场失衡的交易该如何结局呢？</p>
</li>
<li>
<p>其他情况同上，但这个玩具球变成一颗药丸，而张三李四都得了不吃这颗药丸就会死的病。你的判断会发生变化吗？</p>
</li>
<li>
<p>其他情况同上，依然是一颗救命的药丸，但这次李四变成了李四们，共一百个李四，一颗药丸可以救活一百个李四或者一个张三。你的判断会发生变化吗？</p>
</li>
<li>
<p>张三拥有一片土地，在上面盖了一座房子。李四想买这片地，经过专家评估，这块地加房子值100万。但张三对房子有感情，不愿意卖；李四不得已出价到200 万，张三还是不愿意卖。假设李四出价到1000万，张三才愿意卖掉，但李四只愿意出价到200万。面对这场失衡的交易，你要作怎样的判断呢？</p>
</li>
<li>
<p>基本情况同上，但是这次买地的变成了政府，政府觉得在这里修一个公园有益于广大市民。你的判断会发生变化吗？</p>
</li>
<li>
<p>在张三所在的国家，规定<strong>个人并不拥有土地</strong>，张三在一片土地上盖了一座房子。政府觉得在这里修一个公园有益于广大市民。但张三对房子有感情，不愿意为了100万的拆迁费离开自己的房子，除非涨到1000万才能接受。你又要作怎样的判断呢？</p>
</li>
<li>
<p>基本情况同上。但这次政府把这片土地卖给了开发商。开发商因为这个“钉子户”而面临1亿的损失，于是求助于卖地的政府。你的判断会发生变化吗？</p>
</li>
</ol>
<h2 id="实验二-自由持枪">实验二 自由持枪</h2>
<p>在美国等国家，私人可以合法拥有枪支，这常常成为中国诟病西方制度的一个典型举例。我们现在要做的是思想实验，所以不去考虑枪支管制是否必要，不管三七二十一，先<strong>想象在中国私人可以合法拥有枪支</strong>。</p>
<ol>
<li>
<p>你是一个拆迁户，比如实验一中的张三，政府派人来强拆了，对你家人围追堵截，你会考虑使用枪支么？是用枪指别人的头或是用枪指自己的头？</p>
</li>
<li>
<p>你是负责拆迁工作的政府官员，下决定强拆张三家，你会担心张三家的人用枪报复么？</p>
</li>
<li>
<p>你是拆迁队的，负责动手拆迁，你会害怕张三家的人一怒之下用枪袭击你么？</p>
</li>
<li>
<p>如果作为拥有枪支的一个普通人，总的来说，你的安全感会降低吗？还是会提高？</p>
</li>
<li>
<p>最后假设除了政府，<strong>私人不能拥有任何可能成为武器的东西</strong>，可以威胁杀人或自杀的刀具、汽油等等都被严格管制。作为一个拆迁户，你的安全感是提高了还是降低了呢？作为一个强拆者呢？作为一个普通人呢？</p>
</li>
</ol>
<h2 id="实验三-媒体裁决">实验三 媒体裁决</h2>
<p>我们知道，在多数国家，媒体都是司法体制外的一股重要力量，中国也是如此。获得曝光的案件会得到更广泛的关注，司法机构会因此受到强大的舆论压力。</p>
<p>现在要构想的场景是在某个国家里，<strong>媒体和舆论是引导审判的决定性因素</strong>。某个拆迁案件如果被媒体广泛报道，则拆迁户作为弱者往往受到舆论同情，获得较好的判决结果，反之则会被悄无声息的强拆。</p>
<ol>
<li>
<p>假设你是一个拆迁户，面临被强拆的局面（你觉得强拆是非法的），你会如何应对或利用媒体和舆论？</p>
</li>
<li>
<p>假设你是一个拆迁户，面被临强拆的局面（你不管合法非法，就是想多敲诈一点钱），你会如何应对或利用媒体和舆论？</p>
</li>
<li>
<p>假设你是负责强拆的官员（你觉得强拆是合法的），你会如何应对或利用媒体和舆论？</p>
</li>
<li>
<p>假设你是负责强拆的官员（你不管合法非法，就是想合伙谋些私利），你会如何应对或利用媒体和舆论？</p>
</li>
<li>
<p>作为一家媒体编辑或记者，面对层出不穷的拆迁事件，你如何做选择性报道？优先报道本地的还是外地的？优先报道和平协商的还是暴力对抗的？</p>
</li>
<li>
<p>作为一个媒体受众，你会关注层出不穷的拆迁新闻吗？你希望看到本地的还是外地的拆迁新闻？你会被怎样暴力程度的拆迁新闻吸引？</p>
</li>
</ol>
<p>我提出了上面的一系列场景与问题，但并没有得到任何成熟的答案，期待和读到本文的你一起做一个小小的探讨。尽管我们的思考可能于事无补，但至少我们可以选择<strong>保留思考的能力</strong>。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">社会</category><category domain="tags">思想实验</category></item><item><title>你错过之后会后悔到流泪的20个Firefox扩展</title><link>https://yifeitao.com/my-firefox-addons-list/</link><pubDate>Wed, 15 Sep 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/my-firefox-addons-list/</guid><description>&lt;p&gt;由于最近在研究人人体的标题，所以惊悚的标题还请见谅，英文的post name更靠谱：my-firefox-addons-list。而且可能不止20个扩展。&lt;/p&gt;
&lt;p&gt;Firefox的优势不在于安全、速度或是外观，而是它的高度可定制性和海量的扩展，基本上可以说是“要什么有什么”，善用搜索词“某功能+Firefox扩展”常常能找到你需要的。选择了Firefox，有点像选择了一个操作系统，一旦用习惯了该平台上的软件（即扩展），即使这个平台有诸多缺点，你也会容忍适应习惯下来。下面介绍一下我自己多年来常用的和近来用来玩的一些扩展。&lt;/p&gt;
&lt;p&gt;为了达到更好的定制体验，建议安装Firefox全球统一版本，如果只是想试用一下，也可以安装火狐中国版。两个版本&lt;a href="http://www.mozillaonline.com/"
rel="noopener noreferrer" target="_blank" class="external"&gt;官网&lt;/a&gt;
都有下载。所有下面提到的扩展可以到&lt;a href="https://addons.mozilla.org/zh-CN/firefox/"
rel="noopener noreferrer" target="_blank" class="external"&gt;功能扩展中心&lt;/a&gt;
搜索下载，或者参考&lt;a href="https://addons.mozilla.org/zh-CN/firefox/collections/yisha7/choice/"
rel="noopener noreferrer" target="_blank" class="external"&gt;我的扩展收藏集&lt;/a&gt;
。当前Firefox版本号：3.6.10。&lt;/p&gt;
&lt;h2 id="part-a-必备扩展"&gt;Part A 必备扩展&lt;/h2&gt;
&lt;p&gt;所谓的必备扩展，是说为了达到某些“开箱即用”的浏览器（如Maxthon，搜狗浏览器等）的用户体验程度需要安装的扩展，Firefox不装扩展是绝对体验不出任何优点的。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Adblock Plus—— 广告过滤，可以把新浪新闻这种页面杀得一片片全是白的，不过我一般会对漂浮物之外的手下留情。使用入门：鼠标放在广告上会有过滤字样，按规则选好后一劳永逸&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;IE Tab Plus (FF 3.6+) —— 装上后就是所谓的双核浏览器了，对顽固的不遵守W3C标准的IE only的网页必备。我的经验是IE only的网站基本都是垃圾，少上一点的好。使用入门：点状态栏的图标切换&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DownThemAll! ——下载利器，批量下载，一键下载。类似1.x版本的FlashGet，没有迅雷的盗链功能，但下软件，资料绝对足够。比如到top100下个专辑什么的。使用入门：会用迅雷么?（你这个流氓。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FireGestures ——鼠标手势。本人最常用动作，右键写一竖钩关闭标签。使用入门：用右键画各种笔划试试&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;QuickDrag ——超级拖拽。最常用的功能，是拖着一个链接往右上角一甩，打开之。拖着几个字往右上角一甩，搜索之。使用入门：拖着甩&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FoxyProxy Standard ——代理管理器。注意FoxyProxy是解决代理切换问题的，而不是一个代理服务器。比如上Twitter用Tor代理，上新浪微博你还用代理就白痴了。（注意FoxyProxy有Tor设置向导，Tor套件有TorButtoon扩展，两者不要同时启用。）使用入门：建议打开它的快速添加功能&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Firefox Sync ——书签同步。在多台电脑间完成书签，历史记录等的同步。长期使用多台电脑的人必备。使用入门：注意同步除了帐号密码还要“密码短语”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ScrapBook ——笔记软件。可以抓取网页上任何一部分来保存，甚至还有一个可以随便擦除网页元素的橡皮，还有高亮标注等功能，一般的资料搜集绝对足够了。使用入门：一定要试用一下那个橡皮&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FEBE ——各种备份。相当于Firefox上的Ghost，重装Firefox必备。使用入门：注意有些插件有自己的配置，FEBE可能无法备份&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Google 工具栏 ——Google用户必备。功能多多，Gmail提醒，自定义搜索，页面翻译等。使用入门：如果你有Google账户，工具栏的设置可以保存到Google的服务器。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="part-b-进阶扩展"&gt;Part B 进阶扩展&lt;/h2&gt;
&lt;p&gt;以下的扩展请按需取用，有些很实用，有些很酷可以拿来玩一玩。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Autofill Forms ——自动填表。帐号注册控必备。（不过Google 工具栏也有类似功能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Personas Plus ——Firefox官方的换衣扩展。让你的Firefox炫一点&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iMacros for Firefox ——Firefox上的按键精灵。功能强大但学习成本较高&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cooliris ——一个很酷的3D图像浏览器，可以用来浏览Google图像，Flikr乃至你硬盘上的图片&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FireFTP ——Firefox上的FTP软件。（不过由于很多中文FTP站协议配置不太友好，所以可能用于国外FTP站点比较合适。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Video DownloadHelper ——流媒体监测，可以抓到大多数网站嵌入式媒体的真实地址&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Feedly ——杂志页面的RSS阅读器。可与Google Reader同步。酷&lt;/p&gt;</description><content:encoded><![CDATA[<p>由于最近在研究人人体的标题，所以惊悚的标题还请见谅，英文的post name更靠谱：my-firefox-addons-list。而且可能不止20个扩展。</p>
<p>Firefox的优势不在于安全、速度或是外观，而是它的高度可定制性和海量的扩展，基本上可以说是“要什么有什么”，善用搜索词“某功能+Firefox扩展”常常能找到你需要的。选择了Firefox，有点像选择了一个操作系统，一旦用习惯了该平台上的软件（即扩展），即使这个平台有诸多缺点，你也会容忍适应习惯下来。下面介绍一下我自己多年来常用的和近来用来玩的一些扩展。</p>
<p>为了达到更好的定制体验，建议安装Firefox全球统一版本，如果只是想试用一下，也可以安装火狐中国版。两个版本<a href="http://www.mozillaonline.com/"
   rel="noopener noreferrer" target="_blank" class="external">官网</a>
都有下载。所有下面提到的扩展可以到<a href="https://addons.mozilla.org/zh-CN/firefox/"
   rel="noopener noreferrer" target="_blank" class="external">功能扩展中心</a>
搜索下载，或者参考<a href="https://addons.mozilla.org/zh-CN/firefox/collections/yisha7/choice/"
   rel="noopener noreferrer" target="_blank" class="external">我的扩展收藏集</a>
。当前Firefox版本号：3.6.10。</p>
<h2 id="part-a-必备扩展">Part A 必备扩展</h2>
<p>所谓的必备扩展，是说为了达到某些“开箱即用”的浏览器（如Maxthon，搜狗浏览器等）的用户体验程度需要安装的扩展，Firefox不装扩展是绝对体验不出任何优点的。</p>
<ul>
<li>
<p>Adblock Plus—— 广告过滤，可以把新浪新闻这种页面杀得一片片全是白的，不过我一般会对漂浮物之外的手下留情。使用入门：鼠标放在广告上会有过滤字样，按规则选好后一劳永逸</p>
</li>
<li>
<p>IE Tab Plus (FF 3.6+) —— 装上后就是所谓的双核浏览器了，对顽固的不遵守W3C标准的IE only的网页必备。我的经验是IE only的网站基本都是垃圾，少上一点的好。使用入门：点状态栏的图标切换</p>
</li>
<li>
<p>DownThemAll!  ——下载利器，批量下载，一键下载。类似1.x版本的FlashGet，没有迅雷的盗链功能，但下软件，资料绝对足够。比如到top100下个专辑什么的。使用入门：会用迅雷么?（你这个流氓。</p>
</li>
<li>
<p>FireGestures ——鼠标手势。本人最常用动作，右键写一竖钩关闭标签。使用入门：用右键画各种笔划试试</p>
</li>
<li>
<p>QuickDrag ——超级拖拽。最常用的功能，是拖着一个链接往右上角一甩，打开之。拖着几个字往右上角一甩，搜索之。使用入门：拖着甩</p>
</li>
<li>
<p>FoxyProxy Standard ——代理管理器。注意FoxyProxy是解决代理切换问题的，而不是一个代理服务器。比如上Twitter用Tor代理，上新浪微博你还用代理就白痴了。（注意FoxyProxy有Tor设置向导，Tor套件有TorButtoon扩展，两者不要同时启用。）使用入门：建议打开它的快速添加功能</p>
</li>
<li>
<p>Firefox Sync ——书签同步。在多台电脑间完成书签，历史记录等的同步。长期使用多台电脑的人必备。使用入门：注意同步除了帐号密码还要“密码短语”</p>
</li>
<li>
<p>ScrapBook ——笔记软件。可以抓取网页上任何一部分来保存，甚至还有一个可以随便擦除网页元素的橡皮，还有高亮标注等功能，一般的资料搜集绝对足够了。使用入门：一定要试用一下那个橡皮</p>
</li>
<li>
<p>FEBE ——各种备份。相当于Firefox上的Ghost，重装Firefox必备。使用入门：注意有些插件有自己的配置，FEBE可能无法备份</p>
</li>
<li>
<p>Google 工具栏 ——Google用户必备。功能多多，Gmail提醒，自定义搜索，页面翻译等。使用入门：如果你有Google账户，工具栏的设置可以保存到Google的服务器。</p>
</li>
</ul>
<h2 id="part-b-进阶扩展">Part B 进阶扩展</h2>
<p>以下的扩展请按需取用，有些很实用，有些很酷可以拿来玩一玩。</p>
<ul>
<li>
<p>Autofill Forms ——自动填表。帐号注册控必备。（不过Google 工具栏也有类似功能。</p>
</li>
<li>
<p>Personas Plus ——Firefox官方的换衣扩展。让你的Firefox炫一点</p>
</li>
<li>
<p>iMacros for Firefox ——Firefox上的按键精灵。功能强大但学习成本较高</p>
</li>
<li>
<p>Cooliris ——一个很酷的3D图像浏览器，可以用来浏览Google图像，Flikr乃至你硬盘上的图片</p>
</li>
<li>
<p>FireFTP ——Firefox上的FTP软件。（不过由于很多中文FTP站协议配置不太友好，所以可能用于国外FTP站点比较合适。</p>
</li>
<li>
<p>Video DownloadHelper ——流媒体监测，可以抓到大多数网站嵌入式媒体的真实地址</p>
</li>
<li>
<p>Feedly ——杂志页面的RSS阅读器。可与Google Reader同步。酷</p>
</li>
<li>
<p>Firebug ——用于页面代码分析与调试的专业级插件。网页开发人员必备</p>
</li>
<li>
<p>FireShot ——页面截图。能截取超过一屏的整个页面甚至对图片进行简单的编辑</p>
</li>
<li>
<p>Greasemonkey ——用户脚本。用js代码定制网页显示效果，就像你重新设计了该网页一样。脚本到userscripts.org搜，或者再装一个Greasefire扩展自动提示可用脚本。强大</p>
</li>
<li>
<p>Read It Later ——一时看不了的网页，为你保存稍后再读，Read It Later有各种可同步的手机客户端。可部分解决信息过载的问题</p>
</li>
<li>
<p>ScribeFire Next ——用于博客写作。如果你有wordpress博客可以试试</p>
</li>
<li>
<p>Zotero ——文献管理。某些功能类似ScrapBook，但可以做专业的文献管理，如导出标准格式的引用信息，保存ieee等论文数据库网页会自动记录各字段。国内各数据库如万方暂无支持，但应该可以DIY。另外它还有网络存储与同步功能</p>
</li>
<li>
<p>LeechBlock ——在特定时间阻止访问特定网站。有拖延症忍不住在某些网站流连浪费时间的人必备</p>
</li>
<li>
<p>Siphon ——能够帮你在不同电脑间半自动的同步 Firefox 扩展，实际上是同步的是扩展安装列表</p>
</li>
<li>
<p>StumbleUpon ——一个随机给你推荐有趣网站与页面的有趣的扩展，你也可以参与提交。不过由于中文用户较少，所以推荐中文网站与页面的概率很小。</p>
</li>
</ul>
<p>【2010年9月15日初稿/2010年9月24日更新】</p>
]]></content:encoded><category>geek</category><category domain="tags">软件</category><category domain="tags">Firefox</category><category domain="tags">工具</category></item><item><title>一朝作文终身误</title><link>https://yifeitao.com/zuowen/</link><pubDate>Thu, 02 Sep 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/zuowen/</guid><description>&lt;p&gt;前几天在微博上和人讨论起写东西时的习惯，大家都深受作文训练之累，觉得难以脱离矫情的风格，总是要堆砌辞藻、滥用成语、牵强议论、不说人话。我说：“我觉得自己要带着说人话与写不出人话的纠结一辈子了。”&lt;/p&gt;
&lt;p&gt;从小到大也写了不少作文和必须交由老师批改的日记，由于种种原因，总之我的曾经的作品竟然干干净净的几乎一篇不剩了。虽然现在想要自我否认，但似乎也不是一无是处，比如会在日记中报告今天看见一只会游泳的鸡，或是发明了用花椒水驱蚊之类，所以对于遗失，大概是遗憾大于释然。more&lt;/p&gt;
&lt;p&gt;上次回家，倒是翻出一本印有自己文章的作文集来，好象是初中参加了某个环保征文什么的。记得是在初中毕业后好久之后才发给我的，还有一本做得较嚣张的获奖证书，大概无关重要的证书都是如此吧。再次看完自己大作的评价是不忍卒读，那股死也要劝化世人去环保的一点也不可爱的语调实在不招人喜欢，标题大概是叫“天堂的钥匙在你手中”，多么蛋疼的标题！&lt;/p&gt;
&lt;p&gt;在很小很小的时候，我就被语文老师教导要学会升华主题，诸如“眼前的红领巾更鲜艳了”云云，我发现要描述一个事物、一个人乃至一件事都很麻烦，渐渐的我的作文变得只有主题了，有可能从一见小事情空发议论，或者干脆论点论据往外摆，我读书不多，也不记得名人名言，所以诸如“有一个名人说过”然后自己滥造一句的事情没少干。然而这样的写作方式却是四平八稳，逢考必过，甚至偶尔还招老师喜欢，就这样空洞洞、干巴巴也混了个中学毕业。&lt;/p&gt;
&lt;p&gt;写东西其实是个整理思路的过程，但写作文却是或显性或隐性地预设了观点与立场，然后往死里去凑齐八百字。中学的某天，我少见的写了一篇自我感觉良好的记叙文，老师评价也不错，但却不忘让嘱咐我在后面加一句议论性的话升华主题。后来应付高考，更是八股到底，对于一个理科生这倒也不难，无非是论点，小论点，论据，总结完事，跟做证明题差别不大。&lt;/p&gt;
&lt;p&gt;我自知自己的作文水平低，不过那些水平高的优秀作文也不过是辞藻华丽一些，论据新颖一些而已，总之几乎大部分的学生作文尤其是议论性的文章都会变成类似的呼吁：“朋友们，让我们巴拉巴拉。”然而年幼无知的我们是哪里来的底气教导他人人生哲理的呢？&lt;/p&gt;
&lt;p&gt;这种矫情深入骨髓，不可断绝，翻开QQ空间，人人网日志，乃至微博，会有无数人致力于发现、传播人生哲理。这是一个冷笑话，在教育缺失的地方，却人人都是教育家的口吻。这种毛病我也不轻啊，要制作一本自己的语录什么的，估计我也会很热心。殊不知，真正的好菜肴是慢工出来的，方便面也敢号称美食，我呸。&lt;/p&gt;
&lt;p&gt;罗永浩曾经把励志书当兴奋剂用，买了很多斤，每当想去逍遥快活不背单词就翻一本痛哭流涕地扔掉，然后脱胎换骨两三天。我还没试过，但想想颇有道理，这方法的关键在于千万不要看第二遍，否则会恶心到自己，觉得被骗。所以下次看到什么“80后必须牢记的10件事“之类蛋疼的文章时还是可以看一下的，但是千万别第二次看到。&lt;/p&gt;
&lt;p&gt;细想起来证明题似的牵强议论不光是学生的特色，放眼看去我们的伟大的国家不就爱这样么？所有的宣传机器都在做着一道道的证明题，而所有的新闻事例都是论据。&lt;/p&gt;
&lt;p&gt;所以我想，简体中文的矫情文风还要一代代传下去，难得解脱。&lt;/p&gt;
&lt;p&gt;【2010年9月2日初稿/2010年9月24日更新】&lt;/p&gt;</description><content:encoded><![CDATA[<p>前几天在微博上和人讨论起写东西时的习惯，大家都深受作文训练之累，觉得难以脱离矫情的风格，总是要堆砌辞藻、滥用成语、牵强议论、不说人话。我说：“我觉得自己要带着说人话与写不出人话的纠结一辈子了。”</p>
<p>从小到大也写了不少作文和必须交由老师批改的日记，由于种种原因，总之我的曾经的作品竟然干干净净的几乎一篇不剩了。虽然现在想要自我否认，但似乎也不是一无是处，比如会在日记中报告今天看见一只会游泳的鸡，或是发明了用花椒水驱蚊之类，所以对于遗失，大概是遗憾大于释然。more</p>
<p>上次回家，倒是翻出一本印有自己文章的作文集来，好象是初中参加了某个环保征文什么的。记得是在初中毕业后好久之后才发给我的，还有一本做得较嚣张的获奖证书，大概无关重要的证书都是如此吧。再次看完自己大作的评价是不忍卒读，那股死也要劝化世人去环保的一点也不可爱的语调实在不招人喜欢，标题大概是叫“天堂的钥匙在你手中”，多么蛋疼的标题！</p>
<p>在很小很小的时候，我就被语文老师教导要学会升华主题，诸如“眼前的红领巾更鲜艳了”云云，我发现要描述一个事物、一个人乃至一件事都很麻烦，渐渐的我的作文变得只有主题了，有可能从一见小事情空发议论，或者干脆论点论据往外摆，我读书不多，也不记得名人名言，所以诸如“有一个名人说过”然后自己滥造一句的事情没少干。然而这样的写作方式却是四平八稳，逢考必过，甚至偶尔还招老师喜欢，就这样空洞洞、干巴巴也混了个中学毕业。</p>
<p>写东西其实是个整理思路的过程，但写作文却是或显性或隐性地预设了观点与立场，然后往死里去凑齐八百字。中学的某天，我少见的写了一篇自我感觉良好的记叙文，老师评价也不错，但却不忘让嘱咐我在后面加一句议论性的话升华主题。后来应付高考，更是八股到底，对于一个理科生这倒也不难，无非是论点，小论点，论据，总结完事，跟做证明题差别不大。</p>
<p>我自知自己的作文水平低，不过那些水平高的优秀作文也不过是辞藻华丽一些，论据新颖一些而已，总之几乎大部分的学生作文尤其是议论性的文章都会变成类似的呼吁：“朋友们，让我们巴拉巴拉。”然而年幼无知的我们是哪里来的底气教导他人人生哲理的呢？</p>
<p>这种矫情深入骨髓，不可断绝，翻开QQ空间，人人网日志，乃至微博，会有无数人致力于发现、传播人生哲理。这是一个冷笑话，在教育缺失的地方，却人人都是教育家的口吻。这种毛病我也不轻啊，要制作一本自己的语录什么的，估计我也会很热心。殊不知，真正的好菜肴是慢工出来的，方便面也敢号称美食，我呸。</p>
<p>罗永浩曾经把励志书当兴奋剂用，买了很多斤，每当想去逍遥快活不背单词就翻一本痛哭流涕地扔掉，然后脱胎换骨两三天。我还没试过，但想想颇有道理，这方法的关键在于千万不要看第二遍，否则会恶心到自己，觉得被骗。所以下次看到什么“80后必须牢记的10件事“之类蛋疼的文章时还是可以看一下的，但是千万别第二次看到。</p>
<p>细想起来证明题似的牵强议论不光是学生的特色，放眼看去我们的伟大的国家不就爱这样么？所有的宣传机器都在做着一道道的证明题，而所有的新闻事例都是论据。</p>
<p>所以我想，简体中文的矫情文风还要一代代传下去，难得解脱。</p>
<p>【2010年9月2日初稿/2010年9月24日更新】</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">教育</category><category domain="tags">语文</category></item><item><title>《喋血孤城》：失落的世界</title><link>https://yifeitao.com/a-lost-world/</link><pubDate>Sat, 28 Aug 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/a-lost-world/</guid><description>&lt;p&gt;&lt;img src="https://i.imgur.com/QjYd6kX.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" /&gt;
&lt;/p&gt;
&lt;h1 id="一"&gt;一&lt;/h1&gt;
&lt;p&gt;我想先用罗嗦的语调记下一个故事，尽管这个故事已经模糊到没有情节，没有细节，只剩下一点片段。&lt;/p&gt;
&lt;p&gt;这个故事是我曾祖母的亲身经历。当年，不知道具体是哪一年了，她抱着女儿回娘家，亦或是回婆家，她女儿就是我的姑奶奶啦，她走到半路上，遇到了日本兵，我记不住曾祖母的娘家具体在哪儿，反正她的整个路线都在湖南常德之内啦，所以我们知道这是抗日战争期间的事情了。她就近找了个地道躲起来，地道里躲满了人。不是所有的地道都像电影中那般神奇的，日本兵找到了他们，然后开始大开杀戒，至于日本兵为什么乱杀无辜，故事里没有说，或许是说了，而我没有记住。日本兵要找一个可以架枪扫射的地方，这个地方竟然是我曾祖母的肩膀，你可以想象一下枪架在你肩头扫射周围人的场景。故事的结局当然是我曾祖母死里逃生，不然这个故事连片段也没有了。&lt;/p&gt;
&lt;p&gt;曾祖母讲这个故事的时候，已经没有什么情绪在话语之中了，在我有记忆以来，她就是一个慈祥而对生活充满热情的老人，她说，一定是日本人忘记了她这个枪架，才捡回一条命。日本人真恶（凶恶的意思），她最后会加上一句。这个故事她一定是给子女讲过，给孙辈讲过，然后又讲给曾孙辈。可能我们没有一个人曾经全心全意的去听这个故事，只是当做聊起日本人时的一个谈资，父亲会说，奶奶你给那谁谁谁讲一下遇到日本鬼子的故事吧。这个故事是聊到日本人时的保留节目，但有我这种不孝的听众，终究还是模糊了。&lt;/p&gt;
&lt;p&gt;曾祖母活到近九十岁，见到了自己的玄孙，不知道她有没有把这个故事讲给还不省事的我的小侄子听。但她还是驾鹤西去了，真的是驾鹤西去，我父亲做了这样的梦。我没有做任何梦。她过世的之前几年，一直和我父母生活在一起，有一天回到家吃饭，只有我和父母亲三个，我竟然没发现，母亲半生气半感慨的说，人老了就真的会被人慢慢遗忘。后来她过世后的某一天，又是我和父母亲三个吃饭，我突然想问曾祖母为什么不来吃饭？但立刻又把这句话硬生生的咽了回去，这时我终于体会到眼泪往肚子里流是什么感觉。&lt;/p&gt;
&lt;p&gt;日本人曾经在中国肆意横行了十四年，然而我以前所知的不过是小兵张嘎和游击战而已。后来泡论坛，看到有人说在抗日战争期间，死掉的日本兵近一半死在了湖南，我想他一定是个湖南人而刻意夸张，想表达杨度笔下“若道中华国果亡，除非湖南人尽死”的豪气。我们都记住了以毛泽东为代表的近代湖南革命者，却很少有人了解湖南这片大地当年发生过什么。这使我记起曾祖母讲给我听的那个故事，我想再去详细了解我和那段历史唯一的血脉联系，然而已经太迟了。有些东西失去了就不会再回来，这不是一句矫情的话。&lt;/p&gt;
&lt;h1 id="二"&gt;二&lt;/h1&gt;
&lt;p&gt;每个父母几乎都会面对小孩子一个刨根问底的尴尬问题：我是从哪儿来的？直到孩子知道受精卵的故事才终得解脱。受精卵真的就是最终的答案吗？我想不是，这不过是一切必然与偶然的阶段性结果。你的父母如何相识，他们生活在怎样的时代？你的爷爷奶奶，外公外婆如何相识，他们又生活在怎样的时代？这是家族史。你吃的食物，说的话语，过的节日，无一不是几千年历史的产物。你所处社会的人际交往形式，集体组织形式，也无一不是历史的产物。你可以毫无好奇心的活下去，但也不能否认历史沉淀在你的一举一动中。&lt;/p&gt;
&lt;p&gt;《一九八四》中说：“谁控制过去就控制未来，谁控制现在就控制过去。”这是一句值得仔细体会的话。或许我们曾试图抛弃沉重的历史轻装上阵，但现实的一切都沿着历史的轨道狂奔，想要理解现实，不得不理解历史。&lt;/p&gt;
&lt;p&gt;高中的时候，我从农村来到常德市区，过了很久才知道有个常德会战纪念碑。记不清那天跑到文化宫附近是打桌球还是打电动，发现了在周围一片娱乐景象中静静矗立的碑石和牌坊，凑过去看才知道是国军第74军57师官兵墓地，一阵荒凉陌生的感觉袭来，仿佛真实的世界是割裂的。这种感觉没有持续多久我就开心的去玩了。这不是我需要关心的历史，因为这是不考试的历史。
　　
后来我们学校参加了声援常德细菌战受害者起诉日本政府的活动，签上自己名字的时候，才意识到这片土地曾经遭受怎样的蹂躏，无数的生命绞死在历史中，轻如鸿毛。我们被种下对日本人的模糊的恨，但批评日本人不正视历史的我们，却也没有正视过历史。历史于我们，不过是作了详略艺术处理的考题。列宁的名言“忘记历史就意味着背叛”时常响在耳边，而我们记住的不过是“先前我们很阔，最近一百年很屈辱，后来得救了。”中国人即使渐渐富起来，但受害者心态却一成不变，以至于竟会有人热衷于编造并不存在的韩国教授来侮辱自己的国家。
　　
说起来从清末一直到今天，我们的近现代史是伤痕累累，但一张狗皮膏药贴过去，万事大吉，仿佛那些绞死在历史中的人都不曾存在过，仿佛某些年月日不曾存在过。捂着伤口不见空气只有溃烂，然后让后人感叹一句“历史总是惊人的相似”。 不正视历史，就没有强大的心理建设，“强国梦”永远都只是一个梦。死于外人之手犹难言说，死于自己人之手更无从言说。以为掩埋掉的不会消失掉，那是幼稚的想法。&lt;/p&gt;
&lt;p&gt;崔永元谈及做纪录片《我的抗战》缘起，说了去日本NHK电视台的一个故事。 “零一年我去了日本，我去那里看，一个小姐在那里操作。她就问你要看什么？看中国啊，上面密密麻麻的。问看中国什么？我说看东北。问东北什么，我说看张学良，张学良调出来了，最早的是9月21日，就看这个。他给我打开了视频，三十分钟，张学良的演讲。我记得很清楚，里面说了一句，委员长说，两年之内，不把日本人赶出满洲，他就辞职。这是张学良演讲里说的，我当时很受刺激。”&lt;/p&gt;
&lt;p&gt;中国的这些参与历史的人很多已经死去，有的正在老去，正在失去记忆。&lt;/p&gt;
&lt;p&gt;“不能再等了”， 崔永元说。&lt;/p&gt;
&lt;h1 id="三"&gt;三&lt;/h1&gt;
&lt;p&gt;后来我高中毕业基本算离开了常德，在外面难免谈及自己的家乡，说到这个“常德”这个地名大部分人会感到茫然，我绞尽脑汁找一些特色来讲：“就是三国时期的武陵啦，玩三国志有这个地方的。……陶渊明笔下的世外桃源就在我们那里，但据说有其他地方也争。……芙蓉王香烟……”这种时候，我会感到自己对于家乡的陌生。吃饭睡觉读书，生活在哪个地方都一样，我知道很多地名，但它们都只是一个词，而没有形象。&lt;/p&gt;
&lt;p&gt;再次关注到常德的历史，是今年八月初，偶然翻到一条安以轩的娱乐新闻，谈及电影《喋血孤城》，常德会战几个字赫然在目。在一个烂片防不胜防的年份里，我只凭题材就决定去影院支持这部电影。原来还有人记得，并且想让大家记得。&lt;/p&gt;
&lt;p&gt;安以轩在访谈中说如果票房过亿就自掏腰包捐款十万给甘肃舟曲灾区。虽然是作秀，但这个秀比“票房过亿就裸泳“之类的要有意义许多。在这个无数骗钱电影都能诳到一亿票房的好时节，或许她和我一样，以为这十万必定是能捐出去的。从预告片来看，这部电影的基本品质是有保证的，只需要合理的宣传和档期而已。&lt;/p&gt;
&lt;p&gt;然而在详细了解了这部电影的背景和网络关注度后，我不得不断定它必然悲剧的票房乃至可能悲剧的影响力。《喋血孤城》原名《常德大血战》，投资约5000万，全部来自湖南的民间资本，号称“暑期唯一战争巨制”，但这种有旋律却脱离主旋律的题材得不到官方支持，自生自灭。在卖力宣传这部电影的，似乎只有安以轩的粉丝了。&lt;/p&gt;
&lt;p&gt;有记者问安以轩：“拍这部电影之前你了解过这段历史么？”她这样回答：“其实很多年轻人都和我一样是不知道这段历史的，所以在拍摄当中我才会知道原来有常德大血战这件事情。因为喜欢以轩的很多是年轻人，所以也希望通过以轩这一次的参与，可以让这些年轻人知道曾经有一段快要被遗忘的历史，那现在我们有这么好的一个生活也是这些人这么努力为我们留下来的。”作为一个曾经的偶像剧演员，她的回答很是真诚，尽管也有很多人认为她在电影中的角色完全是多余的。&lt;/p&gt;
&lt;p&gt;有网友说，这是一部想看的人一定会去看的电影，但也是一部不能轻易看到的电影。我的观影经历毫不留情的论证了他的说法。第一家影院第一次去，最小的厅，中午，一场，六七个观众，上映时间过去五分钟后，经理跑进来说设备故障，“换《敢死队》看不看？”我和朋友无奈离席，因为并不是闲到大中午的非得看一场电影。隔了两天是周末，第一家影院第二次去，发现错过时间，说是调整了，但网上信息没更新。无奈之下，却产生非看不可的心理。第二家影院，豪华气派，公示牌上扫了两遍，未见场次，“上座率太低，让给《唐山大地震》了”。第三家影院，下车之后一路小跑，赶上了时间，终于修成正果，饿着肚子看完。朋友无奈的说：“要不是你推荐，我才不会遭这份罪。”回来之后，为电影打五星：“影片品质3星半左右，作为常德人私心加1星，为各种憋屈加半星。”&lt;/p&gt;
&lt;p&gt;1985年，中国大陆第一部反映抗日战争国军正面战场的电影《血战台儿庄》上映，但我孤陋寡闻且被孤陋寡闻，2009年才知道这部电影。时隔25年，2010年8月19日《喋血孤城》上映，似乎是第二部反映正面战场的电影。在《唐山大地震》的余震中，在《龙凤店》和《敢死队》的包围下，《喋血孤城》的海报撇在角落里，场次出现在垃圾时间里，仅一天就被某电影网站撤下“正在上映”的首页，就这样轻轻地来轻轻的走了。&lt;/p&gt;
&lt;p&gt;有网友说，我以为我包场看来着，没想到进来一个安以轩的粉丝带着她男朋友，语气颇为无奈。而我只想向安以轩的粉丝致敬，也许她们才是“中流砥柱”。&lt;/p&gt;
&lt;h1 id="四"&gt;四&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;“1943年11月2日日本帝国陆军占领常德。11月18日，国民革命军74军第57师的9,000余名士兵夺回这座城市。日军三万多主力部队反击并包围此地区，57师坚守该城16天至12月3日，12月2日晚，57师坚守在已成火海的常德城师部指挥所“仅300米左右”的弹丸之地，士兵剩下300多人。师长余程万向第6战区上将司令孙连仲发出“弹尽，援绝，人无，城已破。职率副师长，指挥官，师附，政治部主任，参谋主任等固守中央银行，各团长划分区域，扼守一屋，作最后抵抗，誓死为止，并祝胜利。第七四军万岁，蒋委员长万岁，中华民国万岁！”的最后一电。余师长口述电文完毕，准备举佩枪自裁，卫士见状立即夺下枪支，并苦苦劝阻。最后，余带领104人突围，突围中3名团长战死，3日，常德大西门失守，全城沦陷。12月9日国军重新夺回该城。双方的援军抵达及战斗一直持续日军最后在12月20日撤退。在战役中，日军广泛利用生物和化学武器，在超过36公里半径的城市传播鼠疫。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;以上是维基百科上关于常德会战的简述，不过几百字而已。这场被誉为“中国的斯大林格勒保卫战”的战役就发生在我的家乡，然而在相当长的时间里，我却只知道斯大林格勒保卫战。而现在，我不知道自己是庆幸还是悲哀。&lt;/p&gt;
&lt;p&gt;余程万战斗到几近绝望之中时发报：“弹尽人亡，城已破，友军观望不前！此刻大街小巷混战成一团，职率副师长参谋长死守中央银行直至最后一刻，74军万岁！蒋委员长万岁！中华民国万岁！职余成万谨叩！”这个友军，是第27集团军司令李玉堂中将所属方先觉少将第10军部队。历史的相似来得太快，之后1944年的衡阳会战中，方军长很快就尝到了当年余师长的滋味，这次见死不救的人换成了两次粤北大捷的功臣粤军精锐黄涛62军。第10军苦守衡阳47天，待援不得，最后黯然投降。国军后来的败退由此可窥一二。&lt;/p&gt;
&lt;p&gt;据说后来57师的臂章上多了“常德”两个字，这个番号后经过多次整编替补，在内战中先后覆灭于1947年6月的孟良崮战役，1948年9月的济南会战，1949年6月的丽水。&lt;/p&gt;
&lt;p&gt;余程万力邀作家张恨水记下常德会战这段历史，后与其成为好友，张恨水著有《虎贲万岁》一书。此书出版后，余程万与57师扬名中华，余还因此得到一个二太太。然而余程万没有死守常德，突围行为令蒋介石大为光火，一度要判他死刑。后虽得脱死罪，但一直郁郁不得志。1949年后，余程万没有留在大陆，也没有去台湾，而是旅居在香港。&lt;/p&gt;
&lt;p&gt;1955年的8月27日晚上，余程万年青美貌的妻子被香港黑社会绑架，将军刚从外面赶回家，单枪营救，他的家人悄悄的从后门跑到二里外的警署报警，警察到来后与劫匪发生了枪战，余程万被劫匪在黑暗中被当作盾牌被打死。事后，警方公布说，余程万是被盗匪打死的。究竟被盗匪打死还是被警察打死，无人敢去追究。但是，当时在香港由于余程万在与黄埔老友闲聊论及老蒋时常多有怨气，所以，也有人认为他是被台湾特工所害。&lt;/p&gt;
&lt;p&gt;英雄末路如此，竟不如当日战死疆场，求得身后名。在我想要结束这篇文章之时，看到一段文字，照录如下：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“余程万是个什么人？他怎么突然变成全国今年暑期大片的主角和党营主流媒体吹捧的“抗日英雄”和“铁血将军”。历史的真实在主流标准的收编下，几乎所剩无几。 其实，在中共党史军史和解放军前辈心目中，余程万是手上沾满解放军将士、民主人士和劳苦大众鲜血的国民党战犯和手下败将。“八一电影制片厂”导演沈某，他的脑子是否灌水了？替共军手下败将张目，连国内明星都不愿出演余程万这个“英雄”，沈某只有拉香港人吕良伟出山撑角。正义是非早已抛到九霄云外。一再为汪精卫、蒋介石等翻案，已成为国人深层忧虑。为何不断有人制造电影灾难，反派抢戏，这种视觉污染更为严重。难怪人们看到余程万一夜成为英雄，不禁摇头叹息，情何以堪！ ”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;摇头叹息，情何以堪！&lt;/p&gt;
&lt;p&gt;【参考与推荐】&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.1905.com/vod/play/380022.shtml"
rel="noopener noreferrer" target="_blank" class="external"&gt;正版在线观看&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;维基百科：&lt;a href="http://zh.wikipedia.org/zh-cn/%E5%B8%B8%E5%BE%B7%E4%BC%9A%E6%88%98"
rel="noopener noreferrer" target="_blank" class="external"&gt;常德会战&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;图片：&lt;a href="http://cn.bing.com/images/search?q=%E5%B8%B8%E5%BE%B7%E4%BC%9A%E6%88%98%E7%BA%AA%E5%BF%B5%E7%A2%91"
rel="noopener noreferrer" target="_blank" class="external"&gt;常德会战纪念碑&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;小说：&lt;a href="http://book.douban.com/subject/1858576/"
rel="noopener noreferrer" target="_blank" class="external"&gt;《一九八四》&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ent.sina.com.cn/f/m/diexuegucheng/index.shtml"
rel="noopener noreferrer" target="_blank" class="external"&gt;《喋血孤城》官网&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;豆瓣网：&lt;a href="http://movie.douban.com/subject/4825006/"
rel="noopener noreferrer" target="_blank" class="external"&gt;《喋血孤城》&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;视频：&lt;a href="http://www.hunantv.com/v/5/79/f/60617.html"
rel="noopener noreferrer" target="_blank" class="external"&gt;血染常德细菌战&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;纪录片：&lt;a href="http://tv.sohu.com/s2010/wodekangzhan/"
rel="noopener noreferrer" target="_blank" class="external"&gt;《我的抗战》&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;新闻：&lt;a href="http://ent.rednet.cn/c/2010/08/12/2034802.htm"
rel="noopener noreferrer" target="_blank" class="external"&gt;安以轩红网访谈&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;网贴：&lt;a href="http://bbs.tiexue.net/post_4431611_1.html"
rel="noopener noreferrer" target="_blank" class="external"&gt;从罪犯到英雄，余程万被大陆拍成《喋血孤城》&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;报道：&lt;a href="http://news.163.com/09/1221/17/5R2TULF900011247.html"
rel="noopener noreferrer" target="_blank" class="external"&gt;常德大血战国军师长余程万凄凉后半生&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;微博话题：&lt;a href="http://s.weibo.com/weibo/%25E5%2596%258B%25E8%25A1%2580%25E5%25AD%25A4%25E5%259F%258E"
rel="noopener noreferrer" target="_blank" class="external"&gt;喋血孤城&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;【2010年8月26日于苏州】【2016年1月31日更新链接】&lt;/p&gt;</description><content:encoded><![CDATA[<p><img src="https://i.imgur.com/QjYd6kX.jpg" alt=" " loading="lazy" decoding="async" referrerpolicy="no-referrer" />
</p>
<h1 id="一">一</h1>
<p>我想先用罗嗦的语调记下一个故事，尽管这个故事已经模糊到没有情节，没有细节，只剩下一点片段。</p>
<p>这个故事是我曾祖母的亲身经历。当年，不知道具体是哪一年了，她抱着女儿回娘家，亦或是回婆家，她女儿就是我的姑奶奶啦，她走到半路上，遇到了日本兵，我记不住曾祖母的娘家具体在哪儿，反正她的整个路线都在湖南常德之内啦，所以我们知道这是抗日战争期间的事情了。她就近找了个地道躲起来，地道里躲满了人。不是所有的地道都像电影中那般神奇的，日本兵找到了他们，然后开始大开杀戒，至于日本兵为什么乱杀无辜，故事里没有说，或许是说了，而我没有记住。日本兵要找一个可以架枪扫射的地方，这个地方竟然是我曾祖母的肩膀，你可以想象一下枪架在你肩头扫射周围人的场景。故事的结局当然是我曾祖母死里逃生，不然这个故事连片段也没有了。</p>
<p>曾祖母讲这个故事的时候，已经没有什么情绪在话语之中了，在我有记忆以来，她就是一个慈祥而对生活充满热情的老人，她说，一定是日本人忘记了她这个枪架，才捡回一条命。日本人真恶（凶恶的意思），她最后会加上一句。这个故事她一定是给子女讲过，给孙辈讲过，然后又讲给曾孙辈。可能我们没有一个人曾经全心全意的去听这个故事，只是当做聊起日本人时的一个谈资，父亲会说，奶奶你给那谁谁谁讲一下遇到日本鬼子的故事吧。这个故事是聊到日本人时的保留节目，但有我这种不孝的听众，终究还是模糊了。</p>
<p>曾祖母活到近九十岁，见到了自己的玄孙，不知道她有没有把这个故事讲给还不省事的我的小侄子听。但她还是驾鹤西去了，真的是驾鹤西去，我父亲做了这样的梦。我没有做任何梦。她过世的之前几年，一直和我父母生活在一起，有一天回到家吃饭，只有我和父母亲三个，我竟然没发现，母亲半生气半感慨的说，人老了就真的会被人慢慢遗忘。后来她过世后的某一天，又是我和父母亲三个吃饭，我突然想问曾祖母为什么不来吃饭？但立刻又把这句话硬生生的咽了回去，这时我终于体会到眼泪往肚子里流是什么感觉。</p>
<p>日本人曾经在中国肆意横行了十四年，然而我以前所知的不过是小兵张嘎和游击战而已。后来泡论坛，看到有人说在抗日战争期间，死掉的日本兵近一半死在了湖南，我想他一定是个湖南人而刻意夸张，想表达杨度笔下“若道中华国果亡，除非湖南人尽死”的豪气。我们都记住了以毛泽东为代表的近代湖南革命者，却很少有人了解湖南这片大地当年发生过什么。这使我记起曾祖母讲给我听的那个故事，我想再去详细了解我和那段历史唯一的血脉联系，然而已经太迟了。有些东西失去了就不会再回来，这不是一句矫情的话。</p>
<h1 id="二">二</h1>
<p>每个父母几乎都会面对小孩子一个刨根问底的尴尬问题：我是从哪儿来的？直到孩子知道受精卵的故事才终得解脱。受精卵真的就是最终的答案吗？我想不是，这不过是一切必然与偶然的阶段性结果。你的父母如何相识，他们生活在怎样的时代？你的爷爷奶奶，外公外婆如何相识，他们又生活在怎样的时代？这是家族史。你吃的食物，说的话语，过的节日，无一不是几千年历史的产物。你所处社会的人际交往形式，集体组织形式，也无一不是历史的产物。你可以毫无好奇心的活下去，但也不能否认历史沉淀在你的一举一动中。</p>
<p>《一九八四》中说：“谁控制过去就控制未来，谁控制现在就控制过去。”这是一句值得仔细体会的话。或许我们曾试图抛弃沉重的历史轻装上阵，但现实的一切都沿着历史的轨道狂奔，想要理解现实，不得不理解历史。</p>
<p>高中的时候，我从农村来到常德市区，过了很久才知道有个常德会战纪念碑。记不清那天跑到文化宫附近是打桌球还是打电动，发现了在周围一片娱乐景象中静静矗立的碑石和牌坊，凑过去看才知道是国军第74军57师官兵墓地，一阵荒凉陌生的感觉袭来，仿佛真实的世界是割裂的。这种感觉没有持续多久我就开心的去玩了。这不是我需要关心的历史，因为这是不考试的历史。
　　
后来我们学校参加了声援常德细菌战受害者起诉日本政府的活动，签上自己名字的时候，才意识到这片土地曾经遭受怎样的蹂躏，无数的生命绞死在历史中，轻如鸿毛。我们被种下对日本人的模糊的恨，但批评日本人不正视历史的我们，却也没有正视过历史。历史于我们，不过是作了详略艺术处理的考题。列宁的名言“忘记历史就意味着背叛”时常响在耳边，而我们记住的不过是“先前我们很阔，最近一百年很屈辱，后来得救了。”中国人即使渐渐富起来，但受害者心态却一成不变，以至于竟会有人热衷于编造并不存在的韩国教授来侮辱自己的国家。
　　
说起来从清末一直到今天，我们的近现代史是伤痕累累，但一张狗皮膏药贴过去，万事大吉，仿佛那些绞死在历史中的人都不曾存在过，仿佛某些年月日不曾存在过。捂着伤口不见空气只有溃烂，然后让后人感叹一句“历史总是惊人的相似”。 不正视历史，就没有强大的心理建设，“强国梦”永远都只是一个梦。死于外人之手犹难言说，死于自己人之手更无从言说。以为掩埋掉的不会消失掉，那是幼稚的想法。</p>
<p>崔永元谈及做纪录片《我的抗战》缘起，说了去日本NHK电视台的一个故事。 “零一年我去了日本，我去那里看，一个小姐在那里操作。她就问你要看什么？看中国啊，上面密密麻麻的。问看中国什么？我说看东北。问东北什么，我说看张学良，张学良调出来了，最早的是9月21日，就看这个。他给我打开了视频，三十分钟，张学良的演讲。我记得很清楚，里面说了一句，委员长说，两年之内，不把日本人赶出满洲，他就辞职。这是张学良演讲里说的，我当时很受刺激。”</p>
<p>中国的这些参与历史的人很多已经死去，有的正在老去，正在失去记忆。</p>
<p>“不能再等了”， 崔永元说。</p>
<h1 id="三">三</h1>
<p>后来我高中毕业基本算离开了常德，在外面难免谈及自己的家乡，说到这个“常德”这个地名大部分人会感到茫然，我绞尽脑汁找一些特色来讲：“就是三国时期的武陵啦，玩三国志有这个地方的。……陶渊明笔下的世外桃源就在我们那里，但据说有其他地方也争。……芙蓉王香烟……”这种时候，我会感到自己对于家乡的陌生。吃饭睡觉读书，生活在哪个地方都一样，我知道很多地名，但它们都只是一个词，而没有形象。</p>
<p>再次关注到常德的历史，是今年八月初，偶然翻到一条安以轩的娱乐新闻，谈及电影《喋血孤城》，常德会战几个字赫然在目。在一个烂片防不胜防的年份里，我只凭题材就决定去影院支持这部电影。原来还有人记得，并且想让大家记得。</p>
<p>安以轩在访谈中说如果票房过亿就自掏腰包捐款十万给甘肃舟曲灾区。虽然是作秀，但这个秀比“票房过亿就裸泳“之类的要有意义许多。在这个无数骗钱电影都能诳到一亿票房的好时节，或许她和我一样，以为这十万必定是能捐出去的。从预告片来看，这部电影的基本品质是有保证的，只需要合理的宣传和档期而已。</p>
<p>然而在详细了解了这部电影的背景和网络关注度后，我不得不断定它必然悲剧的票房乃至可能悲剧的影响力。《喋血孤城》原名《常德大血战》，投资约5000万，全部来自湖南的民间资本，号称“暑期唯一战争巨制”，但这种有旋律却脱离主旋律的题材得不到官方支持，自生自灭。在卖力宣传这部电影的，似乎只有安以轩的粉丝了。</p>
<p>有记者问安以轩：“拍这部电影之前你了解过这段历史么？”她这样回答：“其实很多年轻人都和我一样是不知道这段历史的，所以在拍摄当中我才会知道原来有常德大血战这件事情。因为喜欢以轩的很多是年轻人，所以也希望通过以轩这一次的参与，可以让这些年轻人知道曾经有一段快要被遗忘的历史，那现在我们有这么好的一个生活也是这些人这么努力为我们留下来的。”作为一个曾经的偶像剧演员，她的回答很是真诚，尽管也有很多人认为她在电影中的角色完全是多余的。</p>
<p>有网友说，这是一部想看的人一定会去看的电影，但也是一部不能轻易看到的电影。我的观影经历毫不留情的论证了他的说法。第一家影院第一次去，最小的厅，中午，一场，六七个观众，上映时间过去五分钟后，经理跑进来说设备故障，“换《敢死队》看不看？”我和朋友无奈离席，因为并不是闲到大中午的非得看一场电影。隔了两天是周末，第一家影院第二次去，发现错过时间，说是调整了，但网上信息没更新。无奈之下，却产生非看不可的心理。第二家影院，豪华气派，公示牌上扫了两遍，未见场次，“上座率太低，让给《唐山大地震》了”。第三家影院，下车之后一路小跑，赶上了时间，终于修成正果，饿着肚子看完。朋友无奈的说：“要不是你推荐，我才不会遭这份罪。”回来之后，为电影打五星：“影片品质3星半左右，作为常德人私心加1星，为各种憋屈加半星。”</p>
<p>1985年，中国大陆第一部反映抗日战争国军正面战场的电影《血战台儿庄》上映，但我孤陋寡闻且被孤陋寡闻，2009年才知道这部电影。时隔25年，2010年8月19日《喋血孤城》上映，似乎是第二部反映正面战场的电影。在《唐山大地震》的余震中，在《龙凤店》和《敢死队》的包围下，《喋血孤城》的海报撇在角落里，场次出现在垃圾时间里，仅一天就被某电影网站撤下“正在上映”的首页，就这样轻轻地来轻轻的走了。</p>
<p>有网友说，我以为我包场看来着，没想到进来一个安以轩的粉丝带着她男朋友，语气颇为无奈。而我只想向安以轩的粉丝致敬，也许她们才是“中流砥柱”。</p>
<h1 id="四">四</h1>
<blockquote>
<p>“1943年11月2日日本帝国陆军占领常德。11月18日，国民革命军74军第57师的9,000余名士兵夺回这座城市。日军三万多主力部队反击并包围此地区，57师坚守该城16天至12月3日，12月2日晚，57师坚守在已成火海的常德城师部指挥所“仅300米左右”的弹丸之地，士兵剩下300多人。师长余程万向第6战区上将司令孙连仲发出“弹尽，援绝，人无，城已破。职率副师长，指挥官，师附，政治部主任，参谋主任等固守中央银行，各团长划分区域，扼守一屋，作最后抵抗，誓死为止，并祝胜利。第七四军万岁，蒋委员长万岁，中华民国万岁！”的最后一电。余师长口述电文完毕，准备举佩枪自裁，卫士见状立即夺下枪支，并苦苦劝阻。最后，余带领104人突围，突围中3名团长战死，3日，常德大西门失守，全城沦陷。12月9日国军重新夺回该城。双方的援军抵达及战斗一直持续日军最后在12月20日撤退。在战役中，日军广泛利用生物和化学武器，在超过36公里半径的城市传播鼠疫。”</p>
</blockquote>
<p>以上是维基百科上关于常德会战的简述，不过几百字而已。这场被誉为“中国的斯大林格勒保卫战”的战役就发生在我的家乡，然而在相当长的时间里，我却只知道斯大林格勒保卫战。而现在，我不知道自己是庆幸还是悲哀。</p>
<p>余程万战斗到几近绝望之中时发报：“弹尽人亡，城已破，友军观望不前！此刻大街小巷混战成一团，职率副师长参谋长死守中央银行直至最后一刻，74军万岁！蒋委员长万岁！中华民国万岁！职余成万谨叩！”这个友军，是第27集团军司令李玉堂中将所属方先觉少将第10军部队。历史的相似来得太快，之后1944年的衡阳会战中，方军长很快就尝到了当年余师长的滋味，这次见死不救的人换成了两次粤北大捷的功臣粤军精锐黄涛62军。第10军苦守衡阳47天，待援不得，最后黯然投降。国军后来的败退由此可窥一二。</p>
<p>据说后来57师的臂章上多了“常德”两个字，这个番号后经过多次整编替补，在内战中先后覆灭于1947年6月的孟良崮战役，1948年9月的济南会战，1949年6月的丽水。</p>
<p>余程万力邀作家张恨水记下常德会战这段历史，后与其成为好友，张恨水著有《虎贲万岁》一书。此书出版后，余程万与57师扬名中华，余还因此得到一个二太太。然而余程万没有死守常德，突围行为令蒋介石大为光火，一度要判他死刑。后虽得脱死罪，但一直郁郁不得志。1949年后，余程万没有留在大陆，也没有去台湾，而是旅居在香港。</p>
<p>1955年的8月27日晚上，余程万年青美貌的妻子被香港黑社会绑架，将军刚从外面赶回家，单枪营救，他的家人悄悄的从后门跑到二里外的警署报警，警察到来后与劫匪发生了枪战，余程万被劫匪在黑暗中被当作盾牌被打死。事后，警方公布说，余程万是被盗匪打死的。究竟被盗匪打死还是被警察打死，无人敢去追究。但是，当时在香港由于余程万在与黄埔老友闲聊论及老蒋时常多有怨气，所以，也有人认为他是被台湾特工所害。</p>
<p>英雄末路如此，竟不如当日战死疆场，求得身后名。在我想要结束这篇文章之时，看到一段文字，照录如下：</p>
<blockquote>
<p>“余程万是个什么人？他怎么突然变成全国今年暑期大片的主角和党营主流媒体吹捧的“抗日英雄”和“铁血将军”。历史的真实在主流标准的收编下，几乎所剩无几。 其实，在中共党史军史和解放军前辈心目中，余程万是手上沾满解放军将士、民主人士和劳苦大众鲜血的国民党战犯和手下败将。“八一电影制片厂”导演沈某，他的脑子是否灌水了？替共军手下败将张目，连国内明星都不愿出演余程万这个“英雄”，沈某只有拉香港人吕良伟出山撑角。正义是非早已抛到九霄云外。一再为汪精卫、蒋介石等翻案，已成为国人深层忧虑。为何不断有人制造电影灾难，反派抢戏，这种视觉污染更为严重。难怪人们看到余程万一夜成为英雄，不禁摇头叹息，情何以堪！ ”</p>
</blockquote>
<p>摇头叹息，情何以堪！</p>
<p>【参考与推荐】</p>
<ul>
<li><a href="http://www.1905.com/vod/play/380022.shtml"
   rel="noopener noreferrer" target="_blank" class="external">正版在线观看</a>
</li>
<li>维基百科：<a href="http://zh.wikipedia.org/zh-cn/%E5%B8%B8%E5%BE%B7%E4%BC%9A%E6%88%98"
   rel="noopener noreferrer" target="_blank" class="external">常德会战</a>
</li>
<li>图片：<a href="http://cn.bing.com/images/search?q=%E5%B8%B8%E5%BE%B7%E4%BC%9A%E6%88%98%E7%BA%AA%E5%BF%B5%E7%A2%91"
   rel="noopener noreferrer" target="_blank" class="external">常德会战纪念碑</a>
</li>
<li>小说：<a href="http://book.douban.com/subject/1858576/"
   rel="noopener noreferrer" target="_blank" class="external">《一九八四》</a>
</li>
<li><a href="http://ent.sina.com.cn/f/m/diexuegucheng/index.shtml"
   rel="noopener noreferrer" target="_blank" class="external">《喋血孤城》官网</a>
</li>
<li>豆瓣网：<a href="http://movie.douban.com/subject/4825006/"
   rel="noopener noreferrer" target="_blank" class="external">《喋血孤城》</a>
</li>
<li>视频：<a href="http://www.hunantv.com/v/5/79/f/60617.html"
   rel="noopener noreferrer" target="_blank" class="external">血染常德细菌战</a>
</li>
<li>纪录片：<a href="http://tv.sohu.com/s2010/wodekangzhan/"
   rel="noopener noreferrer" target="_blank" class="external">《我的抗战》</a>
</li>
<li>新闻：<a href="http://ent.rednet.cn/c/2010/08/12/2034802.htm"
   rel="noopener noreferrer" target="_blank" class="external">安以轩红网访谈</a>
</li>
<li>网贴：<a href="http://bbs.tiexue.net/post_4431611_1.html"
   rel="noopener noreferrer" target="_blank" class="external">从罪犯到英雄，余程万被大陆拍成《喋血孤城》</a>
</li>
<li>报道：<a href="http://news.163.com/09/1221/17/5R2TULF900011247.html"
   rel="noopener noreferrer" target="_blank" class="external">常德大血战国军师长余程万凄凉后半生</a>
</li>
<li>微博话题：<a href="http://s.weibo.com/weibo/%25E5%2596%258B%25E8%25A1%2580%25E5%25AD%25A4%25E5%259F%258E"
   rel="noopener noreferrer" target="_blank" class="external">喋血孤城</a>
</li>
</ul>
<p>【2010年8月26日于苏州】【2016年1月31日更新链接】</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">战争</category></item><item><title>怪话、实话与笑话</title><link>https://yifeitao.com/complaint-truth-joke/</link><pubDate>Sun, 01 Aug 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/complaint-truth-joke/</guid><description>&lt;p&gt;世道艰难，人免不了说些怪话，无非是些废话、反话、气话、鬼话。&lt;/p&gt;
&lt;p&gt;说起来中文说怪话的成就倒是不小的。《史记.滑稽列传》里都是讲怪话的高手，什么欲擒故纵，劝君主对爱马“以人君礼葬之”云云，劝谏这门学问大约从这里开山吧，这种拐弯抹角的技术据说已经上升到艺术的高度了。说起讲怪话，鲁迅大约是近现代第一高手，如果对他文章的本意缺乏理解，会发觉整个有些阴阳怪气，说话夹枪带棒、笑里藏刀。&lt;/p&gt;
&lt;p&gt;有话直说还是有话曲说，刀架在脖子上时，你说该怎么选择呢？more&lt;/p&gt;
&lt;p&gt;在上网之前，我不知道世界上有很多的人是不懂反语的，比如韩寒有一次发文章挺孙俪，用了反语，于是我看到N条留言中韩寒的粉丝在骂孙俪。对这种人，我以前很鄙夷他们的智商，现在却有觉得世界上这种人多一点还是挺好的，赞就是赞骂就是骂，快意恩仇，损失一些语言艺术倒也无妨。&lt;/p&gt;
&lt;p&gt;要说我为什么有这个思想转变，主要还是被打击了，原来我会把实话错当怪话。零九年的时候有一段时间我不方便上网，在一个小旅馆里过着夜夜看电视的日子，有人来访，谈说起热点新闻，说是国家要花钱给每台电脑装监控软件，我的第一反应是有人不满现在的网络监控，在说怪话。因为这种只在类似《一九八四》这种政治恐怖小说中出现的事情，实在难以置信。&lt;/p&gt;
&lt;p&gt;可是这居然是真的，“绿坝娘”无情的粉碎了我的天真。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;听起来是怪话，原来是实话，终究是笑话。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“绿坝娘”的诞生花的是民脂膏血，最终也算是娱乐了大众，虽然现在还在苟延残喘，但基本可以宣布她死得其所，被口水淹死了。&lt;/p&gt;
&lt;p&gt;这个世界本没有什么忌讳，找的人贱了，也便有了忌讳。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;2010年，据说“胡萝卜”是敏感词，用Google搜索会被重置连接，你相信吗&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2010年，据说张纪中版《倚天屠龙记》中把少林派改叫“僧人派”，因为有人忌讳少林寺出了反派。你相信吗&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2007年，有不少内地人特意去香港看“完整版”的《色，戒》，据说是剪刀手义务当了一次宣传材料不满 ，后来汤唯莫名其妙的被封杀了，而且只对女人下手。你相信吗&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2001年，我们班的女生泡在网吧看一部叫《流星花园》的电视剧，后来据说它被禁了，理由是“在社会上产生了很大的负面影响，易误导青少年。”你相信吗&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1990年代，据说张艺谋的代表作品《活着》和陈凯歌代表作品《霸王别姬》都是禁片，所以他们后来去拍和《三枪》和《无极》了，你相信吗&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1982年，据说人民音乐出版社有一本书叫做《怎样鉴别黄色歌曲》，有一篇叫《谈港澳流行庸俗歌曲的渗入》。你相信吗&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;1970年代，据说邓丽君的歌曲要悄悄的听悄悄的唱，因为这是资本主义腐朽的靡靡之音。你相信吗&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;一部禁忌史，一出荒诞剧，一本笑话集。&lt;/strong&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<p>世道艰难，人免不了说些怪话，无非是些废话、反话、气话、鬼话。</p>
<p>说起来中文说怪话的成就倒是不小的。《史记.滑稽列传》里都是讲怪话的高手，什么欲擒故纵，劝君主对爱马“以人君礼葬之”云云，劝谏这门学问大约从这里开山吧，这种拐弯抹角的技术据说已经上升到艺术的高度了。说起讲怪话，鲁迅大约是近现代第一高手，如果对他文章的本意缺乏理解，会发觉整个有些阴阳怪气，说话夹枪带棒、笑里藏刀。</p>
<p>有话直说还是有话曲说，刀架在脖子上时，你说该怎么选择呢？more</p>
<p>在上网之前，我不知道世界上有很多的人是不懂反语的，比如韩寒有一次发文章挺孙俪，用了反语，于是我看到N条留言中韩寒的粉丝在骂孙俪。对这种人，我以前很鄙夷他们的智商，现在却有觉得世界上这种人多一点还是挺好的，赞就是赞骂就是骂，快意恩仇，损失一些语言艺术倒也无妨。</p>
<p>要说我为什么有这个思想转变，主要还是被打击了，原来我会把实话错当怪话。零九年的时候有一段时间我不方便上网，在一个小旅馆里过着夜夜看电视的日子，有人来访，谈说起热点新闻，说是国家要花钱给每台电脑装监控软件，我的第一反应是有人不满现在的网络监控，在说怪话。因为这种只在类似《一九八四》这种政治恐怖小说中出现的事情，实在难以置信。</p>
<p>可是这居然是真的，“绿坝娘”无情的粉碎了我的天真。</p>
<p><strong>听起来是怪话，原来是实话，终究是笑话。</strong></p>
<p>“绿坝娘”的诞生花的是民脂膏血，最终也算是娱乐了大众，虽然现在还在苟延残喘，但基本可以宣布她死得其所，被口水淹死了。</p>
<p>这个世界本没有什么忌讳，找的人贱了，也便有了忌讳。</p>
<ul>
<li>
<p>2010年，据说“胡萝卜”是敏感词，用Google搜索会被重置连接，你相信吗</p>
</li>
<li>
<p>2010年，据说张纪中版《倚天屠龙记》中把少林派改叫“僧人派”，因为有人忌讳少林寺出了反派。你相信吗</p>
</li>
<li>
<p>2007年，有不少内地人特意去香港看“完整版”的《色，戒》，据说是剪刀手义务当了一次宣传材料不满 ，后来汤唯莫名其妙的被封杀了，而且只对女人下手。你相信吗</p>
</li>
<li>
<p>2001年，我们班的女生泡在网吧看一部叫《流星花园》的电视剧，后来据说它被禁了，理由是“在社会上产生了很大的负面影响，易误导青少年。”你相信吗</p>
</li>
<li>
<p>1990年代，据说张艺谋的代表作品《活着》和陈凯歌代表作品《霸王别姬》都是禁片，所以他们后来去拍和《三枪》和《无极》了，你相信吗</p>
</li>
<li>
<p>1982年，据说人民音乐出版社有一本书叫做《怎样鉴别黄色歌曲》，有一篇叫《谈港澳流行庸俗歌曲的渗入》。你相信吗</p>
</li>
<li>
<p>1970年代，据说邓丽君的歌曲要悄悄的听悄悄的唱，因为这是资本主义腐朽的靡靡之音。你相信吗</p>
</li>
</ul>
<p><strong>一部禁忌史，一出荒诞剧，一本笑话集。</strong></p>
]]></content:encoded><category>viewpoint</category><category domain="tags">社会</category><category domain="tags">思考</category></item><item><title>自然数数字幂和的周期性</title><link>https://yifeitao.com/the-cyclicality-of-digit-power-sum-of-natual-number/</link><pubDate>Thu, 29 Jul 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/the-cyclicality-of-digit-power-sum-of-natual-number/</guid><description>&lt;p&gt;**摘要：**本文探讨的问题源自数学小游戏“一个数的数字平方和”：即计算任意十进制自然数的各位数字的平方和，并对结果反复计算，形成的序列都会出现循环。通过分析序列单调性及运用抽屉原理，本文证明了序列出现循环节的必然性，并将平方和推广到任意次幂和。本文还探讨了此类周期性现象的本质原因。&lt;/p&gt;
&lt;p&gt;**关键词：**数字幂和 周期性 自然数变换 抽屉原则&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 id="1-问题描述"&gt;1 问题描述&lt;/h2&gt;
&lt;p&gt;文献&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;有介绍数学游戏“一个数的数字平方和”：我们从任何一个正整数开始，比如9246，求出他的各位数字的平方和（81+4+16+36=137）。再对这个数做同样的事情（137给出1+9+49=59），并且对每次所得结果重复这一步骤，这样便得到一个整数序列。对于我们的例子，这个序列是9246，137，59，106，37，58，89，145，42，20，…&lt;/p&gt;
&lt;p&gt;那么，不论开始是人们选取什么整数，所得到的序列，要么出现数1（而在1之后显然就永远重复这个数字），要么出现数4（而在4之后就一直循环地出现4，16，37，58，89，145，42，20）。&lt;/p&gt;
&lt;p&gt;对上述是问题稍作推广有一般的自然数数字幂和问题&lt;/p&gt;
&lt;p&gt;$$
P_k
$$&lt;/p&gt;
&lt;p&gt;。&lt;/p&gt;
&lt;p&gt;$$
P_k$$:对$$m$$位十进制自然数$$N$$，
$$&lt;/p&gt;
&lt;p&gt;N=\overline{a_{m-1}a_{m-2}&amp;hellip;a_{1}a_{0}}=\sum_{0\leqslant i&amp;lt; m}{a_i\times 10^i}(a_i\in{0,1,2,3,4,5,6,7,8,9})&lt;/p&gt;
&lt;p&gt;$$
其$$k$$次数字幂和为
$$&lt;/p&gt;
&lt;p&gt;S_k(N)=\sum_{0\leqslant i&amp;lt;m}a_i^k&lt;/p&gt;
&lt;p&gt;$$
定义其复合
$$&lt;/p&gt;
&lt;p&gt;\begin{equation}
\left{
\begin{aligned}
S_k^{(0)}(N)&amp;amp;=N \
S_k^{(t)}(N)&amp;amp;=S_k^{(t)}(S_k^{(t-1)}(N)) \
\end{aligned}
\right.
\end{equation}&lt;/p&gt;
&lt;p&gt;$$
则序列$${S_k^{(t)}(N)}$$一定会出现周期循环，即对任意充分大的t，存在周期T，使得$$S_k^{(t)}(N)=S_k^{(t+T)}(N)$$。而且循环节$${S_k^{(t)}(N),S_k^{(t+1)}(N)&amp;hellip;S_k^{(t+T)}(N)}$$的种类是有限的。&lt;/p&gt;
&lt;p&gt;“一个数的数字平方和”描述的即为问题$$P_2$$。&lt;/p&gt;
&lt;h2 id="2p2的证明"&gt;2 P2的证明&lt;/h2&gt;
&lt;h3 id="21-n充分大时的序列单调性分析"&gt;2.1 &lt;em&gt;N&lt;/em&gt;充分大时的序列单调性分析&lt;/h3&gt;
&lt;p&gt;通过观察不难做直观上的猜测：$$N$$充分大时，$$N$$的数字平方和比$$N$$小。即
$$&lt;/p&gt;
&lt;p&gt;S_2(N)&amp;lt;N (N\geqslant N_0)&lt;/p&gt;
&lt;p&gt;$$
下面分析得到一个下界$$N_0$$，对于$$m$$位数$$N$$有$$N\geqslant10^{m-1},S_2(N)\leqslant81m$$，令$$81m&amp;lt;10^{m-1}$$得$$m\geqslant4$$，则此时必有$$S_2(N)&amp;lt;N$$。于是我们得到一个下界$$N_0=1000$$。&lt;/p&gt;
&lt;p&gt;于是对于充分大的&lt;em&gt;N&lt;/em&gt;，序列$${S_2^{(t)}(N)}$$的前面一些项是递减的，直至出现小于*$$N_0$$*的项$$S_2^{(t_0)}(N)$$，且$$t_0\leqslant N$$。&lt;/p&gt;
&lt;h3 id="22-验证性证明"&gt;2.2 验证性证明&lt;/h3&gt;
&lt;p&gt;由前述分析，对于任意&lt;em&gt;N&lt;/em&gt;，序列$${S_2^{(t)}(N)}$$会一定出现小于*$$N_0$$&lt;em&gt;的项，因此我们有如下引理&lt;/em&gt;*$$P_2&amp;rsquo;$$**。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;$$P_2&amp;rsquo;$$&lt;/strong&gt;: 如果$$N&amp;lt;N_0$$时，**$$P_2$$&lt;strong&gt;成立，则对于任意$$N$$，&lt;/strong&gt;$$P_2$$**成立。&lt;/p&gt;
&lt;p&gt;用计算机程序甚至手动筛除都不难验证，对于1~999的自然数，**$$P_2$$&lt;strong&gt;成立。出现的循环节共有两种，不动点{1}和{4,16,37,58,89,145,42,20}。于是对于任意$$N$$，&lt;/strong&gt;$$P_2$$&lt;strong&gt;成立。至此我们得到了&lt;/strong&gt;$$P_2$$**的完整证明，注意到我们逐一验证了$$N&amp;lt;N_0$$的自然数，这是一个平凡的做法。&lt;/p&gt;
&lt;h2 id="3-pk的证明"&gt;3 Pk的证明&lt;/h2&gt;
&lt;h3 id="31-n充分大时的序列单调性分析"&gt;3.1 &lt;em&gt;N&lt;/em&gt;充分大时的序列单调性分析&lt;/h3&gt;
&lt;p&gt;类似2.1，我们可以找到一个下界$$N_0$$，使得$$S_k(N)&amp;lt;N (N\geqslant N_0)$$。对于$$m$$位数有$$N\geqslant10^{m-1},S_k(N)\leqslant9^k\times m$$，令$$9^k\times m&amp;lt;10^{m-1}$$。$$A(m)=9^k\times m$$是线性函数，$$B(m)=10^{m-1}$$是指数函数，故不等式必有解$$m\geqslant m_0$$。总能找到下界$$N_0=10^{m_0}$$。如$$k=3$$时，取$$m_0=5, N_0=10000$$。&lt;/p&gt;</description><content:encoded><![CDATA[<p>**摘要：**本文探讨的问题源自数学小游戏“一个数的数字平方和”：即计算任意十进制自然数的各位数字的平方和，并对结果反复计算，形成的序列都会出现循环。通过分析序列单调性及运用抽屉原理，本文证明了序列出现循环节的必然性，并将平方和推广到任意次幂和。本文还探讨了此类周期性现象的本质原因。</p>
<p>**关键词：**数字幂和 周期性 自然数变换 抽屉原则</p>
<p> </p>
<h2 id="1-问题描述">1 问题描述</h2>
<p>文献<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>有介绍数学游戏“一个数的数字平方和”：我们从任何一个正整数开始，比如9246，求出他的各位数字的平方和（81+4+16+36=137）。再对这个数做同样的事情（137给出1+9+49=59），并且对每次所得结果重复这一步骤，这样便得到一个整数序列。对于我们的例子，这个序列是9246，137，59，106，37，58，89，145，42，20，…</p>
<p>那么，不论开始是人们选取什么整数，所得到的序列，要么出现数1（而在1之后显然就永远重复这个数字），要么出现数4（而在4之后就一直循环地出现4，16，37，58，89，145，42，20）。</p>
<p>对上述是问题稍作推广有一般的自然数数字幂和问题</p>
<p>$$
P_k
$$</p>
<p>。</p>
<p>$$
P_k$$:对$$m$$位十进制自然数$$N$$，
$$</p>
<p>N=\overline{a_{m-1}a_{m-2}&hellip;a_{1}a_{0}}=\sum_{0\leqslant i&lt; m}{a_i\times 10^i}(a_i\in{0,1,2,3,4,5,6,7,8,9})</p>
<p>$$
其$$k$$次数字幂和为
$$</p>
<p>S_k(N)=\sum_{0\leqslant i&lt;m}a_i^k</p>
<p>$$
定义其复合
$$</p>
<p>\begin{equation}
\left{
\begin{aligned}
S_k^{(0)}(N)&amp;=N  \
S_k^{(t)}(N)&amp;=S_k^{(t)}(S_k^{(t-1)}(N)) \
\end{aligned}
\right.
\end{equation}</p>
<p>$$
则序列$${S_k^{(t)}(N)}$$一定会出现周期循环，即对任意充分大的t，存在周期T，使得$$S_k^{(t)}(N)=S_k^{(t+T)}(N)$$。而且循环节$${S_k^{(t)}(N),S_k^{(t+1)}(N)&hellip;S_k^{(t+T)}(N)}$$的种类是有限的。</p>
<p>“一个数的数字平方和”描述的即为问题$$P_2$$。</p>
<h2 id="2p2的证明">2 P2的证明</h2>
<h3 id="21-n充分大时的序列单调性分析">2.1 <em>N</em>充分大时的序列单调性分析</h3>
<p>通过观察不难做直观上的猜测：$$N$$充分大时，$$N$$的数字平方和比$$N$$小。即
$$</p>
<p>S_2(N)&lt;N (N\geqslant N_0)</p>
<p>$$
下面分析得到一个下界$$N_0$$，对于$$m$$位数$$N$$有$$N\geqslant10^{m-1},S_2(N)\leqslant81m$$，令$$81m&lt;10^{m-1}$$得$$m\geqslant4$$，则此时必有$$S_2(N)&lt;N$$。于是我们得到一个下界$$N_0=1000$$。</p>
<p>于是对于充分大的<em>N</em>，序列$${S_2^{(t)}(N)}$$的前面一些项是递减的，直至出现小于*$$N_0$$*的项$$S_2^{(t_0)}(N)$$，且$$t_0\leqslant N$$。</p>
<h3 id="22-验证性证明">2.2 验证性证明</h3>
<p>由前述分析，对于任意<em>N</em>，序列$${S_2^{(t)}(N)}$$会一定出现小于*$$N_0$$<em>的项，因此我们有如下引理</em>*$$P_2&rsquo;$$**。</p>
<p><strong>$$P_2&rsquo;$$</strong>: 如果$$N&lt;N_0$$时，**$$P_2$$<strong>成立，则对于任意$$N$$，</strong>$$P_2$$**成立。</p>
<p>用计算机程序甚至手动筛除都不难验证，对于1~999的自然数，**$$P_2$$<strong>成立。出现的循环节共有两种，不动点{1}和{4,16,37,58,89,145,42,20}。于是对于任意$$N$$，</strong>$$P_2$$<strong>成立。至此我们得到了</strong>$$P_2$$**的完整证明，注意到我们逐一验证了$$N&lt;N_0$$的自然数，这是一个平凡的做法。</p>
<h2 id="3-pk的证明">3 Pk的证明</h2>
<h3 id="31-n充分大时的序列单调性分析">3.1 <em>N</em>充分大时的序列单调性分析</h3>
<p>类似2.1，我们可以找到一个下界$$N_0$$，使得$$S_k(N)&lt;N (N\geqslant N_0)$$。对于$$m$$位数有$$N\geqslant10^{m-1},S_k(N)\leqslant9^k\times m$$，令$$9^k\times m&lt;10^{m-1}$$。$$A(m)=9^k\times m$$是线性函数，$$B(m)=10^{m-1}$$是指数函数，故不等式必有解$$m\geqslant m_0$$。总能找到下界$$N_0=10^{m_0}$$。如$$k=3$$时，取$$m_0=5, N_0=10000$$。</p>
<p>于是对于充分大的$$N$$，序列$$S_k^{(t)}(N)$$的前面一些项是递减的，直至出现小于$$N_0$$的项$S_k^{(t_0)}(N)$，且$t_0&lt;N$。</p>
<h3 id="32-pk的构造性证明">3.2 Pk的构造性证明</h3>
<p>类似2.2，我们有如下引理$$P_k&rsquo;$$。</p>
<p>$$P_k&rsquo;$$:如果$$N&lt;N_0$$时，$$P_k$$成立，则对于任意$$N$$，$$P_k$$成立。</p>
<p>对于具体的$$k$$值，我们依然可以用2.2中的方法：先可以找到下界$$N_0$$，然后验证所有小于$$N_0$$的自然数$$P_k$$成立。</p>
<p>如对$$k=3$$，验证1~9999的自然数，发现$$P_3$$成立，于是对于任意$$N$$，$$P_3$$成立。出现的循环节有如下9种：</p>
<p>{1},{153},{370},{371},{407},{55,250,133},{136,244},{160,217,352},{919,1459}。</p>
<p>但对于一般的$$P_k$$，我们要证明循环节的存在性，不能去一一验证。下面用抽屉原则给出一个构造性证明。</p>
<p>首先换个角度理解循环节的存在，即序列$${S_k^{(t)}(N)}$$中出现重复项。我们有如下引理$$P$$。</p>
<p>$$P$$：对于任意$$N$$，若序列$${S_k^{(t)}(N)}$$中出现重复项，则$$P_k$$成立。下面我们证明对于$$N&lt;N_0$，${S_k^{(t)}(N)}$$中必然出现重复项。</p>
<p>我们称$$N&lt;N_0$$为震荡域，反之为下降域。序列前后两项，可能由震荡域进入下降域，但由3.1的分析知，序列经过有限的长度，一定会再进入震荡域。于是序列在震荡域取值可达$$N_0$$次（实际上是无穷次），而震荡域的不同值小于$$N_0$$，由抽屉原则知，必有两次取值相同，序列中必然出现重复项。另外循环节种类小于$$N_0$$，一定是有限的。至此由引理$$P$$可知$$P_k$$得证。</p>
<h2 id="4-进一步的思考">4 进一步的思考</h2>
<p>对于问题$$P_k$$中的循环节也有相关研究，比如$$P_k$$中的$k$位不动点被称为回归数，如$k$取3时共有4个回归数153、370、371、407。<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<p>证明过程本质上与进制关系不大，事实上对于任意进制，自然数数字幂和都有周期性，这里也不再赘述。</p>
<p>自然数数字幂和是一种定义域与值域都是自然数的函数，不妨称这种函数为自然数变换。</p>
<p>对于自然数$$N$$反复施用自然数变换S，得到序列$${S_k^{(t)}(N)}$$，由$$P_k$$的证明不难理解序列出现循环的充要条件是$$N$$重复大时，$$S(N)&lt;N$$。序列会逐渐减小直至到达一个有限的震荡域出现循环。这里就不再给出具体的证明了。</p>
<p> </p>
<p><strong>参考文献：</strong></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>数学中的智巧. R.亨斯贝尔格 著. 李忠 译. 北京大学出版社. pp76, 1985.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>Pickover, C. A. &ldquo;The Latest Gossip on Narcissistic Numbers.&rdquo; Ch. 88 in *Wonders of Numbers: Adventures in Mathematics, Mind, and Meaning.*Oxford, England: Oxford University Press, pp. 204-205, 2001.
$$&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded><category>life</category><category domain="tags">数学</category><category domain="tags">算法</category></item><item><title>推选第四辑</title><link>https://yifeitao.com/twitter-collection-4/</link><pubDate>Sat, 29 May 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/twitter-collection-4/</guid><description>&lt;p&gt;最近玩&lt;a href="http://t.sina.com.cn/yisha7"
rel="noopener noreferrer" target="_blank" class="external"&gt;新浪微博&lt;/a&gt;
比较多，导致博客几近荒废。Twitter类服务的的片段化写作、片段话思考、片段化阅读的确有其独到之处，但是我想沉下心来思考依然需要博客。新浪微博虽然是Twitter的山寨，但也算是墙内的无可奈何的替代，毕竟大部分网民还是不会翻墙的。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;情深深，雨蒙蒙，映日荷花别样红&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在消息如生命线重要时阻碍消息流动，算不算变相杀人？（百度屏蔽玉树吧&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;完美主义倾向常常伴生怯懦&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不该总是这样。——但总是这样&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;再大的困难除以13亿，也会变得微不足道；再小的爱心乘以十三亿，就是一片爱的海洋！——事实是这个除法和这个乘法一般只能在口头上进行。mor&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“没有代表，只有被代表”渗透在我们的骨子 里。小时候写作文都这样：朋友们，让我们……去你妈的，谁是你朋友&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学校广播说到地震新闻，我光听见主席和总理的名字了。善了个哉的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国学校的房子都是棺材板做的吗？为什么13亿人的国度造不出震不倒的学校。为什么？为什么&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;砍头不要紧，只要银子真；杀了我一个，还有后来人&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;招贴栏上有人写道&amp;quot;近日痛失爱伞&amp;quot;云云，被人无情地改成“近日痛失爱人”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;微博通很好很强大，所以它也离死不远了，这是我用过诸多优秀服务后的结论，几乎无一例外。因为我们不配用。不死也阉&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;腾讯微博每条都有一个按钮叫举报，但认证过 的没有。我企图举报余秋雨来着的…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;万国来朝的迷梦还是不错的，惟愿拿起之后，懂得放下&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;五四青年节，看领导指示：一把手要抓学校安全。十条评论，有九条是“感谢各级领导”。人血馒头，不过如此&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;保护海豚而不保护猪，从某种角度来看的确是伪善的，但人类是需要这种伪善的。有很多人看完《海豚湾》的主要结论只是日本人很变态。 我是觉得制造一个不存在的”文化传统“，拼命掩饰问题的存在，此类方式实在太过熟悉&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;攻击动物保护主义的常用理由之一是&amp;quot;伪善&amp;quot;，这个问题确实要反思，比如很多珍稀动物都难有大熊猫的幸运。但是如果因此钻入牛角尖，那么即使是素食主义者也 难逃谴责。这种把他人降低到和自己一个水准的攻击方式是很拙劣，很无耻的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你把别人消费性的辱骂一番 ，并问道：”介意吗？“别人豁达的说：如果是善意的调侃也是可以接受的。然后你就可以心安理得的说：我骂她，她自己都不介意的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不改正的缺点是需要揪着不放的。（对于公权力而言）但有些人给人扣五毛的帽子真是简单粗暴，反而像红小兵了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;生于此，必先精神分裂，而后淌水过河。@cdaz：怎么考研政治老师讲的好多都不 赞成呢，忧心到时候政治能过线否&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当预言变成现实时，竟然唯有悲愤。我说过， 凡是一流优秀的互联网服务都会被中国关闭或屏蔽，又应验了。超级好用的网盘dropbox被封杀了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有时候，洁癖带来的只有更大的肮脏&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;世界上有永不褪色的红领巾吗&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;代表你妈，道你妈的歉。（有人说袁腾飞应该向全国人民道歉。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;民族性问题是个伪命题，解决不了任何问题。（有时候不如谈谈人性更靠谱。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;永远有多远？数学上叫做正无穷大，一个符号而已&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;韩寒本不值得警惕，而是值得颂扬的，而需要警惕的是大众（而且是自以为是的大众）沉浸在语言快感中自我陶醉。可以学习韩寒，但不可消费韩寒&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他们终于把片子剪辑完毕了，虽然只剩下了字幕。后来领导说了，这个人的名字怎么这么不和谐，所以最后，大家终于看到了片名的上映。（无人区&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国最受欢迎的一个算法是什么算法？答曰：鸵鸟算法。（只要不报导就不存在问题了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;富士康事件是社会长期缺失的恶果。政府和企业的管理都是自上而下的，所以渗透性极其有限。“咱们工人有力量”成了一个幻影&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;早起在影院等电影，恍惚回到小时候等露天电影。不过露天电影后来被电视扼杀，我的乡下就与电影隔绝了。其实取代露天电影的还有录像及后来的影碟，所以即使是在不经意间，我也看了很多的香港电影，但我们称其为录像。我大概赶上了露天电影时代的尾巴，所以听父母说他们赶场的疯狂很是觉得有趣，但终究不过是岁月沉淀后的美好吧&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;影院对于我在相当长的一段时间内是奢侈的选择，所以下载盗版到电脑上看是最佳选择。然而也因此看到了国内并无引进的原汁原味的电影。盗版客观上打开了世界 之窗，胜过一切刻意洗脑电影作用。但是永远以看盗版电影为乐的国度将是没有未来的，我将记下我自己的罪&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大陆的电影分两级，可以上映的和不能上映的。也就是儿童也能看的和成人也不能看的。结论就是我们都只有儿童的分辨能力和接受尺度&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我最喜欢@ 罗永浩可爱多 的地方就是他敢于并善于修理自己的“粉丝”。劣质的粉丝喜欢上了谁，会把自己的情感愿望寄托到偶像身上，甚至对不符合自己想象的部分施以暴力。电影《危情十日》夸张地表现过这种情绪&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;律师天生是为犯罪嫌疑人做辩护的，但很多人对此职业特点缺乏基本的尊重，所以某天要是你被人陷害，辩护意见也就没人听了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;存在即合理不意味着一点操守都不提倡&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果公平正义像白开水一样就好了。（而不是XO&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;他妈的历史和新闻都不能相信，作为一个普通人，老子还要去翻档案？真他妈的累，中国写假历史的都木有小鸡鸡！中国写假新闻也木有小鸡鸡！ms忘了女人们…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;任何企业若想寄生于此地必变成作恶者，企业会发现无耻是捷径且无风险。橘生淮北尚为枳，况本枳乎&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如何把权力关进笼子里，是中国未来几十年的主要课题。这不是搞搞思想教育就能搞定的问题&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;逝者已然无言，生者岂能闭嘴。富士康是不是血汗工厂，应当听到工人们的声音。可惜到目前为止，我看到的最有价值的文字来自于一个已经移民加拿大的前富士康 员工。我们的工人发不出声音，这才是最大的悲哀。我们围观的仅仅是新华社报道，然后编几个段子冲淡这惨淡的气氛，悲从中来。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<p>最近玩<a href="http://t.sina.com.cn/yisha7"
   rel="noopener noreferrer" target="_blank" class="external">新浪微博</a>
比较多，导致博客几近荒废。Twitter类服务的的片段化写作、片段话思考、片段化阅读的确有其独到之处，但是我想沉下心来思考依然需要博客。新浪微博虽然是Twitter的山寨，但也算是墙内的无可奈何的替代，毕竟大部分网民还是不会翻墙的。</p>
<ol>
<li>
<p>情深深，雨蒙蒙，映日荷花别样红</p>
</li>
<li>
<p>在消息如生命线重要时阻碍消息流动，算不算变相杀人？（百度屏蔽玉树吧</p>
</li>
<li>
<p>完美主义倾向常常伴生怯懦</p>
</li>
<li>
<p>不该总是这样。——但总是这样</p>
</li>
<li>
<p>再大的困难除以13亿，也会变得微不足道；再小的爱心乘以十三亿，就是一片爱的海洋！——事实是这个除法和这个乘法一般只能在口头上进行。mor</p>
</li>
<li>
<p>“没有代表，只有被代表”渗透在我们的骨子 里。小时候写作文都这样：朋友们，让我们……去你妈的，谁是你朋友</p>
</li>
<li>
<p>学校广播说到地震新闻，我光听见主席和总理的名字了。善了个哉的</p>
</li>
<li>
<p>中国学校的房子都是棺材板做的吗？为什么13亿人的国度造不出震不倒的学校。为什么？为什么</p>
</li>
<li>
<p>砍头不要紧，只要银子真；杀了我一个，还有后来人</p>
</li>
<li>
<p>招贴栏上有人写道&quot;近日痛失爱伞&quot;云云，被人无情地改成“近日痛失爱人”</p>
</li>
<li>
<p>微博通很好很强大，所以它也离死不远了，这是我用过诸多优秀服务后的结论，几乎无一例外。因为我们不配用。不死也阉</p>
</li>
<li>
<p>腾讯微博每条都有一个按钮叫举报，但认证过 的没有。我企图举报余秋雨来着的…</p>
</li>
<li>
<p>万国来朝的迷梦还是不错的，惟愿拿起之后，懂得放下</p>
</li>
<li>
<p>五四青年节，看领导指示：一把手要抓学校安全。十条评论，有九条是“感谢各级领导”。人血馒头，不过如此</p>
</li>
<li>
<p>保护海豚而不保护猪，从某种角度来看的确是伪善的，但人类是需要这种伪善的。有很多人看完《海豚湾》的主要结论只是日本人很变态。 我是觉得制造一个不存在的”文化传统“，拼命掩饰问题的存在，此类方式实在太过熟悉</p>
</li>
<li>
<p>攻击动物保护主义的常用理由之一是&quot;伪善&quot;，这个问题确实要反思，比如很多珍稀动物都难有大熊猫的幸运。但是如果因此钻入牛角尖，那么即使是素食主义者也 难逃谴责。这种把他人降低到和自己一个水准的攻击方式是很拙劣，很无耻的</p>
</li>
<li>
<p>你把别人消费性的辱骂一番 ，并问道：”介意吗？“别人豁达的说：如果是善意的调侃也是可以接受的。然后你就可以心安理得的说：我骂她，她自己都不介意的</p>
</li>
<li>
<p>不改正的缺点是需要揪着不放的。（对于公权力而言）但有些人给人扣五毛的帽子真是简单粗暴，反而像红小兵了</p>
</li>
<li>
<p>生于此，必先精神分裂，而后淌水过河。@cdaz：怎么考研政治老师讲的好多都不 赞成呢，忧心到时候政治能过线否</p>
</li>
<li>
<p>当预言变成现实时，竟然唯有悲愤。我说过， 凡是一流优秀的互联网服务都会被中国关闭或屏蔽，又应验了。超级好用的网盘dropbox被封杀了</p>
</li>
<li>
<p>有时候，洁癖带来的只有更大的肮脏</p>
</li>
<li>
<p>世界上有永不褪色的红领巾吗</p>
</li>
<li>
<p>代表你妈，道你妈的歉。（有人说袁腾飞应该向全国人民道歉。</p>
</li>
<li>
<p>民族性问题是个伪命题，解决不了任何问题。（有时候不如谈谈人性更靠谱。</p>
</li>
<li>
<p>永远有多远？数学上叫做正无穷大，一个符号而已</p>
</li>
<li>
<p>韩寒本不值得警惕，而是值得颂扬的，而需要警惕的是大众（而且是自以为是的大众）沉浸在语言快感中自我陶醉。可以学习韩寒，但不可消费韩寒</p>
</li>
<li>
<p>他们终于把片子剪辑完毕了，虽然只剩下了字幕。后来领导说了，这个人的名字怎么这么不和谐，所以最后，大家终于看到了片名的上映。（无人区</p>
</li>
<li>
<p>中国最受欢迎的一个算法是什么算法？答曰：鸵鸟算法。（只要不报导就不存在问题了</p>
</li>
<li>
<p>富士康事件是社会长期缺失的恶果。政府和企业的管理都是自上而下的，所以渗透性极其有限。“咱们工人有力量”成了一个幻影</p>
</li>
<li>
<p>早起在影院等电影，恍惚回到小时候等露天电影。不过露天电影后来被电视扼杀，我的乡下就与电影隔绝了。其实取代露天电影的还有录像及后来的影碟，所以即使是在不经意间，我也看了很多的香港电影，但我们称其为录像。我大概赶上了露天电影时代的尾巴，所以听父母说他们赶场的疯狂很是觉得有趣，但终究不过是岁月沉淀后的美好吧</p>
</li>
<li>
<p>影院对于我在相当长的一段时间内是奢侈的选择，所以下载盗版到电脑上看是最佳选择。然而也因此看到了国内并无引进的原汁原味的电影。盗版客观上打开了世界 之窗，胜过一切刻意洗脑电影作用。但是永远以看盗版电影为乐的国度将是没有未来的，我将记下我自己的罪</p>
</li>
<li>
<p>大陆的电影分两级，可以上映的和不能上映的。也就是儿童也能看的和成人也不能看的。结论就是我们都只有儿童的分辨能力和接受尺度</p>
</li>
<li>
<p>我最喜欢@ 罗永浩可爱多 的地方就是他敢于并善于修理自己的“粉丝”。劣质的粉丝喜欢上了谁，会把自己的情感愿望寄托到偶像身上，甚至对不符合自己想象的部分施以暴力。电影《危情十日》夸张地表现过这种情绪</p>
</li>
<li>
<p>律师天生是为犯罪嫌疑人做辩护的，但很多人对此职业特点缺乏基本的尊重，所以某天要是你被人陷害，辩护意见也就没人听了</p>
</li>
<li>
<p>存在即合理不意味着一点操守都不提倡</p>
</li>
<li>
<p>如果公平正义像白开水一样就好了。（而不是XO</p>
</li>
<li>
<p>他妈的历史和新闻都不能相信，作为一个普通人，老子还要去翻档案？真他妈的累，中国写假历史的都木有小鸡鸡！中国写假新闻也木有小鸡鸡！ms忘了女人们…</p>
</li>
<li>
<p>任何企业若想寄生于此地必变成作恶者，企业会发现无耻是捷径且无风险。橘生淮北尚为枳，况本枳乎</p>
</li>
<li>
<p>如何把权力关进笼子里，是中国未来几十年的主要课题。这不是搞搞思想教育就能搞定的问题</p>
</li>
<li>
<p>逝者已然无言，生者岂能闭嘴。富士康是不是血汗工厂，应当听到工人们的声音。可惜到目前为止，我看到的最有价值的文字来自于一个已经移民加拿大的前富士康 员工。我们的工人发不出声音，这才是最大的悲哀。我们围观的仅仅是新华社报道，然后编几个段子冲淡这惨淡的气氛，悲从中来。</p>
</li>
</ol>
]]></content:encoded><category>life</category><category domain="tags">推特</category><category domain="tags">碎片</category></item><item><title>河南省第一监狱的救赎</title><link>https://yifeitao.com/zhaozuohai/</link><pubDate>Tue, 11 May 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/zhaozuohai/</guid><description>&lt;p&gt;如果要说在电影史上最受影迷喜爱的一部电影，那么《肖申克的救赎》无疑是一个有力的选择。虽然在1994年这个经典电影爆发出现的年份，它在奥斯卡奖上输给了《阿甘正传》，但是目前IMDB的榜首位置昭示了它在影迷心中的地位，在中国的豆瓣电影和时光网上也是长期位居排行榜榜首。&lt;/p&gt;
&lt;p&gt;《肖申克的救赎》讲的是一个受冤入狱的银行家安迪用了二十年时间从肖申克监狱越狱的故事，它不如电视剧《越狱》那般激烈与刺激，但二十年似江河入海。当看到安迪张开双臂迎接自由的暴雨冲刷时，我想没有一个观众会不激动不感慨。或许是因为我们融入社会，不得不或多或少的接受体制化，因此自由就成为我们永远的追求。最伟大的电影讲的必定是每个人的心灵故事。&lt;/p&gt;
&lt;p&gt;然而“爱折腾”的安迪毕竟只是斯蒂芬金笔下的一个虚构的人物，而且这个故事的背景是在美国，即便如此，在肖申克监狱中，更多的是被彻底体制化的人，他们甚至离开了监狱就再也生活不下去。没有哪一个人生来喜欢受虐，然而我们却都有可能学会习惯甚至学会感激对我们奴化与压榨的体制，患上斯德哥尔摩症。&lt;/p&gt;
&lt;p&gt;中国人其实自古以来就喜欢沉冤得雪的故事，譬如那感天动地窦娥冤的故事，至今仍在语文课本和电视荧屏上获得我们的悲愤与泪水。安迪依靠自己的力量逃离了体制，奔向了自由，而那些冤屈甚至已经不值一提了。窦娥依靠的则是超自然的力量以及清官的介入，即使如此，她受冤屈之后死而不服的怨气，分明还在抽打我们的灵魂。&lt;/p&gt;
&lt;p&gt;最后，我不得不从电影和古代传说中抽离，来面对我们的现实。赵作海的故事说出来有些离奇，然而竟然也不能算是近年来中国发现的冤案的特例了。十多年前决定赵作海命运的那些人必定是对生命心存敬畏的，他们没有让赵作海立赴黄泉，而是留下了余地，才使得十多年后的今天，当被赵“杀害”的赵振晌出现在人们眼前时，一切不言自明。或许有人会觉得这是一个戏剧化的故事，然而如果真把这个故事拍成电影《河南省第一监狱的救赎》，那这部电影是尴尬的。&lt;/p&gt;
&lt;p&gt;它要言说怎样的主题呢？这个沉冤得雪的故事中，几乎没有抗争，所有的当事人都被屈打成招（尽管没有官方定论如此，但我想明眼人都知道是怎么回事）；几乎没有希望，赵作海说待在监狱挺好的，不想折腾，所以连申诉也没有；甚至一个让斯德哥尔摩症患者们去感激的对象也找不到，因为翻案不需要一个青天大老爷，傻子都知道出错了；有的只是命运对体制的嘲弄，然而命运的嘲弄毕竟只是昙花一现，又有多少赵作海陷在身体或心灵的监狱中见不到阳光呢？这样的电影，得不到剪刀手的首肯，甚至也得不到观众的喜爱，因为它太过灰暗，没有希望。除非赵作海是某个宗教的信仰者，那么或许可以作为信仰超自然的救世主的宣传片。&lt;/p&gt;
&lt;p&gt;写到这里，我自己都觉得有些沮丧。现实的剧本还在续写，据说赵作海出狱之后，亲人还没见到，就被柘城县公安局请去旅游了。惟愿那曾经留给他一线生机的一善之念，能抵御错误的自我维护与自我纠缠，让正义得以彰显，尽管这愿望来得有些幼稚。而围观的我们，在鞭笞罪恶的同时也要扪心自问，如果自己是赵作海又会如何？&lt;/p&gt;</description><content:encoded><![CDATA[<p>如果要说在电影史上最受影迷喜爱的一部电影，那么《肖申克的救赎》无疑是一个有力的选择。虽然在1994年这个经典电影爆发出现的年份，它在奥斯卡奖上输给了《阿甘正传》，但是目前IMDB的榜首位置昭示了它在影迷心中的地位，在中国的豆瓣电影和时光网上也是长期位居排行榜榜首。</p>
<p>《肖申克的救赎》讲的是一个受冤入狱的银行家安迪用了二十年时间从肖申克监狱越狱的故事，它不如电视剧《越狱》那般激烈与刺激，但二十年似江河入海。当看到安迪张开双臂迎接自由的暴雨冲刷时，我想没有一个观众会不激动不感慨。或许是因为我们融入社会，不得不或多或少的接受体制化，因此自由就成为我们永远的追求。最伟大的电影讲的必定是每个人的心灵故事。</p>
<p>然而“爱折腾”的安迪毕竟只是斯蒂芬金笔下的一个虚构的人物，而且这个故事的背景是在美国，即便如此，在肖申克监狱中，更多的是被彻底体制化的人，他们甚至离开了监狱就再也生活不下去。没有哪一个人生来喜欢受虐，然而我们却都有可能学会习惯甚至学会感激对我们奴化与压榨的体制，患上斯德哥尔摩症。</p>
<p>中国人其实自古以来就喜欢沉冤得雪的故事，譬如那感天动地窦娥冤的故事，至今仍在语文课本和电视荧屏上获得我们的悲愤与泪水。安迪依靠自己的力量逃离了体制，奔向了自由，而那些冤屈甚至已经不值一提了。窦娥依靠的则是超自然的力量以及清官的介入，即使如此，她受冤屈之后死而不服的怨气，分明还在抽打我们的灵魂。</p>
<p>最后，我不得不从电影和古代传说中抽离，来面对我们的现实。赵作海的故事说出来有些离奇，然而竟然也不能算是近年来中国发现的冤案的特例了。十多年前决定赵作海命运的那些人必定是对生命心存敬畏的，他们没有让赵作海立赴黄泉，而是留下了余地，才使得十多年后的今天，当被赵“杀害”的赵振晌出现在人们眼前时，一切不言自明。或许有人会觉得这是一个戏剧化的故事，然而如果真把这个故事拍成电影《河南省第一监狱的救赎》，那这部电影是尴尬的。</p>
<p>它要言说怎样的主题呢？这个沉冤得雪的故事中，几乎没有抗争，所有的当事人都被屈打成招（尽管没有官方定论如此，但我想明眼人都知道是怎么回事）；几乎没有希望，赵作海说待在监狱挺好的，不想折腾，所以连申诉也没有；甚至一个让斯德哥尔摩症患者们去感激的对象也找不到，因为翻案不需要一个青天大老爷，傻子都知道出错了；有的只是命运对体制的嘲弄，然而命运的嘲弄毕竟只是昙花一现，又有多少赵作海陷在身体或心灵的监狱中见不到阳光呢？这样的电影，得不到剪刀手的首肯，甚至也得不到观众的喜爱，因为它太过灰暗，没有希望。除非赵作海是某个宗教的信仰者，那么或许可以作为信仰超自然的救世主的宣传片。</p>
<p>写到这里，我自己都觉得有些沮丧。现实的剧本还在续写，据说赵作海出狱之后，亲人还没见到，就被柘城县公安局请去旅游了。惟愿那曾经留给他一线生机的一善之念，能抵御错误的自我维护与自我纠缠，让正义得以彰显，尽管这愿望来得有些幼稚。而围观的我们，在鞭笞罪恶的同时也要扪心自问，如果自己是赵作海又会如何？</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">社会</category><category domain="tags">司法</category></item><item><title>《梦断代码》笔记</title><link>https://yifeitao.com/dreaming-in-code/</link><pubDate>Thu, 15 Apr 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/dreaming-in-code/</guid><description>&lt;p&gt;《梦断代码》讲的的OSAF开发PIM软件Chandler的故事，可以当做小说来读的，摘录一些书中有趣的说法以及自己的感想。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;Hello World&amp;quot;程序给程序员以乐观的想法：既然能叫它说话，就能让它做任何事。但事实可能是令人沮丧的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;计算机从0开始计数，用户从1开始计数，所以程序员花了无数精力于此&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人类文明运行于软件之上，但软件何其不靠谱，写过代码的人应该深有体会&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人月神话：往已延误的项目中补充人力，只会使其继续延误。因此，最理想的开发团队是单枪匹马。如果代码经过协调不好的一串人手，结果确实难看&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;开源软件给了软件开发模式以新的思考方向，但远未解决软件开发的痼疾&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;开源中的Free应理解为”自由“，而且这个自由也有其固有要求，如GPL的传染性，但国内不少公司似乎只看到了免费，大肆盗用开源代码封装商业软件&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;软件是为人服务的，但通常也会要求人去适应软件的特性（或者其傻叉的地方）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;让人适应软件还是让软件适应人？这是个问题。软件能否提升人类的智慧&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很多项目开始之初都雄心勃勃，自以为与众不同，但最后都滑入深渊&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;软件的制造有时会给人以严重的挫败感。悲观一点的人看目前的软件开发技术是没有希望的。个人以为好的软件如好的小说一样是奇迹&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;软件的灵活性只存在于思想中，每一行代码都是毫无灵活性的。所有的想法都要寄生于结构，语言。高级语言相比人类的语言，其实太过低级&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;软件领域没有摩尔定律&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;变量类型这种小事，可以在代码的国度引发宗教战争般的冲突&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;”雾件“，根本不知道自己在写什么东西。如果需求来自领导，会很纠结&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;复用？造轮子还是买轮子，这也是个问题。买的轮子通常满足90%的需求，但剩下的10%会令人抓狂&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;像搭积木一样搭房子，是程序员的乌托邦。软件开发依然在手工作坊时代，甚至难以看到彻底工业化的希望。个人觉得理解为艺术可能心安理得一些…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;软件会有自己组织信息的方式，也因此割裂事物之间的联系。比如数字化的文件和非数字化的文件分类上没有多大差别&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;快速、便宜、优质，最多三选其二&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;程序开发是常常是不断妥协的过程，人的肆意想法与机器的机械无情之间的妥协&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;程序员如何沟通，是技术问题，管理问题，哲学问题。写代码太多可能会用机器的方式思考…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;程序员把图形界面看做程序的外壳，而对于用户，图形界面几乎是全部。没人为可怜的用户说话&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;代码优先还是设计优先，这是个问题&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;从普通用户到机器语言的复杂协调过程，用一个俗词形容叫“扯皮”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;分开来运行正常，集成起来变垃圾。“系统”是可怕的。持续集成很麻烦，但”宇宙大爆炸式集成“可能造成更大的麻烦&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做一个基本能用的一般产品，还是憋一口气做伟大的产品，这是个问题&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;世界上的事情分两种，规格说明书写明的和规格说明书没有的。可惜这只是代码工人的想法&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;简单者就该简单，复杂者亦有可能。上手容易，精通困难。魔兽争霸，围棋，WordPress&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;城市不是树，信息也不是树。树易于理解，但湮灭可能性&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;软件的成功尽管有其不确定性因素，但基本是可验证的。人生却不是…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tag机制相比树状分类引入了多可能性，但难搞&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于文字，人能消歧理解（但常常也会误会）。计算机？重名者死&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;”吃你自己的狗食“&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;标准领域是一片令人畏惧的沼泽地。……想当然的标准是笑话，比如ipv9&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;P2P是一种意识形态或一种信仰。……所以中国很难有真正的P2P，只有迅雷&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;十月怀胎，欲速不达&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;富客户端是程序员的噩梦&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最佳实践的药方不可重开，银弹不会再次装入弹夹，杯具啊杯具&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不该总是这样。——但总是这样&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;计划总是停留在纸上，想法总是好的，付诸实施者寥寥&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;软件设计模式再完美，也会撞上现实特殊情况的墙&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最常用的软件开发实践就是什么也不用，埋头写代码。巨无霸方法论让痛恨被约束的才智所厌恶&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;祖尔测试。能得2、3分算不错了?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;做软件如抓沙。大即险，小即美&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;历史上最成功的软件公司是微软。也是软件被骂最多的软件公司&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;软件不过是水管。但是……“但是”威武&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“软件工程”是一种愿望，而不是业已实现之事&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;程序员是工程师还是艺术家？写代码更像修房子还是写小说&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;没有物理学就难有真正的工程，而软件毫无物理学可言&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;层级是软件的精髓，但是它们身患痼疾。抽象都有漏洞&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;工具越多，成为编程高手却越难&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;所谓的面向对象设计语言不过是杂种&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Gordian software？修补还是重装上阵，这是个问题&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;何时停机？何时说放弃&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;闭门造车之时，世事如过眼云烟&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一切倒塌又得以重建，再造它们的人满心欢喜。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Chandler项目最终基本上半途而废，中译名《梦断代码》真是充满悲情的贴切。&lt;/p&gt;</description><content:encoded><![CDATA[<p>《梦断代码》讲的的OSAF开发PIM软件Chandler的故事，可以当做小说来读的，摘录一些书中有趣的说法以及自己的感想。</p>
<ol>
<li>
<p>&ldquo;Hello World&quot;程序给程序员以乐观的想法：既然能叫它说话，就能让它做任何事。但事实可能是令人沮丧的</p>
</li>
<li>
<p>计算机从0开始计数，用户从1开始计数，所以程序员花了无数精力于此</p>
</li>
<li>
<p>人类文明运行于软件之上，但软件何其不靠谱，写过代码的人应该深有体会</p>
</li>
<li>
<p>人月神话：往已延误的项目中补充人力，只会使其继续延误。因此，最理想的开发团队是单枪匹马。如果代码经过协调不好的一串人手，结果确实难看</p>
</li>
<li>
<p>开源软件给了软件开发模式以新的思考方向，但远未解决软件开发的痼疾</p>
</li>
<li>
<p>开源中的Free应理解为”自由“，而且这个自由也有其固有要求，如GPL的传染性，但国内不少公司似乎只看到了免费，大肆盗用开源代码封装商业软件</p>
</li>
<li>
<p>软件是为人服务的，但通常也会要求人去适应软件的特性（或者其傻叉的地方）</p>
</li>
<li>
<p>让人适应软件还是让软件适应人？这是个问题。软件能否提升人类的智慧</p>
</li>
<li>
<p>很多项目开始之初都雄心勃勃，自以为与众不同，但最后都滑入深渊</p>
</li>
<li>
<p>软件的制造有时会给人以严重的挫败感。悲观一点的人看目前的软件开发技术是没有希望的。个人以为好的软件如好的小说一样是奇迹</p>
</li>
<li>
<p>软件的灵活性只存在于思想中，每一行代码都是毫无灵活性的。所有的想法都要寄生于结构，语言。高级语言相比人类的语言，其实太过低级</p>
</li>
<li>
<p>软件领域没有摩尔定律</p>
</li>
<li>
<p>变量类型这种小事，可以在代码的国度引发宗教战争般的冲突</p>
</li>
<li>
<p>”雾件“，根本不知道自己在写什么东西。如果需求来自领导，会很纠结</p>
</li>
<li>
<p>复用？造轮子还是买轮子，这也是个问题。买的轮子通常满足90%的需求，但剩下的10%会令人抓狂</p>
</li>
<li>
<p>像搭积木一样搭房子，是程序员的乌托邦。软件开发依然在手工作坊时代，甚至难以看到彻底工业化的希望。个人觉得理解为艺术可能心安理得一些…</p>
</li>
<li>
<p>软件会有自己组织信息的方式，也因此割裂事物之间的联系。比如数字化的文件和非数字化的文件分类上没有多大差别</p>
</li>
<li>
<p>快速、便宜、优质，最多三选其二</p>
</li>
<li>
<p>程序开发是常常是不断妥协的过程，人的肆意想法与机器的机械无情之间的妥协</p>
</li>
<li>
<p>程序员如何沟通，是技术问题，管理问题，哲学问题。写代码太多可能会用机器的方式思考…</p>
</li>
<li>
<p>程序员把图形界面看做程序的外壳，而对于用户，图形界面几乎是全部。没人为可怜的用户说话</p>
</li>
<li>
<p>代码优先还是设计优先，这是个问题</p>
</li>
<li>
<p>从普通用户到机器语言的复杂协调过程，用一个俗词形容叫“扯皮”</p>
</li>
<li>
<p>分开来运行正常，集成起来变垃圾。“系统”是可怕的。持续集成很麻烦，但”宇宙大爆炸式集成“可能造成更大的麻烦</p>
</li>
<li>
<p>做一个基本能用的一般产品，还是憋一口气做伟大的产品，这是个问题</p>
</li>
<li>
<p>世界上的事情分两种，规格说明书写明的和规格说明书没有的。可惜这只是代码工人的想法</p>
</li>
<li>
<p>简单者就该简单，复杂者亦有可能。上手容易，精通困难。魔兽争霸，围棋，WordPress</p>
</li>
<li>
<p>城市不是树，信息也不是树。树易于理解，但湮灭可能性</p>
</li>
<li>
<p>软件的成功尽管有其不确定性因素，但基本是可验证的。人生却不是…</p>
</li>
<li>
<p>tag机制相比树状分类引入了多可能性，但难搞</p>
</li>
<li>
<p>对于文字，人能消歧理解（但常常也会误会）。计算机？重名者死</p>
</li>
<li>
<p>”吃你自己的狗食“</p>
</li>
<li>
<p>标准领域是一片令人畏惧的沼泽地。……想当然的标准是笑话，比如ipv9</p>
</li>
<li>
<p>P2P是一种意识形态或一种信仰。……所以中国很难有真正的P2P，只有迅雷</p>
</li>
<li>
<p>十月怀胎，欲速不达</p>
</li>
<li>
<p>富客户端是程序员的噩梦</p>
</li>
<li>
<p>最佳实践的药方不可重开，银弹不会再次装入弹夹，杯具啊杯具</p>
</li>
<li>
<p>不该总是这样。——但总是这样</p>
</li>
<li>
<p>计划总是停留在纸上，想法总是好的，付诸实施者寥寥</p>
</li>
<li>
<p>软件设计模式再完美，也会撞上现实特殊情况的墙</p>
</li>
<li>
<p>最常用的软件开发实践就是什么也不用，埋头写代码。巨无霸方法论让痛恨被约束的才智所厌恶</p>
</li>
<li>
<p>祖尔测试。能得2、3分算不错了?</p>
</li>
<li>
<p>做软件如抓沙。大即险，小即美</p>
</li>
<li>
<p>历史上最成功的软件公司是微软。也是软件被骂最多的软件公司</p>
</li>
<li>
<p>软件不过是水管。但是……“但是”威武</p>
</li>
<li>
<p>“软件工程”是一种愿望，而不是业已实现之事</p>
</li>
<li>
<p>程序员是工程师还是艺术家？写代码更像修房子还是写小说</p>
</li>
<li>
<p>没有物理学就难有真正的工程，而软件毫无物理学可言</p>
</li>
<li>
<p>层级是软件的精髓，但是它们身患痼疾。抽象都有漏洞</p>
</li>
<li>
<p>工具越多，成为编程高手却越难</p>
</li>
<li>
<p>所谓的面向对象设计语言不过是杂种</p>
</li>
<li>
<p>Gordian software？修补还是重装上阵，这是个问题</p>
</li>
<li>
<p>何时停机？何时说放弃</p>
</li>
<li>
<p>闭门造车之时，世事如过眼云烟</p>
</li>
<li>
<p>一切倒塌又得以重建，再造它们的人满心欢喜。</p>
</li>
</ol>
<p>Chandler项目最终基本上半途而废，中译名《梦断代码》真是充满悲情的贴切。</p>
]]></content:encoded><category>reading</category><category domain="tags">读书笔记</category><category domain="tags">软件工程</category></item><item><title>阿基米德的杠杆原理求抛物线形面积</title><link>https://yifeitao.com/archimedes-parabola-area/</link><pubDate>Tue, 23 Mar 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/archimedes-parabola-area/</guid><description>&lt;p&gt;近年来人们发现了&lt;a href="http://book.douban.com/subject/3106607/"
rel="noopener noreferrer" target="_blank" class="external"&gt;《阿基米德羊皮书》&lt;/a&gt;
，其中有阿基米德用杠杆原理求抛物线形的面积的记载，这里面其实已经有微积分思想的雏形了。&lt;/p&gt;
&lt;p&gt;&lt;img src="parabola-area.png" alt="parabola-area.png" loading="lazy" decoding="async" referrerpolicy="no-referrer" width="901" height="462" /&gt;
&lt;/p&gt;
&lt;p&gt;如上图所示，求Rt△ACZ的内接抛物线形ABC的面积。&lt;/p&gt;
&lt;p&gt;证明中用到的条件是对于任一割线MX有 MX:OX=AC:AX。&lt;/p&gt;
&lt;p&gt;该前提的证明需要用到切线方程，不知是否有更加初等的方法。&lt;/p&gt;
&lt;p&gt;延长CK至T，使得KT=CK，平移OX至SH，T为SH中点，则MX:SH=MX:OX=AC:AX=KC:KN=TK:KN,&lt;/p&gt;
&lt;p&gt;线段MX和SH关于点K满足杠杆原理。注意到SH,MX的重心分别为T，N，&lt;/p&gt;
&lt;p&gt;由于MX的任意性，故△ACZ内部每根AZ的平行线与它在抛物线形ABC内部的对应线段（平移至T）关于点K满足杠杆原理，&lt;/p&gt;
&lt;p&gt;即△ACZ的面积与抛物线形ABC的面积关于K满足杠杆原理，&lt;/p&gt;
&lt;p&gt;△ACZ的重心在KC的1/3处，故抛物线形的重心T到△ACZ的重心的距离之比为3:1,&lt;/p&gt;
&lt;p&gt;故抛物线形ABC的面积为△ACZ的面积的1/3,或△ABC面积的4/3。&lt;/p&gt;</description><content:encoded><![CDATA[<p>近年来人们发现了<a href="http://book.douban.com/subject/3106607/"
   rel="noopener noreferrer" target="_blank" class="external">《阿基米德羊皮书》</a>
，其中有阿基米德用杠杆原理求抛物线形的面积的记载，这里面其实已经有微积分思想的雏形了。</p>
<p><img src="parabola-area.png" alt="parabola-area.png" loading="lazy" decoding="async" referrerpolicy="no-referrer" width="901" height="462" />
</p>
<p>如上图所示，求Rt△ACZ的内接抛物线形ABC的面积。</p>
<p>证明中用到的条件是对于任一割线MX有 MX:OX=AC:AX。</p>
<p>该前提的证明需要用到切线方程，不知是否有更加初等的方法。</p>
<p>延长CK至T，使得KT=CK，平移OX至SH，T为SH中点，则MX:SH=MX:OX=AC:AX=KC:KN=TK:KN,</p>
<p>线段MX和SH关于点K满足杠杆原理。注意到SH,MX的重心分别为T，N，</p>
<p>由于MX的任意性，故△ACZ内部每根AZ的平行线与它在抛物线形ABC内部的对应线段（平移至T）关于点K满足杠杆原理，</p>
<p>即△ACZ的面积与抛物线形ABC的面积关于K满足杠杆原理，</p>
<p>△ACZ的重心在KC的1/3处，故抛物线形的重心T到△ACZ的重心的距离之比为3:1,</p>
<p>故抛物线形ABC的面积为△ACZ的面积的1/3,或△ABC面积的4/3。</p>
]]></content:encoded><category>life</category><category domain="tags">数学</category><category domain="tags">历史</category></item><item><title>Josephus问题c++代码</title><link>https://yifeitao.com/josephus-problem/</link><pubDate>Sat, 20 Mar 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/josephus-problem/</guid><description>&lt;p&gt;据说著名犹太历史学家 Josephus有过以下的故事：在罗马人占领乔塔帕特后，39 个犹太人与Josephus及他的朋友躲到一个洞中，39个犹太人决定宁愿死也不要被人抓到，于是决定了一个自杀方式，41个人排成一个圆圈，由第1个人开始报数，每报数到第3人该人就必须自杀，然后再由下一个重新报数，直到所有人都自杀身亡为止。然而 Josephus 和他的朋友并不想遵从，Josephus要 他的朋友先假装遵从，他将朋友与自己安排在第16个与第35个位置，于是逃过了这场死亡游戏。这个游戏产生的一般性问题只能采用递推的方法解决，只有在特殊情况下才有好的显式表示。以下的代码算法用到了&lt;a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.34.4643"
rel="noopener noreferrer" target="_blank" class="external"&gt;该文献&lt;/a&gt;
中的公式。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c++" data-lang="c++"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;/* 文献 1. Lorenz Halbeisen Eth et al., “The Josephus Problem,” J. THOR. NOMBRES BORDEAUX 9 (1997): 303--318. 给出了递推公式的推导并讨论了显示表示，其中间隔k=2时有很好的结果。 J(n,k,i)表示大小为n的环，从标号0开始，每k个杀一个，第i个被杀的人的编号。 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#include&lt;/span&gt; &lt;span style="color:#75715e"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span style="color:#75715e"&gt; using namespace std;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;JosephusSimulate&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; size, &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; step)&lt;span style="color:#75715e"&gt;//过程模拟
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;ring&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;[size];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; i &lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; i&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;size; i&lt;span style="color:#f92672"&gt;++&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ring[i]&lt;span style="color:#f92672"&gt;=&lt;/span&gt;true;&lt;span style="color:#75715e"&gt;//构造大小为size的动态数组
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; indicator &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; &lt;span style="color:#75715e"&gt;//数数的杀手指到的编号0~size-1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; counter &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;; &lt;span style="color:#75715e"&gt;//循环计数器
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; surviver&lt;span style="color:#f92672"&gt;=&lt;/span&gt;size; &lt;span style="color:#75715e"&gt;//幸存者数目
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt;(surviver&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;) &lt;span style="color:#75715e"&gt;//杀光光？
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; indicator &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (indicator&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)&lt;span style="color:#f92672"&gt;%&lt;/span&gt;size;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;(ring[indicator]&lt;span style="color:#f92672"&gt;==&lt;/span&gt; true) &lt;span style="color:#75715e"&gt;//活人算算杀不杀
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; counter &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (counter&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)&lt;span style="color:#f92672"&gt;%&lt;/span&gt;step; &lt;span style="color:#75715e"&gt;//循环计数1~step(=0)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt;(counter&lt;span style="color:#f92672"&gt;==&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ring[indicator] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; false;&lt;span style="color:#75715e"&gt;//杀人啦
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; cout &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt;indicator&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;,&amp;#34;&lt;/span&gt;;&lt;span style="color:#75715e"&gt;//数组的编号是从0开始的,转换为1开始
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; surviver&lt;span style="color:#f92672"&gt;--&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;delete&lt;/span&gt;[] ring;&lt;span style="color:#75715e"&gt;//销毁数组
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; ring &lt;span style="color:#f92672"&gt;=&lt;/span&gt; NULL;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; true;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;JosephusRecursion&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; size, &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; step, &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; order)&lt;span style="color:#75715e"&gt;//递推算法，
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;//公式 J(n,k,1)=(k-1)mod n
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#75715e"&gt;// J(n+1,k,i+1)=(k+J(n,k,i))mod(n+1),
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; indicator&lt;span style="color:#f92672"&gt;=&lt;/span&gt;(step&lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)&lt;span style="color:#f92672"&gt;%&lt;/span&gt;(size&lt;span style="color:#f92672"&gt;-&lt;/span&gt;order&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; i&lt;span style="color:#f92672"&gt;=&lt;/span&gt;size&lt;span style="color:#f92672"&gt;-&lt;/span&gt;order&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;; i&lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt;size; i&lt;span style="color:#f92672"&gt;++&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; indicator &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (indicator&lt;span style="color:#f92672"&gt;+&lt;/span&gt;step)&lt;span style="color:#f92672"&gt;%&lt;/span&gt;i;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; indicator&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;&lt;span style="color:#75715e"&gt;//数组的编号是从0开始的,转换为1开始
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Josephus2&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; size,&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; order)&lt;span style="color:#75715e"&gt;//step=2时的快速算法
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;//公式来自参考文献1 c=2(n-i)+1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#75715e"&gt;//J(n,i)=2*(n-c*2^(log2(n/c))) 对数取下整
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#75715e"&gt;//2^(log2(n/c))作为整体计算，找小于且接近n/c的2的次幂
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; c &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt;(size&lt;span style="color:#f92672"&gt;-&lt;/span&gt;order)&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; nc &lt;span style="color:#f92672"&gt;=&lt;/span&gt; size&lt;span style="color:#f92672"&gt;/&lt;/span&gt;c; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; i&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;while&lt;/span&gt;(nc&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; nc &lt;span style="color:#f92672"&gt;=&lt;/span&gt; nc&lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; i&lt;span style="color:#f92672"&gt;++&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; indicator &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;&lt;span style="color:#f92672"&gt;*&lt;/span&gt;size) &lt;span style="color:#f92672"&gt;-&lt;/span&gt; (c&lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt;i);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; indicator&lt;span style="color:#f92672"&gt;+&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;main&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; size,step,order;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cout &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;size?&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cin &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; size;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cout &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;step?&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cin &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; step;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cout &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;order?&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cin &lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt; order; &lt;span style="color:#75715e"&gt;//JosephusSimulate(size,step);
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;int&lt;/span&gt; i&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;; i&lt;span style="color:#f92672"&gt;&amp;lt;=&lt;/span&gt;size; i&lt;span style="color:#f92672"&gt;++&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cout &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt; JosephusRecursion(size,step,i) &lt;span style="color:#f92672"&gt;&amp;lt;&amp;lt;&lt;/span&gt; endl;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;//cout &amp;lt;&amp;lt; Josephus2(size,order) &amp;lt;&amp;lt; endl; return 0; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><content:encoded><![CDATA[<p>据说著名犹太历史学家 Josephus有过以下的故事：在罗马人占领乔塔帕特后，39 个犹太人与Josephus及他的朋友躲到一个洞中，39个犹太人决定宁愿死也不要被人抓到，于是决定了一个自杀方式，41个人排成一个圆圈，由第1个人开始报数，每报数到第3人该人就必须自杀，然后再由下一个重新报数，直到所有人都自杀身亡为止。然而 Josephus 和他的朋友并不想遵从，Josephus要 他的朋友先假装遵从，他将朋友与自己安排在第16个与第35个位置，于是逃过了这场死亡游戏。这个游戏产生的一般性问题只能采用递推的方法解决，只有在特殊情况下才有好的显式表示。以下的代码算法用到了<a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.34.4643"
   rel="noopener noreferrer" target="_blank" class="external">该文献</a>
中的公式。</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c++" data-lang="c++"><span style="display:flex;"><span><span style="color:#75715e">/* 文献 1. Lorenz Halbeisen Eth et al., “The Josephus Problem,” J. THOR. NOMBRES BORDEAUX 9 (1997): 303--318. 给出了递推公式的推导并讨论了显示表示，其中间隔k=2时有很好的结果。 J(n,k,i)表示大小为n的环，从标号0开始，每k个杀一个，第i个被杀的人的编号。 */</span> 
</span></span><span style="display:flex;"><span><span style="color:#75715e">#include</span> <span style="color:#75715e">&lt;iostream&gt;</span><span style="color:#75715e"> using namespace std; 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">bool</span> <span style="color:#a6e22e">JosephusSimulate</span>(<span style="color:#66d9ef">int</span> size, <span style="color:#66d9ef">int</span> step)<span style="color:#75715e">//过程模拟 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>{ 
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">bool</span> <span style="color:#f92672">*</span>ring<span style="color:#f92672">=</span><span style="color:#66d9ef">new</span> <span style="color:#66d9ef">bool</span>[size]; 
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i <span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>; i<span style="color:#f92672">&lt;</span>size; i<span style="color:#f92672">++</span>) 
</span></span><span style="display:flex;"><span>    ring[i]<span style="color:#f92672">=</span>true;<span style="color:#75715e">//构造大小为size的动态数组 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#66d9ef">int</span> indicator <span style="color:#f92672">=</span> <span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>; <span style="color:#75715e">//数数的杀手指到的编号0~size-1 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#66d9ef">int</span> counter <span style="color:#f92672">=</span> <span style="color:#ae81ff">0</span>; <span style="color:#75715e">//循环计数器 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#66d9ef">int</span> surviver<span style="color:#f92672">=</span>size; <span style="color:#75715e">//幸存者数目 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#66d9ef">while</span>(surviver<span style="color:#f92672">&gt;</span><span style="color:#ae81ff">0</span>) <span style="color:#75715e">//杀光光？ 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  { 
</span></span><span style="display:flex;"><span>    indicator <span style="color:#f92672">=</span> (indicator<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>)<span style="color:#f92672">%</span>size; 
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span>(ring[indicator]<span style="color:#f92672">==</span> true) <span style="color:#75715e">//活人算算杀不杀 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    { 
</span></span><span style="display:flex;"><span>      counter <span style="color:#f92672">=</span> (counter<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>)<span style="color:#f92672">%</span>step; <span style="color:#75715e">//循环计数1~step(=0) 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>      <span style="color:#66d9ef">if</span>(counter<span style="color:#f92672">==</span><span style="color:#ae81ff">0</span>) 
</span></span><span style="display:flex;"><span>      { 
</span></span><span style="display:flex;"><span>        ring[indicator] <span style="color:#f92672">=</span> false;<span style="color:#75715e">//杀人啦 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        cout <span style="color:#f92672">&lt;&lt;</span>indicator<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span> <span style="color:#f92672">&lt;&lt;</span><span style="color:#e6db74">&#34;,&#34;</span>;<span style="color:#75715e">//数组的编号是从0开始的,转换为1开始 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        surviver<span style="color:#f92672">--</span>; 
</span></span><span style="display:flex;"><span>      } 
</span></span><span style="display:flex;"><span>    } 
</span></span><span style="display:flex;"><span>  } 
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">delete</span>[] ring;<span style="color:#75715e">//销毁数组 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  ring <span style="color:#f92672">=</span> NULL; 
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">return</span> true; 
</span></span><span style="display:flex;"><span>} 
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">JosephusRecursion</span>(<span style="color:#66d9ef">int</span> size, <span style="color:#66d9ef">int</span> step, <span style="color:#66d9ef">int</span> order)<span style="color:#75715e">//递推算法， 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>{ 
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">//公式 J(n,k,1)=(k-1)mod n 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#75715e">// J(n+1,k,i+1)=(k+J(n,k,i))mod(n+1), 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#66d9ef">int</span> indicator<span style="color:#f92672">=</span>(step<span style="color:#f92672">-</span><span style="color:#ae81ff">1</span>)<span style="color:#f92672">%</span>(size<span style="color:#f92672">-</span>order<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>); 
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i<span style="color:#f92672">=</span>size<span style="color:#f92672">-</span>order<span style="color:#f92672">+</span><span style="color:#ae81ff">2</span>; i<span style="color:#f92672">&lt;=</span>size; i<span style="color:#f92672">++</span>) 
</span></span><span style="display:flex;"><span>  { 
</span></span><span style="display:flex;"><span>    indicator <span style="color:#f92672">=</span> (indicator<span style="color:#f92672">+</span>step)<span style="color:#f92672">%</span>i; 
</span></span><span style="display:flex;"><span>  } 
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">return</span> indicator<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>;<span style="color:#75715e">//数组的编号是从0开始的,转换为1开始 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>} 
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">Josephus2</span>(<span style="color:#66d9ef">int</span> size,<span style="color:#66d9ef">int</span> order)<span style="color:#75715e">//step=2时的快速算法 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>{ 
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">//公式来自参考文献1 c=2(n-i)+1 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#75715e">//J(n,i)=2*(n-c*2^(log2(n/c))) 对数取下整 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#75715e">//2^(log2(n/c))作为整体计算，找小于且接近n/c的2的次幂 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#66d9ef">int</span> c <span style="color:#f92672">=</span> <span style="color:#ae81ff">2</span><span style="color:#f92672">*</span>(size<span style="color:#f92672">-</span>order)<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>; 
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">int</span> nc <span style="color:#f92672">=</span> size<span style="color:#f92672">/</span>c; <span style="color:#66d9ef">int</span> i<span style="color:#f92672">=</span><span style="color:#ae81ff">0</span>; 
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">while</span>(nc<span style="color:#f92672">&gt;</span><span style="color:#ae81ff">0</span>) 
</span></span><span style="display:flex;"><span>  { 
</span></span><span style="display:flex;"><span>    nc <span style="color:#f92672">=</span> nc<span style="color:#f92672">&gt;&gt;</span><span style="color:#ae81ff">1</span>; i<span style="color:#f92672">++</span>; 
</span></span><span style="display:flex;"><span>  } 
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">int</span> indicator <span style="color:#f92672">=</span> (<span style="color:#ae81ff">2</span><span style="color:#f92672">*</span>size) <span style="color:#f92672">-</span> (c<span style="color:#f92672">&lt;&lt;</span>i); 
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">return</span> indicator<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>; 
</span></span><span style="display:flex;"><span>} 
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">int</span> <span style="color:#a6e22e">main</span>() 
</span></span><span style="display:flex;"><span>{ 
</span></span><span style="display:flex;"><span>  <span style="color:#66d9ef">int</span> size,step,order; 
</span></span><span style="display:flex;"><span>  cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;size?&#34;</span>; 
</span></span><span style="display:flex;"><span>  cin <span style="color:#f92672">&gt;&gt;</span> size; 
</span></span><span style="display:flex;"><span>  cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;step?&#34;</span>; 
</span></span><span style="display:flex;"><span>  cin <span style="color:#f92672">&gt;&gt;</span> step; 
</span></span><span style="display:flex;"><span>  cout <span style="color:#f92672">&lt;&lt;</span> <span style="color:#e6db74">&#34;order?&#34;</span>; 
</span></span><span style="display:flex;"><span>  cin <span style="color:#f92672">&gt;&gt;</span> order; <span style="color:#75715e">//JosephusSimulate(size,step); 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>  <span style="color:#66d9ef">for</span>(<span style="color:#66d9ef">int</span> i<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>; i<span style="color:#f92672">&lt;=</span>size; i<span style="color:#f92672">++</span>) 
</span></span><span style="display:flex;"><span>  { 
</span></span><span style="display:flex;"><span>    cout <span style="color:#f92672">&lt;&lt;</span> JosephusRecursion(size,step,i) <span style="color:#f92672">&lt;&lt;</span> endl; 
</span></span><span style="display:flex;"><span>  } 
</span></span><span style="display:flex;"><span>  <span style="color:#75715e">//cout &lt;&lt; Josephus2(size,order) &lt;&lt; endl; return 0; }
</span></span></span></code></pre></div>
]]></content:encoded><category>coding</category><category domain="tags">算法</category><category domain="tags">编程</category></item><item><title>推选第三辑</title><link>https://yifeitao.com/twitter-collection-3/</link><pubDate>Fri, 22 Jan 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/twitter-collection-3/</guid><description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;陆游——《卜算子·咏梅》：由于后来毛泽东的光环，很多人忽略了陆词的可贵，笑看山花烂漫固然不易，碾作尘香如故却也难得。香气乃骨气也&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一部电影的及格标准：讲了一个故事；一部电影的良好标准：讲了一个好故事或者讲好了一个故事；一部电影的优秀标准：讲好了一个好故事；一部电影的经典标准：不仅仅讲好了一个好故事&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一部电影，总免不了在娱乐性之余，打上 价值观的烙印，美国的好莱坞文化渗透是潜移默化的。美国人在电影中总是代表着世界遭遇困境，脱离困境则靠的是美国强大的科技与体制以及美国式英雄（“拯 救”世界是他们的口头禅）。观念通过危机感代入，隐藏于宏大的场面与虚幻的真实背后&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;价值观取向过于明显，立意于洗脑的电影总是让人抓狂。中国的主旋律电影，主题隐藏得太浅，过于污蔑群众智商，适得其反。自以为擅长搞思想工作的中国人，其实是要向老美学习的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;总有人试图找出一代不如一代的证据，XX后的标签似乎就是因此而生的，每一代人都有其龌龊，90后的毛病不过是被网络放大而已，看到某些80后致力于鄙视90后，还真是百感交集。mor&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;号称反映80后的影视剧大多是80前的臆想，水准堪比二流韩剧。比如《奋斗》、《五星大饭店》之类&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;很多时候，即使你不情愿，也会被人代表，但当你想说话时却可能寻不到一个话筒&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;多金的故事与自以为是的内涵是所有二流偶像剧的共同特征&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;国产的战争片历来不乏闪光之作，但却一直缺乏人的味道，所以《集结号》里的人话成了经典台词&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可以消解在小道理中的大道理才可能是可信的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要么胸无大志，要么眼高手低，谨以自责&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们可以把当前的信息化办公称为打印化办公。信息化的阻碍不是来自技术上的，而是来自体制上的。信息化会使得计算机抢夺很多人的饭碗&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;成功学书籍泛滥和方便面泛滥是一个道理&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;关于老外的电影有事儿没事儿提到你：人家也许只是喜欢调戏，请勿自作多情&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;——“在研究驴子的专家里，我是最懂马的；在研究马的专家里，我是最懂驴子的。“——“请问您对骡子有研究吗？”——“对不起，我不做交叉学科的。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;p2p的罪恶在于它的精神——“free（自由免费）”，自由得罪监管方，免费得罪资本方，官商联合绞杀之下，还活在当下，已经是奇迹&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;据说听曾轶可的歌就要被鄙视，真是一个听歌都要标准答案的国度&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最近爱说自己忙，然后不小心看见一句话：无能的人喜欢用装忙来掩饰自己的无能。心中顿时升腾起两个字：法克&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;像IP协议一样尽力而为，尽管它是不可靠的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“我是菜鸟！”很多年过去了，你还这样说。好吧，你是真菜&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;几乎每个被我买到的笔记本都会有一个悲惨的结局，通常前几页会有比较整齐的东西，然后是大范围的鬼画桃符，还有随时骨肉分离的危险&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;毒品的相对论：少数人乐在其中，多数人恨之入骨，其他人打酱油——毒品；多数人乐在其中，少数人恨之入骨，其他人打酱油——习俗；少数人乐在其中，少数人恨之入骨，其他人打酱油——怪癖。比例是变化的，所以网瘾总有一天不是瘾。当然，有时候多数人的“多数”来自某些人的以一当二百五&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在睡梦中来到一个天蓝草绿、阳光明媚、美女唱歌的地方，很惬意的睡着了，然后就醒了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;承认自己有偏见的人比装客观的人可爱多了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;制造一个不存在的韩国教授是某些人的可疑爱好。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<ol>
<li>
<p>陆游——《卜算子·咏梅》：由于后来毛泽东的光环，很多人忽略了陆词的可贵，笑看山花烂漫固然不易，碾作尘香如故却也难得。香气乃骨气也</p>
</li>
<li>
<p>一部电影的及格标准：讲了一个故事；一部电影的良好标准：讲了一个好故事或者讲好了一个故事；一部电影的优秀标准：讲好了一个好故事；一部电影的经典标准：不仅仅讲好了一个好故事</p>
</li>
<li>
<p>一部电影，总免不了在娱乐性之余，打上 价值观的烙印，美国的好莱坞文化渗透是潜移默化的。美国人在电影中总是代表着世界遭遇困境，脱离困境则靠的是美国强大的科技与体制以及美国式英雄（“拯 救”世界是他们的口头禅）。观念通过危机感代入，隐藏于宏大的场面与虚幻的真实背后</p>
</li>
<li>
<p>价值观取向过于明显，立意于洗脑的电影总是让人抓狂。中国的主旋律电影，主题隐藏得太浅，过于污蔑群众智商，适得其反。自以为擅长搞思想工作的中国人，其实是要向老美学习的</p>
</li>
<li>
<p>总有人试图找出一代不如一代的证据，XX后的标签似乎就是因此而生的，每一代人都有其龌龊，90后的毛病不过是被网络放大而已，看到某些80后致力于鄙视90后，还真是百感交集。mor</p>
</li>
<li>
<p>号称反映80后的影视剧大多是80前的臆想，水准堪比二流韩剧。比如《奋斗》、《五星大饭店》之类</p>
</li>
<li>
<p>很多时候，即使你不情愿，也会被人代表，但当你想说话时却可能寻不到一个话筒</p>
</li>
<li>
<p>多金的故事与自以为是的内涵是所有二流偶像剧的共同特征</p>
</li>
<li>
<p>国产的战争片历来不乏闪光之作，但却一直缺乏人的味道，所以《集结号》里的人话成了经典台词</p>
</li>
<li>
<p>可以消解在小道理中的大道理才可能是可信的</p>
</li>
<li>
<p>要么胸无大志，要么眼高手低，谨以自责</p>
</li>
<li>
<p>我们可以把当前的信息化办公称为打印化办公。信息化的阻碍不是来自技术上的，而是来自体制上的。信息化会使得计算机抢夺很多人的饭碗</p>
</li>
<li>
<p>成功学书籍泛滥和方便面泛滥是一个道理</p>
</li>
<li>
<p>关于老外的电影有事儿没事儿提到你：人家也许只是喜欢调戏，请勿自作多情</p>
</li>
<li>
<p>——“在研究驴子的专家里，我是最懂马的；在研究马的专家里，我是最懂驴子的。“——“请问您对骡子有研究吗？”——“对不起，我不做交叉学科的。</p>
</li>
<li>
<p>p2p的罪恶在于它的精神——“free（自由免费）”，自由得罪监管方，免费得罪资本方，官商联合绞杀之下，还活在当下，已经是奇迹</p>
</li>
<li>
<p>据说听曾轶可的歌就要被鄙视，真是一个听歌都要标准答案的国度</p>
</li>
<li>
<p>最近爱说自己忙，然后不小心看见一句话：无能的人喜欢用装忙来掩饰自己的无能。心中顿时升腾起两个字：法克</p>
</li>
<li>
<p>像IP协议一样尽力而为，尽管它是不可靠的</p>
</li>
<li>
<p>“我是菜鸟！”很多年过去了，你还这样说。好吧，你是真菜</p>
</li>
<li>
<p>几乎每个被我买到的笔记本都会有一个悲惨的结局，通常前几页会有比较整齐的东西，然后是大范围的鬼画桃符，还有随时骨肉分离的危险</p>
</li>
<li>
<p>毒品的相对论：少数人乐在其中，多数人恨之入骨，其他人打酱油——毒品；多数人乐在其中，少数人恨之入骨，其他人打酱油——习俗；少数人乐在其中，少数人恨之入骨，其他人打酱油——怪癖。比例是变化的，所以网瘾总有一天不是瘾。当然，有时候多数人的“多数”来自某些人的以一当二百五</p>
</li>
<li>
<p>在睡梦中来到一个天蓝草绿、阳光明媚、美女唱歌的地方，很惬意的睡着了，然后就醒了</p>
</li>
<li>
<p>承认自己有偏见的人比装客观的人可爱多了</p>
</li>
<li>
<p>制造一个不存在的韩国教授是某些人的可疑爱好。</p>
</li>
</ol>
]]></content:encoded><category>life</category><category domain="tags">推特</category><category domain="tags">碎片</category></item><item><title>Google，请你走开吧！</title><link>https://yifeitao.com/google-leave-china/</link><pubDate>Thu, 14 Jan 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/google-leave-china/</guid><description>&lt;p&gt;处在这个考试之间的巨大间隙，我在昨天关注了大半天的Google退出中国事件，但作为一个Google服务的重度使用者，我并没有什么强烈的失落感，因 为见过太多的事情后，你会见怪不怪，你的情感只会剩下黑色幽默。但作为一个见证历史的与IT沾边的人，我想留下一点自己的现时的想法。more more&lt;/p&gt;
&lt;h3 id="google是否在撒娇"&gt;Google是否在撒娇&lt;/h3&gt;
&lt;p&gt;人民网署名“网友姜伯静”的评论说：退出？谷歌在撒娇吧！&lt;/p&gt;
&lt;p&gt;这条评论被一部分人鄙夷，但我却相信这代表了相当一部分人的观点。&lt;/p&gt;
&lt;p&gt;这种误判源于部分国人草履虫的思考路线。Google是一个成熟的商业公司，它拥有这个领域最优秀的人才，它的首席法律官在官方博客上作“自杀预 告”，你认为这是撒娇？尽管国人之中只有很少一部分人是暴发户，但大家的暴发户心态却天天爆棚：妞，给爷笑一个，爷有钱你赚不赚，不赚你是傻X啊。&lt;/p&gt;
&lt;p&gt;我们一直被告知资本主义的唯利是图的贪婪本性，怎么可能去相信一个商业公司会有异于“有奶便是娘”的原则呢？&lt;/p&gt;
&lt;h3 id="google的阳谋"&gt;Google的“阳谋”&lt;/h3&gt;
&lt;p&gt;我与阴谋论者们的观点基本相同：Google的这次决定是有预谋的，是配合美国政府相关政策的。但我更愿意叫这“阳谋”，因为叫阴谋不是侮辱中国人自己的智商吗？&lt;/p&gt;
&lt;p&gt;Google 摆明了想要退出的原因：不堪忍受审查（审不到的还试图黑客审查）。我不知道Google指责的Gmail受到攻击是否属实，但Google的各项服务从未 在中国大陆完整的存在一天却是事实：Google旗下的服务Picasa，Blogger和Youtube等在国内一直被封锁，尽管在技术上它们都比国内 的类似服务高出一大截。搜索服务则是推出了阉割版g.cn，但仍然被cctv打压不止，仿佛成了最大的黄网。&lt;/p&gt;
&lt;p&gt;Google 摆明了自己的要求：不接受审查。Google的企业信条是“不做恶”，尽管在资本面前这也是可以违背的，但看Google这些年的表现，至少是在积极的贯 彻这个信条的。Google致力于提供信息流通的各种基础服务，但在中国，Google的各种管道却常常被围追堵截，其实阉割版的g.cn早已经与 Google的企业理念大相冲突，这种妥协在一轮轮的打击下终于还是失败了。&lt;/p&gt;
&lt;p&gt;Google的消息放出不久，美国政府就介入了此事，声称事先Google与政府通气了，希拉里敦促中国回应Google，并称将会在下周发布一项新技术政策，以帮助全世界的人民访问自由的没有审查的互联网。&lt;/p&gt;
&lt;p&gt;为什么这次Google公司当了马前卒，因为它的的企业理念与美国政府的政治意图暗合，事实上Google公司也是奥巴马政府的支持者，还因为它可以忍受由此而来的经济损失，Google的股价在此消息之后也只是微跌证明了这一点。&lt;/p&gt;
&lt;p&gt;在唾手可得的名声和形如鸡肋的中国市场之间，Google选择了前者，这只能称之为阳谋了。&lt;/p&gt;
&lt;h3 id="没有了google我们有百度"&gt;没有了Google，我们有百度？&lt;/h3&gt;
&lt;p&gt;没有搜索引擎的互联网世界是不可想象的，但人们说：没有了Google，我们有百度。百度甚至还是民族企业呢。如果事情真是如此简单就好了。&lt;/p&gt;
&lt;p&gt;尽管谷歌中国不是很挣钱，但目前依然有近1/3的市场占有率。尽管人们不停的将Google与百度做比较，但事实上两家的产品线有很大的差别。&lt;/p&gt;
&lt;p&gt;百度也是作技术起家的企业，但现在却在大作内容，将百度贴吧等产品不断娱乐化，百度空间俨然第二个QQ空间，我无法说这样做有什么不对。但是，一个 本应技术为本的企业最终只能不断娱乐化，这是很悲哀的事情，纵观这些年，中国企业的原创可能只有一个搜狗输入法。将一流的产品封锁，自己作三流的模仿品， 这样的做法可以一时，但却不是一个大国最终应有的选择。&lt;/p&gt;
&lt;p&gt;Google的优秀服务不胜枚举，你可以说我不用那些高级的服务，但我们对互联网的使用水平不能永远停留在hao123，QQ空间和ie6的架构之上。否则你把家门关了三天，再打开门看，世界已经翻天覆地的变了。&lt;/p&gt;
&lt;p&gt;如果中国互联网有半家拥有创新能力的，提供优秀服务的大公司，基于我残存的民族主义意识，我或许也会对Google说：你滚吧！但是我硬气不起来，至少我要用Google翻译和Google学术搜索，我看不到替代。百度我很喜欢，我爱它像爱湖南卫视，它只能当娱乐工具。&lt;/p&gt;
&lt;h3 id="困境"&gt;困境&lt;/h3&gt;
&lt;p&gt;Google已经暴走近两天了，热榜上的关键词触目惊心，按照封锁的一贯速度，这么严重的行为早就应该导致g.cn服务器被没收，google.com被屏蔽了，但为什么大家依然可以疯狂。因为有人陷入了困境。&lt;/p&gt;
&lt;p&gt;最好的结果是Google怂了，继续严格审查然后闷声赚钱，这样Google的光辉形象轰然倒塌，大家的使用也基本不受影响，Google的“阳谋”被彻底挫败。不过这是多么的一厢情愿啊。&lt;/p&gt;
&lt;p&gt;困境在于不封锁造成的影响实在不好，就像天天裸奔一样，尽管链接点开都是已被删除（国内）或连接被重置（国外），但光是标题的不良科普已经是贻害无穷。而封锁则无形之中印证了Google的死亡预告，Google成功转嫁无数忠实用户的怒气。&lt;/p&gt;
&lt;p&gt;Google此刻像个无赖，死都不怕了，还怕封吗？&lt;/p&gt;
&lt;p&gt;我仿佛看见了《黄金三镖客》中的三角形手枪对决。&lt;/p&gt;
&lt;h3 id="google请你走开吧"&gt;Google，请你走开吧！&lt;/h3&gt;
&lt;p&gt;如果说考虑到自己的使用需求，我想挽留Google留下来。但我此刻恳求Google不要出尔反尔，请你走开吧！让我相信一次，妓女也是有职业操守的！然后我会时常去墙外看你的。我爱这个大院，愿与之一起风化。&lt;/p&gt;
&lt;h3 id="20100323后记"&gt;20100323后记&lt;/h3&gt;
&lt;p&gt;今天在实验室上Google，发现自动跳转到google hk了，我才后知后觉。终于走了。一个感慨的终于。这个世界还有不见钱眼开的事情存在，这样简单的事实却是一个商业公司教我们的，那些自以为读懂世界的以为别人在“撒娇”的人情何以堪。忍一时不一定风平浪静，退一步或许会海阔天空。一个抛弃所有优秀服务但创意难以生长的互联网，一个连上了海底光缆又终于藕断丝连的互联网。我们会一起自力更生，闭门造车。然后，Google，希望你不要倒闭。在你能回来之前。让我相信一次，自己不是缺乏判断力而不配使用搜索服务的人。
【2010年1月14日初稿/2010年3月23日更新】&lt;/p&gt;</description><content:encoded><![CDATA[<p>处在这个考试之间的巨大间隙，我在昨天关注了大半天的Google退出中国事件，但作为一个Google服务的重度使用者，我并没有什么强烈的失落感，因 为见过太多的事情后，你会见怪不怪，你的情感只会剩下黑色幽默。但作为一个见证历史的与IT沾边的人，我想留下一点自己的现时的想法。more  more</p>
<h3 id="google是否在撒娇">Google是否在撒娇</h3>
<p>人民网署名“网友姜伯静”的评论说：退出？谷歌在撒娇吧！</p>
<p>这条评论被一部分人鄙夷，但我却相信这代表了相当一部分人的观点。</p>
<p>这种误判源于部分国人草履虫的思考路线。Google是一个成熟的商业公司，它拥有这个领域最优秀的人才，它的首席法律官在官方博客上作“自杀预 告”，你认为这是撒娇？尽管国人之中只有很少一部分人是暴发户，但大家的暴发户心态却天天爆棚：妞，给爷笑一个，爷有钱你赚不赚，不赚你是傻X啊。</p>
<p>我们一直被告知资本主义的唯利是图的贪婪本性，怎么可能去相信一个商业公司会有异于“有奶便是娘”的原则呢？</p>
<h3 id="google的阳谋">Google的“阳谋”</h3>
<p>我与阴谋论者们的观点基本相同：Google的这次决定是有预谋的，是配合美国政府相关政策的。但我更愿意叫这“阳谋”，因为叫阴谋不是侮辱中国人自己的智商吗？</p>
<p>Google 摆明了想要退出的原因：不堪忍受审查（审不到的还试图黑客审查）。我不知道Google指责的Gmail受到攻击是否属实，但Google的各项服务从未 在中国大陆完整的存在一天却是事实：Google旗下的服务Picasa，Blogger和Youtube等在国内一直被封锁，尽管在技术上它们都比国内 的类似服务高出一大截。搜索服务则是推出了阉割版g.cn，但仍然被cctv打压不止，仿佛成了最大的黄网。</p>
<p>Google 摆明了自己的要求：不接受审查。Google的企业信条是“不做恶”，尽管在资本面前这也是可以违背的，但看Google这些年的表现，至少是在积极的贯 彻这个信条的。Google致力于提供信息流通的各种基础服务，但在中国，Google的各种管道却常常被围追堵截，其实阉割版的g.cn早已经与 Google的企业理念大相冲突，这种妥协在一轮轮的打击下终于还是失败了。</p>
<p>Google的消息放出不久，美国政府就介入了此事，声称事先Google与政府通气了，希拉里敦促中国回应Google，并称将会在下周发布一项新技术政策，以帮助全世界的人民访问自由的没有审查的互联网。</p>
<p>为什么这次Google公司当了马前卒，因为它的的企业理念与美国政府的政治意图暗合，事实上Google公司也是奥巴马政府的支持者，还因为它可以忍受由此而来的经济损失，Google的股价在此消息之后也只是微跌证明了这一点。</p>
<p>在唾手可得的名声和形如鸡肋的中国市场之间，Google选择了前者，这只能称之为阳谋了。</p>
<h3 id="没有了google我们有百度">没有了Google，我们有百度？</h3>
<p>没有搜索引擎的互联网世界是不可想象的，但人们说：没有了Google，我们有百度。百度甚至还是民族企业呢。如果事情真是如此简单就好了。</p>
<p>尽管谷歌中国不是很挣钱，但目前依然有近1/3的市场占有率。尽管人们不停的将Google与百度做比较，但事实上两家的产品线有很大的差别。</p>
<p>百度也是作技术起家的企业，但现在却在大作内容，将百度贴吧等产品不断娱乐化，百度空间俨然第二个QQ空间，我无法说这样做有什么不对。但是，一个 本应技术为本的企业最终只能不断娱乐化，这是很悲哀的事情，纵观这些年，中国企业的原创可能只有一个搜狗输入法。将一流的产品封锁，自己作三流的模仿品， 这样的做法可以一时，但却不是一个大国最终应有的选择。</p>
<p>Google的优秀服务不胜枚举，你可以说我不用那些高级的服务，但我们对互联网的使用水平不能永远停留在hao123，QQ空间和ie6的架构之上。否则你把家门关了三天，再打开门看，世界已经翻天覆地的变了。</p>
<p>如果中国互联网有半家拥有创新能力的，提供优秀服务的大公司，基于我残存的民族主义意识，我或许也会对Google说：你滚吧！但是我硬气不起来，至少我要用Google翻译和Google学术搜索，我看不到替代。百度我很喜欢，我爱它像爱湖南卫视，它只能当娱乐工具。</p>
<h3 id="困境">困境</h3>
<p>Google已经暴走近两天了，热榜上的关键词触目惊心，按照封锁的一贯速度，这么严重的行为早就应该导致g.cn服务器被没收，google.com被屏蔽了，但为什么大家依然可以疯狂。因为有人陷入了困境。</p>
<p>最好的结果是Google怂了，继续严格审查然后闷声赚钱，这样Google的光辉形象轰然倒塌，大家的使用也基本不受影响，Google的“阳谋”被彻底挫败。不过这是多么的一厢情愿啊。</p>
<p>困境在于不封锁造成的影响实在不好，就像天天裸奔一样，尽管链接点开都是已被删除（国内）或连接被重置（国外），但光是标题的不良科普已经是贻害无穷。而封锁则无形之中印证了Google的死亡预告，Google成功转嫁无数忠实用户的怒气。</p>
<p>Google此刻像个无赖，死都不怕了，还怕封吗？</p>
<p>我仿佛看见了《黄金三镖客》中的三角形手枪对决。</p>
<h3 id="google请你走开吧">Google，请你走开吧！</h3>
<p>如果说考虑到自己的使用需求，我想挽留Google留下来。但我此刻恳求Google不要出尔反尔，请你走开吧！让我相信一次，妓女也是有职业操守的！然后我会时常去墙外看你的。我爱这个大院，愿与之一起风化。</p>
<h3 id="20100323后记">20100323后记</h3>
<p>今天在实验室上Google，发现自动跳转到google hk了，我才后知后觉。终于走了。一个感慨的终于。这个世界还有不见钱眼开的事情存在，这样简单的事实却是一个商业公司教我们的，那些自以为读懂世界的以为别人在“撒娇”的人情何以堪。忍一时不一定风平浪静，退一步或许会海阔天空。一个抛弃所有优秀服务但创意难以生长的互联网，一个连上了海底光缆又终于藕断丝连的互联网。我们会一起自力更生，闭门造车。然后，Google，希望你不要倒闭。在你能回来之前。让我相信一次，自己不是缺乏判断力而不配使用搜索服务的人。
【2010年1月14日初稿/2010年3月23日更新】</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">互联网</category><category domain="tags">Google</category><category domain="tags">社会</category></item><item><title>浅谈群体智慧</title><link>https://yifeitao.com/collective-intelligence/</link><pubDate>Wed, 06 Jan 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/collective-intelligence/</guid><description>&lt;h2 id="一-一个例子蚂蚁与蚁群算法"&gt;一、 一个例子：蚂蚁与蚁群算法&lt;/h2&gt;
&lt;p&gt;说两个似乎八杆子打不到一块的事情。&lt;/p&gt;
&lt;p&gt;有一句有趣的签名档：别人在大树底下观察蚂蚁的时候，我观察他们并思考人生。 这是调侃式的自我表扬，但透露的事实是几乎每个人小时候都观察过蚂蚁，惊叹于这种小小昆虫的井然有序。它们如何知道哪里食物多，它们如何决定要搬家，难道 它们的智商很高？事实是，如果抓单只蚂蚁来研究发现是比较笨的，但作为群体的蚁群却显示出让我们难以置信的智能。&lt;/p&gt;
&lt;p&gt;经典的算法问题中有一个极具现实意义的问题叫做货郎担问题：某售货员要到若干个村庄售货，各村庄之间的路程是已知的，为了提高效 率，售货员决定从所在商店出发，到每个村庄售一次货然后返回商店，问他应选择一条什么路线才能使所走的总路程最短?更复杂的问题是送货中要安排不同运载量 的汽车，要考虑油耗等等。现实中的物流配送以及装配线上机械手的移动路线优化都与这个问题有关。已经证明这个问题是NP难解的，简单而言就是解决问题所需 时间会随着问题规模指数级的增而无法接受。&lt;/p&gt;
&lt;p&gt;再回过来看蚁群，单体智能低下的它们在安排运送食物路线和兵力方面表现优秀，生物学家做了深入的研究，发现觅食蚁通过与巡逻蚁相遇的频率来判断出门是否 安全。（如果巡逻蚁回巢的频率正常，就该出去觅食了。如果不正常，就最好再等等。外面可能风很大，也可能有一只饥饿的蜥蜴等在那里。）一旦有蚂蚁开始觅食 并带回食物，其他蚂蚁就会根据自己与返回的觅食蚁碰面的频率，陆续加入觅食的行列。&lt;/p&gt;
&lt;p&gt;蚂蚁的行事法则可以抽象为下面几条&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;范围：蚂蚁观察到的范围是 一个方格世界，蚂蚁有一个参数为速度半径（一般是3），那么它能观察到的范围就是3*3个方格世界，并且能移动的距离也在这个范围之内&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;环境：蚂蚁所在的环境是一 个虚拟的世界，其中有障碍物，有别的蚂蚁，还有信息素，信息素有两种，一种是找到食物的蚂蚁洒下的食物信息素，一种是找到窝的蚂蚁洒下的窝的信息素。每个 蚂蚁都仅仅能感知它范围内的环境信息。环境以一定的速率让信息素消失&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;觅食规则：在每只蚂蚁能感知的范围内寻找是否有食物，如果有就直接过去。 否则看是否有信息素，并且比较在能感知的范围内哪一点的信息素最多，这样，它就朝信息素多 的地方走，并且每只蚂蚁多会以小概率犯错误，从而并不是往信息素最多的点移动。蚂蚁找窝的规则和上面一样，只不过它对窝的信息素做出反应，而对食物信息素 没反应&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;移动规则： 每只蚂蚁都朝向信息素最多的方向移，并且，当周围没有信息素指引的时候，蚂蚁会按照自己原来运动的方向惯性的运动下去，并且，在运动的方向有一个随机的 小的扰动。为了防止蚂蚁原地转圈，它会记住最近刚走过了哪些点，如果发现要走的下一点已经在最近走过了，它就会尽量避开&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;避障规则：如果蚂蚁要移动 的方向有障碍物挡住，它会随机的选择另一个方向，并且有信息素指引的话，它会按照觅食的规则行为&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;播撒信息素规则：每只蚂蚁在 刚找到食物或者窝的时候撒发的信息素最多，并随着它走远的距离，播撒的信息素越来越少&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;根据这几条规则，蚂蚁之间并没有直 接的关系，但是每只蚂蚁都和环境发生交互，而通过信息素这个纽带，实际上把各个蚂蚁之间关联起来了。比如，当一只蚂蚁 找到了食物，它并没有直接告诉其它蚂蚁这儿有食物，而是向环境播撒信息素，当其它的蚂蚁经过它附近的时候，就会感觉到信息素的存在，进而根据信息素的指引 找到了食物。&lt;/p&gt;
&lt;p&gt;根据这些规则，已经不难设计出相应的算法，通常被称为蚁群算法。事实上蚁群算法已经有实际应用&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;，如休斯敦的“美国液化空气”公司就使用蚁群算法优化 工厂日程、天气和卡车路线等各种要素的组合，能较快的获得近似最优解。优化的结果有时候会与人们常识性的认识相反，比如看上去绕了路等等，但事实是经济效 益非常好。&lt;/p&gt;
&lt;p&gt;这个算法是一个典型的仿生学应用，人类模拟自然的实例。&lt;/p&gt;
&lt;h2 id="二-跨学科的群体智慧研究"&gt;二、 跨学科的群体智慧研究&lt;/h2&gt;
&lt;p&gt;群体智慧是一个相当普遍的现象，首 先是在动物世界中，从蚁群、蜂群到鱼群、鸟群、鹿群、狼群，《狼图腾》的作者甚至认为古代蒙古人之所以横扫欧亚大陆，就是因为在长期与草原狼群的斗争中学 习了狼群的战斗智慧。其次在人类社会中，群体智慧也是又体现的。中国古代俗语说：“三个臭皮匠，顶个诸葛亮”，有一著名的估算牛的重量的实验，找很多普通 的人估计，然后得到的平均值发现与实际相差无几。&lt;/p&gt;
&lt;p&gt;以下是维基百科&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;总结的诸多学者关于群体智慧的定义：&lt;/p&gt;
&lt;p&gt;群体智慧(集体智慧　Collective intelligence)是一种共享的或者群体的智能，它是从许多个体的合作与竞争中涌现出来的。集体智慧在细菌、动物、人类以及计算机网络中形成，并 以多种形式的协商一致的决策模式出现。对于集体智慧的研究，实际上可以被认为是一个属于社会学、商业、计算机科学、大众传媒和大众行为的分支学科——研究 从夸克层次到细菌、植物、动物以及人类社会层次的群体行为的一个领域。这个概念也经常出现在科幻小说中，它被当作为联结物种和生化人的心灵感应。&lt;/p&gt;
&lt;p&gt;群体智慧中蕴涵的是个体与群体的微妙辩证关系，关于群体智慧的研究可以涉及很多学科，下面例举一些：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;生物学：对生物群体的深入研究可以发现群体智慧所依靠的一些规则，如历史上对于蚂蚁信息素的研究&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;数学与计算机科学：通过仿生建模，可以建立算法，解决现实中的复杂问题得到近似最优解&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;脑科学&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;：单个的神经元是如何协作形成智慧的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;社会学：社会制度、社会决策，一个智商低于常人的小布什为何能顺利执掌美国？法西斯主义是如何产生的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;经济学：没有统一定价方，为何社会也会运作正常？自由经济和宏观调控在经济管理中的分量&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;因特网和信息科学：Google如何对网页进行了选举？维基百科如何形成了人类最大的知识库，互联网如何形成了“云智慧”&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;上面例举的问题包括文理工科，需要研究者文理贯通，学识广博。目前国内对群体智慧的研究主要还是集中在群体智能方面，即各种仿生 算法的深入研究，而且这些算法的原创提出者基本都不是中国学者，也没有专门的研究机构。&lt;/p&gt;
&lt;p&gt;国外最有名的研究机构是MIT的群体智慧研究中心&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;（The MIT Center for Collective Intelligence），它建议的主要研究问题主要有：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;一群人是“有智慧的”意味着什么？比如，有一个智慧上的超人获得了一个公司如IBM或通用汽车的所有资源与知识，他会如何行动？他会追求怎样的战略？对于市场的变化会做出多快的反应？如何组织资金与工厂进行生产？能获取多大的利润？最重要的是，一群灵巧的联系的真人和计算机能有如何的表现，对这个超人作多大程度的近似&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我们可以学习人脑的组织方式，可能让我们更好的组织一群人形成智慧（反之我们也可以研究群体智慧帮助我们更好的理解人脑的组织方式）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;人工智能领域已经进入创造程序，让它们模拟人的智慧的阶段。以传统人工智能的观点来看，程序运行时人如果提供帮助会被视为作弊。但是如果允许呢？如 果目标是建立一个智能超过单独的人或机器的人和机器的混合系统？&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="三-一点思考和同异"&gt;三、 一点思考：和、同、异&lt;/h2&gt;
&lt;p&gt;《论语·子路第十三》说：“君子和 而不同，小人同而不和。”说的是统一中的一致与差异的辩证关系，群体智慧的形成也需要考虑差异与一致。比如蚂蚁觅食，需要有多样性的路线选择，这样蚁群才 不会陷入死胡同，而对优良路线的正反馈机制则保证了相对优良的信息能够被保存下来。&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="一-一个例子蚂蚁与蚁群算法">一、 一个例子：蚂蚁与蚁群算法</h2>
<p>说两个似乎八杆子打不到一块的事情。</p>
<p>有一句有趣的签名档：别人在大树底下观察蚂蚁的时候，我观察他们并思考人生。 这是调侃式的自我表扬，但透露的事实是几乎每个人小时候都观察过蚂蚁，惊叹于这种小小昆虫的井然有序。它们如何知道哪里食物多，它们如何决定要搬家，难道 它们的智商很高？事实是，如果抓单只蚂蚁来研究发现是比较笨的，但作为群体的蚁群却显示出让我们难以置信的智能。</p>
<p>经典的算法问题中有一个极具现实意义的问题叫做货郎担问题：某售货员要到若干个村庄售货，各村庄之间的路程是已知的，为了提高效 率，售货员决定从所在商店出发，到每个村庄售一次货然后返回商店，问他应选择一条什么路线才能使所走的总路程最短?更复杂的问题是送货中要安排不同运载量 的汽车，要考虑油耗等等。现实中的物流配送以及装配线上机械手的移动路线优化都与这个问题有关。已经证明这个问题是NP难解的，简单而言就是解决问题所需 时间会随着问题规模指数级的增而无法接受。</p>
<p>再回过来看蚁群，单体智能低下的它们在安排运送食物路线和兵力方面表现优秀，生物学家做了深入的研究，发现觅食蚁通过与巡逻蚁相遇的频率来判断出门是否 安全。（如果巡逻蚁回巢的频率正常，就该出去觅食了。如果不正常，就最好再等等。外面可能风很大，也可能有一只饥饿的蜥蜴等在那里。）一旦有蚂蚁开始觅食 并带回食物，其他蚂蚁就会根据自己与返回的觅食蚁碰面的频率，陆续加入觅食的行列。</p>
<p>蚂蚁的行事法则可以抽象为下面几条<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>：</p>
<ol>
<li>
<p>范围：蚂蚁观察到的范围是 一个方格世界，蚂蚁有一个参数为速度半径（一般是3），那么它能观察到的范围就是3*3个方格世界，并且能移动的距离也在这个范围之内</p>
</li>
<li>
<p>环境：蚂蚁所在的环境是一 个虚拟的世界，其中有障碍物，有别的蚂蚁，还有信息素，信息素有两种，一种是找到食物的蚂蚁洒下的食物信息素，一种是找到窝的蚂蚁洒下的窝的信息素。每个 蚂蚁都仅仅能感知它范围内的环境信息。环境以一定的速率让信息素消失</p>
</li>
<li>
<p>觅食规则：在每只蚂蚁能感知的范围内寻找是否有食物，如果有就直接过去。 否则看是否有信息素，并且比较在能感知的范围内哪一点的信息素最多，这样，它就朝信息素多  的地方走，并且每只蚂蚁多会以小概率犯错误，从而并不是往信息素最多的点移动。蚂蚁找窝的规则和上面一样，只不过它对窝的信息素做出反应，而对食物信息素  没反应</p>
</li>
<li>
<p>移动规则：  每只蚂蚁都朝向信息素最多的方向移，并且，当周围没有信息素指引的时候，蚂蚁会按照自己原来运动的方向惯性的运动下去，并且，在运动的方向有一个随机的  小的扰动。为了防止蚂蚁原地转圈，它会记住最近刚走过了哪些点，如果发现要走的下一点已经在最近走过了，它就会尽量避开</p>
</li>
<li>
<p>避障规则：如果蚂蚁要移动 的方向有障碍物挡住，它会随机的选择另一个方向，并且有信息素指引的话，它会按照觅食的规则行为</p>
</li>
<li>
<p>播撒信息素规则：每只蚂蚁在 刚找到食物或者窝的时候撒发的信息素最多，并随着它走远的距离，播撒的信息素越来越少</p>
</li>
</ol>
<p>根据这几条规则，蚂蚁之间并没有直 接的关系，但是每只蚂蚁都和环境发生交互，而通过信息素这个纽带，实际上把各个蚂蚁之间关联起来了。比如，当一只蚂蚁  找到了食物，它并没有直接告诉其它蚂蚁这儿有食物，而是向环境播撒信息素，当其它的蚂蚁经过它附近的时候，就会感觉到信息素的存在，进而根据信息素的指引  找到了食物。</p>
<p>根据这些规则，已经不难设计出相应的算法，通常被称为蚁群算法。事实上蚁群算法已经有实际应用<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>，如休斯敦的“美国液化空气”公司就使用蚁群算法优化 工厂日程、天气和卡车路线等各种要素的组合，能较快的获得近似最优解。优化的结果有时候会与人们常识性的认识相反，比如看上去绕了路等等，但事实是经济效 益非常好。</p>
<p>这个算法是一个典型的仿生学应用，人类模拟自然的实例。</p>
<h2 id="二-跨学科的群体智慧研究">二、 跨学科的群体智慧研究</h2>
<p>群体智慧是一个相当普遍的现象，首 先是在动物世界中，从蚁群、蜂群到鱼群、鸟群、鹿群、狼群，《狼图腾》的作者甚至认为古代蒙古人之所以横扫欧亚大陆，就是因为在长期与草原狼群的斗争中学 习了狼群的战斗智慧。其次在人类社会中，群体智慧也是又体现的。中国古代俗语说：“三个臭皮匠，顶个诸葛亮”，有一著名的估算牛的重量的实验，找很多普通 的人估计，然后得到的平均值发现与实际相差无几。</p>
<p>以下是维基百科<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>总结的诸多学者关于群体智慧的定义：</p>
<p>群体智慧(集体智慧　Collective  intelligence)是一种共享的或者群体的智能，它是从许多个体的合作与竞争中涌现出来的。集体智慧在细菌、动物、人类以及计算机网络中形成，并 以多种形式的协商一致的决策模式出现。对于集体智慧的研究，实际上可以被认为是一个属于社会学、商业、计算机科学、大众传媒和大众行为的分支学科——研究 从夸克层次到细菌、植物、动物以及人类社会层次的群体行为的一个领域。这个概念也经常出现在科幻小说中，它被当作为联结物种和生化人的心灵感应。</p>
<p>群体智慧中蕴涵的是个体与群体的微妙辩证关系，关于群体智慧的研究可以涉及很多学科，下面例举一些：</p>
<ol>
<li>
<p>生物学：对生物群体的深入研究可以发现群体智慧所依靠的一些规则，如历史上对于蚂蚁信息素的研究</p>
</li>
<li>
<p>数学与计算机科学：通过仿生建模，可以建立算法，解决现实中的复杂问题得到近似最优解</p>
</li>
<li>
<p>脑科学<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup>：单个的神经元是如何协作形成智慧的</p>
</li>
<li>
<p>社会学：社会制度、社会决策，一个智商低于常人的小布什为何能顺利执掌美国？法西斯主义是如何产生的</p>
</li>
<li>
<p>经济学：没有统一定价方，为何社会也会运作正常？自由经济和宏观调控在经济管理中的分量</p>
</li>
<li>
<p>因特网和信息科学：Google如何对网页进行了选举？维基百科如何形成了人类最大的知识库，互联网如何形成了“云智慧”</p>
</li>
</ol>
<p>上面例举的问题包括文理工科，需要研究者文理贯通，学识广博。目前国内对群体智慧的研究主要还是集中在群体智能方面，即各种仿生 算法的深入研究，而且这些算法的原创提出者基本都不是中国学者，也没有专门的研究机构。</p>
<p>国外最有名的研究机构是MIT的群体智慧研究中心<sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup>（The MIT Center for Collective Intelligence），它建议的主要研究问题主要有：</p>
<ol>
<li>
<p>一群人是“有智慧的”意味着什么？比如，有一个智慧上的超人获得了一个公司如IBM或通用汽车的所有资源与知识，他会如何行动？他会追求怎样的战略？对于市场的变化会做出多快的反应？如何组织资金与工厂进行生产？能获取多大的利润？最重要的是，一群灵巧的联系的真人和计算机能有如何的表现，对这个超人作多大程度的近似</p>
</li>
<li>
<p>我们可以学习人脑的组织方式，可能让我们更好的组织一群人形成智慧（反之我们也可以研究群体智慧帮助我们更好的理解人脑的组织方式）</p>
</li>
<li>
<p>人工智能领域已经进入创造程序，让它们模拟人的智慧的阶段。以传统人工智能的观点来看，程序运行时人如果提供帮助会被视为作弊。但是如果允许呢？如 果目标是建立一个智能超过单独的人或机器的人和机器的混合系统？</p>
</li>
</ol>
<h2 id="三-一点思考和同异">三、 一点思考：和、同、异</h2>
<p>《论语·子路第十三》说：“君子和 而不同，小人同而不和。”说的是统一中的一致与差异的辩证关系，群体智慧的形成也需要考虑差异与一致。比如蚂蚁觅食，需要有多样性的路线选择，这样蚁群才 不会陷入死胡同，而对优良路线的正反馈机制则保证了相对优良的信息能够被保存下来。</p>
<p>可被视为一个巨大的智能体的互联网也是如此，互联网包罗万象，泥沙俱下，然而还是产生了许多精品的资源，Google对网页重要性 的判别算法叫做PageRank<sup id="fnref:6"><a href="#fn:6" class="footnote-ref" role="doc-noteref">6</a></sup>，其基本规则很简单：就是让连接来投票。有别于传统媒介，互联网对于内容的提交几乎没有门槛，但确自然的进行了 筛选，其基础依然是对于多样性的包容和正反馈机制。</p>
<p>在社会领域也是如此，伏尔泰的名言 “我不同意你的观点，但我誓死捍卫你说话的权利。”说的就是对于多样性观点的包容，只要观点可以充分表达，充分竞争，最终群体智慧会让好的留下来，历史上走入死胡同的时代，几乎都伴随着严重的思想禁锢，防民之口甚于防川之时，就是社会内部聚集矛盾走向崩溃的开始。</p>
<p><strong>参考资料：</strong></p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>段海滨.  蚁群算法原理及其应用. 科学出版社. 2005.12&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>Peter Miller.  群体智慧,精妙理论. 华夏地理. 2007年11期&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p>维基百科：<a href="http://en.wikipedia.org/wiki/Collective_intelligence"
   rel="noopener noreferrer" target="_blank" class="external">集体智慧</a>
&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p><a href="http://www.globalbrain.cn/book/index/index.php"
   rel="noopener noreferrer" target="_blank" class="external">全球脑</a>
&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:5">
<p><a href="http://cci.mit.edu/"
   rel="noopener noreferrer" target="_blank" class="external">The MIT Center for Collective  Intelligence</a>
&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:6">
<p><a href="http://www.google.com/corporate/tech.html"
   rel="noopener noreferrer" target="_blank" class="external">http://www.google.com/corporate/tech.html</a>

【2010年1月4日初稿/2010年9月24日修改】&#160;<a href="#fnref:6" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded><category>geek</category><category domain="tags">互联网</category><category domain="tags">社会学</category></item><item><title>数学归纳法和“道”</title><link>https://yifeitao.com/mathematical-induction-and-dao/</link><pubDate>Wed, 06 Jan 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/mathematical-induction-and-dao/</guid><description>&lt;p&gt;国人对“高端”数学的认识中，有个不可绕过的“1+1=2”的问题，由于一篇成功的报告文学，陈景润几乎成了中国人眼中的数学之神，而“1+1=2”问题也成了全民的谈资。真正的“1+1=2”问题讨论的是数的素数加法分解，描述起来并不太复杂，但背后的名堂超出了我的数学功底。我想说的是很多人简单的认为这个问题谈的是一个橘子加一个橘子等于两个橘子的问题，甚至有人会觉得数学家无聊，这不是显然么。more&lt;/p&gt;
&lt;p&gt;其实即使是两个橘子的问题，也是可以大讨论一番的。数的基础认识来自于一个定性分析，有还是没有，有就是一，没有就是零，每个学生学到的第一个数就是一，因为它是定量认识的基石，是一切数数方法的起源，我们可以用老子的“道生一”来形容。第二个概念其实就是“1+1=2”（这个式子似乎还在某年被无聊的英国人评为史上最牛X的公式之一），说的其实是数的后继的概念，用后继的概念，可以产生二和三的概念，老子说“一生二，二生三”，无限制的进行下去，就会产生全体自然数的概念，老子说“三生万物”。&lt;/p&gt;
&lt;p&gt;数学归纳法使用的其实正是数数的思想，懂得一，懂得后继，就可以认识全体自然数。数学归纳法分三步，归纳基础（即证明结论关于一的正确性），归纳假设与归纳步骤（即结论证明关于后继的正确性），“一生二，二生三，三生万物”再恰当不过了。&lt;/p&gt;
&lt;p&gt;有趣又无奈的是，我们的逻辑认识能力的基础是一和后继，却也限制于此，当年数学家想建立完备的数学逻辑体系的努力被哥德尔不完全定理给粉碎了，他用一定的方法将任一逻辑体系内的所有命题用自然数表示起来，最后发现总会存在在体系内无法证明的命题。像“这句话是假话”的悖论永远无法真正消除。从某种意义上说，我们的认识能力限制在了一和后继上。&lt;/p&gt;
&lt;p&gt;总结一句：一部《老子》可以统领宇宙。数学之变诈几何哉，止增笑耳。(此句为扯淡。)&lt;/p&gt;
&lt;p&gt;【2010年1月4日初稿/2010年1月6日修改】&lt;/p&gt;</description><content:encoded><![CDATA[<p>国人对“高端”数学的认识中，有个不可绕过的“1+1=2”的问题，由于一篇成功的报告文学，陈景润几乎成了中国人眼中的数学之神，而“1+1=2”问题也成了全民的谈资。真正的“1+1=2”问题讨论的是数的素数加法分解，描述起来并不太复杂，但背后的名堂超出了我的数学功底。我想说的是很多人简单的认为这个问题谈的是一个橘子加一个橘子等于两个橘子的问题，甚至有人会觉得数学家无聊，这不是显然么。more</p>
<p>其实即使是两个橘子的问题，也是可以大讨论一番的。数的基础认识来自于一个定性分析，有还是没有，有就是一，没有就是零，每个学生学到的第一个数就是一，因为它是定量认识的基石，是一切数数方法的起源，我们可以用老子的“道生一”来形容。第二个概念其实就是“1+1=2”（这个式子似乎还在某年被无聊的英国人评为史上最牛X的公式之一），说的其实是数的后继的概念，用后继的概念，可以产生二和三的概念，老子说“一生二，二生三”，无限制的进行下去，就会产生全体自然数的概念，老子说“三生万物”。</p>
<p>数学归纳法使用的其实正是数数的思想，懂得一，懂得后继，就可以认识全体自然数。数学归纳法分三步，归纳基础（即证明结论关于一的正确性），归纳假设与归纳步骤（即结论证明关于后继的正确性），“一生二，二生三，三生万物”再恰当不过了。</p>
<p>有趣又无奈的是，我们的逻辑认识能力的基础是一和后继，却也限制于此，当年数学家想建立完备的数学逻辑体系的努力被哥德尔不完全定理给粉碎了，他用一定的方法将任一逻辑体系内的所有命题用自然数表示起来，最后发现总会存在在体系内无法证明的命题。像“这句话是假话”的悖论永远无法真正消除。从某种意义上说，我们的认识能力限制在了一和后继上。</p>
<p>总结一句：一部《老子》可以统领宇宙。数学之变诈几何哉，止增笑耳。(此句为扯淡。)</p>
<p>【2010年1月4日初稿/2010年1月6日修改】</p>
]]></content:encoded><category>life</category><category domain="tags">数学</category><category domain="tags">哲学</category></item><item><title>在Ubuntu上安装SystemC</title><link>https://yifeitao.com/systemc/</link><pubDate>Sun, 03 Jan 2010 00:00:00 +0000</pubDate><guid>https://yifeitao.com/systemc/</guid><description>&lt;p&gt;本人装这个完全是由于混学分而选课造就的悲剧。简单的来说，SystemC是用软件代码YY硬件的一个玩意儿。&lt;/p&gt;
&lt;p&gt;1，获取源码请到http://www.systemc.org/downloads/standards/，需要先注册一下该网站。我的gcc版本是4.1，下面的安装体会供参考。&lt;/p&gt;
&lt;p&gt;2，在许多版本的Linux下直接按其install文件提示安装都会有编译错误：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;../../../../src/sysc/utils/sc_utils_ids.cpp: In function ‘int sc_core::initialize()’:
../../../../src/sysc/utils/sc_utils_ids.cpp:110: error: ‘getenv’ is not a member of ‘std’
../../../../src/sysc/utils/sc_utils_ids.cpp:111: error: ‘strcmp’ was not declared in this scope&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;需要修改一下出错的源文件sc_utils_ids.cpp，是包含关系上的bug，在源代码的最前面加上：&lt;code&gt;#include &amp;quot;string.h&amp;quot;&lt;/code&gt;,&lt;code&gt;include &amp;quot;cstdlib&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;3，还有一个问题就是编译中要用到gmake，Ubuntu中已经取消了，直接用make代替了，可以一劳永逸的做个链接：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$ sudo ln -s /usr/bin/make /usr/bin/gmake&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;4，接下来就基本上按install文件提示步骤安装了：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ tar –xvzf systemc-2.2.0.tgz //解压缩
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ cd system-2.2.0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ mkdir objdir //建立临时文件夹，用于存放SystemC安装文件
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ cd objdir //接下来的命令在objdir下运行
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ export CXX&lt;span style="color:#f92672"&gt;=&lt;/span&gt;g++
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ../configure --prefix&lt;span style="color:#f92672"&gt;=&lt;/span&gt; my_path //执行配置文件，指定SystemC的安装路径
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ gmake //编译SystemC
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ gmake install //安装SystemC&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;5，编译和运行的基本使用方法：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ g++ my_systemc.cpp -I my_path/systemc-2.2.0/include -L $my_path/systemc-2.2.0/lib-linux -lsystemc -o my_systemc
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ./my_systemc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description><content:encoded><![CDATA[<p>本人装这个完全是由于混学分而选课造就的悲剧。简单的来说，SystemC是用软件代码YY硬件的一个玩意儿。</p>
<p>1，获取源码请到http://www.systemc.org/downloads/standards/，需要先注册一下该网站。我的gcc版本是4.1，下面的安装体会供参考。</p>
<p>2，在许多版本的Linux下直接按其install文件提示安装都会有编译错误：</p>


<pre tabindex="0"><code>../../../../src/sysc/utils/sc_utils_ids.cpp: In function ‘int sc_core::initialize()’:
../../../../src/sysc/utils/sc_utils_ids.cpp:110: error: ‘getenv’ is not a member of ‘std’
../../../../src/sysc/utils/sc_utils_ids.cpp:111: error: ‘strcmp’ was not declared in this scope</code></pre>
<p>需要修改一下出错的源文件sc_utils_ids.cpp，是包含关系上的bug，在源代码的最前面加上：<code>#include &quot;string.h&quot;</code>,<code>include &quot;cstdlib&quot;</code></p>
<p>3，还有一个问题就是编译中要用到gmake，Ubuntu中已经取消了，直接用make代替了，可以一劳永逸的做个链接：</p>
<p><code>$ sudo ln -s /usr/bin/make /usr/bin/gmake</code></p>
<p>4，接下来就基本上按install文件提示步骤安装了：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ tar –xvzf systemc-2.2.0.tgz              //解压缩
</span></span><span style="display:flex;"><span>$ cd system-2.2.0
</span></span><span style="display:flex;"><span>$ mkdir objdir          //建立临时文件夹，用于存放SystemC安装文件
</span></span><span style="display:flex;"><span>$ cd objdir //接下来的命令在objdir下运行
</span></span><span style="display:flex;"><span>$ export CXX<span style="color:#f92672">=</span>g++
</span></span><span style="display:flex;"><span> ../configure --prefix<span style="color:#f92672">=</span> my_path //执行配置文件，指定SystemC的安装路径
</span></span><span style="display:flex;"><span>$ gmake             //编译SystemC
</span></span><span style="display:flex;"><span>$ gmake install    //安装SystemC<span style="color:#e6db74">`</span></span></span></code></pre></div>
<p>5，编译和运行的基本使用方法：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ g++ my_systemc.cpp -I my_path/systemc-2.2.0/include -L $my_path/systemc-2.2.0/lib-linux -lsystemc -o my_systemc
</span></span><span style="display:flex;"><span>$ ./my_systemc</span></span></code></pre></div>
]]></content:encoded><category>geek</category><category domain="tags">编程</category><category domain="tags">Linux</category><category domain="tags">技术</category></item><item><title>读书列表2009</title><link>https://yifeitao.com/reading-2009/</link><pubDate>Thu, 31 Dec 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/reading-2009/</guid><description>&lt;h3 id="飘"&gt;《飘》&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2008 年 04 月 02 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;1，作者米切尔，人物郝思嘉，演员费雯丽，据说三人都是天蝎座。&lt;/p&gt;
&lt;p&gt;2，作者先写完的是最后一章，《飘》几乎是她的唯一作品，因为不胜成名之累。&lt;/p&gt;
&lt;p&gt;3，充满缺陷又惹人爱的女主角，被誉为美国精神的象征。穷苦中拔萝卜充饥时的宣言“再也不要挨饿，包括我的家人，即使去偷去抢甚至杀人”，结尾时似乎终于懂得珍惜爱情却被抛弃时的“明天又是新的一天”都令人难忘。时至今日，艺术形象中泛滥的仍是灰姑娘，而郝思嘉实在是独特。&lt;/p&gt;
&lt;p&gt;4，本人对于美国南北战争的浅薄认识被本作颠覆，这是一部心灵史诗，战争乃是文明冲突的剧烈化，南北文明在作品中如两股对流之水，也令沉渣泛起。&lt;/p&gt;
&lt;p&gt;5，白瑞德对郝思嘉的爱纵容而不卑下，男人典范。但最后的离开是感情枯竭还是自尊所致呢。据说有对本作的狗尾续貂，大团圆结局，原来不只是国人喜欢这样。&lt;/p&gt;
&lt;p&gt;6，艾希礼看清了显示却无法融入现实，人的道德自压可见，顺流者昌，逆流者亡，但并非仅需认准方向。&lt;/p&gt;
&lt;p&gt;7，得不到的是最好的，这似乎是郝思嘉对爱情的错觉。金钱是最重要的，其实需要的是它带来的安全感。&lt;/p&gt;
&lt;p&gt;8，作品中有不少出色的景色描写，空旷的美国乡村风光实在令人向往。&lt;/p&gt;
&lt;p&gt;9，黑奴原来也是分等级的，“家务黑人”会往往瞧不起“大田黑人”。与主人关系亲密的黑人常常颇有权威，乃至歧视下等白人。&lt;/p&gt;
&lt;h3 id="万历十五年"&gt;《万历十五年》&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2008 年 04 月 20 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;1，作者说这个时代的大失败，并非为了全盘否定中国文化，但以我浅薄的理解，掩卷唯有叹息：四百多年过去了，中国已翻天覆地很多次，然而导致那个时代崩塌的文化毒素仍在肆虐。&lt;/p&gt;
&lt;p&gt;2，中国的政体早熟，家天下模式以德治国。&lt;/p&gt;
&lt;p&gt;3，“圣人”统治者不受人民的约束但有强大的道德枷锁，欲锁天下先锁自我，明代乃至中国古代的君王没有几个心理健康的，很多人当皇帝实乃勉为其难。皇冠上的珠帘体现的庄重，同时也约束了皇帝的坐姿。&lt;/p&gt;
&lt;p&gt;4，作者的“大历史观”更像是真正的人民史观，强调的是历史人物在大环境下的作用，不纠缠于细节但不乏管中窥豹。&lt;/p&gt;
&lt;p&gt;5，体制如果缺乏自我优化的能力，体制内的任何人都将无能为力，直至其崩溃。&lt;/p&gt;
&lt;h3 id="遥远的救世主"&gt;《遥远的救世主》&lt;/h3&gt;
&lt;p&gt;虽然作品中有不乏作为速度文本的要素，商战、枪战、别样的爱情、高雅的音乐、天国的女儿，但这一切构架的是对救主文化的探讨。&lt;/p&gt;
&lt;p&gt;丁元英的商战布局，大智若愚，是献给女朋友芮小丹的礼物。什么样的扶贫才是真正的扶贫，国际歌说：“从来就没有什么救世主”，中国人唱的是“中国出了个大救星”。丁元英站在让被救之人自我觉解的角度去“扶贫“，救主乃是自我，所谓”遥远的救世主“乃是弱势文化心理的暗像。仅从一句”当官不为民做主，不如回家卖红薯“可见一斑，以此为标准，卖红薯的竞争当是空前激烈啊。&lt;/p&gt;
&lt;p&gt;这个话题太宏大，估计作者豆豆（说起来她还真是神秘）也看不到边界，所以女主角自杀了，男主角失去了重要的寄托，不知前路几何。那些高调的论道，是以略显悲凉的画面结束的，正如这个国家仍然在救主的幻影中彷徨。&lt;/p&gt;
&lt;h3 id="京华烟云"&gt;《京华烟云》&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2008 年 05 月 10 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;知道这个作品还是因为电视剧的宣传，可见本人所受教育之可悲，在一个危亡勃发的年代中，我只知道鲁迅，而且还从来没有去自己理解过，有的只是教参的解读。&lt;/p&gt;
&lt;p&gt;林语堂不是鲁迅，他温和的想把中国传统美得一面展现给西方世界，本欲翻译红楼梦，因觉时代差异西方人无法理解而作《京华烟云》，原文是用英文写的，大牛啊。 如果读者很喜欢主人公姚木兰，可能会觉得小说中她的戏份还太少，实际上本作是清末民初的一幅群像，主要集中于传统的上流社会。我们看到的是一个贵族眼中的中国传统文化，它远不是简单的用腐朽就可以概括的。&lt;/p&gt;
&lt;p&gt;历史的巨变中，中国文化的魂魄未散，它的包容性之大已为历史证明，也还在被证实的过程中。强大文明的强大在于吸收与消化的能力，自我进化的能力，拭目以待中。 本作中有零星的历史背景介绍，林语堂的优雅甚至体现到了他对日本人的咒骂中，有大段的对中国文化现象的介绍与分析。作为今天的我而言，很多地方竟觉新鲜。&lt;/p&gt;
&lt;p&gt;高雅或许不是拯救中国的核心力量，但是中华文明的复兴却不是枪火可以带来的。&lt;/p&gt;
&lt;h3 id="暗算"&gt;《暗算》&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2009 年 01 月 10 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;读麦加的第一部小说《解密》还是五六年前的事情，当时被那种带着奇幻色彩的解密天才的描写深深震撼，而《暗算》因电视剧而走红，又获得茅盾文学奖，其实个人感觉对比《解密》，《暗算》的人物更加多样，但就阅读体验而言似乎进步不多。&lt;/p&gt;
&lt;p&gt;文学作品多描绘不凡人物的不凡人生，而小说中人物常常感慨不能过平凡的生活，读者既欣赏与自己人生不一样的精彩，又感慨原来的平凡也是幸福的，于是满足感油然而生。&lt;/p&gt;
&lt;p&gt;《暗算》中的天才们的命运在我们常人看来是极其不幸的，他们投身残酷的事业，甚至不是因为传统主流语义中的原因，他们的结局如蝴蝶断翅，如水晶脆裂。 算不透的是命运，尽管解开它的密码都在人的性格所处的环境中，却复杂的像一个随机方程。&lt;/p&gt;
&lt;h3 id="麦田里的守望者迟来的青春期给自己"&gt;《麦田里的守望者》：迟来的青春期——给自己&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2008-11-30成都&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;七年前，看到过一个柔弱的男生在看《麦田里的守望者》，却已经记不起看书的同学的名字。我不曾想去了解一本有着奇怪书名的小说，我的全部课外读物来自教育部推荐的书目，也许再加上《读者》和《杂文选刊》。我待在高中的果壳宇宙中，曾经幻觉自己是个爱好学习的人。&lt;/p&gt;
&lt;p&gt;七年后，回首过去，原来我只是善于在试卷上猜测出题人要的答案。我在现实的工作面前烦恼着成长，对这个社会模糊地认知在某些角度渐渐清晰，常常不免生出一些愤怒，乃至自嘲是个愤青。&lt;/p&gt;
&lt;p&gt;在中学时期闭门学习和娱乐，在大学时代闭门娱乐和学习，好好学生一枚。想不到现在居然常常愤怒了，这真是迟来的青春期啊。中国的传统说法是人的成长要经历“正、反、合”三阶段，看来我的“反”来得太迟，于是会和书中的中学生产生情感的共鸣。&lt;/p&gt;
&lt;p&gt;作品中的主人公那种基本上谁都看不惯的态度，真是契合了我在断断续续靠手机读完本作的将近一年的时间里的该死的心境。主人公在对现实强烈的不满中隐含着暴烈与温柔两种要素，暴烈几乎想让他自我毁灭，温柔让他无法丢弃那不死的美好。&lt;/p&gt;
&lt;p&gt;自然人拥有单纯的道德，但在强大的体制面前如果不慢慢演变为一个组织人则很可能过得很痛苦，单纯的“反”下去不会有任何作用，如果决绝，则如那些卧轨跳海的诗人。本作很好的描述了一个男孩成长中“反”的过程，那些逆反是人必经的也是必不可少的，也许社会进步的力量源泉来于此。小说中主人公怀着在麦田里守望小孩子的单纯理想或更确切的称之为意象，没有再去写他的结局是疯狂或是冷静，但我想抱着这样的意象一定是会冷静下来的。&lt;/p&gt;
&lt;p&gt;小说没有写“合”的过程，尽管那些逆反的心态让人感同身受甚至觉得酣畅淋漓，但是成长要求我去与社会契合，这个过程充满了痛苦与不解，看见不同颜色的洪流，不知道要跳进那一股；被冲刷，被浸染，需要去找到一个中庸的支撑点。但是我之为我，一定是需要坚持一些什么的，那些叛逆的烦闷，不羁的奔想，如果不在我的生命中留下一些烙印，那真是虚妄青春，错过此生。&lt;/p&gt;
&lt;h3 id="偷书贼一个偷书贼的小感想"&gt;《偷书贼》：一个偷书贼的小感想&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2009 年 10 月 21 日&lt;/em&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<h3 id="飘">《飘》</h3>
<p><em>2008 年 04 月 02 日</em></p>
<p>1，作者米切尔，人物郝思嘉，演员费雯丽，据说三人都是天蝎座。</p>
<p>2，作者先写完的是最后一章，《飘》几乎是她的唯一作品，因为不胜成名之累。</p>
<p>3，充满缺陷又惹人爱的女主角，被誉为美国精神的象征。穷苦中拔萝卜充饥时的宣言“再也不要挨饿，包括我的家人，即使去偷去抢甚至杀人”，结尾时似乎终于懂得珍惜爱情却被抛弃时的“明天又是新的一天”都令人难忘。时至今日，艺术形象中泛滥的仍是灰姑娘，而郝思嘉实在是独特。</p>
<p>4，本人对于美国南北战争的浅薄认识被本作颠覆，这是一部心灵史诗，战争乃是文明冲突的剧烈化，南北文明在作品中如两股对流之水，也令沉渣泛起。</p>
<p>5，白瑞德对郝思嘉的爱纵容而不卑下，男人典范。但最后的离开是感情枯竭还是自尊所致呢。据说有对本作的狗尾续貂，大团圆结局，原来不只是国人喜欢这样。</p>
<p>6，艾希礼看清了显示却无法融入现实，人的道德自压可见，顺流者昌，逆流者亡，但并非仅需认准方向。</p>
<p>7，得不到的是最好的，这似乎是郝思嘉对爱情的错觉。金钱是最重要的，其实需要的是它带来的安全感。</p>
<p>8，作品中有不少出色的景色描写，空旷的美国乡村风光实在令人向往。</p>
<p>9，黑奴原来也是分等级的，“家务黑人”会往往瞧不起“大田黑人”。与主人关系亲密的黑人常常颇有权威，乃至歧视下等白人。</p>
<h3 id="万历十五年">《万历十五年》</h3>
<p><em>2008 年 04 月 20 日</em></p>
<p>1，作者说这个时代的大失败，并非为了全盘否定中国文化，但以我浅薄的理解，掩卷唯有叹息：四百多年过去了，中国已翻天覆地很多次，然而导致那个时代崩塌的文化毒素仍在肆虐。</p>
<p>2，中国的政体早熟，家天下模式以德治国。</p>
<p>3，“圣人”统治者不受人民的约束但有强大的道德枷锁，欲锁天下先锁自我，明代乃至中国古代的君王没有几个心理健康的，很多人当皇帝实乃勉为其难。皇冠上的珠帘体现的庄重，同时也约束了皇帝的坐姿。</p>
<p>4，作者的“大历史观”更像是真正的人民史观，强调的是历史人物在大环境下的作用，不纠缠于细节但不乏管中窥豹。</p>
<p>5，体制如果缺乏自我优化的能力，体制内的任何人都将无能为力，直至其崩溃。</p>
<h3 id="遥远的救世主">《遥远的救世主》</h3>
<p>虽然作品中有不乏作为速度文本的要素，商战、枪战、别样的爱情、高雅的音乐、天国的女儿，但这一切构架的是对救主文化的探讨。</p>
<p>丁元英的商战布局，大智若愚，是献给女朋友芮小丹的礼物。什么样的扶贫才是真正的扶贫，国际歌说：“从来就没有什么救世主”，中国人唱的是“中国出了个大救星”。丁元英站在让被救之人自我觉解的角度去“扶贫“，救主乃是自我，所谓”遥远的救世主“乃是弱势文化心理的暗像。仅从一句”当官不为民做主，不如回家卖红薯“可见一斑，以此为标准，卖红薯的竞争当是空前激烈啊。</p>
<p>这个话题太宏大，估计作者豆豆（说起来她还真是神秘）也看不到边界，所以女主角自杀了，男主角失去了重要的寄托，不知前路几何。那些高调的论道，是以略显悲凉的画面结束的，正如这个国家仍然在救主的幻影中彷徨。</p>
<h3 id="京华烟云">《京华烟云》</h3>
<p><em>2008 年 05 月 10 日</em></p>
<p>知道这个作品还是因为电视剧的宣传，可见本人所受教育之可悲，在一个危亡勃发的年代中，我只知道鲁迅，而且还从来没有去自己理解过，有的只是教参的解读。</p>
<p>林语堂不是鲁迅，他温和的想把中国传统美得一面展现给西方世界，本欲翻译红楼梦，因觉时代差异西方人无法理解而作《京华烟云》，原文是用英文写的，大牛啊。 如果读者很喜欢主人公姚木兰，可能会觉得小说中她的戏份还太少，实际上本作是清末民初的一幅群像，主要集中于传统的上流社会。我们看到的是一个贵族眼中的中国传统文化，它远不是简单的用腐朽就可以概括的。</p>
<p>历史的巨变中，中国文化的魂魄未散，它的包容性之大已为历史证明，也还在被证实的过程中。强大文明的强大在于吸收与消化的能力，自我进化的能力，拭目以待中。 本作中有零星的历史背景介绍，林语堂的优雅甚至体现到了他对日本人的咒骂中，有大段的对中国文化现象的介绍与分析。作为今天的我而言，很多地方竟觉新鲜。</p>
<p>高雅或许不是拯救中国的核心力量，但是中华文明的复兴却不是枪火可以带来的。</p>
<h3 id="暗算">《暗算》</h3>
<p><em>2009 年 01 月 10 日</em></p>
<p>读麦加的第一部小说《解密》还是五六年前的事情，当时被那种带着奇幻色彩的解密天才的描写深深震撼，而《暗算》因电视剧而走红，又获得茅盾文学奖，其实个人感觉对比《解密》，《暗算》的人物更加多样，但就阅读体验而言似乎进步不多。</p>
<p>文学作品多描绘不凡人物的不凡人生，而小说中人物常常感慨不能过平凡的生活，读者既欣赏与自己人生不一样的精彩，又感慨原来的平凡也是幸福的，于是满足感油然而生。</p>
<p>《暗算》中的天才们的命运在我们常人看来是极其不幸的，他们投身残酷的事业，甚至不是因为传统主流语义中的原因，他们的结局如蝴蝶断翅，如水晶脆裂。 算不透的是命运，尽管解开它的密码都在人的性格所处的环境中，却复杂的像一个随机方程。</p>
<h3 id="麦田里的守望者迟来的青春期给自己">《麦田里的守望者》：迟来的青春期——给自己</h3>
<p><em>2008-11-30成都</em></p>
<p>七年前，看到过一个柔弱的男生在看《麦田里的守望者》，却已经记不起看书的同学的名字。我不曾想去了解一本有着奇怪书名的小说，我的全部课外读物来自教育部推荐的书目，也许再加上《读者》和《杂文选刊》。我待在高中的果壳宇宙中，曾经幻觉自己是个爱好学习的人。</p>
<p>七年后，回首过去，原来我只是善于在试卷上猜测出题人要的答案。我在现实的工作面前烦恼着成长，对这个社会模糊地认知在某些角度渐渐清晰，常常不免生出一些愤怒，乃至自嘲是个愤青。</p>
<p>在中学时期闭门学习和娱乐，在大学时代闭门娱乐和学习，好好学生一枚。想不到现在居然常常愤怒了，这真是迟来的青春期啊。中国的传统说法是人的成长要经历“正、反、合”三阶段，看来我的“反”来得太迟，于是会和书中的中学生产生情感的共鸣。</p>
<p>作品中的主人公那种基本上谁都看不惯的态度，真是契合了我在断断续续靠手机读完本作的将近一年的时间里的该死的心境。主人公在对现实强烈的不满中隐含着暴烈与温柔两种要素，暴烈几乎想让他自我毁灭，温柔让他无法丢弃那不死的美好。</p>
<p>自然人拥有单纯的道德，但在强大的体制面前如果不慢慢演变为一个组织人则很可能过得很痛苦，单纯的“反”下去不会有任何作用，如果决绝，则如那些卧轨跳海的诗人。本作很好的描述了一个男孩成长中“反”的过程，那些逆反是人必经的也是必不可少的，也许社会进步的力量源泉来于此。小说中主人公怀着在麦田里守望小孩子的单纯理想或更确切的称之为意象，没有再去写他的结局是疯狂或是冷静，但我想抱着这样的意象一定是会冷静下来的。</p>
<p>小说没有写“合”的过程，尽管那些逆反的心态让人感同身受甚至觉得酣畅淋漓，但是成长要求我去与社会契合，这个过程充满了痛苦与不解，看见不同颜色的洪流，不知道要跳进那一股；被冲刷，被浸染，需要去找到一个中庸的支撑点。但是我之为我，一定是需要坚持一些什么的，那些叛逆的烦闷，不羁的奔想，如果不在我的生命中留下一些烙印，那真是虚妄青春，错过此生。</p>
<h3 id="偷书贼一个偷书贼的小感想">《偷书贼》：一个偷书贼的小感想</h3>
<p><em>2009 年 10 月 21 日</em></p>
<p>特别介绍：偷书往事——分两次偷到的《偷书贼》——被星星灼伤的眼睛——还有，捉摸不透的人类。</p>
<p>《偷书贼》在国内的小热度约莫是出现在2007年末，第一次看到这个书名，我就难以抑制的想要去一睹究竟。因为尽管从未跟人提起，我也干过偷书的勾当，但是现在不是一个回忆这些往事的好时机，或许等到要以写回忆录为乐的时候，会详细的来说一说，但这些往事不知为何时常有历久弥新的感觉，或许是因为作为一个乖孩子成长至今干过的坏事太少吧。 现在我能说的是，我理解“偷书贼”的感受，“窃书，读书人的事，能算偷么？”这是爱书人无可奈何的辩白。</p>
<p>在电视电脑各种四四方方的屏幕被弄出来之前，四四方方的书是最大的沉迷系统，文字可以是天使、可以是魔鬼，它沉淀的是人类文明的智巧。破格获取往往也是在穷困书虫考虑之列的。 应该说，我现在依然是一个偷书贼，只不过是点鼠标偷书而已。我把《偷书贼》列入了想看的书列表，但却不愿意花一分钱，直到2008年网上出现电子版，但作为对我偷书的惩罚是，这本电子书只有前五章，我懵然不知，拿着手机一头扎进去，最后发现自己只偷到了一半，真是看小说的惨剧。都偷了一半的书绝不会去买，我等啊等直到最近找到了全本，然后一口气读完。是的，偷书贼说起这些都总是带着可耻和莫名的骄傲的。</p>
<p>《偷书贼》小小的探讨了一把书籍对人的影响。书籍文字是一种话语权，可能成为强权奴役人的工具，也可能成为弱者心中强大的光辉，这取决于你是否有自由思考的能力，还是只是让人一遍遍的在脑子里跑了马。 本书使我记忆最深的是一句是“星星灼伤了我的眼睛“，发自见不到阳光的躲藏在地下室的犹太人之口。这是一种无法想象却又可以想象的凄凉的美丽的场景。无法想象，因为他那特殊的悲惨的处境；可以想象，因为人之间的刻苦折磨从未停歇。</p>
<p>《偷书贼》这个故事里有养父母和养女、有两小无猜、有专制与狂热、有巧合与自作自受，有毁于一旦和劫后余生，这本来可以写成一个充满悬疑的形式，但是作者是用死神（一个在二战中忙的晕头转向的家伙）的口吻来说的，或许对于荒谬的二战，死神比较有发言权。作者不厌其烦的提示结局与故事发展进程，让那种喜欢瞄一眼结尾的人失去了乐趣。可是当一切走向必然的已知的结局时，让我们不停地问为什么，这不是简单的命运二字就可以一带而过的。</p>
<p>死神的答案是：捉摸不透的人类。我想我没有更好的答案。</p>
]]></content:encoded><category>reading</category><category domain="tags">读书</category><category domain="tags">总结</category></item><item><title>观影列表2009</title><link>https://yifeitao.com/movies-2009/</link><pubDate>Thu, 31 Dec 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/movies-2009/</guid><description>&lt;h2 id="海角七号大陆人看海角是什么程度的共鸣"&gt;《海角七号》：大陆人看海角，是什么程度的共鸣&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;2009 年 01 月 13 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;《海角七号》毫无疑问将载入台湾电影史乃至华语电影史，作为零八年的无冕之王，它在台湾形成的观影风潮有着众多可以分析的原因，如成功的口碑营销，影片对于不同阶层不同年龄的心理共鸣，优美的画风与音乐，而这些因素并不能全在台湾之外复制。&lt;/p&gt;
&lt;p&gt;某日看到豆瓣上《海角七号》讨论中有关于两岸关系网友较为理性的讨论，不禁想到，大陆人看海角，究竟是什么程度的情感共鸣？或许是两岸现实的一个隐喻。 观众对于电影的共鸣来自于普遍人生的特质，所以我们看那些离我们很遥远的故事，陌生的语言，却仍然可能被感动呗激怒，而如果电影真正反映你我身边的生活时，它的力量则会更加明显，正如海角之余台湾观众。 而海角之于我，是那么熟悉又那么陌生，熟悉的那些我的同胞仿佛就在眼前，陌生得又仿佛他们在另一个国度。&lt;/p&gt;
&lt;p&gt;我们强调台湾是中国不可分割的一部分，但不容忽视的现实是近半个世纪的对立乃至割裂，大陆与台湾的彼此了解，一度不如两个更好的邻邦，所以海角才成为一个熟悉而陌生的影像。 但是值得欣慰的是，两岸的主流文化仍然是血脉相连的，只要汉字还统治着我们，需要的是对于差异的包容以及共同进步。 如果我们看海角，共鸣很少愤怒很多，那么，是危险的，但愿不是如此。&lt;/p&gt;
&lt;h3 id="潜伏恍若现实"&gt;《潜伏》：恍若现实&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2009-4-15成都&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;1，斗智大于斗勇，有看当初看《越狱第一季》的感觉；&lt;/p&gt;
&lt;p&gt;2，孙红雷长得像个坏蛋，演特工还真是别样的合适，当然这别样合适的底气来自他不断成长的演技，姚晨部分延续了郭芙蓉“二”的特征，依然优秀；&lt;/p&gt;
&lt;p&gt;3，本剧一定程度上演示了一个组织是如何在内部溃乱、消耗直至崩坏，每每余则成干的“好事”都被自然而然的转嫁到国民党内部人士身上；&lt;/p&gt;
&lt;p&gt;4，每个人都是戴着面具生活的，而余则成的面具是多层的，首先要有游走官场的面具，然后才是潜伏者的面具；&lt;/p&gt;
&lt;p&gt;5，本剧的热播说明了这个缺乏信仰的时代的人们其实是渴望信仰的，然而信仰不是画饼，余则成由信仰爱情到信仰新生的力量，其反作用力来自于对现实环境的极度了解后的极度失望；&lt;/p&gt;
&lt;p&gt;6，剧中的职场斗争是中国“伟大智慧”厚黑学的典型演绎，只是这一切促成的是一个“背叛者”的成功；&lt;/p&gt;
&lt;p&gt;7，结局部分，在新中国成立的热切声音中，接头人略显冰冷的声音告知余则成入党成功但再也见不到自己的爱人，孙红雷在此“我会奋斗终生的”念白显得有些飘渺，或许这是一个别样合适的结尾；&lt;/p&gt;
&lt;p&gt;8，一切恍若现实。&lt;/p&gt;
&lt;h3 id="疯狂的赛车看你会抄不会抄巧合到死暗含心酸"&gt;《疯狂的赛车》：看你会抄不会抄——巧合到死，暗含心酸&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2009-2-2成都&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;小时候写作文，妈妈教我多多读书看报，因为“天下文章一大抄，看你会抄不会抄”；后来写代码，老师教我们多读源码，因为“天下代码一大抄，看你会抄不会抄”。那么看过《疯狂的石头》，再按豆瓣的推荐看过《两杆大烟枪》，然后不小心看过一堆往“石头”的生财之道靠拢的粗制乱造，最后到欣赏宁浩的“二度疯狂”，我得出一个无甚技术含量的结论：“天下电影一大抄，看你会抄不会抄”。而显然，宁浩属于会抄的。&lt;/p&gt;
&lt;p&gt;对于这种调调的电影，可以用“巧合到死”来概括：分成几小撮的人物，复杂尖锐的利益冲突，无所不在的巧合，“多行不义必自毙”的结局。巧合是文艺作品的常用乃至必备要素，但常常也是导致俗套的罪魁祸首，而把巧合用到泛滥却不显得牵强就考验编剧的功力了。而显然，《疯狂的赛车》合格了。 “巧合到死”的结构人人皆可抄袭，但在此形式背后的内容才是影片成功的正真保证。&lt;/p&gt;
&lt;p&gt;《疯狂的赛车》中的人物并不是生活中常见的，有一失足成千古恨的银牌车手，买凶杀人的无良商人，等钱完婚的笨蛋杀手，爱说帅的台湾黑社会，但他们所处的环境，所说的台词又是极度生活化的。这种反差制造了只有台词结合剧情才有的“笑果”，不同于一般冯小刚的“耍贫嘴”或是周星驰的“无厘头”，宁浩让很多大陆观众接触到了一种新的喜剧形式，也导致了很多残次的跟分之作。&lt;/p&gt;
&lt;p&gt;宁浩的优秀不在于使用这种新的喜剧形式，而在于他对于影片合理性及细节的追求，像我这种粗心的影迷，看第二遍影片会发现很多新的笑点。 如果仅仅是如此，那么就只是比《十全九美》强一点点，《疯狂的赛车》没有帅哥美女，没有浪漫小资，虽然人物都有黑暗的色彩，但却是一群被命运和社会无情嘲弄的小人物。我在开怀大笑的同时，不禁也为一些细节暗暗感到心酸，比如记者一窝蜂采访冠军，比如慌忙报案时要求先填表，比如有钱无钱时墓地商迥异的态度，比如主角的师傅被骗子活活气死，比如主角奇特的重返赛场。&lt;/p&gt;
&lt;p&gt;如果不是巧合到死的结构，主角的际遇到结尾将是一个彻头彻尾的悲剧。这些情绪的表达结合了喜剧的形式，没有刻意渲染，但已经让我对宁浩接下来的作品产生了期待，因为他拍的喜剧不是干巴巴的笑料，这是“石头”的跟风者们的一贯特色。&lt;/p&gt;
&lt;h3 id="家乡的故事并非伟大母亲的故事"&gt;《家乡的故事》：并非伟大母亲的故事&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2009 年 08 月 09 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;英文片名译过来是《家乡的故事》，本片还有一个中文片名《意》，但我更愿意直接地理解叙述为一个母亲的故事。&lt;/p&gt;
&lt;p&gt;《我的母亲》是个经久不衰的作文题目，或许每个中国学生多写过，但回忆我们的文字，又何曾饱含真情，那些流水线产出的八股苍白无力，从来不曾拥有温柔的力量。 但本片是个饱含真情，拥有温柔的力量的《我的母亲》，这个母亲并不是所谓平凡中蕴含伟大，甚至显得毫不称职，她曾经拥有畸生的真爱，然后游戏人间，教导孩子珍惜生命，自己却视若儿戏。&lt;/p&gt;
&lt;p&gt;片中的叙述者，那个曾经幼小的男孩，曾经诅咒母亲又在母亲去世后不停地试图去理解母亲。小男孩的姐姐倒像真正的母亲，对家人倾注无私的爱。 世界不曾完美，爱也不常理智，也许理解了母亲也就理解了世界，这个命题是如此简单又是如此复杂。&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="海角七号大陆人看海角是什么程度的共鸣">《海角七号》：大陆人看海角，是什么程度的共鸣</h2>
<p><em>2009 年 01 月 13 日</em></p>
<p>《海角七号》毫无疑问将载入台湾电影史乃至华语电影史，作为零八年的无冕之王，它在台湾形成的观影风潮有着众多可以分析的原因，如成功的口碑营销，影片对于不同阶层不同年龄的心理共鸣，优美的画风与音乐，而这些因素并不能全在台湾之外复制。</p>
<p>某日看到豆瓣上《海角七号》讨论中有关于两岸关系网友较为理性的讨论，不禁想到，大陆人看海角，究竟是什么程度的情感共鸣？或许是两岸现实的一个隐喻。 观众对于电影的共鸣来自于普遍人生的特质，所以我们看那些离我们很遥远的故事，陌生的语言，却仍然可能被感动呗激怒，而如果电影真正反映你我身边的生活时，它的力量则会更加明显，正如海角之余台湾观众。 而海角之于我，是那么熟悉又那么陌生，熟悉的那些我的同胞仿佛就在眼前，陌生得又仿佛他们在另一个国度。</p>
<p>我们强调台湾是中国不可分割的一部分，但不容忽视的现实是近半个世纪的对立乃至割裂，大陆与台湾的彼此了解，一度不如两个更好的邻邦，所以海角才成为一个熟悉而陌生的影像。 但是值得欣慰的是，两岸的主流文化仍然是血脉相连的，只要汉字还统治着我们，需要的是对于差异的包容以及共同进步。 如果我们看海角，共鸣很少愤怒很多，那么，是危险的，但愿不是如此。</p>
<h3 id="潜伏恍若现实">《潜伏》：恍若现实</h3>
<p><em>2009-4-15成都</em></p>
<p>1，斗智大于斗勇，有看当初看《越狱第一季》的感觉；</p>
<p>2，孙红雷长得像个坏蛋，演特工还真是别样的合适，当然这别样合适的底气来自他不断成长的演技，姚晨部分延续了郭芙蓉“二”的特征，依然优秀；</p>
<p>3，本剧一定程度上演示了一个组织是如何在内部溃乱、消耗直至崩坏，每每余则成干的“好事”都被自然而然的转嫁到国民党内部人士身上；</p>
<p>4，每个人都是戴着面具生活的，而余则成的面具是多层的，首先要有游走官场的面具，然后才是潜伏者的面具；</p>
<p>5，本剧的热播说明了这个缺乏信仰的时代的人们其实是渴望信仰的，然而信仰不是画饼，余则成由信仰爱情到信仰新生的力量，其反作用力来自于对现实环境的极度了解后的极度失望；</p>
<p>6，剧中的职场斗争是中国“伟大智慧”厚黑学的典型演绎，只是这一切促成的是一个“背叛者”的成功；</p>
<p>7，结局部分，在新中国成立的热切声音中，接头人略显冰冷的声音告知余则成入党成功但再也见不到自己的爱人，孙红雷在此“我会奋斗终生的”念白显得有些飘渺，或许这是一个别样合适的结尾；</p>
<p>8，一切恍若现实。</p>
<h3 id="疯狂的赛车看你会抄不会抄巧合到死暗含心酸">《疯狂的赛车》：看你会抄不会抄——巧合到死，暗含心酸</h3>
<p><em>2009-2-2成都</em></p>
<p>小时候写作文，妈妈教我多多读书看报，因为“天下文章一大抄，看你会抄不会抄”；后来写代码，老师教我们多读源码，因为“天下代码一大抄，看你会抄不会抄”。那么看过《疯狂的石头》，再按豆瓣的推荐看过《两杆大烟枪》，然后不小心看过一堆往“石头”的生财之道靠拢的粗制乱造，最后到欣赏宁浩的“二度疯狂”，我得出一个无甚技术含量的结论：“天下电影一大抄，看你会抄不会抄”。而显然，宁浩属于会抄的。</p>
<p>对于这种调调的电影，可以用“巧合到死”来概括：分成几小撮的人物，复杂尖锐的利益冲突，无所不在的巧合，“多行不义必自毙”的结局。巧合是文艺作品的常用乃至必备要素，但常常也是导致俗套的罪魁祸首，而把巧合用到泛滥却不显得牵强就考验编剧的功力了。而显然，《疯狂的赛车》合格了。 “巧合到死”的结构人人皆可抄袭，但在此形式背后的内容才是影片成功的正真保证。</p>
<p>《疯狂的赛车》中的人物并不是生活中常见的，有一失足成千古恨的银牌车手，买凶杀人的无良商人，等钱完婚的笨蛋杀手，爱说帅的台湾黑社会，但他们所处的环境，所说的台词又是极度生活化的。这种反差制造了只有台词结合剧情才有的“笑果”，不同于一般冯小刚的“耍贫嘴”或是周星驰的“无厘头”，宁浩让很多大陆观众接触到了一种新的喜剧形式，也导致了很多残次的跟分之作。</p>
<p>宁浩的优秀不在于使用这种新的喜剧形式，而在于他对于影片合理性及细节的追求，像我这种粗心的影迷，看第二遍影片会发现很多新的笑点。 如果仅仅是如此，那么就只是比《十全九美》强一点点，《疯狂的赛车》没有帅哥美女，没有浪漫小资，虽然人物都有黑暗的色彩，但却是一群被命运和社会无情嘲弄的小人物。我在开怀大笑的同时，不禁也为一些细节暗暗感到心酸，比如记者一窝蜂采访冠军，比如慌忙报案时要求先填表，比如有钱无钱时墓地商迥异的态度，比如主角的师傅被骗子活活气死，比如主角奇特的重返赛场。</p>
<p>如果不是巧合到死的结构，主角的际遇到结尾将是一个彻头彻尾的悲剧。这些情绪的表达结合了喜剧的形式，没有刻意渲染，但已经让我对宁浩接下来的作品产生了期待，因为他拍的喜剧不是干巴巴的笑料，这是“石头”的跟风者们的一贯特色。</p>
<h3 id="家乡的故事并非伟大母亲的故事">《家乡的故事》：并非伟大母亲的故事</h3>
<p><em>2009 年 08 月 09 日</em></p>
<p>英文片名译过来是《家乡的故事》，本片还有一个中文片名《意》，但我更愿意直接地理解叙述为一个母亲的故事。</p>
<p>《我的母亲》是个经久不衰的作文题目，或许每个中国学生多写过，但回忆我们的文字，又何曾饱含真情，那些流水线产出的八股苍白无力，从来不曾拥有温柔的力量。 但本片是个饱含真情，拥有温柔的力量的《我的母亲》，这个母亲并不是所谓平凡中蕴含伟大，甚至显得毫不称职，她曾经拥有畸生的真爱，然后游戏人间，教导孩子珍惜生命，自己却视若儿戏。</p>
<p>片中的叙述者，那个曾经幼小的男孩，曾经诅咒母亲又在母亲去世后不停地试图去理解母亲。小男孩的姐姐倒像真正的母亲，对家人倾注无私的爱。 世界不曾完美，爱也不常理智，也许理解了母亲也就理解了世界，这个命题是如此简单又是如此复杂。</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">观影</category></item><item><title>流水账2009</title><link>https://yifeitao.com/diary-2009/</link><pubDate>Thu, 31 Dec 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/diary-2009/</guid><description>&lt;p&gt;&lt;strong&gt;【2011整理按】&lt;/strong&gt;
&lt;strong&gt;2009年回归网络。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="im-really-back"&gt;I&amp;rsquo;m really back!&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2009 年 07 月 10 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;虽然我一直没有离开网络，但一直只是靠手机和这个世界保持着可谓半死不活的联系，这些日子，哀叹欢愉，一言难尽，对于一个有些活在自我世界的人来说，网络是最伟大的发明，是最亲切的家园&lt;/p&gt;
&lt;p&gt;我的朋友们，我陷入泥沼而难言，不代表我全无心肝，我回来了，咱们网上见，更希望能网下见&lt;/p&gt;
&lt;p&gt;山呼万岁，我爱互联网和你们&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论
varche
2009 年 07 月 10
Hello, YisHasEVEN, HoTTy
文艺青年未
2009 年 07 月 10
Welcome back,bab&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="开不了口"&gt;开不了口&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2009 年 07 月 31 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I have a dream that one day all the websites on the Internet will become pictures covered with word &amp;ldquo;harmonious&amp;rdquo;,than I can live a traditional live without Internet.&lt;/p&gt;
&lt;h3 id="关于blog的一点思考"&gt;关于blog的一点思考&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2009-09-10 11:01:13&lt;/em&gt;
在诸如Facebook、校内、开心等社交网络方兴未艾时，有人说blog已死，但事实上现在blog还是活的好好的。正如各种新兴媒体层出不穷，但广播电台也没有消亡一样。&lt;/p&gt;</description><content:encoded><![CDATA[<p><strong>【2011整理按】</strong>
<strong>2009年回归网络。</strong></p>
<h3 id="im-really-back">I&rsquo;m really back!</h3>
<p><em>发表于 2009 年 07 月 10 日</em></p>
<p>虽然我一直没有离开网络，但一直只是靠手机和这个世界保持着可谓半死不活的联系，这些日子，哀叹欢愉，一言难尽，对于一个有些活在自我世界的人来说，网络是最伟大的发明，是最亲切的家园</p>
<p>我的朋友们，我陷入泥沼而难言，不代表我全无心肝，我回来了，咱们网上见，更希望能网下见</p>
<p>山呼万岁，我爱互联网和你们</p>
<blockquote>
<p>评论
varche
2009 年 07 月 10
Hello, YisHasEVEN, HoTTy
文艺青年未
2009 年 07 月 10
Welcome back,bab</p>
</blockquote>
<h3 id="开不了口">开不了口</h3>
<p><em>发表于 2009 年 07 月 31 日</em></p>
<p>I have a dream that one day all the websites on the Internet will become pictures covered with word &ldquo;harmonious&rdquo;,than I can live a traditional live without Internet.</p>
<h3 id="关于blog的一点思考">关于blog的一点思考</h3>
<p><em>2009-09-10 11:01:13</em>
在诸如Facebook、校内、开心等社交网络方兴未艾时，有人说blog已死，但事实上现在blog还是活的好好的。正如各种新兴媒体层出不穷，但广播电台也没有消亡一样。</p>
<p>相对于BBS的交流作用，Blog更注重的是分享，分享知识、分享心情，而且更注重个人品牌的建立。博客写作是没有门槛，但是获得关注却是有门槛的，相比新浪名人博客的火热，草根们的博客写作渐渐失去了动力，没有人关注的博客最多可称其为网络日记。</p>
<p>社交网络及微博客的出现，彻底打败了Blog分享心情的功用，而发展良好的的Blog都走向了媒体化。实际上，Blog概念已经融入了社交网络，如RSS技术、分享的精神。可能未来的发展更多的是如何整合社交网络与个人品牌的关系。</p>
<p>在我折腾一番初步建好这个独立blog后，却发现自己很少去使用，更多的是在微博客上小唠叨几句，现在反思一下，还是因为自己没有值得与他人分享的有一定原创性的东西，而又觉得完全没有必要致力于转载而制造比特垃圾。写短短的文字，是因为思想很浮躁。</p>
<p>我想我要更加努力一些了，我会把blog当做最大的爱好之一的，因为在写作的同时也是整理自己思路的一个过程。</p>
<p>敬请期待本blog的未来。</p>
<h3 id="买电子书阅读器前的需求分析">买电子书阅读器前的需求分析</h3>
<p><em>2009-09-21 21:52:22</em></p>
<p>先跑题，我见过某同学在买相机之前列了个项目繁多的表格，一项项打分，我简直都想替他写个评估程序了。虽然我是研究零和一的人，但买东西基本是凭感觉的，而且还会被不起眼的因素诱导。话说我见过的电子书阅读器实物约为零，只是知道现在有牛X的电子墨水技术了，所以先做一番幻想，然后再去调研，说不定落差太大就没有消费欲望了，那是好事吧。</p>
<p>尺寸：太小不如玩手机，最好有一本32开本的书那么大，这才有像书的潜质，当然不是越大越好（可能吗），适合阅读是最重要的，如果是看漫画书大一点无所谓，但是满是蚂蚁的话太大就难受了。</p>
<p>屏幕：当然要用电子墨水技术，效果越像真书越好，最好是彩色的（貌似目前没有？），清晰明亮，可视角度大，不反光，耐刮，最好还打不碎（要求真高！）。</p>
<p>基本体验：翻页要流畅，载入要自然，没有重启死机，开关机迅速，方便的阅读操作和电子书管理操作。</p>
<p>搜索：可以对书进行全文搜索。</p>
<p>笔记：可以像在书上乱画一样做笔记（保存是必须的），如果只能按键输入则意义不大。</p>
<p>电子词典：看英文时可以随时屏幕取词翻译（要求BT吗）。</p>
<p>支持的格式：支持pdf是必须的，其它格式支持越多越好，但都不重要（因为可以格式转化，pdf已算最高格式）。</p>
<p>电子书来源：如果只支持正版，那么书库要很大才行，否则就支持自己随便导入（中国特色？），花钱买电子书是可以考虑，但也要有足够多的选择空间，否则想看的一本也没有，我买它作甚。</p>
<p>电源：要能坚持一整天都开机，越久越好，充电时间越短越好（又要马儿跑，又要马儿不吃草）。</p>
<p>连接：最好不装驱动连PC机，如果它够强大，也能接受专用软件，支持无线联网下载与否关系不大。</p>
<h3 id="安徽2009国际车展">安徽2009国际车展</h3>
<p><em>发表于 2009 年 10 月 03 日</em></p>
<p>昨天出去活动，顺便参观车展，结果心甘情愿心安理得的变成了主要活动，挑了几张图放出来，摄影xiaoP同学成功激起了我买单反相机的欲望</p>
<p>说个小花絮，我在参观的时候听见有个MM在下面嘀咕，这些人到底是看车还是看人啊。我的看法是，看人是顺便的，也是主要的，每张图片中都不可避免的出现车，这就是厂商启用车模的真谛</p>
<blockquote>
<p>varche
2009 年 10 月 03
那个，能否适当的增加 车的部分
Yisha
2009 年 10 月 03
不是偶拍的，不过如果是我拍的，也差不多…</p>
</blockquote>
<h3 id="电子书阅读器败家小记">电子书阅读器败家小记</h3>
<p><em>2009-10-05 20:18:29</em>
前几天说想要买电子书阅读器，并做出<a href="http://yisha7.info/2009/09/imagination-before-buy-a-ebook-reader/"
   rel="noopener noreferrer" target="_blank" class="external">幻想式需求分析</a>
，然后调查了一番，真是一种败家的产品，elink屏的生产厂家目前好像只有台湾元古一家，各家电子书阅读器厂家都是买他家的，大屏幕几乎是天价，而且选择很少，主流产品应该是6寸屏的。</p>
<p>但是，经过调查很多网友的使用体验，电子书阅读器主要带来的还是阅读方式的转变。我目前的现状是，无论工作学习还是娱乐都离不开液晶显示屏，视力上的问题已经无法补救了，但是现在又有颈椎病的兆头了，离开电脑久一点将是我接下来一段时间的追求。</p>
<p>另外很重要的一点是在电脑上似乎无法静下心来看任何东西，经常会被超链接骗到不知云里雾里去也，我知道这是缺乏自制力的表现，但实在无奈。连用手机看文章都要认真许多，但是手机看东西实在太伤神了。以前没有电脑的时候，阅读量也许没有现在大，但阅读的效果却是很好的，真正沉淀了东西，现在阅读量大了，但都是过眼云烟。</p>
<p>由于屏幕大小限制，不指望它能看多少论文了，如果能让我离开电脑久一点，然后静下心了读一点东西，就值了。是的，说了这么多，都是在找借口，重要的是，我狠心下单，国庆败家了。买的是新产品Boox 60，官网<a href="http://www.onyx-international.com/cn/"
   rel="noopener noreferrer" target="_blank" class="external">看这里</a>
，评测报告看<a href="http://www.mobread.com/evaluating/2009538.html"
   rel="noopener noreferrer" target="_blank" class="external">这里</a>
，因为它基本符合了我的想象，而且是一家有朝气的公司，软件应该会不断升级，而且未来会开放API。</p>
<p>在购买前，到论坛里咨询了一番，简单整理如下。</p>
<p>以下是咨询的问题：</p>
<ol>
<li>
<p>目前6寸的屏幕大小是否能方便的阅读pdf的英文论文，比如那种排成两大列的论文，有没哪位大侠用6寸的阅读器读完过较长的英文论文的，主要是想听听大虾们的使用感受，我知道看肯定能看，但如果体验不好只能拿来看小说就悲剧了一半</p>
</li>
<li>
<p>关于boox电子辞典功能，和金山词霸在电脑上的使用体验有什么差别，是否支持即指即译，或支持划词翻译，还是必须手动输入，另外取词速度如何，是否干扰阅读</p>
</li>
<li>
<p>不开什么MP3功能（我觉得鸡肋）充电一次能用多长时间</p>
</li>
<li>
<p>关于网络浏览器：用的是什么内核（Webkit？），是否支持Javascript（关系到是否能用Google Reader之类的）？未来是否可能推出RSS阅读器</p>
</li>
<li>
<p>关于标注：标注是否能保存，如果能保存保存为什么形式，比如pdf的标注在pdf文件再次导回电脑时还存在吗？有没有可能在一屏上写大约20个汉字的标注还是只能画画横线之类的</p>
</li>
<li>
<p>关于手写输入：反应速度如何？是否支持文字识别</p>
</li>
</ol>
<p>以下是回答：</p>
<ol>
<li>
<p>第一批收到机器的用户时间并不长，估计都在研究中，真正已经看完一篇很长论文的估计也不现实。关于双栏及单栏英文PDF，你可以参见<a href="http://bbs.mobread.com/thread-4626-1-1.html"
   rel="noopener noreferrer" target="_blank" class="external">这里</a>
，这里是用户提交的测试文件，基本各类情况都有出现，你可以下载原文件对比。</p>
</li>
<li>
<p>电子词典，boox 60使用的是stardicts开源词典，系统内置了主程序，而词典需要用户自已去根据需要下载，本版置顶贴 里有一些常用的词典下载。基本使用方法及效果可以参见<a href="http://www.mobread.com/guide/skill/2009568.html"
   rel="noopener noreferrer" target="_blank" class="external">这里</a>
。取词不是点，是用笔在单词上划一下，表示选中，如果词库中存在该单词，则会显示出来。关于取词速度方面，由于词典是装在SD卡上的，这和SD卡的速度，词库的大小有一定的关系，也可以将词典安装集成到系统里，增加速度。关于如何将词典安装到系统里，可以参考<a href="http://www.mobread.com/guide/skill/2009569.html"
   rel="noopener noreferrer" target="_blank" class="external">这篇文章</a>
个人是使用创见的6类SD卡安装的词典，测试下来的结果还是比较快的，但是使用字典文件的不同，发现一些单词无法翻译出来</p>
</li>
<li>
<p>不听MP3，还有是否使用WIFI上网，全屏手写是否一直使用，这些都是比较耗电的项目。不刻意省电的话，正常使用3天以上应该不是问题，这个还需要用户来说比较好。同时，官方也正在进一步对电源管理进行优化</p>
</li>
<li>
<p>批注以单独方式保存，并未和原文件合并，所以导回电脑以后，批注肯定不会存在。批注是用笔写的，你能划线就能写字，字由线条组成，所以写字不是问题</p>
</li>
<li>
<p>浏览器内核使用的是webkit。未来是否支持RSS订阅，这个也需要官方才能回答。但是官方已经宣布开放SDK，我相信以后会有第三方的爱好者开发 类似的程序。目前测试下来，应该是支持javescript的，因为用boox访问一路书香网，那些通过javescript调用的东西都能正常显示，上新浪网也没有问题 。无法访问google reader，因为google reader有安全认证</p>
</li>
<li>
<p>手写输入方面，目前boox 60只支持英文输入和识别。还不支持中文的输入的识别，中文识别据悉会在下一次更新时提供。</p>
</li>
</ol>
<h3 id="自杀是病讣告是什么">自杀是病，讣告是什么？</h3>
<p><em>2009-10-24 12:45:09</em></p>
<p>浙大海龟博士自杀的事，最近是沸沸扬扬，等我知道时，已爆报出了据说是浙大发的讣告的奇文。</p>
<p>现在被大家集中鄙视有两个原因，一是无耻，二是无才。</p>
<p>对于涂序新自杀的原因，看了一些所谓的分析文章，基本上仍是一团雾水。我想这篇奇特的讣告其实说对了一点，那就是被网上集中火力骂为无耻的“因病坠楼”。我想自杀确实是一种病（医学界貌似也有此观点，未深究），人人都可能患这种病，无论你是他人眼中的成功者还是失败者，是自信的人还是自卑的人，只不过当自杀的是一个海归博士时，人们自然问得多一点，生命是平等的，但在人们的关注度上不是。</p>
<p>国内的科研体制的弊病是客观存在，但也不至于就令人要去自杀，我想这只是个个案，每天试图自杀的人不知有多少，又有几个会引起广泛的关注，说到底，关注的仍然是那个海归博士的头衔。</p>
<p>这篇讣告真正奇特的地方在于它想要达到的功用，想必浙大被这件事弄得焦头烂额，不知是哪个蠢货在讣告里也要辩解一番，你看，我们给他的待遇有多好！直接给人造成了一种此地无银三百两的感觉。</p>
<p>即使浙大在涂序新博士的自杀中，没有任何责任，也完全没必要如此辩解的，基于对生命的基本尊重，死者为大的古礼也应当遵守。</p>
<p>现在好了，人人都认为浙大背地里干了对不起死者的勾当了。这是对生命和死者缺乏基本尊重的自食苦果。</p>
<p>好死不如赖活，以此在不易的生活中共勉。</p>
<h3 id="11111111">11111111</h3>
<p><em>发表于 2009 年 11 月 11 日</em></p>
<p>预定在这个时间发贴是个无奈的趣味，好好学习好好娱乐的人突然一天意识到应该找个女人的时候，感觉自己已经被排除在围城之外了，快乐的光棍会变成一种矫情的说辞吗</p>
<p>“你不应该早恋”到“你应该找个女朋友了”，不是世界变化太快，而是自己太迟钝。《单身情歌》听着不错，但他妈的透着一股丧气，还是跳脱通达一些的好</p>
<p>这是第一次在11111111发贴，看还有几次，呵呵。</p>
<h3 id="感恩节瞎凑个热闹">感恩节瞎凑个热闹</h3>
<p><em>发表于 2009 年 11 月 25 日</em></p>
<p>发挥一下中国人爱过节的传统，凑个热闹，被外教填鸭了一点感恩节知识，成果是题图中的火鸡，好久没有画画了的说（画外音：这算么）。鸡翅膀上感谢的东西是随手写的</p>
<p>Food，好好想想该感谢谁赐予我食物呢</p>
<p>Parents，父母在，不言老。长大以后和父母一起的日子是其实可以用日计的</p>
<p>Peace，稳态高压锅，奢侈品</p>
<p>Internet，杨永信教主最爱，八爪鱼。题图拍摄背景，某著名概念性网站。</p>
<h3 id="2009">2009</h3>
<p><em>发表于 2009 年 12 月 31 日</em></p>
<p>2009 ，对自己和自己所生活的国度，用四个字总结：黑色幽默。</p>
]]></content:encoded><category>life</category><category domain="tags">年度总结</category><category domain="tags">生活</category></item><item><title>片段</title><link>https://yifeitao.com/pieces/</link><pubDate>Thu, 31 Dec 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/pieces/</guid><description>&lt;h3 id="蓝心"&gt;蓝心&lt;/h3&gt;
&lt;p&gt;纸飞机还在昨天&lt;/p&gt;
&lt;p&gt;墨水染蓝的心&lt;/p&gt;
&lt;p&gt;却想要老去粉碎的纸片&lt;/p&gt;
&lt;p&gt;发酵的时间四溅的水花 散落的雨滴&lt;/p&gt;
&lt;p&gt;气愤的空气&lt;/p&gt;
&lt;p&gt;凝结不出爱意&lt;/p&gt;
&lt;h3 id="才能"&gt;才能&lt;/h3&gt;
&lt;p&gt;——我会汇编、C、C++、C#、Java、PHP、Python、Lisp……&lt;/p&gt;
&lt;p&gt;——哦，牛。&lt;/p&gt;
&lt;p&gt;——我会钢琴、吉他、萨克斯、二胡、笛子、架子鼓……&lt;/p&gt;
&lt;p&gt;——才子！才子！&lt;/p&gt;
&lt;h3 id="星座"&gt;星座&lt;/h3&gt;
&lt;p&gt;你相信星座吗？&lt;/p&gt;
&lt;p&gt;我是金牛座的！&lt;/p&gt;
&lt;h3 id="云与光"&gt;云与光&lt;/h3&gt;
&lt;p&gt;我看见云层中泄下的一束光&lt;/p&gt;
&lt;p&gt;我的世界无法被点亮&lt;/p&gt;
&lt;p&gt;我的心在追逐错误的方向&lt;/p&gt;
&lt;p&gt;我的心在追逐错误的方向&lt;/p&gt;
&lt;p&gt;我的世界无法被点亮&lt;/p&gt;
&lt;p&gt;我看见云层中泄下的一束光&lt;/p&gt;
&lt;h3 id="反对"&gt;反对&lt;/h3&gt;
&lt;p&gt;人民是不会反对我的；&lt;/p&gt;
&lt;p&gt;反对我的都不是人民。&lt;/p&gt;
&lt;h3 id="瞬间传送是我最期待的技术"&gt;瞬间传送是我最期待的技术&lt;/h3&gt;
&lt;p&gt;因为我的所有乘坐交通工具的经历，几乎都写着痛苦，即使我用注意旅途风景的伟大精神麻痹自己，但是面对火车上蝼蚁般的人群，还是境界太低，萌生的往往是负面的情绪。火车上卖了站票卖小板凳，花了一样钱的站着的人眼巴巴的看着有座位的人，有座位的人做得浑身酸痛想着躺着的人，躺着的人翻不了身。&lt;/p&gt;</description><content:encoded><![CDATA[<h3 id="蓝心">蓝心</h3>
<p>纸飞机还在昨天</p>
<p>墨水染蓝的心</p>
<p>却想要老去粉碎的纸片</p>
<p>发酵的时间四溅的水花 散落的雨滴</p>
<p>气愤的空气</p>
<p>凝结不出爱意</p>
<h3 id="才能">才能</h3>
<p>——我会汇编、C、C++、C#、Java、PHP、Python、Lisp……</p>
<p>——哦，牛。</p>
<p>——我会钢琴、吉他、萨克斯、二胡、笛子、架子鼓……</p>
<p>——才子！才子！</p>
<h3 id="星座">星座</h3>
<p>你相信星座吗？</p>
<p>我是金牛座的！</p>
<h3 id="云与光">云与光</h3>
<p>我看见云层中泄下的一束光</p>
<p>我的世界无法被点亮</p>
<p>我的心在追逐错误的方向</p>
<p>我的心在追逐错误的方向</p>
<p>我的世界无法被点亮</p>
<p>我看见云层中泄下的一束光</p>
<h3 id="反对">反对</h3>
<p>人民是不会反对我的；</p>
<p>反对我的都不是人民。</p>
<h3 id="瞬间传送是我最期待的技术">瞬间传送是我最期待的技术</h3>
<p>因为我的所有乘坐交通工具的经历，几乎都写着痛苦，即使我用注意旅途风景的伟大精神麻痹自己，但是面对火车上蝼蚁般的人群，还是境界太低，萌生的往往是负面的情绪。火车上卖了站票卖小板凳，花了一样钱的站着的人眼巴巴的看着有座位的人，有座位的人做得浑身酸痛想着躺着的人，躺着的人翻不了身。</p>
]]></content:encoded><category>life</category><category domain="tags">片段</category><category domain="tags">思考</category></item><item><title>先入为主的悲喜二重奏</title><link>https://yifeitao.com/forever-road/</link><pubDate>Mon, 21 Dec 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/forever-road/</guid><description>&lt;p&gt;曾轶可的创作专辑《Forever Road》于2009年12月18日发布，在豆瓣的评论风向已然有转变的态势，升上了本周口碑榜第二位。毕竟，好作品摆在这里，群众可以不明真相一时，但 终归还是眼睛雪亮的。&lt;/p&gt;
&lt;p&gt;目前的风评大致可以分为四类：&lt;/p&gt;
&lt;p&gt;1，照单全收型：“好好听哦，好感动哦，每一首都好喜欢。&lt;/p&gt;
&lt;p&gt;这叫无条件的喜欢，俗称铁粉。如罗永浩所说，这种人可以不予考虑，反正他们对曾轶可的喜欢已经由某个感动点扩散，区区编曲风格，适应起来不在 话下。&lt;/p&gt;
&lt;p&gt;2，孜孜不倦型：“录音室无敌，改天我也出专辑。”“要考试了，你知道的。&lt;/p&gt;
&lt;p&gt;曾轶可发挥不稳的现场表现给了录音室万能论者以口实，当然他们不会愿意去了解曾轶可是否真的有进步，这或许就是曾轶可不成熟的demo表演暴 露在大众面前的负面效应。录音室万能论者认为曾轶可可以出专辑，则人人皆可出专辑，这显然是一厢情愿的认识&lt;/p&gt;
&lt;p&gt;至于整天叫曾哥的恶意酱油党或四六级无能者，人数众多，只送他们一句话：自己生个女儿叫哥玩儿去吧。还有纠结于曾轶可与芙蓉王关系的，不提也 罢。&lt;/p&gt;
&lt;p&gt;3，一不小心型：“完了&amp;hellip;我居然觉得很好听。”“悲剧啊，我想买正版了&lt;/p&gt;
&lt;p&gt;他们抱着好奇甚至审丑的心态下载专辑来听，一不小心却发现打动了自己。据说人抱着鄙视的“美好愿望”下载，然后一天听了N遍的《Good Night》，难以自拔。有人开玩笑说：期待全体地下党曾粉迎来解放的一天。是啊，听曾轶可是要被鄙视的，如果不是内心强大，只好塞着耳机悄悄进行了。感 叹远一点：这真是个听歌口味都要标准答案的国度。&lt;/p&gt;
&lt;p&gt;4，自我纠结型：“高晓松去死！&lt;/p&gt;
&lt;p&gt;这是骂得比较恶毒的，还有许多不那么恶毒的，但中心思想都是：我宁愿去听曾轶可的demo或者比赛现场，也不要听这些所谓的编曲。甚至有人说 这专辑把黑变成粉，把粉变成黑&lt;/p&gt;
&lt;p&gt;对于这种争议，曾轶可本人认识得很清楚，以下是她在网易的采访中的一段回答：“我也看了一下，其实都是合理的，（与之前预料的）没有太大的分 歧，也许失望的是曲风，也许是比赛的时候，听了我弹吉他习惯之后，有一种先入为主的感觉，所以最后听到编曲之后就是他所说的“失望”。但是我觉得失望就是 慢慢去习惯，要去听一下，可能会有新的收获，比如说新歌就不会出现这种情况。“&lt;/p&gt;
&lt;p&gt;我们观察一下值得讨论的后两类人，就会发现这是个先入为主的悲喜二重奏。先前不喜欢甚至意欲鄙视的人因为被“大众”（其实我觉得是一部分无聊 的“正义人士”被包小柏挑逗而爆发）意见胁裹，而误将曾轶可彻底当成审丑的对象，但在精美包装下终于发现了曾轶可作品难以忽视的亮点。而对编曲不满的人大 多是从听到曾轶可的一刻起就深陷其中，不知将那些一般人听来“难以忍受”的版本循环过了多少遍，所以心里默认那会是最好的版本。&lt;/p&gt;
&lt;p&gt;我个人认为真正算的上失败的只有《你是我最好的朋友》的编曲，其他的多听几遍其实都有新的有趣的味道。虽然未能完全表达自己的意见，但曾轶可 确实全程参与了编曲，对高晓松老师过于苛求就是对小曾的不公平了。当然，我也很期待有她自己完全掌控专辑那一天的到来。&lt;/p&gt;
&lt;p&gt;广告词写得真好：争议终将过去，只有感动，能落地生根。&lt;/p&gt;
&lt;p&gt;我知道，有第二类人在，争议过去不了，但毕竟，我们看到了感动正在落地生根。&lt;/p&gt;
&lt;p&gt;本文首发&lt;a href="http://www.douban.com/review/2877860/"
rel="noopener noreferrer" target="_blank" class="external"&gt;豆瓣&lt;/a&gt;
&lt;/p&gt;</description><content:encoded><![CDATA[<p>曾轶可的创作专辑《Forever Road》于2009年12月18日发布，在豆瓣的评论风向已然有转变的态势，升上了本周口碑榜第二位。毕竟，好作品摆在这里，群众可以不明真相一时，但 终归还是眼睛雪亮的。</p>
<p>目前的风评大致可以分为四类：</p>
<p>1，照单全收型：“好好听哦，好感动哦，每一首都好喜欢。</p>
<p>这叫无条件的喜欢，俗称铁粉。如罗永浩所说，这种人可以不予考虑，反正他们对曾轶可的喜欢已经由某个感动点扩散，区区编曲风格，适应起来不在 话下。</p>
<p>2，孜孜不倦型：“录音室无敌，改天我也出专辑。”“要考试了，你知道的。</p>
<p>曾轶可发挥不稳的现场表现给了录音室万能论者以口实，当然他们不会愿意去了解曾轶可是否真的有进步，这或许就是曾轶可不成熟的demo表演暴 露在大众面前的负面效应。录音室万能论者认为曾轶可可以出专辑，则人人皆可出专辑，这显然是一厢情愿的认识</p>
<p>至于整天叫曾哥的恶意酱油党或四六级无能者，人数众多，只送他们一句话：自己生个女儿叫哥玩儿去吧。还有纠结于曾轶可与芙蓉王关系的，不提也 罢。</p>
<p>3，一不小心型：“完了&hellip;我居然觉得很好听。”“悲剧啊，我想买正版了</p>
<p>他们抱着好奇甚至审丑的心态下载专辑来听，一不小心却发现打动了自己。据说人抱着鄙视的“美好愿望”下载，然后一天听了N遍的《Good Night》，难以自拔。有人开玩笑说：期待全体地下党曾粉迎来解放的一天。是啊，听曾轶可是要被鄙视的，如果不是内心强大，只好塞着耳机悄悄进行了。感 叹远一点：这真是个听歌口味都要标准答案的国度。</p>
<p>4，自我纠结型：“高晓松去死！</p>
<p>这是骂得比较恶毒的，还有许多不那么恶毒的，但中心思想都是：我宁愿去听曾轶可的demo或者比赛现场，也不要听这些所谓的编曲。甚至有人说 这专辑把黑变成粉，把粉变成黑</p>
<p>对于这种争议，曾轶可本人认识得很清楚，以下是她在网易的采访中的一段回答：“我也看了一下，其实都是合理的，（与之前预料的）没有太大的分 歧，也许失望的是曲风，也许是比赛的时候，听了我弹吉他习惯之后，有一种先入为主的感觉，所以最后听到编曲之后就是他所说的“失望”。但是我觉得失望就是 慢慢去习惯，要去听一下，可能会有新的收获，比如说新歌就不会出现这种情况。“</p>
<p>我们观察一下值得讨论的后两类人，就会发现这是个先入为主的悲喜二重奏。先前不喜欢甚至意欲鄙视的人因为被“大众”（其实我觉得是一部分无聊 的“正义人士”被包小柏挑逗而爆发）意见胁裹，而误将曾轶可彻底当成审丑的对象，但在精美包装下终于发现了曾轶可作品难以忽视的亮点。而对编曲不满的人大 多是从听到曾轶可的一刻起就深陷其中，不知将那些一般人听来“难以忍受”的版本循环过了多少遍，所以心里默认那会是最好的版本。</p>
<p>我个人认为真正算的上失败的只有《你是我最好的朋友》的编曲，其他的多听几遍其实都有新的有趣的味道。虽然未能完全表达自己的意见，但曾轶可 确实全程参与了编曲，对高晓松老师过于苛求就是对小曾的不公平了。当然，我也很期待有她自己完全掌控专辑那一天的到来。</p>
<p>广告词写得真好：争议终将过去，只有感动，能落地生根。</p>
<p>我知道，有第二类人在，争议过去不了，但毕竟，我们看到了感动正在落地生根。</p>
<p>本文首发<a href="http://www.douban.com/review/2877860/"
   rel="noopener noreferrer" target="_blank" class="external">豆瓣</a>
</p>
]]></content:encoded><category>life</category><category domain="tags">音乐</category><category domain="tags">感悟</category></item><item><title>Shapley公平三原则与剩余价值</title><link>https://yifeitao.com/sharpley-value-and-surplus-value/</link><pubDate>Sun, 29 Nov 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/sharpley-value-and-surplus-value/</guid><description>&lt;p&gt;Shapley公平三原则，大致可概括为&amp;quot;同工同酬，不劳不获，多劳多得&amp;quot;，由此通过一定的形式化得到的结论大致可理解为“每个成员的分配值是其给该团队带来的边际利润的期望值”，再说得白一点就是你平均能给团队带来多大的利润。&lt;/p&gt;
&lt;p&gt;由这个无论如何看起来都公平的理论，我们可以发现当工人几乎注定要被资本家“剥削”。考虑一个简单的情形，你开了一个小工厂，开始的时候只有你自己干活，一年挣2万块钱，后来雇了一个工人，一年挣了3万块钱，，如果平均分配是每人1.5万，但这样你会觉得还不如不雇人，所以大锅饭是没有前途的，如果把多来的1万快都给工人，你可能还是觉得多此一举，一个隐含的事实是，在这个团队里，如果没有你，你的雇工一分钱都挣不到，所以他的期望值实际上应该是1万的一半，最后的分配结果应该是2.5万：0.5万。如果再请一个工人后，一年挣了4万，根据同工同酬原则，新来的也只能分0.5万，而你可以一年挣3万了。资本家的道路由此开始了。&lt;/p&gt;
&lt;p&gt;这个例子告诉我们的道理是，如果你要依靠别人才能挣钱，是一定赚不到多少钱的，只有成为稀缺资源（比如掌握一般人没有的技术成为团队不可缺少的成员）才能得到更多的分配。&lt;/p&gt;
&lt;p&gt;在通常的理解中，工人为工厂带来了1万元的收益，得到的工资却只有0.5万元，所以被剥削了0.5万元的剩余价值。可是市场经济其实隐含遵循的是Shapley公平三原则，说白一点就是不能多挣钱，资本家是不会雇用工人的。&lt;/p&gt;
&lt;p&gt;其实真正在数学上都不公平的是试图打破&amp;quot;同工同酬，不劳不获，多劳多得&amp;quot;原则的行为，历史与现实都证明搞特权或搞绝对公平是损害劳动积极性的。&lt;/p&gt;
&lt;p&gt;个人认为有两个更重要的非数学的公平问题。一是教育的公平，这是起点的公平，使你能在参与团队合作时能够成为稀缺资源的关键，而一旦在这里发生了不公平，则会使得穷人没有翻身之日；二是福利的公平，基于合作与竞争的分配尽管体现了一定的公平性，但不可忽视福利的必要性，这是跳出一个团队（如公司）来看待一个人的价值，人道主义的扶助背后还有着社会整体稳定前进的客观需要。&lt;/p&gt;
&lt;p&gt;【参考文献】&lt;/p&gt;
&lt;p&gt;&lt;a href="http://w3.math.sinica.edu.tw/mathmedia/pdf_a.jsp?m_file=ZDE2My8xNjMwOA=="
rel="noopener noreferrer" target="_blank" class="external"&gt;谈公平&lt;/a&gt;
&lt;/p&gt;</description><content:encoded><![CDATA[<p>Shapley公平三原则，大致可概括为&quot;同工同酬，不劳不获，多劳多得&quot;，由此通过一定的形式化得到的结论大致可理解为“每个成员的分配值是其给该团队带来的边际利润的期望值”，再说得白一点就是你平均能给团队带来多大的利润。</p>
<p>由这个无论如何看起来都公平的理论，我们可以发现当工人几乎注定要被资本家“剥削”。考虑一个简单的情形，你开了一个小工厂，开始的时候只有你自己干活，一年挣2万块钱，后来雇了一个工人，一年挣了3万块钱，，如果平均分配是每人1.5万，但这样你会觉得还不如不雇人，所以大锅饭是没有前途的，如果把多来的1万快都给工人，你可能还是觉得多此一举，一个隐含的事实是，在这个团队里，如果没有你，你的雇工一分钱都挣不到，所以他的期望值实际上应该是1万的一半，最后的分配结果应该是2.5万：0.5万。如果再请一个工人后，一年挣了4万，根据同工同酬原则，新来的也只能分0.5万，而你可以一年挣3万了。资本家的道路由此开始了。</p>
<p>这个例子告诉我们的道理是，如果你要依靠别人才能挣钱，是一定赚不到多少钱的，只有成为稀缺资源（比如掌握一般人没有的技术成为团队不可缺少的成员）才能得到更多的分配。</p>
<p>在通常的理解中，工人为工厂带来了1万元的收益，得到的工资却只有0.5万元，所以被剥削了0.5万元的剩余价值。可是市场经济其实隐含遵循的是Shapley公平三原则，说白一点就是不能多挣钱，资本家是不会雇用工人的。</p>
<p>其实真正在数学上都不公平的是试图打破&quot;同工同酬，不劳不获，多劳多得&quot;原则的行为，历史与现实都证明搞特权或搞绝对公平是损害劳动积极性的。</p>
<p>个人认为有两个更重要的非数学的公平问题。一是教育的公平，这是起点的公平，使你能在参与团队合作时能够成为稀缺资源的关键，而一旦在这里发生了不公平，则会使得穷人没有翻身之日；二是福利的公平，基于合作与竞争的分配尽管体现了一定的公平性，但不可忽视福利的必要性，这是跳出一个团队（如公司）来看待一个人的价值，人道主义的扶助背后还有着社会整体稳定前进的客观需要。</p>
<p>【参考文献】</p>
<p><a href="http://w3.math.sinica.edu.tw/mathmedia/pdf_a.jsp?m_file=ZDE2My8xNjMwOA=="
   rel="noopener noreferrer" target="_blank" class="external">谈公平</a>
</p>
]]></content:encoded><category>life</category><category domain="tags">经济学</category><category domain="tags">数学</category></item><item><title>Ubuntu9.10 Firefox 使用Tor上网七步傻瓜配置</title><link>https://yifeitao.com/ubuntu-tor/</link><pubDate>Tue, 17 Nov 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/ubuntu-tor/</guid><description>&lt;h3 id="s1添加软件源"&gt;S1：添加软件源&lt;/h3&gt;
&lt;p&gt;系统——系统管理——软件源——其他软件——添加&lt;/p&gt;
&lt;p&gt;deb &lt;a href="http://deb.torproject.org/torproject.org"
rel="noopener noreferrer" target="_blank" class="external"&gt;http://deb.torproject.org/torproject.org&lt;/a&gt;
karmic main&lt;/p&gt;
&lt;h3 id="s2注册软件源"&gt;S2：注册软件源&lt;/h3&gt;
&lt;p&gt;终端运行&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gpg --keyserver keys.gnupg.net --recv 886DDD89
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="s3安装软件"&gt;S3：安装软件&lt;/h3&gt;
&lt;p&gt;终端运行&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt-get install tor tor-geoipdb vidalia&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;或者用新立得安装tor tor-geoipdb vidalia&lt;/p&gt;
&lt;h3 id="s4获取网桥"&gt;S4：获取网桥&lt;/h3&gt;
&lt;p&gt;致信到bridges@torproject.org，强烈建议使用Gmail发信，信件标题为get bridges。&lt;/p&gt;
&lt;h3 id="s5配置vidalia"&gt;S5：配置Vidalia&lt;/h3&gt;
&lt;p&gt;设定——网络——我的ISP阻挡了我对Tor网络的连接&lt;/p&gt;
&lt;p&gt;将S4获取的地址添加上去&lt;/p&gt;
&lt;h3 id="s6配置firefox"&gt;S6：配置Firefox&lt;/h3&gt;
&lt;p&gt;安装插件FoxyProxy。&lt;/p&gt;
&lt;h3 id="s7配置foxyproxy"&gt;S7：配置FoxyProxy&lt;/h3&gt;
&lt;p&gt;文件——Tor向导，一路Next即可。然后添加需要使用Tor访问的网址,如*.torproject.com/&lt;em&gt;，&lt;/em&gt;.blogspot.com/*等等。&lt;/p&gt;
&lt;h3 id="使用中的问题"&gt;使用中的问题&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;访问https://check.torproject.org/测试是否成功使用Tor网络。可能需要重启系统。&lt;/li&gt;
&lt;li&gt;Viadalia对已经运行的Tor无法加载，只能是一起启动，否则会报错说端口被占用，这时候可以终端运行 sudo kill all tor 先结束Tor的运行，再启动Viadalia。&lt;/li&gt;
&lt;li&gt;软件运行都正常，但还是很难连上Tor网络，可能需要添加更多更新的网桥，可再次发信获取。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<h3 id="s1添加软件源">S1：添加软件源</h3>
<p>系统——系统管理——软件源——其他软件——添加</p>
<p>deb <a href="http://deb.torproject.org/torproject.org"
   rel="noopener noreferrer" target="_blank" class="external">http://deb.torproject.org/torproject.org</a>
 karmic main</p>
<h3 id="s2注册软件源">S2：注册软件源</h3>
<p>终端运行</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>gpg --keyserver keys.gnupg.net --recv 886DDD89
</span></span><span style="display:flex;"><span>gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -</span></span></code></pre></div>
<h3 id="s3安装软件">S3：安装软件</h3>
<p>终端运行</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>apt-get update
</span></span><span style="display:flex;"><span>apt-get install tor tor-geoipdb vidalia</span></span></code></pre></div>
<p>或者用新立得安装tor tor-geoipdb vidalia</p>
<h3 id="s4获取网桥">S4：获取网桥</h3>
<p>致信到bridges@torproject.org，强烈建议使用Gmail发信，信件标题为get bridges。</p>
<h3 id="s5配置vidalia">S5：配置Vidalia</h3>
<p>设定——网络——我的ISP阻挡了我对Tor网络的连接</p>
<p>将S4获取的地址添加上去</p>
<h3 id="s6配置firefox">S6：配置Firefox</h3>
<p>安装插件FoxyProxy。</p>
<h3 id="s7配置foxyproxy">S7：配置FoxyProxy</h3>
<p>文件——Tor向导，一路Next即可。然后添加需要使用Tor访问的网址,如*.torproject.com/<em>，</em>.blogspot.com/*等等。</p>
<h3 id="使用中的问题">使用中的问题</h3>
<ol>
<li>访问https://check.torproject.org/测试是否成功使用Tor网络。可能需要重启系统。</li>
<li>Viadalia对已经运行的Tor无法加载，只能是一起启动，否则会报错说端口被占用，这时候可以终端运行 sudo kill all tor 先结束Tor的运行，再启动Viadalia。</li>
<li>软件运行都正常，但还是很难连上Tor网络，可能需要添加更多更新的网桥，可再次发信获取。</li>
</ol>
]]></content:encoded><category>geek</category><category domain="tags">Linux</category><category domain="tags">隐私</category><category domain="tags">网络</category></item><item><title>虚拟打印机法pdg转pdf</title><link>https://yifeitao.com/how-to-convert-pdg-to-pdf/</link><pubDate>Mon, 09 Nov 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/how-to-convert-pdg-to-pdf/</guid><description>&lt;p&gt;注意，pdg文件是有版权的，所以才有种种限制。但是超星阅读器用起来不方便，而且只能在windows系统下使用，所以进行一定的crack也是无奈之举。&lt;/p&gt;
&lt;p&gt;pdg文件的加密方法一直有在升级，所以完全破解是不容易的，甚至还有人卖pdg文件的破解软件，对此本人深表无语。这里介绍Windows系统下一个简单的使用虚拟打印机转pdg为pdf的方法，但是前提是你拥有该文件的打印权限。&lt;/p&gt;
&lt;p&gt;以下操作仅供测试用，据此操作法律风险自负。more&lt;/p&gt;
&lt;h2 id="一安装一款虚拟打印机"&gt;一、安装一款虚拟打印机&lt;/h2&gt;
&lt;p&gt;虚拟打印机软件种类不少，推荐安装&lt;a href="http://www.pdfforge.org/"
rel="noopener noreferrer" target="_blank" class="external"&gt;PDFCreator&lt;/a&gt;
，可以将任意可打印的文件转换成pdf文件，善用佳软对此有详细介绍，可以参考&lt;a href="http://xbeta.info/pdfcreator.htm"
rel="noopener noreferrer" target="_blank" class="external"&gt;这里&lt;/a&gt;
。&lt;/p&gt;
&lt;h2 id="二修改虚拟打印机名"&gt;二、修改虚拟打印机名&lt;/h2&gt;
&lt;p&gt;在装好PDFCreator后，需要在控制面板的打印机设置中对其名称做修改，比如我的改成了HP LaserJet 4LC，这是因为超星阅读器好像会检测打印机，对虚拟打印机没反应，只好冒充一下惠普了。&lt;/p&gt;
&lt;h2 id="三突破打印数限制"&gt;三、突破打印数限制&lt;/h2&gt;
&lt;p&gt;超星阅读器一般会有打印数限制，每个月不超过多少张之类的。网上流传有一个很简单的修改程序二进制文件的破解方法：  使用二进制编辑软件（如 UltraEdit-32 ）打开 SsReader.exe 文件，搜索 750D8B0764A3 ，将搜索到的750D8B0764A3中的0D改为2A 。&lt;/p&gt;
&lt;h2 id="四打印"&gt;四、打印&lt;/h2&gt;
&lt;p&gt;在超星阅读器中使用改名后的虚拟打印机打印所需文件即可。&lt;/p&gt;
&lt;p&gt;【2009年11月9日/2010年9月26日】&lt;/p&gt;</description><content:encoded><![CDATA[<p>注意，pdg文件是有版权的，所以才有种种限制。但是超星阅读器用起来不方便，而且只能在windows系统下使用，所以进行一定的crack也是无奈之举。</p>
<p>pdg文件的加密方法一直有在升级，所以完全破解是不容易的，甚至还有人卖pdg文件的破解软件，对此本人深表无语。这里介绍Windows系统下一个简单的使用虚拟打印机转pdg为pdf的方法，但是前提是你拥有该文件的打印权限。</p>
<p>以下操作仅供测试用，据此操作法律风险自负。more</p>
<h2 id="一安装一款虚拟打印机">一、安装一款虚拟打印机</h2>
<p>虚拟打印机软件种类不少，推荐安装<a href="http://www.pdfforge.org/"
   rel="noopener noreferrer" target="_blank" class="external">PDFCreator</a>
，可以将任意可打印的文件转换成pdf文件，善用佳软对此有详细介绍，可以参考<a href="http://xbeta.info/pdfcreator.htm"
   rel="noopener noreferrer" target="_blank" class="external">这里</a>
。</p>
<h2 id="二修改虚拟打印机名">二、修改虚拟打印机名</h2>
<p>在装好PDFCreator后，需要在控制面板的打印机设置中对其名称做修改，比如我的改成了HP LaserJet 4LC，这是因为超星阅读器好像会检测打印机，对虚拟打印机没反应，只好冒充一下惠普了。</p>
<h2 id="三突破打印数限制">三、突破打印数限制</h2>
<p>超星阅读器一般会有打印数限制，每个月不超过多少张之类的。网上流传有一个很简单的修改程序二进制文件的破解方法：  使用二进制编辑软件（如 UltraEdit-32 ）打开 SsReader.exe 文件，搜索 750D8B0764A3 ，将搜索到的750D8B0764A3中的0D改为2A 。</p>
<h2 id="四打印">四、打印</h2>
<p>在超星阅读器中使用改名后的虚拟打印机打印所需文件即可。</p>
<p>【2009年11月9日/2010年9月26日】</p>
]]></content:encoded><category>geek</category><category domain="tags">技术</category><category domain="tags">工具</category></item><item><title>Powerful Sleep笔记</title><link>https://yifeitao.com/powerful-sleep/</link><pubDate>Wed, 30 Sep 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/powerful-sleep/</guid><description>&lt;p&gt;本书全名《Powerful Sleep – Secrets of the Inner Sleep Clock》，可翻译为《有效睡眠——内在睡眠时钟的奥秘》，通过Google搜索&lt;a href="http://www.google.cn/search?hl=zh-CN&amp;amp;amp;q=Powerful%20Sleep"
rel="noopener noreferrer" target="_blank" class="external"&gt;Powerful Sleep&lt;/a&gt;
很容易找到原文和译文的pdf。这是一本最多半小时就可以读完的小册子。&lt;/p&gt;
&lt;p&gt;人一生中最多的时间其实是用在睡眠上的，但是现代生活逐渐脱离自然特性，所以我们需要科学的睡眠，这个小册子说的不一定就是真理，但我个人认为很有参考价值和实践价值。以下是一些摘录，表述上可能是我自己的方式。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;睡眠时间并非越长越好，有时候整天感到疲乏可能是睡得太多（清醒的时间太少）。俗话“越睡越懒”是很有道理的，很多牛人睡得很少，但精力十足&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;睡眠有五个步骤：清醒，第一阶段（放松阶段），第二阶段（大脑尝试关闭），第三和第四阶段（深度睡眠阶段），第五阶段（快速眼动睡眠REM）。睡眠在这五个阶段间按一定规律循环。高质量的睡眠就是睡眠程度比较深。要尽量在REM阶段醒来，而避免在深度睡眠阶段醒来&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;最重要的睡眠时钟是昼夜节律，它表现为人的体温会有规律的变化。体温上升，人清醒，下降则疲乏。所以“热血沸腾”的时候是睡不着的。基于这个规律，即使在节假日也不要轻易打破自己的作息时间，要建立适应自己节律的作息时间&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;由于昼夜节律，午睡是很有必要的，但是要避免午睡时间过长而进入深度睡眠，一般10~45分钟为佳&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;褪黑激素协助人的睡眠，它在黑暗时分泌，所以有必要在睡眠时保证黑暗。在需要保持清醒时则需要足量的阳光调节体温，降低褪黑激素，通常我们在室内的光照量几乎与黑暗中相似，所以需要更多的接触阳光&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;体育锻炼可以把体温曲线调节得更好，保持白天的经历，并使得晚上更易进入深度睡眠，这是最重要的因素之一。体育锻炼最好在早上进行，而避免在睡前进行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;每天喝足够的水（8杯？），而少喝饮料，重视早起后的饮水；减轻睡前消化系统的负担。远离咖啡因（咖啡），尼古丁（香烟）和酒精（酒），这些都会损害睡眠机制&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;注意睡姿，躺着睡或侧身睡，而不要趴着睡&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;降低压力&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;短期失眠是每个人身上都可能发生的，而长期失眠则是习惯性的（坏习惯构成）。数羊对失眠是无效的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一些对付失眠的方法：让思维慢下来，黑板法（把你难以停止的想法在想象中写到黑板上，，然后擦掉），减慢翻身的速度并减少翻身，所有方法的关键在于将注意力集中在放松而不是睡着上&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果实在睡不着，不妨先起床&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不要在床上做睡觉和爱以外的事情；睡前60~90分钟洗个热水澡；保持房间合适的温度&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;慎用安眠药&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;看完之后发觉本人目前存在的最大问题就是体育锻炼太少。目前睡眠总时间不到7个小时，不知道还有没有减少的空间，准备在假期做个调节计划。&lt;/p&gt;</description><content:encoded><![CDATA[<p>本书全名《Powerful Sleep – Secrets of the Inner Sleep Clock》，可翻译为《有效睡眠——内在睡眠时钟的奥秘》，通过Google搜索<a href="http://www.google.cn/search?hl=zh-CN&amp;amp;q=Powerful%20Sleep"
   rel="noopener noreferrer" target="_blank" class="external">Powerful Sleep</a>
很容易找到原文和译文的pdf。这是一本最多半小时就可以读完的小册子。</p>
<p>人一生中最多的时间其实是用在睡眠上的，但是现代生活逐渐脱离自然特性，所以我们需要科学的睡眠，这个小册子说的不一定就是真理，但我个人认为很有参考价值和实践价值。以下是一些摘录，表述上可能是我自己的方式。</p>
<ul>
<li>
<p>睡眠时间并非越长越好，有时候整天感到疲乏可能是睡得太多（清醒的时间太少）。俗话“越睡越懒”是很有道理的，很多牛人睡得很少，但精力十足</p>
</li>
<li>
<p>睡眠有五个步骤：清醒，第一阶段（放松阶段），第二阶段（大脑尝试关闭），第三和第四阶段（深度睡眠阶段），第五阶段（快速眼动睡眠REM）。睡眠在这五个阶段间按一定规律循环。高质量的睡眠就是睡眠程度比较深。要尽量在REM阶段醒来，而避免在深度睡眠阶段醒来</p>
</li>
<li>
<p>最重要的睡眠时钟是昼夜节律，它表现为人的体温会有规律的变化。体温上升，人清醒，下降则疲乏。所以“热血沸腾”的时候是睡不着的。基于这个规律，即使在节假日也不要轻易打破自己的作息时间，要建立适应自己节律的作息时间</p>
</li>
<li>
<p>由于昼夜节律，午睡是很有必要的，但是要避免午睡时间过长而进入深度睡眠，一般10~45分钟为佳</p>
</li>
<li>
<p>褪黑激素协助人的睡眠，它在黑暗时分泌，所以有必要在睡眠时保证黑暗。在需要保持清醒时则需要足量的阳光调节体温，降低褪黑激素，通常我们在室内的光照量几乎与黑暗中相似，所以需要更多的接触阳光</p>
</li>
<li>
<p>体育锻炼可以把体温曲线调节得更好，保持白天的经历，并使得晚上更易进入深度睡眠，这是最重要的因素之一。体育锻炼最好在早上进行，而避免在睡前进行</p>
</li>
<li>
<p>每天喝足够的水（8杯？），而少喝饮料，重视早起后的饮水；减轻睡前消化系统的负担。远离咖啡因（咖啡），尼古丁（香烟）和酒精（酒），这些都会损害睡眠机制</p>
</li>
<li>
<p>注意睡姿，躺着睡或侧身睡，而不要趴着睡</p>
</li>
<li>
<p>降低压力</p>
</li>
<li>
<p>短期失眠是每个人身上都可能发生的，而长期失眠则是习惯性的（坏习惯构成）。数羊对失眠是无效的</p>
</li>
<li>
<p>一些对付失眠的方法：让思维慢下来，黑板法（把你难以停止的想法在想象中写到黑板上，，然后擦掉），减慢翻身的速度并减少翻身，所有方法的关键在于将注意力集中在放松而不是睡着上</p>
</li>
<li>
<p>如果实在睡不着，不妨先起床</p>
</li>
<li>
<p>不要在床上做睡觉和爱以外的事情；睡前60~90分钟洗个热水澡；保持房间合适的温度</p>
</li>
<li>
<p>慎用安眠药</p>
</li>
</ul>
<p>看完之后发觉本人目前存在的最大问题就是体育锻炼太少。目前睡眠总时间不到7个小时，不知道还有没有减少的空间，准备在假期做个调节计划。</p>
]]></content:encoded><category>reading</category><category domain="tags">读书笔记</category><category domain="tags">睡眠</category></item><item><title>Web开发学习笔记</title><link>https://yifeitao.com/web-development-note/</link><pubDate>Thu, 10 Sep 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/web-development-note/</guid><description>&lt;h2 id="1-html"&gt;1 HTML&lt;/h2&gt;
&lt;p&gt;网页基于古老而青春永驻的HTTP协议传输，在网页上右击鼠标查看源代码，然后我们会看到一堆缺乏美感的代码（不排除有人觉得美），这是浏览器的“母语”——HTML代码。浏览器的使命在于将缺乏美感的HTML代码人道的呈现于上网的你我面前。&lt;/p&gt;
&lt;p&gt;用Google搜索HTML（而不是百度），会得到有用的关于HTML的知识。&lt;/p&gt;
&lt;p&gt;维基百科的&lt;a href="http://zh.wikipedia.org/zh-cn/Html"
rel="noopener noreferrer" target="_blank" class="external"&gt;HTML&lt;/a&gt;
词条介绍了HTML的简要历史，HTML是用于呈现的语言，所以使用了各种标记包裹在文字、图片地址等外面，标记语言的灵活带来的是混乱。微软的IE6统治互联网8年，至今中国绝大部分网民还不离不弃，IE6自创的标准为广大中国用户接受，至今那些ie only的网站还华丽的挂在服务器上，比如&lt;a href="http://www.chinapost.gov.cn/"
rel="noopener noreferrer" target="_blank" class="external"&gt;中华人民共和国国家邮政局&lt;/a&gt;
，用Firefox上去是惨不忍睹。&lt;a href="http://zh.wikipedia.org/zh-cn/XHTML"
rel="noopener noreferrer" target="_blank" class="external"&gt;XHTML&lt;/a&gt;
是个美好的继承者，因为它有更严格的限定，正如严格的格律限定一定程度上成就了唐诗宋词的伟大时代。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.w3schools.com/htmL/"
rel="noopener noreferrer" target="_blank" class="external"&gt;w3schools&lt;/a&gt;
有教程，演示页面，甚至还有水平测试，这一切都是免费的！只不过你要会一点点英文。当然，中文的傻瓜化&lt;a href="http://zh.html.net/tutorials/html/"
rel="noopener noreferrer" target="_blank" class="external"&gt;HTML教程&lt;/a&gt;
也是有的。本人出奇的喜欢写hello world程序，这次也不例外，下面是华丽版的hello world代码：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;html&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&amp;gt;Hello World!&amp;lt;/&lt;span style="color:#f92672"&gt;title&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;body&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;background-color: 99FFFF;&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;br&lt;/span&gt; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;h1&lt;/span&gt;&amp;gt;Hello World!&amp;lt;/&lt;span style="color:#f92672"&gt;h1&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#f92672"&gt;a&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://yifeitao.com/&amp;#34;&lt;/span&gt;&amp;gt;by yifeitao&amp;lt;/&lt;span style="color:#f92672"&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;2009-09-10&amp;lt;/&lt;span style="color:#f92672"&gt;p&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;table&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;border&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;tr&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://img1.qq.com/news/pics/17261/17261849.jpg&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;H&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;H&amp;#34;&lt;/span&gt; &amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;img&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://img1.qq.com/news/pics/17261/17261844.jpg&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;E&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;E&amp;#34;&lt;/span&gt; &amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;img&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://img1.qq.com/news/pics/17261/17261862.jpg&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;L&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;L&amp;#34;&lt;/span&gt; &amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;img&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://img1.qq.com/news/pics/17261/17261862.jpg&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;L&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;L&amp;#34;&lt;/span&gt; &amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;img&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://img1.qq.com/news/pics/17261/17261848.jpg&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;O&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;O&amp;#34;&lt;/span&gt; &amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;img&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt; &amp;lt;/&lt;span style="color:#f92672"&gt;tr&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style="color:#f92672"&gt;tr&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://img1.qq.com/news/pics/17261/17261843.jpg&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;W&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;W&amp;#34;&lt;/span&gt; &amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;img&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://img1.qq.com/news/pics/17261/17261848.jpg&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;O&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;O&amp;#34;&lt;/span&gt; &amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;img&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://img1.qq.com/news/pics/17261/17261857.jpg&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;R&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;R&amp;#34;&lt;/span&gt; &amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;img&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://img1.qq.com/news/pics/17261/17261862.jpg&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;L&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;L&amp;#34;&lt;/span&gt; &amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;img&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt; &amp;lt;&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#f92672"&gt;img&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;http://img1.qq.com/news/pics/17261/17261860.jpg&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;alt&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;D&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;D&amp;#34;&lt;/span&gt; &amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;img&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;td&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;tr&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;table&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;body&lt;/span&gt;&amp;gt; &amp;lt;/&lt;span style="color:#f92672"&gt;html&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="2-web服务端与客户端"&gt;2 Web服务端与客户端&lt;/h2&gt;
&lt;p&gt;HTTP协议是典型的&lt;a href="http://en.wikipedia.org/wiki/Client-Server"
rel="noopener noreferrer" target="_blank" class="external"&gt;C/S&lt;/a&gt;
结构应用，不过客户端一般只需要一个浏览器，所以又有B/S结构的说法。&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="1-html">1 HTML</h2>
<p>网页基于古老而青春永驻的HTTP协议传输，在网页上右击鼠标查看源代码，然后我们会看到一堆缺乏美感的代码（不排除有人觉得美），这是浏览器的“母语”——HTML代码。浏览器的使命在于将缺乏美感的HTML代码人道的呈现于上网的你我面前。</p>
<p>用Google搜索HTML（而不是百度），会得到有用的关于HTML的知识。</p>
<p>维基百科的<a href="http://zh.wikipedia.org/zh-cn/Html"
   rel="noopener noreferrer" target="_blank" class="external">HTML</a>
词条介绍了HTML的简要历史，HTML是用于呈现的语言，所以使用了各种标记包裹在文字、图片地址等外面，标记语言的灵活带来的是混乱。微软的IE6统治互联网8年，至今中国绝大部分网民还不离不弃，IE6自创的标准为广大中国用户接受，至今那些ie only的网站还华丽的挂在服务器上，比如<a href="http://www.chinapost.gov.cn/"
   rel="noopener noreferrer" target="_blank" class="external">中华人民共和国国家邮政局</a>
，用Firefox上去是惨不忍睹。<a href="http://zh.wikipedia.org/zh-cn/XHTML"
   rel="noopener noreferrer" target="_blank" class="external">XHTML</a>
是个美好的继承者，因为它有更严格的限定，正如严格的格律限定一定程度上成就了唐诗宋词的伟大时代。</p>
<p><a href="http://www.w3schools.com/htmL/"
   rel="noopener noreferrer" target="_blank" class="external">w3schools</a>
有教程，演示页面，甚至还有水平测试，这一切都是免费的！只不过你要会一点点英文。当然，中文的傻瓜化<a href="http://zh.html.net/tutorials/html/"
   rel="noopener noreferrer" target="_blank" class="external">HTML教程</a>
也是有的。本人出奇的喜欢写hello world程序，这次也不例外，下面是华丽版的hello world代码：</p>


<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>&lt;<span style="color:#f92672">html</span>&gt; 
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">title</span>&gt;Hello World!&lt;/<span style="color:#f92672">title</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">body</span> <span style="color:#a6e22e">style</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;background-color: 99FFFF;&#34;</span>&gt; 
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">br</span> /&gt; 
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">h1</span>&gt;Hello World!&lt;/<span style="color:#f92672">h1</span>&gt; 
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">p</span>&gt;&lt;<span style="color:#f92672">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://yifeitao.com/&#34;</span>&gt;by yifeitao&lt;/<span style="color:#f92672">a</span>&gt;&lt;/<span style="color:#f92672">p</span>&gt; 
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">p</span>&gt;2009-09-10&lt;/<span style="color:#f92672">p</span>&gt; 
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">table</span> <span style="color:#a6e22e">border</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;1&#34;</span> &gt; 
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">tr</span>&gt; 
</span></span><span style="display:flex;"><span>      &lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://img1.qq.com/news/pics/17261/17261849.jpg&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;H&#34;</span> <span style="color:#a6e22e">title</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;H&#34;</span> &gt;&lt;/<span style="color:#f92672">img</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt; &lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://img1.qq.com/news/pics/17261/17261844.jpg&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;E&#34;</span> <span style="color:#a6e22e">title</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;E&#34;</span> &gt;&lt;/<span style="color:#f92672">img</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt; &lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://img1.qq.com/news/pics/17261/17261862.jpg&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;L&#34;</span> <span style="color:#a6e22e">title</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;L&#34;</span> &gt;&lt;/<span style="color:#f92672">img</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt; &lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://img1.qq.com/news/pics/17261/17261862.jpg&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;L&#34;</span> <span style="color:#a6e22e">title</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;L&#34;</span> &gt;&lt;/<span style="color:#f92672">img</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt; &lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://img1.qq.com/news/pics/17261/17261848.jpg&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;O&#34;</span> <span style="color:#a6e22e">title</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;O&#34;</span> &gt;&lt;/<span style="color:#f92672">img</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt; &lt;/<span style="color:#f92672">tr</span>&gt; &lt;<span style="color:#f92672">tr</span>&gt; &lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://img1.qq.com/news/pics/17261/17261843.jpg&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;W&#34;</span> <span style="color:#a6e22e">title</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;W&#34;</span> &gt;&lt;/<span style="color:#f92672">img</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt; &lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://img1.qq.com/news/pics/17261/17261848.jpg&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;O&#34;</span> <span style="color:#a6e22e">title</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;O&#34;</span> &gt;&lt;/<span style="color:#f92672">img</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt; &lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://img1.qq.com/news/pics/17261/17261857.jpg&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;R&#34;</span> <span style="color:#a6e22e">title</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;R&#34;</span> &gt;&lt;/<span style="color:#f92672">img</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt; &lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://img1.qq.com/news/pics/17261/17261862.jpg&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;L&#34;</span> <span style="color:#a6e22e">title</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;L&#34;</span> &gt;&lt;/<span style="color:#f92672">img</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt; &lt;<span style="color:#f92672">td</span>&gt;&lt;<span style="color:#f92672">img</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;http://img1.qq.com/news/pics/17261/17261860.jpg&#34;</span> <span style="color:#a6e22e">alt</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;D&#34;</span> <span style="color:#a6e22e">title</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;D&#34;</span> &gt;&lt;/<span style="color:#f92672">img</span>&gt;&lt;/<span style="color:#f92672">td</span>&gt; 
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">tr</span>&gt; 
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">table</span>&gt; 
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">body</span>&gt; &lt;/<span style="color:#f92672">html</span>&gt;</span></span></code></pre></div>
<h2 id="2-web服务端与客户端">2 Web服务端与客户端</h2>
<p>HTTP协议是典型的<a href="http://en.wikipedia.org/wiki/Client-Server"
   rel="noopener noreferrer" target="_blank" class="external">C/S</a>
结构应用，不过客户端一般只需要一个浏览器，所以又有B/S结构的说法。</p>
<p><strong>Web服务端</strong>需要安装服务端软件以提供Web服务，简言之就是根据用户请求生成相应的页面发送给用户。<strong>Web客户端</strong>只需要一个<a href="http://zh.wikipedia.org/zh-cn/%E6%B5%8F%E8%A7%88%E5%99%A8"
   rel="noopener noreferrer" target="_blank" class="external">浏览器</a>
即可，用于发出请求申请页面，及渲染页面。</p>
<p>在进一步讨论前，有必要了解<strong>静态页面</strong>和<strong>动态页面</strong>的概念。</p>
<p>静态页面对所有的用户请求返回的是完全一样的页面，比如在笔记（1）中写的hello.html，早期的很多个人主页服务只支持静态页面，目前可能只有一些大学的主页服务仍是如此。</p>
<p>而目前更多的是动态页面，比如你看到的这篇文章后面的随机推荐文章是由Web服务端生成的，可能每次都不一样，又比如百度搜索<a href="http://www.baidu.com/s?wd=%CA%B1%BC%E4"
   rel="noopener noreferrer" target="_blank" class="external">时间</a>
会在顶部看到动态的时钟。动态页面由<strong>客户端脚本</strong>和<strong>服务端脚本</strong>实现。</p>
<p>常见的客户端脚本如<a href="http://zh.wikipedia.org/zh-cn/JavaScript"
   rel="noopener noreferrer" target="_blank" class="external">JavaScript</a>
，查看上述时间搜索页面的源代码不难找到它嵌入到<code>&lt;script type=&quot;text/javascript&quot;&gt;</code>和<code>&lt;script&gt;</code>标签中的代码，JavaScript会下载到客户端而由客户端的JavaScript引擎解释执行。</p>
<p>而常见的服务端脚本有PHP，ASP等等。如下是PHP版本的hello world，并计算1+1。</p>


<pre tabindex="0"><code class="language-php+HTML" data-lang="php+HTML">&lt;html&gt; 
  &lt;head&gt; &lt;title&gt;hello world&lt;/title&gt; &lt;/head&gt; 
  &lt;body&gt; 
    &lt;?php echo &#34;Hello world!&lt;br /&gt;&#34;; echo &#34;1+1=&#34;; echo 1+1; ?&gt; 
  &lt;/body&gt; 
&lt;/html&gt;</code></pre>
<p>查看演示页面的源代码，很容发现PHP代码是不可见的，我们看到的是服务端输出的html代码。</p>
<p>当然，实际的技术往往同时用到客户端脚本和服务端脚本，如目Ajax技术，这里暂不讨论。</p>
<p>如果不运行服务端脚本，服务端软件只要使用简单的Http File Server即可，如<a href="http://www.rejetto.com/hfs/"
   rel="noopener noreferrer" target="_blank" class="external">HFS ~ Http File Server</a>
（<a href="http://www.hanzify.org/?Go=Show::List&amp;ID=11930"
   rel="noopener noreferrer" target="_blank" class="external">汉化版</a>
）。把要发布的主页命名为index.html或default.html添加至虚拟文件系统即可。</p>
<p>为了创建动态网页，一般需要一个Web服务器（世界上使用最广泛的Web服务是<a href="http://httpd.apache.org/"
   rel="noopener noreferrer" target="_blank" class="external">Apache</a>
），一种服务端编程语言（如PHP）和一个数据库（如<a href="http://www.mysql.com/"
   rel="noopener noreferrer" target="_blank" class="external">MySQL</a>
，适应数据复杂的应用）。介绍这三个组件安装的教程很多，这里介绍傻瓜化的一次性解决方案——<a href="http://www.apachefriends.org/zh_cn/xampp.html"
   rel="noopener noreferrer" target="_blank" class="external">XAMPP</a>
。软件安装启动后，启动Apache服务即可访问http://localhost/，…\xampp\htdocs目录下的php文件均可运行，如…\xampp\htdocs\hello.php可通过http://localhost/hello.php访问。如果你的计算机有外网地址，完全可以开始做网站服务器了。</p>
<p>作为Web客户端的各种浏览器支持的标准不一致，这样导致Web开发者需要安装一堆浏览器以测试浏览效果，有很多开发者甚至不得不放弃万恶的ie6，但在中国，ie6仍是无法越过的高山。</p>
<h2 id="3-php基础">3 php基础</h2>
<p>PHP语言是用C开发的，所以语法规则基本上与C是一致的，有C背景的人学起来是很容易的。</p>
<h3 id="1-输出">1 输出</h3>
<p>PHP代码放在<code>&lt;?php&gt;</code>和<code>&lt;?&gt;</code>标记之间，可以嵌入到html代码中，Apache服务器检测到后解释执行，最常用的输出方式有<strong>echo</strong>和<strong>print</strong>，输出会成为html代码的一部分最终发送到客户端。</p>
<p><strong>echo</strong>是命令，不能返回值。echo后面可以跟很多个参数，之间用逗号隔开。</p>
<p><strong>print</strong>是函数，可以返回一个值，只能有一个参数。</p>
<h3 id="2-变量">2 变量</h3>
<p>PHP中变量要用$开头，其余规则同C语言。</p>
<p>PHP不是强类型语言，无需指定变量类型，但如果自动处理不凑效时，可以强制类型转换。</p>
<p>PHP变量有作用范围，<strong>global</strong>全局变量，<strong>static</strong>静态变量。（意义同C语言）</p>
<p>PHP提供有关脚本环境信息的超全局变量，如<code>$_SERVER(&quot;PHP_SELF&quot;)</code>代表当前的文件名。</p>
<h3 id="3-字符串">3 字符串</h3>
<p>字符串可用单引号或双引号，但插入变量时必须用双引号。</p>
<p>用双引号时可以输出转义字符，定义基本同C语言，用单引号不行。</p>
<p>字符串比较函数<strong>strcmp</strong>（string1,string2），<strong>strcasecmp</strong>（string1,string2），分别为不区分大小写和区分大小写。字符串可用圆点（.）进行合并。</p>
<h3 id="4-常量">4 常量</h3>
<p>常量定义型如<strong>define</strong>(&ldquo;PI&rdquo;,3.14)。常量不以$开头。</p>
<p>constant(name)返回常量的值，get_defined_constants返回常量列表。预定义常量类似超全局变量，如<code>_FILE_</code>表示被执行的PHP文件的名称。</p>
<h3 id="5-表达式与运算符">5 表达式与运算符</h3>
<p>基本同C语言，注意弱类型的特点。类型转换运算符：(int)，(double)，(string)，(array)，(object)。</p>
<p>@运算符抑制错误信息；===全等，!==非全等，用于数组。</p>
<h3 id="6-条件语句与循环语句">6 条件语句与循环语句</h3>
<p>基本同C语言。演示判断从1900年到2100年的每一年是否是闰年。（源码仅包括PHP嵌入部分）。</p>


<pre tabindex="0"><code class="language-php+HTML" data-lang="php+HTML">&lt;?php 
for ($year=1900;$year&lt;=2100;$year++) 
	{ if(($year%4==0) AND ($year%100!=0) OR($year%400==0)) echo $year.&#34;年是闰年。&lt;br /&gt;&#34;; 
     else echo $year.&#34;年不是闰年。&lt;br /&gt;&#34;; 
    } 
?&gt;</code></pre>
<h2 id="4-php函数">4 php函数</h2>
<p>PHP的函数与C/C++基本是一样的，从PHP5开始也有面向对象的特性，不过据说语言也因此弄得很繁杂。</p>
<h3 id="函数的调用与创建">函数的调用与创建</h3>
<p>PHP内建了很多函数，其实目前高级语言的会考虑内建函数库，让使用者不必重复造一些简单的部件。比如phpinfo()返回PHP的配置信息。函数名不分大小写，秉承php的弱类型特点，函数有没有返回值以及返回值类型完全是自由的，但返回值如C语言只能有一个，多返回值要考虑数组等方式了。</p>
<h3 id="参数">参数</h3>
<p>参数传递通常有两种，一是值传递，一是引用传递。PHP也是支持变量引用的，但没有引入强大而混乱的指针机制。PHP支持默认参数。</p>
<h3 id="文件包含">文件包含</h3>
<p>PHP中的文件包含有四种，include，include_once， require， require_one。require方式会确保所包含文件的存在，否则停止程序，其余同include。带once的方式可以处理重复包含。function_exists可以检查某函数是否存在，如function_exists(&ldquo;test&rdquo;)。</p>
<h3 id="面向对象特性">面向对象特性</h3>
<p>使用<strong>class</strong>创建类。<strong>new</strong>创建实例。<strong>var</strong>声明变量。构造函数可使用与类同名的方法，或__construct创建。可用this-&gt;访问类中的变量。<strong>extends</strong>运算符进行继承，<strong>parent</strong>运算符调用父类方法。可使用 ::直接调用类的方法（即不用创建实例的静态调用）。</p>
<h2 id="5-php数组">5 php数组</h2>
<p>PHP中的数组对比C/C++的数组做了很大的增强，支持动态数组大小。</p>
<h3 id="创建数组">创建数组</h3>
<p>数字数组使用数字作为索引，关联数组则使用字符串。数组的元素可是是字符串、数字乃至其他数组。可以使用数组标识符[]赋值，不指定索引值时，PHP会自动指定。如<code>$weekdays[]='Monday';$weekdays[]='Tuesday';</code></p>
<p>使用array创建数字数组，如<code>$weekdays[]=array('Monday','Tuesday');</code></p>
<p>使用array，使用index=&gt;value格式创建关联数组，如<code>$shapes=array('Orange'=&gt;'Sphere','Phonebook'=&gt;'Rectangle');</code>测试变量是否是数组：is_array。</p>
<p>使用foreach循环访问数组，如<code>foreach($shapes as $key=&gt;$value)print&quot;The $key is a $ value&quot;</code>;</p>
<p>对已有数组的赋值会自动添加到数组末尾，如<code>$weekdays[]='Wednesday';</code></p>
<p>count或sizeof计算数组的元素个数。使用sort排序，数字按升序，字符串按字母序。多维数组由于数组的元素可以是数组，所以多维数组只不过是数组的嵌套，如<code>$object=array('Orange'=&gt;array('Shape'=&gt;'Sphere','Color'='Orange'));</code></p>
<p>使用list访问多维数组，如</p>
<p><code>foreach($object as $obj_key=&gt;$obj){echo&quot;$obj_key:&lt;br&gt;&quot;while(list($key,$value)=each($obj)) print&quot;The $key is a $ value&quot;;}</code></p>
<p>数组与普通变量使用extract函数作用关联数组index=&gt;value，会产生一系列普通变量，变量名为index，变量值为value。<code>extract(array,EXTR_PREFIX_ALL,&quot;the prefix&quot;)</code>可指定型如the prefix的前缀。并可作用于数字数组。生成类似the prefix_0的变量。可使用compact将一组变量包装为数组。</p>
]]></content:encoded><category>coding</category><category domain="tags">Web开发</category><category domain="tags">编程</category></item><item><title>推选第二辑</title><link>https://yifeitao.com/twitter-collection-2/</link><pubDate>Sat, 22 Aug 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/twitter-collection-2/</guid><description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;以常态为变态，以变态为常态，个中奥妙，难以尽述&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;子夜，上网，女鬼，飘过，哭曰：我们都是孤独的小孩&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;微博客都会问你现在在干吗？回答就是我现在在上网…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;原来牙膏也是会过期的&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;体检就是说让你不断的排队，然后看你是否能坚持住，没有排晕即为合格。mor&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你发现自己满脑子的思想却难以表达出来，那么其实你只是满脑子的浆糊而已。——本人目前就是如此&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中国古代最有名的语录是《论语》，近代最有名的语录是《毛主席语录》。而现在是每个人都可以形成语录的时代，只不过要用上通假字&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;这是个浮躁的年代，所以我们看短短的文，写短短的话&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我有100个想法，其中应该有10个是可行的，当然，1个我也没去做…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人讲，上百人“听”。引号代表其实没有一个人听。问题：讲的是什么课&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;反复说自己都不相信的话可能导致两种结果，要么人格分裂，要么开始相信&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;只有装客观的人和自认为客观的人，而没有真正客观的人。所以有人说要客观评价，那真是见了鬼&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你所津津乐道的，可能是别人不屑一顾的，反之亦然&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;让硅文明取代碳文明吧…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;关掉浏览器，世界清净了&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不认真肯定输了，认真不见得会赢…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;与其让别人折腾自己，不如自己折腾自己&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在床头贴上香车美女，提醒自己时刻抵制这些腐朽的东西&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中文论文一小时十篇，英文论文十小时一篇&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你不是网站开发人员和浏览器开发人员，就应该远离网络&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学会把握，但勿过于追求。——懦弱的人以为自己算是追求了怎么办&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用俄文教材学英文，讲的是中国古代文化，那才是极品&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当我去注意流行歌曲的词时，发现其实诗歌也许并未完全消亡&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果一个规则对大多数使用者来说难于理解，那么可以怀疑规则制定者别有用心。而现实的规则大多是难于理解的，因为有智力优势或权利优势的人会趋于选择一种难于理解的，甚至可多重解释的规则说明方式&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当然，最强悍的权力优势者是不屑于制定规则的，他们的话就是规则，而且不是“君无戏言”，而是“与时俱进”。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<ol>
<li>
<p>以常态为变态，以变态为常态，个中奥妙，难以尽述</p>
</li>
<li>
<p>子夜，上网，女鬼，飘过，哭曰：我们都是孤独的小孩</p>
</li>
<li>
<p>微博客都会问你现在在干吗？回答就是我现在在上网…</p>
</li>
<li>
<p>原来牙膏也是会过期的</p>
</li>
<li>
<p>体检就是说让你不断的排队，然后看你是否能坚持住，没有排晕即为合格。mor</p>
</li>
<li>
<p>如果你发现自己满脑子的思想却难以表达出来，那么其实你只是满脑子的浆糊而已。——本人目前就是如此</p>
</li>
<li>
<p>中国古代最有名的语录是《论语》，近代最有名的语录是《毛主席语录》。而现在是每个人都可以形成语录的时代，只不过要用上通假字</p>
</li>
<li>
<p>这是个浮躁的年代，所以我们看短短的文，写短短的话</p>
</li>
<li>
<p>我有100个想法，其中应该有10个是可行的，当然，1个我也没去做…</p>
</li>
<li>
<p>一个人讲，上百人“听”。引号代表其实没有一个人听。问题：讲的是什么课</p>
</li>
<li>
<p>反复说自己都不相信的话可能导致两种结果，要么人格分裂，要么开始相信</p>
</li>
<li>
<p>只有装客观的人和自认为客观的人，而没有真正客观的人。所以有人说要客观评价，那真是见了鬼</p>
</li>
<li>
<p>你所津津乐道的，可能是别人不屑一顾的，反之亦然</p>
</li>
<li>
<p>让硅文明取代碳文明吧…</p>
</li>
<li>
<p>关掉浏览器，世界清净了</p>
</li>
<li>
<p>不认真肯定输了，认真不见得会赢…</p>
</li>
<li>
<p>与其让别人折腾自己，不如自己折腾自己</p>
</li>
<li>
<p>在床头贴上香车美女，提醒自己时刻抵制这些腐朽的东西</p>
</li>
<li>
<p>中文论文一小时十篇，英文论文十小时一篇</p>
</li>
<li>
<p>如果你不是网站开发人员和浏览器开发人员，就应该远离网络</p>
</li>
<li>
<p>学会把握，但勿过于追求。——懦弱的人以为自己算是追求了怎么办</p>
</li>
<li>
<p>用俄文教材学英文，讲的是中国古代文化，那才是极品</p>
</li>
<li>
<p>当我去注意流行歌曲的词时，发现其实诗歌也许并未完全消亡</p>
</li>
<li>
<p>如果一个规则对大多数使用者来说难于理解，那么可以怀疑规则制定者别有用心。而现实的规则大多是难于理解的，因为有智力优势或权利优势的人会趋于选择一种难于理解的，甚至可多重解释的规则说明方式</p>
</li>
<li>
<p>当然，最强悍的权力优势者是不屑于制定规则的，他们的话就是规则，而且不是“君无戏言”，而是“与时俱进”。</p>
</li>
</ol>
]]></content:encoded><category>life</category><category domain="tags">推特</category><category domain="tags">碎片</category></item><item><title>推选第一辑</title><link>https://yifeitao.com/twitter-collection-1/</link><pubDate>Sat, 22 Aug 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/twitter-collection-1/</guid><description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;早上八九点钟的月亮&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;己所不欲,强施于人&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;手机即玩具&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不折腾到死不痛快,人间总有公道在&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有时候钱就是速度。比如飞机之于火车&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若唐僧肉吃了长生不老,作为一个妖精,抓到唐僧就咬上一口再说,不要扭扭捏捏&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;未经表达的思想不是思想,所以我没有思想&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;喝酒等于浪费粮食&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;冷酒伤身,冷言伤心&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;快进,是剧情拖沓的灵药&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人如果沉默而变态,那么他尚有一点酷；一个人如果一个人罗嗦而善良，那么他尚有几分趣；一个人如果罗嗦而变态，那真是人间极品啊&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;网络成为舆论发动机，扩散至非事发地域传统媒体，而本地媒体集体失声，这就是当前最高效率的监督机制&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;旅游即坐车&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;剧本的井喷：最近网络热点事件真是比剧本还复杂，总有一天，它们被拍成电影，让后人哀叹这个无言的时代&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;蚊子的可恶之处在于咬你一口还要在你耳边嗡嗡做响，凶猛而罗嗦&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;儿童节，为什么小孩子都带叉叉巾呢&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;绿坝-花季护航，我还以为是假新闻…&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;笑着谈论悲惨，感慨自己还苟活于世界，这就是灾难片和灾难新闻受到热爱的原因&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有的人善于把恭维话听成真话，把真话听成气话，真是人才&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;小唐同志是个好同志，他为了取经事业不厌其烦，所以同时他也不胜烦人&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;忍者成龟&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;停电近三天，小时候那种焦灼的心情又复现了。感叹电如空气般难以察觉的重要之余，也重试了一把很多为电与网络带走的乐趣，譬如秉烛打牌&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;寄包裹花了快两百大洋，以后要少买书，多读书&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;某些人最爱用“居然”一词暴露自己的狭隘&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2008年有两件大事，地震和奥运；因此产生了两个明星儿童，林浩和林妙可；而他们的成名竟然都建立在虚假之上。祖国的花朵是从什么样的土壤长出来的呢。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<ol>
<li>
<p>早上八九点钟的月亮</p>
</li>
<li>
<p>己所不欲,强施于人</p>
</li>
<li>
<p>手机即玩具</p>
</li>
<li>
<p>不折腾到死不痛快,人间总有公道在</p>
</li>
<li>
<p>有时候钱就是速度。比如飞机之于火车</p>
</li>
<li>
<p>若唐僧肉吃了长生不老,作为一个妖精,抓到唐僧就咬上一口再说,不要扭扭捏捏</p>
</li>
<li>
<p>未经表达的思想不是思想,所以我没有思想</p>
</li>
<li>
<p>喝酒等于浪费粮食</p>
</li>
<li>
<p>冷酒伤身,冷言伤心</p>
</li>
<li>
<p>快进,是剧情拖沓的灵药</p>
</li>
<li>
<p>一个人如果沉默而变态,那么他尚有一点酷；一个人如果一个人罗嗦而善良，那么他尚有几分趣；一个人如果罗嗦而变态，那真是人间极品啊</p>
</li>
<li>
<p>网络成为舆论发动机，扩散至非事发地域传统媒体，而本地媒体集体失声，这就是当前最高效率的监督机制</p>
</li>
<li>
<p>旅游即坐车</p>
</li>
<li>
<p>剧本的井喷：最近网络热点事件真是比剧本还复杂，总有一天，它们被拍成电影，让后人哀叹这个无言的时代</p>
</li>
<li>
<p>蚊子的可恶之处在于咬你一口还要在你耳边嗡嗡做响，凶猛而罗嗦</p>
</li>
<li>
<p>儿童节，为什么小孩子都带叉叉巾呢</p>
</li>
<li>
<p>绿坝-花季护航，我还以为是假新闻…</p>
</li>
<li>
<p>笑着谈论悲惨，感慨自己还苟活于世界，这就是灾难片和灾难新闻受到热爱的原因</p>
</li>
<li>
<p>有的人善于把恭维话听成真话，把真话听成气话，真是人才</p>
</li>
<li>
<p>小唐同志是个好同志，他为了取经事业不厌其烦，所以同时他也不胜烦人</p>
</li>
<li>
<p>忍者成龟</p>
</li>
<li>
<p>停电近三天，小时候那种焦灼的心情又复现了。感叹电如空气般难以察觉的重要之余，也重试了一把很多为电与网络带走的乐趣，譬如秉烛打牌</p>
</li>
<li>
<p>寄包裹花了快两百大洋，以后要少买书，多读书</p>
</li>
<li>
<p>某些人最爱用“居然”一词暴露自己的狭隘</p>
</li>
<li>
<p>2008年有两件大事，地震和奥运；因此产生了两个明星儿童，林浩和林妙可；而他们的成名竟然都建立在虚假之上。祖国的花朵是从什么样的土壤长出来的呢。</p>
</li>
</ol>
]]></content:encoded><category>life</category><category domain="tags">推特</category><category domain="tags">碎片</category></item><item><title>曾轶可：错贴的标签</title><link>https://yifeitao.com/a-wrong-label-on-zengyike/</link><pubDate>Mon, 17 Aug 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/a-wrong-label-on-zengyike/</guid><description>&lt;blockquote&gt;
&lt;p&gt;那不是我，那不是我，你只是道听途说。——曾轶可：《你是我最好的朋友》&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;因为种种原因，中国的网民总是带着几分狂躁，这股狂躁是难以评判的力量，可是似乎正在被有意无意的引导到一个毁灭性大于建设性的方向。冷静的分析与沟通趋于无用化，在这个难以言说的通假时代，酱油党成为无可奈何的潮流，它是对现实的嘲弄但同时也消解了思考的力量。说这些，是因为辱骂曾轶可的人，如果看见这篇文章，他们会无视我所有的观点，留下牛皮癣小广告似的几句反曾口号，然后满意的离去，心想，又发现一个支持曾轶可的傻叉。&lt;/p&gt;
&lt;p&gt;对于芒果台引领的选秀浪潮，我完全是后知后觉的，只是偶尔看看娱乐版，充斥的是超女们的名号，而且作为一个网虫，也见识了张含韵和李宇春在口水声中走红。辱骂一个娱乐人物是低风险的，所以有些网民乐于打着正义的旗号发挥自己的聪明才智去做这件事，曾轶可又给了他们一次机会。&lt;/p&gt;
&lt;p&gt;怎样描述曾轶可？&lt;/p&gt;
&lt;p&gt;绵羊音、走调、黑幕、中性、曾哥、脑残、痴呆、史泰龙……&lt;/p&gt;
&lt;p&gt;这些刺眼的标签贴在一个19岁的女孩子身上，真的只是她活该吗？&lt;/p&gt;
&lt;p&gt;所有的狂热辱骂的触发点于快乐女生十强突围赛上包小柏的离席门事件。快乐女生号称选优质声音，而实际上更是天娱公司的一次艺员选拔，这个标准模糊的选秀节目不同于青歌赛，所以曾轶可有了晋级的可能性。包小柏是真愤怒还是真炒作已无从考证，总之快乐女生顿时充满了话题性，曾轶可顿时被推上风口浪尖，福祸难料。作为赛制的一部分，评委间有意见分歧本属正常，但包小柏自认为自己的标准才是唯一标准，不论他是否预料到，在这个公平缺失的时代，他成了部分网民眼中的“包青天”，而另一个同样坚持自己评判标准而让曾轶可晋级十强的评委沈黎晖，俨然就是收了黑钱的黑幕推手。&lt;/p&gt;
&lt;p&gt;在中国，规则从来都是被权势者肆意解释的，曾轶可不幸成了一个情绪发泄口，讨厌，怀疑，再到更讨厌，这是“曾黑”们的心路历程，只是他们忘了这这不是高考，而只是一个选秀比赛，曾轶可并没有违反任何规则，违反的只是部分人心中自认的唯一标准。尽管后来有以高晓松为代表的人对曾轶可的支持，但对于“曾黑”而言，只是加深了他们对于黑幕的一厢情愿的相信，而不愿反思自己的唯一标准，这是多少年“标准答案”教育的效果之一吧，他们绝不相信有心智正常的人会欣赏曾轶可，所以只会变本加厉的辱骂。高晓松要曾轶可明白非议她的人都是善良的。是啊，或许他们的出发点都是对于公平的渴望，不可谓不善。然而向一个出身普通、靠原创作品误打误撞进入快女比赛十强的19岁女孩去要公平实在是可悲，而那些正义旗号背后不堪入目与坚持不懈的辱骂与调侃，真的还是正义吗？&lt;/p&gt;
&lt;p&gt;当然，吃饱饭没事干的人是少数，网络的主流其实是酱油党，在他们的推动下，“曾哥”成为一个符号，辱骂与调侃曾轶可成为一种风尚，如果你敢站出来说喜欢曾轶可，就会被贴上脑残的标签。现在你不得不表明态度了，你是随大流叫几句“曾哥”还是抵制这些无聊的辱骂调侃而被当做脑残呢？酱油党的态度或许是轻松的，但也掩盖了一切讨论的可能性，因为他们只有态度而已。&lt;/p&gt;
&lt;p&gt;最后容我不淡定的对所谓的“曾黑”们说几句：&lt;/p&gt;
&lt;p&gt;去你妈的，要公平你找错了地方，要发泄你找错了对象!没有谁是该被你骂的，网络可以挡住你的脸，但挡不住你的心。收起你自认的唯一标准，然后用你的标准去找你喜欢的歌手。如果实在太无聊，太寂寞，自己生个女儿叫哥玩吧。&lt;/p&gt;</description><content:encoded><![CDATA[<blockquote>
<p>那不是我，那不是我，你只是道听途说。——曾轶可：《你是我最好的朋友》</p>
</blockquote>
<p>因为种种原因，中国的网民总是带着几分狂躁，这股狂躁是难以评判的力量，可是似乎正在被有意无意的引导到一个毁灭性大于建设性的方向。冷静的分析与沟通趋于无用化，在这个难以言说的通假时代，酱油党成为无可奈何的潮流，它是对现实的嘲弄但同时也消解了思考的力量。说这些，是因为辱骂曾轶可的人，如果看见这篇文章，他们会无视我所有的观点，留下牛皮癣小广告似的几句反曾口号，然后满意的离去，心想，又发现一个支持曾轶可的傻叉。</p>
<p>对于芒果台引领的选秀浪潮，我完全是后知后觉的，只是偶尔看看娱乐版，充斥的是超女们的名号，而且作为一个网虫，也见识了张含韵和李宇春在口水声中走红。辱骂一个娱乐人物是低风险的，所以有些网民乐于打着正义的旗号发挥自己的聪明才智去做这件事，曾轶可又给了他们一次机会。</p>
<p>怎样描述曾轶可？</p>
<p>绵羊音、走调、黑幕、中性、曾哥、脑残、痴呆、史泰龙……</p>
<p>这些刺眼的标签贴在一个19岁的女孩子身上，真的只是她活该吗？</p>
<p>所有的狂热辱骂的触发点于快乐女生十强突围赛上包小柏的离席门事件。快乐女生号称选优质声音，而实际上更是天娱公司的一次艺员选拔，这个标准模糊的选秀节目不同于青歌赛，所以曾轶可有了晋级的可能性。包小柏是真愤怒还是真炒作已无从考证，总之快乐女生顿时充满了话题性，曾轶可顿时被推上风口浪尖，福祸难料。作为赛制的一部分，评委间有意见分歧本属正常，但包小柏自认为自己的标准才是唯一标准，不论他是否预料到，在这个公平缺失的时代，他成了部分网民眼中的“包青天”，而另一个同样坚持自己评判标准而让曾轶可晋级十强的评委沈黎晖，俨然就是收了黑钱的黑幕推手。</p>
<p>在中国，规则从来都是被权势者肆意解释的，曾轶可不幸成了一个情绪发泄口，讨厌，怀疑，再到更讨厌，这是“曾黑”们的心路历程，只是他们忘了这这不是高考，而只是一个选秀比赛，曾轶可并没有违反任何规则，违反的只是部分人心中自认的唯一标准。尽管后来有以高晓松为代表的人对曾轶可的支持，但对于“曾黑”而言，只是加深了他们对于黑幕的一厢情愿的相信，而不愿反思自己的唯一标准，这是多少年“标准答案”教育的效果之一吧，他们绝不相信有心智正常的人会欣赏曾轶可，所以只会变本加厉的辱骂。高晓松要曾轶可明白非议她的人都是善良的。是啊，或许他们的出发点都是对于公平的渴望，不可谓不善。然而向一个出身普通、靠原创作品误打误撞进入快女比赛十强的19岁女孩去要公平实在是可悲，而那些正义旗号背后不堪入目与坚持不懈的辱骂与调侃，真的还是正义吗？</p>
<p>当然，吃饱饭没事干的人是少数，网络的主流其实是酱油党，在他们的推动下，“曾哥”成为一个符号，辱骂与调侃曾轶可成为一种风尚，如果你敢站出来说喜欢曾轶可，就会被贴上脑残的标签。现在你不得不表明态度了，你是随大流叫几句“曾哥”还是抵制这些无聊的辱骂调侃而被当做脑残呢？酱油党的态度或许是轻松的，但也掩盖了一切讨论的可能性，因为他们只有态度而已。</p>
<p>最后容我不淡定的对所谓的“曾黑”们说几句：</p>
<p>去你妈的，要公平你找错了地方，要发泄你找错了对象!没有谁是该被你骂的，网络可以挡住你的脸，但挡不住你的心。收起你自认的唯一标准，然后用你的标准去找你喜欢的歌手。如果实在太无聊，太寂寞，自己生个女儿叫哥玩吧。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">音乐</category><category domain="tags">评论</category></item><item><title>收藏≠拥有</title><link>https://yifeitao.com/collection-not-equal-property/</link><pubDate>Mon, 03 Aug 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/collection-not-equal-property/</guid><description>&lt;p&gt;原来我也是有收藏癖的！看到120G+250G+320G的硬盘都要爆了，我不禁有些发愁了，什么都舍不得删啊。在这个比特复制免费的伟大时代与伟大国度，穷人如我也可以过一把收藏瘾了，所需不过一台电脑，开通网络，然后是p2p软件。我发挥了人骨子里将尽量多的东西占为己有的基因，无论是电子书、软件还是电影、音乐都不放过，尽管我深知它们大多将躺在磁道上永无活跃之日，直到等到被清理的那一天。&lt;/p&gt;
&lt;p&gt;我明白：收藏了不一定会看第一次，比如很多电子书，连纸质书买了也没看呢；收藏了不一定会看第二次，比如很多电影，连新下的电影也没时间看呢。可是硬盘还是慢慢就堆满了，终于到了动手的一天，下载来得不易，删除来得太快。原来用光速到来睡在我硬盘上的比特，从来都不属于我。&lt;/p&gt;
&lt;p&gt;为什么古代的书没有标点符号呢？因为标点符号是快速获取信息的需要，对于书读百遍的人是不那么重要的。而现在我们进入了读图时代、视频时代，比特变成像素快速滑过我们的大脑，留下一个模糊的印象然后也快速的消失，当信息的获取途经不再是主要障碍时，我们被信息淹没，不知道要的是什么。&lt;/p&gt;
&lt;p&gt;留下几个G的电影不如留下几百B的短评，也许我要强迫自己写博客，许多年后回看，原来在无聊的生活之余，我思考我存在。收藏不等于拥有，再告诉自己一次这么简单的道理，克服自己对比特的贪欲。比特无罪，只是因为我们习惯了快餐消费、片段阅读，谨以此献给那些未见天日的比特。&lt;/p&gt;</description><content:encoded><![CDATA[<p>原来我也是有收藏癖的！看到120G+250G+320G的硬盘都要爆了，我不禁有些发愁了，什么都舍不得删啊。在这个比特复制免费的伟大时代与伟大国度，穷人如我也可以过一把收藏瘾了，所需不过一台电脑，开通网络，然后是p2p软件。我发挥了人骨子里将尽量多的东西占为己有的基因，无论是电子书、软件还是电影、音乐都不放过，尽管我深知它们大多将躺在磁道上永无活跃之日，直到等到被清理的那一天。</p>
<p>我明白：收藏了不一定会看第一次，比如很多电子书，连纸质书买了也没看呢；收藏了不一定会看第二次，比如很多电影，连新下的电影也没时间看呢。可是硬盘还是慢慢就堆满了，终于到了动手的一天，下载来得不易，删除来得太快。原来用光速到来睡在我硬盘上的比特，从来都不属于我。</p>
<p>为什么古代的书没有标点符号呢？因为标点符号是快速获取信息的需要，对于书读百遍的人是不那么重要的。而现在我们进入了读图时代、视频时代，比特变成像素快速滑过我们的大脑，留下一个模糊的印象然后也快速的消失，当信息的获取途经不再是主要障碍时，我们被信息淹没，不知道要的是什么。</p>
<p>留下几个G的电影不如留下几百B的短评，也许我要强迫自己写博客，许多年后回看，原来在无聊的生活之余，我思考我存在。收藏不等于拥有，再告诉自己一次这么简单的道理，克服自己对比特的贪欲。比特无罪，只是因为我们习惯了快餐消费、片段阅读，谨以此献给那些未见天日的比特。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">思考</category><category domain="tags">极简主义</category></item><item><title>成都印象</title><link>https://yifeitao.com/impress-of-chengdu/</link><pubDate>Thu, 09 Apr 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/impress-of-chengdu/</guid><description>&lt;h2 id="五步之内必有美食"&gt;五步之内，必有美食&lt;/h2&gt;
&lt;p&gt;在中国的每个城市，你都可以找到川菜馆和火锅店，但这次我来到了发源地。其实我到成都也少有时间去四处觅食，可是禁不住五步之内，必有美食，恍若进入了一个大的餐馆。&lt;/p&gt;
&lt;p&gt;菜馆、火锅店、串串香、烧烤、小吃店，扎根在各个大街小巷，它们不拒绝你成群结队的去腐败，也不拒绝你只是在路边摊一饱口福。成都人爱吃，所以除了作为火锅的大本营，全国各地的各种美食在这里照样生生不息，从早到晚吃客不曾停歇，甚至还能看到24小时营业的面馆。有时你都怀疑，成都人都是不在家做饭吃的。&lt;/p&gt;
&lt;p&gt;到了成都，自然要大吃火锅，小七我作为一个“怕不辣”的湖南人，在此基本上算是如鱼得水，可是还是禁不住被花椒的“麻”算计，吃得牙齿发颤。在外晃荡太久，吃辣的能力也大不如前，难免也会爽了口舌，辣了肚肠，但那如毒品的魅力还是让人越战越勇。有时候在饭点也会烦恼，放眼望去，各个诱人招牌让人无所适从，产生选择障碍。&lt;/p&gt;
&lt;h2 id="阴而不郁"&gt;阴而不郁&lt;/h2&gt;
&lt;p&gt;据说色男们到成都一定要到春熙路，因为有着“三步一个张曼玉，五步一个林青霞”的著名假说。如果不抬杠的话，经本人实地考察此假说还是有几分可信的。&lt;/p&gt;
&lt;p&gt;另据我研究发现，此说法之所以可信，是因为成都的天气，这个在四川盆地中的城市日日笼罩在云雾中，难得见几次太阳的面目，所以成都人的皮肤算是天生天养，大大的好，然后“一白遮百丑”。&lt;/p&gt;
&lt;p&gt;如果要用一种心情去对应成都的天气，那么必定是郁闷。让人不禁会怀疑成都人的自杀率是否偏高，虽然没有研究数据，但看到成都人忙着火锅、酒吧、麻将，应该是不可能的。&lt;/p&gt;
&lt;p&gt;阴沉的天气让麻辣的食物大行其道，成都人的热情也像那种吃过辣椒的热，对比长沙、武汉那种火热天气似的热情少了几分烦躁。&lt;/p&gt;
&lt;p&gt;有学者曾以气候对应文化，看来成都人是反例，在阴沉下没有诞生郁闷。好吧，我把这归结为辣椒和花椒的功劳。&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="五步之内必有美食">五步之内，必有美食</h2>
<p>在中国的每个城市，你都可以找到川菜馆和火锅店，但这次我来到了发源地。其实我到成都也少有时间去四处觅食，可是禁不住五步之内，必有美食，恍若进入了一个大的餐馆。</p>
<p>菜馆、火锅店、串串香、烧烤、小吃店，扎根在各个大街小巷，它们不拒绝你成群结队的去腐败，也不拒绝你只是在路边摊一饱口福。成都人爱吃，所以除了作为火锅的大本营，全国各地的各种美食在这里照样生生不息，从早到晚吃客不曾停歇，甚至还能看到24小时营业的面馆。有时你都怀疑，成都人都是不在家做饭吃的。</p>
<p>到了成都，自然要大吃火锅，小七我作为一个“怕不辣”的湖南人，在此基本上算是如鱼得水，可是还是禁不住被花椒的“麻”算计，吃得牙齿发颤。在外晃荡太久，吃辣的能力也大不如前，难免也会爽了口舌，辣了肚肠，但那如毒品的魅力还是让人越战越勇。有时候在饭点也会烦恼，放眼望去，各个诱人招牌让人无所适从，产生选择障碍。</p>
<h2 id="阴而不郁">阴而不郁</h2>
<p>据说色男们到成都一定要到春熙路，因为有着“三步一个张曼玉，五步一个林青霞”的著名假说。如果不抬杠的话，经本人实地考察此假说还是有几分可信的。</p>
<p>另据我研究发现，此说法之所以可信，是因为成都的天气，这个在四川盆地中的城市日日笼罩在云雾中，难得见几次太阳的面目，所以成都人的皮肤算是天生天养，大大的好，然后“一白遮百丑”。</p>
<p>如果要用一种心情去对应成都的天气，那么必定是郁闷。让人不禁会怀疑成都人的自杀率是否偏高，虽然没有研究数据，但看到成都人忙着火锅、酒吧、麻将，应该是不可能的。</p>
<p>阴沉的天气让麻辣的食物大行其道，成都人的热情也像那种吃过辣椒的热，对比长沙、武汉那种火热天气似的热情少了几分烦躁。</p>
<p>有学者曾以气候对应文化，看来成都人是反例，在阴沉下没有诞生郁闷。好吧，我把这归结为辣椒和花椒的功劳。</p>
]]></content:encoded><category>life</category><category domain="tags">旅行</category><category domain="tags">美食</category><category domain="tags">城市</category></item><item><title>挣钱与花钱的境界</title><link>https://yifeitao.com/level-of-earn-and-spend-money/</link><pubDate>Sat, 14 Mar 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/level-of-earn-and-spend-money/</guid><description>&lt;h2 id="非单身"&gt;非单身&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;一个人挣钱一个人花&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;两个人挣钱一个人花&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人挣钱两个人花&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;两个人挣钱两个人花&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人挣钱两个人花&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;两个人挣钱一个人花&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个人挣钱一个人花&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="单身"&gt;单身&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;一个人挣钱一个人花。&lt;/li&gt;
&lt;/ol&gt;</description><content:encoded><![CDATA[<h2 id="非单身">非单身</h2>
<ol>
<li>
<p>一个人挣钱一个人花</p>
</li>
<li>
<p>两个人挣钱一个人花</p>
</li>
<li>
<p>一个人挣钱两个人花</p>
</li>
<li>
<p>两个人挣钱两个人花</p>
</li>
<li>
<p>一个人挣钱两个人花</p>
</li>
<li>
<p>两个人挣钱一个人花</p>
</li>
<li>
<p>一个人挣钱一个人花</p>
</li>
</ol>
<h2 id="单身">单身</h2>
<ol>
<li>一个人挣钱一个人花。</li>
</ol>
]]></content:encoded><category>life</category><category domain="tags">理财</category><category domain="tags">生活</category></item><item><title>扫台手记</title><link>https://yifeitao.com/tv-notes/</link><pubDate>Sun, 01 Mar 2009 00:00:00 +0000</pubDate><guid>https://yifeitao.com/tv-notes/</guid><description>&lt;h3 id="2008-年-6-月-2-日"&gt;2008 年 6 月 2 日&lt;/h3&gt;
&lt;p&gt;【1】奥利奥的广告总是用那句经典的“扭一扭，舔一舔，泡一泡”，一以贯之的广告词和充满童真的创意实属难得，效果好的广告不都是脑白金和恒源祥的德性，这简直让我对这个世界重拾信心啊。&lt;/p&gt;
&lt;p&gt;【2】新闻中又有李连杰壹基金救助地震灾区的报道，不过在李连杰谈到NGO时，字幕加了个慈善组织的括号，让人觉得很奇怪，不知道制作者是不是真不知道NGO的意思，还是有意敷衍观众，一个成熟国家的NGO往往都是很有力量的，而中国竟然还有些欲说还羞的意味。&lt;/p&gt;
&lt;p&gt;【3】肯德基的广告下有行小字，大概说是不出售碗和盘子，中国人看到类似的声明最初都会觉得好笑，外国人总是把丑话说在前头，中国人基于交互主义不会这么细致而直白，却避不开偶尔的事后扯皮，不过现在也都慢慢学乖了，加上一条——最终解释却归本公司所有，一了百了，实在高明得很。&lt;/p&gt;
&lt;p&gt;【4】公益广告说某地出租车公司为残疾人提供上门服务，赞一个，即方便了残疾人，也做了生意，还活生生打了一次口碑广告，这种利人利己的善举才是最值得提倡的。&lt;/p&gt;
&lt;h3 id="2008-年-6-月-17-日"&gt;2008 年 6 月 17 日&lt;/h3&gt;
&lt;p&gt;【1】CCTV10的《人物》节目介绍内画大师王习三，内画绝技，叹为观止。另外值得一提的是王习三在文革中自杀的经历，节目用一种隐淡哀伤的词调叙说了这一事实。那些经历的人在逐渐老去，可我们的民族何时才能真正对此自省呢？&lt;/p&gt;
&lt;p&gt;【2】《女人花》、《女人不哭》、《女人本色》、《走出监狱的女人》，即使只算标题带女人的，也是多得让人无语。不过要说这是女人崛起的象征就太扯了，女人戏女人演，镜头语言却是男人的，对于女人现实就是如此残酷。&lt;/p&gt;
&lt;p&gt;【3】有个冯远征主演的剧叫《死去活来》，似乎是说离婚大战的，题目真是贴切，不过配乐竟然用了日本动画《浪客剑心》OVA版的OST，不知道有没有侵权。&lt;/p&gt;
&lt;p&gt;【4】地震的报道还很多，但奥运会的报道开始唱主角了，只不过都会和抗震救灾结合起来，有时候会觉得没有诚意的结合只是喊口号还不如不要的好。&lt;/p&gt;
&lt;p&gt;【5】CCTV10的《第十放映室》等节目都在大谈武术和武侠电影，不知道为什么突然武侠文化就进入了大雅之堂，曾经武侠小说也是毒草之一啊，我做了十几年的好孩子，在大学时才真正接触武侠小说，感叹自己被骗很多年终于还是没错过。&lt;/p&gt;
&lt;p&gt;【6】芒果台《背后的故事》访谈了已经单飞的阿信，那撕心裂肺欲罢不能的《死了都要爱》背后确实让人唏嘘不已，有多年酒吧的日积月累，也有对英年早逝的摇滚偶像的致敬，光鲜背后是汗水，成功故事总是如此简单，可是人们也总是更喜欢速食成功学。&lt;/p&gt;
&lt;h3 id="2008-年-6-月-30-日-其实我是个演员"&gt;2008 年 6 月 30 日 其实我是个演员&lt;/h3&gt;
&lt;p&gt;【1】正龙拍虎事件终于有了个官方说法，CCTV4甚至做了个事件薄，拍虎事件在种吊诡的叙事中似乎要告一段落了，如果正龙拍虎是一部黑色幽默的电影，那么周正龙是作为演员被封杀了，而这部电影，依然是个奇特的谜语。尽管结局或许不完美，尽管一个简单的结论来得如此艰难漫长。&lt;/p&gt;
&lt;p&gt;【2】地震过去了，地震秀开始了，CCTV1的对震区优秀少年的表彰总让人觉得美好来得有些残酷，更残酷的是CCTV10的《文化访谈录》，余秋雨侃侃而谈文化人要如何固化抗震精神，我拭目以待，看他除了含泪劝告家长外还能有什么贡献，至于他将他人对抗震救灾存在的疑问斥之为胡说八道，我们不谈也罢。&lt;/p&gt;
&lt;p&gt;【3】最近中国女排的比赛总是让人激动，因为在落后的情况下总是有顽强的翻盘，赵蕊蕊又上场了，实在是个痛苦的传奇，不过看到她现在在场上的笑容，对于她本人和球迷都是间雨过天晴的幸福事吧。&lt;/p&gt;
&lt;h3 id="2008-年-7-月-4-日"&gt;2008 年 7 月 4 日&lt;/h3&gt;
&lt;p&gt;【1】关于奥运的种种节目中，不乏很有文化含量的，但给我印象最深的却是芒果台的《奥运向前冲》，虽然只是借奥运名头的一个户外游戏，但却真正有些重在参与的奥运精神实质在，湖南经视作为湖南卫视的孵化器又贡献了一个很好的创意，在超女比赛中爆发的国人的表现欲用一种更平和的方式出现。&lt;/p&gt;
&lt;p&gt;【2】在CCTV10的《第十放映室》可以听一听主流对流行电影的解读，随时会有“人民才是历史的创造者”之类的言语蹦出来解读好莱坞电影，让人顿生疑惑，细想也并无不妥，只是自己所听的妖魔化的西方太多，而用主流话语对冲，竟生可悲的不适。&lt;/p&gt;
&lt;p&gt;【3】纵观各个台所引进的电视剧，以韩剧，台剧居多，而日剧，美剧还是古老的《排球女将》和《成长的烦恼》之类，原因不及细究。韩剧和台剧一般更加肥皂而意识模糊基本无疑，基本可判为不会“毒害”群众，但我认为降低智商也是无疑的；日剧和美剧的戏剧冲突更激烈更现实，或许只适宜在网络上野蛮生长吧。&lt;/p&gt;
&lt;h3 id="2008-年-7-月-14-日"&gt;2008 年 7 月 14 日&lt;/h3&gt;
&lt;p&gt;【1】看到曾经的少男杀手，那个唱着《假面的告白》的蔡依林在给特步做广告，她像一个体操运动员一样挥舞着彩带，好像挥出了特步的标志，这或许算的上一个好广告吧。不过也算是体操运动员和歌手的错位吧，你还想听什么好歌，抱歉了！这就是华语乐坛的现状写照。&lt;/p&gt;
&lt;p&gt;【2】CCTV10讲杨式太极拳创始人杨露禅的故事，可是究竟是拜师还是偷师在不同的地方传说是不一样的，传说是百姓口耳写作的历史，固不可信，不同的版本其实夹杂着可以理解的私心，但让人沮丧的是，刀笔写就的历史也不免夹杂着私心，其实很多人并不相信后人终究会有公正的评价而是相信他们终究可以骗过后人。&lt;/p&gt;
&lt;p&gt;【3】在最近的新闻中时常看到关于网络事件的报道，总感觉怪怪的，就感觉像一块多年自娱自乐的土地被人发觉了。然后开始怀疑人生，因为你难以确认是你说话有人听了，或者是你将无法说话。&lt;/p&gt;
&lt;p&gt;【3】看到那么多关于奥运的节目，可是感觉还是有些遥远，只能空看那些北京人的热情与牢骚。关于中国人之于奥运会的三问，什么时候有人参加，什么时候拿一块奖牌，什么时候举办一届奥运会，我想答案大致都有了。第四个问题是，什么时候我们能平常心一些看奥运，而不在谁来参加开幕式的事情上耿耿于怀，剔除某些病态的狂热与作秀。&lt;/p&gt;
&lt;h3 id="2009-年-3-月-1-日"&gt;2009 年 3 月 1 日&lt;/h3&gt;
&lt;p&gt;【1】首先表扬芒果台的《天天向上》节目，节目策划别具匠心，选择的嘉宾有实力，有带动力，希望节目组一直坚持这种风格，坚决摈弃娱乐节目明星打歌打戏的老套模式。&lt;/p&gt;
&lt;p&gt;【2】某日误入CCTV12少儿频道，见小朋友在给可爱的动物图片配画外音，可是主持人一直在不停的指引着一个貌似有趣的契合情景的“标准答案”，联想到本人一路走来所受的“标准答案”教育，不禁悲从中来。&lt;/p&gt;
&lt;p&gt;【3】CCTV4《汉字五千年》说到了汉字在中国维持大一统文化中的作用，相比欧洲以拉丁字母分别衍生的各种语言，中国发音差异其实颇大的各种方言却在方块字下大一统。其实大陆与台湾的统一基础也正在于此，文化上的血脉相通才是根本，但首先还需要海峡两岸的人加强交流，减少傲慢与偏见。&lt;/p&gt;</description><content:encoded><![CDATA[<h3 id="2008-年-6-月-2-日">2008 年 6 月 2 日</h3>
<p>【1】奥利奥的广告总是用那句经典的“扭一扭，舔一舔，泡一泡”，一以贯之的广告词和充满童真的创意实属难得，效果好的广告不都是脑白金和恒源祥的德性，这简直让我对这个世界重拾信心啊。</p>
<p>【2】新闻中又有李连杰壹基金救助地震灾区的报道，不过在李连杰谈到NGO时，字幕加了个慈善组织的括号，让人觉得很奇怪，不知道制作者是不是真不知道NGO的意思，还是有意敷衍观众，一个成熟国家的NGO往往都是很有力量的，而中国竟然还有些欲说还羞的意味。</p>
<p>【3】肯德基的广告下有行小字，大概说是不出售碗和盘子，中国人看到类似的声明最初都会觉得好笑，外国人总是把丑话说在前头，中国人基于交互主义不会这么细致而直白，却避不开偶尔的事后扯皮，不过现在也都慢慢学乖了，加上一条——最终解释却归本公司所有，一了百了，实在高明得很。</p>
<p>【4】公益广告说某地出租车公司为残疾人提供上门服务，赞一个，即方便了残疾人，也做了生意，还活生生打了一次口碑广告，这种利人利己的善举才是最值得提倡的。</p>
<h3 id="2008-年-6-月-17-日">2008 年 6 月 17 日</h3>
<p>【1】CCTV10的《人物》节目介绍内画大师王习三，内画绝技，叹为观止。另外值得一提的是王习三在文革中自杀的经历，节目用一种隐淡哀伤的词调叙说了这一事实。那些经历的人在逐渐老去，可我们的民族何时才能真正对此自省呢？</p>
<p>【2】《女人花》、《女人不哭》、《女人本色》、《走出监狱的女人》，即使只算标题带女人的，也是多得让人无语。不过要说这是女人崛起的象征就太扯了，女人戏女人演，镜头语言却是男人的，对于女人现实就是如此残酷。</p>
<p>【3】有个冯远征主演的剧叫《死去活来》，似乎是说离婚大战的，题目真是贴切，不过配乐竟然用了日本动画《浪客剑心》OVA版的OST，不知道有没有侵权。</p>
<p>【4】地震的报道还很多，但奥运会的报道开始唱主角了，只不过都会和抗震救灾结合起来，有时候会觉得没有诚意的结合只是喊口号还不如不要的好。</p>
<p>【5】CCTV10的《第十放映室》等节目都在大谈武术和武侠电影，不知道为什么突然武侠文化就进入了大雅之堂，曾经武侠小说也是毒草之一啊，我做了十几年的好孩子，在大学时才真正接触武侠小说，感叹自己被骗很多年终于还是没错过。</p>
<p>【6】芒果台《背后的故事》访谈了已经单飞的阿信，那撕心裂肺欲罢不能的《死了都要爱》背后确实让人唏嘘不已，有多年酒吧的日积月累，也有对英年早逝的摇滚偶像的致敬，光鲜背后是汗水，成功故事总是如此简单，可是人们也总是更喜欢速食成功学。</p>
<h3 id="2008-年-6-月-30-日-其实我是个演员">2008 年 6 月 30 日 其实我是个演员</h3>
<p>【1】正龙拍虎事件终于有了个官方说法，CCTV4甚至做了个事件薄，拍虎事件在种吊诡的叙事中似乎要告一段落了，如果正龙拍虎是一部黑色幽默的电影，那么周正龙是作为演员被封杀了，而这部电影，依然是个奇特的谜语。尽管结局或许不完美，尽管一个简单的结论来得如此艰难漫长。</p>
<p>【2】地震过去了，地震秀开始了，CCTV1的对震区优秀少年的表彰总让人觉得美好来得有些残酷，更残酷的是CCTV10的《文化访谈录》，余秋雨侃侃而谈文化人要如何固化抗震精神，我拭目以待，看他除了含泪劝告家长外还能有什么贡献，至于他将他人对抗震救灾存在的疑问斥之为胡说八道，我们不谈也罢。</p>
<p>【3】最近中国女排的比赛总是让人激动，因为在落后的情况下总是有顽强的翻盘，赵蕊蕊又上场了，实在是个痛苦的传奇，不过看到她现在在场上的笑容，对于她本人和球迷都是间雨过天晴的幸福事吧。</p>
<h3 id="2008-年-7-月-4-日">2008 年 7 月 4 日</h3>
<p>【1】关于奥运的种种节目中，不乏很有文化含量的，但给我印象最深的却是芒果台的《奥运向前冲》，虽然只是借奥运名头的一个户外游戏，但却真正有些重在参与的奥运精神实质在，湖南经视作为湖南卫视的孵化器又贡献了一个很好的创意，在超女比赛中爆发的国人的表现欲用一种更平和的方式出现。</p>
<p>【2】在CCTV10的《第十放映室》可以听一听主流对流行电影的解读，随时会有“人民才是历史的创造者”之类的言语蹦出来解读好莱坞电影，让人顿生疑惑，细想也并无不妥，只是自己所听的妖魔化的西方太多，而用主流话语对冲，竟生可悲的不适。</p>
<p>【3】纵观各个台所引进的电视剧，以韩剧，台剧居多，而日剧，美剧还是古老的《排球女将》和《成长的烦恼》之类，原因不及细究。韩剧和台剧一般更加肥皂而意识模糊基本无疑，基本可判为不会“毒害”群众，但我认为降低智商也是无疑的；日剧和美剧的戏剧冲突更激烈更现实，或许只适宜在网络上野蛮生长吧。</p>
<h3 id="2008-年-7-月-14-日">2008 年 7 月 14 日</h3>
<p>【1】看到曾经的少男杀手，那个唱着《假面的告白》的蔡依林在给特步做广告，她像一个体操运动员一样挥舞着彩带，好像挥出了特步的标志，这或许算的上一个好广告吧。不过也算是体操运动员和歌手的错位吧，你还想听什么好歌，抱歉了！这就是华语乐坛的现状写照。</p>
<p>【2】CCTV10讲杨式太极拳创始人杨露禅的故事，可是究竟是拜师还是偷师在不同的地方传说是不一样的，传说是百姓口耳写作的历史，固不可信，不同的版本其实夹杂着可以理解的私心，但让人沮丧的是，刀笔写就的历史也不免夹杂着私心，其实很多人并不相信后人终究会有公正的评价而是相信他们终究可以骗过后人。</p>
<p>【3】在最近的新闻中时常看到关于网络事件的报道，总感觉怪怪的，就感觉像一块多年自娱自乐的土地被人发觉了。然后开始怀疑人生，因为你难以确认是你说话有人听了，或者是你将无法说话。</p>
<p>【3】看到那么多关于奥运的节目，可是感觉还是有些遥远，只能空看那些北京人的热情与牢骚。关于中国人之于奥运会的三问，什么时候有人参加，什么时候拿一块奖牌，什么时候举办一届奥运会，我想答案大致都有了。第四个问题是，什么时候我们能平常心一些看奥运，而不在谁来参加开幕式的事情上耿耿于怀，剔除某些病态的狂热与作秀。</p>
<h3 id="2009-年-3-月-1-日">2009 年 3 月 1 日</h3>
<p>【1】首先表扬芒果台的《天天向上》节目，节目策划别具匠心，选择的嘉宾有实力，有带动力，希望节目组一直坚持这种风格，坚决摈弃娱乐节目明星打歌打戏的老套模式。</p>
<p>【2】某日误入CCTV12少儿频道，见小朋友在给可爱的动物图片配画外音，可是主持人一直在不停的指引着一个貌似有趣的契合情景的“标准答案”，联想到本人一路走来所受的“标准答案”教育，不禁悲从中来。</p>
<p>【3】CCTV4《汉字五千年》说到了汉字在中国维持大一统文化中的作用，相比欧洲以拉丁字母分别衍生的各种语言，中国发音差异其实颇大的各种方言却在方块字下大一统。其实大陆与台湾的统一基础也正在于此，文化上的血脉相通才是根本，但首先还需要海峡两岸的人加强交流，减少傲慢与偏见。</p>
]]></content:encoded><category>movie</category><category domain="tags">电视</category><category domain="tags">观察</category></item><item><title>流水账2008</title><link>https://yifeitao.com/diary-2008/</link><pubDate>Sun, 14 Dec 2008 00:00:00 +0000</pubDate><guid>https://yifeitao.com/diary-2008/</guid><description>&lt;p&gt;&lt;strong&gt;【2011整理按】&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2008，几乎没有上网的一年，看了很多电影。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="猜鸡蛋"&gt;猜鸡蛋&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2008-03-12 22:30:00 +0800&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;有一个流传很广的笑话。 某甲说：“你一定猜不到我今天身上带了三个鸡蛋！” 某乙说：“我猜一定是五个！” 有趣的是，你以为这是两个傻子，可是换个角度想，他们俩说不定在勾心斗角，至于某甲究竟带了几个鸡蛋还真是个谜，因为人们信口开河的能力从来都是毋庸置疑的。&lt;/p&gt;
&lt;h3 id="蹩脚的设计"&gt;蹩脚的设计&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2008 年 03 月 13 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;半夜里，有个面目模糊的家伙朝我开了一枪，于是我吓醒了，迷迷糊糊中听到蚊子的嗡嗡，这时候如果你不把蚊子弄死自己就想死了。这该死的气温！ 于是找蚊香，半梦游状态下想把蚊香的两个环环分开真是个技术活，我差点就抓狂了，我静下心来追忆以往的经验，分开了两个环但还是弄断了一个。 这蹩脚的设计是谁发明的？我可以想象到发明者得意的笑容，但想象不到这种方法除了浪费蚊香还有什么好处。 不过尽管鄙视我手笨好了，但是设计不应该是为笨人存在的吗？ 当然现在有很多更好的驱蚊产品了，可是传统的蚊香还是用量很大的，尤其是在广大的农村，不知道这蹩脚的设计还要存在多久。&lt;/p&gt;
&lt;h3 id="一点疑问"&gt;一点疑问&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2008 年 04 月 04 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;当年在百度知道赚分的时候，做了一件现在想来可耻的事情，把自己写的遗传算法解背包问题的垃圾代码给卖了&lt;/p&gt;
&lt;p&gt;贻害无穷啊，现在好不容易上一次百度，总是看到有小盆友问我要代码的。有些比较直接，就跟我欠他似的；有些很客气，叫老乡的也有。&lt;/p&gt;
&lt;p&gt;首先向小盆友们道个歉，实在是客观原因，本人基本上只能手机上网，代码没法给各位了。然后忍不住想啰嗦两句，为什么没有一个人是问算法的呢？显然是因为算法很简单吧，只是写成代码很烦人，这个我也深有体会，可是我实在想不出这个世界上有什么不烦人的，除了一样，我也很喜欢，就是不劳而获。&lt;/p&gt;
&lt;p&gt;由于中国的特殊性，网络发挥了很多意想不到的作用，比如通过字幕组和p2p软件方便的接触各国的文化，但同时冰冻了一代人的热血，我们在虚拟中醉生梦死，然后，还有抄袭作业。&lt;/p&gt;
&lt;p&gt;以上，有感而发，主要是鄙视自己&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论
varche
2008 年 04 月 18
很久不见！海风是否依旧怡人&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="苍白的纪念"&gt;苍白的纪念&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2008 年 05 月 31 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;没有人怀疑，文字是有力量的，但有时文字却是苍白的，比如汶川大地震后，尽管我心中百味杂陈，但却一言难发，况且我个人的小小情感在生命消逝的宏大背景下是何等的微不足道。但生者唯有卸除心伤，轻装前行。苍白文字，以为纪念。&lt;/p&gt;
&lt;p&gt;未曾感受大地的摇晃，但那些即使经过滤的惨象，仍使人难抑哀伤，那些天灾中夹杂的人祸更使人彷徨。或许可以说地震震出了我们的团结，尽管这个代价无可奈何的过于沉重。更加可怕的是我们再度沉醉于我们的易于掉落的眼泪与伟大胜利的幻象。&lt;/p&gt;
&lt;p&gt;从来，我们不曾战胜自然，却不提防自己给自己造的牢笼，那些碎成“豆腐渣”的教学楼应当是我们共同的耻辱与悔恨，它已经是个悲剧，而可能更可悲的是我们什么都不因此而明白。 选择什么样的记忆深埋？ 选择什么样的未来向往？ 选择什么样的眼泪流淌？&lt;/p&gt;
&lt;h3 id="八八这数字"&gt;八八这数字&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2008 年 06 月 04 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;问一个脑筋急转弯，百度贴吧的十二生肖中没有什么吧？这个答案很有名：百度没有鸡吧！&lt;/p&gt;
&lt;p&gt;再问一个难点的，百度贴吧从1到100的数字贴吧中，没有哪些吧？答案就不说了，有兴趣的可以去试一下。&lt;/p&gt;
&lt;p&gt;我无意评说这个答案，它是一道陌生的伤口，尽管我们讳疾忌医，我还是希望它能自己愈合，即使我们不曾关心它。&lt;/p&gt;
&lt;p&gt;我是想八卦下去，可是有些东西却太过沉重，让我再无继续的才气。&lt;/p&gt;</description><content:encoded><![CDATA[<p><strong>【2011整理按】</strong></p>
<p><strong>2008，几乎没有上网的一年，看了很多电影。</strong></p>
<h3 id="猜鸡蛋">猜鸡蛋</h3>
<p><em>2008-03-12 22:30:00 +0800</em></p>
<p>有一个流传很广的笑话。  某甲说：“你一定猜不到我今天身上带了三个鸡蛋！” 某乙说：“我猜一定是五个！” 有趣的是，你以为这是两个傻子，可是换个角度想，他们俩说不定在勾心斗角，至于某甲究竟带了几个鸡蛋还真是个谜，因为人们信口开河的能力从来都是毋庸置疑的。</p>
<h3 id="蹩脚的设计">蹩脚的设计</h3>
<p><em>发表于 2008 年 03 月 13 日</em></p>
<p>半夜里，有个面目模糊的家伙朝我开了一枪，于是我吓醒了，迷迷糊糊中听到蚊子的嗡嗡，这时候如果你不把蚊子弄死自己就想死了。这该死的气温！ 于是找蚊香，半梦游状态下想把蚊香的两个环环分开真是个技术活，我差点就抓狂了，我静下心来追忆以往的经验，分开了两个环但还是弄断了一个。 这蹩脚的设计是谁发明的？我可以想象到发明者得意的笑容，但想象不到这种方法除了浪费蚊香还有什么好处。 不过尽管鄙视我手笨好了，但是设计不应该是为笨人存在的吗？ 当然现在有很多更好的驱蚊产品了，可是传统的蚊香还是用量很大的，尤其是在广大的农村，不知道这蹩脚的设计还要存在多久。</p>
<h3 id="一点疑问">一点疑问</h3>
<p><em>发表于 2008 年 04 月 04 日</em></p>
<p>当年在百度知道赚分的时候，做了一件现在想来可耻的事情，把自己写的遗传算法解背包问题的垃圾代码给卖了</p>
<p>贻害无穷啊，现在好不容易上一次百度，总是看到有小盆友问我要代码的。有些比较直接，就跟我欠他似的；有些很客气，叫老乡的也有。</p>
<p>首先向小盆友们道个歉，实在是客观原因，本人基本上只能手机上网，代码没法给各位了。然后忍不住想啰嗦两句，为什么没有一个人是问算法的呢？显然是因为算法很简单吧，只是写成代码很烦人，这个我也深有体会，可是我实在想不出这个世界上有什么不烦人的，除了一样，我也很喜欢，就是不劳而获。</p>
<p>由于中国的特殊性，网络发挥了很多意想不到的作用，比如通过字幕组和p2p软件方便的接触各国的文化，但同时冰冻了一代人的热血，我们在虚拟中醉生梦死，然后，还有抄袭作业。</p>
<p>以上，有感而发，主要是鄙视自己</p>
<blockquote>
<p>评论
varche
2008 年 04 月 18
很久不见！海风是否依旧怡人</p>
</blockquote>
<h3 id="苍白的纪念">苍白的纪念</h3>
<p><em>发表于 2008 年 05 月 31 日</em></p>
<p>没有人怀疑，文字是有力量的，但有时文字却是苍白的，比如汶川大地震后，尽管我心中百味杂陈，但却一言难发，况且我个人的小小情感在生命消逝的宏大背景下是何等的微不足道。但生者唯有卸除心伤，轻装前行。苍白文字，以为纪念。</p>
<p>未曾感受大地的摇晃，但那些即使经过滤的惨象，仍使人难抑哀伤，那些天灾中夹杂的人祸更使人彷徨。或许可以说地震震出了我们的团结，尽管这个代价无可奈何的过于沉重。更加可怕的是我们再度沉醉于我们的易于掉落的眼泪与伟大胜利的幻象。</p>
<p>从来，我们不曾战胜自然，却不提防自己给自己造的牢笼，那些碎成“豆腐渣”的教学楼应当是我们共同的耻辱与悔恨，它已经是个悲剧，而可能更可悲的是我们什么都不因此而明白。 选择什么样的记忆深埋？ 选择什么样的未来向往？ 选择什么样的眼泪流淌？</p>
<h3 id="八八这数字">八八这数字</h3>
<p><em>发表于 2008 年 06 月 04 日</em></p>
<p>问一个脑筋急转弯，百度贴吧的十二生肖中没有什么吧？这个答案很有名：百度没有鸡吧！</p>
<p>再问一个难点的，百度贴吧从1到100的数字贴吧中，没有哪些吧？答案就不说了，有兴趣的可以去试一下。</p>
<p>我无意评说这个答案，它是一道陌生的伤口，尽管我们讳疾忌医，我还是希望它能自己愈合，即使我们不曾关心它。</p>
<p>我是想八卦下去，可是有些东西却太过沉重，让我再无继续的才气。</p>
<blockquote>
<p>评论
varche
2008 年 06 月 11
慎言 慎</p>
</blockquote>
<h3 id="黔驴计何时穷">黔驴计，何时穷</h3>
<p><em>发表于 2008 年 07 月 01 日</em></p>
<p>民不畏死，奈何以死惧之。</p>
<h3 id="归去来">归去来</h3>
<p><em>发表于 2008 年 10 月 16 日</em></p>
<p>今天是2008网志行动日（Blog Action Day），全世界的网志作者都写同一个主题——“消除贫穷”。也是Yisha7的回归日。</p>
<p>如果中国是个多面体,那它简直是个近似的球面了,但你一定要了解那贫困的一面。这一面某些国人开始选择视而不见,但如果等它强制呈现在我们面前,那一定是惨烈的</p>
<blockquote>
<p>评论
varche
2008 年 10 月 19
Welcome back, my friend</p>
</blockquote>
<h3 id="中国式逻辑之上海袭警案">中国式逻辑之上海袭警案</h3>
<p><em>发表于 2008 年 10 月 27 日</em></p>
<p>警察正常盘问嫌犯,没有殴打嫌犯,而且嫌犯精神正常,但嫌犯报复性杀害警察,所以嫌犯有罪</p>
<blockquote>
<p>评论
varche
2008 年 11 月 04
阿门 终于又看到一杀七</p>
</blockquote>
<h3 id="超越世界第一的精神病人数量">超越世界第一的精神病人数量</h3>
<p><em>发表于 2008 年 11 月 16 日</em></p>
<p>其实,单以中国巨大的人囗基数考量,精神病人数量第一也是理所当然,不过有关部门要把网瘾当成一种精神病,中国精神病人数量将迈上一个新的台阶,可喜可贺。</p>
<p>顺便弱弱地问一句,倘若网瘾患者发病的时候把别人给揍了是不是可以不负责任呢,我最近网瘾发作兼压力烦人,正想找个人来揍一揍</p>
<blockquote>
<p>评论
varche
2008 年 11 月 16
换了主题 让人耳目一新啊 一杀七最近在干啥
nianzu
2009 年 03 月 12
呵呵，大家压力这么大，正
在抓虾看到的你的blog，欢迎订阅我的Blog。</p>
</blockquote>
]]></content:encoded><category>life</category><category domain="tags">年度总结</category><category domain="tags">生活</category></item><item><title>苍井优和苍井空，傻傻分不清楚</title><link>https://yifeitao.com/two-aoi/</link><pubDate>Fri, 14 Nov 2008 00:00:00 +0000</pubDate><guid>https://yifeitao.com/two-aoi/</guid><description>&lt;p&gt;写这个题目实在不是哗众取宠，更无意去评价谁，而实属无可奈何。有段时间管理一个苍井优的粉丝群，每天都少不了要拒绝一批不认真看题目的人，他们冲着苍井空的大名兴高采烈而来。可是真正让人无语的是，即使只是错看的一部分人，其数量也堪比正常视力的优粉。&lt;/p&gt;
&lt;p&gt;苍井优在日本算是八零后演员中气质独特、演技出众、人气最高之一了，但在国内却难敌AV女优苍井空，尤其是男性影迷更是少见。一个事实是，搜狗输入法收录词条“苍井优”要晚于“苍井空”。现实就是如此，中国男性网民了解日本的方式就是听日本女人的“亚美的”，意淫日本女人是一些愤青意淫日本的不可或缺的部分。&lt;/p&gt;
&lt;p&gt;无论是以敌人计，还是以朋友计，我们对日本的了解都缺乏而错位得可怜，如果以为AV女优和地道战就是一切，那么日本将作为一个中国人解不开的结永远存在。我们已经睁眼看世界了，却不曾去看这个世界的全貌，意淫的世界和现实的世界通过我们偏见短视的方式而交汇，宣泄了情感，迷失了理智。&lt;/p&gt;</description><content:encoded><![CDATA[<p>写这个题目实在不是哗众取宠，更无意去评价谁，而实属无可奈何。有段时间管理一个苍井优的粉丝群，每天都少不了要拒绝一批不认真看题目的人，他们冲着苍井空的大名兴高采烈而来。可是真正让人无语的是，即使只是错看的一部分人，其数量也堪比正常视力的优粉。</p>
<p>苍井优在日本算是八零后演员中气质独特、演技出众、人气最高之一了，但在国内却难敌AV女优苍井空，尤其是男性影迷更是少见。一个事实是，搜狗输入法收录词条“苍井优”要晚于“苍井空”。现实就是如此，中国男性网民了解日本的方式就是听日本女人的“亚美的”，意淫日本女人是一些愤青意淫日本的不可或缺的部分。</p>
<p>无论是以敌人计，还是以朋友计，我们对日本的了解都缺乏而错位得可怜，如果以为AV女优和地道战就是一切，那么日本将作为一个中国人解不开的结永远存在。我们已经睁眼看世界了，却不曾去看这个世界的全貌，意淫的世界和现实的世界通过我们偏见短视的方式而交汇，宣泄了情感，迷失了理智。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">文化</category><category domain="tags">日本</category></item><item><title>观影列表2008</title><link>https://yifeitao.com/movies-2008/</link><pubDate>Fri, 14 Nov 2008 00:00:00 +0000</pubDate><guid>https://yifeitao.com/movies-2008/</guid><description>&lt;h3 id="男才女貌淡雅的小城故事"&gt;《男才女貌》：淡雅的小城故事&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;20080222&lt;/em&gt;
很偶然地看了《男才女貌》这部片子，因为这个俗得可爱的片名和高圆圆的名字，一直很喜欢这样如兰花般淡雅而不张扬的女演员。&lt;/p&gt;
&lt;p&gt;高圆圆所饰演的听力障碍者是个幼儿园老师也是个不错的舞者，余文乐所饰演的交警是个可爱但胸无大志的家伙，他们的故事简单到可以用水道渠成来形容；另外一个几乎平行的故事发生在日本演员与中国翻译之间。声称看过的室友记不起两个故事的交叉点，不过我隐约猜到了两个男主角是未曾谋面的兄弟，但看不出有发生戏剧冲突的必要。故事也如我所愿，平淡而幸福的结束了。&lt;/p&gt;
&lt;p&gt;不知道是否人人都喜欢这种平淡的结尾，但毕竟生活的真实更多的就是平淡的幸福——很多剧中人无法求得的生活。生活的真实当然还有更吸引人的部分——那平淡背后暗涌的潮流，比如片中爱的萌动与坚持，痛的抉择，以及感情的包容、执拗与释放。&lt;/p&gt;
&lt;p&gt;尽管不知道取景于哪个小城，但小城到了电影语言中总有一份优雅存在，于是我就会原谅电影尚有的缺憾，喜欢上了这个淡雅的故事。&lt;/p&gt;
&lt;h3 id="蝴蝶飞遗忘抑或解脱"&gt;《蝴蝶飞》：遗忘抑或解脱&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2008-3-17海边&lt;/em&gt;
杜琪峰导这总柔软的片子，第一感觉是怪怪的，枪战片风格渗进恐怖噱头爱情片；李冰冰与周渝民的组合，感觉也是怪怪的，京腔混合台式国语。如此搭配，起点似乎只有七十分。&lt;/p&gt;
&lt;p&gt;故事中男女主角因小事吵架而间接导致男的车祸身亡，女的生活在痛苦与负疚中不得安宁，在停止服用药物后看到了男的的鬼魂。不过这不是一个恐怖片，而是爱情片，男的和女的互相帮助（？），最终都获得了解脱，蝴蝶飞是灵魂解脱的外化象征。&lt;/p&gt;
&lt;p&gt;比起阴魂不散，这更像说的是人内心的自我救赎，想要简单的遗忘是人遇到问题绕着走的本性，只有直面痛苦的根源，求得解脱，这时候，忘记与否，便不再重要。&lt;/p&gt;
&lt;h3 id="傲慢与偏见题中之义"&gt;《傲慢与偏见》：题中之义&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2008 年 03 月 25 日&lt;/em&gt;
总的来说，我是个没有什么文化的人，在看到这部2006版的名著改编电影前对于《傲慢与偏见》的了解仅限于标题，所以无从去比较原著和几个版本的电影，而且看过后我就几乎将这个爱情故事忘得一干二净而只记得“傲慢与偏见”这个标题。抛开那些我不熟悉的英伦贵族风情和脱离“生产生活”的爱情不谈，这个标题也显示了作品的价值。作品对人性的概括可谓毒辣。&lt;/p&gt;
&lt;p&gt;傲慢和偏见是人心灵常见的两条毒蛇，傲慢由内到外，偏见由外及内。因为看不清自己也看不清他人，误会与隔膜乃至冲突因此而生，一言以蔽之，自以为是。追求高贵是人的可贵之处之一，但常常由此伴生的傲慢与偏见却会妨碍真正高贵的产生。故事中男女主角的爱情战胜了心灵的毒蛇,这是个案,也是希冀。人与人之间刺猥般无法接近的寂寞苦痛经久不衰，历久弥新。&lt;/p&gt;
&lt;h3 id="我的最爱一场刻意的精彩"&gt;《我的最爱》：一场刻意的精彩&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2008 年 07 月 06 日&lt;/em&gt;
叶念琛的残酷爱情三部曲到了终结曲，先前两部的出乎意料的成功使得导演难有再大的突破，所有这一切残酷稍嫌刻意，但仍不失为华语爱情战争片（新片种定义，呵呵）中的精彩作品。 前作中结尾错愕，大获成功，本作中的结尾将两个女主角的爱情线交叉，显得有些强为，但与前作中仅有观众对剧中人被蒙在鼓里而唏嘘不已不同，本作中剧中人终于了解了残酷的真相，不知道这算不算是希望，大概是真实的残酷与虚幻的幸福的选择题。&lt;/p&gt;
&lt;p&gt;本作有浪子回头却上不了岸的传统桥段，有近似商战的骗术，描绘了很多种冤孽爱情，但无一例外都不圆满，都被自私伤害。观者看到这种片面的深刻，电影的归电影，仍是有闪光之处的。 关于演员，几个配角其实都很有意思，而邓丽欣的主角则先天性形象单薄，但算是将其纯度展现无遗。&lt;/p&gt;
&lt;h3 id="分手男女关于九个橙子的故事"&gt;《分手男女》：关于九个橙子的故事&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2008 年 07 月 08 日&lt;/em&gt;
片子来自于《Friends》爱好者，刚开始看我实在进入不了状态，Jenifer，Rachel傻傻分不清楚。&lt;/p&gt;
&lt;p&gt;九个橙子是不存在的，它们本应该和男主角买的三个一起组合成符合女主角要求的十二个橙子，于是同一切经历狂风巨浪考验却被日常点滴谋杀的爱情故事一样，电影为我们详细介绍了一段爱情在不断升级的愚蠢的相互伤害与试探中走向灭亡的典型案例。 现实中见过了太多的争吵，而看电影中明星们争吵则是感觉奇特。她们是美丽优雅的典范，又似乎是一切归于庸俗的例证，比如现实中离了婚的Jennifer。&lt;/p&gt;
&lt;p&gt;其实我等凡夫俗子大可不必发愁，只要别把别人太当回事儿，更别把自己太当回事儿，平平淡淡才是真，老祖宗说的。&lt;/p&gt;
&lt;h3 id="达芬奇密码收获平淡意义的宗教思考"&gt;《达芬奇密码》：收获平淡意义的宗教思考&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2008 年 07 月 11 日&lt;/em&gt;
可以想象由于题材特殊，本电影作品必然吸引同名畅销书的读者，而后又必然遭唾弃。就未看过原著的本人而言，”密码“的故事仍显得有些仓促，，导致整部影片弥漫着《夺宝奇兵》的味道。&lt;/p&gt;
&lt;p&gt;作为一部商业片，导演显然没有要深入探讨宗教的意味。由于原作对基督教颇含质疑，已经引起巨大的争议，电影在处理宗教的深重题材时，用了轻松解读。耶稣是人抑或是神，其实都不重要，重要的是他所代表的基督教在引导人向善的过程中所发挥的力量。平淡粗浅的智慧往往也是真正的大智慧，而宗教往往会因形式太过深重而禁锢内涵。 中国历来以使用主义至上的宗教信仰而传承，这使得中国人不易狂热，也不易虔诚。《达芬奇密码》对国人的最大吸引力其实应该是在密码上，可惜电影没有超水平的发挥，浪费了小说的精彩吧。&lt;/p&gt;
&lt;h3 id="青蛇夺目妖娆"&gt;《青蛇》：夺目妖娆&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2008 年 07 月 13 日&lt;/em&gt;
《青蛇》这部电影看了很多次，但没有一次看完，因为它总在电视荧屏上出现。都不记得第一次看时自己是多大，只是感觉雪花点挡不住电影中的两个蛇妖的妖娆，甚至我都不认识什么王祖贤、张曼玉的。&lt;/p&gt;
&lt;p&gt;从女娲造人的传说来看，蛇其实一定程度上一直是多子、生殖力的图腾，据说《白蛇传》这个民间故事本来也不是那么纯爱，而是带了色的，只不过流于纸张的已经过了文人们的修饰。到了那部所谓经典的《新白娘子传奇》中，许仙索性让个女人来演了，白素贞完全贤良淑德了，简直妖气全无，着实令人失望。 我得说得堂皇一点，《青蛇》的故事（小说及电影） 拯救了民间文化。感谢王祖贤和张曼玉，完美的表现了蛇妖曼妙的腰肢、摄魂的呓语，想到两个人在大街上学人走路扭啊扭，实在是有趣而美妙。&lt;/p&gt;
&lt;p&gt;《青蛇》假装抽离人的角度来看待人的爱情，发现有奉献与甜蜜，更有自私与痛苦，即使是一条修行千年的蛇，参加这个游戏，依然是no pains，no gains。&lt;/p&gt;
&lt;h3 id="becoming-jane其中一种珍贵"&gt;《Becoming Jane》:其中一种珍贵&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;2008 年 07 月 15 日&lt;/em&gt;
珍贵的爱情有许多种，包罗万象的自私与包容的感情为艺术创作提供了无尽的灵感与素材，其中一种珍贵是不可占有的珍贵，这样的故事只能是无奈的凄美。&lt;/p&gt;</description><content:encoded><![CDATA[<h3 id="男才女貌淡雅的小城故事">《男才女貌》：淡雅的小城故事</h3>
<p><em>20080222</em>
很偶然地看了《男才女貌》这部片子，因为这个俗得可爱的片名和高圆圆的名字，一直很喜欢这样如兰花般淡雅而不张扬的女演员。</p>
<p>高圆圆所饰演的听力障碍者是个幼儿园老师也是个不错的舞者，余文乐所饰演的交警是个可爱但胸无大志的家伙，他们的故事简单到可以用水道渠成来形容；另外一个几乎平行的故事发生在日本演员与中国翻译之间。声称看过的室友记不起两个故事的交叉点，不过我隐约猜到了两个男主角是未曾谋面的兄弟，但看不出有发生戏剧冲突的必要。故事也如我所愿，平淡而幸福的结束了。</p>
<p>不知道是否人人都喜欢这种平淡的结尾，但毕竟生活的真实更多的就是平淡的幸福——很多剧中人无法求得的生活。生活的真实当然还有更吸引人的部分——那平淡背后暗涌的潮流，比如片中爱的萌动与坚持，痛的抉择，以及感情的包容、执拗与释放。</p>
<p>尽管不知道取景于哪个小城，但小城到了电影语言中总有一份优雅存在，于是我就会原谅电影尚有的缺憾，喜欢上了这个淡雅的故事。</p>
<h3 id="蝴蝶飞遗忘抑或解脱">《蝴蝶飞》：遗忘抑或解脱</h3>
<p><em>2008-3-17海边</em>
杜琪峰导这总柔软的片子，第一感觉是怪怪的，枪战片风格渗进恐怖噱头爱情片；李冰冰与周渝民的组合，感觉也是怪怪的，京腔混合台式国语。如此搭配，起点似乎只有七十分。</p>
<p>故事中男女主角因小事吵架而间接导致男的车祸身亡，女的生活在痛苦与负疚中不得安宁，在停止服用药物后看到了男的的鬼魂。不过这不是一个恐怖片，而是爱情片，男的和女的互相帮助（？），最终都获得了解脱，蝴蝶飞是灵魂解脱的外化象征。</p>
<p>比起阴魂不散，这更像说的是人内心的自我救赎，想要简单的遗忘是人遇到问题绕着走的本性，只有直面痛苦的根源，求得解脱，这时候，忘记与否，便不再重要。</p>
<h3 id="傲慢与偏见题中之义">《傲慢与偏见》：题中之义</h3>
<p><em>2008 年 03 月 25 日</em>
总的来说，我是个没有什么文化的人，在看到这部2006版的名著改编电影前对于《傲慢与偏见》的了解仅限于标题，所以无从去比较原著和几个版本的电影，而且看过后我就几乎将这个爱情故事忘得一干二净而只记得“傲慢与偏见”这个标题。抛开那些我不熟悉的英伦贵族风情和脱离“生产生活”的爱情不谈，这个标题也显示了作品的价值。作品对人性的概括可谓毒辣。</p>
<p>傲慢和偏见是人心灵常见的两条毒蛇，傲慢由内到外，偏见由外及内。因为看不清自己也看不清他人，误会与隔膜乃至冲突因此而生，一言以蔽之，自以为是。追求高贵是人的可贵之处之一，但常常由此伴生的傲慢与偏见却会妨碍真正高贵的产生。故事中男女主角的爱情战胜了心灵的毒蛇,这是个案,也是希冀。人与人之间刺猥般无法接近的寂寞苦痛经久不衰，历久弥新。</p>
<h3 id="我的最爱一场刻意的精彩">《我的最爱》：一场刻意的精彩</h3>
<p><em>2008 年 07 月 06 日</em>
叶念琛的残酷爱情三部曲到了终结曲，先前两部的出乎意料的成功使得导演难有再大的突破，所有这一切残酷稍嫌刻意，但仍不失为华语爱情战争片（新片种定义，呵呵）中的精彩作品。 前作中结尾错愕，大获成功，本作中的结尾将两个女主角的爱情线交叉，显得有些强为，但与前作中仅有观众对剧中人被蒙在鼓里而唏嘘不已不同，本作中剧中人终于了解了残酷的真相，不知道这算不算是希望，大概是真实的残酷与虚幻的幸福的选择题。</p>
<p>本作有浪子回头却上不了岸的传统桥段，有近似商战的骗术，描绘了很多种冤孽爱情，但无一例外都不圆满，都被自私伤害。观者看到这种片面的深刻，电影的归电影，仍是有闪光之处的。 关于演员，几个配角其实都很有意思，而邓丽欣的主角则先天性形象单薄，但算是将其纯度展现无遗。</p>
<h3 id="分手男女关于九个橙子的故事">《分手男女》：关于九个橙子的故事</h3>
<p><em>2008 年 07 月 08 日</em>
片子来自于《Friends》爱好者，刚开始看我实在进入不了状态，Jenifer，Rachel傻傻分不清楚。</p>
<p>九个橙子是不存在的，它们本应该和男主角买的三个一起组合成符合女主角要求的十二个橙子，于是同一切经历狂风巨浪考验却被日常点滴谋杀的爱情故事一样，电影为我们详细介绍了一段爱情在不断升级的愚蠢的相互伤害与试探中走向灭亡的典型案例。 现实中见过了太多的争吵，而看电影中明星们争吵则是感觉奇特。她们是美丽优雅的典范，又似乎是一切归于庸俗的例证，比如现实中离了婚的Jennifer。</p>
<p>其实我等凡夫俗子大可不必发愁，只要别把别人太当回事儿，更别把自己太当回事儿，平平淡淡才是真，老祖宗说的。</p>
<h3 id="达芬奇密码收获平淡意义的宗教思考">《达芬奇密码》：收获平淡意义的宗教思考</h3>
<p><em>2008 年 07 月 11 日</em>
可以想象由于题材特殊，本电影作品必然吸引同名畅销书的读者，而后又必然遭唾弃。就未看过原著的本人而言，”密码“的故事仍显得有些仓促，，导致整部影片弥漫着《夺宝奇兵》的味道。</p>
<p>作为一部商业片，导演显然没有要深入探讨宗教的意味。由于原作对基督教颇含质疑，已经引起巨大的争议，电影在处理宗教的深重题材时，用了轻松解读。耶稣是人抑或是神，其实都不重要，重要的是他所代表的基督教在引导人向善的过程中所发挥的力量。平淡粗浅的智慧往往也是真正的大智慧，而宗教往往会因形式太过深重而禁锢内涵。 中国历来以使用主义至上的宗教信仰而传承，这使得中国人不易狂热，也不易虔诚。《达芬奇密码》对国人的最大吸引力其实应该是在密码上，可惜电影没有超水平的发挥，浪费了小说的精彩吧。</p>
<h3 id="青蛇夺目妖娆">《青蛇》：夺目妖娆</h3>
<p><em>2008 年 07 月 13 日</em>
《青蛇》这部电影看了很多次，但没有一次看完，因为它总在电视荧屏上出现。都不记得第一次看时自己是多大，只是感觉雪花点挡不住电影中的两个蛇妖的妖娆，甚至我都不认识什么王祖贤、张曼玉的。</p>
<p>从女娲造人的传说来看，蛇其实一定程度上一直是多子、生殖力的图腾，据说《白蛇传》这个民间故事本来也不是那么纯爱，而是带了色的，只不过流于纸张的已经过了文人们的修饰。到了那部所谓经典的《新白娘子传奇》中，许仙索性让个女人来演了，白素贞完全贤良淑德了，简直妖气全无，着实令人失望。 我得说得堂皇一点，《青蛇》的故事（小说及电影） 拯救了民间文化。感谢王祖贤和张曼玉，完美的表现了蛇妖曼妙的腰肢、摄魂的呓语，想到两个人在大街上学人走路扭啊扭，实在是有趣而美妙。</p>
<p>《青蛇》假装抽离人的角度来看待人的爱情，发现有奉献与甜蜜，更有自私与痛苦，即使是一条修行千年的蛇，参加这个游戏，依然是no pains，no gains。</p>
<h3 id="becoming-jane其中一种珍贵">《Becoming Jane》:其中一种珍贵</h3>
<p><em>2008 年 07 月 15 日</em>
珍贵的爱情有许多种，包罗万象的自私与包容的感情为艺术创作提供了无尽的灵感与素材，其中一种珍贵是不可占有的珍贵，这样的故事只能是无奈的凄美。</p>
<p>打着爱情至上而伤害他人的人其实难以心安理得，得不到祝福的爱情至少应得到谅解，纠结的爱情故事在现实中常常难以圆满，《傲慢与偏见》的故事有个圆满的结局，而作者Jane在现实中却痛失良缘。 Jane在与相爱的人私奔的途中主动放弃了，男主角背负着振兴家族的重任，Jane不愿为私心陷其于不义，而她的终生未嫁如果仅和这件事联系，那么显得太过自我折磨。</p>
<p>仅就本故事而言，一个相信向往爱情的爱情小说作家却没有选择爱情至上，这个高尚、无奈而压抑的选择，故事的结尾，男主角结婚生子，美丽的女儿也取名Jane。 爱情有时会被牺牲，但被牺牲而不得的却容易深藏人心经久不灭，这是人心的魔术。</p>
<p>###《血战1944》：战争绝无美感
<em>2008 年 09 月 21 日</em>
对于芬兰，除了洛基亚，我几乎一无所知。 但这不妨碍我去欣赏一部芬兰战争大片，然后去触碰那一段历史，芬兰在德国和苏联的双重压力下在二战中最终保持了领土与精神上的相对独立，不能不说是一个奇迹。</p>
<p>对于芬兰的二战片竟然是反抗苏联入侵我的第一反应是奇怪，看来历史这位姑娘，我们给抹上了太多的粉而记不起真的面容。这是电影的力量，让一个中国人去感受芬兰人半个多世纪前的呼吸。</p>
<p>如果有人告诉你这是一部纪录片，你或许也不会怀疑。你可以从那些不做作，不夸张，从头到尾在山水之间飞舞的子弹中读到人类追求自由、舍生取义的伟大、崇高，但却读不到任何战争的美感，它毁灭生命于你眼前，你不得不去思考人类之间更文明的相处之道。 这或许不是一个好的故事片，但它比那些视战争如儿戏，随意刻画英雄主义的片子更值得尊敬。</p>
<h3 id="再见巴法纳你如何向孩子说">《再见巴法纳》：你如何向孩子说</h3>
<p><em>2008 年 10 月 10 日</em>
”巴法纳“是非洲土语中最好的伙伴的意思，与黑人小朋友有过童年记忆的主人公隐藏着这一段感情，成了一个彻头彻尾的种族主义者，成为南非灭绝人性的种族隔离政策的执行者，他多年的工作就是利用自己的语言优势，监视黑人争取平等的领袖曼德拉。</p>
<p>影片是从这个监狱工作者的一生为蓝本，描述了他人生信念与态度的转变，这一切正是对曼德拉坚韧不拔一生绝佳的侧面描写。 给我印象深刻的是使主角心灵发生微妙变化，男主角和自己的家人目睹警察检查黑人通信证的恶行，一个婴儿被摔在地上，男主角无动于衷，他的女儿吓得不知所措，悲伤地带着疑问：”爸爸，你为什么不救她？“</p>
<p>如果一切是你习以为常的邪恶，你如何向孩子说？ 如果一切是你融入其中的谎言，你如何对孩子说？ 如果一切是你不慎丢失的纯真，你如何向孩子说？ 只要还有”救救孩子“的呼号，人类必可自救。</p>
<h3 id="最遥远的距离也要大步向前走">《最遥远的距离》：也要大步向前走</h3>
<p><em>2008-3-17海边</em>
台湾的艺术影像，有着坚定的独特风格，在大片的夹缝中生存，却又有着与大陆观众很容易共鸣的文化根基。最遥远的距离是什么呢？或许每个人都会在片中找到契合自己的答案，但我感受最深的，是即使穿着潜水服在高速路上，也要大步向前走。</p>
<p>故事中的三个主人公都在寻找，寻找失去的爱情，更是寻找心灵的家园。录音师用寄录音带的方式维持心中的女友，尽管已经分手；心理治疗师寻找初恋情人治疗现实的破败婚姻之痛；偶然获得录音带的上班族女孩不堪三角恋与枯燥生活重压去寻找那些声音。 生活在这里，耳机里的声音却不再这里，人在这里，心却并不在这里，最遥远的距离，或许只是自己和自己的距离，大步向前走，或许也并不能到达终点，但我们别无选择。</p>
<h3 id="楚门的世界在大树底下看蚂蚁">《楚门的世界》：在大树底下看蚂蚁</h3>
<p><em>2008-9-21海边</em>
我的一位仁兄在博客题记中曾经大约是这样明目张胆地装的：小时候，别人在大树底下看蚂蚁，我趴在窗台上思考人生。其实事实也许相去不远，我们每个人大约都看过蚂蚁，也都思考过人生。 小时候，我们给为生计奔波的蚂蚁制造障碍，宛如上帝之手可以控制它们，《楚门的世界》嘲弄了这种妄想。</p>
<p>即使没有看过《黑客帝国》，作为一个思维健全的孩童的我，也曾怀疑我们人类只是外星人的玩物，我的想象力在消退，这个怀疑依然是个怀疑。 这个世界时常把它灰暗虚伪的一面呈现给你，让你习以为常。于是我们常常告诫自己不要麻木，要清醒的看到自己的伤口。是的，有人总要给你创造一个幻境的世界，妄想做你的上帝，但这都与外星人无关。 有很多美好与真实建立在一个彻底的谎言上，电影引发的思考远远超越了其故事性，电影中的楚门回到了现实，可是现实是不是另一个楚门的世界呢？如果你被逗蚂蚁被咬过，请相信自己能看到真正的上帝！</p>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">观影</category></item><item><title>韩寒为什么是个大杀器</title><link>https://yifeitao.com/why-hanhan-is-a-bomb/</link><pubDate>Wed, 25 Jun 2008 00:00:00 +0000</pubDate><guid>https://yifeitao.com/why-hanhan-is-a-bomb/</guid><description>&lt;p&gt;韩寒在我的高中记忆中是个模糊而有趣的形象，模糊是因为在题海搏杀的我没有试图真正了解过一个不参加高考的写着老成文字的不及格少年，有趣是因为他那些类似语文考试难及格的表现不停的给我们的教育扇耳光而又那么的富有戏剧性。再次熟悉这个名字，他已经是个赛车手，只在博客上对看不惯的人和事发一通牢骚。我不明白为何他的言论总是会引发激烈的讨论，或者说是某些人对他上纲上线的压制与抨击，比如这次，他说巴金的文采不好。&lt;/p&gt;
&lt;p&gt;巴金本人谈及写作曾说过，自己是个不善言辞之人，而心中郁积的浓烈感情无处释放，所以在作品中加以表现，读过巴金的人应该可以体会。CCTV10的《人物》栏目其实也说过巴金的作品文采不及感情的充沛，不过和韩寒的评价不同的是，这个评价仍然是放在一个膜拜的语境中进行的。韩寒之所以是个大杀器，几句话就触及一些人的G点，或许是因为他的评价语境没有膜拜之情，倒不是因为他说巴金等人文采不够。韩寒总是像《皇帝的新衣》中的小孩，看到什么就说什么，可是我们的社会却没有童话中宽容，对于一个作家文采的评论在今时今日仍然无限的上纲上线。&lt;/p&gt;
&lt;p&gt;如果巴金天堂有知，或许也会很惆怅吧，不是因为有人说他文采不好，而是这个他深爱的国家的人民依然狭隘，把自己做成一尊神像膜拜，却鲜有人去理解自己。中国人敬很多神，但却是个宗教无力的国家，我们对于文学大师的膜拜也大抵如此。大师们的光芒似乎也能点亮自己，有一天，突然有个人说，这个光芒其实颜色不好看，我们深深的受伤了，这句话像个大规模杀伤性武器，揭穿了我们虚伪的信仰，即使我们不了解所信仰的是什么，但那看似莫名其妙就被伤害的感情作祟，反驳起来在也再不需要逻辑，文革遗产有成熟的话语体系供人使用。&lt;/p&gt;
&lt;p&gt;我其实并不完全赞同韩寒对巴金的评价，可是我更看不惯的是某些人那容易被激怒的可怜的心，越是疯狂压制的语言背后越是孱弱的人性，越是道貌岸然的高标背后越是低级的愤怒。&lt;/p&gt;</description><content:encoded><![CDATA[<p>韩寒在我的高中记忆中是个模糊而有趣的形象，模糊是因为在题海搏杀的我没有试图真正了解过一个不参加高考的写着老成文字的不及格少年，有趣是因为他那些类似语文考试难及格的表现不停的给我们的教育扇耳光而又那么的富有戏剧性。再次熟悉这个名字，他已经是个赛车手，只在博客上对看不惯的人和事发一通牢骚。我不明白为何他的言论总是会引发激烈的讨论，或者说是某些人对他上纲上线的压制与抨击，比如这次，他说巴金的文采不好。</p>
<p>巴金本人谈及写作曾说过，自己是个不善言辞之人，而心中郁积的浓烈感情无处释放，所以在作品中加以表现，读过巴金的人应该可以体会。CCTV10的《人物》栏目其实也说过巴金的作品文采不及感情的充沛，不过和韩寒的评价不同的是，这个评价仍然是放在一个膜拜的语境中进行的。韩寒之所以是个大杀器，几句话就触及一些人的G点，或许是因为他的评价语境没有膜拜之情，倒不是因为他说巴金等人文采不够。韩寒总是像《皇帝的新衣》中的小孩，看到什么就说什么，可是我们的社会却没有童话中宽容，对于一个作家文采的评论在今时今日仍然无限的上纲上线。</p>
<p>如果巴金天堂有知，或许也会很惆怅吧，不是因为有人说他文采不好，而是这个他深爱的国家的人民依然狭隘，把自己做成一尊神像膜拜，却鲜有人去理解自己。中国人敬很多神，但却是个宗教无力的国家，我们对于文学大师的膜拜也大抵如此。大师们的光芒似乎也能点亮自己，有一天，突然有个人说，这个光芒其实颜色不好看，我们深深的受伤了，这句话像个大规模杀伤性武器，揭穿了我们虚伪的信仰，即使我们不了解所信仰的是什么，但那看似莫名其妙就被伤害的感情作祟，反驳起来在也再不需要逻辑，文革遗产有成熟的话语体系供人使用。</p>
<p>我其实并不完全赞同韩寒对巴金的评价，可是我更看不惯的是某些人那容易被激怒的可怜的心，越是疯狂压制的语言背后越是孱弱的人性，越是道貌岸然的高标背后越是低级的愤怒。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">社会观察</category><category domain="tags">文化</category></item><item><title>余秋雨老师，对不起我很邪恶</title><link>https://yifeitao.com/sorry-for-yuqiuyu/</link><pubDate>Sun, 08 Jun 2008 00:00:00 +0000</pubDate><guid>https://yifeitao.com/sorry-for-yuqiuyu/</guid><description>&lt;p&gt;对于大多数如我的闲人，地震或许已经开始成为过去时，我们开始怀念娱乐节目和肥皂剧，这不是我们没有爱心，只是再长的伤痛也有要埋藏的一天，那么余秋雨老师是抱着何种心情在博客上说要死难学生的家长平息愤怒，以免影响救灾工作和被西方反华势力利用呢？我们闲人没有切身感受，所以我们的悲伤、感动、愤怒都很浅薄，可是我们绝对没有权利让人为了一个子虚乌有的理由停息愤怒。&lt;/p&gt;
&lt;p&gt;平息愤怒的只有真相和对于责任的承担，灾后重建是有很多工作要做，可是这些工作即使要说有轻重缓急也绝不是矛盾的关系，灾情再紧急也不需要所有人都去干一件事，灾后对责任的追究和反思是很重要的，没有这个工作，我们只有在灾难面前一次次流泪，而找不到进步的空间。&lt;/p&gt;
&lt;p&gt;至于余秋雨老师为我们制造假想敌，实在是更像一个不成熟的愤青会做的工作，那种家丑不可外扬的闭塞狭隘心态实在是很可怜，我不否认有西方反华势力的存在，可是他们不是掩盖我们国内问题的万能遮羞布。&lt;/p&gt;
&lt;p&gt;余老师的走红大约是因为凤凰卫视的节目，后来我也不幸看过那本《文化苦旅》，能把旅游节目做到那个份上也算难得了，尽管难免有些矫情；后来有段时间余老师的本家余杰抓住余老师在文革中的作为不放，非得要他道歉，不过不了了之，余老师继续做他的大众文化偶像，在青歌赛上天天鄙视年轻人，卖弄自己的所谓文化；再后来余老师发表了叫死难家长闭嘴的文章，被网友的口水淹死了，网友很暴力，都懒的去揣测他的写作动机。&lt;/p&gt;
&lt;p&gt;要写完时，想到一件往事，当初老友发短信来问说要参加余秋雨的某某报告会，有什么想问的吗，我说我想问他你觉得一个作家写的东西都是发自真心的吗，朋友说我很邪恶，后来事情的结局是与老师忙于和领导在一起，报告会被取消了。&lt;/p&gt;
&lt;p&gt;好吧，我真的很邪恶。&lt;/p&gt;</description><content:encoded><![CDATA[<p>对于大多数如我的闲人，地震或许已经开始成为过去时，我们开始怀念娱乐节目和肥皂剧，这不是我们没有爱心，只是再长的伤痛也有要埋藏的一天，那么余秋雨老师是抱着何种心情在博客上说要死难学生的家长平息愤怒，以免影响救灾工作和被西方反华势力利用呢？我们闲人没有切身感受，所以我们的悲伤、感动、愤怒都很浅薄，可是我们绝对没有权利让人为了一个子虚乌有的理由停息愤怒。</p>
<p>平息愤怒的只有真相和对于责任的承担，灾后重建是有很多工作要做，可是这些工作即使要说有轻重缓急也绝不是矛盾的关系，灾情再紧急也不需要所有人都去干一件事，灾后对责任的追究和反思是很重要的，没有这个工作，我们只有在灾难面前一次次流泪，而找不到进步的空间。</p>
<p>至于余秋雨老师为我们制造假想敌，实在是更像一个不成熟的愤青会做的工作，那种家丑不可外扬的闭塞狭隘心态实在是很可怜，我不否认有西方反华势力的存在，可是他们不是掩盖我们国内问题的万能遮羞布。</p>
<p>余老师的走红大约是因为凤凰卫视的节目，后来我也不幸看过那本《文化苦旅》，能把旅游节目做到那个份上也算难得了，尽管难免有些矫情；后来有段时间余老师的本家余杰抓住余老师在文革中的作为不放，非得要他道歉，不过不了了之，余老师继续做他的大众文化偶像，在青歌赛上天天鄙视年轻人，卖弄自己的所谓文化；再后来余老师发表了叫死难家长闭嘴的文章，被网友的口水淹死了，网友很暴力，都懒的去揣测他的写作动机。</p>
<p>要写完时，想到一件往事，当初老友发短信来问说要参加余秋雨的某某报告会，有什么想问的吗，我说我想问他你觉得一个作家写的东西都是发自真心的吗，朋友说我很邪恶，后来事情的结局是与老师忙于和领导在一起，报告会被取消了。</p>
<p>好吧，我真的很邪恶。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">社会观察</category><category domain="tags">评论</category></item><item><title>智商与藏拙</title><link>https://yifeitao.com/iq-and-silence/</link><pubDate>Tue, 03 Jun 2008 00:00:00 +0000</pubDate><guid>https://yifeitao.com/iq-and-silence/</guid><description>&lt;p&gt;这个题目开得有点大，其实是看了varcher同学的blog有感而发，虽然上网不方便，但一直关注着老朋友们的blog，看到曾经一起奋斗并颓废的我们生活开始千姿百态，可是那些共通的东西还会灵光乍现，比如又说到我们常说的“在网上，人的智商是没有下限的”。&lt;/p&gt;
&lt;p&gt;当初我是个任凭楼主说得天花乱坠也不回帖的人，不在网上发表只字片言，因为觉得网上鱼龙混杂，没有力气跟人掐架，后来我却开始偶尔回帖和写blog，因为我认识到光有不屑是很不健康的想法，在网上混不发出声音当然不会犯傻。&lt;/p&gt;
&lt;p&gt;我常常忍不住骂某些人智商没有下限，可是发现要反驳他们的言论实在是一件过于庞大的工程，但是没有人站出来骂几句却又让他们以为自己很伟大光荣正确，还让人留下个网友很SB的口实。&lt;/p&gt;
&lt;p&gt;其实能上网的人智商不会没有下限，至少还应该比较正常。只是在真实的生活中，我们夹着尾巴做人习惯了，懂得藏拙的人到了网上也会很惬意的信口开河，从来不曾想到说出去的话其实都是自己应该负责的。据说日本的网络语言环境是最恶劣的，因为日本人活得很压抑。&lt;/p&gt;
&lt;p&gt;我们的现实话语环境比较恶劣，说一句话得在脑子里转几圈拐几个网再出来，于是到了网上，大家原形毕露，一个个都变成了意识流，虽然很有些物极必反的意味，可是我忍不住宽恕他们，因为或许我也是他们中的一员。&lt;/p&gt;
&lt;p&gt;我是多么的幻想颠倒一下网络和现实，在现实中大家少一些城府，在网络中多一些智慧，可是我们年轻的网民们却不得不去感受现实中中华文明的伟大处世哲学，要么沉醉得不知归路彻底融化，要么生活在青春的迷梦里不想长大。&lt;/p&gt;</description><content:encoded><![CDATA[<p>这个题目开得有点大，其实是看了varcher同学的blog有感而发，虽然上网不方便，但一直关注着老朋友们的blog，看到曾经一起奋斗并颓废的我们生活开始千姿百态，可是那些共通的东西还会灵光乍现，比如又说到我们常说的“在网上，人的智商是没有下限的”。</p>
<p>当初我是个任凭楼主说得天花乱坠也不回帖的人，不在网上发表只字片言，因为觉得网上鱼龙混杂，没有力气跟人掐架，后来我却开始偶尔回帖和写blog，因为我认识到光有不屑是很不健康的想法，在网上混不发出声音当然不会犯傻。</p>
<p>我常常忍不住骂某些人智商没有下限，可是发现要反驳他们的言论实在是一件过于庞大的工程，但是没有人站出来骂几句却又让他们以为自己很伟大光荣正确，还让人留下个网友很SB的口实。</p>
<p>其实能上网的人智商不会没有下限，至少还应该比较正常。只是在真实的生活中，我们夹着尾巴做人习惯了，懂得藏拙的人到了网上也会很惬意的信口开河，从来不曾想到说出去的话其实都是自己应该负责的。据说日本的网络语言环境是最恶劣的，因为日本人活得很压抑。</p>
<p>我们的现实话语环境比较恶劣，说一句话得在脑子里转几圈拐几个网再出来，于是到了网上，大家原形毕露，一个个都变成了意识流，虽然很有些物极必反的意味，可是我忍不住宽恕他们，因为或许我也是他们中的一员。</p>
<p>我是多么的幻想颠倒一下网络和现实，在现实中大家少一些城府，在网络中多一些智慧，可是我们年轻的网民们却不得不去感受现实中中华文明的伟大处世哲学，要么沉醉得不知归路彻底融化，要么生活在青春的迷梦里不想长大。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">互联网</category><category domain="tags">思考</category></item><item><title>哆啦A梦不是救世主</title><link>https://yifeitao.com/doraemon-is-not-god/</link><pubDate>Sun, 01 Jun 2008 00:00:00 +0000</pubDate><guid>https://yifeitao.com/doraemon-is-not-god/</guid><description>&lt;p&gt;几乎就要忘记今天是儿童节了，虽然晚了些，还是祝天底下的儿童和童心未泯的人节日快乐。闲坐转频道时，不小心看了几集《机器猫》，竟然很是开心，觉得自己童心未泯啊。哆啦A梦应该是一代人儿时幻想中的朋友吧，除了是一个好朋友之外，更重要的是他有个无所不有的口袋，当然不排除有人想法邪恶一些，幻想自己就是机器猫。&lt;/p&gt;
&lt;p&gt;这是适合儿童看的动画片，和《名侦探柯南》一样，每集相对独立，故事的模式基本是大雄遇到麻烦求助，哆啦A梦心软给他一个神奇的道具，最后大雄却过于依赖道具弄巧成拙。这个模式的高明在于给了孩子以幻想，但却不排斥让他们认清现实。&lt;/p&gt;
&lt;p&gt;长大后的我很是不满那些欺骗孩子的童话和预言，钱钟书好像说让孩子少读写寓言。我写到这里，想到了小音乐家杨科的故事（还有人记得么），这是一个曾经感动我的故事，尽管它不是一个童话或寓言，但我们的老师还是会按教参上所写的寓意让我们背下来的（还有人记得么）。一个好的儿童故事，应当让童心未泯的大人也有共鸣吧，可是我对这个故事恒久的感动，却被那些标准的寓意生生割裂了。&lt;/p&gt;
&lt;p&gt;这次地震中最受关注的应该算是灾区中的孩子了，有太多的悲伤和感动，很多人也付出了爱心和行动。在转频道时，看到了很多人许下的愿望，我们想把这世界的不美好在孩子的心中抹掉，如果我们是帮助孩子的哆啦A梦，那么不要让这个世界的真实再去割裂我们许下的愿望，给孩子一个真实的幻想,愿潮水化作细水长流。&lt;/p&gt;</description><content:encoded><![CDATA[<p>几乎就要忘记今天是儿童节了，虽然晚了些，还是祝天底下的儿童和童心未泯的人节日快乐。闲坐转频道时，不小心看了几集《机器猫》，竟然很是开心，觉得自己童心未泯啊。哆啦A梦应该是一代人儿时幻想中的朋友吧，除了是一个好朋友之外，更重要的是他有个无所不有的口袋，当然不排除有人想法邪恶一些，幻想自己就是机器猫。</p>
<p>这是适合儿童看的动画片，和《名侦探柯南》一样，每集相对独立，故事的模式基本是大雄遇到麻烦求助，哆啦A梦心软给他一个神奇的道具，最后大雄却过于依赖道具弄巧成拙。这个模式的高明在于给了孩子以幻想，但却不排斥让他们认清现实。</p>
<p>长大后的我很是不满那些欺骗孩子的童话和预言，钱钟书好像说让孩子少读写寓言。我写到这里，想到了小音乐家杨科的故事（还有人记得么），这是一个曾经感动我的故事，尽管它不是一个童话或寓言，但我们的老师还是会按教参上所写的寓意让我们背下来的（还有人记得么）。一个好的儿童故事，应当让童心未泯的大人也有共鸣吧，可是我对这个故事恒久的感动，却被那些标准的寓意生生割裂了。</p>
<p>这次地震中最受关注的应该算是灾区中的孩子了，有太多的悲伤和感动，很多人也付出了爱心和行动。在转频道时，看到了很多人许下的愿望，我们想把这世界的不美好在孩子的心中抹掉，如果我们是帮助孩子的哆啦A梦，那么不要让这个世界的真实再去割裂我们许下的愿望，给孩子一个真实的幻想,愿潮水化作细水长流。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">动漫</category><category domain="tags">儿童</category><category domain="tags">思考</category></item><item><title>信息时代的通假字</title><link>https://yifeitao.com/tongjia-in-informational-era/</link><pubDate>Mon, 24 Mar 2008 00:00:00 +0000</pubDate><guid>https://yifeitao.com/tongjia-in-informational-era/</guid><description>&lt;p&gt;通假字应该是让中学生感到莫名的一种存在，它见于古文，还有鲁迅的大作，默写时我们为古人的随意买单。我曾经想象不到这个时代仍然需要通假字。在西臧问题上西方媒体肆意用傲慢与偏见诋毁我们时，我们想到的竟然只有封锁，了解事实是一种痛苦，无法言说是更深的痛苦。还好，我们有通假字。看到很多国内乃至留学生博客宣传事实的努力以及国内媒体的失语，我不知道我们的通假字还要流行多久。很多年后，我们也洗刷不了我们的傻逼，我痛恨通假字，它污辱我们的智商与操守。立此存照！&lt;/p&gt;</description><content:encoded>&lt;p>通假字应该是让中学生感到莫名的一种存在，它见于古文，还有鲁迅的大作，默写时我们为古人的随意买单。我曾经想象不到这个时代仍然需要通假字。在西臧问题上西方媒体肆意用傲慢与偏见诋毁我们时，我们想到的竟然只有封锁，了解事实是一种痛苦，无法言说是更深的痛苦。还好，我们有通假字。看到很多国内乃至留学生博客宣传事实的努力以及国内媒体的失语，我不知道我们的通假字还要流行多久。很多年后，我们也洗刷不了我们的傻逼，我痛恨通假字，它污辱我们的智商与操守。立此存照！&lt;/p>
</content:encoded><category>viewpoint</category><category domain="tags">社会观察</category><category domain="tags">信息</category></item><item><title>如果陨石坠落</title><link>https://yifeitao.com/if-meteorite-fall/</link><pubDate>Sat, 15 Mar 2008 00:00:00 +0000</pubDate><guid>https://yifeitao.com/if-meteorite-fall/</guid><description>&lt;p&gt;熟悉周杰伦的的人一定了解方文山，我一直觉得他算个不错的诗人。今天看到方老师在北大的演讲稿，谈的是文化的“质感”，大抵是鄙视了一番中国文化中的俗，爱之深恨之切溢于言表，方老师问道如果一百多年前有个陨石把中华民族给砸灭绝了现在的世界会怎样，我看到觉得被电了一下，民族自尊心很受打击，因为我理智的一想，这个世界大概还在良好运作，汉唐遗风在日本，连端午节也有韩国人在过。不知道这个世界是自甘堕落的还是知耻后勇的。&lt;/p&gt;</description><content:encoded>&lt;p>熟悉周杰伦的的人一定了解方文山，我一直觉得他算个不错的诗人。今天看到方老师在北大的演讲稿，谈的是文化的“质感”，大抵是鄙视了一番中国文化中的俗，爱之深恨之切溢于言表，方老师问道如果一百多年前有个陨石把中华民族给砸灭绝了现在的世界会怎样，我看到觉得被电了一下，民族自尊心很受打击，因为我理智的一想，这个世界大概还在良好运作，汉唐遗风在日本，连端午节也有韩国人在过。不知道这个世界是自甘堕落的还是知耻后勇的。&lt;/p>
</content:encoded><category>viewpoint</category><category domain="tags">文化</category><category domain="tags">反思</category></item><item><title>太委屈与瞎着急</title><link>https://yifeitao.com/grievance-and-worry/</link><pubDate>Fri, 14 Mar 2008 00:00:00 +0000</pubDate><guid>https://yifeitao.com/grievance-and-worry/</guid><description>&lt;p&gt;最近听说京剧要进中小学课堂，而且还是样板戏主打，于是网上先炸开了锅，据说最初提建议的政协委员很委屈说没想到会是样板戏主打，教育部很委屈说采纳你们的意见还挑三拣四，反感文革的人也很委屈说样板戏要毒害下一代了，非北京人很委屈说谁说京剧才是国粹；更有趣的是又听说毛爷爷的孙子提议中医药也进中小学课堂，估计又会有很多人觉得委屈了。我用脚趾头想了一下，觉得他们都是瞎着急，只要高考的大棒还在，这些顶多也就做做样子罢了，不论是国粹还是毒草都给题海让让路先，由此来看，是幸还是不幸呢。&lt;/p&gt;</description><content:encoded>&lt;p>最近听说京剧要进中小学课堂，而且还是样板戏主打，于是网上先炸开了锅，据说最初提建议的政协委员很委屈说没想到会是样板戏主打，教育部很委屈说采纳你们的意见还挑三拣四，反感文革的人也很委屈说样板戏要毒害下一代了，非北京人很委屈说谁说京剧才是国粹；更有趣的是又听说毛爷爷的孙子提议中医药也进中小学课堂，估计又会有很多人觉得委屈了。我用脚趾头想了一下，觉得他们都是瞎着急，只要高考的大棒还在，这些顶多也就做做样子罢了，不论是国粹还是毒草都给题海让让路先，由此来看，是幸还是不幸呢。&lt;/p>
</content:encoded><category>viewpoint</category><category domain="tags">社会</category><category domain="tags">教育</category></item><item><title>观影列表2007</title><link>https://yifeitao.com/movies-2007/</link><pubDate>Mon, 31 Dec 2007 00:00:00 +0000</pubDate><guid>https://yifeitao.com/movies-2007/</guid><description>&lt;h3 id="一公升的眼泪湿润一次心灵"&gt;《一公升的眼泪》：湿润一次心灵&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;20070110合肥&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;一公升的眼泪，只是记录一个女孩生病的人生，虽然电视剧与生活有差别，可故事原型木藤亚也的故事的确感动了无数的人。&lt;/p&gt;
&lt;p&gt;可能相比真事，电视剧更有催人泪下的力量，阳光清纯的女主角，淡而隽永的爱情故事。悲剧是将美好的事物毁灭给人看。看着十四五岁的青春开始由病魔控制，十年的时间一步步的扼杀。&lt;/p&gt;
&lt;p&gt;尽管开头就可以知道悲剧的结尾，但还是禁不住和剧中的人物一起期望奇迹的出现。很久没有真正为荧屏中的东西流过眼泪，可这次真的有些挡不住。&lt;/p&gt;
&lt;p&gt;对生命的思考是个永恒的母题，即使是健康人也是在一天天迈向死亡。病魔为什么会选上我？谁能回答亚也这个问题。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论
varche
提交于 2007-01-14 上午 11:4
平等？从来就没有什么平等。。
漂
提交于 2007-01-12 下午 12:4
我对不起你 让你湿
ada
提交于 2007-01-11 下午 10:3
有点怀念你. 来看看你的..&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="太阳之歌为什么女主角要死呢"&gt;《太阳之歌》：为什么女主角要死呢？&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;20070123合肥&lt;/em&gt;
流过一升的眼泪后，在《太阳之歌》里面看到小香同学复活很高兴，于是大概浏览了一下。但不出意外的，又是一个奇怪的病，第11集准时离开人世。为什么？&lt;/p&gt;
&lt;p&gt;过去和老妈一起看蓝色生死恋，那时候还不懂得怜香惜玉，只是看见漂亮姐姐要死了还是很不开心的，不过宋慧乔也一下成了一线明星。&lt;/p&gt;
&lt;p&gt;简单的说，死掉是抓住观众的杀手级应用，不过这个死法可是大有讲究了。首先是要病死的最好，这样有个过程铺垫，将人在死亡面前的无奈充分展现出来；其次就是这个病要治不好，虽然电视剧里一般钱不是问题嘛&lt;/p&gt;
&lt;p&gt;小香同学接连死了两次，前途无量啊！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论
varche
2007 年 01 月 26
因为死亡是人最后的终极奥义，任何人不能提前体验，体验后也不能返回现实告诉别人发生了什么。因此，大可以充分的YY死亡，人类生命最终唯一的禁区
YY的多了，什么灾难啊战争阿之类的，欣赏的人都麻木了，总有逃出生天的可能；只有死了才一了百了没有任何机会。。。当然这个片子，人还能复活，这个。。。。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="门徒宁愿救一只狗"&gt;《门徒》：宁愿救一只狗&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;20070301合肥&lt;/em&gt;
没看任何介绍文字就先看了，胃口没吊起来的缘故吧，觉得还不错。尤其张静初的演技令人赞叹。吴彦祖颇有爱心的救一只狗，却不愿意再次帮助堕落到毒品中的张静初，理由是人有得选择，狗没有。看起来是冷酷了一点点，人毫无自省力的时候比狗还不如，可怜的人往往也悲甚至可恨。&lt;/p&gt;
&lt;p&gt;什么更可怕？是毒品还是空虚？片中多次问到。也许两者结合起来后是最可怕的。&lt;/p&gt;
&lt;p&gt;有眼不见心不痛的冷漠，有外号正义的冷漠，有自甘堕落对自己的冷漠。自以为是的木偶最冷漠。&lt;/p&gt;
&lt;h3 id="扶桑花女孩简单的感动-简单的优美"&gt;《扶桑花女孩》：简单的感动 简单的优美&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;20070324合肥&lt;/em&gt;
《扶桑花女孩》，下载了好久好久，昨天看得有些激动，因为最近太萌小优同学了吧。&lt;/p&gt;
&lt;p&gt;有人说煽情太过，不以为然，或许我太冷血了，虽然剧中也有让我感动的桥段，但还不至于感到被骗眼泪。&lt;/p&gt;
&lt;p&gt;故事很简单，说的是日本某地的“改革开放”，为了生计和梦想而学习草裙舞的一群学生和她们的老师，以及他们建设“旅游开发区”的父母。那些转型的痛楚被优美的舞蹈恰如其分的包容。&lt;/p&gt;
&lt;p&gt;老实说，舞蹈这种东西，我欣赏水平太低，一向是懒得去看的，不过片中演员表现确实出色，不知道专业的舞蹈效果是如何，至少松雪泰子，苍井优的表演看起来效果很好。&lt;/p&gt;
&lt;p&gt;简单的感动，简单的优美，足够了吧。一部电影达到这样的标准却不简单啊，苍井优借这部电影拿了一堆奖也就不难理解了。&lt;/p&gt;
&lt;h3 id="泪光闪闪"&gt;《泪光闪闪》&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;20070418合肥&lt;/em&gt;
据说电影有主题曲作者夏川里美怀念逝去的哥哥的意味，很多观众对悲剧的结尾无法接受，将这部电影叫做“日皮韩骨”，可是原来是现实也是如此残酷。&lt;/p&gt;
&lt;p&gt;两位主演妻夫木聪，长泽雅美将无血缘而暗生情愫的兄妹关系演绎的恰如其分，超越亲情的爱与依靠，为世俗所压抑的感情没有变质而是得到了升华，不想介绍得再多，好电影推荐一看吧。&lt;/p&gt;
&lt;p&gt;我不敢去想象这个故事的另外可能的结尾，可是电影最后，长泽雅美抱着哥哥送的和服哭成一团，让观者也潸然泪下。最后的最后，小时候的妹妹说：“长大后我要嫁给你！” 小时候的哥哥说：“兄妹是不能结婚的哦！”虽然催泪弹对我没什么效果，可是看过之后，真是顿觉孤独伤感啊，为什么呢？&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论
hideda
2007 年 04 月 20
呵呵~~~这首歌很早就出了的~~~我很喜欢啊~~~8过，电影还没看~~~下了就是没什么时间看~~~有时间观摩观摩~~~HOHO~~
JI
2007 年 04 月 20
看过 感人 比较喜欢里面的主演&lt;/p&gt;</description><content:encoded><![CDATA[<h3 id="一公升的眼泪湿润一次心灵">《一公升的眼泪》：湿润一次心灵</h3>
<p><em>20070110合肥</em></p>
<p>一公升的眼泪，只是记录一个女孩生病的人生，虽然电视剧与生活有差别，可故事原型木藤亚也的故事的确感动了无数的人。</p>
<p>可能相比真事，电视剧更有催人泪下的力量，阳光清纯的女主角，淡而隽永的爱情故事。悲剧是将美好的事物毁灭给人看。看着十四五岁的青春开始由病魔控制，十年的时间一步步的扼杀。</p>
<p>尽管开头就可以知道悲剧的结尾，但还是禁不住和剧中的人物一起期望奇迹的出现。很久没有真正为荧屏中的东西流过眼泪，可这次真的有些挡不住。</p>
<p>对生命的思考是个永恒的母题，即使是健康人也是在一天天迈向死亡。病魔为什么会选上我？谁能回答亚也这个问题。</p>
<blockquote>
<p>评论
varche
提交于 2007-01-14 上午 11:4
平等？从来就没有什么平等。。
漂
提交于 2007-01-12 下午 12:4
我对不起你 让你湿
ada
提交于 2007-01-11 下午 10:3
有点怀念你. 来看看你的..</p>
</blockquote>
<h3 id="太阳之歌为什么女主角要死呢">《太阳之歌》：为什么女主角要死呢？</h3>
<p><em>20070123合肥</em>
流过一升的眼泪后，在《太阳之歌》里面看到小香同学复活很高兴，于是大概浏览了一下。但不出意外的，又是一个奇怪的病，第11集准时离开人世。为什么？</p>
<p>过去和老妈一起看蓝色生死恋，那时候还不懂得怜香惜玉，只是看见漂亮姐姐要死了还是很不开心的，不过宋慧乔也一下成了一线明星。</p>
<p>简单的说，死掉是抓住观众的杀手级应用，不过这个死法可是大有讲究了。首先是要病死的最好，这样有个过程铺垫，将人在死亡面前的无奈充分展现出来；其次就是这个病要治不好，虽然电视剧里一般钱不是问题嘛</p>
<p>小香同学接连死了两次，前途无量啊！</p>
<blockquote>
<p>评论
varche
2007 年 01 月 26
因为死亡是人最后的终极奥义，任何人不能提前体验，体验后也不能返回现实告诉别人发生了什么。因此，大可以充分的YY死亡，人类生命最终唯一的禁区
YY的多了，什么灾难啊战争阿之类的，欣赏的人都麻木了，总有逃出生天的可能；只有死了才一了百了没有任何机会。。。当然这个片子，人还能复活，这个。。。。</p>
</blockquote>
<h3 id="门徒宁愿救一只狗">《门徒》：宁愿救一只狗</h3>
<p><em>20070301合肥</em>
没看任何介绍文字就先看了，胃口没吊起来的缘故吧，觉得还不错。尤其张静初的演技令人赞叹。吴彦祖颇有爱心的救一只狗，却不愿意再次帮助堕落到毒品中的张静初，理由是人有得选择，狗没有。看起来是冷酷了一点点，人毫无自省力的时候比狗还不如，可怜的人往往也悲甚至可恨。</p>
<p>什么更可怕？是毒品还是空虚？片中多次问到。也许两者结合起来后是最可怕的。</p>
<p>有眼不见心不痛的冷漠，有外号正义的冷漠，有自甘堕落对自己的冷漠。自以为是的木偶最冷漠。</p>
<h3 id="扶桑花女孩简单的感动-简单的优美">《扶桑花女孩》：简单的感动 简单的优美</h3>
<p><em>20070324合肥</em>
《扶桑花女孩》，下载了好久好久，昨天看得有些激动，因为最近太萌小优同学了吧。</p>
<p>有人说煽情太过，不以为然，或许我太冷血了，虽然剧中也有让我感动的桥段，但还不至于感到被骗眼泪。</p>
<p>故事很简单，说的是日本某地的“改革开放”，为了生计和梦想而学习草裙舞的一群学生和她们的老师，以及他们建设“旅游开发区”的父母。那些转型的痛楚被优美的舞蹈恰如其分的包容。</p>
<p>老实说，舞蹈这种东西，我欣赏水平太低，一向是懒得去看的，不过片中演员表现确实出色，不知道专业的舞蹈效果是如何，至少松雪泰子，苍井优的表演看起来效果很好。</p>
<p>简单的感动，简单的优美，足够了吧。一部电影达到这样的标准却不简单啊，苍井优借这部电影拿了一堆奖也就不难理解了。</p>
<h3 id="泪光闪闪">《泪光闪闪》</h3>
<p><em>20070418合肥</em>
据说电影有主题曲作者夏川里美怀念逝去的哥哥的意味，很多观众对悲剧的结尾无法接受，将这部电影叫做“日皮韩骨”，可是原来是现实也是如此残酷。</p>
<p>两位主演妻夫木聪，长泽雅美将无血缘而暗生情愫的兄妹关系演绎的恰如其分，超越亲情的爱与依靠，为世俗所压抑的感情没有变质而是得到了升华，不想介绍得再多，好电影推荐一看吧。</p>
<p>我不敢去想象这个故事的另外可能的结尾，可是电影最后，长泽雅美抱着哥哥送的和服哭成一团，让观者也潸然泪下。最后的最后，小时候的妹妹说：“长大后我要嫁给你！” 小时候的哥哥说：“兄妹是不能结婚的哦！”虽然催泪弹对我没什么效果，可是看过之后，真是顿觉孤独伤感啊，为什么呢？</p>
<blockquote>
<p>评论
hideda
2007 年 04 月 20
呵呵~~~这首歌很早就出了的~~~我很喜欢啊~~~8过，电影还没看~~~下了就是没什么时间看~~~有时间观摩观摩~~~HOHO~~
JI
2007 年 04 月 20
看过 感人 比较喜欢里面的主演</p>
</blockquote>
<h3 id="狗咬狗的一代">狗咬狗的一代</h3>
<p><em>20070606合肥</em></p>
<p>看到《狗咬狗》这个名字，不难想像电影的黑暗。一个像狗一样饥饿，残暴的杀手；一个像狗一样灵敏，同样残暴的警察。</p>
<p>杀手的残暴是在血腥的成长中来的，从小打黑拳，不是被打死，就是被饿死。他没有父母的概念吧。警察的残暴是在理想的崩塌中来的，自己最崇拜的警察父亲竟然是个暗地里的毒贩。</p>
<p>如果只是单纯的残暴，那么就不是悲剧，比如动物的残杀。可是人是有感情的，残暴的杀手却救了一个被父亲戕害的弱智少女，可是为了这个少女，在逃脱的过程中又杀死了三个警察。</p>
<p>电影无法如此结束，它需要尽管很是俗套的最终对决。一番搏斗后，曾经的警察用快要分娩的女人做人质 。女人傻傻的说：我死了，你自由了。女人自杀了，男人都倒地了，一个婴儿哇哇坠地。</p>
<p>电影的背景音乐响起： you are my sunshine my only sunshine。所有的黑暗都灭亡了，所有的希望被寄托在一个婴儿身上，或许是导演不想让一切太过黑暗。</p>
<p>不禁想到，人们总是挥霍着自己，然后将希望寄托在下一代身上。</p>
<blockquote>
<p>评论
BlogBu
2007 年 06 月 07
感谢您对BlogBus的支持！您的文章已经被我们推荐到场记频道，请点击pindao.blogbus.com查看，谢谢关注
藤
2007 年 06 月 07 日(编辑) 回
看起来似乎是不错的电影，因为如此黑暗的题材配着阴郁的曲风，虽然唱着sunshine、sunshine
请教博主：怎么用上那么漂亮的音乐播放器呀
varche
2007 年 06 月 08
你被记录了！！哈哈二楼的，上yobo就行了~~~~
牛
2007 年 06 月 09
调子比较灰……值得一
Mr.kenhaoha
2007 年 06 月 09
的确 很不错滴电
李
2007 年 06 月 12
我同学超喜欢这部电影的，可我总觉得少了点什么，总觉得李灿森那个角色刻画得有些生硬，让人有些措手不及！</p>
</blockquote>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">观影</category></item><item><title>流水账2007</title><link>https://yifeitao.com/diary-2007/</link><pubDate>Mon, 31 Dec 2007 00:00:00 +0000</pubDate><guid>https://yifeitao.com/diary-2007/</guid><description>&lt;p&gt;&lt;strong&gt;【2011整理按】&lt;/strong&gt;
&lt;strong&gt;2007年毕业了。似乎我没有伤情，迷迷糊糊的走了。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="被遗忘的"&gt;被遗忘的&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2007 年 01 月 20 日&lt;/em&gt;
昨天做了一个什么梦呢，想要笑醒却醒不来。 想给某人发个短信祝福考研顺利，却找不到号码。 有些东西在被遗忘着，尽管可能是曾经珍视的。&lt;/p&gt;
&lt;h3 id="tonight-i-feel-close-to-you"&gt;Tonight I Feel Close To You&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2007 年 01 月 31 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;[MV]Tonight I Feel Close To Yo&lt;/p&gt;
&lt;p&gt;虽然有点要挂的感觉，但还好有强化班的，暗暗苦笑&lt;/p&gt;
&lt;p&gt;今天暂别网络。家，我来了&lt;/p&gt;
&lt;p&gt;预祝看到这篇日志的朋友新年快乐&lt;/p&gt;
&lt;p&gt;虽然已经是2007年，但我还是习惯传统的划分，尽管这一年有时候玩得有些过分，但一切都过去了&lt;/p&gt;
&lt;p&gt;新的开始在前面，希望我们都有无穷的勇气&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论
漂
2007 年 01 月 31
燕姿这上面变好看了。。 mai好丑。
varche
2007 年 02 月 06
晕，怎么无聊转到你这里
明知道你已经与世隔绝
jin
2007 年 04 月 07
听了很多遍的歌,第一次看M
晕&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="吃吃喝喝之外"&gt;吃吃喝喝之外&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2007 年 03 月 06&lt;/em&gt;日&lt;/p&gt;
&lt;p&gt;来学校几天了，大四的楼道显得有些冷清，配上这干冷的天气&lt;/p&gt;
&lt;p&gt;爱用不知不觉形容过去的时光，以表明自己没有完全麻木&lt;/p&gt;</description><content:encoded><![CDATA[<p><strong>【2011整理按】</strong>
<strong>2007年毕业了。似乎我没有伤情，迷迷糊糊的走了。</strong></p>
<h3 id="被遗忘的">被遗忘的</h3>
<p><em>发表于 2007 年 01 月 20 日</em>
昨天做了一个什么梦呢，想要笑醒却醒不来。 想给某人发个短信祝福考研顺利，却找不到号码。 有些东西在被遗忘着，尽管可能是曾经珍视的。</p>
<h3 id="tonight-i-feel-close-to-you">Tonight I Feel Close To You</h3>
<p><em>发表于 2007 年 01 月 31 日</em></p>
<p>[MV]Tonight I Feel Close To Yo</p>
<p>虽然有点要挂的感觉，但还好有强化班的，暗暗苦笑</p>
<p>今天暂别网络。家，我来了</p>
<p>预祝看到这篇日志的朋友新年快乐</p>
<p>虽然已经是2007年，但我还是习惯传统的划分，尽管这一年有时候玩得有些过分，但一切都过去了</p>
<p>新的开始在前面，希望我们都有无穷的勇气</p>
<blockquote>
<p>评论
漂
2007 年 01 月 31
燕姿这上面变好看了。。 mai好丑。
varche
2007 年 02 月 06
晕，怎么无聊转到你这里
明知道你已经与世隔绝
jin
2007 年 04 月 07
听了很多遍的歌,第一次看M
晕</p>
</blockquote>
<h3 id="吃吃喝喝之外">吃吃喝喝之外</h3>
<p><em>发表于 2007 年 03 月 06</em>日</p>
<p>来学校几天了，大四的楼道显得有些冷清，配上这干冷的天气</p>
<p>爱用不知不觉形容过去的时光，以表明自己没有完全麻木</p>
<p>开会，师兄让我们在吃吃喝喝之外花些心思在毕业论文上</p>
<p>说到吃，是一般住校人的伤痛</p>
<p>日子惬意而空虚，不过吃吃喝喝还没开始，谁要请客的快点啊</p>
<p>以上，看片去也</p>
<blockquote>
<p>评论
varche
2007 年 03 月 07
看个毛，吃吃喝喝
漂
2007 年 03 月 07
还要等周六分下来才能决定吃不吃喝不喝.</p>
</blockquote>
<h3 id="流行与感动">流行与感动</h3>
<p><em>2007-03-07 20:07:16</em></p>
<p>喜欢angela的声音，因为某个暑假，无聊的看十点档的偶像剧。</p>
<p>剧情老套已经在我脑中模糊了，可是她在剧中流泪唱Journey时干净的声音却永远都忘不了。</p>
<p>于是，买每一张专辑，听每一首歌，看着她一天天红起来。</p>
<p>不知是她的变与不变，还是我的不变与变。</p>
<p>听歌越来越方便，感动越来越少。</p>
<p>在豆瓣看到一个感叹感动不再的评论被推上了顶，觉得很是悲哀。</p>
<p>感性的喜欢遇上理性的剖析。喜欢，是一个瞬间的感觉吗？还是只是一个虚幻的习惯呢？</p>
<p>《梦里花》，据说是angela做梦产生的灵感，可是听起来是个漂亮的噱头。</p>
<p>没有不商业化的流行歌手，所以也没有歌手保留出道时的单纯。</p>
<p>可是也许十年之后，再次听到他们时会有无比的感慨。</p>
<p>尊重自己一瞬间的感觉，还要坚持下去。</p>
<p>尽管没有惊喜，可是还是没有失望。</p>
<h3 id="是男人就">是男人就？</h3>
<p><em>发表于 2007 年 03 月 08 日</em></p>
<p>昨天看suhO和Gostop的比赛，简直看得用伤心来形容。 当然和部分愤青的理由不同。只是一直看suhO的blog，看到一个人的努力与后悔</p>
<p>RN有人建议suhO退役，善意的那种，是男人就该放得下；还有人说是男人就该坚持到底。 真正的强者一般会选择激流勇退，而不是在这种尴尬的状况下</p>
<p>不过说起来，要想做个成功的男人真的很难，关键是你的成功的期许有多大。 而在魔兽界中，中国这么久也才有个sky真正出类拔萃。 可是他有时也会被无聊无关的人骂得很惨。 是男人就听自己的。</p>
<h3 id="亲爱的王子别害怕">亲爱的王子别害怕</h3>
<p><em>发表于 2007 年 03 月 13 日</em></p>
<p>这几天，考研的成绩陆陆续续出来了。没有希望中的皆大欢喜，而有些几家欢喜几家愁的意味</p>
<p>看完战友的话，突然有一种曲终人散的感觉。或许游离于考研之外，是一种暂时的幸运。可是还是因为朋友们高兴而高兴，郁闷而郁闷</p>
<p>不知道如何说起了，送一首歌《亲爱的王子别害怕》。也许我们很渺小，但一定要做先做自己内心的王子。别害怕，让我们勇往直前，也让我们享受一路的风景</p>
<blockquote>
<p>评论
varche
2007 年 03 月 13
结束？才刚刚开始呢</p>
</blockquote>
<h3 id="遇上苍井优">遇上苍井优</h3>
<p><em>发表于 2007 年 03 月 22 日</em></p>
<p>本来想写很多的，可惜选词太费心思</p>
<p>总之是因为苍井优看了《Honey And Clover》，然后如我所愿的被电了</p>
<p>奇怪，觉得她并不漂亮的。 确实很奇怪，莫非中毒了。 准确的说，被萌到了。</p>
<h3 id="最近">最近</h3>
<p><em>发表于 2007 年 04 月 13 日</em></p>
<p>最近的新闻</p>
<p>谷歌输入法抄袭搜狗输入法。——所谓：Go抄狗，狗咬Go，我等坐山观狗斗</p>
<p>韩寒和郑钧博客骂战。——学习婊子，牌坊等词的好机会</p>
<p>最近的伟大构想</p>
<p>做VOD，无奈一切准备就绪，发现机器太次，一录像就卡卡卡，破灭</p>
<p>每天学一点点东西，与其醉生梦死或者操劳到死，不如一半一半，执行</p>
<p>我要研究小白，做一个伟大的研究，欢迎提供素材（即网上的各种让你看了不爽的言论，很多你甚至懒得去骂他们），计划</p>
<blockquote>
<p>评论
varche
2007 年 04 月 14
请做VO</p>
</blockquote>
<h3 id="博客小记">博客小记</h3>
<p><em>2007-05-27 12:22:03</em></p>
<p>记得是去年愚人节前开始写博客的，最初是在MSN Spaces，寝室的兄弟们现在也还都在那里，只是有些已经一片荒芜了。后来MSN Space实在是太卡经常把浏览器搞到假死，于是搬家到新浪博客，速度是提升了，可是实在受不了新浪博客千篇一律的UI，小气无比的博客地址和一堆到处留言请求互踩的小孩。最后搬来了blogbus。</p>
<p>现在一年过去了，在blogbus也稳定下来了，可是最近一个月啥也没写，虽然要忙其他事情，但其实不至于没有写东西的时间。这让我想起写日记的那些岁月。曾经的几本日记不管是被逼着写的还是自愿写的，总算是在孩童时期的一些纪念，可惜在搬东西的时候被老爸夹杂在一堆旧书中当废纸卖了，当时还真是沮丧了好久。小时候人单纯，基本上想到的事情都可以写到日记本上，即使要是给老师检查。后来有了不想给人看到的想法，也到了无需被迫写日记的时期。总之，日记基本上是需要直面自我的一种东西，倘若虚度了一日，只好在写日记时无限悔恨，或者干脆放弃去写，自我欺骗。</p>
<p>博客虽然也叫日志，但如果有人看，和日记还是有区别的，估计应该没有人敢把自己的想法全倒到博客上吧。但只要你的博客还没有被商业化，那么写的东西基本上还是发自内心的吧，否则何必在博客上自欺欺人。博客是一些直面自我加上一些自我推销。</p>
<p>倘若无话可说，也许是不敢说，也许是不想说，也许是不能说，也许是不会说。面对自我，需要勇气；推销自我，需要才气。三分钟热度后，为什么你我不开口了呢？</p>
<h3 id="头晕眼花耳鸣">头晕眼花耳鸣</h3>
<p><em>发表于 2007 年 05 月 20 日</em></p>
<p>只是跑了一个1500m而已，竟然如此，可悲！ 发此文，证明自己的存在。</p>
<h3 id="有奖竞猜啥时候能玩上星际2">有奖竞猜：啥时候能玩上星际2</h3>
<p><em>发表于 2007 年 05 月 20 日</em></p>
<p>也许跳票几次后，我们又能玩上新的神作了</p>
<blockquote>
<p>评论
varche
2007 年 05 月 24
本世纪内极有希</p>
</blockquote>
<h3 id="五一五一加加减减">五一五一，加加减减</h3>
<p><em>发表于 2007 年 06 月 04 日</em></p>
<p>世界有时需要破坏者，只是有时</p>
<blockquote>
<p>评论
varche
2007 年 06 月 08
题目NB 永久珍藏</p>
</blockquote>
<h3 id="一个月与五分钟的故事">一个月与五分钟的故事</h3>
<p><em>发表于 2007 年 06 月 16 日</em></p>
<p>今天告一段落，当然希望这是故事的结束</p>
<blockquote>
<p>评论
varche
2007 年 06 月 22
强烈BSYSP，给我们照相的时候手挡闪光灯了！！
yisha
2007 年 06 月 27
我看效果还不错</p>
</blockquote>
<h3 id="你不是骷髅你怎么知道他喜欢长肉呢">你不是骷髅，你怎么知道他喜欢长肉呢？</h3>
<p><em>2007-06-28 21:10:52</em></p>
<p>新闻链接：<a href="http://www.cnbeta.com/article.php?sid=29115"
   rel="noopener noreferrer" target="_blank" class="external">《南方都市报》:魔兽世界升级 露骨亡灵长肉</a>
</p>
<p>你不是骷髅，你怎么知道他喜欢长肉呢？虽然中国的魔兽世界是要比别人的河蟹可是也许骷髅们就喜欢没肉的感觉呢？</p>
<p>你不是骷髅，你怎么知道他喜欢长肉呢？虽然你也许不玩游戏其实我也不玩但骷髅们的观点还是要考虑一下现在不是流行骨感美吗？</p>
<p>你不是骷髅，你怎么知道他喜欢长肉呢？你整天肉吃多了现在打着河蟹的口号让暴雪的可怜虫们来改模型显示你无处不在的对青少年关心还是表示你比全世界的人都有审美观呢？</p>
<p>无事生非！</p>
]]></content:encoded><category>life</category><category domain="tags">年度总结</category><category domain="tags">生活</category></item><item><title>一次偶然的行走</title><link>https://yifeitao.com/walk/</link><pubDate>Mon, 01 Oct 2007 00:00:00 +0000</pubDate><guid>https://yifeitao.com/walk/</guid><description>&lt;p&gt;野外拉练结束后的那天晚上，我躺在床上，身体困乏，意识混沌地思考一个问题：许多年后的某天晚上，我是否会偶然想起不断行走的今天。&lt;/p&gt;
&lt;p&gt;据说：生命是一场蝴蝶效应，许多不起眼的小事情悄然改变着你的人生长河的走局。&lt;/p&gt;
&lt;p&gt;许多时候，在人生的重大分叉点上，我们常常看不清前路，我们试图用自己最大的努力去分析与推测，可是世界的复杂却让这些成为一种心理安慰。于是，时光流转，你甚至可能想不起自己是如何作了一个决定。&lt;/p&gt;
&lt;p&gt;或许，有些决定有是非对错，它会让你过后暗自庆幸或暗自悔恨，可是更多决定造就的未来连这种自以为是的机会也不会给你。于是，我们惟有带着自信勇往直前。&lt;/p&gt;
&lt;p&gt;小时候，每个人都没想过无数和未来，可是真正的人生轨迹却只有一条。有时候，我几乎忘记了自己为何选了国防事业，选择了军队，或许是选择的理由太过幼稚而不愿记起。可是这些都不重要了，重要的是，我是一名军人，生活在继续，我没有任何理由背叛自己的选择让步去热爱它。&lt;/p&gt;
&lt;p&gt;希望越大，失望越大；那么，希望越小，惊喜越大。野外拉练准备是我把她想象得非常艰难，不敢相信自己的体力，而寄希望于自己的意志力。可以拉练完后却发现比想象中轻松，那一天机会就要被日复一日所掩盖，只有在写下文字时才被提起。可是，当和亲朋好友提起时，他们都会略感惊讶，因为或与我是个精力充沛的人，但向来不是一个体力充沛的人。单就和我的父母比，拉链乃至军训的这点辛苦也不值一提，尽管父母会比以前的我感到高兴，但我自己却难以感受。或与叫苦的人还不知苦，而真正之苦的人已经学会了默默承担。&lt;/p&gt;
&lt;p&gt;时间是个魔术师，有些东西不知不觉淡去了，有些东西不知不觉生成了。仿佛还在前天，我在大学校园中穿行；仿佛就在昨天，我背着背包在拉练的路上奔走；仿佛写下文字的现在，我行走的步伐仍在继续。如果这是无数人生轨迹可能性中一次偶然的行走，那么它在我的人生中已经成为必然。&lt;/p&gt;
&lt;p&gt;于是我心存感念，感谢这次偶然的行走，感谢它的组织者，感谢一同走过的战友们，感谢头顶的太阳，路上的硝烟，脚底的石子。&lt;/p&gt;
&lt;p&gt;或许它只是人生的一次蝴蝶煽动翅膀，但是我仍相信它将带来的巨大的生命潮汐的涌动。&lt;/p&gt;</description><content:encoded><![CDATA[<p>野外拉练结束后的那天晚上，我躺在床上，身体困乏，意识混沌地思考一个问题：许多年后的某天晚上，我是否会偶然想起不断行走的今天。</p>
<p>据说：生命是一场蝴蝶效应，许多不起眼的小事情悄然改变着你的人生长河的走局。</p>
<p>许多时候，在人生的重大分叉点上，我们常常看不清前路，我们试图用自己最大的努力去分析与推测，可是世界的复杂却让这些成为一种心理安慰。于是，时光流转，你甚至可能想不起自己是如何作了一个决定。</p>
<p>或许，有些决定有是非对错，它会让你过后暗自庆幸或暗自悔恨，可是更多决定造就的未来连这种自以为是的机会也不会给你。于是，我们惟有带着自信勇往直前。</p>
<p>小时候，每个人都没想过无数和未来，可是真正的人生轨迹却只有一条。有时候，我几乎忘记了自己为何选了国防事业，选择了军队，或许是选择的理由太过幼稚而不愿记起。可是这些都不重要了，重要的是，我是一名军人，生活在继续，我没有任何理由背叛自己的选择让步去热爱它。</p>
<p>希望越大，失望越大；那么，希望越小，惊喜越大。野外拉练准备是我把她想象得非常艰难，不敢相信自己的体力，而寄希望于自己的意志力。可以拉练完后却发现比想象中轻松，那一天机会就要被日复一日所掩盖，只有在写下文字时才被提起。可是，当和亲朋好友提起时，他们都会略感惊讶，因为或与我是个精力充沛的人，但向来不是一个体力充沛的人。单就和我的父母比，拉链乃至军训的这点辛苦也不值一提，尽管父母会比以前的我感到高兴，但我自己却难以感受。或与叫苦的人还不知苦，而真正之苦的人已经学会了默默承担。</p>
<p>时间是个魔术师，有些东西不知不觉淡去了，有些东西不知不觉生成了。仿佛还在前天，我在大学校园中穿行；仿佛就在昨天，我背着背包在拉练的路上奔走；仿佛写下文字的现在，我行走的步伐仍在继续。如果这是无数人生轨迹可能性中一次偶然的行走，那么它在我的人生中已经成为必然。</p>
<p>于是我心存感念，感谢这次偶然的行走，感谢它的组织者，感谢一同走过的战友们，感谢头顶的太阳，路上的硝烟，脚底的石子。</p>
<p>或许它只是人生的一次蝴蝶煽动翅膀，但是我仍相信它将带来的巨大的生命潮汐的涌动。</p>
]]></content:encoded><category>life</category><category domain="tags">军旅生活</category><category domain="tags">人生感悟</category></item><item><title>百度贴吧观察</title><link>https://yifeitao.com/baidu-teiba/</link><pubDate>Mon, 23 Apr 2007 00:00:00 +0000</pubDate><guid>https://yifeitao.com/baidu-teiba/</guid><description>&lt;h3 id="基于搜索的副产品"&gt;基于搜索的副产品&lt;/h3&gt;
&lt;p&gt;百度贴吧简单，丰富的特点使以各种话题聚合人流成为可能。可是如果要模仿这种模式估计难以奏效，搜狗，腾讯都有类似的模仿产品，但人烟稀少。&lt;/p&gt;
&lt;p&gt;百度中文搜索的巨大流量才是成就百度贴吧的根本原因，比如搜索“张韶涵”，百度不但在右侧提醒你有这个贴吧，还在搜索结果中把贴吧提得比较高（显然用Google搜贴吧是不一定会排在前面的），贴吧是搜索的延续，网页搜索之外可以找到共同话题的人群。人肉搜索的强大深有体会，有一次找一首歌找疯了，最后在贴吧里发现已经有人发过了。&lt;/p&gt;
&lt;p&gt;估计百度刚刚推贴吧服务时，也没想到会如此成功，再次验证了大树底下好乘凉一说，百度巨大的流量做适当的引导就有惊人的结果。&lt;/p&gt;
&lt;h3 id="简单可依赖"&gt;简单可依赖&lt;/h3&gt;
&lt;p&gt;百度贴吧的门槛可以说是最低的，不注册就可以发言，它的正面意义在于让无数的懒人有了说话的可能，甚至不为自己的言行负责，因为连代表身份的ID都不要。&lt;/p&gt;
&lt;p&gt;功能很简单，除了打字能做的只有贴图，一次还只能贴一张。吧主的管理功能也有限，更没有一般论坛的积分系统（这还导致一些所谓的贴吧统计软件悄悄流行）。&lt;/p&gt;
&lt;p&gt;除了简约的风格外，这些带来的是速度的提升，不会出现一些论坛花花绿绿的东西太多而载入太慢的情况，有时候网络卡，一般论坛都很难进，但百度贴吧很难出现这种问题。&lt;/p&gt;</description><content:encoded><![CDATA[<h3 id="基于搜索的副产品">基于搜索的副产品</h3>
<p>百度贴吧简单，丰富的特点使以各种话题聚合人流成为可能。可是如果要模仿这种模式估计难以奏效，搜狗，腾讯都有类似的模仿产品，但人烟稀少。</p>
<p>百度中文搜索的巨大流量才是成就百度贴吧的根本原因，比如搜索“张韶涵”，百度不但在右侧提醒你有这个贴吧，还在搜索结果中把贴吧提得比较高（显然用Google搜贴吧是不一定会排在前面的），贴吧是搜索的延续，网页搜索之外可以找到共同话题的人群。人肉搜索的强大深有体会，有一次找一首歌找疯了，最后在贴吧里发现已经有人发过了。</p>
<p>估计百度刚刚推贴吧服务时，也没想到会如此成功，再次验证了大树底下好乘凉一说，百度巨大的流量做适当的引导就有惊人的结果。</p>
<h3 id="简单可依赖">简单可依赖</h3>
<p>百度贴吧的门槛可以说是最低的，不注册就可以发言，它的正面意义在于让无数的懒人有了说话的可能，甚至不为自己的言行负责，因为连代表身份的ID都不要。</p>
<p>功能很简单，除了打字能做的只有贴图，一次还只能贴一张。吧主的管理功能也有限，更没有一般论坛的积分系统（这还导致一些所谓的贴吧统计软件悄悄流行）。</p>
<p>除了简约的风格外，这些带来的是速度的提升，不会出现一些论坛花花绿绿的东西太多而载入太慢的情况，有时候网络卡，一般论坛都很难进，但百度贴吧很难出现这种问题。</p>
]]></content:encoded><category>geek</category><category domain="tags">互联网</category><category domain="tags">社会观察</category></item><item><title>buntu7.04初体验</title><link>https://yifeitao.com/ubuntu-704/</link><pubDate>Sun, 22 Apr 2007 00:00:00 +0000</pubDate><guid>https://yifeitao.com/ubuntu-704/</guid><description>&lt;p&gt;去年加硬盘时就装过ubuntu,不过装完就基本上没有去管它,三分钟热度尝尝鲜而已.&lt;/p&gt;
&lt;p&gt;昨天升级到ubuntu到最新的7.04 ,今天基本上都在用,谈一谈小体会吧.&lt;/p&gt;
&lt;p&gt;1,安装很很傻瓜化,除了分区的时候要考虑一下外.&lt;/p&gt;
&lt;p&gt;2, 已经可以非常方便的挂载访问windows的分区(windows下是看不到ubuntu分区的),默认可以读写fat32,读ntfs(写要装支持程序,我还没装) .&lt;/p&gt;
&lt;p&gt;3,程序的安装也很简单,基本上可以在源(ubuntu的软件更新服务器)中安装,稍作配置后,很多软件安装根本不需要知道在哪里下载,现在我还没有遇到需要自己编译的软件(deb包和windows下的安装包效果差不多).&lt;/p&gt;
&lt;p&gt;3,系统刚装好能播的影音文件似乎只有CD.avi,mp3,rmvb都放不了(其实windows系统也是一样的),装上mplayer和w32codecs后搞定.&lt;/p&gt;
&lt;p&gt;4,毕竟还是小众桌面系统吧,没有多少可以玩的游戏,连暴雪的游戏也没有linux版本,不过今天用通过wine(一种桥接模拟windows程序的软件)玩了war3还局域网对战了,据说也可以玩wow的,但是浩方似乎不太可能了.&lt;/p&gt;
&lt;p&gt;5,没有注册表,世界干净了;中病毒像中彩票一样,毕竟病毒开发者对小众系统没兴趣吧.linux的安全机制似乎比windows严格多了,想改系统一点东西都要输密码(麻烦一些而已).&lt;/p&gt;
&lt;p&gt;6,新版的firefox感觉上非常流畅;输入法难以适应,词库太小,搜狗用习惯了啊.&lt;/p&gt;
&lt;p&gt;7,下载软件还没用过,但bt,ed2k协议应该都有软件可用,但中国特色的迅雷式软件应该难找.&lt;/p&gt;
&lt;p&gt;8,qq,msn的替代软件gaim还凑合吧,基本功能都有,但文件传送ms有问题.&lt;/p&gt;
&lt;p&gt;总之，除了游戏和开发windows程序外的应用(汗&amp;hellip;)基本都凑合吧,但相对windows的优势却不明显,尤其是在windows免费的中国,但对菜鸟来说,其实还安全一些.&lt;/p&gt;
&lt;p&gt;以上,ubuntu firefox下完成.&lt;/p&gt;</description><content:encoded><![CDATA[<p>去年加硬盘时就装过ubuntu,不过装完就基本上没有去管它,三分钟热度尝尝鲜而已.</p>
<p>昨天升级到ubuntu到最新的7.04 ,今天基本上都在用,谈一谈小体会吧.</p>
<p>1,安装很很傻瓜化,除了分区的时候要考虑一下外.</p>
<p>2, 已经可以非常方便的挂载访问windows的分区(windows下是看不到ubuntu分区的),默认可以读写fat32,读ntfs(写要装支持程序,我还没装) .</p>
<p>3,程序的安装也很简单,基本上可以在源(ubuntu的软件更新服务器)中安装,稍作配置后,很多软件安装根本不需要知道在哪里下载,现在我还没有遇到需要自己编译的软件(deb包和windows下的安装包效果差不多).</p>
<p>3,系统刚装好能播的影音文件似乎只有CD.avi,mp3,rmvb都放不了(其实windows系统也是一样的),装上mplayer和w32codecs后搞定.</p>
<p>4,毕竟还是小众桌面系统吧,没有多少可以玩的游戏,连暴雪的游戏也没有linux版本,不过今天用通过wine(一种桥接模拟windows程序的软件)玩了war3还局域网对战了,据说也可以玩wow的,但是浩方似乎不太可能了.</p>
<p>5,没有注册表,世界干净了;中病毒像中彩票一样,毕竟病毒开发者对小众系统没兴趣吧.linux的安全机制似乎比windows严格多了,想改系统一点东西都要输密码(麻烦一些而已).</p>
<p>6,新版的firefox感觉上非常流畅;输入法难以适应,词库太小,搜狗用习惯了啊.</p>
<p>7,下载软件还没用过,但bt,ed2k协议应该都有软件可用,但中国特色的迅雷式软件应该难找.</p>
<p>8,qq,msn的替代软件gaim还凑合吧,基本功能都有,但文件传送ms有问题.</p>
<p>总之，除了游戏和开发windows程序外的应用(汗&hellip;)基本都凑合吧,但相对windows的优势却不明显,尤其是在windows免费的中国,但对菜鸟来说,其实还安全一些.</p>
<p>以上,ubuntu firefox下完成.</p>
]]></content:encoded><category>geek</category><category domain="tags">Linux</category><category domain="tags">技术</category><category domain="tags">操作系统</category></item><item><title>下载的理想国</title><link>https://yifeitao.com/download-utopia/</link><pubDate>Sun, 01 Apr 2007 00:00:00 +0000</pubDate><guid>https://yifeitao.com/download-utopia/</guid><description>&lt;p&gt;近来的下载软件市场很是热闹，FlashGet被Zcom收购后动作幅度很大，应用P2SP技术，支持BT协议，改名快车，资源聚合网kuaiche.com上线。迅雷接受Google的投资后，面对的是过去的老大的挑战。eMule还是中规中矩，在开发LowID的穿透，BitComment频繁更新，开始支持Http协议，但大多数老用户都不愿跟进。&lt;/p&gt;
&lt;p&gt;而慢慢开始获得口碑的脱兔发布了3.0的测试版，在以前支持http，ed2k，bt协议的基础上，开始支持跨协议下载，以我个人试用的感觉，虽然还有不少bug，但是对于有些资源，跨协议之后的表现确实惊人。&lt;/p&gt;
&lt;p&gt;在运营商的抱怨甚至封杀中，p2p流量据说到了全球流量的七成，以我个人经验这个数据还是可信的。在盗版猖獗的中国，免费下载已经成为一代网民的习惯，作为一个穷学生，本人也是其中一员。&lt;/p&gt;
&lt;p&gt;网络设计者的最高理想是希望信息像水，电一样使用方便而傻瓜化，要达到这一点必然离不开p2p技术的高度发达和网络带宽的革命性提高，不过我对此稍微感到悲观，下载的速度总是赶不上应用的需求的，从最初的多图杀猫到现在的bt断流，或许过不了多久，都开始下HDTV了。&lt;/p&gt;
&lt;p&gt;妄图阻止p2p传输是徒劳的，美国的电影巨头们最终还是选择了和bittorrent合作，国内的百度，迅雷，verycd也做过正版下载的有益尝试。下载方式是死的，对它的利用才是活的。国内的市场总有成熟的一天，谁能在那时占得发布正版的先机将前途无量。&lt;/p&gt;
&lt;p&gt;脱兔的跨协议下载或许不是高科技，但的确是下载的理想国迈进了一步，最终要达到的效果是用户向网络提出对某个资源的申请，然后软件智能下载回来，而不需要用户去关心协议，或者更进一步，用户根本不知道它是在本地还是网络。这种设想看起来美好，完全实现起来恐怕还是遥遥无期，但是即使它的部分实现也是很诱人的。&lt;/p&gt;
&lt;p&gt;像中国这样一直免费下去，盗版下去，估计音乐，电影市场都得不断萎缩，希望有更多更方便更实际的正版下载模式发明出来，也好尽我支持正版之心，而不是像现在。好不容易买了一张正版CD，只是放着装样子。&lt;/p&gt;
&lt;p&gt;当用户与商家的下载理想国建立时，才是真正的网络时代的到来。&lt;/p&gt;</description><content:encoded><![CDATA[<p>近来的下载软件市场很是热闹，FlashGet被Zcom收购后动作幅度很大，应用P2SP技术，支持BT协议，改名快车，资源聚合网kuaiche.com上线。迅雷接受Google的投资后，面对的是过去的老大的挑战。eMule还是中规中矩，在开发LowID的穿透，BitComment频繁更新，开始支持Http协议，但大多数老用户都不愿跟进。</p>
<p>而慢慢开始获得口碑的脱兔发布了3.0的测试版，在以前支持http，ed2k，bt协议的基础上，开始支持跨协议下载，以我个人试用的感觉，虽然还有不少bug，但是对于有些资源，跨协议之后的表现确实惊人。</p>
<p>在运营商的抱怨甚至封杀中，p2p流量据说到了全球流量的七成，以我个人经验这个数据还是可信的。在盗版猖獗的中国，免费下载已经成为一代网民的习惯，作为一个穷学生，本人也是其中一员。</p>
<p>网络设计者的最高理想是希望信息像水，电一样使用方便而傻瓜化，要达到这一点必然离不开p2p技术的高度发达和网络带宽的革命性提高，不过我对此稍微感到悲观，下载的速度总是赶不上应用的需求的，从最初的多图杀猫到现在的bt断流，或许过不了多久，都开始下HDTV了。</p>
<p>妄图阻止p2p传输是徒劳的，美国的电影巨头们最终还是选择了和bittorrent合作，国内的百度，迅雷，verycd也做过正版下载的有益尝试。下载方式是死的，对它的利用才是活的。国内的市场总有成熟的一天，谁能在那时占得发布正版的先机将前途无量。</p>
<p>脱兔的跨协议下载或许不是高科技，但的确是下载的理想国迈进了一步，最终要达到的效果是用户向网络提出对某个资源的申请，然后软件智能下载回来，而不需要用户去关心协议，或者更进一步，用户根本不知道它是在本地还是网络。这种设想看起来美好，完全实现起来恐怕还是遥遥无期，但是即使它的部分实现也是很诱人的。</p>
<p>像中国这样一直免费下去，盗版下去，估计音乐，电影市场都得不断萎缩，希望有更多更方便更实际的正版下载模式发明出来，也好尽我支持正版之心，而不是像现在。好不容易买了一张正版CD，只是放着装样子。</p>
<p>当用户与商家的下载理想国建立时，才是真正的网络时代的到来。</p>
]]></content:encoded><category>geek</category><category domain="tags">互联网</category><category domain="tags">科技</category><category domain="tags">版权</category></item><item><title>人生三境界</title><link>https://yifeitao.com/realm-of-life/</link><pubDate>Sun, 14 Jan 2007 00:00:00 +0000</pubDate><guid>https://yifeitao.com/realm-of-life/</guid><description>&lt;p&gt;境界一：不见棺材也落泪！&lt;/p&gt;
&lt;p&gt;境界二：不见棺材不落泪！&lt;/p&gt;
&lt;p&gt;境界三：见了棺材也不落泪！&lt;/p&gt;
&lt;p&gt;目前大约处在境界二，属于可救赎的吧。&lt;/p&gt;</description><content:encoded><![CDATA[<p>境界一：不见棺材也落泪！</p>
<p>境界二：不见棺材不落泪！</p>
<p>境界三：见了棺材也不落泪！</p>
<p>目前大约处在境界二，属于可救赎的吧。</p>
]]></content:encoded><category>life</category><category domain="tags">人生感悟</category><category domain="tags">思考</category></item><item><title>断章2006</title><link>https://yifeitao.com/fragments-2006/</link><pubDate>Sun, 31 Dec 2006 00:00:00 +0000</pubDate><guid>https://yifeitao.com/fragments-2006/</guid><description>&lt;h3 id="1"&gt;1&lt;/h3&gt;
&lt;p&gt;据说，人类一思考，上帝就发笑。&lt;/p&gt;
&lt;p&gt;如果我们相信上帝？&lt;/p&gt;
&lt;p&gt;如果我们只相信自己？&lt;/p&gt;
&lt;p&gt;为了让上帝开心，为了让自己存在，&lt;/p&gt;
&lt;p&gt;在一个虚假的日子开始记录真实的片段。&lt;/p&gt;
&lt;h3 id="2"&gt;2&lt;/h3&gt;
&lt;p&gt;“多少钱一斤？“&lt;/p&gt;
&lt;p&gt;“三毛。”&lt;/p&gt;
&lt;p&gt;“一块钱三斤卖不卖？“&lt;/p&gt;
&lt;p&gt;“不卖！&lt;/p&gt;
&lt;p&gt;所以说：傻气也是可以传染的。不要和白痴争论,他们会把你拉低到同一水平线，然后用经验战胜你。&lt;/p&gt;
&lt;h3 id="3"&gt;3&lt;/h3&gt;
&lt;p&gt;据说生活的幸福总量是守恒的，就像一杯糖水，加的水多了就会变淡。&lt;/p&gt;
&lt;p&gt;或许我们更需要加糖而不是加水，可惜生活往往相反，自以为加了糖，其实还是加了水。贪婪只能使我们喝淡淡的糖水而已。&lt;/p&gt;
&lt;h3 id="4"&gt;4&lt;/h3&gt;
&lt;p&gt;脱口而出的往往是真实意愿的表达，&lt;/p&gt;
&lt;p&gt;脱口而出的往往是不负责任的语言。&lt;/p&gt;
&lt;p&gt;所以不要太相信网上人类的语言。在网络上最常见的语言之一：国骂。&lt;/p&gt;
&lt;h3 id="5"&gt;5&lt;/h3&gt;
&lt;p&gt;&amp;ldquo;一加一等于几？”&lt;/p&gt;
&lt;p&gt;“二！”&lt;/p&gt;
&lt;p&gt;脑筋急转弯欺骗我们的纯洁，让我们认识世界的可怕。&lt;/p&gt;
&lt;p&gt;“一加一等于几？”，我们一次次被欺骗。&lt;/p&gt;
&lt;p&gt;“一加一等于几？”领导说了算！&lt;/p&gt;
&lt;h3 id="6"&gt;6&lt;/h3&gt;
&lt;p&gt;为什么要年少无知？&lt;/p&gt;
&lt;p&gt;为什么要后悔不迭？&lt;/p&gt;
&lt;p&gt;为什么要明知故犯？&lt;/p&gt;
&lt;p&gt;为什么要陷入泥潭？&lt;/p&gt;
&lt;p&gt;为什么要落进深渊？&lt;/p&gt;
&lt;p&gt;相信自己抵制诱惑的能力。但俗话说：常在河边走，哪能不湿鞋。&lt;/p&gt;
&lt;p&gt;觉醒时在挣扎，哭泣时已无声。&lt;/p&gt;
&lt;h3 id="7"&gt;7&lt;/h3&gt;
&lt;p&gt;有一堵墙在靠近我，有两堵墙在挤压，&lt;/p&gt;
&lt;p&gt;我艰于呼吸，&lt;/p&gt;
&lt;p&gt;我看我的灵魂表演，&lt;/p&gt;
&lt;p&gt;它在往死胡同里，&lt;/p&gt;
&lt;p&gt;路越来越窄，&lt;/p&gt;
&lt;p&gt;梦醒时又是新的阳光。&lt;/p&gt;
&lt;h3 id="8"&gt;8&lt;/h3&gt;
&lt;p&gt;计划永远跟不上变化，&lt;/p&gt;
&lt;p&gt;时机总是合不上心情。&lt;/p&gt;
&lt;p&gt;期待的放松可以让人受累，&lt;/p&gt;
&lt;p&gt;期待的成功可以令人崩溃。&lt;/p&gt;
&lt;p&gt;有流泪的眼睛，没有伤心的时间，&lt;/p&gt;
&lt;p&gt;有流泪的时间，只有麻木的心情。&lt;/p&gt;
&lt;p&gt;机会来了又走了，我们哭了又笑了&lt;/p&gt;
&lt;p&gt;游戏结束了!&lt;/p&gt;
&lt;h3 id="9"&gt;9&lt;/h3&gt;
&lt;p&gt;嘲笑寒号鸟的自己只说不做，&lt;/p&gt;
&lt;p&gt;嘲笑皮诺曹的自己谎话连天，&lt;/p&gt;
&lt;p&gt;——寓言和童话都是真实的&lt;/p&gt;
&lt;p&gt;真实 木偶 谩骂 无聊 颓废 堆砌&lt;/p&gt;
&lt;p&gt;热情 震惊 迷茫 懒惰 虚弱 误会&lt;/p&gt;
&lt;p&gt;离开 暂别 回归 放弃 掩埋 收藏&lt;/p&gt;</description><content:encoded><![CDATA[<h3 id="1">1</h3>
<p>据说，人类一思考，上帝就发笑。</p>
<p>如果我们相信上帝？</p>
<p>如果我们只相信自己？</p>
<p>为了让上帝开心，为了让自己存在，</p>
<p>在一个虚假的日子开始记录真实的片段。</p>
<h3 id="2">2</h3>
<p>“多少钱一斤？“</p>
<p>“三毛。”</p>
<p>“一块钱三斤卖不卖？“</p>
<p>“不卖！</p>
<p>所以说：傻气也是可以传染的。不要和白痴争论,他们会把你拉低到同一水平线，然后用经验战胜你。</p>
<h3 id="3">3</h3>
<p>据说生活的幸福总量是守恒的，就像一杯糖水，加的水多了就会变淡。</p>
<p>或许我们更需要加糖而不是加水，可惜生活往往相反，自以为加了糖，其实还是加了水。贪婪只能使我们喝淡淡的糖水而已。</p>
<h3 id="4">4</h3>
<p>脱口而出的往往是真实意愿的表达，</p>
<p>脱口而出的往往是不负责任的语言。</p>
<p>所以不要太相信网上人类的语言。在网络上最常见的语言之一：国骂。</p>
<h3 id="5">5</h3>
<p>&ldquo;一加一等于几？”</p>
<p>“二！”</p>
<p>脑筋急转弯欺骗我们的纯洁，让我们认识世界的可怕。</p>
<p>“一加一等于几？”，我们一次次被欺骗。</p>
<p>“一加一等于几？”领导说了算！</p>
<h3 id="6">6</h3>
<p>为什么要年少无知？</p>
<p>为什么要后悔不迭？</p>
<p>为什么要明知故犯？</p>
<p>为什么要陷入泥潭？</p>
<p>为什么要落进深渊？</p>
<p>相信自己抵制诱惑的能力。但俗话说：常在河边走，哪能不湿鞋。</p>
<p>觉醒时在挣扎，哭泣时已无声。</p>
<h3 id="7">7</h3>
<p>有一堵墙在靠近我，有两堵墙在挤压，</p>
<p>我艰于呼吸，</p>
<p>我看我的灵魂表演，</p>
<p>它在往死胡同里，</p>
<p>路越来越窄，</p>
<p>梦醒时又是新的阳光。</p>
<h3 id="8">8</h3>
<p>计划永远跟不上变化，</p>
<p>时机总是合不上心情。</p>
<p>期待的放松可以让人受累，</p>
<p>期待的成功可以令人崩溃。</p>
<p>有流泪的眼睛，没有伤心的时间，</p>
<p>有流泪的时间，只有麻木的心情。</p>
<p>机会来了又走了，我们哭了又笑了</p>
<p>游戏结束了!</p>
<h3 id="9">9</h3>
<p>嘲笑寒号鸟的自己只说不做，</p>
<p>嘲笑皮诺曹的自己谎话连天，</p>
<p>——寓言和童话都是真实的</p>
<p>真实 木偶 谩骂 无聊 颓废 堆砌</p>
<p>热情 震惊 迷茫 懒惰 虚弱 误会</p>
<p>离开 暂别 回归 放弃 掩埋 收藏</p>
<p>珍惜</p>
<h3 id="10">10</h3>
<p>人是需要交流的动物。</p>
<p>娱乐不等于快乐。</p>
<p>说得好听的比做得漂亮的永远要多。</p>
<p>假装颓废会变得颓废。</p>
<p>事前的思考作用是有限的。</p>
<p>杀死进取心的是时间和自己的内心。</p>
<p>腐烂也是重生的开始。</p>
<p>无数的废话构建了世界。</p>
]]></content:encoded><category>life</category><category domain="tags">生活</category><category domain="tags">思考</category></item><item><title>观影列表2006</title><link>https://yifeitao.com/movies-2006/</link><pubDate>Sun, 31 Dec 2006 00:00:00 +0000</pubDate><guid>https://yifeitao.com/movies-2006/</guid><description>&lt;h3 id="残忍的雏菊"&gt;残忍的雏菊&lt;/h3&gt;
&lt;p&gt;刚刚看完《雏菊》，情节还真是残忍啊，主角死了个一干二净，全智贤第一次被枪打成了哑巴，以致在电影中就没几句台词，这样也好，就不用忍受难受的中文配音了，习惯看字幕的人还真不习惯听配音，总觉得不对劲，第二次就挂了，总之遗憾多多，可惜电影看多了，感动就少了&lt;/p&gt;
&lt;p&gt;这个世界有得不到时想得到的，也有得到了却追悔莫及的。雏菊再美再香，也掩盖不了火药和血的味道，如果一切可以重来，可惜这是人生&amp;hellip;..&lt;/p&gt;
&lt;p&gt;（20060514合肥)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论
流浪射手 2006 年 05 月 14
好看么，是不是昨天晚上被我认为是恐怖片配音的。
五月的麦地 2006 年 05 月 14
这个配音不是一般的烂啊全智贤得声音配的太轻佻，而那个男的声音又太“古典”了导演是香港人吧，难怪总感觉怪怪
Racy 2007 年 06 月 28
看完非常难过&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="我已经老了吗"&gt;我已经老了吗&lt;/h3&gt;
&lt;p&gt;前几天边装oracle边看的纳尼亚传奇，下了个画质不错的版本，以后为了不浪费带宽，抛弃RMVB转投AVI的怀抱，呵呵。也许大片的场面见多了，也没什么强烈的印象，war3玩多了，习惯了奇奇怪怪的怪物，无视；也许是年纪大了，对那4个小孩莫名其妙的称王称后很不满的说，不过最后还是一场梦的结局比较合我胃口。最后不得不说老外的CG就是做的好啊
（20060523合肥）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论
五月的麦地
2006 年 05 月 25
Narnia的情节嘛，实在是&amp;hellip;&amp;hellip;小说竟然还和指环王系列齐名不解当然，把它当童话看也无不
流浪射手
2006 年 05 月 25
顶起
漂白
2006 年 05 月 26
down&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="世界上的另一个我"&gt;世界上的另一个我&lt;/h3&gt;
&lt;p&gt;看了人气漫画的真人化电影 NANA ,本来要看动画的，但听说是少女漫画，也就免了，但看了电影还不错。不过所谓的2NANA也就是玩个概念了，讲的还是人间的友谊和爱情。性格差异巨大的人可以因为友谊而互相关心，感觉很好。另外中岛美嘉的歌唱得不错，难怪某人很喜欢&lt;/p&gt;
&lt;p&gt;（20060601合肥）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论&lt;/p&gt;
&lt;p&gt;五月的麦地&lt;/p&gt;
&lt;p&gt;2006 年 06 月 01&lt;/p&gt;
&lt;p&gt;两个Nana一个动画里的好看些，另一个电影里的好些 Anyway,just soso ps:歌确实不错&amp;lt;&lt;/p&gt;
&lt;p&gt;漂白&lt;/p&gt;
&lt;p&gt;2006 年 06 月 02&lt;/p&gt;</description><content:encoded><![CDATA[<h3 id="残忍的雏菊">残忍的雏菊</h3>
<p>刚刚看完《雏菊》，情节还真是残忍啊，主角死了个一干二净，全智贤第一次被枪打成了哑巴，以致在电影中就没几句台词，这样也好，就不用忍受难受的中文配音了，习惯看字幕的人还真不习惯听配音，总觉得不对劲，第二次就挂了，总之遗憾多多，可惜电影看多了，感动就少了</p>
<p>这个世界有得不到时想得到的，也有得到了却追悔莫及的。雏菊再美再香，也掩盖不了火药和血的味道，如果一切可以重来，可惜这是人生&hellip;..</p>
<p>（20060514合肥)</p>
<blockquote>
<p>评论
流浪射手 2006 年 05 月 14
好看么，是不是昨天晚上被我认为是恐怖片配音的。
五月的麦地 2006 年 05 月 14
这个配音不是一般的烂啊全智贤得声音配的太轻佻，而那个男的声音又太“古典”了导演是香港人吧，难怪总感觉怪怪
Racy 2007 年 06 月 28
看完非常难过</p>
</blockquote>
<h3 id="我已经老了吗">我已经老了吗</h3>
<p>前几天边装oracle边看的纳尼亚传奇，下了个画质不错的版本，以后为了不浪费带宽，抛弃RMVB转投AVI的怀抱，呵呵。也许大片的场面见多了，也没什么强烈的印象，war3玩多了，习惯了奇奇怪怪的怪物，无视；也许是年纪大了，对那4个小孩莫名其妙的称王称后很不满的说，不过最后还是一场梦的结局比较合我胃口。最后不得不说老外的CG就是做的好啊
（20060523合肥）</p>
<blockquote>
<p>评论
五月的麦地
2006 年 05 月 25
Narnia的情节嘛，实在是&hellip;&hellip;小说竟然还和指环王系列齐名不解当然，把它当童话看也无不
流浪射手
2006 年 05 月 25
顶起
漂白
2006 年 05 月 26
down</p>
</blockquote>
<h3 id="世界上的另一个我">世界上的另一个我</h3>
<p>看了人气漫画的真人化电影 NANA ,本来要看动画的，但听说是少女漫画，也就免了，但看了电影还不错。不过所谓的2NANA也就是玩个概念了，讲的还是人间的友谊和爱情。性格差异巨大的人可以因为友谊而互相关心，感觉很好。另外中岛美嘉的歌唱得不错，难怪某人很喜欢</p>
<p>（20060601合肥）</p>
<blockquote>
<p>评论</p>
<p>五月的麦地</p>
<p>2006 年 06 月 01</p>
<p>两个Nana一个动画里的好看些，另一个电影里的好些 Anyway,just soso ps:歌确实不错&lt;</p>
<p>漂白</p>
<p>2006 年 06 月 02</p>
<p>顶 哈哈</p>
</blockquote>
<h3 id="岩井俊二的两部电影">岩井俊二的两部电影</h3>
<p><em>发表于 2006 年 06 月 25 日</em></p>
<p>最近上某网看见别人推荐的岩井俊二导演的两部老片，down下来看了，发现一个人两部片的风格可以有天壤之别，真是佩服</p>
<p>《情书 》：淡淡的爱情片，但更多的有淡淡的对生命的看法，估计适合和女朋友一起看，我一个人看完实在浪费了</p>
<p>《燕尾蝶》：浓烈的对生活的渴望，那个令人心动的钞票神化，还有固力果有些孩子气的嗓音将让我永远难忘</p>
<blockquote>
<p>评论</p>
<p>YisHasEVEN</p>
<p>2006 年 06 月 25</p>
<p>燕尾蝶强烈推荐</p>
<p>漂白</p>
<p>2006 年 06 月 25</p>
<p>我就说这名字怎么这么熟 原来看过四月物语。</p>
<p>流浪射手</p>
<p>2006 年 06 月 26</p>
<p>也许当时还太小，高中军训的时候集中放过《情书》，看得不知所云。。</p>
<p>五月的麦地</p>
<p>2006 年 06 月 27</p>
<p>一个人看浪费？我陪你看怎么样(</p>
<p>radiobad</p>
<p>2006 年 11 月 11</p>
<p>非常喜欢岩井俊二。推荐他的另外一部《梦旅人》。更加简单，更加深刻。</p>
</blockquote>
<h3 id="靠近我温暖">靠近我，温暖</h3>
<p>“靠近我，温暖你”这个题目是梅婷的Blog的名字，第一次看到就喜欢上了，今天看了《 我们俩 》觉得借来一用很是合适，一个简单的故事，却带给我很多的感动</p>
<p>有人说人与人之间的关系就像刺猬，也许这是对的，所以我们才会不敢靠近，才会误会与不解，可是我们又都是孤独的，即使刺伤彼此还是忍不住要靠近，或许真情会让我们的刺软化吧</p>
<p>靠近吧，真情不应缺失，孤独并不美好，岁月并不悠长</p>
<p>（20060821合肥)</p>
<blockquote>
<p>评论</p>
<p>流浪射手</p>
<p>2006 年 08 月 21</p>
<p>Our time is short&hellip;Do what you want to do&hellip;</p>
</blockquote>
<h3 id="天堂失格社会不需要报">《天堂失格》：社会不需要报</h3>
<p><em>发表于 2006 年 10 月 02 日</em></p>
<p>不得不承认我很容易被标题吸引，借此证明我很俗气。scrap heaven ，名字很酷，可是看完又觉得太过灰暗。</p>
<p>日本人好像是公认的压力大，生活压抑。这个片子又加深了我这个印象，可是现在的中国也会有部分类似吧。三个对生活不满的人——清洁工，药剂，警察，在被人劫持一次死里逃生后，开始寻找生活的想象力，他们想到的是帮人复仇。以恶作剧开始，以悲剧收场。可是让人无奈的是想自杀的警察最终被无厘头的方式救了。</p>
<p>生活可能确实很单调，朝九晚五，日复一日，可能觉得生命成了机器。可是当报复伤害到他人时，一切都是借口。 很喜欢警察的上司教训人那一段，这个社会不满意的地方太多，如果都想这报复解决，不知会如何收场</p>
<p>这个电影很灰暗，可是我想看到光明。不完美的世界是无罪的。</p>
<p>如果人间被遗忘，唯有自救</p>
<h3 id="sukid">Sukid</h3>
<p>因为豆瓣的推荐，看了这部很闷很闷的电影。两位主角一句喜欢你憋了17年，一段吉他曲也用了17年才完成；看电影的我也忍受电影的慢节奏憋了一个多小时。记忆中就只有一段断断续续的吉他声了</p>
<p>（20061207合肥)</p>
<blockquote>
<p>评论</p>
<p>varcher</p>
<p>2006 年 12 月 13</p>
<p>你现在就适合慢节奏，嗯。。</p>
</blockquote>
]]></content:encoded><category>movie</category><category domain="tags">电影</category><category domain="tags">观影</category></item><item><title>流水帐2006</title><link>https://yifeitao.com/diary-2006/</link><pubDate>Sun, 31 Dec 2006 00:00:00 +0000</pubDate><guid>https://yifeitao.com/diary-2006/</guid><description>&lt;p&gt;&lt;strong&gt;【2011整理按】&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2006年在懵懂中做了很多重大决定，2006年愚人节和舍友们一起在MSN开通博客，后搬迁至新浪，博客大巴。现在MSN已经关闭博客服务，一起开博的人也各奔东西了。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="骂迟了"&gt;骂迟了&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2006 年 04 月 09 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;昨天吃饭时不小心看到了一个恶心的电视购物广告，竟然是卖软件的，无语。本来还想骂一番的，同室的家伙已经骂了几大段。只想说，这种乞讨术加骗术的推销手段从丰胸减肥产品到了软件，可悲啊。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论
流浪射手
2006 年 04 月 09
呵呵呵总有人上当&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="倒霉的蝴蝶效应"&gt;倒霉的蝴蝶效应&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2006 年 04 月 10 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;想删除一个游戏中途卡死——〉强退——〉该文件夹下所有程序损坏——〉补装一个浩方优化版——〉优化版被迫升级——〉变成了垃圾版——〉关广告点错了——〉装上了一堆流氓软件——〉清除中…… 顺便赞一下技术日新月异的有中国特色的流氓软件，不想讲文明了，我日流氓软件作者全家&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论
流浪射
2006 年 04 月 12
祝贺你！！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="无聊的游戏"&gt;无聊的游戏&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2006 年 04 月 12 日&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;每天和室友上浩方2v2，今天是最无聊的，碰到基本是兽族，基本用剑圣，基本没操作，基本都掉线。貌似很多人玩游戏也没追求啊，多好的游戏被搞成了单体PK，还是建议他们去玩3C&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;评论
流浪射
2006 年 04 月 13
很有道理！！
漂
2006 年 04 月 14
还是那句话 一切归于人品二字 要向我学习人&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="激情依旧感谢sky"&gt;激情依旧，感谢SKY&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;发表于 2006 年 04 月 23 日&lt;/em&gt;&lt;/p&gt;</description><content:encoded><![CDATA[<p><strong>【2011整理按】</strong></p>
<p><strong>2006年在懵懂中做了很多重大决定，2006年愚人节和舍友们一起在MSN开通博客，后搬迁至新浪，博客大巴。现在MSN已经关闭博客服务，一起开博的人也各奔东西了。</strong></p>
<h3 id="骂迟了">骂迟了</h3>
<p><em>发表于 2006 年 04 月 09 日</em></p>
<p>昨天吃饭时不小心看到了一个恶心的电视购物广告，竟然是卖软件的，无语。本来还想骂一番的，同室的家伙已经骂了几大段。只想说，这种乞讨术加骗术的推销手段从丰胸减肥产品到了软件，可悲啊。</p>
<blockquote>
<p>评论
流浪射手
2006 年 04 月 09
呵呵呵总有人上当</p>
</blockquote>
<h3 id="倒霉的蝴蝶效应">倒霉的蝴蝶效应</h3>
<p><em>发表于 2006 年 04 月 10 日</em></p>
<p>想删除一个游戏中途卡死——〉强退——〉该文件夹下所有程序损坏——〉补装一个浩方优化版——〉优化版被迫升级——〉变成了垃圾版——〉关广告点错了——〉装上了一堆流氓软件——〉清除中…… 顺便赞一下技术日新月异的有中国特色的流氓软件，不想讲文明了，我日流氓软件作者全家</p>
<blockquote>
<p>评论
流浪射
2006 年 04 月 12
祝贺你！！</p>
</blockquote>
<h3 id="无聊的游戏">无聊的游戏</h3>
<p><em>发表于 2006 年 04 月 12 日</em></p>
<p>每天和室友上浩方2v2，今天是最无聊的，碰到基本是兽族，基本用剑圣，基本没操作，基本都掉线。貌似很多人玩游戏也没追求啊，多好的游戏被搞成了单体PK，还是建议他们去玩3C</p>
<blockquote>
<p>评论
流浪射
2006 年 04 月 13
很有道理！！
漂
2006 年 04 月 14
还是那句话 一切归于人品二字 要向我学习人</p>
</blockquote>
<h3 id="激情依旧感谢sky">激情依旧，感谢SKY</h3>
<p><em>发表于 2006 年 04 月 23 日</em></p>
<p>昨天为了看WEG，装了N个P2PTV软件，等了N长的无聊时间。比赛没有让我失望，有一种以前看世界杯的感觉，但不同的是世界杯的结果让人失望，而自生自灭的电子竞技却让人激动，看着SKY的红血英雄在GRUBBY的家中游弋，呼吸都要停止一样。无聊了太久，但原来激情还在</p>
<p>只是希望这种快乐可以让更多的人接受，电子游戏是电子海洛因的说法有一天可以进垃圾堆</p>
<p>一点结论：看中国电子竞技绝对比看中国足球要爽多了</p>
<blockquote>
<p>评论
五月的麦
2006 年 04 月 24
看中国足球也很爽啊如果你喜欢被虐的
流浪射
2006 年 04 月 28
虐得也不爽，因为没有强队来虐！</p>
</blockquote>
<h3 id="忙">忙</h3>
<p><em>发表于 2006 年 04 月 27 日</em></p>
<p>最近很忙啊，有几个实验题，有weg，还有五一前的补课，还有最重要的益脑。OMG，我在说什么啊，主要是要熄灯了，前天提前2分钟熄灯，搞得我写了半天的全搞丢了，机器也没来得及关，关机！关机！Time is limited</p>
<blockquote>
<p>评论
流浪射
2006 年 04 月 28
哈哈哈，你可以购买UPS。。
YisHasEVE
2006 年 04 月 28
貌似在炫耀。。</p>
</blockquote>
<h3 id="干一行爱一行">干一行爱一行？</h3>
<p><em>发表于 2006 年 05 月 01 日</em></p>
<p>发现自己原来是三分钟热度啊，空间已经到了无语的地步。不过现在放假了，可以恶补上一堆了，今天有WEG的半决赛，期待精彩的比赛，前几天的比赛经常一边倒，真是浪费感情。昨天2v2多了，今天还觉得有些恶心，原来游戏玩多了也会恶心，可见职业选手估计也是很可怜的。可以因为职业是兴趣而快乐，但也因为兴趣成为职业而无聊吧。到底是干一行爱一行还是干一行恨一行呢，这是一个问题</p>
<blockquote>
<p>评论
流浪射手 2006 年 05 月 01
今天半决赛</p>
</blockquote>
<h3 id="倒霉的早上">倒霉的早上</h3>
<p><em>发表于 2006 年 05 月 02 日</em></p>
<p>没电没水，电表坏了，据说51很难找人修，只好私拉电网了。昨天sky的比赛真是让人伤心，唉</p>
<blockquote>
<p>评论
五月的麦地 2006 年 05 月 03
同情一下&hellip;..</p>
</blockquote>
<h3 id="没有悬念">没有悬念</h3>
<p><em>发表于 2006 年 05 月 04 日</em></p>
<p>没有悬念，人族现在太强了，除了对不死族外，战术太成熟了，moon华丽的小精灵围英雄只能是作秀了。总的来说，魔兽是个观赏性大于竞技性的比赛，不平衡的地方很多，一旦被选手挖掘就会称霸一段时间，叫嚣NE imba的人估计要闭嘴了。可惜SkY在内战中挂了，不然冠军拿定了。</p>
<h3 id="装软件的一点心得">装软件的一点心得</h3>
<p><em>发表于 2006 年 05 月 04 日</em></p>
<p>最近无聊的时间多，装装卸卸了很多软件，防流氓软件的心得又增加了</p>
<p>第一就是千万不要一路next</p>
<p>第二就是一定要选自定义安装，除掉一些组件</p>
<p>第三就是装好了选运行的时候也要小心</p>
<p>最后就是每一步要看清楚，是和否要理解清楚</p>
<p>科技不会减少烦恼，只是转移烦恼</p>
<blockquote>
<p>评论
五月的麦地 2006 年 05 月 04
科技在很多时候甚至增加烦</p>
</blockquote>
<h3 id="悼念">悼念</h3>
<p><em>发表于 2006 年 05 月 06 日</em></p>
<p>五一要过去了，提前悼念一下，应该说过的好是比较爽的，只是&hellip;&hellip;失去的不会回来，人生不能读档，算了吧，不废话了</p>
<blockquote>
<p>评论
五月的麦地 2006 年 05 月 06
同
YisHasEVEN 2006 年 05 月 07
20年过去了，剩下的还..
流浪射手 2006 年 05 月 07
五一过去了，暑假还远么</p>
</blockquote>
<h3 id="实验测验-昨日重现暴走的五月">实验！测验！ 昨日重现？暴走的五月*</h3>
<p><em>发表于 2006 年 05 月 17 日</em></p>
<p>最近很忙啊，而且会越来越忙，都有点6月前的紧张似的，可怜一下即将高考的小家伙们，大学可以轻松过，不过会死得很惨就是了</p>
<p>春天的华尔兹终于放完了，还堆了两集没看，本学期再也没有看电视剧的欲望，主要是没时间了，仍然每周的等待School Rumble</p>
<p>看PL0代码许久，还没搞很清楚，不过倒是发现一个源代码的一个低级错误，呵呵，希望老陈要守信用啊</p>
<p>五月，暴走中，希望有个好结果，和高考的人一起，fighting</p>
<blockquote>
<p>评论
流浪射
2006 年 05 月 20
FLighting</p>
</blockquote>
<h3 id="万恶的">万恶的</h3>
<p><em>发表于 2006 年 05 月 19 日</em></p>
<p>今天由于某个可以理解的原因翘课了，回到寝室看了几分钟书，开始被桌面RSS新闻所吸引，于是，近2个小时完蛋了，悼念中…</p>
<p>这万恶的超链接。</p>
<h3 id="点点点">点点点</h3>
<p><em>发表于 2006 年 05 月 22 日</em></p>
<p>……最近广菜流行站队，一堆小鸟MH,OM</p>
<p>……原来错误早就更正了，yiyun，Yun</p>
<p>……体力劳动的某程序,just begin</p>
<p>……插线，拷代码，over，what am I doing</p>
<p>……下了SR的演唱会，感叹国内动漫的萎靡,Rumble</p>
<p>……无语啊，nothin</p>
<blockquote>
<p>评论
流浪射
2006 年 05 月 25
哦hohoh</p>
</blockquote>
<h3 id="儿童节快乐及其他">儿童节快乐及其他</h3>
<p><em>发表于 2006 年 06 月 01 日</em></p>
<p>祝小朋友及自认为是小朋友的人快乐</p>
<p>祝自己昨天生日快乐！汗</p>
<p>最近要交的几个实验终于搞得差不多了，数据库考试推后，看来编译的复习时间更多了，一定要搞定yiyun同志</p>
<blockquote>
<p>评论
五月的麦
2006 年 06 月 01
猪你生日快乐 儿童节快
流浪射
2006 年 06 月 04
well don
流浪射
2006 年 06 月 18
事实证明没有搞</p>
</blockquote>
<h3 id="一点可惜不是一点点">一点可惜，不是一点点</h3>
<p><em>发表于 2006 年 06 月 03 日</em></p>
<p>昨天无聊，看了不少超女节目，刚觉得一个还不错，立马被PK了，今天游迹于百度各个超女的帖吧，看一堆幼稚但真挚的人在吵架，骂黑幕。原来行使权力的魅力如此大，尽管只是选自己喜欢的歌手</p>
<p>最为可惜的是，中国好像失去的公信力，RN上整天讨论的也是黑幕黑幕的，看看娱乐节目也不让人轻松，实在是可恶</p>
<blockquote>
<p>评论
流浪射
2006 年 06 月 04
民主？从来就没有真正的民主！</p>
</blockquote>
<h3 id="2006不应错过的声音">2006不应错过的声音</h3>
<p><em>发表于 2006 年 06 月 22 日</em></p>
<p>听歌《幸福港湾》，over，无聊时看电视喜欢上的超女——胡灵，希望她可以打败人妖们</p>
<blockquote>
<p>评论
五月的麦
2006 年 06 月 24
李宇春不是作计划生育广告“生男生女都一样”么 (
流浪射
2006 年 06 月 24
Fightin</p>
</blockquote>
<h3 id="suho唉sky加油">suhO,唉&hellip;&hellip;Sky,加油！</h3>
<p><em>发表于 2006 年 07 月 02 日</em></p>
<p>ESWC，一轮男的噩梦！！！！！！！！！！！！！！ 诋毁他的BT们又有话说了，这个世界小白太多，所以做人要像Sky一样低调啊，出了成绩也要低调，不然就会被骂，何况成绩还不好，在blog上信心满满，结果又让人无奈，唉&hellip;&hellip; Sky一路杀菜，挺进四强，做掉路大大，你就是无敌状态了，hoho~不过路大大最近很无敌啊，祈祷ing&hellip;&hellip; PS:又TM点球大战，英格兰的心理素质不行啊，传统？！</p>
<h3 id="最后一哆嗦">最后一哆嗦</h3>
<p><em>发表于 2006 年 07 月 09 日</em></p>
<p>想看球更想睡觉，估计我是写完就睡了。有时候离目标一步时我们会想要放弃，心里琢磨着反正做到了最后也该有不过如此的感叹的，那就睡吧。看来最后的一哆嗦还真是不容易啊</p>
<blockquote>
<p>评论
流浪射
2006 年 07 月 22
Final Fantas</p>
</blockquote>
<h3 id="竟然">竟然</h3>
<p><em>发表于 2006 年 08 月 05 日</em></p>
<p>搞寝室卫生，感叹垃圾之多啊，我昨天竟然就那么睡了</p>
<p>坐下来下了好几张新专辑，FIR的，陶喆的，SHE的，不知道是不是我心情不好，竟然没一首听得爽的新歌，郁闷死我也</p>
<p>学生证，好久不见的学生证竟然出现了，山呼万岁</p>
<p>MSN空间竟然升级了，还有些看不顺眼</p>
<blockquote>
<p>评论
漂
2006 年 08 月 06
听sr第二学期的专</p>
</blockquote>
<h3 id="money的力量">money的力量</h3>
<p><em>发表于 2006 年 08 月 19 日</em></p>
<p>今天去给手机充值了，钱一付手机马上有信号，是该感叹科技的力量还是money的力量呢</p>
<p>下午看不知道什么时候堆在硬盘上的电影《谍中谍I》，字幕老是对不上，花了不少心思，英文差就是没办法，哪天可以不用字幕就圆满了，估计没戏</p>
<blockquote>
<p>评论
varche
2006 年 08 月 19
对被迫搬家的同志表示极大的同情。。。
yisha
2006 年 08 月 19
支持国货</p>
</blockquote>
<h3 id="听歌真的需要心情的哦">听歌真的需要心情的哦</h3>
<p><em>发表于 2006 年 08 月 22 日</em></p>
<p>FIR的新专辑下了很久，当时听觉得一塌糊涂，今天听了突然觉得还是一样赞，看来有时候不要相信自己的感觉才好。《北极圈》，有点幽幽的感觉</p>
<blockquote>
<p>评论
五月的
2006 年 08 月 22
是叫什么飞行部落的吧，觉得不行。。。。。</p>
</blockquote>
<h3 id="宋祖德从宋朝起祖祖辈辈都缺德">宋祖德=从宋朝起祖祖辈辈都缺德</h3>
<p><em>发表于 2006 年 08 月 24 日</em></p>
<p>在百度看到的，真TM绝了，喜欢。</p>
<h3 id="200倍慢速播放美丽瞬间">200倍慢速播放美丽瞬间</h3>
<p><em>发表于 2006 年 08 月 31 日</em></p>
<p><a href="http://www.tudou.com/programs/view/pUKZkaw8RDU"
   rel="noopener noreferrer" target="_blank" class="external">http://www.tudou.com/programs/view/pUKZkaw8RDU</a>
</p>
<p>也许生活也是如此，慢下来体会，会有被忽视的美好。</p>
<h3 id="河南的医生可以牛叉了">河南的医生可以牛叉了</h3>
<p><em>发表于2006年09月08日</em></p>
<p><a href="http://news.sina.com.cn/c/2006-09-08/072210953651.shtml"
   rel="noopener noreferrer" target="_blank" class="external">河南发文治理医闹：停尸要挟医院可追究刑责</a>
</p>
<p>公安厅特别发文，可见停尸族的猖獗，只是看了未免让人心寒，中国人向来信奉入土为安，如此用死人要挟，要么是财迷心窍，要不是万不得已。</p>
<p>所谓“医闹”，据说是专门敲诈医院的，但同时也看出了医疗机构和老百姓的背离，说起医院没有几个人不抱怨的。河南人就是牛啊，倒先不准别人停尸闹事了，河南的患者自求多福吧。</p>
<h3 id="9-18散记">9-18散记</h3>
<p><em>发表于 2006 年 09 月 18 日</em></p>
<p>好几天没写了，因为一些事和人而烦心的缘故</p>
<p>今天是国耻日，不知道有多少人知道，或许国耻日太多。 是否，我们要背负耻辱前进？或许我们可以不用去在意，但耻辱还在我们的血液中</p>
<p>曾祖母过世几年了，过去听她讲日本鬼子，在她眼前枪杀所有躲在防空洞中的无辜村民，而她被当作杀人搁枪的支架幸免于难，这一切我们已经无法想象</p>
<p>有些伤痛不是时间就可以消解的。 还是少说一点，向来缺乏的不是廉价的口水爱国。</p>
<h3 id="wspa来了个漂亮老师">WSPA来了个漂亮老师</h3>
<p><em>发表于 2006 年 09 月 24 日</em></p>
<p>如果是没人要的小孩，那就自己爱自己吧！让人遗憾与无奈。以上为发泄</p>
<p>今天终于上了第一次动物保护的讨论课，再不去怕就混不到学分了，前2次因为某人的失误和其他人的不热心竟然搞错了时间。今天讲课的是一个英国mm，WSPA来的，不解释（现在流行）。虽然偶不小心过了6级，可是见了英国人就傻了，不过我还是听懂了一些的。^_^</p>
<p>Amy女士还是很漂亮的，感叹外国人对动物的热心，中国人人都还来不及管呢。确实，中国在崛起，可是如果不再犯欧美的同样的错误还是很不错的。那种工业化的养殖真的够恶心的。原来我家喂的鸡和猪是很幸福的，味道也不错嘛。good foranimals,good for human.对爱吃猪肉的我们也是有道理的</p>
<blockquote>
<p>评论
漂
2006 年 09 月 27
楼主的文章很有个</p>
</blockquote>
<h3 id="今天心情不错顺便感叹世态炎凉">今天心情不错，顺便感叹世态炎凉</h3>
<p><em>发表于 2006 年 09 月 29 日</em></p>
<p>没人要的小孩突然有人要了，神经了一个月，今天半天时间搞定了。这奇怪的世界</p>
<p>莫非10.1要过猪一样的生活，还是学点东西的好，免得后悔</p>
<p>对《天堂来的孩子》很无语，百度贴吧一片骂声了，为了Tammy的形象起见放弃之。决定看美剧了，《越狱》太火了，我也想看看，顺便学学E文？（BS自己</p>
<p>作为燕姿的歌迷还是很心安理得的下载了《My story，YourSong》，唱片公司A钱的行为我才不跟进，希望换了公司后有惊喜出现</p>
<p>看到新闻说海蝶有意思要签胡灵，希望有下文吧，天娱一堆艺员实在前途渺茫。 是金子总会发光，有时候我又会怀疑这一点，但怀疑没有任何意义</p>
<h3 id="喜欢上白开水一样的音乐">喜欢上白开水一样的音乐?</h3>
<p><em>发表于 2006 年 10 月 10 日</em></p>
<p>最近发片的歌手真的好多 也凑热闹听了不少 却发现自己喜欢上了梁静茹淡淡的坚定 饮料喝多了，回归白开水也不错 再次BS自己BT了MP3 有机会我会去买碟吧 可惜现在都没CD机啊</p>
<h3 id="下载软件时你会看到的三种评论">下载软件时你会看到的三种评论</h3>
<p><em>发表于 2006 年 10 月 15 日</em></p>
<p>在各个软件下载站，一般都会在在介绍页下提供评论功能，于是可以发现如下类似三种评论</p>
<p>一，再来支持一下XX啦，这么些日子一直用他，价值不错还实惠。——其实是免费软件</p>
<p>二，有毒啊！我重装N次了还不行！——这病毒也够强啊</p>
<p>三，您想网赚吗&hellip;&hellip;——以下省略一堆诱惑词汇</p>
<p>最后来了个真正的菜鸟： 我!!不知道能信谁了??????太多了!!!!!!!!!!!!!!!!!哎&hellip;..</p>
<p>以上评论均来自Pconline，更多爆笑请多下软件，多看评论，你会发现这个世界充满了无聊的人和小白</p>
<blockquote>
<p>评论
varche
2006 年 10 月 15
强贴要</p>
</blockquote>
<h3 id="愤怒了">愤怒了</h3>
<p><em>发表于 2006 年 10 月 18 日</em></p>
<p>愤怒了，世界上竟然有只在9-22点开放的网站，垃圾啊垃圾！思量着最近没什么有趣的事，然后发现WCG开赛了，看SKY同学出发前的Blog真是负担满满啊，不知道这样他还能发挥多大的能量，期待一下了。明天9点，守着某个垃圾网站开门，faint</p>
<blockquote>
<p>评论
varche
2006 年 10 月 20
哈哈哈，彼此彼此。。</p>
</blockquote>
<h3 id="gogosky">Go!Go!Sky!</h3>
<p><em>发表于 2006 年 10 月 22 日</em></p>
<p>About WC</p>
<p>昨天的Gostop骂人事件让RN的爱国热情高涨，对此不多做评论，不过对RN水友的骂功实在是佩服，可是还是有找抽的人，也佩服一下</p>
<p>不得不说，发怒是要有实力的，如果被骂了，又输了比赛那还真是不爽。SKY同学在被骂了之后，还能翻grubby的盘，赞一个啊</p>
<p>Go！Go！Sky！卫冕吧</p>
<blockquote>
<p>评论
varche
2006 年 10 月 24
Done</p>
</blockquote>
<h3 id="死了都要爱">死了都要爱</h3>
<p><em>发表于 2006 年 11 月 13 日</em></p>
<p>上传《死了都要爱》现场版到优酷，没想到鬼使神差赶上光棍节被推荐上主页，编辑的理由是让光棍感受一下死了都要爱的感觉，于是浏览量达到了2万，吓人哦，以前我传的达到1千就很高了，可怜的光棍，可怜的我。</p>
<h3 id="无敌的时间">无敌的时间</h3>
<p><em>发表于 2006 年 11 月 18 日</em></p>
<p>故事中时间可以倒转，可是现实却不可能，所以一切才体现了后悔的伤痛与无奈。时间真的无敌，磨蚀了爱恨，湮没了热情，留下让你欲罢不能的悔痛。一周又过去了，无敌了</p>
<blockquote>
<p>评论
ada
2006 年 11 月 19
管你同意不同意,和你做了个连接.我喜欢这里幽静的感觉
我那随时等着你的光临,茶候着呢</p>
</blockquote>
<h3 id="听是谁在唱歌">听！是谁在唱歌?</h3>
<p><em>发表于 2006 年 11 月 20 日</em></p>
<p>听！是谁在唱歌？其实除了刘若英，还有制作人黄韵玲，真是美妙的和声。为什么我最近才发现呢？很早就把这张专辑收在硬盘中，竟然一直没听</p>
<p>有些东西竟然就这样被遗忘了，虽然它是美好的。美好的东西还是被发现了，庆幸一下吧。</p>
<h3 id="我太懒了哈哈">我太懒了，哈哈</h3>
<p><em>发表于 2006 年 11 月 24 日</em></p>
<p>被人误会为太忙，罪过罪过。还是写点东西</p>
<blockquote>
<p>评论
漂
2006 年 11 月 24
忙歪的</p>
</blockquote>
<h3 id="人就是贱">人就是贱</h3>
<p><em>发表于 2006 年 11 月 27 日</em></p>
<p>某次在吃饭时，中央六套在放所谓的大片《英雄》，不小心听到一句台词：人就是剑，剑就是人</p>
<p>我很自然的将它听错了，于是很轻易的理解了观众为何不买张艺谋的帐，至于后来人们看了“馒头”感受到张的伟大又是后话了</p>
<p>可是这确实是伟大的人生哲理，人就是贱。例子有很多的：比如没读书时极度厌恶出了学校感念老师的好的，没钱时想发财发财了想空闲的</p>
<p>大概欲望是原动力也是原罪吧，这山望见那山高，到了那山喊苦恼</p>
<p>想要超脱？那么恭喜你看破红尘可以出家了</p>
<blockquote>
<p>评论
ada
2006 年 11 月 29
想要超脱？那么恭喜你看破红尘可以出家了
真的??????
漂
2006 年 12 月 01
嗯。
varche
2006 年 12 月 02
人就是jia</p>
</blockquote>
<h3 id="无题">无题</h3>
<p><em>发表于 2006 年 12 月 07 日</em></p>
<p>当懒惰浸入骨髓，割伤皮肉似乎也不可救赎 沉默的大多数让这个世界还有希望 黑的银幕下，没有表演或者只是看不见。</p>
<h3 id="写点什么好">写点什么好？</h3>
<p><em>发表于 2006 年 12 月 18 日</em></p>
<p>写点什么好呢？最近因为某篇论文“理屈词穷”了，只能怪自己选课时贪图便宜啊</p>
<p>世上的乐趣很多，层次不同，有苦尽而来的，更有速食的。但愿我们的生活不是为追求甜味而稀释的糖水</p>
<blockquote>
<p>评论
ada
2006 年 12 月 19
论文是件头痛的事情&hellip;&hellip;&hellip;&hellip;&hellip;.</p>
</blockquote>
<h3 id="又是一年">又是一年</h3>
<p><em>发表于 2006 年 12 月 31 日</em></p>
<p>还有半个约小时就是2007年了 为什么我要说又呢 也许潜意识里对着一年不太满意吧 有些令人抓狂的东西 祝愿它们在新年里死去</p>
]]></content:encoded><category>life</category><category domain="tags">年度总结</category><category domain="tags">生活</category></item><item><title>月有几轮</title><link>https://yifeitao.com/mid-autumn-day/</link><pubDate>Fri, 06 Oct 2006 00:00:00 +0000</pubDate><guid>https://yifeitao.com/mid-autumn-day/</guid><description>&lt;p&gt;月有几轮？&lt;/p&gt;
&lt;p&gt;月有千轮：千江有水千江月，万里无云万里天。&lt;/p&gt;
&lt;p&gt;月有几轮？&lt;/p&gt;
&lt;p&gt;月有三轮：天一轮，水一轮，心一轮。&lt;/p&gt;
&lt;p&gt;天一轮，辉洒千年；&lt;/p&gt;
&lt;p&gt;水一轮，映照千年；&lt;/p&gt;
&lt;p&gt;心一轮，相思千年。&lt;/p&gt;
&lt;p&gt;月有几轮？&lt;/p&gt;
&lt;p&gt;月有两轮：你一轮，我一轮。&lt;/p&gt;
&lt;p&gt;月有几轮？&lt;/p&gt;
&lt;p&gt;共此一轮。&lt;/p&gt;</description><content:encoded><![CDATA[<p>月有几轮？</p>
<p>月有千轮：千江有水千江月，万里无云万里天。</p>
<p>月有几轮？</p>
<p>月有三轮：天一轮，水一轮，心一轮。</p>
<p>天一轮，辉洒千年；</p>
<p>水一轮，映照千年；</p>
<p>心一轮，相思千年。</p>
<p>月有几轮？</p>
<p>月有两轮：你一轮，我一轮。</p>
<p>月有几轮？</p>
<p>共此一轮。</p>
]]></content:encoded><category>life</category><category domain="tags">诗歌</category><category domain="tags">传统文化</category></item><item><title>愿望</title><link>https://yifeitao.com/wishes/</link><pubDate>Thu, 07 Sep 2006 00:00:00 +0000</pubDate><guid>https://yifeitao.com/wishes/</guid><description>&lt;p&gt;小时候，听过很多类似的故事：仙女姐姐，或者白胡子神仙突然出现，满足你三个愿望（为什么总是三个呢？）于是很鄙视故事中主人公的智商，如果换作我，就要一个心想事成的能力或者和神仙一样的能力，一个愿望足矣。那时候还自鸣得意，现在看来这种想法是在是太贪了，属于毫无智慧的小聪明。&lt;/p&gt;
&lt;p&gt;早上听到电台在送祝福，看来很多人都和我小时候一样贪心：祝身边每一个人每一天都快乐。现实是残酷无情的，但至少可以给我们愿望的空想，或许童话的功效在于此。我们长大了，可对那些故事仍然感到温馨。&lt;/p&gt;
&lt;p&gt;仍然希望生命中出现神仙姐姐，尽管我的愿望还没准备好。&lt;/p&gt;</description><content:encoded><![CDATA[<p>小时候，听过很多类似的故事：仙女姐姐，或者白胡子神仙突然出现，满足你三个愿望（为什么总是三个呢？）于是很鄙视故事中主人公的智商，如果换作我，就要一个心想事成的能力或者和神仙一样的能力，一个愿望足矣。那时候还自鸣得意，现在看来这种想法是在是太贪了，属于毫无智慧的小聪明。</p>
<p>早上听到电台在送祝福，看来很多人都和我小时候一样贪心：祝身边每一个人每一天都快乐。现实是残酷无情的，但至少可以给我们愿望的空想，或许童话的功效在于此。我们长大了，可对那些故事仍然感到温馨。</p>
<p>仍然希望生命中出现神仙姐姐，尽管我的愿望还没准备好。</p>
]]></content:encoded><category>life</category><category domain="tags">人生感悟</category><category domain="tags">思考</category></item><item><title>北京之行总结</title><link>https://yifeitao.com/summary-of-beijing-trip/</link><pubDate>Fri, 01 Sep 2006 00:00:00 +0000</pubDate><guid>https://yifeitao.com/summary-of-beijing-trip/</guid><description>&lt;p&gt;北京暑期参观实习已经过去将近半个月了，借着写总结的机会慢慢回想心中依然感触良多。&lt;/p&gt;
&lt;p&gt;8 月9号从合肥出发，第一次去往北方的大地，夏季的北京和合肥一样炎热。虽然旅途劳顿可是心中依然有些激动。北京给人的第一感觉就是大，路程都以小时计。到达中科院研究生院的青年公寓时，我们很快就被安排好了食宿，在此对他们的工作表示感谢。 走在青年公寓，我们开玩笑说，随便扔个石头都能砸到博士，到处是行色匆匆戴着眼镜的年轻人，一种做学问的气氛让人感受到了。将近一个星期的时间，参观了不少地方，虽然没有实际去参与，但通过介绍和亲身感受还是获益匪浅，很多地方留下了深刻的印象也引法了我不少思考。&lt;/p&gt;
&lt;p&gt;参观了中科院的网络中心，在这里我们了解到网络在中国从无到有，从小到大的一个过程，虽然以前也有所了解，可是真正到了这里还是有一种震撼的感觉，我们平时享受的网络是多少人智慧和汗水的成果啊，在各种服务越来越傻瓜化的今天正是需要我们计算机专业的人做更多更好的工作。 他们的各个研究室也都分别介绍了自己的情况，老实说，听到一堆专业术语感觉有些遥远，有些自卑感，好在后来做总结发言的老教授一开口就从我们本科生学的网络知识讲开，讲到现在网络还不完善的地方，讲到将来这些研究还需要更多的人参与，终于觉得这几年没白学。 后来参观了机房，看到一排排整齐的机器，有种买渺小的感觉，自己学的不过冰山一角，这些大型机是多么复杂的构成，集体的智慧才可能有这种复杂的工程。&lt;/p&gt;
&lt;p&gt;参观中科院软件所给人印象最深的就是他们的热情，每个研究室都认真的介绍自己还给我们发了各种资料，然后还请我们吃晚饭，在此对他们的热情表示感谢，虽然可能没有机会去软件所，可他们的态度实在让人印象深刻。&lt;/p&gt;
&lt;p&gt;在软件所参观图形学实验室时，介绍的老师有事讲完就走了，然后将我们交给了在场的几位研究生，这些师兄热情的用自己的切身体会跟我们交流，开始大家还因为时间太晚不太热心，可他们的态度确实感染了我们。我切实的感到了他们对于研究的热情和兴趣，我想在这方面我还很欠缺，虽然学习中规中据，但作为一个大学生还远远不够。&lt;/p&gt;
&lt;p&gt;作为一个国防生，因为师兄的介绍还有幸参观了北京航天所，地方有些偏僻，但建设得非常美。虽然不能具体的去参观，但通过介绍还是对军队研究单位有了更直接的了解，为国家做出贡献的必定不会被亏待，感觉他们的条件还是不错的，当然还是要甘于寂寞有奉献精神，我想我的选择没有错，部队是个需要真正人才的地方，我还应该更加努力。&lt;/p&gt;
&lt;p&gt;总的来说，这次实习参观了很多，直接感受到了真正做研究的人和地方，感受到了自己几年来学习了不少有用的知识，但更感受到自己的不足与无知，有很多时间都懒散的过去了，从现在开始，还要更努力的生活。最后说一点题外话，借实习机会也参观了一些景点，可是印象最深的竟然是在一片废墟的圆明园，在这片废墟上的纪念馆中再次读到雨果的那封著名的信，突然眼眶湿润，几乎要哭出来，可是眼泪不是我们需要的，让我感觉到的还有肩上的责任。&lt;/p&gt;</description><content:encoded><![CDATA[<p>北京暑期参观实习已经过去将近半个月了，借着写总结的机会慢慢回想心中依然感触良多。</p>
<p>8 月9号从合肥出发，第一次去往北方的大地，夏季的北京和合肥一样炎热。虽然旅途劳顿可是心中依然有些激动。北京给人的第一感觉就是大，路程都以小时计。到达中科院研究生院的青年公寓时，我们很快就被安排好了食宿，在此对他们的工作表示感谢。    走在青年公寓，我们开玩笑说，随便扔个石头都能砸到博士，到处是行色匆匆戴着眼镜的年轻人，一种做学问的气氛让人感受到了。将近一个星期的时间，参观了不少地方，虽然没有实际去参与，但通过介绍和亲身感受还是获益匪浅，很多地方留下了深刻的印象也引法了我不少思考。</p>
<p>参观了中科院的网络中心，在这里我们了解到网络在中国从无到有，从小到大的一个过程，虽然以前也有所了解，可是真正到了这里还是有一种震撼的感觉，我们平时享受的网络是多少人智慧和汗水的成果啊，在各种服务越来越傻瓜化的今天正是需要我们计算机专业的人做更多更好的工作。    他们的各个研究室也都分别介绍了自己的情况，老实说，听到一堆专业术语感觉有些遥远，有些自卑感，好在后来做总结发言的老教授一开口就从我们本科生学的网络知识讲开，讲到现在网络还不完善的地方，讲到将来这些研究还需要更多的人参与，终于觉得这几年没白学。    后来参观了机房，看到一排排整齐的机器，有种买渺小的感觉，自己学的不过冰山一角，这些大型机是多么复杂的构成，集体的智慧才可能有这种复杂的工程。</p>
<p>参观中科院软件所给人印象最深的就是他们的热情，每个研究室都认真的介绍自己还给我们发了各种资料，然后还请我们吃晚饭，在此对他们的热情表示感谢，虽然可能没有机会去软件所，可他们的态度实在让人印象深刻。</p>
<p>在软件所参观图形学实验室时，介绍的老师有事讲完就走了，然后将我们交给了在场的几位研究生，这些师兄热情的用自己的切身体会跟我们交流，开始大家还因为时间太晚不太热心，可他们的态度确实感染了我们。我切实的感到了他们对于研究的热情和兴趣，我想在这方面我还很欠缺，虽然学习中规中据，但作为一个大学生还远远不够。</p>
<p>作为一个国防生，因为师兄的介绍还有幸参观了北京航天所，地方有些偏僻，但建设得非常美。虽然不能具体的去参观，但通过介绍还是对军队研究单位有了更直接的了解，为国家做出贡献的必定不会被亏待，感觉他们的条件还是不错的，当然还是要甘于寂寞有奉献精神，我想我的选择没有错，部队是个需要真正人才的地方，我还应该更加努力。</p>
<p>总的来说，这次实习参观了很多，直接感受到了真正做研究的人和地方，感受到了自己几年来学习了不少有用的知识，但更感受到自己的不足与无知，有很多时间都懒散的过去了，从现在开始，还要更努力的生活。最后说一点题外话，借实习机会也参观了一些景点，可是印象最深的竟然是在一片废墟的圆明园，在这片废墟上的纪念馆中再次读到雨果的那封著名的信，突然眼眶湿润，几乎要哭出来，可是眼泪不是我们需要的，让我感觉到的还有肩上的责任。</p>
]]></content:encoded><category>life</category><category domain="tags">旅行</category><category domain="tags">学习</category><category domain="tags">反思</category></item><item><title>鬼故事</title><link>https://yifeitao.com/ghost-story/</link><pubDate>Sun, 27 Aug 2006 00:00:00 +0000</pubDate><guid>https://yifeitao.com/ghost-story/</guid><description>&lt;p&gt;说到鬼，想起小时候看鬼片的事，有一次看了之后一个人在家，做了一晚的噩梦，还差点还一场病，然后我留下了心理阴影再也不爱看鬼片了，现在想起来那个鬼片其实属于还蛮搞笑的。&lt;/p&gt;
&lt;p&gt;小时候有一次感冒一个人在家，然后不知道被什么奇怪的东西吓得跪在地上了，如果迷信的人又要叫是撞邪了，只是一针打下去，什么都好了，鬼见药也怕啊。不过我算是理解了那些说撞鬼的人，人的潜意识的东西其实是很复杂的。&lt;/p&gt;
&lt;p&gt;高中的时候，坐在我前排的女生最大的爱好就是鬼片，恐怖故事，可是人确是极其娇小可爱的那种，我知道她的爱好时真是吓了一跳，然后就想，如果有个像她一样的女朋友我岂不是要倒霉了。不知道她现在怎么样了，希望她还是少看一些吧。&lt;/p&gt;</description><content:encoded><![CDATA[<p>说到鬼，想起小时候看鬼片的事，有一次看了之后一个人在家，做了一晚的噩梦，还差点还一场病，然后我留下了心理阴影再也不爱看鬼片了，现在想起来那个鬼片其实属于还蛮搞笑的。</p>
<p>小时候有一次感冒一个人在家，然后不知道被什么奇怪的东西吓得跪在地上了，如果迷信的人又要叫是撞邪了，只是一针打下去，什么都好了，鬼见药也怕啊。不过我算是理解了那些说撞鬼的人，人的潜意识的东西其实是很复杂的。</p>
<p>高中的时候，坐在我前排的女生最大的爱好就是鬼片，恐怖故事，可是人确是极其娇小可爱的那种，我知道她的爱好时真是吓了一跳，然后就想，如果有个像她一样的女朋友我岂不是要倒霉了。不知道她现在怎么样了，希望她还是少看一些吧。</p>
]]></content:encoded><category>life</category><category domain="tags">生活</category><category domain="tags">童年回忆</category></item><item><title>自尊心也许是毒药</title><link>https://yifeitao.com/pride-is-poison/</link><pubDate>Mon, 21 Aug 2006 00:00:00 +0000</pubDate><guid>https://yifeitao.com/pride-is-poison/</guid><description>&lt;p&gt;陈怡蓉姐姐说小孩自尊心太强烈似乎不太好，对此深有同感。一个自尊心太强的小孩会受到很多的伤害才会长大。&lt;/p&gt;
&lt;p&gt;我们这一代人很多都是独身子女，所谓唯我独尊是也，或许每个幸福的孩子都曾经有过以为自己是最特别的，最受老天眷顾的经验吧，可是芸芸众生，最后也许会发现自己很是一般。&lt;/p&gt;
&lt;p&gt;太把自己当回事儿是自尊心强烈的人爱犯的错误，其实大家都过自己的生活，没有谁会特别关注谁，就像写博客大多数人不也就是给自己看而已。&lt;/p&gt;</description><content:encoded><![CDATA[<p>陈怡蓉姐姐说小孩自尊心太强烈似乎不太好，对此深有同感。一个自尊心太强的小孩会受到很多的伤害才会长大。</p>
<p>我们这一代人很多都是独身子女，所谓唯我独尊是也，或许每个幸福的孩子都曾经有过以为自己是最特别的，最受老天眷顾的经验吧，可是芸芸众生，最后也许会发现自己很是一般。</p>
<p>太把自己当回事儿是自尊心强烈的人爱犯的错误，其实大家都过自己的生活，没有谁会特别关注谁，就像写博客大多数人不也就是给自己看而已。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">人生感悟</category><category domain="tags">自我认知</category></item><item><title>娱乐无极限</title><link>https://yifeitao.com/entertainment-unlimited/</link><pubDate>Fri, 07 Apr 2006 00:00:00 +0000</pubDate><guid>https://yifeitao.com/entertainment-unlimited/</guid><description>&lt;p&gt;湖南卫视有个节目叫《娱乐无极限》，名字起得很大，其实只是个娱乐新闻节目，很久不看电视，也不知道还有没有在播，可不得不说“娱乐无极限”恰好反映了时代特征。&lt;/p&gt;
&lt;p&gt;据说以前没有网络，更没有电视，于是我有个不成熟的结论，过去的人都是无聊而闲死的。现代人据说很忙，即使是瞎忙但也是很忙的。如果还有人觉得自己很闲，不要担心重蹈古人覆辙——因为赶上了好时代。&lt;/p&gt;
&lt;p&gt;小时候知道歌手唱歌，演员演戏，而多栖明星大概只有所谓天王级的，后来似乎就全乱了套，什么演而优则唱，A而优则B，现在更恐怖，写文章的出写真，坐台的谈人生，A而优则B的公式也不够用了，反正什么火玩什么。明星全面开花，可爱而可怜的追星族于是有了全面追击的机会，买CD，看电视，买书，可能还要去追到演唱会，发布会，乃至赛车场。最近还有一项很火的，到明星的Blog坐沙发，好忙啊。&lt;/p&gt;
&lt;p&gt;以前的娱乐新闻最多说A男和B女好像有关系，现在可以直接说A和B有一腿，然后是B炮轰C，C PK D，对了，最近还流行D抄袭E，D说人红是非多，或者D说只是很欣赏E的文章风格。把D和E的作品贴出来对比一看，才发现一直被骗，谁叫你追星的，活该！&lt;/p&gt;
&lt;p&gt;据说人的名声需要一生来建立，而可以毁于一旦，但我们对娱乐界还是极为宽大的，抄袭了，偷税了，坐牢了，打人了，耍大牌了，撞到人了，被包养了，丢国家脸了，过了十八天又是一条好汉/好女。没办法，谁知道是不是真的，我们相信人是善良的，相信自己不是被骗的傻子，原谅吧!&lt;/p&gt;
&lt;p&gt;当你守着两三个电视台时，你觉得无聊，但当你在几十个电视台间晃悠时，一半在放广告，一半的一半在放烂掉渣的拳头加枕头剧，一半的一半的一半在放几个自封的明星的自娱自乐。最后，极限出现了，一个暂时在你眼中完美的节目，可惜已经放结束曲了.但是时间不是混完了吗？&lt;/p&gt;
&lt;p&gt;你不看了，改上网，于是在各种奇怪的标题间游走，不断的上当，学会了如何夸大其辞，语不惊人死不休，如何防止流氓网站，流氓软件，重装系统，和不认识的人争吵无聊的话题，即使别人发过言再也不回来，然后又学会了写网络日志，希望被别人看到来顶一贴。&lt;/p&gt;
&lt;p&gt;为什么千方百计让你开心，你就是笑不出来呢，为什么千方百计让你感动，你就是哭不出来呢？娱乐无极限，和快乐无关。&lt;/p&gt;
&lt;p&gt;生命是寂寞的，娱乐是必须的，据说八卦还是星际旅行的必备文化食品，只是希望我们的娱乐更多一点真话，多一点真诚，多一点真心。&lt;/p&gt;</description><content:encoded><![CDATA[<p>湖南卫视有个节目叫《娱乐无极限》，名字起得很大，其实只是个娱乐新闻节目，很久不看电视，也不知道还有没有在播，可不得不说“娱乐无极限”恰好反映了时代特征。</p>
<p>据说以前没有网络，更没有电视，于是我有个不成熟的结论，过去的人都是无聊而闲死的。现代人据说很忙，即使是瞎忙但也是很忙的。如果还有人觉得自己很闲，不要担心重蹈古人覆辙——因为赶上了好时代。</p>
<p>小时候知道歌手唱歌，演员演戏，而多栖明星大概只有所谓天王级的，后来似乎就全乱了套，什么演而优则唱，A而优则B，现在更恐怖，写文章的出写真，坐台的谈人生，A而优则B的公式也不够用了，反正什么火玩什么。明星全面开花，可爱而可怜的追星族于是有了全面追击的机会，买CD，看电视，买书，可能还要去追到演唱会，发布会，乃至赛车场。最近还有一项很火的，到明星的Blog坐沙发，好忙啊。</p>
<p>以前的娱乐新闻最多说A男和B女好像有关系，现在可以直接说A和B有一腿，然后是B炮轰C，C PK D，对了，最近还流行D抄袭E，D说人红是非多，或者D说只是很欣赏E的文章风格。把D和E的作品贴出来对比一看，才发现一直被骗，谁叫你追星的，活该！</p>
<p>据说人的名声需要一生来建立，而可以毁于一旦，但我们对娱乐界还是极为宽大的，抄袭了，偷税了，坐牢了，打人了，耍大牌了，撞到人了，被包养了，丢国家脸了，过了十八天又是一条好汉/好女。没办法，谁知道是不是真的，我们相信人是善良的，相信自己不是被骗的傻子，原谅吧!</p>
<p>当你守着两三个电视台时，你觉得无聊，但当你在几十个电视台间晃悠时，一半在放广告，一半的一半在放烂掉渣的拳头加枕头剧，一半的一半的一半在放几个自封的明星的自娱自乐。最后，极限出现了，一个暂时在你眼中完美的节目，可惜已经放结束曲了.但是时间不是混完了吗？</p>
<p>你不看了，改上网，于是在各种奇怪的标题间游走，不断的上当，学会了如何夸大其辞，语不惊人死不休，如何防止流氓网站，流氓软件，重装系统，和不认识的人争吵无聊的话题，即使别人发过言再也不回来，然后又学会了写网络日志，希望被别人看到来顶一贴。</p>
<p>为什么千方百计让你开心，你就是笑不出来呢，为什么千方百计让你感动，你就是哭不出来呢？娱乐无极限，和快乐无关。</p>
<p>生命是寂寞的，娱乐是必须的，据说八卦还是星际旅行的必备文化食品，只是希望我们的娱乐更多一点真话，多一点真诚，多一点真心。</p>
]]></content:encoded><category>viewpoint</category><category domain="tags">娱乐</category><category domain="tags">社会观察</category><category domain="tags">媒体</category></item></channel></rss>