みろりHP


緑色さんの多目的ブログ
みろりえいちぴー(旧)
引っ越し先 みろりHP: https://www.mrrhp.com
| カテゴリ:- |
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | - |
| カテゴリ:感想文 |
伊坂幸太郎『ゴールデンスランバー』



これも床屋のおねーさんに薦められたので読んだ。サマリと感想を書く。



新首相がパレード中、爆弾を積んだラジコンヘリによって爆殺されてしまう。容疑者として上げられたのは青柳さんという好青年だ。彼は過去花火工場で働いてたことがあり、現場近くの定食屋でご飯食べてる姿も目撃されてるし、ラジコンを買っている姿も確認されており、痴漢をはたらいた容疑もある。見かけは好青年だけど、ヤーバイ人なんだねえとTVの前の人々は思った。
一方青柳さんは、唐突な容疑に戸惑っていた。いや花火工場で働いたけど工場長は自分らに絶対火薬に近づけなかったし、定食屋には行ったことないし、ラジコンは自分で買ったことないし、痴漢も冤罪だったよ! というわけだ。そう、彼は首相殺害の犯人として、国家とか警察とか、巨大な力によって仕立てあげられようとしていたのである。普通ではありえないほど暴力的な警察が大勢追ってくるし、おとなしく認めれば罪を軽くするよう補助してやると唆され、青柳さんはもう諦めちゃおうかと思う。が、昔からの友人たちはTVで報道される情報が明らかに自分たちの知っている青柳くんとは違うと確信し、彼の逃亡を影に日向に助けてやる。さらに逃亡中、殺人鬼や闇医者、元犯罪者たちも青柳さんを助けてくれる。彼らの助けを受け、青柳さんはからくも逃げ切り、顔を変えこれまでの生活を捨て、生き延びることになったのである。



先回感想文書いた『魔王』はそこそこだったけど、今回は結構好きだったな。『魔王』でも『ゴールデンスランバー』でも、登場人物たちのキャラ付けが過去を頻繁に挿入することで行われている。それって『魔王』のときは結構うっとうしかったのだよな。「……と彼はよく言ったものだった」が特に鬱陶しかった。けれど『ゴールデンスランバー』では散りばめられた過去がキャラ付けにとどまらず話の伏線になってて、最後にはざーっと回収されるのが快かった。七美ちゃんがスタンプ押してくれたところはぞわぞわっときちゃったぜ。ひえー。

しかし警察とマスコミにうんざりさせられる話だ。そのぶん青柳くんのお父さんのカッコよさが際立ってたなあ。「覚悟を持てよ」! 青柳くんを助けてあげた周囲の人たちの青柳くんへの信頼も見てて心地よかった。「たいへんよくできました」!!


| 緑色 | 感想文 | comments(0) |
| カテゴリ:プログラミング |
Python ダイスロール用SkypeBot0.3 CoCシステム対応



みろりHPのファイル置き場 - CocSkypeBot0.3

最近TRPG仲間が増えてよくセッションしており、自前のセッション補助ツールをちょこちょこ改良してる。今回は、以前作ったダイスロール用SkypeBotの改良版。


普通のダイスロールの他、成功失敗判定、キャラステ作成、ステータスごとの作成の機能をつけてみた。判定機能についてはみんな結構使ってくれてて満足してる。ちなみに help コマンド打てば使えるコマンドが表示されるよ。
使うにはconfファイルにみっつほど設定を書かないといけない。以下、設定について詳しめに書く。



dbPath
C:/Users/{PCのユーザ名}/AppData/Roaming/Skype/{skypeのユーザ名}
を書く。実際にそのフォルダがあることと、パスに使われてるのがバックスラッシュじゃなくてスラッシュなのを確認してください。
url
chromeでskype for webページ開いて、F12押す。Developer Toolsが開くから、Networkタブを開く。BOTを使いたいチャットで何か発言するとMessagesってのがふたつ出てくるからその下を選ぶ。(下画像参照)

そん中のRequest URLを書く。(下画像赤でくくったとこ)
token
Request URLのずーっと下を見るとRegistrationTokenってとこがあるから、そのクソ長いのをコピーして token のとこに貼り付ける。(下画像赤でくくったとこ)

dbPathはいいんだけど、urlとtokenは毎回変わるから毎回設定しないといけない。いつもセッションでBOT準備するとき、俺ちょっとモタモタしてんじゃん? それはこれを毎回やっているからなんだ勘弁してくれ。



なお改良の具体的な内容は以下。
  • DBに毎秒アクセスして監視してたのを、DBファイル自体の監視に切り替えてコンピュータさんの負担を減らした。
  • 前バージョンは一番新しい発言だけを監視していたので「誰かがコマンド打ったあとすぐ違う発言したらコマンドが実行されない」て問題があったがそれを解消。喋りまくってもコマンド打ちまくってもすべてに反応するようにした。
  • たまに原因不明でBOTが落ちることがあった(「BOTちゃん死んでる」)けど、例外処理することで解消した。
  • 前バージョンでは使用するチャットグループを変更するたびに部屋IDをconfに書く必要があって面倒だったが、書かなくても動くよう変更。
  • たとえば 1d3 1d2 で振ったとき [+3, +2] とダイスごとの結果も表示するようにした。


| 緑色 | プログラミング | comments(0) |
| カテゴリ:感想文 |
伊坂幸太郎『魔王』



床屋のおねーさんに薦められたので読んだ。サマリと感想を書く。



不景気で、他国にも毅然たる態度をとれずヘイコラしてばかりの日本。海外と政治家への反感はつのる一方だったが、期待の新星犬養さんが現れる。39歳という若さで、自信に溢れ、明確なスピーチをする、そして鋭い視線。彼のカリスマにやられちまった人々は熱狂し、それは大きなうねりとなっていた。
そんな流れに懸念を抱くサラリーマンの安藤くんがいた。彼はそういう、自分の頭で考えることなしに雰囲気にあてられ流行に飲み込まれる人々の姿とファシズムを重ねあわせ不安を抱く。現に犬養の発言が生み出した反アメリカ感情でマックが燃やされケンタッキーが焼かれ、安藤くんの友達のアメリカ人も家を焼かれてしまった。安藤くんの友達は、考え過ぎだよ世の中のみんなが引きずられるわけないじゃんというが、気付けばそいつ自身が犬養のファンになっていた。そんななか、安藤くんは流されることなく「でたらめでもいいから自分の考えを信じて対決していけば世界が変わる」と考えひとりで犬養に対決していく。具体的には、安藤くんはなんか、自分が念じた言葉を人に言わせることができる超能力をもっているので、それを利用して犬養の失脚を目指す。ただし安藤くんはその最中、超能力の副作用なのか、他の超能力者の攻撃なのか、脳溢血で死んでしまう。
兄の死の直後、安藤くんの弟潤也くんもまた超能力に目覚める。1/10までのくじならアタリを引けるという能力だ。彼はお兄ちゃんほど政治問題へ熱心なわけではないが、彼もまた、流されることなく自分の信じるものを信じ続けることのできる人間だった。「洪水が起きたとき水に流されないで立ち尽くす一本の木になりたい」人間だった。自分ひとりでも世界を変える、と彼は超能力でお金を貯めまくることにする。



孤高な人間の話だった。安藤くんみたいな人って孤高に見えるけど、別に「孤高になりたい」って思ってるわけじゃないんだよね。孤高っていうのは結果であって、結果は行動のあとにあるもんだ。別に「孤高でありたいなんて言ってる人は孤高になれませんよープププ」って言いたいわけじゃなくて、孤高になるなら「孤高」を目指すんじゃなくて「孤高であるための行動」を目指したほうが近道だと思うよってこと。それでその行動を示してくれたのが安藤くん兄弟だった。まあでも兄弟だけが犬養さんの大きな流れの中で立ち尽くす一本の木であったわけでもないよな、この小説では。犬養さんは何度か襲われてるし、実際安藤の兄ちゃんがやろうとしてたのもそれと同じだし。ふつーに拳銃とかで襲った人も実は安藤くんレベルに考察したうえでの行動だったかもしれないし、安藤兄ちゃんだって超能力がなければナイフを使ったかもしれないし。

しかし犬養さんがいかすよなあ。煽るだけの煽動者では全然ない。もちろん最初はファンを増やすために煽動者チックなことをするんだけど、一定の地盤を確保したあとはきちんと、「私を信じるな。私はこの道を信じるし歩むが、きみらは自分の頭で考え、その結果信じられないと思えば別の道をゆけばよい」みたいなこと言うし。それって俺が思うに教育の場でも完璧なやりかたで、最初はちょっと内容が間違っていようとわかり易さを優先すべきなんだよ。そしてそのあとで、ずれてる部分を是正していけばいい。安藤くんは一番最初の煽動者チックな部分をみて「これはやばいぞ」と思ったわけだよな。

もちろん「犬養さんは間違ってなかった。安藤くんざまあ」っていうんじゃなくて、そのときどきで、自分の考えに従って動くということ自体がこの話の核なんだと思う。ていうか犬養さんも安藤くんみたいなタイプが一番好きだと思う。



ところでこの小説に限らずいろんな場面で「自分の頭で考えて行動する」ってのは出てくるけどさ。自分の頭で考えてない奴なんていないと思うよ俺は。流行に乗る人も、「みんながやってることに乗ったほうが私がキモチイイ」って思って乗ってるわけだろ? あるいは「仲間はずれにされるのは得策ではない」とか思ってるわけだろ。その流行に乗ることで何が起こるのか、その流行がどう起こされたものなのか、みたいなところまで述べられないと自分の頭で考えたことにならないってのはちょっと厳しすぎると思うね。彼らは自分の頭で考えてないんじゃなくて、そこまでは考えないだけだ。だからといって考えてる奴より考えてない奴のほうが頭が悪いってことにもならない。人はそれぞれ、目指すところが違うんだ。「考えることが必要なもの」を目指してる奴は考えるし、「考えることが必要ではないもの」を目指してる奴は考えない。それだけのことだと思う。


| 緑色 | 感想文 | comments(0) |
| カテゴリ:プログラミング |
Python SkypeBot最小構成版



俺が思いついたSkypeBotのシステムを紹介してみる。いやすでにダイスロール用BOTとか公開してるんだけど、SkypeBotとして最小限のものだけシンプルに組んでみた。エラー処理とか全然してないし、とにかくBotとしての最小構成システムとするのが目的。



これ設計書。


こんな風になる。


これコード。180行くらい。解説みたいなもんは下に。
# coding: utf-8

'''
最小構成のSkypeBotセット。
WatchDogクラスがSkypeのDBを監視して更新があったらSimpleSkypeBotを呼び出す。
SimpleSkypeBotクラスは発言の内容を調べて対応した内容をSkypeへ送る。
'''
author = 'Midoriiro<http://guild-elf.jugem.jp/>'date = '2016.09.07.'

import sqlite3
import requests
import sys
import random
import time
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer

# ==============================
# 設定
# ==============================

# keyを含む発言に反応しvalueを返す。
conf_pattern = {
    'how are you': 'BOT: so fine.',
    'who are you': 'BOT: i am bot.',
    'hello'      : 'BOT: hi.',
    'bye'        : 'BOT: take care.',
}

# skype for windowsのDBがあるディレクトリのパス
conf_dbDirPath = 'C:/Users/{ユーザ名}/AppData/Roaming/Skype/{垢名}'

# skype for web httpの送信先。httpヘッダを調べて書いてね。
conf_url = '後述'

# http用のトークン。httpヘッダを同上。
conf_token = '後述'

# ==============================
# 設定ここまで
# ==============================

# session
session = requests.session()
session.post(conf_url)
# BOT起動時のタイムスタンプ
startTimestamp = round(time.time())
# 反応済みIDが入るリスト
doneIdList = []
# skype for webへ送るリクエストヘッダ。
headers = {
    'Accept'            :'application/json, text/javascript',
    'Accept-Encoding'   :'gzip, deflate',
    'Accept-Language'   :'ja,en-US;q=0.8,en;q=0.6',
    'BehaviorOverride'  :'redirectAs404',
    'Cache-Control'     :'no-cache, no-store, must-revalidate',
    'ClientInfo'        :('os=Windows; osVer=7; proc=Win32; lcid=en-us;'
            + ' deviceType=1; country=n/a; clientName=skype.com;'
            + ' clientVer=908/1.42.0.98//skype.com'),
    'Connection'        :'keep-alive',
    'ContextId'         :'tcid=146372019467711519',
    'Content-Type'      :'application/json',
    'Expires'           :'0',
    'Host'              :'client-s.gateway.messenger.live.com',
    'Origin'            :'https://web.skype.com',
    'Pragma'            :'no-cache',
    'Referer'           :'https://web.skype.com/ja/',
    'User-Agent'        :('Mozilla/5.0 (Windows NT 6.1)'
            + ' AppleWebKit/537.36 (KHTML, like Gecko)'
            + ' Chrome/50.0.2661.102 Safari/537.36'),
    'RegistrationToken' :conf_token,
}

class SimpleSkypeBot:
    '''main.dbから発言の内容を取得し、対応する内容をSkypeへ送る。'''

    def main(self):
        '''トップレベルメソッド。'''
        # たまにsqlite3.OperationalError: disk I/O errorが出るので
        # そんときは処理をやり直すためのtry,except。たぶん邪道。
        while True:
            try:
                recordList = self.selectRecordList()
                break
            except sqlite3.OperationalError:
                print('sqlite3.OperationalErrorが出たヨ。')
                continue
        if not recordList:
            return False
        for record in recordList:
            # 発言の内容によって返答を作る。
            reply = self.getReply(record['body_xml'])
            if not reply:
                return
            # 反応済みリストにidを追加する。
            doneIdList.append(record['id'])
            # 返答をスカイプへ送信する。
            self.sendSkype(reply)
        return

    def selectRecordList(self):
        '''main.dbからレコードを取得する。'''
        # connectionをグローバルで作るとマルチスレッドエラーになっちゃうのでここで作る。
        connection = sqlite3.connect(conf_dbDirPath + '/main.db')
        cursor = connection.cursor()
        # SQLの「body_xmlにconf_patternの内容を含む」部分を作る。
        # AND (1=0 OR `body_xml` LIKE '%key%' OR `body_xml` LIKE '%key%')
        # こんな感じの。
        likePart = ''
        if conf_pattern:
            likePart = 'AND (1=0 '
            for key in conf_pattern:
                likePart += 'OR `body_xml` LIKE ¥'%%%s%%¥' ' % key
            likePart = likePart + ')'
        # SQLの「反応済みリストのIDを除く」部分を作る。AND `id` NOT IN (**,**)
        # こんな感じの。
        idPart = ''
        if doneIdList:
            idPart = 'AND `id` NOT IN ('
            for doneId in doneIdList:
                idPart += str(doneId) + ','
            idPart = idPart[0:-1] + ')'
        # 発言を取得するSQL。
        # 「BOT起動時のタイムスタンプ後」「body_xmlにconf_patternの内容を含む」
        # 「反応済みリストのIDを除く」というSQL。
        sql = ('SELECT id,body_xml FROM `Messages` '
            + 'WHERE `timestamp`>? %s %s' % (likePart, idPart))
        bind = (startTimestamp,)
        # 取得する。
        cursor.execute(sql, bind)
        trash = cursor.fetchall()
        # コネクション閉じる。
        connection.close()
        # 成形して返す。
        if not trash:
            return False
        else:
            return self.assoc(trash, ['id', 'body_xml'])

    def assoc(self, trash, columns):
        '''いつものsqlite3モジュール補助。
        [[1,A][2,B]]ってなってるのを{{id:1,name:A},{id:2,name:B}}ってディクショナリに。'''
        rows = []
        for i in range(len(trash)):
            rows.append({})
            for j in range(len(trash[i])):
                rows[i][columns[j]] = trash[i][j]
        return rows

    def getReply(self, body_xml):
        '''body_xmlの内容に従って返答を返す。'''
        for key,value in conf_pattern.items():
            if key in body_xml:
                return value
        return False

    def sendSkype(self, reply):
        '''skype for webに送信する。'''
        postjson = ('{' +
            'content        : "%s",' % reply +
            'clientmessageid: "%s",' % random.randint(1000000000000,
                9999999999999) +
            'messagetype    : "RichText",' +
            'contenttype    : "text",' +
        '}')
        session.post(conf_url, data=postjson, headers=headers)
        return True

class WatchDog(FileSystemEventHandler):
    '''ファイルの変更を感知したらSkypeBotオブジェクトのmainメソッドを走らせる。'''
    def on_modified(self, events):
        '''ファイルに変更(スカイプに発言)があったらSkypeBotオブジェクトの動作開始。'''
        if events.src_path.endswith('main.db'):
            bot.main()
            return

if __name__ in '__main__':
    bot = SimpleSkypeBot()
    dog = WatchDog()
    observer = Observer()
    observer.schedule(dog, conf_dbDirPath, recursive=True)
    observer.start()
    observer.join()

conf_urlに書くもの
skype for webでメッセージ送ったときのhttpリクエストURL。
conf_tokenに書くもの
skype for webでメッセージ送ったときのhttpリクエストヘッダの中にあるRegistrationTokenの値。'registrationToken=なんちゃらなんちゃら'ってやつ。めっちゃ長い。
requestsモジュールが必要
Python34/Scriptsで
pip install requests
watchdogモジュールが必要
Python34/Scriptsで
pip install watchdog
問題点1: BOTの発言に日本語を含めることができない
文字コードエラーによるもの。半角英数字は送れるので十分と判断し放置してる。
問題点2: sqlite3にアクセスする際たまにdisk I/Oエラーが出る
原因全然わかんない。お手上げ。(俺の見た目には)同じ条件で出たり出なかったりする。再現できないのでどうにもこうにもならない。勘弁して。苦肉の策で、その部分を無限ループにし、データ取得に成功したら抜け、エラーが出る限りずっとアクセスさせる、っつー情けない方法を採用してる。

今回は最低限の機能ってことで、ある文字列を含む発言がきたらそれに対応する応答を返す、ってだけの機能だけど、複雑なことしたかったらgetReplyメソッドの中にいろいろごちゃごちゃ書いてゆけばよい。冒頭のダイスロール用SkypeBotでもそうしている。



いつものコトだけど素人のやることだから多分バリ邪道だろう。デスクトップアプリのDBからログとってインターネットアプリにヘッダ偽造したhttpリクエスト飛ばすとか…。でも思いついたときはテンションだだ上がりで書くのも楽しめた。ぶっちゃけwatchdogモジュールはこんなスクリプトに使うのは宝の持ち腐れって感じだ。osモジュールとかでファイルの更新日時を1秒ごとくらいに取得すればいいんだし。でもまあ使ったことないモジュールだったし、watchdogって名前がなんか良くて使いたかった(犬派)。むしろこのモジュールのせいでマルチスレッドエラーとかで詰まりまくったとこあるけどな!(selectRecordListメソッドあたり参照)


| 緑色 | プログラミング | comments(0) |
| カテゴリ:感想文 |
村上春樹『色彩を持たない多崎つくると、彼の巡礼の年』



名古屋の話らしかったから読んだ。サマリと感想を書く。



高校時代ボランティア活動を通して知り合った5人、アカくんアオくんクロちゃんシロちゃんそして多崎つくるくん。彼らはめちゃめちゃ仲良くなって、親密なグループであり続けた。が、つくるくんが大学進学のため地元を出て行って数年、突如4人から絶交を言い渡される。彼がその理由を問いただすことはなく、以来その連中とは一度も会うことはなかった。
ひとりぼっちになったつくるくんだったけれど、後輩の友達ができた。結構気があってとっても仲良くなったが、あるとき前ぶれなく彼は消えてしまう。それは4人からの絶交を想起させたが、つくるくんは、自分はそういう運命なのかもしれないと受け入れる所存であった。
社会人になったつくるくんには沙羅さんという彼女ができた。彼女に過去の話をすると、その出来事を未解決にしとくのはゼッテー禍根を残すからちゃんと会ってきいたほうがいいよと言われてしまう。そういうことならとつくるくんは4人に会いに行くこととなる。
残念ながらシロちゃんは誰かに殺されて亡くなっていたので、アオくん、アカくん、クロちゃんを順番に訪問することで、彼は過去のことについて知ることとなった。実はシロちゃんが、自分がつくるくんにレイプされたと訴えたため、みんなはつくるくんを切ることにしたのだという。みんなはほとんど信じていなかったが、シロちゃんもまた大事な仲間であり、訴えが真に迫っていたのでそうしないわけにはいかなかったのだというわけだ。話の中で、つくるくんは、連中がいろんな想いを抱えてグループの生活を送っていたことを知る。彼はいつもグループの調和を考え、個人的な感情を抑えてきたのだが、彼らの負っている傷と自分の傷を詳らかにして初めて彼はすべてを受け入れられた気がした。そして気付いたのだ、人の心と人の心は調和だけでなく、むしろ傷と傷によって深く結びついているのだと。



いやー楽しめた。クロちゃんがいいよね、「心を開くことがいつもいちばん良い結果をもたらす。」の台詞とかドキーっとする。俺はそういう台詞に弱いんだよなあ。それに二人称がいい。「君」っていうのは俺が一番好きな二人称なんだ。以下にこまごまと感想を。

つくるくんについて。
この話は、調和のために変動とかトラブルから目をそらしつづけてきたつくるくんが、きっちり向き合うパーソナリティを得る過程を描いたものだろう。目をそらしつづけてることが、沙羅さんの言った禍根だったんじゃないかな。振り返ってみるとマジでその通りで、男衆はともかく、クロちゃんやシロちゃんの気持ちにガン無視をキメていたことで起こったようなものだろう? 絶交事件って。後輩の友達である灰田くんがどっかいっちゃったのも、彼の気持ちに向き合わなかったのが原因だし。まあでも仕方ないよね、そういうのって自覚してるような習性じゃないから。調和が乱されそうなときは、調和を保つよう動く、っていうプログラムが無意識で働いちゃってる状態だったのだろう。沙羅さんに会えてよかったね。いやまあ沙羅さんも沙羅さんでゼッテー親切100%で忠告したわけじゃないと思うけど。

シロちゃんについて。
どうしてコイツがつくるくんにレイプされたと嘘こいたかっていうと、まあその、恨みじゃないかなーと思う。彼女には件のグループがとっても必要だったのに、つくるくんがそれを壊したから、その恨みだ。もともとレイプはされてたんじゃないかなーって思う。だから性的なことに嫌悪感をもっていたのでは。その相手は名古屋にいて、グループがあったころ(5人がいつも一緒にいたころ)はその被害もなかったんだけど、つくるくんが東京に出たあと再開されちゃったんじゃねーのかな。ゆえに、誰もが不自然に思った浜松への引っ越しを決めたんじゃね? まあ追っかけられて殺されちゃったようだけど。

沙羅さんについて。
たぶん黒幕。この人おそらく事情全部しってるんじゃねえ…。シロちゃんのレイプ犯とか殺人犯とかもしってるんじゃない。つくるくんを誘導したのは、彼のパーソナリティを改善してこれから先うまくやっていくためか、あるいは沙羅さんはシロちゃんの友達か身内で、テメーつくるくん原因のひとつなのにのうのうと生きやがって、という動機からのささやかな復讐か何かか?

相変わらず文章が平易で清潔で整頓されてて気分が非常に良くなった。あとねえ、「名古屋」「今はもうなくなってしまった親密なグループ」っていうのは共感できる要素で、二倍楽しめたと思う。


| 緑色 | 感想文 | comments(0) |
    123
45678910
11121314151617
18192021222324
252627282930 
<< September 2016 >>
+ みろりHP内検索
+ 閲覧記事
+ 過去記事アーカイブ
+ 年月選択
  • 2019年 02月 (1)
  • 2019年 01月 (2)
  • 2018年 12月 (6)
  • 2018年 11月 (6)
  • 2018年 10月 (3)
  • 2018年 09月 (8)
  • 2018年 08月 (4)
  • 2018年 07月 (6)
  • 2018年 06月 (5)
  • 2018年 05月 (4)
  • 2018年 04月 (7)
  • 2018年 03月 (6)
  • 2018年 02月 (6)
  • 2018年 01月 (8)
  • 2017年 12月 (9)
  • 2017年 11月 (9)
  • 2017年 10月 (4)
  • 2017年 09月 (6)
  • 2017年 08月 (6)
  • 2017年 07月 (8)
  • 2017年 06月 (4)
  • 2017年 05月 (7)
  • 2017年 04月 (8)
  • 2017年 03月 (7)
  • 2017年 02月 (10)
  • 2017年 01月 (6)
  • 2016年 12月 (8)
  • 2016年 11月 (8)
  • 2016年 10月 (5)
  • 2016年 09月 (5)
  • 2016年 08月 (7)
  • 2016年 07月 (9)
  • 2016年 06月 (6)
  • 2016年 05月 (8)
  • 2016年 04月 (10)
  • 2016年 03月 (10)
  • 2016年 02月 (8)
  • 2016年 01月 (10)
  • 2015年 12月 (9)
  • 2015年 11月 (6)
  • 2015年 10月 (5)
  • 2015年 09月 (4)
  • 2015年 08月 (8)
  • 2015年 07月 (5)
  • 2015年 06月 (3)
  • 2015年 05月 (7)
  • 2015年 04月 (8)
  • 2015年 03月 (12)
  • 2015年 02月 (8)
  • 2015年 01月 (4)
  • 2014年 12月 (5)
  • 2014年 11月 (5)
  • 2014年 10月 (7)
  • 2014年 09月 (4)
  • 2014年 08月 (7)
  • 2014年 07月 (6)
  • 2014年 06月 (4)
  • 2014年 05月 (12)
  • 2014年 04月 (9)
  • 2014年 03月 (6)
  • 2014年 02月 (6)
  • 2014年 01月 (8)
  • 2013年 12月 (7)
  • 2013年 11月 (10)
  • 2013年 10月 (10)
  • 2013年 09月 (9)
  • 2013年 08月 (11)
  • 2013年 07月 (10)
  • 2013年 06月 (9)
  • 2013年 05月 (15)
  • 2013年 04月 (11)
  • 2013年 03月 (5)
  • 2013年 02月 (7)
  • 2013年 01月 (6)
  • 2012年 12月 (9)
  • 2012年 11月 (10)
  • 2012年 10月 (10)
  • 2012年 09月 (4)
  • 2012年 08月 (2)
  • 2012年 07月 (7)
  • 2012年 06月 (13)
  • 2012年 05月 (13)
  • 2012年 04月 (15)
  • 2012年 03月 (4)
  • 2012年 02月 (12)
  • 2012年 01月 (9)
  • 2011年 12月 (5)
  • 2011年 11月 (13)
  • 2011年 10月 (2)
  • 2011年 09月 (2)
  • 2011年 08月 (1)
  • 2011年 06月 (1)
  • 2011年 05月 (4)
  • 2011年 04月 (10)
  • 2011年 03月 (8)
  • 2011年 02月 (11)
  • 2011年 01月 (14)
  • 2010年 12月 (14)
  • 2010年 11月 (17)
  • 2010年 10月 (17)
  • 2010年 09月 (19)
  • 2010年 08月 (22)
  • 2010年 07月 (18)
  • 2010年 06月 (16)
  • 2010年 05月 (19)
  • 2010年 04月 (15)
  • 2010年 03月 (22)
  • 2010年 02月 (18)
  • 2010年 01月 (18)
  • 2009年 06月 (2)
  • 2007年 12月 (10)
  • 2007年 11月 (7)
  • 2007年 10月 (9)
  • 2007年 09月 (4)
  • 2007年 07月 (5)
  • 2007年 06月 (11)
  • 2007年 05月 (6)
  • 2007年 04月 (4)
  • 2007年 03月 (1)
  • 2006年 01月 (21)
  • + カテゴリ
    + ブックマーク
    + 最近のコメント
    + アクセスカウンター
    全体(since 2010.02.03.)
    今日… 昨日…