162 words
为了增加yock的拓展性,yock在打包的时候自带了基于yocki协议的protobuf,以便跨语言调用。 你可以使用yock init python创建一个带python SDK的demo项目,藉此进行开发。 yocki相关API12345678910111213---@param name string---@param ip string---@param port numberfunction yocki.connect(name, ip, port) end---@param name string---@param fn string---@param arg string---@return string, errfunction yocki.call(name, fn, arg) end---@return table<string>function yocki.list() end connect: 连接指定服务,并为服务起一个别名,便于调用操作call: 调用名为name的服务,指定调用的函数fn以及arg参数list: 列出已经连接的服务列表 y...
500 words
创建新模块使用: ypm init test 创建一个名为test的模块参数: -d 布尔类型,若指定,创建的新模块在当前目录的子目录创建 补全代码提示使用: ypm tidy 安装模块使用: ypm install ark 安装名为ark的模块参数: -g 布尔类型,若指定,安装的模块挂载在yock的全局目录下,否则安装在当前工作目录下 卸载模块使用: ypm uninstall ark 卸载名为ark的模块参数: -g 布尔类型,若指定,卸载挂载在yock的全局目录下的模块,否则卸载当前工作目录下的模块 添加模块使用: ypm add ark 将ark模块添加到当前项目当中 删除模块使用: ypm rm ark 将ark模块从当前项目移除 缓存列出缓存使用: ypm cache ls 列出目录中存在的所有缓存信息 释放缓存使用: ypm cache free 释放超时的缓存参数:-f 布尔类型,将全部低于level(默认为2)的缓存释放,包括没有时间期限的-l 整型,设置level等级 代理ypm 拉取模块的地址 添加代理使用: ypm proxy add gitlab.lu...
806 words
Yock拥有异步任务转同步任务的能力,以及有栈和无栈协程并发编程的特性。 信号量在开始异步编程之前,先引入同步的概念。正常情况下代码是顺序执行的,有时候迫于进程切换的开销,以及多核CPU的普及,多线程编程日益普遍。但是面对异步的任务,在某些场景下又不得不转换成同步处理,例如多线程爬虫都爬完后统一返回,需要从异步转换成同步。yock为用户提供了两个函数notify和wait。正如他们的字面意思,notify发送信号量,wait阻塞等待信号量。如果wait一直等不到信号量,他将永远阻塞下去。为了避免死锁的情况发生,yock也为wait函数提供了timeout参数,这是可选的,如果在规定的时间内无法等到信号量,那将自动结束阻塞。 123456789---@param sig string---@param timeout? timefunction wait(sig, timeout) end---@param ... string|timefunction waits(...) end---@param sig stringfunction notify(sig) end 除了wai...
652 words
Yock没有直接提供Pipeline相关的规范,但是提供了能够搭建Pipeline的相关功能,这也使得yock在调度上更加灵活。 Job & Task1234567---@param name string---@param callback fun(ctx: context)function job(name, callback) end---@param name string---@vararg stringfunction jobs(name, ...) end Job: Task的最小组成单元,一个Task可由一个或者多个job组成。从函数签名不难看出,每个job都是一个名称与回调函数相绑定的单元。如果用户在同一份文件中定义同名的job,那yock将会抛出错误,因此每个job名称必须唯一。Jobs: 编排多个job组成一个Task,与job共享命名空间。这意味着,要是jobs和job出现同名的情况,yock也会直接抛出错误。 1234567891011121314--- main.luajob("test", function(ctx) ...
941 words
注意: 由于GNU命令过于庞杂,因此对于相关函数以代码和注释的形式穿插介绍。 原生执行调用终端直接执行,对于不同平台相同命令不同flag并不具备适配的能力。因此,如果你想获得更好的跨平台能力,最好仅使用原本就跨平台的命令。例如,支持跨平台的命令: go mod, npm; 不支持跨平台的命令: 操作系统原生命令(tasklist, ps)。 1234567891011121314151617-- 根据环境取别名,这个别名是存在于yock内存中的,而不是直接在终端执行local env = "dev"if env == "dev" then alias("CC", "go.exe")else alias("CC", "go")end-- unalias("CC") -- 删除映射-- 调用子进程执行,在执行前会先映射别名sh("$CC version")-- 以下为sh命令不同重载形式sh("echo ...
495 words
Yock是一个为构建而生的框架,他有点类似于nodejs和bazel,底层基于一个解释器封装了一些功能。正如nodejs那样,yock也基于封装过的lua实现了自己的包管理工具——ypm,这意味着引入第三方库成为可能。 安装快速开始 安装注意: 无论是哪一种安装方式,下载完后都需要将yock挂载到本地环境中。在解压压缩包后,进入可执行文件的目录运行yock run install.lua完成这个过程。 Git Release (推荐,第一时间发布最新版本)github: 选择合适的压缩包下载完解压运行install.lua即可。 包管理工具安装 (版本更新存在滞后)包管理工具下载完后一般会自动解压,解压完后还是需要手动运行install.lua,因此强烈推荐用Git Release的形式。npm: npm i @ansurfen/yock -gpip: pip install yock 自己构建12345678git clone https://github.com/Ansurfen/yock.gitcd ctl<!-- windows -->./build...