|
| 1 | +# 《HelloGitHub》第 38 期 |
| 2 | +>兴趣是最好的老师,**HelloGitHub** 就是帮你找到兴趣! |
| 3 | +
|
| 4 | + |
| 5 | + |
| 6 | +## 简介 |
| 7 | +分享 GitHub 上有趣、入门级的开源项目。 |
| 8 | + |
| 9 | +这是一个面向**编程新手**、**热爱编程**、**对开源社区感兴趣** 人群的月刊,月刊的内容包括:**各种编程语言的项目**、**让生活变得更美好的工具**、**书籍、学习笔记、教程等**,这些开源项目大多都是非常容易上手,而且非常 Cool。主要是希望大家能动手用起来,加入到**开源社区**中。 |
| 10 | +- 会编程的可以贡献代码 |
| 11 | +- 不会编程的可以反馈使用这些工具中的 Bug |
| 12 | +- 帮着宣传你觉得优秀的项目 |
| 13 | +- Star 项目⭐️ |
| 14 | + |
| 15 | +在浏览、参与这些项目的过程中,你将学习到**更多编程知识**、**提高编程技巧**、**找到编程的乐趣**。 |
| 16 | + |
| 17 | +🎉 最后 [HelloGitHub](https://hellogithub.com) 这个项目就诞生了 🎉 |
| 18 | + |
| 19 | +--- |
| 20 | +> **以下为本期内容**|每个月 **28** 号发布最新一期|[点击查看往期内容](https://github.com/521xueweihan/HelloGitHub#内容) |
| 21 | +
|
| 22 | +#### C++ 项目 |
| 23 | +1、[Terminal](https://github.com/microsoft/Terminal):微软开源的一个全新、现代、功能丰富、高效的 Windows 终端应用程序。它支持 Windows 命令行社区最常用的许多命令,还支持选项卡、富文本、全球化、可配置性、主题和样式等功能。一直以来 Windows 不被开发者青睐的原因之一就是终端不好用,现在有了这个我都想买个 Windows 系统的电脑了(确定不是打游戏?) |
| 24 | + |
| 25 | + |
| 26 | + |
| 27 | +#### Go 项目 |
| 28 | +2、[golang-developer-roadmap](https://github.com/Alikhll/golang-developer-roadmap):成为 Go 开发者的学习路线图,[中文版](https://github.com/Alikhll/golang-developer-roadmap/blob/master/i18n/ReadMe-zh-CN.md) |
| 29 | + |
| 30 | +3、[scheduler](https://github.com/prprprus/scheduler):Go 语言实现的作业调度工具包。适用于需要任务调度的场景,能够让初学者学到 time、reflect 等标准库的用法,[中文文档](https://github.com/prprprus/scheduler/blob/master/README-zh.md) |
| 31 | + |
| 32 | +4、[nic](https://github.com/EddieIvan01/nic):一个易用的 HTTP Request 包。它封装了 Go 的 HTTP 标准库,提供了简洁优雅的 API。可以更轻松的发送HTTP 请求,解决了 Go 标准库自定义 HTTP 请求,操作 headers、cookies 时繁琐的步骤。类似于 Python 的 Requests 和 urllib 的区别。示例代码: |
| 33 | +```go |
| 34 | +resp, err := nic.Get("http://example.com", nil) |
| 35 | +if err != nil { |
| 36 | + log.Fatal(err.Error()) |
| 37 | +} |
| 38 | +fmt.Println(resp.Text) |
| 39 | +``` |
| 40 | + |
| 41 | +5、[redis-tui](https://github.com/mylxsw/redis-tui):炫酷的 redis 命令行图形界面工具 |
| 42 | + |
| 43 | + |
| 44 | + |
| 45 | +6、[gameboy.live](https://github.com/HFO4/gameboy.live):Gameboy 模拟器,还可以通过 socket 远程玩 |
| 46 | +``` |
| 47 | +# 下载 |
| 48 | +git clone https://github.com/HFO4/gameboy.live.git |
| 49 | +# 运行 |
| 50 | +cd gameboy.live |
| 51 | +go build -o gbdotlive main.go |
| 52 | +
|
| 53 | +# 命令说明 |
| 54 | +Usage of gbdotlive: |
| 55 | + -G Play specific game in Fyne GUI mode # 用 Fyne GUI 模式玩游戏,会弹出一个窗口 |
| 56 | + -c config # 配置文件路径 |
| 57 | + Set the game option list config file path |
| 58 | + -d Use Debugger in GUI mode # GUI 的 debug 模式 |
| 59 | + -f FPS |
| 60 | + Set the FPS in GUI mode (default 60) # FPS 设定 |
| 61 | + -g Play specific game in GUI mode (default true) # 是否默认启动 GUI |
| 62 | + -h This help # 显示帮助 |
| 63 | + -m Turn on sound in GUI mode (default true) # GUI 模式下是否有声音 |
| 64 | + -p port |
| 65 | + Set the port for the cloud-gaming server (default 1989) # 默认监听端口,可以用 Telnet 玩 |
| 66 | + -r ROM # 游戏 ROM 的路径 |
| 67 | + Set ROM file path to be played in GUI mode |
| 68 | + -s Start a cloud-gaming server # 启动服务器,用 Telnet 玩 |
| 69 | +``` |
| 70 | + |
| 71 | + |
| 72 | + |
| 73 | +7、[CovenantSQL](https://github.com/CovenantSQL/CovenantSQL):具有区块链特性的去中心化 SQL 关系型数据库。可以提供 DBaaS 服务,去中心化存储保证用户隐私。[中文文档](https://developers.covenantsql.io/docs/zh-CN/intro),MacOS 系统可以通过 `brew install cql` 直接安装 |
| 74 | + |
| 75 | + |
| 76 | + |
| 77 | +8、[diving](https://github.com/vicanso/diving):基于 [dive](https://github.com/wagoodman/dive) 分析 docker 镜像,界面化展示了镜像每层的变动(增加、修改、删除等)、用户层数据大小等信息。便捷获取镜像信息和每层镜像内容的文件树,可以方便地浏览镜像信息。对于需要优化镜像体积时非常方便 |
| 78 | + |
| 79 | + |
| 80 | + |
| 81 | +#### Java 项目 |
| 82 | +9、[rhizobia_J](https://github.com/momosecurity/rhizobia_J):陌陌开源的 Java 安全编码规范和 SDK |
| 83 | + |
| 84 | +10、[generator-jhipster](https://github.com/jhipster/generator-jhipster):用于在几秒钟内创建 Spring Boot + Angular/React 项目的开源应用程序生成器(脚手架)。它可以自动化生成一个完整 Web 应用或微服务架构,加快项目的开发效率。特点和技术栈: |
| 85 | +- 基于 Spring Boot 框架的服务端,具备高性能和高可用的 Java 技术栈 |
| 86 | +- 基于 Angular、React、Bootstrap 的时尚、现代、移动优先的前端 |
| 87 | +- 基于 JHipster Registry、Netflix OSS、ELK 堆栈和 Docker 的强大的微服务架构 |
| 88 | +- 使用 Yeoman、Webpack 和 Maven/Gradle 构建应用程序的强大工作流程 |
| 89 | + |
| 90 | +11、[Gloading](https://github.com/luckybilly/Gloading):深度解耦的 Android 加载组件,特点: |
| 91 | +- 深度解耦 App 中全局加载中、加载失败及空数据视图 |
| 92 | +- 分离全局加载状态视图的实现和使用 |
| 93 | +- 不需要在每个页面的布局文件中额外添加加载状态视图 |
| 94 | +- 可用于 Activity,也可用于为某个 View 显示加载状态等 |
| 95 | + |
| 96 | +```java |
| 97 | +Gloading.initDefault(new GlobalAdapter()); |
| 98 | +Gloading.Holder holder = Gloading.getDefault().wrap(activity).withRetry(retryTask); |
| 99 | +Gloading.Holder holder = Gloading.getDefault().wrap(view).withRetry(retryTask); |
| 100 | + |
| 101 | +//显示加载中的UI状态 |
| 102 | +holder.showLoading() |
| 103 | + |
| 104 | +//显示加载成功的UI状态 |
| 105 | +holder.showLoadSuccess() |
| 106 | + |
| 107 | +//显示加载失败的UI状态 |
| 108 | +holder.showFailed() |
| 109 | + |
| 110 | +//显示加载成功,但数据未空的UI状态 |
| 111 | +holder.showEmpty() |
| 112 | +``` |
| 113 | + |
| 114 | + |
| 115 | + |
| 116 | +12、[Android-BLE](https://github.com/Alex-Jerry/Android-BLE):Android 蓝牙框架,包括扫描、连接、设置通知、发送数据、读取、接收数据和 OTA 升级等。近乎一行代码植入项目,可扩展、配置蓝牙相关操作,适用于 Android-BLE4.0 蓝牙。即便是 BLE 方面的小白也可以在短短几分钟内接入并运用到项目中 |
| 117 | + |
| 118 | + |
| 119 | + |
| 120 | +#### JavaScript 项目 |
| 121 | +13、[practice](https://github.com/mintsweet/practice):使用当下流行的多种不同前端技术栈,实现不同项目的详细教程,教你如何快速上手这些技术。虽然项目名称叫做 `Practice` 但是内容为当前前端最火的框架实践,而且符合生产环境下的开发流程规范,推荐学习 |
| 122 | + |
| 123 | +14、[ieaseMusic](https://github.com/trazyn/ieaseMusic):基于网易云音乐 API 开发的第三方客户端,支持 Linux、Mac OS 系统。成熟的 JS 桌面应用产品,颜值很高,音乐资源丰富 |
| 124 | + |
| 125 | + |
| 126 | + |
| 127 | +15、[ts-utility-plugins](https://github.com/ddzy/ts-utility-plugins):使用原生 TS 构建特效、插件、业务的实践教程项目。脱离各种框架实现原生的特效以及插件 |
| 128 | + |
| 129 | +#### PHP 项目 |
| 130 | +16、[PHP-Interview-QA](https://github.com/colinlet/PHP-Interview-QA):《PHP 面试问答》结合实际 PHP 面试经验,系统地汇总面试中的各类的问题,并尝试提供简洁准确的答案,为你面试 PHP 相关岗位提供“秘籍”。包含:网络协议、数据结构与算法、PHP基础、Web、MySQL、Redis、自我介绍、离职原因、职业规划等部分 |
| 131 | + |
| 132 | +17、[wizard](https://github.com/mylxsw/wizard):一款基于 Laravel 开发框架的开源文档管理系统。目前已经在多家公司部署使用,支持:Markdown、Swagger 文档管理,公司内部的统一身份认证系统(LDAP)等功能 |
| 133 | + |
| 134 | + |
| 135 | + |
| 136 | +#### Python 项目 |
| 137 | +18、[PySnooper](https://github.com/cool-RR/PySnooper):Python 的第三方调试库。让你通过装饰器方法,方便的知道每一行程序运行后的结果,而不需要再手动增加 `print` 展示过程数据、调试程序。示例代码: |
| 138 | +```python |
| 139 | +import pysnooper |
| 140 | + |
| 141 | +@pysnooper.snoop() |
| 142 | +def number_to_bits(number): |
| 143 | + if number: |
| 144 | + bits = [] |
| 145 | + while number: |
| 146 | + number, remainder = divmod(number, 2) |
| 147 | + bits.insert(0, remainder) |
| 148 | + return bits |
| 149 | + else: |
| 150 | + return [0] |
| 151 | + |
| 152 | +number_to_bits(6) |
| 153 | +# 输出如下 |
| 154 | +Starting var:.. number = 6 |
| 155 | +15:29:11.327032 call 4 def number_to_bits(number): |
| 156 | +15:29:11.327032 line 5 if number: |
| 157 | +15:29:11.327032 line 6 bits = [] |
| 158 | +New var:....... bits = [] |
| 159 | +15:29:11.327032 line 7 while number: |
| 160 | +15:29:11.327032 line 8 number, remainder = divmod(number, 2) |
| 161 | +New var:....... remainder = 0 |
| 162 | +Modified var:.. number = 3 |
| 163 | +.... |
| 164 | +``` |
| 165 | + |
| 166 | +19、[Python-100-Days](https://github.com/jackfrued/Python-100-Days):《Python 100 天从新手到大师》—— Python 的入门学习资料,学习曲线低。非专业人士也能上手学习,适合新手入门 |
| 167 | + |
| 168 | +20、[Zvm](https://github.com/5A59/Zvm):一款用 Python 实现的简易 JVM。实现功能如下:class 文件解析、类加载、运行时数据区、指令解释器、基本指令集、简易 GC、简易线程、简易 JDK 库,可以运行基本的 Java class 文件。代码量少,模块清晰,适合用来学习 JVM 的基本结构和实现 |
| 169 | + |
| 170 | +21、[city-vein](https://github.com/96486d9b/city-vein):用公交路线数据,还原城市结构。通过数据可视化手段,还原了 30 多个城市的城市结构。该项目中有数据获取和处理的脚本,而且该项目充分体现了数据可视化带来的便利和效果,易于激发学习编程的热情。[在线浏览](https://96486d9b.github.io/city-vein/) |
| 171 | + |
| 172 | + |
| 173 | + |
| 174 | +#### Ruby 项目 |
| 175 | +22、[huginn](https://github.com/huginn/huginn):基于 Ruby 开发的自动化处理任务工具。可以监控事物然后根据编写好的逻辑进行处理(IFTTT),比如:监控天气然后通过微信提醒你带伞、追的小说或者动漫更新通知、聚合信息发送等。它框架稳定、生态活跃,有了它从而让你的生活更加有效率,快去试试吧 |
| 176 | + |
| 177 | + |
| 178 | + |
| 179 | +#### Swift 项目 |
| 180 | +23、[Brooklyn](https://github.com/pedrommcarrasco/Brooklyn):炫酷的苹果电脑屏幕保护程序 |
| 181 | + |
| 182 | + |
| 183 | + |
| 184 | +24、[PopMenu](https://github.com/CaliCastle/PopMenu):一款简单、漂亮、方便、灵活自定义的弹出菜单组件。如果你的 App 需要一款灵活好看的弹出菜单的话,那么 PopMenu 值得你一试 |
| 185 | + |
| 186 | + |
| 187 | + |
| 188 | +#### 其它 |
| 189 | +25、[commit-messages-guide](https://github.com/RomuloOliveira/commit-messages-guide):Git 提交描述(commit)的编写指南,[中文](https://github.com/RomuloOliveira/commit-messages-guide/blob/master/README_zh-CN.md) |
| 190 | + |
| 191 | +26、[weekly](https://github.com/aliyunfe/weekly):《阿里云前端技术周刊》 |
| 192 | + |
| 193 | +27、[algo](https://github.com/wangzheng0822/algo):必知必会的数据结构和算法代码答案(多种编程语言) |
| 194 | + |
| 195 | +28、[vim-bootstrap](https://github.com/avelino/vim-bootstrap):一个简单、易用的 `.vimrc` 配置文件生成工具,也可通过[网站](https://vim-bootstrap.com/)点选生成。支持 Vim、NeoVim、NeoVim-Qt、MacVim 和 GVim。特点: |
| 196 | +- 轻量:包含少且必要的插件 |
| 197 | +- 易用:适合在vim中成功存活的入门者 |
| 198 | +- 易于定制:只需选择使用的语言,即可获得对应配置 |
| 199 | +- 先进的插件管理器:使用 Vim-Plug 管理插件,简单易用、速度快 |
| 200 | +- 支持多种编程语言 |
| 201 | + |
| 202 | +29、[hacker-laws](https://github.com/dwmkerr/hacker-laws):程序员工作中可能使用到的定律、原则的讲解,这些原则多应用于我们的开发和设计中,开卷有益 |
| 203 | + |
| 204 | + |
| 205 | + |
| 206 | +#### 教程 |
| 207 | +30、[vscode-extension-samples](https://github.com/Microsoft/vscode-extension-samples):官方 VS Code 开发扩展插件的代码实例集合 |
| 208 | + |
| 209 | +31、[3d-game-shaders-for-beginners](https://github.com/lettier/3d-game-shaders-for-beginners):有关如何为 3D 游戏实施 SSAO、景深、照明、法线贴图等效果的教程。包含示例代码(C++)与 Demo,更便于理解和学习 |
| 210 | + |
| 211 | + |
| 212 | + |
| 213 | +#### 机器学习 |
| 214 | +32、[bentoml](https://github.com/bentoml/bentoml):一个机器学习工具用来打包和发布模型。帮助数据科学家用不到 5 分钟把在 ipython notebook 里的模型发布到生产环境 |
| 215 | +```python |
| 216 | +%%writefile iris_classifier.py |
| 217 | +from bentoml import BentoService, api, env, artifacts |
| 218 | +from bentoml.artifact import PickleArtifact |
| 219 | +from bentoml.handlers import DataframeHandler |
| 220 | + |
| 221 | +# You can also import your own python module here and BentoML will automatically |
| 222 | +# figure out the dependency chain and package all those python modules |
| 223 | + |
| 224 | +@artifacts([PickleArtifact('model')]) |
| 225 | +@env(conda_pip_dependencies=["scikit-learn"]) |
| 226 | +class IrisClassifier(BentoService): |
| 227 | + |
| 228 | + @api(DataframeHandler) |
| 229 | + def predict(self, df): |
| 230 | + # arbitrary preprocessing or feature fetching code can be placed here |
| 231 | + return self.artifacts.model.predict(df) |
| 232 | +``` |
| 233 | + |
| 234 | +33、[stanford-cs-229-machine-learning](https://github.com/afshinea/stanford-cs-229-machine-learning):斯坦福 CS229 教程讲义文档,该文档内容细致、条理清晰,方便入门者作为读书笔记学习。[中文版](https://github.com/afshinea/stanford-cs-229-machine-learning/tree/master/zh) |
| 235 | + |
| 236 | +34、[mlcourse.ai](https://github.com/Yorko/mlcourse.ai):一套机器学习课程。课程全面细致,同时带有 demo 以及进阶的 Kaggle 比赛的样例,非常适合初学者逐步的深入学习 |
| 237 | + |
| 238 | +35、[lihang-code](https://github.com/fengdu78/lihang-code):机器学习领域经典书籍《统计学习方法》的课件和代码。这个项目提供了课件、代码资源,叙述从具体问题或实例入手,由浅入深,阐明思路,给出必要的数学推导,便于读者掌握统计学习方法的实质,学会运用 |
| 239 | + |
| 240 | +36、[maskrcnn-benchmark](https://github.com/facebookresearch/maskrcnn-benchmark):Facebook 开源的 PyTorch 版本的 Mask-RCNN。研究人员可以按照教程、示例代码逐步进行实现 |
| 241 | + |
| 242 | + |
| 243 | + |
| 244 | + |
| 245 | + |
| 246 | +--- |
| 247 | + |
| 248 | +## 换种方式阅读 |
| 249 | +- **网站:** https://hellogithub.com |
| 250 | +- **GitBook:** https://gitbook.hellogithub.com |
| 251 | + |
| 252 | +## 声明 |
| 253 | +如果你发现了好玩、有意义的开源项目 [点击这里](https://github.com/521xueweihan/HelloGitHub/issues/new) 分享你觉得有意思的项目。 |
| 254 | + |
| 255 | +**欢迎转载,请注明出处和作者,同时保留声明。** |
0 commit comments