More: More Dengqinghua

Ruby知识树

2017-08-20

该文档涵盖了Ruby和Ruby On Rails从初级程序员至高级程序员, 最终成为系统架构师需要掌握的知识点.

阅读完该文档后,您将会了解到:

1 提问的智慧

如何提问很重要, 在学习任何知识之前, 需要先学会正确地提问.

  • 提问的智慧原文: 这里
  • 提问的智慧中文版本: 这里

2 vim学习

ruby编程不允许使用任何IDE

您可以选择Vim, Emacs等编辑器, 我们推荐使用 vim

学习手册: vim7.2学习手册

您可以参考或者使用我的vim配置

3 Linux操作

建议推荐学习鸟哥私房菜础篇

3.1 基础命令

ls
history
su/sudo
mkdir/rmdir
touch
chmod
chown
apt-get/apt-cache,
tar
date
cat
cp
mv
pwd
cd
grep
man,
ps aux|grep
kill/pkill
whereis
alias
df/du
rm
echo
diff
wget
ifconfig
netstat
top
crontab
scp
curl
tail -f
ssh
yum

关于每个命令的具体用法,可以查询下方给出的网站: Linux命令便捷查询手册。 需要了解linux的标准输入,标准输出,标准错误。

3.2 资料

4 git和git-flow

4.1 git

4.1.1 常用命令
git --help

usage: git [--version] [--help] [-C <path>] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

The most commonly used git commands are:
   add        Add file contents to the index
   bisect     Find by binary search the change that introduced a bug
   branch     List, create, or delete branches
   checkout   Checkout a branch or paths to the working tree
   clone      Clone a repository into a new directory
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   fetch      Download objects and refs from another repository
   grep       Print lines matching a pattern
   init       Create an empty Git repository or reinitialize an existing one
   log        Show commit logs
   merge      Join two or more development histories together
   mv         Move or rename a file, a directory, or a symlink
   pull       Fetch from and integrate with another repository or a local branch
   push       Update remote refs along with associated objects
   rebase     Forward-port local commits to the updated upstream head
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index
   show       Show various types of objects
   status     Show the working tree status
   tag        Create, list, delete or verify a tag object signed with GPG

4.1.2 问题
  • Git的三颗树: working dir, Index, HEAD分别是什么?
  • git add, git commit, git stash 做了什么操作,文件是如何标志和转移的?
4.1.3 资料

4.2 git-flow

4.2.1 工作原理
4.2.2 常用命令
  • git flow init
  • git flow feature start
  • git flow feature publish
  • git flow feature track
  • git flow feature finish
  • git flow release [start|publlish|track|finish]
4.2.3 问题
  • Git Flow 解决了什么问题, 其基本思想是什么?
  • Git Flow中的分支从哪里而来,最后到哪里去?
  • Git Flow中的命令和Git中的命令是如何对应的?

5 Ruby语言

5.1 基础语法

推荐书籍: Ruby基础教程

5.2 类库

  • String
  • Array
  • Hash
  • Numeric
  • File

更多请参考ruby官方类库: ruby-doc

5.3 元编程

ruby元编程

阅读完ruby元编程之后, 才会有醍醐灌顶的感觉.

请尽量阅读原版.

5.4 Ruby底层实现

Ruby Under a Microscope

5.5 提高篇

推荐Working With XXX系列

Working With Unix Processes, TCP Sockets, Ruby Threads

6 代码规范

7 Rails框架

7.1 调试技术

  • pry
  • 获取日志中的信息

7.2 测试技术

  • Rspec

7.3 应用层

8 服务间通信

  • 设计原则及实例
  • 接口
  • 队列
    • sidekiq
    • kakfa

9 Web前端

  • 浏览器:firebug、渲染模型
  • html
  • css
  • javascript
  • ajax
  • 提高篇
    • Web流行框架
    • node
    • react
    • angular

10 数据库

  • 数据库表结构设计
  • 如何建立高效索引
  • 慢查询优化
  • 主从
  • 高可用

11 网络安全

  • 白帽子讲web安全
  • 黑客攻防技术宝典
  • 数据库注入
  • XXS攻击

12 设计原则

  • Head first设计模式
  • ruby面向对象编程
  • 重构
  • 敏捷软件开发:原则、模式与实践

13 计算机基础

  • 操作系统
    • 深入理解计算机系统
  • 算法结构
    • 编程珠玑
    • 框架核心算法

14 HTTP协议

TCP/IP详解:卷一

15 缓存框架

  • 浏览器端
  • CDN
  • varnish
  • nginx
  • Rails:object,partial,page,action
  • redis

16 异步处理框架

  • redis
  • kafka

17 搜索框架

ElasticSearch

18 服务器框架

  • nginx
  • passenger