# Ruby 技能图谱

说明: 本图谱只捡重点的列举,并非包含全部。文中所列举或没有列举的资源信息都可以在[awesome-ruby](https://github.com/markets/awesome-ruby)中找到。

## Ruby应用生态

* [Web开发](#Web开发)
* [自动化测试](#自动化测试)
* [安全](#安全)
* [云计算基础](#云计算基础)
* [嵌入式](#嵌入式)

### Web开发

- Rails全栈式Web框架
- 轻量级Web开发框架(Sinatra,Cuba等)
- 异步无阻塞Ruby Server框架:Goliath

### 自动化测试

- RSpec: BDD测试框架
- Cucumber: BDD验收测试框架
- Watir: Web应用测试工具

### 安全

- Metasploit:也许是最好的渗透测试框架
- Gitrob: Github敏感信息收集工具

### 云计算基础

- chef: 自动化运维工具
- puppet: 自动化运维工具
- fog: 强大的云服务库

### 嵌入式

- mruby: Ruby的轻量版本,为嵌入式开发而生
- [mruby-cli](https://github.com/hone/mruby-cli): 为linux等平台构建本地命令行应用

## Web开发需要学习的主力框架

- Rails: 全栈Web开发框架
- Sinatra: 轻量级的Web开发框架
- Goliath: 异步非阻塞Ruby Server框架

## 彻底掌握Ruby所需要的「道」与「术」

### 「道」

- 面向对象基础
- 深入理解Ruby背后的设计哲学和设计原则
- 深入理解Ruby对象模型
- 深入理解block和闭包
- 深入理解Ruby的作用域
- 深入理解Ruby的方法查找机制
- 深入理解Ruby的内存管理(变量和对象内存布局,GC算法和工作机制)
- 进阶:有余力的可以研究Ruby底层的实现
- 进阶:通过学习lisp(Elixir亦可),来反观Ruby中block(函数式编程风格),以及元编程的实现(Lisp是暴露AST的宏,Ruby是利用Block和作用域隐式操作AST的宏)

### 「术」

- 各种具体类型的处理方法和方式,比如字符串和相关编码、正则表达式、IO等处理
- 并发与并行:
- 彻底了解Ruby的GIL及其机制
- 彻底了解Ruby线程的发展变化及其工作机制(从用户线程到本地线程)
- 彻底了解Fiber及其应用(重点在Goliath中的应用,终结异步回调地狱)
- 彻底了解进程相关(重点在各种Ruby多进程应用服务器的工作机制)
- 尝试了解基于actor模型的Ruby并发库Celluloid。
- 社区中各种Gem的实现原理及其用法

## 学习资源

- [「诱人的Ruby」视频教程](http://edu.51cto.com/lecturer/index/user_id-140924.html)
- [Ruby Weekly订阅](http://rubyweekly.com/)
- 其他请自行Google: Ruby books

Ruby 技能图谱的更多相关文章

  1. 微服务架构 技能图谱skill-map

    # 微服务架构 技能图谱 ## 理论基础### 概念#### 多微合适 - 非代码函数 - 非重写时间 - 适合团队最重要 - 独立业务属性 - 全功能团队 #### 进程隔离 - 服务运行在独立的进 ...

  2. fir.im Weekly - 人人都需要的 IT 技能图谱

    AlphaGo 与李世石的人机世纪大战落下帷幕,不禁让人思考<失控> 中说道的 "机器正在生物化,而生物正在工程化 ".作为人类,在未来能否保全最后的智力骄傲成为一个疑 ...

  3. DBA的技能图谱

    最近发现公布的技术岗位的技能图谱中没有DBA的,比较心塞,于是根据自己的工作经验写了一个,写的过程中发现,还的不断的完善,但是先放出来,欢迎大家提建议.

  4. [转]StuQ 技能图谱(全套13张)

    程序开发语言综述.jpg 前端工程师必备技能.jpg 大数据工程师必备技能.jpg   安全工程师必备技能.jpg 嵌入式开发必备技能.jpg iOS开发工程师必备技能.jpg   移动无线测试工程师 ...

  5. PHP 工程师技能图谱

    # PHP 工程师技能图谱## 基础知识 - HTTP - HEADER - REQUEST - RESPONSE - GET/POST/PUT/DELETE/PATCH/CONNECT/OPTION ...

  6. Node.js 开发技能图谱

    # Node.js 开发技能图谱 ## Node.js 语言环境搭建 - Node.js 安装(3m大法:nvm.npm.nrm)- Node.js 命令- Node.js开发工具(推荐vscode) ...

  7. Golang 开发技能图谱

    # Golang 开发技能图谱 ## Go 语言环境搭建- Go 安装- GOPATH 与工作空间- Go 命令- Go开发工具 ## GO 语言编程基础- 关键词和语法(Language Synta ...

  8. Python 工程师技能图谱skill-map

    # **Python 工程师技能图谱** ## **入门**- 笨办法学Py- 官方教程- Hitchhiker- coursera * codeskulptor.org ## **进阶/脚本** # ...

  9. CTO 技能图谱skill-map

    # CTO 技能图谱 ### 岗位职责* 建立技术团队文化* 规划技术发展路线* 落地产品研发成果* 宣传公司技术品牌* 吸引优秀技术人才 ### 基本素质* 正直诚实的道德修养* 谦虚谨慎的工作态度 ...

随机推荐

  1. [CSP-S模拟测试]:x(数学+并查集)

    题目背景 $\frac{1}{4}$遇到了一道水题,叒完全不会做,于是去请教小$D$.小$D$都没看就切掉了这题,嘲讽了$\frac{1}{4}$一番就离开了.于是,$\frac{1}{4}$只好来问 ...

  2. vector代替数组

    vector代替数组 1.声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除). 2.用vector ...

  3. mac使用相关笔记

    1.软件提示已损坏,需要移到废纸篓的解决方法 -> sudo spctl --master-disable xattr -r -d com.apple.quarantine <path&g ...

  4. getAttribute 与getParmeter 区别

    1.getAttribute是取得jsp中 用setAttribute設定的attribute 2.parameter得到的是string:attribute得到的是object 3.request. ...

  5. 获取header中content-type的值

    后台传过来的值需要根据content-Type的值来判定成功与否 获取header中content-Tyep的值 用res.header['Content-Type']  

  6. 10. Jmeter-后置处理器一

    jmeter-后置处理器介绍与使用一 今天我们先讲 CSS/JQuery Extractor JSON Extractor Boundary Extractor 正则表达式提取器 CSS/JQuery ...

  7. upc组队赛15 Lattice's basics in digital electronics【模拟】

    Lattice's basics in digital electronics 题目链接 题目描述 LATTICE is learning Digital Electronic Technology. ...

  8. linux目录及文件命令学习

    学习Linux 目录操作 1.pwd 可以看当前目录路径 2.cd change directory 改变目录,切换目录 cd / 进入跟目录 cd ..返回上级目录 cd 进入用户主目录 cd .. ...

  9. C++中继承的protected访问级别

    1,子类是否可以直接访问父类的私有成员? 2,根据面向对象理论: 根据 C++ 语法: 3,继承中的访问级别编程实验: #include <iostream> #include <s ...

  10. Windows平台下在Emacs中使用plantuml中文乱码问题(已解决)

    Windows平台下在Emacs中使用plantuml中文乱码问题(已解决) */--> code {color: #FF0000} pre.src {background-color: #00 ...