[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"list-\u002Farticles\u002F3":3},{"items":4,"total":127},[5,22,33,45,55,63,71,79,87,101,109,117],{"id":6,"type":7,"slug":8,"title":9,"date":10,"category":11,"tags":12,"body_markdown":16,"permalink":17,"excerpt_src":17,"media_type":17,"media_title":17,"media_author":17,"media_url":17,"rating":17,"layout":17,"pv":18,"admin_only":18,"created_at":19,"updated_at":19,"deleted_at":17,"status":20,"cover":21},135,"article","perform-scheduled-tasks-using-gitLab-pipelines","使用Gitlab Pipelines执行定时任务","2023-06-16 12:00","tech",[13,14,15],"定时任务","Linux","Gitlab","\n## 背景\n\n在Linux服务器下执行定时任务是一个非常常见的需求，我们可能需要定时备份数据库、定时执行程序脚本、定时清理日志等等。在旧版本Linux下，我们通常会使用`crontab`来执行定时任务，而新版本的Linux系统中则更推荐用systemd的`timer`来执行定时任务。\n\n但是systemd的配置麻烦又罗嗦，需要先定义一个`service`，再定义一个`timer`来调用`service`，而且`timer`的配置文件中还需要指定`OnCalendar`来指定定时任务的执行时间，这个时间格式又不是很好记。\n\n此外即使定义好了，管理起来也并不容易，更不要说排查问题了。\n\n而如果机器上使用Docker等容器环境，定时任务就更麻烦了：为了应用的可移植性，希望尽可能将定时任务放到容器中运行，但容器又不能直接以宿主机的身份执行各种脚本（例如重启其它容器，可以通过一些手段实现，但更麻烦）。\n\n此外，定制一个跑定时任务的容器也不是一件容易的事，首先需要有对应环境的基础镜像，然后基于这个镜像安装好`crond`之类的工具，再将定时任务的脚本刷到`crond`中，最后将这个容器部署到机器上。这个容器还必须有网络权限等。\n\n总之，定时任务的配置和管理是一个非常麻烦的事情，在容器环境下尤其如此。\n\n\u003C!-- more -->\n\n## Gitlab Pipelines\n\nGitlab提供了CI\u002FCD功能，可以自己定义Pipelines，然后在代码推送、MR合并等事件触发时执行Pipelines。利用这个功能可以很好地执行CI\u002FCD任务。\n\n最近发现Gitlab还有一个Pipeline Schedules的功能，可以在指定的时间点执行Pipelines。利用这个功能可以很好地解决定时任务的问题。\n\n### 使用方法\n\n首先在项目的CI\u002FCD设置中新建一个Pipelines：\n\n![screenshot-1](\u002Fassets\u002Ftech\u002F2023\u002Fperform-scheduled-tasks-using-gitLab-pipelines\u002F01.png)\n\n可以看到，这个界面能可视化地管理Pipelines的执行时间，非常方便。\n\n添加好之后，就可以在管理界面看到刚添加的定时任务了：\n\n![screenshot-2](\u002Fassets\u002Ftech\u002F2023\u002Fperform-scheduled-tasks-using-gitLab-pipelines\u002F02.png)\n\n但这里马上就会面临一个新问题：我们在Gitlab CI中定义的是CI\u002FCD的任务，但定时任务却希望是另外的脚本，怎么办呢？事实上如果此时点击手工运行的话，会发现Gitlab CI会执行我们定义的CI\u002FCD任务，而不是我们希望的定时任务。\n\n这个问题的解决方法是，我们可以在CI\u002FCD的任务中单独定义需要执行的定时任务，并通过条件来指定只有在定时任务触发时才执行。例如：\n\n```yaml\nci-task:\n    script:\n        - echo \"This is a CI task\"\n    rules:\n        - if: $CI_PIPELINE_SOURCE == \"push\" && $CI_COMMIT_BRANCH == \"master\"\n\ncron-job:\n    script:\n        - echo \"This is a cron job\"\n    rules:\n        - if: $CI_PIPELINE_SOURCE == \"schedule\"\n```\n\n上述配置中，我们定义了两个任务，一个是CI任务，一个是定时任务。其中CI任务只有在`push`到`master`分支时才会执行，而定时任务只有在定时任务触发时才会执行。这样就可以很好地解决定时任务的执行的问题了。\n\n> 详细说明可参考官方文档：\u003Chttps:\u002F\u002Fdocs.gitlab.com\u002Fee\u002Fci\u002Fjobs\u002Fjob_control.html#run-jobs-for-scheduled-pipelines>\n\n接下来的问题是：不是说好的要解决Linux系统下的定时任务问题吗？这里的任务是在Gitlab CI中执行的，怎么执行自己服务器上的任务呢？\n\n这就需要我们从Gitlab CI环境使用SSH连接到自己的服务器上，然后执行对应的任务脚本来实现了。\n\n### SSH连接\n\n首先需要在Gitlab CI\u002FCD的设置中将SSH Key作为变量添加进去，这样才能在Gitlab CI环境中获取到对应的Key，并使用SSH连接到自己的服务器上。\n\n![screenshot-3](\u002Fassets\u002Ftech\u002F2023\u002Fperform-scheduled-tasks-using-gitLab-pipelines\u002F03.png)\n\n截图中`SSH_CONFIG`的内容如下：\n\n```\nHost *\n    KexAlgorithms +diffie-hellman-group1-sha1\n    StrictHostKeyChecking no\n```\n\n这里是为了解决SSH客户端与服务端使用的加密方案不同造成无法连接的情况，可视情况修改或者添加对应的配置。\n\n对应的CI任务脚本如下：\n\n```yaml\nscript:\n    - apk update&&apk add openssh\n    - mkdir ~\u002F.ssh\n    - echo \"$SSH_CONFIG\">~\u002F.ssh\u002Fconfig\n    - echo \"$SSH_KEY_PRIVATE\">~\u002F.ssh\u002Fid_rsa\n    - echo \"$SSH_KEY_PUBLIC\">~\u002F.ssh\u002Fid_rsa.pub\n    - chmod 400 ~\u002F.ssh\u002Fid_rsa\n    - ssh root@100.1.2.3 \"sh \u002Fdata\u002Fscripts\u002Fdb-bak.sh&&docker restart example\"\n```\n\n首先安装SSH客户端，然后将SSH Key写入到对应的文件中，最后连接到服务器执行对应的脚本。\n\n## 小结和可改进点\n\n总的来说，这个方法可以让我们不用花太多心思去配置“定时”这件事情，只需要在Gitlab中添加一个定时任务，然后通过SSH连接到服务器上执行对应的脚本即可。\n\n但这个方法依然不是特别“干净”，因为最终还是需要留一个脚本在服务器上，并不完全符合容器可移植的要求。但这个问题也有一些可改进的方向：\n\n1. 将脚本放到容器中，通过SSH连接到服务器后执行`docker`相关命令进行调用\n2. 将需要定时任务的任务通过HTTP接口等形式暴露出来，然后在Gitlab CI中通过`curl`等工具调用\n3. 将定时任务的脚本放到Gitlab CI中，通过SSH连接到服务器后将脚本写入到服务器上，然后执行\n",null,0,"2026-08-28 04:37:17","published","https:\u002F\u002Fassets.toobug.net\u002Fassets\u002Ftech\u002F2023\u002Fperform-scheduled-tasks-using-gitLab-pipelines\u002F01.png",{"id":23,"type":7,"slug":24,"title":25,"date":26,"category":27,"tags":28,"body_markdown":31,"permalink":17,"excerpt_src":17,"media_type":17,"media_title":17,"media_author":17,"media_url":17,"rating":17,"layout":17,"pv":18,"admin_only":18,"created_at":19,"updated_at":19,"deleted_at":17,"status":20,"cover":32},92,"one-year-anniversary-of-commuting-by-bike","骑车通勤一周年","2023-06-02 09:22","life",[29,30],"骑车","自行车","\n发个大号朋友圈：\n\n去年6、7月，正是无比苦闷的日子，彼时满脑子想的是：在这样的日子里，我到底应该干点什么。后来思索无果，就想着，不然先锻炼锻炼身体也好，于是就这么开始骑行上下班。\n\n具体是哪一天开始的已经记不住了，总之天很热，但是路上的风景很好。\n\n![](\u002Fassets\u002Flife\u002F2023\u002Fone-year-anniversary-of-commuting-by-bike\u002F01.jpg)\n\n不知不觉已经骑了一年了，除了下雨和生病以外也没有中断过。从每周2天4个单趟升级到了每周6个单趟（共90公里），从共享单车升级到了自己的自行车，从80多分钟升级到了50多分钟。\n\n\u003C!-- more -->\n\n![screenshot-today](\u002Fassets\u002Flife\u002F2023\u002Fone-year-anniversary-of-commuting-by-bike\u002F02.jpg)​\n\n一些变化：\n\n1. 体能肉眼可见地变好了，随之而来的是步行的意愿也增加不少\n2. 体重没变，但体型稍好了一些，显瘦一些\n3. 没那么怕热了。用心去感受热的过程和感受情绪的过程很类似，一旦你认识到这就是热，它就变成了一种来自四肢和头顶的非常清晰的感受，而不是一连串表达不出的感觉和情绪\n\n一些发过的朋友圈：\n\n![moments-1](\u002Fassets\u002Flife\u002F2023\u002Fone-year-anniversary-of-commuting-by-bike\u002F03.jpg)\n\n![moments-2](\u002Fassets\u002Flife\u002F2023\u002Fone-year-anniversary-of-commuting-by-bike\u002F04.jpg)\n\n![moments-3](\u002Fassets\u002Flife\u002F2023\u002Fone-year-anniversary-of-commuting-by-bike\u002F05.jpg)\n\n祝你六月快乐！\n","https:\u002F\u002Fassets.toobug.net\u002Fassets\u002Flife\u002F2023\u002Fone-year-anniversary-of-commuting-by-bike\u002F01.jpg",{"id":34,"type":7,"slug":35,"title":36,"date":37,"category":11,"tags":38,"body_markdown":43,"permalink":17,"excerpt_src":17,"media_type":17,"media_title":17,"media_author":17,"media_url":17,"rating":17,"layout":17,"pv":18,"admin_only":18,"created_at":19,"updated_at":19,"deleted_at":17,"status":20,"cover":44},133,"idea-of-enterprise-it-system-construction","企业信息化及系统建设的思路","2023-04-18 12:00",[39,40,41,42],"企业管理","信息化","系统建设","工具","\n\n> 之前写过一篇《[谈谈我对工具软件的理解](\u002Farticle\u002Ftech\u002F2023\u002Fmy-comprehension-on-tools.html)》，与本篇有较大的关联性，如果不清楚写了什么，建议先复习一遍再看本文。\n\n我在招聘IT产品经理的时候经常问2个问题：\n\n- 所有人都很讨厌报销流程，那为什么每家公司都还要设置报销流程？\n- 一家公司在什么时候设置报销系统是合适的？\n\n第2个问题先按下不表，先说第一个问题。\n\n\u003C!-- more -->\n\n首先可以做一个思维实验：假设报销流程是不对的，那么一两家公司做错的话是可以理解的，但所有的公司都做错是不太可能的，因此可以反推出报销流程的设置是必要的，这应该是一个可靠的结论。\n\n那么，为什么一个人人都很讨厌流程却是必要的？其实这个问题倒也不难回答，不妨反过来想一想，如果公司不设置报销流程的话，会怎么样？\n\n报销的本质是“先斩后奏”，即员工先用自己的钱把某件事情做了，然后再找公司要回来自己支付的钱。本质上它是在没有（充分的）事前审批的情况下花企业的钱。\n\n例如打车费用报销，并不能事前申请需要花多少钱，它可能是50块，也可能是55块或者59.5块，只有花了之后才能知道它是多少。公司只能通过事后报销的方式才能准确地知道这一笔钱的花销是多少。而正因为是事后报销，如果不加控制的话，有可能今天打车报销是50块，明天就变为了150块。因此，在报销的流程中，进行真实性和合理性的核验是一个必要的过程，不然一定会发生舞弊。\n\n## 流程与系统\n\n所有的公司都有报销流程，但并不是所有的公司都有报销系统。有很多公司会使用其它方式来走报销流程，例如邮件审批。\n\n在没有系统支持的情况下，流程完全是可以执行并且起到管理效果的，只要每一个步骤和控制点都得到有效的执行。这里的“控制点”尤其重要，例如一定要有财务人员核实发票，一定要有直属上级核验真实性。\n\n而系统可以帮助公司更好地支撑流程的落实。以邮件审批为例，在执行的时候很容易发生这样一些问题：\n\n- 需要多位上级审批，是发给多个收件人，还是每个上级回复邮件后再转发给下一位？\n- 在项目制的组织中，应该发给专业上级审批还是项目负责人审批？\n- 如果多位上级同时收到邮件，高级别的审批人先审批了，低级别的审批人还需要审批吗？\n- 如果提交的报销材料有缺失或错漏，但是老板已经同意了，还需要让申请人重新发起申请吗？\n\n如果将这个审批使用系统来实现，则可以完全规避以上问题，也就是说，系统在落地流程时可以起到的作用：\n\n- 规范填写，避免审批材料的错漏\n- 规范审批流，避免审批过程的缺失、错漏或者顺序错误\n\n除了解决邮件等线下流程的问题之外，系统本身还有一些独特的优势：\n\n- 为审批者展示关键信息，有重点地进行审批\n- 为员工提供更好的申请和查看体验\n- 对流程进行归档，使数据留痕且不容易被篡改，方便审计等场景\n- 使流程中的数据变为结构化的数据，便于进行统计、生成报表等\n- 使用新技术为企业带来新的管理方法，例如合同电子签等\n\n这里面的点都可以展开说，后续有机会再单独写。\n\n## 企业管理的方法\n\n报销只是企业管理中的冰山一角，本质上，所有的流程背后都企业管理的方法。这些方法有一些来自企业自身的摸索和迭代，有一些来自成熟的方法论。例如人力资源管理、财务管理、税务管理、采购管理、市场管理、研发项目管理等等都有非常成熟的方法论。\n\n每一种方法最终都会落地为企业的管理策略，不同的企业可能有不同的选择，例如：\n\n- 奈飞工作手册：招最好的员工，用最少的流程，让员工自驱\n- 字节：招最多的好员工，用OKR对齐目标，用文化统一行为方式，让员工自行产生力量\n- 华为：用高薪酬激励员工的积极性，用流程管理确保组织以正确的方式做事\n\n同一企业在不同的发展阶段也可能有完全不同的管理策略，此处不做展开。\n\n但需要明确的是，无论企业规模大小，无论选择哪种管理策略，企业的管理方法是始终存在的：\n\n- 你需要上班打卡，这是考勤管理方法的体现\n- 你请假不用提单，这也是考勤管理方法的体现\n- 你需要写日报，这是项目管理方法的体现\n- 你需要开晨会，这也是项目管理方法的体现\n- ……\n\n## 企业管理系统建设\n\n在上一篇《我对工具的理解》中，我讲到了工具是可以落地方法的，这一点在企业系统中更为重要。所有的企业管理系统最终都是为了落地企业管理方法。\n\n在系统建设过程中，都需要先了解清楚企业是如何思考和如何选择管理方法的。仍然以报销为例，下面这些问题不回答清楚，是没法做系统的：\n\n- 报销是侧重真实性核查还是合理性核查？\n\t- 真实性：各种消费清单、发票上传\n\t- 合理性：对比行业价格做合理性判断\n- 需要多高的管理者进行审批？是直属上级还是逐级审批直到CEO？\n- 企业能承受多大的风险？（1分钱都不可以损失？可以在一定范围内允许少量损失？）\n\t- 高级别领导是否有可以免审的限额？\n\t- 是否容忍少量发票缺失问题？\n- ……\n\n在企业采购系统的时候，往往会有一个长达数周到数月的调研阶段，实际上就是在确定类似的问题。只有在完全确定之后才能拿出系统实施的详细方案出来。\n\n于是到这里我们可以尝试回答开篇的第二个问题了：一家公司在什么时候设置报销系统是合适的？答案中至少有一部分就是：在公司的管理方案确定的时候。（当然还有其它的因素，这里不展开。）\n\n## 企业咨询\n\n上面似乎已经解答了所有的疑问，但实际上在真实的公司中，事情往往没有这么简单：公司是从零开始一步一步发展起来的，而不是设计出来的。没有任何一家公司是在一开始就设计好了所有的管理方法，然后再用数年或数十年的时间把这些管理方法落地下来。更现实的情况往往是公司在一开始什么方法都没有，当问题不断出现的时候才不断去学习管理方法。\n\n在企业信息系统建设的时候，往往面临的情况是：公司有这个问题，但没有想好要怎么管理，或者不知道怎么管理，希望通过建设一个系统来解决问题。\n\n通过前面的分析就能了解，从问题到系统，中间缺少了一个非常关键的事，就是方法。所以企业信息系统建设往往是一边找方法，一边做系统。\n\n如果公司对这些问题的解决思路完全没有想法的话，一条很便捷的路是：先买一个成熟的系统用着，一边用一边学。上一篇《我对工具的理解》一文中我说过，工具是带有方法的实践的，在企业中也是一样。当买入了一个成熟的系统，在使用的过程中，自然而然地会接受系统带来的一些管理方法。这条路径对小公司来说尤其适用。\n\n而如果公司自己本身有一些诉求或者倾向，此时更合适的路径是引入企业咨询。\n\n所谓企业咨询，即是由专门的咨询公司的人员就公司现状和诉求进行梳理，结合他们丰富的公司管理学的方法和经验，梳理出一套适合公司实际情况的管理方法。\n\n在购买或者建设比较大型的企业信息系统的时候，引入咨询公司也是非常常见的，此时就由咨询公司负责现状和诉求的梳理，输出具体的方案，然后再由系统供应商或者公司自己的研发团队将这套方法实现到系统上。\n\n事实上，即使不专门购买咨询服务，只要购买比较大型的企业信息系统，系统的供应商也或多或少会提供一些咨询服务，只是没有专业的咨询公司能力强。\n\n## 小结\n\n- 流程和系统都是落地企业管理方法的手段\n- 系统可以比线下流程更标准规范，并带来更多优势\n- 所有的企业都有自己的管理方法\n- 信息化系统建设路径：问题-管理方法-系统\n- 管理方法不清楚的时候可借助成熟软件来学习\n- 企业咨询也可以帮助企业找到适合的管理方法\n\n## 题外话：关于效率\n\n在大部分企业管理中，提升员工具体的操作效率一般来说是不做重点考虑的。主要的原因可能是员工具体操作的效率并不会从根本上影响公司的运转，效率低一些不会带来致命的风险，高一些也不会带来质的提升。（可能对制造业或者实业来说还是重要的，这里不展开。）\n\n这一块如果展开讲的话也可以上升为企业协作工具，后续有机会单独开篇讲。\n","",{"id":46,"type":7,"slug":47,"title":48,"date":49,"category":27,"tags":50,"body_markdown":54,"permalink":17,"excerpt_src":17,"media_type":17,"media_title":17,"media_author":17,"media_url":17,"rating":17,"layout":17,"pv":18,"admin_only":18,"created_at":19,"updated_at":19,"deleted_at":17,"status":20,"cover":44},94,"trends-of-chinas-internet-talent","中国互联网的人才趋势观察","2023-04-17 09:15",[51,52,53],"互联网","人才","行业观察","\n2022年可以说是互联网行业的滑铁卢之年，国内大厂在被重拳出击之后迎来了浩浩荡荡的裁员大潮，国外大厂也在下半年开启了规模不小的裁员。\n\n尽管在此这前已经有种种征兆，但对于不在这个行业的许多人来说，还是会觉得很突然：说好的人才是最重要的财富，为什么说裁员就裁了？\n\n\u003C!-- more -->\n\n## 十年前的互联网\n\n大概95后\u002F00后的同学会比较难想象，在10多年前，互联网行业并不是一个很受追捧的行业，甚至说受欢迎都未必。靠回忆可以描述一些那时候的印象：\n\n- 没有智能手机，上网要靠电脑\n- 没有打车、共享单车等APP\n- 没有外卖APP，叫外卖要自己打电话到店里，人家还不一定送\n- 没有微信可以语音和视频通话，甚至连文字信息都要通过1毛钱一条的短信来发送\n- 网购是属于一部分年轻人的生活方式，非常不入流，线下卖场仍然是消费主流\n- 没有移动支付，线下仍然主要靠现金支付\n- 网银属于新生事物，需要配置复杂的动态密码卡或者U盾，甚至不少场景还需要线下汇款\n\n而那时候的互联网为大家提供的服务有什么呢？大概主要就是聊天和新闻，除此之外就是网游。\n\n在这样的背景下，互联网其实是一个纯线上的世界，与线下世界几乎没有任何联系，自然也没有提升生活便携程度的作用。而家长们更是视之为妖魔，不断地因所谓的“网瘾少年”而指责互联网公司。\n\n可以想见，在这样的大背景下，不论是在校学生还是已经踏入社会的人，都不会太在意互联网这个行业，更不会去学习它所使用的技术（彼时互联网运营还是个几乎不存在的概念）。\n\n因此这就产生了两个大的背景：\n\n- 人才需求大，但人才供给很少\n- 掌握互联网相关技术的人很少，整体水平不高\n\n在这样的背景下，作为互联网公司自然要珍视好不容易招到的人才。此外，为了补充人才招聘的不足，很多公司还会给出完善的很多培训成长体系，希望通过公司自己的力量培养一批人才。\n\n于是我们看到过去十多年内几个非常自然的现象：\n\n- 互联网公司给出了高出大部分行业的薪酬\n- 每年都有比较大比例的涨薪，跳槽更是能获得巨大的薪资涨幅\n- 大部分公司都有人才培养和晋升体系\n\n## 黄金十年\n\n过去十多年的时间，互联网行业发生了一些深刻的变化：\n\n- 移动互联网爆发，互联网人群覆盖度大幅增加，使用便捷性也大幅增加\n- 互联网业务快速渗透到日常生活的方方面面\n- 新的公司不断涌现，新的巨头以非常快的速度成长起来\n- 行业全面商业化，营收和盈利迎来快速增长\n\n与此同时，互联网的人才也发生了很多变化：\n\n- 越来越多的人投身互联网相关技术的学习和工作\n- 行业培训逐渐多起来，输送的人才也越来越多\n- 技术快速发展，掌握相关技术的人才越来越多\n- 互联网公司对人才的竞争逐渐白热化，薪资标准不断提高，甚至针对应届生出现了“签字费”等各种补贴\n\n这便是在2022年之前，大家所熟知的歌舞升平的互联网行业。各个公司赚得盆满钵满，互联网公司的员工也因为高薪逐步成为顶级行业的打工人，甚至还不少人随着公司成功上市踏上了财富自由之路。\n\n## 变化悄然而至\n\n而作为行业内的人，前几年就能明显看到一些趋势：\n\n- 人才的供给在快速增加\n- 人才的能力快速提升，现在一个校招生所掌握的能力比十多年前一个资深员工都要多\n\n这样带来的一个后果就是：人才的密度越来越大，可替代性也越来越高。换句话说，现在在行业内招人的话其实都不太困难，除非是要找整个业界都顶尖的人才。\n\n同时，随着行业技术发展逐渐成熟，标准化程度不断提高（包括运营手段也越来越趋同），对人才的要求也越来越标准化，也就是说，只要能按要求把手上的砖搬好就行了。这也是过去几年大家不断有“入职拧螺丝”的感觉的原因。\n\n至此，互联网人才已经逐步从“卖方市场”变为“买方市场”了，也就是说，以前是人才强势，而现在则是互联网公司更强势了。于是人才就越来越不受重视，招聘和人才也就变得更加市场化，劳动力的买卖更加赤裸裸，就是简单的一分钱一分货，再没有情怀一说。\n\n## 压倒骆驼的稻草\n\n当人才在互联网行业不再那么重要的时候，一旦公司遇到压力时，进行裁员就成了一个非常自然的选择，毕竟这是快速降低成本的有效方法。于是2022年，席卷整个行业的大裁员就这么开始了。\n\n如果说互联网行业在以前还算新兴行业的话，现在它正在快速变为我们所理解的“传统行业”。与此对应：人才不再稀缺、增长不再爆发、待遇趋于平均都是正在发生的事情。\n\n所有的互联网“人才”都在变身“打工人”，没有光环，也不再有优越感。\n",{"id":56,"type":7,"slug":57,"title":58,"date":59,"category":11,"tags":60,"body_markdown":61,"permalink":17,"excerpt_src":17,"media_type":17,"media_title":17,"media_author":17,"media_url":17,"rating":17,"layout":17,"pv":18,"admin_only":18,"created_at":19,"updated_at":19,"deleted_at":17,"status":20,"cover":62},134,"my-comprehension-on-tools","谈谈我对工具软件的理解","2023-02-07 09:00",[42],"\n## 零\n\n我曾经学习过一段时间的乐器，乐器的学习提升过程中，会有瓶颈期，也就是在很长一段时间内感觉不到自己的进步。\n\n有一次，我在练琴的时候心情非常差，陷入了“学不好了”的情绪中，甚至一度开始怀疑，是否是因为我手上的乐器太过便宜，所以没有办法把乐曲演奏得很好听？\n\n但是我还没想完，我的老师们就来了，顺手拿起了我的乐器就演奏了一大段。那一瞬间我感觉他们手上的乐器并不属于我，虽然是同一个东西，但出来的声音却完全不一样。\n\n从此以后我就再不纠结了，我知道当声音不对的时候，原因只有一个，就是我没有学会方法，或者有可能我的脑子知道应该怎样，但是演奏时做不到。\n\n这段经历一直影响着我对工具的理解：没有差的工具，只有不会用的人。\n\n\u003C!-- more -->\n\n## 壹\n\n时间管理是一个指导人如何管理自己的时间和事情的领域，在这个领域中有一个很有名的方法，叫GTD——Getting Things Done。甚至有一本同名的书，专门阐述这一方法。\n\n简化版的GTD的核心做法是这样：\n\n1. 随时记录所有的事项到收集箱\n2. 每天对收集箱进行逐条整理，需要今天做的任务放到“今日”列表\n3.  按今日列表中的任务开始一天的工作\n4. 今日没做完的任务放到明天一并整理，再次安排\n\n它背后有几条指导思想：\n\n1. 清空大脑，所有你想到的新任务都应该记录到收集箱，而不是放在大脑中\n2. 只按今日列表做事，保证工作是聚焦的，这是提升效率的关键\n3. 每天对收集箱中的任务和前一日未完成的任务逐条整理，这能确保所有的任务不会被遗漏\n\n如果真的掌握了这几条指导思想和具体的实操方法后，Todo工具反而就显得不那么重要了。无论是哪一款Todo软件，清单\u002F列表、添加和移动任务、完成任务都是基本功能，只要按照GTD的方法来使用它，就是一款不错的Todo软件。\n\n即便没有Todo软件，只要能区分出列表（收集箱和今日列表）、条目（任务），也可以充当任务管理工具：能添加任务到清单、能在清单间移动任务，能操作完成任务即可。\n\n我曾经有很长一段时间在用代码编辑器管理自己的任务，效果很好。甚至不用软件，而是用便利贴这样的实体工具，遵循同样的思路，也可以收到很好的效果。除此之外，小团队协作的时候用的看板，其实也是差不多的思路。\n\n![使用代码编辑器进行任务管理](\u002Fassets\u002Ftech\u002F2023\u002Fmy-comprehension-on-tools\u002F01.png)\n\n这就叫，方法大于工具。\n\n> 但工具可以提高具体操作的效率，就像好的乐器的确可以让演奏更轻松。这一点不可否认，但这也是大家认知最丰富的一点，不需要更多解释。\n\n## 贰\n\n如果一个领域不是完全全新的，那么必然会有很多同类工具。比如在当下，记账工具、任务管理工具、笔记工具都呈现着遍地开花的状态。\n\n以笔记软件为例，有经典的印象笔记，胜在采集和资料搜索功能强大；有Obsidian，强调数据本地存储和Markdown语法；有flomo，强调卡片笔记法……\n\n这些软件都有各自的铁杆用户群，虽然互相不能说服，但乐在其中的状态却是一样的。\n\n而习惯了不同软件的人在应对笔记的态度上也会不一样。印象笔记的用户可能会习惯将看到的资料收集下来，然后在有空的时候再去整理，在需要的时候去搜索查找之前的资料。Obsidian的用户则可能会更习惯自己记录，而且会将格式整理得干净清晰，数据也都留在本机方便自己管理和备份。而flomo的用户则更可能习惯捕捉自己脑海中一闪而过的小想法，将它们都记录下来，然后回头再去回顾，或者整理成为长文。\n\n有一句话给产品经理的话是这么说：当你提供一个功能的时候，实际上就是在鼓励用户使用它。这说明，工具是在传达一些理念和方法给用户的。像flomo这样的工具，无时无刻不在宣导自己的“卡片笔记卡”，在这个方法背后也有对应的书籍和理论，只不过用户在使用这个工具的时候，通过工具的界面交互，自然而然就完成了这个方法的应用，并不需要用户先去读书了解卡片笔记法。\n\n同样，回到GTD的例子，每天对任务进行整理并得到今日任务清单是最重要的一步。Any.do、滴答清单等软件都有类似的功能，它们会在每天早上自动弹窗，将收集箱中的任务一条一条列出来，协助使用者整理出今日任务清单。如果没有这个功能的话，用户对GTD方法的实践将会大打折扣。\n\n![滴答清单每日提醒](\u002Fassets\u002Ftech\u002F2023\u002Fmy-comprehension-on-tools\u002F02.png)\n\n因此，尽管方法大于工具，但好的工具软件能将方法体现出来，长此以往，会帮助更多人掌握这些方法。\n\n## 结\n\n方法大于工具，掌握方法是比挑选工具更重要的事情。如果你没有办法主动去学习各种方法，那么挑选工具仍然是有意义的，因为它会潜移默化地教会人一些方法。\n","https:\u002F\u002Fassets.toobug.net\u002Fassets\u002Ftech\u002F2023\u002Fmy-comprehension-on-tools\u002F01.png",{"id":64,"type":7,"slug":65,"title":66,"date":67,"category":27,"tags":68,"body_markdown":70,"permalink":17,"excerpt_src":17,"media_type":17,"media_title":17,"media_author":17,"media_url":17,"rating":17,"layout":17,"pv":18,"admin_only":18,"created_at":19,"updated_at":19,"deleted_at":17,"status":20,"cover":44},93,"summary-of-2021-and-2022","2021-2022年总结","2023-02-04 13:00",[69],"年度总结","\n时间一晃，已经到了2023年2月，在舒舒服服地躺平一个春节之后，还是应该来写一下这两年的总结。\n\n## 小麦同学\n\n如果以2021年末小麦出生作为分界点，那么这两年就泾渭分明地变成了截然不同的2个部分，一半在准备小麦的到来，一半在应付小麦到来之后的事情。\n\n打算要小孩并不是一个很成熟的决定，我一直没有想好这件事情应该如何决策。经过反复思考，也没有能解答心中的疑惑，即到底为什么要生小孩？我能想到的一个可能的原因是：很多人在成年、毕业、就业、成家以后就不打算再有更多的生活规划了，于是养小孩很自然地成为了下一个生活重心。但于我而言，还有很多想去做的事情，因此并不是太情愿把大量的时间放到小孩身上。正是这一点让我犹豫不决。\n\n但是时间不等人，想不清楚的问题也许在若干年后最终会想清楚，但若干年后再要小孩已经是一件不太好实现的事情了，于是就要吧。在做出这个决定之后，也做了非常长时间的心理建设。一旦有了小孩，不可避免地就要失去自由支配时间，让自己接受这一点并不容易。\n\n好在小麦并没有太为难我们，这两年中几乎所有的过程都很顺利。尤其是小麦出生以后，各个方面的表现都非常棒，叫“天使宝宝”完全不过分。除此之外，一个新家庭成员的到来也确实增添了挺多乐趣。\n\n一边是自由时间被压缩到极限，一边是新生命带来的新体验，日子也就这么过过来了。\n\n\u003C!-- more -->\n\n## 对未来的迷茫\n\n在这两年中，也在不断设想未来的生活应该是什么样子的。整个2021年都因为这个问题而感到痛苦，这里面有多方面的原因。\n\n在[《写在新冠三年末》](\u002Farticle\u002Flife\u002F2022\u002Fnotes-at-covid-3rd-year-end.html)一文中，我有提到过，这三年总体来说是非常压抑的，无论做什么样的规划，最终都会被逼回现实，即人被困在原地没法动。我想着有朝一日能够出去环游一圈，但是却始终不清楚这一目标能够在什么时候实现，因此再低头看当下，思考当下应该做些什么的时候就会非常迷茫。\n\n如果说疫情催生了这种迷茫，那财富的大幅变化则是大大加剧了这种迷茫的程度，让人更加理不清楚。\n\n2020年，公司股价大幅上涨，带动个人财富增长，随之而来的是一些对未来生活的憧憬。但2021年，公司股价又大幅下跌，几乎一夜回到解放前，这又使得那些憧憬变得不太现实。在伴随这些起起落落的过程中，也有很长的时间在思考：未来的财富水平会是什么样子的？这个水平能够带来的生活是什么样子的？是应该接受现实活在当下，还是应该期望未来会再次有奇迹发生？\n\n## 工作\n\n从2021年开始，团队规模也在逐步扩大，随之而来的是我的工作重心也开始发生变化。之前很长时间我都需要自己在一线带团队，甚至偶尔写一些具体的业务代码，但是在团队规模扩大之后，一线的工作就自然而然地交给了其它人去处理。于是我的工作重心就转移到了纯团队管理上，也逐步变得日常化。\n\n与此同时，在技术方向上，基本上也没有精力再去顾及。年底的时候 wakatime 的年度统计报告出来了，看了一眼2022年的记录，一共编码200多个小时，平均每天40分钟，而且大部分是我的业余项目。\n\n总而言之，工作于我而言正在变成一种机械而日常的活动。\n\n## 一些规划\n\n因为上面的种种，经过2021年一整年的思考之后，也在2022年做了一些规划。虽然并不太确定这些规划能否按计划实现，但是思考的这个过程很重要，让我能去更了解自己喜欢什么，想追求什么。\n\n也许在不久之后，能够公开写下来其中的一些规划。但不论如何，希望2023年能够为这些规划做一些准备，在明年回头看时能够觉得不遗憾。\n\n## 读书\n\n额外记录一下这两年读过的书。有一段时间是利用上下班开车的时间听书，效果也还不错。（有引用样式的是在读完书后当时发到朋友圈的简评。）\n\n### 数字货币和加密货币领域\n\n2022年看到了业界对数字货币领域的重视，越来越多的机构不再将它视为玩具或可有可无的东西，而是开始认真地进行研究和投资。在看到这个趋势之后我也认真去做了一些学习，以下是其中的几本书。\n\n**《精通以太坊：开发智能合约和去中心化应用》**\n\n> 挺系统的一本书，将之前对以太坊的一些零零散散的知识串起来了，有了比较系统的了解。\n\n**《区块链超入门》**\n\n当时摘录了一段关于DeFi的部分，简评：\n\n> DeFi（去中心化金融）是第一个我觉得在深刻改变世界的区块链应用，未来还有很多想象空间。\n\n**《加密之王：币基的崛起、危机与加密经济的未来》**\n\n> coinbase的创业故事，挺好的一本书。看到结尾的一章时感觉特别惋惜：我们曾经在这个领域领先的，然而现在却眼睁睁看着这一切渐行渐远。我们终将错过，多少年后再追悔莫及。\n\n### 人和事的传记和故事\n\n**《褚时健传》**\n\n在思考未来的规划的时候，总是会很焦虑，但是在看完褚时健的一生之后，突然有一些触动：人总是会经历起起落落的，三十多岁的年纪其实还为时尚早，不用有太多担心，相信未来还会有更多更精彩的经历。\n\n> 上学 烤酒 上学 学生运动 游击队 当官 整人 被整 改造 糖厂 烟厂 红塔集团 入狱 褚橙…人的一生就浓缩在一本书里。故事未必都完全细致准确，有很多评价也再难分辨对错。但看到了一个实干而坚韧的人，确实给了我一些力量。\n\n**《腾讯传 1998-2016》**\n\n虽然我在腾讯也待了几年，了解不少事情的来龙去脉，但是这本书仍然给了我不少我不了解或者了解不太全面的信息。\n\n看完后在朋友圈摘了一段关于3Q大战的片段，当时我的评价：\n\n> 十年前弹窗的时候我也收到了，也算从旁观者的角度经历了全程。当时就很不喜欢360，在周围朋友们一片“永远不再用QQ”的氛围中很难过，不理解大家为什么不关注事实而只看舆论。现在回顾起来仍然觉得很难过，心疼腾讯。\n\n**《棉花帝国：一部资本主义全球史》**\n\n这本书我专门写了一篇[《棉花帝国》读后感](\u002Farticle\u002Fbmm\u002F2022\u002Fabout-empire-of-cotton.html)。\n\n> 这本书基本上是上下班路上听书听完的，值得回头再翻一遍。于我而言，最大的意义是，让我意识到我们习以为常的生活模式可能并不是那么理所当然，很大一部分是随资本主义兴起而产生的变化，也不过几十年或者百来年而已。\n\n**《我的二本学生》**\n\n> 真诚且现实的一本书，通过一系列年轻人的真实故事来感受这个时代，背后的潜台词其实是年轻人除了躺平之外并没有太多选择。在经济下行和大厂裁员的背景下来看更觉得真切。\n\n**《维多利亚时代的互联网》**\n\n> 讲述电报的兴起和衰亡，非常容易读。值得思考的是，电报在连接世界和改进全球协作上所起的作用和互联网如出一辙，尤其是人们对未来的的展望、担心、预言，简直是一模一样。\n\n**《集装箱改变世界》**\n\n> 集装箱——一个从来没有关注过的领域，但是发展历程还挺有意思的。稍微遗憾一些的是这本书行文有点琐碎，再精炼一些更好。\n\n**《坏血：一个硅谷巨头的秘密与谎言》**\n\n> 一家做血液检测设备的高科技公司，实际上却是一直在坑蒙拐骗。融资十亿美元，估值90亿美元，说塌就塌了。​听的时候一直在想这些人是坏还是蠢，好像都无法解释。结尾处作者说可能是反社会人格，可能还挺合理的。\n\n**《上市风云：我亲历的中概股上市潮》**\n\n这本书介绍了公司的上市历程，也由公司老板写了推荐序，因此看了一遍。总体上讲是一本走马观花般记录中国上市公司的书，能够获得一些信息，但本身并没有太多深度。\n\n### 其它\n\n**《小镇奇谈》**\n\n这两年中唯一一本读完的小说，有一点科幻元素，读起来比较轻松，结局并不是太意外，但不用太过苛求。\n\n**《置身事内：中国政府与经济发展》**\n\n我读过的第一本关于中国政府如何发展经济的书，对我而言都是全新的领域和知识，觉得比较新奇。看完之后也能更好地理解之前看到的种种现象。\n",{"id":72,"type":7,"slug":73,"title":74,"date":75,"category":27,"tags":76,"body_markdown":78,"permalink":17,"excerpt_src":17,"media_type":17,"media_title":17,"media_author":17,"media_url":17,"rating":17,"layout":17,"pv":18,"admin_only":18,"created_at":19,"updated_at":19,"deleted_at":17,"status":20,"cover":44},95,"two-ridiculous-things","记录两件离谱的事情","2023-01-18 17:30",[77],"随笔","\n## 广电号码被永久停机\n\n广电在去年下半年开始运营手机通信业务，开放了192号段的手机号。当时去看了一下，发现一个非常好的生日号码（不能再说更多了，因为实在太好了，再多一句就能猜出来完整的号码），而且刚好归属地是深圳，就立刻申请了。申请之后两三天，SIM卡就邮寄到家了，之后就一直当成备用号码使用，也没什么问题。\n\n上周日（15号）突然发现这个号码被停机了，打了客服电话说是要去营业厅二次实名认证。此时已经不点不耐烦了，但还是去了。在营业厅排队一个多小时，然后进行认证。\n\n整个认证过程索要的信息已经超出运营商必要的范围了：\n\n- 拍身份证照片\n- 要求查询名下所有手机号，拍查询结果，包括其它运营商的手机号数量\n- 举牌拍照，牌子上是一个承诺书，什么不转卖之类的\n- 如果其它运营商有2张及以上的手机号，还需要提供居住证明之类的（我不需要提供）\n\n然后告知，24小时内会复机。\n\n今天周三（18号），突然想起来应该看看这个号的状态，发现仍然是停机状态。于是再次打客服，然后客服的话直接震惊到我了：\n\n> 查到周日的确有提交二次实名认证，也查到状态仍然是停机，这说明这个号码无法复机了，只能弃用\n\n我问了一下为什么，客服只说是被关停的，无法复机，再给不出更多信息，并且说在广电投诉也无法解决问题。\n\n于是我在工信部投诉了，后续待更新，但基本上不对结果抱有期望，话费能不能拿回来都是未知数。\n\n\u003C!-- more -->\n\n## 一张银行卡被冻结\n\n电话卡被停机的经历让我立刻想到了去年下半年一张银行卡被冻结的经历。\n\n因为一些特殊的原因，去年下半年福田区政府需要打钱给我，发现打不进来。于是我只能打客服电话，被告知银行卡被冻结，要去网点解冻。\n\n当天深圳下着大暴雨，我走了1公里到银行网点去办了这个事，然后在暴雨中走回来。在网点，营业厅也给不出什么解释，在我反复逼问下，告知是公安要求冻卡，具体执行是由开户网点来执行的。\n\n于是我打了客服电话，对开户网点进行了投诉。到下午的时候网点电话来了，态度非常好，但是不解决任何问题：只有口头表示歉意，但对误判的原因、后续如何避免都没有任何解释。\n\n最终不了了之。\n\n## 一些感想\n\n虽然没有明说，但是这两件事后面大概有同一个主题，就是反诈。但很荒唐的是，负责这个事的部门躲在背后，让银行和电信公司来做具体的执行并面对客户的问题。当执行出现问题的时候银行和电信公司无法对客户给出任何解释和补偿，在这样的情况下，即便客户投诉，最终也只会不了了之，根本不会有什么满意的结果。\n\n我之前写过疫情防控的一些感想，其中有一段是这样的：\n\n> 这背后，其实是规则和法律意识淡薄的表现。做出这些决策的人没有意识到，居住、自由流通等是人的基本权利，受法律保护，是不可以随意被侵害的。而更深层次的原因，是整个体制都已经习惯了听令而动，上级命令胜过一切规则。在这样的前提下，即便是适当违规或者违法，也是无所谓的，没有人会追究其责任，甚至还可以以“不顾全大局”“寻衅滋事”的名义来应付反对的人。于是层层加码、变本加厉就层出不穷，每一次的加码都会进一步损害一些人的利益，但只要是名义是正当的，并没有人在乎有多少人利益受损。\n\n回过头来看，这两次的遭遇和疫情防控何其相似：只要能搞定反诈，中间多少客户的合法权益和行业的根基受到侵害都不在乎，哪怕通信自由是写入宪法的，哪怕信用是银行业立足的根基。\n\n作为普通人，你能咋办呢？华润万家？\n",{"id":80,"type":7,"slug":81,"title":82,"date":83,"category":27,"tags":84,"body_markdown":86,"permalink":17,"excerpt_src":17,"media_type":17,"media_title":17,"media_author":17,"media_url":17,"rating":17,"layout":17,"pv":18,"admin_only":18,"created_at":19,"updated_at":19,"deleted_at":17,"status":20,"cover":44},90,"notes-at-covid-3rd-year-end","写在新冠三年末","2022-12-23 00:00:00",[85],"疫情","\n2020年新冠爆发，没想到居然持续了三年。2022年末，终于要收尾了，按新冠纪年的话，刚好是新冠三年末。\n\n回想起来这三年，几乎每一个生活细节都或明或暗地与新冠扯上了一些关系，总体还是让人非常压抑的，因此也想在这一段即将画上句号的时候尽量以白描的方式做一个记录。\n\n## 2020年01月 湖北封省\n\n12月时已经对武汉发生的不明原因肺炎有所耳闻，但当时并没有当回事。1月21日下午5点（据高德地图记录）从办公室出发，在东莞接上家人，自驾了一夜，回到湖北老家（农村）。\n\n23日（除夕前一天）上午武汉发出1号通告，宣布武汉封城。随后在一天的时间内湖北各地陆续公告封城，至24日除夕，湖北封省。\n\n至此可以确认情况已经严重到一定程度了，我们开始在家庭群倡议过年不走亲戚。对于上一辈的人来说，过年不走亲戚可以说是快到大逆不道的程度了。最终年轻人攻势强大，他们不得不接受这一安排，但心里仍然是多少有些疙瘩的。\n\n接下来的几天，政策逐步到基层了，门口的路也都堵起来了，大家也自觉不再串门了。至此第一阶段的兵荒马乱算是告一段落。\n\n接下来的日子就是过年，由于没有了串门活动，反而显得很清静：睡到自然醒、吃饭、烤火、磕瓜子和聊天。每天望着窗外的菜地，看着萝卜白菜一棵一棵被挖出来吃掉。\n\n过年的9天假很快就过去了，按计划是要上班的日子了，但是因为封省无法外出，就开始了几个星期的远程办公。老家的桌椅都是木制的，天气也很冷，桌子也偏矮，很难找到一个舒适的办公环境，于是我大部分时间都坐在车里办公。\n\n总体来说，这段日子是一种很奇特的经历，第一次碰到有路不能走的情况，第一次碰到长时间远程办公的情况，自从上中学以后第一次在家里过年待这么长时间。\n\n\u003C!-- more -->\n\n后来亲戚们在家待得实在太无聊了，开始了做竹篾的活动，而我自己找竹子做了支笛子。\n\n当然还有不得不提的是很影响心情的刷微博。每天在微博上都能看到各种匪夷所思的情况，关于物资的、关于医护出行的、关于红十字会的、关于李文亮的等等。\n\n> 关于健康码：这一段记忆一直很模糊，我的印象是健康码很快就有了，家里人都需要连续14天打卡才变成绿码。而我自己却没有14天打卡的记忆，后来搜索了一下，深圳是全国首个推出健康码的城市，所以健康码在疫情早期就出现了是比较确定的。\n\n## 2020年2月 返深隔离\n\n2月中下旬，湖北仍然封省，且对于何时解封没有任何预期。我还能远程办公，虽然人不能出门，但收入不受影响。而对更多的人来说，多封控一天就意味着少一天的收入，对做生意的人来说后果还要更严重，多封控一天就意味着市场被对手多瓜分一天。因此到这个时间点，大家都要开始想办法出省回广东了。\n\n因为事发突然，各个地区肯定是没有直接联网的信息的，这个时候一个非常传统的东西又出现了——介绍信。在2月20号左右，开始有人给村委发接受地的介绍信，要么是目的地村委会表示接收湖北回来的人，要么是企业开介绍信说这个员工很重要请放他回来，总之有这么一个东西，湖北就开始放人了。\n\n正当我们在准备介绍信的时候，市里开通了一个线上申请的通道，于是我们早早把准备好的材料上传上去，拿到了出湖北的通行证。\n\n2月21号，我们拿着铁锹挖走了家门口路上的土堆，把车开到了大路边上停着。22号上午，在回湖北一个月之后，我和家人们开着两辆车踏上了回广东的路。车的后备箱塞满了家里带的食物，我的车里全是萝卜和白菜。\n\n在进入广东的时候，车被拦了下来，但在询问了情况，看了通行证之后就放行了。\n\n我们两辆车上的人，分别需要去中山、东莞、深圳3个地方，另一辆车理所当然地安排直接去中山。而我们的车是打算先经过东莞再回深圳。\n\n在路上查到消息说东莞在高速口有卡口，下高速就会被拉去隔离，因此中途我们打算直奔深圳，一起在深圳隔离完再回东莞。但在临近东莞的时候，得到消息说东莞已经下达了命令，所有高速卡口全部撤走。于是再度修改计划，先进东莞再回深圳。\n\n我们在22号晚上大概11点半进入东莞，但一下高速就在卡口被没收了身份证和驾驶证。事后得知，卡口撤离是23号才执行。\n\n于是在23号凌晨，我们被交警的车领着去隔离酒店。当天天很冷，先到了一个酒店门口，在外面等了一两个小时，最后说酒店满了，再转场去另一个酒店。又开了一会车才到达另一个酒店，同样是人满为患，所有人都在酒店门口一边吹冷风等安排。\n\n到了凌晨三四点，仍然没有安排完。后来家人示意我往外走，原来刚好装我们证件的袋子掉在了地上，于是我们就捡回了自己的证件。回到车上，在车上休息了几个小时，醒来后酒店已经没有人影了，估计该安顿的都安顿好了。就这样把东莞的家人送回了家，然后我重新启程回深圳。\n\n为了避免高速再出状况，我选择了走国道。在进入深圳的时候碰到了查健康码的卡口，但我拿着我的红码依然过去了，大概那个时候大家都不知道健康码应该查什么，只是看是不是深圳的码。\n\n回到深圳以后接到了来自东莞松山湖片区公安的电话，说是我的手机号在那里停留超过4小时了，我答复只是路过，已经回了深圳，对方表示会将信息移交给深圳公安处理。\n\n可以看到这是一个与后来非常不一致的操作，不同属地的公安会有信息共享，而在后来的很多事情中，大部分的处理都是“只要不在我的地盘就不关我的事”。\n\n回到深圳就开始了14天的隔离，外卖有保安送上门，垃圾也有人清理，门口装了摄像头，一直到3月。\n\n隔离期间每天过得很紧凑，尤其是白天的时间，上午上完班就要马上准备午饭，做完吃完基本上就到了下午上班时间。这段时间还有一个头疼的事就是之前从家里带回深圳的一车的萝卜白菜，在14天的隔离期内拼了命在吃，但实在太多了，最后仍然是吃一半丢一半了。\n\n## 2020年3月 隔离结束\n\n3月9日，隔离结束，第一时间去街道给鼠宝宝办手续。第2天去医院检查，得知鼠宝宝没有了。虽然这个结果可能与隔离并没有太大关系，但难免很沮丧。\n\n> 对这个时间点的疫情防控印象：进医院需要填报14天内有没有到过湖北，但有没有查健康码很模糊了。\n\n解封之后就是正常的上班时间，大家很自觉地每天戴口罩，但除此之外，也没有太多别的防控措施。\n\n从3月开始，感觉整个事情都在向好的方向发展：\n\n- 4月8日，武汉解封，标志着第一轮封锁正式解除\n- 全国各地病例逐步清零\n- 各种公众号开始发“何时能不戴口罩”的文章，大家都很乐观\n- 很长一段时间内全国都是低风险区域\n\n这年五一我们又和家人去了惠州一个很偏僻的乡下露营，也是期望能一扫之前的阴霾，总体来说没有受到疫情的干扰，还是比较愉快。\n\n> 在国内的疫情逐步平息的时候，国外却逐步爆发了，和老家电话时我也反复在说，国内没问题了，现在主要是国外问题比较大。\n\n## 2020年10月 青岛\n\n十一仍然是个热门旅游时间，这一年的十一，感觉整个朋友圈的朋友都去了新疆旅游。本着不抢热点的态度，我们选择了去青岛。在青岛每天都是海鲜啤酒，倒也不是说有多爱，而是如果你不太能接受这两样的话，在青岛可能比较难饮食。\n\n从青岛回来就看到青岛有病例的新闻，于是赶紧自费去医院做了一个核酸。这是我印象中第一次做核酸，花了58元，在港大医院做的。\n\n## 2021年2月 不离深的春节\n\n自2020年春节爆发后的第一个春节，各地有零星的病例，政府也比较害怕疫情扩散，号召大家就地过年。我们本着“非必要不离深”的原则，决定在深圳过年。除夕叫了2个朋友 ，拖家带口的，三家人在深圳一起过了一个春节，年夜（午）饭做了18个菜。\n\n然后家属在医院做了个小手术，一大早在医院楼下做核酸，捅鼻子，那也是唯一一次做鼻拭子核酸，也是我印象中第二次做核酸。\n\n印象中也是在这个时间点，核酸技术有所发展，鼻拭子、咽拭子、肛拭子都来了，大家零星有一些讨论。\n\n## 2021年5月 东山岛\n\n整个2021年疫情都比较平稳，只是不再像2020年那样各地清零，而是不断有零星疫情。但这些都没有对生产生活产生很大的影响。\n\n五一我们跟随同学一起，4个人去到了福建东山岛，在那里看了一场漂亮的日落，第二天在沙滩撒野，放足了风筝。这一路也是畅通无阻，回来的路上在惠州充电和吃饭也很顺利。\n\n## 2021年6月 打疫苗\n\n6月份开始推广疫苗，深圳某街道打出了“我们一起打疫苗，一起苗苗苗苗苗”的横幅火遍全网。刚好这个时间深圳又爆发了一波疫情，大家都非常配合，也有很多人真的觉得通过疫苗建立免疫屏障是可行的，那接种疫苗也是每个人的责任。\n\n粤海街道直接将疫苗接种点设置在了科兴，每天都是人满为患，有时候在网上都预约不到。我也在6月以及随后的几个月中分别打了两针疫苗。\n\n在6月份，深圳第一次开始做“全员核酸”，我也在某天早上来到了家附近的一个停车场，排了10分钟的队伍参加了这次核酸。核酸完之后要在辖区花名册上找到自己家的房间然后把自己的名字勾上，并在手机上贴上贴纸表示已参加核酸检测。\n\n> 当时看到这个花名册的时候感觉有一点恐怖，整个辖区每一个小区每一栋楼每一个房间的每一个人都在名单上，手机号、身份证号等信息都在那里，如果从信息安全的角度来考虑，完全就是一个很大的泄露风险点。\n\n这里有2个关键信号：\n\n1. 这是深圳第一次做全员核酸，之前没有做过大规模的核酸检测\n2. 此时的核酸依然没有电子凭证，以贴纸表示已参加检测，这个措施一直要维持到下一年的年初才有变化\n\n## 2021年10月 海南之行\n\n10月份全国的疫情仍然比较稳定，我们趁着中秋和国庆的假期，自驾去了海南。路过广州绕城高速，堵了几个小时，此后一路顺畅。半夜把车停在服务区，在车上睡了一晚，一大早继续出发，上午就到了湛江徐闻港，准备轮渡过海。\n\n过海的经历比较有意思，第一次开车上船，船上的位置特别窄，工作人员指挥了半天才停好，最后还上来亲切地问我有没有烟。大概是上船比较早的原因，我们的车居然是最后一辆出港的。与之形成对比的是，回广东的时候，一不小心成了第一辆车出港的车，看大家跟在我后面跑错方向再转头回去，也是很有趣。\n\n总之到海南这一路也是畅通无阻，在海南岛上也没有什么疫情防控措施，只有在海口进到骑楼老街的时候被要求亮健康码，我们用了国务院的小程序亮健康码，顺利通过。\n\n## 2021年12月 小麦出生和深圳清零过年\n\n12月底，小麦同学出生了。住院前在医院做了核酸，基本上一切顺利。回家后休着陪产假在家带娃，也没有太多值得说的事情。月子期间我们也将小麦放在了专门买的提篮上开车出去转了一圈，买了几杯咖啡。\n\n到1月底也就基本过年了，年前深圳疫情又爆发了一波，这次有明确的分型和流调，很明确地说了是奥密克戎。\n\n前一年很多小伙伴很听话地在深圳过年了，这一年自然是想回去，而深圳也很努力，一直在暗示大家，有希望在年前清零回家。在这样一种望眼欲穿的集体情绪下，果然深圳就在春节前清零了。于是大家很高兴地回家了。\n\n我们因为小麦才刚满月，自然选择在深圳过年。\n\n但这个年过得并不太平，大年三十晚上，正看着春晚，看到消息说深圳又爆了一例。再结合广西因为深圳回家过年的人导致爆发100多例的情况来看，深圳年前这一波可能真的是强行清零了。\n\n好在我们只用待在家里就好，刚好冬奥会在春节期间举行，每天除了带娃之外，还能看看比赛，也算充实。\n\n## 2022年2月 封城和核酸\n\n随着春节那一例的爆发，深圳的奥密克戎正式进入一发不可收拾的状态。也是从这一刻开始，深圳开始无下限地败好感。\n\n22日，小区要求三天三检，22-24日每天早上做完核酸才能出小区，哪怕你拿着24小时核酸也不能出，必须当场检完核酸才可以。\n\n22日一大早，7点就开始排队，一直到9点钟工作人员来没到，折腾到快9点半才做完核酸出门上班。和之前一样，这次核酸的凭证仍然是贴纸，保安见贴纸放人出门。\n\n白天听闻家附近有4个小区被封了，超市也被洗劫一空，于是凭直觉感觉我们小区也快要被封了。晚上下班后和同事交代了一下工作，表示第二天有可能上不了班，然后去了南山的一家沃尔玛买了300多元的菜。回家后又把刚来深圳马上要去公司报到的表妹送到了盐田区的酒店住下，然后开着车回到了公司把车安顿好。到了凌晨才打车回到家。\n\n毫无意外，小区被封了。从2月22日到3月27日，小区被封一个多月，尽管每一次核酸都是阴性，但仍然要每天下楼做核酸。而且这个封禁非常不明不白。\n\n按照深圳的发文，疫情期间划定了封控区、管控区、防范区（武断一点，而且不打算考证：这肯定又是深圳发明的概念）。封控区足不出户，管控区不能出小区，而防范区是可以出门活动的。诡异的是我们小区一直属于防范区，而且一个月的时间内还喜提了多个新概念：防范区、参照管控区、重点防范区。总而言之，就是不让出门，连名义都不打算好好糊弄一下。而卫健委的公众号每天都有人刷屏滨河南，没有人敢做一句回复。直到3月27日解封前，深圳的发布会直播间全部人都在刷屏滨河南解封，依然没有人有半句回复，最后以禁言收场。\n\n在这封城的一个多月时间里，物资倒还算通畅，外卖小哥都在岗位上，这算是深圳做得还不错的一个地方。尤其是和后面的上海比起来，算是非常好了。\n\n尽管3月底小区解封了，但随后大大小小的封禁层出不穷，甚至深圳还把这个事玩出了各种花：\n\n- 小区不封，但是所有的公园、商场、店铺全部关门，也就是可以出门，但是没地方可去\n- 周末小规模封2-3天，不影响大家上班，但周末哪也别想去\n\n总之封城封区封小区之类的事情，在这一年就开始家常便饭起来了。\n\n## 2022年4月 常态化核酸\n\n从过年之后，宣传口就开始不停地宣传疫情防控到了最吃劲的时候。各区开始一轮一轮地做全员核酸了，一开始还有名有姓的，“XX街道第X轮全员核酸”，每一轮做完都发一个贴纸。大家也很配合，甚至不少人觉得核酸贴纸好看，开始了集贴纸的操作。\n\n粤海街道甚至因为在贴纸上使用了“冰墩墩”的形象而被人举报，引出了不小的风波。\n\n与此同时，有一首《听我说谢谢你》也开始火遍全网，据传闻是有小孩在做核酸的地方用这首歌跳舞感谢做核酸的工作人员。我没有听这首歌也没有看这个视频，但此时大家并不反感做核酸倒是真的。\n\n随着核酸轮数越来越多，后面相应的措施也在逐步变化：\n\n- 深圳各个商场、办公楼、小区开始推行查验核酸的操作\n- 从一开始的72小时核酸到后来的24小时核酸\n- 从一开始的人工查验到各种刷码机器\n- 各个地方的核酸点越来越普遍\n\n这个时间点还有一个很重要的变化：随着核酸阴性证明越来越成为主流，它的作用超越了健康码本身，也差不多是在这个时间点，核酸结果会影响健康码的颜色了。基层工作人员终于意识到了，原来不做核酸就可以给黄码和红码，这简直太好用了。\n\n当然，在4月还有一个不应该被忘记的《四月之声》。\n\n## 202206 疯狂的黄码和红码\n\n随着核酸常态化的进行，黄码和红码的门槛也越来越低了：不做核酸给黄码，外地来的给黄码，密接给红码，风险地区给黄码……\n\n有一个画面我可能一辈子都不会忘掉了：深圳在大热天给科兴几万人赋黄码，排队做核酸的人堪比春运期间的广州站。更过分的是，我们有同事是孕妇，也要在30多度的天顶着太阳排两三个小时做核酸。\n\n这段时间内离谱的事情也逐渐多了起来。我们有同事在坐公交回家的路上，突然被通知下车，健康码变红码，蹲在路边几个小时原地等工作人员核实。\n\n事情的顶峰大概出现在河南，当地给赶赴河南进行银行存款维权的人赋红码，致其寸步难行，这标志着健康码正式有了电子镣铐的作用。这件事在网上闹得沸沸扬扬，虽然最后被发文批评，但相关人员并没有得到太严肃的处理。\n\n经过这一段时间的发酵，也终于开始有更多的人对无休止的核酸和赋码感到不快了。但相关的措施却丝毫没有放松的迹象，反而在不断收紧：\n\n- 一开始还有从24小时核酸放松到48小时的调整，后来干脆不调了，一直24小时核酸\n- 电子哨兵越来越多，从亮码变为必须扫码才能通过\n- 开始推广团体码，给企业施压，让企业管理员工的健康码和核酸状态\n\n## 2022年10月 湖南自由行\n\n到了10月份，深圳人已经做核酸半年多了，疫情形势却没有好转的迹象，官方仍然在宣传“到了最吃劲的时候”、“深圳一定可以”什么的。\n\n而差旅人士却并没有在担心病毒的疫情，只是在担心隔离。从事后的统计来看，10月和11月，国内迎来了一波封锁隔离的高峰。身边的朋友也纷纷在这几个月被或长或短地进行隔离。\n\n十一假期我们也比较担心被隔离，于是打算找一些冷门的地方逛一逛。原本打算去江西，但临行前江西又爆发了一波疫情，只能改道去了湖南。\n\n在去湖南的路上有一个小插曲：我们按导航在宜章下了高速，在高速口被拦下，工作人员让我们填表登记，经过反复确认，得知我们的目的是郴州而不是宜章时，直接摆手说“赶紧走赶紧走”。\n\n事后我们在反复回味这个插曲，它生动地说明了当时疫情防控的策略“管好上面要我管的，其它的不关我事”，这与疫情之初形成了鲜明对比。\n\n在湖南的几天感到了这一年以来前所未有的自由：商场都不测核酸、不查健康码、不限流、不限堂食，来去自由的感受真的太好了。湖南人民似乎也很享受这种自由，我们去到了一个商场，商场外围几圈的马路都是堵车的，商场的广场上有活动，热闹得不得了，人挤人，商场里面也到处都是人，这是我疫情三年来第一次在生活中看到人群如此密集的地方。\n\n按要求，我们属于外地去湖南的，还需要三天三检，于是每天都很听话地去做核酸。然后才发现湖南人民对核酸依然是相对陌生的，去做核酸都得去医院自费，这一点完全不像深圳满大街是核酸点，每天都要测。\n\n总之在湖南感受非常自由，我们每天都疯狂喝奶茶，除了湖南特产茶顔悦乐以外，其它的品牌也喝，总之就是感受一种放纵的自由。这也是我第一次有离开了深圳后不想回来的念头。以往每一次回深圳的时候总会感慨一下，还是深圳好。但这一次，我感觉深圳不好了。\n\n## 2022年12月 一波三折的开放\n\n11月11日，“二十条”发布，在我看来这是一个稍微放松的信号，里面也确实有关于“不得扩大核酸范围”、“取消航班精神焕发”、“减少隔离时长”、“取消次密接判定”等内容。然而一些地方的封锁却更加变本加厉，而大家的反抗情绪也越来越强烈。最终乌鲁木齐一场大火彻底点燃了民众的怒火，朋友圈再次密集冲塔，随后大家踏出了解除封锁的脚步。\n\n11月30日，网传深圳天安云谷（华为为代表的园区）不再查验核酸和健康码，随后又传出学校不再查核酸的消息。但很快深圳官方进行了辟谣。\n\n到12月2日（周五），深圳南山区、宝安区、福田区等大部分地方仍然在查验24小时核酸，公司还专门通知下周仍然需要24小时核酸。但随后周末就宣布不再查了。于是做了一年核酸的深圳人正式脱离这个苦海了。\n\n然而，我们的故事还没结束，在此之后还经历了封楼、解封、封楼、解封。\n\n12月2日（周五）晚上，也就是在深圳即将宣布停止查验核酸和健康码的前夕，同楼栋楼下有一家核酸结果阳性。于是整栋楼被划为高风险区，居家隔离5天。\n\n在隔离完一个周末后，12月4日晚，有居民开始提出质疑：\n\n1. 阳性病例在卫健委公布的病例中并不存在\n2. 封楼栋的做法与最新的政策不符\n\n于是一番交涉后，除阳性所在楼层外，其它楼层解封，但解封后的前三天仍然要测核酸，三天三检。于是我在失去一个周末后，获得了周一去上班的机会。\n\n周一（12月5日）下班回到家，发现同楼层又有一家核酸阳性。于是再居家隔离5天。\n\n12月7日“新十条”发布，进一步放宽疫情管控措施，我们在当天晚上被告知可以自由活动，于是本次隔离在经历2天后最终结束。\n\n经历这一波三折，最终迎来开放。打开房间门之后发现楼道里像荒废的战场，消毒水留下的痕迹、满地水渍的时候留下的脚印、电梯里留下的纸巾、楼下留下的封条等等，看着触目惊心。\n\n而看着尤为诡异的是，在所有人都已经放开的情况下，导致最后一次封楼的那一户仍然被关在家好多天。\n\n随后的每天上下班我都能在楼道里见到守在他家门口的“大白”，每一次我都会觉得特别讽刺：他仍然在坚守他的岗位，然而给他这个岗位的那艘船已经调头离开，再也不会回来了。\n\n## 一些资料\n\n- [腾讯“防疫健康码”于2月9日率先落地深圳，深圳成为全国首个推出“健康码”的城市](https:\u002F\u002Ftech.qq.com\u002Fa\u002F20200310\u002F016327.htm)\n- [15个小区解封！深圳“5.21”疫情连续17天“清零”](https:\u002F\u002Fnew.qq.com\u002Frain\u002Fa\u002F20210624A0DZHX00)\n- [核酸检测贴纸使用冰墩墩，街道被指侵权？！](https:\u002F\u002Fnew.qq.com\u002Frain\u002Fa\u002F20220318A04VKE00)\n",{"id":88,"type":7,"slug":89,"title":90,"date":91,"category":92,"tags":93,"body_markdown":95,"permalink":17,"excerpt_src":17,"media_type":96,"media_title":97,"media_author":98,"media_url":99,"rating":17,"layout":17,"pv":18,"admin_only":18,"created_at":19,"updated_at":19,"deleted_at":17,"status":20,"cover":100},17,"about-empire-of-cotton","《棉花帝国》读后感","2022-10-28 00:00:00","bmm",[94],"书","\n![棉花帝国](\u002Fassets\u002Flife\u002F2022\u002Fabout-empire-of-cotton\u002F01.jpg)\n\n《棉花帝国》有一个副标题叫“一部资本主义全球史”，它是一本很“大”的书：一方面是篇幅巨大，章节和文字都很多；另一方面它的结构和内容也非常宏大，涉及到的地理位置、时间空间也很大。因此它被称为“资本主义全球史”是很恰当的。\n\n## 大致内容\n\n按照章节划分，作者将资本主义发展史明显地分为三个部分：战争资本主义、工业资本主义、全球资本主义。\n\n\u003C!-- more -->\n\n整体的行文脉络就是以棉花种植和绵纺织业的发展为线索，串起整个资本主义的发展：\n- 最开始通过战争的方式抢夺劳动力，然后建立种植园、奴隶等劳工制度。大量的劳动力在这个阶段被卷入资本主义的庞大叙事中。\n- 随着工业化的来临，资本、国家组建起了一个更为成熟和稳定的棉花帝国，它们一起通过相关法律建立了劳动制度。在这个阶段，有一些人是终身不得辞职的，工作时长也由法规说了算，没有自主空间。美国内战的背景也与此有关，这一阶段以美国内战作为结束标志。\n- 最终更成熟的全球化来临，国家更重视这个行业的发展，棉花和纺织业的竞争成为国与国的竞争，对劳动力的需求更加强烈，全球分工合作也更明确。\n\n## 我的思考\n\n关于资本主义这个概念，我并没有太深入的认知。比较模糊的感受是，它的确是带来了生产力的提升的，我们日常使用的自来水、电、电器、交通工具、生产工具等等，无一不是伴随资本主义的兴起而发展起来的，客观地讲一定是提升了相当多人的生活水平的。\n\n但这里面的问题在于，资本主义带来的这一条路，使得大部分的人并没有更多的选择了。这个世界的主流劳动模式已经变成为“打工”，大家对公司、工厂已经非常熟悉，对自己要上班的宿命也非常认可，甚至很多人从来都没有思考过是否还可能有其它的劳动形态和生活形态。\n\n我自己也是这样一种认知，直到在看到资本主义完整的发展史后，才产生出一些思考：可能我们习以为常的一切都不是与生俱来的。\n\n固定班制工作的历史也才一百多年，相比较漫长的人类历史，这实在是太少了。从这个角度来看，它是否是终极形态甚至是否是正确的都值得打一个大大的问号。也许在多少年以后，后人也会非常疑惑，为什么会有人心甘情愿每天把自己所有的时间浪费在办公室一个小格间或者工厂一个固定的位置上？这正像我们现在回头去年奴隶制度时的感受。也许现在的工作制度和奴隶制本身也没有本质的区别，只是资本和国家一起在控制这个工作制度，把人们的劳动和非劳动始终控制在一个范围内，从而让大家心理上的不适感得到了缓解。\n\n资本主义的洪流是不可逆的，也并不会因为一两个人的意志而有所改变。即便意识到这种工作制度可能并没有那么理所当然，也不一定有选择可以跳出来。但不管如何，站在更高的视野来看这个事情是有价值的，起码让人可以时刻提醒自己：你可以跳跳看，也许旁边有不一样的风景。\n","book","棉花帝国","斯文·贝克特","https:\u002F\u002Fbook.douban.com\u002Fsubject\u002F30411849\u002F","https:\u002F\u002Fassets.toobug.net\u002Fassets\u002Flife\u002F2022\u002Fabout-empire-of-cotton\u002F01.jpg",{"id":102,"type":7,"slug":103,"title":104,"date":105,"category":11,"tags":106,"body_markdown":108,"permalink":17,"excerpt_src":17,"media_type":17,"media_title":17,"media_author":17,"media_url":17,"rating":17,"layout":17,"pv":18,"admin_only":18,"created_at":19,"updated_at":19,"deleted_at":17,"status":20,"cover":44},129,"all-about-ic-card","关于非接触IC卡的一些记录","2022-10-08 17:37",[107],"IC卡","\n今年上半年因为捣鼓门禁的原因，重新研究了一下非接触IC卡，记录一下。\n\n## 概念和技术特征\n\n一般使用的非接触IC卡全称叫 Mifare S50 1K卡，是否严谨并不重要，总之用这些名字能找到一些确切的资料。\n\n工作频率：13.56MHz，也被称为高频卡。感应距离大概在1cm左右。\n\n## 存储结构\n\nMifare S50 1K卡的存储空间总共有1K。分为16个扇区，分别编号为0-15扇区。\n\n### 扇区内结构\n\n每个扇区的结构如下：\n\n```\n块0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n块1: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n块2: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n块3: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n```\n\n> `00`表示一个字节，使用16进制表示。\n\n可以看到扇区分为4个块，每块有16个字节。\n\n其中块0-2是数据块，块3是控制块。即块3不能用于存储数据。\n\n\u003C!-- more -->\n\n### 扇区控制块\n\n块3为扇区控制块，用于控制扇区的访问权限。块3的结构如下：\n\n```\n密码A：00 00 00 00 00 00\n控制位：00 00 00 00\n密码B：00 00 00 00 00 00\n```\n\n密码A和密码B的默认值为`FF FF FF FF FF FF`。\n\n控制位默认值为`FF078069`，实际有效的只有前3位，第4位可以忽略。它的具体含义不展开，可参考\u003Chttps:\u002F\u002Fblog.csdn.net\u002Fweixin_40600325\u002Farticle\u002Fdetails\u002F85250435>。\n\n总之，密码A和密码B是这个扇区的访问密码，而控制位用于控制扇区的访问权限，决定拥有密码A或密码B的用户是否可以对扇区进行操作（读取、加值、减值等）。在保持默认的控制位值不变的情况下，在拥有密钥A和密钥B时就能对扇区内的数据进行读写。\n\n### 0扇区\n\n0扇区比较特殊，它的块1-3和其它扇区都一致，但是第0块一般是厂商固化的，不允许修改。我们也可以把它叫作这张卡的“卡号”，每一张卡的第0块都是不一样的。\n\n> 0扇区第0块有16个字节，但是在实际使用中，一般只有前几个字节是有用的，后面的字节即便不一致也不影响，所以有时候“卡号”仅指前几个字节。\n\n### 加密卡与非加密卡\n\n实际上加密卡与非加密卡的概念并不是很准确，因为卡片本身并不能加密数据，而只是通过密码来控制扇区的访问权限。一般我们把密码全部为默认值的卡叫做“非加密卡”，而密码不全为默认值的卡叫做“加密卡”。也就是说，加密卡中至少有一个扇区的一个密码是未知的。\n\n## 如何获取扇区数据\n\n如果需要分析或者复制一张卡片，首先需要获取卡片的数据。这里记录2种方法：\n\n1. 使用Android APP：Mifare Classic Tool，这个工具具备完整的读写功能，包括密码破解的功能也有，如果密码比较弱的话，可以很容易读取到所有扇区的数据\n2. 使用PM5之类的硬件，可淘宝或拼多多，一般会附带软件，具备完整的读写功能\n\n当我们读取到完整的扇区数据后，可以将数据保存到文件中，这样后续分析或者再写入其它地方都比较方便。\n\n## 门禁和复制门禁卡\n\n门禁是非接触IC卡的一个典型应用场景，而视门禁系统的不同，它对于IC卡的使用方式也不完全相同。\n\n- 有些门禁系统只验证IC卡的卡号，而不对其它扇区的数据做进一步的验证，这种一般使用“非加密卡”\n- 有些门禁系统会验证IC卡的卡号，同时会验证某个扇区或某几个扇区的数据，这种一般使用“加密卡”\n\n目前Android手机都标配了全功能NFC，即可以完整地读写非接触IC卡。因此，我们也可以通过手机来复制门禁卡。\n\n使用手机复制门禁卡或者将门禁卡复制到其它卡片上的一般有下面一些解法。\n\n### 手机复制非加密卡\n\n针对“非加密卡”，一般国产手机厂商都内置了“复制门禁卡”的功能，它的原理很简单，就是直接复制门禁卡的0扇区第0块，也就是卡号，针对只验证卡号的门禁系统有效。有一些手机在碰到“加密卡”时，也会尝试复制卡号，此时就会出现门禁卡复制成功，但是刷卡没有反应的情况，因为门禁系统验证其它扇区数据时会失败。\n\n### 在门禁系统中添加新卡\n\n针对“非加密卡”，还有一种解决办法，就是使用手机已有的卡（门禁卡或者公交卡都可以）。这种方法需要联系小区、公司等门禁系统的管理员，让他们在门禁系统中添加新卡，然后将手机已有的卡（门禁卡或者公交卡）刷到门禁系统中，这样就可以使用手机已有的卡来刷门禁了。这也是网上流传的“iPhone复制门禁卡”的方法。\n\n### 手机复制加密卡\n\n针对“加密卡”，可以在手机上尝试破解密码，复制完整的0-15扇区数据，因为所有扇区数据都被完全复制了，因此门禁系统验证时都可以通过。目前已知小米、华为手机都可以通过这样的方式来复制加密卡（可能除了破解之外还有云端共享密码的手段），但是整个过程中，数据对用户而言是不可见的。\n\n也可以只用手机自带功能复制卡号，然后使用另一台带有完整扇区数据的手机或者写卡器将其它扇区写入门禁卡，这样也可以实现复制加密卡。\n\n### 复制门禁卡到手环\n\n针对“非加密卡”，一般来说和复制到手机的方式差不多，只不过是手机上多了一个写入的操作，大部分国产手环搭配Android手机都可以完成这个过程。\n\n针对“加密卡”，同样涉及到破解密码的问题，大部分手环只允许复制卡号。这也是网上很多人觉得手环不能复制加密卡门禁的原因。事实上，在复制卡号之后，手环就拥有了0扇区的数据，接下来只需要再通过手机或者写卡器将其它扇区的数据写入手环即可。\n\n### 复制门禁卡到其它卡片\n\n和复制加密卡到手环类似，首先需要获取原始卡片的扇区数据，然后使用手机或者写卡器写入空白卡片即可。\n\n但值得注意的是，空白卡片分为好几种，有一些是0扇区不可写入的（正常的卡\u002FUID卡），有一些是0扇区可以反复写入的（CUID卡）。如果需要复制门禁卡，则一定需要复制卡号，因此需要使用CUID卡。\n\n> 顺便也提一下“ID卡”，ID卡只存储了卡号，而且卡号一般都刻在卡片上。ID卡的工作频率是125KHz，感应距离大概在10cm左右。如果需要复制ID卡，只需要将卡号告诉给淘宝卖家，他们会帮你复制好卡寄过来。\n\n## 小结\n\n非接触IC卡其实还挺复杂的，但是在门禁这个应用场景里，一般都不会太复杂，要么复制卡号即可，要么复制卡号+扇区数据即可。稍微麻烦一点的是，如果需要复制加密卡，那么就需要破解密码。\n",{"id":110,"type":7,"slug":111,"title":112,"date":113,"category":27,"tags":114,"body_markdown":115,"permalink":17,"excerpt_src":17,"media_type":17,"media_title":17,"media_author":17,"media_url":17,"rating":17,"layout":17,"pv":18,"admin_only":18,"created_at":19,"updated_at":19,"deleted_at":17,"status":20,"cover":116},91,"what-does-epidemic-changed","疫情改变了什么","2022-08-30 00:00:00",[85],"\n疫情已经三年了，当下还没有看到结束的希望。在这份煎熬中，也有很多东西已经被深刻地改变了。尽管可能要到结束后回头再看，才能做出更全面的评价，但身处疫情中的每一天都会有很多话想说，于是不管是否片面，先记录下。\n\n## 需求层次\n\n> 以下理论部分内容摘自维基百科\u003Chttps:\u002F\u002Fzh.m.wikipedia.org\u002Fzh-cn\u002F%E9%9C%80%E6%B1%82%E5%B1%82%E6%AC%A1%E7%90%86%E8%AE%BA>。\n\n人都是有欲望和冲动的，这些都叫需求，渴望被满足。按照马洛斯需求层次理论，分为5个层级：\n\n![马洛斯需求层次理论](\u002Fassets\u002Flife\u002F2022\u002Fwhat-does-epidemic-changed\u002F01.png)\n\n|需求层次|需求描述|不被满足时的后果|\n|------|-------|--------------|\n|生理需求|最低、最急迫的需求，如食物、水、空气、睡眠、性|什么都不想，只想活下去，思考能力、道德观明显变得脆弱|\n|安全需求|人身安全、生活稳定、免遭痛苦、威胁或疾病、身份健康以及有自己的财产等与自身安全感有关的事情|感到受到威胁，觉得世界是不公平或是危险的，不相信社会、不敢表现自己|\n|爱和归属的需求|对友谊、爱情以及隶属关系的需求|认为自己没有价值活在这世界上|\n|尊严需求|成就、名声、地位和晋升机会等|爱面子，用行动让别人认同自己，易被虚荣所吸引|\n|自我实现需求|最高层，对真善美至高人生境界获得的需求|空虚感，寻找价值，价值观、道德观胜过钓鱼、爱人、尊重和社会的偏见|\n\n以前，网民会讨论“小民尊严”的问题，会讨论去哪家大厂能获得更好的发展的问题，至少这些都属于“尊严需求”和“自我实现需求”了。但是，在2022年，全面小康都已经实现了，却还有人要抢粮食甚至要饿肚子，甚至非常多的人开始和父辈们痛苦的经历产生共鸣。\n\n**疫情防控叠加经济下行，直接将很多人的需求打回了“生理需求”层次。**\n\n\u003C!-- more -->\n\n## 规则和法律缺位\n\n疫情防控期间，看到了非常多的牺牲他人利益或者损害他人权益的事情。最严重的大概是上文所说的，群众连吃饭都成了问题。至于其他问题，多到很难穷尽：\n\n- 没有地方看病\u002F不能买药\n- 没地方过夜导致半夜无家可归\n- 搭不了公共交通工具\n- 不能回家探亲\n- 快递外卖不上楼\n- 不能回办公室上班\u002F不能继续工作\n- ......\n\n还有越来越过分的防疫方法：\n\n- 不打疫苗不能XXX\n- 人在家中坐 黄码天上来\n- 每天要找地方花时间做核酸\n- ......\n\n所有的这一切，都对大家的日常生活造成了非常不便的影响，背后都是利益或权益受损。然而气愤的是，还没有人可以为此负责，问就是这是大事，你要顾全大局。\n\n疫情初期，来势汹汹，大家为了控制住疫情，让渡了自己的部分权益，换来平稳局面，我觉得这还是相当可理解的。但是当疫情情况发生变化时，有些人并不希望将大家让渡的权益还回来，反而觉得这是自己可以支配的部分。于是我们看到非常非常多显得很随意的事情：\n\n- 小区在没有上级授意的情况下就可以决定不让快递外卖上楼\n- 社区就可以为几万人赋黄码，让大家花费三四个小时顶着三伏天去找地方做核酸\n- 只要“我觉得”有风险就可以不接受外来人员，哪怕他的家在这里也不行\n- ......\n\n这背后，其实是规则和法律意识淡薄的表现。做出这些决策的人没有意识到，居住、自由流通等是人的基本权利，受法律保护，是不可以随意被侵害的。而更深层次的原因，是整个体制都已经习惯了听令而动，上级命令胜过一切规则。在这样的前提下，即便是适当违规或者违法，也是无所谓的，没有人会追究其责任，甚至还可以以“不顾全大局”“寻衅滋事”的名义来应付反对的人。于是层层加码、变本加厉就层出不穷，每一次的加码都会进一步损害一些人的利益，但只要是名义是正当的，并没有人在乎有多少人利益受损。\n\n这样的体制在某些时候是好的，它可以更快速地排除干扰因素，更有力地推进事情有进展。也正是如此，我们看到国内的疫情控制要比国外果断快速。但这个体制的弊端在于，它没有办法切实地保护每一个人的切身利益。我们经常看到“不惜一切代价”的表述，它的初衷并不是“我要损害你的利益”，而只是表达了对达成目标的决心。但是因为在实际推进时，缺少“生命、自由、财产等神圣不可侵犯”意识，就会演变成“任何事务都可能成为代价”。一个更尊重规则和法律、更好的表述应当是“在充分保障相关方利益的基础上，全力达成目标”。\n\n特别令人悲观的是，我无法预期疫情期间让渡的权益会在结束之后会完整地还回来，很有可能有一些措施会长久地实施下去了。\n\n## 后果\n\n“躺平”和“短期主义”会是非常鲜明的基调。\n\n不论对于个人还是市场主体来说，现在进行长线布局都面临巨大的不确定性。\n\n年轻人已经在深刻地面临一系列的问题：就业难、涨薪升职难、随时被封控、随时被“毕业”、房子买不起、孩子养不动……在看不到可预期的未来的前提下，就不再对未来抱有希望，这实在是一种再正常不过的心理了。需求层次滑落到生理需求的背景以及个人权益无法得到有效保护的前提下，年轻人的躺平在我看来是一个难以挽回的趋势。\n\n制造业在控制规模、削减人数，贸易行业在缩短账期、缩减有风险的客户和订单，无数的公司在裁员和退租……在明天就可能被关门停业的情况下，又有多少公司会持续地做经营提升呢？大家想得都是，要想办法削减开支，活下去最重要。于是，“短期主义”可能在未来很长一段时间内都会是大家坚守的一个信条。\n\n躺平和短期主义会带来非常不利的后果：没有人沉下心来真正投入到研究和建设中，无论是自然科学领域还是经济建设，还是文化建设或者是组织建设、制度建设，都将不再有人关心。于是我们将进一步、长期落后于人。~~至于卡脖子的问题，哪有疫情防控重要？~~\n","https:\u002F\u002Fassets.toobug.net\u002Fassets\u002Flife\u002F2022\u002Fwhat-does-epidemic-changed\u002F01.png",{"id":118,"type":7,"slug":119,"title":120,"date":121,"category":122,"tags":123,"body_markdown":125,"permalink":17,"excerpt_src":17,"media_type":17,"media_title":17,"media_author":17,"media_url":17,"rating":17,"layout":17,"pv":18,"admin_only":18,"created_at":19,"updated_at":19,"deleted_at":17,"status":20,"cover":126},191,"add-twitter-card-for-blog","为博客添加Twitter卡片","2022-08-29 00:00:00","web",[124],"Twitter","\n## 什么是Twitter卡片\n\nTwitter中可以引用各个网站的链接，如果网站不做特殊处理的话，在推文中只会显示一条普通的蓝色文字链接。\n\n![普通链接](\u002Fassets\u002Fweb\u002F2022\u002Fadd-twitter-card-for-blog\u002F01.png)\n\n但是我们时不时会看到一些引用的链接，在推文中有另外的表现，像这样：\n\n![Twitter卡片](\u002Fassets\u002Fweb\u002F2022\u002Fadd-twitter-card-for-blog\u002F02.png)\n\n这就是Twitter卡片。\n\n## 原理\n\nTwitter卡片需要网站主动进行适配，Twitter会在适当的时候访问网址进行抓取，如果能抓取到指定的结构，就会显示成卡片。\n\n按照[官方文档](https:\u002F\u002Fdeveloper.twitter.com\u002Fen\u002Fdocs\u002Ftwitter-for-websites\u002Fcards\u002Fguides\u002Fgetting-started)，卡片可以有好几种类型：\n\n- `summary` 图文摘要\n- `summary_large_image` 大图展示的图文摘要\n- `app` APP下载链接\n- `player` 视频播放器\n\n针对博客，比较适合的类型是`summary`，如果图片更重要的话，用`summary_large_image`也可以。\n\n具体而言，如果需要使用`summary`类型的卡片，需要在页面的`head`中放置以下标记：\n\n```html\n\u003C!--指定卡片类型-->\n\u003Cmeta name=\"twitter:card\" content=\"summary\" \u002F>\n\u003C!--可选：站点的twitter账号-->\n\u003Cmeta name=\"twitter:site\" content=\"@nytimesbits\" \u002F>\n\u003C!--可选：作者的twitter账号-->\n\u003Cmeta name=\"twitter:creator\" content=\"@nickbilton\" \u002F>\n\u003C!--文章URL-->\n\u003Cmeta property=\"og:url\" content=\"http:\u002F\u002Fbits.blogs.nytimes.com\u002F2011\u002F12\u002F08\u002Fa-twitter-for-my-sister\u002F\" \u002F>\n\u003C!--文章标题-->\n\u003Cmeta property=\"og:title\" content=\"A Twitter for My Sister\" \u002F>\n\u003C!--文章摘要-->\n\u003Cmeta property=\"og:description\" content=\"In the early days, Twitter grew so quickly that it was almost impossible to add new features because engineers spent their time trying to keep the rocket ship from stalling.\" \u002F>\n\u003C!--文章配图-->\n\u003Cmeta property=\"og:image\" content=\"http:\u002F\u002Fgraphics8.nytimes.com\u002Fimages\u002F2011\u002F12\u002F08\u002Ftechnology\u002Fbits-newtwitter\u002Fbits-newtwitter-tmagArticle.jpg\" \u002F>\n```\n\n\u003C!-- more -->\n\n事实上下面这些`og:`开头的标签，使用Twitter专属的标签也可以生效。\n\n```html\n\u003Cmeta name=\"twitter:title\" content=\"In the early days, Twitter grew so quickly that it was almost impossible to add new features because engineers spent their time trying to keep the rocket ship from stalling.\" \u002F>\n\u003Cmeta name=\"twitter:description\" content=\"In the early days, Twitter grew so quickly that it was almost impossible to add new features because engineers spent their time trying to keep the rocket ship from stalling.\" \u002F>\n\u003Cmeta name=\"twitter:image:src\" content=\"http:\u002F\u002Fgraphics8.nytimes.com\u002Fimages\u002F2011\u002F12\u002F08\u002Ftechnology\u002Fbits-newtwitter\u002Fbits-newtwitter-tmagArticle.jpg\" \u002F>\n```\n\n## 实战\n\n在Hexo中，只需要修改一下模板，为文章页添加一下上述标记，并填上对应的内容即可（模板是jade\u002Fpug）：\n\n```pug\nmeta(name=\"description\", content=desc)\nmeta(name=\"twitter:card\", content=\"summary\")\nmeta(name=\"twitter:creator\", content=\"@TooooooBug\")\nmeta(name=\"og:url\", content=config.url + url_for(page.path))\nmeta(name=\"og:title\", content=page.title)\nmeta(name=\"og:description\", content=page.raw.replace(\u002F^[\\s\\S]*---\\n\\n\u002F, '').replace(\u002F\\s+\u002Fg, ' ').slice(0, 100), '')\n- var getPhoto = (raw) => {\n-   const regex = \u002F\\!\\[.*?\\]\\((.*?)\\)\u002F;\n-   const matches = regex.exec(raw);\n-   if (matches && matches[1]) return matches[1];\n-   return '\u002Flogo.png';\n- }\nmeta(name=\"og:image\", content=config.url + getPhoto(page.raw))\n```\n\n中间加了一个`getPhoto()`方法，从原始的Markdown文本中解析出第一张图片的url，如果没有找到图片，则使用logo。\n\n## 小结\n\n挺简单的配置就能实现Twitter卡片，如果配置成功了，在发送推文的时候也可能会出现卡片预览。\n\n![卡片预览](\u002Fassets\u002Fweb\u002F2022\u002Fadd-twitter-card-for-blog\u002F03.png)\n","https:\u002F\u002Fassets.toobug.net\u002Fassets\u002Fweb\u002F2022\u002Fadd-twitter-card-for-blog\u002F01.png",190]