我使用GitHub私有存储库是因为我知道我想邀请一些可以从一开始就提供帮助的人,并在我撰写本书时提供宝贵的反馈。
协作者可以创建请求请求,并帮助您在编写本书时弄清楚主意。 我正在写一章,可以在开始下一章之前立即获得一些反馈。 Markdown非常容易将拉取请求合并到master分支中。
冒名顶替者综合症
在2017年12月,我开始对自己进行第二次猜测。 我在写书吗? 我没有观众,在Go社区中几乎没有人认识我。 我距离蒙特利尔2小时车程(在树林中间),所以我不做任何聚会谈话等。
然后你停下来。 恐惧,不确定性和恐惧 。 有些人在即将推出产品时有这种感觉。 我从来没有那种感觉。 推出产品时,兴奋,快乐和轻松是我的感觉。
对我而言,这已经结束了,我编写了示例章节并创建了一个简单的登录页面。 一章花了我大约两个月的时间,如果我的数学正确的话,我还有11章要写11 x 2 = 22个月。 沮丧加重了其他的感觉。
如果您担任类似职位,您可能犯了与我相同的错误。 您对编写本书的谈论还不够。 关于它的推文,博客,与朋友,家人和同事交谈,您有机会说您正在写这本书。
有一天,迪恩·雷顿·詹姆斯问我这本书。 他对预订这本书感兴趣,因为他正在Go中启动一个项目,并且想仔细检查我的书的进度。 他向我指出了一些在撰写本书时启用预购功能的作者。 有时可能需要长达一年的时间才能准备好这本书。 这对我来说是一条好路吗?
我很感兴趣,决定尝试一下。 我创建了您可以想到的最快的Stripe付款页面,通过电子邮件发送了我的清单,并在此发布了推特,宣布该书已预购,起价15美元,并且在每一章发行时都有所提高。
令我大吃一惊的是,这行得通。 ing通过电子邮件发送清单十分钟后,我已经有两次销售。 我整天收到新订单。 我很高兴,很高兴和充满活力地继续读这本书。 从那里开始,我每月写大约一章,并附带源代码,并于2018年9月发布。在每次发布新章时,我不断收到新订单,这确实很棒,并且可以验证人们对这本书的需求。
我用作登录页面和电子邮件捕获的内容
对于登录页面,我使用了Carrd和Mailchimp来捕获电子邮件。 我是通过MailChimp的确认电子邮件发送示例章节的。 这项工作很棒。 人们可能需要双重选择才能获得示例章节。
为了捕获付款,我创建了一个带有Stripe结帐页面和一个快速Go处理程序来处理付款的页面,向电子邮件发送带有书zip文件链接的电子邮件。 不超过15行的Go代码,我正在捕获信用卡,发送书并建立客户的csv文件,添加新章节后可以用来发送可下载文件。
刚开始就足够了。 我研究过Gumroad之类的服务和类似服务,但YMMV不适用于我。
每当发布新章节时,我都会向列表中发送电子邮件,并且价格上涨了+ $ 2。 如果我再写一本书,我肯定会重用这种方法。 我能够在书发行前8个月的2018年2月开始订购该书。
我如何生成书籍文件
最初,我使用安装了Ubuntu和Pandoc的虚拟机,然后发现了这个有用的docker映像,可以直接从Arch Linux机器生成PDF。 请注意,我不想从Arch存储库中安装Pandoc,该软件包很大,并且安装了许多Haskell依赖项,而没有安装。 码头工人的形象是完美的。 这就是我生成书的方式。
#!/ bin / bash
回声“生成pdf”
docker run -v`pwd`:/ source jagregory / pandoc --listings -H listings-setup.tex -N -S -s -o basaig.pdf title.txt 01.md 02.md 0x.md --epub- cover-image = cover.jpg --toc --latex-engine = xelatex --top-level-division =章节-base-header-level = 1 --highlight风格的意式浓缩咖啡
回显“生成epub”
docker run -v`pwd`:/ source jagregory / pandoc --listings -H listings-setup.tex -N -S -s -o basaig.epub title.txt 01.md 02.md 0x.md --epub- cover-image = cover.jpg --toc --toc-depth = 2 --latex-engine = xelatex
您只需按照希望生成章节的顺序列出markdown文件。
这是我用来渲染带有浅灰色背景和行号的代码块的模板。
Listings-setup.tex的%内容
\ usepackage {xcolor}
\ lstset {
basicstyle = \ ttfamily,
数字=左,
numberstyle = \ footnotesize,
步骤编号= 1,
数字ep = 5pt,
backgroundcolor = \ color {black!10},
showspaces = false,
showstringspaces = false,
showtabs = false,
tabsize = 2,
captionpos = b,
Breaklines = true,
breakatwhitespace = true,
breakautoindent = true,
linewidth = \文字宽度
此渲染代码块如下所示: