<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0"><channel><title>夏萝莉亚</title><link>https://blog.syarolia.com</link><atom:link href="https://blog.syarolia.com/rss.xml" rel="self" type="application/rss+xml"/><description>夏萝莉亚</description><generator>Halo v2.24.1</generator><language>zh-cn</language><image><url>https://blog-oss.syarolia.com/syarolia.jpg</url><title>夏萝莉亚</title><link>https://blog.syarolia.com</link></image><lastBuildDate>Wed, 3 Jun 2026 16:20:36 GMT</lastBuildDate><item><title><![CDATA[GSAP ScrollTrigger 滚动动画实战教程]]></title><link>https://blog.syarolia.com/archives/wwqQh3tY</link><description><![CDATA[<img src="https://blog.syarolia.com/plugins/feed/assets/telemetry.gif?title=GSAP%20ScrollTrigger%20%E6%BB%9A%E5%8A%A8%E5%8A%A8%E7%94%BB%E5%AE%9E%E6%88%98%E6%95%99%E7%A8%8B&amp;url=/archives/wwqQh3tY" width="1" height="1" alt="" style="opacity:0;">本文介绍了在前端动画开发中越来越流行的滚动驱动交互方式，重点讲解了如何使用 GSAP（GreenSock Animation Platform）及其插件 ScrollTrigger，实现随着页面滚动播放动画的效果。文章通过实际示例，从基础入手，详细阐述了 ScrollTrigger 的核心功能，包括滚动触发、动画同步、元素固定等。作者提供了示例代码，演示如何设置滚动触发器以同步动画与滚动位置，确保动画在特定的滚动区域内完成。同时，还分析了每行代码的功能，帮助读者理解如何通过注册插件、创建动画和设置触发器参数来实现交互效果。此外，内文还强调了将 markers 用于调试的重要性，以便更直观地观察动画的开始与结束位置。最后，文章总结了 ScrollTrigger 的关键概念，供读者参考。]]></description><guid isPermaLink="false">/archives/wwqQh3tY</guid><dc:creator>夏萝莉亚</dc:creator><category>前端</category><pubDate>Sat, 28 Feb 2026 09:18:24 GMT</pubDate></item><item><title><![CDATA[从EPUB到Audiobook 将电子书转化为有声书(Azure、OpenAI)]]></title><link>https://blog.syarolia.com/archives/epub2audiobook%20</link><description><![CDATA[<img src="https://blog.syarolia.com/plugins/feed/assets/telemetry.gif?title=%E4%BB%8EEPUB%E5%88%B0Audiobook%20%E5%B0%86%E7%94%B5%E5%AD%90%E4%B9%A6%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%9C%89%E5%A3%B0%E4%B9%A6%28Azure%E3%80%81OpenAI%29&amp;url=/archives/epub2audiobook%20" width="1" height="1" alt="" style="opacity:0;"> epub_to_audiobook 是一个将epub电子书转换为MP3音频书的Python工具，支持使用Azure或OpenAI的语音合成服务，并能通过Docker容器化运行。为环境搭建，用户需准备Python环境或Docker环境，使用时Clone仓库，创建虚拟环境并安装依赖，或直接运行Docker容器。所需服务需先准备账号：Azure和OpenAI分别提供语音服务的接入方式，通过环境变量或API密钥进行配置，并指定所需的服务参数如模型、语音及输出路径等。使用前需要完成账号准备，根据技术水平可选择直接运行源码或使用Docker版。]]></description><guid isPermaLink="false">/archives/epub2audiobook%20</guid><dc:creator>夏萝莉亚</dc:creator><category>环境搭建</category><pubDate>Mon, 23 Sep 2024 07:56:04 GMT</pubDate></item><item><title><![CDATA[Github 使用工作流自动部署前端项目]]></title><link>https://blog.syarolia.com/archives/github-workflow-automated-deployment-projects</link><description><![CDATA[<img src="https://blog.syarolia.com/plugins/feed/assets/telemetry.gif?title=Github%20%E4%BD%BF%E7%94%A8%E5%B7%A5%E4%BD%9C%E6%B5%81%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2%E5%89%8D%E7%AB%AF%E9%A1%B9%E7%9B%AE&amp;url=/archives/github-workflow-automated-deployment-projects" width="1" height="1" alt="" style="opacity:0;"> 这篇指南介绍了如何通过GitHub Actions配置Node.js项目的持续集成（CI）流程。其主要功能包括：在代码推送或创建Pull Request到main分支时自动运行；使用Node.js 20.17.0版本，支持pnpm作为包管理工具；自动化依赖安装、代码构建，并将构建结果（存放在./.output/目录下）通过SSH部署到远程服务器。部署后还会自动重启名为pixiBloom的Docker容器，所有敏感信息均通过GitHub Secrets安全存储并调用。 workflows/node.js.yml）]]></description><guid isPermaLink="false">/archives/github-workflow-automated-deployment-projects</guid><dc:creator>夏萝莉亚</dc:creator><category>环境搭建</category><pubDate>Fri, 20 Sep 2024 08:04:46 GMT</pubDate></item><item><title><![CDATA[MongoDB 备份恢复]]></title><link>https://blog.syarolia.com/archives/mongodb-backup-recovery</link><description><![CDATA[<img src="https://blog.syarolia.com/plugins/feed/assets/telemetry.gif?title=MongoDB%20%E5%A4%87%E4%BB%BD%E6%81%A2%E5%A4%8D&amp;url=/archives/mongodb-backup-recovery" width="1" height="1" alt="" style="opacity:0;"> 这篇文章介绍了MongoDB数据库备份和恢复的使用方法。首先，指导用户从MongoDB官网下载命令行工具，并定位bin目录，其中包含mongodump和mongorestore工具。备份操作使用mongodump命令，需要提供主机、端口、用户名、密码、数据库名和输出路径等参数示例格式给出。恢复操作使用mongorestore命令，参数类似，同样支持对数据库的指定。文章还提到常见认证错误及其解决方法，即添加--authenticationDatabase admin参数。整体内容基于命令行语法，强调备份和恢复作为数据库管理的关键步骤，帮助用户高效安全地操作。每个命令变量如host、port、username和targetPath都提供了解释，确保用户能根据实际情况应用。]]></description><guid isPermaLink="false">/archives/mongodb-backup-recovery</guid><dc:creator>夏萝莉亚</dc:creator><category>后端</category><pubDate>Fri, 30 Aug 2024 01:02:40 GMT</pubDate></item><item><title><![CDATA[Swiper Element（Web 组件） 更改样式]]></title><link>https://blog.syarolia.com/archives/swiper-element-change-style</link><description><![CDATA[<img src="https://blog.syarolia.com/plugins/feed/assets/telemetry.gif?title=Swiper%20Element%EF%BC%88Web%20%E7%BB%84%E4%BB%B6%EF%BC%89%20%E6%9B%B4%E6%94%B9%E6%A0%B7%E5%BC%8F&amp;url=/archives/swiper-element-change-style" width="1" height="1" alt="" style="opacity:0;"> Swiper Web组件不允许使用标准 CSS 选择器（如 `.className`）修改其内部样式，这是由于组件的封装机制所致。为此，开发者需依赖组件公开的 `part` 属性或通过特定API进行样式覆盖。核心观点是，样式修改必须通过 `::part` 伪元素选择器或注入方法来实现，避免直接CSS干预。关键结论包括：利用 `part` 可针对按钮和滚动条等元素定制样式，示例显示了如何应用SCSS或内联样式调整；对于无 `part` 特性的元素，可使用 `injectStyles` API 或 `injectStylesUrls` 方法注入动态样式。总体而言，这些机制提供了安全且灵活的自定义路径，保持组件功能完整性。]]></description><guid isPermaLink="false">/archives/swiper-element-change-style</guid><dc:creator>夏萝莉亚</dc:creator><category>前端</category><pubDate>Fri, 23 Aug 2024 08:37:34 GMT</pubDate></item><item><title><![CDATA[Swiper 匀速无缝轮播]]></title><link>https://blog.syarolia.com/archives/swiper-uniform-and-seamless-rotation</link><description><![CDATA[<img src="https://blog.syarolia.com/plugins/feed/assets/telemetry.gif?title=Swiper%20%E5%8C%80%E9%80%9F%E6%97%A0%E7%BC%9D%E8%BD%AE%E6%92%AD&amp;url=/archives/swiper-uniform-and-seamless-rotation" width="1" height="1" alt="" style="opacity:0;"> **文章摘要：** 本文简要介绍如何通过引入 Swiper 库创建一个基本的轮播图。代码包含了引入 Swiper 的 CSS 和 JS 文件、构建轮播容器的基本 HTML 结构、初始化 Swiper 实例并配置参数（速度、循环模式、自动播放等），以及使用 CSS 自定义轮播过渡动画的缓动函数为线性，以实现更平滑的切换效果。 **关键点：** * **库引入：** 引入 Swiper CSS 和 JS。 * **轮播容器：** 创建 `swiper-container` 作为轮播容器，内部 `swiper-slide` 为轮播项。 * **Swiper初始化：** 通过 JS 初始化 Swiper，并配置 `speed`（切换速度）、`loop`（循环模式）、`autoplay`（自动播放）等参数。 * **过渡效果：** 设置 CSS `transition-timing-function` 为 `linear`，使轮播切换过渡更均匀平滑。]]></description><guid isPermaLink="false">/archives/swiper-uniform-and-seamless-rotation</guid><dc:creator>夏萝莉亚</dc:creator><category>前端</category><pubDate>Wed, 21 Aug 2024 08:45:45 GMT</pubDate></item><item><title><![CDATA[获取 Pixiv RefreshToken]]></title><link>https://blog.syarolia.com/archives/1719900360866</link><description><![CDATA[<img src="https://blog.syarolia.com/plugins/feed/assets/telemetry.gif?title=%E8%8E%B7%E5%8F%96%20Pixiv%20RefreshToken&amp;url=/archives/1719900360866" width="1" height="1" alt="" style="opacity:0;"> **标题：** pxder CLI工具操作指南：执行前准备与登录流程 **正文：** 本文提供了使用 `pxder` 命令行工具的必要步骤，该工具用以批量下载插画图片（源自 Pixiv）。 主要操作涉及： 1. **环境准备：** 确保已安装 Node.js（见相关安装链接）。 2. **安装 pxder：** 使用全局方式安装命令行工具，命令为 `npm i -g pxder`。 3. **登录流程（关键步骤）：** * 尝试直接执行登录命令 `pxder --login`。 * 若报错提及未知模块（如 `qs`），需手动全局安装该模块：`npm i -g (模块名)`，重复直至登录不再报错。 * 成功安装后续模块后，若浏览器未自动跳转，请手动执行登录授权。 * 若非自动跳转，需通过开发者工具追踪登录请求，在最后一个请求中找到 `code` 参数值，并将其输入到 `pxder --login` 命令后的空白处执行，快速完成授权（注意：`code` 容易随时间过期失效）。 4. **登出：** 使用 `pxder --logout` 命令。 5. **导出 Token：** 如需导出当前登录用户的 Token，可执行 `pxder --export-token`。 6. **更多详情：** 可参阅 `pxder` 的 GitHub仓库获取更详细使用方法。]]></description><guid isPermaLink="false">/archives/1719900360866</guid><dc:creator>夏萝莉亚</dc:creator><category>环境搭建</category><pubDate>Tue, 2 Jul 2024 06:08:21 GMT</pubDate></item><item><title><![CDATA[1Penal 搭建邮件服务器]]></title><link>https://blog.syarolia.com/archives/1718160909945</link><description><![CDATA[<img src="https://blog.syarolia.com/plugins/feed/assets/telemetry.gif?title=1Penal%20%E6%90%AD%E5%BB%BA%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8&amp;url=/archives/1718160909945" width="1" height="1" alt="" style="opacity:0;"> 这篇文章提供了一个详细指南，指导用户在Centos系统上使用1Panel管理面板和Maddy Mail 0.7.1软件搭建邮件服务器。主要内容包括域名准备，使用二级域名如mail.kafuuchino.com.cn并申请SSL证书；安装过程涉及通过1Panel应用商店部署Maddy Mail，并上传证书到Docker存储卷；配置阶段覆盖获取DKIM值添加DNS解析，以及设置A、MX、SPF等记录以提升邮件服务安全性；使用部分涉及添加用户账户，包括创建登录和存储账户，并确保服务器开放关键端口如25、143、465等；最后通过发送测试邮件验证功能。指南强调了域名解析和证书的重要性，确保整个过程顺利完成。]]></description><guid isPermaLink="false">/archives/1718160909945</guid><dc:creator>夏萝莉亚</dc:creator><category>环境搭建</category><pubDate>Wed, 12 Jun 2024 09:09:58 GMT</pubDate></item></channel></rss>