興趣是最好的老師,HelloGitHub 就是幫你找到興趣!javascript
分享 GitHub 上有趣、入門級的開源項目。php
這是一個面向編程新手、熱愛編程、對開源社區感興趣 人羣的月刊,月刊的內容包括:各類編程語言的項目、讓生活變得更美好的工具、書籍、學習筆記、教程等,這些開源項目大多都是很是容易上手,並且很是 Cool。主要是但願你們能動手用起來,加入到開源社區中。css
在瀏覽、參與這些項目的過程當中,你將學習到更多編程知識、提升編程技巧、找到編程的樂趣。前端
🎉 最後 HelloGitHub 這個項目就誕生了 🎉java
如下爲本期內容|每月 28 號發佈最新一期|點擊查看往期內容python
一、FreeSql:一個功能強大的 C# 對象關係映射程序(ORM),支持 .NETCore 2.1+、.NETFramework 4.5+ 開發模式下,開箱即用,可繁可簡的使用方式。支持 CodeFirst 遷移、豐富的表達式函數、支持多種數據庫、大量採用 ExpressionTree 技術提高性能等功能。示例代碼:git
var t0 = fsql.Select<Tag>() .Where(a => a.Parent.Parent.Name == "粵語") .IncludeMany(a => a.Tags, then => then.Where(sub => sub.Name == "xxx")) .ToList(); var t3 = fsql.Select<Xxx>() .Where(a => a.IsDelete == 0) .WhereIf(keyword != null, a => a.UserName.Contains(keyword)) .WhereIf(role_id > 0, a => a.RoleId == role_id) .Where(a => a.Nodes.AsSelect().Any(t => t.Parent.Id == t.UserId)) .Count(out var total) .Page(page, size) .OrderByDescending(a => a.Id) .ToList()
二、pprint:一個讓輸出變得更漂亮的 C++ 庫。就像 python 語言的 pprint 庫,它對基本類型、字符串、複數、enum 類型、STL 容器等作了輸出格式優化,有了縮緊和分行才更容易發現這個世界的美好。示例代碼以下:程序員
#include <pprint.hpp> printer.print(std::map<std::string, std::set<int>>{{"foo", {1, 2, 3, 3, 2, 1}}, {"bar", {7, 6, 5, 4}}}); // 輸出結果以下 { "bar" : {4, 5, 6, 7}, "foo" : {1, 2, 3} }
三、marksencent:這是一個在託福聽力中標記句子的工具(即精聽工具)。在聽力時可文本對照,而且對聽力音頻中沒聽懂片斷進行標記,並選擇標記理由,方便往後的反覆複習github
四、RemixIcon:一套免費、可商用、設計精美、細緻的圖標庫。看到它第一眼後,我感受本身以前用的圖標簡直就是枯草🙈。這個項目可讓開發者、設計師在一個圖標庫中快速找到適合的圖標,用於本身的網站或 APP 開發。不一樣於混搭收集的圖標庫,RemixIcon 的每一枚圖標都是由設計師精心設計而成,而且每一枚圖標都包含填充和描邊兩種風格,便於切換使用web
五、olivia:一個相似 Siri 的開源語音助手,目前只支持英文。開源的語音助手並很少,並且涉及的問題很複雜,如今有了它就能夠基於這個項目作一些有趣的小應用
六、goalert:一個基於 Go 語言實現的報警和處理報警系統。它以發請求或者手動添加方式進行告警,支持短信、電話、發郵件等通知方式。集成了一個看板,基本上算是開箱即用。安裝命令以下:
docker run -it --rm -p 8081:8081 goalert/all-in-one 訪問本地 8081 端口,用戶名 admin,密碼 admin123
七、geziyor:Go 的分佈式爬蟲框架。示例代碼:
func main() { geziyor.NewGeziyor(&geziyor.Options{ StartURLs: []string{"http://quotes.toscrape.com/"}, ParseFunc: quotesParse, // exporter 能夠用來把最終結果存成各類格式,例如 json Exporters: []geziyor.Exporter{exporter.JSONExporter{}}, }).Start() } // 請求的結果直接進了一個管道處理函數,這樣的函數能夠串聯起來,爬蟲和清洗二合一 // 這樣拆分爬蟲邏輯,某些邏輯也能夠重用 func quotesParse(g *geziyor.Geziyor, r *geziyor.Response) { r.HTMLDoc.Find("div.quote").Each(func(i int, s *goquery.Selection) { g.Exports <- map[string]interface{}{ "text": s.Find("span.text").Text(), "author": s.Find("small.author").Text(), } }) if href, ok := r.HTMLDoc.Find("li.next > a").Attr("href"); ok { g.Get(r.JoinURL(href), quotesParse) } }
八、script:一個封裝好的 OS 三方庫,解決了 Go 使用 OS 標準庫錯誤處理的麻煩。若是沒有它,打開一個文件查找一個關鍵字再統計下數量,你至少會須要 2-3 個異常處理的邏輯。有了它,只須要:
numErrors, err := script.File("test.txt").Match("Error").CountLines() // 等同於 grep Error test.txt | wc -l
九、unioffice:一個讓 Go 能夠建立、操做 Office Word、Excel、Powerpoint 三件套的庫。示例代碼:
dox := document.New() doc.X().Background = wordprocessingml.NewCT_Background() doc.X().Background.ColorAttr = &wordprocessingml.ST_HexColor{} doc.X().Background.ColorAttr.ST_HexColorRGB = color.RGB(50, 50, 50).AsRGBString()
十、Java:一份算法清單,詳細演示了 Java 中內置的算法實現。若是你想要知道平時使用 Java 時,Java 的內置算法如何幫你處理任務,那麼這個項目值得一讀。此外,這份清單中還用到了配圖來幫助你理解
十一、Linkage-RecyclerView:一款基於 MVP 架構開發的二級聯動列表控件,高度解耦、輕鬆配置、使用方便。依託於 MVP 的 「配置解耦」 特性,使用者無需知道內部的實現細節,僅經過實現配置類便可完成功能的定製和擴展。此外,在不設置自定義配置的狀況下,最少只需一行代碼便可運行起來
十二、SmoothRefreshLayout:一個高效、強大的 Android 刷新庫。支持越界回彈、二級刷新、橫向刷新、拉伸回彈、類QQ下拉回彈效果等
1三、wechat-format:公衆號文章的排版真是讓人頭大,還好有這個微信公衆號排版編輯器。便捷地把 Markdown 內容轉換成微信特定的 HTML 內容,而後粘貼到公衆號的編輯後臺就完活了。雖然不是特別美觀,可是節省了不少時間,在線嘗試
1四、fe-interview:天天早上 4 個基礎前端面試題,助你在前端面試中‘所向披靡’,無人能擋
1五、AutoPiano:自由鋼琴(AutoPiano)是利用 HTML5 技術開發的在線鋼琴應用。在學習工做之餘能夠享受鋼琴、音樂的美好,支持鋼琴曲的自動播放功能、按鍵提示。讓學習鋼琴變得簡單,誰均可以練成‘鋼琴手’,在線體驗
1六、HitUP:一款發現 Top 系列的 Chrome 擴展。它會替換掉瀏覽器默認的 New Tab 空白頁面,助你保持對流行技術趨勢的跟進。核心功能是展現 GitHub 上近期最流行的項目,並會圍繞 「Find top things」 的主題謹慎添加新特性,讓你對新技術和新事物‘瞭如指掌’
1七、filepond:一個 JavaScript 文件上傳庫。能夠上傳拖入的任何內容,具備體積小、上傳快、方便的文件管理等特色,從而讓用戶享受‘絲滑’般的文件上傳體驗
1八、OpenEmu:在 macOS 系統上回味下童年時的遊戲,一個能夠玩各類復古遊戲的遊戲機
1九、FreshRSS:一個 PHP 寫的免費自託管 RSS 閱讀器(free and free),聽說上萬條訂閱都不帶卡頓。可分配多帳戶、支持第三方安卓、iOS 客戶端、支持 FEVER API 協議,與 Rsshub 搭配使用,完美解決 RSS 重度用戶的痛點。是 RSS 愛好者的福音和神器
20、psutil:一個跨平臺庫的進程和系統資源監控、管理庫。用於查看有關正在運行的進程和系統利用率,如 CPU、內存、磁盤、網絡等信息。 實現了 UNIX 命令行工具提供的許多功能,例如:ps、top、lsof、netstat、ifconfig 等,支持 Linux、Windows、macOS 等系統。學會了這個庫,就能夠經過 Python 腳本作更多有趣的事情了。查看內存的代碼:
>>> psutil.virtual_memory() svmem(total=10367352832, available=6472179712, percent=37.6, used=8186245120, free=2181107712, active=4748992512, inactive=2758115328, buffers=790724608, cached=3500347392, shared=787554304) >>> psutil.swap_memory() sswap(total=2097147904, used=296128512, free=1801019392, percent=14.1, sin=304193536, sout=677842944)
2一、manim:一個生成數學教學視頻的動畫引擎。它用編程的方式建立精美的數學動畫,讓數學更加易懂。效果如
3Blue1Brown 的視頻中所展現的那樣,效果炫酷。但要學會和用好這個工具須要花些精力
2二、you-get:一個 Python 寫的視頻下載工具,下載工具千萬個但我僅僅推薦了這個工具。是由於正常狀況下載不了視頻的網站,用它你就能夠方便地下載下來。剩下的要本身去看介紹,不能再多說了🙊
(env) ➜ ~ you-get 'https://v.ifeng.com/c/7msWmwppMPC' Site: ifeng.com Title: 完整版第五期:陳曉卿 中國有倆行當門檻極低——美食圈和攝影圈 Type: MPEG-4 video (video/mp4) Size: 0.01 MiB (8578 Bytes) Downloading 完整版第五期:陳曉卿 中國有倆行當門檻極低——美食圈和攝影圈.mp4 100% ( 0.0/ 0.0MB) ├████████████████████┤[1/1] 71 kB/s
2三、arrow:還在爲處理時間、時區、轉化、夏令時等問題而頭疼嗎?這個 Python 的第三方時間庫。提供了更便捷的方式來建立、操做和格式化時間和日期,用更少的代碼來處理時間和日期。示例代碼:
>>> import arrow >>> utc = arrow.utcnow() >>> utc <Arrow [2013-05-11T21:23:58.970460+00:00]> >>> utc = utc.replace(hours=-1) >>> utc <Arrow [2013-05-11T20:23:58.970460+00:00]> >>> local = utc.to('US/Pacific') >>> local <Arrow [2013-05-11T13:23:58.970460-07:00]> >>> arrow.get('2013-05-11T21:23:58.970460+00:00') <Arrow [2013-05-11T21:23:58.970460+00:00]> >>> local.timestamp 1368303838
2四、GithubMonitor:因爲不少豬隊友的存在,公司敏感信息經過 GitHub 泄露出去是很常見的。這個項目主要根據關鍵字與 hosts 生成的關鍵詞,利用 GitHub 提供的 API 監控 Git 泄漏,並在檢測到信息泄露的時候發送郵件通知
2五、pagy:特別快的 Ruby 分頁庫。具備效率高、易用、自定義等特性,只須要少許代碼就可實現分頁。還有豐富文檔可夠參考,若是你要在 Ruby 程序中實現分頁又不想本身費神,那就快試試這個吧
2六、timer-app:一個 macOS 上簡單的計時器軟件。拖動藍色箭頭設置時間,當時間到了會顯示通知,併發出一個很好的聲音
2七、ChineseBQB:表情包資源庫,我悄悄的下了好幾張,終於能夠在羣裏挺起腰板了
2八、papers-notebook:論文閱讀筆記,包含:分佈式、虛擬化、容器、機器學習等方面。能夠做爲學習計算機部分專業論文的入門資料
2九、most-frequent-technology-english-words:程序員工做中常見、應知應會的英語詞彙列表。該列表中的單詞是英語類計算機書籍、文檔、文章中高頻常見的技術詞彙。最終目的是但願程序員結合自身的英語基礎,在掌握列表中的詞彙後,能夠無障礙閱讀英語技術文章和文檔
30、fe-necessary-book:該項目主要是分享一些技術書籍,也會不按期分享一些開發者必備的軟件、工具包、社區、相親等程序員相關的資源。放鬆的時候來看看挺不錯的✌️
3一、The-Hacker-Playbook-3-Translation:《The Hacker Playbook 3》中文翻譯版(滲透測試實戰紅隊第三版)
3二、awesome-bert:與 bert 相關的 nlp 論文、應用、資源集合。緊跟天然語言處理髮展前沿,便於加速開展相關研究工做
3三、ImageMiniLab:圖像迷你實驗室,可進行圖像實驗、處理、分析。使用 PyQt5 結合 opencv-python 實現代碼簡潔易讀,經過該工具能夠快速演示圖像算法效果,便於 cv 入門學習
3四、PyTorch-NLP:簡稱 torchnlp 是一個支持快速原型設計(包括數據集和神經網絡層)的 PyTorch-NLP 工具包。該庫封裝好了神經網絡層、文本處理模塊和數據集庫,有利於加速天然語言處理研究和實踐。示例代碼:
# Load a Dataset from torchnlp.datasets import imdb_dataset # Load the imdb training dataset train = imdb_dataset(train=True) train[0] # RETURNS: {'text': 'For a movie that gets..', 'sentiment': 'pos'} # Apply Neural Networks Layers import torch from torchnlp.nn import LockedDropout input_ = torch.randn(6, 3, 10) dropout = LockedDropout(0.5) # Apply a LockedDropout to `input_` dropout(input_) # RETURNS: torch.FloatTensor (6x3x10)
3五、xlnet:CMU 全新 XLNet 預訓練模型。BERT 帶來的影響還未平復,CMU 與谷歌大腦提出的 XLNet 在 20 個任務上的表現超過了 BERT,並在 18 個任務上取得了當前最佳效果。使人激動的是目前 XLNet 已經開放了訓練代碼和大型預訓練模型,這回又有的玩了
3六、deeplearning-models:各類深度學習架構、模型和技巧的集合。TensorFlow 和 PyTorch 的各類深度學習架構、模型和技巧的 Jupyter 集合,很是適合學習
「看完了,還不夠? <往期內容>
| 還不過癮,那就看看天天更新的前端日報吧 <今日前端>
」
若是你發現了好玩、有意義的開源項目 點擊這裏 分享你以爲有趣的項目。
最近開了公衆號,後續公衆號會針對月刊推薦過的內容精選、梳理,作成系列的文章發佈。月刊也會同時發佈在公衆號,便於第一時間閱讀。
歡迎關注 HelloGitHub 公衆號,獲取更多開源項目的資料和內容。
本做品採用知識共享署名-相同方式共享 4.0 國際許可協議進行許可。
歡迎轉載,請註明出處和做者,同時保留聲明。