《HelloGitHub》第 52 期

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

簡介

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

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

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

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

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


以下為本期內容|每個月 28 號發布最新一期|點擊查看往期內容

C 項目

1、SimpleKernel:一個用來練手的簡單內核項目。提供了各個階段完成度不同的內核,可以選擇從自己喜歡的地方開始

2、raspberry-pi-os:基於樹莓派的作業系統開發教程(還未完結)。你的樹莓派在吃灰嗎?把它插上電用來學習開發作業系統吧

C# 項目

3、perfview:微軟開源的性能分析工具。配套的教程影片

C++ 項目

4、GuiLite:引用方便的 C++ 全平台 GUI 庫。能夠使用在 PC 端、移動設備、物聯網設備甚至是沒有作業系統的單片機,還支援多種開發語言和三方庫

5、html-plus-plus:這個庫讓你可以使用 C++ 模板編寫 HTML。HTML 文檔被表示為一個單一的、深層嵌套的類型,相當於 HTML 的模版引擎。程式碼簡單可供新手學習和使用,示例程式碼:

#include <iostream>
#include "html++.h"

int main()
{
  html<
    head<
      title<"Help Me.">
    >,
    body<
      h1<"The horror!">,
      p<"Someone has probably done this before, but I can see why it didn't catch on.">,
      a<"href=//github.com/csb6/html-plus-plus", "For science">
    >
  > page;

  std::cout << page.content;
  return 0;
}

Go 項目

6、gotty:能夠把終端執行的命令展示到網頁上的工具。安裝和運行命令如下:

安裝:go get github.com/yudai/gotty
運行:gotty [options] <command> [<arguments...>]

7、algo:Golang 程式設計師面試中的問題和解答集合。該項目目前完成了大部分的數據結構和演算法部分,準備相關面試的小夥伴可以閱讀學習起來了

8、logrus:可能是 Go 目前最受歡迎的第三方日誌庫。日誌首先要能讓人看懂,其次是程式易於處理日誌包含的內容,logrus 也許能讓你輕鬆快速實現上述兩點

9、websocket:Go 的 websocket 三方庫。看看它和標準庫的對比,你就知道為什麼它會出現在本期月刊中了

Java 項目

10、FlappyBird:Java 標準庫實現的 Flappy Bird。優化了遊戲難度並加入移動型水管,增加可玩性。沒有採用第三方庫和遊戲引擎、項目結構簡單、程式碼注釋完整,適合 Java 初學者做為編程入門實戰項目

11、metersphere:一站式的開源企業級持續測試平台。適應場景包括:測試跟蹤、介面測試、性能測試等,兼容 JMeter 等開源標準,能夠幫助開發和測試團隊充分利用雲彈性進行高度可擴展的自動化測試。測試同學的福音

12、incubator-iotdb:清華大學軟體學院自主研發並開源的時間序列數據管理引擎。能夠有效應對工業物聯網領域時間序列數量多、寫入頻率高、數據亂序到達、秒級聚合等場景。官方網站有系統設計文檔和使用手冊,作為初學者,可以系統的學習資料庫系統的完整設計和實現。在 IoTDB 社區可以與中國用戶直接交流、收集需求、設計功能、性能優化,每個改進點都可以看到直接效果。還可以體驗 Apache 開源軟體的工作模式,與世界各地的開發者交流想法,也有機會成為 Apache Committer、PMC 等

13、MyBookshelf:免費開源的Android小說閱讀軟體,能夠自定義訂閱小說數據源。支援:

  • 全局狀態欄沉浸
  • 自定義多執行緒搜索、快取
  • 支援一鍵快取
  • 點擊章節名跳轉小說目錄
  • 自定義字體、閱讀背景、文字顏色、背景顏色
  • 等等

14、QMUI_Android:用於輔助快速搭建一個具備基本還原設計效果的 Android 項目。快速搭建一個 Demo App 的必備利器,官網還提供示例 App 下載,感興趣的小夥伴快去試試吧

JavaScript 項目

15、chrome-extensions-searchReplace:一款搜索並且替換文本的Google插件。在做產品 PPT 的時候,需要對某些個頁面中的一些名詞進行統一替換,這個插件就是為了解決這個問題而誕生的。同時作者也是調研了其他類似功能的插件,它們都包含或多或少的問題,最終作者自己動手做了這個項目。可以說這款替換插件應該就是你最終的選擇了

16、apidoc:根據程式碼中的注釋生成 RESTful 風格的 API 文檔。注釋示例:

/**
 * @api {get} /user/:id Request User information
 * @apiName GetUser
 * @apiGroup User
 *
 * @apiParam {Number} id User's unique ID.
 *
 * @apiSuccess {String} firstname Firstname of the User.
 * @apiSuccess {String} lastname  Lastname of the User.
 */

17、mongo-express:使用 Node.js、Express 和 Bootstrap3 編寫的 MongoDB 管理平台

18、Zettlr:開源免費支援多種作業系統的 Markdown 編輯器。如果你想嘗試一款新的 Markdown 編輯器,它或許能滿足你對編輯器所有想法,如果還不夠那就自己動手增加吧

19、leetcode-cli:LeetCode 的命令行工具。之前我們推薦過命令行鬥地主、划水逛社區等,真正努力的人用命令行來刷演算法題!我顫抖了

Objective-C 項目

20、Zebra:用于越獄的 iOS 設備的軟體包管理器

Python 項目

21、ar-cutpaste:AR 拷貝實物照片到 PS 軟體的工具。它可以通過 iPhone 或者 Android 手機將真實物品從周圍環境中摳出來,並粘貼到 Photoshop 中,未來還會支援其它軟體

22、ncmdump:網易雲音樂下載的 NCM 文件轉化工具

23、nginx-ui:在線修改 Nginx 配置的服務。總的來說還是能減少修改配置出錯的概率,而且不用面對漆黑枯燥的命令行了

24、python-dotenv:幫你更好的管理 Python 項目中敏感配置資訊的開源三方庫。在項目中會有一些資料庫、賬戶、KEY 等敏感資訊,這些資訊最好不要寫在源程式碼中。為了降低泄漏風險,一般會通過環境變數來設置,這個庫可以很方便幫你在 Python 項目中管理這些資訊。示例程式碼:

# 安裝:pip install -U python-dotenv
# 目錄結構:
.
├── .env
└── settings.py
# 示例程式碼
# settings.py
import os
from dotenv import load_dotenv
load_dotenv()

SECRET_KEY = os.getenv("EMAIL")
DATABASE_PASSWORD = os.getenv("DATABASE_PASSWORD")

其它

25、analytics:一個開源的輕量級 Web 訪問分析工具。如果你不想侵犯用戶的隱私,只獲取自己網站訪問的基本數據,可以試試這個項目,用來代替Google分析

26、data-scientist-roadmap:數據科學技能路線圖

27、nvda:一個微軟開源的免費 Windows 作業系統的無視覺桌面訪問閱讀器。通過合成器語音或者盲文點字的回饋,方便盲人和低視力人群使用運行在 Windows 作業系統下運作的電腦。也能夠讓開發者了解微軟的常見的輔助功能介面,如微軟 Active Accessibility、Java Access Bridge、IAccessible2 和 UI automation。希望有更多的人了解無障礙,NVDA 中文站

28、LeetcodeTop:中國各大互聯網公司常考的 LeetCode 題目

29、git-history:在線查看 GitHub 開源項目中文件的改動歷史的工具。使用方法:

1. 打開 GitHub 上任意一個項目的文件
2. 把地址中的 github.com 替換成 githistory.xyz
3. 訪問替換後的地址

30、github-readme-stats:在你的 README 中展示動態生成的 GitHub 統計資訊。使用簡單、樣式多樣,使用方法:

[![Anurag's github stats](//github-readme-stats.vercel.app/api?username=521xueweihan)](//github.com/anuraghazra/github-readme-stats)

替換「521xueweihan」為你的 GitHub 用戶名

31、papirus-icon-theme:適用於 Linux 系統的免費開源 SVG 圖標主題

機器學習

32、3d-photo-inpainting:一個把單張靜態照片轉化成 3D 圖片的項目。快來嘗鮮啦,不要等朋友圈 3D 照片刷屏後才「後知後覺」


最後

如果你發現了 GitHub 上有趣的項目,歡迎在 HelloGitHub 項目提 issues 告訴我們。