It is a translation of the original(in Japanese). Every header is linked to the corresponding original slide.
<URL:http://www2a.biglobe.ne.jp/~seki/ruby/>
- Introduction
- Applications
- About its implementation
- Future
- I wanted to make it.
- Extend Ruby objects across the net
- So that you remote can handle it transparently
- I want it come into used.
- Conquer the world < the problem is in front of you
- Ruby-limited distributed object environment
- 100% Pure Ruby
- RMI (in Java) style
- Without declaration (IDL/stub/skeleton)
- Invoke method(s) of object(s) on other host(s)/process(es)
- Treatment of the object(s) is same as usual
- dRuby server, and also client
- Exchange objects
- Return values, arguments
- Call by value (default)
- Change automatically to call by reference
- Support exception, method with block(=iterator)
- Support multithreading
- URI ... druby://hostname:port
- reference ... by URI + ID
- The ID is determined at runtime
- front ... defined simply by URI
- Persistent name
- Frontgate of the system
- The system made up by dRuby has more than zero fronts
- Nothing is known at first except URI
- Handle objects taught by front
- dRuby script...
- Knows URI of front
- Or, becomes front
- front
- Naming service
- Access control
- Default is 'call by value'
- dump/load by Marshal (serialization/reconstitution)
- Cannot dump File, Thread, Proc etc. -> exception
- If it includes them, it fails.
- Catch exception, and call by reference.
- DRbUndump Mix-in
- Cannot load Unknown class
- Examinating in DRbUnknown
- Web application
- Synchronize dRubys
- A Wiki Clone with articles written in RD
- Rewritable web page
- Architecture
- Server ... dRuby
- Web interface ... CGI/mod_ruby
- Mail interface ... scarlet
- There's long preprocessing such as RD formatting
- CGI itself needs everytime formatting
- RWiki caches preformatted pages
- Ask front about Page, and handle it
- Thread synchronization is available
- in/out (get/put) data with TupleSpace
- 'in' gets data that matches pattern
- Candidate knows TupleSpace only
- Adds Engine, speeds it up
- Method invocation
- Protection from GC
- DRbObject forwards received messages to the referee
- method_missing ... invoked in the case of ungoverned method
- DRbObject#method_missing ... forward to URI'ed server
- The server invokes the referee method
- The result is also marshaled
- Each element consists of 'length' and 'Marshal.dump'
- DRbObject has URI and id
- URI specifies the server
- id specifies object in the server
- Every dynamically generated object has its own id
- When id = nil always same object is refered
- Call by reference has GC risk
- Consider at programming level
- Method with Block (Iterator)
- Covered by algorithm
- Time limited GC protection
- Keep certain time till the access
- GCed even refered by DRbObject
- v is not GCed on proc.call
- DRbIdConv exchanges reference and object
- to_id ... from object to ID
- to_obj ... from ID to object
- Object.id and ObjectSpace._id2ref
- Change IdConv
- Register to_id with the front
- Expand its life by to_obj
- Thread keeper forgets dead Object of the front
- Protected from GC certain time till the last access
- Elemental dRuby has nothing
- ACL
- Examine irregular message
- Huge packet
- Invoke dangerous methods
- instance_eval
- How about inspect??
- 1.3
- 1.3b (...then)
- More than one DRbServer
- security
- mod_ruby support
- 2.0
- ARb
- Is free to debug distributed environment?
- Plotting out by NaHi
- Code tracing across the processes
- Do try it!
- Welcome any feedback
<URL:http://www2a.biglobe.ne.jp/~seki/ruby/>
Translator: SUGIHARA, Hiroshi; alias SugHimsi