程式設計師的開源月刊《HelloGitHub》第 66 期

hellogithub 發佈 2021-09-27T22:31:48+00:00

xLua:為 C#、Unity、.Net 等環境增添 Lua 腳本編程的能力,使得 Lua 代碼方便地與 C# 相互調用。

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

簡介

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

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

十一假期就要來了,假期最重要的還是休息。本期遊戲項目有點多,外出路上帶上一個開源項目,不無聊!

最後,提前祝我們的祖國生日快樂、繁榮昌盛!HelloGitHub 的小夥伴們假期愉快!


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

C 項目

1、HEX-LINK:自製電腦遊戲的體感設備。該項目包含製作時需要的硬體設計和全部源碼

.
├─firmware # 軟體(根據自己使用的工具選擇如下一種工程即可)
│  ├─arduinoIDE_Proj # Arduino IDE版工程 
│  │  ├─Additional_Libraries # 裡面的文件夾需要複製到Arduino IDE安裝目錄下的libraries文件夾
│  │  ├─Hex_Link_Leonardo # 需要下載至接收端的程序
│  │  └─Hex_Link_Nano # 需要下載至發送端的程序
│  ├─Bootloaders # 需要下載至晶片的arduino bootloader 
│  └─Vscode_PlatformIO_Proj # VScode PlatformIO版工程 
│      ├─Hex_Link_Leonardo # 需要下載至接收端的程序
│      └─Hex_Link_Nano # 需要下載至發送端的程序
├─hardware # 硬體(PCB工程)
│  ├─BOM   # PCB的物料清單,包含參考的購買連結(連結僅作參考,在其他任何店鋪購買相同型號即可)
│  ├─Hex_Link_Rec # 接收端PCB工程
│  ├─Hex_Link_Trans # 發送端PCB工程
│  └─Nano_Jtag_Pin # 轉接板:用來燒錄Nano bootloader的Jtag口轉接板
├─model # 接收端外殼3維模型
│  ├─Solidworks_Project # 2018版本Solidworks工程
│  └─STL_TAP # STL文件,可直接用於3D列印.TAP文件是頂層亞克力板的CNC加工文件
├─references # 參考文檔
└─tools # 額外的腳本工具

C# 項目

2、SteamTools:集合多種 Steam 客戶端工具的工具箱。該工具支持 Window、Linux、macOS、Android 作業系統,包括遊戲庫存管理、解鎖成就、史低價格、出售庫存物品等功能,還有豐富的插件等待你發掘

3、xLua:為 C#、Unity、.Net 等環境增添 Lua 腳本編程的能力,使得 Lua 代碼方便地與 C# 相互調用

XLua.LuaEnv luaenv = new XLua.LuaEnv();
luaenv.DoString("CS.UnityEngine.Debug.Log('hello world')");
luaenv.Dispose();

4、BBDown:命令行嗶哩嗶哩視頻下載工具

C++ 項目

5、libqalculate:使用 C++ 編寫的多功能計算器桌面應用、庫和 CLI 程序。它易於使用功能強大,支持大型可定製函數庫、單位計算和轉換、符號計算(包括積分和方程)。作為用戶你可以直接在命令行中使用,作為開發者你也可以在自己的項目中使用這個庫。官方還製作了 Qt 和 GTK 兩個版本的 GUI 計算器應用

6、btop:界面酷炫的命令行資源監視器。可以顯示處理器、內存、磁碟、網絡和進程的使用情況和統計信息,還支持滑鼠操作

7、TinyWebServer:Linux 下的 C++ 輕量級 Web 伺服器。該項目不僅可以用來搭建 Web 服務,也適合 C++ 初學者作為網絡編程實戰項目。作者還寫了文章講解相關代碼和原理,幫助初學者更好的掌握網絡編程相關知識

CSS 項目

8、css_tricks:常用 CSS 樣式示例集合

Go 項目

9、video-srt-windows:自動識別視頻語音生成字幕文件的工具。採用 Go+walk 開發所以僅支持 Windows 系統,原理是請求在線語音轉文字的服務,超出免費額度需付費。另外還加入了導出字幕文件和翻譯功能

10、go-daily-lib:每天學習一個 Go 語言庫。內容包含標準庫和三方庫,每個庫對應一篇介紹和上手的文章

11、Open-IM-Server:基於 Go 實現的輕量級即時通訊(IM)項目。具有高性能、易擴展、安裝簡單、私有化部署等特性,同時包含多種客戶端 SDK。從伺服器到客戶端一體的開源即時通訊(IM)解決方案

12、go-fly:基於 Go 語言實現的在線客服系統,採用 Gin+MySQL+JWT+WebSocket 等技術棧實現

13、viper:用來搞定 Go 應用中配置的庫。支持多種配置文件類型、監控並重新加載配置文件、遠程讀取配置系統等

viper.SetConfigName("config") // 配置文件名,不包括後綴
viper.SetConfigType("yaml") // 配置文件的後綴
viper.AddConfigPath("/etc/appname/")   // 查找配置文件的目錄
viper.AddConfigPath("$HOME/.appname")  // 支持查找多個目錄
// 異常處理
if err := viper.ReadInConfig(); err != nil {
 if _, ok := err.(viper.ConfigFileNotFoundError); ok {
  // 如果沒有找到配置文件
 } else {
  // 找到了配置文件,但出現了其他錯誤
 }
}

Java 項目

14、o2oa:國產的 OA 系統。功能齊全支持考勤、會議管理、雲盤等,適用於企業 OA、協同辦公

15、IJPay:Java 支付工具庫,輕鬆完成支付模塊開發。封裝了常用的微信、QQ、支付寶、銀聯、PayPal 支付等支付方式的各種常用接口。不依賴任何 MVC 框架,輕鬆接入到 Java 項目

16、VirtualApp:Android 系統的沙盒程序,App 虛擬化引擎。它創建了一個虛擬空間,在那裡可以任意安裝、啟動、控制、卸載應用。虛擬空間與外部隔離相當於沙盒環境,可在安卓上實現應用多開、靜默安裝等黑科技

JavaScript 項目

17、sharedb:基於 JSON 數據 OT 算法的實時資料庫。簡單來說就是實時協同數據框架,可用來實現當頁面因用戶操作發生數據變化時,實時把數據同步展示到其它用戶頁面上,其中 OT 算法就是解決此協同過程中問題的通用算法。常見的場景比如:多用戶之間的狀態同步、在線協作文檔、離線後數據改動同步等

18、30-Days-Of-JavaScript:30 天 JavaScript 編程挑戰。該教程雖然是英文教程但是圖文並茂通俗易通,內容循序漸進包含練習題,適合零基礎想要學習 JavaScript 的同學

19、YesPlayMusic:高顏值的第三方網易雲播放器。它不僅擁有簡潔美觀的外觀,還有豐富的功能

  • 支持 Windows/macOS/Linux
  • 私人 FM/每日推薦歌曲
  • 網易雲帳號登錄
  • 歌詞顯示
  • 自定義快捷鍵和全局快捷鍵
  • 等等

20、javascript:Airbnb 開源的 JavaScript 風格指南。中文

// 採用數組解構
const arr = [1, 2, 3, 4];

// bad
const first = arr[0];
const second = arr[1];

// good
const [first, second] = arr;

21、spy-debugger:遠程調試手機頁面和抓包的工具。操作簡單僅需手機和電腦在同一個 WIFI 下,即可在實現真機調試頁面

Kotlin 項目

22、Component:Android 的組件化框架,幫助開發者在實現項目組件化。它的強大在於功能齊全、更新及時,支持 Kotlin、AndroidX、RxJava、協程等

Objective-C 項目

23、iOSInterviewQuestions:iOS 面試題集合(附答案)

Python 項目

24、Pokemon-Terminal:適用於多種終端的口袋妖怪主題工具。支持 iTerm2、ConEmu、Terminology、Windows 的終端,已經收集了 719 個小精靈

25、mypy:Python 靜態類型檢查庫。既然 Python 是一門動態類型語言,為啥還要檢查類型呢?有了靜態類型檢測則無需運行代碼,就可以發現程序中潛在的錯誤。還可以加入到 git hook 中,實現在提交代碼前自動檢查。詳情查看這篇文章

26、CPython-Internals:圖文並茂的 Python 源碼閱讀筆記項目。閱讀的是比較新的 CPython 3.8 版本,重點是項目一直在更新維護

static void take_gil(PyThreadState *tstate)
{
    /* 忽略 */
    while (_Py_atomic_load_relaxed(&_PyRuntime.ceval.gil.locked)) {
     /* 只要 gil 是鎖住的狀態, 進入這個循環 */
        int timed_out = 0;
        unsigned long saved_switchnum;

        saved_switchnum = _PyRuntime.ceval.gil.switch_number;
        /* 釋放 gil.mutex, 並在以下兩種條件下喚醒
           1. 等待 INTERVAL 微秒(默認 5000) 
           2. 還沒有等待到 5000 微秒但是收到了 gil.cond 的信號
        */
        COND_TIMED_WAIT(_PyRuntime.ceval.gil.cond, _PyRuntime.ceval.gil.mutex,
                        INTERVAL, timed_out);
        /* 當前持有 gil.mutex 這把互斥鎖 */
        if (timed_out &&
            _Py_atomic_load_relaxed(&_PyRuntime.ceval.gil.locked) &&
            _PyRuntime.ceval.gil.switch_number == saved_switchnum) {
            /* 如果超過了等待時間, 並且這段等待時間裡 gil 的持有者沒有變更過, 則嘗試讓當前持有 gil 的線程進行釋放gil
            把 gil_drop_request 值設為 1, 持有鎖的線程看到這個值的時候, 會嘗試放棄 gil */
            SET_GIL_DROP_REQUEST();
        }
        /* 繼續回到 while 循環, 檢查 gil 是否為鎖住狀態 */
    }
    /* 忽略 */
}

Rust 項目

27、nushell:一種更加人性化的新型 shell

Swift 項目

28、Clipy:macOS 的剪貼板擴展應用。支持展示剪貼板歷史記錄、內容模版等功能

其它

29、QWidgetDemo:Qt 編寫的示例集合。每個示例都可獨立運行、代碼簡潔易懂,適合初學者學習

30、xemu:免費開源的 Xbox 模擬器,支持 Windows、Linux、macOS 系統

31、yabai:適用於 macOS 的平鋪式窗口管理器。該工具可以輕鬆實現窗口平鋪不重疊,不用滑鼠僅通過鍵盤移動、調整、切換、全屏、自動布局等管理窗口的操作

  • Control+Option+A/D:激活 平鋪/浮動 模式
  • Option+h/j/k/l:使 左/下/上/右 側窗口成為活動窗口
  • Shift+Option+h/j/k/l:向 左/下/上/右 移動當前活動窗口
  • Command+Option+n:創建新桌面,並將當前活動窗口移動至新桌面

32、awesome-for-beginners:對初學者友好的開源項目集合。如果你想參與到開源項目的建設,可以在這個集合中尋找項目,祝你早日完成第一個貢獻(PR)

33、lifeRestart:在線文字遊戲《人生重開模擬器》。純文字遊戲只需開局選天賦分配初始屬性,後面就是看歲月如白駒過隙,轉眼就過完了這一生,不滿意的話可以輕鬆重開新的人生。遊戲憑藉詼諧幽默的文案和出乎意料的結尾,廣受好評

34、chinese-dos-games:中文 DOS 遊戲集合

開源書籍

35、introduction-to-front-end-engineering:一本小書《帶你入門前端工程》。該書是作者對過去兩年前端工程化實踐的經驗和心得總結

36、pumpkin-book:《機器學習公式詳解》西瓜書公式推導解析

機器學習

37、invoice:增值稅發票 OCR 識別項目。包含訓練好的模型和微服務,啟動後可直接通過接口調用

38、GameAISDK:基於圖像識別的 AI 自動化框架,支持吃雞類、射擊類、MOBA 類等遊戲類型。內置多種圖像識別算法和 AI 算法,不用摳圖完全基於圖像識別的 AI 訓練和框架

39、genshin_auto_fish:基於深度學習的原神手遊自動釣魚工具。其中用 YOLOX 搞定魚的定位和類型的識別以及魚竿落點的定位,用 DQN 搞定自適應控制釣魚過程的點擊,讓力度落在最佳區域內


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

以上就是本期的所有內容了,看完還不過癮?下個月 28 號見~

關鍵字: