《HelloGitHub》第 34 期

公告

新年快樂!你們的年終獎都發了啥?javascript

《HelloGitHub》第 34 期

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

簡介

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

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

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

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

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


如下爲本期內容|每月 28 號發佈最新一期|點擊查看往期內容android

C++ 項目

一、playerdemo:開源、入門級視頻播放器跨平臺視頻播放器。該播放器擁有視頻播放器基本功能,適合學習播放器開發技術,音頻、視頻技術laravel

Go 項目

二、sqler:根據 SQL 和配置文件生成接口的工具。與傳統的 SQL 生成 RESETful API 的工具不一樣,這個工具容許你自定義一些 API 的前、後處理,Auth 之類的行爲。啓動命令 sqler -config=path to config file,配置示例:git

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
}

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

四、Modlishka:釣魚網站生成工具。該工具會根據給定的模版生成一個釣魚網站,而後在該網站輸入的用戶名密碼等敏感信息會被記錄

五、txqr:經過動態二維碼傳輸數據,如:傳輸文件等。

六、gitbatch:批量管理 Git 倉庫的命令行工具

Java 項目

七、hutool:功能豐富的 Java 工具包。它幫助咱們實現了經常使用的工具方法,從而減小代碼的體積,提升開發效率。該項目最初是做者工做項目中的util模塊,後來慢慢積累並加入更多非業務相關工具類方法。通過整理修改,最終造成豐富的開源工具集。示例代碼:

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

八、android-viabus-architecture:一款響應式架構。藉助總線轉發數據的請求和響應,實現 UI、業務的徹底解耦

九、DevUtils:Android 工具庫,註釋規範、API文檔清晰明瞭、工具類種類多。根據不一樣功能模塊封裝,方便使用。幫助開發人員,便捷、快速地開發安全、可靠的項目。內置部分經常使用的資源文件,如 color.xml、layout.xml 等

JavaScript 項目

十、vConsole:騰訊開源的移動 H5 的控制檯開發調試工具,支持查看 console 日誌、網絡請求、自定義插件等。示例代碼:

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

十一、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')

十二、RSSHub:輕量、易於擴展的 RSS 生成器,能夠給任何奇奇怪怪的內容生成 RSS 訂閱源。現已支持豐富的源,詳情見文檔

1三、hve-notes:靜態博客寫做客戶端,你能夠用它來記錄你的生活、心情、知識、筆記、創意。使用了 electron 技術,對於學習 Javascript 桌面端開發是一個很好的項目

1四、weapp-library:提供在線借書功能的開源小程序項目。鏈接讀者與圖書館,實現圖書借閱線上化。界面風格良好,功能完整。具備註冊登陸、圖書搜索、書單系統、訂單管理等功能。這是一個完整的小程序項目,包括了先後端的開發,而且撰寫了完善的文檔,適合初學者學習。能夠掃描下面的小程序碼體驗:

1五、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>

1六、giojs:基於 Three.js 的 Web 3D 地球數據可視化的開源組件庫。使用 Gio.js 的網頁應用開發者,能夠快速地以申明的方式建立自定義的 Web3D 數據可視化模型,添加數據,而且將其做爲一個組件整合到本身的應用中。支持靜態 Dom、React和微信小程序。具備一下特色:

  • 易用性 -- 僅使用 4 行 Javascript 便可建立 3D 地球數據可視化模型
  • 定製化 -- 使用 Gio.js 提供的豐富的 API 來建立自定義樣式的 3D 地球
  • 現代化 -- 基於 Gio.js 構建高交互、跨平臺、自適應的現代化 3D 前端應用

Objective-C 項目

1七、keycastr:在屏幕上實時顯示當前按鍵的工具

1八、Karabiner-Elements:一款 macOS 的強大的修鍵軟件

PHP 項目

1九、laravel-s:用於快速集成 SwooleLaravel,開箱即用。特色:

  • 集成 LaravelS 以後無需使用 PHP FPM,直接基於 Swoole 開啓 HTTP Server
  • 代碼常駐內存之中,性能提高很是明顯
  • 可快速開發 WebSocket/TCP/UDP 服務
  • 支持異步任務隊列、自定義進程、定時任務,支持更多的業務場景
  • 可直接使用 Swoole 的不少特性
  • 等等

Python 項目

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

2一、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!

2二、PSpider:代碼量極少,功能卻很完備的 Python 爬蟲框架。特色:

  • 功能完備:包含抓取、解析、存儲等
  • 代碼量少:方便閱讀源碼、動手修改、二次開發
  • 等等

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

2四、ranger:以相似 VIM 操做,方便、快捷地管理文件的工具

Swift 項目

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

其它

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

2七、algorithm-visualizer:算法可視化工具。你能夠自由選擇本身想學習的算法,每一個算法它都清晰描繪了其原理和運做過程

2八、html:《HTML 標準》中文版

機器學習

2九、spinningup:(英文)OpenAI 製做的教育資源,能夠更容易地學習深層強化學習。官方項目,淺顯易懂,提供練手的例子,方便初學者或對深層強化學習感興趣的人羣學習和入門

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

3一、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])

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

3三、Semantic-Segmentation-Suite:圖像語義分割模型組件整理,包含了模型、數據增廣、準確率評價等模塊。方便研究者快速搭建和試驗一個圖像語義分割模型,同時集成了一些 state-of-the-art 的模型


換種方式閱讀

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

聲明

若是你發現了好玩、有意義的開源項目 點擊這裏 分享你以爲有意思的項目。

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

相關文章
相關標籤/搜索