强智教务系统API文档

心血来潮,突然想到强智官方有提供智校园APP,于是用Fidder抓了下包得到JSON API,可获取帐号信息、课表、空教室等数据。获取教务系统信息无需抓取页面分析辣(•̀ᴗ•́)و ̑̑

理论上可以使用智校园APP的学校都能够使用,可见https://github.com/TLingC/GDUF-QZAPI/blob/master/SUPPORTED.md

已经把API整理出来,部分API由于条件所限没有详细说明,Github:https://github.com/TLingC/GDUF-QZAPI

利用PHP把MySQL数据库内所有表编码转换为utf8mb4

<?php
    $mysql = mysql_connect(MYSQL_HOST,MYSQL_USERNAME,MYSQL_PASSWORD);
    if (!$mysql) echo "Failed to connect mysql!";
    mysql_select_db(MYSQL_DBNAME,$mysql);
    $result = mysql_query("SHOW TABLE STATUS");
    while($row = mysql_fetch_row($result))
    {
         mysql_query("ALTER TABLE " . $row[0] . " CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci");
    }
?>

在Jenkins上不使用插件进行Git系统Webhook触发集成

最近使用到Jenkins来进行持续集成,代码库在自建的Gitlab上,而Jenkins里已有提供GitLab Plugin插件,很方便地就完成了部署。但是若使用其它的例如阿里云Code和腾讯云TGit系统却没有对应的插件,网上也没有好的解决方案。尝试使用过Generic Webhook Trigger Plugin,但是多个项目都使用的话,会把所有项目都触发构建。

因为我的需求比较简单,只需响应Push请求然后拉取代码发布到FTP上,后来决定直接使用“触发远程构建(例如,使用脚本)”这个系统自带触发器,步骤如下:

  1. 由于我的Jenkins系统设定了必须登录,触发时需要身份验证,于是新建一个Jenkins用户用于Webhook,赋予Overall Read、Job Create&Discover&Read权限(也可使用管理员帐号,但是为了系统安全,还是建了一个低权限的帐号用于Webhook)
  2. 在项目配置的构建触发器中勾选“触发远程构建 (例如,使用脚本)”,由于使用Webhook时直接登录帐号,身份验证令牌可不填。记录下Use the following URL to trigger build remotely:后的URL即可。?token=TOKEN_NAME可省略
  3. 登录Git平台,在Webhook配置中填写上一步的URL并带上登录验证信息,勾选勾选Push events,最终URL类似于如下:

    http://*USERNAME*:*PASSWORD*@*JENKINS_HOST*/job/*JOB_NAME*/build

  4. 完成,当代码Push上Git系统时,Jenkins将执行构建

集成支付宝支付遇到的missing-signature问题解决及相关注意事项

今天用PHP集成支付宝电脑支付,使用demo进行测试时一直提示missing-signature,后来一番折腾后解决了,这里记录一下需要注意的几点。

config.php中的参数均是在蚂蚁金服开放平台密钥管理的开放平台密钥中获取。

需要下载密钥生成器先生成密钥,生成后复制公钥,在上述的密钥管理网站“RSA(SHA256)密钥(推荐)”下设置公钥。同时目录下会有rsa_private_key.pem、rsa_public_key.pem、rsa_private_key_pkcs8.pem。只需使用前两个。

  1. app_id直接复制页面中的APPID
  2. merchant_private_key与rsa_public_key分别填入rsa_private_key.pem、入rsa_public_key.pem中的内容,注意需要去掉前后的BEGIN及END注释,并且避免换行(尝试去掉后就没有了missing-signature报错)

记在阿里CDN上设置腾讯云免费DV SSL证书后部分浏览器提示不被信任的解决方法

今天使用腾讯云的免费DV SSL证书在阿里云CDN上部署,电脑上访问一切正常,但在手机使用UC浏览器提示证书已过期或不被信任,微信中访问直接空白。后来通过禁用CDN,直接回源又正常。初步确定为CDN上的证书配置问题。
在CDN上部署的是下回来的证书包里Apache文件夹下的证书,其中有两个公钥文件,一个私钥。尝试只使用以自己域名命名的那个公钥,无效。两个公钥合并一个文件,根公钥在前,自身站点的在后,同样无效。

解决方法

  • 自身站点的公钥在前,根公钥在后,合并成一个文件来提交
  • 使用Nginx文件夹下的证书