# 《HelloGitHub》第 18 期
> 兴趣是最好的老师,**HelloGitHub** 让你对开源感兴趣!
## 目录
点击右上角的 **「目录」** 图标打开目录,获得更好的阅读体验。

**Tips**:如果遇到图片刷不出来的情况,[点击](https://hellogithub.com/periodical/volume/18) 换一种浏览方式。

关注「HelloGitHub」公众号,第一时间收到推送
## 内容
> **以下为本期内容**|每月 **28** 号更新
### C 项目
1、[db_tutorial](https://hellogithub.com/periodical/statistics/click?target=https://github.com/cstack/db_tutorial):用 C 从零创建一个简单的数据库
### CSS 项目
2、[materialize](https://hellogithub.com/periodical/statistics/click?target=https://github.com/Dogfalo/materialize):基于 Material Design 的现代响应式前端框架,简化了前端的开发,文档丰富。[官网](http://materializecss.com/)
### Go 项目
3、[echo](https://hellogithub.com/periodical/statistics/click?target=https://github.com/labstack/echo):Go 语言最受欢迎的 Web 框架之一,具有:高性能、便于扩展、轻量的特点,示例代码:
```go
package main
import "github.com/labstack/echo"
func main() {
e := echo.New()
e.GET("/", callback)
e.Logger.Fatal(e.Start(":3000"))
}
func callback(ctx echo.Context) error {
return ctx.HTML(200, "你好 echo
")
}
```

4、[tidb](https://hellogithub.com/periodical/statistics/click?target=https://github.com/pingcap/tidb):开源分布式 NewSQL 数据库,能优雅的替换传统的数据库中间件、数据库分库分表等 Sharding 方案。具备如下核心特性:
- SQL支持 (TiDB 是 MySQL 兼容的)
- 水平线性弹性扩展
- 分布式事务
- 跨数据中心数据强一致性保证
- 故障自恢复的高可用

### Java 项目
5、[AndroidTVLauncher](https://hellogithub.com/periodical/statistics/click?target=https://github.com/JackyAndroid/AndroidTVLauncher):一个 TV Leanback 风格桌面,基于 Leanback 库开发,符合 Android TV 官方交互规范

6、[spring-data-jpa-datatables](https://hellogithub.com/periodical/statistics/click?target=https://github.com/darrachequesne/spring-data-jpa-datatables):spring-data-jpa 和 jQuery [datatables](https://www.datatables.net/) 集成工具。极大简化基于 datatables 数据表格的开发,示例代码:
```
// 前端代码
$(document).ready(function() {
var table = $('table#sample').DataTable({
'ajax': {
'contentType': 'application/json',
'url': '/data/users',
'type': 'POST',
'data': function(d) {
return JSON.stringify(d);
}
},
// java 代码 server-side becomes
@JsonView(DataTablesOutput.View.class)
@RequestMapping(value = "/data/users", method = RequestMethod.POST)
public DataTablesOutput getUsers(@Valid @RequestBody DataTablesInput input) {
return userRepository.findAll(input);
}
```

7、[xxl-job](https://hellogithub.com/periodical/statistics/click?target=https://github.com/xuxueli/xxl-job):轻量级分布式任务调度框架,其核心设计目标是:开发迅速、学习简单、轻量级、易扩展,文档齐全。[官网](http://www.xuxueli.com/xxl-job/)
### JavaScript 项目
8、[flatpickr](https://hellogithub.com/periodical/statistics/click?target=https://github.com/flatpickr/flatpickr):扁平化的日期选择组件,项目源码使用 TypeScript 编写,可以学习使用 Typescript 编写 JS 插件,Typescript 语言的好处是:可以在多人协作中避免一些变量类型错误的问题,从而提高效率。使用示例代码:
```javascript
// ConnonJS 方式引入
const flatpickr = require("flatpickr");
flatpickr("#myID", {});
flatpickr(".myClass", {});
// jQuery 方式引入
$(".selector").flatpickr(optional_config);
```

9、[puppeteer](https://hellogithub.com/periodical/statistics/click?target=https://github.com/puppeteer/puppeteer):Google Chrome 团队开源的面向 Node.js 的,基于 DevTools 协议的远程 Headless Chrome 控制库,它可以生成网页截图、PDF、抓取单页应用与网页内容、进行自动化表单提交、界面测试与模拟键盘输入等功能。示例代码如下:
```javascript
// 访问 https://example.com 并将截图保存为 example.png
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({path: 'example.png'});
await browser.close();
})();
```

10、[SelectPage](https://hellogithub.com/periodical/statistics/click?target=https://github.com/TerryZ/SelectPage):简洁优雅而功能强大的选择器,使用简单,适应各种UI环境,功能强大,丰富的参数和回调函数
。它包含了 autocomplete、ajax 数据源、多选择 Tag、i18n 国际化,结果列表分页展示,键盘快捷操作等
```javascript
//defined a array, the data returned at the server side is also used that format:
//Array[{Object},{...}]
var data = [
{id:1 ,name:'Chicago Bulls',desc:'芝加哥公牛'},
{id:2 ,name:'Cleveland Cavaliers',desc:'克里夫兰骑士'},
{id:3 ,name:'Detroit Pistons',desc:'底特律活塞'},
{id:4 ,name:'Indiana Pacers',desc:'印第安纳步行者'}
];
//init SelectPage
$('#selectpage').selectPage({
showField : 'desc',
keyField : 'id',
data : data
});
```

11、[vue-3d-model](https://hellogithub.com/periodical/statistics/click?target=https://github.com/hujiulong/vue-3d-model):展示三维模型的 Vue 组件,支持模型操作和模型点击事件,能自动缩放模型到合适大小并校正偏移,目前支持 obj、stl、dae 和 json 格式的模型,示例代码:
```vue
```

12、[weweChat](https://hellogithub.com/periodical/statistics/click?target=https://github.com/trazyn/weweChat):微信的第三方客户端。在完整实现 Web 微信功能的基础上,新增并优化部分功能,重设计整体 UI,提供更好的体验。Mac 安装命令:`brew cask install wewechat`

### Python 项目
13、[faker](https://hellogithub.com/periodical/statistics/click?target=https://github.com/joke2k/faker):用于生成假数据的库,支持多种语言,你值得拥有。示例代码:
```python
fake.address()
# '辽宁省雪市静安廉街b座 998259'
fake.street_address()
# '巢湖街U座'
fake.building_number()
# 'x座'
fake.city_suffix()
# '市'
fake.latitude()
# Decimal('-0.295126')
fake.province()
# '湖北省'
```
14、[newspaper](https://hellogithub.com/periodical/statistics/click?target=https://github.com/codelucas/newspaper):强大的提取 Web 的内容、文章的库,支持多种语言,安装命令 `pip3 install newspaper3k`。示例代码:
```python
>>> from newspaper import Article
>>> url = 'http://fox13now.com/2013/12/30/new-year-new-laws-obamacare-pot-guns-and-drones/'
>>> article = Article(url)
>>> article.download()
>>> article.html
'
『上一期』 | 反馈和建议 | 『下一期』
---
👉 来!推荐开源项目 👈
微信中搜:HelloGitHub 关注公众号
不仅能第一时间收到推送,还有回馈粉丝的活动
如果文中的图刷不出来,可以点击 这里。
## 赞助
## 声明

本作品采用 署名-非商业性使用-禁止演绎 4.0 国际 进行许可。