Ivan Hanloth的博客 - Ivan Hanloth
type: channel
link: http://blog.ivan-hanloth.cn/author/1/
description: Ivan Hanloth
items: Nuxt 4 完整迁移指南：从 3.x 到 4.0 的全面升级
items: 告别代码烂摊子！2025前端自动化神器（ESLint、Prettier等）一篇搞定！前端工程化：自动化代码质量保障体系构建指南
items: Boss Key V2.1.0版本发布
items: gunicorn+socketio无法链接、反复长轮询400的解决方案
items: 多端同步笔记软件Obsidian拓展指南、从OneNote转入指南【附速率限制解决方案】
items: 多端同步markdown笔记软件深度体验评测（附软件截图）——还在纠结用什么软件记笔记的同学快进来看看！
items: Lyrics Downloader V1.2.3版本发布
items: Boss Key V2.0.2版本发布
items: Nand2Tetris教程：3.2 逐步构建算数逻辑单元
items: Nand2Tetris教程：3.1 构建基础逻辑门

Nuxt 4 完整迁移指南：从 3.x 到 4.0 的全面升级
type: item
date: 2025-10-04T21:42:00+08:00
description: 前言Nuxt 4 计划于 2025 年第二季度正式发布，带来了大量的性能优化和架构改进。本文将详细介绍 Nuxt 3.x 到 4.0 的所有重大变更，并提供完整的迁移步骤指南。快速开始：如何测试 Nuxt 4在正式版发布前，你可以通过以下方式提前体验 Nuxt 4 的特性：1. 升级到最新版本# npm npx nuxt upgrade # yarn yarn nuxt upgrade # pnpm pnpm nuxt upgrade # bun bun x nuxt upgrade2. 启用 Nuxt 4 兼容模式在 nuxt.config.ts 中添加：export default defineNuxtConfig({ future: { compatibilityVersion: 4, }, })3. 使用自动化迁移工具Nuxt 团队与 Codemod 合作提供了自动化迁移工具：npx codemod@latest nuxt/4/migration-recipe这个命令会依次执行所有迁移脚本，你可以选择性地运行需要的部分。主要变更详解🔥 1. 新的目录结构（影响级别：重大）变更内容Nuxt 4 采用了全新的默认目录结构，具有向后兼容性：旧结构（Nuxt 3）：. ├── components/ ├── pages/ ├── plugins/ ├── server/ ├── public/ └── nuxt.config.ts新结构（Nuxt 4）：. ├── app/ # 新增：应用代码目录 │ ├── assets/ │ ├── components/ │ ├── composables/ │ ├── layouts/ │ ├── middleware/ │ ├── pages/ │ ├── plugins/ │ ├── utils/ │ ├── app.vue │ ├── error.vue │ ├── app.config.ts │ └── router.options.ts ├── content/ # 保持在根目录 ├── layers/ # 保持在根目录 ├── modules/ # 保持在根目录 ├── public/ # 保持在根目录 ├── server/ # 保持在根目录 └── nuxt.config.ts # 保持在根目录关键变更默认 srcDir 为 app/：大部分应用代码都放在 app/ 目录下serverDir 默认为 <rootDir>/server：而不是 <srcDir>/server~ 别名指向 app/：例如 ~/components 解析为 app/components/根目录保留：layers/、modules/、public/、server/ 仍在项目根目录迁移理由性能优化：避免 .git/ 和 node_modules/ 被文件监视器扫描IDE 类型安全：server/ 和应用代码运行在不同上下文，分离有助于更好的自动补全迁移步骤自动迁移：npx codemod@latest nuxt/4/file-structure手动迁移：创建 app/ 目录移动以下文件夹到 app/ 下：assets/components/composables/layouts/middleware/pages/plugins/utils/app.vueerror.vueapp.config.ts保持以下文件夹在根目录：nuxt.config.tscontent/layers/modules/public/server/更新第三方配置文件（如 tailwind.config.js、.eslintrc 等）如需保持旧结构：export default defineNuxtConfig({ srcDir: '.', dir: { app: 'app' } })🔄 2. 单例数据获取层（影响级别：中等）变更内容Nuxt 4 重新设计了 useAsyncData 和 useFetch 的数据获取系统：共享引用：相同 key 的所有调用共享 data、error 和 status 引用响应式 key 支持：可以使用 computed、ref 或 getter 函数作为 key数据清理：组件卸载时自动清理数据，避免内存泄漏改进的 getCachedData 控制：每次获取数据时都会调用该函数迁移步骤检查冲突选项：// ❌ 错误：相同 key，不同选项 const { data: users1 } = useAsyncData('users', () => $fetch('/api/users'), { deep: false }) const { data: users2 } = useAsyncData('…

告别代码烂摊子！2025前端自动化神器（ESLint、Prettier等）一篇搞定！前端工程化：自动化代码质量保障体系构建指南
type: item
date: 2025-09-30T05:43:00+08:00
description: 引言在现代前端工程实践中，代码质量和团队协作效率的提升离不开完善的自动化工具链。本文将系统性地介绍如何构建一套完整的代码质量保障体系，涵盖代码检查、格式化和提交前自动验证等关键环节。问题背景在团队协作开发中，代码风格不一致是一个普遍存在的问题。不同开发者可能采用不同的缩进方式、引号风格等编码习惯，这导致代码审查过程中产生大量与业务逻辑无关的讨论，降低了团队协作效率。通过引入自动化工具链，我们可以有效解决这一问题。本文将介绍以下核心工具的配置与集成：ESLint：静态代码分析工具，用于检测代码质量问题和潜在错误Prettier：代码格式化工具，统一代码风格Stylelint：样式代码检查工具，确保 CSS/SCSS 代码质量Husky：Git hooks 管理工具，在关键节点触发自动化流程Lint-staged：增量检查工具，仅对暂存文件执行检查，提升效率工具概览与职责划分在配置之前，理解各工具的职责边界至关重要，特别是 ESLint 和 Prettier 的区分。ESLint：代码质量分析核心功能ESLint 是一个可插拔、可配置的 JavaScript/TypeScript 静态代码分析工具。它通过解析代码为抽象语法树（AST）来检测代码模式，主要目标是发现潜在错误并强制执行最佳实践。检测范围变量使用前未定义（no-use-before-define）潜在的逻辑错误代码异味和反模式TypeScript 类型相关问题（通过 typescript-eslint）架构特点ESLint 采用完全可插拔的架构。核心规则和插件系统支持社区扩展，可针对特定框架（如 React）或语言特性进行定制。Prettier：代码格式化核心功能Prettier 是一个固执己见（Opinionated）的代码格式化工具。它将代码解析后按照预设规则重新格式化，确保整个团队的代码风格完全一致。处理范围行长度控制缩进方式引号类型分号使用支持多种语言（JavaScript、TypeScript、CSS、HTML、JSON、Markdown 等）设计理念Prettier 有意限制配置选项，秉承"配置一次，永久生效"的理念，最大程度减少团队内部关于代码风格的争论。Stylelint：样式代码检查核心功能Stylelint 是专门针对 CSS 及类 CSS 语法（SCSS、Sass、Less）的现代化 linter 工具。检测能力样式错误（如格式错误的网格区域、重复选择器）代码规范强制（如禁用特定单位、命名模式验证）选择器复杂度控制扩展性支持可共享配置，能够解析嵌入在 HTML、Markdown 和 CSS-in-JS 中的样式代码。Husky：Git Hooks 管理核心功能Husky 是一个轻量级的 Git hooks 管理工具，简化了 pre-commit、pre-push 等钩子的配置和使用。工作机制利用 Git 的 core.hooksPath 配置，实现高效的钩子管理。初始化后在项目根目录创建 .husky/ 目录存放钩子脚本。Lint-staged：增量检查核心功能Lint-staged 仅对 Git 暂存区（staged）的文件执行 linter 和 formatter。性能优势避免对整个项目执行检查，显著提升提交前检查的执行速度。与 Husky 的 pre-commit 钩子配合使用效果最佳。工具职责对照表工具核心功能主要配置文件VS Code 插件 IDESLint代码质量与错误检测eslint.config.jsdbaeumer.vscode-eslintPrettier代码格式化.prettierrc.jsesbenp.prettier-vscodeStylelintCSS/SCSS 质量检查stylelint.config.jsstylelint.vscode-stylelintHuskyGit hooks 管理.husky/pre-commitN/ALint-staged暂存文件任务执行package.jsonN/A分步配置指南本节将详细说明如何为 TypeScript + React 项目构建完整的自动化工具链。环境要求Node.js 版本：^18.18.0、^20.9.0 或 >=21.1.0项目已初始化 package.json第一步：配置 PrettierPrettier 配置相对独立，建议首先完成其设置。安装依赖npm install --save-dev --save-exact prettier使用 --save-exact 标志锁定版本，确保团队成员使用相同版本，避免格式化结果差异。创建配置文件创建 .prettierrc.js 文件：/** @type {import("prettier").Config} */ mod…

Boss Key V2.1.0版本发布
type: item
date: 2025-04-21T14:50:00+08:00
description: Boss Key V2.1.0版本正式发布啦！开源地址：IvanHanloth/Boss-Key (github.com)从这个版本开始，Boss Key将支持鼠标中键、侧键的按键隐藏，支持鼠标移至四角快速隐藏，支持指定时长无操作自动隐藏等超多使用功能，安全摸鱼！新版本中也加入了“进程冻结”功能，支持在隐藏窗口时自动冻结对应进程，减少资源占用。简单唠嗑难得新增这么多功能，所以发了个新的小版本。由于现在功能逐渐增多，我在考虑给Boss Key搭建一个官网或者文档来提供更具体的帮助。有些功能的名称可能对刚接触的用户有点懵逼，加个帮助功能应该会好一点。但是有熟悉博主的水友就要说了：主播主播，你的Easy-Send那么多star你都不给一个官网，Boss-Key才多少star，怎么你就要建官网了？主要Easy-Send好久没更新了，也基本没人用，没有建官网的必要，现有的文档已经足够了。Easy-Send主要是面向开发者的，很多功能对开发者而言探索难度不达。但是Boss Key主要是面向无技术的用户、普通用户，探索功能的时间少，需要更详细的描述，程序内又加不下……（编不下去了，反正就是要建一个（我不管））现在Boss-Key还有三个问题，一个是没有对win7进行兼容，我看有很多用户还在用win7，希望我兼容。其实之前是做过一些尝试的，但是不知道为啥，编译完的东西就是用不了……（而且win7都停止支持多久了，win10都已经停止支持了……怎么还有那么多用win7的（小声bb））另一个问题是容易被拦截的问题。软件被拦截，导致没有办法开机自启，比较麻烦，而且下载的安装包也可能报毒……难搞。想办法搞个证书……？没钱啊。最后一个问题是稳定性的问题，我本来打算把键盘、鼠标监听弄成后台服务的，但是谁知道python只能把脚本封装成windows服务，封装后会出问题……看来得用其他语言重写了……以后再说吧就唠这么多，来看看新的UI吧：倒是感觉有点成熟的工具的样子了……但是今天被同学吐槽说界面好丑……哪里丑了，这么多年来都是这个样子，哪里丑了（好吧，确实没办法跟那些用QT的比，但是我觉得小工具没有必要上Qt吧？（主要是我不会啊））。使用文档看README吧，等我找时间建一下官方文档~下载地址粉丝福利，评论免费下载https://hanloth.lanzn.com/b02k5dt5ab密码:2f0h

gunicorn+socketio无法链接、反复长轮询400的解决方案
type: item
date: 2025-04-13T18:29:00+08:00
description: 前情提要最近做了一个活动大屏项目，博主主要负责后端开发。因为活动大屏有实时增加用户的需求，所以需要创建websocket进行双向通信。后端采用Python Flask开发，运行在linux服务器中，为了提高并发性能，使用gunicorn进行守护并使用--workers=8创建了8个worker。使用nginx进行反向代理，使用eventlet作为classworker并打上了补丁：import eventlet eventlet.monkey_patch()使用Flask-socketio库搭配前端的socket.io实现前后端的信息交换（其实只是后端单向的向前端发送消息，本来可以使用长轮询，但是组长觉得服务器压力太大向想换成websocket（虽然socket.io本身是多种方式进行通讯的，包括长轮询和websocket））。博主表问题描述先说说主要表现吧：前端会反复报错，控制台提示服务器返回400（Failed to load resource: the server responded with a status of 400()），或者提示在完成连接建立前Websocket被关闭WebSocket is closed before the connection is established 。偶尔会出现连接成功但是刷新页面后就无法连接，此时打开网络捕获应该会发现大量Get请求，返回200、400并且sid相同的请求数量大概为3个。其中，状态码为200的请求是socketio用于获取sid的。400请求返回的值类似invalid session xxxxx：问题排查过程最开始觉得是nginx反代有问题，因为在本地测试环境跑是没有问题的，只有服务器上部署了nginx。防火墙之类的因为有正常200请求，直接排除。后来觉得是前端的session处理不对，但是负责前端的哥们的代码和socket.io官网的示例基本一模一样，不会有错，因此也排除。stackoverflow等等社区论坛上的内容看了一圈，基本都是在Node.js中用socket.io的，没有与flask搭配的，因此也没有参考性。在仔细看socket.io官方文档的时候发现，文档中提到了出现类似表现解决连接问题 | Socket.IO，但是这是在多个服务器负载均衡的情况下因为没有共享session出现的。考虑到gunicorn配置时使用了多个worker其中提到的是需要配置服务器粘性会话，于是我就去flask-socketio文档中查找了一下，找到了相关的内容：Deployment — Flask-SocketIO documentation，即，使用redis等中间件作为共享session的服务即可。但是配置完成后问题并没有的到解决（崩溃！！！！）于是我就崩溃的乱翻文档（什么奇怪的解压方式……）解压方式奇怪不重要，重要的是给我翻到解决方案了！就在上面链接对应的位置上方一点点Deployment — Flask-SocketIO documentation，关于gunicorn部署的说明这里，小小的写了一个由于gunicorn负载均衡存在问题，应该避免使用多worker（所以示例文档都是1个worker）找到原因所在，问题就非常好解决了解决方案既然是因为gunicorn多worker导致的，就不用多worker了：使用nginx进行反向代理和负载均衡，gunicorn专心守护进程即可（虽然感觉和直接python跑没有很大区别）因此：将gunicron配置修改为只使用一个worker，即-w 1（可以有多个threading）并启动多个占有不同端口的进程提供服务在nginx反向代理配置中使用负载均衡：http块下添加：upstream nodes{ ip_hash; server 127.0.0.1:45677; server 127.0.0.1:45676; server 127.0.0.1:45675; ## 添加所有你绑定的gunicorn服务端口 }sever块下添加反向代理配置（可以根据需要删除一些配置，timeout通常会更长一些）： location /{ proxy_pass http://nodes; proxy_set_header Host $host; proxy_http_version 1.1; #proxy_cache_bypass $http_upgrade; proxy_ssl_server_name on; # Proxy headers proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_h…

多端同步笔记软件Obsidian拓展指南、从OneNote转入指南【附速率限制解决方案】
type: item
date: 2025-02-28T22:25:00+08:00
description: Obsidian是世界上最好用的markdown多端同步笔记软件！！！！（不接受反驳）今天给大家带来Obsidian的一些拓展指南以及我在从OneNote转入时出现的一些问题的解决方案。顺带一提，从今天起，Obsidian已经完全免费提供软件的服务，包括个人和商业用途！！（此前个人使用免费，商业用途需要付费）也就是目前Obsidian只有在使用官方云同步时才需要进行订阅制的付费，其他功能都是免费的。拓展指南Obsidian有非常丰富、健全的生态，可以通过安装插件深度拓展Obsidian编辑器，提高笔记体验。也可以通过安装主题来改变编辑器的样式，可拓展性非常强。前提安装第三方插件需要首先关闭安全模式。[scode type="yellow" size=""]注意！安装插件的操作存在风险，社区中的第三方插件并不能保证一定安全，有极小概率出现恶意插件进行数据盗用等操作，关闭安全模式前应自行备份所有文件，并且该操作所带来的风险需要由您自己承担。[/scode]主题的安装和管理可以在“外观”选项卡找到，点击“主题”部分的“管理”可以打开主题市场，在左边的选择框中可以选择并使用已安装的主题 【插件】Remotely Save拥有1000万下载量的超强插件，用于将本地的笔记云同步至你信任的网盘等，可以作为官方同步的平替。支持S3、WebDav、Dropbox、R2、OneDrive、Google Drive等超多云盘在市场首页即可找到此插件，点击“安装”即可安装至本地。安装后在插件页面启用该插件即可在设置页面可以自行配置网盘同步相关的配置，此外强烈推荐调整下方框中的几个配置项，这样就能自动进行云同步，及时在其他设备看到修改而日常在使用时也可以通过点击左侧的图标进行同步移动端中也可以安装此插件进行配置的同步。【插件】ExcalidrawObsidian中最热门的插件，有超过3000万的下载量。该插件为Obsidian拓展出了手写画图的功能，推荐在移动端、平板端安装，可以写写画画在插件市场点击“安装”即可安装，点击“启用”以启用插件启用后，可以在左侧的菜单中找到“新建绘图文件”的功能，点击后即可创建一个画板支持在画板中随意写写画画，支持插入笔记、网页、文字、图片等，可以点击右键复制该画板的markdown插入代码，并将画板插入至笔记中【插件】Editing Toolbar很多新手想用obsidian但是却因为记不住markdown语法望而却步，这个插件提供了一个类似富文本编辑器的工具栏，可以通过类似word的方式编辑和排版笔记，对新手非常友好。在插件市场找到“Editing Toolbar”，点击“安装”即可安装，点击“启用”以启用插件。启用插件后可以在主编辑器上方找到添加的工具栏，点击即可快速对文本进行样式调整也可以在设置中调整工具栏的样式、位置等，使其更符合自己的记录习惯。【主题】Obsidianite这是个非常不错的深色主题，对markdown的各类文字进行了样式的修改，非常漂亮。唯一的缺点是没有适配浅色模式，浅色模式下部分美化效果会丢失。点击下载并使用即可下载并启用该主题主题预览：【主题】Blue Topaz非常美观简洁的主题，为不同类型的文字设置了不同的颜色，便于区分，在不同设备下的显示都非常不错【主题】Obsidian Nord灰色系的主题，为不同类型的文字设置了不同的颜色与字体，非常美观的配色，只是在浅色模式下文本的对比度偏低，分辨度较差OneNote转入指南Obsidian官方通过插件的形式提供了从其他笔记导入笔记的功能，使用导入功能需要关闭安全模式并安装 importer插件。该插件由Obsidian官方提供，支持从Apple Notes、Bear、Evernote（印象笔记）、Google Keep、Notion、OneNote、Roam Research、Textbundle等平台导入笔记，也导入支持HTML格式的笔记。进入插件市场搜索importer，选中图中由“Obsidian”开发的插件，点击“安装”安装插件并点击“启用”以启用插件启用插件后，可以在左边的菜单栏中看到Open Importer，点击后即可打开导入窗口点击Sign in按钮，在打开的页面中登录微软账户并授权Obsidian之后即可看到该账户下的所有笔记（注意，仅属于当前账号的笔记会显示，共享的笔记是无法导入的）选择需要导入的笔记后，点击“import”即可自动开始导入常见问题：提示OneNote速率限制提示“Microsoft OneNote has limited how fast notes can be imported. Please try again in 30 minutes to continue importing.”通常就算等30年…

多端同步markdown笔记软件深度体验评测（附软件截图）——还在纠结用什么软件记笔记的同学快进来看看！
type: item
date: 2025-02-28T00:40:00+08:00
description: 前情提要之前一直用的微软的OneNote来记笔记。最开始使用还是非常丝滑的。用了一个学期之后发现OneNote对学计算机的同学不算友好。主要是有些时候希望在笔记中记录一些代码或公式，OneNote中不能添加专门的代码块，没有代码高亮，并且偶尔还会对简拼的代码出现拼写检查的提示。其内置的公式编辑器不是纯血的Latex，而是阉割版的Word公式编辑器，只能局部使用latex语法（例如特殊符号等），编写公式时很难受，且在电脑端以外的设备上会出现兼容性问题……前两天终于忍不住了，决定转移阵地到其他Markdown笔记软件。注意！本文主要针对和我一样有以下需求的同学进行评测：1. 有多端同步需求2. 有公式编写需求3. 有代码插入需求4. 有图片插入需求5. 有笔记多级分类管理需求博主使用Windows+Android系统，仅苹果生态的软件不包括在内。评分满分5星，个人观点，仅供参考。Obsidian（⭐⭐⭐⭐）Obsidian是我最后选中使用的笔记软件。其提供跨平台的客户端，支持多端同步，支持离线编辑，对markdown进行了深度拓展，支持纯血Latex公式，支持代码高亮，支持从OneNote导入笔记。额外还支持文档发布、文档依赖分析、快捷指令、白板等功能。软件本身不收费，使用官方云同步需要按照订阅制收费，可以免费安装插件使用包括WebDav、OneDrive、GoogleDrive、S3、DropBox等主流云盘进行文件同步。他甚至还支持git评分理由：几乎完美的迎合了我的所有需要，界面非常干净整洁，也支持通过插件等进行功能的拓展。为数不多的缺点：对markdown不太熟悉的同学适应需要一段时间（编辑器没有提供传统富文本编辑器上方的样式按钮，但是可以通过右键进行添加或按下/通过快捷指令插入），没有提供快速调整图片大小的功能（只能通过添加标记修改大小）官网：Obsidian - Sharpen your thinkingNotion(⭐⭐⭐)事实上，我最后在Notion和Obsidian之间纠结了很长时间，最后放弃了Notion。这是一个非常非常非常棒的软件，他提供深度魔改版的Markdown（甚至只是用markdown作为创建文本块的标记）、可以任意调整顺序的文本块以及非常多的文本样式编辑辅助。支持多端同步（免费！！）、多人协同、纯血latex公式、图片同步、github仓库协同、提及、发布、链接到其他平台等超多功能。Notion个人使用免费，提供完美的多端同步，非常吸引人，并且功能针对不同用户群体做了特定的优化（学生、打工人等）。但是缺点在于Notion的功能过于“臃肿”，提供了包括Notion AI、日历、多人协同、日记版等作为笔记本不需要的功能，并且在网络不佳时输入会出现延时，代码高亮效果较差，没有快捷的公式输入标记（例如$$）。评分理由：非常棒的生产力工具及多人协同工具，但是对于用作笔记软件而言过于繁杂。重点是免费、多功能、多合一官网：在互联工作空间中管理 Wikis 百科、文档和项目｜NotionJoplin(⭐⭐⭐)Joplin是一个开源的同步markdown编辑器，完全免费。支持自己配置同步至Onedrive、WebDav、DropBox、S3等，支持多级笔记管理，支持直接插入图片等附件、支持自定义笔记排序、支持latex语法、支持代码高亮、支持多人协同、支持从OneNote导入。软件本身不收费，使用官方云同步需要按照订阅制收费评分理由： 不支持快速插入代码块、公式编辑比较麻烦、没有自动markdown标记补全功能、同步配置比较麻烦、Windows下不支持自定义安装位置官网：JoplinTypora(⭐⭐)看到太多Typora的推荐文章，吹的天花乱坠，其实个人感觉一般，就只是一个普通的本地Markdown编辑器（没有任何多端同步可言）。界面非常整洁，支持Latex公式、内置多个主题、支持原生markdown、支持可视化表格编辑、支持类似github的提示框、支持调整代码缩进软件本身买断制收费，提供15天试用评分理由： 没有多端同步、代码高亮效果一般、没有“项目”的概念进行管理、图片插入比较麻烦官网：Typora 官方中文站OneNote(⭐⭐⭐）虽然OneNote并不是一个markdown编辑器，但是在多端同步的笔记中算是非常不错的一个软件了，提供大部分与Word类似的文本编辑功能，支持随意摆放和插入图片、文字，支持Word的公式编辑器，支持同步手写痕迹，支持多人协同、评论等，与OneDrive及Office365深度融合官网：Microsoft OneNote | 适用于您的设备的数字记录笔记应用总结主推Obsidian和Notion两个软件，非常非常好用。国内流行的其他笔记，有道云、印象笔记我觉得功能上一般般还需要…

Lyrics Downloader V1.2.3版本发布
type: item
date: 2025-02-03T00:05:00+08:00
description: Lyrics-Downloader V1.2.3版本发布啦此版本提供了Windows 7系统专属封装版本，从下载链接中选择带有"win7"标识的程序下载并运行即可更新内容修复酷狗音乐偶现搜索出错的问题优化界面设计优化运行速度新增Windows7系统专属封装版本项目简介Lyrics Downloader是用于一键批量从音乐网站搜索下载音乐歌词的软件，只需简单配置即可为本地的音乐配上歌词。歌词一键批量下载器项目首发于吾爱破解，由Ivan Hanloth开发使用方法下载后双击打开软件。根据需要选择歌词搜索平台，之后选择音乐所在的文件夹路径并配置后缀名筛选，多个后缀名之间用管道符连接（如：.mp3|.flac），选择歌词需要的编码，点击“开始下载”即可开始下载。为了方便下次使用，可以点击“保存配置”，则下次启动时也将使用本次的配置。歌词下载完成后会自动弹出系统提示。软件截图![1728149916033.jpg]()下载地址粉丝福利，回复直接领取链接：https://hanloth.lanzn.com/iRGVC2bqnmxi密码：c0yx关于安全性程序使用Python+Nuitka编写，进行了单文件封装同时使用了OS等相对较敏感的模块，可能会被杀毒软件识别为木马，但是软件本身安全无毒，放心下载。最新版安全检测报告：腾讯哈勃： https://habo.qq.com/file/showdetail?pk=ADYGY11qB2AIPVs6U2oHYw%3D%3D安恒云沙箱： https://sandbox.dbappsecurity.com.cn/report/dfb6831b-c986-4aa9-b7d4-5316d2590149声明本软件仅提供音乐歌词下载，歌词来源于各大音乐网站，仅供个人学习交流使用。常见问题汇总win7等系统使用出现系统dll文件缺失等通常是由C/C++库、系统dll文件缺失导致的，使用过于精简的系统可能出现这样的问题，由于使用的python版本较新，已经停止对于较低系统版本的支持，可以尝试使用Direct X repair修复工具进行修复。或者使用Win7专供版本（下载链接中带有“win7”标识的文件）lrc无法被识别由于现在各类播放器兼容的编码不相同，无法做到完全的统一，该问题将在近期的版本更新中增加用户自定义编码功能为什么无法下载音乐？请注意！！！本程序只是对已经下载至本地的音乐完成歌词下载适配，本身并不带有音乐解析下载的功能！如果你是为了下载音乐，请移步其他相关工具。

Boss Key V2.0.2版本发布
type: item
date: 2025-02-02T23:30:21+08:00
description: Boss Key V2.0.0版本正式发布啦！开源地址：IvanHanloth/Boss-Key (github.com)从这个版本开始，Boss Key将支持对多窗口进行隐藏，可以设置中进行窗口绑定更新日志V2.0.2 （更新于2025/2/2）新增全选窗口选项新增隐藏窗口后同时隐藏程序托盘图标选项修复无法使用热键关闭程序的问题优化界面UI设计优化配置文件读取应用截图软件介绍Boss-Key老板键是一款开源、免费、简洁的老板键程序，仅需一键即可隐藏并静音当前活动窗口，是一款上班摸鱼神器。使用方法下载后解压，运行Boss-Key.exe即可打开首次启动会自动弹出快捷键设置弹窗，可以配置需要的热键后续可从托盘图标中打开设置弹窗。右键单击托盘图标打开菜单，可以启用“开机自启”选项关于安全性由于使用到大量系统API，并使用Nuitka编译，可能会被杀毒软件误报为病毒，但是软件本身不含任何木马。同时软件已开源，可查看开源地址下载地址粉丝福利，评论免费下载https://hanloth.lanzn.com/b02k5dt5ab密码:2f0h

Nand2Tetris教程：3.2 逐步构建算数逻辑单元
type: item
date: 2025-01-07T11:55:41+08:00
description: 简介在3.1节中，我们使用Nand逻辑门完成了对基础逻辑门的构建，而在本节中，我们通过使用基础逻辑门，逐步构建起计算机的核心部件之一，算数逻辑单元（Arithmetic Logic Unit，ALU）。为了适应不同学习需要，本节下分三个小节：布尔算数运算构建基础算数逻辑芯片构建算数逻辑单元布尔算数运算部分，将介绍不同进制之间的转化方法、正数负数的二进制表示、二进制数的加减法，包括补码、反码等计算机基础概念，如果你已熟练掌握这些内容，则可以跳过这一部分。构建基础算数逻辑芯片部分，将从半加器开始，慢慢运用二进制加法规则，逐渐使用HDL实现二进制数加减法、递增等基础算数运算芯片。构建算数逻辑单元部分，将综合运用前面两个部分的内容，将二进制运算集中为一个完整的逻辑芯片中，组建成算术逻辑单元ALU。ALU与现代计算机构成算数逻辑单元（Arithmetic Logic Unit，ALU）是现代计算机的核心组件之一，其负责执行所有的算数和逻辑操作，包括加法、减法、乘法、除法以及与、或、非等基本逻辑运算。可以说，计算机能够处理和计算数据，全仰赖于ALU的高效工作。在计算机系统中，ALU通常嵌入在中央处理单元（CPU）内部。CPU依靠ALU来完成各类运算任务，而这些任务是运行程序和操作系统的基础。ALU的性能直接影响到整个计算机的处理速度和效率，因此其设计和优化是计算机体系结构中的关键环节。由于我们构建的计算机只是相对较小的计算机，因此在Nand2Tetris中，我们构建的ALU负责以下任务：逻辑：取与、取或、取非算数：归零、置1或-1、取原、取反、递增、递减、求和、求差总共有16种不同的输出（实际ALU共有64种运算）其逻辑门表示如下：

Nand2Tetris教程：3.1 构建基础逻辑门
type: item
date: 2025-01-07T00:59:00+08:00
description: 简介从第2.2节我们可以知道，所有的基础逻辑门都可以通过Nand逻辑门不断组合实现，但是一直只在芯片中使用Nand来构建其他逻辑芯片的话，过程过于繁琐，因此，我们将在使用Nand构建基础逻辑门之后，通过逻辑门的复用来简化我们的设计，因此此节主要是使用Nand构建基础逻辑门，并基于基础逻辑门构造其他的一些基础逻辑芯片。Nand芯片是一个预设芯片，表示Not-And（或 Not(And(a,b))，在上一章节有提及）true是预设值，表示1（可为任意位数）false是预设值，表示0（可为任意位数）预设芯片和预设值可以在任意位置直接调用本节对应项目1（Nand2Tetris所在目录/projects/1），所有文件基础框架、测试文件均在项目文件夹中。请通过编辑、完善项目文件夹中的 .hdl文件，按照顺序完成下面的内容。（逻辑门与芯片在此教程以及Nand2Tetris是同等概念，但是通常认为逻辑门是相对较小的基础逻辑单元，而芯片则是相对较大的组合逻辑单元）如果你还没有掌握Nand2Tetris的基础、基础布尔运算、Hardware Simulator的使用，请先阅读第2章[post cid="746" cover="" size="small"/]构建基础逻辑门CHIP NotNot门的逻辑在前面的章节有所提及，其标准如下：名称：Not输入：in输出：out功能：如果in为1，则out为0；如果in为0，则out为1测试文件：Not.tstCHIP AndAnd门的逻辑在前面的章节有所提及，其标准如下：名称：And输入：a, b输出：out功能：只有a与b均为1时out为1，否则为0测试文件：And.tstCHIP OrOr门的逻辑在前面的章节有所提及，其标准如下：名称：Or输入：a, b输出：out功能：当a与b中存在1时为1，否则均为0测试文件：Or.tstCHIP XorXor，即异或（Exclusive or）其标准如下：名称：Xor输入：a, b输出：out功能：当a与b同为1或同为0时，为0，否则为1测试文件：Xor.tstXor的真值表如下：abXor(a,b)110101011000逻辑门表示为：[collapse status="false" title="一种可能的逻辑"]通过And(a,Not(b))筛选出其中的第二行，也就是两者不相等的情况之一再通过And(Not(a),b)筛选出其中的第三行，也就是另一种两者不相等的情况abNot(a)Not(b)And(a,Not(b))And(Not(a),b)110000100110011001001100此时，将两个表达式计算得到的值进行或运算（Or），即可得到实际Xor的目标值，即 Xor(a,b)=Or(And(a,Not(b)),And(Not(a),b))通过逻辑门可表示为[/collapse]CHIP MuxMux，复用器（Multiplexor），其标准如下：名称：Mux输入：a, b, sel输出：out功能：当sel为1时，输出b，否则输出a测试文件：Mux.tstMux的真值表如下：abselout11111010011100101101100101000000逻辑门表示为：[collapse status="false" title="一种可能的逻辑"]part1=And(Not(sel),a)，在sel为1的时候，返回的是0，sel为0时，返回的是a的值part2=And(sel,b)，在sel为1的时候，返回的是b的值，sel为0时，返回的是0Or(part1,part2)，去除为0的情况[/collapse]CHIP DMuxDMux，解复用器（Demultiplexor），其标准如下：名称：DMux输入：in, sel输出：a, b功能：当sel为1时，a为0，b为in，当sel为0时，a为in，b为0测试文件：DMux.tstMux的真值表如下：selab10in0in0逻辑门表示为[collapse status="false" title="一种可能的逻辑"]a=Mux(0,in,sel)当sel为1时，a为in，当sel为0时，a为0b=Mux(in,0,sel)当sel为1时，b为0，当sel为0时，b为in[/collapse]构建多位基础逻辑门上面的所有逻辑门，都只能接受“1位”的数据，也就是，每个输入与输出都只能是1位的数据（0/1）。但是实际构建计算机时，我们需要能够处理多位数据线（或者总线，bus）的数据，可能是16位、32位、64位或者更高位数。Nand2Tetris目标构建的计算机是16位的计算机，因此我们主要构建16位的芯片。我们通过类似数组的方式获取不同的位上的数据。通过下面的方式指定数据的位数：<引脚名称>[数…