主頁 > 後端開發 > HelloGitHub 開源月刊(第 55 期):終端“百戰天蟲”,來戰?

HelloGitHub 開源月刊(第 55 期):終端“百戰天蟲”,來戰?

2020-10-31 13:36:44 後端開發

興趣是最好的老師,HelloGitHub 就是幫你找到興趣!

簡介

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

這是一個面向編程新手熱愛編程對開源社區感興趣 人群的月刊,月刊的內容包括:各種編程語言的專案讓生活變得更美好的工具書籍、學習筆記、教程等,這些開源專案大多都是非常容易上手,而且非常 Cool,主要是希望大家能動手用起來,加入到開源社區中,

  • 會編程的可以貢獻代碼
  • 不會編程的可以反饋使用這些工具中的 Bug
  • 幫著宣傳你覺得優秀的專案
  • Star 專案??

在瀏覽、參與這些專案的程序中,你將學習到更多編程知識提高編程技巧找到編程的樂趣

🎉 最后 HelloGitHub 這個專案就誕生了 🎉


以下為本期內容|每個月 28 號發布最新一期|點擊查看往期內容

C 專案

1、htop:互動式行程查看工具,可代替 top 命令,用了這庫后,我基本不用 top 命令了

C# 專案

2、ToolGood.Words:一款高性能非法詞、敏感詞檢測庫,還支持繁體簡體互換、獲取拼音首字母、獲取拼音字母、拼音模糊搜索等功能

string s = "中國|國人|zg人";
string test = "我是中國人";

StringSearch iwords = new StringSearch();
iwords.SetKeywords(s.Split('|'));

var b = iwords.ContainsAny(test);
Assert.AreEqual(true, b);

var f = iwords.FindFirst(test);
Assert.AreEqual("中國", f);

var all = iwords.FindAll(test);
Assert.AreEqual("中國", all[0]);
Assert.AreEqual("國人", all[1]);
Assert.AreEqual(2, all.Count);

var str = iwords.Replace(test, '*');
Assert.AreEqual("我是***", str);

C++ 專案

3、workflow:搜狗開源的 C++ 服務器引擎,支撐搜狗幾乎所有后端 C++ 在線服務,包括所有搜索服務、云輸入法、廣告等,每日處理超百億請求,這是一個設計輕盈優雅的企業級程式引擎,可以滿足大多數 C++ 后端開發需求

CSS 專案

4、flexboxfroggy:一個幫助學習 CSS flexbox 知識的在線游戲,游戲一共 24 關,通俗易懂的解釋了 flex 布局,適合初學者,并且支持中文,可以在 settings 中選擇語言,在線試玩

Go 專案

5、go-diagrams:用 Go 語言畫架構圖的工具,想畫架構圖不知道用什么工具?會 Go 的小伙伴可以試試這個庫,通過撰寫 Go 代碼來繪制架構圖,介面使用方便,但檔案太簡單了,示例代碼:

d, err := diagram.New(diagram.Filename("app"), diagram.Label("App"), diagram.Direction("LR"))
if err != nil {
    log.Fatal(err)
}

dns := gcp.Network.Dns(diagram.NodeLabel("DNS"))
lb := gcp.Network.LoadBalancing(diagram.NodeLabel("NLB"))
cache := gcp.Database.Memorystore(diagram.NodeLabel("Cache"))
db := gcp.Database.Sql(diagram.NodeLabel("Database"))

dc := diagram.NewGroup("GCP")
dc.NewGroup("services").
    Label("Service Layer").
    Add(
        gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 1")),
        gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 2")),
        gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 3")),
    ).
    ConnectAllFrom(lb.ID(), diagram.Forward()).
    ConnectAllTo(cache.ID(), diagram.Forward())

dc.NewGroup("data").Label("Data Layer").Add(cache, db).Connect(cache, db)

d.Connect(dns, lb, diagram.Forward()).Group(dc)

if err := d.Render(); err != nil {
    log.Fatal(err)
}

6、gorched:Go 語言寫的終端游戲 Scorched Earth,它讓我想起了“百戰天蟲”這款游戲,有同齡人嗎?一起來回味下

7、ali:能夠實時展示分析的壓力測驗工具,現在壓測工具有很多,這款的亮點在于可以在終端實時展示壓測程序的曲線,一條命令搞定啟動:ali 地址

8、ferry:基于 Gin + Vue + Element UI 前后端分離的工單系統,該系統是集工單統計、任務鉤子、權限管理、靈活配置流程與模版等等功能, 幫助減少跨部門之間的溝通,提升作業效率與作業質量,減少不必要的作業量與人為出錯率

Java 專案

9、retrofit-spring-boot-starter:一個適用于 Spring Boot 專案的輕量級 HTTP Web 框架,使用簡單方便,支持介面化的方式發送 HTTP 請求,底層使用 Retrofit 實作,并支持了諸多功能特性增強,極大簡化開發

/**
* 定義介面
**/
@RetrofitClient(baseUrl = "${test.baseUrl}")
public interface HttpApi {

    @GET("person")
    Result<Person> getPerson(@Query("id") Long id);
}

/**
* 注入使用
**/
@Service
public class TestService {
    @Autowired
    private HttpApi httpApi;

    public void test() {
        // 通過httpApi發起http請求
    }
}

10、jmeter:Apache 開源的壓力測驗工具,提供 GUI 操作界面就是可以點點點操作,也可以寫腳本提高測驗的自動化,它還不局限于 Web 測驗,支持更多壓力測驗場景,我身邊 97% 從事測驗相關作業的人都用過它,要不要來看看它的原始碼?純 Java 實作

11、mybatis-plus:一款好用的 Java 操作資料庫框架,MyBatis 增強工具包,提供了一些高效、實用、快捷的功能,使用它可以有效地節省您的開發時間,比如切換資料源,只需修改組態檔

List<User> userList = userMapper.selectList(
        new QueryWrapper<User>()
                .lambda()
                .ge(User::getAge, 18)
);

12、BilibiliTask:嗶哩嗶哩定時自動完成任務專案,該專案借助 GitHub Action 自動完成:每日任務、投幣、直播簽到等,還可以把運行結果推送到微信,是一個解決重復勞動的有趣專案,按照專案首頁的教程,花點時間就能配置好,一勞永逸

JavaScript 專案

13、zooming:純 JS 實作支持移動端的影像縮放庫

14、AnotherRedisDesktopManager:一款支持多語言、多平臺的 redis 桌面管理工具,對比目前其它同型別工具,它擁有更豐富的功能、更高的穩定性和性能,支持集群等功能

15、beeplay:讓你可以用 JS 寫一首“歌”的庫,在線嘗試,實體代碼:

var beeplay = require('beeplay')

beeplay()
  .play(null, 2)
  .play('D#5', 1/4).play('E5', 1/4).play('F#5', 1/2)
  .play('B5', 1/2).play('D#5', 1/4).play('E5', 1/4)
  .play('F#5', 1/4).play('B5', 1/4).play('C#6', 1/4).play('D#6', 1/4)
  .play('C#6', 1/4).play('A#5', 1/4).play('B5', 1/2)
  .play('F#5', 1/2).play('D#5', 1/4).play('E5', 1/4)
  .play('F#5', 1/2).play('B5', 1/2)
  .play('C#6', 1/4).play('A#5', 1/4).play('B5', 1/4).play('C#6', 1/4)
  .play('E6', 1/4).play('D#6', 1/4).play('E6', 1/4).play('C#6', 1/4);

16、vant:由有贊前端團隊開源的移動端組件庫,目前官方提供了 Vue 版本和微信小程式版本,并由社區團隊維護 React 版本,有完善的中英文檔案和示例,60+ 高質量組件,90%+ 單元測驗覆寫率,持續維護 4 年以上

17、Bilibili-Evolved:嗶哩嗶哩增強瀏覽器插件,安裝插件后可支持:下載視頻、洗掉廣告、夜間模式等

Python 專案

18、asciinema:終端記錄工具,忘記錄屏軟體吧,純文本的錄制終端操作的工具,安裝簡單、使用方便,且生成的記錄檔案極小,但需要配合 JS 檔案播放

19、playwright-python:微軟開源的瀏覽器自動化工具,可以用 Python 語言操作瀏覽器啦,支持 Linux、macOS、Windows 系統下的 Chromium、Firefox 和 WebKit 瀏覽器

20、wagtail:目前最強大的開源 Django CMS(內容管理系統)之一,我很少用“最”這個字眼,節省時間就聊聊它驚艷到我的點吧,首先該專案更新、迭代活躍,其次專案首頁提到的功能都是免費的,沒有付費解鎖的騷操作,wagtail 專注于內容管理,不束縛前端實作,有趣的 StreamField 技術讓你的內容變得靈活且不失結構,竟然還支持 A/B 測驗,最后 Google、NASA 他們都在用這個專案

21、redis-memory-analyzer:Redis 實時記憶體分析工具,我比較好奇它是怎么實時獲取 redis 中 key 的情況和資訊,就看了下原始碼 scanner.py 檔案,發現是采用 scan_iter 方法,控制掃描 key 回傳的量,然后通過 yield 減少記憶體占用量,最后再加上 register_script 方法呼叫 Lua 腳本或pipeline 方法提高獲取 key 資訊的效率,分析后感覺這個工具可適用在資料量較大的情況,實時性要求在秒或者分鐘級的場景下

22、practical-python:大佬 David Beazley 開源的 Python 免費入門級教程,他是《Python Cookbook 第三版》、《Python 參考手冊》的作者,教程經過實際的教學實踐、包含課后練習題,在線學習,教程目錄如下:

Swift 專案

23、stats:macOS 選單欄上的監控工具,支持 CPU、GPU、記憶體、網路等監控和多語言

其它

24、ZY-Player:免費無廣告、高顏值+多平臺的桌面視瞥澩播放器,功能如下:

  • 全平臺支持 Windows、Mac、Linux
  • 視頻源支持自定義, 支持匯入/匯出
  • 播放歷史, 自動跳轉歷史進度
  • 支持精簡模式, 摸魚劃水
  • 顯示豆瓣評分

25、keysim:鍵盤配色預覽工具,“定制”這個操作一聽就很貴,下單之前先這個工具先看看效果吧,避免浪費錢,在線嘗試

26、tabler-icons:一組免費開源的圖示,目前共有 850+ 個圖示,我覺得都挺好看的,您覺得呢?

27、socialify:一鍵自動生成 GitHub 倉庫頭圖,很多 GitHub 開源專案的作者不會用 PS,想要制作一張專案推廣圖就很困難,Socialify 就是幫你解決這個頭疼的問題,在線嘗試

開源書籍

28、Mastering_Go_ZH_CN:《Mastering Go》的中文翻譯版《玩轉 Go》,在線閱讀

29、A-Philosophy-of-Software-Design-zh:《軟體設計的哲學》中文翻譯,在線閱讀

機器學習

30、video-object-removal:通過 Pytorch 實作繪制一個邊界框,即可洗掉視頻中要洗掉的物件,下圖是演示操作,框中紅色是抹掉的部分,洗掉前后的效果對比圖可進到專案首頁查看

31、mlflow:一個簡化機器學習開發的平臺,支持跟蹤實驗、代碼打包、部署模型等,它提供了一套輕量級的 API,可與目前主流機器學習 TensorFlow、PyTorch、XGBoost 等庫輕松整合

# 安裝:$ pip install mlflow
# 啟動:$ mlflow ui
# 示例代碼
import mlflow
mlflow.keras.autolog()
# other keras code
...

32、snownlp:一個 Python 寫的自然語言處理庫,使用簡單、功能強大,支持中文分詞、詞性標注、情感分析等

from snownlp import SnowNLP

s = SnowNLP(u'這個東西真心很贊')
s.words         # [u'這個', u'東西', u'真心',
                #  u'很', u'贊']
s.tags          # [(u'這個', u'r'), (u'東西', u'n'),
                #  (u'真心', u'd'), (u'很', u'd'),
                #  (u'贊', u'Vg')]
s.sentiments    # 0.9769663402895832 positive的概率

最后

如果你發現了 GitHub 上有趣的專案,歡迎在 HelloGitHub 專案提 issues 告訴我們,

削微寒 CSDN認證博客專家 萌新
微信搜【HelloGitHub】關注后可以找到我,HelloGitHub——分享 GitHub 上有趣、入門級的開源專案,每月 28 號更新,已持續維護 4 年有余,(重構官網中...)

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/196771.html

標籤:python

上一篇:從創建行程到進入main函式,發生了什么?

下一篇:cgb2007-京淘day03

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more