<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ 飞翔的熊blabla]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sd19871122</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sd19871122]]></copyright><item><title><![CDATA[# Webpack 5 + Jenkins 持久化缓存实战：前端构建从 288 秒降到 30 秒＞ ]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/164729575</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/164729575</guid><author>sd19871122</author><pubDate>Wed, 09 Sep 2026 11:16:00 +0800</pubDate><description><![CDATA[一个 Vue 2 + Webpack 5 项目的生产构建长期稳定在 4 分钟左右。Webpack 虽然已经配置 filesystem 缓存，但 Jenkins 每次构建前都会清空工作空间，导致 node_modules/.cache/webpack 被删除，所以连续两次构建仍然都是冷构建。最终通过以下闭环落地：为 Webpack 开启文件系统缓存，并配置可靠的失效依赖。采集缓存状态、Webpack 编译耗时和完整构建耗时。Jenkins 不再每次清空整个工作空间，只清理 dist 和发布压缩包。]]></description><category></category></item><item><title><![CDATA[Playwright MCP浏览器自动化指南原创]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/158882476</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/158882476</guid><author>sd19871122</author><pubDate>Tue, 10 Mar 2026 12:25:42 +0800</pubDate><description><![CDATA[现在，借助 Playwright MCP（Model Context Protocol），你可以让AI亲自操作浏览器，实时查看代码执行效果，甚至自动修复运行中出现的问题。无论是自动填写网页表单、抓取动态数据，还是进行复杂的网页操作，Playwright MCP都能让AI成为你的得力助手。这篇文章将一步步带你配置和使用 Playwright MCP，让AI真正成为你的浏览器自动化助手——从此不是你围着它转，而是它主动为你“打工”。AI会自动操作浏览器执行登录，查看错误信息，分析问题原因，并提供修复方案。]]></description><category></category></item><item><title><![CDATA[OpenSpec 功能详解：5 分钟搞懂 AI 编程的“规范驱动“核心]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/157770274</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/157770274</guid><author>sd19871122</author><pubDate>Thu, 05 Feb 2026 15:51:56 +0800</pubDate><description><![CDATA[当我们需要发起新的提案时，可以直接使用：/openspec:proposal 就可以触发该指令，此时 AI 就会根据 proposal.md 中所定义的规范，来创建一个新的变更提案。commands/openspec 这个目录定义了三个不同的命令，每个命令文件中所写的提示词，都是 AI 在执行该命令时需要参考的"规范"。当然，在有需要的时候，我们也可以修改 OpenSpec 初始化时所生成的一系列.md文件，直接变更规范，使其更加符合企业内的业务流程。这背后的设计理念是：最大限度地适配各工具的特性。]]></description><category></category></item><item><title><![CDATA[如何用 AI + OpenSpec 驱动团队迭代开发]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/157765956</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/157765956</guid><author>sd19871122</author><pubDate>Thu, 05 Feb 2026 11:47:12 +0800</pubDate><description><![CDATA[从混乱到有序，从口口相传到知识沉淀，我们用一次实践探索了 AI 辅助团队开发的完整架构。1。]]></description><category></category></item><item><title><![CDATA[学习script setup 语法糖]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/145468737</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/145468737</guid><author>sd19871122</author><pubDate>Thu, 06 Feb 2025 10:54:56 +0800</pubDate><description><![CDATA[传统的写法，我们可以在父组件中，通过 ref 实例的方式去访问子组件的内容，但在 script setup 中，该方法就不能用了，setup 相当于是一个闭包，除了内部的 template模板，谁都不能访问内部的数据和方法。在添加了setup的script标签中，组件只需引入不用注册，属性和方法也不用返回，也不用写setup函数，也不用写export default，甚至是自定义指令也可以在我们的template中自动获得。配置项的缺失，有时候我们需要更改组件选项，在setup中我们目前是无法做到的。]]></description><category></category></item><item><title><![CDATA[Pinia和piniaPluginPersistedstate ]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/145468501</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/145468501</guid><author>sd19871122</author><pubDate>Thu, 06 Feb 2025 10:43:37 +0800</pubDate><description><![CDATA[Pinia 提供了一种更现代化和简化的方式来管理 Vue 应用的状态。通过模块化的设计和对 TypeScript 的良好支持，Pinia 成为 Vue 3 项目的理想选择。希望这个介绍能帮助你更好地理解和使用 Pinia！pinia-plugin-persistedstate 是一个用于 Pinia 的插件，提供了持久化存储的功能。]]></description><category></category></item><item><title><![CDATA[ waybillTags: tags, // 将 `tags` 重命名为 `waybillTags`]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/145341711</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/145341711</guid><author>sd19871122</author><pubDate>Fri, 24 Jan 2025 15:13:23 +0800</pubDate><description><![CDATA[fetchWaybillTags: fetchTags // 将 `fetchTags` 重命名为 `fetchWaybillTags`waybillTags: tags,          // 将 `tags` 重命名为 `waybillTags`]]></description><category></category></item><item><title><![CDATA[1. const { proxy: vm } = getCurrentInstance()]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/145341189</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/145341189</guid><author>sd19871122</author><pubDate>Fri, 24 Jan 2025 14:46:25 +0800</pubDate><description><![CDATA[获取当前组件的实例代理对象vm。使用provide将vm注入到依赖系统中，供子组件访问。]]></description><category></category></item><item><title><![CDATA[C# Winform布局控件的几种方式]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/143787850</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/143787850</guid><author>sd19871122</author><pubDate>Fri, 15 Nov 2024 10:21:52 +0800</pubDate><description><![CDATA[通过设置控件的 Anchor 属性，你可以使控件在窗体大小变化时保持相对于窗体边界的固定距离。在 C# WinForms 应用程序中，布局控件和布局管理器可以帮助开发者创建响应式的用户界面，即使在窗口大小改变时也能保持控件的正确位置和尺寸。通过这些布局控件和方法的组合使用，你可以创建复杂且用户友好的界面，无论是在桌面环境还是不同分辨率的屏幕上，界面都能保持一致性和功能性。为了使控件能够根据窗体大小自动调整，你可以使用 Dock 属性来让控件填满整个容器（如窗体或面板），或者只占据容器的一侧。]]></description><category></category></item><item><title><![CDATA[在 SwiftUI 中创建复杂功能]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/142987485</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/142987485</guid><author>sd19871122</author><pubDate>Wed, 16 Oct 2024 17:29:10 +0800</pubDate><description><![CDATA[本节介绍表盘的主题色，因为 Apple Watch 表盘提供了许多主题色，如全彩，橘红等等，所以在编写自己的复杂组件时，要注意复杂组件在主题色变化时的表现。这是系统提供的另外一种主题色处理方式，这种方式需要在构建视图时存在不同的视图层，这样在主题色变化时，系统会根据不同的层给予不同的颜色。该值可以从环境中取出，可以根据此值，实现在不同的模式下的不同表现。默认的字体会随着组件的大小的变化而变化，Text 组件还提供了不同的日期格式化方式，特别是提供了相对时间的格式化方式，如下图。新的 API 文本组件。]]></description><category></category></item><item><title><![CDATA[【iOS小组件】可交互小组件]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/142920447</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/142920447</guid><author>sd19871122</author><pubDate>Mon, 14 Oct 2024 15:41:56 +0800</pubDate><description><![CDATA[库中，需要先引入 import AppIntents。会作用在可交互的按钮上，当点击按钮的时候就会调用。属性用来存储传入的数字，最后实现了。要想实现可点击交互的按钮需要继承。方法进行计算并将计算结果返回。, 点到组件我们可以看到在。]]></description><category></category></item><item><title><![CDATA[Devexpress中LayoutControl的使用及其控件布局设计----简单介绍。]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/142854545</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/142854545</guid><author>sd19871122</author><pubDate>Fri, 11 Oct 2024 15:06:07 +0800</pubDate><description><![CDATA[4、可以看到拖拽上去之后控件直接覆盖了整个窗体，后面再托GroupControl控件就会产生影响，设置下他的尺寸。右击LayoutControl（窗体边缘），选择Customize Layout。2、找到LayoutControl控件并拖拽到窗体上，属性Dock设置为Fill。1、在测试项目中新建一个winform窗体，设置为Dev类型窗体。3、找到GroupControl控件并拖拽到窗体上。7、右击groupControl1，选择删除。9、给两个Group添加标题并添加一些控件。]]></description><category></category></item><item><title><![CDATA[C# WPF布局控件LayoutControl介绍]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/142854472</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/142854472</guid><author>sd19871122</author><pubDate>Fri, 11 Oct 2024 15:04:23 +0800</pubDate><description><![CDATA[LayoutControl是一个项目容器，将这些项目安排在一行或一列中。可以将LayoutGroup容器作为子容器添加到LayoutControl。LayoutGroup容器允许您将其项目并排（垂直或水平）或作为选项卡进行排列。LayoutGroup可以包含其他LayoutGroup对象作为子对象，以不同的方向排列它们的项目。这允许创建非线性布局：使用LayoutControl的最大好处是，它会自动维护子控件的一致布局。即使调整窗口大小、添加或删除控件，或者更改控件的字体设置，控件也不会重叠。]]></description><category></category></item><item><title><![CDATA[特殊场景跨域处理]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/142127169</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/142127169</guid><author>sd19871122</author><pubDate>Wed, 11 Sep 2024 09:30:19 +0800</pubDate><description><![CDATA[这里不要加，加下面就够了。# 如果是预检请求（OPTIONS请求），直接返回204响应，最重要是这里。]]></description><category></category></item><item><title><![CDATA[c#实现function回调]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/141450958</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/141450958</guid><author>sd19871122</author><pubDate>Fri, 23 Aug 2024 08:55:38 +0800</pubDate><description><![CDATA[null)id =>]]></description><category></category></item><item><title><![CDATA[Visual Studio CefSharp最新版本获取方法]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/141285509</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/141285509</guid><author>sd19871122</author><pubDate>Sat, 17 Aug 2024 19:38:08 +0800</pubDate><description><![CDATA[版权声明：本文为博主原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接和本声明。原文链接：https://blog.youkuaiyun.com/mojocube/article/details/128973698。/// 创建ChromiumWebBrowser 实例。]]></description><category></category></item><item><title><![CDATA[内存溢出如何实现自动化重启]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/138302214</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/138302214</guid><author>sd19871122</author><pubDate>Mon, 29 Apr 2024 09:41:14 +0800</pubDate><description><![CDATA[请谨慎使用此脚本，因为它会在达到内存阈值时重启你的系统，这可能导致数据丢失和正在进行的服务中断。在实际环境中，应该先确保有充分的日志记录和备份机制，以防止数据丢失，并确认重启操作不会影响到其他重要的服务。这样，脚本会定期运行，并在内存使用量超过阈值时自动重启系统。echo "内存使用量超过阈值，系统将重启"如果内存使用量超过某个阈值，触发系统重启。# 设置内存使用量阈值（以百分比计）# 获取当前内存使用量（以百分比计）linux内存溢出系统自动化重启。# 检查内存使用量是否超过阈值。]]></description><category></category></item><item><title><![CDATA[ui转代码转换工具]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/135547977</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/135547977</guid><author>sd19871122</author><pubDate>Fri, 12 Jan 2024 11:12:47 +0800</pubDate><description><![CDATA[https://screenshottocode.com/]]></description><category></category></item><item><title><![CDATA[遇到某ng文件需要支持跨域的解决方案]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/133301160</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/133301160</guid><author>sd19871122</author><pubDate>Tue, 26 Sep 2023 11:14:44 +0800</pubDate><description><![CDATA[设置是否允许 cookie 传输。# 允许请求地址跨域 * 做为通配符。# 允许跨域的请求方法。]]></description><category></category></item><item><title><![CDATA[Android 应用锁/程序锁（APPLock）的实现]]></title><link>https://blog.youkuaiyun.com/sd19871122/article/details/132531856</link><guid>https://blog.youkuaiyun.com/sd19871122/article/details/132531856</guid><author>sd19871122</author><pubDate>Mon, 28 Aug 2023 09:14:11 +0800</pubDate><description><![CDATA[当用户点击了返回，由于我们的LockService中的WindowManager并没有改变实际的启动Activity的生命周期，所以返回键还是作用在实际Activity上了，所以实际Activity消失，此时根据后台的循环判断，最上次的Activity栈已经不是要被Lock的，根据刚才保存的状态，同样将密码界面消失掉。如果密码界面正在显示的时候，用户点击返回，会怎么样？当用户启动了要Lock的应用，LockService就会察觉到，此时显示密码界面，让用户输入密码，密码正确后，密码界面消失。]]></description><category></category></item></channel></rss>