2008/2/28 木曜日

Centos4.6でapache1.3がコンパイルエラー

このエントリをはてなブックマークに追加Centos4.6apache1.3潟潟ゃ爾里呂討淵屮奪マーク被リンク数
Filed under: linux — akky @ 23:01:35

コンパイルしようとすると、

 ndbm.h No suche file or directory

とおっしゃられる。ぐぐってみるとgdbmのヘッダらしいけど、それ自体も見つからず。そもそも、gdbm-develのパッケージから入れないといけないらしい。というわけで、さくっとyumでインストール。

最近はgccすら明示的に入れないといけないんだよな・・・

ヘッダファイルは/usr/include/gdbmにあるので、

 CLFAG=/usr/include/gdbm ./configure 〜

とやって解決。シンボリックリンクを張っている記事もあるけど、コンパイルの王道はこうだよな。

2008/2/17 日曜日

Hyper Estraierでノードを使ったWebサイトとファイルを検索対象にする

このエントリをはてなブックマークに追加Hyper Estraierс若篏帥cWeb泣ゃ<ゃ罎膣√乗院のはてなブックマーク被リンク数
Filed under: linux — akky @ 14:26:03

estseek.cgiでは一つのインデックスだけしか扱えないので、大量の文書やWebサイトとファイルサーバにある文章を同時に扱うことができない。そこで、P2Pを使って問題を解決したい。

ノードの構成は下の状態

+- ノードマスタ ---------------------+
|  mainノード -+- project_a ノード   |
|              +- project_b ノード   |
|              +- イントラ ノード    |
+------------------------------------+

ノードマスタは一つだけ用意。mainノードにはインデックスは持たずに、project_aノード、project_bノード、イントラノードへのリンクを張るだけ。project_aノードとproject_bノードはそれぞれのプロジェクトで作成した文章へのインデックスを持ち、イントラノードはイントラをクロールしたインデックスを持つ。project_cや新たなイントラを検索の対象に含めたい場合には、個別にノードを用意(インデックスを作成)して、mainノードからのリンクを追加する。
クライアントはmainノードだけを検索の対象にして、mainノードがそれぞれのノードに対してリクエストを投げて、帰ってきた応答をマージしてクライアントへ返す方法をとる。
これが適切な設計なのかはわからないが、試験的なものとして試してみる。

操作で使うディレクトリの状態は下の通り。

 + master マスタノードのサーバルートディレクトリ
 |  +- _node ノードディレクトリ
 |       +- main      mainノード
 |       +- project_a project_aノードのインデックス
 |       +- project_b  project_bノードのインデックス
 |       +- intra      イントラノードのインデックス
 |
 +- crawl クローラーのディレクトリ

ノードマスタとノードを作成

[参考]P2Pガイドのチュートリアル 「起動と終了」及び「管理用インターフェイス」

 $ estmaster init master
 $ estmaster start -bg master
 webブラウザで http://localhost:1978/master_ui へアクセス。認証はadmin/admin。
 Manage Nodesからmain、project_a、project_b、intraのそれぞれのノードを追加

mainノードからのリンクを設定

[参考]P2Pガイドのチュートリアル 「文書の検索」

メインノードからそれぞれのノードへのリンクを設定する。信頼度は全て1000。

 $ estcall setlink -auth admin admin http://localhost:1978/node/main \
  http://localhost:1978/node/project_a プロジェクトA 1000
 $ estcall setlink -auth admin admin http://localhost:1978/node/main \
  http://localhost:1978/node/project_b プロジェクトB 1000
 $ estcall setlink -auth admin admin http://localhost:1978/node/main \
  http://localhost:1978/node/intra 社内イントラ 1000

estcmdでproject_aとproject_bのインデックスを作成

[参考]P2Pガイドのチュートリアル 「初期導入の効率化」
ノードマスタを起動している最中はインデックスがロックされているため、estcmd gatherがロック待ちで止まりますので、ノードマスタを停止してから行います。

 $ estmaster stop master
 $ estcmd gather -cl -fx ".doc,.xls,.ppt" "H@estfxmsotohtml"  -ic UTF-8 \
     -sd -cm -pc UTF-8 master/_node/project_a /home/Projects/project_a
 $ estcmd gather -cl -fx ".doc,.xls,.ppt" "H@estfxmsotohtml" -ic UTF-8  \
     -sd -cm -pc UTF-8 master/_node/project_b /home/Projects/project_b
 $ estmaster start -bg master

クロールしてイントラノードのインデックスを作成

 $ estwaver init -xs crawl
 $ im crawl/_conf

seed: 1.0|http://intra.example.co.jp/
として他のseedを削除。seedは種文書(ここからクロールを開始する)

allowrx: ^http://http://intra.example.co.jp/
クロールをイントラサーバだけに限定します。

language: 1
日本語の文書なら1にします。

nodeserv: 1|http://admin:admin@localhost:1978/node/intra
事前に作成したノードへインデックスを保存します。

 $estwaver crawl -revcont crawl

検索をしてみる

http://localhost:1978/node/main/search_ui へアクセスすると、検索フォームが表示されます。右側にはmainノードがリンクしているノードが表示されているはずです。depthが「0」のまま検索すると、リンク先を検索しないので、ヒットしないはずです。「1」以上にすると、リンクしているノードも含めて検索結果が表示されます。右側にあるノードのチェックを外すと検索の対象から除かれます。

2008/2/12 火曜日

sambaのPDCにログインしたらプロファイルが無いって言われる。

このエントリをはてなブックマークに追加sambaPDC違ゃ潟<ゃ<c荐のはてなブックマーク被リンク数
Filed under: windows, linux — akky @ 20:09:28

この手順で作成したドメインへログインすると

移動プロファイルのサーバー用コピーが見つからないため、ローカルプロファイルを使ってログオンしようとしています。プロファイルへの変更は、ログオフ時にサーバーにはコピーされません。ネットワークの問題が発生しているか、セキュリティの権限が不足していることが原因と考えられます。問題が解決しない場合は、管理者に問い合わせてください。

とか

ローカルのプロファイルが見つかりません。一時的なプロファイルでログインしています。ログオフ時にこのプロファイルへの変更は失われます。

って言われる。samba userのサイトを見ながらわかったことは、ldapのsambaProfilePathのディレクトリが無いのが原因。/etc/samba/smb.conflogon pathをどれだけ編集していても解決できないわけだった。smbldap-usershowlogon pathが指すディレクトリを作成することでエラーの原因は解決。

smbldap-usermod -Fでldapのlogon path/etc/samba/smb.conflogon pathが同じディレクトリを指すように変更しておく。あと、ldapのlogon path/etc/smbldap-tools/smbldap.confuserProfileをテンプレートとしているので、これも修正しておく。

2008/2/7 木曜日

hyperestraier を使って、ファイルサーバを全文検索

このエントリをはてなブックマークに追加hyperestraier 篏帥c<ゃ泣若罎膣△里呂討淵屮奪マーク被リンク数
Filed under: linux — akky @ 17:11:19

hyerestraier を使って、ファイルサーバのみんなで共有しているファイル群を全文検索します。インデックスを作成するときにはジャンルを使って、案件を指定できるようにします。

イントロダクションに書いてあることは省略してあります。

Excel,MS-Word,PowerPoint,PDFを検索できるようにテキストを抽出するプログラムをインストール

■MS-Wordからテキストを抽出するvwWare

  # yum install glib2-devel
  # yum install libgsf-devel
	  依存パッケージいっぱい
  $wget http://downloads.sourceforge.net/wvware/wv-1.2.4.tar.gz?modtime=1161798556&big_mirror=0
  $ tar xvfz wv-1.2.4.tar.gz
  $ ./configure
  $ make
  $ make install

■ExcelとWordからテキストを抽出するxlhtml

  $ wget http://nchc.dl.sourceforge.net/sourceforge/chicago/xlhtml-0.5.tgz
  $ tar xvfz xlhtml-0.5.tgz
  $ cd xlhtml-0.5
  $ ./configure
  $ make
  $ make install

インデックスを初期化

 $ estcmd create -attr _lpath str -attr @mdate seq -attr @size seq -attr @genre str job

インデックス化

インデックス化する際には -aa @genreを使ってフォルダ単位にジャンルを指定します。

 $ export PATH=$PATH:/usr/local/share/hyperestraier/filter/
 $ estcmd gather -cl -fx ".doc,.xls,.ppt" "H@estfxmsotohtml" -ic UTF-8 -sd -cm -pc UTF-8 -aa  @genre project_a job /home/Projects/project_a
 $ estcmd gather -cl -fx ".doc,.xls,.ppt" "H@estfxmsotohtml" -ic UTF-8 -sd -cm -pc UTF-8 -aa @genre project_b job /home/Projects/project_b

estseek.confにジャンルを指定

genrecheck: project_a{{!}}プロジェクトA
genrecheck: project_b{{!}}プロジェクトB

2008/2/5 火曜日

PostgreSQLのバッファへのヒット率を求める

このエントリをはてなブックマークに追加PostgreSQL<吾羆のはてなブックマーク被リンク数
Filed under: linux, PostgreSQL — akky @ 12:47:03


最近は、記事のネタに一貫性が無いな〜。

えっと、バッチの性能改善するための方法その1です。データファイルから読み込んだ内容を、PostgreSQL自身でキャッシュして再利用することでクエリーの性能を向上させます。バッファの大きさはshared_buffersっていうパラメータにブロック(1ブロック8KB)単位で大きさを指定します。その妥当性を判断する方法として、統計情報を使います。

PostgeSQLのバージョン

8.1.4です。

統計情報を取得するための設定

 vi $PGDATA/postgresql.conf
 stats_start_collector = true
 stats_command_string = true
 stats_block_level = true
 stats_row_level = true
 stats_reset_on_server_start = true

変更後はPostgreSQLを再起動

実行後に統計情報からヒット率を得る

SELECT relname,
        heap_blks_read  as "ディスクから読み込んだブロック数",
        heap_blks_hit as "キャッシュにヒットしたブロック数",
        case when heap_blks_hit = 0 then 0 else
          heap_blks_hit::real / (heap_blks_read::real + heap_blks_hit::real) end as "ヒット率",
        idx_blks_read as "ディスクから読み込んだブロック数(インデックス)",
        idx_blks_hit as "キャッシュにヒットしたブロック数(インデックス)",
        case when idx_blks_read = 0 then 0 else
          idx_blks_hit::real / (idx_blks_read::real + idx_blks_hit::real) end::real as "インデックスヒット率",
        toast_blks_read as "ディスクから読み込んだブロック数(TOAST)",
        toast_blks_hit as "キャッシュにヒットしたブロック数(TOAST)",
        case when toast_blks_read = 0 then 0 else
          toast_blks_hit::real / ( toast_blks_read::real + toast_blks_hit::real) end::real as "TOASTのヒット率",
        tidx_blks_read as "ディスクから読み込んだブロック数(TOASTのインデックス)",
        tidx_blks_hit as "キャッシュにヒットしたブロック数(TOASTのインデックス)",
        case when tidx_blks_read = 0 then 0 else
          tidx_blks_hit::real / (tidx_blks_read::real + tidx_blks_hit::real) end::real as "TOASTのインデックスヒット率"
   FROM pg_statio_user_tables
   where  heap_blks_read != 0

ヒット率は0.97以上を目指したい。TOASTってのは、1行が1ブロックに収まっていない部分のこと(略し過ぎ)。あと、統計情報はPostgreSQLを停止するリセットされる。適宜、PostgreSQLを再起動。

次のページ »