.NET 传奇 1.0 的出版过程,以及未来计划

今年五月初开始在微博的头条文章连载《.NET 的一点历史故事》,是一件非常快乐的事情。在各方朋友们的鼓励和支持之下,除去公开连载的八个章节,其后又先后完成其他十个章节,首先通过收费阅读渠道做了分享。到五月底的时候,全书主体已经基本完成,所缺少的是最后的审稿和美化。

六月初跑去多伦多和加拿大微软 MVP 们聚会,月中又做完了蒙特利尔本地 Xamarin Dev Days 上 Introduction to Xamarin 的演讲,所以拖到月底才有时间来做做出版。之前自己也通过 LeanPub 出版了一本书(四个章节,更像是一个测试项目),但是现在这家网站已经不再支持免费出版新书(出版新书每本书需要加收一定的出版费用),于是这次改用其他出版渠道。最后几经研究选择了 iBook 和 Lulu.com。

下面简单讲一下注册 iBook 出版的粗略步骤(详细的大家可以自己摸一下,挺简单的)。首先需要有一个 Apple 账号,相信使用苹果设备的人都不陌生。然后要前往 iTunes Connect 上使用你的 Apple 账号来进行发布商注册。(因为我日常的 Apple 账号是美区的,而银行账号什么都还是加拿大的,所以就专门为出书注册了一个加拿大区的新账号。)向导会提示注册个人信息,银行账号信息,以及税务信息(著名的美国 W-8BEN 表格)。(鉴于填写指导什么的网上很多,我就不多花气力了。)一一填好之后,Apple 会生成一个授权协议文件发到你的邮箱,表示你现在可以提交书籍来出版了。

我写作这本书暂时使用的是 macOS 上的 iBook Author,Apple 官方的工具,比用 Word 之类软件更加傻瓜,但是偶尔会崩溃,导致内容丢失,所以严肃地讲我还是推荐你使用 Word 之类软件来写书。如果你系统语言是英文,而写作的是中文书,那么记得开启 iBook Author 之前使用 Language Switcher 之类的软件来修改应用启动语言为中文,否则模板都是英文的,还没法手工修改。书籍完成之后,通过导出工具导出为 ibook 格式的文件。记得文件名必须是英文的,中文文件名会在后续步骤中导致错误。


iBook Author 写作界面


导出完整书的内容之后,还需要将书籍工程复制一份,然后删去部分章节成为一个专门的预览工程。从这个新工程里面导出预览版的 ibook 文件。这个步骤非常烦心,但是没有什么捷径。

最后下载 iTunes Producer 软件,新建一本书的工程,用它来填写元数据。


iTunes Producer 用户界面


有趣的是,计算机书籍的分类里面还真有历史这一栏,也使得本书找到正确的地方。

Producer 里面还可以选择发布书籍的区域和每个区域的价格。因为我计划收加元,所以其他区域的的价格也就让工具自己生成了。最后把全书和预览两个 ibook 文件从 Finder 拖拽进去,就完成了全部工作,可以点击提交来结束出版,等待上线。相信一部分朋友还记得 iBook 不久前被迫退出中国区的事情,所以可供选择的几十个国家里面也就没有中国。简单看了下,以中文为官方语言的香港、台湾、新加坡也都不在列表里面,可见做中文出版物的种种尴尬。

本书在 iBook 的购买地址: http://itunes.apple.com/us/book/id1252288406 

昨天到这个时候就把书提交完毕了,今天早上基本全部区域都上架了。

今天又试了一下 Lulu.com 的出版流程,更加简单。新建一本eBook,填好网页里面的信息,然后上传一个 PDF 版本就好了。(PDF 可以从 iBook Author 中导出。)Lulu 还提供免费的 ISBN 号码(当然出版商就变成了 Lulu,还有一个授权协议)。

本书在 Lulu 的购买地址: http://www.lulu.com/content/e-book/dot-net-legend/21095614

到这里1.0版本的出版任务就告一段落了。

我计划未来会经常更新这本书,使用软件开发正流行的 CI/CD 方式,以便跟上 .NET Core 进化的步伐。另外还会试试 Lulu 的纸质书出版方案。纸质书因为纸张尺寸的约束,需要使用 Word 之类的工具重新排版,所以我估计自己最快也要下半年才会有所动作。敬请期待。

也欢迎大家在阅读本书之后给我提供反馈。有兴趣自行出版书籍的朋友,如果需要一些工具上的入门指导,也可以和我联系

相关文章:

  • .NET 的一点历史往事:和 Java 的恩怨

  • .NET的一点历史故事:招兵买马和聚义山林

  • .NET的一点历史故事:擦肩而过的机遇

  • .NET的一点历史故事:误入歧途,越陷越深

  • .NET的一点历史故事:作者的一些感想

  • .NET的一点历史故事:Novell的崩溃和Xamarin的重生

  • .NET 和 Mono 的一点历史

原文地址:http://weibo.com/ttarticle/p/show?id=2309404122845604143855


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaFX UI控件教程(二十七)之File Chooser

翻译自 File Chooser 本章介绍如何使用FileChooser该类使用户能够导航文件系统。本章提供的示例说明了如何打开一个或多个文件,配置文件选择器对话框窗口以及保存应用程序内容。 与其他用户界面组件类不同,FileChooser该类不属于该javafx.scene.contr…

sql server高级查询,看这篇文章就够了

先选择一个数据库 use jobtest go引入:该数据库jobtest里面有两张表,Student学生表和Grade年级表,表中的数据如下所示: 学生表Student: 年级Grade表: 接下来我们来看看sql server中的子查询&#xff1a…

ssl1104-USACO 2.1城堡(foodfill)【图论,广搜】

##前言 由于这道题比较难,有不好描述,我就直接贴题目了。 ##Description 以一个几乎超乎想像的运气,农民约翰在他的生日收到了一张爱尔兰博彩的奖券。 这一张奖券成为了唯一中奖的奖券。 农民约翰嬴得爱尔兰的乡下地方的一个传说中的城堡。 …

直接输出数组的名字不一定是地址值

package com.wdl.day09;/*** 创建人 wdl* 创建时间 2021/8/12* 描述*/ public class ArrayPrintTest {public static void main(String[] args) {int[] arr new int[]{1, 2, 3};System.out.println(arr);//地址值char[] arr1 {a, b,c};System.out.println(arr1);//abc} }

jQuery的简介

jQuery的简介 [1]为什么学习jQuery A、JS书写代码的时候结构比较的臃肿 B、JS获得元素对象的方式比较的单一 C、JS书写的代码浏览器的兼容性比较差 D、JS实现动画的效果比较的麻烦 [2]什么是jQuery javascriptQuery(js库) 目前最流行的JavaScript函数库,对JavaScrip…

JavaFX UI控件教程(二十八)之UI控件的自定义

翻译自 Customization of UI Controls 本章介绍了UI控件自定义的各个方面,并总结了Oracle提供的一些提示和技巧,以帮助您修改UI控件的外观和行为。 您可以通过应用层叠样式表(CSS),重新定义默认行为和使用单元工厂来…

好多人都说存储过程很难?认真看这篇文章就够了

何为存储过程?存储过程是在数据库管理系统中保存的、预先编译的并能实现某种功能的sql程序,说直白点,java知道吧?和java的方法一样。每遇到一个新的知识点时,我们都会看看它的优点,从而加深对它学习的欲望&…

下一代的 Actor 模型框架 Proto Actor

ProtoAct 是下一代的 Actor 模型框架,提供了 .NET 和 Go 语言的实现,默认支持分布式,提供管理和监控功能。在过去几年,我们经常看到两种 Actor 模型方法相互竞争,首先是经典的 Erlang/Akka 风格的 Actor 模型&#xff…

ssl1776-游乐场【图论,深搜】

题目 一个游乐场(无向图),每个景点(点)都有一定的开心值(价值),一个点只能游玩一次。然后可以从任何一个点出发,求可以游玩的最多项目(连通分量)…

JQuery $作用

作用1: $(function(){}) $就是jQuery的省略写法 1.相当于 window.οnlοadfunction(){} 2.功能比window.onload更强大 1) window onload一个页面只能写一个,但是可以写多个$() 而不冲突 2) window onload要等整个页面加载完后再执行&#xff…

import关键字

在源文件中显式的使用import结构导入指定包下的类、接口 声明在包的声明和类的声明之间 如果需要导入多个结构,则并列写出即可 可以使用"xxx.*"的方式,表示可以导入xxx包下的所有结构 如果使用的类或接口是java.lang包下定义的&#xff0c…

信息学奥赛一本通1349-最优布线问题

【题目描述】 学校有n台计算机,为了方便数据传输,现要将它们用数据线连接起来。两台计算机被连接是指它们有数据线连接。由于计算机所处的位置不同,因此不同的两台计算机的连接费用往往是不同的。 当然,如果将任意两台计算机都用…

你知道i=i++;的含义吗?原理其实没有你想的那么简单

i和i我们都知道,但是你知道ii;吗?自上学时,老师就说i是先赋值再加,而i是先加再赋值,比如我们写个代码举下例子:i:/*** 自增案例*/public static void testZiZeng(){int i 1;int a i;System.out.println(&…

jQuery 的选择器

01、基本选择器 标签选择器 $(“a”) ID选择器 $(“#id”) $(“p#id”) 类选择器 $(“.class”) $(“h2.class”) 通配选择器 $("*") 并集选择器$(“elem1,elem2,elem3”) <script type"text/javascript">$(function(){/*******id选择器*********…

学会思考,而不只是编程

中国人常说“授之以鱼不如授之以渔”。如果说教授编程是授之以鱼&#xff0c;那么教授计算机科学就是授之以渔。为什么说学习计算机科学比学会编程要重要得多&#xff1f;来听听Yevgeniy Brikman的解释。 现如今&#xff0c;似乎每个人都在学习编程&#xff1a;Bill Gates、Ma…

ssl1562-局域网

局域网 题目 就是一个图&#xff0c;求最小生成树&#xff0c;然后求被去除的边的价值。 输入 用线来表示联通 5 5 1 2 8 1 3 1 1 5 3 2 4 5 3 4 2 输出 去除的边的总价值 8 解题思路 求出最小生成树的价值然后线的总值减去最小生成树的价值 代码 #include<…

什么?java中居然可以执行js代码了?真是不知者不怪

今天在书上看的&#xff0c;java中可以直接调用js的函数了&#xff0c;言外之意就是java已经支持外部的脚本语言了&#xff08;在运行期解释执行的&#xff09;&#xff0c;查了查&#xff0c;jdk从1.6之后开始支持的&#xff0c;1.6之前不可以。 为什么Java这种编译语言还需要…

jQuery 操作元素

01、操作元素的属性 $(function(){$("#but").click(function(){//获得元素的对象var inp$("#zh");//JQ获得属性 inp.attr("value")&#xff1a;获得的默认的值console.log(inp.attr("type")"----"inp.attr("name&q…

用 Docker Machine 创建 Azure 虚拟主机

搭建环境向来是一个重复造轮子的过程&#xff0c;Docker Machine 则把用户搭建 Docker 环境的各种方案汇集在了一起。笔者在《Docker Machine 简介》一文中演示了使用 Docker Machine 在本地的 vSphere 主机中安装 Docker 环境。但是在云计算大爆炸的今天&#xff0c;真正让我们…

ssl2345-繁忙的都市

题目 一个无向图&#xff0c;求最小生成树里权值最大的那条边 输入 第一行有两个整数n,m表示有n个店&#xff0c;m条边。接下来m行是对每条边的描述&#xff0c;u, v, c表示点u和v之间有边&#xff0c;权值为c。(1≤n≤300&#xff0c;1≤c≤10000) 4 5 1 2 3 1 4 5 2 4…