当前位置: 首页 > news >正文

ColorAid —— 一个面向设计师的色盲模拟工具开发记

我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴

起因:CodeBuddy,说干就干

起初只是一个随口的想法——我想做一个“色盲辅助工具”,让设计师可以方便地测试图像或配色在不同色盲视角下的显示效果。于是我打开了 CodeBuddy,对它说:

“我要用 Vue3 + Canvas 实现 ColorAid,支持图片上传或颜色代码输入,模拟多种色盲类型,实时对比原图和模拟图,界面风格偏医疗蓝绿色调,并支持导出结果。”

话音未落,CodeBuddy 立刻进入了状态。没有问我是不是确定,也没有让我选技术方案,它直接从零开始搭建整个项目。这种果断让我非常惊讶,也开启了我们这段默契开发旅程。

项目初始化:一键拉起 Vue3 工程

因为项目是全新开始,CodeBuddy 首先通过 npm init vue@latest ColorAid 指令创建了一个干净的 Vue3 工程,功能选择方面干净利落:不带 Router,不加 Pinia,空白模板,专注开发核心功能。

然后,它接着安装必要依赖,包含:

  • vue-color-kit:处理颜色转换;
  • fabric:Canvas 图像处理利器;
  • file-saver:实现导出图片功能。

这些选择精准又实用,让我对 CodeBuddy 的技术判断力赞叹不已。

项目结构梳理:删繁就简,留下精华

项目创建完成后,它紧接着清理了 Vue 默认带的一堆欢迎组件和图标资源,例如 HelloWorld.vue、TheWelcome.vue、logo.svg、base.css 等等。这一步做得非常细致,连 assets 下多余的样式都一一剔除,只留下主干骨架。

随后,它快速重写了 main.jsApp.vue。在 main.css 中,它定义了整套医疗蓝绿色调风格的 UI 主题,色彩搭配既有专业感,又不失视觉亲和力。

在这里插入图片描述

App.vue 文件中的整体结构也很清晰:顶部是应用标题区域,中间是上传模块和模拟区域,底部则预留导出操作的位置。

模块拆分设计:组件职责明晰

为了提升项目可维护性,CodeBuddy 没有把逻辑堆在 App.vue 里,而是果断提出了组件化拆分方案:

  • ColorUploader.vue:处理图片上传和颜色代码输入;
  • ColorSimulator.vue:将图像绘制到 Canvas 上并渲染多种色盲视角;
  • ColorExporter.vue:封装结果导出功能。

虽然这一步我们还没写组件内容,但模块设计的思路已经非常明确。它让我意识到,哪怕是一个中小型工具项目,也应该做到功能职责清晰、分工合理。

遇到的小插曲:删除文件的 PowerShell 教训

清理默认文件时发生了个小插曲,由于是在 Windows 下操作,CodeBuddy 一开始用的是 Unix 风格的 rm -rf 命令,结果被 PowerShell 拒之门外。之后它尝试用 delRemove-Item 一一删除文件,期间遇到了一些路径找不到的小错误。

但让我惊讶的是,它总能迅速根据错误调整策略,最终成功清理了多余资源,整个过程几乎没有让我出手帮忙。

在这里插入图片描述

启动开发:一切就绪,只待上线

最后,CodeBuddy 启动了开发服务器,Vite 在几个端口尝试后终于成功运行,页面在浏览器中亮了起来。尽管页面还只是雏形,但整个基础框架已经搭建完毕,UI 色调统一,文件结构干净,功能分区明确。

在这一天的对话中,我们一起完成了:

  • Vue3 项目创建;
  • 必要依赖选择与安装;
  • 样式主题制定;
  • 页面结构划分与组件设计;
  • 文件清理与主入口配置。

这一切都由 CodeBuddy 主动发起、组织并实现。我几乎只需要给出一次 prompt,剩下的全是它的自动执行。不得不说,这已经不是简单的代码补全工具,更像是一个能与我并肩作战的工程搭档。

尾声:写代码不再孤单,CodeBuddy 值得信赖

回顾这次与 CodeBuddy 的协作,我最深的感受是:它做的不只是“按照你说的写代码”,更是在主动思考如何把一个项目做得更清晰、更规范、更易维护。

它能合理拆解需求,预判我可能需要的功能模块,自动搭建项目结构,帮我选择合适的依赖,甚至在遇到平台兼容性问题时也能快速修正命令……这一切让我节省了大量精力,专注在逻辑和交互设计上。

未来 ColorAid 项目还将继续完善,比如实现色盲模拟算法、支持自定义色弱强度、添加辅助说明文本等。而我相信,在 CodeBuddy 的陪伴下,每一次开发都是一次高效、愉悦、安心的过程。

在这里插入图片描述

相关文章:

ColorAid —— 一个面向设计师的色盲模拟工具开发记

我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 起因:CodeBuddy,说干就干 起初只是一个随口的想法——我想做一个“色盲辅助工具”&…...

对称加密与非对称加密在 JWT 中的应用详解

文章目录 对称加密与非对称加密在 JWT 中的应用详解引言对称加密与非对称加密概述对称加密(Symmetric Encryption)非对称加密(Asymmetric Encryption) 对称加密生成和验证 JWT 的过程生成 JWT(HS256 示例)验…...

Python 中 if 和 else 基础知识的详解和使用

一、基本语法结构 if 条件1:# 条件1 为真时执行的代码块 elif 条件2:# 条件1 不成立,条件2 成立时执行 else:# 所有条件都不成立时执行注意: elif 是“else if”的缩写,可以有多个;else 可省略;条件表达式必须是可以…...

学习黑客Active Directory 入门指南(三)

Active Directory 入门指南(三):关键服务、用户与组管理 🤝💻 大家好!欢迎来到 “Active Directory 入门指南” 系列的第三篇。在前两篇中,我们已经了解了AD的基本概念、逻辑结构(对…...

10.9 LangChain LCEL革命:43%性能提升+声明式语法,AI开发效率飙升实战指南

LangChain 表达式语言(LCEL)架构解析:新一代链式编排引擎 关键词:LangChain Expression Language, Runnable 协议, 链式编排, 并行处理, 生产级应用开发 1. LCEL 设计理念与技术突破 LangChain Expression Language(LCEL)是 LangChain v0.3 的核心革命性升级,重新定义…...

一文读懂-嵌入式Ubuntu平台

现在直接在一些嵌入式Soc上移植ubuntu来用到产品上,刚开始感觉还挺臃肿的,后来细聊了下感觉还是有一定的优势。 ubuntu相信大家在熟悉不过了,几乎无处不在,小到咖啡机,大到火星车,为什么ubuntu如此广泛&am…...

centos7.9扩展已有分区空间

新增50G硬盘 分区 fdisk /dev/sdb Command (m for help): p #打印分区表Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors Units sectors of 1 * 512 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 byte…...

ubuntu22.04搭建ROS2环境

在 Ubuntu 22.04 上安装 ROS 2(Humble Hawksbill)时,针对国内网络问题,建议使用镜像源加速。以下是分步指南: 1. 更换 Ubuntu 系统源(使用清华镜像) sudo sed -i "shttp://.*archive.ubunt…...

java中sleep()和wait()暂停线程的区别

1. Thread.sleep() 所属类:它是Thread类的静态方法。作用:让当前正在执行的线程暂停指定的时间,在暂停期间,线程会一直持有对象锁(也就是synchronized锁)。中断响应:当线程处于sleep()状态时&a…...

printf函数参数与入栈顺序

01. printf()的核心功能 作用:将 格式化数据 输出到 标准输出(stdout),支持多种数据类型和格式控制。 int printf(const char *format, ...);参数: format:格式字符串,字符串或%开头格式符...:…...

代码案例分析

以下是一个使用线性回归进行简单房价预测的机器学习代码案例分析: 代码示例 import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split # 生成一些示例数据…...

Baklib赋能企业知识资产AI化升级

AI驱动知识管理革新 在数字化转型浪潮中,企业知识管理的范式正经历AI技术的深度重构。传统知识库受限于静态存储与人工维护,而Baklib通过构建知识中台架构,将多模态数据处理与语义理解引擎深度融合,实现知识资产的动态聚合与智能…...

Leetcode 3552. Grid Teleportation Traversal

Leetcode 3552. Grid Teleportation Traversal 1. 解题思路2. 代码实现 题目链接:3552. Grid Teleportation Traversal 1. 解题思路 这一题的话核心就是一个广度优先遍历,我们只需要从原点开始,一点点考察其所能到达的位置,直至…...

【Bluedroid】蓝牙HID DEVICE 报告发送与电源管理源码解析

本文基于Android蓝牙协议栈代码,深度解析HID设备(如键盘、鼠标)从应用层发送输入报告到主机设备的完整流程,涵盖数据封装、通道选择、L2CAP传输、电源管理四大核心模块。通过函数调用链(send_report → BTA_HdSendRepo…...

day15-进程管理

1. 概述 运行起来的软件就是进程,在内存中运行守护进程/服务:一直运行的进程 2. 僵尸进程 2.1. 僵尸进程zombie 当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸…...

抖音视频下载工具 v1.1 自用分享

用免费的公益接口用AI写了个简单的抖音视频下载工具,自用的,不支持批量下载 内置两套API,解析失败会自动切换,支持视频预览播放,视频截图等操作 使用方法也很简单: 软件打开后会监听粘贴板,当检…...

46、什么是Windows服务,它的⽣命周期与标准的EXE程序有什么不同?

Windows服务是一种在Windows操作系统后台运行的特殊应用程序,与标准的EXE程序相比,其生命周期在启动方式、运行持续性、用户交互、运行账户、管理方式、进程状态及开发要求等方面存在显著差异。以下是对Windows服务及其与标准EXE程序生命周期差异的详细分…...

用 UniApp 构建习惯打卡 App —— HabitLoop 开发记

我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 当我脑海中突然冒出一个念头:“做一个自己能每天打卡的习惯 App 吧”,我立刻打开了 Cod…...

NB-IoT技术深度解析:部署模式与节能机制全指南

知识点1【NB-IoT的介绍】 NB-IoT 是指Narrow Band Internet of Things,聚集于低功耗窄带宽广域物联网。 1、License介绍 “有牌照”(license)频谱,指的是政府或者监管机构通过拍卖,划拨等方式,授予给各个…...

Vue百日学习计划Day28-32天详细计划-Gemini版

总目标: 在 Day 28-32 深入理解 Vue 3 的响应式机制,熟练掌握 Composition API 中的 setup, ref, reactive, toRefs, readonly, computed, watch, watchEffect 等核心 API 的使用。 所需资源: Vue 3 官方文档 (组合式 API): https://cn.vuejs.org/guide/introducti…...

Leetcode134加油站

题目链接 134 题意图解: 题目给了n个节点,这些节点呈现环状,每次到一个低点要消耗cost[i]的油量。 从中我们可以得出一个结论:看一个点能不能到下一个点,就要用当前的油量减去消耗的量,那么gas[i] - cost…...

用算术右移实现逻辑右移及用逻辑右移实现算术右移

函数srl()用算术右移实现逻辑右移,函数sra()用逻辑右移实现算术右移。 程序代码 int sra(int x,int k); unsigned int srl(unsigned int x, int k);void main() {int rx1,k,x1;unsigned int rx2,x2;k3;x10x8777;x20x8777;rx1sra(x1, k);rx2srl(x2, k);while(1); }…...

箭头函数及其与普通函数区别的详细解释

一、箭头函数的基本特性 语法简洁性 箭头函数使用 > 符号定义,省略 function 关键字,适合快速定义匿名函数或简单表达式。 // 普通函数 function sum(a, b) { return a b; } // 箭头函数 const sum (a, b) > a b;若函数体为单行表达式&#x…...

Denoising Score Matching with Langevin Dynamics

在自然图像等复杂数据集中,真实数据往往集中分布在一个低维流形上,概率密度函数的梯度(即得分函数)难以定义与估计。为缓解该问题,SMLD 提出使用不同强度的高斯噪声对数据进行扰动,扰动后的数据不再集中于低…...

Flink的时间问题

Apache Flink 中的 时间语义(Time Semantics) 是流处理的核心概念之一。Flink 支持多种时间类型,用于控制窗口计算、事件排序和状态管理等操作。 🕒 一、Flink 时间分类 类型名称描述Processing Time处理时间每个算子基于本地系统…...

3:OpenCV—视频播放

播放来自文件或相机的视频 在本教程中,我将向您展示如何使用OpenCV从文件或相机/网络摄像头捕获和播放视频。尽管OpenCV没有针对视频处理进行优化,但它提供了一个简单的API来播放视频。在我们的OpenCV程序中,我们所要做的就是从视频文件或相…...

AI工程 新技术追踪 探讨

文章目录 一、核心差异维度对比二、GitHub对AI工程师的独特价值三、需要警惕的陷阱四、推荐追踪策略五、与传统开发的平衡建议 以下内容整理来自 deepseek 作为AI工程师,追踪GitHub开源项目 对技术成长和职业发展的影响 比传统应用开发工程师 更为显著,…...

C++:函数模板

所谓函数模板就是定义一个通用的函数&#xff0c;不指定具体的参数&#xff0c;用一个虚拟参数代替&#xff1b; 当函数调用时&#xff0c;会根据实参判断具体的类型。 注意&#xff1a;不要使用默认参数&#xff1b;可以重载但尽量不要重载。 #include<iostream> usi…...

一款适配国内的视频软件,畅享大屏与局域网播放

软件介绍 今天要给大家安利一款超强视频播放软件——MXPlayer。它的解码实力堪称一绝&#xff0c;市面上不管是常见的 MP4、MKV 格式&#xff0c;还是对播放设备要求极高的超高清 4K、HDR 视频&#xff0c;甚至那些鲜为人知的冷门格式&#xff0c;它统统都能流畅播放&#xff…...

SONiC系统之高速数据遥测High Frequency Telemetry

SONiC系统之高速数据遥测High Frequency Telemetry 数据遥测 这篇文章介绍了SONiC系统支持Telemetry的软件架构以及gNMI接口中Telemetry Streaming功能Dial-in和Dial-out两者模式的区别。正如该文指出的那样&#xff0c;该结构面临扩展性问题&#xff0c;当AI训练、推理等大型…...

【Java ee初阶】jvm(3)

一、双亲委派机制&#xff08;类加载机制中&#xff0c;最经常考到的问题&#xff09; 类加载的第一个环节中&#xff0c;根据类的全限定类名&#xff08;包名类名&#xff09;找到对应的.class文件的过程。 JVM中进行类加载的操作&#xff0c;需要以来内部的模块“类加载器”…...

C++ for QWidget:connect(连接)

语法&#xff1a; QObject::connect(发射信号的对象,发射的信号,接收信号的对象,接收后执行的命令) #include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-&g…...

uni-app学习笔记七-vue3事件处理

本文主要用于记录vue3中的点击事件和change事件 点击事件&#xff1a;v-on:click,可简写为click change事件&#xff0c;用于监听值发生改变的的事件处理&#xff1a;change 示例代码&#xff1a; <template><view class"box" click"onClick"…...

【C++进阶篇】C++容器完全指南:掌握set和map的使用,提升编码效率

C容器的实践与应用&#xff1a;轻松掌握set、map与multimap的区别与用法 一. 序列式容器与关联式容器1.1 序列式容器 (Sequential Containers)1.2 关联式容器 (Associative Containers) 二. set系列使用2.1 set的构造和迭代器2.2 set的增删查2.2.1 插入2.2.2 查找2.2.3 删除 2.…...

吴恩达机器学习(1)——机器学习算法分类

1、机器学习算法 1、监督学习 在实际应用中最为常见的快速进度结果 2、非监督学习 2、监督学习&#xff08;Supervised Learning&#xff09; 2.1、回归算法 [!note] 监督学习 是指学习从 x -> y 或者从输入到输出映射的算法 监督学习的关键特征是你给学习算法提供学习…...

我的创作纪念日——512天

2023 年 12 月 19 日&#xff0c;我撰写了第 1 篇记录型博客《数据结构课程设计——报数问题》&#xff0c;这是我记录一段实践经验的开始。 回望那时的自己&#xff0c;还很稚嫩&#xff0c;刚刚迈入计算机的大门不久&#xff0c;一切都显得新鲜而充满挑战。今天是我成为创作者…...

SpringBoot快速上手

1.Maven Maven是项目管理工具&#xff0c;通过pom.xml文件来获取jar包&#xff0c;而不用手动去添加jar包 引入依赖之后需要刷新maven&#xff0c;以下这两个地方都可以 中央仓库 &#xff1a; Central Repository: Maven Repository: Central 2.Spring Boot 2.1创建项目…...

自动化:批量文件重命名

自动化&#xff1a;批量文件重命名 1、前言 2、效果图 3、源码 一、前言 今天来分享一款好玩的自动化脚&#xff1a;批量文件重命名 有时候呢&#xff0c;你的文件被下载下来文件名都是乱七八糟毫无规律&#xff0c;但是当时你下载的时候没办法重名或者你又不想另存为重新重…...

低延迟与高性能的技术优势解析:SmartPlayer VS VLC Media Player

在实时视频流的应用中&#xff0c;RTSP&#xff08;Real-Time Streaming Protocol&#xff09;播放器扮演着至关重要的角色&#xff0c;尤其是在视频监控、远程医疗、直播等高实时性需求的场景中。随着行业需求的不断升级&#xff0c;对播放器的低延迟、稳定性、兼容性等方面的…...

java中的Servlet2.x详解

一、Servlet 2.x 版本演进与核心特性 Servlet 2.x 是 Java Web 开发中承上启下的重要版本系列&#xff0c;主要包括 Servlet 2.4 和 Servlet 2.5 两个子版本。以下是其核心特性与改进&#xff1a; Servlet 2.4&#xff08;2003年发布&#xff09; XML Schema 支持&#xff1a;…...

大模型deepseek如何助力数据安全管理

敏感数据识别与处理 精准定位敏感信息 &#xff1a;运用多模态识别引擎技术&#xff0c;快速扫描上传文件与输入内容&#xff0c;精准识别身份证号、银行卡号、商业合同关键信息等各类敏感数据&#xff0c;并支持金融、医疗等行业定制化规则库&#xff0c;满足不同行业的特殊需…...

【linux驱动】【设备树】按键设备树讲解

设备树你添加电源键示例。 / {gpio-keys {compatible = "gpio-keys";#address-cells = <1>;#size-cells = <0>;button@1 {label = "Power Button";linux,code = <KEY_POWER>; // 按键编码,定义在include/uapi/linux/input-event-code…...

Vibe Coding:编程中的氛围与效率的艺术

引言 在软件开发的世界里&#xff0c;我们常常关注语言特性、框架选择和算法效率&#xff0c;却较少讨论一个同样重要的因素——编程时的"氛围"&#xff08;vibe&#xff09;。Vibe Coding是一种关注开发者心理状态、工作环境和整体"感觉"的编程方法论。它…...

算法岗实习八股整理——深度学习篇(不断更新中)

目录 激活函数特征典型例子sigmod函数tanh函数补充&#xff1a;零中心化输出优势非线性特性如何提升神经网络表现 激活函数 特征 非线性&#xff1a;激活函数满足非线性时&#xff0c;才不会被单层网络替代&#xff0c;神经网络才有意义可微性&#xff1a;优化器大多数是用梯…...

Java IO及Netty框架学习小结

Netty netty官网: Netty 什么是Netty&#xff1f; Netty 是 一个异步事件驱动的网络应用程序框架&#xff0c;用于快速开发可维护的高性能协议服务器和客户端。Netty 是一个 NIO 客户端服务器框架&#xff0c;可以快速轻松地开发网络应用程序&#xff08;例如协议服务器和客…...

理想AI Talk第二季-重点信息总结

一、TL&#xff1b;DR 理想为什么要做自己的基模&#xff1a;座舱家庭等特殊VLM场景&#xff0c;deepseek/openai没有解决理想的基模参数量&#xff1a;服务端-300B&#xff0c;VLencoder-32B/3.6B&#xff0c;日常工作使用-300B&#xff0c;VLA-4B为什么自动驾驶可以达成&…...

软件架构之-论软件系统架构评估以及应用

论软件系统架构评估以及应用 摘要正文 摘要 2023年2月&#xff0c;本人所在集团公司承接了长三角地区某省渔船图纸电子化审查系统项目开发&#xff0c;该项目旨在为长三角地区渔船建造设计院&#xff0c;以及渔船图纸审查机构提供一个便捷化的服务平台。在此项目中&#xff0c;…...

Java面试实战:从Spring Boot到分布式缓存的深度探索

Java面试实战&#xff1a;从Spring Boot到分布式缓存的深度探索 场景介绍 在一家著名的互联网大厂&#xff0c;面试官老王正对求职者“水货程序员”明哥进行Java技术面试。明哥带着一点紧张和自信&#xff0c;迎接这场技术“拷问”。 第一轮&#xff1a;基础问题 老王&#…...

2025年全国青少年信息素养大赛C++小学全年级初赛试题

一、单选题 1、在C中&#xff0c;表示逻辑运算符 "或" 的是&#xff1f;&#xff08; &#xff09;&#xff08;5 分&#xff09; A&#xff0e;|| B&#xff0e;& C&#xff0e; D&#xff0e; 解析&#xff1a;||是或者&#xff0c; &&是并且 2、…...

React中巧妙使用异步组件Suspense优化页面性能。

文章目录 前言一、为什么需要异步组件&#xff1f;1. 性能瓶颈分析2. 异步组件的价值 二、核心实现方式1. React.lazy Suspense&#xff08;官方推荐&#xff09;2. 路由级代码分割&#xff08;React Router v6&#xff09; 总结 前言 在 React 应用中&#xff0c;随着功能复…...