好奇那些抱著電腦就可以隨時隨地工作的人,他們的電腦為什么看起來比我們強(qiáng)大那么多?本文就來告訴大家,軟件工程師是如何做到能在各個地方隨時工作的——下文將為小伙伴揭秘,大家可以學(xué)起來哦。
作者 | Tigran Bayburtsyan
譯者 | 蘇本如,責(zé)編 | maozz
出品 | CSDN(ID:CSDNnews)
以下為譯文:
編程不是一個容易的過程,特別是在你必須同時兼顧快速和不產(chǎn)生bug的時候。把你的注意力僅僅集中在編程上本身就是一個相當(dāng)困難的挑戰(zhàn),而這篇文章講述更多的是關(guān)于如何在任何地方使用互聯(lián)網(wǎng)和瀏覽器,對代碼進(jìn)行最終的設(shè)置!
當(dāng)我們在Hexometer工作的時候需要頻繁地出差,有時候需要花費(fèi)幾天的時間在一臺不同的電腦上密集地檢查我們的工具,這就是為什么我需要這樣的一個環(huán)境,它能夠讓我在任何一個有互聯(lián)網(wǎng)連接和瀏覽器的電腦上支持相同的編程流程。
可能這篇文章不適用一個電腦迷或低成本旅行者,因?yàn)樗麄児ぷ鞯牡胤酵ǔ:芰畠r(jià),而且互聯(lián)網(wǎng)連接狀況很差。
而且正如你可以想象,要想使你的編程環(huán)境設(shè)置完全獨(dú)立于任何筆記本電腦,唯一的方法就是使用一個具備互聯(lián)網(wǎng)連接的基本的瀏覽器,因?yàn)槟闱宄F(xiàn)在的瀏覽器無處不在!
這樣做有什么好處?
我一直都使用最強(qiáng)大的超級本,以便加快我的編程過程,并盡量讓代碼編譯時間縮短到可以無視。你可以想象這是很昂貴的,而且筆記本電腦的強(qiáng)勁功率可能會影響它的電池的使用時間。
通常情況下,MacBook筆記本電腦可以保證在不充電的情況下連續(xù)編程大約4-5小時,這已經(jīng)相當(dāng)不錯了。但是,有時候你無法保證一直使用同樣的筆記本電腦,而且隨著時間的推移,你會發(fā)現(xiàn)你越來越難切換到新的筆記本電腦上工作。
老實(shí)說,在過去的4-5年里,我基本上都是使用MacBook筆記本電腦來完成我的編程項(xiàng)目,主要原因是我喜歡它們的構(gòu)建方式,而且喜歡專門為它們優(yōu)化過的操作系統(tǒng)。
然而,當(dāng)我開始在遠(yuǎn)程服務(wù)器編程,并使用開發(fā)運(yùn)維一體化流程時,我意識到將整個編程過程轉(zhuǎn)移到服務(wù)器上帶來的下列優(yōu)點(diǎn)將遠(yuǎn)遠(yuǎn)大于這種編程方式的缺點(diǎn)。
高達(dá)每秒1GB的互聯(lián)網(wǎng)連接速度!這個好處太大了,特別是如果你需要經(jīng)常安裝遠(yuǎn)程包或拉/推Docker容器的時候。
強(qiáng)大的CPU核心,而且沒有任何用戶界面的開銷。你可以為你的編程服務(wù)器配備功能強(qiáng)大的至強(qiáng)(Xeon)CPU或i7 CPU內(nèi)核,價(jià)格遠(yuǎn)比作為筆記本電腦包購買它們要便宜。
而且最重要的區(qū)別是,所有的筆記本操作系統(tǒng)都要消耗3-5%的CPU來保持桌面用戶界面的運(yùn)行,如果你要在它上面使用功能強(qiáng)大的集成開發(fā)環(huán)境(IDE)的話,它消耗電池更快。
可以讓你遠(yuǎn)程訪問本地主機(jī)(localhost)!作為一名WEB開發(fā)人員,我過去經(jīng)常運(yùn)行一個名為ngrock的工具來構(gòu)建一些遠(yuǎn)程隧道,以便向客戶展示一些實(shí)驗(yàn)項(xiàng)目。
現(xiàn)在它變得非常有用,甚至可以讓我使用專門的域名連接到我的開發(fā)環(huán)境,可以直接從一個地方進(jìn)行編程和在線共享一些東西!
非常靈活的磁盤空間。我?guī)缀跻恢痹谑褂脦в?56 GB大小的固態(tài)硬盤(SSD)的筆記本電腦,但是如果能夠動態(tài)地?cái)U(kuò)展它的大小,正好可以讓我能夠直接在我的編程環(huán)境中運(yùn)行一些良好的數(shù)據(jù)收集測試。
以上列出了這種編程方式的所有好處,可以把它視為在瀏覽器編程中或者在使用瀏覽器的設(shè)備中進(jìn)行編程的一種獎勵。
瀏覽器中的VS Code
有幾種工具、服務(wù)可以在瀏覽器中像運(yùn)行編輯器一樣來運(yùn)行VS Code。然而,有一個開源項(xiàng)目,它通過使用基于WebSocket的服務(wù)器通信來替換Electron框架的功能,以便在瀏覽器中執(zhí)行精確的VS Code復(fù)制,它甚至可以通過移動熱點(diǎn)與3G網(wǎng)絡(luò)協(xié)同工作。然而,有時當(dāng)互聯(lián)網(wǎng)連接不好時,你會非常失望,但這是不使用獨(dú)立的筆記本電腦的代價(jià)。
不管怎樣,你得到的好處比你一開始想象的要多得多。
Code-Server項(xiàng)目是基于VS Code的,但是它們改變了與Electron桌面應(yīng)用程序的所有連接部分,使之能在瀏覽器 + Websocket連接的環(huán)境中工作,在服務(wù)器端運(yùn)行服務(wù)并將結(jié)果傳遞給瀏覽器。
Code-Server可以在所有平臺上工作,包括MAC、Windows和Linux,但在大多數(shù)情況下,我確信你會使用Linux作為服務(wù)器操作系統(tǒng)來運(yùn)行code-server.。
# Running code-server from CLI
~ # code-server --auth none --port 8888
上面的命令將啟動code-server,現(xiàn)在你可以通過導(dǎo)航到localhost:8888,從瀏覽器上來訪問VS Code的功能。
如果你打算長期運(yùn)行它,并希望在它上面管理所有項(xiàng)目,那么你可以讓它作為后臺服務(wù)運(yùn)行,比如說和SystemD一起使用(它正是我現(xiàn)在使用的)。
在我的例子中,基本的SystemD配置如下:
[Unit]
Deion=Code Server
[Service]
PIDFile=/tmp/coder- 99.pid
User=coder
Group=coder
Restart=always
KillSignal=SIGQUIT
WorkingDirectory=/home/coder
ExecStart=/usr/local/bin/code-server --auth none --port 8080
[Install]
WantedBy=multi-user.target
如你所見,我沒有直接在code-server上使用任何公共端口,這是因?yàn)樗鼘?shí)際上可以在沒有任何訪問控制的情況下公開我的所有項(xiàng)目(它們的密碼不是那么安全)。
為了使它更安全,我在它前面使用Nginx,并進(jìn)行特定的配置,讓它只起到一個代理服務(wù)器的作用,然后設(shè)置HTTP身份驗(yàn)證和一些SSL配置信息,以確保它只能通過VPN訪問。
它真的能在任何設(shè)備上工作嗎?
對這個問題的答案,我會說“是的!”
一些設(shè)備可能有Unicode輸入問題,因?yàn)樗鼈兪褂昧艘恍┳址D(zhuǎn)換服務(wù),就像大多數(shù)安卓設(shè)備一樣。但是對于蘋果設(shè)備,它工作得很好!即使在iPad Pro上,你也能感受到通過VSCode終端編程和訪問服務(wù)器命令行界面(CLI)的樂趣。
我曾在Acer Chromebook 14筆記本電腦上工作過一段時間,它是一款非常低功耗的設(shè)備,對我來說它工作得很好,因?yàn)榇蠖鄶?shù)自動完成和服務(wù)處理工作都是在服務(wù)器端完成的,而不是在本地筆記本電腦的CPU上進(jìn)行的。
這個方式并非對每個人都是一個挑戰(zhàn),如果你大部分要編程的應(yīng)用程序不需要桌面視圖或特定操作系統(tǒng),那么你就可以使用。我甚至使用這種方式用Expo進(jìn)行React Native的編程工作,這個過程涵蓋了所有與操作系統(tǒng)無關(guān)的流程。
希望你能像我現(xiàn)在這樣不再依賴于一臺筆記本電腦,而享受在瀏覽器中編程的樂趣!
原文:https://hackernoon/my-laptop-independent-workflow-as-a-software-engineer-kk19320n
【END】


