《HelloGitHub》第 41 期


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

簡介

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

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

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

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

🎉 最后 HelloGitHub 這個項目就誕生了 🎉

目錄

內容

以下為本期內容|每個月 28 號發布最新一期|官網

C# 項目

1、csredis:Redis.io 官方推薦的 C# 語言 redis 客戶端庫,支持 redis 2.8-5.0 版本的所有命令,且包含哨兵、集群等功能。該項目從 2016 年開始持續迭代更新,實現了低門檻、高性能和分區等高級玩法。該項目作者:2881099,在 GitHub 上開源了很多有趣、實用的 C# 項目。歡迎大家關注他,同時參與到他的項目中,為開源社區貢獻自己的一份力量。示例代碼:

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++ 項目

2、fmt:這是一個開源的 C++ 格式庫。它可以作為 (s)printf 和 iostreams 的安全和快速替代品,也是 C++ 20 中 std::format 的一個實現。它的格式化字符串語法類似於 Python 中的 str.format,支持用戶自己定義的類型,還比 printf 和 iostreams 的常見標准庫實現更快!而且 fmt 還非常安全,格式字符串中的錯誤可以在編譯時報告,還可以防止緩沖區溢出錯誤。示例代碼:

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

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

🔙 返回目錄 🔙


Go 項目

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

make # 構建項目
make test # 測試
./bin/simulator -bin _programs/brush.bin # 運行虛擬機

5、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

6、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 項目

7、vhr:一個前后端分離的人力資源管理系統。該項目采用 SpringBoot + Vue 架構,這兩個都是近些年很流行的框架。該項目涉及的場景很多,可作為全棧工程師的入門實踐

8、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);

9、SoloPi:一個不需要連接電腦、非侵入式的 Android 自動化工具。公測版擁有錄制回放、性能測試、一機多控三項主要功能,能為測試開發人員節省寶貴時間。安卓版本多、終端型號多,一個成熟安卓應用的上線需要進行大量測試,而很多測試都是屬於重復操作,通過此工具可以極大簡化測試人員的工作量

10、XUI:一個簡潔而優雅的 Android 原生 UI 框架。讓原生 Android 開發人員也能像 web 開發者一樣,擁有方便的 UI 庫。該項目適用於有一定 Android 開發經驗的開發者

🔙 返回目錄 🔙


JavaScript 項目

11、chart.xkcd:手繪風格的 JS 圖表庫。手繪風格的設計給人一種很可愛的感覺,看了這些圖表你會發現數據也可以以萌萌噠的形式展示

12、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>

13、PicGo:基於 electron-vue 實現的桌面圖床工具。該工具可以幫助你高效、非常方便地上傳圖片到網絡圖床,包括了微博圖床、七牛圖床、騰訊雲 COS、又拍雲、GitHub、SM.MS、阿里雲OSS、Imgur 等。只要使用快捷鍵或拖動就可以上傳,而且上傳成功的圖片鏈接會自動復制到你的剪貼板里,支持 macOS、Windows、Linux 三大系統

14、Valine:一款快速、簡潔且高效的無后端的 JS 評論插件。該庫使用 LeanCloud API 存儲數據,且設計美觀、體積小、支持 Markdown 和 Emoji。對於使用 Hexo、Hugo 等靜態網頁博客主來說,它簡直就是福音。通過簡單的幾步就可以快速的給自己的博客增加評論功能,你還不快來試試

15、webtorrent:基於 JS 的流媒體種子客戶端。不需要等待種子中的內容下載完畢,就可以馬上播放種子中的內容,且有 Windows、Mac 和 Linux 操作系統的桌面版客戶端。還在為等待下載而苦惱嗎?有了它即可復制種子鏈接觀看對應的視頻內容

🔙 返回目錄 🔙


Python 項目

16、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)  # 二零一九年 七月 十四 星期四 無

17、bullet:一個支持終端輸入和菜單選擇的 Python 庫。可以讓使用者在終端上用方向鍵移動、單選、復選、密碼輸入等,而且支持定制化格式和顏色。看下面的效果圖你就知道它是干什么

18、DaPy:一個易用的數據分析 Python 庫。通過提供合理的數據結構和豐富的機器學習模型,它能幫你快速地實現數據分析思路。簡單來說,DaPy 能幫助你完成數據挖掘任務中的每一步,導入導出數據、預處理數據、特征工程、模型訓練和模型評估等

🔙 返回目錄 🔙


Ruby 項目

19、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 項目

21、AppearancesSwitcher:可以在 macOS 通知中心上快速切換“亮/暗”主題的小工具

🔙 返回目錄 🔙


其它

22、awesome-adb:ADB 用法集合(Android Debug Bridge)

23、git-tips:Git 常用命令集合

🔙 返回目錄 🔙


開源書籍

24、OnJava8:《On Java 8》中文版又名《Java 編程思想》

🔙 返回目錄 🔙


機器學習

25、numpy-cn:這是 NumPy 中文翻譯文檔。適合任何想了解學習 NumPy 的人,還可以當作手冊查閱。如果你是新手朋友,推薦閱讀基礎文章中的:理解 Numpy、NumPy 簡單入門教程、創建 Numpy 數組的不同方式,參考文章里會不定期更新國內外優秀的 Numpy 相關的內容。如果你想徒手實現神經網絡可以參看 NumPy 與 神經網絡、 NumPy 實現 DNC、RNN 和 LSTM 神經網絡算法

26、Awesome_Multimodal_Research:該項目是收錄多模態相關研究的一個精選列表,正在持續更新中。現實世界中的信息通常以不同的模態出現。例如,圖像通常與標簽和文本解釋聯系在一起;文本包含圖像以便更清楚地表達文章的主要思想。不同的模態由迥異的統計特性刻畫。例如,圖像通常表示為特征提取器的像素強度或輸出,而文本則表示為離散的詞向量。由於不同信息資源的統計特性不同,發現不同模態之間的關系是非常重要的

27、rasa:一個專門為了多輪人機對話而生的框架。主要包含 Rasa Core、Rasa NLU 兩大模塊,提供了對話場景、意圖理解、實體抽取等功能。用戶只需按照平台的語料格式構建自己的語料,便可以方便的進行意圖理解和實體抽取的訓練。目前使用 Rasa 平台的用戶也逐漸多了起來,除了官方文檔網上也容易的找到相關的項目,便於學習和上手

28、Non-local_pytorch:今天推薦的這個項目是 Nonlocal Net 的第三方實現,實現框架為 PyTorch。項目簡明易懂,但是還沒有在大型公開數據集上測試過性能。但是附帶了一個 MNIST 的樣例,可以供讀者參考。Nonlocal Net 是大神 Kaiming He 研究組在圖像領域引入 Attention 機制的一篇論文。Nonlocal Net 的提出,引領了一波在圖像領域運用注意力機制的浪潮,最近兩年該方向論文層出不窮。Facebook 也開源了一個 Nonlocal Net 在視頻分類中的項目,但是框架基於他們維護的 caffe2,讀者可以根據自身實際情況進行瀏覽閱讀

🔙 返回目錄 🔙


『上一期』 | 反饋和建議 | 『下一期』


看完了,還不夠? <科技愛好者周刊> 。還不過癮,那就看看每天更新的前端日報吧 <今日前端>
點擊分享發現的有趣項目


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM