遅れぎみな仕事を進めるために出勤しようと思っていた月曜日。しかし、いざ当日になるとあまり行く気にもなれず、結局ボーっと過ごすことに。
ようやく読み始め。一度全巻読破してるんでストーリーは知っている。最後の方では泣いちゃうかもなって思ってたけど、全33巻の3巻目にしてちょっとポロポロ。最後の方になったらどうなっちゃうんだろう?(笑)
夕飯は4人+こまひこで豚しゃぶ。やっぱり鍋物系は、人数がいると楽しい。何を話していたか良く覚えていない程度の他愛ない会話もまた良し。
最近「ボーっとするのも大切」とアドバイスしてくれる人がいるんだけど、今日みたいな日を過ごすと、やっぱりそうなのかなと思う。「しなければならない」ことばかりを作り続けたり、追い続けてもダメなんだろね。「してもしなくてもいい」ことを適当にやるのも人には必要なんだ。
家を出る30分くらい前に粉末ヴァームを水に溶かして飲んでみた。
いつものコースをいつもの自転車でいつものペースで走って見たところ、いつもより汗が出ているような気がした。ただ、休み明けだし、気温もいつもより高かったので、これは気のせいだったかも知れない。
でも、いつもなら会社に着いて10分くらいで体のホカホカ感が完全になくなるのに、今日は20分くらい続いていたような。。。これがもしかして体脂肪が燃焼してるってことなんだろーか?
粉末は会社にも持って来たので、帰りがけにも飲んでみよう。
キター! Panther でも、uControl がちゃんと動作してるよ! これで快適なキーボード生活が送れるなり。
▽ おが [ぅぉ!社内恋愛アリですか?]
自分の家だと誘惑があり過ぎて集中できない人なので、check*padに登録してある各リストをプリントアウトして、昼飯ついでに近所のファミレスへ。
「いつかやる/たぶんやる」「プロジェクト」「次にとるべきアクション」の各リストを上から下まで見渡したのだが、今回は主に「次に」の中のリストの整理になった。なんと言っても、1個が20個に化けたりしたのが大きかった。そのまま入れといても良いんだろうけど、1週間で「次に」がクリアできた方が気持ち良いはずなので、優先順位の比較的低いものを「いつかやる」へ移動。必要なら来週の週次レビューで「次に」へ移動するので、たぶんこの考えでも良いんだろうとは思う。他には「次に」から、いくつかを来週のスケジュールに組み込み、すなわち「カレンダー」へ移動した。
その後「いつかやる」を見返してみたら、その中に既に実行が完了したタスクがいくつか混ざっていた。タスクが減るのは良いんだけど、GTD的にはリストの振り分けを間違えていたのかも知れないなぁ。
しかし、今日のレビューで「次にやるべきこと」が、より鮮明になったのは良かったな。
これは分かりやすい。
PHP そのものの解説は入ってないので、PHP 初心者には向かない。しかし、分かっている人が RAD フレームワーク使いたいぜ!という場合に必要充分な内容が詰まっている。
「CakePHP プログラマーズリファレンスガイド」も素晴らしいのだが、それを補完する為にも手元に一冊あると良いかも知れない。
オレの場合は「〜リファレンスガイド」を読んでも解消していなかったモヤモヤ感が「あぁ、そういうことだったのか!」と奇麗に晴れてスッキリしたよ。
何がきっかけなのかよく分からない*1のだけど、MacBook Pro で使っている iTunes 10.0.1 で、アプリの購入やアップデートができなくなった。アップデートを行なおうとすると「不明なエラーが発生しました(5002)」というダイヤログが出てきて失敗する。
「iTunes 5002」で検索して「iTunes 5002 エラー」を見つけて、サインアウトしてサインインすりゃ解決か?と思ってやってみたら、今度は「リクエストを完了できませんでした」というエラーダイヤログが表示される。ただ、実際にはサインアウトされている様子。
当初は「iTunes Store でエラーが発生しました」「iTunes Store は一時的に利用できません」の言葉の通り、アチラ側の問題だと思っていたので、iTunes Store のサポートへ連絡してみたのだけど、調べていくうちにアチラ側ではなく、コチラ側に問題がありそうなことが分かってきた。
まず、同じアカウントを使って、iPhone4 / iPad の AppStore アプリでは正常に購入やアップデートができること、また、別マシン(MacBook)の iTunes ではサインイン・サインアウト等の操作も問題なくできていたので、メインマシンである MacBook Pro 上の iTunes だけがダメな状態。
iTunes をインストールし直してみたけど変化がないので、最後の砦としてアップルストアの Genius Bar を予約し、今日行ってきた。
まず、「ディスクユーティリティ」で「ディスクのアクセス権の修復」を実行してみましょうとやってみたものの、一向に終わらず(というか、見た感じループしてたような。。。)、途中で停止。
その他、iTunes のライブラリを新たに作成(Option キー押しっぱなしで iTunes 起動する方法)して試してもダメだし、アプリケーションキャッシュらしい ~/Library/Caches/ 以下のファイルを削除してもダメ。環境設定( ~/Library/Preferences/ )以下の iTunes に関連するファイルを一時避難させて起動してもダメ。
その次は、同じマシンのゲストアカウントで iTunes を立ち上げると、サインイン・サインアウトが普通にできた。ということで、自分のメインアカウントのる iTunes だけがダメという事実が分かった。
事実は分かったのだけど、ではどうすれば直るのか?というのが、分からない。結局、担当してくれたジーニアスもお手上げで、別アカウントに移動するか、システム全体の再インストールをオススメしてくれた。
さて、どうするか。
*1 iLife '11 と Office 2011 をインストールした覚えはある
退院してから初めてプントとご対面。家から駐車場までちょっと離れているので、今まで行ってなかったんだけど、トランクに入れっぱなしの機材のひとつを使いたかったので、取りに行った。が、欲しかったものは無く、既に自宅に運び込んでいたというオチ。
ま、それはそうと、2ヶ月弱程エンジンをかけてなかったので心配だったのだけど、エンジンは無事に始動してくれた。セルモータの音は、若干弱いかなという気がしたので、早めに少し長めの運転をしてやりたいところではある。
ちょっと前まで、首を左右に振るとクラクラきていたけど、最近は改善されてきたので、そろそろ運転してみても大丈夫かなぁ。歩行と違い、車の運転で失敗すると周囲への影響が大きいので慎重に考えてはいるんだけど、まずは近場の買い物とかで少し試してみようかね。。。
前回からしばらく開いてしまったけど、今回は前回の Fluentd の仕込みと Elasticsearch 本体との連携部分。
Elasticsearch 本体は、本家のリポジトリを登録し、apt-get で install やら update やらをできるようにした。手順は、ドキュメントの repositories にあるとおり。
まずは、GPG KEY のインストール。
% wget -qO - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -
source list に URL を追記。ドキュメントでは /etc/apt/sources.list
に直接追記するように書かれているけど、/etc/apt/sources.list.d/elasticsearch.list
というファイルを新規に作成し、そこへ記述するようにした。
% sudo vim /etc/apt/sources.list.d/elasticsearch.list
deb http://packages.elasticsearch.org/elasticsearch/1.3/debian stable main
あとは、apt-get
でインストール。
% sudo apt-get update
% sudo apt-get install elasticsearch
それから、このサーバには Java の環境も入っていなかったので OpenJDK もインストールした。
% sudo apt-get install openjdk-7-jdk
インストール時の設定そのままでも起動はできるけど、Elasticseach のクラスタ名・ノード名あたりは変更するクセを付けておいた方が後々のトラブルが少なそうなので、個別に設定する。
設定ファイルは /etc/elasticsearch/elasticsearch.yml
にある。
% sudo vim /etc/elasticsearch/elasticsearch.yml
今回は、クラスタ名を「starfighter」にしてノード名を「X-wing」にする。分かる人にはすぐ分かると思うけど、分からない人は List of Star Wars starfighters あたりを見ると良いかもしれない。
cluster.name: starfighter
node.name: "X-wing"
これで起動して、クラスタ名・ノード名が変更になったかを確認しておく。
% sudo /etc/init.d/elasticsearch stop
% sudo /etc/init.d/elasticsearch start
cluster API のうち、ノード情報を表示する _node を利用する。
% curl -XGET "http://localhost:9200/_nodes?pretty=true"
{
"cluster_name" : "starfighters",
"nodes" : {
"6rs2ICjMQrWdTdoG0pnpVA" : {
"name" : "X-wing",
[snip]
cluster.name が starfighter で、node.name が X-wing になっているのが確認できる。
Elasticsearch のデフォルトは「どのサーバ(IP)からもアクセスを許可」になっているので、このままだと、世界中のどこからでもアクセスができてしまう。
当初の構成案に従い、iptables を使って第三tDiary.Netのサーバと、自サーバからのみアクセスを受け付けるようにする。
設定内容はこのようにしてみた。IPv6 は使っていないので v4 の設定のみ。
% sudo vim /etc/iptables/rules.v4
# Allow Elasticsearch from 3rd tDiary.Net
-A INPUT -p tcp --dport 9200 -s 127.0.0.1 -j ACCEPT
-A INPUT -p tcp --dport 9200 -s [第三tDiary.NetのIPアドレス] -j ACCEPT
-A INPUT -p tcp --dport 9200 -j REJECT
設定を reload して適用する(iptables-persistent が入っていなければ別途インストールする)。
% sudo /etc/init.d/iptables-persistent reload
設定が意図通りに動くかを確認する。まずは自サーバからアクセス。
% curl -XGET "http://localhost:9200/_nodes?pretty=true"
{
"cluster_name" : "starfighters",
"nodes" : {
"6rs2ICjMQrWdTdoG0pnpVA" : {
"name" : "X-wing",
[snip]
_nodes API から返答が来るので意図通り。次は第三tDiary.Netのサーバからアクセスしてみる。
% curl -XGET "http://[解析サーバのIP]:9200/_nodes?pretty=true"
{
"cluster_name" : "starfighters",
"nodes" : {
"6rs2ICjMQrWdTdoG0pnpVA" : {
"name" : "X-wing",
[snip]
こちらも期待の返答が来た。最後は、手元の MacBook Air から。
% curl -XGET "http://vps.zatsubun.com:9200/_nodes?pretty=true"
curl: (7) Failed to connect to vps.zatsubun.com port 9200: Connection refused
いまは SoftBank のモバイルルータからアクセスしているのだけど、許可していない IP なので期待通りに REJECT された。これでアクセス元の制御は OK そうだ。
次は第三tDiary.Netから解析サーバへのログの流し込み。
前回の td-agent.conf から少し拡張して、このようにした。
これで td-agent を再起動すれば、第三tDiary.Netの Fluentd から解析サーバの Elasticsearch サーバへログが流し込まれるようになる。
% sudo /etc/init.d/td-agent stop
% sudo /etc/init.d/td-agent start
Fluentd を起動してしばらくすると Elasticsearch にデータが入ってくるはず。マッピングの設定はしていないけど、自動でこんな感じで定義してくれた。
% curl -XGET "http://localhost:9200/logstash-2014.11.03/_mapping?pretty=true"
{
"logstash-2014.11.03" : {
"mappings" : {
"access_log" : {
"properties" : {
"@log_name" : {
"type" : "string"
},
"@timestamp" : {
"type" : "date",
"format" : "dateOptionalTime"
},
"bytes" : {
"type" : "string"
},
"http" : {
"type" : "string"
},
"ip" : {
"type" : "string"
},
"method" : {
"type" : "string"
},
"request_uri" : {
"type" : "string"
},
"server" : {
"type" : "string"
},
"status" : {
"type" : "string"
},
"user_agent" : {
"type" : "string"
}
}
}
}
}
}
さらにしばらく放置しておき、Elasticsearch への登録数が増えるのを待って、インデックスの登録件数を見てみた。
% curl -XGET "http://localhost:9200/_cat/count/logstash-2014.11.03"
1415007863 18:44:23 4946
suzuki.tdiary.net へのアクセスを検索してみる。表示するフィールドを server と path に限定。結果は最大3個までとした結果がこれ。
集計ができそうな気配が出てきた。
▽ ウラウラ [効果音が好き>うしおととら]