那些開源庫你是怎麼知道的?
最近看到很多人在用一種點雲庫PCL,就了解了一下,看到這個庫本身是基於眾多其他開源庫開發的,如boost, eigen, flann, Qhull, VTK, google test......,突然有個疑問,這些庫他們是怎麼知道的,又怎麼選擇的要用這幾個庫呢?然後 覺得自己很渺小....... 平時看到朋友最多也就知道那幾個耳熟能詳的boost, Opencv, TBB,並如救命稻草一樣,深入學習使用,今天看了這麼多庫,突然覺得很迷茫。。。
拿英文google一下你要解決的問題而已。沒什麼複雜的。。。
1. 看新聞。比如 Hacker News 之類的。有好的開源項目一般會有提到。
2. 訂閱相關領域的郵件/周刊。比如我比較關注 Python ,我就訂了 Pycoder"s Weekly, Python Weekly,每期都會介紹一些好的開源項目。中文的《碼農周刊》不錯
3. 關注相關領域的郵件列表/社區。一般來說好的項目都會有人討論,作者也會第一時間到這些地方宣傳自己的庫。比如 reddit 之類的。4. 關注代碼託管網站(github, codeBucket)的趨勢。比如 Github 上就有 explore 可以看到最近最熱的項目。5. 社交網路(twitter, facebook, 微博, Google+),關注一些大號。時不時會有些消息。6. 關注相關領域每年的會議。比如PyCon啦,PyData,DroidCon之類的。一般來說每年這些社區都會開會,網上能找到視頻。時不時的會介紹一些最新的牛掰項目。
7. 和朋友們交流。8. 自行搜索。9. 大牛的博客/個人網站。一般不定期會有推薦。這都不是突然間都知道的,而是根據需求。當你需要一個功能的時候,要麼自己寫,要麼搜搜看別人有沒有寫過。不過不是當時就要做決定。你可以先寫,之後在用別的替換,或者先用別人的庫,不滿足需求的話用自己的換掉。這都沒問題。
至於為什麼要選那幾個庫,也是根據需求來。比如boost裡面就有test,不一定要google test。所以這裡得根據需要來測試兩個庫,從中挑一個。
既然他們不是一天之內決定的,你也大可不必一天之內擔憂。最通用的方法是搜索。
每次當你要開發一個什麼東西之前,都去網上搜一下,看看有沒有開源庫可以直接用。比如你要做點雲重建,那麼搜索的時候一定是能發現PCL的;比如你要做非線性優化,你一定會在搜索結果中發現wiki上的那個非線性優化開源庫列表;比如你要做機器學習,你一定會搜索到mloss,等等等。
不要重複發明輪子,這樣才是最高效的工作方式。當然,做作業除外,同時還要注意一下各種協議。
其實,沒有必要關注什麼大牛博客和論壇,善用搜索就足夠了。
哦對了,我說的搜索是google,不保證baidu可以搜得到。說說我自己的幾個渠道吧1、郵件列表/論壇:看別人的討論中就會看到很多沒聽說過的東西,然後略微百科一下,記住就好了
2、開源中國 - 找到您想要的開源項目,分享和交流,這裡的新聞資訊裡面專門有關於開源項目版本升級的,每次提到的各種開源工具,都會大致看一下,順便看一下評論裡面別人的評價,和提到的別的東西
3、博客:廣泛的閱讀了很多領域的大牛博客其實總結起來就是擴展知識面,多看罷了。口碑是傳播的最好方式,好口碑=好用!!
github啊,github上有個專門的系列倉庫叫 awesome
1. 看書2. 大牛介紹3. 知乎4. github5. 開源中國...
題主稍微多個心就可以了,像你說的opencv庫,其實你看下文檔,或者編譯選項就知道了,光並行優化就有好多種tbb,cuda等。記得裡面有個選項是用特別好玩的小並行庫,直接搜是搜不到的。而且像題主pcl中提到的eigen,flann.opencv也是有的。
推薦閱讀:
※請問有哪些適合網路編程初學者的C語言方面的網路編程開源項目,希望學習後能參與到該項目中?
※Android平台有哪些開源的社交APP可供研究?
※那麼多人在github上傳代碼,不會塞滿嗎?
※有哪些適合學生參與的 C++,網路編程方面的開源項目?