《HelloGitHub》第 41 期

  • 2019 年 10 月 3 日
  • 筆記

興趣是最好的老師,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:[email protected]/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">nn<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,讀者可以根據自身實際情況進行瀏覽閱讀

? 返回目錄 ?

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


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