<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>计划与总结 &#8211; 李辉 / Grey Li</title>
	<atom:link href="https://greyli.com/category/gtd/feed/" rel="self" type="application/rss+xml" />
	<link>https://greyli.com</link>
	<description>一个编程和写作爱好者的在线记事本</description>
	<lastBuildDate>Fri, 06 Mar 2026 11:21:04 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.26</generator>

<image>
	<url>https://greyli.com/wp-content/uploads/2025/03/avatar-500-compressed-144x144.jpg</url>
	<title>计划与总结 &#8211; 李辉 / Grey Li</title>
	<link>https://greyli.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>2025 年总结</title>
		<link>https://greyli.com/2025-summary/</link>
		<comments>https://greyli.com/2025-summary/#comments</comments>
		<pubDate>Wed, 04 Mar 2026 14:54:54 +0000</pubDate>
		<dc:creator><![CDATA[李辉]]></dc:creator>
				<category><![CDATA[计划与总结]]></category>
		<category><![CDATA[2025]]></category>
		<category><![CDATA[年总结]]></category>

		<guid isPermaLink="false">https://greyli.com/?p=5877</guid>
		<description><![CDATA[我还能做些什么？终于写完书的那段时间，在下班回家的路上，我经常想到这个问题。用这少得可怜的时间和精力，我还能做 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>我还能做些什么？终于写完书的那段时间，在下班回家的路上，我经常想到这个问题。用这少得可怜的时间和精力，我还能做些什么？冷风吹着沸腾了一天的脑袋，双脚麻木地踩着脚踏，我想不清楚。</p>
<p>我渐渐明白这几年为什么那么疲惫，一方面这是跳入了以工作为中心的现代生活结构所带来的必然结果，另一方面是因为我还想要同时保有我自己的理想世界，所以我要在工作的同时兼顾开源项目、社区建设、阅读写作、学习音乐和语言……但是我显然没有那么多时间和精力，所以总是感觉疲惫。</p>
<p>新书出版以后，我觉得不能再这样下去，所以在「我该做些什么」这个方向上做了很多思考和调整。今年可以算是「改变之年」。</p>
<h2>放弃</h2>
<p>今年放弃了一些东西。我开始更多地问自己：你真的想做这件事情吗？</p>
<ul>
<li>退出了 PyCon China 组委会，不再参与 PyCon China 大会筹备。在退出之前，从零创建并维护至今的官方 Twitter 账号 <a href="https://x.com/PyConChina">@PyConChina</a> 达成了 1000 关注，算是我的最后一个里程碑。</li>
<li>退出了 Pallets 团队，不再参与 Flask 维护，同时也不再参与其他扩展的维护。更多的精力可以放在 APIFlask 上，今年也发布了 APIFlask 3.0 版本。新书《<a href="https://helloflask.com/book/4/">Flask 从入门到进阶</a>》算是我在 Flask 这个领域探索的收尾。</li>
<li>减少微信在生活里的比重。解散了 HelloFlask 微信群，同时也退出了很多群。删除了一些微信好友，大多是过往的同学。我们已经变成全然陌生的人，不想维系刻舟求剑的感情。</li>
<li>减少网络社交。清空了 Twitter 关注，把想关注的人放到了 List。Twitter 的设计变得糟糕，社交氛围也很奇怪，不想参与其中。也不再频繁关注朋友圈，只在用的时候看看。我的朋友，虽然没有给你点赞，但是我依然爱你 :P</li>
<li>最近还在考虑取消第三本书的合同，不知道要不要赔违约金……</li>
</ul>
<p>关闭这些通道以后，感觉轻松多了。有一阵子每天只是上班，下班了就玩游戏，然后早早睡觉。原来现代人只有遵从这种「正确」的生活方式才能维持身心健康。但是我不会放弃自己的志业，只是现在还没有做好准备对工作说不。</p>
<h2>重来</h2>
<p>今年还做了一些推倒重来，或者说不愿意放弃的事情：</p>
<ul>
<li>年初第一次申请美签被拒。一千块申请费用打水漂的同时你还完全不知道为什么被拒，但是我并没有放弃，又重新跑到北京第二次申请才终于拿到签证。</li>
<li>九月第一次体验打官司。在经历了上诉、开庭和调解阶段后，却因为忘记补交诉讼程序调整产生的诉费而被自动撤诉。于是又重新开始第二次立案，目前还没有立案成功。</li>
<li>圣诞节和瑶在香港玩的时候弄丢了 Switch，同时丢掉的还有一些卡带以及所有的游戏存档和照片。回来后重新买了 Switch2 和丢失的卡带。重新通关了马里奥惊奇，这段时间在从头开始玩塞尔达王国之泪和 P5R。王国之泪第二次玩反而探索了很多之前没有发现的地方。</li>
<li>重新调整了代码厨房的发展方向。<span data-pm-slice="1 1 [&quot;list&quot;,{&quot;type&quot;:&quot;ul&quot;,&quot;style&quot;:&quot;&quot;,&quot;class&quot;:&quot;list-paddingleft-1&quot;,&quot;start&quot;:null},&quot;listitem&quot;,{&quot;style&quot;:&quot;&quot;},&quot;para&quot;,{&quot;tagName&quot;:&quot;section&quot;,&quot;attributes&quot;:{},&quot;namespaceURI&quot;:&quot;http://www.w3.org/1999/xhtml&quot;}]">本来的长期方向是</span>让代码厨房剥离我，成为一个独立的品牌，做大做强。但是慢慢发现，我才是那个最愿意投入心力去建设的人。我一旦忙于工作和其他事情，那么代码厨房就接近停滞，所以不如回到起点吧。本来很多人就是被我吸引过来，那就让代码厨房回到我的身边好了。现在我把代码厨房当作是我自己创建和维护的小社区。</li>
</ul>
<p>太执着（有时也许是偏执）并不总是好事，你会感觉很累，好事多磨定律并不总是有效，而有些事情就是很难被正确地解决。新的一年还是要多多练习放弃，也练习拒绝，练习做一个「坏人」，多考虑自己的身心健康。</p>
<h2>探索</h2>
<p data-pm-slice="2 2 []">虽然不多， 但今年也有一些新的探索。主要是这三部分：</p>
<h3>工作</h3>
<p>年初体验了第一次升职（Senior -&gt; Principal）。但在这一年里最大的成就并不是在程序员角色的本职工作上，反而是在演艺事业上——年底做了部门年会的导演。花了整整一个月时间，策划和设计了一出舞台剧。和四十几个同事一起，以时空之旅作为主题，用穿越到过去的几个关键故事作为结构，呈现了这个部门过去十年的历程。舞台剧在公司附近的一个剧场上演，我在下面看着表演，听着大家的笑声和欢呼声，很有成就感也很幸福。这让我想起大学时的<a href="https://greyli.com/one-of-the-best-slide-ive-done-so-far/">那次课堂展示</a>。</p>
<p>在策划的过程中发挥了各种创意，比如让老板穿上机长的衣服，发布一台时空引擎——实际上是一个加了发光灯牌的空气净化器：</p>
<p><a href="https://greyli.com/wp-content/uploads/2026/03/boss.jpg"><img class="aligncenter size-large wp-image-5884" src="https://greyli.com/wp-content/uploads/2026/03/boss-1024x682.jpg" alt="" width="625" height="416" srcset="https://greyli.com/wp-content/uploads/2026/03/boss-1024x682.jpg 1024w, https://greyli.com/wp-content/uploads/2026/03/boss-150x100.jpg 150w, https://greyli.com/wp-content/uploads/2026/03/boss-300x200.jpg 300w, https://greyli.com/wp-content/uploads/2026/03/boss-624x416.jpg 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></p>
<p>让同事穿上美人鱼的服装，演绎金斧子和银斧子的桥段：</p>
<p><a href="https://greyli.com/wp-content/uploads/2026/03/mermaid.jpg"><img class="aligncenter size-large wp-image-5885" src="https://greyli.com/wp-content/uploads/2026/03/mermaid-1024x682.jpg" alt="" width="625" height="416" srcset="https://greyli.com/wp-content/uploads/2026/03/mermaid-1024x682.jpg 1024w, https://greyli.com/wp-content/uploads/2026/03/mermaid-150x100.jpg 150w, https://greyli.com/wp-content/uploads/2026/03/mermaid-300x200.jpg 300w, https://greyli.com/wp-content/uploads/2026/03/mermaid-624x416.jpg 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></p>
<p>把剧场设定为一个时光机，给每个人分发机票作为时空旅行的入场券。机票上有每个人的名字和<span data-pm-slice="1 1 [&quot;para&quot;,{&quot;tagName&quot;:&quot;p&quot;,&quot;attributes&quot;:{},&quot;namespaceURI&quot;:&quot;http://www.w3.org/1999/xhtml&quot;}]">“航空里程”（加入公司的时长）</span>：</p>
<p><a href="https://greyli.com/wp-content/uploads/2026/03/ticket.jpg"><img class="aligncenter size-large wp-image-5887" src="https://greyli.com/wp-content/uploads/2026/03/ticket-1024x768.jpg" alt="" width="625" height="469" srcset="https://greyli.com/wp-content/uploads/2026/03/ticket-1024x768.jpg 1024w, https://greyli.com/wp-content/uploads/2026/03/ticket-150x113.jpg 150w, https://greyli.com/wp-content/uploads/2026/03/ticket-300x225.jpg 300w, https://greyli.com/wp-content/uploads/2026/03/ticket-624x468.jpg 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></p>
<p>设计了各种宣传海报（借用了许立志《搬运工》里的一句诗，虽然语境的转换有些讽刺）。最近还做了 DVD，用来送给所有人作为纪念：</p>
<p><a href="https://greyli.com/wp-content/uploads/2026/03/dvd.jpg"><img class="aligncenter size-large wp-image-5890" src="https://greyli.com/wp-content/uploads/2026/03/dvd-1024x768.jpg" alt="" width="625" height="469" srcset="https://greyli.com/wp-content/uploads/2026/03/dvd-1024x768.jpg 1024w, https://greyli.com/wp-content/uploads/2026/03/dvd-150x113.jpg 150w, https://greyli.com/wp-content/uploads/2026/03/dvd-300x225.jpg 300w, https://greyli.com/wp-content/uploads/2026/03/dvd-624x468.jpg 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></p>
<h3>代码厨房社区</h3>
<p><span data-pm-slice="1 1 [&quot;para&quot;,{&quot;tagName&quot;:&quot;p&quot;,&quot;attributes&quot;:{},&quot;namespaceURI&quot;:&quot;http://www.w3.org/1999/xhtml&quot;}]">在代码厨房社区的建设上，</span>下半年继续在 PyCon China 2025 办了线下<a href="https://codekitchen.community/t/topic/1465">代码厨房开源松</a>（第七次开源松）。同时策划了两个很受欢迎的社区活动，分别是「<a href="https://codekitchen.community/t/topic/1435">2025 开发者精神状态调查</a>」和「<a href="https://codekitchen.community/t/topic/1444">流浪记事本计划</a>」活动。前者是一个现场用圆形贴纸投票的实时问卷调查，后者是一个活动当天在整个会场随机传递的留言记事本。</p>
<p><a href="https://greyli.com/wp-content/uploads/2026/03/codekitchen-pycon2025.jpeg"><img class="aligncenter size-large wp-image-5891" src="https://greyli.com/wp-content/uploads/2026/03/codekitchen-pycon2025-1024x683.jpeg" alt="" width="625" height="417" srcset="https://greyli.com/wp-content/uploads/2026/03/codekitchen-pycon2025-1024x683.jpeg 1024w, https://greyli.com/wp-content/uploads/2026/03/codekitchen-pycon2025-150x100.jpeg 150w, https://greyli.com/wp-content/uploads/2026/03/codekitchen-pycon2025-300x200.jpeg 300w, https://greyli.com/wp-content/uploads/2026/03/codekitchen-pycon2025-624x416.jpeg 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></p>
<h3>写作</h3>
<p>年底发布了拖延五年的新书《<a href="https://greyli.com/new-flask-book/">Flask 从入门到进阶</a>》，并且拿到了 Armin Ronacher（Flask 作者）的推荐语：</p>
<p><a href="https://greyli.com/wp-content/uploads/2026/03/book.jpg"><img class="aligncenter  wp-image-5892" src="https://greyli.com/wp-content/uploads/2026/03/book-768x1024.jpg" alt="" width="453" height="604" srcset="https://greyli.com/wp-content/uploads/2026/03/book-768x1024.jpg 768w, https://greyli.com/wp-content/uploads/2026/03/book-113x150.jpg 113w, https://greyli.com/wp-content/uploads/2026/03/book-225x300.jpg 225w, https://greyli.com/wp-content/uploads/2026/03/book-624x832.jpg 624w" sizes="(max-width: 453px) 100vw, 453px" /></a></p>
<p>另外三月还第一次去了美国。用微软提供的赞助在西雅图玩了一周，参加了微软 MVP 峰会，也体验了很多新鲜事物。详见这篇<a class="post-5634" href="https://greyli.com/seattle-and-microsoft-trip/" rel="bookmark">西雅图和微软 MVP 峰会游记</a>。</p>
<h2>明年做些什么？</h2>
<p>2026 年没有新的年度目标，因为去年的还没有完成……这次只有两个大致的方向：</p>
<p>一个是让身心更健康。在慢性疲劳里挣扎会让人失去对生活的热爱。想要恢复健康，想要掌控自己的身体和思绪。为了这个目标，除了开始运动，我会放弃和调整之前的很多计划。停下不重要的事情，重新对未来进行排序，也继续思考自己到底想做些什么。</p>
<p>另一个是重建生活秩序。我会过更多的离线生活，花更多的时间独处和陪家人。尝试对一切都全身心地沉浸。回到书、音乐和电影里，回到科学、艺术和自然里。交新的朋友，和老朋友见面。勇敢行动，勇敢表达自己。</p>
<p>最后，因为囤积了太多游戏和书，新年设置了两个和消费相关的年度挑战：</p>
<ul>
<li><span class="innerContentContainer">一年不买新游戏挑战</span></li>
<li>一年不买新书挑战</li>
</ul>
<p>防止遇到非常想玩的新游戏和想看的书，同时设置一个豁免规则：<span class="innerContentContainer">通关五个已有的游戏就能买一个新游戏，书也同理。</span></p>
<p><span class="innerContentContainer">希望新的一年可以开心玩游戏和看书。</span></p>
]]></content:encoded>
			<wfw:commentRss>https://greyli.com/2025-summary/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2024 年总结</title>
		<link>https://greyli.com/2024-summary/</link>
		<comments>https://greyli.com/2024-summary/#comments</comments>
		<pubDate>Fri, 21 Mar 2025 14:44:45 +0000</pubDate>
		<dc:creator><![CDATA[李辉]]></dc:creator>
				<category><![CDATA[计划与总结]]></category>
		<category><![CDATA[2023]]></category>
		<category><![CDATA[2024]]></category>
		<category><![CDATA[年总结]]></category>

		<guid isPermaLink="false">https://greyli.com/?p=5532</guid>
		<description><![CDATA[2024 年和 2023 年差不多，可以说是陷入了一种结构性疲惫。上班本身还好，但上班之外的妄想太多，健康状况 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="p3">2024 年和 2023 年差不多，可以说是陷入了一种结构性疲惫。上班本身还好，但上班之外的妄想太多，健康状况又很差，所以总是身心疲惫。2023 年做了什么，回想起来已经一片模糊，以至于年总结都没有写。而这篇 2024 年总结也一直拖到了现在——2025 年已经快过去四分之一。</p>
<h2 class="p4"><b>写作</b></h2>
<p class="p3">过去几年，这本未完成的书是我最大的困扰和焦虑来源。所以今年最大的成果就是完成了<a href="https://helloflask.com/book/4/">《Flask Web 开发实战》第 2 版</a>。算上交稿后的修订（出版社的 AI 审稿程序让我多花了 50 个小时来拯救我的书稿），写这个新版一共用了六百个小时。新版还拿到了 Armin Ronacher（Flask 作者）的推荐语。我在 Flask 领域的探索，这本书算是一个圆满收尾。接下来可以好好休息，然后探索一些新东西了。顺便说一句，因为出版社的组织调整，新书预计要到九月上市，这次&lt;del&gt;应该&lt;/del&gt;不会再跳票了。</p>
<p><a href="https://greyli.com/wp-content/uploads/2025/03/book2.jpg"><img class="aligncenter size-large wp-image-5577" src="https://greyli.com/wp-content/uploads/2025/03/book2-1024x551.jpg" alt="" width="625" height="336" srcset="https://greyli.com/wp-content/uploads/2025/03/book2-1024x551.jpg 1024w, https://greyli.com/wp-content/uploads/2025/03/book2-150x81.jpg 150w, https://greyli.com/wp-content/uploads/2025/03/book2-300x161.jpg 300w, https://greyli.com/wp-content/uploads/2025/03/book2-624x336.jpg 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></p>
<h2 class="p4"><b>社区</b></h2>
<p class="p3">起源于我在 2022 年开源年会的代码厨房俱乐部现场招募，2023 年我们六位成员完成了依次取名为四分之一/二/三/四的四次聚会。我在最后一次聚会确立了<a href="https://codekitchen.community/">代码厨房社区</a>的构想——想要创建一个好玩、有用、关注人而不是技术、最小商业浓度的社区。确定了代码厨房社区的主要板块：以社区论坛为基础的 Steak Overcooked 和菜谱，一起做开源项目的「开源松 Song of Open Source」，还有未来可能会举办的「代码厨房年会 CodeKitchenConf」。23 年举办了<a href="https://codekitchen.community/t/topic/1104">第一场开源松</a>，24 年用公司的场地办了<a href="https://codekitchen.community/t/topic/1374">第一场线下开源松</a>，接着年末又和 PyCon China 2024 合作办了一个 <a href="https://codekitchen.community/t/topic/1372">Python 专场开源松</a>。两次线下开源松都由「代码厨房乐队」的演出收尾。在这些活动里见到了很多认识或不认识的朋友，收获了很多快乐。另外年末重回了 PyCon China 组委会，帮忙打了一些零工，主要负责策划开源松会场。</p>
<p><a href="https://greyli.com/wp-content/uploads/2025/03/pycon2024.jpeg"><img class="aligncenter size-large wp-image-5580" src="https://greyli.com/wp-content/uploads/2025/03/pycon2024-1024x768.jpeg" alt="" width="625" height="469" srcset="https://greyli.com/wp-content/uploads/2025/03/pycon2024-1024x768.jpeg 1024w, https://greyli.com/wp-content/uploads/2025/03/pycon2024-150x113.jpeg 150w, https://greyli.com/wp-content/uploads/2025/03/pycon2024-300x225.jpeg 300w, https://greyli.com/wp-content/uploads/2025/03/pycon2024-624x468.jpeg 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></p>
<p class="p3">在公司里也做了一些类似开源社区的探索。比如尝试对公司内的一些项目按照开源项目的标准进行改造；基于 Jenkins 搭建起一整套 Markdown 文档的预览和部署方案，并引导大家把文档放到代码仓库里；独立设计和组织了一场非常好玩的社区市集和两次 Meetup。在社区市集里又嵌套举办了「第一届五角场办公椅滑行比赛」。</p>
<p><a href="https://greyli.com/wp-content/uploads/2025/03/slide-game.jpg"><img class="aligncenter size-large wp-image-5579" src="https://greyli.com/wp-content/uploads/2025/03/slide-game-1024x576.jpg" alt="" width="625" height="352" srcset="https://greyli.com/wp-content/uploads/2025/03/slide-game-1024x576.jpg 1024w, https://greyli.com/wp-content/uploads/2025/03/slide-game-150x84.jpg 150w, https://greyli.com/wp-content/uploads/2025/03/slide-game-300x169.jpg 300w, https://greyli.com/wp-content/uploads/2025/03/slide-game-624x351.jpg 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></p>
<p class="p3">作为一个回顾，年中去 CommunityOverCode 2024 做了一个演讲来分享在公司内外的社区营造实践。上班后精力有限，23 年也只做了一场演讲，是在 PyCon China 2023 分享的《<a href="https://greyli.com/pycon-china-2023-talk/">濒危 Flask 扩展拯救计划</a>》。关于社区建设的探索，晚点再单独整理一篇文章出来。</p>
<p class="p3">在开源项目上没什么大的进展，主要是在维护旧的项目。23 年给 APIFlask 发布了 2.0 版本，希望 25 年可以完成 3.0 版本。</p>
<h2 class="p4"><b>生活</b></h2>
<p class="p3">和 23 年一样，因为大部分时间都比较疲惫，所以身体状态好的某些日子就显得非常美好。记得有几个冬日里的晴天，我在公司坐着，忍不住频频看向窗外的树。被阳光照得发亮的叶子在风中摇曳，水面也在慢慢跳动。心里涌动着幸福的感觉。</p>
<p><a href="https://greyli.com/wp-content/uploads/2025/03/window-tree.jpeg"><img class="aligncenter size-large wp-image-5581" src="https://greyli.com/wp-content/uploads/2025/03/window-tree-1024x768.jpeg" alt="" width="625" height="469" srcset="https://greyli.com/wp-content/uploads/2025/03/window-tree-1024x768.jpeg 1024w, https://greyli.com/wp-content/uploads/2025/03/window-tree-150x113.jpeg 150w, https://greyli.com/wp-content/uploads/2025/03/window-tree-300x225.jpeg 300w, https://greyli.com/wp-content/uploads/2025/03/window-tree-624x468.jpeg 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></p>
<p class="p3">除了日常的疲惫，停不下来、无法放松的脑袋，以及大段的感冒，24 年还是有很多值得记录的事情：</p>
<ul class="ul1">
<li class="li3">搬到了一个更喜欢的地方，在三号线附近。终于逃离了老年人聚居地。</li>
<li class="li3">邀请全家人一起来上海玩了几天。在迪士尼收获了幸福开心的家庭回忆。在快要闭园的最后一个间隙里，我们在人群和星星点点的灯光里奔跑：瑶带着弟弟和爸去坐创极速光轮，我和妈去看小熊维尼童话书。</li>
<li class="li3">学会了游泳。经常在周五和同事提前下班去游泳。对我来说游泳是一种新的自由体验。在深水区看着泳池时感到无比宁静。水池底跳跃的光线，一块块蓝色瓷砖，像是一场流动的梦境。</li>
<li class="li3">和瑶一起去东京看了李志的「三缺一」演出，然后在东京走走停停，转悠了一周。演出唱到《和你在一起》的时候，我偷偷把戒指戴到了她手上。从东京回来我们去领了结婚证，和瑶——我亲爱的高中语文课代表。不知道哪天在街上会不会遇到把我们拉去办公室，说我们以后绝对不可能在一起的历史老师。</li>
</ul>
<p class="p3">其他的快乐回忆大都是音乐、游戏、书和电影带来的。</p>
<p class="p3">除了李志的「三缺一」，印象深刻的演出还有 23 年万青的「梅奔专场」，还记得演出即将开始时场外的雷声滚滚。从旺福那里接收到的快乐能量持续了很久。把豆瓣 FM 红心歌单导出到 Apple Music 之后，很长一段时间都在听这些高中大学时收藏的歌。</p>
<p class="p3">玩了一些游戏的开头，通关了《黑神话·悟空》，其他大部分游戏时间都花在了 CS2 上面。去掉大学时玩 CS:GO 的一百个小时以外，算下来今年玩了三百个小时。然而技术并没什么进步。沉迷于和弟弟或同事一起玩搭档模式然后各种努力尝试用电击枪电人。</p>
<p class="p3">电影看了一些，回想起来像是穿插在日常生活里的黑乎乎的幻梦。读书则是想起来就读，大多数时间只是买。最近看的书里很喜欢《夜晚的潜水艇》。喜欢第一个和最后一个故事的精巧和想象力。喜欢《竹峰寺》里对暮色的描写，还有《李茵的湖》里的八九十年代质地。</p>
<h2 class="p4"><b>工作</b></h2>
<p class="p3">上班第三年。为了让工作没那么无聊，这三年尽了最大可能把自己的兴趣融入进来。除了 Python 方向的探索和前面提到的内部开源社区建设，还在演艺方面做了一些尝试。23 年为了部门年会节目成立了一个临时的「六点五月天」乐队，然后把乐队组建、节目准备和表演过程做成了<a href="https://www.bilibili.com/video/BV1Re411E7uX/">这个《干杯》短片</a>。后面就开始承接各种内部活动的视频拍摄和剪辑工作。</p>
<p class="p3">24 年部门年会又成立了「Grey 和他的朋友们」乐队。这次还做了三个不同版本的年会预告片，悬疑版、搞笑版和飞行版各一个。飞行版里和同事用穿越机拍了从公司对面的楼出发、从露台飞进公司并下楼进到年会会场的镜头（想要实现一镜到底的效果，嘿嘿）。年会开场时放了这个视频，大家坐在会场里看从公司外面离自己越来越近的飞行画面，和 23 年的视频异曲同工。</p>
<p><a href="https://greyli.com/wp-content/uploads/2025/03/dell.jpg"><img class="aligncenter size-large wp-image-5582" src="https://greyli.com/wp-content/uploads/2025/03/dell-1024x554.jpg" alt="" width="625" height="338" srcset="https://greyli.com/wp-content/uploads/2025/03/dell-1024x554.jpg 1024w, https://greyli.com/wp-content/uploads/2025/03/dell-150x81.jpg 150w, https://greyli.com/wp-content/uploads/2025/03/dell-300x162.jpg 300w, https://greyli.com/wp-content/uploads/2025/03/dell-624x338.jpg 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></p>
<p class="p3">工作三年里还有很多有趣的经历和感想，后面放到单独的文章来写。</p>
<h2 class="p4"><b>新年计划</b></h2>
<p class="p3">这两年在写书、工作、开源项目和社区活动的夹缝里喘不过气。2025 年对我来说希望是「舒展」的一年。想要花很多的时间在自己身上，让自己身心更加放松，多关注身体的紧张和疼痛。想要过一些坚实平静的离线生活，减少浪费在网络上的时间。三十岁对我来说可以作为一个中场休息，想想下一个十年做些什么好。</p>
<p class="p3">今年的目标大部分都是让人快乐的目标：</p>
<ul class="ul1">
<li class="li3">恢复健康（正常人 80% 水平）的身体状态</li>
<li class="li3">多用英语（主要是写和说）</li>
<li class="li3">日语入门（记住五十音图）</li>
<li class="li3">学会自由泳（再纠正一下蛙泳姿势）</li>
<li class="li3">学会开车（拿到驾照）</li>
<li class="li3">Flask 入门教程第四版</li>
<li class="li3">APIFlask 3.0 版本</li>
<li class="li3">办至少一次代码厨房线下活动</li>
</ul>
<p class="p3">大概想到这些，考虑到是舒展的一年，能完成三个就可以了 :P（年初把这些计划发到了<a href="https://codekitchen.community/t/topic/1386">代码厨房</a>，也欢迎来分享你的计划）</p>
<p class="p3">除了这篇拖了很久完成、还留着一些线头的年总结，还有很多文章躺在草稿箱里，希望今年能多完成一些。</p>
<p class="p3">最后祝自己和看到这里的你，新年更平静，也更自由。</p>
<hr />
<p class="p3">这篇文章顺便加入了一些 23 年的内容。动笔之前先去翻了 23 年年总结的草稿（还记得那种疲惫缠身的感觉），附在这里留做备份：</p>
<ul class="ul1">
<li class="li3">工作一年后才开始更加怀念那几年的自由时光。早知道工作是这样，我一定不会浪费那些时间，说不定会做出更多有意思的事情。</li>
<li class="li3">今年不知道怎么了，每天都困得要命，尤其是下午和晚上。如果没什么病的话，大概率是因为开始上班导致的。工作消耗了我大部分的精力，让剩下的一切都变得无聊。最近每天晚上就只是在网上看别人打游戏。真希望没有什么开源项目，不再写什么书，不用理会任何提问，然后开始学画画、滑板或是吉他。</li>
<li class="li3">春困，夏困，秋困，冬困。</li>
<li class="li3">休了三天假，本来以为可以在书稿进度上获得进展。结果每天也就写了两小时而已。不工作的话，还有其他事情来占领时间。看电影、看演出、看病。以前对时间斤斤计较，经常嫌女朋友打扰我，现在发现自己一个人呆着也没有变得很自律。</li>
<li class="li3">太多事情想做了，但还是先做这一件吧。一次只做一件事。</li>
<li class="li3">不再接受随机性的影响。不看朋友圈、Twitter 和 Reddit，生活就会平静很多。</li>
<li class="li3">停下手里在看的书和电影。关门写书。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://greyli.com/2024-summary/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>2022 年总结</title>
		<link>https://greyli.com/2022-summary/</link>
		<comments>https://greyli.com/2022-summary/#comments</comments>
		<pubDate>Sat, 11 Feb 2023 10:45:25 +0000</pubDate>
		<dc:creator><![CDATA[李辉]]></dc:creator>
				<category><![CDATA[计划与总结]]></category>
		<category><![CDATA[2022]]></category>
		<category><![CDATA[年总结]]></category>

		<guid isPermaLink="false">https://greyli.com/?p=4987</guid>
		<description><![CDATA[今年地球转得也太快了。听同事说，开始工作以后，地球转速加快是正常现象，结了婚和有孩子后还会有额外加成。考虑到地 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>今年地球转得也太快了。听同事说，开始工作以后，地球转速加快是正常现象，结了婚和有孩子后还会有额外加成。考虑到地球转速问题，我想这份总结不宜再拖下去。</p>
<p>一月开始了第一份工作。找工作时还希望可以去办公室呆一呆，后来就变得越来越懒，一周只去一两天。三月初侥幸离开上海，更是在家呆了半年才回来。工作上倒也得心应手，只是工作之外有太多的事情想做——但没有足够的时间和精力。这渐渐变成我最大的困扰。</p>
<p>我不是精力旺盛的人。无论去不去公司，工作之外挤出的时间常常都是疲惫不堪的浑水。在这少得可怜又困倦的时间里，经常纠结该做些什么。要看这本书吗？还是那个电影？写书？做开源项目？最后多半躺在床上听歌玩手机，至多做些明天的规划。</p>
<p>听到<a href="https://youtu.be/aif2XF2iMSI?t=1729">一首歌</a>唱：</p>
<blockquote>
<p>如果继续这样 / 我还是我吗 / 我还喜欢我吗<br />
或者我应该死去吧 / 总好过变得更差</p>
</blockquote>
<p>又听到<a href="https://www.youtube.com/watch?v=IlkTVMMkCP4">另一首歌</a>唱：</p>
<blockquote>
<p><span class="name" data-wfid="6596fa9c5bc9"><span class="innerContentContainer">I</span></span><span class="name" data-wfid="6596fa9c5bc9"><span class="innerContentContainer"> don&#8217;t want to live like this<br />
</span></span><span class="name" data-wfid="7760e6c0139d"><span class="innerContentContainer">But I don&#8217;t want to die</span></span></p>
</blockquote>
<p>音乐也许是解药（不，<a href="https://greyli.com/be-an-early-bird/">早起</a>才是）。从张玮玮的演出回来后，有了继续学吉他的念头。十年过去了，是时候开始文艺复兴了吧！买来吉他练习一阵后，想起高中随吉他一起卖掉的那本李志野孩子吉他谱。因为李志被封杀，导致那本吉他谱已经买不到。厚着脸皮翻出十年前的豆邮，问买家能不能把那本吉他谱卖回给我。目前还没有收到回信。</p>
<p>去年开始不再完整记录时间花销，但也有 1815 小时，今年只有 512 个小时（6%）。</p>
<p><a href="https://greyli.com/wp-content/uploads/2023/02/timelog-2022.jpeg"><img class="aligncenter wp-image-4998" src="https://greyli.com/wp-content/uploads/2023/02/timelog-2022-234x300.jpeg" alt="" width="389" height="500" srcset="https://greyli.com/wp-content/uploads/2023/02/timelog-2022-234x300.jpeg 234w, https://greyli.com/wp-content/uploads/2023/02/timelog-2022-117x150.jpeg 117w, https://greyli.com/wp-content/uploads/2023/02/timelog-2022-797x1024.jpeg 797w, https://greyli.com/wp-content/uploads/2023/02/timelog-2022-624x802.jpeg 624w, https://greyli.com/wp-content/uploads/2023/02/timelog-2022.jpeg 1170w" sizes="(max-width: 389px) 100vw, 389px" /></a></p>
<p>在开源项目上投入的时间比写书多了一倍。除了发布 <a class="post-4350" href="https://greyli.com/apiflask1/" rel="bookmark">APIFlask</a> 1.0 和 <a href="https://github.com/helloflask/bootstrap-flask">Bootstrap-Flask</a> 2.0，也给 Flask 实现了几个小功能：</p>
<ul>
<li>给 flask run 命令添加 &#8211;debug 选项（<a href="https://github.com/pallets/flask/pull/4779">#4779</a>）</li>
<li>允许视图函数返回列表作为 JSON 响应（<a href="https://github.com/pallets/flask/pull/4672">#4672</a>）</li>
</ul>
<p>虽然书没写完，倒是更新了<a class="post-4416" href="https://greyli.com/flask-tutorial-v3/" rel="bookmark">《Flask 入门教程》第三版</a>。</p>
<p>做了两个演讲，一个是在 COSCon 2022 做的闪电演讲（实际是开源集市的路演，不过摆摊比演讲有意思，还能认识新朋友）；另一个是在 Python Meetup 做的关于 Python 和 OpenAPI 的分享（实际是炒冷饭，不过有额外加料）。没记录时间的还有一个在公司做的关于 Python 编程规范的分享，以此还在年底拿到了「2022 年度新秀奖」。</p>
<p>明年会更少记录时间，比如娱乐活动分类就已经存档——开心很重要，不再追究时间了。</p>
<p>这一年因为开始上班而过得平淡乏味，没有太多东西可以总结。仔细回想也有一些有意思的事情，比如工作上发生的各种事情，比如代码厨房俱乐部。打算在另外的文章来写，这里就不展开了。</p>
<p>今年的疫情对我没有什么大的影响。上海为了科学防疫而封城时我躲在老家，农村因为科学放开而瘟疫蔓延时我躲在上海。唯一的影响只有愤怒。因为各种所谓防疫导致的伤害、不公和死亡，还有各种愚蠢言论而愤怒。当然，最后除了骂傻屄，已经没有什么想说。</p>
<p>明年只设一个目标：</p>
<ul>
<li class="li11"><span class="s6">完成《<a href="https://helloflask.com/book/4/"><span class="s8">Flask Web </span><span class="s7">开发实战</span></a>》第二版</span></li>
</ul>
<p>希望明年可以多过一些离线生活。希望写完书可以好好放松，好好浪费时间。</p>
<p><small>P.S. 本文中的「今年」指 2022 年，「明年」指 2023 年。</small></p>
]]></content:encoded>
			<wfw:commentRss>https://greyli.com/2022-summary/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>待业五年后的找工作经历</title>
		<link>https://greyli.com/job-hunting/</link>
		<comments>https://greyli.com/job-hunting/#comments</comments>
		<pubDate>Sat, 27 Aug 2022 04:59:16 +0000</pubDate>
		<dc:creator><![CDATA[李辉]]></dc:creator>
				<category><![CDATA[计划与总结]]></category>
		<category><![CDATA[计算机与编程]]></category>
		<category><![CDATA[找工作]]></category>
		<category><![CDATA[求职]]></category>
		<category><![CDATA[程序员]]></category>
		<category><![CDATA[算法题]]></category>
		<category><![CDATA[面试]]></category>

		<guid isPermaLink="false">https://greyli.com/?p=4517</guid>
		<description><![CDATA[这篇文章记录了我去年年末找工作的经历。最大的感想是，程序员找工作不一定需要刷题，很多公司是不考算法题的（除非目 [&#8230;]]]></description>
				<content:encoded><![CDATA[
<blockquote>
<p>这篇文章记录了我去年年末找工作的经历。最大的感想是，程序员找工作不一定需要刷题，很多公司是不考算法题的（除非目标就是那些字母组合公司）；其次是要有一些公开作品，比如开源项目，这样可以避免被使用某些单一维度评价；最后是不要提前对职位建立太多期待和想象。</p>
</blockquote>
<p>2017 年我从扬州大学对面的大专毕业，在家待业五年后，终于没有钱再支撑下去。于是去年十一月开始正式找工作，十二月底拿到第一个 offer。今年年初来到上海，开始了第一份全职工作。</p>
<p>我一直把去某个公司上班看作是一个备选项。这几年经常幻想能写出一本畅销书，或是做出某个创业项目，然后就可以<del>发财</del>一直自由下去。但是基于钱出发的事情都不太有趣，基于兴趣出发做的事情又做得太多，所以钱越来越少，关于收入的焦虑感越来越强，最终只好投降。</p>
<h2>个人背景</h2>
<p>对于 IT 相关职位来说，我的优劣势大致如下：</p>
<p>劣势</p>
<ul>
<li>专科学历</li>
<li>土木相关专业</li>
<li>待业五年</li>
<li>零工作经验</li>
<li>技术栈单一（Python/Flask）</li>
</ul>
<p>优势</p>
<ul>
<li>技术栈专一（Python/Flask）</li>
<li>参与<a href="https://github.com/greyli">开源项目</a>的经验（从 2019 年开始做 Flask 的维护者）</li>
<li>一本书（《<a href="https://helloflask.com/book/1/">Flask Web 开发实战</a>》）</li>
<li>一些<a href="https://greyli.com/talks/">技术演讲</a></li>
<li>创建和维护技术社区的经验（<a href="https://helloflask.com/">HelloFlask</a>）</li>
<li>组织技术会议的经验（PyCon China 2019，FlaskCon 2020）</li>
<li>连续三年的微软 MVP 奖项（Python 方向）</li>
</ul>
<p><a href="https://greyli.com/wp-content/uploads/2022/08/blank-resume.jpeg"><img class="aligncenter wp-image-4521 size-medium" src="https://greyli.com/wp-content/uploads/2022/08/blank-resume-300x300.jpeg" alt="" width="300" height="300" srcset="https://greyli.com/wp-content/uploads/2022/08/blank-resume-300x300.jpeg 300w, https://greyli.com/wp-content/uploads/2022/08/blank-resume-150x150.jpeg 150w, https://greyli.com/wp-content/uploads/2022/08/blank-resume-144x144.jpeg 144w, https://greyli.com/wp-content/uploads/2022/08/blank-resume.jpeg 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>从 2016 年实习即回家开始算起的话，我的简历上大概有五年零三个月那么大的空白。不过虽然没工作，这五年也尝试了各种有意思的事情，同时为了获得收入打了一些零工——做了七八个外包项目。</p>
<p>这些外包项目不算优势也不算劣势，但是可以用来填充简历——简历上放了两个开源项目（<a href="https://github.com/pallets/flask/">Flask</a> 和 <a href="https://github.com/apiflask/apiflask">APIFlask</a>）和两个外包项目。而有些劣势也不完全算劣势，比如非科班自学编程，有些 HR/经理会认为不专业，有些则认为这佐证了学习能力和执行力。</p>
<h2>求职方向</h2>
<p>我对目标职位的三个需求是：</p>
<ol>
<li>不加班</li>
<li>面试不考算法题</li>
<li>现场（on-site）工作</li>
</ol>
<p>「不加班」是基本要求，我需要一份正常工时的工作，一来是为身心健康着想，二来是因为我需要有业余时间来写书和做开源项目。</p>
<p>「面试不考算法题」是因为不想浪费时间去刷无聊的算法题。算法题对我来说没有任何乐趣，相比之下，我更喜欢开发 Web 程序和设计 API。</p>
<p>想要一个「现场（on-site）工作」是因为很想去体验办公室生活，顺便体验在不同的城市生活。在家呆了五年后，我也有些厌倦在家工作。太容易过度娱乐和过度工作，模糊生活工作的边界。我想要有一个办公空间来把工作和生活在时间和空间上分隔起来。</p>
<p>国内公司普遍加班，互联网公司普遍考算法题，因此能够满足这三点的只有「非互联网 + 外企」职位。结合我擅长且感兴趣的技术栈（Python Web）和想要去的城市（上海），最终的求职方向是「上海 | 外企 | Python 后端工程师」。</p>
<h2>职位搜寻</h2>
<p>我在下面这两个地方搜集了 14 个和 Python Web（尤其是 Flask）相关且位于上海的外企职位：</p>
<ul>
<li>LinkedIn 搜索关键词「Flask」</li>
<li>一个偶然发现的<a href="https://cn.thakey.com/">职位采集站点</a></li>
</ul>
<p>Python 和 Flask 相关的工作还是挺多的，我只收集了上海 on-site 的外企职位，如果扩大范围还可以找到更多。后来我把一些没有来得及投递或已经收到拒信的 Flask 相关职位放到了 <a href="https://github.com/helloflask/flask-jobs">GitHub</a> 上。</p>
<p>这两个网站的职位都提供公司网站的招聘链接。我倾向于在公司网站投递简历。虽然没有证据，但我认为这会比在招聘网站上投递更容易被看到。如果招聘网站上直接展示你的资料，比如学历和工作经验，这会降低 HR 打开简历的概率。不过招聘网站可以用来参考薪资范围。</p>
<h2>职位投递和面试</h2>
<p>我的职位投递策略是只投递自己想去的职位，按照优先级投递，能够拿到一个 offer 就可以。为了把最多的时间投入在优先级更高的职位，我按照意向程度和技术栈匹配程度把这 14 个职位分成了三批。</p>
<p>第一批两个职位在 11 月 20 号左右投递：</p>
<ul>
<li>育碧：二面挂</li>
<li>博世：口头 offer</li>
</ul>
<p>第二批四个职位在 12 月 7 号投递：</p>
<ul>
<li>戴尔 EMC：offer</li>
<li>Autodesk：二面挂</li>
<li>万事达：电面通过，后续没有继续面</li>
<li>特斯拉：简历无回复</li>
</ul>
<p>我统计了每一个职位的时间花销，包括准备面试和面试本身花费的时间。因为不用花时间刷算法题，所以这里的准备主要是：</p>
<ul>
<li>看出现在职位描述上或是简历技能列表里的相关技术知识，也就是俗称的八股文</li>
<li>练习英语口语，主要是在口语网站上和一些外国人模拟面试对话</li>
<li>了解对应职位和公司，收集相关面经</li>
<li>准备常见非技术问题的回答</li>
<li>准备项目经历介绍</li>
<li>针对每个职位更新简历</li>
</ul>
<h3>育碧</h3>
<p>时间花销：22h 21m</p>
<ul>
<li>11/19 上午官网投递简历</li>
<li>11/19 下午收到约电面时间的邮件</li>
<li>11/25 电面二十分钟，主要聊经历、技术栈和面试安排</li>
<li>11/25 下午收到跳过笔试的邮件</li>
<li>11/26 收到技术面安排邮件</li>
<li>11/30 技术面，一个半小时</li>
<li>12/6 拒信</li>
</ul>
<p>育碧是一家游戏公司，这可能不应该作为申请职位的主要考量因素，但这的确是最吸引我的一点。哪个喜欢玩游戏的程序员不想去一个游戏公司上班呢？而且入职后还可以免费玩所有的育碧游戏。我把它放到了职位申请列表的最上面。</p>
<p>电面时 HR 告诉我职位对应团队的同事看了我的 GitHub 资料，觉得很惊艳。后续还帮我跳过了笔试环节。不过技术面发挥得一般，有一些算法和 Python 元编程相关的问题没有回答上来。两位面试官在会议室里，声音不是很清晰。</p>
<p>这是我自大学毕业以来的第一次技术面试。在之前的几年里，我有过五六次找工作的经历，大多是朋友推荐，最后因为各种原因不了了之。唯一进入面试的是一个德国的远程工作，因为我的英语水平一般，加上对方有一些口音，所以还没来得及探讨技术话题就匆匆结束了。</p>
<h3>博世</h3>
<p>时间花销：24h 13m</p>
<ul>
<li>11/22 中午官网投递简历</li>
<li>11/22 下午接到经理电话，算是电面，聊了经历、技术栈、目标职位的职责，最后约了技术面时间</li>
<li>11/24 技术面</li>
<li>11/25 技术面反馈，布置小作业</li>
<li>12/1 基于小作业的跟进面试</li>
<li>12/2 谈薪资</li>
<li>12/3 口头 offer，协商薪资</li>
<li>中间来回几轮薪资谈判</li>
<li>12/25 HR 回复职位因为疫情推迟招聘到明年二月</li>
</ul>
<p>博世的职位描述和我的技术栈非常匹配，而且要求看起来很简单。简历处理效率很高，上午投递申请，下午就接到电话。</p>
<p>整个面试过程很顺利。技术面和育碧类似，主要是问 Python/数据库/HTTP/Linux 相关的一些东西。技术面后布置了一个小作业，是实现一个包含特定功能的 Teams bot，给了一周时间。提交作业后的第二天 HR 来谈薪资，再隔一天给了口头 offer。不过 offer 薪资和意向差得很远，我就请 HR 再帮忙协商协商，后来 HR 不知道为什么理解成我拒了 offer。经过几次艰难的谈判后我开始妥协，然而一个月后 HR 回复因为疫情暂停招聘了……</p>
<h3>Autodesk</h3>
<p>时间花销：13h 25m</p>
<ul>
<li>12/7 官网投递简历</li>
<li>12/9 下午接到 HR 电话，聊了经历、期望薪资、简单英语对话考察，电话刚挂没多久就收到拒信</li>
<li>12/10 接到另一位 HR 电话，直接约了一面时间</li>
<li>12/13 一面</li>
<li>12/14 HR 约二面</li>
<li>12/15 二面</li>
<li>12/23 拒信</li>
</ul>
<p>这个职位一开始发生了一些乌龙，后来才明白是因为简历被投递的部门拒了，然后又被另一个部门的经理打捞回来。一面就是经理面，主要聊了我的经历、公司业务和技术栈等等。这位经理很赏识我，整场面试一半时间都在挥动橄榄枝，这给我屡屡失败的面试重新建立了很大的信心。</p>
<p>可惜最终止步于二面，因为有一位面试官对我的稳定性表示担心。二面是技术面，除了一个关于排序算法的问题卡顿了好久才勉强回答，大体表现还不错。</p>
<h3>戴尔 EMC</h3>
<p>时间花销：10h 2m</p>
<ul>
<li>12/7 官网投递简历</li>
<li>12/16 接到 HR 电话，介绍面试安排</li>
<li>12/17 连续两场技术面，各一小时</li>
<li>12/22 早上 HR 电话安排终面</li>
<li>12/22 中午终面</li>
<li>12/22 下午 HR 电话谈薪资</li>
<li>12/29 确认薪资和 offer</li>
</ul>
<p>接到 HR 电话就直接介绍了面试安排，没有聊其他东西。技术面第一场问了很多涉及各个方面的技术问题，还有一段英文对话考察；第二场出了一道简单的算法题，二分查找，不过基于矩阵的变式没做出来。职位描述里除了 Python 和 Flask 还列出了很多我不太熟悉的东西，后来发现这些都没有问。终面是经理面，主要聊一些技术方向、职业规划之类的话题。终面结束后下午就接到 HR 电话谈薪资，29 号确认了 offer。</p>
<p>收到 offer 后非常开心，毕竟是人生第一个 offer，第一时间就开了薯片庆祝：</p>
<p><a href="https://greyli.com/wp-content/uploads/2022/08/first-offer.png"><img class="aligncenter wp-image-4522" src="https://greyli.com/wp-content/uploads/2022/08/first-offer-300x251.png" alt="" width="500" height="419" srcset="https://greyli.com/wp-content/uploads/2022/08/first-offer-300x251.png 300w, https://greyli.com/wp-content/uploads/2022/08/first-offer-150x126.png 150w, https://greyli.com/wp-content/uploads/2022/08/first-offer-624x523.png 624w, https://greyli.com/wp-content/uploads/2022/08/first-offer.png 738w" sizes="(max-width: 500px) 100vw, 500px" /></a>最终拿到 offer 的职位反而是这几个面试里花费时间最少的一个（大部分技术问题相关的准备都已经在前面的面试做得差不多了），也是唯一考了算法题的一个。</p>
<h3>万事达</h3>
<ul>
<li>12/7 官网投递简历</li>
<li>12/28 HR 电面，聊经历、期望薪资、简单英语对话考察</li>
<li>1/4 因为已经确认了戴尔 offer，所以取消了后续面试</li>
</ul>
<p>因为安排太晚，所以没有继续面。后续 HR 说经理对我的简历很感兴趣，问我要不要再聊聊，但我实在不想再折腾面试了。</p>
<p>除了上面这六个主动申请的职位，这段时间还有三个被推荐和邀请的职位，完整参与面试的是下面两个。</p>
<h3>Dropbase</h3>
<p>时间花销：6h 6m</p>
<ul>
<li>11/20 收到面试邀请邮件</li>
<li>11/27 一面</li>
<li>12/1 拒信</li>
</ul>
<p>一个湾区创业公司，技术栈主要是 Python 和 Flask，远程工作。通过 APIFlask 项目找到我。这个职位看起来很不错，不过我当时更偏向找一个 on-site 工作，所以没有花太多时间准备。面试是和两个公司创始人聊天，没有考算法题，一周后收到了拒信。<a href="https://www.dropbase.io/careers">这个职位</a>现在仍在开放，感兴趣的朋友可以试试看。</p>
<h3>AWS</h3>
<p>时间花销：29h 40m</p>
<ul>
<li>11/16 内推提交简历</li>
<li>11/17 HR 电面，聊经历、期望薪资</li>
<li>11/23 一面</li>
<li>11/25 拒信</li>
</ul>
<p>在 AWS 工作的朋友推荐，职位是解决方案架构师，这是我第一次了解到这个职位。30 个小时时间花销大部分是用来准备 Amazon Leadership 和 BQ 问题。一面挂，38 分钟。</p>
<h2>备选职位方向：开发者布道师</h2>
<p>在十一月底搜集和投递 Python 后端方向的职位之前，我先在开发者布道师（Developer Advocate）方向做了一些零星尝试。这个方向可以申请的职位并不多，而且大多和 Python 没有关系。最终只面了两个职位，均止步于一面。</p>
<p>这个职位的日常工作基本都是我擅长和喜欢做的事情：写作、演讲、分享、教学。如果目标职位的产品和我的技术背景接近的话，我就可以继续在喜欢的主题（Python）产出内容。</p>
<p>一开始是朋友推荐的职位：</p>
<ul>
<li>Nebula Graph：一面挂</li>
</ul>
<p>面试后我继续申请了几个职位。下面这几个职位除了最后一个都是通过 Google 搜索关键词「Developer Advocate China」找到：</p>
<ul>
<li>TigerGraph：简历无回复</li>
<li>JetBrains：一面挂</li>
<li>AWS：简历无回复</li>
<li>Jina AI：一面后转到后端工程师方向，所以没有继续面</li>
</ul>
<h3>微软</h3>
<p>时间花销：22h 30m</p>
<p>第一次了解到开发者布道师这个职位是在四月份，当时微软第一次在国内招聘开发者布道师，朋友推荐我去试试。</p>
<p>我一开始认为自己是非常合适的人选，后来发现这个职位更希望候选人有 Azure、AI 相关的背景（职位名称是 Cloud Advocate 而不是 Developer Advocate）。折腾了很久，最后并没有拿到面试机会。后来微软有一个面向 GitHub &amp; VS Code &amp; Open Source 的开发者布道师职位，看起来更适合我，不过没有在国内开放。</p>
<p>因为我在<a href="https://pythonhunter.org/">捕蛇者说</a>的<a href="https://greyli.com/freelance-talk/">一期播客</a>聊到了这件事，所以有朋友推荐了 Nebula Graph 的职位。</p>
<h3>Nebula Graph</h3>
<p>时间花销：35h 29m</p>
<ul>
<li>10/12 一面</li>
</ul>
<p>这是一个面向开源数据库项目 Nebula Graph 的「社区布道师」职位，对我来说是完全陌生的领域，所以有很多准备工作可以做。初次接触后我就迅速下单了两本图数据库相关的书（不过一本看了开头，一本还没拆封）。花了一些时间快速熟悉 Nebula Graph，在这个过程里发现了很多网站、文档、项目上的问题，所以就把这些问题整理了下来（见这篇《<a href="https://greyli.com/nebula-bugs/">Nebula 网站和项目捉虫</a>》）。然后陆续给他们的几个项目提交了一些 PR（代码贡献）。</p>
<p>一面后，我继续提交了一些 PR，作为「如果入职的话会帮忙做哪些改进」的提前展示。不过后面就再也没有收到关于下一轮面试的回复。直到一个月后的某天，HR 提起我上个月的 PR，按照社区规则要给我寄纪念品。微信对话的最后，我问 HR 对上个月的面试有没有什么反馈和建议，但是对方似乎没有看到这条消息。为了打捞学习图数据库沉没的成本，之后我继续投递了 TigerGraph 的布道师职位，结果一沉再沉。</p>
<p>不过没关系，我很快发现了更喜欢的开发者布道师职位——PyCharm Developer Advocate。</p>
<h3>JetBrains</h3>
<p>时间花销：23h 49m</p>
<ul>
<li>10/14 官网投递简历</li>
<li>12/3 收到 HR 邮件</li>
<li>12/6 一面</li>
<li>12/22 收到拒信</li>
</ul>
<p>JetBrains 的 PyCharm Developer Advocate 是这一批开发者布道师方向里最喜欢的职位，因为这和我目前擅长的技术领域一致，我可以继续做和 Flask/Python 相关的事情，不用盖新房子。</p>
<p>十月用 Google 搜索到这个职位，顺手就投递了。中间几次找在 JetBrains 工作的朋友打听，但是一直都没消息。十二月初终于收到 HR 的邮件，约了三天后面试。</p>
<p>收到邮件后，我开始幻想入职这份工作要做些什么，兴奋到很晚才睡着。其实早在申请职位的时候我就已经做了一番规划并注册了 <a href="https://hellopycharm.com/">hellopycharm.com</a>。收到回复的第二天，我写了一封表白信放在 hellopycharm.com 上（然后在回复邮件时不经意地提起这个网址）：</p>
<p><a href="https://greyli.com/wp-content/uploads/2022/08/hellopycharm.png"><img class="aligncenter wp-image-4523" src="https://greyli.com/wp-content/uploads/2022/08/hellopycharm.png" alt="" width="500" height="424" srcset="https://greyli.com/wp-content/uploads/2022/08/hellopycharm.png 814w, https://greyli.com/wp-content/uploads/2022/08/hellopycharm-150x127.png 150w, https://greyli.com/wp-content/uploads/2022/08/hellopycharm-300x255.png 300w, https://greyli.com/wp-content/uploads/2022/08/hellopycharm-624x530.png 624w" sizes="(max-width: 500px) 100vw, 500px" /></a></p>
<p>当时 JetBrains 刚刚在上海成立了分公司，取名捷并思，但我更喜欢「喷气脑」这个名字，所以之后还注册了 <a href="https://penqinao.com/">penqinao.com</a>，放了一个 logo 在上面：</p>
<p><a href="https://greyli.com/wp-content/uploads/2022/08/penqinao.png"><img class="aligncenter wp-image-4524 size-large" src="https://greyli.com/wp-content/uploads/2022/08/penqinao-1024x405.png" alt="" width="625" height="247" srcset="https://greyli.com/wp-content/uploads/2022/08/penqinao-1024x405.png 1024w, https://greyli.com/wp-content/uploads/2022/08/penqinao-150x59.png 150w, https://greyli.com/wp-content/uploads/2022/08/penqinao-300x119.png 300w, https://greyli.com/wp-content/uploads/2022/08/penqinao-624x247.png 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></p>
<p>面试的前几天刚结束另一场英语面试，所以语言问题不大。而且我还在某个英语口语网站上找到同样来自捷克的另一位 Monika 来模拟面试（JetBrains 的 HR 也叫 Monika）。</p>
<p>月底收到拒信说她们希望找到一位有数据科学背景的候选人，不过我在面试时就问过这个问题，她们回答说没关系……</p>
<p>不过还是没关系，对我安慰作用最好的一种说法是，开发者布道师的工作对现在的我来说不是最佳选择。</p>
<p>我在过去几年做演讲和写文章都是跟随自己的兴趣和关注点，如果变成为某个公司的产品/项目——尤其是一个新的领域——做大量的输出，一定没法再像之前那样轻松愉快。另一方面，这类职位的公司也许更想找一位有很多年工作经验、技术栈丰富的人，而我正在找第一份工作，我还只会 Python。</p>
<p>PyCharm 这个职位收到拒信后，我就决定放弃这个职位方向。先做一个后端开发职位会是更好的选择，这样我就可以继续按照自己的喜好演讲和写作，没有任何拘束，而且也有时间踏实学东西，多做积累。</p>
<h2>总结</h2>
<p>在网络上经常看到有人每天都刷算法题（LeetCode），在无形中制造了一种不刷题找不到工作的紧张气氛。这次找工作才发现不一定需要刷题。有一些公司是不考算法题的，比如大部分非互联网行业的外企和某些创业公司。还有一个 <a href="https://github.com/poteto/hiring-without-whiteboards">GitHub 仓库</a>记录了所有不需要白板测试（算法题）的公司名单，<a href="https://www.nowhiteboard.org">对应的网站</a>可以用来检索所有不考算法题的开放职位。如果实际工作只是 CRUD，那么实现一个小项目，或是抽象一个公司产品的小功能出来远比考算法题有意义得多。</p>
<p>即使不用刷题，找工作也是一件很累的事情。要承受别人的否定，会认识到自己的局限和不足，然后还有无穷无尽的等待，等待充满随机性的结果。</p>
<p>更糟糕的是，我对每一个投递了申请的公司和职位都建立了太多的期待。除了面经，我还会收集每一个公司的各种信息：公司位置、公司评价、工作环境、周边环境，甚至附近有哪些合适的房子可以租。对于拿到面试机会的两个布道师职位，我都规划了入职后会做什么，具体到可以做的演讲主题、示例程序和教程，并且还提前注册了一些域名。当这些职位收到拒信后，这些期待和规划就全部落空。</p>
<p>经常会觉得自己是某个职位的最佳人选，然后就煞有其事地在晚饭时告诉家人接下来我即将会去哪个城市哪个公司上班……</p>
<p>12 月 22 号到 12 月 28 号是最黑暗的一周。22 号收到 JetBrains 拒信——最喜欢的布道师职位；23 号收到 Autodesk 拒信——最受赏识的职位；25 号博世回复暂停招聘——离 offer 最近的职位。如果没有拿到戴尔的 offer，那就要继续投递第三批职位，经历更多的面试和拒信，想想就后怕。</p>
<p>最后要感谢很多在这段时间提供帮助的朋友们。感谢辛庆老师、思为、清蒸、Aleck、伊洪、Tzu-ping Chung、Joshua Bronson、大妈、琚致远还有其他在 Twitter 和微信上给我推荐工作机会的朋友们；感谢开发者布道师前辈们——Anthony Shaw、思为、朱兴亮和范圣佑提供了很多面试建议；感谢职场前辈张晋涛老师在入职前给我科普了很多职场经验。</p>
<p>同时感谢每一个给我面试机会的 HR 和经理（尤其是戴尔 EMC 的 Fiona 和 Kui），不管我是千里马还是百里马，你们都是我的伯乐。</p>
]]></content:encoded>
			<wfw:commentRss>https://greyli.com/job-hunting/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>2021 年总结</title>
		<link>https://greyli.com/2021-summary/</link>
		<comments>https://greyli.com/2021-summary/#comments</comments>
		<pubDate>Sun, 13 Feb 2022 06:49:59 +0000</pubDate>
		<dc:creator><![CDATA[李辉]]></dc:creator>
				<category><![CDATA[计划与总结]]></category>
		<category><![CDATA[2021]]></category>
		<category><![CDATA[年总结]]></category>

		<guid isPermaLink="false">https://greyli.com/?p=4277</guid>
		<description><![CDATA[今年一整年都呆在家里。书断断续续地写，但一本也没写完。最后两个月，因为钱花光了，终于下定决心开始找工作，最终在 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="p2">今年一整年都呆在家里。书断断续续地写，但一本也没写完。最后两个月，因为钱花光了，终于下定决心<a href="https://greyli.com/job-search/">开始找工作</a>，最终在<span class="s2"> 2021 </span>年最后几天拿到第一份工作的<span class="s2"> offer</span>，结束了近五年的自由职业状态。这个<span class="s2"> offer </span>给这一年画上了一个圆满的句号，我也从此跳进这个圈，开始一种稳定循环的新生活。</p>
<p class="p2">先从好坏两方面总结今年。</p>
<p class="p3">Good<span class="s3">：</span></p>
<ul>
<li class="li4"><span class="s3">开发</span> <a href="https://greyli.com/hello-apiflask/"><span class="s4">APIFlask</span></a><span class="s3">（一个基于</span> Flask <span class="s3">的</span> API <span class="s3">框架）</span></li>
<li class="li5"><span class="s5">GOTC </span><span class="s6">演讲《<a href="https://greyli.com/gotc/"><span class="s7">基于</span><span class="s8"> Python </span><span class="s7">的</span><span class="s8"> OpenAPI </span><span class="s7">实践</span></a>》</span></li>
<li class="li5"><span class="s5">PyCon US 2021 </span><span class="s6">闪电演讲《<a href="https://greyli.com/pycon-2021-apiflask/"><span class="s8">FastAPI Seems Good, so Why Don’t We Build Something Similar For Flask?</span></a>》</span></li>
<li class="li2">在<a href="https://pythonhunter.org/" target="_blank" rel="noopener">捕蛇者说</a>录制了一期播客《<a href="https://greyli.com/flask-talk/"><span class="s4">和李辉聊聊</span><span class="s9"> Flask 2.0</span></a>》</li>
<li class="li2">在捕蛇者说录制了另一期播客《<a href="https://greyli.com/freelance-talk/"><span class="s4">和李辉聊聊自由职业</span></a>》</li>
<li class="li3"><span class="s3">在</span> <a href="https://cn.pycon.org/2021">PyCon China 2021</a> <span class="s3">策划并主持了一个圆桌《<a href="https://greyli.com/pycon-china-2021-young-pythonistas/"><span class="s4">和中学生们聊聊学习和使用</span><span class="s9"> Python </span><span class="s4">的趣事</span></a>》</span></li>
<li class="li2">和一群高中生完成了一场八人足球赛</li>
<li class="li6">找到第一份工作并<a href="https://greyli.com/hello-dell/">顺利入职</a>，搬到上海</li>
</ul>
<p class="p3">Bad<span class="s3">：</span></p>
<ul>
<li class="li7">三个年目标全部落空：两本书都没有写完，<span class="s2">APIFlask </span>也没有发布<span class="s2"> 1.0 </span>版本</li>
<li class="li2"><span class="s2">PyCon US 2021 </span>演讲议题申请没通过（备选的闪电演讲通过了）</li>
<li class="li6">找工作收到拒信若干封</li>
</ul>
<p class="p2">今年尝试了很多新鲜的东西，比如第一次录播客、第一次参加圆桌、第一个英文演讲、第一场足球赛、第一份工作。今年也开始更活跃的使用<span class="s2"> <a href="https://twitter.com/greylihui" target="_blank" rel="noopener"><span class="s4">Twitter</span></a></span>，并且重新捡起来被荒废的<span class="s2"> <a href="https://twitter.com/greylihui/status/1448857291181080577" target="_blank" rel="noopener"><span class="s4">PyCon China</span></a> </span>账号。</p>
<p class="p2">从下半年开始，经常感觉很焦虑。一方面是因为写书进度缓慢，不知不觉一年又已经过半。另一方面是因为收入<span class="s2">——</span>今年拿到的稿费很少，加上不想浪费时间做外包，因此收入锐减。既没有挣到钱，也没有做成事，在这些压力下常常心情也不好，所以自觉失败。</p>
<h2 class="p8">时间记录</h2>
<p class="p2">今年没有再完整的记录时间花销，<a href="https://greyli.com/2020-summary/"><span class="s4">去年一年的实验</span></a>已经让我了解自己的时间花销情况。再继续意义不大，一来记录本身就会浪费很多时间，二来过于追求效率和生产力会让人感到疲惫。因此这一年只记录了一些重要的活动分类。</p>
<p class="p2">总记录时间一共<span class="s2"> 1815 </span>小时（约占全年时间的<span class="s2"> 20%</span>），其中前三项分别是：</p>
<ul>
<li class="li4"><span class="s3">开源项目：</span>535h 50m</li>
<li class="li3"><span class="s3">找工作：</span>204h 37m</li>
<li class="li9"><span class="s3">游戏：</span>200h 55m</li>
</ul>
<p class="p2">完整的数据如下：</p>
<p><a href="https://greyli.com/wp-content/uploads/2022/02/time-log-2021.jpg"><img class="aligncenter wp-image-4279 " src="https://greyli.com/wp-content/uploads/2022/02/time-log-2021-761x1024.jpg" alt="" width="551" height="741" srcset="https://greyli.com/wp-content/uploads/2022/02/time-log-2021-761x1024.jpg 761w, https://greyli.com/wp-content/uploads/2022/02/time-log-2021-111x150.jpg 111w, https://greyli.com/wp-content/uploads/2022/02/time-log-2021-223x300.jpg 223w, https://greyli.com/wp-content/uploads/2022/02/time-log-2021-624x839.jpg 624w, https://greyli.com/wp-content/uploads/2022/02/time-log-2021.jpg 1170w" sizes="(max-width: 551px) 100vw, 551px" /></a></p>
<p class="p3"><span class="s3">开源项目时间基本都集中在年初，当时花了几个月时间开发</span> APIFlask<span class="s3">。年中</span> Flask 2.0 <span class="s3">发布后帮忙修了几个</span> bug<span class="s3">，年底给</span> Bootstrap-Flask <span class="s3">发布了支持</span> Bootstrap 5 <span class="s3">的</span> 2.0 <span class="s3">版本。</span></p>
<p class="p2">找工作集中在最后两个月，不过投入时间最多的几个职位都没有拿到<span class="s2"> offer。</span>晚点会在另外一篇文章详细记录找工作的经历和感想。</p>
<p class="p2">游戏时间大部分花在了最后一个月开始玩的《塞尔达传说：荒野之息》。这个游戏在年初就和<span class="s2"> Switch </span>一起买了，因为怕花掉太多时间一直没有玩。在找工作等待面试答复的漫长煎熬过程中，什么事情都不想做，所以躲到游戏里。</p>
<p class="p2">时间花销排在第六位的写书，本来应该是我的主业。之前完成两本书的阻力很多，比如要解决收入问题，要整理第一版的旧文件排版，还要完善<span class="s2"> APIFlask </span>并发布<span class="s2"> 1.0 </span>版本。而目前来说，完成它们的最大阻力则是时间太少。工作之后，除了周末两天，每天只有下班后六点到十一点这个时间段才能做自己的事情。再去掉吃饭时间以及偶尔的散步、看电影、玩游戏、做开源项目<span class="s2">……</span>不过好在我可以在这个时间段专心做事，没有收入焦虑。</p>
<p class="p2">时间花销排在最后的是阅读。今年又没读什么书，记录在案的阅读时间只有<span class="s2"> 55 </span>分钟<span class="s2">……</span>想想大概是在读《非暴力沟通》，不过读了个开头就用来垫枕头了。枕了那么久，也许会吸收到一点点灵气吧。</p>
<h2 class="p8">新年目标</h2>
<p class="p2">因为<span class="s2"> 2021 </span>年的三个年目标一个也没完成，所以<span class="s2"> 2022 </span>年仍然是这三个：</p>
<ul>
<li class="li11"><span class="s6">完成《<a href="https://helloflask.com/book/4/"><span class="s8">Flask Web </span><span class="s7">开发实战</span></a>》第二版</span></li>
<li class="li5"><span class="s6">完成《<a href="https://helloflask.com/book/2/"><span class="s8">Python Web API </span><span class="s7">设计与开发</span></a>》</span><span class="s5"><span class="Apple-converted-space"> </span></span></li>
<li class="li9"><span class="s3">完成</span> <a href="https://github.com/greyli/apiflask/"><span class="s4">APIFlask</span></a> 1.0 <span class="s3">版本</span></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://greyli.com/2021-summary/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>2021 年 Flask 用户调查报告</title>
		<link>https://greyli.com/flask-report-2021/</link>
		<comments>https://greyli.com/flask-report-2021/#comments</comments>
		<pubDate>Thu, 07 Oct 2021 10:06:23 +0000</pubDate>
		<dc:creator><![CDATA[李辉]]></dc:creator>
				<category><![CDATA[计划与总结]]></category>
		<category><![CDATA[计算机与编程]]></category>
		<category><![CDATA[Flask]]></category>
		<category><![CDATA[调查报告]]></category>

		<guid isPermaLink="false">https://greyli.com/?p=3985</guid>
		<description><![CDATA[七月份创建了一个 Flask 用户调查问卷，到目前为止一共收集到 104 份提交，感谢各位的参与！这篇文章会对 [&#8230;]]]></description>
				<content:encoded><![CDATA[
<p>七月份创建了一个 <a href="https://jinshuju.net/f/UY6Rd8">Flask 用户调查问卷</a>，到目前为止一共收集到 104 份提交，感谢各位的参与！这篇文章会对问卷收集结果做一个总结，作为一份（非官方的）2021 年（104 位中国）Flask 用户调查报告。</p>
<p>如果你想自己看原始数据，下面是剔除了隐私信息的问卷提交数据文件（CSV 格式）：</p>
<p><a href="https://helloflask.com/downloads/flask_report_2021.csv">https://helloflask.com/downloads/flask_report_2021.csv</a></p>
<figure><a href="https://greyli.com/wp-content/uploads/2021/10/result.png"><img class="aligncenter size-large wp-image-3987" src="https://greyli.com/wp-content/uploads/2021/10/result-1024x300.png" alt="" width="625" height="183" srcset="https://greyli.com/wp-content/uploads/2021/10/result-1024x300.png 1024w, https://greyli.com/wp-content/uploads/2021/10/result-150x44.png 150w, https://greyli.com/wp-content/uploads/2021/10/result-300x88.png 300w, https://greyli.com/wp-content/uploads/2021/10/result-624x183.png 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></figure>
<p>如果你现在还想参与的话，完全来得及，下面是问卷的地址：</p>
<p><a href="https://jinshuju.net/f/UY6Rd8">https://jinshuju.net/f/UY6Rd8</a></p>
<h2>你在工作中使用 Flask 吗？</h2>
<p>在提交的 104 份问卷里，接近一半的人在工作中使用 Flask，详情如下：</p>
<figure><a href="https://greyli.com/wp-content/uploads/2021/10/use-flask.png"><img class="aligncenter size-large wp-image-3989" src="https://greyli.com/wp-content/uploads/2021/10/use-flask-1024x375.png" alt="你在工作中使用 Flask 吗？" width="625" height="229" srcset="https://greyli.com/wp-content/uploads/2021/10/use-flask-1024x375.png 1024w, https://greyli.com/wp-content/uploads/2021/10/use-flask-150x55.png 150w, https://greyli.com/wp-content/uploads/2021/10/use-flask-300x110.png 300w, https://greyli.com/wp-content/uploads/2021/10/use-flask-624x229.png 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></figure>
<p>算上我，还没找到工作的人竟然只有 5 个（《震惊！某份民间调查显示 Flask 用户无业率仅有 4.8 %！》:P）。</p>
<h2>Flask 中文文档标语翻译</h2>
<p>前段时间发起了 <a href="https://greyli.com/flask-docs-zh/">Flask 中文文档翻译</a>，目前正在龟速进行中，欢迎英语比较好的同学参与（翻译或审核<a href="https://github.com/flaskcwg/flask-docs-zh/pulls">已经提交的 PR</a>）。<a href="https://flask-zh.readthedocs.io/">文档首页</a>的 logo 图片里有一句标语——「web development, one drop at a time」，我临时翻译为「Web 开发，一次一滴」。在 <a href="https://github.com/flaskcwg/flask-docs-zh/discussions/37">GitHub 仓库的讨论</a>里，大家给出了更多更好的备选项。根据这次问卷投票的结果，「Web 开发，起于点滴」排在第一位（由 HelloFlask QQ 群里一位翻译专业的同学翻译），详情如下：</p>
<figure><a href="https://greyli.com/wp-content/uploads/2021/10/slogan.png"><img class="aligncenter size-large wp-image-3988" src="https://greyli.com/wp-content/uploads/2021/10/slogan-1024x543.png" alt="Flask 标语翻译" width="625" height="331" srcset="https://greyli.com/wp-content/uploads/2021/10/slogan-1024x543.png 1024w, https://greyli.com/wp-content/uploads/2021/10/slogan-150x80.png 150w, https://greyli.com/wp-content/uploads/2021/10/slogan-300x159.png 300w, https://greyli.com/wp-content/uploads/2021/10/slogan-624x331.png 624w" sizes="(max-width: 625px) 100vw, 625px" /></a></figure>
<p>更保险的选择是「不作翻译」，在投票中排在第二位，最终我会考虑从这两者之间选择。另外，如果翻译的话，如果翻译的话，「Web」会考虑按照英文近年的惯用趋势而使用全小写（你觉得呢？​）。</p>
<p>P.S. 在 GitHub 上的投票结果里，<a href="https://github.com/abersheeran">@abersheeran</a> 翻译的「Web 开发，起自微毫」和「任取随用的 Web 框架」<a href="https://github.com/flaskcwg/flask-docs-zh/discussions/37#discussioncomment-795727">票数最高</a>。</p>
<h2>对 Flask 的新功能请求 &amp; 改进建议</h2>
<p>剩下几个问题不方便详细统计和展示，我粗略看了一遍，整理出了关注度最高的几件事。我一一在下面评注了我的想法以及相应的动态。</p>
<h3>添加更多 Web API 开发支持</h3>
<blockquote>
<p>开发接口时自动生成swagger</p>
<p>对 Web API 很友好的支持</p>
<p>加入pydantic用于类型检查</p>
</blockquote>
<p>Flask 作为一个通用型框架，不会添加太多关于 Web API 这种细分方向的支持。除了手动集成这些功能/工具，你可以考虑选择基于 Flask 而且集成了这些功能的二次框架，比如 <a href="https://apiflask.com/">APIFlask</a>、<a href="https://flask-smorest.readthedocs.io/en/latest/">flask-smorest</a>、<a href="https://0b01001001.github.io/spectree/">Spectree</a> 等。</p>
<h3>添加基于 ASGI 的异步实现</h3>
<blockquote>
<p>加强对异步的支持</p>
<p>异步支持的不是很成熟</p>
<p>可能是速度吧，据说现在很多新框架都比Flask快，要淘汰Flask云云</p>
</blockquote>
<p>Flask 目前的<a href="https://flask.palletsprojects.com/en/2.0.x/async-await/">异步支持</a>已经能够满足大部分使用场景。据我所知，基于 ASGI 的异步支持短期内不会实现。</p>
<p>而对于鼓吹性能的文章可以不用太在意：异步和高性能不直接划等号。技术选型不会只考量性能。benchmark 未必客观和能够反映真实情况。如果对异步有强需求，可以考虑用和 Flask 相同 API 的 <a href="https://pgjones.gitlab.io/quart/">Quart</a>（一个 Flask 的 ASGI 异步实现），或是换用其他异步框架。</p>
<h3>官方维护的扩展列表</h3>
<blockquote>
<p>一个针对新手的 flask extension 的指南</p>
<p>由Pallets Projects开发团队的成员或者flask官方统一所有第三方插件的开发与发布，目前太乱了，有些都快停更十年了，还占用名字。</p>
<p>各种插件扩展选择太多，但是又质量层次不齐，此外很多个人维护的扩展可能由于开发者精力有限在后期会出现项目生命周期的问题，如：flask_restful，需要官方对常用扩展维护一套比较简洁的扩展。当然这样的话可能又走上了Django的老路，可能作者正在计划的“Flask扩展收容计划”是一个不错的选择，起码可以管理起来。但是脱离原作者维护的项目后期发展如何又成为另一个话题。比如需要对插件进行遴选，另外需要对该计划由官方进行宣传等</p>
</blockquote>
<p>这件事我之前有计划在做，前段时间注册了 flaskextensions.org，想用来做一个这样的扩展推荐列表。在 Pallets 会议上沟通之后，决定交给 Pallets 官方来做，所以把域名转给了 Pallets 团队，后续会做一个这样的列表出来：列出来推荐的 Flask 扩展，并给出失去维护扩展的替代品。</p>
<p>另外 Pallets 在 GitHub 创建了一个 <a href="https://github.com/pallets-eco">pallets-eco 组织</a>，用来收纳失去维护（维护者不想再继续维护）的流行 Flask 扩展，让它们保持健康的维护状态（由社区维护）。目前有两个扩展进入这个组织，分别是 <a href="https://github.com/pallets-eco/flask-caching">Flask-Caching</a> 和 <a href="https://github.com/pallets-eco/flask-openid">Flask-OpenID</a>。</p>
<h3>脚手架工具和大型项目组织</h3>
<blockquote>
<p>统一并明确开发的工程化流程，包括项目应该新建那些文件夹等。</p>
<p>缺少小白懒人快速一键生成集成框架（webadmin, mysql）</p>
<p>引入蓝图想搞玩大型项目，可大型项目又需要自己组织好项目结构，需要一个对flask很熟悉的人做这事 还不如用django。官方推一个脚手架生成项目模板吧像vue-cli一样 包括是否使用orm等插件，不然还不如django搭建起来快。。</p>
</blockquote>
<p>作为一个微框架，Flask 的初衷是不限定项目文件组织形式，所以官方不太可能会出一个脚手架工具或是项目组织指南。在工厂函数和蓝本这两个概念的基础上，你可以自由组织你的项目。另一方面，市面上已经有很多项目模板或是脚手架工具（比如 <a href="https://github.com/cookiecutter-flask/cookiecutter-flask">cookiecutter-flask</a>），也有很多介绍 Flask 项目组织的文章，你可以根据这些工具和文章制定自己的规则，然后为你的组织或团队确定一个项目组织规范或是写一个脚手架工具，或许这才是 Flask 的「正确食用方式」。如果你更需要一个固定的项目组织模式，那么 Django 或许是更好的选择。</p>
<p>我也有计划写一个更简单的脚手架工具（对我来说市面上那些都太复杂，引入了太多扩展和工具），同时给出一份 Flask 项目组织建议，这件事也许会在写《<a href="https://helloflask.com/book/1/">Flask Web 开发实战</a>》第二版的过程里完成。</p>
<h3>Bootstrap-Flask 的 Bootstrap 5 支持</h3>
<blockquote>
<p>Bootstrap-Flask 希望可以早点同步 Bootstrap5 的相关内容。因为Bootswatch的最新版本有我想要使用的组件，但是Bootstrap-Flask只支持到Bootstrap4，所以有些宏无法正常显示，比如render_form等。还有希望Bootstrap-Flask的wiki能够更加的完善和细节，我会持续关注，大佬辛苦</p>
</blockquote>
<p>提交的问卷里有一条说到这件事，此前在 <a href="https://twitter.com/jugmac00/status/1415369405249335303">Twitter</a> 和 <a href="https://github.com/greyli/bootstrap-flask/issues/120">GitHub</a> 上也有人提到，所以也放到一起说一下。我已经在做这件事了，基本的 Bootstrap 5 支持已在 <a href="https://github.com/greyli/bootstrap-flask/pull/161">#161</a> 完成，完整的实现会在下个月完成（详见 <a href="https://github.com/greyli/bootstrap-flask/issues/162">#162</a>），届时会随 2.0 版本发布。</p>
<p>除了这些，提交的问卷里还有很多其他的建议和问题，我没法一一回应。有时间我会看看问题里提出的问题有哪些我可以试着解决和改善。同时也欢迎你一起尝试解决这些提出的问题，感兴趣的话，去翻翻上面给出的问卷数据吧。</p>
<h2>总结</h2>
<p>总体来看，Flask 社区在朝着好的方向发展，希望明年这里提到的大多数计划都会有着落。一起加油！</p>
<p>P.S. <a href="https://flaskcon.com/">FlaskCon 2021</a> 会在今年 12 月举办，如果你有 Flask 相关的内容想分享，欢迎报名（英文，预录制演讲）。</p>
<hr />
<p>相关链接：</p>
<ul>
<li><a href="https://www.v2ex.com/t/806256">本文在 V2EX 的讨论</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://greyli.com/flask-report-2021/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2020 年总结</title>
		<link>https://greyli.com/2020-summary/</link>
		<comments>https://greyli.com/2020-summary/#comments</comments>
		<pubDate>Mon, 12 Apr 2021 14:27:57 +0000</pubDate>
		<dc:creator><![CDATA[李辉]]></dc:creator>
				<category><![CDATA[计划与总结]]></category>
		<category><![CDATA[2020]]></category>
		<category><![CDATA[年总结]]></category>

		<guid isPermaLink="false">https://greyli.com/?p=3628</guid>
		<description><![CDATA[2021 年已经过去四个月了，每次到某个重要的时间节点都想完成这篇 2020 年总结，结果总是有各种事情挤占时 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>2021 年已经过去四个月了，每次到某个重要的时间节点都想完成这篇 2020 年总结，结果总是有各种事情挤占时间，所以错过了元旦、错过了大年初一、错过了 26 岁生日、错过了植树节和愚人节，最后来到这一天。</p>
<p>照例，先从好坏两方面总结一下。</p>
<p>Good：</p>
<ul>
<li>参与组织 <a spellcheck="false" href="https://flaskcon.com/">FlaskCon</a>，开发<a spellcheck="false" href="https://github.com/FlaskCon/website">会议网站</a></li>
<li>在 <a spellcheck="false" href="https://discuss.helloflask.com/">HelloFlask 论坛</a>回答了若干个问题</li>
<li>在 Pallets Projects 网站上有了<a spellcheck="false" href="https://palletsprojects.com/people/greyli/">个人介绍页面</a></li>
<li>PyCon China 2020 演讲《<a spellcheck="false" href="https://greyli.com/pycon-china-2020-pronounce-python/">Python 技术名词发音指南</a>》</li>
<li>在 <a spellcheck="false" href="https://stackoverflow.com/users/5511849/grey-li">Stack Overflow</a> 上写了 50+ 回答，拿到了 <a spellcheck="false" href="https://greyli.com/awarded-flask-silver-badge/">Flask 银徽章</a></li>
<li>维护和改进 <a spellcheck="false" href="https://github.com/pallets/flask">Flask</a>、<a spellcheck="false" href="https://github.com/greyli/bootstrap-flask">Bootstrap-Flask</a> 等项目，给 <a spellcheck="false" href="https://github.com/lepture/flask-oauthlib">Flask-OAuthlib</a> 发了新版本</li>
</ul>
<p>Bad：</p>
<ul>
<li>尝试翻译一本英文书，但是试译稿没有通过编辑的质量要求</li>
<li>没能按计划完成新书（延期两年了）</li>
<li>组织「编程一小时」活动失败</li>
<li>一次失败的外包合作</li>
<li>玩太多游戏</li>
</ul>
<p>很高兴我的书和项目在这一年帮到了更多的人：</p>
<p><img class="aligncenter size-large wp-image-3662" src="https://greyli.com/wp-content/uploads/2021/04/thanks-1024x547.png" alt="感谢留言" width="625" height="334" srcset="https://greyli.com/wp-content/uploads/2021/04/thanks-1024x547.png 1024w, https://greyli.com/wp-content/uploads/2021/04/thanks-150x80.png 150w, https://greyli.com/wp-content/uploads/2021/04/thanks-300x160.png 300w, https://greyli.com/wp-content/uploads/2021/04/thanks-624x333.png 624w, https://greyli.com/wp-content/uploads/2021/04/thanks.png 1165w" sizes="(max-width: 625px) 100vw, 625px" /></p>
<p>而且我的读者群已经扩展到<a spellcheck="false" href="https://www.zhihu.com/question/444376356/answer/1736664737" target="_blank" rel="noopener">小学五年级</a>了（继上一次某位正在上初中的读者邀请我评审他用 Flask 做的<a spellcheck="false" href="https://github.com/z-t-y/Flog" target="_blank" rel="noopener">博客程序</a>后）。如果还有三年级或是一年级的读者小朋友，记得吱一声 :P</p>
<p>2020 年只写了 23 篇文章，花了比较多时间写的是下面这几篇：</p>
<ul>
<li>05/24 <a spellcheck="false" href="https://greyli.com/pirated-tech-books/">国内技术书盗版现状</a></li>
<li>11/05 <a spellcheck="false" href="https://greyli.com/my-story-with-pyconchina/">我和 PyCon China 的故事</a></li>
<li>12/21 <a spellcheck="false" href="https://greyli.com/hour-of-code-2020/">组织「编程一小时」活动失败记</a></li>
</ul>
<p>相比之下，文章数量要比 2019 年少 40 篇，也许是因为这一年花了更多时间来挣钱（虽然最后没剩下多少）。年初做了一个糟糕的外包项目，烂摊子接手，慢慢明白转手的原因，最后以没有拿到尾款结束。这之后就更谨慎了，半年时间里只做了一个微信小程序的后端 API。</p>
<p>除此之外，第一次通过写文章挣到了钱——给 <a spellcheck="false" href="https://www.twilio.com/blog">Twilio 博客</a>写文章的稿费。<a spellcheck="false" href="https://www.twilio.com/blog/collaborative-whiteboard-python-flask-twilio-sync">第一篇文章</a>是做一个<a href="https://github.com/greyli/twilio-whiteboard">协作白板</a>，因为 SocketIO 有一个类似的示例程序，所以做程序加上写文章只花了 17 小时 34 分钟。但是<a spellcheck="false" href="https://www.twilio.com/blog/online-presentation-python-javascript-twilio-programmable-video">第二篇文章</a>就没那么幸运了，这一篇做一个<a href="https://github.com/greyli/twilio-presentation">演讲程序</a>，因为 Twilio 文档写的不是很详细，所以卡在程序实现上很久，断断续续花了两个月，最终耗时 50 小时 24 分钟，时薪骤降。</p>
<p>今年的收入大部分都用作房租和生活开支了。买了一个很大的显示器（43 寸），不过并没有让写书进度加快……买了 Switch，玩了一段时间《喷射战士 2》（Splatoon 2，拒绝官方译名），偶尔还会换回一代玩，喜欢第一代 Carbon Roller Deco 和 Rainmaker 鱼头的无敌效果。</p>
<p>去年在<a href="https://greyli.com/2019-summary/">年总结</a>里说要重新开始记录时间花销，说到做到，2020 年记录在案的时间一共 8769 小时 48 分钟（99.8% 覆盖率）：</p>
<p><img class="aligncenter wp-image-3690" src="https://greyli.com/wp-content/uploads/2021/04/pie-1-209x300.png" alt="时间花销饼图" width="349" height="500" srcset="https://greyli.com/wp-content/uploads/2021/04/pie-1-209x300.png 209w, https://greyli.com/wp-content/uploads/2021/04/pie-1-105x150.png 105w, https://greyli.com/wp-content/uploads/2021/04/pie-1.png 593w" sizes="(max-width: 349px) 100vw, 349px" /></p>
<p>P.S. 上面的分类是时间大类，其中娱乐包括游戏（491 小时 4 分钟）、电影电视剧（283 小时 39 分钟）和上网（269 小时 22 分钟）；休息时间大多是不同事项之间的切换和走神时间；工作包括外包开发（332 小时 49 分钟）和开源项目（136 小时 47 分钟）；写作包括写书（158 小时 50 分钟）和写文章（129 小时 58 分钟）；​学习包括学编程（101 小时 16 分钟）和学英语（81 小时 52 分钟）。</p>
<p>下面是包含所有时间分类的年度柱状图（紫色系是睡觉和吃饭，黄色系是外包和演讲，绿色系是开源项目和写作，蓝色系是清洁活动，红色系是娱乐）：</p>
<p><img class="aligncenter size-large wp-image-3665" src="https://greyli.com/wp-content/uploads/2021/04/year-1024x219.png" alt="时间花销柱状图" width="625" height="134" srcset="https://greyli.com/wp-content/uploads/2021/04/year-1024x219.png 1024w, https://greyli.com/wp-content/uploads/2021/04/year-150x32.png 150w, https://greyli.com/wp-content/uploads/2021/04/year-300x64.png 300w, https://greyli.com/wp-content/uploads/2021/04/year-624x134.png 624w" sizes="(max-width: 625px) 100vw, 625px" /></p>
<p>这也很好的解释了为什么这一年没有太多成果：玩了太多游戏，在各种网站上转来转去，写书的时间甚至没超过写文章多少。</p>
<p>2021 年开始没有再记录详细的时间开支——完整记录时间太花费精力了。比起每天的详细时间花销数据，我更关心的其实是有没有达到设定的时间目标，所以现在改为只记录两类时间：一类是想要达到的时间目标，比如写作、编程和学习；另一类是需要限制的时间花销，比如娱乐（计划 2021 年娱乐花销控制在 500 小时以内，目前是 123 小时 44 分钟）。</p>
<p>年底和女友一起<a spellcheck="false" href="https://greyli.com/goodbye-nanjing/">离开了南京</a>，接下来整个 2021 年都会呆在家里，目标是完成下面三件事：</p>
<ol>
<li>完成《<a spellcheck="false" href="https://helloflask.com/book/2">Python Web API 设计与开发</a>》</li>
<li>完成《<a spellcheck="false" href="https://helloflask.com/book/1">Flask Web 开发实战</a>》第二版</li>
<li>完成 <a spellcheck="false" href="https://github.com/greyli/apiflask">APIFlask</a> 的 1.0 版本</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>https://greyli.com/2020-summary/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>2020 暑假总结</title>
		<link>https://greyli.com/2020-summer-vacation/</link>
		<comments>https://greyli.com/2020-summer-vacation/#comments</comments>
		<pubDate>Mon, 31 Aug 2020 14:55:37 +0000</pubDate>
		<dc:creator><![CDATA[李辉]]></dc:creator>
				<category><![CDATA[思考与随感]]></category>
		<category><![CDATA[计划与总结]]></category>
		<category><![CDATA[2020]]></category>
		<category><![CDATA[总结]]></category>
		<category><![CDATA[暑假]]></category>

		<guid isPermaLink="false">https://greyli.com/?p=3367</guid>
		<description><![CDATA[最后一次写暑假总结是在 2016 年，之后因为不再上学，也就没有了暑假这个概念。今年夏天回家呆了一个月，算是自 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="md-end-block md-p"><span class="md-plain">最后一次写暑假总结是在 </span><span class="md-meta-i-c md-link"><a spellcheck="false" href="https://greyli.com/summer-2016-summary/"><span class="md-plain">2016 年</span></a></span><span class="md-plain">，之后因为不再上学，也就没有了暑假这个概念。今年夏天回家呆了一个月，算是自己给自己放的暑假。</span></p>
<p class="md-end-block md-p"><span class="md-plain">农村像是冰箱下面的冷藏室，时间在这里不会产生多大作用。也正是这样，你一下子就能看出有哪些新变化。首先是家里的狗生了七只小狗，因为胎盘没及时去掉，死了三只。然后家里的蚂蚁似乎变多了，在院子里扔一小块饼干或西瓜，过一会就会看到密密麻麻的蚂蚁趴在上面（拔菜园里的花生时发现三个蚂蚁窝！）。除此之外，一切几乎都是老样子：狗总是热得吐舌头。西瓜甜不甜要看运气，但价格大都不到城里的一半。附近的工厂有时会在早晨制造噪音，半夜偶尔还会听到邻居用「古法洗衣」时棍子敲打衣服的声音*。</span></p>
<p class="md-end-block md-p"><span class="md-plain">夏天全家人一起吹空调吃西瓜看电视是很幸福的事情，我试图想把我和瑶瑶都很喜欢的《</span><span class="md-meta-i-c md-link"><a spellcheck="false" href="https://movie.douban.com/subject/26302614/"><span class="md-plain">请回答 1988</span></a></span><span class="md-plain">》推荐给大家，但也许是每一集太长，或者是语言和文化差异的缘故，大家并没有表现出很大的兴趣。不过我们还策划了一次去水上乐园的短途旅行，这一次大家都玩得很开心。</span></p>
<p class="md-end-block md-p"><span class="md-plain">暑假像是一年的短暂中断，一个可以喘口气的中场休息。上学的时候暑假让我从无聊痛苦的学校生活里抽离，而现在则可以临时放下各种喜欢和不喜欢的工作。我用这段时间清理掉了上半年积攒下来的一堆便签和纸片，整理了电脑上的各种笔记、杂乱文件和标签页。修正了年目标，因为一年过去大半，所以有些不切实际的目标自然就变得非常明显，现在只好先放弃掉。剩下的几乎就都是娱乐时间了。</span></p>
<p class="md-end-block md-p"><span class="md-plain">《皇室战争》玩到了大师联赛，然后就有点厌倦，估计下半年都不会想再玩（不过无限圣水模式实在太容易沉迷了）。因为想找一个联机游戏和李家玩，又安装回了 Steam，找到大学时买的《兽人必须死 2》。结果他沉迷在 Epic 免费领的 《GTA 5》，我就只好自己玩。接着大学时的进度通了关，然后玩了很久的无尽模式（Endless）。像我这种喜欢整理和规划的人大概都会喜欢这种塔防游戏——可以把所有空间完美的利用好，天花板、墙和地面上每一个防具都摆放的整齐对称。但是无尽模式实在太消耗精力，每一局都会让眼睛和右手累的不行，最后止步于 44 波的最高成绩（放弃的另一个原因是解锁所有武器和技能太耗费时间）。玩的时候有时会想自己面对的敌人不过是每一波都增加了几个数字的难度变量，有一种被代码控制和愚弄的意味……</span></p>
<p class="md-end-block md-p"><span class="md-plain">也不是完全没有成果。花了一些时间来更新 </span><span class="md-meta-i-c md-link"><a spellcheck="false" href="https://github.com/greyli/bootstrap-flask"><span class="md-plain">Bootstrap-Flask</span></a></span><span class="md-plain">，发布了 1.5 版本，接下来一段时间可以把它放一边了。给 </span><span class="md-meta-i-c md-link"><a spellcheck="false" href="http://helloflask.com/book/1/"><span class="md-plain">Flask 书</span></a></span><span class="md-plain">的示例程序 </span><span class="md-meta-i-c md-link"><a spellcheck="false" href="http://sayhello.helloflask.com/"><span class="md-plain">SayHello</span></a></span><span class="md-plain"> 加了一个验证码功能。从去年开始就有人在这里灌垃圾留言，直到现在才下决心清理和阻止（一共删掉了 9083 条）。说是验证码，其实只是加了一个验证输入值是否是「宝塔镇河妖」的文本输入框……不过在垃圾留言程序弄明白规则之前应该都没问题。最后还把大部分 Python 的 Web API 相关工具库的文档都看了一遍。</span></p>
<p class="md-end-block md-p md-focus"><span class="md-plain md-expand">暑假里大部分时间都被随心所欲的花掉了，但我并不把这看作浪费，如果暑假时间也要全用来学习和工作，那生活就太无聊了。这样想的话，在小时候的暑假，写作业是浪费，玩游戏、在门前发呆和出去玩就不是。现在的暑假呢，为别人工作是浪费，做自己喜欢的事情就不是。</span></p>
<div class="md-hr md-end-block" tabindex="-1">
<hr /></div>
<p class="md-end-block md-p"><span class="md-plain md-expand">*比起在南京时楼上孩子练习长跑和玩积木的声音、楼下孩子半夜的哭闹和夫妻吵架的声音，家里的这两种倒更容易忍受，至少你知道什么时间能结束。</span></p>
]]></content:encoded>
			<wfw:commentRss>https://greyli.com/2020-summer-vacation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>2019 年总结</title>
		<link>https://greyli.com/2019-summary/</link>
		<comments>https://greyli.com/2019-summary/#comments</comments>
		<pubDate>Fri, 17 Jan 2020 04:19:38 +0000</pubDate>
		<dc:creator><![CDATA[李辉]]></dc:creator>
				<category><![CDATA[计划与总结]]></category>
		<category><![CDATA[2019]]></category>
		<category><![CDATA[年总结]]></category>

		<guid isPermaLink="false">http://greyli.com/?p=2785</guid>
		<description><![CDATA[从 2019 年的日程本来看的话，越往后面字越潦草，涂鸦和乱画也越来越多。总的来说，2019 年偏离计划太多， [&#8230;]]]></description>
				<content:encoded><![CDATA[<p class="md-end-block md-p md-focus"><span class="md-plain md-expand">从 2019 年的日程本来看的话，越往后面字越潦草，涂鸦和乱画也越来越多。总的来说，2019 年偏离计划太多，虽然有一些计划外的收获，但年初定下的目标大都没有完成。从好坏两方面总结下：</span></p>
<h2 class="md-end-block md-heading"><span class="md-plain">Good</span></h2>
<ul>
<li>完成《<a spellcheck="false" href="http://helloflask.com/tutorial/">Flask 入门教程</a>》</li>
<li>入选 2019 年度<a spellcheck="false" href="https://mvp.microsoft.com/en-us/PublicProfile/5003485">微软 MVP</a></li>
<li>参与组织 <a spellcheck="false" href="https://greyli.com/archives/pyconchina/">PyCon China 2019</a></li>
<li>完成<a spellcheck="false" href="http://greyli.com/talks/">五个演讲</a></li>
<li>完成 <a spellcheck="false" href="http://greyli.com/writing-another-flask-book/">Flask 新书</a>第一部分</li>
</ul>
<h2 class="md-end-block md-heading"><span class="md-plain">Bad</span></h2>
<ul>
<li class="md-end-block md-p"><span class="md-plain">玩游戏太多</span></li>
<li class="md-end-block md-p"><span class="md-plain">学东西太少</span></li>
<li class="md-end-block md-p"><span class="md-plain">看书太少</span></li>
<li class="md-end-block md-p"><span class="md-plain">产出太少</span></li>
<li class="md-end-block md-p"><span class="md-plain">收入太少</span></li>
</ul>
<h2 class="md-end-block md-heading"><span class="md-plain">写作</span></h2>
<p class="md-end-block md-p"><span class="md-plain">一月份完成了电子书《Flask 入门教程》，虽然是免费电子书，但也在书里放了一个付款二维码（定价￥10），目前收入快接近 400，大概能证明自愿付费不太可行（也可能是因为我一开始错误的把付款二维码放在了后记里 ）。2019 年快结束的时候，收到两笔记忆深刻的付款——一份是来自知友 </span><span class=" md-link"><a spellcheck="false" href="https://www.zhihu.com/people/cycleuser"><span class="md-plain">CycleUser</span></a></span><span class="md-plain"> 的 66 元巨款，另一份是来自*昱的 2 块钱定金（现在还没收到剩下的 8 块……）：</span></p>
<p><img class="wp-image-2794 size-full aligncenter" src="https://greyli.com/wp-content/uploads/2020/01/preorder.png" alt="" width="750" height="724" srcset="https://greyli.com/wp-content/uploads/2020/01/preorder.png 750w, https://greyli.com/wp-content/uploads/2020/01/preorder-150x145.png 150w, https://greyli.com/wp-content/uploads/2020/01/preorder-300x290.png 300w, https://greyli.com/wp-content/uploads/2020/01/preorder-624x602.png 624w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p class="md-end-block md-p"><span class="md-plain">上半年剩下的时间写了新书的第一部分，然后就开始投身到准备演讲和 PyCon China 里了。年底从疯狂的忙碌里安静下来，又回过头来更新了年初写的《Flask 入门教程》，然后花了两个月把上半年写的书稿重写了一遍。</span></p>
<h2 class="md-end-block md-heading"><span class="md-plain">游戏、书和电影</span></h2>
<p class="md-end-block md-p"><span class="md-plain">2019 年没怎么看书，Kindle 被闲置到电池故障。电影和电视剧看的也不多，两者分别最喜欢《守望者》和《废柴联盟》。游戏倒玩了不少，和瑶瑶一起通关了《超级马里奥 3D 世界》，《超级马里奥银河》进度玩到 30%，其他大部分时间都在玩《<a href="https://greyli.com/splatoon/">喷射战士</a>》。</span></p>
<p class="md-end-block md-p"><span class="md-plain">2018 年沉迷《皇室战争》，浪费了很多时间，所以在新年计划里加了一条「2019 年不玩皇室战争」。一年过去了，说到做到，但是又沉迷上了《喷射战士》……单场最高战绩是 16 杀，不过最喜欢 0 死 12 杀这一场：</span></p>
<p><img class="wp-image-2792 size-large aligncenter" src="https://greyli.com/wp-content/uploads/2020/01/splatoon-highest-score-1024x1024.jpg" alt="" width="625" height="625" srcset="https://greyli.com/wp-content/uploads/2020/01/splatoon-highest-score-1024x1024.jpg 1024w, https://greyli.com/wp-content/uploads/2020/01/splatoon-highest-score-150x150.jpg 150w, https://greyli.com/wp-content/uploads/2020/01/splatoon-highest-score-300x300.jpg 300w, https://greyli.com/wp-content/uploads/2020/01/splatoon-highest-score-144x144.jpg 144w, https://greyli.com/wp-content/uploads/2020/01/splatoon-highest-score-624x624.jpg 624w" sizes="(max-width: 625px) 100vw, 625px" /></p>
<p class="md-end-block md-p"><span class="md-plain">为了避免重蹈覆辙，元旦开始放任自己玩了两天游戏后，打算执行「2020 年不玩皇室战争和喷射战士」计划。但是想到那样生活会少了很多乐趣，所以现在又改成春节后再开始执行这个计划 :P</span></p>
<p class="md-end-block md-p"><span class="md-plain">今年计划把书架上大部分的书都读完，通关手里的游戏，在这之前不买新的书和游戏。</span></p>
<h2 class="md-end-block md-heading"><span class="md-plain">演讲</span></h2>
<p class="md-end-block md-p"><span class="md-plain">2019 下半年大部分时间都花在了五个演讲上。输出太多输入太少，本该学的很多东西只好又推到新的一年了。因为经验太少，也没法像其他前辈那样可以在很多话题上游刃有余的自由发挥。收获是了解了怎么演讲，变得不那么容易紧张。</span></p>
<p class="md-end-block md-p"><span class="md-plain">这几次演讲里，在</span><span class=" md-link"><a spellcheck="false" href="http://greyli.com/my-talk-at-coscup-2019/"><span class="md-plain">台湾 COSCUP</span></a></span><span class="md-plain"> 和</span><span class=" md-link"><a spellcheck="false" href="http://greyli.com/pycon-china-2019-building-rest-api-with-flask/"><span class="md-plain">成都 PyCon China</span></a></span><span class="md-plain"> 的演讲反响最好，和别人交流的也最多，有很多人因为 COSCUP 那场演讲认识我。参加这几个技术大会也认识了很多的前辈和朋友。</span></p>
<p class="md-end-block md-p"><span class="md-plain">除了准备演讲，19 年还完整参与了 PyCon China 2019 的筹备工作，有很多想法，有时间单独写篇文章。想起来这几次参会的总结文章还都在草稿状态，虽然已经是 2020 年了，我还是要写完它们的 :/</span></p>
<h2 class="md-end-block md-heading"><span class="md-plain">其他</span></h2>
<p class="md-end-block md-p"><span class="md-plain">五月份来了南京。这一年仍然没工作，靠《</span><span class=" md-link"><a spellcheck="false" href="http://helloflask.com/book"><span class="md-plain">Flask Web 开发实战</span></a></span><span class="md-plain">》的稿费和几个外包项目的收入维持生活开支。每次钱花得差不多，已经在翻招聘网站、了解面试技巧的时候，总会有一笔不多不少的稿费让我可以再拖一段时间。就这样一年又过来了。</span></p>
<p class="md-end-block md-p"><span class="md-plain">很感谢女朋友没有反对我不工作，而且还乐观的和我过这种有点拮据的生活。19 年在自己的事情上投入太多的时间，对她的陪伴和关心不够多，今年要多和她出去玩。</span></p>
<h2 class="md-end-block md-heading"><span class="md-plain">2020 计划</span></h2>
<p class="md-end-block md-p"><span class="md-plain">今年的重点是这三件事：</span></p>
<ul>
<li class="md-end-block md-p"><span class="md-plain">写<a href="http://helloflask.com/book/2">第二本 Flask 书</a></span></li>
<li class="md-end-block md-p"><span class="md-plain">录一个 Flask 视频教程</span></li>
<li class="md-end-block md-p"><span class="md-plain">学编程和英语</span></li>
</ul>
<p class="md-end-block md-p"><span class="md-plain">大部分时间还是会用来写书。除了写书，还会尝试录一个视频教程。编程有太多的东西要学，只能先专注流行和基础的东西。保持时间投入，不强求成效。英语的话，虽然 19 年是真正开口说英语最多的一年，不过并没有什么实质性的提高，还需要大量输入和练习。</span></p>
<p class="md-end-block md-p"><span class="md-plain md-expand">2018 年因为写书的生活非常单调，所以停掉了时间记录（要不然我就能清楚知道自己在游戏上浪费了多长时间了），今年重新开始记录每天的时间花销，年底来分享数据。</span></p>
<hr />
<p>年总结还是要在当年完成，这样就不用纠结「今年」和「明年」两个词的用法。</p>
]]></content:encoded>
			<wfw:commentRss>https://greyli.com/2019-summary/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>博客改版</title>
		<link>https://greyli.com/new-blog-ui/</link>
		<comments>https://greyli.com/new-blog-ui/#comments</comments>
		<pubDate>Sat, 05 Jan 2019 05:23:16 +0000</pubDate>
		<dc:creator><![CDATA[李辉]]></dc:creator>
				<category><![CDATA[计划与总结]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[总结]]></category>

		<guid isPermaLink="false">http://greyli.com/?p=2179</guid>
		<description><![CDATA[可以自由控制博客的样式，大概是独立博客最显著的优点之一。个人博客像是自己的房子，你拆墙打洞，想怎么弄都行，而其 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>
	可以自由控制博客的样式，大概是独立博客最显著的优点之一。个人博客像是自己的房子，你拆墙打洞，想怎么弄都行，而其他社交网站和博客平台则像是精装修的出租屋，一切都是房东说了算。昨天花了很长时间给博客动了一次大手术。一直觉得传统博客的两栏布局很多余，边栏在所有页面都会显示，干扰正常的阅读。而主边栏包含文章摘要，每页只能显示很少的文章，阅读起来也不够方便。单从阅读的角度看，单栏布局+全部文章列表才是最合理的设计。</p>
<p>	这次的调整对博客各个方面都进行了简化，尽可能多的去掉页面上的噪音（干扰信息）：
</p>
<ul>
<li>
		去掉所有页面的边栏。
	</li>
<li>
		随着边栏一起去掉的还有边栏上的&ldquo;Unfortunately not Flask powered&rdquo;徽章、站点统计信息、日历挂件、文章分类、月度归档、标签和近期文章。
	</li>
<li>
		因为没有了边栏，除了文章正文页面，外部不再有分类、标签和月度归档的入口，搜索框放到了博客页面底部。
	</li>
<li>
		去掉了背景图片。
	</li>
<li>
		博客主页使用年度归档文章列表，跟摘要说再见了。
	</li>
<li>
		所有插件的语言改为中文。
	</li>
<li>
		去掉导航栏的想法分类，以后短想法也采用标准文章格式。
	</li>
<li>
		页面宽度缩减到 860px。 优化了评论框的宽度，修复了响应式问题。
	</li>
<li>
		简化了相关文章扩展的样式，文章标题去掉粗体显示；提示文字使用 `&lt;p&gt;`，而不是 `&lt;h3&gt;`，上方添加一个分割线。
	</li>
</ul>
<p>
	这次调整后，未来大概很长一段时间里都不会再有大变化了，除非是更换博客引擎（以前考虑过换用静态博客引擎，但是因为旧文章不方便迁移，所以迟迟没有动手）。未来考虑会在细节上再进行一些优化：
</p>
<ul>
<li>
		去掉&ldquo;相关文章&rdquo;插件。
	</li>
<li>
		去掉&ldquo;图片弹窗&rdquo;插件。
	</li>
<li>
		去掉 Google 统计的代码，似乎对我没什么用。
	</li>
<li>
		个人主页使用和博客页面统一的样式。
	</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://greyli.com/new-blog-ui/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>2018 年总结</title>
		<link>https://greyli.com/2018-summary/</link>
		<comments>https://greyli.com/2018-summary/#comments</comments>
		<pubDate>Thu, 03 Jan 2019 10:00:03 +0000</pubDate>
		<dc:creator><![CDATA[李辉]]></dc:creator>
				<category><![CDATA[计划与总结]]></category>
		<category><![CDATA[2018]]></category>
		<category><![CDATA[年总结]]></category>

		<guid isPermaLink="false">http://greyli.com/?p=2103</guid>
		<description><![CDATA[和去年一样，又为写书花掉了一整年，这一年最大的感受就是累。上半年因为拖稿很焦虑，写完后又因为内容写太多了（70 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>
	和去年一样，又为写书花掉了一整年，这一年最大的感受就是累。上半年因为拖稿很焦虑，写完后又因为内容写太多了（700&nbsp;页），审稿审到想吐，这也导致成书有不少笔误&hellip;&hellip;出版后轻松不少，但生活开始充满了各种各样的杂事：推广新书，整理源码，打击盗版，回复读者提问，整理勘误，更新网站。几个月里，我的角色不停的在销售专员、客服、售后、技术顾问之间换来换去，以至于都快忘了我只能拿到 9% 的版税。而到手的一万多稿费，买了新的电脑和手机后就花的差不多了。反正我是再也不会写那么厚的书了，我发誓。
</p>
<p>
	话虽这么说，我倒挺喜欢这种生活方式，有种做手工艺人的感觉，而且书写完了会有很大的满足感和成就感。
</p>
<h2>
	成果<br />
</h2>
<p>
	这一年大概有下面这些值得记录的成果：
</p>
<ul>
<li>
		<a href="http://helloflask.com/book/">《Flask Web 开发实战》</a>出版
	</li>
<li>
		<a href="http://helloflask.com/tutorial/">《Flask 入门教程》</a>完成 80%
	</li>
<li>
		<a href="http://helloflask.com/">HelloFlask.com</a> 上线
	</li>
<li>
		<a href="http://greyli.com/projects/">5个项目</a>的在线 Demo 上线
	</li>
<li>
		写了 20 多篇文章
	</li>
<li>
		加入 Pallets Team
	</li>
<li>
		<a href="https://zhuanlan.zhihu.com/flask">知乎专栏</a>关注增长到 8000+
	</li>
<li>
		在 <a href="https://stackoverflow.com/users/5511849/grey-li">Stack Overflow</a> 拿到了 Flask 铜徽章
	</li>
<li>
		参加 PyCon China 北京场，分享了<a href="http://greyli.com/free-flask">《自由的 Flask》</a>
	</li>
</ul>
<h2>
	时间花销<br />
</h2>
<p>
	这一年仍然没有进行时间统计，大概的时间花销如下：
</p>
<ul>
<li>
		1~5 月：写作，最终在五月底定稿
	</li>
<li>
		6 月：完善书相关的项目源码、追加多次书稿修改
	</li>
<li>
		7 月：部署 5 个项目的在线 Demo、上线网站 helloflask.com
	</li>
<li>
		8月：为书发售做准备、写多篇文章
	</li>
<li>
		9 月：书发售、写文章、推广书、送书
	</li>
<li>
		10 月：写文章、处理盗版、整理勘误、回复读者提问
	</li>
<li>
		11 月：准备并参加 PyCon、处理盗版、整理勘误、回复读者提问
	</li>
<li>
		12 月：做外包项目、写《Flask 入门教程》、处理盗版、整理勘误、回复读者提问
	</li>
</ul>
<h2>
	其他<br />
</h2>
<p>
	和去年一样，除了翻过几本技术书外，今年几乎没有看什么书。电影的话，留下印象的只有最近去看的龙猫和无双，而音乐一直在重复旧的播放列表。这一年运动也严重不足，长时间使用电脑导致手腕和手指不太舒服（翻了下统计数据，上半年每天鼠标点击的次数在 2000~4000 左右，击键次数在 15000~30000 左右），期待意念键盘和鼠标早日发明出来。因为写作占用了大量时间，技术进步并不大，学习的内容也都局限在 Flask 和 Web 两个领域，明年需要扩展学习的范围。
</p>
<p>
	2019 年做什么？大概是恢复正常的生活节奏，清理掉过度收集的信息，再学一点新东西（或许再写本书 :p）。</p>
]]></content:encoded>
			<wfw:commentRss>https://greyli.com/2018-summary/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>2017 年总结</title>
		<link>https://greyli.com/2017-summary/</link>
		<comments>https://greyli.com/2017-summary/#respond</comments>
		<pubDate>Mon, 02 Jul 2018 03:50:17 +0000</pubDate>
		<dc:creator><![CDATA[李辉]]></dc:creator>
				<category><![CDATA[计划与总结]]></category>
		<category><![CDATA[2017]]></category>
		<category><![CDATA[年总结]]></category>
		<category><![CDATA[年计划]]></category>

		<guid isPermaLink="false">http://greyli.com/?p=1513</guid>
		<description><![CDATA[因为写书的事情忙的晕头转向，以至于这篇2017年总结到现在才写。2017年是个特别的一年，基本上全年都待在家里 [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>因为写书的事情忙的晕头转向，以至于这篇2017年总结到现在才写。2017年是个特别的一年，基本上全年都待在家里，全职写作<a href="https://zhuanlan.zhihu.com/p/29907260">《Flask Web开发实战》</a>这本书。</p>
<h2>编程</h2>
<h3>开源贡献</h3>
<p>为多个开源项目贡献了代码，不过大部分都是在对文档进行修补和更新，有时间会写一篇文章来总结一下。</p>
<div id="attachment_1515" style="width: 773px" class="wp-caption aligncenter"><a href="http://greyli.com/wp-content/uploads/2018/07/2017-github-1.png" rel="attachment wp-att-1515"><img class="size-full wp-image-1515" src="http://greyli.com/wp-content/uploads/2018/07/2017-github-1.png" alt="2017 Contributions 情况" width="763" height="222" srcset="https://greyli.com/wp-content/uploads/2018/07/2017-github-1.png 763w, https://greyli.com/wp-content/uploads/2018/07/2017-github-1-150x44.png 150w, https://greyli.com/wp-content/uploads/2018/07/2017-github-1-300x87.png 300w, https://greyli.com/wp-content/uploads/2018/07/2017-github-1-624x182.png 624w" sizes="(max-width: 763px) 100vw, 763px" /></a><p class="wp-caption-text">2017 Contributions 情况</p></div>
<h3>Web程序</h3>
<p>花费较多时间编写了书里的几个示例程序，除了<a href="https://github.com/greyli/helloflask">一堆简单的示例程序</a>，相对完善的程序包括留言板、个人博客、图片社交网站、待办事项程序、聊天室（这几个程序的介绍可以在<a href="https://zhuanlan.zhihu.com/p/38342129">这篇文章</a>看到）。</p>
<h3>Flask扩展</h3>
<p>随书衍生了几个扩展，除了作为扩展编写示例的<a href="https://github.com/greyli/flask-share">Flask-Share</a>，其他的扩展分别是：集成Dropzone.js（文件上传处理）的<a href="https://github.com/greyli/flask-dropzone">Flask-Dropzone</a>、集成CKEditor（富文本编辑器）的<a href="https://github.com/greyli/flask-ckeditor">Flask-CKEditor</a>、集成Bootstrap并旨在替代缺乏维护的Flask-Bootstrap的<a href="https://github.com/greyli/bootstrap-flask">Bootstrap-Flask</a>以及提供各种头像处理功能的<a href="https://github.com/greyli/flask-avatars">Flask-Avatars</a>。</p>
<h2>写作</h2>
<h3>在Stack Overflow上答题</h3>
<p>写了大约<a href="https://stackoverflow.com/users/5511849/grey-li">50个答案</a>，Reputation由535上升到1300左右。</p>
<div id="attachment_1516" style="width: 456px" class="wp-caption aligncenter"><a href="http://greyli.com/wp-content/uploads/2018/07/rep-2017.png" rel="attachment wp-att-1516"><img class="size-full wp-image-1516" src="http://greyli.com/wp-content/uploads/2018/07/rep-2017.png" alt="2017 Reputation情况" width="446" height="228" srcset="https://greyli.com/wp-content/uploads/2018/07/rep-2017.png 446w, https://greyli.com/wp-content/uploads/2018/07/rep-2017-150x77.png 150w, https://greyli.com/wp-content/uploads/2018/07/rep-2017-300x153.png 300w" sizes="(max-width: 446px) 100vw, 446px" /></a><p class="wp-caption-text">2017 Reputation情况</p></div>
<h3>知乎专栏Hello, Flask!</h3>
<p><a href="https://zhuanlan.zhihu.com/flask">知乎专栏Hello, Flask!</a>只在年初写了几篇文章，2月后就没有更新，不过专栏关注人数由2016年的2500上升到6000。</p>
<h3>写作《Flask Web开发实战》</h3>
<p>从3月开始写作，原计划10月份结束的<a href="https://zhuanlan.zhihu.com/p/29907260">《Flask Web开发实战》</a>，一直到2017年末都没有结束（仅仅完成了初稿）。</p>
<h2>阅读和其他</h2>
<p>这一年没有真正意义上的读书，只翻阅了几本写作过程中用到的技术书。</p>
<p>这一年的生活方式因为这本书的写作而完全改变，有时间会写一篇文章来总结这本书的写作过程。虽然没有进行时间统计，但这一年大部分时间都在进行Flask书的写作和相关编程工作。同样因为这本书的写作，大部分的2017年计划都直接移动到2018年计划中了。</p>
]]></content:encoded>
			<wfw:commentRss>https://greyli.com/2017-summary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
