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