终于在Stack Overflow上拿到了Flask铜牌徽章!
分类目录归档:Life
《Flask Web开发实战》的封面设计是如何诞生的?
一本书当然包含很多故事,这篇文章来介绍一下《Flask Web开发实战》封面设计的过程。
其实,这也算不上设计。因为这本书隶属于“Web开发系列”,这个系列的书都有一个通用的设计模板,唯一不同的就是确定封面中的图案。在选择图片前,我立下了几个规则:
- 使用Flask风格图片(黑白线条)
- 突出“实战”的含义
基于这两点,我最先发现的合适素材是一张飞机的图片,这个图片是Flask作者Armin Ronacher在2011年的演讲“Opening the Flask”中使用的幻灯片的第10页的插图:
这就是封面设计初稿:
我非常喜欢这个封面,编辑也表示很不错。遗憾的是,我没有搜索到这个图片的版权方,无法商用,而且Armin Ronacher也表示记不起来是从哪里拿到这张图片。
接下来,我花费了大量时间想找一个替代品,但是却始终找不到满意的。
无奈之下,我只好扩大范围,不再局限于飞机图片,而且延伸到了船、武器、人物,陆续找到下面这些替代品:
也许是因为“曾经沧海”,试来试去这些都不满意。这时我忽然有了一个念头:Miguel Grinberg那本《Flask Web开发》封面上是一只狗,我可以用一只狼呀。既能突出实战的特点,又有一点遥相呼应的味道,形成一个有趣的对比。
虽然心底有一些犹疑:会不会太像O’reilly的“动物书”?读者会不会觉得这是山寨?但是当我看到这张狼的图片时,顿时就喜欢上了,疑虑也消了大半:
把图片放到封面上看起来也非常合适:
这就是最终的封面初稿。当然,经过出版社设计人员的美化,最终的封面要好看得多:
于是,《Flask Web开发实战》的封面就这么诞生了。
《Flask Web开发实战》签名版发货小记
盼了几个月,书终于拿到手了,非常激动。大部分包装需要用到的东西早早的就准备好了,花了一个上午处理完所有签名书。
- “著作等身”
- 飞机盒
- 气泡垫
- Flask贴纸
- 明信片/书签
- 打包后的盒子
- 拿到快递公司
- 打包,准备发出
签名版的书还剩下一些,如果需要可以访问http://helloflask.com/book/signed/购买。
遗失的后记
今天拿到书,才偶然发现编辑把我的后记删掉了……补在这里,请读完最后一页后来看。
《Flask Web开发实战》后记:
经过这一段漫长的Flask之旅,你应该收获了不少东西。虽然本书结束了,但你的学习还没有止步。希望这本书可以让你的某些想法走进现实,带给人们一些特别的记忆。也希望你可以慷慨的分享你的代码、经验和思想,因为你正和其他人一样,用你的方式改变着这个世界。但愿这本书帮到了你,祝你好运!
李辉
2018年4月1日
文如其人
偶然看到读库网站上的投稿要求——《我们需要什么样的稿件》,觉得非常有意思。与其说是筛选稿件,倒不如说是在筛选作者,因此标题也可以看做《我们需要什么样的作者》。进一步说,这种筛选也会反向作用到读者身上。在大多数媒体和网站都在努力扩大受众群体时,这种主动筛选难能可贵。
……
如果您的文章中,经常出现“我感到……”“我想……”“我觉得……”这样的句式,则基本不符合我们的选稿标准。说得再严苛一些,一篇文章中如果三分之一以上的句子主语都是“我”,就不会出现在《读库》里。
如果您的文章中定语太多,或是结论评价类的形容词太多,则不符合我们的选稿标准。我们只希望你把你看到的记录下来,至于它在你心中泛起的涟漪,希望能通过你的记录和传递,荡漾到读者心中,而描述涟漪本身,是我们不需要的。
如果你的文章试图以小见大,或直接以大见大,以探讨人生终极问题和家国大计为己任,我们也要对您敬而远之。我们要的不是高度的概括性,而是极度的细部展示。具体地说,如果一篇三万字的稿子,其第一段提到的某件事、某个人,有可能被写出三万字,那么这篇稿子就显得大而无当了。
如果你试图充分展示自己的写作才华,我们也要对您敬而远之。《读库》中受人好评的文章,基本没有读者会说“这个作者太有才了”。我们想展示的,是才华的另一面:老老实实把自己想写的东西交代清楚,认认真真把自己感兴趣的东西琢磨个底儿掉,切切实实尊重读者的习惯和判断。
“用写一本书的力气来写一篇文章”,我们最需要这样的稿件。希望您将投稿的目光投向《读库》时,想的不是“我要写一篇好文章”,而是“我要把一件事情搞清楚,并记下来”。当动笔的时候,你心里有着一定的谦卑和热忱。庶几可矣。
糟糕的提问
维护开源项目最怕的大概就是遇见这种提问者:不知道自己要问什么(XY问题),不提供足够的信息(或是提供不全面的甚至是错误的信息),不思考你给出的观点和建议,只希望你给出最终的解决代码。更要命的是,他们还会不断提供不相干的信息和更多的无关问题,给你制造烟雾弹。
夺回对时间和注意力的控制权
书写完后,我开始变得懈怠,越来越多的时间被浪费在豆瓣、Twitter、知乎、GitHub这些网站上。直到昨天,我才想到应该做些事情来改变这个状态,重新夺回对时间和注意力的控制权。
所有的网站和程序都在尝试尽可能的让用户上瘾,我们应该与他们对抗。过度的资讯对生活毫无益处,它们只会耗尽你的精力,让你的生活失控。
减少和过滤信息来源
首先,我尝试减少信息来源,做了下面这些事情:
- 豆瓣关注人数降到10
- Twitter关注降到10
- GitHub关注降到6
- 知乎关注降到2
- GitHub watch的非自建项目数降到15
- Stack Overflow watch的标签降到2
进一步,我使用广告屏蔽工具和网页样式自定义工具来屏蔽常用网站的页面元素来减少无关信息干扰:
- 屏蔽Twitter主页边栏和“探索”按钮
- 屏蔽豆瓣主页边栏和“探索”按钮
- 屏蔽知乎主页动态、边栏和“探索”按钮
- 屏蔽知乎话题页面、回答页面的边栏以及专栏文章下的推荐
对关注数量,点赞数量的过度关注影响了我的正常工作和行为判断,所以我继续屏蔽了常用网站上的各类关注和点赞数字:
- Twitter关注人数
- 豆瓣关注人数
- 知乎个人主页边栏
- 知乎专栏关注人数
- 知乎专栏文章的点赞数
统一处理邮件和提醒
当然,这些还远远不够。为了获得更高的工作效率,避免被频繁打断工作状态。邮件、社交网站的私信、GitHub上的Issue需要集中时间统一处理,因此我将每日的社交信息处理时间段设置为每晚的9~10点。
另外,在非处理时间段要避免被消息提醒打扰:
- 删除邮件和社交网站消息提醒浏览器插件,关闭所有的桌面通知
- 关闭所有网站不必要的提醒,比如新增关注、点赞
限制网络使用
现在,我越来越相信:工作的时候应该断网。不过,没有外力强制很难做到断网。虽然我将每日的社交信息处理时间段设置为每晚的9~10点,如果没有外力限制,我仍然可能会在这个时间段以外的时间里访问这些网站。这时候必须要用到网络限制工具。
在写Flask书的过程中我就开始尝试使用多种方式来限制网络的使用,限制每天可以访问某些网站的时长,或是直接禁止某个时间段的所有网络访问。Chrome应用商店有很多扩展可以设置网络限制,我现在使用StayFocused(Firefox上可以使用LeechBlock)。
如果有网络使用需求,比如查东西,那么也应该记下需求,在统一的时间段进行处理。
进阶计划
浏览器扩展虽然有效,但大多数扩展没法避免被删除。一般情况下,你可以通过将扩展管理页面和扩展设置页面加入屏蔽规则来避免。不过在Chrome中,仍然可以通过右键点击扩展图标来移除扩展,而隐藏图标后仅仅是把它们放到菜单里。
未来我会考虑尝试使用操作系统层面上的限制软件,它们除了限制网站访问还可以定制限制使用某些程序(比如Steam),并且包含一定的措施避免进程被强制关闭。
另外,我还会考虑按照这篇《How I got to 200 productive hours a month》(这篇文章包含很多关于提高生产力的建议,建议阅读)的建议将工作和生活所使用的环境和电子设备分成两套,这样就不会互相干扰了:
- 工作:房间A,电脑A,仅安装工作所需的程序,浏览器设置永久禁止访问非工作网站。
- 娱乐:房间B,电脑B,仅用来玩游戏等娱乐活动。
当然,这要等我有两个房间和足够的钱才能实现。
2017年总结
因为写书的事情忙的晕头转向,以至于这篇2017年总结到现在才写。2017年是个特别的一年,基本上全年都待在家里,全职写作《Flask Web开发实战》这本书。
编程
开源贡献
为多个开源项目贡献了代码,不过大部分都是在对文档进行修补和更新,有时间会写一篇文章来总结一下。
Web程序
花费较多时间编写了书里的几个示例程序,除了一堆简单的示例程序,相对完善的程序包括留言板、个人博客、图片社交网站、待办事项程序、聊天室(这几个程序的介绍可以在这篇文章看到)。
Flask扩展
随书衍生了几个扩展,除了作为扩展编写示例的Flask-Share,其他的扩展分别是:集成Dropzone.js(文件上传处理)的Flask-Dropzone、集成CKEditor(富文本编辑器)的Flask-CKEditor、集成Bootstrap并旨在替代缺乏维护的Flask-Bootstrap的Bootstrap-Flask以及提供各种头像处理功能的Flask-Avatars。
写作
在Stack Overflow上答题
写了大约50个答案,Reputation由535上升到1300左右。
知乎专栏Hello, Flask!
知乎专栏Hello, Flask!只在年初写了几篇文章,2月后就没有更新,不过专栏关注人数由2016年的2500上升到6000。
写作《Flask Web开发实战》
从3月开始写作,原计划10月份结束的《Flask Web开发实战》,一直到2017年末都没有结束(仅仅完成了初稿)。
阅读和其他
这一年没有真正意义上的读书,只翻阅了几本写作过程中用到的技术书。
这一年的生活方式因为这本书的写作而完全改变,有时间会写一篇文章来总结这本书的写作过程。虽然没有进行时间统计,但这一年大部分时间都在进行Flask书的写作和相关编程工作。同样因为这本书的写作,大部分的2017年计划都直接移动到2018年计划中了。
我加入了Pallets Projects开发团队
今天早晨起来检查收件箱,收到了David Lord(Flask核心维护者)的邮件,他同意了我的申请——前段时间邀请他为我的新书《Flask Web开发实战》写推荐语,同时申请加入Pallets Projects开发团队(Pallets Team)。
Pallets Projects是什么?
简单来说,Pallets Projects就是“Flask项目集合”,为了更好的管理Flask相关项目而由Pocoo分化而来。它同时也是一个GitHub Organization,包括了所有Flask相关的项目,比如Flask、Werkzeug、Jinja、Click等等。
这意味着什么?
这意味着我对于Flask项目拥有更多的操作权限,可以更好的向Flask贡献代码,并且可以帮助处理Issue和Pull Request。
书写完了
历时一年零三个月,Flask书的写作终于结束,目前已基本进入正式排版阶段,预计八月底可以上市。
这本书的写作时间线大致如下:
- 2017/3/1 开始写作
- 2017/12/7 初稿完成
- 2018/1/18 二稿完成
- 2018/3/26 三稿完成
- 2018/4/29 四稿完成
- 2018/5/16 五稿完成
- 2018/5/22 定稿(六稿)
- 2018/6/5 确定最终修改
- 进入出版流程,开始排版
一本书的写作给我自己带来了很多变化,虽然有时感觉非常疲惫,但算得上是一个奇妙的体验。有时间会写一篇文章记录一下这一年的写作经历。
2016年总结
编程
今年只做了几个小Demo。从GitHub的提交可以看出来,一到寒暑假,工作就断断续续了。
在Stack Overflow回答问题
从九月开始在Stack Overflow上答题,一共写了35个回答,获得535reputation。
写知乎专栏
从十一月开始,在知乎开了一个关于Flask编程的专栏,写了30篇文章,获得2000+关注。
阅读与写作
今年看了60多部电影 (下半年太多),却只看了8本书。最喜欢的书是《故事新编》和《黑客与画家》。
写作上,博客80篇加上专栏的30篇,算是完成了之前订下的写作计划(100篇)。
时间统计
从元旦开始,停止了时间统计。离开学校后,生活上的变数太多,没法像以前那样控制时间,改用设定每天的任务来管理日常了。这是下半年(9~12月)的时间数据主要项目:
- 编程:470小时
- 阅读:77小时
- 写作:98小时
- 英语:28小时
- 运动:34小时
- 娱乐:184小时
从时间统计来看,编程时间增加了很多(是原计划的两倍),写作超量完成(多了40小时),其他计划都没有达标,娱乐更是超出了84小时(原计划不超过100小时)。其他还有一些很明显的趋势:睡眠和娱乐越来越多,编程和阅读越来越少。
同时,下半年计划里的大部分内容都没完成,完成量大概只有50%左右。
优质信息源推荐
编程学习中,有两种信息,一种是静态的:官方文档,系统教程,参考书,技术书;另一种是动态的:各种优秀的(非纯技术)书,经验总结,发明创造甚至是奇技淫巧。静态的信息建立你的根基,让你强大;动态的信息塑造你的思想和价值观,让你少走弯路,变得灵活。
今天我来推荐三个动态的信息源:一个网站,两个周刊。
网站
我没有多少时间去获取资讯。如果你不是躺在养老院里,也不应该投入过多的时间到资讯上,况且大多数资讯根本不值得阅读。但适当的资讯是必要的,这让你增进对世界的了解。Hacker News可以作为每日资讯的获取来源,不仅仅是编程方面的内容,还会有新技术,网站,新闻,项目,书等等。
顺便推荐Hacker News创始人Paul Graham的书《黑客与画家》,书里文章选自他的网站http://paulgraham.com/。
周刊
1、Fullweb Weekly:The newsletter for fullstack developers
2、Pycoder’s Weekly: A Weekly Python E-Mail Newsletter
这里面有前后端和Python方面的新动态,优秀的库,巧妙的实践,基础知识,各种文章和Tips。尽管内容很多很丰富,但是你应该在打好基础后再来读这些东西。
如果你有大把时间(我想你并没有),可以看看DesignerNews、Reddit的Programming板块,以及这个关于Python资讯的列表。

