<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[be5yond的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/be5yond</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; be5yond]]></copyright><item><title><![CDATA[【技术分享】处理JSON 数据的神器: JMESPath (三) 高级篇]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/148263777</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/148263777</guid><author>be5yond</author><pubDate>Tue, 27 May 2025 20:18:15 +0800</pubDate><description><![CDATA[本文介绍了JMESPath处理JSON数据时的高阶用法——自定义函数功能。通过继承Functions类并定义_func_json_loads和_func_decimal_to_hex两个示例函数，开发者可以在JSON查询过程中直接调用自定义的数据转换逻辑。文中演示了如何将嵌套的JSON字符串解析为对象，并将其中的数值字段转换为指定格式的16进制字符串。这种扩展机制特别适用于需要复杂数据处理的数据可视化等场景，能够在不编写额外代码的情况下，通过查询表达式一步完成数据提取和转换操作。]]></description><category></category></item><item><title><![CDATA[【netstub】(三）使用流量桩实现多虚拟环境复用服务]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/121809005</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/121809005</guid><author>be5yond</author><pubDate>Thu, 19 May 2022 12:08:00 +0800</pubDate><description><![CDATA[info

项目地址：https://github.com/Be5yond/netstub

相关文章：

【netstub】(一）基于nginx反向代理实现客户端mock

【netstub】(二）使用流量桩实现服务端数据回放和mock

【netstub】(三）使用流量桩实现多虚拟环境复用服务

【netstub】用户手册

【netstub】管理员手册



1.应用场景

经常遇到多个需求并行开发的场景，每个需求的改动可能涉及到服务端的一个或多个服务。这时测试团队进行测试的时候，为了避免干扰...]]></description><category></category></item><item><title><![CDATA[使用urlencode，在requests中get请求发送字典数据]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/124354273</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/124354273</guid><author>be5yond</author><pubDate>Sun, 24 Apr 2022 10:40:07 +0800</pubDate><description><![CDATA[1.背景

某个项目中的一个查询接口，为了前端数据处理方便，get请求也传递了多层嵌套的参数。如下格式


{
    "page_num": 1,
    "page_size": 10,
    "filter": {
        "type": 2,
        "status": 1,
        "sort": {
            "product": 1,
            "time": -1
        }
    }
}

2.问题

使用requests内置]]></description><category></category></item><item><title><![CDATA[【nginx】静态文件处理：root和alias的区别以及try_files用法]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/122946423</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/122946423</guid><author>be5yond</author><pubDate>Tue, 15 Feb 2022 16:53:49 +0800</pubDate><description><![CDATA[对于静态文件，nginx支持配置文件路径。关键字为root和alias

简介

配置系统/data/www目录下有如下文件



 ─data
   └─www
      ├─file
      │  ├─a.txt
      │  ├─b.txt
      └─backup
         ├─c.txt
         └─d.txt

nginx 配置中，location中配置root关键字。


server {    
    ...   
    location /file {
]]></description><category></category></item><item><title><![CDATA[【nginx】配置proxy_pass之后，响应变慢的问题]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/122457801</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/122457801</guid><author>be5yond</author><pubDate>Wed, 12 Jan 2022 17:20:17 +0800</pubDate><description><![CDATA[背景

netstub项目中，使用openresty作为网关，proxy_pass处理。配置如下, access.lua中进行一些预处理，然后代理到目标服务


    ...    

    location / {
        access_by_lua_file /etc/nginx/conf.d/access.lua; 
        resolver 8.8.8.8;
        proxy_pass http://$http_host;
        proxy_buffering]]></description><category></category></item><item><title><![CDATA[【linux】日志分割神器logrotate, 配置介绍]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/122211394</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/122211394</guid><author>be5yond</author><pubDate>Wed, 29 Dec 2021 11:37:22 +0800</pubDate><description><![CDATA[1. 安装

CentOS中直接使用yum安装


&gt; yum -y install logrotate

2.运行机制

logrotate的运行依赖 crontab, 安装logrotate后, 自动在 /etc/cron.daily 目录下添加 logrotate 文件

内容如下:


&gt; cat logrotate
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]]]></description><category></category></item><item><title><![CDATA[【思考】如何写好测试报告]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/122198053</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/122198053</guid><author>be5yond</author><pubDate>Tue, 28 Dec 2021 17:57:41 +0800</pubDate><description><![CDATA[1.Why --- 为什么需要测试报告

任何报告都是从执行者到客户的重要且简洁的信息传输形式。那么作为测试人员, 让相关的产研合作方知悉关于软件测试过程是非常必要的．测试报告的作用有如下３个方面：


	测试报告是评估产品质量是否满足发布标准的文件．
	
	
	测试报告能够评估项目的当前状态和产品质量．
	
	
	测试报告可以是说明项目需要采取纠正措施的依据．
	
２.who --- 测试报告给谁

创建报告时, 首先要明确它的用途和接收对象, 根据目标受众关注的需求, 来确定报告应该包含哪些信息．

测]]></description><category></category></item><item><title><![CDATA[【redis】RedisJSON - Redis 的 JSON 数据类型简介]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/122127688</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/122127688</guid><author>be5yond</author><pubDate>Fri, 24 Dec 2021 15:58:26 +0800</pubDate><description><![CDATA[简介

RedisJSON 是一个Redis模块，允许从 Redis 键（文档）存储、更新和获取 JSON 值。

主要特点：

完全支持 JSON 标准
	用于在文档中选择元素的类似 JSONPath的语法
	文档以树状结构存储为二进制数据，允许快速访问子元素
	所有 JSON 值类型的类型化原子操作
命令格式

JSON.{cmd} key JsonPath  value


127.0.0.1:6380&gt; JSON.SET test . '{"key": "value"}'
O...]]></description><category></category></item><item><title><![CDATA[【docker】CentOS8 Docker镜像中配置crontab定时任务清理log]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/122112069</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/122112069</guid><author>be5yond</author><pubDate>Thu, 23 Dec 2021 17:51:22 +0800</pubDate><description><![CDATA[背景

netstub项目中, nginx服务 是跑在docker容器中运行, 长时间运行会生成大量的access.log, 需要配置定时清理日志. 将crontab 直接打到镜像中, 不用每次启动容器都去配置

配置方法

dockerfile中添加如下行,


# 安装 crontabs
RUN yum -y install crontabs
# 添加定时任务  每日清空access.log文件
RUN echo "* * */1 * * cat /dev/null &gt; /var/log/ngin]]></description><category></category></item><item><title><![CDATA[【openresty】大请求中 ngx.req.get_body_data() 返回nil的解决方法]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/122101689</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/122101689</guid><author>be5yond</author><pubDate>Thu, 23 Dec 2021 11:23:20 +0800</pubDate><description><![CDATA[背景：

netstub项目中，后端的lua脚本中使用ngx.req.get_body_data获取请求body中的数据，使用过程中发现，当请求的body数据较大时，nginx会报错，发现ngx.req.get_body_data() 返回的数据是nil。

原因：



当请求体大于client_body_buffer_size的时候，nginx会将数据保存到一个临时文件里。

解决方法：

① 配置client_body_buffer_size参数，将其改大，如100k

② 当get_body_d..]]></description><category></category></item><item><title><![CDATA[【nginx】记录response body和header到access.log]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/121999456</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/121999456</guid><author>be5yond</author><pubDate>Fri, 17 Dec 2021 16:53:24 +0800</pubDate><description><![CDATA[1 背景

netstub项目中，需要记录经过网关的请求信息到日志，供loki采集，以便后续的统计分析工作。

需要记录请求的request_body, request_header, response_body, response_header数据到access.log。

本文记录一下配置过程。

2 配置

2.1 记录请求url

配置nginx配置文件default.conf ，使用nginx内置变量 $host 和$request即可获得url数据


log_format main esca.]]></description><category></category></item><item><title><![CDATA[【netstub】管理员手册]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/121809109</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/121809109</guid><author>be5yond</author><pubDate>Thu, 09 Dec 2021 11:34:54 +0800</pubDate><description><![CDATA[1.安装部署

代码地址：https://github.com/Be5yond/netstub

1.1 依赖

docker

docker-compose

1.2 安装方法


&gt; git clone https://github.com/Be5yond/netstub.git
&gt; cd netstub
&gt; docker-compose up

2.配置

2.1 配置DNS服务 mock域名

修改coredns目录下的host文件

格式如下：

192.168.8.171ww.]]></description><category></category></item><item><title><![CDATA[【netstub】(二）使用nginx作为流量桩实现服务端数据回放和mock]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/121404157</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/121404157</guid><author>be5yond</author><pubDate>Wed, 08 Dec 2021 20:17:27 +0800</pubDate><description><![CDATA[功能

1.1 log的预处理与持久化

  ① 请求数据处理后记录日志，（如加密字段解密明文后记录日志）

  ② 日志汇总集中管理，grapana展示，方便查看和数据共享，输出统计信息，（如请求的覆盖率）。

1.2 基于反向代理，前端无感知的mock

  ①无需配置代理，https请求无需安装证书

  ② 同一接口基于规则可mock多条数据，未命中规则的请求不mock

1.3 沙盒级别的流量录制与回放

1.4 多虚拟环境实现服务复用



核心

  
...]]></description><category></category></item><item><title><![CDATA[【netstub】(一）基于nginx反向代理实现客户端mock]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/121407958</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/121407958</guid><author>be5yond</author><pubDate>Wed, 08 Dec 2021 18:50:00 +0800</pubDate><description><![CDATA[1. 背景

目前app前端测试，需要抓包查看接口数据，采用charles进行代理，进行数据抓包。 需要mock数据的话，使用charles的 Map Local功能。



问题

①mock数据共享比较麻烦，同一接口只能mock 1个返回。

② 数据中有加密字段，需要手动粘贴出来进行处理，才能查看数据

③ https 安装证书步骤繁琐，部分机型需要特殊处理

2.目标

期望开发一个mock工具，可以支持https抓包，同API可配置返回不同的数据，抓包数据支持预处理，如可以解密数据字段。

3..]]></description><category></category></item><item><title><![CDATA[【netstub】用户手册]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/121791901</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/121791901</guid><author>be5yond</author><pubDate>Wed, 08 Dec 2021 16:29:33 +0800</pubDate><description><![CDATA[1 mock数据配置

1.1 mock数据查找原理

接口配置，标记出参与区分请求的字段
	mock数据配置，配置字段的值分别对应的mock返回
	netstub收到请求后，根据接口配置提取当前请求中的数据，md5计算后，查找与之对应的mock数据
    ① 找到数据： 返回mock数据

    ② 没有找到数据： 返回原始服务数据



1.2mock配置页面的使用

如需要对/get 接口进行数据mock， 标记多个字段来区分请求

① 接口配置页面，标记出参与区...]]></description><category></category></item><item><title><![CDATA[【docker-compose】启动时报错pyrsistent SyntaxError: invalid syntax]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/121681742</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/121681742</guid><author>be5yond</author><pubDate>Thu, 02 Dec 2021 17:12:08 +0800</pubDate><description><![CDATA[报错信息：


# docker-compose -h
/usr/lib/python2.7/site-packages/paramiko/transport.py:33: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in the nex]]></description><category></category></item><item><title><![CDATA[【docker-compose】python2 安装过程中报error: command ‘gcc‘ failed with exit status 1]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/121681693</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/121681693</guid><author>be5yond</author><pubDate>Thu, 02 Dec 2021 17:08:38 +0800</pubDate><description><![CDATA[正确安装Python开发环境导致，解决方式如下：


yum install python-devel


]]></description><category></category></item><item><title><![CDATA[【nginx】proxy_pass的使用总结]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/121654500</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/121654500</guid><author>be5yond</author><pubDate>Wed, 01 Dec 2021 15:04:53 +0800</pubDate><description><![CDATA[1. 反向代理的语法

nginx 配置反向代理的上游服务，可以使用三种语法

proxy_pass
配置示例：


location / {
    proxy_pass       http://localhost:8000;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
}

fastcgi_pass
配置示例：


location / {
    fastcgi_pass...]]></description><category></category></item><item><title><![CDATA[【nginx】location 匹配规则总结]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/121509574</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/121509574</guid><author>be5yond</author><pubDate>Wed, 24 Nov 2021 11:23:58 +0800</pubDate><description><![CDATA[1. 语法规则

语法规则，location关键字后面是可选的修饰符[ = | ~ | ~* | ^~ ]，后面是要匹配的字符串 uri，花括号中是要执行的操作。




2. 修饰符说明





匹配优先级为 精确匹配=， 其次前缀匹配^~，然后是正则匹配， 再然后匹配不带任何修饰的前缀匹配。最后是交给/通用匹配。一旦匹配成功，则不再进行后续的匹配

2.1 示例

配置文件如下


    location = /files/index.html {
        echo 1 ind...]]></description><category></category></item><item><title><![CDATA[【docker】docker-compose 自定义容器ip地址]]></title><link>https://blog.youkuaiyun.com/be5yond/article/details/121426932</link><guid>https://blog.youkuaiyun.com/be5yond/article/details/121426932</guid><author>be5yond</author><pubDate>Fri, 19 Nov 2021 17:25:04 +0800</pubDate><description><![CDATA[1. 背景

使用 docker-compose 部署openresty服务，lua脚本中连接同一网络的redis服务时，报错

docker-compose.yaml配置如下：


version: "3.9"

networks:
  loki:

services:
  loki:
    ...省略部分配置...

  resty:
    image: beyond147896/resty:latest
    ports:
      - "80:80"
      - "443:443"
  ]]></description><category></category></item></channel></rss>