《HelloGitHub》第 41 期

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

640?wx_fmt=jpeg

简介

分享 GitHub 上有趣、入门级的开源项目。

这是一个面向编程新手热爱编程对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编程语言的项目让生活变得更美好的工具书籍、学习笔记、教程等,这些开源项目大多都是非常容易上手,而且非常 Cool。主要是希望大家能动手用起来,加入到开源社区中。

  • 会编程的可以贡献代码

  • 不会编程的可以反馈使用这些工具中的 Bug

  • 帮着宣传你觉得优秀的项目

  • Star 项目⭐️

在浏览、参与这些项目的过程中,你将学习到更多编程知识提高编程技巧找到编程的乐趣

? 最后 HelloGitHub[1] 这个项目就诞生了 ?


以下为本期内容|每个月 28 号发布最新一期|点击查看往期内容[2]

C# 项目

1、csredis[3]:Redis.io 官方推荐的 C# 语言 redis 客户端库,支持 redis 2.8-5.0 版本的所有命令,且包含哨兵、集群等功能。该项目从 2016 年开始持续迭代更新,实现了低门槛、高性能和分区等高级玩法。该项目作者:2881099[4],在 GitHub 上开源了很多有趣、实用的 C# 项目。欢迎大家关注他,同时参与到他的项目中,为开源社区贡献自己的一份力量。示例代码:

var csredis = new CSRedis.CSRedisClient("127.0.0.1:6379,password=123");	
RedisHelper.Initialization(csredis);	

	
RedisHelper.Set("test1", "123123", 60);	
RedisHelper.Get("test1");	
//...函数名与 redis-cli 的命令相同	

	
//普通订阅	
RedisHelper.Subscribe(	
  ("chan1", msg => Console.WriteLine(msg.Body)),	
  ("chan2", msg => Console.WriteLine(msg.Body)));	

	
//管道操作	
RedisHelper.StartPipe().Set("a", "1").Get("a").EndPipe()

扫一扫,直达项目

C++ 项目

2、fmt[5]:这是一个开源的 C++ 格式库。它可以作为 (s)printf 和 iostreams 的安全和快速替代品,也是 C++ 20 中  std::format 的一个实现。它的格式化字符串语法类似于 Python 中的 str.format,支持用户自己定义的类型,还比 printf 和 iostreams 的常见标准库实现更快!而且 fmt 还非常安全,格式字符串中的错误可以在编译时报告,还可以防止缓冲区溢出错误。示例代码:

fmt::print("Hello, {}!", "world");  // 类 Python 的语法风格	
fmt::printf("Hello, %s!", "world"); 

扫一扫,直达项目

3、awesome-modern-cpp[6]:Wow Awesome!你想将 modern cpp 运用自如吗?那就来看 Awesome-modern-cpp 吧!这里列出了一些有关现代 C++ 的最佳实践、书籍、会议、谈话、播客、博客、网站、各种各样的库以及一些工具,让你不禁 Wow Awesome,这就是你独享的 moment

扫一扫,直达项目

Go 项目

4、simple-computer[7]:一个用 Go 语言模拟简单计算机 CPU 的项目。只有 Go 语言的函数,没有硬件的模块,从与非门直到一台能做加减运算和显示的迷你虚拟计算机。这些是计算机最底层、基础的东西,虽然是使用 Go 语言模拟,而不是用硬件打造而。但是计算机的基本结构,运行的基本原理都显示的非常清楚。对于新手,既能了解 CPU 原理,也会发现编程语言除了能写软件之外的其他有趣用处。安装命令:

make # 构建项目	
make test # 测试	
./bin/simulator -bin _programs/brush.bin # 运行虚拟机

640?wx_fmt=png

扫一扫,直达项目

5、gridstudio[8]:一个后端采用 Go 语言的电子表格 Web 应用程序,支持 Python 编程语言处理数据,结果运行即可见。它旨在提供一个集成的工作流程,用于加载、清理、操作和可视化数据。可在线使用,对于用 Python 等处理数据的数据工程师而言,就是一款神器。之前就很好奇石墨文档怎么做的,这下可以学习下了,电子表单是一个比较复杂的问题,该项目有很多可以学习的地方。安装:

git clone https://github.com/ricklamers/gridstudio # clone 项目	
cd gridstudio && ./run.sh # 直接运行	
# 然后访问 http://127.0.0.1:8080 用户名:admin 密码:admin

640?wx_fmt=gif

扫一扫,直达项目

6、go-github[9]:谷歌出品的 GitHub API Go 语言版本。如果你需要做一个 GiHhub 相关的产品后端,这个可以省去很多功夫,而且还可以学习谷歌工程师写的  Go 项目、设计接口的思路。示例代码:

import "github.com/google/go-github/v27/github" // 启用的 go module (GO111MODULE=on 或者不在 GOPATH 里)	
import "github.com/google/go-github/github" // 没启用 go module 时	

	
client := github.NewClient(nil)	

	
// 获取用户 "willnorris" 所在的所有组织	
orgs, _, err := client.Organizations.List(context.Background(), "willnorris", nil)

扫一扫,直达项目

Java 项目

7、vhr[10]:一个前后端分离的人力资源管理系统。该项目采用 SpringBoot + Vue 架构,这两个都是近些年很流行的框架。该项目涉及的场景很多,可作为全栈工程师的入门实践

640?wx_fmt=png

扫一扫,直达项目

8、SmartSwipe[11]:一个侧滑处理框架,而不是具体某种侧滑效果的实现。其内部封装十几种侧滑效果,包括侧滑返回、侧滑删除、百叶窗、开门等效果,总有那么几款能让你眼前一亮。示例代码:

//为控件添加仿MIUI的弹性拉伸效果:	
//  当纵向不能滚动(或滚动到顶/底)时,若继续拖动,则 UI 呈现弹性拉伸效果,释放后平滑恢复	
SmartSwipe.wrap(view)	
  .addConsumer(new StretchConsumer())	
  .enableVertical();	

	
SmartSwipe.wrap(view)	
  .addConsumer(new StretchConsumer())	
  .enableVertical()   //仿 MIUI 拉伸效果的方向为:上下 2 个方向	
  .addConsumer(new SpaceConsumer())	
  .enableHorizontal()  //仿 iOS 弹性留白效果的方向为:左右 2 个方向	
  ;	

	
SmartSwipeBack.activityBezierBack(application, null);  //仿小米 MIUI 系统的贝塞尔曲线返回效果	
SmartSwipeBack.activityStayBack(application, null);    //仿手机 QQ 的手势滑动返回	
SmartSwipeBack.activitySlidingBack(application, null);  //仿微信带联动效果的透明侧滑返回	
SmartSwipeBack.activityDoorBack(application, null);    //侧滑开门样式关闭 activity	
SmartSwipeBack.activityShuttersBack(application, null);  //侧滑百叶窗样式关闭 activity	

	
//xxxMode 第二个参数为 false,表示工作方向为纵向:下拉刷新&上拉加载更多	
//如果第二个参数设置为 true,则表示工作方向为横向:右拉刷新&左拉加载更多	
SmartSwipeRefresh.drawerMode(view, false).setDataLoader(loader);	
SmartSwipeRefresh.behindMode(view, false).setDataLoader(loader);	
SmartSwipeRefresh.scaleMode(view, false).setDataLoader(loader);	
SmartSwipeRefresh.translateMode(view, false).setDataLoader(loader);

640?wx_fmt=gif

扫一扫,直达项目

9、SoloPi[12]:一个不需要连接电脑、非侵入式的 Android 自动化工具。公测版拥有录制回放、性能测试、一机多控三项主要功能,能为测试开发人员节省宝贵时间。安卓版本多、终端型号多,一个成熟安卓应用的上线需要进行大量测试,而很多测试都是属于重复操作,通过此工具可以极大简化测试人员的工作量

640?wx_fmt=gif

扫一扫,直达项目

10、XUI[13]:一个简洁而优雅的 Android 原生 UI 框架。让原生 Android 开发人员也能像 web 开发者一样,拥有方便的 UI 库。该项目适用于有一定 Android 开发经验的开发者

640?wx_fmt=png

扫一扫,直达项目

JavaScript 项目

11、chart.xkcd[14]:手绘风格的 JS 图表库。手绘风格的设计给人一种很可爱的感觉,看了这些图表你会发现数据也可以以萌萌哒的形式展示

640?wx_fmt=gif

扫一扫,直达项目

12、fullPage.js[15]:通过调用 fullPage 可轻易创建全屏滚动网站(也称为单页网站)。fullPage 可创建全屏滚动网站,同时也可在网站中添加横向滚动条。适合快速搭建全屏滚动或者拥有视觉差的站点,使得网站看上去更加高端、大气、上档次,示例代码:

<div id="fullpage">	
  <div class="section">Some section</div>	
  <div class="section">Some section</div>	
  <div class="section">Some section</div>	
  <div class="section">Some section</div>	
</div>

640?wx_fmt=png

扫一扫,直达项目

13、PicGo[16]:基于 electron-vue 实现的桌面图床工具。该工具可以帮助你高效、非常方便地上传图片到网络图床,包括了微博图床、七牛图床、腾讯云 COS、又拍云、GitHub、SM.MS、阿里云OSS、Imgur 等。只要使用快捷键或拖动就可以上传,而且上传成功的图片链接会自动复制到你的剪贴板里,支持 macOS、Windows、Linux 三大系统

640?wx_fmt=png

扫一扫,直达项目

14、Valine[17]:一款快速、简洁且高效的无后端的 JS 评论插件。该库使用 LeanCloud API 存储数据,且设计美观、体积小、支持 Markdown 和 Emoji。对于使用 Hexo、Hugo 等静态网页博客主来说,它简直就是福音。通过简单的几步就可以快速的给自己的博客增加评论功能,你还不快来试试

640?wx_fmt=png

扫一扫,直达项目

15、webtorrent[18]:基于 JS 的流媒体种子客户端。不需要等待种子中的内容下载完毕,就可以马上播放种子中的内容,且有 Windows、Mac 和 Linux 操作系统的桌面版客户端。还在为等待下载而苦恼吗?有了它即可复制种子链接观看对应的视频内容

640?wx_fmt=png

扫一扫,直达项目

Python 项目

16、Jtyoui[19]:帮助学习 Python 的代码集合包。包含 20 多个简单易用的常用方法和数学函数,大多数方法在 100 行左右,而且每一个类的使用都有对应的测试用例。非常方便初学者学习,也可以帮助有经验的开发者快速实现一些功能。示例代码:

# 这是一个阳历转化农历的程序	
from jtyoui.plunar import SC	
if __name__ == '__main__':	
    lun = SC(year=2018, month=1, day=2) #阳历转农历	
    print(lun.y)  # 农历的年,中文字符 二零一九	
    print(lun.year)  # 农历的年,阿拉伯数字 2019	
    ...	
    print(lun)  # 二零一九年 七月 十四 星期四 无	

扫一扫,直达项目

17、bullet[20]:一个支持终端输入和菜单选择的 Python 库。可以让使用者在终端上用方向键移动、单选、复选、密码输入等,而且支持定制化格式和颜色。看下面的效果图你就知道它是干什么

640?wx_fmt=png

扫一扫,直达项目

18、DaPy[21]:一个易用的数据分析 Python 库。通过提供合理的数据结构和丰富的机器学习模型,它能帮你快速地实现数据分析思路。简单来说,DaPy 能帮助你完成数据挖掘任务中的每一步,导入导出数据、预处理数据、特征工程、模型训练和模型评估等

640?wx_fmt=png

扫一扫,直达项目

Ruby 项目

19、rest-client[22]:一个 Ruby 的 HTTP 客户端库。已经有累计 10 万人在使用,该库使用方便、API 设计优雅、支持常用的 HTTP 方法、文件下载、设置代理等。每个方法基本都有示例代码:

require 'rest_client'	

	
RestClient.get 'http://example.com/resource'	

	
RestClient.get 'http://example.com/resource', {:params => {:id => 50, 'foo' => 'bar'}}	

	
RestClient.get 'https://user:password@example.com/private/resource', {:accept => :json}	

	
RestClient.post 'http://example.com/resource', :param1 => 'one', :nested => { :param2 => 'two' }	

	
RestClient.post "http://example.com/resource", { 'x' => 1 }.to_json, :content_type => :json, :accept => :json	

	
RestClient.delete 'http://example.com/resource'	

	
response = RestClient.get 'http://example.com/resource'	
response.code	
➔ 200	
response.cookies	
➔ {"Foo"=>"BAR", "QUUX"=>"QUUUUX"}	
response.headers	
➔ {:content_type=>"text/html; charset=utf-8", :cache_control=>"private" ...	
response.to_str	
➔ \n<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\n   \"http://www.w3.org/TR/html4/strict.dtd\">\n\n<html ....	

	
RestClient.post( url,	
  {	
    :transfer => {	
      :path => '/foo/bar',	
      :owner => 'that_guy',	
      :group => 'those_guys'	
    },	
     :upload => {	
      :file => File.new(path, 'rb')	
    }	
  })

扫一扫,直达项目

20、overcommit[23]:一款可配置的 git hook 管理工具。git hook 是 git 的强大功能,当触发某一个 git 的事件,例如:add、commit、push 等操作时,会触发执行对应事件的附加操作(hook)。可以用来检测代码质量、commit 描述风格、控制代码质量等。overcommit 就是能让你不写一行代码(配置不算代码),来自定义 hook 要执行的操作。它使用简单、文档详尽、例子众多、社区活跃,值得一试

640?wx_fmt=png

扫一扫,直达项目

Swift 项目

21、AppearancesSwitcher[24]:可以在 macOS 通知中心上快速切换“亮/暗”主题的小工具

640?wx_fmt=png

扫一扫,直达项目

其它

22、awesome-adb[25]:ADB 用法集合(Android Debug Bridge)

 

扫一扫,直达项目

23、git-tips[26]:Git 常用命令集合

 

扫一扫,直达项目

开源书籍

24、OnJava8[27]:《On Java 8》中文版又名《Java 编程思想》

 

扫一扫,直达项目

机器学习

25、numpy-cn[28]:这是 NumPy 中文翻译文档。适合任何想了解学习 NumPy 的人,还可以当作手册查阅。如果你是新手朋友,推荐阅读基础文章中的:理解 Numpy、NumPy 简单入门教程、创建 Numpy 数组的不同方式,参考文章里会不定期更新国内外优秀的 Numpy 相关的内容。如果你想徒手实现神经网络可以参看 NumPy 与 神经网络、 NumPy 实现 DNC、RNN 和 LSTM 神经网络算法

扫一扫,直达项目

26、Awesome_Multimodal_Research[29]:该项目是收录多模态相关研究的一个精选列表,正在持续更新中。现实世界中的信息通常以不同的模态出现。例如,图像通常与标签和文本解释联系在一起;文本包含图像以便更清楚地表达文章的主要思想。不同的模态由迥异的统计特性刻画。例如,图像通常表示为特征提取器的像素强度或输出,而文本则表示为离散的词向量。由于不同信息资源的统计特性不同,发现不同模态之间的关系是非常重要的

扫一扫,直达项目

27、rasa[30]:一个专门为了多轮人机对话而生的框架。主要包含 Rasa Core、Rasa NLU 两大模块,提供了对话场景、意图理解、实体抽取等功能。用户只需按照平台的语料格式构建自己的语料,便可以方便的进行意图理解和实体抽取的训练。目前使用 Rasa 平台的用户也逐渐多了起来,除了官方文档网上也容易的找到相关的项目,便于学习和上手

640?wx_fmt=png

扫一扫,直达项目

28、Non-local_pytorch[31]:今天推荐的这个项目是 Nonlocal Net 的第三方实现,实现框架为 PyTorch。项目简明易懂,但是还没有在大型公开数据集上测试过性能。但是附带了一个 MNIST 的样例,可以供读者参考。Nonlocal Net 是大神 Kaiming He 研究组在图像领域引入 Attention 机制的一篇论文[32]。Nonlocal Net 的提出,引领了一波在图像领域运用注意力机制的浪潮,最近两年该方向论文层出不穷。Facebook 也开源了一个 Nonlocal Net 在视频分类中的项目[33],但是框架基于他们维护的 caffe2,读者可以根据自身实际情况进行浏览阅读

扫一扫,直达项目


以上是本期全部内容

公众号

最近开了公众号,后续公众号会针对月刊推荐过的内容精选、梳理,做成系列的文章发布。月刊也会同时发布在公众号,便于第一时间阅读。

欢迎关注 HelloGitHub 公众号,获取更多开源项目的资料和内容。

声明

欢迎转载,请注明出处和作者,同时保留声明。

References

[1]HelloGitHub: https://hellogithub.com

[2]点击查看往期内容: https://github.com/521xueweihan/HelloGitHub#内容

[3]csredis: https://github.com/2881099/csredis

[4]2881099: https://github.com/2881099

[5]fmt: https://github.com/fmtlib/fmt

[6]awesome-modern-cpp: https://github.com/rigtorp/awesome-modern-cpp

[7]simple-computer: https://github.com/djhworld/simple-computer

[8]gridstudio: https://github.com/ricklamers/gridstudio

[9]go-github: https://github.com/google/go-github

[10]vhr: https://github.com/lenve/vhr

[11]SmartSwipe: https://github.com/luckybilly/SmartSwipe

[12]SoloPi: https://github.com/alipay/SoloPi

[13]XUI: https://github.com/xuexiangjys/XUI

[14]chart.xkcd: https://github.com/timqian/chart.xkcd

[15]fullPage.js: https://github.com/alvarotrigo/fullPage.js

[16]PicGo: https://github.com/Molunerfinn/PicGo

[17]Valine: https://github.com/xCss/Valine

[18]webtorrent: https://github.com/webtorrent/webtorrent

[19]Jtyoui: https://github.com/jtyoui/Jtyoui

[20]bullet: https://github.com/Mckinsey666/bullet

[21]DaPy: https://github.com/JacksonWuxs/DaPy

[22]rest-client: https://github.com/rest-client/rest-client

[23]overcommit: https://github.com/sds/overcommit

[24]AppearancesSwitcher: https://github.com/GMWorkStudio/AppearancesSwitcher

[25]awesome-adb: https://github.com/mzlogin/awesome-adb

[26]git-tips: https://github.com/521xueweihan/git-tips

[27]OnJava8: https://github.com/LingCoder/OnJava8

[28]numpy-cn: https://github.com/teadocs/numpy-cn

[29]Awesome_Multimodal_Research: https://github.com/Eurus-Holmes/Awesome_Multimodal_Research

[30]rasa: https://github.com/RasaHQ/rasa

[31]Non-local_pytorch: https://github.com/AlexHex7/Non-local_pytorch

[32]论文: https://arxiv.org/abs/1711.07971

[33]项目: https://github.com/facebookresearch/video-nonlocal-net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值