78个稳定版本
2020.522.1653 | 2020年5月22日 |
---|---|
2020.521.2316 | 2020年5月21日 |
2020.429.2144 | 2020年4月29日 |
在Web编程中排名第1321
7星 & 1关注者
255KB
3.5K SLoC
Rust-reviews (暂定名称 cargo_crev_web)
用于从cargo-crev查询评论的Web服务器
版本:2020.822.1757 日期:2020-08-22 作者:bestia.dev 存储库:GitHub
标签:#rustlang #buildtool #developmenttool #server #crev #review #web #html
我的GitHub项目更像是教程而不是成品:bestia-dev教程。
试试看
https://web.crev.dev/rust-reviews/crates
动机
cargo-crev是crates.io中Rust Crates的评论系统。
https://github.com/crev-dev/cargo-crev
最初它是一个程序员在本地机器上开发时使用的CLI。cargo-crev的安装复杂且涉及多个步骤。
我想创建一个公共的cargo-crev Web应用程序来全局查询评论。拥有一个Web应用程序将非常有利于推广crev系统。
这个Web应用程序将尝试显示所有公开可用的评论,这样社区将对评论和crates有更广泛的理解。
Web服务器将使用cargo-crev内部检索评论。
CREV - Rust代码审查 - 提高意识
请,传播这个信息!
开源代码需要一个社区的努力来体现其可靠性。
从web.crev.dev上阅读crates的评论开始。
然后安装GUI cargo_crev_reviews 或CLI cargo-crev。
你个人的评论最重要。如果你有老板,他迟早会问你你是否审查了所有依赖项。使用cargo_crev_reviews,你有一个基本的工具来做这件事。
撰写您的评论!描述您信任的crate。或者警告您认为危险的crate版本。发布并与其他开发者分享您的观点。
crates.io 和 lib.rs
由 @Kornelski 创建了一个类似的网页,网址为 https://crates.org.cn/crates/num-traits/crev。
lib.rs 是 crates.io 的替代索引。
Crates.io 是官方Rust-lang存储的crate源代码,这些代码是受信任且不可变的。
Lib.rs专注于在具有便利附加信息的类别中搜索crate。
warp
Warp 是用 Rust 编写的网络服务器。
https://github.com/seanmonstar/warp
它将监听端口 8051 并接收 http。
Google vm
在我的Google vm上安装了一个工作网络服务器。
有一个nginx服务器反向代理,接受 https http2 在 443 上,并将其转发到内部 8051。Nginx还将所有 http 80 转发到 https 443。
在 sites-available/default 中添加了以下行
#region rust-reviews
#without the trailing / it is not a directory (for the server and for the browser)
#do the browser redirect 301
location = /rust-reviews {
return 301 /rust-reviews/;
}
#folder name only, pass to index.html on port 8051
location = /rust-reviews/ {
proxy_pass http://127.0.0.1:8051/index.html;
proxy_buffering off;
}
# the trailing / after both of these lines means this route is not appended to the forwarding
location /rust-reviews/ {
proxy_pass http://127.0.0.1:8051/;
proxy_buffering off;
}
#endregion
screen (Linux 程序)
我的应用程序将使用带有 session_name 的命令 "screen" 在后台运行。
因此,我可以轻松地看到应用程序的所有 stdout。
创建新会话
screen-S cargo_crev_web_8051
,
连接到现有会话
screen-r cargo_crev_web_8051
,
在环境变量中设置 cargo-crev CLI 的凭证
(空格)exportCREV_PASSPHRASE=your_passphrase
警告:永远不要将机密写入代码或发布在 Github 上的文件中。
在命令前添加空格,以避免将其保存在bash历史记录中。启动网络服务器
cd/var/www/webapps/cargo_crev_web; ./cargo_crev_web
如果您想滚动屏幕会话
ctrl+aESC
使用箭头或 page-up、page-down 滚动。使用
ESC
分离会话
ctrl+a d
安装 cargo-crev 以获取评论
在我的网络服务器上,我想定期从 GitHub 获取 cargo-crev 评论。
我需要安装 cargo-crev。
我的第一次尝试是使用 rustup 和最小配置安装 Rust 和 cargo。
然后我尝试使用 cargo 安装 cargo-crev
cargoinstall cargo-crev
这是一场灾难。我有一个最小的、最小的虚拟机,看起来编译 cargo-crev 的源代码对这个虚拟机来说太多了。我试了3次,等了几个小时,但没有成功。然后我删除了大的文件夹 ~/.cargo/registry/src
以释放一些磁盘空间。
幸运的是,这里已经有一个预先编译的二进制文件
https://github.com/crev-dev/cargo-crev/releases/download/v0.16.1/cargo-crev-v0.16.1-x86_64-unknown-linux-musl.tar.gz
我解压了两次,并将二进制文件 cargo-crev
保存在
~/.cargo/bin
GitHub crev-proofs
我遵循了说明 getting_started。
我创建了一个新的 GitHub 用户:cargo-crev-web
。我想命名为 cargo_crev_web
,但不允许下划线 :-( 因此,我现在有不一致的名称 :-(
我使用了我的第二个电子邮件,因为我的第一个电子邮件用于我的个人 GitHub bestia-dev。
在 Google vm 网络服务器上,我创建了一个 SSH 密钥并将其复制到 GitHub 以获得 SSH 访问权限。
我分叉了模板 https://github.com/crev-dev/crev-proofs。
为了 git fetch 和 reindex,我将打开一个新的 screen 会话
screen-S cargo_crev_web_git
以便稍后重新连接
screen-r cargo_crev_web_git
我需要GitHub的ssh凭据
eval$(ssh-agent-s)
ssh-add~/.ssh/bestia2_for_github
使用我的新GitHub仓库创建新的crev id
cargocrev id new --urlhttps://github.com/cargo-crev-web/crev-proofs
添加受信任用户 dpc
,cargo-crev的作者
cargocrev trust --等级中等 https://github.com/dpc/crev-proofs
将我的crev数据推送到GitHub
cargocrev repo publish
受信任的审稿人
为了展示所有公开的评论,cargo_rev_web
将对所有人进行"trust --level low"。
我将亲自、手动维护这个列表。
我有一个函数可以搜索Github上的所有crev-proofs仓库。除此之外,命令cargo crev id query all
返回在本地缓存的crev文件(受信任的人)中找到的所有仓库的列表。然后我手动检查每个仓库是否正确:它必须包含一个crev-id和一些正确格式的评论。
如果仓库正确,则执行"cargo crev trust --level low repo"。如果不正确,我将它添加到"blocklisted repos"中,并描述错误原因。
Linux调度器
我需要每小时调用一次
cargo crev repo fetch trusted
以确保在~/.cache/crev/
中提供最新的评论。
Linux调度器crontab
是好的,但我缺少一些更直观的东西。
我写了https://github.com/bestia-dev/foreground_scheduler来做这件事。
它是一个正常的CLI,屏幕上很容易阅读输出。
为了在另一个终端会话中无限期运行它,我使用了screen
。打开一个新的screen会话
screen-S cargo_crev_web_git
以便稍后重新连接
screen-r cargo_crev_web_git
脚本存储在/var/www/scripts/cargo_crev_web_fetch_reindex.sh
,我运行它(每小时的第5分钟)
foreground_scheduler05 /bin/bash"/var/www/scripts/cargo_crev_web/cargo_crev_web_fetch_reindex.sh"
要停止它
ctrl+c
测试 .cache/crev
并非每个评论都需要所有数据,因此我需要测试包含不同数据的示例。
https://web.crev.dev/rust-reviews/crate/btoi 替代方案
https://web.crev.dev/rust-reviews/crate/num-traits/ 问题
https://web.crev.dev/rust-reviews/crate/protobuf 建议旧版
https://web.crev.dev/rust-reviews/crate/inventory 建议书
本地开发中也是如此,只是服务器是127.0.0.1:8051/。
HTML模板化
像许多开发者一样,我也遭受“图形设计狂热”。
对我来说很难找到确切的色彩变化、形状比例和细微的字体差异,使网页变得美丽。这不是HTML和CSS知识的缺乏。而是缺乏风格和品味。
无法修复!
因此,我创建了一个简单的HTML模板化系统,尽可能地将图形设计师的工作与开发者的工作分开。
首先,图形设计师准备一个漂亮的html+css与静态数据,看起来很棒。
这两个文件存储在他的本地磁盘上,不需要服务器或配置。静态数据必须尽可能真实。
然后我在要插入动态数据的位置添加注释,这些注释是命令。这些注释不会破坏原始HTML。该HTML仍然可以从磁盘静态可视化。很容易添加到或修改设计。只是避免触摸注释。
在Web服务器上,HtmlTemplating trait获取模板并插入动态数据。
结果是正常的HTML,并将其发送到浏览器。
Markdown 转换为 HTML
我使用 Rust 的 comrak 库将审阅评论从 Markdown 转换为 HTML。
徽章
一个用于 crev count of reviews for one crate
的 SVG 徽章服务的 URL
https://web.crev.dev/rust-reviews/badge/crev_count/reader_for_microxml.svg
GitHub 上的示例外观
https://github.com/bestia-dev/reader_for_microxml/
[](https://web.crev.dev/rust-reviews/crate/reader_for_microxml/)
HTML 验证器
手动编写的 xhtml 可能充满了 "错误"。
验证器将迅速找出它们。
我希望在 VsCode 中拥有这个工具。
https://www.liquid-technologies.com/online-xml-validator
CodeTour
我非常喜欢 VSCode 扩展 CodeTour。
它制作了一种特殊的文档,显示代码流程。
没有其他类型的文档比这更有用。
它只能在 VSCode 中工作。我制作了一个导出到 md 的实用工具,因为这样更容易分发 md 文件。
JavaScript 点击复制
我使用了 https://clipboardjs.com/ 来实现点击复制。
对于工具提示,我使用了 https://chrisbracco.com/a-simple-css-tooltip/
颜色
这个星球上的每个人都会想要不同的颜色。这是人性。或者只是自然界在环境发生巨大变化时增加生存机会的统计分散...
建立一个满足每个人对颜色品味的网站是不可能的。
甚至希望满足几位好朋友也是不可能的。
因此,有一个名为 User Css 的 Chrome 扩展程序
https://chrome.google.com/webstore/detail/user-css/okpjlejfhacmgjkmknjhadmkdbcldfcb
你可以在浏览器中编写 css,当你输入时,它立即改变网页的外观。
在网页 https://web.crev.dev/rust-reviews/ 中,你可以找到一组基本 css,用于颜色调色板。只需点击复制,并在 User Css 中尝试它。然后更改颜色,直到你喜欢为止。
最后,保存 css,以便下次访问网站时使用。
如果有人对他的/她的用户 css 非常满意,请将其发送给我。我将使其可供其他用户使用。他们会很高兴。人类喜欢颜色 - 不同的颜色。
想法
相同的 web 服务器可以轻松运行在开发者的本地机器上。
它只是一个单个的二进制可执行文件。
它只读取特定于该开发者的受信任审阅。
因此,我们现在有一个本地 web 服务器和浏览器。这意味着我们现在有制作一个适用于任何 OS 的 cargo-crev 美丽 GUI 的可能性,并且远程也可以。好。
此本地服务器将使用 crev-lib 来访问 crev 功能。
统计
https://github.com/bestia-dev/cargo_crev_web/issues/4
参考
https://github.com/rustomax/rust-iterators
开源和免费如啤酒
我的开源项目免费如啤酒(MIT 许可证)。
我只是喜欢编程。
但我也需要喝酒。如果你觉得我的项目和教程有帮助,请通过捐赠到我的 PayPal 来为我买一杯啤酒。
你知道你当地酒吧啤酒的价格 ;-)
所以我可以为你的健康喝一杯免费啤酒 :-)
Na zdravje! Alla salute! Prost! Nazdravlje! 🍻
//bestia.dev
//github.com/bestia-dev
//bestiadev.substack.com
//youtube.com/@bestia-dev-tutorials
依赖项
~24–42MB
~708K SLoC