Anyshortcut是我发布于 2017 年 12 月的 Chrome/Firefox 效率插件,一直坚持订阅制收费,到目前为止注册用户将近 1000 位,使用信用卡订阅用户接近 3%吧。
大半年前接触到 Rust,被这门语言深深折服,于是从官方文档开始学习 Rust,入门之后写了一个Anyshortcut CLI版。
https://github.com/anyshortcut/anyshortcut-cli
自认为这个项目很适合 Rust 初学者学习。
因为 Anyshortcut 的快捷键是可以同步的,对于 CLI 程序是通过 Access token 来访问后端 API 来同步快捷键的。Access token 可以在官网用户中心找到。
用 Access token 登录之后即可把所有快捷键同步下来,然后可以使用命令行快速打开网页。
比如,我给https://www.google.com 绑定了快捷键G,那就可以输入as g快速用默认浏览器打开 Google。
$ as g
Url: https://www.google.com/
其他的混合快捷键、二级快捷键也是类似,就不再介绍了。
当然这里的命令as是anyshortcut的别名,要不然名字太长了,根本就算不上效率工具了。
alias as=$(which anyshortcut)
cargo install anyshortcut
brew install anyshortcut
申明:除了 Rust 之外我个人熟悉的编程语言只有 C++ 2003, Java, Python, Javascript, Groovy,我并没有研究过各种编程语言,甚至 Ruby、Go、Swift、Kotlin、Scala,Haskell 等我都一律没有去学过,所以这些只能算比较浅显的感想,不喜勿喷。
1
noli 2018-10-21 05:03:00 +08:00 2
坐等 rust nightly 合并 async await 之后再用来写实际项目。
并非 anyshortcut 的用户,但想了解一下,如果我有 vimium 这样的插件,anyshortcut 可以带给我什么新的价值? |
2
huclengyue 2018-10-21 05:23:06 +08:00 via Android
关注一下 rust
|
3
devtiange 2018-10-21 06:13:16 +08:00
不是想拍砖, 单纯的觉得这样的 cli 用 nodejs 写会不会代码更少, 开发周期更短呢?
|
4
trait 2018-10-21 06:24:22 +08:00 via iPhone 2
粗看了一下,挺好的。国外对 rust 引起的命令行小“重生”评价挺高的
models 最后三个 impl 考虑一下 macro ? 既然用到了 clap,能不能用 structopt 重写一下 cli 相关,structopt 包装了 clap,一个命令行就是一个 struct 或者 enum,代码更美观好维护一些; edition2018 的 nightly 已经发布了(1.31),stable 会在 12.6,可以考虑一下更新到 2018 版本,具体参见 edition guide |
6
qdwang 2018-10-21 07:16:21 +08:00 via iPhone
rust 写 wasm 确实舒服 还能结合打包工具一起使用 直接 import rs 项目 感觉很方便
|
7
qdwang 2018-10-21 07:17:04 +08:00 via iPhone
缺点感觉是初次编译速度太慢
|
8
zxq2233 2018-10-21 07:35:06 +08:00
小哥哥
|
9
Wichna OP @noli 哈哈哈,我已期待 nightly 合并。
我是一个效率控,vimium 我也很早就知道并且使用过,我没有必要重新造轮子。Anyshortcut 和 vimium 这样的插件完全不一样的,我这个帮你给常用网页绑定一级快捷键、二级快捷键或混合快捷键,甚至它们可以混合使用。它是一个比较极客的产品,一般人用不到甚至会嗤之以鼻,但是你只要理解了它习惯了绝对会觉得**Anyshortcut 真香**。 |
10
Wichna OP @devtiange 跟开发周期没有任何关系,用什么语言写这个 cli 工具都可以,只是我现在热衷于 Rust 所以其他语言不考虑了
|
11
Wichna OP @trait 感谢指点。
models 最后三个 impl 考虑一下 macro ? 哈哈哈这个还真的可以,我后面试一下。 structopt 我还没有用过,我到时候看看。 Rust 2018 发布之后我到时候一定会切换到这个版本的。 |
13
Wichna OP @huclengyue 哈哈推荐关注
|
14
dodo2012 2018-10-21 11:16:14 +08:00
去年在学,主要我一直学的是脚本类语言,然后,在生命周期和所有权这里卡了很久,后来工作用不到就慢慢丢下来了,现在对这两个概念还是有点乱,`a `b 的头大了
|
16
trait 2018-10-21 12:08:09 +08:00 2
@dodo2012 很多人说 rust 难学,被生命周期所有权吓到(严格来说 rust 里面并不存在“ lifetime ”,只不过是历史”误称“现在语言组想改改不了了,它在社区传播太广泛了,在 NLL 中这个名词更不准确,在 rustc 开发过程中我们更多地称呼为 region,只不过在给用户错误诊断里面还是称呼为 lifetime ),即将到来的 edition2018 引入 nll 后,“ lifetime ”更符合用户的直觉,与 edition2015 中类作用域的”线段“式粗暴检查不同,nll 是精确到点,绝大多数情况下你甚至不会觉察到它的存在。所有权和借用如果学过操作系统,了解进程同步的读-写者模型这个问题就很容易理解了。
学 rust 千万不要看中文翻译,内容落后,本身中文资料少,你从书里面看到的名词中文搜索根本找不到有价值的信息 |
17
h404bi 2018-10-21 12:25:31 +08:00
|
18
quinoa42 2018-10-21 12:26:32 +08:00
看了一下居然支持 pattern matching,谢安利
不过最近 kotlin 写着感觉也还可以,等到有空了再尝试吧 |
21
Wichna OP @quinoa42 Rust 的 pattern matching 非常强大好用的,Rust 的有点 pattern matching 都反而不是最重要的优点了
|
22
Wichna OP @quinoa42 Rust 的 pattern matching 非常强大好用的,Rust 的优点很多,pattern matching 不是算是最重要的优点了
|
23
quinoa42 2018-10-21 12:56:39 +08:00
@trait 刚看了楼主和层主的安利之后去 github 上搜了一下 rust 相关话题,没想到发现了新世界
现已安装 fd,exa 和 bat😂 |
24
Wichna OP @quinoa42 哈哈哈,rust 非常适合写 cli 应用,官方还专门成立了 cli 工作组在这方面不遗余力的推进。就像#4 说的:国外对 rust 引起的命令行小“重生”评价挺高的
|
25
sampeng 2018-10-22 09:10:02 +08:00 via iPhone
同样有 rust 真实项目在跑。编译过了就绝对没问题,这点真的是程序员福音
|
27
sampeng 2018-10-22 11:23:54 +08:00 via iPhone 1
@Wichna 我还算大规模用…一小程序几万个终端设备跑着。啥毛病没有。就是一开始 tokio 有点毛病。姿势不对,http 一超时就全部死那了…后来发现没默认 timeout 回调,所以是开源库的锅。
rust 写起来太舒服了。搞的现在没有宏写 golang 简直是噩梦一样 错误类型让代码更严谨 nightly 的编译插件减少大量的开发量 模式匹配也是好用到爆炸。虽然无法避免深层次嵌套,但用宏可以很优雅的解决 不觉得 lifetime 很难理解啊。理解整个内存使用原则随借随还,其实 ownership, borrowing, lifetime 感觉都是在解决内存管理问题、这些机制去保证不用 gc 和手动管理内存的情况下也不会有内存问题。就是有些深层次嵌套的时候逻辑上有点问题。写起来很蠢。 feature 标记解决多环境问题很优雅。 等等等等 总的来说,很看好 rust。就是少了大的开源项目。 |
28
xiangchen2011 2018-10-22 16:04:22 +08:00
blog 有 rss 么,可以订阅下
|
29
Wichna OP @xiangchen2011 谢谢,你说的是我的这个 https://folyd.com/blog/ ?我本人没有宣传这个网站,暂时没有提供 rss,以后可以考虑
|
30
songtianyi 2018-10-23 10:53:13 +08:00 2
|
31
Wichna OP @trait 感谢指点,我今天基于 Rust 1.30 用 proc_macro_derive 实现了自动 impl Storage 😄
https://github.com/anyshortcut/anyshortcut-cli/blob/a33beb4983853ff66446749c219e4686913ee085/storage-derive/src/lib.rs |
32
trait 2018-10-27 22:10:24 +08:00 1
@Wichna awesome :) 一个小小的建议,rust 里面建议的模块名和 crate 名都用下划线 storage_derive
|
33
trait 2018-10-27 22:19:04 +08:00 1
@Wichna https://github.com/anyshortcut/anyshortcut-cli/blob/a33beb4983853ff66446749c219e4686913ee085/src/utils/ui.rs#L13
这里用 match 改下?这里用了 Result 但是 y|n 返回 Ok,_ 又只是 print match input { y|n => Ok(..) _ => Err(..) } |
34
oyyd 2018-10-28 13:15:39 +08:00
GJ. Chrome Extensions 免费应用偏多,楼主分享些“订阅制收费”的经验如何?
|