<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Segment7: mem_inspect and png</title>
    <link>http://blog.segment7.net/articles/2006/08/31/mem_inspect-and-png</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>The Blog</description>
    <item>
      <title>mem_inspect and png</title>
      <description>&lt;p&gt;I'm pleased to announce to new libraries written by members of the Seattle Ruby Brigade, mem_inspect and png!

&lt;h3&gt;mem_inspect&lt;/h3&gt;

&lt;p&gt;mem_inspect is ObjectSpace.each_object on crack.  mem_inspect gives you the contents of each slot in Ruby's heap.  mem_inspect also includes viewers that let you visualize the contents of Ruby's heap.

&lt;p&gt;To install:

&lt;pre&gt;&lt;kbd&gt;sudo gem install mem_inspect&lt;/kbd&gt;&lt;/pre&gt;

&lt;p&gt;Then you'll need to build a patched ruby:

&lt;pre&gt;&lt;kbd&gt;ruby_mem_inspect_build&lt;/pre&gt;&lt;/kbd&gt;

&lt;p&gt;You'll then have a ruby capable of running mem_inspect in mem_inspect_ruby_1_8.

&lt;p&gt;You can make an image with:

&lt;pre&gt;&lt;kbd&gt;mem_inspect_ruby_1_8/ruby_mem_inspect -S ruby_mem_dump&lt;/kbd&gt;&lt;/pre&gt;

&lt;p&gt;Which will give you a PNG in your current directory named: &lt;tt&gt;mem_inspect.PID.TIMESTAMP.png&lt;/tt&gt;

&lt;p&gt;You'll get an image that looks something like this:

&lt;p&gt;&lt;a href="http://flickr.com/photos/drbrain/229482312/"&gt;http://flickr.com/photos/drbrain/229482312/&lt;/a&gt;

&lt;p&gt;Bigger:

&lt;p&gt;&lt;a href="http://flickr.com/photo_zoom.gne?id=229482312&amp;size=o"&gt;http://flickr.com/photo_zoom.gne?id=229482312&amp;size=o&lt;/a&gt;

&lt;p&gt;To dump a PDF any time you want:

&lt;pre&gt;&lt;code&gt;require 'meminspect/png_viewer'

MemInspect::PNGViewer.new(1024, 768).draw&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can also dump to an AquaTerm plot window if you have RubyCocoa and AquaTerm installed.

&lt;pre&gt;&lt;code&gt;require 'meminspect/aquaterm_viewer'

MemInspect::AquatermViewer.new(1024, 768).draw&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;png&lt;/h3&gt;

&lt;p&gt;png is a pure-ruby PNG writing library written by &lt;a href="http://blog.zenspider.com"&gt;Ryan Davis&lt;/a&gt;.

&lt;p&gt;To install:

&lt;pre&gt;&lt;kbd&gt;sudo gem install png&lt;/kbd&gt;&lt;/pre&gt;

&lt;p&gt;To use:

&lt;pre&gt;&lt;code&gt;require 'png'

canvas = PNG::Canvas.new 200, 200

# Set a point to a color
canvas[100, 100] = PNG::Color::Black

# draw an anti-aliased line
canvas.line 50, 50, 100, 50, PNG::Color::Blue

png = PNG.new canvas
png.save 'blah.png'&lt;/code&gt;&lt;/pre&gt;
</description>
      <pubDate>Thu, 31 Aug 2006 15:52:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:d7427250-1f0c-4084-83aa-d0b09049d42e</guid>
      <author>drbrain@segment7.net (Eric Hodel)</author>
      <link>http://blog.segment7.net/articles/2006/08/31/mem_inspect-and-png</link>
      <category>Hacking</category>
      <category>Ruby</category>
      <category>Software</category>
    </item>
  </channel>
</rss>
