天天看點

《HelloGitHub》第 34 期

公告

新年快樂!大家的年終獎都發了啥?

《HelloGitHub》第 34 期

興趣是最好的老師,HelloGitHub 就是幫你找到興趣!
《HelloGitHub》第 34 期

簡介

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

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

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

在浏覽、參與這些項目的過程中,你将學習到更多程式設計知識、提高程式設計技巧、找到程式設計的樂趣。

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

以下為本期内容|每個月 28 号釋出最新一期|點選檢視往期内容

C++ 項目

1、playerdemo:開源、入門級視訊播放器跨平台視訊播放器。該播放器擁有視訊播放器基本功能,适合學習播放器開發技術,音頻、視訊技術

《HelloGitHub》第 34 期

Go 項目

2、sqler:根據 SQL 和配置檔案生成接口的工具。與傳統的 SQL 生成 RESETful API 的工具不同,這個工具允許你自定義一些 API 的前、後處理,Auth 之類的行為。啟動指令

sqler -config=path to config file

,配置示例:

adduser {
// 參數校驗
    validators {
        user_name_is_empty = "$input.user_name && $input.user_name.trim().length > 0"
        user_email_is_empty = "$input.user_email && $input.user_email.trim(' ').length > 0"
        user_password_is_not_ok = "$input.user_password && $input.user_password.trim(' ').length > 5"
    }

    bind {
        name = "$input.user_name"
        email = "$input.user_email"
        password = "$input.user_password"
    }

    methods = ["POST"]
// 權限校驗
    authorizer = <<JS
        (function(){
            log("use this for debugging")
            token = $input.http_authorization
            response = fetch("http://requestbin.fullcontact.com/zxpjigzx", {
                headers: {
                    "Authorization": token
                }
            })
            if ( response.statusCode != 200 ) {
                return false
            }
            return true
        })()
    JS

    exec = <<SQL
        INSERT INTO users(name, email, password, time) VALUES(:name, :email, :password, UNIX_TIMESTAMP());
        SELECT * FROM users WHERE id = LAST_INSERT_ID();
    SQL
}
           

3、color:Golang 的指令行色彩使用庫。擁有豐富的色彩渲染輸出、通用的 API 方法、相容 Windows 系統

《HelloGitHub》第 34 期

4、Modlishka:釣魚網站生成工具。該工具會根據給定的模版生成一個釣魚網站,然後在該網站輸入的使用者名密碼等敏感資訊會被記錄

《HelloGitHub》第 34 期

5、txqr:通過動态二維碼傳輸資料,如:傳輸檔案等。

6、gitbatch:批量管理 Git 倉庫的指令行工具

《HelloGitHub》第 34 期

Java 項目

7、hutool:功能豐富的 Java 工具包。它幫助我們實作了常用的工具方法,進而減少代碼的體積,提高開發效率。該項目最初是作者工作項目中的

util

子產品,後來慢慢積累并加入更多非業務相關工具類方法。經過整理修改,最終形成豐富的開源工具集。示例代碼:

int a = 1;
//aStr為"1"
String aStr = Convert.toStr(a);
           

8、android-viabus-architecture:一款響應式架構。借助總線轉發資料的請求和響應,實作 UI、業務的完全解耦

《HelloGitHub》第 34 期

9、DevUtils:Android 工具庫,注釋規範、API文檔清晰明了、工具類種類多。根據不同功能子產品封裝,友善使用。幫助開發人員,便捷、快速地開發安全、可靠的項目。内置部分常用的資源檔案,如 color.xml、layout.xml 等

JavaScript 項目

10、vConsole:騰訊開源的移動 H5 的控制台開發調試工具,支援檢視 console 日志、網絡請求、自定義插件等。示例代碼:

<script src="path/to/vconsole.min.js"></script>
<script>
  // init vConsole
  var vConsole = new VConsole();
  console.log('Hello world');
</script>

           
《HelloGitHub》第 34 期

11、omi:騰訊開源的通用 Web 元件化架構。特點:

  • 擁有官方 UI 元件庫
  • 使用 omio 可以相容到 IE8
  • 設計精巧、相容性好
  • 基于 Web Components 标準
  • 等等
import { render, WeElement, define } from 'omi'

define('my-counter', class extends WeElement {
    static observe = true
    
    data = {
      count: 1
    }

    sub = () => {
      this.data.count--
    }

    add = () => {
      this.data.count++
    }

    render() {
      return (
        <div>
          <button onClick={this.sub}>-</button>
          <span>{this.data.count}</span>
          <button onClick={this.add}>+</button>
        </div>
      )
    }
  })

render(<my-counter ></my-counter>, 'body')
           

12、RSSHub:輕量、易于擴充的 RSS 生成器,可以給任何奇奇怪怪的内容生成 RSS 訂閱源。現已支援豐富的源,詳情見文檔

13、hve-notes:靜态部落格寫作用戶端,你可以用它來記錄你的生活、心情、知識、筆記、創意。使用了 electron 技術,對于學習 Javascript 桌面端開發是一個很好的項目

《HelloGitHub》第 34 期

14、weapp-library:提供線上借書功能的開源小程式項目。連接配接讀者與圖書館,實作圖書借閱線上化。界面風格良好,功能完整。具有注冊登入、圖書搜尋、書單系統、訂單管理等功能。這是一個完整的小程式項目,包括了前後端的開發,并且撰寫了完善的文檔,适合初學者學習。可以掃描下面的小程式碼體驗:

《HelloGitHub》第 34 期

15、axial3d:實作了類似 GitHub 404 頁面的動畫效果。效果有趣,使用場景較多,并且實作了元件化,示例代碼:

<html>
<head>
    <title>Demo - Axial3d</title>
</head>
<body>
    <script src="https://unpkg.com/axial3d"></script>
    <div id="axial3d"></div>
    <script>
        (function () {
            var options = {
                selector: '#axial3d',
                imgs: [
                    {src: 'https://bestvist.github.io/axial3d/public/demo1/bg.png', left: '50px', top: '10px'},
                    {src: 'https://bestvist.github.io/axial3d/public/demo1/2.png', left: '150px', top: '10px'},
                    {src: 'https://bestvist.github.io/axial3d/public/demo1/3.png', left: '50px', top: '300px'},
                    {src: 'https://bestvist.github.io/axial3d/public/demo1/4.png', left: '300px', top: '300px'}
                ]
            }
            var effect = new Axial3d(options);
        })()
    </script>
</body>
</html>
           
《HelloGitHub》第 34 期

16、giojs:基于 Three.js 的 Web 3D 地球資料可視化的開源元件庫。使用 Gio.js 的網頁應用開發者,可以快速地以申明的方式建立自定義的 Web3D 資料可視化模型,添加資料,并且将其作為一個元件整合到自己的應用中。支援靜态 Dom、React和微信小程式。具有一下特點:

  • 易用性 -- 僅使用 4 行 Javascript 即可建立 3D 地球資料可視化模型
  • 定制化 -- 使用 Gio.js 提供的豐富的 API 來建立自定義樣式的 3D 地球
  • 現代化 -- 基于 Gio.js 建構高互動、跨平台、自适應的現代化 3D 前端應用

Objective-C 項目

17、keycastr:在螢幕上實時顯示目前按鍵的工具

《HelloGitHub》第 34 期

18、Karabiner-Elements:一款 macOS 的強大的修鍵軟體

PHP 項目

19、laravel-s:用于快速內建 Swoole 到 Laravel,開箱即用。特點:

  • 內建 LaravelS 之後無需使用 PHP FPM,直接基于 Swoole 開啟 HTTP Server
  • 代碼常駐記憶體之中,性能提升非常明顯
  • 可快速開發 WebSocket/TCP/UDP 服務
  • 支援異步任務隊列、自定義程序、定時任務,支援更多的業務場景
  • 可直接使用 Swoole 的很多特性
《HelloGitHub》第 34 期

Python 項目

20、sherlock:(英文)在主流社交網站,例如:GitHub、Facebook 等網站上查找指定的使用者名是否存在。你想取一個獨一無二的名字嗎?快試試吧

《HelloGitHub》第 34 期

21、click:Python 的第三方庫,用于快速建立指令行。支援裝飾器方式調用、多種參數類型、自動生成幫助資訊等。示例代碼如下:

import click

@click.command()
@click.option("--count", default=1, help="Number of greetings.")
@click.option("--name", prompt="Your name",
              help="The person to greet.")
def hello(count, name):
    """Simple program that greets NAME for a total of COUNT times."""
    for _ in range(count):
        click.echo("Hello, %s!" % name)

if __name__ == '__main__':
    hello()

# 下面為運作效果
$ python hello.py --count=3
Your name: Click
Hello, Click!
Hello, Click!
Hello, Click!
           

22、PSpider:代碼量極少,功能卻很完備的 Python 爬蟲架構。特點:

  • 功能完備:包含抓取、解析、存儲等
  • 代碼量少:友善閱讀源碼、動手修改、二次開發
《HelloGitHub》第 34 期

23、awesome-python-applications:(英文)介紹 Python 有趣、神奇的開源項目。目前涵蓋多個領域、項目豐富

24、ranger:以類似 VIM 操作,友善、快捷地管理檔案的工具

Swift 項目

25、iOS-Developer-Roadmap:(英文) iOS 開發者學習路線圖

其它

26、Visual-Studio-Code-Keymap-CN:VS Code 編輯器官方快捷鍵查圖漢化版

27、algorithm-visualizer:算法可視化工具。你可以自由選擇自己想學習的算法,每個算法它都清晰描繪了其原理和運作過程

28、html:《HTML 标準》中文版

機器學習

29、spinningup:(英文)OpenAI 制作的教育資源,可以更容易地學習深層強化學習。官方項目,淺顯易懂,提供練手的例子,友善初學者或對深層強化學習感興趣的人群學習和入門

30、the-gan-zoo:生成對抗網絡(Generative Adversarial Networks,簡稱GAN)的一個大集合,作者列舉了生成對抗網絡領域各式各樣的應用集合,大部分為論文,包含少數的 GitHub 項目。該項目對于 GAN 領域覆寫面全面,論文清單整理清晰,GAN 方向的研究者可以從這個項目中查詢到想看的經典的論文或者擴充自己的知識儲備

《HelloGitHub》第 34 期

31、pytorch-pretrained-BERT:Google 神級語言表示模型的 PyTorch 預訓練模型和 PyTorch 架構結合,使得更加容易上手。PyTorch 版本更友善小白上手實驗。示例代碼:

import torch
from pytorch_pretrained_bert import BertTokenizer, BertModel, BertForMaskedLM

# Load pre-trained model tokenizer (vocabulary)
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

# Tokenized input
text = "Who was Jim Henson ? Jim Henson was a puppeteer"
tokenized_text = tokenizer.tokenize(text)

# Mask a token that we will try to predict back with `BertForMaskedLM`
masked_index = 6
tokenized_text[masked_index] = '[MASK]'
assert tokenized_text == ['who', 'was', 'jim', 'henson', '?', 'jim', '[MASK]', 'was', 'a', 'puppet', '##eer']

# Convert token to vocabulary indices
indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text)
# Define sentence A and B indices associated to 1st and 2nd sentences (see paper)
segments_ids = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]

# Convert inputs to PyTorch tensors
tokens_tensor = torch.tensor([indexed_tokens])
segments_tensors = torch.tensor([segments_ids])
           

32、RecommenderSystem-Paper:推薦系統論文整理清單,包括了行業頂尖會議 AAAI、NIPS 等發表的論文,以及 KDD 一些獲獎論文。友善推薦系統方向以及文本表示方向等研究人員,跟蹤閱讀行業内經典論文和最新研究方向

33、Semantic-Segmentation-Suite:圖像語義分割模型元件整理,包含了模型、資料增廣、準确率評價等子產品。友善研究者快速搭建和試驗一個圖像語義分割模型,同時內建了一些 state-of-the-art 的模型

《HelloGitHub》第 34 期

換種方式閱讀

  • 網站: https://hellogithub.com
  • GitBook: https://gitbook.hellogithub.com

聲明

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

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

作者:削微寒

掃描左側的二維碼可以聯系到我

《HelloGitHub》第 34 期

本作品采用署名-非商業性使用-禁止演繹 4.0 國際 進行許可。