nDiki : grep
Related term
2004年1月17日 (土)
■ [ WiKicker ] 「最近のアクセスログ」処理思案

今のところ WiKicker 自体にはアクセスログ機能はなく、Apache のそれに頼っている(NaneyOrgWiki ではサーバ側で combined log を提供していないので別途自前で、似非 combined log を吐かせている)。
1日毎程度のアクセス統計チェックはこれでまぁある程度済むのだが、それとは別に瞬間的なアクセス状況を知りたい時がままある。 特にサーバの負荷が上がりつつある時は
- 特定のホストから連続的なアクセスがないか?(ロボットなど)
- 特定のページのリクエストが一時的に増えているのでは?(ドラマ放映終了直後など)
- 特定の訪問者がリロードしまくってないか?(チャット等と勘違いして)
などをチェックしたい。 ロボットのアクセスがひどい場合は早急にはじく必要があるし。 しかし、生アクセスログの目視チェック(+grep etc)では限界がある(wiki のURIはページ名がエスケープされているからパッと見どのページかわからないし)。
ということで、直近のログを簡単にチェックできるような機能を検討。 まずはログをどこに取るか。 複数のCGI プログラムのプロセスから、ガシガシ書ける必要有り。
- 普通のファイル
- daemon
- mmap
- 共有メモリ
あたりか。 直近の数百アクセスだけあれば良く、逆にそれ以上のログはばんばん破棄したいのだが何が一番いい実装かなぁ。
シンプルに普通のファイルに append するのが一番楽だが、ログが増えると tail を取るのが遅くなるだろうし、ログを切り詰めるのも面倒。 Perl の Tie::File を使うとファイルの各行を配列要素に見立てて push、 unshift、splice ができるのだが、やはり切り詰めに時間がかかりすぎる。
使えそうなモジュールがないかいろいろCPANを検索して、とりあえずどんどんビルドしてみる(サーバの Perl が 5.005_03 なので、目的にあっても使えないかもしれないし)
- WiKicker の Makefile.PL を Module::Inst... (2006-02-10)
- www.naney.org サーバ断続的にダウン (2006-04-30)
- Perl CGI プログラムのテストには WWW::Mechanize::... (2006-02-18)
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- FreeBSD と Apache::Htpasswd (2006-03-02)
2006年4月2日 (日)
■ howm で nDiki の記事も検索対象にする

howm をメモツールとして使いはじめている。 ちょっとしたメモを、使い慣れている Emacs 上で簡単に書けるので非常によろしい。
一方、自分の場合まとまった情報やネタは nDiki の方に書いて公開している。 これらのデータは別のディレクトリに DiKicker (WiKicker) 形式のテキストファイルとして保存されている。
どちらも「あのコマンドなんだっけかな」とか「あれをやったのはいつだったっけ?」とよく検索を行うことになる。
今まで nDiki の方は Google であったり Emacs 上で grep をかけたりして検索していたのだが、howm の検索機能が便利なので一緒に検索できるようになるとかなり便利だ。
ということで設定を行なった。
現在の設定は下記の通り:
(setq howm-menu-lang 'ja)
(setq howm-menu-schedule-days-before 14)
(setq howm-menu-schedule-days 14)
(setq howm-search-path '("~/path/to/diki/"))
(setq howm-search-other-dir t)
(setq howm-view-title-regexp "^\\(\\*\\|=\\)\\( +\\(.*\\)\\|\\)$")
(defvar howm-view-title-regexp-pos 3)
(setq howm-view-title-regexp-grep "^[=*] +")
(setq howm-menu-expiry-hours 1)
(setq howm-menu-refresh-after-save nil)
(setq howm-view-external-viewer-assoc
'(
("[.]\(jpg\|gif\|png\)$" . "display %s")
("[.]mm$" . "freemind %s")
))
(setq howm-view-use-grep t)
(setq howm-process-coding-system 'utf-8)
nDiki の記事のタイトルは行頭 の '* ' で始めるようにしているので、それもタイトル扱いするようにしておく。
これでいつでも C-c , s で、howm と nDiki を串刺し検索できる。 いいね。
- Linux で使えるデスクトップ検索ツール Beagle でローカルファイ... (2006-08-08)
- 社内 Blog 開設 (2006-05-16)
- DiKicker に grep 検索機能を追加 (2007-02-02)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- WiKicker 0.420 リリース - 変更いろいろ (2007-05-30)
2006年8月8日 (火)
■ Linux で使えるデスクトップ検索ツール Beagle でローカルファイルを検索

Windows だと Google Desktop でローカルファイルの検索ができるのだが、残念ながら Linux 版はでていない。 そこで Beagle を入れてみることにした。
Beagle はデーモン形式のバックエンドと、検索インタフェースであるフロンエンドに分かれたているデスクトップ検索ツールである。
ファイルシステム上にあるテキストファイルだけでなくメールや、Firefox でアクセスしたページ、OpenOffice.org や Microsoft Office のファイルなどをインデックス化し検索できるようにすることができるらしい。
@ ちなみに今まで
ローカルファイルの検索は
| メール | Mew 4 での検索(with Namazu)。 |
| nDiki 記事 | howm で記事ソースデータを検索 (方法)、あるいは www.naney.org 公開記事を Google で。 |
| メモ | howm。 |
| 開発中のソースコード | Emacs の grep-find でだいたい事足りる。たまに ack。 |
| 仕事のメモ | できるだけ社内 Wiki か社内 Blog に書いておいて Hyper Estraier。 |
| その他 | grep 程度。 |
といった感じかな。
それ以外はだいたいファイルの位置をうろ覚えしているので、何カ所か探せば見つかることが多い。
問題はうろ覚えの場所になかった時。 その時はなかなか見つからない。
そんなファイルを見つけるのが楽になれば、導入効果あり。
@ インストールして試してみる
@ Linux kernel の inotify を有効にする
まずは Linux kernel の設定を確認。inotify が有効になっている方が良いらしい。 この間ビルドした時の .config を見て
CONFIG_INOTIFY=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT3_FS_XATTR=y
となっていることを確認。
@ /home の extended attributes を有効にする。
/etc/fstab を編集し、
/dev/hda4 /home ext3 defaults 0 2
を
/dev/hda4 /home ext3 defaults,user_xattr 0 2
に変更する。書き換えたら、
mount -o remount /home
でマウントしなおす。
@ Beagle のインストール
@ Beagle を起動
一般ユーザで
beagled
で起動する。停止は
beagle-shutdown
で。
@ Beagle を設定
beagle-settings
で設定 UI を起動し、インデックスに含めたくないディレクトリなどを設定。
@ 検索してみる
beagle-search
で検索 UI を起動し検索してみる。 日本語も OK のようである。
GNOME 環境をほとんどインストールしていなかったので、検索結果からファイルを開けずつまらなかたので gonome-control-center、gnome-panel あたりをインストールして環境設定等をしてみた。
@ Firefox 拡張
xpi ファイルを入れておく。 後は普通に閲覧したページが、Beagle でインデックス化されて検索できるようになる。
設定してしまえば、以前開発して使っていた WWWOFFLE + Namazu よりお手軽である。
@ 感想
デーモンが逐次インデックス化していくので、明示的定期的にインデクサを走らせなくていいというのは楽でいい。
日本語関連がどの程度うまく検索できるのか、検索結果は使いやすい順に出力されるのかが未知数。 しばらく遊んでみて便利かどうか確かめてみたい。
- Linux 母艦ノート PC を使わずに仕事ができるかチャレンジ (2007-08-20)
- Google Desktop Linux 版をインストール (2007-07-02)
- メールボックスを Gmail に集約 (2007-08-08)
- Hyper Estraier で社内 Web コンテンツ検索 (2006-06-01)
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
2006年9月11日 (月)
■ 社内 Perl 勉強会 最終回 (第16回)

リャマ本を使用した社内 Perl 勉強会の16回目を開催。 今日は8人全員。
今日は「初めてのPerl 第3版」第17章「上級テクニック」が範囲。 17章では、「Perl らしい」機能 (Perl 流 eval、grep、 map、スライス)が盛沢山。
@ 今回の反省点
robust なプログラムを書くには Perl では eval 必須の機能なので押さえておきたいところ。 grep、map は何だかんだいって自分が練習問題の解答で使ってしまっているので、他の人もある程度見なれているはず。
練習問題の解答としてはスライスは今回は使用せず。
逆にスカラーコンテキストとリストコンテキストについては、まだ理解が不完全な部分があるようなので解説をしておいた。
@ 最終回を終えて
Perl については
という一方
Perl の気持ち悪さが理解できた。
という意見があった。
他の人の書き方を見ることが参考になった。実際に書くことで覚えた。
等、定期的に練習問題をやってくるというスタイルに対する評価が得られた。
4月21日から始めて5カ月弱。勉強会でスキルアップをはかっていこうという雰囲気ができてきているのはいい傾向だと思う。
今後もテーマを選んで継続していきたい。
次のテーマをより実用重視のものにするか、基礎固めのものにするのかは悩みどころである。
- 第6回 社内 Perl 勉強会 (2006-06-05)
- 第2回 社内 Perl 勉強会 (2006-04-28)
- 第1回 社内 Perl 勉強会 (2006-04-21)
- 第7回 社内 Perl 勉強会 (2006-06-12)
- 第8回 社内 Perl 勉強会 (2006-06-30)
2006年10月21日 (土)
■ Konqueror でリモートホスト上のファイルを SSH 経由でブラウズ

会社のサーバに Web 用のファイルを置く作業を頼まれる。 ちょこちょこ更新があるので、毎回 scp でコピーするのも面倒臭い。 新しいサーバでまだ shfs + autofs の設定もしていないし。
ということで Konqueror から簡単にアクセスできないか確認。ちなみに Konqueror だと
| smb://ホスト名/ | SMB でアクセス |
で Samba 公開ディレクトリに smbmount などすることなく、簡単にアクセスできる。
SSH 関連についても確認してみた。以下の2つが利用できる
| sftp://ホスト名/ | sftp でアクセス |
| fish://ホスト名/ | fish でアクセス |
fish は POSIX 互換のリモートコンピュータに対して使えるもので、cat、 chgrp、 chmod、 chown、 cp、 dd、 env、 expr、 grep、 ls、 mkdir、 mv、 rm、 rmdir、 sed、wc あたりを使うらしい。
どちらも Konqueror から shfs でマウントしたディレクトリにアクセスするよりも動作が軽快なので、ちょっとしたファイル転送や編集ならこちらを使った方が便利そうだ。
- Tor で hidden service (2005-02-13)
- [ Debian ] shfs でSSH接続されたリモートホストのディレク... (2004-02-04)
- connect.c を使って SOCKS サーバ経由で社内サーバへ SSH 接続 (2007-01-06)
- はじめての WebDAV (2006-07-14)
- FoxyProxy と autossh で社内 Web ページを閲覧 (2006-06-03)
2007年2月2日 (金)
■ DiKicker に grep 検索機能を追加

DiKicker には自動リンクベースの記事串刺し表示機能があって、同じキーワードを含む記事をまとめて読むことができる。 結構便利なのだが、この機能ではキーワードの設定は Blog の書き手に委ねられている。
社内で DiKicker を一部使ってもらっているのだけれども、それら他人の Blog を読んでいると「あのキーワードで串刺し表示したいな」と思うことがしばしばあることに気がついた。 やはり任意の文字列で串刺し表示する機能が欲しい。
書き手にとっても「自動リンクキーワードにするような文字列ではないけれども、串刺しで読みたい/探したい/見せたい」と思うことが少なからずある。
ということで、検索ベースの串刺し表示機能を実装してみた。
@ grep ベース
実現には全文検索を行う必要があるが「設置・運用の手間」「ディスク容量」という点から、事前にインデックスを生成するような方法は今回は避けようと思う (www.naney.org 上で自分が使う上での制約からくる理由が一番大きかったりする)。
ということで今回は grep 型で実装することにした。 もともと WiKicker の方の検索機能も現在のところ grep 型である。 WiKicker では自前で WikiPage をスキャンしているが、DiKicker では grep コマンドに任せることにした。 こういうのは専用の grep を使った方が速いはず。呼び出しは
grep -Flre $escaped_string dir...
というオプション指定。Web ページとしてのページングなどは、自動リンクによる串刺し表示機能のものを流用。
で試したところ www.naney.org サーバでは、load averages が 1 以下の時でだいたい50秒前後。対象ファイル数は 2800弱。予想より時間がかかる。
ただし1回実行した後、ファイルがファイルシステム/OSのメモリ上にのっている状態では 0.1秒程度で完了する。
検索結果ページの permalink が検索エンジンにそれなりに捕捉されて、定期的にアクセスがあるようになれば、ファイルがメモリにのっている割合が増えるであろうから平均して実用に耐えられる速度が出るかもしれない。
今後は様子をみながら検索結果のキャッシュ等を処理を整備していく予定。
- WiKicker 0.420 リリース - 変更いろいろ (2007-05-30)
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
- 自動リンク機能改善による悪影響 (2007-03-07)
- [ WiKicker ] 古くても検索キャッシュを返す (2004-01-20)
- [ WiKicker ] キャッシュまわりにバグ (2004-06-05)
2007年5月30日 (水)
■ WiKicker 0.420 リリース - 変更いろいろ

去年の12月3日以来、約半年ぶりのリリース。 リリースしそびれて、随分変更を累積してしまった。 以下主な変更点。
@ バージョン番号形式を変更
前回の 0.41 に対して、今回は 0.420 とした。 浮動小数点数的には、増分 0.01 で今まで通り。
今後 version.pm が普及した時のことと、developer release を出す時のことを考えて小数点以下3桁ずつのスタイルに移行することにした (関連記事)。
@ <meta name="robots" content="noindex,nofollow">
2007年1月に実装。 編集ページや履歴ページが検索エンジンに登録されないようにするための機能。
@ <a rel="nofollow">
2007年1月に実装。 リンク spam 対応。
@ AutomaticLink 長を可変にした
2007年3月に実装。 特に DiKicker で1文字キーワードによる自動リンクを有効にするために追加した。
@ '/' の前を省略した自動リンクを有効にするか無効にするかを設定できるように
前述の機能で1文字での自動リンクを有効にしたら、不便な面が出た。
WiKicker / DiKicker では '/' を階層の区切り文字としても扱うことができるようになっていて、サフィックス部分だけでも自動リンクするようになっている。 自動リンクを1文字にしたら「OS/2」というキーワードに対して '2' でも自動リンクが働き、望まないリンクが張られるようになってしまった。 DiKicker では階層的キーワードは無くてもあまり困らないので、'/' の前を省略した自動リンクを無効にできるようにした。
@ JSON 形式データ出力
@ (DiKicker) はてなブックマーク数表示機能を追加
@ (DiKicker) はてなブックマークエントリーページへのボタン表示機能を追加
@ (DiKicker) grep 検索機能を追加
2007年2月に実装。自分としては重宝している。
@ (DiKicker) キーワード記事の下部への文字列挿入機能
Google AdSense 挿入用。
@ (DiKicker) サーバの負荷が高くなったら 503 を返して沈静化を待つようにした
2007年4月に実装 load average をチェックして負荷が高い時は、503 を返すようにした。
@ 内部コードの結構な書き換え
ソースコードを結構いじった。 deprecated なメソッドの削除も実施したので、0.41 以前から派生しているソフトウェアは多くの場合修正が必要。
- DiKicker に grep 検索機能を追加 (2007-02-02)
- 社内 Blog 開設 (2006-05-16)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- WiKicker 0.29 リリース - ビルドまわりの改良など (2006-02-13)
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
2007年12月18日 (火)
■ Google Analytics のデータからよく検索されるキーワードを表示するようにした

Google Analytics から1日1回キーワードのレポートを TSV 形式でメールで配信するように設定している。 このデータをもとに「よく検索されるキーワード」を抽出して、nDiki の下の方に表示するようにした。
@ 処理の流れ
- メールで配信された TSV 形式データをファイルに保存する。
- 検索質問とセッション数の組のデータを抽出する。
- 1ワード単位でセッション数を集計する。
- 上位のワードについて、nDiki のキーワードリストにあるか照合する。
- 各ワードについて、対応するリンクを設定してフッタ埋め込み用の HTML フラグメントを生成しファイルを生成する。
- ファイルをサーバにアップロードし、サーバ側でフッタにインクルードする。
1日1回の作業なので、メールからスクリプトにかける部分とアップロードする部分は手動で。
そこそこの処理なので、そこそこの精度なのだけれど傾向は何となくわかる感じだ。
実際にはアクセスログの対象となっているのは nDiki 以外の www.naney.org 内のアクセスも含まれているけれどもまあいいであろう。
@ キーワードの処理
キーワードの処理は細かいことをいうと結構面倒だったりする。
- 複合語の処理: 検索ワード側も、nDiki キーワード側も複合語を含むので空白で区切られた語の扱いが大変。特に検索ワード側は語順が正しいとは限らないし、各語が個別の語を表しているのか否かの判断が難しい。
- 曖昧一致処理: 検索ワード(や nDiki キーワード)が正確な語とは限らないので、曖昧一致させる必要がある。検索エンジン側で曖昧一致させて検索結果に上がっている可能性があるのでその辺りも考慮する必要がある。
などなど。
この辺りは精度を上げようとするといろいろ工夫の余地がって楽しそうではあるな。
- Linux で使えるデスクトップ検索ツール Beagle でローカルファイ... (2006-08-08)
- Wiki ではロボット除けをしてはいけない (2007-01-21)
- Google Analytics から TSV エクスポートしてキーワード... (2007-11-18)
- はてなブックマーク上の最新ブックマークを nDiki に (2005-05-16)
- 「ほぼ日手帳 2006」でトラックワードα版プチコンテスト1位 (2005-12-14)
Related web page
IRCでおもしろい話があったので試してみました。タイトルの通り、LC_CTYPE=*.UTF-8の場合に<strong>grep</strong>を動作させると遅いというのです。 というわけで、IRCのログから"それPla"という文字列の検索を、LC_CTYPE=en_US.UTF-8の場合とLC_CTYPE=Cの場合の2通りでやってみました。 結果 % export LC_CTYPE=en_US.UTF-8 % <strong>grep</strong> それPla *.txt > /dev/null real 0m53.583s user 0m22.545s sys 0m0.416s % export LC_CTYPE=C % <strong>grep</strong> それPla *.txt > /dhttp://blog.33rpm.jp/speed-up-grep.html
2.6.17 と ATIhttp://bugs.debian.org/cgi-bin/bugreport.cgi?bug=375001
■よく検索されるキーワード
perl(52) 使い方(36) 提案書(35) windows(35) ドラマ(33) 書き方(30) cvs(28) サンプル(22) linux(21) torrent(20) debian(19) x31(19) 壁紙(19) 作り方(19) アジェンダ(18) 画像(17) 手帳(17) thinkpad(17) tc-1(17) 動画(15) rcs(15) アジェンダとは(15) ナースのお仕事(15) java(15) 桑田佳祐(14) ganttproject(14) 修理(14) gtd(13) 冷蔵庫(13) ほぼ日手帳(13) 桜井華子(12) wiki(12) google(12) 設定(12) tortoisesvn(12) ダイソー(11) ssh(11) apache(11) usb(11) 影舞(11) ウォーターボーイズ2(11) ノート(10) インストール(10) svn(10) ボールペン(9) so905ics(9) cgi(9) 無印(9) 方眼(9) xp(9) バッグインバッグ(9) subversion(9) 市原隼人(9) ヨドバシ(9) centos(9) djunit(8) c#(8) activeperl(8) ミムラ(8) 東京総合車両センター(8) 無印良品(8) make(8) ubuntu(8) 深浦加奈子(8) 写真(8) junit(7) 本名(7) 姉(7) thinkingrock(7) ケース(7) 生年月日(7) 口コミ(7) 山川レイカ(7) チェックリスト(7) 例文(7) つけ麺(6) eclipse(6) web(6) 秋葉原(6) httpd.conf(6)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 方法 設定 サンプル ダウンロード セール 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 最新 MP3 動画 Torrent 解説 意味 用語集 参考文献 お薦め お勧め おすすめ 便利 Blog ブログ mixi 待受画面 相場Process Time: 0.11484s / load averages: 0.26, 0.33, 0.24
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク