最近两个月(2018.05-2018.06),我花费了大量的业余时间对xnote进行了打磨,相比于1.0版本的羞涩,现在的xnote已经可以很流畅的使用了。这个版本包含了一系列的更新,最重要的主页的更新和扩展命令的增强。
首页
1.4版本的时候界面还没有统一的样式,各个地方也比较粗糙,1.5版本对很多页面进行了统一的调整,同时主页也采用了传统的博客主页设计(之前首页设计成突出分类是考虑到知识库的定位,但是实际使用过程中还是需要优先把最近添加的内容展示出来的)。下面是一些对比的截图。
旧版首页
新版首页
扩展命令
经过一段时间的调整,扩展命令已经可以满足我的很多自定义的需求了。下面我将详细介绍一下扩展命令的使用。
扩展命令定义很简单,在scripts/commands
目录下增加一个python文件,定义一个main方法就可以了,你可以自由调用xnote的api(主要是xutils模块,目前命名比较ugly,后续改进),写过C语言的同学对此应该非常熟悉
main方法传入的参数如下
- path 当前的目录或者文件路径
- input 输入的参数
- confirmed 是否确认执行,用于危险操作,比如删除文件
**kw
一定要定义一个keywords参数,方便向后兼容
首先进入命令列表
然后我们打开calc.py进行编辑
这个命令很简单,调用python的eval命令计算数学公式,运行一下结果如下,点击目录或者文件上的更多按钮,会出现一个弹层,然后运行命令calc 10 + 20
即可
linux平台提供了那么多好用的工具,怎么能够错过呢!!!,这里提供一个简单的sh命令,你可以轻松调起系统命令,而且根据path参数能够自动设置当前的工作目录
import xutils
import os
import subprocess
# TODO 检查命令超时
def main(path = None, input='', **kw):
if input == '':
print('请输入命令谨慎执行')
else:
try:
p = subprocess.Popen(input, cwd=path,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out = p.stdout.read()
err = p.stderr.read()
print(out.decode('utf-8'))
print(err.decode('utf-8'))
p.stdout.close()
p.stderr.close()
finally:
pass
运行结果如下
看起来不自然,没关系!别名也是支持的,还记得initScript启动参数吗,设置一个启动脚本,定义如下的别名
import xconfig
xconfig.set_alias('ll', 'sh ls -lh')
xconfig.set_alias('ls', 'sh ls')
是不是很酷,感兴趣的小伙伴们赶紧下载体验一下,欢迎提交ISSUE和PR!有任何建议欢迎交流,项目地址
下一步的计划
- 继续统一和优化界面
- 优化扩展命令的使用体验
- 笔记的历史版本
- 性能提升,主要是通过加缓存
附:Release Log
新增
- [x] 扩展命令confirmed参数,input输入参数
- [x] 扩展命令不再显示按钮
- [x] 扩展命令支持html格式
- [x] 扩展命令的别名alias
- [x] 页面扩展scripts/pages
- [x] 文件浏览器分栏模式
- [x] 笔记的数据报表-整体情况,环比,同比
- [x] 监听文档的新增、重命名事件,实时更新name的缓存
- [x] 搜索不强制要求登录,可以搜索公开的笔记
- [x] 浏览器标签页显示文档标题
更新
- [x] 主界面优化,增加侧边栏统计数据
- [x] 用户管理优化,左右分栏模式
- [x] 优化删除线按钮,已经加上删除线的再点击取消删除线
修复
- [x] 若干API的错误
- [x] 扩展命令的编辑超链接
- [x] Fix
/fs_shell
链接异常,xutils.get_real_path
没有判断参数为None
删除
api/monitor_task
,似乎一直没有用过system/app_admin
使用文件管理即可code/code_format
没怎么用过tools/httpd
没什么用处tools/http_proxy
没什么用note/table.html
废弃