程式設計師是如何做到隨時隨地編程的?

2020-02-07   指尖上的代碼

編程不是一個容易的過程,特別是在你必須同時兼顧快速和不產生bug的時候。把你的注意力僅僅集中在編程上本身就是一個相當困難的挑戰,而這篇文章講述更多的是關於如何在任何地方使用網際網路和瀏覽器,對代碼進行最終的設置!

當我們在Hexometer.com工作的時候需要頻繁地出差,有時候需要花費幾天的時間在一台不同的電腦上密集地檢查我們的工具,這就是為什麼我需要這樣的一個環境,它能夠讓我在任何一個有網際網路連接和瀏覽器的電腦上支持相同的編程流程。

可能這篇文章不適用一個電腦迷或低成本旅行者,因為他們工作的地方通常很廉價,而且網際網路連接狀況很差。

而且正如你可以想像,要想使你的編程環境設置完全獨立於任何筆記本電腦,唯一的方法就是使用一個具備網際網路連接的基本的瀏覽器,因為你清楚,現在的瀏覽器無處不在!


這樣做有什麼好處?

我一直都使用最強大的超級本,以便加快我的編程過程,並儘量讓代碼編譯時間縮短到可以無視。你可以想像這是很昂貴的,而且筆記本電腦的強勁功率可能會影響它的電池的使用時間。

通常情況下,MacBook筆記本電腦可以保證在不充電的情況下連續編程大約4-5小時,這已經相當不錯了。但是,有時候你無法保證一直使用同樣的筆記本電腦,而且隨著時間的推移,你會發現你越來越難切換到新的筆記本電腦上工作。

老實說,在過去的4-5年里,我基本上都是使用MacBook筆記本電腦來完成我的編程項目,主要原因是我喜歡它們的構建方式,而且喜歡專門為它們優化過的作業系統。

然而,當我開始在遠程伺服器編程,並使用開發運維一體化流程時,我意識到將整個編程過程轉移到伺服器上帶來的下列優點將遠遠大於這種編程方式的缺點。

高達每秒1GB的網際網路連接速度!這個好處太大了,特別是如果你需要經常安裝遠程包或拉/推Docker容器的時候。

強大的CPU核心,而且沒有任何用戶介面的開銷。你可以為你的編程伺服器配備功能強大的至強(Xeon)CPU或i7 CPU內核,價格遠比作為筆記本電腦包購買它們要便宜。

而且最重要的區別是,所有的筆記本作業系統都要消耗3-5%的CPU來保持桌面用戶介面的運行,如果你要在它上面使用功能強大的集成開發環境(IDE)的話,它消耗電池更快。

可以讓你遠程訪問本地主機(localhost)!作為一名WEB開發人員,我過去經常運行一個名為ngrock的工具來構建一些遠程隧道,以便向客戶展示一些實驗項目。

現在它變得非常有用,甚至可以讓我使用專門的域名連接到我的開發環境,可以直接從一個地方進行編程和在線共享一些東西!

非常靈活的磁碟空間。我幾乎一直在使用帶有256 GB大小的固態硬碟(SSD)的筆記本電腦,但是如果能夠動態地擴展它的大小,正好可以讓我能夠直接在我的編程環境中運行一些良好的數據收集測試。

以上列出了這種編程方式的所有好處,可以把它視為在瀏覽器編程中或者在使用瀏覽器的設備中進行編程的一種獎勵。

瀏覽器中的VS Code

有幾種工具、服務可以在瀏覽器中像運行編輯器一樣來運行VS Code。然而,有一個開源項目,它通過使用基於WebSocket的伺服器通信來替換Electron框架的功能,以便在瀏覽器中執行精確的VS Code複製,它甚至可以通過移動熱點與3G網絡協同工作。然而,有時當網際網路連接不好時,你會非常失望,但這是不使用獨立的筆記本電腦的代價。

不管怎樣,你得到的好處比你一開始想像的要多得多。

Code-Server項目是基於VS Code的,但是它們改變了與Electron桌面應用程式的所有連接部分,使之能在瀏覽器 + Websocket連接的環境中工作,在伺服器端運行服務並將結果傳遞給瀏覽器。

Code-Server可以在所有平台上工作,包括MAC、Windows和Linux,但在大多數情況下,我確信你會使用Linux作為伺服器作業系統來運行code-server.。

#Runningcode-serverfromCLI~#code-server--authnone--port8888

上面的命令將啟動code-server,現在你可以通過導航到http://localhost:8888,從瀏覽器上來訪問VS Code的功能。

如果你打算長期運行它,並希望在它上面管理所有項目,那麼你可以讓它作為後台服務運行,比如說和SystemD一起使用(它正是我現在使用的)。

在我的例子中,基本的SystemD配置如下:

[Unit]Description=CodeServer[Service]PIDFile=/tmp/coder-99.pidUser=coderGroup=coderRestart=alwaysKillSignal=SIGQUITWorkingDirectory=/home/coderExecStart=/usr/local/bin/code-server--authnone--port8080[Install]WantedBy=multi-user.target

如你所見,我沒有直接在code-server上使用任何公共埠,這是因為它實際上可以在沒有任何訪問控制的情況下公開我的所有項目(它們的密碼不是那麼安全)。

為了使它更安全,我在它前面使用Nginx,並進行特定的配置,讓它只起到一個代理伺服器的作用,然後設置HTTP身份驗證和一些SSL配置信息,以確保它只能通過VPN訪問。

它真的能在任何設備上工作嗎?

對這個問題的答案,我會說「是的!」

一些設備可能有Unicode輸入問題,因為它們使用了一些字符轉換服務,就像大多數安卓設備一樣。但是對於蘋果設備,它工作得很好!即使在iPad Pro上,你也能感受到通過VSCode終端編程和訪問伺服器命令行介面(CLI)的樂趣。

我曾在Acer Chromebook 14筆記本電腦上工作過一段時間,它是一款非常低功耗的設備,對我來說它工作得很好,因為大多數自動完成和服務處理工作都是在伺服器端完成的,而不是在本地筆記本電腦的CPU上進行的。

這個方式並非對每個人都是一個挑戰,如果你大部分要編程的應用程式不需要桌面視圖或特定作業系統,那麼你就可以使用。我甚至使用這種方式用Expo進行React Native的編程工作,這個過程涵蓋了所有與作業系統無關的流程。

希望你能像我現在這樣不再依賴於一台筆記本電腦,而享受在瀏覽器中編程的樂趣!