第三方库

GitHub 上的顶级项目都是做什么的?(二)

GitHub 上面的顶级项目都是做什么的? 下面是第二周的学习记录:

起因:

> 前一阵看到同事在用一个名叫 AirFlow 的工具,而我竟然素未耳闻,一番搜索之后发现这个工具
> 是 Apache 的顶级项目,而且在 GitHub 上有 1w+ 的 Star。震惊之余,感觉有必要把 GitHub
> 上常用工具捋一遍,以避免以后发生重复造轮子的情况。计划是把 GitHub 上 5k+ Star 的项目
> 都知道是做什么用的,每周看 50 个,数据来源是这里:https://gitstar-ranking.com/repositories。

# 教程资源类

1. jlevy/the-art-of-command-line

命令行的基础教程, 有中文翻译

2. justjavac/free-programming-books-zh_CN

免费中文编程书

3. googlesamples/android-architecture

Google 官方提供的 Android 应用架构例子

4. sindresorhus/awesome-nodejs

Nodejs 资源, awesome 系列, 不再赘述.

5. toddmotto/public-apis

一些免费的公共 API, 值得收藏.

# 前端 UI 框架/库

1. moment/moment

moment.js 是前端处理验证以及显示时间的一个库. 没想到这个功能这么常用啊, 竟然能进
GitHub 前100.

2. ElementUI/Element

饿了么出品的 Vue 组件库

3. google/material-design-lite

Google 的 Material Design 的一个简化版, 貌似现在不再支持了.

4. Dogfalo/materialize

Material 风格的前端 CSS 库

5. callemall/material-ui

Material 风格的 React 组件库

6. necolas/normalize.css

我们知道当不使用任何 CSS 的时候, HTML 页面在不同浏览器还是有略微不同的, 这是因为浏览
器自带了一些样式, 而 normalize 的意义就在于把这些样式统一起来. 有人把它比喻成女生化
妆的打底妆过程, 可以说是非常形象生动了~

7. zurb/foundation-sites

类似 Bootstrap 的前端 UI 框架, 貌似响应式支持更好一些.

# 大前端框架和库

1. ionic-team/ionic

使用 web 技术来编写移动应用的库. 和 React Native 相比可以说是两条不同的路子吧. Ionic
更加 web 一些.

2. mrdoob/three.js

前端的 3D 库. 可能需要一些基础的图形学知识才能用好.

3. zeit/next.js

基于 React 的一个框架. 前端不是很懂, 不多说了. 关于现在的前端三大框架
React/Vue/Angular 可以阅读前文.

4. nwjs/nw.js

前身是 NodeWebkit, 使用 web 技术来编写跨平台的桌面应用的工具.

5. apache/incubator-echarts

前端的一个显示饼图等示意图的库

6. gatsbyjs/gatsby

Gatsby.js 是一个基于 React 的静态网站生成器

7. square/retrofit

用于 Java 和 Android 的 HTTP 客户端

8. AFNetworking/AFNetworking

用于苹果系列系统的网络库

9. babel/babel

JavaScript 这些年的进化速度非常快, 但是不能保证浏览器升级足够快, 好多过时的浏览器还
有不少市场份额, 但是你又想用新的语法, 这时候就可以使用 babel, 他可以帮你把新版本的
JavaScript 编译到老版本的浏览器支持的语法.

10. square/okhttp

Square 提供的又一个 Java 和 Android 的 HTTP 客户端.

11. blueimp/jQuery-File-Upload

jQuery 的文件上传插件

12. gulpjs/gulp

JS 的构建工具, 有点类似于 C 语言的 make

13. yarnpkg/yarn

Facebook 出品的 Nodejs 包管理器, 貌似有比官方的 npm 优秀的地方, 不太清楚了.

14. jashkenas/backbone

老牌的前端框架了, 现在用的人应该很少了

# 后端工具

1. ansible/ansible

Ansible 是一个用于部署, 管理多台机器的工具. 和 Puppet 等工具不同的是, Ansible 不需要
再被控机上安装任何 Agent, 只需要能够 SSH 上去就行.

Ansible 使用 Python 编写.

# 库

1. google/guava

Google 的 Java 核心库, 当想造 Java 的轮子的时候不妨来这里看看是不是已经有了.

2. requests/requests

Python 的第三方 HTTP 客户端, 接口相比标准库的urllib 友好一些, 不过有内存泄露的严重问
题. 建议生产应用考虑使用 pycurl 比较好, 虽然接口不太友好, 但是特别稳定.

# 语言

1. iojs/node-v0.x-archive

Node.js 老版本的归档, 不再赘述. 请参考 Nodejs

# 通用工具类

1. typicode/json-server

这个其实既是前端工具也是后端工具吧. 根据给定的 json 文件, 提供一个模拟接口. 在后端接
口还没有开发好, 或者需要测试的时候供前端调用, 非常方便.

2. jykell/jykell

jykell 是一个使用 Ruby 编写的静态网站生成器, 也就是说把你的网站预编译成 HTML. 经常用
在 GitHub Pages 上做免费的博客. 不过我个人更喜欢 Pelican.

3. impress/impress.js

又一个基于前端技术来做幻灯片的工具, 不过更加强调 CSS3 的应用, 效果更酷炫一些.

4. getlatern/latern

这个不好多说, 懂的自然懂~

5. jakubroztocil/httpie

命令行调试接口的工具, 相比 curl 来说, 更加直观一点, 对新手友好. 不过我还是喜欢用
curl.

6. resume/resume.github.com

利用 GitHub 上的信息生成简历的工具

7. nvbn/thefuck

这个工具很有意思, 当你在命令行敲错命令的时候, 一定会心里默念一句: fuck. 现在你可以直
接再敲一遍 fuck, 他会帮你才出来你刚刚应该输入的正确命令.

8. shadowsocks/shadowsocks 系列

这个库懂的自然懂, 不便多说.

9. NARKOZ/hacker-scripts

一个黑客的一些脚本, 比如说如果九点之后还在开发机上登录的话就给老婆发个短信解释一下 …

10. rg3/youtube-dl

YouTube 视频下载工具

11. adobe/brackets

Adobe 出品的一个代码编辑器, 貌似现在已经不火了吧.

12. zeit/hyper

基于 Electron 做的一个终端模拟器, 不过我现在还在用 iterm2, 有空了体验下.

13. discourse/discourse

一个开源的论坛

# Web 框架

1. Pallets/flask

Flask 是一个 Python 的微框架, 相对 Django 来说上手更简单. 不过我个人用得不多, 感觉业
务的复杂性是不可避免的, 框架并不能解决多少问题.

2. spring-projects/spring-boot

spring 框架相关的东西, 不太熟悉, 有做 Java 的同学欢迎在评论区补充.

3. django/django

老牌的 Python web 框架, 自带了 ORM 和管理界面, 配合 DRF 做后端 Restful API 爽歪歪.

# 架构

1. kubernetes/kubernetes

Kubernetes 经常被缩写成 K8S, 可以毫不犹豫地说, K8S 已经取得了容器编排市场的胜利.
用 Docker 打镜像可以避免装环境的困扰, 同时相对于虚拟机来说, 又不会有很多性能损失. 但
是当 Docker 构成的服务太多的时候, Container 的伸缩, 网络通信等等问题都需要系统性的解
决, 就好比想要多个进程同时运行就需要操作系统来管理一样, 这时候就需要 K8S 来做容器编
排工具了. 有人说, K8S 是云时代的操作系统, 我觉得这个比喻是非常好的.

2. Google/protobuf

使用 RPC 的时候, 可以选择不同序列化工具, ProtoBuffer 可以说是其中的佼佼者了. 支持的
语言多, 序列化性能高, 而且很省空间.

GitHub 上的顶级项目都是做什么的?(一)

前一阵看到同事在用一个名叫 AirFlow 的工具,而我竟然素未耳闻,一番搜索之后发现这个
工具是 Apache 的顶级项目,而且在 GitHub 上有 1w+ 的 Star。震惊之余,感觉有必要
把 GitHub 上常用工具捋一遍,以避免以后发生重复造轮子的情况。计划是把 GitHub 上
5k+ Star 的项目都知道是做什么用的,每周看 50 个,数据来源是这里:https://gitstar-ranking.com/repositories 。

下面是本周的记录:

# 教程资源类

1. freeCodeCamp/freeCodeCamp

免费代码训练营

2. EbookFoundation/free-programming-book

免费编程图书

3. sindresorhus/awesome

awesome 列表的列表。这个项目起源于某个人做了一个 awesome-php 的 php 优质资源
列表,然后大家就做了 awesome-python,awesome-vue 等各种列表,这个项目又把
各种 awesome 列表收集了起来。。

4. CyC2018/CS-Notes

国人编写的计算机基础教程,中文

5. jwasham/coding-interview-university

面试考点总结

6. h5bp/Front-end-Developer-Interview-Questions

前端工程师面试问题

7. vinta/awesome-python

Python 的一些优质资源. 前面提到的 awesome 系列列表,不再赘述

8. airbnb/javascript

Airbnb 的 js 编码规范,值得参考。

9. github/gitignore

GitHub 提供的各种项目的 gitignore 文件模板,省了自己写了

10. getify/You-Dont-Know-JS

前端(JS)的一些坑的总结

11. vuejs/awesome-vue

Vue 的一些优质资源. awesome 系列,不再赘述

# 前端 UI 框架/库

1. twbs/bootstrap

Twitter 推出的前端 UI 框架,有网格系统和各种组件,曾经常年在 GitHub 上排名第一,可以说是后端工程师画界面的利器。

竞品:Semantic UI, pure-css

2. FontAwesome/Font-Awesome

字体和图标库,可以使用 SVG 和字体等等多种格式。

3. ant-design/ant-design

蚂蚁金服出的 react/vue 组件库,前一阵大名鼎鼎的“圣诞彩蛋”就是这个库搞得。主要
提供 React 的组件库,用于企业中后端的后台的建设。关于 React/Vue 和前端的组
件化是一个很有意思的话题,可以查阅相关资料。

和 Bootstrap 等的区别在于,Bootstrap 更偏向于 UI 方面,是 CSS 框架,而 antd
则是完整的包括 UI 和功能在内的 React 组件。可以理解为 Bootstrap 只做了“皮”,
而 antd 是 “皮” + “骨”。

4. Semantic-Org/Sematic-UI

和 Bootstrap 类似的一个组件库。Semantic UI 更强调使用语义化的 class 来定义样式

5. google / material-design-icons

Google 推出的 Material 风格图标库。

6. daneden/animate.css

CSS 动画效果库

# 大前端框架和库

1. vuejs/vue

Vue 是国人推出的一个前端框架,可以通过写不同的 Vue 组件来组成一个完整的应用,
支持服务端渲染(SSR)。和 React 一样,Vue 也使用了 Virtual-DOM 技术来提高性能。

2. facebook/react

facebook 推出的一个前端框架,特点是每个组件的 HTML/JS/CSS 组合在一起,使用
Virtual-DOM 渲染。在 React 出现之前,前端框架普遍采用了后端广泛使用的 MVC
模式,强调 HTML/JS/CSS 三者要分离,而 React 则反其道而行之,强调从组件构建,
可以说 React 的出现是前端界的一场革命。

3. facebook/react-native

使用 React 的语法来构建 native app,注意这里并不是使用一个 iOS 或者 Android
的 WebView 中嵌套了一个 webapp,而是直接使用 JS 来操作原生组件。

4. angular/angular.js

Google 推出的前端框架,没用过

5. reactjs/redux

react.js 的一个组件,用来管理数据。

6. meteor/meteor

前几年火过一阵,号称要统一前后端,然而我从来没搞明白到底是干啥的,如今热度已经
大减了。HN 上甚至直接有人问 [Is meteor.js dead?](https://news.ycombinator.com/item?id=16782266)

7. webpack/webpack

用于打包前端资源

8. chartjs/Chart.js

前端数据可视化组件

9. electron

可以使用前端的工具链来编写桌面应用,同时能够跨平台。

10. jQuery

老牌的跨浏览器兼容库。随着浏览器的发展,现在使用 jQuery 的越来越少了。

11. create-react-app

用来构造 react app 的辅助工具。

12. d3.js

前端数据可视化组件

# 后端工具

1. elasticsearch

使用 Java 编写的一个搜索工具,要实现全文搜索的话,选择 ES 就对了。

2. moby

Docker 的内核. Docker 可以让你打包应用的所有环境, 像虚拟机一样隔离, 但是又不像虚拟机
一样过多消耗资源.

# 库

1. ReactiveX/RxJava

TODO 一种编程模式,现在还不是很了解。

# 机器学习

1. TensorFlow

Google 推出的深度学习库, 目前占主流地位.

# 语言

1. Microsoft/TypeScript

微软推出的一个 JavaScript 的超集。我们知道 JavaScript 是一个动态弱类型的语言,
这种特性在小项目上很方便,然而随着前端项目越来越大,强类型对于程序正确性的保证
就显得越来越重要了。TypeScript 重点就在于增强了类型,甚至名字都叫 TypeScript。

强类型的语言是近年来语言的发展趋势,新语言诸如 Rust、Go、Swift 都是强类型的
语言。而一些老语言,比如 Python 也加入了 Type Hint 的功能来增强类型支持。

2. Apple/swift

Apple 推出的新语言,用来代替 Obj-C。

3. golang

Google 推出的编程语言。特点是通过 Goroutine 支持高并发。

4. nodejs

可以在服务器上运行的 js。

# 通用工具类

1. hakimel / reveal.js

使用 js 来做 PPT 的一个框架或者说工具

2. GoogleChrome/puppeteer

Google 推出的操作 Chrome 浏览器的 node.js API。可以用在自动化测试和爬虫等领域。
官方 API 的推出基本上意味着第三方工具已经失去意义了。比如说 Phantom.js 直接宣
布停止维护了。

3. atom

GitHub 推出的一个代码编辑器。

4. oh-my-zsh

zsh 的增强组件集,可以让你的 shell 异常强大, 建议刚学命令行的可以体验一下.

5. vscode

微软推出的代码编辑工具,目前占据了市场优势地位。

# Web 框架

1. rails

Ruby 的一个 MVC 模式的 web 框架,当年可谓大红大紫,现在似乎热度有所衰减了,
可能是因为大家都不写 Web 应用了。

2. expressjs

Node.js 的一个 Web 框架。

3. socket.io

实现 WebSocket 的一个库,使用 node.js 编写。WebSocket 是在浏览器和服务器之间
实现全双工通信的一个协议。

4. laravel

一个比较现代的 PHP MVC web 框架,不过 PHP 这几年的热度衰减也很厉害,好多搞 PHP 的都直接转 Go 了。

# 内核

1. torvalds/linux

这个不用说了吧。评论里提到 Linux 的贡献者在 GitHub 上显示为正无穷, 厉害了.

更新: 更正了一些错误

markdown notes

## Table

“`
| Tables | Are | Cool |
| ————- |:————-:| —–:|
| col 3 is | right-aligned | $1600 |
| col 2 is | centered | $12 |
| zebra stripes | are neat | $1 |
“`
There must be at least *3 dashes* separating each header cell. The outer pipes (|) are optional, and you don’t need to make the raw Markdown line up prettily. You can also use inline Markdown.

“`
Markdown | Less | Pretty
— | — | —
*Still* | `renders` | **nicely**
1 | 2 | 3
“`

可以使用冒号来对齐单元格

## 图片

“`
Inline-style:
![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png “Logo Title Text 1”)
Reference-style:
![alt text][logo]
[logo]: https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png “Logo Title Text 2”
“`

## 横线

“`
Three or more…

Hyphens
***
Asterisks
___
Underscores
“`

readline library

readline is widely used input lib, all the key bindings are from emacs

GNU readline key bindings

“`
key action note
^a moves the cursor to the beginning of the line a 是第一个字母
^b moves it one position to the left b 是 back 的缩写
^c send SIGINT or KeybordInterrupt
^d send eof on empty line
^d erase next char
^e to the end e 表示 end
^f 把光标向前移动一格 f 表示 forward
^h 把光标向前删除 h 表示 histroy?
^i 自动补全, 和 tab 功能一样
^k 删除到行尾 k表示kill
^y 粘贴删除的字符 y 表示 yank
^_ undo
^p previous
^n next
^r reverse search r for reverse
^s search s for search
“`

Using readline in python

actually the input function is just readline enabled, the missing functionality is history support

memcacheq

memcacheq
======
 
memcacheq is based on memcachedb which is based on memcached and Berkeley DB
memcachedb adds persistent for memcached by using Berkeley DB and is fully compatible with the memcached API
 
memcached API http://www.tutorialspoint.com/memcached/memcached_set_data.htm
——
 
set key flags exptime bytes [noreply]
value
 
–> STORED // success
–> ERROR // error
 
get key
 
–>
VALUE key flags bytes
value
 
END
 
memcacheq http://memcachedb.org/memcacheq/
——
 
memcacheq uses only the get and set verb

ncurses library

ncurses is a lib for building command line user interface(TUI)

Hello World

#include
int main() {
initscr();
printw(“Hello World !!!”); refresh();
getch();
endwin();
return 0;
}

初始化控制函数