牛逼至极!用这个神器看代码太舒服了(留言送书)

共 4553字,需浏览 10分钟

 ·

2021-07-20 10:13


给大家介绍一个非常实用的工具,有了它,我们可以在几秒之内用 VS Code 打开 GitHub 上的任意一个 Repo,无需 Clone,速度飞快。

用法也十分简单而且好记,下面给大家介绍下。

介绍

比如这里是 Scrapy 的仓库:https://github.com/scrapy/scrapy,用 GitHub 打开是这样的:

GitHub仓库

看代码的时候我们可能需要一个个点进去,速度慢而且感觉不太方便。

为此大家可能安装了一些 Chrome 插件,比如比较火的是 Octotree,安装之后效果是这样的:

Octotree效果

安装这个插件之后,在网页左侧会出现一个文件树方便我们快速定位文件。然鹅,个人感觉总不是真正想要的那种味道。

现在好了。

这时候,我们只需要在网址 github 后面加上 1s,变成:https://github1s.com/scrapy/scrapy

没错,就是这么简单好记。

访问之后,就可以看到这样的页面:

是的没错,这就在浏览器中打开了一个在线版的 VS Code,并打开了 Scrapy 的源代码,看代码就非常方便了。

无需克隆,无需任何配置,打开飞速,代码高亮!

一些快捷键也是和 VS Code 一样的,比如 Cmd/Ctrl + P,就可以快速找到一个文件:

Cmd/Ctrl + F 搜索:

不过我试了一下全局搜索貌似只能限制在一个文件内,不知道是哪里设置的问题。

有的朋友可能会问,代码能修改吗?

答案是不能,代码都是以只读模式打开的,也就是我们只能看,没法改。不过这也合情合理,毕竟任意 Repo 都能打开,改了又存到哪里呢?

原理

另外有的朋友可能好奇这个的实现原理是怎样的,我扒了一下源码,看到作者是这么介绍的:

Github1s is based on VS Code 1.52.1 now. VS Code can be built for a browser version officially. I also used the code and got inspired by Code Server.

Thanks to the very powerful and flexible extensibility of VS Code, we can easily implement a VS Code extension that provides the custom File IO ability using FileSystemProvider API. There is an official demo named vscode-web-playground which shows how it is used.

On the other hand, GitHub provides the powerful REST API that can be used for a variety of tasks which includes reading directories and files for sure.

According to the above, obviously, the core concept of GitHub1s is to implement a VS Code Extension (includes FileSystemProvider) using GitHub REST API.

We may switch to the GitHub GraphQL API for more friendly user experience in the future, thanks to @xcv58 and @kanhegaonkarsaurabh. See details at Issue 12.

GitHub1s is a purely static web app (because it really doesn't need a backend service, does it?). So we just deploy it on GitHub Pages now (the gh-pages branch of this repository), and it is free. The service of GitHub1s could be reliable (GitHub is very reliable) because nobody needs to pay the web hosting bills.

总的来说,GitHub1s 这个仓库是基于 VS Code 构建的,灵感来源于 Code Server 这个 Repo,地址为:https://github.com/cdr/code-server,这个就是一个 Online 版的 VS Code。

那作者基于这个做了什么事呢?

他基于 VS Code 提供的 FileSystemProvider API 对接了 GitHub 的 REST API 实现了这些功能。其中前者是 VS Code 提供的,可以提供文件读写操作,当然读写在线文件也是没问题的了;而后者是 GitHub 提供的,通过 REST API 可以获取 Repo 的文件夹或者某个文件。

如此,GitHub1s 就诞生了。

知道了原理之后,我们也可以自己把 GitHub1s 代码下载下来,改写一下,扩展一些功能:比如解除只读限制,保存的时候直接存储到自己的 Repo 等。

具体的修改和开发流程可以参见:https://github.com/conwnet/github1s/blob/master/docs/guide.md#development

访问频率限制

另外作者也提到了一点:

For unauthenticated requests, the rate limit allows for up to 60 requests per hour. Unauthenticated requests are associated with the originating IP address, and not the user making requests.

对于未授权的请求,API 的请求频率是有限制的,每个 IP 每个小时访问限制是 60 次,所以用着用着就容易超限制了,可能就打不开文件了。

这里的频率限制我解读下,有朋友可能好奇,因为这个网站是 github1s.com 来 serve 的,所以请求是不是都是 github1s.com 这个服务器发出来的呢?所以不同的人其实都是用的一个 IP?

其实不是的,我观察了一下网络请求,是当前网页直接请求了 GitHub 的 API 实现的,所以 IP 就是我们自己客户端的真实 IP,网络请求如下所示:

但是请求 GitHub 的 API 没有跨域问题吗?

没有,这是因为 GitHub API 设置了解除跨域访问,Response Headers 里面可以看到:

access-control-allow-origin: *

所以任何网站都可以直接请求 GitHub 的 API。

OK,说回解除频率限制的问题:

For API requests using Basic Authentication or OAuth, you can make up to 5,000 requests per hour.

这里说如果登录了,每小时就可以提高到 5000 次请求了。

怎么设置呢?

可以在 github1s.com 打开侧栏的 OAuth 设置,如图所示:

然后点击 Generate New OAuth Token,跳到自己的 GitHub Setting 页面,生成一个 Token 就好了,如图所示:

好了之后贴回来就 OK 了,这样频率限制就解除了,爽歪歪。

彩蛋

另外我还发现了有一个配套的 Chrome 插件,也叫 GitHub1s,大家可以自己搜索安装:

安装完成之后,每个 GitHub Repo 都会自动多出一个绿色按钮,如图所示:

点击之后就直接跳转到刚才所说的 github1s.com 打开这个 Repo 了,简直不要太方便!

另外还有另外一个开发者写的插件,效果是这样的:

感觉这个还是挺小巧精致的,可以来这里下载:https://github.com/2293736867/Github1sExtension

总结

好了,以后看 GitHub 代码就有新神器了,大家快去试试看吧~


············END············

留言送书

 

推荐理由:

本书以零基础讲解为宗旨,旨在帮助读者掌握 Python 语言的基础知识,以及如何使用Python 语言实现编程,了解其开发技巧,并通过实战案例熟悉开发过程及问题的解决方法


推荐理由:
本书介绍了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介、发送请求、提取数据、使用多个线程和进程进行并发抓取、抓取动态页面中的内容、与表单进行交互、处理页面中的验证码问题及使用Scrapy和分布式进行数据抓取,并在最后介绍了使用本书讲解的数据抓取技术对几个真实的网站进行抓取的实例,旨在帮助读者活学活用书中介绍的技术。


推荐理由:

本书主要介绍了Python进行人工智能开发所需的技术、基础设施、核心理念、实施方法与流程,以及实战操作应用。全书共分3篇。1篇主要讲解了人工智能开发中常用Python编程语言相关入门知识;第2篇主要讲解了人工智能开发相关知识的应用;第3篇通过3个综合案例,以神经网络在计算机视觉问题中的重要应用为线索,介绍深度学习人工智能技术在计算机视觉任务中的实践。



活动要求及规则


我们会在活动截止时从精选留言中选出 六位 粉丝赠送以上任意一本书籍,免费包邮赠送~(注:每人当月仅限一次中奖机会,经常留言的粉丝获奖几率更大哦!



活动截止时间: 2021 年 7 月 19 日 16:00 整




上期送书中奖名单来咯,速来围观~


 书籍名单

恭喜以上六位中奖的童鞋,快加小编微信(Mayyy530),凭中奖截图来领奖!先到先选哦~


兑奖截止时间:7月17日17:00整




往期推荐

1、100个Python小技巧!!

2、七个Python必备的GUI库,这次一定要学会!

3、关于Python框架的那些事!(常用Python框架,区别,性能对比)

4、Python 里最强的Web框架,早就不是Django和Flask了

5、程序员的内卷,一行注释就能生成代码!GitHub原生AI代码生成工具Copilot上线


今天因为您的点赞和在看,让我元气满满!

浏览 18
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报