MATH 140 A/B - Real Analysis Notes
Welcome! These are my course notes for Real Analysis (MATH 140A and 140B), primarily following Walter Rudin’s “Principles of Mathematical Analysis”, 3rd Edition.
Use the navigation below, the file explorer sidebar (if available), or the search bar to find specific topics.
Content Navigation
By Lecture Set
By Chapter (Rudin)
- Chapter 1: The Real and Complex Number Systems
- Chapter 2: Basic Topology
- Chapter 3: Numerical Sequences and Series
- Chapter 4: Continuity
- Chapter 5: Differentiation
System Overview: Astro Site + Quartz Notes
This setup integrates a collection of notes managed with Quartz into a subdirectory (/140a/
) of a main website built with Astro. Both parts are deployed automatically via GitHub Actions to GitHub Pages.
Repositories
-
Notes Repository (
MATH 140A
/real_analysis_notes
)- Contains the source Markdown notes (
.md
files) organized in folders (140A_lectures/
,ch1/
, etc.) located in the repository root. - Includes a crucial
index.md
file in the root to serve as the landing page content for the notes section. - Contains the
quartz
subfolder with the Quartz library files,package.json
, and configuration. quartz/quartz.config.ts
:- Configured with
baseUrl: "140a"
so generated links work correctly under the/140a/
path. - Uses
ignorePatterns
to prevent Quartz from processing non-content files/folders found in the root (like.git
,.github
,README.md
, thequartz
folder itself, etc.).
- Configured with
quartz/content/
Directory: Contains symbolic links (created usingln -s ../<folder> <folder>
etc.) pointing to the actual notes folders and theindex.md
file located in the repository root (../
). These symlinks are committed to Git.- GitHub Actions (
.github/workflows/deploy.yml
):- Triggers on push to the
main
branch. - Checks out code, sets up Node, installs/builds Quartz (primarily verifying build integrity).
- Uses
peter-evans/repository-dispatch
to send adeploy-notes
event trigger to the Astro repository, authenticating with aDISPATCH_PAT
secret (Personal Access Token withrepo
scope).
- Triggers on push to the
- Contains the source Markdown notes (
-
Astro Site Repository (
pink10000/pink10000.github.io
)- Contains the source code for the main Astro website.
- Includes a
.nojekyll
file in the root to prevent default GitHub Pages Jekyll processing. - GitHub Pages Settings: Configured to deploy using the
GitHub Actions
source. - GitHub Actions (
.github/workflows/deploy-astro.yml
or similar):- Triggers on push to
main
OR on receiving therepository_dispatch
event (typedeploy-notes
) from the Notes Repository. - Build Job:
- Checks out the Astro site code.
- Checks out the Notes repository code into a subfolder (e.g.,
./external/math140a
), using aNOTES_DEPLOY_KEY
secret (SSH private key for a Deploy Key setup on the Notes repo). This checkout includes the symlinks withinexternal/math140a/quartz/content/
. - Sets up Node.js.
- Builds Quartz: Runs
npm install
andnpx quartz build
within the./external/math140a/quartz
directory. Quartz follows the checked-out symlinks to find the content in./external/math140a/
and builds the static notes site into./external/math140a/quartz/public/
. - Builds Astro: Installs Astro dependencies and runs
astro build
, generating the main site into./dist
. - Combines Sites: Creates a
./dist/140a
directory and copies the contents of the built Quartz site (./external/math140a/quartz/public/*
) into it. - Uploads Artifact: Uses
actions/upload-pages-artifact
to upload the entire./dist
folder (now containing both the Astro site files and the/140a
notes subdirectory) as thegithub-pages
artifact.
- Deploy Job:
- Uses
actions/deploy-pages
to take thegithub-pages
artifact uploaded by thebuild
job and deploy it to the GitHub Pages environment.
- Uses
- Triggers on push to
Local Preview (Notes Repository)
- Navigate to the repository root locally.
- Ensure the symlinks exist inside
quartz/content/
pointing to../<folder>
. - Navigate into the
quartz
directory (cd quartz
). - Run
npm install
(if needed). - Run
npx quartz create
(ornpx quartz build --serve
). - Open
http://localhost:8080
in a browser. - Quartz uses the symlinks to find content in the root, and hot-reloading works when editing the original notes files.
Result
- The main Astro website is available at
https://pink10000.github.io/
. - The published Quartz notes are available under
https://pink10000.github.io/140a/
. - Updates pushed to the
main
branch of the Notes repository automatically trigger a rebuild and deployment of both the notes and the main Astro site.
Last updated: {{ date }}