<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:version="2.0"><channel><title>YheBlog 🧊</title><description>A blog about life and tech</description><link>https://yheblog.us.kg/</link><language>zh</language><item><title>贺洋 · 技术支持 / 网络运维简历</title><link>https://yheblog.us.kg/blog/heyang-resume/</link><guid isPermaLink="true">https://yheblog.us.kg/blog/heyang-resume/</guid><description>信息安全专业背景，精通系统部署与运维，拥有云平台与多协议服务实战经验，致力于成为值得信赖的技术支持工程师。</description><content:encoded>&lt;blockquote&gt;This rendering was automatically generated by Frosti Feed and may have formatting issues. For the best experience, please visit: &lt;a href=&quot;https://yheblog.us.kg/blog/heyang-resume/&quot;&gt;https://yheblog.us.kg/blog/heyang-resume/&lt;/a&gt;&lt;/blockquote&gt; &lt;h1&gt;贺洋的简历&lt;/h1&gt;
&lt;hr&gt;
&lt;h2&gt;📌 个人信息&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;姓名&lt;/strong&gt;：贺洋  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性别&lt;/strong&gt;：男  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;年龄&lt;/strong&gt;：20 岁（2004.04）  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;电话&lt;/strong&gt;：13062371708  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;邮箱&lt;/strong&gt;：&lt;a href=&quot;mailto:yhe8714@gmail.com&quot;&gt;yhe8714@gmail.com&lt;/a&gt;  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;籍贯&lt;/strong&gt;：湖南  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;个人博客&lt;/strong&gt;：&lt;a href=&quot;https://yuhe.nyc.mn&quot;&gt;https://yuhe.nyc.mn&lt;/a&gt;  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub&lt;/strong&gt;：&lt;a href=&quot;https://github.com/413hy&quot;&gt;https://github.com/413hy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;求职意向&lt;/strong&gt;：桌面运维 / 网络工程 ｜ 可一周内到岗 | 5k-6k&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;🧭 个人简介&lt;/h2&gt;
&lt;p&gt;作为信息安全专业的学生，我积累了扎实的计算机网络、系统安全、渗透测试等基础知识。拥有丰富的运维实践经验，曾负责多个云服务项目的部署与维护，包括 Zabbix 监控系统和企业网络建设。我独立设计并搭建了个人博客，并通过 Cloudflare 和 Docker 实现高效部署。拥有较强的问题解决能力和团队协作精神，能迅速适应技术环境并推动项目落地。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;🎓 教育背景&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;永州职业技术学院&lt;/strong&gt;&lt;br&gt;信息安全技术应用（专科）&lt;br&gt;2022.09 ~ 2025.06  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPA&lt;/strong&gt;：3.85 / 4.0  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主修课程&lt;/strong&gt;：计算机网络、操作系统安全、渗透测试、数据库管理、Linux/Windows 运维、网络安全、数据结构与算法、MySQL、Python、C 等。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通过系统学习相关课程，并通过实践提升了在运维、网络安全、渗透测试等领域的技能，为后续技术工作打下坚实基础。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;🛠 工作经历&lt;/h2&gt;
&lt;h3&gt;💼 众任圆科技有限公司 ｜ 驻场工程师&lt;/h3&gt;
&lt;p&gt;2024.08 – 2025.01 ｜深圳（项目地点：北京大学深圳医院）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作为技术驻场人员，参与北京大学深圳医院的监控系统建设与部署；&lt;/li&gt;
&lt;li&gt;负责 NVR、摄像头等设备调试、布线检查与网络接入配置；&lt;/li&gt;
&lt;li&gt;协助医院 IT 部门进行系统稳定性测试和现场故障排查；&lt;/li&gt;
&lt;li&gt;提供技术文档与运维指南，保障系统上线与长期运行。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;💼 广州文彤科技有限公司 ｜ 售后工程师&lt;/h3&gt;
&lt;p&gt;2025.02 – 2025.04 ｜远程+客户现场支持&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;负责对公司交付项目的售后技术支持，响应客户问题并远程协助处理；&lt;/li&gt;
&lt;li&gt;配置和维护客户部署环境中的服务组件，解决常见使用及网络问题；&lt;/li&gt;
&lt;li&gt;编写 FAQ 与操作指南，提升客户自助解决能力；&lt;/li&gt;
&lt;li&gt;与研发协同沟通客户反馈，推动产品功能优化与故障修复。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;🛠 项目经历&lt;/h2&gt;
&lt;h3&gt;🧩 技术博客平台搭建（2025.01 - 至今）｜ 独立开发者&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;使用 Astro 框架结合 Frosti 主题进行深度定制，打造美观、性能优良的个人博客；&lt;/li&gt;
&lt;li&gt;项目托管于 GitHub，使用 Vercel 实现自动化部署和持续集成；&lt;/li&gt;
&lt;li&gt;为优化前端资源加载，搭建独立图床用于博客图片托管与访问，显著提升首屏加载速度；&lt;/li&gt;
&lt;li&gt;利用 Cloudflare 实现 DNS 解析、SSL 自动续签、缓存策略、DDoS 防护等访问优化措施；&lt;/li&gt;
&lt;li&gt;多次使用 Lighthouse 工具优化站点，最终核心 Web 指标（LCP、FID、CLS）达“优秀”级；&lt;/li&gt;
&lt;li&gt;技术博客涵盖运维实战、云服务部署、安全探索等内容，用于分享和输出技术经验。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🧩 Zabbix 分布式监控系统部署（2025.02 - 2025.03）｜ 独立实践&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;基于 Docker 搭建 Zabbix Server + Proxy 架构，支持多节点监控与分布式数据收集；&lt;/li&gt;
&lt;li&gt;部署环境为华为鲲鹏服务器，解决 ARM 架构兼容性问题并优化容器镜像；&lt;/li&gt;
&lt;li&gt;配置邮件报警、图表展示、自定义监控项（Nginx、系统资源、Docker 容器等）；&lt;/li&gt;
&lt;li&gt;使用 Cloudflare 进行面板域名解析，并配置防火墙规则保障面板安全；&lt;/li&gt;
&lt;li&gt;实现容器日志管理与备份机制，确保系统长期稳定运行；&lt;/li&gt;
&lt;li&gt;项目以文档 + 实操形式输出，获得“基于鲲鹏搭建 Zabbix 分布式监控系统”认证。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🧩 跨国云服务项目部署实践（2025.03 - 至今）｜ 多平台多协议整合&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;在美国、芬兰、德国、新加坡、越南、波兰等多个国家的云服务平台上部署运维环境；&lt;/li&gt;
&lt;li&gt;使用 Docker 容器化部署多种协议服务，如 Hysteria、Vmess、Vless、Reality、哪吒面板等；&lt;/li&gt;
&lt;li&gt;搭配 Cloudflare 实现域名统一管理、全球 CDN 加速、DNS 与 TLS 保护；&lt;/li&gt;
&lt;li&gt;自建轻量级面板用于统一管理节点状态与连接日志，提升可维护性；&lt;/li&gt;
&lt;li&gt;编写 Python 保活脚本，定时请求服务节点以防止云平台回收资源，提升项目稳定性与长期在线率；&lt;/li&gt;
&lt;li&gt;整合脚本自动化创建实例、配置防火墙、定时重启服务，提升跨平台部署效率；&lt;/li&gt;
&lt;li&gt;项目以“练习 + 实战”双向推动，深入理解协议机制、TLS 加密通信、网络调优等关键技术点。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;💼 专业技能&lt;/h2&gt;
&lt;h3&gt;🖥️ 操作系统与桌面支持&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;精通 Windows 10/11 系统的安装、配置、优化与故障排除；&lt;/li&gt;
&lt;li&gt;熟悉 macOS 与 Linux 系统的基本操作与服务管理；&lt;/li&gt;
&lt;li&gt;能为终端用户提供远程协助（TeamViewer、AnyDesk、ToDesk 等）并解决常见问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🛠️ 硬件与办公支持&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;能独立完成 PC 硬件组装、故障诊断与外设连接配置（打印机、投影仪等）；&lt;/li&gt;
&lt;li&gt;熟练使用 Microsoft Office 套件（Word、Excel、PPT、Outlook）；&lt;/li&gt;
&lt;li&gt;具备文档撰写能力，能够编写操作手册、安装指南、故障排查手册等技术资料。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🌐 网络与协议基础&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;掌握 TCP/IP 协议、子网划分、静态与动态路由、VLAN 基础；&lt;/li&gt;
&lt;li&gt;熟悉防火墙规则配置、常用端口安全管理与网络诊断工具（ping、tracert、netstat）；&lt;/li&gt;
&lt;li&gt;有部署 VPN、代理协议（Vmess/Vless/Hysteria/Reality）与网络隧道的实战经验。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🧱 服务部署与容器化&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;熟练使用 Docker 进行服务容器化、网络绑定、数据挂载与镜像管理；&lt;/li&gt;
&lt;li&gt;部署过 Zabbix、哪吒面板、博客系统等多类型服务，并进行端口映射与自动重启配置；&lt;/li&gt;
&lt;li&gt;能在 ARM/AMD 架构 VPS 上部署监控、协议与系统服务，兼容性优化经验丰富。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🚀 综合能力&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;学习能力强，具备快速掌握新平台、新工具并投入实践的能力；&lt;/li&gt;
&lt;li&gt;逻辑清晰，具备独立分析和解决复杂技术问题的能力；&lt;/li&gt;
&lt;li&gt;良好的服务意识与沟通表达能力，能够准确理解用户需求并提供技术支持。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;🏫 校园经历&lt;/h2&gt;
&lt;h3&gt;📣 学生会宣传部部长（2022.10 - 2024.05）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;负责学生会活动的整体宣传工作，包括活动海报设计、横幅制作与校内社交媒体推广；&lt;/li&gt;
&lt;li&gt;独立策划并执行多场校级大型宣传项目，协调团队高效完成宣传任务；&lt;/li&gt;
&lt;li&gt;提升了公共表达、视觉排版、跨部门沟通与组织协调等综合能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🏸 运动与健康社团 ｜ 活动策划员 &amp;amp; 宣传部长（2023.04 - 2024.05）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;策划组织社团内部的运动比赛与健康讲座，参与活动全过程执行与总结；&lt;/li&gt;
&lt;li&gt;作为宣传负责人，主导活动文案撰写、宣传内容设计及社交平台运营；&lt;/li&gt;
&lt;li&gt;在多次协作中锻炼了时间管理、任务分工、团队执行与复盘反馈能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;📄 附加信息&lt;/h2&gt;
&lt;h3&gt;🎓 技术证书&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;华为云计算服务实践认证  &lt;/li&gt;
&lt;li&gt;华为云数据库服务实践认证  &lt;/li&gt;
&lt;li&gt;基于鲲鹏搭建 Zabbix 分布式监控系统证书  &lt;/li&gt;
&lt;li&gt;ModelArts 实现零售商客户分群项目认证  &lt;/li&gt;
&lt;li&gt;图像处理项目：实现图片压缩及水印添加  &lt;/li&gt;
&lt;li&gt;全国计算机等级考试二级（MS Office + C语言）  &lt;/li&gt;
&lt;li&gt;网络工程师证书&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🗣️ 通用证书与资质&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;普通话等级证书（二级乙等）  &lt;/li&gt;
&lt;li&gt;C1 驾驶证&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;🌱 兴趣爱好&lt;/h3&gt;
&lt;p&gt;热爱技术探索与实践，常年研究前沿工具与网络协议，运营个人博客用于技术输出；&lt;br&gt;生活中热爱羽毛球、跑步、旅行、阅读、王者荣耀、科技纪录片等，追求身心平衡。&lt;/p&gt;
</content:encoded><dc:creator>YheBlog</dc:creator><pubDate>Fri, 11 Apr 2025 00:00:00 GMT</pubDate></item><item><title>Docker environment</title><link>https://yheblog.us.kg/blog/docker_environment/</link><guid isPermaLink="true">https://yheblog.us.kg/blog/docker_environment/</guid><description>What is Docker and how to install it</description><content:encoded>&lt;blockquote&gt;This rendering was automatically generated by Frosti Feed and may have formatting issues. For the best experience, please visit: &lt;a href=&quot;https://yheblog.us.kg/blog/docker_environment/&quot;&gt;https://yheblog.us.kg/blog/docker_environment/&lt;/a&gt;&lt;/blockquote&gt; &lt;p&gt;这边主要是配置Docker环境的内容（哪怕你的电脑不支持hyper-v，Dno&amp;#39;t be intimidated,this article will guide you through the world of Docker.）&lt;/p&gt;
&lt;h2&gt;0、在配置docker前，让我们先了解一下Docker吧！&lt;/h2&gt;
&lt;p&gt;随着对大语言模型的深度使用，我们现在需要使用一些更加复杂的工具。这些工具并不是可以支持原生的Windows运行环境。为了能够在Windows上方便地使用这些软件或框架集，我们需要安装一套功能非常强大的运行环境，这个运行环境叫做Docker。&lt;/p&gt;
&lt;h4&gt;0-1、什么是Docker呢？&lt;/h4&gt;
&lt;p&gt;那么什么是Docker呢？你可以查到很多与它相关的技术资料，但对于刚刚入门的朋友来说，可能会显得有些晦涩难懂。&lt;/p&gt;
&lt;p&gt;简单来说，Docker是一种虚拟化技术，也就是在当前的操作系统下创建一个相对独立的特定操作系统环境，用来运行我们所需要的软件。Docker的虚拟化介于虚拟机和沙盒之间，是一种非常高效的虚拟化方式。
&lt;img src=&quot;https://martin123.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F9011b038-6d2b-4f78-b71e-929c63215d0d%2Ff7a04bd2-226f-413d-93b5-f8255a68d1c3%2FUntitled.png?table=block&amp;id=143b1a9e-1c06-4715-8070-9f188e40b314&amp;spaceId=9011b038-6d2b-4f78-b71e-929c63215d0d&amp;width=2000&amp;userId=&amp;cache=v2&quot; alt=&quot;blog placeholder&quot;&gt;&lt;/p&gt;
&lt;h4&gt;0-2、Docker有什么优势呢？&lt;/h4&gt;
&lt;p&gt;每个运行的Docker容器都捆绑了这个容器所运行的软件以及最低程度所需求的系统环境。举个例子，如果我需要运行一个Docker中的文本编辑器，那么Docker不会给它提供超出文本编辑器之外的系统组件，例如处理音频、视频、网络通信等这一类的组件。因此，我们的Docker容器通常非常精简，运行效率极高。&lt;/p&gt;
&lt;p&gt;如果你在Windows上运行一个Linux的虚拟机，则必须附带Linux系统的所有系统组件。即便我只想在这个虚拟机中运行一个简单的文本编辑器，它同样会加载音频、视频、网络通信等系统核心组件。
&lt;img src=&quot;https://martin123.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F9011b038-6d2b-4f78-b71e-929c63215d0d%2F875f76db-29c7-47b6-9b4f-467512aa7623%2FUntitled.png?table=block&amp;id=8fa5453b-05d0-4a9f-8bde-a75d65322a2d&amp;spaceId=9011b038-6d2b-4f78-b71e-929c63215d0d&amp;width=2000&amp;userId=&amp;cache=v2&quot; alt=&quot;blog placeholder&quot;&gt;&lt;/p&gt;
&lt;h4&gt;0-3、Docker与Windows间的爱恨情仇&lt;/h4&gt;
&lt;p&gt;Docker在Windows上的适配经历了三个阶段：第一个阶段是完全不适配Windows，因为Docker本身是构建在Linux系统上的一个虚拟化技术；第二阶段是有限的基于虚拟机的适配；第三阶段是基于WSL2（Windows Subsystem for Linux 2）虚拟化技术的适配。
&lt;img src=&quot;https://martin123.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F9011b038-6d2b-4f78-b71e-929c63215d0d%2Fdfdf9238-9e58-4cf2-9e86-dbaa35c779aa%2FUntitled.png?table=block&amp;id=0b67bb76-ec7e-4bdf-aa1e-4b30e0941dba&amp;spaceId=9011b038-6d2b-4f78-b71e-929c63215d0d&amp;width=2000&amp;userId=&amp;cache=v2&quot; alt=&quot;blog placeholder&quot;&gt;&lt;/p&gt;
&lt;h2&gt;1、准备好安装Docker了吗？&lt;/h2&gt;
&lt;h4&gt;1-0、在安装docker之前，请确保你的电脑：&lt;/h4&gt;
&lt;p&gt;首先要注意，想要运行 Docker Desktop，你的windows系统必须高于1904版本。
你可以进入 Windows设置→系统→关于，来查看当前的windows版本。例如我所使用的windows版本号为22h2。
不过请放心，一般来说只有超过5年以上从未更新过的电脑才会停留在1904那个比较古老的版本。&lt;/p&gt;
&lt;p&gt;通常只有Windows专业版、企业版或工作站版才能够安装Hyper-V和WSL2。而这两个组件是在Windows上运行Docker Desktop的必备条件。
但是今天我们介绍的安装方法，同时支持Windows家庭版和专业版的安装。我们将会帮助大家绕过一部分Windows系统的限制。&lt;/p&gt;
&lt;h4&gt;1-1、安装 Hyper-V&lt;/h4&gt;
&lt;p&gt;首先我们需要运行一个批处理程序来启动Hyper-V组件。&lt;/p&gt;
&lt;p&gt;通过将下方的代码复制到记事本中，并另存为&lt;code&gt;enable_hyper_v.cmd&lt;/code&gt;，之后直接右击该脚本，通过“管理员模式”运行。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;
pushd &amp;quot;%~dp0&amp;quot;

dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum &amp;gt;hyper-v.txt

for /f %%i in (&amp;#39;findstr /i . hyper-v.txt 2^&amp;gt;nul&amp;#39;) do dism /online /norestart /add-package:&amp;quot;%SystemRoot%\servicing\Packages\%%i&amp;quot;

del hyper-v.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你的电脑没有Hyper-V组件，系统将会从Windows Update服务器那里更新Windows的相关组件，这可能会花费一些时间。安装完成后，系统需要重启。&lt;/p&gt;
&lt;h4&gt;1-2、安装WSL升级包&lt;/h4&gt;
&lt;p&gt;然后你需要前往微软的官方网站下载WSL的离线升级包。
或者直接点击&lt;a href=&quot;https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi&quot;&gt; WSL离线升级包 &lt;/a&gt;这里下载升级包。（会自动弹出下载链接，等待几秒即可）&lt;/p&gt;
&lt;p&gt;双击安装。这里我们可能需要再次重启电脑。&lt;/p&gt;
&lt;h4&gt;1-3、安装Docker Desktop&lt;/h4&gt;
&lt;p&gt;完成以上两步后，无论你使用的是Windows家庭版还是专业版，你就基本上可以无痛安装Docker。&lt;/p&gt;
&lt;h2&gt;2、安装好docker后，让我们来试着操作一下吧！&lt;/h2&gt;
&lt;h4&gt;2-0、在操作前，我们先了解一下其中相关的以先概念&lt;/h4&gt;
&lt;p&gt;Docker与其他虚拟化技术最大的区别体现在它是基于应用程序的虚拟化。因此，Docker的官方仓库提供了大量的Docker应用程序包下载服务。每个程序包被称为镜像（Image）。通过一个镜像，我们可以创建一个或多个执行不同参数的应用程序。每个运行中的应用程序被称为容器（Container）。&lt;/p&gt;
&lt;p&gt;这是Docker最重要的两个概念：镜像（Image）和容器（Container）。&lt;/p&gt;
&lt;p&gt;我们可以下载别人提供的镜像，或者创建自己的镜像。对镜像设置好相关的参数后，启动容器，就实现了利用Docker运行这个应用程序。&lt;/p&gt;
&lt;p&gt;还有另外一些概念，我们会在接下来的演示中为大家逐步介绍。&lt;/p&gt;
&lt;h4&gt;2-1、以Memos举个栗子🌰吧&lt;/h4&gt;
&lt;p&gt;这是一个小巧的电子备忘录程序，可以创建一个备忘录网站，供我们记录一些碎片化的信息。
&lt;img src=&quot;https://martin123.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F9011b038-6d2b-4f78-b71e-929c63215d0d%2F9ac76dbe-4eda-4479-ae15-ada3d15d2557%2FUntitled.png?table=block&amp;id=b3766305-5225-4353-b654-03dd0e755eb6&amp;spaceId=9011b038-6d2b-4f78-b71e-929c63215d0d&amp;width=2000&amp;userId=&amp;cache=v2&quot; alt=&quot;blog placeholder&quot;&gt;&lt;/p&gt;
&lt;h6&gt;step1、查找Memos镜像&lt;/h6&gt;
&lt;p&gt;通过Docker Hub，我们可以查询到Memos的相关信息。Docker Hub使用Tags标签来标注应用程序包的不同版本。这个参数通常以冒号+版本号（或者latest）的形式出现在应用程序包名称的最后。对于一些简单的应用，我们通常选择冒号latest来下载最新版本就可以了。&lt;/p&gt;
&lt;h6&gt;step2、下载Memos镜像&lt;/h6&gt;
&lt;p&gt;我们有两种方式下载Docker提供的镜像。第一种是通过图形界面搜索，点击选择相应的版本号就可以开始下载；另一个方法是采用命令行的模式输入&lt;code&gt;docker pull memos:latest&lt;/code&gt;来进行下载。
&lt;img src=&quot;https://martin123.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F9011b038-6d2b-4f78-b71e-929c63215d0d%2F28e86364-466c-4367-9303-471220a36282%2FUntitled.png?table=block&amp;id=59704f3c-2279-4a90-86be-60fa7663f412&amp;spaceId=9011b038-6d2b-4f78-b71e-929c63215d0d&amp;width=2000&amp;userId=&amp;cache=v2&quot; alt=&quot;blog placeholder&quot;&gt;
通常命令行更适合服务器环境的配置。在日常使用中，我们使用图形界面进行下载就可以了。
下载完成后，我们可以在Images选项卡中看到我们已经下载好的镜像。Memos的镜像很小，只有数十兆。
选择镜像，点击“Run（运行）”，就可以通过这个镜像创建一个Memos应用程序容器。根据不同的需求，我们可以通过一个镜像创建很多个容器。&lt;/p&gt;
&lt;h6&gt;step3、启动Memos容器&lt;/h6&gt;
&lt;p&gt;每个新建的容器会独立存储它运行过程中产生的新文件，例如我们输入的备忘录信息。然而程序本身仍然依赖于镜像中的文件进行运行，也就是说多个容器采用的是增量存储的方式来处理我们产生的数据。
换句话说，只要存在由某个镜像创建的容器，就必须保持这个镜像一直存储在你的系统中。&lt;/p&gt;
&lt;h2&gt;3、Memos为栗子，了解docker的一些机制吧！&lt;/h2&gt;
&lt;h4&gt;3-1、存储机制&lt;/h4&gt;
&lt;p&gt;接下来我们要配置Memos的一些系统参数，例如数据的存放位置。我们有两种选择：一种是让Docker自己创建一个封闭的虚拟磁盘用来存储Memos的数据；另一种是绑定本机的特定目录或特定文件。
&lt;img src=&quot;https://martin123.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F9011b038-6d2b-4f78-b71e-929c63215d0d%2F9338f4c6-3ad7-452b-ad52-43e16c0b9bd5%2FUntitled.png?table=block&amp;id=9403ee55-4d3b-4d8c-bf89-eea78a0d21c2&amp;spaceId=9011b038-6d2b-4f78-b71e-929c63215d0d&amp;width=1000&amp;userId=&amp;cache=v2&quot; alt=&quot;docker placeholder&quot;&gt;&lt;/p&gt;
&lt;p&gt;虚拟磁盘在Docker中被称为Volume或者卷。绑定目录被称为Bind绑定或者挂载。这也是Docker中非常重要的概念之一。&lt;/p&gt;
&lt;p&gt;这两种方式都会创造永久存储的数据，即使你删除容器和镜像，未来你也可以依靠这些数据重建你的Memos服务。区别在于虚拟磁盘无法直接读取或写入，但是它不存在权限问题；绑定目录或文件方便我们修改查看和修改相关数据，但可能存在权限问题。
&lt;img src=&quot;https://martin123.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F9011b038-6d2b-4f78-b71e-929c63215d0d%2Fd90f195f-4b68-482c-a2c4-a2348a9d1b04%2FUntitled.png?table=block&amp;id=c19c5b97-3e9f-4bc4-9604-370ed8a903eb&amp;spaceId=9011b038-6d2b-4f78-b71e-929c63215d0d&amp;width=1420&amp;userId=&amp;cache=v2&quot; alt=&quot;docker placeholder&quot;&gt;
这里我们选择绑定目录。我们在D盘新建一个Memos的数据存储目录，我们填写&amp;quot;C:\Users\Adam\Memos&amp;quot;。那么我们要绑定哪个目录呢？这里需要查阅Docker Hub上提供的相关信息。每个应用程序提供的存储位置都不相同。Memos的存储位置是&amp;quot;/var/opt/memos&amp;quot;。
&lt;img src=&quot;https://martin123.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F9011b038-6d2b-4f78-b71e-929c63215d0d%2Febf24428-8627-4320-875d-83b89f5d4d05%2FUntitled.png?table=block&amp;id=b9c416f7-2da3-4c62-a27b-4069c28b4e5f&amp;spaceId=9011b038-6d2b-4f78-b71e-929c63215d0d&amp;width=1420&amp;userId=&amp;cache=v2&quot; alt=&quot;docker placeholder&quot;&gt;&lt;/p&gt;
&lt;h4&gt;3-2、端口映射&lt;/h4&gt;
&lt;p&gt;然后我们需要开放相应的端口。什么是端口呢？端口是计算机中的程序进行相互通信时设定的电子门牌号。通过特定的门牌号，我们就可以与指定的应用程序进行通讯。&lt;/p&gt;
&lt;p&gt;Docker提供方便的端口号映射服务，可以将应用程序内的端口映射到当前操作系统的端口。这就好像是将大楼内部的门牌号转换成为街边的邮政信箱号码一样。&lt;/p&gt;
&lt;p&gt;我们为Memos设定本地端口5555绑定容器内的端口5230。
&lt;img src=&quot;https://martin123.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F9011b038-6d2b-4f78-b71e-929c63215d0d%2F07a1672a-463d-4cf7-9075-b9ed3dcffce3%2FUntitled.png?table=block&amp;id=19629328-6f95-4fb3-9c41-c73b0e135628&amp;spaceId=9011b038-6d2b-4f78-b71e-929c63215d0d&amp;width=1760&amp;userId=&amp;cache=v2&quot; alt=&quot;docker placeholder&quot;&gt;
这意味着5555号邮政信箱对应的就是环球中心A座80楼80号办公室。&lt;/p&gt;
&lt;p&gt;点击“启动”，我们就可以看到一个新的容器被创建了。我们来访问localhost的冒号5555，Memos已经成功运行了，让我们返回Docker的管理界面，点击“容器”可以查看Memos容器正在运行的状态。&lt;/p&gt;
&lt;p&gt;这个界面打印的是容器的命令行界面。让我们打开刚才绑定的目录，可以看到Memos创建了一个新的文件，它是Memos的数据库文件。&lt;/p&gt;
</content:encoded><dc:creator>YheBlog</dc:creator><pubDate>Sun, 09 Mar 2025 00:00:00 GMT</pubDate></item><item><title>Under The Sacred Hall</title><link>https://yheblog.us.kg/blog/under-the-sacred-hall/</link><guid isPermaLink="true">https://yheblog.us.kg/blog/under-the-sacred-hall/</guid><description>……</description><content:encoded>&lt;blockquote&gt;This rendering was automatically generated by Frosti Feed and may have formatting issues. For the best experience, please visit: &lt;a href=&quot;https://yheblog.us.kg/blog/under-the-sacred-hall/&quot;&gt;https://yheblog.us.kg/blog/under-the-sacred-hall/&lt;/a&gt;&lt;/blockquote&gt; &lt;p&gt;Some people are keen on traveling to various places to &amp;quot;check in,&amp;quot; others shuttle between exhibitions and events, while others chase after trending topics, seeking novel and exciting experiences. Through different means, they encounter fresh and diverse things. They proclaim, &amp;quot;I’ve seen the world.&amp;quot;&lt;/p&gt;
&lt;p&gt;Reading the passage above, how would you structure your essay? It seems too simple. &amp;quot;Seeing the world is not just about exploring the external but enriching the inner self.&amp;quot; Or, &amp;quot;The approach and purpose of broadening horizons should complement each other and not deviate from the original intent.&amp;quot; The list goes on. Indeed, this material as an exam topic feels overly straightforward: strikingly apparent counterexamples and shallow behavior leave little room for additional arguments. I understand this reasoning, yet I don’t dare to write it this way—neither the old me nor the me in an exam room would hesitate like this. But I simply don’t understand: while striving for the ultimate within and eliminating superficial distractions is admirable, have we perhaps become overly fixated on an unattainable pinnacle? To the extent that we scorn such behavior, refuting it with irrefutable truths, and dare not take another step without properly contemplating what &amp;quot;seeing the world&amp;quot; truly means?&lt;/p&gt;
&lt;p&gt;What is &amp;quot;irrefutable truth&amp;quot;? I think it’s likely the most precious thing in the &amp;quot;sacred hall&amp;quot;—a truth untainted by interference, detached from worldly distractions. And the phantoms dwelling in this hall are, naturally, those &amp;quot;sages&amp;quot;—embodiments of truth for those below to emulate. However, sages cannot proclaim themselves as such, or according to truth, they would no longer qualify. Thus, to this day, I’ve never encountered a living sage, only glimpsed them occasionally on bulletin boards or in textbooks.&lt;/p&gt;
&lt;p&gt;Back to the topic. Honestly, if someone truly toured the world, pursued trends, and experienced novel things, I would admire them from the bottom of my heart. Because I haven’t done so myself, &amp;quot;seeing the world through its myriad things&amp;quot; is a crucial pathway to broaden one’s horizons. Simply put, &amp;quot;observing externalities&amp;quot; is a &lt;em&gt;necessary condition&lt;/em&gt; for &amp;quot;seeing the world.&amp;quot; If one lacks a sufficient accumulation of what is often deemed shallow and superficial, how can they claim to have truly broadened their horizons? Of course, we must acknowledge the potential neglect of the inner realm. Yet it feels tragic: a group of students who haven’t seen much of the world condemning &amp;quot;observing externalities&amp;quot; with truths taught by sages—how strange and disheartening. Perhaps this is the sacred hall&amp;#39;s strength: its truth shines so brightly that it obliterates all &amp;quot;darkness&amp;quot; that doesn’t align. Bathed in this light, I feel a refreshing and sanctified clarity within but lose touch with what the real world is, unaware that I, too, am in the darkness. Such a state, free from distractions and focused upward—how beautiful...&lt;/p&gt;
&lt;p&gt;Why am I, too, in &amp;quot;darkness&amp;quot;? Perhaps it’s an inescapable flaw as a human being. I’m too obedient—principles preached in childhood have seeped into my bones, making me vow to become a sage. But despite saying this, I’ve transgressed those inner rules countless times... Maybe it’s humanity’s basest desires. You can, of course, criticize and reproach me harshly; I won’t complain. After all, in the light of the sage’s truth, I am indeed despicable and insignificant. Writing such words in self-reflection may well be another sin. Being a role model for others to study under these circumstances feels undeserved. That’s why I say I’m also in darkness—a presence that should be cleansed and purged.&lt;/p&gt;
&lt;p&gt;It’s too bitter, too exhausting. So later, I changed my mind and stopped aspiring to be a sage. Someone told me that humans experience three stages of perception: seeing mountains as mountains, seeing mountains as not mountains, and seeing mountains as mountains again. I shook my head, puzzled. &amp;quot;So, what are you trying to say? Teach me to reach the third stage?&amp;quot;...&lt;/p&gt;
&lt;p&gt;That night, on our way home, my reserved father suddenly played music in the car. Judging the music itself, it could be described as lowbrow, clichéd, and utterly &amp;quot;tasteless.&amp;quot; Yet this creation, excluded from the sacred halls of music, gave my father—who almost never listens to music—the strength of melody. I don’t know why, but even though this moment has long passed, every time I think of it, I feel like crying. To some, listening to such music might indeed be a sin: it takes up market share for quality music and repeatedly lowers public aesthetic standards.&lt;/p&gt;
&lt;p&gt;But in this world, there is something even more irrefutable than truth: facts. The fact is, this music brought joy to my father, letting him experience a feeling he had never had during his school days. The pure nature of truth and the complex reality of life always hold some irreconcilable tension. Truth may seem lofty and authoritative, but it cannot erase the genuine experiences of lives rooted in the dust. Yes, critics are absolutely correct—such music is a blight on the market. But what if they aren’t? The joy my father felt from &amp;quot;lowbrow&amp;quot; music might be far more genuine than the restrained satisfaction we feel pursuing &amp;quot;refined tastes&amp;quot;—something truth cannot refute.&lt;/p&gt;
&lt;p&gt;&amp;quot;I don’t need you to teach me about the third stage of perception. Why cling so desperately to right and wrong, good and bad?&amp;quot;&lt;/p&gt;
&lt;p&gt;Perhaps the notion of &amp;quot;broadening one’s horizons&amp;quot; is similar. Those voices criticizing superficiality often overlook that so-called superficiality is the foundation, a &amp;quot;necessary condition.&amp;quot; To assume that only deep reflection and inner enrichment count as &amp;quot;broadening one’s horizons&amp;quot; while dismissing these foundations—how can one claim to have built a complete inner world? While fleeting glances may lack depth, without them, depth is but a castle in the air.&lt;/p&gt;
&lt;p&gt;For the diligent &amp;quot;exam takers&amp;quot; of small towns, it’s a pity they never truly traverse the world’s vastness. All they have are truths taught by the sacred hall... Yet beneath this sacred hall lies the self—the most irrefutable fact.&lt;/p&gt;
&lt;p&gt;I am no sage, not even close—more like a muddled person. Like that &amp;quot;lowbrow&amp;quot; music, it may never enter the sacred halls of art, but one night, it became my father’s truest solace. And that moment, more moving than truth.&lt;/p&gt;
</content:encoded><dc:creator>YheBlog</dc:creator><pubDate>Wed, 05 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Using mdx in Frosti</title><link>https://yheblog.us.kg/blog/frosti-mdx/</link><guid isPermaLink="true">https://yheblog.us.kg/blog/frosti-mdx/</guid><description>Using MDX in Frosti to enrich article content with more components</description><content:encoded>&lt;blockquote&gt;This rendering was automatically generated by Frosti Feed and may have formatting issues. For the best experience, please visit: &lt;a href=&quot;https://yheblog.us.kg/blog/frosti-mdx/&quot;&gt;https://yheblog.us.kg/blog/frosti-mdx/&lt;/a&gt;&lt;/blockquote&gt; &lt;p&gt;import Collapse from &amp;quot;../../components/mdx/Collapse.astro&amp;quot;;
import Diff from &amp;quot;../../components/mdx/Diff.astro&amp;quot;;
import Error from &amp;quot;../../components/mdx/Error.astro&amp;quot;;
import Info from &amp;quot;../../components/mdx/Info.astro&amp;quot;;
import Kbd from &amp;quot;../../components/mdx/Kbd.astro&amp;quot;;
import Success from &amp;quot;../../components/mdx/Success.astro&amp;quot;;
import Warning from &amp;quot;../../components/mdx/Warning.astro&amp;quot;;
import TimeLine from &amp;quot;../../components/mdx/TimeLine.astro&amp;quot;;
import LinkCard from &amp;quot;../../components/mdx/LinkCard.astro&amp;quot;;&lt;/p&gt;
&lt;h2&gt;Preface&lt;/h2&gt;
&lt;p&gt;This article describes how to use the components provided by Frosti in &lt;code&gt;mdx&lt;/code&gt; to realize the functions that can&amp;#39;t be realized by normal &lt;code&gt;md&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Main text&lt;/h2&gt;
&lt;h3&gt;Getting started&lt;/h3&gt;
&lt;p&gt;First you need to create an &lt;code&gt;mdx&lt;/code&gt; file, which is as simple as changing the extension to &lt;code&gt;.mdx&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Introducing&lt;/h3&gt;
&lt;p&gt;The components provided by Frosti are placed in the &lt;code&gt;/mdx&lt;/code&gt; folders. Write something under the document properties (frontmatter):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mdx&quot;&gt;import Collapse from &amp;quot;../../components/mdx/Collapse.astro&amp;quot;;
import Diff from &amp;quot;../../components/mdx/Diff.astro&amp;quot;;
import Error from &amp;quot;../../components/mdx/Error.astro&amp;quot;;
import Info from &amp;quot;../../components/mdx/Info.astro&amp;quot;;
import Kbd from &amp;quot;../../components/mdx/Kbd.astro&amp;quot;;
import Success from &amp;quot;../../components/mdx/Success.astro&amp;quot;;
import Warning from &amp;quot;../../components/mdx/Warning.astro&amp;quot;;
import TimeLine from &amp;quot;../../components/mdx/TimeLine.astro&amp;quot;;
import LinkCard from &amp;quot;../../components/mdx/LinkCard.astro&amp;quot;;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Example&lt;/h3&gt;
&lt;h4&gt;Collapse&lt;/h4&gt;
&lt;Collapse title=&quot;This is an example text.&quot;&gt;
  This is the hidden content!
&lt;/Collapse&gt;

&lt;pre&gt;&lt;code class=&quot;language-mdx&quot;&gt;&amp;lt;Collapse title=&amp;quot;This is an example text.&amp;quot;&amp;gt;
  This is the hidden content!
&amp;lt;/Collapse&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Diff&lt;/h4&gt;
&lt;p&gt;&lt;Diff r=&quot;https://yheblog.us.kg/image/r.png&quot; l=&quot;https://yheblog.us.kg/image/l.png&quot;&gt;&lt;/Diff&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mdx&quot;&gt;&amp;lt;Diff r=&amp;quot;/image/r.png&amp;quot; l=&amp;quot;/image/l.png&amp;quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Error&lt;/h4&gt;
&lt;p&gt;&lt;Error&gt;Maybe something went wrong?&lt;/Error&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mdx&quot;&gt;&amp;lt;Error&amp;gt;Maybe something went wrong? &amp;lt;/Error&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Warning&lt;/h4&gt;
&lt;p&gt;&lt;Warning&gt;Hey! Watch out for potholes! &lt;/Warning&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mdx&quot;&gt;&amp;lt;Warning&amp;gt;Hey! Watch out for potholes! &amp;lt;/Warning&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Message&lt;/h4&gt;
&lt;p&gt;&lt;Info&gt;It&amp;#39;s just a message. &lt;/Info&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mdx&quot;&gt;&amp;lt;Info&amp;gt;It&amp;#39;s just a message. &amp;lt;/Info&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Success&lt;/h4&gt;
&lt;p&gt;&lt;Success&gt;Congratulations on your successful deployment! &lt;/Success&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mdx&quot;&gt;&amp;lt;Success&amp;gt;Congratulations on your successful deployment! &amp;lt;/Success&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Kbd&lt;/h4&gt;
&lt;p&gt;&lt;Kbd&gt;Ctrl&lt;/Kbd&gt; + &lt;Kbd&gt;C&lt;/Kbd&gt; to copy the text.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mdx&quot;&gt;&amp;lt;Kbd&amp;gt;Ctrl&amp;lt;/Kbd&amp;gt; + &amp;lt;Kbd&amp;gt;C&amp;lt;/Kbd&amp;gt; to copy the text.
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;TimeLine&lt;/h4&gt;
&lt;p&gt;&amp;lt;TimeLine
  items={[
    { year: &amp;quot;1984&amp;quot;, event: &amp;quot;First Macintosh computer&amp;quot; },
    { year: &amp;quot;1998&amp;quot;, event: &amp;quot;iMac&amp;quot; },
    { year: &amp;quot;2001&amp;quot;, event: &amp;quot;iPod&amp;quot; },
    { year: &amp;quot;2007&amp;quot;, event: &amp;quot;iPhone&amp;quot; },
    { year: &amp;quot;2015&amp;quot;, event: &amp;quot;Apple Watch&amp;quot; },
  ]}
/&amp;gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mdx&quot;&gt;&amp;lt;TimeLine
  items={[
    { year: &amp;quot;1984&amp;quot;, event: &amp;quot;First Macintosh computer&amp;quot; },
    { year: &amp;quot;1998&amp;quot;, event: &amp;quot;iMac&amp;quot; },
    { year: &amp;quot;2001&amp;quot;, event: &amp;quot;iPod&amp;quot; },
    { year: &amp;quot;2007&amp;quot;, event: &amp;quot;iPhone&amp;quot; },
    { year: &amp;quot;2015&amp;quot;, event: &amp;quot;Apple Watch&amp;quot; },
  ]}
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;LinkCard&lt;/h4&gt;
&lt;p&gt;&lt;LinkCard
  title=&quot;Frosti&quot;
  desc=&quot;My blog project!&quot;
  url=&quot;https://github.com/EveSunMaple/Frosti&quot;
  img=&quot;https://yheblog.us.kg/view.png&quot;
/&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-mdx&quot;&gt;&amp;lt;LinkCard
  title=&amp;quot;Frosti&amp;quot;
  desc=&amp;quot;My blog project!&amp;quot;
  url=&amp;quot;https://github.com/EveSunMaple/Frosti&amp;quot;
  img=&amp;quot;/view.png&amp;quot;
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><dc:creator>YheBlog</dc:creator><pubDate>Sun, 02 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Markdown Style Guide</title><link>https://yheblog.us.kg/blog/markdown-style-guide/</link><guid isPermaLink="true">https://yheblog.us.kg/blog/markdown-style-guide/</guid><description>Here is a sample of some basic Markdown syntax that can be used when writing Markdown content in Astro.</description><content:encoded>&lt;blockquote&gt;This rendering was automatically generated by Frosti Feed and may have formatting issues. For the best experience, please visit: &lt;a href=&quot;https://yheblog.us.kg/blog/markdown-style-guide/&quot;&gt;https://yheblog.us.kg/blog/markdown-style-guide/&lt;/a&gt;&lt;/blockquote&gt; &lt;p&gt;Here is a sample of some basic Markdown syntax that can be used when writing Markdown content in Astro.&lt;/p&gt;
&lt;h2&gt;Headings&lt;/h2&gt;
&lt;p&gt;The following HTML &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;—&lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt; elements represent six levels of section headings. &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; is the highest section level while &lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt; is the lowest.&lt;/p&gt;
&lt;h1&gt;H1&lt;/h1&gt;
&lt;h2&gt;H2&lt;/h2&gt;
&lt;h3&gt;H3&lt;/h3&gt;
&lt;h4&gt;H4&lt;/h4&gt;
&lt;h5&gt;H5&lt;/h5&gt;
&lt;h6&gt;H6&lt;/h6&gt;
&lt;h2&gt;Paragraph&lt;/h2&gt;
&lt;p&gt;Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat.&lt;/p&gt;
&lt;p&gt;Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.&lt;/p&gt;
&lt;h2&gt;Images&lt;/h2&gt;
&lt;h4&gt;Syntax&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;![Alt text](./full/or/relative/path/of/image)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Output&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://yheblog.us.kg/home.webp&quot; alt=&quot;blog placeholder&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Blockquotes&lt;/h2&gt;
&lt;p&gt;The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a &lt;code&gt;footer&lt;/code&gt; or &lt;code&gt;cite&lt;/code&gt; element, and optionally with in-line changes such as annotations and abbreviations.&lt;/p&gt;
&lt;h3&gt;Blockquote without attribution&lt;/h3&gt;
&lt;h4&gt;Syntax&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;&amp;gt; Tiam, ad mint andaepu dandae nostion secatur sequo quae.
&amp;gt; **Note** that you can use _Markdown syntax_ within a blockquote.
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Output&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Tiam, ad mint andaepu dandae nostion secatur sequo quae.
&lt;strong&gt;Note&lt;/strong&gt; that you can use &lt;em&gt;Markdown syntax&lt;/em&gt; within a blockquote.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Blockquote with attribution&lt;/h3&gt;
&lt;h4&gt;Syntax&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;&amp;gt; Don&amp;#39;t communicate by sharing memory, share memory by communicating.&amp;lt;br&amp;gt;
&amp;gt; — &amp;lt;cite&amp;gt;Rob Pike[^1]&amp;lt;/cite&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Output&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Don&amp;#39;t communicate by sharing memory, share memory by communicating.&lt;br&gt;
— &lt;cite&gt;Rob Pike[^1]&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;[^1]: The above quote is excerpted from Rob Pike&amp;#39;s &lt;a href=&quot;https://www.youtube.com/watch?v=PAAkCSZUG1c&quot;&gt;talk&lt;/a&gt; during Gopherfest, November 18, 2015.&lt;/p&gt;
&lt;h2&gt;Tables&lt;/h2&gt;
&lt;h4&gt;Syntax&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;| Italics   | Bold     | Code   |
| --------- | -------- | ------ |
| _italics_ | **bold** | `code` |
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Output&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Italics&lt;/th&gt;
&lt;th&gt;Bold&lt;/th&gt;
&lt;th&gt;Code&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;em&gt;italics&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;bold&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;code&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;Code Blocks&lt;/h2&gt;
&lt;h4&gt;Syntax&lt;/h4&gt;
&lt;p&gt;we can use 3 backticks ``` in new line and write snippet and close with 3 backticks on new line and to highlight language specific syntac, write one word of language name after first 3 backticks, for eg. html, javascript, css, markdown, typescript, txt, bash&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;```cpp
#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
const int N = 1e5 + 5;
int n, k, a[N];
long long ans;
vector&amp;lt;int&amp;gt; v[N];
int main()
{
    scanf(&amp;quot;%d%d&amp;quot;, &amp;amp;n, &amp;amp;k);
    for (int i = 1; i &amp;lt;= n; i++)
    {
        scanf(&amp;quot;%d&amp;quot;, &amp;amp;a[i]);
        v[i % k].push_back(a[i]);
    }
    for (int i = 0; i &amp;lt; k; i++)
        sort(v[i].rbegin(), v[i].rend());
    for (int i = 0; i &amp;lt; k; i++)
    {
        for (int j = 0; j + 1 &amp;lt; v[i].size(); j += 2)
        {
            ans += v[i][j] + v[i][j + 1];
        }
    }
    printf(&amp;quot;%lld\n&amp;quot;, ans);
    return 0;
}
```
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Output&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
const int N = 1e5 + 5;
int n, k, a[N];
long long ans;
vector&amp;lt;int&amp;gt; v[N];
int main()
{
    scanf(&amp;quot;%d%d&amp;quot;, &amp;amp;n, &amp;amp;k);
    for (int i = 1; i &amp;lt;= n; i++)
    {
        scanf(&amp;quot;%d&amp;quot;, &amp;amp;a[i]);
        v[i % k].push_back(a[i]);
    }
    for (int i = 0; i &amp;lt; k; i++)
        sort(v[i].rbegin(), v[i].rend());
    for (int i = 0; i &amp;lt; k; i++)
    {
        for (int j = 0; j + 1 &amp;lt; v[i].size(); j += 2)
        {
            ans += v[i][j] + v[i][j + 1];
        }
    }
    printf(&amp;quot;%lld\n&amp;quot;, ans);
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;List Types&lt;/h2&gt;
&lt;h3&gt;Ordered List&lt;/h3&gt;
&lt;h4&gt;Syntax&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;1. First item
2. Second item
3. Third item
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Output&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;First item&lt;/li&gt;
&lt;li&gt;Second item&lt;/li&gt;
&lt;li&gt;Third item&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Unordered List&lt;/h3&gt;
&lt;h4&gt;Syntax&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;- List item
- Another item
- And another item
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Output&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;List item&lt;/li&gt;
&lt;li&gt;Another item&lt;/li&gt;
&lt;li&gt;And another item&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Nested list&lt;/h3&gt;
&lt;h4&gt;Syntax&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;- Fruit
  - Apple
  - Orange
  - Banana
- Dairy
  - Milk
  - Cheese
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Output&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Fruit&lt;ul&gt;
&lt;li&gt;Apple&lt;/li&gt;
&lt;li&gt;Orange&lt;/li&gt;
&lt;li&gt;Banana&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dairy&lt;ul&gt;
&lt;li&gt;Milk&lt;/li&gt;
&lt;li&gt;Cheese&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Other Elements&lt;/h2&gt;
&lt;h4&gt;Syntax&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;&amp;lt;abbr title=&amp;quot;Graphics Interchange Format&amp;quot;&amp;gt;GIF&amp;lt;/abbr&amp;gt; is a bitmap image format.

H&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;O

X&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; + Y&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt; = Z&amp;lt;sup&amp;gt;n&amp;lt;/sup&amp;gt;

Press &amp;lt;kbd&amp;gt;&amp;lt;kbd&amp;gt;CTRL&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;ALT&amp;lt;/kbd&amp;gt;+&amp;lt;kbd&amp;gt;Delete&amp;lt;/kbd&amp;gt;&amp;lt;/kbd&amp;gt; to end the session.

Most &amp;lt;mark&amp;gt;salamanders&amp;lt;/mark&amp;gt; are nocturnal, and hunt for insects, worms, and other small creatures.
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Output&lt;/h4&gt;
&lt;p&gt;&lt;abbr title=&quot;Graphics Interchange Format&quot;&gt;GIF&lt;/abbr&gt; is a bitmap image format.&lt;/p&gt;
&lt;p&gt;H&lt;sub&gt;2&lt;/sub&gt;O&lt;/p&gt;
&lt;p&gt;X&lt;sup&gt;n&lt;/sup&gt; + Y&lt;sup&gt;n&lt;/sup&gt; = Z&lt;sup&gt;n&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Press &lt;kbd&gt;&lt;kbd&gt;CTRL&lt;/kbd&gt;+&lt;kbd&gt;ALT&lt;/kbd&gt;+&lt;kbd&gt;Delete&lt;/kbd&gt;&lt;/kbd&gt; to end the session.&lt;/p&gt;
&lt;p&gt;Most &lt;mark&gt;salamanders&lt;/mark&gt; are nocturnal, and hunt for insects, worms, and other small creatures.&lt;/p&gt;
</content:encoded><dc:creator>YheBlog</dc:creator><pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate></item><item><title>Using MDX</title><link>https://yheblog.us.kg/blog/using-mdx/</link><guid isPermaLink="true">https://yheblog.us.kg/blog/using-mdx/</guid><description>Lorem ipsum dolor sit amet</description><content:encoded>&lt;blockquote&gt;This rendering was automatically generated by Frosti Feed and may have formatting issues. For the best experience, please visit: &lt;a href=&quot;https://yheblog.us.kg/blog/using-mdx/&quot;&gt;https://yheblog.us.kg/blog/using-mdx/&lt;/a&gt;&lt;/blockquote&gt; &lt;p&gt;This theme comes with the &lt;a href=&quot;https://docs.astro.build/en/guides/integrations-guide/mdx/&quot;&gt;@astrojs/mdx&lt;/a&gt; integration installed and configured in your &lt;code&gt;astro.config.mjs&lt;/code&gt; config file. If you prefer not to use MDX, you can disable support by removing the integration from your config file.&lt;/p&gt;
&lt;h2&gt;Why MDX?&lt;/h2&gt;
&lt;p&gt;MDX is a special flavor of Markdown that supports embedded JavaScript &amp;amp; JSX syntax. This unlocks the ability to &lt;a href=&quot;https://docs.astro.build/en/guides/markdown-content/#mdx-features&quot;&gt;mix JavaScript and UI Components into your Markdown content&lt;/a&gt; for things like interactive charts or alerts.&lt;/p&gt;
&lt;p&gt;If you have existing content authored in MDX, this integration will hopefully make migrating to Astro a breeze.&lt;/p&gt;
&lt;h2&gt;Example&lt;/h2&gt;
&lt;p&gt;Here is how you import and use a UI component inside of MDX.&lt;br&gt;When you open this page in the browser, you should see the clickable button below.&lt;/p&gt;
&lt;h2&gt;More Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mdxjs.com/docs/what-is-mdx&quot;&gt;MDX Syntax Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.astro.build/en/guides/markdown-content/#markdown-and-mdx-pages&quot;&gt;Astro Usage Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;a href=&quot;https://docs.astro.build/en/reference/directives-reference/#client-directives&quot;&gt;Client Directives&lt;/a&gt; are still required to create interactive components. Otherwise, all components in your MDX will render as static HTML (no JavaScript) by default.&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><dc:creator>YheBlog</dc:creator><pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate></item></channel></rss>