《HelloGitHub》第 80 期

削微寒發表於2022-11-28

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

簡介

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

https://github.com/521xueweihan/HelloGitHub

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


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

C 專案

1、cockpit:基於 Web 的伺服器圖形介面。這是一款開源的伺服器管理工具,讓你可以透過 Web 介面輕鬆管理 Linux 伺服器,支援配置防火牆、Web 終端、容器管理、檢視系統日誌等功能。

C# 專案

2、Malware-Patch:阻止 Windows 流氓軟體授權的工具。它輕巧、無需後臺執行,可用於阻止指定軟體的管理員授權。

C++ 專案

3、Magisk:Android 獲取 Root 許可權的工具。它可以快速、無痛地獲得 Android 的超級使用者許可權,支援 Android 5.0 以上的裝置。

4、osquery:像資料庫一樣查詢裝置的工具。它將作業系統抽象成一個資料庫,讓使用者可以透過 SQL 查詢作業系統的執行情況,比如執行中的程式、網路連線、檔案和使用者。攻擊者一般會在執行惡意程式後刪掉程式,透過 osquery 可以輕鬆找到沒有原始檔的程式。

osquery> SELECT name, path, pid FROM processes WHERE on_disk = 0;
name = Drop_Agent
path = /Users/jim/bin/dropage
pid = 561

CSS 專案

5、css-only-chat:僅用 CSS 實現網路聊天。前端不用 JavaScript 只用 CSS 實現網路聊天的功能,秘訣是偽選擇器載入的背景影像和永遠載入的索引頁。

.some-button:active {
  background-image: url('some_image.jpg')
}

Go 專案

6、cadvisor:一款由 Google 開源的容器監控工具。它可以實時統計容器執行時佔用的資源,包括 CPU 利用率、記憶體使用量、網路傳輸等資訊。提供了 Web 視覺化頁面,能方便使用者分析和監控容器執行狀態,支援包括 Docker 在內的幾乎所有型別的容器。

sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  gcr.io/cadvisor/cadvisor:$VERSION

7、dsq:可直接用 SQL 查詢資料檔案的命令列工具。透過該專案無需將資料匯入資料庫,就能用 SQL 查詢檔案內的資料,可執行模糊查詢、計數、排序等命令,支援 JSON、CSV、Excel、Parquet、YAML 等型別的檔案。還可以搭配其它命令列工具(jq),實現更豐富的功能。

$ dsq testdata/userdata.parquet 'select count(*) from {}' | jq
[
  {
    "count(*)": 1000
  }
]

8、json-to-go:立刻將 JSON 轉化為 Go 型別定義的工具。這是一個用 JavaScript 寫的線上小工具,可以直接將輸入的 JSON 轉成對應的 Go 型別定義。

9、pocketbase:僅一個檔案的開源後端。將 SQLite 資料庫、介面服務、登入認證、管理後臺等伺服器端的功能,做成一個開箱即用的可執行檔案。讓原本不懂後端開發的使用者,也可以透過使用者介面快速構建起介面服務。

10、supervisord:用 Go 重新實現的 supervisord 。開源專案 supervisord 作為 Python 專案中常用的程式管理工具,深受廣大開發愛好者的喜歡。但如果在非 Python 環境的情況下,用起來就不是那麼順手啦,所以作者用 Go 重寫了 supervisord,編譯後可以方便地執行在任何環境下。

$ cat supervisor.conf
[program:test]
command = /your/program args
$ supervisord -c supervisor.conf

Java 專案

11、Aegis:一款免費、安全、開源的 2FA 安卓應用。雙重認證(2FA) 就是使用兩種不同的元素來確認使用者身份,比如使用者名稱和密碼是一種元素,手機號和簡訊驗證碼也是一種元素,兩種元素結合就是雙重認證。除了簡訊之外還有一種 APP 可生成和驗證碼功能類似的一次性密碼(TOTP),Aegis 就是一款支援 HOTP 和 TOTP 演算法的開源 2FA 應用,使用時要先將手機和賬號繫結,繫結後 APP 就會定時重新整理一組隨機數字,需要雙重認證時輸入這串數字即可。

12、jenkins:一款由 Java 編寫的開源持續整合工具。做為開源 CI/CD 軟體的王者,它專注於自動化你的開發工作流程,具有安裝簡單、友好的操作頁面、易於擴充套件、分散式的特點,常用來最佳化專案開發流程或自動化各種任務。

1. 下載 jar 包
2. 執行:java -jar jenkins.war --httpPort=8080
3. 開啟瀏覽器訪問:http://localhost:8080
4. 根據提示完成安裝

13、wvp-GB28181-pro:開箱即用的網路影片平臺。基於 GB28181 標準實現的網路影片平臺,能夠接入攝像機、平臺、NVR 等裝置、支援影片預覽、雲臺控制、錄影查詢和回放、無人觀看自動斷流等功能。

JavaScript 專案

14、cypress:基於 JavaScript 的下一代前端測試工具。主要用於瀏覽器端到端測試的自動化工具,端到端(E2E)測試就是站在使用者的角度,模擬實際使用場景的測試方式。Cypress 目前已成主流瀏覽器端到端測試工具,它執行速度快、上手簡單,支援圖形化介面可實時觀察執行情況,以及截圖和影片記錄測試結果。

15、Dashboard:一款完全自定義配置的瀏覽器起始頁。基於 Vite+Vue3+TypeScript 構建的瀏覽器起始頁,預設了多款簡潔清爽的主題開箱即用,能夠隨心所欲地新增元件,編輯模式下可拖拽元件更改大小和位置,支援瀏覽器外掛和網頁兩種使用方式。

16、Rocket.Chat:一款可自由定製的企業級開源通訊平臺。功能豐富的通訊平臺,可自託管做為 Slack 的開源替代品。支援建立頻道、團隊和討論等多種不同功能的群聊,訊息支援圖片、檔案、影片和語音,擁有包括 Windows、Linux、macOS、Android 和 iOS 在內的多種客戶端。

17、slidev:專為程式設計師打造的簡報工具。該專案是基於 Web 的幻燈片製作和演示工具,讓使用者可以使用 純文字+Markdown 語法制作幻燈片,支援匯出為 PDF 或 PNG 格式的檔案,或以單頁面展示幻燈片。對於大多數不擅長做 PPT 的程式設計師,基於提供的現成主題也可以製作出看起來不錯的簡報。

18、the-super-tiny-compiler:可能是最小的編譯器。僅用 1000 行 JavaScript 程式碼實現的迷你編譯器,其中註釋還佔了一大半,實際程式碼只有 200 行左右。它雖然程式碼量不多,但完整地實現了編譯器基本功能,可以用來學習編譯器原理。

PHP 專案

19、YOURLS:完全免費的短網址服務。採用 PHP 編寫的短網址服務,它完全開源可自行搭建服務,支援資料統計、地理位置、視覺化等功能。

Python 專案

20、calibre:一款功能強大的電子書管理工具。它是集下載、格式轉化、製作、管理於一體的電子書工具,比如可以將 txt 文字,轉化成包含作者資訊和書籍封面的 mobi 檔案,製作完成後還可以直接傳送到 Kindle 裝置上。

21、changedetection.io:簡單好用的網站變更檢測、監控和通知服務。基於 Flask+Selenium 構建的 Web 服務,可以在目標網站發生變化時發出通知,可用於監控商品降價、工作機會、版本釋出、最新內容等,支援 Docker 的安裝方式。

22、Macast:一款輕巧的投屏接收器。該專案可以讓電腦接收來自手機的影片、圖片和音樂投屏,支援手機上的主流影片和音樂軟體,以及其它符合 DLNA 協議的軟體。無打擾地執行在狀態列和選單欄,適用於 Windows、macOS、Linux 作業系統。

23、reloadium:Python 熱過載除錯工具。在不重啟程式的前提下,透過這個專案可以檢視改動後、最新的 Python 程式碼執行效果,以及每行程式碼的耗時。有了它可以更高效地除錯 Python 程式碼,強烈推薦在 PyCharm 和 VSCode 上使用。

24、rocketry:更加人性化的 Python 排程庫。可透過 Python 裝飾器語法,進行任務排程的 Python 庫。它簡單、優雅、高效,支援定時、併發(非同步、多執行緒、多程式)、條件觸發等功能。

from rocketry import Rocketry
from rocketry.conds import daily

app = Rocketry()

@app.task(daily)
def do_daily():
    ...

@app.task(daily & file_exists("data.csv"))
def do_things():
    ...

if __name__ == '__main__':
    app.run()

Rust 專案

25、difftastic:命令列檔案對比工具。一種可根據檔案的語法,進行結構化比較的工具,支援 30 多種程式語言。

26、sniffnet:可輕鬆監控網路流量的工具。這是一個簡單、可靠、炫酷的網路監控應用,可以讓你一目瞭然地瞭解裝置的網路流量。

27、websocat:WebSockets 的命令列客戶端。一條命令連線或建立 WebSockets 服務,適用於 Windows、macOS、Linux。

A$ websocat -s 1234
Listening on ws://127.0.0.1:1234/
ABC
123

B$ websocat ws://127.0.0.1:1234/
ABC
123

Swift 專案

28、CotEditor:一款適用於 macOS 的輕量級純文字編輯器。它免費、整潔、啟動速度快,擁有看起來十分舒服的介面。

其它

29、fonteditor:線上字型編輯器。線上編輯、轉換、預覽字型檔案,支援多種字型格式。

30、free-for-dev:專為程式設計師準備的免費服務清單。現在雖然有大量免費的服務,但大多數開發者很難找到它們,這是一份免費服務(SaaS、PaaS、IaaS 等)和產品的列表。

31、GameShell:玩遊戲學習 Shell。這是一款幫助入門 shell 命令的文字遊戲。

32、hackingtool:駭客工具全家桶。該專案收錄了各種駭客工具,包括破解密碼、SQL 注入、釣魚攻擊、XSS、DDos 等。

33、platformio-core:專業的嵌入式開發平臺。做嵌入式開發時往往會遇到諸多不便,比如硬體廠商的 IDE 繫結和複雜的配置過程。這款 IDE 能讓你輕鬆突破這些限制,PlatformIO IDE 相容 Arduino、樹莓派和 ESP32 在內的 40 多種平臺,以及超過 20+ 的框架。它不僅支援 Debug、程式碼自動補全、單元測試、串列埠除錯等實用的功能,還提供了 VSCode、Vim 等編輯器的外掛,把開發工具的選擇權徹底地還給開發者。

34、sms_forwarding:超低成本的簡訊轉發器。透過該專案僅需 50 元就可以製作出一個簡訊轉發器,實現不用手機接收驗證碼。

開源書籍

35、Book3_Elements-of-Mathematics:《數學要素》從加減乘除到機器學習。全綵多圖的一本科普書,內容以圖解+數學+程式設計為主。

36、parsing-techniques:《Parsing Techniques》解析技術。該書是編譯器前端的經典書籍。

37、py4e:《Python for Everybody》適合所有人的 Python。不管你有沒有程式設計基礎,只要對程式設計感興趣,都可以透過這本書學會 Python,進入有趣的程式設計世界。

機器學習

38、AiLearning-Theory-Applying:快速上手 AI 理論及應用實戰。該教程包含學習 AI 必備的數學基礎,機器學習實戰小專案、深度學習入門、自然語言通用框架 BERT 實戰,以及大量資料集。

39、vmaf:Netflix 開源的影片質量評估演算法。一種將人類視覺模型與機器學習結合的評估影片質量的方法,目的是改善觀眾們的觀看體驗。

最後

如果你發現了 GitHub 上有趣的專案,就點選分享給大傢伙吧。

以上就是本期的所有內容了,往期內容點選閱讀

感謝您的閱讀,如果覺得本期內容還不錯的話 求贊、求分享 ❤️

相關文章