《HelloGitHub》第 40 期
興趣是最好的老師,HelloGitHub?就是幫你找到興趣!
簡介
分享 GitHub 上有趣、入門級的開源項目。
這是一個面向編程新手、熱愛編程、對開源社區感興趣?人群的月刊,月刊的內容包括:各種編程語言的項目、讓生活變得更美好的工具、書籍、學習筆記、教程等,這些開源項目大多都是非常容易上手,而且非常 Cool。主要是希望大家能動手用起來,加入到開源社區中。
?會編程的可以貢獻代碼?不會編程的可以反饋使用這些工具中的 Bug?幫著宣傳你覺得優秀的項目?Star 項目??
在瀏覽、參與這些項目的過程中,你將學習到更多編程知識、提高編程技巧、找到編程的樂趣。
? 最后?HelloGitHub[1]?這個項目就誕生了 ?
以下為本期內容|每個月?28?號發布最新一期|點擊查看往期內容[2]
C 項目
1、SuperWeChatPC[3]:這是一個超級微信電腦客戶端。沒錯,是超級!因為它不僅是一個微信電腦客戶端,還支持以下功能:
?無限多開?消息防撤銷?語音消息備份?等等
項目里還有相關技術內幕的文章鏈接,快前去學習吧
2、TDengine[4]:一個專門針對物聯網等行業以及應用監控進行設計優化的大數據平臺。它的數據庫插入、查詢操作比其它的數據庫快了 10 倍!消耗的成本也非常低,和其他典型的此類解決方案相比。TDengine 只需要不到 1/5 的計算資源,它還提供了 Java、C/C++、Python、Go、RESTful API 等用于開發的接口。還在為數據的寫入、讀取、計算的性能發愁嗎?有了它相信你的頭發存活率會大大提高
?
C# 項目
3、Common.Utility[5]:項目作者日常工作總結和網上收集、整理的 C# 各式各樣的功能類庫。類與類之間沒有聯系,可以單獨引用至項目。代碼中包含注釋,便于使用和學習
?
4、FightLandlord[6]:該項目采用 .NETCore 跨平臺技術,實現斗地主服務端。已實現功能:洗牌、發牌、搶地主、斗地主、提示出牌、游戲結束等。后續計劃增加機器智能出牌,我是不是應該說:star 過 xx 實現智能出牌功能,才能讓大家有動力 star ?
?
?
C++ 項目
5、muduo[7]:一個依賴 Boost 的非阻塞 IO 和事件驅動 C++ 網絡庫。實現了對底層系統調用的封裝、高性能異步日志的設計、Reactor 多線程并發模式設計、簡單的 HTTP 協議的解析。適合開發 Linux 下的多線程服務端應用程序,通過閱讀源碼還可學習到 C++ 語言、Linux 網絡編程等后端知識
?
Go 項目
6、nps[8]:一款功能強大、輕量級的內網穿透代理服務器。支持 TCP 和 UDP 流量轉發、支持內網 HTTP 代理、內網 socks5 代理、snappy 壓縮、站點保護、加密傳輸、多路復用等功能。擁有 web 圖形化管理,集成多用戶模式??梢宰源罱▋染W穿透代理服務,用來替代付費的內網穿透服務。又不像其他類似項目依賴命令行,它有圖形頁面。安裝:
go get -u github.com/cnlh/nps go build cmd/nps/nps.go # 服務端程序 go build cmd/nps/npc.go # 客戶端程序?
7、scope[9]:k8s 系列的容器間關系依賴可視化組件,通過圖的方式解釋微服務之間復雜的相互依賴關系。同類目前只有 scope 對于微服務之間的依賴的 debug 是非常有意義的。由于是用圖的方式表示,意味著可以用圖算法找最短路徑、聚類、把耦合緊密的服務合并。通過計算圖密度,還能揭示微服務之間的聯系緊密。安裝如下:
# 安裝 sudo curl -L git.io/scope -o /usr/local/bin/scope sudo chmod a+x /usr/local/bin/scope scope launch # 最后訪問 http://localhost:4040?
8、pan-light[10]:基于 Golang + Qt5 的百度網盤不限速客戶端。對比之前命令行版本的百度盤客戶端,該項目擁有圖形界面,更加友好、方便、易于使用,到?release 頁面[11]下載運行即可使用
?
9、mux[12]:一個基于 Golang 語言的 HTTP 路由庫。由于支持各種正則匹配路由,使得對應處理函數復用率大大提高。相比于 Gin、beego 等框架,這個項目基本上跟標準庫的?http.ServeMux?和?mux.Router?保持一致,比標準庫更強大的是它支持的正則匹配路由、自定義保留字段、嵌套路由等功能。示例代碼:
func main() { r := mux.NewRouter() r.HandleFunc("/", HomeHandler) r.HandleFunc("/products", ProductsHandler) r.HandleFunc("/articles", ArticlesHandler) http.Handle("/", r) } r := mux.NewRouter() r.HandleFunc("/products/{key}", ProductHandler) r.HandleFunc("/articles/{category}/", ArticlesCategoryHandler) r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)?
10、lazydocker[13]:帶命令行 UI 的 docker 管理工具??梢酝ㄟ^點點點來管理 docker,卻又不需要裝 rancher 這樣的企業級容器管理平臺
?
?
11、gocui[14]:命令行 UI 庫。提供了類似 HTML canvas 的 API 用來在終端中繪制 UI,使得內容可以分塊展示,甚至可以在某些終端中支持點擊事件。如果你想做一個 redis-cli 或者其它炫酷、支持點擊事件的命令行 UI 程序。但是又不想陷入手繪 UI 的困境,該庫可以幫你解決這些煩惱
?
Java 項目
12、mall[15]:一套基于 SpringBoot+MyBatis 的電商系統,包括前臺商城系統及后臺管理系統。功能完備是學習和實踐電商的好項目。項目結構:
mall ├── mall-common -- 工具類及通用代碼 ├── mall-mbg -- MyBatisGenerator 生成的數據庫操作代碼 ├── mall-admin -- 后臺商城管理系統接口 ├── mall-search -- 基于 Elasticsearch 的商品搜索系統 ├── mall-portal -- 前臺商城系統接口 └── mall-demo -- 框架搭建時的測試代碼?
?
?
13、QuestionAnsweringSystem[16]:一個 Java 實現的人機問答系統,能夠自動分析問題并給出候選答案。在 2011 年的美國熱門電視智力問答節目《Jeopardy》中,由 IBM 開發的 AI 問答系統 Watson 戰勝了人類選手,而 QuestionAnsweringSystem 則是 Watson 的 Java 實現。從今天的眼光去看,它可能已經不夠那么智能,不過由于它的簡便性和易于部署運行,因此非常適合新手把玩,趕緊去你的應用中集成一個炫酷的智能問答系統吧
?
14、arthas[17]:阿里開源的 Java 診斷工具。當線上出現了奇怪的異常時,無需發版就能截獲運行時的數據,包括參數、返回值、異常、耗時等等。上手簡單、文檔完備、無代碼侵入式的可以對正在運行的 jvm 進程進行監控,簡單易用的命令行工具。線上出 bug 了,有了 arthas 先喝口咖啡壓壓驚,問題分分鐘定位不是夢
?
?
15、wormhole[18]:一個簡單、易用的 API 管理平臺。目的是為了降低后端服務開發與前端調用的耦合性,通過該框架使整個項目的開發、協作更加完善??蛻舳碎_發人員從管理平臺查找需要的接口信息進行調用,服務端開發人員定義好接口后同步到管理平臺中,管理平臺可以統一對接口的訪問設置等。一個讓前端和后端能夠成為“好朋友”的框架??
?
JavaScript 項目
16、javascript-questions[19]:JavaScript 進階問題列表,包含答案。中文版閱讀[20]
?
17、zdog[21]:想在你的 Web 應用上應用 3D 圖形嗎?想用你熟悉的技術實現炫酷的 3D 效果嗎?沒錯 zdog 就是你的首選。這是一款用于用于 Canvas 和 svg 的 JS 3D 渲染引擎,你可以使用它輕松創建扁平化風格的 3D 模型。這個庫只有 2800 行代碼,并且最小體積為 28KB。并且它還提供了對開發者十分友好的聲明式 API,并沒有特別復雜的配置只要你會 JS 你就可以使用它。下圖都是使用 zdog 完成的作品
?
18、licia[22]:比較實用的 JS 工具庫,內置了很多可能在工程中經常會用到的工具函數。該庫提供 npm 安裝,可以很好的融合到現代前端工程的開發中,從而提高開發效率。示例代碼:
const uuid = require("licia/uuid"); const dateFormat = require("licia/dateFormat"); const now = require("licia/now"); const randomBytes = require("licia/randomBytes"); console.log(randomBytes(5)); console.log(uuid()); console.log(dateFormat(now(), "yyyy-mm-dd"));?
?
19、cdfang-spider[23]:成都房源統計的數據可視化項目。該項目統計了成都開盤以來所有的房源信息,幫助想在成都買房的同學提供一些可視化的數據分析,比房協網官方的數據更直觀,分析更透徹。此項目包含了一套完整的源代碼,以及詳細的項目搭建文檔,開發者可以根據搭建文檔一步一步搭建這個項目??梢詭椭_發者學習前端,后端,數據庫端,單元測試,持續集成等全套知識?;诖隧椖?#xff0c;你可以做任何地區的房源信息可視化,讓數據說話
?
20、x-build[24]:面向小型項目的腳手架工具,通過終端命令最快在幾秒鐘初始化項目目錄。該庫內部集成了 webpack、babel、eslint 等前端常用的工具。通過該項目可以了解腳手架的開發,并且可以熟悉如何在工具中集成 webpack 這對自定義腳手架開發很有幫助
?
21、vue-unit-test-with-jest[25]:一個 Vue 的單元測試項目,列出了 Vue 開發時大多需要測試的環節,并附有測試代碼及說明文檔?,F在前端開發的技術越來越多,但是我們只是注意到了開發階段并沒有做好對應的單元測試步驟,我們可以通過這個項目學習如何針對 Vue 項目做單元測試。示例代碼:
import { shallowMount, createLocalVue } from '@vue/test-utils' import FilterTest from '@/components/FilterAddWatchTest.vue' ... // 測試內容:filter ---- filter 不能通過 wrapper 或者 vm 獲取,只能通過組件獲取 // filter 需要測試函數的所有可能性 it('filter test', () => { // console.log(FilterTest.filters) expect(FilterTest.filters.formatText('12345678')).toBe('12...78') expect(FilterTest.filters.formatText('12345')).toBe('12345') expect(FilterTest.filters.formatText()).toBe('') }) ...?
掃一掃,直達項目
?
22、styled-components[26]:如果你是寫 react 的開發人員一定不要錯過這個庫,它使用 ES6 模板字符串完成在 react 中的 css-in-js 的實現,更順暢地在 React 中寫樣式。css-in-js 是前端圈中很火的話題,css-in-js 認為樣式應該在組件文件中,而不是單獨的一個樣式文件,這樣只是物理上的區分,并不是實際上的組件封裝
?
Objective-C 項目
23、GHDropMenuDemo[27]:一款適用于多種場景、使用簡單的篩選菜單組件。方便集成、快速選擇出篩選項、對原有項目無污染
?
PHP 項目
24、CRMEB[28]:基于 ThinkPhp5.0 + Vue + EasyWeChat 開發的一套開源、免費新零售商城系統(集客戶關系管理+營銷電商系統)。能夠幫助企業基于微信公眾號、小程序、PC、APP 等,實現會員管理、數據分析、精準營銷的電子商務管理系統。滿足企業新零售、預約、O2O、多店等各種業務需求,反正就是功能強大、適用于多種場景的商城系統
?
Python 項目
25、cufflinks[29]:基于 plotly 和 pandas 的繪圖庫。Pandas 是處理數據的常用庫,cufflinks 可以讓 pandas 處理后的數據更直觀的展示。通過該庫你可以用極少的代碼,實現絢麗和多樣的數據可視化圖形
?
26、one-python-craftsman[30]:如何編寫優秀的 Python 代碼?優秀的代碼就是由無數優秀的細節組成的。這個項目就是詳細講解 Python 那些細節,比如何時使用異常、怎么給變量起名、怎么編寫條件分支等等,看似簡單的可能也是最難的地方。本項目作者是資深的 Python 開發,內容貼近實際工作和業務場景,相信認真學習完本項目,你的編碼能力一定會得到很大提升,幫你在 Python 的開發道路上走的更高、更遠
Ruby 項目
27、rubocop[31]:一個 Ruby 靜態代碼分析器和代碼格式化程序。開箱即用,強制執行社區 Ruby 樣式指南中列出的許多指導原則。RuboCop 非常靈活,大多數行為都可以通過各種配置選項進行調整。除了報告代碼中的問題外,還可以自動為您解決一些問題。使用最廣、效率超高的 Ruby 靜態代碼檢測工具。示例代碼:
$ gem install rubocop $ cd my/cool/ruby/project $ rubocop?
Swift 項目
28、uPic[32]:一款 macOS 端的圖床客戶端,支持多種免費、付費的圖床,讓你方便快捷的上傳圖片,醉心于內容創作的工具
?
其它
29、git-open[33]:用 git 命令 push 完代碼,想看倉庫網頁內容是否更新成功還需要再去打開網頁查看。有了這個項目,直接輸入 git open 命令瀏覽器就能自動打開對應的倉庫的網頁,支持 GitHub、GitLab、Bitbucket。是不是很方便?還等什么快去試試
?
?
30、getAwayBSG[34]:項目名為“逃離北上廣”,該項目通過爬取的招聘和房價數據。給準備逃離北上廣等一線城市,卻又找不到去除的 IT 人士提供了一些可視化數據作為建議
?
?
31、Student-resources[35]:這個世界對學生總是非常友好,尤其是大學生。學生們總能獲得各種各樣的優惠,本文介紹的就是利用學生身份可以享受到的相關學生優惠權益,但也希望各位享受權利的同時不要忘記自己的義務,不要售賣、轉手自己的學生優惠資格,使得其他同學無法受益。像 GitHub、Microsoft、AWS、JetBrains 以及最近開始的蘋果學生優惠大促銷,大學生(中學生也可以,小學生比較難)們都可以盡情享用啦!最后祝各位學生學業進步,讓自己的生活更精彩
?
32、from_coder_to_expert[36]:2019 年各互聯網大廠最新內部技術分享的文檔、PDF、PPT 集合。從程序員到 CTO,從專業走向卓越
33、sqli-labs[37]:非常詳細的 SQL 注入教程。值得想要入門安全行業的同學閱讀和學習(英文)
開源書籍
34、flutter-in-action[38]:《Flutter 實戰》,在線閱讀[39]
?
35、go101[40]:《Go語言101》是一本著重介紹 Go 語法和語義的編程指導書,中文版在線閱讀[41]
?
機器學習
36、TabNine[42]:基于 OpenAI 的語言模型的代碼補全工具。支持 23 種編程語言、5 種編輯器(VS Code、Sublime Text、Atom、Emacs、Vim)、使用簡單,效果驚艷
?
37、hub[43]:一個包含計算機視覺、自然語言處理領域的諸多經典模型的聚合中心。這年頭有很多 Hub,什么 GitHub、SciHub、xxxxHub 等等,但是最近圖靈獎得主 Yann LeCun 強推的 PyTorch-Hub。無論是 ResNet、BERT、GPT、VGG、PGAN 還是 MobileNet 等經典模型,只需輸入一行代碼,都能實現一鍵調用!媽媽再也不用擔心你的模型啦!示例代碼:
1、查詢可用的模型 用戶可以使用 torch.hub.list() 這個API列出 repo 中所有可用的入口點。 比如你想知道 PyTorch Hub 中有哪些可用的計算機視覺模型: >>> torch.hub.list(‘pytorch/vision’) >>> [‘alexnet’, ‘deeplabv3_resnet101’, ‘densenet121’, … ‘vgg16’, ‘vgg16_bn’, ‘vgg19’, ‘vgg19_bn’] 2、加載模型 在上一步中能看到所有可用的計算機視覺模型,如果想調用其中的一個,也不必安裝,只需一句話就能加載模型。 model = torch.hub.load(‘pytorch/vision’, ‘deeplabv3_resnet101’, pretrained=True) 至于如何獲得此模型的詳細幫助信息,可以使用下面的 API: print(torch.hub.help(‘pytorch/vision’, ‘deeplabv3_resnet101’)) 如果模型的發布者后續加入錯誤修復和性能改進,用戶也可以非常簡單地獲取更新,確保自己用到的是最新版本: model = torch.hub.load(…, force_reload=True) 對于另外一部分用戶來說,穩定性更加重要,他們有時候需要調用特定分支的代碼。 例如 pytorch_GAN_zoo 的 hub 分支: model = torch.hub.load(‘facebookresearch/pytorch_GAN_zoo:hub’, ‘DCGAN’, pretrained=True, useGPU=False) 3、查看模型可用方法 從 PyTorch Hub 加載模型后,你可以用 dir 查看模型的所有可用方法。以 bertForMaskedLM 模型為例: >>> dir(model) >>> [‘forward’ … ‘to’ ‘state_dict’, ] 如果你對forward方法感興趣,使用 help 了解運行運行該方法所需的參數。 >>> help(model.forward) >>> Help on method forward in module pytorch_pretrained_bert.modeling: forward(input_ids, token_type_ids=None, attention_mask=None, masked_lm_labels=None) …?
?
38、DG-Net[44]:深度學習模型訓練時往往需要大量的標注數據,但收集和標注大量的數據往往比較困難。作者在行人重識別這個任務上探索了,利用生成數據來輔助訓練的方法。通過生成高質量的行人圖像(行人兩兩換衣),將其與行人重識別模型融合,同時提升行人生成的質量和行人重識別的精度
1.不需要額外標注(如姿態 pose、屬性 attribute、關鍵點 keypoints 等),就能生成高質量行人圖像。通過交換提取出的特征,來實現兩張行人圖像的外表互換。這些外表都是訓練集中真實存在的變化,而不是隨機噪聲。2.不需要部件匹配來提升行人重識別的結果。僅僅是讓模型看更多訓練樣本就可以提升模型的效果。給定N張圖像,我們首先生成了 NxN 的訓練圖像,用這些圖像來訓練行人重識別模型。(下圖第一行和第一列為真實圖像輸入,其余都為生成圖像)3.訓練中存在一個循環。生成圖像喂給行人重識別模型來學習好的行人特征,而行人重識別模型提取出來的特征也會再喂給生成模型來提升生成圖像的質量。
?
39、LIS-YNP[45]:一個包含基礎教程、提高參考資料、有趣實踐項目的 PyTorch 教程。人生苦短,我用 PyTorch
?
看完了,還不夠?<往期內容>??每月 28 號更新
還不過癮,那就看看每天更新的前端日報吧?<今日前端>
?
留言告訴我們你想看到什么開源項目?
歡迎關注 HelloGitHub 公眾號,獲取更多開源項目的資料和內容
References
[1]?HelloGitHub:?https://hellogithub.com
[2]?點擊查看往期內容:?https://github.com/521xueweihan/HelloGitHub#內容[3]?SuperWeChatPC:?https://github.com/anhkgg/SuperWeChatPC
[4]?TDengine:?https://github.com/taosdata/TDengine
[5]?Common.Utility:?https://github.com/Jimmey-Jiang/Common.Utility
[6]?FightLandlord:?https://github.com/2881099/FightLandlord
[7]?muduo:?https://github.com/chenshuo/muduo
[8]?nps:?https://github.com/cnlh/nps
[9]?scope:?https://github.com/weaveworks/scope
[10]?pan-light:?https://github.com/peterq/pan-light
[11]?release 頁面:?https://github.com/peterq/pan-light/releases
[12]?mux:?https://github.com/gorilla/mux
[13]?lazydocker:?https://github.com/jesseduffield/lazydocker
[14]?gocui:?https://github.com/jroimartin/gocui
[15]?mall:?https://github.com/macrozheng/mall
[16]?QuestionAnsweringSystem:?https://github.com/ysc/QuestionAnsweringSystem
[17]?arthas:?https://github.com/alibaba/arthas
[18]?wormhole:?https://github.com/deathearth/wormhole
[19]?javascript-questions:?https://github.com/lydiahallie/javascript-questions
[20]?中文版閱讀:?https://github.com/lydiahallie/javascript-questions/blob/master/README-zh_CN.md
[21]?zdog:?https://github.com/metafizzy/zdog
[22]?licia:?https://github.com/liriliri/licia
[23]?cdfang-spider:?https://github.com/yhlben/cdfang-spider
[24]?x-build:?https://github.com/codexu/x-build
[25]?vue-unit-test-with-jest:?https://github.com/holylovelqq/vue-unit-test-with-jest
[26]?styled-components:?https://github.com/styled-components/styled-components
[27]?GHDropMenuDemo:?https://github.com/shabake/GHDropMenuDemo
[28]?CRMEB:?https://github.com/crmeb/CRMEB
[29]?cufflinks:?https://github.com/santosjorge/cufflinks
[30]?one-python-craftsman:?https://github.com/piglei/one-python-craftsman
[31]?rubocop:?https://github.com/rubocop-hq/rubocop
[32]?uPic:?https://github.com/gee1k/uPic
[33]?git-open:?https://github.com/paulirish/git-open
[34]?getAwayBSG:?https://github.com/jiangwei1995910/getAwayBSG
[35]?Student-resources:?https://github.com/ivmm/Student-resources
[36]?from_coder_to_expert:?https://github.com/0voice/from_coder_to_expert
[37]?sqli-labs:?https://github.com/Audi-1/sqli-labs
[38]?flutter-in-action:?https://github.com/flutterchina/flutter-in-action
[39]?在線閱讀:?https://book.flutterchina.club/
[40]?go101:?https://github.com/go101/go101
[41]?中文版在線閱讀:?https://gfw.go101.org/article/101.html[
42]?TabNine:?https://github.com/zxqfl/TabNine
[43]?hub:?https://github.com/pytorch/hub
[44]?DG-Net:?https://github.com/NVlabs/DG-Net
[45]?LIS-YNP:?https://github.com/Eurus-Holmes/LIS-YNP
總結
以上是生活随笔為你收集整理的《HelloGitHub》第 40 期的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PING网通
- 下一篇: UML建模,用EA画机票预订系统类图和对