记录以防忘记。

前言

本文仅供学习探讨之用,如果侵犯了您的权益请联系我删除。

项目地址

本文只做简要介绍,如果有兴趣还请移步主项目阅读README.md

主项目

https://github.com/Bzi-Han/taskcloud

子项目

前端 vue3 https://github.com/Bzi-Han/taskcloud_web

后端 java https://github.com/Bzi-Han/taskcloud_backend

核心 c++ https://github.com/Bzi-Han/taskcloud_core

基本介绍

云任务是一套定时任务处理程序,用户通过与前端交互添加需要执行的任务到指定的任务包中,并设定任务包的激活状态与定时启动时间(可设定是否只运行一次或每天都运行)。除了用户手动投递的任务包外,系统会在第一次启动时与每天00:00时自动分发当天需要执行的任务。

任务执行所用的脚本可以是Lua Python Javascript这三种语言编写的代码,可以使用语言自带的各种工具函数和此程序导出的API接口来进行编程,任务执行的结果与执行过程中的各种日志与报错日志均可在前端控制台中看到,可作为脚本执行问题的参考数据。

若是任务的开发者还可以在帮助中心发布帮助文档,以更好地帮助用户使用。

架构

整个项目的架构图

项目架构图

数据库的结构图

数据库结构图

基于Docker构建核心项目的编译环境

因为核心项目使用了CMake来帮助构建,所以理论上可以跨WindowsLinux进行编译(没有试过Mac),但不能保证一定不会遇到问题,因此这里仅作为一个备选解决手段。

也可以作为构建基于docker-debian clang-14编译环境的参考吧。

  1. 确保docker服务运行中。
  2. 执行docker run -d --name taskcloud_builder -it debian /bin/bash创建基本容器。如果需要 ssh 服务的话可再添加-p 外部端口:内部端口进行端口映射,后续再安装 ssh 服务即可,但我这里就不需要了。
  3. 执行docker exec -it taskcloud_builder /bin/bash进入容器命令行。
  4. 执行cp /etc/apt/sources.list /etc/apt/sources.list.bak备份 apt 源。
  5. 执行sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list替换 apt 源为中科大源,可自行设置其他源。
  6. 执行sed -i 's|security.debian.org/debian-security|mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list替换 apt-security 源为中科大源,可自行设置其他源。
  7. 执行apt-get update更新源。
  8. 执行apt-get install wget -y安装 wget 工具。
  9. 执行apt install lsb-release wget software-properties-common -y安装 lsb-release 为后续安装提供支持。
  10. 执行apt install gnupg -y安装 gnupg 为后续安装提供支持,否则会出现Cannot write to '-' (Broken pipe).的情况。
  11. 执行cd /tmp && wget https://apt.llvm.org/llvm.sh切换到 tmp 目录同时下载 clang 安装脚本。
  12. 执行chmod +x llvm.sh && ./llvm.sh 14 all添加执行权限以及直接运行脚本安装 clang-14 所有工具链。
  13. 安装完成后执行update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 1 --slave /usr/bin/clang++ clang++ /usr/bin/clang++-14来设置默认的 clangclang++
  14. 执行apt-get install python3-dev -y安装 python3-dev 提供所需的编译环境之一。
  15. 执行apt-get install libssl-dev -y安装 libssl-dev 提供所需的编译环境之一。
  16. 环境搭建完毕,可以开始编译项目了。

TODO

  • 添加crypto.gbkToUTF8函数
  • 添加crypto.utf8ToGBK函数
  • 添加crypto.urlEncode函数
  • 添加crypto.urlDecode函数
  • 添加crypto.rsaGenerateKeyPair函数
  • 添加crypto.rsaEncrypt函数
  • 添加crypto.rsaDecrypt函数
  • 修改默认管理员账号密码
  • 提醒使用java -jar运行后端时添加-Dfile.encoding=UTF-8防止默认编码导致的乱码问题
  • 修复后端pythonjavascript审核错误问题
  • 添加system模块与system.delay函数
  • 添加requests.put函数
  • 添加requests.delete函数
  • 添加脚本共享机制,从中央仓库或者指定github仓库中拉取脚本,然后自动导入数据库中,同时也可以以上传zip包的方式。可设定此次拉取是否需要审核,不需要则直接导入为可用状态,且此功能属于管理员功能。
  • 前端在登陆页面添加后端服务地址设置,配置保存到localStorage中。

结语

暂时告一段落了,填坑的话还是慢慢来吧。
暗中观察

那就这样了,有缘再见~