我为什么开发 AI 英语听力生成器:Im-Listening

<p><img src="/./why-i-developed-listening-esonwong-com/cover.webp" alt="我为什么开发 AI 英语听力生成器:Im-Listening"></p> <p>我一直在保持自学英语。在听力方面,我经常面临一个艰难的挑战:市面上的听力材料要么太简单(比如慢速英语),没有挑战就无法学到新的知识;要么太难(比如 CNN&#x2F;BBC 原声),语速过快,生词太多,挫败感极强。</p> <p>我尝试过市面上的各种听力 App 和网络上推荐的资源,但始终找不到<strong>既符合我兴趣又适合我当前水平</strong>的听力材料。</p> <p>既然找不到合适自己的工具,那就自己写一个。于是,我决定自己动手,开发一个工具,利用生成式 AI,根据我的兴趣和水平,<strong>即时生成个性化的英语听力材料</strong>:**<a href="https://listening.esonwong.com/">listening.esonwong.com</a>**</p>

2026/2/26
阅读更多

Playwright E2E 测试框架入门教程

<p><img src="https://api-next.esonwong.com/blog-banner?title=Playwright%20E2E%20%E6%B5%8B%E8%AF%95%E6%A1%86%E6%9E%B6%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B" alt="Playwright"></p> <p><a href="https://www.einktodo.com/">www.einktodo.com</a> 是我为 E-ink Todo List 设备开发的网站,为了减少在它上面的测试工作的时间,我使用了 <a href="https://playwright.dev/">Playwright</a> 来进行 E2E 测试。</p> <p><a href="https://playwright.dev/">Playwright</a> 是一个由微软开发的 E2E 测试框架,它可以模拟用户在浏览器中的操作,比如点击、输入、滚动等等。Playwright 支持多种浏览器,包括 Chrome、Firefox、Safari 等等,而且它还支持多种编程语言,比如 Javascript、Python、C# 等等。</p> <p>在这篇文章中,我将向你展示如何使用 Playwright 来进行 E2E 测试。我们将会使用 Typescript 来编写测试代码。</p>

2025/10/26
阅读更多

如何使用 LlamaIndex 构建一个 RAG 检索系统

<pre><code class="highlight mermaid">mindmap ((LLamaIndex)) ((知识库)) ((搜索引擎)) ((Agent)) ((Workflow)) ((大语言模型))</code></pre> <p>LLamaIndex 是一个基于大语言模型的应用的开源框架,可以用于构建 RAG 检索系统和其他基于大语言模型的应用。</p> <p>本文将从浅及深地介绍如何使用 LlamaIndex 实现一个简单的以向量检索和搜索引擎检索作为基础的 RAG 检索系统。</p>

2025/10/12
阅读更多

批评

<p>真正能接受批评的人,能把“批评的事件”和“自我身份的认同”进行课题分离。</p> <p>通常这样的人,也能从负面信息里提炼出值得改进的行为。(包括是否应该远离发出不当批评的人)</p>

2025/8/20
阅读更多

Milvus 入门教程

<p><img src="https://api-next.esonwong.com/blog-banner?title=Milvus%20%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B" alt="Milvus"></p> <p>Milvus 是一个开源的向量数据库,它是为了生成式 AI 的应用设计的。它支持大规模的向量检索。</p> <p>Milvus 的发音是 &#x2F;ˈmil vəs&#x2F;。</p> <p>本文将是 Milvus 的使用入门。</p>

2024/10/10
阅读更多

怎么在网页中实现自动调整视频的清晰度

<p><img src="https://api-next.esonwong.com/blog-banner?title=HTTP%20Live%20Streaming%20(HLS)" alt="HTTP Live Streaming (HLS)"></p> <p>HTTP Live Streaming (HLS) 是 Apple 开发的一种流媒体协议。能够根据用户的网络状况自动调整视频的清晰度。它将整个视频分成一系列小的 HTTP 文件,每个文件包含一小段视频内容。这种方式可以让视频在不同的网络环境下更加流畅地播放。</p> <p>本文们将介绍如何在网页中使用实现基于 HLS 视频播放,并显示当前播放的分辨率。</p>

2024/9/11
阅读更多

什么是检索增强生成(Retrieval-Augmented Generation)?

<p>最近在主导一个 AI 检索的项目,需要对检索增强生成(RAG)有所了解,下面是我对检索增强生成(RAG)的一个初浅的了解。</p> <p>索增强生成(RAG)是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。</p> <p>检索增强生成

2024/9/10
阅读更多

Phonics 自然拼读常见规则 - 辅音字母的发音规律

<p>辅音字母的读音通常是辅音字母发音的辅音部份。但是存在非常多的例外情况。</p> <table> <thead> <tr> <th>字母</th> <th>常见</th> <th></th> <th>组合发音</th> </tr> </thead> <tbody><tr> <td>B</td> <td>&#x2F;b&#x2F;</td> <td>不发音</td> <td></td> </tr> <tr> <td>C</td> <td>&#x2F;k&#x2F; 和 &#x2F;s&#x2F;</td> <td></td> <td>&#x2F;tʃ&#x2F;</td> </tr> <tr> <td>D</td> <td>&#x2F;d&#x2F;</td> <td></td> <td>&#x2F;dʒ&#x2F;</td> </tr> <tr> <td>F</td> <td>&#x2F;f&#x2F;</td> <td>&#x2F;v&#x2F;</td> <td></td> </tr> <tr> <td>G</td> <td>&#x2F;g&#x2F; 和 &#x2F;dʒ&#x2F;</td> <td></td> <td>&#x2F;ŋ&#x2F;</td> </tr> <tr> <td>H</td> <td>&#x2F;h&#x2F;</td> <td></td> <td>&#x2F;θ&#x2F; &#x2F;ð&#x2F; &#x2F;tʃ&#x2F; &#x2F;ʃ&#x2F; &#x2F;w&#x2F; &#x2F;f&#x2F; 不发音</td> </tr> <tr> <td>J</td> <td>&#x2F;dʒ&#x2F;</td> <td></td> <td></td> </tr> <tr> <td>K</td> <td>&#x2F;k&#x2F;</td> <td></td> <td></td> </tr> <tr> <td>L</td> <td>&#x2F;l&#x2F;</td> <td>元音化</td> <td></td> </tr> <tr> <td>M</td> <td>&#x2F;m&#x2F;</td> <td></td> <td></td> </tr> <tr> <td>N</td> <td>&#x2F;n&#x2F;</td> <td></td> <td>&#x2F;ŋ&#x2F;</td> </tr> <tr> <td>P</td> <td>&#x2F;p&#x2F;</td> <td></td> <td>&#x2F;f&#x2F;</td> </tr> <tr> <td>Q</td> <td>&#x2F;k&#x2F;</td> <td></td> <td>&#x2F;kw&#x2F;</td> </tr> <tr> <td>R</td> <td>&#x2F;r&#x2F;</td> <td></td> <td>&#x2F;r&#x2F;</td> </tr> <tr> <td>S</td> <td>&#x2F;s&#x2F;</td> <td>&#x2F;z&#x2F;</td> <td>&#x2F;ʃ&#x2F; &#x2F;ʒer&#x2F; &#x2F;ʃ(ə)n&#x2F; &#x2F;ʒən&#x2F;</td> </tr> <tr> <td>T</td> <td>&#x2F;t&#x2F;</td> <td></td> <td>&#x2F;ʃ&#x2F; &#x2F;tʃ&#x2F; &#x2F;tr&#x2F;</td> </tr> <tr> <td>V</td> <td>&#x2F;v&#x2F;</td> <td></td> <td></td> </tr> <tr> <td>W</td> <td>&#x2F;w&#x2F;</td> <td>元音化</td> <td>不发音</td> </tr> <tr> <td>X</td> <td>&#x2F;ks&#x2F;</td> <td>&#x2F;gz&#x2F;</td> <td>&#x2F;z&#x2F;</td> </tr> <tr> <td>Y</td> <td>&#x2F;j&#x2F; &#x2F;aɪ&#x2F; &#x2F;ɪ&#x2F;</td> <td></td> <td></td> </tr> <tr> <td>Z</td> <td>&#x2F;z&#x2F;</td> <td></td> <td></td> </tr> </tbody></table>

2024/9/9
阅读更多

ESP8266EX 自动下载电路

<p><img src="https://api-next.esonwong.com/blog-banner?title=ESP-12F%20%E8%87%AA%E5%8A%A8%E4%B8%8B%E8%BD%BD%E7%94%B5%E8%B7%AF" alt="ESP-12F 自动下载电路"></p> <p>ESP-12F 是一款集成了 ESP8266EX 芯片的模块,在 ESP-12F 上 GPIO0 引脚 在 EN 引脚上升沿(从低电平到高电平)时,如果 GPIO0 引脚为低电平,ESP-12F 将进入下载模式。</p>

2024/7/7
阅读更多

浅聊 esp8266

<p><img src="/./esp8266/cover.webp" alt="PCB"></p> <p>最近在做 <a href="https://www.einktodo.com/">E-ink Todo List</a> 项目,用到了 ESP8266,所以就简单的聊一下 ESP8266。</p>

2024/6/2
阅读更多

墨水屏 Todo List 制作教程

<style> .post-body img { max-height: 800px; } </style> <script> window.difyChatbotConfig = { token: 'gc7zMgtbwd6BAygx', baseUrl: 'https://dify.esonwong.com' } </script> <script src="https://dify.esonwong.com/embed.min.js" id="gc7zMgtbwd6BAygx" defer> </script> <style> #dify-chatbot-bubble-button { background-color: #1C64F2 !important; } #dify-chatbot-bubble-window { width: 24rem !important; height: 40rem !important; } </style> <p><img src="/./e-ink-screen-todo-list-creation-turial/cover.webp" alt="墨水屏 Todo List 制作教程"></p> <p>我在 Twitter 发布的一条 tweet,写了我使用了墨水屏制作了一个 Todo List,可以同步苹果提醒的全家待办列表。收到了很多推友的关注,所以我决定写一个教程,帮助大家制作一个墨水屏 Todo List。</p> <p>同步服务由我开发的 <a href="https://einktodo.com/">einktodo.com</a> 提供。</p>

2024/3/8
阅读更多

2023 年我买过的最好用的商品

<p><img src="https://api-next.esonwong.com/blog-banner?title=2023%20%E5%B9%B4%E6%88%91%E4%B9%B0%E8%BF%87%E7%9A%84%E6%9C%80%E5%A5%BD%E7%94%A8%E7%9A%84%E5%95%86%E5%93%81" alt="2023 年我买过的最好用的商品"></p> <p>我在 2022 的年末写了一篇文章 <a href="/the-best-product-i-bought-in-2022">2022 年我买过的最好用的商品</a>,介绍了我 2022 年购入的我觉得最好用的商品。</p> <p>在这个中文互联网自媒体觉大多数都依赖厂家推广费存活的时代,看到真实的商品评价越来越难。所以我打算每年年末都写一篇这样的文章,介绍我买过的那些我觉得好用或者每天者在使用的商品。让中文互联网上多一丝丝真实消费者的声音。</p>

2024/1/29
阅读更多

转变自我的密码:《Atomic Habits》读后感

<p><img src="/./atomic-habits/cover.webp" alt="掌控习惯"></p> <p>在我们的生活里,习惯就像是无声的指挥官,默默地引导着我们的行动和选择。在《Atomic Habits》这本书中,詹姆斯·克利尔(James Clear)用他洞见卓识的笔触,展现了如何通过习惯的力量来雕塑更好的自我。这本书不仅是养成好习惯的指南,更是一部自我改革的宝典,它教会我们将小变化累加成巨大的成果。</p>

2023/11/30
阅读更多

Phonics 自然拼读常见规则 - 音节和元音字母的发音规律

<p>自然拼读法是通过英语中的音节和音素之间的关系,根据这些规则正确地发音和拼写单词的方法。通过自然拼读法,学习者可以更轻松地理解和记忆英语单词的发音,提高阅读流畅性和拼写准确性。</p> <table> <thead> <tr> <th></th> <th>重读开音节</th> <th>重读闭音节</th> <th>非重读音节</th> </tr> </thead> <tbody><tr> <td>A</td> <td>&#x2F;eɪ&#x2F;</td> <td>&#x2F;æ&#x2F;</td> <td>&#x2F;ə&#x2F;</td> </tr> <tr> <td>E</td> <td>&#x2F;iː&#x2F;</td> <td>&#x2F;e&#x2F;</td> <td>&#x2F;ə&#x2F; or &#x2F;ɪ&#x2F;</td> </tr> <tr> <td>I</td> <td>&#x2F;aɪ&#x2F;</td> <td>&#x2F;ɪ&#x2F;</td> <td>&#x2F;ə&#x2F; or &#x2F;ɪ&#x2F;</td> </tr> <tr> <td>O</td> <td>&#x2F;əʊ&#x2F;</td> <td>&#x2F;ɒ&#x2F;</td> <td>&#x2F;ə&#x2F;</td> </tr> <tr> <td>U</td> <td>&#x2F;juː&#x2F;</td> <td>&#x2F;ʌ&#x2F;</td> <td>&#x2F;ə&#x2F;</td> </tr> </tbody></table> <p>辅音字母的拼读规则见我的另一篇博客 <a href="/phonics-of-consonants">Phonics 自然拼读常见规则 - 辅音字母的发音规律</a>。</p> <h2 id="音节"><a href="#音节" class="headerlink" title="音节"></a>音节</h2><h3 id="什么是音节"><a href="#什么是音节" class="headerlink" title="什么是音节"></a>什么是音节</h3><p>音节是发音的基本单位,是一个发音的完整单位。音节的划分对于一个单词的读音至关重要,自然拼读的规律基本上是针对单个音节的。</p> <p>一个音节,只会包含一次出气,出气时的声带的振动被称为元音;牙齿、舌头、嘴唇等部位的阻碍气流发出的声音被称为辅音。</p> <p>音节由一个元音或一个元音加一个或几个辅音组成。中文里每个字都是一个音节。英文里每个单词会有一个或多个音节。</p>

2023/10/28
阅读更多

怎么用 Github Actions 部署 Next.js 项目到服务器

<p><img src="/./how-to-deploy-next-js-project-to-the-server-using-github-actions/cover.webp" alt="怎么用 Github Actions 部署 Next.js 项目到服务器?"></p> <p>最近开发一个项目 Next.js,部署到 Vercel 上在国内访问速度和稳定性都不太好,所以想部署到自己的服务器上。经过实践后,分享一下怎么用 Github Actions 部署 Next.js 项目到 Linux 服务器上。</p>

2023/10/9
阅读更多

使用 v4l 采集摄像头

<p><img src="/./how-to-use-ffmpeg-with-camera-on-linux/cover.webp" alt="怎么在 Linux 上使用 FFmpeg 采集摄像头"></p> <p>FFmpeg 是一个非常强大的视频处理工具。大多数应用都会使用 FFmpeg 来处理视频。我的 <a href="https://network-rc.esonwong.com/">Network RC</a> 项目也使用了 FFmpeg 来处理视频。</p>

2023/9/28
阅读更多

怎么解决 Prettier 和 ESLint 在 VSCode 里的冲突?

<p><img src="/./how-to-resolve-prettier-and-eslint-and-vscode-auto-fix-conflict/cover.webp" alt="怎么解决 Prettier 和 ESLint 在 VSCode 里的冲突?"></p> <p>Prettier 是一个代码格式化工具。ESLint 是一个代码检查工具,它可以检查你的代码是否遵循了规范。他们通常会在项目中一起使用。前端开发过程中,我们通常会使用 Prettier 和 ESLint 来保持代码的可读性和统一代码风格和规范。项目脚手架工具和代码编辑器都可以引入 Prettier 和 ESLint 工具。</p>

2023/9/18
阅读更多

《微习惯》 - 读书笔记

<p><img src="/./mini-habits/cover.jpg" alt="微习惯封面"></p> <p>这本书我是与《自控力》一起读的。都是基于相同的目的而读:学习和运用其中实际可操作的方法,为我开发的 App 设计功能帮用户能够改变自己。</p>

2023/9/15
阅读更多

在 iPad 使用 VS Code 写代码

<p><img src="/./coding-on-iPad/cover.jpeg" alt="iPad 上的 VS Code"></p> <p>VS Code 推出了 tunnel 插件和服务,现在终于可以方便的在 iPad 的浏览器上打开 VS Code 了。</p>

2023/8/29
阅读更多

在 Macbook 上运行 ChatGLM-6B

<p><img src="/./Macbook-run-ChatGLM-6B/screenshot.png" alt="ChatGLM-6B Web"><br>我有一台 32G 内存 Macbook Pro,想要运行大语言模型看能不能替代 OpenAI 的 API。下面是我在 Macbook 上运行 ChatGLM-6B 的步骤。</p>

2023/8/13
阅读更多