<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Uncate on 凌虚 Blog</title><link>https://rifewang.github.io/categories/uncate/</link><description>Recent content in Uncate on 凌虚 Blog</description><generator>Hugo</generator><language>zh-CN</language><copyright>Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)</copyright><lastBuildDate>Wed, 30 Oct 2024 00:49:37 +0800</lastBuildDate><atom:link href="https://rifewang.github.io/categories/uncate/index.xml" rel="self" type="application/rss+xml"/><item><title>什么？修改 JSON 内容居然还有个 JSON PATCH 标准</title><link>https://rifewang.github.io/rfc6902-json-patch/</link><pubDate>Fri, 07 Apr 2023 11:27:16 +0800</pubDate><guid>https://rifewang.github.io/rfc6902-json-patch/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;你一定知道 JSON 吧，那专门用于修改 JSON 内容的 JSON PATCH 标准你是否知道呢？&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.rfc-editor.org/rfc/rfc6902" target="_blank" rel="noopener noreffer "&gt;RFC 6902&lt;/a&gt; 就定义了这么一种 JSON PATCH 标准，本文将对其进行介绍。&lt;/p&gt;
&lt;h2 id="json-patch"&gt;JSON PATCH&lt;/h2&gt;
&lt;p&gt;JSON Patch 本身也是一种 JSON 文档结构，用于表示要应用于 JSON 文档的操作序列；它适用于 HTTP &lt;code&gt;PATCH&lt;/code&gt; 方法，其 MIME 媒体类型为 &lt;code&gt;&amp;quot;application/json-patch+json&amp;quot;&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>GitHub Actions 指南</title><link>https://rifewang.github.io/github-actions/</link><pubDate>Mon, 23 Dec 2019 00:00:00 +0800</pubDate><guid>https://rifewang.github.io/github-actions/</guid><description>&lt;h1 id="github-actions-指南"&gt;GitHub Actions 指南&lt;/h1&gt;
&lt;p&gt;GitHub Actions 使你可以直接在你的 GitHub 库中创建自定义的工作流，工作流指的就是自动化的流程，比如构建、测试、打包、发布、部署等等，也就是说你可以直接进行 CI（持续集成）和 CD （持续部署）。&lt;/p&gt;</description></item><item><title>给你的库加上酷炫的小徽章</title><link>https://rifewang.github.io/ava-codecov-travis/</link><pubDate>Sat, 21 Dec 2019 13:36:00 +0800</pubDate><guid>https://rifewang.github.io/ava-codecov-travis/</guid><description>&lt;h1 id="给库加上酷炫的小徽章--avacodecovtravis-示例"&gt;给库加上酷炫的小徽章 &amp;amp; ava、codecov、travis 示例&lt;/h1&gt;
&lt;p&gt;GitHub 很多开源库都会有几个酷炫的小徽章，比如：&lt;/p&gt;
&lt;p&gt;&lt;img
 class="lazyload"
 src="https://rifewang.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/npm/v/io-memcached/latest"
 data-srcset="https://img.shields.io/npm/v/io-memcached/latest, https://img.shields.io/npm/v/io-memcached/latest 1.5x, https://img.shields.io/npm/v/io-memcached/latest 2x"
 data-sizes="auto"
 alt="https://img.shields.io/npm/v/io-memcached/latest"
 title="npm (tag)" /&gt; &lt;img
 class="lazyload"
 src="https://rifewang.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/travis/com/rifewang/io-memcached"
 data-srcset="https://img.shields.io/travis/com/rifewang/io-memcached, https://img.shields.io/travis/com/rifewang/io-memcached 1.5x, https://img.shields.io/travis/com/rifewang/io-memcached 2x"
 data-sizes="auto"
 alt="https://img.shields.io/travis/com/rifewang/io-memcached"
 title="Travis (.com)" /&gt; &lt;img
 class="lazyload"
 src="https://rifewang.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/codecov/c/github/rifewang/io-memcached"
 data-srcset="https://img.shields.io/codecov/c/github/rifewang/io-memcached, https://img.shields.io/codecov/c/github/rifewang/io-memcached 1.5x, https://img.shields.io/codecov/c/github/rifewang/io-memcached 2x"
 data-sizes="auto"
 alt="https://img.shields.io/codecov/c/github/rifewang/io-memcached"
 title="Codecov" /&gt; &lt;img
 class="lazyload"
 src="https://rifewang.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/npm/l/io-memcached"
 data-srcset="https://img.shields.io/npm/l/io-memcached, https://img.shields.io/npm/l/io-memcached 1.5x, https://img.shields.io/npm/l/io-memcached 2x"
 data-sizes="auto"
 alt="https://img.shields.io/npm/l/io-memcached"
 title="NPM" /&gt; &lt;img
 class="lazyload"
 src="https://rifewang.github.io/svg/loading.min.svg"
 data-src="https://img.shields.io/github/last-commit/rifewang/io-memcached"
 data-srcset="https://img.shields.io/github/last-commit/rifewang/io-memcached, https://img.shields.io/github/last-commit/rifewang/io-memcached 1.5x, https://img.shields.io/github/last-commit/rifewang/io-memcached 2x"
 data-sizes="auto"
 alt="https://img.shields.io/github/last-commit/rifewang/io-memcached"
 title="GitHub last commit" /&gt;&lt;/p&gt;</description></item><item><title>使用 Makefile 构建指令集</title><link>https://rifewang.github.io/makefile/</link><pubDate>Sun, 15 Dec 2019 13:39:47 +0800</pubDate><guid>https://rifewang.github.io/makefile/</guid><description>&lt;h1 id="使用-makefile-构建指令集"&gt;使用 Makefile 构建指令集&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;make&lt;/code&gt; 是一个历史悠久的构建工具，通过配置 &lt;code&gt;Makefile&lt;/code&gt; 文件就可以很方便的使用你自己自定义的各种指令集，且与具体的编程语言无关。
例如配置如下的 &lt;code&gt;Makefile&lt;/code&gt; :&lt;/p&gt;</description></item><item><title>实现 memcached 客户端：TCP、连接池、一致性哈希、自定义协议</title><link>https://rifewang.github.io/create-memcached-client/</link><pubDate>Mon, 09 Dec 2019 13:41:38 +0800</pubDate><guid>https://rifewang.github.io/create-memcached-client/</guid><description>&lt;h1 id="实现-memcached-客户端tcp连接池一致性哈希自定义协议"&gt;实现 memcached 客户端：TCP、连接池、一致性哈希、自定义协议。&lt;/h1&gt;
&lt;p&gt;废话不多说，文本将带你实现一个简单的 memcached 客户端。&lt;/p&gt;
&lt;h2 id="集群一致性哈希"&gt;集群：一致性哈希&lt;/h2&gt;
&lt;p&gt;memcached 本身并不支持集群，为了使用集群，我们可以自己在客户端实现路由分发，将相同的 key 路由到同一台 memcached 上去即可。
路由算法有很多，这里我们使用一致性哈希算法。&lt;/p&gt;</description></item><item><title>CPU 密集型任务会阻塞 Node.js 吗【译】</title><link>https://rifewang.github.io/nodejs-thread-block/</link><pubDate>Tue, 24 Sep 2019 17:19:31 +0800</pubDate><guid>https://rifewang.github.io/nodejs-thread-block/</guid><description>&lt;p&gt;&lt;em&gt;本文翻译自：
&lt;a href="https://betterprogramming.pub/is-node-js-really-single-threaded-7ea59bcc8d64" target="_blank" rel="noopener noreffer "&gt;https://betterprogramming.pub/is-node-js-really-single-threaded-7ea59bcc8d64&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;CPU密集型任务会阻塞 Node.js 吗？&lt;/p&gt;
&lt;p&gt;让我们使用加密任务做个简单测试：&lt;/p&gt;
&lt;p&gt;&lt;img
 class="lazyload"
 src="https://rifewang.github.io/svg/loading.min.svg"
 data-src="https://raw.githubusercontent.com/RifeWang/images/master/uncate/nodejs-block1.png"
 data-srcset="https://raw.githubusercontent.com/RifeWang/images/master/uncate/nodejs-block1.png, https://raw.githubusercontent.com/RifeWang/images/master/uncate/nodejs-block1.png 1.5x, https://raw.githubusercontent.com/RifeWang/images/master/uncate/nodejs-block1.png 2x"
 data-sizes="auto"
 alt="https://raw.githubusercontent.com/RifeWang/images/master/uncate/nodejs-block1.png"
 title="https://raw.githubusercontent.com/RifeWang/images/master/uncate/nodejs-block1.png" /&gt;&lt;/p&gt;
&lt;p&gt;如图所示，连续执行四次加密任务，打印耗时，结果会发生什么？&lt;/p&gt;</description></item><item><title>Let's Encrypt 配置 HTTPS 免费泛域名证书</title><link>https://rifewang.github.io/lets-encrypt/</link><pubDate>Thu, 27 Jun 2019 16:26:45 +0800</pubDate><guid>https://rifewang.github.io/lets-encrypt/</guid><description>&lt;p&gt;想要使用 HTTPS ，你必须先拥有权威 CA（证书签发机构）签发的证书（对于自签名的证书，浏览器是不认账的）。Let&amp;rsquo;s Encrypt 就是一家权威的 CA 证书签发机构，你可以向他申请免费的证书（一般商业证书的价格比较贵）。&lt;/p&gt;</description></item><item><title>深入理解 Node.js 事件循环架构【译】</title><link>https://rifewang.github.io/nodejs-event-loop-architecture/</link><pubDate>Tue, 28 May 2019 15:53:48 +0800</pubDate><guid>https://rifewang.github.io/nodejs-event-loop-architecture/</guid><description>&lt;p&gt;&lt;em&gt;本文翻译自：
&lt;a href="https://medium.com/preezma/node-js-event-loop-architecture-go-deeper-node-core-c96b4cec7aa4" target="_blank" rel="noopener noreffer "&gt;https://medium.com/preezma/node-js-event-loop-architecture-go-deeper-node-core-c96b4cec7aa4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img
 class="lazyload"
 src="https://rifewang.github.io/svg/loading.min.svg"
 data-src="https://raw.githubusercontent.com/RifeWang/images/master/uncate/node-event-loop1.jpeg"
 data-srcset="https://raw.githubusercontent.com/RifeWang/images/master/uncate/node-event-loop1.jpeg, https://raw.githubusercontent.com/RifeWang/images/master/uncate/node-event-loop1.jpeg 1.5x, https://raw.githubusercontent.com/RifeWang/images/master/uncate/node-event-loop1.jpeg 2x"
 data-sizes="auto"
 alt="https://raw.githubusercontent.com/RifeWang/images/master/uncate/node-event-loop1.jpeg"
 title="https://raw.githubusercontent.com/RifeWang/images/master/uncate/node-event-loop1.jpeg" /&gt;&lt;/p&gt;
&lt;p&gt;关于 Node.js ，相信你已经了解过不少内容，诸如 Node.js 内核、事件循环、单线程、setTimeout 或 setImmediate 函数的执行机制等等。&lt;/p&gt;</description></item><item><title>使用 Puppeteer 构建自动化端到端测试</title><link>https://rifewang.github.io/puppeteer/</link><pubDate>Fri, 22 Mar 2019 15:04:16 +0800</pubDate><guid>https://rifewang.github.io/puppeteer/</guid><description>&lt;p&gt;端到端测试指的是将系统作为一个黑盒，模拟正常用户行为，跨越从前端到后端整个软件系统，是一种全局性的整体测试。&lt;/p&gt;
&lt;p&gt;来看本文的示例：&lt;/p&gt;
&lt;video autoplay="true" width="100%" class="video-shortcode" preload="" controls&gt;
 &lt;source src="https://rifewang.github.io/videos/puppeteer-eg.mp4" type=""&gt;
 There should have been a video here but your browser does not seem
 to support it.
&lt;/video&gt;
&lt;p&gt;你在视频中看到的所有操作全部都是由程序自动完成的，就像真实的用户一样，通过这种自动化的方式可以很好的提升我们的测试效率从而保证交付的质量。&lt;/p&gt;</description></item><item><title>图像相似性：哈希和特征</title><link>https://rifewang.github.io/image-similarity/</link><pubDate>Thu, 14 Mar 2019 15:15:10 +0800</pubDate><guid>https://rifewang.github.io/image-similarity/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;如何判断图像的相似性？&lt;/p&gt;
&lt;p&gt;直接比较图像内容的 md5 值肯定是不行的，md5 的方式只能判断像素级别完全一致。图像的基本单元是像素，如果两张图像完全相同，那么图像内容的 md5 值一定相同，然而一旦小部分像素发生变化，比如经过缩放、水印、噪声等处理，那么它们的 md5 值就会天差地别。&lt;/p&gt;</description></item><item><title>图像处理基础</title><link>https://rifewang.github.io/image-processing/</link><pubDate>Tue, 26 Feb 2019 14:51:44 +0800</pubDate><guid>https://rifewang.github.io/image-processing/</guid><description>&lt;h1 id="图像处理基础"&gt;图像处理基础&lt;/h1&gt;
&lt;p&gt;现如今我们每时每刻都在与图像打交道，而图像处理也是我们绕不开的问题，本文将会简述图像处理的基础知识以及对常见的裁剪、画布、水印、平移、旋转、缩放等处理的实现。&lt;/p&gt;</description></item></channel></rss>