《HelloGitHub》第 24 期

削微寒發表於2019-03-04

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

《HelloGitHub》第 24 期

簡介

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

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

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

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

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


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

C 專案

1、reading-code-of-nginx-1.9.2:nginx-1.9.2 原始碼通讀分析註釋,帶詳盡函式中文分析註釋以及相關函式流程呼叫註釋

Go 專案

2、annie:Go 編寫的快速、簡單、乾淨的視訊下載程式。支援嗶哩嗶哩、YouTube 視訊網站

$ annie -c cookies.txt https://www.bilibili.com/video/av20203945/

 Site:      嗶哩嗶哩 bilibili.com
 Title:     【2018拜年祭單品】相遇day by day
 Type:      video
 Stream:
     [default]  -------------------
     Quality:         高清 1080P60
     Size:            220.65 MiB (231363071 Bytes)
     # download with: annie -f default "URL"

 16.03 MiB / 220.65 MiB [==>----------------------------]   7.26% 9.65 MiB/s 19s
複製程式碼

3、knowledge:Go 知識圖譜

Java 專案

4、PreLoader:Android 頁面在開啟後需要在 UI 初始化完成後才能發起網路請求,以免網路請求返回後展示到 UI 時出現錯誤。但這種序列的做法導致頁面的整個初始化時間變長。使用該工具可以在開啟頁面之前預載入資料,然後在頁面 UI 初始化完成後提取預載入好的資料進行展示,從而縮短頁面初始化時間,提升使用者體驗。示例程式碼如下:

// 開啟預載入任務
int preLoaderId = PreLoader.preLoad(new Loader());
Intent intent = new Intent(this, PreLoadBeforeLaunchActivity.class);
intent.putExtra("preLoaderId", preLoaderId);
startActivity(intent);
// 預載入任務:模擬網路介面請求獲取資料
class Loader implements DataLoader<String> {
    @Override
    public String loadData() {
        //此方法線上程池中執行,無需再開子執行緒去載入資料
        try {
            Thread.sleep(600);
        } catch (InterruptedException ignored) {
        }
        return "data from network server";
    }
}

// 在Activity(或Fragment)中UI初始化完成後開始監聽預載入資料
PreLoader.listenData(preLoaderId, new Listener());

// 資料載入完成後,會呼叫DataListener.onDataArrived(...)來處理載入後的資料
class Listener implements DataListener<String> {
    @Override
    public void onDataArrived(String data) {
        //此方法在主執行緒中執行,無需使用Handler切換執行緒執行
        Toast.makeText(activity, data, Toast.LENGTH_SHORT).show();
    }
}
複製程式碼

5、SuperLike:仿今日頭條點贊噴射表情動畫

《HelloGitHub》第 24 期

JavaScript 專案

6、node-in-debugging:《Node.js 除錯指南》作者整理了使用 Node.js 開發這幾年的除錯經驗和思路

7、chrome-music-lab:Chrome 音樂實驗室是一個網站,讓學習音樂變得更加簡單、好玩。完全基於Web端,國內可直接訪問、老少皆宜、支援多種樂器,圓你一個音樂夢

《HelloGitHub》第 24 期

8、mpvue:小程式的前端框架。框架基於 Vue.js 核心,修改了 Vue.js 的 runtime 和 compiler 實現。使其可以執行在小程式環境中,為小程式開發引入了整套 Vue.js 開發體驗。5 分鐘上手視訊

  • 徹底的元件化開發能力:提高程式碼複用性
  • 完整的 Vue.js 開發體驗
  • 方便的 Vuex 資料管理方案:方便構建複雜應用
  • 快捷的 webpack 構建機制:自定義構建策略、開發階段 hotReload
  • 支援使用 npm 外部依賴
  • 使用 Vue.js 命令列工具 vue-cli 快速初始化專案
  • H5 程式碼轉換編譯成小程式目的碼的能力

9、30-seconds-of-code:精選可以在 30秒 或更短的時間內理解的實用 JavaScript 程式碼片段集合

《HelloGitHub》第 24 期

Objective-C 專案

10、WeChatPlugin-MacOS:Mac 版微信小助手,支援自動回覆、訊息防撤回、遠端控制、微信多開、會話置底、免認證登入、通知快捷回覆等功能

《HelloGitHub》第 24 期

11、LSAnimator:通過使用 LSAnimator(Objective-C)或者 CoreAnimator(Swift)可以用少量的程式碼實現複雜而又易於維護的動畫,並且彌補了 JHChainableAnimations 的致命缺陷。詳細描述

《HelloGitHub》第 24 期

PHP 專案

12、DzzOffice:一套開源辦公套件,適用於企業、團隊搭建自己的 類似 Google 企業應用套件、微軟 Office365 的企業協同辦公平臺。線上演示

《HelloGitHub》第 24 期

Python 專案

13、HAipproxy:使用 Scrapy+Redis 實現的高可用分散式 IP 代理池,為大型分散式爬蟲提供高可用低延遲的代理 IP 資源。

from client.py_cli import ProxyFetcher
args = dict(host=`127.0.0.1`, port=6379, password=`123456`, db=0)
#&emsp;這裡`zhihu`的意思是,去和`zhihu`相關的代理ip校驗佇列中獲取ip
#&emsp;這麼做的原因是同一個代理IP對不同網站代理效果不同
fetcher = ProxyFetcher(`zhihu`, strategy=`greedy`, redis_args=args)
# 獲取一個可用代理
print(fetcher.get_proxy())
# 獲取可用代理列表
print(fetcher.get_proxies()) # or print(fetcher.pool)
複製程式碼

以知乎為目標抓取網站,該代理IP池的實際效能測試結果如下:

《HelloGitHub》第 24 期

14、MovieHeavens:基於 Pyqt4 的電影天堂電影搜尋工具,再也不用忍受各種廣告和點選跳轉了

《HelloGitHub》第 24 期

15、WechatSogou:基於搜狗微信搜尋的微信公眾號爬蟲庫,極易上手。示例程式碼:

import wechatsogou

ws_api = wechatsogou.WechatSogouAPI()
ws_api.get_gzh_info(`微信名稱`)
複製程式碼

Swift 專案

16、iina:Mac 下開源多媒體播放器,支援多國語言、高逼格 UI。安裝:brew cask install iina

《HelloGitHub》第 24 期

其它

17、Interview-Notebook:該專案整理了技術面試中需要掌握的基礎知識,包含了網路、作業系統、演算法、資料庫、Java、分散式等

18、blog:螞蟻資料體驗技術團隊的部落格

19、work-in-australia:介紹程式設計師如何申請到澳洲工作

20、front-end-interview-handbook:與典型的軟體工程師面試不同,前端面試對演算法的重視比較低。面試會更多考查錯綜複雜的前端知識,像 HTML、CSS、JavaScript 等等。這個專案整理了這些問題,並給出了答案以及參考連線。中文版

機器學習

21、MachineLearning:ApacheCN 製作的《機器學習實戰》。配套視訊:編碼能力強,建議觀看《機器學習實戰 – 教學版》
編碼能力弱,建議觀看《機器學習實戰 – 討論版》

22、tensorflow-docs:TensorFlow Docs 是由掘金翻譯計劃實時維護的 TensorFlow 官方文件中文版,維護者為全球各大公司開發人員和各著名高校研究者及學生

23、DeepLeague:英雄聯盟的機器學習專案,規模不大,適合研究一些 CV 和 ML 的演算法應用

《HelloGitHub》第 24 期

換種方式閱讀

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

宣告

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

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

相關文章