首页
学习
活动
专区
圈层
工具
发布

使用 TypeScript 和依赖注入实现一个聊天机器人

我们将会使用: Node.js TypeScript Discord.js,Discord API的包装器 InversifyJS,一个依赖注入框架 测试库:Mocha,Chai和ts-mockito...) 的一部分使用: 1https://discordapp.com/oauth2/authorize?...或者,如果你用了其他 IDE,只需使用 TypeScript 插件中的文件监视器,让你的 IDE 去处理编译。...在单元测试中的关键是定义 isPing():true 或 false 的结果。消息内容是什么并不重要,所以在测试中我们只使用 "Non-empty string"。...主要区别在于这些测试中的依赖关系不会被模拟。但是,有些依赖项不应该像外部 API 连接那样进行测试。在这种情况下,我们可以创建模拟并将它们 rebind 到容器中,以便替换注入模拟。

13.4K20

精准获取你想要的!— 揭秘如何用字段选择参数优化数据查询

通过使用字段选择参数,你只获取必要的数据: GET /api/users?...防止过度裁剪  当然,字段选择也并非越少越好。过度裁剪会导致你在后续的操作中频繁发送请求,造成更多的服务器负担。...总结:数据查询里的“断舍离”哲学  在数据查询的世界里,字段选择参数犹如一把锋利的剪刀,帮助我们从复杂的返回结果中剪裁出自己需要的部分。其核心理念就是——用最少的数据满足最全的需求。...忘记考虑嵌套字段:嵌套数据是字段选择的高频场景,尤其在 GraphQL 中,需要注意不要遗漏重要的子字段。 裁剪过度:裁掉过多字段导致客户端需要额外请求补充数据,增加不必要的通信成本。...就像生活中的选择一样,它教会我们如何专注于重要的部分,而非被无用的东西分心。   所以,从今天起,用字段选择参数,让你的数据查询“瘦身”吧!

74221
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    老婆问「我今天穿什么合适」?让AI来帮你想答案吧

    我肯定需要构建一个能找到视频帧中的脸和人体以及执行人脸识别的 AI 模型。如果认出了 Yumi 的脸,那么接下来的 AI 模型就需要获取她的穿着信息并执行一次搜索:是否已经将该衣物加入到了衣服目录中。...人脸是用于识别人的身份,人体检测则是为了裁剪出全身图像以便存入穿着日记。我使用 Amazon SageMaker 构建了一个定制的目标检测模型,并将其部署到了 AWS DeepLens 中。...首先,我必须完成该系统接下来的部分,它可将检测到的人的裁剪图像发送给我的 Image Logger S3 bucket。...我只需要额外添加几行代码将裁剪后的图像编码成 jpeg 流并用 base64 编码它们,以便我可以通过 MQTT 以字符串流的形式发送它们。...这会导致这个过程进一步减慢,因为这会需要大量不必要的人脸识别,这可不好。但是,看到她这一整天被记录下来的无数照片,让我知道她每天为我们做饭和照顾我们的孩子是多么的忙。对我来说,她是世界上最好的岳母。

    79440

    TakePhoto-轻量级Android照片处理框架V2.0发布

    ,满足的大部分的使用需求,具体使用详见simple。...在TakeResultListener相关方法中获取结果。 获取图片 TakePhoto提供拍照,从相册选择,从文件中选择三种方式获取图片。...API: /** * 从文件中获取图片(不裁剪) */ void onPickFromDocuments(); /** * 从相册中获取图片(不裁剪) */ void onPickFromGallery...,有可能系统中没有自带或第三方的裁剪工具,所以为了提高TakePhoto的兼容性,当系统中没有自带或第三方裁剪工具时,TakePhoto会自动切换到使用TakePhoto自带的裁剪工具进行裁剪。...为适配部分手机拍照或从相册选择图片时屏幕方向会发生转变,从而导致拍照失败的问题,可以在AndroidManifest.xml中对使用了TakePhoto的Activity添加android:configChanges

    1.7K90

    在 `el-upload` 上传图片前裁剪:让你的应用更“裁”心,更“剪”美!

    引言大家有没有经历过这样的尴尬时刻?你兴高采烈地上传了一张自拍,结果发现里面有一位不速之客:背景中的路人、凌乱的桌面,或者是某只不安分的宠物。如果你觉得这只是个别现象,那就错了。...裁剪是一个用户体验友好的功能,可以帮助用户在上传前修正图片内容,避免上传不必要的部分。为什么要裁剪图片?有人可能会问:“为什么要费劲在上传前裁剪图片呢?不能让用户直接上传原图吗?”...裁剪的目的不仅是美化图片,还有以下几个原因:提升用户体验:裁剪可以帮助用户剔除图片中的不必要部分,让他们上传的图片更符合需求。...Blob 文件封装成 FormData,并使用 axios 发送 POST 请求到服务器。...在这个过程中,我们探讨了如何使用 cropper.js 结合 el-upload 组件,实现图片裁剪与上传的完整流程。

    81410

    【专业技术】Android 启动性能优化 - kernel篇

    题目有点大,其实kernel的启动性能调整和android基本没什么关系,我想应该适用所有使用linux的嵌入式设备。 时间测量 说到性能调整,第一件该干的的事就是看下时间到底消耗在哪里。...有了这个时间,基本就可以确定哪些部分需要 优化了。我的做法是只关注耗时10000us以上的驱动。...裁剪内核,这块比较大,要单独开一篇来介绍,裁剪的好处有两点:第一减少kernel的尺寸,这也就相应的减少了加载kernel image的时间,第二也减少了不必要的初始化。 3....推迟module init中不必要的操作到其他地方,比如open函数中,我觉得设备上下电,以及设备初始化都可以考虑移到初次使用设备时进行。...去 掉hotplug helpers,因为android仅使用netlink来发送uevent事件。

    1.7K80

    带你用 Python + 人脸识别自动裁剪头像

    接下来我们使用 Python 实现自动化人脸识别和图片裁剪功能。 ?...这次我们用微软的 API 来做测试,当然你也可以使用百度、Face ++等公司的 API,只需要替换掉请求接口的部分就可以了。 你可以下面的网址申请微软 API 试用: ?...我这边估算后简单地将人脸检测的区域扩大一倍作为裁剪区域,可以满足需求,当然大家可以根据实际情况进行调整。 接下来我们使用 Python 中的 PIL 库进行裁剪。...小结: 在这篇文章中,我们介绍了使用 PPT 裁剪圆形头像的方法,并学习了如何通过 Python 自动化批量裁剪圆形头像。...主要用到的知识点有: 1、微软人脸识别接口的调用 2、PIL 库实现裁剪功能 遗留问题: 1、裁剪区域的合理性:如果人脸在图片中的位置过于靠近边缘,就会导致我们计算的裁剪区域超出图片区域,裁剪结果中就会出现黑色部分

    4.7K30

    干货 | 减少50%空间,携程机票React Native Bundle 分析与优化

    对于每个业务包可以给出一个可用包尺寸大小,并且根据每日打包结果,生成对应的过去时间段中的打包尺寸大小色阶图,使用色阶可以预警过去的时间段中是否出现超限的业务包打包结果,及时对打包内容进行排查。...3.2 实现原理 CRN bundle 分析平台主要依赖三个部分进行实现,分别是处理 JOB 数据、使用后台 API 分析打包后的业务包文件,最后在前端进行各种图表化的展示。 ?...打开平台页面后,使用者选择要分析的业务包名称,后台API根据参数调用相关接口,得到要分析的业务包的下载地址和对应的内容映射文件,并且将数据添加到队列中,等待后续分析处理。...在这个截图中,可以很清楚地看到,除了公共引用库以外的内容中,有几个比较明显的膨胀模块,分别是 lodash、moment,以及一个工具类库下的业务逻辑文件。接下来我们针对这几处明显的问题进行优化。...官方虽然也提供了 lodash-cli 这样的工具,让使用方可以针对具体的某些函数进行打包,但官方是不推荐这种用法的,并且在新的版本中也取消了这样的部分模块打包方式。

    2.1K20

    【译】我是如何学习任意前端框架的

    你是对的,你不必要从头开始学习它。在这篇文章中,我将向你展示我学习前端框架的经验以及这些框架如何彼此相似的。 每次你决定学习前端框架时,你定会反复听到这些术语(组件,路由和管理状态/状态管理)。...1.查找 & 显示 (模仿) 常用的首个应用是使用其公共的API来模仿任何已知站点,尝试构建一个带下拉列表的搜索栏,来保存来自端点API的结果,检查其返回的数据,然后再显示它,就像有张图像一样(显示)或不显示...,例如,一旦用户点击进入,就向端点API获取结果数据 学会如何展示单条数据或一组数据 给你插入的数据添加点样式 构建你的布局 主要的详细信息:列表结果将结果中的每个项目的链接添加到项目详细页面 了解如何将数据从母版页传递到详细信息页...2.Auth App 我在上一节中提到的一些端点API(可能)需要一些身份验证,因此在这一节中尝试添加或构建另一个带有登陆/注册页面的应用程序。...你将学到: 学习如何使用管理状态解决方案,如redux for react, ngrx for angular 2+ 或 vuex for vuejs以及如何将其与客户端应用程序集成 使你的应用更灵活

    5K10

    将分布式系统转换为可嵌入的库有多难?

    原本应该处在高层的 GRPC API(api crate),却被两个核心模块 storage 和 collection 来回引用,导致后来我裁剪的时候,虽然我并不需要任何 tonic(grpc)和 axum...接下来,就是来找 TableOfContent 在何处创建。很简单的代码搜索后,不难发现它在 main.rs 里初始化的: 我们只需要确保相关的代码都拷贝到我们的 POC 代码中,并引入需要的依赖。...20年前,在我刚刚开始以软件工程师的角色开始工作时,我的第一个重要的任务就是把 linux 2.6 的 netlink 裁剪并移植回公司使用的 linux 2.4。...如今,算法工程师常常被调侃成调参工程师,其实软件工程师大部分时候也不过是写胶水代码的裱糊匠,或者做裁剪移植工作的裁缝,没什么大不了的。那么,如何做好「裁缝」的工作呢?...把一个分布式的系统裁剪成一个可嵌入使用的库,最重要的就是找到核心数据结构,而寻找核心数据结构,可以顺着高层的,对外提供服务的 API 抽丝拔茧,一点点找到调用的轨迹。

    62510

    如何集成验证码短信API到你的应用程序

    本文将介绍如何将验证码短信API集成到你的应用程序中,以确保你的用户数据得到保护。第一步:选择合适的验证码短信API在开始之前,你需要选择一个可靠的验证码短信API。...接下来我使用 APISpace 的 验证码短信API 来告诉大家如何将API集成到自己的应用程序中。第二步:注册并获取API密钥一旦选择了供应商,你需要注册并获取API密钥。...注册登录 APISpace,我们可以在【我的 API】中的【访问控制】页面看到API密钥。...4.发送验证码短信: 发送API请求到供应商的服务器,请求发送验证码短信。服务器将发送短信到用户的手机号码。5.验证用户输入: 用户在应用程序中输入收到的验证码。...应用程序需要将用户输入的验证码与发送的验证码进行比较,以确保匹配。6.处理验证结果: 根据用户输入的验证结果,你可以允许用户访问应用程序或执行其他操作,如密码重置或账户恢复。

    1.1K30

    React Native Android原生模块开发实战|教程|心得

    关于在React Native中使用原生模块,在这里引用React Native官方文档的一段话: 有时候App需要访问平台API,但在React Native可能还没有相应的模块。...,最后一个参数是一个Promise ,照片裁剪完成之后呢,原生模块可以通过Promise 来对js模块进行回调,来告诉裁切结果。...接下来我就为大家介绍一种原生模块可以向js多次传递数据的方式: 向js发送事件 在原生模块中我们可以向js发送多次事件,即使原生模块没有被直接的调用。...js模块发送任意次数的事件,其中eventName是我们要发送事件的事件名,params是此次事件所携带的数据,接下来呢我们就可以在js模块中监听这个事件了: componentDidMount() {...如果,大家在开发原生模块中遇到问题可以在本文的下方进行留言,我看到了后会及时回复的哦。 另外也可以关注我的新浪微博,或者关注我的Github来获取更多有关React Native开发的技术干货。

    2.4K40

    自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator

    我决定整一整,也就是对HarmonyOS Next最新版本API 13中的Core Vision Face Comparator API的学习,这项技术能够对人脸进行高精度比对,并给出相似度评分,判断是否为同一人...开始我的开发之旅应用场景的思考学习之前,我花了一些时间思考人脸比对技术的实际应用场景,例如:照片分类管理:基于相似度对图库中的照片进行智能分类,方便用户快速整理。...我还建议对图片进行预处理,例如裁剪人脸区域或调整图片大小,以进一步提高比对效率。...最后的小总结整完了这个API,我发现还真是挺有意思的。...未来,我计划将这一技术融入更复杂的场景,如照片管理和个性化服务。此外,还可以探索如何将人脸比对与其他AI能力结合,开发更加智能的综合解决方案。

    1.1K10

    20分钟让你了解OpenGL ——OpenGL全流程详细解读

    遗留下来常见和易于理解的部分,同时也尽量在介绍的时候兼顾易懂性和严谨性。希望对即将或正在学习OpenGL的开发者,提供一定的帮助。 ...OpenGL ES(OpenGL for Embedded Systems)是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,去除了许多不必要和性能较低的API接口...3  帧缓冲区(FrameBuffer) OpenGL是图形API,因此可以说所有的运算和结果最终都是需要通过图像进行输出的。那么绘图必然就需要有一块画板,而帧缓冲区就是OpenGL中的画板。...阅读 分享 在看 已同步到看一看 取消 发送 我知道了 朋友会在“发现-看一看”看到你“在看”的内容 确定 ?...取消 发布到看一看 确定 最多200字,当前共字 发送中 ? 微信扫一扫 关注该公众号 ? 微信扫一扫 使用小程序 即将打开""小程序 取消 打开

    9K44

    【Canvas】232-Canvas 最佳实践(性能篇)

    JavaScript 调用 DOM API(包括 Canvas API)以进行渲染。 2.2. 浏览器(通常是另一个渲染线程)把渲染后的结果呈现在屏幕上的过程。 ?...我尝试执行以下赋值操作 10 6 次,得到的结果是:对一个普通对象的属性赋值只消耗了 3ms,而对 context 的属性赋值则消耗了 40ms。...我发现,使用 drawImage 绘制同样大小的区域,数据源是一张和绘制区域尺寸相仿的图片的情形,比起数据源是一张较大图片(我们只是把数据扣下来了而已)的情形,前者的开销要小一些。...虽然看上去开销相差并不多,但是 drawImage 是最常用的 API 之一,我认为还是有必要进行优化的。 优化的思路是,将「裁剪」这一步骤事先做好,保存起来,每一帧中仅绘制不裁剪。...离屏绘制 上一节提到,绘制同样的一块区域,如果数据源是尺寸相仿的一张图片,那么性能会比较好,而如果数据源是一张大图上的一部分,性能就会比较差,因为每一次绘制还包含了裁剪工作。

    2.1K40

    rt-thread系统裁剪指南

    对于Linux来说,系统裁剪就是将不必要的组件或者外设和Linux中的工具去掉,减少系统功能,在uboot中也需要裁剪,合理设计必须初始化的外设,合理算出Linux kernel大小,然后进行跳转。...对于RTOS来说,系统裁剪可以通过对功能的缩减,减少不必要的组件初始化或者ipc初始化,例如,只需要用到关键的ipc比如信号,邮箱,那就不用初始化消息队列和事件,这样就能缩减代码体积,减少不必要的初始化过程...,外设的情况,前期软件开发调试,后期工厂测试,这时,整个硬件方案就可以确定下来了,软件开发者利用这个确定的硬件资源,进行软件层面的规划,所以在设计软件的时候,是完全知道硬件的资源的,包括引脚的使用,上电的逻辑...04 内核裁剪 rt-thread的组成就是组件+内核,我们先说一下内核裁剪部分,通过env工具可以看到如下功能: ? 1.线程间通信机制 ?...这部分裁剪可以根据需要进行 1.设置main线程的栈空间及优先级 2.是否使用C++特性 3.shell相关的操作的配置 4.设备虚拟文件系统 5.设备驱动框架 6.POSIX接口 7.网络部分 8.工具部分

    2K20

    Flink 对线面试官(四):1w 字,6 个面试高频实战问题(建议收藏)

    行存储:从存储系统读取所有满足条件的行数据,然后在内存中过滤出需要的字段,速度较慢。比如,一个表有 10 列,我其实只查 1 列数据的话,行存储还是会把 10 列数据都扫描一遍。...1 列存储:仅从存储系统中读取必要的列数据,无用列不读取,速度非常快。相同的例子,一个表有 10 列,我其实只查 1 列数据的话,列存储就只扫描这一列数据 2 3.2....3 3.3.多索引 列存用于裁剪不必要的字段读取,而索引则用于裁剪不必要的记录读取。ClickHouse 支持丰富的索引,从而在查询时尽可能的裁剪不必要的记录读取,提高查询性能。...其实在 Flink DataStream API 中,TTL 功能还是比较少用的。...举个例子,我要将一个 String 存储到 State 中时: ⭐ 没有设置 State TTL 时,则直接将 String 存储在 State 中 ⭐ 如果设置 State TTL 时,则 Flink

    2.6K41

    WebGL开发医学影像软件中的优化

    性能优化是WebGL开发医学影像软件中的关键环节,以下是一些提高性能的策略。1. 数据管理数据压缩: 在传输前对影像数据进行压缩,减少数据传输时间和内存占用。...渲染优化层级细节(LOD): 根据视距使用不同细节级别的模型,远处使用低细节模型,近处使用高细节模型。剔除: 使用背面剔除、视锥体裁剪等技术,只渲染摄像机可见的物体。...硬件加速WebGL2: 如果可能,使用WebGL2,它提供了更多的功能和性能改进。WebGPU: 探索WebGPU,这是WebGL的下一代API,提供了更现代的GPU编程模型。6....网络优化异步加载: 使用异步加载技术,避免阻塞UI线程。预加载: 预加载用户可能接下来需要的数据。7. 算法优化空间换时间: 在某些情况下,使用额外的空间存储中间结果可以减少计算时间。...代码优化减少全局查找: 缓存全局变量的引用,减少全局查找时间。避免不必要的计算: 删除或优化代码中的冗余计算。10. 用户界面优化响应式设计: 确保UI组件在不同设备和分辨率下都能高效运行。

    33400

    《实时渲染》第2章-图形渲染管线-2.3几何处理

    传统上,对象的大部分阴影是通过将灯光应用到每个顶点的位置和法线并仅将结果颜色存储在顶点来计算的。然后将这些颜色插入整个三角形。出于这个原因,这个可编程的顶点处理单元被命名为顶点着色器[1049]。...然后,顶点着色结果(可以是颜色、矢量、纹理坐标以及任何其他类型的着色数据)被发送到光栅化和像素处理阶段进行插值并用于计算表面的着色。...与将我们处理过的顶点沿着管道的其余部分发送到屏幕上不同,此时我们可以选择将这些顶点输出到数组中以供进一步处理。这些数据可以由CPU或GPU本身在以后的过程中使用。...接下来,我们描述整数和浮点值如何与像素(和纹理坐标)相关。给定像素的水平数组并使用笛卡尔坐标,最左边像素的左边缘在浮点坐标中为0.0。...每个人都有一个逻辑,在他们不同的地方不存在正确的答案。例如, (0,0) 在 OpenGL中位于图像的左下角,而在DirectX中位于左上角。在从一个API迁移到另一个API时,必须考虑到这种差异。

    500
    领券