<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Blog of Wenli Zhang</title>
        <description>Web Front-End Blog by Wenli Zhang</description>
        <link>http://zhangwenli.com/blog</link>
        <atom:link href="http://zhangwenli.com/blog/feed.xml" rel="self" type="application/rss+xml" />
        
            <item>
                <title>2020 年度小结暨羡辙的 30 年小结</title>
                <description>&lt;p&gt;这篇文章共 9466 个字，因为它总结了我的三十年。&lt;/p&gt;

&lt;p&gt;如果要用一句话概括这三十年我之所以成为了现在的我，那会正如我会在这个时间点发这篇文章一样，&lt;strong&gt;我是一个想到什么就一定要付诸行动的人&lt;/strong&gt;——不写就失眠，一写就是四个小时。&lt;/p&gt;

&lt;h1 id=&quot;学龄前&quot;&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=&quot;小学&quot;&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;blockquote&gt;
  &lt;p&gt;如果已经成年的你没法理解这种心理，请按换工作工资突然被打六折理解。&lt;/p&gt;
&lt;/blockquote&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;/p&gt;

&lt;p&gt;这个老师特别喜欢我，可能因为我小时候很乖巧，而且也是她的课代表。她非常耐心地指点我朗诵的能力，也让我慢慢能够控制自己的语气音调。这虽然好像是一个非常微不足道的技能，但是在后来与人沟通交流的时候，其实很能增加自己的表达感染力。&lt;/p&gt;

&lt;p&gt;好在这三年也算平静地度过了，虽然最终我也没做上大队长，成绩也差不多还是原来的排名。&lt;/p&gt;

&lt;h1 id=&quot;初中&quot;&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;p&gt;但是神奇的是，我讲完以后没人再愿意上去讲了。我不知道为什么，难道因为我讲得太好了？不会吧？我也不知道为什么其他同学没有提前准备自我介绍，开学第一天不是肯定会介绍的吗？&lt;/p&gt;

&lt;p&gt;还是没人举手。&lt;/p&gt;

&lt;p&gt;于是，班主任只能点名让其他同学上台自我介绍。这件事就这样过去了。&lt;/p&gt;

&lt;p&gt;然后，班主任把我叫到办公室，说每个班要派一个同学去领书还是做什么的，反正就是以后的班长了。我说啊，我不行吧？班主任说，你行的，你都敢上台自我介绍了，有什么不敢的呢？&lt;/p&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;p&gt;总之，在后来的我看来，那个报到第一天决定上台自我介绍的一瞬间，可能是改变后面我整个人生轨迹的重要决定。&lt;/p&gt;

&lt;p&gt;不过有意思的是，当我把上述观点和朋友说起的时候，听到了另一种有趣的观点：虽然我的这个决定可能是偶然的，但是我之所以做了这样的决定（包括之前还提前准备了自我介绍）也是我的性格或者说做事的方式决定的，甚至即使没有这件事，我可能也会因为之后的别的事件走上一条相似的道路。&lt;/p&gt;

&lt;p&gt;初中阶段另一位对我影响比较大的老师是我的物理老师——一个剪着短发的酷酷的女老师。印象最深的一件事是，她把我的一本非常厚的习题册带到别的班级去表扬我，因为老师规定做 A B 部分比较简单的题，C D 难的可以选做，而我把这本厚厚的习题册都做了，而且还贴了纸特别认真。老师表扬倒不是第一次，但是被拿到别的班去表扬还是很得意的呀！于是我对物理产生了更大的兴趣~&lt;/p&gt;

&lt;h1 id=&quot;高中&quot;&gt;高中&lt;/h1&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;/p&gt;

&lt;p&gt;在这里，我是能感到和初中相比一定的心理落差的。初中可以说在学生干部方面我已经混得风生水起了，但是在高中这里优秀的人很多，我真心觉得智商情商在我之上的人也很多——但我现在看来对我的确是一种非常好的锻炼，因为遇到比你更优秀的人一定是你的福气，无论这个人是你的竞争对手还是你的盟友，而尽早地锻炼好自己在面对比自己更优秀的人的时候的心态，则是一种非常重要的学习。&lt;/p&gt;

&lt;p&gt;总之就是觉得周围人太优秀了，自己还是不太行啊，怎么办啊！亚历山大！压力大到什么程度呢？高中时候我每天上学前都会肚子疼，周末不疼，放假不疼，就是上学会疼。到了大学就不疼了，后来我知道这叫“肠易激惹综合症”，主要是由于精神上过度的紧张引起的。所以，可能高中阶段是我对自己最严格要求的阶段，因为那时候有非常明确的目的，而且投入产出是非常成正比的，尤其是学业方面。&lt;/p&gt;

&lt;p&gt;如果说初中阶段，我做学生工作锻炼了我做事情的能力，那么高中阶段则锻炼了我的做人的能力。因为周围情商高的人实在太多，想学什么，俯仰皆是。&lt;/p&gt;

&lt;p&gt;但是，也是有比较不好的影响的。就是在这样的竞争环境下，比较容易沾染勾心斗角的风气。虽说作为学生也谈不上使多少坏吧，但是当时的心态是比较功利性的。那时的我迷信社会达尔文主义，我相信更优秀更厉害的人就应该得到更好的回报，这样社会才能向着更有效率的方向前进。但是，这也意味着，另一方面，那些不够聪明、不够优秀的人，当时的我完全没有同理心去体谅他们，觉得他们就是不够努力或者太笨。那时候我不明白为什么追求效率的同时还要兼顾公平，难道不是效率本身才是对更多付出的人更公平的方案吗？&lt;/p&gt;

&lt;p&gt;我也是在大学后期才改变了这种想法，才明白我之前之所以会这么想，能这么想，只是因为我比别人的运气稍微好了一点点而已。如果我的基因使我不那么聪明，甚至有智力缺陷；如果我的家庭条件不足以让我完成基本的教育，甚至需要为下一顿是否有足够的食物担心，我还能否说这是因为我不够努力而不是不公平？这种转变发生地可能比较慢，但是我明显地感受到区别，这些年我变得更能体谅别人，更关心别人，而不是像学生时代那样对跟自己不直接相关的人很冷漠，而这点在高中时候极端理性的我特别不在意的。&lt;/p&gt;

&lt;p&gt;出来压力大之外，高中生活总体还是丰富而多彩的。这里的学生活动让我提前体验到了大学生活的感觉，比如担任学生电视台社团的社长，从那个时候起就自己写稿子、出镜、剪辑等等，而我最近做 ECharts 发布会筹备工作还是这些事，有种爷青回的感觉。更神奇的是，在竞选学生会主席的时候，那些原本大家看好的特别强的同学居然都没参选（这么说是不是有点对不起竞争对手啊），于是误打误撞地做了副主席。其中还挺多好玩的故事的（虽然当时可能不觉得这是“好玩”哈哈），现在想起来真是幸运能有这样有趣的经历，没有成为大城做题家呀！&lt;/p&gt;

&lt;p&gt;在高考预录取阶段，拿到了交大预录取的权利，就是只要考上一本线就能上交大了，分数高的话选择专业的权利更大一些。但是我当时不知道为啥想去复旦微电子（后来还好没去，因为硬件课搞得我想哭啊），一度想要放弃预录取，裸考复旦。但是在家人和老师的强烈劝阻下，我还是接受了交大的预录取（这么勉强？好凡啊！）。可能我本来也没多想去复旦，只是想借机表达下我对自己还是很有追求的，既然家长老师给台阶下了，我就顺顺当当地去交大吧。&lt;/p&gt;

&lt;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=&quot;大学&quot;&gt;大学&lt;/h1&gt;

&lt;p&gt;上面的故事感觉怎么看都不像属于一个计算机大神的（所以我的确不是大神呀！），转变主要来自于大学挂了一门课（万恶的线性代数）于是没有竞选成功学生会主席。难过一阵之后，我发现其实大学里面没什么人关注谁是学生会主席之类的，反而觉得技术大牛才是崇拜的对象。&lt;/p&gt;

&lt;p&gt;大一的暑假，Intel 和交大软件学院搞了一个“试点班”，给我们布置了一个题目，感兴趣的同学可以在暑假自己做，开学通过答辩后可以正式加入试点班。题目是用 Java 做一个键盘数据的统计可视化软件——这么想起来我果然和可视化还是很有缘的。&lt;/p&gt;

&lt;p&gt;暑假反正也没什么事，我就自己琢磨起来。当时学校只交了 C++，大家都是自学 Java，以及需要用的库。我当时没什么看 API 的经验，打印了几十页的 API 从头看到底……&lt;/p&gt;

&lt;p&gt;开学答辩，总共十来个人交了作业，其中就我一个女生——可能这是学院里有同学开始叫我大神的开始。&lt;/p&gt;

&lt;p&gt;答辩下来，发现只有我做完了所有要求（六七个图表？），还额外做了一些功能。我也不知道为什么他们都只做了一两个图（写到这里，感觉有点类似初中不理解为什么大家不准备自我介绍）……总之，当时给 Intel 的人留下了比较深刻的印象，其中一位是负责校企合作的 Evelyn，她之后对我有非常大的帮助甚至一定程度上改变了我的认知，此乃后话，按下不表。&lt;/p&gt;

&lt;p&gt;这个试点班基本就是 Intel 的工程师给布置题目，指点比较少，大部分都是自己琢磨，同学间互相交流。这个其实和学生工作的本质是相同的，这些题目本身对我的帮助不会特别大，但重要的是，改变了我对自己编程能力的定位。刚进大学的时候，我的编程能力并没什么突出之处，甚至可以说，和那些高中就参加计算机竞赛的同学相比毫无优势。其他大学课程的成绩也就中等，可能也是因为我是一个很理性的功利主义者，我不觉得分数更高对我有什么很大的价值就没有特别花心思（或者就是笨）。而经过试点班的几次答辩，我都从反馈中发现我做得不错，这样就真的觉得自己说不定真的可以成为一个大神。&lt;/p&gt;

&lt;p&gt;有一次答辩前，Evelyn 看到我在门口背稿子，非常好心地跟我说，不用一字一句地背，自然地说反而更流畅。我笑着感谢了她，但我的风格就是把稿子背熟，然后进去讲的时候，只当是临场发挥的，因为我的稿子里甚至带了“嗯”“啊”的语气词——这里又用到了数学老师教的朗诵大法啦！可以想象，她在门外看到一个小姑娘特别紧张地在背稿子，进去之后却非常自信地临场发挥，这种预期的反差还挺有意思的。答辩后，我们老师悄悄跟我说，我给 Evelyn 留下了很深刻的印象，让我继续加油，这给了我非常大的动力。&lt;/p&gt;

&lt;p&gt;在后面的接触中，我越来越钦佩 Evelyn 的为人，也把她作为自己待人接物的榜样。虽然做不到她这么好，但她让我对他人真诚地怀有更多善意，发自内心地更想要帮助别人。&lt;/p&gt;

&lt;p&gt;在很多方面我都非常感激 Intel，比如在 Evelyn 的介绍下，我有机会能在实习的时候直接汇报给 Intel 的超级大佬波哥，感觉正式员工都非常羡慕我哈哈！要不是他们实在没有前端岗位，我还真的想以身相报呢~&lt;/p&gt;

&lt;p&gt;说到前端，我是怎么走上这条路的呢？其实大四还没什么明确的想法，编程语言倒是学了一堆，也捣鼓了不少自娱的东西，但是工作的方向并不明确。因为当时在 Intel 实习看到八九成的工程师都是研究生及以上学历，觉得那就读一下吧，顺便让自己更想清楚一些选择什么方向。&lt;/p&gt;

&lt;p&gt;选择实验室的时候，我想想自己好像比较喜欢看得见的东西，所以选了数字艺术媒体实验室，我们导师是研究人机交互和图形学的。一开始就听说这个方向对数学要求特别高，我一个线性代数挂科的人，居然有勇气选，也算是真爱了。我们的美女导师不仅在学术上给了我很多指导，更多的是她对待生活的态度让我看到了另一个优秀女性的榜样。&lt;/p&gt;

&lt;p&gt;其实可以发现，我在回顾我的人生的时候，很多情况下都是一些优秀的女性给了我很多指引和启发，她们让我发现作为一个女性的可能性，让我去思考我想成为怎样的人。我不知道看到这篇文章的女生能不能也从我的经历中获得一些启发，如果有，我也会非常高兴！&lt;/p&gt;

&lt;h1 id=&quot;工作&quot;&gt;工作&lt;/h1&gt;

&lt;p&gt;在研究生找实习的阶段，我当时想逆向操作一下，不是我去海投简历，而是做一份在线简历进行传播，让别人来找我，这样可能效率比较高。我也没想到最好传播效果这么好。我现在看看，简历里好像也没什么特别出色的地方……&lt;/p&gt;

&lt;p&gt;当时大概有一两百个人联系我，因为当时我已经有比较明确的目标，上海的大公司，所以一些不合适的聊两句就婉拒了，倒也没有很浪费精力。有意思的是，虽然我拒绝的时候都尽量客气了，还是会有一些人因为被拒绝而跳脚：居然会有人拒绝我们公司？你怎么想的？这种气量倒是让我更庆幸自己的选择。&lt;/p&gt;

&lt;p&gt;当时，我现在的老板就让我加入 ECharts，是一个非常著名的开源软件，而我并没有听说过……他过个几天天就找我一次，也不多聊，来来回回就这么两句，加入我们吧！嗯，我考虑下……&lt;/p&gt;

&lt;p&gt;那时候主要是找实习，ECharts 是在上海，所以我决定暑假先去杭州阿里，这样暑假结束回学校后还能在上海在 ECharts 实习。阿里是冲着 Winter 去的，想见见活的大 V。在杭州的那两个月，主要也是想体验下，如果真的离开上海，我会更喜欢吗（虽然工资不给我翻倍是基本不考虑的了，但是体验下又不要钱，还能赚钱）。在 Winter 团队认识了很多有意思的人，比如勾股、大漠、一丝等等，团队成员给我的感觉是非常有趣的，但我做的 WebGL 也就是试验性的，当时没什么实际的业务场景需要，再加上阿里的政治氛围我实在是接受不了（其实主要还是钱没给够吧），所以就当做愉快的暑假旅行了。&lt;/p&gt;

&lt;p&gt;于是就加入 ECharts 团队了。&lt;/p&gt;

&lt;p&gt;说实话，刚加入的两年可能都没什么特别大的成就感，主要是团队里面已经有两个高 T 了，技术方面找寻成功感比较难，虽然也做过不少高 T 或老板觉得酷的东西吧，但这种成就感能维持的时间太短了。而且我上面写了这么多经历，你们也应该发现我不是一个典型的程序员，我会觉得自己很多方面的软实力并没有发挥作用，有点浪费。虽然找一个程序员的工作就不能指望还能用上这些软实力吧，但反正就是没有看到自己的不可替代性。但我也不强求成就感什么的，钱给到位就行（现在看来还是股票更好哈哈……）。&lt;/p&gt;

&lt;p&gt;倒是这一两年在 Apache 孵化的过程中，感觉自己的英语能力、沟通能力还有文字能力等等终于能派上用场了。更重要的是，感觉自己能做团队其他成员不太擅长做的事，这会让我更觉得这个团队是需要我的，我是提供了高价值的，也就更能持续地提供成就感（当然了，钱还是要到位的——如果老板坚持看了七千字看到这里的话）。&lt;/p&gt;

&lt;h1 id=&quot;2020&quot;&gt;2020&lt;/h1&gt;

&lt;p&gt;写了这么多，终于到今年的年度小结了。&lt;/p&gt;

&lt;p&gt;前两天，看到这样一条消息：&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2021-01-01-goodbye-2020/quote.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;受宠若惊的同时，不禁倒吸一口冷气——感觉往年的小结也没少吹嘘自己又得了什么什么称号、做了什么什么作品，居然被人认为是不吹牛的典型？（那要不今年收敛一下，就不提 2020 年我斩获 GitHub Star 和中国开源先锋的事了？）&lt;/p&gt;

&lt;p&gt;以前看到过一条有意思的新闻，说是一位老人有坚持记录每日开支的习惯，在几十年后，他的账本成为后人研究当时物价的重要依据。&lt;/p&gt;

&lt;p&gt;今年当然是非常特殊的一年，甚至大概远比我们现在的感知来得更特殊。&lt;/p&gt;

&lt;p&gt;而我这样一个微不足道的人的 2020 的年度小结，不知道是否也会在某一天有幸扮演老人账本的作用。这样想的话，就会觉得说自己又得了什么荣誉称号或是做了什么值得发朋友圈的事是多么无聊，倒是有必要多说几句当下真实的感受。&lt;/p&gt;

&lt;h2 id=&quot;自由&quot;&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=&quot;13kjsgames&quot;&gt;13kjsgames&lt;/h2&gt;

&lt;p&gt;今年和钰猫一起参加了 13kjsgames 的比赛，之前一直说要写文章，后来拖着到年底了还没写……只是现在已经八千字了，我实在不能再写下去了，还是期待以后另行成文吧，这里就放一个图。&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2021-01-01-goodbye-2020/13kjsgames.png&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;烘焙&quot;&gt;烘焙&lt;/h2&gt;

&lt;p&gt;今年开的新坑就属它最像样啦！&lt;/p&gt;

&lt;figure class=&quot;single-img&quot;&gt;
    &lt;img src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2021-01-01-goodbye-2020/yumao-birthday-cake.jpg&quot; /&gt;
    &lt;figcaption&gt;给钰猫做的奥利奥咸奶油生日蛋糕&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;single-img&quot;&gt;
    &lt;img src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2021-01-01-goodbye-2020/christmas-cake.jpg&quot; /&gt;
    &lt;figcaption&gt;为明信片准备的红丝绒蛋糕&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&quot;自我提升&quot;&gt;自我提升&lt;/h2&gt;

&lt;p&gt;今年和四位同事约定一起背英语单词，其中一位一天都没背（咳咳，自己站出来！），另外有一位和我一样坚持背了一年，大约每天 20 分钟，每周 4 天左右的频率。强度不算很高，但我觉得也很了不起了！&lt;/p&gt;

&lt;p&gt;西班牙语学得好像有点懒散，只有一周背 20 分钟单词吧，买的书都没怎么学。可能还是一个人比较难坚持。明年可不能放弃哦！&lt;/p&gt;

&lt;p&gt;钢琴还不算弃坑，但是最近练的频率也太低了，2021 年可得加油哦！&lt;/p&gt;

&lt;p&gt;我就不立具体的目标了，2019 年的目标一大半都没完成，还是不丢人了……&lt;/p&gt;

&lt;h1 id=&quot;总结&quot;&gt;总结&lt;/h1&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;blockquote&gt;
  &lt;p&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;&lt;strong&gt;我觉得三十岁真是一个美好的年纪。&lt;/strong&gt;年幼时我曾为很多不能控制的事感到非常无力和痛苦，需要假装很自信地面对很多人。现在，当然总还会有各种事是我无法控制的，但我已经有能力让生活在一个相对可控的范围内变化，既有惊喜，又不至于彷徨。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;更让我感到欣慰的是，如今我所在意的这些能力和价值，都不是随着岁月而贬值的，反而是历久弥香的，那么年龄的增长也是一件值得让人期待的事了。&lt;/strong&gt;&lt;/p&gt;
</description>
                <pubDate>Fri, 01 Jan 2021 00:00:00 +0800</pubDate>
                <link>http://zhangwenli.com/blog/2021/01/01/goodbye-2020/</link>
                <guid isPermaLink="true">http://zhangwenli.com/blog/2021/01/01/goodbye-2020/</guid>
            </item>
        
            <item>
                <title>这本书居然教你故意把注册表单做得复杂！</title>
                <description>&lt;p&gt;看到标题后，你的第一反应是觉得为什么呢？给大家时间开动一下小脑瓜，答案稍后揭晓。&lt;/p&gt;

&lt;p&gt;今天要介绍的书是我刚读完的——&lt;a href=&quot;https://book.douban.com/subject/20505765/&quot;&gt;《精益创业实战》&lt;/a&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;h1 id=&quot;b-计划&quot;&gt;B 计划&lt;/h1&gt;

&lt;blockquote&gt;
  &lt;p&gt;值得注意的是，即使是成功创业的公司，也有三分之二在创业过程中完全颠覆了最初的方案￼。也就是说，一家创业公司之所以能成功，并不一定是因为最初的方案（我们称之为A计划）制订得好，更重要的是在资源耗尽之前找到了一个真正可行的方案。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;前几天看了一个纪录片《隐姓亿万富翁》，说的是一个 55 岁的亿万富翁想证明自己即使重新白手起家也能在很短的时间内成功。于是，他匿名来到宾夕法尼亚的一个小镇，只带着 100 美元的起步资金，目标是在 90 内创造一百万美元的资本。而实际结果是，90 天后，他开的烧烤店被估值 75 万美元。虽然没达到目标，但也很接近了，而且这速度对我们普通人来说简直难以想象！&lt;/p&gt;

&lt;p&gt;这部纪录片本身很有意思，如果大家感兴趣的话，不妨自己看看。从中能学到不少有钱人之所以会有钱的思维模式，很多都让我觉得很意外。&lt;/p&gt;

&lt;p&gt;他一开始打算做酿酒的生意，在除了嘴皮子之外什么都没有的情况下，拉拢来各种人才把他们一顿洗脑。然后咨询了一下律师发现酿酒厂的经营许可 90 天内弄不到，于是不得不换方向。这时候，他就想出了 B 计划——开烧烤店。看到这里我就震惊了，这个人昨天才对小伙伴们说酿酒说得天花乱坠，明天要怎么解释换方向？这样一天就换方向岂不是会让人觉得很不靠谱？&lt;/p&gt;

&lt;p&gt;结果我万万没想到还有这样的操作——他说我们要开一家烧烤店，和啤酒的营销完美结合。大家都纷纷表示这想法很靠谱！最后他们做着烧烤生意，好像根本没人记得啤酒的事……&lt;/p&gt;

&lt;p&gt;我觉得这个 A 计划 B 计划本身都没什么特别之处，但是这个富豪的过人之处在于怎么把 A 计划成功过渡到 B 计划，而不让人觉得这是一个朝三暮四不靠谱的人。&lt;/p&gt;

&lt;h1 id=&quot;定价&quot;&gt;定价&lt;/h1&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;p&gt;回到文章开头的问题，为什么这本书建议我们提高注册的门槛呢？&lt;/p&gt;

&lt;p&gt;通过提高门槛，真正完成注册的人更可能需要你的产品去解决问题的人，从而也就更有价值。这是不是让人想到了 b 站复杂的注册问题呢？这种机制可以有效将 b 站会员锁定在目标受众，从而对产品提升更多价值。&lt;/p&gt;

&lt;p&gt;有道理吗？恐怕不同的产品差异很大。首先，免费用户的价值是非常不一样的，有些产品的免费用户能对平台本身产生价值，而有些则只是消耗资源。其次，一个付费用户能平摊多少免费用户的比例也很不一样，所以是不是真的应该故意把注册表单做得复杂可能还是需要针对具体产品来看。&lt;/p&gt;

&lt;h1 id=&quot;问卷中必不可少的问题&quot;&gt;问卷中必不可少的问题&lt;/h1&gt;

&lt;p&gt;在你对用户做问卷调研的时候，有一个一定要问的问题是——&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;如果以后不能继续使用这个产品，你会是什么感觉？&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;(1) 非常沮丧&lt;/li&gt;
    &lt;li&gt;(2) 有点沮丧&lt;/li&gt;
    &lt;li&gt;(3) 没关系（反正它的用处也不大）&lt;/li&gt;
    &lt;li&gt;(4) 以上都不是——我已经不用这个产品了
如果有超过四成的用户认为没有你的产品他们会“非常沮丧”，那很有可能你的产品属于“必须有”一类，而且你已经建立起了持续又可增长的客户获取渠道。“四成”这个数字是横向对比了几百家创业公司之后得出的结果。有四成以上用户选择“非常沮丧”的公司一般都能持续发展壮大，而明显低于四成的公司几乎都遇到了麻烦￼。&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;那么问题来了，如果我不更新文章，那么会是什么感觉？&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;(1) 非常沮丧&lt;/li&gt;
  &lt;li&gt;(2) 有点沮丧&lt;/li&gt;
  &lt;li&gt;(3) 没关系（反正它的用处也不大）&lt;/li&gt;
  &lt;li&gt;(4) 以上都不是——我已经不看了（是我们家的猫给这个选项投票的）&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;推荐书目&quot;&gt;推荐书目&lt;/h1&gt;

&lt;p&gt;这本书还提到了很多非常具有操作性的指南，但是由于太过具体，这里就不展开介绍了。&lt;/p&gt;

&lt;p&gt;而文末提到的推荐书目我觉得非常有价值，在这里推荐给大家。&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;图书&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;The Lean Startup，作者E ric Ries&lt;/li&gt;
    &lt;li&gt;中文版《精益创业》（中信出版社）&lt;/li&gt;
    &lt;li&gt;The Four Steps to the Epiphany，作者 Steve Blank（&lt;a href=&quot;http://www.cafepress.com/kandsranch&quot;&gt;http://www.cafepress.com/kandsranch&lt;/a&gt;）中文版《四步创业法》（华中科技大学出版社）&lt;/li&gt;
    &lt;li&gt;Business Model Generation，作者Alex Osterwalder&lt;/li&gt;
    &lt;li&gt;中文版《商业模式新生代》（机械工业出版社）&lt;/li&gt;
    &lt;li&gt;The Entrepreneur’s Guide to Customer Development，作者Brant Cooper与Patrick Vlaskovits&lt;/li&gt;
    &lt;li&gt;Positioning:The Battle for Your Mind，作者Jack Trout与Al Ries&lt;/li&gt;
    &lt;li&gt;中文版《定位：有史以来对美国营销影响最大的观念》（机械工业出版社）&lt;/li&gt;
    &lt;li&gt;Don’t Just Roll the Dice，作者Neil Davidson&lt;/li&gt;
    &lt;li&gt;Rocket Surgery Made Easy，作者Steve Krug&lt;/li&gt;
    &lt;li&gt;中文版《妙手回春：网站可用性测试及优化指南》（人民邮电出版社）&lt;/li&gt;
    &lt;li&gt;Inbound Marketing，作者Dharmesh Shah与Brian Halligan&lt;/li&gt;
    &lt;li&gt;中文版《网络营销3.0:Google，社会化媒体和博客引爆的集客式营销》（人民邮电出版社）&lt;/li&gt;
    &lt;li&gt;The Principles of Product Development Flow，作者Donald Reinertsen&lt;/li&gt;
    &lt;li&gt;Lean Software Development: An Agile Toolkit，作者Mary Poppendieck与Tom Poppendieck&lt;/li&gt;
    &lt;li&gt;中文版《敏捷软件开发工具——精益开发方法》（清华大学出版社）&lt;/li&gt;
    &lt;li&gt;Toyota Production System，作者Taiichi Ohno&lt;/li&gt;
    &lt;li&gt;中文版《丰田生产方式》（中国铁道出版社）&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;博客&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Eric Ries, “Startup Lessons Learned”（&lt;a href=&quot;http://startuplessonslearned.com&quot;&gt;http://startuplessonslearned.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;Steve Blank（&lt;a href=&quot;http://steveblank.com&quot;&gt;http://steveblank.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;Jason Cohen, “A Smart Bear”（&lt;a href=&quot;http://blog.asmartbear.com&quot;&gt;http://blog.asmartbear.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;Venture Hacks（&lt;a href=&quot;http://venturehacks.com&quot;&gt;http://venturehacks.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;Sean Ellis, “Startup Marketing”（&lt;a href=&quot;http://startup-marketing.com&quot;&gt;http://startup-marketing.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;Dharmesh Shah, “OnStartups”（&lt;a href=&quot;http://onstartups.com&quot;&gt;http://onstartups.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;David Skok, “For Entrepreneurs”（&lt;a href=&quot;http://www.forentrepreneurs.com&quot;&gt;http://www.forentrepreneurs.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;Ben Yoskovitz, “instigator blog”（&lt;a href=&quot;http://www.instigatorblog.com&quot;&gt;http://www.instigatorblog.com&lt;/a&gt;）&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;工具&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;精益画布：商业模式验证软件（&lt;a href=&quot;http://leancanvas.com&quot;&gt;http://leancanvas.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;USERcycle：客户生命周期管理软件（&lt;a href=&quot;http://usercycle.com&quot;&gt;http://usercycle.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;用户测试：在线可用性测试（&lt;a href=&quot;http://usertesting.com&quot;&gt;http://usertesting.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;KISSmetrics：网络分析软件（&lt;a href=&quot;http://kissmetrics.com&quot;&gt;http://kissmetrics.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;Mixpanel：实时行为追踪（&lt;a href=&quot;http://mixpanel.com&quot;&gt;http://mixpanel.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;SnapEngage：在线客户反馈工具（&lt;a href=&quot;http://snapengage.com&quot;&gt;http://snapengage.com&lt;/a&gt;）&lt;/li&gt;
    &lt;li&gt;Heroku:Ruby平台即服务云应用平台（&lt;a href=&quot;http://heroku.com&quot;&gt;http://heroku.com&lt;/a&gt;）&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

</description>
                <pubDate>Tue, 03 Mar 2020 00:00:00 +0800</pubDate>
                <link>http://zhangwenli.com/blog/2020/03/03/reviewing-running-lean/</link>
                <guid isPermaLink="true">http://zhangwenli.com/blog/2020/03/03/reviewing-running-lean/</guid>
            </item>
        
            <item>
                <title>2019 年度小结</title>
                <description>&lt;p&gt;今年过年早，再不写完这篇拖延了半个月的年度小结，都不能找借口说是以农历新年为分割点了。如果用列表的方式来说今年做了的事情的话，看起来还是有不少值得一提的——&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ECharts 代码相关
    &lt;ul&gt;
      &lt;li&gt;ECharts 核心项目（&lt;a href=&quot;https://github.com/apache/incubator-echarts&quot;&gt;ECharts&lt;/a&gt; + &lt;a href=&quot;https://github.com/ecomfe/zrender&quot;&gt;ZRender&lt;/a&gt;）提交了一百多个 commit&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://echarts.apache.org/zh/cheat-sheet.html&quot;&gt;ECharts 术语速查手册&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/apache/incubator-echarts-bot&quot;&gt;ECharts GitHub 机器人&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;http://smartprogram.baidu.com/docs/develop/framework/echarts/&quot;&gt;百度智能小程序 ECharts 动态库&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;发展 ECharts 社区
    &lt;ul&gt;
      &lt;li&gt;发展 6 位 Apache ECharts Committer&lt;/li&gt;
      &lt;li&gt;举办 ECharts MeetUp 上海站&lt;/li&gt;
      &lt;li&gt;在 Bilibili、YouTube、Medium、Twitter、微博、公众号、知乎等渠道制作发布教程&lt;/li&gt;
      &lt;li&gt;梳理开发文档，给贡献者布置容易上手的任务&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;技术分享
    &lt;ul&gt;
      &lt;li&gt;ApacheCon 上分享&lt;a href=&quot;http://zhangwenli.com/ppt/2019/09/11/web-based-interactive-big-data-visualization/#/&quot;&gt;《Web-based Interactive Big Data Visualization》&lt;/a&gt;（美国拉斯维加斯）&lt;/li&gt;
      &lt;li&gt;Coscon 开源中国年会上分享《ECharts 的跨平台可视化渲染方案》（上海）&lt;/li&gt;
      &lt;li&gt;ECharts MeetUp 上分享&lt;a href=&quot;https://www.bilibili.com/video/av81252982&quot;&gt;《如何成为一个 Committer》&lt;/a&gt;（上海）&lt;/li&gt;
      &lt;li&gt;GitHub MeetUp 上分享&lt;a href=&quot;http://zhangwenli.com/ppt/2019/09/17/what-i-learned-from-being-open-source/&quot;&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=&quot;https://changelog.com/podcast/373&quot;&gt;Changelog&lt;/a&gt;（播客）&lt;/li&gt;
      &lt;li&gt;苹果 App Store（文字）&lt;/li&gt;
      &lt;li&gt;PriceTag（文字）&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;个人项目
    &lt;ul&gt;
      &lt;li&gt;个人网站改版：&lt;a href=&quot;http://zhangwenli.com/&quot;&gt;像素风主页&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/Ovilia/sunglass&quot;&gt;sunglass&lt;/a&gt;：将图片转为给定调色盘的 npm 工具&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/Ovilia/font2img.js&quot;&gt;font2image.js&lt;/a&gt;：将指定的字体文件和内容样式转为图片的 npm 工具&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://js13kgames.com/entries/snake-it-back&quot;&gt;snake-it-back&lt;/a&gt;：参加 js13kgames 游戏比赛的作品，灵感来自贪吃蛇游戏&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;读了 28 本书，参见&lt;a href=&quot;http://zhangwenli.com/blog/2019/12/20/reading-report/&quot;&gt;《2019 年读书小结》&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;简单归纳一下：工作方面分为两部分，一部分是通过不断提 PR 加深了对核心代码的理解，另一部分是今年花了很多精力做社区推广的事，并且在年末的时候开始看到比较明显的成效。个人项目部分主要是把个人主页改版成像素风的设计，并且参与了 js13kgames 的比赛。&lt;/p&gt;

&lt;h1 id=&quot;工作&quot;&gt;工作&lt;/h1&gt;

&lt;p&gt;ECharts 长期都存在用户量很大但是参与代码贡献的人很少的问题。在加入 Apache 之前，更多时候的心态是「那也没什么办法吧」。其实，和很多不是迅速就能解决的问题一样，办法是有的，只是需要长期坚持去做。做视频、写文章都需要花很多的时间和精力，初期可能浏览量只有几百，但如果长期能坚持做成一系列的，就能对用户产生更多价值，也就能够吸引到更多人关注。这件事虽然现在看起来投入产出比有点低，但是我相信这是一件有价值的事，我不去做可能也不会有别人去做。那么，就慢慢做，坚持做吧。&lt;/p&gt;

&lt;p&gt;社区推广方面的成效也比较显著，可以明显看到 issue 中有更多人在帮助别人解决问题，并且有更多人提 PR。而已经发展成为 Committer 的人也没有把成为 Committer 作为最终目标，继续保持着对社区的贡献。这里不具体展开了，个人感觉比较有效的方式，还是要加强重点对象的私下交流。比如在微信上多私聊关心一下最近在社区贡献方面碰到什么问题，需要什么帮助，而不是只在 GitHub 上等待着贡献的出现。&lt;/p&gt;

&lt;p&gt;9 月份的时候去美国参加了 ApacheCon North America，也是我第一次全程&lt;strong&gt;用英语作技术分享&lt;/strong&gt;。压力也是有的，但是还是比接受 &lt;a href=&quot;https://changelog.com/podcast/373&quot;&gt;Changelog&lt;/a&gt; &lt;strong&gt;英语访谈&lt;/strong&gt;轻松一点，因为毕竟分享内容可以从头到尾写好稿子念熟了。经历这两场之后，还是觉得英语口语需要再拯救一下，列为 2020 年学习重点之一了。&lt;/p&gt;

&lt;p&gt;为了应对 issue 很多很乱的问题，我做了一个 &lt;a href=&quot;https://github.com/apache/incubator-echarts-bot&quot;&gt;GitHub 机器人&lt;/a&gt;，可以自动管理 issue 标签等。原先回复 issue 的问题经常被搞得很烦躁，因为很多人问问题都很不规范，现在有了机器人的帮助，维护 issue 的事情就变得舒畅很多了。&lt;/p&gt;

&lt;h1 id=&quot;个人项目&quot;&gt;个人项目&lt;/h1&gt;

&lt;p&gt;每年都会重新设计一下&lt;strong&gt;个人主页&lt;/strong&gt;，2019 年把个人主页改成了像素风的设计，也是我到现在最满意的一版。虽然现在公众号、微博等平台粉丝比较多，个人主页访问量则很少，但对我来说，个人主页还是一个最像「家」的存在，所以我也总是想把最精彩的一面集中呈现在个人主页。希望 2020 年还能有改进。&lt;/p&gt;

&lt;p&gt;之前一直想参加 js13kgames 的比赛，2019 年虽然看到得有些晚了，并且那段时间正是在美国分享最忙的时候，但是不报名又要等一年，而且明年指不定又因为什么事忙。所以，我也没多想，直接就报名参赛了。2019 的主题是「Back」，我做了一个叫 &lt;a href=&quot;https://js13kgames.com/entries/snake-it-back&quot;&gt;snake-it-back&lt;/a&gt; 的贪吃蛇游戏，死了的蛇会成为下一轮的障碍物。我给自己打 70 分吧，时间还是太仓促了，视觉方面和一些其他的细节本来可以做得更好。来自评委的反馈——&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Nathan Lie: Incredible idea - the retro Gameboy vibe really evokes the era of gaming where games were nail-bitingly difficult and the challenge brought the fun factor. Only improvement I’d suggest is a small bugfix - if the player puts in two inputs in quick enough succession, the second input can be read before the snake turns from the first input, so it’s possible to make the snake turn in on itself (i.e. you can make the snake turn right while it’s going left, which should be impossible). Might be useful to either prevent inputs until the next “frame” or just buffer them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Ahmed Khalifa: Congratulations on finishing a well-polished game. - I loved the graphics inspired by Nokia 3310’s snake game. - The music was a little bit repetitive after a while of playing but there was an option to mute it which was great as not every 13k game is able to fit new stuff in the code in that small foot print. - The idea behind letting the player play against all the previous version is very interesting. I think you could investigate it more, what about a mode where only the final state is the only thing so you are creating a maze. What about if I can kill all my previous ghosts as they kill me? What if at the end the ghost stayed solid and create more obstacles? What if the ghosts are able to eat my pellets too? Having all these types of question only reflect how good and interesting is the design space you are working with, I think you should go for a bigger version and investigate all these questions. Overall Great job and very interesting entry.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Florian Rival: Love the idea! Very interesting game, though maybe I would have restarted the ghost snake even when they have finished - so that the challenge is becoming even harder? The style of the game is great too. Great job!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;Jupiter Hadley: Very interesting and fun take on Snake!!!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;业余爱好&quot;&gt;业余爱好&lt;/h1&gt;

&lt;p&gt;弃了水彩的旧坑，入了 Procreate 的新坑，画画对我来说还是一件不太容易的事。但是对于我的艺术表达又很重要，所以不管是什么形式的画画，还是想要再进一步学习的。年底还新入了 C4D 的新坑，原因是钰猫说要做 3D 的游戏。想当年因为他说要做像素风的游戏，我去学习了像素画，现在还算画得有点得心应手了，他的游戏创意又改艺术风格了。我想，他一定是在培养我做全面的艺术大师，着实用心良苦。他立下军令状 2020 年要完成游戏基本可玩的军令状，我就替他写在这里以激励他完成这一目标。&lt;/p&gt;

&lt;p&gt;电钢琴居然坚持练下来了，我本以为的大概率吃灰的。iPad 上订阅了 Simply Piano，年费 398 作为一款软件有点贵，但是相比私教的话就是一两节课的价钱。这个软件很好用，如果想学钢琴的话，强烈推荐。不能算很强的游戏化设计，但是互动性做得很好，让我很愿意坚持练习。我一般每周三四天的频率，一次半小时到一小时。练这个主要是为之后作曲找找感觉的。独立游戏可能不一定自己作曲，毕竟还认识更专业的玩音乐的朋友。但是我喜欢这种作品中各种工种自己都能独立应对的感觉。&lt;/p&gt;

&lt;p&gt;现在每天作息还是比较规律的（虽然太晚睡了），一般早上坐最后一班 9:30 的班车到公司，晚上坐最后一班 9 点的班车 9:30 到家。一般 12:30 到 1 点睡，除去娱乐和洗漱的时间，睡前一般有两个小时左右的时间。要学点什么读点什么还是有时间的，只是每天都特别充实，要想多做点什么就要压缩睡眠时间了。2020 年希望还是能在 12 点前睡觉，宁可早点起来做事。冬天太难了，看春天能不能做得到吧……&lt;/p&gt;

&lt;p&gt;买了 Switch 健身环快一个月了。本来钰猫坚持以锻炼为理由要买的时候，我是比较怀疑的，因为家里吃灰的游戏和坚持不下去的 Keep 太常见了。但是亲测发现确实比较能坚持，而且出乎意料地还是挺消耗热量的。平时我和钰猫都是不太喜欢锻炼的人，主要是没什么正反馈，身材好不好的也好像没什么区别，这样就没动力锻炼了。健身环这个的游戏性设计得确实比较好，虽然台词有点尬，但是能骗我坚持锻炼就够了。&lt;/p&gt;

&lt;h1 id=&quot;总结&quot;&gt;总结&lt;/h1&gt;

&lt;p&gt;2019 年总体还是觉得每天都过得很忙，毕竟还过着出卖自己的时间来赚钱的日子。压力焦虑时不时还是难免的，但是现在算是想得比较清楚自己想要的生活是什么样的，为此需要放弃什么，需要付出什么。现阶段可能无法分享更多，如果有机会的话再告诉大家。&lt;/p&gt;

&lt;p&gt;2018 年写的 2019 年计划，虽然有些没完成（比如写每月小结只坚持了三四个月），但是总体完成情况我还是比较满意的。&lt;/p&gt;

&lt;p&gt;2020 年的目标如下——&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;学习 C4D，能够做出完整作品&lt;/li&gt;
  &lt;li&gt;英语口语 + 词汇&lt;/li&gt;
  &lt;li&gt;西班牙语（新坑）&lt;/li&gt;
  &lt;li&gt;可视化作品 x2&lt;/li&gt;
  &lt;li&gt;继续练习电钢琴，不弃坑即可&lt;/li&gt;
  &lt;li&gt;写作：虚构作品 2 万字以上&lt;/li&gt;
  &lt;li&gt;坚持写日记&lt;/li&gt;
&lt;/ul&gt;
</description>
                <pubDate>Sun, 19 Jan 2020 00:00:00 +0800</pubDate>
                <link>http://zhangwenli.com/blog/2020/01/19/goodbye-2019/</link>
                <guid isPermaLink="true">http://zhangwenli.com/blog/2020/01/19/goodbye-2019/</guid>
            </item>
        
            <item>
                <title>2019 年读书小结</title>
                <description>&lt;style&gt;
.chart {
    width: 100%;
}

#score-chart {
    height: 640px;
}
&lt;/style&gt;

&lt;p&gt;这已经是我第 6 年写读书小结了——这又是一项我坚持了很多年的事。&lt;/p&gt;

&lt;p&gt;有的时候我想，或许正像很多人问我「&lt;strong&gt;如何坚持读书&lt;/strong&gt;」的答案一样——如果做的是一件你真正感兴趣的事，那么这只是一个&lt;em&gt;习惯&lt;/em&gt;，而非需要强大的毅力去&lt;em&gt;坚持&lt;/em&gt;的一件事。&lt;/p&gt;

&lt;p&gt;本文将总结和读书相关的内容，其他内容将会在另外一篇年度总结的博文中介绍。&lt;/p&gt;

&lt;div class=&quot;chart&quot; id=&quot;score-chart&quot;&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;今年总共读了 28 本书。&lt;/strong&gt;工作以后每年基本上都维持在 20-30 本之间的阅读量。我并不要求自己读更多书，但数量少了的话，遇到有趣的书的几率也会比较低。所以，我觉得这个数量对我来说差不多刚好。&lt;/p&gt;

&lt;h1 id=&quot;主题阅读&quot;&gt;主题阅读&lt;/h1&gt;

&lt;p&gt;今年是我比较有意识进行&lt;em&gt;主题阅读&lt;/em&gt;的第一年，主题是：&lt;strong&gt;科幻&lt;/strong&gt;与&lt;strong&gt;文学创作&lt;/strong&gt;。&lt;/p&gt;

&lt;h2 id=&quot;科幻作品&quot;&gt;科幻作品&lt;/h2&gt;

&lt;p&gt;去年的时候重读了《三体》，所以在年底的时候定下了今年的主题是科幻。于是，一口气读完了阿西莫夫的 5 本科幻作品——《基地》1-4 以及阿西莫夫最早的作品《苍穹微石》。结果证明，果然写作这件事是需要磨练的，大神也不例外。&lt;/p&gt;

&lt;p&gt;《基地》之前我也粗略翻过，但是没读进去。今年比较有缘分，一读就停不下来了。读完 2 的时候，我的评论是——&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;没有第一本那么震撼，但是还是足以吸引我读下一本。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;但是在短短 11 天内，又读完了第三本——&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;然而还是又读了一本，真香！&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;到第 4 本已经是——&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;特别喜欢这本里面提到的不同世界的设定，和《看不见的城市》有点神似，读得停不下来。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;但是后来第 5 本拖得时间太长，导致已经不记得前面发生了什么……所以就很可惜只读了 4 本。&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;另一个入坑读了这么多阿西莫夫作品的原因是，2 月份的时候，趁着 Kindle 套装打折，以 ¥59.99 的价格买了「永恒的科幻经典」这一系列 32 册电子书……&lt;/p&gt;

  &lt;p&gt;顺便说下，并不推荐购买这一系列，因为 32 本书全在一个电子书里！一级目录是 32 本书的书名，没有二级目录，所以找起来非常麻烦。更重要的是，当你看了十几个小时，进度永远是 1% 的时候，内心绝对是崩溃的！&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img class=&quot;book-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;https://images-cn.ssl-images-amazon.com/images/I/51OcmywWdiL.jpg&quot; /&gt;《基地》系列总共有 7 本，讲述的是两万年后（人类的后代已经不记得文明发源于地球的年代），整个银河系是一个庞大的帝国。但是这个帝国即将瓦解，于是，&lt;em&gt;心理史学家&lt;/em&gt;（这个词是阿西莫夫自己创造的）建立了&lt;em&gt;基地&lt;/em&gt;来帮助人类尽快度过动荡的年代，早日进入下一个和平稳定的时代。&lt;/p&gt;

&lt;p&gt;小说能吸引我不断读下去的本质原因还是叙事手法引人入胜，让我不断想知道后面（甚至是前面）发生了什么。但是，这一系列对我来说，真正的魅力在于，&lt;strong&gt;它探讨了未来是否是可以在当前推断得出的&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;在书中，阿西莫夫给出的答案是&lt;em&gt;心理史学&lt;/em&gt;可以做到这点。心理史学大致的意思是，通过心理学，从宏观上得出统计学的结论。所以，并不能得知未来某个具体的人的走向，但是可以得出宏观的人类发展。由于我只看了前 4 本，我也不知道这个心理史学只是一种类似「自我预言」的把戏（比如让人类相信基地会取得最终的胜利，从而放弃抵抗获得和平），还是另有道理。我甚至不知道阿西莫夫是否准备在后面的内容中揭晓这一答案。不过，这种探讨本身是十分有趣的。&lt;/p&gt;

&lt;p&gt;我认为&lt;strong&gt;科幻是文学作品中一个非常独特而有价值的分支&lt;/strong&gt;。虚构文学本身都在讲&lt;em&gt;虚构&lt;/em&gt;出的故事，而科幻的区别是，通常由于高科技的加持，想象力在这里可以飞得更远。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;当我们为一部科幻作品所创造出的世界惊叹的时候，我们不仅仅是在惊叹那个遥远的世界，更是在惊叹我们这个时代能创造出这样奇迹世界的那些人。&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;文学创作类书籍&quot;&gt;文学创作类书籍&lt;/h2&gt;

&lt;p&gt;今年我想清楚了我这一生比较想做成的一件事——&lt;strong&gt;写作&lt;/strong&gt;。更具体地说，写一部让自己骄傲的文学作品。&lt;/p&gt;

&lt;h3 id=&quot;人生有那么多可做的事为什么偏偏是写作呢&quot;&gt;人生有那么多可做的事，为什么偏偏是写作呢？&lt;/h3&gt;

&lt;p&gt;我觉得如果我在这一生中体验了更多的可能性，是一件让我觉得非常有价值的事。对于这种「体验」而言，&lt;em&gt;环游世界&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=&quot;阅读国外经典名著&quot;&gt;阅读国外经典名著&lt;/h3&gt;

&lt;p&gt;在我小学的时候，福州路那边有个书店称斤卖书，我当时买了好多后来也没怎么读的世界名著。因为当时我看小说，就是看对话内容的。心理描写？环境描写？这些要来干嘛的？最看不下去这些废话了！&lt;/p&gt;

&lt;p&gt;后来，很长一段时间，我也是很难读进去国外的小说的。很庆幸今年我觉得和这些国外的经典文学作品好像有点缘分了。虽然我不是很肯定，但我觉得纳博科夫的&lt;a href=&quot;https://book.douban.com/subject/27091776/&quot;&gt;《文学讲稿》&lt;/a&gt;起到了非常重要的作用。&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;纳博科夫在这本书里讨论了《曼斯菲尔德庄园》《荒凉山庄》《包法利夫人》《化身博士》《去斯万家那边》《变形记》《尤利西斯》七部名作，相当于带领学生做了七次艺术侦查和解剖，皆以简洁明晰的语言、深入浅出的方式，极为鲜明地表达他对作品的看法，同时从文本而非观念出发，细致地捕捉和艺术特点，点明作品在艺术上成功的原因。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://book.douban.com/subject/27091776/&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;book-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;https://img9.doubanio.com/view/subject/l/public/s29767494.jpg&quot; /&gt;&lt;/a&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;我觉得这种阅读方式让我受益匪浅！主要是我意识到之前之所以读不进国外的文学作品，文化差异倒是其次，更主要的原因是，不太习惯西方文学中的讽刺方式。所以很多精华的讽刺我 get 不到，只当作者本意如此，也就不觉得有趣。《文学讲稿》指出一些讽刺的细节，慢慢地我就能举一反三地学会品读国外文学作品了。&lt;/p&gt;

&lt;p&gt;其他今年读的像《文学讲稿》一样起到辐射作用的书是米兰·昆德拉的&lt;a href=&quot;https://book.douban.com/subject/1063796/&quot;&gt;《小说的艺术》&lt;/a&gt;以及《Writing the Blockbuster Novel》。不过从中种草的书，我大部分还没开始读，基本作为明年的阅读书目了。&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;/blockquote&gt;

&lt;p&gt;感兴趣的朋友可以了解下什么是&lt;em&gt;复调音乐&lt;/em&gt;（然后回来再次膜拜《红楼梦》！啊，我的逻辑好跳跃……）。&lt;/p&gt;

&lt;p&gt;《Writing the Blockbuster Novel》第一章说要看完《荆棘鸟》、《飘》、《教父》、《圣彼得堡来客》四本书再往下阅读（事实上这本书说的是，最好是已经有出版过一本书再来读……），所以我先去&lt;del&gt;写了本书&lt;/del&gt;看了&lt;a href=&quot;https://book.douban.com/subject/4893071/&quot;&gt;《荆棘鸟》&lt;/a&gt;。对后者我并没有太多想介绍的，这里就摘抄一些我觉得比较心动的段落。&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;也许人类不具备判断哪样更糟糕的能力：是带着烦躁不安和激动难耐的那种初生乍萌的渴望更糟呢？还是以一种顽强的劲头务求实现其独特愿望更糟呢？&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;其他已读书籍&quot;&gt;其他已读书籍&lt;/h2&gt;

&lt;p&gt;讲到这里，差不多讲完了一半的书。其他并没有很多想讲的，给想打鸡血或者想要获得正能量的朋友推荐一下&lt;a href=&quot;https://book.douban.com/subject/30137430/&quot;&gt;《梵高手稿》&lt;/a&gt;吧！&lt;/p&gt;

&lt;h3 id=&quot;梵高手稿&quot;&gt;《梵高手稿》&lt;/h3&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;h1 id=&quot;你们关心的话题&quot;&gt;你们关心的话题&lt;/h1&gt;

&lt;h2 id=&quot;如何挤时间读书&quot;&gt;如何挤时间读书&lt;/h2&gt;

&lt;p&gt;这个问题我已经回答腻了，但是每次还是有人会问。简单地说——&lt;/p&gt;

&lt;h3 id=&quot;如果读书是一件你需要硬挤时间做的事那求你放过书吧&quot;&gt;如果读书是一件你需要硬挤时间做的事，那求你放过书吧！&lt;/h3&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;h3 id=&quot;我是在什么时间读书的&quot;&gt;我是在什么时间读书的&lt;/h3&gt;

&lt;p&gt;和往年不同，我今年的阅读时间特别碎片化，主要还是因为业余时间更少了。&lt;/p&gt;

&lt;p&gt;因为碎片化的关系，我也更多地使用微信阅读在手机上阅读，这样就有更多的场景可以读书了。比如早晚班车上各 15 分钟，加在一起也有半小时了。晚上有空的话还能读上半小时，周末则四五个小时上不封顶。&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;strong&gt;我同时在读的书可能有十几本&lt;/strong&gt;，有的是电子书有的是实体书，有的是虚构有的是非虚构，类型也差异很多。这样，就把「不想读书」的时刻转成不想读其中的某本书，说不定就有别的书想读。有的时候，一本书因为不太吸引我，被放置太久就不会再读了。我觉得这也没什么关系，本来这世界上的好书就多到读不完，这样的书放着也就放着了，等到哪天有缘的时候再拾起重读也行。当然，缺点就是小说类的比较容易忘记前文情节，非虚构类由于我会记笔记所以问题不大。当然，能不能多线程工作因人而异，你可以尝试找到一种适合自己的方式。&lt;/p&gt;

&lt;p&gt;通常来说，有一本有趣的书就会停不下来，连着几天都读。而不那么有趣的书，可能看了一页就换另一本读了。所以，当你觉得最近不太想读书的时候，不妨看看有什么别的书比较有趣，能吸引到自己。&lt;/p&gt;

&lt;h2 id=&quot;纸质书还是电子书&quot;&gt;纸质书还是电子书？&lt;/h2&gt;

&lt;p&gt;如上文所说，今年使用微信读书的比例大大增加。相应地，Kindle 略有吃灰的嫌疑，只有在微信读书里没有的书的时候再考虑。&lt;/p&gt;

&lt;p&gt;老公年会中了一个新的 Kindle，他就把他之前年会中的（哈哈哈哈）旧 Kindle 给我登录美亚账号了。我买了两本英文书（上文提到的《Writing the Blockbuster Novel》和《圣彼得堡来客》），一波操作猛如虎之后，我发现付的钱比国亚还多……我怎么就没想到先两边搜一下呢，这智商不交税谁交？&lt;/p&gt;

&lt;p&gt;一些有收藏价值的书会买实体书（今年剁手有点多了），读完后如果没价值的就多抓鱼上出掉，腾出空间买新书，耶！本来家里装修的时候我要求设计一整面的书柜的，结果由于现场发现书柜的位置在楼梯的上方，最终利用空间打造成一米多深的柜子。虽然多了好几个立方的收纳空间，但是向往整面大书柜的我只能安慰自己说，要减少自己对实体物品的拥有感，在书柜里的书并不真正属于我，读过的共鸣过的才属于我。&lt;/p&gt;

&lt;p&gt;我对纸质书还是实体书并没有偏执。我喜欢漂亮的书籍装帧和翻实体书的感觉，但是电子书由于便携性也有很大的竞争力。竹简刻书时代的人也会用各种理由拒绝相信竹简会被淘汰，但是只要我们诚实地看看历史，我们就会看到未来。&lt;/p&gt;

&lt;h2 id=&quot;阅读统计图的数据是怎么来的&quot;&gt;阅读统计图的数据是怎么来的&lt;/h2&gt;

&lt;p&gt;这个统计图用的是去年的排版，我今年基本就改了数据和配色。数据是手动统计的，方法也很简单，看一下我豆瓣上过去一年读的书评了几分，回忆一下看的是电子版还是实体书。我有记账的习惯，所以买书的费用只要在记账软件中筛选一下分类就有了。&lt;/p&gt;

&lt;h1 id=&quot;2020-阅读计划&quot;&gt;2020 阅读计划&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;script type=&quot;text/javascript&quot;&gt;
    if (window.innerWidth &lt; 600) {
        var imgUrl = 'http://zhangwenli.com/blog/img/post/2019-12-20-reading-report.jpg';
        var img = document.createElement('img');
        img.setAttribute('class', 'single-img');
        img.setAttribute('src', imgUrl);

        var a = document.createElement('a');
        a.setAttribute('href', imgUrl);
        a.setAttribute('target', '_blank');
        a.appendChild(img);

        var container = document.getElementById('score-chart');
        container.style.height = 'auto';
        container.appendChild(a);
    }
    else {
        var loadJs = [[[
            'http://zhangwenli.com/blog/js/post/2017-12-14-reading-report/echarts.071214.simple.min.js',
            'http://zhangwenli.com/blog/js/post/2019-12-20-reading-report/sunburst.js'
        ], function() {
            var charts = [];

            var scoreChart = getScoreChart('score-chart');
            charts.push(scoreChart);

            window.onresize = function () {
                for (var i = 0; i &lt; charts.length; ++i) {
                    charts[i].resize();
                }
            };
        }]];
    }

&lt;/script&gt;

</description>
                <pubDate>Fri, 20 Dec 2019 00:00:00 +0800</pubDate>
                <link>http://zhangwenli.com/blog/2019/12/20/reading-report/</link>
                <guid isPermaLink="true">http://zhangwenli.com/blog/2019/12/20/reading-report/</guid>
            </item>
        
            <item>
                <title>如何成为 Apache ECharts (incubating) 的 Committer？</title>
                <description>&lt;blockquote&gt;
  &lt;p&gt;本文是 2019.12.07 Apache ECharts (incubating) 在上海举办的第一次线下交流会上我分享的主题的文字稿。视频正在制作中，关注&lt;a href=&quot;https://space.bilibili.com/369508085&quot;&gt;我的 bilibili&lt;/a&gt; 及公众号「羡辙部落格」获得上线通知。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt03.jpeg&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;echarts-在-apache-的孵化进程&quot;&gt;ECharts 在 Apache 的孵化进程&lt;/h1&gt;

&lt;p&gt;ECharts 项目是在 2018 年 1 月加入 Apache 开源基金会（&lt;em&gt;Apache Software Foundation&lt;/em&gt;，下文简称 ASF）开始孵化。从这个表格中，我们可以看到在加入 Apache 前后项目的一些变化。&lt;/p&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt04.jpeg&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;孵化带来的改变&quot;&gt;孵化带来的改变&lt;/h2&gt;

&lt;p&gt;在刚加入 ASF 的那段时间，我们的发版是不太稳定的。不太忙的时候可能一个月发一次版，而很忙的时候则可能半年才发一次版。可能很多 issue 已经被修复合入了，但是由于没有发版，开发者就没法使用。而经过这将近两年的孵化时间，我们的发版频率也变得稳定了。在过去的四个月中，我们都保持了每个月一个版本的发版速度。&lt;/p&gt;

&lt;p&gt;在加入 ASF 之前，来自非核心团队之外的人贡献的 PR 数是非常少的，或者说几乎是没有的。但是在上个版本中，我们已经有三分之一的 PR 是由非初始 Committer 的社区开发者贡献的。&lt;/p&gt;

&lt;p&gt;Contributor 数也从 75 个增长到了 90 个。我们也希望通过今天这样的线下交流会的形式，吸引更多来自社区的贡献者。&lt;/p&gt;

&lt;h2 id=&quot;为什么捐给-apache-开源基金会&quot;&gt;为什么捐给 Apache 开源基金会&lt;/h2&gt;

&lt;p&gt;从这个数据，我们可以发现，我们之所以想加入 ASF，一方面是为了增加用户量。因为如果像 ECharts 这样的项目，如果是在一个公司名下，那么对于有些开发者而言，可能会在选择的时候，由于版权或者其他原因产生一定的顾虑。但是如果把它捐给一个像 ASF 这样的第三方组织，可以增加用户的信任感。&lt;/p&gt;

&lt;p&gt;另一方面，也是为了借助像 ASF 这样成熟开源组织的经验，在社区建设以及产品发展上，给予项目更多帮助。&lt;/p&gt;

&lt;h1 id=&quot;关于-apache-开源基金会&quot;&gt;关于 Apache 开源基金会&lt;/h1&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt05.jpeg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Apache 开源基金会成立于 1999 年，最初的时候就是那个我们很熟悉的 Apache HTTP Server 的项目。至今已经发展了 300 多个项目（含孵化项目），拥有超过 7000 名 Committer。&lt;/p&gt;

&lt;h1 id=&quot;the-apache-way&quot;&gt;The Apache Way&lt;/h1&gt;

&lt;p&gt;我们在提到 Apache 开源基金会的就是——&lt;strong&gt;The Apache Way&lt;/strong&gt;。&lt;/p&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt06.jpeg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;这是 ASF 比较公认的一些处事方式或者原则。&lt;/p&gt;

&lt;p&gt;其中最重要的一条是 &lt;strong&gt;Community Over Code&lt;/strong&gt;。我自己把它翻译为：先社区而后代码。&lt;/p&gt;

&lt;p&gt;在 ASF 看来，社区的价值是高于代码的。当你有一个健康良好的社区的时候，即使你的代码不太完善，它是可以随着社区的贡献逐渐得到完善的。但是反过来，如果社区不够好，再好的代码也会逐渐失去活力而生锈的。&lt;/p&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt07.jpeg&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt08.jpeg&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;为什么要对开源社区做贡献&quot;&gt;为什么要对开源社区做贡献&lt;/h1&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt09.jpeg&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;解决自己碰到的问题&quot;&gt;解决自己碰到的问题&lt;/h2&gt;

&lt;p&gt;对于开源项目而言，绝大部分的贡献者最初都是为了解决自己的问题。对于像 ECharts 这样有非常大量用户的项目，如果等待其他人来修复你的问题，通常需要等待比较久的时间。这时，如果你自己有能力去修改源码，那么就很很快解决自己的问题。&lt;/p&gt;

&lt;p&gt;当你完成源码的修改之后，以 pull request 的形式提交代码，可以让更多人受益于你的贡献。&lt;/p&gt;

&lt;p&gt;从开发者的角度，我们当然比较容易理解，每个人都觉得自己的 issue 是最高优的。但是对我们核心开发者而言，在决定优先级的时候，会高优处理那些报的人比较多的 issue，或者是一些核心功能的问题。&lt;/p&gt;

&lt;h2 id=&quot;加深对项目源码的了解&quot;&gt;加深对项目源码的了解&lt;/h2&gt;

&lt;p&gt;在你自己修改源码之后，能够很大程度上加深对项目的理解。在我加入之前，我也一直想要一个文档，能告诉我源码的各个细节。但后来我理解到，不管是对 ECharts 项目，还是同级别的其他项目，要真正了解源码，还是需要自己动手修改过一些 issue，才能有更深刻的理解。&lt;/p&gt;

&lt;h2 id=&quot;求职时作为加分项&quot;&gt;求职时作为加分项&lt;/h2&gt;

&lt;p&gt;现在我们其实可以在很多的招聘信息中看到有对 ECharts 的要求。那如果你说你使用过 ECharts，可能竞争力就不太大——因为我们每周有 20 万的人使用，对吧？这时候，如果你对面试官说，我修改过 ECharts 的源码，甚至说我还是它的 Committer——这时候你给面试官的印象一定是不一样的！&lt;/p&gt;

&lt;h1 id=&quot;echarts-社区现状&quot;&gt;ECharts 社区现状&lt;/h1&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt10.jpeg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;刚才提到，ECharts 项目每周 npm 下载量 20 万，但是真正参与代码维护的，每个月只有十来个人。这个比例也使得我们现在急需吸纳更多社区贡献者，所以现在加入我们就是最好的时刻！&lt;/p&gt;

&lt;h1 id=&quot;什么是-committer&quot;&gt;什么是 Committer&lt;/h1&gt;

&lt;p&gt;说了这么多，到底什么是 Apache 的 Committer 呢？&lt;/p&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt11.jpeg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;一种最直观的解释是，你能在 GitHub 项目中获得「写」权限，能改分支、维护 issue 等等。&lt;/p&gt;

&lt;p&gt;此外，这也是一种荣誉。比如你可以在 GitHub 中看到「Member」的标志。&lt;/p&gt;

&lt;p&gt;另外一个有意思的点是，「commit」这个单词在英语中有&lt;em&gt;承诺&lt;/em&gt;的意思。所以，从某种程度上说，&lt;strong&gt;成为 Committer 也是你对一个项目长期贡献的一种承诺&lt;/strong&gt;——虽然 ASF 规定，成为 Committer 并不意味着具有任何额外的&lt;em&gt;义务&lt;/em&gt;。&lt;/p&gt;

&lt;h2 id=&quot;如何成为-echarts-committer&quot;&gt;如何成为 ECharts Committer&lt;/h2&gt;

&lt;p&gt;那么，如何成为 ECharts Committer 呢？&lt;/p&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt12.jpeg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;ASF 并没有给成为 Committer 设定具体的要求，比如要提多少个 PR 或者回复多少 issue。因为在 ASF 看来，每个人都能在自己力所能及的范围内贡献不同的价值。比如有的人不会修改源码，但是他帮忙修复了很多文档上的问题，这同样是一种值得肯定的贡献。&lt;/p&gt;

&lt;p&gt;在&lt;a href=&quot;https://github.com/apache/incubator-echarts/wiki/How-to-make-a-pull-request%3F&quot;&gt;这个文档&lt;/a&gt;中，我们详细介绍了如何给源码提 pull request，感兴趣的同学可以关注一下。&lt;/p&gt;

&lt;h2 id=&quot;找到容易修复的-issue&quot;&gt;找到容易修复的 issue&lt;/h2&gt;

&lt;p&gt;我们在 GitHub 上用标签 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;difficulty: easy&lt;/code&gt; 标记了我们认为比较容易修复的问题，通过筛选这个标签，可以更快找到适合初学者修复的一些简单的问题。&lt;/p&gt;

&lt;h2 id=&quot;订阅邮件组&quot;&gt;订阅邮件组&lt;/h2&gt;

&lt;p&gt;邮件列表是我们公开讨论并记录的地方。可以发送任意内容的邮件到 &lt;a href=&quot;dev-subscribe@echarts.incubator.apache.org&quot;&gt;mailto:dev-subscribe@echarts.incubator.apache.org&lt;/a&gt; 进行订阅，参与我们的讨论。详见&lt;a href=&quot;https://echarts.apache.org/zh/maillist.html&quot;&gt;官网文档&lt;/a&gt;。&lt;/p&gt;

&lt;h2 id=&quot;寻求帮助&quot;&gt;寻求帮助&lt;/h2&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt13.jpeg&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;新晋-committer-的例子&quot;&gt;新晋 Committer 的例子&lt;/h1&gt;

&lt;p&gt;这里举两个新加入的 Committer 的例子，大家可以参考一下贡献度。&lt;/p&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt14.jpeg&quot; /&gt;&lt;/p&gt;

&lt;p class=&quot;no-indent center&quot;&gt;&lt;img class=&quot;full-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-12-18-how-to-be-an-echarts-committer/ppt15.jpeg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;SnailSword 给我们提了四个 pull request，没有其他方面的贡献。Clement 更多的是文档方面的修改以及参与我们的讨论。&lt;/p&gt;

&lt;p&gt;这些都能成为在考量 Committer 贡献时候的指标，重要的是让我们看到你想积极加入，并且能够持续贡献的态度。&lt;/p&gt;

&lt;h1 id=&quot;最后&quot;&gt;最后&lt;/h1&gt;

&lt;p&gt;成为 Committer 不是最终的目标，而是对一个社区贡献者已经做出贡献的肯定，更是对未来能够共同更好地一起维护社区的一种承诺。&lt;/p&gt;

&lt;p&gt;希望能有更多的人从开源的受益者转变为贡献者的身份，和我们一起带领 ECharts 走向世界！&lt;/p&gt;
</description>
                <pubDate>Wed, 18 Dec 2019 00:00:00 +0800</pubDate>
                <link>http://zhangwenli.com/blog/2019/12/18/how-to-be-an-echarts-committer/</link>
                <guid isPermaLink="true">http://zhangwenli.com/blog/2019/12/18/how-to-be-an-echarts-committer/</guid>
            </item>
        
            <item>
                <title>六年个人网站改版总结</title>
                <description>&lt;p&gt;我几乎每年都会更新一版个人网站。在 2017 年上一次改版的时候，我曾经很狂妄的放出话说：「这次的设计可能以后都很难突破了怎么办？」&lt;/p&gt;

&lt;p&gt;果然我在 2018 年并没有更新个人网站的设计……&lt;/p&gt;

&lt;p&gt;好在 &lt;a href=&quot;http://zhangwenli.com&quot;&gt;2019&lt;/a&gt; 年不用再交上白卷。&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/2019-full.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;下面就和大家一起来分享一下我用了 10 个月完成的像素复古风个人网站的技术实现，以及 6 年半建站经验的心得。&lt;/p&gt;

&lt;p&gt;从 2013 年 1 月我正式在 GitHub 上新建了个人网站，2 月份我购买了 zhangwenli.com 的域名，至今已经有 6 年多的时间了。当初之所以每年都会更新一版的设计，主要也是因为每年都会有不同的想法，再加上新看到的一些设计思路以及在编程技术方面的成长，都会让我萌生想要更新个人网站设计的想法。所以说，更新个人网站可能并不是一个给自己的计划。&lt;/p&gt;

&lt;p&gt;不过我很高兴能看到，这么多年来通过自己持续的改进，个人网站和自己的技术能力都能有所提升。其实在每年设计的时候，基本上都是对自己的作品比较满意的，相反，倒是过了这么多年之后，回过头去看自己的作品，才会发现到有哪些不足的地方。所以这篇文章一方面是想要和大家分享一下今年设计中的技术实现思路的干货，另外一方面也是想要回顾一下在往年的作品中的不足之处。&lt;/p&gt;

&lt;p&gt;接下来的文章我会首先介绍一下，今年的这一版设计中的设计思路和技术实现的小技巧；然后如果大家感兴趣的话，我也会再分享一下，在制作过程中的小故事。&lt;/p&gt;

&lt;h1 id=&quot;2019-版个站的技术干货分享&quot;&gt;2019 版个站的技术干货分享&lt;/h1&gt;

&lt;p&gt;很多人可能会感兴趣，这个像素画是怎么画出来的。但其实它可以分为几个不同的部分，每个部分的技术实现都不太相同，那么接下来我就会分别介绍一下。&lt;/p&gt;

&lt;h2 id=&quot;像素风应用图标&quot;&gt;像素风应用图标&lt;/h2&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/apps.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;首先我想讲一个最没有技术含量的部分，就是——应用图标的像素风格是怎么制作的。&lt;/p&gt;

&lt;p&gt;它的答案很暴力，就是——是在 Photoshop 中一个一个像素画出来的。&lt;/p&gt;

&lt;p&gt;会不会有些失望？我们作为程序员可能很多时候都会从技术实现的角度去思考问题，不过&lt;strong&gt;重要的不是通过什么技术解决，而是怎样能实现最好的效果&lt;/strong&gt;。如果手绘的效果是最好的，那么我就会选择手绘。事实上我的确可以通过一些自动化的方法去生成这样的图片，但但效果肯定没有手绘的好，而这些图片是个人网站设计中，几乎最关键的部分，所以一定要花心思把它们通过手绘的方式画好。&lt;/p&gt;

&lt;p&gt;上面这张截图是大家看到的，网站上的实际效果。而下图则是我在 Photoshop 中实际画的图片（真实大小）。&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;post-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/app-icon-all.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;大家在这张图片中看到的一个最小方块就是实际的一个像素。在 CSS 中我会把这个图片通过背景图片应用到 App 上，并且进行缩放。在缩放时设置了 CSS 样式 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;image-rendering: pixelated;&lt;/code&gt;，使得缩放的过程中采取了最近邻缩放（也就是使用它最接近的像素点去插值）。通过这样的效果，图片在放大之后就会保留像素的风格，而不会被周围的像素模糊化。&lt;/p&gt;

&lt;p&gt;在绘制的过程中，我我会把按钮的地图放在我要绘制的图标下方作为参考，这可以让我知道绘制的结果。&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/photoshop.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/buttons.png&quot; /&gt;实际在保留图片的时候只保留了按钮的内容部分，并没有保留按钮的样式。按钮部分被保存在一张单独的图片中，用来实现按下按钮的效果。通过将按下按钮时，改变背景图片的方式就能实现按钮按下的效果了。&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/click.gif&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;像素风相册缩略图&quot;&gt;像素风相册缩略图&lt;/h2&gt;

&lt;p&gt;我想分享的第二方面的技术实现是相册部分。&lt;/p&gt;

&lt;p&gt;相册部分因为图片的颜色各异，很难保持和整体一致的风格。因此在缩略图的时候，我就写了一个脚本，将图片生成出一张和整体颜色相同的图片。&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/sunglass.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;这部分的代码也开源在 &lt;a href=&quot;https://github.com/Ovilia/sunglass&quot; target=&quot;_blank&quot;&gt;https://github.com/Ovilia/sunglass&lt;/a&gt;，大家感兴趣的话，可以自己查看一下源码。&lt;/p&gt;

&lt;p&gt;基本的思路是，将图片中的每一个像素点，找到我给定的调色板（palette）中最接近的一个颜色，然后将其替换。&lt;/p&gt;

&lt;p&gt;大家如果观察仔细的话，还会发现这种算法，虽然简单，但是对一些图片的效果可能不是很好，比如说有的图片可能出现全白的现象。这个可以写个改良版的颜色均衡化处理（对应调色板颜色的均衡化），不过其实不是很影响所以我就没实现。&lt;/p&gt;

&lt;p&gt;至于打开图片后，出现的马赛克消失的效果就非常简单了。将图片上方覆盖一个白色的 Canvas，然后通过动画，每次随机地擦除一些方块，就能实现这一效果了。&lt;/p&gt;

&lt;h2 id=&quot;像素风边框生成&quot;&gt;像素风边框生成&lt;/h2&gt;

&lt;p&gt;可能大家不会想到的是这个网站技术难度最高的，其实是一个大家很容易忽略的细节，那就是像素边框的生成。&lt;/p&gt;

&lt;p&gt;没错，就是这样，一个像素宽的圆角边框。&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/border.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;先给大家两分钟，自己思考一下，如果让你实现这样的边框有什么办法呢？需要注意的是，由于它会作用于各种不同的对象，所以它的大小是不固定的。圆角的大小也是不固定的。&lt;/p&gt;

&lt;p&gt;我不知道有没有更简单的实现方式，如果大家想到的话也可以告诉我。我实际采用的方式是，通过绘制 Canvas，得到包含像素边框的图片，然后将这个图片作为背景图。那么算法最关键的部分就是如何通过 Canvas 生成这样的像素边框。为了尽可能的减少资源，和之前图标的背景图的想法是相同的，大家看到的一个小方块就是一个像素点，然后通过缩放和设置 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;image-rendering: pixelated;&lt;/code&gt; 生效。具体的情况可能很复杂，比如说有的时候我们希望左上角没有圆角，而其他三个角，有不同的，半径的圆角。虽然说他是技术难度上最复杂的，但其实也就是一些仔细的计算，只要知道了拐角处的路径，那么就是通过路径绘制就可以了，只是算的时候需要非常认真细心。&lt;/p&gt;

&lt;h2 id=&quot;聊天机器人&quot;&gt;聊天机器人&lt;/h2&gt;

&lt;p&gt;&lt;img class=&quot;post-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/2017-dialog.png&quot; /&gt;2017 版的设计就有人提问是如何实现聊天机器人的效果。当时我的实现方案是写了一个 JSON，在这个文件中定义了所有可能的问题和答复，以及当用户答复时我的反馈。用户只能在其中选择一个回答，因此所有的聊天路径都是可预知的，我只要根据用户的回答找到对应的答复的条目就可以了。&lt;/p&gt;

&lt;p&gt;今年这一版的设计优化了一下这一方案，但它在本质上也是相同的，只不过在实现层面更加方便一些。去年我自己定义的这个格式，其中有一个最大的问题是，我用ID规定了相应的答复条目，但是当这个文件非常长的时候，我在编辑的时候，其实已经很难上上下下的找到他对应的地方，而且自己手写 JSON 很容易出错。&lt;/p&gt;

&lt;p&gt;在今年的这一版中发现了一个很好用的工具叫做 &lt;a href=&quot;https://github.com/inkle/inky&quot;&gt;Inky&lt;/a&gt;。他本来是用在叙事游戏中生成脚本的，但是对我的这个应用场景而言，恰好是可以使用的。&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/inky.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;因此我只需要照着它的格式，就可以生成交互的路径，最终可以通过这个工具导出一个 JSON，并且使用 js 调用这个JSON，就能够实现路径的跳转。&lt;/p&gt;

&lt;p&gt;不知道上面说的这些技术实现对大家有没有帮助呢，我觉得虽然这些技术很可能是我们在做业务的时候并不太会做到的需求，但是其中的一些思维还是可以借鉴的。总结一下，我觉得就 2019 年的这版而言，我做的过程中还是感觉到有一定的技术难度的，但是也没有多特别难，难到没有头绪。而最终组合在一起的效果看起来就会很复杂，感觉很高级。事实上，不过是别人没有尝试过把这些东西组合在一起而已。这样想的话，其实创新也并没有那么难。&lt;/p&gt;

&lt;p&gt;接下来，我想介绍一下，为什么我会想到今年的这一版的设计风格。&lt;/p&gt;

&lt;h1 id=&quot;2019-版构思&quot;&gt;2019 版构思&lt;/h1&gt;

&lt;p&gt;这两年我比较喜欢玩像素风格的游戏，这一点可能很大程度上也是受到了钰猫的影响。之前我觉得我也并不是很能接受像素风格的艺术。但是一旦了解了如何去欣赏的方法之后，就会发现，像素风其实是一种很典型的，用简洁的设计表现艺术的有效途径。&lt;/p&gt;

&lt;p&gt;要说今年的这一版设计，就要先回顾到 2017 年的个人网站设计。2017 年的时候我设计了一款聊天交互型的个人网站，现在我们可以用一个词，聊天机器人，就能够很方便地让你理解到它的定位。&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/2017.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;但是在当时，其实这样的产品并不是很多。而我之所以能想到这样子一个设计，主要是想要表达：在社交网络上，一个陌生人了解到的我，和我的微信好友，通过聊天了解到的我，这两者的差别，到底有多大呢？所以就想说，做一个个人网站，你可以通过聊天界面，就好像在和我交流一样。&lt;/p&gt;

&lt;p&gt;这一版的效果很好，当然很大程度上也有赖于，聊天对话中我刻意添加了很多幽默的元素，使得这一个聊天机器人，并不像一般的机器那么冷血，会让人更加感觉像和真人在聊天。它的实现原理也很简单，就是通过一个 JSON 文件，把聊天的所有内容，都写在里面，用户能做的选择只是在这个预先写好的脚本中，做有限的选择。所以它并不是一个真正意义上的聊天机器人，因为你无法任意输入。但是这并不妨碍它成为一款有趣的个人网站应用。&lt;/p&gt;

&lt;p&gt;因为我对 2017 年的这一版挺满意的，所以比较长的一段时间内都没有萌生想要去修改它的想法。之后在和钰猫讨论我如何还能再次改版我的设计的时候，就碰撞出了这个灵感——把我的个人网站做成一个手机应用！不同的 APP 就是了解我不同社交网站或者作品的入口——我觉得这是一个很有意思的想法，并且它还能和我 2017 年的这一版，聊天机器人结合在一起。&lt;/p&gt;

&lt;p&gt;于是就开始一边设计，一边实现。最开始的想法是，模拟 iOS 手机的界面。我已经实现到了还原度比较高的效果，但是整体来讲并没有特别让人眼前一亮的地方——因为它毕竟太像我们熟悉的手机系统了。于是又经过了一段时间，我想到了，用当时比较感兴趣的像素风去实现手机系统。&lt;/p&gt;

&lt;p&gt;我花了两个月的时间，基本上实现了想要的效果，剩下的工作量主要就是画像素画和添加文本内容。而我实际之后又花了 8 个月的时间完成这一部分的工作——当然主要是由于拖延症的关系。直到前几天的某一个晚上，我想继续画几个应用图标，用了两个小时，画了 6 个。然后不知道怎么突然意识到好像差不多就完成剩下的工作了，于是又花了一个小时完善了一下，居然这就发布了……&lt;/p&gt;

&lt;p&gt;我不知道大家会不会这样，我个人的经验就是，有时候觉得一件事情剩下的工作量特别大，然后就不太想做，一直拖延着。但其实如果真的去做的话，会发现实际需要的时间也并不长。所以需要保持做下去的惯性，这一点很重要。&lt;/p&gt;

&lt;h1 id=&quot;6-年-5-版个人网站心得&quot;&gt;6 年 5 版个人网站心得&lt;/h1&gt;

&lt;p&gt;我觉得个人网站是一个很好的练手的平台，因为相比于设计其他产品可能受到各种因素的掣肘，个人网站就是一个非常私人的东西——你想要向大家怎么样表现自己，表现一个怎么样的自己，这个都是可以通过个人网站反映的。所以，一些很夸张、很过度的设计也可以应用到个人网站中——只要我喜欢！所以，不管你是前端工程师想要找个项目练练手，还是作为自己的作品得到别人的认可等等原因，做个人网站都是一个很好的方式。&lt;/p&gt;

&lt;p&gt;最后我想谈一下，做了 6 年个人网站的一些心得。&lt;/p&gt;

&lt;h2 id=&quot;2013&quot;&gt;2013&lt;/h2&gt;

&lt;p&gt;&lt;img class=&quot;post-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/2013.png&quot; /&gt;最初我在 2013 年做个人网站的时候，我本科还没有毕业，当时已经有一些做网页的基础了，想要把自己的综合能力运用起来，做一个能够表现自己特色的个人网站。于是当时我做了这样一个，我现在看起来已经是丑的不能接受的个人网站……大家看看小图感受下即可，或者访问 &lt;a href=&quot;http://zhangwenli.com/2013&quot;&gt;http://zhangwenli.com/2013&lt;/a&gt;。&lt;/p&gt;

&lt;p&gt;那时候我特别喜欢老子道德经之类的东西，于是这个网站的设计，也很大程度上来源于此。当然我现在去看的时候我会觉得有很多地方的设计非常的粗糙，也能提出一些简单却非常行之有效的方法对其进行改善，但是当时的我其实也是对自己的作品比较满意的，还提交了一个css的网站比赛……还拿了一个提名奖……&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;我觉得有一件非常有价值的事就是，在这么多年的不断改进设计中，绝大部分的设计都被抛弃了，但是每年都会留下一些我仍然觉得不错的东西，那么经过五六年的时间，沉淀下来的可能就是，我个人确实非常喜欢，或者我觉得有价值的东西。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;比如说，就 2013 年的这一版而言，其中绝大部分的东西都被抛弃了，但是这个纸质的旋转的效果，一直保留到我今天的博客中仍然在使用。我接下来准备把博客的风格也改为和主页一致的像素风格，但是我仍然准备保留下这种纸片的旋转的效果。至于这种效果的技术实现，其实也非常简单，就是加两个额外的 DIV，对它们进行一定角度的旋转，使得它们看起来的效果就好像是底下的几两张纸，而又正好不露出来。&lt;/p&gt;

&lt;h2 id=&quot;2014&quot;&gt;2014&lt;/h2&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/2014.gif&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://zhangwenli.com/2014&quot;&gt;2014&lt;/a&gt; 版的设计还是和道家思想有关，和光同尘源于「和其光，同其尘」这句话，通俗地讲就是和周围散发出相等亮度的光，不要过度张扬。&lt;/p&gt;

&lt;p&gt;这一版的设计的想法就是通过鼠标的位置控制阴影的位置，然后就好像鼠标是一个光源一样，只有当鼠标靠近中心的时候才会看到文字。这也是与「和其光」的概念是相等的，你只有足够靠近的时候才能看到那个真正的我。&lt;/p&gt;

&lt;h2 id=&quot;2015&quot;&gt;2015&lt;/h2&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/2015.gif&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://zhangwenli.com/2015&quot;&gt;2015&lt;/a&gt; 版的个人网站主要的设计思路是通过纯 CSS 的方式实现一个动态的样式转换，如果鼠标在左侧就会高亮左侧，如果鼠标在右侧就会高亮右侧。&lt;/p&gt;

&lt;h2 id=&quot;2016&quot;&gt;2016&lt;/h2&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-06-15-5-personal-website-designs-in-6-years/2016.gif&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://zhangwenli.com/&quot;&gt;2016&lt;/a&gt; 版的设计比较有意思，它是一个通过 SVG 的动画实现的，绘制我的个人logo的效果。&lt;/p&gt;

&lt;h2 id=&quot;小结&quot;&gt;小结&lt;/h2&gt;

&lt;p&gt;其实可以发现之前这几年的设计，都是一个比较小的创意的点，然后加了一些社交网站的链接，这样的设计。所以从 2017 年开始做比较复杂的聊天机器人，也算是一个突破吧！&lt;/p&gt;

&lt;p&gt;那么 2020 版的个人网站会是什么样子呢？我也很期待，但是我现在不会像 2017 年那样担心说，觉得以后不能突破了怎么办？因为我知道随着阅历的增长，知识的积累，一定是能够想出更棒的创意的。&lt;/p&gt;

&lt;p&gt;我还记得我在 2013 年的时候搜了很多，如何增长博客流量的方法。最后的结论是，最根本的还是能够持续地创造有价值的内容，并且需要一定时间的积累。其实子有句话曰得很好：「不患人之不己知，患不知人也」。如果自己本身不是一个有料的人，那么被再多人了解到的也不过是一个皮囊而已。如果自己的内心世界足够丰富，那么又何必在意，是不是被别人了解呢？&lt;/p&gt;

&lt;p&gt;——这就是为什么我很久没写博客的原因吧？&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;PS：本文是我第一次尝试用语音识别的方式生成的文章，感觉比打字快很多，但是有时候可能有些错别字，请大家谅解。另外感觉打字和说话的文风也不太一样，我更喜欢打字的文风吧。你有没有感觉出区别呢？多多给我留言吧！&lt;/p&gt;
&lt;/blockquote&gt;
</description>
                <pubDate>Sat, 15 Jun 2019 00:00:00 +0800</pubDate>
                <link>http://zhangwenli.com/blog/2019/06/15/5-personal-website-designs-in-6-years/</link>
                <guid isPermaLink="true">http://zhangwenli.com/blog/2019/06/15/5-personal-website-designs-in-6-years/</guid>
            </item>
        
            <item>
                <title>2019 月度小结：三月</title>
                <description>&lt;h2 id=&quot;水彩&quot;&gt;水彩&lt;/h2&gt;

&lt;p&gt;这个月真是水彩之月啊！画了这么多……&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-04-09-march-report/1.png&quot; /&gt;
&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-04-09-march-report/2.png&quot; /&gt;
&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-04-09-march-report/3.png&quot; /&gt;
&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-04-09-march-report/4.png&quot; /&gt;
&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-04-09-march-report/5.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;除了之前买的白夜艺术家级 24 色、DS 矿物 6 色之外，这个月又买了鲁本斯艺术家级 24 色。冲着试色视频鲜亮的颜色种草的，但这个鲁本斯的颜料其实不是很好（毕竟价格摆在那里），画完干了之后会变淡，怎么都画不深。所以估计等我再买点别的颜料（暴露了真正目的），就把这个卖了好啦~&lt;/p&gt;

&lt;p&gt;相比之下，一些其他的爱好就被再次搁置了，比如钢琴和写作。下个月一定要捡起来了，不然就意味着真的弃坑了……&lt;/p&gt;

&lt;p&gt;其实之所以这个月画了这么多水彩，和一些爱好被搁置，本质上的原因都是一样的。那就是，在某个时间段内，会有一些事情让我感觉到很顺手，能获得成就感，这样的事就更容易自觉地去做。一旦形成了惯性，就比较可能会坚持，而捡起很久没做的事情则需要更大的动力。&lt;/p&gt;

&lt;p&gt;我画画并不是为了成为很棒的艺术家，但这并不会让这件事失去价值。我选择的这些爱好也并不全是兴趣使然，我相信在某个人生阶段，它们会派上用处的。&lt;/p&gt;

&lt;p&gt;在学习画画的过程中，我也学到了很多技术之外的知识。比如我最近最喜欢的画家 Marco Bucci，他在教画画的视频中有提到一个观点，让我觉得印象非常深刻——当你有一位很喜欢的大师的时候，你不应该直接去模仿他的作品，而是应该学一些可能并不相关的其他知识。因为如果你直接去模仿他，那么你很可能永远都没法超越他。&lt;/p&gt;

&lt;figure class=&quot;half-img&quot;&gt;
    &lt;img src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-04-09-march-report/mine.jpeg&quot; /&gt;
    &lt;figcaption&gt;我模仿的结果&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;half-img&quot;&gt;
    &lt;img src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-04-09-march-report/marco-bucci-owelsii.jpg&quot; /&gt;
    &lt;figcaption&gt;Marco Bucci 的画&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;所以，他没说错……&lt;/p&gt;

&lt;p&gt;我画不下去了……不过他还说过，每当有人夸他特别有画画天赋的时候，他知道那不是真的，因为曾经的他也是一个不会画画的人。只有通过不断的练习，才能获得高超的技巧，而这一切可能在别人看来，不过就是天赋罢了。&lt;/p&gt;

&lt;p&gt;所以，我也不会太纠结我怎么没别人画得好之类的。因为在此之前我几乎没怎么专门练习过画画，如果就这样还能比科班学了好多年的人画得还好，那对别人岂不是很不公平？&lt;/p&gt;

&lt;h2 id=&quot;和外国友人视频&quot;&gt;和外国友人视频&lt;/h2&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-04-09-march-report/video.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;因为 ECharts 的关系需要和外国开发者视频沟通，这次是第一次和老外开视频会议。感觉难度比当面的沟通和电话沟通都大，口语能力也比印象中有退步，毕业后没什么机会开口。克服一下心理上的恐惧，把每个月一次的视频会议当做练口语的机会也挺好的……&lt;/p&gt;

&lt;h2 id=&quot;其他流水账&quot;&gt;其他流水账&lt;/h2&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;
</description>
                <pubDate>Tue, 09 Apr 2019 00:00:00 +0800</pubDate>
                <link>http://zhangwenli.com/blog/2019/04/09/march-report/</link>
                <guid isPermaLink="true">http://zhangwenli.com/blog/2019/04/09/march-report/</guid>
            </item>
        
            <item>
                <title>2019 月度小结：二月</title>
                <description>&lt;p&gt;二月份的月度小结拖到了三月中旬才写。照这样下去，说不定三月份的小结就是五月份看到了……本来记性就不好，最近每日流水账也懒得记半个月了，所以不得不翻着各种社交软件来看我都做了些啥……&lt;/p&gt;

&lt;p&gt;Anyway……如果没看过一月份小结的，我简单说下——这个月度小结主要是为了让我自己记录一下做了些什么事的，可能比较无聊，也不会刻意写得更有趣一些。总之就是随便写的，你们也随便看吧~&lt;/p&gt;

&lt;h2 id=&quot;个人项目&quot;&gt;个人项目&lt;/h2&gt;

&lt;h3 id=&quot;2019-字体日历&quot;&gt;《2019 字体日历》&lt;/h3&gt;

&lt;p&gt;3 月 8 号的时候，被苹果 App Store 首版推荐了一下。哎等等……这个应该写到三月份的小结里吧？嗯……那下个月再说……这就是拖延写月度总结的下场啊！Price Tag 也对我作了专访，这个是二月份的可以写，哇咔咔~&lt;/p&gt;

&lt;p&gt;总体感觉做 iOS 开发还是属于用心做好产品，就能被认可的。虽然赚的钱比较少，离能全职养活自己还差得远。但是能业余做一些自己觉得有意思的应用，甚至当别人也觉得有用的时候，还是很有成就感的。保持着两周左右更新一版的频率，主要因为日历内容还在不断地赶工。拖延症啊……&lt;/p&gt;

&lt;p&gt;之前有把设计和开发录屏，打算做成开发日志的视频。但是因为所有的文件大小太大了，iMovie 里编辑还会复制一遍……磁盘空间不够，估计还是得在 Windows 台式机上搞。想想有点麻烦，不知道什么时候能做出来。&lt;/p&gt;

&lt;p&gt;这个 App 收费 1 元，比收费 6 元的「牙哈哈心情日记」的收入还是少一些。下一个 App 可以考虑下免费+内购的形式。说起下一个 App，有个想法已经酝酿了几个月了。但是坑比较大，所以一直也没开始动手。打算等我改版好个人网站之后再开新坑。&lt;/p&gt;

&lt;h3 id=&quot;个人网站改版&quot;&gt;个人网站改版&lt;/h3&gt;

&lt;p&gt;&lt;img class=&quot;half-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-03-11-february-report/personal-site.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;目前正在改版去年份的个人网站（计划每年更新一版）……哎，坑太多，实在填不过来……&lt;/p&gt;

&lt;p&gt;这是一个复古像素画风格的设计。技术难题其实去年都已经解决了，剩下的就是内容性的修改。这个坑填完之后，还会把博客的风格也改一下，并且整理一个个人作品页面。预计六月底搞定这几件事吧。&lt;/p&gt;

&lt;h3 id=&quot;readfree-豆瓣传送门chrome-插件&quot;&gt;「ReadFree 豆瓣传送门」Chrome 插件&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/Ovilia/readfree-chrome-extension&quot;&gt;更新了几版&lt;/a&gt;，现在能在豆瓣看到 ReadFree 有哪些格式的书可以下载了。&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-03-11-february-report/readfree.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;当然，还是推荐大家购买正版啦！只是有时候一些书买不到正版，或者在买正版（纸质书或电子书）之前想预览一下，这个网站还是很方便的。现在已经不开放注册了，因为站长想要低调一点。&lt;/p&gt;

&lt;p&gt;说起来，站长也够有意思的。因为做插件沟通接口的事，我跟站长邮件沟通了几次。有次我问他，应该怎么称呼他，因为邮件就是 admin@xxx。结果他说 Admin 挺好的……&lt;/p&gt;

&lt;h2 id=&quot;爱好&quot;&gt;爱好&lt;/h2&gt;

&lt;h3 id=&quot;水彩&quot;&gt;水彩&lt;/h3&gt;

&lt;p&gt;之前去婺源旅游就是为了画白墙黑瓦，回来了几个月才终于画了第一幅。感觉一般吧，希望以后画得更好~&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;single-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-03-11-february-report/wuyuan.jpg&quot; /&gt;&lt;/p&gt;

&lt;p&gt;用的是 DS 的沉淀水彩，之前看《角落·熬路水彩旧画》时种草的。然而还有几款种草的水彩，忍住啊忍住！&lt;/p&gt;

&lt;p&gt;设计师同事买了 New iPad Pro，每天坚持画画，而且画得好好啊。我也有点心动，但是实在不能开新坑啦，我还是先把水彩的坑好好坚持下去。想想七千到九千的 iPad，用来买水彩的话，可以买好几套 48 色艺术家级史明克了……这样想想我又忍不住想剁手买水彩了……&lt;/p&gt;

&lt;h3 id=&quot;其他&quot;&gt;其他&lt;/h3&gt;

&lt;p&gt;二月练琴少了点，希望三月份可以保持练习。&lt;/p&gt;

&lt;p&gt;小说又搁置了，三月份至少写一篇吧……&lt;/p&gt;

&lt;h2 id=&quot;工作&quot;&gt;工作&lt;/h2&gt;

&lt;p&gt;做了一个 ECharts 机器人，用来管理 GitHub 上的 issue。现在维护的工作量小多了，不符合规定的机器人会帮忙关闭。&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;post-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-03-11-february-report/github.png&quot; /&gt;以前我 GitHub 这个雷达图几乎只有 commits 的，现在其他几个维度也有贡献了。&lt;/p&gt;

&lt;p&gt;现在 GitLab 的人在用 ECharts 开发，他们很热心地帮忙做一些 PR，我们也会给一些优先的客服支持，感觉是挺好的社区建设的起步。他们会在邮件列表里提各种改进意见，因为会被 Apache 的导师看到，有时候觉得压力还挺大的。但这也是督促着我们更好地做好社区建设的方法，而不是只专注在代码功能方面。另外一方面，还能锻炼用英语沟通的能力，我还挺乐意做这些沟通性的杂事的。&lt;/p&gt;

&lt;p&gt;GitLab 的人还提议每月电话（不会还要视频吧……）沟通一次，这个压力就更大了。毕竟之前及时是即时沟通软件，也是打字的，要开口说话还是有点慌的~&lt;/p&gt;

&lt;p&gt;坚持用「墨墨背单词」三个月了，每天加上复习的单词总共 50 个。由于不断复习，平均学新词也就 5-10 个吧。我记性不好，多了实在背不下来……另外也在想办法练口语，不过还在琢磨好的方式。背单词一开始只是作为游戏一样（因为有每日打卡），但是最近跟老外沟通有点多，感觉还是需要拳不离手一点。倒不是说要增加词汇量（词汇量对口语交流作用比较有限，尤其是背高级词汇其实没什么用），更多的是在养成「我对我的英语有自信，不用害怕用英语沟通」心理——嗯，我就是这么自欺欺人。&lt;/p&gt;

&lt;h2 id=&quot;游戏&quot;&gt;游戏&lt;/h2&gt;

&lt;p&gt;过年期间买了 RimWorld，一款末日生存类游戏，过年加最近的周末玩得特别入迷（工作日晚上是根本没空玩的）。&lt;/p&gt;

&lt;p&gt;我发现我喜欢玩的游戏大部分都是一个类型的：饥荒、模拟人生、RimWorld、缺氧、Sheltered、Factorio、模拟城市、Banished、监狱工程师（按大致游戏时长排序）等等……基本上就是模拟类、经营类、末日类——如果这三者有重叠的话，喜欢的概率就更大了。&lt;/p&gt;

&lt;p&gt;最近玩 RimWorld 有个新玩法。我把里面的人物用 Mod 改了名字和属性，角色改成了《红楼梦》里面的人物。但是很快我发现，这样人物属性配合很不合理，因为都是些社交、智识属性非常高，但是射击、格斗显然主角们都不行了……所以我只能退而求其次，一开始的人物用了贾宝玉、林黛玉、贾芸、林小红，属性上也做了一些调整，但也足够有意思了！然后昨天把贾芸给弄死了，之前他已经和小红结婚了，然后小红心情一直接近崩溃……贾宝玉和林黛玉也结婚了，好开心~ 然后由于属性的问题，我让林黛玉一直做毒品，这也挺有意思的……&lt;/p&gt;

&lt;p&gt;买了一个桌游模拟器游戏 Tabletop Simulator，但是没有朋友……如果有比较会玩的，可以带带我吗？&lt;/p&gt;

&lt;h2 id=&quot;阅读&quot;&gt;阅读&lt;/h2&gt;

&lt;h3 id=&quot;尤利西斯&quot;&gt;《尤利西斯》&lt;/h3&gt;

&lt;p&gt;二月初开始读的，因为今年的主题是跟着《文学讲稿》阅读。读了三章左右实在读不下去了……好吧，就当体验下文风吧。或许再过几年说不定还有缘再读下去。&lt;/p&gt;

&lt;p&gt;《尤利西斯》从文学内涵上很大程度上致敬了《荷马史诗·奥德赛》。书名「尤利西斯」是《奥德赛》中英雄奥德修斯的拉丁文，而《尤利西斯》正文中则从没出现一位名叫尤利西斯的角色——这点还挺有意思的。我甚至还买了《荷马史诗》，还没开始看，估计也是吃灰的命哈哈……&lt;/p&gt;

&lt;h3 id=&quot;变形记&quot;&gt;《变形记》&lt;/h3&gt;

&lt;p&gt;弃坑后读的是《文学讲稿》里的另一篇——《变形记》。才知道原来《变形记》算是中短篇，这本书是包含了其他中短篇小说的。不一定会读完，但是至少会把《变形记》读完。&lt;/p&gt;

&lt;p&gt;之前对《文学讲稿》评价特别高，但是后来看它讲《尤利西斯》、《变形记》，更多像剧情介绍，而不像文学批评，还是有点失望。尤其是，介绍《变形记》的篇幅好像都不比原作短多少。以至于当我发现《变形记》这么短的时候，还是很震惊的。不管怎么说，今年还是会把《文学讲稿》读完，然后里面介绍到的书，有缘分的就读完，读不下去的至少也要找到原文读几个章节，感受下文学风格。&lt;/p&gt;

&lt;h3 id=&quot;基地&quot;&gt;《基地》&lt;/h3&gt;

&lt;p&gt;读完了第一本，觉得非常有趣，脑洞的风格个人感觉非常像刘慈欣的作品。这类书还是要早读，因为随着科技的不断进步，本来在作者那个年代很不可思议的幻想，到后来都成了现实，就感受不到作者脑洞的惊人之处了。&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;post-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-03-11-february-report/sf.jpg&quot; /&gt;之前读过阿西莫夫的《永恒的终结》，虽然我已经不记得剧情了（觉得我这种记性不好的人读小说好浪费时间啊~），但印象中评价很高。于是看到亚马逊上这个 32 本科幻套装（含 15 本《基地》系列）59.99 RMB，我就毫不犹豫地剁手了。&lt;/p&gt;

&lt;p&gt;看完《基地》第一本之后，我按大部分读者推荐的以阿西莫夫的写作顺序阅读，第一本是《苍穹微石》。但是这本明显就没有那么有吸引力，虽然设定我还是很喜欢的（地球在很多年后由于辐射成为一个平民窟，人类在扩张到银河系其他星球之后，已经忘记了人类的起源来自地球）。现在还在继续读。&lt;/p&gt;

&lt;p&gt;由于上面说的这个 32 本的套装，在 Kindle 上居然是打包在一本书里的……这个就很坑，看不到章节名字，只有书名，而且进度始终是 1% 的心情是很崩溃的……&lt;/p&gt;

&lt;p&gt;今年的阅读主题基本上就是科幻经典加上《文学讲稿》及其中涉及到的文学作品。&lt;/p&gt;

&lt;p&gt;好啦，以上就是二月份的小结了，希望三月份也要充实一点呀！&lt;/p&gt;
</description>
                <pubDate>Mon, 11 Mar 2019 00:00:00 +0800</pubDate>
                <link>http://zhangwenli.com/blog/2019/03/11/february-report/</link>
                <guid isPermaLink="true">http://zhangwenli.com/blog/2019/03/11/february-report/</guid>
            </item>
        
            <item>
                <title>2019 月度小结：一月</title>
                <description>&lt;p&gt;我是一个记性很不好的人，所以写年度小结其实会遗漏很多事情。我也尝试过写日记，不过工作后的日子实在是昨天就像今天，今天又像明天，没什么可写之处。于是折中一下，学习我的闺蜜天天写个月度小结。但是我一个月下来也会不记得发生了什么事，所以每天就写流水账似的写下做了哪些事，提了哪些 commit。月度小结也会流水账一些，希望不会无聊到你。&lt;/p&gt;

&lt;h2 id=&quot;2019-字体日历&quot;&gt;《2019 字体日历》&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://zhangwenli.com/2019-typography-calendar/?ref=blog-0203&quot;&gt;&lt;img class=&quot;half-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-02-03-january-report/website800.png&quot; /&gt;&lt;/a&gt;这是我在苹果 App Store 上架的第二款 App。&lt;/p&gt;

&lt;p&gt;我本来只是打算简单介绍一下的，结果写了非常长的相关内容，所以打算这部分之后单独成篇。这里就简单剧透一下吧！&lt;/p&gt;

&lt;p&gt;2019 年 1 月 4 日上架以来，总共卖出了 1.6 万份（其中 1.2 万份是 24 号生日那天限免「卖」出的）。收入大约 ￥2852（考虑到日历的属性，后面再大卖的可能性很小），成本 ￥1500 左右，开发时间 100+ 小时，时薪 ￥13……&lt;/p&gt;

&lt;p&gt;还欠着开发日志的视频，希望春节期间可以做出来。&lt;/p&gt;

&lt;h2 id=&quot;工作&quot;&gt;工作&lt;/h2&gt;

&lt;p&gt;业务方面的我不知道能不能说，索性就不说了。来说点 ECharts 相关的，大多数内容在开源社区或邮件组都公开，所以讲讲应该没问题。&lt;/p&gt;

&lt;p&gt;因为 ECharts 现在在 Apache 基金会下开源，发版、发展 committer 等都要根据 Apache 的规定来，有非常多细小繁琐的事需要做。可能因为我不太排斥英语沟通的事，以及比较热心开源相关事宜，我会多主动牵头做一些沟通和组织的工作，但真的就是一件件非常琐碎的事。大佬都爱说「我就是打杂的」，可我真是 literally 地打杂呢……&lt;/p&gt;

&lt;p&gt;这个月发起了 ECharts 第一个 committer 提名的投票，大致就是发一封邮件讨论一下这名同学的贡献，大家是不是愿意他加入 committer 队伍呀？由于 Email 沟通效率非常低，再加上全球时差，一个月下来还没走完投票流程……总之就是类似这类的杂事，需要有个人负责牵个头，没人问津之后还要记得提醒下大家发表意见什么的。有种小队长催着交作业的感觉……&lt;/p&gt;

&lt;p&gt;还有一件有意义的事是，尝试了一下 ECharts 的发版。除了打包项目之外，还涉及各个相关网站的上线。上完之后的感想就是，下次还是甩锅吧……&lt;/p&gt;

&lt;p&gt;此外，还讨论了一下 ECharts 的发版流程，以及大家终于同意基于 milestone 开发了。&lt;/p&gt;

&lt;h2 id=&quot;阅读&quot;&gt;阅读&lt;/h2&gt;

&lt;p&gt;看完了四本书《曼斯菲尔德庄园》、《儒林外史》、《ZEЯRO零：世界記號大全》、《包法利夫人》。除了《ZEЯRO零：世界記號大全》之外的三本，都是去年开始读的，印象中都读了很久，都有产生过「我怎么还没读完这本书」的想法……&lt;/p&gt;

&lt;p&gt;《ZEЯRO零：世界記號大全》是一本关于各地猎奇的符号的书，都是图片，翻得很快。之前 JJYing 在借我字体设计书的时候一起给我的。四星，粗略翻翻。&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;h2 id=&quot;娱乐及爱好&quot;&gt;娱乐及爱好&lt;/h2&gt;

&lt;p&gt;1 月 19 日和钰猫以及天天夫妇去看了 Tango 的展览，虽然很多作品都已经在微博上看过了，但现场和那么多人一起看还是很有氛围的。不知道算不算第一次 Double Date 哈哈~ 后一周请天天夫妇来家里玩，他们带了 Switch 马里奥派对来玩，四个人玩得很开心！但是我好像太认真了（其实是没掌握技巧），动作幅度太大，第二天手臂酸的不行啊！感觉请比较熟的朋友来家里挺好玩的，就是我一般懒得收拾，桌子沙发上堆的东西比较乱……为了以后家里整洁点，我好像需要多请人来做客！&lt;/p&gt;

&lt;p&gt;不过大多数时候，我和钰猫都非常享受二人世界，也不爱出去玩，在家各自看书或者一起玩游戏。对我们（或许也是现在越来越多的年轻人）来说，社交真是一件好累的事。如果孤岛上没什么生存危险的话，我们应该都挺乐意去的……（钰猫：等下，孤岛有 WiFi 吗？）&lt;/p&gt;

&lt;p&gt;这个月比之前练琴的频率更高（可能是因为写年终总结让我意识到要练琴这件事），大概 6 天，每天半小时到一小时。虽然是没有很频繁啦，但是作为那么多业余爱好之一，我觉得它也应该知足啦！做了一些尝试后，现在是在练《车尔尼599钢琴基础教程》，这个月终于把第一页练完了……买了个放在琴键上的五线谱标记，我实在记性不好，不折腾了，也懒得数了。其实业余爱好，保持坚持下去的兴趣最重要，我不太在乎别人说这种方法对不对，相比我在对的路上走五分钟，倒不如在弯路上每天散步。&lt;/p&gt;

&lt;p&gt;最近在构思一个长篇科幻小说，不知道会不会写出来。不过就算写出来，应该也只会给几个熟悉的朋友看看，并不打算分享出来。因为如果不打算给很多人看的话，就没有什么包袱，我就可以很随意地写自己想写的了——当然，前提是我真的动手写。我写长篇总是坚持不下去，主要还是没完全构思好就开始动笔，所以这次打算好好规划一下。&lt;/p&gt;

&lt;h2 id=&quot;生日&quot;&gt;生日&lt;/h2&gt;

&lt;p&gt;24 号过了生日，和钰猫在家吃火锅，很开心~~ 我有点不记得他说了啥，反正把我感动到了（这都行？）。生日礼物是钰猫画的素描，但是当时他还没画完，在我的强烈要求下给我看了一眼。完成度 90%，相似度 95%，应该说，我还是非常惊喜的！因为钰猫一直说他小时候画画好，我也没见识过，所以我这次生日礼物就要求他画一幅我的画。没想到有 95% 的相似度，我觉得非常厉害，尤其是画出了我机灵的眼神哈哈！如果画完他愿意给大家看的话，到时候和大家分享。（他最近好像都忘记要继续画了……）&lt;/p&gt;

&lt;p&gt;生日这天还出了件不开心的事。我在生日这天给《2019 字体日历》埋了个小彩蛋，就是会显示我个人手写的字体。为了配合这个彩蛋，也算我给大家的生日礼物，就把这天设为限免了。没想到有人在&lt;em&gt;什么值得买&lt;/em&gt;上面宣传了这个 App，一下子来了几十倍的下载量，也就出现了一些不算目标群众的用户。在很多评论中他们表达了类似「这垃圾到底有什么用」的说法。其实我也完全理解，这就是一个小众的东西不会被所有人喜欢的道理，而且键盘侠随意吐槽几句也没有实质性的恶意。但是这种事发生在自己身上还是会很难过的，尤其是这天还是生日。&lt;/p&gt;

&lt;p&gt;当然，难过之后还是该干嘛干嘛，我想做的创意，想做的那些有趣的无聊的事，我还是会义无反顾地去做。&lt;/p&gt;

&lt;p&gt;因为，这才是羡辙呀！&lt;/p&gt;
</description>
                <pubDate>Sun, 03 Feb 2019 00:00:00 +0800</pubDate>
                <link>http://zhangwenli.com/blog/2019/02/03/january-report/</link>
                <guid isPermaLink="true">http://zhangwenli.com/blog/2019/02/03/january-report/</guid>
            </item>
        
            <item>
                <title>2018 年读书小结</title>
                <description>&lt;style&gt;
.chart {
    width: 100%;
    height: 500px;
}

#score-chart {
    height: 600px;
}

@media (max-width: 600px) {
    .chart {
        height: 500px;
    }
}
&lt;/style&gt;

&lt;p&gt;2018 年读了 24 本书，虽然其中有 &lt;a href=&quot;https://www.douban.com/doulist/46617501/&quot;&gt;10 本&lt;/a&gt;我愿意五星评价的书，但总体来说，并没有遇到很多特别心动的书。所以，今年还是要增加阅读量，才能遇到更多有意思的书。&lt;/p&gt;

&lt;p&gt;今年偷了个懒，把去年读书小结里的图表拿来套用了，只是简单改了下数字和内容。主要是书的数量太少了，像前年四十几本的话，我还愿意写个脚本&lt;a href=&quot;http://zhangwenli.com/blog/2017/01/03/reading-report/&quot;&gt;统计各种信息&lt;/a&gt;，二十几本的话，一本本介绍都行了……&lt;/p&gt;

&lt;p&gt;好了，我不为我的懒惰找借口了，我们一起来看下吧！&lt;/p&gt;

&lt;div class=&quot;chart&quot; id=&quot;score-chart&quot;&gt;&lt;/div&gt;

&lt;p&gt;虚构、非虚构正好各占一半，整体形状上倒是很有美感哈哈~&lt;/p&gt;

&lt;h1 id=&quot;好书推荐&quot;&gt;好书推荐&lt;/h1&gt;

&lt;h2 id=&quot;游戏设计艺术&quot;&gt;《游戏设计艺术》&lt;/h2&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;/p&gt;

&lt;h2 id=&quot;三体&quot;&gt;《三体》&lt;/h2&gt;

&lt;p&gt;好多年前《三体》读到第二本不知道什么地方，但是我记性又很差，完全没法从中间读起，于是下定决心从头读了三本。当然，《三体》我就不多介绍了。&lt;/p&gt;

&lt;h2 id=&quot;躺着赚钱&quot;&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=&quot;大奥日本&quot;&gt;《大奥日本》&lt;/h2&gt;

&lt;p&gt;这本书的前半部分算是我今年读到的最有趣的半本书了，但后半本讲德川历史，就没什么特别的了。&lt;/p&gt;

&lt;p&gt;我看过很多大奥剧，对将军后宫非常感兴趣。其实要换作中国古代或者朝鲜李朝后宫的话，我也非常感兴趣真实历史上日常起居这些事。2015 年读过讲慈溪日常起居的《宫女谈往录》，我就非常感兴趣。大概就是，那些我们非常熟悉的主题（帝王、后妃、宫女、太监等）加上我们所不熟悉的细节（他们怎么吃饭的，明天都做什么），就会让我非常感兴趣。所以，有此类好书的话，欢迎向我推荐！&lt;/p&gt;

&lt;h2 id=&quot;角落熬路水彩旧画&quot;&gt;《角落·熬路水彩旧画》&lt;/h2&gt;

&lt;p&gt;&lt;img class=&quot;post-img&quot; src=&quot;http://zhangwenli.com/blog/img/loading.gif&quot; data-src=&quot;http://zhangwenli.com/blog/img/post/2019-01-29-reading-report-corner.jpg&quot; /&gt;因为又开始喜欢画水彩了，今年买了不少水彩的书——这是其中本来有些随便买的书。&lt;/p&gt;

&lt;p&gt;没想到这是一本做得非常用心的书。首先拿到手的时候，外面包了一张海报，用纸质的绳子扎着——这就让我很惊喜。然后里面看起来是三本书，但其实是装订成一本书的三个主题系列。就画的水平而言，我觉得不能算是非常教学性的（就是不太能照着临摹出来），但是这个画也是非常有个人风格的，我就非常喜欢。&lt;/p&gt;

&lt;p&gt;希望 2019 年可以多画一些水彩画。&lt;/p&gt;

&lt;h1 id=&quot;其他的书&quot;&gt;其他的书&lt;/h1&gt;

&lt;p&gt;还有在读一些篇幅更大的书，所以没能在 2018 年读完，但是其中不乏有趣之作。&lt;/p&gt;

&lt;p&gt;比如看《自深深处》觉得王尔德的情感非常感人，于是去读《奥斯卡·王尔德传》。结果发现虽然才华横溢，但很多方面也称不上君子，突然就觉得《自深深处》有点一面之词了（然后两本都没读完……）。&lt;/p&gt;

&lt;p&gt;《儒林外史》是我第一本在微信读书上读完的书，因为是 2019 年年初才读完的，所以严格来说不在 2018 已读书目中。但是绝大部分内容都是在 2018 年读的，为了避免年底忘了，我就在这先写一笔。以前觉得电子书体验还是以 Kindle 为上，所以也没怎么在微信读书上看。后来因为《儒林外史》有很多需要查阅解释的词，发现微信读书倒是一个不错的平台，很多用户会在上面自发地写注释。而且吃饭时候，用手机看书比较方便。&lt;/p&gt;

&lt;p&gt;读到一本讲文学创作的非常棒的书——纳博科夫的&lt;a href=&quot;https://book.douban.com/subject/27091776/&quot; target=&quot;_blank&quot;&gt;《文学讲稿》&lt;/a&gt;。我以前不怎么读得进西方小说，这本书可以教读者怎么欣赏，也可以教作者怎么写。因为我觉得确实写得特别好，所以我配合着里面提到的书一起看。前阵子读完了《曼斯菲尔德庄园》，最近快看完《包法利夫人》了。这种读书方式让我觉得特别有成就感，就像 TODO 列表里一项项 check 过来的感觉！&lt;/p&gt;

&lt;p&gt;还有很多实体书和电子书买来都没怎么看，今天统计买书支出的时候，瞥到一眼，还会想「原来这本书还挺贵的嘛，过几天再翻一下牌子吧？」&lt;/p&gt;

&lt;h1 id=&quot;总结&quot;&gt;总结&lt;/h1&gt;

&lt;p&gt;2018 年读的书还是有点少，主要的固定读书时间是上下班班车的半小时（一般一周会看三四天左右，随心情，不勉强），以看 Kindle 为主；然后就是下班后或周末在家看纸质书，偶尔在家也会看 Kindle。&lt;/p&gt;

&lt;p&gt;另外一个好玩的事是，我老公喜欢看我束之高阁的书——比如《原则》、《希腊精神》等等。其实书都是好书，就是有些我暂时没缘分读下去。看我老公喜欢读，正好听他讲讲，也算一种读书方法了！&lt;/p&gt;

&lt;p&gt;新家的书柜已经不够用了……在多抓鱼卖了两次书，以后打算没什么留存价值的书也尽量流转出去——为买新书腾出空间哈哈哈！&lt;/p&gt;

&lt;p&gt;希望今年可以再多遇到一些有趣的书——因为作为一名已婚妇女，我已经不好再（公然）表达希望再遇到一些有趣的人了。&lt;/p&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
    if (window.innerWidth &lt; 600) {
        var imgUrl = 'http://zhangwenli.com/blog/img/post/2019-01-29-reading-report-chart.png';
        var img = document.createElement('img');
        img.setAttribute('class', 'single-img');
        img.setAttribute('src', imgUrl);

        var a = document.createElement('a');
        a.setAttribute('href', imgUrl);
        a.setAttribute('target', '_blank');
        a.appendChild(img);

        var container = document.getElementById('score-chart');
        container.style.height = 'auto';
        container.appendChild(a);
    }
    else {
        var loadJs = [[[
            'http://zhangwenli.com/blog/js/post/2017-12-14-reading-report/echarts.071214.simple.min.js',
            'http://zhangwenli.com/blog/js/post/2019-01-29-reading-report/sunburst.js'
        ], function() {
            var charts = [];

            var scoreChart = getScoreChart('score-chart');
            charts.push(scoreChart);

            window.onresize = function () {
                for (var i = 0; i &lt; charts.length; ++i) {
                    charts[i].resize();
                }
            };
        }]];
    }

&lt;/script&gt;

</description>
                <pubDate>Tue, 29 Jan 2019 00:00:00 +0800</pubDate>
                <link>http://zhangwenli.com/blog/2019/01/29/reading-report/</link>
                <guid isPermaLink="true">http://zhangwenli.com/blog/2019/01/29/reading-report/</guid>
            </item>
        
    </channel>
</rss>
