<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>牧宇的Blog</title><link>https://www.lihuanyu.com</link><description>以代码记行藏，以文字观万象；守寸心而求真，循长风以致远。</description><item><title>Ubuntu 22.04上部署Docker Redis实战</title><link>https://www.lihuanyu.com/posts/2025/Ubuntu%2022.04%E4%B8%8A%E9%83%A8%E7%BD%B2Docker%20Redis%E5%AE%9E%E6%88%98/</link><guid>https://www.lihuanyu.com/posts/2025/Ubuntu%2022.04%E4%B8%8A%E9%83%A8%E7%BD%B2Docker%20Redis%E5%AE%9E%E6%88%98/</guid><pubDate>Sat, 08 Nov 2025 00:00:00 GMT</pubDate><description>前言 这篇文章记录了我在Ubuntu 22.04轻量应用服务器上部署Docker和Redis的完整过程，包括安装、配置、运行和资源监控。通过实际操作，验证Docker在Linux服务器上的资源开销确实很小。 环境： 系统：Ubuntu 22.04 LTS 配置：入门级配置（轻量应用服务器） 目标：部署一个用于配置同步的Redis实例</description></item><item><title>重新认识Docker的性能开销</title><link>https://www.lihuanyu.com/posts/2025/%E9%87%8D%E6%96%B0%E8%AE%A4%E8%AF%86Docker%E7%9A%84%E6%80%A7%E8%83%BD%E5%BC%80%E9%94%80/</link><guid>https://www.lihuanyu.com/posts/2025/%E9%87%8D%E6%96%B0%E8%AE%A4%E8%AF%86Docker%E7%9A%84%E6%80%A7%E8%83%BD%E5%BC%80%E9%94%80/</guid><pubDate>Sat, 08 Nov 2025 00:00:00 GMT</pubDate><description>从误解说起 最初接触Docker是在macOS开发环境中。每次启动Docker Desktop，都能感受到明显的性能影响：风扇噪音增大，Activity Monitor显示内存占用数GB，系统响应变慢。Windows环境下的体验也类似。 这样的体验让我形成了一个固有印象：Docker是资源密集型工具。因此在管理轻量应用服务器（1核2G、2核4G配置）时，我一</description></item><item><title>NestJS 框架下的三种测试类型对比分析</title><link>https://www.lihuanyu.com/posts/2025/NestJS-%E6%A1%86%E6%9E%B6%E4%B8%8B%E7%9A%84%E4%B8%89%E7%A7%8D%E6%B5%8B%E8%AF%95%E7%B1%BB%E5%9E%8B%E5%AF%B9%E6%AF%94%E5%88%86%E6%9E%90/</link><guid>https://www.lihuanyu.com/posts/2025/NestJS-%E6%A1%86%E6%9E%B6%E4%B8%8B%E7%9A%84%E4%B8%89%E7%A7%8D%E6%B5%8B%E8%AF%95%E7%B1%BB%E5%9E%8B%E5%AF%B9%E6%AF%94%E5%88%86%E6%9E%90/</guid><pubDate>Sun, 20 Jul 2025 00:00:00 GMT</pubDate><description>概述 本文以NestJS框架为例，深入对比分析单元测试、集成测试和端到端 E2E 测试的核心区别，帮助开发者在实际项目中选择合适的测试策略。</description></item><item><title>GitHub Actions 自动发布 npm 包简易指南</title><link>https://www.lihuanyu.com/posts/2025/GitHub-Actions-%E8%87%AA%E5%8A%A8%E5%8F%91%E5%B8%83-npm-%E5%8C%85%E7%AE%80%E6%98%93%E6%8C%87%E5%8D%97/</link><guid>https://www.lihuanyu.com/posts/2025/GitHub-Actions-%E8%87%AA%E5%8A%A8%E5%8F%91%E5%B8%83-npm-%E5%8C%85%E7%AE%80%E6%98%93%E6%8C%87%E5%8D%97/</guid><pubDate>Sat, 19 Jul 2025 00:00:00 GMT</pubDate><description>概述 GitHub Actions作为GitHub原生的CI/CD工具，为开发者提供了强大的自动化能力。通过GitHub Actions自动发布npm包，可以显著提升开发效率，减少人为错误，确保发布流程的一致性和可靠性。</description></item><item><title>无人驾驶与人因工程</title><link>https://www.lihuanyu.com/posts/2025/%E6%97%A0%E4%BA%BA%E9%A9%BE%E9%A9%B6%E4%B8%8E%E4%BA%BA%E5%9B%A0%E5%B7%A5%E7%A8%8B/</link><guid>https://www.lihuanyu.com/posts/2025/%E6%97%A0%E4%BA%BA%E9%A9%BE%E9%A9%B6%E4%B8%8E%E4%BA%BA%E5%9B%A0%E5%B7%A5%E7%A8%8B/</guid><pubDate>Sat, 26 Apr 2025 00:00:00 GMT</pubDate><description>2025年3月29日22时44分，一辆小米SU7标准版在德上高速公路池祁段行驶过程中遭遇严重交通事故。根据小米公司披露的信息，事故发生前车辆处于NOA智能辅助驾驶状态，以116km/h时速持续行驶。事发路段因施工修缮，用路障封闭自车道、改道至逆向车道。车辆检测出障碍物后发出提醒并开始减速。随后驾驶员接管车辆进入人驾状态，持续减速并操控车辆转向，随后车辆与隔离</description></item><item><title>如何集成Github登录</title><link>https://www.lihuanyu.com/posts/2025/%E5%A6%82%E4%BD%95%E9%9B%86%E6%88%90Github%E7%99%BB%E5%BD%95/</link><guid>https://www.lihuanyu.com/posts/2025/%E5%A6%82%E4%BD%95%E9%9B%86%E6%88%90Github%E7%99%BB%E5%BD%95/</guid><pubDate>Sun, 20 Apr 2025 00:00:00 GMT</pubDate><description>现在越来越多的网站不再自建登录系统，而是采用第三方登录的方式。比如：QQ、微信、微博、Github等。 其中Github登录是偏技术类网站或新一些的网站的首选，因为它的开放API和生态系统非常强大。 那么如何集成Github登录呢？本文介绍前端主导的Github登录流程。</description></item><item><title>互联网创业寒冬</title><link>https://www.lihuanyu.com/posts/2025/%E4%BA%92%E8%81%94%E7%BD%91%E5%88%9B%E4%B8%9A%E5%AF%92%E5%86%AC/</link><guid>https://www.lihuanyu.com/posts/2025/%E4%BA%92%E8%81%94%E7%BD%91%E5%88%9B%E4%B8%9A%E5%AF%92%E5%86%AC/</guid><pubDate>Sun, 16 Feb 2025 00:00:00 GMT</pubDate><description>阮一峰的 Blog 里提到，现在互联网创业几乎消失了，并引用了一篇文章同时总结了4个原因。 1. 互联网行业已经成熟了，留给创业者的机会大幅减少。互联网的大部分果实已被摘取，早期的高增长难以再现。真正的创新机会即使还能找到，也会被现有的大公司快速抄袭，不会留给创业者。AI 大模型出现后，互联网本身也在衰弱，创业机会就更少了。 2. 创业的机会成本变大了。一个</description></item><item><title>在Github Action里构建大型Docker镜像</title><link>https://www.lihuanyu.com/posts/2025/%E5%9C%A8Github%20Action%E9%87%8C%E6%9E%84%E5%BB%BA%E5%A4%A7%E5%9E%8BDocker%E9%95%9C%E5%83%8F/</link><guid>https://www.lihuanyu.com/posts/2025/%E5%9C%A8Github%20Action%E9%87%8C%E6%9E%84%E5%BB%BA%E5%A4%A7%E5%9E%8BDocker%E9%95%9C%E5%83%8F/</guid><pubDate>Sun, 16 Feb 2025 00:00:00 GMT</pubDate><description>GitHub 提供了非常好用的 Action 功能，最常见的是可以在里面做一些 CI 工作，比如单元测试、Lint等。 在国内，受一堵墙的影响，不少开发事项需要特殊的技巧方能正常进行，以至于中国程序员人均拥有比外国程序员更好的网络基础知识。 这堵墙在 Docker 镜像构建方面影响尤其大，虽然通过配置代理可以解决，但如果我们想在构建里再装一些 Python </description></item><item><title>小程序组件库该用rpx还是px？</title><link>https://www.lihuanyu.com/posts/2025/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%BB%84%E4%BB%B6%E5%BA%93%E8%AF%A5%E7%94%A8rpx%E8%BF%98%E6%98%AFpx/</link><guid>https://www.lihuanyu.com/posts/2025/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%BB%84%E4%BB%B6%E5%BA%93%E8%AF%A5%E7%94%A8rpx%E8%BF%98%E6%98%AFpx/</guid><pubDate>Sat, 15 Feb 2025 00:00:00 GMT</pubDate><description>一、问题背景：组件库用 px，业务开发用 rpx 1.1 现状冲突 目前小程序的开发领域有一个奇怪的现象： 组件库 ：Vant、Uni UI 等主流组件库的样式表中， width: 100px 随处可见 业务代码 ：业务前端清一色使用 width: 200rpx ，开发者对 rpx 趋之若鹜 这就引出一个 矛盾点 ：当开发者引入一个 px 单位的按钮组件时，</description></item><item><title>在国内的平台，你没有粉丝</title><link>https://www.lihuanyu.com/posts/2025/%E5%9C%A8%E5%9B%BD%E5%86%85%E7%9A%84%E5%B9%B3%E5%8F%B0%E4%BD%A0%E6%B2%A1%E6%9C%89%E7%B2%89%E4%B8%9D/</link><guid>https://www.lihuanyu.com/posts/2025/%E5%9C%A8%E5%9B%BD%E5%86%85%E7%9A%84%E5%B9%B3%E5%8F%B0%E4%BD%A0%E6%B2%A1%E6%9C%89%E7%B2%89%E4%B8%9D/</guid><pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate><description>不知道有多少搞自媒体的朋友，不管是玩抖音、快手、视频号、公众号、小红书、微博，只要仔细想一想，就会发现，我们的粉丝根本不是自己的，而是平台的。 算法时代：内容的可见性由谁决定？ 曾几何时，关注一个账号，就能稳定地看到他的所有更新。但现在，即使关注了100个账号，平台也只会优先推送其中20 30个。这不是我们的选择，而是算法的决定。 以抖音为例，据非官方数据显</description></item><item><title>本地部署deepseek与SillyTavern</title><link>https://www.lihuanyu.com/posts/2025/%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2deepseek%E4%B8%8ESillyTavern/</link><guid>https://www.lihuanyu.com/posts/2025/%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2deepseek%E4%B8%8ESillyTavern/</guid><pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate><description>25年的春节，深度求索（deepseek）给AI圈乃至全国人民都带来一个很厉害的AI模型。Deepseek R1，一个仅用600万不到的成本训练出来的大模型做到了和全球最先进的 OpenAI O1 模型不相上下的效果。这背后带来的变化有无数博主春节加班给大家分享，我这里就不班门弄斧了，不仅了解的信息比别人少，文笔也远不如那些头部自媒体。但作为一个技术人，分享</description></item><item><title>【译】什么是前端架构</title><link>https://www.lihuanyu.com/posts/2025/%E4%BB%80%E4%B9%88%E6%98%AF%E5%89%8D%E7%AB%AF%E6%9E%B6%E6%9E%84/</link><guid>https://www.lihuanyu.com/posts/2025/%E4%BB%80%E4%B9%88%E6%98%AF%E5%89%8D%E7%AB%AF%E6%9E%B6%E6%9E%84/</guid><pubDate>Wed, 29 Jan 2025 00:00:00 GMT</pubDate><description>英语原文在此： 一开始看到了其他人的翻译，比较认可这篇文章的不少内容，所以进行一个转载，但又不想纠结于一些版权方面的问题，所以干脆基于原文让最近大火的 DeepSeek R1 帮我翻译一遍。 当你思考系统设计时，不要纠结于技术选型，而应聚焦于你希望系统具备的核心特性。技术选型只是这些特性的载体。 —— Gregor Hohpe 免责声明 ：如果你自认为只是个</description></item><item><title>25年的微信红包封面</title><link>https://www.lihuanyu.com/posts/2025/25%E5%B9%B4%E7%9A%84%E5%BE%AE%E4%BF%A1%E7%BA%A2%E5%8C%85%E5%B0%81%E9%9D%A2/</link><guid>https://www.lihuanyu.com/posts/2025/25%E5%B9%B4%E7%9A%84%E5%BE%AE%E4%BF%A1%E7%BA%A2%E5%8C%85%E5%B0%81%E9%9D%A2/</guid><pubDate>Mon, 27 Jan 2025 00:00:00 GMT</pubDate><description>23 年因为 AI 的兴起搞了个微信公众号和小程序，没想到微信的算法给推了一波流，爆了几篇文章，粉丝数在 24 年过年时候就已经到 1500 了，微信给了 1200 个红包封面，当时应该还是个稀罕货，挺有意思。 25 年的春节又来了，这次微信更大方了，给了我 6000 个红包封面，但大概率我一个都发不出去了。</description></item><item><title>AI应用开发者的困局</title><link>https://www.lihuanyu.com/posts/2024/AI%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E8%80%85%E7%9A%84%E5%9B%B0%E5%B1%80/</link><guid>https://www.lihuanyu.com/posts/2024/AI%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E8%80%85%E7%9A%84%E5%9B%B0%E5%B1%80/</guid><pubDate>Sun, 22 Sep 2024 00:00:00 GMT</pubDate><description>自从 openAI 带了这波 AI 热潮，很多工程师开始着手开发 AI 应用。比如我写了几个小程序，效果上看还不错的一个是AI绘图领域的。 这个小程序目前累计用户高达3.6万，日UV却只有100 200之间波动。留存率非常低，活跃用户留存仅10% 20%，新用户更惨，7日留存基本在1% 5%左右徘徊。</description></item><item><title>如何把svg渲染成png图片</title><link>https://www.lihuanyu.com/posts/2024/%E5%A6%82%E4%BD%95%E6%8A%8Asvg%E6%B8%B2%E6%9F%93%E6%88%90png%E5%9B%BE%E7%89%87/</link><guid>https://www.lihuanyu.com/posts/2024/%E5%A6%82%E4%BD%95%E6%8A%8Asvg%E6%B8%B2%E6%9F%93%E6%88%90png%E5%9B%BE%E7%89%87/</guid><pubDate>Sat, 21 Sep 2024 00:00:00 GMT</pubDate><description>简洁版：在小程序里无法把svg转为png，cloudflare 的 worker 上也不能，最终选择在自运维的服务器上转换。 背景 最近prompt大师开发了一套新的提示词很有意思，能把一个词语用鲁迅的语气，幽默、讽刺、批判性的进行解释。这个提示词要配合 Claude AI 使用，输出的内容是 SVG 。</description></item><item><title>图床系列之tinypng自动压缩图片</title><link>https://www.lihuanyu.com/posts/2024/%E5%9B%BE%E5%BA%8A%E7%B3%BB%E5%88%97%E4%B9%8Btinypng%E8%87%AA%E5%8A%A8%E5%8E%8B%E7%BC%A9%E5%9B%BE%E7%89%87/</link><guid>https://www.lihuanyu.com/posts/2024/%E5%9B%BE%E5%BA%8A%E7%B3%BB%E5%88%97%E4%B9%8Btinypng%E8%87%AA%E5%8A%A8%E5%8E%8B%E7%BC%A9%E5%9B%BE%E7%89%87/</guid><pubDate>Sat, 18 May 2024 00:00:00 GMT</pubDate><description>前置内容： 使用cloudflare R2托管图片 使用cloudflare搭建个人图床 R2的存储空间虽然很便宜，但图片尺寸仍然应该尽可能小，节约存储空间的同时也减少传输体积，节约加载时间。所以图片在上传前最好是能压缩一下。目前非常好用的压缩图片的工具网站是 tinypng，所以之前一般是手动去 tinypng 对图片进行压缩后再上传，但这样很麻烦，所以今</description></item><item><title>shadcn-ui 组件库</title><link>https://www.lihuanyu.com/posts/2024/shadcn-ui%E7%BB%84%E4%BB%B6%E5%BA%93/</link><guid>https://www.lihuanyu.com/posts/2024/shadcn-ui%E7%BB%84%E4%BB%B6%E5%BA%93/</guid><pubDate>Wed, 07 Feb 2024 00:00:00 GMT</pubDate><description>忘记之前在哪看到，说欧美市场现在普遍流行的组件库方案不是 AntD，也不是 mui，而是 shadcn ui ，没听说过这个之前，最近碰巧看到 Solid ui ，是一个非官方的 shadcn ui 的 SolidJS 版本实现，就对其本体也很感兴趣，打开看了觉得有点意思。</description></item><item><title>使用cloudflare搭建个人图床</title><link>https://www.lihuanyu.com/posts/2023/%E4%BD%BF%E7%94%A8cloudflare%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%9B%BE%E5%BA%8A/</link><guid>https://www.lihuanyu.com/posts/2023/%E4%BD%BF%E7%94%A8cloudflare%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%9B%BE%E5%BA%8A/</guid><pubDate>Mon, 04 Dec 2023 00:00:00 GMT</pubDate><description>上次分享了一篇使用 cloudflare 作为个人图床的方案，但是比较粗糙，仅仅是直接使用 cloudflare 的 R2 的控制台上传图片，自己拼接图片地址，属于 能用，但并不好用 的状态。 这次我们更产品一点，做一个可视的个人图床应用，包括图片上传、删除、查看、搜索。如果需要将其真正用于生产，还需要一个域名，因为 cloudflare 的免费 dev 域</description></item><item><title>大厂的起起落落</title><link>https://www.lihuanyu.com/posts/2023/%E5%A4%A7%E5%8E%82%E7%9A%84%E8%B5%B7%E8%B5%B7%E8%90%BD%E8%90%BD/</link><guid>https://www.lihuanyu.com/posts/2023/%E5%A4%A7%E5%8E%82%E7%9A%84%E8%B5%B7%E8%B5%B7%E8%90%BD%E8%90%BD/</guid><pubDate>Mon, 04 Dec 2023 00:00:00 GMT</pubDate><description>2023年11月底，拼多多的股票市值超越了阿里巴巴，目前还很难说是否会再反复变化排名，但是显然阿里巴巴已经不再是电商领域独一无二的王，BAT的时代已经彻底落幕。 2013年刚上大学时听到的BAT，当时排名第一的是百度，第二阿里第三腾讯。因为是相关专业，当年不仅记住了这三家大公司，还记得三家所长，所谓“百度的技术、阿里的运营、腾讯的产品”。 10年过去了，吹技</description></item><item><title>英语的口音</title><link>https://www.lihuanyu.com/posts/2023/%E8%8B%B1%E8%AF%AD%E7%9A%84%E5%8F%A3%E9%9F%B3/</link><guid>https://www.lihuanyu.com/posts/2023/%E8%8B%B1%E8%AF%AD%E7%9A%84%E5%8F%A3%E9%9F%B3/</guid><pubDate>Sun, 12 Nov 2023 00:00:00 GMT</pubDate><description>一个嘲笑印度、日本人说英语的笑话：两个印度人在嘲笑日本人的英语发。&quot;Jabonese agcent is vedy, vedy hard to undershdand.&quot; 然后被日本人神吐槽 &quot;Indeian ekusento ishi belly belly haudo tsu andasudando.&quot; 以前总觉得中国人说英文的发音还是蛮标准的，至少比印</description></item><item><title>NestJS 拦截器与跳过拦截器</title><link>https://www.lihuanyu.com/posts/2023/nestjs%E6%8B%A6%E6%88%AA%E5%99%A8%E4%B8%8E%E8%B7%B3%E8%BF%87%E6%8B%A6%E6%88%AA%E5%99%A8/</link><guid>https://www.lihuanyu.com/posts/2023/nestjs%E6%8B%A6%E6%88%AA%E5%99%A8%E4%B8%8E%E8%B7%B3%E8%BF%87%E6%8B%A6%E6%88%AA%E5%99%A8/</guid><pubDate>Sun, 22 Oct 2023 00:00:00 GMT</pubDate><description>写 API 接口时，我们通常希望有个统一的结构包裹一下要返回的数据，每个接口分别去写不光繁琐，还容易不一致，所以一般会用一个统一的拦截器来实现这个功能。各种语言的不同框架基本都有对应的拦截器写法，今天分享下 nestjs 里如何编写拦截器和如何跳过拦截器。</description></item><item><title>你好兰州</title><link>https://www.lihuanyu.com/posts/2023/%E4%BD%A0%E5%A5%BD%E5%85%B0%E5%B7%9E/</link><guid>https://www.lihuanyu.com/posts/2023/%E4%BD%A0%E5%A5%BD%E5%85%B0%E5%B7%9E/</guid><pubDate>Fri, 29 Sep 2023 00:00:00 GMT</pubDate><description>中秋的前一天，关系要好的大学室友要结婚了，请假两天去兰州参加婚礼，草草游览了兰州。 因为时间和价格的原因，这趟行程往返都是火车，还是硬卧，本来以为睡一觉就能到达，会比飞机更舒服。但实际硬卧车厢的体验并不好，人很多环境比较脏，还有烟味和小孩的吵闹，睡眠质量向来还可以的我都失眠到两三点才迷迷糊糊睡了过去。</description></item><item><title>React 里的 key 不只是列表优化</title><link>https://www.lihuanyu.com/posts/2023/React%E7%9A%84key/</link><guid>https://www.lihuanyu.com/posts/2023/React%E7%9A%84key/</guid><pubDate>Tue, 19 Sep 2023 00:00:00 GMT</pubDate><description>最近组里的同学问我，在小程序里想强制重建一个组件要怎么办。 背景是一个表单渲染器内部状态处理得不够干净，切换数据后偶尔需要销毁再创建。我之前也遇到过，处理方式比较直接：用条件渲染让组件先消失再出现。比如先把 a:if 改成 false ，下一轮再改回 true 。 同学说，PC 里的 React 只要改一下 key 就行，小程序不支持吗？</description></item><item><title>Mac磁盘清理工具推荐</title><link>https://www.lihuanyu.com/posts/2023/Mac%E7%A3%81%E7%9B%98%E6%B8%85%E7%90%86%E5%B7%A5%E5%85%B7%E6%8E%A8%E8%8D%90/</link><guid>https://www.lihuanyu.com/posts/2023/Mac%E7%A3%81%E7%9B%98%E6%B8%85%E7%90%86%E5%B7%A5%E5%85%B7%E6%8E%A8%E8%8D%90/</guid><pubDate>Sat, 16 Sep 2023 00:00:00 GMT</pubDate><description>Mac 电脑性能不错，但是内存和硬盘都是大坑，又贵又小。虽然 mac 软件不多并不像 Windows 一样占用硬盘过大，但是长期使用下来，磁盘空间也是一个问题。今天推荐一个 mac 磁盘清理工具，或者说磁盘体积分析工具，方便找到磁盘空间被占用的原因。</description></item><item><title>记录一次SQL注入与问题排查</title><link>https://www.lihuanyu.com/posts/2023/%E8%AE%B0%E5%BD%95%E4%B8%80%E6%AC%A1SQL%E6%B3%A8%E5%85%A5%E4%B8%8E%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/</link><guid>https://www.lihuanyu.com/posts/2023/%E8%AE%B0%E5%BD%95%E4%B8%80%E6%AC%A1SQL%E6%B3%A8%E5%85%A5%E4%B8%8E%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/</guid><pubDate>Sun, 20 Aug 2023 00:00:00 GMT</pubDate><description>最近做了一个小程序，用 nestJS 做的服务端，数据库是 MySQL 。然后被SQL注入攻击了，第一次遇到，感觉还很有意思，记录一下。 其实是微信平台做的模拟攻击，所以也并没有任何实际破坏，仅仅是数据库里被塞入了多条不符合预期的数据。</description></item><item><title>使用cloudflare R2托管图片</title><link>https://www.lihuanyu.com/posts/2023/%E4%BD%BF%E7%94%A8cloudflare%20R2%E6%89%98%E7%AE%A1%E5%9B%BE%E7%89%87/</link><guid>https://www.lihuanyu.com/posts/2023/%E4%BD%BF%E7%94%A8cloudflare%20R2%E6%89%98%E7%AE%A1%E5%9B%BE%E7%89%87/</guid><pubDate>Sun, 12 Mar 2023 00:00:00 GMT</pubDate><description>我的个人 blog 还是比较有历史的，大概是13年的时候就开始备案域名搞云服务器玩，最早是用的 wordpress ，一个 PHP 的 CMS 系统。功能挺强的，但是维护实在麻烦心累，数据库的管理和迁移尤其麻烦。 后来就走上了静态生成这条路，先是 Jekyll 现在是 Hexo。现在Hexo的更新维护也比较慢了，也许未来还会换一个热门的，如果有时间的话。</description></item><item><title>小程序页面顶部的空隙</title><link>https://www.lihuanyu.com/posts/2023/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E9%A1%B5%E9%9D%A2%E9%A1%B6%E9%83%A8%E7%9A%84%E7%A9%BA%E9%9A%99/</link><guid>https://www.lihuanyu.com/posts/2023/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E9%A1%B5%E9%9D%A2%E9%A1%B6%E9%83%A8%E7%9A%84%E7%A9%BA%E9%9A%99/</guid><pubDate>Sun, 19 Feb 2023 00:00:00 GMT</pubDate><description>TL;DR：移动端web页面顶上如果有空隙的话，可以对页面父元素用 padding 或者加空元素防止因 margin 塌陷造成的不正常滚动。 起源 强迫症同学有没有注意到，很多小程序的页面，明明不超过一页，但是却可以滚，但又只能滚一点点。</description></item><item><title>画图工具-excalidraw</title><link>https://www.lihuanyu.com/posts/2022/%E7%94%BB%E5%9B%BE%E5%B7%A5%E5%85%B7-excalidraw/</link><guid>https://www.lihuanyu.com/posts/2022/%E7%94%BB%E5%9B%BE%E5%B7%A5%E5%85%B7-excalidraw/</guid><pubDate>Mon, 26 Sep 2022 00:00:00 GMT</pubDate><description>画图一直是我的弱项。也可能单纯是想得不够多，不够清晰，想好才能画好。 思路也许需要较长的时间去培养，但是技巧和工具可以通过练习快速掌握。最近发现了一个很不错的画图工具 excalidraw</description></item><item><title>交互的意义</title><link>https://www.lihuanyu.com/posts/2022/%E4%BA%A4%E4%BA%92%E7%9A%84%E6%84%8F%E4%B9%89/</link><guid>https://www.lihuanyu.com/posts/2022/%E4%BA%A4%E4%BA%92%E7%9A%84%E6%84%8F%E4%B9%89/</guid><pubDate>Sun, 25 Sep 2022 00:00:00 GMT</pubDate><description>生活小细节突然体会到交互的意义。 交互真是一个非常奇妙的东西，优秀的交互会让人觉得事情本该如此，平平无奇。只有当遇上糟糕的交互，才会觉得产品设计方面多么需要一个优秀的交互。</description></item><item><title>codespace初体验</title><link>https://www.lihuanyu.com/posts/2022/codespace%E5%88%9D%E4%BD%93%E9%AA%8C/</link><guid>https://www.lihuanyu.com/posts/2022/codespace%E5%88%9D%E4%BD%93%E9%AA%8C/</guid><pubDate>Thu, 19 May 2022 00:00:00 GMT</pubDate><description>恭喜GitHub做成了真正可用的云IDE 现在我正在使用iPad编写这个内容，体验非常丝滑，唯一可能有点不足的是初次进入等场景下网络有点慢。有了这个工具，只需要记住GitHub的账号密码，真的是可以实现随时随地写点东西了。</description></item><item><title>CSS之图片下的空隙与文本居中</title><link>https://www.lihuanyu.com/posts/2022/CSS%E4%B9%8B%E5%9B%BE%E7%89%87%E4%B8%8B%E7%9A%84%E7%A9%BA%E9%9A%99%E4%B8%8E%E6%96%87%E6%9C%AC%E5%B1%85%E4%B8%AD/</link><guid>https://www.lihuanyu.com/posts/2022/CSS%E4%B9%8B%E5%9B%BE%E7%89%87%E4%B8%8B%E7%9A%84%E7%A9%BA%E9%9A%99%E4%B8%8E%E6%96%87%E6%9C%AC%E5%B1%85%E4%B8%AD/</guid><pubDate>Sun, 06 Mar 2022 00:00:00 GMT</pubDate><description>前端工程师应该都有遇到过，使用图片时会在下方有个小空隙。这个小空隙很难找到它是如何形成的，但是还好我们有搜索引擎，因此很容易会知道解决办法：</description></item><item><title>前端依赖与可信构建</title><link>https://www.lihuanyu.com/posts/2022/%E5%89%8D%E7%AB%AF%E4%BE%9D%E8%B5%96%E4%B8%8E%E4%BF%A1%E4%BB%BB/</link><guid>https://www.lihuanyu.com/posts/2022/%E5%89%8D%E7%AB%AF%E4%BE%9D%E8%B5%96%E4%B8%8E%E4%BF%A1%E4%BB%BB/</guid><pubDate>Tue, 11 Jan 2022 00:00:00 GMT</pubDate><description>背景 前端使用npm来作为包管理工具，它的使用门槛/发包门槛低到惊人，好处是培养了非常丰富的社区和庞大的第三方包，包的数量远超第二名maven。 但所有东西都会有代价，坏处是npm的包质量方面良莠不齐，依赖链非常深，很简单的小工具方法都可能去使用包。</description></item><item><title>21年随笔</title><link>https://www.lihuanyu.com/posts/2021/21%E5%B9%B4%E9%9A%8F%E7%AC%94/</link><guid>https://www.lihuanyu.com/posts/2021/21%E5%B9%B4%E9%9A%8F%E7%AC%94/</guid><pubDate>Thu, 30 Dec 2021 00:00:00 GMT</pubDate><description>21年快要过完了，再不写点什么，可真就什么都没写了。水一篇，记录生活。</description></item><item><title>滴滴出行小程序I18n最佳实践</title><link>https://www.lihuanyu.com/posts/2020/%E6%BB%B4%E6%BB%B4%E5%87%BA%E8%A1%8C%E5%B0%8F%E7%A8%8B%E5%BA%8FI18n%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/</link><guid>https://www.lihuanyu.com/posts/2020/%E6%BB%B4%E6%BB%B4%E5%87%BA%E8%A1%8C%E5%B0%8F%E7%A8%8B%E5%BA%8FI18n%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/</guid><pubDate>Mon, 31 Aug 2020 00:00:00 GMT</pubDate><description>背景 I18n = Internationalization，国际化，因为单词由首末字符i/n和中间18个字母组成，简称i18n。对程序来说，就是要在不修改内部代码的情况下，能根据不同语言及地区显示相应的界面，以支持不同语言的人顺利使用程序。 业务背景 互联网行业进入下半场，精细化运营是关键。多语言支持能让产品更好地服务境内的其他语言用户，也为产品出海打下基</description></item><item><title>从Travis迁移到GitHub-Actions</title><link>https://www.lihuanyu.com/posts/2020/%E4%BB%8ETravis%E8%BF%81%E7%A7%BB%E5%88%B0GitHub-Actions/</link><guid>https://www.lihuanyu.com/posts/2020/%E4%BB%8ETravis%E8%BF%81%E7%A7%BB%E5%88%B0GitHub-Actions/</guid><pubDate>Sun, 21 Jun 2020 00:00:00 GMT</pubDate><description>背景 最近将blog和mpx template都从Travis迁移成GitHub Actions了，两者都是持续集成工具。 为什么迁移原因也比较简单，Travis不够稳定，经常挂掉。而GitHub Actions有着更好的稳定性/性能，且整合集成得也更好。</description></item><item><title>滴滴出行小程序体积优化实践</title><link>https://www.lihuanyu.com/posts/2020/%E6%BB%B4%E6%BB%B4%E5%87%BA%E8%A1%8C%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%BD%93%E7%A7%AF%E4%BC%98%E5%8C%96%E5%AE%9E%E8%B7%B5/</link><guid>https://www.lihuanyu.com/posts/2020/%E6%BB%B4%E6%BB%B4%E5%87%BA%E8%A1%8C%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%BD%93%E7%A7%AF%E4%BC%98%E5%8C%96%E5%AE%9E%E8%B7%B5/</guid><pubDate>Sun, 07 Jun 2020 00:00:00 GMT</pubDate><description>概述 2019年下半年，为了将微信钱包/支付宝九宫格入口的滴滴出行迁移为小程序，团队对小程序进行了大量的功能升级与补全。在整个过程中也遇到并克服了一系列问题和挑战，其中包体积问题尤为突出。接下来全面介绍一下滴滴出行小程序在体积控制方面做的努力与沉淀。</description></item><item><title>nginx+express做一个简易代理服务</title><link>https://www.lihuanyu.com/posts/2020/nginx-express%E5%81%9A%E4%B8%80%E4%B8%AA%E7%AE%80%E6%98%93%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1/</link><guid>https://www.lihuanyu.com/posts/2020/nginx-express%E5%81%9A%E4%B8%80%E4%B8%AA%E7%AE%80%E6%98%93%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1/</guid><pubDate>Sun, 31 May 2020 00:00:00 GMT</pubDate><description>用 NGINX + EXPRESS + Let&apos;s Encrypt 构建HTTPS接口服务</description></item><item><title>NPM小技巧</title><link>https://www.lihuanyu.com/posts/2020/NPM%E5%B0%8F%E6%8A%80%E5%B7%A7/</link><guid>https://www.lihuanyu.com/posts/2020/NPM%E5%B0%8F%E6%8A%80%E5%B7%A7/</guid><pubDate>Sun, 10 May 2020 00:00:00 GMT</pubDate><description>package.json里描述依赖时候一般版本声明是前面带 &apos;^&apos; 的形式，意味着安装依赖时npm会自动尝试去安装声明版本的最新patch，多人合作一个项目时就可能出现大家依赖不一致的问题，出现问题后的复现与调试会比较麻烦，容易出现仅在某台电脑上可以复现的情况。</description></item><item><title>小程序开发者，为什么你应该尝试下MPX</title><link>https://www.lihuanyu.com/posts/2019/mpx1/</link><guid>https://www.lihuanyu.com/posts/2019/mpx1/</guid><pubDate>Sun, 26 May 2019 00:00:00 GMT</pubDate><description>MPX框架 是滴滴出行推出的一款专注小程序开发的增强型框架。本篇文章将从使用角度谈谈MPX的优势与好处。如果嫌内容太长，优势部分每个小节都有简单的一句话总结，可以快速阅读。如果想了解更多设计细节，可以阅读 前一篇文章 MPX2.0发布。 背景 在小程序逐渐火热的今天，越来越多的开发者需要进行小程序的开发。原生小程序的开发有诸多不便，开发者又需要在众多的小程序</description></item><item><title>docker for windows不响应react项目改变后的重编译</title><link>https://www.lihuanyu.com/posts/2017/docker-for-windows%E4%B8%8D%E5%93%8D%E5%BA%94react%E9%A1%B9%E7%9B%AE%E6%94%B9%E5%8F%98%E5%90%8E%E7%9A%84%E9%87%8D%E7%BC%96%E8%AF%91/</link><guid>https://www.lihuanyu.com/posts/2017/docker-for-windows%E4%B8%8D%E5%93%8D%E5%BA%94react%E9%A1%B9%E7%9B%AE%E6%94%B9%E5%8F%98%E5%90%8E%E7%9A%84%E9%87%8D%E7%BC%96%E8%AF%91/</guid><pubDate>Tue, 05 Dec 2017 00:00:00 GMT</pubDate><description>docker一般用于部署，但也可以用于统一开发环境，解决诸如前后端分离后单边开发者无法获得一个完整的开发环境的问题。所以我写了这个项目简单实践一下用docker来简化开发环境。其中遇到了一个docker在windows下表现不正常的问题及其解决方案。</description></item><item><title>前端项目工程化实践</title><link>https://www.lihuanyu.com/posts/2017/%E5%89%8D%E7%AB%AF%E9%A1%B9%E7%9B%AE%E5%B7%A5%E7%A8%8B%E5%8C%96%E5%AE%9E%E8%B7%B5/</link><guid>https://www.lihuanyu.com/posts/2017/%E5%89%8D%E7%AB%AF%E9%A1%B9%E7%9B%AE%E5%B7%A5%E7%A8%8B%E5%8C%96%E5%AE%9E%E8%B7%B5/</guid><pubDate>Thu, 30 Nov 2017 00:00:00 GMT</pubDate><description>17年9月起和朋友合作了一个项目，一套组件库Antue，好听点说叫造轮子。主要是把蚂蚁金服的Ant Design给“翻译&quot;成Vue可用的组件库。这是一个蛮正式的项目，规模也挺大，所以给了我一个实践工程化的好场景。</description></item><item><title>谈谈CORS下前端的cookie</title><link>https://www.lihuanyu.com/posts/2017/%E8%B0%88%E8%B0%88CORS%E4%B8%8B%E5%89%8D%E7%AB%AF%E7%9A%84cookie/</link><guid>https://www.lihuanyu.com/posts/2017/%E8%B0%88%E8%B0%88CORS%E4%B8%8B%E5%89%8D%E7%AB%AF%E7%9A%84cookie/</guid><pubDate>Sat, 02 Sep 2017 00:00:00 GMT</pubDate><description>跨域有多种解决方案，包括JSONP，CORS，反向代理等等。CORS是我感觉最“优雅”的一种方案。但是这个方案下的cookie有一些不一样的表现，做相关尝试后做点记录。</description></item><item><title>使用Docker解决开发环境问题</title><link>https://www.lihuanyu.com/posts/2017/%E4%BD%BF%E7%94%A8Docker%E8%A7%A3%E5%86%B3%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E9%97%AE%E9%A2%98/</link><guid>https://www.lihuanyu.com/posts/2017/%E4%BD%BF%E7%94%A8Docker%E8%A7%A3%E5%86%B3%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E9%97%AE%E9%A2%98/</guid><pubDate>Sun, 20 Aug 2017 00:00:00 GMT</pubDate><description>日常开发中，我们常常被开发环境所困扰。比如我司一些老项目，使用的fis系列构建工具，需要非常低版本的node，还需要jdk。还有工作中大家使用的电脑操作系统不同，可能出现在mac上运行得好好的项目在Windows上死活跑不起来。</description></item><item><title>package-lock.json[译]</title><link>https://www.lihuanyu.com/posts/2017/package-lock-json-%E8%AF%91/</link><guid>https://www.lihuanyu.com/posts/2017/package-lock-json-%E8%AF%91/</guid><pubDate>Thu, 10 Aug 2017 00:00:00 GMT</pubDate><description>为了更好的理解这个package lock.json是干什么的，花了一点时间把npm官网这篇文档翻译了一下，第一次翻译英文文档，很多地方拿不准，用 标注了。</description></item><item><title>vue-cli webpack模板mock数据的方法</title><link>https://www.lihuanyu.com/posts/2017/webpack%E6%A8%A1%E6%9D%BFmock%E6%95%B0%E6%8D%AE%E7%9A%84%E6%96%B9%E6%B3%95/</link><guid>https://www.lihuanyu.com/posts/2017/webpack%E6%A8%A1%E6%9D%BFmock%E6%95%B0%E6%8D%AE%E7%9A%84%E6%96%B9%E6%B3%95/</guid><pubDate>Sun, 09 Jul 2017 00:00:00 GMT</pubDate><description>vue cli是Vue提供的脚手架生成工具，类似于yeoman，它提供的webpack模板非常好用。但在前后端分离的开发模式下，没有提供较好的mock数据的方案。应该是留给用户自己解决，毕竟mock数据的方案比较多。我这里只介绍通过修改改模板的express服务器，添加一些路由的形式来使本地的json文件作为服务器响应返回来提供mock数据。</description></item><item><title>解决问题之道</title><link>https://www.lihuanyu.com/posts/2017/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98%E4%B9%8B%E9%81%93/</link><guid>https://www.lihuanyu.com/posts/2017/%E8%A7%A3%E5%86%B3%E9%97%AE%E9%A2%98%E4%B9%8B%E9%81%93/</guid><pubDate>Sat, 08 Apr 2017 00:00:00 GMT</pubDate><description>工程师最重要的不是炫技，而是解决问题。能结合最好最新的技术解决问题，才是最吼的！</description></item><item><title>Hello World</title><link>https://www.lihuanyu.com/posts/2017/hello-world/</link><guid>https://www.lihuanyu.com/posts/2017/hello-world/</guid><pubDate>Fri, 27 Jan 2017 00:00:00 GMT</pubDate><description>趁着新年把blog转型成简洁的hexo博客了，之前的文章本来想迁移过来，但是读了一下感觉都惨不忍睹，算了，大部分都扔掉吧，重新开始！</description></item><item><title>写了个前端渲染的教程</title><link>https://www.lihuanyu.com/posts/2016/%E5%86%99%E4%BA%86%E4%B8%AA%E5%89%8D%E7%AB%AF%E6%B8%B2%E6%9F%93%E7%9A%84%E6%95%99%E7%A8%8B/</link><guid>https://www.lihuanyu.com/posts/2016/%E5%86%99%E4%BA%86%E4%B8%AA%E5%89%8D%E7%AB%AF%E6%B8%B2%E6%9F%93%E7%9A%84%E6%95%99%E7%A8%8B/</guid><pubDate>Sun, 18 Dec 2016 00:00:00 GMT</pubDate><description>写了个前端渲染的教程。 Github地址 打滚求星星。</description></item><item><title>对前后端分离的思考</title><link>https://www.lihuanyu.com/posts/2016/%E5%AF%B9%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB%E7%9A%84%E6%80%9D%E8%80%83/</link><guid>https://www.lihuanyu.com/posts/2016/%E5%AF%B9%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB%E7%9A%84%E6%80%9D%E8%80%83/</guid><pubDate>Sat, 23 Jul 2016 00:00:00 GMT</pubDate><description>结合在学校做易班轻应用时候的一些思考，记录下我为什么要做前后端分离的历史/原因/意义/效果。</description></item></channel></rss>