興趣是最好的老師,HelloGitHub 就是幫你找到興趣!javascript
分享 GitHub 上有趣、入門級的開源項目。html
這是一個面向編程新手、熱愛編程、對開源社區感興趣 人羣的月刊,月刊的內容包括:各類編程語言的項目、讓生活變得更美好的工具、書籍、學習筆記、教程等,這些開源項目大多都是很是容易上手,並且很是 Cool。主要是但願你們能動手用起來,加入到開源社區中。前端
在瀏覽、參與這些項目的過程當中,你將學習到更多編程知識、提升編程技巧、找到編程的樂趣。vue
🎉 最後 HelloGitHub 這個項目就誕生了 🎉java
如下爲本期內容|每月 28 號發佈最新一期|官網python
一、csredis:Redis.io 官方推薦的 C# 語言 redis 客戶端庫,支持 redis 2.8-5.0 版本的全部命令,且包含哨兵、集羣等功能。該項目從 2016 年開始持續迭代更新,實現了低門檻、高性能和分區等高級玩法。該項目做者:2881099,在 GitHub 上開源了不少有趣、實用的 C# 項目。歡迎你們關注他,同時參與到他的項目中,爲開源社區貢獻本身的一份力量。示例代碼:ios
var csredis = new CSRedis.CSRedisClient("127.0.0.1:6379,password=123"); RedisHelper.Initialization(csredis); RedisHelper.Set("test1", "123123", 60); RedisHelper.Get("test1"); //...函數名與 redis-cli 的命令相同 //普通訂閱 RedisHelper.Subscribe( ("chan1", msg => Console.WriteLine(msg.Body)), ("chan2", msg => Console.WriteLine(msg.Body))); //管道操做 RedisHelper.StartPipe().Set("a", "1").Get("a").EndPipe();
🔙 返回目錄 🔙git
二、fmt:這是一個開源的 C++ 格式庫。它能夠做爲 (s)printf 和 iostreams 的安全和快速替代品,也是 C++ 20 中 std::format 的一個實現。它的格式化字符串語法相似於 Python 中的 str.format
,支持用戶本身定義的類型,還比 printf 和 iostreams 的常見標準庫實現更快!並且 fmt 還很是安全,格式字符串中的錯誤能夠在編譯時報告,還能夠防止緩衝區溢出錯誤。示例代碼:github
fmt::print("Hello, {}!", "world"); // 類 Python 的語法風格 fmt::printf("Hello, %s!", "world");
三、awesome-modern-cpp:Wow Awesome!你想將 modern cpp 運用自如嗎?那就來看 Awesome-modern-cpp 吧!這裏列出了一些有關現代 C++ 的最佳實踐、書籍、會議、談話、播客、博客、網站、各類各樣的庫以及一些工具,讓你不由 Wow Awesome,這就是你獨享的 momentweb
四、simple-computer:一個用 Go 語言模擬簡單計算機 CPU 的項目。只有 Go 語言的函數,沒有硬件的模塊,從與非門直到一臺能作加減運算和顯示的迷你虛擬計算機。這些是計算機最底層、基礎的東西,雖然是使用 Go 語言模擬,而不是用硬件打造而。可是計算機的基本結構,運行的基本原理都顯示的很是清楚。對於新手,既能瞭解 CPU 原理,也會發現編程語言除了能寫軟件以外的其餘有趣用處。安裝命令:
make # 構建項目 make test # 測試 ./bin/simulator -bin _programs/brush.bin # 運行虛擬機
五、gridstudio:一個後端採用 Go 語言的電子表格 Web 應用程序,支持 Python 編程語言處理數據,結果運行便可見。它旨在提供一個集成的工做流程,用於加載、清理、操做和可視化數據。可在線使用,對於用 Python 等處理數據的數據工程師而言,就是一款神器。以前就很好奇石墨文檔怎麼作的,這下能夠學習下了,電子表單是一個比較複雜的問題,該項目有不少能夠學習的地方。安裝:
git clone https://github.com/ricklamers/gridstudio # clone 項目 cd gridstudio && ./run.sh # 直接運行 # 而後訪問 http://127.0.0.1:8080 用戶名:admin 密碼:admin
六、go-github:谷歌出品的 GitHub API Go 語言版本。若是你須要作一個 GiHhub 相關的產品後端,這個能夠省去不少功夫,並且還能夠學習谷歌工程師寫的 Go 項目、設計接口的思路。示例代碼:
import "github.com/google/go-github/v27/github" // 啓用的 go module (GO111MODULE=on 或者不在 GOPATH 裏) import "github.com/google/go-github/github" // 沒啓用 go module 時 client := github.NewClient(nil) // 獲取用戶 "willnorris" 所在的全部組織 orgs, _, err := client.Organizations.List(context.Background(), "willnorris", nil)
七、vhr:一個先後端分離的人力資源管理系統。該項目採用 SpringBoot + Vue 架構,這兩個都是近些年很流行的框架。該項目涉及的場景不少,可做爲全棧工程師的入門實踐
八、SmartSwipe:一個側滑處理框架,而不是具體某種側滑效果的實現。其內部封裝十幾種側滑效果,包括側滑返回、側滑刪除、百葉窗、開門等效果,總有那麼幾款能讓你眼前一亮。示例代碼:
//爲控件添加仿MIUI的彈性拉伸效果: // 當縱向不能滾動(或滾動到頂/底)時,若繼續拖動,則 UI 呈現彈性拉伸效果,釋放後平滑恢復 SmartSwipe.wrap(view) .addConsumer(new StretchConsumer()) .enableVertical(); SmartSwipe.wrap(view) .addConsumer(new StretchConsumer()) .enableVertical() //仿 MIUI 拉伸效果的方向爲:上下 2 個方向 .addConsumer(new SpaceConsumer()) .enableHorizontal() //仿 iOS 彈性留白效果的方向爲:左右 2 個方向 ; SmartSwipeBack.activityBezierBack(application, null); //仿小米 MIUI 系統的貝塞爾曲線返回效果 SmartSwipeBack.activityStayBack(application, null); //仿手機 QQ 的手勢滑動返回 SmartSwipeBack.activitySlidingBack(application, null); //仿微信帶聯動效果的透明側滑返回 SmartSwipeBack.activityDoorBack(application, null); //側滑開門樣式關閉 activity SmartSwipeBack.activityShuttersBack(application, null); //側滑百葉窗樣式關閉 activity //xxxMode 第二個參數爲 false,表示工做方向爲縱向:下拉刷新&上拉加載更多 //若是第二個參數設置爲 true,則表示工做方向爲橫向:右拉刷新&左拉加載更多 SmartSwipeRefresh.drawerMode(view, false).setDataLoader(loader); SmartSwipeRefresh.behindMode(view, false).setDataLoader(loader); SmartSwipeRefresh.scaleMode(view, false).setDataLoader(loader); SmartSwipeRefresh.translateMode(view, false).setDataLoader(loader);
九、SoloPi:一個不須要鏈接電腦、非侵入式的 Android 自動化工具。公測版擁有錄製回放、性能測試、一機多控三項主要功能,能爲測試開發人員節省寶貴時間。安卓版本多、終端型號多,一個成熟安卓應用的上線須要進行大量測試,而不少測試都是屬於重複操做,經過此工具能夠極大簡化測試人員的工做量
十、XUI:一個簡潔而優雅的 Android 原生 UI 框架。讓原生 Android 開發人員也能像 web 開發者同樣,擁有方便的 UI 庫。該項目適用於有必定 Android 開發經驗的開發者
十一、chart.xkcd:手繪風格的 JS 圖表庫。手繪風格的設計給人一種很可愛的感受,看了這些圖表你會發現數據也能夠以萌萌噠的形式展現
十二、fullPage.js:經過調用 fullPage 可輕易建立全屏滾動網站(也稱爲單頁網站)。 fullPage 可建立全屏滾動網站,同時也可在網站中添加橫向滾動條。適合快速搭建全屏滾動或者擁有視覺差的站點,使得網站看上去更加高端、大氣、上檔次,示例代碼:
<div id="fullpage"> <div class="section">Some section</div> <div class="section">Some section</div> <div class="section">Some section</div> <div class="section">Some section</div> </div>
1三、PicGo:基於 electron-vue 實現的桌面圖牀工具。該工具能夠幫助你高效、很是方便地上傳圖片到網絡圖牀,包括了微博圖牀、七牛圖牀、騰訊雲 COS、又拍雲、GitHub、SM.MS、阿里雲OSS、Imgur 等。只要使用快捷鍵或拖動就能夠上傳,並且上傳成功的圖片連接會自動複製到你的剪貼板裏,支持 macOS、Windows、Linux 三大系統
1四、Valine:一款快速、簡潔且高效的無後端的 JS 評論插件。該庫使用 LeanCloud API 存儲數據,且設計美觀、體積小、支持 Markdown 和 Emoji。對於使用 Hexo、Hugo 等靜態網頁博客主來講,它簡直就是福音。經過簡單的幾步就能夠快速的給本身的博客增長評論功能,你還不快來試試
1五、webtorrent:基於 JS 的流媒體種子客戶端。不須要等待種子中的內容下載完畢,就能夠立刻播放種子中的內容,且有 Windows、Mac 和 Linux 操做系統的桌面版客戶端。還在爲等待下載而苦惱嗎?有了它便可複製種子連接觀看對應的視頻內容
1六、Jtyoui:幫助學習 Python 的代碼集合包。包含 20 多個簡單易用的經常使用方法和數學函數,大多數方法在 100 行左右,並且每個類的使用都有對應的測試用例。很是方便初學者學習,也能夠幫助有經驗的開發者快速實現一些功能。示例代碼:
# 這是一個陽曆轉化農曆的程序 from jtyoui.plunar import SC if __name__ == '__main__': lun = SC(year=2018, month=1, day=2) #陽曆轉農曆 print(lun.y) # 農曆的年,中文字符 二零一九 print(lun.year) # 農曆的年,阿拉伯數字 2019 ... print(lun) # 二零一九年 七月 十四 星期四 無
1七、bullet:一個支持終端輸入和菜單選擇的 Python 庫。可讓使用者在終端上用方向鍵移動、單選、複選、密碼輸入等,並且支持定製化格式和顏色。看下面的效果圖你就知道它是幹什麼
1八、DaPy:一個易用的數據分析 Python 庫。經過提供合理的數據結構和豐富的機器學習模型,它能幫你快速地實現數據分析思路。簡單來講,DaPy 能幫助你完成數據挖掘任務中的每一步,導入導出數據、預處理數據、特徵工程、模型訓練和模型評估等
1九、rest-client:一個 Ruby 的 HTTP 客戶端庫。已經有累計 10 萬人在使用,該庫使用方便、API 設計優雅、支持經常使用的 HTTP 方法、文件下載、設置代理等。每一個方法基本都有示例代碼:
require 'rest_client' RestClient.get 'http://example.com/resource' RestClient.get 'http://example.com/resource', {:params => {:id => 50, 'foo' => 'bar'}} RestClient.get 'https://user:password@example.com/private/resource', {:accept => :json} RestClient.post 'http://example.com/resource', :param1 => 'one', :nested => { :param2 => 'two' } RestClient.post "http://example.com/resource", { 'x' => 1 }.to_json, :content_type => :json, :accept => :json RestClient.delete 'http://example.com/resource' response = RestClient.get 'http://example.com/resource' response.code ➔ 200 response.cookies ➔ {"Foo"=>"BAR", "QUUX"=>"QUUUUX"} response.headers ➔ {:content_type=>"text/html; charset=utf-8", :cache_control=>"private" ... response.to_str ➔ \n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n \"http://www.w3.org/TR/html4/strict.dtd\">\n\n<html .... RestClient.post( url, { :transfer => { :path => '/foo/bar', :owner => 'that_guy', :group => 'those_guys' }, :upload => { :file => File.new(path, 'rb') } })
20、overcommit:一款可配置的 git hook 管理工具。git hook 是 git 的強大功能,當觸發某一個 git 的事件,例如:add、commit、push 等操做時,會觸發執行對應事件的附加操做(hook)。能夠用來檢測代碼質量、commit 描述風格、控制代碼質量等。overcommit 就是能讓你不寫一行代碼(配置不算代碼),來自定義 hook 要執行的操做。它使用簡單、文檔詳盡、例子衆多、社區活躍,值得一試
2一、AppearancesSwitcher:能夠在 macOS 通知中心上快速切換「亮/暗」主題的小工具
2二、awesome-adb:ADB 用法集合(Android Debug Bridge)
2三、git-tips:Git 經常使用命令集合
2四、OnJava8:《On Java 8》中文版又名《Java 編程思想》
2五、numpy-cn:這是 NumPy 中文翻譯文檔。適合任何想了解學習 NumPy 的人,還能夠看成手冊查閱。若是你是新手朋友,推薦閱讀基礎文章中的:理解 Numpy、NumPy 簡單入門教程、建立 Numpy 數組的不一樣方式,參考文章裏會不按期更新國內外優秀的 Numpy 相關的內容。若是你想徒手實現神經網絡能夠參看 NumPy 與 神經網絡、 NumPy 實現 DNC、RNN 和 LSTM 神經網絡算法
2六、Awesome_Multimodal_Research:該項目是收錄多模態相關研究的一個精選列表,正在持續更新中。現實世界中的信息一般以不一樣的模態出現。例如,圖像一般與標籤和文本解釋聯繫在一塊兒;文本包含圖像以便更清楚地表達文章的主要思想。不一樣的模態由迥異的統計特性刻畫。例如,圖像一般表示爲特徵提取器的像素強度或輸出,而文本則表示爲離散的詞向量。因爲不一樣信息資源的統計特性不一樣,發現不一樣模態之間的關係是很是重要的
2七、rasa:一個專門爲了多輪人機對話而生的框架。主要包含 Rasa Core、Rasa NLU 兩大模塊,提供了對話場景、意圖理解、實體抽取等功能。用戶只需按照平臺的語料格式構建本身的語料,即可以方便的進行意圖理解和實體抽取的訓練。目前使用 Rasa 平臺的用戶也逐漸多了起來,除了官方文檔網上也容易的找到相關的項目,便於學習和上手
2八、Non-local_pytorch:今天推薦的這個項目是 Nonlocal Net 的第三方實現,實現框架爲 PyTorch。項目簡明易懂,可是尚未在大型公開數據集上測試過性能。可是附帶了一個 MNIST 的樣例,能夠供讀者參考。Nonlocal Net 是大神 Kaiming He 研究組在圖像領域引入 Attention 機制的一篇論文。Nonlocal Net 的提出,引領了一波在圖像領域運用注意力機制的浪潮,最近兩年該方向論文層出不窮。Facebook 也開源了一個 Nonlocal Net 在視頻分類中的項目,可是框架基於他們維護的 caffe2,讀者能夠根據自身實際狀況進行瀏覽閱讀
看完了,還不夠? <科技愛好者週刊>
。還不過癮,那就看看天天更新的前端日報吧 <今日前端>
點擊分享發現的有趣項目