Skip to content
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

2nd Edition #2

Draft
wants to merge 142 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
142 commits
Select commit Hold shift + click to select a range
8a08f2e
Add experimental notebook
idg10 May 5, 2023
7243a4f
Decent first draft of ch01
idg10 May 23, 2023
ef67a52
WIP on ch02
idg10 May 23, 2023
026b062
More progress on Ch02
idg10 May 25, 2023
9f6cf6b
Ch01 and ch02 structure now in place
idg10 May 26, 2023
ba2b914
Lifetime Management chapter content moved into other chapters
idg10 Jun 5, 2023
ce3ef9e
Work in progress on Creating Observable Sequences
idg10 Jun 7, 2023
8371a36
First full draft of Creating Observable Sequences
idg10 Jun 8, 2023
32fa630
Add hot/cold section to Key Types
idg10 Jun 12, 2023
ee34c18
Add PART 2 break
idg10 Jun 12, 2023
b90523a
First full draft of Filtering
idg10 Jun 15, 2023
3e429b4
Remove Inspection chapter. Start on Transformation
idg10 Jun 15, 2023
83674a9
Transformation WIP
idg10 Jun 19, 2023
5dec03d
Feature complete draft of Transformation chapter
idg10 Jun 19, 2023
6c9ce41
Aggregation WIP
idg10 Jun 20, 2023
ecc076b
Feature-complete draft of Aggregation chapter
idg10 Jun 21, 2023
884fb83
Structurally complete Partitioning chapter
idg10 Jun 30, 2023
ebf6761
Reworked Concat in Combining Sequences
idg10 Jul 3, 2023
924cd6e
Basic structure of Combining Sequences
idg10 Jul 7, 2023
897f1cc
Re-order part 3 content
idg10 Jul 13, 2023
25224d5
Partial update of scheduling chapter
idg10 Jul 21, 2023
7b96789
More scheduler updates
idg10 Jul 25, 2023
09098c9
Feature-complete Leaving Observable chapter
idg10 Aug 2, 2023
ac46387
Feature complete Timing chapter
idg10 Aug 8, 2023
6fd006b
Feature complete Error Handling chapter
idg10 Aug 8, 2023
29f9158
Fix missing ` which were breaking pandoc
HowardvanRooijen Aug 8, 2023
887b2a7
Fix formatting / typos
HowardvanRooijen Aug 8, 2023
2b77c45
Remove old Hot and Cold chapter
idg10 Aug 10, 2023
1d07cb4
Fix double closing backtick
idg10 Aug 11, 2023
7c562b0
Change to code fence for stack trace
idg10 Aug 11, 2023
c1067c5
Add line breaks to AIS output to placate pandoc
idg10 Aug 11, 2023
13bc564
Minor clarification in disposal description
idg10 Aug 11, 2023
4ed2231
Add Observable.Defer section
idg10 Aug 11, 2023
2ec70b6
Experiment with <figure>
idg10 Aug 11, 2023
7c3d54c
Move Dump example one chapter earlier
idg10 Aug 11, 2023
067e56d
Minor tweaks to Ch15 publishing operators
idg10 Sep 13, 2023
0161de4
Testing chapter WIP
idg10 Sep 13, 2023
fd4052a
Ch14 more error handling updates
idg10 Sep 14, 2023
ae75c01
Draft of testing chapter
idg10 Sep 14, 2023
663be80
Renumber testing chaper
idg10 Sep 14, 2023
44f4005
Move remaining content out of combiningsequences and into other chapters
idg10 Sep 14, 2023
4ab1b35
Update appendix A, put all remaining Disposable content in appendix B
idg10 Sep 14, 2023
3508e78
Remove more spurious tab characters
idg10 Sep 14, 2023
7f621cc
Remove Dispelling Myths chapter
idg10 Sep 14, 2023
e032599
Fix appendix a title
idg10 Sep 14, 2023
3feae25
First full Appendix D draft
idg10 Sep 27, 2023
9ba5d0f
Fix missing file extension on Appendix D
idg10 Sep 27, 2023
ef7de07
Replace unicode with maths expressions
idg10 Sep 27, 2023
f06b0cb
Remove spurious unicode thin spaces
idg10 Sep 27, 2023
a198907
Fix another silly LaTeX mistake
idg10 Sep 27, 2023
85d0874
Fix appendix B title
idg10 Sep 28, 2023
e6cb8f4
Remove spurious backticks from Ch16
idg10 Sep 28, 2023
b846184
Update Appendix C
idg10 Sep 28, 2023
b38bde9
Initial containerised book PDF build
idg10 Sep 29, 2023
db2988e
Ch00 update after read through
idg10 Oct 24, 2023
d90262a
Ch01 update after read through
idg10 Oct 24, 2023
2213553
Ch02 updates after read through
idg10 Oct 24, 2023
c21653a
Ch03 partial read through
idg10 Oct 24, 2023
b94119a
Ch03 partial read through
idg10 Oct 30, 2023
d229637
Ch03 completed read-through
idg10 Oct 30, 2023
a42efd8
Update Part2 after read through
idg10 Oct 31, 2023
4635729
Remove spuriously added build outputs
idg10 Oct 31, 2023
a51bfd5
Ch05 update after read through
idg10 Oct 31, 2023
5ef0a6c
Ch06 update after partial read through
idg10 Nov 1, 2023
cb085c7
Ch06 updates after read through
idg10 Nov 2, 2023
897b21b
Handle various TODOs
idg10 Nov 2, 2023
e19bac1
Deal with some TODOs, hide others.
idg10 Nov 2, 2023
ea44590
Fix chapter ref
idg10 Nov 2, 2023
6fd7646
Update build script after chapter reorder
idg10 Nov 2, 2023
45d0739
Fix appendix D title
idg10 Nov 2, 2023
a50fe87
Ch07 partial read through
idg10 Nov 2, 2023
17bc09a
Ch07 partial updated for read through
idg10 Nov 6, 2023
10999da
Ch07 updated after read through
idg10 Nov 6, 2023
3caa2ad
Update Ch08 after read through
idg10 Nov 7, 2023
d9ef83d
Ch09 partial read through
idg10 Nov 8, 2023
726be65
Ch09 updates after read through
idg10 Nov 8, 2023
ce58d0c
Ch10 update after read through
idg10 Nov 8, 2023
c9981e0
Ch11 partial read through
idg10 Nov 9, 2023
4b0853b
Ch11 update after read through
idg10 Nov 9, 2023
77467d5
Ch12 update after read through
idg10 Nov 9, 2023
f3447f0
Ch13 update after read through
idg10 Nov 10, 2023
caf1df5
Ch14 completed read through
idg10 Nov 13, 2023
372bf08
Ch15 update after read through
idg10 Nov 14, 2023
fefb707
Ch16 updates after read through
idg10 Nov 14, 2023
4b7a2d4
Appendix A update after read through
idg10 Nov 14, 2023
93699c2
Appendix B update after read through
idg10 Nov 14, 2023
9f228fa
Appendix C update after read through
idg10 Nov 15, 2023
0e29f96
Remove bits of foreword that were messing up the formatting
idg10 Nov 16, 2023
2abc001
Add missing space in heading
idg10 Nov 16, 2023
2fb73f0
Appendix D partial read
idg10 Nov 17, 2023
6da179d
Appendix D updates after read through
idg10 Nov 17, 2023
4d451e4
Ch01 HvR feedback (except for backpressure)
idg10 Nov 29, 2023
eb14845
Add short back pressure section
idg10 Nov 30, 2023
008cc5e
Ch02 - processed more feedback
idg10 Nov 30, 2023
9ecfad3
Use fewer em dashes
idg10 Nov 30, 2023
a07644c
Ch03 updates after feedback
idg10 Dec 1, 2023
99ca095
Normalize use of generic type names in headings
idg10 Dec 1, 2023
7fc741c
Add missing code fence type
idg10 Dec 1, 2023
c4c1319
Ch05 update after review comments
idg10 Dec 5, 2023
f294a7b
Ch05 process more review feedback
idg10 Dec 5, 2023
f65060d
Ch06 updates after review feedback
idg10 Dec 5, 2023
8b18e7a
Ch07 update after review
idg10 Dec 5, 2023
56861d5
Ch08 update after review feedback
idg10 Dec 6, 2023
936338a
Ch11 fix Obserable typo
idg10 Dec 6, 2023
1500de2
Replace spurious &lt; with <
idg10 Dec 6, 2023
711c624
Fix 'lamba' typo
idg10 Dec 6, 2023
cc7c913
Ch00 - update or remove broken links in acknowledgements
idg10 Dec 6, 2023
6b5812b
Ch00 add reference to https://reaqtive.net/ for Rx history
idg10 Dec 6, 2023
9be34df
Ch00 fix more typos, add more links
idg10 Dec 6, 2023
7d2901a
Ch01 and Ch02 - more feedback based updates
idg10 Dec 6, 2023
7670ff5
Add thanks to open source contributors to Rx.
idg10 Dec 6, 2023
b8c279a
Add link to reactive x slack
idg10 Dec 6, 2023
86a23f8
Ch01 mention Reaqtor in paragraph on transactional queues
idg10 Dec 6, 2023
e416a06
Ch01 use the word Telemetry to keep Howard happy
idg10 Dec 6, 2023
0f77004
Ch16 fix some typos
idg10 Dec 6, 2023
d063ab3
App D - fix "howeever" typo
idg10 Dec 6, 2023
0a0b3d8
Change "favor" to UK spelling
idg10 Dec 6, 2023
19a14ca
Add thanks to .NET Foundation and Richard Lander
idg10 Dec 6, 2023
24d92f6
Remove spurious '.' in bullet list
idg10 Dec 6, 2023
2bcaf83
Ch03 responding to mwa's feedback
idg10 Dec 6, 2023
442dfd5
Ch03 fix another typo
idg10 Dec 6, 2023
5abacf6
Change "ownership" to "stewards"
idg10 Dec 6, 2023
e852897
Add sequence diagram to Ch03
idg10 Dec 13, 2023
8eb026a
Ch03 Add short section on long-term state in operators
idg10 Dec 13, 2023
2a4d81b
Appendix A - fix awkward wording
idg10 Dec 13, 2023
907b9f0
Use markdown in Appendix B.
idg10 Dec 13, 2023
7e30713
Replace a tab with spaces
idg10 Dec 13, 2023
bde5476
Appendix D: fix some typos
idg10 Dec 13, 2023
9128d94
Ch12 - fix markdown snafu
idg10 Dec 13, 2023
65223bf
Ch09 add some missing diagram descriptions.
idg10 Dec 13, 2023
eaca880
Ch12 remove backticks in links because the toolchain is apparently co…
idg10 Dec 14, 2023
471da5f
Ch12 trying Felix's suggestion for links to see if it renders OK on G…
idg10 Dec 14, 2023
9c58a3c
Ch12 put links back how they were since neither GitHub nor VS Code li…
idg10 Dec 14, 2023
4f4ec2c
AppB: Remove spurious use of HTML escaping
idg10 Dec 14, 2023
d30a624
Ch09 add remaining diagram descriptions and fix more typos
idg10 Dec 14, 2023
8a63658
Ch11 updates after review feedback
idg10 Dec 14, 2023
7815053
Ch13 updates after feedback
idg10 Dec 14, 2023
aba1724
Ch15 updates after feedback
idg10 Dec 14, 2023
ca9a0ac
Ch16 fix typo
idg10 Dec 14, 2023
62dab17
Ch02 Split example across multiple lines to help ebook rendering
idg10 Dec 14, 2023
0fc7b20
Try to clarify use of `@this` again
idg10 Dec 14, 2023
37f206a
Ch15 remove word degenerate because apparently it's not as widely und…
idg10 Dec 14, 2023
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
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,8 @@ Generated_Code #added for RIA/Silverlight projects
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
UpgradeLog*.htm


# Containerized build volume
build/output
6 changes: 6 additions & 0 deletions BuildWithDocker.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
$IMG=docker build . -q
if (-not (Test-Path -Path build/output)) {
New-Item -Type Directory build/output
}
$Output=resolve-path ./build/output
docker run --rm -v ${Output}:/output $IMG
57 changes: 57 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Original example (ContractOps) uses .NET base because it includes a .NET project
FROM mcr.microsoft.com/dotnet/runtime:7.0 AS base
# I don't think we need .NET. However, the base debian image doesn't have all the libraries
# pandoc wants, so we're using that for now
#FROM debian:12-slim

# Or perhaps we should just use https://hub.docker.com/r/pandoc/latex

# Install pandoc, MiKTeX, and rsvg-convert
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates \
dirmngr \
gpg \
gpg-agent \
librsvg2-bin \
wget \
xz-utils \
&& apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys D6BC243565B2087BC3F897C9277A7293F59E4889 \
&& echo "deb http://miktex.org/download/debian bullseye universe" | tee /etc/apt/sources.list.d/miktex.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
miktex \
&& miktexsetup finish \
&& wget https://github.com/jgm/pandoc/releases/download/3.1.6.2/pandoc-3.1.6.2-1-amd64.deb \
&& dpkg -i ./pandoc-3.1.6.2-1-amd64.deb \
&& rm ./pandoc-3.1.6.2-1-amd64.deb \
&& apt-get autoremove -y \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /pandoc-lua-filters
RUN wget https://raw.githubusercontent.com/pandoc-ext/pagebreak/main/pagebreak.lua \
&& wget https://raw.githubusercontent.com/alpianon/pandoc-inline-headers/master/crossref-ordered-list \
&& mv crossref-ordered-list crossref-ordered-list.lua \
&& wget https://gitlab.com/howdyadoc/toolchain/-/raw/master/howdyadoc/lua-filters/inline-headers.lua

WORKDIR /pandoc-filters
RUN wget https://github.com/lierdakil/pandoc-crossref/releases/download/v0.3.16.0f/pandoc-crossref-Linux.tar.xz \
&& tar -xJf pandoc-crossref-Linux.tar.xz \
&& rm pandoc-crossref-Linux.tar.xz

# Allow MikTeX to install things it needs
RUN initexmf --set-config-value=[MPM]AutoInstall=yes

WORKDIR /app

RUN mkdir content
COPY ["build/pandoc.sh","pandoc.sh"]
COPY ["content","content"]
COPY ["templates","templates"]
COPY ["metadata.md","metadata.md"]
COPY ["intro-rx-dotnet-book-cover.png","intro-rx-dotnet-book-cover.png"]

VOLUME ["/output"]
ENTRYPOINT ["/bin/sh", "/app/pandoc.sh"]
81 changes: 81 additions & 0 deletions build/pandoc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
#/bin/sh
# To be run inside the container
pandoc -o /output/intro-to-rx.epub metadata.md -s \
./content/01_WhyRx.md \
./content/02_KeyTypes.md \
./content/03_CreatingObservableSequences.md \
./content/04_Part2.md \
./content/05_Filtering.md \
./content/06_Transformation.md \
./content/07_Aggregation.md \
./content/08_Partitioning.md \
./content/09_CombiningSequences.md \
./content/10_Part3.md \
./content/11_SchedulingAndThreading.md \
./content/12_Timing.md \
./content/13_LeavingIObservable.md \
./content/14_ErrorHandlingOperators.md \
./content/15_PublishingOperators.md \
./content/16_TestingRx.md \
./content/A_IoStreams.md \
./content/B_Disposables.md \
./content/C_UsageGuidelines.md \
./content/D_AlgebraicUnderpinnings.md \
--epub-cover-image intro-rx-dotnet-book-cover.png \
--toc --toc-depth 4 \
--resource-path "./content/"

pandoc -o /output/intro-to-rx.docx -s \
./content/01_WhyRx.md \
./content/02_KeyTypes.md \
./content/03_CreatingObservableSequences.md \
./content/04_Part2.md \
./content/05_Filtering.md \
./content/06_Transformation.md \
./content/07_Aggregation.md \
./content/08_Partitioning.md \
./content/09_CombiningSequences.md \
./content/10_Part3.md \
./content/11_SchedulingAndThreading.md \
./content/12_Timing.md \
./content/13_LeavingIObservable.md \
./content/14_ErrorHandlingOperators.md \
./content/15_PublishingOperators.md \
./content/16_TestingRx.md \
./content/A_IoStreams.md \
./content/B_Disposables.md \
./content/C_UsageGuidelines.md \
./content/D_AlgebraicUnderpinnings.md \
--resource-path "./content/" \
--metadata-file=metadata.md \
--metadata title="Introduction to Rx .NET" \
--toc --toc-depth 4

pandoc -o /output/intro-to-rx.pdf metadata.md -s \
./content/01_WhyRx.md \
./content/02_KeyTypes.md \
./content/03_CreatingObservableSequences.md \
./content/04_Part2.md \
./content/05_Filtering.md \
./content/06_Transformation.md \
./content/07_Aggregation.md \
./content/08_Partitioning.md \
./content/09_CombiningSequences.md \
./content/10_Part3.md \
./content/11_SchedulingAndThreading.md \
./content/12_Timing.md \
./content/13_LeavingIObservable.md \
./content/14_ErrorHandlingOperators.md \
./content/15_PublishingOperators.md \
./content/16_TestingRx.md \
./content/A_IoStreams.md \
./content/B_Disposables.md \
./content/C_UsageGuidelines.md \
./content/D_AlgebraicUnderpinnings.md \
--resource-path "./content/" \
--template ./templates/eisvogel \
--toc --toc-depth 4

if [ -f /root/.miktex/texmfs/data/miktex/log/pdflatex.log ]; then
cp /root/.miktex/texmfs/data/miktex/log/pdflatex.log /output
fi
Loading