開源百寶箱《HelloGitHub》第 64 期


興趣是最好的老師,HelloGitHub 讓你對編程感興趣!

簡介

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

HelloGitHub 有實戰、教程、黑科技、開源書籍、企業級開源項目,涵蓋多種編程語言 Python、Java、Go、C/C++、Swift...讓你在短時間內感受到開源的魅力,對編程產生興趣!

項目地址:https://github.com/521xueweihan/HelloGitHub

感謝大家點亮的每一個 Star ✨


以下為本期內容|每個月 28 號更新

C 項目

1、X-TRACK:開源的 GPS 自行車碼表。功能齊全且擁有美觀的界面,支持離線地圖、顯示軌跡等功能。在線觀看

C# 項目

2、XboxDownload:Xbox 下載助手。支持 Xbox 游戲加速下載、比價等功能

3、ToastFish:利用 Windows 通知欄背單詞的軟件。能夠選擇單詞集合,並在背完后進行測驗

C++ 項目

4、Plants-vs.-Zombies-Online-Battle:在沒有游戲源代碼的前提下,通過逆向工程和代碼注入實現植物大戰僵屍局域網對戰模式。成功加載后解密模式的最后一關,會變為網絡對戰關卡。玩法為其中一個玩家放置植物進行防御,另一玩家放置僵屍進攻。項目結合逆向工程、C++和匯編相關技術,在無源代碼的前提下為游戲增加功能。對逆向工程感興趣的小伙可以看看源碼

5、xpack:實現 C++ 結構體和 JSON/XML/BSON 互轉的庫。C++ 初學者可以通過該項目學到高階的宏技巧和初級的 SFINAE 寫法

#include <iostream>
#include "xpack/json.h" // 包含該頭文件

struct User {
    int id;
    std::string name;
    XPACK(O(id, name)); // 添加宏定義XPACK在結構體定義結尾
};

int main(int argc, char *argv[]) {
    User u;
    string data = "{\"id\":12345, \"name\":\"xpack\"}";

    xpack::json::decode(data, u);          // json轉結構體
    cout<<u.id<<';'<<u.name<<endl;

    string json = xpack::json::encode(u);  // 結構體轉json
    cout<<json<<endl;
    return 0;
}

CSS 項目

6、normalize.css:用來消除瀏覽器默認樣式的 CSS 庫。不同瀏覽器對於同一個元素會有不一樣的默認樣式,比如:超鏈接線的顏色。相較於 reset(重制樣式)解決辦法,normalize.css 采用更加和平且高效地方式,解決了瀏覽器默認樣式的問題,盡可能讓同一個 CSS 文件在不同的瀏覽器上顯示效果一樣和正常

Go 項目

7、goim:輕量級、高性能、支持集群的 IM 和實時推送服務。純 Golang 實現支持廣播消息、房間推送、安全驗證和多協議支持等功能,還有基於 Kafka 的異步消息推送

8、dtm:Go 語言實現的分布式事務管理器。優雅的解決了微服務架構下冪等、空補償、懸掛等分布式事務難題,提供了簡單易用、高性能、易水平擴展的分布式事務解決方案,除 Go 外還有 Python、PHP、Node.js 等語言的客戶端

  // 具體業務微服務地址
  const qsBusi = "http://localhost:8081/api/busi_saga"
	req := &gin.H{"amount": 30} // 微服務的載荷
	// DtmServer為DTM服務的地址,是一個url
	saga := dtmcli.NewSaga("http://localhost:8080/api/dtmsvr").
		// 添加一個TransOut的子事務,正向操作為url: qsBusi+"/TransOut", 補償操作為url: qsBusi+"/TransOutCompensate"
		Add(qsBusi+"/TransOut", qsBusi+"/TransOutCompensate", req).
		// 添加一個TransIn的子事務,正向操作為url: qsBusi+"/TransOut", 補償操作為url: qsBusi+"/TransInCompensate"
		Add(qsBusi+"/TransIn", qsBusi+"/TransInCompensate", req)
	// 提交saga事務,dtm會完成所有的子事務/回滾所有的子事務
  err := saga.Submit()

9、erda:企業級一站式 PaaS 平台。基於 Kubernetes 以應用為中心的 DevOps 且支持微服務治理的多雲架構,可以讓復雜業務的開發、運維、監控和問題診斷變得更簡單、更高效。能減輕使用不同的工具混搭技術底座和雲平台的運維難度,同時還有漂亮、簡單易用的界面設計

10、hugo:Go 語言的靜態網站生成器。靜態網站生成器就是在本地把內容文件生成靜態網頁(HTML+CSS),然后把生成好的頁面上傳到服務器的工具。這種工具能夠幫你輕松且快速地上線網站,而用戶僅需選擇喜歡的主題,便可以專注於內容創作。Hugo 作為最流行的靜態網站生成器之一,擁有豐富的插件和主題,就算沒有編程基礎也能幫你快速制作出滿意的博客或者網站

11、TopList:各大網站熱門頭條的聚合網站。在線預覽

Java 項目

12、Mybatis-PageHelper:MyBatis 通用分頁插件,使用方法

13、guava:Google 開源的 Java 三方類庫。該庫提供包括集合、I/O、緩存、並發等開箱即用的工具方法,任何的 Java 應用都可以通過依賴的方式引入該項目。作為 Google 的開源項目,本身的源碼也是非常值得開發者學習

14、dataease:開源的數據可視化和分析工具。采用 SpringBoot+Vue.js 技術棧實現,通過豐富的可視化圖表讓數據更加直觀

  • 數據連接:支持關系型數據庫、Excel 等文件、Hadoop 等大數據平台、NoSQL 等各種數據源
  • 圖表展示:支持 PC 端、移動端及大屏
  • 制作圖表:支持豐富的圖表類型、支持拖拉拽方式快速制作儀表板
  • 數據引擎:支持直連模式、本地模式

JavaScript 項目

15、etherpad-lite:支持實時協作的富文本 WYSIWYG 編輯器

16、sjcl:斯坦福大學開源的 JavaScript 加密庫。用於 JS 的加密和解密,體積小且支持多種加密算法

sjcl.encrypt("password", "data") //加密數據
sjcl.decrypt("password", "encrypted-data") //解密數據

17、rubick:基於 Electron 開發的開源插件化工具箱。起初項目作者是 uTools 的用戶但 uTools 沒有開源,他又想接入公司內部的工具,然后 Rubick(拉比克)就誕生了。它實現了 uTools 的大部分功能,可以適配 uTools 豐富的開源插件,享受用完即走的便利

18、50projects50days:50 個采用 HTML+CSS+JS 的前端小項目集合。項目包含網頁源碼和效果展示,標准入門級的前端開源項目。通過查看效果讓新手感受前端的美妙,簡單的源碼降低了上手寫代碼門檻。或許其中某個網頁的效果也會讓工作多年的你大呼哇塞

19、gogocode:簡化 JavaScript 抽象語法樹(AST)處理的工具。借鑒了類似 jQuery 的預發和字符串構建 AST 的思想,大大簡化了學習成本、降低了開發復雜度,官方團隊在此基礎上還開發出了 Vue2 轉 Vue3 的插件

Kotlin 項目

20、FengYunWeather:開源的安卓天氣 APP。使用 Kotlin 語言編寫,采用 MVVM 架構和 OkHttp、coil、Room 等框架,代碼邏輯清晰,適合新手入門和學習

21、k-9:開源的 Android 電子郵件客戶端

Python 項目

22、tqsdk-python:開源的 Python 量化交易框架。使用少量代碼即可實現量化交易程序,還支持歷史數據、實時數據、策略回測、實盤交易、圖形化界面展示等功能。但免費版本僅提供全部的期貨、商品/金融期權和上證50、滬深300 和中證500 的實時行情,付費版支持更多種類以及更加穩定的服務

from tqsdk import TqApi, TqAuth, TqAccount, TargetPosTask

api = TqApi(TqAccount("H海通期貨", "4003242", "123456"), auth=TqAuth("信易賬戶", "賬戶密碼"))      # 創建 TqApi 實例, 指定交易賬戶
q_1910 = api.get_quote("SHFE.rb1910")                         # 訂閱近月合約行情
t_1910 = TargetPosTask(api, "SHFE.rb1910")                    # 創建近月合約調倉工具
q_2001 = api.get_quote("SHFE.rb2001")                         # 訂閱遠月合約行情
t_2001 = TargetPosTask(api, "SHFE.rb2001")                    # 創建遠月合約調倉工具

while True:
  api.wait_update()                                           # 等待數據更新
  spread = q_1910.last_price - q_2001.last_price        # 計算近月合約-遠月合約價差
  print("當前價差:", spread)
  if spread > 250:
    print("價差過高: 空近月,多遠月")
    t_1910.set_target_volume(-1)                              # 要求把1910合約調整為空頭1手
    t_2001.set_target_volume(1)                               # 要求把2001合約調整為多頭1手
  elif spread < 200:
    print("價差回復: 清空持倉")                               # 要求把 1910 和 2001合約都調整為不持倉
    t_1910.set_target_volume(0)
    t_2001.set_target_volume(0)

23、Pillow:最流行的 Python 圖像處理庫。它的誕生是由於 PIL 的年久失修,現已於 2011 年停止維護,所以開源愛好者們就在 PIL 的基礎上創建了 Pillow。該庫支持豐富的圖像格式和強大的圖像處理功能,如果你要用 Python 處理圖像,它絕對是不二之選

# 安裝:pip install pillow
# 注意安裝的版本,不同版本支持的 Python 版本也不同

from PIL import Image
# 打開 jpg 圖像文件
im = Image.open('hellogithub.jpg')
# 轉換成黑白圖像
grayscale = tatras.convert('L')
# 展示圖像
grayscale.show()

24、JDMemberCloseAccount:用 Python 操作 selenium 的實戰項目。該項目以全自動退出京東加入的店鋪會員為例,介紹了 Python 自動化的知識和方案

25、bigdata_analyse:大數據分析實戰項目的集合。該項目包含了淘寶、租房、招聘等數據的分析實例,不僅有 Python、SQL、HQL 的實例代碼,還附上了數據集下載地址。想學習大數據的同學們,萬事俱備就差你來學了

26、OnlineJudge:青島大學開源的在線評測系統(OJ),采用 Django+Vue.js 實現。功能如下:

  • 基於 Docker 的一鍵部署
  • 支持 ACM/OI 兩種比賽模式、實時/非實時評判
  • 豐富的可視化圖表,一圖勝千言
  • 支持多種編程語言:C/C++、Java、Python2/3
  • 比賽用戶 IP 限制 (CIDR ranges)

Swift 項目

27、SwifterSwift:500合1 的原生 Swift 擴展庫集合。集成了 500 多個原生 Swift 擴展的庫,提供了更加方便的函數、語法糖、數據類型、UIKit 以及更高性能的 Cocoa 類,提高 Swift 的開發效率實現 1+1>2 的效果。適用於 iOS、macOS、tvOS 等系統

// 原來使用 UIAlertController 實現提醒的代碼如下:
let alert = UIAlertController(title: "測試", message: "HelloGitHub", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)

alert.addAction(okAction)
present(alert, animated: true, completion: nil)

// 改成 SwifterSwift 后:
let alert = UIAlertController(title: "測試", message: "HelloGitHub")
alert.show()

28、firefox-ios:Firefox 瀏覽器 iOS 源碼

其它

29、nocodb:開源的智能表格制作工具。我最初以為 nocodb 只是數據庫桌面管理工具,后來我發現自己狹隘了。它不僅可以把數據庫和圖片等數據轉化成表格的方式展現,還提供了團隊協作、工作流接入以及更加開放 API 服務。讓團隊在數據上工作,數據就在手邊“即視即用”。知名電子表格-數據庫混合體 Airtable 產品的開源替代品

30、elasticsearch-dump:Elasticsearch 數據導入/導出工具,可以用於 ES 的數據備份和遷移

31、freeCodeCamp:免費學習編程的開源社區。它創立於 2014 年,期間幫助了無數編程愛好者學習編程,中文站點於 2021 年上線。freeCodeCamp 采用在線編程闖關的學習形式,遇到問題還可以通過活躍的社區答疑解惑。平台鼓勵新手多動手寫代碼、運行代碼,提倡 RSA 即:遇到問題先閱讀文檔資料,然后求助於搜索引擎,最后實在沒招了再提問,這樣有助於培養良好的提問習慣終身受益。同時作為非盈利組織,freeCodeCamp 不僅提供了免費學習的課程還開源了網站代碼

32、developer-roadmap:開發者學習路線圖。這是一份包含后端、前端、運維部署等方向的學習路徑圖,幫你指明前進的方向。中文

33、adarkroom:《小黑屋》是一款有趣的文字冒險類游戲。支持中文能夠運行在瀏覽器、iOS 和 Android 設備,瀏覽器上默認會保存游戲進度到本地,另外還支持存檔導入/導出防止丟失。友情提示:沒玩過的同學剛開始容易摸不着頭腦,因為事件觸發需要時間,看滾動的文字+點擊“添柴”耐心等 30 秒,就會觸發新的事件了。如果你喜歡養成類游戲,那它一定會是你的菜。在線試玩

34、hyper:基於 Electron 的超高顏值終端工具。顏值即正義不僅在找對象時有用,挑工具時也同樣奏效。它支持包括 Windows、Linux、macOS 等主流操作系統快下載試試,讓你的終端漂亮的不像實力派

35、git-split-diffs:更加直觀展示代碼改動的命令行工具。在終端上使用 git diff 查看修改時,默認的展示效果並不直觀,該項目將代碼的改動以類似 GitHub 網站的風格展示方便查看,還有多種主題可供選擇

開源書籍

36、understand_linux_process:《理解 Linux 進程》

37、http-api-guide:《HTTP 接口設計指北》內容為設計 Web API 的一些建議

38、CheatSheetSeries:OWASP(開放式 Web 應用程序安全項目)速查表。項目由 OWASP 社區的安全專家編寫,列舉了多種安全問題和解決方案,從而更好地保護你的 Web 應用。在線閱讀

機器學習

39、HyperLPR:中文車牌識別開源框架。支持 Python、Android、C++ 等編程語言調用,接入簡單准確度較高。推薦給有車牌識別需求的小伙伴

40、insightface:支持 2D&3D 人臉分析的 Python 庫。基於 PyTorch 和 MXNet 實現,采用先進的 ArcFace 人臉識別方法,高效地實現了人臉檢測、識別等功能

41、Statistical-Learning-Method_Code:用 Python 實現《統計學習方法》書中的算法

42、DouZero_For_HappyDouDiZhu:基於快手開源的斗地主強化學習框架,實現的歡樂斗地主 AI 助手

最后

如果你發現了 GitHub 上有趣的項目,就分享給大家伙吧。

以上就是本期的所有內容了,看完還不過癮?

關注 HelloGitHub 公眾號不僅可以收到第一時間的更新。點擊菜單欄->往期->月刊

往期月刊所有的內容盡收眼底一次看過癮!還有更多開源項目的介紹和寶藏項目等待你的發現。


免責聲明!

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



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