初果实验室

  • 常用人工智能网站链接

    百度文心一言

    DeepSeek

    阿里通义千问

    腾讯元宝

    MiniMax

    字节豆包

    Kimi

    智谱清言

    万知

    阶跃AI

    OpenAI ChatGPT

    Google Gemini

    Claude

    <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 元,

    特价福利产品,所以每个账号仅限制购买一台。

    点击下方图片购买。

    【阿里云】云服务器经济型e实例/2核2G/3M/40g,新人专享渠道特惠价只要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 -enddate
    • openssl: 是 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:

    https://knexjs.org

    https://chat.openai.com

  • 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 的一些常用功能:

    1. 查询和过滤: jq 可以根据特定的条件查询和过滤 JSON 数据,使您能够只提取感兴趣的部分。
    2. 转换和修改: jq 允许您对 JSON 数据进行转换和修改,例如更改键名、修改值或添加新的键值对。
    3. 格式化: jq 可以将 JSON 数据格式化为易于阅读的形式,提高可读性。
    4. 组合和重构: 您可以使用 jq 将多个 JSON 数据合并或重构成新的结构。
    5. 条件处理: 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 数据。

    基本使用视频演示https://www.bilibili.com/video/BV1Yp42197CJ

  • 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

    参考:

    https://github.com/docker-library/php/issues/797