diff --git a/Livro.adoc b/Livro.adoc index 76e6c20..4a60392 100644 --- a/Livro.adoc +++ b/Livro.adoc @@ -11,6 +11,7 @@ include::atributos-pt_BR.adoc[] :toc: left :toclevels: 2 :!chapter-signifier: +:front-cover-image: image:cover.jpg[fit=cover] include::Prefacio.adoc[] @@ -77,4 +78,4 @@ include::capitulos/cap23.adoc[] include::capitulos/cap24.adoc[] -include::Posfacio.adoc[] \ No newline at end of file +include::Posfacio.adoc[] diff --git a/Prefacio.adoc b/Prefacio.adoc index 60c182e..278a65b 100644 --- a/Prefacio.adoc +++ b/Prefacio.adoc @@ -11,7 +11,7 @@ [dedication] __Para Marta, com todo o meu amor.__ -[preface] +[[preface]] == Prefácio [quote, Tim Peters, lendário colaborador do CPython e autor do Zen do Python] diff --git a/capitulos/cap13.adoc b/capitulos/cap13.adoc index 0766459..2197dd6 100644 --- a/capitulos/cap13.adoc +++ b/capitulos/cap13.adoc @@ -656,7 +656,7 @@ Toda ABC depende do módulo `abc`, mas não precisamos importá-lo nós mesmos, A <> é((("UML class diagrams", "ABCs in collections.abc"))) um diagrama de classe resumido (sem os nomes dos atributos) das 17 ABCs definidas em `collections.abc`. A documentação de `collections.abc` inclui https://fpy.li/13-16[uma ótima tabela] resumindo as ABCs, suas relações e seus métodos abstratos e concretos (chamados "métodos mixin"). Há muita herança múltipla acontecendo na <>. -Vamos dedicar a maior parte de <> à herança múltipla, +Vamos dedicar a maior parte de <> à herança múltipla, mas por hora é suficiente dizer que isso normalmente não causa problemas no caso das ABCs.footnote:[Herança múltipla foi _considerada nociva_ e excluída do Java, exceto para interfaces: Interfaces Java podem estender múltiplas interfaces, e classes Java podem implementar múltiplas interfaces.] @@ -1872,7 +1872,7 @@ Hellmann também usa a declaração de ABC no estilo antigo:`PluginBase(metaclas Quando usamos ABCs, herança múltipla não é apenas comum mas praticamente inevitável, porque cada uma das ABCs fundamentais de coleções — `Sequence`, `Mapping`, e `Set`— estendem `Collection`, que por sua vez estende múltiplas ABCs -(veja <>). Assim, <> é um importante tópico complementar a esse. +(veja <>). Assim, <> é um importante tópico complementar a esse. A https://fpy.li/13-52[PEP 3119--Introducing Abstract Base Classes] (EN) apresenta a justificativa para as ABCs. A https://fpy.li/13-53[PEP 3141--A Type Hierarchy for Numbers] (EN) diff --git a/capitulos/cap24.adoc b/capitulos/cap24.adoc index f59619b..57d043e 100644 --- a/capitulos/cap24.adoc +++ b/capitulos/cap24.adoc @@ -692,7 +692,7 @@ Esse é o destino final desse capítulo—e desse livro.((("", startref="CMimpor [quote, Tim Peters, inventor do algoritmo timsort e um produtivo colaborador do Python] ____ [Metaclasses] são uma mágica tão profunda que 99% dos usuários jamais deveria se preocupar com elas. Quem se pergunta se precisa delas, não precisa (quem realmente precisa de metaclasses sabe disso com certeza, e não precisa que lhe expliquem a razão).footnote:[Mensagem a comp.lang.python, assunto: https://fpy.li/24-12["Acrimony in c.l.p." (_animosidade no c.l.p._)]. -Essa é outra parte da mesma mensagem de 23 de dezembro de 2002, citada na <>. O TimBot estava inspirado naquele dia.] +Essa é outra parte da mesma mensagem de 23 de dezembro de 2002, citada na <>. O TimBot estava inspirado naquele dia.] ____ Uma((("metaclasses", "basics of", id="MCbasics24")))((("class metaprogramming", "metaclass basics", id="CMmetabasic24"))) metaclasse é uma fábrica de classes. diff --git a/cover.jpg b/cover.jpg new file mode 100644 index 0000000..4610623 Binary files /dev/null and b/cover.jpg differ diff --git a/gerar-epub.md b/gerar-epub.md new file mode 100644 index 0000000..0d6744b --- /dev/null +++ b/gerar-epub.md @@ -0,0 +1,52 @@ +# Como gerar o `epub` a partir dos arquivos fonte + +## Pré-requisitos + +Para gerar o `.epub` do livro é necessário ter o [Docker](https://docker.com) instalado em sua máquina. + +### Docker Ruby Image + +Precisamos baixar a [imagem Ruby oficial de Docker](https://hub.docker.com/_/ruby). Podemos fazê-lo com o seguinte comando: + +```bash +docker pull ruby +``` + +Verificando se a imagem Ruby foi baixada. + +``` bash +docker images +``` + +E espera-se o seguinte resultado: + +``` +REPOSITORY TAG IMAGE ID CREATED SIZE +ruby latest 1a74e25729c7 12 days ago 990MB +``` + +### Clone do repositório + +Realize o clone do repositório na sua máquina local. + +```bash +git clone https://github.com/pythonfluente/pythonfluente2e.git +cd pythonfluente2e +``` + +## Executando o build do `epub` + +Na raiz do repositório recém clonado, iremos executar um container que irá instalar as dependências para gerar o livro, e gerar o `.epub` na mesma raiz. Basta executar o seguinte comando: + +```bash +docker run -it --rm -v .:/book ruby sh -c "gem install asciidoctor-epub3 && asciidoctor-epub3 /book/Livro.adoc -o '/book/Python Fluente, Segunda Edição (2023).epub' 2> /dev/null" +``` + +Neste comando: + +- `-it`: Permite entrar no modo iterativo. +- `--rm`: Remove o container após a saída. +- `-v .:/book`: Monta o volume com o caminho da pasta raiz no container na em /book. +- `sh -c "gem install asciidoctor-epub3 && asciidoctor-epub3 /book/Livro.adoc -o '/book/Python Fluente, Segunda Edição (2023).epub' 2> /dev/null"`: Executa o comando especificado dentro do container. O comando faz a instalação do asciidoctor-epub3 dentro do container e realiza o build do livro. + +Após isso o container irá executar e salvar automaticamente o livro `.epub` em sua máquina. Basta agora enviar o arquivo para o seu leitor de e-books.