當(dāng)前位置:首頁 > > HelloGitHub


簡(jiǎn)介

分享 GitHub 上有趣、入門級(jí)的開源項(xiàng)目。

這是一個(gè)面向編程新手、熱愛編程對(duì)開源社區(qū)感興趣 人群的月刊,月刊的內(nèi)容包括:各種編程語言的項(xiàng)目、讓生活變得更美好的工具、書籍、學(xué)習(xí)筆記、教程等,這些開源項(xiàng)目大多都是非常容易上手,而且非常 Cool。主要是希望大家能動(dòng)手用起來,加入到開源社區(qū)中。

  • 會(huì)編程的可以貢獻(xiàn)代碼
  • 不會(huì)編程的可以反饋使用這些工具中的 Bug
  • 幫著宣傳你覺得優(yōu)秀的項(xiàng)目
  • Star 項(xiàng)目??

C 項(xiàng)目

1、smartdns:一個(gè)運(yùn)行在本地的 DNS 服務(wù)器。能夠提高網(wǎng)絡(luò)訪問速度等諸多妙用,架構(gòu)圖如下:

2、xmake:一個(gè)基于 Lua 的輕量級(jí)跨平臺(tái)自動(dòng)構(gòu)建工具。支持在各種主流平臺(tái)上構(gòu)建項(xiàng)目,主要用于解決 C/C++ 項(xiàng)目的跨平臺(tái)構(gòu)建,同時(shí)支持與其他語言的混合編譯。工程配置語法簡(jiǎn)單易讀,對(duì)初學(xué)者友好、上手方便

add_requires("libuv master", "ffmpeg", "zlib 1.20.*", "tbox >1.6.1")
target("test")
    set_kind("shared")
    add_files("src/*.c")
    add_packages("libuv", "ffmpeg", "tbox", "zlib")

C# 項(xiàng)目

3、gui.cs:支持 Windows 和 Linux/Unix 的 .NET 終端 UI 工具庫。方便實(shí)現(xiàn)終端 GUI 工具,并且可以實(shí)現(xiàn)終端中用鼠標(biāo)啦

4、Blog.Core:基于 ASP.NET Core 和 Vue 從零開始搭建前后端分離項(xiàng)目教程+實(shí)戰(zhàn)項(xiàng)目。該項(xiàng)目從 .NET Core 基礎(chǔ)講起,內(nèi)容完整、系統(tǒng),對(duì)初學(xué)者和有一定基礎(chǔ)的小伙伴都有借鑒和學(xué)習(xí)的價(jià)值

C++ 項(xiàng)目

5、ThreadPool:一個(gè)簡(jiǎn)單的 C++11 線程池實(shí)現(xiàn),代碼加起來不到 100 行。示例代碼:

// create thread pool with 4 worker threads ThreadPool pool(4); // enqueue and store future auto result = pool.enqueue([](int answer "") { return answer; }, 42); // get result from future std::cout << result.get() << std::endl;

6、xournalpp:一款支持 PDF 手寫注釋的筆記軟件,支持 Linux、Windows、macOS 平臺(tái)。看書的時(shí)候喜歡標(biāo)注、做筆記,那這款工具肯定適合你。

7、pika:一個(gè)企業(yè)級(jí)開源的可持久化的大容量(百G)redis 存儲(chǔ)服務(wù)。兼容 redis 的絕大部分接口,解決 redis 由于存儲(chǔ)數(shù)據(jù)量巨大而導(dǎo)致內(nèi)存不夠用的容量瓶頸。并且可以像 redis 一樣,通過 slaveof 命令進(jìn)行主從備份,支持全同步和部分同步

Go 項(xiàng)目

8、pg_flame:Postgres 數(shù)據(jù)庫性能分析工具,把 EXPLAIN ANALYZE結(jié)果通過火焰圖展示

9、goproxy:Go 模塊安裝代理工具。還在因?yàn)榘惭b Go 項(xiàng)目依賴失敗而抓耳撓腮嗎?快試試這個(gè)項(xiàng)目吧

10、gods:簡(jiǎn)單易用的 Go 語言各種數(shù)據(jù)結(jié)構(gòu)和算法,并封裝成了一個(gè)庫,開箱即食。示例代碼:

type Stack interface {
	Push(value interface{})
	Pop() (value interface{}, ok bool)
	Peek() (value interface{}, ok bool)

	containers.Container // Empty() bool // Size() int // Clear() // Values() []interface{} }

11、gowp:Go 高性能異步并發(fā)線程池。接口調(diào)用簡(jiǎn)單、支持錯(cuò)誤返回、無論排隊(duì)多少任務(wù),都不會(huì)阻止提交任務(wù)??捎糜诳刂撇l(fā)訪問、并發(fā)執(zhí)行。示例代碼:

package main import ( "fmt" "time" "github.com/xxjwxc/gowp/workpool" ) func main() {
	wp := workpool.New(10) //設(shè)置最大線程數(shù) for i := 0; i < 20; i++ { //開啟20個(gè)請(qǐng)求 ii := i
		wp.Do(func() error { for j := 0; j < 10; j++ { //每次打印0-10的值 time.Sleep(1 * time.Second)
			} return nil })
	}

	wp.Wait()
	fmt.Println("down")
}

12、gf:一款高性能、功能豐富的 Go Web 框架。特點(diǎn):

  • 模塊化、松耦合設(shè)計(jì)
  • 模塊豐富,開箱即用
  • 簡(jiǎn)便及可維護(hù)性為宗旨
  • 詳盡的開發(fā)文檔及示例
  • 完善的本地中文化支持
  • 等等

Java 項(xiàng)目

13、SnowJena:基于令牌桶算法實(shí)現(xiàn)的分布式無鎖限流框架。簡(jiǎn)單易用的 API,開箱即用、支持熔斷降級(jí)、動(dòng)態(tài)配置規(guī)則、可視化監(jiān)控等功能。示例代碼:

public class AppTest {
    Logger logger = LoggerFactory.getLogger(getClass()); /**
     * 本地限流
     */ @Test public void test1() { // 1.配置規(guī)則 RateLimiterRule rateLimiterRule = new RateLimiterRuleBuilder()
                .setLimit(1)
                .setPeriod(1)
                .setUnit(TimeUnit.SECONDS) //每秒令牌數(shù)為1 .build(); // 2.工廠模式生產(chǎn)限流器 RateLimiter limiter = RateLimiterFactory.of(rateLimiterRule); // 3.使用 while (true) { if (limiter.tryAcquire()) {
                logger.info("ok");
            }
        }
    }
}

14、holer:一個(gè)將局域網(wǎng)中的應(yīng)用映射到公網(wǎng)訪問的端口映射軟件,支持轉(zhuǎn)發(fā)基于 TCP 協(xié)議的報(bào)文。內(nèi)網(wǎng)穿透工具,包含 Web 后臺(tái)管理系統(tǒng)。用到的技術(shù)如下:

  • 服務(wù)端采用 SpringBoot 和 Netty 實(shí)現(xiàn)
  • 客戶端采用 Java Netty 和 Go 語言實(shí)現(xiàn)

15、miaosha:一款秒殺系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)。高并發(fā)大流量的秒殺是面試常見問題,該項(xiàng)目不僅有具體問題的解決思路,還有具體代碼實(shí)現(xiàn)和示例 demo,全部理解、學(xué)習(xí)后相信秒殺問題再也攔不住你啦

JavaScript 項(xiàng)目

16、postwoman:一款基于 Node.js 的免費(fèi)開源、便捷美觀的 API 調(diào)試工具。它是調(diào)試接口的利器,能夠盡快的發(fā)現(xiàn)問題提高開發(fā)效率。相信體會(huì)過 Postman 的同學(xué),看到這個(gè)項(xiàng)目的名字就已經(jīng)躍躍欲試了

17、react-text-loop:實(shí)現(xiàn)文字循環(huán)展示的 React 組件

18、uform:一款面向企業(yè)級(jí)復(fù)雜場(chǎng)景的高性能表單解決方案。特性:

  • ???? 高性能,字段分布式渲染,大大減輕 React 渲染壓力
  • ???? 支持 Ant Design/Fusion Next 組件體系
  • ???? JSX 標(biāo)簽化寫法/JSON Schema 數(shù)據(jù)驅(qū)動(dòng)方案無縫遷移過渡
  • ???? 副作用邏輯獨(dú)立管理,涵蓋各種復(fù)雜聯(lián)動(dòng)校驗(yàn)邏輯
  • ???? 支持各種表單復(fù)雜布局方案

19、rc-bullets:基于 CSS3 Animation 使用 React 構(gòu)建的彈幕組件。支持功能:

  • 管理彈幕:暫停、隱藏、清屏等
  • 設(shè)置彈幕:速度、循環(huán)次數(shù)、延遲播放、自定義動(dòng)畫類型等
import React, { useEffect, useState } from 'react'; import BulletScreen, { StyledBullet } from 'rc-bullets'; const headUrl='https://zerosoul.github.io/rc-bullets/assets/img/heads/girl.jpg'; export default function Demo() { // 彈幕屏幕 const [screen, setScreen] = useState(null); // 彈幕內(nèi)容 const [bullet, setBullet] = useState('');
  useEffect(() => { // 給頁面中某個(gè)元素初始化彈幕屏幕,一般為一個(gè)大區(qū)塊 let s = new BulletScreen('.screen'); // or // let s=new BulletScreen(document.querySelector('.screen)); setScreen(s);
  }, []); // 彈幕內(nèi)容輸入事件處理 const handleChange = ({ target: { value } }) => {
    setBullet(value);
  }; // 發(fā)送彈幕 const handleSend = () => { if (bullet) { // push 純文本 screen.push(bullet); // or 使用 StyledBullet screen.push( <StyledBullet head={headUrl} msg={bullet} >StyledBullet> ); // or 還可以這樣使用,效果等同使用 StyledBullet 組件 screen.push({msg:bullet,head:headUrl,color:"#eee" bgColor:"rgba(2,2,2,.3)"})
    }
  }; return ( <main> <div className="screen" style={{ width: '100vw', height: '80vh' }}>div> <input value={bullet} onChange={handleChange} /> <button onClick={handleSend}>發(fā)送button> main> );
} 

20、react-loading:一款輕量、開箱即用并且支持按需加載的 React 動(dòng)畫組件庫。示例代碼:

import React from 'react'; import { DisappearedLoading } from 'react-loadingg'; const Container = () => <DisappearedLoading >DisappearedLoading>; export default Container;

Kotlin 項(xiàng)目

21、SketchyComponent:一款 Android 上的手繪風(fēng)格組件庫。該庫提供了一些基礎(chǔ)圖形和 icon,以及便捷的自定義能力。之前介紹過手繪風(fēng)格的圖表庫大家很喜歡,這回是 Android 組件庫不知道對(duì)不對(duì)大家的胃口。示例代碼:

// 1. 創(chuàng)建 Sketchy 圖形 val skSquareDrawable = SkSquareDrawable().apply { // 2. 設(shè)置屬性 fillColor = resources.getColor(android.R.color.holo_orange_dark)
} // 3. 給 View 設(shè)置背景 text.background = skSquareDrawable

Python 項(xiàng)目

22、memory_profiler:Python 程序內(nèi)存占用分析工具。示例代碼:

# 采用裝飾器的方式引用,不影響現(xiàn)有代碼 @profile def my_func(): a = [1] * (10 ** 6)
    b = [2] * (2 * 10 ** 7) del b return a if __name__ == '__main__':
    my_func() # 運(yùn)行命令:python -m memory_profiler example.py # 輸出: Line #    Mem usage  Increment   Line Contents ============================================== 3 @profile 4 5.97 MB 0.00 MB def my_func(): 5 13.61 MB 7.64 MB       a = [1] * (10 ** 6) 6 166.20 MB 152.59 MB       b = [2] * (2 * 10 ** 7) 7 13.61 MB -152.59 MB del b 8 13.61 MB 0.00 MB return a

23、PySimpleGUI:Python GUI 編程庫,它是將 tkinter、Qt、Remi、WxPython 封裝成更人性化的接口。示例代碼和效果如下:

import PySimpleGUI as sg

sg.theme('DarkAmber') # 設(shè)置主題顏色 # 界面內(nèi)包含的東西 layout = [  [sg.Text('Some text on Row 1')],
            [sg.Text('Enter something on Row 2'), sg.InputText()],
            [sg.Button('Ok'), sg.Button('Cancel')] ] # 創(chuàng)建窗口 window = sg.Window('Window Title', layout) # 監(jiān)聽事件 while True:
    event, values = window.read() if event in (None, 'Cancel'): # 用戶點(diǎn)擊取消按鈕事件 break print('You entered ', values[0])

window.close()

24、mitmproxy:基于 Python 語言開發(fā)的抓包工具。支持命令行、Web 平臺(tái)的形式展示抓包結(jié)果,還能通過 Python 引用庫來攔截、控制響應(yīng)和請(qǐng)求。下圖展示為命令行使用界面(類 vim 操作)

25、PythonPlantsVsZombies:Python 語言編寫的植物大戰(zhàn)僵尸。學(xué)習(xí)如何使用 Python 編寫小游戲的極佳例子,運(yùn)行步驟:

1. 需要 Python 3
2. 安裝依賴庫:pip install pygame
3. python main.py

Ruby 項(xiàng)目

26、pghero:Postgres 性能監(jiān)控服務(wù)。讓你對(duì) pg 數(shù)據(jù)庫的性能了如指掌

其它

27、clean-code-javascript:《Clean Code JavaScript》(JavaScript 代碼整潔之道),這是根據(jù)《代碼整潔之道》作者多年經(jīng)驗(yàn)整理的 JS 代碼優(yōu)化建議,但也僅僅只是一份建議。

28、wenyan-lang:文言文編程語言。文言文語法,可以編譯成 JavaScript、Python 或者 Ruby,你見過用文言文編寫程序嗎?快來試試吧。

29、short_url:Elixir 語言開發(fā)的支持自定義短碼的短鏈接服務(wù)。新手可以參考該項(xiàng)目源碼和原理解析,理解、實(shí)現(xiàn)短鏈接服務(wù)的同時(shí),體驗(yàn)用 Elixir 語言開發(fā)一個(gè) Web 服務(wù)。

30、pytest-chinese-doc:pytest 自動(dòng)化測(cè)試框架的官方文檔(5.1.3 版本)的中文翻譯。但不僅僅是簡(jiǎn)單的翻譯:

  • 更多的示例:所有的示例代碼都在 docs 目錄下,以章節(jié)劃分,盡量覆蓋每個(gè)知識(shí)點(diǎn)
  • 更多的拓展閱讀:添加了學(xué)習(xí)時(shí)所查閱的資料、閱讀的源碼等,也是作者學(xué)習(xí)和思考的歷程

開源書籍

31、machine-learning-systems-design:一本關(guān)于機(jī)器學(xué)習(xí)系統(tǒng)設(shè)計(jì)的小冊(cè)子附有練習(xí)題

32、front-end-handbook-2019:《Front-End Developer Handbook 2019》(前端開發(fā)者手冊(cè) 2019 版)。該書適合任何階段的人用來了解前端開發(fā)實(shí)踐的指南,它概述和討論了前端工程的實(shí)踐:如何學(xué)習(xí)前端、在 2019 年進(jìn)行前端實(shí)踐時(shí)應(yīng)該使用哪些工具。

機(jī)器學(xué)習(xí)

33、SSD-Pytorch:完整的目標(biāo)檢測(cè)項(xiàng)目。結(jié)構(gòu)簡(jiǎn)潔明了,中文注釋。適宜新手入門、目標(biāo)檢測(cè)任務(wù)參考,甚至直接基于本項(xiàng)目實(shí)現(xiàn)目標(biāo)檢測(cè)任務(wù)。示例代碼:

# 實(shí)例化模型:模型的具體各種參數(shù)在 Config 文件中進(jìn)行配置 net = SSD(cfg) # 將模型移動(dòng)到 GPU 上,cfg.DEVICE.MAINDEVICE 定義了模型所使用的主 GPU # 模型的參數(shù)更新會(huì)在主 GPU 上進(jìn)行 net.to(cfg.DEVICE.MAINDEVICE) # 初始化訓(xùn)練器:訓(xùn)練器參數(shù)已通過 cfg 進(jìn)行配置;也可傳入?yún)?shù)進(jìn)行配置(但不建議) trainer = Trainer(cfg, max_iter=None, batch_size=None,
                  train_devices=None, model_save_step=None,
                  model_save_root=None, vis = None, vis_step=None) # 訓(xùn)練器開始:在數(shù)據(jù)集上訓(xùn)練模型 trainer(net, train_dataset)

34、AIDungeon:一個(gè)基于機(jī)器學(xué)習(xí)的地下城文字游戲。此項(xiàng)目介紹了如何使用機(jī)器學(xué)習(xí)構(gòu)建一個(gè)游戲,代碼簡(jiǎn)單清晰適合 AI 愛好者深入研究

35、face_recognition:上手快速、簡(jiǎn)單易用的人臉識(shí)別庫。該庫使用 dlib 頂尖的深度學(xué)習(xí)人臉識(shí)別技術(shù)構(gòu)建,在戶外臉部檢測(cè)數(shù)據(jù)庫基準(zhǔn)(Labeled Faces in the Wild benchmark)上的準(zhǔn)確率高達(dá) 99.38%。同時(shí)提供了一個(gè)簡(jiǎn)單的面部識(shí)別命令行工具,允許您對(duì)來自命令行的圖像文件夾進(jìn)行面部識(shí)別。完整的開發(fā)文檔和應(yīng)用案例,并且兼容樹莓派系統(tǒng)(對(duì)配置要求低),對(duì)于初學(xué)者來說可以通過這個(gè)項(xiàng)目感受人臉識(shí)別或機(jī)器學(xué)習(xí)帶來的樂趣。示例代碼:

# 定位圖片中的所有人臉: import face_recognition
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image) # 識(shí)別人臉關(guān)鍵點(diǎn),包括眼睛、鼻子、嘴和下巴 import face_recognition
image = face_recognition.load_image_file("your_file.jpg")
face_landmarks_list = face_recognition.face_landmarks(image)

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉