兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣!
分享 GitHub 上有趣、入门级的开源项目。
这是一个面向编程新手、热爱编程、对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编程语言的项目、让生活变得更美好的工具、书籍、学习笔记、教程等,这些开源项目大多都是非常容易上手,而且非常 Cool。主要是希望大家能动手用起来,加入到开源社区中。
在浏览、参与这些项目的过程中,你将学习到更多编程知识、提高编程技巧、找到编程的乐趣。
? 最后 HelloGitHub[1] 这个项目就诞生了 ?
以下为本期内容|每个月 28 号发布最新一期|点击查看往期内容[2]
1、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));
}
2、nebula:Nebula Graph 是一款开源图数据库,目标是为超大规模的图数据提供高并发、低延时的读、写及计算服务。目前是世界上唯一能够容纳千亿个顶点和万亿条边、并提供毫秒级查询延时的图数据库解决方案。特点:
3、iCSS:该项目围绕 CSS 话题,讲述了 CSS 相关的技巧、动画实现
4、kubesphere:一款在主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器管理平台。提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时,极大降低开发、测试、运维的日常工作的复杂度
5、starcharts:生成 GitHub 星图的项目
6、ultimate-go:该项目是作者在学习 Go 过程中,对 Go 源码以及涉及到的相关的计算机基础知识的心得与总结。适合 Go 学习者阅读与学习。快来和作者一起深入了解 Go 源码,了解背后的计算机理论和 Go 的设计思想
7、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();
}
8、lila:一款基于 Scala 语言,完全免费、开源、没有广告、支持多语言的在线国际象棋游戏
9、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));
}
}
10、simple-java-mail:一个轻量级 Java 邮件框架,支持复杂、自定义的发送电子邮件业务。包括经过身份验证的代理、附件、嵌入式图像、自定义标头和属性、强大的地址验证等,亮点是支持身份代理等功能,防止其他其他邮件服务拦截邮件
11、XUpdate:一套基于 Android 的全量版本更新整体解决方案。它除了提供 Android SDK 外,还附带了 Spring Boot 搭建的后台服务以及 Vue.js 编写的后台管理界面。主要解决中小企业 Android 版本管理混乱的问题,提供可定制化的解决方案。该框架提供了完全可插拔的版本更新,同时为了让使用者使用方便,还提供了后台服务和管理界面,使用的都是现下最流行的技术。完全做到灵活、方便,并提供了大量丰富的文档供大家参阅
XUpdate.newBuild(getActivity())
.updateUrl(mUpdateUrl)
.isAutoMode(true) // 如果需要完全无人干预、自动更新,需要 root 权限【静默安装需要】
.update();
12、star-battle:一个使用 JavaScript ES6、Canvas 开发的飞船射击类游戏
13、markdown-nice:能够自定义样式的 Markdown 编辑器。支持内容和自定义样式浏览器中实时保存、上传图片、脚注、公式等,输出的内容可一件复制到微信公众号、知乎、掘金、博客园和 CSDN 等一系列平台。极大的减轻了微信公众号文章的排版和编辑工作
14、marktext:一个简单且优雅的开源 Markdown 编辑器,支持 Linux、macOS 和 Windows 。功能:
15、leonsans:这是一个用 JS 编写的 Sans Serif 半衬线字体。Leon Sans 允许动态更改字体粗细并在 HTML 5 的 Canvas 元素中创建自定义动画、效果或形状。PS:这个字体是作者来庆祝他刚出生的婴儿 Leon 的哦
16、taro-music:基于 Taro 与网易云音乐 API 开发的网易云音乐小程序。技术栈为 typescript+taro+taro-ui+redux 目前主要是着重小程序端的展示,可以通过项目学习上述几个技术栈的使用和实战,从而能够快速使用 Taro 开发一个属于你自己的小程序,目前已实现的主要功能点如下:
17、JHBlog:该项目整理了作者从初级 iOS 开发到中级的晋级之路的相关知识集合
18、healthchecks:基于 Python3 和 Django2 的 Cron 定时任务监控工具,同时支持多种定时任务失败时的告警方式
19、GeneralNewsExtractor:基于《基于文本及符号密度的网页正文提取方法》论文用 Python 实现的正文抽取器,可以用来提取 HTML 中正文的内容、作者、标题。之前我看到这篇论文也想实现该抽取工具,但是我因为懒癌晚期躺下了,感谢kingname‘带趟’ ✌️
20、bokeh:一个交互式的数据可视化 Python 库,专注于在 Web 浏览器中实现美观、直接的数据可视化功能。使用它可以让你快速和轻松地创建交互式图表、仪表板和数据可视化程序。流式数据集的可视化效果如下图:
21、ruby-pinyin:可以把汉字转化为对应的拼音的库,同时能够较好的处理多音字的情况。正确处理多音字,示例代码如下:
PinYin.of_string('南京市长江大桥', :unicode)
return ["nán", "jīng", "shì", "cháng", "jiāng", "dà", "qiáo"]
能够正确的将“长”转为“chang2”,而不是“zhang3”
22、EFQRCode:一个轻量级的、用来生成和识别二维码的纯 Swift 库,可根据输入的水印图和图标产生艺术二维码
23、reverse-interview:如果当面试官问“你还有什么要问我的吗?”的时候你毫无头绪,那这个项目正是你所需要的
24、pull:一个 GitHub App,它可以让 fork 的仓库自动同步,保持和原仓库同步的神器。很多同学参与开源时会 fork 项目,但无法取得原项目的最新更新。此 Github App 可以很好的解决这个问题,截至目前已有几万仓库使用,截至目前已经自动生成了 70 万个 PR,该数字还在持续增加。注意:如果 master 有更改需要备份后使用
25、chinese-colors:中国传统颜色在线手册
26、navi:命令行辅助工具,有了它再也不用担心找不到历史输入过的命令、忘记命令等诸多烦恼
27、advanced-java:一份 Java 工程师进阶知识点集合,内容涵盖:高并发、分布式、高可用、微服务等领域知识。这些知识点不局限于 Java 语言,后端的同学也可以从中收获很多
28、nodebestpractices:《Node.js 最佳实践》
29、Nodejs-Roadmap:Node.js 技术栈学习指南。内容侧重于 Node.js 服务端,包含:Node.js 基础知识、Node.js 核心模块、主流框架实践、缓存、数据库、消息中间件、DevOps、HTTP 协议以及 Node.js 在微服务等
30、c9-python-getting-started:微软出品的零基础 Python 入门教程,内容浅显易懂。包含示例代码、演示的 PPT、配套的 Youtube 视频
31、ChineseNLPCorpus:中文自然语言处理数据集
32、albert_zh:海量中文预训练 ALBERT 模型
33、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]])
[1]
HelloGitHub: https://hellogithub.com
[2]
点击查看往期内容: https://github.com/521xueweihan/HelloGitHub#内容