<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>MessagePack Blog</title>
	<atom:link href="http://msgpack.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://msgpack.wordpress.com</link>
	<description>Just another WordPress.com site</description>
	<lastBuildDate>Wed, 11 Jan 2012 15:13:04 +0000</lastBuildDate>
	<language></language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='msgpack.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>MessagePack Blog</title>
		<link>http://msgpack.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://msgpack.wordpress.com/osd.xml" title="MessagePack Blog" />
	<atom:link rel='hub' href='http://msgpack.wordpress.com/?pushpress=hub'/>
		<item>
		<title>New website of MessagePack Project</title>
		<link>http://msgpack.wordpress.com/2010/06/22/new-website-of-messagepack-project/</link>
		<comments>http://msgpack.wordpress.com/2010/06/22/new-website-of-messagepack-project/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 21:53:06 +0000</pubDate>
		<dc:creator>frsyuki</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://msgpack.wordpress.com/?p=100</guid>
		<description><![CDATA[New website of MessagePack Project is opened! URL is: http://msgpack.org/ Now it describes about our RPC &#8211; MessagePack-RPC. It is the next-generation RPC system that supports ALL of following features: Asynchronous RPC Parallel Pipelining Thrift IDL Dynamic Typing Connection Pooling &#8230; <a href="http://msgpack.wordpress.com/2010/06/22/new-website-of-messagepack-project/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=msgpack.wordpress.com&amp;blog=13465985&amp;post=100&amp;subd=msgpack&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>New website of MessagePack Project is opened!</p>
<p>URL is: <strong><a href="http://msgpack.org/">http://msgpack.org/</a></strong></p>
<div id="attachment_101" class="wp-caption alignnone" style="width: 522px"><a href="http://msgpack.org/"><img src="http://msgpack.files.wordpress.com/2010/06/website.png?w=640" alt="New website of MessagePack Project" title="The MessagePack Project"   class="size-full wp-image-101" /></a><p class="wp-caption-text">New website of MessagePack Project</p></div>
<p>Now it describes about our RPC &#8211; <strong>MessagePack-RPC</strong>. It is the next-generation RPC system that supports ALL of following features:</p>
<ul>
<li><a href="http://redmine.msgpack.org/projects/msgpack/wiki/RPCDesign#AsynchronousRPC">Asynchronous RPC</a></li>
<li><a href="http://redmine.msgpack.org/projects/msgpack/wiki/RPCDesign#ParallelPipelining">Parallel Pipelining</a></li>
<li><a href="http://redmine.msgpack.org/projects/msgpack/wiki/RPCDesign#IDL">Thrift IDL</a></li>
<li><a href="http://redmine.msgpack.org/projects/msgpack/wiki/RPCDesign#DynamicTyping">Dynamic Typing</a></li>
<li><a href="http://redmine.msgpack.org/projects/msgpack/wiki/RPCDesign#ConnectionPooling">Connection Pooling</a></li>
<li><a href="http://redmine.msgpack.org/projects/msgpack/wiki/RPCDesign#DelayedReturn">Delayed Return</a></li>
<li><a href="http://redmine.msgpack.org/projects/msgpack/wiki/RPCDesign#EventDrivenIO">Scalable event-driven IO</a></li>
</ul>
<p>Twitter hash tag is <strong>#msgpack</strong>. <a href="http://twitter.com/?status=New%20website%20of%20MessagePack%20Project%20describes%20next-generation%20RPC.%20%23msgpack%20http%3A%2F%2Fmsgpack%2Eorg%2F">Please tweet me</a>.<br />
There are also <a href="http://redmine.msgpack.org/projects/msgpack/wiki/MailingLists">mailing lists</a> at google groups.</p>
<p>Detailed information is available at <a href="http://redmine.msgpack.org/projects/msgpack/wiki">MessagePack Wiki</a>.<br />
enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msgpack.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msgpack.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/msgpack.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/msgpack.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/msgpack.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/msgpack.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/msgpack.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/msgpack.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/msgpack.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/msgpack.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/msgpack.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/msgpack.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/msgpack.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/msgpack.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=msgpack.wordpress.com&amp;blog=13465985&amp;post=100&amp;subd=msgpack&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://msgpack.wordpress.com/2010/06/22/new-website-of-messagepack-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aba3c1870b6cea67493617e5a343b586?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">frsyuki</media:title>
		</media:content>

		<media:content url="http://msgpack.files.wordpress.com/2010/06/website.png" medium="image">
			<media:title type="html">The MessagePack Project</media:title>
		</media:content>
	</item>
		<item>
		<title>Architecture of MessagePack</title>
		<link>http://msgpack.wordpress.com/2010/06/03/architecture-of-messagepack/</link>
		<comments>http://msgpack.wordpress.com/2010/06/03/architecture-of-messagepack/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 23:54:38 +0000</pubDate>
		<dc:creator>frsyuki</dc:creator>
				<category><![CDATA[MessagePack]]></category>
		<category><![CDATA[MessagePack-RPC]]></category>

		<guid isPermaLink="false">http://msgpack.wordpress.com/?p=95</guid>
		<description><![CDATA[<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=msgpack.wordpress.com&amp;blog=13465985&amp;post=95&amp;subd=msgpack&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<iframe src='http://www.slideshare.net/slideshow/embed_code/4405131' width='640' height='525'></iframe>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msgpack.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msgpack.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/msgpack.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/msgpack.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/msgpack.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/msgpack.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/msgpack.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/msgpack.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/msgpack.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/msgpack.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/msgpack.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/msgpack.wordpress.com/95/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/msgpack.wordpress.com/95/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/msgpack.wordpress.com/95/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=msgpack.wordpress.com&amp;blog=13465985&amp;post=95&amp;subd=msgpack&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://msgpack.wordpress.com/2010/06/03/architecture-of-messagepack/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aba3c1870b6cea67493617e5a343b586?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">frsyuki</media:title>
		</media:content>
	</item>
		<item>
		<title>MessagePack-RPC for Java 0.3.0 is released!</title>
		<link>http://msgpack.wordpress.com/2010/05/23/messagepack-rpc-for-java-0-3-0-is-released/</link>
		<comments>http://msgpack.wordpress.com/2010/05/23/messagepack-rpc-for-java-0-3-0-is-released/#comments</comments>
		<pubDate>Sun, 23 May 2010 15:25:54 +0000</pubDate>
		<dc:creator>kazukiohta</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[MessagePack-RPC]]></category>

		<guid isPermaLink="false">http://msgpack.wordpress.com/?p=81</guid>
		<description><![CDATA[Today, I just released the MessagePack-RPC for Java version 0.3.0! MessagePack-RPC github repository The main change is, supporting the UDP protocol. The following is the example codes. UDPClient UDPServer Replacing &#8220;UDP&#8221; with &#8220;TCP&#8221; will work for the TCP Client/Server. Thanks &#8230; <a href="http://msgpack.wordpress.com/2010/05/23/messagepack-rpc-for-java-0-3-0-is-released/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=msgpack.wordpress.com&amp;blog=13465985&amp;post=81&amp;subd=msgpack&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today, I just released the MessagePack-RPC for Java version 0.3.0!</p>
<ul>
<li><a href="http://github.com/msgpack/msgpack-rpc">MessagePack-RPC github repository</a></li>
</ul>
<p>The main change is, supporting the UDP protocol. The following is the example codes.</p>
<h2>UDPClient</h2>
<p><pre class="brush: java;">
        EventLoop loop = new EventLoop();
        try {
            Client c = new UDPClient(&quot;localhost&quot;, 19850, loop);
            try {
                Object o = c.call(&quot;intFunc1&quot;, 1);
                int val = ((Number)c).intValue();
            } finally {
                c.close();
            }
        } finally {
            loop.shutdown();
        }
</pre></p>
<h2>UDPServer</h2>
<p><pre class="brush: java;">
class ServerTest {
    public int intFunc1(int a) { return a; }

    public static void main(String[] args) {
        Server s = new UDPServer(&quot;0.0.0.0&quot;, 19850, this);
        s.serve();
    }
}
</pre></p>
<p>Replacing &#8220;UDP&#8221; with &#8220;TCP&#8221; will work for the TCP Client/Server. Thanks to <a href="http://www.jboss.org/netty">JBoss netty</a>, it was really easy to support two different transports.</p>
<p>The next tasks are running the more serious stress test for the stability. And also, <a href="http://github.com/msgpack/msgpack-rpc/tree/master/idl/">thrift-compatible IDL support</a> is under development!</p>
<p>Looking forward to integrate into the real applications:-)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msgpack.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msgpack.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/msgpack.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/msgpack.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/msgpack.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/msgpack.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/msgpack.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/msgpack.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/msgpack.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/msgpack.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/msgpack.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/msgpack.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/msgpack.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/msgpack.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=msgpack.wordpress.com&amp;blog=13465985&amp;post=81&amp;subd=msgpack&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://msgpack.wordpress.com/2010/05/23/messagepack-rpc-for-java-0-3-0-is-released/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c39d0bfab7937dfe8aa3005b8a9397f6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kazukiohta</media:title>
		</media:content>
	</item>
		<item>
		<title>Streaming Serialization/Deserialization with MessagePack</title>
		<link>http://msgpack.wordpress.com/2010/05/18/streaming-serializationdeserialization-with-messagepack/</link>
		<comments>http://msgpack.wordpress.com/2010/05/18/streaming-serializationdeserialization-with-messagepack/#comments</comments>
		<pubDate>Tue, 18 May 2010 08:28:57 +0000</pubDate>
		<dc:creator>frsyuki</dc:creator>
				<category><![CDATA[MessagePack]]></category>
		<category><![CDATA[MessagePack-RPC]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://msgpack.wordpress.com/?p=69</guid>
		<description><![CDATA[Streaming feature of MessagePack Streaming serialization/deserialization is one of the key features of MessagePack. It enables you to store and load multiple objects to/from a stream (like files or network connections). It is easy to use and fast. I&#8217;ll introduce &#8230; <a href="http://msgpack.wordpress.com/2010/05/18/streaming-serializationdeserialization-with-messagepack/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=msgpack.wordpress.com&amp;blog=13465985&amp;post=69&amp;subd=msgpack&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1>Streaming feature of MessagePack</h1>
<p>Streaming serialization/deserialization is one of the key features of <a href="http://msgpack.sourceforge.net/">MessagePack</a>.<br />
It enables you to store and load multiple objects to/from a stream (like files or network connections). It is easy to use and fast.</p>
<p>I&#8217;ll introduce the streaming features with Ruby codes.</p>
<h2>Storing objects to a file</h2>
<p>Now I want to store structured objects to a log file.<br />
I can serialize objects with MessagePack and store them to a file. And then, I can take from the file objects out one after another.</p>
<p>Here is the code:<br />
<pre class="brush: ruby;">
require 'msgpack'  # gem install msgpack

# Open the log file for write.
File.open(&quot;log.mpac&quot;, &quot;w&quot;) do |f|
  # Serialize and store 3 objects.
  {'name'=&gt;'msgpack'}.to_msgpack(f)
  {'name'=&gt;'kumofs' }.to_msgpack(f)
  {'name'=&gt;'frsyuki'}.to_msgpack(f)
end

# Open the log file for read.
File.open(&quot;log.mpac&quot;) do |f|
  # Create a instance of &quot;MessagePack::Unpacker&quot;
  pac = MessagePack::Unpacker.new(f)

  begin

    # Load the stored objects with &quot;each&quot; method.
    pac.each do |obj|
      # Do something with the deserialized object.
      on_message(obj)
    end

  rescue EOFError
    # EOF reached.
  end
end
</pre></p>
<h2>Compression</h2>
<p>Next, the size of the log file becams a big problem. Compression is very effective to reduce the size. <strong>MessagePack::Unpacker#feed</strong> method is useful to deal with special stream like Zlib::Inflate.</p>
<p>Here is the code:<br />
<pre class="brush: ruby;">
require 'msgpack'  # gem install msgpack
require 'zlib'  # zlib is a standard library

# Open the log file for write.
File.open(&quot;log.zmpac&quot;, &quot;w&quot;) do |f|
  # Serialize, compress and store the objects.
  zd = Zlib::Deflate.new
  zd &lt;&lt; {'name'=&gt;'msgpack'}.to_msgpack &amp;&amp; f.write(zd.flush)
  zd &lt;&lt; {'name'=&gt;'kumofs' }.to_msgpack &amp;&amp; f.write(zd.flush)
  zd &lt;&lt; {'name'=&gt;'frsyuki'}.to_msgpack &amp;&amp; f.write(zd.flush)
  zd.close
end

# Open the log file for read.
File.open(&quot;log.zmpac&quot;) do |f|
  # Create instance of &quot;Zlib::Inflate&quot; and &quot;MesasgePack::Unpacker&quot;
  zi = Zlib::Inflate.new
  pac = MessagePack::Unpacker.new

  begin

    buffer = ''
    while f.sysread(1024, buffer)
      # Use &quot;feed&quot; method to append the inflated buffer.
      pac.feed zi.inflate(buffer)

      # Then, call each method.
      pac.each do |obj|
        # Do something with the deserialized object.
        on_message(obj)
      end
    end

  rescue EOFError
    # eof reached.
  end

  zi.close
end
</pre></p>
<h2>Streaming on network connection</h2>
<p>MessagePack::Unpacker#feed method is also useful to receive objects from other hosts via network connection.<br />
In the following code, I use an event-processing library <a href="http://rubyeventmachine.com/">EventMacnie</a> with MessagePack.<br />
<pre class="brush: ruby;">
require 'msgpack'      # gem install msgpack
require 'eventmachine' # gem install eventmachine
require 'json'

# This server program receives objects serialized with MessagePack and convert them to JSON.
class MessagePackToJsonServer &lt; EventMachine::Connection
  def initialize
    # Create the streaming deserializer of MessagePack.
    @pac = MessagePack::Unpacker.new
  end

  def receive_data(data)
    # Feed the recived data to the deserializer.
    @pac.feed data

    # Streaming deserialize.
    @pac.each do |obj|
      message_received(obj)
    end
  end

  def message_received(obj)
    # Do something with the deserialized object.
    send_data obj.to_json
  end
end

# Start the server.
EventMachine::run do
  host = '0.0.0.0'
  port = 8080
  EventMachine::start_server host, port, MessagePackToJsonServer
end
</pre></p>
<p>The streaming feature is available on other languages. It is very important feature to implement <a href="http://msgpack.wordpress.com/2010/05/04/introduction-to-messagepack-rpc/">MessagePack-RPC</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msgpack.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msgpack.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/msgpack.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/msgpack.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/msgpack.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/msgpack.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/msgpack.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/msgpack.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/msgpack.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/msgpack.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/msgpack.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/msgpack.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/msgpack.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/msgpack.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=msgpack.wordpress.com&amp;blog=13465985&amp;post=69&amp;subd=msgpack&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://msgpack.wordpress.com/2010/05/18/streaming-serializationdeserialization-with-messagepack/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aba3c1870b6cea67493617e5a343b586?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">frsyuki</media:title>
		</media:content>
	</item>
		<item>
		<title>MessagePack-RPC for C++</title>
		<link>http://msgpack.wordpress.com/2010/05/08/messagepack-rpc-for-cp/</link>
		<comments>http://msgpack.wordpress.com/2010/05/08/messagepack-rpc-for-cp/#comments</comments>
		<pubDate>Sat, 08 May 2010 07:31:34 +0000</pubDate>
		<dc:creator>frsyuki</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[MessagePack-RPC]]></category>

		<guid isPermaLink="false">http://msgpack.wordpress.com/?p=41</guid>
		<description><![CDATA[What&#8217;s MessagePack-RPC? MessagePack-RPC is a inter-process messaging system that is similar to Facebook’s thrift, Apache avro or Google&#8217;s Protocol Buffers. It uses MessagePack format for object serialization and passes serialized object across network connection. MessagePack is cross-language serialization format and &#8230; <a href="http://msgpack.wordpress.com/2010/05/08/messagepack-rpc-for-cp/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=msgpack.wordpress.com&amp;blog=13465985&amp;post=41&amp;subd=msgpack&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1>What&#8217;s MessagePack-RPC?</h1>
<p><a href="http://github.com/msgpack/msgpack-rpc">MessagePack-RPC</a> is a inter-process messaging system that is similar to Facebook’s thrift, Apache avro or Google&#8217;s Protocol Buffers. It uses MessagePack format for object serialization and passes serialized object across network connection.</p>
<p>MessagePack is cross-language serialization format and MessagePack-RPC enables you to exchange messages between programs implemented in heterogeneous languages.</p>
<p>Today, I want to introduce the C++ implementation of MessagePack-RPC. Its most important characteristics are (1) High-performance, (2) concept of &#8220;Future&#8221; and (3) Thread-safe connection pool.</p>
<h2>(1) High-Performance</h2>
<p>One of the most important factors of the performance is parallel processing because even cheap machines have multiple cores today. MessagePack-RPC for C++ has an intelligent parallel processing mechanism that other libraries (Thrift, Avro, Protocol Buffers, etc.) don&#8217;t have.</p>
<p>It processes all messages in parallel even if the messages are reached on single connection.</p>
<p><img src="http://msgpack.files.wordpress.com/2010/05/mprpc-cpp-e1.png?w=640" alt="" title="mprpc-cpp-1"   class="alignnone size-full wp-image-57" /></p>
<p>This characteristic is particularly effective in the cluster application that servers communicate mutually.</p>
<p><img src="http://msgpack.files.wordpress.com/2010/05/mprpc-cpp-e2.png?w=640" alt="" title="mprpc-cpp-2"   class="alignnone size-full wp-image-58" /></p>
<p>The following graph shows you the effectiveness of the parallel processing.</p>
<p><img src="http://msgpack.files.wordpress.com/2010/05/mprpc-cpp.png?w=448&#038;h=356" alt="" title="MessagePack-RPC v.s Thrift v.s SunRPC" width="448" height="356" class="aligncenter size-full wp-image-23" /></p>
<h2>(2) Future and Asynchronous call</h2>
<p>MessagePack-RPC for C++ provides flexible asynchronous processing model supported by concept of Future. Future describes an object that acts as a proxy for a result that is initially not known (<a href="http://en.wikipedia.org/wiki/Futures_and_promises">Wikipedia</a>).</p>
<p>The following code shows the example.</p>
<p><pre class="brush: cpp;">
#include &lt;msgpack/rpc/client.h&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;

using namespace std;
using namespace msgpack::rpc;

int main(void)
{
    // create an client instance
    client c(&quot;127.0.0.1&quot;, 9090);
    std::string text = ...;

    // send some heavy request and receives its future result.
    future f1 = c.call(&quot;analyze&quot;, text);
    // the server starts to process this request.

    // send other requests.
    future f2 = c.call(&quot;count&quot;, text);
    // the server starts to process this request on another CPU core.

    // receive actual result of request that will be finished first.
    int result2 = f2.get&lt;int&gt;();

    // you can do some calcuation while server processing first heavy request ...

    // then receive result of the heavy request.
    string result1 = f1.get&lt;string&gt;();

    std::cout &lt;&lt; result1 &lt;&lt; std::endl;
    std::cout &lt;&lt; result2 &lt;&lt; std::endl;
}
</pre></p>
<h2>(3) Thread-safe connection pool</h2>
<p>MessagePack-RPC for C++ has connection pooling feature. Its peculiar advantage is thread safety. You can share one pooled connection with multiple threads.</p>
<p>The following multithreaded client program is valid and it establishes only one connection.</p>
<p><pre class="brush: cpp;">
#include &lt;msgpack/rpc/client.h&gt;
#include &lt;msgpack/rpc/session_pool.h&gt;
#include &lt;mp/pthread.h&gt;

void thread_1(session_pool* sp) {
    // do RPC on pooled connection
    msgpack::rpc::session s = sp-&gt;get_session(&quot;127.0.0.1&quot;, 9090);
    int result = s.call(&quot;add&quot;, 1, 2).get&lt;int&gt;();
}

void thread_2(msgpack::rpc::session_pool* sp) {
    // do RPC on pooled connection
    msgpack::rpc::session s = sp-&gt;get_session(&quot;127.0.0.1&quot;, 9090);
    int result = s.call(&quot;add&quot;, 2, 3).get&lt;int&gt;();
}

int main(void) {
    // create thread-safe connection pool
    msgpack::rpc::session_pool sp;
    sp.start(4);  // run 4 worker threads

    // run 2 client threads for example
    mp::pthread_thread t1;
    mp::pthread_thread t2;
    t1.run( mp::bind(thread_1, &amp;sp) );
    t2.run( mp::bind(thread_2, &amp;sp) );

    t1.join();
    t2.join();
    sp.end();
}
</pre></p>
<h2>Starting with MessagePack-RPC</h2>
<p>The <a href="http://rubygems.org/gems/msgpack-rpc">Ruby implementation</a> is good for first. It&#8217;s very easy to use and suitable for prototyping, while it is full-featured that has concept of Future and connection pool.</p>
<p>There are simple implementation of distributed key-value storage on my <a href="http://github.com/frsyuki/simple-kvs">simple-kvs repository at github</a>. Though it has replication and load-balancing features,  it is implemented in only 54 lines.</p>
<h2>Question</h2>
<p>If you have any question, please contact with <a href="http://twitter.com/frsyuki_ha">@frsyuki_ha</a> or <a href="http://twitter.com/kzk_mover">@kzk_mover</a> with #msgpack hash tag, or #msgpack on freenode.net, or project mailing list. See also the <a href="http://msgpack.sourceforge.net/">project web site</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msgpack.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msgpack.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/msgpack.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/msgpack.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/msgpack.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/msgpack.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/msgpack.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/msgpack.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/msgpack.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/msgpack.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/msgpack.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/msgpack.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/msgpack.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/msgpack.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=msgpack.wordpress.com&amp;blog=13465985&amp;post=41&amp;subd=msgpack&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://msgpack.wordpress.com/2010/05/08/messagepack-rpc-for-cp/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/aba3c1870b6cea67493617e5a343b586?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">frsyuki</media:title>
		</media:content>

		<media:content url="http://msgpack.files.wordpress.com/2010/05/mprpc-cpp-e1.png" medium="image">
			<media:title type="html">mprpc-cpp-1</media:title>
		</media:content>

		<media:content url="http://msgpack.files.wordpress.com/2010/05/mprpc-cpp-e2.png" medium="image">
			<media:title type="html">mprpc-cpp-2</media:title>
		</media:content>

		<media:content url="http://msgpack.files.wordpress.com/2010/05/mprpc-cpp.png?w=448&#38;h=356" medium="image">
			<media:title type="html">MessagePack-RPC v.s Thrift v.s SunRPC</media:title>
		</media:content>
	</item>
		<item>
		<title>Introduction to MessagePack-RPC</title>
		<link>http://msgpack.wordpress.com/2010/05/04/introduction-to-messagepack-rpc/</link>
		<comments>http://msgpack.wordpress.com/2010/05/04/introduction-to-messagepack-rpc/#comments</comments>
		<pubDate>Tue, 04 May 2010 06:22:49 +0000</pubDate>
		<dc:creator>kazukiohta</dc:creator>
				<category><![CDATA[MessagePack-RPC]]></category>

		<guid isPermaLink="false">http://msgpack.wordpress.com/?p=3</guid>
		<description><![CDATA[The official MessagePack blog is here! Today I want to introduce recent progress at the MessagePack project. It&#8217;s a extremely efficient object serialization library like JSON, but very fast and small. Why MessagePack? There&#8217;re some projects in the same area. &#8230; <a href="http://msgpack.wordpress.com/2010/05/04/introduction-to-messagepack-rpc/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=msgpack.wordpress.com&amp;blog=13465985&amp;post=3&amp;subd=msgpack&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The official MessagePack blog is here! Today I want to introduce recent progress at the <a href="http://msgpack.sourceforge.net/">MessagePack project</a>. It&#8217;s a extremely efficient object serialization library like JSON, but very fast and small.</p>
<h1>Why MessagePack?</h1>
<p>There&#8217;re some projects in the same area. Google&#8217;s <a href="http://code.google.com/p/protobuf/">protocol buffer</a>, Facebook&#8217;s <a href="http://incubator.apache.org/thrift/">thrift</a>, <a href="http://hadoop.apache.org/avro/">Apache avro</a>, etc. Why another one?</p>
<p>Two important points. For speed, and tight integration with each language.</p>
<h2>(1) Speed</h2>
<p>For speed, MessagePack has zero copy serialization + streaming deserialization. Please look at <a href="http://msgpack.sourceforge.net/doc:introduction">Introduction to MessagePack</a>. We also compared with other libraries in the view point of speed and size. Please look at <a href="http://msgpack.sourceforge.net/benchmark">here</a>.</p>
<h2>(2) Tight Integration with the language</h2>
<p>Actually &#8220;MessagePack&#8221; itself is the name of the format, like JSON. And many libraries handling it were written by many languages. Currently, C, C++, Java, Ruby, Python, Perl, PHP, Haskell, Lua, D implementations are available.</p>
<p>Some implementations provide the easy packaging. For example, Ruby version is provided as Ruby gem.</p>
<p><pre class="brush: bash;">
$ gem install msgpack
</pre></p>
<p>Same for other languages (Maven2 for Java, PyPI for Python, CPAN for Perl, Hackage for Haskell).</p>
<p>The library API is basically the same across languages but provides the convenient way for the language. Here&#8217;s the  deselialization with for loop in Python version. Really cool!</p>
<p><pre class="brush: python;">
&gt;&gt;&gt; unpacker = msgpack.Unpacker()
&gt;&gt;&gt; buf = b'¥x93¥x01¥x02¥x03' * 5
&gt;&gt;&gt; len(buf)
20
&gt;&gt;&gt; unpacker.feed(buf[:9])
&gt;&gt;&gt; for o in unpacker:
...     print o
...
[1, 2, 3]
[1, 2, 3]
&gt;&gt;&gt; unpacker.feed(buf[9:])
&gt;&gt;&gt; for o in unpacker:
...     print o
...
[1, 2, 3]
[1, 2, 3]
[1, 2, 3]
</pre></p>
<h1>MessagePack-RPC</h1>
<p>The next move of our project is developing MessagePack-RPC, RPC library using MessagePack for object serialization. It&#8217;s fast, and achieves cross language object exchange.</p>
<p>The repository is available here.</p>
<ul>
<li><a href="http://github.com/msgpack/msgpack-rpc">github:msgpack-rpc</a></li>
</ul>
<p>Currently, only C++/Java/Ruby implementations are available. The nice thing is that, each implementation depends on nice event loop libraries for the languages. Ruby version uses <a href="http://rev.rubyforge.org/">Rev</a>, C++ version uses <a href="http://github.com/frsyuki/mpio">mpio</a>, Java version uses <a href="http://www.jboss.org/netty">JBoss netty</a>.</p>
<p>And also, please remember MessagePack supports &#8220;Streaming Deserializer&#8221;. When you got the data from the network, the server/client are able to deserialize in a streaming way.</p>
<p>By using them, MessagePack-RPC provides high-performance RPC. And also provide asynchronous call at the client-side.</p>
<p>Let&#8217;s look at the example. Most users use script language at the client-side, and C++/Java program at the server side.</p>
<h2>Ruby client</h2>
<p>It&#8217;s provided as ruby gem. Please install with &#8220;gem install msgpack-rpc&#8221;. Following is the example of calling &#8220;hello&#8221; function with some arguments.</p>
<p><pre class="brush: ruby;">
require 'rubygems'
gem 'msgpack'
gem 'msgpack-rpc'
require 'msgpack'
require 'msgpack/rpc'

begin
  cli = MessagePack::RPC::Client.new(&quot;127.0.0.1&quot;, 1985)
  cli.timeout = 5
  v = cli.call(:hello0)
  v = cli.call(:hello1, 1)
  v = cli.call(:hello2, 1, 2)
  cli.close
rescue MessagePack::RPC::TimeoutError
  p $!
end
</pre></p>
<p>It also supports asynchronous call. It&#8217;s really useful when you call multiple services at the same time.<br />
<pre class="brush: ruby;">
client = new Client(...);
future = client.send(...) # asynchronous call returns
future.join() # waiting the completion
result = future.result();

futures = []
futures &lt;&lt; client.send(...)
futures &lt;&lt; client.send(...)
futures.each { |f| f.join() }
</pre></p>
<p>Of course, you can use custom data structure. Example code is <a href="http://gist.github.com/380979">here</a>.</p>
<h2>Java server</h2>
<p>The following code implements high-performance Java server. The Java version uses <a href="http://www.jboss.org/netty/">netty, Java NIO Socket Framework</a> by JBoss community. netty provides multithread + event model. It&#8217;s really FAST, and extensible.</p>
<p><pre class="brush: java;">
package org.msgpack.rpc;

import java.io.IOException;

import org.msgpack.rpc.client.Client;
import org.msgpack.rpc.server.*;

public class App 
{
    public int hello0() {
    	System.out.println(&quot;hello0&quot;);
        return 0;
    }
    public int hello1(int a) {
    	System.out.println(&quot;hello1&quot;);
        return 1;
    }
    public int hello2(int a, int b) {
    	System.out.println(&quot;hello2&quot;);
        return 2;
    }
    
    public static void main( String[] args )
    {
        Server s = new TCPServer();
        try {
        	System.out.println(&quot;listen!&quot;);
        	s.listen(1985, new App());
        } catch (IOException e) {
        	e.printStackTrace();
        }
    }
}
</pre></p>
<h2>Difference between MessagePack-RPC and Thrift</h2>
<p>Way faster. The following graph shows the performance difference between C++ MessagePack-RPC v.s C++ Thrift v.s. Sun-RPC.</p>
<p><a href="http://msgpack.files.wordpress.com/2010/05/mprpc-cpp.png"><img src="http://msgpack.files.wordpress.com/2010/05/mprpc-cpp.png?w=640" alt="" title="MessagePack-RPC v.s Thrift v.s SunRPC"   class="aligncenter size-full wp-image-23" /></a></p>
<p>Tight integration with each language.</p>
<p>Release management per language bindings, not by whole project. Formerly, I submitted to the bug fix patch to the PHP binding. But Thrift release cycle is decided by all language bindings. Then, they couldn&#8217;t release as soon as possible.</p>
<p>We&#8217;re developing actively. Many languages don&#8217;t support RPC yet, but ongoing.</p>
<p>And also note that, we&#8217;re now developing Thrift compatible IDL (Interface Definition Language) compiler for MessagePack. If you use the Thrift, the move to MessagePack-RPC will be really easy <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h1>Question</h1>
<p>If you have any question, please contact with <a href="http://twitter.com/frsyuki">@frsyuki</a> or <a href="http://twitter.com/kzk_mover">@kzk_mover</a> with #msgpack hash tag, or #msgpack on freenode.net, or project mailing list.</p>
<p style="text-align:left;" class="getsocial"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/08/gs1004.png?w=640" alt="" /><a title="Add to Facebook" href="http://www.facebook.com/sharer.php?u=http://msgpack.wordpress.com/2010/05/04/introduction-to-messagepack-rpc/" rel="nofollow" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/08/gs1014.png?w=640" alt="Add to Facebook" /></a><a title="Add to Digg" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fmsgpack.wordpress.com%2F2010%2F05%2F04%2Fintroduction-to-messagepack-rpc%2F&amp;title=Introduction%20to%20MessagePack-RPC" rel="nofollow" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/08/gs1024.png?w=640" alt="Add to Digg" /></a><a title="Add to Del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fmsgpack.wordpress.com%2F2010%2F05%2F04%2Fintroduction-to-messagepack-rpc%2F&amp;title=Introduction%20to%20MessagePack-RPC" rel="nofollow" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/08/gs1034.png?w=640" alt="Add to Del.icio.us" /></a><a title="Add to Stumbleupon" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmsgpack.wordpress.com%2F2010%2F05%2F04%2Fintroduction-to-messagepack-rpc%2F&amp;title=Introduction%20to%20MessagePack-RPC" rel="nofollow" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/08/gs1044.png?w=640" alt="Add to Stumbleupon" /></a><a title="Add to Reddit" href="http://reddit.com/submit?url=http%3A%2F%2Fmsgpack.wordpress.com%2F2010%2F05%2F04%2Fintroduction-to-messagepack-rpc%2F&amp;title=Introduction%20to%20MessagePack-RPC" rel="nofollow" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/08/gs1054.png?w=640" alt="Add to Reddit" /></a><a title="Add to Blinklist" href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Description=&amp;Url=http%3A%2F%2Fmsgpack.wordpress.com%2F2010%2F05%2F04%2Fintroduction-to-messagepack-rpc%2F&amp;Title=Introduction%20to%20MessagePack-RPC" rel="nofollow" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/08/gs1064.png?w=640" alt="Add to Blinklist" /></a><a title="Add to Twitter" href="http://twitter.com/home/?status=Introduction%20to%20MessagePack-RPC+%40+http%3A%2F%2Fmsgpack.wordpress.com%2F2010%2F05%2F04%2Fintroduction-to-messagepack-rpc%2F" rel="nofollow" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/08/gs1074.png?w=640" alt="Add to Twitter" /></a><a title="Add to Technorati" href="http://www.technorati.com/faves?add=http://msgpack.wordpress.com/2010/05/04/introduction-to-messagepack-rpc/" rel="nofollow" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/08/gs1084.png?w=640" alt="Add to Technorati" /></a><a title="Add to Yahoo Buzz" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fmsgpack.wordpress.com%2F2010%2F05%2F04%2Fintroduction-to-messagepack-rpc%2F&amp;headline=Introduction%20to%20MessagePack-RPC" rel="nofollow" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/08/gs1094.png?w=640" alt="Add to Yahoo Buzz" /></a><a title="Add to Newsvine" href="http://www.newsvine.com/_wine/save?u=http%3A%2F%2Fmsgpack.wordpress.com%2F2010%2F05%2F04%2Fintroduction-to-messagepack-rpc%2F&amp;h=Introduction%20to%20MessagePack-RPC" rel="nofollow" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/08/gs1104.png?w=640" alt="Add to Newsvine" /></a><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2009/08/gs1114.png?w=640" alt="" /> <a title="Like This!" href="http://getsociallive.com/gslike.php?likeurl=http%3A%2F%2Fmsgpack.wordpress.com%2F2010%2F05%2F04%2Fintroduction-to-messagepack-rpc%2F&amp;liketitle=Introduction%20to%20MessagePack-RPC" rel="nofollow" target="_blank"><img style="border:0;margin:0;padding:0;" src="http://getsocialserver.files.wordpress.com/2010/04/gslk1.png?w=49&#038;h=23" width="49" height="23" alt="Like This!" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/msgpack.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/msgpack.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/msgpack.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/msgpack.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/msgpack.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/msgpack.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/msgpack.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/msgpack.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/msgpack.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/msgpack.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/msgpack.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/msgpack.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/msgpack.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/msgpack.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=msgpack.wordpress.com&amp;blog=13465985&amp;post=3&amp;subd=msgpack&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://msgpack.wordpress.com/2010/05/04/introduction-to-messagepack-rpc/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c39d0bfab7937dfe8aa3005b8a9397f6?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kazukiohta</media:title>
		</media:content>

		<media:content url="http://msgpack.files.wordpress.com/2010/05/mprpc-cpp.png" medium="image">
			<media:title type="html">MessagePack-RPC v.s Thrift v.s SunRPC</media:title>
		</media:content>

		<media:content url="http://getsocialserver.files.wordpress.com/2009/08/gs1004.png" medium="image" />

		<media:content url="http://getsocialserver.files.wordpress.com/2009/08/gs1014.png" medium="image">
			<media:title type="html">Add to Facebook</media:title>
		</media:content>

		<media:content url="http://getsocialserver.files.wordpress.com/2009/08/gs1024.png" medium="image">
			<media:title type="html">Add to Digg</media:title>
		</media:content>

		<media:content url="http://getsocialserver.files.wordpress.com/2009/08/gs1034.png" medium="image">
			<media:title type="html">Add to Del.icio.us</media:title>
		</media:content>

		<media:content url="http://getsocialserver.files.wordpress.com/2009/08/gs1044.png" medium="image">
			<media:title type="html">Add to Stumbleupon</media:title>
		</media:content>

		<media:content url="http://getsocialserver.files.wordpress.com/2009/08/gs1054.png" medium="image">
			<media:title type="html">Add to Reddit</media:title>
		</media:content>

		<media:content url="http://getsocialserver.files.wordpress.com/2009/08/gs1064.png" medium="image">
			<media:title type="html">Add to Blinklist</media:title>
		</media:content>

		<media:content url="http://getsocialserver.files.wordpress.com/2009/08/gs1074.png" medium="image">
			<media:title type="html">Add to Twitter</media:title>
		</media:content>

		<media:content url="http://getsocialserver.files.wordpress.com/2009/08/gs1084.png" medium="image">
			<media:title type="html">Add to Technorati</media:title>
		</media:content>

		<media:content url="http://getsocialserver.files.wordpress.com/2009/08/gs1094.png" medium="image">
			<media:title type="html">Add to Yahoo Buzz</media:title>
		</media:content>

		<media:content url="http://getsocialserver.files.wordpress.com/2009/08/gs1104.png" medium="image">
			<media:title type="html">Add to Newsvine</media:title>
		</media:content>

		<media:content url="http://getsocialserver.files.wordpress.com/2009/08/gs1114.png" medium="image" />

		<media:content url="http://getsocialserver.files.wordpress.com/2010/04/gslk1.png" medium="image">
			<media:title type="html">Like This!</media:title>
		</media:content>
	</item>
	</channel>
</rss>
