我的 Linux 一萬小時
這不是一篇雞湯文,因為我並沒有在使用 Linux 一萬小時後成為 Linux 達人,甚至在很多方面,我連新手都算不上。我走的這些彎路能篇成一本很有參考價值的反面教材,下面,我來講講我用 Linux 都折騰了啥。
Gentoo
在 Ubuntu 還沒有出生的年代,各種發行版百花齊放。以包管理機制區分的話,可以分為兩派:直接安裝二進位制可執行檔案的和下載原始碼自行編譯的,Gentoo 算是後者中一個比較知名的專案。為了使硬體發揮出更好的效能,Gentoo 的 emerge 命令提供了不少編譯引數讓使用者調教。從核心到日常用的所有工具,都需要用包管理工具自動下載原始碼後編譯,這對於像我這樣的 Linux 新人來說的確能學少不少東西。而且每次編譯滿螢幕日誌飛滾非常酷,改用綠色文字就有種駭客帝國的即視感。
不過,這個機制有個顯而易見的缺點,有時候做一些很小的事情都需要花上好長時間編譯大量的依賴包。而像我這樣的強迫症,總覺得下一次編譯換一個引數也許可以使程式執行得更快,以至於很多常用工具我都編譯了不下三遍。另外編譯核心和格式化硬碟重灌 Gentoo 的事真是數也數不清了。最慘的是,有次同事讓我幫忙裝一臺 1U,他用 Debian 可以分分鐘把 LAMP 搞定上架,而我硬是想用 Gentoo 壓榨效能。我編譯了一個下午,反覆編譯核心浪費了大量時間沒能把兩塊網路卡搞定,最後無奈的讓他上了 Debian。
Gentoo 給我的教訓是,大量零散的編譯調優時間累積在一起會消耗很多寶貴的青春和電費,它們帶來的收益微乎其微,不如直接買更好的硬體。選一個有成熟包管理機制,社群活躍的發行版能節省大把精力把真正要做的事做好。這也是後來我只用 Debian 的一個主要原因。
桌面美化,WM
曾經每天看 DistroWatch.com,除了瞭解各種發行版的動向,還希望看到一個介面更加美觀的發行版,因為感覺大部分發行版的開發者審美太非主流。我用了很長時間尚且還看得過去的 XFCE 和 FVWM-Crystal,也用過臃腫浮誇的 KDE 和 Gnome。試了不少佈局和配置,下載過很多 GTK 皮膚和圖示庫,玩過酷炫的 Compiz,調教過中文字型的顯示效果。但不管怎麼改都感覺哪兒不完美,直到後來接觸到同事 Apple iBook G4 上的 Mac 系統,便掉進了在 Linux 上模仿 Mac 系統介面的深淵。這個 Flickr 相簿 裡有不少那些年的痕跡。
這同樣是一件沒有什麼收益的事情,2006 年後我放棄治療,改用 Mac 系統。
wine
周圍的人問我為什麼不用 Windows 這種主流的作業系統,倒喜歡用小眾的作業系統的時候,我都只是一笑而過,後來我用 Mac 的時候也常常遇到這樣的問題。有意思的是,現在這個問題在大部分網際網路公司裡變成了:『為什麼你不用 Mac?』
我一開始用 Linux 作為開發主力機的確發現有諸多不便。比如同事給我發個 Microsoft Office 生成的檔案;比如做網頁要在 Internet Explorer 裡除錯;比如要上 QQ。不過我並沒有感覺到 Linux 不主流,有很多線上論壇有大量熱心的 Linux 使用者能幫你解決各種技術問題。而同一時期那些 Windows 相關的社群全在共享盜版軟體。
在還沒有虛擬機器技術的時候,很長一段時間裡我是用 GRUB 啟動多系統的。後來漸漸地用 wine 這個工具跑起了大部分 Windows 下的程式,接著完全乾掉 Windows,再後來因為要流暢地跑魔獸世界內測不得不裝回 Windows。
生產工具海選
對於開發人員來說,一個非常費神的事情是開發工具,尤其是文字編輯器。我用遍了市面上幾乎所有收費或免費的編輯器,都沒有找到一款像 Windows 下的 EditPlus 那樣好用的產品。主流的推薦是 Vim 和 Emacs,我試著去學好 Vim,但當時並沒有多少好用的外掛,加上自己不熟悉各種快捷鍵,文字編輯效率並不高。幸好後來改用 Mac,很長一段時間被 TextMate 拯救了。
在我的 title 還是前端開發工程師和 Flash 開發工程師的日子裡,在 Linux 下繪圖也不是一件輕鬆的差事,我一直用不慣 GIMP 和 InkScape。有試著用 wine 跑過 Flash 的 IDE 和 Macromedia Fireworks。為了能在 Linux 下愉快地開發 Flash 程式,我還把整個專案改用 MTASC 編譯。我很後悔沒有早點明白,在 Linux 下繪圖這件事就是自討苦吃,同一時期在 Windows 下的各種繪圖體驗會愉快很多。
運維
因為會使用 Linux,所以在開發過程中時不時地會承擔一些簡單的運維任務。為什麼只是簡單的,因為更復雜的任務會由那些有 RedHat 證書的專業運維負責。在我這些年的工作經歷中,我曾跑過十多次機房,管理過一些 1U 伺服器,但都只停留在裝系統和配置服務環境的階段,並沒有機會接觸那些需要大量伺服器攜同工作的任務。而這些安裝和配置的任務,在 Debian 下又過份地簡單,apt-get install 裝好的東西一般不用再多折騰就能很好地使用。所以我沒能在運維這一塊更加深入,只是變成一個初級熟練工而已。
前幾年因為虛擬幣的泡沫,我開始有動力自學配置管理工具,學了一點點 Chef 和 Puppet,感覺略複雜個人用不上,所以學了相對簡單好用且不需要 master 伺服器的 Ansible。有一段時間我控制近 50 臺虛擬機器挖虛擬幣,最高的一個月有 6000 元的收入。
隨後我試著把一些日常開發中經常需要反覆做的事寫成 Ansible Playbook,於是便有了ios-dev-playbook。期間為了和牆做鬥爭,從 vpn-deploy-playbook 這個倉庫中也學到不少實用技能。但是,很多線上服務其實比某些開源的程式做得好,有時候自己運維往往省不下幾個錢。舉個例子,Git 倉庫,我曾經很喜歡自己在 Linode 虛擬器上搭建 GitLab 或者 Gogs,但是後來發現 GitHub 無論是在社群工具鏈整合度以及易用性上都甩開其它競品好幾條街。
另外,這幾年,為了滿足各種創業公司對高生產效率和低成本的需求,IaaS、PaaS、SaaS 以及 Docker 開始流行,創業公司不再需要專職的運維,開發人員寫幾個配置檔案,在網頁裡點幾下滑鼠就能把一個完整的系統弄上線。
所以,我掌握的這些簡單的 Linux 運維的技能,幾乎已經被淘汰完了。
我試著去學 Goolge Kubernetes 和 AWS Lambda,但感覺業餘精力不夠,也沒有專案可以實踐。
總結
如果我晚十年出生,或者早點用上 Mac OS,或者考了一張 RedHat 證書,應該就不會這麼折騰了。
相關文章
- 對菜鳥開發者的忠告:花一萬個小時練習 Coding,不要浪費一萬小時無謂地 Debugging
- 一萬小時Android躲過的“坑-CSDN公開課-專題視訊課程Android
- 我認識Linux的小羞愧歷史Linux
- ChatGPT一個錯誤讓我們損失一萬多美元ChatGPT
- 別人工作8小時,我只需1小時!這些寶藏網站我都替你收集好了!網站
- 【Sass/SCSS】我花4小時整理了的Sass的函式CSS函式
- ChatGPT 之每月一萬刀ChatGPT
- Scrapy八小時快速入門第一小時:安裝,建立與執行我們的Scrapy
- Ubuntu——每日小貼士:Linux上的時光機UbuntuLinux
- 【譯】我每週在構建Gradle時是如何節約出5小時的Gradle
- 十億級流量下,我與Redis時延小突刺的戰鬥史Redis
- 爆肝10小時後,我看到了疊紙的“無限”
- linux date 昨天 _取前一個小時Linux
- Linux計算一天前的日期,一個小時前的時間等Linux
- 『研究發現“一萬小時定律”並沒想象中那麼重要』今日資料行業日報(2019.08.28)行業
- 我的linux桌面Linux
- Linux系統時間同步方法小結(NTP)Linux
- 《英靈神殿》是如何讓不玩生存遊戲的我沉迷100小時的遊戲
- 我完成了10000小時開發3D引擎3D
- 我從1萬小時程式設計中學到了什麼程式設計
- 我的Rails時間到了AI
- 當我寫程式碼時 我寫的是
- 拯救者 Linux:我是如何給我的團隊引入 Linux 的Linux
- crontab 每隔 1 小時 2 小時的執行 job 寫法
- 我與小程式的故事以及小程式框架選型框架
- 我的第一個微信小程式 (Discuz!! + 微信小程式)微信小程式
- 我的第一個微信小程式 (Discuz!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + 微信小程式)微信小程式
- 我常用的Linux命令Linux
- 我的常用Linux命令Linux
- 我的Linux書架Linux
- 我的Linux 之路(轉)Linux
- 一小時的時間,上手 WebpackWeb
- 兩個寶藏|關於我在github上衝浪時的一個小技巧。Github
- 我是如何學習小程式的
- 小程式實現微信 【我的】介面
- 課時19:函式:我的地盤聽我的函式
- 一萬字詳解 Redis Cluster Gossip 協議RedisGo協議
- Linux之我做系統效能調優時常用的一些命令Linux