老曹眼中的開發(fā)學(xué)習(xí)環(huán)境
“工其事必先利其器”,對于一個(gè)全棧而言,一個(gè)與自己匹配的開發(fā)和學(xué)習(xí)環(huán)境,能夠極大地提高個(gè)人的工作效率,很多時(shí)候都可以做到事半而功倍。環(huán)境也是一個(gè)外延很廣的概念,這里我所涉及的包括硬件環(huán)境,集成開發(fā)環(huán)境與工具,數(shù)據(jù)庫環(huán)境,操作系統(tǒng)環(huán)境,溝通工具和個(gè)人筆記本。
硬件環(huán)境
MacBook Pro 是硬件環(huán)境的不二之選。
筆記本電腦,至少要有i5 CPU、8G以上內(nèi)存,SSD之類的,硬盤也最好在256G以上,在這樣的要求下,MacBook無疑是很好的選擇,和MacBook達(dá)到相同配置、具有相同續(xù)航水平的其它筆記本電腦基本都在和MacBook一樣的價(jià)位。但考慮到MacBook的工業(yè)設(shè)計(jì)水平,MacBook確實(shí)成了合適的選擇。
做iOS開發(fā),那mac更是必須的。盡管xcode沒有vs好用,但是搞iOS開發(fā),默認(rèn)就得用它,不要談什么黑蘋果,那是得不償失的事。
更重要的是,Mac OS是類Unix操作系統(tǒng),并且POSIX compliant,這意味著大量針對Linux編寫的程序可以在OS X直接編譯。也就是說,Mac下寫C、C++的系統(tǒng)程序一般情況下也可以直接移植到Linux下運(yùn)行。在類Unix操作系統(tǒng)里,只有g(shù)cc和clang可以選擇,Linux選擇的是gcc,OS X和FreeBSD選擇的是clang。gcc的好處是在Linux下有最好的兼容性,系統(tǒng)內(nèi)核、系統(tǒng)的library都是gcc編譯的。clang相比gcc的優(yōu)勢大概就是編譯速度,和對標(biāo)準(zhǔn)支持的速度。clang的編譯速度是比gcc要快一些的,而且通常給出的錯(cuò)誤信息更友好一些。在標(biāo)準(zhǔn)的支持方面,gcc 4.9才完全支持C++11標(biāo)準(zhǔn)(regex的bug到4.9才修正),而clang 3.3就已經(jīng)完全支持C++11標(biāo)準(zhǔn),clang 3.4已經(jīng)完全支持C++14標(biāo)準(zhǔn)。gcc相比于clang也有一個(gè)優(yōu)勢,在有些情況下gcc的優(yōu)化器比clang更好。
除了Unix哲學(xué),如果看youtube上的各類技術(shù)分享,常見到的也是mac,記得前幾年Hacker News上有個(gè)問卷,黑客們都用的什么操作系統(tǒng),mac OS X 是排第一位的,甚至超越了linux 操作系統(tǒng)為用戶提供編程環(huán)境。
總之,Mac比Linux更舒服的界面,比Windows更簡潔的環(huán)境。
工具與IDE
Mac 上自帶了很多工具,使開發(fā)和學(xué)習(xí)更加便捷。比如自帶Git,可以直接從Terminal啟動Git服務(wù)。最好會使用命令行操作,如果實(shí)在不習(xí)慣的話,SourceTree 應(yīng)該是目前比較好用的Git圖形化界面了。Mac 自帶了Vi和Emacs,自帶Apache服務(wù)器,配置wordpress做自己的博客是分分鐘的事情。Mac 還自帶了對Python、PHP等語言的支持,macport和homebrew 對應(yīng)用的安裝下載也很方便。
XCode
Xcode 是運(yùn)行在操作系統(tǒng)Mac OS X上的集成開發(fā)工具(IDE),由蘋果公司開發(fā)。Xcode是開發(fā)OS X 和 iOS 應(yīng)用程序的最快捷的方式。Xcode 具有統(tǒng)一的用戶界面設(shè)計(jì),編碼、測試、調(diào)試都在一個(gè)簡單的窗口內(nèi)完成。
Xcode 8能夠方便創(chuàng)建漂亮的iPhone、iPad、Mac、Apple Watch和Apple TV 應(yīng)用程序,是更快的一個(gè)IDE版本,使用編輯器擴(kuò)展可以完全定制化自我的編碼經(jīng)驗(yàn)。新的運(yùn)行時(shí)可以提醒隱藏的bug并部分指出內(nèi)存泄漏,這都是蠻不錯(cuò)的。
Eclipse
Eclipse 是一個(gè)開源的基于Java的可擴(kuò)展開發(fā)平臺,本身只是一個(gè)框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具等。
Eclipse 是個(gè)通用的集成開發(fā)環(huán)境,是應(yīng)用開發(fā)的必備免費(fèi)工具。不僅是java,通過插件形式可以行程各種開發(fā)語言的IDE,例如PyDev 用于Python開發(fā)的,ADT 支持Android 開發(fā),遺憾的是,近來google停止了對ADT的支持。
Android Studio
Android Studio 是一個(gè)Android集成開發(fā)工具,基于IntelliJ IDEA. 類似 Eclipse ADT,Android Studio 提供了集成的 Android 開發(fā)工具用于開發(fā)和調(diào)試。
Android Studio基于Gradle的構(gòu)建方式與ADT有著較大的不同,編譯和運(yùn)行的速度都有了明顯的改善,是android 領(lǐng)域的XCode。
sublime Text
對于腳本話語言來說,尤其是Javascript,sublime 作為輕量級IDE還是不錯(cuò)的。Sublime Text 支持多種編程語言的語法高亮、擁有優(yōu)秀的代碼自動完成功能,還擁有代碼片段的功能,可以將常用的代碼片段保存起來,在需要時(shí)隨時(shí)調(diào)用。
Sublime 支持 VIM 模式,可以使用Vim模式下的多數(shù)命令。支持宏,播放錄制的操作或者命令。
數(shù)據(jù)庫
數(shù)據(jù)庫是全棧必須掌握的技能,數(shù)據(jù)庫的種類很多,除了關(guān)系型數(shù)據(jù)庫之外,還有各種的NoSQL, 擁有一個(gè)本地的數(shù)據(jù)庫環(huán)境,可以更方便地開發(fā)調(diào)試。
MySQL
MySQL 最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在 WEB 應(yīng)用方面MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。 MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。
MySQL也有mac客戶端---Sequel Pro ,可以輕松的進(jìn)行MySQL的各種操作,關(guān)鍵還是免費(fèi)的,有意思的是,可以通過一層SSH隧道進(jìn)行MySQL的連接。
Redis
Redis 是一個(gè)高性能的key-value數(shù)據(jù)庫。 redis的出現(xiàn),很大程度補(bǔ)償了memcached這類key/value存儲的不足,在部 分場合可以對關(guān)系數(shù)據(jù)庫起到很好的補(bǔ)充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。
在Mac環(huán)境中,使用 sudo brew install redis 命令可以一鍵安裝Redis。
MongoDB
MongoDB是一個(gè)基于分布式文件存儲的數(shù)據(jù)庫。由C++語言編寫,可以為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。MongoDB 是NoSQL當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是他支持的查詢語言非常強(qiáng)大,其語法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。
在Mac環(huán)境中,使用 sudo brew install mongodb命令可以一鍵安裝mongodb。
另外,Mac自帶了SQLite數(shù)據(jù)庫,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個(gè)相對小的C庫中。它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了,在iOS和Android 開發(fā)時(shí)是必備的選項(xiàng)。
多環(huán)境與多系統(tǒng)
對于多環(huán)境和多操作系統(tǒng)而言,不建議多分區(qū)的方式,用虛擬機(jī)比較好。VirtualBox號稱是最強(qiáng)的免費(fèi)虛擬機(jī)軟件,它不僅具有豐富的特色,而且性能也很優(yōu)異!它簡單易用,可虛擬的系統(tǒng)包括Windows系列、Mac OS X、Linux、OpenBSD、Solaris、IBM OS2甚至Android等操作系統(tǒng)。
可以方便地在VirtualBox上安裝并且運(yùn)行上述的這些操作系統(tǒng),與同性質(zhì)的VMware相比,VirtualBox獨(dú)到之處包括遠(yuǎn)端桌面協(xié)定(RDP)、iSCSI及USB的支持,VirtualBox在客戶端操作系統(tǒng)上已可以支持USB 2.0的硬件裝置了。
溝通與網(wǎng)絡(luò)
溝通與協(xié)作是必須的,微信和QQ成了首選的工具,Mac上都有對應(yīng)的客戶端。
對于團(tuán)隊(duì)溝通而言,Trello 是個(gè)不錯(cuò)的云服務(wù),國內(nèi)的worktile 也很贊,其它的工具就因人而異了。近年來比較火爆的slack,最看好的是它web hook 特性,是工具化中的一種趨勢。
對于上網(wǎng)查看資料而言,chrome 和mac 自帶的safari 都很好。對開發(fā)者而言,更喜歡google,如果自己不購買VPN的話,lantern 就是一個(gè)無奈的選擇了。
email 更是必備,有了VPN, gmail就可以作為一個(gè)郵件服務(wù)的候選。
國內(nèi)的郵件服務(wù)商,163郵箱非常不錯(cuò),當(dāng)然QQ郵箱也是勉強(qiáng)可用的。
隨手筆記
“好記性不如爛筆頭”,不論是網(wǎng)絡(luò)上的知識,還是自己的感悟都最好紀(jì)錄下來,Evernote 是我的最愛。
EverNote界面類似于微軟的OneNote,以超強(qiáng)的內(nèi)容捕捉,實(shí)時(shí)搜索,標(biāo)簽分類,支持大數(shù)據(jù)庫,圖像內(nèi)文字的識別和手寫圖形的識別而著稱。EverNote支持多終端同步,可以隨時(shí)隨地訪問自己的筆記,使在地鐵上梳理心得變成了一段快樂的時(shí)光。
紀(jì)錄的內(nèi)容多了,就需要使用云盤,百度云盤不錯(cuò)。但是如果服務(wù)商關(guān)了服務(wù),導(dǎo)出的成本還是蠻高的,360云盤的關(guān)閉估計(jì)倒霉了一批人。保險(xiǎn)起見,還是要有自己的大型移動硬盤作為備份工具。
通過隨手筆記和云盤等存儲,逐步整理的所學(xué)所用,就可以初步形成自己的知識體系,完成個(gè)人的知識管理了。開發(fā)學(xué)習(xí)環(huán)境中還包括很多的工具集, 以后再逐一補(bǔ)充吧。
【本文來自51CTO專欄作者老曹的原創(chuàng)文章,作者微信公眾號:喔家ArchiSelf,id:wrieless-com】