雑文発散

«前の日(11-05) 最新 次の日(11-07)» 追記
過去の日記

2002-11-06 朝からショックな水曜日

がーん

普段使っているカバンのジッパーが壊れた。ちなみに、吉田の LAGGAGE LABEL ZONE シリーズのコレ(画像ひとつ間違ってるけど)。しばらく前に持ち手の1個が欠けてしまったのだけれど、今度はもう1個が。。。持ちにくいだけで、開け閉めの機構は無事なんで使えると言えば使えるんだけど。。。いよいよ田中かばん店へ行かねばならぬか。

XEmacs 21.4.10

Tech Style ニュースレター」で XEmacs 21.4.10 がリリースされたことを知ってソースをゲット。とりあえず必要最小限なオプションでコンパイルが通るところまでは確認。適当に RPM を作って現在の 21.1.14 と入れ替えてみたいところだけど、仕事中にやってハマると危険なので辞めておこう。。。

VineSeed Plus

ふと思いついて見に行ったら、VineSeed Plus には XEmacs 21.4.10 が既に存在していた。こいつを修正して rebuild させて頂こうか。

sumo

あー、rebuild するには、まず sumo パッケージも新しくしなきゃダメなのか。。。いま使っているバージョンと入れ替えるのは、ちょっと怖いな。やっぱり時間があるときにやろう。

映画の日!

気が付けば、今日は第一水曜日。映画の日ではないか!

行けないけど。。。

ニバイ

菅野美穂好きとしては、リカルデントの「いいこと2倍!キャンペーン」は見逃せませんな。トップの菅野美穂画像は怖いけど(笑)

映画つながりとして

キス★キス★バン★バン」が気になる。


2003-11-06

[] 500g 減

22時過ぎ位まで仕事すると自転車通勤じゃなくても減るのか?

[] 朝食

牛乳

寝坊。目覚ましをセットし忘れてた。昨日は体力的にじゃなく精神的に疲れていたのも原因かもしれない。

[] 昼食

600円おかず、牛肉ごぼうご飯(サラダバッグ)

[] EXILIMの第一期完成形――カシオ EXILIM EX-S20

なんとなくカシオって好きになれないんだけど、EXILIM はいいなぁ。って、ほんとはこの記事にある古奈屋のカレーうどんにひかれただけなんだけど(笑)

メニューを見たら、値下げしてるじゃないか! しかも、バナナカレーうどんとかって新メニューが!

[] 夕食

サブウェイクラブサンド(オリーブ多め)、ポテト(バジル)(サブウェイ)

サブウェイで初めてカスタマイズしてみた。

本日のツッコミ(全8件) [ツッコミを入れる]

Before...

ウラウラ [バナナ〜!?木になる。。。ごめん]

ただただし [今月のすーさんには本気を感じる……]

CLIEなよきゅん [た、たださん!]

cocoon [バナナカレーうどん食べたよ。まー。。。味は、そんなもん(周りの人に、あの人アレ食べてるわよーって、ささやかれる)]

mu [http://www.alloha.info InsuRancE http://www.devonanal.com ..]


2004-11-06

[] プラネテス(8)

当初は原作との違いが気になったけど、今じゃアニメ版も原作とは別物として同等に評価している。原作にしろアニメにしろ、どうもプラネテスは僕の何かに働きかけるようで、読んでいて/観ていて心地いい。

アニメ版、レンタルせずに買い続けて良かった(って、まだ終わりじゃないが)

[] 攻殻機動隊 S.A.C. 2nd GIG 09

こないだ「西部警察2004」(だっけ?)を見た時の我が家の感想は「やっぱり攻殻機動隊の脚本って凄いんだね」だった(笑)

あぁ、そういえば、2nd GIG の2巻の DVD が中身だけ自宅内行方不明になってしまった。おっかしーな、どこいったんだろ。。。

[] ゾーブジャパン

ゾープジャパンじゃなくて、ゾージャパン。エアロのCMで気になっていて調べて、ようやく発見。

いまだと、北海道、群馬、徳島、熊本で遊べるらしい。やってみたいな。

[] 週刊関心空間

最近、さっぱり更新しなくなってしまった関心空間の、週刊関心空間に僕が書いた ARTISAN&ARTIST が紹介されてた!

しかし、約3年前に書いたキーワードなのか、これ。まーそれは良いとしても、、、オレ、最近 A&A のバッグは使ってないんだよなぁ(笑)


2005-11-06

[] 読書散歩

自宅だと気が散って、本を読み進められないので、読書目的の散歩に出た。歩いたのは、自宅〜目黒〜五反田〜品川。読書ポイントは、シャノアール、ドトール、ルノアール、、みんな最後に「ル」が付いてるな。と、これで昨日買ったビジネスブログ三部作(?)を読み切った。

写真は品川駅周辺で見つけた消火栓のマンホール。このくらい分かりやすいと周囲にモノが置かれたりしないだろう、きっと。

消火栓

[] 偶然見つけた元カノの日記

あえてリンクは張らんが。

  • 持って行った冷蔵庫は今年買い替えたらしい
  • 持って行ったネイキッドにはまだ乗ってるらしい
  • そろそろ結婚するらしい

と、楽しく生きているようで。

[] キミの名は ジュンク堂

大好きな書店「ジュンク堂」の名前の由来。人名から来てたんだねぇ。


2006-11-06

[] 人間的生活に戻す

温泉に行った後、体調が戻った感じがする。これを継続すべく、まずは食い物を変えようと、この数日は自炊生活を復活させている。久々にスーパーで生鮮食品を買ったら、なんだか嬉しくって(笑)

相変わらず溜まりまくっているタスクをGTDでうまくこなして、この生活を継続させたいものだ。


2007-11-06

[] なんですか!この高級そうな烏龍茶は!

ということで、昨日、地下鉄の車内広告でサントリーの「 大紅袍(だいこうほう)」を知った。その時は「1本1200円の烏龍茶なんてすげーな」と思っただけだったのだが、徐々に気になり度が大きくなってきてしまって、、、サントリーのオンラインショップから注文してしまった。

まぁ、あれだ、日本酒好きな人が大吟醸がどうだの、ワイン好きな人がボジョレーがどうだのと一緒で、居酒屋では烏龍茶係(?)なオレとしては、この位のコダワリを持ってもいいだろう。たぶん、続かないコダワリだけど(笑)

[] ちょ、オレが買った中古車屋のWebページが無くなってるよ!

ちょっとマジでビビったのだけど、いつの間にか社名変更したみたいだ。聞いてないよ〜。


2008-11-06

[] 鼻血の記録

ひさびさに鼻血。しかも、会議中にいきなり。

頭が微妙に重くて、首筋がこってた感じなので、首をグリグリやってたら鼻からツツーっと。。。まぁ、たいした量は出なくて、すぐに止まったから良いんだけど、首のコリは相変わらず。また鼻血になるとイヤなので、あんまりグリグリできないのがなんとも。

[] PS3 で Wipeout が出るなんて知らなかったよー!

忘念のザムドのレンタルのために PlaystationStore に行ったら、WipEout HD という文字を発見。さっそくダウンロードして、ちょっと遊んでみた。

相変わらずの浮遊感と気持ちいい音楽にシビレル。これ、サントラ出ないのかなぁ。


2010-11-06

[] 溜め込んでいた書類を処分

カードやらケータイやら、いろいろな請求書が届くと「後で見るかも」と思って、とりあえず残しておくようにしてた。ごく最近のは ScanSnap でスキャンして捨ててたんだけど、過去のものが大量に残っていて、これをさっさと処分したかった。

まとめて一気に捨てちゃえば良いんだけど、住所やら名前やら明細やらが記載されてる書類をそのまま捨てるのもなーという個人情報保護脳が働いてしまって、なかなか手をつけられずにいた。

で、今日、ようやく処分に動いたのは、昨日の「既存のモノを処分するライフハック発動」によるもの。ハガキはそのままシュレッダーへ、封書は住所・氏名が書かれている書類だけをシュレッダーへ入れて細断。溜めに溜めてたものは、ほぼ処分できた。

ここから先は溜めないような生活にしないとなー。


2014-11-06

[Fluentd][Elasticsearch] Fluentd + Elasticsearch + Kibana での解析用に Kibana を設定する

昨日の「Fluentd + Elasticsearch + Kibana での解析用に Kibana を仕込む」の続き。

今日は Kibana を設定して、元々やりたかった「DoS アクセス元の特定をブラウザベースで行える環境作り」を実施していく。

いろいろがんばってたらキャプチャだらけの長いページになってしまったのだけど、せっかく作ったのでちょっとうざいけど掲載してしまう。

キャプチャによって、表示されている集計数が違っているのは、数日間に渡ってキャプチャの取得を行なっていたから。「数日間に渡って」という時点で、この文章が「日記」なのかどうか微妙に気になるけど、まぁ、仕込みに時間がかかってたということで。

ダッシュボードを作成する

Kibana のトップ画面から「Blank Dashboard」を選択して、何もないダッシュボードを開く。

Kibana の設定

ダッシュボードの右上にあるギアマーク(Configure Dashboard)をクリックする。

Kibana の設定

ダッシュボード名称を記入する。ここでは「第三tDiary.Net アクセスログ」とした。これで一度保存(Save)しておく。

KIbana の設定

パネルを表示する行(Row)を作成する

設定画面の「Rows」のメニューで行(Row)を作成する。ここでは安易に「グラフ」という名称にした。作成するには「Create Row」をクリック。

Kibana の設定

「グラフ」の行(Row)の追加が確認できたら、保存(Save)しておく。

Kibana の設定

行(Row)に日記別アクセス数のパネルを追加する

行(Row)が追加されると、画面の左側にアイコンが増える。ここで設定アイコン(Configure row)をクリックする。

Kibana の設定

設定画面に入ったら「Add Panel」のメニューへ移動し、「Select Panel Type」から今回は「terms」を選択する。

Kibana の設定

terms 用の設定メニューが表示されたら、次のように入力していく。デフォルトからの変更点のみ記述しておく。

  • Stable
    • Title
      • 日記別アクセス数(キャプチャでは「日記別アクセスログ」としちゃってる。。。)
    • Span
      • 6 (画面横幅いっぱいが span = 12。今回は 6/12 で 50% の幅を指定)
  • Parameters
    • Field
      • server (アクセスログにいれてあるサーバ名 = 日記の FQDN)
  • View Options
    • Legend Format
      • vertical (凡例を縦に表示)
    • Missing
      • チェックを外す(値が入っていないレコードの集計結果は表示しない、という意味だと思う)
    • Other
      • チェックを外す(「その他」に含まれる値は表示しない)

これらを入力したら保存する。

Kibana の設定

これで日記別アクセス数のグラフが表示された。

Kibana の設定

この状態になったら、ここでも念のため画面右上のアイコンから保存しておこう。

Kibana の設定

行(Row)にIPアドレス別アクセス数のパネルを追加する

日記別アクセス数と同じ行に、もうひとつパネルを追加する。行のメニューから「Add Panel」をクリックする。先ほどは「Configure Row → Add Panel」とメニューを移動してきたけど、パネルを追加するだけなら、この「Add Panel」がショートカットになる。

Kibana の設定

先ほどと同じように「terms」を選択して、各種項目を入力していく。

  • Stable
    • Title
      • IP別アクセス数
    • Span
      • 6
  • Parameters
    • Field
      • ip
  • View Options
    • Legend Format
      • vertical
    • Missing
      • チェックを外す
    • Other
      • チェックを外す

Kibana の設定

これを保存すると、IP別アクセス数のグラフが追加される。

Kibana の設定

別の行(Row)を追加して検索結果一覧のパネルを追加する

画面右下にある「ADD A ROW」から行を追加する。行の名前は「リスト」にした。「Create Row」で作成する。

Kibana の設定

そしてパネルを追加。今度は「table」のパネルを選択する。タイトルに「アクセスログ」、Span に「12(width: 100%)を入力する。キャプチャでは見えてないけど、下の方に Save ボタンがあるので保存する。

Kibana の設定

すると、検索結果のリスト表示のパネルが追加される。一覧に表示したい項目をチェックすると、その項目だけリストに出てくる。何もチェックしない場合は、検索結果の JSON データがそのまま表示される。

Kibana の設定

ここでまた保存しておく。こまめな保存が Kibana の基本。なぜなら、保存するのを忘れてブラウザをリロードしてしまうと、、、設定してきたものが消えてしまう。無かったことになってしまい悲しいことになる。

Kibana の設定

これでアクセスの傾向が見える最低限のダッシュボードが追加できたんじゃないかと思う。

クエリを入れてみる

ここまでは「全データ」の表示でしかなかったのだけど、クエリを入れていくことにより、データの絞り込みを行なってみる。

「QUERY」の欄にはデフォルトで「*」が入っている。これはまぁワイルドカードのようなものと思えば良いようだ。この「QUERY」に「server:suzuki.tdiary.net」を入力する。見れば分かるように「server」というフィールドが「suzuki.tdiary.net」のレコードを指定している。

これを入力すると、日記別アクセス数とIP別アクセス数のグラフの表示対象が suzuki.tdiary.net に限定される。

Kibana の設定

フィルタを入れてみる

次はこのクエリに対して、さらにフィルタを入れて絞り込んでみる。

Kibana の設定

条件として「method:POST」を入れてみる。「must」になっているので、この条件にマッチするものに限定される。

Kibana の設定

フィルタを「Apply」すると、グラフの結果が変わる。POST メソッドのアクセスに限定すると、数字がガッツリ下がるのが分かる。

Kibana の設定

グラフクリックによるフィルタの追加

クエリをいったん「*」に戻して、今度はグラフのクリックによるフィルタ追加を試してみる。日記別アクセス数の「suzuki.tdiary.net」のグラフをクリックしてみる。

Kibana の設定

すると、フィルタに「server:suzuki.tdiary.net」が条件として追加された。クリック操作でドリルダウンできるのは良いね。

Kibana の設定

複数のフィルタ

フィルタは複数同時に設定できる。今度は手動で「method:POST」の条件を追加してみる。

Kibana の設定

すると「server:suzuki.tdairy.net」と「method:POST」の AND 条件の結果が表示される。

Kibana の設定

これでも先ほどの「クエリに server:suzuki.tdiary.net、フィルタに method:POST」を設定した場合と同じ結果になった。

クエリとフィルタ、使いようによってどちらでも同じ結果が出せるなら、どのように使っていくべきなのか迷ってしまうけど、クエリで大きな絞り込みをして、フィルタでドリルダウンするってのが Elasticsearch の思想に近いのかなぁ。

この辺は経験値が足りないので、まだよく分からない。

時間を軸としたフィルタ

Kibana では時間に関するフィルタのショートカットが用意されている。画面上部にそのまま「Time Filter」と書いてあるメニューがそれ。

例えば、ここで「Last 24h」を選択してみる。

Kibana の設定

すると「FILTERING」の欄に時間のフィルタが追加される。これで単位時間あたりの状況を簡単に把握できるようになる。指定を外したければ、フィルタの「✕」マークで解除すれば良い。

Kibana の設定

「Time Filter」のメニューの「Auto-Refresh」を使えば、勝手に結果をリロードしてくれるので、リアルタイム監視にはこれが便利っぽいね。

保存したダッシュボードをロードする

今までこまめに保存してきたダッシュボードをどうやって再利用するのかというと、Kibana の画面右上に「Load」というメニューがあるので、それを使う。

Kibana の設定

保存したダッシュボードの一覧が表示されるので、見たいダッシュボードをクリックする。

Kibana の思想としては、クエリ内容やグラフ内容別に複数のダッシュボードを作成して、切り替えて使うということなのかな。

まとめ

これで分析基盤みたいなものができたので、いろいろなクエリやパネルの追加などをして試行錯誤していこう。

やっぱり「一部の日記への継続的大量アクセス」は続いているようだ。既にほぼ更新が止まっている日記なのに、この継続的アクセスはちょっと怪しい。クローラーだとしてもセンスないね。

そういう内容がブラウザで視覚的に確認できるようになったので、DoS から始まる開発 DDD(DoS Driven Development)(開発というかセットアップだったけど)は、これでいったん区切ることにする。


2016-11-06

[Crowi] Mongoose の Dynamic References がやりたいことだった(マニュアル読め案件)

PHPカンファレンスも終わったので、Crowi の資料作成から Crowi いじりに戻っている。

Mongoose のスキーマに「ObjectId と共に ref にモデル名」を付けておくと、populate() メソッドで、そのモデルから ObjectId のデータを自動で読み込んでくれるので便利で、Crowi の各モデルでは、ちょいちょい使われている。

いま作っている機能では「ObjectId を保存するが、その対象となるモデルを動的に変えたい」場合が出て来た。その場合は ref が使えないので、populate() も使えないなーと思って、スキーマにモデル名を保存する項目を追加して、自前でそのモデルを読み込む処理を書かないとダメかなぁと思っていたのだけど、Mongoose のマニュアルを眺めていたら答えが載っていた。

refPath を使うと、その path で保存されているデータ内容を元に populate() してくれる。マニュアルに載っている下の例だと、connections.kind に保存されるモデル名に対してデータ読み込みの処理を自動実行してくれるようだ。

var userSchema = new Schema({
  name: String,
  connections: [{
    kind: String,
    item: { type: ObjectId, refPath: 'connections.kind' }
  }]
});

上記の例だと、connections が配列になっているけど、特に配列である必要はなかった。同じレコードの中に保存されていれば問題ない様子。

「モデル名を保存しておく」という方法は変わらないけど、自前の population 実装が不要になったので良かった。マニュアルはちゃんと読んでおくべきだなぁ。