Skip to content

Arrumando as âncoras para criação do arquivo epub #78

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Livro.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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[]

Expand Down Expand Up @@ -77,4 +78,4 @@ include::capitulos/cap23.adoc[]

include::capitulos/cap24.adoc[]

include::Posfacio.adoc[]
include::Posfacio.adoc[]
2 changes: 1 addition & 1 deletion Prefacio.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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 <em>Zen do Python</em>]
Expand Down
4 changes: 2 additions & 2 deletions capitulos/cap13.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -656,7 +656,7 @@ Toda ABC depende do módulo `abc`, mas não precisamos importá-lo nós mesmos,
A <<collections_uml>> é((("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 <<collections_uml>>.
Vamos dedicar a maior parte de <<herança>> à herança múltipla,
Vamos dedicar a maior parte de <<inheritance>> à 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.]

Expand Down Expand Up @@ -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`&#x2014; estendem `Collection`, que por sua vez estende múltiplas ABCs
(veja <<collections_uml>>). Assim, <<herança>> é um importante tópico complementar a esse.
(veja <<collections_uml>>). Assim, <<inheritance>> é 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)
Expand Down
2 changes: 1 addition & 1 deletion capitulos/cap24.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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]
____
&#x5b;Metaclasses&#x5d; 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 <<preface_sec>>. O TimBot estava inspirado naquele dia.]
Essa é outra parte da mesma mensagem de 23 de dezembro de 2002, citada na <<preface>>. O TimBot estava inspirado naquele dia.]
____

Uma((("metaclasses", "basics of", id="MCbasics24")))((("class metaprogramming", "metaclass basics", id="CMmetabasic24"))) metaclasse é uma fábrica de classes.
Expand Down
Binary file added cover.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 52 additions & 0 deletions gerar-epub.md
Original file line number Diff line number Diff line change
@@ -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.