<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.nginx.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;feed=atom&amp;action=history</id>
		<title>MemCache-Preload - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;action=history"/>
		<updated>2013-05-19T19:50:39Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.0</generator>

	<entry>
		<id>http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=4058&amp;oldid=prev</id>
		<title>TitusX: /* Mount, Preload, Unmount */</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=4058&amp;oldid=prev"/>
				<updated>2013-04-27T09:47:55Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Mount, Preload, Unmount&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:47, 27 April 2013&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 56:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 56:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Mount, Preload, Unmount ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;== Mount, Preload, Unmount ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;geshi lang=bash&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;geshi lang=bash&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;memfis&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;d&lt;/del&gt;/memfis.py /mnt/memfis&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;./memfis.py /mnt/memfis&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;cp -a &amp;lt;source&amp;gt;/* /mnt/memfis&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;cp -a &amp;lt;source&amp;gt;/* /mnt/memfis&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;sudo unmount /mnt/memfis&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;sudo unmount /mnt/memfis&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>TitusX</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=4057&amp;oldid=prev</id>
		<title>TitusX: /* Ingredients */</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=4057&amp;oldid=prev"/>
				<updated>2013-04-27T09:46:31Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Ingredients&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:46, 27 April 2013&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''This setups is only a proof of concept = means: experimental, but works for me.'''&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;'''This setups is only a proof of concept = means: experimental, but works for me.'''&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;# serve the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;equests&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;# serve the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;requests&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''[http://wiki.nginx.org/HttpMemcachedModule nginx]''': webserver with memcache api&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''[http://wiki.nginx.org/HttpMemcachedModule nginx]''': webserver with memcache api&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''[http://www.couchbase.com/downloads couchbase]''': persistent memcache server&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''[http://www.couchbase.com/downloads couchbase]''': persistent memcache server&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>TitusX</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1783&amp;oldid=prev</id>
		<title>TitusX: /* MemFiS Filesystem */</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1783&amp;oldid=prev"/>
				<updated>2012-04-18T21:42:27Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;MemFiS Filesystem&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:42, 18 April 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 266:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 266:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; # ONLY FOR TESTING - REMOVE FOR PRODUCTION&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; # ONLY FOR TESTING - REMOVE FOR PRODUCTION&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; # deletes the whole database at startup&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; # deletes the whole database at startup&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; if self.debugp:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;#&lt;/ins&gt;if self.debugp:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;/del&gt;self.mcache.flush_all()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; #&amp;#160; &amp;#160; &lt;/ins&gt;self.mcache.flush_all()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; # start a new file system if nothin exitst&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; # start a new file system if nothin exitst&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Cntr = self.mcache.get(self.countr)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Cntr = self.mcache.get(self.countr)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 282:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 282:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; # ONLY FOR TESTING - REMOVE FOR PRODUCTION&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; # ONLY FOR TESTING - REMOVE FOR PRODUCTION&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; # delete the whole database at shutdown&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; # delete the whole database at shutdown&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; if self.debugp:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;#&lt;/ins&gt;if self.debugp:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;/del&gt;self.mcache.flush_all()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; #&amp;#160; &amp;#160; &lt;/ins&gt;self.mcache.flush_all()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; # disconnect from the server&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; # disconnect from the server&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.mcache.disconnect_all()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.mcache.disconnect_all()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 327:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 327:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; self.mcache.set(self.p2a(path), self.enc(Attr))&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; self.mcache.set(self.p2a(path), self.enc(Attr))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; # &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;...&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; # &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;creates an inode with file attributes&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; def create(self, path, mode):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; def create(self, path, mode):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.dbg(&amp;quot;%-9s %s (mode: '%s'=%i)&amp;quot; % (&amp;quot;CREATE:&amp;quot;, path, oct(mode), mode))&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.dbg(&amp;quot;%-9s %s (mode: '%s'=%i)&amp;quot; % (&amp;quot;CREATE:&amp;quot;, path, oct(mode), mode))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 347:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 347:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.mkn(path, S_IFDIR|mode, len(Data))&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.mkn(path, S_IFDIR|mode, len(Data))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.mcache.set(self.p2d(path), Data)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.mcache.set(self.p2d(path), Data)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #def open(self, path, flax):&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #&amp;#160; &amp;#160; self.dbg(&amp;quot;%-9s %s (flags: %i)&amp;quot; % (&amp;quot;OPEN:&amp;quot;, path, flax))&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #&amp;#160; &amp;#160; mask = O_RDONLY | O_WRONLY | O_RDWR&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #&amp;#160; &amp;#160; if flax &amp;amp; mask != O_RDONLY:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #&amp;#160; &amp;#160; &amp;#160; &amp;#160; # file lock&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #&amp;#160; &amp;#160; &amp;#160; &amp;#160; pass&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #&amp;#160; &amp;#160; return - ENOSYS # nicht implementiert&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; def read(self, path, size, oset, fhdl):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; def read(self, path, size, oset, fhdl):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 383:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 375:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.dbg(&amp;quot;%-9s %s&amp;quot; % (&amp;quot;READLINK:&amp;quot;, path))&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.dbg(&amp;quot;%-9s %s&amp;quot; % (&amp;quot;READLINK:&amp;quot;, path))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; return self.mcache.get(self.p2d(path))&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; return self.mcache.get(self.p2d(path))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #def rename(self, path, pnew):&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #&amp;#160; &amp;#160; self.dbg(&amp;quot;%-9s %s (new: %s)&amp;quot; % (&amp;quot;RENAME:&amp;quot;, path, pnew))&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #&amp;#160; &amp;#160; raise FuseOSError(ENOSYS)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; def rmdir(self, path):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; def rmdir(self, path):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.dbg(&amp;quot;%-9s %s&amp;quot; % (&amp;quot;RMDIR:&amp;quot;, path))&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.dbg(&amp;quot;%-9s %s&amp;quot; % (&amp;quot;RMDIR:&amp;quot;, path))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.rmn(path, True)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &amp;#160; &amp;#160; self.rmn(path, True)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #def statfs(self, path):&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #&amp;#160; &amp;#160; self.dbg(&amp;quot;%-9s %s&amp;quot; % (&amp;quot;STATFS:&amp;quot;, path))&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; #&amp;#160; &amp;#160; raise FuseOSError(ENOSYS)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; def symlink(self, path, orig):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; def symlink(self, path, orig):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>TitusX</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1782&amp;oldid=prev</id>
		<title>TitusX: /* Server Setup */</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1782&amp;oldid=prev"/>
				<updated>2012-04-18T21:39:30Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Server Setup&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:39, 18 April 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 39:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 39:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/geshi&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/geshi&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;* to &lt;/del&gt;do: error&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/del&gt;fallback &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;...&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;To &lt;/ins&gt;do:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* full example with &lt;/ins&gt;error &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;and &lt;/ins&gt;fallback&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;* scetch the goal of a complete system with php offloading&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;= Preload Memcache =&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;= Preload Memcache =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>TitusX</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1781&amp;oldid=prev</id>
		<title>TitusX: /* MemFiS Filesystem */</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1781&amp;oldid=prev"/>
				<updated>2012-04-18T21:34:08Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;MemFiS Filesystem&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:34, 18 April 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 64:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 64:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#!/usr/bin/env python&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#!/usr/bin/env python&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;# -*- coding: utf-8 -*-&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;# -*- coding: utf-8 -*-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;quot;&amp;quot;&amp;quot;memcache filesystem&amp;quot;&amp;quot;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;quot;&amp;quot;&amp;quot;memcache filesystem&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, v.20120415&lt;/ins&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;quot;&amp;quot;&amp;quot;(c) 2011-2012, titusx at gmx.de&amp;quot;&amp;quot;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;quot;&amp;quot;&amp;quot;(c) 2011-2012, titusx at gmx.de&amp;quot;&amp;quot;&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>TitusX</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1780&amp;oldid=prev</id>
		<title>TitusX: /* Ingredients */</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1780&amp;oldid=prev"/>
				<updated>2012-04-18T21:33:29Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Ingredients&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:33, 18 April 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''[http://code.google.com/p/fusepy/source/browse/trunk/fuse.py fuse.py]''': python library for fuse&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''[http://code.google.com/p/fusepy/source/browse/trunk/fuse.py fuse.py]''': python library for fuse&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''[http://bazaar.launchpad.net/~python-memcached-team/python-memcached/trunk/view/head:/memcache.py memcache.py]''': python library for memcache&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''[http://bazaar.launchpad.net/~python-memcached-team/python-memcached/trunk/view/head:/memcache.py memcache.py]''': python library for memcache&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''memfis.py''': experimental fuse file system&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''memfis.py''': experimental fuse file system &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(new: symbolic links)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;= Server Setup =&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;= Server Setup =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>TitusX</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1779&amp;oldid=prev</id>
		<title>TitusX: /* MemFiS Filesystem */</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1779&amp;oldid=prev"/>
				<updated>2012-04-18T21:32:17Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;MemFiS Filesystem&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:32, 18 April 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 79:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 79:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;# a class with preferences an handy functions&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;class Auxiliary(object):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;class Auxiliary(object):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 249:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 250:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;# &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;our &lt;/del&gt;file system class&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;# &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;the fuse &lt;/ins&gt;file system class&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;class MemFiS(Operations, Auxiliary):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;class MemFiS(Operations, Auxiliary):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>TitusX</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1778&amp;oldid=prev</id>
		<title>TitusX: /* MemFiS Filesystem */</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1778&amp;oldid=prev"/>
				<updated>2012-04-18T21:30:31Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;MemFiS Filesystem&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;amp;diff=1778&amp;amp;oldid=1777&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>TitusX</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1777&amp;oldid=prev</id>
		<title>TitusX: /* Ingredients */</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=1777&amp;oldid=prev"/>
				<updated>2012-04-18T21:28:45Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Ingredients&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 21:28, 18 April 2012&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;# serve the equests&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;# serve the equests&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''[http://wiki.nginx.org/HttpMemcachedModule nginx]''': webserver with memcache api&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''[http://wiki.nginx.org/HttpMemcachedModule nginx]''': webserver with memcache api&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''[http://www.couchbase.com/downloads &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;membase&lt;/del&gt;]''': persistent memcache server&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* '''[http://www.couchbase.com/downloads &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;couchbase&lt;/ins&gt;]''': persistent memcache server&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;# preload memcache&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;# preload memcache&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* python: a programming language&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;#* python: a programming language&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>TitusX</name></author>	</entry>

	<entry>
		<id>http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=908&amp;oldid=prev</id>
		<title>TitusX: /* Ingredients */</title>
		<link rel="alternate" type="text/html" href="http://wiki.nginx.org/index.php?title=MemCache-Preload&amp;diff=908&amp;oldid=prev"/>
				<updated>2011-05-02T13:48:26Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Ingredients&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Ingredients =&lt;br /&gt;
&lt;br /&gt;
'''This setups is only a proof of concept = means: experimental, but works for me.'''&lt;br /&gt;
&lt;br /&gt;
# serve the equests&lt;br /&gt;
#* '''[http://wiki.nginx.org/HttpMemcachedModule nginx]''': webserver with memcache api&lt;br /&gt;
#* '''[http://www.couchbase.com/downloads membase]''': persistent memcache server&lt;br /&gt;
# preload memcache&lt;br /&gt;
#* python: a programming language&lt;br /&gt;
#* fuse: file system in user space&lt;br /&gt;
#* '''[http://code.google.com/p/fusepy/source/browse/trunk/fuse.py fuse.py]''': python library for fuse&lt;br /&gt;
#* '''[http://bazaar.launchpad.net/~python-memcached-team/python-memcached/trunk/view/head:/memcache.py memcache.py]''': python library for memcache&lt;br /&gt;
#* '''memfis.py''': experimental fuse file system&lt;br /&gt;
&lt;br /&gt;
= Server Setup =&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&amp;lt;geshi lang=bash&amp;gt;&lt;br /&gt;
apt-get install nginx-full&lt;br /&gt;
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.dpkg-dist&lt;br /&gt;
vi /etc/nginx/sites-available/default&lt;br /&gt;
dpkg -i membase-server-community_&amp;lt;arch&amp;gt;_&amp;lt;version&amp;gt;.deb&lt;br /&gt;
# Browser: http://&amp;lt;hostname&amp;gt;:8091&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/nginx/sites-available/default ==&lt;br /&gt;
&amp;lt;geshi lang=nginx&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
        listen          80;&lt;br /&gt;
        server_name     &amp;lt;webserver&amp;gt;;&lt;br /&gt;
        root            /var/www/;&lt;br /&gt;
&lt;br /&gt;
        location / {&lt;br /&gt;
                index                   index.html;&lt;br /&gt;
                default_type            text/plain;&lt;br /&gt;
                set $memcached_key      memfis://&amp;lt;hostname&amp;gt;$uri;&lt;br /&gt;
                memcached_pass          127.0.0.1:11211;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
* to do: error, fallback ...&lt;br /&gt;
&lt;br /&gt;
= Preload Memcache =&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&amp;lt;geshi lang=bash&amp;gt;&lt;br /&gt;
mkdir /mnt/memfis&lt;br /&gt;
mkdir memfis.d&lt;br /&gt;
cd memfis.d&lt;br /&gt;
vi memfis.py fuse.py memcache.py&lt;br /&gt;
chmod +x memfis.py&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mount, Preload, Unmount ==&lt;br /&gt;
&amp;lt;geshi lang=bash&amp;gt;&lt;br /&gt;
memfis.d/memfis.py /mnt/memfis&lt;br /&gt;
cp -a &amp;lt;source&amp;gt;/* /mnt/memfis&lt;br /&gt;
sudo unmount /mnt/memfis&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MemFiS Filesystem ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;geshi lang=python&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
# (c) 2011, titusx at gmx.de&lt;br /&gt;
&lt;br /&gt;
#import syslog, binascii&lt;br /&gt;
from time   import time, strftime&lt;br /&gt;
from sys    import argv, exit&lt;br /&gt;
from socket import gethostname&lt;br /&gt;
from os     import getuid, getgid, O_RDONLY, O_WRONLY, O_RDWR&lt;br /&gt;
from errno  import *&lt;br /&gt;
from stat   import S_IFDIR, S_IFREG&lt;br /&gt;
from fuse   import FUSE, FuseOSError, Operations, LoggingMixIn&lt;br /&gt;
from json   import dumps, loads&lt;br /&gt;
import memcache as mc&lt;br /&gt;
#import pylibmc as mc&lt;br /&gt;
&lt;br /&gt;
class Auxiliary(object):&lt;br /&gt;
&lt;br /&gt;
    def ini(self): # custom ini&lt;br /&gt;
        self.debugp = False #'/var/log/memfis-debug.log'&lt;br /&gt;
        self.server = [&amp;quot;127.0.0.1:11211&amp;quot;]&lt;br /&gt;
        self.memfis = None&lt;br /&gt;
        self.noatim = True&lt;br /&gt;
        self.prefix = &amp;quot;memfis://&amp;quot; + gethostname()&lt;br /&gt;
        self.countr = self.prefix + &amp;quot;/?cntr&amp;quot;&lt;br /&gt;
        self.erased = self.prefix + &amp;quot;/?free&amp;quot;&lt;br /&gt;
        self.initim = self.now()&lt;br /&gt;
        self.iniuid = getuid()&lt;br /&gt;
        self.inigid = getgid()&lt;br /&gt;
&lt;br /&gt;
    def now(self): # now&lt;br /&gt;
        return time()&lt;br /&gt;
&lt;br /&gt;
    def mka(self): # mkattr&lt;br /&gt;
        Attr = dict(&lt;br /&gt;
            st_ino     = 0,&lt;br /&gt;
            #st_dev     = 0,&lt;br /&gt;
            #st_rdev    = 0,&lt;br /&gt;
            #st_blksize = 20000000,&lt;br /&gt;
            #st_blocks  = 1,&lt;br /&gt;
            st_nlink   = 2,&lt;br /&gt;
            st_size    = 4,&lt;br /&gt;
            st_mode    = 0,&lt;br /&gt;
            st_uid     = self.iniuid,&lt;br /&gt;
            st_gid     = self.inigid,&lt;br /&gt;
            st_atime   = self.initim,&lt;br /&gt;
            st_mtime   = self.initim,&lt;br /&gt;
            st_ctime   = self.initim )&lt;br /&gt;
        return Attr&lt;br /&gt;
&lt;br /&gt;
    def dbg(self, mssg): # debug&lt;br /&gt;
        if self.debugp:&lt;br /&gt;
            stamp = strftime(&amp;quot;%Y%m%d-%H:%M.%S&amp;quot;)&lt;br /&gt;
            log = open(self.debugp, 'a')&lt;br /&gt;
            log.write(&amp;quot;[%s] %s\n&amp;quot; % (stamp, mssg))&lt;br /&gt;
            log.close()&lt;br /&gt;
        return&lt;br /&gt;
&lt;br /&gt;
    def p2a(self, path): # attr&lt;br /&gt;
        return self.prefix + path + &amp;quot;?attr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    def p2x(self, path): # xattr&lt;br /&gt;
        return self.prefix + path + &amp;quot;?xttr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    def p2d(self, path): # data&lt;br /&gt;
        return self.prefix + path&lt;br /&gt;
&lt;br /&gt;
    def c2n(self, cntr): # counter to node&lt;br /&gt;
        return self.prefix + &amp;quot;/?node=%08i&amp;quot; % (cntr)&lt;br /&gt;
&lt;br /&gt;
    def par(self, path): # parent+file&lt;br /&gt;
        if path == &amp;quot;/&amp;quot;:&lt;br /&gt;
            return None&lt;br /&gt;
        Splt = path.rsplit(&amp;quot;/&amp;quot;,1)&lt;br /&gt;
        if Splt[0] == &amp;quot;&amp;quot;:&lt;br /&gt;
            Splt[0] = &amp;quot;/&amp;quot;&lt;br /&gt;
        return Splt&lt;br /&gt;
&lt;br /&gt;
    def cnt(self, path): # counter&lt;br /&gt;
        Cntr = self.memfis.incr(self.countr)&lt;br /&gt;
        try:&lt;br /&gt;
            self.memfis.add(self.c2n(Cntr), path)&lt;br /&gt;
        except:&lt;br /&gt;
            raise FuseOSError(EEXIST)&lt;br /&gt;
        return Cntr&lt;br /&gt;
&lt;br /&gt;
    def fre(self, cntr): # erased&lt;br /&gt;
        self.memfis.incr(self.erased)&lt;br /&gt;
        return self.c2n(cntr)&lt;br /&gt;
&lt;br /&gt;
    def enc(self, pobj):&lt;br /&gt;
        return dumps(pobj, sort_keys=True, indent=1)&lt;br /&gt;
&lt;br /&gt;
    def dec(self, strg):&lt;br /&gt;
        return loads(strg)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class MemFiS(Operations, Auxiliary):&lt;br /&gt;
&lt;br /&gt;
    def __init__(self, *args, **kw):&lt;br /&gt;
        self.ini()&lt;br /&gt;
        self.dbg(&amp;quot;__INIT__&amp;quot;)&lt;br /&gt;
        self.memfis = mc.Client(self.server)&lt;br /&gt;
        if self.debugp:&lt;br /&gt;
            self.memfis.flush_all()&lt;br /&gt;
        Cntr = self.memfis.get(self.countr)&lt;br /&gt;
        if Cntr == None:&lt;br /&gt;
            self.memfis.set(self.countr, 0)&lt;br /&gt;
            self.memfis.set(self.erased, 0)&lt;br /&gt;
        Attr = self.memfis.get(self.p2a(&amp;quot;/&amp;quot;))&lt;br /&gt;
        if Attr == None:&lt;br /&gt;
            self.mkdir(&amp;quot;/&amp;quot;, 493)&lt;br /&gt;
&lt;br /&gt;
    def __del__(self):&lt;br /&gt;
        self.dbg(&amp;quot;__DEL__&amp;quot;)&lt;br /&gt;
        if self.debugp:&lt;br /&gt;
            self.memfis.flush_all()&lt;br /&gt;
        self.memfis.disconnect_all()&lt;br /&gt;
&lt;br /&gt;
    def chmod(self, path, mode):&lt;br /&gt;
        self.dbg(&amp;quot;CHOWN:    %s (mode: '%s'=%i)&amp;quot; % (path, oct(mode), mode))&lt;br /&gt;
        JAttr = self.memfis.get(self.p2a(path))&lt;br /&gt;
        if JAttr == None:&lt;br /&gt;
            raise FuseOSError(ENOENT) # daten nicht gefunden&lt;br /&gt;
        else:&lt;br /&gt;
            Attr = self.dec(JAttr)&lt;br /&gt;
        if Attr['st_mode'] == mode:&lt;br /&gt;
            return 0&lt;br /&gt;
        Attr['st_mode'] = mode&lt;br /&gt;
        Attr['st_mtime'] = self.now()&lt;br /&gt;
        self.memfis.set(self.p2a(path), self.enc(Attr))&lt;br /&gt;
&lt;br /&gt;
    def chown(self, path, usid, grid):&lt;br /&gt;
        self.dbg(&amp;quot;CHMOD:    %s (uid: %i, gid: %i)&amp;quot; % (path, usid, grid))&lt;br /&gt;
        JAttr = self.memfis.get(self.p2a(path))&lt;br /&gt;
        if JAttr == None:&lt;br /&gt;
            raise FuseOSError(ENOENT) # daten nicht gefunden&lt;br /&gt;
        else:&lt;br /&gt;
            Attr = self.dec(JAttr)&lt;br /&gt;
        Dirt = False&lt;br /&gt;
        if Attr['st_uid'] != usid and usid &amp;gt;= 0:&lt;br /&gt;
            Attr['st_uid'] = usid&lt;br /&gt;
            Dirt = True&lt;br /&gt;
        if Attr['st_gid'] != grid and grid &amp;gt;= 0:&lt;br /&gt;
            Attr['st_gid'] = grid&lt;br /&gt;
            Dirt = True&lt;br /&gt;
        if Dirt == False:&lt;br /&gt;
            return 0&lt;br /&gt;
        Attr['st_mtime'] = self.now()&lt;br /&gt;
        self.memfis.set(self.p2a(path), self.enc(Attr))&lt;br /&gt;
&lt;br /&gt;
    def addnode(self, path, mode, dire):&lt;br /&gt;
        self.dbg(&amp;quot;addnode:  %s (mode: '%s'=%i)&amp;quot; % (path, oct(mode), mode))&lt;br /&gt;
        JAttr = self.memfis.get(self.p2a(path))&lt;br /&gt;
        if JAttr != None:&lt;br /&gt;
            raise FuseOSError(EEXIST) # datei existiert&lt;br /&gt;
        Splt = self.par(path)&lt;br /&gt;
        if Splt != None:&lt;br /&gt;
            Attr = self.dec(self.memfis.get(self.p2a(Splt[0])))&lt;br /&gt;
            List = self.dec(self.memfis.get(self.p2d(Splt[0])))&lt;br /&gt;
            List.append(Splt[1])&lt;br /&gt;
            List.sort()&lt;br /&gt;
            Attr['st_size']  = len(self.enc(List))&lt;br /&gt;
            Attr['st_mtime'] = self.now()&lt;br /&gt;
            Attr['st_atime'] = Attr['st_mtime']&lt;br /&gt;
            if dire == True:&lt;br /&gt;
                Attr['st_nlink'] += 1&lt;br /&gt;
            self.memfis.set(self.p2a(Splt[0]), self.enc(Attr))&lt;br /&gt;
            self.memfis.set(self.p2d(Splt[0]), self.enc(List))&lt;br /&gt;
        Attr  = self.mka()&lt;br /&gt;
        Attr['st_ino']   = self.cnt(path)&lt;br /&gt;
        Attr['st_uid']   = self.iniuid&lt;br /&gt;
        Attr['st_gid']   = self.inigid&lt;br /&gt;
        Attr['st_ctime'] = self.now()&lt;br /&gt;
        Attr['st_mtime'] = Attr['st_ctime']&lt;br /&gt;
        Attr['st_atime'] = Attr['st_ctime']&lt;br /&gt;
        if dire == True:&lt;br /&gt;
            Attr['st_nlink'] = 2&lt;br /&gt;
            Attr['st_mode']  = S_IFDIR | mode&lt;br /&gt;
            Attr['st_size']  = len(self.enc(['.', '..']))&lt;br /&gt;
        else:&lt;br /&gt;
            Attr['st_nlink'] = 1&lt;br /&gt;
            Attr['st_mode']  = S_IFREG | mode&lt;br /&gt;
            Attr['st_size']  = 0&lt;br /&gt;
        self.memfis.set(self.p2a(path), self.enc(Attr))&lt;br /&gt;
        return Attr['st_ino']&lt;br /&gt;
&lt;br /&gt;
    def create(self, path, mode, fi=None):&lt;br /&gt;
        self.dbg(&amp;quot;CREATE:   %s (mode: '%s'=%i)&amp;quot; % (path, oct(mode), mode))&lt;br /&gt;
        return self.addnode(path, mode, False)&lt;br /&gt;
&lt;br /&gt;
    def getattr(self, path, fhdl=None):&lt;br /&gt;
        self.dbg(&amp;quot;GETATTR:  &amp;quot; + path)&lt;br /&gt;
        JAttr = self.memfis.get(self.p2a(path))&lt;br /&gt;
        if JAttr == None:&lt;br /&gt;
            raise FuseOSError(ENOENT) # daten nicht gefunden&lt;br /&gt;
        else:&lt;br /&gt;
            return self.dec(JAttr)&lt;br /&gt;
&lt;br /&gt;
    def mkdir(self, path, mode):&lt;br /&gt;
        self.dbg(&amp;quot;MKDIR:    %s (mode: '%s'=%i)&amp;quot; % (path, oct(mode), mode))&lt;br /&gt;
        self.addnode(path, mode, True)&lt;br /&gt;
        self.memfis.set(self.p2d(path), self.enc(['.', '..']))&lt;br /&gt;
&lt;br /&gt;
    def read(self, path, size, oset, fhdl):&lt;br /&gt;
        self.dbg(&amp;quot;READ:     %s (size: %i, offset: %i)&amp;quot; % (path, size, oset))&lt;br /&gt;
        if oset != 0:&lt;br /&gt;
            raise FuseOSError(ENOSYS) # nicht implementiert&lt;br /&gt;
        JAttr = self.memfis.get(self.p2a(path))&lt;br /&gt;
        if JAttr == None:&lt;br /&gt;
            raise FuseOSError(ENOENT) # daten nicht gefunden&lt;br /&gt;
        else:&lt;br /&gt;
            Attr = self.dec(JAttr)&lt;br /&gt;
        if self.noatim == False:&lt;br /&gt;
            Attr['st_atime'] = now()&lt;br /&gt;
            self.memfis.set(self.p2a(path), self.enc(Attr))&lt;br /&gt;
        Data = self.memfis.get(self.p2d(path))&lt;br /&gt;
        return Data&lt;br /&gt;
&lt;br /&gt;
    def readdir(self, path, fhdl):&lt;br /&gt;
        self.dbg(&amp;quot;READDIR:  &amp;quot; + path)&lt;br /&gt;
        List = []&lt;br /&gt;
        for e in self.dec(self.read(path, 0, 0, fhdl)):&lt;br /&gt;
            List.append( e.encode('ascii') )&lt;br /&gt;
        return List&lt;br /&gt;
&lt;br /&gt;
    def delnode(self, path, dire):&lt;br /&gt;
        self.dbg(&amp;quot;delnode:  &amp;quot; + path)&lt;br /&gt;
        if path == &amp;quot;/&amp;quot;:&lt;br /&gt;
            raise FuseOSError(ENOPERM)&lt;br /&gt;
        JAttr = self.memfis.get(self.p2a(path))&lt;br /&gt;
        if JAttr == None:&lt;br /&gt;
            raise FuseOSError(ENOENT) # daten nicht gefunden&lt;br /&gt;
        else:&lt;br /&gt;
            Attr = self.dec(JAttr)&lt;br /&gt;
        if dire == True and Attr['st_nlink'] &amp;gt; 2:&lt;br /&gt;
            raise FuseOSError(ENOTEMPTY) # verzeichnis nicht leer&lt;br /&gt;
        if dire == False and Attr['st_nlink'] != 1:&lt;br /&gt;
            raise FuseOSError(ENOSYS) # nicht implementiert&lt;br /&gt;
        self.memfis.delete_multi([self.p2a(path), self.p2d(path), self.fre(Attr['st_ino'])])&lt;br /&gt;
        Splt = self.par(path)&lt;br /&gt;
        if Splt != None:&lt;br /&gt;
            Attr = self.dec(self.memfis.get(self.p2a(Splt[0])))&lt;br /&gt;
            List = self.dec(self.memfis.get(self.p2d(Splt[0])))&lt;br /&gt;
            List.remove(Splt[1])&lt;br /&gt;
            Attr['st_size']  = len(self.enc(List))&lt;br /&gt;
            Attr['st_mtime'] = self.now()&lt;br /&gt;
            Attr['st_atime'] = Attr['st_mtime']&lt;br /&gt;
            if dire == True:&lt;br /&gt;
                Attr['st_nlink'] -= 1&lt;br /&gt;
            self.memfis.set(self.p2a(Splt[0]), self.enc(Attr))&lt;br /&gt;
            self.memfis.set(self.p2d(Splt[0]), self.enc(List))&lt;br /&gt;
&lt;br /&gt;
    def rmdir(self, path):&lt;br /&gt;
        self.dbg(&amp;quot;RMDIR:    &amp;quot; + path)&lt;br /&gt;
        self.delnode(path, True)&lt;br /&gt;
&lt;br /&gt;
    def write(self, path, buff, oset, fdhl=None):&lt;br /&gt;
        self.dbg(&amp;quot;WRITE:    %s (buffer: %i, offset: %i)&amp;quot; % (path, len(buff), oset))&lt;br /&gt;
        JAttr = self.memfis.get(self.p2a(path))&lt;br /&gt;
        if JAttr == None:&lt;br /&gt;
            raise FuseOSError(ENOENT) # daten nicht gefunden&lt;br /&gt;
        else:&lt;br /&gt;
            Attr = self.dec(JAttr)&lt;br /&gt;
        if Attr['st_size'] + len(buff) &amp;gt; 20000000:&lt;br /&gt;
            raise FuseOSError(EFBIG) # datei zu gross&lt;br /&gt;
        Attr['st_size'] += len(buff)&lt;br /&gt;
        Attr['st_mtime'] = self.now()&lt;br /&gt;
        Attr['st_atime'] = Attr['st_mtime']&lt;br /&gt;
        self.memfis.replace(self.p2a(path), self.enc(Attr))&lt;br /&gt;
        if oset == 0:&lt;br /&gt;
            self.memfis.add(self.p2d(path), buff)&lt;br /&gt;
        else:&lt;br /&gt;
            self.memfis.append(self.p2d(path), buff)&lt;br /&gt;
        return len(buff)&lt;br /&gt;
&lt;br /&gt;
    def unlink(self, path):&lt;br /&gt;
        self.dbg(&amp;quot;UNLINK:   &amp;quot; + path)&lt;br /&gt;
        self.delnode(path, False)&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    if len(argv) != 2:&lt;br /&gt;
        print 'usage: %s &amp;lt;mountpoint&amp;gt;' % argv[0]&lt;br /&gt;
        exit(1)&lt;br /&gt;
    fuse = FUSE(MemFiS(), argv[1], foreground=False)&lt;br /&gt;
&amp;lt;/geshi&amp;gt;&lt;/div&gt;</summary>
		<author><name>TitusX</name></author>	</entry>

	</feed>