<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>清田コーヒーブログ　 kiyotaman@twitter</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/" />
    <link rel="self" type="application/atom+xml" href="http://www.kiyota.info/blog/atom.xml" />
    <id>tag:www.kiyota.info,2009-03-12:/blog//1</id>
    <updated>2010-07-30T04:23:31Z</updated>
    <subtitle>コーヒーとWEBエンジニアリングの小言
jfkはJapanese FK(名前のイニシャル)の組み合わせです！
twitterは -&gt; kiyotaman@twitter です！</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Commercial 4.24-ja</generator>

<entry>
    <title>cookpad &amp; livedoor ものづくりべんきょうかいの感想</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/07/cookpad-livedoor.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.113</id>

    <published>2010-07-30T04:21:37Z</published>
    <updated>2010-07-30T04:23:31Z</updated>

    <summary>ユーザに提供するのは、機能やサービスではなく&apos;&apos;価値&apos;&apos;&apos;を提供することをという...</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="思うこと" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="cookpadlivedoor" label="cookpad livedoor" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[ユーザに提供するのは、機能やサービスではなく<br />''価値'''を提供することをということを念頭に<br />下記を３原則とし「ものづくり」をしているとのことです。<br />（料理も作ることなので、つくるつながりはよいと思いました。）<br /><br />1, 無限実行<br />事前にリリース予定などの告知はしない。見えないものを伝えるのは困難だし誤解を生じやすくユーザを混乱させる。事前告知の効果もはっきりしないので、しないほうがよい<br /><br />2, 無限語化<br />HelpやFAQなどは準備しない。ユーザがマニュアルやFAQを必要とするサイトはどこかに問題があるので、それを解決するほうが先。ユーザが2秒で理解できないものは問題がある。<br /><br />3, サービスに値段をつける<br />Webサービスは無料で提供しているものが多いが、無料であることがサービス提供側の言い訳になる恐れがあり、クオリティが低下する。サービスに予め値段をつけることで、そういう状況を回避できる。<br />（http://d.hatena.ne.jp/atyks/20090201/1233421922の下に書いてあります）<br /><br />おもしろい考え方だと思いました。<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>mongodb + python で shorturl やってみる。</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/07/mongodb-python-shorturl.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.112</id>

    <published>2010-07-20T01:54:15Z</published>
    <updated>2010-07-20T02:03:39Z</updated>

    <summary>mongodb + python で shorturl やってみる。</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="mongodb" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="python" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mongodbshorturlpython" label="mongodb shorturl python" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[下記がコードサンプル、create_indexは忘れずに。<br /><br />#!/usr/bin/env python<br /><br />import binascii<br />import struct<br />import datetime<br />import hashlib<br />rom pymongo import Connection<br />from time import sleep<br /><br />reconnect_times = 10<br />reconnect_counter = 0<br />dbsetting = {'dbhost':'localhost','dbname':'shorturldb'}<br /><br />def con(**kwargs):<br /><br />&nbsp;&nbsp;&nbsp; global reconnect_counter<br />&nbsp;&nbsp;&nbsp; global reconnect_times<br /><br />&nbsp;&nbsp;&nbsp; if 'host' not in kwargs:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kwargs['host'] = dbsetting['dbhost']<br />&nbsp;&nbsp;&nbsp; dbname = dbsetting['dbname']<br /><br />&nbsp;&nbsp;&nbsp; try:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _con = Connection(**kwargs)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return eval('_con.'+dbname)<br /><br />&nbsp;&nbsp;&nbsp; except Exception, e:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep(0.1)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print('Fail to excute %s [%s]' % ( __name__, e))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if reconnect_counter == reconnect_times:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reconnect_counter = reconnect_counter + 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con(**kwargs)<br /><br /><br />def save_hash(url, length=5):<br />&nbsp;&nbsp;&nbsp; base32 = [<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'a', 'b', 'c', 'd', 'e',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'f', 'g', 'h', 'i', 'j',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'k', 'l', 'm', 'n', 'o',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'p', 'q', 'r', 's', 't',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'u', 'v', 'w', 'x', 'y','z', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'A', 'B', 'C', 'D', 'E',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'F', 'G', 'H', 'I', 'J',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'K', 'L', 'M', 'N', 'O',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'P', 'Q', 'R', 'S', 'T',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'U', 'V', 'W', 'X', 'Y','Z', <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '0', '1', '2', '3', '4',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '5', '6', '7', '8', '9'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br />&nbsp;&nbsp;&nbsp; hex = hashlib.md5(url).hexdigest()<br />&nbsp;&nbsp;&nbsp; hexLen = len(hex)<br />&nbsp;&nbsp;&nbsp; subHexLen = hexLen/8<br />&nbsp;&nbsp;&nbsp; output = []<br />&nbsp;&nbsp;&nbsp; mydb = con()<br />&nbsp;&nbsp;&nbsp; for i in range(0, subHexLen):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; subHex = hex[i*8:(i*8)+8]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; num = 0x3FFFFFFF &amp; int('0x'+subHex, 0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hash = '';<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j in range(0,length):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; val = 0x0000003D &amp; num<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hash = hash + base32[val]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; num = num &gt;&gt; length<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r = mydb.shorturl.find_one({'i':{'$in':[hash,url]}})<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if not r:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; insert = {'i':[hash,url],'p':datetime.datetime.utcnow()}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydb.shorturl.insert(insert)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return hash<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif r and r['i'][1] == url:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return r['i'][0]<br />&nbsp;&nbsp;&nbsp; return None<br /><br />def get_hash(url):<br />&nbsp;&nbsp;&nbsp; mydb = con()<br />&nbsp;&nbsp;&nbsp; r = mydb.shorturl.find_one({'i':{'$in':[url]}})<br />&nbsp;&nbsp;&nbsp; if r:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return r['i'][0]<br />&nbsp;&nbsp;&nbsp; return None<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>tornado + pymongo (じゃなくてもよいが) mongodb reconnect よう簡易モジュール</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/06/tornado-pymongo-mongodb-reconnect.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.111</id>

    <published>2010-06-24T01:55:30Z</published>
    <updated>2010-06-24T01:58:32Z</updated>

    <summary>from pymongo import Connectionfrom time ...</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="MY DEBIAN" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="mongodb" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="python" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="tornado" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[from pymongo import Connection<br />from time import sleep<br /><br />reconnect_times = 10<br />reconnect_counter = 0<br /><br />def con(**kwargs):<br /><br />&nbsp;&nbsp;&nbsp; global reconnect_counter<br />&nbsp;&nbsp;&nbsp; global reconnect_times<br /><br />&nbsp;&nbsp;&nbsp; if 'host' not in kwargs:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kwargs['host'] = settings.application['dbhost']<br />&nbsp;&nbsp;&nbsp; dbname = settings.application['dbname']<br /><br />&nbsp;&nbsp;&nbsp; try:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _con = Connection(**kwargs)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return eval('_con.'+dbname)<br /><br />&nbsp;&nbsp;&nbsp; except Exception, e:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep(0.1)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print('Fail to excute %s [%s]' % ( __name__, e))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if reconnect_counter == reconnect_times:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reconnect_counter = reconnect_counter + 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; con(**kwargs)<br /><br />==<br />mongodb 1.5.* は若干バギーで、コネクトエラーがたまにでる。（でるらしいので、pymongoのコネクトラッパーらしきものもあるが）自前で、対応<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>python tornado locale setting (他言語化)</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/06/python-tornado-locale-setting.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.110</id>

    <published>2010-06-24T01:49:59Z</published>
    <updated>2010-06-24T01:55:03Z</updated>

    <summary>べーすハンドラーにclass BaseHandler(tornado.web.R...</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="MY DEBIAN" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="python" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="tornado" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="pythontornadolocalesetting" label="python tornado locale setting" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[べーすハンドラーに<br />class BaseHandler(tornado.web.RequestHandler):<br />&nbsp;&nbsp;&nbsp; def get_user_locale(self):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return tornado.locale.get(*[self.get_cookie('lang', None)])<br /><br />get_user_locale を上記のように指定すると、<br />cookie lang に locale の指定があれば、locale テーブルを差し替えられる。<br /><br />== po file 作成サンプルシェル ==<br /><br />BASE=.<br />DOMAINNAME='main'<br />FILELIST=$BASE/templates<br />POFILEDIR=$BASE/po<br />XGETTEXT=`which xgettext`<br /><br />find $FILELIST -type f &gt; .tmp<br />touch $POFILEDIR/$DOMAINNAME.pot<br />$XGETTEXT -j -n -o $POFILEDIR/$DOMAINNAME.pot --keyword=_:1,2 --language=Python -f .tmp<br />rm .tmp<br /><br />#for x in "af_ZA" "ar_AR" "bg_BG" "bn_IN" "bs_BA" "ca_ES" "cs_CZ" "cy_GB" "da_DK" "de_DE" "el_GR" "en_GB" "en_US" "es_ES" "es_LA" "et_EE" "eu_ES" "fa_IR" "fi_FI" "fr_CA" "fr_FR" "ga_IE" "gl_ES" "he_IL" "hi_IN" "hr_HR" "hu_HU" "id_ID" "is_IS" "it_IT" "ja_JP" "ko_KR" "lt_LT" "lv_LV" "mk_MK" "ml_IN" "ms_MY" "nb_NO" "nl_NL" "nn_NO" "pa_IN" "pl_PL" "pt_BR" "pt_PT" "ro_RO" "ru_RU" "sk_SK" "sl_SI" "sq_AL" "sr_RS" "sv_SE" "sw_KE" "ta_IN" "te_IN" "th_TH" "tl_PH" "tr_TR" "uk_UA" "vi_VN" "zh_CN" "zh_HK" "zh_TW";<br />for x in "ja_JP";<br />do<br /><br />LOCALE=$x<br />POPATH=$POFILEDIR/$LOCALE.po<br /><br />test ! -f $POPATH &amp;&amp; touch $POPATH<br /><br />nkf -wLu $POPATH &gt; $POFILEDIR/$LOCALE.old.po<br />msgmerge -v $POFILEDIR/$LOCALE.old.po $POFILEDIR/$DOMAINNAME.pot -o $POPATH<br />done<br /><br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>mongos (mongodb) sharding start script for debug</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/06/mongos-mongodb-sharding-start-script-for-debug.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.109</id>

    <published>2010-06-24T01:38:32Z</published>
    <updated>2010-06-24T01:49:50Z</updated>

    <summary>mongosが安定してきたので一安心。==ディレクトリ作る（ec2の場合とりあえ...</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="MY DEBIAN" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="mongodb" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="備忘録" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mongodb" label="mongodb" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="mongos" label="mongos" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[mongosが安定してきたので一安心。<br /><br />==<br />ディレクトリ作る（ec2の場合とりあえず、/mnt以下へ)<br />==<br /><br /><pre>$ sudo mkdir /mnt/data/shards<br />$ sudo mkdir /mnt/data/shards/0 /mnt/data/shards/1 /mnt/data/shards/2<br />$ sudo mkdir /mnt/data/shards/config<br />$ sudo chown mongodb:mongodb -R /mnt/data/shards<br /></pre><br />== <br />mongosの設定<br />
==<br />
<br />
<pre>$ sudo -u mongodb -H mongo<br />&gt; use admin<br />&gt; db.runCommand( {addshard : "localhost:27020", allowLocal : true} );<br />&gt; db.runCommand( {addshard : "localhost:27021", allowLocal : true} );<br />&gt; db.runCommand( {addshard : "localhost:27022", allowLocal : true} );<br /><br /># Listing shards<br />&gt; db.runCommand( { listshards : 1 } );<br /><br />#Enabling Sharding on a Database<br />&gt; db.runCommand( { enablesharding : "dbname" } );<br /><br />#Sharding a Collection<br />&gt; db.runCommand( { shardcollection : "dbname.collection_name" , key : { "_id" : 1 } , unique : true } );<br /><br /></pre>==<br />簡易スタートスクリプト<br />==<br /><br />#!/bin/bash<br /><br />sudo -u mongodb -H mongod \<br />--configsvr \<br />--dbpath /mnt/data/shards/config \<br />--fork \<br />--port 27019 \<br />--logpath /var/log/mongodb/mongodb.config.log&nbsp; &amp;<br /><br />sleep 2<br /><br />sudo mongos \<br />-vvv \<br />--port 27017 \<br />--fork \<br />--configdb localhost:27019 \<br />--logpath /var/log/mongodb/mongos.log&nbsp; &amp;<br /><br />sleep 2<br /><br />sudo -u mongodb -H mongod \<br />--shardsvr \<br />--port 27020 \<br />--fork \<br />--dbpath /mnt/data/shards/0 \<br />--logpath /var/log/mongodb/mongodb.shard.log &amp;<br /><br />sudo -u mongodb -H mongod \<br />--shardsvr \<br />--port 27021 \<br />--fork \<br />--dbpath /mnt/data/shards/1 \<br />--logpath /var/log/mongodb/mongodb.shard.log &amp;<br /><br />sudo -u mongodb -H mongod \<br />--shardsvr \<br />--port 27022 \<br />--fork \<br />--dbpath /mnt/data/shards/2 \<br />--logpath /var/log/mongodb/mongodb.shard.log&nbsp; &amp;<br /><br />print '-------------------------------------'<br />ps -o pid,command ax | grep mongos | grep -v grep |cut -d' ' -f1<br />print '-------------------------------------'<br /><br />ps -o pid,command ax | grep mongos | grep -v grep |cut -d' ' -f1 &gt; /tmp/mongo.pid<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>gmail and imap のメールを fetchmail と　procmail　で取得メモ</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/06/gmail-and-imap-fetchmail-procmail.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.108</id>

    <published>2010-06-22T04:44:08Z</published>
    <updated>2010-06-22T04:49:51Z</updated>

    <summary>gmail and imap のメールを fetchmail と　procmail　で取得メモ
</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="MY DEBIAN" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="備忘録" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="fetchmailprocmailgmailimap" label="fetchmail procmail gmail imap" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[久々に設定、<br /><br />$ sudo apt-get install fetchmail<br /><br />後、<br /><br />$ vi $HOME/.fetchmailrc<br /><br />==中身==<br /><br />poll imap.gmail.com proto imap port 993<br />&nbsp;&nbsp;&nbsp; user "アカウント名@gmail.com" password "パスワード"<br />&nbsp;&nbsp;&nbsp; keep<br />&nbsp;&nbsp;&nbsp; ssl<br />&nbsp;&nbsp;&nbsp; mda "/usr/bin/procmail"<br /><br />========<br /><br />$ chmod 600 .fetchmailrc<br /><br />そして、<br /><br />$ sudo apt-get install procmail<br /><br />後、<br /><br />$ vi .procmailrc<br /><br />==中身==<br /><br />PATH=$HOME/bin:/usr/bin:/usr/local/bin<br />MAILDIR=$HOME/Maildir<br />DEFAULT=$MAILDIR/inbox/.<br />LOGFILE=$MAILDIR/procmail.log<br />LOCKFILE=$HOME/.lockmail<br /><br />========<br /><br />$ fetchmail -v<br /><br />これで定期的にメールを取得して、メールを軸に何らかの処理可能。<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>python tornado facebook auth.py _signature() bug</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/06/python-tornado-facebook-authpy--signature-bug.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.107</id>

    <published>2010-06-16T12:07:41Z</published>
    <updated>2010-06-16T12:11:31Z</updated>

    <summary>unicode facebook stream.publish with tornado.</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="python" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="facebook" label="facebook" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="python" label="python" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="tornado" label="tornado" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[unicode should be encoded before parts not body.<br /><br />&lt;code&gt;<br /><br />def _signature(self, args):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parts = ["%s=%s" % (n, args[n].encode("utf-8") if isinstance(args[n], unicode) else args[n]) for n in sorted(args.keys())]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; body = "".join(parts) + self.settings["facebook_secret"]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return hashlib.md5(body).hexdigest()<br /><br />&lt;/code&gt;<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>ab benchmark on mongodb+nginx+tornado on ec2 ubuntu 9.10 64bit m1.large</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/05/ab-benchmark-on-mongodbnginxtornado-on-ec2-ubuntu-910-64bit-m1large.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.106</id>

    <published>2010-05-06T10:33:28Z</published>
    <updated>2010-05-06T10:44:09Z</updated>

    <summary>mongodb bench</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="MY DEBIAN" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="mongodb" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="備忘録" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mongodb" label="mongodb" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[2 servers results<br /><br />Web Sever: Nginx 0.7* + Tornado 0.2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using  nginx 5 load balancers<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; worker processes 5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; worker connections 1024<br /><br />DB Server: mongodb 1.5.1 shards<br /><br />====<br />$ ab -n 10000 -c 25 http://****.***/<br />This is ApacheBench, Version 2.3 &lt;$Revision: 655654 $&gt;<br />Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />Licensed to The Apache Software Foundation, http://www.apache.org/<br /><br />Benchmarking ****.*** (be patient)<br />Completed 1000 requests<br />Completed 2000 requests<br />Completed 3000 requests<br />Completed 4000 requests<br />Completed 5000 requests<br />Completed 6000 requests<br />Completed 7000 requests<br />Completed 8000 requests<br />Completed 9000 requests<br />Completed 10000 requests<br />Finished 10000 requests<br /><br /><br />Server Software:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TornadoServer/0.1<br />Server Hostname:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ****.***<br />Server Port:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80<br /><br />Document Path:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /<br />Document Length:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4259 bytes<br /><br />Concurrency Level:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25<br />Time taken for tests:&nbsp;&nbsp; 139.086 seconds<br />Complete requests:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10000<br />Failed requests:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1469<br />&nbsp;&nbsp; (Connect: 0, Receive: 0, Length: 1469, Exceptions: 0)<br />Write errors:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />Non-2xx responses:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1469<br />Total transferred:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 38561669 bytes<br />HTML transferred:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 36470146 bytes<br />Requests per second:&nbsp;&nbsp;&nbsp; 71.90 [#/sec] (mean)<br />Time per request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 347.716 [ms] (mean)<br />Time per request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 13.909 [ms] (mean, across all concurrent requests)<br />Transfer rate:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 270.75 [Kbytes/sec] received<br /><br />Connection Times (ms)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min&nbsp; mean[+/-sd] median&nbsp;&nbsp; max<br />Connect:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 106&nbsp; 108&nbsp; 42.5&nbsp;&nbsp;&nbsp; 107&nbsp;&nbsp;&nbsp; 3106<br />Processing:&nbsp;&nbsp; 108&nbsp; 239 221.4&nbsp;&nbsp;&nbsp; 200&nbsp;&nbsp;&nbsp; 3539<br />Waiting:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 108&nbsp; 239 221.3&nbsp;&nbsp;&nbsp; 200&nbsp;&nbsp;&nbsp; 3539<br />Total:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 214&nbsp; 347 225.2&nbsp;&nbsp;&nbsp; 307&nbsp;&nbsp;&nbsp; 3646<br /><br />Percentage of the requests served within a certain time (ms)<br />&nbsp; 50%&nbsp;&nbsp;&nbsp; 307<br />&nbsp; 66%&nbsp;&nbsp;&nbsp; 356<br />&nbsp; 75%&nbsp;&nbsp;&nbsp; 392<br />&nbsp; 80%&nbsp;&nbsp;&nbsp; 419<br />&nbsp; 90%&nbsp;&nbsp;&nbsp; 482<br />&nbsp; 95%&nbsp;&nbsp;&nbsp; 530<br />&nbsp; 98%&nbsp;&nbsp;&nbsp; 602<br />&nbsp; 99%&nbsp;&nbsp;&nbsp; 664<br />&nbsp;100%&nbsp;&nbsp; 3646 (longest request)<br /><br />==<br />mongodbが2回ほど、open fileを振り切って、connectionエラー、 ulimitをマックスまであげるが同じ。<br />なので、monitを使って、can not open fileになったら、サーバーリスタートで対応。<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>mac os x 日本語入力切り換え</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/04/mac-os-x.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.105</id>

    <published>2010-04-01T07:19:07Z</published>
    <updated>2010-04-01T07:27:54Z</updated>

    <summary>mac 英語キーボード日本語変換</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="備忘録" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mac日本語変換" label="mac 日本語変換" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[
	<div class="title">KeyRemap4MacBook インストール<br />system pref -&gt; For Japanese -&gt; Remap Space Key -&gt; Shift+Space to KANNA/EISUU<br /><br />command+spaceでの変換になれていないので、だいぶ楽になった。<br /><br /><br /><br /></div> ]]>
        
    </content>
</entry>

<entry>
    <title>mongodb and tornado install on mac os x</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/03/mongodb-and-tornado-install-on-mac-os-x.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.104</id>

    <published>2010-03-27T07:19:45Z</published>
    <updated>2010-03-28T04:40:43Z</updated>

    <summary>tornado python mongodb install on mac os x</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="Git" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="mongodb" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="python" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="備忘録" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="tornadopythonmongodb" label="tornado python mongodb" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[xcode&nbsp; と&nbsp; mac port をインストール<br /><br />そして<br /><br /><tt>$ sudo port install boost pcre<br />$ </tt><tt>sudo port install spidermonkey<br /></tt><tt>$ sudo port mongo<br /><br /># ついでにpymongoも<br />$ sudo easy_install pymongo <br /></tt><br />参照: mongodb<br />http://www.mongodb.org/display/DOCS/Building+for+OS+X?showComments=true&amp;showCommentArea=true<br /><br />tornadoも同じ、(xcodeを入れてコンパイル環境を用意する)<br /><br />で、<br />$<code> sudo easy_install setuptools pycurl==7.16.2.1 simplejson</code><br />$ git cloan git://github.com/facebook/tornado.git<br />$ cd tornado<br />$ python setup.py build<code><br /></code>$ <code>sudo python setup.py install</code><br /><br />]]>
        
    </content>
</entry>

<entry>
    <title>mongodb:/etc/init.d/mongo script sample</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/03/mongodbetcinitdmongo-script-sample.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.103</id>

    <published>2010-03-26T04:17:01Z</published>
    <updated>2010-03-26T04:19:26Z</updated>

    <summary>mongodb 起動スクリプト</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="mongodb" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="mongodb" label="mongodb" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[mongodbのデーモン化シェルのサンプルです。<br /><br />==<br />#! /bin/sh<br /><br />### BEGIN INIT INFO<br /># Provides:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mongo<br /># Required-Start:&nbsp;&nbsp;&nbsp; $all<br /># Required-Stop:&nbsp;&nbsp;&nbsp;&nbsp; $all<br /># Default-Start:&nbsp;&nbsp;&nbsp;&nbsp; 2 3 4 5<br /># Default-Stop:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 1 6<br /># Short-Description: starts the mongodb server<br /># Description:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; starts mongo using start-stop-daemon<br />### END INIT INFO<br /><br />PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin<br />DAEMON=/usr/local/mongo/bin/mongod<br />NAME=mongo<br />DESC='mongodb server'<br /># ここは/etc/defalut/mongoでincludeしてもよいかも<br />DAEMON_OPTS='--dbpath /var/lib/mongo'<br /><br />test -x $DAEMON || exit 0<br /><br />set -e<br /><br />case "$1" in<br />&nbsp; start)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo -n "Starting $DESC: "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid --make-pidfile --background \<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --exec $DAEMON -- $DAEMON_OPTS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "$NAME."<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />&nbsp; stop)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo -n "Stopping $DESC: "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --exec $DAEMON<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "$NAME."<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />&nbsp; restart|force-reload)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo -n "Restarting $DESC: "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start-stop-daemon --stop --quiet --pidfile \<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/run/$NAME.pid --exec $DAEMON<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sleep 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start-stop-daemon --start --quiet --pidfile \<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "$NAME."<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />&nbsp; reload)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo -n "Reloading $DESC configuration: "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --exec $DAEMON<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "$NAME."<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />&nbsp; *)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; N=/etc/init.d/$NAME<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "Usage: $N {start|stop|restart|reload|force-reload}" &gt;&amp;2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />esac<br /><br />exit 0<br /><br /> ]]>
        
    </content>
</entry>

<entry>
    <title>スリランカコーヒー豆第2便</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/03/2.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.102</id>

    <published>2010-03-14T05:13:11Z</published>
    <updated>2010-03-14T05:14:00Z</updated>

    <summary>スリランカコーヒー豆お知らせ</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="COFFEE TIME" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="コーヒーお知らせ" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="スリランカコーヒー物語" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="スリランカ　コーヒー豆" label="スリランカ　コーヒー豆" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[<span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: 'ＭＳ Ｐゴシック'; font-size: medium; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; height: 90%; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); position: relative; color: rgb(51, 51, 51); font: normal normal normal 13px/normal arial, helvetica, hirakakupro-w3, osaka, 'ms pgothic', sans-serif; background-position: initial initial; background-repeat: initial initial; "><div>もうすぐスリランカコーヒー豆第2便が到着予定！</div><div>楽しみです。</div><div><br /></div></div></span> ]]>
        
    </content>
</entry>

<entry>
    <title>python-mobile-jp</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/03/python-mobile-jp.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.101</id>

    <published>2010-03-14T05:04:54Z</published>
    <updated>2010-03-14T05:24:21Z</updated>

    <summary>python mobile jp</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="python" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="python" label="python" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[python-mobile-jpをアップしました。<div>簡易バージョンでauのテストをしていませんが、</div><div>これから鍛えて行きます。</div><div><br /></div><div><a href="https://code.google.com/p/python-mobile-jp/">https://code.google.com/p/python-mobile-jp/</a></div><div><br /></div>]]>
        
    </content>
</entry>

<entry>
    <title>スパイスショップ</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/03/post-47.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.100</id>

    <published>2010-03-14T04:59:56Z</published>
    <updated>2010-03-14T05:02:38Z</updated>

    <summary>スパイスの紹介！</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="COFFEE TIME" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="コーヒーお知らせ" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="スパイス" label="スパイス" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[友人がスパイスショップをオープンしました！<div>品揃え豊富なスパイスショップです、是非立ち寄ってください！</div><div><br /></div><div><a href="http://www.spiceluck.jp/">スパイス　通販　販売　こちら！</a></div><div><br /></div><div>↑↑↑↑↑↑↑↑↑　です！</div>]]>
        
    </content>
</entry>

<entry>
    <title>スパイスを追加</title>
    <link rel="alternate" type="text/html" href="http://www.kiyota.info/blog/2010/02/post-46.html" />
    <id>tag:www.kiyota.info,2010:/blog//1.99</id>

    <published>2010-02-16T01:55:16Z</published>
    <updated>2010-02-16T01:56:21Z</updated>

    <summary>スパイスお知らせ</summary>
    <author>
        <name>jfk</name>
        <uri>http://www.kiyota.info/</uri>
    </author>
    
        <category term="COFFEE TIME" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="スパイス" label="スパイス" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.kiyota.info/blog/">
        <![CDATA[商品にスリランカ産スパイスを追加しました。<br /><br />やまの中をかけづりまわり見つけてきた逸品です！<br /><br />ぜひお求めください！<br /><br /><br /> ]]>
        
    </content>
</entry>

</feed>
