#web-server #reviews #warp #review #github #html #cargo-crev

app lucianobestia/cargo_crev_web

用于从cargo-crev查询评论的Web服务器

78个稳定版本

2020.522.1653 2020年5月22日
2020.521.2316 2020年5月21日
2020.429.2144 2020年4月29日

Web编程中排名第1321

7星 & 1关注者

MIT许可证

255KB
3.5K SLoC

Rust-reviews (暂定名称 cargo_crev_web)

用于从cargo-crev查询评论的Web服务器
版本:2020.822.1757 日期:2020-08-22 作者:bestia.dev 存储库:GitHub

maintained ready_for_use

Lines in Rust code Lines in Doc comments Lines in Comments Lines in examples Lines in tests

License cargo_crev_web

标签:#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/

[![crev reviews](
https://web.crev.dev/rust-reviews/badge/crev_count/reader_for_microxml.svg
)](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