|
| 1 | +# 《HelloGitHub》第 36 期 |
| 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、[xs](https://github.com/kulics/xs):一个专注于简单的开源跨平台编程语言。这门语言的设计目标是改进阅读与编写效率,降低语法负担。让使用者能够把真正的注意力放在解决问题上,只需极少的代码就能优雅地表达逻辑。[中文手册](https://github.com/kulics/xs/blob/master/book-zh/introduction.md),示例代码如下: |
| 24 | +``` |
| 25 | +# export namespace |
| 26 | +\HelloWorld { |
| 27 | + System # import namespace |
| 28 | +} |
| 29 | +# package |
| 30 | +program -> { |
| 31 | + # main function |
| 32 | + Main() -> () { |
| 33 | + # list |
| 34 | + greetings := {"Hello", "Hola", "Bonjour", |
| 35 | + "Ciao", "こんにちは", "안녕하세요", |
| 36 | + "Cześć", "Olá", "Здравствуйте", |
| 37 | + "Chào bạn", "您好"} |
| 38 | + # for-each |
| 39 | + @ item <- greetings { |
| 40 | + # switch |
| 41 | + ? item -> [ 0 <= 8 ] { |
| 42 | + prt(item) # call function |
| 43 | + } _ { |
| 44 | + # lambda |
| 45 | + prt( greetings.filter( {it -> it.len> 4} ) ) |
| 46 | + <- @ |
| 47 | + } |
| 48 | + } |
| 49 | + } |
| 50 | +} |
| 51 | +``` |
| 52 | + |
| 53 | +#### C++ 项目 |
| 54 | +2、[calculator](https://github.com/Microsoft/calculator):微软 Windows 系统预装的计算器工具开源了。该工具提供标准、科学、程序员计算器的功能,以及各种度量单位和货币之间的转换功能。实现语言为 C++ 代码并不复杂,快来看看微软工程师编写的代码吧!运行效果如下: |
| 55 | + |
| 56 | + |
| 57 | + |
| 58 | +#### CSS 项目 |
| 59 | +3、[CSS-Inspiration](https://github.com/chokcoco/CSS-Inspiration):这里汇集了 CSS 的使用和学习的示例代码,展示不同 CSS 属性或者不同的课题使用 CSS 来解决的各种方法。[在线阅读地址](https://chokcoco.github.io/CSS-Inspiration/#/)包含代码实际展示样式 |
| 60 | + |
| 61 | +4、[bootstrap-table](https://github.com/wenzhixin/bootstrap-table):基于 Bootstrap 的 jQuery 表格插件,通过简单的设置就可以拥有强大的单选、多选、排序、分页、编辑、导出、过滤(扩展)等功能。示例代码: |
| 62 | +``` |
| 63 | +<table data-toggle="table"> |
| 64 | + <thead> |
| 65 | + <tr> |
| 66 | + <th>Item ID</th> |
| 67 | + <th>Item Name</th> |
| 68 | + <th>Item Price</th> |
| 69 | + </tr> |
| 70 | + </thead> |
| 71 | + <tbody> |
| 72 | + <tr> |
| 73 | + <td>1</td> |
| 74 | + <td>Item 1</td> |
| 75 | + <td>$1</td> |
| 76 | + </tr> |
| 77 | + <tr> |
| 78 | + <td>2</td> |
| 79 | + <td>Item 2</td> |
| 80 | + <td>$2</td> |
| 81 | + </tr> |
| 82 | + </tbody> |
| 83 | +</table> |
| 84 | +``` |
| 85 | + |
| 86 | + |
| 87 | + |
| 88 | +#### Go 项目 |
| 89 | +5、[drone](https://github.com/drone/drone):一个基于 Docker 的持续集成平台,使用 Go 语言编写 |
| 90 | + |
| 91 | + |
| 92 | + |
| 93 | +6、[etcd](https://github.com/etcd-io/etcd):一个高可用的分布式键值数据库,k8s 全家桶标配的注册与发现服务。它采用 raft 一致性算法,基于 Go 语言实现。可以通过该项目了解、学习 raft 的实际应用场景 |
| 94 | +``` |
| 95 | +# 使用 etcd 的客户端存取键值对 |
| 96 | +$ etcdctl put mykey "this is awesome" |
| 97 | +$ etcdctl get mykey |
| 98 | +``` |
| 99 | + |
| 100 | +7、[pprof](https://github.com/google/pprof):Go 语言的性能分析工具,可以用来调试 Go 程序的内存泄露、goroutine 泄露之类的问题。使用方法: |
| 101 | +``` |
| 102 | +# 安装 |
| 103 | +$ go get -u github.com/google/pprof |
| 104 | +# 生成一个profile文件 |
| 105 | +$ pprof -top [你的golang程序二进制文件] profile.pb.gz |
| 106 | +# 生成火焰图 |
| 107 | +$ pprof -web [你的golang程序二进制文件] profile.pb.gz |
| 108 | +``` |
| 109 | + |
| 110 | +8、[learn-go-with-tests](https://github.com/quii/learn-go-with-tests):通过单元测试学习 Go 语言。下载仓库源码后,进入对应目录。每一个小文件夹就是一个对应的 Go 项目,在里面`go test`即可运行单元测试。由于是测试驱动开发,所以需要在你改动代码之后跑通单元测试才算学会通过。每一个对应的文件夹都有相应 Markdown 文字教程,比较浅显易懂。而且还有[中文版](https://studygolang.gitbook.io/learn-go-with-tests) |
| 111 | + |
| 112 | +9、[AUXPI](https://github.com/aimerforreimu/AUXPI):基于 API 的简单图床应用。整合了主流图床的 API,并且做了一个 GUI 用来管理,[安装](https://github.com/aimerforreimu/AUXPI/wiki/%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E8%84%9A%E6%9C%AC)简单 |
| 113 | + |
| 114 | + |
| 115 | + |
| 116 | +#### Java 项目 |
| 117 | +10、[Luban](https://github.com/Curzibn/Luban):图片压缩是常见的问题,那么微信是如何处理图像的压缩?Luban(鲁班)就是通过在微信朋友圈发送近 100 张不同分辨率的图片,对比原图与微信压缩后的图片逆向推算出来的压缩算法。示例代码: |
| 118 | +```java |
| 119 | +// 同步调用 |
| 120 | +Flowable.just(photos) |
| 121 | + .observeOn(Schedulers.io()) |
| 122 | + .map(new Function<List<String>, List<File>>() { |
| 123 | + @Override public List<File> apply(@NonNull List<String> list) throws Exception { |
| 124 | + // 同步方法直接返回压缩后的文件 |
| 125 | + return Luban.with(MainActivity.this).load(list).get(); |
| 126 | + } |
| 127 | + }) |
| 128 | + .observeOn(AndroidSchedulers.mainThread()) |
| 129 | + .subscribe(); |
| 130 | +``` |
| 131 | + |
| 132 | + |
| 133 | + |
| 134 | +11、[yacy_search_server](https://github.com/yacy/yacy_search_server):一款采用了新的搜索方法的搜索引擎软件。 它不需要中央服务器,但它搜索的结果来自于独立的分布式网络。在这样的分布式网络中,没有任何一个实体可以决定列出的内容或结果出现的顺序。启动和关闭的方法: |
| 135 | +- GNU/Linux 系统,启动:`./startYACY.sh`、关闭:`./stopYACY.sh` |
| 136 | +- Windows 系统,启动:双击`startYACY.bat`、 关闭:双击`stopYACY.bat` |
| 137 | +- Mac OS X 系统,请使用 Mac 应用程序,并像其他 Mac 应用程序那样启动或停止它(双击) |
| 138 | + |
| 139 | +#### JavaScript 项目 |
| 140 | +12、[Web](https://github.com/qianguyihao/Web):前端入门的图文教程,从 0-1 的过程。内容详细,对于新入行前端的同学有很多的帮助 |
| 141 | + |
| 142 | +13、[ncform](https://github.com/ncform/ncform):只需要配置相关参数,便可方便生成表单的UI组件,自带校验规则满足日常 90% 的要求。表单是 Web 应用中常见的组件,但是开发表单是一个重体力活,ncform 通过配置便可生成表单,极大的提高了开发效率 |
| 143 | + |
| 144 | + |
| 145 | + |
| 146 | +14、[vscode-leetcode](https://github.com/jdneo/vscode-leetcode):这是一个可以让用户在 VS Code 编辑器中,练习 LeetCode 习题的插件。支持:查看高票解答、提交答案、测试答案等。提高了刷题效率,助你在校招、社招中杀出重围。上班摸鱼刷题利器 |
| 147 | + |
| 148 | + |
| 149 | + |
| 150 | +15、[griffith](https://github.com/zhihu/griffith):让流式播放变得简单。无论你视频格式是 `mp4` 还是 `hls`,Griffith 都能使用媒体源拓展(MSE)来实现分段加载等功能,提供在线视频播放。示例代码: |
| 151 | +```javascript |
| 152 | +// yarn add griffith |
| 153 | + |
| 154 | +import Player from 'griffith' |
| 155 | + |
| 156 | +const sources = { |
| 157 | + hd: { |
| 158 | + play_url: 'https://zhstatic.zhihu.com/cfe/griffith/zhihu2018_hd.mp4', |
| 159 | + }, |
| 160 | + sd: { |
| 161 | + play_url: 'https://zhstatic.zhihu.com/cfe/griffith/zhihu2018_sd.mp4', |
| 162 | + }, |
| 163 | +} |
| 164 | + |
| 165 | +render(<Player sources={sources} ></Player>) |
| 166 | +``` |
| 167 | + |
| 168 | +16、[makegirlsmoe_web](https://github.com/makegirlsmoe/makegirlsmoe_web):动漫角色图片生成工具。支持:选择发色、发型、眼睛、皮肤、微笑、风格等等特征生成二次元图片。自定义生成可爱的二次元头像,二次元界福音。[在线尝试](https://make.girls.moe/#/) |
| 169 | + |
| 170 | + |
| 171 | + |
| 172 | +#### Objective-C 项目 |
| 173 | +17、[BackgroundMusic](https://github.com/kyleneideck/BackgroundMusic):macOS 音频工具,包含功能:自动暂停音乐、设置各个应用程序的音量、录制系统音频 |
| 174 | + |
| 175 | + |
| 176 | + |
| 177 | +#### PHP 项目 |
| 178 | +18、[php-console](https://github.com/inhere/php-console):使用简单,功能全面的 PHP 命令行应用库。提供控制台参数解析、命令运行、颜色风格输出、 用户信息交互等功能 |
| 179 | + |
| 180 | +19、[PasteMe](https://github.com/LucienShui/PasteMe):快速分享文本、代码的网站项目。支持加密、一键复制、永久保存、阅后即焚等功能。[在线示例](https://pasteme.cn/) |
| 181 | + |
| 182 | + |
| 183 | + |
| 184 | +#### Python 项目 |
| 185 | +20、[ds-cheatsheets](https://github.com/FavioVazquez/ds-cheatsheets):Python 在数据科学方面使用库的速查表,包含了 Pandas、Jupyter、SQL、Dask 等。虽然都是些基本的 API 调用,但是用来备忘和速查足以 |
| 186 | + |
| 187 | + |
| 188 | + |
| 189 | +21、[better-exceptions](https://github.com/Qix-/better-exceptions):更加友好、实用、漂亮的输出 Python 异常 |
| 190 | + |
| 191 | + |
| 192 | + |
| 193 | +22、[scrapydweb](https://github.com/my8100/scrapydweb):Scrapy 爬虫管理平台,支持:Scrapyd 集群管理、日志可视化、定时任务、邮件通知、移动端 UI |
| 194 | + |
| 195 | + |
| 196 | + |
| 197 | +23、[awesome-python-login-model](https://github.com/CriseLYJ/awesome-python-login-model):该项目收集了各大网站登陆方式和部分网站的爬虫程序。登陆方式实现包含 selenium 登录、通过抓包直接模拟登录等。有助于新手研究、编写爬虫 |
| 198 | + |
| 199 | +24、[gita](https://github.com/nosarthur/gita):基于 Python 开发的管理 git 工具,使用后可在任何目录下代理执行 git 指令。同时支持同时显示多个 repo 的状态信息、本地分支与远程分支的关系等 |
| 200 | + |
| 201 | + |
| 202 | + |
| 203 | +25、[dash](https://github.com/plotly/dash):一款只用几百行 Python 代码就可以轻易实现数据分析可视化的利器,是目前 Python 社区数据可视化主要的工具之一。具有:使用简单、易于扩展、开发团队活跃等特点 |
| 204 | + |
| 205 | + |
| 206 | + |
| 207 | +26、[pylane](https://github.com/NtesEyes/pylane):一个基于 gdb 的 Python 进程注入和调试工具。通过 gdb trace Python 进程,然后在该进程的 Python vm 中动态地注入一段 Python 代码, 从而对一个运行中的 Python 进程执行一段任意的逻辑。更多 Python 调试经验,可阅读这篇[文章](https://mp.weixin.qq.com/s/Mlhrp2E390EMD0ZfSaNFKw) |
| 208 | + |
| 209 | + |
| 210 | + |
| 211 | +#### Ruby 项目 |
| 212 | +27、[jekyll](https://github.com/jekyll/jekyll):强大的静态博客网站生成工具。无需数据库,可以通过 Markdown 和 Config 轻松生成一个静态博客。该项目十分成熟、社区活跃、拥有多种主题可供选择。最后可以通过 [GitHub Page](https://pages.github.com/) 把生成的博客免费部署上线。快速开始: |
| 213 | +``` |
| 214 | +1. 安装 jekll:gem install bundler jekyll |
| 215 | +2. 创建项目:jekyll new my-awesome-site |
| 216 | +3. 进入新创建的项目:cd my-awesome-site |
| 217 | +4. 本地运行:bundle exec jekyll serve |
| 218 | +5. 本地访问地址:http://localhost:4000 |
| 219 | +``` |
| 220 | + |
| 221 | +#### Swift 项目 |
| 222 | +28、[Bagel](https://github.com/yagiz/Bagel):一个小型、原生的 iOS 网络调试工具。使用过程不需要配置证书、代理之类的东西。只需要 iOS 设备和 Mac 处于同一网络,就可以查看、监控 App 的网络流量等信息 |
| 223 | + |
| 224 | + |
| 225 | + |
| 226 | +#### 其它 |
| 227 | +29、[howto-make-more-money](https://github.com/easychen/howto-make-more-money):该项目介绍了程序员如何挣零花钱的姿势 |
| 228 | + |
| 229 | +30、[translations](https://github.com/oldratlee/translations):一些不错的英文资料、文章翻译项目 |
| 230 | + |
| 231 | +31、[ChinaMobilePhoneNumberRegex](https://github.com/VincentSit/ChinaMobilePhoneNumberRegex):一组匹配中国大陆手机号码的正则表达式 |
| 232 | + |
| 233 | +32、[web-frameworks](https://github.com/the-benchmarker/web-frameworks):该项目展示了不同编程语言的 Web 框架性能对比,持续更新。可以作为挑选 Web 框架的参照信息 |
| 234 | + |
| 235 | + |
| 236 | + |
| 237 | +33、[FiraCode](https://github.com/tonsky/FiraCode):高逼格的具有编程连字的等宽字体,最适合在编程编辑器、IDE、终端中使用。十分酷的字体,可以增加写代码的欲望 |
| 238 | + |
| 239 | + |
| 240 | + |
| 241 | +34、[ChromeAppHeroes](https://github.com/zhaoolee/ChromeAppHeroes):优秀、实用的 Chrome 插件集合。该项目还包含插件的中文的使用介绍,为的是让好的插件被更多人发现和使用 |
| 242 | + |
| 243 | +#### 开源书籍 |
| 244 | +35、[PythonDataScienceHandbook](https://github.com/jakevdp/PythonDataScienceHandbook):英文原版《Python Data Science Handbook》,该书对于希望或已经从事数据科学相关工作的 Python 工程师而言是重要的学习手册。[在线阅读](https://jakevdp.github.io/PythonDataScienceHandbook/) |
| 245 | + |
| 246 | +36、[Go42](https://github.com/ffhelicopter/Go42):《Go语言四十二章经》Golang 入门书籍。书中作者总结了自己踩坑的经验总结和思考,[在线阅读](https://github.com/ffhelicopter/Go42/blob/master/SUMMARY.md) |
| 247 | + |
| 248 | +#### 机器学习 |
| 249 | +37、[BigGAN-PyTorch](https://github.com/ajbrock/BigGAN-PyTorch):“Bye Bye TPU”,4 个 GPU 就能训练“史上最强” BigGAN!只需 4-8 个 GPU 即可训练,摆脱了算力束缚 |
| 250 | + |
| 251 | +38、[Virgilio](https://github.com/clone95/Virgilio):本资源库旨在为以下领域提供三种有机完整的学习路径:机器学习、商业智能、云计算。在此你将能够了解相关原理并且在项目实践中予以运用。如果仔细遵循这些学习路径,则可以从零开始构建完整的认识和获得始终可用的技能。事实上,这些学习路径不需要之前有相关知识,但基础编程和简单数学是理解和实践大多数相关概念的必要条件 |
| 252 | + |
| 253 | +39、[QuickDraw](https://github.com/vietnguyen91/QuickDraw):谷歌开发的一个流行的在线游戏,神经网络会猜测你在画什么。神经网络从每幅图画中学习,提高正确猜测涂鸦内容的能力。现在你可以基于这个仓库,用 Python 构建自己的 Quick Draw 游戏 |
| 254 | + |
| 255 | +40、[GNNPapers](https://github.com/thunlp/GNNPapers):自从卷积神级网络面世以来,大部分人将其应用在规则的空间结构数据当中,比如图像。但是现实中存在更多的并不具备规则的空间结构的数据,因此研究人员提出了处理这部分数据的网络模型-GNN。该项目列举了 GNN 方面的论文,较为全面,适合有一定基础的人阅读 |
| 256 | + |
| 257 | +41、[faceswap](https://github.com/deepfakes/faceswap):这个工具可以对图片和视频进行换脸。可以很方便地处理图片和视频,搞些有意思的事情 |
| 258 | + |
| 259 | + |
| 260 | + |
| 261 | +--- |
| 262 | + |
| 263 | +## 换种方式阅读 |
| 264 | +- **网站:** https://hellogithub.com |
| 265 | +- **GitBook:** https://gitbook.hellogithub.com |
| 266 | + |
| 267 | +## 声明 |
| 268 | +如果你发现了好玩、有意义的开源项目 [点击这里](https://github.com/521xueweihan/HelloGitHub/issues/new) 分享你觉得有意思的项目。 |
| 269 | + |
| 270 | +**欢迎转载,请注明出处和作者,同时保留声明。** |
0 commit comments