<a href="https://yiyan.baidu.com" target="_blank">百度文心一言</a>
<a href="https://chat.deepseek.com/" target="_blank">DeepSeek</a>
<a href="https://www.tongyi.com/" target="_blank">阿里通义千问</a>
<a href="https://yuanbao.tencent.com" target="_blank">腾讯元宝</a>
<a href="https://chat.minimaxi.com/" target="_blank">MiniMax</a>
<a href="https://doubao.com/chat/" target="_blank">字节豆包</a>
<a href="https://www.kimi.com/" target="_blank">月之暗面</a>
<a href="https://chatglm.cn/" target="_blank">智谱清言</a>
<a href="https://www.wanzhi.com" target="_blank">万知</a>
<a href="https://www.stepfun.com/" target="_blank">阶跃AI</a>
<a href="https://www.chatgpt.com" target="_blank">OpenAI ChatGPT</a>
<a href="https://gemini.google.com/app" target="_blank">Google Gemini</a>
<a href="https://Claude.ai" target="_blank">Claude</a>初果实验室
-
常用人工智能网站链接
-
订购阿里云特价0.66折云服务器ECS年付仅99元
非常适合个人开发者学习和使用,年付价格仅 99 元,
特价福利产品,所以每个账号仅限制购买一台。
点击下方图片购买。
购买步骤视频演示:
https://www.bilibili.com/video/BV117pdeEECQ/?vd_source=d997f54cc2fcf65d9d414ae1fc2125c6
登录主机的终端 [ Terminal ] 软件为 tabby https://tabby.sh/
-
使用 openssl 查询 X.509 证书的有效期
openssl命令可以用来查询一个 X.509 证书(apiclient_cert.pem)的结束日期(expiration date)的。openssl x509 -in apiclient_cert.pem -noout -enddateopenssl: 是 OpenSSL 命令行工具,用于处理 SSL/TLS 协议相关的任务。x509: 是 OpenSSL 中的一个子命令,用于处理 X.509 证书和证书请求。-in apiclient_cert.pem: 指定了输入文件,即要查询的 X.509 证书文件。-noout: 这个选项告诉 OpenSSL 不要输出证书的全部内容,而只是输出你指定的信息。-enddate: 这个选项告诉 OpenSSL 输出证书的结束日期。
运行这个命令后,将只看到
apiclient_cert.pem证书的结束日期,而不会有其他任何输出。结果示例:
notAfter=Feb 19 03:14:07 2023 GMT表示证书有效期截止2023年2月9号。
-
使用 chatGPT 生成 Knex.js 代码
Knex.js 是一个SQL语句构建器,
在已知 SQL 的情况下,可以使用 chatGPT,来反向生成 Knex.js 代码。
假设有如下的场景:
通过监控,日志等系统获取到SQL,
然后使用 chatGPT 生成对应的 Knex.js 代码,
如果这个SQL是本身用 Knex.js 生成的,
那么就可以对比审计原来的代码,
如果需要使用 Knex.js 重写此业务,
无需阅读 Knex.js 文档或者手动编码,
直接使用生成的代码即可。
使用举例:

chatGPT Generate Knexjs Code 示例 SQL
SELECT e.name FROM employees e JOIN departments d ON e.department_id = d.id JOIN ( SELECT department_id, AVG(salary) AS avg_salary FROM salaries GROUP BY department_id ) AS avg_salaries ON d.id = avg_salaries.department_id JOIN salaries s ON e.id = s.employee_id WHERE d.name = 'Engineering' AND s.salary > avg_salaries.avg_salary;使用 Knex.js 编写上述 SQL 查询的生成代码如下:
const knex = require('knex')({ client: 'your_database_client', connection: { // your database connection configuration } }); knex.select('e.name') .from('employees as e') .join('departments as d', 'e.department_id', 'd.id') .join(knex.select('department_id', knex.raw('AVG(salary) as avg_salary')).from('salaries').groupBy('department_id').as('avg_salaries'), 'd.id', 'avg_salaries.department_id') .join('salaries as s', 'e.id', 's.employee_id') .where('d.name', 'Engineering') .andWhere('s.salary', '>', knex.raw('avg_salaries.avg_salary')) .then(rows => { console.log(rows); }) .catch(err => { console.error(err); }) .finally(() => { knex.destroy(); });记得替换
your_database_client和连接配置与您的实际数据库信息相匹配。参考 Reference:
-
PHP使用JSON_DECODE解码JSON字符串
示例代码:
<?php //预定义变量 $http_json_data = null; //将HTTP报文Body赋值给预定义变量 $http_json_data = file_get_contents('php://input'); //如果HTTP报文内容不为空 if ( !empty($http_json_data) ) { //使用json_decode函数解码数据包为数组 $data = json_decode($http_json_data, true); //如果解码时,没有出现错误 if ( json_last_error() == JSON_ERROR_NONE ) { //解码后的数据是个数组 if ( is_array($data) ) { //答应数组的内容 var_dump($data); } } }视频地址:
https://www.bilibili.com/video/BV17E421u7KN
参考:
https://www.php.net/manual/zh/function.json-decode.php
https://github.com/chuguotech/labs/blob/master/www/php/json_decode.php
-
命令行JSON数据处理工具 jq 的使用
在命令行环境中,jq 是一个功能强大的工具,用于解析、查询和操作 JSON 数据。jq 可以让您轻松地从 JSON 数据中提取所需的信息,进行筛选、转换和格式化。
jq 官方网站地址:https://jqlang.github.io/jq
jq 的一些常用功能:
- 查询和过滤: jq 可以根据特定的条件查询和过滤 JSON 数据,使您能够只提取感兴趣的部分。
- 转换和修改: jq 允许您对 JSON 数据进行转换和修改,例如更改键名、修改值或添加新的键值对。
- 格式化: jq 可以将 JSON 数据格式化为易于阅读的形式,提高可读性。
- 组合和重构: 您可以使用 jq 将多个 JSON 数据合并或重构成新的结构。
- 条件处理: jq 支持条件语句,使您能够根据特定条件对 JSON 数据进行处理。
例如,以下是一个简单的 JSON 数据:
{ "name": "John", "age": 30, "city": "New York", "pets": [ {"name": "Buddy", "species": "dog"}, {"name": "Mittens", "species": "cat"} ] }使用 jq,您可以执行如下操作:
- 提取名为 “name” 的值:
.name - 提取所有宠物的名称:
.pets[].name - 将年龄增加 1:
.age += 1 - 格式化 JSON 数据:
.
jq 的语法简单明了,但功能强大,可用于处理各种复杂的 JSON 数据。
-
JSON数据常用处理工具
JSONView 是一个 Chrome 浏览器的插件,安装这个插件后,如果网页内容是JSON格式的数据,就会显示为易于阅读的格式。

JSON Diff 是一个在线比对两个 JSON 数据差异的工具。

JSON formatter 是一个在线格式化,以多种视图如文本、代码、表单、树等展示 JSON 数据的网站,除了格式化,还可以搜索关键词,导出为XML,CSV,YAML格式的文件。

jq 是一个轻量的基于命令行模式的 JSON 处理工具,具有格式化、检索、过滤,计算等多种复杂的功能。

观看这个视频:https://www.bilibili.com/video/BV1Yp42197CJ/?vd_source=d997f54cc2fcf65d9d414ae1fc2125c6
可以了解 jq 在 Linux 命令行中的基本使用方法。
-
JSON简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,通常用于在网络之间传输数据。JSON采用了人类易于理解和机器易于解析的文本格式。它基于JavaScript编程语言的一部分,但也被许多其他编程语言支持和使用。
JSON由键值对构成,每个键值对都由一个键(key)和一个值(value)组成,键和值之间使用冒号分隔,每个键值对之间使用逗号分隔。键必须是一个字符串,值可以是字符串、数字、布尔值、数组、对象或者null。
以下是一个JSON的示例:
{ "name": "John", "age": 30, "isStudent": false, "hobbies": ["reading", "coding", "traveling"], "address": { "city": "New York", "zipcode": "10001" }, "spouse": null }在这个示例中:
“name”是一个字符串键,其对应的值是”John”。
“age”是一个数字键,其对应的值是30。
“isStudent”是一个布尔键,其对应的值是false。
“hobbies”是一个数组键,其对应的值是一个包含三个字符串元素的数组。
“address”是一个对象键,其对应的值是一个嵌套的对象,包含”city”和”zipcode”两个键值对。
“spouse”是一个键,其对应的值是null,表示没有配偶。
JSON的简洁性、可读性和易于解析使其成为网络应用程序之间数据交换的理想选择。道格拉斯·克罗克福德(Douglas Crockford)是计算机科学家、程序员和作家,他在JSON(JavaScript Object Notation)的推广和普及方面发挥了重要作用。他在2006年提出了JSON的概念,将其作为一种数据交换格式引入到了JavaScript中。
参考文章:
JSON风格指南:https://github.com/darcyliu/google-styleguide/blob/master/JSONStyleGuide.md
-
定时清理 docker nginx 日志文件
Nginx 如果开启了日志,Linux 系统中默认的文件通常是 /var/log/nginx/access.log
如果流量比较大时间久了会占用大量磁盘空间。
本文中 Nginx 是运行在Docker 容器中的,
所以清理时,需要将命令传递给Docker
首先获取 Docker Container ID
cid=$(docker ps | grep nginx | awk '{print $1}');在宿主机执行清理命令
/usr/bin/docker exec $cid bash -c 'truncate -s 0 /var/log/nginx/access.log'在 crontab 设置命令触发时间为每月1号的1点1分
1 1 1 * * cid=$(docker ps | grep nginx | awk '{print $1}');/usr/bin/docker exec $cid bash -c 'truncate -s 0 /var/log/nginx/access.log' -
Docker php:7.2.34-fpm-alpine3.12 安装zip扩展
基于 php:7.2.34-fpm-alpine3.12 创建docker安装 zip 扩展
apk add --no-cache libzip-dev && docker-php-ext-configure zip --with-libzip=/usr/include && docker-php-ext-install zip参考:
