首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nest + Sharp 实现了一个 gif 压缩工具,帮我省不少钱

于是去年年底我就开了一年会员: 但最近发现有 npm 包可以做这个,没必要买这种网站会员。。。...一般色彩丰富图片,可以把 colours 设置小一点。 当把 colours 设置为 2,图片就变成这样了: 图片也更小了一些: 具体怎么设置压缩级别和颜色数量,还是看需求。...: 安装需要 ts 类型包: npm install -D @types/multer AppController 里添加这样一个路由: @Post('upload') @UseInterceptors...然后我们改下前端代码上传接口: 测试下上传: 提示文件上传成功了,然后服务端控制台也打印了文件信息,并且 uploads 目录下可以看到这个文件: 这些文件浏览器打开,可以看到就是上传...案例代码 github: 前端代码:https://github.com/QuarkGluonPlasma/nestjs-course-code/tree/main/gif-compression-frontend

26820

Puppeteer Sharp: 使用C#和Headless Chrome爬网页

Puppeteer Sharp是用C#写,由达里奥·孔德拉蒂乌克于2017年发行,为.NET开发者提供同样功能。 ?...如果您是 .NET 开发人员,通过 Nuget 包安装到项目中可以实现: 使用无头 Web 浏览器抓取 Web 使用测试框架自动测试Web 应用程序 检索 JavaScript 呈现 HTML 现代...Getting Started 新或现有的 .NET 项目中使用Puppeteer Sharp 。安装最新版本Nuget包"PuppeteeSharp"。 ?...image.png 更改网页大小 如果需要测试特定显示大小网页(例如查看页面在手机上显示方式),可以使用 Puppeter Sharp 更改当前页面的网页大小: // Change the size...,而 DevTools 将显示查看 Web 应用程序 JavaScript 呈现代码选项,以及查看网络活动等功能。

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

Astro 3.0 闪亮登场,让你轻松构建更快速、更流畅前端应用

通过将 imageService: true 添加到您Vercel集成配置中,您可以在其全球CDN上看到优化后生产图像。 迁移到Sharp作为我们新默认优化库。...Sharp取代了之前默认库 @squoosh/lib,后者已不再维护。 支持优化远程图像。内容团队可以继续使用其现有的工作流程和CMS工具来管理图像。...此功能允许本地更改智能地推送到浏览器,而无需进行全页面刷新,从而保持UI的当前状态。这不仅加快了开发速度,还消除了更新UI时频繁页面状态重置困扰。...通过自动HTML缩小、更清晰组件ID和自动CSS内联等一系列优化措施,Astro 3.0构建输出在各方面都变得更加高效和流畅。...cd my-project npm start 对于现有项目,您可以 v3.0升级指南 中找到详细升级指导,以获取每个更改详细信息和个别的升级指导。

37820

Genesis框架从入门到精通(3):框架内置动作

本篇教程旨在将这之前两篇文章融合一下,把Wordpress动作与Genesis框架结合起来。 Genesis目录结构和文件组织方面做得很好。...:用于搜索页面的动作 sidebar.php :用于创建用于侧边栏钩子和动作(仅在被layout.php文件调用了情况下执行) 同样,可以看出根据文件结构找到需要代码是多么容易。...要更改某些函数,最好先复制现有函数,为其指定新名称,然后根据需要对其进行编辑。正如我之前所说,还有其他方式可以修改函数。...本系列接下来教程中,我将解释什么是过滤器,它可以让你在不用对动作进行删除,添加,修改操作情况下做出更大更改。 现在,你可以Genesis文件中找到需要动作,然后删除,移动或修改它们。...本系列下一部分中,我将讨论一些其他很酷用于处理动作技巧,包括如何添加新操作,使用现有函数以及动作外部使用函数。

90830

HTTP介绍(二)

文章HTTP介绍(一) 中,从技术概述、HTTP会话、HTTP认证等方面对HTTP进行介绍。本篇文章将着重介绍HTTP信息格式和安全方法。 客户端向服务器发送请求,服务器进行响应。...HTTP / 1.0规范定义了GET,HEAD和POST方法,而HTTP / 1.1规范添加了五个新方法:OPTIONS,PUT,DELETE,TRACE和CONNECT。...POSTPOST方法用来传输实体主体,虽然GET方法可以实现同样效果,但POST主要目的并不是获取响应主要内容。 PUT PUT方法请求将包含实体存储提供URI下。...如果URI引用了已经存在资源,则对其进行修改;如果URI指向现有资源,则服务器可以使用该URI创建资源。 DELETE DELETE方法删除指定资源。...换句话说,除了相对无害影响(例如日志记录,Web缓存,横幅广告投放或增加Web计数器)之外,它们不应具有副作用。因此,不考虑应用程序状态上下文情况下进行任意GET请求应该被认为是安全

52400

如何在Debian 9上安装和使用Docker

为此,我们将添加一个新包源,从Docker添加GPG密钥以确保下载有效,然后安装该包。...第2步 - 没有Sudo情况下执行Docker命令(可选) 默认情况下,该docker命令只能由root用户或docker组中用户运行,该用户Docker安装过程中自动创建。...如果您选择这样做,请使用sudo在前面添加命令。 让我们接下来探讨docker命令。 第3步 - 使用Docker命令 使用docker包括传递一系列选项和命令,后跟参数。...现在您可以容器内运行任何命令。例如,让我们更新容器内包数据库。您不需要使用sudo来为任何命令添加前缀,因为您以root用户身份容器内操作: apt update 然后在其中安装任何应用程序。...让我们来看看它是如何工作。 步骤7 - 将容器中更改提交到Docker镜像 当您启动Docker镜像时,您可以像使用虚拟机一样创建,修改和删除文件。您所做更改仅适用于该容器。

23.5K4233

窃取数千GB数据、冒充黑客向公司索要 1275 万赎金未成,又冒充吹哨人致使市值蒸发 255 亿元:面临 37 年监禁

,并通过SSH复制了数百个GitHub代码存储库。...法庭文件写道:“除了其他操作外,Sharp还对AWS上某些日志运用了一天生命周期保留策略,这么做效果就是删除表明入侵者一天内活动某些证据。”...该公司拒绝支付赎金,随后从系统中发现并删除了第二个后门,更改了所有员工登录信息,并于1月11日发布了安全事件通知。...Sharp还表示,Ubiquiti没有日志记录系统,因此无法检查攻击者访问了什么数据或系统。这与司法部关于他篡改公司日志记录系统方面所获取信息相一致。...虽然美国司法部近日新闻稿或起诉书中没有提到Sharp雇主,但所有细节都与之前有关Ubiquiti安全事件信息以及Sharp领英帐户中提供信息完全一致。

23010

.NET中实现AOP7种姿势

实现复杂(用到COM,需要另一个运行程序,等等) 6、编译时IL修改  产品:( Post Sharp / Cecil ) 优点:非常强大,性能非常好。...缺点:非常难以实现 7、运行时修改IL 产品:( Post Sharp / Cecil ) 优点:非常强大,性能很好 缺点:非常难以实现‍‍‍‍‍‍‍‍ 通常自己写太费功夫,都是用现成。...——————————————————————————————- AOP相关术语 方面(Aspect) 一个Aspect指上文提到横切关注点在编程中具体实现,它包含一个横切关注点所需要实现具体辅助功能...连接模型(JPM, Join Point Model) JPM主要是面向方面语言(如AspectJ)或面向方面框架语义模型。主要包含以下三点:有哪些可用连接点,如何指定连接点以及如何织入。...AOP实现方式 一般来说,纯编译型语言(如C、C++)等语言中实现AOP非常困难,必须完全从编译器角度入手。

4.4K30

RESTful API 设计最佳实践

创建:使用POST创建新资源。 更新:使用PUT更新现有资源。 删除:使用DELETE删除现有资源。 2个URL乘以4个HTTP方法就是一组很好功能。...将版本号放在URL中是必需。如果您有兼容和破坏性更改,版本号可以让你更容易发布API。发布新API时,只需增加版本号中数字。...响应参数中添加浏览其它API链接 理想情况下,不会让客户端自己构造使用REST APIURL。让我们思考一个例子。 客户端想要访问员工薪酬表。...更好方案是响应参数中添加一个links字段,让客户端可以自动变更。 请求: GET /employees/ 响应: //......另一个好处是,你API变得可以自我描述,需要写文档更少。 分页时,您还可以添加获取下一页或上一页链接示例。只需提供适当偏移和限制链接示例。 GET /employees?

1.3K60

RESTful API 设计最佳实践

GET方法具有只读含义。因此,你可以完美的使用缓存。 创建:使用POST创建新资源。 更新:使用PUT更新现有资源。 删除:使用DELETE删除现有资源。...将版本号放在URL中以是必需。如果您有兼容和破坏性更改,版本号将让你能更容易发布API。发布新API时,只需增加版本号中数字。...响应参数中添加浏览其它API链接 理想情况下,不会让客户端自己构造使用REST APIURL。让我们思考一个例子。 客户端想要访问员工薪酬表。...更好方案是响应参数中添加一个 links字段,让客户端可以自动变更。 请求: GET /employees/ 响应: //......另一个好处是,你API变得可以自我描述,需要写文档更少。 分页时,您还可以添加获取下一页或上一页链接示例。只需提供适当偏移和限制链接示例。 GET /employees?

1.4K10

Maven进行增量构建

Maven Java编译器插件对增量编译提供了不错支持,但它无法处理一些极端情况,例如: 源文件夹中文件更改时触发编译。 更改代码时跳过单元测试。...大多数情况下,为了处理已删除文件情况,必须运行mvn clean install,这意味着将编译完整代码并执行单元测试。...偶然发现有一个插件可以解决这个两个问题: 更改代码后触发对应文件编译并触发完整版本构建。 更改代码情况下跳过单元测试执行。...这两个功能都可以帮助大大减少编译时间,因为大多数情况下,只有很少模块被更改并且可以使用以前生成输出。您可以通过启用此插件来快速构建。...如何使用插件 该插件是预清理阶段添加,将以下条目添加到pom.xml并使用mvn pre-clean install。

2.5K30

从一个170倍内存优化说起脚本方案评估

作为对比测试unlua,10W次用例就崩溃了。预计指数级增长用例,puerts测试到1000w内存占用还不到1个G。他们严重怀疑是测试代码写错或者获取内存占用数据方式有问题。...代码量小不等于内存少,事实上很多内存方面的精细化管理就需要复杂代码来支撑。 但也不能因而得出大应用v8占优结论,这和你代码是怎么写有很大关系。具体问题具体分析,没有放之四海而皆准结论。...别只关注跨语言 我觉得这是最重要建议,我看到几乎所有对比测试都是着重于“跨语言”测试,我觉得很不合理,我觉得设计良好代码,脚本大部分代码应该都是虚拟机内部运行,互相调用,跨语言占比比较少。...我一直认为,性能够用情况下,测试数字上提升带来价值不大,当年华为请来一位质量管理大师说过:“所谓质量,就是满足需求”。我深以为然。...与其卷纸面性能,不如puerts把更多精力投在其它方面,比如: 对接好v8现有的工具链,让用户在编码,调试,自动化测试等有更好体验; 帮助用户写更健壮代码,比如加入减少野指针访问对象声明周期跟踪功能

99610

【Parcel 2 + Vue 3】从0到1搭建一款极快,零配置Vue3项目构建工具

使用动态import()语法,Parcel拆分输出包,以便只初始加载时加载所需内容。 开发过程中进行更改时,Parcel会自动更新浏览器中模块,无需配置。...包裹使您代码可移植。您可以为不同环境,服务器Web或应用程序构建代码。您甚至可以一次建立多个目标,并在进行更改时实时更新它们。包裹快速且可预测。...这意味着它比每晚或alpha版本更稳定,但是完全稳定版本发布之前,仍需要进行一些更改。特别是,beta表示我们不打算更改大多数面向用户API。...这绝不是意味着不可配置,只是Parcel试图从代码本身中推断出尽可能多信息,并将现有的配置文件用于其他工具(例如.babelrc)。...但是,一直安装sharp这地方卡着。我又看了下文档。

1.2K30

文件上传渐进式增强

网页开发者们想了很多办法,试图提升文件上传功能和操作体验,各种Javascript库基础上,开发了五花八门插件。...英国程序员Remy Sharp总结了这些新接口,本文在他文章基础上,讨论如何采用HTML5API,对文件上传进行渐进式增强,实现以下功能:   * iframe上传   * ajax上传   ...* 进度条   * 文件预览   * 拖放上传 为了对这些功能有一个感性认识,你可以先看看Remy Sharp提供范例。...有没有办法"异步上传",在网页不重载情况下,完成整个上传过程呢? HTML5没有出现之前,只能使用iframe做到这一点。...其次,它在action属性指定上传网址后面,添加了一个参数,使得服务器知道回调函数名称。这样就能将服务器返回信息,从iframe窗口传到上层页面。

1.4K60

【译】73个超棒且可提高生产力 NPM 包

在这里,我整理了一些我最喜欢 NPM 包列表。我也将它们分类,因此信息更加结构化,更易于浏览。 当然,你不必安装和学习所有这些工具。大多数情况下,从每个类别中挑选一个就足够了。...模板语言 29.Mustache[50] Mustache 是一种无逻辑模板语法。它可以用于 HTML,配置文件,源代码等任何东西。它工作原理是使用 hash 或对象中提供模板中展开标记。...ESLint 是完全插件化,每个规则都是一个插件,你可以在运行时添加更多内容。 50.Prettier[73] Prettier 是一种固执己见代码格式化程序。...它通过解析代码并使用自己规则(考虑到最大行长度)重新打印代码,以及必要时包装代码,来强制执行一致样式。 ? 模块打包和压缩器 51.Webpack[74] 一个著名功能强大模块打包器。...许多情况下这很有用,例如基于用户输入任何自动化。 希望你找到了对你有用有用 npm 包! 感谢你阅读,可以关注我[98]获取更多信息!

5.9K30

vs2015编写c#项目下各文件解析 vs项目结构解析vs项目结构解析

这两个文件是很基本,大小都不大,但是对于组织解决方案确实起了很大作用,建议不要随意手动去更改VS中操作后自然会对文件修改。...创建 Windows 窗体项目时,默认情况下,C# 会将一个窗体添加到项目中,并为其命名为 Form1。表示该窗体两个文件称为 Form1.cs 和 Form1.Designer.cs。...3、.cs  .csproj  .resx   .cs:C Sharp Source File   Form1.csproj文件大家应该不会陌生,那就是C#项目文件扩展名,它是“C Sharp Project...和Post-Build需要哪些操作等等。...Release: 称为发布版本,不对源代码进行调试,编译时对应用程序速度进行优化,使得程序代码大小和运行速度上都是最优,以便于用户很好使用。

2.8K51

文件上传最佳前端体验做法

网页开发者们想了很多办法,试图提升文件上传功能和操作体验,各种Javascript库基础上,开发了五花八门插件。...英国程序员Remy Sharp总结了这些新接口,本文在他文章基础上,讨论如何采用HTML5API,对文件上传进行渐进式增强,实现以下功能:   * iframe上传   * ajax上传   *...进度条   * 文件预览   * 拖放上传 为了对这些功能有一个感性认识,你可以先看看Remy Sharp提供范例。...有没有办法”异步上传”,在网页不重载情况下,完成整个上传过程呢? HTML5没有出现之前,只能使用iframe做到这一点。...其次,它在action属性指定上传网址后面,添加了一个参数,使得服务器知道回调函数名称。这样就能将服务器返回信息,从iframe窗口传到上层页面。

1.7K10

Node.js 服务端图片处理利器——sharp 进阶操作指南

这里主要是想记录一下我使用 Sharp 过程中遇到一些稍复杂图片处理需求解决方案,希望分享出来能够对大家有所帮助。...sharp 图像合成方面只提供了一个函数:overlayWith,其接受一个图片参数(同样是图片本地路径字符串或者图片 Buffer 数据)以及一个可选 options 配置对象(可配置水印图片位置等信息...逻辑上也比较简单,我们代码如下所示: /** * 添加水印 * @param { Sharp } img 原图 * @param { String } watermarkRaw 水印图片 * @...,sharp 还支持更复杂配置参数比如是否重复粘贴多个水印图片、是否只 α 信道粘贴水印图片等,具体可参见 overlayWith 文档。...前端实现 这里还需要顺带提一下前端实现。当然,如果服务端是按照固定规则给图片添加水印(比如新浪微博里图片水印放置固定位置),前端就不必做什么了。

6.9K20

保持 Go 模块兼容

因此,通常最好以兼容方式更改现有的包。 在这篇文章中,我们将探讨一些引入非破坏性变更技巧。常见主题是:添加更改或删除。我们还将从一开始就讨论如何设计您 API 以实现兼容性。...这可以防止包外定义类型嵌入情况下满足接口要求,从而使您可以以后添加方法而不会破坏用户实现。例如,请参见 testing.TB’s private() 函数。...添加配置方法(Add configuration methods) 到目前为止,我们已经讨论了公开中断更改,在这种情况下更改类型或函数会导致用户代码停止编译。...如果您有一个导出结构类型,您几乎总是可以添加一个字段或删除一个未导出字段,而不会破坏兼容性。添加字段时,请确保其零值有意义并保留旧行为,以便设置新字段现有代码能够继续工作。...不常见情况下,您有一个希望比较值结构,然后添加一个 doNotCompare 字段,您以后可以自由地更改结构,而不必担心破坏比较。缺点是,该类型不能作为映射键使用。

1.2K30
领券