興趣是最好的老師,HelloGitHub 讓你對程式設計感興趣!
簡介
HelloGitHub 分享 GitHub 上有趣、入門級的開源專案。
這裡有實戰專案、入門教程、黑科技、開源書籍、大廠開源專案等,涵蓋多種程式語言 Python、Java、Go、C/C++、Swift...讓你在短時間內感受到開源的魅力,對程式設計產生興趣!
以下為本期內容|每個月 28 號更新
C 專案
1、hashcat:一款強大的密碼恢復工具。破解速度超快支援多種演算法,適用於 Linux、macOS 和 Windows 作業系統
安裝:brew install hashcat
常用引數:
-a 指定破解模式:“-a 0”字典攻擊,“-a 1” 組合攻擊;“-a 3”掩碼攻擊
-m 指定要破解的 hash 型別:預設為 MD5
--force 忽略破解過程中的警告
常用破解模式:
0:Straight(字典破解)
1:Combination(組合破解)
3:Brute-force(掩碼暴力破解)
6:Hybrid Wordlist + Mask(字典+掩碼破解)
7:Hybrid Mask + Wordlist(掩碼+字典破解)
常用掩碼設定:
l:純小寫字母 abcdefghijklmnopqrstuvwxyz
u:純大寫字母 ABCDEFGHIJKLMNOPQRSTUVWXYZ
d:純數字 0123456789
舉例:破解 8 位數字密碼
hashcat -a 3 -m 0 --force 0D7002A70CCDE8BF4BA2A4A5572A85E9(密碼md5字串) ?l?l?l?l?l?l?l?l?l?l?l(11 位密碼的掩碼)
2、reptyr:能夠把舊終端執行中的程式,遷移到新終端視窗的實用工具
C# 專案
3、Monitorian:輕鬆調節多個顯示器亮度的 Windows 桌面工具。操作介面支援中文,使用時顯示器需要開啟 DDC/CI
4、PluginCore:適用於 ASP.NET Core 的輕量級外掛框架。開箱即用自帶外掛管理 Web 介面
public void ConfigureServices(IServiceCollection services)
{
// ...
// 1. Add PluginCore
services.AddPluginCore();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// ...
// 2. Use PluginCore
app.UsePluginCore();
}
C++ 專案
5、cocoyaxi:在 C++ 上實現類似 Go goroutine 的庫。它實現了協程同步事件、協程鎖、協程池、channel、waitgroup,記憶體佔用少實測 1000 萬協程佔用 2.8G 記憶體
#include "co/co.h"
DEF_main(argc, argv) {
co::Chan<int> ch;
go([ch]() { /* capture by value, rather than reference */
ch << 7;
});
int v = 0;
ch >> v;
LOG << "v: " << v;
return 0;
}
CSS 專案
6、log:瀏覽器 console.log 風格的 CSS 庫。檢視效果
Go 專案
7、hh-lol-prophet:英雄聯盟對局先知工具。免費合法不封號,原理是基於 LOL 客戶端介面獲取使用者資料,實現開局前對玩家資訊分析和打分
8、gota:Go 語言的資料處理庫。該庫提供了類似 Python 語言 Pandas 庫的功能,以及 Series 和 DataFrames 的資料結構,支援用列的方式高效地處理資料
type User struct {
Name string
Age int
Accuracy float64
}
users := []User{
{"Aram", 17, 0.2},
{"Juan", 18, 0.8},
{"Ana", 22, 0.5},
}
df := dataframe.LoadStructs(users)
fmt.Println(df)
// Output:
// [3x3] DataFrame
//
// Name Age Accuracy
// 0: Aram 17 0.200000
// 1: Juan 18 0.800000
// 2: Ana 22 0.500000
// <string> <int> <float>
9、illustrated-tls:圖解 TLS 連線。用線上互動的方式講解 TLS 的全過程,從建立 TLS 1.2 客戶端傳送 ping 再到接收 pong,詳細到每一個位元組。線上嘗試
10、gse:Go 的高效能多語言分詞庫。它是結巴分詞的 Go 語言實現,支援中文和接入 ES 等功能
text = "《復仇者聯盟3:無限戰爭》是全片使用IMAX攝影機拍攝製作的的科幻片."
// use DAG and HMM
hmm := seg.Cut(text, true)
fmt.Println("cut use hmm: ", hmm)
// cut use hmm: [《復仇者聯盟3:無限戰爭》 是 全片 使用 imax 攝影機 拍攝 製作 的 的 科幻片 .]
Java 專案
11、LSPosed:執行於 Android 作業系統的鉤子框架。支援 Android 8-11 系統,能夠攔截幾乎所有 Java 函式的呼叫,從而可被用來修改 Android 系統和軟體的功能
12、supertokens-core:開源的身份驗證方案。為你的應用輕鬆增加登入、會話管理等功能,支援自行搭建服務。可用作 Auth0 的開源替代品
JavaScript 專案
13、charts:簡單、零依賴、響應式的 SVG 圖表庫
const data = {
labels: ["12am-3am", "3am-6pm", "6am-9am", "9am-12am",
"12pm-3pm", "3pm-6pm", "6pm-9pm", "9am-12am"
],
datasets: [
{
name: "Some Data", chartType: "bar",
values: [25, 40, 30, 35, 8, 52, 17, -4]
},
...
]}
const chart = new frappe.Chart("#chart",
{ // or a DOM element,
// new Chart() in case of ES6 module with above usage
title: "My Awesome Chart",
data: data,
type: 'axis-mixed', // or 'bar', 'line', 'scatter', 'pie', 'percentage'
height: 250,
colors: ['#7cd6fd', '#743ee2']
})
14、lax.js:用於滾動時建立平滑和好看動畫的庫。簡單輕量僅 4KB 大小,但功能齊全且靈活
<!-- JS -->
<script>
window.onload = function () {
lax.init()
// Add a driver that we use to control our animations
lax.addDriver('scrollY', function () {
return window.scrollY
})
// Add animation bindings to elements
lax.addElements('.selector', {
scrollY: {
translateX: [
["elInY", "elCenterY", "elOutY"],
[0, 'screenWidth/2', 'screenWidth'],
]
}
})
}
</script>
<!-- HTML -->
<div class="selector">Hello</div>
15、chameleon:一端所見即多端所見。適應不同環境的跨端整體解決方案,支援 Web、小程式、快應用 等平臺
16、reveal.js:一款 HTML 演示框架。讓你擺脫傳統死板的 PPT 製作方法,可以方便地使用 HTML、Markdown 語言製作 PPT
17、tinykeys:極小的鍵盤事件監聽庫
import tinykeys from "tinykeys"
tinykeys(window, {
"Shift+D": () => {
alert("The 'Shift' and 'd' keys were pressed at the same time")
},
"y e e t": () => {
alert("The keys 'y', 'e', 'e', and 't' were pressed in order")
},
"$mod+KeyD": () => {
alert("Either 'Control+d' or 'Meta+d' were pressed")
},
})
Kotlin 專案
18、compose-tetris:基於 Jetpack Compose 的俄羅斯方塊遊戲
Objective-C 專案
19、HBDNavigationBar:自定義 UINavigationBar 的元件,用於各種狀態之間平滑切換
Python 專案
20、saleor:用 Python 開發的電商平臺。採用 Django+GraphQL API+React 構建,功能豐富支援移動端、訂單、商品、使用者管理等。線上體驗
21、pokete:執行在終端裡的口袋妖怪類遊戲。雖然遊戲影像採用簡單的 ASCII 碼構建,但商店、小精靈、對戰等功能一應俱全
執行方法:
# pip install scrap_engine
$ git clone https://github.com/lxgr-linux/pokete.git
$ ./pokete/pokete.py
22、tiptop:炫酷的命令列系統監控工具
安裝:pip install tiptop
執行:tiptop
23、rembg:簡單實用的刪除影像背景/摳圖工具
from rembg import remove
from PIL import Image
input_path = 'input.png'
output_path = 'output.png'
input = Image.open(input_path)
output = remove(input)
output.save(output_path)
24、textdistance:計算文字距離的常用演算法庫。包含計算文字相似度、多樣性、編輯距離、壓縮等多種演算法,所有演算法均採用 Python 實現,容易理解呼叫方便
import textdistance
textdistance.hamming.normalized_similarity('test', 'text')
# 相似度為 0.75
Swift 專案
25、OnlySwitch:免費開源的 macOS 狀態列一鍵設定工具。可以輕鬆對系統功能進行設定,如隱藏桌面圖示、清理 Xcode 快取、一鍵隱藏劉海兒、進入夜覽模式等數十種功能
其它
26、english-words:大型英語單詞文字。它是基於 WordNet 英語詞彙資料庫整理的文字檔案,可用於英語自動提示、自動搜尋等功能
27、design-patterns-for-humans:人人都能看懂的設計模式教程。中文
28、Learn-Vim:學習 Vim 的指南。該教程不是“大而全的百科全書”,它著重介紹了 Vim 中最常用的功能,讓你可以快速熟悉和使用 Vim。中文
29、electerm:一款支援 SSH/SFTP 的終端工具。支援中文和 Windows、Linux、macOS 作業系統
30、ElectronBot:自制桌面級小機器人。它具備 USB 通訊顯示畫面功能以及 6 個自由度,支援手勢識別和人體關鍵點檢測。這裡有配套的全部開發資料和 SDK,讓你也可以製作出一個這樣有趣的機器人
31、blog_os:用 Rust 從零開發一個作業系統的教程。保姆級教程!從空資料夾開始,一步步搭建開發環境,通過原理描述、程式碼示例講解作業系統背後的原理。硬要說缺點的話就是教程是英文的,但是配上程式碼示例讀起來不是很費勁。中文
開源書籍
32、Deep-Learning-with-TensorFlow-book:《TensorFlow 深度學習》
33、microfrontends:《微前端的那些事兒》 將 Web 應用由單一的單體應用,轉變為多個小型前端應用聚合為一的應用
機器學習
34、deep-learning-for-image-processing:深度學習在影像處理方面的教程。該專案配以視訊的方式介紹知識點和搭建方法,對應的 PTT 在 course_ppt 目錄下
35、awesome-automl-papers:彙集了自動機器學習(AutoML)相關的論文、文章、教程等資源的專案
36、jina:一款易用的神經搜尋框架。神經搜尋是指用非結構化資料,搜尋非結構化資料。Jina 簡化了神經搜尋系統的搭建流程,使開發者可以快速構建以圖搜圖、以文字搜圖、問答機器人、照片去重、海量標籤分類等應用
from docarray import Document, DocumentArray
from jina import Executor, Flow, requests
class PreprocImg(Executor):
@requests
async def foo(self, docs: DocumentArray, **kwargs):
for d in docs:
(
d.load_uri_to_image_tensor(200, 200) # load
.set_image_tensor_normalization() # normalize color
.set_image_tensor_channel_axis(
-1, 0
) # switch color axis for the PyTorch model later
)
最後
如果你發現了 GitHub 上有趣的專案,就點選分享給大傢伙吧。
以上就是本期的所有內容了,往期內容點選閱讀
感謝您的閱讀,如果覺得本期內容還不錯的話 求贊、求分享, 您的鼓勵是 HelloGitHub 前進的動力!❤️