“優秀工具”挑戰!如何在“云”上順利工作?
本文轉載自公眾號“讀芯術”(ID:AI_Discovery)。
軟件行業發展迅速,開發人員想要跟緊步伐變得非常困難。即便你天賦異稟,工作努力又動力十足,如果達不到當前行業發展趨勢的標準,仍然可能節奏錯亂。
越來越多的人開始對軟件開發感興趣,更多的工具和軟件應用程序隨之進入市場,以促進開發更高的編碼標準,加速開發時間。擁有必要的工具和良好的互聯網連接,開發就容易多了。但由于有數不勝數的工具,選擇“最佳工具”便成為一個挑戰。
隨著云技術的出現,大多數基于產品的公司已經開始將代碼庫遷移到云上。那么要想在云上順利工作,我們需要知道些什么呢?
90%的公共云計算服務運行Linux。稱職的軟件開發人員必須熟練使用Linux系統。當從GCloud、AWS或Microsoft Azure等服務平臺創建自己的Linux虛擬機時,通常會無法訪問圖形用戶界面(GUI),必須使用Linux終端來操作和管理服務器。大多數軟件公司都鼓勵團隊合作,這促成了對Git的需求。
現在,學習Linux終于有了合理的理由。從豐富多彩的、交互式的、有吸引力的Windows操作系統轉向Linux對大多數人來說可能是一場噩夢。但如果能熬過前幾周,最終的回報可能會卓有成效。在體驗了Linux的所有功能后,你再也不會想用Windows,當然,除非你是游戲玩家。
因此,我決定學習這些要點,嘗試建立一個有效的鎖定。通過瀏覽互聯網,我發現了Crio.Do在主辦了九月份的#IBelieveInDoing,其中就包括Linux和Git!
整個挑戰分為三個字節(每個字節是一組里程碑,每個里程碑都集中于一個特定主題):Linux Basics1、Linux Basics2、GitBasics1。
一開始是要多有趣有多有趣的開端,人們不到一個小時就看到了Linux的力量。活動主持人向我們展示了一些使用Linux可以做的有趣的事情,比如運行慶典腳本,使用netcat創建雙向聊天應用程序,以及如何使用終端運行推特!
Linux Byte 1
開始入門(圖片版權:Crio.Do 入門)
啟動這個字節時最大的挑戰是訪問終端,因為大部分人都不能訪問終端。Crio考慮到并不是每個人在機器/互聯網資源中都有足夠的計算能力來為Linux設置一個Virtual Box或Dual Boot,因此找到了gitpod形式的替代方案。
這個字節首先介紹了一些基本命令,如:
- pwd-打印工作目錄。
- ls-列出目錄的內容。
- cd-更改工作目錄。
這一字節以非常具有相互作用的方式向前推進,教我們正確使用命令。每一個里程碑最后都有一系列問題,這些問題很有創造性,引人深思,會確保我們的實驗水平和谷歌搜索能力足夠好才能回答。每個里程碑都有一個叫做“好奇貓”的部分,其中有一些額外的問題或任務以供對新事物感興趣的人思考。
最后一個里程碑是有史以來最有趣的。它包括對常見記錄文件的數據分析,如Hadoop、Openssh和Apache記錄。這些是基本技能,將給行業帶來新的重大開端,因為大多數人只有在開始為組織工作時才會學習這樣的分析技術。
工程師天資聰穎、富有動力,但這些聰明人很懶惰(總得有人說出來!)。因此,如果一個工程師每天都要做一項任務,他就會把精力投入到讓這個過程自動化中,然后就可以自由活動了。我們學會了在Linux中使用chron和chrontab實現重復任務的自動化。
Git Byte 1
在職業生涯的開始階段,每個開發人員都遇到過這種情況:
- 離不開舊代碼,因為你破解了Ctrl + Z以外的新代碼。
- 對要使用的代碼版本感到困惑,因為你的工作區有像project-backup、project-backup-final和project-ok-this-is-final-code這樣的目錄。
- 必須在不破壞整個代碼的情況下整合團隊成員所編寫的代碼。
- 跟蹤某個變化的原因及其作者。
版本控制系統可以在這些情況下提供幫助。系統通過記錄文件的快照來跟蹤文件更改。可查看以前的快照,也可以將代碼恢復到以前的快照。這讓我們在項目工作中不用擔心把錯誤帶到部分或完整工作版本中,也不用擔心無法返回。
Git就是系統其中之一,可能還是最普及的一種。這個字節告訴我們如何使用SSH或HTTPS設置git,兩者各有千秋。我們通過命令來研究git的整個工作結構,這些命令能初始化repo、克隆repo、在repo的本地副本中做一些更改并將其推到遠程服務器上等等。這個字節確保你在內存中永久獲得“git委托”。
在獲得Linux和Git的超能力之后,你想到的第一個寵物項目是什么?在Linux中,你可以跟蹤文件最后被修改的時間,Git可以作為更新版本的存儲。你可以建立屬于自己的簡單版谷歌驅動器!
圖源:Crio.Do
在研究了一些可以用來設計制作自己的谷歌驅動器的選擇后,筆者發現了兩種實現的方法。
(1) 名為inotifywait的工具可以使用Linux的inotify接口有效地等待文件更改。它適用于等待框架腳本對文件的更改。它可以在事件發生時退出,也可以在事件發生時繼續執行和輸出事件。所以筆者的想法是在指令中創建一個使用inotifywait的腳本,以便文件考慮更改時,需要執行一個過程,即將文件添加到git登錄并成功地推送它。
方法1的源代碼(請注意我在提交時添加了“日期”,這并非必要,但是順便添加一些元數據來區分提交是很好的編程實踐。)
(2) 創建腳本來檢查特定文件的內方法1的源代碼(請注意我在提交時添加了“日期”,這并非必要,但是順便添加一些元數據來區分提交是很好的編程實踐。)方法1的源代碼(請注意我在提交時添加了“日期”,這并非必要,但是順便添加一些元數據來區分提交是很好的編程實踐。)容是否已被修改,以及修改后將新內容推送到遠程服務器。為了使這個過程自動化,可以將腳本添加到chrontab。(代表chron表格,它是運行的chron作業的集合,其中chron作業是按照分配給它的每個調度運行的守護進程,例如:每5分鐘、每小時、每星期等等。)
這些是筆者為了實現簡單工作版本的驅動器提出的想法。此外,筆者在一個特定的文件上添加了檢查,這可以擴展到監測目錄或整個系統。還可以有很多方法來做同樣的事。
學會了這些技能之后,筆者在Linux中嘗試了一些炫酷的技能:
(1) 在終端觀看星球大戰電影
- sudo apt-get install telnet
- telnet towel.blinkenlights.nl
(2) 快速獲得終端上ASCII圖像的原型
(3) 可以用“!!”運算符和根權限(Sudo)以管理員身份運行前面的命令!我總是想運行一些命令但忘了使用“sudo”,這個技巧可以省去很多繁瑣的回退和間距。例如:
- apt-get install <something>sudo !! -> Same as sudo apt-get install <something>
挑戰結束時,你應該能夠克服對終端和Git的恐懼。但有時并非如此,因為技術非常不穩定,如果不經常使用就會忘記使用方法。所以去網上或生活中找個小例子,開始大膽地應用這些技能吧。
這個版本對筆者來說改變了游戲規則,希望其他接受這個挑戰的開發人員也有同感。投入的每一分鐘都是值得的,我也希望有更多年輕開發者能參與到未來版本的開發中來,以獲得更好的職業生涯。