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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(1)

简介

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

C 项目

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(2)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(3)

C# 项目

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(4)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(5)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(6)

C 项目

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(7)

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

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

Go 项目

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

packagemain import( "github.com/miekg/dns" "net" "os" "log" "fmt" ) funcmain(){ 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=true r,_,err:=c.Exchange(m,net.JoinHostPort(config.Servers[0],config.Port)) ifr==nil{ log.Fatalf("***error:%s\n",err.Error()) } ifr.Rcode!=dns.RcodeSuccess{ log.Fatalf("***invalidanswername%safterMXqueryfor%s\n",os.Args[1],os.Args[1]) } //Stuffmustbeintheanswersection for_,a:=ranger.Answer{ fmt.Printf("%v\n",a) } }

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

packagemain import( "fmt" "github.com/kr/pretty" ) funcmain(){ typemyTypestruct{ a,bint } varx=[]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 啦,是不是很棒

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(8)

Java 项目

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(9)

JavaScript 项目

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(10)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(11)

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

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(12)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(13)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(14)

PHP 项目

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

<?php //ImportPHPMailerclassesintotheglobalnamespace //Thesemustbeatthetopofyourscript,notinsideafunction usePHPMailer\PHPMailer\PHPMailer; usePHPMailer\PHPMailer\SMTP; usePHPMailer\PHPMailer\Exception; //LoadComposer'sautoloader require'vendor/autoload.php'; //Instantiationandpassing`true`enablesexceptions $mail=newPHPMailer(true); try{ //Serversettings $mail->SMTPDebug=SMTP::DEBUG_SERVER;//Enableverbosedebugoutput $mail->isSMTP();//SendusingSMTP $mail->Host='smtp.example.com';//SettheSMTPservertosendthrough $mail->SMTPAuth=true;//EnableSMTPauthentication $mail->Username='user@example.com';//SMTPusername $mail->Password='secret';//SMTPpassword $mail->SMTPSecure=PHPMailer::ENCRYPTION_STARTTLS;//EnableTLSencryption;`PHPMailer::ENCRYPTION_SMTPS`encouraged $mail->Port=587;//TCPporttoconnectto,use465for`PHPMailer::ENCRYPTION_SMTPS`above //Recipients $mail->setFrom('from@example.com','Mailer'); $mail->addAddress('joe@example.net','JoeUser');//Addarecipient $mail->addAddress('ellen@example.com');//Nameisoptional $mail->addReplyTo('info@example.com','Information'); $mail->addCC('cc@example.com'); $mail->addBCC('bcc@example.com'); //Attachments $mail->addAttachment('/var/tmp/file.tar.gz');//Addattachments $mail->addAttachment('/tmp/image.jpg','new.jpg');//Optionalname //Content $mail->isHTML(true);//SetemailformattoHTML $mail->Subject='Hereisthesubject'; $mail->Body='ThisistheHTMLmessagebody<b>inbold!</b>'; $mail->AltBody='Thisisthebodyinplaintextfornon-HTMLmailclients'; $mail->send(); echo'Messagehasbeensent'; }catch(Exception$e){ echo"Messagecouldnotbesent.MailerError:{$mail->ErrorInfo}"; }

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

//referencetheDompdfnamespace useDompdf\Dompdf; //instantiateandusethedompdfclass $dompdf=newDompdf(); $dompdf->loadHtml('helloworld'); //(Optional)Setupthepapersizeandorientation $dompdf->setPaper('A4','landscape'); //RendertheHTMLasPDF $dompdf->render(); //OutputthegeneratedPDFtoBrowser $dompdf->stream();

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(15)

Python 项目

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(16)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(17)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(18)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(19)

Swift 项目

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(20)

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

//设置16进制颜色 letwhite=UIColor(hex:"#ffffff") letblack=UIColor(hex:"#000000") //设置alpha letcolorWithAlpha=myColor.alpha(0.75) //设置渐变 letgradient=[UIColor.blackColor(),UIColor.orangeColor()].gradient() letsecondGradient=[UIColor.blackColor(),UIColor.orangeColor()].gradient{gradientin gradient.locations=[0.25,1.0] returngradient }

其它

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(21)

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

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

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(22)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(23)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(24)

机器学习

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(25)

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

fromtinygrad.tensorimportTensor importtinygrad.optimasoptim classTinyBobNet: def__init__(self): self.l1=Tensor.uniform(784,128) self.l2=Tensor.uniform(128,10) defforward(self,x): returnx.dot(self.l1).relu().dot(self.l2).logsoftmax() model=TinyBobNet() optim=optim.SGD([model.l1,model.l2],lr=0.001) #...andcompletelikepytorch,with(x,y)data out=model.forward(x) loss=out.mul(y).mean() optim.zero_grad() loss.backward() optim.step()

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(26)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(27)

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

程序员经常看的开源月刊HelloGitHub第(程序员经常看的开源月刊HelloGitHub第)(28)

最后

如果你发现了 GitHub 上有趣的项目,欢迎在 HelloGitHub 项目提 issues 告诉我们。

,