牛逼至極!用這個神器看程式碼太舒服了
用法也十分簡單而且好記,下面給大家介紹下。
介紹
比如這裡是 Scrapy 的倉庫:,用 GitHub 開啟是這樣的:
看程式碼的時候我們可能需要一個個點進去,速度慢而且感覺不太方便。
為此大家可能安裝了一些 Chrome 外掛,比如比較火的是 Octotree,安裝之後效果是這樣的:
安裝這個外掛之後,在網頁左側會出現一個檔案樹方便我們快速定位檔案。然鵝,個人感覺總不是真正想要的那種味道。
現在好了。
這時候,我們只需要在網址 github 後面加上 1s
,變成:1s.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,地址為:.com/cdr/code-server,這個就是一個 Online 版的 VS Code。
那作者基於這個做了什麼事呢?
他基於 VS Code 提供的 FileSystemProvider API 對接了 GitHub 的 REST API 實現了這些功能。其中前者是 VS Code 提供的,可以提供檔案讀寫操作,當然讀寫線上檔案也是沒問題的了;而後者是 GitHub 提供的,透過 REST API 可以獲取 Repo 的資料夾或者某個檔案。
如此,GitHub1s 就誕生了。
知道了原理之後,我們也可以自己把 GitHub1s 程式碼下載下來,改寫一下,擴充套件一些功能:比如解除只讀限制,儲存的時候直接儲存到自己的 Repo 等。
具體的修改和開發流程可以參見:.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 了,簡直不要太方便!
另外還有另外一個開發者寫的外掛,效果是這樣的:
感覺這個還是挺小巧精緻的,可以來這裡下載:.com/2293736867/Github1sExtension
總結
好了,以後看 GitHub 程式碼就有新神器了,大家快去試試看吧~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557738/viewspace-2757417/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分享一段牛逼程式碼
- Java 11正式釋出,這幾個逆天新特性教你寫出更牛逼的程式碼Java
- 真正牛逼的人,都是極簡主義者!!
- Java11正式釋出,這幾個逆天新特性教你寫出更牛逼的程式碼Java
- 布隆,牛逼!布穀鳥,牛逼!
- 極簡程式碼神器:Lombok使用教程Lombok
- 這幾個換臉 GitHub 專案太牛了!Github
- 一個超級牛逼基於SpringBoot + Mybatis + Vue的程式碼生成器Spring BootMyBatisVue
- 裝逼技巧:程式設計師如何用程式碼罵別人sb,以及證明自己牛逼!程式設計師
- 超牛逼的效能監控神器!快速定位線上問題
- 這也能考慮到?TCP 有點牛逼TCP
- 我試圖透過這篇文章告訴你,這行原始碼有多牛逼。原始碼
- 太極限了,JDK的這個BUG都能被我踩到JDK
- 告訴你 Redis 是一個牛逼貨Redis
- 如何設計一個牛逼的API介面API
- 今日頭條這麼牛逼,用了什麼技術?
- 這個牛逼的IDE外掛,讓你輕鬆檢測程式碼安全漏洞,一鍵修復,核心引擎已開源IDE
- 2020 年最牛逼的 10 門程式語言
- 讓程式設計師不再苦逼的神器(上)程式設計師
- 讓程式設計師不再苦逼的神器(下)程式設計師
- 這8個工具,用來做python應用程式開發太合適了!Python
- java併發程式設計系列:牛逼的AQS(上)Java程式設計AQS
- java併發程式設計系列:牛逼的AQS(下)Java程式設計AQS
- 如何設計一個牛逼的訊息佇列?佇列
- 太牛了,這個待辦事項清單工具讓你告別加班。
- 牛逼!位元組 IDE 來了!!IDE
- 牛逼!50.3K Star!一個自動將螢幕截圖轉換為程式碼的開源工具開源工具
- 9月27日雲棲精選夜讀|Java11正式釋出,這8個逆天新特性教你寫出更牛逼的程式碼Java
- CSS3繪製太極圖程式碼例項詳解CSSS3
- 程式碼review,程式碼審查,用upsource 也太方便了吧View
- Git Message能引起極度舒適?Git
- 受不了了,learnku社群這個評論框我真是服了
- Mac應用通知太煩人,用這個方法就對了!Mac
- K8s小白?應用部署太難?看這篇就夠了!K8S
- 好用不卡,這些外掛和配置讓你的 Webstorm 更牛逼!WebORM
- 微信小程式上傳圖片至七牛微信小程式
- 你還在用 Prometheus 監控 K8S?快試試這 6 個更牛逼的替代方案PrometheusK8S
- hyperf-throttle-requests,一個超牛的 PHP 限流神器PHP