開源月刊《HelloGitHub》第 82 期
興趣是最好的老師,HelloGitHub 讓你對編程感興趣!
簡介
HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。
這裏有實戰項目、入門教程、黑科技、開源書籍、大廠開源項目等,涵蓋多種編程語言 Python、Java、Go、C/C++、Swift...讓你在短時間內感受到開源的魅力,對編程產生興趣!
以下為本期內容|每個月 28 號更新
C 項目
1、bare-metal-programming-guide:裸機編程指南。這是一份教你如何在不依賴 IDE 的情況下,進行單片機開發的教程。內容先是介紹了寄存器、向量表、啟動代碼、鏈接腳本等知識點,最後實現了一個帶設備儀表盤的 Web 服務器。
2、sumatrapdf:免費小巧的開源 PDF 閲讀器。這是一款體積小、佔用內存少、啟動速度快的 Windows PDF 閲讀工具,擁有日常所需的所有功能和簡約大方的界面,這一切不多不少剛剛好。
3、ZSWatch:自制開源智能手錶。該項目是基於開源 Zephyr 的智能手錶,設備包含了一個分辨率為 240x240 的 IPS TFT 圓形屏幕和 3 個按鈕(上一頁/下一頁/進入),支持計步、血氧儀、心率儀、藍牙等功能。
C# 項目
4、carnac:用於展示鍵盤按鍵操作的工具。這是一款能夠在桌面實時顯示鍵盤操作記錄的工具,多用於演示應用、錄製教程等場景,適用於 Windows 7 及以上的操作系統。
5、downkyi:一款多功能的 B 站視頻下載工具。這是一款簡單易用的嗶哩嗶哩視頻下載工具,它擁有簡潔的操作界面,使用起來十分方便。支持批量下載、音視頻提取、去水印等功能。
6、SeeSharpSnake:用 C# 寫一個小於 8KB 的貪吃蛇。這個項目的重點不是教你如何用 C# 寫出一個貪吃蛇遊戲,而是講解怎麼將編譯後的 C# 貪吃蛇程序,從最初的 65MB 精簡成 8KB 大小、可以獨立運行的應用。
# To build the 4.7 MB version of the game
dotnet publish -r win-x64 -c Release /p:Mode=CoreRT
# To build the 4.3 MB version of the game
dotnet publish -r win-x64 -c Release /p:Mode=CoreRT-Moderate
# To build the 3.0 MB version of the game
dotnet publish -r win-x64 -c Release /p:Mode=CoreRT-High
# To build the 1.2 MB version of the game
dotnet publish -r win-x64 -c Release /p:Mode=CoreRT-ReflectionFree
# To build the 10 kB version of the game
dotnet publish -r win-x64 -c Release /p:Mode=CoreRT-NoRuntime
C++ 項目
7、cpp-httplib:一個文件的 C++ HTTP/HTTPS 庫。這是一個用 C++11 寫的僅頭文件、跨平台的 HTTP/HTTPS 服務器端和客户端庫,使用時十分方便,只需在代碼中引入 httplib.h
文件。
#define CPPHTTPLIB_OPENSSL_SUPPORT
#include "path/to/httplib.h"
// HTTPS
httplib::Client cli("http://hellogithub.com");
auto res = cli.Get("/periodical");
res->status;
res->body;
8、Ripes:RISC-V 的模擬器和彙編編輯器。該項目可以通過圖形化的方式,展示機器代碼在各種微架構上運行的過程,可用於探索不同的高速緩存設計對性能的影響等問題。
9、SFML:簡單高效的 C++ 多媒體庫。這是一個可用來簡化遊戲和多媒體應用開發的 C++ 庫,因其上手門檻低和良好的生態,成為了眾多 C++ 新手入門圖形化開發的首選。
CSS 項目
10、css:GitHub 開源的設計系統。由 GitHub 設計團隊開源和維護的項目,包含了 GitHub 的界面設計原則、使用指南和開箱即用的 UI 組件。
Go 項目
11、d2:一種可將文本轉換為圖表的腳本語言。該項目是一種圖表腳本語言,可將文本轉換為圖表。你只需描述想要的圖表,它就會生成對應的圖像。
echo 'x -> y' > input.d2
d2 -w input.d2 out.svg
12、grpcurl:類似 cURL 但用於 gRPC 的工具。一款實現與 gRPC 服務器交互的命令行工具,可以輕鬆請求 gRPC 服務,就像 gRPC 版的 cURL 一樣好用。
# 安裝
brew install grpcurl
# 使用
grpcurl grpc.server.com:443 my.custom.server.Service/Method
13、shifu:一款雲原生物聯網開發框架。這是一個生產級別的物聯網平台,它可以將物聯網(IoT)設備,封裝成 K8s 的最小的可部署的計算單元(pod),直接將設備的能力和數據通過 API 開放出來,讓物聯網應用的開發變得更加簡單。
cd shifu
# 在集羣中安裝 Shifu
kubectl apply -f pkg/k8s/crd/install/shifu_install.yml
14、writefreely:一起寫作並建立一個社區。這是一個 Go 寫的博客平台,除了能夠創建基於 Markdown、極簡的獨立博客之外,還可以建立類似博客園的博客社區。
15、yao:一款 Go 寫的應用引擎。通過該項目最快幾分鐘,就能從零構建出一套系統,適合用於開發接口服務、管理後台、數據可視化平台、自建低代碼平台等系統。
Java 項目
16、HummerRisk:雲原生安全檢測平台。該項目用非侵入的方式,解決雲原生環境的安全和治理問題。支持主流公/私有云資源的安全檢測、漏洞掃描、一鍵獲取報告等功能。
17、HydraLab:開源的智能移動雲測平台。這是一個基於 Spring Boot+React 構建的雲測服務,它部署簡單開箱即用,支持在線管理測試設備、執行測試用例、測試結果可視化等功能。
18、neo4j:目前最流行的圖數據庫。它是一款採用 Java 和 Scala 語言開發的原生圖數據庫,專屬的查詢語言 Cypher,能夠直觀且高效地查詢和處理數據之間的關係。
JavaScript 項目
19、html2canvas:實現瀏覽器內截屏的 JavaScript 庫。該項目可以讓你在瀏覽器內對整個網頁或部分內容進行截圖,原理是通過讀取 DOM 和樣式,將當前頁面渲染成一個畫布圖像。
html2canvas(document.querySelector("#capture")).then(canvas => {
document.body.appendChild(canvas)
});
20、JavaScript-Algorithms:教你從零構建前端算法體系。學習算法不僅是為了面試,也是每個前端進階必備的技能之一。該項目包含了前端的進階算法、常見面試題、手寫源碼等,幫你構建完整的數據結構和算法的知識體系。
21、pomotroid:視覺上令人愉悦的番茄時鐘。這是一款 Vue 寫的擁有超高顏值的番茄計時器,支持自定義時間、回合數、提示音、桌面通知等功能。
22、satori:能夠將 HTML 和 CSS 轉換為 SVG 的庫。由 Vercel 團隊開源的可根據 HTML 和 CSS 代碼生成 SVG 圖像的庫。支持 JSX 語法,使用起來十分方便和順手。
import satori from 'satori'
const svg = await satori(
<div style="{{" color: 'black' }}>hello, world</div>,
{
width: 600,
height: 400,
fonts: [
{
name: 'Roboto',
data: robotoArrayBuffer,
weight: 400,
style: 'normal',
},
],
},
)
23、underscore:強大的 JavaScript 函數庫。該庫提供了 100 多個實用的函數,包括常用的 map、filter、reduce、invoke 以及更專業的輔助函數,比如函數綁定、JavaScript 模板功能、創建快速索引等,讓我們可以更加方便地在 JavaScript 中實現函數式編程。
// countBy
_.countBy([1, 2, 3, 4, 5], function(num) {
return num % 2 == 0 ? 'even': 'odd';
});
// 輸出:{odd: 3, even: 2}
Python 項目
24、bandit:查找 Python 代碼中常見安全問題的工具。該項目是 PyCQA 出品的 Python 代碼檢測工具,知名的 isort 和 flake8 就是他們開源的。
25、devguide:CPython 開發人員指南。這份指南來自 Python 官方,介紹瞭如何為 CPython 做貢獻,適用於任何階段的貢獻者。
26、Django-Styleguide:Django 使用姿勢指南。這是一份 Django 編碼風格指南,它來自於一線團隊的多年經驗總結,希望能夠幫助你構建出更好的 Django 應用程序。
27、numpy-100:Numpy 的練習冊。該項目包含了 100 個關於 Python 常用的數據處理庫 Numpy 的練習和解決方案。
# How to sum a small array faster than np.sum? (★★☆)
Z = np.arange(10)
np.add.reduce(Z)
28、prefect:Python 的數據流編排平台。如果將獲取、清洗、處理數據的程序當作一個個分散的任務,該項目可以將這些任務整合到工作流中,實現在一個 Web 平台部署、安排和監控它們的執行。
from prefect import flow, task
@task
def say_hello():
print("Hello, World! I'm HelloGitHub!")
@flow("Prefect Flow"):
def h_flow():
say_hello()
# run the flow!
h_flow() # "Hello, World! I'm HelloGitHub!"
Ruby 項目
29、YouPlot:Ruby 寫的命令行數據可視化工具。該項目能夠在終端裏將數據轉化成彩色的圖表,支持條形圖、直方圖、箱型圖等類型的圖表。
Rust 項目
30、ChatGPT:第三方的 ChatGPT 桌面應用。把 ChatGPT 放到你的桌面,支持快捷鍵、斜槓命令、劃詞搜索、導出記錄等實用的功能,適用於 macOS、Windows、Linux 操作系統。
31、gitui:帶界面的 Git 命令行工具。該項目為 git 提供了終端界面,讓用户可以更加順暢地使用 git。交互式的操作提示,讓你無需再記憶大量的 git 命令。
Swift 項目
32、vimac:用鍵盤代替鼠標的 macOS 應用。它可以讓用户實現僅通過鍵盤操作蘋果電腦,支持兩種操作模式。
- 激活模式:將屏幕上可點擊的位置,映射成鍵盤按鍵
- 滾動模式:使用 HJKL 按鍵,可完成區域滾動
其它
33、cdn-up-and-running:從零開始構建 CDN 的教程。為了讓你在實戰中學習 CDN 的工作原理,這裏會從創建一個單一的後端服務開始,逐漸擴展到多個節點、模擬延遲、可視化、可測試的 CDN 服務。因為設計 CDN 會涉及 Nginx、Lua、Docker、Grafana 等知識點,所以學習該教程需要有一定的編程基礎。
34、fluentui-emoji:一套可愛的 emoji 表情。該項目是微軟開源的一套精緻、可愛的 emoji 表情包。
35、k8s_PaaS:教你用 K8s 部署一套完整服務的教程。通過該教程你可以學習到如何部署 Kubernetes 集羣,以及在此基礎上搭建由 Apollo、Jenkins、Prometheus 等服務組成的完整的軟件研發和部署平台。
36、pi-apps:最受歡迎的樹莓派應用商店。這是一款完全免費、開源的樹莓派應用商店,它安裝簡單使用方便,內置了 200 多個應用程序,支持 32 位和 64 位的 Raspberry Pi OS。
# 下載
git clone http://github.com/Botspot/pi-apps
# 安裝
~/pi-apps/install
37、smiley-sans:一款完全開源、精雕細琢的中文黑體。這款字體名為「得意黑」,整體字身窄而斜,細節融入了取法手繪美術字的特殊造型。支持簡體中文常用字、拉丁字母、阿拉伯數字和各種標點符號。
開源書籍
38、essential-netty-in-action:《Netty 實戰》精簡版。該書是《Netty in Action》的中文精簡版,帶你快速掌握 Netty。
39、time-as-a-friend:《把時間當作朋友》。做事不一定要圖快,馬跑起來比駱駝快,但駱駝一生走過的路卻是馬的兩倍。
機器學習
40、annotated_deep_learning_paper_implementations:深度學習論文的實現集合。這是一個關於神經網絡和相關算法 PyTorch 實現的集合,代碼裏還包含逐行的註釋。
41、Chinese-CLIP:OpenAI CLIP 模型中文預訓練版本。該項目使用了大規模的中文數據進行訓練(~2億圖文數據),提供了多個規模的預訓練模型和技術報告,讓使用者僅通過幾行代碼就能完成中文圖文特徵提取和圖文檢索。
import torch
from PIL import Image
import cn_clip.clip as clip
from cn_clip.clip import load_from_name, available_models
print("Available models:", available_models())
# Available models: ['ViT-B-16', 'ViT-L-14', 'ViT-L-14-336', 'ViT-H-14', 'RN50']
device = "cuda" if torch.cuda.is_available() else "cpu"
model, preprocess = load_from_name("ViT-B-16", device=device, download_root='./')
model.eval()
image = preprocess(Image.open("examples/pokemon.jpeg")).unsqueeze(0).to(device)
text = clip.tokenize(["傑尼龜", "妙蛙種子", "小火龍", "皮卡丘"]).to(device)
with torch.no_grad():
image_features = model.encode_image(image)
text_features = model.encode_text(text)
# 對特徵進行歸一化,請使用歸一化後的圖文特徵用於下游任務
image_features /= image_features.norm(dim=-1, keepdim=True)
text_features /= text_features.norm(dim=-1, keepdim=True)
logits_per_image, logits_per_text = model.get_similarity(image, text)
probs = logits_per_image.softmax(dim=-1).cpu().numpy()
print("Label probs:", probs) # 圖文匹配概率 [[1.268734e-03 5.436878e-02 6.795761e-04 9.436829e-01]]
42、KuiperInfer:從零編寫深度學習推理框架的教程。手把手教你用 C++ 寫出一個深度學習推理框架,項目整體風格和結構借鑑了Caffe。初學者通過該教程不僅可以瞭解深度學習框架背後的知識,還能夠學會如何上手一箇中等規模的 C++ 項目。
最後
如果你發現了 GitHub 上有趣的項目,就點擊分享給大傢伙吧。
以上就是本期的所有內容了,往期內容點擊閲讀
感謝您的閲讀,如果覺得本期內容還不錯的話 求贊、求分享 ❤️
- 開源月刊《HelloGitHub》第 84 期
- 10 款開源的在線遊戲,點開就能玩的那種
- 窮人版生產力工具,好用得飛起 「GitHub 熱點速覽」
- GPT-4 來了!這些開源的 GPT 應用又要變強了
- 誰會拒絕一款開源的 3D 博客呢?
- 你的夢想家居「GitHub 熱點速覽」
- 開箱即用,你不可錯過的好東西「GitHub 熱點速覽」
- AI 能多強「GitHub 熱點速覽」
- 開源月刊《HelloGitHub》第 83 期
- 真·生產力「GitHub 熱點速覽」
- 如何讓程序更健壯「GitHub 熱點速覽」
- 朋友圈那串神祕字符背後的開源項目「GitHub 熱點速覽」
- 讓人眼前一亮的應用「GitHub 熱點速覽」
- 2023 年該學點什麼技術?「GitHub 熱點速覽 v.23.03」
- 開源月刊《HelloGitHub》第 82 期
- 忙活了一年的開源社區,終於趕上了春節前的末班車!
- 過年必備!親戚計算器「GitHub 熱點速覽 v.23.02」
- Windows 11 內核新調試器「GitHub 熱點速覽 v.23.01」
- HelloGitHub 最受歡迎的開源項目 Top10(2022年)
- 你的 GitHub 年度報告「GitHub 熱點速覽 v.22.52」