<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>实践所得 on 有点稳</title><link>https://blog.nicelylit.net/tags/%E5%AE%9E%E8%B7%B5%E6%89%80%E5%BE%97/</link><description>Recent content in 实践所得 on 有点稳</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 23 Oct 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.nicelylit.net/tags/%E5%AE%9E%E8%B7%B5%E6%89%80%E5%BE%97/index.xml" rel="self" type="application/rss+xml"/><item><title>项目总结模板</title><link>https://blog.nicelylit.net/posts/%E9%A1%B9%E7%9B%AE%E6%80%BB%E7%BB%93%E6%A8%A1%E6%9D%BF/</link><pubDate>Mon, 23 Oct 2023 00:00:00 +0000</pubDate><guid>https://blog.nicelylit.net/posts/%E9%A1%B9%E7%9B%AE%E6%80%BB%E7%BB%93%E6%A8%A1%E6%9D%BF/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;1. &lt;strong&gt;&lt;em&gt;为什么需要项目总结模板呢？&lt;/em&gt;&lt;/strong&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;2. &lt;em&gt;&lt;strong&gt;做项目总结应当注意什么呢？&lt;/strong&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;p&gt;复杂度可以从项目参与的人数、代码量、包的数量、项目时间等角度来考虑。&lt;/p&gt;
&lt;p&gt;从形式上讲，注意拼写、语法、语义、字符样式、空格、缩进等。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;1. &lt;strong&gt;我在项目中的主要职责是什么？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;第一要落在动词上：主导、负责、带领、指导、评审，参与就可以不用写了，而提议、设计、编写、测试等是具体的工作，是展开时要说的。
第二要落在对象上，即人与事，要具体化和量化，人要有数字，事要有范围，说清楚边界与局限。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;2. &lt;strong&gt;我在项目中取得了哪些关键成果？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;围绕攻克的难题与技术挑战，对项目上的事与人产生正面的效果，提升团队的工作效率。
从事上讲，是创新、创意，寻找全新视角、推动僵局。从人上讲，是获得客户的认可、上级的认可、成为团队的放大器。上级不要局限为自己的直属领导，也包括其他与自己合作的级别更高者，级别更高者往往有更高的能力与权力，即便都没有，也还有更多的信息获取渠道。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;描述方法一般遵循STAR法则，情形、任务、行动和结果。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;3. &lt;strong&gt;我在项目中取得那些关键的成果有什么成功的经验可以分享？&lt;/strong&gt;&lt;/p&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;4. &lt;strong&gt;我在项目中有哪些做得不够好值得提升的方面？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;与前一个问题本质相同，一体两面，也要围绕能力，即专业能力与领导力。不同于前面一个问题，这个问题还可以谈谈打算采取怎样的计划与行动来提升。&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;a class="link" href="https://amazon.jobs/content/en/our-workplace/leadership-principles" target="_blank" rel="noopener"
 &gt;亚马逊领导力准则&lt;/a&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Customer Obsession&lt;/li&gt;
&lt;li&gt;Ownership&lt;/li&gt;
&lt;li&gt;Invent and Simplify&lt;/li&gt;
&lt;li&gt;Are Right, A Lot&lt;/li&gt;
&lt;li&gt;Learn and Be Curious&lt;/li&gt;
&lt;li&gt;Hire and Develop the Best&lt;/li&gt;
&lt;li&gt;Insist on the Highest Standards&lt;/li&gt;
&lt;li&gt;Think Big&lt;/li&gt;
&lt;li&gt;Bias for Action&lt;/li&gt;
&lt;li&gt;Frugality&lt;/li&gt;
&lt;li&gt;Earn Trust&lt;/li&gt;
&lt;li&gt;Dive Deep&lt;/li&gt;
&lt;li&gt;Have Backbone; Disagree and Commit&lt;/li&gt;
&lt;li&gt;Deliver Results&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;新增的最后两条Strive to be Earth’s Best Employer和Success and Scale Bring Broad Responsibility个人不是很认同值得与前十四条并列，它们不像前十四条一样属于行之有效的简单能力，而是复合能力，故而省去。&lt;/p&gt;</description></item><item><title>谈解决问题的方法：从偷跑流量谈起</title><link>https://blog.nicelylit.net/posts/%E8%B0%88%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98%E7%9A%84%E6%96%B9%E6%B3%95%E4%BB%8E%E5%81%B7%E8%B7%91%E6%B5%81%E9%87%8F%E8%B0%88%E8%B5%B7/</link><pubDate>Thu, 28 Sep 2023 00:00:00 +0000</pubDate><guid>https://blog.nicelylit.net/posts/%E8%B0%88%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98%E7%9A%84%E6%96%B9%E6%B3%95%E4%BB%8E%E5%81%B7%E8%B7%91%E6%B5%81%E9%87%8F%E8%B0%88%E8%B5%B7/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;em&gt;2018年01月02日分享于pFinder邮件组，作为《&lt;a class="link" href="https://blog.nicelylit.net/posts/%E5%8F%82%E5%8A%A0%E5%B7%A5%E4%BD%9C%E4%BB%A5%E6%9D%A5%E7%9A%84%E6%88%90%E9%95%BF%E4%B8%80/" &gt;参加工作以来的成长（一）&lt;/a&gt;》的附件。&lt;/em&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;收到任务时，我的情况是，1) 对安卓只有一年的开发经验，而且是断断续续地利用业余时间学习；2) 对安卓的推送机制基本不了解，仅对推送的过程了解一些；3) 对如何预装应用完全不清楚；4) 对公司复杂的手机应用知道一些跟WebView相关的部分，估摸着看过的代码最多也就几千行，而整个应用仅核心两个包的代码就有十几万行，附属提供功能的依赖包至少有一百多个，整个依赖的包有近两千个，整个应用的代码量在百万行甚至上千万行的数量级上，整个应用的完整的构建需要两个多钟头（当然局部的修改不会进行完整的构建）。&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;如果非预装应用也有这样的问题，那么问题也一定出在安装阶段，同样也需要知道问题3的答案。&lt;/li&gt;
&lt;li&gt;如果个推在偷跑流量，那么一定得有后台运行的服务被启动，否则谁去打印日志呢？进一步这个服务为什么会在安装阶段被启动？这两个疑问也都指向了问题3。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在清楚问题和我所处的状况下，有正常逻辑的人都不难问出以上的问题。将这些问题用纸（或者云笔记）记录下来极为重要，因为尝试着去回答每个问题时，你还会问出自己更多的问题，更多的问题增加了广度，让自己对问题了解得更多，但同时也很容易丢失目标，不要让自己大脑不停去重复想前面提出的5个问题，大脑会很累。写下来还有个好处是一天没有解决完的问题，第二天可以快速重新捡起来。&lt;/p&gt;
&lt;p&gt;说完写下来的重要性（重要的事情总要说三遍），接下来回头看下提出的5个问题的特点。第一，它们跟原始问题中的几个关键因素直接相关，比如预装、流量消耗、打印日志、个推服务。第二，它们是对原始问题的分解，彼此之间有很强的逻辑关系，这一方面可以让思考变得严密，另一方面也更加具体。第三，它们运用我有限的常识和对比的方法，引入了更多的我熟悉但还没有透彻掌握的因素，比如启动前的步骤只有安装，打印日志一定有后台服务运行。总结下来，提问的时候，首先要寻找原始问题中的关键词，然后结合自己的常识，运用逻辑和对比的方法，引入更多的因素，分解出更多的问题。&lt;/p&gt;
&lt;p&gt;除了将分解的5个问题写到一页纸上以外，还要另外新建5页纸，将5个问题分别作为5页纸的标题，为后续的问题分解、搜索和寻找答案做记录。&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;li&gt;如何做非预装应用的对比测试？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;提出这些问题的动机和方法同提出前面5个问题的动机和方法类似，我进行了第二层的深度分解。这一层的问题进一步具体，同样需要用纸记录下来，逐个地回答。同一层级的问题之间有个特点，前面有提到，就是彼此之间有很强的逻辑关系。可能其中的某几个问题还比较抽象，但只要有一个问题足够具体，利用现有的认知做简单的搜索可以得到答案，那么就不必要进一步加深分解的层次，以免节外生枝，消耗不必要的脑力。&lt;/p&gt;
&lt;p&gt;拿上面分解的6个问题来看，问题1和6都比较抽象，剩下的很具体，尝试着回答了2到5，那么会把1和6更佳的具体化，至少在自己的大脑中是如此。相比于3到5，问题2也显得不够具体，所以先回答3到5是个不错的想法。&lt;/p&gt;
&lt;p&gt;回答未知的问题，以前的人们只能翻书，效率很低，现在有搜索引擎，虽然很快，但也需要能有效利用。这就要提到如何增强自己的搜索能力，如何综合利用多个搜索引擎的结果，如何快速定位自己关心问题的答案。回答这几个问题同样可以重复前面采用的方法，进行问题分解，为避免跑题，在此只列举一些我个人的经验。首先，用中文关键词在百度或者Bing中搜索，搜索出来的答案可以辅助拓展关键词，但不可以全用，大多数时候不准确，不全面。其次，准确地将关键词翻译成英文，在Bing或者Google上搜索，高质量的答案一般来自于官方文档、Stackoverflow、Google论坛，博客上面的答案可以用来辅助拓展关键词和充实答案。再有，学会关键词转换，转换关键词的过程其实是转换思考问题角度的过程，在很多山穷水尽的时候，转换思路或许能柳暗花明。还有，启用搜索引擎的高级搜索功能，只找某几个网站的搜索结果，或者要求关键词严格匹配，直接滤除掉低质量的结果，减少干扰。最后，浏览搜索结果，看相关度的时候，要始终想着要解决的问题，以免被带偏。问题越具体，越容易找到相关度高的结果。&lt;/p&gt;
&lt;p&gt;在百度中搜索以下两组关键词：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.baidu.com/s?wd=%E5%AE%89%E5%8D%93%20%E9%A2%84%E8%A3%85%E5%BA%94%E7%94%A8%20%E5%AE%89%E8%A3%85%E7%9B%AE%E5%BD%95&amp;amp;rsv_spt=1&amp;amp;rsv_iqid=0x816ee9100000c646&amp;amp;issp=1&amp;amp;f=8&amp;amp;rsv_bp=1&amp;amp;rsv_idx=2&amp;amp;ie=utf-8&amp;amp;rqlang=cn&amp;amp;tn=baiduhome_pg&amp;amp;rsv_enter=1&amp;amp;oq=%25E5%25AE%2589%25E5%258D%2593%2520%25E9%259D%259E%25E9%25A2%2584%25E8%25A3%2585%25E5%25BA%2594%25E7%2594%25A8%2520%25E5%25AE%2589%25E8%25A3%2585%25E7%259B%25AE%25E5%25BD%2595&amp;amp;inputT=9585&amp;amp;rsv_t=8174w5l%2Fz4iozxSft4mO9wSazB59pk51FAXCiujs89KnLK2upQfXvEXnvMQYt%2FPkt7P2&amp;amp;rsv_pq=801f451a0000d39a&amp;amp;rsv_sug3=46&amp;amp;bs=%E5%AE%89%E5%8D%93%20%E9%9D%9E%E9%A2%84%E8%A3%85%E5%BA%94%E7%94%A8%20%E5%AE%89%E8%A3%85%E7%9B%AE%E5%BD%95" target="_blank" rel="noopener"
 &gt;安卓 预装应用 安装目录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.baidu.com/s?wd=%E5%AE%89%E5%8D%93%20%E5%BA%94%E7%94%A8%20%E5%AE%89%E8%A3%85%E7%9B%AE%E5%BD%95&amp;amp;rsv_spt=1&amp;amp;rsv_iqid=0x816ee9100000c646&amp;amp;issp=1&amp;amp;f=8&amp;amp;rsv_bp=1&amp;amp;rsv_idx=2&amp;amp;ie=utf-8&amp;amp;rqlang=cn&amp;amp;tn=baiduhome_pg&amp;amp;rsv_enter=0&amp;amp;oq=%25E5%25AE%2589%25E5%258D%2593%2520%25E9%25A2%2584%25E8%25A3%2585%25E5%25BA%2594%25E7%2594%25A8%2520%25E5%25AE%2589%25E8%25A3%2585%25E7%259B%25AE%25E5%25BD%2595&amp;amp;inputT=1030&amp;amp;rsv_t=85c8VCn3jzp066CfUiu208IrrRmlbNuOrGBjNI1DB5Vn0KGoaushNVtF1aRY%2BmOjO4Nk&amp;amp;rsv_pq=aaef80ef0000d264&amp;amp;rsv_sug3=48&amp;amp;rsv_sug1=32&amp;amp;rsv_sug7=000&amp;amp;bs=%E5%AE%89%E5%8D%93%20%E9%A2%84%E8%A3%85%E5%BA%94%E7%94%A8%20%E5%AE%89%E8%A3%85%E7%9B%AE%E5%BD%95" target="_blank" rel="noopener"
 &gt;安卓 应用 安装目录&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在Bing上搜索以下三组关键词：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://cn.bing.com/search?q=Android%20preload%20application%20installation%20location&amp;amp;qs=n&amp;amp;form=QBRE&amp;amp;sp=-1&amp;amp;pq=android%20preload%20application%20installation%20location&amp;amp;sc=0-49&amp;amp;sk=&amp;amp;cvid=262AD12124F8468AB2C9625DF9385E7D" target="_blank" rel="noopener"
 &gt;Android preload application installation location&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://cn.bing.com/search?q=Android%20application%20installation%20location&amp;amp;qs=n&amp;amp;form=QBRE&amp;amp;sp=-1&amp;amp;pq=android%20application%20installation%20location&amp;amp;sc=1-41&amp;amp;sk=&amp;amp;cvid=72F99F60ADAB423EBCCE1C5BF4F8581F" target="_blank" rel="noopener"
 &gt;Android application installation location&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://cn.bing.com/search?q=Android%20application%20installation%20folder&amp;amp;qs=n&amp;amp;form=QBRE&amp;amp;sp=-1&amp;amp;pq=undefined&amp;amp;sc=0-39&amp;amp;sk=&amp;amp;cvid=529FDC60434249D8BA41ECAF27448B77" target="_blank" rel="noopener"
 &gt;Android application installation folder&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;百度中第一组搜索关键词的头五名：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://zhidao.baidu.com/question/501345661.html" target="_blank" rel="noopener"
 &gt;怎样知道安卓系统上安装的应用程序其所在文件夹&amp;hellip;_百度知道&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://jingyan.baidu.com/article/a3f121e4d9e05cfc9052bbfb.html" target="_blank" rel="noopener"
 &gt;安卓手机如何彻底删除预装应用_百度经验&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.cnblogs.com/feijian/p/5160392.html" target="_blank" rel="noopener"
 &gt;教你怎么把安卓应用软件放到系统根目录system/app下 - 飞&amp;hellip;_博客园&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://jingyan.baidu.com/article/ca2d939d3056d8eb6d31ce51.html" target="_blank" rel="noopener"
 &gt;安卓手机安装后的安装包文件怎么找_百度经验&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="http://blog.csdn.net/snail_coder/article/details/20213069" target="_blank" rel="noopener"
 &gt;Android应用程序的安装位置 - CSDN博客&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;百度中第二组搜素关键词的头五名：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://zhidao.baidu.com/question/501345661.html" target="_blank" rel="noopener"
 &gt;怎样知道安卓系统上安装的应用程序其所在文件夹&amp;hellip;_百度知道&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="http://blog.csdn.net/vurtne_ye/article/details/41722583" target="_blank" rel="noopener"
 &gt;android APK应用安装过程以及默认安装路径 - CSDN博客&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="http://blog.csdn.net/libaineu2004/article/details/25247711" target="_blank" rel="noopener"
 &gt;Android开发出来的APP在手机的安装路径是? - CSDN博客&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="http://ask.zol.com.cn/q/1009414.html" target="_blank" rel="noopener"
 &gt;安卓软件安装目录在什么位置?-其他软件-ZOL问答堂&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="http://bbs.gfan.com/android-8066580-1-1.html" target="_blank" rel="noopener"
 &gt;各种APP的安装路径在哪? - Sony Xperia Z3/Compact 安&amp;hellip;_机锋论坛&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;快速的浏览10篇帖子，有些提到/data/app，有些提到/data/data，有些提到/system/app，还有些提到/system/priv-app。各个帖子试图去解决的问题不同，可能不是对我关心问题的正面回答，但不妨碍我将它们作为候选答案和新的搜索关键词。在浏览帖子的过程中，我了解到有人问过&lt;a class="link" href="https://jingyan.baidu.com/article/a3f121e4d9e05cfc9052bbfb.html" target="_blank" rel="noopener"
 &gt;安卓手机如何彻底删除预装应用_百度经验&lt;/a&gt;，我获得的认识是系统应用可能很难删除。在浏览帖子&lt;a class="link" href="http://blog.csdn.net/snail_coder/article/details/20213069" target="_blank" rel="noopener"
 &gt;Android应用程序的安装位置 - CSDN博客&lt;/a&gt;时，我发现标题虽然相关，但内容在谈应用如何能放在外部空间，根据过去对存储分级的认识，我可以联想到默认的应用应该放在内部空间中，这时候勾起了我强烈的兴趣去了解安卓系统的存储结构。面对这种情况，如果时间充裕，不妨搜索一下，以满足自己的好奇心，如果时间不允许，最好就此打住，以免花太多的时间在拓展问题上。浏览的所有帖子中，&lt;a class="link" href="http://blog.csdn.net/vurtne_ye/article/details/41722583" target="_blank" rel="noopener"
 &gt;android APK应用安装过程以及默认安装路径 - CSDN博客&lt;/a&gt;的质量最高，不妨把这个链接留下，写到自己创建的笔记中。&lt;/p&gt;
&lt;p&gt;综合中文的搜索结果其实已经基本得到了问题3和4的答案，在笔记中做下记录。问题3的答案是/system/app和/system/priv-app，问题4的答案是/data/app。如果觉得这两个问题太小，也可以合并成一个笔记。为进一步确认我们的判断，阅读下英文的搜索结果，发现有人正面回答这个问题，比如下面的几个帖子：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://android.stackexchange.com/questions/3002/where-in-the-file-system-are-applications-installed" target="_blank" rel="noopener"
 &gt;Where in the file system are applications installed?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://stackoverflow.com/questions/10533030/where-is-apk-location-for-apps-that-are-installed-on-sdcard" target="_blank" rel="noopener"
 &gt;where is .apk location for apps that are installed on sdcard?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://stackoverflow.com/questions/15322063/where-does-android-app-package-gets-installed-on-phone" target="_blank" rel="noopener"
 &gt;Where does Android app package gets installed on phone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;确认得出的结论正确后，还需要到设备上实际操作一下，得到最终的确认。帖子&lt;a class="link" href="https://stackoverflow.com/questions/15322063/where-does-android-app-package-gets-installed-on-phone" target="_blank" rel="noopener"
 &gt;Where does Android app package gets installed on phone&lt;/a&gt;中的一个回答者提到了adb shell pm list packages -f这条命令，去执行一下，并且在笔记中做记录。&lt;/p&gt;
&lt;p&gt;问题5相比于问题3和4相对复杂些，复杂性在于要从两个本身就有些复杂的概念中寻找差异。类比地来想，问题3和4分别在问“中国人住在地球的哪里”、“美国人住在地球的哪里”，而问题5却要回答“中国人和美国人有什么差别”。第一类问题具体到了被考察对象（预装应用或者中国人）千百万个属性中的一个。第二类问题却没有框定哪些属性。对于复杂概念的属性，人们往往还会根据复杂概念本身跟外部的依赖关系、用途而对属性进行进一步抽象、分类，以便于容易认知和讨论。拿中国人和美国人来讲，可以讨论的属性没有穷尽，但可讨论的抽象出的类别相对有限，比如生物特征、生活方式、历史习俗、社会结构、思维方式等。实际上简单想想都会觉得，问题5的复杂度肯定比回答中国人和美国人的差别要低得多了，然而后者虽然客观来讲更困难，但在感情上却是容易的。思考它不仅可以辅助拓展问题5的搜索关键词还能够明确我所关心的差别方向。经过这一番类比，我能想到去限定问题5的类别对比范围，我更在乎启动前的差别，至于启动后，暂时可以不必了解，没差别最好。想到这里，我可以写下以下的几组搜索关键词&lt;/p&gt;
&lt;p&gt;Difference normal app preload app Android
Difference normal app preload app installation Android
Difference normal app system app Android
Difference normal app system app before start Android
预装应用 非预装应用 差别 安卓
预装应用 非预装应用 差别 安装 安卓
预装应用 非预装应用 差别 启动前 安卓&lt;/p&gt;
&lt;p&gt;经过在Bing和百度中的搜索，我找到一些相关的答案，很多在谈权限的问题。不过搜索过程中，我同时还发现我的用词不够准确，大家很少叫normal app，而更多用的是user app；preload app也很少用，而更多用的system app。中文中大家更倾向于用普通应用和系统应用。看到系统，我又想起了我在前面找到问题3和4的答案，于是我改进自己的搜索关键词&lt;/p&gt;
&lt;p&gt;Difference user app system app Android
Difference user app system app permission Android
Difference /data/app /system/app Android
普通应用 系统应用 差别 安卓
普通应用 系统应用 启动前 差别 安卓
/system/app /data/app 差别 安卓&lt;/p&gt;
&lt;p&gt;多次重新搜索（re-search）后，终于找到看起来靠谱的两个答案。第一篇是StackExchange上面，有人问“&lt;a class="link" href="https://android.stackexchange.com/questions/17871/what-are-the-differences-between-a-system-app-and-user-app" target="_blank" rel="noopener"
 &gt;What are the differences between a system app and user app?&lt;/a&gt;”，高票的答案解释清楚了主要是拥有系统权限的不同。这样的答案可以促进自己知识的结构化，却不对解决问题产生直接帮助，因为我还是不知道什么系统权限有差别。跟系统硬件相关的权限有很多，到底由哪个造成。从头到尾读安卓的系统权限相关的文档，或者是拿一个一个的系统权限常量串到代码库中去搜索都不太现实。在我即将准备进一步优化搜索关键词的时候，第二篇CSDN上的一篇博客“&lt;a class="link" href="http://blog.csdn.net/imesong/article/details/39326203" target="_blank" rel="noopener"
 &gt;System APP 与普通 APP 简析&lt;/a&gt;”清晰地为我指明了方向。博客中的第二点不仅说了权限有差别，并且说了是广播的接收权限有差别，系统应用即便用户没有打开应用，也一样可以收到广播消息，而普通应用必须打开应用后才能收到广播消息。&lt;/p&gt;
&lt;p&gt;问题答案找到这里，我虽然只能回答第一个大问题的3个小问题，但是似乎已经距离找到答案很近了。我已经将可能出问题的范围缩小到了广播接收器和权限，外加一个条件就是个推，于是我兴奋地去个推包的AndroidManifest.xml中找所有的广播接收器和权限声明语句。看到以下几行可疑度比较高的语句。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-xml" data-lang="xml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;uses-permission&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;android.permission.RECEIVE_BOOT_COMPLETED&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;receiver&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;.PushReceiver&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;action&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;android.intent.action.BOOT_COMPLETED&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;action&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;android.net.conn.CONNECTIVITY_CHANGE&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;action&lt;/span&gt; &lt;span class="na"&gt;android:name=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;android.intent.action.USER_PRESENT&amp;#34;&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c"&gt;&amp;lt;!-- 省略 --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;&amp;lt;/receiver&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;权限一行的声明在说，应用在请求启动完成时的某种权限。广播接收器的声明在说，接收器在匹配到以下的三种事件发生的广播情况下能执行一定的任务，包括android.intent.action.BOOT_COMPLETED、android.net.conn.CONNECTIVITY_CHANGE和android.intent.action.USER_PRESENT。这时候，我再去找官方文档阅读印证我的理解是否正确。阅读后发现这三个事件过滤器的确是只针对系统应用才能产生效果的。进一步确信后，我创建一个修复分支，删除这几行代码后，需要验证是否真的就是这几行代码起的作用。对于这个验证，我有两点预期断言（Assertion）：1) 在预装应用中不再出现偷跑流量的问题 2) 对于非预装应用的推送功能并没有因为这几行代码的删除而执行异常。第一个断言属于功能性测试，为了修复不满足需求的漏洞，第二个断言属于回归测试，为了避免修复引入新的问题。&lt;/p&gt;
&lt;p&gt;做功能性的测试我需要先搭建测试环境，如果测试环境搭建好了，我预期基本上问题1, 2, 6的答案也就都有了。在这个问题方面，因为测试，外组有专门的人员负责，对我而言也只是个临时的任务，于是我在尝试搭建测试环境失败后，将任务转给了他。由于他人在美国，我需要明确要他做的事情和预期，在转交任务前，我做的测试尝试包括：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;找问题2的答案，&lt;/li&gt;
&lt;li&gt;做初步的回归测试。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;回归测试的环境是现成的，我将带着修复的应用装到普通用户应用区域，完整地测试了推送功能和查看错误日志，并无异常发生，所以回归测试在我这里算是过了，后期还需要我们组专门的测试人员进行重复测试。&lt;/p&gt;
&lt;p&gt;找问题2的答案，相比问题5难度要小，不过执行操作比较多，而且存在着损坏硬件的风险。系统区是ROM区，只有ROOT权限才可以读写，并且启动加载的操作系统内核程序也存放在这个区域，因而操作风险较大。我尝试了两三次向一台ROOT过的机器强制覆盖应用都导致整个手机系统重启，并产生了系统崩溃的报告。为了尽快完成修复测试，我将带着修复的应用转给了外组的测试人员，他在五天之后给出了测试结果，平均每天的流量消耗是零。&lt;/p&gt;
&lt;p&gt;问题已解决，有闲暇的时间里，我将剩下的一些问题做了一些简单搜索、思考和整理，以增加我对系统局部模块的认识，就不在这里赘述。&lt;/p&gt;
&lt;p&gt;回顾整个问题解决的过程，积累结构性的知识和特定的领域细节固然重要，但反思和迭代自己解决问题的能力和方法更能让人感到一种成长的愉悦。如果特定领域的知识积累到一定程度，比如对安卓系统非常精通的人，大概看到这样问题的发生，就已经推测出可能出问题的方向，一点都不需要这个复杂的搜索、重新搜索的过程，而是直接去代码中找了。然而，现实中，所有的技术更新迭代的速度超乎我们的想象得快，做到对一切细节都能把握得很清楚是件不可能的事情，这个时候练就快速在大脑中索引和找到细节的能力就显得更加重要。学会反问自己恰当的问题和良好的记录习惯是快速掌握这个技能的核心要素。另外，我想这个技能应该也是精通某项技术不可或缺的能力，换句话说，如果很难以习得这样的能力，基本和精通无缘了。学科领域细分的今天，只有跨领域才能做出点东西，习得这样的能力也只是开始，与此同时，这个技能也是快速介入其它相关领域的好途径。&lt;/p&gt;</description></item><item><title>项目文档管理纲要</title><link>https://blog.nicelylit.net/posts/%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3%E7%AE%A1%E7%90%86%E7%BA%B2%E8%A6%81/</link><pubDate>Thu, 28 Sep 2023 00:00:00 +0000</pubDate><guid>https://blog.nicelylit.net/posts/%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3%E7%AE%A1%E7%90%86%E7%BA%B2%E8%A6%81/</guid><description>&lt;figure&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;编号&lt;/th&gt;
 &lt;th&gt;1&lt;/th&gt;
 &lt;th&gt;2&lt;/th&gt;
 &lt;th&gt;3&lt;/th&gt;
 &lt;th&gt;4&lt;/th&gt;
 &lt;th&gt;5&lt;/th&gt;
 &lt;th&gt;6&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;a class="link" href="https://blog.nicelylit.net/posts/%E5%A6%82%E4%BD%95%E4%BD%9C%E6%8F%90%E6%A1%88/" &gt;提案&lt;/a&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;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;英文名称&lt;/td&gt;
 &lt;td&gt;Proposals&lt;/td&gt;
 &lt;td&gt;Reports&lt;/td&gt;
 &lt;td&gt;Manuals&lt;/td&gt;
 &lt;td&gt;Trackers&lt;/td&gt;
 &lt;td&gt;Notes&lt;/td&gt;
 &lt;td&gt;Templates&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;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;用户手册、标准作业程序（SOP）、开发环境搭建手册、测试用例与执行手册、运维操作手册、常见问题解答（FAQ）、客服渠道手册。&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;表格形式要计划好表格的数量以及想清楚每张表格中的行与列的表头。邮件形式，如果是周期性的，要把收件人、密送、标题、正文做成模板，便于后续重用。至于邮件内容，相对灵活多变，但不变的原则是要想清楚邮件的目的与后续的跟进和回复。&lt;/td&gt;
 &lt;td&gt;笔记结构灵活，关键是记录的细节，为方便后续查看，适当分节组织和描述信息的来源与服务场景。&lt;/td&gt;
 &lt;td&gt;模板中通常是两类元素，一类是不变量的字符串，另一类是变量，变量要用特殊字体高亮或者说明需要替换。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;亚马逊领导力[1]&lt;/td&gt;
 &lt;td&gt;Invent and Simplify Think Big Have Backbone; Disagree and Commit Success and Scale Bring Broad Responsibility&lt;/td&gt;
 &lt;td&gt;Are Right, A Lot Learn and Be Curious Dive Deep&lt;/td&gt;
 &lt;td&gt;Customer Obsession Bias for Action Earn Trust Deliver Results&lt;/td&gt;
 &lt;td&gt;Hire and Develop the Best Frugality Strive to be Earth’s Best Employer&lt;/td&gt;
 &lt;td&gt;Insist on the Highest Standards&lt;/td&gt;
 &lt;td&gt;Ownership&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;td&gt;内容管理&lt;/td&gt;
 &lt;td&gt;结构管理&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;偏向的项目阶段[2]&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;/td&gt;
 &lt;td&gt;所有阶段&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;版本控制[3]&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;/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;需要&lt;/td&gt;
 &lt;td&gt;看情况&lt;/td&gt;
 &lt;td&gt;需要&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;主导角色[4]&lt;/td&gt;
 &lt;td&gt;SDM&lt;/td&gt;
 &lt;td&gt;SDE/PMT&lt;/td&gt;
 &lt;td&gt;SDE/PMT/TPM&lt;/td&gt;
 &lt;td&gt;SDM/TPM&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;figcaption&gt;
&lt;p&gt;项目文档管理纲要
[1] 亚马逊领导利准则：https://amazon.jobs/content/en/our-workplace/leadership-principles [2]项目阶段：启动、计划、执行、监控、执行。https://www.atlassian.com/zh/work-management/project-management/phases [3] 版本控制：结构性的调整，修改大版本号。局部内容的变动，修改小版本号。[4] 主导角色：Software Development Manager (SDM), Software Development Engineer (SDE), Product Manager – Technical (PMT), Technical Program Manager (TPM)&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>如何作提案</title><link>https://blog.nicelylit.net/posts/%E5%A6%82%E4%BD%95%E4%BD%9C%E6%8F%90%E6%A1%88/</link><pubDate>Wed, 27 Sep 2023 00:00:00 +0000</pubDate><guid>https://blog.nicelylit.net/posts/%E5%A6%82%E4%BD%95%E4%BD%9C%E6%8F%90%E6%A1%88/</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></item><item><title>有关工具的思考</title><link>https://blog.nicelylit.net/posts/%E5%B7%A5%E5%85%B7/</link><pubDate>Sat, 11 Feb 2023 00:00:00 +0000</pubDate><guid>https://blog.nicelylit.net/posts/%E5%B7%A5%E5%85%B7/</guid><description>&lt;p&gt;2023-03-03&lt;/p&gt;
&lt;p&gt;做工具的主人要有积极的态度与恰当的方法。方法恰当却态度不积极，是工具的敌人。方法不恰当态度积极，是工具的学徒。方法不恰当还态度不积极，是工具的奴隶。傲慢使人成为工具的敌人，懒惰使人成为工具的奴隶。人极容易沦为工具的奴隶。实际上，持有积极的态度已经是在运用恰当的方法。&lt;/p&gt;
&lt;p&gt;2023-03-02&lt;/p&gt;
&lt;p&gt;能不能、行不行、有没有，这样的问题总是充满挑战。若是能、行、有，也就不成为问题。问题，是困惑，是不满，是视野的狭窄，是内心的闭塞，是心胸的狭隘。解决问题，需要创造工具，而创造工具的方法永远都是要拓宽视野，开放内心，打开胸怀。心怀天下，不是一句抒情，而是真的装着每个人的困惑、不安与无奈。&lt;/p&gt;
&lt;p&gt;2023-03-01&lt;/p&gt;
&lt;p&gt;服务具有人的主观性，是人与人来往的途径，也表露着人的动机与目的。人们将客观的一般工具看作是无善恶的，但服务却有善恶。火药可以用来开山通路，也可以用来杀人，开山通路不一定都是善的，杀人也不全然是恶的。&lt;/p&gt;
&lt;p&gt;2023-02-28&lt;/p&gt;
&lt;p&gt;人活着的价值在于服务他人。价值于服务中体现，这是生存的需要，是成长的需要，是从痛苦中解脱的需要。劳动创造价值，服务背后是艰辛的劳动。&lt;/p&gt;
&lt;p&gt;2023-02-27&lt;/p&gt;
&lt;p&gt;服务是一类特殊的工具。相比于一般的工具，服务中留存的人的意图更鲜明、主观性更强，需求被满足得更及时。服务的形态更多是人对人的，而不像一般工具是人对物的。&lt;/p&gt;
&lt;p&gt;2023-02-26&lt;/p&gt;
&lt;p&gt;软件工具满足了人便捷、快速、大量地处理信息的需要。一切人所形成的观念都能表示成信息。处理信息在不同情形中侧重点不同，有的侧重计算的执行，有的侧重信息的存储和传输，还有的侧重硬件的操控。&lt;/p&gt;
&lt;p&gt;2023-02-25&lt;/p&gt;
&lt;p&gt;工具的操作界面是创造者意图的留存与妥协。在使用者操作工具之时，是两者意念上的相合。人与人之间意念的相合是超越观念的。&lt;/p&gt;
&lt;p&gt;2023-02-24&lt;/p&gt;
&lt;p&gt;工具必须可操作。操作工具，需要对应的能力，需要清晰的预期，需要针对意外的处理方法。人的能力通过操作转移到工具上，像是工具具备了某种能力。&lt;/p&gt;
&lt;p&gt;2023-02-23&lt;/p&gt;
&lt;p&gt;找到工具意味着工具可被定位。定位就要有方向和位置，尽管描述方向和位置的形式各异，但都需要先建立起空间的观念，并在空间上进行分割形成区域后进行命名或编号。时间是人与人之间用来协调与同步的工具。朝代是叙述历史的工具，定位朝代，要先建立起轴的观念，再进行分段和命名。&lt;/p&gt;
&lt;p&gt;2023-02-22&lt;/p&gt;
&lt;p&gt;对比就是个强大的工具。心中有了差异，才造成了真的差异。平等是差异产生后和而不同的状态，在无差异之前，也无所谓平等。使用对比这个工具就是主动让心中的差异浮现，自然地观察差异。&lt;/p&gt;
&lt;p&gt;2023-02-21&lt;/p&gt;
&lt;p&gt;观念（Idea）是对比的基础，一切都要形成观念才可以进行比较。观念通过语言来传达，肢体的、表情的、声音的、文字的。观察观念产生的来源是解读观念内涵与延伸的起点。观念的产生来源有外部的和内部的，外部通过感官刺激，内部通过心理活动和思维活动。&lt;/p&gt;
&lt;p&gt;2023-02-20&lt;/p&gt;
&lt;p&gt;知道此工具意味着此工具可被识别。这个有别于那个，因而这个是做这个的工具，那个是做那个的工具。识别产生于差异当中，可对比是可识别的前提。物质是可对比的，文字是可对比的，情绪和思想也都是可对比的。&lt;/p&gt;
&lt;p&gt;2023-02-19&lt;/p&gt;
&lt;p&gt;创造工具是为了构建使用的需要，是从多到一，是对过去的交代。创造汽车，构建了乘坐的需要。一辆汽车综合了耐磨的轮子、稳固的材料、宽敞的空间和充足的动力。汽车时代的到来，是马车时代的结束。&lt;/p&gt;
&lt;p&gt;2023-02-18&lt;/p&gt;
&lt;p&gt;使用工具是为了构建一种需要，是从一到多，是对未来的开创。拿杯子喝水，构建了止渴的需要。杯子可以用来喝水，也可以用来喝茶和果汁。一个废弃的杯子，可以拿来浇花，也可以用来做笔筒，还可以改造后做喇叭。开创总是要回到需要的，而需要从来都来自于人自身。&lt;/p&gt;
&lt;p&gt;2023-02-17&lt;/p&gt;
&lt;p&gt;知道和找到合适的工具是使用好工具的前提。知道有知道的方法，找到有找到的途径。广泛地阅读、观察和记忆是知道的方法，深入地列举、联想、比对和评价是找到的途径。广泛意味着保持开放、积极和谦卑，深入意味着保持好奇、勤奋和真诚。合适和好是理想，这样的理想藏在对痛苦和不满的消解之后。&lt;/p&gt;
&lt;p&gt;2023-02-16&lt;/p&gt;
&lt;p&gt;工具是手段、途径和方法的具象形态，它们同实而异名。工具的形态千变万化，可以是物质的、文字的、情绪的、思想的，还可以是人本身。人人都不愿被当作工具来使用，却也躲不开被当作工具的宿命。一个人若想不被别人当作工具，自己要先不把别人当作工具。这样的原则不是口头上的，而是发自内心的，内外统一的。&lt;/p&gt;
&lt;p&gt;2023-02-15&lt;/p&gt;
&lt;p&gt;创造并不比使用更高级，惊人的创造需要恰到好处的使用。创造面向未来，是从多到一，却也是对过去的交代。使用贴近过去，是从一到多，却也是对未来的开创。创造在求新求变的人眼里，要有创新，有创意，但在追本尚古的人眼中，只是水到渠成，因缘际会的结果。新意是对现存事物的不满，是对从痛苦中解脱的执着。&lt;/p&gt;
&lt;p&gt;2023-02-14&lt;/p&gt;
&lt;p&gt;人不仅是工具的使用者和创造者，还是维修者、改良者、推广者和拥有者。工具被人群广泛使用，不是一夜之间完成的，甚至不是一个时代所完成的。与一些经历成功改良和推广的工具的存续时间相比，一个人的寿命是极其短暂的。&lt;/p&gt;
&lt;p&gt;2023-02-13&lt;/p&gt;
&lt;p&gt;人是工具的使用者和创造者，不论作为哪个角色，都是为了构建活动。或者使用工具构建服务，或者使用旧工具构建新工具，人都是主体，也可以统称为构建者。举例来说，Java程序员是构建者，或者使用Java编译器构建Java应用服务于他人，或者使用旧版本的Java编译器构建新版本的Java编译器。&lt;/p&gt;
&lt;p&gt;2023-02-12&lt;/p&gt;
&lt;p&gt;工具是构建活动的必要元素。修房子需要建房的工具，造火箭需要制作火箭的工具，类似地，写软件或者软件服务，也需要趁手的工具。&lt;/p&gt;
&lt;p&gt;2023-02-11&lt;/p&gt;
&lt;p&gt;软件是构建得到的，而不只是编写的。编写只说了构建活动的一环，即编码，它侧重于编排与书写，可从活动整体看，更重要的是构架和建设。&lt;/p&gt;</description></item><item><title>购置个人台式机小记</title><link>https://blog.nicelylit.net/posts/%E8%B4%AD%E7%BD%AE%E4%B8%AA%E4%BA%BA%E5%8F%B0%E5%BC%8F%E6%9C%BA%E5%B0%8F%E8%AE%B0/</link><pubDate>Mon, 04 Apr 2022 00:00:00 +0000</pubDate><guid>https://blog.nicelylit.net/posts/%E8%B4%AD%E7%BD%AE%E4%B8%AA%E4%BA%BA%E5%8F%B0%E5%BC%8F%E6%9C%BA%E5%B0%8F%E8%AE%B0/</guid><description>&lt;h1 id="购置因由"&gt;购置因由
&lt;/h1&gt;&lt;p&gt;年初作计划时，重新对深入理解安卓系统发生了兴趣。四年前，曾尝试在Windows的虚拟机上编译，失败告终。如今不只是工作中需要相关知识，更是带着一种惊叹与好奇，想要更多地接近时代所造就的一些逻辑上的庞然大物中所潜藏的智能，以安抚生起的不平静的思绪与心情。&lt;/p&gt;
&lt;p&gt;细想来，只身在移动互联网和物联网的时代，对云与端的深入理解，在于系统而非应用。系统才是构建起端与云生态的支柱。云侧的分布式系统是端系统的放大版，其中的核心技术挑战所需要的方法与技能并没有超出端侧的系统太多，差别之处，仅仅是外在表现的形式。云侧的能力再庞大，没有端侧的呈现和交互也是空无意义。即便是端系统，其构建速度也已远超想象，令人望洋兴叹。开源的安卓系统无疑是一个宝藏，值得花些闲暇时间深入一番。&lt;/p&gt;
&lt;p&gt;三月初，又尝试在MacOS的虚拟机上编译，再次失败。原因是内存不足，虚拟机几乎全部的时间都在做内存磁盘交换，宿主机性能也下降明显，鼠标响应迟缓。&lt;a class="link" href="https://source.android.google.cn/setup/build/requirements" target="_blank" rel="noopener"
 &gt;官方文档&lt;/a&gt;推荐的硬件配置是至少16GB的内存，建议64GB。并举了两个例子说，72核上，一次完整编译用了40分钟，6核上，用了3个小时。我的笔记本配着英特尔i5双核四线程的处理器，4MB L3缓存，16GB DDR3 2133MHz内存。开始以为只是会慢，也还可以用，实测后表明不可行。因此，决定购买一台主机。&lt;/p&gt;
&lt;h1 id="购买过程"&gt;购买过程
&lt;/h1&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;这台新的主机大概率是要直接装Ubuntu系统的，我也不会拿它作娱乐用途，笔记本和手机已经足够。唯一剩下的用途就是深入学习系统，不只在软件层面，还应该包括硬件层面，以弥补大学期间实践上的不足。操作系统的一个核心价值就是管理硬件，若对硬件不了解，也就谈不上管理。借此机会，对硬件做些深入了解，也仍旧是对专业领域内知识的增长。端设备的数量并没有因为云的出现了变得更少，代码库也没有变得更简单。通用系统和专用系统中涉及到的取舍平衡，如何在技术实现上得到体现，是个有趣的问题。嵌入式的操作系统中即使没有桌面系统中一些庞大工具（编辑器、编译器等）的身影，但构建操作系统的平台工具中这些部分也不可缺少。总之，我又为其增加了许多的使用价值。即使只是编译、运行和调试安卓系统，也不会使用频率不高。&lt;/p&gt;
&lt;p&gt;作为个人台式机，我没有搭建服务器的需要，不会7*24小时的运行。不使用的时候及时关机就好了。处理器大多数时候并不会高负荷运行，总功耗应该超不过电冰箱。至于废弃和回收，从前疏于理会，但此间事物没有东西是不损耗以及不需要花精力去保持其功能和效用的，我应当调整自己去做好这方面的管理。&lt;/p&gt;
&lt;h2 id="决定亲手组装"&gt;决定亲手组装
&lt;/h2&gt;&lt;p&gt;坚定了意向，就开始实施。最初我还在整装机中挑选，列了几个挑选的严格条件：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;处理器要是i5或i7的，不能低于笔记本的配置；&lt;/li&gt;
&lt;li&gt;内存要至少32GB，或者可以扩容到32GB以上；&lt;/li&gt;
&lt;li&gt;固态硬盘至少要512GB，机械硬盘2T以上；&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;选了惠普、宏碁和戴尔的几款机器作了对比，比较下来，觉得惠普战99各方面都胜出，性价比高。可一想到硬件的扩展和维护，便觉得仍旧无法满足我的需求。我若没有亲历装机的过程，加装硬件可能还需要找人，而这样的事情很可能发生在内存和硬盘的升级方面。惠普战99的固态硬盘过小，销售网站也不支持直接加装和改造；内存的上限虽然适中，但原装的16GB可能也不够用。因此，决定亲手组装。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;名称&lt;/th&gt;
 &lt;th&gt;&lt;a class="link" href="https://item.jd.com/100016998929.html" target="_blank" rel="noopener"
 &gt;惠普HP小欧S01&lt;/a&gt; S01-pF277rcn&lt;/th&gt;
 &lt;th&gt;&lt;a class="link" href="https://item.jd.com/100011323001.html" target="_blank" rel="noopener"
 &gt;惠普(HP)战99&lt;/a&gt; HP ZHAN 99 Pro G4 MT&lt;/th&gt;
 &lt;th&gt;&lt;a class="link" href="https://item.jd.com/100030742808.html" target="_blank" rel="noopener"
 &gt;惠普HP小欧S01&lt;/a&gt; S01-pF254rcn&lt;/th&gt;
 &lt;th&gt;&lt;a class="link" href="https://item.jd.com/100021163396.html" target="_blank" rel="noopener"
 &gt;宏碁(Acer)商祺SQX4270 786N&lt;/a&gt;&lt;/th&gt;
 &lt;th&gt;&lt;a class="link" href="https://item.jd.com/100020307688.html" target="_blank" rel="noopener"
 &gt;戴尔dell成就3690&lt;/a&gt; Vostro 3690-R14NBR&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;价格&lt;/td&gt;
 &lt;td&gt;京东4899元&lt;/td&gt;
 &lt;td&gt;京东5499元&lt;/td&gt;
 &lt;td&gt;京东3199元&lt;/td&gt;
 &lt;td&gt;京东5499元&lt;/td&gt;
 &lt;td&gt;京东3799元&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;体积&lt;/td&gt;
 &lt;td&gt;长29cm 宽9.5cm 高27cm 体积7.4L&lt;/td&gt;
 &lt;td&gt;长27.7cm 宽17cm 高33.8cm 体积15.9L&lt;/td&gt;
 &lt;td&gt;长29cm 宽9.5cm 高27cm 体积7.4L&lt;/td&gt;
 &lt;td&gt;长30.79cm 宽10.2cm 高33.2cm 体积10.4L&lt;/td&gt;
 &lt;td&gt;长29cm 宽9.26cm 高29.28cm 体积7.9L&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;重量&lt;/td&gt;
 &lt;td&gt;毛重5.5kg 净重3.0kg&lt;/td&gt;
 &lt;td&gt;毛重7.75kg&lt;/td&gt;
 &lt;td&gt;毛重5.95kg 净重3.0kg&lt;/td&gt;
 &lt;td&gt;毛重6.6kg&lt;/td&gt;
 &lt;td&gt;毛重5.85kg 净重4.1kg&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;td&gt;纯黑 尖角 左下角网孔&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;能耗&lt;/td&gt;
 &lt;td&gt;180W电源&lt;/td&gt;
 &lt;td&gt;典型能源消耗656kWh&lt;/td&gt;
 &lt;td&gt;180W电源&lt;/td&gt;
 &lt;td&gt;300W电源&lt;/td&gt;
 &lt;td&gt;典型能源消耗184kWh&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;测试&lt;/td&gt;
 &lt;td&gt;3.9万小时测试 230项测试 2000小时风扇满荷测试&lt;/td&gt;
 &lt;td&gt;105万小时无故障认证&lt;/td&gt;
 &lt;td&gt;3.9万小时测试 230项测试 2000小时风扇满荷测试 20万小时无故障&lt;/td&gt;
 &lt;td&gt;无数据&lt;/td&gt;
 &lt;td&gt;50项出厂测试&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;硬件接口&lt;/td&gt;
 &lt;td&gt;前置1个电源键 前置1个音频接口 前置预留光驱位 前置4个USB 3.2 Gen1 后置2个音频接口 后置1个VGA接口 后置1个HDMI接口 后置1个网络接口 后置4个USB 2.0 后置1个电源接口 内置PCIe x 16插槽 内置PCIe x 1插槽 内置2个内存插槽&lt;/td&gt;
 &lt;td&gt;前置1个电源键 前置1个音频接口 前置预留光驱位 前置4个USB 3.2 Gen1 前置2个USB 3.2 Gen2 后置2个音频接口 后置1个VGA接口 后置1个HDMI接口 后置1个串口 后置1个RJ-45网络接口 后置2个USB 2.0 后置1个电源接口 后置标准锁槽 后置集成配件电缆锁 后置挂环锁 内置系统风扇 内置CPU风扇&lt;/td&gt;
 &lt;td&gt;前置1个电源键 前置1个音频接口 前置预留光驱位 前置4个USB 3.2 Gen1 后置2个音频接口 后置1个VGA接口 后置1个HDMI接口 后置1个网络接口 后置4个USB 2.0 后置1个电源接口 内置PCIe x 16插槽 内置PCIe x 1插槽 内置2个内存插槽&lt;/td&gt;
 &lt;td&gt;前置1个开机键 前置1个重启键 前置1个电源灯 前置1个HDD灯 前置1个网络灯 前置2个音频接口 前置4个USB 3.2 Gen1 后置3个音频接口 后置1个HDMI接口 后置1个VGA接口 后置4个USB 2.0 后置1个RJ-45网络接口 后置2个PS2串口 后置1个电源接口 后置1个Kinsington锁孔 后置1个理线架 内置1个3.5英寸硬盘位 内置1个2.5英寸硬盘位&lt;/td&gt;
 &lt;td&gt;前置1个电源键 前置1个HDD灯 前置1个音频接口 前置2个USB 2.0 前置2个USB 3.2 Gen1 后置1个音频接口 后置1个HDMI接口 后置1个VGA接口 后置2个USB 2.0 后置2个USB 3.2 Gen1 后置1个前兆以太网接口 后置1个电源接口 后置1个电源指示灯 内置2个内存插槽&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;软件接口&lt;/td&gt;
 &lt;td&gt;支持蓝牙4.2 支持Wi-Fi&lt;/td&gt;
 &lt;td&gt;支持蓝牙 支持Wi-Fi 802.11ac 2.4GHz/5GHz双频&lt;/td&gt;
 &lt;td&gt;支持蓝牙4.2 支持Wi-Fi&lt;/td&gt;
 &lt;td&gt;支持蓝牙4.2 支持Wi-Fi 802.11ac&lt;/td&gt;
 &lt;td&gt;支持Wi-Fi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;主板&lt;/td&gt;
 &lt;td&gt;芯片组H570 集成声卡 集成显卡 无线网卡&lt;/td&gt;
 &lt;td&gt;芯片组H570 独立显卡&lt;/td&gt;
 &lt;td&gt;芯片组H570 集成声卡 集成显卡 无线网卡&lt;/td&gt;
 &lt;td&gt;芯片组H510 独立显卡&lt;/td&gt;
 &lt;td&gt;芯片组B560 集成显卡&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;处理器&lt;/td&gt;
 &lt;td&gt;Intel第十代i7-10700 8核16线程&lt;/td&gt;
 &lt;td&gt;Intel第十一代i7-11700 2.5GHz 8核16线程 三级缓存16MB&lt;/td&gt;
 &lt;td&gt;Intel第十代i5-10400 6核12线程&lt;/td&gt;
 &lt;td&gt;Intel第十一代i7-11700 8核16线程&lt;/td&gt;
 &lt;td&gt;Intel第十一代i5-11400 6核12线程 三级缓存12MB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;内存&lt;/td&gt;
 &lt;td&gt;16GB DDR4 2933MHz 最大容量32GB&lt;/td&gt;
 &lt;td&gt;16GB DDR4 2933MHz 最大容量64GB&lt;/td&gt;
 &lt;td&gt;8GB DDR4 2666MHz 最大容量32GB&lt;/td&gt;
 &lt;td&gt;16GB DDR4 2666MHz 最大容量32GB&lt;/td&gt;
 &lt;td&gt;16GB DDR4 2933MHz 最大容量64GB&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;硬盘&lt;/td&gt;
 &lt;td&gt;512GB PCIe M.2 SSD&lt;/td&gt;
 &lt;td&gt;2块1TB的3.5英寸HDD 7200rpm 1块256GB的M.2 SSD 最大支持2TB机械硬盘 最大支持1TB固态硬盘&lt;/td&gt;
 &lt;td&gt;1块1TB HDD 7200rpm 1块256GB SSD&lt;/td&gt;
 &lt;td&gt;1块1TB HDD 7200rpm 1块512GB SSD 最大支持512GB固态硬盘&lt;/td&gt;
 &lt;td&gt;1块1TB的3.5英寸HDD 7200rpm 1块256GB的M.2 SSD&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;显卡&lt;/td&gt;
 &lt;td&gt;集成UHD630&lt;/td&gt;
 &lt;td&gt;NVIDIA GeForce GTX 1660 2GB独立显存&lt;/td&gt;
 &lt;td&gt;集成UHD630&lt;/td&gt;
 &lt;td&gt;NVIDIA GeForce GT 730 2GB独立显存&lt;/td&gt;
 &lt;td&gt;集成UHD730&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;附赠&lt;/td&gt;
 &lt;td&gt;1个有线键盘 1个有线鼠标 1条电源线 1份保修卡&lt;/td&gt;
 &lt;td&gt;1个有线键盘 1个有线鼠标 1条电源线 1份保修卡&lt;/td&gt;
 &lt;td&gt;1个有线键盘 1个有线鼠标 1条电源线 1份保修卡&lt;/td&gt;
 &lt;td&gt;1个有线键盘 1个有线鼠标 1条电源线 1份保修卡&lt;/td&gt;
 &lt;td&gt;1个有线键盘 1个有线鼠标 1条电源线 1份保修卡&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;操作系统&lt;/td&gt;
 &lt;td&gt;Windows 11&lt;/td&gt;
 &lt;td&gt;Windows 11&lt;/td&gt;
 &lt;td&gt;Windows 11&lt;/td&gt;
 &lt;td&gt;Windows 10 64位家庭版&lt;/td&gt;
 &lt;td&gt;Windows 10&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;应用软件&lt;/td&gt;
 &lt;td&gt;预装正版Office家庭和学生版&lt;/td&gt;
 &lt;td&gt;预装正版Office家庭和学生版 Office必须要6个月内激活&lt;/td&gt;
 &lt;td&gt;预装正版Office家庭和学生版&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;标准保修是四年，光驱和外部设备一年。 升级保修五年，需要购买半年内绑定微信公众号注册捆绑成功后才可享受。显示器享受三年保修，一年上门服务。 微信公众号“惠普服务”，输入“保修升级”。 激活Windows和Office后的主机不能享受7天无理由退换货。&lt;/td&gt;
 &lt;td&gt;标准保修是主要部件两年，其他部件一年。 升级保修五年，需要购买半年内绑定微信公众号注册捆绑成功后才可享受。显示器享受三年保修，一年上门服务。 微信公众号“惠普服务”，输入“保修升级”。&lt;/td&gt;
 &lt;td&gt;三年有限上门保修。主要部件三年，其他部件一年。 微信公众号“Acer宏碁服务”。&lt;/td&gt;
 &lt;td&gt;三年整机上门保修。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;售后电话&lt;/td&gt;
 &lt;td&gt;固话 800-820-6616 手机 400-885-6616&lt;/td&gt;
 &lt;td&gt;固话 800-810-3888 手机 400-610-3888&lt;/td&gt;
 &lt;td&gt;固话 800-820-6616 手机 400-885-6616&lt;/td&gt;
 &lt;td&gt;手机 400-700-0118&lt;/td&gt;
 &lt;td&gt;固话 800-858-2968 手机 400-886-8611&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="围绕机箱规划"&gt;围绕机箱规划
&lt;/h2&gt;&lt;p&gt;挑选组装配件前，先从机箱入手，找了些视频和京东的商品对比。这样做是考虑到，最终放在家里的并不是一个个的配件，而是一个机箱，从它的物理参数开始，对内部的构造作全面的了解总是没错的。两个入门视频，质量一般，但基本的信息量也足够一个新人消化的。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.bilibili.com/video/BV1C44y1C78v?from=search&amp;amp;seid=12190182940006320483&amp;amp;spm_id_from=333.337.0.0" target="_blank" rel="noopener"
 &gt;机箱篇：机箱选购指南（含机箱推荐）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.bilibili.com/video/BV1nt411v79G?from=search&amp;amp;seid=12190182940006320483&amp;amp;spm_id_from=333.337.0.0" target="_blank" rel="noopener"
 &gt;电脑机箱篇-科普机箱尺寸和风道的知识，以后买机箱不会懵逼了&lt;/a&gt;&lt;/li&gt;
&lt;/ul&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;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;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.bilibili.com/video/BV1k64y1h7QP/?spm_id_from=333.788.recommend_more_video.-1" target="_blank" rel="noopener"
 &gt;装机不求人之：硬件基础讲解，零基础新手打造电脑配置单教程。一站式台式机DIY入门指南！游戏主机/生产力主机全攻略！&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.bilibili.com/video/BV1jR4y1c71a?spm_id_from=333.999.0.0" target="_blank" rel="noopener"
 &gt;史上最强！主板选购万能攻略。一站式主板基础知识入门指南！带你全面了解主板基础参数！&lt;/a&gt;&lt;/li&gt;
&lt;/ul&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;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.bilibili.com/video/BV1UU4y1c74o?p=1" target="_blank" rel="noopener"
 &gt;装机不求人之：史上最详细传说级装机教程，零基础新手一站式装机攻略。内含AMD、Intel双平台DIY组装教程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.bilibili.com/video/BV1jE411e7hw?p=1" target="_blank" rel="noopener"
 &gt;这可能是你能在网上找到最详细的装机教程&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;挑选主板，先看主板品牌，再看主板人气排行，同时要权衡价格。为了避免质量上的风险，我只看了京东自营的商品。最终下载了华硕的以下两款说明书，详细地进行阅读。阅读中，一方面是熟悉主板上的空间结构、插槽用途、插槽标准，另一方面是要搞清楚匹配的配件有哪些。虽然华硕官网可以查到些推荐的配件品牌和型号，但仍旧不够全面。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.asus.com.cn/Motherboards-Components/Motherboards/TUF-Gaming/TUF-GAMING-B660M-PLUS-WIFI-D4/HelpDesk_Manual/" target="_blank" rel="noopener"
 &gt;TUF GAMING B660M-PLUS WIFI D4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.asus.com.cn/Motherboards-Components/Motherboards/PRIME/PRIME-B660M-A-WIFI-D4/HelpDesk_Manual/" target="_blank" rel="noopener"
 &gt;PRIME B660M-A WIFI D4&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在整体计划方面，我考虑了挑选的方法、配件间的兼容性、机器的组装以及操作系统的安装，却忽视了配送过程和硬件驱动的安装。导致下单后更换了内存，配置过程中，系统安装花费了很大的精力。不过好在，软件是我擅长的部分，不需要联系客服，也算不上规划上的失误，只能说，即便当下个性化组装盛行，接口设计已经十分友好，个性化定制也依旧是个复杂的事情。&lt;/p&gt;
&lt;h2 id="选定配件清单"&gt;选定配件清单
&lt;/h2&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;th&gt;长 (cm)&lt;/th&gt;
 &lt;th&gt;宽 (cm)&lt;/th&gt;
 &lt;th&gt;高 (cm)&lt;/th&gt;
 &lt;th&gt;重量 (kg)&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;a class="link" href="https://item.jd.com/100031223640.html" target="_blank" rel="noopener"
 &gt;TUF GAMING B660M PLUS WI-FI D4&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;24.4&lt;/td&gt;
 &lt;td&gt;24.4&lt;/td&gt;
 &lt;td&gt;~5&lt;/td&gt;
 &lt;td&gt;1.6&lt;/td&gt;
 &lt;td&gt;1037&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;a class="link" href="https://item.jd.com/100026951642.html" target="_blank" rel="noopener"
 &gt;12600KF&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;4.5&lt;/td&gt;
 &lt;td&gt;3.75&lt;/td&gt;
 &lt;td&gt;~0.5&lt;/td&gt;
 &lt;td&gt;0.088&lt;/td&gt;
 &lt;td&gt;1926&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;a class="link" href="https://item.jd.com/100004036677.html" target="_blank" rel="noopener"
 &gt;TL-AS120&lt;/a&gt;+&lt;a class="link" href="https://item.jd.com/100015718719.html" target="_blank" rel="noopener"
 &gt;LGA17XX-SS2&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;12&lt;/td&gt;
 &lt;td&gt;7.3&lt;/td&gt;
 &lt;td&gt;15.4&lt;/td&gt;
 &lt;td&gt;0.935&lt;/td&gt;
 &lt;td&gt;142.4&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;a class="link" href="https://item.jd.com/100005171175.html" target="_blank" rel="noopener"
 &gt;复仇者LPX DDR4 3600 64GB(32G×2)&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;13.5&lt;/td&gt;
 &lt;td&gt;3.35&lt;/td&gt;
 &lt;td&gt;0.7&lt;/td&gt;
 &lt;td&gt;~0.1&lt;/td&gt;
 &lt;td&gt;2368&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;a class="link" href="https://item.jd.com/100019517363.html" target="_blank" rel="noopener"
 &gt;SN770 1TB&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;2.2&lt;/td&gt;
 &lt;td&gt;0.238&lt;/td&gt;
 &lt;td&gt;0.041&lt;/td&gt;
 &lt;td&gt;868&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;a class="link" href="https://item.jd.com/100024901908.html" target="_blank" rel="noopener"
 &gt;GeForce GT730-SL-2GD5-BRK GDDR5 2GB&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;17&lt;/td&gt;
 &lt;td&gt;~4&lt;/td&gt;
 &lt;td&gt;~6&lt;/td&gt;
 &lt;td&gt;0.455&lt;/td&gt;
 &lt;td&gt;496&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;a class="link" href="https://item.jd.com/7546124.html" target="_blank" rel="noopener"
 &gt;HGE650&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;17&lt;/td&gt;
 &lt;td&gt;15&lt;/td&gt;
 &lt;td&gt;8.6&lt;/td&gt;
 &lt;td&gt;2.68&lt;/td&gt;
 &lt;td&gt;599&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;a class="link" href="https://item.jd.com/100025663574.html" target="_blank" rel="noopener"
 &gt;平头哥M2&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;40 (&amp;gt; 24.4)&lt;/td&gt;
 &lt;td&gt;20.5 (&amp;gt; 15.4)&lt;/td&gt;
 &lt;td&gt;38 (&amp;gt; 30.75)&lt;/td&gt;
 &lt;td&gt;4.6&lt;/td&gt;
 &lt;td&gt;99&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;a class="link" href="https://item.jd.com/1026103.html" target="_blank" rel="noopener"
 &gt;游戏风暴&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;12&lt;/td&gt;
 &lt;td&gt;12&lt;/td&gt;
 &lt;td&gt;2.5&lt;/td&gt;
 &lt;td&gt;0.1&lt;/td&gt;
 &lt;td&gt;9.9*3&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;40&lt;/td&gt;
 &lt;td&gt;20.5&lt;/td&gt;
 &lt;td&gt;38&lt;/td&gt;
 &lt;td&gt;10.6&lt;/td&gt;
 &lt;td&gt;7565.1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;体积方面，主机箱的长取决于主板的长，宽取决于散热器的高，高取决于主板的宽加电源的高。重量方面，机箱、电源和主板占大头。表中有些数据用的是商品介绍中的毛重，即带着纸箱的重量，实际应该会轻个一两公斤，没有实测。价格方面，内存、处理器和主板占大头，这也符合我的需求；硬盘、电源和显卡是下一梯队；散热器、机箱和风扇较为廉价，我没有RGB灯的需求，似乎有点浪费主板的针脚，可我也没配机械硬盘，满足需求就好，关键要过心理关。&lt;/p&gt;
&lt;p&gt;内存最初选了金士顿KF432C16BBK2 DDR4，但两天过后，仍旧不发货，状态总变，于是换了64GB榜单中排名第二的美商海盗船。价格虽然贵了两百左右，但频率也有提升。显卡最初选了华硕PH GeForce GT1030-O2G 1252-1531MHz GDDR5，但下单前突然缺货，便换了差一些的GT730，也完全够用。电源曾想选全汉MS600，SFX的电源，其中虽然包含了ATX的转换面板，但还是担心模线长度不够在MATX的机箱中走线，只好牺牲小重量而取了大长度。&lt;/p&gt;
&lt;h1 id="装机过程"&gt;装机过程
&lt;/h1&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;h2 id="描述成功状态"&gt;描述成功状态
&lt;/h2&gt;&lt;div class="floatblock floatblock-right brand-block" style="--floatblock-w: 480px;"&gt;
 
&lt;img src="https://blog.nicelylit.net/wp-content/uploads/2022/04/image1.png" alt="logo" style="max-width:480px; margin: 0 auto 12px;"&gt;

&lt;/div&gt;
&lt;p&gt;在观看装机视频过程中，注意到成功的开机状态应该是在显示器上看到类似下面图片一样的界面。具体来说，至少应当包含以下三个方面：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;硬件自检程序完成，进入UEFI BIOS界面，并能看到所有硬件的状态；&lt;/li&gt;
&lt;li&gt;查看各个硬件信息是否符合商品描述；&lt;/li&gt;
&lt;li&gt;查看机箱前面板和后面板的接口是否都能正常工作。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;前两步到BIOS出现，基本可以算硬件没有故障。第三步需要装上操作系统后再实测以下，特别是网络接口和音频接口。显示器接口、电源开关、重启开关、电源指示灯和USB接口在BIOS阶段也都会得到检查。只要不是硬件的问题，就能省去沟通客服的麻烦。&lt;/p&gt;
&lt;h2 id="划分大的阶段"&gt;划分大的阶段
&lt;/h2&gt;&lt;p&gt;我给自己设定了两个阶段的目标。第一阶段，将配件全部组装好放入机箱后，不完全拧上8个固定螺丝，接好线，不扣主机盖，只接一个机箱风扇，不理线，插上电源线和显示器查看状态；第二阶段，将前面剩余的步骤全部做完，再作测试和检查。&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;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;
&lt;div class="floatblock floatblock-right brand-block" style="--floatblock-w: 480px;"&gt;
 
&lt;img src="https://blog.nicelylit.net/wp-content/uploads/2022/04/image2.jpg" alt="logo" style="max-width:480px; margin: 0 auto 12px;"&gt;

&lt;/div&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;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;
&lt;h2 id="检验步骤和注意事项"&gt;检验步骤和注意事项
&lt;/h2&gt;&lt;p&gt;主要的接线检查：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;电源接主板20+4pin&lt;/li&gt;
&lt;li&gt;电源接处理器8+4pin或8pin&lt;/li&gt;
&lt;li&gt;散热器风扇接主板4pin&lt;/li&gt;
&lt;li&gt;前面板接主板USB 3.0 19针 角缺一针&lt;/li&gt;
&lt;li&gt;前面板接主板USB 2.0 9针 角缺一针&lt;/li&gt;
&lt;li&gt;前面板接音频 9针 边缺一针&lt;/li&gt;
&lt;li&gt;前面板电源指示灯接主板 2pin 分正负极&lt;/li&gt;
&lt;li&gt;前面板硬盘指示灯接主板 2pin 分正负极&lt;/li&gt;
&lt;li&gt;前面板电源开机键接主板 2pin&lt;/li&gt;
&lt;li&gt;前面板电源重启键接主板 2pin&lt;/li&gt;
&lt;li&gt;机箱风扇接主板 4pin/3pin&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;由于我的配置简单，没有外挂的硬盘，显卡低端不需要单独供电，不玩灯效不需要考虑LED等的接线。电源出来的线只有两条。没有配置外挂的硬盘，也造成机箱头轻脚重。&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;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;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;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.bilibili.com/video/BV1UY411W7Y9?spm_id_from=333.999.0.0" target="_blank" rel="noopener"
 &gt;电脑点不亮？黑屏？重启？ 史上最强电脑问题排查诊断攻略！装机不求人系列【超详细】&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="处理意外情况"&gt;处理意外情况
&lt;/h2&gt;&lt;p&gt;注意事项越是做到提前心理有数，就越能避免意外的发生。不过也要减少过度担心，对于好的产品，工程师一定比用户有更加充分的考量。这次装机中，我过度担心风扇的3pin接口，插左插右的问题，网上也没人提，实际发现主板上做了很好的提示和兼容，不存在插错的问题。执行过程整体上比较顺利，一次成功，但也有两个小意外和一个大意外，但都还能独自处理。&lt;/p&gt;
&lt;p&gt;第一个小意外是，处理器盖子打开的方向和下压时的力度让人错愕。处理器的塑料保护盖没有在最下面的时候脱落，而是压到一半时候脱落，以为搞错了主板和处理器的型号，不过后来还是大胆地压了下去。&lt;/p&gt;
&lt;p&gt;第二个小意外是，机箱显卡槽位凸起对HDMI接口产生遮挡导致显卡的HDMI接口插不到底。想来这样的问题很难在网络挑选过程中发现，无奈只好让显卡不能垂直固定，偏了一定的角度。后面查看用户评论时候，有人也遇到过类似的问题，觉得这样做问题不大，我却有些担心长期如此造成PCIe插槽的形变。不过我嫌重新挑选和退换货麻烦，只能接受这点瑕疵。&lt;/p&gt;
&lt;p&gt;最大的意外是，因为疏忽了主机箱中有三种螺丝，导致固定主板时候出现滑丝。支撑主板的螺柱需要匹配直径小一点的螺丝，我没对螺丝分类，随机抓了个大的，导致螺丝拧不到底，固定不了主板，可反向松开，还把螺柱给带起来了。解决这个问题的关键是要将大号的螺丝从螺柱上拧下来，这步无论如何都要面对。基本思路是一只手用老虎钳夹住螺柱，同时另一只手松螺丝。随之产生了两种思路，一种是直接在机箱上操作，另一种是把主板取下来操作。第一种思路下，要在机箱上进一步固定紧螺柱，主板的背面螺柱会露出较长的部分，可以用老虎钳夹住，但由于机箱前面板和上面板的遮挡，看不清转动的位置，用力过大害怕直接把旁边的针脚碰断，也怕脱手直接将螺丝刀杵到主板上。另外，老虎钳夹住的部分并不算太长，若将眼睛放在主板背面，就顾及不到前面。若有两人，或许这种方法还可行。最终还是采用了第二种思路，折腾了许久才得到解决，代价是划伤了桌面。&lt;/p&gt;
&lt;p&gt;最后，还是应该配上第一时间成功点亮的照片，以作纪念。&lt;/p&gt;
&lt;p&gt;&lt;img alt="2065412220" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.nicelylit.net/wp-content/uploads/2022/04/2065412220.jpg"&gt;&lt;/p&gt;
&lt;h1 id="配置过程"&gt;配置过程
&lt;/h1&gt;&lt;h2 id="五个困难"&gt;五个困难
&lt;/h2&gt;&lt;p&gt;配置过程提前没做太多规划，只粗略地规划了以下三项：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;阅读官方BIOS文档&lt;/li&gt;
&lt;li&gt;制作USB启动盘&lt;/li&gt;
&lt;li&gt;安装操作系统&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;此前有安装操作系统的经验和配置安卓系统编译环境的经验，因而只规划到了安装完操作系统为止，但实际上离成功在模拟器上运行安卓系统还有很远的距离。不过，如前所言，软件的领域，我应当能去解决所有遇到的问题。具体遇到的问题有以下五个：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ubuntu 18.04提示有线网卡芯片无法识别，安装程序直接退出关机；&lt;/li&gt;
&lt;li&gt;Ubuntu 20.04与21.10无法识别无线网卡和蓝牙，驱动无法加载；&lt;/li&gt;
&lt;li&gt;家中没有有线鼠标，键盘无法操控每一个图形界面的功能；&lt;/li&gt;
&lt;li&gt;存放安卓开源系统的移动硬盘是苹果的文件系统，Ubuntu无法直接挂载；&lt;/li&gt;
&lt;li&gt;安卓模拟器无法正常加载系统。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="解决方法"&gt;解决方法
&lt;/h2&gt;&lt;p&gt;针对问题1，遇到的错误提示为“r8169 0000:05:00.0: unknown chip XID 641”。r8169是Realtek网络接口控制器的编号，这个错误意思应该是操作系统无法识别有线网卡，无法利用有线网卡控制器，因此不能进行后续安装。解决方法是安装高版本的20.04或者21.10，高版本内核中解决了这个问题。&lt;/p&gt;
&lt;p&gt;针对问题2，遇到的情况是，设置面板中无法设置无线网络和蓝牙。执行命令“sudo dmesg | grep iwlwifi”，发现驱动无法加载。查看英特尔官网和Linux固件的代码库，均找不到错误提示中所要求的驱动版本。安装最新的驱动，执行“ls /lib/firmware/iwlwifi-*”查看后也依旧不解决问题。最后发现是内核和固件驱动不匹配，需要内核与固件都升到最新。内核从5.13升级到了&lt;a class="link" href="https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.17.1/" target="_blank" rel="noopener"
 &gt;5.17&lt;/a&gt;。固件从默认升级到了&lt;a class="link" href="http://ftp.sjtu.edu.cn/ubuntu/pool/main/l/linux-firmware/linux-firmware_20220329.git681281e4-0ubuntu1_all.deb" target="_blank" rel="noopener"
 &gt;20220329的版本&lt;/a&gt;。具体做法可参考以下的三篇文章：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.csdn.net/chepwavege/article/details/123390479" target="_blank" rel="noopener"
 &gt;新电脑硬件DIY+ 安装Ubutun 18.04+排雷&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.csdn.net/qq_18683985/article/details/79961378" target="_blank" rel="noopener"
 &gt;更新Ubuntu内核到最新版本&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://ubuntuhandbook.org/index.php/2022/03/linux-kernel-5-17-released/" target="_blank" rel="noopener"
 &gt;Linux kernel 5.17 Released! How to Install it in Ubuntu 22.04&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解决问题2的一个前提是必须要有网络，否则无法下载。好在读研究生时候的一条网线留着还能用。另一个前提是最好把问题3给解决了，否则，没有鼠标极难操控。这个问题说容易也容易，说麻烦也麻烦。说容易是因为，随便找一个有线鼠标就能解决问题。说麻烦恰恰是因为我不想买这个有线鼠标。最终倒腾许久找到了一个解决方案。手上罗技的鼠标支持无线发射器模式，驱动控制和配对可以通过安装一个名为Solaar的程序完成。有了鼠标后，一切都变得高效起来。有了鼠标，连上无线和蓝牙，第一件事情就是检查音频接口。能走到这里，USB接口基本都检查过了，剩下几个后面板的USB是主板自带的，出故障概率不大。有线网络接口也检查过了，否则无线和蓝牙也用不了。其他的开机键、重启键、指示灯也都通过了检查。&lt;/p&gt;
&lt;p&gt;针对问题4，解决思路是把移动硬盘挂回到苹果笔记本，通过开启苹果笔记本的远程登录，用scp命令进行复制。在一个局域网中传输速度也有20MB/s，166GB传输需要2.4小时。&lt;/p&gt;
&lt;p&gt;针对问题5，前后编译了三个目标，前两次遇到的错误不同，第三次成功运行。第一次错误提示是一个音频的函数执行出错，现象是一个古老版本的模拟器界面被运行，但有该错误日志且系统并没有被启动起来。第二次错误提示是userdata-qemu.img文件不存在，并且模拟器的运行界面也没有运行。这三次编译都顺利完成，解决前两次模拟器运行的失败，大概需要增加特定的模拟器启动的参数，网络上不太容易找到直接的解决方案。如果要自己琢磨出解决方案，需要对模拟器参数和编译产物有较多的理解，暂且搁置。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;aosp_cf_x86_64_phone-userdebug&lt;/li&gt;
&lt;li&gt;aosp_x86_64-eng&lt;/li&gt;
&lt;li&gt;sdk_phone_x86_64&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img alt="2065412220" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.nicelylit.net/wp-content/uploads/2022/04/Screenshot-from-2022-04-03-12-07-06.png"&gt;&lt;/p&gt;
&lt;h2 id="编译性能"&gt;编译性能
&lt;/h2&gt;&lt;p&gt;性能方面，第一次编译，耗时近两个小时。这个记录不及官方72核的40分钟，但却好过6核的3个小时。16核的算力还算不错。内存消耗没有想象中那么多，始终稳定在20%上下。处理器的温度在50摄氏度上下，固态硬盘的温度到了60摄氏度。第二次编译，耗时一小时一刻钟。第三次编译，耗时一刻钟，应该是复用了前两个编译目标的一些编译产物。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;#### build completed successfully (01:54:50 (hh:mm:ss)) ####&lt;/li&gt;
&lt;li&gt;#### build completed successfully (01:14:37 (hh:mm:ss)) ####&lt;/li&gt;
&lt;li&gt;#### build completed successfully (14:45 (mm:ss)) ####&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="小结"&gt;小结
&lt;/h1&gt;&lt;p&gt;这是一次有趣的购置体验，意外出现的量不小，但都还在个人以小时为单位能解决的范围内。从3月19日开始规划和调研，利用了三个周末和几个工作日的晚上，半个月顺利完成目标。归结下来，做成一件事，个人可控制的方面不外乎以下三点：&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></item><item><title>对研究的一点想法</title><link>https://blog.nicelylit.net/posts/%E5%AF%B9%E7%A0%94%E7%A9%B6%E7%9A%84%E4%B8%80%E7%82%B9%E6%83%B3%E6%B3%95/</link><pubDate>Sun, 29 Apr 2018 00:00:00 +0000</pubDate><guid>https://blog.nicelylit.net/posts/%E5%AF%B9%E7%A0%94%E7%A9%B6%E7%9A%84%E4%B8%80%E7%82%B9%E6%83%B3%E6%B3%95/</guid><description>&lt;p&gt;汉语中的“研究”，虽用了两个动词，但望文生义，更像是从研究的结果来代指研究。研，本义是磨碎、碾碎的意思，自然是个动词，然而，大多数的研究并不涉及研碎、碾碎的动作，所以想来，研虽是个动词，在这里却是拿状态来拓展字本身的含义，研究的最终结果往往都是长篇大论，犹如将东西磨碎、碾碎之后细柔绵绵。究，本义是穷、尽的意思，既能说是动词，也能说是副词或形容词，有种追问到底，探求到枯竭、空、无的含义。从构词上来看，研究，既可以看作是联谓式的，也能看做是述宾式的。不论构词怎样，这个词汇的构成，反映了汉语中描述研究，更强调的是结果、状态，而非过程。借助多个别的动作或一个动作的特殊状态来引申出一个完全不同的新词汇是汉语构词中常用的方式，比如关心、出版、告别等。&lt;/p&gt;
&lt;p&gt;英语中的“research“，由前缀re-和单词search，表明了研究就是再次搜索、重复搜索，更多的在强调方法和过程。借助一个前缀和一个动词来加强、否定动词的含义，从而构造新词是英语构词中常用的方式，比如disclose、appear、equivocate等。英语中这种构词法不同于汉语的地方是加前缀前后的两个动词之间的联系并不需要类比和联想来完成。&lt;/p&gt;
&lt;p&gt;这样两种截然不同的构词方式，反映了两种风格迥异的思维方式，也同时对语言的使用者带来了巨大的影响。以我个人成长的经历来看，参加工作之前，对待研究，探索毫无目的、方法可言，甚至都不明白启发式的含义，以为就是随机的搜索。甚至都谈不上搜索，没有目的的搜索，也只能叫乱碰乱撞，效率无疑是低下的。那时的我可能事无巨细，喜欢整齐、像模像样的实验报告，喜欢东看西看，浮游在知识的汪洋大海中，张嘴吃自己喜欢吃的东西，不知身边的境况如何。如今，虽仍旧陷落在同样的海洋中，但却有意识地检验、审视到嘴边的任何一件东西，而后才再去做下一次的搜索。有意识的检验，是将到嘴边的东西分解、剖开了，捡关键的，将其放置在不同的情境中，去重新搜索、验证。这样的思维方式的转变，不仅仅能给自己的带来认识这片海洋的信心，更多地是利用这片广阔的海洋，来认识海洋之外的世界——物质的世界、精神的世界、周遭的环境和棘手的难题。&lt;/p&gt;</description></item><item><title>像素密度和设备像素比</title><link>https://blog.nicelylit.net/posts/%E5%83%8F%E7%B4%A0%E5%AF%86%E5%BA%A6%E5%92%8C%E8%AE%BE%E5%A4%87%E5%83%8F%E7%B4%A0%E6%AF%94/</link><pubDate>Fri, 03 Feb 2017 00:00:00 +0000</pubDate><guid>https://blog.nicelylit.net/posts/%E5%83%8F%E7%B4%A0%E5%AF%86%E5%BA%A6%E5%92%8C%E8%AE%BE%E5%A4%87%E5%83%8F%E7%B4%A0%E6%AF%94/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;像素密度和设备像素比的概念事实上比想象中的复杂，希望这篇文章能够消除开发者和设计师们的疑虑和错误认知&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;显示器上常用的长度单位是像素（pixel），比如说一台显示器的分辨率是1280×800像素，一张照片的大小是1050×1500像素，一台照相机有300万像素。像素和物理上的长度单位不是等价的。物理上的长度是个连续的概念，所以物理上的长度单位也是连续的。像素是对显示器上的电子基础元器件或者图像文件的基础单元的抽象，是个具体离散的概念，只是用于计数，也没有平方、立方的概念。&lt;/p&gt;
&lt;p&gt;人对长度的感知，无非通过眼和手两种渠道。大多数时候用眼，少部分时候用手。举例来说用手的场景，比如写字、画画、投篮、扔标枪、射箭、做手术、开车等等，当然这些场景仍旧离不开眼的配合，不过手起了决定性的作用。具体地，以写字来看，普通的作文格子纸的格子大小为7.5mm×8mm，书写的汉字大小一般为3mm×3mm左右，所以普通人手能控制的精确度在1mm的数量级，书法家、画家和外科医生的手，应该能在0.1mm的数量级。相较而言，眼睛能够区分的精确度会更好，大约是0.02mm，原因是目前没有生产过比50分度更精确的游标卡尺，如果要更精确就需要借助一些物理量之间的转换去放大然后进行观测。不管精确度如何，都是对物理长度的感知。&lt;/p&gt;
&lt;h3 id="原始的像素密度"&gt;原始的像素密度
&lt;/h3&gt;&lt;p&gt;用像素去表示物理长度单位，需要一次转换，即单位英寸*的像素数，一般称作像素密度**。有些地方将像素密度写作PPI（pixels per inch)，而另外一些地方写作DPI（dots per inch），实际上都是一样的含义。这个类似的概念最早出现在印刷行业，印刷中的基本单位是点（Point, pt）[&lt;a class="link" href="https://en.wikipedia.org/wiki/Point_%5c%28typography%5c%29" target="_blank" rel="noopener"
 &gt;1&lt;/a&gt;]，著名的1个点代表1/72英寸已达成共识，因此也能说印刷标准中的点密度是72DPI。汉字印刷中常用的字体，小四是指12pt，即1/6inch或4.2mm，这意味着在不考虑字间距的情况下，1英寸能写6个小四的汉字。另外也能看出，一个小四的汉字是由12×12=144个点描绘出的图形。在高清的印刷中，多会选用300DPI，即单位英寸的点数是标准的4倍多，同样一个小四的汉字将需要50*50=2500个点描绘，自然更加高清。&lt;/p&gt;
&lt;p&gt;像素密度的概念很容易理解，但当应用到不同的场景后，特别是一些生产商偷换了概念后，问题就变得复杂了许多。&lt;/p&gt;
&lt;p&gt;先从最原始的像素密度含义说起。所有带显示器的硬件设备都会提供两个参数，总的像素数和屏幕尺寸。常见的屏幕都是长方形的***，所以一般爱用长乘宽的分辨率来说明总的像素数，比如文章一开头说的1280*800像素。用长乘宽的好处是屏幕比例也一目了然，同时在描述屏幕尺寸时候也可以简略地写几寸的屏幕，一般都用对角线的长度，这样显得屏幕比较大。有了像素数和屏幕尺寸，立即可以算出像素密度的值（表1列出了常见设备的像素密度比），这个值是所有屏幕的固有参数。像素密度越大，像素的物理长度就越小，同尺寸的屏幕就能放置更多的像素，设备就越有能力显示高像素数的图像，清晰度和细节由此增加。因而，像素密度是衡量显示器清晰度的重要指标。&lt;/p&gt;
&lt;p&gt;表1?常见设备的屏幕参数&lt;a class="link" href="https://blog.nicelylit.net/wp-content/uploads/2017/02/common.devices.png" &gt;&lt;img alt="common.devices" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.nicelylit.net/wp-content/uploads/2017/02/common.devices-732x1024.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果比较不同尺寸的屏幕，像素密度就无法作为唯一的清晰度衡量指标了。众所周知，人的眼球是凸透镜的结构，可以自由的调节焦距。面对不同的物体距离，清晰度就不单取决于像素密度了，和距屏幕的距离也有关系。一个简单的模型如图1所示，距离屏幕越远，像素大小可以取的越大，像素密度可以越小。换句话说，远距离的屏幕可以用较小的像素密度达到和距离近的屏幕一样的清晰度。前面提到人的眼睛能够区分的精确度大约是0.02mm，这实际上省略了一个前提是，距离大约20厘米的情况下，忽略了这个前提就无意义了。清晰度实际上是在考验人眼睛的精确度，也就是对长度的分辨能力。任何人站在一米开外都看不到0.02mm的长度。如果要达到0.02mm的精确度，20厘米左右的书面，需要1270DPI的像素密度；60厘米左右的电脑显示器，需要423DPI的像素密度；2米左右的电视机，需要127DPI；20米左右的电影荧幕，需要12.7DPI。通过这个关系，也就理解为什么手机屏幕的像素密度一般要高于显示器，而显示器要高于电视机。人类采集的图像和视频毕竟不能和自然本身相比，总有个限度，利用好像素密度，可以节省资源。&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://blog.nicelylit.net/wp-content/uploads/2017/02/view.distance.png" &gt;&lt;img alt="view.distance" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://blog.nicelylit.net/wp-content/uploads/2017/02/view.distance-300x144.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;图1 视距和分辨最短物理长度的关系示意图&lt;/p&gt;
&lt;h3 id="图像的像素密度"&gt;图像的“像素密度”
&lt;/h3&gt;&lt;p&gt;电脑的图片一般都有个图像的像素密度（Image DPI）的属性，Windows系统上还分水平分辨率和垂直分辨率。这个属性对于在显示器上显示图像没有任何的影响，对图像的文件大小也不会有任何的影响。显示器上影响图像显示的仅仅是图像尺寸（像素），像素越多，能展示的细节越多。图像的文件大小也与这个值没有任何关系，而是跟图像尺寸、图像格式和图像内容有关。图像尺寸越大，像素越多，需要编码的信息就越多，文件大小越大。图像的格式决定了图像存储时使用何种压缩算法，对于相同尺寸的图像，有损压缩的格式（比如JPEG）比无损压缩的格式（比如BMP）文件小。即使相同的算法，相同的尺寸，不同图像存储大小也有差异，单色的图像会小，内容丰富的图像会大。&lt;/p&gt;
&lt;p&gt;实际上，图像文件的元数据中提供DPI这个属性是为了打印照片用的。确定了图像尺寸和图像的“像素密度”，就能够确定打印时的照片的物理尺寸。由此可见，这里所谓的“像素密度”中的像素其实是打印机中的点，并非显示器中的像素，当然理解为图像文件中的像素也没问题。提到图像文件中的像素，不得不说一句，照相机的说明书中的像素一般指的是这个。我们总是听到照相机宣传语说几百万像素或者几千万像素，鲜有听说多少乘多少的像素的说法，意义正在于此。&lt;/p&gt;
&lt;p&gt;Photoshop是修改图像尺寸和“像素密度”的有效工具，Mac上的Preview也能做到这点，Windows自带的图片浏览软件似乎不带这个功能。对于打印照片而言，了解常见的相片[&lt;a class="link" href="https://en.wikipedia.org/wiki/Photo_print_sizes" target="_blank" rel="noopener"
 &gt;2&lt;/a&gt;]和打印纸[&lt;a class="link" href="https://en.wikipedia.org/wiki/ISO_216" target="_blank" rel="noopener"
 &gt;3&lt;/a&gt;]的尺寸会对裁剪图像尺寸有所帮助。苹果给出的官方指南[&lt;a class="link" href="https://support.apple.com/en-us/HT201495" target="_blank" rel="noopener"
 &gt;4&lt;/a&gt;]，也是个不错的参考。&lt;/p&gt;
&lt;h3 id="字体的像素密度"&gt;字体的“像素密度”
&lt;/h3&gt;&lt;p&gt;显示器上显示字体的情况远比显示图像要复杂，“像素密度”再次被重新定义，这次改动的不是像素的含义，而是分母，物理长度的含义。&lt;/p&gt;
&lt;p&gt;先回到早期，苹果和微软第一次产生分歧的时候。20世纪80年代，苹果生产的Macintosh沿袭了印刷业的传统，用72个像素表示一个“英寸”。那时的阴极射线管（CTR）显示器中，一个像素的大小大约恰好是1/72英寸，所以纸面上印刷的同号字体与屏幕上的同号字体等大[&lt;a class="link" href="https://en.wikipedia.org/wiki/Dots_per_inch#Computer_monitor_DPI_standards" target="_blank" rel="noopener"
 &gt;5&lt;/a&gt;, &lt;a class="link" href="https://blogs.msdn.microsoft.com/fontblog/2005/11/08/where-does-96-dpi-come-from-in-windows/" target="_blank" rel="noopener"
 &gt;6&lt;/a&gt;]。然而，微软却用96个像素表示一个“英寸”，可以明显看出，这个“英寸”，在像素大小大约是1/72英寸的情况下，实际长度是1.3英寸。之所以这样做，有人分析说是因为微软认为人们看屏幕的距离一般比看纸面的距离多出了1/3，所以字体需要等比例放大[&lt;a class="link" href="https://en.wikipedia.org/wiki/Dots_per_inch#Computer_monitor_DPI_standards" target="_blank" rel="noopener"
 &gt;5&lt;/a&gt;]。96这个参数，一直沿用至今。从这次分歧可以看出，操作系统厂商，偷用了像素密度的概念，他们所谓的72DPI和96DPI中的1“英寸”都不是物理上的1英寸，为方便可以说是逻辑英寸。&lt;/p&gt;
&lt;p&gt;当下的屏幕，像素密度至少都在110PPI左右。不论是苹果的72DPI，还是微软的96DPI，逻辑的1英寸都比物理的1英寸要小。为此，我做了实际测量。以下的两个字“汉字”，是72号宋体字，可以写作72pt。在普通的Mac上，等于72px，在Windows上，等于96px（默认分辨率）。我预测在27英寸、分辨率为2560*1440的戴尔显示器上，像素密度为108PPI，Mac系统下，两个汉字的长度为3.4cm，误差不超过1mm；在14英寸、分辨率1366*768的Thinkpad显示器上，像素密度为113PPI，Windows系统下，两个汉字的长度为4.3cm，误差不超过1mm。实际测量后，结果和预测完全吻合。 汉字 纸面距离下的，两个72号字体物理长度应为2英寸，即5.08cm。以上两个显示器，使用距离都会比纸面远至少30%，甚至是3倍，而长度反而减少了33%和15%，显然，看起来会更加吃力。所以这样的显示器上，用12号字体，在Mac上就会不到3mm，加上距离的因素，至少应该使用14号字体才会显得舒服。&lt;/p&gt;
&lt;p&gt;对于像素密度在110PPI左右的电脑显示器，单个像素大小约0.2mm，虽然距离理想的423DPI（0.06mm）还有4倍的差距，不过对于大多数人已经足够用了，就好比普通的应用场景只需要1mm的精度，专业的应用场景才需要0.02mm甚至更高的精度。&lt;/p&gt;
&lt;p&gt;以这个4倍的差距来衡量移动手机屏幕，假设平均直视距离为15cm，理想的像素密度大约是1270DPI****，实际的像素密度是318PPI。查看表1，iPhone 6+的像素密度为461PPI，iPhone 6为326PPI，显示的清晰度能达到类似电脑显示器正常使用下的标准。&lt;/p&gt;
&lt;p&gt;回到字体上来，前面的“汉字”实验中，计算实际物理长度的方法是&lt;/p&gt;
&lt;p&gt;(操作系统DPI/72) * 字号 / 设备像素密度&lt;/p&gt;
&lt;p&gt;单位是英寸。对于普通的Mac系统，操作系统DPI是72，带入后，公式为&lt;/p&gt;
&lt;p&gt;字号/设备像素密度&lt;/p&gt;
&lt;p&gt;对于普通的Windows系统，操作系统DPI是96，带入后，公式为&lt;/p&gt;
&lt;p&gt;1.33 * 字号/设备像素密度&lt;/p&gt;
&lt;p&gt;操作系统DPI/72就如同一个放大系数一样，将屏幕上的字体调节到一个合适的尺寸。随着设备像素密度的不断提升，放大系数起到越来越重要的作用，这个系数能够将字体大小调整到合适的物理长度。苹果和微软在放大系数的设计中又一次产生了分歧，苹果抽取出了设备像素比的概念，不仅在操作系统层面能够用设备无关的单位控制控件大小，还将其写入webkit的核心中，在网页的视窗中也能继续发挥作用。苹果的笔记本Mac Pro 13英寸的Retina屏，设备像素密度是227，设备像素比是2，这样使用字号单位时如同在像素密度是113的屏幕上一样。举例来讲，12pt的长度在Mac Pro 13 Retina屏上长度与非Retina屏（像素密度为113的屏幕）显示的物理长度完全相同，注意这里所用的pt已经不同于1/72物理英寸，而是1/72逻辑英寸。在网页中，一般用px来表示字号，而少用pt。网页中的px已经不同于物理上的像素，而被称为逻辑像素，由逻辑像素转换为物理像素只需要乘以设备像素比即可。网页中的pt也不同于操作系统应用中的pt单位，以逻辑英寸来表达，而是用真实的物理英寸来表达。&lt;/p&gt;
&lt;p&gt;而微软，沿用了先前的一贯作风，去修改操作系统DPI，先后有了支持高清屏的120DPI和144DPI[&lt;a class="link" href="https://technet.microsoft.com/en-us/library/ff716252.aspx" target="_blank" rel="noopener"
 &gt;7&lt;/a&gt;]。对应到上面的公式，放大系数变为1.6和2。虽然最终殊途同归，不过不及设备像素比更为直接。在移动网页中，应用设备像素比的概念，苹果支持得较早[&lt;a class="link" href="http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html" target="_blank" rel="noopener"
 &gt;8&lt;/a&gt;]。&lt;/p&gt;
&lt;p&gt;至此，有关像素密度和设备像素比的发展变化，以及这两个量给显示效果带来的影响已基本介绍完毕。&lt;/p&gt;
&lt;p&gt;最后不得不提的是Android系统中对这个问题的解决方案。Android定义了160DPI的屏为标准屏MDPI，这种屏幕上1dp=1px[&lt;a class="link" href="https://developer.android.google.cn/guide/practices/screens_support.html" target="_blank" rel="noopener"
 &gt;9&lt;/a&gt;]。基于此标准，又增加了四种高清屏尺寸，240DPI的HDPI，320DPI的XHDPI，480DPI的XXHDPI以及640DPI的XXXHDPI。这四种高清屏的1dp分别是1.5px、2px、3px和4px。这里的系数不同于设备像素比，但具有类似的功效。Android会将像素密度在某一个区间内的屏幕归到某个类别里面，然后dp和px之间的转换基于160，而非物理像素密度。举例来讲，150DPI和170DPI的手机屏幕都属于160DPI的标准屏，两个屏幕上的1dp=1px，但是对于12dp，两个屏幕会相差0.2mm。&lt;/p&gt;
&lt;p&gt;总而言之，在屏幕上显示文字或者图像，影响显示效果的是物理长度，而决定显示物理长度的是像素密度和设备像素比，进一步，决定像素密度和设备像素比的是人眼在不同视距下的分辨率。&lt;/p&gt;
&lt;h3 id="脚注"&gt;脚注
&lt;/h3&gt;&lt;p&gt;* 我们需要去习惯西方的传统计量系统，1码（yard）约等于3英尺（foot），1英尺约等于12英寸（inch），1英寸约等于2.54厘米。 **人们常常混用像素密度和分辨率的概念，比如&lt;a class="link" href="https://msdn.microsoft.com/en-us/library/ms537625%5c%28v=vs.85%5c%29.aspx" target="_blank" rel="noopener"
 &gt;MSDN上的这篇描述&lt;/a&gt;。我比较偏向用像素密度来表示PPI或DPI，而分辨率说整个屏幕的像素数，理由是如果用分辨率去描述像素密度，那么屏幕总的像素数就不知道如何称呼了。另外值得注意的是在不讨论物理尺寸的前提下说分辨率毫无价值。 *** 智能手表出现后，有些厂商开始考虑圆形的屏幕，由于像素都是方形的，圆形屏幕的厂商需要高分辨率去消除一圈的锯齿。 ****这里对理想像素密度的假设是20cm以内的视距，都无法区分比0.02mm更小的距离。&lt;/p&gt;
&lt;h3 id="参考链接"&gt;参考链接
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;[1] &lt;a class="link" href="https://en.wikipedia.org/wiki/Point_%5c%28typography%5c%29" target="_blank" rel="noopener"
 &gt;Point (typography)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[2] &lt;a class="link" href="https://en.wikipedia.org/wiki/Photo_print_sizes" target="_blank" rel="noopener"
 &gt;Photo print sizes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[3] &lt;a class="link" href="https://en.wikipedia.org/wiki/ISO_216" target="_blank" rel="noopener"
 &gt;ISO 216&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[4] &lt;a class="link" href="https://support.apple.com/en-us/HT201495" target="_blank" rel="noopener"
 &gt;Image resolution guideline&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[5] &lt;a class="link" href="https://en.wikipedia.org/wiki/Dots_per_inch#Computer_monitor_DPI_standards" target="_blank" rel="noopener"
 &gt;Computer monitor DPI standards&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[6] &lt;a class="link" href="https://blogs.msdn.microsoft.com/fontblog/2005/11/08/where-does-96-dpi-come-from-in-windows/" target="_blank" rel="noopener"
 &gt;Where does 96 DPI come from in Windows?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[7] &lt;a class="link" href="https://technet.microsoft.com/en-us/library/ff716252.aspx" target="_blank" rel="noopener"
 &gt;DPI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[8] &lt;a class="link" href="http://www.quirksmode.org/blog/archives/2012/06/devicepixelrati.html" target="_blank" rel="noopener"
 &gt;devicePixelRatio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[9] &lt;a class="link" href="https://developer.android.google.cn/guide/practices/screens_support.html" target="_blank" rel="noopener"
 &gt;Supporting Multiple Screens&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>火车窗外</title><link>https://blog.nicelylit.net/posts/%E7%81%AB%E8%BD%A6%E7%AA%97%E5%A4%96/</link><pubDate>Wed, 01 Feb 2017 00:00:00 +0000</pubDate><guid>https://blog.nicelylit.net/posts/%E7%81%AB%E8%BD%A6%E7%AA%97%E5%A4%96/</guid><description>&lt;p&gt;每次坐火车时，总爱看窗外的风景。近处的树木看起来总比远处的高楼运动得快，令人眼花撩乱。细想来，以火车为参考系，不论近处的树木还是远处的高楼都以相同的速率向着火车运动的反方向运动，所以不应该是速率的变化造成的视觉差异，而应该是角度的变化率（即角速度）的不同造成的。&lt;/p&gt;
&lt;p&gt;假设初始零时刻，火车以速度\(v\)做匀速直线运动，取火车相对地面的运动方向为正方向。与此同时，假设我所处的位置为位移的零点，垂直于运动方向，距离我\(r\)之处有一个物体。显然初始时刻，这个物体与我的夹角为\(\pi/2\)。对于\(t\)时刻，在火车的运动方向上，物体到我的距离为\(vt\)，以我为参考系，那么物体向着反方向运动了\(vt\)，这时的夹角变为&lt;/p&gt;
&lt;p&gt;$$\theta=\frac{\pi}{2}+\arctan{\frac{vt}{r}}$$&lt;/p&gt;
&lt;p&gt;法向量方向垂直地面向上，物体做逆时针的旋转，旋转的角速率为&lt;/p&gt;
&lt;p&gt;$$\omega=\frac{d\theta}{d{t}}=\frac{vr}{r^2+(vt)^2}=\frac{v}{r+\frac{(vt)^2}{r}}$$&lt;/p&gt;
&lt;p&gt;固定\(r\)为常量，\(\theta\)随着时间的增加在增加，夹角弧度无限趋近于\(\pi\)。固定时间\(t\)为常量，\(\theta\)随着距离\(r\)的增加在减小，夹角弧度无限趋近于0。&lt;/p&gt;
&lt;p&gt;固定\(r\)为常量，\(\omega\)随着时间的增加在减小，角速率无限趋近于0. 固定时间\(t\)为常量，\(\omega\)随着距离\(r\)的增加先增大后减小，角速率有一个最大值，在最近处和最远处都无限趋近于0.&lt;/p&gt;
&lt;p&gt;有趣的位置是角速率最大的位置。当\(r=vt\)时，不同距离的物体在同一时刻的夹角弧度均为&lt;/p&gt;
&lt;p&gt;$$\frac{3\pi}{4}$$&lt;/p&gt;
&lt;p&gt;运动角速率达到最大值，且该角速率的大小为&lt;/p&gt;
&lt;p&gt;$$\omega=\frac{1}{2t}$$&lt;/p&gt;
&lt;p&gt;当\(t\)无限趋近于0时，运动角速率的最大值应该达到无穷大，而根据前面固定\(t\)的分析中，远离最大位置的距离上，运动角速率均是在无限的趋于零，无穷大和零已经难以分辨。&lt;/p&gt;
&lt;p&gt;下面代入一些具体的数字做些直观的感受。假设火车运动的速度为\(v=300km/h=83.3m/s\)，人眼的时间分辨误差是\(1/60s\)，那么在火车运动了\(0.017s\)后，1.4m处的物体运动角速度最大。比1.4m更近处的物体，运动角速度已经越过了最大值，开始减小了。另外由于这部分物体的夹角已经超过了\(3\pi/4\)，所以眼睛已经无法注意到这部分物体，而进一步跳到了位于更前方的物体（1.4m处），眼睛感到晃得很厉害。比1.4m更远处的物体，运动角速度还未越过最大值，角度不足\(3\pi/4\)，所以对比1.4m处的物体，眼睛感觉这部分物体运动很慢。&lt;/p&gt;</description></item></channel></rss>