《HelloGitHub》第 72 期

削微寒發表於2022-03-28

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

簡介

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

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

這裡有實戰專案、入門教程、黑科技、開源書籍、大廠開源專案等,涵蓋多種程式語言 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 前進的動力!❤️

相關文章