《HelloGitHub》第 36 期

HelloGitHub發表於2019-03-28

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

《HelloGitHub》第 36 期

簡介

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

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

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

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

? 最後 HelloGitHub 這個專案就誕生了 ?


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

C# 專案

1、xs:一個專注於簡單的開源跨平臺程式語言。這門語言的設計目標是改進閱讀與編寫效率,降低語法負擔。讓使用者能夠把真正的注意力放在解決問題上,只需極少的程式碼就能優雅地表達邏輯。中文手冊,示例程式碼如下:

# export namespace
\HelloWorld {
    System # import namespace
}
# package
program -> {
    # main function
    Main() -> () {
        # list
        greetings := {"Hello", "Hola", "Bonjour",
                    "Ciao", "こんにちは", "안녕하세요",
                    "Cześć", "Olá", "Здравствуйте",
                    "Chào bạn", "您好"}
        # for-each  
        @ item <- greetings {
            # switch
            ? item -> [ 0 <= 8 ] {
                prt(item) # call function
            } _ {
                # lambda
                prt( greetings.filter( {it -> it.len> 4} ) )
                <- @
            }
        }
    }
}
複製程式碼

C++ 專案

2、calculator:微軟 Windows 系統預裝的計算器工具開源了。該工具提供標準、科學、程式設計師計算器的功能,以及各種度量單位和貨幣之間的轉換功能。實現語言為 C++ 程式碼並不複雜,快來看看微軟工程師編寫的程式碼吧!執行效果如下:

《HelloGitHub》第 36 期

CSS 專案

3、CSS-Inspiration:這裡彙集了 CSS 的使用和學習的示例程式碼,展示不同 CSS 屬性或者不同的課題使用 CSS 來解決的各種方法。線上閱讀地址包含程式碼實際展示樣式

4、bootstrap-table:基於 Bootstrap 的 jQuery 表格外掛,通過簡單的設定就可以擁有強大的單選、多選、排序、分頁、編輯、匯出、過濾(擴充套件)等功能。示例程式碼:

<table data-toggle="table">
  <thead>
    <tr>
      <th>Item ID</th>
      <th>Item Name</th>
      <th>Item Price</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Item 1</td>
      <td>$1</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Item 2</td>
      <td>$2</td>
    </tr>
  </tbody>
</table>
複製程式碼

《HelloGitHub》第 36 期

Go 專案

5、drone:一個基於 Docker 的持續整合平臺,使用 Go 語言編寫

《HelloGitHub》第 36 期

6、etcd:一個高可用的分散式鍵值資料庫,k8s 全家桶標配的註冊與發現服務。它採用 raft 一致性演算法,基於 Go 語言實現。可以通過該專案瞭解、學習 raft 的實際應用場景

# 使用 etcd 的客戶端存取鍵值對
$ etcdctl put mykey "this is awesome"
$ etcdctl get mykey
複製程式碼

7、pprof:Go 語言的效能分析工具,可以用來除錯 Go 程式的記憶體洩露、goroutine 洩露之類的問題。使用方法:

# 安裝
$ go get -u github.com/google/pprof
# 生成一個profile檔案
$ pprof -top [你的golang程式二進位制檔案] profile.pb.gz
# 生成火焰圖
$ pprof -web [你的golang程式二進位制檔案] profile.pb.gz
複製程式碼

8、learn-go-with-tests:通過單元測試學習 Go 語言。下載倉庫原始碼後,進入對應目錄。每一個小資料夾就是一個對應的 Go 專案,在裡面go test即可執行單元測試。由於是測試驅動開發,所以需要在你改動程式碼之後跑通單元測試才算學會通過。每一個對應的資料夾都有相應 Markdown 文字教程,比較淺顯易懂。而且還有中文版

9、AUXPI:基於 API 的簡單圖床應用。整合了主流圖床的 API,並且做了一個 GUI 用來管理,安裝簡單

《HelloGitHub》第 36 期

Java 專案

10、Luban:圖片壓縮是常見的問題,那麼微信是如何處理影象的壓縮?Luban(魯班)就是通過在微信朋友圈傳送近 100 張不同解析度的圖片,對比原圖與微信壓縮後的圖片逆向推算出來的壓縮演算法。示例程式碼:

// 同步呼叫
Flowable.just(photos)
    .observeOn(Schedulers.io())
    .map(new Function<List<String>, List<File>>() {
      @Override public List<File> apply(@NonNull List<String> list) throws Exception {
        // 同步方法直接返回壓縮後的檔案
        return Luban.with(MainActivity.this).load(list).get();
      }
    })
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe();
複製程式碼

《HelloGitHub》第 36 期

11、yacy_search_server:一款採用了新的搜尋方法的搜尋引擎軟體。 它不需要中央伺服器,但它搜尋的結果來自於獨立的分散式網路。在這樣的分散式網路中,沒有任何一個實體可以決定列出的內容或結果出現的順序。啟動和關閉的方法:

  • GNU/Linux 系統,啟動:./startYACY.sh、關閉:./stopYACY.sh
  • Windows 系統,啟動:雙擊startYACY.bat、 關閉:雙擊stopYACY.bat
  • Mac OS X 系統,請使用 Mac 應用程式,並像其他 Mac 應用程式那樣啟動或停止它(雙擊)

JavaScript 專案

12、Web:前端入門的圖文教程,從 0-1 的過程。內容詳細,對於新入行前端的同學有很多的幫助

13、ncform:只需要配置相關引數,便可方便生成表單的UI元件,自帶校驗規則滿足日常 90% 的要求。表單是 Web 應用中常見的元件,但是開發表單是一個重體力活,ncform 通過配置便可生成表單,極大的提高了開發效率

《HelloGitHub》第 36 期

14、vscode-leetcode:這是一個可以讓使用者在 VS Code 編輯器中,練習 LeetCode 習題的外掛。支援:檢視高票解答、提交答案、測試答案等。提高了刷題效率,助你在校招、社招中殺出重圍。上班摸魚刷題利器

《HelloGitHub》第 36 期

15、griffith:讓流式播放變得簡單。無論你視訊格式是 mp4 還是 hls,Griffith 都能使用媒體源擴充(MSE)來實現分段載入等功能,提供線上視訊播放。示例程式碼:

// yarn add griffith

import Player from 'griffith'

const sources = {
  hd: {
    play_url: 'https://zhstatic.zhihu.com/cfe/griffith/zhihu2018_hd.mp4',
  },
  sd: {
    play_url: 'https://zhstatic.zhihu.com/cfe/griffith/zhihu2018_sd.mp4',
  },
}

render(<Player sources={sources} ></Player>)
複製程式碼

16、makegirlsmoe_web:動漫角色圖片生成工具。支援:選擇髮色、髮型、眼睛、皮膚、微笑、風格等等特徵生成二次元圖片。自定義生成可愛的二次元頭像,二次元界福音。線上嘗試

《HelloGitHub》第 36 期

Objective-C 專案

17、BackgroundMusic:macOS 音訊工具,包含功能:自動暫停音樂、設定各個應用程式的音量、錄製系統音訊

《HelloGitHub》第 36 期

PHP 專案

18、php-console:使用簡單,功能全面的 PHP 命令列應用庫。提供控制檯引數解析、命令執行、顏色風格輸出、 使用者資訊互動等功能

《HelloGitHub》第 36 期

19、PasteMe:快速分享文字、程式碼的網站專案。支援加密、一鍵複製、永久儲存、閱後即焚等功能。線上示例

《HelloGitHub》第 36 期

Python 專案

20、ds-cheatsheets:Python 在資料科學方面使用庫的速查表,包含了 Pandas、Jupyter、SQL、Dask 等。雖然都是些基本的 API 呼叫,但是用來備忘和速查足以

《HelloGitHub》第 36 期

21、better-exceptions:更加友好、實用、漂亮的輸出 Python 異常

《HelloGitHub》第 36 期

22、scrapydweb:Scrapy 爬蟲管理平臺,支援:Scrapyd 叢集管理、日誌視覺化、定時任務、郵件通知、移動端 UI

《HelloGitHub》第 36 期

23、awesome-python-login-model:該專案收集了各大網站登陸方式和部分網站的爬蟲程式。登陸方式實現包含 selenium 登入、通過抓包直接模擬登入等。有助於新手研究、編寫爬蟲

24、gita:基於 Python 開發的管理 git 工具,使用後可在任何目錄下代理執行 git 指令。同時支援同時顯示多個 repo 的狀態資訊、本地分支與遠端分支的關係等

《HelloGitHub》第 36 期

25、dash:一款只用幾百行 Python 程式碼就可以輕易實現資料分析視覺化的利器,是目前 Python 社群資料視覺化主要的工具之一。具有:使用簡單、易於擴充套件、開發團隊活躍等特點

《HelloGitHub》第 36 期

26、pylane:一個基於 gdb 的 Python 程式注入和除錯工具。通過 gdb trace Python 程式,然後在該程式的 Python vm 中動態地注入一段 Python 程式碼, 從而對一個執行中的 Python 程式執行一段任意的邏輯。更多 Python 除錯經驗,可閱讀這篇文章

《HelloGitHub》第 36 期

Ruby 專案

27、jekyll:強大的靜態部落格網站生成工具。無需資料庫,可以通過 Markdown 和 Config 輕鬆生成一個靜態部落格。該專案十分成熟、社群活躍、擁有多種主題可供選擇。最後可以通過 GitHub Page 把生成的部落格免費部署上線。快速開始:

1. 安裝 jekll:gem install bundler jekyll
2. 建立專案:jekyll new my-awesome-site
3. 進入新建立的專案:cd my-awesome-site
4. 本地執行:bundle exec jekyll serve
5. 本地訪問地址:http://localhost:4000
複製程式碼

Swift 專案

28、Bagel:一個小型、原生的 iOS 網路除錯工具。使用過程不需要配置證照、代理之類的東西。只需要 iOS 裝置和 Mac 處於同一網路,就可以檢視、監控 App 的網路流量等資訊

《HelloGitHub》第 36 期

其它

29、howto-make-more-money:該專案介紹了程式設計師如何掙零花錢的姿勢

30、translations:一些不錯的英文資料、文章翻譯專案

31、ChinaMobilePhoneNumberRegex:一組匹配中國大陸手機號碼的正規表示式

32、web-frameworks:該專案展示了不同程式語言的 Web 框架效能對比,持續更新。可以作為挑選 Web 框架的參照資訊

《HelloGitHub》第 36 期

33、FiraCode:高逼格的具有程式設計連字的等寬字型,最適合在程式設計編輯器、IDE、終端中使用。十分酷的字型,可以增加寫程式碼的慾望

《HelloGitHub》第 36 期

34、ChromeAppHeroes:優秀、實用的 Chrome 外掛集合。該專案還包含外掛的中文的使用介紹,為的是讓好的外掛被更多人發現和使用

開源書籍

35、PythonDataScienceHandbook:英文原版《Python Data Science Handbook》,該書對於希望或已經從事資料科學相關工作的 Python 工程師而言是重要的學習手冊。線上閱讀

36、Go42:《Go語言四十二章經》Golang 入門書籍。書中作者總結了自己踩坑的經驗總結和思考,線上閱讀

機器學習

37、BigGAN-PyTorch:“Bye Bye TPU”,4 個 GPU 就能訓練“史上最強” BigGAN!只需 4-8 個 GPU 即可訓練,擺脫了算力束縛

38、Virgilio:本資源庫旨在為以下領域提供三種有機完整的學習路徑:機器學習、商業智慧、雲端計算。在此你將能夠了解相關原理並且在專案實踐中予以運用。如果仔細遵循這些學習路徑,則可以從零開始構建完整的認識和獲得始終可用的技能。事實上,這些學習路徑不需要之前有相關知識,但基礎程式設計和簡單數學是理解和實踐大多數相關概念的必要條件

39、QuickDraw:谷歌開發的一個流行的線上遊戲,神經網路會猜測你在畫什麼。神經網路從每幅圖畫中學習,提高正確猜測塗鴉內容的能力。現在你可以基於這個倉庫,用 Python 構建自己的 Quick Draw 遊戲

40、GNNPapers:自從卷積神級網路面世以來,大部分人將其應用在規則的空間結構資料當中,比如影象。但是現實中存在更多的並不具備規則的空間結構的資料,因此研究人員提出了處理這部分資料的網路模型-GNN。該專案列舉了 GNN 方面的論文,較為全面,適合有一定基礎的人閱讀

41、faceswap:這個工具可以對圖片和視訊進行換臉。可以很方便地處理圖片和視訊,搞些有意思的事情


換種方式閱讀

宣告

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

歡迎轉載,請註明出處和作者,同時保留宣告。

相關文章