《HelloGitHub》第 38 期

削微寒發表於2019-05-28

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

《HelloGitHub》第 38 期

簡介

分享 GitHub 上有趣、入門級的開源專案。

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

  • 會程式設計的可以貢獻程式碼
  • 不會程式設計的可以反饋使用這些工具中的 Bug
  • 幫著宣傳你覺得優秀的專案
  • Star 專案⭐️

在瀏覽、參與這些專案的過程中,你將學習到更多程式設計知識提高程式設計技巧找到程式設計的樂趣

? 最後 HelloGitHub 這個專案就誕生了 ?


以下為本期內容|每個月 28 號釋出最新一期|點選檢視往期內容

C++ 專案

1、Terminal:微軟開源的一個全新、現代、功能豐富、高效的 Windows 終端應用程式。它支援 Windows 命令列社群最常用的許多命令,還支援選項卡、富文字、全球化、可配置性、主題和樣式等功能。一直以來 Windows 不被開發者青睞的原因之一就是終端不好用,現在有了這個我都想買個 Windows 系統的電腦了(確定不是打遊戲?)

《HelloGitHub》第 38 期

Go 專案

2、golang-developer-roadmap:成為 Go 開發者的學習路線圖,中文版

3、scheduler:Go 語言實現的作業排程工具包。適用於需要任務排程的場景,能夠讓初學者學到 time、reflect 等標準庫的用法,中文文件

4、nic:一個易用的 HTTP Request 包。它封裝了 Go 的 HTTP 標準庫,提供了簡潔優雅的 API。可以更輕鬆的傳送HTTP 請求,解決了 Go 標準庫自定義 HTTP 請求,操作 headers、cookies 時繁瑣的步驟。類似於 Python 的 Requests 和 urllib 的區別。示例程式碼:

resp, err := nic.Get("http://example.com", nil)
if err != nil {
    log.Fatal(err.Error())
}
fmt.Println(resp.Text)

5、redis-tui:炫酷的 redis 命令列圖形介面工具

《HelloGitHub》第 38 期

6、gameboy.live:Gameboy 模擬器,還可以通過 socket 遠端玩

# 下載
git clone https://github.com/HFO4/gameboy.live.git
# 執行
cd gameboy.live
go build -o gbdotlive main.go

# 命令說明
Usage of gbdotlive:
  -G    Play specific game in Fyne GUI mode  # 用 Fyne GUI 模式玩遊戲,會彈出一個視窗
  -c config # 配置檔案路徑
        Set the game option list config file path
  -d    Use Debugger in GUI mode # GUI 的 debug 模式
  -f FPS
        Set the FPS in GUI mode (default 60) # FPS 設定
  -g    Play specific game in GUI mode (default true) # 是否預設啟動 GUI
  -h    This help # 顯示幫助
  -m    Turn on sound in GUI mode (default true) # GUI 模式下是否有聲音
  -p port
        Set the port for the cloud-gaming server (default 1989) # 預設監聽埠,可以用 Telnet 玩
  -r ROM # 遊戲 ROM 的路徑
        Set ROM file path to be played in GUI mode
  -s    Start a cloud-gaming server # 啟動伺服器,用 Telnet 玩

《HelloGitHub》第 38 期

7、CovenantSQL:具有區塊鏈特性的去中心化 SQL 關係型資料庫。可以提供 DBaaS 服務,去中心化儲存保證使用者隱私。中文文件,MacOS 系統可以通過 brew install cql 直接安裝

《HelloGitHub》第 38 期

8、diving:基於 dive 分析 docker 映象,介面化展示了映象每層的變動(增加、修改、刪除等)、使用者層資料大小等資訊。便捷獲取映象資訊和每層映象內容的檔案樹,可以方便地瀏覽映象資訊。對於需要優化映象體積時非常方便

《HelloGitHub》第 38 期

Java 專案

9、rhizobia_J:陌陌開源的 Java 安全編碼規範和 SDK

10、generator-jhipster:用於在幾秒鐘內建立 Spring Boot + Angular/React 專案的開源應用程式生成器(腳手架)。它可以自動化生成一個完整 Web 應用或微服務架構,加快專案的開發效率。特點和技術棧:

  • 基於 Spring Boot 框架的服務端,具備高效能和高可用的 Java 技術棧
  • 基於 Angular、React、Bootstrap 的時尚、現代、移動優先的前端
  • 基於 JHipster Registry、Netflix OSS、ELK 堆疊和 Docker 的強大的微服務架構
  • 使用 Yeoman、Webpack 和 Maven/Gradle 構建應用程式的強大工作流程

11、Gloading:深度解耦的 Android 載入元件,特點:

  • 深度解耦 App 中全域性載入中、載入失敗及空資料檢視
  • 分離全域性載入狀態檢視的實現和使用
  • 不需要在每個頁面的佈局檔案中額外新增載入狀態檢視
  • 可用於 Activity,也可用於為某個 View 顯示載入狀態等
Gloading.initDefault(new GlobalAdapter());
Gloading.Holder holder = Gloading.getDefault().wrap(activity).withRetry(retryTask);
Gloading.Holder holder = Gloading.getDefault().wrap(view).withRetry(retryTask);

//顯示載入中的UI狀態
holder.showLoading() 

//顯示載入成功的UI狀態
holder.showLoadSuccess()

//顯示載入失敗的UI狀態
holder.showFailed()

//顯示載入成功,但資料未空的UI狀態
holder.showEmpty()

《HelloGitHub》第 38 期

12、Android-BLE:Android 藍芽框架,包括掃描、連線、設定通知、傳送資料、讀取、接收資料和 OTA 升級等。近乎一行程式碼植入專案,可擴充套件、配置藍芽相關操作,適用於 Android-BLE4.0 藍芽。即便是 BLE 方面的小白也可以在短短几分鐘內接入並運用到專案中

《HelloGitHub》第 38 期

JavaScript 專案

13、practice:使用當下流行的多種不同前端技術棧,實現不同專案的詳細教程,教你如何快速上手這些技術。雖然專案名稱叫做 Practice 但是內容為當前前端最火的框架實踐,而且符合生產環境下的開發流程規範,推薦學習

14、ieaseMusic:基於網易雲音樂 API 開發的第三方客戶端,支援 Linux、Mac OS 系統。成熟的 JS 桌面應用產品,顏值很高,音樂資源豐富

《HelloGitHub》第 38 期

15、ts-utility-plugins:使用原生 TS 構建特效、外掛、業務的實踐教程專案。脫離各種框架實現原生的特效以及外掛

PHP 專案

16、PHP-Interview-QA:《PHP 面試問答》結合實際 PHP 面試經驗,系統地彙總面試中的各類的問題,並嘗試提供簡潔準確的答案,為你面試 PHP 相關崗位提供“祕籍”。包含:網路協議、資料結構與演算法、PHP基礎、Web、MySQL、Redis、自我介紹、離職原因、職業規劃等部分

17、wizard:一款基於 Laravel 開發框架的開源文件管理系統。目前已經在多家公司部署使用,支援:Markdown、Swagger 文件管理,公司內部的統一身份認證系統(LDAP)等功能

《HelloGitHub》第 38 期

Python 專案

18、PySnooper:Python 的第三方除錯庫。讓你通過裝飾器方法,方便的知道每一行程式執行後的結果,而不需要再手動增加 print 展示過程資料、除錯程式。示例程式碼:

import pysnooper

@pysnooper.snoop()
def number_to_bits(number):
    if number:
        bits = []
        while number:
            number, remainder = divmod(number, 2)
            bits.insert(0, remainder)
        return bits
    else:
        return [0]

number_to_bits(6)
# 輸出如下
Starting var:.. number = 6
15:29:11.327032 call         4 def number_to_bits(number):
15:29:11.327032 line         5     if number:
15:29:11.327032 line         6         bits = []
New var:....... bits = []
15:29:11.327032 line         7         while number:
15:29:11.327032 line         8             number, remainder = divmod(number, 2)
New var:....... remainder = 0
Modified var:.. number = 3
....

19、Python-100-Days:《Python 100 天從新手到大師》—— Python 的入門學習資料,學習曲線低。非專業人士也能上手學習,適合新手入門

20、Zvm:一款用 Python 實現的簡易 JVM。實現功能如下:class 檔案解析、類載入、執行時資料區、指令直譯器、基本指令集、簡易 GC、簡易執行緒、簡易 JDK 庫,可以執行基本的 Java class 檔案。程式碼量少,模組清晰,適合用來學習 JVM 的基本結構和實現

21、city-vein:用公交路線資料,還原城市結構。通過資料視覺化手段,還原了 30 多個城市的城市結構。該專案中有資料獲取和處理的指令碼,而且該專案充分體現了資料視覺化帶來的便利和效果,易於激發學習程式設計的熱情。線上瀏覽

《HelloGitHub》第 38 期

Ruby 專案

22、huginn:基於 Ruby 開發的自動化處理任務工具。可以監控事物然後根據編寫好的邏輯進行處理(IFTTT),比如:監控天氣然後通過微信提醒你帶傘、追的小說或者動漫更新通知、聚合資訊傳送等。它框架穩定、生態活躍,有了它從而讓你的生活更加有效率,快去試試吧

《HelloGitHub》第 38 期

Swift 專案

23、Brooklyn:炫酷的蘋果電腦螢幕保護程式

《HelloGitHub》第 38 期

24、PopMenu:一款簡單、漂亮、方便、靈活自定義的彈出選單元件。如果你的 App 需要一款靈活好看的彈出選單的話,那麼 PopMenu 值得你一試

《HelloGitHub》第 38 期

其它

25、commit-messages-guide:Git 提交描述(commit)的編寫指南,中文

26、weekly:《阿里雲前端技術週刊》

27、algo:必知必會的資料結構和演算法程式碼答案(多種程式語言)

28、vim-bootstrap:一個簡單、易用的 .vimrc 配置檔案生成工具,也可通過網站點選生成。支援 Vim、NeoVim、NeoVim-Qt、MacVim 和 GVim。特點:

  • 輕量:包含少且必要的外掛
  • 易用:適合在vim中成功存活的入門者
  • 易於定製:只需選擇使用的語言,即可獲得對應配置
  • 先進的外掛管理器:使用 Vim-Plug 管理外掛,簡單易用、速度快
  • 支援多種程式語言

29、hacker-laws:程式設計師工作中可能使用到的定律、原則的講解,這些原則多應用於我們的開發和設計中,開卷有益

《HelloGitHub》第 38 期

教程

30、vscode-extension-samples:官方 VS Code 開發擴充套件外掛的程式碼例項集合

31、3d-game-shaders-for-beginners:有關如何為 3D 遊戲實施 SSAO、景深、照明、法線貼圖等效果的教程。包含示例程式碼(C++)與 Demo,更便於理解和學習

《HelloGitHub》第 38 期

機器學習

32、bentoml:一個機器學習工具用來打包和釋出模型。幫助資料科學家用不到 5 分鐘把在 ipython notebook 裡的模型釋出到生產環境

%%writefile iris_classifier.py
from bentoml import BentoService, api, env, artifacts
from bentoml.artifact import PickleArtifact
from bentoml.handlers import DataframeHandler

# You can also import your own python module here and BentoML will automatically
# figure out the dependency chain and package all those python modules

@artifacts([PickleArtifact('model')])
@env(conda_pip_dependencies=["scikit-learn"])
class IrisClassifier(BentoService):

    @api(DataframeHandler)
    def predict(self, df):
        # arbitrary preprocessing or feature fetching code can be placed here 
        return self.artifacts.model.predict(df)

33、stanford-cs-229-machine-learning:史丹佛 CS229 教程講義文件,該文件內容細緻、條理清晰,方便入門者作為讀書筆記學習。中文版

34、mlcourse.ai:一套機器學習課程。課程全面細緻,同時帶有 demo 以及進階的 Kaggle 比賽的樣例,非常適合初學者逐步的深入學習

35、lihang-code:機器學習領域經典書籍《統計學習方法》的課件和程式碼。這個專案提供了課件、程式碼資源,敘述從具體問題或例項入手,由淺入深,闡明思路,給出必要的數學推導,便於讀者掌握統計學習方法的實質,學會運用

36、maskrcnn-benchmark:Facebook 開源的 PyTorch 版本的 Mask-RCNN。研究人員可以按照教程、示例程式碼逐步進行實現

《HelloGitHub》第 38 期


換種方式閱讀

  • 網站: https://hellogithub.com
  • GitBook: https://gitbook.hellogithub.com

宣告

如果你發現了好玩、有意義的開源專案 點選這裡 分享你覺得有意思的專案。

歡迎轉載,請註明出處和作者,同時保留宣告。

相關文章