macOS 屏蔽 Apple OCSP 验证服务加快程序启动速度

自 macOS Catalina 后,在沙箱中隔离(quarantine)的应用和脚本均需通过 Apple OCSP 验证后才可启动,这大大减慢了程序的打开速度,且面临隐私泄露风险。由于在离线状态下,程序可以正常访问,我们可以通过屏蔽该项服务来略过这一验证步骤,加快程序启动速度。

以 root 权限编辑 /etc/hosts:

sudo vim /etc/hosts

开启编辑模式,在文件尾端加入

0.0.0.0 ocsp.apple.com

键入 :wq 保存并退出。

如果正在使用系统代理,则也需要在代理处进行相应的配置。

比如在 ClashX 的配置文件中,可以加入

DOMAIN, ocsp.apple.com, REJECT

关于 Apple OCSP 的更多资料:https://medium.com/@acecilia/apple-is-sending-a-request-to-their-servers-for-every-piece-of-software-you-run-on-your-mac-b0bb509eee65

PotatoPlus: 如何更新

由于 PotatoPlus 仍然处于预发布(pre-release)阶段,故时刻保持最新有助于排除各种程序错误,减少失败设计所带来的误操作等情况。这篇文章提供了如何获取及应用更新的一些信息。

如果你从 Chrome 应用商店 / Edge 外接程序 / Firefox (via GitHub Releases) 获取扩展

一般情况下,你无需关注 PotatoPlus 的更新情况,因为较新版本的 Chrome, Edge 和 Firefox 浏览器会自动检查扩展的更新,这个间隔大约为5小时(Firefox默认为24小时)。但请注意,如果你在 Edge 外接程序获得插件,由于其较慢的审核速度(短则几小时,长可达一周),可能需要等待几天才能获取到更新。

如果你的浏览器没有自动检查更新,或是你需要立即更新 PotatoPlus,可以试着按下面步骤手动检查更新。

手动检查更新

Google Chrome: 点选 Chrome 右上角插件按钮,再选择菜单底部的“管理扩展”;或是直接访问 chrome://extensions 。然后,打开右上角“开发者模式”的开关,再点击左侧“更新”按钮就可立即检查所有扩展的更新。

Microsoft Edge: 点选右上角菜单,并选择“扩展”;或是直接访问 edge://extensions 。然后,打开左下角“开发者模式”的开关,再点击右上方“更新”按钮就可立即检查所有扩展的更新。

Mozilla Firefox: 点选右上角菜单,并选择“扩展”;或是直接访问 about:addons 。然后,点击上方的齿轮按钮,并选择检查更新。

不同渠道获取更新的延迟

GitHub 源代码:即时

Userscript(GitHub Releases / NJU GitLab):即时

Firefox 扩展(GitHub Releases):少于 5 分钟

Chrome 应用商店:一般少于 30 分钟(插件升级到 Manifest V3 后审核速度显著提升)

Edge 外接程序:一般在三天之内,偶尔需要一周或更久

如果你使用 Tampermonkey 运行 Userscript

Tampermonkey 在默认情况下会每隔一天自动检查已启用的脚本更新,所以大多数情况下你的版本都会保持最新。当然,为了更及时地获得更新,你也可以调整这一更新的频率,只需进入 Tampermonkey 管理面板,并在“设置”选项卡中找到“更新频率”并进行调整。

如果 Tampermonkey 无法自动检查更新,或是你需要立即更新,可以点击 Tampermonkey 菜单中的“检查用户脚本更新“按钮来检查全部已启用脚本的更新。

如果你从 Firefox Browser Add-ons 商店获得扩展

由于 Mozilla 的审核政策,非普适性的扩展将无法在商店上架,需要自行分发。自 v0.2.3.1 起,PotatoPlus 的 Firefox 版本扩展将通过 GitHub Releases 分发,并支持自动更新。如果你正在使用旧版本,请切换到这个版本以获得最新功能。

如果你从 GitHub 源代码安装扩展

以此方式安装的插件暂时不能自动更新。你可以在有更新时通过 git pull 获取最新的源代码。

如果你从 GitHub Release 手动获取了 Chrome 扩展程序

GitHub Release 发布的 Chrome 扩展程序(.crx)可能无法自动更新(取决于浏览器和网络状况),故你可能需要手动检查最新版本。建议从 Chrome 网上应用店Microsoft Edge Add-ons 获取扩展。在更换渠道获取新的 PotatoPlus 前,请不要忘记移除旧的插件。

项目主页:

https://cubiccm.ddns.net/2019/09/potatojw-upgraded/

在macOS Mojave及更新版本中配置gdb

参考链接:https://segmentfault.com/q/1010000004136334

在网上很容易找到相关教程,然而新版本的macOS带来了更严格的安全限制。详细步骤请见以上参考链接。

简要步骤:
1. 在Keychain Access(钥匙串访问)中为gdb创建证书;
2. 对证书添加信任;
3. 如果是macOS High Sierra (10.13)或以下版本的系统,直接对证书签名(在终端执行codesign命令);
如果是macOS Mojave (10.14)或以上版本的系统,撰写额外的xml文件并对gdb进行dubugger签名,命令是

codesign --entitlements gdb-entitlement.xml -fs gdb-cert $(which gdb)

其中,gdb-entitlement.xml是撰写的xml路径,gdb-cert是刚刚创建的证书名称,$(which gdb)是gdb可执行文件路径。

如果gdb经常卡死,可以参见https://github.com/Homebrew/homebrew-core/issues/49631

解决macOS中某些App需要安装Java 6环境的问题

更新:推荐使用Jar2App打包,更为方便。
https://github.com/Jorl17/jar2app


以下为原本的答案(不推荐,兼容性不好且麻烦)

很多小型的Java应用使用JarBundler打包,这种应用的Contents/MacOS/内通常会有一个JavaApplicationStub的程序。当运行该App时,会弹出需要安装Java 6的通知。然而,如果Mac上装了新版本的Oracle Java,按照指示安装Java 6时会提示磁盘中已安装了更新版本的Java而无法安装。这里采用一个修改plist文件+手写运行jar程序的方式来解决问题。

准备工作

首先在Finder中找到打不开的App,在选单中点击显示包内容,并在包内某处找到.jar文件,记下路径(这里以Logisim为例,是Contents/Resources/Java/logisim.jar)。如果可以直接运行该jar,一般就可以继续使用下面的方法。

修改plist文件

用文本编辑器打开Contents/Info.plist文件。尝试将<key>Java</key>一项中的Java改为其它字串,并启动App。如果仍然无法启动,请继续下面的步骤,或尝试修改其它带有Java字样的key。

编写启动程序

Contents/MacOS中一般会有一个JavaApplicationStub的程序(可在Info.plist中的CFBundleExecutable项查看运行的是哪个程序),这个JarBundler项目已经很旧了,我们需要自己动手做一个运行jar的程序。注意,如果在终端中无法执行java命令,可能需要按照提示安装JDK

运行jar的命令是

java -jar PATH_TO_JAR/xxx.jar

这里使用C++(C)编写可执行文件。jar文件的路径需要按照实际修改。

#include <cstdlib>
#include <stdio.h>
#include <cstring>
#include <mach-o/dyld.h>

int main() {
  char path[1024];
  char cmd[100];
  strcpy(cmd, "java -jar ");
  uint32_t size = sizeof(path);
  if (_NSGetExecutablePath(path, &size) == 0) {
    strcpy(strrchr(path, '/'), "/../Resources/Java/logisim.jar");
    system(strcat(cmd, path));
  } else {
    printf("Error: Buffer too small. Size required: %u.\n", size);
  }  
}

编译后将可执行文件放到Contents/MacOS/下,再回到plist文件中,修改CFBundleExecutable项下方的值为可执行文件的名字(这里是runJar)。

<key>CFBundleExecutable</key>
<string>runJar</string>

保存plist,就可以运行App啦!

使用电脑访问手机微信端网页并模拟位置

很多网页借助微信的open.weixin.qq.com进行登录,那么要想在电脑端打开这些网站,需要进行一些稍稍复杂的操作。注意这个方法仍然需要在手机上登录。需要在电脑端安装Fiddler。

背景:辣鸡教学立方的课堂签到、课堂测验等功能都强制要求用微信端打开,极为不方便。

配置Fiddler

这里采用Fiddler抓手机端发出的包,再将Cookies倒入电脑浏览器的方式进行。首先,在电脑端中允许远程连接,并设置远程连接端口。启用了防火墙的电脑,需要在防火墙中允许该端口的连入。

同时,需要开启解析HTTPS流量(Decrypt HTTPS traffic)的功能。无需在电脑中安装Fiddler的https证书。

在手机上安装HTTPS证书

打开手机浏览器,访问电脑IP地址:远程连接端口(如192.168.1.100:6868,实际IP地址需要使用ipconfig ifconfig等命令或在路由器的管理后台等地查看,远程连接端口按刚刚设置的填写)。如果正常出现了Fiddler的网页,说明防火墙配置正常。点击安装Fiddler的HTTPS证书。iOS需要在设置中点击信任,并在General(通用) -> About(关于本机) -> Certificate Trust Settings中完全信任该证书。

在手机上设置代理

随手机系统不同而不同,一般在手机的Wi-Fi功能中进入当前Wi-Fi的高级选项,设置手动代理,填入IP地址与远程连接端口。注意,若要让Fiddler成功抓包,需要暂时关闭手机上VPN等软件。

在微信中打开要打开的网页

在手机微信中打开目标网页并成功登录以后,在电脑的Fiddler中就应该可以看到数据包了。找一个登录后产生的到该网站的数据包,找到Cookies一栏(可能需要点进Inspectors内)。

录入Cookies

打开要访问的网站链接(可以从包的headers中找到,如教学立方的移动端链接),在浏览器中打开开发者工具(一般为F12或Ctrl + Alt + I或Alt + Command + I),进入Applications选项卡,在侧边栏中展开Cookies(这里是Chrome的方式,其它浏览器同理)。将刚才Fiddler面板的Cookies数据录入(一般SessionID之类的Cookies需要录入,可具体试验需要录入哪些Cookies),只需填写名称和值。

刷新页面,登录成功!

模拟位置

正常赋予网页权限即可进行基于定位的签到操作,若不想提供真实位置,还可以借助各种浏览器插件完成。如Chrome中可以使用Location Guard插件,对目标网页设置成Fixed Location即可。

macOS Automator 自动化操作 PowerPoint(格式转换、生成PDF、文件提取)

利用macOS的Automator,可以在Finder菜单中快速对一个或多个PowerPoint文稿进行格式转换、生成PDF、文件提取等操作。此操作需要macOS中安装较新版本的Microsoft Office PowerPoint。

背景:要从物理课的.ppt文件格式的操作中提取出音频用以加速播放及调整进度条,而.ppt文件无法直接解压缩,需要转换为.pptx格式再解压缩后提取出音频。

开始编写Quick Action流程

打开Automator App(默认位于Launchpad的Other文件夹中),新建Quick Action。Quick Action是可以加入Finder菜单、Services菜单的一类Workflow流程。

在左侧查找Filter Finder Items拖入右侧流程中,对输入文件的后缀名称进行过滤。这里仅接受ppt后缀名的文件,若要对pptx pps ppsx等后缀名的文件进行处理,也可以将其加入过滤器中并将规则All改为Any。

开始编写Apple Script,打开PowerPoint文件

参考资料:https://apple.stackexchange.com/questions/217004/how-do-i-get-automator-actions-for-microsoft-powerpoint-and-word

在左侧寻找Run Apple Script,拖入右侧流程图中。下面的代码将ppt转为pptx并保存在同一文件夹中。若要接受更多格式的后缀名,需要修改makeNewPath部分(这里是将后三位ppt截掉,换成pptx)。

on run {input, parameters}
	set output_list to {}
	tell application "Microsoft PowerPoint"
		launch
		set theDial to start up dialog
		set start up dialog to false
		repeat with i in input
			open i
			set output_path to my makeNewPath(i)
			save active presentation in output_path
			close active presentation saving no
			set end of output_list to output_path as alias
		end repeat
		set start up dialog to theDial
		quit
	end tell
	return output_list
end run

on makeNewPath(f)
	set t to f as string
	return (text 1 thru -4 of t) & "pptx"
end makeNewPath

若要转换为PDF格式,则需将

save active presentation in output_path

一句改为

save active presentation in output_path as save as PDF

并修改makeNewPath的部分:

on makeNewPath(f)
    set t to f as string
    if t ends with ".pptx" then
        return (text 1 thru -5 of t) & "pdf"
    else
        return t & ".pdf"
    end if
end makeNewPath

至此,将ppt转为pptx或将ppt/pptx转为pdf的功能已实现完毕。如不需要文件提取,请向后跳到“调试和使用”一节。

编写Shell Script提取pptx中的文件

使用压缩软件打开.pptx文稿即可读取其内容。若要实现自动化处理,可以使用Automator的Run Shell Script模块。

下面是提取全部音频文件的代码,Run Shell Script设置为将输入传达到参数中。

for f in "$@"
do
  unzip "$f" -d "$f Files/"
  mkdir "$f Audio"
  for file in `ls "$f Files/ppt/media/"`
  do
    if [ "${file##*.}" = "wav" ]; then
      mv -f "$f Files/ppt/media/$file" "$f Audio/"
    fi
  done
  rm -rf "$f Files/"
  rm -f "$f"
done

这段代码将pptx中附着的音频文件拷贝到与pptx相同目录下的*.pptx Audio文件夹中,并将源文件删除。

调试和使用

由于在Automator中测试并没有文件读入,测试时可以在流程开始处拖入Get Specified Finder Items指定输入文件(正式在Automator外使用前要删掉)。

之后,按下Command+S保存脚本,输入一个名字,就可以在Finder右键菜单的Services项或是文件的预览栏中找到刚刚编写的脚本了。

.workflow文件的存储位置在~/Library/Services/下,对其重命名即可改变菜单中的名称。

此处有一个问题:在较高版本的macOS中实际执行时会出现读写磁盘权限不足的问题。这时需要对该脚本赋予Full Disk Access权限。打开System Preferences,在Security & Privacy中找到Full Disk Access,左下角解锁后点击加号,将执行该脚本的Finder加入进去并赋予权限。Finder.app的路径在/System/Library/CoreServices中。

可以用了!

PotatoPlus 土豆教务网改善工程

前言

PotatoPlus 项目旨在为土豆教务网(南京大学教务系统南京大学选课系统Beta)提供升级服务。若有能力,请多多种植土豆来支持教务网。

GitHub: cubiccm/PotatoPlus

Chrome Web Store Badge Microsoft Store

安装指引

通过插件安装

Google Chrome

打开 Chrome 应用商店中的 PotatoPlus,再点击“添加至 Chrome”即可。需要访问国际互联网。

从 Chrome 扩展文件(.crx)安装的方法

请注意,如果你无法访问 Chrome 应用商店,此方法安装的插件可能仍无法自动更新。

首先下载 GitHub Releases 页面的 Chrome 扩展文件

点击 Chrome 右上方的“插件”按钮并选择“管理扩展”,或直接访问 chrome://extensions/。

打开右上角的“开发者模式”开关,并将刚刚下载的 .crx 文件拖入安装即可。

从源代码安装的方法

请注意,此方法安装的插件无法自动更新。

首先下载项目源代码(https://github.com/cubiccm/potatoplus/archive/main.zip)并解压。

然后,点击Chrome右上方的“插件”按钮并选择“管理扩展”,或直接访问 chrome://extensions/。

打开右上角的“开发者模式”开关,并选择左上方按钮“加载未打包的扩展”,选择刚刚下载的源代码文件夹即可。

Microsoft Edge

访问 Edge 外接程序中的 PotatoPlus,再点选“获取”即可。

从 Chrome 应用商店安装的方法

打开 Edge 右上方的菜单并选择“扩展”,或直接访问 edge://extensions/,之后打开左下角的“允许从其它商店获取扩展”开关。

访问 Chrome 应用商店中的 PotatoPlus,点击“添加至 Chrome”即可。

Mozilla Firefox

请访问 GitHub Releases 页面 并在弹出的提示框中点击“安装”。

Firefox 暂不支持 Manifest v3 的更新,若要使用源码安装,请删除 manifest.json 并将 manifest-v2.json 更名为 manifest.json。

Safari (macOS)

可使用 Xcode 对插件进行转换和签名后在 Safari 中使用,可参考 官方文档

其它浏览器

对于使用 Chromium 内核的浏览器,请使用与在 Google Chrome 或 Microsoft Edge 类似的方法安装。你也可以 在此处获取 最新的 .crx 扩展文件。

不支持 Internet Explorer 等较旧的浏览器。

通过Userscript脚本安装

需要在浏览器中安装 Tampermonkey 等可以执行 UserScript 的插件。

Tampermonkey 的安装方法

Chrome:请在 Chrome 应用商店 安装Tampermonkey。需要访问国际互联网。

Edge:请在 Edge 外接程序 安装 Tampermonkey。如果链接无法跳转,请在商店中搜索。

Firefox:请在 Firefox Browser Add-ons 中安装Tampermonkey。

Safari(macOS):需要在 Mac App Store 中购买 Tampermonkey 插件;或使用免费的替代插件,如“UserScripts”。

安装插件后,可 访问这里获取 PotatoPlus 的 Userscript 脚本(GitHub)
如果上方的链接速度慢或无法访问,也可以试试这个 校内源

意见与反馈

你可以在 GitHub Issues 讨论问题与缺陷、提出问题与建议。

当然,也可以直接发送邮件至 illimosity@gmail.com 反馈使用问题,或是与我分享你的想法!

同时真诚地邀请你加入 邮件列表 接收最新动态。

更新历史

Feb. 13th, 2023 v0.3.10
https://github.com/cubiccm/PotatoPlus/tree/v0.3.10
^ 界面更新

Sep. 13th, 2022 v0.3.9
https://github.com/cubiccm/PotatoPlus/tree/v0.3.9
^ 现在可以自动保存课程时间筛选器的周历
^ 界面更新和错误修复

Sep. 12th, 2022 v0.3.8
https://github.com/cubiccm/PotatoPlus/commit/4c38a8f0b614c67fd32ebb64565c6b9f87535920
+ 基于远程服务器的验证码识别
^ 错误修复与界面更新

展开历史版本

Sep.7th, 2022 v0.3.7
https://github.com/cubiccm/PotatoPlus/commit/6082ff9cc055ed11f3059ed7ad5493405a6a8550
+ 在 xk.nju.edu.cn 新增了欢迎页面
^ 在 xk.nju.edu.cn 上的兼容性修复
^ 更新 Material Design 至 v14.0.0
^ 错误修复与界面更新
– 删除了教务系统(旧)的专业选课功能

*已知问题:加载长列表时偶尔会出现“操作过快”的提示。

Jul.15th, 2022 v0.3.6
https://github.com/cubiccm/PotatoPlus/commit/1df7b1ad3b04ff6d3be2f850e968926683c8462a
^ 界面更新和错误修复

Apr.9th, 2022 v0.3.4
https://github.com/cubiccm/PotatoPlus/commit/9b744db79d3cbcfcc5ff2aca266ed4bf34e39516
^ 迁移至 Manifest V3
仅提供了 Chrome Web Store 版本的更新。

Dec.2nd, 2021 v0.3.3
https://github.com/cubiccm/PotatoPlus/commit/1f742ead374b57410bd79726a01296cd4c1b1e2d
+ 现在可以在“全校课程”查询中自定学期编号
+ Frozen Quote 模块现在也会显示 All Too Well (10 Minute Version) 的歌词

Sep.24th, 2021 v0.3.2
https://github.com/cubiccm/PotatoPlus/commit/4d46d5f03dac16cac0d277fe95625027e20a76b8
+ 新生美育选课及补选 #14 #16
+ 新增筛选器菜单,现在可以将教师名字填充至搜索框
^ 改变了展开和收起课程的交互方式
^ 课程列表及筛选器的错误修复
^ 增加对新选课系统的适配(beta)

Sep.9th, 2021 v0.3.1
https://github.com/cubiccm/PotatoPlus/commit/10ecdca5a19bcd2f63036b31fd17afbf5ff763d0
+ 完善筛选器功能
+ 现在可在新选课系统中启用
^ 更为紧致的列表布局
^ 登录及验证码部分的错误修复和改进

Aug.28th, 2021 v0.3
https://github.com/cubiccm/PotatoPlus/commit/70244807b63cefbe2a0d040aee0693650297901e
+ 重新设计的登录界面
+ 聚合选课功能(Beta)和课程选择器预加载
^ 改进的课程列表及筛选器
^ Material Design 更新以及功能和体验改进

Feb.19th, 2021 v0.2.7
https://github.com/cubiccm/PotatoPlus/commit/bb4dedefa213379b14ec01bec45f2667e1005e59
^ 成绩查询改进

Nov.28th, 2020 v0.2.6.1
https://github.com/cubiccm/potatoplus/commit/de73d530e77c937c7a813d72c665370a46bf77e0
^ 修复了跨院系初选列表无法加载的问题

Nov.28th, 2020 v0.2.6
https://github.com/cubiccm/potatoplus/commit/681bf05d41e8cbc54cf482cee39a5a9b9ce3f6f3
+ 适配通识课初选及公选课初选
^ 现在会显示正确的各学期周数
^ 改善初选界面布局
^ 错误修复及细节更新

Nov.17th, 2020 v0.2.5
https://github.com/cubiccm/potatoplus/commit/68d8f325da4ad033e95c3ee8a7870ddd28f07eef
+ 首页快捷访问菜单
+ 课程地点信息和时间圆环
+ 可更新的公告
^ 针对课程列表和筛选器的布局更新
^ 大量界面和细节改善
– 移除“新生测试”模块

Sep.30th, 2020 v0.2.4.1
https://github.com/cubiccm/potatoplus/commit/17bb7911bf0fd074c0156f011b1c2de410484330
+ 浮动控制栏

Sep.29th, 2020 v0.2.4
https://github.com/cubiccm/potatoplus/commit/135b34f0c16319704553007375c425dc8a33d7ce
+ GPA计算器
+ 全部学期成绩查看
– 移除了 xk.nju.edu.cn 的数据集

Sep.26th, 2020 v0.2.3.2
https://github.com/cubiccm/potatoplus/commit/aea6c06b35d20eea73666d120f3ca6b84bc160a8
+ 现在可以查询从 xk.nju.edu.cn 获取的数据
注:此版本并未发布为GitHub Release,且只在部分平台进行了更新。

Sep.25th, 2020 v0.2.3.1
https://github.com/cubiccm/potatoplus/commit/a36426d1069d81e4bad17e451933a91129045247
^ 小改进

Sep.25th, 2020 v0.2.3
https://github.com/cubiccm/potatoplus/commit/2902a212d2eef73ee4921e606624e7827130a6c7
+ 界面及交互更新
^ 针对体育补选的优化
– 移除对通识课初选界面的支持

Sep.24th, 2020 v0.2.2
https://github.com/cubiccm/potatoplus/commit/d65dc027596a6f57a4bfd3f97dddb959d7549267
^ 课程列表现在可以在阅读课程补选页面正常使用了
^ 空余课程过滤器改进
^ 数项列表加载时的细节优化

Sep.23rd, 2020 v0.2.1.1
https://github.com/cubiccm/potatoplus/commit/c42e8fe8d6d9c60ca9ce9973f4c2768f3d9efc41
+ 新课程列表已经应用在悦读经典补选中
– 工具栏已从悦读经典补选中移除

Sep.21st, 2020 v0.2.1
https://github.com/cubiccm/potatoplus/commit/939c0c125f8f267f80412e141bc360d8cedabd38
+ 新课程列表已经应用在体育选课中
^ 界面改进和错误修复
– 工具栏已从体育选课中移除

Anniversary! 今天距离 v0.0.1 的发布已经过去了整整一年。

Sep.19th, 2020 v0.2
https://github.com/cubiccm/potatoplus/commit/49686308ddf15c78ab71e4ff27177dd9a4965ec6
+ 全新课程列表
+ 快速搜索功能
+ 浮动消息面板
^ 导航栏界面改进
^ 课程筛选器改进
^ 自动刷新模块改进
^ 课程号和课程详情查看的改进
^ 动态效果改进
^ 全校课程界面的专业和年级选择器改进
– 工具栏以从含有新课程列表的界面移除

Sep.7th, 2020 v0.1.4.7
https://github.com/cubiccm/potatoplus/commit/99825b17f0be5edace4b79e206cb5d91f3622c96
^> 错误修复

Aug.31st, 2020 v0.1.4.6
https://github.com/cubiccm/potatoplus/commit/685dc2c160b6d571bac66d96c82b25a6dc550efe
^> 错误修复

Aug.31st, 2020 v0.1.4.5
https://github.com/cubiccm/potatoplus/commit/dd2f9612b1bda6d6262014e1fdce47a59237f036
^> 错误修复及源更新

Aug.27th, 2020 v0.1.4.4
https://github.com/cubiccm/potatoplus/commit/ee1294ab83e332bd1742271d17d68cf70b7b5b1c
^> 令人愉快的小改进

Aug.25th, 2020 v0.1.4.3
https://github.com/cubiccm/potatoplus/commit/1da5bb6d5d67fbb304da8e87b32f0e9e4d8a23ea
^> 令人愉快的小改进

Aug.23rd, 2020 v0.1.4.2
https://github.com/cubiccm/potatoplus/commit/03bd0e8af3de4a991d8e599dce633c51aa28a42e
+> 可选的提交统计信息选项(统计版本更新情况,基于Google Analytics)
^> 成绩查询改进

Aug.21st, 2020 v0.1.4.1
https://github.com/cubiccm/potatoplus/commit/a4eb49cbf1efdf288f1f1fbd6b134fe8af6202b1
^> 工具栏改进

Aug.19th, 2020 v0.1.4
https://github.com/cubiccm/potatoplus/commit/cf3a181524ad556398b687b1fc9acb8468f9370e
+> 使用本地存储来记住登录信息及过滤器选项(Beta)
^> 优化验证码识别算法,以及跳过难以识别的验证码
* 本次更新还包含大量体验改善及代码结构更新

Jul.6th, 2020 v0.1.3
https://github.com/cubiccm/potatoplus/commit/397b25e3457d4ebc8f09e5c63b3c5755201c41d7
+> 查询专业课程时可以自动填充年级和专业
+> 查看成绩时,成绩将默认隐藏
+> 将教服平台首页的弹窗提醒移至工具栏
^> 细节优化与改善

Jun.24th, 2020 v0.1.2.1
https://github.com/cubiccm/potatoplus/commit/1aa506e00e7da22883ca52ffc0029386758fbd20
+> 支持查看2020-1新学期课程

Jun.22nd, 2020 v0.1.2
https://github.com/cubiccm/potatoplus/commit/f829c9e94aebcd6260fb2610bcdd5afc7b22f746
+> 增加登录时验证码自动识别功能

Feb.16th, 2020 v0.1.1.1
https://github.com/cubiccm/potatoplus/commit/3850907593f271ad5692fa0943fcd5a6d6cf9640
^> 过滤器“空余课程”功能错误修复

Dec.23rd, 2019 v0.1.1
https://github.com/cubiccm/potatoplus/commit/2c37b2bab2f5a6b52f450eb9d893b178dfea59fd
+> 现在可以在专业选课中预先选择年级和专业
^> 用户界面更新
^> 更新自动刷新频率机制,使刷新更为自然

Dec.23rd, 2019 v0.1.0.3
https://github.com/cubiccm/potatoplus/commit/4eb95e4e0b8a2a1cea99a4e64abc74b582c64b32
^> 修复专业选课的自动选课问题

Dec.23rd, 2019 v0.1.0.2
https://github.com/cubiccm/potatoplus/commit/2873b7302bb757ad132227223e3ca7102871b8bb
+> 增加自动刷新频率调整

Dec.22nd, 2019 v0.1.0.1
https://github.com/cubiccm/potatoplus/commit/97f42fe6640ad39dfdcfbba72c5c84f3b910cc40
^> 修复了脚本可能不在首页执行的问题
^> 修复了部分未启用功能可能已经显示的问题

Dec.22nd, 2019 v0.1 [Pre-release]
https://github.com/cubiccm/potatoplus/commit/7b7f11a3d0ea3d5cb331b93321d8893515bf314f
+> 增加专业选课功能,可以根据课程名和教师名设定过滤器
+> 现在可以按照教师名过滤课程
+> 增加校内网jQuery源备用
+> 增加主页工具栏
^> 修复了部分课程无法自动选课的问题
^> 工具栏界面更新,现在双击可以收起工具栏
^> 现在选到课后会自动停止自动刷新和自动选课
^> 视觉及操作细节更新

Note: 到这一版本,所有的选课基本功能都已经完成了,故将版本号升级为0.1。对于1.0版本的预期,应该是可以流畅应对所有情况并且有一个友好的外观和操作体验。

Dec.20th, 2019 v0.0.3.8
https://github.com/cubiccm/potatoplus/commit/a4da9db57dda8bd02d1b08dd73fa8e46ca1164e2
+> 增加“课程评估”页面自动五星好评功能

Dec.20th, 2019 v0.0.3.7
https://github.com/cubiccm/potatoplus/commit/d6c391ecdd867e5de8ac6fb273e8f064d586d8fa
+> 增加了在“全校课程”中查看一学期全部课程的功能
^> 优化了“全校课程”的使用体验

Dec.20th, 2019 v0.0.3.6
https://github.com/cubiccm/potatoplus/commit/50dcc259bcbbc94cf43786bda140fb3af77da471
+> 增加了在“全校课程”中查看 2019-2020学年第二学期课程的功能

Dec.19th, 2019 v0.0.3.5
https://github.com/cubiccm/potatoplus/commit/5447344f14bb767851d8c962d17ad8da6184722f
^> 修复了自动答题模块的问题

Dec.19th, 2019 v0.0.3.4 [Pre-release]
https://github.com/cubiccm/potatoplus/commit/db7d5a186c540253563a30f20c5d528392a37fa2
+> 增加新生测试自动答题模块

Sep.24th, 2019 v0.0.3.3
https://github.com/cubiccm/potatoplus/commit/06be921e590dd165ed42fdbab7d9354859fd7d06
^> 修复了上课时间过滤器显示不正确的问题
^> 修复了跨专业选课界面无法显示课程详情的问题
^> 修复了在其它教务平台地址无法使用插件的问题
^> 跨专业选课功能优化

Sep.24th, 2019 v0.0.3.2
https://github.com/cubiccm/potatoplus/commit/64cf5d584f8b9f474308eb5713445e5af6aecdcd
^> 修复了自动选课点击失败的问题
^> 自动刷新:调整了随机间隔函数,使频率更为自然,总体刷新频率减慢
-> 取消了自动选课与自动刷新的绑定

Sep.24th, 2019 v0.0.3.1
https://github.com/cubiccm/potatoplus/commit/efd35a63c9c0d6fa9ebc44ec7f96e3d9f4dea210
+> 支持跨专业选课

Sep.23rd, 2019 v0.0.3
https://github.com/cubiccm/potatoplus/commit/10680b61daa7c9643fad054a1ed6b9a7b7ddd512
+> 适配通识课、通修课、阅读课选课
^> 过滤器更新,增加课程名称过滤

Note: 真的更新了很多很多,虽然日志只有区区两条

Sep.22nd, 2019 v0.0.2.1
https://github.com/cubiccm/potatoplus/commit/70f04883dda410418937f99915588eb7455dbd29
^> 界面及细节更新

Sep.22nd, 2019 v0.0.2
https://github.com/cubiccm/potatoplus/commit/d3ee4293f23eea6a69a214832eb54c0ec2557738
+> 加入自动选课功能,可按照过滤器选课
^> 过滤器功能更新:增加上课时间过滤、增加过滤器设置窗口
-> 删除无脑选课功能

Sep.21st, 2019 v0.0.1
https://github.com/cubiccm/potatoplus/commit/9809039f68daa1826fca6217f77fb4e1d3fe447c
首个版本
+> 支持体育选课
+> 过滤器:可过滤满员课程
+> 自动刷新:以随机频率刷新课程列表
+> 无脑自动选课:自动选取课程列表中有空余的课程
+> 关闭所有提示框:关闭所有javascript弹窗,选课更加便捷

另请参阅:

https://cubiccm.ddns.net/2020/09/potatoplus-how-to-update/
https://cubiccm.ddns.net/2020/09/potatoplus-announcements/