《HelloGitHub》第 70 期
HelloGitHub 分享 GitHub 上有趣、入门级的开源项目,每月 28 号更新一期。这里有好玩和入门级的开源项目、开源书籍、实战项目、企业级项目,让你用极短的时间感受到开源的魅力,对开源产生兴趣。
极简 SSH 服务器。为了便于学习仅保留了基础功能,而且抛弃了较旧的加密算法。该项目的学习价值大于实用价值,适合对 SSH 和加密知识感兴趣的小伙伴
多功能的 PDF 工具箱,可用于修改 PDF 文件信息。支持:
- 修改、合并 PDF 文档
- 自动生成书签
- 书签编辑器
- 高速无损地导出文件中的图片
- 等等
无第三方依赖的 DAG 调度框架。实现了依赖节点依次执行、无依赖节点并发执行的逻辑。项目结构清晰、文档齐全,不仅代码中包含关键注释,还有示例代码和讲解文章。初学者可以通过该项目学到图调度方式、模块开发、模板编程、多线程编程、设计模式和通用算法的知识
void tutorial_simple() { /* 创建一个流水线,用于设定和执行流图信息 */ GPipelinePtr pipeline = GPipelineFactory::create(); GElementPtr a, b, c, d = nullptr; /** * 其中,MyNode1算子的执行内容为sleep(1s) * MyNode2算子的执行内容为sleep(2s) * 以下几行代码,相当于是设定了一个[b/c]依赖[a],[d]依赖[b/c]的dag流图 */ pipeline->registerGElement<MyNode1>(&a, {}, "nodeA"); pipeline->registerGElement<MyNode2>(&b, {a}, "nodeB"); pipeline->registerGElement<MyNode1>(&c, {a}, "nodeC"); pipeline->registerGElement<MyNode2>(&d, {b, c}, "nodeD"); /* 执行流图框架 */ pipeline->process(); GPipelineFactory::destroy(pipeline); }
强大的静态代码分析工具。可以用来检查 C、C++ 和 Objective-C 代码,发现潜在的 Bug 提高代码质量
在终端查看图片、动图、视频的命令行工具
timg some-image.jpg # 展示图片 timg --loops=3 some-animated.gif # 循环展示三次动图 timg some-video.mp4 # 播放视频
Go 语言的交互式 REPL 命令行工具
# 安装 go get github.com/d4l3k/go-pry go install -i github.com/d4l3k/go-pry # 运行 go-pry -i="fmt,math,strconv"
自动生成 Go 语言测试代码的工具。该项目基于表驱动测试法(TableDrivenTests)自动生成测试代码,表驱动测试法是创建一张数据表格,每一行为输入和预期输出值,然后用这张表格的数据测试代码
采用 Go 编写的开源对象存储服务。支持存储图片、视频、日志等文件,还拥有方便操作的 Web 管理后台。虽然轻量却有着不错的性能,同时采用 RS code 编码算法实现即使丢失一半的硬盘,依旧可以找回数据。适用于大数据、机器学习等场景
- 高性能:单个文件最大支持 5T,读写速率最高可以达到 55Gb/s 和 35Gb/s
- 可扩展:不同集群可以组合,支持跨越多个数据中心
- 云原生:支持容器化、基于 K8S 的编排、多租户
- 对接多种后端存储:支持 S3、DAS、 NAS、Google 等云存储
用 SQL 的方式查询多个数据源的命令行工具。支持用 SQL 查询 CSV、JSON 文件和多种数据库中的数据,甚至可以在它们之间自由 JOIN
octosql "SELECT * FROM ./myfile.json" octosql "SELECT * FROM ./myfile.json" --describe # Show the schema of the file. octosql "SELECT invoices.id, address, amount FROM invoices.csv JOIN db.customers ON invoices.customer_id = customers.id ORDER BY amount DESC" octosql "SELECT customer_id, SUM(amount) FROM invoices.csv GROUP BY customer_id"
提供了用于创建高性能应用的数据结构和实用方法的库。它将 Java 标准库中的数据结构进行包装,避免了 Java 自动装箱。比如提供的队列使用了填充字节的方式,避免头尾结点进入同一缓冲行,来提高队列出队入队的性能。整个项目代码量不多注释完善、代码风格清晰,抛开使用来讲也是一个值得学习的项目
Apache Maven 团队开源的更快的构建工具。因为内嵌了 Maven 所以可以丝滑地从 Maven 切换为 mvnd,而且它相较于 Maven 启动速度更快、使用的内存更少、编译花费的时间更少
Java 静态代码安全审计工具。它能够在编码过程中发现潜在的安全风险,并提供一键修复的功能,可在 IDEA 的插件市场安装
实用的 JavaScript 数据结构库。实现了 LinkList、Queue、Set、Map 等数据结构,严格的单元测试提供了正确性和性能的保证,可用于各种需要用到高级数据结构的场景
<script src="https://zly201.github.io/js-sdsl/js-sdsl.min.js"></script> <script> const { Vector } = sdsl; const myVector = new Vector(); // you code here... </script>
年会抽奖程序。基于 Express + Three.js 的 3D 球体抽奖项目,能够自定义文字、图片和抽奖规则,还支持一键导入抽奖人员和导出抽奖结果
前端代码可视化编辑器。一款低代码辅助开发的工具,可通过拖拽的方式构建和编辑页面。特性:
- 🛠 直接作用于源码,支持移动端布局
- 🍒 开放物料生态,可定制团队内物料库
- 🌟 无缝兼容接入,不破坏已有项目开发模式
移动端 Safari 浏览器插件管理器。提供了丰富的脚本管理能力,还支持运行油猴插件。内置的脚本库提供了 App 防跳转、广告拦截、自动展开文本等功能
美化 Django 默认管理后台界面的库
# 安装 pip install django-grappelli # 设置 settings.py 文件 INSTALLED_APPS = ( 'grappelli', 'django.contrib.admin', ) # 增加路径 urlpatterns = [ path('grappelli/', include('grappelli.urls')), # grappelli URLS path('admin/', admin.site.urls), # admin site ] # 增加请求处理器 TEMPLATES = [ ... 'OPTIONS': { 'context_processors': [ ... 'django.template.context_processors.request', ... ] # 最后 python manage.py collectstatic
Python 写的桌面下载工具。界面简单使用方便,拥有下载限速、BT 种子、自动提取网页视频等功能,支持下载国内多个视频网站的内容
一款专为 iOS 和 Android 开发者提供自动化构建的工具。它上手简单使用方便,能够帮助开发者自动完成 App 打包、签名、测试、发布、提交到 App Store、Google Play 等工作,实现一条命令发布应用
lane :beta do increment_build_number build_app upload_to_testflight end lane :release do capture_screenshots build_app upload_to_app_store # 上传截图和应用到应用商店 slack # 发布完成回调通知 end
一款免费开源的 Swift 手册工具。能够帮助开发者方便地查看 Swift 语法和常用库的使用指南,除此之外还可以接收 Swift 开源库的动态
高性能、轻量级的神经网络部署框架。支持人脸关键点检测、卡通图像风格化、天气场景识别等功能,打包全部功能后的 SDK 体积还不到 3 MB,适用于 Android、iOS 等操作系统
《Rust 语言圣经》涵盖了 Rust 语言从入门到精通的全部知识。该书目前还未完成,正处于积极更新的状态。在线阅读
由 360 质量工程部开源的《代码安全规则集合》。一份全面详细的 C/C++ 编程规范指南,适用于桌面、服务端以及嵌入式等软件开发
- C 项目
- C# 项目
- C++ 项目
- Go 项目
- Java 项目
- JavaScript 项目
- Objective-C 项目
- PHP 项目
- Python 项目
- Ruby 项目
- Swift 项目
- 人工智能
- 其它
- 开源书籍