《HelloGitHub》第 32 期


公告

新加入了 2 位機器學期的小伙伴負責機器學習專欄。項目的首頁增加合作組織一欄,如有開源組織有意合作可以點擊聯系我

我們還在路上,不停地前行。

《HelloGitHub》第 32 期

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

簡介

分享 GitHub 上有趣、入門級的開源項目。

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

  • 會編程的可以貢獻代碼
  • 不會編程的可以反饋使用這些工具中的 Bug
  • 幫着宣傳你覺得優秀的項目
  • Star 項目⭐️

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

🎉 最后 HelloGitHub 這個項目就誕生了 🎉


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

C 項目

1、os-tutorial:(英文)如何從頭開始創建操作系統

2、nvtop:NVIDIA GPU 類 (h)top 的任務監控工具,它可以監控多個 GPU 並以熟悉的方式(類 htop 方式)打印有關它們的信息

C# 項目

3、QuickLook:它允許 Windows 用戶只需按空格鍵即可以快速地查看文件內容(類 macOS 的 Quick Look)

C++ 項目

4、oatpp:輕量、高性能、零依賴,純 C++ 實現的 Web 框架。示例代碼片段:

ENDPOINT("GET", "demo/api/json", getJson) {
  auto dto = MyDto::createShared();
  dto->statusCode = 200;
  dto->message = "Hello json";
  return createDtoResponse(Status::CODE_200, dto);
}

Output:
{"message": "Hello json", "statusCode": 200}

Go 項目

5、go-sniffer:該工具通過抓包截取項目中的數據庫、redis 請求解析成相應的語句。便於調試,不要修改代碼,直接嗅探項目中的數據請求。使用說明如下:

=======================================================================
[使用說明]

    go-sniffer [設備名] [插件名] [插件參數(可選)]

    [例子]
          go-sniffer en0 redis          抓取redis數據包
          go-sniffer en0 mysql -p 3306  抓取mysql數據包,端口3306

    go-sniffer --[命令]
               --help 幫助信息
               --env  環境變量
               --list 插件列表
               --ver  版本信息
               --dev  設備列表
    [例子]
          go-sniffer --list 查看可抓取的協議

=======================================================================
[設備名] : lo0 :   127.0.0.1
[設備名] : en0 : x:x:x:x:x5:x  192.168.1.3
[設備名] : utun2 :   1.1.11.1
=======================================================================

6、dive:用來探索 docker 鏡像每一層文件系統,以及發現縮小鏡像體積方法的命令行工具。啟動命令:dive 鏡像名

7、soar:SQL 自動優化和改寫的工具。可以自動優化 MySQL 語法族,並且給出為什么要這樣優化的理由。功能特點:

  • 跨平台支持
  • 目前只支持 MySQL 語法族協議的 SQL 優化
  • 支持基於啟發式算法的語句優化
  • 支持復雜查詢的多列索引優化(UPDATE、INSERT、DELETE、SELECT)
  • 等等
echo "select title from sakila.film" | ./soar 
# Query: 25807E6B94BEA72C
★ ★ ★ ★ ☆ 80分
SELECT
  title
FROM
  sakila. film
##  最外層SELECT未指定WHERE條件
* **Item:**  CLA.001
* **Severity:**  L4
* **Content:**  SELECT語句沒有WHERE子句,可能檢查比預期更多的行(全表掃描)。對於SELECT COUNT(\*)類型的請求如果不要求精度,建議使用SHOW TABLE STATUS或EXPLAIN替代。

8、websocketd:把命令行的輸出 stdout 和 stderr 重定向為一個 websocket 服務的工具。運行步驟如下:

  1. 安裝命令:brew install websocketd
  2. 創建 count.sh 內容如下
  3. 運行 count.sh,命令:./count.sh
  4. 啟動一個 websocket server,命令:websocketd --port=8080 ./count.sh
  5. 創建 html 文件,代碼如下
  6. 點擊打開 count.html 文件,查看效果
count.sh 文件內容如下

#!/bin/bash
for ((COUNT = 1; COUNT <= 3; COUNT++)); do
  echo $COUNT
  sleep 1
done

count.html 文件內容如下

<!DOCTYPE html>
<pre id="log"></pre>
<script>
  // helper function: log message to screen
  function log(msg) {
    document.getElementById('log').textContent += msg + '\n';
  }

  // setup websocket with callbacks
  var ws = new WebSocket('ws://localhost:8080/');
  ws.onopen = function() {
    log('CONNECT');
  };
  ws.onclose = function() {
    log('DISCONNECT');
  };
  ws.onmessage = function(event) {
    log('MESSAGE: ' + event.data);
  };
</script>

9、athens:Go Modules 下載代理服務,解決國內 Go 裝包的痛。媽媽再也不用擔心我因為裝不上依賴庫而不吃飯,使用步驟:

$ export GO111MODULE=on
$ export GOPROXY=http://127.0.0.1:3000
$ git clone https://github.com/athens-artifacts/walkthrough.git
$ cd walkthrough
$ go run .
go: downloading github.com/athens-artifacts/samplelib v1.0.0
The 🦁 says rawr!

10、archiver:命令行壓縮和解壓縮工具。終於不用再記 tar -czvf 了,使用命令:

# Syntax: arc archive [archive name] [input files...] 壓縮

$ arc archive test.tar.gz file1.txt images/file2.jpg folder/subfolder

# Syntax: arc unarchive [archive name] [destination] 解壓縮

$ arc unarchive test.tar.gz

Java 項目

11、ratel:命令行可聯網的斗地主游戲。Ratel 分客戶端和服務端,你可以讓小伙伴們的客戶端都連接你的服務器進行游戲,也可以直接連接作者的公網服務器進行游戲

12、SpiderMan:手機端顯示 Android 崩潰日志,示例代碼如下:

SpiderMan.init(this)
//設置回調異常信息,友盟等第三方崩潰信息收集平台會用到,
.setOnCrashListener(new SpiderMan.OnCrashListener() {
    /**
      *
      * @param t
      * @param ex
      * @param model 崩潰信息記錄,包含設備信息
      */
    @Override
    public void onCrash(Thread t, Throwable ex, CrashModel model) {
      
    }
});

JavaScript 項目

13、three.js:一個知名的 JavaScript 3D 庫。隨着數據可視化以及 Web AR 的流行,會越來越多使用到 three.js ,尤其是和 Vue/React 前端框架結合使用。官方網站包含豐富的示例和全面的中文文檔,趕快去寫幾個 demo 熟悉下該庫吧

14、storybook:UI 組件開發測試的環境。你可以使用 React、React Native、Vue、Angular、Ember 開發你的組件,並且可以使用 storybook 提供的眾多插件進行測試以及開發。在線示例

15、hexo:基於 Node.js 快速、簡潔且高效的靜態博客生成框架。可以使用 hexo 快速生成靜態博客,它擁有豐富的插件庫主題庫。在使用 hexo 的時候也可以自己創建、定制屬於自己的主題

16、picojs:200 行實現的面部識別庫,在線示例

Objective-C 項目

17、MacPass:一款 macOS 平台的免費、開源、實用的密碼管理工具

Python 項目

18、himawaripy:一個 Python3 腳本,它會定時(需設置定時任務)抓取由日本 Himawari 8 氣象衛星拍攝的接近實時的地球照片,並將它設置成你的桌面背景

其它

19、search-engine-optimization:(英文)這個項目收集了很多 SEO 優化的建議

20、lemonade-stand:《開源項目掙錢實用手冊》中文版

21、ProgrammingFonts:適合程序員的編程字體的集合,現在有 30 多種奇妙的字體

22、Linux-Tutorial:Java 程序員眼中的 Linux

23、Best-websites-a-programmer-should-visit:(英文)一些對程序員有用的網站,網站類別包含:新聞、查問題、學習、教程等

開源書籍

24、sdn-handbook:有關 SDN 的資料和書籍非常豐富,但入門和學習 SDN 依然是非常困難。該項目整理了 SDN 實踐中的一些基本理論和實踐案例心得,希望大家看完后有所收獲

25、write-you-a-haskell:(英文)《Write You a Haskell》

機器學習

26、awesome-machine-learning:一個精選的機器學習框架、庫、軟件的集合項目

27、fastai:利用當前最好的深度學習算法簡化訓練神經網絡的過程。包含了很多“開箱即用”的工具,支持 Vision、Collab 等模型。示例代碼:

# here's how to train an MNIST model using resnet18
untar_data(MNIST_PATH)
data = image_data_from_folder(MNIST_PATH)
learn = create_cnn(data, tvm.resnet18, metrics=accuracy)
learn.fit(1)

28、deepvariant:一個數據分析工作流。能夠使用深度神經網絡從下一代 DNA 序列數據中調用遺傳變異體,聯想到了最近的基因編輯人類事件。關於如何工作的技術細節,如下圖:

29、AlphaAI:使用無監督學習和監督學習來預測股票,有趣的項目。運行步驟如下:

git clone https://github.com/VivekPa/AlphaAI.git
cd AlphaAI
pip install -r requirements.txt
python run.py

30、bert:一種新的語言表征模型,來自 Transformer 的雙向編碼器表征。目前最強 NLP 預訓練模型,橫掃 11 項 NLP 任務記錄


換種方式閱讀

聲明

如果你發現了好玩、有意義的開源項目 點擊這里 分享你覺得有意思的項目。

歡迎轉載,請注明出處和作者,同時保留聲明。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM