初果实验室

  • WordPress REST API 的基本使用

    WordPress 默认开放 REST API

    如果你基于WordPress建立的网站已经就绪,且发布了文章,

    就可以通过下面的URL直接访问JSON格式的数据:

    文章列表  https://www.yourdomain.com/wp-json/wp/v2/posts

    页面列表  https://www.yourdomain.com/wp-json/wp/v2/pages

    用户列表  https://www.yourdomain.com/wp-json/wp/v2/users

    将域名 yourdomain.com 替换为自己的域名,

    如果页面返回404错误,需要设置WEB代理服务器(Nginx)的重定向规则。

    官方REST API手册,访问 https://developer.wordpress.org/rest-api/reference/

    由此可见,如果网站想提供数据接口服务,没有开发成本

    禁用 REST API ,可以安装插件 Disable REST API

    Chrome 插件 JSON Viewer 可以格式化 json ,以便于阅读。

  • 利用github actions和crush.pics实现图片自动压缩

    crush.pics 提供高性能的图片压缩服务,并且开放了接口,只需要去crush.pics注册并获得免费的api-key,然后集成到 github actions 上,就可以实现图片自动压缩服务了。

    在 github actions 市场搜索 Image Optimizer  或者访问下面的地址即可。

    https://github.com/marketplace/actions/image-optimizer

    github actions 的 yml 文件配置就绪后,只要你每次的pull request里面有图片文件,就会自动触发服务,crush.pics 压缩并更新图片,然后我们只需要更新代码就可以看到经过压缩后的图片了。图片压缩的级别,图片的类型等配置都可以在yml文件中设定。

     

     

  • 如何删除git分支

    <1> 删除本地分支

    使用命令 git branch -a 查看所有分支,以 remotes 开头的是远程分支;

    例如要删除本地分支 test ,使用如下命令

    先切到非 test 分支,

    git checkout master

    删除 test 分支 

    git branch -D test

    <2> 删除远端分支

    git push origin –delete test

    origin为远程仓库的名称

    test为要删除的分支

    删除远程分支不影响本地分支

    删除分支要谨慎操作

     

     

     

     

  • 详解哈希函数SHA-1计算过程

    Please wait while you are redirected…or Click Here if you do not want to wait.
  • 使用线性同余法生成随机数

    随机性的研究广泛存在于很多自然科学领域,如统计学,密码学,博弈论,量子力学等。

    经典物理中,随机现象本质上并不是随机的,因为经典物理过程的所有变量都是可以被模拟的,一旦掌握了事件发生的所有外在因素,就可以算出结果,所以任何基于经典过程模拟的随机,都是伪随机。

    量子物理中,量子态的坍缩过程是真正随机的,其随机性是微观粒子固有的内禀特性,与任何其他外部变量无关,所以量子系统的随机现象是真随机

    经典计算机算法均具备确定的特性,所以真随机数无法由算法来生成。基于量子系统的随机数发生器目前使用成本比较高,对于绝大多数的日常应用,只要样本分布达标,伪随机数也可以满足要求。

    线性同余法是一种古老的生成随机数的方法,算法简单容易理解,曾经被广泛应用,美国莱默尔在1951年提出,但由于其存在很大缺陷,现在已经弃用。

    算法的递归公式定义如下:

    如果期望结果达到最大周期,取值应该满足下述条件:

    1> m 的所有质因数都能整除 a-1

    2> 若m是4的倍数,a-1 也是

    3> a, c, Xo  都比 m 小

    例如:设 m=28,a=15,  c = 5,  Xo = 1 , 则有

    所得随机序列为 20, 25, 16, 21, 12, 17, 8, 13, 4…

    计算机编程语言Python计算示例:

    def rng(m=28, a=15, c=5):
        rng.now = (a*rng.now + c) % m
        return rng.now
    rng.now = 1
    print([rng() for i in range(10)])

    随机数生成还有其他算法,像平方取中发生器、乘积取中发生器、常数乘子发生器和斐波那契发生器等。有兴趣的读者可以自行研究。

     

  • phpMyAdmin管理MySQL用户

    通过命令行管理MySQL用户不是很方便,

    尤其是变更用户密码和授权的操作,

    需要输入较为复杂的命令,

    如果在机器上部署了phpMyAdmin的话,

    就可以很方便快捷地通过图形界面来操作。

    例如新增用户,删除用户,修改用户密码,数据库授权等。

    参考视频:

    https://www.bilibili.com/video/bv1CK4y177Zr

     

  • phpMyAdmin连接MySQL配置SSL证书

    视频演示:https://www.bilibili.com/video/BV1oy4y1b7yR/

    phpMyAdmin连接 localhost上的MySQL Server是通过unix socket通信的。

    phpMyAdmin连接远程MySQL服务器,如果期望加密通信数据,此时通过配置SSL来实现。

    以Ubuntu为例,MySQL 安装后默认是开启SSL的,在数据目录/var/lib/mysql下通常会有以下文件

    ca.pem

    client-cert.pem

    client-key.pem

    只需要把这3个文件复制到phpMyAdmin所在的服务器上,然后修改phpMyAdmin SSL配置即可。

    切到 phpMyAdmin 部署的根目录,复制文件libraries/config.default.php里面有关ssl的选项到根目录下的config.inc.php中。

    也就是说,在根目录文件config.inc.php中添加下面的配置

    如果根目录没有config.inc.php,应该复制config.sample.inc.php为config.inc.php

    /**
    * Use SSL for connecting to MySQL server?
    *
    * @global boolean $cfg['Servers'][$i]['ssl']
    */
    $cfg['Servers'][$i]['ssl'] = true;
    
    /**
    * Path to the key file when using SSL for connecting to the MySQL server
    *
    * @global string $cfg['Servers'][$i]['ssl_key']
    */
    $cfg['Servers'][$i]['ssl_key'] = 'path/to/client-key.pem';
    
    /**
    * Path to the cert file when using SSL for connecting to the MySQL server
    *
    * @global string $cfg['Servers'][$i]['ssl_cert']
    */
    $cfg['Servers'][$i]['ssl_cert'] = 'path/to/client-cert.pem';
    
    /**
    * Path to the CA file when using SSL for connecting to the MySQL server
    *
    * @global string $cfg['Servers'][$i]['ssl_ca']
    */
    $cfg['Servers'][$i]['ssl_ca'] = 'path/to/ca.pem';
    
    /**
    * Directory containing trusted SSL CA certificates in PEM format
    *
    * @global string $cfg['Servers'][$i]['ssl_ca_path']
    */
    $cfg['Servers'][$i]['ssl_ca_path'] = 'path/to/';
    
    /**
    * List of allowable ciphers for SSL connections to the MySQL server
    *
    * @global string $cfg['Servers'][$i]['ssl_ciphers']
    */
    $cfg['Servers'][$i]['ssl_ciphers'] = null;
    
    /**
    * MySQL 5.6 or later triggers the mysqlnd driver in PHP to validate the
    * peer_name of the SSL certifcate
    * For most self-signed certificates this is a problem. Setting this to false
    * will disable the check and allow the connection (PHP 5.6.16 or later)
    *
    * @link https://bugs.php.net/68344
    * @global string $cfg['Servers'][$i]['ssl_verify']
    */
    $cfg['Servers'][$i]['ssl_verify'] = true;

    配置中的路径为上述三个证书相关文件的实际路径。

    此时,需要确认MySQL是否允许远程连接,

    MySQL配置文件路径 /etc/mysql/mysql.conf.d/mysqld.cnf

    bind-address = 127.0.0.1

    表示只允许本地连接,应该在行首加#注释此行,

    再次,确认MySQL服务器是否允许入站端口3306 ,

    此时应该就可以安全的连接MySQL了。

     

  • WordPress在线客服插件tawk介绍

    基于WordPress开发的电商类型的网站,通常有客户希望询盘,经典的联络表单方式,沟通答复间隔时间比较长,很容易造成客户流失,而通过tawk提供的服务,我们可以实时响应访客的询问,从而更快捷的达成交易。

    tawk支持多种常见应用平台,像Windows/Mac OS X/Android/iPhone都可以安装使用,这里仅介绍团队针对WordPress开发的插件。在使用之前,需要去官方网站https://www.tawk.to/注册账号,注册之后,填写自己网站的名称URL,可以得到Site IDAPI Key,然后在WordPress后台的设置/Tawk.to/Account Setting里面登陆并选择对应的property即可。

    tawk 的后台功能有仪表盘【dashboard】/监控【Monitoring】/会话【Message】/设置【Setting】等模块,可以满足日常的基础需求。

    为了实时响应用户咨询消息,推荐在自己常用的设备上安装对应版本的tawk。

    官方使用指导文档请访问下面的链接:

    https://www.tawk.to/knowledgebase/plugins-and-modules/add-a-tawk-to-widget-to-wordpress/

  • 使用插件advanced custom fields来扩展WordPress文章字段

    WordPress文章的默认属性,例如分类、标签、题图,摘要,状态等,可以满足基本的使用需求,

    但是对于特殊类型的业务,需要扩展文章属性的时候,就需要借助插件来拓展,虽然有自带的自定义栏目,但是功能比较基础。

    插件advanced custom fields正是为满足这种需求而生,在WordPress插件页面显示此插件的安装量超过一百万,可见扩展属性的需求是比较普遍的。

    借助此款插件,可以正对文章(post)、页面(page)、用户(user)、媒体(media)等模块添加扩充字段。

    需求示例:

    1)文章都是关于乐队的资料,你想添加主唱、吉他、贝斯这几个字段作为文章的独立属性;

    2)用户资料想要记录用户的年龄和电话号码;