From bc2a0fbe3f4c012aedbc5aa7157c03a226efc2db Mon Sep 17 00:00:00 2001 From: MangoPig Date: Tue, 9 Dec 2025 19:23:28 +0000 Subject: [PATCH] Yes? --- .gitignore | 2 + .../frontend/.astro/content-assets.mjs | 1 + .../frontend/.astro/content-modules.mjs | 4 + 00-Lesson-Site/frontend/.astro/content.d.ts | 218 ++++++++++++++++++ .../frontend/.astro/data-store.json | 1 + 00-Lesson-Site/frontend/.astro/settings.json | 5 + 00-Lesson-Site/frontend/.astro/types.d.ts | 1 + ...astro_type_script_index_0_lang.QW52Ox2j.js | 1 + .../dist/_astro/changelog._xb0PRBH.css | 1 + .../frontend/dist/_astro/client.yL8JVs1M.js | 1 + .../frontend/dist/changelog/index.html | 82 +++++++ .../frontend/dist/fonts/Geist.woff2 | Bin 0 -> 63448 bytes .../frontend/dist/fonts/GeistMono.woff2 | Bin 0 -> 61068 bytes 00-Lesson-Site/frontend/dist/index.html | 46 ++++ .../frontend/dist/lessons/01-intro/index.html | 90 ++++++++ .../frontend/dist/lessons/index.html | 82 +++++++ .../frontend/dist/resources/index.html | 82 +++++++ 17 files changed, 617 insertions(+) create mode 100644 .gitignore create mode 100644 00-Lesson-Site/frontend/.astro/content-assets.mjs create mode 100644 00-Lesson-Site/frontend/.astro/content-modules.mjs create mode 100644 00-Lesson-Site/frontend/.astro/content.d.ts create mode 100644 00-Lesson-Site/frontend/.astro/data-store.json create mode 100644 00-Lesson-Site/frontend/.astro/settings.json create mode 100644 00-Lesson-Site/frontend/.astro/types.d.ts create mode 100644 00-Lesson-Site/frontend/dist/_astro/ClientRouter.astro_astro_type_script_index_0_lang.QW52Ox2j.js create mode 100644 00-Lesson-Site/frontend/dist/_astro/changelog._xb0PRBH.css create mode 100644 00-Lesson-Site/frontend/dist/_astro/client.yL8JVs1M.js create mode 100644 00-Lesson-Site/frontend/dist/changelog/index.html create mode 100644 00-Lesson-Site/frontend/dist/fonts/Geist.woff2 create mode 100644 00-Lesson-Site/frontend/dist/fonts/GeistMono.woff2 create mode 100644 00-Lesson-Site/frontend/dist/index.html create mode 100644 00-Lesson-Site/frontend/dist/lessons/01-intro/index.html create mode 100644 00-Lesson-Site/frontend/dist/lessons/index.html create mode 100644 00-Lesson-Site/frontend/dist/resources/index.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1dcef2d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +.env \ No newline at end of file diff --git a/00-Lesson-Site/frontend/.astro/content-assets.mjs b/00-Lesson-Site/frontend/.astro/content-assets.mjs new file mode 100644 index 0000000..2b8b823 --- /dev/null +++ b/00-Lesson-Site/frontend/.astro/content-assets.mjs @@ -0,0 +1 @@ +export default new Map(); \ No newline at end of file diff --git a/00-Lesson-Site/frontend/.astro/content-modules.mjs b/00-Lesson-Site/frontend/.astro/content-modules.mjs new file mode 100644 index 0000000..eca6f3d --- /dev/null +++ b/00-Lesson-Site/frontend/.astro/content-modules.mjs @@ -0,0 +1,4 @@ + +export default new Map([ +["src/content/lessons/01-intro.mdx", () => import("astro:content-layer-deferred-module?astro%3Acontent-layer-deferred-module=&fileName=src%2Fcontent%2Flessons%2F01-intro.mdx&astroContentModuleFlag=true")]]); + \ No newline at end of file diff --git a/00-Lesson-Site/frontend/.astro/content.d.ts b/00-Lesson-Site/frontend/.astro/content.d.ts new file mode 100644 index 0000000..7d65a1e --- /dev/null +++ b/00-Lesson-Site/frontend/.astro/content.d.ts @@ -0,0 +1,218 @@ +declare module 'astro:content' { + interface Render { + '.mdx': Promise<{ + Content: import('astro').MDXContent; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + components: import('astro').MDXInstance<{}>['components']; + }>; + } +} + +declare module 'astro:content' { + export interface RenderResult { + Content: import('astro/runtime/server/index.js').AstroComponentFactory; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + } + interface Render { + '.md': Promise; + } + + export interface RenderedContent { + html: string; + metadata?: { + imagePaths: Array; + [key: string]: unknown; + }; + } +} + +declare module 'astro:content' { + type Flatten = T extends { [K: string]: infer U } ? U : never; + + export type CollectionKey = keyof AnyEntryMap; + export type CollectionEntry = Flatten; + + export type ContentCollectionKey = keyof ContentEntryMap; + export type DataCollectionKey = keyof DataEntryMap; + + type AllValuesOf = T extends any ? T[keyof T] : never; + type ValidContentEntrySlug = AllValuesOf< + ContentEntryMap[C] + >['slug']; + + export type ReferenceDataEntry< + C extends CollectionKey, + E extends keyof DataEntryMap[C] = string, + > = { + collection: C; + id: E; + }; + export type ReferenceContentEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}) = string, + > = { + collection: C; + slug: E; + }; + export type ReferenceLiveEntry = { + collection: C; + id: string; + }; + + /** @deprecated Use `getEntry` instead. */ + export function getEntryBySlug< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + // Note that this has to accept a regular string too, for SSR + entrySlug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + + /** @deprecated Use `getEntry` instead. */ + export function getDataEntryById( + collection: C, + entryId: E, + ): Promise>; + + export function getCollection>( + collection: C, + filter?: (entry: CollectionEntry) => entry is E, + ): Promise; + export function getCollection( + collection: C, + filter?: (entry: CollectionEntry) => unknown, + ): Promise[]>; + + export function getLiveCollection( + collection: C, + filter?: LiveLoaderCollectionFilterType, + ): Promise< + import('astro').LiveDataCollectionResult, LiveLoaderErrorType> + >; + + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + entry: ReferenceContentEntry, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + entry: ReferenceDataEntry, + ): E extends keyof DataEntryMap[C] + ? Promise + : Promise | undefined>; + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + slug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + collection: C, + id: E, + ): E extends keyof DataEntryMap[C] + ? string extends keyof DataEntryMap[C] + ? Promise | undefined + : Promise + : Promise | undefined>; + export function getLiveEntry( + collection: C, + filter: string | LiveLoaderEntryFilterType, + ): Promise, LiveLoaderErrorType>>; + + /** Resolve an array of entry references from the same collection */ + export function getEntries( + entries: ReferenceContentEntry>[], + ): Promise[]>; + export function getEntries( + entries: ReferenceDataEntry[], + ): Promise[]>; + + export function render( + entry: AnyEntryMap[C][string], + ): Promise; + + export function reference( + collection: C, + ): import('astro/zod').ZodEffects< + import('astro/zod').ZodString, + C extends keyof ContentEntryMap + ? ReferenceContentEntry> + : ReferenceDataEntry + >; + // Allow generic `string` to avoid excessive type errors in the config + // if `dev` is not running to update as you edit. + // Invalid collection names will be caught at build time. + export function reference( + collection: C, + ): import('astro/zod').ZodEffects; + + type ReturnTypeOrOriginal = T extends (...args: any[]) => infer R ? R : T; + type InferEntrySchema = import('astro/zod').infer< + ReturnTypeOrOriginal['schema']> + >; + + type ContentEntryMap = { + + }; + + type DataEntryMap = { + "lessons": Record; + + }; + + type AnyEntryMap = ContentEntryMap & DataEntryMap; + + type ExtractLoaderTypes = T extends import('astro/loaders').LiveLoader< + infer TData, + infer TEntryFilter, + infer TCollectionFilter, + infer TError + > + ? { data: TData; entryFilter: TEntryFilter; collectionFilter: TCollectionFilter; error: TError } + : { data: never; entryFilter: never; collectionFilter: never; error: never }; + type ExtractDataType = ExtractLoaderTypes['data']; + type ExtractEntryFilterType = ExtractLoaderTypes['entryFilter']; + type ExtractCollectionFilterType = ExtractLoaderTypes['collectionFilter']; + type ExtractErrorType = ExtractLoaderTypes['error']; + + type LiveLoaderDataType = + LiveContentConfig['collections'][C]['schema'] extends undefined + ? ExtractDataType + : import('astro/zod').infer< + Exclude + >; + type LiveLoaderEntryFilterType = + ExtractEntryFilterType; + type LiveLoaderCollectionFilterType = + ExtractCollectionFilterType; + type LiveLoaderErrorType = ExtractErrorType< + LiveContentConfig['collections'][C]['loader'] + >; + + export type ContentConfig = typeof import("../src/content.config.mjs"); + export type LiveContentConfig = never; +} diff --git a/00-Lesson-Site/frontend/.astro/data-store.json b/00-Lesson-Site/frontend/.astro/data-store.json new file mode 100644 index 0000000..92c9195 --- /dev/null +++ b/00-Lesson-Site/frontend/.astro/data-store.json @@ -0,0 +1 @@ +[["Map",1,2,7,8],"meta::meta",["Map",3,4,5,6],"astro-version","5.16.4","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":true,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":false,\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[[null,{\"themes\":[\"vitesse-dark\"]}]],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true,\"allowedDomains\":[]},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"liveContentCollections\":false,\"csp\":false,\"staticImportMetaEnv\":false,\"chromeDevtoolsWorkspace\":false,\"failOnPrerenderConflict\":false,\"svgo\":false},\"legacy\":{\"collections\":false}}","lessons",["Map",9,10],"01-intro",{"id":9,"data":11,"body":15,"filePath":16,"digest":17,"legacyId":18,"deferredRender":19},{"title":12,"description":13,"style":14},"Introduction to Web Dev","Setting up the environment","type-1","{/* Blockquotes */}\nimport Ganbatte from \"../../components/Post/Blockquotes/Ganbatte.astro\";\nimport Important from \"../../components/Post/Blockquotes/Important.astro\";\nimport Info from \"../../components/Post/Blockquotes/Info.astro\";\nimport QA from \"../../components/Post/Blockquotes/QA.astro\";\n\nimport Spoiler from \"../../components/Post/Spoiler.tsx\";\n\n# Hosting a Large Language Model (LLM) Locally\n\n\u003Cpicture>\n \u003Cimg src=\"https://pic.mangopig.tech/i/879aaccd-6822-423f-883a-74cf5ba598e7.jpg\" alt=\"Web Development Illustration\" />\n\u003C/picture>\n\n\u003Cblockquote class=\"lesson-meta\">\n \u003Cspan>Lesson 01\u003C/span>\n \u003Cspan>Created at: **December 2025**\u003C/span>\n \u003Cspan>Last Updated: **December 2025**\u003C/span>\n\u003C/blockquote>\n\n\u003CGanbatte toc=\"Lesson Objectives\" tocLevel=\"1\" imageAlt=\"MangoPig Ganbatte\">\n ## Lesson Objectives\n\n - Setting up your Developer Environment\n - Setting up a isolated Docker environment for hosting LLMs\n - Fetching the AI model\n - Converting the model to GGUF format\n - Quantizing the model for better performance\n - Hosting a basic LLM model with llama.cpp locally\n - (To Be Added) Making a volume mount to persist LLM data across container restarts\n - (To Be Added) Tagging the Docker Image for future reuse\n\n\u003C/Ganbatte>\n\n\u003Csection data-toc=\"Setting Up Developer Environment\" data-toc-level=\"1\">\n \u003Ch2>Setting Up Your Developer Environment\u003C/h2>\n \u003Csection data-toc=\"WSL\" data-toc-level=\"2\">\n \u003Ch3>Setting Up WSL (Windows Subsystem for Linux)\u003C/h3>\n To set up WSL on your Windows machine, follow these steps:\n 1. Open PowerShell as Administrator.\n 2. Run the following command to enable WSL and install a Linux distribution (Ubuntu is recommended):\n\n ```zsh frame=\"none\"\n wsl --install\n ```\n\n 3. Restart your computer when prompted.\n 4. After restarting, open the Ubuntu application from the Start menu and complete the initial setup by creating a user account.\n 5. Update your package lists and upgrade installed packages by running:\n\n ```zsh frame=\"none\"\n sudo apt update && sudo apt upgrade -y\n ```\n \u003C/section>\n\n \u003Csection data-toc=\"ZSH\" data-toc-level=\"2\">\n \u003Ch3>Getting Your Environment Ready\u003C/h3>\n\n ```zsh frame=\"none\"\n sudo apt install -y git make curl sudo zsh\n ```\n\n ```zsh frame=\"none\"\n mkdir -p ~/Config/Dotfiles\n git clone https://git.mangopig.tech/MangoPig/Dot-Zsh.git ~/Config/Dotfiles/Zsh\n cd ~/Config/Dotfiles/Zsh\n ```\n\n Whenever there's a prompt to ask to install just confirm with `y` and hit enter.\n\n ```zsh frame=\"none\"\n make setup\n ```\n\n Restart the shell to finalize the zsh setup:\n\n ```zsh frame=\"none\"\n zsh\n ```\n\n With the above commands, you should have a zsh environment, coding language and Docker setup. We will get more in details of all the tools with this setup as we work through the lessons. \n \u003C/section>\n\n \u003Csection data-toc=\"Docker\" data-toc-level=\"2\">\n \u003Ch3>Installing Docker\u003C/h3>\n Docker should already be installed with the above steps. To verify, run:\n\n ```zsh frame=\"none\"\n docker --version\n ```\n and try to run a test container:\n\n ```zsh frame=\"none\"\n docker run hello-world\n ```\n\n If you run into permissions issues, you may need to add your user to the docker group:\n\n ```zsh frame=\"none\"\n sudo usermod -aG docker $USER\n ```\n\n Then restart the shell or log out and back in by doing:\n\n ```zsh frame=\"none\"\n zsh\n ```\n\n \u003C/section>\n\u003C/section>\n\n\u003Csection data-toc=\"Docker Environment Setup\" data-toc-level=\"1\">\n \u003Ch2>Setting Up the Isolated Docker Environment for Hosting LLMs\u003C/h2>\n Now that we have the local environment ready, we want to set up an isolated Docker environment for hosting LLMs so that it doesn't interfere with our main system.\n\n \u003Csection data-toc=\"What is Docker?\" data-toc-level=\"2\">\n \u003Ch3>What is Docker?\u003C/h3>\n Docker is a platform that allows you to package your application and its dependencies into containers.\n\n \u003CInfo>\n \u003Cspan>You can find more Docker Images on \u003Ca href=\"https://hub.docker.com/\">Docker Hub\u003C/a>.\u003C/span>\n \u003C/Info>\n\n \u003Csection data-doc=\"Installing Docker\" data-doc-level=\"3\">\n \u003Ch4>Installing Docker\u003C/h4>\n \n \u003C/section>\n\n \u003C/section>\n\n \u003Csection data-toc=\"Creating Docker Container\" data-toc-level=\"2\">\n \u003Ch3>Creating the Docker Container\u003C/h3>\n\n For our current purpose, we will be using the official \u003Ca href=\"https://hub.docker.com/r/nvidia/cuda/tags\">NVIDIA Docker image\u003C/a> so that we can leverage CUDA for GPU acceleration if available.\n\n We will create the Docker container and make it interactive by running:\n\n ```zsh frame=\"none\"\n docker run --gpus all -it --name llm-container -p 8080:8080 nvidia/cuda:13.0.2-cudnn-devel-ubuntu24.04 /bin/bash\n ```\n\n \u003CInfo>\n - `--gpus` all enables GPU support for the container. \n - `--it` makes the container interactive, allowing you to run commands inside it.\n - `--name` llm-container gives the container a name for easier reference.\n - `-p 8080:8080` = `-p HOST:CONTAINER` maps port 8080 on your host machine to port 8080 inside the container. This is useful if you plan to run a server inside the container and want to access it from your host machine.\n - `nvidia/cuda:13.0.2-cudnn-runtime-ubuntu24.04` specifies the Docker image to use.\n - `/bin/bash` starts a bash shell inside the container.\n \u003C/Info>\n\n Once you are inside the container, you can proceed to setup the environment like we did before in the \u003Ca href=\"#setting-up-developer-environment\">WSL section\u003C/a>.\n\n \u003CInfo>\n There's a few things you need to do before you can setup the Environment like we did before:\n 1. Update the package lists and install necessary packages:\n ```zsh frame=\"none\"\n apt update && apt install -y git make curl sudo zsh\n ```\n\n 2. Remove the default user (usually `ubuntu`) to avoid permission issues:\n ```zsh frame=\"none\"\n userdel -r ubuntu\n ```\n\n 3. Run my provisional script to setup users and permissions:\n ```zsh frame=\"none\"\n bash \u003C(curl -s https://git.mangopig.tech/mangopig/Dot-Zsh/raw/branch/main/scripts/provision.sh)\n ```\n You should create your own user when prompted, make it have 1000 as UID and GID for consistency and please remember the password you set here as you'll need it to use `sudo` later on.\n\n 4. Now change users by doing: **(replace `your-username` with the username you created)**\n ```zsh frame=\"none\"\n su - your-username\n ```\n\n OR you can exit the container and reattach with the new user by doing:\n ```zsh frame=\"none\"\n exit\n docker start llm-container\n docker exec -it --user your-username llm-container /bin/zsh\n ```\n Press `q` when they prompt you to create a zsh configuration file.\n\n 5. Now you can proceed to setup zsh and the rest of the environment as shown in the [previous section](#zsh).\n\n \u003C/Info>\n\n Try to do this on your own first! If you get stuck, you can check the solution below.\n\n \u003CSpoiler client:idle >\n ## Solution\n\n 1. Update the package lists and install necessary packages:\n ```zsh frame=\"none\"\n apt update && apt install -y git make curl sudo zsh\n ```\n\n 2. Remove the default user (usually `ubuntu`) to avoid permission issues:\n ```zsh frame=\"none\"\n userdel -r ubuntu\n ```\n\n 3. Run my provisional script to setup users and permissions:\n ```zsh frame=\"none\"\n bash \u003C(curl -s https://git.mangopig.tech/mangopig/Dot-Zsh/raw/branch/main/scripts/provision.sh)\n ```\n You should create your own user when prompted, make it have 1000 as UID and GID for consistency and please remember the password you set here as you'll need it to use `sudo` later on.\n\n 4. Now change users by doing: **(replace `your-username` with the username you created)**\n ```zsh frame=\"none\"\n su - your-username\n ```\n\n OR you can exit the container and reattach with the new user by doing:\n ```zsh frame=\"none\"\n exit\n docker start llm-container\n docker exec -it --user your-username llm-container /bin/zsh\n ```\n Press `q` when they prompt you to create a zsh configuration file.\n\n 5. Go into the dotfiles directory and setup zsh:\n ```zsh frame=\"none\"\n cd ~/Config/Dot-Zsh\n make base && \\\n make python && \\\n make clean && \\\n make stow\n ```\n\n 6. Restart the shell to finalize the zsh setup:\n ```zsh frame=\"none\"\n zsh\n ```\n\n 7. Verify that Pyenv and Miniforge is working by:\n ```zsh frame=\"none\"\n pyenv --version\n conda --version\n ```\n \u003C/Spoiler>\n \u003C/section>\n \n\u003C/section>\n\n\u003Csection data-toc=\"Python Setup\" data-toc-level=\"1\">\n \u003Ch2>Setting Up Python Environment\u003C/h2>\n Now that we have the Docker container set up, we can proceed to set up the environment to run llama.cpp inside the container.\n\n We have setup `pyenv` and `Miniforge` as part of the zsh setup. You can verify that they are working by running:\n\n ```zsh frame=\"none\"\n pyenv --version\n conda --version\n ```\n\n `pyenv` allows us to manage multiple Python versions easily. We can easily install different versions of Python and Conda environments as needed for different projects.\n\n `conda` (via Miniforge) allows us to create isolated Python environments, which is helpful for making sure that the dependencies for llama.cpp do not interfere with other projects.\n\n Let's first create a directory for llama.cpp and navigate into it:\n\n ```zsh frame=\"none\"\n mkdir -p ~/Projects/llama.cpp\n cd ~/Projects/llama.cpp\n ```\n\n Now, let's clone the llama.cpp repository:\n\n ```zsh frame=\"none\"\n git clone https://github.com/ggerganov/llama.cpp.git .\n ```\n\n \u003CInfo>\n - You can also the contents of the repository with `ls -la`\n - The `.` at the end of the git clone command ensures that the contents of the repository are cloned directly into the current directory.\n - For convenience, you can find the official llama.cpp repository at \u003Ca href=\"https://github.com/ggml-org/llama.cpp?tab=readme-ov-file\">llama.cpp GitHub\u003C/a>\n \u003C/Info>\n\n With the repository cloned, we can now proceed to build the llama.cpp.\n\n We first use `cmake` to configure the build system. It's like telling the app what our computer environment looks like and what options we want to enable.\n\n ```zsh frame=\"none\"\n cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_EXAMPLES=ON -DLLAMA_BUILD_SERVER=ON\n ```\n\n \u003CInfo>\n - `-S .` tells cmake where to find the source files (in this case, the current directory).\n - `-B build` specifies where all the temperary build files will go (in a folder named `build`).\n - `-G Ninja` tells cmake to use the Ninja build system.\n - `-DCMAKE_BUILD_TYPE=Release` sets the build type to Release for optimized performance.\n - `-DCMAKE_INSTALL_PREFIX=/your/install/dir` specifies where to install the built files. You can change this to your desired installation path.\n - `-DLLAMA_BUILD_TESTS=OFF` disables building tests.\n - `-DLLAMA_BUILD_EXAMPLES=ON` enables building example programs.\n - `-DLLAMA_BUILD_SERVER=ON` enables building the server component.\n \u003C/Info>\n\n Now we can build the project, this step is basically taking what we told cmake to do and actually making it into executable files.\n\n ```zsh frame=\"none\"\n cmake --build build --config Release -j $(nproc)\n ```\n\n \u003CInfo>\n - `--build build` tells cmake to build the project using the files in the `build` directory. (where we set with -B in the previous step)\n - `--config Release` specifies that we want to build the Release version.\n - `-j $(nproc)` tells cmake to use all available CPU cores for faster building.\n - `$(nproc)` is a command that returns the number of processing units available.\n \u003C/Info>\n\n After we are doing building, the binaries will be located in the `build/bin` directory. We want to move it to a more accessible location (`/usr/local` that we specified earlier), so we can run it easily. We can do this by running:\n\n ```zsh frame=\"none\"\n sudo cmake --install build && \\\n sudo ldconfig\n ```\n\n \u003CInfo>\n - `--install build` tells cmake to install the built files from the `build` directory to the location we specified earlier with `-DCMAKE_INSTALL_PREFIX`.\n - `sudo ldconfig` updates the system's library cache to recognize the newly installed binaries.\n \u003C/Info>\n\n Now you should be able to run the `llama.cpp` binary from anywhere, you can check what llama.cpp options are available by running:\n\n ```zsh frame=\"none\"\n ls /usr/local/bin\n ```\n\n ```zsh frame=\"none\"\n 󰡯 bat 󰡯 llama-eval-callback 󰡯 llama-lookup 󰡯 llama-save-load-state\n 󰡯 convert_hf_to_gguf.py 󰡯 llama-export-lora 󰡯 llama-lookup-create 󰡯 llama-server\n 󰡯 fd 󰡯 llama-finetune 󰡯 llama-lookup-merge 󰡯 llama-simple\n 󰡯 llama-batched 󰡯 llama-gen-docs 󰡯 llama-lookup-stats 󰡯 llama-simple-chat\n 󰡯 llama-batched-bench 󰡯 llama-gguf 󰡯 llama-mtmd-cli 󰡯 llama-speculative\n 󰡯 llama-bench 󰡯 llama-gguf-hash 󰡯 llama-parallel 󰡯 llama-speculative-simple\n 󰡯 llama-cli 󰡯 llama-gguf-split 󰡯 llama-passkey 󰡯 llama-tokenize\n 󰡯 llama-convert-llama2c-to-ggml 󰡯 llama-idle 󰡯 llama-perplexity 󰡯 llama-tts\n 󰡯 llama-cvector-generator 󰡯 llama-imatrix 󰡯 llama-quantize\n 󰡯 llama-diffusion-cli 󰡯 llama-logits 󰡯 llama-retrieval\n 󰡯 llama-embedding 󰡯 llama-lookahead 󰡯 llama-run\n ```\n\n We can further verify whether we can run `llama.cpp` by checking its version:\n\n ```zsh frame=\"none\"\n llama-cli --version\n ```\n\n ```zsh frame=\"none\"\n version: 7327 (c8554b66e)\n built with GNU 13.3.0 for Linux x86_64\n ```\n\n\u003C/section>\n\n\u003Csection data-toc=\"Getting the AI\" data-toc-level=\"1\">\n \u003Ch2>Fetching the AI Model Weights\u003C/h2>\n Now that we have llama.cpp set up, we need to get some AI models to run with it.\n The main place to get models is from [Hugging Face](https://huggingface.co/). You will need to create an account if you don't have one already.\n Once you have created an account, you should also setup your access token by going:\n \n \u003Cpicture>\n \u003Cimg src=\"https://pic.mangopig.tech/i/aea54c8e-9dd5-44c7-ab1f-6b57b076e7d8.webp\" alt=\"Hugging Face Access Token\" />\n \u003C/picture>\n\n And then give your token all the `read` permissions.\n\n \u003Cpicture>\n \u003Cimg src=\"https://pic.mangopig.tech/i/4360ee94-7f37-4897-91e9-882fd198b8b3.webp\" alt=\"Hugging Face Token Permissions\" />\n \u003C/picture>\n\n \u003CImportant>\n Make sure to copy the token somewhere safe and **DO NOT SHARE IT WITH ANYONE** or **USE IT DIRECTLY IN PUBLIC REPOSITORIES** and **DIRECTLY IN YOUR CODE**! Consult AIs on how to keep your tokens safe if you are unsure, but do not directly share them with the AI. \n \u003C/Important>\n\n Now that you have your token, you can use it to download models from Hugging Face. We will use `huggingface-cli` to do this. Let's first make the directory to store the models:\n\n ```zsh frame=\"none\"\n mkdir -p ~/Models\n cd ~/Models\n ```\n\n We can then install `huggingface-cli`\n\n ```zsh frame=\"none\"\n curl -LsSf https://hf.co/cli/install.sh | bash\n ```\n\n We will then login to Hugging Face using the CLI and provide our access token when prompted:\n\n ```zsh frame=\"none\"\n git config --global credential.helper store\n ```\n \n ```zsh frame=\"none\"\n hf auth login\n ```\n\n ```zsh frame=\"none\" \n _| _| _| _| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _|_|_|_| _|_| _|_|_| _|_|_|_|\n _| _| _| _| _| _| _| _|_| _| _| _| _| _| _| _|\n _|_|_|_| _| _| _| _|_| _| _|_| _| _| _| _| _| _|_| _|_|_| _|_|_|_| _| _|_|_|\n _| _| _| _| _| _| _| _| _| _| _|_| _| _| _| _| _| _| _|\n _| _| _|_| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _| _| _| _|_|_| _|_|_|_|\n\n To log in, `huggingface_hub` requires a token generated from https://huggingface.co/settings/tokens .\n Enter your token (input will not be visible): INPUT_YOUR_TOKEN_HERE\n Add token as git credential? [y/N]: y\n Token is valid (permission: fineGrained).\n The token `temp` has been saved to /home/mangopig/.cache/huggingface/stored_tokens\n Your token has been saved in your configured git credential helpers (store).\n Your token has been saved to /home/mangopig/.cache/huggingface/token\n Login successful.\n The current active token is: `temp`\n ```\n\n Now you can download models using the `hf download` command. I will be using the [`SmolLM3-3B`](https://huggingface.co/HuggingFaceTB/SmolLM3-3B) following this tutorial but if the model is too large for your system, you can choose a smaller model from Hugging Face, such as [`SmolLM2-1.7B`](https://huggingface.co/HuggingFaceTB/SmolLM2-1.7B) or [`SmolLM2-360M`](https://huggingface.co/HuggingFaceTB/SmolLM2-360M).\n\n ```zsh frame=\"none\"\n hf download HuggingFaceTB/SmolLM3-3B --local-dir ~/Models/SmolLM3-3B\n ```\n\n \u003CInfo>\n - `HuggingFaceTB/SmolLM3-3B` is the model identifier on Hugging Face. Get it from clicking the button to copy the name in the image below:\n \u003Cpicture>\n \u003Cimg src=\"https://pic.mangopig.tech/i/674714b4-736b-429c-b198-c9d57ba8bdee.webp\" alt=\"Hugging Face Model Page\" />\n \u003C/picture>\n - `--local-dir ~/Models/SmolLM3-3B` specifies where to save the downloaded model.\n\n You can find out more about what options you can use with `hf download` by doing `hf download --help`.\n\n ```zsh frame=\"none\"\n > hf download --help\n\n Usage: hf download [OPTIONS] REPO_ID [FILENAMES]...\n\n Download files from the Hub.\n\n Arguments:\n REPO_ID The ID of the repo (e.g. `username/repo-name`). [required]\n [FILENAMES]... Files to download (e.g. `config.json`,\n `data/metadata.jsonl`).\n\n Options:\n --repo-type [model|dataset|space]\n The type of repository (model, dataset, or\n space). [default: model]\n --revision TEXT Git revision id which can be a branch name,\n a tag, or a commit hash.\n --include TEXT Glob patterns to include from files to\n download. eg: *.json\n --exclude TEXT Glob patterns to exclude from files to\n download.\n --cache-dir TEXT Directory where to save files.\n --local-dir TEXT If set, the downloaded file will be placed\n under this directory. Check out https://hugg\n ingface.co/docs/huggingface_hub/guides/downl\n oad#download-files-to-local-folder for more\n details.\n --force-download / --no-force-download\n If True, the files will be downloaded even\n if they are already cached. [default: no-\n force-download]\n --dry-run / --no-dry-run If True, perform a dry run without actually\n downloading the file. [default: no-dry-run]\n --token TEXT A User Access Token generated from\n https://huggingface.co/settings/tokens.\n --quiet / --no-quiet If True, progress bars are disabled and only\n the path to the download files is printed.\n [default: no-quiet]\n --max-workers INTEGER Maximum number of workers to use for\n downloading files. Default is 8. [default:\n 8]\n --help Show this message and exit.\n ```\n \u003C/Info>\n\n With this, we have a model downloaded at `~/Models/SmolLM3-3B`. We can now proceed to try to run the model with llama.cpp.\n\n\u003C/section>\n\n\u003Csection data-toc=\"Converting Model to GGUF\" data-toc-level=\"1\">\n \u003Ch2>Converting the Model to GGUF\u003C/h2>\n \u003Cp>After downloading the model from Hugging Face, we need to convert it to the GGUF format so that llama.cpp can use it.\u003C/p>\n \u003Cp>Hugging Face usually store their models in the `.safetensors` format\u003C/p>\n \u003Cp>However, `llama.cpp` usually expect the models to be in the `.gguf` format.\u003C/p>\n \u003Cp>So we will need to convert the models to `.gguf`. Luckily, `llama.cpp` comes with a python script that helps us to do just that.\u003C/p>\n \u003Cp>We will first create a `Python` environment with `Conda` and activate it\u003C/p>\n\n ```zsh frame=\"none\"\n conda create -n llama-cpp python=3.10 -y\n conda activate llama-cpp\n python -m pip install --upgrade pip wheel setuptools\n ```\n\n \u003CInfo>\n - `conda create -n llama-cpp python=3.10 -y` creates a new conda environment named `llama-cpp` with Python 3.10 installed\n - `-n`: Specifies the name of the environment.\n - `python=3.10`: Specifies the Python version to install in the environment.\n - `-y`: Automatically confirms the creation.\n - `conda activate llama-cpp` activates the newly created conda environment.\n - `python -m pip install --upgrade pip wheel setuptools`\n - We are updating `pip`, `wheel`, and `setuptools`\n - `pip`: The package installer for Python. Similar to `npm` and `go get` in other languages.\n - `wheel`: A built-package format for Python.\n - `setuptools`: A package development and distribution library for Python.\n \u003C/Info>\n\n \u003Cp>`conda` is used to isolate the dependencies needed for the conversion process so that it doesn't interfere with other projects.\u003C/p>\n \u003Cp>We will then install the dependencies for `llama.cpp`\u003C/p>\n\n ```zsh frame=\"none\"\n pip install --upgrade -r ~/Projects/llama.cpp/requirements/requirements-convert_hf_to_gguf.txt\n ```\n\n \u003CInfo>\n - `pip install`: Installs Python packages.\n - `--upgrade`: Upgrades the packages to the latest versions.\n - `-r`: Specifies that we are installing packages from a requirements file.\n - `~/Projects/llama.cpp/requirements/requirements-convert_hf_to_gguf.txt`: The path to the requirements file that contains the list of packages needed for converting models to GGUF format.\n \u003C/Info>\n\n Nice! Now we are ready to convert the model to GGUF format. We can do this by running the conversion script provided by `llama.cpp`\n\n ```zsh frame=\"none\"\n python ~/Projects/llama.cpp/convert_hf_to_gguf.py \\\n ~/Models/SmolLM3-3B \\\n --outfile ~/Models/SmolLM3-3B/SmolLM3-3B.gguf\n ```\n\n \u003CInfo>\n - `python ~/Projects/llama.cpp/convert_hf_to_gguf.py`: `python` runs the conversion script located at `~/Projects/llama.cpp/scripts/convert_hf_to_gguf.py`.\n - `~/Models/SmolLM3-3B`: Specifies the path to the downloaded model in Hugging Face format.\n - `--outfile ~/Models/SmolLM3-3B/SmolLM3-3B.gguf`: Specifies where to save the converted model in GGUF format.\n \u003C/Info>\n\n When you see a similar output to:\n\n ```zsh frame=\"none\"\n INFO:hf-to-gguf:Model successfully exported to SmolLM3-3B.gguf\n ```\n\n Then you have succeeded in converting the model to GGUF format!\n\u003C/section>\n\n\u003Csection data-toc=\"Quantizing the Model\" data-toc-level=\"1\">\n \u003Ch2>Quantizing the Model for Better Performance\u003C/h2>\n \u003Cp>Quantization is a technique used to reduce the size of the model and improve inference speed and VRAM requirements by compressing and reducing the model's weight\u003C/p>\n\n We can learn what quantization `llama.cpp` supports by running:\n\n ```zsh frame=\"none\"\n llama-quantize --help\n ```\n\n ```zsh frame=\"none\"\n usage: llama-quantize [--help] [--allow-requantize] [--leave-output-tensor] [--pure] [--imatrix] [--include-weights]\n [--exclude-weights] [--output-tensor-type] [--token-embedding-type] [--tensor-type] [--prune-layers] [--keep-split] [--override-kv]\n model-f32.gguf [model-quant.gguf] type [nthreads]\n\n --allow-requantize: Allows requantizing tensors that have already been quantized. Warning: This can severely reduce quality compared to quantizing from 16bit or 32bit\n --leave-output-tensor: Will leave output.weight un(re)quantized. Increases model size but may also increase quality, especially when requantizing\n --pure: Disable k-quant mixtures and quantize all tensors to the same type\n --imatrix file_name: use data in file_name as importance matrix for quant optimizations\n --include-weights tensor_name: use importance matrix for this/these tensor(s)\n --exclude-weights tensor_name: use importance matrix for this/these tensor(s)\n --output-tensor-type ggml_type: use this ggml_type for the output.weight tensor\n --token-embedding-type ggml_type: use this ggml_type for the token embeddings tensor\n --tensor-type TENSOR=TYPE: quantize this tensor to this ggml_type. example: --tensor-type attn_q=q8_0\n Advanced option to selectively quantize tensors. May be specified multiple times.\n --prune-layers L0,L1,L2...comma-separated list of layer numbers to prune from the model\n Advanced option to remove all tensors from the given layers\n --keep-split: will generate quantized model in the same shards as input\n --override-kv KEY=TYPE:VALUE\n Advanced option to override model metadata by key in the quantized model. May be specified multiple times.\n Note: --include-weights and --exclude-weights cannot be used together\n\n Allowed quantization types:\n 2 or Q4_0 : 4.34G, +0.4685 ppl @ Llama-3-8B\n 3 or Q4_1 : 4.78G, +0.4511 ppl @ Llama-3-8B\n 38 or MXFP4_MOE : MXFP4 MoE\n 8 or Q5_0 : 5.21G, +0.1316 ppl @ Llama-3-8B\n 9 or Q5_1 : 5.65G, +0.1062 ppl @ Llama-3-8B\n 19 or IQ2_XXS : 2.06 bpw quantization\n 20 or IQ2_XS : 2.31 bpw quantization\n 28 or IQ2_S : 2.5 bpw quantization\n 29 or IQ2_M : 2.7 bpw quantization\n 24 or IQ1_S : 1.56 bpw quantization\n 31 or IQ1_M : 1.75 bpw quantization\n 36 or TQ1_0 : 1.69 bpw ternarization\n 37 or TQ2_0 : 2.06 bpw ternarization\n 10 or Q2_K : 2.96G, +3.5199 ppl @ Llama-3-8B\n 21 or Q2_K_S : 2.96G, +3.1836 ppl @ Llama-3-8B\n 23 or IQ3_XXS : 3.06 bpw quantization\n 26 or IQ3_S : 3.44 bpw quantization\n 27 or IQ3_M : 3.66 bpw quantization mix\n 12 or Q3_K : alias for Q3_K_M\n 22 or IQ3_XS : 3.3 bpw quantization\n 11 or Q3_K_S : 3.41G, +1.6321 ppl @ Llama-3-8B\n 12 or Q3_K_M : 3.74G, +0.6569 ppl @ Llama-3-8B\n 13 or Q3_K_L : 4.03G, +0.5562 ppl @ Llama-3-8B\n 25 or IQ4_NL : 4.50 bpw non-linear quantization\n 30 or IQ4_XS : 4.25 bpw non-linear quantization\n 15 or Q4_K : alias for Q4_K_M\n 14 or Q4_K_S : 4.37G, +0.2689 ppl @ Llama-3-8B\n 15 or Q4_K_M : 4.58G, +0.1754 ppl @ Llama-3-8B\n 17 or Q5_K : alias for Q5_K_M\n 16 or Q5_K_S : 5.21G, +0.1049 ppl @ Llama-3-8B\n 17 or Q5_K_M : 5.33G, +0.0569 ppl @ Llama-3-8B\n 18 or Q6_K : 6.14G, +0.0217 ppl @ Llama-3-8B\n 7 or Q8_0 : 7.96G, +0.0026 ppl @ Llama-3-8B\n 1 or F16 : 14.00G, +0.0020 ppl @ Mistral-7B\n 32 or BF16 : 14.00G, -0.0050 ppl @ Mistral-7B\n 0 or F32 : 26.00G @ 7B\n COPY : only copy tensors, no quantizing\n ```\n\n \u003CInfo>\n For a line `2 or Q4_0 : 4.34G, +0.4685 ppl @ Llama-3-8B`\n - `2` and `Q4_0` are the identifiers you can use to specify the quantization type.\n - `4.34G` indicates the size of the quantized model.\n - `+0.4685 ppl` indicates the increase in perplexity (a measure of model performance; lower is better) when using this quantization type\n \u003C/Info>\n\n \u003CQA>\n \u003Cspan slot=\"question\">How do I know how big of a model size can I fit in my computer\u003C/span>\n \u003Cp>It depends on whether you are running inference on your \u003Cstrong>CPU (System RAM)\u003C/strong> or \u003Cstrong>GPU (VRAM)\u003C/strong>.\u003C/p>\n \n \u003Cp>For CPU inference, you generally want the model size to be around 2x the size of your system RAM for comfortable operation. For example, if you have 16GB of RAM, you should aim for models that are around 8GB or smaller.\u003C/p>\n\n **Size (GB) ≈ (Parameters (Billions) × Bits Per Weight) / 8 + Overhead**\n\n - Bits Per Weight (bpw):\n - Qx = x bits per weight\n - Qx_K = K quants will keep some important weights at higher precision (Q4_K ≈ 5 bits per weight, Q5_K ≈ 6 bits per weight, Q6_K ≈ 7 bits per weight)\n - Qx_K_S = Small K quants\n - Qx_K_M = Medium K quants\n - Qx_K_L = Large K quants\n - IQx = Integer Quantization with x bits per weight, bpw is on the chart\n - TQx = Ternary Quantization with x bits per weight, bpw is on the chart\n \u003C/QA>\n\n **TO BE ADDED** - Quantization Calculator\n\n Once we have decided what quantization type to use, we can proceed to quantize the model by running:\n\n ```zsh frame=\"none\"\n llama-quantize \\\n ~/Models/SmolLM3-3B/SmolLM3-3B.gguf \\\n ~/Models/SmolLM3-3B/SmolLM3-3B.q4.gguf \\\n q4_0\n 4\n ```\n\n \u003CInfo>\n - `llama-quantize`: The command to run the quantization process.\n - `~/Models/SmolLM3-3B/SmolLM3-3B.gguf`: The path to the original GGUF model that we want to quantize.\n - `~/Models/SmolLM3-3B/SmolLM3-3B.q4.gguf`: The path where we want to save the quantized model.\n - `q4_0`: The quantization type we want to use (in this case, Q4_0).\n - `4`: Number of threads to use for quantization (optional, defaults to number of CPU cores).\n \u003C/Info>\n\n \u003Cp>After the quantization is complete, you should see a new file named `SmolLM3-3B.q4.gguf` in the model directory.\u003C/p>\n \u003Cp>We can now learn how to serve the model with `llama.cpp`\u003C/p>\n\n\u003C/section>\n\n\u003Csection data-toc=\"Inferencing the Model\" data-toc-level=\"1\">\n \u003Ch2>Inferencing the Model\u003C/h2>\n \u003Cp>Now that we have the model ready, we can proceed to run inference with it using `llama.cpp`.\u003C/p>\n \u003Cp>`llama.cpp` provides us with multiple ways of inferencing, we can: \u003C/p>\n - Use the command line interface (CLI) to interact with the model directly from the terminal. (llama-cli)\n - Use the server mode to host the model and interact with it via HTTP requests. (llama-server)\n\n For this tutorial, we will use the `llama-server` to serve the model.\n\n To start the server with our quantized model, we can run:\n\n ```zsh frame=\"none\"\n llama-server \\\n --model ~/Models/SmolLM3-3B/SmolLM3-3B.q4.gguf \\\n --host 0.0.0.0 \\\n --port 8080\n ```\n\n \u003CInfo>\n - `llama-server`: The command to start the server.\n - `--model ~/Models/SmolLM3-3B/SmolLM3-3B.q4.gguf`: Specifies the path to the quantized model we want to serve.\n - `--host 0.0.0.0`: This makes the server accessible from any IP address.\n - `--port 8080`: Specifies the port on which the server will listen for incoming requests.\n You can read all the options you can customize to run the server [here](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md)\n \u003C/Info>\n\n As soon as you see this\n\n ```zsh frame=\"none\"\n main: model loaded\n main: server is listening on http://0.0.0.0:8080\n main: starting the main loop...\n ```\n\n Your server is up and running! You can now interact with the model by going to [`http://localhost:8080`](http://localhost:8080) in your web browser or using tools like `curl` for API requests.\n\n Open another terminal window and use this example for API request using `curl`:\n\n ```zsh frame=\"none\"\n curl \\\n --request POST \\\n --url http://localhost:8080/completion \\\n --header \"Content-Type: application/json\" \\\n --data '{\"prompt\": \"Building a website can be done in 10 simple steps:\",\"n_predict\": 128}'\n ```\n\n \u003CInfo>\n - `--request POST`: Specifies that we are making a POST request. (We will get into REST HTTP APIs in future tutorials)\n - `--url http://localhost:8080/completion`: The URL of the server endpoint for completions.\n - `--header \"Content-Type: application/json\"`: Sets the content type to JSON.\n - `--data '{...}'`: The JSON payload containing the prompt and other parameters for the model.\n\n Read more about the API requests [here](https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md#using-with-curl)\n \u003C/Info>\n \n\u003C/section>","src/content/lessons/01-intro.mdx","26a311c33fd00bb2","01-intro.mdx",true] \ No newline at end of file diff --git a/00-Lesson-Site/frontend/.astro/settings.json b/00-Lesson-Site/frontend/.astro/settings.json new file mode 100644 index 0000000..9e451da --- /dev/null +++ b/00-Lesson-Site/frontend/.astro/settings.json @@ -0,0 +1,5 @@ +{ + "_variables": { + "lastUpdateCheck": 1765150810247 + } +} \ No newline at end of file diff --git a/00-Lesson-Site/frontend/.astro/types.d.ts b/00-Lesson-Site/frontend/.astro/types.d.ts new file mode 100644 index 0000000..f964fe0 --- /dev/null +++ b/00-Lesson-Site/frontend/.astro/types.d.ts @@ -0,0 +1 @@ +/// diff --git a/00-Lesson-Site/frontend/dist/_astro/ClientRouter.astro_astro_type_script_index_0_lang.QW52Ox2j.js b/00-Lesson-Site/frontend/dist/_astro/ClientRouter.astro_astro_type_script_index_0_lang.QW52Ox2j.js new file mode 100644 index 0000000..bc4301d --- /dev/null +++ b/00-Lesson-Site/frontend/dist/_astro/ClientRouter.astro_astro_type_script_index_0_lang.QW52Ox2j.js @@ -0,0 +1 @@ +const $={},y="data-astro-transition-persist",te=["data-astro-transition","data-astro-transition-fallback"],O=new Set;function q(e){const t=e.src?new URL(e.src,location.href).href:e.textContent;return O.has(t)?!0:(O.add(t),!1)}function ne(e){for(const t of e.scripts)!t.hasAttribute("data-astro-rerun")&&q(t)&&(t.dataset.astroExec="")}function oe(e){const t=document.documentElement,n=[...t.attributes].filter(({name:o})=>(t.removeAttribute(o),te.includes(o)));[...e.documentElement.attributes,...n].forEach(({name:o,value:r})=>t.setAttribute(o,r))}function re(e){for(const t of Array.from(document.head.children)){const n=ae(t,e);n?n.remove():t.remove()}document.head.append(...e.head.children)}function ie(e,t){t.replaceWith(e);for(const n of t.querySelectorAll(`[${y}]`)){const o=n.getAttribute(y),r=e.querySelector(`[${y}="${o}"]`);r&&(r.replaceWith(n),r.localName==="astro-island"&&ce(n)&&!le(n,r)&&(n.setAttribute("ssr",""),n.setAttribute("props",r.getAttribute("props"))))}U(e)}function U(e){e.querySelectorAll("template[shadowrootmode]").forEach(t=>{const n=t.getAttribute("shadowrootmode"),o=t.parentNode;if((n==="closed"||n==="open")&&o instanceof HTMLElement){if(o.shadowRoot){t.remove();return}const r=o.attachShadow({mode:n});r.appendChild(t.content),t.remove(),U(r)}})}const se=()=>{const e=document.activeElement;if(e?.closest(`[${y}]`)){if(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement){const t=e.selectionStart,n=e.selectionEnd;return()=>L({activeElement:e,start:t,end:n})}return()=>L({activeElement:e})}else return()=>L({activeElement:null})},L=({activeElement:e,start:t,end:n})=>{e&&(e.focus(),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&(typeof t=="number"&&(e.selectionStart=t),typeof n=="number"&&(e.selectionEnd=n)))},ae=(e,t)=>{const n=e.getAttribute(y),o=n&&t.head.querySelector(`[${y}="${n}"]`);if(o)return o;if(e.matches("link[rel=stylesheet]")){const r=e.getAttribute("href");return t.head.querySelector(`link[rel=stylesheet][href="${r}"]`)}return null},ce=e=>{const t=e.dataset.astroTransitionPersistProps;return t==null||t==="false"},le=(e,t)=>e.getAttribute("props")===t.getAttribute("props"),ue=e=>{ne(e),oe(e),re(e);const t=se();ie(e.body,document.body),t()},de="astro:before-preparation",fe="astro:after-preparation",me="astro:before-swap",he="astro:after-swap",pe=e=>document.dispatchEvent(new Event(e));class W extends Event{from;to;direction;navigationType;sourceElement;info;newDocument;signal;constructor(t,n,o,r,i,u,a,c,d,l){super(t,n),this.from=o,this.to=r,this.direction=i,this.navigationType=u,this.sourceElement=a,this.info=c,this.newDocument=d,this.signal=l,Object.defineProperties(this,{from:{enumerable:!0},to:{enumerable:!0,writable:!0},direction:{enumerable:!0,writable:!0},navigationType:{enumerable:!0},sourceElement:{enumerable:!0},info:{enumerable:!0},newDocument:{enumerable:!0,writable:!0},signal:{enumerable:!0}})}}class we extends W{formData;loader;constructor(t,n,o,r,i,u,a,c,d,l){super(de,{cancelable:!0},t,n,o,r,i,u,a,c),this.formData=d,this.loader=l.bind(this,this),Object.defineProperties(this,{formData:{enumerable:!0},loader:{enumerable:!0,writable:!0}})}}class ge extends W{direction;viewTransition;swap;constructor(t,n){super(me,void 0,t.from,t.to,t.direction,t.navigationType,t.sourceElement,t.info,t.newDocument,t.signal),this.direction=t.direction,this.viewTransition=n,this.swap=()=>ue(this.newDocument),Object.defineProperties(this,{direction:{enumerable:!0},viewTransition:{enumerable:!0},swap:{enumerable:!0,writable:!0}})}}async function ye(e,t,n,o,r,i,u,a,c){const d=new we(e,t,n,o,r,i,window.document,u,a,c);return document.dispatchEvent(d)&&(await d.loader(),d.defaultPrevented||(pe(fe),d.navigationType!=="traverse"&&D({scrollX,scrollY}))),d}async function be(e,t,n){const o=new ge(e,t);return document.dispatchEvent(o),n&&await n(),o.swap(),o}const D=e=>{history.state&&(history.scrollRestoration="manual",history.replaceState({...history.state,...e},""))},x=!!document.startViewTransition,I=()=>!!document.querySelector('[name="astro-view-transitions-enabled"]'),V=(e,t)=>e.pathname===t.pathname&&e.search===t.search;let m,g,S;const j=e=>document.dispatchEvent(new Event(e)),K=()=>j("astro:page-load"),ve=()=>{let e=document.createElement("div");e.setAttribute("aria-live","assertive"),e.setAttribute("aria-atomic","true"),e.className="astro-route-announcer",document.body.append(e),setTimeout(()=>{let t=document.title||document.querySelector("h1")?.textContent||location.pathname;e.textContent=t},60)},H="data-astro-transition-persist",M="data-astro-transition",k="data-astro-transition-fallback";let F,v=0;history.state?(v=history.state.index,scrollTo({left:history.state.scrollX,top:history.state.scrollY})):I()&&(history.replaceState({index:v,scrollX,scrollY},""),history.scrollRestoration="manual");async function Te(e,t){try{const n=new Headers(t?.headers);for(const[a,c]of Object.entries($))n.set(a,c);const o=await fetch(e,{...t,headers:n}),i=(o.headers.get("content-type")??"").split(";",1)[0].trim();return i!=="text/html"&&i!=="application/xhtml+xml"?null:{html:await o.text(),redirected:o.redirected?o.url:void 0,mediaType:i}}catch{return null}}function G(){const e=document.querySelector('[name="astro-view-transitions-fallback"]');return e?e.getAttribute("content"):"animate"}function Ae(){let e=Promise.resolve(),t=!1;for(const n of document.getElementsByTagName("script"))n.dataset.astroExec===void 0&&n.getAttribute("type")==="module"&&(t=n.getAttribute("src")===null);t&&document.body.insertAdjacentHTML("beforeend",'Web Dev Lessons

Welcome to the Lesson Site

This is the homepage of the lesson site built with Astro.

Lesson 1
\ No newline at end of file diff --git a/00-Lesson-Site/frontend/dist/fonts/Geist.woff2 b/00-Lesson-Site/frontend/dist/fonts/Geist.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..305664c33ec78adf035ba45cede1ff8cd9887ba6 GIT binary patch literal 63448 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 literal 0 HcmV?d00001 diff --git a/00-Lesson-Site/frontend/dist/fonts/GeistMono.woff2 b/00-Lesson-Site/frontend/dist/fonts/GeistMono.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7ba21320ed855d8243d2c399a5dc842e190a86d1 GIT binary patch literal 61068 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 literal 0 HcmV?d00001 diff --git a/00-Lesson-Site/frontend/dist/index.html b/00-Lesson-Site/frontend/dist/index.html new file mode 100644 index 0000000..b7e5aee --- /dev/null +++ b/00-Lesson-Site/frontend/dist/index.html @@ -0,0 +1,46 @@ + Web Dev Lessons

Welcome to the Lesson Site

This is the homepage of the lesson site built with Astro.

Lesson 1
\ No newline at end of file diff --git a/00-Lesson-Site/frontend/dist/lessons/01-intro/index.html b/00-Lesson-Site/frontend/dist/lessons/01-intro/index.html new file mode 100644 index 0000000..b142e54 --- /dev/null +++ b/00-Lesson-Site/frontend/dist/lessons/01-intro/index.html @@ -0,0 +1,90 @@ + Introduction to Web Dev

Introduction to Web Dev


Pre-Requisites

+

The Web-Dev Beginniner Lessons are created in December 2025.

+

To follow along with the lessons, please ensure you have completed the the following pre-requisites:

+
    +
  • Basic Linux
  • +
+

Lesson Project

+

For this lesson, we will be building a simple personal portfolio website. This project will help you understand the basics of HTML, CSS, and JavaScript while creating something you can showcase.

+

By the end of this lesson, you will have deploy a functional portfolio website that you can customize and expand upon in future lessons.

\ No newline at end of file diff --git a/00-Lesson-Site/frontend/dist/lessons/index.html b/00-Lesson-Site/frontend/dist/lessons/index.html new file mode 100644 index 0000000..38d1a80 --- /dev/null +++ b/00-Lesson-Site/frontend/dist/lessons/index.html @@ -0,0 +1,82 @@ + Web Dev Lessons

Welcome to the Lesson Site

This is the homepage of the lesson site built with Astro.

Lesson 1
\ No newline at end of file diff --git a/00-Lesson-Site/frontend/dist/resources/index.html b/00-Lesson-Site/frontend/dist/resources/index.html new file mode 100644 index 0000000..0678a9d --- /dev/null +++ b/00-Lesson-Site/frontend/dist/resources/index.html @@ -0,0 +1,82 @@ + Web Dev Lessons

Welcome to the Lesson Site

This is the homepage of the lesson site built with Astro.

Lesson 1
\ No newline at end of file