《HelloGitHub》第 41 期

興趣是最好的老師,HelloGitHub 就是幫你找到興趣!javascript

簡介

分享 GitHub 上有趣、入門級的開源項目。html

這是一個面向編程新手熱愛編程對開源社區感興趣 人羣的月刊,月刊的內容包括:各類編程語言的項目讓生活變得更美好的工具書籍、學習筆記、教程等,這些開源項目大多都是很是容易上手,並且很是 Cool。主要是但願你們能動手用起來,加入到開源社區中。前端

  • 會編程的能夠貢獻代碼
  • 不會編程的能夠反饋使用這些工具中的 Bug
  • 幫着宣傳你以爲優秀的項目
  • Star 項目⭐️

在瀏覽、參與這些項目的過程當中,你將學習到更多編程知識提升編程技巧找到編程的樂趣vue

🎉 最後 HelloGitHub 這個項目就誕生了 🎉java


如下爲本期內容|每月 28 號發佈最新一期|點擊查看往期內容python

C# 項目

一、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();
複製代碼

C++ 項目

二、fmt:這是一個開源的 C++ 格式庫。它能夠做爲 (s)printf 和 iostreams 的安全和快速替代品,也是 C++ 20 中 std::format 的一個實現。它的格式化字符串語法相似於 Python 中的 str.format,支持用戶本身定義的類型,還比 printf 和 iostreams 的常見標準庫實現更快!並且 fmt 還很是安全,格式字符串中的錯誤能夠在編譯時報告,還能夠防止緩衝區溢出錯誤。示例代碼:c++

fmt::print("Hello, {}!", "world");  // 類 Python 的語法風格
fmt::printf("Hello, %s!", "world"); 
複製代碼

三、awesome-modern-cpp:Wow Awesome!你想將 modern cpp 運用自如嗎?那就來看 Awesome-modern-cpp 吧!這裏列出了一些有關現代 C++ 的最佳實踐、書籍、會議、談話、播客、博客、網站、各類各樣的庫以及一些工具,讓你不由 Wow Awesome,這就是你獨享的 momentgit

Go 項目

四、simple-computer:一個用 Go 語言模擬簡單計算機 CPU 的項目。只有 Go 語言的函數,沒有硬件的模塊,從與非門直到一臺能作加減運算和顯示的迷你虛擬計算機。這些是計算機最底層、基礎的東西,雖然是使用 Go 語言模擬,而不是用硬件打造而。可是計算機的基本結構,運行的基本原理都顯示的很是清楚。對於新手,既能瞭解 CPU 原理,也會發現編程語言除了能寫軟件以外的其餘有趣用處。安裝命令:github

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)
複製代碼

Java 項目

七、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 開發經驗的開發者

JavaScript 項目

十一、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 操做系統的桌面版客戶端。還在爲等待下載而苦惱嗎?有了它便可複製種子連接觀看對應的視頻內容

Python 項目

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 能幫助你完成數據挖掘任務中的每一步,導入導出數據、預處理數據、特徵工程、模型訓練和模型評估等

Ruby 項目

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 要執行的操做。它使用簡單、文檔詳盡、例子衆多、社區活躍,值得一試

Swift 項目

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,讀者能夠根據自身實際狀況進行瀏覽閱讀


「看完了,還不夠?<往期內容> | 還不過癮,那就看看天天更新的前端日報吧 <今日前端>
若是你發現了好玩、有意義的開源項目 點擊這裏 分享你以爲有趣的項目。

公衆號

最近開了公衆號,後續公衆號會針對月刊推薦過的內容精選、梳理,作成系列的文章發佈。月刊也會同時發佈在公衆號,便於第一時間閱讀。

歡迎關注 HelloGitHub 公衆號,獲取更多開源項目的資料和內容。

聲明

知識共享許可協議
本做品採用 署名-非商業性使用-禁止演繹 4.0 國際 進行許可。

相關文章
相關標籤/搜索