Skip to content

Instantly share code, notes, and snippets.

@y8
Last active August 29, 2015 14:08
Show Gist options
  • Save y8/e136409e44c64784cd37 to your computer and use it in GitHub Desktop.
Save y8/e136409e44c64784cd37 to your computer and use it in GitHub Desktop.
  • 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
    • 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
  • Bonus Track
    • VM basics, AOT, JIT, opmiziations
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment