haiju's 開発メモ

開発に必要な情報を自分用にメモ

daabでログイン、実行、ログアウト

前回の記事でdaab initに成功したので、ターミナルから

directの既存の自分のユーザアカウントでログインして、

実行、ログアウトまでできるのか確認する(ΦωΦ)

[手順]

1. 既存の自分のアカウントでログイン。

$ daab login
[2018-04-18 15:15:40] WebSocket opened. --- 成功すると開く
Email: user@example.com  --- 自分のアカウントのメールを設定
Password:                            ---- 自分のアカウントのパスワードを設定
logged in.

2. botサーバ(多分)?を起動して実行。

$ daab run
npm WARN deprecated coffee-script@1.6.3: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
npm WARN deprecated connect@2.30.2: connect 2.x series is deprecated

> websocket@1.0.23 install /home/username/mybot/node_modules/websocket
> (node-gyp rebuild 2> builderror.log) || (exit 0)

make: ディレクトリ `/home/username/mybot/node_modules/websocket/build' に入ります
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
make: ディレクトリ `/home/username/mybot/node_modules/websocket/build' から出ます
starter@0.3.6 /home/username/mybot
├─┬ lisb-forever@0.15.3
│ ├─┬ cliff@0.1.10
│ │ ├── colors@1.0.3
│ │ └── eyes@0.1.8
│ ├── clone@1.0.4
│ ├── colors@0.6.2
│ ├─┬ flatiron@0.4.3
│ │ ├─┬ broadway@0.3.6
│ │ │ ├── cliff@0.1.9
│ │ │ └── winston@0.8.0
│ │ ├── director@1.2.7
│ │ ├── optimist@0.6.0
│ │ └─┬ prompt@0.2.14
│ │ ├─┬ read@1.0.7
│ │ │ └── mute-stream@0.0.7
│ │ └── revalidator@0.1.8
│ ├─┬ forever-monitor@1.7.1
│ │ ├─┬ chokidar@1.7.0
│ │ │ ├─┬ anymatch@1.3.2
│ │ │ │ ├─┬ micromatch@2.3.11
│ │ │ │ │ ├─┬ arr-diff@2.0.0
│ │ │ │ │ │ └── arr-flatten@1.1.0
│ │ │ │ │ ├── array-unique@0.2.1
│ │ │ │ │ ├─┬ braces@1.8.5
│ │ │ │ │ │ ├─┬ expand-range@1.8.2
│ │ │ │ │ │ │ └─┬ fill-range@2.2.3
│ │ │ │ │ │ │ ├── is-number@2.1.0
│ │ │ │ │ │ │ ├── isobject@2.1.0
│ │ │ │ │ │ │ ├─┬ randomatic@1.1.7
│ │ │ │ │ │ │ │ ├─┬ is-number@3.0.0
│ │ │ │ │ │ │ │ │ └── kind-of@3.2.2
│ │ │ │ │ │ │ │ └── kind-of@4.0.0
│ │ │ │ │ │ │ └── repeat-string@1.6.1
│ │ │ │ │ │ ├── preserve@0.2.0
│ │ │ │ │ │ └── repeat-element@1.1.2
│ │ │ │ │ ├─┬ expand-brackets@0.1.5
│ │ │ │ │ │ └── is-posix-bracket@0.1.1
│ │ │ │ │ ├── extglob@0.3.2
│ │ │ │ │ ├── filename-regex@2.0.1
│ │ │ │ │ ├─┬ kind-of@3.2.2
│ │ │ │ │ │ └── is-buffer@1.1.6
│ │ │ │ │ ├─┬ object.omit@2.0.1
│ │ │ │ │ │ ├─┬ for-own@0.1.5
│ │ │ │ │ │ │ └── for-in@1.0.2
│ │ │ │ │ │ └── is-extendable@0.1.1
│ │ │ │ │ ├─┬ parse-glob@3.0.4
│ │ │ │ │ │ ├── glob-base@0.3.0
│ │ │ │ │ │ └── is-dotfile@1.0.3
│ │ │ │ │ └─┬ regex-cache@0.4.4
│ │ │ │ │ └─┬ is-equal-shallow@0.1.3
│ │ │ │ │ └── is-primitive@2.0.0
│ │ │ │ └─┬ normalize-path@2.1.1
│ │ │ │ └── remove-trailing-separator@1.1.0
│ │ │ ├── async-each@1.0.1
│ │ │ ├── glob-parent@2.0.0
│ │ │ ├── inherits@2.0.3
│ │ │ ├─┬ is-binary-path@1.0.1
│ │ │ │ └── binary-extensions@1.11.0
│ │ │ ├─┬ is-glob@2.0.1
│ │ │ │ └── is-extglob@1.0.0
│ │ │ └─┬ readdirp@2.1.0
│ │ │ ├── graceful-fs@4.1.11
│ │ │ ├─┬ readable-stream@2.3.6
│ │ │ │ ├── isarray@1.0.0
│ │ │ │ ├── process-nextick-args@2.0.0
│ │ │ │ ├── safe-buffer@5.1.1
│ │ │ │ ├── string_decoder@1.1.1
│ │ │ │ └── util-deprecate@1.0.2
│ │ │ └── set-immediate-shim@1.0.1
│ │ ├─┬ minimatch@3.0.4
│ │ │ └─┬ brace-expansion@1.1.11
│ │ │ ├── balanced-match@1.0.0
│ │ │ └── concat-map@0.0.1
│ │ └─┬ ps-tree@0.0.3
│ │ └─┬ event-stream@0.5.3
│ │ └── optimist@0.2.8
│ ├─┬ nconf@0.6.9
│ │ ├── async@0.2.9
│ │ ├── ini@1.3.5
│ │ └── optimist@0.6.0
│ ├─┬ nssocket@0.5.3
│ │ ├── eventemitter2@0.4.14
│ │ └── lazy@1.0.11
│ ├── object-assign@3.0.0
│ ├─┬ optimist@0.6.1
│ │ ├── minimist@0.0.10
│ │ └── wordwrap@0.0.3
│ ├── path-is-absolute@1.0.1
│ ├─┬ prettyjson@1.2.1
│ │ ├── colors@1.2.1
│ │ └── minimist@1.2.0
│ ├─┬ shush@1.0.0
│ │ ├─┬ caller@0.0.1
│ │ │ └─┬ tape@2.3.3
│ │ │ ├── deep-equal@0.1.2
│ │ │ ├── defined@0.0.0
│ │ │ ├── jsonify@0.0.0
│ │ │ ├── resumer@0.0.0
│ │ │ └── through@2.3.8
│ │ └── strip-json-comments@0.1.3
│ ├── timespan@2.3.0
│ ├─┬ utile@0.2.1
│ │ ├── deep-equal@1.0.1
│ │ ├── i@0.3.6
│ │ ├─┬ mkdirp@0.5.1
│ │ │ └── minimist@0.0.8
│ │ ├── ncp@0.4.2
│ │ └─┬ rimraf@2.6.2
│ │ └─┬ glob@7.1.2
│ │ ├── fs.realpath@1.0.0
│ │ ├─┬ inflight@1.0.6
│ │ │ └── wrappy@1.0.2
│ │ └── once@1.4.0
│ └─┬ winston@0.8.3
│ ├── cycle@1.0.3
│ ├── isstream@0.1.2
│ ├── pkginfo@0.3.1
│ └── stack-trace@0.0.10
├─┬ lisb-hubot@2.19.2
│ ├── async@0.2.10
│ ├─┬ chalk@1.1.3
│ │ ├── ansi-styles@2.2.1
│ │ ├── escape-string-regexp@1.0.5
│ │ ├─┬ has-ansi@2.0.0
│ │ │ └── ansi-regex@2.1.1
│ │ ├── strip-ansi@3.0.1
│ │ └── supports-color@2.0.0
│ ├── cline@0.8.2
│ ├── coffee-script@1.6.3
│ ├─┬ connect-multiparty@1.2.5
│ │ ├─┬ multiparty@3.3.2
│ │ │ ├─┬ readable-stream@1.1.14
│ │ │ │ ├── core-util-is@1.0.2
│ │ │ │ ├── isarray@0.0.1
│ │ │ │ └── string_decoder@0.10.31
│ │ │ └─┬ stream-counter@0.2.0
│ │ │ └─┬ readable-stream@1.1.14
│ │ │ ├── isarray@0.0.1
│ │ │ └── string_decoder@0.10.31
│ │ ├─┬ on-finished@2.1.1
│ │ │ └── ee-first@1.1.0
│ │ ├── qs@2.2.5
│ │ └─┬ type-is@1.5.7
│ │ ├── media-typer@0.3.0
│ │ └─┬ mime-types@2.0.14
│ │ └── mime-db@1.12.0
│ ├─┬ express@3.21.2
│ │ ├── basic-auth@1.0.4
│ │ ├── commander@2.6.0
│ │ ├─┬ connect@2.30.2
│ │ │ ├── basic-auth-connect@1.0.0
│ │ │ ├─┬ body-parser@1.13.3
│ │ │ │ ├── iconv-lite@0.4.11
│ │ │ │ ├─┬ on-finished@2.3.0
│ │ │ │ │ └── ee-first@1.1.1
│ │ │ │ ├── qs@4.0.0
│ │ │ │ ├─┬ raw-body@2.1.7
│ │ │ │ │ ├── bytes@2.4.0
│ │ │ │ │ └── iconv-lite@0.4.13
│ │ │ │ └─┬ type-is@1.6.16
│ │ │ │ └─┬ mime-types@2.1.18
│ │ │ │ └── mime-db@1.33.0
│ │ │ ├── bytes@2.1.0
│ │ │ ├─┬ compression@1.5.2
│ │ │ │ ├─┬ accepts@1.2.13
│ │ │ │ │ ├─┬ mime-types@2.1.18
│ │ │ │ │ │ └── mime-db@1.33.0
│ │ │ │ │ └── negotiator@0.5.3
│ │ │ │ └─┬ compressible@2.0.13
│ │ │ │ └── mime-db@1.33.0
│ │ │ ├── connect-timeout@1.6.2
│ │ │ ├── cookie-parser@1.3.5
│ │ │ ├─┬ csurf@1.8.3
│ │ │ │ └─┬ csrf@3.0.6
│ │ │ │ ├── rndm@1.2.0
│ │ │ │ ├── tsscmp@1.0.5
│ │ │ │ └─┬ uid-safe@2.1.4
│ │ │ │ └── random-bytes@1.0.0
│ │ │ ├─┬ errorhandler@1.4.3
│ │ │ │ ├─┬ accepts@1.3.5
│ │ │ │ │ ├─┬ mime-types@2.1.18
│ │ │ │ │ │ └── mime-db@1.33.0
│ │ │ │ │ └── negotiator@0.6.1
│ │ │ │ └── escape-html@1.0.3
│ │ │ ├─┬ express-session@1.11.3
│ │ │ │ ├── crc@3.3.0
│ │ │ │ └─┬ uid-safe@2.0.0
│ │ │ │ └── base64-url@1.2.1
│ │ │ ├─┬ finalhandler@0.4.0
│ │ │ │ ├─┬ on-finished@2.3.0
│ │ │ │ │ └── ee-first@1.1.1
│ │ │ │ └── unpipe@1.0.0
│ │ │ ├─┬ http-errors@1.3.1
│ │ │ │ └── statuses@1.5.0
│ │ │ ├─┬ method-override@2.3.10
│ │ │ │ ├─┬ debug@2.6.9
│ │ │ │ │ └── ms@2.0.0
│ │ │ │ └── vary@1.1.2
│ │ │ ├─┬ morgan@1.6.1
│ │ │ │ └─┬ on-finished@2.3.0
│ │ │ │ └── ee-first@1.1.1
│ │ │ ├── on-headers@1.0.1
│ │ │ ├── pause@0.1.0
│ │ │ ├── qs@4.0.0
│ │ │ ├─┬ response-time@2.3.2
│ │ │ │ └── depd@1.1.2
│ │ │ ├─┬ serve-favicon@2.3.2
│ │ │ │ └── ms@0.7.2
│ │ │ ├─┬ serve-index@1.7.3
│ │ │ │ ├── batch@0.5.3
│ │ │ │ ├── escape-html@1.0.3
│ │ │ │ └─┬ mime-types@2.1.18
│ │ │ │ └── mime-db@1.33.0
│ │ │ ├─┬ serve-static@1.10.3
│ │ │ │ ├── escape-html@1.0.3
│ │ │ │ └─┬ send@0.13.2
│ │ │ │ ├── depd@1.1.2
│ │ │ │ ├── destroy@1.0.4
│ │ │ │ ├─┬ on-finished@2.3.0
│ │ │ │ │ └── ee-first@1.1.1
│ │ │ │ └── statuses@1.2.1
│ │ │ ├─┬ type-is@1.6.16
│ │ │ │ └─┬ mime-types@2.1.18
│ │ │ │ └── mime-db@1.33.0
│ │ │ └── vhost@3.0.2
│ │ ├── content-disposition@0.5.0
│ │ ├── content-type@1.0.4
│ │ ├── cookie@0.1.3
│ │ ├── cookie-signature@1.0.6
│ │ ├─┬ debug@2.2.0
│ │ │ └── ms@0.7.1
│ │ ├── depd@1.0.1
│ │ ├── escape-html@1.0.2
│ │ ├── etag@1.7.0
│ │ ├── fresh@0.3.0
│ │ ├── merge-descriptors@1.0.0
│ │ ├── methods@1.1.2
│ │ ├── parseurl@1.3.2
│ │ ├─┬ proxy-addr@1.0.10
│ │ │ ├── forwarded@0.1.2
│ │ │ └── ipaddr.js@1.0.5
│ │ ├── range-parser@1.0.3
│ │ ├─┬ send@0.13.0
│ │ │ ├── destroy@1.0.3
│ │ │ ├── mime@1.3.4
│ │ │ ├─┬ on-finished@2.3.0
│ │ │ │ └── ee-first@1.1.1
│ │ │ └── statuses@1.2.1
│ │ ├── utils-merge@1.0.0
│ │ └── vary@1.0.1
│ ├─┬ hubot-direct@0.1.4
│ │ └─┬ direct-js@0.1.31
│ │ ├─┬ node-localstorage@1.3.0
│ │ │ └─┬ write-file-atomic@1.3.4
│ │ │ ├── imurmurhash@0.1.4
│ │ │ └── slide@1.1.6
│ │ ├── tunnel-agent@0.4.3
│ │ ├── unorm@1.4.1
│ │ └─┬ websocket@1.0.23
│ │ ├── nan@2.10.0
│ │ ├─┬ typedarray-to-buffer@3.1.5
│ │ │ └── is-typedarray@1.0.0
│ │ └── yaeti@0.0.4
│ ├── log@1.4.0
│ ├── optparse@1.0.4
│ └── scoped-http-client@0.11.0
└─┬ lisb-hubot-redis-brain@0.0.3
└── redis@0.8.4

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
[2018-04-18 15:19:08] WebSocket opened.
[Wed Apr 18 2018 15:19:09 GMT+0900 (JST)] INFO hubot-redis-brain: Discovered redis from REDIS_URL environment variable

※エラーが出なければnpmがいろいろインストールしてくれる。

3. Ctrl + c で2を停止して、ログアウト。

$ Ctrl + c

$ daab logout
logged out.

[参考サイト]

qiita.com

改めてdaab initを実行したら、githubにSSL connect error と言われて弾かれた

これはCentOS6.x系のcurl関連パッケージが古いために発生する

エラーらしい(ΦωΦ)

bot作成への道のりは遠いなー。

[エラー状況]

daab initを改めて実行したら下記エラー。

$ daab init
fatal: unable to access 'https://github.com/lisb/daab-starter.git/': SSL connect error
daab initialized.

[手順]

1. CentOS6.5のnss,curl,libcurlの各パッケージをアップグレード。

# yum update -y nss curl libcurl

2. 改めて、bot用のディレクトリを作成して、daab init 実行。

$ mkdir mybot && cd $_

$ daab init
Initialized empty Git repository in /home/username/mybot/.git/
remote: Counting objects: 284, done.
remote: Total 284 (delta 0), reused 0 (delta 0), pack-reused 284
Receiving objects: 100% (284/284), 501.80 KiB | 687.00 KiB/s, done.
Resolving deltas: 100% (114/114), done.
From https://github.com/lisb/daab-starter
* branch master -> FETCH_HEAD
* [new branch] master -> daab-starter/master
daab initialized.

※エラーが出なければ(多分)、OKのはずw(ΦωΦ)

[参考サイト]

qiita.com

fshilver.github.io

stackoverflow.com

mseeeen.msen.jp

qiita.com

daab initしようとしたら、オマエのgit clientは古いからアップグレードしろと言われたので

CentOS 6.5のyumで入れたgit clientのバージョンが1.7.1で

daab initコマンドの実行に失敗して、「まずはgit clientをアップ

グレードしろ、話はそれからだ!」というメッセージを頂いた

ので、2.xへのアップグレードを実行した際の備忘録(ΦωΦ)

[エラー状況]

1. daab initコマンドを実行したら下記エラー。

$ daab init Initialized empty Git repository in /home/ichiyama/mybot/.git/ error: while accessing https://github.com/lisb/daab-starter.git/info/refs fatal: HTTP request failed daab initialized.

2. エラー内容はここを見ろと言われたので確認。

Please upgrade your git client.
GitHub.com no longer supports git over dumb-http: https://github.com/blog/809-git-dumb-http-transport-to-be-turned-off-in-90-days

[手順]

1. 既存gitクライアントのバージョンを確認し、削除。

# git --version
git version 1.7.1

# yum remove git

2. 2.x系のソースコードコンパイルに必要なパッケージをインストール。

# yum install gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker

3. wgetコマンドで2.2系のソースコードを取得。

# wget https://www.kernel.org/pub/software/scm/git/git-2.2.0.tar.gz

4. tarコマンドで3を解凍。

# tar -zxf git-2.2.0.tar.gz

5. 4で解凍したディレクトリへ移動。

# cd git-2.2.0

6. makeコマンドで /usr/local 以下にビルド。

# make prefix=/usr/local all

7. makeコマンドで /usr/local 以下にインストール。

# make prefix=/usr/local install

8. 7でインストールしたgitバージョンを確認しようとしたら、

 そんなファイルやディレクトリはねーよと言われるので、bash

 組込コマンドのhashで設定を反映。

# git --version
-bash: /usr/bin/git: そのようなファイルやディレクトリはありません

※念の為、whichやtypeコマンドで状況を確認。

# which git
/usr/local/bin/git

# type git
git is hashed (/usr/bin/git)

# hash -r

9. 改めてバージョンを確認。

# git --version
git version 2.2.0

※git version 2.2.0 が表示されればOK。

[参考サイト]

qiita.com

tech.nikkeibp.co.jp

www.miraclelinux.com

初めての daab - daabデベロッパー

CentOS6.5にNode.js v6.9.2をインストール

curlwgetで公式にある情報でnvmをインストールしよう

としたら、エラーが発生してハマったので備忘録として(ΦωΦ)

[手順]

1. nvmのインストール。

$ git clone git://github.com/creationix/nvm.git ~/.nvm

$ source ~/.nvm/nvm.sh

2. nvmでNode.js v6.9.2をインストール。

$ nvm install v6.9.2

Downloading and installing node v6.9.2...
Downloading https://nodejs.org/dist/v6.9.2/node-v6.9.2-linux-x64.tar.xz...
######################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v6.9.2 (npm v3.10.9)
Creating default alias: default -> v6.9.2

3. バージョンを確認。

$ node --version
v6.9.2

4. インストール場所を確認。

$ which node
~/.nvm/versions/node/v6.9.2/bin/node

5. もし複数バージョンをインストールした場合、nvm ls で確認可能。

 ※現在は、v6.9.2のみ。

$ nvm ls
-> v6.9.2
default -> v6.9.2
node -> stable (-> v6.9.2) (default)
stable -> 6.9 (-> v6.9.2) (default)
iojs -> N/A (default)
lts/* -> lts/carbon (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.14.1 (-> N/A)
lts/carbon -> v8.11.1 (-> N/A)

[参考サイト]

mollifier.hatenablog.com

photo-tea.com

CentOS6.5環境に管理者権限のあるユーザを追加

与えられた開発サーバーにroot以外のユーザがいなかったので

管理者権限のあるユーザを追加した際の備忘録(ΦωΦ)

[手順]

1. 管理者権限のあるユーザを作成。

 ①useraddコマンドでユーザ作成。

# useradd username (任意の名前)

 ②passwdコマンドでパスワード変更。

# passwd username

新しいパスワードを2回聞かれるので2回入力して実行。

 ③/home 配下を確認。

/home/username ディレクトリが作成され、bash関連ファイルが

できてればOK。

2. 管理者権限の付与。

 ①visudoコマンドで追加ユーザの権限付与。

# visudo

 ②1で作成したユーザ名で以下を追加。

  rootで検索してroot下にコピペして書き換えればOK。

  username ALL=(ALL) ALL

 ③/etc/sudoers ファイルの中身を確認し、②が反映されて

  いればOK。

3.Windowsの各種SSHクライアントで作成したユーザで接続情報

 を作成してログイン。

 ※自分はMobaXtermで実施。

[参考サイト]

qiita.com

Fluxboxをカスタマイズ(2)フォントサイズの変更

Fluxboxのスタイルはzimek_darkblueを使っている

のだけど、フォントサイズがデフォルトのままだと

ウィンドウのタイトルバーやツールバーの文字が小さい

ので少し大きくしてみた。

というか、フォントカラーを変更すればいいだけでは?

という意見もあるが、これについてはまた今度(ΦωΦ)

[手順]

1. 共有のコンフィグファイルを、ユーザディレクトリに

 コピーしてから変更。

% cd ~/.fluxbox
% mkdir styles
% cp -R /usr/share/fluxbox/styles/zimek_darkblue styles
% cd styles/zimek_darkblue

2. 1でコピーした設定ファイルを編集。

% vim theme.cfg

3. フォントの種類やフォントのサイズを変更するには以下の箇所

 を変更。

######### FONTS ###############
menu.frame.font:       sans-9:bold
menu.title.font:        sans-10:bold
toolbar.clock.font:       sans-9:bold
toolbar.workspace.font:      sans-10:bold
toolbar.iconbar.focused.font: sans-8:bold
toolbar.iconbar.unfocused.font: sans-8
window.font:                           sans-8

4. とりあえずフォントサイズを全部12ポイントに編集。

5. 設定ファイルを保存し、画面上でリロード。

6. 右クリックメニューから、Fluxbox menu ⇒ Reload config

[参考サイト]

Fluxbox のスタイルを変更する | FreeBSD きがえぼお

テスト用にCentOS7の日付をずらす

土日判定を仕込んだバックアップスクリプトの内容確認を

するため、CentOS7環境の日付を日曜日にしてみるメモ。

[手順]

1. timedatectlコマンドで日付を4/15に設定。

# timedatectl set-time 2018-04-15

※日付のみ変更すると時間は「00:00:00」になる。

2. NTP同期が有効になっているため、コマンドエラー。

Failed to set time: Automatic time synchronization is enabled

3. NTP同期を無効に設定。

# timedatectl set-ntp no

4. 再度、 timedatectlコマンドで日付を4/15に設定。

5. 1の内容に変更になっているか確認。

# timedatectl
Local time: 日 2018-04-15 00:00:16 JST
Universal time: 土 2018-04-14 15:00:16 UTC
RTC time: 土 2018-04-14 15:00:16
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a

6. timedatectlコマンドで日付を4/17(本日)に再設定。

# timedatectl set-time 2018-04-17

7. テストが終わったら、NTP同期を有効に再設定。

# timedatectl set-ntp yes

8. 元に戻ったことを確認。

# timedatectl status
Local time: 火 2018-04-17 18:15:03 JST
Universal time: 火 2018-04-17 09:15:03 UTC
RTC time: 火 2018-04-17 09:15:03
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a

[参考サイト]

kihi.blog.so-net.ne.jp