方正教务系统一键评教脚本

每学期都有那么一次,直到大三才写这么一个脚本,貌似太迟了,所有的脚本外挂都是为了不合理的系统设计的,比较简单的做法是下载Firefox浏览器,按Tab键和键,快速选一个。

var doc = document.querySelector("#iframeautoheight").contentDocument;
var l = doc.querySelector("#pjkc").length;
console.log("评教项目数量",l);
document.querySelector("#iframeautoheight").onload = function () {
    var doc = document.querySelector("#iframeautoheight").contentDocument;
    if(doc.querySelector("#pjkc").lastElementChild == doc.querySelector("#pjkc>option[selected=selected]")){
        document.querySelector("#iframeautoheight").onload = null;
        doc.querySelector("#Button2").click();
    }
    console.log("加载完成。。")
    doing(doc)
};
var finish = 0;
function doing(doc) {
    console.log("正在评教",doc.querySelector("#pjkc>option[selected=selected]").innerText);
    doc.querySelectorAll("#DataGrid1 select").forEach(function (item) {
        var i = Math.ceil(Math.random() * 2);
        item.options[i].selected = true;
    });
    finish ++;
    doc.querySelector("#Button1").click()
}
doing(doc);

安装ubuntu + PHP7 + Caddy环境

Caddy使用golang编写的一款http服务器,和Apache nginx一样的存在,和前两者区别是用golang编写,有莫名的亲切感,自带https证书(来自let’s encrypt),支持http2,配置简单,只能性能并不是很清楚,但是使用golang编写,想来也不会很差,所以便把博客从Nginx更换到Caddy

安装

curl https://getcaddy.com | bash -s personal
apt install php7.0-curl php7.0-gd php7.0-mysql php7.0-sqlite3 php7.0-pgsql php7.0-fpm php7.0-mcrypt php7.0-mbstring php7.0-zip

配置

将下列文件保存到/etc/Caddyfle,这边注意域名和括号之间的空格不能省略,官方的教程里面是fastcgi /blog/ 127.0.0.1:9000 php,但是新版的PHP并没有监听9000端口,所以要换成下面的方式。

tristana.cn {
        root /var/www/html/blog
        fastcgi / /run/php/php7.0-fpm.sock php
}

然后在/etc/rc.localexit之前添加下面行:

ulimit -n 8192
caddy -conf /etc/Caddyfile &

重启一下服务器即可。

Caddyfile 配置文件语法详解

文件和编码

配置文件使用UTF-8编码,其中文件开始的0xFEFF文件头会被忽略如果存在的话(Windows下记事本会自动添加这个文件头)。

字符串和注释

指令和参数,参数和参数之间使用空格分割,如果参数不包括空格或换行,可以直接使用,包括空格需要使用双引号包含进来,这时候,里面的双引号需要转义\",除了双引号可以被转义,其他符号不能被转义。

行以\n作为分隔符,\r和空白行和所有空白字符将被忽略,不包括被引号包含的行。

#后面到行结束内容将作为注释被忽略,注释可以在指令的后面,也可以单独一行。

结构

以下内容与原文存在一定的差异,但不影响理解。

Caddyfile里面不存在全局变量。如下图,配置文件由标签定义组成,标签加定义是最基本的单位: Screenshot-2017-12-25 The Caddyfile Syntax.png

标签由简单的字符串组成,定义则可以由一行或者多行,其中多行需要使用大括号({})括起来,大括号的左边({)和标签同一行,大括号的结束(})需要单独占用一行: Screenshot-2017-12-25 The Caddyfile Syntax(1).png

缩减推荐使用一个Tab,文件的第一行永远是标签,空行、注释、import除外。

Caddyfile 配置文件快速入门教程

Caddyfile 配置文件的第一行始终是服务器的域名或者IP地址,例如:

localhost:8080

将上面内容保存为Caddyfile,当你运行的时候,会自动寻找该文件,你可以指定文件配置路径:

caddy   -conf ../path/to/Caddyfile

站点的下一行紧接着是指令,你可以点击查看全部指令,例如下面的gzip指令可以压缩页面:

localhost:8080
gzip

指令的后面可以附带一个或者多个参数:

localhost:8080
gzip
log ../access.log

有些指令需要设置多个参数,这些指令需要在后面使用大括号添加一个块,大括号开始必须与指令同一行:

localhost:8080
gzip
log ../access.log
markdown /blog {
    css /blog.css
    js  /scripts.js
}

If the directive block is left empty, you should omit the curly braces entirely. 参数里面如果包含空格必须使用" 括起来,# 后面跟着的是注释内容

# Comments can start a line
foobar # or go at the end

再用000webhost空间

12年,刚刚接触PHP,用的是在线环境,那时候找免费空间,加上一个文件管理器,就开始开搞,博客用的是WordPress,论坛程序用的PHPbb,空间用的是三蛋的空间,申请的时候用的是代理加gmail邮箱,需要挂代理,没有shadowsocks,用的是改过代理的Opera,手机端的,依旧用免费的空间搭的代理服务器.

/images/000webhost.gif