- Introduction
- Syntax (https://gist.github.com/y8/218075c437b13b8dd3f0)
- Short on OOP theory
- Objects, properties
- Encapsulation, polymorphism
- Classes, inheritance
- Object Model
- Variables: lvar, ivar, cvar, gvar, const
- Object, Module, Class
- Everything is a pointer to object, memory management, GC, RValue & inline objects
- Inheritance, Mixins, Method Lookup
- Eigenclass, ruby great mystery
- Scopes, lexial, logica, execution. Opening/Closing/Inheritance (scope gates), role of self
- Blocks: it’s an argument
- Methods: definition/removal, signature, scope
- Closures, Continuations
- Execution
- Exceptions
- trow, catch, callcc
- Operator precedence
- eval, SAFE_MODE
- Scope evaluation: class_eval, instance_eval
- require, load, autoload
- Hooks: const_missing, method_missing, inherited
- ENV, ARGV
- Built-in types
- Integer, Float, Bignum
- String, Symbol
- Array, Enumerable, lazy loading, decomposition
- Hash
- Regexp
- IO: File, UDP/TCP/UNIX Sockets
- Parallelism
- Main problems: race conditions, deadlock, livelock, simultaneous access, data integrity
- IPC, fork, pipe
- Thread, Mutex, Queues
- Fiber
- DRB (???)
- Reactors (EventMachine, ???)
- Actors (celluloid, ruby-concurrency)
- Tools
- rake
- rubygems (including internal mechanisms)
- bundler
- rvm, chruby, rbenv
- extensions, ffi
- Testing
- rspec, minispec, mspec
- test-unit, minitest
- Debugging, profiling, benchmarking
- pry, ruby-debug, debug2, buybug
- dtrace
- benchmark, benchmark-ips
- lineprof, ruby-prof
- rubyben.ch
- Other implementations around
- rbx, live metrics, console, JIT
- jruby, Truffle, Graal, Total Awesomness
- mruby, embedded, ARM demo
- Practice
- OOP
- Simple ORM (or maybe proper SMPP driver?)
- testing
- profiling
- Simple ORM (or maybe proper SMPP driver?)
- Tools
- making a gem
- rake tasks
- simple c extension
- Parallelism
- fork, ipc — small server
- threads — blocking IO (driver to server?)
- fibers – ???
- EM — messaging
- DRB — ???
- Actors — simple in-memory game server
- OOP
- Bonus Track
- VM basics, AOT, JIT, opmiziations