《HelloGitHub》第 42 期

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

簡介

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

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

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

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

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


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

C 項目

一、linq4c:若是你想在 C 中使用隔壁 C# 的 linq 方法,那麼不妨來使用這個項目!這是它的 C 語言版。實現了 linq 的大部分方法(60+)。如今它還在不斷完善中,歡迎更多的小夥伴加入共同維護面試

bool WhereCallback(void *item) {
    char *str= (char *)item;
    return str[0] == 'h';
}

void *SelectCallback(void *item) {
    return newStr("%s_1", (char *)item);
}

char *str1 = "huang", *str2 = "hai", *str3 = "feng";

ArrayList array = arrlist_new();
arrlist_append(array, str1);
arrlist_append(array, str2);
arrlist_append(array, str3);

Linq *lq = From(array);
ArrayList result = 
    lq
    ->Where(lq, WhereCallback)
    ->Select(lq, SelectCallback)
    ->ToArray(lq);

for(int i = 0; i < arrlist_size(result); i++) {
    printf("%s\n", arrlist_get(result, i));
}
複製代碼

C++ 項目

二、nebula:Nebula Graph 是一款開源圖數據庫,目標是爲超大規模的圖數據提供高併發、低延時的讀、寫及計算服務。目前是世界上惟一可以容納千億個頂點和萬億條邊、並提供毫秒級查詢延時的圖數據庫解決方案。特色:算法

  • 全對稱分佈式架構
  • 可擴展
  • 高可用
  • 數據強一致
  • 類 SQL 查詢語言

CSS 項目

三、iCSS:該項目圍繞 CSS 話題,講述了 CSS 相關的技巧、動畫實現typescript

Go 項目

四、kubesphere:一款在主流容器調度平臺 Kubernetes 之上構建的企業級分佈式多租戶容器管理平臺。提供簡單易用的操做界面以及嚮導式操做方式,在下降用戶使用容器調度平臺學習成本的同時,極大下降開發、測試、運維的平常工做的複雜度。中文文檔數據庫

五、starcharts:生成 GitHub 星圖的項目

六、ultimate-go:該項目是做者在學習 Go 過程當中,對 Go 源碼以及涉及到的相關的計算機基礎知識的心得與總結。適合 Go 學習者閱讀與學習。快來和做者一塊兒深刻了解 Go 源碼,瞭解背後的計算機理論和 Go 的設計思想

Java 項目

七、easyexcel:使用簡單、上手快速、佔用內存小且避免內存溢出的 Java 處理 Excel 工具。示例代碼:

/** * 最簡單的讀 * <p>1. 建立excel對應的實體對象 參照{@link DemoData} * <p>2. 因爲默認異步讀取excel,因此須要建立excel一行一行的回調監聽器,參照{@link DemoDataListener} * <p>3. 直接讀便可 */
@Test
public void simpleRead() {
    String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
    // 這裏 須要指定讀用哪一個class去讀,而後讀取第一個sheet 文件流會自動關閉
    EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();
}
複製代碼

八、lila:一款基於 Scala 語言,徹底免費、開源、沒有廣告、支持多語言的在線國際象棋遊戲。在線試玩

九、tablesaw:一款包括數據框和可視化庫,可用於加載、轉換、過濾和彙總數據的 Java 實用程序。用 Tablesaw 處理數據會節省您的時間和精力,它還支持描述性統計,而且可以與 Smile 機器學習庫完美集成。最近兩年數據分析師職業大火,作好數據分析,就離不開數據可視化框架。Java 工程師掌握一種數據可視化庫勢在必行,示例代碼:

public class BoxExample {

  public static void main(String[] args) throws Exception {
    Table table = Table.read().csv("../data/tornadoes_1950-2014.csv");

    Layout layout = Layout.builder().title("Tornado Injuries by Scale").build();

    BoxTrace trace =
        BoxTrace.builder(table.categoricalColumn("scale"), table.nCol("injuries")).build();
    Plot.show(new Figure(layout, trace));
  }
}
複製代碼

十、simple-java-mail:一個輕量級 Java 郵件框架,支持複雜、自定義的發送電子郵件業務。包括通過身份驗證的代理、附件、嵌入式圖像、自定義標頭和屬性、強大的地址驗證等,亮點是支持身份代理等功能,防止其餘其餘郵件服務攔截郵件

十一、XUpdate:一套基於 Android 的全量版本更新總體解決方案。它除了提供 Android SDK 外,還附帶了 Spring Boot 搭建的後臺服務以及 Vue.js 編寫的後臺管理界面。主要解決中小企業 Android 版本管理混亂的問題,提供可定製化的解決方案。該框架提供了徹底可插拔的版本更新,同時爲了讓使用者使用方便,還提供了後臺服務和管理界面,使用的都是現下最流行的技術。徹底作到靈活、方便,並提供了大量豐富的文檔供你們參閱

XUpdate.newBuild(getActivity())
.updateUrl(mUpdateUrl)
.isAutoMode(true) // 若是須要徹底無人干預、自動更新,須要 root 權限【靜默安裝須要】
.update();
複製代碼

JavaScript 項目

十二、star-battle:一個使用 JavaScript ES六、Canvas 開發的飛船射擊類遊戲。在線試玩

1三、markdown-nice:可以自定義樣式的 Markdown 編輯器。支持內容和自定義樣式瀏覽器中實時保存、上傳圖片、腳註、公式等,輸出的內容可一件複製到微信公衆號、知乎、掘金、博客園和 CSDN 等一系列平臺。極大的減輕了微信公衆號文章的排版和編輯工做

1四、marktext:一個簡單且優雅的開源 Markdown 編輯器,支持 Linux、macOS 和 Windows 下載地址。功能:

  • 實時預覽(所見即所得)和簡潔明瞭的界面
  • Markdown 擴展,例如數學表達式和 emoji 表情
  • 輸出 HTML 和 PDF 文件
  • 各類編輯模式:源代碼模式、打字機模式、專一模式
  • 等等

1五、leonsans:這是一個用 JS 編寫的 Sans Serif 半襯線字體。Leon Sans 容許動態更改字體粗細並在 HTML 5 的 Canvas 元素中建立自定義動畫、效果或形狀,點擊查看動畫效果。PS:這個字體是做者來慶祝他剛出生的嬰兒 Leon 的哦

1六、taro-music:基於 Taro 與網易雲音樂 API 開發的網易雲音樂小程序。技術棧爲 typescript+taro+taro-ui+redux 目前主要是着重小程序端的展現,能夠經過項目學習上述幾個技術棧的使用和實戰,從而可以快速使用 Taro 開發一個屬於你本身的小程序,目前已實現的主要功能點以下:

  • 用戶登錄
  • 個人關注列表
  • 最近播放列表
  • 歌曲播放頁面
  • 等等

Objective-C 項目

1七、JHBlog:該項目整理了做者從初級 iOS 開發到中級的晉級之路的相關知識集合

Python 項目

1八、healthchecks:基於 Python3 和 Django2 的 Cron 定時任務監控工具,同時支持多種定時任務失敗時的告警方式

1九、GeneralNewsExtractor:基於《基於文本及符號密度的網頁正文提取方法》論文用 Python 實現的正文抽取器,能夠用來提取 HTML 中正文的內容、做者、標題。以前我看到這篇論文也想實現該抽取工具,可是我由於懶癌晚期躺下了,感謝kingname ‘帶趟’ ✌️

20、bokeh:一個交互式的數據可視化 Python 庫,專一於在 Web 瀏覽器中實現美觀、直接的數據可視化功能。使用它可讓你快速和輕鬆地建立交互式圖表、儀表板和數據可視化程序。流式數據集的可視化效果以下圖:

Ruby 項目

2一、ruby-pinyin:能夠把漢字轉化爲對應的拼音的庫,同時可以較好的處理多音字的狀況。正確處理多音字,示例代碼以下:

PinYin.of_string('南京市長江大橋', :unicode)
return ["nán", "jīng", "shì", "cháng", "jiāng", "dà", "qiáo"]

可以正確的將「長」轉爲「chang2」,而不是「zhang3」
複製代碼

Swift 項目

2二、EFQRCode:一個輕量級的、用來生成和識別二維碼的純 Swift 庫,可根據輸入的水印圖和圖標產生藝術二維碼

其它

2三、reverse-interview:若是當面試官問「你還有什麼要問個人嗎?」的時候你毫無頭緒,那這個項目正是你所須要的。中文

2四、pull:一個 GitHub App,它可讓 fork 的倉庫自動同步,保持和原倉庫同步的神器。不少同窗參與開源時會 fork 項目,但沒法取得原項目的最新更新。此 Github App 能夠很好的解決這個問題,截至目前已有幾萬倉庫使用,截至目前已經自動生成了 70 萬個 PR,該數字還在持續增長。注意:若是 master 有更改須要備份後使用,具體見英文文檔

2五、chinese-colors:中國傳統顏色在線手冊,在線體驗

2六、navi:命令行輔助工具,有了它不再用擔憂找不到歷史輸入過的命令、忘記命令等諸多煩惱

教程

2七、advanced-java:一份 Java 工程師進階知識點集合,內容涵蓋:高併發、分佈式、高可用、微服務等領域知識。這些知識點不侷限於 Java 語言,後端的同窗也能夠從中收穫不少,在線閱讀

2八、nodebestpractices:《Node.js 最佳實踐》中文

2九、Nodejs-Roadmap:Node.js 技術棧學習指南。內容側重於 Node.js 服務端,包含:Node.js 基礎知識、Node.js 核心模塊、主流框架實踐、緩存、數據庫、消息中間件、DevOps、HTTP 協議以及 Node.js 在微服務等,在線閱讀

30、c9-python-getting-started:微軟出品的零基礎 Python 入門教程,內容淺顯易懂。包含示例代碼、演示的 PPT、配套的 Youtube 視頻

機器學習

3一、ChineseNLPCorpus:中文天然語言處理數據集

3二、albert_zh:海量中文預訓練 ALBERT 模型

3三、cherry:簡單易用的文本分類器。適用多種語言,自帶兩個預訓練模型,使用預訓練模型進行分類只需一行代碼。使用本身的數據集進行定製訓練也只須要十行代碼。輕鬆達到高精確率,召回率。同時該庫支持自定義分詞算法、分類算法等。示例代碼:

>>> res = cherry.classify(model='harmful', text=['她們對計算機頗有熱情,也但願學習到數據分析,網絡爬蟲,人工智能等方面的知識,從而運用在她們工做上'])
>>> res.word_list
[(2, '她們'), (1, '網絡'), (1, '熱情'), (1, '方面'), (1, '數據分析'), (1, '但願'), (1, '工做'), (1, '學習'), (1, '從而')]
>>> res.probability
# 返回結果分別對應 賭博,正常,政治,色情 4個 類別的機率
array([[4.43336608e-03, 9.95215198e-01, 3.51419231e-04, 1.68657851e-08]])
複製代碼

「看完了,還不夠?<往期內容> | 還不過癮,那就看看天天更新的前端日報吧 <今日前端>
若是你發現了好玩、有意義的開源項目 點擊這裏 分享你以爲有趣的項目。

最後

若是你發現了 GitHub 上有趣的項目,歡迎在 HelloGitHub 項目提 issues 告訴咱們。

相關文章
相關標籤/搜索