兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣!

简介

分享 GitHub 上有趣、入门级的开源项目。内容包括:有趣、入门级的开源项目、开源书籍、实战项目、企业级项目等,让你用很短时间感受到开源的魅力,爱上开源!

以下为本期内容|每个月 28 号发布最新一期

C 项目

1、si78c:用 C 语言实现的《太空侵略者》命令行游戏

长按识别二维码,可直达项目

2、rtty:能够通过 Web 登录 Linux 终端的开源项目。采用 C 语言实现,算上依赖库体积不到 100KB,可用于嵌入式 Linux 设备。拥有 Web 管理界面,用此项目可以方便地远程维护 Linux 设备

长按识别二维码,可直达项目

C# 项目

3、osu:支持多平台的同人节奏免费开源游戏。游戏中玩家随着音乐的节奏,点击界面上圈圈、随着轨迹拖拽和旋转。从最初(07 年)仅支持 Windows 平台,到目前已经扩展到支持 Linux、macOS、iOS、Android 等平台,并且还在持续维护和开发,我试玩了下感觉很有意思,快下载下来玩玩吧!

长按识别二维码,可直达项目

4、nopCommerce:免费开源的 ASP.NET 电子商城平台。该项目始于 2008 年,由专业团队开发和维护,大而全的商城项目。支持 Windows、Linux、macOS 平台,还有支持开箱即用的 Docker 部署方式

长按识别二维码,可直达项目

5、Ryujinx:用 C# 写的任天堂 Switch 游戏机模拟器。该项目还处于实验阶段,稳定性欠佳同时机器配置要求 8G 以上的内存,有探险精神的小伙伴可以试试

长按识别二维码,可直达项目

C++ 项目

6、Serial-Studio:一款 C++ 写的数据可视化桌面工具。支持多平台,效果和操作步骤如下:

长按识别二维码,可直达项目

7、jwEngine:一个跨平台、轻量级、支持 C++ 和 Lua 的 Web 框架。支持 TCP、KCP、WebSocket、HTTP 等协议,底层采用 libuv 异步 IO 提高并发,避免多线程上下文切换开销和破坏代码美感,网络部分和逻辑部分使用一个主事件循环驱动。支持 Lua 提高开发效率,适用于小型游戏开发,示例代码:

event_init()server = NetServer:new()
server.on_accept = function(conn)
endserver.on_close = function(conn)
endserver.on_msg = function(conn, msgtype, pack)
endserver:listen("127.0.0.1", 3001, false)event_run()

长按识别二维码,可直达项目

Go 项目

8、dns:简单易用高性能的 Go DNS 库。示例代码:

package mainimport ("github.com/miekg/dns""net""os""log""fmt"
)func main() {config, _ := dns.ClientConfigFromFile("/etc/resolv.conf")c := new(dns.Client)m := new(dns.Msg)m.SetQuestion(dns.Fqdn(os.Args[1]), dns.TypeMX)m.RecursionDesired = truer, _, err := c.Exchange(m, net.JoinHostPort(config.Servers[0], config.Port))if r == nil {log.Fatalf("*** error: %s\n", err.Error())}if r.Rcode != dns.RcodeSuccess {log.Fatalf(" *** invalid answer name %s after MX query for %s\n", os.Args[1], os.Args[1])}// Stuff must be in the answer pfor _, a := range r.Answer {fmt.Printf("%v\n", a)}
}

长按识别二维码,可直达项目

9、pretty:漂亮的 Go Printf 开源三方库。示例代码:

package mainimport ("fmt""github.com/kr/pretty"
)func main() {type myType struct {a, b int}var x = []myType{{1, 2}, {3, 4}, {5, 6}}fmt.Printf("%# v", pretty.Formatter(x))
}Output:
[]pretty_test.myType{{a:1, b:2},{a:3, b:4},{a:5, b:6},
}

长按识别二维码,可直达项目

10、act:该项目可以让你在本地调试 GitHub Actions 脚本。GitHub Actions 是 GitHub 提供的仓库自动工作流程功能,用户可以利用 GitHub 提供的免费计算机资源轻松实现 CI/CD,还可以用来做很多有意思的事情。但是在编写 actions 脚本时,想调试脚本或得到运行结果,只能 push 到远程仓库等待运行结束,没有办法在本地调试和查看结果。有了 act 这个项目,就可以在本地轻松调试 actions 啦,是不是很棒

长按识别二维码,可直达项目

Java 项目

11、QNotified:让运行在安卓系统上的 QQ 变得更好用的开源 Xposed 模块。Xposed 是一个运行于 Android 操作系统的 Hook 框架,可以理解为安卓操作系统的外挂!安装本工具后,可在 QQ 自带的设置中点击 QNotified 即可开启“超级”模式。支持:

  • 防撤回

  • 被删除好友通知

  • 屏蔽 @全体成员 或者 群红包 的通知

  • 批量撤回消息

  • 等等

长按识别二维码,可直达项目

JavaScript 项目

12、MarioHTML:用 TypeScript 写的马里奥网页游戏

长按识别二维码,可直达项目

13、semaphore:好看的 Ansible UI 项目。受够了 Ansible 老气的界面了吗?那就试试这个项目吧

长按识别二维码,可直达项目

14、ChatUI:专注于对话领域的 UI 开源项目。可以帮助用户快速搭建体验友好的机器人对话界面,特性:

  • 最佳实践:基于阿里小蜜业务积累和打磨的对话式交互最佳实践

  • TypeScript:使用 TypeScript 开发,提供完整的类型定义文件

  • 响应式:响应式布局,在无线和 PC 端都可以友好展现

  • 主题:支持灵活的样式定制,以满足业务和品牌上多样化的视觉需求

  • 国际化:支持多语言和本土化特性

import Chat, { Bubble, useMessages } from '@chatui/core';
import '@chatui/core/dist/index.css';const App = () => {const { messages, appendMsg, setTyping } = useMessages([]);function handleSend(type, val) {if (type === 'text' && val.trim()) {appendMsg({type: 'text',content: { text: val },position: 'right',});setTyping(true);setTimeout(() => {appendMsg({type: 'text',content: { text: 'Bala bala' },});}, 1000);}}function renderMessageContent(msg) {const { content } = msg;return <Bubble content={content.text} ></Bubble>;}return (<Chatnavbar={{ title: '智能助理' }}messages={messages}renderMessageContent={renderMessageContent}onSend={handleSend}></Chat>);
};

长按识别二维码,可直达项目

15、edex-ui:一款跨平台基于 Electron 的炫酷终端工具。好莱坞级别的终端使用体验,拥有漂亮的启动动画、浮夸的音效,还能够直观地展示文件目录、系统资源、网络等信息

长按识别二维码,可直达项目

16、cool-admin-midway:一款基于 Node.js+midway.js 的后台权限管理系统。它开源免费不仅能够快速开发增删改查的需求,还支持 Serverless、Docker 等多种方便的部署方式,不管是用来学习如何开发管理后台,还是快速开发都是不错的选择

长按识别二维码,可直达项目

PHP 项目

17、PHPMailer:应该是最流行的 PHP 发邮件的开源库。很多知名 PHP 开源项目中都有它的身影,比如:WordPress、Yii 等,支持你对发邮件的所有开发需求。看看示例代码,就知道使用起来有多简单啦:

<?php
//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;//Load Composer's autoloader
require 'vendor/autoload.php';//Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);try {//Server settings$mail->SMTPDebug = SMTP::DEBUG_SERVER;                      //Enable verbose debug output$mail->isSMTP();                                            //Send using SMTP$mail->Host       = 'smtp.example.com';                     //Set the SMTP server to send through$mail->SMTPAuth   = true;                                   //Enable SMTP authentication$mail->Username   = 'user@example.com';                     //SMTP username$mail->Password   = 'secret';                               //SMTP password$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         //Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged$mail->Port       = 587;                                    //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above//Recipients$mail->setFrom('from@example.com', 'Mailer');$mail->addAddress('joe@example.net', 'Joe User');     //Add a recipient$mail->addAddress('ellen@example.com');               //Name is optional$mail->addReplyTo('info@example.com', 'Information');$mail->addCC('cc@example.com');$mail->addBCC('bcc@example.com');//Attachments$mail->addAttachment('/var/tmp/file.tar.gz');         //Add attachments$mail->addAttachment('/tmp/image.jpg', 'new.jpg');    //Optional name//Content$mail->isHTML(true);                                  //Set email format to HTML$mail->Subject = 'Here is the subject';$mail->Body    = 'This is the HTML message body <b>in bold!</b>';$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';$mail->send();echo 'Message has been sent';
} catch (Exception $e) {echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

长按识别二维码,可直达项目

18、dompdf:一个 HTML 转 PDF 的 PHP 库。示例代码:

// reference the Dompdf namespace
use Dompdf\Dompdf;// instantiate and use the dompdf class
$dompdf = new Dompdf();
$dompdf->loadHtml('hello world');// (Optional) Setup the paper size and orientation
$dompdf->setPaper('A4', 'landscape');// Render the HTML as PDF
$dompdf->render();// Output the generated PDF to Browser
$dompdf->stream();

长按识别二维码,可直达项目

19、video_spider:视频去水印工具。原理很简单就是根据输入的视频的地址,返回原平台无水印的视频源地址。目前支持 15 个视频平台

长按识别二维码,可直达项目

Python 项目

20、ArchiveBox:基于 Python 实现的网站归档平台。就是可以自动把网页(HTML、PDF、图片等)变成静态页面,下载到本地存储和管理的工具。可以用来做镜像站、档案馆、离线阅读等

长按识别二维码,可直达项目

21、Airtest:适用于移动端应用的跨平台 UI 自动化框架。基于图像识别定位元素,可能都不需要一行代码就可以很方便地用它来测试 APP 或刷游戏

长按识别二维码,可直达项目

22、lux:一个用于数据科学方面的 Python 开源库。这个库适用于实验室分析数据的场景,基于 Jupyter 的数据可视化和操作界面,再加上 pandas 丰富的数据接入方式以及强大的数据处理能力,让数据的分析变得简单从而可以更加直观地找到数据背后藏着的“真理”

长按识别二维码,可直达项目

23、qutebrowser:基于 PyQt5 编写的 Vim 操作方式的浏览器。支持 Linux,Windows 和 macOS 操作系统,可以先安装体验下。然后再看看源码学习如何用 Python 写浏览器

长按识别二维码,可直达项目

Swift 项目

24、flappy-fly-bird:用 Swift 写的 Flappy Bird 游戏

长按识别二维码,可直达项目

25、Hue:一个集合多功能于一体的着色工具。在 iOS 开发中非常好用,可以快速简单的进行 UI 的颜色设置、透明度修改、设置渐变颜色、修改图片的颜色等。相比于使用 Swift 原生繁重复杂的 RGBA 颜色 API,Hue 仅需要一行代码,简洁易用。示例代码:

// 设置 16 进制颜色
let white = UIColor(hex: "#ffffff")
let black = UIColor(hex: "#000000")// 设置 alpha
let colorWithAlpha = myColor.alpha(0.75)// 设置渐变
let gradient = [UIColor.blackColor(), UIColor.orangeColor()].gradient()let secondGradient = [UIColor.blackColor(), UIColor.orangeColor()].gradient { gradient ingradient.locations = [0.25, 1.0]return gradient
}

长按识别二维码,可直达项目

其它

26、azuredatastudio:微软开源的数据库桌面管理工具。该工具支持 SQL Server、Azure SQL DB 和 SQL DW 数据库,Windows 下的安装包仅不到 100 MB,还支持另外两大操作系统 macOS 和 Linux。如果开发中用到了上面的几种数据库,就试试这款免费的数据库桌面管理工具吧

长按识别二维码,可直达项目

27、what-happens-when:该项目详细地解释了当你在浏览器中输入 google.com 按下回车后发生了什么

长按识别二维码,可直达项目

28、Docker-OSX:让你用 Docker 跑 macOS 操作系统的项目。仅需 2 条命令分分钟让你起来一个 macOS 操作系统,听着刺激吧!搞起来:

# 拉镜像
docker pull sickcodes/docker-osx:latest# 运行
docker run -it \--device /dev/kvm \-p 50922:10022 \-v /tmp/.X11-unix:/tmp/.X11-unix \-e "DISPLAY=${DISPLAY:-:0.0}" \sickcodes/docker-osx:latest

长按识别二维码,可直达项目

29、cats-of-jasnah:专为 3 岁左右孩子做的网页游戏。游戏很简单就是看图中有几只符合条件的猫,比如:有几只蓝色的猫?问题是通过语音提问,选择正确后会进入下一关。通过该项目不仅可以提高小孩的颜色辨识和识数的能力,还可以锻炼英语听力

长按识别二维码,可直达项目

30、joplin:一款免费的开源笔记和待办事项应用。首先它是一款自由的 Markdown 的笔记软件,支持 Windows、macOS、Linux、Android、iOS 等主流操作系统,再加上支持自定义网盘同步,也就是说你可以无缝在这些平台上自由创作,并且文本加密保证安全。推荐给喜欢写作的小伙伴

长按识别二维码,可直达项目

机器学习

31、best-of-ml-python:优秀的 Python 机器学习相关开源库集合。该项目会根据收录的开源项目各项指标计算得出一个评分,并定期更新

长按识别二维码,可直达项目

32、tinygrad:一款小型的开源深度学习框架。它代码不足 1k 行足够简单,支持深度模型推理与训练。示例代码:

from tinygrad.tensor import Tensor
import tinygrad.optim as optimclass TinyBobNet:def __init__(self):self.l1 = Tensor.uniform(784, 128)self.l2 = Tensor.uniform(128, 10)def forward(self, x):return x.dot(self.l1).relu().dot(self.l2).logsoftmax()model = TinyBobNet()
optim = optim.SGD([model.l1, model.l2], lr=0.001)# ... and complete like pytorch, with (x,y) dataout = model.forward(x)
loss = out.mul(y).mean()
optim.zero_grad()
loss.backward()
optim.step()

长按识别二维码,可直达项目

33、Paddle:百度开源的深度学习框架。开发便捷的产业级深度学习框架,支持千亿特征、万亿参数、数百节点的大规模训练。官方还为用户提供了免费的算力可用于学习和训练,社区活跃教程齐全对新手友好

长按识别二维码,可直达项目

34、fawkes:通过 AI 技术保护个人照片隐私的开源项目。芝加哥大学 Sand Lab 团队发起的项目,通过 AI 技术对图片的像素进行一些微调,人眼很难看出修改前后的区别,但对于人脸识别系统来说微调前后是天壤之别的,从而达到保护你照片隐私的效果


长按识别二维码,可直达项目

最后

感谢大家对 5 周年活动的支持,中奖的用户请尽快私聊 HelloGitHub 视频号领奖呀!

点击关注宝藏公众号,更多惊喜等待你的发掘

《HelloGitHub》第 60 期,你喜欢玩游戏吗?相关推荐

  1. 喜欢玩游戏又想做产品经理,所以我当了老师

    网上有一个段子是这样的: 某个大型游戏的一个小分队,在副本刚开始: 队友A说:"我要挂机了,马上上课了!" 队友们:"上什么课呀,XX老师又不点名." 队友A说 ...

  2. 我喜欢玩计算机游戏译成英语,50字英语作文带翻译-我喜欢玩游戏

    ★以下是无忧考网英文写作翻译频道为大家整理的<50字英语作文带翻译-我喜欢玩游戏>,供大家参考.更多内容请看本站写作翻译频道. When I am free, I like playing ...

  3. 我很喜欢玩游戏,那么我就适合做游戏程序员吗?

    作者:黄小斜 文章来源:[程序员江湖] 游戏在今天的普及度已经不是端游时代可以比肩的了.如今人手一台手机.平板就可以吃鸡.打农药,不仅是男生,也有很多女生加入了游戏圈.相信现在在看文章的你也玩游戏,虽 ...

  4. 修改蓝牙耳机按键映射_喜欢玩游戏的不要错过了,五款高性能游戏蓝牙耳机推荐...

    随着电竞行业的发展,不少人都会在休闲时打打游戏娱乐一下,尤其是手游火爆以后,玩游戏的人就更多了,像是王者荣耀,和平精英,穿越火线等等,几乎都是装机必备.不过现在的游戏需要有很好的声音呈现效果,像王者开 ...

  5. 计算机专业只喜欢玩游戏,为什么有人只喜欢打人机?和电脑打有什么意思啊,今天终于想通了...

    前言1:所谓的社交就是"枕头里藏满了发霉的梦,梦里住满了无法拥有的人"吧,把那一层社交的多余的皮剥开,只剩下沉迷于游戏的欢乐海洋,这不就是我玩游戏的初衷吗? 前言2:我玩农药快四年 ...

  6. 学计算机的都喜欢玩游戏吗,男生沉迷于网吧玩游戏,高考成绩都懒得查,老师帮查后考了712分...

    随着科技的快速发展,电子产品越来越普遍,如今家家户户基本都有电脑了,这让越来越多的学生沉迷于网络游戏.尤其是男生,玩起游戏来的时间可能比学习时间还要久. 学生沉迷于电脑游戏,对家长来说是件头疼的大事. ...

  7. 计算机专业只喜欢玩游戏,曾经的网瘾少年,现在一看电脑就想吐|“职业打游戏”,其实是个苦差事...

    原标题:曾经的网瘾少年,现在一看电脑就想吐|"职业打游戏",其实是个苦差事 目前,活跃在各大电竞赛事中的选手多数都是"自学成材".2016年,电子竞技运动与管理 ...

  8. 为什么那么多人喜欢玩游戏?包括我!

    (插图 | 婷之心语) 对于游戏玩家来说,他们有工作,有目标,有课业,有家庭,有承诺,有他们关心的现实生活.不过,他们还是愿意全身心的花大量的时间投入到游戏当中,这是为什么呢? 因为在现实世界里,他们 ...

  9. 喜欢玩游戏的发烧友不要错过了,五款高续航低延迟蓝牙耳机为你量身打造

    现在手机成为电子游戏的主流平台,<王者荣耀>.<刺激战场>等一波电竞手游的出现,把电竞游戏推向全民化.无论水平如何,只要有一台不是配置太烂的智能手机,就能随时刷上一局. 而玩游 ...

最新文章

  1. UNICODE字符集表
  2. 第9章 数据字典(选项)管理
  3. es搜索引擎架构_学弟想学搜索引擎,我把珍藏的京东架构师的ES笔记分享给了他...
  4. 百度编辑器 UEditor setContent()
  5. boost::geometry::model::d3::point_xyz用法的测试程序
  6. 有哪些ABAP关键字和语法,到了ABAP云环境上就没办法用了?
  7. hdu2026.java字符
  8. python高级编程总结
  9. 【java】数组异常的处理
  10. OkHttp3源码详解(五) okhttp连接池复用机制
  11. NOIP2017后记
  12. oracle 王景田_清华大学经济管理学院电子简讯
  13. COGS 1008 贪婪大陆
  14. c语言自定义标识符do,C语言基础知识习题
  15. ORACLE错误一览表(转)
  16. 那么问题来了:为什么苹果设计被黑出翔还能大卖呢?
  17. Solr Replication
  18. linux lds,Linux LDS 文件格式详细分析.pdf
  19. 200所高校男女比例排行榜,脱单还有望吗?
  20. 文本 - CL_GUI_TEXTEDIT

热门文章

  1. SVN客户端的安装和简单使用
  2. 【算法java版01】:键盘录入一个字符串,将字符串中的大写改成小写,小写改成大写,数字改成*
  3. 科研教育「双目视觉技术」首选!维视MV-VS220双目立体视觉系统开发平台
  4. ABP文档 - Mvc 控制器
  5. 设计模式之单例设计模式初步
  6. java BufferedImage 转base64
  7. 查看nginx是否启动成功
  8. Pinyin4j之Pinyin4jUtils工具类
  9. Django-路由Routers-SimpleRouter-DefaultRouter使用方法
  10. 学生评教系统--教师评教